From e9eb805edb9f3006d57dc780c065bb66d2c45cab Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Mon, 28 Jul 2025 13:56:49 +0530 Subject: [PATCH] first commit --- META-INF/MANIFEST.MF | 3 + META-INF/application.xml | 14 + META-INF/ejb-jar.xml | 1797 ++++ META-INF/weblogic-ejb-jar.xml | 181 + hrmsEjb/META-INF/MANIFEST.MF | 3 + hrmsEjb/META-INF/ejb-jar.xml | 1797 ++++ hrmsEjb/META-INF/weblogic-ejb-jar.xml | 181 + .../tcs/wenrgise/util/common/FWSAXParser.java | 185 + .../wenrgise/util/common/FWXMLUtility.java | 472 + .../util/common/XMLValidationHandler.java | 26 + hrmsEjb/common/Assert.java | 13 + hrmsEjb/common/AssertionFailed.java | 11 + hrmsEjb/common/Logger.java | 63 + hrmsEjb/common/log/LoggerName.java | 5 + hrmsEjb/common/log/SimpleLogger.java | 79 + hrmsEjb/jxl/BooleanCell.java | 5 + hrmsEjb/jxl/BooleanFormulaCell.java | 3 + hrmsEjb/jxl/Cell.java | 19 + hrmsEjb/jxl/CellFeatures.java | 15 + hrmsEjb/jxl/CellFormat.java | 5 + hrmsEjb/jxl/CellReferenceHelper.java | 63 + hrmsEjb/jxl/CellType.java | 35 + hrmsEjb/jxl/CellView.java | 53 + hrmsEjb/jxl/DateCell.java | 12 + hrmsEjb/jxl/DateFormulaCell.java | 3 + hrmsEjb/jxl/ErrorCell.java | 5 + hrmsEjb/jxl/ErrorFormulaCell.java | 3 + hrmsEjb/jxl/FormulaCell.java | 7 + hrmsEjb/jxl/HeaderFooter.java | 139 + hrmsEjb/jxl/Hyperlink.java | 26 + hrmsEjb/jxl/Image.java | 17 + hrmsEjb/jxl/JXLException.java | 7 + hrmsEjb/jxl/LabelCell.java | 5 + hrmsEjb/jxl/NumberCell.java | 9 + hrmsEjb/jxl/NumberFormulaCell.java | 3 + hrmsEjb/jxl/Range.java | 11 + hrmsEjb/jxl/Sheet.java | 49 + hrmsEjb/jxl/SheetSettings.java | 471 + hrmsEjb/jxl/StringFormulaCell.java | 3 + hrmsEjb/jxl/Workbook.java | 113 + hrmsEjb/jxl/WorkbookSettings.java | 214 + hrmsEjb/jxl/biff/BaseCellFeatures.java | 84 + hrmsEjb/jxl/biff/BaseCompoundFile.java | 158 + hrmsEjb/jxl/biff/BuiltInFormat.java | 82 + hrmsEjb/jxl/biff/BuiltInStyle.java | 22 + hrmsEjb/jxl/biff/ByteArray.java | 47 + hrmsEjb/jxl/biff/ByteData.java | 5 + hrmsEjb/jxl/biff/CellReferenceHelper.java | 137 + hrmsEjb/jxl/biff/ContinueRecord.java | 21 + hrmsEjb/jxl/biff/CountryCode.java | 92 + hrmsEjb/jxl/biff/DVParser.java | 351 + hrmsEjb/jxl/biff/DValParser.java | 51 + hrmsEjb/jxl/biff/DisplayFormat.java | 11 + hrmsEjb/jxl/biff/DoubleHelper.java | 26 + hrmsEjb/jxl/biff/EmptyCell.java | 75 + hrmsEjb/jxl/biff/EncodedURLHelper.java | 73 + hrmsEjb/jxl/biff/FontRecord.java | 234 + hrmsEjb/jxl/biff/Fonts.java | 79 + hrmsEjb/jxl/biff/FormatRecord.java | 309 + hrmsEjb/jxl/biff/FormattingRecords.java | 256 + hrmsEjb/jxl/biff/FormulaData.java | 8 + hrmsEjb/jxl/biff/HeaderFooter.java | 270 + hrmsEjb/jxl/biff/IndexMapping.java | 21 + hrmsEjb/jxl/biff/IntegerHelper.java | 53 + .../jxl/biff/NumFormatRecordsException.java | 7 + hrmsEjb/jxl/biff/PaletteRecord.java | 96 + hrmsEjb/jxl/biff/RangeImpl.java | 56 + hrmsEjb/jxl/biff/RecordData.java | 26 + hrmsEjb/jxl/biff/SheetRangeImpl.java | 114 + hrmsEjb/jxl/biff/StringHelper.java | 79 + hrmsEjb/jxl/biff/Type.java | 272 + hrmsEjb/jxl/biff/WorkbookMethods.java | 11 + .../jxl/biff/WorkspaceInformationRecord.java | 36 + hrmsEjb/jxl/biff/WritableRecordData.java | 52 + hrmsEjb/jxl/biff/XFRecord.java | 732 ++ hrmsEjb/jxl/biff/drawing/BStoreContainer.java | 33 + hrmsEjb/jxl/biff/drawing/BlipStoreEntry.java | 84 + hrmsEjb/jxl/biff/drawing/BlipType.java | 57 + hrmsEjb/jxl/biff/drawing/Button.java | 359 + hrmsEjb/jxl/biff/drawing/Chart.java | 111 + hrmsEjb/jxl/biff/drawing/ClientAnchor.java | 77 + hrmsEjb/jxl/biff/drawing/ClientData.java | 22 + hrmsEjb/jxl/biff/drawing/ClientTextBox.java | 22 + hrmsEjb/jxl/biff/drawing/Comment.java | 405 + hrmsEjb/jxl/biff/drawing/Dg.java | 40 + hrmsEjb/jxl/biff/drawing/DgContainer.java | 7 + hrmsEjb/jxl/biff/drawing/Dgg.java | 91 + hrmsEjb/jxl/biff/drawing/DggContainer.java | 7 + hrmsEjb/jxl/biff/drawing/Drawing.java | 345 + hrmsEjb/jxl/biff/drawing/DrawingData.java | 93 + hrmsEjb/jxl/biff/drawing/DrawingGroup.java | 279 + .../jxl/biff/drawing/DrawingGroupObject.java | 60 + hrmsEjb/jxl/biff/drawing/EscherAtom.java | 20 + hrmsEjb/jxl/biff/drawing/EscherContainer.java | 99 + hrmsEjb/jxl/biff/drawing/EscherRecord.java | 65 + .../jxl/biff/drawing/EscherRecordData.java | 121 + .../jxl/biff/drawing/EscherRecordType.java | 62 + hrmsEjb/jxl/biff/drawing/EscherStream.java | 5 + .../biff/drawing/MsoDrawingGroupRecord.java | 23 + .../jxl/biff/drawing/MsoDrawingRecord.java | 42 + hrmsEjb/jxl/biff/drawing/NoteRecord.java | 63 + hrmsEjb/jxl/biff/drawing/ObjRecord.java | 177 + hrmsEjb/jxl/biff/drawing/Opt.java | 126 + hrmsEjb/jxl/biff/drawing/Origin.java | 9 + hrmsEjb/jxl/biff/drawing/ShapeType.java | 37 + .../jxl/biff/drawing/SheetDrawingWriter.java | 238 + hrmsEjb/jxl/biff/drawing/Sp.java | 48 + hrmsEjb/jxl/biff/drawing/SpContainer.java | 11 + hrmsEjb/jxl/biff/drawing/Spgr.java | 19 + hrmsEjb/jxl/biff/drawing/SpgrContainer.java | 15 + hrmsEjb/jxl/biff/drawing/SplitMenuColors.java | 22 + .../jxl/biff/drawing/TextObjectRecord.java | 45 + hrmsEjb/jxl/biff/formula/Add.java | 15 + hrmsEjb/jxl/biff/formula/Area.java | 161 + hrmsEjb/jxl/biff/formula/Area3d.java | 178 + .../jxl/biff/formula/ArgumentSeparator.java | 3 + hrmsEjb/jxl/biff/formula/Attribute.java | 230 + hrmsEjb/jxl/biff/formula/BinaryOperator.java | 73 + hrmsEjb/jxl/biff/formula/BooleanValue.java | 27 + hrmsEjb/jxl/biff/formula/BuiltInFunction.java | 108 + hrmsEjb/jxl/biff/formula/CellReference.java | 102 + hrmsEjb/jxl/biff/formula/CellReference3d.java | 116 + .../jxl/biff/formula/CellReferenceError.java | 21 + .../jxl/biff/formula/CloseParentheses.java | 3 + hrmsEjb/jxl/biff/formula/ColumnRange.java | 33 + hrmsEjb/jxl/biff/formula/ColumnRange3d.java | 55 + hrmsEjb/jxl/biff/formula/Concatenate.java | 15 + hrmsEjb/jxl/biff/formula/Divide.java | 15 + hrmsEjb/jxl/biff/formula/DoubleValue.java | 41 + hrmsEjb/jxl/biff/formula/Equal.java | 15 + hrmsEjb/jxl/biff/formula/ExternalSheet.java | 17 + .../jxl/biff/formula/FormulaErrorCode.java | 54 + .../jxl/biff/formula/FormulaException.java | 39 + hrmsEjb/jxl/biff/formula/FormulaParser.java | 51 + hrmsEjb/jxl/biff/formula/Function.java | 530 + hrmsEjb/jxl/biff/formula/FunctionNames.java | 40 + hrmsEjb/jxl/biff/formula/GreaterEqual.java | 15 + hrmsEjb/jxl/biff/formula/GreaterThan.java | 15 + hrmsEjb/jxl/biff/formula/IntegerValue.java | 47 + hrmsEjb/jxl/biff/formula/LessEqual.java | 15 + hrmsEjb/jxl/biff/formula/LessThan.java | 15 + hrmsEjb/jxl/biff/formula/MemFunc.java | 43 + hrmsEjb/jxl/biff/formula/Minus.java | 11 + hrmsEjb/jxl/biff/formula/MissingArg.java | 15 + hrmsEjb/jxl/biff/formula/Multiply.java | 15 + hrmsEjb/jxl/biff/formula/Name.java | 16 + hrmsEjb/jxl/biff/formula/NameRange.java | 42 + hrmsEjb/jxl/biff/formula/NotEqual.java | 15 + hrmsEjb/jxl/biff/formula/NumberValue.java | 9 + hrmsEjb/jxl/biff/formula/OpenParentheses.java | 3 + hrmsEjb/jxl/biff/formula/Operand.java | 13 + hrmsEjb/jxl/biff/formula/Operator.java | 28 + hrmsEjb/jxl/biff/formula/Parenthesis.java | 63 + hrmsEjb/jxl/biff/formula/ParseItem.java | 45 + hrmsEjb/jxl/biff/formula/ParsedThing.java | 5 + hrmsEjb/jxl/biff/formula/Parser.java | 19 + hrmsEjb/jxl/biff/formula/Percent.java | 21 + hrmsEjb/jxl/biff/formula/Plus.java | 11 + hrmsEjb/jxl/biff/formula/Power.java | 15 + hrmsEjb/jxl/biff/formula/RangeSeparator.java | 28 + .../jxl/biff/formula/SharedFormulaArea.java | 83 + .../formula/SharedFormulaCellReference.java | 59 + .../jxl/biff/formula/StringFormulaParser.java | 249 + hrmsEjb/jxl/biff/formula/StringFunction.java | 22 + hrmsEjb/jxl/biff/formula/StringOperator.java | 48 + hrmsEjb/jxl/biff/formula/StringParseItem.java | 19 + hrmsEjb/jxl/biff/formula/StringValue.java | 50 + hrmsEjb/jxl/biff/formula/Subtract.java | 15 + hrmsEjb/jxl/biff/formula/Token.java | 131 + .../jxl/biff/formula/TokenFormulaParser.java | 325 + hrmsEjb/jxl/biff/formula/UnaryMinus.java | 15 + hrmsEjb/jxl/biff/formula/UnaryOperator.java | 58 + hrmsEjb/jxl/biff/formula/UnaryPlus.java | 15 + .../jxl/biff/formula/VariableArgFunction.java | 139 + hrmsEjb/jxl/biff/formula/Yylex.java | 503 + hrmsEjb/jxl/format/Alignment.java | 46 + hrmsEjb/jxl/format/Border.java | 25 + hrmsEjb/jxl/format/BorderLineStyle.java | 62 + hrmsEjb/jxl/format/CellFormat.java | 33 + hrmsEjb/jxl/format/Colour.java | 183 + hrmsEjb/jxl/format/Font.java | 19 + hrmsEjb/jxl/format/Format.java | 5 + hrmsEjb/jxl/format/Orientation.java | 48 + hrmsEjb/jxl/format/PageOrientation.java | 7 + hrmsEjb/jxl/format/PaperSize.java | 193 + hrmsEjb/jxl/format/Pattern.java | 72 + hrmsEjb/jxl/format/RGB.java | 27 + hrmsEjb/jxl/format/ScriptStyle.java | 40 + hrmsEjb/jxl/format/UnderlineStyle.java | 44 + hrmsEjb/jxl/format/VerticalAlignment.java | 42 + hrmsEjb/jxl/read/biff/BOFRecord.java | 60 + .../read/biff/BaseSharedFormulaRecord.java | 60 + hrmsEjb/jxl/read/biff/BiffException.java | 33 + hrmsEjb/jxl/read/biff/BlankCell.java | 18 + .../jxl/read/biff/BooleanFormulaRecord.java | 65 + hrmsEjb/jxl/read/biff/BooleanRecord.java | 43 + hrmsEjb/jxl/read/biff/BottomMarginRecord.java | 9 + hrmsEjb/jxl/read/biff/BoundsheetRecord.java | 73 + .../read/biff/ButtonPropertySetRecord.java | 16 + hrmsEjb/jxl/read/biff/CalcModeRecord.java | 22 + .../jxl/read/biff/CellFeaturesAccessor.java | 9 + hrmsEjb/jxl/read/biff/CellValue.java | 85 + hrmsEjb/jxl/read/biff/CentreRecord.java | 18 + hrmsEjb/jxl/read/biff/CodepageRecord.java | 21 + hrmsEjb/jxl/read/biff/ColumnInfoRecord.java | 50 + hrmsEjb/jxl/read/biff/CompoundFile.java | 266 + hrmsEjb/jxl/read/biff/CountryRecord.java | 28 + hrmsEjb/jxl/read/biff/DataValidation.java | 31 + .../jxl/read/biff/DataValidityListRecord.java | 22 + .../read/biff/DataValiditySettingsRecord.java | 13 + hrmsEjb/jxl/read/biff/DateFormulaRecord.java | 59 + hrmsEjb/jxl/read/biff/DateRecord.java | 144 + .../read/biff/DefaultColumnWidthRecord.java | 18 + .../jxl/read/biff/DefaultRowHeightRecord.java | 19 + hrmsEjb/jxl/read/biff/DimensionRecord.java | 53 + hrmsEjb/jxl/read/biff/ErrorFormulaRecord.java | 69 + hrmsEjb/jxl/read/biff/ErrorRecord.java | 27 + .../jxl/read/biff/ExternalSheetRecord.java | 77 + hrmsEjb/jxl/read/biff/File.java | 134 + hrmsEjb/jxl/read/biff/FooterRecord.java | 43 + hrmsEjb/jxl/read/biff/FormulaRecord.java | 91 + hrmsEjb/jxl/read/biff/HeaderRecord.java | 46 + .../read/biff/HorizontalPageBreaksRecord.java | 45 + hrmsEjb/jxl/read/biff/HyperlinkRecord.java | 189 + hrmsEjb/jxl/read/biff/LabelRecord.java | 50 + hrmsEjb/jxl/read/biff/LabelSSTRecord.java | 31 + hrmsEjb/jxl/read/biff/LeftMarginRecord.java | 9 + hrmsEjb/jxl/read/biff/MarginRecord.java | 19 + hrmsEjb/jxl/read/biff/MergedCellsRecord.java | 35 + hrmsEjb/jxl/read/biff/MulBlankCell.java | 81 + hrmsEjb/jxl/read/biff/MulBlankRecord.java | 55 + hrmsEjb/jxl/read/biff/MulRKRecord.java | 64 + hrmsEjb/jxl/read/biff/NameRecord.java | 283 + hrmsEjb/jxl/read/biff/NineteenFourRecord.java | 17 + .../jxl/read/biff/NumberFormulaRecord.java | 79 + hrmsEjb/jxl/read/biff/NumberRecord.java | 44 + hrmsEjb/jxl/read/biff/NumberValue.java | 99 + hrmsEjb/jxl/read/biff/PLSRecord.java | 13 + hrmsEjb/jxl/read/biff/PaneRecord.java | 28 + hrmsEjb/jxl/read/biff/PasswordException.java | 7 + hrmsEjb/jxl/read/biff/PasswordRecord.java | 21 + .../jxl/read/biff/PrintGridLinesRecord.java | 17 + hrmsEjb/jxl/read/biff/PrintHeadersRecord.java | 17 + hrmsEjb/jxl/read/biff/ProtectRecord.java | 19 + hrmsEjb/jxl/read/biff/RKHelper.java | 19 + hrmsEjb/jxl/read/biff/RKRecord.java | 45 + hrmsEjb/jxl/read/biff/RStringRecord.java | 39 + hrmsEjb/jxl/read/biff/Record.java | 81 + hrmsEjb/jxl/read/biff/RightMarginRecord.java | 9 + hrmsEjb/jxl/read/biff/RowRecord.java | 63 + hrmsEjb/jxl/read/biff/SCLRecord.java | 22 + hrmsEjb/jxl/read/biff/SSTRecord.java | 179 + hrmsEjb/jxl/read/biff/SaveRecalcRecord.java | 22 + hrmsEjb/jxl/read/biff/SetupRecord.java | 93 + .../read/biff/SharedDateFormulaRecord.java | 67 + .../read/biff/SharedErrorFormulaRecord.java | 64 + .../jxl/read/biff/SharedFormulaRecord.java | 94 + .../read/biff/SharedNumberFormulaRecord.java | 73 + .../read/biff/SharedStringFormulaRecord.java | 88 + hrmsEjb/jxl/read/biff/SheetImpl.java | 460 + hrmsEjb/jxl/read/biff/SheetReader.java | 753 ++ .../jxl/read/biff/StringFormulaRecord.java | 116 + hrmsEjb/jxl/read/biff/SupbookRecord.java | 161 + hrmsEjb/jxl/read/biff/TopMarginRecord.java | 9 + hrmsEjb/jxl/read/biff/Window2Record.java | 50 + hrmsEjb/jxl/read/biff/WorkbookParser.java | 520 + hrmsEjb/jxl/write/Blank.java | 27 + hrmsEjb/jxl/write/Boolean.java | 31 + hrmsEjb/jxl/write/Border.java | 9 + hrmsEjb/jxl/write/BorderLineStyle.java | 9 + hrmsEjb/jxl/write/DateFormat.java | 12 + hrmsEjb/jxl/write/DateFormats.java | 73 + hrmsEjb/jxl/write/DateTime.java | 50 + hrmsEjb/jxl/write/Label.java | 31 + hrmsEjb/jxl/write/Number.java | 31 + hrmsEjb/jxl/write/NumberFormats.java | 98 + hrmsEjb/jxl/write/VerticalAlignment.java | 9 + hrmsEjb/jxl/write/WritableCell.java | 14 + hrmsEjb/jxl/write/WritableCellFeatures.java | 23 + hrmsEjb/jxl/write/WritableCellFormat.java | 79 + hrmsEjb/jxl/write/WritableFont.java | 107 + hrmsEjb/jxl/write/WritableHyperlink.java | 64 + hrmsEjb/jxl/write/WritableImage.java | 60 + hrmsEjb/jxl/write/WritableSheet.java | 75 + hrmsEjb/jxl/write/WritableWorkbook.java | 62 + hrmsEjb/jxl/write/WriteException.java | 9 + hrmsEjb/jxl/write/biff/BOFRecord.java | 38 + hrmsEjb/jxl/write/biff/BackupRecord.java | 23 + hrmsEjb/jxl/write/biff/BlankRecord.java | 35 + hrmsEjb/jxl/write/biff/BookboolRecord.java | 23 + hrmsEjb/jxl/write/biff/BooleanRecord.java | 56 + .../jxl/write/biff/BottomMarginRecord.java | 9 + hrmsEjb/jxl/write/biff/BoundsheetRecord.java | 47 + .../write/biff/ButtonPropertySetRecord.java | 22 + hrmsEjb/jxl/write/biff/CalcCountRecord.java | 22 + hrmsEjb/jxl/write/biff/CalcModeRecord.java | 34 + hrmsEjb/jxl/write/biff/CellValue.java | 240 + hrmsEjb/jxl/write/biff/CellXFRecord.java | 100 + hrmsEjb/jxl/write/biff/CodepageRecord.java | 17 + hrmsEjb/jxl/write/biff/ColumnInfoRecord.java | 109 + hrmsEjb/jxl/write/biff/CompoundFile.java | 539 + .../CopyAdditionalPropertySetsException.java | 7 + hrmsEjb/jxl/write/biff/CountryRecord.java | 31 + hrmsEjb/jxl/write/biff/DBCellRecord.java | 50 + hrmsEjb/jxl/write/biff/DSFRecord.java | 17 + hrmsEjb/jxl/write/biff/DataValidation.java | 92 + .../write/biff/DataValidityListRecord.java | 40 + .../biff/DataValiditySettingsRecord.java | 99 + hrmsEjb/jxl/write/biff/DateFormatRecord.java | 12 + hrmsEjb/jxl/write/biff/DateRecord.java | 131 + .../jxl/write/biff/DefaultColumnWidth.java | 22 + .../write/biff/DefaultRowHeightRecord.java | 27 + hrmsEjb/jxl/write/biff/DeltaRecord.java | 22 + hrmsEjb/jxl/write/biff/DimensionRecord.java | 26 + hrmsEjb/jxl/write/biff/EOFRecord.java | 14 + hrmsEjb/jxl/write/biff/ExtendedSSTRecord.java | 53 + .../jxl/write/biff/ExternalSheetRecord.java | 126 + hrmsEjb/jxl/write/biff/File.java | 79 + hrmsEjb/jxl/write/biff/FooterRecord.java | 34 + hrmsEjb/jxl/write/biff/FormulaRecord.java | 168 + .../write/biff/FunctionGroupCountRecord.java | 22 + hrmsEjb/jxl/write/biff/GridSetRecord.java | 22 + hrmsEjb/jxl/write/biff/GuttersRecord.java | 30 + hrmsEjb/jxl/write/biff/HeaderRecord.java | 34 + hrmsEjb/jxl/write/biff/HideobjRecord.java | 23 + .../write/biff/HorizontalCentreRecord.java | 22 + .../biff/HorizontalPageBreaksRecord.java | 26 + hrmsEjb/jxl/write/biff/HyperlinkRecord.java | 558 ++ hrmsEjb/jxl/write/biff/IndexRecord.java | 40 + .../jxl/write/biff/InterfaceEndRecord.java | 14 + .../jxl/write/biff/InterfaceHeaderRecord.java | 15 + hrmsEjb/jxl/write/biff/IterationRecord.java | 22 + hrmsEjb/jxl/write/biff/JxlWriteException.java | 27 + hrmsEjb/jxl/write/biff/LabelRecord.java | 85 + hrmsEjb/jxl/write/biff/LeftMarginRecord.java | 9 + hrmsEjb/jxl/write/biff/MMSRecord.java | 25 + hrmsEjb/jxl/write/biff/MarginRecord.java | 20 + hrmsEjb/jxl/write/biff/MergedCells.java | 166 + hrmsEjb/jxl/write/biff/MergedCellsRecord.java | 35 + hrmsEjb/jxl/write/biff/MulRKRecord.java | 50 + hrmsEjb/jxl/write/biff/NameRecord.java | 152 + .../jxl/write/biff/NineteenFourRecord.java | 23 + hrmsEjb/jxl/write/biff/NumberRecord.java | 72 + hrmsEjb/jxl/write/biff/ObjProjRecord.java | 17 + .../jxl/write/biff/ObjectProtectRecord.java | 23 + hrmsEjb/jxl/write/biff/PLSRecord.java | 23 + hrmsEjb/jxl/write/biff/PaneRecord.java | 45 + hrmsEjb/jxl/write/biff/PasswordRecord.java | 53 + hrmsEjb/jxl/write/biff/PrecisionRecord.java | 23 + .../jxl/write/biff/PrintGridLinesRecord.java | 22 + .../jxl/write/biff/PrintHeadersRecord.java | 22 + .../jxl/write/biff/Prot4RevPassRecord.java | 17 + hrmsEjb/jxl/write/biff/Prot4RevRecord.java | 23 + hrmsEjb/jxl/write/biff/ProtectRecord.java | 23 + .../write/biff/ReadBooleanFormulaRecord.java | 14 + .../jxl/write/biff/ReadDateFormulaRecord.java | 24 + .../write/biff/ReadErrorFormulaRecord.java | 58 + hrmsEjb/jxl/write/biff/ReadFormulaRecord.java | 176 + .../write/biff/ReadNumberFormulaRecord.java | 48 + .../write/biff/ReadStringFormulaRecord.java | 51 + hrmsEjb/jxl/write/biff/RefModeRecord.java | 16 + hrmsEjb/jxl/write/biff/RefreshAllRecord.java | 23 + hrmsEjb/jxl/write/biff/RightMarginRecord.java | 9 + hrmsEjb/jxl/write/biff/RowRecord.java | 263 + .../jxl/write/biff/RowsExceededException.java | 7 + hrmsEjb/jxl/write/biff/SCLRecord.java | 23 + hrmsEjb/jxl/write/biff/SSTContinueRecord.java | 103 + hrmsEjb/jxl/write/biff/SSTRecord.java | 75 + hrmsEjb/jxl/write/biff/SaveRecalcRecord.java | 22 + .../jxl/write/biff/ScenarioProtectRecord.java | 23 + hrmsEjb/jxl/write/biff/SelectionRecord.java | 49 + hrmsEjb/jxl/write/biff/SetupRecord.java | 113 + hrmsEjb/jxl/write/biff/SharedStrings.java | 83 + hrmsEjb/jxl/write/biff/SheetWriter.java | 475 + hrmsEjb/jxl/write/biff/StringRecord.java | 23 + hrmsEjb/jxl/write/biff/StyleXFRecord.java | 20 + hrmsEjb/jxl/write/biff/Styles.java | 110 + hrmsEjb/jxl/write/biff/SupbookRecord.java | 158 + hrmsEjb/jxl/write/biff/TabIdRecord.java | 20 + hrmsEjb/jxl/write/biff/TopMarginRecord.java | 9 + hrmsEjb/jxl/write/biff/UsesElfsRecord.java | 22 + .../jxl/write/biff/VerticalCentreRecord.java | 22 + hrmsEjb/jxl/write/biff/Weird1Record.java | 16 + hrmsEjb/jxl/write/biff/Window1Record.java | 19 + hrmsEjb/jxl/write/biff/Window2Record.java | 35 + .../jxl/write/biff/WindowProtectRecord.java | 23 + .../jxl/write/biff/WritableFontRecord.java | 57 + hrmsEjb/jxl/write/biff/WritableFonts.java | 17 + .../write/biff/WritableFormattingRecords.java | 102 + hrmsEjb/jxl/write/biff/WritableSheetImpl.java | 1043 ++ .../jxl/write/biff/WritableWorkbookImpl.java | 680 ++ hrmsEjb/jxl/write/biff/WriteAccessRecord.java | 25 + .../sf/jasperreports/charts/JRAreaPlot.java | 10 + .../sf/jasperreports/charts/JRBar3DPlot.java | 22 + .../sf/jasperreports/charts/JRBarPlot.java | 22 + .../sf/jasperreports/charts/JRBubblePlot.java | 14 + .../charts/JRCandlestickPlot.java | 12 + .../charts/JRCategoryAxisFormat.java | 24 + .../charts/JRCategoryDataset.java | 7 + .../charts/JRCategorySeries.java | 17 + .../sf/jasperreports/charts/JRChartAxis.java | 15 + .../sf/jasperreports/charts/JRDataRange.java | 10 + .../charts/JRHighLowDataset.java | 23 + .../jasperreports/charts/JRHighLowPlot.java | 14 + .../sf/jasperreports/charts/JRLinePlot.java | 18 + .../sf/jasperreports/charts/JRMeterPlot.java | 33 + .../jasperreports/charts/JRMultiAxisPlot.java | 8 + .../sf/jasperreports/charts/JRPie3DPlot.java | 11 + .../sf/jasperreports/charts/JRPieDataset.java | 15 + .../sf/jasperreports/charts/JRPiePlot.java | 7 + .../jasperreports/charts/JRScatterPlot.java | 18 + .../charts/JRThermometerPlot.java | 30 + .../charts/JRTimeAxisFormat.java | 24 + .../charts/JRTimePeriodDataset.java | 7 + .../charts/JRTimePeriodSeries.java | 19 + .../sf/jasperreports/charts/JRTimeSeries.java | 17 + .../charts/JRTimeSeriesDataset.java | 11 + .../charts/JRTimeSeriesPlot.java | 14 + .../charts/JRValueAxisFormat.java | 24 + .../jasperreports/charts/JRValueDataset.java | 8 + .../jasperreports/charts/JRValueDisplay.java | 13 + .../jasperreports/charts/JRXAxisFormat.java | 24 + .../sf/jasperreports/charts/JRXyDataset.java | 7 + .../sf/jasperreports/charts/JRXySeries.java | 17 + .../sf/jasperreports/charts/JRXyzDataset.java | 7 + .../sf/jasperreports/charts/JRXyzSeries.java | 17 + .../jasperreports/charts/JRYAxisFormat.java | 24 + .../charts/base/JRBaseAreaPlot.java | 163 + .../charts/base/JRBaseBar3DPlot.java | 208 + .../charts/base/JRBaseBarPlot.java | 208 + .../charts/base/JRBaseBubblePlot.java | 178 + .../charts/base/JRBaseCandlestickPlot.java | 178 + .../charts/base/JRBaseCategoryDataset.java | 55 + .../charts/base/JRBaseCategorySeries.java | 73 + .../charts/base/JRBaseChartAxis.java | 43 + .../charts/base/JRBaseDataRange.java | 55 + .../charts/base/JRBaseHighLowDataset.java | 111 + .../charts/base/JRBaseHighLowPlot.java | 193 + .../charts/base/JRBaseLinePlot.java | 193 + .../charts/base/JRBaseMeterPlot.java | 123 + .../charts/base/JRBaseMultiAxisPlot.java | 57 + .../charts/base/JRBasePie3DPlot.java | 52 + .../charts/base/JRBasePieDataset.java | 75 + .../charts/base/JRBasePiePlot.java | 44 + .../charts/base/JRBaseScatterPlot.java | 193 + .../charts/base/JRBaseThermometerPlot.java | 101 + .../charts/base/JRBaseTimePeriodDataset.java | 55 + .../charts/base/JRBaseTimePeriodSeries.java | 82 + .../charts/base/JRBaseTimeSeries.java | 73 + .../charts/base/JRBaseTimeSeriesDataset.java | 82 + .../charts/base/JRBaseTimeSeriesPlot.java | 193 + .../charts/base/JRBaseValueDataset.java | 47 + .../charts/base/JRBaseValueDisplay.java | 58 + .../charts/base/JRBaseXyDataset.java | 55 + .../charts/base/JRBaseXySeries.java | 73 + .../charts/base/JRBaseXyzDataset.java | 55 + .../charts/base/JRBaseXyzSeries.java | 73 + .../charts/design/JRDesignAreaPlot.java | 147 + .../charts/design/JRDesignBar3DPlot.java | 147 + .../charts/design/JRDesignBarPlot.java | 147 + .../charts/design/JRDesignBubblePlot.java | 147 + .../design/JRDesignCandlestickPlot.java | 147 + .../design/JRDesignCategoryDataset.java | 70 + .../charts/design/JRDesignHighLowDataset.java | 162 + .../charts/design/JRDesignHighLowPlot.java | 147 + .../charts/design/JRDesignLinePlot.java | 147 + .../charts/design/JRDesignMeterPlot.java | 113 + .../charts/design/JRDesignMultiAxisPlot.java | 43 + .../charts/design/JRDesignPie3DPlot.java | 13 + .../charts/design/JRDesignPieDataset.java | 98 + .../charts/design/JRDesignPiePlot.java | 13 + .../charts/design/JRDesignScatterPlot.java | 147 + .../design/JRDesignThermometerPlot.java | 80 + .../design/JRDesignTimePeriodDataset.java | 70 + .../design/JRDesignTimeSeriesDataset.java | 84 + .../charts/design/JRDesignTimeSeriesPlot.java | 147 + .../charts/design/JRDesignValueDataset.java | 49 + .../charts/design/JRDesignXyDataset.java | 70 + .../charts/design/JRDesignXyzDataset.java | 71 + .../charts/fill/JRFillAreaPlot.java | 154 + .../charts/fill/JRFillBar3DPlot.java | 172 + .../charts/fill/JRFillBarPlot.java | 172 + .../charts/fill/JRFillBubblePlot.java | 136 + .../charts/fill/JRFillCandlestickPlot.java | 158 + .../charts/fill/JRFillCategoryDataset.java | 120 + .../charts/fill/JRFillCategorySeries.java | 100 + .../charts/fill/JRFillChartAxis.java | 37 + .../charts/fill/JRFillHighLowDataset.java | 240 + .../charts/fill/JRFillHighLowPlot.java | 162 + .../charts/fill/JRFillLinePlot.java | 166 + .../charts/fill/JRFillMeterPlot.java | 56 + .../charts/fill/JRFillMultiAxisPlot.java | 34 + .../charts/fill/JRFillPie3DPlot.java | 20 + .../charts/fill/JRFillPieDataset.java | 118 + .../charts/fill/JRFillPiePlot.java | 16 + .../charts/fill/JRFillScatterPlot.java | 146 + .../charts/fill/JRFillThermometerPlot.java | 47 + .../charts/fill/JRFillTimePeriodDataset.java | 140 + .../charts/fill/JRFillTimePeriodSeries.java | 112 + .../charts/fill/JRFillTimeSeries.java | 101 + .../charts/fill/JRFillTimeSeriesDataset.java | 145 + .../charts/fill/JRFillTimeSeriesPlot.java | 164 + .../charts/fill/JRFillValueDataset.java | 55 + .../charts/fill/JRFillXyDataset.java | 138 + .../charts/fill/JRFillXySeries.java | 100 + .../charts/fill/JRFillXyzDataset.java | 100 + .../charts/fill/JRFillXyzSeries.java | 100 + .../util/CategoryChartHyperlinkProvider.java | 34 + .../charts/util/CategoryLabelGenerator.java | 23 + .../charts/util/ChartHyperlinkProvider.java | 11 + .../charts/util/ChartRendererFactory.java | 11 + .../charts/util/DefaultXYZDataset.java | 91 + .../util/HighLowChartHyperlinkProvider.java | 31 + .../charts/util/JRAxisFormat.java | 69 + .../charts/util/JRMeterInterval.java | 74 + .../util/PieChartHyperlinkProvider.java | 29 + .../charts/util/PieLabelGenerator.java | 25 + .../TimePeriodChartHyperlinkProvider.java | 38 + .../util/TimePeriodDatasetLabelGenerator.java | 24 + .../TimeSeriesChartHyperlinkProvider.java | 38 + .../charts/util/TimeSeriesLabelGenerator.java | 24 + .../charts/util/XYChartHyperlinkProvider.java | 39 + .../charts/util/XYDatasetLabelGenerator.java | 24 + .../jasperreports/charts/util/XYZElement.java | 56 + .../crosstabs/JRCellContents.java | 37 + .../jasperreports/crosstabs/JRCrosstab.java | 51 + .../crosstabs/JRCrosstabBucket.java | 11 + .../crosstabs/JRCrosstabCell.java | 15 + .../crosstabs/JRCrosstabColumnGroup.java | 7 + .../crosstabs/JRCrosstabDataset.java | 7 + .../crosstabs/JRCrosstabGroup.java | 20 + .../crosstabs/JRCrosstabMeasure.java | 33 + .../crosstabs/JRCrosstabParameter.java | 6 + .../crosstabs/JRCrosstabRowGroup.java | 7 + .../crosstabs/base/JRBaseCellContents.java | 102 + .../crosstabs/base/JRBaseCrosstab.java | 264 + .../crosstabs/base/JRBaseCrosstabBucket.java | 37 + .../crosstabs/base/JRBaseCrosstabCell.java | 64 + .../base/JRBaseCrosstabColumnGroup.java | 27 + .../crosstabs/base/JRBaseCrosstabDataset.java | 24 + .../crosstabs/base/JRBaseCrosstabGroup.java | 66 + .../crosstabs/base/JRBaseCrosstabMeasure.java | 148 + .../base/JRBaseCrosstabParameter.java | 31 + .../base/JRBaseCrosstabRowGroup.java | 27 + .../crosstabs/design/JRCrosstabOrigin.java | 56 + .../design/JRDesignCellContents.java | 147 + .../crosstabs/design/JRDesignCrosstab.java | 946 ++ .../design/JRDesignCrosstabBucket.java | 45 + .../design/JRDesignCrosstabCell.java | 61 + .../design/JRDesignCrosstabColumnGroup.java | 51 + .../design/JRDesignCrosstabDataset.java | 25 + .../design/JRDesignCrosstabGroup.java | 95 + .../design/JRDesignCrosstabMeasure.java | 120 + .../design/JRDesignCrosstabParameter.java | 30 + .../design/JRDesignCrosstabRowGroup.java | 51 + .../fill/JRCrosstabExpressionEvaluator.java | 25 + .../crosstabs/fill/JRFillCrosstabCell.java | 46 + .../fill/JRFillCrosstabColumnGroup.java | 19 + .../crosstabs/fill/JRFillCrosstabGroup.java | 71 + .../crosstabs/fill/JRFillCrosstabMeasure.java | 109 + .../fill/JRFillCrosstabParameter.java | 20 + .../fill/JRFillCrosstabRowGroup.java | 19 + .../fill/JRPercentageCalculator.java | 7 + .../fill/JRPercentageCalculatorFactory.java | 142 + .../fill/calculation/BucketDefinition.java | 139 + .../fill/calculation/BucketingService.java | 843 ++ .../fill/calculation/CrosstabCell.java | 55 + .../fill/calculation/HeaderCell.java | 45 + .../fill/calculation/MeasureDefinition.java | 129 + .../engine/JRAbstractChartCustomizer.java | 40 + .../engine/JRAbstractObjectFactory.java | 95 + .../engine/JRAbstractRenderer.java | 15 + .../engine/JRAbstractScriptlet.java | 140 + .../sf/jasperreports/engine/JRAlignment.java | 35 + .../net/sf/jasperreports/engine/JRAnchor.java | 9 + .../net/sf/jasperreports/engine/JRBand.java | 11 + .../net/sf/jasperreports/engine/JRBox.java | 115 + .../jasperreports/engine/JRBoxContainer.java | 9 + .../net/sf/jasperreports/engine/JRBreak.java | 11 + .../net/sf/jasperreports/engine/JRChart.java | 133 + .../engine/JRChartCustomizer.java | 7 + .../jasperreports/engine/JRChartDataset.java | 25 + .../sf/jasperreports/engine/JRChartPlot.java | 50 + .../net/sf/jasperreports/engine/JRChild.java | 5 + .../sf/jasperreports/engine/JRCloneable.java | 5 + .../jasperreports/engine/JRCommonElement.java | 19 + .../engine/JRCommonGraphicElement.java | 9 + .../jasperreports/engine/JRCommonImage.java | 7 + .../engine/JRCommonRectangle.java | 7 + .../sf/jasperreports/engine/JRCommonText.java | 33 + .../engine/JRConditionalStyle.java | 5 + .../sf/jasperreports/engine/JRDataSource.java | 7 + .../sf/jasperreports/engine/JRDataset.java | 37 + .../engine/JRDatasetParameter.java | 7 + .../sf/jasperreports/engine/JRDatasetRun.java | 13 + .../engine/JRDefaultFontProvider.java | 5 + .../engine/JRDefaultScriptlet.java | 23 + .../engine/JRDefaultStyleProvider.java | 5 + .../sf/jasperreports/engine/JRElement.java | 77 + .../engine/JRElementDataset.java | 17 + .../jasperreports/engine/JRElementGroup.java | 13 + .../sf/jasperreports/engine/JREllipse.java | 3 + .../sf/jasperreports/engine/JRException.java | 17 + .../sf/jasperreports/engine/JRExpression.java | 35 + .../engine/JRExpressionChunk.java | 17 + .../engine/JRExpressionCollector.java | 701 ++ .../net/sf/jasperreports/engine/JRField.java | 13 + .../net/sf/jasperreports/engine/JRFont.java | 91 + .../net/sf/jasperreports/engine/JRFrame.java | 3 + .../engine/JRGraphicElement.java | 29 + .../net/sf/jasperreports/engine/JRGroup.java | 33 + .../sf/jasperreports/engine/JRHyperlink.java | 43 + .../engine/JRHyperlinkHelper.java | 82 + .../engine/JRHyperlinkParameter.java | 7 + .../net/sf/jasperreports/engine/JRImage.java | 43 + .../jasperreports/engine/JRImageRenderer.java | 189 + .../net/sf/jasperreports/engine/JRLine.java | 11 + .../sf/jasperreports/engine/JRLineBox.java | 69 + .../net/sf/jasperreports/engine/JROrigin.java | 94 + .../sf/jasperreports/engine/JRParameter.java | 49 + .../net/sf/jasperreports/engine/JRPen.java | 43 + .../jasperreports/engine/JRPenContainer.java | 9 + .../jasperreports/engine/JRPrintAnchor.java | 11 + .../engine/JRPrintAnchorIndex.java | 38 + .../jasperreports/engine/JRPrintElement.java | 35 + .../engine/JRPrintElementContainer.java | 13 + .../jasperreports/engine/JRPrintEllipse.java | 3 + .../sf/jasperreports/engine/JRPrintFrame.java | 7 + .../engine/JRPrintGraphicElement.java | 15 + .../engine/JRPrintHyperlink.java | 35 + .../engine/JRPrintHyperlinkParameter.java | 47 + .../engine/JRPrintHyperlinkParameters.java | 19 + .../sf/jasperreports/engine/JRPrintImage.java | 27 + .../sf/jasperreports/engine/JRPrintLine.java | 7 + .../sf/jasperreports/engine/JRPrintPage.java | 11 + .../engine/JRPrintRectangle.java | 7 + .../sf/jasperreports/engine/JRPrintText.java | 87 + .../engine/JRPropertiesHolder.java | 9 + .../jasperreports/engine/JRPropertiesMap.java | 151 + .../engine/JRPropertyExpression.java | 9 + .../net/sf/jasperreports/engine/JRQuery.java | 9 + .../sf/jasperreports/engine/JRQueryChunk.java | 19 + .../sf/jasperreports/engine/JRRectangle.java | 7 + .../sf/jasperreports/engine/JRRenderable.java | 42 + .../net/sf/jasperreports/engine/JRReport.java | 131 + .../sf/jasperreports/engine/JRReportFont.java | 7 + .../engine/JRReportTemplate.java | 5 + .../engine/JRRewindableDataSource.java | 5 + .../engine/JRRuntimeException.java | 17 + .../engine/JRScriptletException.java | 17 + .../sf/jasperreports/engine/JRSortField.java | 11 + .../sf/jasperreports/engine/JRStaticText.java | 7 + .../net/sf/jasperreports/engine/JRStyle.java | 303 + .../engine/JRStyleContainer.java | 9 + .../jasperreports/engine/JRStyleSetter.java | 7 + .../engine/JRStyledTextAttributeSelector.java | 36 + .../sf/jasperreports/engine/JRSubreport.java | 23 + .../engine/JRSubreportParameter.java | 3 + .../engine/JRSubreportReturnValue.java | 11 + .../sf/jasperreports/engine/JRTemplate.java | 7 + .../engine/JRTemplateReference.java | 19 + .../jasperreports/engine/JRTextElement.java | 51 + .../sf/jasperreports/engine/JRTextField.java | 41 + .../engine/JRValueParameter.java | 5 + .../sf/jasperreports/engine/JRVariable.java | 71 + .../jasperreports/engine/JRVirtualizable.java | 25 + .../engine/JRVirtualizationHelper.java | 17 + .../jasperreports/engine/JRVirtualizer.java | 17 + .../sf/jasperreports/engine/JRVisitable.java | 5 + .../sf/jasperreports/engine/JRVisitor.java | 29 + .../engine/JasperCompileManager.java | 183 + .../engine/JasperFillManager.java | 144 + .../sf/jasperreports/engine/JasperPrint.java | 355 + .../sf/jasperreports/engine/JasperReport.java | 33 + .../jasperreports/engine/base/JRBaseBand.java | 61 + .../engine/base/JRBaseBoxBottomPen.java | 16 + .../engine/base/JRBaseBoxLeftPen.java | 16 + .../engine/base/JRBaseBoxPen.java | 44 + .../engine/base/JRBaseBoxRightPen.java | 16 + .../engine/base/JRBaseBoxTopPen.java | 16 + .../engine/base/JRBaseBreak.java | 45 + .../engine/base/JRBaseChart.java | 781 ++ .../engine/base/JRBaseChartDataset.java | 18 + .../engine/base/JRBaseChartPlot.java | 211 + .../engine/base/JRBaseConditionalStyle.java | 48 + .../engine/base/JRBaseDataset.java | 212 + .../engine/base/JRBaseDatasetParameter.java | 38 + .../engine/base/JRBaseDatasetRun.java | 78 + .../engine/base/JRBaseElement.java | 338 + .../engine/base/JRBaseElementDataset.java | 85 + .../engine/base/JRBaseElementGroup.java | 119 + .../engine/base/JRBaseEllipse.java | 22 + .../engine/base/JRBaseExpression.java | 157 + .../engine/base/JRBaseExpressionChunk.java | 37 + .../engine/base/JRBaseField.java | 111 + .../jasperreports/engine/base/JRBaseFont.java | 322 + .../engine/base/JRBaseFrame.java | 367 + .../engine/base/JRBaseGraphicElement.java | 83 + .../engine/base/JRBaseGroup.java | 158 + .../engine/base/JRBaseHyperlink.java | 107 + .../engine/base/JRBaseHyperlinkParameter.java | 42 + .../engine/base/JRBaseImage.java | 588 ++ .../jasperreports/engine/base/JRBaseLine.java | 43 + .../engine/base/JRBaseLineBox.java | 247 + .../engine/base/JRBaseObjectFactory.java | 882 ++ .../engine/base/JRBaseParameter.java | 135 + .../jasperreports/engine/base/JRBasePen.java | 112 + .../engine/base/JRBasePrintHyperlink.java | 95 + .../engine/base/JRBasePrintPage.java | 25 + .../engine/base/JRBasePropertyExpression.java | 56 + .../engine/base/JRBaseQuery.java | 55 + .../engine/base/JRBaseQueryChunk.java | 53 + .../engine/base/JRBaseRectangle.java | 45 + .../engine/base/JRBaseReport.java | 415 + .../engine/base/JRBaseReportFont.java | 26 + .../engine/base/JRBaseReportTemplate.java | 23 + .../engine/base/JRBaseSortField.java | 57 + .../engine/base/JRBaseStaticText.java | 37 + .../engine/base/JRBaseStyle.java | 999 ++ .../engine/base/JRBaseSubreport.java | 135 + .../engine/base/JRBaseSubreportParameter.java | 14 + .../base/JRBaseSubreportReturnValue.java | 51 + .../engine/base/JRBaseTextElement.java | 696 ++ .../engine/base/JRBaseTextField.java | 206 + .../engine/base/JRBaseVariable.java | 155 + .../jasperreports/engine/base/JRBoxPen.java | 12 + .../engine/base/JRVirtualPrintPage.java | 439 + .../engine/data/JRSortableDataSource.java | 141 + .../design/JRAbstractClassCompiler.java | 48 + .../engine/design/JRAbstractCompiler.java | 189 + .../engine/design/JRAbstractJavaCompiler.java | 66 + .../design/JRAbstractMultiClassCompiler.java | 10 + .../engine/design/JRClassCompiler.java | 8 + .../engine/design/JRClassGenerator.java | 482 + .../design/JRCompilationSourceCode.java | 9 + .../engine/design/JRCompilationUnit.java | 52 + .../engine/design/JRCompiler.java | 19 + .../JRDefaultCompilationSourceCode.java | 24 + .../engine/design/JRDesignBand.java | 68 + .../engine/design/JRDesignChart.java | 932 ++ .../engine/design/JRDesignChartDataset.java | 23 + .../engine/design/JRDesignDataset.java | 589 ++ .../engine/design/JRDesignElement.java | 139 + .../engine/design/JRDesignElementDataset.java | 82 + .../engine/design/JRDesignElementGroup.java | 62 + .../engine/design/JRDesignExpression.java | 176 + .../design/JRDesignExpressionChunk.java | 35 + .../engine/design/JRDesignGraphicElement.java | 83 + .../engine/design/JRDesignGroup.java | 66 + .../engine/design/JRDesignImage.java | 687 ++ .../engine/design/JRDesignParameter.java | 54 + .../engine/design/JRDesignQuery.java | 140 + .../engine/design/JRDesignQueryChunk.java | 43 + .../engine/design/JRDesignRectangle.java | 60 + .../design/JRDesignSubreportReturnValue.java | 51 + .../engine/design/JRDesignTextElement.java | 700 ++ .../engine/design/JRDesignTextField.java | 312 + .../engine/design/JRDesignVariable.java | 121 + .../engine/design/JRJavacCompiler.java | 40 + .../engine/design/JRJdk13Compiler.java | 54 + .../engine/design/JRJdtCompiler.java | 394 + .../engine/design/JRMultiClassCompiler.java | 8 + .../engine/design/JRReportCompileData.java | 57 + .../engine/design/JRSourceCompileTask.java | 94 + .../engine/design/JRValidationException.java | 47 + .../engine/design/JRValidationFault.java | 27 + .../engine/design/JRVerifier.java | 1407 +++ .../engine/design/JasperDesign.java | 633 ++ .../events/CollectionElementAddedEvent.java | 22 + .../events/CollectionElementRemovedEvent.java | 22 + .../design/events/JRChangeEventsSupport.java | 5 + .../events/JRPropertyChangeSupport.java | 34 + .../events/PropagationChangeListener.java | 16 + .../engine/fill/AbstractValueProvider.java | 25 + .../engine/fill/DistinctCountHolder.java | 45 + .../fill/JRAbstractExtendedIncrementer.java | 13 + .../JRAbstractExtendedIncrementerFactory.java | 7 + .../engine/fill/JRBaseFiller.java | 1137 +++ .../fill/JRBigDecimalAverageIncrementer.java | 26 + .../fill/JRBigDecimalCountIncrementer.java | 34 + .../JRBigDecimalDistinctCountIncrementer.java | 27 + .../fill/JRBigDecimalIncrementerFactory.java | 45 + ...igDecimalStandardDeviationIncrementer.java | 25 + .../fill/JRBigDecimalSumIncrementer.java | 28 + .../fill/JRBigDecimalVarianceIncrementer.java | 54 + .../engine/fill/JRByteAverageIncrementer.java | 24 + .../engine/fill/JRByteCountIncrementer.java | 32 + .../fill/JRByteDistinctCountIncrementer.java | 25 + .../engine/fill/JRByteIncrementerFactory.java | 41 + .../JRByteStandardDeviationIncrementer.java | 23 + .../engine/fill/JRByteSumIncrementer.java | 26 + .../fill/JRByteVarianceIncrementer.java | 49 + .../engine/fill/JRCalculable.java | 21 + .../engine/fill/JRCalculator.java | 252 + .../engine/fill/JRClonePool.java | 49 + .../fill/JRComparableHighestIncrementer.java | 21 + .../fill/JRComparableIncrementerFactory.java | 23 + .../fill/JRComparableLowestIncrementer.java | 21 + .../fill/JRDefaultFirstIncrementer.java | 27 + .../fill/JRDefaultIncrementerFactory.java | 49 + .../fill/JRDefaultNothingIncrementer.java | 25 + .../fill/JRDefaultSystemIncrementer.java | 21 + .../JRDistinctCountExtendedIncrementer.java | 40 + ...stinctCountExtendedIncrementerFactory.java | 17 + .../fill/JRDoubleAverageIncrementer.java | 24 + .../engine/fill/JRDoubleCountIncrementer.java | 32 + .../JRDoubleDistinctCountIncrementer.java | 25 + .../fill/JRDoubleIncrementerFactory.java | 41 + .../JRDoubleStandardDeviationIncrementer.java | 23 + .../engine/fill/JRDoubleSumIncrementer.java | 26 + .../fill/JRDoubleVarianceIncrementer.java | 49 + .../engine/fill/JREvaluationTime.java | 89 + .../engine/fill/JREvaluator.java | 129 + .../fill/JRExpressionEvalException.java | 19 + .../engine/fill/JRExtendedIncrementer.java | 11 + .../fill/JRExtendedIncrementerFactory.java | 5 + .../jasperreports/engine/fill/JRFillBand.java | 231 + .../engine/fill/JRFillBreak.java | 83 + .../engine/fill/JRFillCellContents.java | 459 + .../engine/fill/JRFillChart.java | 1486 +++ .../engine/fill/JRFillChartDataset.java | 18 + .../engine/fill/JRFillChartPlot.java | 77 + .../engine/fill/JRFillCloneFactory.java | 28 + .../engine/fill/JRFillCloneable.java | 5 + .../engine/fill/JRFillContext.java | 164 + .../engine/fill/JRFillCrosstab.java | 1331 +++ .../engine/fill/JRFillDataset.java | 653 ++ .../engine/fill/JRFillDatasetRun.java | 142 + .../engine/fill/JRFillElement.java | 717 ++ .../engine/fill/JRFillElementContainer.java | 434 + .../engine/fill/JRFillElementDataset.java | 115 + .../engine/fill/JRFillElementGroup.java | 143 + .../engine/fill/JRFillEllipse.java | 61 + .../fill/JRFillExpressionEvaluator.java | 8 + .../engine/fill/JRFillField.java | 113 + .../engine/fill/JRFillFrame.java | 463 + .../engine/fill/JRFillGraphicElement.java | 81 + .../engine/fill/JRFillGroup.java | 130 + .../engine/fill/JRFillHyperlinkHelper.java | 50 + .../engine/fill/JRFillImage.java | 590 ++ .../fill/JRFillInterruptedException.java | 5 + .../jasperreports/engine/fill/JRFillLine.java | 67 + .../engine/fill/JRFillObjectFactory.java | 965 ++ .../engine/fill/JRFillParameter.java | 72 + .../engine/fill/JRFillRectangle.java | 77 + .../engine/fill/JRFillReportTemplate.java | 65 + .../engine/fill/JRFillStaticText.java | 113 + .../engine/fill/JRFillSubreport.java | 491 + .../fill/JRFillSubreportReturnValue.java | 60 + .../engine/fill/JRFillTextElement.java | 716 ++ .../engine/fill/JRFillTextField.java | 383 + .../engine/fill/JRFillVariable.java | 210 + .../jasperreports/engine/fill/JRFiller.java | 55 + .../fill/JRFloatAverageIncrementer.java | 24 + .../engine/fill/JRFloatCountIncrementer.java | 32 + .../fill/JRFloatDistinctCountIncrementer.java | 25 + .../fill/JRFloatIncrementerFactory.java | 41 + .../JRFloatStandardDeviationIncrementer.java | 23 + .../engine/fill/JRFloatSumIncrementer.java | 26 + .../fill/JRFloatVarianceIncrementer.java | 49 + .../engine/fill/JRHorizontalFiller.java | 818 ++ .../engine/fill/JRIncrementer.java | 7 + .../engine/fill/JRIncrementerFactory.java | 5 + .../fill/JRIncrementerFactoryCache.java | 26 + .../fill/JRIntegerAverageIncrementer.java | 24 + .../fill/JRIntegerCountIncrementer.java | 32 + .../JRIntegerDistinctCountIncrementer.java | 25 + .../fill/JRIntegerIncrementerFactory.java | 41 + ...JRIntegerStandardDeviationIncrementer.java | 23 + .../engine/fill/JRIntegerSumIncrementer.java | 26 + .../fill/JRIntegerVarianceIncrementer.java | 49 + .../engine/fill/JRLongAverageIncrementer.java | 24 + .../engine/fill/JRLongCountIncrementer.java | 32 + .../fill/JRLongDistinctCountIncrementer.java | 25 + .../engine/fill/JRLongIncrementerFactory.java | 41 + .../JRLongStandardDeviationIncrementer.java | 23 + .../engine/fill/JRLongSumIncrementer.java | 26 + .../fill/JRLongVarianceIncrementer.java | 49 + .../engine/fill/JRMeasuredText.java | 15 + .../engine/fill/JRPrintBand.java | 28 + .../engine/fill/JRRecordedValues.java | 53 + .../fill/JRRecordedValuesPrintElement.java | 12 + .../fill/JRRecordedValuesPrintImage.java | 25 + .../fill/JRRecordedValuesPrintText.java | 25 + .../fill/JRShortAverageIncrementer.java | 24 + .../engine/fill/JRShortCountIncrementer.java | 32 + .../fill/JRShortDistinctCountIncrementer.java | 25 + .../fill/JRShortIncrementerFactory.java | 41 + .../JRShortStandardDeviationIncrementer.java | 23 + .../engine/fill/JRShortSumIncrementer.java | 26 + .../fill/JRShortVarianceIncrementer.java | 49 + .../engine/fill/JRSubreportRunResult.java | 24 + .../engine/fill/JRSubreportRunner.java | 17 + .../engine/fill/JRSubreportRunnerFactory.java | 7 + .../engine/fill/JRTemplateElement.java | 155 + .../engine/fill/JRTemplateEllipse.java | 19 + .../engine/fill/JRTemplateFrame.java | 361 + .../engine/fill/JRTemplateGraphicElement.java | 93 + .../engine/fill/JRTemplateImage.java | 506 + .../engine/fill/JRTemplateLine.java | 30 + .../engine/fill/JRTemplatePrintElement.java | 159 + .../engine/fill/JRTemplatePrintEllipse.java | 11 + .../engine/fill/JRTemplatePrintFrame.java | 262 + .../fill/JRTemplatePrintGraphicElement.java | 54 + .../engine/fill/JRTemplatePrintImage.java | 402 + .../engine/fill/JRTemplatePrintLine.java | 17 + .../engine/fill/JRTemplatePrintRectangle.java | 23 + .../engine/fill/JRTemplatePrintText.java | 676 ++ .../engine/fill/JRTemplateRectangle.java | 58 + .../engine/fill/JRTemplateText.java | 756 ++ .../engine/fill/JRTextMeasurer.java | 7 + .../engine/fill/JRTextMeasurerFactory.java | 7 + .../engine/fill/JRVerticalFiller.java | 816 ++ .../engine/fill/JRVirtualizationContext.java | 73 + .../engine/fill/JRYComparator.java | 12 + .../engine/query/JRQueryExecuter.java | 12 + .../engine/query/JRQueryExecuterFactory.java | 15 + .../engine/util/DefaultFormatFactory.java | 115 + .../engine/util/FileResolver.java | 7 + .../engine/util/FormatFactory.java | 12 + .../engine/util/JRAbstractImageEncoder.java | 23 + .../jasperreports/engine/util/JRBoxUtil.java | 78 + .../engine/util/JRClassLoader.java | 170 + .../engine/util/JRColorUtil.java | 12 + .../engine/util/JRDataUtils.java | 38 + .../engine/util/JRDelegationVisitor.java | 75 + .../engine/util/JRElementsVisitor.java | 115 + .../jasperreports/engine/util/JRFontUtil.java | 43 + .../engine/util/JRGraphEnvInitializer.java | 19 + .../engine/util/JRImageEncoder.java | 8 + .../engine/util/JRImageLoader.java | 150 + .../engine/util/JRImageReader.java | 8 + .../engine/util/JRJdk14ImageEncoder.java | 37 + .../engine/util/JRJdk14ImageReader.java | 27 + .../jasperreports/engine/util/JRLoader.java | 260 + .../jasperreports/engine/util/JRPenUtil.java | 61 + .../engine/util/JRProperties.java | 331 + .../engine/util/JRQueryChunkHandler.java | 11 + .../engine/util/JRQueryExecuterUtils.java | 15 + .../engine/util/JRQueryParser.java | 168 + .../engine/util/JRResourcesUtil.java | 223 + .../sf/jasperreports/engine/util/JRSaver.java | 76 + .../engine/util/JRSingletonCache.java | 61 + .../engine/util/JRStringUtil.java | 176 + .../engine/util/JRStyleResolver.java | 785 ++ .../engine/util/JRStyledText.java | 100 + .../engine/util/JRStyledTextParser.java | 464 + .../engine/util/JRTextAttribute.java | 35 + .../engine/util/JRTextMeasurerUtil.java | 42 + .../engine/util/JRTypeSniffer.java | 68 + .../engine/util/JRVisitorSupport.java | 41 + .../engine/util/JRXmlWriteHelper.java | 330 + .../engine/util/LineBoxWrapper.java | 255 + .../engine/util/MarkupProcessor.java | 5 + .../engine/util/MarkupProcessorFactory.java | 7 + .../sf/jasperreports/engine/util/Pair.java | 45 + .../engine/util/ProtectionDomainFactory.java | 7 + .../util/SingleProtectionDomainFactory.java | 15 + .../engine/util/ThreadLocalStack.java | 37 + .../engine/xml/JRPropertyDigesterRule.java | 14 + .../engine/xml/JRXmlBaseWriter.java | 101 + .../engine/xml/JRXmlConstants.java | 1740 ++++ .../engine/xml/JRXmlDigester.java | 46 + .../engine/xml/JRXmlDigesterFactory.java | 714 ++ .../jasperreports/engine/xml/JRXmlLoader.java | 304 + .../xml/JRXmlTemplateDigesterFactory.java | 121 + .../engine/xml/JRXmlTemplateLoader.java | 79 + .../jasperreports/engine/xml/JRXmlWriter.java | 1537 +++ .../engine/xml/XmlWriterVisitor.java | 121 + .../apache/commons/beanutils/BeanUtils.java | 445 + .../beanutils/ConversionException.java | 26 + .../commons/beanutils/ConvertUtils.java | 244 + .../apache/commons/beanutils/Converter.java | 5 + .../apache/commons/beanutils/DynaBean.java | 21 + .../apache/commons/beanutils/DynaClass.java | 11 + .../commons/beanutils/DynaProperty.java | 140 + .../beanutils/MappedPropertyDescriptor.java | 242 + .../apache/commons/beanutils/MethodUtils.java | 204 + .../commons/beanutils/PropertyUtils.java | 707 ++ .../converters/AbstractArrayConverter.java | 52 + .../converters/BigDecimalConverter.java | 42 + .../converters/BigIntegerConverter.java | 42 + .../converters/BooleanArrayConverter.java | 71 + .../converters/BooleanConverter.java | 48 + .../converters/ByteArrayConverter.java | 51 + .../beanutils/converters/ByteConverter.java | 43 + .../converters/CharacterArrayConverter.java | 51 + .../converters/CharacterConverter.java | 41 + .../beanutils/converters/ClassConverter.java | 44 + .../converters/DoubleArrayConverter.java | 51 + .../beanutils/converters/DoubleConverter.java | 43 + .../converters/FloatArrayConverter.java | 51 + .../beanutils/converters/FloatConverter.java | 43 + .../converters/IntegerArrayConverter.java | 51 + .../converters/IntegerConverter.java | 43 + .../converters/LongArrayConverter.java | 51 + .../beanutils/converters/LongConverter.java | 43 + .../converters/ShortArrayConverter.java | 51 + .../beanutils/converters/ShortConverter.java | 43 + .../converters/SqlDateConverter.java | 42 + .../converters/SqlTimeConverter.java | 42 + .../converters/SqlTimestampConverter.java | 42 + .../converters/StringArrayConverter.java | 39 + .../beanutils/converters/StringConverter.java | 11 + .../commons/collections/ArrayStack.java | 69 + .../apache/commons/collections/Buffer.java | 9 + .../collections/BufferUnderflowException.java | 19 + .../commons/collections/DefaultMapEntry.java | 49 + .../commons/collections/FastHashMap.java | 455 + .../commons/collections/ReferenceMap.java | 563 ++ .../commons/collections/SequencedHashMap.java | 476 + .../comparators/ComparableComparator.java | 36 + .../comparators/ReverseComparator.java | 24 + .../AbstractObjectCreationFactory.java | 17 + .../digester/BeanPropertySetterRule.java | 68 + .../commons/digester/CallMethodRule.java | 217 + .../commons/digester/CallParamRule.java | 103 + .../org/apache/commons/digester/Digester.java | 874 ++ .../commons/digester/FactoryCreateRule.java | 159 + .../commons/digester/ObjectCreateRule.java | 74 + .../digester/ObjectCreationFactory.java | 11 + hrmsEjb/org/apache/commons/digester/Rule.java | 56 + .../org/apache/commons/digester/RuleSet.java | 7 + .../apache/commons/digester/RuleSetBase.java | 11 + .../org/apache/commons/digester/Rules.java | 23 + .../apache/commons/digester/RulesBase.java | 100 + .../apache/commons/digester/SetNextRule.java | 71 + .../commons/digester/SetPropertiesRule.java | 94 + .../commons/digester/SetPropertyRule.java | 64 + .../apache/commons/digester/SetRootRule.java | 71 + .../apache/commons/digester/SetTopRule.java | 71 + hrmsEjb/org/apache/commons/logging/Log.java | 39 + .../logging/LogConfigurationException.java | 24 + .../apache/commons/logging/LogFactory.java | 207 + hrmsEjb/org/apache/struts/action/Action.java | 169 + .../org/apache/struts/action/ActionError.java | 29 + .../apache/struts/action/ActionErrors.java | 17 + .../org/apache/struts/action/ActionForm.java | 52 + .../apache/struts/action/ActionFormBean.java | 12 + .../apache/struts/action/ActionFormBeans.java | 32 + .../apache/struts/action/ActionForward.java | 32 + .../apache/struts/action/ActionForwards.java | 32 + .../apache/struts/action/ActionMapping.java | 44 + .../apache/struts/action/ActionMappings.java | 64 + .../apache/struts/action/ActionMessage.java | 59 + .../apache/struts/action/ActionMessages.java | 143 + .../apache/struts/action/ActionServlet.java | 646 ++ .../struts/action/ActionServletWrapper.java | 23 + .../apache/struts/action/DynaActionForm.java | 228 + .../struts/action/DynaActionFormClass.java | 126 + .../struts/action/ExceptionHandler.java | 40 + hrmsEjb/org/apache/struts/action/PlugIn.java | 10 + .../struts/action/RequestProcessor.java | 414 + .../apache/struts/config/ActionConfig.java | 344 + .../struts/config/ActionMappingFactory.java | 22 + .../config/AddDataSourcePropertyRule.java | 11 + .../struts/config/ApplicationConfig.java | 14 + .../apache/struts/config/ConfigRuleSet.java | 55 + .../struts/config/ControllerConfig.java | 203 + .../struts/config/DataSourceConfig.java | 69 + .../apache/struts/config/ExceptionConfig.java | 101 + .../apache/struts/config/FormBeanConfig.java | 120 + .../struts/config/FormPropertyConfig.java | 153 + .../apache/struts/config/ForwardConfig.java | 88 + .../struts/config/MessageResourcesConfig.java | 71 + .../apache/struts/config/ModuleConfig.java | 71 + .../struts/config/ModuleConfigFactory.java | 36 + .../apache/struts/config/PlugInConfig.java | 35 + .../struts/config/PlugInSetPropertyRule.java | 11 + .../config/SetActionMappingClassRule.java | 14 + .../struts/config/impl/ModuleConfigImpl.java | 289 + .../upload/MultipartRequestHandler.java | 31 + .../upload/MultipartRequestWrapper.java | 258 + .../org/apache/struts/util/ErrorMessages.java | 28 + .../apache/struts/util/GenericDataSource.java | 5 + .../apache/struts/util/MessageResources.java | 182 + .../struts/util/MessageResourcesFactory.java | 46 + .../apache/struts/util/ModuleException.java | 50 + .../org/apache/struts/util/RequestUtils.java | 930 ++ .../org/apache/struts/util/ResponseUtils.java | 64 + .../struts/util/ServletContextWriter.java | 159 + .../apache/struts/util/TokenProcessor.java | 75 + .../xerces/impl/xs/psvi/PSVIProvider.java | 12 + .../xerces/impl/xs/psvi/StringList.java | 7 + .../xerces/impl/xs/psvi/XSAnnotation.java | 13 + .../impl/xs/psvi/XSAttributeDeclaration.java | 15 + .../xs/psvi/XSAttributeGroupDefinition.java | 9 + .../impl/xs/psvi/XSComplexTypeDefinition.java | 31 + .../impl/xs/psvi/XSElementDeclaration.java | 31 + .../apache/xerces/impl/xs/psvi/XSModel.java | 25 + .../xerces/impl/xs/psvi/XSModelGroup.java | 15 + .../impl/xs/psvi/XSModelGroupDefinition.java | 7 + .../xerces/impl/xs/psvi/XSNamedMap.java | 9 + .../xerces/impl/xs/psvi/XSNamespaceItem.java | 23 + .../impl/xs/psvi/XSNamespaceItemList.java | 7 + .../impl/xs/psvi/XSNotationDeclaration.java | 9 + .../apache/xerces/impl/xs/psvi/XSObject.java | 11 + .../xerces/impl/xs/psvi/XSObjectList.java | 7 + .../xerces/impl/xs/psvi/XSParticle.java | 11 + .../impl/xs/psvi/XSSimpleTypeDefinition.java | 75 + .../apache/xerces/impl/xs/psvi/XSTerm.java | 3 + .../xerces/impl/xs/psvi/XSTypeDefinition.java | 21 + .../xerces/impl/xs/psvi/XSWildcard.java | 23 + .../xerces/parsers/AbstractSAXParser.java | 752 ++ .../parsers/AbstractXMLDocumentParser.java | 156 + .../apache/xerces/parsers/ObjectFactory.java | 189 + .../org/apache/xerces/parsers/SAXParser.java | 40 + .../xerces/parsers/SecuritySupport.java | 58 + .../xerces/parsers/SecuritySupport12.java | 98 + .../org/apache/xerces/parsers/XMLParser.java | 28 + .../xerces/util/EntityResolverWrapper.java | 60 + .../xerces/util/ErrorHandlerWrapper.java | 121 + .../org/apache/xerces/util/SymbolHash.java | 105 + .../org/apache/xerces/util/SymbolTable.java | 139 + .../org/apache/xerces/xni/Augmentations.java | 15 + .../apache/xerces/xni/NamespaceContext.java | 27 + hrmsEjb/org/apache/xerces/xni/QName.java | 92 + .../org/apache/xerces/xni/XMLAttributes.java | 59 + .../xerces/xni/XMLDTDContentModelHandler.java | 39 + .../org/apache/xerces/xni/XMLDTDHandler.java | 53 + .../apache/xerces/xni/XMLDocumentHandler.java | 41 + hrmsEjb/org/apache/xerces/xni/XMLLocator.java | 15 + .../xerces/xni/XMLResourceIdentifier.java | 19 + hrmsEjb/org/apache/xerces/xni/XMLString.java | 63 + .../org/apache/xerces/xni/XNIException.java | 23 + .../apache/xerces/xni/grammars/Grammar.java | 5 + .../xni/grammars/XMLGrammarDescription.java | 11 + .../xerces/xni/grammars/XMLGrammarPool.java | 15 + .../xni/parser/XMLComponentManager.java | 7 + .../xni/parser/XMLConfigurationException.java | 33 + .../xni/parser/XMLDTDContentModelSource.java | 9 + .../xerces/xni/parser/XMLDTDSource.java | 9 + .../xerces/xni/parser/XMLDocumentSource.java | 9 + .../xerces/xni/parser/XMLEntityResolver.java | 9 + .../xerces/xni/parser/XMLErrorHandler.java | 11 + .../xerces/xni/parser/XMLInputSource.java | 95 + .../xerces/xni/parser/XMLParseException.java | 96 + .../xni/parser/XMLParserConfiguration.java | 48 + .../apache/xerces/xni/psvi/AttributePSVI.java | 7 + .../apache/xerces/xni/psvi/ElementPSVI.java | 13 + .../org/apache/xerces/xni/psvi/ItemPSVI.java | 37 + hrmsEjb/org/nfunk/jep/ASTConstant.java | 29 + hrmsEjb/org/nfunk/jep/ASTFunNode.java | 54 + hrmsEjb/org/nfunk/jep/ASTStart.java | 15 + hrmsEjb/org/nfunk/jep/ASTVarNode.java | 34 + hrmsEjb/org/nfunk/jep/EvaluatorVisitor.java | 84 + hrmsEjb/org/nfunk/jep/FunctionTable.java | 22 + hrmsEjb/org/nfunk/jep/JEP.java | 327 + hrmsEjb/org/nfunk/jep/JJTParserState.java | 91 + hrmsEjb/org/nfunk/jep/JavaCharStream.java | 418 + hrmsEjb/org/nfunk/jep/Node.java | 19 + hrmsEjb/org/nfunk/jep/Operator.java | 47 + hrmsEjb/org/nfunk/jep/OperatorSet.java | 153 + hrmsEjb/org/nfunk/jep/ParseException.java | 139 + hrmsEjb/org/nfunk/jep/Parser.java | 1799 ++++ hrmsEjb/org/nfunk/jep/ParserConstants.java | 86 + hrmsEjb/org/nfunk/jep/ParserDumpVisitor.java | 52 + hrmsEjb/org/nfunk/jep/ParserTokenManager.java | 1226 +++ .../org/nfunk/jep/ParserTreeConstants.java | 15 + hrmsEjb/org/nfunk/jep/ParserVisitor.java | 13 + hrmsEjb/org/nfunk/jep/SimpleNode.java | 84 + hrmsEjb/org/nfunk/jep/SymbolTable.java | 97 + hrmsEjb/org/nfunk/jep/Token.java | 30 + hrmsEjb/org/nfunk/jep/TokenMgrError.java | 76 + hrmsEjb/org/nfunk/jep/Variable.java | 69 + hrmsEjb/org/nfunk/jep/VariableFactory.java | 11 + hrmsEjb/org/nfunk/jep/function/Abs.java | 21 + hrmsEjb/org/nfunk/jep/function/Add.java | 46 + hrmsEjb/org/nfunk/jep/function/ArcCosine.java | 21 + .../org/nfunk/jep/function/ArcCosineH.java | 28 + hrmsEjb/org/nfunk/jep/function/ArcSine.java | 21 + hrmsEjb/org/nfunk/jep/function/ArcSineH.java | 24 + hrmsEjb/org/nfunk/jep/function/ArcTanH.java | 28 + .../org/nfunk/jep/function/ArcTangent.java | 21 + .../org/nfunk/jep/function/ArcTangent2.java | 19 + hrmsEjb/org/nfunk/jep/function/Arg.java | 23 + hrmsEjb/org/nfunk/jep/function/Assign.java | 26 + .../org/nfunk/jep/function/Comparative.java | 121 + .../org/nfunk/jep/function/ComplexPFMC.java | 20 + hrmsEjb/org/nfunk/jep/function/Cosine.java | 21 + hrmsEjb/org/nfunk/jep/function/CosineH.java | 23 + hrmsEjb/org/nfunk/jep/function/Cross.java | 39 + hrmsEjb/org/nfunk/jep/function/Divide.java | 84 + hrmsEjb/org/nfunk/jep/function/Dot.java | 36 + hrmsEjb/org/nfunk/jep/function/Exp.java | 26 + hrmsEjb/org/nfunk/jep/function/If.java | 34 + hrmsEjb/org/nfunk/jep/function/Imaginary.java | 21 + hrmsEjb/org/nfunk/jep/function/List.java | 20 + hrmsEjb/org/nfunk/jep/function/Logarithm.java | 30 + hrmsEjb/org/nfunk/jep/function/Logical.java | 42 + hrmsEjb/org/nfunk/jep/function/Modulus.java | 20 + hrmsEjb/org/nfunk/jep/function/Multiply.java | 68 + .../nfunk/jep/function/NaturalLogarithm.java | 26 + hrmsEjb/org/nfunk/jep/function/Not.java | 17 + hrmsEjb/org/nfunk/jep/function/Polar.java | 18 + .../jep/function/PostfixMathCommand.java | 27 + .../jep/function/PostfixMathCommandI.java | 12 + hrmsEjb/org/nfunk/jep/function/Power.java | 53 + hrmsEjb/org/nfunk/jep/function/Random.java | 11 + hrmsEjb/org/nfunk/jep/function/Real.java | 21 + hrmsEjb/org/nfunk/jep/function/Sine.java | 21 + hrmsEjb/org/nfunk/jep/function/SineH.java | 23 + .../jep/function/SpecialEvaluationI.java | 10 + .../org/nfunk/jep/function/SquareRoot.java | 23 + hrmsEjb/org/nfunk/jep/function/Str.java | 12 + hrmsEjb/org/nfunk/jep/function/Subtract.java | 45 + hrmsEjb/org/nfunk/jep/function/Sum.java | 30 + hrmsEjb/org/nfunk/jep/function/TanH.java | 23 + hrmsEjb/org/nfunk/jep/function/Tangent.java | 21 + hrmsEjb/org/nfunk/jep/function/UMinus.java | 21 + hrmsEjb/org/nfunk/jep/type/Complex.java | 403 + .../nfunk/jep/type/DoubleNumberFactory.java | 7 + hrmsEjb/org/nfunk/jep/type/NumberFactory.java | 5 + .../classes/META-INF/weblogic-ejb-jar.xml | 215 + .../hrms/includes/images/Brand_Final.gif | Bin 0 -> 19137 bytes .../hrms/jsp/AgeAnalysisReport.jsp | 250 + .../hrms/jsp/HrmAcademicQualRep.jsp | 220 + .../public_html/hrms/jsp/HrmAdhocReport.jsp | 327 + .../public_html/hrms/jsp/HrmAprslEmployee.jsp | 346 + .../public_html/hrms/jsp/HrmEmpAwardDtls.jsp | 388 + .../hrms/jsp/HrmEmpPersAssetDtls.jsp | 418 + .../public_html/hrms/jsp/HrmEmpPersHealth.jsp | 386 + .../hrms/jsp/HrmEmpPersInsDtls.jsp | 393 + .../hrms/jsp/HrmEmpPersLngDtls.jsp | 404 + .../hrms/jsp/HrmMediclaimMaster.jsp | 380 + hrmsEjb/public_html/hrms/jsp/HrmMisReport.jsp | 468 + .../public_html/hrms/jsp/HrmMyWorkflow.jsp | 450 + .../public_html/hrms/jsp/HrmOrgDistMst.jsp | 295 + hrmsEjb/public_html/hrms/jsp/HrmOrgTehMst.jsp | 295 + .../hrms/jsp/HrmRetirementForecastRep.jsp | 248 + .../public_html/hrms/jsp/HrmRoasterEntry.jsp | 367 + .../hrms/jsp/RepAllIndiaManpower1.jsp | 221 + .../hrms/jsp/RepAllIndiaManpower2.jsp | 221 + .../hrms/jsp/RepAllIndiaManpower3.jsp | 221 + .../hrms/jsp/RepAllIndiaManpower5.jsp | 221 + .../hrms/jsp/RepBranchListCode.jsp | 219 + .../hrms/jsp/RepBranchListName.jsp | 219 + .../hrms/jsp/RepBranchListZone.jsp | 219 + .../public_html/hrms/jsp/RepEmpAddress.jsp | 221 + hrmsEjb/public_html/hrms/jsp/RepIncrDue.jsp | 236 + .../public_html/hrms/jsp/RepLeaveLedger.jsp | 221 + hrmsEjb/public_html/hrms/jsp/RepRetrDue.jsp | 220 + .../public_html/hrms/jsp/RepStayBranch.jsp | 219 + hrmsEjb/public_html/hrms/jsp/RepStayGrade.jsp | 219 + hrmsEjb/public_html/hrms/jsp/report.jsp | 87 + .../hrms/report/AgeAnalysisReport.jasper | Bin 0 -> 14755 bytes .../hrms/report/AllIndiaManpowerList.jasper | Bin 0 -> 13505 bytes .../hrms/report/All_India_CTC.jasper | Bin 0 -> 39283 bytes .../report/All_india_MP_for_mediclaim.jasper | Bin 0 -> 23228 bytes .../report/Confidential_File_Report.jasper | Bin 0 -> 24848 bytes .../hrms/report/Confirmation_Due.jasper | Bin 0 -> 21928 bytes .../hrms/report/Manpower_Distribution.jasper | Bin 0 -> 24582 bytes .../hrms/report/Off_Rated_Poor.jasper | Bin 0 -> 18672 bytes .../report/Qual_All_India_Employees.jasper | Bin 0 -> 21812 bytes .../report/Recr_List_During_A_Period.jasper | Bin 0 -> 18730 bytes ...tment_Cessation_Status_For_A_Period.jasper | Bin 0 -> 19805 bytes .../Retirement_Details_For_A_Period.jasper | Bin 0 -> 23050 bytes .../Status_Of_Disciplinary_Cases.jasper | Bin 0 -> 21109 bytes .../hrms/report/Training_Details.jasper | Bin 0 -> 32107 bytes hrmsEjb/wenrgise/common/bean/AccessBean.java | 55 + .../common/bean/AuthorizationBean.java | 15 + hrmsEjb/wenrgise/common/bean/BaseBean.java | 13 + .../wenrgise/common/bean/BaseDetailBean.java | 35 + .../wenrgise/common/bean/BaseHeaderBean.java | 45 + .../common/bean/CommonAttributes.java | 53 + .../wenrgise/common/bean/DynamicMenuBean.java | 151 + hrmsEjb/wenrgise/common/bean/EmpInfoBean.java | 35 + hrmsEjb/wenrgise/common/bean/LOVBean.java | 205 + hrmsEjb/wenrgise/common/bean/MenuBean.java | 15 + .../common/businessdelegate/BaseBD.java | 313 + .../common/businessdelegate/LOVBD.java | 32 + .../common/businessdelegate/SecurityBD.java | 44 + .../common/ejb/business/HrmCommonBO.java | 475 + .../common/exception/BaseException.java | 21 + .../EnrgiseApplicationException.java | 62 + .../exception/EnrgiseMessageKeyException.java | 16 + .../exception/EnrgiseSystemException.java | 18 + .../common/utility/ArrayListUtil.java | 3 + .../common/utility/ContextProvider.java | 39 + .../wenrgise/common/utility/DateUtility.java | 151 + .../wenrgise/common/utility/DebugHelper.java | 44 + .../common/utility/EnrgiseConstants.java | 141 + .../common/utility/EnrgiseListener.java | 24 + .../common/utility/EnrgiseManager.java | 64 + .../common/utility/EnrgisePlugIn.java | 60 + .../wenrgise/common/utility/EnrgiseUtil.java | 342 + .../wenrgise/common/utility/LOVManager.java | 111 + .../wenrgise/common/utility/MessageKey.java | 21 + .../wenrgise/common/utility/ParamUtil.java | 94 + .../common/utility/RecordMetaInfo.java | 26 + .../common/utility/ReportManager.java | 58 + .../wenrgise/common/utility/ReportPlugin.java | 18 + .../wenrgise/common/utility/ReportReader.java | 39 + .../common/utility/ServiceLocator.java | 83 + hrmsEjb/wenrgise/common/utility/UserInfo.java | 175 + .../utility/WorkFlowContextProvider.java | 32 + .../utility/WorkFlowContextProvider2.java | 35 + .../utility/WorkFlowServiceLocator.java | 61 + .../utility/WorkFlowServiceLocator2.java | 61 + .../wenrgise/common/vo/BaseDetailInfo.java | 5 + hrmsEjb/wenrgise/common/vo/BaseDetailVO.java | 144 + hrmsEjb/wenrgise/common/vo/BaseHeaderVO.java | 85 + hrmsEjb/wenrgise/common/vo/BaseQueryVO.java | 45 + hrmsEjb/wenrgise/common/vo/BaseVO.java | 36 + hrmsEjb/wenrgise/common/vo/ComboVO.java | 30 + .../wenrgise/common/vo/DetailSizeValues.java | 25 + hrmsEjb/wenrgise/common/vo/LovQueryVO.java | 96 + hrmsEjb/wenrgise/common/vo/LovVO.java | 66 + hrmsEjb/wenrgise/common/vo/ThisPageVO.java | 57 + .../common/webtier/action/AddRowAction.java | 133 + .../common/webtier/action/BaseAction.java | 751 ++ .../common/webtier/action/CancelAction.java | 22 + .../common/webtier/action/DecrAction.java | 64 + .../common/webtier/action/DeleteAction.java | 108 + .../webtier/action/DeleteRowAction.java | 89 + .../common/webtier/action/ExitAction.java | 33 + .../webtier/action/GetButtonAction.java | 131 + .../webtier/action/GetDetailAction.java | 89 + .../webtier/action/GetDetailPageAction.java | 85 + .../webtier/action/GetHeaderAction.java | 68 + .../webtier/action/GetInsertAction.java | 105 + .../webtier/action/GetNextHeaderAction.java | 71 + .../webtier/action/GetRefreshTabAction.java | 104 + .../common/webtier/action/GetTabAction.java | 139 + .../common/webtier/action/LOVAction.java | 138 + .../common/webtier/action/LogOutAction.java | 43 + .../common/webtier/action/NewModeAction.java | 66 + .../webtier/action/QueryModeAction.java | 82 + .../common/webtier/action/RefreshAction.java | 111 + .../common/webtier/action/SaveAction.java | 132 + .../webtier/action/SaveDetailAction.java | 110 + .../common/webtier/action/ValidateAction.java | 52 + .../common/webtier/form/BaseForm.java | 767 ++ .../common/webtier/form/BaseLOVForm.java | 533 + .../wenrgise/common/xml/vo/DetailScreen.java | 72 + .../wenrgise/common/xml/vo/DetailScreens.java | 22 + .../wenrgise/common/xml/vo/EnrgiseApp.java | 33 + .../wenrgise/common/xml/vo/EnrgiseForms.java | 25 + .../common/xml/vo/HashedEnrgiseForms.java | 25 + hrmsEjb/wenrgise/common/xml/vo/INFOClass.java | 22 + hrmsEjb/wenrgise/common/xml/vo/LOV.java | 25 + hrmsEjb/wenrgise/common/xml/vo/LOVClass.java | 16 + hrmsEjb/wenrgise/common/xml/vo/LOVInfo.java | 45 + hrmsEjb/wenrgise/common/xml/vo/Module.java | 32 + hrmsEjb/wenrgise/common/xml/vo/Report.java | 25 + .../wenrgise/common/xml/vo/ReportInfo.java | 25 + hrmsEjb/wenrgise/common/xml/vo/Reports.java | 16 + hrmsEjb/wenrgise/common/xml/vo/Screen.java | 25 + .../wenrgise/common/xml/vo/ScreenInfo.java | 31 + .../wenrgise/common/xml/vo/ScreenMode.java | 55 + .../wenrgise/common/xml/vo/ScreenModes.java | 16 + hrmsEjb/wenrgise/common/xml/vo/Screens.java | 16 + .../wenrgise/common/xml/vo/SingleForm.java | 93 + .../wenrgise/ejb/common/business/BaseBO.java | 295 + .../ejb/common/business/SecurityBO.java | 365 + .../ejb/common/facade/CommonFacade.java | 5 + .../ejb/common/facade/CommonFacadeBean.java | 16 + .../ejb/common/facade/CommonFacadeHome.java | 9 + .../ejb/common/facade/SecurityFacade.java | 17 + .../ejb/common/facade/SecurityFacadeBean.java | 41 + .../ejb/common/facade/SecurityFacadeHome.java | 9 + .../wenrgise/ejb/common/helper/DBObject.java | 37 + .../ejb/common/helper/InputDBObject.java | 43 + .../ejb/common/helper/ParameterTypes.java | 7 + .../wenrgise/ejb/common/helper/QueryRow.java | 26 + .../ejb/common/helper/QueryValue.java | 166 + .../ejb/common/helper/ScreenWrapper.java | 51 + .../ejb/common/helper/SysadminSql.java | 17 + .../ejb/common/session/UserSession.java | 59 + .../ejb/common/session/UserSessionBean.java | 182 + .../ejb/common/session/UserSessionHome.java | 9 + .../utility/CommonAdditionalUtility.java | 144 + .../ejb/common/utility/DBUtilitiesBean.java | 611 ++ .../common/utility/EnrgiseDisplayUserTag.java | 38 + .../ejb/common/utility/EnrgiseListener.java | 52 + .../ejb/common/utility/EnrgiseManager.java | 66 + .../ejb/common/utility/EnrgisePlugIn.java | 56 + .../utility/EnrgiseSessionListener.java | 28 + .../ejb/common/utility/LOVManager.java | 65 + .../ejb/common/utility/ParamUtil.java | 95 + .../ejb/common/utility/PositionResolver.java | 50 + .../ejb/common/utility/ServiceLocator.java | 91 + .../ejb/common/utility/myContextProvider.java | 44 + .../wenrgise/ejb/help/business/HelpBO.java | 262 + .../wenrgise/ejb/help/business/SearchBO.java | 65 + .../wenrgise/ejb/help/facade/HelpFacade.java | 11 + .../ejb/help/facade/HelpFacadeBean.java | 25 + .../ejb/help/facade/HelpFacadeHome.java | 9 + .../wenrgise/help/bean/HelpChapterBean.java | 46 + .../wenrgise/help/bean/HelpComponentBean.java | 26 + .../wenrgise/help/bean/HelpContentBean.java | 25 + hrmsEjb/wenrgise/help/bean/HelpPartBean.java | 26 + hrmsEjb/wenrgise/help/bean/SearchBean.java | 65 + .../help/businessdelegate/HelpBD.java | 21 + .../hrms/bean/HrmATDDeputChrgRptHdrBean.java | 226 + .../bean/HrmATDDeputOrderSngEmpDtlBean.java | 6 + .../bean/HrmATDDeputOrderSngEmpHdrBean.java | 236 + .../HrmATDTransOrderForSingleEmpBean.java | 316 + .../hrms/bean/HrmAdhocReportHdrBean.java | 266 + .../hrms/bean/HrmAdvSettleHdrBean.java | 246 + .../hrms/bean/HrmAdvSettleHeadsDtlBean.java | 66 + .../hrms/bean/HrmAdvSettleHeadsHdrBean.java | 36 + .../hrms/bean/HrmAdvanceMstDtlBean.java | 146 + .../hrms/bean/HrmAdvanceMstHdrBean.java | 56 + .../wenrgise/hrms/bean/HrmAppTempHdrBean.java | 76 + .../hrms/bean/HrmAppraisalKPADtlBean.java | 116 + .../hrms/bean/HrmAppraisalKPAHdrBean.java | 66 + .../bean/HrmAppraisalTemplateGoalDtlBean.java | 26 + .../bean/HrmAppraisalTemplateHdrBean.java | 56 + .../bean/HrmAppraisalTemplateKpaDtlBean.java | 86 + .../bean/HrmAppraisalTemplateSecDtlBean.java | 166 + .../hrms/bean/HrmAprslEmpDtlsBean.java | 216 + .../hrms/bean/HrmAprslEmployeeBean.java | 66 + .../hrms/bean/HrmAprslGoalsDtlBean.java | 426 + .../wenrgise/hrms/bean/HrmAprslHdrBean.java | 256 + .../hrms/bean/HrmAprslKPADtlBean.java | 406 + .../hrms/bean/HrmAprslSpcTmplDtlBean.java | 76 + .../bean/HrmAprslSpcTmplEmpEligDtlBean.java | 36 + .../hrms/bean/HrmAprslSpcTmplGoalDtlBean.java | 136 + .../hrms/bean/HrmAprslSpcTmplHdrBean.java | 276 + .../hrms/bean/HrmAprslStartOrderHdrBean.java | 66 + .../hrms/bean/HrmAprslStartRuleDtlBean.java | 36 + .../hrms/bean/HrmAprslStartRuleHdrBean.java | 176 + .../hrms/bean/HrmAprslTrngReqDtlBean.java | 236 + .../hrms/bean/HrmAttEmpAttInHdrBean.java | 126 + .../hrms/bean/HrmAttEmpAttOutHdrBean.java | 136 + .../hrms/bean/HrmAttEmpAttQueryDtlBean.java | 126 + .../hrms/bean/HrmAttEmpAttQueryHdrBean.java | 26 + .../hrms/bean/HrmAttEmpDayOffDtlBean.java | 106 + .../hrms/bean/HrmAttEmpDayOffHdrBean.java | 56 + .../hrms/bean/HrmAttEmpShiftDtlBean.java | 46 + .../hrms/bean/HrmAttEmpShiftHdrBean.java | 56 + .../bean/HrmAttEmpShiftRosterDtlBean.java | 66 + .../bean/HrmAttEmpShiftRosterHdrBean.java | 56 + .../hrms/bean/HrmAttShiftMstHdrBean.java | 106 + .../bean/HrmAttShiftRosterGenHdrBean.java | 66 + .../bean/HrmAttWorkGroupDayOffDtlBean.java | 106 + .../bean/HrmAttWorkGroupDayOffHdrBean.java | 66 + .../bean/HrmAttWorkGroupShiftDtlBean.java | 46 + .../bean/HrmAttWorkGroupShiftHdrBean.java | 86 + .../hrms/bean/HrmChargeReportHdrBean.java | 276 + .../hrms/bean/HrmClaimMstDtlBean.java | 86 + .../hrms/bean/HrmClaimMstHdrBean.java | 96 + .../bean/HrmDeputationApplicationHdrBean.java | 156 + .../bean/HrmEligibilityRuleValuesLovBean.java | 46 + .../hrms/bean/HrmEmpAdvAppHdrBean.java | 296 + .../hrms/bean/HrmEmpClaimDtlBean.java | 176 + .../hrms/bean/HrmEmpClaimHdrBean.java | 86 + .../wenrgise/hrms/bean/HrmEmpDepDtlBean.java | 86 + .../wenrgise/hrms/bean/HrmEmpDepHdrBean.java | 36 + .../hrms/bean/HrmEmpDiscActionDtlBean.java | 146 + .../hrms/bean/HrmEmpDiscActionHdrBean.java | 46 + .../hrms/bean/HrmEmpPersAddDtlBean.java | 466 + .../hrms/bean/HrmEmpPersAssetDtlBean.java | 106 + .../hrms/bean/HrmEmpPersAwardDtlBean.java | 46 + .../hrms/bean/HrmEmpPersDtlsBean.java | 716 ++ .../hrms/bean/HrmEmpPersEduDtlBean.java | 116 + .../wenrgise/hrms/bean/HrmEmpPersHdrBean.java | 136 + .../hrms/bean/HrmEmpPersHealthBean.java | 36 + .../hrms/bean/HrmEmpPersHstDtlBean.java | 156 + .../hrms/bean/HrmEmpPersInsDtlBean.java | 46 + .../hrms/bean/HrmEmpPersJoinInfDtlBean.java | 346 + .../hrms/bean/HrmEmpPersLngDtlBean.java | 46 + .../hrms/bean/HrmEmpPersPFDtlBean.java | 96 + .../hrms/bean/HrmEmpPersPriorExpDtlBean.java | 186 + .../hrms/bean/HrmEmpPersRefDtlBean.java | 46 + .../hrms/bean/HrmEmpPersTrngDtlsDtlBean.java | 86 + .../hrms/bean/HrmEmpTransCnclApplHdrBean.java | 276 + .../hrms/bean/HrmEmpWrkgrpDtlBean.java | 46 + .../hrms/bean/HrmGenEligRuleHdrBean.java | 66 + .../hrms/bean/HrmGenEligRuleQueryDtlBean.java | 46 + .../hrms/bean/HrmGenEligRuleQueryHdrBean.java | 16 + .../bean/HrmGenGenerateFormulaHdrBean.java | 25 + .../wenrgise/hrms/bean/HrmLnAppDtlBean.java | 226 + .../wenrgise/hrms/bean/HrmLnAppHdrBean.java | 566 ++ .../hrms/bean/HrmLnAppRepayDtlBean.java | 3 + .../wenrgise/hrms/bean/HrmLnChartDtlBean.java | 56 + .../wenrgise/hrms/bean/HrmLnChartHdrBean.java | 56 + .../wenrgise/hrms/bean/HrmLnDisDtlBean.java | 56 + .../hrms/bean/HrmLnHblIntDtlBean.java | 36 + .../wenrgise/hrms/bean/HrmLnMstDtlBean.java | 116 + .../wenrgise/hrms/bean/HrmLnMstHdrBean.java | 126 + .../wenrgise/hrms/bean/HrmLvApplnDtlBean.java | 66 + .../wenrgise/hrms/bean/HrmLvApplnHdrBean.java | 406 + .../hrms/bean/HrmLvApplnQueryDtlBean.java | 46 + .../hrms/bean/HrmLvApplnQueryHdrBean.java | 66 + .../wenrgise/hrms/bean/HrmLvCancHdrBean.java | 296 + .../hrms/bean/HrmLvCancQueryDtlBean.java | 66 + .../hrms/bean/HrmLvCancQueryHdrBean.java | 66 + .../hrms/bean/HrmLvCreditDtlBean.java | 173 + .../hrms/bean/HrmLvCreditEmpBean.java | 43 + .../hrms/bean/HrmLvCreditHdrBean.java | 126 + .../hrms/bean/HrmLvEncashHdrBean.java | 276 + .../hrms/bean/HrmLvLedgerDtlBean.java | 96 + .../hrms/bean/HrmLvLedgerHdrBean.java | 76 + .../hrms/bean/HrmLvLedgerTransDtlBean.java | 66 + .../wenrgise/hrms/bean/HrmLvMstDtlBean.java | 216 + .../wenrgise/hrms/bean/HrmLvMstHdrBean.java | 166 + .../hrms/bean/HrmMediclaimMasterDtlBean.java | 86 + .../hrms/bean/HrmMediclaimMasterHdrBean.java | 86 + .../hrms/bean/HrmMisReportDtlBean.java | 46 + .../hrms/bean/HrmMisReportHdrBean.java | 36 + .../hrms/bean/HrmMyWorkflowDtlBean.java | 76 + .../hrms/bean/HrmMyWorkflowHdrBean.java | 76 + .../hrms/bean/HrmOrgCalMstDtlBean.java | 46 + .../hrms/bean/HrmOrgCalMstHdrBean.java | 56 + .../hrms/bean/HrmOrgClassDtlBean.java | 66 + .../hrms/bean/HrmOrgClassHdrBean.java | 56 + .../hrms/bean/HrmOrgCntryMstDtlBean.java | 26 + .../hrms/bean/HrmOrgCntryMstHdrBean.java | 36 + .../hrms/bean/HrmOrgDistrictMstDtlBean.java | 26 + .../hrms/bean/HrmOrgHolCalDtlBean.java | 56 + .../hrms/bean/HrmOrgHolCalHdrBean.java | 106 + .../hrms/bean/HrmOrgHolTypeMstHdrBean.java | 66 + .../hrms/bean/HrmOrgIncrementDtlBean.java | 76 + .../hrms/bean/HrmOrgIncrementHdrBean.java | 106 + .../hrms/bean/HrmOrgLangMstDtlBean.java | 36 + .../hrms/bean/HrmOrgQualMstDtlBean.java | 46 + .../hrms/bean/HrmOrgRatingMstDtlBean.java | 46 + .../hrms/bean/HrmOrgRatingMstHdrBean.java | 56 + .../hrms/bean/HrmOrgRelationMstDtlBean.java | 36 + .../hrms/bean/HrmOrgReligionMstDtlBean.java | 16 + .../hrms/bean/HrmOrgScaleMstDtlBean.java | 36 + .../hrms/bean/HrmOrgScaleMstHdrBean.java | 86 + .../hrms/bean/HrmOrgSkillMstDtlBean.java | 46 + .../hrms/bean/HrmOrgSkillMstHdrBean.java | 36 + .../hrms/bean/HrmOrgTehsilMstDtlBean.java | 26 + .../hrms/bean/HrmOrgWorkGroupMstDtlBean.java | 46 + .../hrms/bean/HrmOrgWorkGroupMstHdrBean.java | 316 + .../hrms/bean/HrmPrmCriteriaDtlBean.java | 86 + .../hrms/bean/HrmPrmCriteriaHdrBean.java | 136 + .../hrms/bean/HrmPrmExperienceDtlBean.java | 56 + .../hrms/bean/HrmPrmExperienceHdrBean.java | 56 + .../hrms/bean/HrmPrmGenAssDtlBean.java | 116 + .../hrms/bean/HrmPrmGenAssHdrBean.java | 76 + .../hrms/bean/HrmPrmKPAFinalDtlBean.java | 46 + .../hrms/bean/HrmPrmKPAPoswiseDtlBean.java | 66 + .../hrms/bean/HrmPrmKPARatingHdrBean.java | 106 + .../hrms/bean/HrmPrmNoticeDtlDtlBean.java | 86 + .../hrms/bean/HrmPrmNoticeDtlHdrBean.java | 46 + .../hrms/bean/HrmPrmOrderHdrBean.java | 226 + .../hrms/bean/HrmPrmQualCriteriaDtlBean.java | 56 + .../hrms/bean/HrmPrmQualCriteriaHdrBean.java | 56 + .../hrms/bean/HrmPrmTestScoreDtlBean.java | 36 + .../hrms/bean/HrmPrmTestScoreHdrBean.java | 116 + .../hrms/bean/HrmPrmViewAssDtlBean.java | 236 + .../hrms/bean/HrmPrmViewAssHdrBean.java | 46 + .../hrms/bean/HrmRecAdvAttrHdrBean.java | 46 + .../bean/HrmRecAdvAttrJobDescDtlBean.java | 36 + .../hrms/bean/HrmRecAdvAttrLngReqDtlBean.java | 56 + .../bean/HrmRecAdvAttrLocVacencyDtlBean.java | 96 + .../bean/HrmRecAdvAttrQualReqDtlBean.java | 86 + .../bean/HrmRecAdvAttrSkillReqDtlBean.java | 66 + .../bean/HrmRecAdvAttrWorkExpDtlBean.java | 86 + .../hrms/bean/HrmRecAdvtMtnDtlBean.java | 166 + .../hrms/bean/HrmRecAdvtMtnHdrBean.java | 186 + .../hrms/bean/HrmRecApplnMtnAddDtlBean.java | 586 ++ .../hrms/bean/HrmRecApplnMtnEduDtlBean.java | 106 + .../hrms/bean/HrmRecApplnMtnExpDtlBean.java | 186 + .../hrms/bean/HrmRecApplnMtnHdrBean.java | 166 + .../hrms/bean/HrmRecApplnMtnLangDtlBean.java | 46 + .../hrms/bean/HrmRecApplnMtnOtherDtlBean.java | 176 + .../hrms/bean/HrmRecApplnMtnRefDtlBean.java | 46 + .../bean/HrmRecApplnMtnResultDtlBean.java | 116 + .../hrms/bean/HrmRecApplnMtnTrngDtlBean.java | 56 + .../bean/HrmRecEmpRecCreationHdrBean.java | 756 ++ .../hrms/bean/HrmRecScrutAppMtnDtlBean.java | 126 + .../hrms/bean/HrmRecScrutAppMtnHdrBean.java | 56 + .../hrms/bean/HrmRecTestCentreMstHdrBean.java | 66 + hrmsEjb/wenrgise/hrms/bean/HrmReportBean.java | 36 + .../hrms/bean/HrmRetireForecastHdrBean.java | 36 + .../hrms/bean/HrmRoasterEntryDtlBean.java | 116 + .../hrms/bean/HrmRoasterEntryHdrBean.java | 36 + .../hrms/bean/HrmSepApplnDtlBean.java | 136 + .../hrms/bean/HrmSepApplnHdrBean.java | 196 + .../hrms/bean/HrmSepCatMstDtlBean.java | 3 + .../hrms/bean/HrmSepCatMstHdrBean.java | 68 + .../hrms/bean/HrmSepCatMstrHdrBean.java | 48 + .../hrms/bean/HrmSepClrEmpDtlBean.java | 45 + .../hrms/bean/HrmSepClrEmpHdrBean.java | 45 + .../hrms/bean/HrmSepClrLstDtlBean.java | 46 + .../hrms/bean/HrmSepClrTmpMstDtlBean.java | 23 + .../hrms/bean/HrmSepClrTmplMstDtlBean.java | 35 + .../hrms/bean/HrmSepClrTmplMstHdrBean.java | 45 + .../hrms/bean/HrmSepOrderDtlBean.java | 176 + .../hrms/bean/HrmSepOrderHdrBean.java | 186 + .../hrms/bean/HrmSepTmplMstDtlBean.java | 3 + .../wenrgise/hrms/bean/HrmSettleDtlBean.java | 26 + .../wenrgise/hrms/bean/HrmSettleHdrBean.java | 26 + .../bean/HrmTransCnclOrderSingEmpDtlBean.java | 26 + .../bean/HrmTransCnclOrderSingEmpHdrBean.java | 186 + .../bean/HrmTransOrderSingEmpDtlBean.java | 186 + .../bean/HrmTransferApplicationHdrBean.java | 346 + .../hrms/bean/HrmTrngCalCloseHdrBean.java | 56 + .../wenrgise/hrms/bean/HrmTrngCalDtlBean.java | 306 + .../wenrgise/hrms/bean/HrmTrngCalHdrBean.java | 66 + .../hrms/bean/HrmTrngCrsBudDtlBean.java | 186 + .../hrms/bean/HrmTrngCrsBudHdrBean.java | 66 + .../hrms/bean/HrmTrngCrsMstDtlBean.java | 86 + .../hrms/bean/HrmTrngCrsMstHdrBean.java | 36 + .../hrms/bean/HrmTrngEmpAttDtlBean.java | 106 + .../hrms/bean/HrmTrngEmpAttHdrBean.java | 46 + .../hrms/bean/HrmTrngEmpFeedBackDtlBean.java | 286 + .../hrms/bean/HrmTrngEmpFeedBackHdrBean.java | 116 + .../hrms/bean/HrmTrngEmpHistDtlBean.java | 146 + .../hrms/bean/HrmTrngEmpHistHdrBean.java | 96 + .../hrms/bean/HrmTrngEmpReqDtlBean.java | 46 + .../hrms/bean/HrmTrngEmpReqHdrBean.java | 256 + .../wenrgise/hrms/bean/HrmTrngFacBean.java | 106 + .../hrms/bean/HrmTrngFacFdbkDtlBean.java | 46 + .../hrms/bean/HrmTrngFacTrngDtlBean.java | 186 + .../hrms/bean/HrmTrngFacTrngHdrBean.java | 136 + .../hrms/bean/HrmTrngInsCrsDtlbean.java | 56 + .../hrms/bean/HrmTrngInsCrsHdrBean.java | 156 + .../businessdelegate/HrmATDDptnApplBD.java | 191 + .../businessdelegate/HrmATDDptnChrgRptBD.java | 138 + .../HrmATDDptnOrderForSingleEmpBD.java | 104 + .../businessdelegate/HrmATDTransApplBD.java | 172 + .../HrmATDTransChrgRptBD.java | 143 + .../HrmATDTransCnclApplBD.java | 152 + .../HrmATDTransCnclOrderForSingleEmpBD.java | 115 + .../HrmATDTransOrderForSingleEmpBD.java | 131 + .../businessdelegate/HrmAdhocReportBD.java | 112 + .../hrms/businessdelegate/HrmAdvMstBD.java | 97 + .../hrms/businessdelegate/HrmAdvSettleBD.java | 98 + .../businessdelegate/HrmAdvSettleHeadsBD.java | 107 + .../businessdelegate/HrmAgeAnalysisBD.java | 83 + .../hrms/businessdelegate/HrmAppTempBD.java | 194 + .../businessdelegate/HrmApprisalKPABD.java | 189 + .../hrms/businessdelegate/HrmAprslBD.java | 683 ++ .../businessdelegate/HrmAprslSpcTmplBD.java | 164 + .../HrmAprslStartOrderBD.java | 100 + .../businessdelegate/HrmAprslStartRuleBD.java | 115 + .../businessdelegate/HrmAttEmpAttOutBD.java | 114 + .../businessdelegate/HrmAttEmpAttQueryBD.java | 124 + .../businessdelegate/HrmAttEmpDayOffBD.java | 115 + .../hrms/businessdelegate/HrmAttEmpInBD.java | 138 + .../businessdelegate/HrmAttEmpShiftBD.java | 117 + .../HrmAttEmployeeShiftRosterBD.java | 109 + .../businessdelegate/HrmAttShiftMstBD.java | 123 + .../HrmAttShiftRosterGenBD.java | 80 + .../HrmAttWorkGroupDayOffBD.java | 114 + .../HrmAttWorkGroupShiftBD.java | 130 + .../hrms/businessdelegate/HrmBaseBD.java | 5 + .../hrms/businessdelegate/HrmClaimMstBD.java | 127 + .../hrms/businessdelegate/HrmEmpAdvAppBD.java | 183 + .../hrms/businessdelegate/HrmEmpClaimBD.java | 152 + .../hrms/businessdelegate/HrmEmpDepDtlBD.java | 102 + .../businessdelegate/HrmEmpDiscActionBD.java | 105 + .../hrms/businessdelegate/HrmEmpPersBD.java | 421 + .../businessdelegate/HrmGenEligRuleBD.java | 125 + .../HrmGenEligRuleQueryBD.java | 122 + .../HrmGenGenerateFormulaBD.java | 73 + .../hrms/businessdelegate/HrmLnAppBD.java | 347 + .../hrms/businessdelegate/HrmLnChartBD.java | 97 + .../hrms/businessdelegate/HrmLnMstBD.java | 114 + .../hrms/businessdelegate/HrmLvApplnBD.java | 432 + .../businessdelegate/HrmLvApplnQueryBD.java | 140 + .../hrms/businessdelegate/HrmLvCancBD.java | 258 + .../businessdelegate/HrmLvCancQueryBD.java | 110 + .../hrms/businessdelegate/HrmLvCreditBD.java | 86 + .../hrms/businessdelegate/HrmLvEncashBD.java | 334 + .../hrms/businessdelegate/HrmLvLedgerBD.java | 147 + .../hrms/businessdelegate/HrmLvMstBD.java | 139 + .../HrmMediclaimMasterBD.java | 96 + .../hrms/businessdelegate/HrmMisReportBD.java | 131 + .../businessdelegate/HrmMyWorkflowBD.java | 136 + .../hrms/businessdelegate/HrmOrgCalMstBD.java | 117 + .../businessdelegate/HrmOrgClassDtlBD.java | 104 + .../businessdelegate/HrmOrgCntryMstBD.java | 126 + .../businessdelegate/HrmOrgDistMstBD.java | 104 + .../hrms/businessdelegate/HrmOrgHolCalBD.java | 129 + .../businessdelegate/HrmOrgHolTypeMstBD.java | 146 + .../businessdelegate/HrmOrgIncrementBD.java | 139 + .../businessdelegate/HrmOrgLangMstBD.java | 104 + .../businessdelegate/HrmOrgQualMstBD.java | 92 + .../businessdelegate/HrmOrgRatingMstBD.java | 106 + .../businessdelegate/HrmOrgRelationMstBD.java | 92 + .../businessdelegate/HrmOrgReligionMstBD.java | 92 + .../businessdelegate/HrmOrgScaleMstBD.java | 97 + .../businessdelegate/HrmOrgSkillMstBD.java | 104 + .../hrms/businessdelegate/HrmOrgTehMstBD.java | 104 + .../HrmOrgWorkGroupMstBD.java | 151 + .../businessdelegate/HrmPrmCriteriaBD.java | 141 + .../HrmPrmExperienceScoreBD.java | 107 + .../hrms/businessdelegate/HrmPrmGenAssBD.java | 73 + .../businessdelegate/HrmPrmKPARatingBD.java | 137 + .../businessdelegate/HrmPrmNoticeDtlBD.java | 135 + .../hrms/businessdelegate/HrmPrmOrderBD.java | 115 + .../HrmPrmQualCriteriaBD.java | 109 + .../businessdelegate/HrmPrmTestScoreBD.java | 122 + .../businessdelegate/HrmPrmViewAssBD.java | 131 + .../businessdelegate/HrmRecAdvAttrBD.java | 154 + .../businessdelegate/HrmRecAdvtMtnBD.java | 132 + .../businessdelegate/HrmRecApplnMtnBD.java | 391 + .../HrmRecEmpRecCreationBD.java | 146 + .../businessdelegate/HrmRecScrutAppMntBD.java | 96 + .../HrmRecTestCentreMstBD.java | 115 + .../businessdelegate/HrmRetireForecastBD.java | 117 + .../businessdelegate/HrmRoasterEntryBD.java | 129 + .../hrms/businessdelegate/HrmSepApplnBD.java | 147 + .../hrms/businessdelegate/HrmSepCatMstBD.java | 83 + .../hrms/businessdelegate/HrmSepClrEmpBD.java | 123 + .../hrms/businessdelegate/HrmSepClrLstBD.java | 99 + .../businessdelegate/HrmSepClrTmplMstBD.java | 97 + .../hrms/businessdelegate/HrmSepOrderBD.java | 130 + .../hrms/businessdelegate/HrmSettleBD.java | 94 + .../hrms/businessdelegate/HrmTrngCalBD.java | 97 + .../businessdelegate/HrmTrngCalCloseBD.java | 106 + .../businessdelegate/HrmTrngCrsBudBD.java | 109 + .../businessdelegate/HrmTrngCrsMstBD.java | 97 + .../businessdelegate/HrmTrngEmpAttBD.java | 117 + .../HrmTrngEmpFeedBackBD.java | 123 + .../businessdelegate/HrmTrngEmpHistBD.java | 106 + .../businessdelegate/HrmTrngEmpReqBD.java | 275 + .../hrms/businessdelegate/HrmTrngFacBD.java | 140 + .../businessdelegate/HrmTrngFacTrngBD.java | 127 + .../businessdelegate/HrmTrngInsCrsBD.java | 107 + .../hrms/ejb/business/HrmATDDptnApplBO.java | 650 ++ .../ejb/business/HrmATDDptnChrgRptBO.java | 681 ++ .../HrmATDDptnOrderForSingleEmpBO.java | 634 ++ .../hrms/ejb/business/HrmATDTransApplBO.java | 947 ++ .../ejb/business/HrmATDTransChrgRptBO.java | 862 ++ .../ejb/business/HrmATDTransCnclApplBO.java | 752 ++ .../HrmATDTransCnclOrderForSingleEmpBO.java | 673 ++ .../HrmATDTransOrderForSingleEmpBO.java | 838 ++ .../hrms/ejb/business/HrmAdhocReportBO.java | 340 + .../hrms/ejb/business/HrmAdvApplnBO.java | 843 ++ .../hrms/ejb/business/HrmAdvMstBO.java | 696 ++ .../hrms/ejb/business/HrmAdvSettleBO.java | 241 + .../ejb/business/HrmAdvSettleHeadsBO.java | 217 + .../hrms/ejb/business/HrmAdvSettlementBO.java | 384 + .../hrms/ejb/business/HrmAgeAnalysisBO.java | 72 + .../business/HrmAppTempBusinessObject.java | 1204 +++ .../hrms/ejb/business/HrmApprisalKPABO.java | 521 + .../hrms/ejb/business/HrmAprslBO.java | 1875 ++++ .../hrms/ejb/business/HrmAprslSpcTmplBO.java | 1366 +++ .../ejb/business/HrmAprslStartOrderBO.java | 276 + .../ejb/business/HrmAprslStartRuleBO.java | 800 ++ .../hrms/ejb/business/HrmAttEmpAttInBO.java | 299 + .../hrms/ejb/business/HrmAttEmpAttOutBO.java | 168 + .../ejb/business/HrmAttEmpAttQueryBO.java | 630 ++ .../hrms/ejb/business/HrmAttEmpDayOffBO.java | 457 + .../hrms/ejb/business/HrmAttEmpShiftBO.java | 469 + .../business/HrmAttEmployeeShiftRosterBO.java | 118 + .../hrms/ejb/business/HrmAttShiftMstBO.java | 345 + .../ejb/business/HrmAttShiftRosterGenBO.java | 420 + .../ejb/business/HrmAttWorkGroupDayOffBO.java | 553 + .../ejb/business/HrmAttWorkGroupShiftBO.java | 585 ++ .../wenrgise/hrms/ejb/business/HrmBaseBO.java | 26 + .../hrms/ejb/business/HrmClaimMstBO.java | 618 ++ .../hrms/ejb/business/HrmEmpClaimBO.java | 697 ++ .../hrms/ejb/business/HrmEmpDepDtlBO.java | 451 + .../hrms/ejb/business/HrmEmpDiscActionBO.java | 390 + .../hrms/ejb/business/HrmEmpPersBO.java | 4713 +++++++++ .../hrms/ejb/business/HrmGenEligRuleBO.java | 173 + .../ejb/business/HrmGenEligRuleQueryBO.java | 224 + .../hrms/ejb/business/HrmLnAppBO.java | 1751 ++++ .../hrms/ejb/business/HrmLnChartBO.java | 480 + .../hrms/ejb/business/HrmLnMstBO.java | 907 ++ .../hrms/ejb/business/HrmLoginBO.java | 83 + .../hrms/ejb/business/HrmLvApplnBO.java | 1776 ++++ .../ejb/business/HrmLvApplnValidationBO.java | 166 + .../hrms/ejb/business/HrmLvCancQueryBO.java | 991 ++ .../hrms/ejb/business/HrmLvCreditBO.java | 327 + .../hrms/ejb/business/HrmLvEncashBO.java | 1002 ++ .../hrms/ejb/business/HrmLvLedgerBO.java | 514 + .../hrms/ejb/business/HrmLvMstBO.java | 1038 ++ .../ejb/business/HrmMediclaimMasterBO.java | 547 + .../hrms/ejb/business/HrmMisReportBO.java | 296 + .../hrms/ejb/business/HrmMyWorkflowBO.java | 241 + .../hrms/ejb/business/HrmOrgCalMstBO.java | 649 ++ .../hrms/ejb/business/HrmOrgClassDtlBO.java | 653 ++ .../hrms/ejb/business/HrmOrgCntryMstBO.java | 446 + .../hrms/ejb/business/HrmOrgDistMstBO.java | 214 + .../hrms/ejb/business/HrmOrgHolCalBO.java | 714 ++ .../hrms/ejb/business/HrmOrgHolTypeMstBO.java | 316 + .../hrms/ejb/business/HrmOrgIncrementBO.java | 530 + .../hrms/ejb/business/HrmOrgLangMstBO.java | 217 + .../hrms/ejb/business/HrmOrgQualMstBO.java | 220 + .../hrms/ejb/business/HrmOrgRatingMstBO.java | 543 + .../ejb/business/HrmOrgRelationMstBO.java | 253 + .../ejb/business/HrmOrgReligionMstBO.java | 204 + .../hrms/ejb/business/HrmOrgScaleMstBO.java | 596 ++ .../hrms/ejb/business/HrmOrgSkillMstBO.java | 427 + .../hrms/ejb/business/HrmOrgTehMstBO.java | 214 + .../ejb/business/HrmOrgWorkGroupMstBO.java | 585 ++ .../hrms/ejb/business/HrmPrmCriteriaBO.java | 595 ++ .../ejb/business/HrmPrmExperienceScoreBO.java | 573 ++ .../hrms/ejb/business/HrmPrmGenAssBO.java | 733 ++ .../hrms/ejb/business/HrmPrmKPARatingBO.java | 972 ++ .../hrms/ejb/business/HrmPrmNoticeDtlBO.java | 591 ++ .../hrms/ejb/business/HrmPrmOrderBO.java | 647 ++ .../ejb/business/HrmPrmQualCriteriaBO.java | 337 + .../hrms/ejb/business/HrmPrmTestScoreBO.java | 789 ++ .../hrms/ejb/business/HrmPrmViewAssBO.java | 721 ++ .../hrms/ejb/business/HrmRecAdvAttrBO.java | 1487 +++ .../hrms/ejb/business/HrmRecAdvtMtnBO.java | 811 ++ .../hrms/ejb/business/HrmRecApplnMtnBO.java | 2373 +++++ .../ejb/business/HrmRecEmpRecCreationBO.java | 1351 +++ .../ejb/business/HrmRecRoasterEntryBO.java | 482 + .../ejb/business/HrmRecScrutAppMntBO.java | 278 + .../ejb/business/HrmRecTestCentreMstBO.java | 249 + .../hrms/ejb/business/HrmReportBO.java | 145 + .../ejb/business/HrmRetireForecastBO.java | 147 + .../hrms/ejb/business/HrmSepApplnBO.java | 798 ++ .../hrms/ejb/business/HrmSepCatMstBO.java | 282 + .../hrms/ejb/business/HrmSepClrEmpBO.java | 526 + .../hrms/ejb/business/HrmSepClrLstBO.java | 226 + .../hrms/ejb/business/HrmSepClrTmplMstBO.java | 436 + .../hrms/ejb/business/HrmSepOrderBO.java | 802 ++ .../hrms/ejb/business/HrmTrngCalBO.java | 901 ++ .../hrms/ejb/business/HrmTrngCalCloseBO.java | 261 + .../hrms/ejb/business/HrmTrngCrsBudBO.java | 715 ++ .../hrms/ejb/business/HrmTrngCrsMstBO.java | 507 + .../hrms/ejb/business/HrmTrngEmpAttBO.java | 286 + .../hrms/ejb/business/HrmTrngEmpFdbkBO.java | 401 + .../hrms/ejb/business/HrmTrngEmpHistBO.java | 435 + .../hrms/ejb/business/HrmTrngEmpReqBO.java | 902 ++ .../hrms/ejb/business/HrmTrngFacBO.java | 341 + .../hrms/ejb/business/HrmTrngFacFdbkBO.java | 3 + .../hrms/ejb/business/HrmTrngFacTrngBO.java | 545 + .../hrms/ejb/business/HrmTrngInsCrsBO.java | 755 ++ .../ejb/facade/HrmAdvanceClaimFacadeBean.java | 345 + .../facade/HrmAdvanceClaimFacadeLocal.java | 129 + .../HrmAdvanceClaimFacadeLocalHome.java | 8 + ...llocationTransferDeputationFacadeBean.java | 639 ++ ...locationTransferDeputationFacadeLocal.java | 193 + ...tionTransferDeputationFacadeLocalHome.java | 8 + .../ejb/facade/HrmAttendanceFacadeBean.java | 357 + .../ejb/facade/HrmAttendanceFacadeLocal.java | 137 + .../facade/HrmAttendanceFacadeLocalHome.java | 8 + .../ejb/facade/HrmEligibilityFacadeBean.java | 86 + .../ejb/facade/HrmEligibilityFacadeLocal.java | 30 + .../facade/HrmEligibilityFacadeLocalHome.java | 8 + .../HrmEmployeeMaintenanceFacadeBean.java | 576 ++ .../HrmEmployeeMaintenanceFacadeLocal.java | 201 + ...HrmEmployeeMaintenanceFacadeLocalHome.java | 8 + .../wenrgise/hrms/ejb/facade/HrmFacade.java | 730 ++ .../hrms/ejb/facade/HrmFacadeBean.java | 2048 ++++ .../hrms/ejb/facade/HrmFacadeHome.java | 9 + .../hrms/ejb/facade/HrmLeaveFacadeBean.java | 457 + .../hrms/ejb/facade/HrmLeaveFacadeLocal.java | 140 + .../ejb/facade/HrmLeaveFacadeLocalHome.java | 8 + .../hrms/ejb/facade/HrmLoanFacadeBean.java | 263 + .../hrms/ejb/facade/HrmLoanFacadeLocal.java | 99 + .../ejb/facade/HrmLoanFacadeLocalHome.java | 8 + .../hrms/ejb/facade/HrmManPlFacadeBean.java | 20 + .../hrms/ejb/facade/HrmManPlFacadeLocal.java | 5 + .../ejb/facade/HrmManPlFacadeLocalHome.java | 8 + .../HrmOrganisationSetUpFacadeBean.java | 636 ++ .../HrmOrganisationSetUpFacadeLocal.java | 198 + .../HrmOrganisationSetUpFacadeLocalHome.java | 8 + .../HrmPerformanceAppraisalFacadeBean.java | 579 ++ .../HrmPerformanceAppraisalFacadeLocal.java | 191 + ...rmPerformanceAppraisalFacadeLocalHome.java | 8 + .../ejb/facade/HrmPromotionFacadeBean.java | 454 + .../ejb/facade/HrmPromotionFacadeLocal.java | 158 + .../facade/HrmPromotionFacadeLocalHome.java | 8 + .../ejb/facade/HrmRecruitmentFacadeBean.java | 571 ++ .../ejb/facade/HrmRecruitmentFacadeLocal.java | 209 + .../facade/HrmRecruitmentFacadeLocalHome.java | 8 + .../hrms/ejb/facade/HrmReportFacadeBean.java | 33 + .../hrms/ejb/facade/HrmReportFacadeLocal.java | 13 + .../ejb/facade/HrmReportFacadeLocalHome.java | 8 + .../hrms/ejb/facade/HrmSecondFacade.java | 837 ++ .../hrms/ejb/facade/HrmSecondFacadeBean.java | 2538 +++++ .../hrms/ejb/facade/HrmSecondFacadeHome.java | 9 + .../ejb/facade/HrmSeparationFacadeBean.java | 339 + .../ejb/facade/HrmSeparationFacadeLocal.java | 114 + .../facade/HrmSeparationFacadeLocalHome.java | 8 + .../hrms/ejb/facade/HrmThirdFacade.java | 372 + .../hrms/ejb/facade/HrmThirdFacadeBean.java | 1177 +++ .../hrms/ejb/facade/HrmThirdFacadeHome.java | 9 + .../ejb/facade/HrmTrainingFacadeBean.java | 630 ++ .../ejb/facade/HrmTrainingFacadeLocal.java | 219 + .../facade/HrmTrainingFacadeLocalHome.java | 8 + .../hrms/helper/WorkFlowSimulator.java | 52 + .../wenrgise/hrms/service/HrmsService.java | 14 + .../hrms/service/HrmsServiceFactory.java | 11 + .../wenrgise/hrms/vo/HrmATDDptnApplQVO.java | 26 + .../hrms/vo/HrmATDDptnChrgRptQVO.java | 26 + .../hrms/vo/HrmATDDptnOrderSingleEmpQVO.java | 46 + .../wenrgise/hrms/vo/HrmATDTransApplQVO.java | 36 + .../hrms/vo/HrmATDTransChrgRptQVO.java | 36 + .../hrms/vo/HrmATDTransCnclApplQVO.java | 36 + .../vo/HrmATDTransCnclOrderSingleEmpQVO.java | 46 + .../hrms/vo/HrmATDTransSingleEmpQVO.java | 56 + .../wenrgise/hrms/vo/HrmAdhocReportQVO.java | 36 + .../wenrgise/hrms/vo/HrmAdvMstQueryVO.java | 26 + .../hrms/vo/HrmAdvSettleHeadsQVO.java | 36 + hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleQVO.java | 76 + .../wenrgise/hrms/vo/HrmAppTempQueryVO.java | 26 + .../wenrgise/hrms/vo/HrmAppraisalKPAQVO.java | 26 + hrmsEjb/wenrgise/hrms/vo/HrmAprslQVO.java | 66 + .../wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java | 16 + .../hrms/vo/HrmAprslStartOrderQVO.java | 26 + .../hrms/vo/HrmAprslStartRuleQVO.java | 66 + .../wenrgise/hrms/vo/HrmAttEmpAttInQVO.java | 16 + .../wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java | 16 + .../hrms/vo/HrmAttEmpAttQueryQVO.java | 36 + .../wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java | 56 + .../wenrgise/hrms/vo/HrmAttEmpShiftQVO.java | 46 + .../hrms/vo/HrmAttEmpShiftRosterQVO.java | 86 + .../wenrgise/hrms/vo/HrmAttShiftMstQVO.java | 16 + .../hrms/vo/HrmAttShiftRosterGenQVO.java | 16 + .../hrms/vo/HrmAttWorkGroupDayOffQVO.java | 66 + .../hrms/vo/HrmAttWorkGroupShiftQVO.java | 86 + hrmsEjb/wenrgise/hrms/vo/HrmClaimMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java | 66 + hrmsEjb/wenrgise/hrms/vo/HrmEmpClaimQVO.java | 86 + hrmsEjb/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java | 16 + .../wenrgise/hrms/vo/HrmEmpDiscActionQVO.java | 26 + hrmsEjb/wenrgise/hrms/vo/HrmEmpPersQVO.java | 26 + .../wenrgise/hrms/vo/HrmGenEligRuleQVO.java | 26 + .../hrms/vo/HrmGenEligRuleQueryQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmLnAppQVO.java | 26 + hrmsEjb/wenrgise/hrms/vo/HrmLnChartQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmLnMstQVO.java | 46 + hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQVO.java | 76 + .../wenrgise/hrms/vo/HrmLvApplnQueryQVO.java | 66 + hrmsEjb/wenrgise/hrms/vo/HrmLvCancQVO.java | 46 + .../wenrgise/hrms/vo/HrmLvCancQueryQVO.java | 86 + hrmsEjb/wenrgise/hrms/vo/HrmLvEncashQVO.java | 46 + hrmsEjb/wenrgise/hrms/vo/HrmLvLedgerQVO.java | 76 + hrmsEjb/wenrgise/hrms/vo/HrmLvMstQVO.java | 46 + .../hrms/vo/HrmMediclaimMasterQVO.java | 106 + hrmsEjb/wenrgise/hrms/vo/HrmMisreportQVO.java | 16 + .../wenrgise/hrms/vo/HrmMyWorkflowQVO.java | 46 + hrmsEjb/wenrgise/hrms/vo/HrmOrgCalMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmOrgClassDtlQVO.java | 26 + .../wenrgise/hrms/vo/HrmOrgCntryMstQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmOrgHolCalQVO.java | 66 + .../wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmOrgIncrementQVO.java | 36 + .../wenrgise/hrms/vo/HrmOrgRatingMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmOrgScaleMstQVO.java | 26 + .../wenrgise/hrms/vo/HrmOrgSkillMstQVO.java | 16 + .../hrms/vo/HrmOrgWorkGroupMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmPrmCriteriaQVO.java | 36 + .../hrms/vo/HrmPrmExperienceScoreQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmPrmGenAssQVO.java | 46 + .../wenrgise/hrms/vo/HrmPrmKPARatingQVO.java | 26 + .../wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmPrmOrderQVO.java | 26 + .../hrms/vo/HrmPrmQualCriteriaQVO.java | 16 + .../wenrgise/hrms/vo/HrmPrmTestScoreQVO.java | 26 + .../wenrgise/hrms/vo/HrmPrmViewAssQVO.java | 36 + .../wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java | 6 + .../wenrgise/hrms/vo/HrmRecApplnMtnQVO.java | 36 + .../hrms/vo/HrmRecEmpRecCreationQVO.java | 16 + .../hrms/vo/HrmRecScrutAppMntQVO.java | 16 + .../hrms/vo/HrmRecTestCentreMstQVO.java | 16 + .../hrms/vo/HrmRetireForecastQVO.java | 26 + .../wenrgise/hrms/vo/HrmRoasterEntryQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmSepApplnQVO.java | 36 + hrmsEjb/wenrgise/hrms/vo/HrmSepCatMstQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmSepClrEmpQVO.java | 45 + .../wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java | 15 + hrmsEjb/wenrgise/hrms/vo/HrmSepOrderQVO.java | 36 + .../wenrgise/hrms/vo/HrmSettleQueryVO.java | 46 + .../wenrgise/hrms/vo/HrmTrngCalCloseQVO.java | 16 + hrmsEjb/wenrgise/hrms/vo/HrmTrngCalQVO.java | 56 + .../wenrgise/hrms/vo/HrmTrngCrsBudQVO.java | 26 + .../wenrgise/hrms/vo/HrmTrngCrsMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmTrngEmpAttQVO.java | 26 + .../wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java | 16 + .../wenrgise/hrms/vo/HrmTrngEmpHistQVO.java | 36 + .../wenrgise/hrms/vo/HrmTrngEmpReqQVO.java | 26 + .../wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java | 6 + hrmsEjb/wenrgise/hrms/vo/HrmTrngFacQVO.java | 36 + .../wenrgise/hrms/vo/HrmTrngFacTrngQVO.java | 86 + .../wenrgise/hrms/vo/HrmTrngInsCrsQVO.java | 26 + .../hrms/webtier/action/BaseAction.java | 680 ++ .../hrms/webtier/action/DecrAction.java | 64 + .../webtier/action/HrmAdhocReportAction.java | 54 + .../webtier/action/HrmGenLoginAction.java | 101 + .../webtier/action/ReportViewerAction.java | 110 + .../webtier/form/HrmAcademicQualRepForm.java | 23 + .../hrms/webtier/form/HrmAdhocReportForm.java | 305 + .../hrms/webtier/form/HrmAgeAnalysisForm.java | 23 + .../hrms/webtier/form/HrmBaseForm.java | 76 + .../webtier/form/HrmMediclaimMasterForm.java | 236 + .../hrms/webtier/form/HrmMisReportForm.java | 105 + .../hrms/webtier/form/HrmMyWorkflowForm.java | 195 + .../hrms/webtier/form/HrmOrgDistMstForm.java | 86 + .../hrms/webtier/form/HrmOrgTehMstForm.java | 86 + .../webtier/form/HrmRetireForecastForm.java | 123 + .../webtier/form/HrmRoasterEntryForm.java | 266 + .../hrms/webtier/form/JasperReportForm.java | 44 + .../hrms/webtier/form/ReportInputForm.java | 33 + .../wenrgise/report/excel/ExcelReport.java | 97 + .../report/excel/ExcelReportInformation.java | 87 + .../report/excel/ExcelReportServlet.java | 63 + hrmsEjb/wenrgise/report/excel/Heading.java | 20 + .../workflow/bean/DocHistoryDtlBean.java | 66 + .../workflow/bean/WFLRouteDtlBean.java | 146 + .../workflow/bean/WFLRouteHdrBean.java | 66 + .../workflow/bean/WFLTransDtlBean.java | 96 + .../workflow/bean/WflActMstDtlBean.java | 26 + .../workflow/bean/WflAuthorizationBean.java | 25 + .../workflow/bean/WflDOPGrpDtlBean.java | 56 + .../workflow/bean/WflDOPGrpHdrBean.java | 46 + .../workflow/bean/WflDelegateMstDtlBean.java | 46 + .../workflow/bean/WflDelegateMstHdrBean.java | 86 + .../workflow/bean/WflDocMstAttrDtlBean.java | 56 + .../bean/WflDocMstConditionsDtlBean.java | 26 + .../workflow/bean/WflDocMstHdrBean.java | 46 + .../workflow/bean/WflDocTypeDtlBean.java | 36 + .../bean/WflDtlDocActivityMapDtlBean.java | 46 + .../bean/WflDtlDocActivityMapHdrBean.java | 56 + .../workflow/bean/WflDtlDocTypeDtlBean.java | 76 + .../workflow/bean/WflDtlDocTypeHdrBean.java | 3 + .../workflow/bean/WflDtlsHdrBean.java | 76 + .../workflow/bean/WflWorkListBean.java | 135 + .../workflow/bean/WflWorkListInfoBean.java | 96 + .../wenrgise/workflow/core/WflConstants.java | 91 + .../wenrgise/workflow/core/WflDepartment.java | 13 + .../workflow/core/WflDocumentInfo.java | 58 + .../wenrgise/workflow/core/WflResource.java | 33 + hrmsEjb/wenrgise/workflow/core/WflRole.java | 41 + .../wenrgise/workflow/core/WflService.java | 11 + hrmsEjb/wenrgise/workflow/core/WflSite.java | 17 + hrmsEjb/wenrgise/workflow/core/WflStatus.java | 21 + hrmsEjb/wenrgise/workflow/core/WorkFlow.java | 10 + .../workflow/core/impl/WflDepartmentImpl.java | 25 + .../core/impl/WflDocumentInfoImpl.java | 138 + .../workflow/core/impl/WflResourceImpl.java | 77 + .../workflow/core/impl/WflServiceImpl.java | 37 + .../workflow/core/impl/WflSiteImpl.java | 35 + .../workflow/core/impl/WflStatusImpl.java | 46 + .../ejb/business/DocHistoryDtlBO.java | 61 + .../ejb/business/WFLDtlDocActivityMapBO.java | 483 + .../ejb/business/WflActivityMstBO.java | 237 + .../workflow/ejb/business/WflDOPGrpBO.java | 452 + .../ejb/business/WflDelegationMstBO.java | 453 + .../workflow/ejb/business/WflDocMstBO.java | 824 ++ .../workflow/ejb/business/WflRouteDtlBO.java | 706 ++ .../workflow/ejb/business/WorkFlowBaseBO.java | 3 + .../ejb/business/WorkFlowCommonBO.java | 285 + .../ejb/facade/WflActivityMstFacadeBean.java | 51 + .../ejb/facade/WflActivityMstFacadeLocal.java | 18 + .../facade/WflActivityMstFacadeLocalHome.java | 8 + .../ejb/facade/WflCommFacadeBean.java | 103 + .../ejb/facade/WflCommFacadeLocal.java | 35 + .../ejb/facade/WflCommFacadeLocalHome.java | 8 + .../ejb/facade/WflDOPGrpFacadeBean.java | 60 + .../ejb/facade/WflDOPGrpFacadeLocal.java | 27 + .../ejb/facade/WflDOPGrpFacadeLocalHome.java | 8 + .../ejb/facade/WflDelegateMstFacadeBean.java | 58 + .../ejb/facade/WflDelegateMstFacadeLocal.java | 27 + .../facade/WflDelegateMstFacadeLocalHome.java | 8 + .../ejb/facade/WflDocMstFacadeBean.java | 86 + .../ejb/facade/WflDocMstFacadeLocal.java | 37 + .../ejb/facade/WflDocMstFacadeLocalHome.java | 8 + .../WflDtlDocActivityMapFacadeBean.java | 70 + .../WflDtlDocActivityMapFacadeLocal.java | 31 + .../WflDtlDocActivityMapFacadeLocalHome.java | 8 + .../ejb/facade/WflRouteDtlFacadeBean.java | 82 + .../ejb/facade/WflRouteDtlFacadeLocal.java | 35 + .../facade/WflRouteDtlFacadeLocalHome.java | 8 + .../WflWorkFlowConditionsFacadeBean.java | 16 + .../WflWorkFlowConditionsFacadeLocal.java | 5 + .../WflWorkFlowConditionsFacadeLocalHome.java | 8 + .../workflow/ejb/facade/WorkFlowFacade.java | 141 + .../workflow/ejb/facade/WorkFlowFacade2.java | 141 + .../ejb/facade/WorkFlowFacade2Home.java | 9 + .../ejb/facade/WorkFlowFacadeHome.java | 9 + .../ejb/facade/_WorkFlowFacade2Home_Stub.java | 218 + .../ejb/facade/_WorkFlowFacade2_Stub.java | 3094 ++++++ .../exception/ApproverNotFoundException.java | 6 + .../AtributesNotDefinedException.java | 6 + .../exception/MailNotSentException.java | 6 + .../WorkFlowServiceNotFoundException.java | 6 + .../workflow/helper/HrmsSimulator.java | 290 + .../wenrgise/workflow/impl/WorkFlowImpl.java | 158 + .../workflow/service/WorkFlowService.java | 9 + .../service/WorkFlowServiceFactory.java | 11 + .../workflow/utility/AttributesHandler.java | 34 + .../workflow/utility/ConditionChecker.java | 38 + hrmsEjb/wenrgise/workflow/utility/Node.java | 37 + .../workflow/utility/RouteHandler.java | 284 + .../workflow/utility/WflDocParamsManager.java | 34 + .../utility/WorkFlowServiceFactory.java | 16 + .../workflow/utility/WorkFlowUtil.java | 142 + .../wenrgise/workflow/vo/WflDOPGrpQVO.java | 26 + .../workflow/vo/WflDelegationQVO.java | 36 + .../wenrgise/workflow/vo/WflDocMstQVO.java | 6 + .../workflow/vo/WflDtlDocActivityMapQVO.java | 15 + hrmsEjb/wenrgise/workflow/vo/WflDtlsQVO.java | 3 + .../wenrgise/workflow/vo/WflRouteDtlQVO.java | 26 + .../wenrgise/workflow/xml/vo/WflDocParam.java | 65 + .../workflow/xml/vo/WflDocParams.java | 16 + hrmsWeb/WEB-INF/EnrgiseApp.xml | 5 + hrmsWeb/WEB-INF/EnrgiseConfig.xml | 3025 ++++++ hrmsWeb/WEB-INF/EnrgiseLOV.xml | 8906 +++++++++++++++++ hrmsWeb/WEB-INF/EnrgiseReport.xml | 337 + hrmsWeb/WEB-INF/WflDocParameters.xml | 139 + .../classes/ApplicationResources.properties | 5000 +++++++++ .../public_html/WEB-INF/EnrgiseApp.xml | 5 + .../public_html/WEB-INF/EnrgiseConfig.xml | 3025 ++++++ .../public_html/WEB-INF/EnrgiseLOV.xml | 8906 +++++++++++++++++ .../public_html/WEB-INF/EnrgiseReport.xml | 337 + .../public_html/WEB-INF/WflDocParameters.xml | 139 + .../classes/ApplicationResources.properties | 5000 +++++++++ .../classes/META-INF/weblogic-ejb-jar.xml | 215 + .../WEB-INF/classes/connections.xml | 24 + .../public_html/WEB-INF/struts-config.xml | 8571 ++++++++++++++++ .../classes/public_html/WEB-INF/web.xml | 73 + .../hrms/includes/images/Balesh_Photo.jpg | Bin 0 -> 18465 bytes .../hrms/includes/images/Brand_Final.gif | Bin 0 -> 19137 bytes .../hrms/includes/images/LaunchPad.jpg | Bin 0 -> 41041 bytes .../hrms/includes/images/LaunchPad1.jpg | Bin 0 -> 89221 bytes .../hrms/includes/images/Login.jpg | Bin 0 -> 50163 bytes .../hrms/includes/images/Navigator.jpg | Bin 0 -> 12519 bytes .../hrms/includes/images/Thumbs.db | Bin 0 -> 111104 bytes .../hrms/includes/images/alert.jpg | Bin 0 -> 817 bytes .../hrms/includes/images/bullet.gif | Bin 0 -> 834 bytes .../includes/images/butn_AssetManagement.jpg | Bin 0 -> 2279 bytes .../images/butn_AssetManagement_act.jpg | Bin 0 -> 5018 bytes .../images/butn_BillingAndCollection.jpg | Bin 0 -> 2473 bytes .../images/butn_BillingAndCollection_act.jpg | Bin 0 -> 6104 bytes .../images/butn_BillingAndCollection_dis.jpg | Bin 0 -> 5168 bytes .../includes/images/butn_ExitLaunchPad.jpg | Bin 0 -> 1466 bytes .../includes/images/butn_GeneralLedger.jpg | Bin 0 -> 2172 bytes .../images/butn_GeneralLedger_act.jpg | Bin 0 -> 5638 bytes .../images/butn_GeneralLedger_dis.jpg | Bin 0 -> 4856 bytes .../images/butn_HumanResourceManagement.jpg | Bin 0 -> 2426 bytes .../butn_HumanResourceManagement_act.jpg | Bin 0 -> 7956 bytes .../butn_HumanResourceManagement_dis.jpg | Bin 0 -> 6025 bytes .../images/butn_InventoryAccounting.jpg | Bin 0 -> 2109 bytes .../images/butn_InventoryAccounting_act.jpg | Bin 0 -> 5904 bytes .../images/butn_InventoryAccounting_dis.jpg | Bin 0 -> 5354 bytes .../images/butn_InventoryManagement.jpg | Bin 0 -> 2509 bytes .../images/butn_InventoryManagement_act.jpg | Bin 0 -> 6079 bytes .../images/butn_InventoryManagement_dis.jpg | Bin 0 -> 5224 bytes .../images/butn_OperationAndMaintainance.jpg | Bin 0 -> 2846 bytes .../butn_OperationAndMaintainance_act.jpg | Bin 0 -> 7217 bytes .../butn_OperationAndMaintainance_dis.jpg | Bin 0 -> 5824 bytes .../images/butn_OperationAndManagement.jpg | Bin 0 -> 2846 bytes .../images/butn_PayrollAccounting.jpg | Bin 0 -> 2319 bytes .../images/butn_PayrollAccounting_act.jpg | Bin 0 -> 5662 bytes .../images/butn_PayrollAccounting_dis.jpg | Bin 0 -> 5022 bytes .../butn_ProblemTrackingAndMaintainance.jpg | Bin 0 -> 2833 bytes .../images/butn_PurchaseManagement.jpg | Bin 0 -> 2520 bytes .../images/butn_PurchaseManagement_act.jpg | Bin 0 -> 6887 bytes .../images/butn_PurchaseManagement_dis.jpg | Bin 0 -> 5360 bytes .../images/butn_SystemAdministration.jpg | Bin 0 -> 2503 bytes .../images/butn_SystemAdministration_act.jpg | Bin 0 -> 7119 bytes .../images/butn_SystemAdministration_dis.jpg | Bin 0 -> 5126 bytes .../hrms/includes/images/butn_dtl_next.jpg | Bin 0 -> 3064 bytes .../includes/images/butn_dtl_next_act.jpg | Bin 0 -> 3115 bytes .../includes/images/butn_dtl_next_dis.jpg | Bin 0 -> 2749 bytes .../hrms/includes/images/butn_dtl_prev.jpg | Bin 0 -> 3043 bytes .../includes/images/butn_dtl_prev_act.jpg | Bin 0 -> 3100 bytes .../includes/images/butn_dtl_prev_dis.jpg | Bin 0 -> 2739 bytes .../hrms/includes/images/butn_first.jpg | Bin 0 -> 2813 bytes .../hrms/includes/images/butn_first_act.jpg | Bin 0 -> 2876 bytes .../hrms/includes/images/butn_first_dis.jpg | Bin 0 -> 2493 bytes .../hrms/includes/images/butn_last.jpg | Bin 0 -> 2789 bytes .../hrms/includes/images/butn_last_act.jpg | Bin 0 -> 2862 bytes .../hrms/includes/images/butn_last_dis.jpg | Bin 0 -> 2475 bytes .../hrms/includes/images/butn_lov.gif | Bin 0 -> 1124 bytes .../hrms/includes/images/butn_next.jpg | Bin 0 -> 3016 bytes .../hrms/includes/images/butn_next_act.jpg | Bin 0 -> 3079 bytes .../hrms/includes/images/butn_next_dis.jpg | Bin 0 -> 2664 bytes .../hrms/includes/images/butn_prev.jpg | Bin 0 -> 2992 bytes .../hrms/includes/images/butn_prev_act.jpg | Bin 0 -> 3035 bytes .../hrms/includes/images/butn_prev_dis.jpg | Bin 0 -> 2682 bytes .../public_html/hrms/includes/images/cal.gif | Bin 0 -> 127 bytes .../hrms/includes/images/cal_act.gif | Bin 0 -> 127 bytes .../hrms/includes/images/cal_dis.gif | Bin 0 -> 1091 bytes .../hrms/includes/images/cross.jpg | Bin 0 -> 883 bytes .../hrms/includes/images/delete.jpg | Bin 0 -> 3064 bytes .../hrms/includes/images/delete_act.jpg | Bin 0 -> 3058 bytes .../hrms/includes/images/delete_dis.jpg | Bin 0 -> 2661 bytes .../hrms/includes/images/enrgise.jpg | Bin 0 -> 3124 bytes .../hrms/includes/images/execute.jpg | Bin 0 -> 3022 bytes .../hrms/includes/images/execute_act.jpg | Bin 0 -> 3003 bytes .../hrms/includes/images/execute_dis.jpg | Bin 0 -> 2634 bytes .../hrms/includes/images/execute_undo.jpg | Bin 0 -> 3352 bytes .../hrms/includes/images/execute_undo_act.jpg | Bin 0 -> 3228 bytes .../hrms/includes/images/execute_undo_dis.jpg | Bin 0 -> 2786 bytes .../public_html/hrms/includes/images/exit.jpg | Bin 0 -> 2971 bytes .../hrms/includes/images/exit_act.jpg | Bin 0 -> 3072 bytes .../hrms/includes/images/formtab_b.gif | Bin 0 -> 89 bytes .../hrms/includes/images/formtab_b_dis.gif | Bin 0 -> 244 bytes .../hrms/includes/images/formtab_lb.gif | Bin 0 -> 84 bytes .../hrms/includes/images/formtab_lb_dis.gif | Bin 0 -> 244 bytes .../hrms/includes/images/formtab_r.gif | Bin 0 -> 89 bytes .../hrms/includes/images/formtab_r_dis.gif | Bin 0 -> 244 bytes .../public_html/hrms/includes/images/go.jpg | Bin 0 -> 2825 bytes .../hrms/includes/images/go_act.jpg | Bin 0 -> 2825 bytes .../hrms/includes/images/go_dis.jpg | Bin 0 -> 2825 bytes .../hrms/includes/images/go_dtl.jpg | Bin 0 -> 2870 bytes .../hrms/includes/images/go_dtl_act.jpg | Bin 0 -> 2870 bytes .../hrms/includes/images/go_dtl_dis.jpg | Bin 0 -> 2870 bytes .../public_html/hrms/includes/images/help.jpg | Bin 0 -> 2879 bytes .../hrms/includes/images/help_act.jpg | Bin 0 -> 2844 bytes .../hrms/includes/images/help_dis.jpg | Bin 0 -> 2879 bytes .../hrms/includes/images/insert.jpg | Bin 0 -> 2793 bytes .../hrms/includes/images/insert_act.jpg | Bin 0 -> 2875 bytes .../hrms/includes/images/insert_dis.jpg | Bin 0 -> 2517 bytes .../hrms/includes/images/line_l.gif | Bin 0 -> 36 bytes .../hrms/includes/images/line_r.gif | Bin 0 -> 36 bytes .../hrms/includes/images/line_t.gif | Bin 0 -> 37 bytes .../hrms/includes/images/logo_Enrgise.jpg | Bin 0 -> 3124 bytes .../hrms/includes/images/logo_Purchase.jpg | Bin 0 -> 7460 bytes .../hrms/includes/images/logo_SysAdmin.jpg | Bin 0 -> 8585 bytes .../public_html/hrms/includes/images/lov.jpg | Bin 0 -> 2498 bytes .../hrms/includes/images/lov_act.jpg | Bin 0 -> 2498 bytes .../hrms/includes/images/lov_dis.jpg | Bin 0 -> 2414 bytes .../public_html/hrms/includes/images/man.jpg | Bin 0 -> 2655 bytes .../hrms/includes/images/menu_arrow.gif | Bin 0 -> 56 bytes .../hrms/includes/images/minus.gif | Bin 0 -> 837 bytes .../public_html/hrms/includes/images/next.gif | Bin 0 -> 214 bytes .../hrms/includes/images/next_year.gif | Bin 0 -> 256 bytes .../hrms/includes/images/pixel.gif | Bin 0 -> 43 bytes .../public_html/hrms/includes/images/plus.gif | Bin 0 -> 841 bytes .../public_html/hrms/includes/images/prev.gif | Bin 0 -> 212 bytes .../hrms/includes/images/prev_year.gif | Bin 0 -> 259 bytes .../hrms/includes/images/print.jpg | Bin 0 -> 2812 bytes .../hrms/includes/images/print_act.jpg | Bin 0 -> 2820 bytes .../hrms/includes/images/print_dis.jpg | Bin 0 -> 2523 bytes .../hrms/includes/images/query.jpg | Bin 0 -> 2766 bytes .../hrms/includes/images/query_act.jpg | Bin 0 -> 2833 bytes .../hrms/includes/images/query_dis.jpg | Bin 0 -> 2518 bytes .../hrms/includes/images/refresh.jpg | Bin 0 -> 2813 bytes .../hrms/includes/images/refresh_act.jpg | Bin 0 -> 2879 bytes .../hrms/includes/images/refresh_dis.jpg | Bin 0 -> 2558 bytes .../public_html/hrms/includes/images/save.jpg | Bin 0 -> 2782 bytes .../hrms/includes/images/save_act.jpg | Bin 0 -> 2803 bytes .../hrms/includes/images/save_dis.jpg | Bin 0 -> 2538 bytes .../hrms/includes/images/tab_blue.jpg | Bin 0 -> 4861 bytes .../hrms/includes/images/table_bg.gif | Bin 0 -> 46 bytes .../hrms/includes/images/treemenu.jpg | Bin 0 -> 7376 bytes .../hrms/includes/images/treemenu/Thumbs.db | Bin 0 -> 6144 bytes .../hrms/includes/images/treemenu/base.gif | Bin 0 -> 1040 bytes .../hrms/includes/images/treemenu/cd.gif | Bin 0 -> 239 bytes .../hrms/includes/images/treemenu/empty.gif | Bin 0 -> 62 bytes .../hrms/includes/images/treemenu/folder.gif | Bin 0 -> 372 bytes .../includes/images/treemenu/folderopen.gif | Bin 0 -> 376 bytes .../hrms/includes/images/treemenu/globe.gif | Bin 0 -> 1095 bytes .../includes/images/treemenu/imgfolder.gif | Bin 0 -> 622 bytes .../hrms/includes/images/treemenu/join.gif | Bin 0 -> 69 bytes .../includes/images/treemenu/joinbottom.gif | Bin 0 -> 66 bytes .../hrms/includes/images/treemenu/line.gif | Bin 0 -> 66 bytes .../hrms/includes/images/treemenu/lock.gif | Bin 0 -> 323 bytes .../hrms/includes/images/treemenu/minus.gif | Bin 0 -> 86 bytes .../includes/images/treemenu/minusbottom.gif | Bin 0 -> 85 bytes .../includes/images/treemenu/musicfolder.gif | Bin 0 -> 633 bytes .../images/treemenu/nolines_minus.gif | Bin 0 -> 861 bytes .../includes/images/treemenu/nolines_plus.gif | Bin 0 -> 870 bytes .../hrms/includes/images/treemenu/page.gif | Bin 0 -> 582 bytes .../hrms/includes/images/treemenu/plus.gif | Bin 0 -> 89 bytes .../includes/images/treemenu/plusbottom.gif | Bin 0 -> 88 bytes .../includes/images/treemenu/question.gif | Bin 0 -> 1044 bytes .../hrms/includes/images/treemenu/trash.gif | Bin 0 -> 1051 bytes .../wenrgise/common/bean/BaseBean.java | 15 + .../wenrgise/common/bean/BaseDetailBean.java | 36 + .../wenrgise/common/bean/BaseHeaderBean.java | 46 + .../common/bean/CommonAttributes.java | 53 + .../wenrgise/common/bean/EmpInfoBean.java | 35 + .../common/businessdelegate/SecurityBD.java | 44 + .../common/exception/BaseException.java | 21 + .../EnrgiseApplicationException.java | 63 + .../exception/EnrgiseMessageKeyException.java | 17 + .../exception/EnrgiseSystemException.java | 19 + .../common/utility/ContextProvider.java | 39 + .../wenrgise/common/utility/DebugHelper.java | 46 + .../common/utility/EnrgiseManager.java | 64 + .../common/utility/EnrgisePlugIn.java | 62 + .../wenrgise/common/utility/EnrgiseUtil.java | 343 + .../wenrgise/common/utility/MessageKey.java | 21 + .../wenrgise/common/utility/ReportPlugin.java | 18 + .../wenrgise/common/utility/ReportReader.java | 39 + .../common/utility/ServiceLocator.java | 84 + .../wenrgise/common/utility/UserInfo.java | 175 + .../utility/WorkFlowContextProvider.java | 32 + .../utility/WorkFlowContextProvider2.java | 35 + .../utility/WorkFlowServiceLocator.java | 62 + .../utility/WorkFlowServiceLocator2.java | 62 + .../wenrgise/common/vo/BaseDetailVO.java | 145 + .../wenrgise/common/vo/BaseHeaderVO.java | 86 + .../wenrgise/common/vo/BaseQueryVO.java | 45 + .../classes/wenrgise/common/vo/BaseVO.java | 36 + .../common/webtier/action/AddRowAction.java | 134 + .../common/webtier/action/BaseAction.java | 751 ++ .../common/webtier/action/CancelAction.java | 23 + .../common/webtier/action/DecrAction.java | 65 + .../common/webtier/action/DeleteAction.java | 109 + .../webtier/action/DeleteRowAction.java | 90 + .../common/webtier/action/ExitAction.java | 34 + .../webtier/action/GetButtonAction.java | 132 + .../webtier/action/GetDetailAction.java | 90 + .../webtier/action/GetDetailPageAction.java | 86 + .../webtier/action/GetHeaderAction.java | 69 + .../webtier/action/GetInsertAction.java | 106 + .../webtier/action/GetNextHeaderAction.java | 72 + .../webtier/action/GetRefreshTabAction.java | 105 + .../common/webtier/action/GetTabAction.java | 140 + .../common/webtier/action/LOVAction.java | 139 + .../common/webtier/action/LogOutAction.java | 44 + .../common/webtier/action/NewModeAction.java | 67 + .../common/webtier/action/OnLoadAction.java | 88 + .../webtier/action/QueryModeAction.java | 83 + .../common/webtier/action/RefreshAction.java | 112 + .../common/webtier/action/SaveAction.java | 133 + .../webtier/action/SaveDetailAction.java | 111 + .../common/webtier/action/ValidateAction.java | 53 + .../wenrgise/ejb/common/business/BaseBO.java | 295 + .../ejb/common/facade/SecurityFacade.java | 17 + .../ejb/common/facade/SecurityFacadeHome.java | 10 + .../wenrgise/ejb/common/helper/DBObject.java | 38 + .../ejb/common/helper/InputDBObject.java | 43 + .../wenrgise/ejb/common/helper/QueryRow.java | 27 + .../ejb/common/helper/QueryValue.java | 166 + .../ejb/common/session/UserSession.java | 59 + .../ejb/common/session/UserSessionHome.java | 10 + .../utility/CommonAdditionalUtility.java | 145 + .../ejb/common/utility/DBUtilitiesBean.java | 612 ++ .../common/utility/EnrgiseDisplayUserTag.java | 39 + .../ejb/common/utility/EnrgiseListener.java | 54 + .../ejb/common/utility/EnrgiseManager.java | 66 + .../ejb/common/utility/EnrgisePlugIn.java | 58 + .../utility/EnrgiseSessionListener.java | 29 + .../ejb/common/utility/LOVManager.java | 65 + .../ejb/common/utility/ParamUtil.java | 96 + .../ejb/common/utility/ServiceLocator.java | 92 + .../ejb/common/utility/myContextProvider.java | 44 + .../wenrgise/ejb/help/business/SearchBO.java | 65 + .../wenrgise/ejb/help/facade/HelpFacade.java | 11 + .../ejb/help/facade/HelpFacadeBean.java | 25 + .../ejb/help/facade/HelpFacadeHome.java | 10 + .../wenrgise/help/bean/SearchBean.java | 65 + .../help/businessdelegate/HelpBD.java | 21 + .../hrms/bean/HrmATDDeputChrgRptHdrBean.java | 226 + .../bean/HrmATDDeputOrderSngEmpDtlBean.java | 6 + .../bean/HrmATDDeputOrderSngEmpHdrBean.java | 236 + .../HrmATDTransOrderForSingleEmpBean.java | 316 + .../hrms/bean/HrmAdhocReportHdrBean.java | 266 + .../hrms/bean/HrmAdvSettleHdrBean.java | 246 + .../hrms/bean/HrmAdvSettleHeadsDtlBean.java | 66 + .../hrms/bean/HrmAdvSettleHeadsHdrBean.java | 36 + .../hrms/bean/HrmAdvanceMstDtlBean.java | 146 + .../hrms/bean/HrmAdvanceMstHdrBean.java | 56 + .../wenrgise/hrms/bean/HrmAppTempHdrBean.java | 76 + .../hrms/bean/HrmAppraisalKPADtlBean.java | 116 + .../hrms/bean/HrmAppraisalKPAHdrBean.java | 66 + .../bean/HrmAppraisalTemplateGoalDtlBean.java | 26 + .../bean/HrmAppraisalTemplateHdrBean.java | 56 + .../bean/HrmAppraisalTemplateKpaDtlBean.java | 86 + .../bean/HrmAppraisalTemplateSecDtlBean.java | 166 + .../hrms/bean/HrmAprslEmpDtlsBean.java | 216 + .../hrms/bean/HrmAprslEmployeeBean.java | 66 + .../hrms/bean/HrmAprslGoalsDtlBean.java | 426 + .../wenrgise/hrms/bean/HrmAprslHdrBean.java | 256 + .../hrms/bean/HrmAprslKPADtlBean.java | 406 + .../hrms/bean/HrmAprslSpcTmplDtlBean.java | 76 + .../bean/HrmAprslSpcTmplEmpEligDtlBean.java | 36 + .../hrms/bean/HrmAprslSpcTmplGoalDtlBean.java | 136 + .../hrms/bean/HrmAprslSpcTmplHdrBean.java | 276 + .../hrms/bean/HrmAprslStartOrderHdrBean.java | 66 + .../hrms/bean/HrmAprslStartRuleDtlBean.java | 36 + .../hrms/bean/HrmAprslStartRuleHdrBean.java | 176 + .../hrms/bean/HrmAprslTrngReqDtlBean.java | 236 + .../hrms/bean/HrmAttEmpAttInHdrBean.java | 126 + .../hrms/bean/HrmAttEmpAttOutHdrBean.java | 136 + .../hrms/bean/HrmAttEmpAttQueryDtlBean.java | 126 + .../hrms/bean/HrmAttEmpAttQueryHdrBean.java | 26 + .../hrms/bean/HrmAttEmpDayOffDtlBean.java | 106 + .../hrms/bean/HrmAttEmpDayOffHdrBean.java | 56 + .../hrms/bean/HrmAttEmpShiftDtlBean.java | 46 + .../hrms/bean/HrmAttEmpShiftHdrBean.java | 56 + .../bean/HrmAttEmpShiftRosterDtlBean.java | 66 + .../bean/HrmAttEmpShiftRosterHdrBean.java | 56 + .../hrms/bean/HrmAttShiftMstHdrBean.java | 106 + .../bean/HrmAttShiftRosterGenHdrBean.java | 66 + .../bean/HrmAttWorkGroupDayOffDtlBean.java | 106 + .../bean/HrmAttWorkGroupDayOffHdrBean.java | 66 + .../bean/HrmAttWorkGroupShiftDtlBean.java | 46 + .../bean/HrmAttWorkGroupShiftHdrBean.java | 86 + .../hrms/bean/HrmChargeReportHdrBean.java | 276 + .../hrms/bean/HrmClaimMstDtlBean.java | 86 + .../hrms/bean/HrmClaimMstHdrBean.java | 96 + .../bean/HrmDeputationApplicationHdrBean.java | 156 + .../bean/HrmEligibilityRuleValuesLovBean.java | 46 + .../hrms/bean/HrmEmpAdvAppHdrBean.java | 296 + .../hrms/bean/HrmEmpClaimDtlBean.java | 176 + .../hrms/bean/HrmEmpClaimHdrBean.java | 86 + .../wenrgise/hrms/bean/HrmEmpDepDtlBean.java | 86 + .../wenrgise/hrms/bean/HrmEmpDepHdrBean.java | 36 + .../hrms/bean/HrmEmpDiscActionDtlBean.java | 146 + .../hrms/bean/HrmEmpDiscActionHdrBean.java | 46 + .../hrms/bean/HrmEmpPersAddDtlBean.java | 466 + .../hrms/bean/HrmEmpPersAssetDtlBean.java | 106 + .../hrms/bean/HrmEmpPersAwardDtlBean.java | 46 + .../hrms/bean/HrmEmpPersDtlsBean.java | 716 ++ .../hrms/bean/HrmEmpPersEduDtlBean.java | 116 + .../wenrgise/hrms/bean/HrmEmpPersHdrBean.java | 136 + .../hrms/bean/HrmEmpPersHealthBean.java | 36 + .../hrms/bean/HrmEmpPersHstDtlBean.java | 156 + .../hrms/bean/HrmEmpPersInsDtlBean.java | 46 + .../hrms/bean/HrmEmpPersJoinInfDtlBean.java | 346 + .../hrms/bean/HrmEmpPersLngDtlBean.java | 46 + .../hrms/bean/HrmEmpPersPFDtlBean.java | 96 + .../hrms/bean/HrmEmpPersPriorExpDtlBean.java | 186 + .../hrms/bean/HrmEmpPersRefDtlBean.java | 46 + .../hrms/bean/HrmEmpPersTrngDtlsDtlBean.java | 86 + .../hrms/bean/HrmEmpTransCnclApplHdrBean.java | 276 + .../hrms/bean/HrmEmpWrkgrpDtlBean.java | 46 + .../hrms/bean/HrmGenEligRuleHdrBean.java | 66 + .../hrms/bean/HrmGenEligRuleQueryDtlBean.java | 46 + .../hrms/bean/HrmGenEligRuleQueryHdrBean.java | 16 + .../bean/HrmGenGenerateFormulaHdrBean.java | 25 + .../wenrgise/hrms/bean/HrmLnAppDtlBean.java | 226 + .../wenrgise/hrms/bean/HrmLnAppHdrBean.java | 566 ++ .../hrms/bean/HrmLnAppRepayDtlBean.java | 3 + .../wenrgise/hrms/bean/HrmLnChartDtlBean.java | 56 + .../wenrgise/hrms/bean/HrmLnChartHdrBean.java | 56 + .../wenrgise/hrms/bean/HrmLnDisDtlBean.java | 56 + .../hrms/bean/HrmLnHblIntDtlBean.java | 36 + .../wenrgise/hrms/bean/HrmLnMstDtlBean.java | 116 + .../wenrgise/hrms/bean/HrmLnMstHdrBean.java | 126 + .../wenrgise/hrms/bean/HrmLvApplnDtlBean.java | 66 + .../wenrgise/hrms/bean/HrmLvApplnHdrBean.java | 407 + .../hrms/bean/HrmLvApplnQueryDtlBean.java | 46 + .../hrms/bean/HrmLvApplnQueryHdrBean.java | 66 + .../wenrgise/hrms/bean/HrmLvCancHdrBean.java | 296 + .../hrms/bean/HrmLvCancQueryDtlBean.java | 66 + .../hrms/bean/HrmLvCancQueryHdrBean.java | 66 + .../hrms/bean/HrmLvCreditDtlBean.java | 175 + .../hrms/bean/HrmLvCreditEmpBean.java | 43 + .../hrms/bean/HrmLvCreditHdrBean.java | 126 + .../hrms/bean/HrmLvEncashHdrBean.java | 276 + .../hrms/bean/HrmLvLedgerDtlBean.java | 96 + .../hrms/bean/HrmLvLedgerHdrBean.java | 76 + .../hrms/bean/HrmLvLedgerTransDtlBean.java | 66 + .../wenrgise/hrms/bean/HrmLvMstDtlBean.java | 216 + .../wenrgise/hrms/bean/HrmLvMstHdrBean.java | 166 + .../hrms/bean/HrmMediclaimMasterDtlBean.java | 86 + .../hrms/bean/HrmMediclaimMasterHdrBean.java | 86 + .../hrms/bean/HrmMisReportDtlBean.java | 46 + .../hrms/bean/HrmMisReportHdrBean.java | 36 + .../hrms/bean/HrmMyWorkflowDtlBean.java | 76 + .../hrms/bean/HrmMyWorkflowHdrBean.java | 76 + .../hrms/bean/HrmOrgCalMstDtlBean.java | 46 + .../hrms/bean/HrmOrgCalMstHdrBean.java | 56 + .../hrms/bean/HrmOrgClassDtlBean.java | 66 + .../hrms/bean/HrmOrgClassHdrBean.java | 56 + .../hrms/bean/HrmOrgCntryMstDtlBean.java | 26 + .../hrms/bean/HrmOrgCntryMstHdrBean.java | 36 + .../hrms/bean/HrmOrgDistrictMstDtlBean.java | 26 + .../hrms/bean/HrmOrgHolCalDtlBean.java | 56 + .../hrms/bean/HrmOrgHolCalHdrBean.java | 106 + .../hrms/bean/HrmOrgHolTypeMstHdrBean.java | 66 + .../hrms/bean/HrmOrgIncrementDtlBean.java | 76 + .../hrms/bean/HrmOrgIncrementHdrBean.java | 106 + .../hrms/bean/HrmOrgLangMstDtlBean.java | 36 + .../hrms/bean/HrmOrgQualMstDtlBean.java | 46 + .../hrms/bean/HrmOrgRatingMstDtlBean.java | 46 + .../hrms/bean/HrmOrgRatingMstHdrBean.java | 56 + .../hrms/bean/HrmOrgRelationMstDtlBean.java | 36 + .../hrms/bean/HrmOrgReligionMstDtlBean.java | 16 + .../hrms/bean/HrmOrgScaleMstDtlBean.java | 36 + .../hrms/bean/HrmOrgScaleMstHdrBean.java | 86 + .../hrms/bean/HrmOrgSkillMstDtlBean.java | 46 + .../hrms/bean/HrmOrgSkillMstHdrBean.java | 36 + .../hrms/bean/HrmOrgTehsilMstDtlBean.java | 26 + .../hrms/bean/HrmOrgWorkGroupMstDtlBean.java | 46 + .../hrms/bean/HrmOrgWorkGroupMstHdrBean.java | 316 + .../hrms/bean/HrmPrmCriteriaDtlBean.java | 86 + .../hrms/bean/HrmPrmCriteriaHdrBean.java | 136 + .../hrms/bean/HrmPrmExperienceDtlBean.java | 56 + .../hrms/bean/HrmPrmExperienceHdrBean.java | 56 + .../hrms/bean/HrmPrmGenAssDtlBean.java | 116 + .../hrms/bean/HrmPrmGenAssHdrBean.java | 76 + .../hrms/bean/HrmPrmKPAFinalDtlBean.java | 46 + .../hrms/bean/HrmPrmKPAPoswiseDtlBean.java | 66 + .../hrms/bean/HrmPrmKPARatingHdrBean.java | 106 + .../hrms/bean/HrmPrmNoticeDtlDtlBean.java | 86 + .../hrms/bean/HrmPrmNoticeDtlHdrBean.java | 46 + .../hrms/bean/HrmPrmOrderHdrBean.java | 226 + .../hrms/bean/HrmPrmQualCriteriaDtlBean.java | 56 + .../hrms/bean/HrmPrmQualCriteriaHdrBean.java | 56 + .../hrms/bean/HrmPrmTestScoreDtlBean.java | 36 + .../hrms/bean/HrmPrmTestScoreHdrBean.java | 116 + .../hrms/bean/HrmPrmViewAssDtlBean.java | 236 + .../hrms/bean/HrmPrmViewAssHdrBean.java | 46 + .../hrms/bean/HrmRecAdvAttrHdrBean.java | 46 + .../bean/HrmRecAdvAttrJobDescDtlBean.java | 36 + .../hrms/bean/HrmRecAdvAttrLngReqDtlBean.java | 56 + .../bean/HrmRecAdvAttrLocVacencyDtlBean.java | 96 + .../bean/HrmRecAdvAttrQualReqDtlBean.java | 86 + .../bean/HrmRecAdvAttrSkillReqDtlBean.java | 66 + .../bean/HrmRecAdvAttrWorkExpDtlBean.java | 86 + .../hrms/bean/HrmRecAdvtMtnDtlBean.java | 166 + .../hrms/bean/HrmRecAdvtMtnHdrBean.java | 186 + .../hrms/bean/HrmRecApplnMtnAddDtlBean.java | 586 ++ .../hrms/bean/HrmRecApplnMtnEduDtlBean.java | 106 + .../hrms/bean/HrmRecApplnMtnExpDtlBean.java | 186 + .../hrms/bean/HrmRecApplnMtnHdrBean.java | 166 + .../hrms/bean/HrmRecApplnMtnLangDtlBean.java | 46 + .../hrms/bean/HrmRecApplnMtnOtherDtlBean.java | 176 + .../hrms/bean/HrmRecApplnMtnRefDtlBean.java | 46 + .../bean/HrmRecApplnMtnResultDtlBean.java | 116 + .../hrms/bean/HrmRecApplnMtnTrngDtlBean.java | 56 + .../bean/HrmRecEmpRecCreationHdrBean.java | 756 ++ .../hrms/bean/HrmRecScrutAppMtnDtlBean.java | 126 + .../hrms/bean/HrmRecScrutAppMtnHdrBean.java | 56 + .../hrms/bean/HrmRecTestCentreMstHdrBean.java | 66 + .../wenrgise/hrms/bean/HrmReportBean.java | 36 + .../hrms/bean/HrmRetireForecastHdrBean.java | 36 + .../hrms/bean/HrmRoasterEntryDtlBean.java | 116 + .../hrms/bean/HrmRoasterEntryHdrBean.java | 36 + .../hrms/bean/HrmSepApplnDtlBean.java | 136 + .../hrms/bean/HrmSepApplnHdrBean.java | 196 + .../hrms/bean/HrmSepCatMstDtlBean.java | 3 + .../hrms/bean/HrmSepCatMstHdrBean.java | 68 + .../hrms/bean/HrmSepCatMstrHdrBean.java | 48 + .../hrms/bean/HrmSepClrEmpDtlBean.java | 45 + .../hrms/bean/HrmSepClrEmpHdrBean.java | 45 + .../hrms/bean/HrmSepClrLstDtlBean.java | 46 + .../hrms/bean/HrmSepClrTmpMstDtlBean.java | 23 + .../hrms/bean/HrmSepClrTmplMstDtlBean.java | 35 + .../hrms/bean/HrmSepClrTmplMstHdrBean.java | 45 + .../hrms/bean/HrmSepOrderDtlBean.java | 176 + .../hrms/bean/HrmSepOrderHdrBean.java | 186 + .../hrms/bean/HrmSepTmplMstDtlBean.java | 3 + .../wenrgise/hrms/bean/HrmSettleDtlBean.java | 26 + .../wenrgise/hrms/bean/HrmSettleHdrBean.java | 26 + .../bean/HrmTransCnclOrderSingEmpDtlBean.java | 26 + .../bean/HrmTransCnclOrderSingEmpHdrBean.java | 186 + .../bean/HrmTransOrderSingEmpDtlBean.java | 186 + .../bean/HrmTransferApplicationHdrBean.java | 346 + .../hrms/bean/HrmTrngCalCloseHdrBean.java | 56 + .../wenrgise/hrms/bean/HrmTrngCalDtlBean.java | 306 + .../wenrgise/hrms/bean/HrmTrngCalHdrBean.java | 66 + .../hrms/bean/HrmTrngCrsBudDtlBean.java | 186 + .../hrms/bean/HrmTrngCrsBudHdrBean.java | 66 + .../hrms/bean/HrmTrngCrsMstDtlBean.java | 86 + .../hrms/bean/HrmTrngCrsMstHdrBean.java | 36 + .../hrms/bean/HrmTrngEmpAttDtlBean.java | 106 + .../hrms/bean/HrmTrngEmpAttHdrBean.java | 46 + .../hrms/bean/HrmTrngEmpFeedBackDtlBean.java | 286 + .../hrms/bean/HrmTrngEmpFeedBackHdrBean.java | 116 + .../hrms/bean/HrmTrngEmpHistDtlBean.java | 146 + .../hrms/bean/HrmTrngEmpHistHdrBean.java | 96 + .../hrms/bean/HrmTrngEmpReqDtlBean.java | 46 + .../hrms/bean/HrmTrngEmpReqHdrBean.java | 256 + .../wenrgise/hrms/bean/HrmTrngFacBean.java | 106 + .../hrms/bean/HrmTrngFacFdbkDtlBean.java | 46 + .../hrms/bean/HrmTrngFacTrngDtlBean.java | 186 + .../hrms/bean/HrmTrngFacTrngHdrBean.java | 136 + .../hrms/bean/HrmTrngInsCrsDtlbean.java | 56 + .../hrms/bean/HrmTrngInsCrsHdrBean.java | 156 + .../businessdelegate/HrmATDDptnApplBD.java | 192 + .../businessdelegate/HrmATDDptnChrgRptBD.java | 139 + .../HrmATDDptnOrderForSingleEmpBD.java | 105 + .../businessdelegate/HrmATDTransApplBD.java | 173 + .../HrmATDTransChrgRptBD.java | 144 + .../HrmATDTransCnclApplBD.java | 153 + .../HrmATDTransCnclOrderForSingleEmpBD.java | 116 + .../HrmATDTransOrderForSingleEmpBD.java | 132 + .../businessdelegate/HrmAdhocReportBD.java | 113 + .../hrms/businessdelegate/HrmAdvMstBD.java | 98 + .../hrms/businessdelegate/HrmAdvSettleBD.java | 99 + .../businessdelegate/HrmAdvSettleHeadsBD.java | 108 + .../businessdelegate/HrmAgeAnalysisBD.java | 84 + .../hrms/businessdelegate/HrmAppTempBD.java | 195 + .../businessdelegate/HrmApprisalKPABD.java | 190 + .../hrms/businessdelegate/HrmAprslBD.java | 684 ++ .../businessdelegate/HrmAprslSpcTmplBD.java | 165 + .../HrmAprslStartOrderBD.java | 101 + .../businessdelegate/HrmAprslStartRuleBD.java | 116 + .../businessdelegate/HrmAttEmpAttOutBD.java | 115 + .../businessdelegate/HrmAttEmpAttQueryBD.java | 125 + .../businessdelegate/HrmAttEmpDayOffBD.java | 116 + .../hrms/businessdelegate/HrmAttEmpInBD.java | 139 + .../businessdelegate/HrmAttEmpShiftBD.java | 118 + .../HrmAttEmployeeShiftRosterBD.java | 110 + .../businessdelegate/HrmAttShiftMstBD.java | 124 + .../HrmAttShiftRosterGenBD.java | 81 + .../HrmAttWorkGroupDayOffBD.java | 115 + .../HrmAttWorkGroupShiftBD.java | 131 + .../hrms/businessdelegate/HrmBaseBD.java | 5 + .../hrms/businessdelegate/HrmClaimMstBD.java | 128 + .../hrms/businessdelegate/HrmEmpAdvAppBD.java | 184 + .../hrms/businessdelegate/HrmEmpClaimBD.java | 153 + .../hrms/businessdelegate/HrmEmpDepDtlBD.java | 103 + .../businessdelegate/HrmEmpDiscActionBD.java | 106 + .../hrms/businessdelegate/HrmEmpPersBD.java | 422 + .../businessdelegate/HrmGenEligRuleBD.java | 126 + .../HrmGenEligRuleQueryBD.java | 123 + .../HrmGenGenerateFormulaBD.java | 74 + .../hrms/businessdelegate/HrmLnAppBD.java | 348 + .../hrms/businessdelegate/HrmLnChartBD.java | 98 + .../hrms/businessdelegate/HrmLnMstBD.java | 115 + .../hrms/businessdelegate/HrmLvApplnBD.java | 433 + .../businessdelegate/HrmLvApplnQueryBD.java | 141 + .../hrms/businessdelegate/HrmLvCancBD.java | 259 + .../businessdelegate/HrmLvCancQueryBD.java | 111 + .../hrms/businessdelegate/HrmLvCreditBD.java | 87 + .../hrms/businessdelegate/HrmLvEncashBD.java | 335 + .../hrms/businessdelegate/HrmLvLedgerBD.java | 148 + .../hrms/businessdelegate/HrmLvMstBD.java | 140 + .../HrmMediclaimMasterBD.java | 97 + .../hrms/businessdelegate/HrmMisReportBD.java | 132 + .../businessdelegate/HrmMyWorkflowBD.java | 137 + .../hrms/businessdelegate/HrmOrgCalMstBD.java | 118 + .../businessdelegate/HrmOrgClassDtlBD.java | 105 + .../businessdelegate/HrmOrgCntryMstBD.java | 127 + .../businessdelegate/HrmOrgDistMstBD.java | 105 + .../hrms/businessdelegate/HrmOrgHolCalBD.java | 130 + .../businessdelegate/HrmOrgHolTypeMstBD.java | 147 + .../businessdelegate/HrmOrgIncrementBD.java | 140 + .../businessdelegate/HrmOrgLangMstBD.java | 105 + .../businessdelegate/HrmOrgQualMstBD.java | 93 + .../businessdelegate/HrmOrgRatingMstBD.java | 107 + .../businessdelegate/HrmOrgRelationMstBD.java | 93 + .../businessdelegate/HrmOrgReligionMstBD.java | 93 + .../businessdelegate/HrmOrgScaleMstBD.java | 98 + .../businessdelegate/HrmOrgSkillMstBD.java | 105 + .../hrms/businessdelegate/HrmOrgTehMstBD.java | 105 + .../HrmOrgWorkGroupMstBD.java | 152 + .../businessdelegate/HrmPrmCriteriaBD.java | 142 + .../HrmPrmExperienceScoreBD.java | 108 + .../hrms/businessdelegate/HrmPrmGenAssBD.java | 74 + .../businessdelegate/HrmPrmKPARatingBD.java | 138 + .../businessdelegate/HrmPrmNoticeDtlBD.java | 136 + .../hrms/businessdelegate/HrmPrmOrderBD.java | 116 + .../HrmPrmQualCriteriaBD.java | 110 + .../businessdelegate/HrmPrmTestScoreBD.java | 123 + .../businessdelegate/HrmPrmViewAssBD.java | 132 + .../businessdelegate/HrmRecAdvAttrBD.java | 155 + .../businessdelegate/HrmRecAdvtMtnBD.java | 133 + .../businessdelegate/HrmRecApplnMtnBD.java | 392 + .../HrmRecEmpRecCreationBD.java | 147 + .../businessdelegate/HrmRecScrutAppMntBD.java | 97 + .../HrmRecTestCentreMstBD.java | 116 + .../businessdelegate/HrmRetireForecastBD.java | 118 + .../businessdelegate/HrmRoasterEntryBD.java | 130 + .../hrms/businessdelegate/HrmSepApplnBD.java | 148 + .../hrms/businessdelegate/HrmSepCatMstBD.java | 84 + .../hrms/businessdelegate/HrmSepClrEmpBD.java | 124 + .../hrms/businessdelegate/HrmSepClrLstBD.java | 100 + .../businessdelegate/HrmSepClrTmplMstBD.java | 98 + .../hrms/businessdelegate/HrmSepOrderBD.java | 131 + .../hrms/businessdelegate/HrmSettleBD.java | 95 + .../hrms/businessdelegate/HrmTrngCalBD.java | 98 + .../businessdelegate/HrmTrngCalCloseBD.java | 107 + .../businessdelegate/HrmTrngCrsBudBD.java | 110 + .../businessdelegate/HrmTrngCrsMstBD.java | 98 + .../businessdelegate/HrmTrngEmpAttBD.java | 118 + .../HrmTrngEmpFeedBackBD.java | 124 + .../businessdelegate/HrmTrngEmpHistBD.java | 107 + .../businessdelegate/HrmTrngEmpReqBD.java | 276 + .../hrms/businessdelegate/HrmTrngFacBD.java | 141 + .../businessdelegate/HrmTrngFacTrngBD.java | 128 + .../businessdelegate/HrmTrngInsCrsBD.java | 108 + .../wenrgise/hrms/ejb/facade/HrmFacade.java | 730 ++ .../hrms/ejb/facade/HrmFacadeHome.java | 10 + .../hrms/ejb/facade/HrmSecondFacade.java | 837 ++ .../hrms/ejb/facade/HrmSecondFacadeHome.java | 10 + .../hrms/ejb/facade/HrmThirdFacade.java | 372 + .../hrms/ejb/facade/HrmThirdFacadeHome.java | 10 + .../hrms/helper/WorkFlowSimulator.java | 52 + .../wenrgise/hrms/vo/HrmATDDptnApplQVO.java | 26 + .../hrms/vo/HrmATDDptnChrgRptQVO.java | 26 + .../hrms/vo/HrmATDDptnOrderSingleEmpQVO.java | 46 + .../wenrgise/hrms/vo/HrmATDTransApplQVO.java | 36 + .../hrms/vo/HrmATDTransChrgRptQVO.java | 36 + .../hrms/vo/HrmATDTransCnclApplQVO.java | 36 + .../vo/HrmATDTransCnclOrderSingleEmpQVO.java | 46 + .../hrms/vo/HrmATDTransSingleEmpQVO.java | 56 + .../wenrgise/hrms/vo/HrmAdhocReportQVO.java | 36 + .../wenrgise/hrms/vo/HrmAdvMstQueryVO.java | 26 + .../hrms/vo/HrmAdvSettleHeadsQVO.java | 36 + .../wenrgise/hrms/vo/HrmAdvSettleQVO.java | 76 + .../wenrgise/hrms/vo/HrmAppTempQueryVO.java | 26 + .../wenrgise/hrms/vo/HrmAppraisalKPAQVO.java | 26 + .../classes/wenrgise/hrms/vo/HrmAprslQVO.java | 66 + .../wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java | 16 + .../hrms/vo/HrmAprslStartOrderQVO.java | 26 + .../hrms/vo/HrmAprslStartRuleQVO.java | 66 + .../wenrgise/hrms/vo/HrmAttEmpAttInQVO.java | 16 + .../wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java | 16 + .../hrms/vo/HrmAttEmpAttQueryQVO.java | 36 + .../wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java | 56 + .../wenrgise/hrms/vo/HrmAttEmpShiftQVO.java | 46 + .../hrms/vo/HrmAttEmpShiftRosterQVO.java | 86 + .../wenrgise/hrms/vo/HrmAttShiftMstQVO.java | 16 + .../hrms/vo/HrmAttShiftRosterGenQVO.java | 16 + .../hrms/vo/HrmAttWorkGroupDayOffQVO.java | 66 + .../hrms/vo/HrmAttWorkGroupShiftQVO.java | 86 + .../wenrgise/hrms/vo/HrmClaimMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java | 66 + .../wenrgise/hrms/vo/HrmEmpClaimQVO.java | 86 + .../wenrgise/hrms/vo/HrmEmpDepDtlQVO.java | 16 + .../wenrgise/hrms/vo/HrmEmpDiscActionQVO.java | 26 + .../wenrgise/hrms/vo/HrmEmpPersQVO.java | 26 + .../wenrgise/hrms/vo/HrmGenEligRuleQVO.java | 26 + .../hrms/vo/HrmGenEligRuleQueryQVO.java | 16 + .../classes/wenrgise/hrms/vo/HrmLnAppQVO.java | 26 + .../wenrgise/hrms/vo/HrmLnChartQVO.java | 16 + .../classes/wenrgise/hrms/vo/HrmLnMstQVO.java | 46 + .../wenrgise/hrms/vo/HrmLvApplnQVO.java | 76 + .../wenrgise/hrms/vo/HrmLvApplnQueryQVO.java | 66 + .../wenrgise/hrms/vo/HrmLvCancQVO.java | 46 + .../wenrgise/hrms/vo/HrmLvCancQueryQVO.java | 86 + .../wenrgise/hrms/vo/HrmLvEncashQVO.java | 46 + .../wenrgise/hrms/vo/HrmLvLedgerQVO.java | 76 + .../classes/wenrgise/hrms/vo/HrmLvMstQVO.java | 46 + .../hrms/vo/HrmMediclaimMasterQVO.java | 106 + .../wenrgise/hrms/vo/HrmMisreportQVO.java | 16 + .../wenrgise/hrms/vo/HrmMyWorkflowQVO.java | 46 + .../wenrgise/hrms/vo/HrmOrgCalMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmOrgClassDtlQVO.java | 26 + .../wenrgise/hrms/vo/HrmOrgCntryMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmOrgHolCalQVO.java | 66 + .../wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmOrgIncrementQVO.java | 36 + .../wenrgise/hrms/vo/HrmOrgRatingMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmOrgScaleMstQVO.java | 26 + .../wenrgise/hrms/vo/HrmOrgSkillMstQVO.java | 16 + .../hrms/vo/HrmOrgWorkGroupMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmPrmCriteriaQVO.java | 36 + .../hrms/vo/HrmPrmExperienceScoreQVO.java | 16 + .../wenrgise/hrms/vo/HrmPrmGenAssQVO.java | 46 + .../wenrgise/hrms/vo/HrmPrmKPARatingQVO.java | 26 + .../wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java | 16 + .../wenrgise/hrms/vo/HrmPrmOrderQVO.java | 26 + .../hrms/vo/HrmPrmQualCriteriaQVO.java | 16 + .../wenrgise/hrms/vo/HrmPrmTestScoreQVO.java | 26 + .../wenrgise/hrms/vo/HrmPrmViewAssQVO.java | 36 + .../wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java | 6 + .../wenrgise/hrms/vo/HrmRecApplnMtnQVO.java | 36 + .../hrms/vo/HrmRecEmpRecCreationQVO.java | 16 + .../hrms/vo/HrmRecScrutAppMntQVO.java | 16 + .../hrms/vo/HrmRecTestCentreMstQVO.java | 16 + .../hrms/vo/HrmRetireForecastQVO.java | 26 + .../wenrgise/hrms/vo/HrmRoasterEntryQVO.java | 16 + .../wenrgise/hrms/vo/HrmSepApplnQVO.java | 36 + .../wenrgise/hrms/vo/HrmSepCatMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmSepClrEmpQVO.java | 45 + .../wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java | 15 + .../wenrgise/hrms/vo/HrmSepOrderQVO.java | 36 + .../wenrgise/hrms/vo/HrmSettleQueryVO.java | 46 + .../wenrgise/hrms/vo/HrmTrngCalCloseQVO.java | 16 + .../wenrgise/hrms/vo/HrmTrngCalQVO.java | 56 + .../wenrgise/hrms/vo/HrmTrngCrsBudQVO.java | 26 + .../wenrgise/hrms/vo/HrmTrngCrsMstQVO.java | 16 + .../wenrgise/hrms/vo/HrmTrngEmpAttQVO.java | 26 + .../wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java | 16 + .../wenrgise/hrms/vo/HrmTrngEmpHistQVO.java | 36 + .../wenrgise/hrms/vo/HrmTrngEmpReqQVO.java | 26 + .../wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java | 6 + .../wenrgise/hrms/vo/HrmTrngFacQVO.java | 36 + .../wenrgise/hrms/vo/HrmTrngFacTrngQVO.java | 86 + .../wenrgise/hrms/vo/HrmTrngInsCrsQVO.java | 26 + .../hrms/webtier/action/AddAction.java | 175 + .../hrms/webtier/action/BaseAction.java | 680 ++ .../hrms/webtier/action/DecrAction.java | 64 + .../hrms/webtier/action/GetTabAction.java | 140 + .../webtier/action/HrmAdhocReportAction.java | 55 + .../webtier/action/HrmGenEligRuleAction.java | 189 + .../webtier/action/HrmGenLoginAction.java | 101 + .../hrms/webtier/action/HrmGenWflAction.java | 139 + .../hrms/webtier/action/HrmLvApplAction.java | 52 + .../action/HrmTrngCalCloseCalCloseAction.java | 24 + .../webtier/action/ReportViewerAction.java | 110 + .../webtier/action/SaveDetailPageAction.java | 129 + .../hrms/webtier/form/HrmATDDptnApplForm.java | 506 + .../webtier/form/HrmATDDptnChrgRptForm.java | 486 + .../form/HrmATDDptnOrderForSingleEmpForm.java | 686 ++ .../webtier/form/HrmATDTransApplForm.java | 736 ++ .../webtier/form/HrmATDTransChrgRptForm.java | 586 ++ .../webtier/form/HrmATDTransCnclApplForm.java | 696 ++ .../HrmATDTransCnclOrderSingleEmpForm.java | 568 ++ .../HrmATDTransOrderForSingleEmpForm.java | 706 ++ .../webtier/form/HrmAcademicQualRepForm.java | 25 + .../hrms/webtier/form/HrmAdhocReportForm.java | 306 + .../hrms/webtier/form/HrmAdvApplnForm.java | 576 ++ .../hrms/webtier/form/HrmAdvMstForm.java | 497 + .../hrms/webtier/form/HrmAdvSettleForm.java | 416 + .../webtier/form/HrmAdvSettleHeadsForm.java | 107 + .../hrms/webtier/form/HrmAgeAnalysisForm.java | 25 + .../webtier/form/HrmAppraisalKPAForm.java | 273 + .../form/HrmAppraisalTemplateForm.java | 377 + .../hrms/webtier/form/HrmAprslForm.java | 1467 +++ .../webtier/form/HrmAprslSpcTmplForm.java | 816 ++ .../webtier/form/HrmAprslStartOrderForm.java | 165 + .../webtier/form/HrmAprslStartRuleForm.java | 356 + .../hrms/webtier/form/HrmAttEmpAttInForm.java | 296 + .../webtier/form/HrmAttEmpAttOutForm.java | 306 + .../webtier/form/HrmAttEmpAttQueryForm.java | 197 + .../webtier/form/HrmAttEmpDayOffForm.java | 367 + .../hrms/webtier/form/HrmAttEmpShiftForm.java | 307 + .../form/HrmAttEmployeeShiftDetailForm.java | 56 + .../form/HrmAttEmployeeShiftRosterForm.java | 287 + .../webtier/form/HrmAttShiftMasterForm.java | 246 + .../form/HrmAttShiftRosterGenForm.java | 196 + .../form/HrmAttWorkGroupDayOffForm.java | 307 + .../form/HrmAttWorkGroupShiftForm.java | 397 + .../hrms/webtier/form/HrmBaseForm.java | 76 + .../hrms/webtier/form/HrmClaimMstForm.java | 327 + .../hrms/webtier/form/HrmEmpClaimForm.java | 437 + .../hrms/webtier/form/HrmEmpDepDtlForm.java | 277 + .../webtier/form/HrmEmpDiscActionForm.java | 473 + .../hrms/webtier/form/HrmEmpPersDtlForm.java | 4623 +++++++++ .../hrms/webtier/form/HrmGenEligRuleForm.java | 317 + .../webtier/form/HrmGenEligRuleQueryForm.java | 67 + .../webtier/form/HrmGenLoginActionForm.java | 25 + .../hrms/webtier/form/HrmLnAppForm.java | 1242 +++ .../hrms/webtier/form/HrmLnChartForm.java | 347 + .../hrms/webtier/form/HrmLnMstForm.java | 547 + .../hrms/webtier/form/HrmLvApplnForm.java | 927 ++ .../webtier/form/HrmLvApplnQueryForm.java | 427 + .../hrms/webtier/form/HrmLvCancForm.java | 716 ++ .../hrms/webtier/form/HrmLvCancQueryForm.java | 387 + .../hrms/webtier/form/HrmLvCreditForm.java | 185 + .../hrms/webtier/form/HrmLvEncashForm.java | 455 + .../hrms/webtier/form/HrmLvLedgerForm.java | 577 ++ .../hrms/webtier/form/HrmLvMstForm.java | 807 ++ .../webtier/form/HrmMediclaimMasterForm.java | 237 + .../hrms/webtier/form/HrmMisReportForm.java | 106 + .../hrms/webtier/form/HrmMyWorkflowForm.java | 196 + .../hrms/webtier/form/HrmOrgCalMstForm.java | 227 + .../hrms/webtier/form/HrmOrgClassDtlForm.java | 257 + .../hrms/webtier/form/HrmOrgCntryMstForm.java | 177 + .../hrms/webtier/form/HrmOrgDistMstForm.java | 87 + .../hrms/webtier/form/HrmOrgHolCalForm.java | 507 + .../webtier/form/HrmOrgHolTypeMstForm.java | 146 + .../webtier/form/HrmOrgIncrementForm.java | 276 + .../hrms/webtier/form/HrmOrgLangMstForm.java | 109 + .../hrms/webtier/form/HrmOrgQualMstForm.java | 127 + .../webtier/form/HrmOrgRatingMstForm.java | 237 + .../webtier/form/HrmOrgRelationMstForm.java | 107 + .../webtier/form/HrmOrgReligionMstForm.java | 67 + .../hrms/webtier/form/HrmOrgScaleMstForm.java | 267 + .../hrms/webtier/form/HrmOrgSkillMstForm.java | 197 + .../hrms/webtier/form/HrmOrgTehMstForm.java | 87 + .../webtier/form/HrmOrgWorkGroupMstForm.java | 796 ++ .../hrms/webtier/form/HrmPrmCriteriaForm.java | 317 + .../form/HrmPrmExperienceScoreForm.java | 237 + .../hrms/webtier/form/HrmPrmGenAssForm.java | 176 + .../webtier/form/HrmPrmKPARatingForm.java | 527 + .../webtier/form/HrmPrmNoticeDetailForm.java | 297 + .../hrms/webtier/form/HrmPrmOrderForm.java | 365 + .../webtier/form/HrmPrmQualCriteriaForm.java | 167 + .../webtier/form/HrmPrmTestScoreForm.java | 307 + .../hrms/webtier/form/HrmPrmViewAssForm.java | 656 ++ .../hrms/webtier/form/HrmRecAdvAttrForm.java | 547 + .../hrms/webtier/form/HrmRecAdvtMtnForm.java | 817 ++ .../hrms/webtier/form/HrmRecApplnMtnForm.java | 3000 ++++++ .../form/HrmRecEmpRecCreationForm.java | 1236 +++ .../webtier/form/HrmRecScrutAppMtnForm.java | 587 ++ .../webtier/form/HrmRecTestCentreMstForm.java | 156 + .../webtier/form/HrmRetireForecastForm.java | 125 + .../webtier/form/HrmRoasterEntryForm.java | 267 + .../hrms/webtier/form/HrmSepApplnForm.java | 356 + .../hrms/webtier/form/HrmSepCatMstForm.java | 156 + .../hrms/webtier/form/HrmSepCatMstrForm.java | 203 + .../hrms/webtier/form/HrmSepClrEmpForm.java | 147 + .../hrms/webtier/form/HrmSepClrLstForm.java | 87 + .../webtier/form/HrmSepClrTmplMstForm.java | 117 + .../hrms/webtier/form/HrmSepOrderForm.java | 316 + .../webtier/form/HrmSettlementHeadsForm.java | 137 + .../hrms/webtier/form/HrmTrngBudgetForm.java | 357 + .../webtier/form/HrmTrngCalCloseForm.java | 166 + .../hrms/webtier/form/HrmTrngCalForm.java | 547 + .../hrms/webtier/form/HrmTrngCrsMstForm.java | 227 + .../hrms/webtier/form/HrmTrngEmpAttForm.java | 257 + .../webtier/form/HrmTrngEmpFeedBackForm.java | 737 ++ .../hrms/webtier/form/HrmTrngEmpHistForm.java | 427 + .../hrms/webtier/form/HrmTrngEmpReqForm.java | 677 ++ .../form/HrmTrngFacFeedBackDtlForm.java | 177 + .../hrms/webtier/form/HrmTrngFacMstForm.java | 256 + .../webtier/form/HrmTrngFacTrngDtlForm.java | 427 + .../form/HrmTrngInstCourseDtlForm.java | 407 + .../hrms/webtier/form/JasperReportForm.java | 45 + .../webtier/form/RepAllIndiaManpowerForm.java | 25 + .../webtier/form/RepCessationListForm.java | 65 + .../webtier/form/RepConfidentialFileForm.java | 25 + .../webtier/form/RepConfirmationDueForm.java | 45 + .../webtier/form/RepCostToCompanyForm.java | 25 + .../webtier/form/RepDistnOfManpowerForm.java | 55 + .../webtier/form/RepGrossSalExecForm.java | 45 + .../hrms/webtier/form/RepHistOfEmpForm.java | 45 + .../webtier/form/RepImpactFinYearForm.java | 25 + .../webtier/form/RepJoiningStatusForm.java | 25 + .../webtier/form/RepMTExecDetailsForm.java | 25 + .../form/RepManpowerMediclaimForm.java | 25 + .../form/RepOfficersRatedPoorForm.java | 25 + .../form/RepPerformanceAppraisalForm.java | 25 + .../webtier/form/RepPromotionListForm.java | 75 + .../webtier/form/RepQualAllIndiaEmpForm.java | 25 + .../form/RepRatingVisAVisAwardForm.java | 25 + .../webtier/form/RepRecrCessStatusForm.java | 95 + .../webtier/form/RepRecrVisAVisSepForm.java | 85 + .../webtier/form/RepRecruitmentListForm.java | 95 + .../form/RepRetirementDetailsForm.java | 95 + .../webtier/form/RepStaffingListEmpForm.java | 65 + .../form/RepStatusOfDiscCasesForm.java | 25 + .../webtier/form/RepTrainingDetailsForm.java | 115 + .../hrms/webtier/form/ReportInputForm.java | 35 + .../wenrgise/report/excel/ExcelReport.java | 98 + .../report/excel/ExcelReportInformation.java | 88 + .../report/excel/ExcelReportServlet.java | 65 + .../wenrgise/report/excel/Heading.java | 20 + .../workflow/bean/WflDocMstAttrDtlBean.java | 56 + .../bean/WflDocMstConditionsDtlBean.java | 26 + .../workflow/bean/WflDocMstHdrBean.java | 46 + .../workflow/bean/WflDocTypeDtlBean.java | 36 + .../workflow/bean/WflDtlDocTypeDtlBean.java | 76 + .../workflow/bean/WflDtlDocTypeHdrBean.java | 3 + .../workflow/bean/WflWorkListInfoBean.java | 96 + .../wenrgise/workflow/core/WflConstants.java | 91 + .../workflow/service/WorkFlowService.java | 9 + .../service/WorkFlowServiceFactory.java | 12 + .../wenrgise/workflow/vo/WflDocMstQVO.java | 6 + .../webtier/action/WflWorkFlowCondAction.java | 168 + .../workflow/webtier/form/WFLBaseForm.java | 35 + .../webtier/form/WFLDocAttrDtlForm.java | 166 + .../webtier/form/WFLDtlDocTypeForm.java | 206 + .../webtier/form/WflConditionForm.java | 467 + hrmsWeb/WEB-INF/enrgise-html.tld | 1612 +++ .../WEB-INF/lib/commons-beanutils.jar.src.zip | Bin 0 -> 190810 bytes .../lib/commons-collections.jar.src.zip | Bin 0 -> 246235 bytes .../WEB-INF/lib/commons-digester.jar.src.zip | Bin 0 -> 144320 bytes .../lib/commons-fileupload.jar.src.zip | Bin 0 -> 13342 bytes hrmsWeb/WEB-INF/lib/commons-lang.jar.src.zip | Bin 0 -> 33822 bytes .../WEB-INF/lib/commons-logging.jar.src.zip | Bin 0 -> 18924 bytes .../WEB-INF/lib/commons-validator.jar.src.zip | Bin 0 -> 30269 bytes .../WEB-INF/lib/enrgisecommons.jar.src.zip | Bin 0 -> 313593 bytes hrmsWeb/WEB-INF/lib/jakarta-oro.jar.src.zip | Bin 0 -> 193075 bytes hrmsWeb/WEB-INF/lib/jaxb-api.jar.src.zip | Bin 0 -> 30959 bytes hrmsWeb/WEB-INF/lib/struts.jar.src.zip | Bin 0 -> 308909 bytes .../WEB-INF/lib/workflowclient.jar.src.zip | Bin 0 -> 987857 bytes hrmsWeb/WEB-INF/lib/xercesImpl.jar.src.zip | Bin 0 -> 706882 bytes hrmsWeb/WEB-INF/struts-bean.tld | 382 + hrmsWeb/WEB-INF/struts-config.xml | 8571 ++++++++++++++++ hrmsWeb/WEB-INF/struts-html.tld | 2972 ++++++ hrmsWeb/WEB-INF/struts-logic.tld | 642 ++ hrmsWeb/WEB-INF/struts-nested.tld | 2870 ++++++ hrmsWeb/WEB-INF/struts-template.tld | 73 + hrmsWeb/WEB-INF/struts-tiles.tld | 344 + hrmsWeb/WEB-INF/web.xml | 73 + hrmsWeb/desktop.ini | 6 + hrmsWeb/hrms/helpfile/HRMHrmATDTransAppl.html | 5 + .../hrms/helpfile/HRMHrmATDTransChrgRpt.html | 7 + .../hrms/helpfile/HRMHrmATDTransCnclAppl.html | 5 + .../HRMHrmATDTransCnclOrderForSingleEmp.html | 5 + .../HRMHrmATDTransOrderForSingleEmp.html | 5 + .../hrms/helpfile/HRMHrmAdvanceMaster.html | 7 + hrmsWeb/hrms/helpfile/HRMHrmAppraisalKPA.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmAprslEmpDtls.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmAprslGoals.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmAprslKPA.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmpl.html | 5 + .../helpfile/HRMHrmAprslSpcTmplEmpElig.html | 5 + .../helpfile/HRMHrmAprslSpcTmplGoals.html | 5 + .../hrms/helpfile/HRMHrmAprslStartOrder.html | 5 + .../hrms/helpfile/HRMHrmAprslStartRule.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmAprslTrngReq.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttIn.html | 11 + hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttOut.html | 5 + .../hrms/helpfile/HRMHrmAttEmpAttQuery.html | 9 + hrmsWeb/hrms/helpfile/HRMHrmAttShiftMst.html | 8 + hrmsWeb/hrms/helpfile/HRMHrmClaimMst.html | 9 + hrmsWeb/hrms/helpfile/HRMHrmEmpAdvance.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmEmpClaim.html | 5 + .../hrms/helpfile/HRMHrmEmpDiscAction.html | 5 + .../helpfile/HRMHrmEmpLeaveEncashment.html | 5 + .../hrms/helpfile/HRMHrmEmpPersAddDtls.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmEmpPersDtls.html | 5 + .../hrms/helpfile/HRMHrmEmpPersEduDtls.html | 5 + .../hrms/helpfile/HRMHrmEmpPersEmpHst.html | 5 + .../hrms/helpfile/HRMHrmEmpPersJoinInf.html | 5 + .../hrms/helpfile/HRMHrmEmpPersPFDtls.html | 5 + .../hrms/helpfile/HRMHrmEmpPersPriorExp.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmEmpPersRef.html | 5 + .../hrms/helpfile/HRMHrmEmpPersTrngDtls.html | 5 + ...mEmployeeLeaveCancellationBatchScreen.html | 5 + ...mEmployeeLeaveCancellationQueryScreen.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmGenEligRule.html | 5 + .../hrms/helpfile/HRMHrmGenEligRuleQuery.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmLeaveMaster.html | 7 + hrmsWeb/hrms/helpfile/HRMHrmLnApp.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmLnChart.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmLnMst.html | 9 + hrmsWeb/hrms/helpfile/HRMHrmLvAppln.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgCalMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgClassDtl.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgCntryMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgHolCal.html | 5 + .../hrms/helpfile/HRMHrmOrgHolTypeMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgLangMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgQualMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgRatingMst.html | 8 + .../hrms/helpfile/HRMHrmOrgRelationMst.html | 5 + .../hrms/helpfile/HRMHrmOrgReligionMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgScaleMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmOrgSkillMst.html | 5 + .../hrms/helpfile/HRMHrmOrgWorkGroupMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmPrmOrder.html | 5 + .../helpfile/HRMHrmRecAdvAttrLngReqDtl.html | 5 + .../HRMHrmRecAdvAttrLocVacencyDtl.html | 5 + .../helpfile/HRMHrmRecAdvAttrQualReqDt.html | 5 + .../helpfile/HRMHrmRecAdvAttrSkillReqDtl.html | 5 + .../helpfile/HRMHrmRecAdvAttrWorkExpDtl.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmRecAdvtMtn.html | 5 + .../helpfile/HRMHrmRecApplnMtnAddDtl.html | 5 + .../helpfile/HRMHrmRecApplnMtnEduDtl.html | 5 + .../helpfile/HRMHrmRecApplnMtnExpDtl.html | 5 + .../helpfile/HRMHrmRecApplnMtnLangDtl.html | 5 + .../hrms/helpfile/HRMHrmRecApplnMtnRef.html | 5 + .../helpfile/HRMHrmRecApplnMtnResultDtl.html | 5 + .../helpfile/HRMHrmRecApplnMtnTrngDtls.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmSepCatMst.html | 10 + hrmsWeb/hrms/helpfile/HRMHrmSepClrEmp.html | 9 + hrmsWeb/hrms/helpfile/HRMHrmSepClrLst.html | 5 + .../hrms/helpfile/HRMHrmSepClrTmplMst.html | 7 + hrmsWeb/hrms/helpfile/HRMHrmSepOrder.html | 7 + .../hrms/helpfile/HRMHrmSeparationAppln.html | 5 + .../hrms/helpfile/HRMHrmTestCentreMaster.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmTrngBudget.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmTrngCal.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmTrngCrsMst.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmTrngEmpAtt.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmTrngEmpHist.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmTrngEmpReq.html | 5 + .../hrms/helpfile/HRMHrmTrngFacFdbkDtl.html | 5 + hrmsWeb/hrms/helpfile/HRMHrmTrngFacMst.html | 5 + .../hrms/helpfile/HRMHrmTrngFacTrngDtl.html | 5 + .../helpfile/HRMHrmTrngInstCourseDtl.html | 5 + hrmsWeb/hrms/helpfile/TOC.html | 281 + hrmsWeb/hrms/includes/ENRGISE.css | 429 + hrmsWeb/hrms/includes/ENRGISE.js | 893 ++ hrmsWeb/hrms/includes/Menu_addins.js | 262 + hrmsWeb/hrms/includes/Menu_func.js | 441 + hrmsWeb/hrms/includes/Menucss.css | 28 + hrmsWeb/hrms/includes/Menujs.js | 100 + hrmsWeb/hrms/includes/calendar-blue.css | 232 + hrmsWeb/hrms/includes/calendar-en.js | 127 + hrmsWeb/hrms/includes/calendar-setup.js | 225 + hrmsWeb/hrms/includes/calendar.js | 1808 ++++ hrmsWeb/hrms/includes/images/Balesh_Photo.jpg | Bin 0 -> 18465 bytes hrmsWeb/hrms/includes/images/Brand.jpg | Bin 0 -> 7357 bytes hrmsWeb/hrms/includes/images/Brand_Final.gif | Bin 0 -> 19137 bytes .../hrms/includes/images/Brand_Final_10.gif | Bin 0 -> 5970 bytes .../hrms/includes/images/Brand_Final_7.gif | Bin 0 -> 16969 bytes .../hrms/includes/images/Brand_Final_TCS.gif | Bin 0 -> 17369 bytes .../includes/images/Brand_Final_peerless.gif | Bin 0 -> 4266 bytes hrmsWeb/hrms/includes/images/LaunchPad.jpg | Bin 0 -> 41041 bytes hrmsWeb/hrms/includes/images/LaunchPad1.jpg | Bin 0 -> 89221 bytes .../hrms/includes/images/Launchpad_second.bmp | Bin 0 -> 1454694 bytes .../hrms/includes/images/Launchpad_third.bmp | Bin 0 -> 1454694 bytes hrmsWeb/hrms/includes/images/Login.jpg | Bin 0 -> 50163 bytes hrmsWeb/hrms/includes/images/Navigator.jpg | Bin 0 -> 12519 bytes hrmsWeb/hrms/includes/images/Thumbs.db | Bin 0 -> 239104 bytes hrmsWeb/hrms/includes/images/alert.jpg | Bin 0 -> 817 bytes hrmsWeb/hrms/includes/images/blueline.GIF | Bin 0 -> 846 bytes hrmsWeb/hrms/includes/images/bullet.gif | Bin 0 -> 834 bytes .../includes/images/butn_AssetManagement.jpg | Bin 0 -> 2279 bytes .../images/butn_AssetManagement_act.jpg | Bin 0 -> 5018 bytes .../images/butn_BillingAndCollection.jpg | Bin 0 -> 2473 bytes .../images/butn_BillingAndCollection_act.jpg | Bin 0 -> 6104 bytes .../images/butn_BillingAndCollection_dis.jpg | Bin 0 -> 5168 bytes .../includes/images/butn_ExitLaunchPad.jpg | Bin 0 -> 1466 bytes .../includes/images/butn_GeneralLedger.jpg | Bin 0 -> 2172 bytes .../images/butn_GeneralLedger_act.jpg | Bin 0 -> 5638 bytes .../images/butn_GeneralLedger_dis.jpg | Bin 0 -> 4856 bytes .../images/butn_HumanResourceManagement.jpg | Bin 0 -> 2426 bytes .../butn_HumanResourceManagement_act.jpg | Bin 0 -> 7956 bytes .../butn_HumanResourceManagement_dis.jpg | Bin 0 -> 6025 bytes .../images/butn_InventoryAccounting.jpg | Bin 0 -> 2109 bytes .../images/butn_InventoryAccounting_act.jpg | Bin 0 -> 5904 bytes .../images/butn_InventoryAccounting_dis.jpg | Bin 0 -> 5354 bytes .../images/butn_InventoryManagement.jpg | Bin 0 -> 2509 bytes .../images/butn_InventoryManagement_act.jpg | Bin 0 -> 6079 bytes .../images/butn_InventoryManagement_dis.jpg | Bin 0 -> 5224 bytes .../images/butn_OperationAndMaintainance.jpg | Bin 0 -> 2846 bytes .../butn_OperationAndMaintainance_act.jpg | Bin 0 -> 7217 bytes .../butn_OperationAndMaintainance_dis.jpg | Bin 0 -> 5824 bytes .../images/butn_OperationAndManagement.jpg | Bin 0 -> 2846 bytes .../images/butn_PayrollAccounting.jpg | Bin 0 -> 2319 bytes .../images/butn_PayrollAccounting_act.jpg | Bin 0 -> 5662 bytes .../images/butn_PayrollAccounting_dis.jpg | Bin 0 -> 5022 bytes .../butn_ProblemTrackingAndMaintainance.jpg | Bin 0 -> 2833 bytes .../images/butn_PurchaseManagement.jpg | Bin 0 -> 2520 bytes .../images/butn_PurchaseManagement_act.jpg | Bin 0 -> 6887 bytes .../images/butn_PurchaseManagement_dis.jpg | Bin 0 -> 5360 bytes .../images/butn_SystemAdministration.jpg | Bin 0 -> 2503 bytes .../images/butn_SystemAdministration_act.jpg | Bin 0 -> 7119 bytes .../images/butn_SystemAdministration_dis.jpg | Bin 0 -> 5126 bytes .../hrms/includes/images/butn_dtl_next.jpg | Bin 0 -> 3064 bytes .../includes/images/butn_dtl_next_act.jpg | Bin 0 -> 3115 bytes .../includes/images/butn_dtl_next_dis.jpg | Bin 0 -> 2749 bytes .../hrms/includes/images/butn_dtl_prev.jpg | Bin 0 -> 3043 bytes .../includes/images/butn_dtl_prev_act.jpg | Bin 0 -> 3100 bytes .../includes/images/butn_dtl_prev_dis.jpg | Bin 0 -> 2739 bytes hrmsWeb/hrms/includes/images/butn_first.jpg | Bin 0 -> 2813 bytes .../hrms/includes/images/butn_first_act.jpg | Bin 0 -> 2876 bytes .../hrms/includes/images/butn_first_dis.jpg | Bin 0 -> 2493 bytes hrmsWeb/hrms/includes/images/butn_last.jpg | Bin 0 -> 2789 bytes .../hrms/includes/images/butn_last_act.jpg | Bin 0 -> 2862 bytes .../hrms/includes/images/butn_last_dis.jpg | Bin 0 -> 2475 bytes hrmsWeb/hrms/includes/images/butn_lov.gif | Bin 0 -> 1124 bytes hrmsWeb/hrms/includes/images/butn_next.jpg | Bin 0 -> 3016 bytes .../hrms/includes/images/butn_next_act.jpg | Bin 0 -> 3079 bytes .../hrms/includes/images/butn_next_dis.jpg | Bin 0 -> 2664 bytes hrmsWeb/hrms/includes/images/butn_prev.jpg | Bin 0 -> 2992 bytes .../hrms/includes/images/butn_prev_act.jpg | Bin 0 -> 3035 bytes .../hrms/includes/images/butn_prev_dis.jpg | Bin 0 -> 2682 bytes hrmsWeb/hrms/includes/images/cal.gif | Bin 0 -> 127 bytes hrmsWeb/hrms/includes/images/cal_act.gif | Bin 0 -> 127 bytes hrmsWeb/hrms/includes/images/cal_dis.gif | Bin 0 -> 1091 bytes hrmsWeb/hrms/includes/images/cross.jpg | Bin 0 -> 883 bytes hrmsWeb/hrms/includes/images/delete.jpg | Bin 0 -> 3064 bytes hrmsWeb/hrms/includes/images/delete_act.jpg | Bin 0 -> 3058 bytes hrmsWeb/hrms/includes/images/delete_dis.jpg | Bin 0 -> 2661 bytes hrmsWeb/hrms/includes/images/enrgise.jpg | Bin 0 -> 3124 bytes hrmsWeb/hrms/includes/images/execute.jpg | Bin 0 -> 3022 bytes hrmsWeb/hrms/includes/images/execute_act.jpg | Bin 0 -> 3003 bytes hrmsWeb/hrms/includes/images/execute_dis.jpg | Bin 0 -> 2634 bytes hrmsWeb/hrms/includes/images/execute_undo.jpg | Bin 0 -> 3352 bytes .../hrms/includes/images/execute_undo_act.jpg | Bin 0 -> 3228 bytes .../hrms/includes/images/execute_undo_dis.jpg | Bin 0 -> 2786 bytes hrmsWeb/hrms/includes/images/exit.jpg | Bin 0 -> 2971 bytes hrmsWeb/hrms/includes/images/exit_act.jpg | Bin 0 -> 3072 bytes hrmsWeb/hrms/includes/images/formtab_b.gif | Bin 0 -> 89 bytes .../hrms/includes/images/formtab_b_dis.gif | Bin 0 -> 244 bytes hrmsWeb/hrms/includes/images/formtab_lb.gif | Bin 0 -> 84 bytes .../hrms/includes/images/formtab_lb_dis.gif | Bin 0 -> 244 bytes hrmsWeb/hrms/includes/images/formtab_r.gif | Bin 0 -> 89 bytes .../hrms/includes/images/formtab_r_dis.gif | Bin 0 -> 244 bytes hrmsWeb/hrms/includes/images/go.jpg | Bin 0 -> 2825 bytes hrmsWeb/hrms/includes/images/go_act.jpg | Bin 0 -> 2825 bytes hrmsWeb/hrms/includes/images/go_dis.jpg | Bin 0 -> 2825 bytes hrmsWeb/hrms/includes/images/go_dtl.jpg | Bin 0 -> 2870 bytes hrmsWeb/hrms/includes/images/go_dtl_act.jpg | Bin 0 -> 2870 bytes hrmsWeb/hrms/includes/images/go_dtl_dis.jpg | Bin 0 -> 2870 bytes hrmsWeb/hrms/includes/images/help.jpg | Bin 0 -> 2879 bytes hrmsWeb/hrms/includes/images/help_act.jpg | Bin 0 -> 2844 bytes hrmsWeb/hrms/includes/images/help_dis.jpg | Bin 0 -> 2879 bytes hrmsWeb/hrms/includes/images/insert.jpg | Bin 0 -> 2793 bytes hrmsWeb/hrms/includes/images/insert_act.jpg | Bin 0 -> 2875 bytes hrmsWeb/hrms/includes/images/insert_dis.jpg | Bin 0 -> 2517 bytes hrmsWeb/hrms/includes/images/line_l.gif | Bin 0 -> 36 bytes hrmsWeb/hrms/includes/images/line_r.gif | Bin 0 -> 36 bytes hrmsWeb/hrms/includes/images/line_t.gif | Bin 0 -> 37 bytes hrmsWeb/hrms/includes/images/logo_Enrgise.jpg | Bin 0 -> 3124 bytes .../hrms/includes/images/logo_Purchase.jpg | Bin 0 -> 7460 bytes .../hrms/includes/images/logo_SysAdmin.jpg | Bin 0 -> 8585 bytes hrmsWeb/hrms/includes/images/lov.jpg | Bin 0 -> 2498 bytes hrmsWeb/hrms/includes/images/lov_act.jpg | Bin 0 -> 2498 bytes hrmsWeb/hrms/includes/images/lov_dis.jpg | Bin 0 -> 2414 bytes hrmsWeb/hrms/includes/images/man.jpg | Bin 0 -> 2655 bytes hrmsWeb/hrms/includes/images/menu_arrow.gif | Bin 0 -> 56 bytes hrmsWeb/hrms/includes/images/minus.gif | Bin 0 -> 837 bytes hrmsWeb/hrms/includes/images/next.gif | Bin 0 -> 214 bytes hrmsWeb/hrms/includes/images/next_year.gif | Bin 0 -> 256 bytes hrmsWeb/hrms/includes/images/pixel.gif | Bin 0 -> 43 bytes hrmsWeb/hrms/includes/images/plus.gif | Bin 0 -> 841 bytes hrmsWeb/hrms/includes/images/prev.gif | Bin 0 -> 212 bytes hrmsWeb/hrms/includes/images/prev_year.gif | Bin 0 -> 259 bytes hrmsWeb/hrms/includes/images/print.jpg | Bin 0 -> 2812 bytes hrmsWeb/hrms/includes/images/print_act.jpg | Bin 0 -> 2820 bytes hrmsWeb/hrms/includes/images/print_dis.jpg | Bin 0 -> 2523 bytes hrmsWeb/hrms/includes/images/query.jpg | Bin 0 -> 2766 bytes hrmsWeb/hrms/includes/images/query_act.jpg | Bin 0 -> 2833 bytes hrmsWeb/hrms/includes/images/query_dis.jpg | Bin 0 -> 2518 bytes hrmsWeb/hrms/includes/images/refresh.jpg | Bin 0 -> 2813 bytes hrmsWeb/hrms/includes/images/refresh_act.jpg | Bin 0 -> 2879 bytes hrmsWeb/hrms/includes/images/refresh_dis.jpg | Bin 0 -> 2558 bytes hrmsWeb/hrms/includes/images/save.jpg | Bin 0 -> 2782 bytes hrmsWeb/hrms/includes/images/save_act.jpg | Bin 0 -> 2803 bytes hrmsWeb/hrms/includes/images/save_dis.jpg | Bin 0 -> 2538 bytes hrmsWeb/hrms/includes/images/tab_blue.jpg | Bin 0 -> 4861 bytes hrmsWeb/hrms/includes/images/table_bg.gif | Bin 0 -> 46 bytes hrmsWeb/hrms/includes/images/treemenu.jpg | Bin 0 -> 7376 bytes .../hrms/includes/images/treemenu/Thumbs.db | Bin 0 -> 6144 bytes .../hrms/includes/images/treemenu/base.gif | Bin 0 -> 1040 bytes hrmsWeb/hrms/includes/images/treemenu/cd.gif | Bin 0 -> 239 bytes .../hrms/includes/images/treemenu/empty.gif | Bin 0 -> 62 bytes .../hrms/includes/images/treemenu/folder.gif | Bin 0 -> 372 bytes .../includes/images/treemenu/folderopen.gif | Bin 0 -> 376 bytes .../hrms/includes/images/treemenu/globe.gif | Bin 0 -> 1095 bytes .../includes/images/treemenu/imgfolder.gif | Bin 0 -> 622 bytes .../hrms/includes/images/treemenu/join.gif | Bin 0 -> 69 bytes .../includes/images/treemenu/joinbottom.gif | Bin 0 -> 66 bytes .../hrms/includes/images/treemenu/line.gif | Bin 0 -> 66 bytes .../hrms/includes/images/treemenu/lock.gif | Bin 0 -> 323 bytes .../hrms/includes/images/treemenu/minus.gif | Bin 0 -> 86 bytes .../includes/images/treemenu/minusbottom.gif | Bin 0 -> 85 bytes .../includes/images/treemenu/musicfolder.gif | Bin 0 -> 633 bytes .../images/treemenu/nolines_minus.gif | Bin 0 -> 861 bytes .../includes/images/treemenu/nolines_plus.gif | Bin 0 -> 870 bytes .../hrms/includes/images/treemenu/page.gif | Bin 0 -> 582 bytes .../hrms/includes/images/treemenu/plus.gif | Bin 0 -> 89 bytes .../includes/images/treemenu/plusbottom.gif | Bin 0 -> 88 bytes .../includes/images/treemenu/question.gif | Bin 0 -> 1044 bytes .../hrms/includes/images/treemenu/trash.gif | Bin 0 -> 1051 bytes .../hrms/includes/images/treemenu/vssver.scc | Bin 0 -> 368 bytes hrmsWeb/hrms/includes/images/vssver.scc | Bin 0 -> 2000 bytes hrmsWeb/hrms/includes/resizeMenu.js | 46 + hrmsWeb/hrms/includes/toolBar.js | 119 + hrmsWeb/hrms/jsp/AgeAnalysisReport.jsp | 250 + hrmsWeb/hrms/jsp/CommonSearchScreen.jsp | 473 + hrmsWeb/hrms/jsp/ExpirePage.jsp | 25 + hrmsWeb/hrms/jsp/GenConfirmScreen.jsp | 142 + hrmsWeb/hrms/jsp/GenDetailMenu.jsp | 20 + hrmsWeb/hrms/jsp/GenDisplayScreen.jsp | 496 + hrmsWeb/hrms/jsp/GenIconMenu.jsp | 34 + hrmsWeb/hrms/jsp/GenIncludes.jsp | 18 + hrmsWeb/hrms/jsp/GenMenu.jsp | 159 + hrmsWeb/hrms/jsp/HrmATDDptnAppl.jsp | 364 + hrmsWeb/hrms/jsp/HrmATDDptnChrgRpt.jsp | 335 + .../hrms/jsp/HrmATDDptnOrderForSingleEmp.jsp | 339 + hrmsWeb/hrms/jsp/HrmATDTransAppl.jsp | 455 + hrmsWeb/hrms/jsp/HrmATDTransChrgRpt.jsp | 357 + hrmsWeb/hrms/jsp/HrmATDTransCnclAppl.jsp | 352 + .../jsp/HrmATDTransCnclOrderForSingleEmp.jsp | 382 + .../hrms/jsp/HrmATDTransOrderForSingleEmp.jsp | 459 + hrmsWeb/hrms/jsp/HrmAcademicQualRep.jsp | 220 + hrmsWeb/hrms/jsp/HrmAdhocReport.jsp | 327 + hrmsWeb/hrms/jsp/HrmAdvAppln.jsp | 397 + hrmsWeb/hrms/jsp/HrmAdvMst.jsp | 477 + hrmsWeb/hrms/jsp/HrmAdvSettle.jsp | 393 + hrmsWeb/hrms/jsp/HrmAdvSettleHeads.jsp | 339 + hrmsWeb/hrms/jsp/HrmAppraisalKPA.jsp | 429 + hrmsWeb/hrms/jsp/HrmAppraisalTemplateKpa.jsp | 371 + .../hrms/jsp/HrmAppraisalTemplateSection.jsp | 449 + hrmsWeb/hrms/jsp/HrmAprslEmpDtls.jsp | 402 + hrmsWeb/hrms/jsp/HrmAprslEmployee.jsp | 346 + hrmsWeb/hrms/jsp/HrmAprslGoals.jsp | 468 + hrmsWeb/hrms/jsp/HrmAprslKPA.jsp | 528 + hrmsWeb/hrms/jsp/HrmAprslSpcTmpl.jsp | 528 + hrmsWeb/hrms/jsp/HrmAprslSpcTmplEmpElig.jsp | 473 + hrmsWeb/hrms/jsp/HrmAprslSpcTmplGoals.jsp | 484 + hrmsWeb/hrms/jsp/HrmAprslStartOrder.jsp | 254 + hrmsWeb/hrms/jsp/HrmAprslStartRule.jsp | 409 + hrmsWeb/hrms/jsp/HrmAprslTrngReq.jsp | 426 + hrmsWeb/hrms/jsp/HrmAttEmpAttIn.jsp | 293 + hrmsWeb/hrms/jsp/HrmAttEmpAttOut.jsp | 272 + hrmsWeb/hrms/jsp/HrmAttEmpAttQuery.jsp | 362 + hrmsWeb/hrms/jsp/HrmAttEmpDayOff.jsp | 503 + hrmsWeb/hrms/jsp/HrmAttEmpShift.jsp | 399 + .../hrms/jsp/HrmAttEmployeeShiftDetail.jsp | 159 + .../hrms/jsp/HrmAttEmployeeShiftRoster.jsp | 349 + hrmsWeb/hrms/jsp/HrmAttShiftMaster.jsp | 202 + hrmsWeb/hrms/jsp/HrmAttShiftRosterGen.jsp | 305 + hrmsWeb/hrms/jsp/HrmAttWorkGroupDayOff.jsp | 502 + hrmsWeb/hrms/jsp/HrmAttWorkGroupShift.jsp | 433 + hrmsWeb/hrms/jsp/HrmClaimMst.jsp | 461 + hrmsWeb/hrms/jsp/HrmDriverScreen.jsp | 88 + hrmsWeb/hrms/jsp/HrmEmpAwardDtls.jsp | 388 + hrmsWeb/hrms/jsp/HrmEmpClaim.jsp | 565 ++ hrmsWeb/hrms/jsp/HrmEmpDepDtl.jsp | 398 + hrmsWeb/hrms/jsp/HrmEmpDiscAction.jsp | 465 + hrmsWeb/hrms/jsp/HrmEmpPersAddDtls.jsp | 781 ++ hrmsWeb/hrms/jsp/HrmEmpPersAssetDtls.jsp | 418 + hrmsWeb/hrms/jsp/HrmEmpPersDtls.jsp | 741 ++ hrmsWeb/hrms/jsp/HrmEmpPersEduDtls.jsp | 427 + hrmsWeb/hrms/jsp/HrmEmpPersEmpHst.jsp | 430 + hrmsWeb/hrms/jsp/HrmEmpPersHealth.jsp | 386 + hrmsWeb/hrms/jsp/HrmEmpPersInsDtls.jsp | 393 + hrmsWeb/hrms/jsp/HrmEmpPersJoinInf.jsp | 605 ++ hrmsWeb/hrms/jsp/HrmEmpPersLngDtls.jsp | 404 + hrmsWeb/hrms/jsp/HrmEmpPersPFDtls.jsp | 430 + hrmsWeb/hrms/jsp/HrmEmpPersPriorExp.jsp | 466 + hrmsWeb/hrms/jsp/HrmEmpPersRef.jsp | 391 + hrmsWeb/hrms/jsp/HrmEmpPersTrngDtls.jsp | 412 + hrmsWeb/hrms/jsp/HrmGenEligRule.jsp | 417 + hrmsWeb/hrms/jsp/HrmGenEligRuleQuery.jsp | 373 + hrmsWeb/hrms/jsp/HrmLnApp.jsp | 639 ++ hrmsWeb/hrms/jsp/HrmLnAppHblIntRateDtl.jsp | 623 ++ hrmsWeb/hrms/jsp/HrmLnAppRepay.jsp | 412 + hrmsWeb/hrms/jsp/HrmLnChart.jsp | 391 + hrmsWeb/hrms/jsp/HrmLnMst.jsp | 501 + hrmsWeb/hrms/jsp/HrmLvAppln.jsp | 609 ++ hrmsWeb/hrms/jsp/HrmLvApplnQuery.jsp | 439 + hrmsWeb/hrms/jsp/HrmLvCanc.jsp | 437 + hrmsWeb/hrms/jsp/HrmLvCancQuery.jsp | 437 + hrmsWeb/hrms/jsp/HrmLvCredit.jsp | 213 + hrmsWeb/hrms/jsp/HrmLvEncash.jsp | 454 + hrmsWeb/hrms/jsp/HrmLvLedger.jsp | 421 + hrmsWeb/hrms/jsp/HrmLvLedgerTxn.txt | 76 + hrmsWeb/hrms/jsp/HrmLvMst.jsp | 593 ++ hrmsWeb/hrms/jsp/HrmMainPage.jsp | 104 + hrmsWeb/hrms/jsp/HrmMediclaimMaster.jsp | 380 + hrmsWeb/hrms/jsp/HrmMisReport.jsp | 468 + hrmsWeb/hrms/jsp/HrmMyWorkflow.jsp | 450 + hrmsWeb/hrms/jsp/HrmOrgCalMst.jsp | 361 + hrmsWeb/hrms/jsp/HrmOrgClassDtl.jsp | 351 + hrmsWeb/hrms/jsp/HrmOrgCntryMst.jsp | 334 + hrmsWeb/hrms/jsp/HrmOrgDistMst.jsp | 295 + hrmsWeb/hrms/jsp/HrmOrgHolCal.jsp | 409 + hrmsWeb/hrms/jsp/HrmOrgHolTypeMst.jsp | 220 + hrmsWeb/hrms/jsp/HrmOrgIncrementMst.jsp | 338 + hrmsWeb/hrms/jsp/HrmOrgLangMst.jsp | 310 + hrmsWeb/hrms/jsp/HrmOrgQualMst.jsp | 326 + hrmsWeb/hrms/jsp/HrmOrgRatingMst.jsp | 339 + hrmsWeb/hrms/jsp/HrmOrgRelationMst.jsp | 307 + hrmsWeb/hrms/jsp/HrmOrgReligionMst.jsp | 319 + hrmsWeb/hrms/jsp/HrmOrgScaleMst.jsp | 367 + hrmsWeb/hrms/jsp/HrmOrgSkillMst.jsp | 321 + hrmsWeb/hrms/jsp/HrmOrgTehMst.jsp | 295 + hrmsWeb/hrms/jsp/HrmOrgWorkGroupMst.jsp | 386 + hrmsWeb/hrms/jsp/HrmPrmCriteria.jsp | 384 + hrmsWeb/hrms/jsp/HrmPrmExperienceScore.jsp | 359 + hrmsWeb/hrms/jsp/HrmPrmGenAss.jsp | 287 + hrmsWeb/hrms/jsp/HrmPrmKPARating.jsp | 412 + hrmsWeb/hrms/jsp/HrmPrmKPARatingF.jsp | 424 + hrmsWeb/hrms/jsp/HrmPrmNoticeDetail.jsp | 451 + hrmsWeb/hrms/jsp/HrmPrmOrder.jsp | 310 + hrmsWeb/hrms/jsp/HrmPrmQualCriteria.jsp | 304 + hrmsWeb/hrms/jsp/HrmPrmTestScore.jsp | 356 + hrmsWeb/hrms/jsp/HrmPrmViewAss.jsp | 471 + hrmsWeb/hrms/jsp/HrmRecAdvAttrJobDesc.jsp | 352 + hrmsWeb/hrms/jsp/HrmRecAdvAttrLngReqDtl.jsp | 378 + .../hrms/jsp/HrmRecAdvAttrLocVacencyDtl.jsp | 388 + hrmsWeb/hrms/jsp/HrmRecAdvAttrQualReqDtl.jsp | 399 + hrmsWeb/hrms/jsp/HrmRecAdvAttrSkillReqDtl.jsp | 367 + hrmsWeb/hrms/jsp/HrmRecAdvAttrWorkExpDtl.jsp | 376 + hrmsWeb/hrms/jsp/HrmRecAdvtMtn.jsp | 537 + hrmsWeb/hrms/jsp/HrmRecApplnMtnAddDtl.jsp | 785 ++ hrmsWeb/hrms/jsp/HrmRecApplnMtnEduDtl.jsp | 478 + hrmsWeb/hrms/jsp/HrmRecApplnMtnExpDtl.jsp | 505 + hrmsWeb/hrms/jsp/HrmRecApplnMtnLangDtl.jsp | 468 + hrmsWeb/hrms/jsp/HrmRecApplnMtnOtherDtl.jsp | 544 + hrmsWeb/hrms/jsp/HrmRecApplnMtnRef.jsp | 442 + hrmsWeb/hrms/jsp/HrmRecApplnMtnResultDtl.jsp | 476 + hrmsWeb/hrms/jsp/HrmRecApplnMtnTrngDtls.jsp | 440 + hrmsWeb/hrms/jsp/HrmRecEmpRecCreation.jsp | 732 ++ .../hrms/jsp/HrmRecScrutAppMaintainance.jsp | 429 + hrmsWeb/hrms/jsp/HrmRecTestCentreMst.jsp | 264 + hrmsWeb/hrms/jsp/HrmRetirementForecastRep.jsp | 248 + hrmsWeb/hrms/jsp/HrmRoasterEntry.jsp | 367 + hrmsWeb/hrms/jsp/HrmSepAppln.jsp | 351 + hrmsWeb/hrms/jsp/HrmSepCatMst.jsp | 220 + hrmsWeb/hrms/jsp/HrmSepClrEmp.jsp | 378 + hrmsWeb/hrms/jsp/HrmSepClrLst.jsp | 322 + hrmsWeb/hrms/jsp/HrmSepClrTmplMst.jsp | 346 + hrmsWeb/hrms/jsp/HrmSepOrder.jsp | 305 + hrmsWeb/hrms/jsp/HrmSettlementHeads.jsp | 343 + hrmsWeb/hrms/jsp/HrmTrngBudget.jsp | 365 + hrmsWeb/hrms/jsp/HrmTrngCal.jsp | 479 + hrmsWeb/hrms/jsp/HrmTrngCalClose.jsp | 295 + hrmsWeb/hrms/jsp/HrmTrngCrsMst.jsp | 339 + hrmsWeb/hrms/jsp/HrmTrngEmpAtt.jsp | 392 + hrmsWeb/hrms/jsp/HrmTrngEmpFeedBack.jsp | 417 + hrmsWeb/hrms/jsp/HrmTrngEmpHist.jsp | 536 + hrmsWeb/hrms/jsp/HrmTrngEmpReq.jsp | 533 + hrmsWeb/hrms/jsp/HrmTrngFacFdbkDtl.jsp | 388 + hrmsWeb/hrms/jsp/HrmTrngFacFeedback.jsp | 389 + hrmsWeb/hrms/jsp/HrmTrngFacMst.jsp | 292 + hrmsWeb/hrms/jsp/HrmTrngFacTrngDtl.jsp | 431 + hrmsWeb/hrms/jsp/HrmTrngInstCourseDtl.jsp | 445 + hrmsWeb/hrms/jsp/LaunchPad.jsp | 115 + hrmsWeb/hrms/jsp/MainPage.html | 11 + hrmsWeb/hrms/jsp/Navigator.html | 6 + hrmsWeb/hrms/jsp/RepAllIndiaManpower.jsp | 221 + hrmsWeb/hrms/jsp/RepAllIndiaManpower1.jsp | 221 + hrmsWeb/hrms/jsp/RepAllIndiaManpower2.jsp | 221 + hrmsWeb/hrms/jsp/RepAllIndiaManpower3.jsp | 221 + hrmsWeb/hrms/jsp/RepAllIndiaManpower5.jsp | 221 + hrmsWeb/hrms/jsp/RepBranchListCode.jsp | 219 + hrmsWeb/hrms/jsp/RepBranchListName.jsp | 219 + hrmsWeb/hrms/jsp/RepBranchListZone.jsp | 219 + hrmsWeb/hrms/jsp/RepCessationList.jsp | 218 + hrmsWeb/hrms/jsp/RepConfidentialFile.jsp | 234 + hrmsWeb/hrms/jsp/RepConfirmationDue.jsp | 237 + hrmsWeb/hrms/jsp/RepCostToCompanyFile.jsp | 233 + hrmsWeb/hrms/jsp/RepDistnOfManpower.jsp | 249 + hrmsWeb/hrms/jsp/RepEmpAddress.jsp | 221 + hrmsWeb/hrms/jsp/RepGrossSalExec.jsp | 216 + hrmsWeb/hrms/jsp/RepHistOfEmp.jsp | 218 + hrmsWeb/hrms/jsp/RepImpactFinYear.jsp | 201 + hrmsWeb/hrms/jsp/RepIncrDue.jsp | 236 + hrmsWeb/hrms/jsp/RepJoiningStatus.jsp | 210 + hrmsWeb/hrms/jsp/RepLeaveLedger.jsp | 221 + hrmsWeb/hrms/jsp/RepMTExecDetails.jsp | 213 + hrmsWeb/hrms/jsp/RepManpowerMediclaim.jsp | 233 + hrmsWeb/hrms/jsp/RepOfficersRatedPoor.jsp | 232 + hrmsWeb/hrms/jsp/RepPerformanceAppraisal.jsp | 213 + hrmsWeb/hrms/jsp/RepPromotionList.jsp | 211 + hrmsWeb/hrms/jsp/RepQualAllIndiaEmp.jsp | 235 + hrmsWeb/hrms/jsp/RepRatingVisAVisAwards.jsp | 213 + hrmsWeb/hrms/jsp/RepRecrCessStatus.jsp | 251 + hrmsWeb/hrms/jsp/RepRecrVisAVisSep.jsp | 234 + hrmsWeb/hrms/jsp/RepRecruitmentList.jsp | 250 + hrmsWeb/hrms/jsp/RepRetirementDetails.jsp | 253 + hrmsWeb/hrms/jsp/RepRetrDue.jsp | 220 + hrmsWeb/hrms/jsp/RepStaffingListEmp.jsp | 220 + hrmsWeb/hrms/jsp/RepStatusOfDiscCases.jsp | 233 + hrmsWeb/hrms/jsp/RepStayBranch.jsp | 219 + hrmsWeb/hrms/jsp/RepStayGrade.jsp | 219 + hrmsWeb/hrms/jsp/RepTrainingDetails.jsp | 256 + hrmsWeb/hrms/jsp/SearchDriver.jsp | 88 + hrmsWeb/hrms/jsp/WFLDocAttrDtl.jsp | 348 + hrmsWeb/hrms/jsp/WflDtlDocType.jsp | 365 + hrmsWeb/hrms/jsp/WflGenConditions.jsp | 353 + hrmsWeb/hrms/jsp/WflWorkflowConditions.jsp | 310 + hrmsWeb/hrms/jsp/report.jsp | 87 + hrmsWeb/hrms/jsp/untitled1.html | 14 + hrmsWeb/hrms/jsp/vssver.scc | Bin 0 -> 208 bytes hrmsWeb/hrms/report/AgeAnalysisReport.jasper | Bin 0 -> 14755 bytes .../hrms/report/AllIndiaManpowerList.jasper | Bin 0 -> 13505 bytes hrmsWeb/hrms/report/All_India_CTC.jasper | Bin 0 -> 39283 bytes .../report/All_india_MP_for_mediclaim.jasper | Bin 0 -> 23228 bytes .../hrms/report/BranchList_Codewise.jasper | Bin 0 -> 16738 bytes .../hrms/report/BranchList_Namewise.jasper | Bin 0 -> 16727 bytes .../hrms/report/BranchList_Zonewise.jasper | Bin 0 -> 19003 bytes .../report/Categorywise_BranchList.jasper | Bin 0 -> 19039 bytes .../report/Confidential_File_Report.jasper | Bin 0 -> 24848 bytes hrmsWeb/hrms/report/Confirmation_Due.jasper | Bin 0 -> 21928 bytes hrmsWeb/hrms/report/EmpAddress.jasper | Bin 0 -> 22247 bytes hrmsWeb/hrms/report/EmpList_summary.jasper | Bin 0 -> 41027 bytes .../hrms/report/Increment_Due_Report.jasper | Bin 0 -> 27416 bytes .../report/Increment_Due_Report_alt.jasper | Bin 0 -> 27723 bytes hrmsWeb/hrms/report/Leave_Ledger.jasper | Bin 0 -> 45518 bytes .../hrms/report/Manpower_Distribution.jasper | Bin 0 -> 24582 bytes hrmsWeb/hrms/report/Manpower_Report.jasper | Bin 0 -> 105953 bytes hrmsWeb/hrms/report/Manpower_Report_2.jasper | Bin 0 -> 105907 bytes .../Manpower_recomendation_master.jasper | Bin 0 -> 26961 bytes hrmsWeb/hrms/report/Off_Rated_Poor.jasper | Bin 0 -> 18672 bytes .../report/Qual_All_India_Employees.jasper | Bin 0 -> 21812 bytes .../report/Recr_List_During_A_Period.jasper | Bin 0 -> 18730 bytes ...tment_Cessation_Status_For_A_Period.jasper | Bin 0 -> 19805 bytes ...ment_Cessation_Status_For_A_Period.jasper_ | Bin 0 -> 15643 bytes .../Retirement_Details_For_A_Period.jasper | Bin 0 -> 23050 bytes .../hrms/report/Retirement_due_report.jasper | Bin 0 -> 27404 bytes .../Status_Of_Disciplinary_Cases.jasper | Bin 0 -> 21109 bytes .../hrms/report/Stay_report_BranchWise.jasper | Bin 0 -> 27006 bytes .../hrms/report/Stay_report_GradeWise.jasper | Bin 0 -> 26914 bytes hrmsWeb/hrms/report/Training_Details.jasper | Bin 0 -> 32107 bytes 3438 files changed, 520990 insertions(+) create mode 100644 META-INF/MANIFEST.MF create mode 100644 META-INF/application.xml create mode 100644 META-INF/ejb-jar.xml create mode 100644 META-INF/weblogic-ejb-jar.xml create mode 100644 hrmsEjb/META-INF/MANIFEST.MF create mode 100644 hrmsEjb/META-INF/ejb-jar.xml create mode 100644 hrmsEjb/META-INF/weblogic-ejb-jar.xml create mode 100644 hrmsEjb/com/tcs/wenrgise/util/common/FWSAXParser.java create mode 100644 hrmsEjb/com/tcs/wenrgise/util/common/FWXMLUtility.java create mode 100644 hrmsEjb/com/tcs/wenrgise/util/common/XMLValidationHandler.java create mode 100644 hrmsEjb/common/Assert.java create mode 100644 hrmsEjb/common/AssertionFailed.java create mode 100644 hrmsEjb/common/Logger.java create mode 100644 hrmsEjb/common/log/LoggerName.java create mode 100644 hrmsEjb/common/log/SimpleLogger.java create mode 100644 hrmsEjb/jxl/BooleanCell.java create mode 100644 hrmsEjb/jxl/BooleanFormulaCell.java create mode 100644 hrmsEjb/jxl/Cell.java create mode 100644 hrmsEjb/jxl/CellFeatures.java create mode 100644 hrmsEjb/jxl/CellFormat.java create mode 100644 hrmsEjb/jxl/CellReferenceHelper.java create mode 100644 hrmsEjb/jxl/CellType.java create mode 100644 hrmsEjb/jxl/CellView.java create mode 100644 hrmsEjb/jxl/DateCell.java create mode 100644 hrmsEjb/jxl/DateFormulaCell.java create mode 100644 hrmsEjb/jxl/ErrorCell.java create mode 100644 hrmsEjb/jxl/ErrorFormulaCell.java create mode 100644 hrmsEjb/jxl/FormulaCell.java create mode 100644 hrmsEjb/jxl/HeaderFooter.java create mode 100644 hrmsEjb/jxl/Hyperlink.java create mode 100644 hrmsEjb/jxl/Image.java create mode 100644 hrmsEjb/jxl/JXLException.java create mode 100644 hrmsEjb/jxl/LabelCell.java create mode 100644 hrmsEjb/jxl/NumberCell.java create mode 100644 hrmsEjb/jxl/NumberFormulaCell.java create mode 100644 hrmsEjb/jxl/Range.java create mode 100644 hrmsEjb/jxl/Sheet.java create mode 100644 hrmsEjb/jxl/SheetSettings.java create mode 100644 hrmsEjb/jxl/StringFormulaCell.java create mode 100644 hrmsEjb/jxl/Workbook.java create mode 100644 hrmsEjb/jxl/WorkbookSettings.java create mode 100644 hrmsEjb/jxl/biff/BaseCellFeatures.java create mode 100644 hrmsEjb/jxl/biff/BaseCompoundFile.java create mode 100644 hrmsEjb/jxl/biff/BuiltInFormat.java create mode 100644 hrmsEjb/jxl/biff/BuiltInStyle.java create mode 100644 hrmsEjb/jxl/biff/ByteArray.java create mode 100644 hrmsEjb/jxl/biff/ByteData.java create mode 100644 hrmsEjb/jxl/biff/CellReferenceHelper.java create mode 100644 hrmsEjb/jxl/biff/ContinueRecord.java create mode 100644 hrmsEjb/jxl/biff/CountryCode.java create mode 100644 hrmsEjb/jxl/biff/DVParser.java create mode 100644 hrmsEjb/jxl/biff/DValParser.java create mode 100644 hrmsEjb/jxl/biff/DisplayFormat.java create mode 100644 hrmsEjb/jxl/biff/DoubleHelper.java create mode 100644 hrmsEjb/jxl/biff/EmptyCell.java create mode 100644 hrmsEjb/jxl/biff/EncodedURLHelper.java create mode 100644 hrmsEjb/jxl/biff/FontRecord.java create mode 100644 hrmsEjb/jxl/biff/Fonts.java create mode 100644 hrmsEjb/jxl/biff/FormatRecord.java create mode 100644 hrmsEjb/jxl/biff/FormattingRecords.java create mode 100644 hrmsEjb/jxl/biff/FormulaData.java create mode 100644 hrmsEjb/jxl/biff/HeaderFooter.java create mode 100644 hrmsEjb/jxl/biff/IndexMapping.java create mode 100644 hrmsEjb/jxl/biff/IntegerHelper.java create mode 100644 hrmsEjb/jxl/biff/NumFormatRecordsException.java create mode 100644 hrmsEjb/jxl/biff/PaletteRecord.java create mode 100644 hrmsEjb/jxl/biff/RangeImpl.java create mode 100644 hrmsEjb/jxl/biff/RecordData.java create mode 100644 hrmsEjb/jxl/biff/SheetRangeImpl.java create mode 100644 hrmsEjb/jxl/biff/StringHelper.java create mode 100644 hrmsEjb/jxl/biff/Type.java create mode 100644 hrmsEjb/jxl/biff/WorkbookMethods.java create mode 100644 hrmsEjb/jxl/biff/WorkspaceInformationRecord.java create mode 100644 hrmsEjb/jxl/biff/WritableRecordData.java create mode 100644 hrmsEjb/jxl/biff/XFRecord.java create mode 100644 hrmsEjb/jxl/biff/drawing/BStoreContainer.java create mode 100644 hrmsEjb/jxl/biff/drawing/BlipStoreEntry.java create mode 100644 hrmsEjb/jxl/biff/drawing/BlipType.java create mode 100644 hrmsEjb/jxl/biff/drawing/Button.java create mode 100644 hrmsEjb/jxl/biff/drawing/Chart.java create mode 100644 hrmsEjb/jxl/biff/drawing/ClientAnchor.java create mode 100644 hrmsEjb/jxl/biff/drawing/ClientData.java create mode 100644 hrmsEjb/jxl/biff/drawing/ClientTextBox.java create mode 100644 hrmsEjb/jxl/biff/drawing/Comment.java create mode 100644 hrmsEjb/jxl/biff/drawing/Dg.java create mode 100644 hrmsEjb/jxl/biff/drawing/DgContainer.java create mode 100644 hrmsEjb/jxl/biff/drawing/Dgg.java create mode 100644 hrmsEjb/jxl/biff/drawing/DggContainer.java create mode 100644 hrmsEjb/jxl/biff/drawing/Drawing.java create mode 100644 hrmsEjb/jxl/biff/drawing/DrawingData.java create mode 100644 hrmsEjb/jxl/biff/drawing/DrawingGroup.java create mode 100644 hrmsEjb/jxl/biff/drawing/DrawingGroupObject.java create mode 100644 hrmsEjb/jxl/biff/drawing/EscherAtom.java create mode 100644 hrmsEjb/jxl/biff/drawing/EscherContainer.java create mode 100644 hrmsEjb/jxl/biff/drawing/EscherRecord.java create mode 100644 hrmsEjb/jxl/biff/drawing/EscherRecordData.java create mode 100644 hrmsEjb/jxl/biff/drawing/EscherRecordType.java create mode 100644 hrmsEjb/jxl/biff/drawing/EscherStream.java create mode 100644 hrmsEjb/jxl/biff/drawing/MsoDrawingGroupRecord.java create mode 100644 hrmsEjb/jxl/biff/drawing/MsoDrawingRecord.java create mode 100644 hrmsEjb/jxl/biff/drawing/NoteRecord.java create mode 100644 hrmsEjb/jxl/biff/drawing/ObjRecord.java create mode 100644 hrmsEjb/jxl/biff/drawing/Opt.java create mode 100644 hrmsEjb/jxl/biff/drawing/Origin.java create mode 100644 hrmsEjb/jxl/biff/drawing/ShapeType.java create mode 100644 hrmsEjb/jxl/biff/drawing/SheetDrawingWriter.java create mode 100644 hrmsEjb/jxl/biff/drawing/Sp.java create mode 100644 hrmsEjb/jxl/biff/drawing/SpContainer.java create mode 100644 hrmsEjb/jxl/biff/drawing/Spgr.java create mode 100644 hrmsEjb/jxl/biff/drawing/SpgrContainer.java create mode 100644 hrmsEjb/jxl/biff/drawing/SplitMenuColors.java create mode 100644 hrmsEjb/jxl/biff/drawing/TextObjectRecord.java create mode 100644 hrmsEjb/jxl/biff/formula/Add.java create mode 100644 hrmsEjb/jxl/biff/formula/Area.java create mode 100644 hrmsEjb/jxl/biff/formula/Area3d.java create mode 100644 hrmsEjb/jxl/biff/formula/ArgumentSeparator.java create mode 100644 hrmsEjb/jxl/biff/formula/Attribute.java create mode 100644 hrmsEjb/jxl/biff/formula/BinaryOperator.java create mode 100644 hrmsEjb/jxl/biff/formula/BooleanValue.java create mode 100644 hrmsEjb/jxl/biff/formula/BuiltInFunction.java create mode 100644 hrmsEjb/jxl/biff/formula/CellReference.java create mode 100644 hrmsEjb/jxl/biff/formula/CellReference3d.java create mode 100644 hrmsEjb/jxl/biff/formula/CellReferenceError.java create mode 100644 hrmsEjb/jxl/biff/formula/CloseParentheses.java create mode 100644 hrmsEjb/jxl/biff/formula/ColumnRange.java create mode 100644 hrmsEjb/jxl/biff/formula/ColumnRange3d.java create mode 100644 hrmsEjb/jxl/biff/formula/Concatenate.java create mode 100644 hrmsEjb/jxl/biff/formula/Divide.java create mode 100644 hrmsEjb/jxl/biff/formula/DoubleValue.java create mode 100644 hrmsEjb/jxl/biff/formula/Equal.java create mode 100644 hrmsEjb/jxl/biff/formula/ExternalSheet.java create mode 100644 hrmsEjb/jxl/biff/formula/FormulaErrorCode.java create mode 100644 hrmsEjb/jxl/biff/formula/FormulaException.java create mode 100644 hrmsEjb/jxl/biff/formula/FormulaParser.java create mode 100644 hrmsEjb/jxl/biff/formula/Function.java create mode 100644 hrmsEjb/jxl/biff/formula/FunctionNames.java create mode 100644 hrmsEjb/jxl/biff/formula/GreaterEqual.java create mode 100644 hrmsEjb/jxl/biff/formula/GreaterThan.java create mode 100644 hrmsEjb/jxl/biff/formula/IntegerValue.java create mode 100644 hrmsEjb/jxl/biff/formula/LessEqual.java create mode 100644 hrmsEjb/jxl/biff/formula/LessThan.java create mode 100644 hrmsEjb/jxl/biff/formula/MemFunc.java create mode 100644 hrmsEjb/jxl/biff/formula/Minus.java create mode 100644 hrmsEjb/jxl/biff/formula/MissingArg.java create mode 100644 hrmsEjb/jxl/biff/formula/Multiply.java create mode 100644 hrmsEjb/jxl/biff/formula/Name.java create mode 100644 hrmsEjb/jxl/biff/formula/NameRange.java create mode 100644 hrmsEjb/jxl/biff/formula/NotEqual.java create mode 100644 hrmsEjb/jxl/biff/formula/NumberValue.java create mode 100644 hrmsEjb/jxl/biff/formula/OpenParentheses.java create mode 100644 hrmsEjb/jxl/biff/formula/Operand.java create mode 100644 hrmsEjb/jxl/biff/formula/Operator.java create mode 100644 hrmsEjb/jxl/biff/formula/Parenthesis.java create mode 100644 hrmsEjb/jxl/biff/formula/ParseItem.java create mode 100644 hrmsEjb/jxl/biff/formula/ParsedThing.java create mode 100644 hrmsEjb/jxl/biff/formula/Parser.java create mode 100644 hrmsEjb/jxl/biff/formula/Percent.java create mode 100644 hrmsEjb/jxl/biff/formula/Plus.java create mode 100644 hrmsEjb/jxl/biff/formula/Power.java create mode 100644 hrmsEjb/jxl/biff/formula/RangeSeparator.java create mode 100644 hrmsEjb/jxl/biff/formula/SharedFormulaArea.java create mode 100644 hrmsEjb/jxl/biff/formula/SharedFormulaCellReference.java create mode 100644 hrmsEjb/jxl/biff/formula/StringFormulaParser.java create mode 100644 hrmsEjb/jxl/biff/formula/StringFunction.java create mode 100644 hrmsEjb/jxl/biff/formula/StringOperator.java create mode 100644 hrmsEjb/jxl/biff/formula/StringParseItem.java create mode 100644 hrmsEjb/jxl/biff/formula/StringValue.java create mode 100644 hrmsEjb/jxl/biff/formula/Subtract.java create mode 100644 hrmsEjb/jxl/biff/formula/Token.java create mode 100644 hrmsEjb/jxl/biff/formula/TokenFormulaParser.java create mode 100644 hrmsEjb/jxl/biff/formula/UnaryMinus.java create mode 100644 hrmsEjb/jxl/biff/formula/UnaryOperator.java create mode 100644 hrmsEjb/jxl/biff/formula/UnaryPlus.java create mode 100644 hrmsEjb/jxl/biff/formula/VariableArgFunction.java create mode 100644 hrmsEjb/jxl/biff/formula/Yylex.java create mode 100644 hrmsEjb/jxl/format/Alignment.java create mode 100644 hrmsEjb/jxl/format/Border.java create mode 100644 hrmsEjb/jxl/format/BorderLineStyle.java create mode 100644 hrmsEjb/jxl/format/CellFormat.java create mode 100644 hrmsEjb/jxl/format/Colour.java create mode 100644 hrmsEjb/jxl/format/Font.java create mode 100644 hrmsEjb/jxl/format/Format.java create mode 100644 hrmsEjb/jxl/format/Orientation.java create mode 100644 hrmsEjb/jxl/format/PageOrientation.java create mode 100644 hrmsEjb/jxl/format/PaperSize.java create mode 100644 hrmsEjb/jxl/format/Pattern.java create mode 100644 hrmsEjb/jxl/format/RGB.java create mode 100644 hrmsEjb/jxl/format/ScriptStyle.java create mode 100644 hrmsEjb/jxl/format/UnderlineStyle.java create mode 100644 hrmsEjb/jxl/format/VerticalAlignment.java create mode 100644 hrmsEjb/jxl/read/biff/BOFRecord.java create mode 100644 hrmsEjb/jxl/read/biff/BaseSharedFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/BiffException.java create mode 100644 hrmsEjb/jxl/read/biff/BlankCell.java create mode 100644 hrmsEjb/jxl/read/biff/BooleanFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/BooleanRecord.java create mode 100644 hrmsEjb/jxl/read/biff/BottomMarginRecord.java create mode 100644 hrmsEjb/jxl/read/biff/BoundsheetRecord.java create mode 100644 hrmsEjb/jxl/read/biff/ButtonPropertySetRecord.java create mode 100644 hrmsEjb/jxl/read/biff/CalcModeRecord.java create mode 100644 hrmsEjb/jxl/read/biff/CellFeaturesAccessor.java create mode 100644 hrmsEjb/jxl/read/biff/CellValue.java create mode 100644 hrmsEjb/jxl/read/biff/CentreRecord.java create mode 100644 hrmsEjb/jxl/read/biff/CodepageRecord.java create mode 100644 hrmsEjb/jxl/read/biff/ColumnInfoRecord.java create mode 100644 hrmsEjb/jxl/read/biff/CompoundFile.java create mode 100644 hrmsEjb/jxl/read/biff/CountryRecord.java create mode 100644 hrmsEjb/jxl/read/biff/DataValidation.java create mode 100644 hrmsEjb/jxl/read/biff/DataValidityListRecord.java create mode 100644 hrmsEjb/jxl/read/biff/DataValiditySettingsRecord.java create mode 100644 hrmsEjb/jxl/read/biff/DateFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/DateRecord.java create mode 100644 hrmsEjb/jxl/read/biff/DefaultColumnWidthRecord.java create mode 100644 hrmsEjb/jxl/read/biff/DefaultRowHeightRecord.java create mode 100644 hrmsEjb/jxl/read/biff/DimensionRecord.java create mode 100644 hrmsEjb/jxl/read/biff/ErrorFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/ErrorRecord.java create mode 100644 hrmsEjb/jxl/read/biff/ExternalSheetRecord.java create mode 100644 hrmsEjb/jxl/read/biff/File.java create mode 100644 hrmsEjb/jxl/read/biff/FooterRecord.java create mode 100644 hrmsEjb/jxl/read/biff/FormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/HeaderRecord.java create mode 100644 hrmsEjb/jxl/read/biff/HorizontalPageBreaksRecord.java create mode 100644 hrmsEjb/jxl/read/biff/HyperlinkRecord.java create mode 100644 hrmsEjb/jxl/read/biff/LabelRecord.java create mode 100644 hrmsEjb/jxl/read/biff/LabelSSTRecord.java create mode 100644 hrmsEjb/jxl/read/biff/LeftMarginRecord.java create mode 100644 hrmsEjb/jxl/read/biff/MarginRecord.java create mode 100644 hrmsEjb/jxl/read/biff/MergedCellsRecord.java create mode 100644 hrmsEjb/jxl/read/biff/MulBlankCell.java create mode 100644 hrmsEjb/jxl/read/biff/MulBlankRecord.java create mode 100644 hrmsEjb/jxl/read/biff/MulRKRecord.java create mode 100644 hrmsEjb/jxl/read/biff/NameRecord.java create mode 100644 hrmsEjb/jxl/read/biff/NineteenFourRecord.java create mode 100644 hrmsEjb/jxl/read/biff/NumberFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/NumberRecord.java create mode 100644 hrmsEjb/jxl/read/biff/NumberValue.java create mode 100644 hrmsEjb/jxl/read/biff/PLSRecord.java create mode 100644 hrmsEjb/jxl/read/biff/PaneRecord.java create mode 100644 hrmsEjb/jxl/read/biff/PasswordException.java create mode 100644 hrmsEjb/jxl/read/biff/PasswordRecord.java create mode 100644 hrmsEjb/jxl/read/biff/PrintGridLinesRecord.java create mode 100644 hrmsEjb/jxl/read/biff/PrintHeadersRecord.java create mode 100644 hrmsEjb/jxl/read/biff/ProtectRecord.java create mode 100644 hrmsEjb/jxl/read/biff/RKHelper.java create mode 100644 hrmsEjb/jxl/read/biff/RKRecord.java create mode 100644 hrmsEjb/jxl/read/biff/RStringRecord.java create mode 100644 hrmsEjb/jxl/read/biff/Record.java create mode 100644 hrmsEjb/jxl/read/biff/RightMarginRecord.java create mode 100644 hrmsEjb/jxl/read/biff/RowRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SCLRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SSTRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SaveRecalcRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SetupRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SharedDateFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SharedErrorFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SharedFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SharedNumberFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SharedStringFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SheetImpl.java create mode 100644 hrmsEjb/jxl/read/biff/SheetReader.java create mode 100644 hrmsEjb/jxl/read/biff/StringFormulaRecord.java create mode 100644 hrmsEjb/jxl/read/biff/SupbookRecord.java create mode 100644 hrmsEjb/jxl/read/biff/TopMarginRecord.java create mode 100644 hrmsEjb/jxl/read/biff/Window2Record.java create mode 100644 hrmsEjb/jxl/read/biff/WorkbookParser.java create mode 100644 hrmsEjb/jxl/write/Blank.java create mode 100644 hrmsEjb/jxl/write/Boolean.java create mode 100644 hrmsEjb/jxl/write/Border.java create mode 100644 hrmsEjb/jxl/write/BorderLineStyle.java create mode 100644 hrmsEjb/jxl/write/DateFormat.java create mode 100644 hrmsEjb/jxl/write/DateFormats.java create mode 100644 hrmsEjb/jxl/write/DateTime.java create mode 100644 hrmsEjb/jxl/write/Label.java create mode 100644 hrmsEjb/jxl/write/Number.java create mode 100644 hrmsEjb/jxl/write/NumberFormats.java create mode 100644 hrmsEjb/jxl/write/VerticalAlignment.java create mode 100644 hrmsEjb/jxl/write/WritableCell.java create mode 100644 hrmsEjb/jxl/write/WritableCellFeatures.java create mode 100644 hrmsEjb/jxl/write/WritableCellFormat.java create mode 100644 hrmsEjb/jxl/write/WritableFont.java create mode 100644 hrmsEjb/jxl/write/WritableHyperlink.java create mode 100644 hrmsEjb/jxl/write/WritableImage.java create mode 100644 hrmsEjb/jxl/write/WritableSheet.java create mode 100644 hrmsEjb/jxl/write/WritableWorkbook.java create mode 100644 hrmsEjb/jxl/write/WriteException.java create mode 100644 hrmsEjb/jxl/write/biff/BOFRecord.java create mode 100644 hrmsEjb/jxl/write/biff/BackupRecord.java create mode 100644 hrmsEjb/jxl/write/biff/BlankRecord.java create mode 100644 hrmsEjb/jxl/write/biff/BookboolRecord.java create mode 100644 hrmsEjb/jxl/write/biff/BooleanRecord.java create mode 100644 hrmsEjb/jxl/write/biff/BottomMarginRecord.java create mode 100644 hrmsEjb/jxl/write/biff/BoundsheetRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ButtonPropertySetRecord.java create mode 100644 hrmsEjb/jxl/write/biff/CalcCountRecord.java create mode 100644 hrmsEjb/jxl/write/biff/CalcModeRecord.java create mode 100644 hrmsEjb/jxl/write/biff/CellValue.java create mode 100644 hrmsEjb/jxl/write/biff/CellXFRecord.java create mode 100644 hrmsEjb/jxl/write/biff/CodepageRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ColumnInfoRecord.java create mode 100644 hrmsEjb/jxl/write/biff/CompoundFile.java create mode 100644 hrmsEjb/jxl/write/biff/CopyAdditionalPropertySetsException.java create mode 100644 hrmsEjb/jxl/write/biff/CountryRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DBCellRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DSFRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DataValidation.java create mode 100644 hrmsEjb/jxl/write/biff/DataValidityListRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DataValiditySettingsRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DateFormatRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DateRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DefaultColumnWidth.java create mode 100644 hrmsEjb/jxl/write/biff/DefaultRowHeightRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DeltaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/DimensionRecord.java create mode 100644 hrmsEjb/jxl/write/biff/EOFRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ExtendedSSTRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ExternalSheetRecord.java create mode 100644 hrmsEjb/jxl/write/biff/File.java create mode 100644 hrmsEjb/jxl/write/biff/FooterRecord.java create mode 100644 hrmsEjb/jxl/write/biff/FormulaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/FunctionGroupCountRecord.java create mode 100644 hrmsEjb/jxl/write/biff/GridSetRecord.java create mode 100644 hrmsEjb/jxl/write/biff/GuttersRecord.java create mode 100644 hrmsEjb/jxl/write/biff/HeaderRecord.java create mode 100644 hrmsEjb/jxl/write/biff/HideobjRecord.java create mode 100644 hrmsEjb/jxl/write/biff/HorizontalCentreRecord.java create mode 100644 hrmsEjb/jxl/write/biff/HorizontalPageBreaksRecord.java create mode 100644 hrmsEjb/jxl/write/biff/HyperlinkRecord.java create mode 100644 hrmsEjb/jxl/write/biff/IndexRecord.java create mode 100644 hrmsEjb/jxl/write/biff/InterfaceEndRecord.java create mode 100644 hrmsEjb/jxl/write/biff/InterfaceHeaderRecord.java create mode 100644 hrmsEjb/jxl/write/biff/IterationRecord.java create mode 100644 hrmsEjb/jxl/write/biff/JxlWriteException.java create mode 100644 hrmsEjb/jxl/write/biff/LabelRecord.java create mode 100644 hrmsEjb/jxl/write/biff/LeftMarginRecord.java create mode 100644 hrmsEjb/jxl/write/biff/MMSRecord.java create mode 100644 hrmsEjb/jxl/write/biff/MarginRecord.java create mode 100644 hrmsEjb/jxl/write/biff/MergedCells.java create mode 100644 hrmsEjb/jxl/write/biff/MergedCellsRecord.java create mode 100644 hrmsEjb/jxl/write/biff/MulRKRecord.java create mode 100644 hrmsEjb/jxl/write/biff/NameRecord.java create mode 100644 hrmsEjb/jxl/write/biff/NineteenFourRecord.java create mode 100644 hrmsEjb/jxl/write/biff/NumberRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ObjProjRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ObjectProtectRecord.java create mode 100644 hrmsEjb/jxl/write/biff/PLSRecord.java create mode 100644 hrmsEjb/jxl/write/biff/PaneRecord.java create mode 100644 hrmsEjb/jxl/write/biff/PasswordRecord.java create mode 100644 hrmsEjb/jxl/write/biff/PrecisionRecord.java create mode 100644 hrmsEjb/jxl/write/biff/PrintGridLinesRecord.java create mode 100644 hrmsEjb/jxl/write/biff/PrintHeadersRecord.java create mode 100644 hrmsEjb/jxl/write/biff/Prot4RevPassRecord.java create mode 100644 hrmsEjb/jxl/write/biff/Prot4RevRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ProtectRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ReadBooleanFormulaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ReadDateFormulaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ReadErrorFormulaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ReadFormulaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ReadNumberFormulaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ReadStringFormulaRecord.java create mode 100644 hrmsEjb/jxl/write/biff/RefModeRecord.java create mode 100644 hrmsEjb/jxl/write/biff/RefreshAllRecord.java create mode 100644 hrmsEjb/jxl/write/biff/RightMarginRecord.java create mode 100644 hrmsEjb/jxl/write/biff/RowRecord.java create mode 100644 hrmsEjb/jxl/write/biff/RowsExceededException.java create mode 100644 hrmsEjb/jxl/write/biff/SCLRecord.java create mode 100644 hrmsEjb/jxl/write/biff/SSTContinueRecord.java create mode 100644 hrmsEjb/jxl/write/biff/SSTRecord.java create mode 100644 hrmsEjb/jxl/write/biff/SaveRecalcRecord.java create mode 100644 hrmsEjb/jxl/write/biff/ScenarioProtectRecord.java create mode 100644 hrmsEjb/jxl/write/biff/SelectionRecord.java create mode 100644 hrmsEjb/jxl/write/biff/SetupRecord.java create mode 100644 hrmsEjb/jxl/write/biff/SharedStrings.java create mode 100644 hrmsEjb/jxl/write/biff/SheetWriter.java create mode 100644 hrmsEjb/jxl/write/biff/StringRecord.java create mode 100644 hrmsEjb/jxl/write/biff/StyleXFRecord.java create mode 100644 hrmsEjb/jxl/write/biff/Styles.java create mode 100644 hrmsEjb/jxl/write/biff/SupbookRecord.java create mode 100644 hrmsEjb/jxl/write/biff/TabIdRecord.java create mode 100644 hrmsEjb/jxl/write/biff/TopMarginRecord.java create mode 100644 hrmsEjb/jxl/write/biff/UsesElfsRecord.java create mode 100644 hrmsEjb/jxl/write/biff/VerticalCentreRecord.java create mode 100644 hrmsEjb/jxl/write/biff/Weird1Record.java create mode 100644 hrmsEjb/jxl/write/biff/Window1Record.java create mode 100644 hrmsEjb/jxl/write/biff/Window2Record.java create mode 100644 hrmsEjb/jxl/write/biff/WindowProtectRecord.java create mode 100644 hrmsEjb/jxl/write/biff/WritableFontRecord.java create mode 100644 hrmsEjb/jxl/write/biff/WritableFonts.java create mode 100644 hrmsEjb/jxl/write/biff/WritableFormattingRecords.java create mode 100644 hrmsEjb/jxl/write/biff/WritableSheetImpl.java create mode 100644 hrmsEjb/jxl/write/biff/WritableWorkbookImpl.java create mode 100644 hrmsEjb/jxl/write/biff/WriteAccessRecord.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRAreaPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRBar3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRBarPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRBubblePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRCandlestickPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRCategoryAxisFormat.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRCategoryDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRCategorySeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRChartAxis.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRDataRange.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRHighLowDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRHighLowPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRLinePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRMeterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRMultiAxisPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRPie3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRPieDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRPiePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRScatterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRThermometerPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRTimeAxisFormat.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRTimeSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRValueAxisFormat.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRValueDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRValueDisplay.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRXAxisFormat.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRXyDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRXySeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRXyzDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRXyzSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/JRYAxisFormat.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseAreaPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBar3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBarPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBubblePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCandlestickPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategoryDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategorySeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseChartAxis.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseDataRange.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseLinePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMeterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMultiAxisPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBasePie3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBasePieDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBasePiePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseScatterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseThermometerPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDisplay.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXySeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignAreaPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBar3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBarPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBubblePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCandlestickPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCategoryDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignLinePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMeterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMultiAxisPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPie3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPieDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPiePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignScatterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignThermometerPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimePeriodDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignValueDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyzDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillAreaPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBar3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBarPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBubblePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCandlestickPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategoryDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategorySeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillChartAxis.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillLinePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMeterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMultiAxisPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPie3DPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPieDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPiePlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillScatterPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillThermometerPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillValueDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXySeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzSeries.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/CategoryChartHyperlinkProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/CategoryLabelGenerator.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/ChartHyperlinkProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/ChartRendererFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/DefaultXYZDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/HighLowChartHyperlinkProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/JRAxisFormat.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/JRMeterInterval.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/PieChartHyperlinkProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/PieLabelGenerator.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodChartHyperlinkProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodDatasetLabelGenerator.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesChartHyperlinkProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesLabelGenerator.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/XYChartHyperlinkProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/XYDatasetLabelGenerator.java create mode 100644 hrmsEjb/net/sf/jasperreports/charts/util/XYZElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCellContents.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstab.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabBucket.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabCell.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabColumnGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabMeasure.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabRowGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCellContents.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstab.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabBucket.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabCell.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabColumnGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabMeasure.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabRowGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRCrosstabOrigin.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCellContents.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstab.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabBucket.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabCell.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabColumnGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabMeasure.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabRowGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRCrosstabExpressionEvaluator.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabCell.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabColumnGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabMeasure.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabRowGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculator.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculatorFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketDefinition.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketingService.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/CrosstabCell.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/HeaderCell.java create mode 100644 hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/MeasureDefinition.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRAbstractChartCustomizer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRAbstractObjectFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRAbstractRenderer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRAbstractScriptlet.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRAlignment.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRAnchor.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRBand.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRBox.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRBoxContainer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRBreak.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRChart.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRChartCustomizer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRChartDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRChartPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRChild.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRCloneable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRCommonElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRCommonGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRCommonImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRCommonRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRCommonText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRConditionalStyle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRDataSource.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRDatasetParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRDatasetRun.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRDefaultFontProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRDefaultScriptlet.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRDefaultStyleProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRElementDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRElementGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JREllipse.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRException.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRExpression.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRExpressionChunk.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRExpressionCollector.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRFont.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRFrame.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRHyperlink.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkHelper.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRImageRenderer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRLine.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRLineBox.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JROrigin.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPenContainer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchor.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchorIndex.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintElementContainer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintEllipse.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintFrame.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlink.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameters.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintLine.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintPage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPrintText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPropertiesHolder.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPropertiesMap.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRPropertyExpression.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRQuery.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRQueryChunk.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRRenderable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRReport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRReportFont.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRReportTemplate.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRRewindableDataSource.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRRuntimeException.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRScriptletException.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRSortField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRStaticText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRStyle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRStyleContainer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRStyleSetter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRStyledTextAttributeSelector.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRSubreport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRSubreportParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRSubreportReturnValue.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRTemplate.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRTemplateReference.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRTextElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRTextField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRValueParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRVariable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRVirtualizable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRVirtualizationHelper.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRVirtualizer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRVisitable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JRVisitor.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JasperCompileManager.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JasperFillManager.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JasperPrint.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/JasperReport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBand.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxBottomPen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxLeftPen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxPen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxRightPen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxTopPen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBreak.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChart.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseConditionalStyle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetRun.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseEllipse.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpression.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpressionChunk.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFont.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFrame.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlink.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlinkParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLine.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLineBox.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseObjectFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBasePen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintHyperlink.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintPage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBasePropertyExpression.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQuery.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQueryChunk.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportFont.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportTemplate.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSortField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStaticText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStyle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportReturnValue.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBaseVariable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRBoxPen.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/base/JRVirtualPrintPage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/data/JRSortableDataSource.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractClassCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractJavaCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractMultiClassCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRClassCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRClassGenerator.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationSourceCode.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationUnit.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDefaultCompilationSourceCode.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignBand.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChart.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChartDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpression.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpressionChunk.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQuery.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQueryChunk.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignSubreportReturnValue.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRDesignVariable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRJavacCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRJdk13Compiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRJdtCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRMultiClassCompiler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRReportCompileData.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRSourceCompileTask.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRValidationException.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRValidationFault.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JRVerifier.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/JasperDesign.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementAddedEvent.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementRemovedEvent.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/events/JRChangeEventsSupport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/events/JRPropertyChangeSupport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/design/events/PropagationChangeListener.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/AbstractValueProvider.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/DistinctCountHolder.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBaseFiller.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalAverageIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalDistinctCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalStandardDeviationIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalSumIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalVarianceIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRByteAverageIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRByteCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRByteDistinctCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRByteIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRByteStandardDeviationIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRByteSumIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRByteVarianceIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculator.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRClonePool.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableHighestIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableLowestIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultFirstIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultNothingIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultSystemIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleAverageIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleDistinctCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleStandardDeviationIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleSumIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleVarianceIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluationTime.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluator.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRExpressionEvalException.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBand.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBreak.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCellContents.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChart.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartPlot.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillContext.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCrosstab.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDatasetRun.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementContainer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementDataset.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillEllipse.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillExpressionEvaluator.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillFrame.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGroup.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillHyperlinkHelper.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillInterruptedException.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillLine.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillObjectFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillParameter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillReportTemplate.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillStaticText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreportReturnValue.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextField.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFillVariable.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFiller.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatAverageIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatDistinctCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatStandardDeviationIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatSumIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatVarianceIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRHorizontalFiller.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactoryCache.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerAverageIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerDistinctCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerStandardDeviationIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerSumIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerVarianceIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRLongAverageIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRLongCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRLongDistinctCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRLongIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRLongStandardDeviationIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRLongSumIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRLongVarianceIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRMeasuredText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRPrintBand.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValues.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRShortAverageIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRShortCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRShortDistinctCountIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRShortIncrementerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRShortStandardDeviationIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRShortSumIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRShortVarianceIncrementer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunResult.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunner.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunnerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateEllipse.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateFrame.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateLine.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintEllipse.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintFrame.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintGraphicElement.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintImage.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintLine.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateRectangle.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurerFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRVerticalFiller.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRVirtualizationContext.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/fill/JRYComparator.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuterFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/DefaultFormatFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/FileResolver.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/FormatFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRAbstractImageEncoder.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRBoxUtil.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRClassLoader.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRColorUtil.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRDataUtils.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRDelegationVisitor.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRElementsVisitor.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRFontUtil.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRGraphEnvInitializer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRImageEncoder.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRImageLoader.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRImageReader.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageEncoder.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageReader.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRLoader.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRPenUtil.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRProperties.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRQueryChunkHandler.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRQueryExecuterUtils.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRQueryParser.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRResourcesUtil.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRSaver.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRSingletonCache.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRStringUtil.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRStyleResolver.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRStyledText.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRStyledTextParser.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRTextAttribute.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRTextMeasurerUtil.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRTypeSniffer.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRVisitorSupport.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/JRXmlWriteHelper.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/LineBoxWrapper.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessor.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessorFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/Pair.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/ProtectionDomainFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/SingleProtectionDomainFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/util/ThreadLocalStack.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRPropertyDigesterRule.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlBaseWriter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlConstants.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigester.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigesterFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlLoader.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateDigesterFactory.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateLoader.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlWriter.java create mode 100644 hrmsEjb/net/sf/jasperreports/engine/xml/XmlWriterVisitor.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/BeanUtils.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/ConversionException.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/ConvertUtils.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/Converter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/DynaBean.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/DynaClass.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/DynaProperty.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/MappedPropertyDescriptor.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/MethodUtils.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/PropertyUtils.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/AbstractArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/BigDecimalConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/BigIntegerConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/BooleanArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/BooleanConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/ByteArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/ByteConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/CharacterArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/CharacterConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/ClassConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/DoubleArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/DoubleConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/FloatArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/FloatConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/IntegerArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/IntegerConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/LongArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/LongConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/ShortArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/ShortConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/SqlDateConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/SqlTimeConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/SqlTimestampConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/StringArrayConverter.java create mode 100644 hrmsEjb/org/apache/commons/beanutils/converters/StringConverter.java create mode 100644 hrmsEjb/org/apache/commons/collections/ArrayStack.java create mode 100644 hrmsEjb/org/apache/commons/collections/Buffer.java create mode 100644 hrmsEjb/org/apache/commons/collections/BufferUnderflowException.java create mode 100644 hrmsEjb/org/apache/commons/collections/DefaultMapEntry.java create mode 100644 hrmsEjb/org/apache/commons/collections/FastHashMap.java create mode 100644 hrmsEjb/org/apache/commons/collections/ReferenceMap.java create mode 100644 hrmsEjb/org/apache/commons/collections/SequencedHashMap.java create mode 100644 hrmsEjb/org/apache/commons/collections/comparators/ComparableComparator.java create mode 100644 hrmsEjb/org/apache/commons/collections/comparators/ReverseComparator.java create mode 100644 hrmsEjb/org/apache/commons/digester/AbstractObjectCreationFactory.java create mode 100644 hrmsEjb/org/apache/commons/digester/BeanPropertySetterRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/CallMethodRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/CallParamRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/Digester.java create mode 100644 hrmsEjb/org/apache/commons/digester/FactoryCreateRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/ObjectCreateRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/ObjectCreationFactory.java create mode 100644 hrmsEjb/org/apache/commons/digester/Rule.java create mode 100644 hrmsEjb/org/apache/commons/digester/RuleSet.java create mode 100644 hrmsEjb/org/apache/commons/digester/RuleSetBase.java create mode 100644 hrmsEjb/org/apache/commons/digester/Rules.java create mode 100644 hrmsEjb/org/apache/commons/digester/RulesBase.java create mode 100644 hrmsEjb/org/apache/commons/digester/SetNextRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/SetPropertiesRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/SetPropertyRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/SetRootRule.java create mode 100644 hrmsEjb/org/apache/commons/digester/SetTopRule.java create mode 100644 hrmsEjb/org/apache/commons/logging/Log.java create mode 100644 hrmsEjb/org/apache/commons/logging/LogConfigurationException.java create mode 100644 hrmsEjb/org/apache/commons/logging/LogFactory.java create mode 100644 hrmsEjb/org/apache/struts/action/Action.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionError.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionErrors.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionForm.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionFormBean.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionFormBeans.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionForward.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionForwards.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionMapping.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionMappings.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionMessage.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionMessages.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionServlet.java create mode 100644 hrmsEjb/org/apache/struts/action/ActionServletWrapper.java create mode 100644 hrmsEjb/org/apache/struts/action/DynaActionForm.java create mode 100644 hrmsEjb/org/apache/struts/action/DynaActionFormClass.java create mode 100644 hrmsEjb/org/apache/struts/action/ExceptionHandler.java create mode 100644 hrmsEjb/org/apache/struts/action/PlugIn.java create mode 100644 hrmsEjb/org/apache/struts/action/RequestProcessor.java create mode 100644 hrmsEjb/org/apache/struts/config/ActionConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/ActionMappingFactory.java create mode 100644 hrmsEjb/org/apache/struts/config/AddDataSourcePropertyRule.java create mode 100644 hrmsEjb/org/apache/struts/config/ApplicationConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/ConfigRuleSet.java create mode 100644 hrmsEjb/org/apache/struts/config/ControllerConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/DataSourceConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/ExceptionConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/FormBeanConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/FormPropertyConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/ForwardConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/MessageResourcesConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/ModuleConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/ModuleConfigFactory.java create mode 100644 hrmsEjb/org/apache/struts/config/PlugInConfig.java create mode 100644 hrmsEjb/org/apache/struts/config/PlugInSetPropertyRule.java create mode 100644 hrmsEjb/org/apache/struts/config/SetActionMappingClassRule.java create mode 100644 hrmsEjb/org/apache/struts/config/impl/ModuleConfigImpl.java create mode 100644 hrmsEjb/org/apache/struts/upload/MultipartRequestHandler.java create mode 100644 hrmsEjb/org/apache/struts/upload/MultipartRequestWrapper.java create mode 100644 hrmsEjb/org/apache/struts/util/ErrorMessages.java create mode 100644 hrmsEjb/org/apache/struts/util/GenericDataSource.java create mode 100644 hrmsEjb/org/apache/struts/util/MessageResources.java create mode 100644 hrmsEjb/org/apache/struts/util/MessageResourcesFactory.java create mode 100644 hrmsEjb/org/apache/struts/util/ModuleException.java create mode 100644 hrmsEjb/org/apache/struts/util/RequestUtils.java create mode 100644 hrmsEjb/org/apache/struts/util/ResponseUtils.java create mode 100644 hrmsEjb/org/apache/struts/util/ServletContextWriter.java create mode 100644 hrmsEjb/org/apache/struts/util/TokenProcessor.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/PSVIProvider.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/StringList.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAnnotation.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeDeclaration.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeGroupDefinition.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSComplexTypeDefinition.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSElementDeclaration.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModel.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroup.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroupDefinition.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamedMap.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItem.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItemList.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNotationDeclaration.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObject.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObjectList.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSParticle.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSSimpleTypeDefinition.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTerm.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTypeDefinition.java create mode 100644 hrmsEjb/org/apache/xerces/impl/xs/psvi/XSWildcard.java create mode 100644 hrmsEjb/org/apache/xerces/parsers/AbstractSAXParser.java create mode 100644 hrmsEjb/org/apache/xerces/parsers/AbstractXMLDocumentParser.java create mode 100644 hrmsEjb/org/apache/xerces/parsers/ObjectFactory.java create mode 100644 hrmsEjb/org/apache/xerces/parsers/SAXParser.java create mode 100644 hrmsEjb/org/apache/xerces/parsers/SecuritySupport.java create mode 100644 hrmsEjb/org/apache/xerces/parsers/SecuritySupport12.java create mode 100644 hrmsEjb/org/apache/xerces/parsers/XMLParser.java create mode 100644 hrmsEjb/org/apache/xerces/util/EntityResolverWrapper.java create mode 100644 hrmsEjb/org/apache/xerces/util/ErrorHandlerWrapper.java create mode 100644 hrmsEjb/org/apache/xerces/util/SymbolHash.java create mode 100644 hrmsEjb/org/apache/xerces/util/SymbolTable.java create mode 100644 hrmsEjb/org/apache/xerces/xni/Augmentations.java create mode 100644 hrmsEjb/org/apache/xerces/xni/NamespaceContext.java create mode 100644 hrmsEjb/org/apache/xerces/xni/QName.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XMLAttributes.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XMLDTDContentModelHandler.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XMLDTDHandler.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XMLDocumentHandler.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XMLLocator.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XMLResourceIdentifier.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XMLString.java create mode 100644 hrmsEjb/org/apache/xerces/xni/XNIException.java create mode 100644 hrmsEjb/org/apache/xerces/xni/grammars/Grammar.java create mode 100644 hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarDescription.java create mode 100644 hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarPool.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLComponentManager.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLConfigurationException.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLDTDContentModelSource.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLDTDSource.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLDocumentSource.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLEntityResolver.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLErrorHandler.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLInputSource.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLParseException.java create mode 100644 hrmsEjb/org/apache/xerces/xni/parser/XMLParserConfiguration.java create mode 100644 hrmsEjb/org/apache/xerces/xni/psvi/AttributePSVI.java create mode 100644 hrmsEjb/org/apache/xerces/xni/psvi/ElementPSVI.java create mode 100644 hrmsEjb/org/apache/xerces/xni/psvi/ItemPSVI.java create mode 100644 hrmsEjb/org/nfunk/jep/ASTConstant.java create mode 100644 hrmsEjb/org/nfunk/jep/ASTFunNode.java create mode 100644 hrmsEjb/org/nfunk/jep/ASTStart.java create mode 100644 hrmsEjb/org/nfunk/jep/ASTVarNode.java create mode 100644 hrmsEjb/org/nfunk/jep/EvaluatorVisitor.java create mode 100644 hrmsEjb/org/nfunk/jep/FunctionTable.java create mode 100644 hrmsEjb/org/nfunk/jep/JEP.java create mode 100644 hrmsEjb/org/nfunk/jep/JJTParserState.java create mode 100644 hrmsEjb/org/nfunk/jep/JavaCharStream.java create mode 100644 hrmsEjb/org/nfunk/jep/Node.java create mode 100644 hrmsEjb/org/nfunk/jep/Operator.java create mode 100644 hrmsEjb/org/nfunk/jep/OperatorSet.java create mode 100644 hrmsEjb/org/nfunk/jep/ParseException.java create mode 100644 hrmsEjb/org/nfunk/jep/Parser.java create mode 100644 hrmsEjb/org/nfunk/jep/ParserConstants.java create mode 100644 hrmsEjb/org/nfunk/jep/ParserDumpVisitor.java create mode 100644 hrmsEjb/org/nfunk/jep/ParserTokenManager.java create mode 100644 hrmsEjb/org/nfunk/jep/ParserTreeConstants.java create mode 100644 hrmsEjb/org/nfunk/jep/ParserVisitor.java create mode 100644 hrmsEjb/org/nfunk/jep/SimpleNode.java create mode 100644 hrmsEjb/org/nfunk/jep/SymbolTable.java create mode 100644 hrmsEjb/org/nfunk/jep/Token.java create mode 100644 hrmsEjb/org/nfunk/jep/TokenMgrError.java create mode 100644 hrmsEjb/org/nfunk/jep/Variable.java create mode 100644 hrmsEjb/org/nfunk/jep/VariableFactory.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Abs.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Add.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ArcCosine.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ArcCosineH.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ArcSine.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ArcSineH.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ArcTanH.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ArcTangent.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ArcTangent2.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Arg.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Assign.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Comparative.java create mode 100644 hrmsEjb/org/nfunk/jep/function/ComplexPFMC.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Cosine.java create mode 100644 hrmsEjb/org/nfunk/jep/function/CosineH.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Cross.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Divide.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Dot.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Exp.java create mode 100644 hrmsEjb/org/nfunk/jep/function/If.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Imaginary.java create mode 100644 hrmsEjb/org/nfunk/jep/function/List.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Logarithm.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Logical.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Modulus.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Multiply.java create mode 100644 hrmsEjb/org/nfunk/jep/function/NaturalLogarithm.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Not.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Polar.java create mode 100644 hrmsEjb/org/nfunk/jep/function/PostfixMathCommand.java create mode 100644 hrmsEjb/org/nfunk/jep/function/PostfixMathCommandI.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Power.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Random.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Real.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Sine.java create mode 100644 hrmsEjb/org/nfunk/jep/function/SineH.java create mode 100644 hrmsEjb/org/nfunk/jep/function/SpecialEvaluationI.java create mode 100644 hrmsEjb/org/nfunk/jep/function/SquareRoot.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Str.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Subtract.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Sum.java create mode 100644 hrmsEjb/org/nfunk/jep/function/TanH.java create mode 100644 hrmsEjb/org/nfunk/jep/function/Tangent.java create mode 100644 hrmsEjb/org/nfunk/jep/function/UMinus.java create mode 100644 hrmsEjb/org/nfunk/jep/type/Complex.java create mode 100644 hrmsEjb/org/nfunk/jep/type/DoubleNumberFactory.java create mode 100644 hrmsEjb/org/nfunk/jep/type/NumberFactory.java create mode 100644 hrmsEjb/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml create mode 100644 hrmsEjb/public_html/hrms/includes/images/Brand_Final.gif create mode 100644 hrmsEjb/public_html/hrms/jsp/AgeAnalysisReport.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmAcademicQualRep.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmAdhocReport.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmAprslEmployee.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmEmpAwardDtls.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmEmpPersAssetDtls.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmEmpPersHealth.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmEmpPersInsDtls.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmEmpPersLngDtls.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmMediclaimMaster.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmMisReport.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmMyWorkflow.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmOrgDistMst.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmOrgTehMst.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmRetirementForecastRep.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/HrmRoasterEntry.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower1.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower2.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower3.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower5.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepBranchListCode.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepBranchListName.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepBranchListZone.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepEmpAddress.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepIncrDue.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepLeaveLedger.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepRetrDue.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepStayBranch.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/RepStayGrade.jsp create mode 100644 hrmsEjb/public_html/hrms/jsp/report.jsp create mode 100644 hrmsEjb/public_html/hrms/report/AgeAnalysisReport.jasper create mode 100644 hrmsEjb/public_html/hrms/report/AllIndiaManpowerList.jasper create mode 100644 hrmsEjb/public_html/hrms/report/All_India_CTC.jasper create mode 100644 hrmsEjb/public_html/hrms/report/All_india_MP_for_mediclaim.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Confidential_File_Report.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Confirmation_Due.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Manpower_Distribution.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Off_Rated_Poor.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Qual_All_India_Employees.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Recr_List_During_A_Period.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Recruitment_Cessation_Status_For_A_Period.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Retirement_Details_For_A_Period.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Status_Of_Disciplinary_Cases.jasper create mode 100644 hrmsEjb/public_html/hrms/report/Training_Details.jasper create mode 100644 hrmsEjb/wenrgise/common/bean/AccessBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/AuthorizationBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/BaseBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/BaseDetailBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/BaseHeaderBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/CommonAttributes.java create mode 100644 hrmsEjb/wenrgise/common/bean/DynamicMenuBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/EmpInfoBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/LOVBean.java create mode 100644 hrmsEjb/wenrgise/common/bean/MenuBean.java create mode 100644 hrmsEjb/wenrgise/common/businessdelegate/BaseBD.java create mode 100644 hrmsEjb/wenrgise/common/businessdelegate/LOVBD.java create mode 100644 hrmsEjb/wenrgise/common/businessdelegate/SecurityBD.java create mode 100644 hrmsEjb/wenrgise/common/ejb/business/HrmCommonBO.java create mode 100644 hrmsEjb/wenrgise/common/exception/BaseException.java create mode 100644 hrmsEjb/wenrgise/common/exception/EnrgiseApplicationException.java create mode 100644 hrmsEjb/wenrgise/common/exception/EnrgiseMessageKeyException.java create mode 100644 hrmsEjb/wenrgise/common/exception/EnrgiseSystemException.java create mode 100644 hrmsEjb/wenrgise/common/utility/ArrayListUtil.java create mode 100644 hrmsEjb/wenrgise/common/utility/ContextProvider.java create mode 100644 hrmsEjb/wenrgise/common/utility/DateUtility.java create mode 100644 hrmsEjb/wenrgise/common/utility/DebugHelper.java create mode 100644 hrmsEjb/wenrgise/common/utility/EnrgiseConstants.java create mode 100644 hrmsEjb/wenrgise/common/utility/EnrgiseListener.java create mode 100644 hrmsEjb/wenrgise/common/utility/EnrgiseManager.java create mode 100644 hrmsEjb/wenrgise/common/utility/EnrgisePlugIn.java create mode 100644 hrmsEjb/wenrgise/common/utility/EnrgiseUtil.java create mode 100644 hrmsEjb/wenrgise/common/utility/LOVManager.java create mode 100644 hrmsEjb/wenrgise/common/utility/MessageKey.java create mode 100644 hrmsEjb/wenrgise/common/utility/ParamUtil.java create mode 100644 hrmsEjb/wenrgise/common/utility/RecordMetaInfo.java create mode 100644 hrmsEjb/wenrgise/common/utility/ReportManager.java create mode 100644 hrmsEjb/wenrgise/common/utility/ReportPlugin.java create mode 100644 hrmsEjb/wenrgise/common/utility/ReportReader.java create mode 100644 hrmsEjb/wenrgise/common/utility/ServiceLocator.java create mode 100644 hrmsEjb/wenrgise/common/utility/UserInfo.java create mode 100644 hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider.java create mode 100644 hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider2.java create mode 100644 hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator.java create mode 100644 hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator2.java create mode 100644 hrmsEjb/wenrgise/common/vo/BaseDetailInfo.java create mode 100644 hrmsEjb/wenrgise/common/vo/BaseDetailVO.java create mode 100644 hrmsEjb/wenrgise/common/vo/BaseHeaderVO.java create mode 100644 hrmsEjb/wenrgise/common/vo/BaseQueryVO.java create mode 100644 hrmsEjb/wenrgise/common/vo/BaseVO.java create mode 100644 hrmsEjb/wenrgise/common/vo/ComboVO.java create mode 100644 hrmsEjb/wenrgise/common/vo/DetailSizeValues.java create mode 100644 hrmsEjb/wenrgise/common/vo/LovQueryVO.java create mode 100644 hrmsEjb/wenrgise/common/vo/LovVO.java create mode 100644 hrmsEjb/wenrgise/common/vo/ThisPageVO.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/AddRowAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/BaseAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/CancelAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/DecrAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/DeleteAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/DeleteRowAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/ExitAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetButtonAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetDetailAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetDetailPageAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetHeaderAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetInsertAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetNextHeaderAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetRefreshTabAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/GetTabAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/LOVAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/LogOutAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/NewModeAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/QueryModeAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/RefreshAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/SaveAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/SaveDetailAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/action/ValidateAction.java create mode 100644 hrmsEjb/wenrgise/common/webtier/form/BaseForm.java create mode 100644 hrmsEjb/wenrgise/common/webtier/form/BaseLOVForm.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/DetailScreen.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/DetailScreens.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/EnrgiseApp.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/EnrgiseForms.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/HashedEnrgiseForms.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/INFOClass.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/LOV.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/LOVClass.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/LOVInfo.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/Module.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/Report.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/ReportInfo.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/Reports.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/Screen.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/ScreenInfo.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/ScreenMode.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/ScreenModes.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/Screens.java create mode 100644 hrmsEjb/wenrgise/common/xml/vo/SingleForm.java create mode 100644 hrmsEjb/wenrgise/ejb/common/business/BaseBO.java create mode 100644 hrmsEjb/wenrgise/ejb/common/business/SecurityBO.java create mode 100644 hrmsEjb/wenrgise/ejb/common/facade/CommonFacade.java create mode 100644 hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeBean.java create mode 100644 hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeHome.java create mode 100644 hrmsEjb/wenrgise/ejb/common/facade/SecurityFacade.java create mode 100644 hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeBean.java create mode 100644 hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeHome.java create mode 100644 hrmsEjb/wenrgise/ejb/common/helper/DBObject.java create mode 100644 hrmsEjb/wenrgise/ejb/common/helper/InputDBObject.java create mode 100644 hrmsEjb/wenrgise/ejb/common/helper/ParameterTypes.java create mode 100644 hrmsEjb/wenrgise/ejb/common/helper/QueryRow.java create mode 100644 hrmsEjb/wenrgise/ejb/common/helper/QueryValue.java create mode 100644 hrmsEjb/wenrgise/ejb/common/helper/ScreenWrapper.java create mode 100644 hrmsEjb/wenrgise/ejb/common/helper/SysadminSql.java create mode 100644 hrmsEjb/wenrgise/ejb/common/session/UserSession.java create mode 100644 hrmsEjb/wenrgise/ejb/common/session/UserSessionBean.java create mode 100644 hrmsEjb/wenrgise/ejb/common/session/UserSessionHome.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/CommonAdditionalUtility.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/DBUtilitiesBean.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/EnrgiseListener.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/EnrgiseManager.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/EnrgisePlugIn.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/EnrgiseSessionListener.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/LOVManager.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/ParamUtil.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/PositionResolver.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/ServiceLocator.java create mode 100644 hrmsEjb/wenrgise/ejb/common/utility/myContextProvider.java create mode 100644 hrmsEjb/wenrgise/ejb/help/business/HelpBO.java create mode 100644 hrmsEjb/wenrgise/ejb/help/business/SearchBO.java create mode 100644 hrmsEjb/wenrgise/ejb/help/facade/HelpFacade.java create mode 100644 hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeBean.java create mode 100644 hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeHome.java create mode 100644 hrmsEjb/wenrgise/help/bean/HelpChapterBean.java create mode 100644 hrmsEjb/wenrgise/help/bean/HelpComponentBean.java create mode 100644 hrmsEjb/wenrgise/help/bean/HelpContentBean.java create mode 100644 hrmsEjb/wenrgise/help/bean/HelpPartBean.java create mode 100644 hrmsEjb/wenrgise/help/bean/SearchBean.java create mode 100644 hrmsEjb/wenrgise/help/businessdelegate/HelpBD.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAppTempHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslEmployeeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslKPADtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmChargeReportHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmClaimMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmClaimMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpDepDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpDepHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHealthBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnAppDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnAppHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnChartDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnChartHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnDisDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLnMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvApplnDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvApplnHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvCancHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvCreditDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvCreditEmpBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvCreditHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvEncashHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmLvMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmMisReportDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmMisReportHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgClassDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgClassHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmReportBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepApplnDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepApplnHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepOrderDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepOrderHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSettleDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmSettleHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngCalDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngCalHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngFacBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java create mode 100644 hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAppTempBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmBaseBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnAppBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnChartBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmMisReportBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmSettleBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java create mode 100644 hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnApplBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnChrgRptBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnOrderForSingleEmpBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransApplBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransChrgRptBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclApplBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclOrderForSingleEmpBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransOrderForSingleEmpBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAdhocReportBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvApplnBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleHeadsBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettlementBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAgeAnalysisBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAppTempBusinessObject.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmApprisalKPABO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslSpcTmplBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartOrderBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartRuleBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttInBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttOutBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttQueryBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpDayOffBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpShiftBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmployeeShiftRosterBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftRosterGenBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupDayOffBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupShiftBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmBaseBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmClaimMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpClaimBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDepDtlBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDiscActionBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpPersBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleQueryBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLnAppBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLnChartBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLnMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLoginBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnValidationBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCancQueryBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCreditBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLvEncashBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLvLedgerBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmLvMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmMediclaimMasterBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmMisReportBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmMyWorkflowBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCalMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgClassDtlBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCntryMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgDistMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolCalBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolTypeMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgIncrementBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgLangMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgQualMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRatingMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRelationMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgReligionMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgScaleMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgSkillMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgTehMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgWorkGroupMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmCriteriaBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmExperienceScoreBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmGenAssBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmKPARatingBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmNoticeDtlBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmOrderBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmQualCriteriaBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmTestScoreBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmViewAssBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvAttrBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvtMtnBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRecApplnMtnBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRecEmpRecCreationBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRecRoasterEntryBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRecScrutAppMntBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRecTestCentreMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmReportBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmRetireForecastBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmSepApplnBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmSepCatMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrEmpBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrLstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrTmplMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmSepOrderBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalCloseBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsBudBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsMstBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpAttBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpFdbkBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpHistBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpReqBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacFdbkBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacTrngBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngInsCrsBO.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacade.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacade.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacade.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeBean.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/hrms/helper/WorkFlowSimulator.java create mode 100644 hrmsEjb/wenrgise/hrms/service/HrmsService.java create mode 100644 hrmsEjb/wenrgise/hrms/service/HrmsServiceFactory.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDDptnApplQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDTransApplQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAdhocReportQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAdvMstQueryVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAppTempQueryVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAprslQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttShiftMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmClaimMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmEmpClaimQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmEmpPersQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLnAppQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLnChartQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLnMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLvCancQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLvCancQueryQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLvEncashQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLvLedgerQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmLvMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmMisreportQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmMyWorkflowQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgCalMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgHolCalQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgIncrementQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmGenAssQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmOrderQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmPrmViewAssQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmRetireForecastQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmRoasterEntryQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmSepApplnQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmSepCatMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmSepClrEmpQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmSepOrderQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmSettleQueryVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngCalQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngFacQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/action/BaseAction.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/action/DecrAction.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/action/HrmGenLoginAction.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/action/ReportViewerAction.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmBaseForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmMisReportForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/JasperReportForm.java create mode 100644 hrmsEjb/wenrgise/hrms/webtier/form/ReportInputForm.java create mode 100644 hrmsEjb/wenrgise/report/excel/ExcelReport.java create mode 100644 hrmsEjb/wenrgise/report/excel/ExcelReportInformation.java create mode 100644 hrmsEjb/wenrgise/report/excel/ExcelReportServlet.java create mode 100644 hrmsEjb/wenrgise/report/excel/Heading.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/DocHistoryDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WFLRouteDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WFLRouteHdrBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WFLTransDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflActMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflAuthorizationBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDOPGrpDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDOPGrpHdrBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDelegateMstDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDelegateMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDocMstHdrBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDocTypeDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapHdrBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflDtlsHdrBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflWorkListBean.java create mode 100644 hrmsEjb/wenrgise/workflow/bean/WflWorkListInfoBean.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflConstants.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflDepartment.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflDocumentInfo.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflResource.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflRole.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflService.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflSite.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WflStatus.java create mode 100644 hrmsEjb/wenrgise/workflow/core/WorkFlow.java create mode 100644 hrmsEjb/wenrgise/workflow/core/impl/WflDepartmentImpl.java create mode 100644 hrmsEjb/wenrgise/workflow/core/impl/WflDocumentInfoImpl.java create mode 100644 hrmsEjb/wenrgise/workflow/core/impl/WflResourceImpl.java create mode 100644 hrmsEjb/wenrgise/workflow/core/impl/WflServiceImpl.java create mode 100644 hrmsEjb/wenrgise/workflow/core/impl/WflSiteImpl.java create mode 100644 hrmsEjb/wenrgise/workflow/core/impl/WflStatusImpl.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/DocHistoryDtlBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WFLDtlDocActivityMapBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WflActivityMstBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WflDOPGrpBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WflDelegationMstBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WflDocMstBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WflRouteDtlBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowBaseBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowCommonBO.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeBean.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocal.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocalHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2Home.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacadeHome.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2Home_Stub.java create mode 100644 hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2_Stub.java create mode 100644 hrmsEjb/wenrgise/workflow/exception/ApproverNotFoundException.java create mode 100644 hrmsEjb/wenrgise/workflow/exception/AtributesNotDefinedException.java create mode 100644 hrmsEjb/wenrgise/workflow/exception/MailNotSentException.java create mode 100644 hrmsEjb/wenrgise/workflow/exception/WorkFlowServiceNotFoundException.java create mode 100644 hrmsEjb/wenrgise/workflow/helper/HrmsSimulator.java create mode 100644 hrmsEjb/wenrgise/workflow/impl/WorkFlowImpl.java create mode 100644 hrmsEjb/wenrgise/workflow/service/WorkFlowService.java create mode 100644 hrmsEjb/wenrgise/workflow/service/WorkFlowServiceFactory.java create mode 100644 hrmsEjb/wenrgise/workflow/utility/AttributesHandler.java create mode 100644 hrmsEjb/wenrgise/workflow/utility/ConditionChecker.java create mode 100644 hrmsEjb/wenrgise/workflow/utility/Node.java create mode 100644 hrmsEjb/wenrgise/workflow/utility/RouteHandler.java create mode 100644 hrmsEjb/wenrgise/workflow/utility/WflDocParamsManager.java create mode 100644 hrmsEjb/wenrgise/workflow/utility/WorkFlowServiceFactory.java create mode 100644 hrmsEjb/wenrgise/workflow/utility/WorkFlowUtil.java create mode 100644 hrmsEjb/wenrgise/workflow/vo/WflDOPGrpQVO.java create mode 100644 hrmsEjb/wenrgise/workflow/vo/WflDelegationQVO.java create mode 100644 hrmsEjb/wenrgise/workflow/vo/WflDocMstQVO.java create mode 100644 hrmsEjb/wenrgise/workflow/vo/WflDtlDocActivityMapQVO.java create mode 100644 hrmsEjb/wenrgise/workflow/vo/WflDtlsQVO.java create mode 100644 hrmsEjb/wenrgise/workflow/vo/WflRouteDtlQVO.java create mode 100644 hrmsEjb/wenrgise/workflow/xml/vo/WflDocParam.java create mode 100644 hrmsEjb/wenrgise/workflow/xml/vo/WflDocParams.java create mode 100644 hrmsWeb/WEB-INF/EnrgiseApp.xml create mode 100644 hrmsWeb/WEB-INF/EnrgiseConfig.xml create mode 100644 hrmsWeb/WEB-INF/EnrgiseLOV.xml create mode 100644 hrmsWeb/WEB-INF/EnrgiseReport.xml create mode 100644 hrmsWeb/WEB-INF/WflDocParameters.xml create mode 100644 hrmsWeb/WEB-INF/classes/ApplicationResources.properties create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseApp.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseConfig.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseLOV.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseReport.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/WflDocParameters.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/ApplicationResources.properties create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/connections.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/struts-config.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/WEB-INF/web.xml create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Balesh_Photo.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Brand_Final.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/LaunchPad.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/LaunchPad1.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Login.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Navigator.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Thumbs.db create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/alert.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/bullet.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_AssetManagement.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_AssetManagement_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_ExitLaunchPad.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_GeneralLedger.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_GeneralLedger_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_GeneralLedger_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_HumanResourceManagement.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_HumanResourceManagement_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_HumanResourceManagement_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryAccounting.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryAccounting_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryAccounting_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_OperationAndMaintainance.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_OperationAndMaintainance_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_OperationAndMaintainance_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_OperationAndManagement.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PayrollAccounting.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PayrollAccounting_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PayrollAccounting_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_ProblemTrackingAndMaintainance.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PurchaseManagement.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PurchaseManagement_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PurchaseManagement_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_next.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_next_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_next_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_prev.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_prev_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_prev_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_first.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_first_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_first_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_lov.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_next.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_next_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_next_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/cal.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/cal_act.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/cal_dis.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/cross.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/delete.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/delete_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/delete_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/enrgise.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_undo.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_undo_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_undo_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/exit.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/exit_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_b.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_b_dis.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_lb.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_lb_dis.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_r.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_r_dis.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/line_l.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/line_r.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/line_t.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_Enrgise.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_Purchase.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_SysAdmin.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/man.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/menu_arrow.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/minus.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/next.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/next_year.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/pixel.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/plus.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/prev.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/prev_year.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/print.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/print_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/print_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/refresh.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/refresh_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/refresh_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/save.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/save_act.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/save_dis.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/tab_blue.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/table_bg.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu.jpg create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/Thumbs.db create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/base.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/cd.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/empty.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/folder.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/folderopen.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/globe.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/imgfolder.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/join.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/joinbottom.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/line.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/lock.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/minus.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/minusbottom.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/musicfolder.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/nolines_minus.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/nolines_plus.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/page.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/plus.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/plusbottom.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/question.gif create mode 100644 hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/trash.gif create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/bean/BaseBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/bean/BaseDetailBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/bean/BaseHeaderBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/bean/CommonAttributes.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/bean/EmpInfoBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/businessdelegate/SecurityBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/exception/BaseException.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/exception/EnrgiseApplicationException.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/exception/EnrgiseMessageKeyException.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/exception/EnrgiseSystemException.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ContextProvider.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/DebugHelper.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/EnrgiseManager.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/EnrgisePlugIn.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/EnrgiseUtil.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/MessageKey.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportPlugin.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportReader.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ServiceLocator.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/UserInfo.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider2.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator2.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseDetailVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseHeaderVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseQueryVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/AddRowAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/BaseAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/CancelAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DecrAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteRowAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ExitAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetButtonAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailPageAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetHeaderAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetInsertAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetNextHeaderAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetRefreshTabAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetTabAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LOVAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LogOutAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/NewModeAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/OnLoadAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/QueryModeAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/RefreshAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveDetailAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ValidateAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/business/BaseBO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacade.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacadeHome.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/DBObject.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/InputDBObject.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryRow.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryValue.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSession.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSessionHome.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/CommonAdditionalUtility.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/DBUtilitiesBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseListener.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseManager.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgisePlugIn.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseSessionListener.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/LOVManager.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ParamUtil.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ServiceLocator.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/myContextProvider.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/business/SearchBO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacade.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeHome.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/help/bean/SearchBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/help/businessdelegate/HelpBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppTempHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmployeeBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslKPADtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmChargeReportHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHealthBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnDisDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditEmpBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvEncashHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmReportBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAppTempBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmBaseBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnAppBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnChartBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMisReportBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSettleBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacade.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacadeHome.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacade.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacade.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/helper/WorkFlowSimulator.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnApplQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransApplQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdhocReportQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvMstQueryVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppTempQueryVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmClaimMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpClaimQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpPersQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnAppQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnChartQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQueryQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvEncashQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvLedgerQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMisreportQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMyWorkflowQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCalMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolCalQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgIncrementQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmGenAssQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmOrderQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmViewAssQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRetireForecastQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRoasterEntryQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepApplnQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepCatMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrEmpQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepOrderQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSettleQueryVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/AddAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/BaseAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/DecrAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/GetTabAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenEligRuleAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenLoginAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenWflAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmLvApplAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmTrngCalCloseCalCloseAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/ReportViewerAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/SaveDetailPageAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnApplForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnChrgRptForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnOrderForSingleEmpForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransApplForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransChrgRptForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclApplForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclOrderSingleEmpForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransOrderForSingleEmpForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvApplnForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleHeadsForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalKPAForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalTemplateForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslSpcTmplForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartOrderForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartRuleForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttInForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttOutForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttQueryForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpDayOffForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpShiftForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftDetailForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftRosterForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftMasterForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftRosterGenForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupDayOffForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupShiftForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmBaseForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmClaimMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpClaimForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDepDtlForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDiscActionForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpPersDtlForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleQueryForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenLoginActionForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnAppForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnChartForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnQueryForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancQueryForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCreditForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvEncashForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvLedgerForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMisReportForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCalMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgClassDtlForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCntryMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolCalForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolTypeMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgIncrementForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgLangMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgQualMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRatingMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRelationMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgReligionMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgScaleMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgSkillMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgWorkGroupMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmCriteriaForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmExperienceScoreForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmGenAssForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmKPARatingForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmNoticeDetailForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmOrderForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmQualCriteriaForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmTestScoreForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmViewAssForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvAttrForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvtMtnForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecApplnMtnForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecEmpRecCreationForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecScrutAppMtnForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecTestCentreMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepApplnForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstrForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrEmpForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrLstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrTmplMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepOrderForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSettlementHeadsForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngBudgetForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalCloseForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCrsMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpAttForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpFeedBackForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpHistForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpReqForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacFeedBackDtlForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacMstForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacTrngDtlForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngInstCourseDtlForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/JasperReportForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepAllIndiaManpowerForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCessationListForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfidentialFileForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfirmationDueForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCostToCompanyForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepDistnOfManpowerForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepGrossSalExecForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepHistOfEmpForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepImpactFinYearForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepJoiningStatusForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepMTExecDetailsForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepManpowerMediclaimForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepOfficersRatedPoorForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPerformanceAppraisalForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPromotionListForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepQualAllIndiaEmpForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRatingVisAVisAwardForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrCessStatusForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrVisAVisSepForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecruitmentListForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRetirementDetailsForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStaffingListEmpForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStatusOfDiscCasesForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepTrainingDetailsForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/ReportInputForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReport.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportInformation.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportServlet.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/report/excel/Heading.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocTypeDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflWorkListInfoBean.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/core/WflConstants.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowService.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowServiceFactory.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/vo/WflDocMstQVO.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/action/WflWorkFlowCondAction.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLBaseForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDocAttrDtlForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDtlDocTypeForm.java create mode 100644 hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WflConditionForm.java create mode 100644 hrmsWeb/WEB-INF/enrgise-html.tld create mode 100644 hrmsWeb/WEB-INF/lib/commons-beanutils.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/commons-collections.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/commons-digester.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/commons-fileupload.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/commons-lang.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/commons-logging.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/commons-validator.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/enrgisecommons.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/jakarta-oro.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/jaxb-api.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/struts.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/workflowclient.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/lib/xercesImpl.jar.src.zip create mode 100644 hrmsWeb/WEB-INF/struts-bean.tld create mode 100644 hrmsWeb/WEB-INF/struts-config.xml create mode 100644 hrmsWeb/WEB-INF/struts-html.tld create mode 100644 hrmsWeb/WEB-INF/struts-logic.tld create mode 100644 hrmsWeb/WEB-INF/struts-nested.tld create mode 100644 hrmsWeb/WEB-INF/struts-template.tld create mode 100644 hrmsWeb/WEB-INF/struts-tiles.tld create mode 100644 hrmsWeb/WEB-INF/web.xml create mode 100644 hrmsWeb/desktop.ini create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmATDTransAppl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmATDTransChrgRpt.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclAppl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclOrderForSingleEmp.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmATDTransOrderForSingleEmp.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAdvanceMaster.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAppraisalKPA.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslEmpDtls.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslGoals.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslKPA.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmpl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplEmpElig.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplGoals.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslStartOrder.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslStartRule.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAprslTrngReq.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttIn.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttOut.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttQuery.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmAttShiftMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmClaimMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpAdvance.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpClaim.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpDiscAction.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpLeaveEncashment.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersAddDtls.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersDtls.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersEduDtls.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersEmpHst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersJoinInf.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersPFDtls.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersPriorExp.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersRef.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmpPersTrngDtls.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationBatchScreen.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationQueryScreen.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmGenEligRule.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmGenEligRuleQuery.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmLeaveMaster.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmLnApp.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmLnChart.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmLnMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmLvAppln.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgCalMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgClassDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgCntryMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgHolCal.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgHolTypeMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgLangMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgQualMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgRatingMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgRelationMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgReligionMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgScaleMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgSkillMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmOrgWorkGroupMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmPrmOrder.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLngReqDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLocVacencyDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrQualReqDt.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrSkillReqDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrWorkExpDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecAdvtMtn.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnAddDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnEduDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnExpDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnLangDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnRef.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnResultDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnTrngDtls.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmSepCatMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmSepClrEmp.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmSepClrLst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmSepClrTmplMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmSepOrder.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmSeparationAppln.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTestCentreMaster.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngBudget.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngCal.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngCrsMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngEmpAtt.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngEmpHist.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngEmpReq.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngFacFdbkDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngFacMst.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngFacTrngDtl.html create mode 100644 hrmsWeb/hrms/helpfile/HRMHrmTrngInstCourseDtl.html create mode 100644 hrmsWeb/hrms/helpfile/TOC.html create mode 100644 hrmsWeb/hrms/includes/ENRGISE.css create mode 100644 hrmsWeb/hrms/includes/ENRGISE.js create mode 100644 hrmsWeb/hrms/includes/Menu_addins.js create mode 100644 hrmsWeb/hrms/includes/Menu_func.js create mode 100644 hrmsWeb/hrms/includes/Menucss.css create mode 100644 hrmsWeb/hrms/includes/Menujs.js create mode 100644 hrmsWeb/hrms/includes/calendar-blue.css create mode 100644 hrmsWeb/hrms/includes/calendar-en.js create mode 100644 hrmsWeb/hrms/includes/calendar-setup.js create mode 100644 hrmsWeb/hrms/includes/calendar.js create mode 100644 hrmsWeb/hrms/includes/images/Balesh_Photo.jpg create mode 100644 hrmsWeb/hrms/includes/images/Brand.jpg create mode 100644 hrmsWeb/hrms/includes/images/Brand_Final.gif create mode 100644 hrmsWeb/hrms/includes/images/Brand_Final_10.gif create mode 100644 hrmsWeb/hrms/includes/images/Brand_Final_7.gif create mode 100644 hrmsWeb/hrms/includes/images/Brand_Final_TCS.gif create mode 100644 hrmsWeb/hrms/includes/images/Brand_Final_peerless.gif create mode 100644 hrmsWeb/hrms/includes/images/LaunchPad.jpg create mode 100644 hrmsWeb/hrms/includes/images/LaunchPad1.jpg create mode 100644 hrmsWeb/hrms/includes/images/Launchpad_second.bmp create mode 100644 hrmsWeb/hrms/includes/images/Launchpad_third.bmp create mode 100644 hrmsWeb/hrms/includes/images/Login.jpg create mode 100644 hrmsWeb/hrms/includes/images/Navigator.jpg create mode 100644 hrmsWeb/hrms/includes/images/Thumbs.db create mode 100644 hrmsWeb/hrms/includes/images/alert.jpg create mode 100644 hrmsWeb/hrms/includes/images/blueline.GIF create mode 100644 hrmsWeb/hrms/includes/images/bullet.gif create mode 100644 hrmsWeb/hrms/includes/images/butn_AssetManagement.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_AssetManagement_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_BillingAndCollection.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_BillingAndCollection_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_BillingAndCollection_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_ExitLaunchPad.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_GeneralLedger.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_GeneralLedger_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_GeneralLedger_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_HumanResourceManagement.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_HumanResourceManagement_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_HumanResourceManagement_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_InventoryAccounting.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_InventoryAccounting_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_InventoryAccounting_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_InventoryManagement.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_InventoryManagement_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_InventoryManagement_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_OperationAndMaintainance.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_OperationAndMaintainance_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_OperationAndMaintainance_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_OperationAndManagement.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_PayrollAccounting.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_PayrollAccounting_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_PayrollAccounting_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_ProblemTrackingAndMaintainance.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_PurchaseManagement.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_PurchaseManagement_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_PurchaseManagement_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_SystemAdministration.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_SystemAdministration_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_SystemAdministration_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_dtl_next.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_dtl_next_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_dtl_next_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_dtl_prev.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_dtl_prev_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_dtl_prev_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_first.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_first_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_first_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_last.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_last_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_last_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_lov.gif create mode 100644 hrmsWeb/hrms/includes/images/butn_next.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_next_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_next_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_prev.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_prev_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/butn_prev_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/cal.gif create mode 100644 hrmsWeb/hrms/includes/images/cal_act.gif create mode 100644 hrmsWeb/hrms/includes/images/cal_dis.gif create mode 100644 hrmsWeb/hrms/includes/images/cross.jpg create mode 100644 hrmsWeb/hrms/includes/images/delete.jpg create mode 100644 hrmsWeb/hrms/includes/images/delete_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/delete_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/enrgise.jpg create mode 100644 hrmsWeb/hrms/includes/images/execute.jpg create mode 100644 hrmsWeb/hrms/includes/images/execute_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/execute_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/execute_undo.jpg create mode 100644 hrmsWeb/hrms/includes/images/execute_undo_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/execute_undo_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/exit.jpg create mode 100644 hrmsWeb/hrms/includes/images/exit_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/formtab_b.gif create mode 100644 hrmsWeb/hrms/includes/images/formtab_b_dis.gif create mode 100644 hrmsWeb/hrms/includes/images/formtab_lb.gif create mode 100644 hrmsWeb/hrms/includes/images/formtab_lb_dis.gif create mode 100644 hrmsWeb/hrms/includes/images/formtab_r.gif create mode 100644 hrmsWeb/hrms/includes/images/formtab_r_dis.gif create mode 100644 hrmsWeb/hrms/includes/images/go.jpg create mode 100644 hrmsWeb/hrms/includes/images/go_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/go_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/go_dtl.jpg create mode 100644 hrmsWeb/hrms/includes/images/go_dtl_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/go_dtl_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/help.jpg create mode 100644 hrmsWeb/hrms/includes/images/help_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/help_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/insert.jpg create mode 100644 hrmsWeb/hrms/includes/images/insert_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/insert_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/line_l.gif create mode 100644 hrmsWeb/hrms/includes/images/line_r.gif create mode 100644 hrmsWeb/hrms/includes/images/line_t.gif create mode 100644 hrmsWeb/hrms/includes/images/logo_Enrgise.jpg create mode 100644 hrmsWeb/hrms/includes/images/logo_Purchase.jpg create mode 100644 hrmsWeb/hrms/includes/images/logo_SysAdmin.jpg create mode 100644 hrmsWeb/hrms/includes/images/lov.jpg create mode 100644 hrmsWeb/hrms/includes/images/lov_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/lov_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/man.jpg create mode 100644 hrmsWeb/hrms/includes/images/menu_arrow.gif create mode 100644 hrmsWeb/hrms/includes/images/minus.gif create mode 100644 hrmsWeb/hrms/includes/images/next.gif create mode 100644 hrmsWeb/hrms/includes/images/next_year.gif create mode 100644 hrmsWeb/hrms/includes/images/pixel.gif create mode 100644 hrmsWeb/hrms/includes/images/plus.gif create mode 100644 hrmsWeb/hrms/includes/images/prev.gif create mode 100644 hrmsWeb/hrms/includes/images/prev_year.gif create mode 100644 hrmsWeb/hrms/includes/images/print.jpg create mode 100644 hrmsWeb/hrms/includes/images/print_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/print_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/query.jpg create mode 100644 hrmsWeb/hrms/includes/images/query_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/query_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/refresh.jpg create mode 100644 hrmsWeb/hrms/includes/images/refresh_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/refresh_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/save.jpg create mode 100644 hrmsWeb/hrms/includes/images/save_act.jpg create mode 100644 hrmsWeb/hrms/includes/images/save_dis.jpg create mode 100644 hrmsWeb/hrms/includes/images/tab_blue.jpg create mode 100644 hrmsWeb/hrms/includes/images/table_bg.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu.jpg create mode 100644 hrmsWeb/hrms/includes/images/treemenu/Thumbs.db create mode 100644 hrmsWeb/hrms/includes/images/treemenu/base.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/cd.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/empty.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/folder.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/folderopen.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/globe.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/imgfolder.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/join.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/joinbottom.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/line.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/lock.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/minus.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/minusbottom.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/musicfolder.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/nolines_minus.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/nolines_plus.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/page.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/plus.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/plusbottom.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/question.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/trash.gif create mode 100644 hrmsWeb/hrms/includes/images/treemenu/vssver.scc create mode 100644 hrmsWeb/hrms/includes/images/vssver.scc create mode 100644 hrmsWeb/hrms/includes/resizeMenu.js create mode 100644 hrmsWeb/hrms/includes/toolBar.js create mode 100644 hrmsWeb/hrms/jsp/AgeAnalysisReport.jsp create mode 100644 hrmsWeb/hrms/jsp/CommonSearchScreen.jsp create mode 100644 hrmsWeb/hrms/jsp/ExpirePage.jsp create mode 100644 hrmsWeb/hrms/jsp/GenConfirmScreen.jsp create mode 100644 hrmsWeb/hrms/jsp/GenDetailMenu.jsp create mode 100644 hrmsWeb/hrms/jsp/GenDisplayScreen.jsp create mode 100644 hrmsWeb/hrms/jsp/GenIconMenu.jsp create mode 100644 hrmsWeb/hrms/jsp/GenIncludes.jsp create mode 100644 hrmsWeb/hrms/jsp/GenMenu.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDDptnAppl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDDptnChrgRpt.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDDptnOrderForSingleEmp.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDTransAppl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDTransChrgRpt.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDTransCnclAppl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDTransCnclOrderForSingleEmp.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmATDTransOrderForSingleEmp.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAcademicQualRep.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAdhocReport.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAdvAppln.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAdvMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAdvSettle.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAdvSettleHeads.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAppraisalKPA.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAppraisalTemplateKpa.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAppraisalTemplateSection.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslEmpDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslEmployee.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslGoals.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslKPA.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslSpcTmpl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslSpcTmplEmpElig.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslSpcTmplGoals.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslStartOrder.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslStartRule.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAprslTrngReq.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttEmpAttIn.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttEmpAttOut.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttEmpAttQuery.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttEmpDayOff.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttEmpShift.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttEmployeeShiftDetail.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttEmployeeShiftRoster.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttShiftMaster.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttShiftRosterGen.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttWorkGroupDayOff.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmAttWorkGroupShift.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmClaimMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmDriverScreen.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpAwardDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpClaim.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpDepDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpDiscAction.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersAddDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersAssetDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersEduDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersEmpHst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersHealth.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersInsDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersJoinInf.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersLngDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersPFDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersPriorExp.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersRef.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmEmpPersTrngDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmGenEligRule.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmGenEligRuleQuery.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLnApp.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLnAppHblIntRateDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLnAppRepay.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLnChart.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLnMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvAppln.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvApplnQuery.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvCanc.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvCancQuery.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvCredit.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvEncash.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvLedger.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmLvLedgerTxn.txt create mode 100644 hrmsWeb/hrms/jsp/HrmLvMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmMainPage.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmMediclaimMaster.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmMisReport.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmMyWorkflow.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgCalMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgClassDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgCntryMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgDistMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgHolCal.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgHolTypeMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgIncrementMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgLangMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgQualMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgRatingMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgRelationMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgReligionMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgScaleMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgSkillMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgTehMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmOrgWorkGroupMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmCriteria.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmExperienceScore.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmGenAss.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmKPARating.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmKPARatingF.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmNoticeDetail.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmOrder.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmQualCriteria.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmTestScore.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmPrmViewAss.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecAdvAttrJobDesc.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecAdvAttrLngReqDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecAdvAttrLocVacencyDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecAdvAttrQualReqDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecAdvAttrSkillReqDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecAdvAttrWorkExpDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecAdvtMtn.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnAddDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnEduDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnExpDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnLangDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnOtherDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnRef.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnResultDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecApplnMtnTrngDtls.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecEmpRecCreation.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecScrutAppMaintainance.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRecTestCentreMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRetirementForecastRep.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmRoasterEntry.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmSepAppln.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmSepCatMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmSepClrEmp.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmSepClrLst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmSepClrTmplMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmSepOrder.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmSettlementHeads.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngBudget.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngCal.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngCalClose.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngCrsMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngEmpAtt.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngEmpFeedBack.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngEmpHist.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngEmpReq.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngFacFdbkDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngFacFeedback.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngFacMst.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngFacTrngDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/HrmTrngInstCourseDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/LaunchPad.jsp create mode 100644 hrmsWeb/hrms/jsp/MainPage.html create mode 100644 hrmsWeb/hrms/jsp/Navigator.html create mode 100644 hrmsWeb/hrms/jsp/RepAllIndiaManpower.jsp create mode 100644 hrmsWeb/hrms/jsp/RepAllIndiaManpower1.jsp create mode 100644 hrmsWeb/hrms/jsp/RepAllIndiaManpower2.jsp create mode 100644 hrmsWeb/hrms/jsp/RepAllIndiaManpower3.jsp create mode 100644 hrmsWeb/hrms/jsp/RepAllIndiaManpower5.jsp create mode 100644 hrmsWeb/hrms/jsp/RepBranchListCode.jsp create mode 100644 hrmsWeb/hrms/jsp/RepBranchListName.jsp create mode 100644 hrmsWeb/hrms/jsp/RepBranchListZone.jsp create mode 100644 hrmsWeb/hrms/jsp/RepCessationList.jsp create mode 100644 hrmsWeb/hrms/jsp/RepConfidentialFile.jsp create mode 100644 hrmsWeb/hrms/jsp/RepConfirmationDue.jsp create mode 100644 hrmsWeb/hrms/jsp/RepCostToCompanyFile.jsp create mode 100644 hrmsWeb/hrms/jsp/RepDistnOfManpower.jsp create mode 100644 hrmsWeb/hrms/jsp/RepEmpAddress.jsp create mode 100644 hrmsWeb/hrms/jsp/RepGrossSalExec.jsp create mode 100644 hrmsWeb/hrms/jsp/RepHistOfEmp.jsp create mode 100644 hrmsWeb/hrms/jsp/RepImpactFinYear.jsp create mode 100644 hrmsWeb/hrms/jsp/RepIncrDue.jsp create mode 100644 hrmsWeb/hrms/jsp/RepJoiningStatus.jsp create mode 100644 hrmsWeb/hrms/jsp/RepLeaveLedger.jsp create mode 100644 hrmsWeb/hrms/jsp/RepMTExecDetails.jsp create mode 100644 hrmsWeb/hrms/jsp/RepManpowerMediclaim.jsp create mode 100644 hrmsWeb/hrms/jsp/RepOfficersRatedPoor.jsp create mode 100644 hrmsWeb/hrms/jsp/RepPerformanceAppraisal.jsp create mode 100644 hrmsWeb/hrms/jsp/RepPromotionList.jsp create mode 100644 hrmsWeb/hrms/jsp/RepQualAllIndiaEmp.jsp create mode 100644 hrmsWeb/hrms/jsp/RepRatingVisAVisAwards.jsp create mode 100644 hrmsWeb/hrms/jsp/RepRecrCessStatus.jsp create mode 100644 hrmsWeb/hrms/jsp/RepRecrVisAVisSep.jsp create mode 100644 hrmsWeb/hrms/jsp/RepRecruitmentList.jsp create mode 100644 hrmsWeb/hrms/jsp/RepRetirementDetails.jsp create mode 100644 hrmsWeb/hrms/jsp/RepRetrDue.jsp create mode 100644 hrmsWeb/hrms/jsp/RepStaffingListEmp.jsp create mode 100644 hrmsWeb/hrms/jsp/RepStatusOfDiscCases.jsp create mode 100644 hrmsWeb/hrms/jsp/RepStayBranch.jsp create mode 100644 hrmsWeb/hrms/jsp/RepStayGrade.jsp create mode 100644 hrmsWeb/hrms/jsp/RepTrainingDetails.jsp create mode 100644 hrmsWeb/hrms/jsp/SearchDriver.jsp create mode 100644 hrmsWeb/hrms/jsp/WFLDocAttrDtl.jsp create mode 100644 hrmsWeb/hrms/jsp/WflDtlDocType.jsp create mode 100644 hrmsWeb/hrms/jsp/WflGenConditions.jsp create mode 100644 hrmsWeb/hrms/jsp/WflWorkflowConditions.jsp create mode 100644 hrmsWeb/hrms/jsp/report.jsp create mode 100644 hrmsWeb/hrms/jsp/untitled1.html create mode 100644 hrmsWeb/hrms/jsp/vssver.scc create mode 100644 hrmsWeb/hrms/report/AgeAnalysisReport.jasper create mode 100644 hrmsWeb/hrms/report/AllIndiaManpowerList.jasper create mode 100644 hrmsWeb/hrms/report/All_India_CTC.jasper create mode 100644 hrmsWeb/hrms/report/All_india_MP_for_mediclaim.jasper create mode 100644 hrmsWeb/hrms/report/BranchList_Codewise.jasper create mode 100644 hrmsWeb/hrms/report/BranchList_Namewise.jasper create mode 100644 hrmsWeb/hrms/report/BranchList_Zonewise.jasper create mode 100644 hrmsWeb/hrms/report/Categorywise_BranchList.jasper create mode 100644 hrmsWeb/hrms/report/Confidential_File_Report.jasper create mode 100644 hrmsWeb/hrms/report/Confirmation_Due.jasper create mode 100644 hrmsWeb/hrms/report/EmpAddress.jasper create mode 100644 hrmsWeb/hrms/report/EmpList_summary.jasper create mode 100644 hrmsWeb/hrms/report/Increment_Due_Report.jasper create mode 100644 hrmsWeb/hrms/report/Increment_Due_Report_alt.jasper create mode 100644 hrmsWeb/hrms/report/Leave_Ledger.jasper create mode 100644 hrmsWeb/hrms/report/Manpower_Distribution.jasper create mode 100644 hrmsWeb/hrms/report/Manpower_Report.jasper create mode 100644 hrmsWeb/hrms/report/Manpower_Report_2.jasper create mode 100644 hrmsWeb/hrms/report/Manpower_recomendation_master.jasper create mode 100644 hrmsWeb/hrms/report/Off_Rated_Poor.jasper create mode 100644 hrmsWeb/hrms/report/Qual_All_India_Employees.jasper create mode 100644 hrmsWeb/hrms/report/Recr_List_During_A_Period.jasper create mode 100644 hrmsWeb/hrms/report/Recruitment_Cessation_Status_For_A_Period.jasper create mode 100644 hrmsWeb/hrms/report/Recruitment_Cessation_Status_For_A_Period.jasper_ create mode 100644 hrmsWeb/hrms/report/Retirement_Details_For_A_Period.jasper create mode 100644 hrmsWeb/hrms/report/Retirement_due_report.jasper create mode 100644 hrmsWeb/hrms/report/Status_Of_Disciplinary_Cases.jasper create mode 100644 hrmsWeb/hrms/report/Stay_report_BranchWise.jasper create mode 100644 hrmsWeb/hrms/report/Stay_report_GradeWise.jasper create mode 100644 hrmsWeb/hrms/report/Training_Details.jasper diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..2a1b861 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Created-By: Oracle9i JDeveloper 9.0.4 + diff --git a/META-INF/application.xml b/META-INF/application.xml new file mode 100644 index 0000000..f25365b --- /dev/null +++ b/META-INF/application.xml @@ -0,0 +1,14 @@ + + + + hrms + + hrmsejb.jar + + + + hrmsweb.war + hrms + + + diff --git a/META-INF/ejb-jar.xml b/META-INF/ejb-jar.xml new file mode 100644 index 0000000..999c3f2 --- /dev/null +++ b/META-INF/ejb-jar.xml @@ -0,0 +1,1797 @@ + + + + + + Session Bean ( Stateless ) + HrmSecondFacade + HrmSecondFacade + wenrgise.hrms.ejb.facade.HrmSecondFacadeHome + wenrgise.hrms.ejb.facade.HrmSecondFacade + wenrgise.hrms.ejb.facade.HrmSecondFacadeBean + Stateless + Container + + ejb/HrmAttendanceFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocal + HrmAttendanceFacade + + + ejb/HrmEligibilityFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocal + HrmEligibilityFacade + + + ejb/HrmLeaveFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocal + HrmLeaveFacade + + + ejb/HrmManPlFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocal + HrmManPlFacade + + + ejb/HrmPromotionFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocal + HrmPromotionFacade + + + ejb/HrmRecruitmentFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocal + HrmRecruitmentFacade + + + ejb/HrmTrainingFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocal + HrmTrainingFacade + + + + Session Bean ( Stateless ) + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacade + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocal + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmTrainingFacade + HrmTrainingFacade + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocal + wenrgise.hrms.ejb.facade.HrmTrainingFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmAttendanceFacade + HrmAttendanceFacade + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocal + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmHelpFacade + HrmHelpFacade + wenrgise.ejb.help.facade.HelpFacadeHome + wenrgise.ejb.help.facade.HelpFacade + wenrgise.ejb.help.facade.HelpFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacade + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocal + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmRecruitmentFacade + HrmRecruitmentFacade + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocal + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmLeaveFacade + HrmLeaveFacade + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocal + wenrgise.hrms.ejb.facade.HrmLeaveFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmThirdFacade + HrmThirdFacade + wenrgise.hrms.ejb.facade.HrmThirdFacadeHome + wenrgise.hrms.ejb.facade.HrmThirdFacade + wenrgise.hrms.ejb.facade.HrmThirdFacadeBean + Stateless + Container + + ejb/HrmAllocationTransferDeputationFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocal + HrmAllocationTransferDeputationFacade + + + ejb/HrmPerformanceAppraisalFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocal + HrmPerformanceAppraisalFacade + + + + Session Bean ( Stateless ) + HrmEligibilityFacade + HrmEligibilityFacade + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocal + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeBean + Stateless + Container + + + + Session Bean ( Stateless ) + HrmLoanFacade + HrmLoanFacade + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocal + wenrgise.hrms.ejb.facade.HrmLoanFacadeBean + Stateless + Container + + + + Session Bean ( Stateful ) + HrmUserSession + HrmUserSession + wenrgise.ejb.common.session.UserSessionHome + wenrgise.ejb.common.session.UserSession + wenrgise.ejb.common.session.UserSessionBean + Stateful + Container + + jdbc/conDS + javax.sql.DataSource + Container + + + + + Session Bean ( Stateless ) + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacade + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocal + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacade + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocal + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmSecurityFacade + HrmSecurityFacade + wenrgise.ejb.common.facade.SecurityFacadeHome + wenrgise.ejb.common.facade.SecurityFacade + wenrgise.ejb.common.facade.SecurityFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmFacade + HrmFacade + wenrgise.hrms.ejb.facade.HrmFacadeHome + wenrgise.hrms.ejb.facade.HrmFacade + wenrgise.hrms.ejb.facade.HrmFacadeBean + Stateless + Container + + ejb/HrmAdvanceClaimFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocal + HrmAdvanceClaimFacade + + + ejb/HrmEmployeeMaintenanceFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocal + HrmEmployeeMaintenanceFacade + + + ejb/HrmLeaveFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocal + HrmLeaveFacade + + + ejb/HrmLoanFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocal + HrmLoanFacade + + + ejb/HrmOrganisationSetUpFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocal + HrmOrganisationSetUpFacade + + + ejb/HrmSeparationFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocal + HrmSeparationFacade + + + + Session Bean ( Stateless ) + HrmSeparationFacade + HrmSeparationFacade + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocal + wenrgise.hrms.ejb.facade.HrmSeparationFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmAdvanceClaimFacade + HrmAdvanceClaimFacade + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocal + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmManPlFacade + HrmManPlFacade + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocal + wenrgise.hrms.ejb.facade.HrmManPlFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmPromotionFacade + HrmPromotionFacade + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocal + wenrgise.hrms.ejb.facade.HrmPromotionFacadeBean + Stateless + Container + + + + + + HrmTrainingFacade + Local + rejectEmpTrngReq + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngCalHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngCrsBudHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngCrsMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngFacBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngFacTrngHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngInsCrsHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveHrmTrngEmpAtt + + wenrgise.hrms.bean.HrmTrngEmpAttHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + submitEmpTrngReq + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + approveEmpTrngReq + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + calendarClose + + java.lang.String + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + approveEmpAprsl + + wenrgise.hrms.bean.HrmAprslHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + approveHrmAprslSpcTmp + + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + approveHrmAprslTmplMst + + wenrgise.hrms.bean.HrmAppTempHdrBean + java.lang.String + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + rejectEmpAprsl + + wenrgise.hrms.bean.HrmAprslHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + rejectHrmAprslSpcTmp + + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAppTempHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslStartOrderHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslStartRuleHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveHrmAppRaisalKpa + + wenrgise.hrms.bean.HrmAppraisalKPAHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmAttEmpAttInHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveAttShiftMstData + + wenrgise.hrms.bean.HrmAttShiftMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.hrms.bean.HrmRecApplnMtnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveDataTC + + wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmTransferApplicationHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmChargeReportHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + submitLvEncash + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvLedgerHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvCancHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + rejectLvEncash + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + approveLeaveAppln + + wenrgise.hrms.bean.HrmLvApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + approveLeaveCanc + + wenrgise.hrms.bean.HrmLvCancHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + approveLeaveEncash + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + saveData + + wenrgise.hrms.bean.HrmLnMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + saveData + + wenrgise.hrms.bean.HrmLnChartHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + saveData + + wenrgise.hrms.bean.HrmLnAppHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + loanAppBulkPayment + + wenrgise.hrms.bean.HrmLnAppHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgSkillMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgScaleMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgRatingMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgIncrementHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgHolCalHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgCntryMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgClassHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgCalMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmEmployeeMaintenanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpPersHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmEmployeeMaintenanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpDiscActionHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmEmployeeMaintenanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpDepHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepOrderHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepClrEmpHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepCatMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveClrListData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveHrmEmpClaim + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpAdvAppHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveData + + wenrgise.hrms.bean.HrmClaimMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveData + + wenrgise.hrms.bean.HrmAdvanceMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPromotionFacade + Local + saveData + + wenrgise.hrms.bean.HrmPrmOrderHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + CancelLeaveAppln + + wenrgise.hrms.bean.HrmLvApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + creditLeaves + + wenrgise.hrms.bean.HrmLvCreditHdrBean + java.sql.Timestamp + java.util.ArrayList + java.sql.Timestamp + + + RequiresNew + + + diff --git a/META-INF/weblogic-ejb-jar.xml b/META-INF/weblogic-ejb-jar.xml new file mode 100644 index 0000000..445d303 --- /dev/null +++ b/META-INF/weblogic-ejb-jar.xml @@ -0,0 +1,181 @@ + + + + + + HrmSecondFacade + HrmSecondFacade + HrmSecondFacadeHome + + + ejb/HrmAttendanceFacadeLocal + ejb/HrmAttendanceFacadeLocal + HrmAttendanceFacadeLocalHome + + + ejb/HrmEligibilityFacadeLocal + ejb/HrmEligibilityFacadeLocal + HrmEligibilityFacadeLocalHome + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + ejb/HrmManPlFacadeLocal + ejb/HrmManPlFacadeLocal + HrmManPlFacadeLocalHome + + + ejb/HrmPromotionFacadeLocal + ejb/HrmPromotionFacadeLocal + HrmPromotionFacadeLocalHome + + + ejb/HrmRecruitmentFacadeLocal + ejb/HrmRecruitmentFacadeLocal + HrmRecruitmentFacadeLocalHome + + + ejb/HrmTrainingFacadeLocal + ejb/HrmTrainingFacadeLocal + HrmTrainingFacadeLocalHome + + + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacadeLocalHome + + + HrmTrainingFacade + HrmTrainingFacade + HrmTrainingFacadeLocalHome + + + HrmAttendanceFacade + HrmAttendanceFacade + HrmAttendanceFacadeLocalHome + + + HrmHelpFacade + HrmHelpFacade + HelpFacadeHome + + + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacadeLocalHome + + + HrmRecruitmentFacade + HrmRecruitmentFacade + HrmRecruitmentFacadeLocalHome + + + HrmLeaveFacade + HrmLeaveFacade + HrmLeaveFacadeLocalHome + + + HrmThirdFacade + HrmThirdFacade + HrmThirdFacadeHome + + + ejb/HrmAllocationTransferDeputationFacadeLocal + ejb/HrmAllocationTransferDeputationFacadeLocal + HrmAllocationTransferDeputationFacadeLocalHome + + + ejb/HrmPerformanceAppraisalFacadeLocal + ejb/HrmPerformanceAppraisalFacadeLocal + HrmPerformanceAppraisalFacadeLocalHome + + + HrmEligibilityFacade + HrmEligibilityFacade + HrmEligibilityFacadeLocalHome + + + HrmLoanFacade + HrmLoanFacade + HrmLoanFacadeLocalHome + + + HrmUserSession + HrmUserSession + UserSessionHome + + + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacadeLocalHome + + + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacadeLocalHome + + + HrmSecurityFacade + HrmSecurityFacade + SecurityFacadeHome + + + HrmFacade + HrmFacade + HrmFacadeHome + + + ejb/HrmAdvanceClaimFacadeLocal + ejb/HrmAdvanceClaimFacadeLocal + HrmAdvanceClaimFacadeLocalHome + + + ejb/HrmEmployeeMaintenanceFacadeLocal + ejb/HrmEmployeeMaintenanceFacadeLocal + HrmEmployeeMaintenanceFacadeLocalHome + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + ejb/HrmLoanFacadeLocal + ejb/HrmLoanFacadeLocal + HrmLoanFacadeLocalHome + + + ejb/HrmOrganisationSetUpFacadeLocal + ejb/HrmOrganisationSetUpFacadeLocal + HrmOrganisationSetUpFacadeLocalHome + + + ejb/HrmSeparationFacadeLocal + ejb/HrmSeparationFacadeLocal + HrmSeparationFacadeLocalHome + + + HrmSeparationFacade + HrmSeparationFacade + HrmSeparationFacadeLocalHome + + + HrmAdvanceClaimFacade + HrmAdvanceClaimFacade + HrmAdvanceClaimFacadeLocalHome + + + HrmManPlFacade + HrmManPlFacade + HrmManPlFacadeLocalHome + + + HrmPromotionFacade + HrmPromotionFacade + HrmPromotionFacadeLocalHome + + diff --git a/hrmsEjb/META-INF/MANIFEST.MF b/hrmsEjb/META-INF/MANIFEST.MF new file mode 100644 index 0000000..2a1b861 --- /dev/null +++ b/hrmsEjb/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Created-By: Oracle9i JDeveloper 9.0.4 + diff --git a/hrmsEjb/META-INF/ejb-jar.xml b/hrmsEjb/META-INF/ejb-jar.xml new file mode 100644 index 0000000..999c3f2 --- /dev/null +++ b/hrmsEjb/META-INF/ejb-jar.xml @@ -0,0 +1,1797 @@ + + + + + + Session Bean ( Stateless ) + HrmSecondFacade + HrmSecondFacade + wenrgise.hrms.ejb.facade.HrmSecondFacadeHome + wenrgise.hrms.ejb.facade.HrmSecondFacade + wenrgise.hrms.ejb.facade.HrmSecondFacadeBean + Stateless + Container + + ejb/HrmAttendanceFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocal + HrmAttendanceFacade + + + ejb/HrmEligibilityFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocal + HrmEligibilityFacade + + + ejb/HrmLeaveFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocal + HrmLeaveFacade + + + ejb/HrmManPlFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocal + HrmManPlFacade + + + ejb/HrmPromotionFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocal + HrmPromotionFacade + + + ejb/HrmRecruitmentFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocal + HrmRecruitmentFacade + + + ejb/HrmTrainingFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocal + HrmTrainingFacade + + + + Session Bean ( Stateless ) + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacade + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocal + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmTrainingFacade + HrmTrainingFacade + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmTrainingFacadeLocal + wenrgise.hrms.ejb.facade.HrmTrainingFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmAttendanceFacade + HrmAttendanceFacade + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeLocal + wenrgise.hrms.ejb.facade.HrmAttendanceFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmHelpFacade + HrmHelpFacade + wenrgise.ejb.help.facade.HelpFacadeHome + wenrgise.ejb.help.facade.HelpFacade + wenrgise.ejb.help.facade.HelpFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacade + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocal + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmRecruitmentFacade + HrmRecruitmentFacade + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeLocal + wenrgise.hrms.ejb.facade.HrmRecruitmentFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmLeaveFacade + HrmLeaveFacade + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocal + wenrgise.hrms.ejb.facade.HrmLeaveFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmThirdFacade + HrmThirdFacade + wenrgise.hrms.ejb.facade.HrmThirdFacadeHome + wenrgise.hrms.ejb.facade.HrmThirdFacade + wenrgise.hrms.ejb.facade.HrmThirdFacadeBean + Stateless + Container + + ejb/HrmAllocationTransferDeputationFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAllocationTransferDeputationFacadeLocal + HrmAllocationTransferDeputationFacade + + + ejb/HrmPerformanceAppraisalFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPerformanceAppraisalFacadeLocal + HrmPerformanceAppraisalFacade + + + + Session Bean ( Stateless ) + HrmEligibilityFacade + HrmEligibilityFacade + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeLocal + wenrgise.hrms.ejb.facade.HrmEligibilityFacadeBean + Stateless + Container + + + + Session Bean ( Stateless ) + HrmLoanFacade + HrmLoanFacade + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocal + wenrgise.hrms.ejb.facade.HrmLoanFacadeBean + Stateless + Container + + + + Session Bean ( Stateful ) + HrmUserSession + HrmUserSession + wenrgise.ejb.common.session.UserSessionHome + wenrgise.ejb.common.session.UserSession + wenrgise.ejb.common.session.UserSessionBean + Stateful + Container + + jdbc/conDS + javax.sql.DataSource + Container + + + + + Session Bean ( Stateless ) + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacade + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocal + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacade + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocal + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmSecurityFacade + HrmSecurityFacade + wenrgise.ejb.common.facade.SecurityFacadeHome + wenrgise.ejb.common.facade.SecurityFacade + wenrgise.ejb.common.facade.SecurityFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmFacade + HrmFacade + wenrgise.hrms.ejb.facade.HrmFacadeHome + wenrgise.hrms.ejb.facade.HrmFacade + wenrgise.hrms.ejb.facade.HrmFacadeBean + Stateless + Container + + ejb/HrmAdvanceClaimFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocal + HrmAdvanceClaimFacade + + + ejb/HrmEmployeeMaintenanceFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmEmployeeMaintenanceFacadeLocal + HrmEmployeeMaintenanceFacade + + + ejb/HrmLeaveFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLeaveFacadeLocal + HrmLeaveFacade + + + ejb/HrmLoanFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmLoanFacadeLocal + HrmLoanFacade + + + ejb/HrmOrganisationSetUpFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmOrganisationSetUpFacadeLocal + HrmOrganisationSetUpFacade + + + ejb/HrmSeparationFacadeLocal + Session + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocal + HrmSeparationFacade + + + + Session Bean ( Stateless ) + HrmSeparationFacade + HrmSeparationFacade + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmSeparationFacadeLocal + wenrgise.hrms.ejb.facade.HrmSeparationFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmAdvanceClaimFacade + HrmAdvanceClaimFacade + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeLocal + wenrgise.hrms.ejb.facade.HrmAdvanceClaimFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmManPlFacade + HrmManPlFacade + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmManPlFacadeLocal + wenrgise.hrms.ejb.facade.HrmManPlFacadeBean + Stateless + Container + + + Session Bean ( Stateless ) + HrmPromotionFacade + HrmPromotionFacade + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocalHome + wenrgise.hrms.ejb.facade.HrmPromotionFacadeLocal + wenrgise.hrms.ejb.facade.HrmPromotionFacadeBean + Stateless + Container + + + + + + HrmTrainingFacade + Local + rejectEmpTrngReq + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngCalHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngCrsBudHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngCrsMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngFacBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngFacTrngHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveData + + wenrgise.hrms.bean.HrmTrngInsCrsHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + saveHrmTrngEmpAtt + + wenrgise.hrms.bean.HrmTrngEmpAttHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + + + RequiresNew + + + + HrmTrainingFacade + Local + submitEmpTrngReq + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + approveEmpTrngReq + + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmTrainingFacade + Local + calendarClose + + java.lang.String + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + approveEmpAprsl + + wenrgise.hrms.bean.HrmAprslHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + approveHrmAprslSpcTmp + + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + approveHrmAprslTmplMst + + wenrgise.hrms.bean.HrmAppTempHdrBean + java.lang.String + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + rejectEmpAprsl + + wenrgise.hrms.bean.HrmAprslHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + rejectHrmAprslSpcTmp + + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAppTempHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslStartOrderHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveData + + wenrgise.hrms.bean.HrmAprslStartRuleHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPerformanceAppraisalFacade + Local + saveHrmAppRaisalKpa + + wenrgise.hrms.bean.HrmAppraisalKPAHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmAttEmpAttInHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveAttShiftMstData + + wenrgise.hrms.bean.HrmAttShiftMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAttendanceFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.hrms.bean.HrmRecApplnMtnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveDataTC + + wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmRecruitmentFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmTransferApplicationHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmChargeReportHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAllocationTransferDeputationFacade + Local + saveData + + wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + submitLvEncash + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvLedgerHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvCancHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + saveData + + wenrgise.hrms.bean.HrmLvApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + rejectLvEncash + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + approveLeaveAppln + + wenrgise.hrms.bean.HrmLvApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + approveLeaveCanc + + wenrgise.hrms.bean.HrmLvCancHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + approveLeaveEncash + + wenrgise.hrms.bean.HrmLvEncashHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + saveData + + wenrgise.hrms.bean.HrmLnMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + saveData + + wenrgise.hrms.bean.HrmLnChartHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + saveData + + wenrgise.hrms.bean.HrmLnAppHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLoanFacade + Local + loanAppBulkPayment + + wenrgise.hrms.bean.HrmLnAppHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgSkillMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgScaleMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgRatingMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgIncrementHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgHolCalHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgCntryMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgClassHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.hrms.bean.HrmOrgCalMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmOrganisationSetUpFacade + Local + saveData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmEmployeeMaintenanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpPersHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmEmployeeMaintenanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpDiscActionHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmEmployeeMaintenanceFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpDepHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepOrderHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepClrEmpHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepCatMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveData + + wenrgise.hrms.bean.HrmSepApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmSeparationFacade + Local + saveClrListData + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveHrmEmpClaim + + wenrgise.common.bean.BaseHeaderBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveData + + wenrgise.hrms.bean.HrmEmpAdvAppHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveData + + wenrgise.hrms.bean.HrmClaimMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmAdvanceClaimFacade + Local + saveData + + wenrgise.hrms.bean.HrmAdvanceMstHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmPromotionFacade + Local + saveData + + wenrgise.hrms.bean.HrmPrmOrderHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + CancelLeaveAppln + + wenrgise.hrms.bean.HrmLvApplnHdrBean + java.sql.Timestamp + java.lang.String + java.lang.String + boolean + java.util.ArrayList + boolean + java.sql.Timestamp + wenrgise.common.utility.UserInfo + + + RequiresNew + + + + HrmLeaveFacade + Local + creditLeaves + + wenrgise.hrms.bean.HrmLvCreditHdrBean + java.sql.Timestamp + java.util.ArrayList + java.sql.Timestamp + + + RequiresNew + + + diff --git a/hrmsEjb/META-INF/weblogic-ejb-jar.xml b/hrmsEjb/META-INF/weblogic-ejb-jar.xml new file mode 100644 index 0000000..445d303 --- /dev/null +++ b/hrmsEjb/META-INF/weblogic-ejb-jar.xml @@ -0,0 +1,181 @@ + + + + + + HrmSecondFacade + HrmSecondFacade + HrmSecondFacadeHome + + + ejb/HrmAttendanceFacadeLocal + ejb/HrmAttendanceFacadeLocal + HrmAttendanceFacadeLocalHome + + + ejb/HrmEligibilityFacadeLocal + ejb/HrmEligibilityFacadeLocal + HrmEligibilityFacadeLocalHome + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + ejb/HrmManPlFacadeLocal + ejb/HrmManPlFacadeLocal + HrmManPlFacadeLocalHome + + + ejb/HrmPromotionFacadeLocal + ejb/HrmPromotionFacadeLocal + HrmPromotionFacadeLocalHome + + + ejb/HrmRecruitmentFacadeLocal + ejb/HrmRecruitmentFacadeLocal + HrmRecruitmentFacadeLocalHome + + + ejb/HrmTrainingFacadeLocal + ejb/HrmTrainingFacadeLocal + HrmTrainingFacadeLocalHome + + + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacadeLocalHome + + + HrmTrainingFacade + HrmTrainingFacade + HrmTrainingFacadeLocalHome + + + HrmAttendanceFacade + HrmAttendanceFacade + HrmAttendanceFacadeLocalHome + + + HrmHelpFacade + HrmHelpFacade + HelpFacadeHome + + + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacadeLocalHome + + + HrmRecruitmentFacade + HrmRecruitmentFacade + HrmRecruitmentFacadeLocalHome + + + HrmLeaveFacade + HrmLeaveFacade + HrmLeaveFacadeLocalHome + + + HrmThirdFacade + HrmThirdFacade + HrmThirdFacadeHome + + + ejb/HrmAllocationTransferDeputationFacadeLocal + ejb/HrmAllocationTransferDeputationFacadeLocal + HrmAllocationTransferDeputationFacadeLocalHome + + + ejb/HrmPerformanceAppraisalFacadeLocal + ejb/HrmPerformanceAppraisalFacadeLocal + HrmPerformanceAppraisalFacadeLocalHome + + + HrmEligibilityFacade + HrmEligibilityFacade + HrmEligibilityFacadeLocalHome + + + HrmLoanFacade + HrmLoanFacade + HrmLoanFacadeLocalHome + + + HrmUserSession + HrmUserSession + UserSessionHome + + + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacadeLocalHome + + + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacadeLocalHome + + + HrmSecurityFacade + HrmSecurityFacade + SecurityFacadeHome + + + HrmFacade + HrmFacade + HrmFacadeHome + + + ejb/HrmAdvanceClaimFacadeLocal + ejb/HrmAdvanceClaimFacadeLocal + HrmAdvanceClaimFacadeLocalHome + + + ejb/HrmEmployeeMaintenanceFacadeLocal + ejb/HrmEmployeeMaintenanceFacadeLocal + HrmEmployeeMaintenanceFacadeLocalHome + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + ejb/HrmLoanFacadeLocal + ejb/HrmLoanFacadeLocal + HrmLoanFacadeLocalHome + + + ejb/HrmOrganisationSetUpFacadeLocal + ejb/HrmOrganisationSetUpFacadeLocal + HrmOrganisationSetUpFacadeLocalHome + + + ejb/HrmSeparationFacadeLocal + ejb/HrmSeparationFacadeLocal + HrmSeparationFacadeLocalHome + + + HrmSeparationFacade + HrmSeparationFacade + HrmSeparationFacadeLocalHome + + + HrmAdvanceClaimFacade + HrmAdvanceClaimFacade + HrmAdvanceClaimFacadeLocalHome + + + HrmManPlFacade + HrmManPlFacade + HrmManPlFacadeLocalHome + + + HrmPromotionFacade + HrmPromotionFacade + HrmPromotionFacadeLocalHome + + diff --git a/hrmsEjb/com/tcs/wenrgise/util/common/FWSAXParser.java b/hrmsEjb/com/tcs/wenrgise/util/common/FWSAXParser.java new file mode 100644 index 0000000..7055357 --- /dev/null +++ b/hrmsEjb/com/tcs/wenrgise/util/common/FWSAXParser.java @@ -0,0 +1,185 @@ +package com.tcs.wenrgise.util.common; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; +import java.util.Stack; +import org.xml.sax.Attributes; +import org.xml.sax.helpers.DefaultHandler; + +public class FWSAXParser extends DefaultHandler { + private String lastName; + + private Stack aStack = new Stack(); + + private Object objFinal; + + private String sPackage = ""; + + void setPackage(String sPackage_) { + this.sPackage = sPackage_; + } + + void setObject(Object obj) { + this.objFinal = obj; + } + + Object getFinalObject() { + return this.objFinal; + } + + public void startElement(String uri, String name, String qName, Attributes atts) { + this.lastName = new String(name); + this.sCharStringBuffer = new StringBuffer(); + try { + this.aStack.push(name); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + } + + public void endElement(String uri, String name, String qName) { + try { + this.sPathMap = getPathMap(); + String sChar = this.sCharStringBuffer.toString(); + String sTempChar = new String(sChar); + sTempChar = sTempChar.replace('\r', ' '); + sTempChar = sTempChar.replace('\n', ' '); + sTempChar = sTempChar.trim(); + if (sChar != null && sChar.length() > 0 && sTempChar.length() > 0) + populateValue(sChar, this.sPathMap); + this.sCharStringBuffer = new StringBuffer(); + String sTopElement = this.aStack.pop(); + if (sTopElement.equals(name)) { + addToHashMap(getPathMap(this.sPathMap)); + } else { + this.aStack.push(sTopElement); + } + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + } + + ArrayList sPathMap = null; + + StringBuffer sCharStringBuffer = new StringBuffer(); + + public void characters(char[] ch, int start, int length) { + try { + this.sCharStringBuffer.append(new String(ch, start, length)); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + } + + private ArrayList getPathMap() { + ArrayList aList = new ArrayList(this.aStack.size()); + for (int i = 0; i < this.aStack.size(); i++) + aList.add(this.aStack.get(i)); + return aList; + } + + private void populateValue(Object value, ArrayList aPathMap) throws Exception { + StringBuffer sbfGetMethodName = new StringBuffer(20); + StringBuffer sbfSetMethodName = new StringBuffer(20); + try { + if (null == aPathMap) + return; + Object objOriginal = this.objFinal; + Object objTempCurrent = this.objFinal; + ArrayList aTempPathMap = new ArrayList(); + aTempPathMap.add(aPathMap.get(0)); + for (int i = 1; i < aPathMap.size(); i++) { + String sElement = aPathMap.get(i); + aTempPathMap.add(sElement); + sbfGetMethodName = (new StringBuffer("get_")).append(sElement); + Method mGet = objTempCurrent.getClass().getMethod(sbfGetMethodName.toString(), null); + Object objChild = mGet.invoke(objTempCurrent, null); + if (objChild == null) { + Class retClass = mGet.getReturnType(); + objChild = retClass.newInstance(); + } + if (objChild instanceof ArrayList) { + sbfSetMethodName = (new StringBuffer("set_")).append(sElement); + if (i == aPathMap.size() - 1) { + ((ArrayList)objChild).add(value); + Method mSet = objTempCurrent.getClass().getMethod(sbfSetMethodName.toString(), new Class[] { objChild.getClass() }); + mSet.invoke(objTempCurrent, new Object[] { objChild }); + } else { + ArrayList aList = (ArrayList)objChild; + Object objTemp = null; + String sTempPathMap = getPathMap(aTempPathMap); + int iCounter = getCounter(sTempPathMap); + if (aList.size() > iCounter) { + objTemp = aList.get(iCounter); + } else { + Class cTemp = Class.forName(this.sPackage + sElement); + objTemp = cTemp.newInstance(); + aList.add(objTemp); + } + Method mSet = objTempCurrent.getClass().getMethod(sbfSetMethodName.toString(), new Class[] { objChild.getClass() }); + mSet.invoke(objTempCurrent, new Object[] { objChild }); + objChild = objTemp; + } + } else { + if (i == aPathMap.size() - 1) + objChild = value; + sbfSetMethodName = (new StringBuffer("set_")).append(sElement); + Method mSet = objTempCurrent.getClass().getMethod(sbfSetMethodName.toString(), new Class[] { objChild.getClass() }); + mSet.invoke(objTempCurrent, new Object[] { objChild }); + } + objTempCurrent = objChild; + } + this.objFinal = objOriginal; + } catch (Exception e) { + throw new Exception(String.valueOf(String.valueOf(e.getMessage()).concat(String.valueOf(" TAGMETHODNAME: "))).concat(String.valueOf(sbfGetMethodName.toString()))); + } + } + + private void addToHashMap(String sPathMap) { + if (sPathMap == null || sPathMap.trim().length() <= 0) + return; + Object objCounter = this.aCounterMap.get(sPathMap); + Integer iCounter = null; + if (objCounter != null) { + iCounter = (Integer)objCounter; + } else { + iCounter = new Integer(0); + } + iCounter = new Integer(iCounter.intValue() + 1); + this.aCounterMap.put(sPathMap, iCounter); + Set keySet = this.aCounterMap.keySet(); + Iterator itrKey = keySet.iterator(); + while (itrKey.hasNext()) { + String sKey = itrKey.next(); + if (sKey.startsWith(sPathMap) && sKey.length() > sPathMap.length()) + this.aCounterMap.put(sKey, new Integer(0)); + } + } + + private int getCounter(String sPathMap) { + if (sPathMap == null || sPathMap.trim().length() <= 0) + return 0; + Object objCounter = this.aCounterMap.get(sPathMap); + Integer iCounter = null; + if (objCounter != null) { + iCounter = (Integer)objCounter; + } else { + iCounter = new Integer(0); + } + return iCounter.intValue(); + } + + private String getPathMap(ArrayList aPathMap) { + if (aPathMap == null || aPathMap.size() <= 0) + return null; + StringBuffer sTotStringBuffer = new StringBuffer(); + for (int i = 0; i < aPathMap.size(); i++) + sTotStringBuffer.append(aPathMap.get(i)).append("/"); + return sTotStringBuffer.toString(); + } + + private HashMap aCounterMap = new HashMap(20); +} diff --git a/hrmsEjb/com/tcs/wenrgise/util/common/FWXMLUtility.java b/hrmsEjb/com/tcs/wenrgise/util/common/FWXMLUtility.java new file mode 100644 index 0000000..756b5af --- /dev/null +++ b/hrmsEjb/com/tcs/wenrgise/util/common/FWXMLUtility.java @@ -0,0 +1,472 @@ +package com.tcs.wenrgise.util.common; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.StringReader; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import org.apache.xerces.parsers.SAXParser; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +public class FWXMLUtility { + private static boolean bReverseOrderAttr; + + private static String timerClassName; + + private static final String LINESEPARATOR = "\n"; + + static { + try { + Class cTempClass = Class.forName("com.tcs.wenrgise.util.common.FWXMLUtilitySequence"); + Field[] fFieldArray = cTempClass.getDeclaredFields(); + if (fFieldArray[0].getName().equals("ATTRIBUTE1")) { + bReverseOrderAttr = false; + } else { + bReverseOrderAttr = true; + } + } catch (Exception exception) {} + } + + public static void setTimerClassName(String timerClassName_) { + timerClassName = timerClassName_; + } + + public static Object xmlToObject(String className, String sFileName) throws Exception { + String methodName = "xmlToObject"; + FWSAXParser handler = null; + InputSource aSource = null; + SAXParser parser = null; + FileReader aFileReader = null; + try { + Class c = Class.forName(className); + Object objFinal = c.newInstance(); + String sPackage = getPackage(className); + parser = null; + try { + parser = new SAXParser(); + } catch (Exception e) { + e.printStackTrace(); + parser = null; + System.err.println(String.valueOf(String.valueOf("error: Unable to instantiate parser(").concat(String.valueOf(parser))).concat(String.valueOf(")"))); + return null; + } + handler = new FWSAXParser(); + handler.setObject(objFinal); + handler.setPackage(sPackage); + parser.setContentHandler(handler); + aFileReader = new FileReader(sFileName); + aSource = new InputSource(aFileReader); + parser.parse(aSource); + aSource = null; + parser = null; + return handler.getFinalObject(); + } catch (Throwable e) { + aSource = null; + parser = null; + throw new Exception(e.getMessage()); + } finally { + if (null != aFileReader) { + aFileReader.close(); + aFileReader = null; + } + aSource = null; + parser = null; + } + } + + public static void display(Object obj) throws Exception { + if (obj == null) + return; + Method[] mList = obj.getClass().getMethods(); + if (mList != null) + for (int i = 0; i < mList.length; i++) { + String methodName = mList[i].getName(); + if (methodName.startsWith("get_")) { + Object objRet = null; + try { + objRet = mList[i].invoke(obj, null); + } catch (Exception e) {} + Class retClass = mList[i].getReturnType(); + if (retClass.getName().equals("java.lang.String")) { + System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf(obj.getClass().getName()).concat(String.valueOf(":"))).concat(String.valueOf(methodName))).concat(String.valueOf("="))).concat(String.valueOf(objRet))); + } else if (retClass.getName().equals("java.util.ArrayList")) { + if (objRet != null) { + ArrayList aList = (ArrayList)objRet; + for (int j = 0; j < aList.size(); j++) { + if (aList.get(j) instanceof String) { + System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(obj.getClass().getName()).concat(String.valueOf(":"))).concat(String.valueOf(methodName))).concat(String.valueOf("["))).concat(String.valueOf(j))).concat(String.valueOf("]="))).concat(String.valueOf(aList.get(j)))); + } else { + display(aList.get(j)); + } + } + } + } else { + display(objRet); + } + } + } + } + + private static String getPackage(String classWithPackage) { + if (classWithPackage == null) + return ""; + int intLastIndexOfDot = classWithPackage.lastIndexOf("."); + if (intLastIndexOfDot == -1) + return ""; + return classWithPackage.substring(0, intLastIndexOfDot + 1); + } + + private static String getClassNameWithoutPackage(String sClassNameWithPackage) { + if (null == sClassNameWithPackage) + return ""; + int indexOfDot = sClassNameWithPackage.lastIndexOf("."); + if (indexOfDot != -1 && indexOfDot < sClassNameWithPackage.length()) + return sClassNameWithPackage.substring(indexOfDot + 1, sClassNameWithPackage.length()); + return sClassNameWithPackage; + } + + public static String objectToXSD(String sClassName) throws Exception { + Class cClass = Class.forName(sClassName); + Object objIn = cClass.newInstance(); + String sClassNameWithoutPackage = getClassNameWithoutPackage(sClassName); + String sPackageName = getPackage(sClassName); + String sXSD = ""; + int level = 0; + sXSD = String.valueOf(sXSD).concat(String.valueOf("")); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf("")); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("")))); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("")))); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf(objectToXSDInternal(objIn, sPackageName, level + 3))); + sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("")))); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("")))); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXSD = String.valueOf(sXSD).concat(String.valueOf("\n")); + sXSD = String.valueOf(sXSD).concat(String.valueOf("")); + return sXSD; + } + + private static String objectToXSDInternal(Object objIn, String sPackageName, int level) throws Exception { + if (null == objIn) + return ""; + String sXML = ""; + Class cIn = objIn.getClass(); + String sClassName = cIn.getName(); + if (sClassName.equals("java.util.ArrayList")) { + ArrayList aList = (ArrayList)objIn; + for (int i = 0; i < aList.size(); i++) { + Object obj = aList.get(i); + sXML = String.valueOf(sXML).concat(String.valueOf(objectToXSDInternal(obj, sPackageName, level))); + } + } else { + if (sClassName.equals("java.lang.String")) + return objIn.toString(); + Field[] fFieldArray = cIn.getDeclaredFields(); + for (int i = 0; i < fFieldArray.length; i++) { + Field aField = fFieldArray[i]; + String sFieldName = aField.getName(); + Class cType = aField.getType(); + String sTagName = getTagName(sFieldName); + String sMethodName = String.valueOf("get").concat(String.valueOf(sFieldName)); + Method m = cIn.getMethod(sMethodName, null); + Class cReturnType = m.getReturnType(); + if (cReturnType.getName().equals("java.util.ArrayList")) { + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + Class cRetType = Class.forName(getClassNameWithPackage(sTagName, sPackageName)); + Object objRet = cRetType.newInstance(); + sXML = String.valueOf(sXML).concat(String.valueOf(objectToXSDInternal(objRet, sPackageName, level + 3))); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + } else if (cReturnType.getName().equals("java.lang.String")) { + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + } else { + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + Object objRet = cReturnType.newInstance(); + sXML = String.valueOf(sXML).concat(String.valueOf(objectToXSDInternal(objRet, sPackageName, level + 3))); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("")))); + sXML = String.valueOf(sXML).concat(String.valueOf("\n")); + } + } + } + return sXML; + } + + public static String objectToXML(Object objIn) throws Exception { + String methodName = "objectToXML"; + try { + StringBuffer sXMLBuffer = new StringBuffer(); + sXMLBuffer.append(""); + if (objIn == null) + return sXMLBuffer.toString(); + sXMLBuffer.append("\n"); + String sClassName = objIn.getClass().getName(); + String sClassNameWithoutPackage = getClassNameWithoutPackage(sClassName); + sXMLBuffer.append("<").append(sClassNameWithoutPackage).append(">"); + sXMLBuffer.append("\n"); + sXMLBuffer.append(objectToXMLInternal(objIn, 0)); + sXMLBuffer.append(""); + return sXMLBuffer.toString(); + } catch (Exception e) { + e.printStackTrace(); + } finally {} + return null; + } + + private static StringBuffer objectToXMLInternal(Object objIn, int level) throws Exception { + if (null == objIn) + return new StringBuffer(); + StringBuffer sXMLBuffer = new StringBuffer(); + Class cIn = objIn.getClass(); + String sClassName = cIn.getName(); + if (sClassName.equals("java.util.ArrayList")) { + ArrayList aList = (ArrayList)objIn; + if (aList.size() > 0) + if (bReverseOrderAttr) { + for (int i = aList.size() - 1; i >= 0; i--) { + Object obj = aList.get(i); + if (obj != null) { + String sTempClassName = obj.getClass().getName(); + if (sTempClassName.equals("java.lang.String")) { + sXMLBuffer.append(objectToXMLInternal(obj, level + 1)); + } else { + String sClassNameWithoutPackage = getClassNameWithoutPackage(sTempClassName); + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sClassNameWithoutPackage).append(">"); + sXMLBuffer.append("\n"); + sXMLBuffer.append(objectToXMLInternal(obj, level + 1)); + sXMLBuffer.append(getSpaces(level + 1)).append(""); + sXMLBuffer.append("\n"); + } + } + } + } else { + for (int i = 0; i < aList.size(); i++) { + Object obj = aList.get(i); + if (obj != null) { + String sTempClassName = obj.getClass().getName(); + if (sTempClassName.equals("java.lang.String")) { + sXMLBuffer.append(objectToXMLInternal(obj, level + 1)); + } else { + String sClassNameWithoutPackage = getClassNameWithoutPackage(sTempClassName); + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sClassNameWithoutPackage).append(">"); + sXMLBuffer.append("\n"); + sXMLBuffer.append(objectToXMLInternal(obj, level + 1)); + sXMLBuffer.append(getSpaces(level + 1)).append(""); + sXMLBuffer.append("\n"); + } + } + } + } + } else { + if (sClassName.equals("java.lang.String")) { + String sTempStr = objIn.toString(); + if (sTempStr.startsWith("= 0; i--) { + Field aField = fFieldArray[i]; + String sFieldName = aField.getName(); + Class cType = aField.getType(); + String sTagName = getTagName(sFieldName); + String sMethodName = String.valueOf("get").concat(String.valueOf(sFieldName)); + Method m = null; + try { + m = cIn.getMethod(sMethodName, null); + } catch (Exception e) {} + Object objRet = m.invoke(objIn, null); + String sReturnClassName = ""; + if (objRet != null) { + sReturnClassName = objRet.getClass().getName(); + if (sReturnClassName.equals("java.util.ArrayList")) { + ArrayList aList = (ArrayList)objRet; + if (aList.size() > 0) { + Object objTemp = aList.get(0); + if (objTemp instanceof String) { + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">"); + sXMLBuffer.append(objectToXMLInternal(objRet, level + 1)); + sXMLBuffer.append(""); + sXMLBuffer.append("\n"); + } else { + sXMLBuffer.append(objectToXMLInternal(objRet, level)); + } + } + } else if (sReturnClassName.equals("java.lang.String")) { + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">"); + sXMLBuffer.append(objectToXMLInternal(objRet, level + 1)); + sXMLBuffer.append(String.valueOf(String.valueOf(""))); + sXMLBuffer.append("\n"); + } else { + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">"); + sXMLBuffer.append("\n"); + sXMLBuffer.append(objectToXMLInternal(objRet, level + 1)); + sXMLBuffer.append(getSpaces(level + 1)).append(String.valueOf(""); + sXMLBuffer.append("\n"); + } + } + } + } else { + for (int i = 0; i < fFieldArray.length; i++) { + Field aField = fFieldArray[i]; + String sFieldName = aField.getName(); + Class cType = aField.getType(); + String sTagName = getTagName(sFieldName); + String sMethodName = String.valueOf("get").concat(String.valueOf(sFieldName)); + Method m = null; + try { + m = cIn.getMethod(sMethodName, null); + } catch (Exception e) {} + Object objRet = m.invoke(objIn, null); + String sReturnClassName = ""; + if (objRet != null) { + sReturnClassName = objRet.getClass().getName(); + if (sReturnClassName.equals("java.util.ArrayList")) { + ArrayList aList = (ArrayList)objRet; + if (aList.size() > 0) { + Object objTemp = aList.get(0); + if (objTemp instanceof String) { + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">"); + sXMLBuffer.append(objectToXMLInternal(objRet, level + 1)); + sXMLBuffer.append(""); + sXMLBuffer.append("\n"); + } else { + sXMLBuffer.append(objectToXMLInternal(objRet, level)); + } + } + } else if (sReturnClassName.equals("java.lang.String")) { + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">"); + sXMLBuffer.append(objectToXMLInternal(objRet, level + 1)); + sXMLBuffer.append(""); + sXMLBuffer.append("\n"); + } else { + sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">"); + sXMLBuffer.append("\n"); + sXMLBuffer.append(objectToXMLInternal(objRet, level + 1)); + sXMLBuffer.append(getSpaces(level + 1)).append(""); + sXMLBuffer.append("\n"); + } + } + } + } + } + return sXMLBuffer; + } + + private static String getTagName(String sFieldName) { + if (sFieldName == null) + return ""; + int indexOfUnderScore = sFieldName.indexOf("_"); + if (indexOfUnderScore == 0 && sFieldName.length() >= 2) + return sFieldName.substring(1, sFieldName.length()); + return sFieldName; + } + + private static String getClassNameWithPackage(String sTagName, String sPackageName) { + if (sPackageName == null || sPackageName.trim().length() <= 0) + return sTagName; + return String.valueOf(sPackageName).concat(String.valueOf(sTagName)); + } + + private static String getSpaces(int iCount) { + String sRet = ""; + for (int i = 0; i < iCount; i++) + sRet = String.valueOf(sRet).concat(String.valueOf(" ")); + return sRet; + } + + public static String encodeXML(String strIn) { + String[] xmlEncFrom = { "&", "\"", "<", ">" }; + String[] xmlEncTo = { "&", """, "<", ">" }; + int idx = 0; + if (strIn == null) + return null; + StringBuffer strOut = new StringBuffer(strIn); + StringBuffer strTemp = null; + for (int i = 0; i < xmlEncFrom.length; i++) { + idx = strOut.toString().indexOf(xmlEncFrom[i]); + while (idx != -1) { + strTemp = new StringBuffer(); + strTemp.append(strOut.substring(0, idx)).append(xmlEncTo[i]).append(strOut.substring(idx + xmlEncFrom[i].length())); + strOut = strTemp; + idx = strOut.toString().indexOf(xmlEncFrom[i], idx + xmlEncTo[i].length()); + } + } + return strOut.toString(); + } + + public static ArrayList validateXMLWithXSD(String xml, String schema) throws IOException, ParserConfigurationException, SAXException { + try { + SAXParserFactory parserFactory = SAXParserFactory.newInstance(); + parserFactory.setNamespaceAware(true); + parserFactory.setValidating(true); + parserFactory.setFeature("http://apache.org/xml/features/validation/schema", true); + parserFactory.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true); + SAXParser saxParser = parserFactory.newSAXParser(); + saxParser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", schema); + InputSource is = new InputSource(new StringReader(xml)); + XMLValidationHandler handler = new XMLValidationHandler(); + saxParser.parse(is, handler); + ArrayList aList = handler.getResults(); + return aList; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static ArrayList validateXMLWithXSD(File file, String schema) throws IOException, ParserConfigurationException, SAXException { + try { + String sFileName = file.getAbsolutePath(); + SAXParserFactory parserFactory = SAXParserFactory.newInstance(); + parserFactory.setNamespaceAware(true); + parserFactory.setValidating(true); + parserFactory.setFeature("http://apache.org/xml/features/validation/schema", true); + parserFactory.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true); + SAXParser saxParser = parserFactory.newSAXParser(); + saxParser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", schema); + InputSource is = new InputSource(sFileName); + XMLValidationHandler handler = new XMLValidationHandler(); + saxParser.parse(is, handler); + ArrayList aList = handler.getResults(); + return aList; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/hrmsEjb/com/tcs/wenrgise/util/common/XMLValidationHandler.java b/hrmsEjb/com/tcs/wenrgise/util/common/XMLValidationHandler.java new file mode 100644 index 0000000..efca85a --- /dev/null +++ b/hrmsEjb/com/tcs/wenrgise/util/common/XMLValidationHandler.java @@ -0,0 +1,26 @@ +package com.tcs.wenrgise.util.common; + +import java.util.ArrayList; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +import org.xml.sax.helpers.DefaultHandler; + +public class XMLValidationHandler extends DefaultHandler { + private ArrayList results = new ArrayList(); + + public ArrayList getResults() { + return this.results; + } + + public void warning(SAXParseException e) throws SAXException { + this.results.add(e.toString()); + } + + public void fatalError(SAXParseException e) throws SAXException { + this.results.add(e.toString()); + } + + public void error(SAXParseException e) throws SAXException { + this.results.add(e.toString()); + } +} diff --git a/hrmsEjb/common/Assert.java b/hrmsEjb/common/Assert.java new file mode 100644 index 0000000..aa013c5 --- /dev/null +++ b/hrmsEjb/common/Assert.java @@ -0,0 +1,13 @@ +package common; + +public final class Assert { + public static void verify(boolean condition) { + if (!condition) + throw new AssertionFailed(); + } + + public static void verify(boolean condition, String message) { + if (!condition) + throw new AssertionFailed(message); + } +} diff --git a/hrmsEjb/common/AssertionFailed.java b/hrmsEjb/common/AssertionFailed.java new file mode 100644 index 0000000..ea6ae79 --- /dev/null +++ b/hrmsEjb/common/AssertionFailed.java @@ -0,0 +1,11 @@ +package common; + +public class AssertionFailed extends RuntimeException { + public AssertionFailed() { + printStackTrace(); + } + + public AssertionFailed(String s) { + super(s); + } +} diff --git a/hrmsEjb/common/Logger.java b/hrmsEjb/common/Logger.java new file mode 100644 index 0000000..ac30579 --- /dev/null +++ b/hrmsEjb/common/Logger.java @@ -0,0 +1,63 @@ +package common; + +import common.log.LoggerName; +import common.log.SimpleLogger; +import java.security.AccessControlException; + +public abstract class Logger { + private static Logger logger = null; + + public static final Logger getLogger(Class cl) { + if (logger == null) + initializeLogger(); + return logger.getLoggerImpl(cl); + } + + private static synchronized void initializeLogger() { + if (logger != null) + return; + String loggerName = LoggerName.NAME; + try { + loggerName = System.getProperty("logger"); + if (loggerName == null) + loggerName = LoggerName.NAME; + logger = (Logger)Class.forName(loggerName).newInstance(); + } catch (IllegalAccessException e) { + logger = (Logger)new SimpleLogger(); + logger.warn("Could not instantiate logger " + loggerName + " using default"); + } catch (InstantiationException e) { + logger = (Logger)new SimpleLogger(); + logger.warn("Could not instantiate logger " + loggerName + " using default"); + } catch (AccessControlException e) { + logger = (Logger)new SimpleLogger(); + logger.warn("Could not instantiate logger " + loggerName + " using default"); + } catch (ClassNotFoundException e) { + logger = (Logger)new SimpleLogger(); + logger.warn("Could not instantiate logger " + loggerName + " using default"); + } + } + + public abstract void debug(Object paramObject); + + public abstract void debug(Object paramObject, Throwable paramThrowable); + + public abstract void error(Object paramObject); + + public abstract void error(Object paramObject, Throwable paramThrowable); + + public abstract void fatal(Object paramObject); + + public abstract void fatal(Object paramObject, Throwable paramThrowable); + + public abstract void info(Object paramObject); + + public abstract void info(Object paramObject, Throwable paramThrowable); + + public abstract void warn(Object paramObject); + + public abstract void warn(Object paramObject, Throwable paramThrowable); + + protected abstract Logger getLoggerImpl(Class paramClass); + + public void setSuppressWarnings(boolean w) {} +} diff --git a/hrmsEjb/common/log/LoggerName.java b/hrmsEjb/common/log/LoggerName.java new file mode 100644 index 0000000..56b66a5 --- /dev/null +++ b/hrmsEjb/common/log/LoggerName.java @@ -0,0 +1,5 @@ +package common.log; + +public class LoggerName { + public static final String NAME = SimpleLogger.class.getName(); +} diff --git a/hrmsEjb/common/log/SimpleLogger.java b/hrmsEjb/common/log/SimpleLogger.java new file mode 100644 index 0000000..0e5282d --- /dev/null +++ b/hrmsEjb/common/log/SimpleLogger.java @@ -0,0 +1,79 @@ +package common.log; + +import common.Logger; + +public class SimpleLogger extends Logger { + private boolean suppressWarnings = false; + + public void debug(Object message) { + if (!this.suppressWarnings) { + System.out.print("Debug: "); + System.out.println(message); + } + } + + public void debug(Object message, Throwable t) { + if (!this.suppressWarnings) { + System.out.print("Debug: "); + System.out.println(message); + t.printStackTrace(); + } + } + + public void error(Object message) { + System.err.print("Error: "); + System.err.println(message); + } + + public void error(Object message, Throwable t) { + System.err.print("Error: "); + System.err.println(message); + t.printStackTrace(); + } + + public void fatal(Object message) { + System.err.print("Fatal: "); + System.err.println(message); + } + + public void fatal(Object message, Throwable t) { + System.err.print("Fatal: "); + System.err.println(message); + t.printStackTrace(); + } + + public void info(Object message) { + if (!this.suppressWarnings) + System.out.println(message); + } + + public void info(Object message, Throwable t) { + if (!this.suppressWarnings) { + System.out.println(message); + t.printStackTrace(); + } + } + + public void warn(Object message) { + if (!this.suppressWarnings) { + System.err.print("Warning: "); + System.err.println(message); + } + } + + public void warn(Object message, Throwable t) { + if (!this.suppressWarnings) { + System.err.print("Warning: "); + System.err.println(message); + t.printStackTrace(); + } + } + + protected Logger getLoggerImpl(Class c) { + return this; + } + + public void setSuppressWarnings(boolean w) { + this.suppressWarnings = w; + } +} diff --git a/hrmsEjb/jxl/BooleanCell.java b/hrmsEjb/jxl/BooleanCell.java new file mode 100644 index 0000000..9add9cb --- /dev/null +++ b/hrmsEjb/jxl/BooleanCell.java @@ -0,0 +1,5 @@ +package jxl; + +public interface BooleanCell extends Cell { + boolean getValue(); +} diff --git a/hrmsEjb/jxl/BooleanFormulaCell.java b/hrmsEjb/jxl/BooleanFormulaCell.java new file mode 100644 index 0000000..f1ba4e4 --- /dev/null +++ b/hrmsEjb/jxl/BooleanFormulaCell.java @@ -0,0 +1,3 @@ +package jxl; + +public interface BooleanFormulaCell extends BooleanCell, FormulaCell {} diff --git a/hrmsEjb/jxl/Cell.java b/hrmsEjb/jxl/Cell.java new file mode 100644 index 0000000..c130082 --- /dev/null +++ b/hrmsEjb/jxl/Cell.java @@ -0,0 +1,19 @@ +package jxl; + +import jxl.format.CellFormat; + +public interface Cell { + int getRow(); + + int getColumn(); + + CellType getType(); + + boolean isHidden(); + + String getContents(); + + CellFormat getCellFormat(); + + CellFeatures getCellFeatures(); +} diff --git a/hrmsEjb/jxl/CellFeatures.java b/hrmsEjb/jxl/CellFeatures.java new file mode 100644 index 0000000..f84a313 --- /dev/null +++ b/hrmsEjb/jxl/CellFeatures.java @@ -0,0 +1,15 @@ +package jxl; + +import jxl.biff.BaseCellFeatures; + +public class CellFeatures extends BaseCellFeatures { + public CellFeatures() {} + + protected CellFeatures(CellFeatures cf) { + super(cf); + } + + public String getComment() { + return super.getComment(); + } +} diff --git a/hrmsEjb/jxl/CellFormat.java b/hrmsEjb/jxl/CellFormat.java new file mode 100644 index 0000000..f4e5bad --- /dev/null +++ b/hrmsEjb/jxl/CellFormat.java @@ -0,0 +1,5 @@ +package jxl; + +import jxl.format.CellFormat; + +public interface CellFormat extends CellFormat {} diff --git a/hrmsEjb/jxl/CellReferenceHelper.java b/hrmsEjb/jxl/CellReferenceHelper.java new file mode 100644 index 0000000..7707692 --- /dev/null +++ b/hrmsEjb/jxl/CellReferenceHelper.java @@ -0,0 +1,63 @@ +package jxl; + +import jxl.biff.CellReferenceHelper; +import jxl.biff.formula.ExternalSheet; +import jxl.write.WritableWorkbook; + +public final class CellReferenceHelper { + public static void getCellReference(int column, int row, StringBuffer buf) { + CellReferenceHelper.getCellReference(column, row, buf); + } + + public static void getCellReference(int column, boolean colabs, int row, boolean rowabs, StringBuffer buf) { + CellReferenceHelper.getCellReference(column, colabs, row, rowabs, buf); + } + + public static String getCellReference(int column, int row) { + return CellReferenceHelper.getCellReference(column, row); + } + + public static int getColumn(String s) { + return CellReferenceHelper.getColumn(s); + } + + public static String getColumnReference(int c) { + return CellReferenceHelper.getColumnReference(c); + } + + public static int getRow(String s) { + return CellReferenceHelper.getRow(s); + } + + public static boolean isColumnRelative(String s) { + return CellReferenceHelper.isColumnRelative(s); + } + + public static boolean isRowRelative(String s) { + return CellReferenceHelper.isRowRelative(s); + } + + public static void getCellReference(int sheet, int column, int row, Workbook workbook, StringBuffer buf) { + CellReferenceHelper.getCellReference(sheet, column, row, (ExternalSheet)workbook, buf); + } + + public static void getCellReference(int sheet, int column, int row, WritableWorkbook workbook, StringBuffer buf) { + CellReferenceHelper.getCellReference(sheet, column, row, (ExternalSheet)workbook, buf); + } + + public static void getCellReference(int sheet, int column, boolean colabs, int row, boolean rowabs, Workbook workbook, StringBuffer buf) { + CellReferenceHelper.getCellReference(sheet, column, colabs, row, rowabs, (ExternalSheet)workbook, buf); + } + + public static String getCellReference(int sheet, int column, int row, Workbook workbook) { + return CellReferenceHelper.getCellReference(sheet, column, row, (ExternalSheet)workbook); + } + + public static String getCellReference(int sheet, int column, int row, WritableWorkbook workbook) { + return CellReferenceHelper.getCellReference(sheet, column, row, (ExternalSheet)workbook); + } + + public static String getSheet(String ref) { + return CellReferenceHelper.getSheet(ref); + } +} diff --git a/hrmsEjb/jxl/CellType.java b/hrmsEjb/jxl/CellType.java new file mode 100644 index 0000000..39efe76 --- /dev/null +++ b/hrmsEjb/jxl/CellType.java @@ -0,0 +1,35 @@ +package jxl; + +public final class CellType { + private String description; + + private CellType(String desc) { + this.description = desc; + } + + public String toString() { + return this.description; + } + + public static final CellType EMPTY = new CellType("Empty"); + + public static final CellType LABEL = new CellType("Label"); + + public static final CellType NUMBER = new CellType("Number"); + + public static final CellType BOOLEAN = new CellType("Boolean"); + + public static final CellType ERROR = new CellType("Error"); + + public static final CellType NUMBER_FORMULA = new CellType("Numerical Formula"); + + public static final CellType DATE_FORMULA = new CellType("Date Formula"); + + public static final CellType STRING_FORMULA = new CellType("String Formula"); + + public static final CellType BOOLEAN_FORMULA = new CellType("Boolean Formula"); + + public static final CellType FORMULA_ERROR = new CellType("Formula Error"); + + public static final CellType DATE = new CellType("Date"); +} diff --git a/hrmsEjb/jxl/CellView.java b/hrmsEjb/jxl/CellView.java new file mode 100644 index 0000000..72f1fb7 --- /dev/null +++ b/hrmsEjb/jxl/CellView.java @@ -0,0 +1,53 @@ +package jxl; + +import jxl.format.CellFormat; + +public final class CellView { + private boolean hidden = false; + + private boolean depUsed = false; + + private int dimension = 1; + + private int size = 1; + + private CellFormat format; + + public void setHidden(boolean h) { + this.hidden = h; + } + + public boolean isHidden() { + return this.hidden; + } + + public void setDimension(int d) { + this.dimension = d; + this.depUsed = true; + } + + public void setSize(int d) { + this.size = d; + this.depUsed = false; + } + + public int getDimension() { + return this.dimension; + } + + public int getSize() { + return this.size; + } + + public void setFormat(CellFormat cf) { + this.format = cf; + } + + public CellFormat getFormat() { + return this.format; + } + + public boolean depUsed() { + return this.depUsed; + } +} diff --git a/hrmsEjb/jxl/DateCell.java b/hrmsEjb/jxl/DateCell.java new file mode 100644 index 0000000..b943f81 --- /dev/null +++ b/hrmsEjb/jxl/DateCell.java @@ -0,0 +1,12 @@ +package jxl; + +import java.text.DateFormat; +import java.util.Date; + +public interface DateCell extends Cell { + Date getDate(); + + boolean isTime(); + + DateFormat getDateFormat(); +} diff --git a/hrmsEjb/jxl/DateFormulaCell.java b/hrmsEjb/jxl/DateFormulaCell.java new file mode 100644 index 0000000..db2b454 --- /dev/null +++ b/hrmsEjb/jxl/DateFormulaCell.java @@ -0,0 +1,3 @@ +package jxl; + +public interface DateFormulaCell extends DateCell, FormulaCell {} diff --git a/hrmsEjb/jxl/ErrorCell.java b/hrmsEjb/jxl/ErrorCell.java new file mode 100644 index 0000000..e2e7170 --- /dev/null +++ b/hrmsEjb/jxl/ErrorCell.java @@ -0,0 +1,5 @@ +package jxl; + +public interface ErrorCell extends Cell { + int getErrorCode(); +} diff --git a/hrmsEjb/jxl/ErrorFormulaCell.java b/hrmsEjb/jxl/ErrorFormulaCell.java new file mode 100644 index 0000000..1de7422 --- /dev/null +++ b/hrmsEjb/jxl/ErrorFormulaCell.java @@ -0,0 +1,3 @@ +package jxl; + +public interface ErrorFormulaCell extends ErrorCell, FormulaCell {} diff --git a/hrmsEjb/jxl/FormulaCell.java b/hrmsEjb/jxl/FormulaCell.java new file mode 100644 index 0000000..c01552e --- /dev/null +++ b/hrmsEjb/jxl/FormulaCell.java @@ -0,0 +1,7 @@ +package jxl; + +import jxl.biff.formula.FormulaException; + +public interface FormulaCell extends Cell { + String getFormula() throws FormulaException; +} diff --git a/hrmsEjb/jxl/HeaderFooter.java b/hrmsEjb/jxl/HeaderFooter.java new file mode 100644 index 0000000..7d134cf --- /dev/null +++ b/hrmsEjb/jxl/HeaderFooter.java @@ -0,0 +1,139 @@ +package jxl; + +import jxl.biff.HeaderFooter; + +public final class HeaderFooter extends HeaderFooter { + public static class Contents extends HeaderFooter.Contents { + Contents() {} + + Contents(String s) { + super(s); + } + + Contents(Contents copy) { + super(copy); + } + + public void append(String txt) { + super.append(txt); + } + + public void toggleBold() { + super.toggleBold(); + } + + public void toggleUnderline() { + super.toggleUnderline(); + } + + public void toggleItalics() { + super.toggleItalics(); + } + + public void toggleStrikethrough() { + super.toggleStrikethrough(); + } + + public void toggleDoubleUnderline() { + super.toggleDoubleUnderline(); + } + + public void toggleSuperScript() { + super.toggleSuperScript(); + } + + public void toggleSubScript() { + super.toggleSubScript(); + } + + public void toggleOutline() { + super.toggleOutline(); + } + + public void toggleShadow() { + super.toggleShadow(); + } + + public void setFontName(String fontName) { + super.setFontName(fontName); + } + + public boolean setFontSize(int size) { + return super.setFontSize(size); + } + + public void appendPageNumber() { + super.appendPageNumber(); + } + + public void appendTotalPages() { + super.appendTotalPages(); + } + + public void appendDate() { + super.appendDate(); + } + + public void appendTime() { + super.appendTime(); + } + + public void appendWorkbookName() { + super.appendWorkbookName(); + } + + public void appendWorkSheetName() { + super.appendWorkSheetName(); + } + + public void clear() { + super.clear(); + } + + public boolean empty() { + return super.empty(); + } + } + + public HeaderFooter() {} + + public HeaderFooter(HeaderFooter hf) { + super(hf); + } + + public HeaderFooter(String s) { + super(s); + } + + public String toString() { + return super.toString(); + } + + public Contents getRight() { + return (Contents)getRightText(); + } + + public Contents getCentre() { + return (Contents)getCentreText(); + } + + public Contents getLeft() { + return (Contents)getLeftText(); + } + + public void clear() { + super.clear(); + } + + protected HeaderFooter.Contents createContents() { + return new Contents(); + } + + protected HeaderFooter.Contents createContents(String s) { + return new Contents(s); + } + + protected HeaderFooter.Contents createContents(HeaderFooter.Contents c) { + return new Contents((Contents)c); + } +} diff --git a/hrmsEjb/jxl/Hyperlink.java b/hrmsEjb/jxl/Hyperlink.java new file mode 100644 index 0000000..2451110 --- /dev/null +++ b/hrmsEjb/jxl/Hyperlink.java @@ -0,0 +1,26 @@ +package jxl; + +import java.io.File; +import java.net.URL; + +public interface Hyperlink { + int getRow(); + + int getColumn(); + + Range getRange(); + + boolean isFile(); + + boolean isURL(); + + boolean isLocation(); + + int getLastRow(); + + int getLastColumn(); + + URL getURL(); + + File getFile(); +} diff --git a/hrmsEjb/jxl/Image.java b/hrmsEjb/jxl/Image.java new file mode 100644 index 0000000..a2bcdf1 --- /dev/null +++ b/hrmsEjb/jxl/Image.java @@ -0,0 +1,17 @@ +package jxl; + +import java.io.File; + +public interface Image { + double getColumn(); + + double getRow(); + + double getWidth(); + + double getHeight(); + + File getImageFile(); + + byte[] getImageData(); +} diff --git a/hrmsEjb/jxl/JXLException.java b/hrmsEjb/jxl/JXLException.java new file mode 100644 index 0000000..e9f2eef --- /dev/null +++ b/hrmsEjb/jxl/JXLException.java @@ -0,0 +1,7 @@ +package jxl; + +public class JXLException extends Exception { + protected JXLException(String message) { + super(message); + } +} diff --git a/hrmsEjb/jxl/LabelCell.java b/hrmsEjb/jxl/LabelCell.java new file mode 100644 index 0000000..66b55bd --- /dev/null +++ b/hrmsEjb/jxl/LabelCell.java @@ -0,0 +1,5 @@ +package jxl; + +public interface LabelCell extends Cell { + String getString(); +} diff --git a/hrmsEjb/jxl/NumberCell.java b/hrmsEjb/jxl/NumberCell.java new file mode 100644 index 0000000..73d81f4 --- /dev/null +++ b/hrmsEjb/jxl/NumberCell.java @@ -0,0 +1,9 @@ +package jxl; + +import java.text.NumberFormat; + +public interface NumberCell extends Cell { + double getValue(); + + NumberFormat getNumberFormat(); +} diff --git a/hrmsEjb/jxl/NumberFormulaCell.java b/hrmsEjb/jxl/NumberFormulaCell.java new file mode 100644 index 0000000..4742ce3 --- /dev/null +++ b/hrmsEjb/jxl/NumberFormulaCell.java @@ -0,0 +1,3 @@ +package jxl; + +public interface NumberFormulaCell extends NumberCell, FormulaCell {} diff --git a/hrmsEjb/jxl/Range.java b/hrmsEjb/jxl/Range.java new file mode 100644 index 0000000..dc26a93 --- /dev/null +++ b/hrmsEjb/jxl/Range.java @@ -0,0 +1,11 @@ +package jxl; + +public interface Range { + Cell getTopLeft(); + + Cell getBottomRight(); + + int getFirstSheetIndex(); + + int getLastSheetIndex(); +} diff --git a/hrmsEjb/jxl/Sheet.java b/hrmsEjb/jxl/Sheet.java new file mode 100644 index 0000000..16bf6d5 --- /dev/null +++ b/hrmsEjb/jxl/Sheet.java @@ -0,0 +1,49 @@ +package jxl; + +import jxl.format.CellFormat; + +public interface Sheet { + Cell getCell(int paramInt1, int paramInt2); + + Cell getCell(String paramString); + + int getRows(); + + int getColumns(); + + Cell[] getRow(int paramInt); + + Cell[] getColumn(int paramInt); + + String getName(); + + boolean isHidden(); + + boolean isProtected(); + + Cell findCell(String paramString); + + LabelCell findLabelCell(String paramString); + + Hyperlink[] getHyperlinks(); + + Range[] getMergedCells(); + + SheetSettings getSettings(); + + CellFormat getColumnFormat(int paramInt); + + int getColumnWidth(int paramInt); + + CellView getColumnView(int paramInt); + + int getRowHeight(int paramInt); + + CellView getRowView(int paramInt); + + int getNumberOfImages(); + + Image getDrawing(int paramInt); + + int[] getRowPageBreaks(); +} diff --git a/hrmsEjb/jxl/SheetSettings.java b/hrmsEjb/jxl/SheetSettings.java new file mode 100644 index 0000000..a3aee61 --- /dev/null +++ b/hrmsEjb/jxl/SheetSettings.java @@ -0,0 +1,471 @@ +package jxl; + +import common.Assert; +import jxl.format.PageOrientation; +import jxl.format.PaperSize; + +public final class SheetSettings { + private PageOrientation orientation; + + private PaperSize paperSize; + + private boolean sheetProtected; + + private boolean hidden; + + private boolean selected; + + private HeaderFooter header; + + private double headerMargin; + + private HeaderFooter footer; + + private double footerMargin; + + private int scaleFactor; + + private int zoomFactor; + + private int pageStart; + + private int fitWidth; + + private int fitHeight; + + private int horizontalPrintResolution; + + private int verticalPrintResolution; + + private double leftMargin; + + private double rightMargin; + + private double topMargin; + + private double bottomMargin; + + private boolean fitToPages; + + private boolean showGridLines; + + private boolean printGridLines; + + private boolean printHeaders; + + private boolean displayZeroValues; + + private String password; + + private int passwordHash; + + private int defaultColumnWidth; + + private int defaultRowHeight; + + private int horizontalFreeze; + + private int verticalFreeze; + + private boolean verticalCentre; + + private boolean horizontalCentre; + + private int copies; + + private boolean automaticFormulaCalculation; + + private boolean recalculateFormulasBeforeSave; + + private static final PageOrientation defaultOrientation = PageOrientation.PORTRAIT; + + private static final PaperSize defaultPaperSize = PaperSize.A4; + + private static final double defaultHeaderMargin = 0.5D; + + private static final double defaultFooterMargin = 0.5D; + + private static final int defaultPrintResolution = 300; + + private static final double defaultWidthMargin = 0.75D; + + private static final double defaultHeightMargin = 1.0D; + + private static final int defaultDefaultColumnWidth = 8; + + private static final int defaultZoomFactor = 100; + + public static final int DEFAULT_DEFAULT_ROW_HEIGHT = 255; + + public SheetSettings() { + this.orientation = defaultOrientation; + this.paperSize = defaultPaperSize; + this.sheetProtected = false; + this.hidden = false; + this.selected = false; + this.headerMargin = 0.5D; + this.footerMargin = 0.5D; + this.horizontalPrintResolution = 300; + this.verticalPrintResolution = 300; + this.leftMargin = 0.75D; + this.rightMargin = 0.75D; + this.topMargin = 1.0D; + this.bottomMargin = 1.0D; + this.fitToPages = false; + this.showGridLines = true; + this.printGridLines = false; + this.printHeaders = false; + this.displayZeroValues = true; + this.defaultColumnWidth = 8; + this.defaultRowHeight = 255; + this.zoomFactor = 100; + this.horizontalFreeze = 0; + this.verticalFreeze = 0; + this.copies = 1; + this.header = new HeaderFooter(); + this.footer = new HeaderFooter(); + this.automaticFormulaCalculation = true; + this.recalculateFormulasBeforeSave = true; + } + + public SheetSettings(SheetSettings copy) { + Assert.verify((copy != null)); + this.orientation = copy.orientation; + this.paperSize = copy.paperSize; + this.sheetProtected = copy.sheetProtected; + this.hidden = copy.hidden; + this.selected = false; + this.headerMargin = copy.headerMargin; + this.footerMargin = copy.footerMargin; + this.scaleFactor = copy.scaleFactor; + this.pageStart = copy.pageStart; + this.fitWidth = copy.fitWidth; + this.fitHeight = copy.fitHeight; + this.horizontalPrintResolution = copy.horizontalPrintResolution; + this.verticalPrintResolution = copy.verticalPrintResolution; + this.leftMargin = copy.leftMargin; + this.rightMargin = copy.rightMargin; + this.topMargin = copy.topMargin; + this.bottomMargin = copy.bottomMargin; + this.fitToPages = copy.fitToPages; + this.password = copy.password; + this.passwordHash = copy.passwordHash; + this.defaultColumnWidth = copy.defaultColumnWidth; + this.defaultRowHeight = copy.defaultRowHeight; + this.zoomFactor = copy.zoomFactor; + this.showGridLines = copy.showGridLines; + this.displayZeroValues = copy.displayZeroValues; + this.horizontalFreeze = copy.horizontalFreeze; + this.verticalFreeze = copy.verticalFreeze; + this.horizontalCentre = copy.horizontalCentre; + this.verticalCentre = copy.verticalCentre; + this.copies = copy.copies; + this.header = new HeaderFooter(copy.header); + this.footer = new HeaderFooter(copy.footer); + this.automaticFormulaCalculation = copy.automaticFormulaCalculation; + this.recalculateFormulasBeforeSave = copy.recalculateFormulasBeforeSave; + } + + public void setOrientation(PageOrientation po) { + this.orientation = po; + } + + public PageOrientation getOrientation() { + return this.orientation; + } + + public void setPaperSize(PaperSize ps) { + this.paperSize = ps; + } + + public PaperSize getPaperSize() { + return this.paperSize; + } + + public boolean isProtected() { + return this.sheetProtected; + } + + public void setProtected(boolean p) { + this.sheetProtected = p; + } + + public void setHeaderMargin(double d) { + this.headerMargin = d; + } + + public double getHeaderMargin() { + return this.headerMargin; + } + + public void setFooterMargin(double d) { + this.footerMargin = d; + } + + public double getFooterMargin() { + return this.footerMargin; + } + + public void setHidden(boolean h) { + this.hidden = h; + } + + public boolean isHidden() { + return this.hidden; + } + + public void setSelected() { + setSelected(true); + } + + public void setSelected(boolean s) { + this.selected = s; + } + + public boolean isSelected() { + return this.selected; + } + + public void setScaleFactor(int sf) { + this.scaleFactor = sf; + this.fitToPages = false; + } + + public int getScaleFactor() { + return this.scaleFactor; + } + + public void setPageStart(int ps) { + this.pageStart = ps; + } + + public int getPageStart() { + return this.pageStart; + } + + public void setFitWidth(int fw) { + this.fitWidth = fw; + this.fitToPages = true; + } + + public int getFitWidth() { + return this.fitWidth; + } + + public void setFitHeight(int fh) { + this.fitHeight = fh; + this.fitToPages = true; + } + + public int getFitHeight() { + return this.fitHeight; + } + + public void setHorizontalPrintResolution(int hpw) { + this.horizontalPrintResolution = hpw; + } + + public int getHorizontalPrintResolution() { + return this.horizontalPrintResolution; + } + + public void setVerticalPrintResolution(int vpw) { + this.verticalPrintResolution = vpw; + } + + public int getVerticalPrintResolution() { + return this.verticalPrintResolution; + } + + public void setRightMargin(double m) { + this.rightMargin = m; + } + + public double getRightMargin() { + return this.rightMargin; + } + + public void setLeftMargin(double m) { + this.leftMargin = m; + } + + public double getLeftMargin() { + return this.leftMargin; + } + + public void setTopMargin(double m) { + this.topMargin = m; + } + + public double getTopMargin() { + return this.topMargin; + } + + public void setBottomMargin(double m) { + this.bottomMargin = m; + } + + public double getBottomMargin() { + return this.bottomMargin; + } + + public double getDefaultWidthMargin() { + return 0.75D; + } + + public double getDefaultHeightMargin() { + return 1.0D; + } + + public boolean getFitToPages() { + return this.fitToPages; + } + + public void setFitToPages(boolean b) { + this.fitToPages = b; + } + + public String getPassword() { + return this.password; + } + + public void setPassword(String s) { + this.password = s; + } + + public int getPasswordHash() { + return this.passwordHash; + } + + public void setPasswordHash(int ph) { + this.passwordHash = ph; + } + + public int getDefaultColumnWidth() { + return this.defaultColumnWidth; + } + + public void setDefaultColumnWidth(int w) { + this.defaultColumnWidth = w; + } + + public int getDefaultRowHeight() { + return this.defaultRowHeight; + } + + public void setDefaultRowHeight(int h) { + this.defaultRowHeight = h; + } + + public int getZoomFactor() { + return this.zoomFactor; + } + + public void setZoomFactor(int zf) { + this.zoomFactor = zf; + } + + public boolean getDisplayZeroValues() { + return this.displayZeroValues; + } + + public void setDisplayZeroValues(boolean b) { + this.displayZeroValues = b; + } + + public boolean getShowGridLines() { + return this.showGridLines; + } + + public void setShowGridLines(boolean b) { + this.showGridLines = b; + } + + public boolean getPrintGridLines() { + return this.printGridLines; + } + + public void setPrintGridLines(boolean b) { + this.printGridLines = b; + } + + public boolean getPrintHeaders() { + return this.printHeaders; + } + + public void setPrintHeaders(boolean b) { + this.printHeaders = b; + } + + public int getHorizontalFreeze() { + return this.horizontalFreeze; + } + + public void setHorizontalFreeze(int row) { + this.horizontalFreeze = Math.max(row, 0); + } + + public int getVerticalFreeze() { + return this.verticalFreeze; + } + + public void setVerticalFreeze(int col) { + this.verticalFreeze = Math.max(col, 0); + } + + public void setCopies(int c) { + this.copies = c; + } + + public int getCopies() { + return this.copies; + } + + public HeaderFooter getHeader() { + return this.header; + } + + public void setHeader(HeaderFooter h) { + this.header = h; + } + + public void setFooter(HeaderFooter f) { + this.footer = f; + } + + public HeaderFooter getFooter() { + return this.footer; + } + + public boolean isHorizontalCentre() { + return this.horizontalCentre; + } + + public void setHorizontalCentre(boolean horizontalCentre) { + this.horizontalCentre = horizontalCentre; + } + + public boolean isVerticalCentre() { + return this.verticalCentre; + } + + public void setVerticalCentre(boolean verticalCentre) { + this.verticalCentre = verticalCentre; + } + + public void setAutomaticFormulaCalculation(boolean auto) { + this.automaticFormulaCalculation = auto; + } + + public boolean getAutomaticFormulaCalculation() { + return this.automaticFormulaCalculation; + } + + public void setRecalculateFormulasBeforeSave(boolean recalc) { + this.recalculateFormulasBeforeSave = recalc; + } + + public boolean getRecalculateFormulasBeforeSave() { + return this.recalculateFormulasBeforeSave; + } +} diff --git a/hrmsEjb/jxl/StringFormulaCell.java b/hrmsEjb/jxl/StringFormulaCell.java new file mode 100644 index 0000000..878ec41 --- /dev/null +++ b/hrmsEjb/jxl/StringFormulaCell.java @@ -0,0 +1,3 @@ +package jxl; + +public interface StringFormulaCell extends LabelCell, FormulaCell {} diff --git a/hrmsEjb/jxl/Workbook.java b/hrmsEjb/jxl/Workbook.java new file mode 100644 index 0000000..44e9ee3 --- /dev/null +++ b/hrmsEjb/jxl/Workbook.java @@ -0,0 +1,113 @@ +package jxl; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import jxl.read.biff.BiffException; +import jxl.read.biff.File; +import jxl.read.biff.PasswordException; +import jxl.read.biff.WorkbookParser; +import jxl.write.WritableWorkbook; +import jxl.write.biff.WritableWorkbookImpl; + +public abstract class Workbook { + private static final String version = "2.5.9"; + + public abstract Sheet[] getSheets(); + + public abstract String[] getSheetNames(); + + public abstract Sheet getSheet(int paramInt) throws IndexOutOfBoundsException; + + public abstract Sheet getSheet(String paramString); + + public static String getVersion() { + return "2.5.9"; + } + + public abstract int getNumberOfSheets(); + + public abstract Cell findCellByName(String paramString); + + public abstract Cell getCell(String paramString); + + public abstract Range[] findByName(String paramString); + + public abstract String[] getRangeNames(); + + public abstract boolean isProtected(); + + protected abstract void parse() throws BiffException, PasswordException; + + public abstract void close(); + + public static Workbook getWorkbook(File file) throws IOException, BiffException { + return getWorkbook(file, new WorkbookSettings()); + } + + public static Workbook getWorkbook(File file, WorkbookSettings ws) throws IOException, BiffException { + FileInputStream fis = new FileInputStream(file); + File dataFile = null; + try { + dataFile = new File(fis, ws); + } catch (IOException e) { + fis.close(); + throw e; + } catch (BiffException e) { + fis.close(); + throw e; + } + fis.close(); + WorkbookParser workbookParser = new WorkbookParser(dataFile, ws); + workbookParser.parse(); + return (Workbook)workbookParser; + } + + public static Workbook getWorkbook(InputStream is) throws IOException, BiffException { + return getWorkbook(is, new WorkbookSettings()); + } + + public static Workbook getWorkbook(InputStream is, WorkbookSettings ws) throws IOException, BiffException { + File dataFile = new File(is, ws); + WorkbookParser workbookParser = new WorkbookParser(dataFile, ws); + workbookParser.parse(); + return (Workbook)workbookParser; + } + + public static WritableWorkbook createWorkbook(File file) throws IOException { + return createWorkbook(file, new WorkbookSettings()); + } + + public static WritableWorkbook createWorkbook(File file, WorkbookSettings ws) throws IOException { + FileOutputStream fos = new FileOutputStream(file); + return (WritableWorkbook)new WritableWorkbookImpl(fos, true, ws); + } + + public static WritableWorkbook createWorkbook(File file, Workbook in) throws IOException { + return createWorkbook(file, in, new WorkbookSettings()); + } + + public static WritableWorkbook createWorkbook(File file, Workbook in, WorkbookSettings ws) throws IOException { + FileOutputStream fos = new FileOutputStream(file); + return (WritableWorkbook)new WritableWorkbookImpl(fos, in, true, ws); + } + + public static WritableWorkbook createWorkbook(OutputStream os, Workbook in) throws IOException { + return createWorkbook(os, in, ((WorkbookParser)in).getSettings()); + } + + public static WritableWorkbook createWorkbook(OutputStream os, Workbook in, WorkbookSettings ws) throws IOException { + return (WritableWorkbook)new WritableWorkbookImpl(os, in, false, ws); + } + + public static WritableWorkbook createWorkbook(OutputStream os) throws IOException { + return createWorkbook(os, new WorkbookSettings()); + } + + public static WritableWorkbook createWorkbook(OutputStream os, WorkbookSettings ws) throws IOException { + return (WritableWorkbook)new WritableWorkbookImpl(os, false, ws); + } +} diff --git a/hrmsEjb/jxl/WorkbookSettings.java b/hrmsEjb/jxl/WorkbookSettings.java new file mode 100644 index 0000000..f2d269d --- /dev/null +++ b/hrmsEjb/jxl/WorkbookSettings.java @@ -0,0 +1,214 @@ +package jxl; + +import common.Logger; +import java.util.HashMap; +import java.util.Locale; +import jxl.biff.CountryCode; +import jxl.biff.formula.FunctionNames; + +public final class WorkbookSettings { + private static Logger logger = Logger.getLogger(WorkbookSettings.class); + + private int initialFileSize = 5242880; + + private int arrayGrowSize = 1048576; + + private HashMap localeFunctionNames = new HashMap(); + + private String excelDisplayLanguage = CountryCode.USA.getCode(); + + private String excelRegionalSettings = CountryCode.UK.getCode(); + + private boolean drawingsDisabled; + + private boolean namesDisabled; + + private boolean formulaReferenceAdjustDisabled; + + private boolean gcDisabled; + + private boolean rationalizationDisabled; + + private boolean mergedCellCheckingDisabled; + + private boolean propertySetsDisabled; + + private boolean ignoreBlankCells; + + private Locale locale; + + private FunctionNames functionNames; + + private String encoding; + + private int characterSet; + + private static final int defaultInitialFileSize = 5242880; + + private static final int defaultArrayGrowSize = 1048576; + + public WorkbookSettings() { + try { + boolean suppressWarnings = Boolean.getBoolean("jxl.nowarnings"); + setSuppressWarnings(suppressWarnings); + this.drawingsDisabled = Boolean.getBoolean("jxl.nodrawings"); + this.namesDisabled = Boolean.getBoolean("jxl.nonames"); + this.gcDisabled = Boolean.getBoolean("jxl.nogc"); + this.rationalizationDisabled = Boolean.getBoolean("jxl.norat"); + this.mergedCellCheckingDisabled = Boolean.getBoolean("jxl.nomergedcellchecks"); + this.formulaReferenceAdjustDisabled = Boolean.getBoolean("jxl.noformulaadjust"); + this.propertySetsDisabled = Boolean.getBoolean("jxl.nopropertysets"); + this.ignoreBlankCells = Boolean.getBoolean("jxl.ignoreblanks"); + this.encoding = System.getProperty("file.encoding"); + } catch (SecurityException e) { + logger.warn("Error accessing system properties.", e); + } + try { + if (System.getProperty("jxl.lang") == null || System.getProperty("jxl.country") == null) { + this.locale = Locale.getDefault(); + } else { + this.locale = new Locale(System.getProperty("jxl.lang"), System.getProperty("jxl.country")); + } + if (System.getProperty("jxl.encoding") != null) + this.encoding = System.getProperty("jxl.encoding"); + } catch (SecurityException e) { + logger.warn("Error accessing system properties.", e); + this.locale = Locale.getDefault(); + } + } + + public void setArrayGrowSize(int sz) { + this.arrayGrowSize = sz; + } + + public int getArrayGrowSize() { + return this.arrayGrowSize; + } + + public void setInitialFileSize(int sz) { + this.initialFileSize = sz; + } + + public int getInitialFileSize() { + return this.initialFileSize; + } + + public boolean getDrawingsDisabled() { + return this.drawingsDisabled; + } + + public boolean getGCDisabled() { + return this.gcDisabled; + } + + public boolean getNamesDisabled() { + return this.namesDisabled; + } + + public void setNamesDisabled(boolean b) { + this.namesDisabled = b; + } + + public void setDrawingsDisabled(boolean b) { + this.drawingsDisabled = b; + } + + public void setRationalization(boolean r) { + this.rationalizationDisabled = !r; + } + + public boolean getRationalizationDisabled() { + return this.rationalizationDisabled; + } + + public boolean getMergedCellCheckingDisabled() { + return this.mergedCellCheckingDisabled; + } + + public void setMergedCellChecking(boolean b) { + this.mergedCellCheckingDisabled = !b; + } + + public void setPropertySets(boolean r) { + this.propertySetsDisabled = !r; + } + + public boolean getPropertySetsDisabled() { + return this.propertySetsDisabled; + } + + public void setSuppressWarnings(boolean w) { + logger.setSuppressWarnings(w); + } + + public boolean getFormulaAdjust() { + return !this.formulaReferenceAdjustDisabled; + } + + public void setFormulaAdjust(boolean b) { + this.formulaReferenceAdjustDisabled = !b; + } + + public void setLocale(Locale l) { + this.locale = l; + } + + public Locale getLocale() { + return this.locale; + } + + public String getEncoding() { + return this.encoding; + } + + public void setEncoding(String enc) { + this.encoding = enc; + } + + public FunctionNames getFunctionNames() { + if (this.functionNames == null) { + this.functionNames = (FunctionNames)this.localeFunctionNames.get(this.locale); + if (this.functionNames == null) { + this.functionNames = new FunctionNames(this.locale); + this.localeFunctionNames.put(this.locale, this.functionNames); + } + } + return this.functionNames; + } + + public int getCharacterSet() { + return this.characterSet; + } + + public void setCharacterSet(int cs) { + this.characterSet = cs; + } + + public void setGCDisabled(boolean disabled) { + this.gcDisabled = disabled; + } + + public void setIgnoreBlanks(boolean ignoreBlanks) { + this.ignoreBlankCells = ignoreBlanks; + } + + public boolean getIgnoreBlanks() { + return this.ignoreBlankCells; + } + + public String getExcelDisplayLanguage() { + return this.excelDisplayLanguage; + } + + public String getExcelRegionalSettings() { + return this.excelRegionalSettings; + } + + public void setExcelDisplayLanguage(String code) { + this.excelDisplayLanguage = code; + } + + public void setExcelRegionalSettings(String code) { + this.excelRegionalSettings = code; + } +} diff --git a/hrmsEjb/jxl/biff/BaseCellFeatures.java b/hrmsEjb/jxl/biff/BaseCellFeatures.java new file mode 100644 index 0000000..9068a6b --- /dev/null +++ b/hrmsEjb/jxl/biff/BaseCellFeatures.java @@ -0,0 +1,84 @@ +package jxl.biff; + +import common.Logger; +import jxl.biff.drawing.Comment; +import jxl.write.biff.CellValue; + +public class BaseCellFeatures { + public static Logger logger = Logger.getLogger(BaseCellFeatures.class); + + private String comment; + + private double commentWidth; + + private double commentHeight; + + private Comment commentDrawing; + + private CellValue writableCell; + + private static final double defaultCommentWidth = 3.0D; + + private static final double defaultCommentHeight = 4.0D; + + protected BaseCellFeatures() {} + + public BaseCellFeatures(BaseCellFeatures cf) { + this.comment = cf.comment; + this.commentWidth = cf.commentWidth; + this.commentHeight = cf.commentHeight; + } + + protected String getComment() { + return this.comment; + } + + public double getCommentWidth() { + return this.commentWidth; + } + + public double getCommentHeight() { + return this.commentHeight; + } + + public final void setWritableCell(CellValue wc) { + this.writableCell = wc; + } + + public void setReadComment(String s, double w, double h) { + this.comment = s; + this.commentWidth = w; + this.commentHeight = h; + } + + public void setComment(String s) { + setComment(s, 3.0D, 4.0D); + } + + public void setComment(String s, double width, double height) { + this.comment = s; + this.commentWidth = width; + this.commentHeight = height; + if (this.commentDrawing != null) { + this.commentDrawing.setCommentText(s); + this.commentDrawing.setWidth(width); + this.commentDrawing.setWidth(height); + } + } + + public void removeComment() { + this.comment = null; + if (this.commentDrawing != null) { + this.writableCell.removeComment(this.commentDrawing); + this.commentDrawing = null; + } + } + + public final void setCommentDrawing(Comment c) { + this.commentDrawing = c; + } + + public final Comment getCommentDrawing() { + return this.commentDrawing; + } +} diff --git a/hrmsEjb/jxl/biff/BaseCompoundFile.java b/hrmsEjb/jxl/biff/BaseCompoundFile.java new file mode 100644 index 0000000..d98198e --- /dev/null +++ b/hrmsEjb/jxl/biff/BaseCompoundFile.java @@ -0,0 +1,158 @@ +package jxl.biff; + +import common.Assert; +import common.Logger; + +public abstract class BaseCompoundFile { + private static Logger logger = Logger.getLogger(BaseCompoundFile.class); + + protected static final byte[] IDENTIFIER = new byte[] { -48, -49, 17, -32, -95, -79, 26, -31 }; + + protected static final int NUM_BIG_BLOCK_DEPOT_BLOCKS_POS = 44; + + protected static final int SMALL_BLOCK_DEPOT_BLOCK_POS = 60; + + protected static final int NUM_SMALL_BLOCK_DEPOT_BLOCKS_POS = 64; + + protected static final int ROOT_START_BLOCK_POS = 48; + + protected static final int BIG_BLOCK_SIZE = 512; + + protected static final int SMALL_BLOCK_SIZE = 64; + + protected static final int EXTENSION_BLOCK_POS = 68; + + protected static final int NUM_EXTENSION_BLOCK_POS = 72; + + protected static final int PROPERTY_STORAGE_BLOCK_SIZE = 128; + + protected static final int BIG_BLOCK_DEPOT_BLOCKS_POS = 76; + + protected static final int SMALL_BLOCK_THRESHOLD = 4096; + + private static final int SIZE_OF_NAME_POS = 64; + + private static final int TYPE_POS = 66; + + private static final int COLOUR_POS = 67; + + private static final int PREVIOUS_POS = 68; + + private static final int NEXT_POS = 72; + + private static final int CHILD_POS = 76; + + private static final int START_BLOCK_POS = 116; + + private static final int SIZE_POS = 120; + + public static final String ROOT_ENTRY_NAME = "Root Entry"; + + public static final String WORKBOOK_NAME = "Workbook"; + + public static final String SUMMARY_INFORMATION_NAME = "\005SummaryInformation"; + + public static final String DOCUMENT_SUMMARY_INFORMATION_NAME = "\005DocumentSummaryInformation"; + + public static final String COMP_OBJ_NAME = "\001CompObj"; + + public static final String[] STANDARD_PROPERTY_SETS = new String[] { "Root Entry", "Workbook", "\005SummaryInformation", "\005DocumentSummaryInformation" }; + + public static final int NONE_PS_TYPE = 0; + + public static final int DIRECTORY_PS_TYPE = 1; + + public static final int FILE_PS_TYPE = 2; + + public static final int ROOT_ENTRY_PS_TYPE = 5; + + public class PropertyStorage { + public String name; + + public int type; + + public int colour; + + public int startBlock; + + public int size; + + public int previous; + + public int next; + + public int child; + + public byte[] data; + + private final BaseCompoundFile this$0; + + public PropertyStorage(BaseCompoundFile this$0, byte[] d) { + this.this$0 = this$0; + this.data = d; + int nameSize = IntegerHelper.getInt(this.data[64], this.data[65]); + if (nameSize > 64) { + BaseCompoundFile.logger.warn("property set name exceeds max length - truncating"); + nameSize = 64; + } + this.type = this.data[66]; + this.colour = this.data[67]; + this.startBlock = IntegerHelper.getInt(this.data[116], this.data[117], this.data[118], this.data[119]); + this.size = IntegerHelper.getInt(this.data[120], this.data[121], this.data[122], this.data[123]); + this.previous = IntegerHelper.getInt(this.data[68], this.data[69], this.data[70], this.data[71]); + this.next = IntegerHelper.getInt(this.data[72], this.data[73], this.data[74], this.data[75]); + this.child = IntegerHelper.getInt(this.data[76], this.data[77], this.data[78], this.data[79]); + int chars = 0; + if (nameSize > 2) + chars = (nameSize - 1) / 2; + StringBuffer n = new StringBuffer(""); + for (int i = 0; i < chars; i++) + n.append((char)this.data[i * 2]); + this.name = n.toString(); + } + + public PropertyStorage(BaseCompoundFile this$0, String name) { + this.this$0 = this$0; + this.data = new byte[128]; + Assert.verify((name.length() < 32)); + IntegerHelper.getTwoBytes((name.length() + 1) * 2, this.data, 64); + for (int i = 0; i < name.length(); i++) + this.data[i * 2] = (byte)name.charAt(i); + } + + public void setType(int t) { + this.type = t; + this.data[66] = (byte)t; + } + + public void setStartBlock(int sb) { + this.startBlock = sb; + IntegerHelper.getFourBytes(sb, this.data, 116); + } + + public void setSize(int s) { + this.size = s; + IntegerHelper.getFourBytes(s, this.data, 120); + } + + public void setPrevious(int prev) { + this.previous = prev; + IntegerHelper.getFourBytes(prev, this.data, 68); + } + + public void setNext(int nxt) { + this.next = nxt; + IntegerHelper.getFourBytes(this.next, this.data, 72); + } + + public void setChild(int dir) { + this.child = dir; + IntegerHelper.getFourBytes(this.child, this.data, 76); + } + + public void setColour(int col) { + this.colour = (col == 0) ? 0 : 1; + this.data[67] = (byte)this.colour; + } + } +} diff --git a/hrmsEjb/jxl/biff/BuiltInFormat.java b/hrmsEjb/jxl/biff/BuiltInFormat.java new file mode 100644 index 0000000..b6f217a --- /dev/null +++ b/hrmsEjb/jxl/biff/BuiltInFormat.java @@ -0,0 +1,82 @@ +package jxl.biff; + +import jxl.format.Format; + +final class BuiltInFormat implements Format, DisplayFormat { + private String formatString; + + private int formatIndex; + + private BuiltInFormat(String s, int i) { + this.formatIndex = i; + this.formatString = s; + } + + public String getFormatString() { + return this.formatString; + } + + public int getFormatIndex() { + return this.formatIndex; + } + + public boolean isInitialized() { + return true; + } + + public void initialize(int pos) {} + + public boolean isBuiltIn() { + return true; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof BuiltInFormat)) + return false; + BuiltInFormat bif = (BuiltInFormat)o; + return (this.formatIndex == bif.formatIndex); + } + + public static BuiltInFormat[] builtIns = new BuiltInFormat[50]; + + static { + builtIns[0] = new BuiltInFormat("", 0); + builtIns[1] = new BuiltInFormat("0", 1); + builtIns[2] = new BuiltInFormat("0.00", 2); + builtIns[3] = new BuiltInFormat("#,##0", 3); + builtIns[4] = new BuiltInFormat("#,##0.00", 4); + builtIns[5] = new BuiltInFormat("($#,##0_);($#,##0)", 5); + builtIns[6] = new BuiltInFormat("($#,##0_);[Red]($#,##0)", 6); + builtIns[7] = new BuiltInFormat("($#,##0_);[Red]($#,##0)", 7); + builtIns[8] = new BuiltInFormat("($#,##0.00_);[Red]($#,##0.00)", 8); + builtIns[9] = new BuiltInFormat("0%", 9); + builtIns[10] = new BuiltInFormat("0.00%", 10); + builtIns[11] = new BuiltInFormat("0.00E+00", 11); + builtIns[12] = new BuiltInFormat("# ?/?", 12); + builtIns[13] = new BuiltInFormat("# ??/??", 13); + builtIns[14] = new BuiltInFormat("dd/mm/yyyy", 14); + builtIns[15] = new BuiltInFormat("d-mmm-yy", 15); + builtIns[16] = new BuiltInFormat("d-mmm", 16); + builtIns[17] = new BuiltInFormat("mmm-yy", 17); + builtIns[18] = new BuiltInFormat("h:mm AM/PM", 18); + builtIns[19] = new BuiltInFormat("h:mm:ss AM/PM", 19); + builtIns[20] = new BuiltInFormat("h:mm", 20); + builtIns[21] = new BuiltInFormat("h:mm:ss", 21); + builtIns[22] = new BuiltInFormat("m/d/yy h:mm", 22); + builtIns[37] = new BuiltInFormat("(#,##0_);(#,##0)", 37); + builtIns[38] = new BuiltInFormat("(#,##0_);[Red](#,##0)", 38); + builtIns[39] = new BuiltInFormat("(#,##0.00_);(#,##0.00)", 39); + builtIns[40] = new BuiltInFormat("(#,##0.00_);[Red](#,##0.00)", 40); + builtIns[41] = new BuiltInFormat("_(*#,##0_);_(*(#,##0);_(*\"-\"_);(@_)", 41); + builtIns[42] = new BuiltInFormat("_($*#,##0_);_($*(#,##0);_($*\"-\"_);(@_)", 42); + builtIns[43] = new BuiltInFormat("_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);(@_)", 43); + builtIns[44] = new BuiltInFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);(@_)", 44); + builtIns[45] = new BuiltInFormat("mm:ss", 45); + builtIns[46] = new BuiltInFormat("[h]mm:ss", 46); + builtIns[47] = new BuiltInFormat("mm:ss.0", 47); + builtIns[48] = new BuiltInFormat("##0.0E+0", 48); + builtIns[49] = new BuiltInFormat("@", 49); + } +} diff --git a/hrmsEjb/jxl/biff/BuiltInStyle.java b/hrmsEjb/jxl/biff/BuiltInStyle.java new file mode 100644 index 0000000..59cb1f6 --- /dev/null +++ b/hrmsEjb/jxl/biff/BuiltInStyle.java @@ -0,0 +1,22 @@ +package jxl.biff; + +class BuiltInStyle extends WritableRecordData { + private int xfIndex; + + private int styleNumber; + + public BuiltInStyle(int xfind, int sn) { + super(Type.STYLE); + this.xfIndex = xfind; + this.styleNumber = sn; + } + + public byte[] getData() { + byte[] data = new byte[4]; + IntegerHelper.getTwoBytes(this.xfIndex, data, 0); + data[1] = (byte)(data[1] | 0x80); + data[2] = (byte)this.styleNumber; + data[3] = -1; + return data; + } +} diff --git a/hrmsEjb/jxl/biff/ByteArray.java b/hrmsEjb/jxl/biff/ByteArray.java new file mode 100644 index 0000000..0a8bab7 --- /dev/null +++ b/hrmsEjb/jxl/biff/ByteArray.java @@ -0,0 +1,47 @@ +package jxl.biff; + +public class ByteArray { + private int growSize; + + private byte[] bytes; + + private int pos; + + private static final int defaultGrowSize = 1024; + + public ByteArray() { + this(1024); + } + + public ByteArray(int gs) { + this.growSize = gs; + this.bytes = new byte[1024]; + this.pos = 0; + } + + public void add(byte b) { + checkSize(1); + this.bytes[this.pos] = b; + this.pos++; + } + + public void add(byte[] b) { + checkSize(b.length); + System.arraycopy(b, 0, this.bytes, this.pos, b.length); + this.pos += b.length; + } + + public byte[] getBytes() { + byte[] returnArray = new byte[this.pos]; + System.arraycopy(this.bytes, 0, returnArray, 0, this.pos); + return returnArray; + } + + private void checkSize(int sz) { + while (this.pos + sz >= this.bytes.length) { + byte[] newArray = new byte[this.bytes.length + this.growSize]; + System.arraycopy(this.bytes, 0, newArray, 0, this.pos); + this.bytes = newArray; + } + } +} diff --git a/hrmsEjb/jxl/biff/ByteData.java b/hrmsEjb/jxl/biff/ByteData.java new file mode 100644 index 0000000..1a50c6d --- /dev/null +++ b/hrmsEjb/jxl/biff/ByteData.java @@ -0,0 +1,5 @@ +package jxl.biff; + +public interface ByteData { + byte[] getBytes(); +} diff --git a/hrmsEjb/jxl/biff/CellReferenceHelper.java b/hrmsEjb/jxl/biff/CellReferenceHelper.java new file mode 100644 index 0000000..537f2a9 --- /dev/null +++ b/hrmsEjb/jxl/biff/CellReferenceHelper.java @@ -0,0 +1,137 @@ +package jxl.biff; + +import common.Logger; +import jxl.biff.formula.ExternalSheet; + +public final class CellReferenceHelper { + private static Logger logger = Logger.getLogger(CellReferenceHelper.class); + + private static final char fixedInd = '$'; + + private static final char sheetInd = '!'; + + public static void getCellReference(int column, int row, StringBuffer buf) { + getColumnReference(column, buf); + buf.append(Integer.toString(row + 1)); + } + + public static void getCellReference(int column, boolean colabs, int row, boolean rowabs, StringBuffer buf) { + if (colabs) + buf.append('$'); + getColumnReference(column, buf); + if (rowabs) + buf.append('$'); + buf.append(Integer.toString(row + 1)); + } + + public static String getColumnReference(int column) { + StringBuffer buf = new StringBuffer(); + getColumnReference(column, buf); + return buf.toString(); + } + + public static void getColumnReference(int column, StringBuffer buf) { + int v = column / 26; + int r = column % 26; + StringBuffer tmp = new StringBuffer(); + while (v != 0) { + char c = (char)(65 + r); + tmp.append(c); + r = v % 26 - 1; + v /= 26; + } + char col = (char)(65 + r); + tmp.append(col); + for (int i = tmp.length() - 1; i >= 0; i--) + buf.append(tmp.charAt(i)); + } + + public static void getCellReference(int sheet, int column, int row, ExternalSheet workbook, StringBuffer buf) { + buf.append('\''); + String name = workbook.getExternalSheetName(sheet); + buf.append(StringHelper.replace(name, "'", "''")); + buf.append(name); + buf.append('\''); + buf.append('!'); + getCellReference(column, row, buf); + } + + public static void getCellReference(int sheet, int column, boolean colabs, int row, boolean rowabs, ExternalSheet workbook, StringBuffer buf) { + buf.append('\''); + String name = workbook.getExternalSheetName(sheet); + buf.append(StringHelper.replace(name, "'", "''")); + buf.append(name); + buf.append('\''); + buf.append('!'); + getCellReference(column, colabs, row, rowabs, buf); + } + + public static String getCellReference(int sheet, int column, int row, ExternalSheet workbook) { + StringBuffer sb = new StringBuffer(); + getCellReference(sheet, column, row, workbook, sb); + return sb.toString(); + } + + public static String getCellReference(int column, int row) { + StringBuffer buf = new StringBuffer(); + getCellReference(column, row, buf); + return buf.toString(); + } + + public static int getColumn(String s) { + int colnum = 0; + int numindex = getNumberIndex(s); + String s2 = s.toUpperCase(); + int startPos = s.lastIndexOf('!') + 1; + if (s.charAt(startPos) == '$') + startPos++; + int endPos = numindex; + if (s.charAt(numindex - 1) == '$') + endPos--; + for (int i = startPos; i < endPos; i++) { + if (i != startPos) + colnum = (colnum + 1) * 26; + colnum += s2.charAt(i) - 65; + } + return colnum; + } + + public static int getRow(String s) { + try { + return Integer.parseInt(s.substring(getNumberIndex(s))) - 1; + } catch (NumberFormatException e) { + logger.warn(e, e); + return 65535; + } + } + + private static int getNumberIndex(String s) { + boolean numberFound = false; + int pos = s.lastIndexOf('!') + 1; + char c = Character.MIN_VALUE; + while (!numberFound && pos < s.length()) { + c = s.charAt(pos); + if (c >= '0' && c <= '9') { + numberFound = true; + continue; + } + pos++; + } + return pos; + } + + public static boolean isColumnRelative(String s) { + return (s.charAt(0) != '$'); + } + + public static boolean isRowRelative(String s) { + return (s.charAt(getNumberIndex(s) - 1) != '$'); + } + + public static String getSheet(String ref) { + int sheetPos = ref.lastIndexOf('!'); + if (sheetPos == -1) + return ""; + return ref.substring(0, sheetPos); + } +} diff --git a/hrmsEjb/jxl/biff/ContinueRecord.java b/hrmsEjb/jxl/biff/ContinueRecord.java new file mode 100644 index 0000000..da76316 --- /dev/null +++ b/hrmsEjb/jxl/biff/ContinueRecord.java @@ -0,0 +1,21 @@ +package jxl.biff; + +import jxl.read.biff.Record; + +public class ContinueRecord extends WritableRecordData { + private byte[] data; + + public ContinueRecord(Record t) { + super(t); + this.data = t.getData(); + } + + public ContinueRecord(byte[] d) { + super(Type.CONTINUE); + this.data = d; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/biff/CountryCode.java b/hrmsEjb/jxl/biff/CountryCode.java new file mode 100644 index 0000000..a36164d --- /dev/null +++ b/hrmsEjb/jxl/biff/CountryCode.java @@ -0,0 +1,92 @@ +package jxl.biff; + +import common.Logger; + +public class CountryCode { + private static Logger logger = Logger.getLogger(CountryCode.class); + + private int value; + + private String code; + + private String description; + + private static CountryCode[] codes = new CountryCode[0]; + + private CountryCode(int v, String c, String d) { + this.value = v; + this.code = c; + this.description = d; + CountryCode[] newcodes = new CountryCode[codes.length + 1]; + System.arraycopy(codes, 0, newcodes, 0, codes.length); + newcodes[codes.length] = this; + codes = newcodes; + } + + private CountryCode(int v) { + this.value = v; + this.description = "Arbitrary"; + this.code = "??"; + } + + public int getValue() { + return this.value; + } + + public String getCode() { + return this.code; + } + + public static CountryCode getCountryCode(String s) { + if (s == null || s.length() != 2) { + logger.warn("Please specify two character ISO 3166 country code"); + return USA; + } + CountryCode code = UNKNOWN; + for (int i = 0; i < codes.length && code == UNKNOWN; i++) { + if ((codes[i]).code.equals(s)) + code = codes[i]; + } + return code; + } + + public static CountryCode createArbitraryCode(int i) { + return new CountryCode(i); + } + + public static final CountryCode USA = new CountryCode(1, "US", "USA"); + + public static final CountryCode CANADA = new CountryCode(2, "CA", "Canada"); + + public static final CountryCode GREECE = new CountryCode(30, "GR", "Greece"); + + public static final CountryCode NETHERLANDS = new CountryCode(31, "NE", "Netherlands"); + + public static final CountryCode BELGIUM = new CountryCode(32, "BE", "Belgium"); + + public static final CountryCode FRANCE = new CountryCode(33, "FR", "France"); + + public static final CountryCode SPAIN = new CountryCode(34, "ES", "Spain"); + + public static final CountryCode ITALY = new CountryCode(39, "IT", "Italy"); + + public static final CountryCode SWITZERLAND = new CountryCode(41, "CH", "Switzerland"); + + public static final CountryCode UK = new CountryCode(44, "UK", "United Kingdowm"); + + public static final CountryCode DENMARK = new CountryCode(45, "DK", "Denmark"); + + public static final CountryCode SWEDEN = new CountryCode(46, "SE", "Sweden"); + + public static final CountryCode NORWAY = new CountryCode(47, "NO", "Norway"); + + public static final CountryCode GERMANY = new CountryCode(49, "DE", "Germany"); + + public static final CountryCode PHILIPPINES = new CountryCode(63, "PH", "Philippines"); + + public static final CountryCode CHINA = new CountryCode(86, "CN", "China"); + + public static final CountryCode INDIA = new CountryCode(91, "IN", "India"); + + public static final CountryCode UNKNOWN = new CountryCode(65535, "??", "Unknown"); +} diff --git a/hrmsEjb/jxl/biff/DVParser.java b/hrmsEjb/jxl/biff/DVParser.java new file mode 100644 index 0000000..9e6f708 --- /dev/null +++ b/hrmsEjb/jxl/biff/DVParser.java @@ -0,0 +1,351 @@ +package jxl.biff; + +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +public class DVParser { + private static Logger logger = Logger.getLogger(DVParser.class); + + public static class DVType { + private int value; + + private static DVType[] types = new DVType[0]; + + DVType(int v) { + this.value = v; + DVType[] oldtypes = types; + types = new DVType[oldtypes.length + 1]; + System.arraycopy(oldtypes, 0, types, 0, oldtypes.length); + types[oldtypes.length] = this; + } + + static DVType getType(int v) { + DVType found = null; + for (int i = 0; i < types.length && found == null; i++) { + if ((types[i]).value == v) + found = types[i]; + } + return found; + } + + public int getValue() { + return this.value; + } + } + + public static class ErrorStyle { + private int value; + + private static ErrorStyle[] types = new ErrorStyle[0]; + + ErrorStyle(int v) { + this.value = v; + ErrorStyle[] oldtypes = types; + types = new ErrorStyle[oldtypes.length + 1]; + System.arraycopy(oldtypes, 0, types, 0, oldtypes.length); + types[oldtypes.length] = this; + } + + static ErrorStyle getErrorStyle(int v) { + ErrorStyle found = null; + for (int i = 0; i < types.length && found == null; i++) { + if ((types[i]).value == v) + found = types[i]; + } + return found; + } + + public int getValue() { + return this.value; + } + } + + public static class Condition { + private int value; + + private static Condition[] types = new Condition[0]; + + Condition(int v) { + this.value = v; + Condition[] oldtypes = types; + types = new Condition[oldtypes.length + 1]; + System.arraycopy(oldtypes, 0, types, 0, oldtypes.length); + types[oldtypes.length] = this; + } + + static Condition getCondition(int v) { + Condition found = null; + for (int i = 0; i < types.length && found == null; i++) { + if ((types[i]).value == v) + found = types[i]; + } + return found; + } + + public int getValue() { + return this.value; + } + } + + public static final DVType ANY = new DVType(0); + + public static final DVType INTEGER = new DVType(1); + + public static final DVType DECIMAL = new DVType(2); + + public static final DVType LIST = new DVType(3); + + public static final DVType DATE = new DVType(4); + + public static final DVType TIME = new DVType(5); + + public static final DVType TEXT_LENGTH = new DVType(6); + + public static final DVType FORMULA = new DVType(7); + + public static final ErrorStyle STOP = new ErrorStyle(0); + + public static final ErrorStyle WARNING = new ErrorStyle(1); + + public static final ErrorStyle INFO = new ErrorStyle(2); + + public static final Condition BETWEEN = new Condition(0); + + public static final Condition NOT_BETWEEN = new Condition(1); + + public static final Condition EQUAL = new Condition(2); + + public static final Condition NOT_EQUAL = new Condition(3); + + public static final Condition GREATER_THAN = new Condition(4); + + public static final Condition LESS_THAN = new Condition(5); + + public static final Condition GREATER_EQUAL = new Condition(6); + + public static final Condition LESS_EQUAL = new Condition(7); + + private static int STRING_LIST_GIVEN_MASK = 128; + + private static int EMPTY_CELLS_ALLOWED_MASK = 256; + + private static int SUPPRESS_ARROW_MASK = 512; + + private static int SHOW_PROMPT_MASK = 262144; + + private static int SHOW_ERROR_MASK = 524288; + + private DVType type; + + private ErrorStyle errorStyle; + + private Condition condition; + + private boolean stringListGiven; + + private boolean emptyCellsAllowed; + + private boolean suppressArrow; + + private boolean showPrompt; + + private boolean showError; + + private String promptTitle; + + private String errorTitle; + + private String promptText; + + private String errorText; + + private FormulaParser formula1; + + private FormulaParser formula2; + + private int column1; + + private int row1; + + private int column2; + + private int row2; + + public DVParser(byte[] data, ExternalSheet es, WorkbookMethods nt, WorkbookSettings ws) throws FormulaException { + int options = IntegerHelper.getInt(data[0], data[1], data[2], data[3]); + int typeVal = options & 0xF; + this.type = DVType.getType(typeVal); + int errorStyleVal = (options & 0x70) >> 4; + this.errorStyle = ErrorStyle.getErrorStyle(errorStyleVal); + int conditionVal = (options & 0xF00000) >> 20; + this.condition = Condition.getCondition(conditionVal); + this.stringListGiven = ((options & STRING_LIST_GIVEN_MASK) != 0); + this.emptyCellsAllowed = ((options & EMPTY_CELLS_ALLOWED_MASK) != 0); + this.suppressArrow = ((options & SUPPRESS_ARROW_MASK) != 0); + this.showPrompt = ((options & SHOW_PROMPT_MASK) != 0); + this.showError = ((options & SHOW_ERROR_MASK) != 0); + int pos = 4; + int length = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.promptTitle = StringHelper.getUnicodeString(data, length, pos + 2); + pos += length * 2 + 2; + length = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.errorTitle = StringHelper.getUnicodeString(data, length, pos + 2); + pos += length * 2 + 2; + length = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.promptText = StringHelper.getUnicodeString(data, length, pos + 2); + pos += length * 2 + 2; + length = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.errorText = StringHelper.getUnicodeString(data, length, pos + 2); + pos += length * 2 + 2; + int formulaLength = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 4; + if (formulaLength != 0) { + byte[] tokens = new byte[formulaLength]; + System.arraycopy(data, pos, tokens, 0, formulaLength); + this.formula1 = new FormulaParser(tokens, null, es, nt, ws); + this.formula1.parse(); + pos += formulaLength; + } + formulaLength = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 4; + if (formulaLength != 0) { + byte[] tokens = new byte[formulaLength]; + System.arraycopy(data, pos, tokens, 0, formulaLength); + this.formula2 = new FormulaParser(tokens, null, es, nt, ws); + this.formula2.parse(); + pos += formulaLength; + } + pos += 2; + this.row1 = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + this.row2 = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + this.column1 = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + this.column2 = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + } + + public byte[] getData() { + byte[] f1Bytes = (this.formula1 != null) ? this.formula1.getBytes() : new byte[0]; + byte[] f2Bytes = (this.formula2 != null) ? this.formula2.getBytes() : new byte[0]; + int dataLength = 4 + this.promptTitle.length() * 2 + 2 + this.errorTitle.length() * 2 + 2 + this.promptText.length() * 2 + 2 + this.errorText.length() * 2 + 2 + f1Bytes.length + 2 + f2Bytes.length + 2 + 4 + 10; + byte[] data = new byte[dataLength]; + int pos = 0; + int options = 0; + options |= this.type.getValue(); + options |= this.errorStyle.getValue() << 4; + options |= this.condition.getValue() << 20; + if (this.stringListGiven) + options |= STRING_LIST_GIVEN_MASK; + if (this.emptyCellsAllowed) + options |= EMPTY_CELLS_ALLOWED_MASK; + if (this.suppressArrow) + options |= SUPPRESS_ARROW_MASK; + if (this.showPrompt) + options |= SHOW_PROMPT_MASK; + if (this.showError) + options |= SHOW_ERROR_MASK; + IntegerHelper.getFourBytes(options, data, pos); + pos += 4; + IntegerHelper.getTwoBytes(this.promptTitle.length(), data, pos); + pos += 2; + StringHelper.getUnicodeBytes(this.promptTitle, data, pos); + pos += this.promptTitle.length() * 2; + IntegerHelper.getTwoBytes(this.errorTitle.length(), data, pos); + pos += 2; + StringHelper.getUnicodeBytes(this.errorTitle, data, pos); + pos += this.errorTitle.length() * 2; + IntegerHelper.getTwoBytes(this.promptText.length(), data, pos); + pos += 2; + StringHelper.getUnicodeBytes(this.promptText, data, pos); + pos += this.promptText.length() * 2; + IntegerHelper.getTwoBytes(this.errorText.length(), data, pos); + pos += 2; + StringHelper.getUnicodeBytes(this.errorText, data, pos); + pos += this.errorText.length() * 2; + IntegerHelper.getTwoBytes(f1Bytes.length, data, pos); + pos += 4; + System.arraycopy(f1Bytes, 0, data, pos, f1Bytes.length); + pos += f1Bytes.length; + IntegerHelper.getTwoBytes(f2Bytes.length, data, pos); + pos += 2; + System.arraycopy(f2Bytes, 0, data, pos, f2Bytes.length); + pos += f2Bytes.length; + pos += 2; + IntegerHelper.getTwoBytes(1, data, pos); + pos += 2; + IntegerHelper.getTwoBytes(this.row1, data, pos); + pos += 2; + IntegerHelper.getTwoBytes(this.row2, data, pos); + pos += 2; + IntegerHelper.getTwoBytes(this.column1, data, pos); + pos += 2; + IntegerHelper.getTwoBytes(this.column2, data, pos); + pos += 2; + return data; + } + + public void insertRow(int row) { + if (this.formula1 != null) + this.formula1.rowInserted(0, row, true); + if (this.formula2 != null) + this.formula2.rowInserted(0, row, true); + if (this.row1 >= row) + this.row1++; + if (this.row2 >= row) + this.row2++; + } + + public void insertColumn(int col) { + if (this.formula1 != null) + this.formula1.columnInserted(0, col, true); + if (this.formula2 != null) + this.formula2.columnInserted(0, col, true); + if (this.column1 >= col) + this.column1++; + if (this.column2 >= col) + this.column2++; + } + + public void removeRow(int row) { + if (this.formula1 != null) + this.formula1.rowRemoved(0, row, true); + if (this.formula2 != null) + this.formula2.rowRemoved(0, row, true); + if (this.row1 > row) + this.row1--; + if (this.row2 >= row) + this.row2--; + } + + public void removeColumn(int col) { + if (this.formula1 != null) + this.formula1.columnRemoved(0, col, true); + if (this.formula2 != null) + this.formula2.columnRemoved(0, col, true); + if (this.column1 > col) + this.column1--; + if (this.column2 >= col) + this.column2--; + } + + public int getFirstColumn() { + return this.column1; + } + + public int getLastColumn() { + return this.column2; + } + + public int getFirstRow() { + return this.row1; + } + + public int getLastRow() { + return this.row2; + } +} diff --git a/hrmsEjb/jxl/biff/DValParser.java b/hrmsEjb/jxl/biff/DValParser.java new file mode 100644 index 0000000..aef55f4 --- /dev/null +++ b/hrmsEjb/jxl/biff/DValParser.java @@ -0,0 +1,51 @@ +package jxl.biff; + +import common.Logger; + +public class DValParser { + private static Logger logger = Logger.getLogger(DValParser.class); + + private static int PROMPT_BOX_VISIBLE_MASK = 1; + + private static int PROMPT_BOX_AT_CELL_MASK = 2; + + private static int VALIDITY_DATA_CACHED_MASK = 4; + + private boolean promptBoxVisible; + + private boolean promptBoxAtCell; + + private boolean validityDataCached; + + private int numDVRecords; + + public DValParser(byte[] data) { + int options = IntegerHelper.getInt(data[0], data[1]); + this.promptBoxVisible = ((options & PROMPT_BOX_VISIBLE_MASK) != 0); + this.promptBoxAtCell = ((options & PROMPT_BOX_AT_CELL_MASK) != 0); + this.validityDataCached = ((options & VALIDITY_DATA_CACHED_MASK) != 0); + this.numDVRecords = IntegerHelper.getInt(data[14], data[15], data[16], data[17]); + } + + public byte[] getData() { + byte[] data = new byte[18]; + int options = 0; + if (this.promptBoxVisible) + options |= PROMPT_BOX_VISIBLE_MASK; + if (this.promptBoxAtCell) + options |= PROMPT_BOX_AT_CELL_MASK; + if (this.validityDataCached) + options |= VALIDITY_DATA_CACHED_MASK; + IntegerHelper.getFourBytes(-1, data, 10); + IntegerHelper.getFourBytes(this.numDVRecords, data, 14); + return data; + } + + public void dvRemoved() { + this.numDVRecords--; + } + + public int getNumberOfDVRecords() { + return this.numDVRecords; + } +} diff --git a/hrmsEjb/jxl/biff/DisplayFormat.java b/hrmsEjb/jxl/biff/DisplayFormat.java new file mode 100644 index 0000000..768385f --- /dev/null +++ b/hrmsEjb/jxl/biff/DisplayFormat.java @@ -0,0 +1,11 @@ +package jxl.biff; + +public interface DisplayFormat { + int getFormatIndex(); + + boolean isInitialized(); + + void initialize(int paramInt); + + boolean isBuiltIn(); +} diff --git a/hrmsEjb/jxl/biff/DoubleHelper.java b/hrmsEjb/jxl/biff/DoubleHelper.java new file mode 100644 index 0000000..9f47cdb --- /dev/null +++ b/hrmsEjb/jxl/biff/DoubleHelper.java @@ -0,0 +1,26 @@ +package jxl.biff; + +public class DoubleHelper { + public static double getIEEEDouble(byte[] data, int pos) { + int num1 = IntegerHelper.getInt(data[pos], data[pos + 1], data[pos + 2], data[pos + 3]); + int num2 = IntegerHelper.getInt(data[pos + 4], data[pos + 5], data[pos + 6], data[pos + 7]); + boolean negative = ((num2 & Integer.MIN_VALUE) != 0); + long val = (num2 & Integer.MAX_VALUE) * 4294967296L + ((num1 < 0) ? (4294967296L + num1) : num1); + double value = Double.longBitsToDouble(val); + if (negative) + value = -value; + return value; + } + + public static void getIEEEBytes(double d, byte[] target, int pos) { + long val = Double.doubleToLongBits(d); + target[pos] = (byte)(int)(val & 0xFFL); + target[pos + 1] = (byte)(int)((val & 0xFF00L) >> 8L); + target[pos + 2] = (byte)(int)((val & 0xFF0000L) >> 16L); + target[pos + 3] = (byte)(int)((val & 0xFFFFFFFFFF000000L) >> 24L); + target[pos + 4] = (byte)(int)((val & 0xFF00000000L) >> 32L); + target[pos + 5] = (byte)(int)((val & 0xFF0000000000L) >> 40L); + target[pos + 6] = (byte)(int)((val & 0xFF000000000000L) >> 48L); + target[pos + 7] = (byte)(int)((val & 0xFF00000000000000L) >> 56L); + } +} diff --git a/hrmsEjb/jxl/biff/EmptyCell.java b/hrmsEjb/jxl/biff/EmptyCell.java new file mode 100644 index 0000000..1a4ae69 --- /dev/null +++ b/hrmsEjb/jxl/biff/EmptyCell.java @@ -0,0 +1,75 @@ +package jxl.biff; + +import jxl.CellFeatures; +import jxl.CellFormat; +import jxl.CellType; +import jxl.format.Alignment; +import jxl.format.CellFormat; +import jxl.write.Border; +import jxl.write.BorderLineStyle; +import jxl.write.VerticalAlignment; +import jxl.write.WritableCell; +import jxl.write.WritableCellFeatures; + +public class EmptyCell implements WritableCell { + private int row; + + private int col; + + public EmptyCell(int c, int r) { + this.row = r; + this.col = c; + } + + public int getRow() { + return this.row; + } + + public int getColumn() { + return this.col; + } + + public CellType getType() { + return CellType.EMPTY; + } + + public String getContents() { + return ""; + } + + public CellFormat getCellFormat() { + return null; + } + + public void setHidden(boolean flag) {} + + public void setLocked(boolean flag) {} + + public void setAlignment(Alignment align) {} + + public void setVerticalAlignment(VerticalAlignment valign) {} + + public void setBorder(Border border, BorderLineStyle line) {} + + public void setCellFormat(CellFormat cf) {} + + public void setCellFormat(CellFormat cf) {} + + public boolean isHidden() { + return false; + } + + public WritableCell copyTo(int c, int r) { + return new EmptyCell(c, r); + } + + public CellFeatures getCellFeatures() { + return null; + } + + public WritableCellFeatures getWritableCellFeatures() { + return null; + } + + public void setCellFeatures(WritableCellFeatures wcf) {} +} diff --git a/hrmsEjb/jxl/biff/EncodedURLHelper.java b/hrmsEjb/jxl/biff/EncodedURLHelper.java new file mode 100644 index 0000000..a84297a --- /dev/null +++ b/hrmsEjb/jxl/biff/EncodedURLHelper.java @@ -0,0 +1,73 @@ +package jxl.biff; + +import common.Logger; +import jxl.WorkbookSettings; + +public class EncodedURLHelper { + private static Logger logger = Logger.getLogger(EncodedURLHelper.class); + + private static byte msDosDriveLetter = 1; + + private static byte sameDrive = 2; + + private static byte endOfSubdirectory = 3; + + private static byte parentDirectory = 4; + + private static byte unencodedUrl = 5; + + public static byte[] getEncodedURL(String s, WorkbookSettings ws) { + if (s.startsWith("http:")) + return getURL(s, ws); + return getFile(s, ws); + } + + private static byte[] getFile(String s, WorkbookSettings ws) { + ByteArray byteArray = new ByteArray(); + int pos = 0; + if (s.charAt(1) == ':') { + byteArray.add(msDosDriveLetter); + byteArray.add((byte)s.charAt(0)); + pos = 2; + } else if (s.charAt(pos) == '\\' || s.charAt(pos) == '/') { + byteArray.add(sameDrive); + } + while (s.charAt(pos) == '\\' || s.charAt(pos) == '/') + pos++; + while (pos < s.length()) { + int nextSepIndex1 = s.indexOf('/', pos); + int nextSepIndex2 = s.indexOf('\\', pos); + int nextSepIndex = 0; + String nextFileNameComponent = null; + if (nextSepIndex1 != -1 && nextSepIndex2 != -1) { + nextSepIndex = Math.min(nextSepIndex1, nextSepIndex2); + } else if (nextSepIndex1 == -1 || nextSepIndex2 == -1) { + nextSepIndex = Math.max(nextSepIndex1, nextSepIndex2); + } + if (nextSepIndex == -1) { + nextFileNameComponent = s.substring(pos); + pos = s.length(); + } else { + nextFileNameComponent = s.substring(pos, nextSepIndex); + pos = nextSepIndex + 1; + } + if (!nextFileNameComponent.equals(".")) + if (nextFileNameComponent.equals("..")) { + byteArray.add(parentDirectory); + } else { + byteArray.add(StringHelper.getBytes(nextFileNameComponent, ws)); + } + if (pos < s.length()) + byteArray.add(endOfSubdirectory); + } + return byteArray.getBytes(); + } + + private static byte[] getURL(String s, WorkbookSettings ws) { + ByteArray byteArray = new ByteArray(); + byteArray.add(unencodedUrl); + byteArray.add((byte)s.length()); + byteArray.add(StringHelper.getBytes(s, ws)); + return byteArray.getBytes(); + } +} diff --git a/hrmsEjb/jxl/biff/FontRecord.java b/hrmsEjb/jxl/biff/FontRecord.java new file mode 100644 index 0000000..a7a1275 --- /dev/null +++ b/hrmsEjb/jxl/biff/FontRecord.java @@ -0,0 +1,234 @@ +package jxl.biff; + +import common.Assert; +import common.Logger; +import jxl.WorkbookSettings; +import jxl.format.Colour; +import jxl.format.Font; +import jxl.format.ScriptStyle; +import jxl.format.UnderlineStyle; +import jxl.read.biff.Record; + +public class FontRecord extends WritableRecordData implements Font { + private static Logger logger = Logger.getLogger(FontRecord.class); + + private int pointHeight; + + private int colourIndex; + + private int boldWeight; + + private int scriptStyle; + + private int underlineStyle; + + private byte fontFamily; + + private byte characterSet; + + private boolean italic; + + private boolean struckout; + + private String name; + + private boolean initialized; + + private int fontIndex; + + private static class Biff7 { + private Biff7() {} + } + + public static final Biff7 biff7 = new Biff7(); + + private static final int EXCEL_UNITS_PER_POINT = 20; + + protected FontRecord(String fn, int ps, int bold, boolean it, int us, int ci, int ss) { + super(Type.FONT); + this.boldWeight = bold; + this.underlineStyle = us; + this.name = fn; + this.pointHeight = ps; + this.italic = it; + this.scriptStyle = ss; + this.colourIndex = ci; + this.initialized = false; + this.struckout = false; + } + + public FontRecord(Record t, WorkbookSettings ws) { + super(t); + byte[] data = getRecord().getData(); + this.pointHeight = IntegerHelper.getInt(data[0], data[1]) / 20; + this.colourIndex = IntegerHelper.getInt(data[4], data[5]); + this.boldWeight = IntegerHelper.getInt(data[6], data[7]); + this.scriptStyle = IntegerHelper.getInt(data[8], data[9]); + this.underlineStyle = data[10]; + this.fontFamily = data[11]; + this.characterSet = data[12]; + this.initialized = false; + if ((data[2] & 0x2) != 0) + this.italic = true; + if ((data[2] & 0x8) != 0) + this.struckout = true; + int numChars = data[14]; + if (data[15] == 0) { + this.name = StringHelper.getString(data, numChars, 16, ws); + } else if (data[15] == 1) { + this.name = StringHelper.getUnicodeString(data, numChars, 16); + } else { + this.name = StringHelper.getString(data, numChars, 15, ws); + } + } + + public FontRecord(Record t, WorkbookSettings ws, Biff7 dummy) { + super(t); + byte[] data = getRecord().getData(); + this.pointHeight = IntegerHelper.getInt(data[0], data[1]) / 20; + this.colourIndex = IntegerHelper.getInt(data[4], data[5]); + this.boldWeight = IntegerHelper.getInt(data[6], data[7]); + this.scriptStyle = IntegerHelper.getInt(data[8], data[9]); + this.underlineStyle = data[10]; + this.fontFamily = data[11]; + this.initialized = false; + if ((data[2] & 0x2) != 0) + this.italic = true; + if ((data[2] & 0x8) != 0) + this.struckout = true; + int numChars = data[14]; + this.name = StringHelper.getString(data, numChars, 15, ws); + } + + protected FontRecord(Font f) { + super(Type.FONT); + Assert.verify((f != null)); + this.pointHeight = f.getPointSize(); + this.colourIndex = f.getColour().getValue(); + this.boldWeight = f.getBoldWeight(); + this.scriptStyle = f.getScriptStyle().getValue(); + this.underlineStyle = f.getUnderlineStyle().getValue(); + this.italic = f.isItalic(); + this.name = f.getName(); + this.struckout = false; + this.initialized = false; + } + + public byte[] getData() { + byte[] data = new byte[16 + this.name.length() * 2]; + IntegerHelper.getTwoBytes(this.pointHeight * 20, data, 0); + if (this.italic) + data[2] = (byte)(data[2] | 0x2); + if (this.struckout) + data[2] = (byte)(data[2] | 0x8); + IntegerHelper.getTwoBytes(this.colourIndex, data, 4); + IntegerHelper.getTwoBytes(this.boldWeight, data, 6); + IntegerHelper.getTwoBytes(this.scriptStyle, data, 8); + data[10] = (byte)this.underlineStyle; + data[11] = this.fontFamily; + data[12] = this.characterSet; + data[13] = 0; + data[14] = (byte)this.name.length(); + data[15] = 1; + StringHelper.getUnicodeBytes(this.name, data, 16); + return data; + } + + public final boolean isInitialized() { + return this.initialized; + } + + public final void initialize(int pos) { + this.fontIndex = pos; + this.initialized = true; + } + + public final void uninitialize() { + this.initialized = false; + } + + public final int getFontIndex() { + return this.fontIndex; + } + + protected void setFontPointSize(int ps) { + Assert.verify(!this.initialized); + this.pointHeight = ps; + } + + public int getPointSize() { + return this.pointHeight; + } + + protected void setFontBoldStyle(int bs) { + Assert.verify(!this.initialized); + this.boldWeight = bs; + } + + public int getBoldWeight() { + return this.boldWeight; + } + + protected void setFontItalic(boolean i) { + Assert.verify(!this.initialized); + this.italic = i; + } + + public boolean isItalic() { + return this.italic; + } + + protected void setFontUnderlineStyle(int us) { + Assert.verify(!this.initialized); + this.underlineStyle = us; + } + + public UnderlineStyle getUnderlineStyle() { + return UnderlineStyle.getStyle(this.underlineStyle); + } + + protected void setFontColour(int c) { + Assert.verify(!this.initialized); + this.colourIndex = c; + } + + public Colour getColour() { + return Colour.getInternalColour(this.colourIndex); + } + + protected void setFontScriptStyle(int ss) { + Assert.verify(!this.initialized); + this.scriptStyle = ss; + } + + public ScriptStyle getScriptStyle() { + return ScriptStyle.getStyle(this.scriptStyle); + } + + public String getName() { + return this.name; + } + + public int hashCode() { + return this.name.hashCode(); + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof FontRecord)) + return false; + FontRecord font = (FontRecord)o; + if (this.pointHeight == font.pointHeight && this.colourIndex == font.colourIndex && this.boldWeight == font.boldWeight && this.scriptStyle == font.scriptStyle && this.underlineStyle == font.underlineStyle && this.italic == font.italic && this.struckout == font.struckout && this.fontFamily == font.fontFamily && this.characterSet == font.characterSet && this.name.equals(font.name)) + return true; + return false; + } + + public boolean isStruckout() { + return this.struckout; + } + + protected void setFontStruckout(boolean os) { + this.struckout = os; + } +} diff --git a/hrmsEjb/jxl/biff/Fonts.java b/hrmsEjb/jxl/biff/Fonts.java new file mode 100644 index 0000000..543dec5 --- /dev/null +++ b/hrmsEjb/jxl/biff/Fonts.java @@ -0,0 +1,79 @@ +package jxl.biff; + +import common.Assert; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import jxl.write.biff.File; + +public class Fonts { + private ArrayList fonts = new ArrayList(); + + private static final int numDefaultFonts = 4; + + public void addFont(FontRecord f) { + if (!f.isInitialized()) { + int pos = this.fonts.size(); + if (pos >= 4) + pos++; + f.initialize(pos); + this.fonts.add(f); + } + } + + public FontRecord getFont(int index) { + if (index > 4) + index--; + return this.fonts.get(index); + } + + public void write(File outputFile) throws IOException { + Iterator i = this.fonts.iterator(); + FontRecord font = null; + while (i.hasNext()) { + font = i.next(); + outputFile.write(font); + } + } + + IndexMapping rationalize() { + IndexMapping mapping = new IndexMapping(this.fonts.size() + 1); + ArrayList newfonts = new ArrayList(); + FontRecord fr = null; + int numremoved = 0; + for (int i = 0; i < 4; i++) { + fr = this.fonts.get(i); + newfonts.add(fr); + mapping.setMapping(fr.getFontIndex(), fr.getFontIndex()); + } + Iterator it = null; + FontRecord fr2 = null; + boolean duplicate = false; + for (int j = 4; j < this.fonts.size(); j++) { + fr = this.fonts.get(j); + duplicate = false; + it = newfonts.iterator(); + while (it.hasNext() && !duplicate) { + fr2 = it.next(); + if (fr.equals(fr2)) { + duplicate = true; + mapping.setMapping(fr.getFontIndex(), mapping.getNewIndex(fr2.getFontIndex())); + numremoved++; + } + } + if (!duplicate) { + newfonts.add(fr); + int newindex = fr.getFontIndex() - numremoved; + Assert.verify((newindex > 4)); + mapping.setMapping(fr.getFontIndex(), newindex); + } + } + it = newfonts.iterator(); + while (it.hasNext()) { + fr = it.next(); + fr.initialize(mapping.getNewIndex(fr.getFontIndex())); + } + this.fonts = newfonts; + return mapping; + } +} diff --git a/hrmsEjb/jxl/biff/FormatRecord.java b/hrmsEjb/jxl/biff/FormatRecord.java new file mode 100644 index 0000000..43dd373 --- /dev/null +++ b/hrmsEjb/jxl/biff/FormatRecord.java @@ -0,0 +1,309 @@ +package jxl.biff; + +import common.Logger; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.Format; +import java.text.NumberFormat; +import java.text.SimpleDateFormat; +import jxl.WorkbookSettings; +import jxl.format.Format; +import jxl.read.biff.Record; + +public class FormatRecord extends WritableRecordData implements DisplayFormat, Format { + public static Logger logger = Logger.getLogger(FormatRecord.class); + + private boolean initialized; + + private byte[] data; + + private int indexCode; + + private String formatString; + + private boolean date; + + private boolean number; + + private Format format; + + private WorkbookSettings settings; + + private static String[] dateStrings = new String[] { "dd", "mm", "yy", "hh", "ss", "m/", "/d" }; + + private static class BiffType { + private BiffType() {} + } + + public static final BiffType biff8 = new BiffType(); + + public static final BiffType biff7 = new BiffType(); + + FormatRecord(String fmt, int refno) { + super(Type.FORMAT); + this.formatString = fmt; + this.indexCode = refno; + this.initialized = true; + } + + protected FormatRecord() { + super(Type.FORMAT); + this.initialized = false; + } + + protected FormatRecord(FormatRecord fr) { + super(Type.FORMAT); + this.initialized = false; + this.formatString = fr.formatString; + this.date = fr.date; + this.number = fr.number; + } + + public FormatRecord(Record t, WorkbookSettings ws, BiffType biffType) { + super(t); + byte[] data = getRecord().getData(); + this.indexCode = IntegerHelper.getInt(data[0], data[1]); + this.initialized = true; + if (biffType == biff8) { + int numchars = IntegerHelper.getInt(data[2], data[3]); + if (data[4] == 0) { + this.formatString = StringHelper.getString(data, numchars, 5, ws); + } else { + this.formatString = StringHelper.getUnicodeString(data, numchars, 5); + } + } else { + int numchars = data[2]; + byte[] chars = new byte[numchars]; + System.arraycopy(data, 3, chars, 0, chars.length); + this.formatString = new String(chars); + } + this.date = false; + this.number = false; + for (int i = 0; i < dateStrings.length; i++) { + String dateString = dateStrings[i]; + if (this.formatString.indexOf(dateString) != -1 || this.formatString.indexOf(dateString.toUpperCase()) != -1) { + this.date = true; + break; + } + } + if (!this.date) + if (this.formatString.indexOf('#') != -1 || this.formatString.indexOf('0') != -1) + this.number = true; + } + + public byte[] getData() { + this.data = new byte[this.formatString.length() * 2 + 3 + 2]; + IntegerHelper.getTwoBytes(this.indexCode, this.data, 0); + IntegerHelper.getTwoBytes(this.formatString.length(), this.data, 2); + this.data[4] = 1; + StringHelper.getUnicodeBytes(this.formatString, this.data, 5); + return this.data; + } + + public int getFormatIndex() { + return this.indexCode; + } + + public boolean isInitialized() { + return this.initialized; + } + + public void initialize(int pos) { + this.indexCode = pos; + this.initialized = true; + } + + protected final String replace(String input, String search, String replace) { + String fmtstr = input; + int pos = fmtstr.indexOf(search); + while (pos != -1) { + StringBuffer tmp = new StringBuffer(fmtstr.substring(0, pos)); + tmp.append(replace); + tmp.append(fmtstr.substring(pos + search.length())); + fmtstr = tmp.toString(); + pos = fmtstr.indexOf(search); + } + return fmtstr; + } + + protected final void setFormatString(String s) { + this.formatString = s; + } + + public final boolean isDate() { + return this.date; + } + + public final boolean isNumber() { + return this.number; + } + + public final NumberFormat getNumberFormat() { + if (this.format != null && this.format instanceof NumberFormat) + return (NumberFormat)this.format; + try { + String fs = this.formatString; + fs = replace(fs, "E+", "E"); + fs = replace(fs, "_)", ""); + fs = replace(fs, "_", ""); + fs = replace(fs, "[Red]", ""); + fs = replace(fs, "\\", ""); + this.format = new DecimalFormat(fs); + } catch (IllegalArgumentException e) { + this.format = new DecimalFormat("#.###"); + } + return (NumberFormat)this.format; + } + + public final DateFormat getDateFormat() { + if (this.format != null && this.format instanceof DateFormat) + return (DateFormat)this.format; + String fmt = this.formatString; + int pos = fmt.indexOf("AM/PM"); + while (pos != -1) { + StringBuffer stringBuffer = new StringBuffer(fmt.substring(0, pos)); + stringBuffer.append('a'); + stringBuffer.append(fmt.substring(pos + 5)); + fmt = stringBuffer.toString(); + pos = fmt.indexOf("AM/PM"); + } + pos = fmt.indexOf("ss.0"); + while (pos != -1) { + StringBuffer stringBuffer = new StringBuffer(fmt.substring(0, pos)); + stringBuffer.append("ss.SSS"); + pos += 4; + while (pos < fmt.length() && fmt.charAt(pos) == '0') + pos++; + stringBuffer.append(fmt.substring(pos)); + fmt = stringBuffer.toString(); + pos = fmt.indexOf("ss.0"); + } + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < fmt.length(); i++) { + if (fmt.charAt(i) != '\\') + sb.append(fmt.charAt(i)); + } + fmt = sb.toString(); + if (fmt.charAt(0) == '[') { + int end = fmt.indexOf(']'); + if (end != -1) + fmt = fmt.substring(end + 1); + } + fmt = replace(fmt, ";@", ""); + char[] formatBytes = fmt.toCharArray(); + for (int j = 0; j < formatBytes.length; j++) { + if (formatBytes[j] == 'm') + if (j > 0 && (formatBytes[j - 1] == 'm' || formatBytes[j - 1] == 'M')) { + formatBytes[j] = formatBytes[j - 1]; + } else { + int minuteDist = Integer.MAX_VALUE; + int k; + for (k = j - 1; k > 0; k--) { + if (formatBytes[k] == 'h') { + minuteDist = j - k; + break; + } + } + for (k = j + 1; k < formatBytes.length; k++) { + if (formatBytes[k] == 'h') { + minuteDist = Math.min(minuteDist, k - j); + break; + } + } + for (k = j - 1; k > 0; k--) { + if (formatBytes[k] == 'H') { + minuteDist = j - k; + break; + } + } + for (k = j + 1; k < formatBytes.length; k++) { + if (formatBytes[k] == 'H') { + minuteDist = Math.min(minuteDist, k - j); + break; + } + } + for (k = j - 1; k > 0; k--) { + if (formatBytes[k] == 's') { + minuteDist = Math.min(minuteDist, j - k); + break; + } + } + for (k = j + 1; k < formatBytes.length; k++) { + if (formatBytes[k] == 's') { + minuteDist = Math.min(minuteDist, k - j); + break; + } + } + int monthDist = Integer.MAX_VALUE; + int m; + for (m = j - 1; m > 0; m--) { + if (formatBytes[m] == 'd') { + monthDist = j - m; + break; + } + } + for (m = j + 1; m < formatBytes.length; m++) { + if (formatBytes[m] == 'd') { + monthDist = Math.min(monthDist, m - j); + break; + } + } + for (m = j - 1; m > 0; m--) { + if (formatBytes[m] == 'y') { + monthDist = Math.min(monthDist, j - m); + break; + } + } + for (m = j + 1; m < formatBytes.length; m++) { + if (formatBytes[m] == 'y') { + monthDist = Math.min(monthDist, m - j); + break; + } + } + if (monthDist < minuteDist) { + formatBytes[j] = Character.toUpperCase(formatBytes[j]); + } else if (monthDist == minuteDist && monthDist != Integer.MAX_VALUE) { + char ind = formatBytes[j - monthDist]; + if (ind == 'y' || ind == 'd') + formatBytes[j] = Character.toUpperCase(formatBytes[j]); + } + } + } + try { + this.format = new SimpleDateFormat(new String(formatBytes)); + } catch (IllegalArgumentException e) { + this.format = new SimpleDateFormat("dd MM yyyy hh:mm:ss"); + } + return (DateFormat)this.format; + } + + public int getIndexCode() { + return this.indexCode; + } + + public String getFormatString() { + return this.formatString; + } + + public boolean isBuiltIn() { + return false; + } + + public int hashCode() { + return this.formatString.hashCode(); + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof FormatRecord)) + return false; + FormatRecord fr = (FormatRecord)o; + if (this.initialized && fr.initialized) { + if (this.date != fr.date || this.number != fr.number) + return false; + return this.formatString.equals(fr.formatString); + } + return this.formatString.equals(fr.formatString); + } +} diff --git a/hrmsEjb/jxl/biff/FormattingRecords.java b/hrmsEjb/jxl/biff/FormattingRecords.java new file mode 100644 index 0000000..a6dac5c --- /dev/null +++ b/hrmsEjb/jxl/biff/FormattingRecords.java @@ -0,0 +1,256 @@ +package jxl.biff; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import java.text.DateFormat; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import jxl.format.Colour; +import jxl.format.RGB; +import jxl.write.biff.File; + +public class FormattingRecords { + private static Logger logger = Logger.getLogger(FormattingRecords.class); + + private HashMap formats; + + private ArrayList formatsList; + + private ArrayList xfRecords; + + private int nextCustomIndexNumber; + + private Fonts fonts; + + private PaletteRecord palette; + + private static final int customFormatStartIndex = 164; + + private static final int maxFormatRecordsIndex = 441; + + private static final int minXFRecords = 21; + + public FormattingRecords(Fonts f) { + this.xfRecords = new ArrayList(10); + this.formats = new HashMap(10); + this.formatsList = new ArrayList(10); + this.fonts = f; + this.nextCustomIndexNumber = 164; + } + + public final void addStyle(XFRecord xf) throws NumFormatRecordsException { + if (!xf.isInitialized()) { + int pos = this.xfRecords.size(); + xf.initialize(pos, this, this.fonts); + this.xfRecords.add(xf); + } else if (xf.getXFIndex() >= this.xfRecords.size()) { + this.xfRecords.add(xf); + } + } + + public final void addFormat(DisplayFormat fr) throws NumFormatRecordsException { + if (fr.isInitialized() && fr.getFormatIndex() >= 441) { + logger.warn("Format index exceeds Excel maximum - assigning custom number"); + fr.initialize(this.nextCustomIndexNumber); + this.nextCustomIndexNumber++; + } + if (!fr.isInitialized()) { + fr.initialize(this.nextCustomIndexNumber); + this.nextCustomIndexNumber++; + } + if (this.nextCustomIndexNumber > 441) { + this.nextCustomIndexNumber = 441; + throw new NumFormatRecordsException(); + } + if (fr.getFormatIndex() >= this.nextCustomIndexNumber) + this.nextCustomIndexNumber = fr.getFormatIndex() + 1; + if (!fr.isBuiltIn()) { + this.formatsList.add(fr); + this.formats.put(new Integer(fr.getFormatIndex()), fr); + } + } + + public final boolean isDate(int pos) { + XFRecord xfr = this.xfRecords.get(pos); + if (xfr.isDate()) + return true; + FormatRecord fr = (FormatRecord)this.formats.get(new Integer(xfr.getFormatRecord())); + return (fr == null) ? false : fr.isDate(); + } + + public final DateFormat getDateFormat(int pos) { + XFRecord xfr = this.xfRecords.get(pos); + if (xfr.isDate()) + return xfr.getDateFormat(); + FormatRecord fr = (FormatRecord)this.formats.get(new Integer(xfr.getFormatRecord())); + if (fr == null) + return null; + return fr.isDate() ? fr.getDateFormat() : null; + } + + public final NumberFormat getNumberFormat(int pos) { + XFRecord xfr = this.xfRecords.get(pos); + if (xfr.isNumber()) + return xfr.getNumberFormat(); + FormatRecord fr = (FormatRecord)this.formats.get(new Integer(xfr.getFormatRecord())); + if (fr == null) + return null; + return fr.isNumber() ? fr.getNumberFormat() : null; + } + + FormatRecord getFormatRecord(int index) { + return (FormatRecord)this.formats.get(new Integer(index)); + } + + public void write(File outputFile) throws IOException { + Iterator i = this.formatsList.iterator(); + FormatRecord fr = null; + while (i.hasNext()) { + fr = i.next(); + outputFile.write(fr); + } + i = this.xfRecords.iterator(); + XFRecord xfr = null; + while (i.hasNext()) { + xfr = (XFRecord)i.next(); + outputFile.write(xfr); + } + BuiltInStyle style = new BuiltInStyle(16, 3); + outputFile.write(style); + style = new BuiltInStyle(17, 6); + outputFile.write(style); + style = new BuiltInStyle(18, 4); + outputFile.write(style); + style = new BuiltInStyle(19, 7); + outputFile.write(style); + style = new BuiltInStyle(0, 0); + outputFile.write(style); + style = new BuiltInStyle(20, 5); + outputFile.write(style); + } + + protected final Fonts getFonts() { + return this.fonts; + } + + public final XFRecord getXFRecord(int index) { + return this.xfRecords.get(index); + } + + protected final int getNumberOfFormatRecords() { + return this.formatsList.size(); + } + + public IndexMapping rationalizeFonts() { + return this.fonts.rationalize(); + } + + public IndexMapping rationalize(IndexMapping fontMapping, IndexMapping formatMapping) { + XFRecord xfr = null; + for (Iterator it = this.xfRecords.iterator(); it.hasNext(); ) { + xfr = it.next(); + if (xfr.getFormatRecord() >= 164) + xfr.setFormatIndex(formatMapping.getNewIndex(xfr.getFormatRecord())); + xfr.setFontIndex(fontMapping.getNewIndex(xfr.getFontIndex())); + } + ArrayList newrecords = new ArrayList(21); + IndexMapping mapping = new IndexMapping(this.xfRecords.size()); + int numremoved = 0; + int numXFRecords = Math.min(21, this.xfRecords.size()); + int j; + for (j = 0; j < numXFRecords; j++) { + newrecords.add(this.xfRecords.get(j)); + mapping.setMapping(j, j); + } + if (numXFRecords < 21) { + logger.warn("There are less than the expected minimum number of XF records"); + return mapping; + } + for (j = 21; j < this.xfRecords.size(); j++) { + XFRecord xf = this.xfRecords.get(j); + boolean duplicate = false; + Iterator iterator = newrecords.iterator(); + while (iterator.hasNext() && !duplicate) { + XFRecord xf2 = iterator.next(); + if (xf2.equals(xf)) { + duplicate = true; + mapping.setMapping(j, mapping.getNewIndex(xf2.getXFIndex())); + numremoved++; + } + } + if (!duplicate) { + newrecords.add(xf); + mapping.setMapping(j, j - numremoved); + } + } + for (Iterator i = this.xfRecords.iterator(); i.hasNext(); ) { + XFRecord xf = i.next(); + xf.rationalize(mapping); + } + this.xfRecords = newrecords; + return mapping; + } + + public IndexMapping rationalizeDisplayFormats() { + ArrayList newformats = new ArrayList(); + int numremoved = 0; + IndexMapping mapping = new IndexMapping(this.nextCustomIndexNumber); + Iterator i = this.formatsList.iterator(); + DisplayFormat df = null; + DisplayFormat df2 = null; + boolean duplicate = false; + while (i.hasNext()) { + df = i.next(); + Assert.verify(!df.isBuiltIn()); + Iterator i2 = newformats.iterator(); + duplicate = false; + while (i2.hasNext() && !duplicate) { + df2 = i2.next(); + if (df2.equals(df)) { + duplicate = true; + mapping.setMapping(df.getFormatIndex(), mapping.getNewIndex(df2.getFormatIndex())); + numremoved++; + } + } + if (!duplicate) { + newformats.add(df); + int indexnum = df.getFormatIndex() - numremoved; + if (indexnum > 441) { + logger.warn("Too many number formats - using default format."); + indexnum = 0; + } + mapping.setMapping(df.getFormatIndex(), df.getFormatIndex() - numremoved); + } + } + this.formatsList = newformats; + i = this.formatsList.iterator(); + while (i.hasNext()) { + df = i.next(); + df.initialize(mapping.getNewIndex(df.getFormatIndex())); + } + return mapping; + } + + public PaletteRecord getPalette() { + return this.palette; + } + + public void setPalette(PaletteRecord pr) { + this.palette = pr; + } + + public void setColourRGB(Colour c, int r, int g, int b) { + if (this.palette == null) + this.palette = new PaletteRecord(); + this.palette.setColourRGB(c, r, g, b); + } + + public RGB getColourRGB(Colour c) { + if (this.palette == null) + return c.getDefaultRGB(); + return this.palette.getColourRGB(c); + } +} diff --git a/hrmsEjb/jxl/biff/FormulaData.java b/hrmsEjb/jxl/biff/FormulaData.java new file mode 100644 index 0000000..749d3e4 --- /dev/null +++ b/hrmsEjb/jxl/biff/FormulaData.java @@ -0,0 +1,8 @@ +package jxl.biff; + +import jxl.Cell; +import jxl.biff.formula.FormulaException; + +public interface FormulaData extends Cell { + byte[] getFormulaData() throws FormulaException; +} diff --git a/hrmsEjb/jxl/biff/HeaderFooter.java b/hrmsEjb/jxl/biff/HeaderFooter.java new file mode 100644 index 0000000..4804c16 --- /dev/null +++ b/hrmsEjb/jxl/biff/HeaderFooter.java @@ -0,0 +1,270 @@ +package jxl.biff; + +import common.Logger; + +public abstract class HeaderFooter { + private static Logger logger = Logger.getLogger(HeaderFooter.class); + + private static final String BOLD_TOGGLE = "&B"; + + private static final String UNDERLINE_TOGGLE = "&U"; + + private static final String ITALICS_TOGGLE = "&I"; + + private static final String STRIKETHROUGH_TOGGLE = "&S"; + + private static final String DOUBLE_UNDERLINE_TOGGLE = "&E"; + + private static final String SUPERSCRIPT_TOGGLE = "&X"; + + private static final String SUBSCRIPT_TOGGLE = "&Y"; + + private static final String OUTLINE_TOGGLE = "&O"; + + private static final String SHADOW_TOGGLE = "&H"; + + private static final String LEFT_ALIGN = "&L"; + + private static final String CENTRE = "&C"; + + private static final String RIGHT_ALIGN = "&R"; + + private static final String PAGENUM = "&P"; + + private static final String TOTAL_PAGENUM = "&N"; + + private static final String DATE = "&D"; + + private static final String TIME = "&T"; + + private static final String WORKBOOK_NAME = "&F"; + + private static final String WORKSHEET_NAME = "&A"; + + private Contents left; + + private Contents right; + + private Contents centre; + + protected static class Contents { + private StringBuffer contents; + + protected Contents() { + this.contents = new StringBuffer(); + } + + protected Contents(String s) { + this.contents = new StringBuffer(s); + } + + protected Contents(Contents copy) { + this.contents = new StringBuffer(copy.getContents()); + } + + protected String getContents() { + return (this.contents != null) ? this.contents.toString() : ""; + } + + private void appendInternal(String txt) { + if (this.contents == null) + this.contents = new StringBuffer(); + this.contents.append(txt); + } + + private void appendInternal(char ch) { + if (this.contents == null) + this.contents = new StringBuffer(); + this.contents.append(ch); + } + + protected void append(String txt) { + appendInternal(txt); + } + + protected void toggleBold() { + appendInternal("&B"); + } + + protected void toggleUnderline() { + appendInternal("&U"); + } + + protected void toggleItalics() { + appendInternal("&I"); + } + + protected void toggleStrikethrough() { + appendInternal("&S"); + } + + protected void toggleDoubleUnderline() { + appendInternal("&E"); + } + + protected void toggleSuperScript() { + appendInternal("&X"); + } + + protected void toggleSubScript() { + appendInternal("&Y"); + } + + protected void toggleOutline() { + appendInternal("&O"); + } + + protected void toggleShadow() { + appendInternal("&H"); + } + + protected void setFontName(String fontName) { + appendInternal("&\""); + appendInternal(fontName); + appendInternal('"'); + } + + protected boolean setFontSize(int size) { + String fontSize; + if (size < 1 || size > 99) + return false; + if (size < 10) { + fontSize = "0" + size; + } else { + fontSize = Integer.toString(size); + } + appendInternal('&'); + appendInternal(fontSize); + return true; + } + + protected void appendPageNumber() { + appendInternal("&P"); + } + + protected void appendTotalPages() { + appendInternal("&N"); + } + + protected void appendDate() { + appendInternal("&D"); + } + + protected void appendTime() { + appendInternal("&T"); + } + + protected void appendWorkbookName() { + appendInternal("&F"); + } + + protected void appendWorkSheetName() { + appendInternal("&A"); + } + + protected void clear() { + this.contents = null; + } + + protected boolean empty() { + if (this.contents == null || this.contents.length() == 0) + return true; + return false; + } + } + + protected HeaderFooter() { + this.left = createContents(); + this.right = createContents(); + this.centre = createContents(); + } + + protected HeaderFooter(HeaderFooter hf) { + this.left = createContents(hf.left); + this.right = createContents(hf.right); + this.centre = createContents(hf.centre); + } + + protected HeaderFooter(String s) { + if (s == null || s.length() == 0) { + this.left = createContents(); + this.right = createContents(); + this.centre = createContents(); + return; + } + int pos = 0; + int leftPos = s.indexOf("&L"); + int rightPos = s.indexOf("&R"); + int centrePos = s.indexOf("&C"); + if (pos == leftPos) + if (centrePos != -1) { + this.left = createContents(s.substring(pos + 2, centrePos)); + pos = centrePos; + } else if (rightPos != -1) { + this.left = createContents(s.substring(pos + 2, rightPos)); + pos = rightPos; + } else { + this.left = createContents(s.substring(pos + 2)); + pos = s.length(); + } + if (pos == centrePos || (leftPos == -1 && rightPos == -1 && centrePos == -1)) + if (rightPos != -1) { + this.centre = createContents(s.substring(pos + 2, rightPos)); + pos = rightPos; + } else { + this.centre = createContents(s.substring(pos + 2)); + pos = s.length(); + } + if (pos == rightPos) { + this.right = createContents(s.substring(pos + 2)); + pos = s.length(); + } + if (this.left == null) + this.left = createContents(); + if (this.centre == null) + this.centre = createContents(); + if (this.right == null) + this.right = createContents(); + } + + public String toString() { + StringBuffer hf = new StringBuffer(); + if (!this.left.empty()) { + hf.append("&L"); + hf.append(this.left.getContents()); + } + if (!this.centre.empty()) { + hf.append("&C"); + hf.append(this.centre.getContents()); + } + if (!this.right.empty()) { + hf.append("&R"); + hf.append(this.right.getContents()); + } + return hf.toString(); + } + + protected Contents getRightText() { + return this.right; + } + + protected Contents getCentreText() { + return this.centre; + } + + protected Contents getLeftText() { + return this.left; + } + + protected void clear() { + this.left.clear(); + this.right.clear(); + this.centre.clear(); + } + + protected abstract Contents createContents(); + + protected abstract Contents createContents(String paramString); + + protected abstract Contents createContents(Contents paramContents); +} diff --git a/hrmsEjb/jxl/biff/IndexMapping.java b/hrmsEjb/jxl/biff/IndexMapping.java new file mode 100644 index 0000000..f184e75 --- /dev/null +++ b/hrmsEjb/jxl/biff/IndexMapping.java @@ -0,0 +1,21 @@ +package jxl.biff; + +import common.Logger; + +public final class IndexMapping { + private static Logger logger = Logger.getLogger(IndexMapping.class); + + private int[] newIndices; + + IndexMapping(int size) { + this.newIndices = new int[size]; + } + + void setMapping(int oldIndex, int newIndex) { + this.newIndices[oldIndex] = newIndex; + } + + public int getNewIndex(int oldIndex) { + return this.newIndices[oldIndex]; + } +} diff --git a/hrmsEjb/jxl/biff/IntegerHelper.java b/hrmsEjb/jxl/biff/IntegerHelper.java new file mode 100644 index 0000000..fc9e627 --- /dev/null +++ b/hrmsEjb/jxl/biff/IntegerHelper.java @@ -0,0 +1,53 @@ +package jxl.biff; + +public final class IntegerHelper { + public static int getInt(byte b1, byte b2) { + int i1 = b1 & 0xFF; + int i2 = b2 & 0xFF; + int val = i2 << 8 | i1; + return val; + } + + public static short getShort(byte b1, byte b2) { + short i1 = (short)(b1 & 0xFF); + short i2 = (short)(b2 & 0xFF); + short val = (short)(i2 << 8 | i1); + return val; + } + + public static int getInt(byte b1, byte b2, byte b3, byte b4) { + int i1 = getInt(b1, b2); + int i2 = getInt(b3, b4); + int val = i2 << 16 | i1; + return val; + } + + public static byte[] getTwoBytes(int i) { + byte[] bytes = new byte[2]; + bytes[0] = (byte)(i & 0xFF); + bytes[1] = (byte)((i & 0xFF00) >> 8); + return bytes; + } + + public static byte[] getFourBytes(int i) { + byte[] bytes = new byte[4]; + int i1 = i & 0xFFFF; + int i2 = (i & 0xFFFF0000) >> 16; + getTwoBytes(i1, bytes, 0); + getTwoBytes(i2, bytes, 2); + return bytes; + } + + public static void getTwoBytes(int i, byte[] target, int pos) { + target[pos] = (byte)(i & 0xFF); + target[pos + 1] = (byte)((i & 0xFF00) >> 8); + } + + public static void getFourBytes(int i, byte[] target, int pos) { + byte[] bytes = getFourBytes(i); + target[pos] = bytes[0]; + target[pos + 1] = bytes[1]; + target[pos + 2] = bytes[2]; + target[pos + 3] = bytes[3]; + } +} diff --git a/hrmsEjb/jxl/biff/NumFormatRecordsException.java b/hrmsEjb/jxl/biff/NumFormatRecordsException.java new file mode 100644 index 0000000..c7cdc81 --- /dev/null +++ b/hrmsEjb/jxl/biff/NumFormatRecordsException.java @@ -0,0 +1,7 @@ +package jxl.biff; + +public class NumFormatRecordsException extends Exception { + public NumFormatRecordsException() { + super("Internal error: max number of FORMAT records exceeded"); + } +} diff --git a/hrmsEjb/jxl/biff/PaletteRecord.java b/hrmsEjb/jxl/biff/PaletteRecord.java new file mode 100644 index 0000000..c972c3c --- /dev/null +++ b/hrmsEjb/jxl/biff/PaletteRecord.java @@ -0,0 +1,96 @@ +package jxl.biff; + +import jxl.format.Colour; +import jxl.format.RGB; +import jxl.read.biff.Record; + +public class PaletteRecord extends WritableRecordData { + private RGB[] rgbColours = new RGB[56]; + + private boolean dirty; + + private boolean read; + + private boolean initialized; + + private static final int numColours = 56; + + public PaletteRecord(Record t) { + super(t); + this.initialized = false; + this.dirty = false; + this.read = true; + } + + public PaletteRecord() { + super(Type.PALETTE); + this.initialized = true; + this.dirty = false; + this.read = false; + Colour[] colours = Colour.getAllColours(); + for (int i = 0; i < colours.length; i++) { + Colour c = colours[i]; + setColourRGB(c, c.getDefaultRGB().getRed(), c.getDefaultRGB().getGreen(), c.getDefaultRGB().getBlue()); + } + } + + public byte[] getData() { + if (this.read && !this.dirty) + return getRecord().getData(); + byte[] data = new byte[226]; + int pos = 0; + IntegerHelper.getTwoBytes(56, data, pos); + for (int i = 0; i < 56; i++) { + pos = i * 4 + 2; + data[pos] = (byte)this.rgbColours[i].getRed(); + data[pos + 1] = (byte)this.rgbColours[i].getGreen(); + data[pos + 2] = (byte)this.rgbColours[i].getBlue(); + } + return data; + } + + private void initialize() { + byte[] data = getRecord().getData(); + int numrecords = IntegerHelper.getInt(data[0], data[1]); + for (int i = 0; i < numrecords; i++) { + int pos = i * 4 + 2; + int red = IntegerHelper.getInt(data[pos], (byte)0); + int green = IntegerHelper.getInt(data[pos + 1], (byte)0); + int blue = IntegerHelper.getInt(data[pos + 2], (byte)0); + this.rgbColours[i] = new RGB(red, green, blue); + } + this.initialized = true; + } + + public boolean isDirty() { + return this.dirty; + } + + public void setColourRGB(Colour c, int r, int g, int b) { + int pos = c.getValue() - 8; + if (pos < 0 || pos >= 56) + return; + if (!this.initialized) + initialize(); + r = setValueRange(r, 0, 255); + g = setValueRange(g, 0, 255); + b = setValueRange(b, 0, 255); + this.rgbColours[pos] = new RGB(r, g, b); + this.dirty = true; + } + + public RGB getColourRGB(Colour c) { + int pos = c.getValue() - 8; + if (pos < 0 || pos >= 56) + return c.getDefaultRGB(); + if (!this.initialized) + initialize(); + return this.rgbColours[pos]; + } + + private int setValueRange(int val, int min, int max) { + val = Math.max(val, min); + val = Math.min(val, max); + return val; + } +} diff --git a/hrmsEjb/jxl/biff/RangeImpl.java b/hrmsEjb/jxl/biff/RangeImpl.java new file mode 100644 index 0000000..0c84d0a --- /dev/null +++ b/hrmsEjb/jxl/biff/RangeImpl.java @@ -0,0 +1,56 @@ +package jxl.biff; + +import common.Logger; +import jxl.Cell; +import jxl.Range; +import jxl.Sheet; + +public class RangeImpl implements Range { + private static Logger logger = Logger.getLogger(RangeImpl.class); + + private WorkbookMethods workbook; + + private int sheet1; + + private int column1; + + private int row1; + + private int sheet2; + + private int column2; + + private int row2; + + public RangeImpl(WorkbookMethods w, int s1, int c1, int r1, int s2, int c2, int r2) { + this.workbook = w; + this.sheet1 = s1; + this.sheet2 = s2; + this.row1 = r1; + this.row2 = r2; + this.column1 = c1; + this.column2 = c2; + } + + public Cell getTopLeft() { + Sheet s = this.workbook.getReadSheet(this.sheet1); + if (this.column1 < s.getColumns() && this.row1 < s.getRows()) + return s.getCell(this.column1, this.row1); + return (Cell)new EmptyCell(this.column1, this.row1); + } + + public Cell getBottomRight() { + Sheet s = this.workbook.getReadSheet(this.sheet2); + if (this.column2 < s.getColumns() && this.row2 < s.getRows()) + return s.getCell(this.column2, this.row2); + return (Cell)new EmptyCell(this.column2, this.row2); + } + + public int getFirstSheetIndex() { + return this.sheet1; + } + + public int getLastSheetIndex() { + return this.sheet2; + } +} diff --git a/hrmsEjb/jxl/biff/RecordData.java b/hrmsEjb/jxl/biff/RecordData.java new file mode 100644 index 0000000..635f3c6 --- /dev/null +++ b/hrmsEjb/jxl/biff/RecordData.java @@ -0,0 +1,26 @@ +package jxl.biff; + +import jxl.read.biff.Record; + +public abstract class RecordData { + private Record record; + + private int code; + + protected RecordData(Record r) { + this.record = r; + this.code = r.getCode(); + } + + protected RecordData(Type t) { + this.code = t.value; + } + + protected Record getRecord() { + return this.record; + } + + protected final int getCode() { + return this.code; + } +} diff --git a/hrmsEjb/jxl/biff/SheetRangeImpl.java b/hrmsEjb/jxl/biff/SheetRangeImpl.java new file mode 100644 index 0000000..2aa2a00 --- /dev/null +++ b/hrmsEjb/jxl/biff/SheetRangeImpl.java @@ -0,0 +1,114 @@ +package jxl.biff; + +import jxl.Cell; +import jxl.Range; +import jxl.Sheet; + +public class SheetRangeImpl implements Range { + private Sheet sheet; + + private int column1; + + private int row1; + + private int column2; + + private int row2; + + public SheetRangeImpl(Sheet s, int c1, int r1, int c2, int r2) { + this.sheet = s; + this.row1 = r1; + this.row2 = r2; + this.column1 = c1; + this.column2 = c2; + } + + public SheetRangeImpl(SheetRangeImpl c, Sheet s) { + this.sheet = s; + this.row1 = c.row1; + this.row2 = c.row2; + this.column1 = c.column1; + this.column2 = c.column2; + } + + public Cell getTopLeft() { + return this.sheet.getCell(this.column1, this.row1); + } + + public Cell getBottomRight() { + return this.sheet.getCell(this.column2, this.row2); + } + + public int getFirstSheetIndex() { + return -1; + } + + public int getLastSheetIndex() { + return -1; + } + + public boolean intersects(SheetRangeImpl range) { + if (range == this) + return true; + if (this.row2 < range.row1 || this.row1 > range.row2 || this.column2 < range.column1 || this.column1 > range.column2) + return false; + return true; + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + CellReferenceHelper.getCellReference(this.column1, this.row1, sb); + sb.append('-'); + CellReferenceHelper.getCellReference(this.column2, this.row2, sb); + return sb.toString(); + } + + public void insertRow(int r) { + if (r > this.row2) + return; + if (r <= this.row1) + this.row1++; + if (r <= this.row2) + this.row2++; + } + + public void insertColumn(int c) { + if (c > this.column2) + return; + if (c <= this.column1) + this.column1++; + if (c <= this.column2) + this.column2++; + } + + public void removeRow(int r) { + if (r > this.row2) + return; + if (r < this.row1) + this.row1--; + if (r < this.row2) + this.row2--; + } + + public void removeColumn(int c) { + if (c > this.column2) + return; + if (c < this.column1) + this.column1--; + if (c < this.column2) + this.column2--; + } + + public int hashCode() { + return 0xFFFF ^ this.row1 ^ this.row2 ^ this.column1 ^ this.column2; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof SheetRangeImpl)) + return false; + SheetRangeImpl compare = (SheetRangeImpl)o; + return (this.column1 == compare.column1 && this.column2 == compare.column2 && this.row1 == compare.row1 && this.row2 == compare.row2); + } +} diff --git a/hrmsEjb/jxl/biff/StringHelper.java b/hrmsEjb/jxl/biff/StringHelper.java new file mode 100644 index 0000000..173bb87 --- /dev/null +++ b/hrmsEjb/jxl/biff/StringHelper.java @@ -0,0 +1,79 @@ +package jxl.biff; + +import common.Logger; +import java.io.UnsupportedEncodingException; +import jxl.WorkbookSettings; + +public final class StringHelper { + private static Logger logger = Logger.getLogger(StringHelper.class); + + public static byte[] getBytes(String s) { + return s.getBytes(); + } + + public static byte[] getBytes(String s, WorkbookSettings ws) { + try { + return s.getBytes(ws.getEncoding()); + } catch (UnsupportedEncodingException e) { + return null; + } + } + + public static byte[] getUnicodeBytes(String s) { + try { + byte[] b = s.getBytes("UnicodeLittle"); + if (b.length == s.length() * 2 + 2) { + byte[] b2 = new byte[b.length - 2]; + System.arraycopy(b, 2, b2, 0, b2.length); + b = b2; + } + return b; + } catch (UnsupportedEncodingException e) { + return null; + } + } + + public static void getBytes(String s, byte[] d, int pos) { + byte[] b = getBytes(s); + System.arraycopy(b, 0, d, pos, b.length); + } + + public static void getUnicodeBytes(String s, byte[] d, int pos) { + byte[] b = getUnicodeBytes(s); + System.arraycopy(b, 0, d, pos, b.length); + } + + public static String getString(byte[] d, int length, int pos, WorkbookSettings ws) { + try { + byte[] b = new byte[length]; + System.arraycopy(d, pos, b, 0, length); + return new String(b, ws.getEncoding()); + } catch (UnsupportedEncodingException e) { + logger.warn(e.toString()); + return ""; + } + } + + public static String getUnicodeString(byte[] d, int length, int pos) { + try { + byte[] b = new byte[length * 2]; + System.arraycopy(d, pos, b, 0, length * 2); + return new String(b, "UnicodeLittle"); + } catch (UnsupportedEncodingException e) { + return ""; + } + } + + public static final String replace(String input, String search, String replace) { + String fmtstr = input; + int pos = fmtstr.indexOf(search); + while (pos != -1) { + StringBuffer tmp = new StringBuffer(fmtstr.substring(0, pos)); + tmp.append(replace); + tmp.append(fmtstr.substring(pos + search.length())); + fmtstr = tmp.toString(); + pos = fmtstr.indexOf(search, pos + replace.length()); + } + return fmtstr; + } +} diff --git a/hrmsEjb/jxl/biff/Type.java b/hrmsEjb/jxl/biff/Type.java new file mode 100644 index 0000000..5dcd13d --- /dev/null +++ b/hrmsEjb/jxl/biff/Type.java @@ -0,0 +1,272 @@ +package jxl.biff; + +public final class Type { + public final int value; + + private static Type[] types = new Type[0]; + + private Type(int v) { + this.value = v; + Type[] newTypes = new Type[types.length + 1]; + System.arraycopy(types, 0, newTypes, 0, types.length); + newTypes[types.length] = this; + types = newTypes; + } + + private static class ArbitraryType { + private ArbitraryType() {} + } + + private static ArbitraryType arbitrary = new ArbitraryType(); + + private Type(int v, ArbitraryType arb) { + this.value = v; + } + + public int hashCode() { + return this.value; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof Type)) + return false; + Type t = (Type)o; + return (this.value == t.value); + } + + public static Type getType(int v) { + for (int i = 0; i < types.length; i++) { + if ((types[i]).value == v) + return types[i]; + } + return UNKNOWN; + } + + public static Type createType(int v) { + return new Type(v, arbitrary); + } + + public static final Type BOF = new Type(2057); + + public static final Type EOF = new Type(10); + + public static final Type BOUNDSHEET = new Type(133); + + public static final Type SUPBOOK = new Type(430); + + public static final Type EXTERNSHEET = new Type(23); + + public static final Type DIMENSION = new Type(512); + + public static final Type BLANK = new Type(513); + + public static final Type MULBLANK = new Type(190); + + public static final Type ROW = new Type(520); + + public static final Type NOTE = new Type(28); + + public static final Type TXO = new Type(438); + + public static final Type RK = new Type(126); + + public static final Type RK2 = new Type(638); + + public static final Type MULRK = new Type(189); + + public static final Type INDEX = new Type(523); + + public static final Type DBCELL = new Type(215); + + public static final Type SST = new Type(252); + + public static final Type COLINFO = new Type(125); + + public static final Type EXTSST = new Type(255); + + public static final Type CONTINUE = new Type(60); + + public static final Type LABEL = new Type(516); + + public static final Type RSTRING = new Type(214); + + public static final Type LABELSST = new Type(253); + + public static final Type NUMBER = new Type(515); + + public static final Type NAME = new Type(24); + + public static final Type TABID = new Type(317); + + public static final Type ARRAY = new Type(545); + + public static final Type STRING = new Type(519); + + public static final Type FORMULA = new Type(1030); + + public static final Type FORMULA2 = new Type(6); + + public static final Type SHAREDFORMULA = new Type(1212); + + public static final Type FORMAT = new Type(1054); + + public static final Type XF = new Type(224); + + public static final Type BOOLERR = new Type(517); + + public static final Type INTERFACEHDR = new Type(225); + + public static final Type SAVERECALC = new Type(95); + + public static final Type INTERFACEEND = new Type(226); + + public static final Type XCT = new Type(89); + + public static final Type CRN = new Type(90); + + public static final Type DEFCOLWIDTH = new Type(85); + + public static final Type DEFAULTROWHEIGHT = new Type(549); + + public static final Type WRITEACCESS = new Type(92); + + public static final Type WSBOOL = new Type(129); + + public static final Type CODEPAGE = new Type(66); + + public static final Type DSF = new Type(353); + + public static final Type FNGROUPCOUNT = new Type(156); + + public static final Type COUNTRY = new Type(140); + + public static final Type PROTECT = new Type(18); + + public static final Type SCENPROTECT = new Type(221); + + public static final Type OBJPROTECT = new Type(99); + + public static final Type PRINTHEADERS = new Type(42); + + public static final Type HEADER = new Type(20); + + public static final Type FOOTER = new Type(21); + + public static final Type HCENTER = new Type(131); + + public static final Type VCENTER = new Type(132); + + public static final Type FILEPASS = new Type(47); + + public static final Type SETUP = new Type(161); + + public static final Type PRINTGRIDLINES = new Type(43); + + public static final Type GRIDSET = new Type(130); + + public static final Type GUTS = new Type(128); + + public static final Type WINDOWPROTECT = new Type(25); + + public static final Type PROT4REV = new Type(431); + + public static final Type PROT4REVPASS = new Type(444); + + public static final Type PASSWORD = new Type(19); + + public static final Type REFRESHALL = new Type(439); + + public static final Type WINDOW1 = new Type(61); + + public static final Type WINDOW2 = new Type(574); + + public static final Type BACKUP = new Type(64); + + public static final Type HIDEOBJ = new Type(141); + + public static final Type NINETEENFOUR = new Type(34); + + public static final Type PRECISION = new Type(14); + + public static final Type BOOKBOOL = new Type(218); + + public static final Type FONT = new Type(49); + + public static final Type MMS = new Type(193); + + public static final Type CALCMODE = new Type(13); + + public static final Type CALCCOUNT = new Type(12); + + public static final Type REFMODE = new Type(15); + + public static final Type TEMPLATE = new Type(96); + + public static final Type OBJPROJ = new Type(211); + + public static final Type DELTA = new Type(16); + + public static final Type MERGEDCELLS = new Type(229); + + public static final Type ITERATION = new Type(17); + + public static final Type STYLE = new Type(659); + + public static final Type USESELFS = new Type(352); + + public static final Type HORIZONTALPAGEBREAKS = new Type(27); + + public static final Type SELECTION = new Type(29); + + public static final Type HLINK = new Type(440); + + public static final Type OBJ = new Type(93); + + public static final Type MSODRAWING = new Type(236); + + public static final Type MSODRAWINGGROUP = new Type(235); + + public static final Type LEFTMARGIN = new Type(38); + + public static final Type RIGHTMARGIN = new Type(39); + + public static final Type TOPMARGIN = new Type(40); + + public static final Type BOTTOMMARGIN = new Type(41); + + public static final Type EXTERNNAME = new Type(35); + + public static final Type PALETTE = new Type(146); + + public static final Type PLS = new Type(77); + + public static final Type SCL = new Type(160); + + public static final Type PANE = new Type(65); + + public static final Type WEIRD1 = new Type(239); + + public static final Type SORT = new Type(144); + + public static final Type DV = new Type(446); + + public static final Type DVAL = new Type(434); + + public static final Type BUTTONPROPERTYSET = new Type(442); + + public static final Type FONTX = new Type(4134); + + public static final Type IFMT = new Type(4174); + + public static final Type FBI = new Type(4192); + + public static final Type ALRUNS = new Type(4176); + + public static final Type UNKNOWN = new Type(65535); + + public static final Type U1C0 = new Type(448); + + public static final Type U1C1 = new Type(449); +} diff --git a/hrmsEjb/jxl/biff/WorkbookMethods.java b/hrmsEjb/jxl/biff/WorkbookMethods.java new file mode 100644 index 0000000..8be03e3 --- /dev/null +++ b/hrmsEjb/jxl/biff/WorkbookMethods.java @@ -0,0 +1,11 @@ +package jxl.biff; + +import jxl.Sheet; + +public interface WorkbookMethods { + Sheet getReadSheet(int paramInt); + + String getName(int paramInt); + + int getNameIndex(String paramString); +} diff --git a/hrmsEjb/jxl/biff/WorkspaceInformationRecord.java b/hrmsEjb/jxl/biff/WorkspaceInformationRecord.java new file mode 100644 index 0000000..7765c67 --- /dev/null +++ b/hrmsEjb/jxl/biff/WorkspaceInformationRecord.java @@ -0,0 +1,36 @@ +package jxl.biff; + +import jxl.read.biff.Record; + +public class WorkspaceInformationRecord extends WritableRecordData { + private int wsoptions; + + private static final int fitToPages = 256; + + private static final int defaultOptions = 1217; + + public WorkspaceInformationRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + this.wsoptions = IntegerHelper.getInt(data[0], data[1]); + } + + public WorkspaceInformationRecord() { + super(Type.WSBOOL); + this.wsoptions = 1217; + } + + public boolean getFitToPages() { + return ((this.wsoptions & 0x100) != 0); + } + + public void setFitToPages(boolean b) { + this.wsoptions = b ? (this.wsoptions | 0x100) : (this.wsoptions & 0xFFFFFEFF); + } + + public byte[] getData() { + byte[] data = new byte[2]; + IntegerHelper.getTwoBytes(this.wsoptions, data, 0); + return data; + } +} diff --git a/hrmsEjb/jxl/biff/WritableRecordData.java b/hrmsEjb/jxl/biff/WritableRecordData.java new file mode 100644 index 0000000..1dacb61 --- /dev/null +++ b/hrmsEjb/jxl/biff/WritableRecordData.java @@ -0,0 +1,52 @@ +package jxl.biff; + +import common.Logger; +import jxl.read.biff.Record; + +public abstract class WritableRecordData extends RecordData implements ByteData { + private static Logger logger = Logger.getLogger(WritableRecordData.class); + + protected static final int maxRecordLength = 8228; + + protected WritableRecordData(Type t) { + super(t); + } + + protected WritableRecordData(Record t) { + super(t); + } + + public final byte[] getBytes() { + byte[] data = getData(); + int dataLength = data.length; + if (data.length > 8224) { + dataLength = 8224; + data = handleContinueRecords(data); + } + byte[] bytes = new byte[data.length + 4]; + System.arraycopy(data, 0, bytes, 4, data.length); + IntegerHelper.getTwoBytes(getCode(), bytes, 0); + IntegerHelper.getTwoBytes(dataLength, bytes, 2); + return bytes; + } + + private byte[] handleContinueRecords(byte[] data) { + int continuedData = data.length - 8224; + int numContinueRecords = continuedData / 8224 + 1; + byte[] newdata = new byte[data.length + numContinueRecords * 4]; + System.arraycopy(data, 0, newdata, 0, 8224); + int oldarraypos = 8224; + int newarraypos = 8224; + for (int i = 0; i < numContinueRecords; i++) { + int length = Math.min(data.length - oldarraypos, 8224); + IntegerHelper.getTwoBytes(Type.CONTINUE.value, newdata, newarraypos); + IntegerHelper.getTwoBytes(length, newdata, newarraypos + 2); + System.arraycopy(data, oldarraypos, newdata, newarraypos + 4, length); + oldarraypos += length; + newarraypos += length + 4; + } + return newdata; + } + + protected abstract byte[] getData(); +} diff --git a/hrmsEjb/jxl/biff/XFRecord.java b/hrmsEjb/jxl/biff/XFRecord.java new file mode 100644 index 0000000..573b2b7 --- /dev/null +++ b/hrmsEjb/jxl/biff/XFRecord.java @@ -0,0 +1,732 @@ +package jxl.biff; + +import common.Assert; +import common.Logger; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.text.NumberFormat; +import java.text.SimpleDateFormat; +import jxl.WorkbookSettings; +import jxl.format.Alignment; +import jxl.format.Border; +import jxl.format.BorderLineStyle; +import jxl.format.CellFormat; +import jxl.format.Colour; +import jxl.format.Font; +import jxl.format.Format; +import jxl.format.Orientation; +import jxl.format.Pattern; +import jxl.format.VerticalAlignment; +import jxl.read.biff.Record; + +public class XFRecord extends WritableRecordData implements CellFormat { + private static Logger logger = Logger.getLogger(XFRecord.class); + + public int formatIndex; + + private int parentFormat; + + private XFType xfFormatType; + + private boolean date; + + private boolean number; + + private DateFormat dateFormat; + + private NumberFormat numberFormat; + + private byte usedAttributes; + + private int fontIndex; + + private boolean locked; + + private boolean hidden; + + private Alignment align; + + private VerticalAlignment valign; + + private Orientation orientation; + + private boolean wrap; + + private int indentation; + + private boolean shrinkToFit; + + private BorderLineStyle leftBorder; + + private BorderLineStyle rightBorder; + + private BorderLineStyle topBorder; + + private BorderLineStyle bottomBorder; + + private Colour leftBorderColour; + + private Colour rightBorderColour; + + private Colour topBorderColour; + + private Colour bottomBorderColour; + + private Colour backgroundColour; + + private Pattern pattern; + + private int options; + + private int xfIndex; + + private FontRecord font; + + private DisplayFormat format; + + private boolean initialized; + + private boolean read; + + private Format excelFormat; + + private boolean formatInfoInitialized; + + private boolean copied; + + private FormattingRecords formattingRecords; + + private static final int[] dateFormats = new int[] { + 14, 15, 16, 17, 18, 19, 20, 21, 22, 45, + 46, 47 }; + + private static final DateFormat[] javaDateFormats = new DateFormat[] { + new SimpleDateFormat("dd/MM/yyyy"), new SimpleDateFormat("d-MMM-yy"), new SimpleDateFormat("d-MMM"), new SimpleDateFormat("MMM-yy"), new SimpleDateFormat("h:mm a"), new SimpleDateFormat("h:mm:ss a"), new SimpleDateFormat("H:mm"), new SimpleDateFormat("H:mm:ss"), new SimpleDateFormat("M/d/yy H:mm"), new SimpleDateFormat("mm:ss"), + new SimpleDateFormat("H:mm:ss"), new SimpleDateFormat("mm:ss.S") }; + + private static int[] numberFormats = new int[] { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 37, 38, 39, 40, 41, 42, 43, 44, 48 }; + + private static NumberFormat[] javaNumberFormats = new NumberFormat[] { + new DecimalFormat("0"), new DecimalFormat("0.00"), new DecimalFormat("#,##0"), new DecimalFormat("#,##0.00"), new DecimalFormat("$#,##0;($#,##0)"), new DecimalFormat("$#,##0;($#,##0)"), new DecimalFormat("$#,##0.00;($#,##0.00)"), new DecimalFormat("$#,##0.00;($#,##0.00)"), new DecimalFormat("0%"), new DecimalFormat("0.00%"), + new DecimalFormat("0.00E00"), new DecimalFormat("#,##0;(#,##0)"), new DecimalFormat("#,##0;(#,##0)"), new DecimalFormat("#,##0.00;(#,##0.00)"), new DecimalFormat("#,##0.00;(#,##0.00)"), new DecimalFormat("#,##0;(#,##0)"), new DecimalFormat("$#,##0;($#,##0)"), new DecimalFormat("#,##0.00;(#,##0.00)"), new DecimalFormat("$#,##0.00;($#,##0.00)"), new DecimalFormat("##0.0E0") }; + + private static class BiffType { + private BiffType() {} + } + + public static final BiffType biff8 = new BiffType(); + + public static final BiffType biff7 = new BiffType(); + + private BiffType biffType; + + private static class XFType { + private XFType() {} + } + + protected static final XFType cell = new XFType(); + + protected static final XFType style = new XFType(); + + public XFRecord(Record t, WorkbookSettings ws, BiffType bt) { + super(t); + this.biffType = bt; + byte[] data = getRecord().getData(); + this.fontIndex = IntegerHelper.getInt(data[0], data[1]); + this.formatIndex = IntegerHelper.getInt(data[2], data[3]); + this.date = false; + this.number = false; + int i; + for (i = 0; i < dateFormats.length && !this.date; i++) { + if (this.formatIndex == dateFormats[i]) { + this.date = true; + this.dateFormat = javaDateFormats[i]; + } + } + for (i = 0; i < numberFormats.length && !this.number; i++) { + if (this.formatIndex == numberFormats[i]) { + this.number = true; + DecimalFormat df = (DecimalFormat)javaNumberFormats[i].clone(); + DecimalFormatSymbols symbols = new DecimalFormatSymbols(ws.getLocale()); + df.setDecimalFormatSymbols(symbols); + this.numberFormat = df; + } + } + int cellAttributes = IntegerHelper.getInt(data[4], data[5]); + this.parentFormat = (cellAttributes & 0xFFF0) >> 4; + int formatType = cellAttributes & 0x4; + this.xfFormatType = (formatType == 0) ? cell : style; + this.locked = ((cellAttributes & 0x1) != 0); + this.hidden = ((cellAttributes & 0x2) != 0); + if (this.xfFormatType == cell && (this.parentFormat & 0xFFF) == 4095) { + this.parentFormat = 0; + logger.warn("Invalid parent format found - ignoring"); + } + this.initialized = false; + this.read = true; + this.formatInfoInitialized = false; + this.copied = false; + } + + public XFRecord(FontRecord fnt, DisplayFormat form) { + super(Type.XF); + this.initialized = false; + this.locked = true; + this.hidden = false; + this.align = Alignment.GENERAL; + this.valign = VerticalAlignment.BOTTOM; + this.orientation = Orientation.HORIZONTAL; + this.wrap = false; + this.leftBorder = BorderLineStyle.NONE; + this.rightBorder = BorderLineStyle.NONE; + this.topBorder = BorderLineStyle.NONE; + this.bottomBorder = BorderLineStyle.NONE; + this.leftBorderColour = Colour.AUTOMATIC; + this.rightBorderColour = Colour.AUTOMATIC; + this.topBorderColour = Colour.AUTOMATIC; + this.bottomBorderColour = Colour.AUTOMATIC; + this.pattern = Pattern.NONE; + this.backgroundColour = Colour.DEFAULT_BACKGROUND; + this.indentation = 0; + this.shrinkToFit = false; + this.parentFormat = 0; + this.xfFormatType = null; + this.font = fnt; + this.format = form; + this.biffType = biff8; + this.read = false; + this.copied = false; + this.formatInfoInitialized = true; + Assert.verify((this.font != null)); + Assert.verify((this.format != null)); + } + + protected XFRecord(XFRecord fmt) { + super(Type.XF); + this.initialized = false; + this.locked = fmt.locked; + this.hidden = fmt.hidden; + this.align = fmt.align; + this.valign = fmt.valign; + this.orientation = fmt.orientation; + this.wrap = fmt.wrap; + this.leftBorder = fmt.leftBorder; + this.rightBorder = fmt.rightBorder; + this.topBorder = fmt.topBorder; + this.bottomBorder = fmt.bottomBorder; + this.leftBorderColour = fmt.leftBorderColour; + this.rightBorderColour = fmt.rightBorderColour; + this.topBorderColour = fmt.topBorderColour; + this.bottomBorderColour = fmt.bottomBorderColour; + this.pattern = fmt.pattern; + this.xfFormatType = fmt.xfFormatType; + this.indentation = fmt.indentation; + this.shrinkToFit = fmt.shrinkToFit; + this.parentFormat = fmt.parentFormat; + this.backgroundColour = fmt.backgroundColour; + this.font = fmt.font; + this.format = fmt.format; + this.fontIndex = fmt.fontIndex; + this.formatIndex = fmt.formatIndex; + this.formatInfoInitialized = fmt.formatInfoInitialized; + this.biffType = biff8; + this.read = false; + this.copied = true; + } + + protected XFRecord(CellFormat cellFormat) { + super(Type.XF); + Assert.verify((cellFormat != null)); + Assert.verify(cellFormat instanceof XFRecord); + XFRecord fmt = (XFRecord)cellFormat; + if (!fmt.formatInfoInitialized) + fmt.initializeFormatInformation(); + this.locked = fmt.locked; + this.hidden = fmt.hidden; + this.align = fmt.align; + this.valign = fmt.valign; + this.orientation = fmt.orientation; + this.wrap = fmt.wrap; + this.leftBorder = fmt.leftBorder; + this.rightBorder = fmt.rightBorder; + this.topBorder = fmt.topBorder; + this.bottomBorder = fmt.bottomBorder; + this.leftBorderColour = fmt.leftBorderColour; + this.rightBorderColour = fmt.rightBorderColour; + this.topBorderColour = fmt.topBorderColour; + this.bottomBorderColour = fmt.bottomBorderColour; + this.pattern = fmt.pattern; + this.xfFormatType = fmt.xfFormatType; + this.parentFormat = fmt.parentFormat; + this.indentation = fmt.indentation; + this.shrinkToFit = fmt.shrinkToFit; + this.backgroundColour = fmt.backgroundColour; + this.font = new FontRecord(fmt.getFont()); + if (fmt.getFormat() == null) { + if (fmt.format.isBuiltIn()) { + this.format = fmt.format; + } else { + this.format = new FormatRecord((FormatRecord)fmt.format); + } + } else if (fmt.getFormat() instanceof BuiltInFormat) { + this.excelFormat = fmt.excelFormat; + this.format = (BuiltInFormat)fmt.excelFormat; + } else { + Assert.verify(fmt.formatInfoInitialized); + Assert.verify(fmt.excelFormat instanceof FormatRecord); + FormatRecord fr = new FormatRecord((FormatRecord)fmt.excelFormat); + this.excelFormat = fr; + this.format = fr; + } + this.biffType = biff8; + this.formatInfoInitialized = true; + this.read = false; + this.copied = false; + this.initialized = false; + } + + public DateFormat getDateFormat() { + return this.dateFormat; + } + + public NumberFormat getNumberFormat() { + return this.numberFormat; + } + + public int getFormatRecord() { + return this.formatIndex; + } + + public boolean isDate() { + return this.date; + } + + public boolean isNumber() { + return this.number; + } + + public byte[] getData() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + byte[] data = new byte[20]; + IntegerHelper.getTwoBytes(this.fontIndex, data, 0); + IntegerHelper.getTwoBytes(this.formatIndex, data, 2); + int cellAttributes = 0; + if (getLocked()) + cellAttributes |= 0x1; + if (getHidden()) + cellAttributes |= 0x2; + if (this.xfFormatType == style) { + cellAttributes |= 0x4; + this.parentFormat = 65535; + } + cellAttributes |= this.parentFormat << 4; + IntegerHelper.getTwoBytes(cellAttributes, data, 4); + int alignMask = this.align.getValue(); + if (this.wrap) + alignMask |= 0x8; + alignMask |= this.valign.getValue() << 4; + alignMask |= this.orientation.getValue() << 8; + IntegerHelper.getTwoBytes(alignMask, data, 6); + data[9] = 16; + int borderMask = this.leftBorder.getValue(); + borderMask |= this.rightBorder.getValue() << 4; + borderMask |= this.topBorder.getValue() << 8; + borderMask |= this.bottomBorder.getValue() << 12; + IntegerHelper.getTwoBytes(borderMask, data, 10); + if (borderMask != 0) { + byte lc = (byte)this.leftBorderColour.getValue(); + byte rc = (byte)this.rightBorderColour.getValue(); + byte tc = (byte)this.topBorderColour.getValue(); + byte bc = (byte)this.bottomBorderColour.getValue(); + int sideColourMask = lc & Byte.MAX_VALUE | (rc & Byte.MAX_VALUE) << 7; + int topColourMask = tc & Byte.MAX_VALUE | (bc & Byte.MAX_VALUE) << 7; + IntegerHelper.getTwoBytes(sideColourMask, data, 12); + IntegerHelper.getTwoBytes(topColourMask, data, 14); + } + int patternVal = this.pattern.getValue() << 10; + IntegerHelper.getTwoBytes(patternVal, data, 16); + int colourPaletteMask = this.backgroundColour.getValue(); + colourPaletteMask |= 0x2000; + IntegerHelper.getTwoBytes(colourPaletteMask, data, 18); + this.options |= this.indentation & 0xF; + if (this.shrinkToFit) { + this.options |= 0x10; + } else { + this.options &= 0xEF; + } + data[8] = (byte)this.options; + if (this.biffType == biff8) + data[9] = this.usedAttributes; + return data; + } + + protected final boolean getLocked() { + return this.locked; + } + + protected final boolean getHidden() { + return this.hidden; + } + + protected final void setXFLocked(boolean l) { + this.locked = l; + } + + protected final void setXFCellOptions(int opt) { + this.options |= opt; + } + + protected void setXFAlignment(Alignment a) { + Assert.verify(!this.initialized); + this.align = a; + } + + protected void setXFIndentation(int i) { + Assert.verify(!this.initialized); + this.indentation = i; + } + + protected void setXFShrinkToFit(boolean s) { + Assert.verify(!this.initialized); + this.shrinkToFit = s; + } + + public Alignment getAlignment() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.align; + } + + public int getIndentation() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.indentation; + } + + public boolean isShrinkToFit() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.shrinkToFit; + } + + public boolean isLocked() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.locked; + } + + public VerticalAlignment getVerticalAlignment() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.valign; + } + + public Orientation getOrientation() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.orientation; + } + + protected void setXFBackground(Colour c, Pattern p) { + Assert.verify(!this.initialized); + this.backgroundColour = c; + this.pattern = p; + } + + public Colour getBackgroundColour() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.backgroundColour; + } + + public Pattern getPattern() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.pattern; + } + + protected void setXFVerticalAlignment(VerticalAlignment va) { + Assert.verify(!this.initialized); + this.valign = va; + } + + protected void setXFOrientation(Orientation o) { + Assert.verify(!this.initialized); + this.orientation = o; + } + + protected void setXFWrap(boolean w) { + Assert.verify(!this.initialized); + this.wrap = w; + } + + public boolean getWrap() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.wrap; + } + + protected void setXFBorder(Border b, BorderLineStyle ls, Colour c) { + Assert.verify(!this.initialized); + if (c == Colour.BLACK) + c = Colour.PALETTE_BLACK; + if (b == Border.LEFT) { + this.leftBorder = ls; + this.leftBorderColour = c; + } else if (b == Border.RIGHT) { + this.rightBorder = ls; + this.rightBorderColour = c; + } else if (b == Border.TOP) { + this.topBorder = ls; + this.topBorderColour = c; + } else if (b == Border.BOTTOM) { + this.bottomBorder = ls; + this.bottomBorderColour = c; + } + } + + public BorderLineStyle getBorder(Border border) { + return getBorderLine(border); + } + + public BorderLineStyle getBorderLine(Border border) { + if (border == Border.NONE || border == Border.ALL) + return BorderLineStyle.NONE; + if (!this.formatInfoInitialized) + initializeFormatInformation(); + if (border == Border.LEFT) + return this.leftBorder; + if (border == Border.RIGHT) + return this.rightBorder; + if (border == Border.TOP) + return this.topBorder; + if (border == Border.BOTTOM) + return this.bottomBorder; + return BorderLineStyle.NONE; + } + + public Colour getBorderColour(Border border) { + if (border == Border.NONE || border == Border.ALL) + return Colour.PALETTE_BLACK; + if (!this.formatInfoInitialized) + initializeFormatInformation(); + if (border == Border.LEFT) + return this.leftBorderColour; + if (border == Border.RIGHT) + return this.rightBorderColour; + if (border == Border.TOP) + return this.topBorderColour; + if (border == Border.BOTTOM) + return this.bottomBorderColour; + return Colour.BLACK; + } + + public final boolean hasBorders() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + if (this.leftBorder == BorderLineStyle.NONE && this.rightBorder == BorderLineStyle.NONE && this.topBorder == BorderLineStyle.NONE && this.bottomBorder == BorderLineStyle.NONE) + return false; + return true; + } + + public final void initialize(int pos, FormattingRecords fr, Fonts fonts) throws NumFormatRecordsException { + this.xfIndex = pos; + this.formattingRecords = fr; + if (this.read || this.copied) { + this.initialized = true; + return; + } + if (!this.font.isInitialized()) + fonts.addFont(this.font); + if (!this.format.isInitialized()) + fr.addFormat(this.format); + this.fontIndex = this.font.getFontIndex(); + this.formatIndex = this.format.getFormatIndex(); + this.initialized = true; + } + + public final void uninitialize() { + if (this.initialized == true) + logger.warn("A default format has been initialized"); + this.initialized = false; + } + + final void setXFIndex(int xfi) { + this.xfIndex = xfi; + } + + public final int getXFIndex() { + return this.xfIndex; + } + + public final boolean isInitialized() { + return this.initialized; + } + + public final boolean isRead() { + return this.read; + } + + public Format getFormat() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.excelFormat; + } + + public Font getFont() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + return this.font; + } + + private void initializeFormatInformation() { + if (this.formatIndex < BuiltInFormat.builtIns.length && BuiltInFormat.builtIns[this.formatIndex] != null) { + this.excelFormat = BuiltInFormat.builtIns[this.formatIndex]; + } else { + this.excelFormat = this.formattingRecords.getFormatRecord(this.formatIndex); + } + this.font = this.formattingRecords.getFonts().getFont(this.fontIndex); + byte[] data = getRecord().getData(); + int cellAttributes = IntegerHelper.getInt(data[4], data[5]); + this.parentFormat = (cellAttributes & 0xFFF0) >> 4; + int formatType = cellAttributes & 0x4; + this.xfFormatType = (formatType == 0) ? cell : style; + this.locked = ((cellAttributes & 0x1) != 0); + this.hidden = ((cellAttributes & 0x2) != 0); + if (this.xfFormatType == cell && (this.parentFormat & 0xFFF) == 4095) { + this.parentFormat = 0; + logger.warn("Invalid parent format found - ignoring"); + } + int alignMask = IntegerHelper.getInt(data[6], data[7]); + if ((alignMask & 0x8) != 0) + this.wrap = true; + this.align = Alignment.getAlignment(alignMask & 0x7); + this.valign = VerticalAlignment.getAlignment(alignMask >> 4 & 0x7); + this.orientation = Orientation.getOrientation(alignMask >> 8 & 0xFF); + int attr = IntegerHelper.getInt(data[8], data[9]); + this.indentation = attr & 0xF; + this.shrinkToFit = ((attr & 0x10) != 0); + if (this.biffType == biff8) + this.usedAttributes = data[9]; + int borderMask = IntegerHelper.getInt(data[10], data[11]); + this.leftBorder = BorderLineStyle.getStyle(borderMask & 0x7); + this.rightBorder = BorderLineStyle.getStyle(borderMask >> 4 & 0x7); + this.topBorder = BorderLineStyle.getStyle(borderMask >> 8 & 0x7); + this.bottomBorder = BorderLineStyle.getStyle(borderMask >> 12 & 0x7); + int borderColourMask = IntegerHelper.getInt(data[12], data[13]); + this.leftBorderColour = Colour.getInternalColour(borderColourMask & 0x7F); + this.rightBorderColour = Colour.getInternalColour((borderColourMask & 0x3F80) >> 7); + borderColourMask = IntegerHelper.getInt(data[14], data[15]); + this.topBorderColour = Colour.getInternalColour(borderColourMask & 0x7F); + this.bottomBorderColour = Colour.getInternalColour((borderColourMask & 0x3F80) >> 7); + if (this.biffType == biff8) { + int patternVal = IntegerHelper.getInt(data[16], data[17]); + patternVal &= 0xFC00; + patternVal >>= 10; + this.pattern = Pattern.getPattern(patternVal); + int colourPaletteMask = IntegerHelper.getInt(data[18], data[19]); + this.backgroundColour = Colour.getInternalColour(colourPaletteMask & 0x3F); + if (this.backgroundColour == Colour.UNKNOWN || this.backgroundColour == Colour.DEFAULT_BACKGROUND1) + this.backgroundColour = Colour.DEFAULT_BACKGROUND; + } else { + this.pattern = Pattern.NONE; + this.backgroundColour = Colour.DEFAULT_BACKGROUND; + } + this.formatInfoInitialized = true; + } + + public int hashCode() { + if (!this.formatInfoInitialized) + initializeFormatInformation(); + int hashValue = 17; + int oddPrimeNumber = 37; + hashValue = oddPrimeNumber * hashValue + (this.hidden ? 1 : 0); + hashValue = oddPrimeNumber * hashValue + (this.locked ? 1 : 0); + hashValue = oddPrimeNumber * hashValue + (this.wrap ? 1 : 0); + hashValue = oddPrimeNumber * hashValue + (this.shrinkToFit ? 1 : 0); + if (this.xfFormatType == cell) { + hashValue = oddPrimeNumber * hashValue + 1; + } else if (this.xfFormatType == style) { + hashValue = oddPrimeNumber * hashValue + 2; + } + hashValue = oddPrimeNumber * hashValue + this.align.getValue() + 1; + hashValue = oddPrimeNumber * hashValue + this.valign.getValue() + 1; + hashValue = oddPrimeNumber * hashValue + this.orientation.getValue(); + hashValue ^= this.leftBorder.getDescription().hashCode(); + hashValue ^= this.rightBorder.getDescription().hashCode(); + hashValue ^= this.topBorder.getDescription().hashCode(); + hashValue ^= this.bottomBorder.getDescription().hashCode(); + hashValue = oddPrimeNumber * hashValue + this.leftBorderColour.getValue(); + hashValue = oddPrimeNumber * hashValue + this.rightBorderColour.getValue(); + hashValue = oddPrimeNumber * hashValue + this.topBorderColour.getValue(); + hashValue = oddPrimeNumber * hashValue + this.bottomBorderColour.getValue(); + hashValue = oddPrimeNumber * hashValue + this.backgroundColour.getValue(); + hashValue = oddPrimeNumber * hashValue + this.pattern.getValue() + 1; + hashValue = oddPrimeNumber * hashValue + this.usedAttributes; + hashValue = oddPrimeNumber * hashValue + this.parentFormat; + hashValue = oddPrimeNumber * hashValue + this.fontIndex; + hashValue = oddPrimeNumber * hashValue + this.formatIndex; + hashValue = oddPrimeNumber * hashValue + this.indentation; + return hashValue; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof XFRecord)) + return false; + XFRecord xfr = (XFRecord)o; + if (!this.formatInfoInitialized) + initializeFormatInformation(); + if (!xfr.formatInfoInitialized) + xfr.initializeFormatInformation(); + if (this.xfFormatType != xfr.xfFormatType || this.parentFormat != xfr.parentFormat || this.locked != xfr.locked || this.hidden != xfr.hidden || this.usedAttributes != xfr.usedAttributes) + return false; + if (this.align != xfr.align || this.valign != xfr.valign || this.orientation != xfr.orientation || this.wrap != xfr.wrap || this.shrinkToFit != xfr.shrinkToFit || this.indentation != xfr.indentation) + return false; + if (this.leftBorder != xfr.leftBorder || this.rightBorder != xfr.rightBorder || this.topBorder != xfr.topBorder || this.bottomBorder != xfr.bottomBorder) + return false; + if (this.leftBorderColour != xfr.leftBorderColour || this.rightBorderColour != xfr.rightBorderColour || this.topBorderColour != xfr.topBorderColour || this.bottomBorderColour != xfr.bottomBorderColour) + return false; + if (this.backgroundColour != xfr.backgroundColour || this.pattern != xfr.pattern) + return false; + if (this.initialized && xfr.initialized) { + if (this.fontIndex != xfr.fontIndex || this.formatIndex != xfr.formatIndex) + return false; + } else if (!this.font.equals(xfr.font) || !this.format.equals(xfr.format)) { + return false; + } + return true; + } + + void setFormatIndex(int newindex) { + this.formatIndex = newindex; + } + + int getFontIndex() { + return this.fontIndex; + } + + void setFontIndex(int newindex) { + this.fontIndex = newindex; + } + + protected void setXFDetails(XFType t, int pf) { + this.xfFormatType = t; + this.parentFormat = pf; + } + + void rationalize(IndexMapping xfMapping) { + this.xfIndex = xfMapping.getNewIndex(this.xfIndex); + if (this.xfFormatType == cell) + this.parentFormat = xfMapping.getNewIndex(this.parentFormat); + } + + public void setFont(FontRecord f) { + this.font = f; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/BStoreContainer.java b/hrmsEjb/jxl/biff/drawing/BStoreContainer.java new file mode 100644 index 0000000..02a49aa --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/BStoreContainer.java @@ -0,0 +1,33 @@ +package jxl.biff.drawing; + +import common.Logger; + +class BStoreContainer extends EscherContainer { + private static Logger logger = Logger.getLogger(BStoreContainer.class); + + private int numBlips; + + public BStoreContainer(EscherRecordData erd) { + super(erd); + this.numBlips = getInstance(); + } + + public BStoreContainer() { + super(EscherRecordType.BSTORE_CONTAINER); + } + + void setNumBlips(int count) { + this.numBlips = count; + setInstance(this.numBlips); + } + + public int getNumBlips() { + return this.numBlips; + } + + public BlipStoreEntry getDrawing(int i) { + EscherRecord[] children = getChildren(); + BlipStoreEntry bse = (BlipStoreEntry)children[i]; + return bse; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/BlipStoreEntry.java b/hrmsEjb/jxl/biff/drawing/BlipStoreEntry.java new file mode 100644 index 0000000..90e633d --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/BlipStoreEntry.java @@ -0,0 +1,84 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import jxl.biff.IntegerHelper; + +class BlipStoreEntry extends EscherAtom { + private static Logger logger = Logger.getLogger(BlipStoreEntry.class); + + private BlipType type; + + private byte[] data; + + private int imageDataLength; + + private int referenceCount; + + private boolean write; + + private static final int IMAGE_DATA_OFFSET = 61; + + public BlipStoreEntry(EscherRecordData erd) { + super(erd); + this.type = BlipType.getType(getInstance()); + this.write = false; + byte[] bytes = getBytes(); + this.referenceCount = IntegerHelper.getInt(bytes[24], bytes[25], bytes[26], bytes[27]); + } + + public BlipStoreEntry(Drawing d) throws IOException { + super(EscherRecordType.BSE); + this.type = BlipType.PNG; + setVersion(2); + setInstance(this.type.getValue()); + byte[] imageData = d.getImageBytes(); + this.imageDataLength = imageData.length; + this.data = new byte[this.imageDataLength + 61]; + System.arraycopy(imageData, 0, this.data, 61, this.imageDataLength); + this.referenceCount = d.getReferenceCount(); + this.write = true; + } + + public BlipType getBlipType() { + return this.type; + } + + public byte[] getData() { + if (this.write) { + this.data[0] = (byte)this.type.getValue(); + this.data[1] = (byte)this.type.getValue(); + IntegerHelper.getFourBytes(this.imageDataLength + 8 + 17, this.data, 20); + IntegerHelper.getFourBytes(this.referenceCount, this.data, 24); + IntegerHelper.getFourBytes(0, this.data, 28); + this.data[32] = 0; + this.data[33] = 0; + this.data[34] = 126; + this.data[35] = 1; + this.data[36] = 0; + this.data[37] = 110; + IntegerHelper.getTwoBytes(61470, this.data, 38); + IntegerHelper.getFourBytes(this.imageDataLength + 17, this.data, 40); + } else { + this.data = getBytes(); + } + return setHeaderData(this.data); + } + + void dereference() { + this.referenceCount--; + Assert.verify((this.referenceCount >= 0)); + } + + int getReferenceCount() { + return this.referenceCount; + } + + byte[] getImageData() { + byte[] allData = getBytes(); + byte[] imageData = new byte[allData.length - 61]; + System.arraycopy(allData, 61, imageData, 0, imageData.length); + return imageData; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/BlipType.java b/hrmsEjb/jxl/biff/drawing/BlipType.java new file mode 100644 index 0000000..7ae5afa --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/BlipType.java @@ -0,0 +1,57 @@ +package jxl.biff.drawing; + +final class BlipType { + private int value; + + private String desc; + + private static BlipType[] types = new BlipType[0]; + + private BlipType(int val, String d) { + this.value = val; + this.desc = d; + BlipType[] newtypes = new BlipType[types.length + 1]; + System.arraycopy(types, 0, newtypes, 0, types.length); + newtypes[types.length] = this; + types = newtypes; + } + + public String getDescription() { + return this.desc; + } + + public int getValue() { + return this.value; + } + + public static BlipType getType(int val) { + BlipType type = UNKNOWN; + for (int i = 0; i < types.length; i++) { + if ((types[i]).value == val) { + type = types[i]; + break; + } + } + return type; + } + + public static final BlipType ERROR = new BlipType(0, "Error"); + + public static final BlipType UNKNOWN = new BlipType(1, "Unknown"); + + public static final BlipType EMF = new BlipType(2, "EMF"); + + public static final BlipType WMF = new BlipType(3, "WMF"); + + public static final BlipType PICT = new BlipType(4, "PICT"); + + public static final BlipType JPEG = new BlipType(5, "JPEG"); + + public static final BlipType PNG = new BlipType(6, "PNG"); + + public static final BlipType DIB = new BlipType(7, "DIB"); + + public static final BlipType FIRST_CLIENT = new BlipType(32, "FIRST"); + + public static final BlipType LAST_CLIENT = new BlipType(255, "LAST"); +} diff --git a/hrmsEjb/jxl/biff/drawing/Button.java b/hrmsEjb/jxl/biff/drawing/Button.java new file mode 100644 index 0000000..9db78bf --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Button.java @@ -0,0 +1,359 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.biff.ContinueRecord; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.write.biff.File; + +public class Button implements DrawingGroupObject { + private static Logger logger = Logger.getLogger(Button.class); + + private EscherContainer readSpContainer; + + private EscherContainer spContainer; + + private MsoDrawingRecord msoDrawingRecord; + + private ObjRecord objRecord; + + private boolean initialized = false; + + private int objectId; + + private int blipId; + + private int shapeId; + + private int column; + + private int row; + + private double width; + + private double height; + + private int referenceCount; + + private EscherContainer escherData; + + private Origin origin; + + private DrawingGroup drawingGroup; + + private DrawingData drawingData; + + private ShapeType type; + + private int drawingNumber; + + private MsoDrawingRecord mso; + + private TextObjectRecord txo; + + private ContinueRecord text; + + private ContinueRecord formatting; + + private String commentText; + + private WorkbookSettings workbookSettings; + + public Button(MsoDrawingRecord mso, ObjRecord obj, DrawingData dd, DrawingGroup dg, WorkbookSettings ws) { + this.drawingGroup = dg; + this.msoDrawingRecord = mso; + this.drawingData = dd; + this.objRecord = obj; + this.initialized = false; + this.workbookSettings = ws; + this.origin = Origin.READ; + this.drawingData.addData(this.msoDrawingRecord.getData()); + this.drawingNumber = this.drawingData.getNumDrawings() - 1; + this.drawingGroup.addDrawing(this); + Assert.verify((mso != null && obj != null)); + initialize(); + } + + public Button(DrawingGroupObject dgo, DrawingGroup dg, WorkbookSettings ws) { + Button d = (Button)dgo; + Assert.verify((d.origin == Origin.READ)); + this.msoDrawingRecord = d.msoDrawingRecord; + this.objRecord = d.objRecord; + this.initialized = false; + this.origin = Origin.READ; + this.drawingData = d.drawingData; + this.drawingGroup = dg; + this.drawingNumber = d.drawingNumber; + this.drawingGroup.addDrawing(this); + this.mso = d.mso; + this.txo = d.txo; + this.text = d.text; + this.formatting = d.formatting; + this.workbookSettings = ws; + } + + private void initialize() { + this.readSpContainer = this.drawingData.getSpContainer(this.drawingNumber); + Assert.verify((this.readSpContainer != null)); + EscherRecord[] children = this.readSpContainer.getChildren(); + Sp sp = (Sp)this.readSpContainer.getChildren()[0]; + this.objectId = this.objRecord.getObjectId(); + this.shapeId = sp.getShapeId(); + this.type = ShapeType.getType(sp.getShapeType()); + if (this.type == ShapeType.UNKNOWN) + logger.warn("Unknown shape type"); + ClientAnchor clientAnchor = null; + for (int i = 0; i < children.length && clientAnchor == null; i++) { + if (children[i].getType() == EscherRecordType.CLIENT_ANCHOR) + clientAnchor = (ClientAnchor)children[i]; + } + if (clientAnchor == null) { + logger.warn("Client anchor not found"); + } else { + this.column = (int)clientAnchor.getX1() - 1; + this.row = (int)clientAnchor.getY1() + 1; + } + this.initialized = true; + } + + public final void setObjectId(int objid, int bip, int sid) { + this.objectId = objid; + this.blipId = bip; + this.shapeId = sid; + if (this.origin == Origin.READ) + this.origin = Origin.READ_WRITE; + } + + public final int getObjectId() { + if (!this.initialized) + initialize(); + return this.objectId; + } + + public final int getShapeId() { + if (!this.initialized) + initialize(); + return this.shapeId; + } + + public final int getBlipId() { + if (!this.initialized) + initialize(); + return this.blipId; + } + + public MsoDrawingRecord getMsoDrawingRecord() { + return this.msoDrawingRecord; + } + + public EscherContainer getSpContainer() { + if (!this.initialized) + initialize(); + if (this.origin == Origin.READ) + return getReadSpContainer(); + Assert.verify(false); + return this.spContainer; + } + + public void setDrawingGroup(DrawingGroup dg) { + this.drawingGroup = dg; + } + + public DrawingGroup getDrawingGroup() { + return this.drawingGroup; + } + + public Origin getOrigin() { + return this.origin; + } + + public int getReferenceCount() { + return this.referenceCount; + } + + public void setReferenceCount(int r) { + this.referenceCount = r; + } + + public double getX() { + if (!this.initialized) + initialize(); + return this.column; + } + + public void setX(double x) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.column = (int)x; + } + + public double getY() { + if (!this.initialized) + initialize(); + return this.row; + } + + public void setY(double y) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.row = (int)y; + } + + public double getWidth() { + if (!this.initialized) + initialize(); + return this.width; + } + + public void setWidth(double w) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.width = w; + } + + public double getHeight() { + if (!this.initialized) + initialize(); + return this.height; + } + + public void setHeight(double h) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.height = h; + } + + private EscherContainer getReadSpContainer() { + if (!this.initialized) + initialize(); + return this.readSpContainer; + } + + public byte[] getImageData() { + Assert.verify((this.origin == Origin.READ || this.origin == Origin.READ_WRITE)); + if (!this.initialized) + initialize(); + return this.drawingGroup.getImageData(this.blipId); + } + + public ShapeType getType() { + return this.type; + } + + public void setTextObject(TextObjectRecord t) { + this.txo = t; + } + + public void setText(ContinueRecord t) { + this.text = t; + } + + public void setFormatting(ContinueRecord t) { + this.formatting = t; + } + + public byte[] getImageBytes() { + Assert.verify(false); + return null; + } + + public String getImageFilePath() { + Assert.verify(false); + return null; + } + + public void addMso(MsoDrawingRecord d) { + this.mso = d; + this.drawingData.addRawData(this.mso.getData()); + } + + public void writeAdditionalRecords(File outputFile) throws IOException { + if (this.origin == Origin.READ) { + outputFile.write((ByteData)this.objRecord); + if (this.mso != null) + outputFile.write((ByteData)this.mso); + outputFile.write((ByteData)this.txo); + outputFile.write((ByteData)this.text); + if (this.formatting != null) + outputFile.write((ByteData)this.formatting); + return; + } + Assert.verify(false); + ObjRecord objRecord = new ObjRecord(this.objectId, ObjRecord.EXCELNOTE); + outputFile.write((ByteData)objRecord); + ClientTextBox textBox = new ClientTextBox(); + MsoDrawingRecord msod = new MsoDrawingRecord(textBox.getData()); + outputFile.write((ByteData)msod); + TextObjectRecord txo = new TextObjectRecord(getText()); + outputFile.write((ByteData)txo); + byte[] textData = new byte[this.commentText.length() * 2 + 1]; + textData[0] = 1; + StringHelper.getUnicodeBytes(this.commentText, textData, 1); + ContinueRecord textContinue = new ContinueRecord(textData); + outputFile.write((ByteData)textContinue); + byte[] frData = new byte[16]; + IntegerHelper.getTwoBytes(0, frData, 0); + IntegerHelper.getTwoBytes(0, frData, 2); + IntegerHelper.getTwoBytes(this.commentText.length(), frData, 8); + IntegerHelper.getTwoBytes(0, frData, 10); + ContinueRecord frContinue = new ContinueRecord(frData); + outputFile.write((ByteData)frContinue); + } + + public void writeTailRecords(File outputFile) {} + + public int getRow() { + return 0; + } + + public int getColumn() { + return 0; + } + + public String getText() { + if (this.commentText == null) { + Assert.verify((this.text != null)); + byte[] td = this.text.getData(); + if (td[0] == 0) { + this.commentText = StringHelper.getString(td, td.length - 1, 1, this.workbookSettings); + } else { + this.commentText = StringHelper.getUnicodeString(td, (td.length - 1) / 2, 1); + } + } + return this.commentText; + } + + public int hashCode() { + return this.commentText.hashCode(); + } + + public void setButtonText(String t) { + this.commentText = t; + if (this.origin == Origin.READ) + this.origin = Origin.READ_WRITE; + } + + public boolean isFirst() { + return this.mso.isFirst(); + } + + public boolean isFormObject() { + return true; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Chart.java b/hrmsEjb/jxl/biff/drawing/Chart.java new file mode 100644 index 0000000..656bfd8 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Chart.java @@ -0,0 +1,111 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.biff.IndexMapping; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.read.biff.File; + +public class Chart implements ByteData, EscherStream { + private static final Logger logger = Logger.getLogger(Chart.class); + + private MsoDrawingRecord msoDrawingRecord; + + private ObjRecord objRecord; + + private int startpos; + + private int endpos; + + private File file; + + private DrawingData drawingData; + + private int drawingNumber; + + private byte[] data; + + private boolean initialized; + + private WorkbookSettings workbookSettings; + + public Chart(MsoDrawingRecord mso, ObjRecord obj, DrawingData dd, int sp, int ep, File f, WorkbookSettings ws) { + this.msoDrawingRecord = mso; + this.objRecord = obj; + this.startpos = sp; + this.endpos = ep; + this.file = f; + this.workbookSettings = ws; + if (this.msoDrawingRecord != null) { + this.drawingData = dd; + this.drawingData.addData(this.msoDrawingRecord.getRecord().getData()); + this.drawingNumber = this.drawingData.getNumDrawings() - 1; + } + this.initialized = false; + Assert.verify(((mso != null && obj != null) || (mso == null && obj == null))); + } + + public byte[] getBytes() { + if (!this.initialized) + initialize(); + return this.data; + } + + public byte[] getData() { + return this.msoDrawingRecord.getRecord().getData(); + } + + private void initialize() { + this.data = this.file.read(this.startpos, this.endpos - this.startpos); + this.initialized = true; + } + + public void rationalize(IndexMapping xfMapping, IndexMapping fontMapping, IndexMapping formatMapping) { + if (!this.initialized) + initialize(); + int pos = 0; + int code = 0; + int length = 0; + Type type = null; + while (pos < this.data.length) { + code = IntegerHelper.getInt(this.data[pos], this.data[pos + 1]); + length = IntegerHelper.getInt(this.data[pos + 2], this.data[pos + 3]); + type = Type.getType(code); + if (type == Type.FONTX) { + int fontind = IntegerHelper.getInt(this.data[pos + 4], this.data[pos + 5]); + IntegerHelper.getTwoBytes(fontMapping.getNewIndex(fontind), this.data, pos + 4); + } else if (type == Type.FBI) { + int fontind = IntegerHelper.getInt(this.data[pos + 12], this.data[pos + 13]); + IntegerHelper.getTwoBytes(fontMapping.getNewIndex(fontind), this.data, pos + 12); + } else if (type == Type.IFMT) { + int formind = IntegerHelper.getInt(this.data[pos + 4], this.data[pos + 5]); + IntegerHelper.getTwoBytes(formatMapping.getNewIndex(formind), this.data, pos + 4); + } else if (type == Type.ALRUNS) { + int numRuns = IntegerHelper.getInt(this.data[pos + 4], this.data[pos + 5]); + int fontPos = pos + 6; + for (int i = 0; i < numRuns; i++) { + int fontind = IntegerHelper.getInt(this.data[fontPos + 2], this.data[fontPos + 3]); + IntegerHelper.getTwoBytes(fontMapping.getNewIndex(fontind), this.data, fontPos + 2); + fontPos += 4; + } + } + pos += length + 4; + } + } + + EscherContainer getSpContainer() { + EscherContainer spContainer = this.drawingData.getSpContainer(this.drawingNumber); + return spContainer; + } + + MsoDrawingRecord getMsoDrawingRecord() { + return this.msoDrawingRecord; + } + + ObjRecord getObjRecord() { + return this.objRecord; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/ClientAnchor.java b/hrmsEjb/jxl/biff/drawing/ClientAnchor.java new file mode 100644 index 0000000..af783f5 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/ClientAnchor.java @@ -0,0 +1,77 @@ +package jxl.biff.drawing; + +import common.Logger; +import jxl.biff.IntegerHelper; + +class ClientAnchor extends EscherAtom { + private static final Logger logger = Logger.getLogger(ClientAnchor.class); + + private byte[] data; + + private double x1; + + private double y1; + + private double x2; + + private double y2; + + public ClientAnchor(EscherRecordData erd) { + super(erd); + byte[] bytes = getBytes(); + int x1Cell = IntegerHelper.getInt(bytes[2], bytes[3]); + int x1Fraction = IntegerHelper.getInt(bytes[4], bytes[5]); + this.x1 = x1Cell + x1Fraction / 1024.0D; + int y1Cell = IntegerHelper.getInt(bytes[6], bytes[7]); + int y1Fraction = IntegerHelper.getInt(bytes[8], bytes[9]); + this.y1 = y1Cell + y1Fraction / 256.0D; + int x2Cell = IntegerHelper.getInt(bytes[10], bytes[11]); + int x2Fraction = IntegerHelper.getInt(bytes[12], bytes[13]); + this.x2 = x2Cell + x2Fraction / 1024.0D; + int y2Cell = IntegerHelper.getInt(bytes[14], bytes[15]); + int y2Fraction = IntegerHelper.getInt(bytes[16], bytes[17]); + this.y2 = y2Cell + y2Fraction / 256.0D; + } + + public ClientAnchor(double x1, double y1, double x2, double y2) { + super(EscherRecordType.CLIENT_ANCHOR); + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + } + + byte[] getData() { + this.data = new byte[18]; + IntegerHelper.getTwoBytes(2, this.data, 0); + IntegerHelper.getTwoBytes((int)this.x1, this.data, 2); + int x1fraction = (int)((this.x1 - (int)this.x1) * 1024.0D); + IntegerHelper.getTwoBytes(x1fraction, this.data, 4); + IntegerHelper.getTwoBytes((int)this.y1, this.data, 6); + int y1fraction = (int)((this.y1 - (int)this.y1) * 256.0D); + IntegerHelper.getTwoBytes(y1fraction, this.data, 8); + IntegerHelper.getTwoBytes((int)this.x2, this.data, 10); + int x2fraction = (int)((this.x2 - (int)this.x2) * 1024.0D); + IntegerHelper.getTwoBytes(x2fraction, this.data, 12); + IntegerHelper.getTwoBytes((int)this.y2, this.data, 14); + int y2fraction = (int)((this.y2 - (int)this.y2) * 256.0D); + IntegerHelper.getTwoBytes(y2fraction, this.data, 16); + return setHeaderData(this.data); + } + + double getX1() { + return this.x1; + } + + double getY1() { + return this.y1; + } + + double getX2() { + return this.x2; + } + + double getY2() { + return this.y2; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/ClientData.java b/hrmsEjb/jxl/biff/drawing/ClientData.java new file mode 100644 index 0000000..31984c4 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/ClientData.java @@ -0,0 +1,22 @@ +package jxl.biff.drawing; + +import common.Logger; + +class ClientData extends EscherAtom { + private static Logger logger = Logger.getLogger(ClientData.class); + + private byte[] data; + + public ClientData(EscherRecordData erd) { + super(erd); + } + + public ClientData() { + super(EscherRecordType.CLIENT_DATA); + } + + byte[] getData() { + this.data = new byte[0]; + return setHeaderData(this.data); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/ClientTextBox.java b/hrmsEjb/jxl/biff/drawing/ClientTextBox.java new file mode 100644 index 0000000..8cfe435 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/ClientTextBox.java @@ -0,0 +1,22 @@ +package jxl.biff.drawing; + +import common.Logger; + +class ClientTextBox extends EscherAtom { + private static Logger logger = Logger.getLogger(ClientTextBox.class); + + private byte[] data; + + public ClientTextBox(EscherRecordData erd) { + super(erd); + } + + public ClientTextBox() { + super(EscherRecordType.CLIENT_TEXT_BOX); + } + + byte[] getData() { + this.data = new byte[0]; + return setHeaderData(this.data); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Comment.java b/hrmsEjb/jxl/biff/drawing/Comment.java new file mode 100644 index 0000000..4f4ec47 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Comment.java @@ -0,0 +1,405 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.biff.ContinueRecord; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.write.biff.File; + +public class Comment implements DrawingGroupObject { + private static Logger logger = Logger.getLogger(Comment.class); + + private EscherContainer readSpContainer; + + private EscherContainer spContainer; + + private MsoDrawingRecord msoDrawingRecord; + + private ObjRecord objRecord; + + private boolean initialized = false; + + private int objectId; + + private int blipId; + + private int shapeId; + + private int column; + + private int row; + + private double width; + + private double height; + + private int referenceCount; + + private EscherContainer escherData; + + private Origin origin; + + private DrawingGroup drawingGroup; + + private DrawingData drawingData; + + private ShapeType type; + + private int drawingNumber; + + private MsoDrawingRecord mso; + + private TextObjectRecord txo; + + private NoteRecord note; + + private ContinueRecord text; + + private ContinueRecord formatting; + + private String commentText; + + private WorkbookSettings workbookSettings; + + public Comment(MsoDrawingRecord mso, ObjRecord obj, DrawingData dd, DrawingGroup dg, WorkbookSettings ws) { + this.drawingGroup = dg; + this.msoDrawingRecord = mso; + this.drawingData = dd; + this.objRecord = obj; + this.initialized = false; + this.workbookSettings = ws; + this.origin = Origin.READ; + this.drawingData.addData(this.msoDrawingRecord.getData()); + this.drawingNumber = this.drawingData.getNumDrawings() - 1; + this.drawingGroup.addDrawing(this); + Assert.verify((mso != null && obj != null)); + if (!this.initialized) + initialize(); + } + + public Comment(DrawingGroupObject dgo, DrawingGroup dg, WorkbookSettings ws) { + Comment d = (Comment)dgo; + Assert.verify((d.origin == Origin.READ)); + this.msoDrawingRecord = d.msoDrawingRecord; + this.objRecord = d.objRecord; + this.initialized = false; + this.origin = Origin.READ; + this.drawingData = d.drawingData; + this.drawingGroup = dg; + this.drawingNumber = d.drawingNumber; + this.drawingGroup.addDrawing(this); + this.mso = d.mso; + this.txo = d.txo; + this.text = d.text; + this.formatting = d.formatting; + this.note = d.note; + this.width = d.width; + this.height = d.height; + this.workbookSettings = ws; + } + + public Comment(String text, int c, int r) { + this.initialized = true; + this.origin = Origin.WRITE; + this.column = c; + this.row = r; + this.referenceCount = 1; + this.type = ShapeType.TEXT_BOX; + this.commentText = text; + this.width = 3.0D; + this.height = 4.0D; + } + + private void initialize() { + this.readSpContainer = this.drawingData.getSpContainer(this.drawingNumber); + Assert.verify((this.readSpContainer != null)); + EscherRecord[] children = this.readSpContainer.getChildren(); + Sp sp = (Sp)this.readSpContainer.getChildren()[0]; + this.objectId = this.objRecord.getObjectId(); + this.shapeId = sp.getShapeId(); + this.type = ShapeType.getType(sp.getShapeType()); + if (this.type == ShapeType.UNKNOWN) + logger.warn("Unknown shape type"); + ClientAnchor clientAnchor = null; + for (int i = 0; i < children.length && clientAnchor == null; i++) { + if (children[i].getType() == EscherRecordType.CLIENT_ANCHOR) + clientAnchor = (ClientAnchor)children[i]; + } + if (clientAnchor == null) { + logger.warn("client anchor not found"); + } else { + this.column = (int)clientAnchor.getX1() - 1; + this.row = (int)clientAnchor.getY1() + 1; + this.width = clientAnchor.getX2() - clientAnchor.getX1(); + this.height = clientAnchor.getY2() - clientAnchor.getY1(); + } + this.initialized = true; + } + + public final void setObjectId(int objid, int bip, int sid) { + this.objectId = objid; + this.blipId = bip; + this.shapeId = sid; + if (this.origin == Origin.READ) + this.origin = Origin.READ_WRITE; + } + + public final int getObjectId() { + if (!this.initialized) + initialize(); + return this.objectId; + } + + public final int getShapeId() { + if (!this.initialized) + initialize(); + return this.shapeId; + } + + public final int getBlipId() { + if (!this.initialized) + initialize(); + return this.blipId; + } + + public MsoDrawingRecord getMsoDrawingRecord() { + return this.msoDrawingRecord; + } + + public EscherContainer getSpContainer() { + if (!this.initialized) + initialize(); + if (this.origin == Origin.READ) + return getReadSpContainer(); + if (this.spContainer == null) { + this.spContainer = new SpContainer(); + Sp sp = new Sp(this.type, this.shapeId, 2560); + this.spContainer.add(sp); + Opt opt = new Opt(); + opt.addProperty(344, false, false, 0); + opt.addProperty(385, false, false, 134217808); + opt.addProperty(387, false, false, 134217808); + opt.addProperty(959, false, false, 131074); + this.spContainer.add(opt); + ClientAnchor clientAnchor = new ClientAnchor(this.column + 1.3D, Math.max(0.0D, this.row - 0.6D), this.column + 1.3D + this.width, this.row + this.height); + this.spContainer.add(clientAnchor); + ClientData clientData = new ClientData(); + this.spContainer.add(clientData); + ClientTextBox clientTextBox = new ClientTextBox(); + this.spContainer.add(clientTextBox); + } + return this.spContainer; + } + + public void setDrawingGroup(DrawingGroup dg) { + this.drawingGroup = dg; + } + + public DrawingGroup getDrawingGroup() { + return this.drawingGroup; + } + + public Origin getOrigin() { + return this.origin; + } + + public int getReferenceCount() { + return this.referenceCount; + } + + public void setReferenceCount(int r) { + this.referenceCount = r; + } + + public double getX() { + if (!this.initialized) + initialize(); + return this.column; + } + + public void setX(double x) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.column = (int)x; + } + + public double getY() { + if (!this.initialized) + initialize(); + return this.row; + } + + public void setY(double y) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.row = (int)y; + } + + public double getWidth() { + if (!this.initialized) + initialize(); + return this.width; + } + + public void setWidth(double w) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.width = w; + } + + public double getHeight() { + if (!this.initialized) + initialize(); + return this.height; + } + + public void setHeight(double h) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.height = h; + } + + private EscherContainer getReadSpContainer() { + if (!this.initialized) + initialize(); + return this.readSpContainer; + } + + public byte[] getImageData() { + Assert.verify((this.origin == Origin.READ || this.origin == Origin.READ_WRITE)); + if (!this.initialized) + initialize(); + return this.drawingGroup.getImageData(this.blipId); + } + + public ShapeType getType() { + return this.type; + } + + public void setTextObject(TextObjectRecord t) { + this.txo = t; + } + + public void setNote(NoteRecord t) { + this.note = t; + } + + public void setText(ContinueRecord t) { + this.text = t; + } + + public void setFormatting(ContinueRecord t) { + this.formatting = t; + } + + public byte[] getImageBytes() { + Assert.verify(false); + return null; + } + + public String getImageFilePath() { + Assert.verify(false); + return null; + } + + public void addMso(MsoDrawingRecord d) { + this.mso = d; + this.drawingData.addRawData(this.mso.getData()); + } + + public void writeAdditionalRecords(File outputFile) throws IOException { + if (this.origin == Origin.READ) { + outputFile.write((ByteData)this.objRecord); + if (this.mso != null) + outputFile.write((ByteData)this.mso); + outputFile.write((ByteData)this.txo); + outputFile.write((ByteData)this.text); + if (this.formatting != null) + outputFile.write((ByteData)this.formatting); + return; + } + ObjRecord objRecord = new ObjRecord(this.objectId, ObjRecord.EXCELNOTE); + outputFile.write((ByteData)objRecord); + ClientTextBox textBox = new ClientTextBox(); + MsoDrawingRecord msod = new MsoDrawingRecord(textBox.getData()); + outputFile.write((ByteData)msod); + TextObjectRecord txo = new TextObjectRecord(getText()); + outputFile.write((ByteData)txo); + byte[] textData = new byte[this.commentText.length() * 2 + 1]; + textData[0] = 1; + StringHelper.getUnicodeBytes(this.commentText, textData, 1); + ContinueRecord textContinue = new ContinueRecord(textData); + outputFile.write((ByteData)textContinue); + byte[] frData = new byte[16]; + IntegerHelper.getTwoBytes(0, frData, 0); + IntegerHelper.getTwoBytes(0, frData, 2); + IntegerHelper.getTwoBytes(this.commentText.length(), frData, 8); + IntegerHelper.getTwoBytes(0, frData, 10); + ContinueRecord frContinue = new ContinueRecord(frData); + outputFile.write((ByteData)frContinue); + } + + public void writeTailRecords(File outputFile) throws IOException { + if (this.origin == Origin.READ) { + outputFile.write((ByteData)this.note); + return; + } + NoteRecord noteRecord = new NoteRecord(this.column, this.row, this.objectId); + outputFile.write((ByteData)noteRecord); + } + + public int getRow() { + return this.note.getRow(); + } + + public int getColumn() { + return this.note.getColumn(); + } + + public String getText() { + if (this.commentText == null) { + Assert.verify((this.text != null)); + byte[] td = this.text.getData(); + if (td[0] == 0) { + this.commentText = StringHelper.getString(td, td.length - 1, 1, this.workbookSettings); + } else { + this.commentText = StringHelper.getUnicodeString(td, (td.length - 1) / 2, 1); + } + } + return this.commentText; + } + + public int hashCode() { + return this.commentText.hashCode(); + } + + public void setCommentText(String t) { + this.commentText = t; + if (this.origin == Origin.READ) + this.origin = Origin.READ_WRITE; + } + + public boolean isFirst() { + return this.msoDrawingRecord.isFirst(); + } + + public boolean isFormObject() { + return true; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Dg.java b/hrmsEjb/jxl/biff/drawing/Dg.java new file mode 100644 index 0000000..18db3c0 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Dg.java @@ -0,0 +1,40 @@ +package jxl.biff.drawing; + +import jxl.biff.IntegerHelper; + +class Dg extends EscherAtom { + private byte[] data; + + private int drawingId; + + private int shapeCount; + + private int seed; + + public Dg(EscherRecordData erd) { + super(erd); + this.drawingId = getInstance(); + byte[] bytes = getBytes(); + this.shapeCount = IntegerHelper.getInt(bytes[0], bytes[1], bytes[2], bytes[3]); + this.seed = IntegerHelper.getInt(bytes[4], bytes[5], bytes[6], bytes[7]); + } + + public Dg(int numDrawings) { + super(EscherRecordType.DG); + this.drawingId = 1; + this.shapeCount = numDrawings + 1; + this.seed = 1024 + this.shapeCount + 1; + setInstance(this.drawingId); + } + + public int getDrawingId() { + return this.drawingId; + } + + byte[] getData() { + this.data = new byte[8]; + IntegerHelper.getFourBytes(this.shapeCount, this.data, 0); + IntegerHelper.getFourBytes(this.seed, this.data, 4); + return setHeaderData(this.data); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/DgContainer.java b/hrmsEjb/jxl/biff/drawing/DgContainer.java new file mode 100644 index 0000000..f01e930 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/DgContainer.java @@ -0,0 +1,7 @@ +package jxl.biff.drawing; + +class DgContainer extends EscherContainer { + public DgContainer() { + super(EscherRecordType.DG_CONTAINER); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Dgg.java b/hrmsEjb/jxl/biff/drawing/Dgg.java new file mode 100644 index 0000000..a623bce --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Dgg.java @@ -0,0 +1,91 @@ +package jxl.biff.drawing; + +import common.Logger; +import java.util.ArrayList; +import jxl.biff.IntegerHelper; + +class Dgg extends EscherAtom { + private static Logger logger = Logger.getLogger(Dgg.class); + + private byte[] data; + + private int numClusters; + + private int maxShapeId; + + private int shapesSaved; + + private int drawingsSaved; + + private ArrayList clusters; + + static final class Cluster { + int drawingGroupId; + + int shapeIdsUsed; + + Cluster(int dgId, int sids) { + this.drawingGroupId = dgId; + this.shapeIdsUsed = sids; + } + } + + public Dgg(EscherRecordData erd) { + super(erd); + this.clusters = new ArrayList(); + byte[] bytes = getBytes(); + this.maxShapeId = IntegerHelper.getInt(bytes[0], bytes[1], bytes[2], bytes[3]); + this.numClusters = IntegerHelper.getInt(bytes[4], bytes[5], bytes[6], bytes[7]); + this.shapesSaved = IntegerHelper.getInt(bytes[8], bytes[9], bytes[10], bytes[11]); + this.drawingsSaved = IntegerHelper.getInt(bytes[12], bytes[13], bytes[14], bytes[15]); + int pos = 16; + for (int i = 0; i < this.numClusters; i++) { + int dgId = IntegerHelper.getInt(bytes[pos], bytes[pos + 1]); + int sids = IntegerHelper.getInt(bytes[pos + 2], bytes[pos + 3]); + Cluster c = new Cluster(dgId, sids); + this.clusters.add(c); + pos += 4; + } + } + + public Dgg(int numShapes, int numDrawings) { + super(EscherRecordType.DGG); + this.shapesSaved = numShapes; + this.drawingsSaved = numDrawings; + this.clusters = new ArrayList(); + } + + void addCluster(int dgid, int sids) { + Cluster c = new Cluster(dgid, sids); + this.clusters.add(c); + } + + byte[] getData() { + this.numClusters = this.clusters.size(); + this.data = new byte[16 + this.numClusters * 4]; + IntegerHelper.getFourBytes(1024 + this.shapesSaved, this.data, 0); + IntegerHelper.getFourBytes(this.numClusters, this.data, 4); + IntegerHelper.getFourBytes(this.shapesSaved, this.data, 8); + IntegerHelper.getFourBytes(1, this.data, 12); + int pos = 16; + for (int i = 0; i < this.numClusters; i++) { + Cluster c = this.clusters.get(i); + IntegerHelper.getTwoBytes(c.drawingGroupId, this.data, pos); + IntegerHelper.getTwoBytes(c.shapeIdsUsed, this.data, pos + 2); + pos += 4; + } + return setHeaderData(this.data); + } + + int getShapesSaved() { + return this.shapesSaved; + } + + int getDrawingsSaved() { + return this.drawingsSaved; + } + + Cluster getCluster(int i) { + return this.clusters.get(i); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/DggContainer.java b/hrmsEjb/jxl/biff/drawing/DggContainer.java new file mode 100644 index 0000000..405a6da --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/DggContainer.java @@ -0,0 +1,7 @@ +package jxl.biff.drawing; + +class DggContainer extends EscherContainer { + public DggContainer() { + super(EscherRecordType.DGG_CONTAINER); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Drawing.java b/hrmsEjb/jxl/biff/drawing/Drawing.java new file mode 100644 index 0000000..7a4a12a --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Drawing.java @@ -0,0 +1,345 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import jxl.Image; +import jxl.biff.ByteData; +import jxl.write.biff.File; + +public class Drawing implements DrawingGroupObject, Image { + private static Logger logger = Logger.getLogger(Drawing.class); + + private EscherContainer readSpContainer; + + private MsoDrawingRecord msoDrawingRecord; + + private ObjRecord objRecord; + + private boolean initialized = false; + + private File imageFile; + + private byte[] imageData; + + private int objectId; + + private int blipId; + + private double x; + + private double y; + + private double width; + + private double height; + + private int referenceCount; + + private EscherContainer escherData; + + private Origin origin; + + private DrawingGroup drawingGroup; + + private DrawingData drawingData; + + private ShapeType type; + + private int shapeId; + + private int drawingNumber; + + public Drawing(MsoDrawingRecord mso, ObjRecord obj, DrawingData dd, DrawingGroup dg) { + this.drawingGroup = dg; + this.msoDrawingRecord = mso; + this.drawingData = dd; + this.objRecord = obj; + this.initialized = false; + this.origin = Origin.READ; + this.drawingData.addData(this.msoDrawingRecord.getData()); + this.drawingNumber = this.drawingData.getNumDrawings() - 1; + this.drawingGroup.addDrawing(this); + Assert.verify((mso != null && obj != null)); + initialize(); + } + + protected Drawing(DrawingGroupObject dgo, DrawingGroup dg) { + Drawing d = (Drawing)dgo; + Assert.verify((d.origin == Origin.READ)); + this.msoDrawingRecord = d.msoDrawingRecord; + this.objRecord = d.objRecord; + this.initialized = false; + this.origin = Origin.READ; + this.drawingData = d.drawingData; + this.drawingGroup = dg; + this.drawingNumber = d.drawingNumber; + this.drawingGroup.addDrawing(this); + } + + public Drawing(double x, double y, double width, double height, File image) { + this.imageFile = image; + this.initialized = true; + this.origin = Origin.WRITE; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.referenceCount = 1; + this.type = ShapeType.PICTURE_FRAME; + } + + public Drawing(double x, double y, double width, double height, byte[] image) { + this.imageData = image; + this.initialized = true; + this.origin = Origin.WRITE; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.referenceCount = 1; + this.type = ShapeType.PICTURE_FRAME; + } + + private void initialize() { + this.readSpContainer = this.drawingData.getSpContainer(this.drawingNumber); + Assert.verify((this.readSpContainer != null)); + EscherRecord[] children = this.readSpContainer.getChildren(); + Sp sp = (Sp)this.readSpContainer.getChildren()[0]; + this.shapeId = sp.getShapeId(); + this.objectId = this.objRecord.getObjectId(); + this.type = ShapeType.getType(sp.getShapeType()); + if (this.type == ShapeType.UNKNOWN) + logger.warn("Unknown shape type"); + Opt opt = (Opt)this.readSpContainer.getChildren()[1]; + if (opt.getProperty(260) != null) + this.blipId = (opt.getProperty(260)).value; + if (opt.getProperty(261) != null) { + this.imageFile = new File((opt.getProperty(261)).stringValue); + } else if (this.type == ShapeType.PICTURE_FRAME) { + logger.warn("no filename property for drawing"); + this.imageFile = new File(Integer.toString(this.blipId)); + } + ClientAnchor clientAnchor = null; + for (int i = 0; i < children.length && clientAnchor == null; i++) { + if (children[i].getType() == EscherRecordType.CLIENT_ANCHOR) + clientAnchor = (ClientAnchor)children[i]; + } + if (clientAnchor == null) { + logger.warn("client anchor not found"); + } else { + this.x = clientAnchor.getX1(); + this.y = clientAnchor.getY1(); + this.width = clientAnchor.getX2() - this.x; + this.height = clientAnchor.getY2() - this.y; + } + if (this.blipId == 0) + logger.warn("linked drawings are not supported"); + this.initialized = true; + } + + public File getImageFile() { + return this.imageFile; + } + + public String getImageFilePath() { + if (this.imageFile == null) + return (this.blipId != 0) ? Integer.toString(this.blipId) : "__new__image__"; + return this.imageFile.getPath(); + } + + public final void setObjectId(int objid, int bip, int sid) { + this.objectId = objid; + this.blipId = bip; + this.shapeId = sid; + if (this.origin == Origin.READ) + this.origin = Origin.READ_WRITE; + } + + public final int getObjectId() { + if (!this.initialized) + initialize(); + return this.objectId; + } + + public int getShapeId() { + if (!this.initialized) + initialize(); + return this.shapeId; + } + + public final int getBlipId() { + if (!this.initialized) + initialize(); + return this.blipId; + } + + public MsoDrawingRecord getMsoDrawingRecord() { + return this.msoDrawingRecord; + } + + public EscherContainer getSpContainer() { + if (!this.initialized) + initialize(); + if (this.origin == Origin.READ) + return getReadSpContainer(); + SpContainer spContainer = new SpContainer(); + Sp sp = new Sp(this.type, this.shapeId, 2560); + spContainer.add(sp); + Opt opt = new Opt(); + opt.addProperty(260, true, false, this.blipId); + if (this.type == ShapeType.PICTURE_FRAME) { + String filePath = (this.imageFile != null) ? this.imageFile.getPath() : ""; + opt.addProperty(261, true, true, filePath.length() * 2, filePath); + opt.addProperty(447, false, false, 65536); + opt.addProperty(959, false, false, 524288); + spContainer.add(opt); + } + ClientAnchor clientAnchor = new ClientAnchor(this.x, this.y, this.x + this.width, this.y + this.height); + spContainer.add(clientAnchor); + ClientData clientData = new ClientData(); + spContainer.add(clientData); + return spContainer; + } + + public void setDrawingGroup(DrawingGroup dg) { + this.drawingGroup = dg; + } + + public DrawingGroup getDrawingGroup() { + return this.drawingGroup; + } + + public Origin getOrigin() { + return this.origin; + } + + public int getReferenceCount() { + return this.referenceCount; + } + + public void setReferenceCount(int r) { + this.referenceCount = r; + } + + public double getX() { + if (!this.initialized) + initialize(); + return this.x; + } + + public void setX(double x) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.x = x; + } + + public double getY() { + if (!this.initialized) + initialize(); + return this.y; + } + + public void setY(double y) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.y = y; + } + + public double getWidth() { + if (!this.initialized) + initialize(); + return this.width; + } + + public void setWidth(double w) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.width = w; + } + + public double getHeight() { + if (!this.initialized) + initialize(); + return this.height; + } + + public void setHeight(double h) { + if (this.origin == Origin.READ) { + if (!this.initialized) + initialize(); + this.origin = Origin.READ_WRITE; + } + this.height = h; + } + + private EscherContainer getReadSpContainer() { + if (!this.initialized) + initialize(); + return this.readSpContainer; + } + + public byte[] getImageData() { + Assert.verify((this.origin == Origin.READ || this.origin == Origin.READ_WRITE)); + if (!this.initialized) + initialize(); + return this.drawingGroup.getImageData(this.blipId); + } + + public byte[] getImageBytes() throws IOException { + if (this.origin == Origin.READ || this.origin == Origin.READ_WRITE) + return getImageData(); + Assert.verify((this.origin == Origin.WRITE)); + if (this.imageFile == null) { + Assert.verify((this.imageData != null)); + return this.imageData; + } + byte[] data = new byte[(int)this.imageFile.length()]; + FileInputStream fis = new FileInputStream(this.imageFile); + fis.read(data, 0, data.length); + fis.close(); + return data; + } + + public ShapeType getType() { + return this.type; + } + + public void writeAdditionalRecords(File outputFile) throws IOException { + if (this.origin == Origin.READ) { + outputFile.write((ByteData)this.objRecord); + return; + } + ObjRecord objRecord = new ObjRecord(this.objectId, ObjRecord.PICTURE); + outputFile.write((ByteData)objRecord); + } + + public void writeTailRecords(File outputFile) throws IOException {} + + public double getColumn() { + return getX(); + } + + public double getRow() { + return getY(); + } + + public boolean isFirst() { + return this.msoDrawingRecord.isFirst(); + } + + public boolean isFormObject() { + return false; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/DrawingData.java b/hrmsEjb/jxl/biff/drawing/DrawingData.java new file mode 100644 index 0000000..f356690 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/DrawingData.java @@ -0,0 +1,93 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import java.util.ArrayList; + +public class DrawingData implements EscherStream { + private static Logger logger = Logger.getLogger(DrawingData.class); + + private int numDrawings = 0; + + private byte[] drawingData = null; + + private boolean initialized = false; + + private EscherRecord[] spContainers; + + private void initialize() { + EscherRecordData er = new EscherRecordData(this, 0); + Assert.verify(er.isContainer()); + EscherContainer dgContainer = new EscherContainer(er); + EscherRecord[] children = dgContainer.getChildren(); + children = dgContainer.getChildren(); + EscherContainer spgrContainer = null; + for (int i = 0; i < children.length && spgrContainer == null; i++) { + EscherRecord child = children[i]; + if (child.getType() == EscherRecordType.SPGR_CONTAINER) + spgrContainer = (EscherContainer)child; + } + Assert.verify((spgrContainer != null)); + EscherRecord[] spgrChildren = spgrContainer.getChildren(); + boolean nestedContainers = false; + for (int j = 0; j < spgrChildren.length && !nestedContainers; j++) { + if (spgrChildren[j].getType() == EscherRecordType.SPGR_CONTAINER) + nestedContainers = true; + } + if (!nestedContainers) { + this.spContainers = spgrChildren; + } else { + ArrayList sps = new ArrayList(); + getSpContainers(spgrContainer, sps); + this.spContainers = new EscherRecord[sps.size()]; + this.spContainers = (EscherRecord[])sps.toArray((Object[])this.spContainers); + } + this.initialized = true; + } + + private void getSpContainers(EscherContainer spgrContainer, ArrayList sps) { + EscherRecord[] spgrChildren = spgrContainer.getChildren(); + for (int i = 0; i < spgrChildren.length; i++) { + if (spgrChildren[i].getType() == EscherRecordType.SP_CONTAINER) { + sps.add(spgrChildren[i]); + } else if (spgrChildren[i].getType() == EscherRecordType.SPGR_CONTAINER) { + getSpContainers((EscherContainer)spgrChildren[i], sps); + } else { + logger.warn("Spgr Containers contains a record other than Sp/Spgr containers"); + } + } + } + + public void addData(byte[] data) { + addRawData(data); + this.numDrawings++; + } + + public void addRawData(byte[] data) { + if (this.drawingData == null) { + this.drawingData = data; + return; + } + byte[] newArray = new byte[this.drawingData.length + data.length]; + System.arraycopy(this.drawingData, 0, newArray, 0, this.drawingData.length); + System.arraycopy(data, 0, newArray, this.drawingData.length, data.length); + this.drawingData = newArray; + this.initialized = false; + } + + final int getNumDrawings() { + return this.numDrawings; + } + + EscherContainer getSpContainer(int drawingNum) { + if (!this.initialized) + initialize(); + EscherContainer spContainer = (EscherContainer)this.spContainers[drawingNum + 1]; + Assert.verify((spContainer != null)); + return spContainer; + } + + public byte[] getData() { + return this.drawingData; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/DrawingGroup.java b/hrmsEjb/jxl/biff/drawing/DrawingGroup.java new file mode 100644 index 0000000..d548f3c --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/DrawingGroup.java @@ -0,0 +1,279 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import jxl.biff.ByteData; +import jxl.read.biff.Record; +import jxl.write.biff.File; + +public class DrawingGroup implements EscherStream { + private static Logger logger = Logger.getLogger(DrawingGroup.class); + + private byte[] drawingData; + + private EscherContainer escherData; + + private BStoreContainer bstoreContainer; + + private boolean initialized; + + private ArrayList drawings; + + private int numBlips; + + private int numCharts; + + private int drawingGroupId; + + private boolean drawingsOmitted; + + private Origin origin; + + private HashMap imageFiles; + + private int maxObjectId; + + private int maxShapeId; + + public DrawingGroup(Origin o) { + this.origin = o; + this.initialized = (o == Origin.WRITE); + this.drawings = new ArrayList(); + this.imageFiles = new HashMap(); + this.drawingsOmitted = false; + this.maxObjectId = 1; + this.maxShapeId = 1024; + } + + public DrawingGroup(DrawingGroup dg) { + this.drawingData = dg.drawingData; + this.escherData = dg.escherData; + this.bstoreContainer = dg.bstoreContainer; + this.initialized = dg.initialized; + this.drawingData = dg.drawingData; + this.escherData = dg.escherData; + this.bstoreContainer = dg.bstoreContainer; + this.numBlips = dg.numBlips; + this.numCharts = dg.numCharts; + this.drawingGroupId = dg.drawingGroupId; + this.drawingsOmitted = dg.drawingsOmitted; + this.origin = dg.origin; + this.imageFiles = (HashMap)dg.imageFiles.clone(); + this.maxObjectId = dg.maxObjectId; + this.maxShapeId = dg.maxShapeId; + this.drawings = new ArrayList(); + } + + public void add(MsoDrawingGroupRecord mso) { + addData(mso.getData()); + } + + public void add(Record cont) { + addData(cont.getData()); + } + + private void addData(byte[] msodata) { + if (this.drawingData == null) { + this.drawingData = new byte[msodata.length]; + System.arraycopy(msodata, 0, this.drawingData, 0, msodata.length); + return; + } + byte[] newdata = new byte[this.drawingData.length + msodata.length]; + System.arraycopy(this.drawingData, 0, newdata, 0, this.drawingData.length); + System.arraycopy(msodata, 0, newdata, this.drawingData.length, msodata.length); + this.drawingData = newdata; + } + + final void addDrawing(DrawingGroupObject d) { + this.drawings.add(d); + this.maxObjectId = Math.max(this.maxObjectId, d.getObjectId()); + this.maxShapeId = Math.max(this.maxShapeId, d.getShapeId()); + } + + public void add(Chart c) { + this.numCharts++; + } + + public void add(DrawingGroupObject d) { + if (this.origin == Origin.READ) { + this.origin = Origin.READ_WRITE; + BStoreContainer bsc = getBStoreContainer(); + Dgg dgg = (Dgg)this.escherData.getChildren()[0]; + this.drawingGroupId = (dgg.getCluster(1)).drawingGroupId - this.numBlips - 1; + this.numBlips = (bsc != null) ? bsc.getNumBlips() : 0; + if (bsc != null) + Assert.verify((this.numBlips == bsc.getNumBlips())); + } + if (!(d instanceof Drawing)) { + this.maxObjectId++; + this.maxShapeId++; + d.setDrawingGroup(this); + d.setObjectId(this.maxObjectId, this.numBlips + 1, this.maxShapeId); + if (this.drawings.size() > this.maxObjectId) + logger.warn("drawings length " + this.drawings.size() + " exceeds the max object id " + this.maxObjectId); + return; + } + Drawing drawing = (Drawing)d; + Drawing refImage = (Drawing)this.imageFiles.get(d.getImageFilePath()); + if (refImage == null) { + this.maxObjectId++; + this.maxShapeId++; + this.drawings.add(drawing); + drawing.setDrawingGroup(this); + drawing.setObjectId(this.maxObjectId, this.numBlips + 1, this.maxShapeId); + this.numBlips++; + this.imageFiles.put(drawing.getImageFilePath(), drawing); + } else { + refImage.setReferenceCount(refImage.getReferenceCount() + 1); + drawing.setDrawingGroup(this); + drawing.setObjectId(refImage.getObjectId(), refImage.getBlipId(), refImage.getShapeId()); + } + } + + public void remove(DrawingGroupObject d) { + if (getBStoreContainer() == null) + return; + if (this.origin == Origin.READ) { + this.origin = Origin.READ_WRITE; + this.numBlips = getBStoreContainer().getNumBlips(); + Dgg dgg = (Dgg)this.escherData.getChildren()[0]; + this.drawingGroupId = (dgg.getCluster(1)).drawingGroupId - this.numBlips - 1; + } + EscherRecord[] children = getBStoreContainer().getChildren(); + BlipStoreEntry bse = (BlipStoreEntry)children[d.getBlipId() - 1]; + bse.dereference(); + if (bse.getReferenceCount() == 0) { + getBStoreContainer().remove(bse); + for (Iterator i = this.drawings.iterator(); i.hasNext(); ) { + DrawingGroupObject drawing = i.next(); + if (drawing.getBlipId() > d.getBlipId()) + drawing.setObjectId(drawing.getObjectId(), drawing.getBlipId() - 1, drawing.getShapeId()); + } + this.numBlips--; + } + } + + private void initialize() { + EscherRecordData er = new EscherRecordData(this, 0); + Assert.verify(er.isContainer()); + this.escherData = new EscherContainer(er); + Assert.verify((this.escherData.getLength() == this.drawingData.length)); + Assert.verify((this.escherData.getType() == EscherRecordType.DGG_CONTAINER)); + this.initialized = true; + } + + private BStoreContainer getBStoreContainer() { + if (this.bstoreContainer == null) { + if (!this.initialized) + initialize(); + EscherRecord[] children = this.escherData.getChildren(); + if (children.length > 1 && children[1].getType() == EscherRecordType.BSTORE_CONTAINER) + this.bstoreContainer = (BStoreContainer)children[1]; + } + return this.bstoreContainer; + } + + public byte[] getData() { + return this.drawingData; + } + + public void write(File outputFile) throws IOException { + if (this.origin == Origin.WRITE) { + DggContainer dggContainer = new DggContainer(); + Dgg dgg = new Dgg(this.numBlips + this.numCharts + 1, this.numBlips); + dgg.addCluster(1, 0); + dgg.addCluster(this.numBlips + 1, 0); + dggContainer.add(dgg); + int drawingsAdded = 0; + BStoreContainer bstoreCont = new BStoreContainer(); + for (Iterator i = this.drawings.iterator(); i.hasNext(); ) { + Object o = i.next(); + if (o instanceof Drawing) { + Drawing d = (Drawing)o; + BlipStoreEntry bse = new BlipStoreEntry(d); + bstoreCont.add(bse); + drawingsAdded++; + } + } + if (drawingsAdded > 0) { + bstoreCont.setNumBlips(drawingsAdded); + dggContainer.add(bstoreCont); + } + Opt opt = new Opt(); + dggContainer.add(opt); + SplitMenuColors splitMenuColors = new SplitMenuColors(); + dggContainer.add(splitMenuColors); + this.drawingData = dggContainer.getData(); + } else if (this.origin == Origin.READ_WRITE) { + DggContainer dggContainer = new DggContainer(); + Dgg dgg = new Dgg(this.numBlips + this.numCharts + 1, this.numBlips); + dgg.addCluster(1, 0); + dgg.addCluster(this.drawingGroupId + this.numBlips + 1, 0); + dggContainer.add(dgg); + BStoreContainer bstoreCont = new BStoreContainer(); + bstoreCont.setNumBlips(this.numBlips); + BStoreContainer readBStoreContainer = getBStoreContainer(); + if (readBStoreContainer != null) { + EscherRecord[] children = readBStoreContainer.getChildren(); + for (int j = 0; j < children.length; j++) { + BlipStoreEntry bse = (BlipStoreEntry)children[j]; + bstoreCont.add(bse); + } + } + for (Iterator i = this.drawings.iterator(); i.hasNext(); ) { + DrawingGroupObject dgo = i.next(); + if (dgo instanceof Drawing) { + Drawing d = (Drawing)dgo; + if (d.getOrigin() != Origin.READ) { + BlipStoreEntry bse = new BlipStoreEntry(d); + bstoreCont.add(bse); + } + } + } + dggContainer.add(bstoreCont); + Opt opt = new Opt(); + opt.addProperty(191, false, false, 524296); + opt.addProperty(385, false, false, 134217737); + opt.addProperty(448, false, false, 134217792); + dggContainer.add(opt); + SplitMenuColors splitMenuColors = new SplitMenuColors(); + dggContainer.add(splitMenuColors); + this.drawingData = dggContainer.getData(); + } + MsoDrawingGroupRecord msodg = new MsoDrawingGroupRecord(this.drawingData); + outputFile.write((ByteData)msodg); + } + + final int getNumberOfBlips() { + return this.numBlips; + } + + byte[] getImageData(int blipId) { + this.numBlips = getBStoreContainer().getNumBlips(); + Assert.verify((blipId <= this.numBlips)); + Assert.verify((this.origin == Origin.READ || this.origin == Origin.READ_WRITE)); + EscherRecord[] children = getBStoreContainer().getChildren(); + BlipStoreEntry bse = (BlipStoreEntry)children[blipId - 1]; + return bse.getImageData(); + } + + public void setDrawingsOmitted(MsoDrawingRecord mso, ObjRecord obj) { + this.drawingsOmitted = true; + if (obj != null) + this.maxObjectId = Math.max(this.maxObjectId, obj.getObjectId()); + } + + public boolean hasDrawingsOmitted() { + return this.drawingsOmitted; + } + + public void updateData(DrawingGroup dg) { + this.drawingsOmitted = dg.drawingsOmitted; + this.maxObjectId = dg.maxObjectId; + this.maxShapeId = dg.maxShapeId; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/DrawingGroupObject.java b/hrmsEjb/jxl/biff/drawing/DrawingGroupObject.java new file mode 100644 index 0000000..88eae51 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/DrawingGroupObject.java @@ -0,0 +1,60 @@ +package jxl.biff.drawing; + +import java.io.IOException; +import jxl.write.biff.File; + +public interface DrawingGroupObject { + void setObjectId(int paramInt1, int paramInt2, int paramInt3); + + int getObjectId(); + + int getBlipId(); + + int getShapeId(); + + MsoDrawingRecord getMsoDrawingRecord(); + + EscherContainer getSpContainer(); + + void setDrawingGroup(DrawingGroup paramDrawingGroup); + + DrawingGroup getDrawingGroup(); + + Origin getOrigin(); + + int getReferenceCount(); + + void setReferenceCount(int paramInt); + + double getX(); + + void setX(double paramDouble); + + double getY(); + + void setY(double paramDouble); + + double getWidth(); + + void setWidth(double paramDouble); + + double getHeight(); + + void setHeight(double paramDouble); + + ShapeType getType(); + + byte[] getImageData(); + + byte[] getImageBytes() throws IOException; + + String getImageFilePath(); + + void writeAdditionalRecords(File paramFile) throws IOException; + + void writeTailRecords(File paramFile) throws IOException; + + boolean isFirst(); + + boolean isFormObject(); +} diff --git a/hrmsEjb/jxl/biff/drawing/EscherAtom.java b/hrmsEjb/jxl/biff/drawing/EscherAtom.java new file mode 100644 index 0000000..aee5291 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/EscherAtom.java @@ -0,0 +1,20 @@ +package jxl.biff.drawing; + +import common.Logger; + +class EscherAtom extends EscherRecord { + private static Logger logger = Logger.getLogger(EscherAtom.class); + + public EscherAtom(EscherRecordData erd) { + super(erd); + } + + protected EscherAtom(EscherRecordType type) { + super(type); + } + + byte[] getData() { + logger.warn("escher atom getData called on object of type " + getClass().getName() + " code " + Integer.toString(getType().getValue(), 16)); + return null; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/EscherContainer.java b/hrmsEjb/jxl/biff/drawing/EscherContainer.java new file mode 100644 index 0000000..3abca57 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/EscherContainer.java @@ -0,0 +1,99 @@ +package jxl.biff.drawing; + +import common.Logger; +import java.util.ArrayList; +import java.util.Iterator; + +class EscherContainer extends EscherRecord { + private static Logger logger = Logger.getLogger(EscherContainer.class); + + private boolean initialized; + + private ArrayList children; + + public EscherContainer(EscherRecordData erd) { + super(erd); + this.initialized = false; + this.children = new ArrayList(); + } + + protected EscherContainer(EscherRecordType type) { + super(type); + setContainer(true); + this.children = new ArrayList(); + } + + public EscherRecord[] getChildren() { + if (!this.initialized) + initialize(); + Object[] ca = this.children.toArray((Object[])new EscherRecord[this.children.size()]); + return (EscherRecord[])ca; + } + + public void add(EscherRecord child) { + this.children.add(child); + } + + public void remove(EscherRecord child) { + this.children.remove(child); + } + + private void initialize() { + int curpos = getPos() + 8; + int endpos = Math.min(getPos() + getLength(), getStreamLength()); + EscherRecord newRecord = null; + while (curpos < endpos) { + EscherRecordData erd = new EscherRecordData(getEscherStream(), curpos); + EscherRecordType type = erd.getType(); + if (type == EscherRecordType.DGG) { + newRecord = new Dgg(erd); + } else if (type == EscherRecordType.DG) { + newRecord = new Dg(erd); + } else if (type == EscherRecordType.BSTORE_CONTAINER) { + newRecord = new BStoreContainer(erd); + } else if (type == EscherRecordType.SPGR_CONTAINER) { + newRecord = new SpgrContainer(erd); + } else if (type == EscherRecordType.SP_CONTAINER) { + newRecord = new SpContainer(erd); + } else if (type == EscherRecordType.SPGR) { + newRecord = new Spgr(erd); + } else if (type == EscherRecordType.SP) { + newRecord = new Sp(erd); + } else if (type == EscherRecordType.CLIENT_ANCHOR) { + newRecord = new ClientAnchor(erd); + } else if (type == EscherRecordType.CLIENT_DATA) { + newRecord = new ClientData(erd); + } else if (type == EscherRecordType.BSE) { + newRecord = new BlipStoreEntry(erd); + } else if (type == EscherRecordType.OPT) { + newRecord = new Opt(erd); + } else if (type == EscherRecordType.SPLIT_MENU_COLORS) { + newRecord = new SplitMenuColors(erd); + } else if (type == EscherRecordType.CLIENT_TEXT_BOX) { + newRecord = new ClientTextBox(erd); + } else { + newRecord = new EscherAtom(erd); + } + this.children.add(newRecord); + curpos += newRecord.getLength(); + } + this.initialized = true; + } + + byte[] getData() { + if (!this.initialized) + initialize(); + byte[] data = new byte[0]; + for (Iterator i = this.children.iterator(); i.hasNext(); ) { + EscherRecord er = i.next(); + byte[] childData = er.getData(); + if (childData != null) { + byte[] newData = new byte[data.length + childData.length]; + System.arraycopy(data, 0, newData, 0, data.length); + System.arraycopy(childData, 0, newData, data.length, childData.length); + data = newData; + } + } + return setHeaderData(data); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/EscherRecord.java b/hrmsEjb/jxl/biff/drawing/EscherRecord.java new file mode 100644 index 0000000..e7976a3 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/EscherRecord.java @@ -0,0 +1,65 @@ +package jxl.biff.drawing; + +import common.Logger; + +abstract class EscherRecord { + private static Logger logger = Logger.getLogger(EscherRecord.class); + + protected EscherRecordData data; + + protected static final int HEADER_LENGTH = 8; + + protected EscherRecord(EscherRecordData erd) { + this.data = erd; + } + + protected EscherRecord(EscherRecordType type) { + this.data = new EscherRecordData(type); + } + + protected void setContainer(boolean cont) { + this.data.setContainer(cont); + } + + public int getLength() { + return this.data.getLength() + 8; + } + + protected final EscherStream getEscherStream() { + return this.data.getEscherStream(); + } + + protected final int getPos() { + return this.data.getPos(); + } + + protected final int getInstance() { + return this.data.getInstance(); + } + + protected final void setInstance(int i) { + this.data.setInstance(i); + } + + protected final void setVersion(int v) { + this.data.setVersion(v); + } + + public EscherRecordType getType() { + return this.data.getType(); + } + + final byte[] setHeaderData(byte[] d) { + return this.data.setHeaderData(d); + } + + byte[] getBytes() { + return this.data.getBytes(); + } + + protected int getStreamLength() { + return this.data.getStreamLength(); + } + + abstract byte[] getData(); +} diff --git a/hrmsEjb/jxl/biff/drawing/EscherRecordData.java b/hrmsEjb/jxl/biff/drawing/EscherRecordData.java new file mode 100644 index 0000000..e41438f --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/EscherRecordData.java @@ -0,0 +1,121 @@ +package jxl.biff.drawing; + +import common.Logger; +import jxl.biff.IntegerHelper; + +final class EscherRecordData { + private static Logger logger = Logger.getLogger(EscherRecordData.class); + + private int pos; + + private int instance; + + private int version; + + private int recordId; + + private int length; + + private int streamLength; + + private boolean container; + + private EscherRecordType type; + + private EscherStream escherStream; + + public EscherRecordData(EscherStream dg, int p) { + this.escherStream = dg; + this.pos = p; + byte[] data = this.escherStream.getData(); + this.streamLength = data.length; + int value = IntegerHelper.getInt(data[this.pos], data[this.pos + 1]); + this.instance = (value & 0xFFF0) >> 4; + this.version = value & 0xF; + this.recordId = IntegerHelper.getInt(data[this.pos + 2], data[this.pos + 3]); + this.length = IntegerHelper.getInt(data[this.pos + 4], data[this.pos + 5], data[this.pos + 6], data[this.pos + 7]); + if (this.version == 15) { + this.container = true; + } else { + this.container = false; + } + } + + public EscherRecordData(EscherRecordType t) { + this.type = t; + this.recordId = this.type.getValue(); + } + + public boolean isContainer() { + return this.container; + } + + public int getLength() { + return this.length; + } + + public int getRecordId() { + return this.recordId; + } + + EscherStream getDrawingGroup() { + return this.escherStream; + } + + int getPos() { + return this.pos; + } + + EscherRecordType getType() { + if (this.type == null) + this.type = EscherRecordType.getType(this.recordId); + return this.type; + } + + int getInstance() { + return this.instance; + } + + void setContainer(boolean c) { + this.container = c; + } + + void setInstance(int inst) { + this.instance = inst; + } + + void setLength(int l) { + this.length = l; + } + + void setVersion(int v) { + this.version = v; + } + + byte[] setHeaderData(byte[] d) { + byte[] data = new byte[d.length + 8]; + System.arraycopy(d, 0, data, 8, d.length); + if (this.container) + this.version = 15; + int value = this.instance << 4; + value |= this.version; + IntegerHelper.getTwoBytes(value, data, 0); + IntegerHelper.getTwoBytes(this.recordId, data, 2); + IntegerHelper.getFourBytes(d.length, data, 4); + return data; + } + + EscherStream getEscherStream() { + return this.escherStream; + } + + byte[] getBytes() { + byte[] d = new byte[this.length]; + System.arraycopy(this.escherStream.getData(), this.pos + 8, d, 0, this.length); + return d; + } + + int getStreamLength() { + return this.streamLength; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/EscherRecordType.java b/hrmsEjb/jxl/biff/drawing/EscherRecordType.java new file mode 100644 index 0000000..c99f1e3 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/EscherRecordType.java @@ -0,0 +1,62 @@ +package jxl.biff.drawing; + +final class EscherRecordType { + private int value; + + private static EscherRecordType[] types = new EscherRecordType[0]; + + private EscherRecordType(int val) { + this.value = val; + EscherRecordType[] newtypes = new EscherRecordType[types.length + 1]; + System.arraycopy(types, 0, newtypes, 0, types.length); + newtypes[types.length] = this; + types = newtypes; + } + + public int getValue() { + return this.value; + } + + public static EscherRecordType getType(int val) { + EscherRecordType type = UNKNOWN; + for (int i = 0; i < types.length; i++) { + if (val == (types[i]).value) { + type = types[i]; + break; + } + } + return type; + } + + public static final EscherRecordType UNKNOWN = new EscherRecordType(0); + + public static final EscherRecordType DGG_CONTAINER = new EscherRecordType(61440); + + public static final EscherRecordType BSTORE_CONTAINER = new EscherRecordType(61441); + + public static final EscherRecordType DG_CONTAINER = new EscherRecordType(61442); + + public static final EscherRecordType SPGR_CONTAINER = new EscherRecordType(61443); + + public static final EscherRecordType SP_CONTAINER = new EscherRecordType(61444); + + public static final EscherRecordType DGG = new EscherRecordType(61446); + + public static final EscherRecordType BSE = new EscherRecordType(61447); + + public static final EscherRecordType DG = new EscherRecordType(61448); + + public static final EscherRecordType SPGR = new EscherRecordType(61449); + + public static final EscherRecordType SP = new EscherRecordType(61450); + + public static final EscherRecordType OPT = new EscherRecordType(61451); + + public static final EscherRecordType CLIENT_ANCHOR = new EscherRecordType(61456); + + public static final EscherRecordType CLIENT_DATA = new EscherRecordType(61457); + + public static final EscherRecordType CLIENT_TEXT_BOX = new EscherRecordType(61453); + + public static final EscherRecordType SPLIT_MENU_COLORS = new EscherRecordType(61726); +} diff --git a/hrmsEjb/jxl/biff/drawing/EscherStream.java b/hrmsEjb/jxl/biff/drawing/EscherStream.java new file mode 100644 index 0000000..e069541 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/EscherStream.java @@ -0,0 +1,5 @@ +package jxl.biff.drawing; + +interface EscherStream { + byte[] getData(); +} diff --git a/hrmsEjb/jxl/biff/drawing/MsoDrawingGroupRecord.java b/hrmsEjb/jxl/biff/drawing/MsoDrawingGroupRecord.java new file mode 100644 index 0000000..1f1cbc0 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/MsoDrawingGroupRecord.java @@ -0,0 +1,23 @@ +package jxl.biff.drawing; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.read.biff.Record; + +public class MsoDrawingGroupRecord extends WritableRecordData { + private byte[] data; + + public MsoDrawingGroupRecord(Record t) { + super(t); + this.data = t.getData(); + } + + MsoDrawingGroupRecord(byte[] d) { + super(Type.MSODRAWINGGROUP); + this.data = d; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/MsoDrawingRecord.java b/hrmsEjb/jxl/biff/drawing/MsoDrawingRecord.java new file mode 100644 index 0000000..07785a0 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/MsoDrawingRecord.java @@ -0,0 +1,42 @@ +package jxl.biff.drawing; + +import common.Logger; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.read.biff.Record; + +public class MsoDrawingRecord extends WritableRecordData { + private static Logger logger = Logger.getLogger(MsoDrawingRecord.class); + + private boolean first; + + private byte[] data; + + public MsoDrawingRecord(Record t) { + super(t); + this.data = getRecord().getData(); + this.first = false; + } + + public MsoDrawingRecord(byte[] d) { + super(Type.MSODRAWING); + this.data = d; + this.first = false; + } + + public byte[] getData() { + return this.data; + } + + public Record getRecord() { + return super.getRecord(); + } + + public void setFirst() { + this.first = true; + } + + public boolean isFirst() { + return this.first; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/NoteRecord.java b/hrmsEjb/jxl/biff/drawing/NoteRecord.java new file mode 100644 index 0000000..a38238d --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/NoteRecord.java @@ -0,0 +1,63 @@ +package jxl.biff.drawing; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.read.biff.Record; + +public class NoteRecord extends WritableRecordData { + private static Logger logger = Logger.getLogger(NoteRecord.class); + + private byte[] data; + + private int row; + + private int column; + + private int objectId; + + public NoteRecord(Record t) { + super(t); + this.data = getRecord().getData(); + this.row = IntegerHelper.getInt(this.data[0], this.data[1]); + this.column = IntegerHelper.getInt(this.data[2], this.data[3]); + this.objectId = IntegerHelper.getInt(this.data[6], this.data[7]); + } + + public NoteRecord(byte[] d) { + super(Type.NOTE); + this.data = d; + } + + public NoteRecord(int c, int r, int id) { + super(Type.NOTE); + this.row = r; + this.column = c; + this.objectId = id; + } + + public byte[] getData() { + if (this.data != null) + return this.data; + String author = ""; + this.data = new byte[8 + author.length() + 4]; + IntegerHelper.getTwoBytes(this.row, this.data, 0); + IntegerHelper.getTwoBytes(this.column, this.data, 2); + IntegerHelper.getTwoBytes(this.objectId, this.data, 6); + IntegerHelper.getTwoBytes(author.length(), this.data, 8); + return this.data; + } + + int getRow() { + return this.row; + } + + int getColumn() { + return this.column; + } + + public int getObjectId() { + return this.objectId; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/ObjRecord.java b/hrmsEjb/jxl/biff/drawing/ObjRecord.java new file mode 100644 index 0000000..090d6ce --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/ObjRecord.java @@ -0,0 +1,177 @@ +package jxl.biff.drawing; + +import common.Assert; +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.read.biff.Record; + +public class ObjRecord extends WritableRecordData { + private static final Logger logger = Logger.getLogger(ObjRecord.class); + + private ObjType type; + + private boolean read; + + private int objectId; + + private static final class ObjType { + public int value; + + public String desc; + + private static ObjType[] types = new ObjType[0]; + + ObjType(int v, String d) { + this.value = v; + this.desc = d; + ObjType[] oldtypes = types; + types = new ObjType[types.length + 1]; + System.arraycopy(oldtypes, 0, types, 0, oldtypes.length); + types[oldtypes.length] = this; + } + + public String toString() { + return this.desc; + } + + public static ObjType getType(int val) { + ObjType retval = ObjRecord.UNKNOWN; + for (int i = 0; i < types.length && retval == ObjRecord.UNKNOWN; i++) { + if ((types[i]).value == val) + retval = types[i]; + } + return retval; + } + } + + public static final ObjType TBD2 = new ObjType(1, "TBD2"); + + public static final ObjType TBD = new ObjType(2, "TBD"); + + public static final ObjType CHART = new ObjType(5, "Chart"); + + public static final ObjType TEXT = new ObjType(6, "Text"); + + public static final ObjType BUTTON = new ObjType(7, "Button"); + + public static final ObjType PICTURE = new ObjType(8, "Picture"); + + public static final ObjType CHECKBOX = new ObjType(14, "Checkbox"); + + public static final ObjType OPTION = new ObjType(12, "Option"); + + public static final ObjType EDITBOX = new ObjType(13, "Edit Box"); + + public static final ObjType LABEL = new ObjType(14, "Label"); + + public static final ObjType DIALOGUEBOX = new ObjType(15, "Dialogue Box"); + + public static final ObjType LISTBOX = new ObjType(18, "List Box"); + + public static final ObjType GROUPBOX = new ObjType(19, "Group Box"); + + public static final ObjType COMBOBOX = new ObjType(20, "Combo Box"); + + public static final ObjType MSOFFICEDRAWING = new ObjType(30, "MS Office Drawing"); + + public static final ObjType FORMCONTROL = new ObjType(20, "Form Combo Box"); + + public static final ObjType EXCELNOTE = new ObjType(25, "Excel Note"); + + public static final ObjType UNKNOWN = new ObjType(255, "Unknown"); + + private static final int COMMON_DATA_LENGTH = 22; + + private static final int CLIPBOARD_FORMAT_LENGTH = 6; + + private static final int PICTURE_OPTION_LENGTH = 6; + + private static final int NOTE_STRUCTURE_LENGTH = 26; + + private static final int END_LENGTH = 4; + + public ObjRecord(Record t) { + super(t); + byte[] data = t.getData(); + int objtype = IntegerHelper.getInt(data[4], data[5]); + this.read = true; + this.type = ObjType.getType(objtype); + if (this.type == UNKNOWN) + logger.warn("unknown object type code " + objtype); + this.objectId = IntegerHelper.getInt(data[6], data[7]); + } + + ObjRecord(int objId, ObjType t) { + super(Type.OBJ); + this.objectId = objId; + this.type = t; + } + + public byte[] getData() { + if (this.read) + return getRecord().getData(); + if (this.type == PICTURE || this.type == CHART) + return getPictureData(); + if (this.type == EXCELNOTE) + return getNoteData(); + Assert.verify(false); + return null; + } + + private byte[] getPictureData() { + int dataLength = 38; + int pos = 0; + byte[] data = new byte[dataLength]; + IntegerHelper.getTwoBytes(21, data, pos); + IntegerHelper.getTwoBytes(18, data, pos + 2); + IntegerHelper.getTwoBytes(this.type.value, data, pos + 4); + IntegerHelper.getTwoBytes(this.objectId, data, pos + 6); + IntegerHelper.getTwoBytes(24593, data, pos + 8); + pos += 22; + IntegerHelper.getTwoBytes(7, data, pos); + IntegerHelper.getTwoBytes(2, data, pos + 2); + IntegerHelper.getTwoBytes(65535, data, pos + 4); + pos += 6; + IntegerHelper.getTwoBytes(8, data, pos); + IntegerHelper.getTwoBytes(2, data, pos + 2); + IntegerHelper.getTwoBytes(1, data, pos + 4); + pos += 6; + IntegerHelper.getTwoBytes(0, data, pos); + IntegerHelper.getTwoBytes(0, data, pos + 2); + pos += 4; + return data; + } + + private byte[] getNoteData() { + int dataLength = 52; + int pos = 0; + byte[] data = new byte[dataLength]; + IntegerHelper.getTwoBytes(21, data, pos); + IntegerHelper.getTwoBytes(18, data, pos + 2); + IntegerHelper.getTwoBytes(this.type.value, data, pos + 4); + IntegerHelper.getTwoBytes(this.objectId, data, pos + 6); + IntegerHelper.getTwoBytes(16401, data, pos + 8); + pos += 22; + IntegerHelper.getTwoBytes(13, data, pos); + IntegerHelper.getTwoBytes(22, data, pos + 2); + pos += 26; + IntegerHelper.getTwoBytes(0, data, pos); + IntegerHelper.getTwoBytes(0, data, pos + 2); + pos += 4; + return data; + } + + public Record getRecord() { + return super.getRecord(); + } + + public ObjType getType() { + return this.type; + } + + int getObjectId() { + return this.objectId; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Opt.java b/hrmsEjb/jxl/biff/drawing/Opt.java new file mode 100644 index 0000000..2edf72a --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Opt.java @@ -0,0 +1,126 @@ +package jxl.biff.drawing; + +import common.Logger; +import java.util.ArrayList; +import java.util.Iterator; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; + +class Opt extends EscherAtom { + private static Logger logger = Logger.getLogger(Opt.class); + + private byte[] data; + + private int numProperties; + + private ArrayList properties; + + static final class Property { + int id; + + boolean blipId; + + boolean complex; + + int value; + + String stringValue; + + public Property(int i, boolean bl, boolean co, int v) { + this.id = i; + this.blipId = bl; + this.complex = co; + this.value = v; + } + + public Property(int i, boolean bl, boolean co, int v, String s) { + this.id = i; + this.blipId = bl; + this.complex = co; + this.value = v; + this.stringValue = s; + } + } + + public Opt(EscherRecordData erd) { + super(erd); + this.numProperties = getInstance(); + readProperties(); + } + + private void readProperties() { + this.properties = new ArrayList(); + int pos = 0; + byte[] bytes = getBytes(); + for (int j = 0; j < this.numProperties; j++) { + int val = IntegerHelper.getInt(bytes[pos], bytes[pos + 1]); + int id = val & 0x3FFF; + int value = IntegerHelper.getInt(bytes[pos + 2], bytes[pos + 3], bytes[pos + 4], bytes[pos + 5]); + Property p = new Property(id, ((val & 0x4000) != 0), ((val & 0x8000) != 0), value); + pos += 6; + this.properties.add(p); + } + for (Iterator i = this.properties.iterator(); i.hasNext(); ) { + Property p = i.next(); + if (p.complex) { + p.stringValue = StringHelper.getUnicodeString(bytes, p.value / 2, pos); + pos += p.value; + } + } + } + + public Opt() { + super(EscherRecordType.OPT); + this.properties = new ArrayList(); + setVersion(3); + } + + byte[] getData() { + this.numProperties = this.properties.size(); + setInstance(this.numProperties); + this.data = new byte[this.numProperties * 6]; + int pos = 0; + for (Iterator iterator1 = this.properties.iterator(); iterator1.hasNext(); ) { + Property p = iterator1.next(); + int val = p.id & 0x3FFF; + if (p.blipId) + val |= 0x4000; + if (p.complex) + val |= 0x8000; + IntegerHelper.getTwoBytes(val, this.data, pos); + IntegerHelper.getFourBytes(p.value, this.data, pos + 2); + pos += 6; + } + for (Iterator i = this.properties.iterator(); i.hasNext(); ) { + Property p = i.next(); + if (p.complex && p.stringValue != null) { + byte[] newData = new byte[this.data.length + p.stringValue.length() * 2]; + System.arraycopy(this.data, 0, newData, 0, this.data.length); + StringHelper.getUnicodeBytes(p.stringValue, newData, this.data.length); + this.data = newData; + } + } + return setHeaderData(this.data); + } + + void addProperty(int id, boolean blip, boolean complex, int val) { + Property p = new Property(id, blip, complex, val); + this.properties.add(p); + } + + void addProperty(int id, boolean blip, boolean complex, int val, String s) { + Property p = new Property(id, blip, complex, val, s); + this.properties.add(p); + } + + Property getProperty(int id) { + boolean found = false; + Property p = null; + for (Iterator i = this.properties.iterator(); i.hasNext() && !found; ) { + p = i.next(); + if (p.id == id) + found = true; + } + return found ? p : null; + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Origin.java b/hrmsEjb/jxl/biff/drawing/Origin.java new file mode 100644 index 0000000..d89ed8c --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Origin.java @@ -0,0 +1,9 @@ +package jxl.biff.drawing; + +public final class Origin { + public static final Origin READ = new Origin(); + + public static final Origin WRITE = new Origin(); + + public static final Origin READ_WRITE = new Origin(); +} diff --git a/hrmsEjb/jxl/biff/drawing/ShapeType.java b/hrmsEjb/jxl/biff/drawing/ShapeType.java new file mode 100644 index 0000000..aef3dc0 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/ShapeType.java @@ -0,0 +1,37 @@ +package jxl.biff.drawing; + +final class ShapeType { + int value; + + private static ShapeType[] types = new ShapeType[0]; + + ShapeType(int v) { + this.value = v; + ShapeType[] old = types; + types = new ShapeType[types.length + 1]; + System.arraycopy(old, 0, types, 0, old.length); + types[old.length] = this; + } + + static ShapeType getType(int v) { + ShapeType st = UNKNOWN; + boolean found = false; + for (int i = 0; i < types.length && !found; i++) { + if ((types[i]).value == v) { + found = true; + st = types[i]; + } + } + return st; + } + + public static final ShapeType MIN = new ShapeType(0); + + public static final ShapeType PICTURE_FRAME = new ShapeType(75); + + public static final ShapeType HOST_CONTROL = new ShapeType(201); + + public static final ShapeType TEXT_BOX = new ShapeType(202); + + public static final ShapeType UNKNOWN = new ShapeType(-1); +} diff --git a/hrmsEjb/jxl/biff/drawing/SheetDrawingWriter.java b/hrmsEjb/jxl/biff/drawing/SheetDrawingWriter.java new file mode 100644 index 0000000..27c85d0 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/SheetDrawingWriter.java @@ -0,0 +1,238 @@ +package jxl.biff.drawing; + +import common.Logger; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.biff.IntegerHelper; +import jxl.write.biff.File; + +public class SheetDrawingWriter { + private static Logger logger = Logger.getLogger(SheetDrawingWriter.class); + + private ArrayList drawings; + + private boolean drawingsModified; + + private Chart[] charts = new Chart[0]; + + private WorkbookSettings workbookSettings; + + public void setDrawings(ArrayList dr, boolean mod) { + this.drawings = dr; + this.drawingsModified = mod; + } + + public void write(File outputFile) throws IOException { + if (this.drawings.size() == 0 && this.charts.length == 0) + return; + boolean modified = this.drawingsModified; + int numImages = this.drawings.size(); + for (Iterator i = this.drawings.iterator(); i.hasNext() && !modified; ) { + DrawingGroupObject d = i.next(); + if (d.getOrigin() != Origin.READ) + modified = true; + } + if (numImages > 0 && !modified) { + DrawingGroupObject d2 = this.drawings.get(0); + if (!d2.isFirst()) + modified = true; + } + if (numImages == 0 && this.charts.length == 1 && this.charts[0].getMsoDrawingRecord() == null) + modified = false; + if (!modified) { + writeUnmodified(outputFile); + return; + } + Object[] spContainerData = new Object[numImages + this.charts.length]; + int length = 0; + EscherContainer firstSpContainer = null; + int j; + for (j = 0; j < numImages; j++) { + DrawingGroupObject drawing = this.drawings.get(j); + EscherContainer spc = drawing.getSpContainer(); + byte[] data = spc.getData(); + spContainerData[j] = data; + if (j == 0) { + firstSpContainer = spc; + } else { + length += data.length; + } + } + for (j = 0; j < this.charts.length; j++) { + EscherContainer escherContainer = this.charts[j].getSpContainer(); + byte[] data = escherContainer.getData(); + data = escherContainer.setHeaderData(data); + spContainerData[j + numImages] = data; + if (j == 0 && numImages == 0) { + firstSpContainer = escherContainer; + } else { + length += data.length; + } + } + DgContainer dgContainer = new DgContainer(); + Dg dg = new Dg(numImages + this.charts.length); + dgContainer.add(dg); + SpgrContainer spgrContainer = new SpgrContainer(); + SpContainer spContainer = new SpContainer(); + Spgr spgr = new Spgr(); + spContainer.add(spgr); + Sp sp = new Sp(ShapeType.MIN, 1024, 5); + spContainer.add(sp); + spgrContainer.add(spContainer); + spgrContainer.add(firstSpContainer); + dgContainer.add(spgrContainer); + byte[] firstMsoData = dgContainer.getData(); + int len = IntegerHelper.getInt(firstMsoData[4], firstMsoData[5], firstMsoData[6], firstMsoData[7]); + IntegerHelper.getFourBytes(len + length, firstMsoData, 4); + len = IntegerHelper.getInt(firstMsoData[28], firstMsoData[29], firstMsoData[30], firstMsoData[31]); + IntegerHelper.getFourBytes(len + length, firstMsoData, 28); + if (numImages > 0 && ((DrawingGroupObject)this.drawings.get(0)).isFormObject()) { + byte[] msodata2 = new byte[firstMsoData.length - 8]; + System.arraycopy(firstMsoData, 0, msodata2, 0, msodata2.length); + firstMsoData = msodata2; + } + MsoDrawingRecord msoDrawingRecord = new MsoDrawingRecord(firstMsoData); + outputFile.write((ByteData)msoDrawingRecord); + if (numImages > 0) { + DrawingGroupObject firstDrawing = this.drawings.get(0); + firstDrawing.writeAdditionalRecords(outputFile); + } else { + Chart chart = this.charts[0]; + ObjRecord objRecord = chart.getObjRecord(); + outputFile.write((ByteData)objRecord); + outputFile.write(chart); + } + for (int k = 1; k < spContainerData.length; k++) { + byte[] bytes = (byte[])spContainerData[k]; + if (k < numImages && ((DrawingGroupObject)this.drawings.get(k)).isFormObject()) { + byte[] bytes2 = new byte[bytes.length - 8]; + System.arraycopy(bytes, 0, bytes2, 0, bytes2.length); + bytes = bytes2; + } + msoDrawingRecord = new MsoDrawingRecord(bytes); + outputFile.write((ByteData)msoDrawingRecord); + if (k < numImages) { + DrawingGroupObject d = this.drawings.get(k); + d.writeAdditionalRecords(outputFile); + } else { + Chart chart = this.charts[k - numImages]; + ObjRecord objRecord = chart.getObjRecord(); + outputFile.write((ByteData)objRecord); + outputFile.write(chart); + } + } + for (Iterator iterator1 = this.drawings.iterator(); iterator1.hasNext(); ) { + DrawingGroupObject dgo2 = iterator1.next(); + dgo2.writeTailRecords(outputFile); + } + } + + private void writeUnmodified(File outputFile) throws IOException { + if (this.charts.length == 0 && this.drawings.size() == 0) + return; + if (this.charts.length == 0 && this.drawings.size() != 0) { + for (Iterator iterator2 = this.drawings.iterator(); iterator2.hasNext(); ) { + DrawingGroupObject d = iterator2.next(); + outputFile.write((ByteData)d.getMsoDrawingRecord()); + d.writeAdditionalRecords(outputFile); + } + for (Iterator iterator1 = this.drawings.iterator(); iterator1.hasNext(); ) { + DrawingGroupObject d = iterator1.next(); + d.writeTailRecords(outputFile); + } + return; + } + if (this.drawings.size() == 0 && this.charts.length != 0) { + Chart curChart = null; + for (int k = 0; k < this.charts.length; k++) { + curChart = this.charts[k]; + if (curChart.getMsoDrawingRecord() != null) + outputFile.write((ByteData)curChart.getMsoDrawingRecord()); + if (curChart.getObjRecord() != null) + outputFile.write((ByteData)curChart.getObjRecord()); + outputFile.write(curChart); + } + return; + } + int numDrawings = this.drawings.size(); + int length = 0; + EscherContainer[] spContainers = new EscherContainer[numDrawings + this.charts.length]; + boolean[] isFormObject = new boolean[numDrawings + this.charts.length]; + int i; + for (i = 0; i < numDrawings; i++) { + DrawingGroupObject d = this.drawings.get(i); + spContainers[i] = d.getSpContainer(); + if (i > 0) + length += spContainers[i].getLength(); + if (d.isFormObject()) + isFormObject[i] = true; + } + for (i = 0; i < this.charts.length; i++) { + spContainers[i + numDrawings] = this.charts[i].getSpContainer(); + length += spContainers[i + numDrawings].getLength(); + } + DgContainer dgContainer = new DgContainer(); + Dg dg = new Dg(numDrawings + this.charts.length); + dgContainer.add(dg); + SpgrContainer spgrContainer = new SpgrContainer(); + SpContainer spContainer = new SpContainer(); + Spgr spgr = new Spgr(); + spContainer.add(spgr); + Sp sp = new Sp(ShapeType.MIN, 1024, 5); + spContainer.add(sp); + spgrContainer.add(spContainer); + spgrContainer.add(spContainers[0]); + dgContainer.add(spgrContainer); + byte[] firstMsoData = dgContainer.getData(); + int len = IntegerHelper.getInt(firstMsoData[4], firstMsoData[5], firstMsoData[6], firstMsoData[7]); + IntegerHelper.getFourBytes(len + length, firstMsoData, 4); + len = IntegerHelper.getInt(firstMsoData[28], firstMsoData[29], firstMsoData[30], firstMsoData[31]); + IntegerHelper.getFourBytes(len + length, firstMsoData, 28); + if (isFormObject[0] == true) { + byte[] cbytes = new byte[firstMsoData.length - 8]; + System.arraycopy(firstMsoData, 0, cbytes, 0, cbytes.length); + firstMsoData = cbytes; + } + MsoDrawingRecord msoDrawingRecord = new MsoDrawingRecord(firstMsoData); + outputFile.write((ByteData)msoDrawingRecord); + DrawingGroupObject dgo = this.drawings.get(0); + dgo.writeAdditionalRecords(outputFile); + for (int j = 1; j < spContainers.length; j++) { + byte[] bytes = spContainers[j].getBytes(); + byte[] bytes2 = spContainers[j].setHeaderData(bytes); + if (isFormObject[j] == true) { + byte[] cbytes = new byte[bytes2.length - 8]; + System.arraycopy(bytes2, 0, cbytes, 0, cbytes.length); + bytes2 = cbytes; + } + msoDrawingRecord = new MsoDrawingRecord(bytes2); + outputFile.write((ByteData)msoDrawingRecord); + if (j < numDrawings) { + dgo = this.drawings.get(j); + dgo.writeAdditionalRecords(outputFile); + } else { + Chart chart = this.charts[j - numDrawings]; + ObjRecord objRecord = chart.getObjRecord(); + outputFile.write((ByteData)objRecord); + outputFile.write(chart); + } + } + for (Iterator iterator = this.drawings.iterator(); iterator.hasNext(); ) { + DrawingGroupObject dgo2 = iterator.next(); + dgo2.writeTailRecords(outputFile); + } + } + + public void setCharts(Chart[] ch) { + this.charts = ch; + } + + public Chart[] getCharts() { + return this.charts; + } + + public SheetDrawingWriter(WorkbookSettings ws) {} +} diff --git a/hrmsEjb/jxl/biff/drawing/Sp.java b/hrmsEjb/jxl/biff/drawing/Sp.java new file mode 100644 index 0000000..4a67f16 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Sp.java @@ -0,0 +1,48 @@ +package jxl.biff.drawing; + +import common.Logger; +import jxl.biff.IntegerHelper; + +class Sp extends EscherAtom { + private static Logger logger = Logger.getLogger(Sp.class); + + private byte[] data; + + private int shapeType; + + private int shapeId; + + private int persistenceFlags; + + public Sp(EscherRecordData erd) { + super(erd); + this.shapeType = getInstance(); + byte[] bytes = getBytes(); + this.shapeId = IntegerHelper.getInt(bytes[0], bytes[1], bytes[2], bytes[3]); + this.persistenceFlags = IntegerHelper.getInt(bytes[4], bytes[5], bytes[6], bytes[7]); + } + + public Sp(ShapeType st, int sid, int p) { + super(EscherRecordType.SP); + setVersion(2); + this.shapeType = st.value; + this.shapeId = sid; + this.persistenceFlags = p; + setInstance(this.shapeType); + } + + int getShapeId() { + return this.shapeId; + } + + int getShapeType() { + return this.shapeType; + } + + byte[] getData() { + this.data = new byte[8]; + IntegerHelper.getFourBytes(this.shapeId, this.data, 0); + IntegerHelper.getFourBytes(this.persistenceFlags, this.data, 4); + return setHeaderData(this.data); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/SpContainer.java b/hrmsEjb/jxl/biff/drawing/SpContainer.java new file mode 100644 index 0000000..7cda6c0 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/SpContainer.java @@ -0,0 +1,11 @@ +package jxl.biff.drawing; + +class SpContainer extends EscherContainer { + public SpContainer() { + super(EscherRecordType.SP_CONTAINER); + } + + public SpContainer(EscherRecordData erd) { + super(erd); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/Spgr.java b/hrmsEjb/jxl/biff/drawing/Spgr.java new file mode 100644 index 0000000..9f5ff72 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/Spgr.java @@ -0,0 +1,19 @@ +package jxl.biff.drawing; + +class Spgr extends EscherAtom { + private byte[] data; + + public Spgr(EscherRecordData erd) { + super(erd); + } + + public Spgr() { + super(EscherRecordType.SPGR); + setVersion(1); + this.data = new byte[16]; + } + + byte[] getData() { + return setHeaderData(this.data); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/SpgrContainer.java b/hrmsEjb/jxl/biff/drawing/SpgrContainer.java new file mode 100644 index 0000000..23d0d04 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/SpgrContainer.java @@ -0,0 +1,15 @@ +package jxl.biff.drawing; + +import common.Logger; + +class SpgrContainer extends EscherContainer { + private static final Logger logger = Logger.getLogger(SpgrContainer.class); + + public SpgrContainer() { + super(EscherRecordType.SPGR_CONTAINER); + } + + public SpgrContainer(EscherRecordData erd) { + super(erd); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/SplitMenuColors.java b/hrmsEjb/jxl/biff/drawing/SplitMenuColors.java new file mode 100644 index 0000000..9bad1e7 --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/SplitMenuColors.java @@ -0,0 +1,22 @@ +package jxl.biff.drawing; + +class SplitMenuColors extends EscherAtom { + private byte[] data; + + public SplitMenuColors(EscherRecordData erd) { + super(erd); + } + + public SplitMenuColors() { + super(EscherRecordType.SPLIT_MENU_COLORS); + setVersion(0); + setInstance(4); + this.data = new byte[] { + 13, 0, 0, 8, 12, 0, 0, 8, 23, 0, + 0, 8, -9, 0, 0, 16 }; + } + + byte[] getData() { + return setHeaderData(this.data); + } +} diff --git a/hrmsEjb/jxl/biff/drawing/TextObjectRecord.java b/hrmsEjb/jxl/biff/drawing/TextObjectRecord.java new file mode 100644 index 0000000..56722de --- /dev/null +++ b/hrmsEjb/jxl/biff/drawing/TextObjectRecord.java @@ -0,0 +1,45 @@ +package jxl.biff.drawing; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.read.biff.Record; + +public class TextObjectRecord extends WritableRecordData { + private static Logger logger = Logger.getLogger(TextObjectRecord.class); + + private byte[] data; + + private int textLength; + + TextObjectRecord(String t) { + super(Type.TXO); + this.textLength = t.length(); + } + + public TextObjectRecord(Record t) { + super(t); + this.data = getRecord().getData(); + this.textLength = IntegerHelper.getInt(this.data[10], this.data[11]); + } + + public TextObjectRecord(byte[] d) { + super(Type.TXO); + this.data = d; + } + + public byte[] getData() { + if (this.data != null) + return this.data; + this.data = new byte[18]; + int options = 0; + options |= 0x2; + options |= 0x10; + options |= 0x200; + IntegerHelper.getTwoBytes(options, this.data, 0); + IntegerHelper.getTwoBytes(this.textLength, this.data, 10); + IntegerHelper.getTwoBytes(16, this.data, 12); + return this.data; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Add.java b/hrmsEjb/jxl/biff/formula/Add.java new file mode 100644 index 0000000..3d48cea --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Add.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class Add extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "+"; + } + + Token getToken() { + return Token.ADD; + } + + int getPrecedence() { + return 4; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Area.java b/hrmsEjb/jxl/biff/formula/Area.java new file mode 100644 index 0000000..a6a914b --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Area.java @@ -0,0 +1,161 @@ +package jxl.biff.formula; + +import common.Assert; +import common.Logger; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IntegerHelper; + +class Area extends Operand implements ParsedThing { + private static Logger logger = Logger.getLogger(Area.class); + + private int columnFirst; + + private int rowFirst; + + private int columnLast; + + private int rowLast; + + private boolean columnFirstRelative; + + private boolean rowFirstRelative; + + private boolean columnLastRelative; + + private boolean rowLastRelative; + + Area() {} + + Area(String s) { + int seppos = s.indexOf(":"); + Assert.verify((seppos != -1)); + String startcell = s.substring(0, seppos); + String endcell = s.substring(seppos + 1); + this.columnFirst = CellReferenceHelper.getColumn(startcell); + this.rowFirst = CellReferenceHelper.getRow(startcell); + this.columnLast = CellReferenceHelper.getColumn(endcell); + this.rowLast = CellReferenceHelper.getRow(endcell); + this.columnFirstRelative = CellReferenceHelper.isColumnRelative(startcell); + this.rowFirstRelative = CellReferenceHelper.isRowRelative(startcell); + this.columnLastRelative = CellReferenceHelper.isColumnRelative(endcell); + this.rowLastRelative = CellReferenceHelper.isRowRelative(endcell); + } + + int getFirstColumn() { + return this.columnFirst; + } + + int getFirstRow() { + return this.rowFirst; + } + + int getLastColumn() { + return this.columnLast; + } + + int getLastRow() { + return this.rowLast; + } + + public int read(byte[] data, int pos) { + this.rowFirst = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.rowLast = IntegerHelper.getInt(data[pos + 2], data[pos + 3]); + int columnMask = IntegerHelper.getInt(data[pos + 4], data[pos + 5]); + this.columnFirst = columnMask & 0xFF; + this.columnFirstRelative = ((columnMask & 0x4000) != 0); + this.rowFirstRelative = ((columnMask & 0x8000) != 0); + columnMask = IntegerHelper.getInt(data[pos + 6], data[pos + 7]); + this.columnLast = columnMask & 0xFF; + this.columnLastRelative = ((columnMask & 0x4000) != 0); + this.rowLastRelative = ((columnMask & 0x8000) != 0); + return 8; + } + + public void getString(StringBuffer buf) { + CellReferenceHelper.getCellReference(this.columnFirst, this.rowFirst, buf); + buf.append(':'); + CellReferenceHelper.getCellReference(this.columnLast, this.rowLast, buf); + } + + byte[] getBytes() { + byte[] data = new byte[9]; + data[0] = !useAlternateCode() ? Token.AREA.getCode() : Token.AREA.getCode2(); + IntegerHelper.getTwoBytes(this.rowFirst, data, 1); + IntegerHelper.getTwoBytes(this.rowLast, data, 3); + int grcol = this.columnFirst; + if (this.rowFirstRelative) + grcol |= 0x8000; + if (this.columnFirstRelative) + grcol |= 0x4000; + IntegerHelper.getTwoBytes(grcol, data, 5); + grcol = this.columnLast; + if (this.rowLastRelative) + grcol |= 0x8000; + if (this.columnLastRelative) + grcol |= 0x4000; + IntegerHelper.getTwoBytes(grcol, data, 7); + return data; + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + if (this.columnFirstRelative) + this.columnFirst += colAdjust; + if (this.columnLastRelative) + this.columnLast += colAdjust; + if (this.rowFirstRelative) + this.rowFirst += rowAdjust; + if (this.rowLastRelative) + this.rowLast += rowAdjust; + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + if (!currentSheet) + return; + if (col <= this.columnFirst) + this.columnFirst++; + if (col <= this.columnLast) + this.columnLast++; + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + if (!currentSheet) + return; + if (col < this.columnFirst) + this.columnFirst--; + if (col <= this.columnLast) + this.columnLast--; + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + if (!currentSheet) + return; + if (this.rowLast == 65535) + return; + if (row <= this.rowFirst) + this.rowFirst++; + if (row <= this.rowLast) + this.rowLast++; + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + if (!currentSheet) + return; + if (this.rowLast == 65535) + return; + if (row < this.rowFirst) + this.rowFirst--; + if (row <= this.rowLast) + this.rowLast--; + } + + protected void setRangeData(int colFirst, int colLast, int rwFirst, int rwLast, boolean colFirstRel, boolean colLastRel, boolean rowFirstRel, boolean rowLastRel) { + this.columnFirst = colFirst; + this.columnLast = colLast; + this.rowFirst = rwFirst; + this.rowLast = rwLast; + this.columnFirstRelative = colFirstRel; + this.columnLastRelative = colLastRel; + this.rowFirstRelative = rowFirstRel; + this.rowLastRelative = rowLastRel; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Area3d.java b/hrmsEjb/jxl/biff/formula/Area3d.java new file mode 100644 index 0000000..409097e --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Area3d.java @@ -0,0 +1,178 @@ +package jxl.biff.formula; + +import common.Assert; +import common.Logger; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IntegerHelper; + +class Area3d extends Operand implements ParsedThing { + private static Logger logger = Logger.getLogger(Area3d.class); + + private int sheet; + + private int columnFirst; + + private int rowFirst; + + private int columnLast; + + private int rowLast; + + private boolean columnFirstRelative; + + private boolean rowFirstRelative; + + private boolean columnLastRelative; + + private boolean rowLastRelative; + + private ExternalSheet workbook; + + Area3d(ExternalSheet es) { + this.workbook = es; + } + + Area3d(String s, ExternalSheet es) throws FormulaException { + this.workbook = es; + int seppos = s.lastIndexOf(":"); + Assert.verify((seppos != -1)); + String endcell = s.substring(seppos + 1); + int sep = s.indexOf('!'); + String cellString = s.substring(sep + 1, seppos); + this.columnFirst = CellReferenceHelper.getColumn(cellString); + this.rowFirst = CellReferenceHelper.getRow(cellString); + String sheetName = s.substring(0, sep); + if (sheetName.charAt(0) == '\'' && sheetName.charAt(sheetName.length() - 1) == '\'') + sheetName = sheetName.substring(1, sheetName.length() - 1); + this.sheet = es.getExternalSheetIndex(sheetName); + if (this.sheet < 0) + throw new FormulaException(FormulaException.sheetRefNotFound, sheetName); + this.columnLast = CellReferenceHelper.getColumn(endcell); + this.rowLast = CellReferenceHelper.getRow(endcell); + this.columnFirstRelative = true; + this.rowFirstRelative = true; + this.columnLastRelative = true; + this.rowLastRelative = true; + } + + int getFirstColumn() { + return this.columnFirst; + } + + int getFirstRow() { + return this.rowFirst; + } + + int getLastColumn() { + return this.columnLast; + } + + int getLastRow() { + return this.rowLast; + } + + public int read(byte[] data, int pos) { + this.sheet = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.rowFirst = IntegerHelper.getInt(data[pos + 2], data[pos + 3]); + this.rowLast = IntegerHelper.getInt(data[pos + 4], data[pos + 5]); + int columnMask = IntegerHelper.getInt(data[pos + 6], data[pos + 7]); + this.columnFirst = columnMask & 0xFF; + this.columnFirstRelative = ((columnMask & 0x4000) != 0); + this.rowFirstRelative = ((columnMask & 0x8000) != 0); + columnMask = IntegerHelper.getInt(data[pos + 8], data[pos + 9]); + this.columnLast = columnMask & 0xFF; + this.columnLastRelative = ((columnMask & 0x4000) != 0); + this.rowLastRelative = ((columnMask & 0x8000) != 0); + return 10; + } + + public void getString(StringBuffer buf) { + CellReferenceHelper.getCellReference(this.sheet, this.columnFirst, this.rowFirst, this.workbook, buf); + buf.append(':'); + CellReferenceHelper.getCellReference(this.columnLast, this.rowLast, buf); + } + + byte[] getBytes() { + byte[] data = new byte[11]; + data[0] = Token.AREA3D.getCode(); + IntegerHelper.getTwoBytes(this.sheet, data, 1); + IntegerHelper.getTwoBytes(this.rowFirst, data, 3); + IntegerHelper.getTwoBytes(this.rowLast, data, 5); + int grcol = this.columnFirst; + if (this.rowFirstRelative) + grcol |= 0x8000; + if (this.columnFirstRelative) + grcol |= 0x4000; + IntegerHelper.getTwoBytes(grcol, data, 7); + grcol = this.columnLast; + if (this.rowLastRelative) + grcol |= 0x8000; + if (this.columnLastRelative) + grcol |= 0x4000; + IntegerHelper.getTwoBytes(grcol, data, 9); + return data; + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + if (this.columnFirstRelative) + this.columnFirst += colAdjust; + if (this.columnLastRelative) + this.columnLast += colAdjust; + if (this.rowFirstRelative) + this.rowFirst += rowAdjust; + if (this.rowLastRelative) + this.rowLast += rowAdjust; + } + + public void columnInserted(int sheetIndex, int col, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (this.columnFirst >= col) + this.columnFirst++; + if (this.columnLast >= col) + this.columnLast++; + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (col < this.columnFirst) + this.columnFirst--; + if (col <= this.columnLast) + this.columnLast--; + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (this.rowLast == 65535) + return; + if (row <= this.rowFirst) + this.rowFirst++; + if (row <= this.rowLast) + this.rowLast++; + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (this.rowLast == 65535) + return; + if (row < this.rowFirst) + this.rowFirst--; + if (row <= this.rowLast) + this.rowLast--; + } + + protected void setRangeData(int sht, int colFirst, int colLast, int rwFirst, int rwLast, boolean colFirstRel, boolean colLastRel, boolean rowFirstRel, boolean rowLastRel) { + this.sheet = sht; + this.columnFirst = colFirst; + this.columnLast = colLast; + this.rowFirst = rwFirst; + this.rowLast = rwLast; + this.columnFirstRelative = colFirstRel; + this.columnLastRelative = colLastRel; + this.rowFirstRelative = rowFirstRel; + this.rowLastRelative = rowLastRel; + } +} diff --git a/hrmsEjb/jxl/biff/formula/ArgumentSeparator.java b/hrmsEjb/jxl/biff/formula/ArgumentSeparator.java new file mode 100644 index 0000000..a431a6c --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/ArgumentSeparator.java @@ -0,0 +1,3 @@ +package jxl.biff.formula; + +class ArgumentSeparator extends StringParseItem {} diff --git a/hrmsEjb/jxl/biff/formula/Attribute.java b/hrmsEjb/jxl/biff/formula/Attribute.java new file mode 100644 index 0000000..c2cbef7 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Attribute.java @@ -0,0 +1,230 @@ +package jxl.biff.formula; + +import common.Logger; +import java.util.Stack; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; + +class Attribute extends Operator implements ParsedThing { + private static Logger logger = Logger.getLogger(Attribute.class); + + private int options; + + private int word; + + private WorkbookSettings settings; + + private static final int sumMask = 16; + + private static final int ifMask = 2; + + private static final int gotoMask = 8; + + private VariableArgFunction ifConditions; + + public Attribute(WorkbookSettings ws) { + this.settings = ws; + } + + public Attribute(StringFunction sf, WorkbookSettings ws) { + this.settings = ws; + if (sf.getFunction(this.settings) == Function.SUM) { + this.options |= 0x10; + } else if (sf.getFunction(this.settings) == Function.IF) { + this.options |= 0x2; + } + } + + void setIfConditions(VariableArgFunction vaf) { + this.ifConditions = vaf; + this.options |= 0x2; + } + + public int read(byte[] data, int pos) { + this.options = data[pos]; + this.word = IntegerHelper.getInt(data[pos + 1], data[pos + 2]); + return 3; + } + + public boolean isFunction() { + return ((this.options & 0x12) != 0); + } + + public boolean isSum() { + return ((this.options & 0x10) != 0); + } + + public boolean isIf() { + return ((this.options & 0x2) != 0); + } + + public boolean isGoto() { + return ((this.options & 0x8) != 0); + } + + public void getOperands(Stack s) { + if ((this.options & 0x10) != 0) { + ParseItem o1 = s.pop(); + add(o1); + } else if ((this.options & 0x2) != 0) { + ParseItem o1 = s.pop(); + add(o1); + } + } + + public void getString(StringBuffer buf) { + if ((this.options & 0x10) != 0) { + ParseItem[] operands = getOperands(); + buf.append(Function.SUM.getName(this.settings)); + buf.append('('); + operands[0].getString(buf); + buf.append(')'); + } else if ((this.options & 0x2) != 0) { + buf.append(Function.IF.getName(this.settings)); + buf.append('('); + ParseItem[] operands = this.ifConditions.getOperands(); + for (int i = 0; i < operands.length - 1; i++) { + operands[i].getString(buf); + buf.append(','); + } + operands[operands.length - 1].getString(buf); + buf.append(')'); + } + } + + byte[] getBytes() { + byte[] data = new byte[0]; + if (isSum()) { + ParseItem[] operands = getOperands(); + for (int i = operands.length - 1; i >= 0; i--) { + byte[] opdata = operands[i].getBytes(); + byte[] arrayOfByte1 = new byte[data.length + opdata.length]; + System.arraycopy(data, 0, arrayOfByte1, 0, data.length); + System.arraycopy(opdata, 0, arrayOfByte1, data.length, opdata.length); + data = arrayOfByte1; + } + byte[] newdata = new byte[data.length + 4]; + System.arraycopy(data, 0, newdata, 0, data.length); + newdata[data.length] = Token.ATTRIBUTE.getCode(); + newdata[data.length + 1] = 16; + data = newdata; + } else if (isIf()) { + return getIf(); + } + return data; + } + + private byte[] getIf() { + ParseItem[] operands = this.ifConditions.getOperands(); + int falseOffsetPos = 0; + int gotoEndPos = 0; + int numArgs = operands.length; + byte[] data = operands[0].getBytes(); + int pos = data.length; + byte[] newdata = new byte[data.length + 4]; + System.arraycopy(data, 0, newdata, 0, data.length); + data = newdata; + data[pos] = Token.ATTRIBUTE.getCode(); + data[pos + 1] = 2; + falseOffsetPos = pos + 2; + byte[] truedata = operands[1].getBytes(); + newdata = new byte[data.length + truedata.length]; + System.arraycopy(data, 0, newdata, 0, data.length); + System.arraycopy(truedata, 0, newdata, data.length, truedata.length); + data = newdata; + pos = data.length; + newdata = new byte[data.length + 4]; + System.arraycopy(data, 0, newdata, 0, data.length); + data = newdata; + data[pos] = Token.ATTRIBUTE.getCode(); + data[pos + 1] = 8; + gotoEndPos = pos + 2; + if (numArgs > 2) { + IntegerHelper.getTwoBytes(data.length - falseOffsetPos - 2, data, falseOffsetPos); + byte[] falsedata = operands[numArgs - 1].getBytes(); + newdata = new byte[data.length + falsedata.length]; + System.arraycopy(data, 0, newdata, 0, data.length); + System.arraycopy(falsedata, 0, newdata, data.length, falsedata.length); + data = newdata; + pos = data.length; + newdata = new byte[data.length + 4]; + System.arraycopy(data, 0, newdata, 0, data.length); + data = newdata; + data[pos] = Token.ATTRIBUTE.getCode(); + data[pos + 1] = 8; + data[pos + 2] = 3; + } + pos = data.length; + newdata = new byte[data.length + 4]; + System.arraycopy(data, 0, newdata, 0, data.length); + data = newdata; + data[pos] = Token.FUNCTIONVARARG.getCode(); + data[pos + 1] = (byte)numArgs; + data[pos + 2] = 1; + data[pos + 3] = 0; + int endPos = data.length - 1; + if (numArgs < 3) + IntegerHelper.getTwoBytes(endPos - falseOffsetPos - 5, data, falseOffsetPos); + IntegerHelper.getTwoBytes(endPos - gotoEndPos - 2, data, gotoEndPos); + return data; + } + + int getPrecedence() { + return 3; + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + ParseItem[] operands = null; + if (isIf()) { + operands = this.ifConditions.getOperands(); + } else { + operands = getOperands(); + } + for (int i = 0; i < operands.length; i++) + operands[i].adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = null; + if (isIf()) { + operands = this.ifConditions.getOperands(); + } else { + operands = getOperands(); + } + for (int i = 0; i < operands.length; i++) + operands[i].columnInserted(sheetIndex, col, currentSheet); + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = null; + if (isIf()) { + operands = this.ifConditions.getOperands(); + } else { + operands = getOperands(); + } + for (int i = 0; i < operands.length; i++) + operands[i].columnRemoved(sheetIndex, col, currentSheet); + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = null; + if (isIf()) { + operands = this.ifConditions.getOperands(); + } else { + operands = getOperands(); + } + for (int i = 0; i < operands.length; i++) + operands[i].rowInserted(sheetIndex, row, currentSheet); + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = null; + if (isIf()) { + operands = this.ifConditions.getOperands(); + } else { + operands = getOperands(); + } + for (int i = 0; i < operands.length; i++) + operands[i].rowRemoved(sheetIndex, row, currentSheet); + } +} diff --git a/hrmsEjb/jxl/biff/formula/BinaryOperator.java b/hrmsEjb/jxl/biff/formula/BinaryOperator.java new file mode 100644 index 0000000..7b5f8b6 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/BinaryOperator.java @@ -0,0 +1,73 @@ +package jxl.biff.formula; + +import java.util.Stack; + +abstract class BinaryOperator extends Operator implements ParsedThing { + public int read(byte[] data, int pos) { + return 0; + } + + public void getOperands(Stack s) { + ParseItem o1 = s.pop(); + ParseItem o2 = s.pop(); + add(o1); + add(o2); + } + + public void getString(StringBuffer buf) { + ParseItem[] operands = getOperands(); + operands[1].getString(buf); + buf.append(getSymbol()); + operands[0].getString(buf); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + ParseItem[] operands = getOperands(); + operands[1].adjustRelativeCellReferences(colAdjust, rowAdjust); + operands[0].adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[1].columnInserted(sheetIndex, col, currentSheet); + operands[0].columnInserted(sheetIndex, col, currentSheet); + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[1].columnRemoved(sheetIndex, col, currentSheet); + operands[0].columnRemoved(sheetIndex, col, currentSheet); + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[1].rowInserted(sheetIndex, row, currentSheet); + operands[0].rowInserted(sheetIndex, row, currentSheet); + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[1].rowRemoved(sheetIndex, row, currentSheet); + operands[0].rowRemoved(sheetIndex, row, currentSheet); + } + + byte[] getBytes() { + ParseItem[] operands = getOperands(); + byte[] data = new byte[0]; + for (int i = operands.length - 1; i >= 0; i--) { + byte[] opdata = operands[i].getBytes(); + byte[] arrayOfByte1 = new byte[data.length + opdata.length]; + System.arraycopy(data, 0, arrayOfByte1, 0, data.length); + System.arraycopy(opdata, 0, arrayOfByte1, data.length, opdata.length); + data = arrayOfByte1; + } + byte[] newdata = new byte[data.length + 1]; + System.arraycopy(data, 0, newdata, 0, data.length); + newdata[data.length] = getToken().getCode(); + return newdata; + } + + abstract String getSymbol(); + + abstract Token getToken(); +} diff --git a/hrmsEjb/jxl/biff/formula/BooleanValue.java b/hrmsEjb/jxl/biff/formula/BooleanValue.java new file mode 100644 index 0000000..504c559 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/BooleanValue.java @@ -0,0 +1,27 @@ +package jxl.biff.formula; + +class BooleanValue extends Operand implements ParsedThing { + private boolean value; + + public BooleanValue() {} + + public BooleanValue(String s) { + this.value = Boolean.valueOf(s).booleanValue(); + } + + public int read(byte[] data, int pos) { + this.value = (data[pos] == 1); + return 1; + } + + byte[] getBytes() { + byte[] data = new byte[2]; + data[0] = Token.BOOL.getCode(); + data[1] = (byte)((this.value == true) ? 1 : 0); + return data; + } + + public void getString(StringBuffer buf) { + buf.append((new Boolean(this.value)).toString()); + } +} diff --git a/hrmsEjb/jxl/biff/formula/BuiltInFunction.java b/hrmsEjb/jxl/biff/formula/BuiltInFunction.java new file mode 100644 index 0000000..c282336 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/BuiltInFunction.java @@ -0,0 +1,108 @@ +package jxl.biff.formula; + +import common.Assert; +import common.Logger; +import java.util.Stack; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; + +class BuiltInFunction extends Operator implements ParsedThing { + private static Logger logger = Logger.getLogger(BuiltInFunction.class); + + private Function function; + + private WorkbookSettings settings; + + public BuiltInFunction(WorkbookSettings ws) { + this.settings = ws; + } + + public BuiltInFunction(Function f, WorkbookSettings ws) { + this.function = f; + this.settings = ws; + } + + public int read(byte[] data, int pos) { + int index = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.function = Function.getFunction(index); + Assert.verify((this.function != Function.UNKNOWN), "function code " + index); + return 2; + } + + public void getOperands(Stack s) { + ParseItem[] items = new ParseItem[this.function.getNumArgs()]; + int i; + for (i = this.function.getNumArgs() - 1; i >= 0; i--) { + ParseItem pi = s.pop(); + items[i] = pi; + } + for (i = 0; i < this.function.getNumArgs(); i++) + add(items[i]); + } + + public void getString(StringBuffer buf) { + buf.append(this.function.getName(this.settings)); + buf.append('('); + int numArgs = this.function.getNumArgs(); + if (numArgs > 0) { + ParseItem[] operands = getOperands(); + operands[0].getString(buf); + for (int i = 1; i < numArgs; i++) { + buf.append(','); + operands[i].getString(buf); + } + } + buf.append(')'); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].columnInserted(sheetIndex, col, currentSheet); + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].columnRemoved(sheetIndex, col, currentSheet); + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].rowInserted(sheetIndex, row, currentSheet); + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].rowRemoved(sheetIndex, row, currentSheet); + } + + byte[] getBytes() { + ParseItem[] operands = getOperands(); + byte[] data = new byte[0]; + for (int i = 0; i < operands.length; i++) { + byte[] opdata = operands[i].getBytes(); + byte[] arrayOfByte1 = new byte[data.length + opdata.length]; + System.arraycopy(data, 0, arrayOfByte1, 0, data.length); + System.arraycopy(opdata, 0, arrayOfByte1, data.length, opdata.length); + data = arrayOfByte1; + } + byte[] newdata = new byte[data.length + 3]; + System.arraycopy(data, 0, newdata, 0, data.length); + newdata[data.length] = !useAlternateCode() ? Token.FUNCTION.getCode() : Token.FUNCTION.getCode2(); + IntegerHelper.getTwoBytes(this.function.getCode(), newdata, data.length + 1); + return newdata; + } + + int getPrecedence() { + return 3; + } +} diff --git a/hrmsEjb/jxl/biff/formula/CellReference.java b/hrmsEjb/jxl/biff/formula/CellReference.java new file mode 100644 index 0000000..6f3e590 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/CellReference.java @@ -0,0 +1,102 @@ +package jxl.biff.formula; + +import common.Logger; +import jxl.Cell; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IntegerHelper; + +class CellReference extends Operand implements ParsedThing { + private static Logger logger = Logger.getLogger(CellReference.class); + + private boolean columnRelative; + + private boolean rowRelative; + + private int column; + + private int row; + + private Cell relativeTo; + + public CellReference(Cell rt) { + this.relativeTo = rt; + } + + public CellReference() {} + + public CellReference(String s) { + this.column = CellReferenceHelper.getColumn(s); + this.row = CellReferenceHelper.getRow(s); + this.columnRelative = CellReferenceHelper.isColumnRelative(s); + this.rowRelative = CellReferenceHelper.isRowRelative(s); + } + + public int read(byte[] data, int pos) { + this.row = IntegerHelper.getInt(data[pos], data[pos + 1]); + int columnMask = IntegerHelper.getInt(data[pos + 2], data[pos + 3]); + this.column = columnMask & 0xFF; + this.columnRelative = ((columnMask & 0x4000) != 0); + this.rowRelative = ((columnMask & 0x8000) != 0); + return 4; + } + + public int getColumn() { + return this.column; + } + + public int getRow() { + return this.row; + } + + public void getString(StringBuffer buf) { + CellReferenceHelper.getCellReference(this.column, !this.columnRelative, this.row, !this.rowRelative, buf); + } + + byte[] getBytes() { + byte[] data = new byte[5]; + data[0] = !useAlternateCode() ? Token.REF.getCode() : Token.REF.getCode2(); + IntegerHelper.getTwoBytes(this.row, data, 1); + int grcol = this.column; + if (this.rowRelative) + grcol |= 0x8000; + if (this.columnRelative) + grcol |= 0x4000; + IntegerHelper.getTwoBytes(grcol, data, 3); + return data; + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + if (this.columnRelative) + this.column += colAdjust; + if (this.rowRelative) + this.row += rowAdjust; + } + + public void columnInserted(int sheetIndex, int col, boolean currentSheet) { + if (!currentSheet) + return; + if (this.column >= col) + this.column++; + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + if (!currentSheet) + return; + if (this.column >= col) + this.column--; + } + + void rowInserted(int sheetIndex, int r, boolean currentSheet) { + if (!currentSheet) + return; + if (this.row >= r) + this.row++; + } + + void rowRemoved(int sheetIndex, int r, boolean currentSheet) { + if (!currentSheet) + return; + if (this.row >= r) + this.row--; + } +} diff --git a/hrmsEjb/jxl/biff/formula/CellReference3d.java b/hrmsEjb/jxl/biff/formula/CellReference3d.java new file mode 100644 index 0000000..fd37cea --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/CellReference3d.java @@ -0,0 +1,116 @@ +package jxl.biff.formula; + +import common.Logger; +import jxl.Cell; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IntegerHelper; + +class CellReference3d extends Operand implements ParsedThing { + private static Logger logger = Logger.getLogger(CellReference3d.class); + + private boolean columnRelative; + + private boolean rowRelative; + + private int column; + + private int row; + + private Cell relativeTo; + + private int sheet; + + private ExternalSheet workbook; + + public CellReference3d(Cell rt, ExternalSheet w) { + this.relativeTo = rt; + this.workbook = w; + } + + public CellReference3d(String s, ExternalSheet w) throws FormulaException { + this.workbook = w; + this.columnRelative = true; + this.rowRelative = true; + int sep = s.indexOf('!'); + String cellString = s.substring(sep + 1); + this.column = CellReferenceHelper.getColumn(cellString); + this.row = CellReferenceHelper.getRow(cellString); + String sheetName = s.substring(0, sep); + if (sheetName.charAt(0) == '\'' && sheetName.charAt(sheetName.length() - 1) == '\'') + sheetName = sheetName.substring(1, sheetName.length() - 1); + this.sheet = w.getExternalSheetIndex(sheetName); + if (this.sheet < 0) + throw new FormulaException(FormulaException.sheetRefNotFound, sheetName); + } + + public int read(byte[] data, int pos) { + this.sheet = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.row = IntegerHelper.getInt(data[pos + 2], data[pos + 3]); + int columnMask = IntegerHelper.getInt(data[pos + 4], data[pos + 5]); + this.column = columnMask & 0xFF; + this.columnRelative = ((columnMask & 0x4000) != 0); + this.rowRelative = ((columnMask & 0x8000) != 0); + return 6; + } + + public int getColumn() { + return this.column; + } + + public int getRow() { + return this.row; + } + + public void getString(StringBuffer buf) { + CellReferenceHelper.getCellReference(this.sheet, this.column, !this.columnRelative, this.row, !this.rowRelative, this.workbook, buf); + } + + byte[] getBytes() { + byte[] data = new byte[7]; + data[0] = Token.REF3D.getCode(); + IntegerHelper.getTwoBytes(this.sheet, data, 1); + IntegerHelper.getTwoBytes(this.row, data, 3); + int grcol = this.column; + if (this.rowRelative) + grcol |= 0x8000; + if (this.columnRelative) + grcol |= 0x4000; + IntegerHelper.getTwoBytes(grcol, data, 5); + return data; + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + if (this.columnRelative) + this.column += colAdjust; + if (this.rowRelative) + this.row += rowAdjust; + } + + public void columnInserted(int sheetIndex, int col, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (this.column >= col) + this.column++; + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (this.column >= col) + this.column--; + } + + void rowInserted(int sheetIndex, int r, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (this.row >= r) + this.row++; + } + + void rowRemoved(int sheetIndex, int r, boolean currentSheet) { + if (sheetIndex != this.sheet) + return; + if (this.row >= r) + this.row--; + } +} diff --git a/hrmsEjb/jxl/biff/formula/CellReferenceError.java b/hrmsEjb/jxl/biff/formula/CellReferenceError.java new file mode 100644 index 0000000..b525594 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/CellReferenceError.java @@ -0,0 +1,21 @@ +package jxl.biff.formula; + +import common.Logger; + +class CellReferenceError extends Operand implements ParsedThing { + private static Logger logger = Logger.getLogger(CellReferenceError.class); + + public int read(byte[] data, int pos) { + return 4; + } + + public void getString(StringBuffer buf) { + buf.append(FormulaErrorCode.REF.getDescription()); + } + + byte[] getBytes() { + byte[] data = new byte[5]; + data[0] = Token.REFERR.getCode(); + return data; + } +} diff --git a/hrmsEjb/jxl/biff/formula/CloseParentheses.java b/hrmsEjb/jxl/biff/formula/CloseParentheses.java new file mode 100644 index 0000000..a3fac5f --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/CloseParentheses.java @@ -0,0 +1,3 @@ +package jxl.biff.formula; + +class CloseParentheses extends StringParseItem {} diff --git a/hrmsEjb/jxl/biff/formula/ColumnRange.java b/hrmsEjb/jxl/biff/formula/ColumnRange.java new file mode 100644 index 0000000..64569cf --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/ColumnRange.java @@ -0,0 +1,33 @@ +package jxl.biff.formula; + +import common.Assert; +import common.Logger; +import jxl.biff.CellReferenceHelper; + +class ColumnRange extends Area { + private static Logger logger = Logger.getLogger(ColumnRange.class); + + ColumnRange() {} + + ColumnRange(String s) { + int seppos = s.indexOf(":"); + Assert.verify((seppos != -1)); + String startcell = s.substring(0, seppos); + String endcell = s.substring(seppos + 1); + int columnFirst = CellReferenceHelper.getColumn(startcell); + int rowFirst = 0; + int columnLast = CellReferenceHelper.getColumn(endcell); + int rowLast = 65535; + boolean columnFirstRelative = CellReferenceHelper.isColumnRelative(startcell); + boolean rowFirstRelative = false; + boolean columnLastRelative = CellReferenceHelper.isColumnRelative(endcell); + boolean rowLastRelative = false; + setRangeData(columnFirst, columnLast, rowFirst, rowLast, columnFirstRelative, columnLastRelative, rowFirstRelative, rowLastRelative); + } + + public void getString(StringBuffer buf) { + CellReferenceHelper.getColumnReference(getFirstColumn(), buf); + buf.append(':'); + CellReferenceHelper.getColumnReference(getLastColumn(), buf); + } +} diff --git a/hrmsEjb/jxl/biff/formula/ColumnRange3d.java b/hrmsEjb/jxl/biff/formula/ColumnRange3d.java new file mode 100644 index 0000000..d04a510 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/ColumnRange3d.java @@ -0,0 +1,55 @@ +package jxl.biff.formula; + +import common.Assert; +import common.Logger; +import jxl.biff.CellReferenceHelper; + +class ColumnRange3d extends Area3d { + private static Logger logger = Logger.getLogger(ColumnRange3d.class); + + private ExternalSheet workbook; + + private int sheet; + + ColumnRange3d(ExternalSheet es) { + super(es); + this.workbook = es; + } + + ColumnRange3d(String s, ExternalSheet es) throws FormulaException { + super(es); + this.workbook = es; + int seppos = s.lastIndexOf(":"); + Assert.verify((seppos != -1)); + String startcell = s.substring(0, seppos); + String endcell = s.substring(seppos + 1); + int sep = s.indexOf('!'); + String cellString = s.substring(sep + 1, seppos); + int columnFirst = CellReferenceHelper.getColumn(cellString); + int rowFirst = 0; + String sheetName = s.substring(0, sep); + int sheetNamePos = sheetName.lastIndexOf(']'); + if (sheetName.charAt(0) == '\'' && sheetName.charAt(sheetName.length() - 1) == '\'') + sheetName = sheetName.substring(1, sheetName.length() - 1); + this.sheet = es.getExternalSheetIndex(sheetName); + if (this.sheet < 0) + throw new FormulaException(FormulaException.sheetRefNotFound, sheetName); + int columnLast = CellReferenceHelper.getColumn(endcell); + int rowLast = 65535; + boolean columnFirstRelative = true; + boolean rowFirstRelative = true; + boolean columnLastRelative = true; + boolean rowLastRelative = true; + setRangeData(this.sheet, columnFirst, columnLast, rowFirst, rowLast, columnFirstRelative, rowFirstRelative, columnLastRelative, rowLastRelative); + } + + public void getString(StringBuffer buf) { + buf.append('\''); + buf.append(this.workbook.getExternalSheetName(this.sheet)); + buf.append('\''); + buf.append('!'); + CellReferenceHelper.getColumnReference(getFirstColumn(), buf); + buf.append(':'); + CellReferenceHelper.getColumnReference(getLastColumn(), buf); + } +} diff --git a/hrmsEjb/jxl/biff/formula/Concatenate.java b/hrmsEjb/jxl/biff/formula/Concatenate.java new file mode 100644 index 0000000..88b373d --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Concatenate.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class Concatenate extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "&"; + } + + Token getToken() { + return Token.CONCAT; + } + + int getPrecedence() { + return 3; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Divide.java b/hrmsEjb/jxl/biff/formula/Divide.java new file mode 100644 index 0000000..9734377 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Divide.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class Divide extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "/"; + } + + Token getToken() { + return Token.DIVIDE; + } + + int getPrecedence() { + return 3; + } +} diff --git a/hrmsEjb/jxl/biff/formula/DoubleValue.java b/hrmsEjb/jxl/biff/formula/DoubleValue.java new file mode 100644 index 0000000..01f5596 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/DoubleValue.java @@ -0,0 +1,41 @@ +package jxl.biff.formula; + +import common.Logger; +import jxl.biff.DoubleHelper; + +class DoubleValue extends NumberValue implements ParsedThing { + private static Logger logger = Logger.getLogger(DoubleValue.class); + + private double value; + + public DoubleValue() {} + + DoubleValue(double v) { + this.value = v; + } + + public DoubleValue(String s) { + try { + this.value = Double.parseDouble(s); + } catch (NumberFormatException e) { + logger.warn(e, e); + this.value = 0.0D; + } + } + + public int read(byte[] data, int pos) { + this.value = DoubleHelper.getIEEEDouble(data, pos); + return 8; + } + + byte[] getBytes() { + byte[] data = new byte[9]; + data[0] = Token.DOUBLE.getCode(); + DoubleHelper.getIEEEBytes(this.value, data, 1); + return data; + } + + public double getValue() { + return this.value; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Equal.java b/hrmsEjb/jxl/biff/formula/Equal.java new file mode 100644 index 0000000..4372820 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Equal.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class Equal extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "="; + } + + Token getToken() { + return Token.EQUAL; + } + + int getPrecedence() { + return 5; + } +} diff --git a/hrmsEjb/jxl/biff/formula/ExternalSheet.java b/hrmsEjb/jxl/biff/formula/ExternalSheet.java new file mode 100644 index 0000000..545bc19 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/ExternalSheet.java @@ -0,0 +1,17 @@ +package jxl.biff.formula; + +import jxl.read.biff.BOFRecord; + +public interface ExternalSheet { + String getExternalSheetName(int paramInt); + + int getExternalSheetIndex(String paramString); + + int getExternalSheetIndex(int paramInt); + + int getLastExternalSheetIndex(String paramString); + + int getLastExternalSheetIndex(int paramInt); + + BOFRecord getWorkbookBof(); +} diff --git a/hrmsEjb/jxl/biff/formula/FormulaErrorCode.java b/hrmsEjb/jxl/biff/formula/FormulaErrorCode.java new file mode 100644 index 0000000..c2a1cb4 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/FormulaErrorCode.java @@ -0,0 +1,54 @@ +package jxl.biff.formula; + +public class FormulaErrorCode { + private int errorCode; + + private String description; + + private static FormulaErrorCode[] codes = new FormulaErrorCode[0]; + + FormulaErrorCode(int code, String desc) { + this.errorCode = code; + this.description = desc; + FormulaErrorCode[] newcodes = new FormulaErrorCode[codes.length + 1]; + System.arraycopy(codes, 0, newcodes, 0, codes.length); + newcodes[codes.length] = this; + codes = newcodes; + } + + public int getCode() { + return this.errorCode; + } + + public String getDescription() { + return this.description; + } + + public static FormulaErrorCode getErrorCode(int code) { + boolean found = false; + FormulaErrorCode ec = UNKNOWN; + for (int i = 0; i < codes.length && !found; i++) { + if ((codes[i]).errorCode == code) { + found = true; + ec = codes[i]; + } + } + return ec; + } + + public static FormulaErrorCode UNKNOWN = new FormulaErrorCode(255, "?"); + + public static FormulaErrorCode NULL = new FormulaErrorCode(0, "#NULL"); + + public static FormulaErrorCode DIV0 = new FormulaErrorCode(7, "#DIV/0"); + + public static FormulaErrorCode VALUE = new FormulaErrorCode(15, "#VALUE"); + + public static FormulaErrorCode REF = new FormulaErrorCode(23, "#REF"); + + public static FormulaErrorCode NAME = new FormulaErrorCode(29, "#NAME"); + + public static FormulaErrorCode NUM = new FormulaErrorCode(36, "#NUM"); + + public static FormulaErrorCode NA = new FormulaErrorCode(42, "#N/A"); +} diff --git a/hrmsEjb/jxl/biff/formula/FormulaException.java b/hrmsEjb/jxl/biff/formula/FormulaException.java new file mode 100644 index 0000000..a07d035 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/FormulaException.java @@ -0,0 +1,39 @@ +package jxl.biff.formula; + +import jxl.JXLException; + +public class FormulaException extends JXLException { + private static class FormulaMessage { + public String message; + + FormulaMessage(String m) { + this.message = m; + } + } + + static FormulaMessage unrecognizedToken = new FormulaMessage("Unrecognized token"); + + static FormulaMessage unrecognizedFunction = new FormulaMessage("Unrecognized function"); + + public static FormulaMessage biff8Supported = new FormulaMessage("Only biff8 formulas are supported"); + + static FormulaMessage lexicalError = new FormulaMessage("Lexical error: "); + + static FormulaMessage incorrectArguments = new FormulaMessage("Incorrect arguments supplied to function"); + + static FormulaMessage sheetRefNotFound = new FormulaMessage("Could not find sheet"); + + static FormulaMessage cellNameNotFound = new FormulaMessage("Could not find named cell"); + + public FormulaException(FormulaMessage m) { + super(m.message); + } + + public FormulaException(FormulaMessage m, int val) { + super(m.message + " " + val); + } + + public FormulaException(FormulaMessage m, String val) { + super(m.message + " " + val); + } +} diff --git a/hrmsEjb/jxl/biff/formula/FormulaParser.java b/hrmsEjb/jxl/biff/formula/FormulaParser.java new file mode 100644 index 0000000..29b49e3 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/FormulaParser.java @@ -0,0 +1,51 @@ +package jxl.biff.formula; + +import jxl.Cell; +import jxl.WorkbookSettings; +import jxl.biff.WorkbookMethods; + +public class FormulaParser { + private Parser parser; + + public FormulaParser(byte[] tokens, Cell rt, ExternalSheet es, WorkbookMethods nt, WorkbookSettings ws) throws FormulaException { + if (es.getWorkbookBof() != null && !es.getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + this.parser = new TokenFormulaParser(tokens, rt, es, nt, ws); + } + + public FormulaParser(String form, ExternalSheet es, WorkbookMethods nt, WorkbookSettings ws) { + this.parser = new StringFormulaParser(form, es, nt, ws); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + this.parser.adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + public void parse() throws FormulaException { + this.parser.parse(); + } + + public String getFormula() throws FormulaException { + return this.parser.getFormula(); + } + + public byte[] getBytes() { + return this.parser.getBytes(); + } + + public void columnInserted(int sheetIndex, int col, boolean currentSheet) { + this.parser.columnInserted(sheetIndex, col, currentSheet); + } + + public void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + this.parser.columnRemoved(sheetIndex, col, currentSheet); + } + + public void rowInserted(int sheetIndex, int row, boolean currentSheet) { + this.parser.rowInserted(sheetIndex, row, currentSheet); + } + + public void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + this.parser.rowRemoved(sheetIndex, row, currentSheet); + } +} diff --git a/hrmsEjb/jxl/biff/formula/Function.java b/hrmsEjb/jxl/biff/formula/Function.java new file mode 100644 index 0000000..0f1c11c --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Function.java @@ -0,0 +1,530 @@ +package jxl.biff.formula; + +import common.Logger; +import jxl.WorkbookSettings; + +class Function { + private static Logger logger = Logger.getLogger(Function.class); + + private final int code; + + private final String name; + + private final int numArgs; + + static Function[] functions = new Function[0]; + + private Function(int v, String s, int a) { + this.code = v; + this.name = s; + this.numArgs = a; + Function[] newarray = new Function[functions.length + 1]; + System.arraycopy(functions, 0, newarray, 0, functions.length); + newarray[functions.length] = this; + functions = newarray; + } + + public int hashCode() { + return this.code; + } + + int getCode() { + return this.code; + } + + String getPropertyName() { + return this.name; + } + + String getName(WorkbookSettings ws) { + FunctionNames fn = ws.getFunctionNames(); + return fn.getName(this); + } + + int getNumArgs() { + return this.numArgs; + } + + public static Function getFunction(int v) { + Function f = null; + for (int i = 0; i < functions.length; i++) { + if ((functions[i]).code == v) { + f = functions[i]; + break; + } + } + return (f != null) ? f : UNKNOWN; + } + + public static Function getFunction(String v, WorkbookSettings ws) { + FunctionNames fn = ws.getFunctionNames(); + Function f = fn.getFunction(v); + return (f != null) ? f : UNKNOWN; + } + + public static final Function COUNT = new Function(0, "count", 255); + + public static final Function ATTRIBUTE = new Function(1, "", 255); + + public static final Function ISNA = new Function(2, "isna", 1); + + public static final Function ISERROR = new Function(3, "iserror", 1); + + public static final Function SUM = new Function(4, "sum", 255); + + public static final Function AVERAGE = new Function(5, "average", 255); + + public static final Function MIN = new Function(6, "min", 255); + + public static final Function MAX = new Function(7, "max", 255); + + public static final Function ROW = new Function(8, "row", 255); + + public static final Function COLUMN = new Function(9, "column", 255); + + public static final Function NA = new Function(10, "na", 0); + + public static final Function NPV = new Function(11, "npv", 255); + + public static final Function STDEV = new Function(12, "stdev", 255); + + public static final Function DOLLAR = new Function(13, "dollar", 2); + + public static final Function FIXED = new Function(14, "fixed", 255); + + public static final Function SIN = new Function(15, "sin", 1); + + public static final Function COS = new Function(16, "cos", 1); + + public static final Function TAN = new Function(17, "tan", 1); + + public static final Function ATAN = new Function(18, "atan", 1); + + public static final Function PI = new Function(19, "pi", 0); + + public static final Function SQRT = new Function(20, "sqrt", 1); + + public static final Function EXP = new Function(21, "exp", 1); + + public static final Function LN = new Function(22, "ln", 1); + + public static final Function LOG10 = new Function(23, "log10", 1); + + public static final Function ABS = new Function(24, "abs", 1); + + public static final Function INT = new Function(25, "int", 1); + + public static final Function SIGN = new Function(26, "sign", 1); + + public static final Function ROUND = new Function(27, "round", 2); + + public static final Function LOOKUP = new Function(28, "lookup", 2); + + public static final Function INDEX = new Function(29, "index", 3); + + public static final Function REPT = new Function(30, "rept", 2); + + public static final Function MID = new Function(31, "mid", 3); + + public static final Function LEN = new Function(32, "len", 1); + + public static final Function VALUE = new Function(33, "value", 1); + + public static final Function TRUE = new Function(34, "true", 0); + + public static final Function FALSE = new Function(35, "false", 0); + + public static final Function AND = new Function(36, "and", 255); + + public static final Function OR = new Function(37, "or", 255); + + public static final Function NOT = new Function(38, "not", 1); + + public static final Function MOD = new Function(39, "mod", 2); + + public static final Function DCOUNT = new Function(40, "dcount", 3); + + public static final Function DSUM = new Function(41, "dsum", 3); + + public static final Function DAVERAGE = new Function(42, "daverage", 3); + + public static final Function DMIN = new Function(43, "dmin", 3); + + public static final Function DMAX = new Function(44, "dmax", 3); + + public static final Function DSTDEV = new Function(45, "dstdev", 3); + + public static final Function VAR = new Function(46, "var", 255); + + public static final Function DVAR = new Function(47, "dvar", 3); + + public static final Function TEXT = new Function(48, "text", 2); + + public static final Function LINEST = new Function(49, "linest", 255); + + public static final Function TREND = new Function(50, "trend", 255); + + public static final Function LOGEST = new Function(51, "logest", 255); + + public static final Function GROWTH = new Function(52, "growth", 255); + + public static final Function PV = new Function(56, "pv", 255); + + public static final Function FV = new Function(57, "fv", 255); + + public static final Function NPER = new Function(58, "nper", 255); + + public static final Function PMT = new Function(59, "pmt", 255); + + public static final Function RATE = new Function(60, "rate", 255); + + public static final Function RAND = new Function(63, "rand", 0); + + public static final Function MATCH = new Function(64, "match", 3); + + public static final Function DATE = new Function(65, "date", 3); + + public static final Function TIME = new Function(66, "time", 3); + + public static final Function DAY = new Function(67, "day", 1); + + public static final Function MONTH = new Function(68, "month", 1); + + public static final Function YEAR = new Function(69, "year", 1); + + public static final Function WEEKDAY = new Function(70, "weekday", 2); + + public static final Function HOUR = new Function(71, "hour", 1); + + public static final Function MINUTE = new Function(72, "minute", 1); + + public static final Function SECOND = new Function(73, "second", 1); + + public static final Function NOW = new Function(74, "now", 0); + + public static final Function AREAS = new Function(75, "areas", 255); + + public static final Function ROWS = new Function(76, "rows", 1); + + public static final Function COLUMNS = new Function(77, "columns", 255); + + public static final Function OFFSET = new Function(78, "offset", 255); + + public static final Function TRANSPOSE = new Function(83, "transpose", 255); + + public static final Function ERROR = new Function(84, "error", 1); + + public static final Function TYPE = new Function(86, "type", 1); + + public static final Function ATAN2 = new Function(97, "atan2", 1); + + public static final Function ASIN = new Function(98, "asin", 1); + + public static final Function ACOS = new Function(99, "acos", 1); + + public static final Function CHOOSE = new Function(100, "choose", 255); + + public static final Function HLOOKUP = new Function(101, "hlookup", 255); + + public static final Function VLOOKUP = new Function(102, "vlookup", 255); + + public static final Function ISREF = new Function(105, "isref", 1); + + public static final Function LOG = new Function(109, "log", 255); + + public static final Function CHAR = new Function(111, "char", 1); + + public static final Function LOWER = new Function(112, "lower", 1); + + public static final Function UPPER = new Function(113, "upper", 1); + + public static final Function PROPER = new Function(114, "proper", 1); + + public static final Function LEFT = new Function(115, "left", 255); + + public static final Function RIGHT = new Function(116, "right", 255); + + public static final Function EXACT = new Function(117, "exact", 2); + + public static final Function TRIM = new Function(118, "trim", 1); + + public static final Function REPLACE = new Function(119, "replace", 4); + + public static final Function SUBSTITUTE = new Function(120, "substitute", 255); + + public static final Function CODE = new Function(121, "code", 1); + + public static final Function FIND = new Function(124, "find", 255); + + public static final Function CELL = new Function(125, "cell", 2); + + public static final Function ISERR = new Function(126, "iserr", 1); + + public static final Function ISTEXT = new Function(127, "istext", 1); + + public static final Function ISNUMBER = new Function(128, "isnumber", 1); + + public static final Function ISBLANK = new Function(129, "isblank", 1); + + public static final Function T = new Function(130, "t", 1); + + public static final Function N = new Function(131, "n", 1); + + public static final Function DATEVALUE = new Function(140, "datevalue", 1); + + public static final Function TIMEVALUE = new Function(141, "timevalue", 1); + + public static final Function SLN = new Function(142, "sln", 3); + + public static final Function SYD = new Function(143, "syd", 3); + + public static final Function DDB = new Function(144, "ddb", 255); + + public static final Function INDIRECT = new Function(148, "indirect", 255); + + public static final Function CLEAN = new Function(162, "clean", 1); + + public static final Function MDETERM = new Function(163, "mdeterm", 255); + + public static final Function MINVERSE = new Function(164, "minverse", 255); + + public static final Function MMULT = new Function(165, "mmult", 255); + + public static final Function IPMT = new Function(167, "ipmt", 255); + + public static final Function PPMT = new Function(168, "ppmt", 255); + + public static final Function COUNTA = new Function(169, "counta", 255); + + public static final Function PRODUCT = new Function(183, "product", 255); + + public static final Function FACT = new Function(184, "fact", 1); + + public static final Function DPRODUCT = new Function(189, "dproduct", 3); + + public static final Function ISNONTEXT = new Function(190, "isnontext", 1); + + public static final Function STDEVP = new Function(193, "stdevp", 255); + + public static final Function VARP = new Function(194, "varp", 255); + + public static final Function DSTDEVP = new Function(195, "dstdevp", 255); + + public static final Function DVARP = new Function(196, "dvarp", 255); + + public static final Function TRUNC = new Function(197, "trunc", 255); + + public static final Function ISLOGICAL = new Function(198, "islogical", 1); + + public static final Function DCOUNTA = new Function(199, "dcounta", 255); + + public static final Function FINDB = new Function(205, "findb", 255); + + public static final Function SEARCHB = new Function(206, "searchb", 3); + + public static final Function REPLACEB = new Function(207, "replaceb", 4); + + public static final Function LEFTB = new Function(208, "leftb", 255); + + public static final Function RIGHTB = new Function(209, "rightb", 255); + + public static final Function MIDB = new Function(210, "midb", 3); + + public static final Function LENB = new Function(211, "lenb", 1); + + public static final Function ROUNDUP = new Function(212, "roundup", 2); + + public static final Function ROUNDDOWN = new Function(213, "rounddown", 2); + + public static final Function RANK = new Function(216, "rank", 255); + + public static final Function ADDRESS = new Function(219, "address", 255); + + public static final Function AYS360 = new Function(220, "days360", 255); + + public static final Function ODAY = new Function(221, "today", 0); + + public static final Function VDB = new Function(222, "vdb", 255); + + public static final Function MEDIAN = new Function(227, "median", 255); + + public static final Function SUMPRODUCT = new Function(228, "sumproduct", 255); + + public static final Function SINH = new Function(229, "sinh", 1); + + public static final Function COSH = new Function(230, "cosh", 1); + + public static final Function TANH = new Function(231, "tanh", 1); + + public static final Function ASINH = new Function(232, "asinh", 1); + + public static final Function ACOSH = new Function(233, "acosh", 1); + + public static final Function ATANH = new Function(234, "atanh", 1); + + public static final Function INFO = new Function(244, "info", 1); + + public static final Function AVEDEV = new Function(269, "avedev", 255); + + public static final Function BETADIST = new Function(270, "betadist", 255); + + public static final Function GAMMALN = new Function(271, "gammaln", 1); + + public static final Function BETAINV = new Function(272, "betainv", 255); + + public static final Function BINOMDIST = new Function(273, "binomdist", 4); + + public static final Function CHIDIST = new Function(274, "chidist", 2); + + public static final Function CHIINV = new Function(275, "chiinv", 2); + + public static final Function COMBIN = new Function(276, "combin", 2); + + public static final Function CONFIDENCE = new Function(277, "confidence", 3); + + public static final Function CRITBINOM = new Function(278, "critbinom", 3); + + public static final Function EVEN = new Function(279, "even", 1); + + public static final Function EXPONDIST = new Function(280, "expondist", 3); + + public static final Function FDIST = new Function(281, "fdist", 3); + + public static final Function FINV = new Function(282, "finv", 3); + + public static final Function FISHER = new Function(283, "fisher", 1); + + public static final Function FISHERINV = new Function(284, "fisherinv", 1); + + public static final Function FLOOR = new Function(285, "floor", 2); + + public static final Function GAMMADIST = new Function(286, "gammadist", 4); + + public static final Function GAMMAINV = new Function(287, "gammainv", 3); + + public static final Function CEILING = new Function(288, "ceiling", 2); + + public static final Function HYPGEOMDIST = new Function(289, "hypgeomdist", 4); + + public static final Function LOGNORMDIST = new Function(290, "lognormdist", 3); + + public static final Function LOGINV = new Function(291, "loginv", 3); + + public static final Function NEGBINOMDIST = new Function(292, "negbinomdist", 3); + + public static final Function NORMDIST = new Function(293, "normdist", 4); + + public static final Function NORMSDIST = new Function(294, "normsdist", 1); + + public static final Function NORMINV = new Function(295, "norminv", 3); + + public static final Function NORMSINV = new Function(296, "normsinv", 1); + + public static final Function STANDARDIZE = new Function(297, "standardize", 3); + + public static final Function ODD = new Function(298, "odd", 1); + + public static final Function PERMUT = new Function(299, "permut", 2); + + public static final Function POISSON = new Function(300, "poisson", 3); + + public static final Function TDIST = new Function(301, "tdist", 3); + + public static final Function WEIBULL = new Function(302, "weibull", 4); + + public static final Function SUMXMY2 = new Function(303, "sumxmy2", 255); + + public static final Function SUMX2MY2 = new Function(304, "sumx2my2", 255); + + public static final Function SUMX2PY2 = new Function(305, "sumx2py2", 255); + + public static final Function CHITEST = new Function(306, "chitest", 255); + + public static final Function CORREL = new Function(307, "correl", 255); + + public static final Function COVAR = new Function(308, "covar", 255); + + public static final Function FORECAST = new Function(309, "forecast", 255); + + public static final Function FTEST = new Function(310, "ftest", 255); + + public static final Function INTERCEPT = new Function(311, "intercept", 255); + + public static final Function PEARSON = new Function(312, "pearson", 255); + + public static final Function RSQ = new Function(313, "rsq", 255); + + public static final Function STEYX = new Function(314, "steyx", 255); + + public static final Function SLOPE = new Function(315, "slope", 2); + + public static final Function TTEST = new Function(316, "ttest", 255); + + public static final Function PROB = new Function(317, "prob", 255); + + public static final Function DEVSQ = new Function(318, "devsq", 255); + + public static final Function GEOMEAN = new Function(319, "geomean", 255); + + public static final Function HARMEAN = new Function(320, "harmean", 255); + + public static final Function SUMSQ = new Function(321, "sumsq", 255); + + public static final Function KURT = new Function(322, "kurt", 255); + + public static final Function SKEW = new Function(323, "skew", 255); + + public static final Function ZTEST = new Function(324, "ztest", 255); + + public static final Function LARGE = new Function(325, "large", 255); + + public static final Function SMALL = new Function(326, "small", 255); + + public static final Function QUARTILE = new Function(327, "quartile", 255); + + public static final Function PERCENTILE = new Function(328, "percentile", 255); + + public static final Function PERCENTRANK = new Function(329, "percentrank", 255); + + public static final Function MODE = new Function(330, "mode", 255); + + public static final Function TRIMMEAN = new Function(331, "trimmean", 255); + + public static final Function TINV = new Function(332, "tinv", 2); + + public static final Function CONCATENATE = new Function(336, "concatenate", 255); + + public static final Function POWER = new Function(337, "power", 2); + + public static final Function RADIANS = new Function(342, "radians", 1); + + public static final Function DEGREES = new Function(343, "degrees", 1); + + public static final Function SUBTOTAL = new Function(344, "subtotal", 255); + + public static final Function SUMIF = new Function(345, "sumif", 255); + + public static final Function COUNTIF = new Function(346, "countif", 2); + + public static final Function COUNTBLANK = new Function(347, "countblank", 1); + + public static final Function HYPERLINK = new Function(359, "hyperlink", 2); + + public static final Function AVERAGEA = new Function(361, "averagea", 255); + + public static final Function MAXA = new Function(362, "maxa", 255); + + public static final Function MINA = new Function(363, "mina", 255); + + public static final Function STDEVPA = new Function(364, "stdevpa", 255); + + public static final Function VARPA = new Function(365, "varpa", 255); + + public static final Function STDEVA = new Function(366, "stdeva", 255); + + public static final Function VARA = new Function(367, "vara", 255); + + public static final Function IF = new Function(65534, "if", 255); + + public static final Function UNKNOWN = new Function(65535, "", 0); +} diff --git a/hrmsEjb/jxl/biff/formula/FunctionNames.java b/hrmsEjb/jxl/biff/formula/FunctionNames.java new file mode 100644 index 0000000..c38181d --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/FunctionNames.java @@ -0,0 +1,40 @@ +package jxl.biff.formula; + +import common.Logger; +import java.util.HashMap; +import java.util.Locale; +import java.util.ResourceBundle; + +public class FunctionNames { + private static Logger logger = Logger.getLogger(FunctionNames.class); + + private HashMap names; + + private HashMap functions; + + public FunctionNames(Locale l) { + ResourceBundle rb = ResourceBundle.getBundle("functions", l); + this.names = new HashMap(Function.functions.length); + this.functions = new HashMap(Function.functions.length); + Function f = null; + String n = null; + String propname = null; + for (int i = 0; i < Function.functions.length; i++) { + f = Function.functions[i]; + propname = f.getPropertyName(); + n = (propname.length() != 0) ? rb.getString(propname) : null; + if (n != null) { + this.names.put(f, n); + this.functions.put(n, f); + } + } + } + + Function getFunction(String s) { + return (Function)this.functions.get(s); + } + + String getName(Function f) { + return (String)this.names.get(f); + } +} diff --git a/hrmsEjb/jxl/biff/formula/GreaterEqual.java b/hrmsEjb/jxl/biff/formula/GreaterEqual.java new file mode 100644 index 0000000..f3d4f79 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/GreaterEqual.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class GreaterEqual extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return ">="; + } + + Token getToken() { + return Token.GREATER_EQUAL; + } + + int getPrecedence() { + return 5; + } +} diff --git a/hrmsEjb/jxl/biff/formula/GreaterThan.java b/hrmsEjb/jxl/biff/formula/GreaterThan.java new file mode 100644 index 0000000..562ff40 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/GreaterThan.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class GreaterThan extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return ">"; + } + + Token getToken() { + return Token.GREATER_THAN; + } + + int getPrecedence() { + return 5; + } +} diff --git a/hrmsEjb/jxl/biff/formula/IntegerValue.java b/hrmsEjb/jxl/biff/formula/IntegerValue.java new file mode 100644 index 0000000..0d54c1d --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/IntegerValue.java @@ -0,0 +1,47 @@ +package jxl.biff.formula; + +import common.Logger; +import jxl.biff.IntegerHelper; + +class IntegerValue extends NumberValue implements ParsedThing { + private static Logger logger = Logger.getLogger(IntegerValue.class); + + private double value; + + private boolean outOfRange; + + public IntegerValue() { + this.outOfRange = false; + } + + public IntegerValue(String s) { + try { + this.value = Integer.parseInt(s); + } catch (NumberFormatException e) { + logger.warn(e, e); + this.value = 0.0D; + } + short v = (short)(int)this.value; + this.outOfRange = (this.value != v); + } + + public int read(byte[] data, int pos) { + this.value = IntegerHelper.getInt(data[pos], data[pos + 1]); + return 2; + } + + byte[] getBytes() { + byte[] data = new byte[3]; + data[0] = Token.INTEGER.getCode(); + IntegerHelper.getTwoBytes((int)this.value, data, 1); + return data; + } + + public double getValue() { + return this.value; + } + + boolean isOutOfRange() { + return this.outOfRange; + } +} diff --git a/hrmsEjb/jxl/biff/formula/LessEqual.java b/hrmsEjb/jxl/biff/formula/LessEqual.java new file mode 100644 index 0000000..3c8a8ef --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/LessEqual.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class LessEqual extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "<="; + } + + Token getToken() { + return Token.LESS_EQUAL; + } + + int getPrecedence() { + return 5; + } +} diff --git a/hrmsEjb/jxl/biff/formula/LessThan.java b/hrmsEjb/jxl/biff/formula/LessThan.java new file mode 100644 index 0000000..25600c5 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/LessThan.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class LessThan extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "<"; + } + + Token getToken() { + return Token.LESS_THAN; + } + + int getPrecedence() { + return 5; + } +} diff --git a/hrmsEjb/jxl/biff/formula/MemFunc.java b/hrmsEjb/jxl/biff/formula/MemFunc.java new file mode 100644 index 0000000..214d4f0 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/MemFunc.java @@ -0,0 +1,43 @@ +package jxl.biff.formula; + +import java.util.Stack; +import jxl.biff.IntegerHelper; + +class MemFunc extends Operand implements ParsedThing { + private int length; + + private ParseItem[] subExpression; + + public int read(byte[] data, int pos) { + this.length = IntegerHelper.getInt(data[pos], data[pos + 1]); + return 2; + } + + public void getOperands(Stack s) {} + + public void getString(StringBuffer buf) { + if (this.subExpression.length == 1) { + this.subExpression[0].getString(buf); + } else if (this.subExpression.length == 2) { + this.subExpression[1].getString(buf); + buf.append(':'); + this.subExpression[0].getString(buf); + } + } + + byte[] getBytes() { + return null; + } + + int getPrecedence() { + return 5; + } + + public int getLength() { + return this.length; + } + + public void setSubExpression(ParseItem[] pi) { + this.subExpression = pi; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Minus.java b/hrmsEjb/jxl/biff/formula/Minus.java new file mode 100644 index 0000000..0f9c4e1 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Minus.java @@ -0,0 +1,11 @@ +package jxl.biff.formula; + +class Minus extends StringOperator { + Operator getBinaryOperator() { + return new Subtract(); + } + + Operator getUnaryOperator() { + return new UnaryMinus(); + } +} diff --git a/hrmsEjb/jxl/biff/formula/MissingArg.java b/hrmsEjb/jxl/biff/formula/MissingArg.java new file mode 100644 index 0000000..10a8779 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/MissingArg.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class MissingArg extends Operand implements ParsedThing { + public int read(byte[] data, int pos) { + return 0; + } + + byte[] getBytes() { + byte[] data = new byte[1]; + data[0] = Token.MISSING_ARG.getCode(); + return data; + } + + public void getString(StringBuffer buf) {} +} diff --git a/hrmsEjb/jxl/biff/formula/Multiply.java b/hrmsEjb/jxl/biff/formula/Multiply.java new file mode 100644 index 0000000..6620b4a --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Multiply.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class Multiply extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "*"; + } + + Token getToken() { + return Token.MULTIPLY; + } + + int getPrecedence() { + return 3; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Name.java b/hrmsEjb/jxl/biff/formula/Name.java new file mode 100644 index 0000000..88fe565 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Name.java @@ -0,0 +1,16 @@ +package jxl.biff.formula; + +class Name extends Operand implements ParsedThing { + public int read(byte[] data, int pos) { + return 6; + } + + byte[] getBytes() { + byte[] data = new byte[6]; + return data; + } + + public void getString(StringBuffer buf) { + buf.append("[Name record not implemented]"); + } +} diff --git a/hrmsEjb/jxl/biff/formula/NameRange.java b/hrmsEjb/jxl/biff/formula/NameRange.java new file mode 100644 index 0000000..61aabe6 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/NameRange.java @@ -0,0 +1,42 @@ +package jxl.biff.formula; + +import jxl.biff.IntegerHelper; +import jxl.biff.WorkbookMethods; + +class NameRange extends Operand implements ParsedThing { + private WorkbookMethods nameTable; + + private String name; + + private int index; + + public NameRange(WorkbookMethods nt) { + this.nameTable = nt; + } + + public NameRange(String nm, WorkbookMethods nt) throws FormulaException { + this.name = nm; + this.nameTable = nt; + this.index = this.nameTable.getNameIndex(this.name); + if (this.index < 0) + throw new FormulaException(FormulaException.cellNameNotFound, this.name); + this.index++; + } + + public int read(byte[] data, int pos) { + this.index = IntegerHelper.getInt(data[pos], data[pos + 1]); + this.name = this.nameTable.getName(this.index - 1); + return 4; + } + + byte[] getBytes() { + byte[] data = new byte[5]; + data[0] = Token.NAMED_RANGE.getCode(); + IntegerHelper.getTwoBytes(this.index, data, 1); + return data; + } + + public void getString(StringBuffer buf) { + buf.append(this.name); + } +} diff --git a/hrmsEjb/jxl/biff/formula/NotEqual.java b/hrmsEjb/jxl/biff/formula/NotEqual.java new file mode 100644 index 0000000..635237e --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/NotEqual.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class NotEqual extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "<>"; + } + + Token getToken() { + return Token.NOT_EQUAL; + } + + int getPrecedence() { + return 5; + } +} diff --git a/hrmsEjb/jxl/biff/formula/NumberValue.java b/hrmsEjb/jxl/biff/formula/NumberValue.java new file mode 100644 index 0000000..49cbf6e --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/NumberValue.java @@ -0,0 +1,9 @@ +package jxl.biff.formula; + +abstract class NumberValue extends Operand implements ParsedThing { + public abstract double getValue(); + + public void getString(StringBuffer buf) { + buf.append(Double.toString(getValue())); + } +} diff --git a/hrmsEjb/jxl/biff/formula/OpenParentheses.java b/hrmsEjb/jxl/biff/formula/OpenParentheses.java new file mode 100644 index 0000000..7933ed5 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/OpenParentheses.java @@ -0,0 +1,3 @@ +package jxl.biff.formula; + +class OpenParentheses extends StringParseItem {} diff --git a/hrmsEjb/jxl/biff/formula/Operand.java b/hrmsEjb/jxl/biff/formula/Operand.java new file mode 100644 index 0000000..70bfa05 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Operand.java @@ -0,0 +1,13 @@ +package jxl.biff.formula; + +abstract class Operand extends ParseItem { + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) {} + + void columnInserted(int sheetIndex, int col, boolean currentSheet) {} + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) {} + + void rowInserted(int sheetIndex, int row, boolean currentSheet) {} + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) {} +} diff --git a/hrmsEjb/jxl/biff/formula/Operator.java b/hrmsEjb/jxl/biff/formula/Operator.java new file mode 100644 index 0000000..e20935e --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Operator.java @@ -0,0 +1,28 @@ +package jxl.biff.formula; + +import java.util.Stack; + +abstract class Operator extends ParseItem { + private ParseItem[] operands = new ParseItem[0]; + + protected void setOperandAlternateCode() { + for (int i = 0; i < this.operands.length; i++) + this.operands[i].setAlternateCode(); + } + + protected void add(ParseItem n) { + n.setParent(this); + ParseItem[] newOperands = new ParseItem[this.operands.length + 1]; + System.arraycopy(this.operands, 0, newOperands, 0, this.operands.length); + newOperands[this.operands.length] = n; + this.operands = newOperands; + } + + public abstract void getOperands(Stack paramStack); + + protected ParseItem[] getOperands() { + return this.operands; + } + + abstract int getPrecedence(); +} diff --git a/hrmsEjb/jxl/biff/formula/Parenthesis.java b/hrmsEjb/jxl/biff/formula/Parenthesis.java new file mode 100644 index 0000000..09f4e3d --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Parenthesis.java @@ -0,0 +1,63 @@ +package jxl.biff.formula; + +import java.util.Stack; + +class Parenthesis extends Operator implements ParsedThing { + public int read(byte[] data, int pos) { + return 0; + } + + public void getOperands(Stack s) { + ParseItem pi = s.pop(); + add(pi); + } + + public void getString(StringBuffer buf) { + ParseItem[] operands = getOperands(); + buf.append('('); + operands[0].getString(buf); + buf.append(')'); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + ParseItem[] operands = getOperands(); + operands[0].adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].columnInserted(sheetIndex, col, currentSheet); + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].columnRemoved(sheetIndex, col, currentSheet); + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].rowInserted(sheetIndex, row, currentSheet); + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].rowRemoved(sheetIndex, row, currentSheet); + } + + Token getToken() { + return Token.PARENTHESIS; + } + + byte[] getBytes() { + ParseItem[] operands = getOperands(); + byte[] data = operands[0].getBytes(); + byte[] newdata = new byte[data.length + 1]; + System.arraycopy(data, 0, newdata, 0, data.length); + newdata[data.length] = getToken().getCode(); + return newdata; + } + + int getPrecedence() { + return 4; + } +} diff --git a/hrmsEjb/jxl/biff/formula/ParseItem.java b/hrmsEjb/jxl/biff/formula/ParseItem.java new file mode 100644 index 0000000..7034f9b --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/ParseItem.java @@ -0,0 +1,45 @@ +package jxl.biff.formula; + +abstract class ParseItem { + private ParseItem parent; + + private boolean volatileFunction = false; + + private boolean alternateCode = false; + + protected void setParent(ParseItem p) { + this.parent = p; + } + + protected void setVolatile() { + this.volatileFunction = true; + if (this.parent != null && !this.parent.isVolatile()) + this.parent.setVolatile(); + } + + final boolean isVolatile() { + return this.volatileFunction; + } + + abstract void getString(StringBuffer paramStringBuffer); + + abstract byte[] getBytes(); + + abstract void adjustRelativeCellReferences(int paramInt1, int paramInt2); + + abstract void columnInserted(int paramInt1, int paramInt2, boolean paramBoolean); + + abstract void columnRemoved(int paramInt1, int paramInt2, boolean paramBoolean); + + abstract void rowInserted(int paramInt1, int paramInt2, boolean paramBoolean); + + abstract void rowRemoved(int paramInt1, int paramInt2, boolean paramBoolean); + + protected void setAlternateCode() { + this.alternateCode = true; + } + + protected final boolean useAlternateCode() { + return this.alternateCode; + } +} diff --git a/hrmsEjb/jxl/biff/formula/ParsedThing.java b/hrmsEjb/jxl/biff/formula/ParsedThing.java new file mode 100644 index 0000000..c3651d5 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/ParsedThing.java @@ -0,0 +1,5 @@ +package jxl.biff.formula; + +interface ParsedThing { + int read(byte[] paramArrayOfbyte, int paramInt) throws FormulaException; +} diff --git a/hrmsEjb/jxl/biff/formula/Parser.java b/hrmsEjb/jxl/biff/formula/Parser.java new file mode 100644 index 0000000..0b7fb32 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Parser.java @@ -0,0 +1,19 @@ +package jxl.biff.formula; + +interface Parser { + void parse() throws FormulaException; + + String getFormula(); + + byte[] getBytes(); + + void adjustRelativeCellReferences(int paramInt1, int paramInt2); + + void columnInserted(int paramInt1, int paramInt2, boolean paramBoolean); + + void columnRemoved(int paramInt1, int paramInt2, boolean paramBoolean); + + void rowInserted(int paramInt1, int paramInt2, boolean paramBoolean); + + void rowRemoved(int paramInt1, int paramInt2, boolean paramBoolean); +} diff --git a/hrmsEjb/jxl/biff/formula/Percent.java b/hrmsEjb/jxl/biff/formula/Percent.java new file mode 100644 index 0000000..469d33f --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Percent.java @@ -0,0 +1,21 @@ +package jxl.biff.formula; + +class Percent extends UnaryOperator implements ParsedThing { + public String getSymbol() { + return "%"; + } + + public void getString(StringBuffer buf) { + ParseItem[] operands = getOperands(); + operands[0].getString(buf); + buf.append(getSymbol()); + } + + Token getToken() { + return Token.PERCENT; + } + + int getPrecedence() { + return 5; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Plus.java b/hrmsEjb/jxl/biff/formula/Plus.java new file mode 100644 index 0000000..5878cae --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Plus.java @@ -0,0 +1,11 @@ +package jxl.biff.formula; + +class Plus extends StringOperator { + Operator getBinaryOperator() { + return new Add(); + } + + Operator getUnaryOperator() { + return new UnaryPlus(); + } +} diff --git a/hrmsEjb/jxl/biff/formula/Power.java b/hrmsEjb/jxl/biff/formula/Power.java new file mode 100644 index 0000000..3177dec --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Power.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class Power extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "^"; + } + + Token getToken() { + return Token.POWER; + } + + int getPrecedence() { + return 1; + } +} diff --git a/hrmsEjb/jxl/biff/formula/RangeSeparator.java b/hrmsEjb/jxl/biff/formula/RangeSeparator.java new file mode 100644 index 0000000..48be521 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/RangeSeparator.java @@ -0,0 +1,28 @@ +package jxl.biff.formula; + +import jxl.biff.IntegerHelper; + +class RangeSeparator extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return ":"; + } + + Token getToken() { + return Token.RANGE; + } + + int getPrecedence() { + return 1; + } + + byte[] getBytes() { + setVolatile(); + setOperandAlternateCode(); + byte[] funcBytes = super.getBytes(); + byte[] bytes = new byte[funcBytes.length + 3]; + System.arraycopy(funcBytes, 0, bytes, 3, funcBytes.length); + bytes[0] = Token.MEM_FUNC.getCode(); + IntegerHelper.getTwoBytes(funcBytes.length, bytes, 1); + return bytes; + } +} diff --git a/hrmsEjb/jxl/biff/formula/SharedFormulaArea.java b/hrmsEjb/jxl/biff/formula/SharedFormulaArea.java new file mode 100644 index 0000000..edabf06 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/SharedFormulaArea.java @@ -0,0 +1,83 @@ +package jxl.biff.formula; + +import jxl.Cell; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IntegerHelper; + +class SharedFormulaArea extends Operand implements ParsedThing { + private int columnFirst; + + private int rowFirst; + + private int columnLast; + + private int rowLast; + + private boolean columnFirstRelative; + + private boolean rowFirstRelative; + + private boolean columnLastRelative; + + private boolean rowLastRelative; + + private Cell relativeTo; + + public SharedFormulaArea(Cell rt) { + this.relativeTo = rt; + } + + int getFirstColumn() { + return this.columnFirst; + } + + int getFirstRow() { + return this.rowFirst; + } + + int getLastColumn() { + return this.columnLast; + } + + int getLastRow() { + return this.rowLast; + } + + public int read(byte[] data, int pos) { + this.rowFirst = IntegerHelper.getShort(data[pos], data[pos + 1]); + this.rowLast = IntegerHelper.getShort(data[pos + 2], data[pos + 3]); + int columnMask = IntegerHelper.getInt(data[pos + 4], data[pos + 5]); + this.columnFirst = columnMask & 0xFF; + this.columnFirstRelative = ((columnMask & 0x4000) != 0); + this.rowFirstRelative = ((columnMask & 0x8000) != 0); + if (this.columnFirstRelative) + this.columnFirst = this.relativeTo.getColumn() + this.columnFirst; + if (this.rowFirstRelative) + this.rowFirst = this.relativeTo.getRow() + this.rowFirst; + columnMask = IntegerHelper.getInt(data[pos + 6], data[pos + 7]); + this.columnLast = columnMask & 0xFF; + this.columnLastRelative = ((columnMask & 0x4000) != 0); + this.rowLastRelative = ((columnMask & 0x8000) != 0); + if (this.columnLastRelative) + this.columnLast = this.relativeTo.getColumn() + this.columnLast; + if (this.rowLastRelative) + this.rowLast = this.relativeTo.getRow() + this.rowLast; + return 8; + } + + public void getString(StringBuffer buf) { + CellReferenceHelper.getCellReference(this.columnFirst, this.rowFirst, buf); + buf.append(':'); + CellReferenceHelper.getCellReference(this.columnLast, this.rowLast, buf); + } + + byte[] getBytes() { + byte[] data = new byte[9]; + data[0] = Token.AREA.getCode(); + IntegerHelper.getTwoBytes(this.rowFirst, data, 1); + IntegerHelper.getTwoBytes(this.rowLast, data, 3); + IntegerHelper.getTwoBytes(this.columnFirst, data, 5); + IntegerHelper.getTwoBytes(this.columnLast, data, 7); + return data; + } +} diff --git a/hrmsEjb/jxl/biff/formula/SharedFormulaCellReference.java b/hrmsEjb/jxl/biff/formula/SharedFormulaCellReference.java new file mode 100644 index 0000000..e141c06 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/SharedFormulaCellReference.java @@ -0,0 +1,59 @@ +package jxl.biff.formula; + +import jxl.Cell; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IntegerHelper; + +class SharedFormulaCellReference extends Operand implements ParsedThing { + private boolean columnRelative; + + private boolean rowRelative; + + private int column; + + private int row; + + private Cell relativeTo; + + public SharedFormulaCellReference(Cell rt) { + this.relativeTo = rt; + } + + public int read(byte[] data, int pos) { + this.row = IntegerHelper.getShort(data[pos], data[pos + 1]); + int columnMask = IntegerHelper.getInt(data[pos + 2], data[pos + 3]); + this.column = (byte)(columnMask & 0xFF); + this.columnRelative = ((columnMask & 0x4000) != 0); + this.rowRelative = ((columnMask & 0x8000) != 0); + if (this.columnRelative) + this.column = this.relativeTo.getColumn() + this.column; + if (this.rowRelative) + this.row = this.relativeTo.getRow() + this.row; + return 4; + } + + public int getColumn() { + return this.column; + } + + public int getRow() { + return this.row; + } + + public void getString(StringBuffer buf) { + CellReferenceHelper.getCellReference(this.column, this.row, buf); + } + + byte[] getBytes() { + byte[] data = new byte[5]; + data[0] = Token.REF.getCode(); + IntegerHelper.getTwoBytes(this.row, data, 1); + int columnMask = this.column; + if (this.columnRelative) + columnMask |= 0x4000; + if (this.rowRelative) + columnMask |= 0x8000; + IntegerHelper.getTwoBytes(columnMask, data, 3); + return data; + } +} diff --git a/hrmsEjb/jxl/biff/formula/StringFormulaParser.java b/hrmsEjb/jxl/biff/formula/StringFormulaParser.java new file mode 100644 index 0000000..0dbccd4 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/StringFormulaParser.java @@ -0,0 +1,249 @@ +package jxl.biff.formula; + +import common.Logger; +import java.io.IOException; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Stack; +import jxl.WorkbookSettings; +import jxl.biff.WorkbookMethods; + +class StringFormulaParser implements Parser { + private static Logger logger = Logger.getLogger(StringFormulaParser.class); + + private String formula; + + private String parsedFormula; + + private ParseItem root; + + private Stack arguments; + + private WorkbookSettings settings; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + public StringFormulaParser(String f, ExternalSheet es, WorkbookMethods nt, WorkbookSettings ws) { + this.formula = f; + this.settings = ws; + this.externalSheet = es; + this.nameTable = nt; + } + + public void parse() throws FormulaException { + ArrayList tokens = getTokens(); + Iterator i = tokens.iterator(); + this.root = parseCurrent(i); + } + + private ParseItem parseCurrent(Iterator i) throws FormulaException { + Stack stack = new Stack(); + Stack operators = new Stack(); + Stack args = null; + boolean parenthesesClosed = false; + ParseItem lastParseItem = null; + while (i.hasNext() && !parenthesesClosed) { + ParseItem pi = i.next(); + if (pi instanceof Operand) { + handleOperand((Operand)pi, stack); + } else if (pi instanceof StringFunction) { + handleFunction((StringFunction)pi, i, stack); + } else if (pi instanceof Operator) { + Operator op = (Operator)pi; + if (op instanceof StringOperator) { + StringOperator sop = (StringOperator)op; + if (stack.isEmpty() || lastParseItem instanceof Operator) { + op = sop.getUnaryOperator(); + } else { + op = sop.getBinaryOperator(); + } + } + if (operators.empty()) { + operators.push(op); + } else { + Operator operator = operators.peek(); + if (op.getPrecedence() < operator.getPrecedence()) { + operators.push(op); + } else { + operators.pop(); + operator.getOperands(stack); + stack.push(operator); + operators.push(op); + } + } + } else if (pi instanceof ArgumentSeparator) { + while (!operators.isEmpty()) { + Operator o = operators.pop(); + o.getOperands(stack); + stack.push(o); + } + if (args == null) + args = new Stack(); + args.push(stack.pop()); + stack.clear(); + } else if (pi instanceof OpenParentheses) { + ParseItem pi2 = parseCurrent(i); + Parenthesis p = new Parenthesis(); + pi2.setParent(p); + p.add(pi2); + stack.push(p); + } else if (pi instanceof CloseParentheses) { + parenthesesClosed = true; + } + lastParseItem = pi; + } + while (!operators.isEmpty()) { + Operator o = operators.pop(); + o.getOperands(stack); + stack.push(o); + } + ParseItem rt = !stack.empty() ? stack.pop() : null; + if (args != null && rt != null) + args.push(rt); + this.arguments = args; + if (!stack.empty() || !operators.empty()) + logger.warn("Formula " + this.formula + " has a non-empty parse stack"); + return rt; + } + + private ArrayList getTokens() throws FormulaException { + ArrayList tokens = new ArrayList(); + StringReader sr = new StringReader(this.formula); + Yylex lex = new Yylex(sr); + lex.setExternalSheet(this.externalSheet); + lex.setNameTable(this.nameTable); + try { + ParseItem pi = lex.yylex(); + while (pi != null) { + tokens.add(pi); + pi = lex.yylex(); + } + } catch (IOException e) { + logger.warn(e.toString()); + } catch (Error e) { + throw new FormulaException(FormulaException.lexicalError, this.formula + " at char " + lex.getPos()); + } + return tokens; + } + + public String getFormula() { + if (this.parsedFormula == null) { + StringBuffer sb = new StringBuffer(); + this.root.getString(sb); + this.parsedFormula = sb.toString(); + } + return this.parsedFormula; + } + + public byte[] getBytes() { + byte[] bytes = this.root.getBytes(); + if (this.root.isVolatile()) { + byte[] newBytes = new byte[bytes.length + 4]; + System.arraycopy(bytes, 0, newBytes, 4, bytes.length); + newBytes[0] = Token.ATTRIBUTE.getCode(); + newBytes[1] = 1; + bytes = newBytes; + } + return bytes; + } + + private void handleFunction(StringFunction sf, Iterator i, Stack stack) throws FormulaException { + ParseItem pi2 = parseCurrent(i); + if (sf.getFunction(this.settings) == Function.UNKNOWN) + throw new FormulaException(FormulaException.unrecognizedFunction); + if (sf.getFunction(this.settings) == Function.SUM && this.arguments == null) { + Attribute a = new Attribute(sf, this.settings); + a.add(pi2); + stack.push(a); + return; + } + if (sf.getFunction(this.settings) == Function.IF) { + Attribute a = new Attribute(sf, this.settings); + VariableArgFunction vaf = new VariableArgFunction(this.settings); + int k = this.arguments.size(); + for (int j = 0; j < k; j++) { + ParseItem pi3 = this.arguments.get(j); + vaf.add(pi3); + } + a.setIfConditions(vaf); + stack.push(a); + return; + } + if (sf.getFunction(this.settings).getNumArgs() == 255) { + if (this.arguments == null) { + int numArgs = (pi2 != null) ? 1 : 0; + VariableArgFunction vaf = new VariableArgFunction(sf.getFunction(this.settings), numArgs, this.settings); + if (pi2 != null) + vaf.add(pi2); + stack.push(vaf); + } else { + int k = this.arguments.size(); + VariableArgFunction vaf = new VariableArgFunction(sf.getFunction(this.settings), k, this.settings); + ParseItem[] args = new ParseItem[k]; + int j; + for (j = 0; j < k; j++) { + ParseItem pi3 = this.arguments.pop(); + args[k - j - 1] = pi3; + } + for (j = 0; j < args.length; j++) + vaf.add(args[j]); + stack.push(vaf); + this.arguments.clear(); + this.arguments = null; + } + return; + } + BuiltInFunction bif = new BuiltInFunction(sf.getFunction(this.settings), this.settings); + int numargs = sf.getFunction(this.settings).getNumArgs(); + if (numargs == 1) { + bif.add(pi2); + } else { + if ((this.arguments == null && numargs != 0) || (this.arguments != null && numargs != this.arguments.size())) + throw new FormulaException(FormulaException.incorrectArguments); + for (int j = 0; j < numargs; j++) { + ParseItem pi3 = this.arguments.get(j); + bif.add(pi3); + } + } + stack.push(bif); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + this.root.adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + public void columnInserted(int sheetIndex, int col, boolean currentSheet) { + this.root.columnInserted(sheetIndex, col, currentSheet); + } + + public void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + this.root.columnRemoved(sheetIndex, col, currentSheet); + } + + public void rowInserted(int sheetIndex, int row, boolean currentSheet) { + this.root.rowInserted(sheetIndex, row, currentSheet); + } + + public void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + this.root.rowRemoved(sheetIndex, row, currentSheet); + } + + private void handleOperand(Operand o, Stack stack) { + if (!(o instanceof IntegerValue)) { + stack.push(o); + return; + } + if (o instanceof IntegerValue) { + IntegerValue iv = (IntegerValue)o; + if (!iv.isOutOfRange()) { + stack.push(iv); + } else { + DoubleValue dv = new DoubleValue(iv.getValue()); + stack.push(dv); + } + } + } +} diff --git a/hrmsEjb/jxl/biff/formula/StringFunction.java b/hrmsEjb/jxl/biff/formula/StringFunction.java new file mode 100644 index 0000000..2637021 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/StringFunction.java @@ -0,0 +1,22 @@ +package jxl.biff.formula; + +import common.Logger; +import jxl.WorkbookSettings; + +class StringFunction extends StringParseItem { + private static Logger logger = Logger.getLogger(StringFunction.class); + + private Function function; + + private String functionString; + + StringFunction(String s) { + this.functionString = s.substring(0, s.length() - 1); + } + + Function getFunction(WorkbookSettings ws) { + if (this.function == null) + this.function = Function.getFunction(this.functionString, ws); + return this.function; + } +} diff --git a/hrmsEjb/jxl/biff/formula/StringOperator.java b/hrmsEjb/jxl/biff/formula/StringOperator.java new file mode 100644 index 0000000..0612558 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/StringOperator.java @@ -0,0 +1,48 @@ +package jxl.biff.formula; + +import common.Assert; +import java.util.Stack; + +abstract class StringOperator extends Operator { + public void getOperands(Stack s) { + Assert.verify(false); + } + + int getPrecedence() { + Assert.verify(false); + return 0; + } + + byte[] getBytes() { + Assert.verify(false); + return null; + } + + void getString(StringBuffer buf) { + Assert.verify(false); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + Assert.verify(false); + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + Assert.verify(false); + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + Assert.verify(false); + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + Assert.verify(false); + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + Assert.verify(false); + } + + abstract Operator getBinaryOperator(); + + abstract Operator getUnaryOperator(); +} diff --git a/hrmsEjb/jxl/biff/formula/StringParseItem.java b/hrmsEjb/jxl/biff/formula/StringParseItem.java new file mode 100644 index 0000000..472d041 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/StringParseItem.java @@ -0,0 +1,19 @@ +package jxl.biff.formula; + +class StringParseItem extends ParseItem { + void getString(StringBuffer buf) {} + + byte[] getBytes() { + return new byte[0]; + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) {} + + void columnInserted(int sheetIndex, int col, boolean currentSheet) {} + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) {} + + void rowInserted(int sheetIndex, int row, boolean currentSheet) {} + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) {} +} diff --git a/hrmsEjb/jxl/biff/formula/StringValue.java b/hrmsEjb/jxl/biff/formula/StringValue.java new file mode 100644 index 0000000..4cd37df --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/StringValue.java @@ -0,0 +1,50 @@ +package jxl.biff.formula; + +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; + +class StringValue extends Operand implements ParsedThing { + private static final Logger logger = Logger.getLogger(StringValue.class); + + private String value; + + private WorkbookSettings settings; + + public StringValue(WorkbookSettings ws) { + this.settings = ws; + } + + public StringValue(String s) { + this.value = s; + } + + public int read(byte[] data, int pos) { + int length = IntegerHelper.getInt(data[pos], data[pos + 1]); + int consumed = 2; + if ((data[pos + 1] & 0x1) == 0) { + this.value = StringHelper.getString(data, length, pos + 2, this.settings); + consumed += length; + } else { + this.value = StringHelper.getUnicodeString(data, length, pos + 2); + consumed += length * 2; + } + return consumed; + } + + byte[] getBytes() { + byte[] data = new byte[this.value.length() * 2 + 3]; + data[0] = Token.STRING.getCode(); + data[1] = (byte)this.value.length(); + data[2] = 1; + StringHelper.getUnicodeBytes(this.value, data, 3); + return data; + } + + public void getString(StringBuffer buf) { + buf.append("\""); + buf.append(this.value); + buf.append("\""); + } +} diff --git a/hrmsEjb/jxl/biff/formula/Subtract.java b/hrmsEjb/jxl/biff/formula/Subtract.java new file mode 100644 index 0000000..d98e12a --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Subtract.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class Subtract extends BinaryOperator implements ParsedThing { + public String getSymbol() { + return "-"; + } + + Token getToken() { + return Token.SUBTRACT; + } + + int getPrecedence() { + return 4; + } +} diff --git a/hrmsEjb/jxl/biff/formula/Token.java b/hrmsEjb/jxl/biff/formula/Token.java new file mode 100644 index 0000000..ad05ed4 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Token.java @@ -0,0 +1,131 @@ +package jxl.biff.formula; + +import java.util.HashMap; + +class Token { + public final int[] value; + + private static HashMap tokens = new HashMap(20); + + private Token(int v) { + this.value = new int[] { v }; + tokens.put(new Integer(v), this); + } + + private Token(int v1, int v2) { + this.value = new int[] { v1, v2 }; + tokens.put(new Integer(v1), this); + tokens.put(new Integer(v2), this); + } + + private Token(int v1, int v2, int v3) { + this.value = new int[] { v1, v2, v3 }; + tokens.put(new Integer(v1), this); + tokens.put(new Integer(v2), this); + tokens.put(new Integer(v3), this); + } + + private Token(int v1, int v2, int v3, int v4) { + this.value = new int[] { v1, v2, v3, v4 }; + tokens.put(new Integer(v1), this); + tokens.put(new Integer(v2), this); + tokens.put(new Integer(v3), this); + tokens.put(new Integer(v4), this); + } + + private Token(int v1, int v2, int v3, int v4, int v5) { + this.value = new int[] { v1, v2, v3, v4, v5 }; + tokens.put(new Integer(v1), this); + tokens.put(new Integer(v2), this); + tokens.put(new Integer(v3), this); + tokens.put(new Integer(v4), this); + tokens.put(new Integer(v5), this); + } + + public byte getCode() { + return (byte)this.value[0]; + } + + public byte getCode2() { + return (byte)((this.value.length > 0) ? this.value[1] : this.value[0]); + } + + public static Token getToken(int v) { + Token t = (Token)tokens.get(new Integer(v)); + return (t != null) ? t : UNKNOWN; + } + + public static final Token REF = new Token(68, 36, 100); + + public static final Token REF3D = new Token(90, 58, 122); + + public static final Token MISSING_ARG = new Token(22); + + public static final Token STRING = new Token(23); + + public static final Token BOOL = new Token(29); + + public static final Token INTEGER = new Token(30); + + public static final Token DOUBLE = new Token(31); + + public static final Token REFERR = new Token(42, 74, 106); + + public static final Token REFV = new Token(44, 76, 108); + + public static final Token AREAV = new Token(45, 77, 109); + + public static final Token AREA = new Token(37, 101, 69); + + public static final Token NAMED_RANGE = new Token(67, 35, 99); + + public static final Token NAME = new Token(57); + + public static final Token AREA3D = new Token(59, 91); + + public static final Token UNARY_PLUS = new Token(18); + + public static final Token UNARY_MINUS = new Token(19); + + public static final Token PERCENT = new Token(20); + + public static final Token PARENTHESIS = new Token(21); + + public static final Token ADD = new Token(3); + + public static final Token SUBTRACT = new Token(4); + + public static final Token MULTIPLY = new Token(5); + + public static final Token DIVIDE = new Token(6); + + public static final Token POWER = new Token(7); + + public static final Token CONCAT = new Token(8); + + public static final Token LESS_THAN = new Token(9); + + public static final Token LESS_EQUAL = new Token(10); + + public static final Token EQUAL = new Token(11); + + public static final Token GREATER_EQUAL = new Token(12); + + public static final Token GREATER_THAN = new Token(13); + + public static final Token NOT_EQUAL = new Token(14); + + public static final Token UNION = new Token(16); + + public static final Token RANGE = new Token(17); + + public static final Token FUNCTION = new Token(65, 33, 97); + + public static final Token FUNCTIONVARARG = new Token(66, 34, 98); + + public static final Token ATTRIBUTE = new Token(25); + + public static final Token MEM_FUNC = new Token(41, 73, 105); + + public static final Token UNKNOWN = new Token(65535); +} diff --git a/hrmsEjb/jxl/biff/formula/TokenFormulaParser.java b/hrmsEjb/jxl/biff/formula/TokenFormulaParser.java new file mode 100644 index 0000000..36797d5 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/TokenFormulaParser.java @@ -0,0 +1,325 @@ +package jxl.biff.formula; + +import common.Assert; +import common.Logger; +import java.util.Stack; +import jxl.Cell; +import jxl.WorkbookSettings; +import jxl.biff.WorkbookMethods; + +class TokenFormulaParser implements Parser { + private static Logger logger = Logger.getLogger(TokenFormulaParser.class); + + private byte[] tokenData; + + private Cell relativeTo; + + private int pos; + + private ParseItem root; + + private Stack tokenStack; + + private ExternalSheet workbook; + + private WorkbookMethods nameTable; + + private WorkbookSettings settings; + + public TokenFormulaParser(byte[] data, Cell c, ExternalSheet es, WorkbookMethods nt, WorkbookSettings ws) { + this.tokenData = data; + this.pos = 0; + this.relativeTo = c; + this.workbook = es; + this.nameTable = nt; + this.tokenStack = new Stack(); + this.settings = ws; + } + + public void parse() throws FormulaException { + parseSubExpression(this.tokenData.length); + this.root = this.tokenStack.pop(); + Assert.verify(this.tokenStack.empty()); + } + + private void parseSubExpression(int len) throws FormulaException { + int tokenVal = 0; + Token t = null; + Stack ifStack = new Stack(); + int endpos = this.pos + len; + while (this.pos < endpos) { + tokenVal = this.tokenData[this.pos]; + this.pos++; + t = Token.getToken(tokenVal); + if (t == Token.UNKNOWN) + throw new FormulaException(FormulaException.unrecognizedToken, tokenVal); + Assert.verify((t != Token.UNKNOWN)); + if (t == Token.REF) { + CellReference cr = new CellReference(this.relativeTo); + this.pos += cr.read(this.tokenData, this.pos); + this.tokenStack.push(cr); + continue; + } + if (t == Token.REF) { + CellReferenceError cr = new CellReferenceError(); + this.pos += cr.read(this.tokenData, this.pos); + this.tokenStack.push(cr); + continue; + } + if (t == Token.REFV) { + SharedFormulaCellReference cr = new SharedFormulaCellReference(this.relativeTo); + this.pos += cr.read(this.tokenData, this.pos); + this.tokenStack.push(cr); + continue; + } + if (t == Token.REF3D) { + CellReference3d cr = new CellReference3d(this.relativeTo, this.workbook); + this.pos += cr.read(this.tokenData, this.pos); + this.tokenStack.push(cr); + continue; + } + if (t == Token.AREA) { + Area a = new Area(); + this.pos += a.read(this.tokenData, this.pos); + this.tokenStack.push(a); + continue; + } + if (t == Token.AREAV) { + SharedFormulaArea a = new SharedFormulaArea(this.relativeTo); + this.pos += a.read(this.tokenData, this.pos); + this.tokenStack.push(a); + continue; + } + if (t == Token.AREA3D) { + Area3d a = new Area3d(this.workbook); + this.pos += a.read(this.tokenData, this.pos); + this.tokenStack.push(a); + continue; + } + if (t == Token.NAME) { + Name n = new Name(); + this.pos += n.read(this.tokenData, this.pos); + this.tokenStack.push(n); + continue; + } + if (t == Token.NAMED_RANGE) { + NameRange nr = new NameRange(this.nameTable); + this.pos += nr.read(this.tokenData, this.pos); + this.tokenStack.push(nr); + continue; + } + if (t == Token.INTEGER) { + IntegerValue i = new IntegerValue(); + this.pos += i.read(this.tokenData, this.pos); + this.tokenStack.push(i); + continue; + } + if (t == Token.DOUBLE) { + DoubleValue d = new DoubleValue(); + this.pos += d.read(this.tokenData, this.pos); + this.tokenStack.push(d); + continue; + } + if (t == Token.BOOL) { + BooleanValue bv = new BooleanValue(); + this.pos += bv.read(this.tokenData, this.pos); + this.tokenStack.push(bv); + continue; + } + if (t == Token.STRING) { + StringValue sv = new StringValue(this.settings); + this.pos += sv.read(this.tokenData, this.pos); + this.tokenStack.push(sv); + continue; + } + if (t == Token.MISSING_ARG) { + MissingArg ma = new MissingArg(); + this.pos += ma.read(this.tokenData, this.pos); + this.tokenStack.push(ma); + continue; + } + if (t == Token.UNARY_PLUS) { + UnaryPlus up = new UnaryPlus(); + this.pos += up.read(this.tokenData, this.pos); + addOperator(up); + continue; + } + if (t == Token.UNARY_MINUS) { + UnaryMinus um = new UnaryMinus(); + this.pos += um.read(this.tokenData, this.pos); + addOperator(um); + continue; + } + if (t == Token.PERCENT) { + Percent p = new Percent(); + this.pos += p.read(this.tokenData, this.pos); + addOperator(p); + continue; + } + if (t == Token.SUBTRACT) { + Subtract s = new Subtract(); + this.pos += s.read(this.tokenData, this.pos); + addOperator(s); + continue; + } + if (t == Token.ADD) { + Add s = new Add(); + this.pos += s.read(this.tokenData, this.pos); + addOperator(s); + continue; + } + if (t == Token.MULTIPLY) { + Multiply s = new Multiply(); + this.pos += s.read(this.tokenData, this.pos); + addOperator(s); + continue; + } + if (t == Token.DIVIDE) { + Divide s = new Divide(); + this.pos += s.read(this.tokenData, this.pos); + addOperator(s); + continue; + } + if (t == Token.CONCAT) { + Concatenate c = new Concatenate(); + this.pos += c.read(this.tokenData, this.pos); + addOperator(c); + continue; + } + if (t == Token.POWER) { + Power p = new Power(); + this.pos += p.read(this.tokenData, this.pos); + addOperator(p); + continue; + } + if (t == Token.LESS_THAN) { + LessThan lt = new LessThan(); + this.pos += lt.read(this.tokenData, this.pos); + addOperator(lt); + continue; + } + if (t == Token.LESS_EQUAL) { + LessEqual lte = new LessEqual(); + this.pos += lte.read(this.tokenData, this.pos); + addOperator(lte); + continue; + } + if (t == Token.GREATER_THAN) { + GreaterThan gt = new GreaterThan(); + this.pos += gt.read(this.tokenData, this.pos); + addOperator(gt); + continue; + } + if (t == Token.GREATER_EQUAL) { + GreaterEqual gte = new GreaterEqual(); + this.pos += gte.read(this.tokenData, this.pos); + addOperator(gte); + continue; + } + if (t == Token.NOT_EQUAL) { + NotEqual ne = new NotEqual(); + this.pos += ne.read(this.tokenData, this.pos); + addOperator(ne); + continue; + } + if (t == Token.EQUAL) { + Equal e = new Equal(); + this.pos += e.read(this.tokenData, this.pos); + addOperator(e); + continue; + } + if (t == Token.PARENTHESIS) { + Parenthesis p = new Parenthesis(); + this.pos += p.read(this.tokenData, this.pos); + addOperator(p); + continue; + } + if (t == Token.ATTRIBUTE) { + Attribute a = new Attribute(this.settings); + this.pos += a.read(this.tokenData, this.pos); + if (a.isSum()) { + addOperator(a); + continue; + } + if (a.isIf()) + ifStack.push(a); + continue; + } + if (t == Token.FUNCTION) { + BuiltInFunction bif = new BuiltInFunction(this.settings); + this.pos += bif.read(this.tokenData, this.pos); + addOperator(bif); + continue; + } + if (t == Token.FUNCTIONVARARG) { + VariableArgFunction vaf = new VariableArgFunction(this.settings); + this.pos += vaf.read(this.tokenData, this.pos); + if (vaf.getFunction() != Function.ATTRIBUTE) { + addOperator(vaf); + continue; + } + vaf.getOperands(this.tokenStack); + Attribute ifattr = null; + if (ifStack.empty()) { + ifattr = new Attribute(this.settings); + } else { + ifattr = ifStack.pop(); + } + ifattr.setIfConditions(vaf); + this.tokenStack.push(ifattr); + continue; + } + if (t == Token.MEM_FUNC) { + MemFunc memFunc = new MemFunc(); + this.pos += memFunc.read(this.tokenData, this.pos); + Stack oldStack = this.tokenStack; + this.tokenStack = new Stack(); + parseSubExpression(memFunc.getLength()); + ParseItem[] subexpr = new ParseItem[this.tokenStack.size()]; + int i = 0; + while (!this.tokenStack.isEmpty()) { + subexpr[i] = this.tokenStack.pop(); + i++; + } + memFunc.setSubExpression(subexpr); + this.tokenStack = oldStack; + this.tokenStack.push(memFunc); + } + } + } + + private void addOperator(Operator o) { + o.getOperands(this.tokenStack); + this.tokenStack.push(o); + } + + public String getFormula() { + StringBuffer sb = new StringBuffer(); + this.root.getString(sb); + return sb.toString(); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + this.root.adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + public byte[] getBytes() { + return this.root.getBytes(); + } + + public void columnInserted(int sheetIndex, int col, boolean currentSheet) { + this.root.columnInserted(sheetIndex, col, currentSheet); + } + + public void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + this.root.columnRemoved(sheetIndex, col, currentSheet); + } + + public void rowInserted(int sheetIndex, int row, boolean currentSheet) { + this.root.rowInserted(sheetIndex, row, currentSheet); + } + + public void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + this.root.rowRemoved(sheetIndex, row, currentSheet); + } +} diff --git a/hrmsEjb/jxl/biff/formula/UnaryMinus.java b/hrmsEjb/jxl/biff/formula/UnaryMinus.java new file mode 100644 index 0000000..d2530b2 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/UnaryMinus.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class UnaryMinus extends UnaryOperator implements ParsedThing { + public String getSymbol() { + return "-"; + } + + Token getToken() { + return Token.UNARY_MINUS; + } + + int getPrecedence() { + return 2; + } +} diff --git a/hrmsEjb/jxl/biff/formula/UnaryOperator.java b/hrmsEjb/jxl/biff/formula/UnaryOperator.java new file mode 100644 index 0000000..a484941 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/UnaryOperator.java @@ -0,0 +1,58 @@ +package jxl.biff.formula; + +import java.util.Stack; + +abstract class UnaryOperator extends Operator implements ParsedThing { + public int read(byte[] data, int pos) { + return 0; + } + + public void getOperands(Stack s) { + ParseItem o1 = s.pop(); + add(o1); + } + + public void getString(StringBuffer buf) { + ParseItem[] operands = getOperands(); + buf.append(getSymbol()); + operands[0].getString(buf); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + ParseItem[] operands = getOperands(); + operands[0].adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].columnInserted(sheetIndex, col, currentSheet); + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].columnRemoved(sheetIndex, col, currentSheet); + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].rowInserted(sheetIndex, row, currentSheet); + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + operands[0].rowRemoved(sheetIndex, row, currentSheet); + } + + byte[] getBytes() { + ParseItem[] operands = getOperands(); + byte[] data = operands[0].getBytes(); + byte[] newdata = new byte[data.length + 1]; + System.arraycopy(data, 0, newdata, 0, data.length); + newdata[data.length] = getToken().getCode(); + return newdata; + } + + abstract String getSymbol(); + + abstract Token getToken(); +} diff --git a/hrmsEjb/jxl/biff/formula/UnaryPlus.java b/hrmsEjb/jxl/biff/formula/UnaryPlus.java new file mode 100644 index 0000000..fbe4607 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/UnaryPlus.java @@ -0,0 +1,15 @@ +package jxl.biff.formula; + +class UnaryPlus extends UnaryOperator implements ParsedThing { + public String getSymbol() { + return "+"; + } + + Token getToken() { + return Token.UNARY_PLUS; + } + + int getPrecedence() { + return 2; + } +} diff --git a/hrmsEjb/jxl/biff/formula/VariableArgFunction.java b/hrmsEjb/jxl/biff/formula/VariableArgFunction.java new file mode 100644 index 0000000..787ea06 --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/VariableArgFunction.java @@ -0,0 +1,139 @@ +package jxl.biff.formula; + +import common.Logger; +import java.util.Stack; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; + +class VariableArgFunction extends Operator implements ParsedThing { + private static Logger logger = Logger.getLogger(VariableArgFunction.class); + + private Function function; + + private int arguments; + + private boolean readFromSheet; + + private WorkbookSettings settings; + + public VariableArgFunction(WorkbookSettings ws) { + this.readFromSheet = true; + this.settings = ws; + } + + public VariableArgFunction(Function f, int a, WorkbookSettings ws) { + this.function = f; + this.arguments = a; + this.readFromSheet = false; + this.settings = ws; + } + + public int read(byte[] data, int pos) throws FormulaException { + this.arguments = data[pos]; + int index = IntegerHelper.getInt(data[pos + 1], data[pos + 2]); + this.function = Function.getFunction(index); + if (this.function == Function.UNKNOWN) + throw new FormulaException(FormulaException.unrecognizedFunction, index); + return 3; + } + + public void getOperands(Stack s) { + ParseItem[] items = new ParseItem[this.arguments]; + int i; + for (i = this.arguments - 1; i >= 0; i--) { + ParseItem pi = s.pop(); + items[i] = pi; + } + for (i = 0; i < this.arguments; i++) + add(items[i]); + } + + public void getString(StringBuffer buf) { + buf.append(this.function.getName(this.settings)); + buf.append('('); + if (this.arguments > 0) { + ParseItem[] operands = getOperands(); + if (this.readFromSheet) { + operands[0].getString(buf); + for (int i = 1; i < this.arguments; i++) { + buf.append(','); + operands[i].getString(buf); + } + } else { + operands[this.arguments - 1].getString(buf); + for (int i = this.arguments - 2; i >= 0; i--) { + buf.append(','); + operands[i].getString(buf); + } + } + } + buf.append(')'); + } + + public void adjustRelativeCellReferences(int colAdjust, int rowAdjust) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].adjustRelativeCellReferences(colAdjust, rowAdjust); + } + + void columnInserted(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].columnInserted(sheetIndex, col, currentSheet); + } + + void columnRemoved(int sheetIndex, int col, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].columnRemoved(sheetIndex, col, currentSheet); + } + + void rowInserted(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].rowInserted(sheetIndex, row, currentSheet); + } + + void rowRemoved(int sheetIndex, int row, boolean currentSheet) { + ParseItem[] operands = getOperands(); + for (int i = 0; i < operands.length; i++) + operands[i].rowRemoved(sheetIndex, row, currentSheet); + } + + Function getFunction() { + return this.function; + } + + byte[] getBytes() { + handleSpecialCases(); + ParseItem[] operands = getOperands(); + byte[] data = new byte[0]; + for (int i = 0; i < operands.length; i++) { + byte[] opdata = operands[i].getBytes(); + byte[] arrayOfByte1 = new byte[data.length + opdata.length]; + System.arraycopy(data, 0, arrayOfByte1, 0, data.length); + System.arraycopy(opdata, 0, arrayOfByte1, data.length, opdata.length); + data = arrayOfByte1; + } + byte[] newdata = new byte[data.length + 4]; + System.arraycopy(data, 0, newdata, 0, data.length); + newdata[data.length] = !useAlternateCode() ? Token.FUNCTIONVARARG.getCode() : Token.FUNCTIONVARARG.getCode2(); + newdata[data.length + 1] = (byte)this.arguments; + IntegerHelper.getTwoBytes(this.function.getCode(), newdata, data.length + 2); + return newdata; + } + + int getPrecedence() { + return 3; + } + + private void handleSpecialCases() { + if (this.function == Function.SUMPRODUCT) { + ParseItem[] operands = getOperands(); + for (int i = operands.length - 1; i >= 0; i--) { + if (operands[i] instanceof Area) + operands[i].setAlternateCode(); + } + } + } +} diff --git a/hrmsEjb/jxl/biff/formula/Yylex.java b/hrmsEjb/jxl/biff/formula/Yylex.java new file mode 100644 index 0000000..83a979c --- /dev/null +++ b/hrmsEjb/jxl/biff/formula/Yylex.java @@ -0,0 +1,503 @@ +package jxl.biff.formula; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import jxl.biff.WorkbookMethods; + +class Yylex { + private final int YY_BUFFER_SIZE = 512; + + private final int YY_F = -1; + + private final int YY_NO_STATE = -1; + + private final int YY_NOT_ACCEPT = 0; + + private final int YY_START = 1; + + private final int YY_END = 2; + + private final int YY_NO_ANCHOR = 4; + + private final int YY_BOL = 65536; + + private final int YY_EOF = 65537; + + private boolean emptyString; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + private BufferedReader yy_reader; + + private int yy_buffer_index; + + private int yy_buffer_read; + + private int yy_buffer_start; + + private int yy_buffer_end; + + private char[] yy_buffer; + + private int yychar; + + private int yyline; + + private boolean yy_at_bol; + + private int yy_lexical_state; + + private boolean yy_eof_done; + + private final int YYSTRING = 1; + + private final int YYINITIAL = 0; + + private final int[] yy_state_dtrans; + + private boolean yy_last_was_cr; + + private final int YY_E_INTERNAL = 0; + + private final int YY_E_MATCH = 1; + + private String[] yy_error_string; + + private int[] yy_acpt; + + private int[] yy_cmap; + + private int[] yy_rmap; + + private int[][] yy_nxt; + + int getPos() { + return this.yychar; + } + + void setExternalSheet(ExternalSheet es) { + this.externalSheet = es; + } + + void setNameTable(WorkbookMethods nt) { + this.nameTable = nt; + } + + Yylex(Reader reader) { + this(); + if (null == reader) + throw new Error("Error: Bad input stream initializer."); + this.yy_reader = new BufferedReader(reader); + } + + Yylex(InputStream instream) { + this(); + if (null == instream) + throw new Error("Error: Bad input stream initializer."); + this.yy_reader = new BufferedReader(new InputStreamReader(instream)); + } + + private Yylex() { + this.yy_eof_done = false; + this.YYSTRING = 1; + this.YYINITIAL = 0; + this.yy_state_dtrans = new int[] { 0, 30 }; + this.yy_last_was_cr = false; + this.YY_E_INTERNAL = 0; + this.YY_E_MATCH = 1; + this.yy_error_string = new String[] { "Error: Internal error.\n", "Error: Unmatched input.\n" }; + this.yy_acpt = new int[] { + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, + 0, 4, 4, 0, 4, 4, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 4, 0, 0, 4, 0 }; + this.yy_cmap = unpackFromString(1, 65538, "29:8,14:3,29:21,14,16,28,15,11,15:2,13,26,27,3,1,8,2,10,4,9:10,17,15,7,6,5,15:2,23,12:3,21,22,12:5,24,12:5,19,25,18,20,12:5,15:5,29,12:26,29,15,29,15,29:65409,0:2")[0]; + this.yy_rmap = unpackFromString(1, 89, "0,1,2,1,2:2,3,2,4,2,5,2:2,1:3,2:3,6,7,1,8,9,10,11,12,13,11,14,15,1,16,17,11,2,18,19,20,21,22,23,2,24,25,1,26,27,8,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,13,50,51,52,53,54,55,56,14,57,20,58,59,60,2,61,62,63")[0]; + this.yy_nxt = unpackFromString(64, 30, "1,2,3,4,5,6,7,8,9,10,32,40,32,43,11,85:2,12,83,32:3,88,32:3,13,14,15,-1:32,85,-1,85:10,46,85:2,86,85:9,-1:5,85,-1,85:3,16,85:6,46,85:2,86,85:9,-1:5,85,-1,85:2,17,18,85:6,46,85:2,86,85:9,-1:5,85,-1,85:6,10,48,85:2,46,85:2,86,85:9,-1:5,85,-1,85:6,19,85:3,46,85:2,86,55,85:8,-1:5,85,-1,85:6,33,34,49,34,46,85:2,86,50,34:8,21,-1:4,85,-1,85:6,22,85:3,46,85:2,86,85:9,-1:5,85,-1,85:7,35,85,35,46,85:2,86,85,35:8,-1:5,85,-1,85:6,24,85:3,46,85:2,86,68,85:8,-1:5,85,-1,85:6,44,34,85,34,46,85:2,86,85,34:8,21,-1:4,85,-1,85:7,42,85,42,46,85:2,86,85,42:8,-1:5,85,-1,85:6,27,85:3,46,85:2,86,85:9,-1:5,85,-1,85:6,29,85:3,46,85:2,86,85:9,-1:4,1,39:27,31,39,-1,85,-1,85:6,19,20,49,20,46,85:2,86,50,20:8,21,-1:4,85,-1,85:6,33,44,85,44,46,85:2,86,55,44:8,-1:13,36,-1:7,72,-1:22,45,-1,45,-1:5,45:8,-1:13,38,-1:21,39:27,-1,39,-1,85,-1,85:7,51,85,51,46,85:2,86,85,51:8,-1:5,85,-1,85:6,44,34,85,34,46,85:2,86,85,34:3,25,34:4,21,-1:4,85,-1,85:10,-1,85:12,-1:5,85,-1,85:6,44:2,85,44,46,85:2,86,85,44:8,-1:20,52,-1:14,85,-1,85:6,44,34,85,34,46,85:2,86,85,34:3,28,34:4,21,-1:4,85,-1,85:6,19,85:3,46,85:2,86,85:9,-1:5,85,-1,85:7,23,56,23,46,85:2,86,85,23:8,-1:5,85,-1,85:6,19,57,49,57,46,85:2,86,50,57:8,-1:14,58,59,58,-1:5,58:8,-1:5,85,-1,85:6,24,60,61,60,46,85:2,86,62,60:8,-1:5,85,-1,85:7,53,85,53,46,85:2,86,85,53:8,-1:5,85,-1,85:7,63,64,63,46,85:2,86,85,63:8,-1:5,85,-1,85:7,23,85,23,46,85:2,86,85,23:8,-1:5,85,-1,85:6,19,85,49,85,46,85:2,86,50,85:8,-1:13,36,65,66,65,-1:4,67,65:8,-1:14,58,-1,58,-1:5,58:8,-1:5,85,-1,85:6,24,85,61,85,46,85:2,86,62,85:8,-1:5,85,-1,85:6,24,85:3,46,85:2,86,85:9,-1:5,85,-1,85:7,26,69,26,46,85:2,86,85,26:8,-1:5,85,-1,85:6,27,70,71,70,46,85:2,86,85,70:8,-1:5,85,-1,85:7,63,85,63,46,85:2,86,85,63:8,-1:13,36,-1,66,-1:5,67,-1:21,36,-1:30,37,73,37,-1:5,37:8,-1:5,85,-1,85:7,74,75,74,46,85:2,86,85,74:8,-1:5,85,-1,85:7,26,85,26,46,85:2,86,85,26:8,-1:5,85,-1,85:6,27,85,71,85,46,85:2,86,85:9,-1:14,76,77,76,-1:5,76:8,-1:14,37,-1,37,-1:5,37:8,-1:5,85,-1,85:6,29,78,79,78,46,85:2,86,85,78:8,-1:5,85,-1,85:7,74,85,74,46,85:2,86,85,74:8,-1:13,38,80,81,80,-1:5,80:8,-1:14,76,-1,76,-1:5,76:8,-1:5,85,-1,85:6,29,85,79,85,46,85:2,86,85:9,-1:13,38,-1,81,-1:19,85,-1,85:6,33,34,49,34,46,85:2,86,50,34:2,41,34:5,21,-1:4,85,-1,85:6,19,20,49,20,46,85:2,86,50,20,82,20:6,21,-1:4,85,-1,85:6,44,34,85,34,46,85:2,86,85,34:7,47,21,-1:4,85,-1,85:7,53,54,53,46,85:2,86,85,53:8,-1:5,85,-1,85:6,33,34,49,34,46,85:2,86,50,34:6,84,34,21,-1:4,85,-1,85:6,19,20,49,20,46,85:2,86,50,20:5,87,20:2,21,-1:3"); + this.yy_buffer = new char[512]; + this.yy_buffer_read = 0; + this.yy_buffer_index = 0; + this.yy_buffer_start = 0; + this.yy_buffer_end = 0; + this.yychar = 0; + this.yyline = 0; + this.yy_at_bol = true; + this.yy_lexical_state = 0; + } + + private void yybegin(int state) { + this.yy_lexical_state = state; + } + + private int yy_advance() throws IOException { + if (this.yy_buffer_index < this.yy_buffer_read) + return this.yy_buffer[this.yy_buffer_index++]; + if (0 != this.yy_buffer_start) { + int i = this.yy_buffer_start; + int j = 0; + while (i < this.yy_buffer_read) { + this.yy_buffer[j] = this.yy_buffer[i]; + i++; + j++; + } + this.yy_buffer_end -= this.yy_buffer_start; + this.yy_buffer_start = 0; + this.yy_buffer_read = j; + this.yy_buffer_index = j; + int next_read = this.yy_reader.read(this.yy_buffer, this.yy_buffer_read, this.yy_buffer.length - this.yy_buffer_read); + if (-1 == next_read) + return 65537; + this.yy_buffer_read += next_read; + } + while (this.yy_buffer_index >= this.yy_buffer_read) { + if (this.yy_buffer_index >= this.yy_buffer.length) + this.yy_buffer = yy_double(this.yy_buffer); + int next_read = this.yy_reader.read(this.yy_buffer, this.yy_buffer_read, this.yy_buffer.length - this.yy_buffer_read); + if (-1 == next_read) + return 65537; + this.yy_buffer_read += next_read; + } + return this.yy_buffer[this.yy_buffer_index++]; + } + + private void yy_move_end() { + if (this.yy_buffer_end > this.yy_buffer_start && '\n' == this.yy_buffer[this.yy_buffer_end - 1]) + this.yy_buffer_end--; + if (this.yy_buffer_end > this.yy_buffer_start && '\r' == this.yy_buffer[this.yy_buffer_end - 1]) + this.yy_buffer_end--; + } + + private void yy_mark_start() { + for (int i = this.yy_buffer_start; i < this.yy_buffer_index; i++) { + if ('\n' == this.yy_buffer[i] && !this.yy_last_was_cr) + this.yyline++; + if ('\r' == this.yy_buffer[i]) { + this.yyline++; + this.yy_last_was_cr = true; + } else { + this.yy_last_was_cr = false; + } + } + this.yychar = this.yychar + this.yy_buffer_index - this.yy_buffer_start; + this.yy_buffer_start = this.yy_buffer_index; + } + + private void yy_mark_end() { + this.yy_buffer_end = this.yy_buffer_index; + } + + private void yy_to_mark() { + this.yy_buffer_index = this.yy_buffer_end; + this.yy_at_bol = (this.yy_buffer_end > this.yy_buffer_start && ('\r' == this.yy_buffer[this.yy_buffer_end - 1] || '\n' == this.yy_buffer[this.yy_buffer_end - 1] || '߬' == this.yy_buffer[this.yy_buffer_end - 1] || '߭' == this.yy_buffer[this.yy_buffer_end - 1])); + } + + private String yytext() { + return new String(this.yy_buffer, this.yy_buffer_start, this.yy_buffer_end - this.yy_buffer_start); + } + + private int yylength() { + return this.yy_buffer_end - this.yy_buffer_start; + } + + private char[] yy_double(char[] buf) { + char[] newbuf = new char[2 * buf.length]; + for (int i = 0; i < buf.length; i++) + newbuf[i] = buf[i]; + return newbuf; + } + + private void yy_error(int code, boolean fatal) { + System.out.print(this.yy_error_string[code]); + System.out.flush(); + if (fatal) + throw new Error("Fatal Error.\n"); + } + + private int[][] unpackFromString(int size1, int size2, String st) { + int colonIndex = -1; + int sequenceLength = 0; + int sequenceInteger = 0; + int[][] res = new int[size1][size2]; + for (int i = 0; i < size1; i++) { + for (int j = 0; j < size2; j++) { + if (sequenceLength != 0) { + res[i][j] = sequenceInteger; + sequenceLength--; + } else { + int commaIndex = st.indexOf(','); + String workString = (commaIndex == -1) ? st : st.substring(0, commaIndex); + st = st.substring(commaIndex + 1); + colonIndex = workString.indexOf(':'); + if (colonIndex == -1) { + res[i][j] = Integer.parseInt(workString); + } else { + String lengthString = workString.substring(colonIndex + 1); + sequenceLength = Integer.parseInt(lengthString); + workString = workString.substring(0, colonIndex); + sequenceInteger = Integer.parseInt(workString); + res[i][j] = sequenceInteger; + sequenceLength--; + } + } + } + } + return res; + } + + public ParseItem yylex() throws IOException, FormulaException { + int yy_anchor = 4; + int yy_state = this.yy_state_dtrans[this.yy_lexical_state]; + int yy_next_state = -1; + int yy_last_accept_state = -1; + boolean yy_initial = true; + yy_mark_start(); + int yy_this_accept = this.yy_acpt[yy_state]; + if (0 != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + while (true) { + int yy_lookahead; + if (yy_initial && this.yy_at_bol) { + yy_lookahead = 65536; + } else { + yy_lookahead = yy_advance(); + } + yy_next_state = -1; + yy_next_state = this.yy_nxt[this.yy_rmap[yy_state]][this.yy_cmap[yy_lookahead]]; + if (65537 == yy_lookahead && true == yy_initial) + return null; + if (-1 != yy_next_state) { + yy_state = yy_next_state; + yy_initial = false; + yy_this_accept = this.yy_acpt[yy_state]; + if (0 != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + continue; + } + if (-1 == yy_last_accept_state) + throw new Error("Lexical Error: Unmatched Input."); + yy_anchor = this.yy_acpt[yy_last_accept_state]; + if (0 != (0x2 & yy_anchor)) + yy_move_end(); + yy_to_mark(); + switch (yy_last_accept_state) { + case -2: + case 1: + break; + case 2: + return new Plus(); + case -3: + break; + case 3: + return new Minus(); + case -4: + break; + case 4: + return new Multiply(); + case -5: + break; + case 5: + return new Divide(); + case -6: + break; + case 6: + return new GreaterThan(); + case -7: + break; + case 7: + return new Equal(); + case -8: + break; + case 8: + return new LessThan(); + case -9: + break; + case 9: + return new ArgumentSeparator(); + case -10: + break; + case 10: + return new IntegerValue(yytext()); + case -11: + case -12: + case 11: + break; + case 12: + return new RangeSeparator(); + case -13: + break; + case 13: + return new OpenParentheses(); + case -14: + break; + case 14: + return new CloseParentheses(); + case -15: + break; + case 15: + this.emptyString = true; + yybegin(1); + break; + case -16: + break; + case 16: + return new GreaterEqual(); + case -17: + break; + case 17: + return new NotEqual(); + case -18: + break; + case 18: + return new LessEqual(); + case -19: + break; + case 19: + return new CellReference(yytext()); + case -20: + break; + case 20: + return new NameRange(yytext(), this.nameTable); + case -21: + break; + case 21: + return new StringFunction(yytext()); + case -22: + break; + case 22: + return new DoubleValue(yytext()); + case -23: + break; + case 23: + return new ColumnRange(yytext()); + case -24: + break; + case 24: + return new CellReference3d(yytext(), this.externalSheet); + case -25: + break; + case 25: + return new BooleanValue(yytext()); + case -26: + break; + case 26: + return new ColumnRange3d(yytext(), this.externalSheet); + case -27: + break; + case 27: + return new Area(yytext()); + case -28: + break; + case 28: + return new BooleanValue(yytext()); + case -29: + break; + case 29: + return new Area3d(yytext(), this.externalSheet); + case -30: + break; + case 30: + this.emptyString = false; + return new StringValue(yytext()); + case -31: + break; + case 31: + yybegin(0); + if (this.emptyString) + return new StringValue(""); + break; + case -32: + break; + case 33: + return new CellReference(yytext()); + case -33: + break; + case 34: + return new NameRange(yytext(), this.nameTable); + case -34: + break; + case 35: + return new ColumnRange(yytext()); + case -35: + break; + case 36: + return new CellReference3d(yytext(), this.externalSheet); + case -36: + break; + case 37: + return new ColumnRange3d(yytext(), this.externalSheet); + case -37: + break; + case 38: + return new Area3d(yytext(), this.externalSheet); + case -38: + break; + case 39: + this.emptyString = false; + return new StringValue(yytext()); + case -39: + break; + case 41: + return new NameRange(yytext(), this.nameTable); + case -40: + break; + case 42: + return new ColumnRange3d(yytext(), this.externalSheet); + case -41: + break; + case 44: + return new NameRange(yytext(), this.nameTable); + case -42: + break; + case 45: + return new ColumnRange3d(yytext(), this.externalSheet); + case -43: + break; + case 47: + return new NameRange(yytext(), this.nameTable); + case -44: + break; + case 82: + return new NameRange(yytext(), this.nameTable); + case -45: + break; + case 84: + return new NameRange(yytext(), this.nameTable); + case -46: + break; + case 87: + return new NameRange(yytext(), this.nameTable); + case -47: + break; + default: + yy_error(0, false); + break; + case -1: + break; + } + yy_initial = true; + yy_state = this.yy_state_dtrans[this.yy_lexical_state]; + yy_next_state = -1; + yy_last_accept_state = -1; + yy_mark_start(); + yy_this_accept = this.yy_acpt[yy_state]; + if (0 != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + } + } +} diff --git a/hrmsEjb/jxl/format/Alignment.java b/hrmsEjb/jxl/format/Alignment.java new file mode 100644 index 0000000..a345ab1 --- /dev/null +++ b/hrmsEjb/jxl/format/Alignment.java @@ -0,0 +1,46 @@ +package jxl.format; + +public class Alignment { + private int value; + + private String string; + + private static Alignment[] alignments = new Alignment[0]; + + protected Alignment(int val, String s) { + this.value = val; + this.string = s; + Alignment[] oldaligns = alignments; + alignments = new Alignment[oldaligns.length + 1]; + System.arraycopy(oldaligns, 0, alignments, 0, oldaligns.length); + alignments[oldaligns.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public static Alignment getAlignment(int val) { + for (int i = 0; i < alignments.length; i++) { + if (alignments[i].getValue() == val) + return alignments[i]; + } + return GENERAL; + } + + public static Alignment GENERAL = new Alignment(0, "general"); + + public static Alignment LEFT = new Alignment(1, "left"); + + public static Alignment CENTRE = new Alignment(2, "centre"); + + public static Alignment RIGHT = new Alignment(3, "right"); + + public static Alignment FILL = new Alignment(4, "fill"); + + public static Alignment JUSTIFY = new Alignment(5, "justify"); +} diff --git a/hrmsEjb/jxl/format/Border.java b/hrmsEjb/jxl/format/Border.java new file mode 100644 index 0000000..9f18dd7 --- /dev/null +++ b/hrmsEjb/jxl/format/Border.java @@ -0,0 +1,25 @@ +package jxl.format; + +public class Border { + private String string; + + protected Border(String s) { + this.string = s; + } + + public String getDescription() { + return this.string; + } + + public static final Border NONE = new Border("none"); + + public static final Border ALL = new Border("all"); + + public static final Border TOP = new Border("top"); + + public static final Border BOTTOM = new Border("bottom"); + + public static final Border LEFT = new Border("left"); + + public static final Border RIGHT = new Border("right"); +} diff --git a/hrmsEjb/jxl/format/BorderLineStyle.java b/hrmsEjb/jxl/format/BorderLineStyle.java new file mode 100644 index 0000000..0951b95 --- /dev/null +++ b/hrmsEjb/jxl/format/BorderLineStyle.java @@ -0,0 +1,62 @@ +package jxl.format; + +public class BorderLineStyle { + private int value; + + private String string; + + private static BorderLineStyle[] styles = new BorderLineStyle[0]; + + protected BorderLineStyle(int val, String s) { + this.value = val; + this.string = s; + BorderLineStyle[] oldstyles = styles; + styles = new BorderLineStyle[oldstyles.length + 1]; + System.arraycopy(oldstyles, 0, styles, 0, oldstyles.length); + styles[oldstyles.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public static BorderLineStyle getStyle(int val) { + for (int i = 0; i < styles.length; i++) { + if (styles[i].getValue() == val) + return styles[i]; + } + return NONE; + } + + public static final BorderLineStyle NONE = new BorderLineStyle(0, "none"); + + public static final BorderLineStyle THIN = new BorderLineStyle(1, "thin"); + + public static final BorderLineStyle MEDIUM = new BorderLineStyle(2, "medium"); + + public static final BorderLineStyle DASHED = new BorderLineStyle(3, "dashed"); + + public static final BorderLineStyle DOTTED = new BorderLineStyle(4, "dotted"); + + public static final BorderLineStyle THICK = new BorderLineStyle(5, "thick"); + + public static final BorderLineStyle DOUBLE = new BorderLineStyle(6, "double"); + + public static final BorderLineStyle HAIR = new BorderLineStyle(7, "hair"); + + public static final BorderLineStyle MEDIUM_DASHED = new BorderLineStyle(8, "medium dashed"); + + public static final BorderLineStyle DASH_DOT = new BorderLineStyle(9, "dash dot"); + + public static final BorderLineStyle MEDIUM_DASH_DOT = new BorderLineStyle(10, "medium dash dot"); + + public static final BorderLineStyle DASH_DOT_DOT = new BorderLineStyle(11, "Dash dot dot"); + + public static final BorderLineStyle MEDIUM_DASH_DOT_DOT = new BorderLineStyle(12, "Medium dash dot dot"); + + public static final BorderLineStyle SLANTED_DASH_DOT = new BorderLineStyle(13, "Slanted dash dot"); +} diff --git a/hrmsEjb/jxl/format/CellFormat.java b/hrmsEjb/jxl/format/CellFormat.java new file mode 100644 index 0000000..76f674e --- /dev/null +++ b/hrmsEjb/jxl/format/CellFormat.java @@ -0,0 +1,33 @@ +package jxl.format; + +public interface CellFormat { + Format getFormat(); + + Font getFont(); + + boolean getWrap(); + + Alignment getAlignment(); + + VerticalAlignment getVerticalAlignment(); + + Orientation getOrientation(); + + BorderLineStyle getBorder(Border paramBorder); + + BorderLineStyle getBorderLine(Border paramBorder); + + Colour getBorderColour(Border paramBorder); + + boolean hasBorders(); + + Colour getBackgroundColour(); + + Pattern getPattern(); + + int getIndentation(); + + boolean isShrinkToFit(); + + boolean isLocked(); +} diff --git a/hrmsEjb/jxl/format/Colour.java b/hrmsEjb/jxl/format/Colour.java new file mode 100644 index 0000000..e8350c1 --- /dev/null +++ b/hrmsEjb/jxl/format/Colour.java @@ -0,0 +1,183 @@ +package jxl.format; + +public class Colour { + private int value; + + private RGB rgb; + + private String string; + + private static Colour[] colours = new Colour[0]; + + protected Colour(int val, String s, int r, int g, int b) { + this.value = val; + this.string = s; + this.rgb = new RGB(r, g, b); + Colour[] oldcols = colours; + colours = new Colour[oldcols.length + 1]; + System.arraycopy(oldcols, 0, colours, 0, oldcols.length); + colours[oldcols.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public int getDefaultRed() { + return this.rgb.getRed(); + } + + public int getDefaultGreen() { + return this.rgb.getGreen(); + } + + public int getDefaultBlue() { + return this.rgb.getBlue(); + } + + public RGB getDefaultRGB() { + return this.rgb; + } + + public static Colour getInternalColour(int val) { + for (int i = 0; i < colours.length; i++) { + if (colours[i].getValue() == val) + return colours[i]; + } + return UNKNOWN; + } + + public static Colour[] getAllColours() { + return colours; + } + + public static final Colour UNKNOWN = new Colour(32750, "unknown", 0, 0, 0); + + public static final Colour BLACK = new Colour(32767, "black", 0, 0, 0); + + public static final Colour WHITE = new Colour(9, "white", 255, 255, 255); + + public static final Colour DEFAULT_BACKGROUND1 = new Colour(0, "default background", 255, 255, 255); + + public static final Colour DEFAULT_BACKGROUND = new Colour(192, "default background", 255, 255, 255); + + public static final Colour PALETTE_BLACK = new Colour(8, "black", 1, 0, 0); + + public static final Colour RED = new Colour(10, "red", 255, 0, 0); + + public static final Colour BRIGHT_GREEN = new Colour(11, "bright green", 0, 255, 0); + + public static final Colour BLUE = new Colour(12, "blue", 0, 0, 255), YELLOW = new Colour(13, "yellow", 255, 255, 0); + + public static final Colour PINK = new Colour(14, "pink", 255, 0, 255); + + public static final Colour TURQUOISE = new Colour(15, "turquoise", 0, 255, 255); + + public static final Colour DARK_RED = new Colour(16, "dark red", 128, 0, 0); + + public static final Colour GREEN = new Colour(17, "green", 0, 128, 0); + + public static final Colour DARK_BLUE = new Colour(18, "dark blue", 0, 0, 128); + + public static final Colour DARK_YELLOW = new Colour(19, "dark yellow", 128, 128, 0); + + public static final Colour VIOLET = new Colour(20, "violet", 128, 128, 0); + + public static final Colour TEAL = new Colour(21, "teal", 0, 128, 128); + + public static final Colour GREY_25_PERCENT = new Colour(22, "grey 25%", 192, 192, 192); + + public static final Colour GREY_50_PERCENT = new Colour(23, "grey 50%", 128, 128, 128); + + public static final Colour PERIWINKLE = new Colour(24, "periwinkle%", 153, 153, 255); + + public static final Colour PLUM2 = new Colour(25, "plum", 153, 51, 102); + + public static final Colour IVORY = new Colour(26, "ivory", 255, 255, 204); + + public static final Colour LIGHT_TURQUOISE2 = new Colour(27, "light turquoise", 204, 255, 255); + + public static final Colour DARK_PURPLE = new Colour(28, "dark purple", 102, 0, 102); + + public static final Colour CORAL = new Colour(29, "coral", 255, 128, 128); + + public static final Colour OCEAN_BLUE = new Colour(30, "ocean blue", 0, 102, 204); + + public static final Colour ICE_BLUE = new Colour(31, "ice blue", 204, 204, 255); + + public static final Colour DARK_BLUE2 = new Colour(32, "dark blue", 0, 0, 128); + + public static final Colour PINK2 = new Colour(33, "pink", 255, 0, 255); + + public static final Colour YELLOW2 = new Colour(34, "yellow", 255, 255, 0); + + public static final Colour TURQOISE2 = new Colour(35, "turqoise", 0, 255, 255); + + public static final Colour VIOLET2 = new Colour(36, "violet", 128, 0, 128); + + public static final Colour DARK_RED2 = new Colour(37, "dark red", 128, 0, 0); + + public static final Colour TEAL2 = new Colour(38, "teal", 0, 128, 128); + + public static final Colour BLUE2 = new Colour(39, "blue", 0, 0, 255); + + public static final Colour SKY_BLUE = new Colour(40, "sky blue", 0, 204, 255); + + public static final Colour LIGHT_TURQUOISE = new Colour(41, "light turquoise", 204, 255, 255); + + public static final Colour LIGHT_GREEN = new Colour(42, "light green", 204, 255, 204); + + public static final Colour VERY_LIGHT_YELLOW = new Colour(43, "very light yellow", 255, 255, 153); + + public static final Colour PALE_BLUE = new Colour(44, "pale blue", 153, 204, 255); + + public static final Colour ROSE = new Colour(45, "rose", 255, 153, 204); + + public static final Colour LAVENDER = new Colour(46, "lavender", 204, 153, 255); + + public static final Colour TAN = new Colour(47, "tan", 255, 204, 153); + + public static final Colour LIGHT_BLUE = new Colour(48, "light blue", 51, 102, 255); + + public static final Colour AQUA = new Colour(49, "aqua", 51, 204, 204); + + public static final Colour LIME = new Colour(50, "lime", 153, 204, 0); + + public static final Colour GOLD = new Colour(51, "gold", 255, 204, 0); + + public static final Colour LIGHT_ORANGE = new Colour(52, "light orange", 255, 153, 0); + + public static final Colour ORANGE = new Colour(53, "orange", 255, 102, 0); + + public static final Colour BLUE_GREY = new Colour(54, "blue grey", 102, 102, 204); + + public static final Colour GREY_40_PERCENT = new Colour(55, "grey 40%", 150, 150, 150); + + public static final Colour DARK_TEAL = new Colour(56, "dark teal", 0, 51, 102); + + public static final Colour SEA_GREEN = new Colour(57, "sea green", 51, 153, 102); + + public static final Colour DARK_GREEN = new Colour(58, "dark green", 0, 51, 0); + + public static final Colour OLIVE_GREEN = new Colour(59, "olive green", 51, 51, 0); + + public static final Colour BROWN = new Colour(60, "brown", 153, 51, 0); + + public static final Colour PLUM = new Colour(61, "plum", 153, 51, 102); + + public static final Colour INDIGO = new Colour(62, "indigo", 51, 51, 153); + + public static final Colour GREY_80_PERCENT = new Colour(63, "grey 80%", 51, 51, 51); + + public static final Colour AUTOMATIC = new Colour(64, "automatic", 255, 255, 255); + + public static final Colour GRAY_80 = GREY_80_PERCENT; + + public static final Colour GRAY_50 = GREY_50_PERCENT; + + public static final Colour GRAY_25 = GREY_25_PERCENT; +} diff --git a/hrmsEjb/jxl/format/Font.java b/hrmsEjb/jxl/format/Font.java new file mode 100644 index 0000000..3fdbc80 --- /dev/null +++ b/hrmsEjb/jxl/format/Font.java @@ -0,0 +1,19 @@ +package jxl.format; + +public interface Font { + String getName(); + + int getPointSize(); + + int getBoldWeight(); + + boolean isItalic(); + + boolean isStruckout(); + + UnderlineStyle getUnderlineStyle(); + + Colour getColour(); + + ScriptStyle getScriptStyle(); +} diff --git a/hrmsEjb/jxl/format/Format.java b/hrmsEjb/jxl/format/Format.java new file mode 100644 index 0000000..41bdb15 --- /dev/null +++ b/hrmsEjb/jxl/format/Format.java @@ -0,0 +1,5 @@ +package jxl.format; + +public interface Format { + String getFormatString(); +} diff --git a/hrmsEjb/jxl/format/Orientation.java b/hrmsEjb/jxl/format/Orientation.java new file mode 100644 index 0000000..1aec3fd --- /dev/null +++ b/hrmsEjb/jxl/format/Orientation.java @@ -0,0 +1,48 @@ +package jxl.format; + +public final class Orientation { + private int value; + + private String string; + + private static Orientation[] orientations = new Orientation[0]; + + protected Orientation(int val, String s) { + this.value = val; + this.string = s; + Orientation[] oldorients = orientations; + orientations = new Orientation[oldorients.length + 1]; + System.arraycopy(oldorients, 0, orientations, 0, oldorients.length); + orientations[oldorients.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public static Orientation getOrientation(int val) { + for (int i = 0; i < orientations.length; i++) { + if (orientations[i].getValue() == val) + return orientations[i]; + } + return HORIZONTAL; + } + + public static Orientation HORIZONTAL = new Orientation(0, "horizontal"); + + public static Orientation VERTICAL = new Orientation(255, "vertical"); + + public static Orientation PLUS_90 = new Orientation(90, "up 90"); + + public static Orientation MINUS_90 = new Orientation(180, "down 90"); + + public static Orientation PLUS_45 = new Orientation(45, "up 45"); + + public static Orientation MINUS_45 = new Orientation(135, "down 45"); + + public static Orientation STACKED = new Orientation(255, "stacked"); +} diff --git a/hrmsEjb/jxl/format/PageOrientation.java b/hrmsEjb/jxl/format/PageOrientation.java new file mode 100644 index 0000000..d298a1c --- /dev/null +++ b/hrmsEjb/jxl/format/PageOrientation.java @@ -0,0 +1,7 @@ +package jxl.format; + +public final class PageOrientation { + public static PageOrientation PORTRAIT = new PageOrientation(); + + public static PageOrientation LANDSCAPE = new PageOrientation(); +} diff --git a/hrmsEjb/jxl/format/PaperSize.java b/hrmsEjb/jxl/format/PaperSize.java new file mode 100644 index 0000000..c4d155b --- /dev/null +++ b/hrmsEjb/jxl/format/PaperSize.java @@ -0,0 +1,193 @@ +package jxl.format; + +public final class PaperSize { + private static final int LAST_PAPER_SIZE = 89; + + private int val; + + private static PaperSize[] paperSizes = new PaperSize[90]; + + private PaperSize(int v, boolean growArray) { + this.val = v; + if (v >= paperSizes.length && growArray) { + PaperSize[] newarray = new PaperSize[v + 1]; + System.arraycopy(paperSizes, 0, newarray, 0, paperSizes.length); + paperSizes = newarray; + } + if (v < paperSizes.length) + paperSizes[v] = this; + } + + private PaperSize(int v) { + this(v, true); + } + + public int getValue() { + return this.val; + } + + public static PaperSize getPaperSize(int val) { + PaperSize p = (val > paperSizes.length - 1) ? null : paperSizes[val]; + return (p == null) ? new PaperSize(val, false) : p; + } + + public static final PaperSize UNDEFINED = new PaperSize(0); + + public static final PaperSize LETTER = new PaperSize(1); + + public static final PaperSize LETTER_SMALL = new PaperSize(2); + + public static final PaperSize TABLOID = new PaperSize(3); + + public static final PaperSize LEDGER = new PaperSize(4); + + public static final PaperSize LEGAL = new PaperSize(5); + + public static final PaperSize STATEMENT = new PaperSize(6); + + public static final PaperSize EXECUTIVE = new PaperSize(7); + + public static final PaperSize A3 = new PaperSize(8); + + public static final PaperSize A4 = new PaperSize(9); + + public static final PaperSize A4_SMALL = new PaperSize(10); + + public static final PaperSize A5 = new PaperSize(11); + + public static final PaperSize B4 = new PaperSize(12); + + public static final PaperSize B5 = new PaperSize(13); + + public static final PaperSize FOLIO = new PaperSize(14); + + public static final PaperSize QUARTO = new PaperSize(15); + + public static final PaperSize SIZE_10x14 = new PaperSize(16); + + public static final PaperSize SIZE_10x17 = new PaperSize(17); + + public static final PaperSize NOTE = new PaperSize(18); + + public static final PaperSize ENVELOPE_9 = new PaperSize(19); + + public static final PaperSize ENVELOPE_10 = new PaperSize(20); + + public static final PaperSize ENVELOPE_11 = new PaperSize(21); + + public static final PaperSize ENVELOPE_12 = new PaperSize(22); + + public static final PaperSize ENVELOPE_14 = new PaperSize(23); + + public static final PaperSize C = new PaperSize(24); + + public static final PaperSize D = new PaperSize(25); + + public static final PaperSize E = new PaperSize(26); + + public static final PaperSize ENVELOPE_DL = new PaperSize(27); + + public static final PaperSize ENVELOPE_C5 = new PaperSize(28); + + public static final PaperSize ENVELOPE_C3 = new PaperSize(29); + + public static final PaperSize ENVELOPE_C4 = new PaperSize(30); + + public static final PaperSize ENVELOPE_C6 = new PaperSize(31); + + public static final PaperSize ENVELOPE_C6_C5 = new PaperSize(32); + + public static final PaperSize B4_ISO = new PaperSize(33); + + public static final PaperSize B5_ISO = new PaperSize(34); + + public static final PaperSize B6_ISO = new PaperSize(35); + + public static final PaperSize ENVELOPE_ITALY = new PaperSize(36); + + public static final PaperSize ENVELOPE_MONARCH = new PaperSize(37); + + public static final PaperSize ENVELOPE_6_75 = new PaperSize(38); + + public static final PaperSize US_FANFOLD = new PaperSize(39); + + public static final PaperSize GERMAN_FANFOLD = new PaperSize(40); + + public static final PaperSize GERMAN_LEGAL_FANFOLD = new PaperSize(41); + + public static final PaperSize B4_ISO_2 = new PaperSize(42); + + public static final PaperSize JAPANESE_POSTCARD = new PaperSize(43); + + public static final PaperSize SIZE_9x11 = new PaperSize(44); + + public static final PaperSize SIZE_10x11 = new PaperSize(45); + + public static final PaperSize SIZE_15x11 = new PaperSize(46); + + public static final PaperSize ENVELOPE_INVITE = new PaperSize(47); + + public static final PaperSize LETTER_EXTRA = new PaperSize(50); + + public static final PaperSize LEGAL_EXTRA = new PaperSize(51); + + public static final PaperSize TABLOID_EXTRA = new PaperSize(52); + + public static final PaperSize A4_EXTRA = new PaperSize(53); + + public static final PaperSize LETTER_TRANSVERSE = new PaperSize(54); + + public static final PaperSize A4_TRANSVERSE = new PaperSize(55); + + public static final PaperSize LETTER_EXTRA_TRANSVERSE = new PaperSize(56); + + public static final PaperSize SUPER_A_A4 = new PaperSize(57); + + public static final PaperSize SUPER_B_A3 = new PaperSize(58); + + public static final PaperSize LETTER_PLUS = new PaperSize(59); + + public static final PaperSize A4_PLUS = new PaperSize(60); + + public static final PaperSize A5_TRANSVERSE = new PaperSize(61); + + public static final PaperSize B5_TRANSVERSE = new PaperSize(62); + + public static final PaperSize A3_EXTRA = new PaperSize(63); + + public static final PaperSize A5_EXTRA = new PaperSize(64); + + public static final PaperSize B5_EXTRA = new PaperSize(65); + + public static final PaperSize A2 = new PaperSize(66); + + public static final PaperSize A3_TRANSVERSE = new PaperSize(67); + + public static final PaperSize A3_EXTRA_TRANSVERSE = new PaperSize(68); + + public static final PaperSize DOUBLE_JAPANESE_POSTCARD = new PaperSize(69); + + public static final PaperSize A6 = new PaperSize(70); + + public static final PaperSize LETTER_ROTATED = new PaperSize(75); + + public static final PaperSize A3_ROTATED = new PaperSize(76); + + public static final PaperSize A4_ROTATED = new PaperSize(77); + + public static final PaperSize A5_ROTATED = new PaperSize(78); + + public static final PaperSize B4_ROTATED = new PaperSize(79); + + public static final PaperSize B5_ROTATED = new PaperSize(80); + + public static final PaperSize JAPANESE_POSTCARD_ROTATED = new PaperSize(81); + + public static final PaperSize DOUBLE_JAPANESE_POSTCARD_ROTATED = new PaperSize(82); + + public static final PaperSize A6_ROTATED = new PaperSize(83); + + public static final PaperSize B6 = new PaperSize(88); + + public static final PaperSize B6_ROTATED = new PaperSize(89); +} diff --git a/hrmsEjb/jxl/format/Pattern.java b/hrmsEjb/jxl/format/Pattern.java new file mode 100644 index 0000000..31228c0 --- /dev/null +++ b/hrmsEjb/jxl/format/Pattern.java @@ -0,0 +1,72 @@ +package jxl.format; + +public class Pattern { + private int value; + + private String string; + + private static Pattern[] patterns = new Pattern[0]; + + protected Pattern(int val, String s) { + this.value = val; + this.string = s; + Pattern[] oldcols = patterns; + patterns = new Pattern[oldcols.length + 1]; + System.arraycopy(oldcols, 0, patterns, 0, oldcols.length); + patterns[oldcols.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public static Pattern getPattern(int val) { + for (int i = 0; i < patterns.length; i++) { + if (patterns[i].getValue() == val) + return patterns[i]; + } + return NONE; + } + + public static final Pattern NONE = new Pattern(0, "None"); + + public static final Pattern SOLID = new Pattern(1, "Solid"); + + public static final Pattern GRAY_50 = new Pattern(2, "Gray 50%"); + + public static final Pattern GRAY_75 = new Pattern(3, "Gray 75%"); + + public static final Pattern GRAY_25 = new Pattern(4, "Gray 25%"); + + public static final Pattern PATTERN1 = new Pattern(5, "Pattern 1"); + + public static final Pattern PATTERN2 = new Pattern(6, "Pattern 2"); + + public static final Pattern PATTERN3 = new Pattern(7, "Pattern 3"); + + public static final Pattern PATTERN4 = new Pattern(8, "Pattern 4"); + + public static final Pattern PATTERN5 = new Pattern(9, "Pattern 5"); + + public static final Pattern PATTERN6 = new Pattern(10, "Pattern 6"); + + public static final Pattern PATTERN7 = new Pattern(11, "Pattern 7"); + + public static final Pattern PATTERN8 = new Pattern(12, "Pattern 8"); + + public static final Pattern PATTERN9 = new Pattern(13, "Pattern 9"); + + public static final Pattern PATTERN10 = new Pattern(14, "Pattern 10"); + + public static final Pattern PATTERN11 = new Pattern(15, "Pattern 11"); + + public static final Pattern PATTERN12 = new Pattern(16, "Pattern 12"); + + public static final Pattern PATTERN13 = new Pattern(17, "Pattern 13"); + + public static final Pattern PATTERN14 = new Pattern(18, "Pattern 14"); +} diff --git a/hrmsEjb/jxl/format/RGB.java b/hrmsEjb/jxl/format/RGB.java new file mode 100644 index 0000000..f07e33b --- /dev/null +++ b/hrmsEjb/jxl/format/RGB.java @@ -0,0 +1,27 @@ +package jxl.format; + +public final class RGB { + private int red; + + private int green; + + private int blue; + + public RGB(int r, int g, int b) { + this.red = r; + this.green = g; + this.blue = b; + } + + public int getRed() { + return this.red; + } + + public int getGreen() { + return this.green; + } + + public int getBlue() { + return this.blue; + } +} diff --git a/hrmsEjb/jxl/format/ScriptStyle.java b/hrmsEjb/jxl/format/ScriptStyle.java new file mode 100644 index 0000000..fc89b28 --- /dev/null +++ b/hrmsEjb/jxl/format/ScriptStyle.java @@ -0,0 +1,40 @@ +package jxl.format; + +public final class ScriptStyle { + private int value; + + private String string; + + private static ScriptStyle[] styles = new ScriptStyle[0]; + + protected ScriptStyle(int val, String s) { + this.value = val; + this.string = s; + ScriptStyle[] oldstyles = styles; + styles = new ScriptStyle[oldstyles.length + 1]; + System.arraycopy(oldstyles, 0, styles, 0, oldstyles.length); + styles[oldstyles.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public static ScriptStyle getStyle(int val) { + for (int i = 0; i < styles.length; i++) { + if (styles[i].getValue() == val) + return styles[i]; + } + return NORMAL_SCRIPT; + } + + public static final ScriptStyle NORMAL_SCRIPT = new ScriptStyle(0, "normal"); + + public static final ScriptStyle SUPERSCRIPT = new ScriptStyle(1, "super"); + + public static final ScriptStyle SUBSCRIPT = new ScriptStyle(2, "sub"); +} diff --git a/hrmsEjb/jxl/format/UnderlineStyle.java b/hrmsEjb/jxl/format/UnderlineStyle.java new file mode 100644 index 0000000..ec5d5ec --- /dev/null +++ b/hrmsEjb/jxl/format/UnderlineStyle.java @@ -0,0 +1,44 @@ +package jxl.format; + +public final class UnderlineStyle { + private int value; + + private String string; + + private static UnderlineStyle[] styles = new UnderlineStyle[0]; + + protected UnderlineStyle(int val, String s) { + this.value = val; + this.string = s; + UnderlineStyle[] oldstyles = styles; + styles = new UnderlineStyle[oldstyles.length + 1]; + System.arraycopy(oldstyles, 0, styles, 0, oldstyles.length); + styles[oldstyles.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public static UnderlineStyle getStyle(int val) { + for (int i = 0; i < styles.length; i++) { + if (styles[i].getValue() == val) + return styles[i]; + } + return NO_UNDERLINE; + } + + public static final UnderlineStyle NO_UNDERLINE = new UnderlineStyle(0, "none"); + + public static final UnderlineStyle SINGLE = new UnderlineStyle(1, "single"); + + public static final UnderlineStyle DOUBLE = new UnderlineStyle(2, "double"); + + public static final UnderlineStyle SINGLE_ACCOUNTING = new UnderlineStyle(33, "single accounting"); + + public static final UnderlineStyle DOUBLE_ACCOUNTING = new UnderlineStyle(34, "double accounting"); +} diff --git a/hrmsEjb/jxl/format/VerticalAlignment.java b/hrmsEjb/jxl/format/VerticalAlignment.java new file mode 100644 index 0000000..362ac1c --- /dev/null +++ b/hrmsEjb/jxl/format/VerticalAlignment.java @@ -0,0 +1,42 @@ +package jxl.format; + +public class VerticalAlignment { + private int value; + + private String string; + + private static VerticalAlignment[] alignments = new VerticalAlignment[0]; + + protected VerticalAlignment(int val, String s) { + this.value = val; + this.string = s; + VerticalAlignment[] oldaligns = alignments; + alignments = new VerticalAlignment[oldaligns.length + 1]; + System.arraycopy(oldaligns, 0, alignments, 0, oldaligns.length); + alignments[oldaligns.length] = this; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.string; + } + + public static VerticalAlignment getAlignment(int val) { + for (int i = 0; i < alignments.length; i++) { + if (alignments[i].getValue() == val) + return alignments[i]; + } + return BOTTOM; + } + + public static VerticalAlignment TOP = new VerticalAlignment(0, "top"); + + public static VerticalAlignment CENTRE = new VerticalAlignment(1, "centre"); + + public static VerticalAlignment BOTTOM = new VerticalAlignment(2, "bottom"); + + public static VerticalAlignment JUSTIFY = new VerticalAlignment(3, "Justify"); +} diff --git a/hrmsEjb/jxl/read/biff/BOFRecord.java b/hrmsEjb/jxl/read/biff/BOFRecord.java new file mode 100644 index 0000000..0103161 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BOFRecord.java @@ -0,0 +1,60 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +public class BOFRecord extends RecordData { + private static Logger logger = Logger.getLogger(BOFRecord.class); + + private static final int Biff8 = 1536; + + private static final int Biff7 = 1280; + + private static final int WorkbookGlobals = 5; + + private static final int Worksheet = 16; + + private static final int Chart = 32; + + private static final int MacroSheet = 64; + + private int version; + + private int substreamType; + + BOFRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + this.version = IntegerHelper.getInt(data[0], data[1]); + this.substreamType = IntegerHelper.getInt(data[2], data[3]); + } + + public boolean isBiff8() { + return (this.version == 1536); + } + + public boolean isBiff7() { + return (this.version == 1280); + } + + boolean isWorkbookGlobals() { + return (this.substreamType == 5); + } + + public boolean isWorksheet() { + return (this.substreamType == 16); + } + + public boolean isMacroSheet() { + return (this.substreamType == 64); + } + + public boolean isChart() { + return (this.substreamType == 32); + } + + int getLength() { + return getRecord().getLength(); + } +} diff --git a/hrmsEjb/jxl/read/biff/BaseSharedFormulaRecord.java b/hrmsEjb/jxl/read/biff/BaseSharedFormulaRecord.java new file mode 100644 index 0000000..a3229c8 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BaseSharedFormulaRecord.java @@ -0,0 +1,60 @@ +package jxl.read.biff; + +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +public abstract class BaseSharedFormulaRecord extends CellValue implements FormulaData { + private String formulaString; + + private int filePos; + + private byte[] tokens; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + public BaseSharedFormulaRecord(Record t, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si, int pos) { + super(t, fr, si); + this.externalSheet = es; + this.nameTable = nt; + this.filePos = pos; + } + + public String getFormula() throws FormulaException { + if (this.formulaString == null) { + FormulaParser fp = new FormulaParser(this.tokens, this, this.externalSheet, this.nameTable, getSheet().getWorkbook().getSettings()); + fp.parse(); + this.formulaString = fp.getFormula(); + } + return this.formulaString; + } + + void setTokens(byte[] t) { + this.tokens = t; + } + + protected final byte[] getTokens() { + return this.tokens; + } + + protected final ExternalSheet getExternalSheet() { + return this.externalSheet; + } + + protected final WorkbookMethods getNameTable() { + return this.nameTable; + } + + public Record getRecord() { + return super.getRecord(); + } + + final int getFilePos() { + return this.filePos; + } +} diff --git a/hrmsEjb/jxl/read/biff/BiffException.java b/hrmsEjb/jxl/read/biff/BiffException.java new file mode 100644 index 0000000..96ed018 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BiffException.java @@ -0,0 +1,33 @@ +package jxl.read.biff; + +import jxl.JXLException; + +public class BiffException extends JXLException { + private static class BiffMessage { + public String message; + + BiffMessage(String m) { + this.message = m; + } + } + + static final BiffMessage unrecognizedBiffVersion = new BiffMessage("Unrecognized biff version"); + + static final BiffMessage expectedGlobals = new BiffMessage("Expected globals"); + + static final BiffMessage excelFileTooBig = new BiffMessage("Warning: not all of the excel file could be read"); + + static final BiffMessage excelFileNotFound = new BiffMessage("The input file was not found"); + + static final BiffMessage unrecognizedOLEFile = new BiffMessage("Unable to recognize OLE stream"); + + static final BiffMessage streamNotFound = new BiffMessage("Compound file does not contain the specified stream"); + + static final BiffMessage passwordProtected = new BiffMessage("The workbook is password protected"); + + static final BiffMessage corruptFileFormat = new BiffMessage("The file format is corrupt"); + + public BiffException(BiffMessage m) { + super(m.message); + } +} diff --git a/hrmsEjb/jxl/read/biff/BlankCell.java b/hrmsEjb/jxl/read/biff/BlankCell.java new file mode 100644 index 0000000..382b679 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BlankCell.java @@ -0,0 +1,18 @@ +package jxl.read.biff; + +import jxl.CellType; +import jxl.biff.FormattingRecords; + +public class BlankCell extends CellValue { + BlankCell(Record t, FormattingRecords fr, SheetImpl si) { + super(t, fr, si); + } + + public String getContents() { + return ""; + } + + public CellType getType() { + return CellType.EMPTY; + } +} diff --git a/hrmsEjb/jxl/read/biff/BooleanFormulaRecord.java b/hrmsEjb/jxl/read/biff/BooleanFormulaRecord.java new file mode 100644 index 0000000..ed2d65f --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BooleanFormulaRecord.java @@ -0,0 +1,65 @@ +package jxl.read.biff; + +import common.Assert; +import jxl.BooleanCell; +import jxl.BooleanFormulaCell; +import jxl.CellType; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class BooleanFormulaRecord extends CellValue implements BooleanCell, FormulaData, BooleanFormulaCell { + private boolean value; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + private String formulaString; + + private byte[] data; + + public BooleanFormulaRecord(Record t, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) { + super(t, fr, si); + this.externalSheet = es; + this.nameTable = nt; + this.value = false; + this.data = getRecord().getData(); + Assert.verify((this.data[6] != 2)); + this.value = (this.data[8] == 1); + } + + public boolean getValue() { + return this.value; + } + + public String getContents() { + return (new Boolean(this.value)).toString(); + } + + public CellType getType() { + return CellType.BOOLEAN_FORMULA; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + byte[] d = new byte[this.data.length - 6]; + System.arraycopy(this.data, 6, d, 0, this.data.length - 6); + return d; + } + + public String getFormula() throws FormulaException { + if (this.formulaString == null) { + byte[] tokens = new byte[this.data.length - 22]; + System.arraycopy(this.data, 22, tokens, 0, tokens.length); + FormulaParser fp = new FormulaParser(tokens, this, this.externalSheet, this.nameTable, getSheet().getWorkbook().getSettings()); + fp.parse(); + this.formulaString = fp.getFormula(); + } + return this.formulaString; + } +} diff --git a/hrmsEjb/jxl/read/biff/BooleanRecord.java b/hrmsEjb/jxl/read/biff/BooleanRecord.java new file mode 100644 index 0000000..0098d6b --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BooleanRecord.java @@ -0,0 +1,43 @@ +package jxl.read.biff; + +import common.Assert; +import jxl.BooleanCell; +import jxl.CellType; +import jxl.biff.FormattingRecords; + +class BooleanRecord extends CellValue implements BooleanCell { + private boolean error; + + private boolean value; + + public BooleanRecord(Record t, FormattingRecords fr, SheetImpl si) { + super(t, fr, si); + this.error = false; + this.value = false; + byte[] data = getRecord().getData(); + this.error = (data[7] == 1); + if (!this.error) + this.value = (data[6] == 1); + } + + public boolean isError() { + return this.error; + } + + public boolean getValue() { + return this.value; + } + + public String getContents() { + Assert.verify(!isError()); + return (new Boolean(this.value)).toString(); + } + + public CellType getType() { + return CellType.BOOLEAN; + } + + public Record getRecord() { + return super.getRecord(); + } +} diff --git a/hrmsEjb/jxl/read/biff/BottomMarginRecord.java b/hrmsEjb/jxl/read/biff/BottomMarginRecord.java new file mode 100644 index 0000000..617693c --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BottomMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.read.biff; + +import jxl.biff.Type; + +class BottomMarginRecord extends MarginRecord { + BottomMarginRecord(Record r) { + super(Type.BOTTOMMARGIN, r); + } +} diff --git a/hrmsEjb/jxl/read/biff/BoundsheetRecord.java b/hrmsEjb/jxl/read/biff/BoundsheetRecord.java new file mode 100644 index 0000000..9abea78 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/BoundsheetRecord.java @@ -0,0 +1,73 @@ +package jxl.read.biff; + +import java.io.UnsupportedEncodingException; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class BoundsheetRecord extends RecordData { + private int offset; + + private byte typeFlag; + + private byte visibilityFlag; + + private int length; + + private String name; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + public BoundsheetRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + this.offset = IntegerHelper.getInt(data[0], data[1], data[2], data[3]); + this.typeFlag = data[5]; + this.visibilityFlag = data[4]; + this.length = data[6]; + if (data[7] == 0) { + byte[] bytes = new byte[this.length]; + System.arraycopy(data, 8, bytes, 0, this.length); + this.name = new String(bytes); + } else { + byte[] bytes = new byte[this.length * 2]; + System.arraycopy(data, 8, bytes, 0, this.length * 2); + try { + this.name = new String(bytes, "UnicodeLittle"); + } catch (UnsupportedEncodingException e) { + this.name = "Error"; + } + } + } + + public BoundsheetRecord(Record t, Biff7 biff7) { + super(t); + byte[] data = getRecord().getData(); + this.offset = IntegerHelper.getInt(data[0], data[1], data[2], data[3]); + this.typeFlag = data[5]; + this.visibilityFlag = data[4]; + this.length = data[6]; + byte[] bytes = new byte[this.length]; + System.arraycopy(data, 7, bytes, 0, this.length); + this.name = new String(bytes); + } + + public String getName() { + return this.name; + } + + public boolean isHidden() { + return (this.visibilityFlag != 0); + } + + public boolean isSheet() { + return (this.typeFlag == 0); + } + + public boolean isChart() { + return (this.typeFlag == 2); + } +} diff --git a/hrmsEjb/jxl/read/biff/ButtonPropertySetRecord.java b/hrmsEjb/jxl/read/biff/ButtonPropertySetRecord.java new file mode 100644 index 0000000..395bf3f --- /dev/null +++ b/hrmsEjb/jxl/read/biff/ButtonPropertySetRecord.java @@ -0,0 +1,16 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.RecordData; + +public class ButtonPropertySetRecord extends RecordData { + private static Logger logger = Logger.getLogger(ButtonPropertySetRecord.class); + + ButtonPropertySetRecord(Record t) { + super(t); + } + + public byte[] getData() { + return getRecord().getData(); + } +} diff --git a/hrmsEjb/jxl/read/biff/CalcModeRecord.java b/hrmsEjb/jxl/read/biff/CalcModeRecord.java new file mode 100644 index 0000000..960f5ac --- /dev/null +++ b/hrmsEjb/jxl/read/biff/CalcModeRecord.java @@ -0,0 +1,22 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class CalcModeRecord extends RecordData { + private static Logger logger = Logger.getLogger(CalcModeRecord.class); + + private boolean automatic; + + public CalcModeRecord(Record t) { + super(t); + byte[] data = t.getData(); + int mode = IntegerHelper.getInt(data[0], data[1]); + this.automatic = (mode == 1); + } + + public boolean isAutomatic() { + return this.automatic; + } +} diff --git a/hrmsEjb/jxl/read/biff/CellFeaturesAccessor.java b/hrmsEjb/jxl/read/biff/CellFeaturesAccessor.java new file mode 100644 index 0000000..37a3b40 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/CellFeaturesAccessor.java @@ -0,0 +1,9 @@ +package jxl.read.biff; + +import jxl.CellFeatures; + +interface CellFeaturesAccessor { + void setCellFeatures(CellFeatures paramCellFeatures); + + CellFeatures getCellFeatures(); +} diff --git a/hrmsEjb/jxl/read/biff/CellValue.java b/hrmsEjb/jxl/read/biff/CellValue.java new file mode 100644 index 0000000..e186424 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/CellValue.java @@ -0,0 +1,85 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.Cell; +import jxl.CellFeatures; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.XFRecord; +import jxl.format.CellFormat; + +public abstract class CellValue extends RecordData implements Cell, CellFeaturesAccessor { + private static Logger logger = Logger.getLogger(CellValue.class); + + private int row; + + private int column; + + private int xfIndex; + + private FormattingRecords formattingRecords; + + private boolean initialized; + + private XFRecord format; + + private SheetImpl sheet; + + private CellFeatures features; + + protected CellValue(Record t, FormattingRecords fr, SheetImpl si) { + super(t); + byte[] data = getRecord().getData(); + this.row = IntegerHelper.getInt(data[0], data[1]); + this.column = IntegerHelper.getInt(data[2], data[3]); + this.xfIndex = IntegerHelper.getInt(data[4], data[5]); + this.sheet = si; + this.formattingRecords = fr; + this.initialized = false; + } + + public final int getRow() { + return this.row; + } + + public final int getColumn() { + return this.column; + } + + public final int getXFIndex() { + return this.xfIndex; + } + + public CellFormat getCellFormat() { + if (!this.initialized) { + this.format = this.formattingRecords.getXFRecord(this.xfIndex); + this.initialized = true; + } + return (CellFormat)this.format; + } + + public boolean isHidden() { + ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column); + if (cir != null && (cir.getWidth() == 0 || cir.getHidden())) + return true; + RowRecord rr = this.sheet.getRowInfo(this.row); + if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed())) + return true; + return false; + } + + protected SheetImpl getSheet() { + return this.sheet; + } + + public CellFeatures getCellFeatures() { + return this.features; + } + + public void setCellFeatures(CellFeatures cf) { + if (this.features != null) + logger.warn("current cell features not null - overwriting"); + this.features = cf; + } +} diff --git a/hrmsEjb/jxl/read/biff/CentreRecord.java b/hrmsEjb/jxl/read/biff/CentreRecord.java new file mode 100644 index 0000000..18ddc16 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/CentreRecord.java @@ -0,0 +1,18 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class CentreRecord extends RecordData { + private boolean centre; + + public CentreRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + this.centre = (IntegerHelper.getInt(data[0], data[1]) != 0); + } + + public boolean isCentre() { + return this.centre; + } +} diff --git a/hrmsEjb/jxl/read/biff/CodepageRecord.java b/hrmsEjb/jxl/read/biff/CodepageRecord.java new file mode 100644 index 0000000..024522f --- /dev/null +++ b/hrmsEjb/jxl/read/biff/CodepageRecord.java @@ -0,0 +1,21 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class CodepageRecord extends RecordData { + private static Logger logger = Logger.getLogger(CodepageRecord.class); + + private int characterSet; + + public CodepageRecord(Record t) { + super(t); + byte[] data = t.getData(); + this.characterSet = IntegerHelper.getInt(data[0], data[1]); + } + + public int getCharacterSet() { + return this.characterSet; + } +} diff --git a/hrmsEjb/jxl/read/biff/ColumnInfoRecord.java b/hrmsEjb/jxl/read/biff/ColumnInfoRecord.java new file mode 100644 index 0000000..017bf6c --- /dev/null +++ b/hrmsEjb/jxl/read/biff/ColumnInfoRecord.java @@ -0,0 +1,50 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.Type; + +public class ColumnInfoRecord extends RecordData { + private byte[] data; + + private int startColumn; + + private int endColumn; + + private int xfIndex; + + private int width; + + private boolean hidden; + + ColumnInfoRecord(Record t) { + super(Type.COLINFO); + this.data = t.getData(); + this.startColumn = IntegerHelper.getInt(this.data[0], this.data[1]); + this.endColumn = IntegerHelper.getInt(this.data[2], this.data[3]); + this.width = IntegerHelper.getInt(this.data[4], this.data[5]); + this.xfIndex = IntegerHelper.getInt(this.data[6], this.data[7]); + int options = IntegerHelper.getInt(this.data[8], this.data[9]); + this.hidden = ((options & 0x1) != 0); + } + + public int getStartColumn() { + return this.startColumn; + } + + public int getEndColumn() { + return this.endColumn; + } + + public int getXFIndex() { + return this.xfIndex; + } + + public int getWidth() { + return this.width; + } + + public boolean getHidden() { + return this.hidden; + } +} diff --git a/hrmsEjb/jxl/read/biff/CompoundFile.java b/hrmsEjb/jxl/read/biff/CompoundFile.java new file mode 100644 index 0000000..faa4619 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/CompoundFile.java @@ -0,0 +1,266 @@ +package jxl.read.biff; + +import common.Logger; +import java.util.ArrayList; +import java.util.Iterator; +import jxl.WorkbookSettings; +import jxl.biff.BaseCompoundFile; +import jxl.biff.IntegerHelper; + +public final class CompoundFile extends BaseCompoundFile { + private static Logger logger = Logger.getLogger(CompoundFile.class); + + private byte[] data; + + private int numBigBlockDepotBlocks; + + private int sbdStartBlock; + + private int rootStartBlock; + + private int extensionBlock; + + private int numExtensionBlocks; + + private byte[] rootEntry; + + private int[] bigBlockChain; + + private int[] smallBlockChain; + + private int[] bigBlockDepotBlocks; + + private ArrayList propertySets; + + private WorkbookSettings settings; + + private BaseCompoundFile.PropertyStorage rootEntryPropertyStorage; + + public CompoundFile(byte[] d, WorkbookSettings ws) throws BiffException { + this.data = d; + this.settings = ws; + for (int i = 0; i < IDENTIFIER.length; i++) { + if (this.data[i] != IDENTIFIER[i]) + throw new BiffException(BiffException.unrecognizedOLEFile); + } + this.propertySets = new ArrayList(); + this.numBigBlockDepotBlocks = IntegerHelper.getInt(this.data[44], this.data[45], this.data[46], this.data[47]); + this.sbdStartBlock = IntegerHelper.getInt(this.data[60], this.data[61], this.data[62], this.data[63]); + this.rootStartBlock = IntegerHelper.getInt(this.data[48], this.data[49], this.data[50], this.data[51]); + this.extensionBlock = IntegerHelper.getInt(this.data[68], this.data[69], this.data[70], this.data[71]); + this.numExtensionBlocks = IntegerHelper.getInt(this.data[72], this.data[73], this.data[74], this.data[75]); + this.bigBlockDepotBlocks = new int[this.numBigBlockDepotBlocks]; + int pos = 76; + int bbdBlocks = this.numBigBlockDepotBlocks; + if (this.numExtensionBlocks != 0) + bbdBlocks = 109; + for (int k = 0; k < bbdBlocks; k++) { + this.bigBlockDepotBlocks[k] = IntegerHelper.getInt(d[pos], d[pos + 1], d[pos + 2], d[pos + 3]); + pos += 4; + } + for (int j = 0; j < this.numExtensionBlocks; j++) { + pos = (this.extensionBlock + 1) * 512; + int blocksToRead = Math.min(this.numBigBlockDepotBlocks - bbdBlocks, 127); + for (int m = bbdBlocks; m < bbdBlocks + blocksToRead; m++) { + this.bigBlockDepotBlocks[m] = IntegerHelper.getInt(d[pos], d[pos + 1], d[pos + 2], d[pos + 3]); + pos += 4; + } + bbdBlocks += blocksToRead; + if (bbdBlocks < this.numBigBlockDepotBlocks) + this.extensionBlock = IntegerHelper.getInt(d[pos], d[pos + 1], d[pos + 2], d[pos + 3]); + } + readBigBlockDepot(); + readSmallBlockDepot(); + this.rootEntry = readData(this.rootStartBlock); + readPropertySets(); + } + + private void readBigBlockDepot() { + int pos = 0; + int index = 0; + this.bigBlockChain = new int[this.numBigBlockDepotBlocks * 512 / 4]; + for (int i = 0; i < this.numBigBlockDepotBlocks; i++) { + pos = (this.bigBlockDepotBlocks[i] + 1) * 512; + for (int j = 0; j < 128; j++) { + this.bigBlockChain[index] = IntegerHelper.getInt(this.data[pos], this.data[pos + 1], this.data[pos + 2], this.data[pos + 3]); + pos += 4; + index++; + } + } + } + + private void readSmallBlockDepot() { + int pos = 0; + int index = 0; + int sbdBlock = this.sbdStartBlock; + this.smallBlockChain = new int[0]; + if (sbdBlock == -1) { + logger.warn("invalid small block depot number"); + return; + } + while (sbdBlock != -2) { + int[] oldChain = this.smallBlockChain; + this.smallBlockChain = new int[this.smallBlockChain.length + 128]; + System.arraycopy(oldChain, 0, this.smallBlockChain, 0, oldChain.length); + pos = (sbdBlock + 1) * 512; + for (int j = 0; j < 128; j++) { + this.smallBlockChain[index] = IntegerHelper.getInt(this.data[pos], this.data[pos + 1], this.data[pos + 2], this.data[pos + 3]); + pos += 4; + index++; + } + sbdBlock = this.bigBlockChain[sbdBlock]; + } + } + + private void readPropertySets() { + int offset = 0; + byte[] d = null; + while (offset < this.rootEntry.length) { + d = new byte[128]; + System.arraycopy(this.rootEntry, offset, d, 0, d.length); + BaseCompoundFile.PropertyStorage ps = new BaseCompoundFile.PropertyStorage(this, d); + if (ps.name == null || ps.name.length() == 0) + if (ps.type == 5) { + ps.name = "Root Entry"; + logger.warn("Property storage name for " + ps.type + " is empty - setting to " + "Root Entry"); + } else if (ps.size != 0) { + logger.warn("Property storage type " + ps.type + " is non-empty and has no associated name"); + } + this.propertySets.add(ps); + if (ps.name.equalsIgnoreCase("Root Entry")) + this.rootEntryPropertyStorage = ps; + offset += 128; + } + if (this.rootEntryPropertyStorage == null) + this.rootEntryPropertyStorage = this.propertySets.get(0); + } + + public byte[] getStream(String streamName) throws BiffException { + BaseCompoundFile.PropertyStorage ps = findPropertyStorage(streamName, this.rootEntryPropertyStorage); + if (ps == null) + ps = getPropertyStorage(streamName); + if (ps.size >= 4096 || streamName.equalsIgnoreCase("Root Entry")) + return getBigBlockStream(ps); + return getSmallBlockStream(ps); + } + + public byte[] getStream(int psIndex) throws BiffException { + BaseCompoundFile.PropertyStorage ps = getPropertyStorage(psIndex); + if (ps.size >= 4096 || ps.name.equalsIgnoreCase("Root Entry")) + return getBigBlockStream(ps); + return getSmallBlockStream(ps); + } + + public BaseCompoundFile.PropertyStorage findPropertyStorage(String name) { + return findPropertyStorage(name, this.rootEntryPropertyStorage); + } + + private BaseCompoundFile.PropertyStorage findPropertyStorage(String name, BaseCompoundFile.PropertyStorage base) { + if (base.child == -1) + return null; + BaseCompoundFile.PropertyStorage child = getPropertyStorage(base.child); + if (child.name.equalsIgnoreCase(name)) + return child; + BaseCompoundFile.PropertyStorage prev = child; + while (prev.previous != -1) { + prev = getPropertyStorage(prev.previous); + if (prev.name.equalsIgnoreCase(name)) + return prev; + } + BaseCompoundFile.PropertyStorage next = child; + while (next.next != -1) { + next = getPropertyStorage(next.next); + if (next.name.equalsIgnoreCase(name)) + return next; + } + return findPropertyStorage(name, child); + } + + private BaseCompoundFile.PropertyStorage getPropertyStorage(String name) throws BiffException { + Iterator i = this.propertySets.iterator(); + boolean found = false; + boolean multiple = false; + BaseCompoundFile.PropertyStorage ps = null; + while (i.hasNext()) { + BaseCompoundFile.PropertyStorage ps2 = i.next(); + if (ps2.name.equalsIgnoreCase(name)) { + multiple = (found == true); + found = true; + ps = ps2; + } + } + if (multiple) + logger.warn("found multiple copies of property set " + name); + if (!found) + throw new BiffException(BiffException.streamNotFound); + return ps; + } + + private BaseCompoundFile.PropertyStorage getPropertyStorage(int index) { + return this.propertySets.get(index); + } + + private byte[] getBigBlockStream(BaseCompoundFile.PropertyStorage ps) { + int numBlocks = ps.size / 512; + if (ps.size % 512 != 0) + numBlocks++; + byte[] streamData = new byte[numBlocks * 512]; + int block = ps.startBlock; + int count = 0; + int pos = 0; + while (block != -2 && count < numBlocks) { + pos = (block + 1) * 512; + System.arraycopy(this.data, pos, streamData, count * 512, 512); + count++; + block = this.bigBlockChain[block]; + } + if (block != -2 && count == numBlocks) + logger.warn("Property storage size inconsistent with block chain."); + return streamData; + } + + private byte[] getSmallBlockStream(BaseCompoundFile.PropertyStorage ps) throws BiffException { + byte[] rootdata = readData(this.rootEntryPropertyStorage.startBlock); + byte[] sbdata = new byte[0]; + int block = ps.startBlock; + int pos = 0; + while (block != -2) { + byte[] olddata = sbdata; + sbdata = new byte[olddata.length + 64]; + System.arraycopy(olddata, 0, sbdata, 0, olddata.length); + pos = block * 64; + System.arraycopy(rootdata, pos, sbdata, olddata.length, 64); + block = this.smallBlockChain[block]; + if (block == -1) { + logger.warn("Incorrect terminator for small block stream " + ps.name); + block = -2; + } + } + return sbdata; + } + + private byte[] readData(int bl) throws BiffException { + int block = bl; + int pos = 0; + byte[] entry = new byte[0]; + while (block != -2) { + byte[] oldEntry = entry; + entry = new byte[oldEntry.length + 512]; + System.arraycopy(oldEntry, 0, entry, 0, oldEntry.length); + pos = (block + 1) * 512; + System.arraycopy(this.data, pos, entry, oldEntry.length, 512); + if (this.bigBlockChain[block] == block) + throw new BiffException(BiffException.corruptFileFormat); + block = this.bigBlockChain[block]; + } + return entry; + } + + public int getNumberOfPropertySets() { + return this.propertySets.size(); + } + + public BaseCompoundFile.PropertyStorage getPropertySet(int index) { + return getPropertyStorage(index); + } +} diff --git a/hrmsEjb/jxl/read/biff/CountryRecord.java b/hrmsEjb/jxl/read/biff/CountryRecord.java new file mode 100644 index 0000000..d1afc1f --- /dev/null +++ b/hrmsEjb/jxl/read/biff/CountryRecord.java @@ -0,0 +1,28 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +public class CountryRecord extends RecordData { + private static Logger logger = Logger.getLogger(CountryRecord.class); + + private int language; + + private int regionalSettings; + + public CountryRecord(Record t) { + super(t); + byte[] data = t.getData(); + this.language = IntegerHelper.getInt(data[0], data[1]); + this.regionalSettings = IntegerHelper.getInt(data[2], data[3]); + } + + public int getLanguageCode() { + return this.language; + } + + public int getRegionalSettingsCode() { + return this.regionalSettings; + } +} diff --git a/hrmsEjb/jxl/read/biff/DataValidation.java b/hrmsEjb/jxl/read/biff/DataValidation.java new file mode 100644 index 0000000..21cf06f --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DataValidation.java @@ -0,0 +1,31 @@ +package jxl.read.biff; + +import common.Assert; + +public class DataValidation { + private DataValidityListRecord validityList; + + private DataValiditySettingsRecord[] validitySettings; + + private int pos; + + DataValidation(DataValidityListRecord dvlr) { + this.validityList = dvlr; + this.validitySettings = new DataValiditySettingsRecord[this.validityList.getNumberOfSettings()]; + this.pos = 0; + } + + void add(DataValiditySettingsRecord dvsr) { + Assert.verify((this.pos < this.validitySettings.length)); + this.validitySettings[this.pos] = dvsr; + this.pos++; + } + + public DataValidityListRecord getDataValidityList() { + return this.validityList; + } + + public DataValiditySettingsRecord[] getDataValiditySettings() { + return this.validitySettings; + } +} diff --git a/hrmsEjb/jxl/read/biff/DataValidityListRecord.java b/hrmsEjb/jxl/read/biff/DataValidityListRecord.java new file mode 100644 index 0000000..f2fc428 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DataValidityListRecord.java @@ -0,0 +1,22 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +public class DataValidityListRecord extends RecordData { + private int numSettings; + + DataValidityListRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + this.numSettings = IntegerHelper.getInt(data[14], data[15], data[16], data[17]); + } + + int getNumberOfSettings() { + return this.numSettings; + } + + public byte[] getData() { + return getRecord().getData(); + } +} diff --git a/hrmsEjb/jxl/read/biff/DataValiditySettingsRecord.java b/hrmsEjb/jxl/read/biff/DataValiditySettingsRecord.java new file mode 100644 index 0000000..3f0e390 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DataValiditySettingsRecord.java @@ -0,0 +1,13 @@ +package jxl.read.biff; + +import jxl.biff.RecordData; + +public class DataValiditySettingsRecord extends RecordData { + DataValiditySettingsRecord(Record t) { + super(t); + } + + public byte[] getData() { + return getRecord().getData(); + } +} diff --git a/hrmsEjb/jxl/read/biff/DateFormulaRecord.java b/hrmsEjb/jxl/read/biff/DateFormulaRecord.java new file mode 100644 index 0000000..579a67a --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DateFormulaRecord.java @@ -0,0 +1,59 @@ +package jxl.read.biff; + +import java.text.NumberFormat; +import jxl.Cell; +import jxl.CellType; +import jxl.DateCell; +import jxl.DateFormulaCell; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class DateFormulaRecord extends DateRecord implements DateCell, FormulaData, DateFormulaCell { + private String formulaString; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + private byte[] data; + + public DateFormulaRecord(NumberFormulaRecord t, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, boolean nf, SheetImpl si) throws FormulaException { + super(t, t.getXFIndex(), fr, nf, si); + this.externalSheet = es; + this.nameTable = nt; + this.data = t.getFormulaData(); + } + + public CellType getType() { + return CellType.DATE_FORMULA; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + return this.data; + } + + public String getFormula() throws FormulaException { + if (this.formulaString == null) { + byte[] tokens = new byte[this.data.length - 16]; + System.arraycopy(this.data, 16, tokens, 0, tokens.length); + FormulaParser fp = new FormulaParser(tokens, (Cell)this, this.externalSheet, this.nameTable, getSheet().getWorkbook().getSettings()); + fp.parse(); + this.formulaString = fp.getFormula(); + } + return this.formulaString; + } + + public double getValue() { + return 0.0D; + } + + public NumberFormat getNumberFormat() { + return null; + } +} diff --git a/hrmsEjb/jxl/read/biff/DateRecord.java b/hrmsEjb/jxl/read/biff/DateRecord.java new file mode 100644 index 0000000..76711db --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DateRecord.java @@ -0,0 +1,144 @@ +package jxl.read.biff; + +import common.Assert; +import common.Logger; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; +import jxl.CellFeatures; +import jxl.CellType; +import jxl.DateCell; +import jxl.NumberCell; +import jxl.biff.FormattingRecords; +import jxl.format.CellFormat; + +class DateRecord implements DateCell, CellFeaturesAccessor { + private static Logger logger = Logger.getLogger(DateRecord.class); + + private Date date; + + private int row; + + private int column; + + private boolean time; + + private DateFormat format; + + private CellFormat cellFormat; + + private int xfIndex; + + private FormattingRecords formattingRecords; + + private SheetImpl sheet; + + private CellFeatures features; + + private boolean initialized; + + private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy"); + + private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); + + private static final int nonLeapDay = 61; + + private static final TimeZone gmtZone = TimeZone.getTimeZone("GMT"); + + private static final int utcOffsetDays = 25569; + + private static final int utcOffsetDays1904 = 24107; + + private static final long secondsInADay = 86400L; + + private static final long msInASecond = 1000L; + + private static final long msInADay = 86400000L; + + public DateRecord(NumberCell num, int xfi, FormattingRecords fr, boolean nf, SheetImpl si) { + this.row = num.getRow(); + this.column = num.getColumn(); + this.xfIndex = xfi; + this.formattingRecords = fr; + this.sheet = si; + this.initialized = false; + this.format = this.formattingRecords.getDateFormat(this.xfIndex); + double numValue = num.getValue(); + if (Math.abs(numValue) < 1.0D) { + if (this.format == null) + this.format = timeFormat; + this.time = true; + } else { + if (this.format == null) + this.format = dateFormat; + this.time = false; + } + if (!nf && !this.time && numValue < 61.0D) + numValue++; + this.format.setTimeZone(gmtZone); + int offsetDays = nf ? 24107 : 25569; + double utcDays = numValue - offsetDays; + long utcValue = Math.round(utcDays * 86400.0D) * 1000L; + this.date = new Date(utcValue); + } + + public final int getRow() { + return this.row; + } + + public final int getColumn() { + return this.column; + } + + public Date getDate() { + return this.date; + } + + public String getContents() { + return this.format.format(this.date); + } + + public CellType getType() { + return CellType.DATE; + } + + public boolean isTime() { + return this.time; + } + + public DateFormat getDateFormat() { + Assert.verify((this.format != null)); + return this.format; + } + + public CellFormat getCellFormat() { + if (!this.initialized) { + this.cellFormat = (CellFormat)this.formattingRecords.getXFRecord(this.xfIndex); + this.initialized = true; + } + return this.cellFormat; + } + + public boolean isHidden() { + ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column); + if (cir != null && cir.getWidth() == 0) + return true; + RowRecord rr = this.sheet.getRowInfo(this.row); + if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed())) + return true; + return false; + } + + protected final SheetImpl getSheet() { + return this.sheet; + } + + public CellFeatures getCellFeatures() { + return this.features; + } + + public void setCellFeatures(CellFeatures cf) { + this.features = cf; + } +} diff --git a/hrmsEjb/jxl/read/biff/DefaultColumnWidthRecord.java b/hrmsEjb/jxl/read/biff/DefaultColumnWidthRecord.java new file mode 100644 index 0000000..fda5811 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DefaultColumnWidthRecord.java @@ -0,0 +1,18 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class DefaultColumnWidthRecord extends RecordData { + private int width; + + public DefaultColumnWidthRecord(Record t) { + super(t); + byte[] data = t.getData(); + this.width = IntegerHelper.getInt(data[0], data[1]); + } + + public int getWidth() { + return this.width; + } +} diff --git a/hrmsEjb/jxl/read/biff/DefaultRowHeightRecord.java b/hrmsEjb/jxl/read/biff/DefaultRowHeightRecord.java new file mode 100644 index 0000000..fb3b2c1 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DefaultRowHeightRecord.java @@ -0,0 +1,19 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class DefaultRowHeightRecord extends RecordData { + private int height; + + public DefaultRowHeightRecord(Record t) { + super(t); + byte[] data = t.getData(); + if (data.length > 2) + this.height = IntegerHelper.getInt(data[2], data[3]); + } + + public int getHeight() { + return this.height; + } +} diff --git a/hrmsEjb/jxl/read/biff/DimensionRecord.java b/hrmsEjb/jxl/read/biff/DimensionRecord.java new file mode 100644 index 0000000..c00f7b4 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/DimensionRecord.java @@ -0,0 +1,53 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class DimensionRecord extends RecordData { + private static Logger logger = Logger.getLogger(DimensionRecord.class); + + private int numRows; + + private int numCols; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + public DimensionRecord(Record t) { + super(t); + byte[] data = t.getData(); + if (data.length == 10) { + read10ByteData(data); + } else { + read14ByteData(data); + } + } + + public DimensionRecord(Record t, Biff7 biff7) { + super(t); + byte[] data = t.getData(); + read10ByteData(data); + } + + private void read10ByteData(byte[] data) { + this.numRows = IntegerHelper.getInt(data[2], data[3]); + this.numCols = IntegerHelper.getInt(data[6], data[7]); + } + + private void read14ByteData(byte[] data) { + this.numRows = IntegerHelper.getInt(data[4], data[5], data[6], data[7]); + this.numCols = IntegerHelper.getInt(data[10], data[11]); + } + + public int getNumberOfRows() { + return this.numRows; + } + + public int getNumberOfColumns() { + return this.numCols; + } +} diff --git a/hrmsEjb/jxl/read/biff/ErrorFormulaRecord.java b/hrmsEjb/jxl/read/biff/ErrorFormulaRecord.java new file mode 100644 index 0000000..722e26b --- /dev/null +++ b/hrmsEjb/jxl/read/biff/ErrorFormulaRecord.java @@ -0,0 +1,69 @@ +package jxl.read.biff; + +import common.Assert; +import jxl.CellType; +import jxl.ErrorCell; +import jxl.ErrorFormulaCell; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaErrorCode; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class ErrorFormulaRecord extends CellValue implements ErrorCell, FormulaData, ErrorFormulaCell { + private int errorCode; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + private String formulaString; + + private byte[] data; + + private FormulaErrorCode error; + + public ErrorFormulaRecord(Record t, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) { + super(t, fr, si); + this.externalSheet = es; + this.nameTable = nt; + this.data = getRecord().getData(); + Assert.verify((this.data[6] == 2)); + this.errorCode = this.data[8]; + } + + public int getErrorCode() { + return this.errorCode; + } + + public String getContents() { + if (this.error == null) + this.error = FormulaErrorCode.getErrorCode(this.errorCode); + return (this.error != FormulaErrorCode.UNKNOWN) ? this.error.getDescription() : ("ERROR " + this.errorCode); + } + + public CellType getType() { + return CellType.FORMULA_ERROR; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + byte[] d = new byte[this.data.length - 6]; + System.arraycopy(this.data, 6, d, 0, this.data.length - 6); + return d; + } + + public String getFormula() throws FormulaException { + if (this.formulaString == null) { + byte[] tokens = new byte[this.data.length - 22]; + System.arraycopy(this.data, 22, tokens, 0, tokens.length); + FormulaParser fp = new FormulaParser(tokens, this, this.externalSheet, this.nameTable, getSheet().getWorkbook().getSettings()); + fp.parse(); + this.formulaString = fp.getFormula(); + } + return this.formulaString; + } +} diff --git a/hrmsEjb/jxl/read/biff/ErrorRecord.java b/hrmsEjb/jxl/read/biff/ErrorRecord.java new file mode 100644 index 0000000..11b40d1 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/ErrorRecord.java @@ -0,0 +1,27 @@ +package jxl.read.biff; + +import jxl.CellType; +import jxl.ErrorCell; +import jxl.biff.FormattingRecords; + +class ErrorRecord extends CellValue implements ErrorCell { + private int errorCode; + + public ErrorRecord(Record t, FormattingRecords fr, SheetImpl si) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.errorCode = data[6]; + } + + public int getErrorCode() { + return this.errorCode; + } + + public String getContents() { + return "ERROR " + this.errorCode; + } + + public CellType getType() { + return CellType.ERROR; + } +} diff --git a/hrmsEjb/jxl/read/biff/ExternalSheetRecord.java b/hrmsEjb/jxl/read/biff/ExternalSheetRecord.java new file mode 100644 index 0000000..e01f6ed --- /dev/null +++ b/hrmsEjb/jxl/read/biff/ExternalSheetRecord.java @@ -0,0 +1,77 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +public class ExternalSheetRecord extends RecordData { + private static Logger logger = Logger.getLogger(ExternalSheetRecord.class); + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + private XTI[] xtiArray; + + private static class XTI { + int supbookIndex; + + int firstTab; + + int lastTab; + + XTI(int s, int f, int l) { + this.supbookIndex = s; + this.firstTab = f; + this.lastTab = l; + } + } + + ExternalSheetRecord(Record t, WorkbookSettings ws) { + super(t); + byte[] data = getRecord().getData(); + int numxtis = IntegerHelper.getInt(data[0], data[1]); + if (data.length < numxtis * 6 + 2) { + this.xtiArray = new XTI[0]; + logger.warn("Could not process external sheets. Formulas may be compromised."); + return; + } + this.xtiArray = new XTI[numxtis]; + int pos = 2; + for (int i = 0; i < numxtis; i++) { + int s = IntegerHelper.getInt(data[pos], data[pos + 1]); + int f = IntegerHelper.getInt(data[pos + 2], data[pos + 3]); + int l = IntegerHelper.getInt(data[pos + 4], data[pos + 5]); + this.xtiArray[i] = new XTI(s, f, l); + pos += 6; + } + } + + ExternalSheetRecord(Record t, WorkbookSettings settings, Biff7 dummy) { + super(t); + logger.warn("External sheet record for Biff 7 not supported"); + } + + public int getNumRecords() { + return (this.xtiArray != null) ? this.xtiArray.length : 0; + } + + public int getSupbookIndex(int index) { + return (this.xtiArray[index]).supbookIndex; + } + + public int getFirstTabIndex(int index) { + return (this.xtiArray[index]).firstTab; + } + + public int getLastTabIndex(int index) { + return (this.xtiArray[index]).lastTab; + } + + public byte[] getData() { + return getRecord().getData(); + } +} diff --git a/hrmsEjb/jxl/read/biff/File.java b/hrmsEjb/jxl/read/biff/File.java new file mode 100644 index 0000000..90ab9da --- /dev/null +++ b/hrmsEjb/jxl/read/biff/File.java @@ -0,0 +1,134 @@ +package jxl.read.biff; + +import common.Logger; +import java.io.IOException; +import java.io.InputStream; +import java.io.InterruptedIOException; +import jxl.WorkbookSettings; +import jxl.biff.BaseCompoundFile; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; + +public class File { + private static Logger logger = Logger.getLogger(File.class); + + private byte[] data; + + private int filePos; + + private int oldPos; + + private int initialFileSize; + + private int arrayGrowSize; + + private CompoundFile compoundFile; + + private WorkbookSettings workbookSettings; + + public File(InputStream is, WorkbookSettings ws) throws IOException, BiffException { + this.workbookSettings = ws; + this.initialFileSize = this.workbookSettings.getInitialFileSize(); + this.arrayGrowSize = this.workbookSettings.getArrayGrowSize(); + byte[] d = new byte[this.initialFileSize]; + int bytesRead = is.read(d); + int pos = bytesRead; + if (Thread.currentThread().isInterrupted()) + throw new InterruptedIOException(); + while (bytesRead != -1) { + if (pos >= d.length) { + byte[] newArray = new byte[d.length + this.arrayGrowSize]; + System.arraycopy(d, 0, newArray, 0, d.length); + d = newArray; + } + bytesRead = is.read(d, pos, d.length - pos); + pos += bytesRead; + if (Thread.currentThread().isInterrupted()) + throw new InterruptedIOException(); + } + bytesRead = pos + 1; + if (bytesRead == 0) + throw new BiffException(BiffException.excelFileNotFound); + CompoundFile cf = new CompoundFile(d, ws); + try { + this.data = cf.getStream("workbook"); + } catch (BiffException e) { + this.data = cf.getStream("book"); + } + if (!this.workbookSettings.getPropertySetsDisabled() && cf.getNumberOfPropertySets() > BaseCompoundFile.STANDARD_PROPERTY_SETS.length) + this.compoundFile = cf; + cf = null; + if (!this.workbookSettings.getGCDisabled()) + System.gc(); + } + + public File(byte[] d) { + this.data = d; + } + + Record next() { + Record r = new Record(this.data, this.filePos, this); + return r; + } + + Record peek() { + int tempPos = this.filePos; + Record r = new Record(this.data, this.filePos, this); + this.filePos = tempPos; + return r; + } + + public void skip(int bytes) { + this.filePos += bytes; + } + + public byte[] read(int pos, int length) { + byte[] ret = new byte[length]; + try { + System.arraycopy(this.data, pos, ret, 0, length); + } catch (ArrayIndexOutOfBoundsException e) { + logger.error("Array index out of bounds at position " + pos + " record length " + length); + throw e; + } + return ret; + } + + public int getPos() { + return this.filePos; + } + + public void setPos(int p) { + this.oldPos = this.filePos; + this.filePos = p; + } + + public void restorePos() { + this.filePos = this.oldPos; + } + + private void moveToFirstBof() { + boolean bofFound = false; + while (!bofFound) { + int code = IntegerHelper.getInt(this.data[this.filePos], this.data[this.filePos + 1]); + if (code == Type.BOF.value) { + bofFound = true; + continue; + } + skip(128); + } + } + + public void close() {} + + public void clear() { + this.data = null; + } + + public boolean hasNext() { + return (this.filePos < this.data.length - 4); + } + + CompoundFile getCompoundFile() { + return this.compoundFile; + } +} diff --git a/hrmsEjb/jxl/read/biff/FooterRecord.java b/hrmsEjb/jxl/read/biff/FooterRecord.java new file mode 100644 index 0000000..c21e997 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/FooterRecord.java @@ -0,0 +1,43 @@ +package jxl.read.biff; + +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.StringHelper; + +public class FooterRecord extends RecordData { + private String footer; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + FooterRecord(Record t, WorkbookSettings ws) { + super(t); + byte[] data = getRecord().getData(); + if (data.length == 0) + return; + int chars = IntegerHelper.getInt(data[0], data[1]); + boolean unicode = (data[2] == 1); + if (unicode) { + this.footer = StringHelper.getUnicodeString(data, chars, 3); + } else { + this.footer = StringHelper.getString(data, chars, 3, ws); + } + } + + FooterRecord(Record t, WorkbookSettings ws, Biff7 dummy) { + super(t); + byte[] data = getRecord().getData(); + if (data.length == 0) + return; + int chars = data[0]; + this.footer = StringHelper.getString(data, chars, 1, ws); + } + + String getFooter() { + return this.footer; + } +} diff --git a/hrmsEjb/jxl/read/biff/FormulaRecord.java b/hrmsEjb/jxl/read/biff/FormulaRecord.java new file mode 100644 index 0000000..bf258ec --- /dev/null +++ b/hrmsEjb/jxl/read/biff/FormulaRecord.java @@ -0,0 +1,91 @@ +package jxl.read.biff; + +import common.Assert; +import common.Logger; +import jxl.CellType; +import jxl.WorkbookSettings; +import jxl.biff.DoubleHelper; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; + +class FormulaRecord extends CellValue { + private static Logger logger = Logger.getLogger(FormulaRecord.class); + + private CellValue formula; + + private boolean shared; + + private static class IgnoreSharedFormula { + private IgnoreSharedFormula() {} + } + + public static final IgnoreSharedFormula ignoreSharedFormula = new IgnoreSharedFormula(); + + public FormulaRecord(Record t, File excelFile, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si, WorkbookSettings ws) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.shared = false; + int grbit = IntegerHelper.getInt(data[14], data[15]); + if ((grbit & 0x8) != 0) { + this.shared = true; + if (data[6] == 0 && data[12] == -1 && data[13] == -1) { + this.formula = new SharedStringFormulaRecord(t, excelFile, fr, es, nt, si, ws); + } else if (data[6] == 2 && data[12] == -1 && data[13] == -1) { + int errorCode = data[8]; + this.formula = new SharedErrorFormulaRecord(t, excelFile, errorCode, fr, es, nt, si); + } else { + double value = DoubleHelper.getIEEEDouble(data, 6); + SharedNumberFormulaRecord snfr = new SharedNumberFormulaRecord(t, excelFile, value, fr, es, nt, si); + snfr.setNumberFormat(fr.getNumberFormat(getXFIndex())); + this.formula = snfr; + } + return; + } + if (data[6] == 0 && data[12] == -1 && data[13] == -1) { + this.formula = new StringFormulaRecord(t, excelFile, fr, es, nt, si, ws); + } else if (data[6] == 1 && data[12] == -1 && data[13] == -1) { + this.formula = new BooleanFormulaRecord(t, fr, es, nt, si); + } else if (data[6] == 2 && data[12] == -1 && data[13] == -1) { + this.formula = new ErrorFormulaRecord(t, fr, es, nt, si); + } else if (data[6] == 3 && data[12] == -1 && data[13] == -1) { + this.formula = new StringFormulaRecord(t, fr, es, nt, si); + } else { + this.formula = new NumberFormulaRecord(t, fr, es, nt, si); + } + } + + public FormulaRecord(Record t, File excelFile, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, IgnoreSharedFormula i, SheetImpl si, WorkbookSettings ws) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.shared = false; + if (data[6] == 0 && data[12] == -1 && data[13] == -1) { + this.formula = new StringFormulaRecord(t, excelFile, fr, es, nt, si, ws); + } else if (data[6] == 1 && data[12] == -1 && data[13] == -1) { + this.formula = new BooleanFormulaRecord(t, fr, es, nt, si); + } else if (data[6] == 2 && data[12] == -1 && data[13] == -1) { + this.formula = new ErrorFormulaRecord(t, fr, es, nt, si); + } else { + this.formula = new NumberFormulaRecord(t, fr, es, nt, si); + } + } + + public String getContents() { + Assert.verify(false); + return ""; + } + + public CellType getType() { + Assert.verify(false); + return CellType.EMPTY; + } + + final CellValue getFormula() { + return this.formula; + } + + final boolean isShared() { + return this.shared; + } +} diff --git a/hrmsEjb/jxl/read/biff/HeaderRecord.java b/hrmsEjb/jxl/read/biff/HeaderRecord.java new file mode 100644 index 0000000..81c7920 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/HeaderRecord.java @@ -0,0 +1,46 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.StringHelper; + +public class HeaderRecord extends RecordData { + private static Logger logger = Logger.getLogger(HeaderRecord.class); + + private String header; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + HeaderRecord(Record t, WorkbookSettings ws) { + super(t); + byte[] data = getRecord().getData(); + if (data.length == 0) + return; + int chars = IntegerHelper.getInt(data[0], data[1]); + boolean unicode = (data[2] == 1); + if (unicode) { + this.header = StringHelper.getUnicodeString(data, chars, 3); + } else { + this.header = StringHelper.getString(data, chars, 3, ws); + } + } + + HeaderRecord(Record t, WorkbookSettings ws, Biff7 dummy) { + super(t); + byte[] data = getRecord().getData(); + if (data.length == 0) + return; + int chars = data[0]; + this.header = StringHelper.getString(data, chars, 1, ws); + } + + String getHeader() { + return this.header; + } +} diff --git a/hrmsEjb/jxl/read/biff/HorizontalPageBreaksRecord.java b/hrmsEjb/jxl/read/biff/HorizontalPageBreaksRecord.java new file mode 100644 index 0000000..ef6cc95 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/HorizontalPageBreaksRecord.java @@ -0,0 +1,45 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class HorizontalPageBreaksRecord extends RecordData { + private final Logger logger = Logger.getLogger(HorizontalPageBreaksRecord.class); + + private int[] rowBreaks; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + public HorizontalPageBreaksRecord(Record t) { + super(t); + byte[] data = t.getData(); + int numbreaks = IntegerHelper.getInt(data[0], data[1]); + int pos = 2; + this.rowBreaks = new int[numbreaks]; + for (int i = 0; i < numbreaks; i++) { + this.rowBreaks[i] = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 6; + } + } + + public HorizontalPageBreaksRecord(Record t, Biff7 biff7) { + super(t); + byte[] data = t.getData(); + int numbreaks = IntegerHelper.getInt(data[0], data[1]); + int pos = 2; + this.rowBreaks = new int[numbreaks]; + for (int i = 0; i < numbreaks; i++) { + this.rowBreaks[i] = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + } + } + + public int[] getRowBreaks() { + return this.rowBreaks; + } +} diff --git a/hrmsEjb/jxl/read/biff/HyperlinkRecord.java b/hrmsEjb/jxl/read/biff/HyperlinkRecord.java new file mode 100644 index 0000000..e83cc69 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/HyperlinkRecord.java @@ -0,0 +1,189 @@ +package jxl.read.biff; + +import common.Logger; +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import jxl.CellReferenceHelper; +import jxl.Hyperlink; +import jxl.Range; +import jxl.Sheet; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.SheetRangeImpl; +import jxl.biff.StringHelper; + +public class HyperlinkRecord extends RecordData implements Hyperlink { + private static Logger logger = Logger.getLogger(HyperlinkRecord.class); + + private int firstRow; + + private int lastRow; + + private int firstColumn; + + private int lastColumn; + + private URL url; + + private File file; + + private String location; + + private SheetRangeImpl range; + + private LinkType linkType; + + private static class LinkType { + private LinkType() {} + } + + private static final LinkType urlLink = new LinkType(); + + private static final LinkType fileLink = new LinkType(); + + private static final LinkType workbookLink = new LinkType(); + + private static final LinkType unknown = new LinkType(); + + HyperlinkRecord(Record t, Sheet s, WorkbookSettings ws) { + super(t); + this.linkType = unknown; + byte[] data = getRecord().getData(); + this.firstRow = IntegerHelper.getInt(data[0], data[1]); + this.lastRow = IntegerHelper.getInt(data[2], data[3]); + this.firstColumn = IntegerHelper.getInt(data[4], data[5]); + this.lastColumn = IntegerHelper.getInt(data[6], data[7]); + this.range = new SheetRangeImpl(s, this.firstColumn, this.firstRow, this.lastColumn, this.lastRow); + int options = IntegerHelper.getInt(data[28], data[29], data[30], data[31]); + boolean description = ((options & 0x14) != 0); + int startpos = 32; + int descbytes = 0; + if (description) { + int descchars = IntegerHelper.getInt(data[startpos], data[startpos + 1], data[startpos + 2], data[startpos + 3]); + descbytes = descchars * 2 + 4; + } + startpos += descbytes; + boolean targetFrame = ((options & 0x80) != 0); + int targetbytes = 0; + if (targetFrame) { + int targetchars = IntegerHelper.getInt(data[startpos], data[startpos + 1], data[startpos + 2], data[startpos + 3]); + targetbytes = targetchars * 2 + 4; + } + startpos += targetbytes; + if ((options & 0x3) == 3) { + this.linkType = urlLink; + if (data[startpos] == 3) + this.linkType = fileLink; + } else if ((options & 0x1) != 0) { + this.linkType = fileLink; + if (data[startpos] == -32) + this.linkType = urlLink; + } else if ((options & 0x8) != 0) { + this.linkType = workbookLink; + } + if (this.linkType == urlLink) { + String urlString = null; + try { + startpos += 16; + int bytes = IntegerHelper.getInt(data[startpos], data[startpos + 1], data[startpos + 2], data[startpos + 3]); + urlString = StringHelper.getUnicodeString(data, bytes / 2 - 1, startpos + 4); + this.url = new URL(urlString); + } catch (MalformedURLException e) { + logger.warn("URL " + urlString + " is malformed. Trying a file"); + try { + this.linkType = fileLink; + this.file = new File(urlString); + } catch (Exception e3) { + logger.warn("Cannot set to file. Setting a default URL"); + try { + this.linkType = urlLink; + this.url = new URL("http://www.andykhan.com/jexcelapi/index.html"); + } catch (MalformedURLException e2) {} + } + } catch (Throwable e) { + StringBuffer sb1 = new StringBuffer(); + StringBuffer sb2 = new StringBuffer(); + CellReferenceHelper.getCellReference(this.firstColumn, this.firstRow, sb1); + CellReferenceHelper.getCellReference(this.lastColumn, this.lastRow, sb2); + sb1.insert(0, "Exception when parsing URL "); + sb1.append('"').append(sb2.toString()).append("\". Using default."); + logger.warn(sb1, e); + try { + this.url = new URL("http://www.andykhan.com/jexcelapi/index.html"); + } catch (MalformedURLException e2) {} + } + } else if (this.linkType == fileLink) { + try { + startpos += 16; + int upLevelCount = IntegerHelper.getInt(data[startpos], data[startpos + 1]); + int chars = IntegerHelper.getInt(data[startpos + 2], data[startpos + 3], data[startpos + 4], data[startpos + 5]); + String fileName = StringHelper.getString(data, chars - 1, startpos + 6, ws); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < upLevelCount; i++) + sb.append("..\\"); + sb.append(fileName); + this.file = new File(sb.toString()); + } catch (Throwable e) { + e.printStackTrace(); + logger.warn("Exception when parsing file " + e.getClass().getName() + "."); + this.file = new File("."); + } + } else if (this.linkType == workbookLink) { + int chars = IntegerHelper.getInt(data[32], data[33], data[34], data[35]); + this.location = StringHelper.getUnicodeString(data, chars - 1, 36); + } else { + logger.warn("Cannot determine link type"); + return; + } + } + + public boolean isFile() { + return (this.linkType == fileLink); + } + + public boolean isURL() { + return (this.linkType == urlLink); + } + + public boolean isLocation() { + return (this.linkType == workbookLink); + } + + public int getRow() { + return this.firstRow; + } + + public int getColumn() { + return this.firstColumn; + } + + public int getLastRow() { + return this.lastRow; + } + + public int getLastColumn() { + return this.lastColumn; + } + + public URL getURL() { + return this.url; + } + + public File getFile() { + return this.file; + } + + public Record getRecord() { + return super.getRecord(); + } + + public Range getRange() { + return (Range)this.range; + } + + public String getLocation() { + return this.location; + } +} diff --git a/hrmsEjb/jxl/read/biff/LabelRecord.java b/hrmsEjb/jxl/read/biff/LabelRecord.java new file mode 100644 index 0000000..54bd3fe --- /dev/null +++ b/hrmsEjb/jxl/read/biff/LabelRecord.java @@ -0,0 +1,50 @@ +package jxl.read.biff; + +import jxl.CellType; +import jxl.LabelCell; +import jxl.WorkbookSettings; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; + +class LabelRecord extends CellValue implements LabelCell { + private int length; + + private String string; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + public LabelRecord(Record t, FormattingRecords fr, SheetImpl si, WorkbookSettings ws) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.length = IntegerHelper.getInt(data[6], data[7]); + if (data[8] == 0) { + this.string = StringHelper.getString(data, this.length, 9, ws); + } else { + this.string = StringHelper.getUnicodeString(data, this.length, 9); + } + } + + public LabelRecord(Record t, FormattingRecords fr, SheetImpl si, WorkbookSettings ws, Biff7 dummy) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.length = IntegerHelper.getInt(data[6], data[7]); + this.string = StringHelper.getString(data, this.length, 8, ws); + } + + public String getString() { + return this.string; + } + + public String getContents() { + return this.string; + } + + public CellType getType() { + return CellType.LABEL; + } +} diff --git a/hrmsEjb/jxl/read/biff/LabelSSTRecord.java b/hrmsEjb/jxl/read/biff/LabelSSTRecord.java new file mode 100644 index 0000000..bc7a797 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/LabelSSTRecord.java @@ -0,0 +1,31 @@ +package jxl.read.biff; + +import jxl.CellType; +import jxl.LabelCell; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; + +class LabelSSTRecord extends CellValue implements LabelCell { + private int index; + + private String string; + + public LabelSSTRecord(Record t, SSTRecord stringTable, FormattingRecords fr, SheetImpl si) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.index = IntegerHelper.getInt(data[6], data[7], data[8], data[9]); + this.string = stringTable.getString(this.index); + } + + public String getString() { + return this.string; + } + + public String getContents() { + return this.string; + } + + public CellType getType() { + return CellType.LABEL; + } +} diff --git a/hrmsEjb/jxl/read/biff/LeftMarginRecord.java b/hrmsEjb/jxl/read/biff/LeftMarginRecord.java new file mode 100644 index 0000000..6e1728a --- /dev/null +++ b/hrmsEjb/jxl/read/biff/LeftMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.read.biff; + +import jxl.biff.Type; + +class LeftMarginRecord extends MarginRecord { + LeftMarginRecord(Record r) { + super(Type.LEFTMARGIN, r); + } +} diff --git a/hrmsEjb/jxl/read/biff/MarginRecord.java b/hrmsEjb/jxl/read/biff/MarginRecord.java new file mode 100644 index 0000000..450c203 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/MarginRecord.java @@ -0,0 +1,19 @@ +package jxl.read.biff; + +import jxl.biff.DoubleHelper; +import jxl.biff.RecordData; +import jxl.biff.Type; + +abstract class MarginRecord extends RecordData { + private double margin; + + protected MarginRecord(Type t, Record r) { + super(t); + byte[] data = r.getData(); + this.margin = DoubleHelper.getIEEEDouble(data, 0); + } + + double getMargin() { + return this.margin; + } +} diff --git a/hrmsEjb/jxl/read/biff/MergedCellsRecord.java b/hrmsEjb/jxl/read/biff/MergedCellsRecord.java new file mode 100644 index 0000000..37586a0 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/MergedCellsRecord.java @@ -0,0 +1,35 @@ +package jxl.read.biff; + +import jxl.Range; +import jxl.Sheet; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.SheetRangeImpl; + +public class MergedCellsRecord extends RecordData { + private Range[] ranges; + + MergedCellsRecord(Record t, Sheet s) { + super(t); + byte[] data = getRecord().getData(); + int numRanges = IntegerHelper.getInt(data[0], data[1]); + this.ranges = new Range[numRanges]; + int pos = 2; + int firstRow = 0; + int lastRow = 0; + int firstCol = 0; + int lastCol = 0; + for (int i = 0; i < numRanges; i++) { + firstRow = IntegerHelper.getInt(data[pos], data[pos + 1]); + lastRow = IntegerHelper.getInt(data[pos + 2], data[pos + 3]); + firstCol = IntegerHelper.getInt(data[pos + 4], data[pos + 5]); + lastCol = IntegerHelper.getInt(data[pos + 6], data[pos + 7]); + this.ranges[i] = (Range)new SheetRangeImpl(s, firstCol, firstRow, lastCol, lastRow); + pos += 8; + } + } + + public Range[] getRanges() { + return this.ranges; + } +} diff --git a/hrmsEjb/jxl/read/biff/MulBlankCell.java b/hrmsEjb/jxl/read/biff/MulBlankCell.java new file mode 100644 index 0000000..b41b7f5 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/MulBlankCell.java @@ -0,0 +1,81 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.Cell; +import jxl.CellFeatures; +import jxl.CellType; +import jxl.biff.FormattingRecords; +import jxl.format.CellFormat; + +class MulBlankCell implements Cell, CellFeaturesAccessor { + private static Logger logger = Logger.getLogger(MulBlankCell.class); + + private int row; + + private int column; + + private CellFormat cellFormat; + + private int xfIndex; + + private FormattingRecords formattingRecords; + + private boolean initialized; + + private SheetImpl sheet; + + private CellFeatures features; + + public MulBlankCell(int r, int c, int xfi, FormattingRecords fr, SheetImpl si) { + this.row = r; + this.column = c; + this.xfIndex = xfi; + this.formattingRecords = fr; + this.sheet = si; + this.initialized = false; + } + + public final int getRow() { + return this.row; + } + + public final int getColumn() { + return this.column; + } + + public String getContents() { + return ""; + } + + public CellType getType() { + return CellType.EMPTY; + } + + public CellFormat getCellFormat() { + if (!this.initialized) { + this.cellFormat = (CellFormat)this.formattingRecords.getXFRecord(this.xfIndex); + this.initialized = true; + } + return this.cellFormat; + } + + public boolean isHidden() { + ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column); + if (cir != null && cir.getWidth() == 0) + return true; + RowRecord rr = this.sheet.getRowInfo(this.row); + if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed())) + return true; + return false; + } + + public CellFeatures getCellFeatures() { + return this.features; + } + + public void setCellFeatures(CellFeatures cf) { + if (this.features != null) + logger.warn("current cell features not null - overwriting"); + this.features = cf; + } +} diff --git a/hrmsEjb/jxl/read/biff/MulBlankRecord.java b/hrmsEjb/jxl/read/biff/MulBlankRecord.java new file mode 100644 index 0000000..d29d408 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/MulBlankRecord.java @@ -0,0 +1,55 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class MulBlankRecord extends RecordData { + private static Logger logger = Logger.getLogger(MulBlankRecord.class); + + private int row; + + private int colFirst; + + private int colLast; + + private int numblanks; + + private int[] xfIndices; + + public MulBlankRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + int length = getRecord().getLength(); + this.row = IntegerHelper.getInt(data[0], data[1]); + this.colFirst = IntegerHelper.getInt(data[2], data[3]); + this.colLast = IntegerHelper.getInt(data[length - 2], data[length - 1]); + this.numblanks = this.colLast - this.colFirst + 1; + this.xfIndices = new int[this.numblanks]; + readBlanks(data); + } + + private void readBlanks(byte[] data) { + int pos = 4; + for (int i = 0; i < this.numblanks; i++) { + this.xfIndices[i] = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + } + } + + public int getRow() { + return this.row; + } + + public int getFirstColumn() { + return this.colFirst; + } + + public int getNumberOfColumns() { + return this.numblanks; + } + + public int getXFIndex(int index) { + return this.xfIndices[index]; + } +} diff --git a/hrmsEjb/jxl/read/biff/MulRKRecord.java b/hrmsEjb/jxl/read/biff/MulRKRecord.java new file mode 100644 index 0000000..c767bf3 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/MulRKRecord.java @@ -0,0 +1,64 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class MulRKRecord extends RecordData { + private static Logger logger = Logger.getLogger(MulRKRecord.class); + + private int row; + + private int colFirst; + + private int colLast; + + private int numrks; + + private int[] rknumbers; + + private int[] xfIndices; + + public MulRKRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + int length = getRecord().getLength(); + this.row = IntegerHelper.getInt(data[0], data[1]); + this.colFirst = IntegerHelper.getInt(data[2], data[3]); + this.colLast = IntegerHelper.getInt(data[length - 2], data[length - 1]); + this.numrks = this.colLast - this.colFirst + 1; + this.rknumbers = new int[this.numrks]; + this.xfIndices = new int[this.numrks]; + readRks(data); + } + + private void readRks(byte[] data) { + int pos = 4; + for (int i = 0; i < this.numrks; i++) { + this.xfIndices[i] = IntegerHelper.getInt(data[pos], data[pos + 1]); + int rk = IntegerHelper.getInt(data[pos + 2], data[pos + 3], data[pos + 4], data[pos + 5]); + this.rknumbers[i] = rk; + pos += 6; + } + } + + public int getRow() { + return this.row; + } + + public int getFirstColumn() { + return this.colFirst; + } + + public int getNumberOfColumns() { + return this.numrks; + } + + public int getRKNumber(int index) { + return this.rknumbers[index]; + } + + public int getXFIndex(int index) { + return this.xfIndices[index]; + } +} diff --git a/hrmsEjb/jxl/read/biff/NameRecord.java b/hrmsEjb/jxl/read/biff/NameRecord.java new file mode 100644 index 0000000..9c9a4c2 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/NameRecord.java @@ -0,0 +1,283 @@ +package jxl.read.biff; + +import common.Assert; +import common.Logger; +import java.util.ArrayList; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.StringHelper; + +public class NameRecord extends RecordData { + private static Logger logger = Logger.getLogger(NameRecord.class); + + private String name; + + private int index; + + private int sheetRef = 0; + + private boolean isbiff8; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + private static final int commandMacro = 12; + + private static final int builtIn = 32; + + private static final int cellReference = 58; + + private static final int areaReference = 59; + + private static final int subExpression = 41; + + private static final int union = 16; + + private ArrayList ranges; + + public class NameRange { + private int columnFirst; + + private int rowFirst; + + private int columnLast; + + private int rowLast; + + private int externalSheet; + + private final NameRecord this$0; + + NameRange(NameRecord this$0, int s1, int c1, int r1, int c2, int r2) { + this.this$0 = this$0; + this.columnFirst = c1; + this.rowFirst = r1; + this.columnLast = c2; + this.rowLast = r2; + this.externalSheet = s1; + } + + public int getFirstColumn() { + return this.columnFirst; + } + + public int getFirstRow() { + return this.rowFirst; + } + + public int getLastColumn() { + return this.columnLast; + } + + public int getLastRow() { + return this.rowLast; + } + + public int getExternalSheet() { + return this.externalSheet; + } + } + + private static final String[] builtInNames = new String[] { + "Consolidate_Area", "Auto_Open", "Auto_Close", "Extract", "Database", "Criteria", "Print_Area", "Print_Titles", "Recorder", "Data_Form", + "Auto_Activate", "Auto_Deactivate", "Sheet_Title", "_FilterDatabase" }; + + NameRecord(Record t, WorkbookSettings ws, int ind) { + super(t); + this.index = ind; + this.isbiff8 = true; + try { + this.ranges = new ArrayList(); + byte[] data = getRecord().getData(); + int option = IntegerHelper.getInt(data[0], data[1]); + int length = data[3]; + this.sheetRef = IntegerHelper.getInt(data[8], data[9]); + if ((option & 0x20) != 0) { + this.name = (data[15] < 13) ? builtInNames[data[15]] : ("Builtin_" + Integer.toString(data[15], 16)); + return; + } + this.name = StringHelper.getString(data, length, 15, ws); + if ((option & 0xC) != 0) + return; + int pos = length + 15; + if (data[pos] == 58) { + int sheet = IntegerHelper.getInt(data[pos + 1], data[pos + 2]); + int row = IntegerHelper.getInt(data[pos + 3], data[pos + 4]); + int columnMask = IntegerHelper.getInt(data[pos + 5], data[pos + 6]); + int column = columnMask & 0xFF; + Assert.verify(((columnMask & 0xC0000) == 0)); + NameRange r = new NameRange(this, sheet, column, row, column, row); + this.ranges.add(r); + } else if (data[pos] == 59) { + int sheet1 = 0; + int r1 = 0; + int columnMask = 0; + int c1 = 0; + int r2 = 0; + int c2 = 0; + NameRange range = null; + while (pos < data.length) { + sheet1 = IntegerHelper.getInt(data[pos + 1], data[pos + 2]); + r1 = IntegerHelper.getInt(data[pos + 3], data[pos + 4]); + r2 = IntegerHelper.getInt(data[pos + 5], data[pos + 6]); + columnMask = IntegerHelper.getInt(data[pos + 7], data[pos + 8]); + c1 = columnMask & 0xFF; + Assert.verify(((columnMask & 0xC0000) == 0)); + columnMask = IntegerHelper.getInt(data[pos + 9], data[pos + 10]); + c2 = columnMask & 0xFF; + Assert.verify(((columnMask & 0xC0000) == 0)); + range = new NameRange(this, sheet1, c1, r1, c2, r2); + this.ranges.add(range); + pos += 11; + } + } else if (data[pos] == 41) { + int sheet1 = 0; + int r1 = 0; + int columnMask = 0; + int c1 = 0; + int r2 = 0; + int c2 = 0; + NameRange range = null; + if (pos < data.length && data[pos] != 58 && data[pos] != 59) + if (data[pos] == 41) { + pos += 3; + } else if (data[pos] == 16) { + pos++; + } + while (pos < data.length) { + sheet1 = IntegerHelper.getInt(data[pos + 1], data[pos + 2]); + r1 = IntegerHelper.getInt(data[pos + 3], data[pos + 4]); + r2 = IntegerHelper.getInt(data[pos + 5], data[pos + 6]); + columnMask = IntegerHelper.getInt(data[pos + 7], data[pos + 8]); + c1 = columnMask & 0xFF; + Assert.verify(((columnMask & 0xC0000) == 0)); + columnMask = IntegerHelper.getInt(data[pos + 9], data[pos + 10]); + c2 = columnMask & 0xFF; + Assert.verify(((columnMask & 0xC0000) == 0)); + range = new NameRange(this, sheet1, c1, r1, c2, r2); + this.ranges.add(range); + pos += 11; + if (pos < data.length && data[pos] != 58 && data[pos] != 59) { + if (data[pos] == 41) { + pos += 3; + continue; + } + if (data[pos] == 16) + pos++; + } + } + } + } catch (Throwable t1) { + logger.warn("Cannot read name"); + this.name = "ERROR"; + } + } + + NameRecord(Record t, WorkbookSettings ws, int ind, Biff7 dummy) { + super(t); + this.index = ind; + this.isbiff8 = false; + try { + this.ranges = new ArrayList(); + byte[] data = getRecord().getData(); + int length = data[3]; + this.sheetRef = IntegerHelper.getInt(data[8], data[9]); + this.name = StringHelper.getString(data, length, 14, ws); + int pos = length + 14; + if (pos >= data.length) + return; + if (data[pos] == 58) { + int sheet = IntegerHelper.getInt(data[pos + 11], data[pos + 12]); + int row = IntegerHelper.getInt(data[pos + 15], data[pos + 16]); + int column = data[pos + 17]; + NameRange r = new NameRange(this, sheet, column, row, column, row); + this.ranges.add(r); + } else if (data[pos] == 59) { + int sheet1 = 0; + int r1 = 0; + int c1 = 0; + int r2 = 0; + int c2 = 0; + NameRange range = null; + while (pos < data.length) { + sheet1 = IntegerHelper.getInt(data[pos + 11], data[pos + 12]); + r1 = IntegerHelper.getInt(data[pos + 15], data[pos + 16]); + r2 = IntegerHelper.getInt(data[pos + 17], data[pos + 18]); + c1 = data[pos + 19]; + c2 = data[pos + 20]; + range = new NameRange(this, sheet1, c1, r1, c2, r2); + this.ranges.add(range); + pos += 21; + } + } else if (data[pos] == 41) { + int sheet1 = 0; + int sheet2 = 0; + int r1 = 0; + int c1 = 0; + int r2 = 0; + int c2 = 0; + NameRange range = null; + if (pos < data.length && data[pos] != 58 && data[pos] != 59) + if (data[pos] == 41) { + pos += 3; + } else if (data[pos] == 16) { + pos++; + } + while (pos < data.length) { + sheet1 = IntegerHelper.getInt(data[pos + 11], data[pos + 12]); + r1 = IntegerHelper.getInt(data[pos + 15], data[pos + 16]); + r2 = IntegerHelper.getInt(data[pos + 17], data[pos + 18]); + c1 = data[pos + 19]; + c2 = data[pos + 20]; + range = new NameRange(this, sheet1, c1, r1, c2, r2); + this.ranges.add(range); + pos += 21; + if (pos < data.length && data[pos] != 58 && data[pos] != 59) { + if (data[pos] == 41) { + pos += 3; + continue; + } + if (data[pos] == 16) + pos++; + } + } + } + } catch (Throwable t1) { + logger.warn("Cannot read name."); + this.name = "ERROR"; + } + } + + public String getName() { + return this.name; + } + + public NameRange[] getRanges() { + NameRange[] nr = new NameRange[this.ranges.size()]; + return (NameRange[])this.ranges.toArray((Object[])nr); + } + + int getIndex() { + return this.index; + } + + public int getSheetRef() { + return this.sheetRef; + } + + public void setSheetRef(int i) { + this.sheetRef = i; + } + + public byte[] getData() { + return getRecord().getData(); + } + + public boolean isBiff8() { + return this.isbiff8; + } +} diff --git a/hrmsEjb/jxl/read/biff/NineteenFourRecord.java b/hrmsEjb/jxl/read/biff/NineteenFourRecord.java new file mode 100644 index 0000000..c94c89c --- /dev/null +++ b/hrmsEjb/jxl/read/biff/NineteenFourRecord.java @@ -0,0 +1,17 @@ +package jxl.read.biff; + +import jxl.biff.RecordData; + +class NineteenFourRecord extends RecordData { + private boolean nineteenFour; + + public NineteenFourRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + this.nineteenFour = (data[0] == 1); + } + + public boolean is1904() { + return this.nineteenFour; + } +} diff --git a/hrmsEjb/jxl/read/biff/NumberFormulaRecord.java b/hrmsEjb/jxl/read/biff/NumberFormulaRecord.java new file mode 100644 index 0000000..98ceb75 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/NumberFormulaRecord.java @@ -0,0 +1,79 @@ +package jxl.read.biff; + +import common.Logger; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import jxl.CellType; +import jxl.NumberCell; +import jxl.NumberFormulaCell; +import jxl.biff.DoubleHelper; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class NumberFormulaRecord extends CellValue implements NumberCell, FormulaData, NumberFormulaCell { + private static Logger logger = Logger.getLogger(NumberFormulaRecord.class); + + private double value; + + private NumberFormat format; + + private static final DecimalFormat defaultFormat = new DecimalFormat("#.###"); + + private String formulaString; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + private byte[] data; + + public NumberFormulaRecord(Record t, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) { + super(t, fr, si); + this.externalSheet = es; + this.nameTable = nt; + this.data = getRecord().getData(); + this.format = fr.getNumberFormat(getXFIndex()); + if (this.format == null) + this.format = defaultFormat; + this.value = DoubleHelper.getIEEEDouble(this.data, 6); + } + + public double getValue() { + return this.value; + } + + public String getContents() { + return !Double.isNaN(this.value) ? this.format.format(this.value) : ""; + } + + public CellType getType() { + return CellType.NUMBER_FORMULA; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + byte[] d = new byte[this.data.length - 6]; + System.arraycopy(this.data, 6, d, 0, this.data.length - 6); + return d; + } + + public String getFormula() throws FormulaException { + if (this.formulaString == null) { + byte[] tokens = new byte[this.data.length - 22]; + System.arraycopy(this.data, 22, tokens, 0, tokens.length); + FormulaParser fp = new FormulaParser(tokens, this, this.externalSheet, this.nameTable, getSheet().getWorkbook().getSettings()); + fp.parse(); + this.formulaString = fp.getFormula(); + } + return this.formulaString; + } + + public NumberFormat getNumberFormat() { + return this.format; + } +} diff --git a/hrmsEjb/jxl/read/biff/NumberRecord.java b/hrmsEjb/jxl/read/biff/NumberRecord.java new file mode 100644 index 0000000..b181df4 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/NumberRecord.java @@ -0,0 +1,44 @@ +package jxl.read.biff; + +import common.Logger; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import jxl.CellType; +import jxl.NumberCell; +import jxl.biff.DoubleHelper; +import jxl.biff.FormattingRecords; + +class NumberRecord extends CellValue implements NumberCell { + private static Logger logger = Logger.getLogger(NumberRecord.class); + + private double value; + + private NumberFormat format; + + private static DecimalFormat defaultFormat = new DecimalFormat("#.###"); + + public NumberRecord(Record t, FormattingRecords fr, SheetImpl si) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.value = DoubleHelper.getIEEEDouble(data, 6); + this.format = fr.getNumberFormat(getXFIndex()); + if (this.format == null) + this.format = defaultFormat; + } + + public double getValue() { + return this.value; + } + + public String getContents() { + return this.format.format(this.value); + } + + public CellType getType() { + return CellType.NUMBER; + } + + public NumberFormat getNumberFormat() { + return this.format; + } +} diff --git a/hrmsEjb/jxl/read/biff/NumberValue.java b/hrmsEjb/jxl/read/biff/NumberValue.java new file mode 100644 index 0000000..abafb37 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/NumberValue.java @@ -0,0 +1,99 @@ +package jxl.read.biff; + +import java.text.DecimalFormat; +import java.text.NumberFormat; +import jxl.CellFeatures; +import jxl.CellType; +import jxl.NumberCell; +import jxl.biff.FormattingRecords; +import jxl.format.CellFormat; + +class NumberValue implements NumberCell, CellFeaturesAccessor { + private int row; + + private int column; + + private double value; + + private NumberFormat format; + + private CellFormat cellFormat; + + private CellFeatures features; + + private int xfIndex; + + private FormattingRecords formattingRecords; + + private boolean initialized; + + private SheetImpl sheet; + + private static DecimalFormat defaultFormat = new DecimalFormat("#.###"); + + public NumberValue(int r, int c, double val, int xfi, FormattingRecords fr, SheetImpl si) { + this.row = r; + this.column = c; + this.value = val; + this.format = defaultFormat; + this.xfIndex = xfi; + this.formattingRecords = fr; + this.sheet = si; + this.initialized = false; + } + + final void setNumberFormat(NumberFormat f) { + if (f != null) + this.format = f; + } + + public final int getRow() { + return this.row; + } + + public final int getColumn() { + return this.column; + } + + public double getValue() { + return this.value; + } + + public String getContents() { + return this.format.format(this.value); + } + + public CellType getType() { + return CellType.NUMBER; + } + + public CellFormat getCellFormat() { + if (!this.initialized) { + this.cellFormat = (CellFormat)this.formattingRecords.getXFRecord(this.xfIndex); + this.initialized = true; + } + return this.cellFormat; + } + + public boolean isHidden() { + ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column); + if (cir != null && cir.getWidth() == 0) + return true; + RowRecord rr = this.sheet.getRowInfo(this.row); + if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed())) + return true; + return false; + } + + public NumberFormat getNumberFormat() { + return this.format; + } + + public CellFeatures getCellFeatures() { + return this.features; + } + + public void setCellFeatures(CellFeatures cf) { + this.features = cf; + } +} diff --git a/hrmsEjb/jxl/read/biff/PLSRecord.java b/hrmsEjb/jxl/read/biff/PLSRecord.java new file mode 100644 index 0000000..ded4c85 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/PLSRecord.java @@ -0,0 +1,13 @@ +package jxl.read.biff; + +import jxl.biff.RecordData; + +public class PLSRecord extends RecordData { + public PLSRecord(Record r) { + super(r); + } + + public byte[] getData() { + return getRecord().getData(); + } +} diff --git a/hrmsEjb/jxl/read/biff/PaneRecord.java b/hrmsEjb/jxl/read/biff/PaneRecord.java new file mode 100644 index 0000000..2c4d792 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/PaneRecord.java @@ -0,0 +1,28 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class PaneRecord extends RecordData { + private static Logger logger = Logger.getLogger(PaneRecord.class); + + private int rowsVisible; + + private int columnsVisible; + + public PaneRecord(Record t) { + super(t); + byte[] data = t.getData(); + this.columnsVisible = IntegerHelper.getInt(data[0], data[1]); + this.rowsVisible = IntegerHelper.getInt(data[2], data[3]); + } + + public final int getRowsVisible() { + return this.rowsVisible; + } + + public final int getColumnsVisible() { + return this.columnsVisible; + } +} diff --git a/hrmsEjb/jxl/read/biff/PasswordException.java b/hrmsEjb/jxl/read/biff/PasswordException.java new file mode 100644 index 0000000..b2cbee4 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/PasswordException.java @@ -0,0 +1,7 @@ +package jxl.read.biff; + +public class PasswordException extends BiffException { + public PasswordException() { + super(passwordProtected); + } +} diff --git a/hrmsEjb/jxl/read/biff/PasswordRecord.java b/hrmsEjb/jxl/read/biff/PasswordRecord.java new file mode 100644 index 0000000..7c9b3d1 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/PasswordRecord.java @@ -0,0 +1,21 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.Type; + +class PasswordRecord extends RecordData { + private String password; + + private int passwordHash; + + public PasswordRecord(Record t) { + super(Type.PASSWORD); + byte[] data = t.getData(); + this.passwordHash = IntegerHelper.getInt(data[0], data[1]); + } + + public int getPasswordHash() { + return this.passwordHash; + } +} diff --git a/hrmsEjb/jxl/read/biff/PrintGridLinesRecord.java b/hrmsEjb/jxl/read/biff/PrintGridLinesRecord.java new file mode 100644 index 0000000..42f7088 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/PrintGridLinesRecord.java @@ -0,0 +1,17 @@ +package jxl.read.biff; + +import jxl.biff.RecordData; + +class PrintGridLinesRecord extends RecordData { + private boolean printGridLines; + + public PrintGridLinesRecord(Record pgl) { + super(pgl); + byte[] data = pgl.getData(); + this.printGridLines = (data[0] == 1); + } + + public boolean getPrintGridLines() { + return this.printGridLines; + } +} diff --git a/hrmsEjb/jxl/read/biff/PrintHeadersRecord.java b/hrmsEjb/jxl/read/biff/PrintHeadersRecord.java new file mode 100644 index 0000000..b33f476 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/PrintHeadersRecord.java @@ -0,0 +1,17 @@ +package jxl.read.biff; + +import jxl.biff.RecordData; + +class PrintHeadersRecord extends RecordData { + private boolean printHeaders; + + public PrintHeadersRecord(Record ph) { + super(ph); + byte[] data = ph.getData(); + this.printHeaders = (data[0] == 1); + } + + public boolean getPrintHeaders() { + return this.printHeaders; + } +} diff --git a/hrmsEjb/jxl/read/biff/ProtectRecord.java b/hrmsEjb/jxl/read/biff/ProtectRecord.java new file mode 100644 index 0000000..7e7acdd --- /dev/null +++ b/hrmsEjb/jxl/read/biff/ProtectRecord.java @@ -0,0 +1,19 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class ProtectRecord extends RecordData { + private boolean prot; + + ProtectRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + int protflag = IntegerHelper.getInt(data[0], data[1]); + this.prot = (protflag == 1); + } + + boolean isProtected() { + return this.prot; + } +} diff --git a/hrmsEjb/jxl/read/biff/RKHelper.java b/hrmsEjb/jxl/read/biff/RKHelper.java new file mode 100644 index 0000000..51efca5 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/RKHelper.java @@ -0,0 +1,19 @@ +package jxl.read.biff; + +final class RKHelper { + public static double getDouble(int rk) { + if ((rk & 0x2) != 0) { + int intval = rk >> 2; + double d = intval; + if ((rk & 0x1) != 0) + d /= 100.0D; + return d; + } + long valbits = (rk & 0xFFFFFFFC); + valbits <<= 32L; + double value = Double.longBitsToDouble(valbits); + if ((rk & 0x1) != 0) + value /= 100.0D; + return value; + } +} diff --git a/hrmsEjb/jxl/read/biff/RKRecord.java b/hrmsEjb/jxl/read/biff/RKRecord.java new file mode 100644 index 0000000..fedcc89 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/RKRecord.java @@ -0,0 +1,45 @@ +package jxl.read.biff; + +import common.Logger; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import jxl.CellType; +import jxl.NumberCell; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; + +class RKRecord extends CellValue implements NumberCell { + private static Logger logger = Logger.getLogger(RKRecord.class); + + private double value; + + private NumberFormat format; + + private static DecimalFormat defaultFormat = new DecimalFormat("#.###"); + + public RKRecord(Record t, FormattingRecords fr, SheetImpl si) { + super(t, fr, si); + byte[] data = getRecord().getData(); + int rknum = IntegerHelper.getInt(data[6], data[7], data[8], data[9]); + this.value = RKHelper.getDouble(rknum); + this.format = fr.getNumberFormat(getXFIndex()); + if (this.format == null) + this.format = defaultFormat; + } + + public double getValue() { + return this.value; + } + + public String getContents() { + return this.format.format(this.value); + } + + public CellType getType() { + return CellType.NUMBER; + } + + public NumberFormat getNumberFormat() { + return this.format; + } +} diff --git a/hrmsEjb/jxl/read/biff/RStringRecord.java b/hrmsEjb/jxl/read/biff/RStringRecord.java new file mode 100644 index 0000000..16f3c43 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/RStringRecord.java @@ -0,0 +1,39 @@ +package jxl.read.biff; + +import jxl.CellType; +import jxl.LabelCell; +import jxl.WorkbookSettings; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; + +class RStringRecord extends CellValue implements LabelCell { + private int length; + + private String string; + + private static class Biff7 { + private Biff7() {} + } + + public static Biff7 biff7 = new Biff7(); + + public RStringRecord(Record t, FormattingRecords fr, SheetImpl si, WorkbookSettings ws, Biff7 dummy) { + super(t, fr, si); + byte[] data = getRecord().getData(); + this.length = IntegerHelper.getInt(data[6], data[7]); + this.string = StringHelper.getString(data, this.length, 8, ws); + } + + public String getString() { + return this.string; + } + + public String getContents() { + return this.string; + } + + public CellType getType() { + return CellType.LABEL; + } +} diff --git a/hrmsEjb/jxl/read/biff/Record.java b/hrmsEjb/jxl/read/biff/Record.java new file mode 100644 index 0000000..045b93e --- /dev/null +++ b/hrmsEjb/jxl/read/biff/Record.java @@ -0,0 +1,81 @@ +package jxl.read.biff; + +import common.Logger; +import java.util.ArrayList; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; + +public final class Record { + private static final Logger logger = Logger.getLogger(Record.class); + + private int code; + + private Type type; + + private int length; + + private int dataPos; + + private File file; + + private byte[] data; + + private ArrayList continueRecords; + + Record(byte[] d, int offset, File f) { + this.code = IntegerHelper.getInt(d[offset], d[offset + 1]); + this.length = IntegerHelper.getInt(d[offset + 2], d[offset + 3]); + this.file = f; + this.file.skip(4); + this.dataPos = f.getPos(); + this.file.skip(this.length); + this.type = Type.getType(this.code); + } + + public Type getType() { + return this.type; + } + + public int getLength() { + return this.length; + } + + public byte[] getData() { + if (this.data == null) + this.data = this.file.read(this.dataPos, this.length); + if (this.continueRecords != null) { + int size = 0; + byte[][] contData = new byte[this.continueRecords.size()][]; + for (int i = 0; i < this.continueRecords.size(); i++) { + Record r = this.continueRecords.get(i); + contData[i] = r.getData(); + byte[] d2 = contData[i]; + size += d2.length; + } + byte[] d3 = new byte[this.data.length + size]; + System.arraycopy(this.data, 0, d3, 0, this.data.length); + int pos = this.data.length; + for (int j = 0; j < contData.length; j++) { + byte[] d2 = contData[j]; + System.arraycopy(d2, 0, d3, pos, d2.length); + pos += d2.length; + } + this.data = d3; + } + return this.data; + } + + public int getCode() { + return this.code; + } + + void setType(Type t) { + this.type = t; + } + + public void addContinueRecord(Record d) { + if (this.continueRecords == null) + this.continueRecords = new ArrayList(); + this.continueRecords.add(d); + } +} diff --git a/hrmsEjb/jxl/read/biff/RightMarginRecord.java b/hrmsEjb/jxl/read/biff/RightMarginRecord.java new file mode 100644 index 0000000..a253a03 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/RightMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.read.biff; + +import jxl.biff.Type; + +class RightMarginRecord extends MarginRecord { + RightMarginRecord(Record r) { + super(Type.RIGHTMARGIN, r); + } +} diff --git a/hrmsEjb/jxl/read/biff/RowRecord.java b/hrmsEjb/jxl/read/biff/RowRecord.java new file mode 100644 index 0000000..36ee2f2 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/RowRecord.java @@ -0,0 +1,63 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +public class RowRecord extends RecordData { + private static Logger logger = Logger.getLogger(RowRecord.class); + + private int rowNumber; + + private int rowHeight; + + private boolean collapsed; + + private boolean defaultFormat; + + private boolean matchesDefFontHeight; + + private int xfIndex; + + private static final int defaultHeightIndicator = 255; + + RowRecord(Record t) { + super(t); + byte[] data = getRecord().getData(); + this.rowNumber = IntegerHelper.getInt(data[0], data[1]); + this.rowHeight = IntegerHelper.getInt(data[6], data[7]); + int options = IntegerHelper.getInt(data[12], data[13], data[14], data[15]); + this.collapsed = ((options & 0x20) != 0); + this.matchesDefFontHeight = ((options & 0x40) == 0); + this.defaultFormat = ((options & 0x80) != 0); + this.xfIndex = (options & 0xFFF0000) >> 16; + } + + boolean isDefaultHeight() { + return (this.rowHeight == 255); + } + + public boolean matchesDefaultFontHeight() { + return this.matchesDefFontHeight; + } + + public int getRowNumber() { + return this.rowNumber; + } + + public int getRowHeight() { + return this.rowHeight; + } + + public boolean isCollapsed() { + return this.collapsed; + } + + public int getXFIndex() { + return this.xfIndex; + } + + public boolean hasDefaultFormat() { + return this.defaultFormat; + } +} diff --git a/hrmsEjb/jxl/read/biff/SCLRecord.java b/hrmsEjb/jxl/read/biff/SCLRecord.java new file mode 100644 index 0000000..ba46b24 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SCLRecord.java @@ -0,0 +1,22 @@ +package jxl.read.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.Type; + +class SCLRecord extends RecordData { + private int numerator; + + private int denominator; + + protected SCLRecord(Record r) { + super(Type.SCL); + byte[] data = r.getData(); + this.numerator = IntegerHelper.getInt(data[0], data[1]); + this.denominator = IntegerHelper.getInt(data[2], data[3]); + } + + public int getZoomFactor() { + return this.numerator * 100 / this.denominator; + } +} diff --git a/hrmsEjb/jxl/read/biff/SSTRecord.java b/hrmsEjb/jxl/read/biff/SSTRecord.java new file mode 100644 index 0000000..ec83cbe --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SSTRecord.java @@ -0,0 +1,179 @@ +package jxl.read.biff; + +import common.Assert; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.StringHelper; + +class SSTRecord extends RecordData { + private int totalStrings; + + private int uniqueStrings; + + private String[] strings; + + private int[] continuationBreaks; + + private static class ByteArrayHolder { + public byte[] bytes; + + private ByteArrayHolder() {} + } + + private static class BooleanHolder { + public boolean value; + + private BooleanHolder() {} + } + + public SSTRecord(Record t, Record[] continuations, WorkbookSettings ws) { + super(t); + int totalRecordLength = 0; + for (int i = 0; i < continuations.length; i++) + totalRecordLength += continuations[i].getLength(); + totalRecordLength += getRecord().getLength(); + byte[] data = new byte[totalRecordLength]; + int pos = 0; + System.arraycopy(getRecord().getData(), 0, data, 0, getRecord().getLength()); + pos += getRecord().getLength(); + this.continuationBreaks = new int[continuations.length]; + Record r = null; + for (int j = 0; j < continuations.length; j++) { + r = continuations[j]; + System.arraycopy(r.getData(), 0, data, pos, r.getLength()); + this.continuationBreaks[j] = pos; + pos += r.getLength(); + } + this.totalStrings = IntegerHelper.getInt(data[0], data[1], data[2], data[3]); + this.uniqueStrings = IntegerHelper.getInt(data[4], data[5], data[6], data[7]); + this.strings = new String[this.uniqueStrings]; + readStrings(data, 8, ws); + } + + private void readStrings(byte[] data, int offset, WorkbookSettings ws) { + int pos = offset; + String s = null; + boolean asciiEncoding = false; + boolean richString = false; + boolean extendedString = false; + int formattingRuns = 0; + int extendedRunLength = 0; + for (int i = 0; i < this.uniqueStrings; i++) { + int numChars = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + byte optionFlags = data[pos]; + pos++; + extendedString = ((optionFlags & 0x4) != 0); + richString = ((optionFlags & 0x8) != 0); + if (richString) { + formattingRuns = IntegerHelper.getInt(data[pos], data[pos + 1]); + pos += 2; + } + if (extendedString) { + extendedRunLength = IntegerHelper.getInt(data[pos], data[pos + 1], data[pos + 2], data[pos + 3]); + pos += 4; + } + asciiEncoding = ((optionFlags & 0x1) == 0); + ByteArrayHolder bah = new ByteArrayHolder(); + BooleanHolder bh = new BooleanHolder(); + bh.value = asciiEncoding; + pos += getChars(data, bah, pos, bh, numChars); + asciiEncoding = bh.value; + if (asciiEncoding) { + s = StringHelper.getString(bah.bytes, numChars, 0, ws); + } else { + s = StringHelper.getUnicodeString(bah.bytes, numChars, 0); + } + this.strings[i] = s; + if (richString) + pos += 4 * formattingRuns; + if (extendedString) + pos += extendedRunLength; + if (pos > data.length) + Assert.verify(false, "pos exceeds record length"); + } + } + + private int getChars(byte[] source, ByteArrayHolder bah, int pos, BooleanHolder ascii, int numChars) { + int charsRead, i = 0; + boolean spansBreak = false; + if (ascii.value) { + bah.bytes = new byte[numChars]; + } else { + bah.bytes = new byte[numChars * 2]; + } + while (i < this.continuationBreaks.length && !spansBreak) { + spansBreak = (pos <= this.continuationBreaks[i] && pos + bah.bytes.length > this.continuationBreaks[i]); + if (!spansBreak) + i++; + } + if (!spansBreak) { + System.arraycopy(source, pos, bah.bytes, 0, bah.bytes.length); + return bah.bytes.length; + } + int breakpos = this.continuationBreaks[i]; + System.arraycopy(source, pos, bah.bytes, 0, breakpos - pos); + int bytesRead = breakpos - pos; + if (ascii.value) { + charsRead = bytesRead; + } else { + charsRead = bytesRead / 2; + } + bytesRead += getContinuedString(source, bah, bytesRead, i, ascii, numChars - charsRead); + return bytesRead; + } + + private int getContinuedString(byte[] source, ByteArrayHolder bah, int destPos, int contBreakIndex, BooleanHolder ascii, int charsLeft) { + int breakpos = this.continuationBreaks[contBreakIndex]; + int bytesRead = 0; + while (charsLeft > 0) { + Assert.verify((contBreakIndex < this.continuationBreaks.length), "continuation break index"); + if (ascii.value && source[breakpos] == 0) { + int length = (contBreakIndex == this.continuationBreaks.length - 1) ? charsLeft : Math.min(charsLeft, this.continuationBreaks[contBreakIndex + 1] - breakpos - 1); + System.arraycopy(source, breakpos + 1, bah.bytes, destPos, length); + destPos += length; + bytesRead += length + 1; + charsLeft -= length; + ascii.value = true; + } else if (!ascii.value && source[breakpos] != 0) { + int length = (contBreakIndex == this.continuationBreaks.length - 1) ? (charsLeft * 2) : Math.min(charsLeft * 2, this.continuationBreaks[contBreakIndex + 1] - breakpos - 1); + System.arraycopy(source, breakpos + 1, bah.bytes, destPos, length); + destPos += length; + bytesRead += length + 1; + charsLeft -= length / 2; + ascii.value = false; + } else if (!ascii.value && source[breakpos] == 0) { + int chars = (contBreakIndex == this.continuationBreaks.length - 1) ? charsLeft : Math.min(charsLeft, this.continuationBreaks[contBreakIndex + 1] - breakpos - 1); + for (int j = 0; j < chars; j++) { + bah.bytes[destPos] = source[breakpos + j + 1]; + destPos += 2; + } + bytesRead += chars + 1; + charsLeft -= chars; + ascii.value = false; + } else { + byte[] oldBytes = bah.bytes; + bah.bytes = new byte[destPos * 2 + charsLeft * 2]; + for (int j = 0; j < destPos; j++) + bah.bytes[j * 2] = oldBytes[j]; + destPos *= 2; + int length = (contBreakIndex == this.continuationBreaks.length - 1) ? (charsLeft * 2) : Math.min(charsLeft * 2, this.continuationBreaks[contBreakIndex + 1] - breakpos - 1); + System.arraycopy(source, breakpos + 1, bah.bytes, destPos, length); + destPos += length; + bytesRead += length + 1; + charsLeft -= length / 2; + ascii.value = false; + } + contBreakIndex++; + if (contBreakIndex < this.continuationBreaks.length) + breakpos = this.continuationBreaks[contBreakIndex]; + } + return bytesRead; + } + + public String getString(int index) { + Assert.verify((index < this.uniqueStrings)); + return this.strings[index]; + } +} diff --git a/hrmsEjb/jxl/read/biff/SaveRecalcRecord.java b/hrmsEjb/jxl/read/biff/SaveRecalcRecord.java new file mode 100644 index 0000000..306cd30 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SaveRecalcRecord.java @@ -0,0 +1,22 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class SaveRecalcRecord extends RecordData { + private static Logger logger = Logger.getLogger(SaveRecalcRecord.class); + + private boolean recalculateOnSave; + + public SaveRecalcRecord(Record t) { + super(t); + byte[] data = t.getData(); + int mode = IntegerHelper.getInt(data[0], data[1]); + this.recalculateOnSave = (mode == 1); + } + + public boolean getRecalculateOnSave() { + return this.recalculateOnSave; + } +} diff --git a/hrmsEjb/jxl/read/biff/SetupRecord.java b/hrmsEjb/jxl/read/biff/SetupRecord.java new file mode 100644 index 0000000..222ab91 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SetupRecord.java @@ -0,0 +1,93 @@ +package jxl.read.biff; + +import jxl.biff.DoubleHelper; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.Type; + +public class SetupRecord extends RecordData { + private byte[] data; + + private boolean portraitOrientation; + + private double headerMargin; + + private double footerMargin; + + private int paperSize; + + private int scaleFactor; + + private int pageStart; + + private int fitWidth; + + private int fitHeight; + + private int horizontalPrintResolution; + + private int verticalPrintResolution; + + private int copies; + + SetupRecord(Record t) { + super(Type.SETUP); + this.data = t.getData(); + this.paperSize = IntegerHelper.getInt(this.data[0], this.data[1]); + this.scaleFactor = IntegerHelper.getInt(this.data[2], this.data[3]); + this.pageStart = IntegerHelper.getInt(this.data[4], this.data[5]); + this.fitWidth = IntegerHelper.getInt(this.data[6], this.data[7]); + this.fitHeight = IntegerHelper.getInt(this.data[8], this.data[9]); + this.horizontalPrintResolution = IntegerHelper.getInt(this.data[12], this.data[13]); + this.verticalPrintResolution = IntegerHelper.getInt(this.data[14], this.data[15]); + this.copies = IntegerHelper.getInt(this.data[32], this.data[33]); + this.headerMargin = DoubleHelper.getIEEEDouble(this.data, 16); + this.footerMargin = DoubleHelper.getIEEEDouble(this.data, 24); + int grbit = IntegerHelper.getInt(this.data[10], this.data[11]); + this.portraitOrientation = ((grbit & 0x2) != 0); + } + + public boolean isPortrait() { + return this.portraitOrientation; + } + + public double getHeaderMargin() { + return this.headerMargin; + } + + public double getFooterMargin() { + return this.footerMargin; + } + + public int getPaperSize() { + return this.paperSize; + } + + public int getScaleFactor() { + return this.scaleFactor; + } + + public int getPageStart() { + return this.pageStart; + } + + public int getFitWidth() { + return this.fitWidth; + } + + public int getFitHeight() { + return this.fitHeight; + } + + public int getHorizontalPrintResolution() { + return this.horizontalPrintResolution; + } + + public int getVerticalPrintResolution() { + return this.verticalPrintResolution; + } + + public int getCopies() { + return this.copies; + } +} diff --git a/hrmsEjb/jxl/read/biff/SharedDateFormulaRecord.java b/hrmsEjb/jxl/read/biff/SharedDateFormulaRecord.java new file mode 100644 index 0000000..0a10274 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SharedDateFormulaRecord.java @@ -0,0 +1,67 @@ +package jxl.read.biff; + +import java.text.DateFormat; +import java.util.Date; +import jxl.CellType; +import jxl.DateCell; +import jxl.DateFormulaCell; +import jxl.biff.DoubleHelper; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +public class SharedDateFormulaRecord extends BaseSharedFormulaRecord implements DateCell, FormulaData, DateFormulaCell { + private DateRecord dateRecord; + + private double value; + + public SharedDateFormulaRecord(SharedNumberFormulaRecord nfr, FormattingRecords fr, boolean nf, SheetImpl si, int pos) { + super(nfr.getRecord(), fr, nfr.getExternalSheet(), nfr.getNameTable(), si, pos); + this.dateRecord = new DateRecord(nfr, nfr.getXFIndex(), fr, nf, si); + this.value = nfr.getValue(); + } + + public double getValue() { + return this.value; + } + + public String getContents() { + return this.dateRecord.getContents(); + } + + public CellType getType() { + return CellType.DATE_FORMULA; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + FormulaParser fp = new FormulaParser(getTokens(), this, getExternalSheet(), getNameTable(), getSheet().getWorkbook().getSettings()); + fp.parse(); + byte[] rpnTokens = fp.getBytes(); + byte[] data = new byte[rpnTokens.length + 22]; + IntegerHelper.getTwoBytes(getRow(), data, 0); + IntegerHelper.getTwoBytes(getColumn(), data, 2); + IntegerHelper.getTwoBytes(getXFIndex(), data, 4); + DoubleHelper.getIEEEBytes(this.value, data, 6); + System.arraycopy(rpnTokens, 0, data, 22, rpnTokens.length); + IntegerHelper.getTwoBytes(rpnTokens.length, data, 20); + byte[] d = new byte[data.length - 6]; + System.arraycopy(data, 6, d, 0, data.length - 6); + return d; + } + + public Date getDate() { + return this.dateRecord.getDate(); + } + + public boolean isTime() { + return this.dateRecord.isTime(); + } + + public DateFormat getDateFormat() { + return this.dateRecord.getDateFormat(); + } +} diff --git a/hrmsEjb/jxl/read/biff/SharedErrorFormulaRecord.java b/hrmsEjb/jxl/read/biff/SharedErrorFormulaRecord.java new file mode 100644 index 0000000..004b346 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SharedErrorFormulaRecord.java @@ -0,0 +1,64 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.CellType; +import jxl.ErrorCell; +import jxl.ErrorFormulaCell; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaErrorCode; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +public class SharedErrorFormulaRecord extends BaseSharedFormulaRecord implements ErrorCell, FormulaData, ErrorFormulaCell { + private static Logger logger = Logger.getLogger(SharedErrorFormulaRecord.class); + + private int errorCode; + + private byte[] data; + + private FormulaErrorCode error; + + public SharedErrorFormulaRecord(Record t, File excelFile, int ec, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) { + super(t, fr, es, nt, si, excelFile.getPos()); + this.errorCode = ec; + } + + public int getErrorCode() { + return this.errorCode; + } + + public String getContents() { + if (this.error == null) + this.error = FormulaErrorCode.getErrorCode(this.errorCode); + return (this.error != FormulaErrorCode.UNKNOWN) ? this.error.getDescription() : ("ERROR " + this.errorCode); + } + + public CellType getType() { + return CellType.FORMULA_ERROR; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + FormulaParser fp = new FormulaParser(getTokens(), this, getExternalSheet(), getNameTable(), getSheet().getWorkbook().getSettings()); + fp.parse(); + byte[] rpnTokens = fp.getBytes(); + byte[] data = new byte[rpnTokens.length + 22]; + IntegerHelper.getTwoBytes(getRow(), data, 0); + IntegerHelper.getTwoBytes(getColumn(), data, 2); + IntegerHelper.getTwoBytes(getXFIndex(), data, 4); + data[6] = 2; + data[8] = (byte)this.errorCode; + data[12] = -1; + data[13] = -1; + System.arraycopy(rpnTokens, 0, data, 22, rpnTokens.length); + IntegerHelper.getTwoBytes(rpnTokens.length, data, 20); + byte[] d = new byte[data.length - 6]; + System.arraycopy(data, 6, d, 0, data.length - 6); + return d; + } +} diff --git a/hrmsEjb/jxl/read/biff/SharedFormulaRecord.java b/hrmsEjb/jxl/read/biff/SharedFormulaRecord.java new file mode 100644 index 0000000..7be632e --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SharedFormulaRecord.java @@ -0,0 +1,94 @@ +package jxl.read.biff; + +import common.Logger; +import java.text.NumberFormat; +import java.util.ArrayList; +import jxl.Cell; +import jxl.CellType; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; + +class SharedFormulaRecord { + private static Logger logger = Logger.getLogger(SharedFormulaRecord.class); + + private int firstRow; + + private int lastRow; + + private int firstCol; + + private int lastCol; + + private BaseSharedFormulaRecord templateFormula; + + private ArrayList formulas; + + private byte[] tokens; + + private ExternalSheet externalSheet; + + private SheetImpl sheet; + + public SharedFormulaRecord(Record t, BaseSharedFormulaRecord fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) { + this.sheet = si; + byte[] data = t.getData(); + this.firstRow = IntegerHelper.getInt(data[0], data[1]); + this.lastRow = IntegerHelper.getInt(data[2], data[3]); + this.firstCol = data[4] & 0xFF; + this.lastCol = data[5] & 0xFF; + this.formulas = new ArrayList(); + this.templateFormula = fr; + this.tokens = new byte[data.length - 10]; + System.arraycopy(data, 10, this.tokens, 0, this.tokens.length); + } + + public boolean add(BaseSharedFormulaRecord fr) { + boolean added = false; + int r = fr.getRow(); + if (r >= this.firstRow && r <= this.lastRow) { + int c = fr.getColumn(); + if (c >= this.firstCol && c <= this.lastCol) { + this.formulas.add(fr); + added = true; + } + } + return added; + } + + Cell[] getFormulas(FormattingRecords fr, boolean nf) { + Cell[] sfs = new Cell[this.formulas.size() + 1]; + if (this.templateFormula == null) { + logger.warn("Shared formula template formula is null"); + return new Cell[0]; + } + this.templateFormula.setTokens(this.tokens); + NumberFormat templateNumberFormat = null; + if (this.templateFormula.getType() == CellType.NUMBER_FORMULA) { + SharedNumberFormulaRecord snfr = (SharedNumberFormulaRecord)this.templateFormula; + templateNumberFormat = snfr.getNumberFormat(); + if (fr.isDate(this.templateFormula.getXFIndex())) { + this.templateFormula = new SharedDateFormulaRecord(snfr, fr, nf, this.sheet, snfr.getFilePos()); + this.templateFormula.setTokens(snfr.getTokens()); + } + } + sfs[0] = this.templateFormula; + BaseSharedFormulaRecord f = null; + for (int i = 0; i < this.formulas.size(); i++) { + f = this.formulas.get(i); + if (f.getType() == CellType.NUMBER_FORMULA) { + SharedNumberFormulaRecord snfr = (SharedNumberFormulaRecord)f; + if (fr.isDate(f.getXFIndex())) + f = new SharedDateFormulaRecord(snfr, fr, nf, this.sheet, snfr.getFilePos()); + } + f.setTokens(this.tokens); + sfs[i + 1] = f; + } + return sfs; + } + + BaseSharedFormulaRecord getTemplateFormula() { + return this.templateFormula; + } +} diff --git a/hrmsEjb/jxl/read/biff/SharedNumberFormulaRecord.java b/hrmsEjb/jxl/read/biff/SharedNumberFormulaRecord.java new file mode 100644 index 0000000..0983f42 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SharedNumberFormulaRecord.java @@ -0,0 +1,73 @@ +package jxl.read.biff; + +import common.Logger; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import jxl.CellType; +import jxl.NumberCell; +import jxl.NumberFormulaCell; +import jxl.biff.DoubleHelper; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +public class SharedNumberFormulaRecord extends BaseSharedFormulaRecord implements NumberCell, FormulaData, NumberFormulaCell { + private static Logger logger = Logger.getLogger(SharedNumberFormulaRecord.class); + + private double value; + + private NumberFormat format; + + private FormattingRecords formattingRecords; + + private static DecimalFormat defaultFormat = new DecimalFormat("#.###"); + + public SharedNumberFormulaRecord(Record t, File excelFile, double v, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) { + super(t, fr, es, nt, si, excelFile.getPos()); + this.value = v; + this.format = defaultFormat; + } + + final void setNumberFormat(NumberFormat f) { + if (f != null) + this.format = f; + } + + public double getValue() { + return this.value; + } + + public String getContents() { + return !Double.isNaN(this.value) ? this.format.format(this.value) : ""; + } + + public CellType getType() { + return CellType.NUMBER_FORMULA; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + FormulaParser fp = new FormulaParser(getTokens(), this, getExternalSheet(), getNameTable(), getSheet().getWorkbook().getSettings()); + fp.parse(); + byte[] rpnTokens = fp.getBytes(); + byte[] data = new byte[rpnTokens.length + 22]; + IntegerHelper.getTwoBytes(getRow(), data, 0); + IntegerHelper.getTwoBytes(getColumn(), data, 2); + IntegerHelper.getTwoBytes(getXFIndex(), data, 4); + DoubleHelper.getIEEEBytes(this.value, data, 6); + System.arraycopy(rpnTokens, 0, data, 22, rpnTokens.length); + IntegerHelper.getTwoBytes(rpnTokens.length, data, 20); + byte[] d = new byte[data.length - 6]; + System.arraycopy(data, 6, d, 0, data.length - 6); + return d; + } + + public NumberFormat getNumberFormat() { + return this.format; + } +} diff --git a/hrmsEjb/jxl/read/biff/SharedStringFormulaRecord.java b/hrmsEjb/jxl/read/biff/SharedStringFormulaRecord.java new file mode 100644 index 0000000..965e812 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SharedStringFormulaRecord.java @@ -0,0 +1,88 @@ +package jxl.read.biff; + +import common.Assert; +import common.Logger; +import jxl.CellType; +import jxl.LabelCell; +import jxl.StringFormulaCell; +import jxl.WorkbookSettings; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +public class SharedStringFormulaRecord extends BaseSharedFormulaRecord implements LabelCell, FormulaData, StringFormulaCell { + private static Logger logger = Logger.getLogger(SharedStringFormulaRecord.class); + + private String value; + + public SharedStringFormulaRecord(Record t, File excelFile, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si, WorkbookSettings ws) { + super(t, fr, es, nt, si, excelFile.getPos()); + int pos = excelFile.getPos(); + int filepos = excelFile.getPos(); + Record nextRecord = excelFile.next(); + int count = 0; + while (nextRecord.getType() != Type.STRING && count < 4) { + nextRecord = excelFile.next(); + count++; + } + Assert.verify((count < 4), " @ " + pos); + byte[] stringData = nextRecord.getData(); + int chars = IntegerHelper.getInt(stringData[0], stringData[1]); + boolean unicode = false; + int startpos = 3; + if (stringData.length == chars + 2) { + startpos = 2; + unicode = false; + } else if (stringData[2] == 1) { + startpos = 3; + unicode = true; + } else { + startpos = 3; + unicode = false; + } + if (!unicode) { + this.value = StringHelper.getString(stringData, chars, startpos, ws); + } else { + this.value = StringHelper.getUnicodeString(stringData, chars, startpos); + } + excelFile.setPos(filepos); + } + + public String getString() { + return this.value; + } + + public String getContents() { + return this.value; + } + + public CellType getType() { + return CellType.STRING_FORMULA; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + FormulaParser fp = new FormulaParser(getTokens(), this, getExternalSheet(), getNameTable(), getSheet().getWorkbook().getSettings()); + fp.parse(); + byte[] rpnTokens = fp.getBytes(); + byte[] data = new byte[rpnTokens.length + 22]; + IntegerHelper.getTwoBytes(getRow(), data, 0); + IntegerHelper.getTwoBytes(getColumn(), data, 2); + IntegerHelper.getTwoBytes(getXFIndex(), data, 4); + data[6] = 0; + data[12] = -1; + data[13] = -1; + System.arraycopy(rpnTokens, 0, data, 22, rpnTokens.length); + IntegerHelper.getTwoBytes(rpnTokens.length, data, 20); + byte[] d = new byte[data.length - 6]; + System.arraycopy(data, 6, d, 0, data.length - 6); + return d; + } +} diff --git a/hrmsEjb/jxl/read/biff/SheetImpl.java b/hrmsEjb/jxl/read/biff/SheetImpl.java new file mode 100644 index 0000000..f413f50 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SheetImpl.java @@ -0,0 +1,460 @@ +package jxl.read.biff; + +import java.util.ArrayList; +import java.util.Iterator; +import jxl.Cell; +import jxl.CellType; +import jxl.CellView; +import jxl.Hyperlink; +import jxl.Image; +import jxl.LabelCell; +import jxl.Range; +import jxl.Sheet; +import jxl.SheetSettings; +import jxl.WorkbookSettings; +import jxl.biff.CellReferenceHelper; +import jxl.biff.EmptyCell; +import jxl.biff.FormattingRecords; +import jxl.biff.Type; +import jxl.biff.WorkspaceInformationRecord; +import jxl.biff.drawing.Chart; +import jxl.biff.drawing.DrawingData; +import jxl.biff.drawing.DrawingGroupObject; +import jxl.format.CellFormat; + +public class SheetImpl implements Sheet { + private File excelFile; + + private SSTRecord sharedStrings; + + private BOFRecord sheetBof; + + private BOFRecord workbookBof; + + private FormattingRecords formattingRecords; + + private String name; + + private int numRows; + + private int numCols; + + private Cell[][] cells; + + private int startPosition; + + private ColumnInfoRecord[] columnInfos; + + private RowRecord[] rowRecords; + + private ArrayList rowProperties; + + private ArrayList columnInfosArray; + + private ArrayList sharedFormulas; + + private ArrayList hyperlinks; + + private ArrayList charts; + + private ArrayList drawings; + + private ArrayList images; + + private DataValidation dataValidation; + + private Range[] mergedCells; + + private boolean columnInfosInitialized; + + private boolean rowRecordsInitialized; + + private boolean nineteenFour; + + private WorkspaceInformationRecord workspaceOptions; + + private boolean hidden; + + private PLSRecord plsRecord; + + private ButtonPropertySetRecord buttonPropertySet; + + private SheetSettings settings; + + private int[] rowBreaks; + + private WorkbookParser workbook; + + private WorkbookSettings workbookSettings; + + SheetImpl(File f, SSTRecord sst, FormattingRecords fr, BOFRecord sb, BOFRecord wb, boolean nf, WorkbookParser wp) throws BiffException { + this.excelFile = f; + this.sharedStrings = sst; + this.formattingRecords = fr; + this.sheetBof = sb; + this.workbookBof = wb; + this.columnInfosArray = new ArrayList(); + this.sharedFormulas = new ArrayList(); + this.hyperlinks = new ArrayList(); + this.rowProperties = new ArrayList(10); + this.columnInfosInitialized = false; + this.rowRecordsInitialized = false; + this.nineteenFour = nf; + this.workbook = wp; + this.workbookSettings = this.workbook.getSettings(); + this.startPosition = f.getPos(); + if (this.sheetBof.isChart()) + this.startPosition -= this.sheetBof.getLength() + 4; + Record r = null; + int bofs = 1; + while (bofs >= 1) { + r = f.next(); + if (r.getCode() == Type.EOF.value) + bofs--; + if (r.getCode() == Type.BOF.value) + bofs++; + } + } + + public Cell getCell(String loc) { + return getCell(CellReferenceHelper.getColumn(loc), CellReferenceHelper.getRow(loc)); + } + + public Cell getCell(int column, int row) { + EmptyCell emptyCell; + if (this.cells == null) + readSheet(); + Cell c = this.cells[row][column]; + if (c == null) { + emptyCell = new EmptyCell(column, row); + this.cells[row][column] = (Cell)emptyCell; + } + return (Cell)emptyCell; + } + + public Cell findCell(String contents) { + Cell cell = null; + boolean found = false; + for (int i = 0; i < getRows() && !found; i++) { + Cell[] row = getRow(i); + for (int j = 0; j < row.length && !found; j++) { + if (row[j].getContents().equals(contents)) { + cell = row[j]; + found = true; + } + } + } + return cell; + } + + public LabelCell findLabelCell(String contents) { + LabelCell cell = null; + boolean found = false; + for (int i = 0; i < getRows() && !found; i++) { + Cell[] row = getRow(i); + for (int j = 0; j < row.length && !found; j++) { + if ((row[j].getType() == CellType.LABEL || row[j].getType() == CellType.STRING_FORMULA) && row[j].getContents().equals(contents)) { + cell = (LabelCell)row[j]; + found = true; + } + } + } + return cell; + } + + public int getRows() { + if (this.cells == null) + readSheet(); + return this.numRows; + } + + public int getColumns() { + if (this.cells == null) + readSheet(); + return this.numCols; + } + + public Cell[] getRow(int row) { + if (this.cells == null) + readSheet(); + boolean found = false; + int col = this.numCols - 1; + while (col >= 0 && !found) { + if (this.cells[row][col] != null) { + found = true; + continue; + } + col--; + } + Cell[] c = new Cell[col + 1]; + for (int i = 0; i <= col; i++) + c[i] = getCell(i, row); + return c; + } + + public Cell[] getColumn(int col) { + if (this.cells == null) + readSheet(); + boolean found = false; + int row = this.numRows - 1; + while (row >= 0 && !found) { + if (this.cells[row][col] != null) { + found = true; + continue; + } + row--; + } + Cell[] c = new Cell[row + 1]; + for (int i = 0; i <= row; i++) + c[i] = getCell(col, i); + return c; + } + + public String getName() { + return this.name; + } + + final void setName(String s) { + this.name = s; + } + + public boolean isHidden() { + return this.hidden; + } + + public ColumnInfoRecord getColumnInfo(int col) { + if (!this.columnInfosInitialized) { + Iterator i = this.columnInfosArray.iterator(); + ColumnInfoRecord cir = null; + while (i.hasNext()) { + cir = i.next(); + int startcol = Math.max(0, cir.getStartColumn()); + int endcol = Math.min(this.columnInfos.length - 1, cir.getEndColumn()); + for (int c = startcol; c <= endcol; c++) + this.columnInfos[c] = cir; + if (endcol < startcol) + this.columnInfos[startcol] = cir; + } + this.columnInfosInitialized = true; + } + return (col < this.columnInfos.length) ? this.columnInfos[col] : null; + } + + public ColumnInfoRecord[] getColumnInfos() { + ColumnInfoRecord[] infos = new ColumnInfoRecord[this.columnInfosArray.size()]; + for (int i = 0; i < this.columnInfosArray.size(); i++) + infos[i] = this.columnInfosArray.get(i); + return infos; + } + + final void setHidden(boolean h) { + this.hidden = h; + } + + final void clear() { + this.cells = (Cell[][])null; + this.mergedCells = null; + this.columnInfosArray.clear(); + this.sharedFormulas.clear(); + this.hyperlinks.clear(); + this.columnInfosInitialized = false; + if (!this.workbookSettings.getGCDisabled()) + System.gc(); + } + + final void readSheet() { + if (!this.sheetBof.isWorksheet()) { + this.numRows = 0; + this.numCols = 0; + this.cells = new Cell[0][0]; + } + SheetReader reader = new SheetReader(this.excelFile, this.sharedStrings, this.formattingRecords, this.sheetBof, this.workbookBof, this.nineteenFour, this.workbook, this.startPosition, this); + reader.read(); + this.numRows = reader.getNumRows(); + this.numCols = reader.getNumCols(); + this.cells = reader.getCells(); + this.rowProperties = reader.getRowProperties(); + this.columnInfosArray = reader.getColumnInfosArray(); + this.hyperlinks = reader.getHyperlinks(); + this.charts = reader.getCharts(); + this.drawings = reader.getDrawings(); + this.dataValidation = reader.getDataValidation(); + this.mergedCells = reader.getMergedCells(); + this.settings = reader.getSettings(); + this.settings.setHidden(this.hidden); + this.rowBreaks = reader.getRowBreaks(); + this.workspaceOptions = reader.getWorkspaceOptions(); + this.plsRecord = reader.getPLS(); + this.buttonPropertySet = reader.getButtonPropertySet(); + reader = null; + if (!this.workbookSettings.getGCDisabled()) + System.gc(); + if (this.columnInfosArray.size() > 0) { + ColumnInfoRecord cir = this.columnInfosArray.get(this.columnInfosArray.size() - 1); + this.columnInfos = new ColumnInfoRecord[cir.getEndColumn() + 1]; + } else { + this.columnInfos = new ColumnInfoRecord[0]; + } + } + + public Hyperlink[] getHyperlinks() { + Hyperlink[] hl = new Hyperlink[this.hyperlinks.size()]; + for (int i = 0; i < this.hyperlinks.size(); i++) + hl[i] = this.hyperlinks.get(i); + return hl; + } + + public Range[] getMergedCells() { + if (this.mergedCells == null) + return new Range[0]; + return this.mergedCells; + } + + public RowRecord[] getRowProperties() { + RowRecord[] rp = new RowRecord[this.rowProperties.size()]; + for (int i = 0; i < rp.length; i++) + rp[i] = this.rowProperties.get(i); + return rp; + } + + public DataValidation getDataValidation() { + return this.dataValidation; + } + + RowRecord getRowInfo(int r) { + if (!this.rowRecordsInitialized) { + this.rowRecords = new RowRecord[getRows()]; + Iterator i = this.rowProperties.iterator(); + int rownum = 0; + RowRecord rr = null; + while (i.hasNext()) { + rr = i.next(); + rownum = rr.getRowNumber(); + if (rownum < this.rowRecords.length) + this.rowRecords[rownum] = rr; + } + this.rowRecordsInitialized = true; + } + return this.rowRecords[r]; + } + + public final int[] getRowPageBreaks() { + return this.rowBreaks; + } + + public final Chart[] getCharts() { + Chart[] ch = new Chart[this.charts.size()]; + for (int i = 0; i < ch.length; i++) + ch[i] = this.charts.get(i); + return ch; + } + + public final DrawingGroupObject[] getDrawings() { + DrawingGroupObject[] dr = new DrawingGroupObject[this.drawings.size()]; + dr = (DrawingGroupObject[])this.drawings.toArray((Object[])dr); + return dr; + } + + public boolean isProtected() { + return this.settings.isProtected(); + } + + public WorkspaceInformationRecord getWorkspaceOptions() { + return this.workspaceOptions; + } + + public SheetSettings getSettings() { + return this.settings; + } + + WorkbookParser getWorkbook() { + return this.workbook; + } + + public CellFormat getColumnFormat(int col) { + CellView cv = getColumnView(col); + return cv.getFormat(); + } + + public int getColumnWidth(int col) { + return getColumnView(col).getSize() / 256; + } + + public CellView getColumnView(int col) { + ColumnInfoRecord cir = getColumnInfo(col); + CellView cv = new CellView(); + if (cir != null) { + cv.setDimension(cir.getWidth() / 256); + cv.setSize(cir.getWidth()); + cv.setHidden(cir.getHidden()); + cv.setFormat((CellFormat)this.formattingRecords.getXFRecord(cir.getXFIndex())); + } else { + cv.setDimension(this.settings.getDefaultColumnWidth() / 256); + cv.setSize(this.settings.getDefaultColumnWidth()); + } + return cv; + } + + public int getRowHeight(int row) { + return getRowView(row).getDimension(); + } + + public CellView getRowView(int row) { + RowRecord rr = getRowInfo(row); + CellView cv = new CellView(); + if (rr != null) { + cv.setDimension(rr.getRowHeight()); + cv.setSize(rr.getRowHeight()); + cv.setHidden(rr.isCollapsed()); + } else { + cv.setDimension(this.settings.getDefaultRowHeight()); + cv.setSize(this.settings.getDefaultRowHeight()); + } + return cv; + } + + public BOFRecord getSheetBof() { + return this.sheetBof; + } + + public BOFRecord getWorkbookBof() { + return this.workbookBof; + } + + public PLSRecord getPLS() { + return this.plsRecord; + } + + public ButtonPropertySetRecord getButtonPropertySet() { + return this.buttonPropertySet; + } + + public int getNumberOfImages() { + if (this.images == null) + initializeImages(); + return this.images.size(); + } + + public Image getDrawing(int i) { + if (this.images == null) + initializeImages(); + return this.images.get(i); + } + + private void initializeImages() { + if (this.images != null) + return; + this.images = new ArrayList(); + DrawingGroupObject[] dgos = getDrawings(); + for (int i = 0; i < dgos.length; i++) { + if (dgos[i] instanceof jxl.biff.drawing.Drawing) + this.images.add(dgos[i]); + } + } + + public DrawingData getDrawingData() { + SheetReader reader = new SheetReader(this.excelFile, this.sharedStrings, this.formattingRecords, this.sheetBof, this.workbookBof, this.nineteenFour, this.workbook, this.startPosition, this); + reader.read(); + return reader.getDrawingData(); + } +} diff --git a/hrmsEjb/jxl/read/biff/SheetReader.java b/hrmsEjb/jxl/read/biff/SheetReader.java new file mode 100644 index 0000000..d56568b --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SheetReader.java @@ -0,0 +1,753 @@ +package jxl.read.biff; + +import common.Assert; +import common.Logger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import jxl.Cell; +import jxl.CellFeatures; +import jxl.CellReferenceHelper; +import jxl.CellType; +import jxl.DateCell; +import jxl.HeaderFooter; +import jxl.Range; +import jxl.SheetSettings; +import jxl.WorkbookSettings; +import jxl.biff.ContinueRecord; +import jxl.biff.FormattingRecords; +import jxl.biff.Type; +import jxl.biff.WorkspaceInformationRecord; +import jxl.biff.drawing.Button; +import jxl.biff.drawing.Chart; +import jxl.biff.drawing.Comment; +import jxl.biff.drawing.Drawing; +import jxl.biff.drawing.DrawingData; +import jxl.biff.drawing.MsoDrawingRecord; +import jxl.biff.drawing.NoteRecord; +import jxl.biff.drawing.ObjRecord; +import jxl.biff.drawing.TextObjectRecord; +import jxl.biff.formula.FormulaException; +import jxl.format.PageOrientation; +import jxl.format.PaperSize; + +final class SheetReader { + private static Logger logger = Logger.getLogger(SheetReader.class); + + private File excelFile; + + private SSTRecord sharedStrings; + + private BOFRecord sheetBof; + + private BOFRecord workbookBof; + + private FormattingRecords formattingRecords; + + private int numRows; + + private int numCols; + + private Cell[][] cells; + + private int startPosition; + + private ArrayList rowProperties; + + private ArrayList columnInfosArray; + + private ArrayList sharedFormulas; + + private ArrayList hyperlinks; + + private Range[] mergedCells; + + private DataValidation dataValidation; + + private ArrayList charts; + + private ArrayList drawings; + + private DrawingData drawingData; + + private boolean nineteenFour; + + private PLSRecord plsRecord; + + private ButtonPropertySetRecord buttonPropertySet; + + private WorkspaceInformationRecord workspaceOptions; + + private int[] rowBreaks; + + private SheetSettings settings; + + private WorkbookSettings workbookSettings; + + private WorkbookParser workbook; + + private SheetImpl sheet; + + SheetReader(File f, SSTRecord sst, FormattingRecords fr, BOFRecord sb, BOFRecord wb, boolean nf, WorkbookParser wp, int sp, SheetImpl sh) { + this.excelFile = f; + this.sharedStrings = sst; + this.formattingRecords = fr; + this.sheetBof = sb; + this.workbookBof = wb; + this.columnInfosArray = new ArrayList(); + this.sharedFormulas = new ArrayList(); + this.hyperlinks = new ArrayList(); + this.rowProperties = new ArrayList(10); + this.charts = new ArrayList(); + this.drawings = new ArrayList(); + this.nineteenFour = nf; + this.workbook = wp; + this.startPosition = sp; + this.sheet = sh; + this.settings = new SheetSettings(); + this.workbookSettings = this.workbook.getSettings(); + } + + private void addCell(Cell cell) { + if (cell.getRow() < this.numRows && cell.getColumn() < this.numCols) { + if (this.cells[cell.getRow()][cell.getColumn()] != null) { + StringBuffer sb = new StringBuffer(); + CellReferenceHelper.getCellReference(cell.getColumn(), cell.getRow(), sb); + logger.warn("Cell " + sb.toString() + " already contains data"); + } + this.cells[cell.getRow()][cell.getColumn()] = cell; + } else { + logger.warn("Cell " + CellReferenceHelper.getCellReference(cell.getColumn(), cell.getRow()) + " exceeds defined cell boundaries in Dimension record " + "(" + this.numCols + "x" + this.numRows + ")"); + } + } + + final void read() { + Record r = null; + BaseSharedFormulaRecord sharedFormula = null; + boolean sharedFormulaAdded = false; + boolean cont = true; + this.excelFile.setPos(this.startPosition); + MsoDrawingRecord msoRecord = null; + ObjRecord objRecord = null; + boolean firstMsoRecord = true; + Window2Record window2Record = null; + PrintGridLinesRecord printGridLinesRecord = null; + PrintHeadersRecord printHeadersRecord = null; + HashMap comments = new HashMap(); + while (cont) { + r = this.excelFile.next(); + Type type = r.getType(); + if (type == Type.UNKNOWN && r.getCode() == 0) { + logger.warn("Biff code zero found"); + if (r.getLength() == 10) { + logger.warn("Biff code zero found - trying a dimension record."); + r.setType(Type.DIMENSION); + } else { + logger.warn("Biff code zero found - Ignoring."); + } + } + if (type == Type.DIMENSION) { + DimensionRecord dr = null; + if (this.workbookBof.isBiff8()) { + dr = new DimensionRecord(r); + } else { + dr = new DimensionRecord(r, DimensionRecord.biff7); + } + this.numRows = dr.getNumberOfRows(); + this.numCols = dr.getNumberOfColumns(); + this.cells = new Cell[this.numRows][this.numCols]; + continue; + } + if (type == Type.LABELSST) { + LabelSSTRecord label = new LabelSSTRecord(r, this.sharedStrings, this.formattingRecords, this.sheet); + addCell(label); + continue; + } + if (type == Type.RK || type == Type.RK2) { + RKRecord rkr = new RKRecord(r, this.formattingRecords, this.sheet); + if (this.formattingRecords.isDate(rkr.getXFIndex())) { + DateCell dc = new DateRecord(rkr, rkr.getXFIndex(), this.formattingRecords, this.nineteenFour, this.sheet); + addCell((Cell)dc); + continue; + } + addCell(rkr); + continue; + } + if (type == Type.HLINK) { + HyperlinkRecord hr = new HyperlinkRecord(r, this.sheet, this.workbookSettings); + this.hyperlinks.add(hr); + continue; + } + if (type == Type.MERGEDCELLS) { + MergedCellsRecord mc = new MergedCellsRecord(r, this.sheet); + if (this.mergedCells == null) { + this.mergedCells = mc.getRanges(); + continue; + } + Range[] newMergedCells = new Range[this.mergedCells.length + (mc.getRanges()).length]; + System.arraycopy(this.mergedCells, 0, newMergedCells, 0, this.mergedCells.length); + System.arraycopy(mc.getRanges(), 0, newMergedCells, this.mergedCells.length, (mc.getRanges()).length); + this.mergedCells = newMergedCells; + continue; + } + if (type == Type.MULRK) { + MulRKRecord mulrk = new MulRKRecord(r); + int num = mulrk.getNumberOfColumns(); + int ixf = 0; + for (int j = 0; j < num; j++) { + ixf = mulrk.getXFIndex(j); + NumberValue nv = new NumberValue(mulrk.getRow(), mulrk.getFirstColumn() + j, RKHelper.getDouble(mulrk.getRKNumber(j)), ixf, this.formattingRecords, this.sheet); + if (this.formattingRecords.isDate(ixf)) { + DateCell dc = new DateRecord(nv, ixf, this.formattingRecords, this.nineteenFour, this.sheet); + addCell((Cell)dc); + } else { + nv.setNumberFormat(this.formattingRecords.getNumberFormat(ixf)); + addCell((Cell)nv); + } + } + continue; + } + if (type == Type.NUMBER) { + NumberRecord nr = new NumberRecord(r, this.formattingRecords, this.sheet); + if (this.formattingRecords.isDate(nr.getXFIndex())) { + DateCell dc = new DateRecord(nr, nr.getXFIndex(), this.formattingRecords, this.nineteenFour, this.sheet); + addCell((Cell)dc); + continue; + } + addCell(nr); + continue; + } + if (type == Type.BOOLERR) { + BooleanRecord br = new BooleanRecord(r, this.formattingRecords, this.sheet); + if (br.isError()) { + ErrorRecord er = new ErrorRecord(br.getRecord(), this.formattingRecords, this.sheet); + addCell(er); + continue; + } + addCell(br); + continue; + } + if (type == Type.PRINTGRIDLINES) { + printGridLinesRecord = new PrintGridLinesRecord(r); + this.settings.setPrintGridLines(printGridLinesRecord.getPrintGridLines()); + continue; + } + if (type == Type.PRINTHEADERS) { + printHeadersRecord = new PrintHeadersRecord(r); + this.settings.setPrintHeaders(printHeadersRecord.getPrintHeaders()); + continue; + } + if (type == Type.WINDOW2) { + window2Record = new Window2Record(r); + this.settings.setShowGridLines(window2Record.getShowGridLines()); + this.settings.setDisplayZeroValues(window2Record.getDisplayZeroValues()); + this.settings.setSelected(true); + continue; + } + if (type == Type.PANE) { + PaneRecord pr = new PaneRecord(r); + if (window2Record != null && window2Record.getFrozen()) { + this.settings.setVerticalFreeze(pr.getRowsVisible()); + this.settings.setHorizontalFreeze(pr.getColumnsVisible()); + } + continue; + } + if (type == Type.CONTINUE) + continue; + if (type == Type.NOTE) { + if (!this.workbookSettings.getDrawingsDisabled()) { + NoteRecord nr = new NoteRecord(r); + Comment comment = (Comment)comments.remove(new Integer(nr.getObjectId())); + if (comment == null) { + logger.warn(" cannot find comment for note id " + nr.getObjectId() + "...ignoring"); + continue; + } + comment.setNote(nr); + this.drawings.add(comment); + addCellComment(comment.getColumn(), comment.getRow(), comment.getText(), comment.getWidth(), comment.getHeight()); + } + continue; + } + if (type == Type.ARRAY) + continue; + if (type == Type.PROTECT) { + ProtectRecord pr = new ProtectRecord(r); + this.settings.setProtected(pr.isProtected()); + continue; + } + if (type == Type.SHAREDFORMULA) { + if (sharedFormula == null) { + logger.warn("Shared template formula is null - trying most recent formula template"); + SharedFormulaRecord lastSharedFormula = this.sharedFormulas.get(this.sharedFormulas.size() - 1); + if (lastSharedFormula != null) + sharedFormula = lastSharedFormula.getTemplateFormula(); + } + SharedFormulaRecord sfr = new SharedFormulaRecord(r, sharedFormula, this.workbook, this.workbook, this.sheet); + this.sharedFormulas.add(sfr); + sharedFormula = null; + continue; + } + if (type == Type.FORMULA || type == Type.FORMULA2) { + DateFormulaRecord dateFormulaRecord; + FormulaRecord fr = new FormulaRecord(r, this.excelFile, this.formattingRecords, this.workbook, this.workbook, this.sheet, this.workbookSettings); + if (fr.isShared()) { + BaseSharedFormulaRecord prevSharedFormula = sharedFormula; + sharedFormula = (BaseSharedFormulaRecord)fr.getFormula(); + sharedFormulaAdded = addToSharedFormulas(sharedFormula); + if (sharedFormulaAdded) + sharedFormula = prevSharedFormula; + if (!sharedFormulaAdded && prevSharedFormula != null) + addCell(revertSharedFormula(prevSharedFormula)); + continue; + } + Cell cell = fr.getFormula(); + try { + if (fr.getFormula().getType() == CellType.NUMBER_FORMULA) { + NumberFormulaRecord nfr = (NumberFormulaRecord)fr.getFormula(); + if (this.formattingRecords.isDate(nfr.getXFIndex())) + dateFormulaRecord = new DateFormulaRecord(nfr, this.formattingRecords, this.workbook, this.workbook, this.nineteenFour, this.sheet); + } + addCell((Cell)dateFormulaRecord); + } catch (FormulaException e) { + logger.warn(CellReferenceHelper.getCellReference(dateFormulaRecord.getColumn(), dateFormulaRecord.getRow()) + " " + e.getMessage()); + } + continue; + } + if (type == Type.LABEL) { + LabelRecord lr = null; + if (this.workbookBof.isBiff8()) { + lr = new LabelRecord(r, this.formattingRecords, this.sheet, this.workbookSettings); + } else { + lr = new LabelRecord(r, this.formattingRecords, this.sheet, this.workbookSettings, LabelRecord.biff7); + } + addCell(lr); + continue; + } + if (type == Type.RSTRING) { + RStringRecord lr = null; + Assert.verify(!this.workbookBof.isBiff8()); + lr = new RStringRecord(r, this.formattingRecords, this.sheet, this.workbookSettings, RStringRecord.biff7); + addCell(lr); + continue; + } + if (type == Type.NAME) + continue; + if (type == Type.PASSWORD) { + PasswordRecord pr = new PasswordRecord(r); + this.settings.setPasswordHash(pr.getPasswordHash()); + continue; + } + if (type == Type.ROW) { + RowRecord rr = new RowRecord(r); + if (!rr.isDefaultHeight() || !rr.matchesDefaultFontHeight() || rr.isCollapsed() || rr.hasDefaultFormat()) + this.rowProperties.add(rr); + continue; + } + if (type == Type.BLANK) { + if (!this.workbookSettings.getIgnoreBlanks()) { + BlankCell bc = new BlankCell(r, this.formattingRecords, this.sheet); + addCell(bc); + } + continue; + } + if (type == Type.MULBLANK) { + if (!this.workbookSettings.getIgnoreBlanks()) { + MulBlankRecord mulblank = new MulBlankRecord(r); + int num = mulblank.getNumberOfColumns(); + for (int j = 0; j < num; j++) { + int ixf = mulblank.getXFIndex(j); + MulBlankCell mbc = new MulBlankCell(mulblank.getRow(), mulblank.getFirstColumn() + j, ixf, this.formattingRecords, this.sheet); + addCell(mbc); + } + } + continue; + } + if (type == Type.SCL) { + SCLRecord scl = new SCLRecord(r); + this.settings.setZoomFactor(scl.getZoomFactor()); + continue; + } + if (type == Type.COLINFO) { + ColumnInfoRecord cir = new ColumnInfoRecord(r); + this.columnInfosArray.add(cir); + continue; + } + if (type == Type.HEADER) { + HeaderRecord hr = null; + if (this.workbookBof.isBiff8()) { + hr = new HeaderRecord(r, this.workbookSettings); + } else { + hr = new HeaderRecord(r, this.workbookSettings, HeaderRecord.biff7); + } + HeaderFooter header = new HeaderFooter(hr.getHeader()); + this.settings.setHeader(header); + continue; + } + if (type == Type.FOOTER) { + FooterRecord fr = null; + if (this.workbookBof.isBiff8()) { + fr = new FooterRecord(r, this.workbookSettings); + } else { + fr = new FooterRecord(r, this.workbookSettings, FooterRecord.biff7); + } + HeaderFooter footer = new HeaderFooter(fr.getFooter()); + this.settings.setFooter(footer); + continue; + } + if (type == Type.SETUP) { + SetupRecord sr = new SetupRecord(r); + if (sr.isPortrait()) { + this.settings.setOrientation(PageOrientation.PORTRAIT); + } else { + this.settings.setOrientation(PageOrientation.LANDSCAPE); + } + this.settings.setPaperSize(PaperSize.getPaperSize(sr.getPaperSize())); + this.settings.setHeaderMargin(sr.getHeaderMargin()); + this.settings.setFooterMargin(sr.getFooterMargin()); + this.settings.setScaleFactor(sr.getScaleFactor()); + this.settings.setPageStart(sr.getPageStart()); + this.settings.setFitWidth(sr.getFitWidth()); + this.settings.setFitHeight(sr.getFitHeight()); + this.settings.setHorizontalPrintResolution(sr.getHorizontalPrintResolution()); + this.settings.setVerticalPrintResolution(sr.getVerticalPrintResolution()); + this.settings.setCopies(sr.getCopies()); + if (this.workspaceOptions != null) + this.settings.setFitToPages(this.workspaceOptions.getFitToPages()); + continue; + } + if (type == Type.WSBOOL) { + this.workspaceOptions = new WorkspaceInformationRecord(r); + continue; + } + if (type == Type.DEFCOLWIDTH) { + DefaultColumnWidthRecord dcwr = new DefaultColumnWidthRecord(r); + this.settings.setDefaultColumnWidth(dcwr.getWidth()); + continue; + } + if (type == Type.DEFAULTROWHEIGHT) { + DefaultRowHeightRecord drhr = new DefaultRowHeightRecord(r); + if (drhr.getHeight() != 0) + this.settings.setDefaultRowHeight(drhr.getHeight()); + continue; + } + if (type == Type.LEFTMARGIN) { + MarginRecord m = new LeftMarginRecord(r); + this.settings.setLeftMargin(m.getMargin()); + continue; + } + if (type == Type.RIGHTMARGIN) { + MarginRecord m = new RightMarginRecord(r); + this.settings.setRightMargin(m.getMargin()); + continue; + } + if (type == Type.TOPMARGIN) { + MarginRecord m = new TopMarginRecord(r); + this.settings.setTopMargin(m.getMargin()); + continue; + } + if (type == Type.BOTTOMMARGIN) { + MarginRecord m = new BottomMarginRecord(r); + this.settings.setBottomMargin(m.getMargin()); + continue; + } + if (type == Type.HORIZONTALPAGEBREAKS) { + HorizontalPageBreaksRecord dr = null; + if (this.workbookBof.isBiff8()) { + dr = new HorizontalPageBreaksRecord(r); + } else { + dr = new HorizontalPageBreaksRecord(r, HorizontalPageBreaksRecord.biff7); + } + this.rowBreaks = dr.getRowBreaks(); + continue; + } + if (type == Type.PLS) { + this.plsRecord = new PLSRecord(r); + continue; + } + if (type == Type.DVAL) + continue; + if (type == Type.HCENTER) { + CentreRecord hr = new CentreRecord(r); + this.settings.setHorizontalCentre(hr.isCentre()); + continue; + } + if (type == Type.VCENTER) { + CentreRecord vc = new CentreRecord(r); + this.settings.setVerticalCentre(vc.isCentre()); + continue; + } + if (type == Type.DV) + continue; + if (type == Type.OBJ) { + objRecord = new ObjRecord(r); + if (!this.workbookSettings.getDrawingsDisabled()) + handleObjectRecord(objRecord, msoRecord, comments); + if (objRecord.getType() != ObjRecord.CHART) { + objRecord = null; + msoRecord = null; + } + continue; + } + if (type == Type.MSODRAWING) { + if (!this.workbookSettings.getDrawingsDisabled()) { + if (msoRecord != null) + this.drawingData.addRawData(msoRecord.getData()); + msoRecord = new MsoDrawingRecord(r); + if (firstMsoRecord) { + msoRecord.setFirst(); + firstMsoRecord = false; + } + } + continue; + } + if (type == Type.BUTTONPROPERTYSET) { + this.buttonPropertySet = new ButtonPropertySetRecord(r); + continue; + } + if (type == Type.CALCMODE) { + CalcModeRecord cmr = new CalcModeRecord(r); + this.settings.setAutomaticFormulaCalculation(cmr.isAutomatic()); + continue; + } + if (type == Type.SAVERECALC) { + SaveRecalcRecord cmr = new SaveRecalcRecord(r); + this.settings.setRecalculateFormulasBeforeSave(cmr.getRecalculateOnSave()); + continue; + } + if (type == Type.BOF) { + BOFRecord br = new BOFRecord(r); + Assert.verify(!br.isWorksheet()); + int startpos = this.excelFile.getPos() - r.getLength() - 4; + Record r2 = this.excelFile.next(); + while (r2.getCode() != Type.EOF.value) + r2 = this.excelFile.next(); + if (br.isChart()) { + if (!this.workbook.getWorkbookBof().isBiff8()) { + logger.warn("only biff8 charts are supported"); + } else { + if (this.drawingData == null) + this.drawingData = new DrawingData(); + if (!this.workbookSettings.getDrawingsDisabled()) { + Chart chart = new Chart(msoRecord, objRecord, this.drawingData, startpos, this.excelFile.getPos(), this.excelFile, this.workbookSettings); + this.charts.add(chart); + if (this.workbook.getDrawingGroup() != null) + this.workbook.getDrawingGroup().add(chart); + } + } + msoRecord = null; + objRecord = null; + } + if (this.sheetBof.isChart()) + cont = false; + continue; + } + if (type == Type.EOF) + cont = false; + } + this.excelFile.restorePos(); + Iterator i = this.sharedFormulas.iterator(); + while (i.hasNext()) { + SharedFormulaRecord sfr = i.next(); + Cell[] sfnr = sfr.getFormulas(this.formattingRecords, this.nineteenFour); + for (int sf = 0; sf < sfnr.length; sf++) + addCell(sfnr[sf]); + } + if (!sharedFormulaAdded && sharedFormula != null) + addCell(revertSharedFormula(sharedFormula)); + if (msoRecord != null && this.workbook.getDrawingGroup() != null) + this.workbook.getDrawingGroup().setDrawingsOmitted(msoRecord, objRecord); + if (!comments.isEmpty()) + logger.warn("Not all comments have a corresponding Note record"); + } + + private boolean addToSharedFormulas(BaseSharedFormulaRecord fr) { + boolean added = false; + SharedFormulaRecord sfr = null; + for (int i = 0, size = this.sharedFormulas.size(); i < size && !added; i++) { + sfr = this.sharedFormulas.get(i); + added = sfr.add(fr); + } + return added; + } + + private Cell revertSharedFormula(BaseSharedFormulaRecord f) { + int pos = this.excelFile.getPos(); + this.excelFile.setPos(f.getFilePos()); + FormulaRecord fr = new FormulaRecord(f.getRecord(), this.excelFile, this.formattingRecords, this.workbook, this.workbook, FormulaRecord.ignoreSharedFormula, this.sheet, this.workbookSettings); + try { + DateFormulaRecord dateFormulaRecord; + Cell cell = fr.getFormula(); + if (fr.getFormula().getType() == CellType.NUMBER_FORMULA) { + NumberFormulaRecord nfr = (NumberFormulaRecord)fr.getFormula(); + if (this.formattingRecords.isDate(fr.getXFIndex())) + dateFormulaRecord = new DateFormulaRecord(nfr, this.formattingRecords, this.workbook, this.workbook, this.nineteenFour, this.sheet); + } + this.excelFile.setPos(pos); + return (Cell)dateFormulaRecord; + } catch (FormulaException e) { + logger.warn(CellReferenceHelper.getCellReference(fr.getColumn(), fr.getRow()) + " " + e.getMessage()); + return null; + } + } + + final int getNumRows() { + return this.numRows; + } + + final int getNumCols() { + return this.numCols; + } + + final Cell[][] getCells() { + return this.cells; + } + + final ArrayList getRowProperties() { + return this.rowProperties; + } + + final ArrayList getColumnInfosArray() { + return this.columnInfosArray; + } + + final ArrayList getHyperlinks() { + return this.hyperlinks; + } + + final ArrayList getCharts() { + return this.charts; + } + + final ArrayList getDrawings() { + return this.drawings; + } + + final DataValidation getDataValidation() { + return this.dataValidation; + } + + final Range[] getMergedCells() { + return this.mergedCells; + } + + final SheetSettings getSettings() { + return this.settings; + } + + final int[] getRowBreaks() { + return this.rowBreaks; + } + + final WorkspaceInformationRecord getWorkspaceOptions() { + return this.workspaceOptions; + } + + final PLSRecord getPLS() { + return this.plsRecord; + } + + final ButtonPropertySetRecord getButtonPropertySet() { + return this.buttonPropertySet; + } + + private void addCellComment(int col, int row, String text, double width, double height) { + Cell c = this.cells[row][col]; + if (c == null) { + logger.warn("Cell at " + CellReferenceHelper.getCellReference(col, row) + " not present - adding a blank"); + MulBlankCell mbc = new MulBlankCell(row, col, 0, this.formattingRecords, this.sheet); + CellFeatures cf = new CellFeatures(); + cf.setReadComment(text, width, height); + mbc.setCellFeatures(cf); + addCell(mbc); + return; + } + if (c instanceof CellFeaturesAccessor) { + CellFeaturesAccessor cv = (CellFeaturesAccessor)c; + CellFeatures cf = cv.getCellFeatures(); + if (cf == null) { + cf = new CellFeatures(); + cv.setCellFeatures(cf); + } + cf.setReadComment(text, width, height); + } else { + logger.warn("Not able to add comment to cell type " + c.getClass().getName() + " at " + CellReferenceHelper.getCellReference(col, row)); + } + } + + private void handleObjectRecord(ObjRecord objRecord, MsoDrawingRecord msoRecord, HashMap comments) { + if (msoRecord == null) { + logger.warn("Object record is not associated with a drawing record - ignoring"); + return; + } + if (objRecord.getType() == ObjRecord.PICTURE) { + if (this.drawingData == null) + this.drawingData = new DrawingData(); + Drawing drawing = new Drawing(msoRecord, objRecord, this.drawingData, this.workbook.getDrawingGroup()); + this.drawings.add(drawing); + return; + } + if (objRecord.getType() == ObjRecord.EXCELNOTE) { + if (this.drawingData == null) + this.drawingData = new DrawingData(); + Comment comment = new Comment(msoRecord, objRecord, this.drawingData, this.workbook.getDrawingGroup(), this.workbookSettings); + Record r2 = this.excelFile.next(); + if (r2.getType() == Type.MSODRAWING) { + MsoDrawingRecord mso = new MsoDrawingRecord(r2); + comment.addMso(mso); + r2 = this.excelFile.next(); + } + Assert.verify((r2.getType() == Type.TXO)); + TextObjectRecord txo = new TextObjectRecord(r2); + comment.setTextObject(txo); + r2 = this.excelFile.next(); + Assert.verify((r2.getType() == Type.CONTINUE)); + ContinueRecord text = new ContinueRecord(r2); + comment.setText(text); + r2 = this.excelFile.next(); + if (r2.getType() == Type.CONTINUE) { + ContinueRecord formatting = new ContinueRecord(r2); + comment.setFormatting(formatting); + } + comments.put(new Integer(comment.getObjectId()), comment); + return; + } + if (objRecord.getType() == ObjRecord.BUTTON) { + if (this.drawingData == null) + this.drawingData = new DrawingData(); + Button button = new Button(msoRecord, objRecord, this.drawingData, this.workbook.getDrawingGroup(), this.workbookSettings); + Record r2 = this.excelFile.next(); + if (r2.getType() == Type.MSODRAWING) { + MsoDrawingRecord mso = new MsoDrawingRecord(r2); + button.addMso(mso); + r2 = this.excelFile.next(); + } + Assert.verify((r2.getType() == Type.TXO)); + TextObjectRecord txo = new TextObjectRecord(r2); + button.setTextObject(txo); + r2 = this.excelFile.next(); + Assert.verify((r2.getType() == Type.CONTINUE)); + ContinueRecord text = new ContinueRecord(r2); + button.setText(text); + r2 = this.excelFile.next(); + if (r2.getType() == Type.CONTINUE) { + ContinueRecord formatting = new ContinueRecord(r2); + button.setFormatting(formatting); + } + this.drawings.add(button); + return; + } + if (objRecord.getType() != ObjRecord.CHART) { + logger.warn(objRecord.getType() + " on sheet \"" + this.sheet.getName() + "\" not supported - omitting"); + if (this.drawingData == null) + this.drawingData = new DrawingData(); + this.drawingData.addData(msoRecord.getData()); + if (this.workbook.getDrawingGroup() != null) + this.workbook.getDrawingGroup().setDrawingsOmitted(msoRecord, objRecord); + return; + } + } + + DrawingData getDrawingData() { + return this.drawingData; + } +} diff --git a/hrmsEjb/jxl/read/biff/StringFormulaRecord.java b/hrmsEjb/jxl/read/biff/StringFormulaRecord.java new file mode 100644 index 0000000..2cdaf59 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/StringFormulaRecord.java @@ -0,0 +1,116 @@ +package jxl.read.biff; + +import common.Assert; +import common.Logger; +import jxl.CellType; +import jxl.LabelCell; +import jxl.StringFormulaCell; +import jxl.WorkbookSettings; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class StringFormulaRecord extends CellValue implements LabelCell, FormulaData, StringFormulaCell { + private static Logger logger = Logger.getLogger(StringFormulaRecord.class); + + private String value; + + private ExternalSheet externalSheet; + + private WorkbookMethods nameTable; + + private String formulaString; + + private byte[] data; + + public StringFormulaRecord(Record t, File excelFile, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si, WorkbookSettings ws) { + super(t, fr, si); + this.externalSheet = es; + this.nameTable = nt; + this.data = getRecord().getData(); + int pos = excelFile.getPos(); + Record nextRecord = excelFile.next(); + int count = 0; + while (nextRecord.getType() != Type.STRING && count < 4) { + nextRecord = excelFile.next(); + count++; + } + Assert.verify((count < 4), " @ " + pos); + readString(nextRecord.getData(), ws); + } + + public StringFormulaRecord(Record t, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) { + super(t, fr, si); + this.externalSheet = es; + this.nameTable = nt; + this.data = getRecord().getData(); + this.value = ""; + } + + private void readString(byte[] d, WorkbookSettings ws) { + int pos = 0; + int chars = IntegerHelper.getInt(d[0], d[1]); + if (chars == 0) { + this.value = ""; + return; + } + pos += 2; + int optionFlags = d[pos]; + pos++; + if ((optionFlags & 0xF) != optionFlags) { + pos = 0; + chars = IntegerHelper.getInt(d[0], (byte)0); + optionFlags = d[1]; + pos = 2; + } + boolean extendedString = ((optionFlags & 0x4) != 0); + boolean richString = ((optionFlags & 0x8) != 0); + if (richString) + pos += 2; + if (extendedString) + pos += 4; + boolean asciiEncoding = ((optionFlags & 0x1) == 0); + if (asciiEncoding) { + this.value = StringHelper.getString(d, chars, pos, ws); + } else { + this.value = StringHelper.getUnicodeString(d, chars, pos); + } + } + + public String getContents() { + return this.value; + } + + public String getString() { + return this.value; + } + + public CellType getType() { + return CellType.STRING_FORMULA; + } + + public byte[] getFormulaData() throws FormulaException { + if (!getSheet().getWorkbook().getWorkbookBof().isBiff8()) + throw new FormulaException(FormulaException.biff8Supported); + byte[] d = new byte[this.data.length - 6]; + System.arraycopy(this.data, 6, d, 0, this.data.length - 6); + return d; + } + + public String getFormula() throws FormulaException { + if (this.formulaString == null) { + byte[] tokens = new byte[this.data.length - 22]; + System.arraycopy(this.data, 22, tokens, 0, tokens.length); + FormulaParser fp = new FormulaParser(tokens, this, this.externalSheet, this.nameTable, getSheet().getWorkbook().getSettings()); + fp.parse(); + this.formulaString = fp.getFormula(); + } + return this.formulaString; + } +} diff --git a/hrmsEjb/jxl/read/biff/SupbookRecord.java b/hrmsEjb/jxl/read/biff/SupbookRecord.java new file mode 100644 index 0000000..405529d --- /dev/null +++ b/hrmsEjb/jxl/read/biff/SupbookRecord.java @@ -0,0 +1,161 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; +import jxl.biff.StringHelper; + +public class SupbookRecord extends RecordData { + private static Logger logger = Logger.getLogger(SupbookRecord.class); + + private Type type; + + private int numSheets; + + private String fileName; + + private String[] sheetNames; + + private static class Type { + private Type() {} + } + + public static final Type INTERNAL = new Type(); + + public static final Type EXTERNAL = new Type(); + + public static final Type ADDIN = new Type(); + + public static final Type LINK = new Type(); + + public static final Type UNKNOWN = new Type(); + + SupbookRecord(Record t, WorkbookSettings ws) { + super(t); + byte[] data = getRecord().getData(); + if (data.length == 4) { + if (data[2] == 1 && data[3] == 4) { + this.type = INTERNAL; + } else if (data[2] == 1 && data[3] == 58) { + this.type = ADDIN; + } else { + this.type = UNKNOWN; + } + } else if (data[0] == 0 && data[1] == 0) { + this.type = LINK; + } else { + this.type = EXTERNAL; + } + if (this.type == INTERNAL) + this.numSheets = IntegerHelper.getInt(data[0], data[1]); + if (this.type == EXTERNAL) + readExternal(data, ws); + } + + private void readExternal(byte[] data, WorkbookSettings ws) { + this.numSheets = IntegerHelper.getInt(data[0], data[1]); + int ln = IntegerHelper.getInt(data[2], data[3]) - 1; + int pos = 0; + if (data[4] == 0) { + int encoding = data[5]; + pos = 6; + if (encoding == 0) { + this.fileName = StringHelper.getString(data, ln, pos, ws); + pos += ln; + } else { + this.fileName = getEncodedFilename(data, ln, pos); + pos += ln; + } + } else { + int encoding = IntegerHelper.getInt(data[5], data[6]); + pos = 7; + if (encoding == 0) { + this.fileName = StringHelper.getUnicodeString(data, ln, pos); + pos += ln * 2; + } else { + this.fileName = getUnicodeEncodedFilename(data, ln, pos); + pos += ln * 2; + } + } + this.sheetNames = new String[this.numSheets]; + for (int i = 0; i < this.sheetNames.length; i++) { + ln = IntegerHelper.getInt(data[pos], data[pos + 1]); + if (data[pos + 2] == 0) { + this.sheetNames[i] = StringHelper.getString(data, ln, pos + 3, ws); + pos += ln + 3; + } else if (data[pos + 2] == 1) { + this.sheetNames[i] = StringHelper.getUnicodeString(data, ln, pos + 3); + pos += ln * 2 + 3; + } + } + } + + public Type getType() { + return this.type; + } + + public int getNumberOfSheets() { + return this.numSheets; + } + + public String getFileName() { + return this.fileName; + } + + public String getSheetName(int i) { + return this.sheetNames[i]; + } + + public byte[] getData() { + return getRecord().getData(); + } + + private String getEncodedFilename(byte[] data, int ln, int pos) { + StringBuffer buf = new StringBuffer(); + int endpos = pos + ln; + while (pos < endpos) { + char c = (char)data[pos]; + if (c == '\001') { + pos++; + c = (char)data[pos]; + buf.append(c); + buf.append(":\\\\"); + } else if (c == '\002') { + buf.append('\\'); + } else if (c == '\003') { + buf.append('\\'); + } else if (c == '\004') { + buf.append("..\\"); + } else { + buf.append(c); + } + pos++; + } + return buf.toString(); + } + + private String getUnicodeEncodedFilename(byte[] data, int ln, int pos) { + StringBuffer buf = new StringBuffer(); + int endpos = pos + ln * 2; + while (pos < endpos) { + char c = (char)IntegerHelper.getInt(data[pos], data[pos + 1]); + if (c == '\001') { + pos += 2; + c = (char)IntegerHelper.getInt(data[pos], data[pos + 1]); + buf.append(c); + buf.append(":\\\\"); + } else if (c == '\002') { + buf.append('\\'); + } else if (c == '\003') { + buf.append('\\'); + } else if (c == '\004') { + buf.append("..\\"); + } else { + buf.append(c); + } + pos += 2; + } + return buf.toString(); + } +} diff --git a/hrmsEjb/jxl/read/biff/TopMarginRecord.java b/hrmsEjb/jxl/read/biff/TopMarginRecord.java new file mode 100644 index 0000000..dc0b08e --- /dev/null +++ b/hrmsEjb/jxl/read/biff/TopMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.read.biff; + +import jxl.biff.Type; + +class TopMarginRecord extends MarginRecord { + TopMarginRecord(Record r) { + super(Type.TOPMARGIN, r); + } +} diff --git a/hrmsEjb/jxl/read/biff/Window2Record.java b/hrmsEjb/jxl/read/biff/Window2Record.java new file mode 100644 index 0000000..2393d61 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/Window2Record.java @@ -0,0 +1,50 @@ +package jxl.read.biff; + +import common.Logger; +import jxl.biff.IntegerHelper; +import jxl.biff.RecordData; + +class Window2Record extends RecordData { + private static Logger logger = Logger.getLogger(Window2Record.class); + + private boolean selected; + + private boolean showGridLines; + + private boolean displayZeroValues; + + private boolean frozenPanes; + + private boolean frozenNotSplit; + + public Window2Record(Record t) { + super(t); + byte[] data = t.getData(); + int options = IntegerHelper.getInt(data[0], data[1]); + this.selected = ((options & 0x200) != 0); + this.showGridLines = ((options & 0x2) != 0); + this.frozenPanes = ((options & 0x8) != 0); + this.displayZeroValues = ((options & 0x10) != 0); + this.frozenNotSplit = ((options & 0x100) != 0); + } + + public boolean isSelected() { + return this.selected; + } + + public boolean getShowGridLines() { + return this.showGridLines; + } + + public boolean getDisplayZeroValues() { + return this.displayZeroValues; + } + + public boolean getFrozen() { + return this.frozenPanes; + } + + public boolean getFrozenNotSplit() { + return this.frozenNotSplit; + } +} diff --git a/hrmsEjb/jxl/read/biff/WorkbookParser.java b/hrmsEjb/jxl/read/biff/WorkbookParser.java new file mode 100644 index 0000000..59ba062 --- /dev/null +++ b/hrmsEjb/jxl/read/biff/WorkbookParser.java @@ -0,0 +1,520 @@ +package jxl.read.biff; + +import common.Assert; +import common.Logger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import jxl.Cell; +import jxl.Range; +import jxl.Sheet; +import jxl.Workbook; +import jxl.WorkbookSettings; +import jxl.biff.CellReferenceHelper; +import jxl.biff.DisplayFormat; +import jxl.biff.FontRecord; +import jxl.biff.Fonts; +import jxl.biff.FormatRecord; +import jxl.biff.FormattingRecords; +import jxl.biff.NumFormatRecordsException; +import jxl.biff.PaletteRecord; +import jxl.biff.RangeImpl; +import jxl.biff.Type; +import jxl.biff.WorkbookMethods; +import jxl.biff.XFRecord; +import jxl.biff.drawing.DrawingGroup; +import jxl.biff.drawing.MsoDrawingGroupRecord; +import jxl.biff.drawing.Origin; +import jxl.biff.formula.ExternalSheet; + +public class WorkbookParser extends Workbook implements ExternalSheet, WorkbookMethods { + private static Logger logger = Logger.getLogger(WorkbookParser.class); + + private File excelFile; + + private int bofs; + + private boolean nineteenFour; + + private SSTRecord sharedStrings; + + private ArrayList boundsheets; + + private FormattingRecords formattingRecords; + + private Fonts fonts; + + private ArrayList sheets; + + private SheetImpl lastSheet; + + private int lastSheetIndex; + + private HashMap namedRecords; + + private ArrayList nameTable; + + private ExternalSheetRecord externSheet; + + private ArrayList supbooks; + + private BOFRecord workbookBof; + + private MsoDrawingGroupRecord msoDrawingGroup; + + private ButtonPropertySetRecord buttonPropertySet; + + private boolean wbProtected; + + private boolean containsMacros; + + private WorkbookSettings settings; + + private DrawingGroup drawingGroup; + + private CountryRecord countryRecord; + + public WorkbookParser(File f, WorkbookSettings s) { + this.excelFile = f; + this.boundsheets = new ArrayList(10); + this.fonts = new Fonts(); + this.formattingRecords = new FormattingRecords(this.fonts); + this.sheets = new ArrayList(10); + this.supbooks = new ArrayList(10); + this.namedRecords = new HashMap(); + this.lastSheetIndex = -1; + this.wbProtected = false; + this.containsMacros = false; + this.settings = s; + } + + public Sheet[] getSheets() { + Sheet[] sheetArray = new Sheet[getNumberOfSheets()]; + return (Sheet[])this.sheets.toArray((Object[])sheetArray); + } + + public Sheet getReadSheet(int index) { + return getSheet(index); + } + + public Sheet getSheet(int index) { + if (this.lastSheet != null && this.lastSheetIndex == index) + return this.lastSheet; + if (this.lastSheet != null) { + this.lastSheet.clear(); + if (!this.settings.getGCDisabled()) + System.gc(); + } + this.lastSheet = this.sheets.get(index); + this.lastSheetIndex = index; + this.lastSheet.readSheet(); + return this.lastSheet; + } + + public Sheet getSheet(String name) { + int pos = 0; + boolean found = false; + Iterator i = this.boundsheets.iterator(); + BoundsheetRecord br = null; + while (i.hasNext() && !found) { + br = i.next(); + if (br.getName().equals(name)) { + found = true; + continue; + } + pos++; + } + return found ? getSheet(pos) : null; + } + + public String[] getSheetNames() { + String[] names = new String[this.boundsheets.size()]; + BoundsheetRecord br = null; + for (int i = 0; i < names.length; i++) { + br = this.boundsheets.get(i); + names[i] = br.getName(); + } + return names; + } + + public int getExternalSheetIndex(int index) { + if (this.workbookBof.isBiff7()) + return index; + Assert.verify((this.externSheet != null)); + int firstTab = this.externSheet.getFirstTabIndex(index); + return firstTab; + } + + public int getLastExternalSheetIndex(int index) { + if (this.workbookBof.isBiff7()) + return index; + Assert.verify((this.externSheet != null)); + int lastTab = this.externSheet.getLastTabIndex(index); + return lastTab; + } + + public String getExternalSheetName(int index) { + if (this.workbookBof.isBiff7()) { + BoundsheetRecord br = this.boundsheets.get(index); + return br.getName(); + } + int supbookIndex = this.externSheet.getSupbookIndex(index); + SupbookRecord sr = this.supbooks.get(supbookIndex); + int firstTab = this.externSheet.getFirstTabIndex(index); + if (sr.getType() == SupbookRecord.INTERNAL) { + BoundsheetRecord br = this.boundsheets.get(firstTab); + return br.getName(); + } + if (sr.getType() == SupbookRecord.EXTERNAL) { + StringBuffer sb = new StringBuffer(); + sb.append('['); + sb.append(sr.getFileName()); + sb.append(']'); + sb.append(sr.getSheetName(firstTab)); + return sb.toString(); + } + return "[UNKNOWN]"; + } + + public String getLastExternalSheetName(int index) { + if (this.workbookBof.isBiff7()) { + BoundsheetRecord br = this.boundsheets.get(index); + return br.getName(); + } + int supbookIndex = this.externSheet.getSupbookIndex(index); + SupbookRecord sr = this.supbooks.get(supbookIndex); + int lastTab = this.externSheet.getLastTabIndex(index); + if (sr.getType() == SupbookRecord.INTERNAL) { + BoundsheetRecord br = this.boundsheets.get(lastTab); + return br.getName(); + } + if (sr.getType() == SupbookRecord.EXTERNAL) { + StringBuffer sb = new StringBuffer(); + sb.append('['); + sb.append(sr.getFileName()); + sb.append(']'); + sb.append(sr.getSheetName(lastTab)); + return sb.toString(); + } + return "[UNKNOWN]"; + } + + public int getNumberOfSheets() { + return this.sheets.size(); + } + + public void close() { + if (this.lastSheet != null) + this.lastSheet.clear(); + this.excelFile.clear(); + if (!this.settings.getGCDisabled()) + System.gc(); + } + + final void addSheet(Sheet s) { + this.sheets.add(s); + } + + protected void parse() throws BiffException, PasswordException { + Record r = null; + BOFRecord bof = new BOFRecord(this.excelFile.next()); + this.workbookBof = bof; + this.bofs++; + if (!bof.isBiff8() && !bof.isBiff7()) + throw new BiffException(BiffException.unrecognizedBiffVersion); + if (!bof.isWorkbookGlobals()) + throw new BiffException(BiffException.expectedGlobals); + ArrayList continueRecords = new ArrayList(); + this.nameTable = new ArrayList(); + while (this.bofs == 1) { + r = this.excelFile.next(); + if (r.getType() == Type.SST) { + continueRecords.clear(); + Record nextrec = this.excelFile.peek(); + while (nextrec.getType() == Type.CONTINUE) { + continueRecords.add(this.excelFile.next()); + nextrec = this.excelFile.peek(); + } + Record[] records = new Record[continueRecords.size()]; + records = continueRecords.toArray(records); + this.sharedStrings = new SSTRecord(r, records, this.settings); + continue; + } + if (r.getType() == Type.FILEPASS) + throw new PasswordException(); + if (r.getType() == Type.NAME) { + NameRecord nr = null; + if (bof.isBiff8()) { + nr = new NameRecord(r, this.settings, this.namedRecords.size()); + } else { + nr = new NameRecord(r, this.settings, this.namedRecords.size(), NameRecord.biff7); + } + this.namedRecords.put(nr.getName(), nr); + this.nameTable.add(nr); + continue; + } + if (r.getType() == Type.FONT) { + FontRecord fr = null; + if (bof.isBiff8()) { + fr = new FontRecord(r, this.settings); + } else { + fr = new FontRecord(r, this.settings, FontRecord.biff7); + } + this.fonts.addFont(fr); + continue; + } + if (r.getType() == Type.PALETTE) { + PaletteRecord palette = new PaletteRecord(r); + this.formattingRecords.setPalette(palette); + continue; + } + if (r.getType() == Type.NINETEENFOUR) { + NineteenFourRecord nr = new NineteenFourRecord(r); + this.nineteenFour = nr.is1904(); + continue; + } + if (r.getType() == Type.FORMAT) { + FormatRecord fr = null; + if (bof.isBiff8()) { + fr = new FormatRecord(r, this.settings, FormatRecord.biff8); + } else { + fr = new FormatRecord(r, this.settings, FormatRecord.biff7); + } + try { + this.formattingRecords.addFormat((DisplayFormat)fr); + } catch (NumFormatRecordsException e) { + e.printStackTrace(); + Assert.verify(false, e.getMessage()); + } + continue; + } + if (r.getType() == Type.XF) { + XFRecord xfr = null; + if (bof.isBiff8()) { + xfr = new XFRecord(r, this.settings, XFRecord.biff8); + } else { + xfr = new XFRecord(r, this.settings, XFRecord.biff7); + } + try { + this.formattingRecords.addStyle(xfr); + } catch (NumFormatRecordsException e) { + Assert.verify(false, e.getMessage()); + } + continue; + } + if (r.getType() == Type.BOUNDSHEET) { + BoundsheetRecord br = null; + if (bof.isBiff8()) { + br = new BoundsheetRecord(r); + } else { + br = new BoundsheetRecord(r, BoundsheetRecord.biff7); + } + if (br.isSheet()) { + this.boundsheets.add(br); + continue; + } + if (br.isChart() && !this.settings.getDrawingsDisabled()) + this.boundsheets.add(br); + continue; + } + if (r.getType() == Type.EXTERNSHEET) { + if (bof.isBiff8()) { + this.externSheet = new ExternalSheetRecord(r, this.settings); + continue; + } + this.externSheet = new ExternalSheetRecord(r, this.settings, ExternalSheetRecord.biff7); + continue; + } + if (r.getType() == Type.CODEPAGE) { + CodepageRecord cr = new CodepageRecord(r); + this.settings.setCharacterSet(cr.getCharacterSet()); + continue; + } + if (r.getType() == Type.SUPBOOK) { + Record nextrec = this.excelFile.peek(); + while (nextrec.getType() == Type.CONTINUE) { + r.addContinueRecord(this.excelFile.next()); + nextrec = this.excelFile.peek(); + } + SupbookRecord sr = new SupbookRecord(r, this.settings); + this.supbooks.add(sr); + continue; + } + if (r.getType() == Type.PROTECT) { + ProtectRecord pr = new ProtectRecord(r); + this.wbProtected = pr.isProtected(); + continue; + } + if (r.getType() == Type.OBJPROJ) { + this.containsMacros = true; + continue; + } + if (r.getType() == Type.COUNTRY) { + this.countryRecord = new CountryRecord(r); + continue; + } + if (r.getType() == Type.MSODRAWINGGROUP) { + if (!this.settings.getDrawingsDisabled()) { + this.msoDrawingGroup = new MsoDrawingGroupRecord(r); + if (this.drawingGroup == null) + this.drawingGroup = new DrawingGroup(Origin.READ); + this.drawingGroup.add(this.msoDrawingGroup); + Record nextrec = this.excelFile.peek(); + while (nextrec.getType() == Type.CONTINUE) { + this.drawingGroup.add(this.excelFile.next()); + nextrec = this.excelFile.peek(); + } + } + continue; + } + if (r.getType() == Type.BUTTONPROPERTYSET) { + this.buttonPropertySet = new ButtonPropertySetRecord(r); + continue; + } + if (r.getType() == Type.EOF) + this.bofs--; + } + bof = null; + if (this.excelFile.hasNext()) { + r = this.excelFile.next(); + if (r.getType() == Type.BOF) + bof = new BOFRecord(r); + } + while (bof != null && getNumberOfSheets() < this.boundsheets.size()) { + if (!bof.isBiff8() && !bof.isBiff7()) + throw new BiffException(BiffException.unrecognizedBiffVersion); + if (bof.isWorksheet()) { + SheetImpl s = new SheetImpl(this.excelFile, this.sharedStrings, this.formattingRecords, bof, this.workbookBof, this.nineteenFour, this); + BoundsheetRecord br = this.boundsheets.get(getNumberOfSheets()); + s.setName(br.getName()); + s.setHidden(br.isHidden()); + addSheet(s); + } else if (bof.isChart()) { + SheetImpl s = new SheetImpl(this.excelFile, this.sharedStrings, this.formattingRecords, bof, this.workbookBof, this.nineteenFour, this); + BoundsheetRecord br = this.boundsheets.get(getNumberOfSheets()); + s.setName(br.getName()); + s.setHidden(br.isHidden()); + addSheet(s); + } else { + logger.warn("BOF is unrecognized"); + while (this.excelFile.hasNext() && r.getType() != Type.EOF) + r = this.excelFile.next(); + } + bof = null; + if (this.excelFile.hasNext()) { + r = this.excelFile.next(); + if (r.getType() == Type.BOF) + bof = new BOFRecord(r); + } + } + } + + public FormattingRecords getFormattingRecords() { + return this.formattingRecords; + } + + public ExternalSheetRecord getExternalSheetRecord() { + return this.externSheet; + } + + public MsoDrawingGroupRecord getMsoDrawingGroupRecord() { + return this.msoDrawingGroup; + } + + public SupbookRecord[] getSupbookRecords() { + SupbookRecord[] sr = new SupbookRecord[this.supbooks.size()]; + return (SupbookRecord[])this.supbooks.toArray((Object[])sr); + } + + public NameRecord[] getNameRecords() { + NameRecord[] na = new NameRecord[this.nameTable.size()]; + return (NameRecord[])this.nameTable.toArray((Object[])na); + } + + public Fonts getFonts() { + return this.fonts; + } + + public Cell getCell(String loc) { + Sheet s = getSheet(CellReferenceHelper.getSheet(loc)); + return s.getCell(loc); + } + + public Cell findCellByName(String name) { + NameRecord nr = (NameRecord)this.namedRecords.get(name); + if (nr == null) + return null; + NameRecord.NameRange[] ranges = nr.getRanges(); + Sheet s = getSheet(ranges[0].getExternalSheet()); + Cell cell = s.getCell(ranges[0].getFirstColumn(), ranges[0].getFirstRow()); + return cell; + } + + public Range[] findByName(String name) { + NameRecord nr = (NameRecord)this.namedRecords.get(name); + if (nr == null) + return null; + NameRecord.NameRange[] ranges = nr.getRanges(); + Range[] cellRanges = new Range[ranges.length]; + for (int i = 0; i < ranges.length; i++) + cellRanges[i] = (Range)new RangeImpl(this, getExternalSheetIndex(ranges[i].getExternalSheet()), ranges[i].getFirstColumn(), ranges[i].getFirstRow(), getLastExternalSheetIndex(ranges[i].getExternalSheet()), ranges[i].getLastColumn(), ranges[i].getLastRow()); + return cellRanges; + } + + public String[] getRangeNames() { + Object[] keys = this.namedRecords.keySet().toArray(); + String[] names = new String[keys.length]; + System.arraycopy(keys, 0, names, 0, keys.length); + return names; + } + + public BOFRecord getWorkbookBof() { + return this.workbookBof; + } + + public boolean isProtected() { + return this.wbProtected; + } + + public WorkbookSettings getSettings() { + return this.settings; + } + + public int getExternalSheetIndex(String sheetName) { + return 0; + } + + public int getLastExternalSheetIndex(String sheetName) { + return 0; + } + + public String getName(int index) { + Assert.verify((index >= 0 && index < this.nameTable.size())); + return ((NameRecord)this.nameTable.get(index)).getName(); + } + + public int getNameIndex(String name) { + NameRecord nr = (NameRecord)this.namedRecords.get(name); + return (nr != null) ? nr.getIndex() : 0; + } + + public DrawingGroup getDrawingGroup() { + return this.drawingGroup; + } + + public CompoundFile getCompoundFile() { + return this.excelFile.getCompoundFile(); + } + + public boolean containsMacros() { + return this.containsMacros; + } + + public ButtonPropertySetRecord getButtonPropertySet() { + return this.buttonPropertySet; + } + + public CountryRecord getCountryRecord() { + return this.countryRecord; + } +} diff --git a/hrmsEjb/jxl/write/Blank.java b/hrmsEjb/jxl/write/Blank.java new file mode 100644 index 0000000..5e45693 --- /dev/null +++ b/hrmsEjb/jxl/write/Blank.java @@ -0,0 +1,27 @@ +package jxl.write; + +import jxl.Cell; +import jxl.format.CellFormat; +import jxl.write.biff.BlankRecord; + +public class Blank extends BlankRecord implements WritableCell { + public Blank(int c, int r) { + super(c, r); + } + + public Blank(int c, int r, CellFormat st) { + super(c, r, st); + } + + public Blank(Cell lc) { + super(lc); + } + + protected Blank(int col, int row, Blank b) { + super(col, row, b); + } + + public WritableCell copyTo(int col, int row) { + return new Blank(col, row, this); + } +} diff --git a/hrmsEjb/jxl/write/Boolean.java b/hrmsEjb/jxl/write/Boolean.java new file mode 100644 index 0000000..4f2e1b3 --- /dev/null +++ b/hrmsEjb/jxl/write/Boolean.java @@ -0,0 +1,31 @@ +package jxl.write; + +import jxl.BooleanCell; +import jxl.format.CellFormat; +import jxl.write.biff.BooleanRecord; + +public class Boolean extends BooleanRecord implements WritableCell, BooleanCell { + public Boolean(int c, int r, boolean val) { + super(c, r, val); + } + + public Boolean(int c, int r, boolean val, CellFormat st) { + super(c, r, val, st); + } + + public Boolean(BooleanCell nc) { + super(nc); + } + + protected Boolean(int col, int row, Boolean b) { + super(col, row, b); + } + + public void setValue(boolean val) { + super.setValue(val); + } + + public WritableCell copyTo(int col, int row) { + return new Boolean(col, row, this); + } +} diff --git a/hrmsEjb/jxl/write/Border.java b/hrmsEjb/jxl/write/Border.java new file mode 100644 index 0000000..5eed10f --- /dev/null +++ b/hrmsEjb/jxl/write/Border.java @@ -0,0 +1,9 @@ +package jxl.write; + +import jxl.format.Border; + +public final class Border extends Border { + private Border() { + super(null); + } +} diff --git a/hrmsEjb/jxl/write/BorderLineStyle.java b/hrmsEjb/jxl/write/BorderLineStyle.java new file mode 100644 index 0000000..d690d3e --- /dev/null +++ b/hrmsEjb/jxl/write/BorderLineStyle.java @@ -0,0 +1,9 @@ +package jxl.write; + +import jxl.format.BorderLineStyle; + +public final class BorderLineStyle extends BorderLineStyle { + private BorderLineStyle() { + super(0, null); + } +} diff --git a/hrmsEjb/jxl/write/DateFormat.java b/hrmsEjb/jxl/write/DateFormat.java new file mode 100644 index 0000000..f3647b9 --- /dev/null +++ b/hrmsEjb/jxl/write/DateFormat.java @@ -0,0 +1,12 @@ +package jxl.write; + +import java.text.SimpleDateFormat; +import jxl.biff.DisplayFormat; +import jxl.write.biff.DateFormatRecord; + +public class DateFormat extends DateFormatRecord implements DisplayFormat { + public DateFormat(String format) { + super(format); + SimpleDateFormat df = new SimpleDateFormat(format); + } +} diff --git a/hrmsEjb/jxl/write/DateFormats.java b/hrmsEjb/jxl/write/DateFormats.java new file mode 100644 index 0000000..6853137 --- /dev/null +++ b/hrmsEjb/jxl/write/DateFormats.java @@ -0,0 +1,73 @@ +package jxl.write; + +import jxl.biff.DisplayFormat; + +public final class DateFormats { + private static class BuiltInFormat implements DisplayFormat { + private int index; + + private String formatString; + + public BuiltInFormat(int i, String s) { + this.index = i; + this.formatString = s; + } + + public int getFormatIndex() { + return this.index; + } + + public boolean isInitialized() { + return true; + } + + public void initialize(int pos) {} + + public boolean isBuiltIn() { + return true; + } + + public String getFormatString() { + return this.formatString; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof BuiltInFormat)) + return false; + BuiltInFormat bif = (BuiltInFormat)o; + return (this.index == bif.index); + } + + public int hashCode() { + return this.index; + } + } + + public static final DisplayFormat FORMAT1 = new BuiltInFormat(14, "M/d/yy"); + + public static final DisplayFormat DEFAULT = FORMAT1; + + public static final DisplayFormat FORMAT2 = new BuiltInFormat(15, "d-MMM-yy"); + + public static final DisplayFormat FORMAT3 = new BuiltInFormat(16, "d-MMM"); + + public static final DisplayFormat FORMAT4 = new BuiltInFormat(17, "MMM-yy"); + + public static final DisplayFormat FORMAT5 = new BuiltInFormat(18, "h:mm a"); + + public static final DisplayFormat FORMAT6 = new BuiltInFormat(19, "h:mm:ss a"); + + public static final DisplayFormat FORMAT7 = new BuiltInFormat(20, "H:mm"); + + public static final DisplayFormat FORMAT8 = new BuiltInFormat(21, "H:mm:ss"); + + public static final DisplayFormat FORMAT9 = new BuiltInFormat(22, "M/d/yy H:mm"); + + public static final DisplayFormat FORMAT10 = new BuiltInFormat(45, "mm:ss"); + + public static final DisplayFormat FORMAT11 = new BuiltInFormat(46, "H:mm:ss"); + + public static final DisplayFormat FORMAT12 = new BuiltInFormat(47, "H:mm:ss"); +} diff --git a/hrmsEjb/jxl/write/DateTime.java b/hrmsEjb/jxl/write/DateTime.java new file mode 100644 index 0000000..4edba2e --- /dev/null +++ b/hrmsEjb/jxl/write/DateTime.java @@ -0,0 +1,50 @@ +package jxl.write; + +import java.util.Date; +import jxl.DateCell; +import jxl.format.CellFormat; +import jxl.write.biff.DateRecord; + +public class DateTime extends DateRecord implements WritableCell, DateCell { + public static final DateRecord.GMTDate GMT = new DateRecord.GMTDate(); + + public DateTime(int c, int r, Date d) { + super(c, r, d); + } + + public DateTime(int c, int r, Date d, DateRecord.GMTDate a) { + super(c, r, d, a); + } + + public DateTime(int c, int r, Date d, CellFormat st) { + super(c, r, d, st); + } + + public DateTime(int c, int r, Date d, CellFormat st, DateRecord.GMTDate a) { + super(c, r, d, st, a); + } + + public DateTime(int c, int r, Date d, CellFormat st, boolean tim) { + super(c, r, d, st, tim); + } + + public DateTime(DateCell dc) { + super(dc); + } + + protected DateTime(int col, int row, DateTime dt) { + super(col, row, dt); + } + + public void setDate(Date d) { + super.setDate(d); + } + + public void setDate(Date d, DateRecord.GMTDate a) { + super.setDate(d, a); + } + + public WritableCell copyTo(int col, int row) { + return new DateTime(col, row, this); + } +} diff --git a/hrmsEjb/jxl/write/Label.java b/hrmsEjb/jxl/write/Label.java new file mode 100644 index 0000000..5d7cfc5 --- /dev/null +++ b/hrmsEjb/jxl/write/Label.java @@ -0,0 +1,31 @@ +package jxl.write; + +import jxl.LabelCell; +import jxl.format.CellFormat; +import jxl.write.biff.LabelRecord; + +public class Label extends LabelRecord implements WritableCell, LabelCell { + public Label(int c, int r, String cont) { + super(c, r, cont); + } + + public Label(int c, int r, String cont, CellFormat st) { + super(c, r, cont, st); + } + + protected Label(int col, int row, Label l) { + super(col, row, l); + } + + public Label(LabelCell lc) { + super(lc); + } + + public void setString(String s) { + super.setString(s); + } + + public WritableCell copyTo(int col, int row) { + return new Label(col, row, this); + } +} diff --git a/hrmsEjb/jxl/write/Number.java b/hrmsEjb/jxl/write/Number.java new file mode 100644 index 0000000..ff2e4c4 --- /dev/null +++ b/hrmsEjb/jxl/write/Number.java @@ -0,0 +1,31 @@ +package jxl.write; + +import jxl.NumberCell; +import jxl.format.CellFormat; +import jxl.write.biff.NumberRecord; + +public class Number extends NumberRecord implements WritableCell, NumberCell { + public Number(int c, int r, double val) { + super(c, r, val); + } + + public Number(int c, int r, double val, CellFormat st) { + super(c, r, val, st); + } + + public Number(NumberCell nc) { + super(nc); + } + + public void setValue(double val) { + super.setValue(val); + } + + protected Number(int col, int row, Number n) { + super(col, row, n); + } + + public WritableCell copyTo(int col, int row) { + return new Number(col, row, this); + } +} diff --git a/hrmsEjb/jxl/write/NumberFormats.java b/hrmsEjb/jxl/write/NumberFormats.java new file mode 100644 index 0000000..08b28b1 --- /dev/null +++ b/hrmsEjb/jxl/write/NumberFormats.java @@ -0,0 +1,98 @@ +package jxl.write; + +import jxl.biff.DisplayFormat; +import jxl.format.Format; + +public final class NumberFormats { + private static class BuiltInFormat implements DisplayFormat, Format { + private int index; + + private String formatString; + + public BuiltInFormat(int i, String s) { + this.index = i; + this.formatString = s; + } + + public int getFormatIndex() { + return this.index; + } + + public boolean isInitialized() { + return true; + } + + public boolean isBuiltIn() { + return true; + } + + public void initialize(int pos) {} + + public String getFormatString() { + return this.formatString; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof BuiltInFormat)) + return false; + BuiltInFormat bif = (BuiltInFormat)o; + return (this.index == bif.index); + } + + public int hashCode() { + return this.index; + } + } + + public static final DisplayFormat DEFAULT = new BuiltInFormat(0, "#"); + + public static final DisplayFormat INTEGER = new BuiltInFormat(1, "0"); + + public static final DisplayFormat FLOAT = new BuiltInFormat(2, "0.00"); + + public static final DisplayFormat THOUSANDS_INTEGER = new BuiltInFormat(3, "#,##0"); + + public static final DisplayFormat THOUSANDS_FLOAT = new BuiltInFormat(4, "#,##0.00"); + + public static final DisplayFormat ACCOUNTING_INTEGER = new BuiltInFormat(5, "$#,##0;($#,##0)"); + + public static final DisplayFormat ACCOUNTING_RED_INTEGER = new BuiltInFormat(6, "$#,##0;($#,##0)"); + + public static final DisplayFormat ACCOUNTING_FLOAT = new BuiltInFormat(7, "$#,##0;($#,##0)"); + + public static final DisplayFormat ACCOUNTING_RED_FLOAT = new BuiltInFormat(8, "$#,##0;($#,##0)"); + + public static final DisplayFormat PERCENT_INTEGER = new BuiltInFormat(9, "0%"); + + public static final DisplayFormat PERCENT_FLOAT = new BuiltInFormat(10, "0.00%"); + + public static final DisplayFormat EXPONENTIAL = new BuiltInFormat(11, "0.00E00"); + + public static final DisplayFormat FRACTION_ONE_DIGIT = new BuiltInFormat(12, "?/?"); + + public static final DisplayFormat FRACTION_TWO_DIGITS = new BuiltInFormat(13, "??/??"); + + public static final DisplayFormat FORMAT1 = new BuiltInFormat(37, "#,##0;(#,##0)"); + + public static final DisplayFormat FORMAT2 = new BuiltInFormat(38, "#,##0;(#,##0)"); + + public static final DisplayFormat FORMAT3 = new BuiltInFormat(39, "#,##0.00;(#,##0.00)"); + + public static final DisplayFormat FORMAT4 = new BuiltInFormat(40, "#,##0.00;(#,##0.00)"); + + public static final DisplayFormat FORMAT5 = new BuiltInFormat(41, "#,##0;(#,##0)"); + + public static final DisplayFormat FORMAT6 = new BuiltInFormat(42, "#,##0;(#,##0)"); + + public static final DisplayFormat FORMAT7 = new BuiltInFormat(43, "#,##0.00;(#,##0.00)"); + + public static final DisplayFormat FORMAT8 = new BuiltInFormat(44, "#,##0.00;(#,##0.00)"); + + public static final DisplayFormat FORMAT9 = new BuiltInFormat(46, "#,##0.00;(#,##0.00)"); + + public static final DisplayFormat FORMAT10 = new BuiltInFormat(48, "##0.0E0"); + + public static final DisplayFormat TEXT = new BuiltInFormat(49, "@"); +} diff --git a/hrmsEjb/jxl/write/VerticalAlignment.java b/hrmsEjb/jxl/write/VerticalAlignment.java new file mode 100644 index 0000000..3d97a3f --- /dev/null +++ b/hrmsEjb/jxl/write/VerticalAlignment.java @@ -0,0 +1,9 @@ +package jxl.write; + +import jxl.format.VerticalAlignment; + +public final class VerticalAlignment extends VerticalAlignment { + private VerticalAlignment() { + super(0, null); + } +} diff --git a/hrmsEjb/jxl/write/WritableCell.java b/hrmsEjb/jxl/write/WritableCell.java new file mode 100644 index 0000000..a2a8a93 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableCell.java @@ -0,0 +1,14 @@ +package jxl.write; + +import jxl.Cell; +import jxl.format.CellFormat; + +public interface WritableCell extends Cell { + void setCellFormat(CellFormat paramCellFormat); + + WritableCell copyTo(int paramInt1, int paramInt2); + + WritableCellFeatures getWritableCellFeatures(); + + void setCellFeatures(WritableCellFeatures paramWritableCellFeatures); +} diff --git a/hrmsEjb/jxl/write/WritableCellFeatures.java b/hrmsEjb/jxl/write/WritableCellFeatures.java new file mode 100644 index 0000000..5846e33 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableCellFeatures.java @@ -0,0 +1,23 @@ +package jxl.write; + +import jxl.CellFeatures; + +public class WritableCellFeatures extends CellFeatures { + public WritableCellFeatures() {} + + public WritableCellFeatures(CellFeatures cf) { + super(cf); + } + + public void setComment(String s) { + super.setComment(s); + } + + public void setComment(String s, double width, double height) { + super.setComment(s, width, height); + } + + public void removeComment() { + super.removeComment(); + } +} diff --git a/hrmsEjb/jxl/write/WritableCellFormat.java b/hrmsEjb/jxl/write/WritableCellFormat.java new file mode 100644 index 0000000..74f8a59 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableCellFormat.java @@ -0,0 +1,79 @@ +package jxl.write; + +import jxl.biff.DisplayFormat; +import jxl.biff.FontRecord; +import jxl.format.Alignment; +import jxl.format.Border; +import jxl.format.BorderLineStyle; +import jxl.format.CellFormat; +import jxl.format.Colour; +import jxl.format.Orientation; +import jxl.format.Pattern; +import jxl.format.VerticalAlignment; +import jxl.write.biff.CellXFRecord; + +public class WritableCellFormat extends CellXFRecord { + public WritableCellFormat() { + this(WritableWorkbook.ARIAL_10_PT, NumberFormats.DEFAULT); + } + + public WritableCellFormat(WritableFont font) { + this(font, NumberFormats.DEFAULT); + } + + public WritableCellFormat(DisplayFormat format) { + this(WritableWorkbook.ARIAL_10_PT, format); + } + + public WritableCellFormat(WritableFont font, DisplayFormat format) { + super((FontRecord)font, format); + } + + public WritableCellFormat(CellFormat format) { + super(format); + } + + public void setAlignment(Alignment a) throws WriteException { + super.setAlignment(a); + } + + public void setVerticalAlignment(VerticalAlignment va) throws WriteException { + super.setVerticalAlignment(va); + } + + public void setOrientation(Orientation o) throws WriteException { + super.setOrientation(o); + } + + public void setWrap(boolean w) throws WriteException { + super.setWrap(w); + } + + public void setBorder(Border b, BorderLineStyle ls) throws WriteException { + super.setBorder(b, ls, Colour.BLACK); + } + + public void setBorder(Border b, BorderLineStyle ls, Colour c) throws WriteException { + super.setBorder(b, ls, c); + } + + public void setBackground(Colour c) throws WriteException { + setBackground(c, Pattern.SOLID); + } + + public void setBackground(Colour c, Pattern p) throws WriteException { + super.setBackground(c, p); + } + + public void setShrinkToFit(boolean s) throws WriteException { + super.setShrinkToFit(s); + } + + public void setIndentation(int i) throws WriteException { + super.setIndentation(i); + } + + public void setLocked(boolean l) throws WriteException { + super.setLocked(l); + } +} diff --git a/hrmsEjb/jxl/write/WritableFont.java b/hrmsEjb/jxl/write/WritableFont.java new file mode 100644 index 0000000..da55cb8 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableFont.java @@ -0,0 +1,107 @@ +package jxl.write; + +import jxl.format.Colour; +import jxl.format.Font; +import jxl.format.ScriptStyle; +import jxl.format.UnderlineStyle; +import jxl.write.biff.WritableFontRecord; + +public class WritableFont extends WritableFontRecord { + public static class FontName { + String name; + + FontName(String s) { + this.name = s; + } + } + + static class BoldStyle { + public int value; + + BoldStyle(int val) { + this.value = val; + } + } + + public static final FontName ARIAL = new FontName("Arial"); + + public static final FontName TIMES = new FontName("Times New Roman"); + + public static final FontName COURIER = new FontName("Courier New"); + + public static final FontName TAHOMA = new FontName("Tahoma"); + + public static final BoldStyle NO_BOLD = new BoldStyle(400); + + public static final BoldStyle BOLD = new BoldStyle(700); + + public static final int DEFAULT_POINT_SIZE = 10; + + public WritableFont(FontName fn) { + this(fn, 10, NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK, ScriptStyle.NORMAL_SCRIPT); + } + + public WritableFont(Font f) { + super(f); + } + + public WritableFont(FontName fn, int ps) { + this(fn, ps, NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK, ScriptStyle.NORMAL_SCRIPT); + } + + public WritableFont(FontName fn, int ps, BoldStyle bs) { + this(fn, ps, bs, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK, ScriptStyle.NORMAL_SCRIPT); + } + + public WritableFont(FontName fn, int ps, BoldStyle bs, boolean italic) { + this(fn, ps, bs, italic, UnderlineStyle.NO_UNDERLINE, Colour.BLACK, ScriptStyle.NORMAL_SCRIPT); + } + + public WritableFont(FontName fn, int ps, BoldStyle bs, boolean it, UnderlineStyle us) { + this(fn, ps, bs, it, us, Colour.BLACK, ScriptStyle.NORMAL_SCRIPT); + } + + public WritableFont(FontName fn, int ps, BoldStyle bs, boolean it, UnderlineStyle us, Colour c) { + this(fn, ps, bs, it, us, c, ScriptStyle.NORMAL_SCRIPT); + } + + public WritableFont(FontName fn, int ps, BoldStyle bs, boolean it, UnderlineStyle us, Colour c, ScriptStyle ss) { + super(fn.name, ps, bs.value, it, us.getValue(), c.getValue(), ss.getValue()); + } + + public void setPointSize(int pointSize) throws WriteException { + super.setPointSize(pointSize); + } + + public void setBoldStyle(BoldStyle boldStyle) throws WriteException { + setBoldStyle(boldStyle.value); + } + + public void setItalic(boolean italic) throws WriteException { + super.setItalic(italic); + } + + public void setUnderlineStyle(UnderlineStyle us) throws WriteException { + setUnderlineStyle(us.getValue()); + } + + public void setColour(Colour colour) throws WriteException { + setColour(colour.getValue()); + } + + public void setScriptStyle(ScriptStyle scriptStyle) throws WriteException { + setScriptStyle(scriptStyle.getValue()); + } + + public boolean isStruckout() { + return super.isStruckout(); + } + + public void setStruckout(boolean struckout) throws WriteException { + super.setStruckout(struckout); + } + + public static FontName createFont(String fontName) { + return new FontName(fontName); + } +} diff --git a/hrmsEjb/jxl/write/WritableHyperlink.java b/hrmsEjb/jxl/write/WritableHyperlink.java new file mode 100644 index 0000000..ef0f478 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableHyperlink.java @@ -0,0 +1,64 @@ +package jxl.write; + +import java.io.File; +import java.net.URL; +import jxl.Hyperlink; +import jxl.write.biff.HyperlinkRecord; + +public class WritableHyperlink extends HyperlinkRecord implements Hyperlink { + public WritableHyperlink(Hyperlink h, WritableSheet ws) { + super(h, ws); + } + + public WritableHyperlink(int col, int row, URL url) { + this(col, row, col, row, url); + } + + public WritableHyperlink(int col, int row, int lastcol, int lastrow, URL url) { + this(col, row, lastcol, lastrow, url, (String)null); + } + + public WritableHyperlink(int col, int row, int lastcol, int lastrow, URL url, String desc) { + super(col, row, lastcol, lastrow, url, desc); + } + + public WritableHyperlink(int col, int row, File file) { + this(col, row, col, row, file, (String)null); + } + + public WritableHyperlink(int col, int row, File file, String desc) { + this(col, row, col, row, file, desc); + } + + public WritableHyperlink(int col, int row, int lastcol, int lastrow, File file) { + super(col, row, lastcol, lastrow, file, null); + } + + public WritableHyperlink(int col, int row, int lastcol, int lastrow, File file, String desc) { + super(col, row, lastcol, lastrow, file, desc); + } + + public WritableHyperlink(int col, int row, String desc, WritableSheet sheet, int destcol, int destrow) { + this(col, row, col, row, desc, sheet, destcol, destrow, destcol, destrow); + } + + public WritableHyperlink(int col, int row, int lastcol, int lastrow, String desc, WritableSheet sheet, int destcol, int destrow, int lastdestcol, int lastdestrow) { + super(col, row, lastcol, lastrow, desc, sheet, destcol, destrow, lastdestcol, lastdestrow); + } + + public void setURL(URL url) { + super.setURL(url); + } + + public void setFile(File file) { + super.setFile(file); + } + + public void setDescription(String desc) { + setContents(desc); + } + + public void setLocation(String desc, WritableSheet sheet, int destcol, int destrow, int lastdestcol, int lastdestrow) { + super.setLocation(desc, sheet, destcol, destrow, lastdestcol, lastdestrow); + } +} diff --git a/hrmsEjb/jxl/write/WritableImage.java b/hrmsEjb/jxl/write/WritableImage.java new file mode 100644 index 0000000..3820ab4 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableImage.java @@ -0,0 +1,60 @@ +package jxl.write; + +import java.io.File; +import jxl.biff.drawing.Drawing; +import jxl.biff.drawing.DrawingGroup; +import jxl.biff.drawing.DrawingGroupObject; + +public class WritableImage extends Drawing { + public WritableImage(double x, double y, double width, double height, File image) { + super(x, y, width, height, image); + } + + public WritableImage(double x, double y, double width, double height, byte[] imageData) { + super(x, y, width, height, imageData); + } + + public WritableImage(DrawingGroupObject d, DrawingGroup dg) { + super(d, dg); + } + + public double getColumn() { + return getX(); + } + + public void setColumn(double c) { + setX(c); + } + + public double getRow() { + return getY(); + } + + public void setRow(double c) { + setY(c); + } + + public double getWidth() { + return super.getWidth(); + } + + public void setWidth(double c) { + super.setWidth(c); + } + + public double getHeight() { + return super.getHeight(); + } + + public void setHeight(double c) { + super.setHeight(c); + } + + public File getImageFile() { + return super.getImageFile(); + } + + public byte[] getImageData() { + return super.getImageData(); + } +} diff --git a/hrmsEjb/jxl/write/WritableSheet.java b/hrmsEjb/jxl/write/WritableSheet.java new file mode 100644 index 0000000..918b167 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableSheet.java @@ -0,0 +1,75 @@ +package jxl.write; + +import jxl.CellView; +import jxl.Range; +import jxl.Sheet; +import jxl.format.CellFormat; +import jxl.format.PageOrientation; +import jxl.format.PaperSize; +import jxl.write.biff.RowsExceededException; + +public interface WritableSheet extends Sheet { + void addCell(WritableCell paramWritableCell) throws WriteException, RowsExceededException; + + void setName(String paramString); + + void setHidden(boolean paramBoolean); + + void setProtected(boolean paramBoolean); + + void setColumnView(int paramInt1, int paramInt2); + + void setColumnView(int paramInt1, int paramInt2, CellFormat paramCellFormat); + + void setColumnView(int paramInt, CellView paramCellView); + + void setRowView(int paramInt1, int paramInt2) throws RowsExceededException; + + void setRowView(int paramInt, boolean paramBoolean) throws RowsExceededException; + + void setRowView(int paramInt1, int paramInt2, boolean paramBoolean) throws RowsExceededException; + + WritableCell getWritableCell(int paramInt1, int paramInt2); + + WritableCell getWritableCell(String paramString); + + WritableHyperlink[] getWritableHyperlinks(); + + void insertRow(int paramInt); + + void insertColumn(int paramInt); + + void removeColumn(int paramInt); + + void removeRow(int paramInt); + + Range mergeCells(int paramInt1, int paramInt2, int paramInt3, int paramInt4) throws WriteException, RowsExceededException; + + void unmergeCells(Range paramRange); + + void addHyperlink(WritableHyperlink paramWritableHyperlink) throws WriteException, RowsExceededException; + + void removeHyperlink(WritableHyperlink paramWritableHyperlink); + + void removeHyperlink(WritableHyperlink paramWritableHyperlink, boolean paramBoolean); + + void setHeader(String paramString1, String paramString2, String paramString3); + + void setFooter(String paramString1, String paramString2, String paramString3); + + void setPageSetup(PageOrientation paramPageOrientation); + + void setPageSetup(PageOrientation paramPageOrientation, double paramDouble1, double paramDouble2); + + void setPageSetup(PageOrientation paramPageOrientation, PaperSize paramPaperSize, double paramDouble1, double paramDouble2); + + void addRowPageBreak(int paramInt); + + void addImage(WritableImage paramWritableImage); + + int getNumberOfImages(); + + WritableImage getImage(int paramInt); + + void removeImage(WritableImage paramWritableImage); +} diff --git a/hrmsEjb/jxl/write/WritableWorkbook.java b/hrmsEjb/jxl/write/WritableWorkbook.java new file mode 100644 index 0000000..81a54b8 --- /dev/null +++ b/hrmsEjb/jxl/write/WritableWorkbook.java @@ -0,0 +1,62 @@ +package jxl.write; + +import java.io.File; +import java.io.IOException; +import jxl.Range; +import jxl.Workbook; +import jxl.format.Colour; +import jxl.format.UnderlineStyle; + +public abstract class WritableWorkbook { + public static final WritableFont ARIAL_10_PT = new WritableFont(WritableFont.ARIAL); + + public static final WritableFont HYPERLINK_FONT = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, UnderlineStyle.SINGLE, Colour.BLUE); + + public static final WritableCellFormat NORMAL_STYLE = new WritableCellFormat(ARIAL_10_PT, NumberFormats.DEFAULT); + + public static final WritableCellFormat HYPERLINK_STYLE = new WritableCellFormat(HYPERLINK_FONT); + + public static final WritableCellFormat HIDDEN_STYLE = new WritableCellFormat(new DateFormat(";;;")); + + public abstract WritableSheet[] getSheets(); + + public abstract String[] getSheetNames(); + + public abstract WritableSheet getSheet(int paramInt) throws IndexOutOfBoundsException; + + public abstract WritableSheet getSheet(String paramString); + + public abstract WritableCell getWritableCell(String paramString); + + public abstract int getNumberOfSheets(); + + public abstract void close() throws IOException, WriteException; + + public abstract WritableSheet createSheet(String paramString, int paramInt); + + public abstract void copySheet(int paramInt1, String paramString, int paramInt2); + + public abstract void copySheet(String paramString1, String paramString2, int paramInt); + + public abstract void removeSheet(int paramInt); + + public abstract WritableSheet moveSheet(int paramInt1, int paramInt2); + + public abstract void write() throws IOException; + + public abstract void setProtected(boolean paramBoolean); + + public abstract void setColourRGB(Colour paramColour, int paramInt1, int paramInt2, int paramInt3); + + public void copy(Workbook w) {} + + public abstract WritableCell findCellByName(String paramString); + + public abstract Range[] findByName(String paramString); + + public abstract String[] getRangeNames(); + + public abstract void addNameArea(String paramString, WritableSheet paramWritableSheet, int paramInt1, int paramInt2, int paramInt3, int paramInt4); + + public abstract void setOutputFile(File paramFile) throws IOException; +} diff --git a/hrmsEjb/jxl/write/WriteException.java b/hrmsEjb/jxl/write/WriteException.java new file mode 100644 index 0000000..0e9a523 --- /dev/null +++ b/hrmsEjb/jxl/write/WriteException.java @@ -0,0 +1,9 @@ +package jxl.write; + +import jxl.JXLException; + +public abstract class WriteException extends JXLException { + protected WriteException(String s) { + super(s); + } +} diff --git a/hrmsEjb/jxl/write/biff/BOFRecord.java b/hrmsEjb/jxl/write/biff/BOFRecord.java new file mode 100644 index 0000000..8147219 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/BOFRecord.java @@ -0,0 +1,38 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class BOFRecord extends WritableRecordData { + private byte[] data; + + private static class WorkbookGlobalsBOF { + private WorkbookGlobalsBOF() {} + } + + private static class SheetBOF { + private SheetBOF() {} + } + + public static final WorkbookGlobalsBOF workbookGlobals = new WorkbookGlobalsBOF(); + + public static final SheetBOF sheet = new SheetBOF(); + + public BOFRecord(WorkbookGlobalsBOF dummy) { + super(Type.BOF); + this.data = new byte[] { + 0, 6, 5, 0, -14, 21, -52, 7, 0, 0, + 0, 0, 6, 0, 0, 0 }; + } + + public BOFRecord(SheetBOF dummy) { + super(Type.BOF); + this.data = new byte[] { + 0, 6, 16, 0, -14, 21, -52, 7, 0, 0, + 0, 0, 6, 0, 0, 0 }; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/BackupRecord.java b/hrmsEjb/jxl/write/biff/BackupRecord.java new file mode 100644 index 0000000..26264c1 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/BackupRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class BackupRecord extends WritableRecordData { + private boolean backup; + + private byte[] data; + + public BackupRecord(boolean bu) { + super(Type.BACKUP); + this.backup = bu; + this.data = new byte[2]; + if (this.backup) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/BlankRecord.java b/hrmsEjb/jxl/write/biff/BlankRecord.java new file mode 100644 index 0000000..e6bf966 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/BlankRecord.java @@ -0,0 +1,35 @@ +package jxl.write.biff; + +import common.Logger; +import jxl.Cell; +import jxl.CellType; +import jxl.biff.Type; +import jxl.format.CellFormat; + +public abstract class BlankRecord extends CellValue { + private static Logger logger = Logger.getLogger(BlankRecord.class); + + protected BlankRecord(int c, int r) { + super(Type.BLANK, c, r); + } + + protected BlankRecord(int c, int r, CellFormat st) { + super(Type.BLANK, c, r, st); + } + + protected BlankRecord(Cell c) { + super(Type.BLANK, c); + } + + protected BlankRecord(int c, int r, BlankRecord br) { + super(Type.BLANK, c, r, br); + } + + public CellType getType() { + return CellType.EMPTY; + } + + public String getContents() { + return ""; + } +} diff --git a/hrmsEjb/jxl/write/biff/BookboolRecord.java b/hrmsEjb/jxl/write/biff/BookboolRecord.java new file mode 100644 index 0000000..6d03d9e --- /dev/null +++ b/hrmsEjb/jxl/write/biff/BookboolRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class BookboolRecord extends WritableRecordData { + private boolean externalLink; + + private byte[] data; + + public BookboolRecord(boolean extlink) { + super(Type.BOOKBOOL); + this.externalLink = extlink; + this.data = new byte[2]; + if (!this.externalLink) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/BooleanRecord.java b/hrmsEjb/jxl/write/biff/BooleanRecord.java new file mode 100644 index 0000000..33a6e1b --- /dev/null +++ b/hrmsEjb/jxl/write/biff/BooleanRecord.java @@ -0,0 +1,56 @@ +package jxl.write.biff; + +import jxl.BooleanCell; +import jxl.Cell; +import jxl.CellType; +import jxl.biff.Type; +import jxl.format.CellFormat; + +public abstract class BooleanRecord extends CellValue { + private boolean value; + + protected BooleanRecord(int c, int r, boolean val) { + super(Type.BOOLERR, c, r); + this.value = val; + } + + protected BooleanRecord(int c, int r, boolean val, CellFormat st) { + super(Type.BOOLERR, c, r, st); + this.value = val; + } + + protected BooleanRecord(BooleanCell nc) { + super(Type.BOOLERR, (Cell)nc); + this.value = nc.getValue(); + } + + protected BooleanRecord(int c, int r, BooleanRecord br) { + super(Type.BOOLERR, c, r, br); + this.value = br.value; + } + + public boolean getValue() { + return this.value; + } + + public String getContents() { + return (new Boolean(this.value)).toString(); + } + + public CellType getType() { + return CellType.BOOLEAN; + } + + protected void setValue(boolean val) { + this.value = val; + } + + public byte[] getData() { + byte[] celldata = super.getData(); + byte[] data = new byte[celldata.length + 2]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + if (this.value) + data[celldata.length] = 1; + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/BottomMarginRecord.java b/hrmsEjb/jxl/write/biff/BottomMarginRecord.java new file mode 100644 index 0000000..f7ae2a7 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/BottomMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.write.biff; + +import jxl.biff.Type; + +class BottomMarginRecord extends MarginRecord { + BottomMarginRecord(double v) { + super(Type.BOTTOMMARGIN, v); + } +} diff --git a/hrmsEjb/jxl/write/biff/BoundsheetRecord.java b/hrmsEjb/jxl/write/biff/BoundsheetRecord.java new file mode 100644 index 0000000..894d050 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/BoundsheetRecord.java @@ -0,0 +1,47 @@ +package jxl.write.biff; + +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class BoundsheetRecord extends WritableRecordData { + private boolean hidden; + + private boolean chartOnly; + + private String name; + + private byte[] data; + + public BoundsheetRecord(String n) { + super(Type.BOUNDSHEET); + this.name = n; + this.hidden = false; + this.chartOnly = false; + } + + void setHidden() { + this.hidden = true; + } + + void setChartOnly() { + this.chartOnly = true; + } + + public byte[] getData() { + this.data = new byte[this.name.length() * 2 + 8]; + if (this.chartOnly) { + this.data[5] = 2; + } else { + this.data[5] = 0; + } + if (this.hidden) { + this.data[4] = 1; + this.data[5] = 0; + } + this.data[6] = (byte)this.name.length(); + this.data[7] = 1; + StringHelper.getUnicodeBytes(this.name, this.data, 8); + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ButtonPropertySetRecord.java b/hrmsEjb/jxl/write/biff/ButtonPropertySetRecord.java new file mode 100644 index 0000000..0cbf4ad --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ButtonPropertySetRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class ButtonPropertySetRecord extends WritableRecordData { + private byte[] data; + + public ButtonPropertySetRecord(jxl.read.biff.ButtonPropertySetRecord bps) { + super(Type.BUTTONPROPERTYSET); + this.data = bps.getData(); + } + + public ButtonPropertySetRecord(ButtonPropertySetRecord bps) { + super(Type.BUTTONPROPERTYSET); + this.data = bps.getData(); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/CalcCountRecord.java b/hrmsEjb/jxl/write/biff/CalcCountRecord.java new file mode 100644 index 0000000..38c4cfa --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CalcCountRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class CalcCountRecord extends WritableRecordData { + private int calcCount; + + private byte[] data; + + public CalcCountRecord(int cnt) { + super(Type.CALCCOUNT); + this.calcCount = cnt; + } + + public byte[] getData() { + byte[] data = new byte[2]; + IntegerHelper.getTwoBytes(this.calcCount, data, 0); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/CalcModeRecord.java b/hrmsEjb/jxl/write/biff/CalcModeRecord.java new file mode 100644 index 0000000..1a42307 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CalcModeRecord.java @@ -0,0 +1,34 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class CalcModeRecord extends WritableRecordData { + private CalcMode calculationMode; + + private static class CalcMode { + int value; + + public CalcMode(int m) { + this.value = m; + } + } + + static CalcMode manual = new CalcMode(0); + + static CalcMode automatic = new CalcMode(1); + + static CalcMode automaticNoTables = new CalcMode(-1); + + public CalcModeRecord(CalcMode cm) { + super(Type.CALCMODE); + this.calculationMode = cm; + } + + public byte[] getData() { + byte[] data = new byte[2]; + IntegerHelper.getTwoBytes(this.calculationMode.value, data, 0); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/CellValue.java b/hrmsEjb/jxl/write/biff/CellValue.java new file mode 100644 index 0000000..edb5280 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CellValue.java @@ -0,0 +1,240 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import jxl.Cell; +import jxl.CellFeatures; +import jxl.Sheet; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; +import jxl.biff.NumFormatRecordsException; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.biff.XFRecord; +import jxl.biff.drawing.Comment; +import jxl.biff.drawing.DrawingGroupObject; +import jxl.format.CellFormat; +import jxl.write.WritableCell; +import jxl.write.WritableCellFeatures; +import jxl.write.WritableWorkbook; + +public abstract class CellValue extends WritableRecordData implements WritableCell { + private static Logger logger = Logger.getLogger(CellValue.class); + + private int row; + + private int column; + + private XFRecord format; + + private FormattingRecords formattingRecords; + + private boolean referenced; + + private WritableSheetImpl sheet; + + private WritableCellFeatures features; + + private boolean copied; + + protected CellValue(Type t, int c, int r) { + this(t, c, r, (CellFormat)WritableWorkbook.NORMAL_STYLE); + this.copied = false; + } + + protected CellValue(Type t, Cell c) { + this(t, c.getColumn(), c.getRow()); + this.copied = true; + this.format = (XFRecord)c.getCellFormat(); + if (c.getCellFeatures() != null) { + this.features = new WritableCellFeatures(c.getCellFeatures()); + this.features.setWritableCell(this); + } + } + + protected CellValue(Type t, int c, int r, CellFormat st) { + super(t); + this.row = r; + this.column = c; + this.format = (XFRecord)st; + this.referenced = false; + this.copied = false; + } + + protected CellValue(Type t, int c, int r, CellValue cv) { + super(t); + this.row = r; + this.column = c; + this.format = cv.format; + this.referenced = false; + this.copied = false; + if (cv.features != null) { + this.features = new WritableCellFeatures((CellFeatures)cv.features); + this.features.setWritableCell(this); + } + } + + public void setCellFormat(CellFormat cf) { + this.format = (XFRecord)cf; + if (!this.referenced) + return; + Assert.verify((this.formattingRecords != null)); + addCellFormat(); + } + + public int getRow() { + return this.row; + } + + public int getColumn() { + return this.column; + } + + public boolean isHidden() { + ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column); + if (cir != null && cir.getWidth() == 0) + return true; + RowRecord rr = this.sheet.getRowInfo(this.row); + if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed())) + return true; + return false; + } + + public byte[] getData() { + byte[] mydata = new byte[6]; + IntegerHelper.getTwoBytes(this.row, mydata, 0); + IntegerHelper.getTwoBytes(this.column, mydata, 2); + IntegerHelper.getTwoBytes(this.format.getXFIndex(), mydata, 4); + return mydata; + } + + void setCellDetails(FormattingRecords fr, SharedStrings ss, WritableSheetImpl s) { + this.referenced = true; + this.sheet = s; + this.formattingRecords = fr; + addCellFormat(); + addCellFeatures(); + } + + final boolean isReferenced() { + return this.referenced; + } + + final int getXFIndex() { + return this.format.getXFIndex(); + } + + public CellFormat getCellFormat() { + return (CellFormat)this.format; + } + + void incrementRow() { + this.row++; + if (this.features != null) { + Comment c = this.features.getCommentDrawing(); + if (c != null) { + c.setX(this.column); + c.setY(this.row); + } + } + } + + void decrementRow() { + this.row--; + if (this.features != null) { + Comment c = this.features.getCommentDrawing(); + if (c != null) { + c.setX(this.column); + c.setY(this.row); + } + } + } + + void incrementColumn() { + this.column++; + if (this.features != null) { + Comment c = this.features.getCommentDrawing(); + if (c != null) { + c.setX(this.column); + c.setY(this.row); + } + } + } + + void decrementColumn() { + this.column--; + if (this.features != null) { + Comment c = this.features.getCommentDrawing(); + if (c != null) { + c.setX(this.column); + c.setY(this.row); + } + } + } + + void columnInserted(Sheet s, int sheetIndex, int col) {} + + void columnRemoved(Sheet s, int sheetIndex, int col) {} + + void rowInserted(Sheet s, int sheetIndex, int row) {} + + void rowRemoved(Sheet s, int sheetIndex, int row) {} + + protected WritableSheetImpl getSheet() { + return this.sheet; + } + + private void addCellFormat() { + Styles styles = this.sheet.getWorkbook().getStyles(); + this.format = styles.getFormat(this.format); + try { + if (!this.format.isInitialized()) + this.formattingRecords.addStyle(this.format); + } catch (NumFormatRecordsException e) { + logger.warn("Maximum number of format records exceeded. Using default format."); + this.format = (XFRecord)styles.getNormalStyle(); + } + } + + public CellFeatures getCellFeatures() { + return (CellFeatures)this.features; + } + + public WritableCellFeatures getWritableCellFeatures() { + return this.features; + } + + public void setCellFeatures(WritableCellFeatures cf) { + if (this.features != null) + logger.warn("current cell features not null - overwriting"); + this.features = cf; + cf.setWritableCell(this); + if (this.referenced) + addCellFeatures(); + } + + public final void addCellFeatures() { + if (this.features == null) + return; + if (this.copied == true) { + this.copied = false; + return; + } + if (this.features.getComment() != null) { + Comment comment = new Comment(this.features.getComment(), this.column, this.row); + comment.setWidth(this.features.getCommentWidth()); + comment.setHeight(this.features.getCommentHeight()); + this.sheet.addDrawing((DrawingGroupObject)comment); + this.sheet.getWorkbook().addDrawing((DrawingGroupObject)comment); + this.features.setCommentDrawing(comment); + } + } + + public final void removeComment(Comment c) { + this.sheet.removeDrawing((DrawingGroupObject)c); + } + + final void setCopied(boolean c) { + this.copied = c; + } +} diff --git a/hrmsEjb/jxl/write/biff/CellXFRecord.java b/hrmsEjb/jxl/write/biff/CellXFRecord.java new file mode 100644 index 0000000..7a7bbc7 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CellXFRecord.java @@ -0,0 +1,100 @@ +package jxl.write.biff; + +import jxl.biff.DisplayFormat; +import jxl.biff.FontRecord; +import jxl.biff.XFRecord; +import jxl.format.Alignment; +import jxl.format.Border; +import jxl.format.BorderLineStyle; +import jxl.format.CellFormat; +import jxl.format.Colour; +import jxl.format.Orientation; +import jxl.format.Pattern; +import jxl.format.VerticalAlignment; +import jxl.write.WriteException; + +public class CellXFRecord extends XFRecord { + protected CellXFRecord(FontRecord fnt, DisplayFormat form) { + super(fnt, form); + setXFDetails(XFRecord.cell, 0); + } + + CellXFRecord(XFRecord fmt) { + super(fmt); + setXFDetails(XFRecord.cell, 0); + } + + protected CellXFRecord(CellFormat format) { + super(format); + } + + public void setAlignment(Alignment a) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFAlignment(a); + } + + public void setBackground(Colour c, Pattern p) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFBackground(c, p); + setXFCellOptions(16384); + } + + public void setLocked(boolean l) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFLocked(l); + setXFCellOptions(32768); + } + + public void setIndentation(int i) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFIndentation(i); + } + + public void setShrinkToFit(boolean s) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFShrinkToFit(s); + } + + public void setVerticalAlignment(VerticalAlignment va) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFVerticalAlignment(va); + } + + public void setOrientation(Orientation o) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFOrientation(o); + } + + public void setWrap(boolean w) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setXFWrap(w); + } + + public void setBorder(Border b, BorderLineStyle ls, Colour c) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + if (b == Border.ALL) { + setXFBorder(Border.LEFT, ls, c); + setXFBorder(Border.RIGHT, ls, c); + setXFBorder(Border.TOP, ls, c); + setXFBorder(Border.BOTTOM, ls, c); + return; + } + if (b == Border.NONE) { + setXFBorder(Border.LEFT, BorderLineStyle.NONE, Colour.BLACK); + setXFBorder(Border.RIGHT, BorderLineStyle.NONE, Colour.BLACK); + setXFBorder(Border.TOP, BorderLineStyle.NONE, Colour.BLACK); + setXFBorder(Border.BOTTOM, BorderLineStyle.NONE, Colour.BLACK); + return; + } + setXFBorder(b, ls, c); + } +} diff --git a/hrmsEjb/jxl/write/biff/CodepageRecord.java b/hrmsEjb/jxl/write/biff/CodepageRecord.java new file mode 100644 index 0000000..0d08093 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CodepageRecord.java @@ -0,0 +1,17 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class CodepageRecord extends WritableRecordData { + private byte[] data; + + public CodepageRecord() { + super(Type.CODEPAGE); + this.data = new byte[] { -28, 4 }; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ColumnInfoRecord.java b/hrmsEjb/jxl/write/biff/ColumnInfoRecord.java new file mode 100644 index 0000000..2e3b8f0 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ColumnInfoRecord.java @@ -0,0 +1,109 @@ +package jxl.write.biff; + +import jxl.biff.FormattingRecords; +import jxl.biff.IndexMapping; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.biff.XFRecord; + +class ColumnInfoRecord extends WritableRecordData { + private byte[] data; + + private int column; + + private XFRecord style; + + private int xfIndex; + + private int width; + + private boolean hidden; + + public ColumnInfoRecord(int col, int w, XFRecord xf) { + super(Type.COLINFO); + this.column = col; + this.width = w; + this.style = xf; + this.xfIndex = this.style.getXFIndex(); + this.hidden = false; + } + + public ColumnInfoRecord(jxl.read.biff.ColumnInfoRecord cir, int col, FormattingRecords fr) { + super(Type.COLINFO); + this.column = col; + this.width = cir.getWidth(); + this.xfIndex = cir.getXFIndex(); + this.style = fr.getXFRecord(this.xfIndex); + } + + public int getColumn() { + return this.column; + } + + public void incrementColumn() { + this.column++; + } + + public void decrementColumn() { + this.column--; + } + + int getWidth() { + return this.width; + } + + public byte[] getData() { + this.data = new byte[12]; + IntegerHelper.getTwoBytes(this.column, this.data, 0); + IntegerHelper.getTwoBytes(this.column, this.data, 2); + IntegerHelper.getTwoBytes(this.width, this.data, 4); + IntegerHelper.getTwoBytes(this.xfIndex, this.data, 6); + int options = 6; + if (this.hidden) + options |= 0x1; + IntegerHelper.getTwoBytes(options, this.data, 8); + return this.data; + } + + public XFRecord getCellFormat() { + return this.style; + } + + void rationalize(IndexMapping xfmapping) { + this.xfIndex = xfmapping.getNewIndex(this.xfIndex); + } + + void setHidden(boolean h) { + this.hidden = h; + } + + boolean getHidden() { + return this.hidden; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof ColumnInfoRecord)) + return false; + ColumnInfoRecord cir = (ColumnInfoRecord)o; + if (this.column != cir.column || this.xfIndex != cir.xfIndex || this.width != cir.width || this.hidden != cir.hidden) + return false; + if ((this.style == null && cir.style != null) || (this.style != null && cir.style == null)) + return false; + return this.style.equals(cir.style); + } + + public int hashCode() { + int hashValue = 137; + int oddPrimeNumber = 79; + hashValue = hashValue * oddPrimeNumber + this.column; + hashValue = hashValue * oddPrimeNumber + this.xfIndex; + hashValue = hashValue * oddPrimeNumber + this.width; + hashValue = hashValue * oddPrimeNumber + (this.hidden ? 1 : 0); + if (this.style != null) + hashValue ^= this.style.hashCode(); + return hashValue; + } +} diff --git a/hrmsEjb/jxl/write/biff/CompoundFile.java b/hrmsEjb/jxl/write/biff/CompoundFile.java new file mode 100644 index 0000000..f7b9f1d --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CompoundFile.java @@ -0,0 +1,539 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import jxl.biff.BaseCompoundFile; +import jxl.biff.IntegerHelper; +import jxl.read.biff.BiffException; + +final class CompoundFile extends BaseCompoundFile { + private static Logger logger = Logger.getLogger(CompoundFile.class); + + private OutputStream out; + + private byte[] excelData; + + private int size; + + private int requiredSize; + + private int numBigBlockDepotBlocks; + + private int numSmallBlockDepotChainBlocks; + + private int numSmallBlockDepotBlocks; + + private int numExtensionBlocks; + + private int extensionBlock; + + private int excelDataBlocks; + + private int rootStartBlock; + + private int excelDataStartBlock; + + private int bbdStartBlock; + + private int sbdStartBlockChain; + + private int sbdStartBlock; + + private int additionalPropertyBlocks; + + private int numSmallBlocks; + + private int numPropertySets; + + private int numRootEntryBlocks; + + private ArrayList additionalPropertySets; + + private HashMap standardPropertySets; + + private int bbdPos; + + private byte[] bigBlockDepot; + + private static final class ReadPropertyStorage { + BaseCompoundFile.PropertyStorage propertyStorage; + + byte[] data; + + int number; + + ReadPropertyStorage(BaseCompoundFile.PropertyStorage ps, byte[] d, int n) { + this.propertyStorage = ps; + this.data = d; + this.number = n; + } + } + + public CompoundFile(byte[] data, int l, OutputStream os, jxl.read.biff.CompoundFile rcf) throws CopyAdditionalPropertySetsException, IOException { + this.size = l; + this.excelData = data; + readAdditionalPropertySets(rcf); + this.numRootEntryBlocks = 1; + this.numPropertySets = 4 + ((this.additionalPropertySets != null) ? this.additionalPropertySets.size() : 0); + if (this.additionalPropertySets != null) { + this.numSmallBlockDepotChainBlocks = getBigBlocksRequired(this.numSmallBlocks * 4); + this.numSmallBlockDepotBlocks = getBigBlocksRequired(this.numSmallBlocks * 64); + this.numRootEntryBlocks += getBigBlocksRequired(this.additionalPropertySets.size() * 128); + } + int blocks = getBigBlocksRequired(l); + if (l < 4096) { + this.requiredSize = 4096; + } else { + this.requiredSize = blocks * 512; + } + this.out = os; + this.excelDataBlocks = this.requiredSize / 512; + this.numBigBlockDepotBlocks = 1; + int blockChainLength = 109; + int startTotalBlocks = this.excelDataBlocks + 8 + 8 + this.additionalPropertyBlocks + this.numSmallBlockDepotBlocks + this.numSmallBlockDepotChainBlocks + this.numRootEntryBlocks; + int totalBlocks = startTotalBlocks + this.numBigBlockDepotBlocks; + this.numBigBlockDepotBlocks = (int)Math.ceil(totalBlocks / 128.0D); + totalBlocks = startTotalBlocks + this.numBigBlockDepotBlocks; + this.numBigBlockDepotBlocks = (int)Math.ceil(totalBlocks / 128.0D); + totalBlocks = startTotalBlocks + this.numBigBlockDepotBlocks; + if (this.numBigBlockDepotBlocks > blockChainLength - 1) { + this.extensionBlock = 0; + int bbdBlocksLeft = this.numBigBlockDepotBlocks - blockChainLength + 1; + this.numExtensionBlocks = (int)Math.ceil(bbdBlocksLeft / 127.0D); + totalBlocks = startTotalBlocks + this.numExtensionBlocks + this.numBigBlockDepotBlocks; + this.numBigBlockDepotBlocks = (int)Math.ceil(totalBlocks / 128.0D); + totalBlocks = startTotalBlocks + this.numExtensionBlocks + this.numBigBlockDepotBlocks; + } else { + this.extensionBlock = -2; + this.numExtensionBlocks = 0; + } + this.excelDataStartBlock = this.numExtensionBlocks; + this.sbdStartBlock = -2; + if (this.additionalPropertySets != null && this.numSmallBlockDepotBlocks != 0) + this.sbdStartBlock = this.excelDataStartBlock + this.excelDataBlocks + this.additionalPropertyBlocks + 16; + this.sbdStartBlockChain = -2; + if (this.sbdStartBlock != -2) + this.sbdStartBlockChain = this.sbdStartBlock + this.numSmallBlockDepotBlocks; + if (this.sbdStartBlockChain != -2) { + this.bbdStartBlock = this.sbdStartBlockChain + this.numSmallBlockDepotChainBlocks; + } else { + this.bbdStartBlock = this.excelDataStartBlock + this.excelDataBlocks + this.additionalPropertyBlocks + 16; + } + this.rootStartBlock = this.bbdStartBlock + this.numBigBlockDepotBlocks; + if (totalBlocks != this.rootStartBlock + this.numRootEntryBlocks) { + logger.warn("Root start block and total blocks are inconsistent generated file may be corrupt"); + logger.warn("RootStartBlock " + this.rootStartBlock + " totalBlocks " + totalBlocks); + } + } + + private void readAdditionalPropertySets(jxl.read.biff.CompoundFile readCompoundFile) throws CopyAdditionalPropertySetsException, IOException { + if (readCompoundFile == null) + return; + this.additionalPropertySets = new ArrayList(); + this.standardPropertySets = new HashMap(); + int blocksRequired = 0; + int numPropertySets = readCompoundFile.getNumberOfPropertySets(); + for (int i = 0; i < numPropertySets; i++) { + BaseCompoundFile.PropertyStorage ps = readCompoundFile.getPropertySet(i); + boolean standard = false; + if (ps.name.equalsIgnoreCase("Root Entry")) { + standard = true; + ReadPropertyStorage rps = new ReadPropertyStorage(ps, null, i); + this.standardPropertySets.put("Root Entry", rps); + } + for (int j = 0; j < STANDARD_PROPERTY_SETS.length && !standard; j++) { + if (ps.name.equalsIgnoreCase(STANDARD_PROPERTY_SETS[j])) { + BaseCompoundFile.PropertyStorage ps2 = readCompoundFile.findPropertyStorage(ps.name); + Assert.verify((ps2 != null)); + if (ps2 == ps) { + standard = true; + ReadPropertyStorage rps = new ReadPropertyStorage(ps, null, i); + this.standardPropertySets.put(STANDARD_PROPERTY_SETS[j], rps); + } + } + } + if (!standard) + try { + byte[] data = null; + if (ps.size > 0) { + data = readCompoundFile.getStream(i); + } else { + data = new byte[0]; + } + ReadPropertyStorage rps = new ReadPropertyStorage(ps, data, i); + this.additionalPropertySets.add(rps); + if (data.length > 4096) { + int blocks = getBigBlocksRequired(data.length); + blocksRequired += blocks; + } else { + int blocks = getSmallBlocksRequired(data.length); + this.numSmallBlocks += blocks; + } + } catch (BiffException e) { + logger.error(e); + throw new CopyAdditionalPropertySetsException(); + } + } + this.additionalPropertyBlocks = blocksRequired; + } + + public void write() throws IOException { + writeHeader(); + writeExcelData(); + writeDocumentSummaryData(); + writeSummaryData(); + writeAdditionalPropertySets(); + writeSmallBlockDepot(); + writeSmallBlockDepotChain(); + writeBigBlockDepot(); + writePropertySets(); + } + + private void writeAdditionalPropertySets() throws IOException { + if (this.additionalPropertySets == null) + return; + for (Iterator i = this.additionalPropertySets.iterator(); i.hasNext(); ) { + ReadPropertyStorage rps = i.next(); + byte[] data = rps.data; + if (data.length > 4096) { + int numBlocks = getBigBlocksRequired(data.length); + int requiredSize = numBlocks * 512; + this.out.write(data, 0, data.length); + byte[] padding = new byte[requiredSize - data.length]; + this.out.write(padding, 0, padding.length); + } + } + } + + private void writeExcelData() throws IOException { + this.out.write(this.excelData, 0, this.size); + byte[] padding = new byte[this.requiredSize - this.size]; + this.out.write(padding); + } + + private void writeDocumentSummaryData() throws IOException { + byte[] padding = new byte[4096]; + this.out.write(padding); + } + + private void writeSummaryData() throws IOException { + byte[] padding = new byte[4096]; + this.out.write(padding); + } + + private void writeHeader() throws IOException { + byte[] headerBlock = new byte[512]; + byte[] extensionBlockData = new byte[512 * this.numExtensionBlocks]; + System.arraycopy(IDENTIFIER, 0, headerBlock, 0, IDENTIFIER.length); + headerBlock[24] = 62; + headerBlock[26] = 3; + headerBlock[28] = -2; + headerBlock[29] = -1; + headerBlock[30] = 9; + headerBlock[32] = 6; + headerBlock[57] = 16; + IntegerHelper.getFourBytes(this.numBigBlockDepotBlocks, headerBlock, 44); + IntegerHelper.getFourBytes(this.sbdStartBlockChain, headerBlock, 60); + IntegerHelper.getFourBytes(this.numSmallBlockDepotChainBlocks, headerBlock, 64); + IntegerHelper.getFourBytes(this.extensionBlock, headerBlock, 68); + IntegerHelper.getFourBytes(this.numExtensionBlocks, headerBlock, 72); + IntegerHelper.getFourBytes(this.rootStartBlock, headerBlock, 48); + int pos = 76; + int blocksToWrite = Math.min(this.numBigBlockDepotBlocks, 109); + int blocksWritten = 0; + int i; + for (i = 0; i < blocksToWrite; i++) { + IntegerHelper.getFourBytes(this.bbdStartBlock + i, headerBlock, pos); + pos += 4; + blocksWritten++; + } + for (i = pos; i < 512; i++) + headerBlock[i] = -1; + this.out.write(headerBlock); + pos = 0; + for (int extBlock = 0; extBlock < this.numExtensionBlocks; extBlock++) { + blocksToWrite = Math.min(this.numBigBlockDepotBlocks - blocksWritten, 127); + for (int j = 0; j < blocksToWrite; j++) { + IntegerHelper.getFourBytes(this.bbdStartBlock + blocksWritten + j, extensionBlockData, pos); + pos += 4; + } + blocksWritten += blocksToWrite; + int nextBlock = (blocksWritten == this.numBigBlockDepotBlocks) ? -2 : (extBlock + 1); + IntegerHelper.getFourBytes(nextBlock, extensionBlockData, pos); + pos += 4; + } + if (this.numExtensionBlocks > 0) { + for (int j = pos; j < extensionBlockData.length; j++) + extensionBlockData[j] = -1; + this.out.write(extensionBlockData); + } + } + + private void checkBbdPos() throws IOException { + if (this.bbdPos >= 512) { + this.out.write(this.bigBlockDepot); + this.bigBlockDepot = new byte[512]; + this.bbdPos = 0; + } + } + + private void writeBlockChain(int startBlock, int numBlocks) throws IOException { + int blocksToWrite = numBlocks - 1; + int blockNumber = startBlock + 1; + while (blocksToWrite > 0) { + int bbdBlocks = Math.min(blocksToWrite, (512 - this.bbdPos) / 4); + for (int i = 0; i < bbdBlocks; i++) { + IntegerHelper.getFourBytes(blockNumber, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + blockNumber++; + } + blocksToWrite -= bbdBlocks; + checkBbdPos(); + } + IntegerHelper.getFourBytes(-2, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + checkBbdPos(); + } + + private void writeAdditionalPropertySetBlockChains() throws IOException { + if (this.additionalPropertySets == null) + return; + int blockNumber = this.excelDataStartBlock + this.excelDataBlocks + 16; + for (Iterator i = this.additionalPropertySets.iterator(); i.hasNext(); ) { + ReadPropertyStorage rps = i.next(); + if (rps.data.length > 4096) { + int numBlocks = getBigBlocksRequired(rps.data.length); + writeBlockChain(blockNumber, numBlocks); + blockNumber += numBlocks; + } + } + } + + private void writeSmallBlockDepotChain() throws IOException { + if (this.sbdStartBlockChain == -2) + return; + byte[] smallBlockDepotChain = new byte[this.numSmallBlockDepotChainBlocks * 512]; + int pos = 0; + int sbdBlockNumber = 1; + for (Iterator i = this.additionalPropertySets.iterator(); i.hasNext(); ) { + ReadPropertyStorage rps = i.next(); + if (rps.data.length <= 4096 && rps.data.length != 0) { + int numSmallBlocks = getSmallBlocksRequired(rps.data.length); + for (int j = 0; j < numSmallBlocks - 1; j++) { + IntegerHelper.getFourBytes(sbdBlockNumber, smallBlockDepotChain, pos); + pos += 4; + sbdBlockNumber++; + } + IntegerHelper.getFourBytes(-2, smallBlockDepotChain, pos); + pos += 4; + sbdBlockNumber++; + } + } + this.out.write(smallBlockDepotChain); + } + + private void writeSmallBlockDepot() throws IOException { + if (this.additionalPropertySets == null) + return; + byte[] smallBlockDepot = new byte[this.numSmallBlockDepotBlocks * 512]; + int pos = 0; + for (Iterator i = this.additionalPropertySets.iterator(); i.hasNext(); ) { + ReadPropertyStorage rps = i.next(); + if (rps.data.length <= 4096) { + int smallBlocks = getSmallBlocksRequired(rps.data.length); + int length = smallBlocks * 64; + System.arraycopy(rps.data, 0, smallBlockDepot, pos, rps.data.length); + pos += length; + } + } + this.out.write(smallBlockDepot); + } + + private void writeBigBlockDepot() throws IOException { + this.bigBlockDepot = new byte[512]; + this.bbdPos = 0; + for (int i = 0; i < this.numExtensionBlocks; i++) { + IntegerHelper.getFourBytes(-3, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + checkBbdPos(); + } + writeBlockChain(this.excelDataStartBlock, this.excelDataBlocks); + int summaryInfoBlock = this.excelDataStartBlock + this.excelDataBlocks + this.additionalPropertyBlocks; + int j; + for (j = summaryInfoBlock; j < summaryInfoBlock + 7; j++) { + IntegerHelper.getFourBytes(j + 1, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + checkBbdPos(); + } + IntegerHelper.getFourBytes(-2, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + checkBbdPos(); + for (j = summaryInfoBlock + 8; j < summaryInfoBlock + 15; j++) { + IntegerHelper.getFourBytes(j + 1, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + checkBbdPos(); + } + IntegerHelper.getFourBytes(-2, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + checkBbdPos(); + writeAdditionalPropertySetBlockChains(); + if (this.sbdStartBlock != -2) { + writeBlockChain(this.sbdStartBlock, this.numSmallBlockDepotBlocks); + writeBlockChain(this.sbdStartBlockChain, this.numSmallBlockDepotChainBlocks); + } + for (j = 0; j < this.numBigBlockDepotBlocks; j++) { + IntegerHelper.getFourBytes(-3, this.bigBlockDepot, this.bbdPos); + this.bbdPos += 4; + checkBbdPos(); + } + writeBlockChain(this.rootStartBlock, this.numRootEntryBlocks); + if (this.bbdPos != 0) { + for (j = this.bbdPos; j < 512; j++) + this.bigBlockDepot[j] = -1; + this.out.write(this.bigBlockDepot); + } + } + + private int getBigBlocksRequired(int length) { + int blocks = length / 512; + return (length % 512 > 0) ? (blocks + 1) : blocks; + } + + private int getSmallBlocksRequired(int length) { + int blocks = length / 64; + return (length % 64 > 0) ? (blocks + 1) : blocks; + } + + private void writePropertySets() throws IOException { + byte[] propertySetStorage = new byte[512 * this.numRootEntryBlocks]; + int pos = 0; + int[] mappings = null; + if (this.additionalPropertySets != null) { + mappings = new int[this.numPropertySets]; + for (int j = 0; j < STANDARD_PROPERTY_SETS.length; j++) { + ReadPropertyStorage rps = (ReadPropertyStorage)this.standardPropertySets.get(STANDARD_PROPERTY_SETS[j]); + if (rps != null) { + mappings[rps.number] = j; + } else { + logger.warn("Standard property set " + STANDARD_PROPERTY_SETS[j] + " not present in source file"); + } + } + int newMapping = STANDARD_PROPERTY_SETS.length; + for (Iterator iterator = this.additionalPropertySets.iterator(); iterator.hasNext(); ) { + ReadPropertyStorage rps = iterator.next(); + mappings[rps.number] = newMapping; + newMapping++; + } + } + int child = 0; + int previous = 0; + int next = 0; + int size = 0; + if (this.additionalPropertySets != null) { + size += getBigBlocksRequired(this.requiredSize) * 512; + size += getBigBlocksRequired(4096) * 512; + size += getBigBlocksRequired(4096) * 512; + for (Iterator iterator = this.additionalPropertySets.iterator(); iterator.hasNext(); ) { + ReadPropertyStorage rps = iterator.next(); + if (rps.propertyStorage.type != 1) { + if (rps.propertyStorage.size >= 4096) { + size += getBigBlocksRequired(rps.propertyStorage.size) * 512; + continue; + } + size += getSmallBlocksRequired(rps.propertyStorage.size) * 64; + } + } + } + BaseCompoundFile.PropertyStorage ps = new BaseCompoundFile.PropertyStorage(this, "Root Entry"); + ps.setType(5); + ps.setStartBlock(this.sbdStartBlock); + ps.setSize(size); + ps.setPrevious(-1); + ps.setNext(-1); + ps.setColour(0); + child = 1; + if (this.additionalPropertySets != null) { + ReadPropertyStorage rps = (ReadPropertyStorage)this.standardPropertySets.get("Root Entry"); + child = mappings[rps.propertyStorage.child]; + } + ps.setChild(child); + System.arraycopy(ps.data, 0, propertySetStorage, pos, 128); + pos += 128; + ps = new BaseCompoundFile.PropertyStorage(this, "Workbook"); + ps.setType(2); + ps.setStartBlock(this.excelDataStartBlock); + ps.setSize(this.requiredSize); + previous = 3; + next = -1; + if (this.additionalPropertySets != null) { + ReadPropertyStorage rps = (ReadPropertyStorage)this.standardPropertySets.get("Workbook"); + previous = (rps.propertyStorage.previous != -1) ? mappings[rps.propertyStorage.previous] : -1; + next = (rps.propertyStorage.next != -1) ? mappings[rps.propertyStorage.next] : -1; + } + ps.setPrevious(previous); + ps.setNext(next); + ps.setChild(-1); + System.arraycopy(ps.data, 0, propertySetStorage, pos, 128); + pos += 128; + ps = new BaseCompoundFile.PropertyStorage(this, "\005SummaryInformation"); + ps.setType(2); + ps.setStartBlock(this.excelDataStartBlock + this.excelDataBlocks); + ps.setSize(4096); + previous = 1; + next = 3; + if (this.additionalPropertySets != null) { + ReadPropertyStorage rps = (ReadPropertyStorage)this.standardPropertySets.get("\005SummaryInformation"); + if (rps != null) { + previous = (rps.propertyStorage.previous != -1) ? mappings[rps.propertyStorage.previous] : -1; + next = (rps.propertyStorage.next != -1) ? mappings[rps.propertyStorage.next] : -1; + } + } + ps.setPrevious(previous); + ps.setNext(next); + ps.setChild(-1); + System.arraycopy(ps.data, 0, propertySetStorage, pos, 128); + pos += 128; + ps = new BaseCompoundFile.PropertyStorage(this, "\005DocumentSummaryInformation"); + ps.setType(2); + ps.setStartBlock(this.excelDataStartBlock + this.excelDataBlocks + 8); + ps.setSize(4096); + ps.setPrevious(-1); + ps.setNext(-1); + ps.setChild(-1); + System.arraycopy(ps.data, 0, propertySetStorage, pos, 128); + pos += 128; + if (this.additionalPropertySets == null) { + this.out.write(propertySetStorage); + return; + } + int bigBlock = this.excelDataStartBlock + this.excelDataBlocks + 16; + int smallBlock = 0; + for (Iterator i = this.additionalPropertySets.iterator(); i.hasNext(); ) { + ReadPropertyStorage rps = i.next(); + int block = (rps.data.length > 4096) ? bigBlock : smallBlock; + ps = new BaseCompoundFile.PropertyStorage(this, rps.propertyStorage.name); + ps.setType(rps.propertyStorage.type); + ps.setStartBlock(block); + ps.setSize(rps.propertyStorage.size); + previous = (rps.propertyStorage.previous != -1) ? mappings[rps.propertyStorage.previous] : -1; + next = (rps.propertyStorage.next != -1) ? mappings[rps.propertyStorage.next] : -1; + child = (rps.propertyStorage.child != -1) ? mappings[rps.propertyStorage.child] : -1; + ps.setPrevious(previous); + ps.setNext(next); + ps.setChild(child); + System.arraycopy(ps.data, 0, propertySetStorage, pos, 128); + pos += 128; + if (rps.data.length > 4096) { + bigBlock += getBigBlocksRequired(rps.data.length); + continue; + } + smallBlock += getSmallBlocksRequired(rps.data.length); + } + this.out.write(propertySetStorage); + } +} diff --git a/hrmsEjb/jxl/write/biff/CopyAdditionalPropertySetsException.java b/hrmsEjb/jxl/write/biff/CopyAdditionalPropertySetsException.java new file mode 100644 index 0000000..1fd8b24 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CopyAdditionalPropertySetsException.java @@ -0,0 +1,7 @@ +package jxl.write.biff; + +public class CopyAdditionalPropertySetsException extends JxlWriteException { + public CopyAdditionalPropertySetsException() { + super(copyPropertySets); + } +} diff --git a/hrmsEjb/jxl/write/biff/CountryRecord.java b/hrmsEjb/jxl/write/biff/CountryRecord.java new file mode 100644 index 0000000..0336557 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/CountryRecord.java @@ -0,0 +1,31 @@ +package jxl.write.biff; + +import jxl.biff.CountryCode; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class CountryRecord extends WritableRecordData { + private int language; + + private int regionalSettings; + + public CountryRecord(CountryCode lang, CountryCode r) { + super(Type.COUNTRY); + this.language = lang.getValue(); + this.regionalSettings = r.getValue(); + } + + public CountryRecord(jxl.read.biff.CountryRecord cr) { + super(Type.COUNTRY); + this.language = cr.getLanguageCode(); + this.regionalSettings = cr.getRegionalSettingsCode(); + } + + public byte[] getData() { + byte[] data = new byte[4]; + IntegerHelper.getTwoBytes(this.language, data, 0); + IntegerHelper.getTwoBytes(this.regionalSettings, data, 2); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/DBCellRecord.java b/hrmsEjb/jxl/write/biff/DBCellRecord.java new file mode 100644 index 0000000..b4ff49f --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DBCellRecord.java @@ -0,0 +1,50 @@ +package jxl.write.biff; + +import java.util.ArrayList; +import java.util.Iterator; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class DBCellRecord extends WritableRecordData { + private int rowPos; + + private int cellOffset; + + private ArrayList cellRowPositions; + + private int position; + + public DBCellRecord(int rp) { + super(Type.DBCELL); + this.rowPos = rp; + this.cellRowPositions = new ArrayList(10); + } + + void setCellOffset(int pos) { + this.cellOffset = pos; + } + + void addCellRowPosition(int pos) { + this.cellRowPositions.add(new Integer(pos)); + } + + void setPosition(int pos) { + this.position = pos; + } + + protected byte[] getData() { + byte[] data = new byte[4 + 2 * this.cellRowPositions.size()]; + IntegerHelper.getFourBytes(this.position - this.rowPos, data, 0); + int pos = 4; + int lastCellPos = this.cellOffset; + Iterator i = this.cellRowPositions.iterator(); + while (i.hasNext()) { + int cellPos = ((Integer)i.next()).intValue(); + IntegerHelper.getTwoBytes(cellPos - lastCellPos, data, pos); + lastCellPos = cellPos; + pos += 2; + } + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/DSFRecord.java b/hrmsEjb/jxl/write/biff/DSFRecord.java new file mode 100644 index 0000000..90c15d5 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DSFRecord.java @@ -0,0 +1,17 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class DSFRecord extends WritableRecordData { + private byte[] data; + + public DSFRecord() { + super(Type.DSF); + this.data = new byte[] { 0, 0 }; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/DataValidation.java b/hrmsEjb/jxl/write/biff/DataValidation.java new file mode 100644 index 0000000..ef80ab1 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DataValidation.java @@ -0,0 +1,92 @@ +package jxl.write.biff; + +import common.Logger; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.read.biff.DataValiditySettingsRecord; + +public class DataValidation { + private static final Logger logger = Logger.getLogger(DataValidation.class); + + private DataValidityListRecord validityList; + + private ArrayList validitySettings; + + private int pos; + + private WritableWorkbookImpl workbook; + + private WorkbookSettings workbookSettings; + + DataValidation(jxl.read.biff.DataValidation dv, WritableWorkbookImpl w, WorkbookSettings ws) { + this.workbook = w; + this.workbookSettings = ws; + this.validityList = new DataValidityListRecord(dv.getDataValidityList()); + DataValiditySettingsRecord[] settings = dv.getDataValiditySettings(); + this.validitySettings = new ArrayList(settings.length); + for (int i = 0; i < settings.length; i++) + this.validitySettings.add(new DataValiditySettingsRecord(settings[i], this.workbook, this.workbookSettings)); + } + + DataValidation(DataValidation dv, WritableWorkbookImpl w, WorkbookSettings ws) { + this.workbook = w; + this.workbookSettings = ws; + this.validityList = new DataValidityListRecord(dv.validityList); + this.validitySettings = new ArrayList(dv.validitySettings.size()); + for (Iterator i = dv.validitySettings.iterator(); i.hasNext(); ) { + DataValiditySettingsRecord dvsr = i.next(); + this.validitySettings.add(new DataValiditySettingsRecord(dvsr, this.workbook, this.workbookSettings)); + } + } + + public void write(File outputFile) throws IOException { + if (!this.validityList.hasDVRecords()) + return; + outputFile.write((ByteData)this.validityList); + for (Iterator i = this.validitySettings.iterator(); i.hasNext(); ) { + DataValiditySettingsRecord dv = i.next(); + outputFile.write((ByteData)dv); + } + } + + public void insertRow(int row) { + for (Iterator i = this.validitySettings.iterator(); i.hasNext(); ) { + DataValiditySettingsRecord dv = i.next(); + dv.insertRow(row); + } + } + + public void removeRow(int row) { + for (Iterator i = this.validitySettings.iterator(); i.hasNext(); ) { + DataValiditySettingsRecord dv = i.next(); + if (dv.getFirstRow() == row && dv.getLastRow() == row) { + i.remove(); + this.validityList.dvRemoved(); + continue; + } + dv.removeRow(row); + } + } + + public void insertColumn(int col) { + for (Iterator i = this.validitySettings.iterator(); i.hasNext(); ) { + DataValiditySettingsRecord dv = i.next(); + dv.insertColumn(col); + } + } + + public void removeColumn(int col) { + for (Iterator i = this.validitySettings.iterator(); i.hasNext(); ) { + DataValiditySettingsRecord dv = i.next(); + if (dv.getFirstColumn() == col && dv.getLastColumn() == col) { + i.remove(); + this.validityList.dvRemoved(); + continue; + } + dv.removeColumn(col); + } + } +} diff --git a/hrmsEjb/jxl/write/biff/DataValidityListRecord.java b/hrmsEjb/jxl/write/biff/DataValidityListRecord.java new file mode 100644 index 0000000..0b8c47e --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DataValidityListRecord.java @@ -0,0 +1,40 @@ +package jxl.write.biff; + +import jxl.biff.DValParser; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class DataValidityListRecord extends WritableRecordData { + private byte[] data; + + private DValParser dvalParser; + + DataValidityListRecord(jxl.read.biff.DataValidityListRecord dvlr) { + super(Type.DVAL); + this.data = dvlr.getData(); + } + + DataValidityListRecord(DataValidityListRecord dvlr) { + super(Type.DVAL); + this.data = new byte[dvlr.data.length]; + System.arraycopy(dvlr.data, 0, this.data, 0, this.data.length); + } + + public byte[] getData() { + if (this.dvalParser == null) + return this.data; + return this.dvalParser.getData(); + } + + void dvRemoved() { + if (this.dvalParser == null) + this.dvalParser = new DValParser(this.data); + this.dvalParser.dvRemoved(); + } + + public boolean hasDVRecords() { + if (this.dvalParser == null) + return true; + return (this.dvalParser.getNumberOfDVRecords() > 0); + } +} diff --git a/hrmsEjb/jxl/write/biff/DataValiditySettingsRecord.java b/hrmsEjb/jxl/write/biff/DataValiditySettingsRecord.java new file mode 100644 index 0000000..1d2f835 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DataValiditySettingsRecord.java @@ -0,0 +1,99 @@ +package jxl.write.biff; + +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.DVParser; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.biff.formula.FormulaException; + +class DataValiditySettingsRecord extends WritableRecordData { + private static final Logger logger = Logger.getLogger(DataValiditySettingsRecord.class); + + private byte[] data; + + private DVParser dvParser; + + private WritableWorkbookImpl workbook; + + private WorkbookSettings workbookSettings; + + DataValiditySettingsRecord(jxl.read.biff.DataValiditySettingsRecord dvsr, WritableWorkbookImpl w, WorkbookSettings ws) { + super(Type.DV); + this.workbook = w; + this.workbookSettings = ws; + this.data = dvsr.getData(); + } + + DataValiditySettingsRecord(DataValiditySettingsRecord dvsr, WritableWorkbookImpl w, WorkbookSettings ws) { + super(Type.DV); + this.workbook = w; + this.workbookSettings = ws; + this.data = new byte[dvsr.data.length]; + System.arraycopy(dvsr.data, 0, this.data, 0, this.data.length); + } + + private void initialize() { + try { + if (this.dvParser == null) + this.dvParser = new DVParser(this.data, this.workbook, this.workbook, this.workbookSettings); + } catch (FormulaException e) { + logger.warn("Cannot read drop down range " + e.getMessage()); + e.printStackTrace(); + } + } + + public byte[] getData() { + if (this.dvParser == null) + return this.data; + return this.dvParser.getData(); + } + + public void insertRow(int row) { + if (this.dvParser == null) + initialize(); + this.dvParser.insertRow(row); + } + + public void removeRow(int row) { + if (this.dvParser == null) + initialize(); + this.dvParser.removeRow(row); + } + + public void insertColumn(int col) { + if (this.dvParser == null) + initialize(); + this.dvParser.insertColumn(col); + } + + public void removeColumn(int col) { + if (this.dvParser == null) + initialize(); + this.dvParser.removeColumn(col); + } + + public int getFirstColumn() { + if (this.dvParser == null) + initialize(); + return this.dvParser.getFirstColumn(); + } + + public int getLastColumn() { + if (this.dvParser == null) + initialize(); + return this.dvParser.getLastColumn(); + } + + public int getFirstRow() { + if (this.dvParser == null) + initialize(); + return this.dvParser.getFirstRow(); + } + + public int getLastRow() { + if (this.dvParser == null) + initialize(); + return this.dvParser.getLastRow(); + } +} diff --git a/hrmsEjb/jxl/write/biff/DateFormatRecord.java b/hrmsEjb/jxl/write/biff/DateFormatRecord.java new file mode 100644 index 0000000..ad56cf3 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DateFormatRecord.java @@ -0,0 +1,12 @@ +package jxl.write.biff; + +import jxl.biff.FormatRecord; + +public class DateFormatRecord extends FormatRecord { + protected DateFormatRecord(String fmt) { + String fs = fmt; + fs = replace(fs, "a", "AM/PM"); + fs = replace(fs, "S", "0"); + setFormatString(fs); + } +} diff --git a/hrmsEjb/jxl/write/biff/DateRecord.java b/hrmsEjb/jxl/write/biff/DateRecord.java new file mode 100644 index 0000000..c3e98f8 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DateRecord.java @@ -0,0 +1,131 @@ +package jxl.write.biff; + +import common.Logger; +import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; +import jxl.Cell; +import jxl.CellType; +import jxl.DateCell; +import jxl.biff.DoubleHelper; +import jxl.biff.Type; +import jxl.format.CellFormat; +import jxl.write.DateFormats; +import jxl.write.WritableCellFormat; + +public abstract class DateRecord extends CellValue { + private static Logger logger = Logger.getLogger(DateRecord.class); + + private double value; + + private Date date; + + private boolean time; + + private static final int utcOffsetDays = 25569; + + private static final long msInADay = 86400000L; + + static final WritableCellFormat defaultDateFormat = new WritableCellFormat(DateFormats.DEFAULT); + + private static final int nonLeapDay = 61; + + protected static final class GMTDate {} + + protected DateRecord(int c, int r, Date d) { + this(c, r, d, (CellFormat)defaultDateFormat, true); + } + + protected DateRecord(int c, int r, Date d, GMTDate a) { + this(c, r, d, (CellFormat)defaultDateFormat, false); + } + + protected DateRecord(int c, int r, Date d, CellFormat st) { + super(Type.NUMBER, c, r, st); + this.date = d; + calculateValue(true); + } + + protected DateRecord(int c, int r, Date d, CellFormat st, GMTDate a) { + super(Type.NUMBER, c, r, st); + this.date = d; + calculateValue(false); + } + + protected DateRecord(int c, int r, Date d, CellFormat st, boolean tim) { + super(Type.NUMBER, c, r, st); + this.date = d; + this.time = tim; + calculateValue(false); + } + + protected DateRecord(DateCell dc) { + super(Type.NUMBER, (Cell)dc); + this.date = dc.getDate(); + this.time = dc.isTime(); + calculateValue(false); + } + + protected DateRecord(int c, int r, DateRecord dr) { + super(Type.NUMBER, c, r, dr); + this.value = dr.value; + this.time = dr.time; + this.date = dr.date; + } + + private void calculateValue(boolean adjust) { + long zoneOffset = 0L; + long dstOffset = 0L; + if (adjust) { + Calendar cal = Calendar.getInstance(); + cal.setTime(this.date); + zoneOffset = cal.get(15); + dstOffset = cal.get(16); + } + long utcValue = this.date.getTime() + zoneOffset + dstOffset; + double utcDays = utcValue / 8.64E7D; + this.value = utcDays + 25569.0D; + if (!this.time && this.value < 61.0D) + this.value--; + if (this.time) + this.value -= (int)this.value; + } + + public CellType getType() { + return CellType.DATE; + } + + public byte[] getData() { + byte[] celldata = super.getData(); + byte[] data = new byte[celldata.length + 8]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + DoubleHelper.getIEEEBytes(this.value, data, celldata.length); + return data; + } + + public String getContents() { + return this.date.toString(); + } + + protected void setDate(Date d) { + this.date = d; + calculateValue(true); + } + + protected void setDate(Date d, GMTDate a) { + this.date = d; + calculateValue(false); + } + + public Date getDate() { + return this.date; + } + + public boolean isTime() { + return this.time; + } + + public DateFormat getDateFormat() { + return null; + } +} diff --git a/hrmsEjb/jxl/write/biff/DefaultColumnWidth.java b/hrmsEjb/jxl/write/biff/DefaultColumnWidth.java new file mode 100644 index 0000000..519853d --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DefaultColumnWidth.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class DefaultColumnWidth extends WritableRecordData { + private int width; + + private byte[] data; + + public DefaultColumnWidth(int w) { + super(Type.DEFCOLWIDTH); + this.width = w; + this.data = new byte[2]; + IntegerHelper.getTwoBytes(this.width, this.data, 0); + } + + protected byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/DefaultRowHeightRecord.java b/hrmsEjb/jxl/write/biff/DefaultRowHeightRecord.java new file mode 100644 index 0000000..fc494b6 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DefaultRowHeightRecord.java @@ -0,0 +1,27 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class DefaultRowHeightRecord extends WritableRecordData { + private byte[] data; + + private int rowHeight; + + private boolean changed; + + public DefaultRowHeightRecord(int h, boolean ch) { + super(Type.DEFAULTROWHEIGHT); + this.data = new byte[4]; + this.rowHeight = h; + this.changed = ch; + } + + public byte[] getData() { + if (this.changed) + this.data[0] = (byte)(this.data[0] | 0x1); + IntegerHelper.getTwoBytes(this.rowHeight, this.data, 2); + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/DeltaRecord.java b/hrmsEjb/jxl/write/biff/DeltaRecord.java new file mode 100644 index 0000000..7243f64 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DeltaRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.DoubleHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class DeltaRecord extends WritableRecordData { + private byte[] data; + + private double iterationValue; + + public DeltaRecord(double itval) { + super(Type.DELTA); + this.iterationValue = itval; + this.data = new byte[8]; + } + + public byte[] getData() { + DoubleHelper.getIEEEBytes(this.iterationValue, this.data, 0); + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/DimensionRecord.java b/hrmsEjb/jxl/write/biff/DimensionRecord.java new file mode 100644 index 0000000..347dbd4 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/DimensionRecord.java @@ -0,0 +1,26 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class DimensionRecord extends WritableRecordData { + private int numRows; + + private int numCols; + + private byte[] data; + + public DimensionRecord(int r, int c) { + super(Type.DIMENSION); + this.numRows = r; + this.numCols = c; + this.data = new byte[14]; + IntegerHelper.getFourBytes(this.numRows, this.data, 4); + IntegerHelper.getTwoBytes(this.numCols, this.data, 10); + } + + protected byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/EOFRecord.java b/hrmsEjb/jxl/write/biff/EOFRecord.java new file mode 100644 index 0000000..5c4f7e3 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/EOFRecord.java @@ -0,0 +1,14 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class EOFRecord extends WritableRecordData { + public EOFRecord() { + super(Type.EOF); + } + + public byte[] getData() { + return new byte[0]; + } +} diff --git a/hrmsEjb/jxl/write/biff/ExtendedSSTRecord.java b/hrmsEjb/jxl/write/biff/ExtendedSSTRecord.java new file mode 100644 index 0000000..5a759f3 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ExtendedSSTRecord.java @@ -0,0 +1,53 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class ExtendedSSTRecord extends WritableRecordData { + private static final int infoRecordSize = 8; + + private int numberOfStrings; + + private int[] absoluteStreamPositions; + + private int[] relativeStreamPositions; + + private int currentStringIndex = 0; + + public ExtendedSSTRecord(int newNumberOfStrings) { + super(Type.EXTSST); + this.numberOfStrings = newNumberOfStrings; + int numberOfBuckets = getNumberOfBuckets(); + this.absoluteStreamPositions = new int[numberOfBuckets]; + this.relativeStreamPositions = new int[numberOfBuckets]; + this.currentStringIndex = 0; + } + + public int getNumberOfBuckets() { + int numberOfStringsPerBucket = getNumberOfStringsPerBucket(); + return (numberOfStringsPerBucket != 0) ? ((this.numberOfStrings + numberOfStringsPerBucket - 1) / numberOfStringsPerBucket) : 0; + } + + public int getNumberOfStringsPerBucket() { + int bucketLimit = 128; + return (this.numberOfStrings + 128 - 1) / 128; + } + + public void addString(int absoluteStreamPosition, int relativeStreamPosition) { + this.absoluteStreamPositions[this.currentStringIndex] = absoluteStreamPosition + relativeStreamPosition; + this.relativeStreamPositions[this.currentStringIndex] = relativeStreamPosition; + this.currentStringIndex++; + } + + public byte[] getData() { + int numberOfBuckets = getNumberOfBuckets(); + byte[] data = new byte[2 + 8 * numberOfBuckets]; + IntegerHelper.getTwoBytes(getNumberOfStringsPerBucket(), data, 0); + for (int i = 0; i < numberOfBuckets; i++) { + IntegerHelper.getFourBytes(this.absoluteStreamPositions[i], data, 2 + i * 8); + IntegerHelper.getTwoBytes(this.relativeStreamPositions[i], data, 6 + i * 8); + } + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ExternalSheetRecord.java b/hrmsEjb/jxl/write/biff/ExternalSheetRecord.java new file mode 100644 index 0000000..9b22bea --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ExternalSheetRecord.java @@ -0,0 +1,126 @@ +package jxl.write.biff; + +import java.util.ArrayList; +import java.util.Iterator; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class ExternalSheetRecord extends WritableRecordData { + private byte[] data; + + private ArrayList xtis; + + private static class XTI { + int supbookIndex; + + int firstTab; + + int lastTab; + + XTI(int s, int f, int l) { + this.supbookIndex = s; + this.firstTab = f; + this.lastTab = l; + } + + void sheetInserted(int index) { + if (this.firstTab >= index) + this.firstTab++; + if (this.lastTab >= index) + this.lastTab++; + } + + void sheetRemoved(int index) { + if (this.firstTab == index) + this.firstTab = 0; + if (this.lastTab == index) + this.lastTab = 0; + if (this.firstTab > index) + this.firstTab--; + if (this.lastTab > index) + this.lastTab--; + } + } + + public ExternalSheetRecord(jxl.read.biff.ExternalSheetRecord esf) { + super(Type.EXTERNSHEET); + this.xtis = new ArrayList(esf.getNumRecords()); + XTI xti = null; + for (int i = 0; i < esf.getNumRecords(); i++) { + xti = new XTI(esf.getSupbookIndex(i), esf.getFirstTabIndex(i), esf.getLastTabIndex(i)); + this.xtis.add(xti); + } + } + + public ExternalSheetRecord() { + super(Type.EXTERNSHEET); + this.xtis = new ArrayList(); + } + + int getIndex(int supbookind, int sheetind) { + Iterator i = this.xtis.iterator(); + XTI xti = null; + boolean found = false; + int pos = 0; + while (i.hasNext() && !found) { + xti = i.next(); + if (xti.supbookIndex == supbookind && xti.firstTab == sheetind) { + found = true; + continue; + } + pos++; + } + if (!found) { + xti = new XTI(supbookind, sheetind, sheetind); + this.xtis.add(xti); + pos = this.xtis.size() - 1; + } + return pos; + } + + public byte[] getData() { + byte[] data = new byte[2 + this.xtis.size() * 6]; + int pos = 0; + IntegerHelper.getTwoBytes(this.xtis.size(), data, 0); + pos += 2; + Iterator i = this.xtis.iterator(); + XTI xti = null; + while (i.hasNext()) { + xti = i.next(); + IntegerHelper.getTwoBytes(xti.supbookIndex, data, pos); + IntegerHelper.getTwoBytes(xti.firstTab, data, pos + 2); + IntegerHelper.getTwoBytes(xti.lastTab, data, pos + 4); + pos += 6; + } + return data; + } + + public int getSupbookIndex(int index) { + return ((XTI)this.xtis.get(index)).supbookIndex; + } + + public int getFirstTabIndex(int index) { + return ((XTI)this.xtis.get(index)).firstTab; + } + + public int getLastTabIndex(int index) { + return ((XTI)this.xtis.get(index)).lastTab; + } + + void sheetInserted(int index) { + XTI xti = null; + for (Iterator i = this.xtis.iterator(); i.hasNext(); ) { + xti = i.next(); + xti.sheetInserted(index); + } + } + + void sheetRemoved(int index) { + XTI xti = null; + for (Iterator i = this.xtis.iterator(); i.hasNext(); ) { + xti = i.next(); + xti.sheetRemoved(index); + } + } +} diff --git a/hrmsEjb/jxl/write/biff/File.java b/hrmsEjb/jxl/write/biff/File.java new file mode 100644 index 0000000..c264e46 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/File.java @@ -0,0 +1,79 @@ +package jxl.write.biff; + +import common.Logger; +import java.io.IOException; +import java.io.OutputStream; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.read.biff.CompoundFile; + +public final class File { + private static Logger logger = Logger.getLogger(File.class); + + private byte[] data; + + private int pos; + + private OutputStream outputStream; + + private int initialFileSize; + + private int arrayGrowSize; + + private WorkbookSettings workbookSettings; + + CompoundFile readCompoundFile; + + File(OutputStream os, WorkbookSettings ws, CompoundFile rcf) { + this.initialFileSize = ws.getInitialFileSize(); + this.arrayGrowSize = ws.getArrayGrowSize(); + this.data = new byte[this.initialFileSize]; + this.pos = 0; + this.outputStream = os; + this.workbookSettings = ws; + this.readCompoundFile = rcf; + } + + void close(boolean cs) throws IOException, JxlWriteException { + CompoundFile cf = new CompoundFile(this.data, this.pos, this.outputStream, this.readCompoundFile); + cf.write(); + this.outputStream.flush(); + if (cs) + this.outputStream.close(); + this.data = null; + if (!this.workbookSettings.getGCDisabled()) + System.gc(); + } + + public void write(ByteData record) throws IOException { + try { + byte[] bytes = record.getBytes(); + while (this.pos + bytes.length > this.data.length) { + byte[] newdata = new byte[this.data.length + this.arrayGrowSize]; + System.arraycopy(this.data, 0, newdata, 0, this.pos); + this.data = newdata; + } + System.arraycopy(bytes, 0, this.data, this.pos, bytes.length); + this.pos += bytes.length; + } catch (Throwable t) { + t.printStackTrace(); + throw new RuntimeException(t); + } + } + + int getPos() { + return this.pos; + } + + void setData(byte[] newdata, int pos) { + System.arraycopy(newdata, 0, this.data, pos, newdata.length); + } + + public void setOutputFile(OutputStream os) { + if (this.data != null) + logger.warn("Rewriting a workbook with non-empty data"); + this.outputStream = os; + this.data = new byte[this.initialFileSize]; + this.pos = 0; + } +} diff --git a/hrmsEjb/jxl/write/biff/FooterRecord.java b/hrmsEjb/jxl/write/biff/FooterRecord.java new file mode 100644 index 0000000..94a00ee --- /dev/null +++ b/hrmsEjb/jxl/write/biff/FooterRecord.java @@ -0,0 +1,34 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class FooterRecord extends WritableRecordData { + private byte[] data; + + private String footer; + + public FooterRecord(String s) { + super(Type.FOOTER); + this.footer = s; + } + + public FooterRecord(FooterRecord fr) { + super(Type.FOOTER); + this.footer = fr.footer; + } + + public byte[] getData() { + if (this.footer == null || this.footer.length() == 0) { + this.data = new byte[0]; + return this.data; + } + this.data = new byte[this.footer.length() * 2 + 3]; + IntegerHelper.getTwoBytes(this.footer.length(), this.data, 0); + this.data[2] = 1; + StringHelper.getUnicodeBytes(this.footer, this.data, 3); + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/FormulaRecord.java b/hrmsEjb/jxl/write/biff/FormulaRecord.java new file mode 100644 index 0000000..f832606 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/FormulaRecord.java @@ -0,0 +1,168 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import jxl.Cell; +import jxl.CellReferenceHelper; +import jxl.CellType; +import jxl.Sheet; +import jxl.WorkbookSettings; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WorkbookMethods; +import jxl.biff.formula.ExternalSheet; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; +import jxl.format.CellFormat; +import jxl.write.WritableCell; + +public class FormulaRecord extends CellValue implements FormulaData { + private static Logger logger = Logger.getLogger(FormulaRecord.class); + + private String formulaToParse; + + private FormulaParser parser; + + private String formulaString; + + private byte[] formulaBytes; + + private CellValue copiedFrom; + + public FormulaRecord(int c, int r, String f) { + super(Type.FORMULA2, c, r); + this.formulaToParse = f; + this.copiedFrom = null; + } + + public FormulaRecord(int c, int r, String f, CellFormat st) { + super(Type.FORMULA, c, r, st); + this.formulaToParse = f; + this.copiedFrom = null; + } + + protected FormulaRecord(int c, int r, FormulaRecord fr) { + super(Type.FORMULA, c, r, fr); + this.copiedFrom = fr; + this.formulaBytes = new byte[fr.formulaBytes.length]; + System.arraycopy(fr.formulaBytes, 0, this.formulaBytes, 0, this.formulaBytes.length); + } + + protected FormulaRecord(int c, int r, ReadFormulaRecord rfr) { + super(Type.FORMULA, c, r, rfr); + try { + this.copiedFrom = rfr; + byte[] readFormulaData = rfr.getFormulaData(); + this.formulaBytes = new byte[readFormulaData.length - 16]; + System.arraycopy(readFormulaData, 16, this.formulaBytes, 0, this.formulaBytes.length); + } catch (FormulaException e) { + logger.error("", (Throwable)e); + } + } + + private void initialize(WorkbookSettings ws, ExternalSheet es, WorkbookMethods nt) { + if (this.copiedFrom != null) { + initializeCopiedFormula(ws, es, nt); + return; + } + this.parser = new FormulaParser(this.formulaToParse, es, nt, ws); + try { + this.parser.parse(); + this.formulaString = this.parser.getFormula(); + this.formulaBytes = this.parser.getBytes(); + } catch (FormulaException e) { + logger.warn(e.getMessage() + " when parsing formula " + this.formulaToParse + " in cell " + getSheet().getName() + "!" + CellReferenceHelper.getCellReference(getColumn(), getRow())); + try { + this.formulaToParse = "ERROR(1)"; + this.parser = new FormulaParser(this.formulaToParse, es, nt, ws); + this.parser.parse(); + this.formulaString = this.parser.getFormula(); + this.formulaBytes = this.parser.getBytes(); + } catch (FormulaException e2) { + logger.error("", (Throwable)e2); + } + } + } + + private void initializeCopiedFormula(WorkbookSettings ws, ExternalSheet es, WorkbookMethods nt) { + try { + this.parser = new FormulaParser(this.formulaBytes, (Cell)this, es, nt, ws); + this.parser.parse(); + this.parser.adjustRelativeCellReferences(getColumn() - this.copiedFrom.getColumn(), getRow() - this.copiedFrom.getRow()); + this.formulaString = this.parser.getFormula(); + this.formulaBytes = this.parser.getBytes(); + } catch (FormulaException e) { + try { + this.formulaToParse = "ERROR(1)"; + this.parser = new FormulaParser(this.formulaToParse, es, nt, ws); + this.parser.parse(); + this.formulaString = this.parser.getFormula(); + this.formulaBytes = this.parser.getBytes(); + } catch (FormulaException e2) { + logger.error("", (Throwable)e2); + } + } + } + + void setCellDetails(FormattingRecords fr, SharedStrings ss, WritableSheetImpl s) { + super.setCellDetails(fr, ss, s); + initialize(s.getWorkbookSettings(), s.getWorkbook(), s.getWorkbook()); + s.getWorkbook().addRCIRCell(this); + } + + public byte[] getData() { + byte[] celldata = super.getData(); + byte[] formulaData = getFormulaData(); + byte[] data = new byte[formulaData.length + celldata.length]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + System.arraycopy(formulaData, 0, data, celldata.length, formulaData.length); + return data; + } + + public CellType getType() { + return CellType.ERROR; + } + + public String getContents() { + return this.formulaString; + } + + public byte[] getFormulaData() { + byte[] data = new byte[this.formulaBytes.length + 16]; + System.arraycopy(this.formulaBytes, 0, data, 16, this.formulaBytes.length); + data[6] = 16; + data[7] = 64; + data[12] = -32; + data[13] = -4; + data[8] = (byte)(data[8] | 0x2); + IntegerHelper.getTwoBytes(this.formulaBytes.length, data, 14); + return data; + } + + public WritableCell copyTo(int col, int row) { + Assert.verify(false); + return null; + } + + void columnInserted(Sheet s, int sheetIndex, int col) { + this.parser.columnInserted(sheetIndex, col, (s == getSheet())); + this.formulaBytes = this.parser.getBytes(); + } + + void columnRemoved(Sheet s, int sheetIndex, int col) { + this.parser.columnRemoved(sheetIndex, col, (s == getSheet())); + this.formulaBytes = this.parser.getBytes(); + } + + void rowInserted(Sheet s, int sheetIndex, int row) { + this.parser.rowInserted(sheetIndex, row, (s == getSheet())); + this.formulaBytes = this.parser.getBytes(); + } + + void rowRemoved(Sheet s, int sheetIndex, int row) { + this.parser.rowRemoved(sheetIndex, row, (s == getSheet())); + this.formulaBytes = this.parser.getBytes(); + } +} diff --git a/hrmsEjb/jxl/write/biff/FunctionGroupCountRecord.java b/hrmsEjb/jxl/write/biff/FunctionGroupCountRecord.java new file mode 100644 index 0000000..46f4d0b --- /dev/null +++ b/hrmsEjb/jxl/write/biff/FunctionGroupCountRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class FunctionGroupCountRecord extends WritableRecordData { + private byte[] data; + + private int numFunctionGroups; + + public FunctionGroupCountRecord() { + super(Type.FNGROUPCOUNT); + this.numFunctionGroups = 14; + this.data = new byte[2]; + IntegerHelper.getTwoBytes(this.numFunctionGroups, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/GridSetRecord.java b/hrmsEjb/jxl/write/biff/GridSetRecord.java new file mode 100644 index 0000000..0d0c24b --- /dev/null +++ b/hrmsEjb/jxl/write/biff/GridSetRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class GridSetRecord extends WritableRecordData { + private byte[] data; + + private boolean gridSet; + + public GridSetRecord(boolean gs) { + super(Type.GRIDSET); + this.gridSet = gs; + this.data = new byte[2]; + if (this.gridSet) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/GuttersRecord.java b/hrmsEjb/jxl/write/biff/GuttersRecord.java new file mode 100644 index 0000000..73a60ff --- /dev/null +++ b/hrmsEjb/jxl/write/biff/GuttersRecord.java @@ -0,0 +1,30 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class GuttersRecord extends WritableRecordData { + private byte[] data; + + private int rowGutter; + + private int colGutter; + + private int maxRowOutline; + + private int maxColOutline; + + public GuttersRecord() { + super(Type.GUTS); + } + + public byte[] getData() { + this.data = new byte[8]; + IntegerHelper.getTwoBytes(this.rowGutter, this.data, 0); + IntegerHelper.getTwoBytes(this.colGutter, this.data, 2); + IntegerHelper.getTwoBytes(this.maxRowOutline, this.data, 4); + IntegerHelper.getTwoBytes(this.maxColOutline, this.data, 6); + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/HeaderRecord.java b/hrmsEjb/jxl/write/biff/HeaderRecord.java new file mode 100644 index 0000000..55c85db --- /dev/null +++ b/hrmsEjb/jxl/write/biff/HeaderRecord.java @@ -0,0 +1,34 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class HeaderRecord extends WritableRecordData { + private byte[] data; + + private String header; + + public HeaderRecord(String h) { + super(Type.HEADER); + this.header = h; + } + + public HeaderRecord(HeaderRecord hr) { + super(Type.HEADER); + this.header = hr.header; + } + + public byte[] getData() { + if (this.header == null || this.header.length() == 0) { + this.data = new byte[0]; + return this.data; + } + this.data = new byte[this.header.length() * 2 + 3]; + IntegerHelper.getTwoBytes(this.header.length(), this.data, 0); + this.data[2] = 1; + StringHelper.getUnicodeBytes(this.header, this.data, 3); + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/HideobjRecord.java b/hrmsEjb/jxl/write/biff/HideobjRecord.java new file mode 100644 index 0000000..b862964 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/HideobjRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class HideobjRecord extends WritableRecordData { + private boolean hideAll; + + private byte[] data; + + public HideobjRecord(boolean hide) { + super(Type.HIDEOBJ); + this.hideAll = hide; + this.data = new byte[2]; + if (this.hideAll) + IntegerHelper.getTwoBytes(2, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/HorizontalCentreRecord.java b/hrmsEjb/jxl/write/biff/HorizontalCentreRecord.java new file mode 100644 index 0000000..e05152d --- /dev/null +++ b/hrmsEjb/jxl/write/biff/HorizontalCentreRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class HorizontalCentreRecord extends WritableRecordData { + private byte[] data; + + private boolean centre; + + public HorizontalCentreRecord(boolean ce) { + super(Type.HCENTER); + this.centre = ce; + this.data = new byte[2]; + if (this.centre) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/HorizontalPageBreaksRecord.java b/hrmsEjb/jxl/write/biff/HorizontalPageBreaksRecord.java new file mode 100644 index 0000000..14ff5e5 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/HorizontalPageBreaksRecord.java @@ -0,0 +1,26 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class HorizontalPageBreaksRecord extends WritableRecordData { + private int[] rowBreaks; + + public HorizontalPageBreaksRecord(int[] breaks) { + super(Type.HORIZONTALPAGEBREAKS); + this.rowBreaks = breaks; + } + + public byte[] getData() { + byte[] data = new byte[this.rowBreaks.length * 6 + 2]; + IntegerHelper.getTwoBytes(this.rowBreaks.length, data, 0); + int pos = 2; + for (int i = 0; i < this.rowBreaks.length; i++) { + IntegerHelper.getTwoBytes(this.rowBreaks[i], data, pos); + IntegerHelper.getTwoBytes(255, data, pos + 4); + pos += 6; + } + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/HyperlinkRecord.java b/hrmsEjb/jxl/write/biff/HyperlinkRecord.java new file mode 100644 index 0000000..cb0acfd --- /dev/null +++ b/hrmsEjb/jxl/write/biff/HyperlinkRecord.java @@ -0,0 +1,558 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import jxl.CellType; +import jxl.Hyperlink; +import jxl.Range; +import jxl.Sheet; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IntegerHelper; +import jxl.biff.SheetRangeImpl; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.write.Label; +import jxl.write.WritableCell; +import jxl.write.WritableSheet; + +public class HyperlinkRecord extends WritableRecordData { + private static Logger logger = Logger.getLogger(HyperlinkRecord.class); + + private int firstRow; + + private int lastRow; + + private int firstColumn; + + private int lastColumn; + + private URL url; + + private File file; + + private String location; + + private String contents; + + private LinkType linkType; + + private byte[] data; + + private Range range; + + private WritableSheet sheet; + + private boolean modified; + + private static class LinkType { + private LinkType() {} + } + + private static final LinkType urlLink = new LinkType(); + + private static final LinkType fileLink = new LinkType(); + + private static final LinkType uncLink = new LinkType(); + + private static final LinkType workbookLink = new LinkType(); + + private static final LinkType unknown = new LinkType(); + + protected HyperlinkRecord(Hyperlink h, WritableSheet s) { + super(Type.HLINK); + Assert.verify(h instanceof jxl.read.biff.HyperlinkRecord); + jxl.read.biff.HyperlinkRecord hl = (jxl.read.biff.HyperlinkRecord)h; + this.data = hl.getRecord().getData(); + this.sheet = s; + this.firstRow = hl.getRow(); + this.firstColumn = hl.getColumn(); + this.lastRow = hl.getLastRow(); + this.lastColumn = hl.getLastColumn(); + this.range = (Range)new SheetRangeImpl((Sheet)s, this.firstColumn, this.firstRow, this.lastColumn, this.lastRow); + this.linkType = unknown; + if (hl.isFile()) { + this.linkType = fileLink; + this.file = hl.getFile(); + } else if (hl.isURL()) { + this.linkType = urlLink; + this.url = hl.getURL(); + } else if (hl.isLocation()) { + this.linkType = workbookLink; + this.location = hl.getLocation(); + } + this.modified = false; + } + + protected HyperlinkRecord(int col, int row, int lastcol, int lastrow, URL url, String desc) { + super(Type.HLINK); + this.firstColumn = col; + this.firstRow = row; + this.lastColumn = Math.max(this.firstColumn, lastcol); + this.lastRow = Math.max(this.firstRow, lastrow); + this.url = url; + this.contents = desc; + this.linkType = urlLink; + this.modified = true; + } + + protected HyperlinkRecord(int col, int row, int lastcol, int lastrow, File file, String desc) { + super(Type.HLINK); + this.firstColumn = col; + this.firstRow = row; + this.lastColumn = Math.max(this.firstColumn, lastcol); + this.lastRow = Math.max(this.firstRow, lastrow); + this.contents = desc; + this.file = file; + if (file.getPath().startsWith("\\\\")) { + this.linkType = uncLink; + } else { + this.linkType = fileLink; + } + this.modified = true; + } + + protected HyperlinkRecord(int col, int row, int lastcol, int lastrow, String desc, WritableSheet s, int destcol, int destrow, int lastdestcol, int lastdestrow) { + super(Type.HLINK); + this.firstColumn = col; + this.firstRow = row; + this.lastColumn = Math.max(this.firstColumn, lastcol); + this.lastRow = Math.max(this.firstRow, lastrow); + setLocation(s, destcol, destrow, lastdestcol, lastdestrow); + this.contents = desc; + this.linkType = workbookLink; + this.modified = true; + } + + public boolean isFile() { + return (this.linkType == fileLink); + } + + public boolean isUNC() { + return (this.linkType == uncLink); + } + + public boolean isURL() { + return (this.linkType == urlLink); + } + + public boolean isLocation() { + return (this.linkType == workbookLink); + } + + public int getRow() { + return this.firstRow; + } + + public int getColumn() { + return this.firstColumn; + } + + public int getLastRow() { + return this.lastRow; + } + + public int getLastColumn() { + return this.lastColumn; + } + + public URL getURL() { + return this.url; + } + + public File getFile() { + return this.file; + } + + public byte[] getData() { + if (!this.modified) + return this.data; + byte[] commonData = new byte[32]; + IntegerHelper.getTwoBytes(this.firstRow, commonData, 0); + IntegerHelper.getTwoBytes(this.lastRow, commonData, 2); + IntegerHelper.getTwoBytes(this.firstColumn, commonData, 4); + IntegerHelper.getTwoBytes(this.lastColumn, commonData, 6); + commonData[8] = -48; + commonData[9] = -55; + commonData[10] = -22; + commonData[11] = 121; + commonData[12] = -7; + commonData[13] = -70; + commonData[14] = -50; + commonData[15] = 17; + commonData[16] = -116; + commonData[17] = -126; + commonData[18] = 0; + commonData[19] = -86; + commonData[20] = 0; + commonData[21] = 75; + commonData[22] = -87; + commonData[23] = 11; + commonData[24] = 2; + commonData[25] = 0; + commonData[26] = 0; + commonData[27] = 0; + int optionFlags = 0; + if (isURL()) { + optionFlags = 3; + if (this.contents != null) + optionFlags |= 0x14; + } else if (isFile()) { + optionFlags = 3; + if (this.contents == null) + optionFlags |= 0x14; + } else if (isLocation()) { + optionFlags = 8; + } else if (isUNC()) { + optionFlags = 259; + } + IntegerHelper.getFourBytes(optionFlags, commonData, 28); + if (isURL()) { + this.data = getURLData(commonData); + } else if (isFile()) { + this.data = getFileData(commonData); + } else if (isLocation()) { + this.data = getLocationData(commonData); + } else if (isUNC()) { + this.data = getUNCData(commonData); + } + return this.data; + } + + public String toString() { + if (isFile()) + return this.file.toString(); + if (isURL()) + return this.url.toString(); + if (isUNC()) + return this.file.toString(); + return ""; + } + + public Range getRange() { + return this.range; + } + + public void setURL(URL url) { + this.linkType = urlLink; + this.file = null; + this.location = null; + this.contents = null; + this.url = url; + this.modified = true; + if (this.sheet == null) + return; + WritableCell wc = this.sheet.getWritableCell(this.firstColumn, this.firstRow); + Assert.verify((wc.getType() == CellType.LABEL)); + Label l = (Label)wc; + l.setString(url.toString()); + } + + public void setFile(File file) { + this.linkType = fileLink; + this.url = null; + this.location = null; + this.contents = null; + this.file = file; + this.modified = true; + if (this.sheet == null) + return; + WritableCell wc = this.sheet.getWritableCell(this.firstColumn, this.firstRow); + Assert.verify((wc.getType() == CellType.LABEL)); + Label l = (Label)wc; + l.setString(file.toString()); + } + + protected void setLocation(String desc, WritableSheet sheet, int destcol, int destrow, int lastdestcol, int lastdestrow) { + this.linkType = workbookLink; + this.url = null; + this.file = null; + this.modified = true; + this.contents = desc; + setLocation(sheet, destcol, destrow, lastdestcol, lastdestrow); + if (sheet == null) + return; + WritableCell wc = sheet.getWritableCell(this.firstColumn, this.firstRow); + Assert.verify((wc.getType() == CellType.LABEL)); + Label l = (Label)wc; + l.setString(desc); + } + + private void setLocation(WritableSheet sheet, int destcol, int destrow, int lastdestcol, int lastdestrow) { + StringBuffer sb = new StringBuffer(); + sb.append('\''); + if (sheet.getName().indexOf('\'') == -1) { + sb.append(sheet.getName()); + } else { + String sheetName = sheet.getName(); + int pos = 0; + int nextPos = sheetName.indexOf('\'', pos); + while (nextPos != -1 && pos < sheetName.length()) { + sb.append(sheetName.substring(pos, nextPos)); + sb.append("''"); + pos = nextPos + 1; + nextPos = sheetName.indexOf('\'', pos); + } + sb.append(sheetName.substring(pos)); + } + sb.append('\''); + sb.append('!'); + lastdestcol = Math.max(destcol, lastdestcol); + lastdestrow = Math.max(destrow, lastdestrow); + CellReferenceHelper.getCellReference(destcol, destrow, sb); + sb.append(':'); + CellReferenceHelper.getCellReference(lastdestcol, lastdestrow, sb); + this.location = sb.toString(); + } + + void insertRow(int r) { + Assert.verify((this.sheet != null && this.range != null)); + if (r > this.lastRow) + return; + if (r <= this.firstRow) { + this.firstRow++; + this.modified = true; + } + if (r <= this.lastRow) { + this.lastRow++; + this.modified = true; + } + if (this.modified) + this.range = (Range)new SheetRangeImpl((Sheet)this.sheet, this.firstColumn, this.firstRow, this.lastColumn, this.lastRow); + } + + void insertColumn(int c) { + Assert.verify((this.sheet != null && this.range != null)); + if (c > this.lastColumn) + return; + if (c <= this.firstColumn) { + this.firstColumn++; + this.modified = true; + } + if (c <= this.lastColumn) { + this.lastColumn++; + this.modified = true; + } + if (this.modified) + this.range = (Range)new SheetRangeImpl((Sheet)this.sheet, this.firstColumn, this.firstRow, this.lastColumn, this.lastRow); + } + + void removeRow(int r) { + Assert.verify((this.sheet != null && this.range != null)); + if (r > this.lastRow) + return; + if (r < this.firstRow) { + this.firstRow--; + this.modified = true; + } + if (r < this.lastRow) { + this.lastRow--; + this.modified = true; + } + if (this.modified) { + Assert.verify((this.range != null)); + this.range = (Range)new SheetRangeImpl((Sheet)this.sheet, this.firstColumn, this.firstRow, this.lastColumn, this.lastRow); + } + } + + void removeColumn(int c) { + Assert.verify((this.sheet != null && this.range != null)); + if (c > this.lastColumn) + return; + if (c < this.firstColumn) { + this.firstColumn--; + this.modified = true; + } + if (c < this.lastColumn) { + this.lastColumn--; + this.modified = true; + } + if (this.modified) { + Assert.verify((this.range != null)); + this.range = (Range)new SheetRangeImpl((Sheet)this.sheet, this.firstColumn, this.firstRow, this.lastColumn, this.lastRow); + } + } + + private byte[] getURLData(byte[] cd) { + String urlString = this.url.toString(); + int dataLength = cd.length + 20 + (urlString.length() + 1) * 2; + if (this.contents != null) + dataLength += 4 + (this.contents.length() + 1) * 2; + byte[] d = new byte[dataLength]; + System.arraycopy(cd, 0, d, 0, cd.length); + int urlPos = cd.length; + if (this.contents != null) { + IntegerHelper.getFourBytes(this.contents.length() + 1, d, urlPos); + StringHelper.getUnicodeBytes(this.contents, d, urlPos + 4); + urlPos += (this.contents.length() + 1) * 2 + 4; + } + d[urlPos] = -32; + d[urlPos + 1] = -55; + d[urlPos + 2] = -22; + d[urlPos + 3] = 121; + d[urlPos + 4] = -7; + d[urlPos + 5] = -70; + d[urlPos + 6] = -50; + d[urlPos + 7] = 17; + d[urlPos + 8] = -116; + d[urlPos + 9] = -126; + d[urlPos + 10] = 0; + d[urlPos + 11] = -86; + d[urlPos + 12] = 0; + d[urlPos + 13] = 75; + d[urlPos + 14] = -87; + d[urlPos + 15] = 11; + IntegerHelper.getFourBytes((urlString.length() + 1) * 2, d, urlPos + 16); + StringHelper.getUnicodeBytes(urlString, d, urlPos + 20); + return d; + } + + private byte[] getUNCData(byte[] cd) { + String uncString = this.file.getPath(); + byte[] d = new byte[cd.length + uncString.length() * 2 + 2 + 4]; + System.arraycopy(cd, 0, d, 0, cd.length); + int urlPos = cd.length; + int length = uncString.length() + 1; + IntegerHelper.getFourBytes(length, d, urlPos); + StringHelper.getUnicodeBytes(uncString, d, urlPos + 4); + return d; + } + + private byte[] getFileData(byte[] cd) { + ArrayList path = new ArrayList(); + ArrayList shortFileName = new ArrayList(); + path.add(this.file.getName()); + shortFileName.add(getShortName(this.file.getName())); + File parent = this.file.getParentFile(); + while (parent != null) { + path.add(parent.getName()); + shortFileName.add(getShortName(parent.getName())); + parent = parent.getParentFile(); + } + int upLevelCount = 0; + int pos = path.size() - 1; + boolean upDir = true; + while (upDir) { + String s = path.get(pos); + if (s.equals("..")) { + upLevelCount++; + path.remove(pos); + shortFileName.remove(pos); + } else { + upDir = false; + } + pos--; + } + StringBuffer filePathSB = new StringBuffer(); + StringBuffer shortFilePathSB = new StringBuffer(); + if (this.file.getPath().charAt(1) == ':') { + char driveLetter = this.file.getPath().charAt(0); + if (driveLetter != 'C' && driveLetter != 'c') { + filePathSB.append(driveLetter); + filePathSB.append(':'); + shortFilePathSB.append(driveLetter); + shortFilePathSB.append(':'); + } + } + for (int i = path.size() - 1; i >= 0; i--) { + filePathSB.append(path.get(i)); + shortFilePathSB.append(shortFileName.get(i)); + if (i != 0) { + filePathSB.append("\\"); + shortFilePathSB.append("\\"); + } + } + String filePath = filePathSB.toString(); + String shortFilePath = shortFilePathSB.toString(); + int dataLength = cd.length + 4 + (shortFilePath.length() + 1) * 2 + 16 + 2 + 4 + filePath.length() + 1 + 4 + 24; + if (this.contents != null) + dataLength += 4 + (this.contents.length() + 1) * 2; + byte[] d = new byte[dataLength]; + System.arraycopy(cd, 0, d, 0, cd.length); + int filePos = cd.length; + if (this.contents != null) { + IntegerHelper.getFourBytes(this.contents.length() + 1, d, filePos); + StringHelper.getUnicodeBytes(this.contents, d, filePos + 4); + filePos += (this.contents.length() + 1) * 2 + 4; + } + int curPos = filePos; + IntegerHelper.getFourBytes(shortFilePath.length() + 1, d, curPos); + StringHelper.getUnicodeBytes(shortFilePath, d, curPos + 4); + curPos += 4 + (shortFilePath.length() + 1) * 2; + d[curPos] = 3; + d[curPos + 1] = 3; + d[curPos + 2] = 0; + d[curPos + 3] = 0; + d[curPos + 4] = 0; + d[curPos + 5] = 0; + d[curPos + 6] = 0; + d[curPos + 7] = 0; + d[curPos + 8] = -64; + d[curPos + 9] = 0; + d[curPos + 10] = 0; + d[curPos + 11] = 0; + d[curPos + 12] = 0; + d[curPos + 13] = 0; + d[curPos + 14] = 0; + d[curPos + 15] = 70; + curPos += 16; + IntegerHelper.getTwoBytes(upLevelCount, d, curPos); + curPos += 2; + IntegerHelper.getFourBytes(filePath.length() + 1, d, curPos); + curPos += 4; + StringHelper.getBytes(filePath, d, curPos); + curPos += filePath.length() + 1; + d[curPos] = -1; + d[curPos + 1] = -1; + d[curPos + 2] = -83; + d[curPos + 3] = -34; + return d; + } + + private String getShortName(String s) { + int sep = s.indexOf('.'); + String prefix = null; + String suffix = null; + if (sep == -1) { + prefix = s; + suffix = ""; + } else { + prefix = s.substring(0, sep); + suffix = s.substring(sep + 1); + } + if (prefix.length() > 8) { + prefix = prefix.substring(0, 6) + "~" + (prefix.length() - 6); + prefix = prefix.substring(0, 8); + } + suffix = suffix.substring(0, Math.min(3, suffix.length())); + if (suffix.length() > 0) + return prefix + '.' + suffix; + return prefix; + } + + private byte[] getLocationData(byte[] cd) { + byte[] d = new byte[cd.length + 4 + (this.location.length() + 1) * 2]; + System.arraycopy(cd, 0, d, 0, cd.length); + int locPos = cd.length; + IntegerHelper.getFourBytes(this.location.length() + 1, d, locPos); + StringHelper.getUnicodeBytes(this.location, d, locPos + 4); + return d; + } + + void initialize(WritableSheet s) { + this.sheet = s; + this.range = (Range)new SheetRangeImpl((Sheet)s, this.firstColumn, this.firstRow, this.lastColumn, this.lastRow); + } + + String getContents() { + return this.contents; + } + + protected void setContents(String desc) { + this.contents = desc; + this.modified = true; + } +} diff --git a/hrmsEjb/jxl/write/biff/IndexRecord.java b/hrmsEjb/jxl/write/biff/IndexRecord.java new file mode 100644 index 0000000..2328819 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/IndexRecord.java @@ -0,0 +1,40 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class IndexRecord extends WritableRecordData { + private byte[] data; + + private int rows; + + private int bofPosition; + + private int blocks; + + private int dataPos; + + public IndexRecord(int pos, int r, int bl) { + super(Type.INDEX); + this.bofPosition = pos; + this.rows = r; + this.blocks = bl; + this.data = new byte[16 + 4 * this.blocks]; + this.dataPos = 16; + } + + protected byte[] getData() { + IntegerHelper.getFourBytes(this.rows, this.data, 8); + return this.data; + } + + void addBlockPosition(int pos) { + IntegerHelper.getFourBytes(pos - this.bofPosition, this.data, this.dataPos); + this.dataPos += 4; + } + + void setDataStartPosition(int pos) { + IntegerHelper.getFourBytes(pos - this.bofPosition, this.data, 12); + } +} diff --git a/hrmsEjb/jxl/write/biff/InterfaceEndRecord.java b/hrmsEjb/jxl/write/biff/InterfaceEndRecord.java new file mode 100644 index 0000000..639f122 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/InterfaceEndRecord.java @@ -0,0 +1,14 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class InterfaceEndRecord extends WritableRecordData { + public InterfaceEndRecord() { + super(Type.INTERFACEEND); + } + + public byte[] getData() { + return new byte[0]; + } +} diff --git a/hrmsEjb/jxl/write/biff/InterfaceHeaderRecord.java b/hrmsEjb/jxl/write/biff/InterfaceHeaderRecord.java new file mode 100644 index 0000000..bdb4c67 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/InterfaceHeaderRecord.java @@ -0,0 +1,15 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class InterfaceHeaderRecord extends WritableRecordData { + public InterfaceHeaderRecord() { + super(Type.INTERFACEHDR); + } + + public byte[] getData() { + byte[] data = { -80, 4 }; + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/IterationRecord.java b/hrmsEjb/jxl/write/biff/IterationRecord.java new file mode 100644 index 0000000..ed065e3 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/IterationRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class IterationRecord extends WritableRecordData { + private boolean iterate; + + private byte[] data; + + public IterationRecord(boolean it) { + super(Type.ITERATION); + this.iterate = it; + this.data = new byte[2]; + if (this.iterate) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/JxlWriteException.java b/hrmsEjb/jxl/write/biff/JxlWriteException.java new file mode 100644 index 0000000..265045d --- /dev/null +++ b/hrmsEjb/jxl/write/biff/JxlWriteException.java @@ -0,0 +1,27 @@ +package jxl.write.biff; + +import jxl.write.WriteException; + +public class JxlWriteException extends WriteException { + private static class WriteMessage { + public String message; + + WriteMessage(String m) { + this.message = m; + } + } + + static WriteMessage formatInitialized = new WriteMessage("Attempt to modify a referenced format"); + + static WriteMessage cellReferenced = new WriteMessage("Cell has already been added to a worksheet"); + + static WriteMessage maxRowsExceeded = new WriteMessage("The maximum number of rows permitted on a worksheet been exceeded"); + + static WriteMessage maxColumnsExceeded = new WriteMessage("The maximum number of columns permitted on a worksheet has been exceeded"); + + static WriteMessage copyPropertySets = new WriteMessage("Error encounted when copying additional property sets"); + + public JxlWriteException(WriteMessage m) { + super(m.message); + } +} diff --git a/hrmsEjb/jxl/write/biff/LabelRecord.java b/hrmsEjb/jxl/write/biff/LabelRecord.java new file mode 100644 index 0000000..b14b201 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/LabelRecord.java @@ -0,0 +1,85 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import jxl.Cell; +import jxl.CellType; +import jxl.LabelCell; +import jxl.biff.FormattingRecords; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.format.CellFormat; + +public abstract class LabelRecord extends CellValue { + private static Logger logger = Logger.getLogger(LabelRecord.class); + + private String contents; + + private SharedStrings sharedStrings; + + private int index; + + protected LabelRecord(int c, int r, String cont) { + super(Type.LABELSST, c, r); + this.contents = cont; + if (this.contents == null) + this.contents = ""; + } + + protected LabelRecord(int c, int r, String cont, CellFormat st) { + super(Type.LABELSST, c, r, st); + this.contents = cont; + if (this.contents == null) + this.contents = ""; + } + + protected LabelRecord(int c, int r, LabelRecord lr) { + super(Type.LABELSST, c, r, lr); + this.contents = lr.contents; + } + + protected LabelRecord(LabelCell lc) { + super(Type.LABELSST, (Cell)lc); + this.contents = lc.getString(); + if (this.contents == null) + this.contents = ""; + } + + public CellType getType() { + return CellType.LABEL; + } + + public byte[] getData() { + byte[] celldata = super.getData(); + byte[] data = new byte[celldata.length + 4]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + IntegerHelper.getFourBytes(this.index, data, celldata.length); + return data; + } + + public String getContents() { + return this.contents; + } + + public String getString() { + return this.contents; + } + + protected void setString(String s) { + if (s == null) + s = ""; + this.contents = s; + if (!isReferenced()) + return; + Assert.verify((this.sharedStrings != null)); + this.index = this.sharedStrings.getIndex(this.contents); + this.contents = this.sharedStrings.get(this.index); + } + + void setCellDetails(FormattingRecords fr, SharedStrings ss, WritableSheetImpl s) { + super.setCellDetails(fr, ss, s); + this.sharedStrings = ss; + this.index = this.sharedStrings.getIndex(this.contents); + this.contents = this.sharedStrings.get(this.index); + } +} diff --git a/hrmsEjb/jxl/write/biff/LeftMarginRecord.java b/hrmsEjb/jxl/write/biff/LeftMarginRecord.java new file mode 100644 index 0000000..1e1e38c --- /dev/null +++ b/hrmsEjb/jxl/write/biff/LeftMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.write.biff; + +import jxl.biff.Type; + +class LeftMarginRecord extends MarginRecord { + LeftMarginRecord(double v) { + super(Type.LEFTMARGIN, v); + } +} diff --git a/hrmsEjb/jxl/write/biff/MMSRecord.java b/hrmsEjb/jxl/write/biff/MMSRecord.java new file mode 100644 index 0000000..345918a --- /dev/null +++ b/hrmsEjb/jxl/write/biff/MMSRecord.java @@ -0,0 +1,25 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class MMSRecord extends WritableRecordData { + private byte numMenuItemsAdded; + + private byte numMenuItemsDeleted; + + private byte[] data; + + public MMSRecord(int menuItemsAdded, int menuItemsDeleted) { + super(Type.MMS); + this.numMenuItemsAdded = (byte)menuItemsAdded; + this.numMenuItemsDeleted = (byte)menuItemsDeleted; + this.data = new byte[2]; + this.data[0] = this.numMenuItemsAdded; + this.data[1] = this.numMenuItemsDeleted; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/MarginRecord.java b/hrmsEjb/jxl/write/biff/MarginRecord.java new file mode 100644 index 0000000..7181470 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/MarginRecord.java @@ -0,0 +1,20 @@ +package jxl.write.biff; + +import jxl.biff.DoubleHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +abstract class MarginRecord extends WritableRecordData { + private double margin; + + public MarginRecord(Type t, double v) { + super(t); + this.margin = v; + } + + public byte[] getData() { + byte[] data = new byte[8]; + DoubleHelper.getIEEEBytes(this.margin, data, 0); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/MergedCells.java b/hrmsEjb/jxl/write/biff/MergedCells.java new file mode 100644 index 0000000..6245937 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/MergedCells.java @@ -0,0 +1,166 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import jxl.Cell; +import jxl.CellType; +import jxl.Range; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.biff.SheetRangeImpl; +import jxl.write.Blank; +import jxl.write.WritableCell; +import jxl.write.WritableSheet; +import jxl.write.WriteException; + +class MergedCells { + private static Logger logger = Logger.getLogger(MergedCells.class); + + private ArrayList ranges; + + private WritableSheet sheet; + + private static final int maxRangesPerSheet = 1020; + + public MergedCells(WritableSheet ws) { + this.ranges = new ArrayList(); + this.sheet = ws; + } + + void add(Range r) { + this.ranges.add(r); + } + + void insertRow(int row) { + SheetRangeImpl sr = null; + Iterator i = this.ranges.iterator(); + while (i.hasNext()) { + sr = i.next(); + sr.insertRow(row); + } + } + + void insertColumn(int col) { + SheetRangeImpl sr = null; + Iterator i = this.ranges.iterator(); + while (i.hasNext()) { + sr = i.next(); + sr.insertColumn(col); + } + } + + void removeColumn(int col) { + SheetRangeImpl sr = null; + Iterator i = this.ranges.iterator(); + while (i.hasNext()) { + sr = i.next(); + if (sr.getTopLeft().getColumn() == col && sr.getBottomRight().getColumn() == col) { + this.ranges.remove(this.ranges.indexOf(sr)); + continue; + } + sr.removeColumn(col); + } + } + + void removeRow(int row) { + SheetRangeImpl sr = null; + Iterator i = this.ranges.iterator(); + while (i.hasNext()) { + sr = i.next(); + if (sr.getTopLeft().getRow() == row && sr.getBottomRight().getRow() == row) { + i.remove(); + continue; + } + sr.removeRow(row); + } + } + + Range[] getMergedCells() { + Range[] cells = new Range[this.ranges.size()]; + for (int i = 0; i < cells.length; i++) + cells[i] = this.ranges.get(i); + return cells; + } + + void unmergeCells(Range r) { + int index = this.ranges.indexOf(r); + if (index != -1) + this.ranges.remove(index); + } + + private void checkIntersections() { + ArrayList newcells = new ArrayList(this.ranges.size()); + for (Iterator mci = this.ranges.iterator(); mci.hasNext(); ) { + SheetRangeImpl r = mci.next(); + Iterator i = newcells.iterator(); + SheetRangeImpl range = null; + boolean intersects = false; + while (i.hasNext() && !intersects) { + range = i.next(); + if (range.intersects(r)) { + logger.warn("Could not merge cells " + r + " as they clash with an existing set of merged cells."); + intersects = true; + } + } + if (!intersects) + newcells.add(r); + } + this.ranges = newcells; + } + + private void checkRanges() { + try { + SheetRangeImpl range = null; + for (int i = 0; i < this.ranges.size(); i++) { + range = this.ranges.get(i); + Cell tl = range.getTopLeft(); + Cell br = range.getBottomRight(); + boolean found = false; + for (int c = tl.getColumn(); c <= br.getColumn(); c++) { + for (int r = tl.getRow(); r <= br.getRow(); r++) { + Cell cell = this.sheet.getCell(c, r); + if (cell.getType() != CellType.EMPTY) + if (!found) { + found = true; + } else { + logger.warn("Range " + range + " contains more than one data cell. " + "Setting the other cells to blank."); + Blank b = new Blank(c, r); + this.sheet.addCell((WritableCell)b); + } + } + } + } + } catch (WriteException e) { + Assert.verify(false); + } + } + + void write(File outputFile) throws IOException { + if (this.ranges.size() == 0) + return; + WorkbookSettings ws = ((WritableSheetImpl)this.sheet).getWorkbookSettings(); + if (!ws.getMergedCellCheckingDisabled()) { + checkIntersections(); + checkRanges(); + } + if (this.ranges.size() < 1020) { + MergedCellsRecord mcr = new MergedCellsRecord(this.ranges); + outputFile.write((ByteData)mcr); + return; + } + int numRecordsRequired = this.ranges.size() / 1020 + 1; + int pos = 0; + for (int i = 0; i < numRecordsRequired; i++) { + int numranges = Math.min(1020, this.ranges.size() - pos); + ArrayList cells = new ArrayList(numranges); + for (int j = 0; j < numranges; j++) + cells.add(this.ranges.get(pos + j)); + MergedCellsRecord mcr = new MergedCellsRecord(cells); + outputFile.write((ByteData)mcr); + pos += numranges; + } + } +} diff --git a/hrmsEjb/jxl/write/biff/MergedCellsRecord.java b/hrmsEjb/jxl/write/biff/MergedCellsRecord.java new file mode 100644 index 0000000..b49b84c --- /dev/null +++ b/hrmsEjb/jxl/write/biff/MergedCellsRecord.java @@ -0,0 +1,35 @@ +package jxl.write.biff; + +import java.util.ArrayList; +import jxl.Cell; +import jxl.Range; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +public class MergedCellsRecord extends WritableRecordData { + private ArrayList ranges; + + protected MergedCellsRecord(ArrayList mc) { + super(Type.MERGEDCELLS); + this.ranges = mc; + } + + public byte[] getData() { + byte[] data = new byte[this.ranges.size() * 8 + 2]; + IntegerHelper.getTwoBytes(this.ranges.size(), data, 0); + int pos = 2; + Range range = null; + for (int i = 0; i < this.ranges.size(); i++) { + range = this.ranges.get(i); + Cell tl = range.getTopLeft(); + Cell br = range.getBottomRight(); + IntegerHelper.getTwoBytes(tl.getRow(), data, pos); + IntegerHelper.getTwoBytes(br.getRow(), data, pos + 2); + IntegerHelper.getTwoBytes(tl.getColumn(), data, pos + 4); + IntegerHelper.getTwoBytes(br.getColumn(), data, pos + 6); + pos += 8; + } + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/MulRKRecord.java b/hrmsEjb/jxl/write/biff/MulRKRecord.java new file mode 100644 index 0000000..1ef6e24 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/MulRKRecord.java @@ -0,0 +1,50 @@ +package jxl.write.biff; + +import java.util.List; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.write.Number; + +class MulRKRecord extends WritableRecordData { + private int row; + + private int colFirst; + + private int colLast; + + private int[] rknumbers; + + private int[] xfIndices; + + public MulRKRecord(List numbers) { + super(Type.MULRK); + this.row = ((Number)numbers.get(0)).getRow(); + this.colFirst = ((Number)numbers.get(0)).getColumn(); + this.colLast = this.colFirst + numbers.size() - 1; + this.rknumbers = new int[numbers.size()]; + this.xfIndices = new int[numbers.size()]; + for (int i = 0; i < numbers.size(); i++) { + this.rknumbers[i] = (int)((Number)numbers.get(i)).getValue(); + this.xfIndices[i] = ((CellValue)numbers.get(i)).getXFIndex(); + } + } + + public byte[] getData() { + byte[] data = new byte[this.rknumbers.length * 6 + 6]; + IntegerHelper.getTwoBytes(this.row, data, 0); + IntegerHelper.getTwoBytes(this.colFirst, data, 2); + int pos = 4; + int rkValue = 0; + byte[] rkBytes = new byte[4]; + for (int i = 0; i < this.rknumbers.length; i++) { + IntegerHelper.getTwoBytes(this.xfIndices[i], data, pos); + rkValue = this.rknumbers[i] << 2; + rkValue |= 0x2; + IntegerHelper.getFourBytes(rkValue, data, pos + 2); + pos += 6; + } + IntegerHelper.getTwoBytes(this.colLast, data, pos); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/NameRecord.java b/hrmsEjb/jxl/write/biff/NameRecord.java new file mode 100644 index 0000000..19ac5ba --- /dev/null +++ b/hrmsEjb/jxl/write/biff/NameRecord.java @@ -0,0 +1,152 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class NameRecord extends WritableRecordData { + private byte[] data; + + private String name; + + private int index; + + private int sheetRef = 0; + + private NameRange[] ranges; + + private static final int cellReference = 58; + + private static final int areaReference = 59; + + private static final int subExpression = 41; + + private static final int union = 16; + + class NameRange { + private int columnFirst; + + private int rowFirst; + + private int columnLast; + + private int rowLast; + + private int externalSheet; + + private final NameRecord this$0; + + NameRange(NameRecord this$0, jxl.read.biff.NameRecord.NameRange nr) { + this.this$0 = this$0; + this.columnFirst = nr.getFirstColumn(); + this.rowFirst = nr.getFirstRow(); + this.columnLast = nr.getLastColumn(); + this.rowLast = nr.getLastRow(); + this.externalSheet = nr.getExternalSheet(); + } + + NameRange(NameRecord this$0, int theSheet, int theStartRow, int theEndRow, int theStartCol, int theEndCol) { + this.this$0 = this$0; + this.columnFirst = theStartCol; + this.rowFirst = theStartRow; + this.columnLast = theEndCol; + this.rowLast = theEndRow; + this.externalSheet = theSheet; + } + + int getFirstColumn() { + return this.columnFirst; + } + + int getFirstRow() { + return this.rowFirst; + } + + int getLastColumn() { + return this.columnLast; + } + + int getLastRow() { + return this.rowLast; + } + + int getExternalSheet() { + return this.externalSheet; + } + + byte[] getData() { + byte[] d = new byte[10]; + IntegerHelper.getTwoBytes(this.this$0.sheetRef, d, 0); + IntegerHelper.getTwoBytes(this.rowFirst, d, 2); + IntegerHelper.getTwoBytes(this.rowLast, d, 4); + IntegerHelper.getTwoBytes(this.columnFirst & 0xFF, d, 6); + IntegerHelper.getTwoBytes(this.columnLast & 0xFF, d, 8); + return d; + } + } + + public NameRecord(jxl.read.biff.NameRecord sr, int ind) { + super(Type.NAME); + this.data = sr.getData(); + this.name = sr.getName(); + this.sheetRef = sr.getSheetRef(); + this.index = ind; + jxl.read.biff.NameRecord.NameRange[] r = sr.getRanges(); + this.ranges = new NameRange[r.length]; + for (int i = 0; i < this.ranges.length; i++) + this.ranges[i] = new NameRange(this, r[i]); + } + + NameRecord(String theName, int theIndex, int theSheet, int theStartRow, int theEndRow, int theStartCol, int theEndCol) { + super(Type.NAME); + this.name = theName; + this.index = theIndex; + this.sheetRef = 0; + this.ranges = new NameRange[1]; + this.ranges[0] = new NameRange(this, theSheet, theStartRow, theEndRow, theStartCol, theEndCol); + } + + public byte[] getData() { + if (this.data != null) + return this.data; + int NAME_HEADER_LENGTH = 15; + byte AREA_RANGE_LENGTH = 11; + byte AREA_REFERENCE = 59; + this.data = new byte[15 + this.name.length() + 11]; + int options = 0; + IntegerHelper.getTwoBytes(options, this.data, 0); + this.data[2] = 0; + this.data[3] = (byte)this.name.length(); + IntegerHelper.getTwoBytes(11, this.data, 4); + IntegerHelper.getTwoBytes((this.ranges[0]).externalSheet, this.data, 6); + IntegerHelper.getTwoBytes((this.ranges[0]).externalSheet, this.data, 8); + StringHelper.getBytes(this.name, this.data, 15); + int pos = this.name.length() + 15; + this.data[pos] = 59; + byte[] rd = this.ranges[0].getData(); + System.arraycopy(rd, 0, this.data, pos + 1, rd.length); + return this.data; + } + + public String getName() { + return this.name; + } + + public int getIndex() { + return this.index; + } + + public int getSheetRef() { + return this.sheetRef; + } + + public void setSheetRef(int i) { + this.sheetRef = i; + IntegerHelper.getTwoBytes(this.sheetRef, this.data, 8); + } + + public NameRange[] getRanges() { + return this.ranges; + } +} diff --git a/hrmsEjb/jxl/write/biff/NineteenFourRecord.java b/hrmsEjb/jxl/write/biff/NineteenFourRecord.java new file mode 100644 index 0000000..26e9671 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/NineteenFourRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class NineteenFourRecord extends WritableRecordData { + private boolean nineteenFourDate; + + private byte[] data; + + public NineteenFourRecord(boolean oldDate) { + super(Type.NINETEENFOUR); + this.nineteenFourDate = oldDate; + this.data = new byte[2]; + if (this.nineteenFourDate) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/NumberRecord.java b/hrmsEjb/jxl/write/biff/NumberRecord.java new file mode 100644 index 0000000..2f68f49 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/NumberRecord.java @@ -0,0 +1,72 @@ +package jxl.write.biff; + +import java.text.DecimalFormat; +import java.text.NumberFormat; +import jxl.Cell; +import jxl.CellType; +import jxl.NumberCell; +import jxl.biff.DoubleHelper; +import jxl.biff.Type; +import jxl.biff.XFRecord; +import jxl.format.CellFormat; + +public abstract class NumberRecord extends CellValue { + private double value; + + private NumberFormat format; + + private static DecimalFormat defaultFormat = new DecimalFormat("#.###"); + + protected NumberRecord(int c, int r, double val) { + super(Type.NUMBER, c, r); + this.value = val; + } + + protected NumberRecord(int c, int r, double val, CellFormat st) { + super(Type.NUMBER, c, r, st); + this.value = val; + } + + protected NumberRecord(NumberCell nc) { + super(Type.NUMBER, (Cell)nc); + this.value = nc.getValue(); + } + + protected NumberRecord(int c, int r, NumberRecord nr) { + super(Type.NUMBER, c, r, nr); + this.value = nr.value; + } + + public CellType getType() { + return CellType.NUMBER; + } + + public byte[] getData() { + byte[] celldata = super.getData(); + byte[] data = new byte[celldata.length + 8]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + DoubleHelper.getIEEEBytes(this.value, data, celldata.length); + return data; + } + + public String getContents() { + if (this.format == null) { + this.format = ((XFRecord)getCellFormat()).getNumberFormat(); + if (this.format == null) + this.format = defaultFormat; + } + return this.format.format(this.value); + } + + public double getValue() { + return this.value; + } + + public void setValue(double val) { + this.value = val; + } + + public NumberFormat getNumberFormat() { + return null; + } +} diff --git a/hrmsEjb/jxl/write/biff/ObjProjRecord.java b/hrmsEjb/jxl/write/biff/ObjProjRecord.java new file mode 100644 index 0000000..196cfe5 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ObjProjRecord.java @@ -0,0 +1,17 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class ObjProjRecord extends WritableRecordData { + private byte[] data; + + public ObjProjRecord() { + super(Type.OBJPROJ); + this.data = new byte[4]; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ObjectProtectRecord.java b/hrmsEjb/jxl/write/biff/ObjectProtectRecord.java new file mode 100644 index 0000000..28b8628 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ObjectProtectRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class ObjectProtectRecord extends WritableRecordData { + private boolean protection; + + private byte[] data; + + public ObjectProtectRecord(boolean prot) { + super(Type.OBJPROTECT); + this.protection = prot; + this.data = new byte[2]; + if (this.protection) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/PLSRecord.java b/hrmsEjb/jxl/write/biff/PLSRecord.java new file mode 100644 index 0000000..01186f4 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/PLSRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class PLSRecord extends WritableRecordData { + private byte[] data; + + public PLSRecord(jxl.read.biff.PLSRecord hr) { + super(Type.PLS); + this.data = hr.getData(); + } + + public PLSRecord(PLSRecord hr) { + super(Type.PLS); + this.data = new byte[hr.data.length]; + System.arraycopy(hr.data, 0, this.data, 0, this.data.length); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/PaneRecord.java b/hrmsEjb/jxl/write/biff/PaneRecord.java new file mode 100644 index 0000000..ac8e8a6 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/PaneRecord.java @@ -0,0 +1,45 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class PaneRecord extends WritableRecordData { + private int rowsVisible; + + private int columnsVisible; + + private static final int topLeftPane = 3; + + private static final int bottomLeftPane = 2; + + private static final int topRightPane = 1; + + private static final int bottomRightPane = 0; + + public PaneRecord(int cols, int rows) { + super(Type.PANE); + this.rowsVisible = rows; + this.columnsVisible = cols; + } + + public byte[] getData() { + byte[] data = new byte[10]; + IntegerHelper.getTwoBytes(this.columnsVisible, data, 0); + IntegerHelper.getTwoBytes(this.rowsVisible, data, 2); + if (this.rowsVisible > 0) + IntegerHelper.getTwoBytes(this.rowsVisible, data, 4); + if (this.columnsVisible > 0) + IntegerHelper.getTwoBytes(this.columnsVisible, data, 6); + int activePane = 3; + if (this.rowsVisible > 0 && this.columnsVisible == 0) { + activePane = 2; + } else if (this.rowsVisible == 0 && this.columnsVisible > 0) { + activePane = 1; + } else if (this.rowsVisible > 0 && this.columnsVisible > 0) { + activePane = 0; + } + IntegerHelper.getTwoBytes(activePane, data, 8); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/PasswordRecord.java b/hrmsEjb/jxl/write/biff/PasswordRecord.java new file mode 100644 index 0000000..79510a5 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/PasswordRecord.java @@ -0,0 +1,53 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class PasswordRecord extends WritableRecordData { + private String password; + + private byte[] data; + + public PasswordRecord(String pw) { + super(Type.PASSWORD); + this.password = pw; + if (pw == null) { + this.data = new byte[2]; + IntegerHelper.getTwoBytes(0, this.data, 0); + } else { + byte[] passwordBytes = pw.getBytes(); + int passwordHash = 0; + for (int a = 0; a < passwordBytes.length; a++) { + int shifted = rotLeft15Bit(passwordBytes[a], a + 1); + passwordHash ^= shifted; + } + passwordHash ^= passwordBytes.length; + passwordHash ^= 0xCE4B; + this.data = new byte[2]; + IntegerHelper.getTwoBytes(passwordHash, this.data, 0); + } + } + + public PasswordRecord(int ph) { + super(Type.PASSWORD); + this.data = new byte[2]; + IntegerHelper.getTwoBytes(ph, this.data, 0); + } + + public byte[] getData() { + return this.data; + } + + private int rotLeft15Bit(int val, int rotate) { + val &= 0x7FFF; + for (; rotate > 0; rotate--) { + if ((val & 0x4000) != 0) { + val = (val << 1 & 0x7FFF) + 1; + } else { + val = val << 1 & 0x7FFF; + } + } + return val; + } +} diff --git a/hrmsEjb/jxl/write/biff/PrecisionRecord.java b/hrmsEjb/jxl/write/biff/PrecisionRecord.java new file mode 100644 index 0000000..cc8ebee --- /dev/null +++ b/hrmsEjb/jxl/write/biff/PrecisionRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class PrecisionRecord extends WritableRecordData { + private boolean asDisplayed; + + private byte[] data; + + public PrecisionRecord(boolean disp) { + super(Type.PRECISION); + this.asDisplayed = disp; + this.data = new byte[2]; + if (!this.asDisplayed) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/PrintGridLinesRecord.java b/hrmsEjb/jxl/write/biff/PrintGridLinesRecord.java new file mode 100644 index 0000000..9a6eb81 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/PrintGridLinesRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class PrintGridLinesRecord extends WritableRecordData { + private byte[] data; + + private boolean printGridLines; + + public PrintGridLinesRecord(boolean pgl) { + super(Type.PRINTGRIDLINES); + this.printGridLines = pgl; + this.data = new byte[2]; + if (this.printGridLines) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/PrintHeadersRecord.java b/hrmsEjb/jxl/write/biff/PrintHeadersRecord.java new file mode 100644 index 0000000..b620a85 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/PrintHeadersRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class PrintHeadersRecord extends WritableRecordData { + private byte[] data; + + private boolean printHeaders; + + public PrintHeadersRecord(boolean ph) { + super(Type.PRINTHEADERS); + this.printHeaders = ph; + this.data = new byte[2]; + if (this.printHeaders) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/Prot4RevPassRecord.java b/hrmsEjb/jxl/write/biff/Prot4RevPassRecord.java new file mode 100644 index 0000000..7d7944e --- /dev/null +++ b/hrmsEjb/jxl/write/biff/Prot4RevPassRecord.java @@ -0,0 +1,17 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class Prot4RevPassRecord extends WritableRecordData { + private byte[] data; + + public Prot4RevPassRecord() { + super(Type.PROT4REVPASS); + this.data = new byte[2]; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/Prot4RevRecord.java b/hrmsEjb/jxl/write/biff/Prot4RevRecord.java new file mode 100644 index 0000000..bd97bbb --- /dev/null +++ b/hrmsEjb/jxl/write/biff/Prot4RevRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class Prot4RevRecord extends WritableRecordData { + private boolean protection; + + private byte[] data; + + public Prot4RevRecord(boolean prot) { + super(Type.PROT4REV); + this.protection = prot; + this.data = new byte[2]; + if (this.protection) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ProtectRecord.java b/hrmsEjb/jxl/write/biff/ProtectRecord.java new file mode 100644 index 0000000..ea63e37 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ProtectRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class ProtectRecord extends WritableRecordData { + private boolean protection; + + private byte[] data; + + public ProtectRecord(boolean prot) { + super(Type.PROTECT); + this.protection = prot; + this.data = new byte[2]; + if (this.protection) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ReadBooleanFormulaRecord.java b/hrmsEjb/jxl/write/biff/ReadBooleanFormulaRecord.java new file mode 100644 index 0000000..b4bf2ec --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ReadBooleanFormulaRecord.java @@ -0,0 +1,14 @@ +package jxl.write.biff; + +import jxl.BooleanFormulaCell; +import jxl.biff.FormulaData; + +class ReadBooleanFormulaRecord extends ReadFormulaRecord implements BooleanFormulaCell { + public ReadBooleanFormulaRecord(FormulaData f) { + super(f); + } + + public boolean getValue() { + return ((BooleanFormulaCell)getReadFormula()).getValue(); + } +} diff --git a/hrmsEjb/jxl/write/biff/ReadDateFormulaRecord.java b/hrmsEjb/jxl/write/biff/ReadDateFormulaRecord.java new file mode 100644 index 0000000..383c790 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ReadDateFormulaRecord.java @@ -0,0 +1,24 @@ +package jxl.write.biff; + +import java.text.DateFormat; +import java.util.Date; +import jxl.DateFormulaCell; +import jxl.biff.FormulaData; + +class ReadDateFormulaRecord extends ReadFormulaRecord implements DateFormulaCell { + public ReadDateFormulaRecord(FormulaData f) { + super(f); + } + + public Date getDate() { + return ((DateFormulaCell)getReadFormula()).getDate(); + } + + public boolean isTime() { + return ((DateFormulaCell)getReadFormula()).isTime(); + } + + public DateFormat getDateFormat() { + return ((DateFormulaCell)getReadFormula()).getDateFormat(); + } +} diff --git a/hrmsEjb/jxl/write/biff/ReadErrorFormulaRecord.java b/hrmsEjb/jxl/write/biff/ReadErrorFormulaRecord.java new file mode 100644 index 0000000..a42f93b --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ReadErrorFormulaRecord.java @@ -0,0 +1,58 @@ +package jxl.write.biff; + +import common.Logger; +import jxl.ErrorFormulaCell; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.formula.FormulaErrorCode; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class ReadErrorFormulaRecord extends ReadFormulaRecord implements ErrorFormulaCell { + private static Logger logger = Logger.getLogger(ReadErrorFormulaRecord.class); + + public ReadErrorFormulaRecord(FormulaData f) { + super(f); + } + + public int getErrorCode() { + return ((ErrorFormulaCell)getReadFormula()).getErrorCode(); + } + + protected byte[] handleFormulaException() { + logger.debug("ReadErrorFormulaRecord.handleFormulaException"); + byte[] expressiondata = null; + byte[] celldata = getCellData(); + int errorCode = getErrorCode(); + String formulaString = null; + if (errorCode == FormulaErrorCode.DIV0.getCode()) { + formulaString = "1/0"; + } else if (errorCode == FormulaErrorCode.VALUE.getCode()) { + formulaString = "\"\"/0"; + } else if (errorCode == FormulaErrorCode.REF.getCode()) { + formulaString = "\"#REF!\""; + } else { + formulaString = "\"ERROR\""; + } + WritableWorkbookImpl w = getSheet().getWorkbook(); + FormulaParser parser = new FormulaParser(formulaString, w, w, w.getSettings()); + try { + parser.parse(); + } catch (FormulaException e2) { + logger.warn(e2.getMessage()); + } + byte[] formulaBytes = parser.getBytes(); + expressiondata = new byte[formulaBytes.length + 16]; + IntegerHelper.getTwoBytes(formulaBytes.length, expressiondata, 14); + System.arraycopy(formulaBytes, 0, expressiondata, 16, formulaBytes.length); + expressiondata[8] = (byte)(expressiondata[8] | 0x2); + byte[] data = new byte[celldata.length + expressiondata.length]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + System.arraycopy(expressiondata, 0, data, celldata.length, expressiondata.length); + data[6] = 2; + data[12] = -1; + data[13] = -1; + data[8] = (byte)errorCode; + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ReadFormulaRecord.java b/hrmsEjb/jxl/write/biff/ReadFormulaRecord.java new file mode 100644 index 0000000..a2458ab --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ReadFormulaRecord.java @@ -0,0 +1,176 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import jxl.Cell; +import jxl.CellReferenceHelper; +import jxl.CellType; +import jxl.FormulaCell; +import jxl.Sheet; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; +import jxl.write.WritableCell; + +class ReadFormulaRecord extends CellValue implements FormulaData { + private static Logger logger = Logger.getLogger(ReadFormulaRecord.class); + + private FormulaData formula; + + private FormulaParser parser; + + protected ReadFormulaRecord(FormulaData f) { + super(Type.FORMULA, (Cell)f); + this.formula = f; + } + + protected final byte[] getCellData() { + return super.getData(); + } + + protected byte[] handleFormulaException() { + byte[] expressiondata = null; + byte[] celldata = super.getData(); + WritableWorkbookImpl w = getSheet().getWorkbook(); + this.parser = new FormulaParser(getContents(), w, w, w.getSettings()); + try { + this.parser.parse(); + } catch (FormulaException e2) { + logger.warn(e2.getMessage()); + this.parser = new FormulaParser("\"ERROR\"", w, w, w.getSettings()); + try { + this.parser.parse(); + } catch (FormulaException e3) { + Assert.verify(false); + } + } + byte[] formulaBytes = this.parser.getBytes(); + expressiondata = new byte[formulaBytes.length + 16]; + IntegerHelper.getTwoBytes(formulaBytes.length, expressiondata, 14); + System.arraycopy(formulaBytes, 0, expressiondata, 16, formulaBytes.length); + expressiondata[8] = (byte)(expressiondata[8] | 0x2); + byte[] data = new byte[celldata.length + expressiondata.length]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + System.arraycopy(expressiondata, 0, data, celldata.length, expressiondata.length); + return data; + } + + public byte[] getData() { + byte[] celldata = super.getData(); + byte[] expressiondata = null; + try { + if (this.parser == null) { + expressiondata = this.formula.getFormulaData(); + } else { + byte[] formulaBytes = this.parser.getBytes(); + expressiondata = new byte[formulaBytes.length + 16]; + IntegerHelper.getTwoBytes(formulaBytes.length, expressiondata, 14); + System.arraycopy(formulaBytes, 0, expressiondata, 16, formulaBytes.length); + } + expressiondata[8] = (byte)(expressiondata[8] | 0x2); + byte[] data = new byte[celldata.length + expressiondata.length]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + System.arraycopy(expressiondata, 0, data, celldata.length, expressiondata.length); + return data; + } catch (FormulaException e) { + logger.warn(CellReferenceHelper.getCellReference(getColumn(), getRow()) + " " + e.getMessage()); + return handleFormulaException(); + } + } + + public CellType getType() { + return this.formula.getType(); + } + + public String getContents() { + return this.formula.getContents(); + } + + public byte[] getFormulaData() throws FormulaException { + byte[] d = this.formula.getFormulaData(); + byte[] data = new byte[d.length]; + System.arraycopy(d, 0, data, 0, d.length); + data[8] = (byte)(data[8] | 0x2); + return data; + } + + public WritableCell copyTo(int col, int row) { + return new FormulaRecord(col, row, this); + } + + void setCellDetails(FormattingRecords fr, SharedStrings ss, WritableSheetImpl s) { + super.setCellDetails(fr, ss, s); + s.getWorkbook().addRCIRCell(this); + } + + void columnInserted(Sheet s, int sheetIndex, int col) { + try { + if (this.parser == null) { + byte[] formulaData = this.formula.getFormulaData(); + byte[] formulaBytes = new byte[formulaData.length - 16]; + System.arraycopy(formulaData, 16, formulaBytes, 0, formulaBytes.length); + this.parser = new FormulaParser(formulaBytes, (Cell)this, getSheet().getWorkbook(), getSheet().getWorkbook(), getSheet().getWorkbookSettings()); + this.parser.parse(); + } + this.parser.columnInserted(sheetIndex, col, (s == getSheet())); + } catch (FormulaException e) { + logger.warn("cannot insert column within formula: " + e.getMessage()); + } + } + + void columnRemoved(Sheet s, int sheetIndex, int col) { + try { + if (this.parser == null) { + byte[] formulaData = this.formula.getFormulaData(); + byte[] formulaBytes = new byte[formulaData.length - 16]; + System.arraycopy(formulaData, 16, formulaBytes, 0, formulaBytes.length); + this.parser = new FormulaParser(formulaBytes, (Cell)this, getSheet().getWorkbook(), getSheet().getWorkbook(), getSheet().getWorkbookSettings()); + this.parser.parse(); + } + this.parser.columnRemoved(sheetIndex, col, (s == getSheet())); + } catch (FormulaException e) { + logger.warn("cannot remove column within formula: " + e.getMessage()); + } + } + + void rowInserted(Sheet s, int sheetIndex, int row) { + try { + if (this.parser == null) { + byte[] formulaData = this.formula.getFormulaData(); + byte[] formulaBytes = new byte[formulaData.length - 16]; + System.arraycopy(formulaData, 16, formulaBytes, 0, formulaBytes.length); + this.parser = new FormulaParser(formulaBytes, (Cell)this, getSheet().getWorkbook(), getSheet().getWorkbook(), getSheet().getWorkbookSettings()); + this.parser.parse(); + } + this.parser.rowInserted(sheetIndex, row, (s == getSheet())); + } catch (FormulaException e) { + logger.warn("cannot insert row within formula: " + e.getMessage()); + } + } + + void rowRemoved(Sheet s, int sheetIndex, int row) { + try { + if (this.parser == null) { + byte[] formulaData = this.formula.getFormulaData(); + byte[] formulaBytes = new byte[formulaData.length - 16]; + System.arraycopy(formulaData, 16, formulaBytes, 0, formulaBytes.length); + this.parser = new FormulaParser(formulaBytes, (Cell)this, getSheet().getWorkbook(), getSheet().getWorkbook(), getSheet().getWorkbookSettings()); + this.parser.parse(); + } + this.parser.rowRemoved(sheetIndex, row, (s == getSheet())); + } catch (FormulaException e) { + logger.warn("cannot remove row within formula: " + e.getMessage()); + } + } + + protected FormulaData getReadFormula() { + return this.formula; + } + + public String getFormula() throws FormulaException { + return ((FormulaCell)this.formula).getFormula(); + } +} diff --git a/hrmsEjb/jxl/write/biff/ReadNumberFormulaRecord.java b/hrmsEjb/jxl/write/biff/ReadNumberFormulaRecord.java new file mode 100644 index 0000000..c8b942a --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ReadNumberFormulaRecord.java @@ -0,0 +1,48 @@ +package jxl.write.biff; + +import common.Logger; +import java.text.NumberFormat; +import jxl.NumberFormulaCell; +import jxl.biff.DoubleHelper; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class ReadNumberFormulaRecord extends ReadFormulaRecord implements NumberFormulaCell { + private static Logger logger = Logger.getLogger(ReadNumberFormulaRecord.class); + + public ReadNumberFormulaRecord(FormulaData f) { + super(f); + } + + public double getValue() { + return ((NumberFormulaCell)getReadFormula()).getValue(); + } + + public NumberFormat getNumberFormat() { + return ((NumberFormulaCell)getReadFormula()).getNumberFormat(); + } + + protected byte[] handleFormulaException() { + byte[] expressiondata = null; + byte[] celldata = getCellData(); + WritableWorkbookImpl w = getSheet().getWorkbook(); + FormulaParser parser = new FormulaParser(Double.toString(getValue()), w, w, w.getSettings()); + try { + parser.parse(); + } catch (FormulaException e2) { + logger.warn(e2.getMessage()); + } + byte[] formulaBytes = parser.getBytes(); + expressiondata = new byte[formulaBytes.length + 16]; + IntegerHelper.getTwoBytes(formulaBytes.length, expressiondata, 14); + System.arraycopy(formulaBytes, 0, expressiondata, 16, formulaBytes.length); + expressiondata[8] = (byte)(expressiondata[8] | 0x2); + byte[] data = new byte[celldata.length + expressiondata.length]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + System.arraycopy(expressiondata, 0, data, celldata.length, expressiondata.length); + DoubleHelper.getIEEEBytes(getValue(), data, 6); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ReadStringFormulaRecord.java b/hrmsEjb/jxl/write/biff/ReadStringFormulaRecord.java new file mode 100644 index 0000000..50c0fb1 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ReadStringFormulaRecord.java @@ -0,0 +1,51 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import jxl.StringFormulaCell; +import jxl.biff.FormulaData; +import jxl.biff.IntegerHelper; +import jxl.biff.formula.FormulaException; +import jxl.biff.formula.FormulaParser; + +class ReadStringFormulaRecord extends ReadFormulaRecord implements StringFormulaCell { + private static Logger logger = Logger.getLogger(ReadFormulaRecord.class); + + public ReadStringFormulaRecord(FormulaData f) { + super(f); + } + + public String getString() { + return ((StringFormulaCell)getReadFormula()).getString(); + } + + protected byte[] handleFormulaException() { + byte[] expressiondata = null; + byte[] celldata = getCellData(); + WritableWorkbookImpl w = getSheet().getWorkbook(); + FormulaParser parser = new FormulaParser("\"" + getContents() + "\"", w, w, w.getSettings()); + try { + parser.parse(); + } catch (FormulaException e2) { + logger.warn(e2.getMessage()); + parser = new FormulaParser("\"ERROR\"", w, w, w.getSettings()); + try { + parser.parse(); + } catch (FormulaException e3) { + Assert.verify(false); + } + } + byte[] formulaBytes = parser.getBytes(); + expressiondata = new byte[formulaBytes.length + 16]; + IntegerHelper.getTwoBytes(formulaBytes.length, expressiondata, 14); + System.arraycopy(formulaBytes, 0, expressiondata, 16, formulaBytes.length); + expressiondata[8] = (byte)(expressiondata[8] | 0x2); + byte[] data = new byte[celldata.length + expressiondata.length]; + System.arraycopy(celldata, 0, data, 0, celldata.length); + System.arraycopy(expressiondata, 0, data, celldata.length, expressiondata.length); + data[6] = 0; + data[12] = -1; + data[13] = -1; + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/RefModeRecord.java b/hrmsEjb/jxl/write/biff/RefModeRecord.java new file mode 100644 index 0000000..1ede9b0 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/RefModeRecord.java @@ -0,0 +1,16 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class RefModeRecord extends WritableRecordData { + public RefModeRecord() { + super(Type.REFMODE); + } + + public byte[] getData() { + byte[] data = new byte[2]; + data[0] = 1; + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/RefreshAllRecord.java b/hrmsEjb/jxl/write/biff/RefreshAllRecord.java new file mode 100644 index 0000000..df5d94f --- /dev/null +++ b/hrmsEjb/jxl/write/biff/RefreshAllRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class RefreshAllRecord extends WritableRecordData { + private boolean refreshall; + + private byte[] data; + + public RefreshAllRecord(boolean refresh) { + super(Type.REFRESHALL); + this.refreshall = refresh; + this.data = new byte[2]; + if (this.refreshall) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/RightMarginRecord.java b/hrmsEjb/jxl/write/biff/RightMarginRecord.java new file mode 100644 index 0000000..b4b1c63 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/RightMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.write.biff; + +import jxl.biff.Type; + +class RightMarginRecord extends MarginRecord { + RightMarginRecord(double v) { + super(Type.RIGHTMARGIN, v); + } +} diff --git a/hrmsEjb/jxl/write/biff/RowRecord.java b/hrmsEjb/jxl/write/biff/RowRecord.java new file mode 100644 index 0000000..a8cb826 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/RowRecord.java @@ -0,0 +1,263 @@ +package jxl.write.biff; + +import common.Logger; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import jxl.CellType; +import jxl.biff.ByteData; +import jxl.biff.CellReferenceHelper; +import jxl.biff.IndexMapping; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.biff.XFRecord; +import jxl.write.Number; + +class RowRecord extends WritableRecordData { + private static final Logger logger = Logger.getLogger(RowRecord.class); + + private byte[] data; + + private CellValue[] cells; + + private int rowHeight; + + private boolean collapsed; + + private int rowNumber; + + private int numColumns; + + private int xfIndex; + + private XFRecord style; + + private boolean defaultFormat; + + private boolean matchesDefFontHeight; + + private static final int growSize = 10; + + private static final int maxRKValue = 536870911; + + private static final int minRKValue = -536870912; + + private static int defaultHeightIndicator = 255; + + private static int maxColumns = 256; + + public RowRecord(int rn) { + super(Type.ROW); + this.rowNumber = rn; + this.cells = new CellValue[0]; + this.numColumns = 0; + this.rowHeight = defaultHeightIndicator; + this.collapsed = false; + this.matchesDefFontHeight = true; + } + + public void setRowHeight(int h) { + if (h == 0) { + setCollapsed(true); + this.matchesDefFontHeight = false; + } else { + this.rowHeight = h; + this.matchesDefFontHeight = false; + } + } + + void setRowDetails(int height, boolean mdfh, boolean col, XFRecord xfr) { + this.rowHeight = height; + this.collapsed = col; + this.matchesDefFontHeight = mdfh; + if (xfr != null) { + this.defaultFormat = true; + this.style = xfr; + this.xfIndex = this.style.getXFIndex(); + } + } + + public void setCollapsed(boolean c) { + this.collapsed = c; + } + + public int getRowNumber() { + return this.rowNumber; + } + + public void addCell(CellValue cv) { + int col = cv.getColumn(); + if (col >= maxColumns) { + logger.warn("Could not add cell at " + CellReferenceHelper.getCellReference(cv.getRow(), cv.getColumn()) + " because it exceeds the maximum column limit"); + return; + } + if (col >= this.cells.length) { + CellValue[] oldCells = this.cells; + this.cells = new CellValue[Math.max(oldCells.length + 10, col + 1)]; + System.arraycopy(oldCells, 0, this.cells, 0, oldCells.length); + oldCells = null; + } + this.cells[col] = cv; + this.numColumns = Math.max(col + 1, this.numColumns); + } + + public void removeCell(int col) { + if (col >= this.numColumns) + return; + this.cells[col] = null; + } + + public void write(File outputFile) throws IOException { + outputFile.write((ByteData)this); + } + + public void writeCells(File outputFile) throws IOException { + ArrayList integerValues = new ArrayList(); + boolean integerValue = false; + for (int i = 0; i < this.numColumns; i++) { + integerValue = false; + if (this.cells[i] != null) { + if (this.cells[i].getType() == CellType.NUMBER) { + Number nc = (Number)this.cells[i]; + if (nc.getValue() == (int)nc.getValue() && nc.getValue() < 5.36870911E8D && nc.getValue() > -5.36870912E8D && nc.getCellFeatures() == null) + integerValue = true; + } + if (integerValue) { + integerValues.add(this.cells[i]); + } else { + writeIntegerValues(integerValues, outputFile); + outputFile.write((ByteData)this.cells[i]); + if (this.cells[i].getType() == CellType.STRING_FORMULA) { + StringRecord sr = new StringRecord(this.cells[i].getContents()); + outputFile.write((ByteData)sr); + } + } + } else { + writeIntegerValues(integerValues, outputFile); + } + } + writeIntegerValues(integerValues, outputFile); + } + + private void writeIntegerValues(ArrayList integerValues, File outputFile) throws IOException { + if (integerValues.size() == 0) + return; + if (integerValues.size() >= 3) { + MulRKRecord mulrk = new MulRKRecord(integerValues); + outputFile.write((ByteData)mulrk); + } else { + Iterator i = integerValues.iterator(); + while (i.hasNext()) + outputFile.write((ByteData)i.next()); + } + integerValues.clear(); + } + + public byte[] getData() { + byte[] data = new byte[16]; + IntegerHelper.getTwoBytes(this.rowNumber, data, 0); + IntegerHelper.getTwoBytes(this.numColumns, data, 4); + IntegerHelper.getTwoBytes(this.rowHeight, data, 6); + int options = 256; + if (this.collapsed) + options |= 0x20; + if (!this.matchesDefFontHeight) + options |= 0x40; + if (this.defaultFormat) { + options |= 0x80; + options |= this.xfIndex << 16; + } + IntegerHelper.getFourBytes(options, data, 12); + return data; + } + + public int getMaxColumn() { + return this.numColumns; + } + + public CellValue getCell(int col) { + return (col >= 0 && col < this.numColumns) ? this.cells[col] : null; + } + + void incrementRow() { + this.rowNumber++; + for (int i = 0; i < this.cells.length; i++) { + if (this.cells[i] != null) + this.cells[i].incrementRow(); + } + } + + void decrementRow() { + this.rowNumber--; + for (int i = 0; i < this.cells.length; i++) { + if (this.cells[i] != null) + this.cells[i].decrementRow(); + } + } + + void insertColumn(int col) { + if (col >= this.numColumns) + return; + if (this.numColumns >= maxColumns) { + logger.warn("Could not insert column because maximum column limit has been reached"); + return; + } + CellValue[] oldCells = this.cells; + if (this.numColumns >= this.cells.length - 1) { + this.cells = new CellValue[oldCells.length + 10]; + } else { + this.cells = new CellValue[oldCells.length]; + } + System.arraycopy(oldCells, 0, this.cells, 0, col); + System.arraycopy(oldCells, col, this.cells, col + 1, this.numColumns - col); + for (int i = col + 1; i <= this.numColumns; i++) { + if (this.cells[i] != null) + this.cells[i].incrementColumn(); + } + this.numColumns++; + } + + void removeColumn(int col) { + if (col >= this.numColumns) + return; + CellValue[] oldCells = this.cells; + this.cells = new CellValue[oldCells.length]; + System.arraycopy(oldCells, 0, this.cells, 0, col); + System.arraycopy(oldCells, col + 1, this.cells, col, this.numColumns - col + 1); + for (int i = col; i < this.numColumns; i++) { + if (this.cells[i] != null) + this.cells[i].decrementColumn(); + } + this.numColumns--; + } + + public boolean isDefaultHeight() { + return (this.rowHeight == defaultHeightIndicator); + } + + public int getRowHeight() { + return this.rowHeight; + } + + public boolean isCollapsed() { + return this.collapsed; + } + + void rationalize(IndexMapping xfmapping) { + if (this.defaultFormat) + this.xfIndex = xfmapping.getNewIndex(this.xfIndex); + } + + XFRecord getStyle() { + return this.style; + } + + boolean hasDefaultFormat() { + return this.defaultFormat; + } + + boolean matchesDefaultFontHeight() { + return this.matchesDefFontHeight; + } +} diff --git a/hrmsEjb/jxl/write/biff/RowsExceededException.java b/hrmsEjb/jxl/write/biff/RowsExceededException.java new file mode 100644 index 0000000..5f01290 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/RowsExceededException.java @@ -0,0 +1,7 @@ +package jxl.write.biff; + +public class RowsExceededException extends JxlWriteException { + public RowsExceededException() { + super(maxRowsExceeded); + } +} diff --git a/hrmsEjb/jxl/write/biff/SCLRecord.java b/hrmsEjb/jxl/write/biff/SCLRecord.java new file mode 100644 index 0000000..47c063d --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SCLRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class SCLRecord extends WritableRecordData { + private int zoomFactor; + + public SCLRecord(int zf) { + super(Type.SCL); + this.zoomFactor = zf; + } + + public byte[] getData() { + byte[] data = new byte[4]; + int numerator = this.zoomFactor; + int denominator = 100; + IntegerHelper.getTwoBytes(numerator, data, 0); + IntegerHelper.getTwoBytes(denominator, data, 2); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/SSTContinueRecord.java b/hrmsEjb/jxl/write/biff/SSTContinueRecord.java new file mode 100644 index 0000000..6c54eb6 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SSTContinueRecord.java @@ -0,0 +1,103 @@ +package jxl.write.biff; + +import java.util.ArrayList; +import java.util.Iterator; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class SSTContinueRecord extends WritableRecordData { + private String firstString; + + private boolean includeLength; + + private int firstStringLength; + + private ArrayList strings; + + private ArrayList stringLengths; + + private byte[] data; + + private int byteCount; + + private static int maxBytes = 8224; + + public SSTContinueRecord() { + super(Type.CONTINUE); + this.byteCount = 0; + this.strings = new ArrayList(50); + this.stringLengths = new ArrayList(50); + } + + public int setFirstString(String s, boolean b) { + this.includeLength = b; + this.firstStringLength = s.length(); + int bytes = 0; + if (!this.includeLength) { + bytes = s.length() * 2 + 1; + } else { + bytes = s.length() * 2 + 3; + } + if (bytes <= maxBytes) { + this.firstString = s; + this.byteCount += bytes; + return 0; + } + int charsAvailable = this.includeLength ? ((maxBytes - 4) / 2) : ((maxBytes - 2) / 2); + this.firstString = s.substring(0, charsAvailable); + this.byteCount = maxBytes - 1; + return s.length() - charsAvailable; + } + + public int getOffset() { + return this.byteCount; + } + + public int add(String s) { + int bytes = s.length() * 2 + 3; + if (this.byteCount >= maxBytes - 5) + return s.length(); + this.stringLengths.add(new Integer(s.length())); + if (bytes + this.byteCount < maxBytes) { + this.strings.add(s); + this.byteCount += bytes; + return 0; + } + int bytesLeft = maxBytes - 3 - this.byteCount; + int charsAvailable = (bytesLeft % 2 == 0) ? (bytesLeft / 2) : ((bytesLeft - 1) / 2); + this.strings.add(s.substring(0, charsAvailable)); + this.byteCount += charsAvailable * 2 + 3; + return s.length() - charsAvailable; + } + + public byte[] getData() { + this.data = new byte[this.byteCount]; + int pos = 0; + if (this.includeLength) { + IntegerHelper.getTwoBytes(this.firstStringLength, this.data, 0); + this.data[2] = 1; + pos = 3; + } else { + this.data[0] = 1; + pos = 1; + } + StringHelper.getUnicodeBytes(this.firstString, this.data, pos); + pos += this.firstString.length() * 2; + Iterator i = this.strings.iterator(); + String s = null; + int length = 0; + int count = 0; + while (i.hasNext()) { + s = i.next(); + length = ((Integer)this.stringLengths.get(count)).intValue(); + IntegerHelper.getTwoBytes(length, this.data, pos); + this.data[pos + 2] = 1; + StringHelper.getUnicodeBytes(s, this.data, pos + 3); + pos += s.length() * 2 + 3; + count++; + } + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/SSTRecord.java b/hrmsEjb/jxl/write/biff/SSTRecord.java new file mode 100644 index 0000000..da21343 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SSTRecord.java @@ -0,0 +1,75 @@ +package jxl.write.biff; + +import java.util.ArrayList; +import java.util.Iterator; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class SSTRecord extends WritableRecordData { + private int numReferences; + + private int numStrings; + + private ArrayList strings; + + private ArrayList stringLengths; + + private byte[] data; + + private int byteCount; + + private static int maxBytes = 8216; + + public SSTRecord(int numRefs, int s) { + super(Type.SST); + this.numReferences = numRefs; + this.numStrings = s; + this.byteCount = 0; + this.strings = new ArrayList(50); + this.stringLengths = new ArrayList(50); + } + + public int add(String s) { + int bytes = s.length() * 2 + 3; + if (this.byteCount >= maxBytes - 5) + return (s.length() > 0) ? s.length() : -1; + this.stringLengths.add(new Integer(s.length())); + if (bytes + this.byteCount < maxBytes) { + this.strings.add(s); + this.byteCount += bytes; + return 0; + } + int bytesLeft = maxBytes - 3 - this.byteCount; + int charsAvailable = (bytesLeft % 2 == 0) ? (bytesLeft / 2) : ((bytesLeft - 1) / 2); + this.strings.add(s.substring(0, charsAvailable)); + this.byteCount += charsAvailable * 2 + 3; + return s.length() - charsAvailable; + } + + public int getOffset() { + return this.byteCount + 8; + } + + public byte[] getData() { + this.data = new byte[this.byteCount + 8]; + IntegerHelper.getFourBytes(this.numReferences, this.data, 0); + IntegerHelper.getFourBytes(this.numStrings, this.data, 4); + int pos = 8; + int count = 0; + Iterator i = this.strings.iterator(); + String s = null; + int length = 0; + while (i.hasNext()) { + s = i.next(); + length = ((Integer)this.stringLengths.get(count)).intValue(); + IntegerHelper.getTwoBytes(length, this.data, pos); + this.data[pos + 2] = 1; + StringHelper.getUnicodeBytes(s, this.data, pos + 3); + pos += s.length() * 2 + 3; + count++; + } + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/SaveRecalcRecord.java b/hrmsEjb/jxl/write/biff/SaveRecalcRecord.java new file mode 100644 index 0000000..9c1d2a1 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SaveRecalcRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class SaveRecalcRecord extends WritableRecordData { + private byte[] data; + + private boolean recalc; + + public SaveRecalcRecord(boolean r) { + super(Type.SAVERECALC); + this.recalc = r; + this.data = new byte[2]; + if (this.recalc) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/ScenarioProtectRecord.java b/hrmsEjb/jxl/write/biff/ScenarioProtectRecord.java new file mode 100644 index 0000000..917a409 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/ScenarioProtectRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class ScenarioProtectRecord extends WritableRecordData { + private boolean protection; + + private byte[] data; + + public ScenarioProtectRecord(boolean prot) { + super(Type.SCENPROTECT); + this.protection = prot; + this.data = new byte[2]; + if (this.protection) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/SelectionRecord.java b/hrmsEjb/jxl/write/biff/SelectionRecord.java new file mode 100644 index 0000000..9166106 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SelectionRecord.java @@ -0,0 +1,49 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class SelectionRecord extends WritableRecordData { + private PaneType pane; + + private int column; + + private int row; + + private static class PaneType { + int val; + + PaneType(int v) { + this.val = v; + } + } + + public static final PaneType lowerRight = new PaneType(0); + + public static final PaneType upperRight = new PaneType(1); + + public static final PaneType lowerLeft = new PaneType(2); + + public static final PaneType upperLeft = new PaneType(3); + + public SelectionRecord(PaneType pt, int col, int r) { + super(Type.SELECTION); + this.column = col; + this.row = r; + this.pane = pt; + } + + public byte[] getData() { + byte[] data = new byte[15]; + data[0] = (byte)this.pane.val; + IntegerHelper.getTwoBytes(this.row, data, 1); + IntegerHelper.getTwoBytes(this.column, data, 3); + data[7] = 1; + IntegerHelper.getTwoBytes(this.row, data, 9); + IntegerHelper.getTwoBytes(this.row, data, 11); + data[13] = (byte)this.column; + data[14] = (byte)this.column; + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/SetupRecord.java b/hrmsEjb/jxl/write/biff/SetupRecord.java new file mode 100644 index 0000000..9439031 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SetupRecord.java @@ -0,0 +1,113 @@ +package jxl.write.biff; + +import common.Logger; +import jxl.SheetSettings; +import jxl.biff.DoubleHelper; +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; +import jxl.format.PageOrientation; +import jxl.format.PaperSize; + +class SetupRecord extends WritableRecordData { + Logger logger = Logger.getLogger(SetupRecord.class); + + private byte[] data; + + private double headerMargin; + + private double footerMargin; + + private PageOrientation orientation; + + private int paperSize; + + private int scaleFactor; + + private int pageStart; + + private int fitWidth; + + private int fitHeight; + + private int horizontalPrintResolution; + + private int verticalPrintResolution; + + private int copies; + + public SetupRecord() { + super(Type.SETUP); + this.orientation = PageOrientation.PORTRAIT; + this.headerMargin = 0.5D; + this.footerMargin = 0.5D; + this.paperSize = PaperSize.A4.getValue(); + this.horizontalPrintResolution = 300; + this.verticalPrintResolution = 300; + this.copies = 1; + } + + public SetupRecord(SheetSettings s) { + super(Type.SETUP); + this.orientation = s.getOrientation(); + this.headerMargin = s.getHeaderMargin(); + this.footerMargin = s.getFooterMargin(); + this.paperSize = s.getPaperSize().getValue(); + this.horizontalPrintResolution = s.getHorizontalPrintResolution(); + this.verticalPrintResolution = s.getVerticalPrintResolution(); + this.fitWidth = s.getFitWidth(); + this.fitHeight = s.getFitHeight(); + this.pageStart = s.getPageStart(); + this.scaleFactor = s.getScaleFactor(); + this.copies = s.getCopies(); + } + + public SetupRecord(jxl.read.biff.SetupRecord sr) { + super(Type.SETUP); + this.orientation = sr.isPortrait() ? PageOrientation.PORTRAIT : PageOrientation.LANDSCAPE; + this.paperSize = sr.getPaperSize(); + this.headerMargin = sr.getHeaderMargin(); + this.footerMargin = sr.getFooterMargin(); + this.scaleFactor = sr.getScaleFactor(); + this.pageStart = sr.getPageStart(); + this.fitWidth = sr.getFitWidth(); + this.fitHeight = sr.getFitHeight(); + this.horizontalPrintResolution = sr.getHorizontalPrintResolution(); + this.verticalPrintResolution = sr.getVerticalPrintResolution(); + this.copies = sr.getCopies(); + } + + public void setOrientation(PageOrientation o) { + this.orientation = o; + } + + public void setMargins(double hm, double fm) { + this.headerMargin = hm; + this.footerMargin = fm; + } + + public void setPaperSize(PaperSize ps) { + this.paperSize = ps.getValue(); + } + + public byte[] getData() { + this.data = new byte[34]; + IntegerHelper.getTwoBytes(this.paperSize, this.data, 0); + IntegerHelper.getTwoBytes(this.scaleFactor, this.data, 2); + IntegerHelper.getTwoBytes(this.pageStart, this.data, 4); + IntegerHelper.getTwoBytes(this.fitWidth, this.data, 6); + IntegerHelper.getTwoBytes(this.fitHeight, this.data, 8); + int options = 0; + if (this.orientation == PageOrientation.PORTRAIT) + options |= 0x2; + if (this.pageStart != 0) + options |= 0x80; + IntegerHelper.getTwoBytes(options, this.data, 10); + IntegerHelper.getTwoBytes(this.horizontalPrintResolution, this.data, 12); + IntegerHelper.getTwoBytes(this.verticalPrintResolution, this.data, 14); + DoubleHelper.getIEEEBytes(this.headerMargin, this.data, 16); + DoubleHelper.getIEEEBytes(this.footerMargin, this.data, 24); + IntegerHelper.getTwoBytes(this.copies, this.data, 32); + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/SharedStrings.java b/hrmsEjb/jxl/write/biff/SharedStrings.java new file mode 100644 index 0000000..9e64cf7 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SharedStrings.java @@ -0,0 +1,83 @@ +package jxl.write.biff; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import jxl.biff.ByteData; + +class SharedStrings { + private HashMap strings = new HashMap(100); + + private ArrayList stringList = new ArrayList(100); + + private int totalOccurrences = 0; + + public int getIndex(String s) { + Integer i = (Integer)this.strings.get(s); + if (i == null) { + i = new Integer(this.strings.size()); + this.strings.put(s, i); + this.stringList.add(s); + } + this.totalOccurrences++; + return i.intValue(); + } + + public String get(int i) { + return this.stringList.get(i); + } + + public void write(File outputFile) throws IOException { + int charsLeft = 0; + String curString = null; + SSTRecord sst = new SSTRecord(this.totalOccurrences, this.stringList.size()); + ExtendedSSTRecord extsst = new ExtendedSSTRecord(this.stringList.size()); + int bucketSize = extsst.getNumberOfStringsPerBucket(); + Iterator i = this.stringList.iterator(); + int stringIndex = 0; + while (i.hasNext() && charsLeft == 0) { + curString = i.next(); + int relativePosition = sst.getOffset() + 4; + charsLeft = sst.add(curString); + if (stringIndex % bucketSize == 0) + extsst.addString(outputFile.getPos(), relativePosition); + stringIndex++; + } + outputFile.write((ByteData)sst); + if (charsLeft != 0 || i.hasNext()) { + SSTContinueRecord cont = createContinueRecord(curString, charsLeft, outputFile); + while (i.hasNext()) { + curString = i.next(); + int relativePosition = cont.getOffset() + 4; + charsLeft = cont.add(curString); + if (stringIndex % bucketSize == 0) + extsst.addString(outputFile.getPos(), relativePosition); + stringIndex++; + if (charsLeft != 0) { + outputFile.write((ByteData)cont); + cont = createContinueRecord(curString, charsLeft, outputFile); + } + } + outputFile.write((ByteData)cont); + } + outputFile.write((ByteData)extsst); + } + + private SSTContinueRecord createContinueRecord(String curString, int charsLeft, File outputFile) throws IOException { + SSTContinueRecord cont = null; + while (charsLeft != 0) { + cont = new SSTContinueRecord(); + if (charsLeft == curString.length() || curString.length() == 0) { + charsLeft = cont.setFirstString(curString, true); + } else { + charsLeft = cont.setFirstString(curString.substring(curString.length() - charsLeft), false); + } + if (charsLeft != 0) { + outputFile.write((ByteData)cont); + cont = new SSTContinueRecord(); + } + } + return cont; + } +} diff --git a/hrmsEjb/jxl/write/biff/SheetWriter.java b/hrmsEjb/jxl/write/biff/SheetWriter.java new file mode 100644 index 0000000..f99cade --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SheetWriter.java @@ -0,0 +1,475 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.TreeSet; +import jxl.Cell; +import jxl.Range; +import jxl.SheetSettings; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.biff.WorkspaceInformationRecord; +import jxl.biff.XFRecord; +import jxl.biff.drawing.Chart; +import jxl.biff.drawing.SheetDrawingWriter; +import jxl.format.Border; +import jxl.format.BorderLineStyle; +import jxl.format.CellFormat; +import jxl.format.Colour; +import jxl.write.Blank; +import jxl.write.WritableCell; +import jxl.write.WritableCellFormat; +import jxl.write.WritableHyperlink; +import jxl.write.WriteException; + +final class SheetWriter { + private static Logger logger = Logger.getLogger(SheetWriter.class); + + private File outputFile; + + private RowRecord[] rows; + + private int numRows; + + private int numCols; + + private HeaderRecord header; + + private FooterRecord footer; + + private SheetSettings settings; + + private WorkbookSettings workbookSettings; + + private ArrayList rowBreaks; + + private ArrayList hyperlinks; + + private DataValidation dataValidation; + + private MergedCells mergedCells; + + private PLSRecord plsRecord; + + private ButtonPropertySetRecord buttonPropertySet; + + private WorkspaceInformationRecord workspaceOptions; + + private TreeSet columnFormats; + + private SheetDrawingWriter drawingWriter; + + private boolean chartOnly; + + private WritableSheetImpl sheet; + + public SheetWriter(File of, WritableSheetImpl wsi, WorkbookSettings ws) { + this.outputFile = of; + this.sheet = wsi; + this.workspaceOptions = new WorkspaceInformationRecord(); + this.workbookSettings = ws; + this.chartOnly = false; + this.drawingWriter = new SheetDrawingWriter(ws); + } + + public void write() throws IOException { + Assert.verify((this.rows != null)); + if (this.chartOnly) { + this.drawingWriter.write(this.outputFile); + return; + } + BOFRecord bof = new BOFRecord(BOFRecord.sheet); + this.outputFile.write((ByteData)bof); + int numBlocks = this.numRows / 32; + if (this.numRows - numBlocks * 32 != 0) + numBlocks++; + int indexPos = this.outputFile.getPos(); + IndexRecord indexRecord = new IndexRecord(0, this.numRows, numBlocks); + this.outputFile.write((ByteData)indexRecord); + if (this.settings.getAutomaticFormulaCalculation()) { + CalcModeRecord cmr = new CalcModeRecord(CalcModeRecord.automatic); + this.outputFile.write((ByteData)cmr); + } else { + CalcModeRecord cmr = new CalcModeRecord(CalcModeRecord.manual); + this.outputFile.write((ByteData)cmr); + } + CalcCountRecord ccr = new CalcCountRecord(100); + this.outputFile.write((ByteData)ccr); + RefModeRecord rmr = new RefModeRecord(); + this.outputFile.write((ByteData)rmr); + IterationRecord itr = new IterationRecord(false); + this.outputFile.write((ByteData)itr); + DeltaRecord dtr = new DeltaRecord(0.001D); + this.outputFile.write((ByteData)dtr); + SaveRecalcRecord srr = new SaveRecalcRecord(this.settings.getRecalculateFormulasBeforeSave()); + this.outputFile.write((ByteData)srr); + PrintHeadersRecord phr = new PrintHeadersRecord(this.settings.getPrintHeaders()); + this.outputFile.write((ByteData)phr); + PrintGridLinesRecord pglr = new PrintGridLinesRecord(this.settings.getPrintGridLines()); + this.outputFile.write((ByteData)pglr); + GridSetRecord gsr = new GridSetRecord(true); + this.outputFile.write((ByteData)gsr); + GuttersRecord gutr = new GuttersRecord(); + this.outputFile.write((ByteData)gutr); + DefaultRowHeightRecord drhr = new DefaultRowHeightRecord(this.settings.getDefaultRowHeight(), (this.settings.getDefaultRowHeight() != 255)); + this.outputFile.write((ByteData)drhr); + this.workspaceOptions.setFitToPages(this.settings.getFitToPages()); + this.outputFile.write((ByteData)this.workspaceOptions); + if (this.rowBreaks.size() > 0) { + int[] rb = new int[this.rowBreaks.size()]; + for (int i = 0; i < rb.length; i++) + rb[i] = ((Integer)this.rowBreaks.get(i)).intValue(); + HorizontalPageBreaksRecord hpbr = new HorizontalPageBreaksRecord(rb); + this.outputFile.write((ByteData)hpbr); + } + HeaderRecord header = new HeaderRecord(this.settings.getHeader().toString()); + this.outputFile.write((ByteData)header); + FooterRecord footer = new FooterRecord(this.settings.getFooter().toString()); + this.outputFile.write((ByteData)footer); + HorizontalCentreRecord hcr = new HorizontalCentreRecord(this.settings.isHorizontalCentre()); + this.outputFile.write((ByteData)hcr); + VerticalCentreRecord vcr = new VerticalCentreRecord(this.settings.isVerticalCentre()); + this.outputFile.write((ByteData)vcr); + if (this.settings.getLeftMargin() != this.settings.getDefaultWidthMargin()) { + MarginRecord mr = new LeftMarginRecord(this.settings.getLeftMargin()); + this.outputFile.write((ByteData)mr); + } + if (this.settings.getRightMargin() != this.settings.getDefaultWidthMargin()) { + MarginRecord mr = new RightMarginRecord(this.settings.getRightMargin()); + this.outputFile.write((ByteData)mr); + } + if (this.settings.getTopMargin() != this.settings.getDefaultHeightMargin()) { + MarginRecord mr = new TopMarginRecord(this.settings.getTopMargin()); + this.outputFile.write((ByteData)mr); + } + if (this.settings.getBottomMargin() != this.settings.getDefaultHeightMargin()) { + MarginRecord mr = new BottomMarginRecord(this.settings.getBottomMargin()); + this.outputFile.write((ByteData)mr); + } + if (this.plsRecord != null) + this.outputFile.write((ByteData)this.plsRecord); + SetupRecord setup = new SetupRecord(this.settings); + this.outputFile.write((ByteData)setup); + if (this.settings.isProtected()) { + ProtectRecord pr = new ProtectRecord(this.settings.isProtected()); + this.outputFile.write((ByteData)pr); + ScenarioProtectRecord spr = new ScenarioProtectRecord(this.settings.isProtected()); + this.outputFile.write((ByteData)spr); + ObjectProtectRecord opr = new ObjectProtectRecord(this.settings.isProtected()); + this.outputFile.write((ByteData)opr); + if (this.settings.getPassword() != null) { + PasswordRecord pw = new PasswordRecord(this.settings.getPassword()); + this.outputFile.write((ByteData)pw); + } else if (this.settings.getPasswordHash() != 0) { + PasswordRecord pw = new PasswordRecord(this.settings.getPasswordHash()); + this.outputFile.write((ByteData)pw); + } + } + indexRecord.setDataStartPosition(this.outputFile.getPos()); + DefaultColumnWidth dcw = new DefaultColumnWidth(this.settings.getDefaultColumnWidth()); + this.outputFile.write((ByteData)dcw); + WritableCellFormat normalStyle = this.sheet.getWorkbook().getStyles().getNormalStyle(); + WritableCellFormat defaultDateFormat = this.sheet.getWorkbook().getStyles().getDefaultDateFormat(); + ColumnInfoRecord cir = null; + for (Iterator colit = this.columnFormats.iterator(); colit.hasNext(); ) { + cir = colit.next(); + if (cir.getColumn() < 256) + this.outputFile.write((ByteData)cir); + XFRecord xfr = cir.getCellFormat(); + if (xfr != normalStyle && cir.getColumn() < 256) { + Cell[] cells = getColumn(cir.getColumn()); + for (int i = 0; i < cells.length; i++) { + if (cells[i] != null && (cells[i].getCellFormat() == normalStyle || cells[i].getCellFormat() == defaultDateFormat)) + ((WritableCell)cells[i]).setCellFormat((CellFormat)xfr); + } + } + } + DimensionRecord dr = new DimensionRecord(this.numRows, this.numCols); + this.outputFile.write((ByteData)dr); + for (int block = 0; block < numBlocks; block++) { + DBCellRecord dbcell = new DBCellRecord(this.outputFile.getPos()); + int blockRows = Math.min(32, this.numRows - block * 32); + boolean firstRow = true; + int i; + for (i = block * 32; i < block * 32 + blockRows; i++) { + if (this.rows[i] != null) { + this.rows[i].write(this.outputFile); + if (firstRow) { + dbcell.setCellOffset(this.outputFile.getPos()); + firstRow = false; + } + } + } + for (i = block * 32; i < block * 32 + blockRows; i++) { + if (this.rows[i] != null) { + dbcell.addCellRowPosition(this.outputFile.getPos()); + this.rows[i].writeCells(this.outputFile); + } + } + indexRecord.addBlockPosition(this.outputFile.getPos()); + dbcell.setPosition(this.outputFile.getPos()); + this.outputFile.write((ByteData)dbcell); + } + if (this.dataValidation != null) + this.dataValidation.write(this.outputFile); + if (!this.workbookSettings.getDrawingsDisabled()) + this.drawingWriter.write(this.outputFile); + Window2Record w2r = new Window2Record(this.settings); + this.outputFile.write((ByteData)w2r); + if (this.settings.getHorizontalFreeze() != 0 || this.settings.getVerticalFreeze() != 0) { + PaneRecord pr = new PaneRecord(this.settings.getHorizontalFreeze(), this.settings.getVerticalFreeze()); + this.outputFile.write((ByteData)pr); + SelectionRecord sr = new SelectionRecord(SelectionRecord.upperLeft, 0, 0); + this.outputFile.write((ByteData)sr); + if (this.settings.getHorizontalFreeze() != 0) { + sr = new SelectionRecord(SelectionRecord.upperRight, this.settings.getHorizontalFreeze(), 0); + this.outputFile.write((ByteData)sr); + } + if (this.settings.getVerticalFreeze() != 0) { + sr = new SelectionRecord(SelectionRecord.lowerLeft, 0, this.settings.getVerticalFreeze()); + this.outputFile.write((ByteData)sr); + } + if (this.settings.getHorizontalFreeze() != 0 && this.settings.getVerticalFreeze() != 0) { + sr = new SelectionRecord(SelectionRecord.lowerRight, this.settings.getHorizontalFreeze(), this.settings.getVerticalFreeze()); + this.outputFile.write((ByteData)sr); + } + Weird1Record w1r = new Weird1Record(); + this.outputFile.write((ByteData)w1r); + } else { + SelectionRecord sr = new SelectionRecord(SelectionRecord.upperLeft, 0, 0); + this.outputFile.write((ByteData)sr); + } + if (this.settings.getZoomFactor() != 100) { + SCLRecord sclr = new SCLRecord(this.settings.getZoomFactor()); + this.outputFile.write((ByteData)sclr); + } + this.mergedCells.write(this.outputFile); + Iterator hi = this.hyperlinks.iterator(); + WritableHyperlink hlr = null; + while (hi.hasNext()) { + hlr = hi.next(); + this.outputFile.write((ByteData)hlr); + } + if (this.buttonPropertySet != null) + this.outputFile.write((ByteData)this.buttonPropertySet); + EOFRecord eof = new EOFRecord(); + this.outputFile.write((ByteData)eof); + this.outputFile.setData(indexRecord.getData(), indexPos + 4); + } + + final HeaderRecord getHeader() { + return this.header; + } + + final FooterRecord getFooter() { + return this.footer; + } + + void setWriteData(RowRecord[] rws, ArrayList rb, ArrayList hl, MergedCells mc, TreeSet cf) { + this.rows = rws; + this.rowBreaks = rb; + this.hyperlinks = hl; + this.mergedCells = mc; + this.columnFormats = cf; + } + + void setDimensions(int rws, int cls) { + this.numRows = rws; + this.numCols = cls; + } + + void setSettings(SheetSettings sr) { + this.settings = sr; + } + + WorkspaceInformationRecord getWorkspaceOptions() { + return this.workspaceOptions; + } + + void setWorkspaceOptions(WorkspaceInformationRecord wo) { + if (wo != null) + this.workspaceOptions = wo; + } + + void setCharts(Chart[] ch) { + this.drawingWriter.setCharts(ch); + } + + void setDrawings(ArrayList dr, boolean mod) { + this.drawingWriter.setDrawings(dr, mod); + } + + Chart[] getCharts() { + return this.drawingWriter.getCharts(); + } + + void checkMergedBorders() { + Range[] mcells = this.mergedCells.getMergedCells(); + ArrayList borderFormats = new ArrayList(); + for (int mci = 0; mci < mcells.length; mci++) { + Range range = mcells[mci]; + Cell topLeft = range.getTopLeft(); + XFRecord tlformat = (XFRecord)topLeft.getCellFormat(); + if (tlformat != null && tlformat.hasBorders() == true && !tlformat.isRead()) + try { + CellXFRecord cf1 = new CellXFRecord(tlformat); + Cell bottomRight = range.getBottomRight(); + cf1.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf1.setBorder(Border.LEFT, tlformat.getBorderLine(Border.LEFT), tlformat.getBorderColour(Border.LEFT)); + cf1.setBorder(Border.TOP, tlformat.getBorderLine(Border.TOP), tlformat.getBorderColour(Border.TOP)); + if (topLeft.getRow() == bottomRight.getRow()) + cf1.setBorder(Border.BOTTOM, tlformat.getBorderLine(Border.BOTTOM), tlformat.getBorderColour(Border.BOTTOM)); + if (topLeft.getColumn() == bottomRight.getColumn()) + cf1.setBorder(Border.RIGHT, tlformat.getBorderLine(Border.RIGHT), tlformat.getBorderColour(Border.RIGHT)); + int index = borderFormats.indexOf(cf1); + if (index != -1) { + cf1 = borderFormats.get(index); + } else { + borderFormats.add(cf1); + } + ((WritableCell)topLeft).setCellFormat((CellFormat)cf1); + if (bottomRight.getRow() > topLeft.getRow()) { + if (bottomRight.getColumn() != topLeft.getColumn()) { + CellXFRecord cf2 = new CellXFRecord(tlformat); + cf2.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf2.setBorder(Border.LEFT, tlformat.getBorderLine(Border.LEFT), tlformat.getBorderColour(Border.LEFT)); + cf2.setBorder(Border.BOTTOM, tlformat.getBorderLine(Border.BOTTOM), tlformat.getBorderColour(Border.BOTTOM)); + index = borderFormats.indexOf(cf2); + if (index != -1) { + cf2 = borderFormats.get(index); + } else { + borderFormats.add(cf2); + } + this.sheet.addCell((WritableCell)new Blank(topLeft.getColumn(), bottomRight.getRow(), (CellFormat)cf2)); + } + for (int i = topLeft.getRow() + 1; i < bottomRight.getRow(); i++) { + CellXFRecord cf3 = new CellXFRecord(tlformat); + cf3.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf3.setBorder(Border.LEFT, tlformat.getBorderLine(Border.LEFT), tlformat.getBorderColour(Border.LEFT)); + if (topLeft.getColumn() == bottomRight.getColumn()) + cf3.setBorder(Border.RIGHT, tlformat.getBorderLine(Border.RIGHT), tlformat.getBorderColour(Border.RIGHT)); + index = borderFormats.indexOf(cf3); + if (index != -1) { + cf3 = borderFormats.get(index); + } else { + borderFormats.add(cf3); + } + this.sheet.addCell((WritableCell)new Blank(topLeft.getColumn(), i, (CellFormat)cf3)); + } + } + if (bottomRight.getColumn() > topLeft.getColumn()) { + if (bottomRight.getRow() != topLeft.getRow()) { + CellXFRecord cf6 = new CellXFRecord(tlformat); + cf6.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf6.setBorder(Border.RIGHT, tlformat.getBorderLine(Border.RIGHT), tlformat.getBorderColour(Border.RIGHT)); + cf6.setBorder(Border.TOP, tlformat.getBorderLine(Border.TOP), tlformat.getBorderColour(Border.TOP)); + index = borderFormats.indexOf(cf6); + if (index != -1) { + cf6 = borderFormats.get(index); + } else { + borderFormats.add(cf6); + } + this.sheet.addCell((WritableCell)new Blank(bottomRight.getColumn(), topLeft.getRow(), (CellFormat)cf6)); + } + int i = topLeft.getRow() + 1; + for (; i < bottomRight.getRow(); i++) { + CellXFRecord cf7 = new CellXFRecord(tlformat); + cf7.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf7.setBorder(Border.RIGHT, tlformat.getBorderLine(Border.RIGHT), tlformat.getBorderColour(Border.RIGHT)); + index = borderFormats.indexOf(cf7); + if (index != -1) { + cf7 = borderFormats.get(index); + } else { + borderFormats.add(cf7); + } + this.sheet.addCell((WritableCell)new Blank(bottomRight.getColumn(), i, (CellFormat)cf7)); + } + i = topLeft.getColumn() + 1; + for (; i < bottomRight.getColumn(); i++) { + CellXFRecord cf8 = new CellXFRecord(tlformat); + cf8.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf8.setBorder(Border.TOP, tlformat.getBorderLine(Border.TOP), tlformat.getBorderColour(Border.TOP)); + if (topLeft.getRow() == bottomRight.getRow()) + cf8.setBorder(Border.BOTTOM, tlformat.getBorderLine(Border.BOTTOM), tlformat.getBorderColour(Border.BOTTOM)); + index = borderFormats.indexOf(cf8); + if (index != -1) { + cf8 = borderFormats.get(index); + } else { + borderFormats.add(cf8); + } + this.sheet.addCell((WritableCell)new Blank(i, topLeft.getRow(), (CellFormat)cf8)); + } + } + if (bottomRight.getColumn() > topLeft.getColumn() || bottomRight.getRow() > topLeft.getRow()) { + CellXFRecord cf4 = new CellXFRecord(tlformat); + cf4.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf4.setBorder(Border.RIGHT, tlformat.getBorderLine(Border.RIGHT), tlformat.getBorderColour(Border.RIGHT)); + cf4.setBorder(Border.BOTTOM, tlformat.getBorderLine(Border.BOTTOM), tlformat.getBorderColour(Border.BOTTOM)); + if (bottomRight.getRow() == topLeft.getRow()) + cf4.setBorder(Border.TOP, tlformat.getBorderLine(Border.TOP), tlformat.getBorderColour(Border.TOP)); + if (bottomRight.getColumn() == topLeft.getColumn()) + cf4.setBorder(Border.LEFT, tlformat.getBorderLine(Border.LEFT), tlformat.getBorderColour(Border.LEFT)); + index = borderFormats.indexOf(cf4); + if (index != -1) { + cf4 = borderFormats.get(index); + } else { + borderFormats.add(cf4); + } + this.sheet.addCell((WritableCell)new Blank(bottomRight.getColumn(), bottomRight.getRow(), (CellFormat)cf4)); + int i = topLeft.getColumn() + 1; + for (; i < bottomRight.getColumn(); i++) { + CellXFRecord cf5 = new CellXFRecord(tlformat); + cf5.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK); + cf5.setBorder(Border.BOTTOM, tlformat.getBorderLine(Border.BOTTOM), tlformat.getBorderColour(Border.BOTTOM)); + if (topLeft.getRow() == bottomRight.getRow()) + cf5.setBorder(Border.TOP, tlformat.getBorderLine(Border.TOP), tlformat.getBorderColour(Border.TOP)); + index = borderFormats.indexOf(cf5); + if (index != -1) { + cf5 = borderFormats.get(index); + } else { + borderFormats.add(cf5); + } + this.sheet.addCell((WritableCell)new Blank(i, bottomRight.getRow(), (CellFormat)cf5)); + } + } + } catch (WriteException e) { + logger.warn(e.toString()); + } + } + } + + private Cell[] getColumn(int col) { + boolean found = false; + int row = this.numRows - 1; + while (row >= 0 && !found) { + if (this.rows[row] != null && this.rows[row].getCell(col) != null) { + found = true; + continue; + } + row--; + } + Cell[] cells = new Cell[row + 1]; + for (int i = 0; i <= row; i++) + cells[i] = (this.rows[i] != null) ? (Cell)this.rows[i].getCell(col) : null; + return cells; + } + + void setChartOnly() { + this.chartOnly = true; + } + + void setPLS(PLSRecord pls) { + this.plsRecord = pls; + } + + void setButtonPropertySet(ButtonPropertySetRecord bps) { + this.buttonPropertySet = bps; + } + + void setDataValidation(DataValidation dv) { + this.dataValidation = dv; + } +} diff --git a/hrmsEjb/jxl/write/biff/StringRecord.java b/hrmsEjb/jxl/write/biff/StringRecord.java new file mode 100644 index 0000000..2decb0a --- /dev/null +++ b/hrmsEjb/jxl/write/biff/StringRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class StringRecord extends WritableRecordData { + private String value; + + public StringRecord(String val) { + super(Type.STRING); + this.value = val; + } + + public byte[] getData() { + byte[] data = new byte[this.value.length() * 2 + 3]; + IntegerHelper.getTwoBytes(this.value.length(), data, 0); + data[2] = 1; + StringHelper.getUnicodeBytes(this.value, data, 3); + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/StyleXFRecord.java b/hrmsEjb/jxl/write/biff/StyleXFRecord.java new file mode 100644 index 0000000..17234d1 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/StyleXFRecord.java @@ -0,0 +1,20 @@ +package jxl.write.biff; + +import jxl.biff.DisplayFormat; +import jxl.biff.FontRecord; +import jxl.biff.XFRecord; + +public class StyleXFRecord extends XFRecord { + public StyleXFRecord(FontRecord fnt, DisplayFormat form) { + super(fnt, form); + setXFDetails(XFRecord.style, 65520); + } + + public final void setCellOptions(int opt) { + setXFCellOptions(opt); + } + + public void setLocked(boolean l) { + setXFLocked(l); + } +} diff --git a/hrmsEjb/jxl/write/biff/Styles.java b/hrmsEjb/jxl/write/biff/Styles.java new file mode 100644 index 0000000..3e9ef84 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/Styles.java @@ -0,0 +1,110 @@ +package jxl.write.biff; + +import common.Logger; +import jxl.biff.DisplayFormat; +import jxl.biff.FontRecord; +import jxl.biff.XFRecord; +import jxl.format.Font; +import jxl.write.DateFormat; +import jxl.write.DateFormats; +import jxl.write.NumberFormats; +import jxl.write.WritableCellFormat; +import jxl.write.WritableFont; +import jxl.write.WritableWorkbook; + +class Styles { + private static Logger logger = Logger.getLogger(Styles.class); + + private WritableFont arial10pt = null; + + private WritableFont hyperlinkFont = null; + + private WritableCellFormat normalStyle = null; + + private WritableCellFormat hyperlinkStyle = null; + + private WritableCellFormat hiddenStyle = null; + + private WritableCellFormat defaultDateFormat; + + private synchronized void initNormalStyle() { + this.normalStyle = new WritableCellFormat(getArial10Pt(), NumberFormats.DEFAULT); + this.normalStyle.setFont((FontRecord)getArial10Pt()); + } + + public WritableCellFormat getNormalStyle() { + if (this.normalStyle == null) + initNormalStyle(); + return this.normalStyle; + } + + private synchronized void initHiddenStyle() { + this.hiddenStyle = new WritableCellFormat(getArial10Pt(), (DisplayFormat)new DateFormat(";;;")); + } + + public WritableCellFormat getHiddenStyle() { + if (this.hiddenStyle == null) + initHiddenStyle(); + return this.hiddenStyle; + } + + private synchronized void initHyperlinkStyle() { + this.hyperlinkStyle = new WritableCellFormat(getHyperlinkFont(), NumberFormats.DEFAULT); + } + + public WritableCellFormat getHyperlinkStyle() { + if (this.hyperlinkStyle == null) + initHyperlinkStyle(); + return this.hyperlinkStyle; + } + + private synchronized void initArial10Pt() { + this.arial10pt = new WritableFont((Font)WritableWorkbook.ARIAL_10_PT); + } + + public WritableFont getArial10Pt() { + if (this.arial10pt == null) + initArial10Pt(); + return this.arial10pt; + } + + private synchronized void initHyperlinkFont() { + this.hyperlinkFont = new WritableFont((Font)WritableWorkbook.HYPERLINK_FONT); + } + + public WritableFont getHyperlinkFont() { + if (this.hyperlinkFont == null) + initHyperlinkFont(); + return this.hyperlinkFont; + } + + private synchronized void initDefaultDateFormat() { + this.defaultDateFormat = new WritableCellFormat(DateFormats.DEFAULT); + } + + public WritableCellFormat getDefaultDateFormat() { + if (this.defaultDateFormat == null) + initDefaultDateFormat(); + return this.defaultDateFormat; + } + + public XFRecord getFormat(XFRecord wf) { + WritableCellFormat writableCellFormat; + XFRecord format = wf; + if (format == WritableWorkbook.NORMAL_STYLE) { + writableCellFormat = getNormalStyle(); + } else if (writableCellFormat == WritableWorkbook.HYPERLINK_STYLE) { + writableCellFormat = getHyperlinkStyle(); + } else if (writableCellFormat == WritableWorkbook.HIDDEN_STYLE) { + writableCellFormat = getHiddenStyle(); + } else if (writableCellFormat == DateRecord.defaultDateFormat) { + writableCellFormat = getDefaultDateFormat(); + } + if (writableCellFormat.getFont() == WritableWorkbook.ARIAL_10_PT) { + writableCellFormat.setFont((FontRecord)getArial10Pt()); + } else if (writableCellFormat.getFont() == WritableWorkbook.HYPERLINK_FONT) { + writableCellFormat.setFont((FontRecord)getHyperlinkFont()); + } + return (XFRecord)writableCellFormat; + } +} diff --git a/hrmsEjb/jxl/write/biff/SupbookRecord.java b/hrmsEjb/jxl/write/biff/SupbookRecord.java new file mode 100644 index 0000000..ede25c8 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/SupbookRecord.java @@ -0,0 +1,158 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import jxl.WorkbookSettings; +import jxl.biff.EncodedURLHelper; +import jxl.biff.IntegerHelper; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class SupbookRecord extends WritableRecordData { + private static Logger logger = Logger.getLogger(SupbookRecord.class); + + private SupbookType type; + + private byte[] data; + + private int numSheets; + + private String fileName; + + private String[] sheetNames; + + private WorkbookSettings workbookSettings; + + private static class SupbookType { + private SupbookType() {} + } + + public static final SupbookType INTERNAL = new SupbookType(); + + public static final SupbookType EXTERNAL = new SupbookType(); + + public static final SupbookType ADDIN = new SupbookType(); + + public static final SupbookType LINK = new SupbookType(); + + public static final SupbookType UNKNOWN = new SupbookType(); + + public SupbookRecord(int sheets, WorkbookSettings ws) { + super(Type.SUPBOOK); + this.numSheets = sheets; + this.type = INTERNAL; + this.workbookSettings = ws; + } + + public SupbookRecord(String fn, WorkbookSettings ws) { + super(Type.SUPBOOK); + this.fileName = fn; + this.numSheets = 1; + this.sheetNames = new String[0]; + this.workbookSettings = ws; + this.type = EXTERNAL; + } + + public SupbookRecord(jxl.read.biff.SupbookRecord sr, WorkbookSettings ws) { + super(Type.SUPBOOK); + this.workbookSettings = ws; + if (sr.getType() == jxl.read.biff.SupbookRecord.INTERNAL) { + this.type = INTERNAL; + this.numSheets = sr.getNumberOfSheets(); + } else if (sr.getType() == jxl.read.biff.SupbookRecord.EXTERNAL) { + this.type = EXTERNAL; + this.numSheets = sr.getNumberOfSheets(); + this.fileName = sr.getFileName(); + this.sheetNames = new String[this.numSheets]; + for (int i = 0; i < this.numSheets; i++) + this.sheetNames[i] = sr.getSheetName(i); + } + } + + private void initInternal(jxl.read.biff.SupbookRecord sr) { + this.numSheets = sr.getNumberOfSheets(); + initInternal(); + } + + private void initInternal() { + this.data = new byte[4]; + IntegerHelper.getTwoBytes(this.numSheets, this.data, 0); + this.data[2] = 1; + this.data[3] = 4; + this.type = INTERNAL; + } + + void adjustInternal(int sheets) { + Assert.verify((this.type == INTERNAL)); + this.numSheets = sheets; + initInternal(); + } + + private void initExternal() { + int totalSheetNameLength = 0; + for (int i = 0; i < this.numSheets; i++) + totalSheetNameLength += this.sheetNames[i].length(); + byte[] fileNameData = EncodedURLHelper.getEncodedURL(this.fileName, this.workbookSettings); + int dataLength = 6 + fileNameData.length + this.numSheets * 3 + totalSheetNameLength * 2; + this.data = new byte[dataLength]; + IntegerHelper.getTwoBytes(this.numSheets, this.data, 0); + int pos = 2; + IntegerHelper.getTwoBytes(fileNameData.length + 1, this.data, pos); + this.data[pos + 2] = 0; + this.data[pos + 3] = 1; + System.arraycopy(fileNameData, 0, this.data, pos + 4, fileNameData.length); + pos += 4 + fileNameData.length; + for (int j = 0; j < this.sheetNames.length; j++) { + IntegerHelper.getTwoBytes(this.sheetNames[j].length(), this.data, pos); + this.data[pos + 2] = 1; + StringHelper.getUnicodeBytes(this.sheetNames[j], this.data, pos + 3); + pos += 3 + this.sheetNames[j].length() * 2; + } + } + + public byte[] getData() { + if (this.type == INTERNAL) { + initInternal(); + } else if (this.type == EXTERNAL) { + initExternal(); + } else { + logger.warn("unsupported supbook type - defaulting to internal"); + initInternal(); + } + return this.data; + } + + public SupbookType getType() { + return this.type; + } + + public int getNumberOfSheets() { + return this.numSheets; + } + + public String getFileName() { + return this.fileName; + } + + public int getSheetIndex(String s) { + boolean found = false; + int sheetIndex = 0; + for (int i = 0; i < this.sheetNames.length && !found; i++) { + if (this.sheetNames[i].equals(s)) { + found = true; + sheetIndex = 0; + } + } + if (found) + return sheetIndex; + String[] names = new String[this.sheetNames.length + 1]; + names[this.sheetNames.length] = s; + this.sheetNames = names; + return this.sheetNames.length - 1; + } + + public String getSheetName(int s) { + return this.sheetNames[s]; + } +} diff --git a/hrmsEjb/jxl/write/biff/TabIdRecord.java b/hrmsEjb/jxl/write/biff/TabIdRecord.java new file mode 100644 index 0000000..cc76d2c --- /dev/null +++ b/hrmsEjb/jxl/write/biff/TabIdRecord.java @@ -0,0 +1,20 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class TabIdRecord extends WritableRecordData { + private byte[] data; + + public TabIdRecord(int sheets) { + super(Type.TABID); + this.data = new byte[sheets * 2]; + for (int i = 0; i < sheets; i++) + IntegerHelper.getTwoBytes(i + 1, this.data, i * 2); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/TopMarginRecord.java b/hrmsEjb/jxl/write/biff/TopMarginRecord.java new file mode 100644 index 0000000..9a2b535 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/TopMarginRecord.java @@ -0,0 +1,9 @@ +package jxl.write.biff; + +import jxl.biff.Type; + +class TopMarginRecord extends MarginRecord { + TopMarginRecord(double v) { + super(Type.TOPMARGIN, v); + } +} diff --git a/hrmsEjb/jxl/write/biff/UsesElfsRecord.java b/hrmsEjb/jxl/write/biff/UsesElfsRecord.java new file mode 100644 index 0000000..028b119 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/UsesElfsRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class UsesElfsRecord extends WritableRecordData { + private byte[] data; + + private boolean usesElfs; + + public UsesElfsRecord() { + super(Type.USESELFS); + this.usesElfs = true; + this.data = new byte[2]; + if (this.usesElfs) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/VerticalCentreRecord.java b/hrmsEjb/jxl/write/biff/VerticalCentreRecord.java new file mode 100644 index 0000000..bc452e0 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/VerticalCentreRecord.java @@ -0,0 +1,22 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class VerticalCentreRecord extends WritableRecordData { + private byte[] data; + + private boolean centre; + + public VerticalCentreRecord(boolean ce) { + super(Type.VCENTER); + this.centre = ce; + this.data = new byte[2]; + if (this.centre) + this.data[0] = 1; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/Weird1Record.java b/hrmsEjb/jxl/write/biff/Weird1Record.java new file mode 100644 index 0000000..b88dfdb --- /dev/null +++ b/hrmsEjb/jxl/write/biff/Weird1Record.java @@ -0,0 +1,16 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class Weird1Record extends WritableRecordData { + public Weird1Record() { + super(Type.WEIRD1); + } + + public byte[] getData() { + byte[] data = new byte[6]; + data[2] = 55; + return data; + } +} diff --git a/hrmsEjb/jxl/write/biff/Window1Record.java b/hrmsEjb/jxl/write/biff/Window1Record.java new file mode 100644 index 0000000..54f95c5 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/Window1Record.java @@ -0,0 +1,19 @@ +package jxl.write.biff; + +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class Window1Record extends WritableRecordData { + private byte[] data; + + public Window1Record() { + super(Type.WINDOW1); + this.data = new byte[] { + 104, 1, 14, 1, 92, 58, -66, 35, 56, 0, + 0, 0, 0, 0, 1, 0, 88, 2 }; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/Window2Record.java b/hrmsEjb/jxl/write/biff/Window2Record.java new file mode 100644 index 0000000..2d88e8d --- /dev/null +++ b/hrmsEjb/jxl/write/biff/Window2Record.java @@ -0,0 +1,35 @@ +package jxl.write.biff; + +import jxl.SheetSettings; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class Window2Record extends WritableRecordData { + private byte[] data; + + public Window2Record(SheetSettings settings) { + super(Type.WINDOW2); + int selected = settings.isSelected() ? 6 : 0; + int options = 0; + options |= 0x0; + if (settings.getShowGridLines()) + options |= 0x2; + options |= 0x4; + options |= 0x0; + if (settings.getDisplayZeroValues()) + options |= 0x10; + options |= 0x20; + options |= 0x80; + if (settings.getHorizontalFreeze() != 0 || settings.getVerticalFreeze() != 0) { + options |= 0x8; + selected |= 0x1; + } + this.data = new byte[] { + (byte)options, (byte)selected, 0, 0, 0, 0, 64, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/WindowProtectRecord.java b/hrmsEjb/jxl/write/biff/WindowProtectRecord.java new file mode 100644 index 0000000..764e60e --- /dev/null +++ b/hrmsEjb/jxl/write/biff/WindowProtectRecord.java @@ -0,0 +1,23 @@ +package jxl.write.biff; + +import jxl.biff.IntegerHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class WindowProtectRecord extends WritableRecordData { + private boolean protection; + + private byte[] data; + + public WindowProtectRecord(boolean prot) { + super(Type.WINDOWPROTECT); + this.protection = prot; + this.data = new byte[2]; + if (this.protection) + IntegerHelper.getTwoBytes(1, this.data, 0); + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/jxl/write/biff/WritableFontRecord.java b/hrmsEjb/jxl/write/biff/WritableFontRecord.java new file mode 100644 index 0000000..f18015c --- /dev/null +++ b/hrmsEjb/jxl/write/biff/WritableFontRecord.java @@ -0,0 +1,57 @@ +package jxl.write.biff; + +import jxl.biff.FontRecord; +import jxl.format.Font; +import jxl.write.WriteException; + +public class WritableFontRecord extends FontRecord { + protected WritableFontRecord(String fn, int ps, int bold, boolean it, int us, int ci, int ss) { + super(fn, ps, bold, it, us, ci, ss); + } + + protected WritableFontRecord(Font f) { + super(f); + } + + protected void setPointSize(int pointSize) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setFontPointSize(pointSize); + } + + protected void setBoldStyle(int boldStyle) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setFontBoldStyle(boldStyle); + } + + protected void setItalic(boolean italic) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setFontItalic(italic); + } + + protected void setUnderlineStyle(int us) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setFontUnderlineStyle(us); + } + + protected void setColour(int colour) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setFontColour(colour); + } + + protected void setScriptStyle(int scriptStyle) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setFontScriptStyle(scriptStyle); + } + + protected void setStruckout(boolean os) throws WriteException { + if (isInitialized()) + throw new JxlWriteException(JxlWriteException.formatInitialized); + setFontStruckout(os); + } +} diff --git a/hrmsEjb/jxl/write/biff/WritableFonts.java b/hrmsEjb/jxl/write/biff/WritableFonts.java new file mode 100644 index 0000000..ff7e8bf --- /dev/null +++ b/hrmsEjb/jxl/write/biff/WritableFonts.java @@ -0,0 +1,17 @@ +package jxl.write.biff; + +import jxl.biff.FontRecord; +import jxl.biff.Fonts; +import jxl.write.WritableFont; + +public class WritableFonts extends Fonts { + public WritableFonts(WritableWorkbookImpl w) { + addFont((FontRecord)w.getStyles().getArial10Pt()); + WritableFont f = new WritableFont(WritableFont.ARIAL); + addFont((FontRecord)f); + f = new WritableFont(WritableFont.ARIAL); + addFont((FontRecord)f); + f = new WritableFont(WritableFont.ARIAL); + addFont((FontRecord)f); + } +} diff --git a/hrmsEjb/jxl/write/biff/WritableFormattingRecords.java b/hrmsEjb/jxl/write/biff/WritableFormattingRecords.java new file mode 100644 index 0000000..32d1edd --- /dev/null +++ b/hrmsEjb/jxl/write/biff/WritableFormattingRecords.java @@ -0,0 +1,102 @@ +package jxl.write.biff; + +import common.Assert; +import jxl.biff.FontRecord; +import jxl.biff.Fonts; +import jxl.biff.FormattingRecords; +import jxl.biff.NumFormatRecordsException; +import jxl.biff.XFRecord; +import jxl.write.NumberFormats; +import jxl.write.WritableCellFormat; + +public class WritableFormattingRecords extends FormattingRecords { + public static WritableCellFormat normalStyle; + + public WritableFormattingRecords(Fonts f, Styles styles) { + super(f); + try { + StyleXFRecord sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(2), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(3), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + sxf = new StyleXFRecord((FontRecord)styles.getArial10Pt(), NumberFormats.DEFAULT); + sxf.setLocked(true); + sxf.setCellOptions(62464); + addStyle(sxf); + addStyle((XFRecord)styles.getNormalStyle()); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.FORMAT7); + sxf.setLocked(true); + sxf.setCellOptions(63488); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.FORMAT5); + sxf.setLocked(true); + sxf.setCellOptions(63488); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.FORMAT8); + sxf.setLocked(true); + sxf.setCellOptions(63488); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.FORMAT6); + sxf.setLocked(true); + sxf.setCellOptions(63488); + addStyle(sxf); + sxf = new StyleXFRecord(getFonts().getFont(1), NumberFormats.PERCENT_INTEGER); + sxf.setLocked(true); + sxf.setCellOptions(63488); + addStyle(sxf); + } catch (NumFormatRecordsException e) { + Assert.verify(false, e.getMessage()); + } + } +} diff --git a/hrmsEjb/jxl/write/biff/WritableSheetImpl.java b/hrmsEjb/jxl/write/biff/WritableSheetImpl.java new file mode 100644 index 0000000..7dfa09e --- /dev/null +++ b/hrmsEjb/jxl/write/biff/WritableSheetImpl.java @@ -0,0 +1,1043 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.TreeSet; +import jxl.BooleanCell; +import jxl.Cell; +import jxl.CellType; +import jxl.CellView; +import jxl.DateCell; +import jxl.HeaderFooter; +import jxl.Hyperlink; +import jxl.Image; +import jxl.LabelCell; +import jxl.NumberCell; +import jxl.Range; +import jxl.Sheet; +import jxl.SheetSettings; +import jxl.WorkbookSettings; +import jxl.biff.CellReferenceHelper; +import jxl.biff.EmptyCell; +import jxl.biff.FormattingRecords; +import jxl.biff.FormulaData; +import jxl.biff.IndexMapping; +import jxl.biff.NumFormatRecordsException; +import jxl.biff.SheetRangeImpl; +import jxl.biff.WorkspaceInformationRecord; +import jxl.biff.XFRecord; +import jxl.biff.drawing.Button; +import jxl.biff.drawing.Chart; +import jxl.biff.drawing.Comment; +import jxl.biff.drawing.Drawing; +import jxl.biff.drawing.DrawingGroupObject; +import jxl.format.CellFormat; +import jxl.format.PageOrientation; +import jxl.format.PaperSize; +import jxl.read.biff.ColumnInfoRecord; +import jxl.read.biff.DataValidation; +import jxl.read.biff.RowRecord; +import jxl.read.biff.SheetImpl; +import jxl.write.Blank; +import jxl.write.Boolean; +import jxl.write.DateTime; +import jxl.write.Label; +import jxl.write.Number; +import jxl.write.WritableCell; +import jxl.write.WritableCellFormat; +import jxl.write.WritableHyperlink; +import jxl.write.WritableImage; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; +import jxl.write.WriteException; + +class WritableSheetImpl implements WritableSheet { + private static Logger logger = Logger.getLogger(WritableSheetImpl.class); + + private String name; + + private File outputFile; + + private RowRecord[] rows; + + private FormattingRecords formatRecords; + + private SharedStrings sharedStrings; + + private TreeSet columnFormats; + + private ArrayList hyperlinks; + + private MergedCells mergedCells; + + private int numRows; + + private int numColumns; + + private PLSRecord plsRecord; + + private ButtonPropertySetRecord buttonPropertySet; + + private boolean chartOnly; + + private DataValidation dataValidation; + + private ArrayList rowBreaks; + + private ArrayList drawings; + + private ArrayList images; + + private boolean drawingsModified; + + private SheetSettings settings; + + private SheetWriter sheetWriter; + + private WorkbookSettings workbookSettings; + + private WritableWorkbookImpl workbook; + + private static final int rowGrowSize = 10; + + private static final int numRowsPerSheet = 65536; + + private static final int maxSheetNameLength = 31; + + private static final char[] illegalSheetNameCharacters = new char[] { '*', ':', '?', '\\' }; + + private static final String[] imageTypes = new String[] { "png" }; + + private static class ColumnInfoComparator implements Comparator { + private ColumnInfoComparator() {} + + public boolean equals(Object o) { + return (o == this); + } + + public int compare(Object o1, Object o2) { + if (o1 == o2) + return 0; + Assert.verify(o1 instanceof ColumnInfoRecord); + Assert.verify(o2 instanceof ColumnInfoRecord); + ColumnInfoRecord ci1 = (ColumnInfoRecord)o1; + ColumnInfoRecord ci2 = (ColumnInfoRecord)o2; + return ci1.getColumn() - ci2.getColumn(); + } + } + + public WritableSheetImpl(String n, File of, FormattingRecords fr, SharedStrings ss, WorkbookSettings ws, WritableWorkbookImpl ww) { + this.name = validateName(n); + this.outputFile = of; + this.rows = new RowRecord[0]; + this.numRows = 0; + this.numColumns = 0; + this.chartOnly = false; + this.workbook = ww; + this.formatRecords = fr; + this.sharedStrings = ss; + this.workbookSettings = ws; + this.drawingsModified = false; + this.columnFormats = new TreeSet(new ColumnInfoComparator()); + this.hyperlinks = new ArrayList(); + this.mergedCells = new MergedCells(this); + this.rowBreaks = new ArrayList(); + this.drawings = new ArrayList(); + this.images = new ArrayList(); + this.settings = new SheetSettings(); + this.sheetWriter = new SheetWriter(this.outputFile, this, this.workbookSettings); + } + + public Cell getCell(String loc) { + return getCell(CellReferenceHelper.getColumn(loc), CellReferenceHelper.getRow(loc)); + } + + public Cell getCell(int column, int row) { + return (Cell)getWritableCell(column, row); + } + + public WritableCell getWritableCell(String loc) { + return getWritableCell(CellReferenceHelper.getColumn(loc), CellReferenceHelper.getRow(loc)); + } + + public WritableCell getWritableCell(int column, int row) { + EmptyCell emptyCell; + WritableCell c = null; + if (row < this.rows.length && this.rows[row] != null) + c = this.rows[row].getCell(column); + if (c == null) + emptyCell = new EmptyCell(column, row); + return (WritableCell)emptyCell; + } + + public int getRows() { + return this.numRows; + } + + public int getColumns() { + return this.numColumns; + } + + public Cell findCell(String contents) { + Cell cell = null; + boolean found = false; + for (int i = 0; i < getRows() && !found; i++) { + Cell[] row = getRow(i); + for (int j = 0; j < row.length && !found; j++) { + if (row[j].getContents().equals(contents)) { + cell = row[j]; + found = true; + } + } + } + return cell; + } + + public LabelCell findLabelCell(String contents) { + LabelCell cell = null; + boolean found = false; + for (int i = 0; i < getRows() && !found; i++) { + Cell[] row = getRow(i); + for (int j = 0; j < row.length && !found; j++) { + if ((row[j].getType() == CellType.LABEL || row[j].getType() == CellType.STRING_FORMULA) && row[j].getContents().equals(contents)) { + cell = (LabelCell)row[j]; + found = true; + } + } + } + return cell; + } + + public Cell[] getRow(int row) { + boolean found = false; + int col = this.numColumns - 1; + while (col >= 0 && !found) { + if (getCell(col, row).getType() != CellType.EMPTY) { + found = true; + continue; + } + col--; + } + Cell[] cells = new Cell[col + 1]; + for (int i = 0; i <= col; i++) + cells[i] = getCell(i, row); + return cells; + } + + public Cell[] getColumn(int col) { + boolean found = false; + int row = this.numRows - 1; + while (row >= 0 && !found) { + if (getCell(col, row).getType() != CellType.EMPTY) { + found = true; + continue; + } + row--; + } + Cell[] cells = new Cell[row + 1]; + for (int i = 0; i <= row; i++) + cells[i] = getCell(col, i); + return cells; + } + + public String getName() { + return this.name; + } + + public void insertRow(int row) { + if (row < 0 || row >= this.numRows) + return; + RowRecord[] oldRows = this.rows; + if (this.numRows == this.rows.length) { + this.rows = new RowRecord[oldRows.length + 10]; + } else { + this.rows = new RowRecord[oldRows.length]; + } + System.arraycopy(oldRows, 0, this.rows, 0, row); + System.arraycopy(oldRows, row, this.rows, row + 1, this.numRows - row); + for (int i = row + 1; i <= this.numRows; i++) { + if (this.rows[i] != null) + this.rows[i].incrementRow(); + } + HyperlinkRecord hr = null; + Iterator iterator = this.hyperlinks.iterator(); + while (iterator.hasNext()) { + hr = iterator.next(); + hr.insertRow(row); + } + if (this.dataValidation != null) + this.dataValidation.insertRow(row); + this.mergedCells.insertRow(row); + ArrayList newRowBreaks = new ArrayList(); + Iterator ri = this.rowBreaks.iterator(); + while (ri.hasNext()) { + int val = ((Integer)ri.next()).intValue(); + if (val >= row) + val++; + newRowBreaks.add(new Integer(val)); + } + this.rowBreaks = newRowBreaks; + if (this.workbookSettings.getFormulaAdjust()) + this.workbook.rowInserted(this, row); + this.numRows++; + } + + public void insertColumn(int col) { + if (col < 0 || col >= this.numColumns) + return; + for (int i = 0; i < this.numRows; i++) { + if (this.rows[i] != null) + this.rows[i].insertColumn(col); + } + HyperlinkRecord hr = null; + Iterator iterator = this.hyperlinks.iterator(); + while (iterator.hasNext()) { + hr = iterator.next(); + hr.insertColumn(col); + } + iterator = this.columnFormats.iterator(); + while (iterator.hasNext()) { + ColumnInfoRecord cir = (ColumnInfoRecord)iterator.next(); + if (cir.getColumn() >= col) + cir.incrementColumn(); + } + if (this.dataValidation != null) + this.dataValidation.insertColumn(col); + this.mergedCells.insertColumn(col); + if (this.workbookSettings.getFormulaAdjust()) + this.workbook.columnInserted(this, col); + this.numColumns++; + } + + public void removeColumn(int col) { + if (col < 0 || col >= this.numColumns) + return; + for (int i = 0; i < this.numRows; i++) { + if (this.rows[i] != null) + this.rows[i].removeColumn(col); + } + HyperlinkRecord hr = null; + Iterator iterator = this.hyperlinks.iterator(); + while (iterator.hasNext()) { + hr = iterator.next(); + if (hr.getColumn() == col && hr.getLastColumn() == col) { + this.hyperlinks.remove(this.hyperlinks.indexOf(hr)); + continue; + } + hr.removeColumn(col); + } + if (this.dataValidation != null) + this.dataValidation.removeColumn(col); + this.mergedCells.removeColumn(col); + iterator = this.columnFormats.iterator(); + ColumnInfoRecord removeColumn = null; + while (iterator.hasNext()) { + ColumnInfoRecord cir = (ColumnInfoRecord)iterator.next(); + if (cir.getColumn() == col) { + removeColumn = cir; + continue; + } + if (cir.getColumn() > col) + cir.decrementColumn(); + } + if (removeColumn != null) + this.columnFormats.remove(removeColumn); + if (this.workbookSettings.getFormulaAdjust()) + this.workbook.columnRemoved(this, col); + this.numColumns--; + } + + public void removeRow(int row) { + if (row < 0 || row >= this.numRows) + return; + RowRecord[] oldRows = this.rows; + this.rows = new RowRecord[oldRows.length]; + System.arraycopy(oldRows, 0, this.rows, 0, row); + System.arraycopy(oldRows, row + 1, this.rows, row, this.numRows - row + 1); + for (int i = row; i < this.numRows; i++) { + if (this.rows[i] != null) + this.rows[i].decrementRow(); + } + HyperlinkRecord hr = null; + Iterator iterator = this.hyperlinks.iterator(); + while (iterator.hasNext()) { + hr = iterator.next(); + if (hr.getRow() == row && hr.getLastRow() == row) { + iterator.remove(); + continue; + } + hr.removeRow(row); + } + if (this.dataValidation != null) + this.dataValidation.removeRow(row); + this.mergedCells.removeRow(row); + ArrayList newRowBreaks = new ArrayList(); + Iterator ri = this.rowBreaks.iterator(); + while (ri.hasNext()) { + int val = ((Integer)ri.next()).intValue(); + if (val != row) { + if (val > row) + val--; + newRowBreaks.add(new Integer(val)); + } + } + this.rowBreaks = newRowBreaks; + if (this.workbookSettings.getFormulaAdjust()) + this.workbook.rowRemoved(this, row); + this.numRows--; + } + + public void addCell(WritableCell cell) throws WriteException, RowsExceededException { + if (cell.getType() == CellType.EMPTY) + if (cell != null && cell.getCellFormat() == null) + return; + CellValue cv = (CellValue)cell; + if (cv.isReferenced()) + throw new JxlWriteException(JxlWriteException.cellReferenced); + int row = cell.getRow(); + RowRecord rowrec = getRowRecord(row); + rowrec.addCell(cv); + this.numRows = Math.max(row + 1, this.numRows); + this.numColumns = Math.max(this.numColumns, rowrec.getMaxColumn()); + cv.setCellDetails(this.formatRecords, this.sharedStrings, this); + } + + private RowRecord getRowRecord(int row) throws RowsExceededException { + if (row >= 65536) + throw new RowsExceededException(); + if (row >= this.rows.length) { + RowRecord[] oldRows = this.rows; + this.rows = new RowRecord[Math.max(oldRows.length + 10, row + 1)]; + System.arraycopy(oldRows, 0, this.rows, 0, oldRows.length); + oldRows = null; + } + RowRecord rowrec = this.rows[row]; + if (rowrec == null) { + rowrec = new RowRecord(row); + this.rows[row] = rowrec; + } + return rowrec; + } + + RowRecord getRowInfo(int r) { + if (r < 0 || r > this.rows.length) + return null; + return this.rows[r]; + } + + ColumnInfoRecord getColumnInfo(int c) { + Iterator i = this.columnFormats.iterator(); + ColumnInfoRecord cir = null; + boolean stop = false; + while (i.hasNext() && !stop) { + cir = i.next(); + if (cir.getColumn() >= c) + stop = true; + } + if (!stop) + return null; + return (cir.getColumn() == c) ? cir : null; + } + + public void setName(String n) { + this.name = n; + } + + public void setHidden(boolean h) { + this.settings.setHidden(h); + } + + public void setProtected(boolean prot) { + this.settings.setProtected(prot); + } + + public void setSelected() { + this.settings.setSelected(); + } + + public boolean isHidden() { + return this.settings.isHidden(); + } + + public void setColumnView(int col, int width) { + CellView cv = new CellView(); + cv.setSize(width * 256); + setColumnView(col, cv); + } + + public void setColumnView(int col, int width, CellFormat format) { + CellView cv = new CellView(); + cv.setSize(width * 256); + cv.setFormat(format); + setColumnView(col, cv); + } + + public void setColumnView(int col, CellView view) { + WritableCellFormat writableCellFormat; + XFRecord xfr = (XFRecord)view.getFormat(); + if (xfr == null) { + Styles styles = getWorkbook().getStyles(); + writableCellFormat = styles.getNormalStyle(); + } + try { + if (!writableCellFormat.isInitialized()) + this.formatRecords.addStyle((XFRecord)writableCellFormat); + int width = view.depUsed() ? (view.getDimension() * 256) : view.getSize(); + ColumnInfoRecord cir = new ColumnInfoRecord(col, width, (XFRecord)writableCellFormat); + if (view.isHidden()) + cir.setHidden(true); + if (!this.columnFormats.contains(cir)) { + this.columnFormats.add(cir); + } else { + this.columnFormats.remove(cir); + this.columnFormats.add(cir); + } + } catch (NumFormatRecordsException e) { + logger.warn("Maximum number of format records exceeded. Using default format."); + ColumnInfoRecord cir = new ColumnInfoRecord(col, view.getDimension() * 256, (XFRecord)WritableWorkbook.NORMAL_STYLE); + if (!this.columnFormats.contains(cir)) + this.columnFormats.add(cir); + } + } + + public void setRowView(int row, int height) throws RowsExceededException { + setRowView(row, height, false); + } + + public void setRowView(int row, boolean collapsed) throws RowsExceededException { + RowRecord rowrec = getRowRecord(row); + rowrec.setCollapsed(collapsed); + } + + public void setRowView(int row, int height, boolean collapsed) throws RowsExceededException { + RowRecord rowrec = getRowRecord(row); + rowrec.setRowHeight(height); + rowrec.setCollapsed(collapsed); + } + + public void write() throws IOException { + boolean dmod = this.drawingsModified; + if (this.workbook.getDrawingGroup() != null) + dmod |= this.workbook.getDrawingGroup().hasDrawingsOmitted(); + this.sheetWriter.setWriteData(this.rows, this.rowBreaks, this.hyperlinks, this.mergedCells, this.columnFormats); + this.sheetWriter.setDimensions(getRows(), getColumns()); + this.sheetWriter.setSettings(this.settings); + this.sheetWriter.setPLS(this.plsRecord); + this.sheetWriter.setDrawings(this.drawings, dmod); + this.sheetWriter.setButtonPropertySet(this.buttonPropertySet); + this.sheetWriter.setDataValidation(this.dataValidation); + this.sheetWriter.write(); + } + + private void copyCells(Sheet s) { + int cells = s.getRows(); + Cell[] row = null; + Cell cell = null; + for (int i = 0; i < cells; i++) { + row = s.getRow(i); + for (int j = 0; j < row.length; j++) { + cell = row[j]; + CellType ct = cell.getType(); + try { + if (ct == CellType.LABEL) { + Label l = new Label((LabelCell)cell); + addCell((WritableCell)l); + } else if (ct == CellType.NUMBER) { + Number n = new Number((NumberCell)cell); + addCell((WritableCell)n); + } else if (ct == CellType.DATE) { + DateTime dt = new DateTime((DateCell)cell); + addCell((WritableCell)dt); + } else if (ct == CellType.BOOLEAN) { + Boolean b = new Boolean((BooleanCell)cell); + addCell((WritableCell)b); + } else if (ct == CellType.NUMBER_FORMULA) { + ReadNumberFormulaRecord fr = new ReadNumberFormulaRecord((FormulaData)cell); + addCell(fr); + } else if (ct == CellType.STRING_FORMULA) { + ReadStringFormulaRecord fr = new ReadStringFormulaRecord((FormulaData)cell); + addCell(fr); + } else if (ct == CellType.BOOLEAN_FORMULA) { + ReadBooleanFormulaRecord fr = new ReadBooleanFormulaRecord((FormulaData)cell); + addCell(fr); + } else if (ct == CellType.DATE_FORMULA) { + ReadDateFormulaRecord fr = new ReadDateFormulaRecord((FormulaData)cell); + addCell(fr); + } else if (ct == CellType.FORMULA_ERROR) { + ReadErrorFormulaRecord fr = new ReadErrorFormulaRecord((FormulaData)cell); + addCell(fr); + } else if (ct == CellType.EMPTY) { + if (cell.getCellFormat() != null) { + Blank b = new Blank(cell); + addCell((WritableCell)b); + } + } + } catch (WriteException e) { + Assert.verify(false); + } + } + } + } + + private void copyCells(WritableSheet s) { + int cells = s.getRows(); + Cell[] row = null; + Cell cell = null; + for (int i = 0; i < cells; i++) { + row = s.getRow(i); + for (int j = 0; j < row.length; j++) { + cell = row[j]; + try { + WritableCell wc = ((WritableCell)cell).copyTo(cell.getColumn(), cell.getRow()); + addCell(wc); + } catch (WriteException e) { + Assert.verify(false); + } + } + } + } + + void copy(Sheet s) { + this.settings = new SheetSettings(s.getSettings()); + copyCells(s); + SheetImpl si = (SheetImpl)s; + ColumnInfoRecord[] readCirs = si.getColumnInfos(); + for (int i = 0; i < readCirs.length; i++) { + ColumnInfoRecord rcir = readCirs[i]; + for (int n = rcir.getStartColumn(); n <= rcir.getEndColumn(); n++) { + ColumnInfoRecord cir = new ColumnInfoRecord(rcir, n, this.formatRecords); + cir.setHidden(rcir.getHidden()); + this.columnFormats.add(cir); + } + } + Hyperlink[] hls = s.getHyperlinks(); + for (int j = 0; j < hls.length; j++) { + WritableHyperlink hr = new WritableHyperlink(hls[j], this); + this.hyperlinks.add(hr); + } + Range[] merged = s.getMergedCells(); + for (int k = 0; k < merged.length; k++) + this.mergedCells.add((Range)new SheetRangeImpl((SheetRangeImpl)merged[k], (Sheet)this)); + try { + RowRecord[] rowprops = si.getRowProperties(); + for (int n = 0; n < rowprops.length; n++) { + RowRecord rr = getRowRecord(rowprops[n].getRowNumber()); + XFRecord format = rowprops[n].hasDefaultFormat() ? this.formatRecords.getXFRecord(rowprops[n].getXFIndex()) : null; + rr.setRowDetails(rowprops[n].getRowHeight(), rowprops[n].matchesDefaultFontHeight(), rowprops[n].isCollapsed(), format); + } + } catch (RowsExceededException e) { + Assert.verify(false); + } + int[] rowbreaks = si.getRowPageBreaks(); + if (rowbreaks != null) + for (int n = 0; n < rowbreaks.length; n++) + this.rowBreaks.add(new Integer(rowbreaks[n])); + DataValidation rdv = si.getDataValidation(); + if (rdv != null) + this.dataValidation = new DataValidation(rdv, this.workbook, this.workbookSettings); + this.sheetWriter.setCharts(si.getCharts()); + DrawingGroupObject[] dr = si.getDrawings(); + for (int m = 0; m < dr.length; m++) { + if (dr[m] instanceof Drawing) { + WritableImage wi = new WritableImage(dr[m], this.workbook.getDrawingGroup()); + this.drawings.add(wi); + this.images.add(wi); + } else if (dr[m] instanceof Comment) { + Comment c = new Comment(dr[m], this.workbook.getDrawingGroup(), this.workbookSettings); + this.drawings.add(c); + CellValue cv = (CellValue)getWritableCell(c.getColumn(), c.getRow()); + Assert.verify((cv.getCellFeatures() != null)); + cv.getWritableCellFeatures().setCommentDrawing(c); + } else if (dr[m] instanceof Button) { + Button b = new Button(dr[m], this.workbook.getDrawingGroup(), this.workbookSettings); + this.drawings.add(b); + } + } + this.sheetWriter.setWorkspaceOptions(si.getWorkspaceOptions()); + if (si.getSheetBof().isChart()) { + this.chartOnly = true; + this.sheetWriter.setChartOnly(); + } + if (si.getPLS() != null) + if (si.getWorkbookBof().isBiff7()) { + logger.warn("Cannot copy Biff7 print settings record - ignoring"); + } else { + this.plsRecord = new PLSRecord(si.getPLS()); + } + if (si.getButtonPropertySet() != null) + this.buttonPropertySet = new ButtonPropertySetRecord(si.getButtonPropertySet()); + } + + void copy(WritableSheet s) { + this.settings = new SheetSettings(s.getSettings()); + copyCells(s); + this.columnFormats = ((WritableSheetImpl)s).columnFormats; + Range[] merged = s.getMergedCells(); + for (int i = 0; i < merged.length; i++) + this.mergedCells.add((Range)new SheetRangeImpl((SheetRangeImpl)merged[i], (Sheet)this)); + try { + RowRecord[] copyRows = ((WritableSheetImpl)s).rows; + RowRecord row = null; + for (int k = 0; k < copyRows.length; k++) { + row = copyRows[k]; + if (row != null && (!row.isDefaultHeight() || row.isCollapsed())) { + RowRecord rr = getRowRecord(k); + rr.setRowDetails(row.getRowHeight(), row.matchesDefaultFontHeight(), row.isCollapsed(), row.getStyle()); + } + } + } catch (RowsExceededException e) { + Assert.verify(false); + } + WritableSheetImpl si = (WritableSheetImpl)s; + this.rowBreaks = new ArrayList(si.rowBreaks); + DataValidation rdv = si.dataValidation; + if (rdv != null) + this.dataValidation = new DataValidation(rdv, this.workbook, this.workbookSettings); + this.sheetWriter.setCharts(si.getCharts()); + DrawingGroupObject[] dr = si.getDrawings(); + for (int j = 0; j < dr.length; j++) { + if (dr[j] instanceof Drawing) { + WritableImage wi = new WritableImage(dr[j], this.workbook.getDrawingGroup()); + this.drawings.add(wi); + this.images.add(wi); + } + } + this.sheetWriter.setWorkspaceOptions(si.getWorkspaceOptions()); + if (si.plsRecord != null) + this.plsRecord = new PLSRecord(si.plsRecord); + if (si.buttonPropertySet != null) + this.buttonPropertySet = new ButtonPropertySetRecord(si.buttonPropertySet); + } + + final HeaderRecord getHeader() { + return this.sheetWriter.getHeader(); + } + + final FooterRecord getFooter() { + return this.sheetWriter.getFooter(); + } + + public boolean isProtected() { + return this.settings.isProtected(); + } + + public Hyperlink[] getHyperlinks() { + Hyperlink[] hl = new Hyperlink[this.hyperlinks.size()]; + for (int i = 0; i < this.hyperlinks.size(); i++) + hl[i] = this.hyperlinks.get(i); + return hl; + } + + public Range[] getMergedCells() { + return this.mergedCells.getMergedCells(); + } + + public WritableHyperlink[] getWritableHyperlinks() { + WritableHyperlink[] hl = new WritableHyperlink[this.hyperlinks.size()]; + for (int i = 0; i < this.hyperlinks.size(); i++) + hl[i] = this.hyperlinks.get(i); + return hl; + } + + public void removeHyperlink(WritableHyperlink h) { + removeHyperlink(h, false); + } + + public void removeHyperlink(WritableHyperlink h, boolean preserveLabel) { + this.hyperlinks.remove(this.hyperlinks.indexOf(h)); + if (!preserveLabel) { + Assert.verify((this.rows.length > h.getRow() && this.rows[h.getRow()] != null)); + this.rows[h.getRow()].removeCell(h.getColumn()); + } + } + + public void addHyperlink(WritableHyperlink h) throws WriteException, RowsExceededException { + Cell c = getCell(h.getColumn(), h.getRow()); + String contents = null; + if (h.isFile() || h.isUNC()) { + String cnts = h.getContents(); + if (cnts == null) { + contents = h.getFile().getPath(); + } else { + contents = cnts; + } + } else if (h.isURL()) { + String cnts = h.getContents(); + if (cnts == null) { + contents = h.getURL().toString(); + } else { + contents = cnts; + } + } else if (h.isLocation()) { + contents = h.getContents(); + } + if (c.getType() == CellType.LABEL) { + Label l = (Label)c; + l.setString(contents); + l.setCellFormat((CellFormat)WritableWorkbook.HYPERLINK_STYLE); + } else { + Label l = new Label(h.getColumn(), h.getRow(), contents, (CellFormat)WritableWorkbook.HYPERLINK_STYLE); + addCell((WritableCell)l); + } + for (int i = h.getRow(); i <= h.getLastRow(); i++) { + for (int j = h.getColumn(); j <= h.getLastColumn(); j++) { + if (i != h.getRow() && j != h.getColumn()) + if (this.rows[i] != null) + this.rows[i].removeCell(j); + } + } + h.initialize(this); + this.hyperlinks.add(h); + } + + public Range mergeCells(int col1, int row1, int col2, int row2) throws WriteException, RowsExceededException { + if (col2 < col1 || row2 < row1) + logger.warn("Cannot merge cells - top left and bottom right incorrectly specified"); + if (col2 >= this.numColumns || row2 >= this.numRows) + addCell((WritableCell)new Blank(col2, row2)); + SheetRangeImpl range = new SheetRangeImpl((Sheet)this, col1, row1, col2, row2); + this.mergedCells.add((Range)range); + return (Range)range; + } + + public void unmergeCells(Range r) { + this.mergedCells.unmergeCells(r); + } + + public void setHeader(String l, String c, String r) { + HeaderFooter header = new HeaderFooter(); + header.getLeft().append(l); + header.getCentre().append(c); + header.getRight().append(r); + this.settings.setHeader(header); + } + + public void setFooter(String l, String c, String r) { + HeaderFooter footer = new HeaderFooter(); + footer.getLeft().append(l); + footer.getCentre().append(c); + footer.getRight().append(r); + this.settings.setFooter(footer); + } + + public void setPageSetup(PageOrientation p) { + this.settings.setOrientation(p); + } + + public void setPageSetup(PageOrientation p, double hm, double fm) { + this.settings.setOrientation(p); + this.settings.setHeaderMargin(hm); + this.settings.setFooterMargin(fm); + } + + public void setPageSetup(PageOrientation p, PaperSize ps, double hm, double fm) { + this.settings.setPaperSize(ps); + this.settings.setOrientation(p); + this.settings.setHeaderMargin(hm); + this.settings.setFooterMargin(fm); + } + + public SheetSettings getSettings() { + return this.settings; + } + + WorkbookSettings getWorkbookSettings() { + return this.workbookSettings; + } + + public void addRowPageBreak(int row) { + Iterator i = this.rowBreaks.iterator(); + boolean found = false; + while (i.hasNext() && !found) { + if (((Integer)i.next()).intValue() == row) + found = true; + } + if (!found) + this.rowBreaks.add(new Integer(row)); + } + + private Chart[] getCharts() { + return this.sheetWriter.getCharts(); + } + + private DrawingGroupObject[] getDrawings() { + DrawingGroupObject[] dr = new DrawingGroupObject[this.drawings.size()]; + dr = (DrawingGroupObject[])this.drawings.toArray((Object[])dr); + return dr; + } + + void checkMergedBorders() { + this.sheetWriter.setWriteData(this.rows, this.rowBreaks, this.hyperlinks, this.mergedCells, this.columnFormats); + this.sheetWriter.setDimensions(getRows(), getColumns()); + this.sheetWriter.checkMergedBorders(); + } + + private WorkspaceInformationRecord getWorkspaceOptions() { + return this.sheetWriter.getWorkspaceOptions(); + } + + void rationalize(IndexMapping xfMapping, IndexMapping fontMapping, IndexMapping formatMapping) { + for (Iterator iterator = this.columnFormats.iterator(); iterator.hasNext(); ) { + ColumnInfoRecord cir = iterator.next(); + cir.rationalize(xfMapping); + } + for (int i = 0; i < this.rows.length; i++) { + if (this.rows[i] != null) + this.rows[i].rationalize(xfMapping); + } + Chart[] charts = getCharts(); + for (int c = 0; c < charts.length; c++) + charts[c].rationalize(xfMapping, fontMapping, formatMapping); + } + + WritableWorkbookImpl getWorkbook() { + return this.workbook; + } + + public CellFormat getColumnFormat(int col) { + return getColumnView(col).getFormat(); + } + + public int getColumnWidth(int col) { + return getColumnView(col).getDimension(); + } + + public int getRowHeight(int row) { + return getRowView(row).getDimension(); + } + + boolean isChartOnly() { + return this.chartOnly; + } + + public CellView getRowView(int row) { + CellView cv = new CellView(); + try { + RowRecord rr = getRowRecord(row); + if (rr == null || rr.isDefaultHeight()) { + cv.setDimension(this.settings.getDefaultRowHeight()); + cv.setSize(this.settings.getDefaultRowHeight()); + } else if (rr.isCollapsed()) { + cv.setHidden(true); + } else { + cv.setDimension(rr.getRowHeight()); + cv.setSize(rr.getRowHeight()); + } + return cv; + } catch (RowsExceededException e) { + cv.setDimension(this.settings.getDefaultRowHeight()); + cv.setSize(this.settings.getDefaultRowHeight()); + return cv; + } + } + + public CellView getColumnView(int col) { + ColumnInfoRecord cir = getColumnInfo(col); + CellView cv = new CellView(); + if (cir != null) { + cv.setDimension(cir.getWidth() / 256); + cv.setSize(cir.getWidth()); + cv.setHidden(cir.getHidden()); + cv.setFormat((CellFormat)cir.getCellFormat()); + } else { + cv.setDimension(this.settings.getDefaultColumnWidth() / 256); + cv.setSize(this.settings.getDefaultColumnWidth()); + } + return cv; + } + + public void addImage(WritableImage image) { + boolean supported = false; + File imageFile = image.getImageFile(); + String fileType = "?"; + if (imageFile != null) { + String fileName = imageFile.getName(); + int fileTypeIndex = fileName.lastIndexOf('.'); + fileType = (fileTypeIndex != -1) ? fileName.substring(fileTypeIndex + 1) : ""; + for (int i = 0; i < imageTypes.length && !supported; i++) { + if (fileType.equalsIgnoreCase(imageTypes[i])) + supported = true; + } + } else { + supported = true; + } + if (supported) { + this.workbook.addDrawing((DrawingGroupObject)image); + this.drawings.add(image); + this.images.add(image); + } else { + StringBuffer message = new StringBuffer("Image type "); + message.append(fileType); + message.append(" not supported. Supported types are "); + message.append(imageTypes[0]); + for (int i = 1; i < imageTypes.length; i++) { + message.append(", "); + message.append(imageTypes[i]); + } + logger.warn(message.toString()); + } + } + + public int getNumberOfImages() { + return this.images.size(); + } + + public WritableImage getImage(int i) { + return this.images.get(i); + } + + public Image getDrawing(int i) { + return this.images.get(i); + } + + public void removeImage(WritableImage wi) { + this.drawings.remove(wi); + this.images.remove(wi); + this.drawingsModified = true; + this.workbook.removeDrawing((Drawing)wi); + } + + private String validateName(String n) { + if (n.length() > 31) { + logger.warn("Sheet name " + n + " too long - truncating"); + n = n.substring(0, 31); + } + if (n.charAt(0) == '\'') { + logger.warn("Sheet naming cannot start with ' - removing"); + n = n.substring(1); + } + for (int i = 0; i < illegalSheetNameCharacters.length; i++) { + String newname = n.replace(illegalSheetNameCharacters[i], '@'); + if (n != newname) + logger.warn(illegalSheetNameCharacters[i] + " is not a valid character within a sheet name - replacing"); + n = newname; + } + return n; + } + + void addDrawing(DrawingGroupObject o) { + this.drawings.add(o); + Assert.verify(!(o instanceof Drawing)); + } + + void removeDrawing(DrawingGroupObject o) { + int origSize = this.drawings.size(); + this.drawings.remove(o); + int newSize = this.drawings.size(); + this.drawingsModified = true; + Assert.verify((newSize == origSize - 1)); + } + + public int[] getRowPageBreaks() { + int[] rb = new int[this.rowBreaks.size()]; + int pos = 0; + for (Iterator i = this.rowBreaks.iterator(); i.hasNext(); pos++) + rb[pos] = ((Integer)i.next()).intValue(); + return rb; + } +} diff --git a/hrmsEjb/jxl/write/biff/WritableWorkbookImpl.java b/hrmsEjb/jxl/write/biff/WritableWorkbookImpl.java new file mode 100644 index 0000000..c05a8d7 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/WritableWorkbookImpl.java @@ -0,0 +1,680 @@ +package jxl.write.biff; + +import common.Assert; +import common.Logger; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import jxl.Range; +import jxl.Sheet; +import jxl.Workbook; +import jxl.WorkbookSettings; +import jxl.biff.ByteData; +import jxl.biff.CellReferenceHelper; +import jxl.biff.CountryCode; +import jxl.biff.Fonts; +import jxl.biff.FormattingRecords; +import jxl.biff.IndexMapping; +import jxl.biff.IntegerHelper; +import jxl.biff.RangeImpl; +import jxl.biff.WorkbookMethods; +import jxl.biff.drawing.Drawing; +import jxl.biff.drawing.DrawingGroup; +import jxl.biff.drawing.DrawingGroupObject; +import jxl.biff.drawing.Origin; +import jxl.biff.formula.ExternalSheet; +import jxl.format.Colour; +import jxl.format.RGB; +import jxl.read.biff.BOFRecord; +import jxl.read.biff.NameRecord; +import jxl.read.biff.SupbookRecord; +import jxl.read.biff.WorkbookParser; +import jxl.write.WritableCell; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; + +public class WritableWorkbookImpl extends WritableWorkbook implements ExternalSheet, WorkbookMethods { + private static Logger logger = Logger.getLogger(WritableWorkbookImpl.class); + + private FormattingRecords formatRecords; + + private File outputFile; + + private ArrayList sheets; + + private Fonts fonts; + + private ExternalSheetRecord externSheet; + + private ArrayList supbooks; + + private ArrayList names; + + private HashMap nameRecords; + + private SharedStrings sharedStrings; + + private boolean closeStream; + + private boolean wbProtected; + + private WorkbookSettings settings; + + private ArrayList rcirCells; + + private DrawingGroup drawingGroup; + + private Styles styles; + + private boolean containsMacros; + + private ButtonPropertySetRecord buttonPropertySet; + + private CountryRecord countryRecord; + + public WritableWorkbookImpl(OutputStream os, boolean cs, WorkbookSettings ws) throws IOException { + this.outputFile = new File(os, ws, null); + this.sheets = new ArrayList(); + this.sharedStrings = new SharedStrings(); + this.nameRecords = new HashMap(); + this.closeStream = cs; + this.wbProtected = false; + this.containsMacros = false; + this.settings = ws; + this.rcirCells = new ArrayList(); + this.styles = new Styles(); + WritableWorkbook.ARIAL_10_PT.uninitialize(); + WritableWorkbook.HYPERLINK_FONT.uninitialize(); + WritableWorkbook.NORMAL_STYLE.uninitialize(); + WritableWorkbook.HYPERLINK_STYLE.uninitialize(); + WritableWorkbook.HIDDEN_STYLE.uninitialize(); + DateRecord.defaultDateFormat.uninitialize(); + WritableFonts wf = new WritableFonts(this); + this.fonts = wf; + WritableFormattingRecords wfr = new WritableFormattingRecords(this.fonts, this.styles); + this.formatRecords = wfr; + } + + public WritableWorkbookImpl(OutputStream os, Workbook w, boolean cs, WorkbookSettings ws) throws IOException { + WorkbookParser wp = (WorkbookParser)w; + WritableWorkbook.ARIAL_10_PT.uninitialize(); + WritableWorkbook.HYPERLINK_FONT.uninitialize(); + WritableWorkbook.NORMAL_STYLE.uninitialize(); + WritableWorkbook.HYPERLINK_STYLE.uninitialize(); + WritableWorkbook.HIDDEN_STYLE.uninitialize(); + DateRecord.defaultDateFormat.uninitialize(); + this.closeStream = cs; + this.sheets = new ArrayList(); + this.sharedStrings = new SharedStrings(); + this.nameRecords = new HashMap(); + this.fonts = wp.getFonts(); + this.formatRecords = wp.getFormattingRecords(); + this.wbProtected = false; + this.settings = ws; + this.rcirCells = new ArrayList(); + this.styles = new Styles(); + this.outputFile = new File(os, ws, wp.getCompoundFile()); + this.containsMacros = false; + if (!ws.getPropertySetsDisabled()) + this.containsMacros = wp.containsMacros(); + if (wp.getCountryRecord() != null) + this.countryRecord = new CountryRecord(wp.getCountryRecord()); + if (wp.getExternalSheetRecord() != null) { + this.externSheet = new ExternalSheetRecord(wp.getExternalSheetRecord()); + SupbookRecord[] readsr = wp.getSupbookRecords(); + this.supbooks = new ArrayList(readsr.length); + for (int i = 0; i < readsr.length; i++) + this.supbooks.add(new SupbookRecord(readsr[i], this.settings)); + } + if (wp.getDrawingGroup() != null) + this.drawingGroup = new DrawingGroup(wp.getDrawingGroup()); + if (this.containsMacros && wp.getButtonPropertySet() != null) + this.buttonPropertySet = new ButtonPropertySetRecord(wp.getButtonPropertySet()); + if (!this.settings.getNamesDisabled()) { + NameRecord[] na = wp.getNameRecords(); + this.names = new ArrayList(na.length); + for (int i = 0; i < na.length; i++) { + if (na[i].isBiff8()) { + NameRecord n = new NameRecord(na[i], i); + this.names.add(n); + String name = n.getName(); + this.nameRecords.put(name, n); + } else { + logger.warn("Cannot copy Biff7 name records - ignoring"); + } + } + } + copyWorkbook(w); + if (this.drawingGroup != null) + this.drawingGroup.updateData(wp.getDrawingGroup()); + } + + public WritableSheet[] getSheets() { + WritableSheet[] sheetArray = new WritableSheet[getNumberOfSheets()]; + for (int i = 0; i < getNumberOfSheets(); i++) + sheetArray[i] = getSheet(i); + return sheetArray; + } + + public String[] getSheetNames() { + String[] sheetNames = new String[getNumberOfSheets()]; + for (int i = 0; i < sheetNames.length; i++) + sheetNames[i] = getSheet(i).getName(); + return sheetNames; + } + + public Sheet getReadSheet(int index) { + return (Sheet)getSheet(index); + } + + public WritableSheet getSheet(int index) { + return this.sheets.get(index); + } + + public WritableSheet getSheet(String name) { + boolean found = false; + Iterator i = this.sheets.iterator(); + WritableSheet s = null; + while (i.hasNext() && !found) { + s = i.next(); + if (s.getName().equals(name)) + found = true; + } + return found ? s : null; + } + + public int getNumberOfSheets() { + return this.sheets.size(); + } + + public void close() throws IOException, JxlWriteException { + this.outputFile.close(this.closeStream); + } + + public void setOutputFile(File fileName) throws IOException { + FileOutputStream fos = new FileOutputStream(fileName); + this.outputFile.setOutputFile(fos); + } + + private WritableSheet createSheet(String name, int index, boolean handleRefs) { + WritableSheet w = new WritableSheetImpl(name, this.outputFile, this.formatRecords, this.sharedStrings, this.settings, this); + int pos = index; + if (index <= 0) { + pos = 0; + this.sheets.add(0, w); + } else if (index > this.sheets.size()) { + pos = this.sheets.size(); + this.sheets.add(w); + } else { + this.sheets.add(index, w); + } + if (handleRefs && this.externSheet != null) + this.externSheet.sheetInserted(pos); + if (this.supbooks != null && this.supbooks.size() > 0) { + SupbookRecord supbook = this.supbooks.get(0); + if (supbook.getType() == SupbookRecord.INTERNAL) + supbook.adjustInternal(this.sheets.size()); + } + return w; + } + + public WritableSheet createSheet(String name, int index) { + return createSheet(name, index, true); + } + + public void removeSheet(int index) { + int pos = index; + if (index <= 0) { + pos = 0; + this.sheets.remove(0); + } else if (index >= this.sheets.size()) { + pos = this.sheets.size() - 1; + this.sheets.remove(this.sheets.size() - 1); + } else { + this.sheets.remove(index); + } + if (this.externSheet != null) + this.externSheet.sheetRemoved(pos); + if (this.supbooks != null && this.supbooks.size() > 0) { + SupbookRecord supbook = this.supbooks.get(0); + if (supbook.getType() == SupbookRecord.INTERNAL) + supbook.adjustInternal(this.sheets.size()); + } + if (this.names != null && this.names.size() > 0) + for (int i = 0; i < this.names.size(); i++) { + NameRecord n = this.names.get(i); + int oldRef = n.getSheetRef(); + if (oldRef == pos + 1) { + n.setSheetRef(0); + } else if (oldRef > pos + 1) { + if (oldRef < 1) + oldRef = 1; + n.setSheetRef(oldRef - 1); + } + } + } + + public WritableSheet moveSheet(int fromIndex, int toIndex) { + fromIndex = Math.max(fromIndex, 0); + fromIndex = Math.min(fromIndex, this.sheets.size() - 1); + toIndex = Math.max(toIndex, 0); + toIndex = Math.min(toIndex, this.sheets.size() - 1); + WritableSheet sheet = this.sheets.remove(fromIndex); + this.sheets.add(toIndex, sheet); + return sheet; + } + + public void write() throws IOException { + WritableSheetImpl wsi = null; + for (int i = 0; i < getNumberOfSheets(); i++) { + wsi = (WritableSheetImpl)getSheet(i); + wsi.checkMergedBorders(); + } + if (!this.settings.getRationalizationDisabled()) + rationalize(); + BOFRecord bof = new BOFRecord(BOFRecord.workbookGlobals); + this.outputFile.write((ByteData)bof); + InterfaceHeaderRecord ihr = new InterfaceHeaderRecord(); + this.outputFile.write((ByteData)ihr); + MMSRecord mms = new MMSRecord(0, 0); + this.outputFile.write((ByteData)mms); + InterfaceEndRecord ier = new InterfaceEndRecord(); + this.outputFile.write((ByteData)ier); + WriteAccessRecord wr = new WriteAccessRecord(); + this.outputFile.write((ByteData)wr); + CodepageRecord cp = new CodepageRecord(); + this.outputFile.write((ByteData)cp); + DSFRecord dsf = new DSFRecord(); + this.outputFile.write((ByteData)dsf); + TabIdRecord tabid = new TabIdRecord(getNumberOfSheets()); + this.outputFile.write((ByteData)tabid); + if (this.containsMacros) { + ObjProjRecord objproj = new ObjProjRecord(); + this.outputFile.write((ByteData)objproj); + } + if (this.buttonPropertySet != null) + this.outputFile.write((ByteData)this.buttonPropertySet); + FunctionGroupCountRecord fgcr = new FunctionGroupCountRecord(); + this.outputFile.write((ByteData)fgcr); + WindowProtectRecord wpr = new WindowProtectRecord(false); + this.outputFile.write((ByteData)wpr); + ProtectRecord pr = new ProtectRecord(this.wbProtected); + this.outputFile.write((ByteData)pr); + PasswordRecord pw = new PasswordRecord(null); + this.outputFile.write((ByteData)pw); + Prot4RevRecord p4r = new Prot4RevRecord(false); + this.outputFile.write((ByteData)p4r); + Prot4RevPassRecord p4rp = new Prot4RevPassRecord(); + this.outputFile.write((ByteData)p4rp); + Window1Record w1r = new Window1Record(); + this.outputFile.write((ByteData)w1r); + BackupRecord bkr = new BackupRecord(false); + this.outputFile.write((ByteData)bkr); + HideobjRecord ho = new HideobjRecord(false); + this.outputFile.write((ByteData)ho); + NineteenFourRecord nf = new NineteenFourRecord(false); + this.outputFile.write((ByteData)nf); + PrecisionRecord pc = new PrecisionRecord(false); + this.outputFile.write((ByteData)pc); + RefreshAllRecord rar = new RefreshAllRecord(false); + this.outputFile.write((ByteData)rar); + BookboolRecord bb = new BookboolRecord(true); + this.outputFile.write((ByteData)bb); + this.fonts.write(this.outputFile); + this.formatRecords.write(this.outputFile); + if (this.formatRecords.getPalette() != null) + this.outputFile.write((ByteData)this.formatRecords.getPalette()); + UsesElfsRecord uer = new UsesElfsRecord(); + this.outputFile.write((ByteData)uer); + int[] boundsheetPos = new int[getNumberOfSheets()]; + Sheet sheet = null; + int j; + for (j = 0; j < getNumberOfSheets(); j++) { + boundsheetPos[j] = this.outputFile.getPos(); + WritableSheet writableSheet = getSheet(j); + BoundsheetRecord br = new BoundsheetRecord(writableSheet.getName()); + if (writableSheet.getSettings().isHidden()) + br.setHidden(); + if (((WritableSheetImpl)this.sheets.get(j)).isChartOnly()) + br.setChartOnly(); + this.outputFile.write((ByteData)br); + } + if (this.countryRecord == null) { + CountryCode lang = CountryCode.getCountryCode(this.settings.getExcelDisplayLanguage()); + if (lang == CountryCode.UNKNOWN) { + logger.warn("Unknown country code " + this.settings.getExcelDisplayLanguage() + " using " + CountryCode.USA.getCode()); + lang = CountryCode.USA; + } + CountryCode region = CountryCode.getCountryCode(this.settings.getExcelRegionalSettings()); + this.countryRecord = new CountryRecord(lang, region); + if (region == CountryCode.UNKNOWN) { + logger.warn("Unknown country code " + this.settings.getExcelDisplayLanguage() + " using " + CountryCode.UK.getCode()); + region = CountryCode.UK; + } + } + this.outputFile.write((ByteData)this.countryRecord); + if (this.externSheet != null) { + for (j = 0; j < this.supbooks.size(); j++) { + SupbookRecord supbook = this.supbooks.get(j); + this.outputFile.write((ByteData)supbook); + } + this.outputFile.write((ByteData)this.externSheet); + } + if (this.names != null) + for (j = 0; j < this.names.size(); j++) { + NameRecord n = this.names.get(j); + this.outputFile.write((ByteData)n); + } + if (this.drawingGroup != null) + this.drawingGroup.write(this.outputFile); + this.sharedStrings.write(this.outputFile); + EOFRecord eof = new EOFRecord(); + this.outputFile.write((ByteData)eof); + boolean sheetSelected = false; + WritableSheetImpl wsheet = null; + int k; + for (k = 0; k < getNumberOfSheets() && !sheetSelected; k++) { + wsheet = (WritableSheetImpl)getSheet(k); + if (wsheet.getSettings().isSelected()) + sheetSelected = true; + } + if (!sheetSelected) { + wsheet = (WritableSheetImpl)getSheet(0); + wsheet.getSettings().setSelected(true); + } + for (k = 0; k < getNumberOfSheets(); k++) { + this.outputFile.setData(IntegerHelper.getFourBytes(this.outputFile.getPos()), boundsheetPos[k] + 4); + wsheet = (WritableSheetImpl)getSheet(k); + wsheet.write(); + } + } + + private void copyWorkbook(Workbook w) { + int numSheets = w.getNumberOfSheets(); + this.wbProtected = w.isProtected(); + Sheet s = null; + WritableSheetImpl ws = null; + for (int i = 0; i < numSheets; i++) { + s = w.getSheet(i); + ws = (WritableSheetImpl)createSheet(s.getName(), i, false); + ws.copy(s); + } + } + + public void copySheet(int s, String name, int index) { + WritableSheet sheet = getSheet(s); + WritableSheetImpl ws = (WritableSheetImpl)createSheet(name, index); + ws.copy(sheet); + } + + public void copySheet(String s, String name, int index) { + WritableSheet sheet = getSheet(s); + WritableSheetImpl ws = (WritableSheetImpl)createSheet(name, index); + ws.copy(sheet); + } + + public void setProtected(boolean prot) { + this.wbProtected = prot; + } + + private void rationalize() { + IndexMapping fontMapping = this.formatRecords.rationalizeFonts(); + IndexMapping formatMapping = this.formatRecords.rationalizeDisplayFormats(); + IndexMapping xfMapping = this.formatRecords.rationalize(fontMapping, formatMapping); + WritableSheetImpl wsi = null; + for (int i = 0; i < this.sheets.size(); i++) { + wsi = this.sheets.get(i); + wsi.rationalize(xfMapping, fontMapping, formatMapping); + } + } + + public String getExternalSheetName(int index) { + int supbookIndex = this.externSheet.getSupbookIndex(index); + SupbookRecord sr = this.supbooks.get(supbookIndex); + int firstTab = this.externSheet.getFirstTabIndex(index); + if (sr.getType() == SupbookRecord.INTERNAL) { + WritableSheet ws = getSheet(firstTab); + return ws.getName(); + } + if (sr.getType() == SupbookRecord.EXTERNAL) { + String name = sr.getFileName() + sr.getSheetName(firstTab); + return name; + } + return "[UNKNOWN]"; + } + + public String getLastExternalSheetName(int index) { + int supbookIndex = this.externSheet.getSupbookIndex(index); + SupbookRecord sr = this.supbooks.get(supbookIndex); + int lastTab = this.externSheet.getLastTabIndex(index); + if (sr.getType() == SupbookRecord.INTERNAL) { + WritableSheet ws = getSheet(lastTab); + return ws.getName(); + } + if (sr.getType() == SupbookRecord.EXTERNAL) + Assert.verify(false); + return "[UNKNOWN]"; + } + + public BOFRecord getWorkbookBof() { + return null; + } + + public int getExternalSheetIndex(int index) { + if (this.externSheet == null) + return index; + Assert.verify((this.externSheet != null)); + int firstTab = this.externSheet.getFirstTabIndex(index); + return firstTab; + } + + public int getLastExternalSheetIndex(int index) { + if (this.externSheet == null) + return index; + Assert.verify((this.externSheet != null)); + int lastTab = this.externSheet.getLastTabIndex(index); + return lastTab; + } + + public int getExternalSheetIndex(String sheetName) { + if (this.externSheet == null) { + this.externSheet = new ExternalSheetRecord(); + this.supbooks = new ArrayList(); + this.supbooks.add(new SupbookRecord(getNumberOfSheets(), this.settings)); + } + boolean found = false; + Iterator i = this.sheets.iterator(); + int sheetpos = 0; + WritableSheetImpl s = null; + while (i.hasNext() && !found) { + s = i.next(); + if (s.getName().equals(sheetName)) { + found = true; + continue; + } + sheetpos++; + } + if (found) { + SupbookRecord supbook = this.supbooks.get(0); + Assert.verify((supbook.getType() == SupbookRecord.INTERNAL && supbook.getNumberOfSheets() == getNumberOfSheets())); + return this.externSheet.getIndex(0, sheetpos); + } + int closeSquareBracketsIndex = sheetName.lastIndexOf(']'); + int openSquareBracketsIndex = sheetName.lastIndexOf('['); + if (closeSquareBracketsIndex == -1 || openSquareBracketsIndex == -1) + return -1; + String worksheetName = sheetName.substring(closeSquareBracketsIndex + 1); + String workbookName = sheetName.substring(openSquareBracketsIndex + 1, closeSquareBracketsIndex); + String path = sheetName.substring(0, openSquareBracketsIndex); + String fileName = path + workbookName; + boolean supbookFound = false; + SupbookRecord externalSupbook = null; + int supbookIndex = -1; + for (int ind = 0; ind < this.supbooks.size() && !supbookFound; ind++) { + externalSupbook = this.supbooks.get(ind); + if (externalSupbook.getType() == SupbookRecord.EXTERNAL && externalSupbook.getFileName().equals(fileName)) { + supbookFound = true; + supbookIndex = ind; + } + } + if (!supbookFound) { + externalSupbook = new SupbookRecord(fileName, this.settings); + supbookIndex = this.supbooks.size(); + this.supbooks.add(externalSupbook); + } + int sheetIndex = externalSupbook.getSheetIndex(worksheetName); + return this.externSheet.getIndex(supbookIndex, sheetIndex); + } + + public int getLastExternalSheetIndex(String sheetName) { + if (this.externSheet == null) { + this.externSheet = new ExternalSheetRecord(); + this.supbooks = new ArrayList(); + this.supbooks.add(new SupbookRecord(getNumberOfSheets(), this.settings)); + } + boolean found = false; + Iterator i = this.sheets.iterator(); + int sheetpos = 0; + WritableSheetImpl s = null; + while (i.hasNext() && !found) { + s = i.next(); + if (s.getName().equals(sheetName)) { + found = true; + continue; + } + sheetpos++; + } + if (!found) + return -1; + SupbookRecord supbook = this.supbooks.get(0); + Assert.verify((supbook.getType() == SupbookRecord.INTERNAL && supbook.getNumberOfSheets() == getNumberOfSheets())); + return this.externSheet.getIndex(0, sheetpos); + } + + public void setColourRGB(Colour c, int r, int g, int b) { + this.formatRecords.setColourRGB(c, r, g, b); + } + + public RGB getColourRGB(Colour c) { + return this.formatRecords.getColourRGB(c); + } + + public String getName(int index) { + Assert.verify((index >= 0 && index < this.names.size())); + NameRecord n = this.names.get(index); + return n.getName(); + } + + public int getNameIndex(String name) { + NameRecord nr = (NameRecord)this.nameRecords.get(name); + return (nr != null) ? nr.getIndex() : -1; + } + + void addRCIRCell(CellValue cv) { + this.rcirCells.add(cv); + } + + void columnInserted(WritableSheetImpl s, int col) { + int externalSheetIndex = getExternalSheetIndex(s.getName()); + for (Iterator i = this.rcirCells.iterator(); i.hasNext(); ) { + CellValue cv = i.next(); + cv.columnInserted((Sheet)s, externalSheetIndex, col); + } + } + + void columnRemoved(WritableSheetImpl s, int col) { + int externalSheetIndex = getExternalSheetIndex(s.getName()); + for (Iterator i = this.rcirCells.iterator(); i.hasNext(); ) { + CellValue cv = i.next(); + cv.columnRemoved((Sheet)s, externalSheetIndex, col); + } + } + + void rowInserted(WritableSheetImpl s, int row) { + int externalSheetIndex = getExternalSheetIndex(s.getName()); + for (Iterator i = this.rcirCells.iterator(); i.hasNext(); ) { + CellValue cv = i.next(); + cv.rowInserted((Sheet)s, externalSheetIndex, row); + } + } + + void rowRemoved(WritableSheetImpl s, int row) { + int externalSheetIndex = getExternalSheetIndex(s.getName()); + for (Iterator i = this.rcirCells.iterator(); i.hasNext(); ) { + CellValue cv = i.next(); + cv.rowRemoved((Sheet)s, externalSheetIndex, row); + } + } + + public WritableCell findCellByName(String name) { + NameRecord nr = (NameRecord)this.nameRecords.get(name); + if (nr == null) + return null; + NameRecord.NameRange[] ranges = nr.getRanges(); + int sheetIndex = getExternalSheetIndex(ranges[0].getExternalSheet()); + WritableSheet s = getSheet(sheetIndex); + WritableCell cell = s.getWritableCell(ranges[0].getFirstColumn(), ranges[0].getFirstRow()); + return cell; + } + + public Range[] findByName(String name) { + NameRecord nr = (NameRecord)this.nameRecords.get(name); + if (nr == null) + return null; + NameRecord.NameRange[] ranges = nr.getRanges(); + Range[] cellRanges = new Range[ranges.length]; + for (int i = 0; i < ranges.length; i++) + cellRanges[i] = (Range)new RangeImpl(this, getExternalSheetIndex(ranges[i].getExternalSheet()), ranges[i].getFirstColumn(), ranges[i].getFirstRow(), getLastExternalSheetIndex(ranges[i].getExternalSheet()), ranges[i].getLastColumn(), ranges[i].getLastRow()); + return cellRanges; + } + + void addDrawing(DrawingGroupObject d) { + if (this.drawingGroup == null) + this.drawingGroup = new DrawingGroup(Origin.WRITE); + this.drawingGroup.add(d); + } + + void removeDrawing(Drawing d) { + Assert.verify((this.drawingGroup != null)); + this.drawingGroup.remove((DrawingGroupObject)d); + } + + DrawingGroup getDrawingGroup() { + return this.drawingGroup; + } + + public String[] getRangeNames() { + String[] n = new String[this.names.size()]; + for (int i = 0; i < this.names.size(); i++) { + NameRecord nr = this.names.get(i); + n[i] = nr.getName(); + } + return n; + } + + Styles getStyles() { + return this.styles; + } + + public void addNameArea(String name, WritableSheet sheet, int firstCol, int firstRow, int lastCol, int lastRow) { + if (this.names == null) + this.names = new ArrayList(); + int externalSheetIndex = getExternalSheetIndex(sheet.getName()); + NameRecord nr = new NameRecord(name, this.names.size(), externalSheetIndex, firstRow, lastRow, firstCol, lastCol); + this.names.add(nr); + this.nameRecords.put(name, nr); + } + + WorkbookSettings getSettings() { + return this.settings; + } + + public WritableCell getWritableCell(String loc) { + WritableSheet s = getSheet(CellReferenceHelper.getSheet(loc)); + return s.getWritableCell(loc); + } +} diff --git a/hrmsEjb/jxl/write/biff/WriteAccessRecord.java b/hrmsEjb/jxl/write/biff/WriteAccessRecord.java new file mode 100644 index 0000000..712ef82 --- /dev/null +++ b/hrmsEjb/jxl/write/biff/WriteAccessRecord.java @@ -0,0 +1,25 @@ +package jxl.write.biff; + +import jxl.Workbook; +import jxl.biff.StringHelper; +import jxl.biff.Type; +import jxl.biff.WritableRecordData; + +class WriteAccessRecord extends WritableRecordData { + private byte[] data; + + private static final String authorString = "Java Excel API"; + + public WriteAccessRecord() { + super(Type.WRITEACCESS); + this.data = new byte[112]; + String astring = "Java Excel API v" + Workbook.getVersion(); + StringHelper.getBytes(astring, this.data, 0); + for (int i = astring.length(); i < this.data.length; i++) + this.data[i] = 32; + } + + public byte[] getData() { + return this.data; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRAreaPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRAreaPlot.java new file mode 100644 index 0000000..2de98bf --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRAreaPlot.java @@ -0,0 +1,10 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRAreaPlot extends JRChartPlot, JRCategoryAxisFormat, JRValueAxisFormat { + JRExpression getCategoryAxisLabelExpression(); + + JRExpression getValueAxisLabelExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRBar3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRBar3DPlot.java new file mode 100644 index 0000000..3dd5d1e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRBar3DPlot.java @@ -0,0 +1,22 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRBar3DPlot extends JRChartPlot, JRCategoryAxisFormat, JRValueAxisFormat { + JRExpression getCategoryAxisLabelExpression(); + + JRExpression getValueAxisLabelExpression(); + + double getXOffset(); + + void setXOffset(double paramDouble); + + double getYOffset(); + + void setYOffset(double paramDouble); + + boolean isShowLabels(); + + void setShowLabels(boolean paramBoolean); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRBarPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRBarPlot.java new file mode 100644 index 0000000..e1edc04 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRBarPlot.java @@ -0,0 +1,22 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRBarPlot extends JRChartPlot, JRCategoryAxisFormat, JRValueAxisFormat { + JRExpression getCategoryAxisLabelExpression(); + + JRExpression getValueAxisLabelExpression(); + + boolean isShowTickMarks(); + + void setShowTickMarks(boolean paramBoolean); + + boolean isShowTickLabels(); + + void setShowTickLabels(boolean paramBoolean); + + boolean isShowLabels(); + + void setShowLabels(boolean paramBoolean); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRBubblePlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRBubblePlot.java new file mode 100644 index 0000000..293e6ba --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRBubblePlot.java @@ -0,0 +1,14 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRBubblePlot extends JRChartPlot, JRXAxisFormat, JRYAxisFormat { + JRExpression getXAxisLabelExpression(); + + JRExpression getYAxisLabelExpression(); + + int getScaleType(); + + void setScaleType(int paramInt); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRCandlestickPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRCandlestickPlot.java new file mode 100644 index 0000000..b517a08 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRCandlestickPlot.java @@ -0,0 +1,12 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRCandlestickPlot extends JRChartPlot, JRTimeAxisFormat, JRValueAxisFormat { + JRExpression getTimeAxisLabelExpression(); + + JRExpression getValueAxisLabelExpression(); + + boolean isShowVolume(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRCategoryAxisFormat.java b/hrmsEjb/net/sf/jasperreports/charts/JRCategoryAxisFormat.java new file mode 100644 index 0000000..05bf653 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRCategoryAxisFormat.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRFont; + +public interface JRCategoryAxisFormat { + JRFont getCategoryAxisLabelFont(); + + Color getCategoryAxisLabelColor(); + + Color getOwnCategoryAxisLabelColor(); + + JRFont getCategoryAxisTickLabelFont(); + + Color getCategoryAxisTickLabelColor(); + + Color getOwnCategoryAxisTickLabelColor(); + + String getCategoryAxisTickLabelMask(); + + Color getCategoryAxisLineColor(); + + Color getOwnCategoryAxisLineColor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRCategoryDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRCategoryDataset.java new file mode 100644 index 0000000..d871661 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRCategoryDataset.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; + +public interface JRCategoryDataset extends JRChartDataset { + JRCategorySeries[] getSeries(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRCategorySeries.java b/hrmsEjb/net/sf/jasperreports/charts/JRCategorySeries.java new file mode 100644 index 0000000..66dcc4a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRCategorySeries.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; + +public interface JRCategorySeries extends JRCloneable { + JRExpression getSeriesExpression(); + + JRExpression getCategoryExpression(); + + JRExpression getValueExpression(); + + JRExpression getLabelExpression(); + + JRHyperlink getItemHyperlink(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRChartAxis.java b/hrmsEjb/net/sf/jasperreports/charts/JRChartAxis.java new file mode 100644 index 0000000..927526e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRChartAxis.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChart; + +public interface JRChartAxis { + public static final byte POSITION_LEFT_OR_TOP = 1; + + public static final byte POSITION_RIGHT_OR_BOTTOM = 2; + + byte getPosition(); + + JRChart getChart(); + + Object clone(JRChart paramJRChart); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRDataRange.java b/hrmsEjb/net/sf/jasperreports/charts/JRDataRange.java new file mode 100644 index 0000000..9a93434 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRDataRange.java @@ -0,0 +1,10 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRDataRange extends JRCloneable { + JRExpression getLowExpression(); + + JRExpression getHighExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRHighLowDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRHighLowDataset.java new file mode 100644 index 0000000..f9a1f34 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRHighLowDataset.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; + +public interface JRHighLowDataset extends JRChartDataset { + JRExpression getSeriesExpression(); + + JRExpression getDateExpression(); + + JRExpression getHighExpression(); + + JRExpression getLowExpression(); + + JRExpression getOpenExpression(); + + JRExpression getCloseExpression(); + + JRExpression getVolumeExpression(); + + JRHyperlink getItemHyperlink(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRHighLowPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRHighLowPlot.java new file mode 100644 index 0000000..33b2329 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRHighLowPlot.java @@ -0,0 +1,14 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRHighLowPlot extends JRChartPlot, JRTimeAxisFormat, JRValueAxisFormat { + JRExpression getTimeAxisLabelExpression(); + + JRExpression getValueAxisLabelExpression(); + + boolean isShowOpenTicks(); + + boolean isShowCloseTicks(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRLinePlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRLinePlot.java new file mode 100644 index 0000000..14d4374 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRLinePlot.java @@ -0,0 +1,18 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRLinePlot extends JRChartPlot, JRCategoryAxisFormat, JRValueAxisFormat { + JRExpression getCategoryAxisLabelExpression(); + + JRExpression getValueAxisLabelExpression(); + + boolean isShowLines(); + + void setShowLines(boolean paramBoolean); + + boolean isShowShapes(); + + void setShowShapes(boolean paramBoolean); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRMeterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRMeterPlot.java new file mode 100644 index 0000000..21b499a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRMeterPlot.java @@ -0,0 +1,33 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import java.util.List; +import net.sf.jasperreports.engine.JRChartPlot; + +public interface JRMeterPlot extends JRChartPlot { + public static final byte SHAPE_CHORD = 0; + + public static final byte SHAPE_CIRCLE = 1; + + public static final byte SHAPE_PIE = 2; + + JRDataRange getDataRange(); + + JRValueDisplay getValueDisplay(); + + byte getShape(); + + List getIntervals(); + + int getMeterAngle(); + + String getUnits(); + + double getTickInterval(); + + Color getMeterBackgroundColor(); + + Color getNeedleColor(); + + Color getTickColor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRMultiAxisPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRMultiAxisPlot.java new file mode 100644 index 0000000..9c0c545 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRMultiAxisPlot.java @@ -0,0 +1,8 @@ +package net.sf.jasperreports.charts; + +import java.util.List; +import net.sf.jasperreports.engine.JRChartPlot; + +public interface JRMultiAxisPlot extends JRChartPlot { + List getAxes(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRPie3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRPie3DPlot.java new file mode 100644 index 0000000..01dab9c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRPie3DPlot.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; + +public interface JRPie3DPlot extends JRChartPlot { + public static final double DEPTH_FACTOR_DEFAULT = 0.2D; + + double getDepthFactor(); + + boolean isCircular(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRPieDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRPieDataset.java new file mode 100644 index 0000000..fd9f170 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRPieDataset.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; + +public interface JRPieDataset extends JRChartDataset { + JRExpression getKeyExpression(); + + JRExpression getValueExpression(); + + JRExpression getLabelExpression(); + + JRHyperlink getSectionHyperlink(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRPiePlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRPiePlot.java new file mode 100644 index 0000000..5bd595c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRPiePlot.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; + +public interface JRPiePlot extends JRChartPlot { + boolean isCircular(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRScatterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRScatterPlot.java new file mode 100644 index 0000000..ea4ec27 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRScatterPlot.java @@ -0,0 +1,18 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRScatterPlot extends JRChartPlot, JRXAxisFormat, JRYAxisFormat { + JRExpression getXAxisLabelExpression(); + + JRExpression getYAxisLabelExpression(); + + boolean isShowLines(); + + void setShowLines(boolean paramBoolean); + + boolean isShowShapes(); + + void setShowShapes(boolean paramBoolean); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRThermometerPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRThermometerPlot.java new file mode 100644 index 0000000..120f33b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRThermometerPlot.java @@ -0,0 +1,30 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRChartPlot; + +public interface JRThermometerPlot extends JRChartPlot { + public static final byte LOCATION_NONE = 0; + + public static final byte LOCATION_LEFT = 1; + + public static final byte LOCATION_RIGHT = 2; + + public static final byte LOCATION_BULB = 3; + + JRDataRange getDataRange(); + + JRValueDisplay getValueDisplay(); + + boolean isShowValueLines(); + + byte getValueLocation(); + + Color getMercuryColor(); + + JRDataRange getLowRange(); + + JRDataRange getMediumRange(); + + JRDataRange getHighRange(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRTimeAxisFormat.java b/hrmsEjb/net/sf/jasperreports/charts/JRTimeAxisFormat.java new file mode 100644 index 0000000..a5ee749 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRTimeAxisFormat.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRFont; + +public interface JRTimeAxisFormat { + JRFont getTimeAxisLabelFont(); + + Color getTimeAxisLabelColor(); + + Color getOwnTimeAxisLabelColor(); + + JRFont getTimeAxisTickLabelFont(); + + Color getTimeAxisTickLabelColor(); + + Color getOwnTimeAxisTickLabelColor(); + + String getTimeAxisTickLabelMask(); + + Color getTimeAxisLineColor(); + + Color getOwnTimeAxisLineColor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodDataset.java new file mode 100644 index 0000000..d6ce527 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodDataset.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; + +public interface JRTimePeriodDataset extends JRChartDataset { + JRTimePeriodSeries[] getSeries(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodSeries.java b/hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodSeries.java new file mode 100644 index 0000000..552f6d4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRTimePeriodSeries.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; + +public interface JRTimePeriodSeries extends JRCloneable { + JRExpression getSeriesExpression(); + + JRExpression getStartDateExpression(); + + JRExpression getEndDateExpression(); + + JRExpression getValueExpression(); + + JRExpression getLabelExpression(); + + JRHyperlink getItemHyperlink(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeries.java b/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeries.java new file mode 100644 index 0000000..ee254ad --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeries.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; + +public interface JRTimeSeries extends JRCloneable { + JRExpression getSeriesExpression(); + + JRExpression getTimePeriodExpression(); + + JRExpression getValueExpression(); + + JRExpression getLabelExpression(); + + JRHyperlink getItemHyperlink(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesDataset.java new file mode 100644 index 0000000..4e88438 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesDataset.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; + +public interface JRTimeSeriesDataset extends JRChartDataset { + JRTimeSeries[] getSeries(); + + Class getTimePeriod(); + + void setTimePeriod(Class paramClass); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesPlot.java b/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesPlot.java new file mode 100644 index 0000000..f52ebf8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRTimeSeriesPlot.java @@ -0,0 +1,14 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRTimeSeriesPlot extends JRChartPlot, JRTimeAxisFormat, JRValueAxisFormat { + JRExpression getTimeAxisLabelExpression(); + + JRExpression getValueAxisLabelExpression(); + + boolean isShowLines(); + + boolean isShowShapes(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRValueAxisFormat.java b/hrmsEjb/net/sf/jasperreports/charts/JRValueAxisFormat.java new file mode 100644 index 0000000..bfc3680 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRValueAxisFormat.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRFont; + +public interface JRValueAxisFormat { + JRFont getValueAxisLabelFont(); + + Color getValueAxisLabelColor(); + + Color getOwnValueAxisLabelColor(); + + JRFont getValueAxisTickLabelFont(); + + Color getValueAxisTickLabelColor(); + + Color getOwnValueAxisTickLabelColor(); + + String getValueAxisTickLabelMask(); + + Color getValueAxisLineColor(); + + Color getOwnValueAxisLineColor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRValueDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRValueDataset.java new file mode 100644 index 0000000..3ff8a34 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRValueDataset.java @@ -0,0 +1,8 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRValueDataset extends JRChartDataset { + JRExpression getValueExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRValueDisplay.java b/hrmsEjb/net/sf/jasperreports/charts/JRValueDisplay.java new file mode 100644 index 0000000..154de8e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRValueDisplay.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRFont; + +public interface JRValueDisplay extends JRCloneable { + Color getColor(); + + String getMask(); + + JRFont getFont(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRXAxisFormat.java b/hrmsEjb/net/sf/jasperreports/charts/JRXAxisFormat.java new file mode 100644 index 0000000..8c052a4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRXAxisFormat.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRFont; + +public interface JRXAxisFormat { + JRFont getXAxisLabelFont(); + + Color getXAxisLabelColor(); + + Color getOwnXAxisLabelColor(); + + JRFont getXAxisTickLabelFont(); + + Color getXAxisTickLabelColor(); + + Color getOwnXAxisTickLabelColor(); + + String getXAxisTickLabelMask(); + + Color getXAxisLineColor(); + + Color getOwnXAxisLineColor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRXyDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRXyDataset.java new file mode 100644 index 0000000..8694484 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRXyDataset.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; + +public interface JRXyDataset extends JRChartDataset { + JRXySeries[] getSeries(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRXySeries.java b/hrmsEjb/net/sf/jasperreports/charts/JRXySeries.java new file mode 100644 index 0000000..1844f4e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRXySeries.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; + +public interface JRXySeries extends JRCloneable { + JRExpression getSeriesExpression(); + + JRExpression getXValueExpression(); + + JRExpression getYValueExpression(); + + JRExpression getLabelExpression(); + + JRHyperlink getItemHyperlink(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRXyzDataset.java b/hrmsEjb/net/sf/jasperreports/charts/JRXyzDataset.java new file mode 100644 index 0000000..89627bc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRXyzDataset.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRChartDataset; + +public interface JRXyzDataset extends JRChartDataset { + JRXyzSeries[] getSeries(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRXyzSeries.java b/hrmsEjb/net/sf/jasperreports/charts/JRXyzSeries.java new file mode 100644 index 0000000..a213c30 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRXyzSeries.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.charts; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; + +public interface JRXyzSeries extends JRCloneable { + JRExpression getSeriesExpression(); + + JRExpression getXValueExpression(); + + JRExpression getYValueExpression(); + + JRExpression getZValueExpression(); + + JRHyperlink getItemHyperlink(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/JRYAxisFormat.java b/hrmsEjb/net/sf/jasperreports/charts/JRYAxisFormat.java new file mode 100644 index 0000000..61f7609 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/JRYAxisFormat.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRFont; + +public interface JRYAxisFormat { + JRFont getYAxisLabelFont(); + + Color getYAxisLabelColor(); + + Color getOwnYAxisLabelColor(); + + JRFont getYAxisTickLabelFont(); + + Color getYAxisTickLabelColor(); + + Color getOwnYAxisTickLabelColor(); + + String getYAxisTickLabelMask(); + + Color getYAxisLineColor(); + + Color getOwnYAxisLineColor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseAreaPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseAreaPlot.java new file mode 100644 index 0000000..d65359b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseAreaPlot.java @@ -0,0 +1,163 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseAreaPlot extends JRBaseChartPlot implements JRAreaPlot { + private static final long serialVersionUID = 10200L; + + protected JRExpression categoryAxisLabelExpression = null; + + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected String categoryAxisTickLabelMask = null; + + protected Color categoryAxisLineColor = null; + + protected JRExpression valueAxisLabelExpression = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected String valueAxisTickLabelMask = null; + + protected Color valueAxisLineColor = null; + + public JRBaseAreaPlot(JRChartPlot areaPlot, JRChart chart) { + super(areaPlot, chart); + } + + public JRBaseAreaPlot(JRAreaPlot areaPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)areaPlot, factory); + this.categoryAxisLabelExpression = factory.getExpression(areaPlot.getCategoryAxisLabelExpression()); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = areaPlot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = areaPlot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisTickLabelMask = areaPlot.getCategoryAxisTickLabelMask(); + this.categoryAxisLineColor = areaPlot.getOwnCategoryAxisLineColor(); + this.valueAxisLabelExpression = factory.getExpression(areaPlot.getValueAxisLabelExpression()); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = areaPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = areaPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisTickLabelMask = areaPlot.getValueAxisTickLabelMask(); + this.valueAxisLineColor = areaPlot.getOwnValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return this.categoryAxisLabelExpression; + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public String getCategoryAxisTickLabelMask() { + return this.categoryAxisTickLabelMask; + } + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public JRExpression getValueAxisLabelExpression() { + return this.valueAxisLabelExpression; + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public String getValueAxisTickLabelMask() { + return this.valueAxisTickLabelMask; + } + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseAreaPlot clone = (JRBaseAreaPlot)super.clone(parentChart); + if (this.categoryAxisLabelExpression != null) + clone.categoryAxisLabelExpression = (JRExpression)this.categoryAxisLabelExpression.clone(); + if (this.valueAxisLabelExpression != null) + clone.valueAxisLabelExpression = (JRExpression)this.valueAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBar3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBar3DPlot.java new file mode 100644 index 0000000..b4c8d72 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBar3DPlot.java @@ -0,0 +1,208 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseBar3DPlot extends JRBaseChartPlot implements JRBar3DPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SHOW_LABELS = "showLabels"; + + public static final String PROPERTY_X_OFFSET = "xOffset"; + + public static final String PROPERTY_Y_OFFSET = "yOffset"; + + protected JRExpression categoryAxisLabelExpression = null; + + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected String categoryAxisTickLabelMask = null; + + protected Color categoryAxisLineColor = null; + + protected JRExpression valueAxisLabelExpression = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected String valueAxisTickLabelMask = null; + + protected Color valueAxisLineColor = null; + + protected double xOffset = 12.0D; + + protected double yOffset = 8.0D; + + protected boolean isShowLabels = false; + + public JRBaseBar3DPlot(JRChartPlot barPlot, JRChart chart) { + super(barPlot, chart); + } + + public JRBaseBar3DPlot(JRBar3DPlot barPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)barPlot, factory); + this.xOffset = barPlot.getXOffset(); + this.yOffset = barPlot.getYOffset(); + this.isShowLabels = barPlot.isShowLabels(); + this.categoryAxisLabelExpression = factory.getExpression(barPlot.getCategoryAxisLabelExpression()); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = barPlot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = barPlot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisTickLabelMask = barPlot.getCategoryAxisTickLabelMask(); + this.categoryAxisLineColor = barPlot.getCategoryAxisLineColor(); + this.valueAxisLabelExpression = factory.getExpression(barPlot.getValueAxisLabelExpression()); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = barPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = barPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisTickLabelMask = barPlot.getValueAxisTickLabelMask(); + this.valueAxisLineColor = barPlot.getValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return this.categoryAxisLabelExpression; + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public String getCategoryAxisTickLabelMask() { + return this.categoryAxisTickLabelMask; + } + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public JRExpression getValueAxisLabelExpression() { + return this.valueAxisLabelExpression; + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public String getValueAxisTickLabelMask() { + return this.valueAxisTickLabelMask; + } + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public double getXOffset() { + return this.xOffset; + } + + public void setXOffset(double xOffset) { + double old = this.xOffset; + this.xOffset = xOffset; + getEventSupport().firePropertyChange("xOffset", old, this.xOffset); + } + + public double getYOffset() { + return this.yOffset; + } + + public void setYOffset(double yOffset) { + double old = this.yOffset; + this.yOffset = yOffset; + getEventSupport().firePropertyChange("yOffset", old, this.yOffset); + } + + public boolean isShowLabels() { + return this.isShowLabels; + } + + public void setShowLabels(boolean isShowLabels) { + boolean old = this.isShowLabels; + this.isShowLabels = isShowLabels; + getEventSupport().firePropertyChange("showLabels", old, this.isShowLabels); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseBar3DPlot clone = (JRBaseBar3DPlot)super.clone(parentChart); + if (this.categoryAxisLabelExpression != null) + clone.categoryAxisLabelExpression = (JRExpression)this.categoryAxisLabelExpression.clone(); + if (this.valueAxisLabelExpression != null) + clone.valueAxisLabelExpression = (JRExpression)this.valueAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBarPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBarPlot.java new file mode 100644 index 0000000..03eda95 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBarPlot.java @@ -0,0 +1,208 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseBarPlot extends JRBaseChartPlot implements JRBarPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SHOW_LABELS = "showLabels"; + + public static final String PROPERTY_SHOW_TICK_LABELS = "showTickLabels"; + + public static final String PROPERTY_SHOW_TICK_MARKS = "showTickMarks"; + + protected JRExpression categoryAxisLabelExpression = null; + + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected String categoryAxisTickLabelMask = null; + + protected Color categoryAxisLineColor = null; + + protected JRExpression valueAxisLabelExpression = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected String valueAxisTickLabelMask = null; + + protected Color valueAxisLineColor = null; + + protected boolean isShowTickMarks = false; + + protected boolean isShowTickLabels = false; + + protected boolean isShowLabels = false; + + public JRBaseBarPlot(JRChartPlot barPlot, JRChart chart) { + super(barPlot, chart); + } + + public JRBaseBarPlot(JRBarPlot barPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)barPlot, factory); + this.isShowTickMarks = barPlot.isShowTickMarks(); + this.isShowTickLabels = barPlot.isShowTickLabels(); + this.isShowLabels = barPlot.isShowLabels(); + this.categoryAxisLabelExpression = factory.getExpression(barPlot.getCategoryAxisLabelExpression()); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = barPlot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = barPlot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisTickLabelMask = barPlot.getCategoryAxisTickLabelMask(); + this.categoryAxisLineColor = barPlot.getCategoryAxisLineColor(); + this.valueAxisLabelExpression = factory.getExpression(barPlot.getValueAxisLabelExpression()); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = barPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = barPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisTickLabelMask = barPlot.getValueAxisTickLabelMask(); + this.valueAxisLineColor = barPlot.getValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return this.categoryAxisLabelExpression; + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public String getCategoryAxisTickLabelMask() { + return this.categoryAxisTickLabelMask; + } + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public JRExpression getValueAxisLabelExpression() { + return this.valueAxisLabelExpression; + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public String getValueAxisTickLabelMask() { + return this.valueAxisTickLabelMask; + } + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public boolean isShowTickMarks() { + return this.isShowTickMarks; + } + + public void setShowTickMarks(boolean isShowTickMarks) { + boolean old = this.isShowTickMarks; + this.isShowTickMarks = isShowTickMarks; + getEventSupport().firePropertyChange("showTickMarks", old, this.isShowTickMarks); + } + + public boolean isShowTickLabels() { + return this.isShowTickLabels; + } + + public void setShowTickLabels(boolean isShowTickLabels) { + boolean old = this.isShowTickLabels; + this.isShowTickLabels = isShowTickLabels; + getEventSupport().firePropertyChange("showTickLabels", old, this.isShowTickLabels); + } + + public boolean isShowLabels() { + return this.isShowLabels; + } + + public void setShowLabels(boolean isShowLabels) { + boolean old = this.isShowLabels; + this.isShowLabels = isShowLabels; + getEventSupport().firePropertyChange("showLabels", old, this.isShowLabels); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseBarPlot clone = (JRBaseBarPlot)super.clone(parentChart); + if (this.categoryAxisLabelExpression != null) + clone.categoryAxisLabelExpression = (JRExpression)this.categoryAxisLabelExpression.clone(); + if (this.valueAxisLabelExpression != null) + clone.valueAxisLabelExpression = (JRExpression)this.valueAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBubblePlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBubblePlot.java new file mode 100644 index 0000000..118df13 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseBubblePlot.java @@ -0,0 +1,178 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRXAxisFormat; +import net.sf.jasperreports.charts.JRYAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseBubblePlot extends JRBaseChartPlot implements JRBubblePlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SCALE_TYPE = "scaleType"; + + protected JRExpression xAxisLabelExpression = null; + + protected JRFont xAxisLabelFont = null; + + protected Color xAxisLabelColor = null; + + protected JRFont xAxisTickLabelFont = null; + + protected Color xAxisTickLabelColor = null; + + protected String xAxisTickLabelMask = null; + + protected Color xAxisLineColor = null; + + protected JRExpression yAxisLabelExpression = null; + + protected JRFont yAxisLabelFont = null; + + protected Color yAxisLabelColor = null; + + protected JRFont yAxisTickLabelFont = null; + + protected Color yAxisTickLabelColor = null; + + protected String yAxisTickLabelMask = null; + + protected Color yAxisLineColor = null; + + protected int scaleType = 2; + + public JRBaseBubblePlot(JRChartPlot bubblePlot, JRChart chart) { + super(bubblePlot, chart); + } + + public JRBaseBubblePlot(JRBubblePlot bubblePlot, JRBaseObjectFactory factory) { + super((JRChartPlot)bubblePlot, factory); + this.scaleType = bubblePlot.getScaleType(); + this.xAxisLabelExpression = factory.getExpression(bubblePlot.getXAxisLabelExpression()); + this.xAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getXAxisLabelFont()); + this.xAxisLabelColor = bubblePlot.getOwnXAxisLabelColor(); + this.xAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getXAxisTickLabelFont()); + this.xAxisTickLabelColor = bubblePlot.getOwnXAxisTickLabelColor(); + this.xAxisTickLabelMask = bubblePlot.getXAxisTickLabelMask(); + this.xAxisLineColor = bubblePlot.getXAxisLineColor(); + this.yAxisLabelExpression = factory.getExpression(bubblePlot.getYAxisLabelExpression()); + this.yAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getYAxisLabelFont()); + this.yAxisLabelColor = bubblePlot.getOwnYAxisLabelColor(); + this.yAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getYAxisTickLabelFont()); + this.yAxisTickLabelColor = bubblePlot.getOwnYAxisTickLabelColor(); + this.yAxisTickLabelMask = bubblePlot.getYAxisTickLabelMask(); + this.yAxisLineColor = bubblePlot.getYAxisLineColor(); + } + + public JRExpression getXAxisLabelExpression() { + return this.xAxisLabelExpression; + } + + public JRFont getXAxisLabelFont() { + return this.xAxisLabelFont; + } + + public Color getXAxisLabelColor() { + return JRStyleResolver.getXAxisLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLabelColor() { + return this.xAxisLabelColor; + } + + public JRFont getXAxisTickLabelFont() { + return this.xAxisTickLabelFont; + } + + public Color getXAxisTickLabelColor() { + return JRStyleResolver.getXAxisTickLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisTickLabelColor() { + return this.xAxisTickLabelColor; + } + + public String getXAxisTickLabelMask() { + return this.xAxisTickLabelMask; + } + + public Color getXAxisLineColor() { + return JRStyleResolver.getXAxisLineColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLineColor() { + return this.xAxisLineColor; + } + + public JRExpression getYAxisLabelExpression() { + return this.yAxisLabelExpression; + } + + public JRFont getYAxisLabelFont() { + return this.yAxisLabelFont; + } + + public Color getYAxisLabelColor() { + return JRStyleResolver.getYAxisLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLabelColor() { + return this.yAxisLabelColor; + } + + public JRFont getYAxisTickLabelFont() { + return this.yAxisTickLabelFont; + } + + public Color getYAxisTickLabelColor() { + return JRStyleResolver.getYAxisTickLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisTickLabelColor() { + return this.yAxisTickLabelColor; + } + + public String getYAxisTickLabelMask() { + return this.yAxisTickLabelMask; + } + + public Color getYAxisLineColor() { + return JRStyleResolver.getYAxisLineColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLineColor() { + return this.yAxisLineColor; + } + + public int getScaleType() { + return this.scaleType; + } + + public void setScaleType(int scaleType) { + int old = this.scaleType; + this.scaleType = scaleType; + getEventSupport().firePropertyChange("scaleType", old, this.scaleType); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseBubblePlot clone = (JRBaseBubblePlot)super.clone(parentChart); + if (this.xAxisLabelExpression != null) + clone.xAxisLabelExpression = (JRExpression)this.xAxisLabelExpression.clone(); + if (this.yAxisLabelExpression != null) + clone.yAxisLabelExpression = (JRExpression)this.yAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCandlestickPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCandlestickPlot.java new file mode 100644 index 0000000..4b1a4b1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCandlestickPlot.java @@ -0,0 +1,178 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRTimeAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseCandlestickPlot extends JRBaseChartPlot implements JRCandlestickPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SHOW_VOLUME = "showVolume"; + + protected JRExpression timeAxisLabelExpression = null; + + protected JRFont timeAxisLabelFont = null; + + protected Color timeAxisLabelColor = null; + + protected JRFont timeAxisTickLabelFont = null; + + protected Color timeAxisTickLabelColor = null; + + protected String timeAxisTickLabelMask = null; + + protected Color timeAxisLineColor = null; + + protected JRExpression valueAxisLabelExpression = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected String valueAxisTickLabelMask = null; + + protected Color valueAxisLineColor = null; + + protected boolean isShowVolume = true; + + protected JRBaseCandlestickPlot(JRChartPlot candlestickPlot, JRChart chart) { + super(candlestickPlot, chart); + } + + public JRBaseCandlestickPlot(JRCandlestickPlot candlestickPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)candlestickPlot, factory); + this.isShowVolume = candlestickPlot.isShowVolume(); + this.timeAxisLabelExpression = factory.getExpression(candlestickPlot.getTimeAxisLabelExpression()); + this.timeAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getTimeAxisLabelFont()); + this.timeAxisLabelColor = candlestickPlot.getOwnTimeAxisLabelColor(); + this.timeAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getTimeAxisTickLabelFont()); + this.timeAxisTickLabelColor = candlestickPlot.getOwnTimeAxisTickLabelColor(); + this.timeAxisTickLabelMask = candlestickPlot.getTimeAxisTickLabelMask(); + this.timeAxisLineColor = candlestickPlot.getTimeAxisLineColor(); + this.valueAxisLabelExpression = factory.getExpression(candlestickPlot.getValueAxisLabelExpression()); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = candlestickPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = candlestickPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisTickLabelMask = candlestickPlot.getValueAxisTickLabelMask(); + this.valueAxisLineColor = candlestickPlot.getValueAxisTickLabelColor(); + } + + public JRExpression getTimeAxisLabelExpression() { + return this.timeAxisLabelExpression; + } + + public JRFont getTimeAxisLabelFont() { + return this.timeAxisLabelFont; + } + + public Color getTimeAxisLabelColor() { + return JRStyleResolver.getTimeAxisLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLabelColor() { + return this.timeAxisLabelColor; + } + + public JRFont getTimeAxisTickLabelFont() { + return this.timeAxisTickLabelFont; + } + + public Color getTimeAxisTickLabelColor() { + return JRStyleResolver.getTimeAxisTickLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisTickLabelColor() { + return this.timeAxisTickLabelColor; + } + + public String getTimeAxisTickLabelMask() { + return this.timeAxisTickLabelMask; + } + + public Color getTimeAxisLineColor() { + return JRStyleResolver.getTimeAxisLineColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLineColor() { + return this.timeAxisLineColor; + } + + public JRExpression getValueAxisLabelExpression() { + return this.valueAxisLabelExpression; + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public String getValueAxisTickLabelMask() { + return this.valueAxisTickLabelMask; + } + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public boolean isShowVolume() { + return this.isShowVolume; + } + + public void setShowVolume(boolean ShowVolume) { + boolean old = this.isShowVolume; + this.isShowVolume = ShowVolume; + getEventSupport().firePropertyChange("showVolume", old, this.isShowVolume); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseCandlestickPlot clone = (JRBaseCandlestickPlot)super.clone(parentChart); + if (this.timeAxisLabelExpression != null) + clone.timeAxisLabelExpression = (JRExpression)this.timeAxisLabelExpression.clone(); + if (this.valueAxisLabelExpression != null) + clone.valueAxisLabelExpression = (JRExpression)this.valueAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategoryDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategoryDataset.java new file mode 100644 index 0000000..589b1c2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategoryDataset.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRBaseCategoryDataset extends JRBaseChartDataset implements JRCategoryDataset { + private static final long serialVersionUID = 10200L; + + protected JRCategorySeries[] categorySeries = null; + + public JRBaseCategoryDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRBaseCategoryDataset(JRCategoryDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + JRCategorySeries[] srcCategorySeries = dataset.getSeries(); + if (srcCategorySeries != null && srcCategorySeries.length > 0) { + this.categorySeries = new JRCategorySeries[srcCategorySeries.length]; + for (int i = 0; i < this.categorySeries.length; i++) + this.categorySeries[i] = factory.getCategorySeries(srcCategorySeries[i]); + } + } + + public JRCategorySeries[] getSeries() { + return this.categorySeries; + } + + public byte getDatasetType() { + return 2; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBaseCategoryDataset clone = (JRBaseCategoryDataset)super.clone(); + if (this.categorySeries != null) { + clone.categorySeries = new JRCategorySeries[this.categorySeries.length]; + for (int i = 0; i < this.categorySeries.length; i++) + this.categorySeries[i] = (JRCategorySeries)this.categorySeries[i].clone(); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategorySeries.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategorySeries.java new file mode 100644 index 0000000..a325e64 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseCategorySeries.java @@ -0,0 +1,73 @@ +package net.sf.jasperreports.charts.base; + +import java.io.Serializable; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseCategorySeries implements JRCategorySeries, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRExpression seriesExpression = null; + + protected JRExpression categoryExpression = null; + + protected JRExpression valueExpression = null; + + protected JRExpression labelExpression = null; + + protected JRHyperlink itemHyperlink; + + protected JRBaseCategorySeries() {} + + public JRBaseCategorySeries(JRCategorySeries categorySeries, JRBaseObjectFactory factory) { + factory.put(categorySeries, this); + this.seriesExpression = factory.getExpression(categorySeries.getSeriesExpression()); + this.categoryExpression = factory.getExpression(categorySeries.getCategoryExpression()); + this.valueExpression = factory.getExpression(categorySeries.getValueExpression()); + this.labelExpression = factory.getExpression(categorySeries.getLabelExpression()); + this.itemHyperlink = factory.getHyperlink(categorySeries.getItemHyperlink()); + } + + public JRExpression getSeriesExpression() { + return this.seriesExpression; + } + + public JRExpression getCategoryExpression() { + return this.categoryExpression; + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public JRExpression getLabelExpression() { + return this.labelExpression; + } + + public JRHyperlink getItemHyperlink() { + return this.itemHyperlink; + } + + public Object clone() { + JRBaseCategorySeries clone = null; + try { + clone = (JRBaseCategorySeries)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.seriesExpression != null) + clone.seriesExpression = (JRExpression)this.seriesExpression.clone(); + if (this.categoryExpression != null) + clone.categoryExpression = (JRExpression)this.categoryExpression.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + if (this.labelExpression != null) + clone.labelExpression = (JRExpression)this.labelExpression.clone(); + if (this.itemHyperlink != null) + clone.itemHyperlink = (JRHyperlink)this.itemHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseChartAxis.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseChartAxis.java new file mode 100644 index 0000000..489cf0c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseChartAxis.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.charts.base; + +import java.io.Serializable; +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseChartAxis implements JRChartAxis, Serializable { + protected byte position = 1; + + protected JRChart chart = null; + + private static final long serialVersionUID = 10200L; + + public JRBaseChartAxis() {} + + public JRBaseChartAxis(JRChartAxis axis, JRBaseObjectFactory factory) { + factory.put(axis, this); + this.position = axis.getPosition(); + this.chart = (JRChart)factory.getVisitResult((JRVisitable)axis.getChart()); + } + + public byte getPosition() { + return this.position; + } + + public JRChart getChart() { + return this.chart; + } + + public Object clone(JRChart parentChart) { + JRBaseChartAxis clone = null; + try { + clone = (JRBaseChartAxis)clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + clone.chart = parentChart; + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseDataRange.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseDataRange.java new file mode 100644 index 0000000..2fd82d8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseDataRange.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.charts.base; + +import java.io.Serializable; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseDataRange implements JRDataRange, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRExpression lowExpression = null; + + protected JRExpression highExpression = null; + + public JRBaseDataRange(JRDataRange dataRange) { + if (dataRange != null) { + this.lowExpression = dataRange.getLowExpression(); + this.highExpression = dataRange.getHighExpression(); + } + } + + public JRBaseDataRange(JRDataRange dataRange, JRBaseObjectFactory factory) { + factory.put(dataRange, this); + this.lowExpression = factory.getExpression(dataRange.getLowExpression()); + this.highExpression = factory.getExpression(dataRange.getHighExpression()); + } + + public JRExpression getLowExpression() { + return this.lowExpression; + } + + public JRExpression getHighExpression() { + return this.highExpression; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone() { + JRBaseDataRange clone = null; + try { + clone = (JRBaseDataRange)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.lowExpression != null) + clone.lowExpression = (JRExpression)this.lowExpression.clone(); + if (this.highExpression != null) + clone.highExpression = (JRExpression)this.highExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowDataset.java new file mode 100644 index 0000000..5837fd6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowDataset.java @@ -0,0 +1,111 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRBaseHighLowDataset extends JRBaseChartDataset implements JRHighLowDataset { + private static final long serialVersionUID = 10200L; + + protected JRExpression seriesExpression; + + protected JRExpression dateExpression; + + protected JRExpression highExpression; + + protected JRExpression lowExpression; + + protected JRExpression openExpression; + + protected JRExpression closeExpression; + + protected JRExpression volumeExpression; + + private JRHyperlink itemHyperlink; + + public JRBaseHighLowDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRBaseHighLowDataset(JRHighLowDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + this.seriesExpression = factory.getExpression(dataset.getSeriesExpression()); + this.dateExpression = factory.getExpression(dataset.getDateExpression()); + this.highExpression = factory.getExpression(dataset.getHighExpression()); + this.lowExpression = factory.getExpression(dataset.getLowExpression()); + this.openExpression = factory.getExpression(dataset.getOpenExpression()); + this.closeExpression = factory.getExpression(dataset.getCloseExpression()); + this.volumeExpression = factory.getExpression(dataset.getVolumeExpression()); + this.itemHyperlink = factory.getHyperlink(dataset.getItemHyperlink()); + } + + public JRExpression getSeriesExpression() { + return this.seriesExpression; + } + + public JRExpression getDateExpression() { + return this.dateExpression; + } + + public JRExpression getHighExpression() { + return this.highExpression; + } + + public JRExpression getLowExpression() { + return this.lowExpression; + } + + public JRExpression getOpenExpression() { + return this.openExpression; + } + + public JRExpression getCloseExpression() { + return this.closeExpression; + } + + public JRExpression getVolumeExpression() { + return this.volumeExpression; + } + + public byte getDatasetType() { + return 7; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRHyperlink getItemHyperlink() { + return this.itemHyperlink; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBaseHighLowDataset clone = (JRBaseHighLowDataset)super.clone(); + if (this.seriesExpression != null) + clone.seriesExpression = (JRExpression)this.seriesExpression.clone(); + if (this.dateExpression != null) + clone.dateExpression = (JRExpression)this.dateExpression.clone(); + if (this.highExpression != null) + clone.highExpression = (JRExpression)this.highExpression.clone(); + if (this.lowExpression != null) + clone.lowExpression = (JRExpression)this.lowExpression.clone(); + if (this.openExpression != null) + clone.openExpression = (JRExpression)this.openExpression.clone(); + if (this.closeExpression != null) + clone.closeExpression = (JRExpression)this.closeExpression.clone(); + if (this.volumeExpression != null) + clone.volumeExpression = (JRExpression)this.volumeExpression.clone(); + if (this.itemHyperlink != null) + clone.itemHyperlink = (JRHyperlink)this.itemHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowPlot.java new file mode 100644 index 0000000..476ad30 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseHighLowPlot.java @@ -0,0 +1,193 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRTimeAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseHighLowPlot extends JRBaseChartPlot implements JRHighLowPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SHOW_CLOSE_TICKS = "showCloseTicks"; + + public static final String PROPERTY_SHOW_OPEN_TICKS = "showOpenTicks"; + + protected JRExpression timeAxisLabelExpression = null; + + protected JRFont timeAxisLabelFont = null; + + protected Color timeAxisLabelColor = null; + + protected JRFont timeAxisTickLabelFont = null; + + protected Color timeAxisTickLabelColor = null; + + protected String timeAxisTickLabelMask = null; + + protected Color timeAxisLineColor = null; + + protected JRExpression valueAxisLabelExpression = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected String valueAxisTickLabelMask = null; + + protected Color valueAxisLineColor = null; + + protected boolean isShowOpenTicks = false; + + protected boolean isShowCloseTicks = false; + + public JRBaseHighLowPlot(JRChartPlot highLowPlot, JRChart chart) { + super(highLowPlot, chart); + } + + public JRBaseHighLowPlot(JRHighLowPlot highLowPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)highLowPlot, factory); + this.isShowOpenTicks = highLowPlot.isShowOpenTicks(); + this.isShowCloseTicks = highLowPlot.isShowCloseTicks(); + this.timeAxisLabelExpression = factory.getExpression(highLowPlot.getTimeAxisLabelExpression()); + this.timeAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getTimeAxisLabelFont()); + this.timeAxisLabelColor = highLowPlot.getOwnTimeAxisLabelColor(); + this.timeAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getTimeAxisTickLabelFont()); + this.timeAxisTickLabelColor = highLowPlot.getOwnTimeAxisTickLabelColor(); + this.timeAxisTickLabelMask = highLowPlot.getTimeAxisTickLabelMask(); + this.timeAxisLineColor = highLowPlot.getTimeAxisLineColor(); + this.valueAxisLabelExpression = factory.getExpression(highLowPlot.getValueAxisLabelExpression()); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = highLowPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = highLowPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisTickLabelMask = highLowPlot.getValueAxisTickLabelMask(); + this.valueAxisLineColor = highLowPlot.getValueAxisTickLabelColor(); + } + + public JRExpression getTimeAxisLabelExpression() { + return this.timeAxisLabelExpression; + } + + public JRFont getTimeAxisLabelFont() { + return this.timeAxisLabelFont; + } + + public Color getTimeAxisLabelColor() { + return JRStyleResolver.getTimeAxisLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLabelColor() { + return this.timeAxisLabelColor; + } + + public JRFont getTimeAxisTickLabelFont() { + return this.timeAxisTickLabelFont; + } + + public Color getTimeAxisTickLabelColor() { + return JRStyleResolver.getTimeAxisTickLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisTickLabelColor() { + return this.timeAxisTickLabelColor; + } + + public String getTimeAxisTickLabelMask() { + return this.timeAxisTickLabelMask; + } + + public Color getTimeAxisLineColor() { + return JRStyleResolver.getTimeAxisLineColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLineColor() { + return this.timeAxisLineColor; + } + + public JRExpression getValueAxisLabelExpression() { + return this.valueAxisLabelExpression; + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public String getValueAxisTickLabelMask() { + return this.valueAxisTickLabelMask; + } + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public boolean isShowOpenTicks() { + return this.isShowOpenTicks; + } + + public void setShowOpenTicks(boolean showOpenTicks) { + boolean old = this.isShowOpenTicks; + this.isShowOpenTicks = showOpenTicks; + getEventSupport().firePropertyChange("showOpenTicks", old, this.isShowOpenTicks); + } + + public boolean isShowCloseTicks() { + return this.isShowCloseTicks; + } + + public void setShowCloseTicks(boolean showCloseTicks) { + boolean old = this.isShowCloseTicks; + this.isShowCloseTicks = showCloseTicks; + getEventSupport().firePropertyChange("showCloseTicks", old, this.isShowCloseTicks); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseHighLowPlot clone = (JRBaseHighLowPlot)super.clone(parentChart); + if (this.timeAxisLabelExpression != null) + clone.timeAxisLabelExpression = (JRExpression)this.timeAxisLabelExpression.clone(); + if (this.valueAxisLabelExpression != null) + clone.valueAxisLabelExpression = (JRExpression)this.valueAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseLinePlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseLinePlot.java new file mode 100644 index 0000000..4691b2f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseLinePlot.java @@ -0,0 +1,193 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseLinePlot extends JRBaseChartPlot implements JRLinePlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SHOW_LINES = "showLines"; + + public static final String PROPERTY_SHOW_SHAPES = "showShapes"; + + protected JRExpression categoryAxisLabelExpression = null; + + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected String categoryAxisTickLabelMask = null; + + protected Color categoryAxisLineColor = null; + + protected JRExpression valueAxisLabelExpression = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected String valueAxisTickLabelMask = null; + + protected Color valueAxisLineColor = null; + + boolean isShowShapes = true; + + boolean isShowLines = true; + + public JRBaseLinePlot(JRChartPlot linePlot, JRChart chart) { + super(linePlot, chart); + } + + public JRBaseLinePlot(JRLinePlot linePlot, JRBaseObjectFactory factory) { + super((JRChartPlot)linePlot, factory); + this.isShowShapes = linePlot.isShowShapes(); + this.isShowLines = linePlot.isShowLines(); + this.categoryAxisLabelExpression = factory.getExpression(linePlot.getCategoryAxisLabelExpression()); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)linePlot.getChart(), linePlot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = linePlot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)linePlot.getChart(), linePlot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = linePlot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisTickLabelMask = linePlot.getCategoryAxisTickLabelMask(); + this.categoryAxisLineColor = linePlot.getCategoryAxisLineColor(); + this.valueAxisLabelExpression = factory.getExpression(linePlot.getValueAxisLabelExpression()); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)linePlot.getChart(), linePlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = linePlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)linePlot.getChart(), linePlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = linePlot.getOwnValueAxisTickLabelColor(); + this.valueAxisTickLabelMask = linePlot.getValueAxisTickLabelMask(); + this.valueAxisLineColor = linePlot.getValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return this.categoryAxisLabelExpression; + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public String getCategoryAxisTickLabelMask() { + return this.categoryAxisTickLabelMask; + } + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public JRExpression getValueAxisLabelExpression() { + return this.valueAxisLabelExpression; + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public String getValueAxisTickLabelMask() { + return this.valueAxisTickLabelMask; + } + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public boolean isShowShapes() { + return this.isShowShapes; + } + + public boolean isShowLines() { + return this.isShowLines; + } + + public void setShowShapes(boolean value) { + boolean old = this.isShowShapes; + this.isShowShapes = value; + getEventSupport().firePropertyChange("showShapes", old, this.isShowShapes); + } + + public void setShowLines(boolean value) { + boolean old = this.isShowLines; + this.isShowLines = value; + getEventSupport().firePropertyChange("showShapes", old, this.isShowLines); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseLinePlot clone = (JRBaseLinePlot)super.clone(parentChart); + if (this.categoryAxisLabelExpression != null) + clone.categoryAxisLabelExpression = (JRExpression)this.categoryAxisLabelExpression.clone(); + if (this.valueAxisLabelExpression != null) + clone.valueAxisLabelExpression = (JRExpression)this.valueAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMeterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMeterPlot.java new file mode 100644 index 0000000..da0f2eb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMeterPlot.java @@ -0,0 +1,123 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.charts.util.JRMeterInterval; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseMeterPlot extends JRBaseChartPlot implements JRMeterPlot { + private static final long serialVersionUID = 10200L; + + protected JRDataRange dataRange = null; + + protected JRValueDisplay valueDisplay = null; + + protected byte shape = 2; + + protected List intervals = new ArrayList(); + + protected int meterAngle = 180; + + protected String units = null; + + protected double tickInterval = 10.0D; + + protected Color meterBackgroundColor = null; + + protected Color needleColor = null; + + protected Color tickColor = null; + + public JRBaseMeterPlot(JRChartPlot meterPlot, JRChart chart) { + super(meterPlot, chart); + } + + public JRBaseMeterPlot(JRMeterPlot meterPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)meterPlot, factory); + this.dataRange = new JRBaseDataRange(meterPlot.getDataRange(), factory); + this.valueDisplay = new JRBaseValueDisplay(meterPlot.getValueDisplay(), factory); + this.shape = meterPlot.getShape(); + List origIntervals = meterPlot.getIntervals(); + this.intervals.clear(); + if (origIntervals != null) { + Iterator iter = origIntervals.iterator(); + while (iter.hasNext()) { + JRMeterInterval interval = iter.next(); + this.intervals.add(new JRMeterInterval(interval, factory)); + } + } + this.meterAngle = meterPlot.getMeterAngle(); + this.units = meterPlot.getUnits(); + this.tickInterval = meterPlot.getTickInterval(); + this.meterBackgroundColor = meterPlot.getMeterBackgroundColor(); + this.needleColor = meterPlot.getNeedleColor(); + this.tickColor = meterPlot.getTickColor(); + } + + public JRDataRange getDataRange() { + return this.dataRange; + } + + public JRValueDisplay getValueDisplay() { + return this.valueDisplay; + } + + public byte getShape() { + return this.shape; + } + + public List getIntervals() { + return this.intervals; + } + + public int getMeterAngle() { + return this.meterAngle; + } + + public String getUnits() { + return this.units; + } + + public double getTickInterval() { + return this.tickInterval; + } + + public Color getMeterBackgroundColor() { + return this.meterBackgroundColor; + } + + public Color getNeedleColor() { + return this.needleColor; + } + + public Color getTickColor() { + return this.tickColor; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseMeterPlot clone = (JRBaseMeterPlot)super.clone(parentChart); + if (this.dataRange != null) + clone.dataRange = (JRDataRange)this.dataRange.clone(); + if (this.valueDisplay != null) + clone.valueDisplay = (JRValueDisplay)this.valueDisplay.clone(); + if (this.intervals != null) { + clone.intervals = new ArrayList(this.intervals.size()); + for (int i = 0; i < this.intervals.size(); i++) + clone.intervals.add(((JRMeterInterval)this.intervals.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMultiAxisPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMultiAxisPlot.java new file mode 100644 index 0000000..4e237ee --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseMultiAxisPlot.java @@ -0,0 +1,57 @@ +package net.sf.jasperreports.charts.base; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.charts.JRMultiAxisPlot; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseMultiAxisPlot extends JRBaseChartPlot implements JRMultiAxisPlot { + private static final long serialVersionUID = 10200L; + + protected List axes = new ArrayList(); + + public JRBaseMultiAxisPlot(JRChartPlot multiAxisPlot, JRChart chart) { + super(multiAxisPlot, chart); + } + + public JRBaseMultiAxisPlot(JRMultiAxisPlot multiAxisPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)multiAxisPlot, factory); + List origAxes = multiAxisPlot.getAxes(); + this.axes.clear(); + if (origAxes != null) { + Iterator iter = origAxes.iterator(); + while (iter.hasNext()) { + JRChartAxis axis = iter.next(); + this.axes.add(factory.getChartAxis(axis)); + } + } + } + + public List getAxes() { + return this.axes; + } + + public void collectExpressions(JRExpressionCollector collector) { + Iterator iter = this.axes.iterator(); + while (iter.hasNext()) { + JRChartAxis axis = iter.next(); + collector.collect(axis.getChart()); + } + } + + public Object clone(JRChart parentChart) { + JRBaseMultiAxisPlot clone = (JRBaseMultiAxisPlot)super.clone(parentChart); + if (this.axes != null) { + clone.axes = new ArrayList(this.axes.size()); + for (int i = 0; i < this.axes.size(); i++) + clone.axes.add(((JRChartAxis)this.axes.get(i)).clone(parentChart)); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePie3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePie3DPlot.java new file mode 100644 index 0000000..b0f4707 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePie3DPlot.java @@ -0,0 +1,52 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBasePie3DPlot extends JRBaseChartPlot implements JRPie3DPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CIRCULAR = "circular"; + + public static final String PROPERTY_DEPTH_FACTOR = "depthFactor"; + + protected double depthFactor = 0.2D; + + protected boolean isCircular = false; + + public JRBasePie3DPlot(JRChartPlot pie3DPlot, JRChart chart) { + super(pie3DPlot, chart); + } + + public JRBasePie3DPlot(JRPie3DPlot pie3DPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)pie3DPlot, factory); + this.depthFactor = pie3DPlot.getDepthFactor(); + this.isCircular = pie3DPlot.isCircular(); + } + + public double getDepthFactor() { + return this.depthFactor; + } + + public void setDepthFactor(double depthFactor) { + double old = this.depthFactor; + this.depthFactor = depthFactor; + getEventSupport().firePropertyChange("depthFactor", old, this.depthFactor); + } + + public void collectExpressions(JRExpressionCollector collector) {} + + public boolean isCircular() { + return this.isCircular; + } + + public void setCircular(boolean isCircular) { + boolean old = this.isCircular; + this.isCircular = isCircular; + getEventSupport().firePropertyChange("circular", old, this.isCircular); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePieDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePieDataset.java new file mode 100644 index 0000000..6484ef1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePieDataset.java @@ -0,0 +1,75 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRBasePieDataset extends JRBaseChartDataset implements JRPieDataset { + private static final long serialVersionUID = 10200L; + + protected JRExpression keyExpression = null; + + protected JRExpression valueExpression = null; + + protected JRExpression labelExpression = null; + + private JRHyperlink sectionHyperlink; + + public JRBasePieDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRBasePieDataset(JRPieDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + this.keyExpression = factory.getExpression(dataset.getKeyExpression()); + this.valueExpression = factory.getExpression(dataset.getValueExpression()); + this.labelExpression = factory.getExpression(dataset.getLabelExpression()); + this.sectionHyperlink = factory.getHyperlink(dataset.getSectionHyperlink()); + } + + public JRExpression getKeyExpression() { + return this.keyExpression; + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public JRExpression getLabelExpression() { + return this.labelExpression; + } + + public byte getDatasetType() { + return 1; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRHyperlink getSectionHyperlink() { + return this.sectionHyperlink; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBasePieDataset clone = (JRBasePieDataset)super.clone(); + if (this.keyExpression != null) + clone.keyExpression = (JRExpression)this.keyExpression.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + if (this.labelExpression != null) + clone.labelExpression = (JRExpression)this.labelExpression.clone(); + if (this.sectionHyperlink != null) + clone.sectionHyperlink = (JRHyperlink)this.sectionHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePiePlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePiePlot.java new file mode 100644 index 0000000..c89e01c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBasePiePlot.java @@ -0,0 +1,44 @@ +package net.sf.jasperreports.charts.base; + +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBasePiePlot extends JRBaseChartPlot implements JRPiePlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CIRCULAR = "circular"; + + protected boolean isCircular = true; + + public JRBasePiePlot(JRChartPlot piePlot, JRChart chart) { + super(piePlot, chart); + } + + public JRBasePiePlot(JRPiePlot piePlot, JRBaseObjectFactory factory) { + super((JRChartPlot)piePlot, factory); + this.isCircular = piePlot.isCircular(); + } + + public void collectExpressions(JRExpressionCollector collector) {} + + public boolean isCircular() { + return this.isCircular; + } + + public void setCircular(boolean isCircular) { + boolean old = this.isCircular; + this.isCircular = isCircular; + getEventSupport().firePropertyChange("circular", old, this.isCircular); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + ObjectInputStream.GetField fields = in.readFields(); + this.isCircular = fields.get("isCircular", true); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseScatterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseScatterPlot.java new file mode 100644 index 0000000..680b9d2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseScatterPlot.java @@ -0,0 +1,193 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRXAxisFormat; +import net.sf.jasperreports.charts.JRYAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseScatterPlot extends JRBaseChartPlot implements JRScatterPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SHOW_LINES = "showLines"; + + public static final String PROPERTY_SHOW_SHAPES = "showShapes"; + + protected JRExpression xAxisLabelExpression = null; + + protected JRFont xAxisLabelFont = null; + + protected Color xAxisLabelColor = null; + + protected JRFont xAxisTickLabelFont = null; + + protected Color xAxisTickLabelColor = null; + + protected String xAxisTickLabelMask = null; + + protected Color xAxisLineColor = null; + + protected JRExpression yAxisLabelExpression = null; + + protected JRFont yAxisLabelFont = null; + + protected Color yAxisLabelColor = null; + + protected JRFont yAxisTickLabelFont = null; + + protected Color yAxisTickLabelColor = null; + + protected String yAxisTickLabelMask = null; + + protected Color yAxisLineColor = null; + + boolean isShowShapes = true; + + boolean isShowLines = true; + + public JRBaseScatterPlot(JRChartPlot scattedPlot, JRChart chart) { + super(scattedPlot, chart); + } + + public JRBaseScatterPlot(JRScatterPlot scattedPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)scattedPlot, factory); + this.isShowShapes = scattedPlot.isShowShapes(); + this.isShowLines = scattedPlot.isShowLines(); + this.xAxisLabelExpression = factory.getExpression(scattedPlot.getXAxisLabelExpression()); + this.xAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)scattedPlot.getChart(), scattedPlot.getXAxisLabelFont()); + this.xAxisLabelColor = scattedPlot.getOwnXAxisLabelColor(); + this.xAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)scattedPlot.getChart(), scattedPlot.getXAxisTickLabelFont()); + this.xAxisTickLabelColor = scattedPlot.getOwnXAxisTickLabelColor(); + this.xAxisTickLabelMask = scattedPlot.getXAxisTickLabelMask(); + this.xAxisLineColor = scattedPlot.getXAxisLineColor(); + this.yAxisLabelExpression = factory.getExpression(scattedPlot.getYAxisLabelExpression()); + this.yAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)scattedPlot.getChart(), scattedPlot.getYAxisLabelFont()); + this.yAxisLabelColor = scattedPlot.getOwnYAxisLabelColor(); + this.yAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)scattedPlot.getChart(), scattedPlot.getYAxisTickLabelFont()); + this.yAxisTickLabelColor = scattedPlot.getOwnYAxisTickLabelColor(); + this.yAxisTickLabelMask = scattedPlot.getYAxisTickLabelMask(); + this.yAxisLineColor = scattedPlot.getYAxisLineColor(); + } + + public JRExpression getXAxisLabelExpression() { + return this.xAxisLabelExpression; + } + + public JRFont getXAxisLabelFont() { + return this.xAxisLabelFont; + } + + public Color getXAxisLabelColor() { + return JRStyleResolver.getXAxisLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLabelColor() { + return this.xAxisLabelColor; + } + + public JRFont getXAxisTickLabelFont() { + return this.xAxisTickLabelFont; + } + + public Color getXAxisTickLabelColor() { + return JRStyleResolver.getXAxisTickLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisTickLabelColor() { + return this.xAxisTickLabelColor; + } + + public String getXAxisTickLabelMask() { + return this.xAxisTickLabelMask; + } + + public Color getXAxisLineColor() { + return JRStyleResolver.getXAxisLineColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLineColor() { + return this.xAxisLineColor; + } + + public JRExpression getYAxisLabelExpression() { + return this.yAxisLabelExpression; + } + + public JRFont getYAxisLabelFont() { + return this.yAxisLabelFont; + } + + public Color getYAxisLabelColor() { + return JRStyleResolver.getYAxisLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLabelColor() { + return this.yAxisLabelColor; + } + + public JRFont getYAxisTickLabelFont() { + return this.yAxisTickLabelFont; + } + + public Color getYAxisTickLabelColor() { + return JRStyleResolver.getYAxisTickLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisTickLabelColor() { + return this.yAxisTickLabelColor; + } + + public String getYAxisTickLabelMask() { + return this.yAxisTickLabelMask; + } + + public Color getYAxisLineColor() { + return JRStyleResolver.getYAxisLineColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLineColor() { + return this.yAxisLineColor; + } + + public boolean isShowShapes() { + return this.isShowShapes; + } + + public boolean isShowLines() { + return this.isShowLines; + } + + public void setShowShapes(boolean value) { + boolean old = this.isShowShapes; + this.isShowShapes = value; + getEventSupport().firePropertyChange("showShapes", old, this.isShowShapes); + } + + public void setShowLines(boolean value) { + boolean old = this.isShowLines; + this.isShowLines = value; + getEventSupport().firePropertyChange("showLines", old, this.isShowLines); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseScatterPlot clone = (JRBaseScatterPlot)super.clone(parentChart); + if (this.xAxisLabelExpression != null) + clone.xAxisLabelExpression = (JRExpression)this.xAxisLabelExpression.clone(); + if (this.yAxisLabelExpression != null) + clone.yAxisLabelExpression = (JRExpression)this.yAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseThermometerPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseThermometerPlot.java new file mode 100644 index 0000000..5405932 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseThermometerPlot.java @@ -0,0 +1,101 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseThermometerPlot extends JRBaseChartPlot implements JRThermometerPlot { + private static final long serialVersionUID = 10200L; + + protected JRDataRange dataRange = null; + + protected JRValueDisplay valueDisplay = null; + + protected boolean showValueLines = false; + + protected byte valueLocation = 3; + + protected Color mercuryColor = null; + + protected JRDataRange lowRange = null; + + protected JRDataRange mediumRange = null; + + protected JRDataRange highRange = null; + + public JRBaseThermometerPlot(JRChartPlot thermoPlot, JRChart chart) { + super(thermoPlot, chart); + } + + public JRBaseThermometerPlot(JRThermometerPlot thermoPlot, JRBaseObjectFactory factory) { + super((JRChartPlot)thermoPlot, factory); + this.dataRange = new JRBaseDataRange(thermoPlot.getDataRange(), factory); + this.valueDisplay = new JRBaseValueDisplay(thermoPlot.getValueDisplay(), factory); + this.showValueLines = thermoPlot.isShowValueLines(); + this.valueLocation = thermoPlot.getValueLocation(); + this.mercuryColor = thermoPlot.getMercuryColor(); + if (thermoPlot.getLowRange() != null) + this.lowRange = new JRBaseDataRange(thermoPlot.getLowRange(), factory); + if (thermoPlot.getMediumRange() != null) + this.mediumRange = new JRBaseDataRange(thermoPlot.getMediumRange(), factory); + if (thermoPlot.getHighRange() != null) + this.highRange = new JRBaseDataRange(thermoPlot.getHighRange(), factory); + } + + public JRDataRange getDataRange() { + return this.dataRange; + } + + public JRValueDisplay getValueDisplay() { + return this.valueDisplay; + } + + public boolean isShowValueLines() { + return this.showValueLines; + } + + public byte getValueLocation() { + return this.valueLocation; + } + + public Color getMercuryColor() { + return this.mercuryColor; + } + + public JRDataRange getLowRange() { + return this.lowRange; + } + + public JRDataRange getMediumRange() { + return this.mediumRange; + } + + public JRDataRange getHighRange() { + return this.highRange; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseThermometerPlot clone = (JRBaseThermometerPlot)super.clone(parentChart); + if (this.dataRange != null) + clone.dataRange = (JRDataRange)this.dataRange.clone(); + if (this.valueDisplay != null) + clone.valueDisplay = (JRValueDisplay)this.valueDisplay.clone(); + if (this.lowRange != null) + clone.lowRange = (JRDataRange)this.lowRange.clone(); + if (this.mediumRange != null) + clone.mediumRange = (JRDataRange)this.mediumRange.clone(); + if (this.highRange != null) + clone.highRange = (JRDataRange)this.highRange.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodDataset.java new file mode 100644 index 0000000..dd4b00e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodDataset.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRBaseTimePeriodDataset extends JRBaseChartDataset implements JRTimePeriodDataset { + private static final long serialVersionUID = 10200L; + + private JRTimePeriodSeries[] timePeriodSeries = null; + + protected JRBaseTimePeriodDataset(JRTimePeriodDataset dataset) { + super((JRChartDataset)dataset); + } + + public JRBaseTimePeriodDataset(JRTimePeriodDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + JRTimePeriodSeries[] srcTimePeriodSeries = dataset.getSeries(); + if (srcTimePeriodSeries != null && srcTimePeriodSeries.length > 0) { + this.timePeriodSeries = new JRTimePeriodSeries[srcTimePeriodSeries.length]; + for (int i = 0; i < this.timePeriodSeries.length; i++) + this.timePeriodSeries[i] = factory.getTimePeriodSeries(srcTimePeriodSeries[i]); + } + } + + public JRTimePeriodSeries[] getSeries() { + return this.timePeriodSeries; + } + + public byte getDatasetType() { + return 5; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBaseTimePeriodDataset clone = (JRBaseTimePeriodDataset)super.clone(); + if (this.timePeriodSeries != null) { + clone.timePeriodSeries = new JRTimePeriodSeries[this.timePeriodSeries.length]; + for (int i = 0; i < this.timePeriodSeries.length; i++) + this.timePeriodSeries[i] = (JRTimePeriodSeries)this.timePeriodSeries[i].clone(); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodSeries.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodSeries.java new file mode 100644 index 0000000..65f2c43 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimePeriodSeries.java @@ -0,0 +1,82 @@ +package net.sf.jasperreports.charts.base; + +import java.io.Serializable; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseTimePeriodSeries implements JRTimePeriodSeries, Serializable { + private static final long serialVersionUID = 608L; + + protected JRExpression seriesExpression; + + protected JRExpression startDateExpression; + + protected JRExpression endDateExpression; + + protected JRExpression valueExpression; + + protected JRExpression labelExpression; + + protected JRHyperlink itemHyperlink; + + protected JRBaseTimePeriodSeries() {} + + public JRBaseTimePeriodSeries(JRTimePeriodSeries timePeriodSeries, JRBaseObjectFactory factory) { + factory.put(timePeriodSeries, factory); + this.seriesExpression = factory.getExpression(timePeriodSeries.getSeriesExpression()); + this.startDateExpression = factory.getExpression(timePeriodSeries.getStartDateExpression()); + this.endDateExpression = factory.getExpression(timePeriodSeries.getEndDateExpression()); + this.valueExpression = factory.getExpression(timePeriodSeries.getValueExpression()); + this.labelExpression = factory.getExpression(timePeriodSeries.getLabelExpression()); + this.itemHyperlink = factory.getHyperlink(timePeriodSeries.getItemHyperlink()); + } + + public JRExpression getSeriesExpression() { + return this.seriesExpression; + } + + public JRExpression getStartDateExpression() { + return this.startDateExpression; + } + + public JRExpression getEndDateExpression() { + return this.endDateExpression; + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public JRExpression getLabelExpression() { + return this.labelExpression; + } + + public JRHyperlink getItemHyperlink() { + return this.itemHyperlink; + } + + public Object clone() { + JRBaseTimePeriodSeries clone = null; + try { + clone = (JRBaseTimePeriodSeries)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.seriesExpression != null) + clone.seriesExpression = (JRExpression)this.seriesExpression.clone(); + if (this.startDateExpression != null) + clone.startDateExpression = (JRExpression)this.startDateExpression.clone(); + if (this.endDateExpression != null) + clone.endDateExpression = (JRExpression)this.endDateExpression.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + if (this.labelExpression != null) + clone.labelExpression = (JRExpression)this.labelExpression.clone(); + if (this.itemHyperlink != null) + clone.itemHyperlink = (JRHyperlink)this.itemHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeries.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeries.java new file mode 100644 index 0000000..ca3f52f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeries.java @@ -0,0 +1,73 @@ +package net.sf.jasperreports.charts.base; + +import java.io.Serializable; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseTimeSeries implements JRTimeSeries, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRExpression seriesExpression = null; + + protected JRExpression timePeriodExpression = null; + + protected JRExpression valueExpression = null; + + protected JRExpression labelExpression = null; + + protected JRHyperlink itemHyperlink; + + protected JRBaseTimeSeries() {} + + public JRBaseTimeSeries(JRTimeSeries timeSeries, JRBaseObjectFactory factory) { + factory.put(timeSeries, this); + this.seriesExpression = factory.getExpression(timeSeries.getSeriesExpression()); + this.timePeriodExpression = factory.getExpression(timeSeries.getTimePeriodExpression()); + this.valueExpression = factory.getExpression(timeSeries.getValueExpression()); + this.labelExpression = factory.getExpression(timeSeries.getLabelExpression()); + this.itemHyperlink = factory.getHyperlink(timeSeries.getItemHyperlink()); + } + + public JRExpression getSeriesExpression() { + return this.seriesExpression; + } + + public JRExpression getTimePeriodExpression() { + return this.timePeriodExpression; + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public JRExpression getLabelExpression() { + return this.labelExpression; + } + + public JRHyperlink getItemHyperlink() { + return this.itemHyperlink; + } + + public Object clone() { + JRBaseTimeSeries clone = null; + try { + clone = (JRBaseTimeSeries)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.seriesExpression != null) + clone.seriesExpression = (JRExpression)this.seriesExpression.clone(); + if (this.timePeriodExpression != null) + clone.timePeriodExpression = (JRExpression)this.timePeriodExpression.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + if (this.labelExpression != null) + clone.labelExpression = (JRExpression)this.labelExpression.clone(); + if (this.itemHyperlink != null) + clone.itemHyperlink = (JRHyperlink)this.itemHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesDataset.java new file mode 100644 index 0000000..cfcb6d2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesDataset.java @@ -0,0 +1,82 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRBaseTimeSeriesDataset extends JRBaseChartDataset implements JRTimeSeriesDataset, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TIME_PERIOD = "timePeriod"; + + private JRTimeSeries[] timeSeries = null; + + private Class timePeriod; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseTimeSeriesDataset(JRTimeSeriesDataset dataset) { + super((JRChartDataset)dataset); + } + + public JRBaseTimeSeriesDataset(JRTimeSeriesDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + this.timePeriod = dataset.getTimePeriod(); + JRTimeSeries[] srcTimeSeries = dataset.getSeries(); + if (srcTimeSeries != null && srcTimeSeries.length > 0) { + this.timeSeries = new JRTimeSeries[srcTimeSeries.length]; + for (int i = 0; i < this.timeSeries.length; i++) + this.timeSeries[i] = factory.getTimeSeries(srcTimeSeries[i]); + } + } + + public JRTimeSeries[] getSeries() { + return this.timeSeries; + } + + public Class getTimePeriod() { + return this.timePeriod; + } + + public void setTimePeriod(Class timePeriod) { + Object old = this.timePeriod; + this.timePeriod = timePeriod; + getEventSupport().firePropertyChange("timePeriod", old, this.timePeriod); + } + + public byte getDatasetType() { + return 6; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBaseTimeSeriesDataset clone = (JRBaseTimeSeriesDataset)super.clone(); + if (this.timeSeries != null) { + clone.timeSeries = new JRTimeSeries[this.timeSeries.length]; + for (int i = 0; i < this.timeSeries.length; i++) + this.timeSeries[i] = (JRTimeSeries)this.timeSeries[i].clone(); + } + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesPlot.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesPlot.java new file mode 100644 index 0000000..21d13cd --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseTimeSeriesPlot.java @@ -0,0 +1,193 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRTimeAxisFormat; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseChartPlot; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseTimeSeriesPlot extends JRBaseChartPlot implements JRTimeSeriesPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SHOW_LINES = "showLines"; + + public static final String PROPERTY_SHOW_SHAPES = "showShapes"; + + protected JRExpression timeAxisLabelExpression = null; + + protected JRFont timeAxisLabelFont = null; + + protected Color timeAxisLabelColor = null; + + protected JRFont timeAxisTickLabelFont = null; + + protected Color timeAxisTickLabelColor = null; + + protected String timeAxisTickLabelMask = null; + + protected Color timeAxisLineColor = null; + + protected JRExpression valueAxisLabelExpression = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected String valueAxisTickLabelMask = null; + + protected Color valueAxisLineColor = null; + + boolean isShowShapes = true; + + boolean isShowLines = true; + + protected JRBaseTimeSeriesPlot(JRChartPlot plot, JRChart chart) { + super(plot, chart); + } + + public JRBaseTimeSeriesPlot(JRTimeSeriesPlot plot, JRBaseObjectFactory factory) { + super((JRChartPlot)plot, factory); + this.isShowLines = plot.isShowLines(); + this.isShowShapes = plot.isShowShapes(); + this.timeAxisLabelExpression = factory.getExpression(plot.getTimeAxisLabelExpression()); + this.timeAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getTimeAxisLabelFont()); + this.timeAxisLabelColor = plot.getOwnTimeAxisLabelColor(); + this.timeAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getTimeAxisTickLabelFont()); + this.timeAxisTickLabelColor = plot.getOwnTimeAxisTickLabelColor(); + this.timeAxisTickLabelMask = plot.getTimeAxisTickLabelMask(); + this.timeAxisLineColor = plot.getTimeAxisLineColor(); + this.valueAxisLabelExpression = factory.getExpression(plot.getValueAxisLabelExpression()); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getValueAxisLabelFont()); + this.valueAxisLabelColor = plot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = plot.getOwnValueAxisTickLabelColor(); + this.valueAxisTickLabelMask = plot.getValueAxisTickLabelMask(); + this.valueAxisLineColor = plot.getValueAxisTickLabelColor(); + } + + public JRExpression getTimeAxisLabelExpression() { + return this.timeAxisLabelExpression; + } + + public JRFont getTimeAxisLabelFont() { + return this.timeAxisLabelFont; + } + + public Color getTimeAxisLabelColor() { + return JRStyleResolver.getTimeAxisLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLabelColor() { + return this.timeAxisLabelColor; + } + + public JRFont getTimeAxisTickLabelFont() { + return this.timeAxisTickLabelFont; + } + + public Color getTimeAxisTickLabelColor() { + return JRStyleResolver.getTimeAxisTickLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisTickLabelColor() { + return this.timeAxisTickLabelColor; + } + + public String getTimeAxisTickLabelMask() { + return this.timeAxisTickLabelMask; + } + + public Color getTimeAxisLineColor() { + return JRStyleResolver.getTimeAxisLineColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLineColor() { + return this.timeAxisLineColor; + } + + public JRExpression getValueAxisLabelExpression() { + return this.valueAxisLabelExpression; + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public String getValueAxisTickLabelMask() { + return this.valueAxisTickLabelMask; + } + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public boolean isShowLines() { + return this.isShowLines; + } + + public boolean isShowShapes() { + return this.isShowShapes; + } + + public void setShowLines(boolean val) { + boolean old = this.isShowLines; + this.isShowLines = val; + getEventSupport().firePropertyChange("showLines", old, this.isShowLines); + } + + public void setShowShapes(boolean val) { + boolean old = this.isShowShapes; + this.isShowShapes = val; + getEventSupport().firePropertyChange("showShapes", old, this.isShowShapes); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Object clone(JRChart parentChart) { + JRBaseTimeSeriesPlot clone = (JRBaseTimeSeriesPlot)super.clone(parentChart); + if (this.timeAxisLabelExpression != null) + clone.timeAxisLabelExpression = (JRExpression)this.timeAxisLabelExpression.clone(); + if (this.valueAxisLabelExpression != null) + clone.valueAxisLabelExpression = (JRExpression)this.valueAxisLabelExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDataset.java new file mode 100644 index 0000000..4c1d515 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDataset.java @@ -0,0 +1,47 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRBaseValueDataset extends JRBaseChartDataset implements JRValueDataset { + private static final long serialVersionUID = 10200L; + + protected JRExpression valueExpression = null; + + public JRBaseValueDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRBaseValueDataset(JRValueDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + this.valueExpression = factory.getExpression(dataset.getValueExpression()); + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public byte getDatasetType() { + return 8; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBaseValueDataset clone = (JRBaseValueDataset)super.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDisplay.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDisplay.java new file mode 100644 index 0000000..ce91839 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseValueDisplay.java @@ -0,0 +1,58 @@ +package net.sf.jasperreports.charts.base; + +import java.awt.Color; +import java.io.Serializable; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseValueDisplay implements JRValueDisplay, Serializable { + private static final long serialVersionUID = 10200L; + + protected Color color = null; + + protected String mask = null; + + protected JRFont font = null; + + public JRBaseValueDisplay(JRValueDisplay valueDisplay) { + if (valueDisplay != null) { + this.color = valueDisplay.getColor(); + this.mask = valueDisplay.getMask(); + this.font = valueDisplay.getFont(); + } + } + + public JRBaseValueDisplay(JRValueDisplay valueDisplay, JRBaseObjectFactory factory) { + factory.put(valueDisplay, this); + if (valueDisplay != null) { + this.color = valueDisplay.getColor(); + this.mask = valueDisplay.getMask(); + this.font = valueDisplay.getFont(); + } + } + + public Color getColor() { + return this.color; + } + + public String getMask() { + return this.mask; + } + + public JRFont getFont() { + return this.font; + } + + public void collectExpressions(JRExpressionCollector collector) {} + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyDataset.java new file mode 100644 index 0000000..a42ad52 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyDataset.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRBaseXyDataset extends JRBaseChartDataset implements JRXyDataset { + private static final long serialVersionUID = 10200L; + + protected JRXySeries[] xySeries = null; + + public JRBaseXyDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRBaseXyDataset(JRXyDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + JRXySeries[] srcXySeries = dataset.getSeries(); + if (srcXySeries != null && srcXySeries.length > 0) { + this.xySeries = new JRXySeries[srcXySeries.length]; + for (int i = 0; i < this.xySeries.length; i++) + this.xySeries[i] = factory.getXySeries(srcXySeries[i]); + } + } + + public JRXySeries[] getSeries() { + return this.xySeries; + } + + public byte getDatasetType() { + return 3; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBaseXyDataset clone = (JRBaseXyDataset)super.clone(); + if (this.xySeries != null) { + clone.xySeries = new JRXySeries[this.xySeries.length]; + for (int i = 0; i < this.xySeries.length; i++) + this.xySeries[i] = (JRXySeries)this.xySeries[i].clone(); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXySeries.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXySeries.java new file mode 100644 index 0000000..ae84b88 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXySeries.java @@ -0,0 +1,73 @@ +package net.sf.jasperreports.charts.base; + +import java.io.Serializable; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseXySeries implements JRXySeries, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRExpression seriesExpression = null; + + protected JRExpression xValueExpression = null; + + protected JRExpression yValueExpression = null; + + protected JRExpression labelExpression = null; + + protected JRHyperlink itemHyperlink; + + protected JRBaseXySeries() {} + + public JRBaseXySeries(JRXySeries xySeries, JRBaseObjectFactory factory) { + factory.put(xySeries, this); + this.seriesExpression = factory.getExpression(xySeries.getSeriesExpression()); + this.xValueExpression = factory.getExpression(xySeries.getXValueExpression()); + this.yValueExpression = factory.getExpression(xySeries.getYValueExpression()); + this.labelExpression = factory.getExpression(xySeries.getLabelExpression()); + this.itemHyperlink = factory.getHyperlink(xySeries.getItemHyperlink()); + } + + public JRExpression getSeriesExpression() { + return this.seriesExpression; + } + + public JRExpression getXValueExpression() { + return this.xValueExpression; + } + + public JRExpression getYValueExpression() { + return this.yValueExpression; + } + + public JRExpression getLabelExpression() { + return this.labelExpression; + } + + public JRHyperlink getItemHyperlink() { + return this.itemHyperlink; + } + + public Object clone() { + JRBaseXySeries clone = null; + try { + clone = (JRBaseXySeries)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.seriesExpression != null) + clone.seriesExpression = (JRExpression)this.seriesExpression.clone(); + if (this.xValueExpression != null) + clone.xValueExpression = (JRExpression)this.xValueExpression.clone(); + if (this.yValueExpression != null) + clone.yValueExpression = (JRExpression)this.yValueExpression.clone(); + if (this.labelExpression != null) + clone.labelExpression = (JRExpression)this.labelExpression.clone(); + if (this.itemHyperlink != null) + clone.itemHyperlink = (JRHyperlink)this.itemHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzDataset.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzDataset.java new file mode 100644 index 0000000..5a15ee8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzDataset.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.charts.base; + +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseChartDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRBaseXyzDataset extends JRBaseChartDataset implements JRXyzDataset { + public static final long serialVersionUID = 10200L; + + protected JRXyzSeries[] xyzSeries = null; + + public JRBaseXyzDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRBaseXyzDataset(JRXyzDataset dataset, JRBaseObjectFactory factory) { + super((JRChartDataset)dataset, factory); + JRXyzSeries[] srcXyzSeries = dataset.getSeries(); + if (srcXyzSeries != null && srcXyzSeries.length > 0) { + this.xyzSeries = new JRXyzSeries[srcXyzSeries.length]; + for (int i = 0; i < srcXyzSeries.length; i++) + this.xyzSeries[i] = factory.getXyzSeries(srcXyzSeries[i]); + } + } + + public JRXyzSeries[] getSeries() { + return this.xyzSeries; + } + + public byte getDatasetType() { + return 4; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRBaseXyzDataset clone = (JRBaseXyzDataset)super.clone(); + if (this.xyzSeries != null) { + clone.xyzSeries = new JRXyzSeries[this.xyzSeries.length]; + for (int i = 0; i < this.xyzSeries.length; i++) + this.xyzSeries[i] = (JRXyzSeries)this.xyzSeries[i].clone(); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzSeries.java b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzSeries.java new file mode 100644 index 0000000..eb0e7e1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/base/JRBaseXyzSeries.java @@ -0,0 +1,73 @@ +package net.sf.jasperreports.charts.base; + +import java.io.Serializable; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseXyzSeries implements JRXyzSeries, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRExpression seriesExpression = null; + + protected JRExpression xValueExpression = null; + + protected JRExpression yValueExpression = null; + + protected JRExpression zValueExpression = null; + + protected JRHyperlink itemHyperlink; + + public JRBaseXyzSeries() {} + + public JRBaseXyzSeries(JRXyzSeries xyzSeries, JRBaseObjectFactory factory) { + factory.put(xyzSeries, this); + this.seriesExpression = factory.getExpression(xyzSeries.getSeriesExpression()); + this.xValueExpression = factory.getExpression(xyzSeries.getXValueExpression()); + this.yValueExpression = factory.getExpression(xyzSeries.getYValueExpression()); + this.zValueExpression = factory.getExpression(xyzSeries.getZValueExpression()); + this.itemHyperlink = factory.getHyperlink(xyzSeries.getItemHyperlink()); + } + + public JRExpression getSeriesExpression() { + return this.seriesExpression; + } + + public JRExpression getXValueExpression() { + return this.xValueExpression; + } + + public JRExpression getYValueExpression() { + return this.yValueExpression; + } + + public JRExpression getZValueExpression() { + return this.zValueExpression; + } + + public JRHyperlink getItemHyperlink() { + return this.itemHyperlink; + } + + public Object clone() { + JRBaseXyzSeries clone = null; + try { + clone = (JRBaseXyzSeries)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.seriesExpression != null) + clone.seriesExpression = (JRExpression)this.seriesExpression.clone(); + if (this.xValueExpression != null) + clone.xValueExpression = (JRExpression)this.xValueExpression.clone(); + if (this.yValueExpression != null) + clone.yValueExpression = (JRExpression)this.yValueExpression.clone(); + if (this.zValueExpression != null) + clone.zValueExpression = (JRExpression)this.zValueExpression.clone(); + if (this.itemHyperlink != null) + clone.itemHyperlink = (JRHyperlink)this.itemHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignAreaPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignAreaPlot.java new file mode 100644 index 0000000..cf5418c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignAreaPlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseAreaPlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignAreaPlot extends JRBaseAreaPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_COLOR = "categoryAxisLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_EXPRESSION = "categoryAxisLabelExpression"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_FONT = "categoryAxisLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_LINE_COLOR = "categoryAxisLineColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_COLOR = "categoryAxisTickLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_FONT = "categoryAxisTickLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_MASK = "categoryAxisTickLabelMask"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_COLOR = "valueAxisLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_EXPRESSION = "valueAxisLabelExpression"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_FONT = "valueAxisLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_LINE_COLOR = "valueAxisLineColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_COLOR = "valueAxisTickLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_FONT = "valueAxisTickLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_MASK = "valueAxisTickLabelMask"; + + public JRDesignAreaPlot(JRChartPlot areaPlot, JRChart chart) { + super(areaPlot, chart); + } + + public void setCategoryAxisLabelExpression(JRExpression categoryAxisLabelExpression) { + Object old = this.categoryAxisLabelExpression; + this.categoryAxisLabelExpression = categoryAxisLabelExpression; + getEventSupport().firePropertyChange("categoryAxisLabelExpression", old, this.categoryAxisLabelExpression); + } + + public void setCategoryAxisLabelFont(JRFont categoryAxisLabelFont) { + Object old = this.categoryAxisLabelFont; + this.categoryAxisLabelFont = categoryAxisLabelFont; + getEventSupport().firePropertyChange("categoryAxisLabelFont", old, this.categoryAxisLabelFont); + } + + public void setCategoryAxisLabelColor(Color categoryAxisLabelColor) { + Object old = this.categoryAxisLabelColor; + this.categoryAxisLabelColor = categoryAxisLabelColor; + getEventSupport().firePropertyChange("categoryAxisLabelColor", old, this.categoryAxisLabelColor); + } + + public void setCategoryAxisTickLabelFont(JRFont categoryAxisTickLabelFont) { + Object old = this.categoryAxisTickLabelFont; + this.categoryAxisTickLabelFont = categoryAxisTickLabelFont; + getEventSupport().firePropertyChange("categoryAxisTickLabelFont", old, this.categoryAxisTickLabelFont); + } + + public void setCategoryAxisTickLabelColor(Color categoryAxisTickLabelColor) { + Object old = this.categoryAxisTickLabelColor; + this.categoryAxisTickLabelColor = categoryAxisTickLabelColor; + getEventSupport().firePropertyChange("categoryAxisTickLabelColor", old, this.categoryAxisTickLabelColor); + } + + public void setCategoryAxisTickLabelMask(String categoryAxisTickLabelMask) { + Object old = this.categoryAxisTickLabelMask; + this.categoryAxisTickLabelMask = categoryAxisTickLabelMask; + getEventSupport().firePropertyChange("categoryAxisTickLabelMask", old, this.categoryAxisTickLabelMask); + } + + public void setCategoryAxisLineColor(Color categoryAxisLineColor) { + Object old = this.categoryAxisLineColor; + this.categoryAxisLineColor = categoryAxisLineColor; + getEventSupport().firePropertyChange("categoryAxisLineColor", old, this.categoryAxisLineColor); + } + + public void setValueAxisLabelExpression(JRExpression valueAxisLabelExpression) { + Object old = this.valueAxisLabelExpression; + this.valueAxisLabelExpression = valueAxisLabelExpression; + getEventSupport().firePropertyChange("valueAxisLabelExpression", old, this.valueAxisLabelExpression); + } + + public void setValueAxisLabelFont(JRFont valueAxisLabelFont) { + Object old = this.valueAxisLabelFont; + this.valueAxisLabelFont = valueAxisLabelFont; + getEventSupport().firePropertyChange("valueAxisLabelFont", old, this.valueAxisLabelFont); + } + + public void setValueAxisLabelColor(Color valueAxisLabelColor) { + Object old = this.valueAxisLabelColor; + this.valueAxisLabelColor = valueAxisLabelColor; + getEventSupport().firePropertyChange("valueAxisLabelColor", old, this.valueAxisLabelColor); + } + + public void setValueAxisTickLabelFont(JRFont valueAxisTickLabelFont) { + Object old = this.valueAxisTickLabelFont; + this.valueAxisTickLabelFont = valueAxisTickLabelFont; + getEventSupport().firePropertyChange("valueAxisTickLabelFont", old, this.valueAxisTickLabelFont); + } + + public void setValueAxisTickLabelColor(Color valueAxisTickLabelColor) { + Object old = this.valueAxisTickLabelColor; + this.valueAxisTickLabelColor = valueAxisTickLabelColor; + getEventSupport().firePropertyChange("valueAxisTickLabelColor", old, this.valueAxisTickLabelColor); + } + + public void setValueAxisTickLabelMask(String valueAxisTickLabelMask) { + Object old = this.valueAxisTickLabelMask; + this.valueAxisTickLabelMask = valueAxisTickLabelMask; + getEventSupport().firePropertyChange("valueAxisTickLabelMask", old, this.valueAxisTickLabelMask); + } + + public void setValueAxisLineColor(Color valueAxisLineColor) { + Object old = this.valueAxisLineColor; + this.valueAxisLineColor = valueAxisLineColor; + getEventSupport().firePropertyChange("valueAxisLineColor", old, this.valueAxisLineColor); + } + + public void setCategoryAxisFormat(JRAxisFormat axisFormat) { + setCategoryAxisLabelFont(axisFormat.getLabelFont()); + setCategoryAxisLabelColor(axisFormat.getLabelColor()); + setCategoryAxisTickLabelFont(axisFormat.getTickLabelFont()); + setCategoryAxisTickLabelColor(axisFormat.getTickLabelColor()); + setCategoryAxisTickLabelMask(axisFormat.getTickLabelMask()); + setCategoryAxisLineColor(axisFormat.getLineColor()); + } + + public void setValueAxisFormat(JRAxisFormat axisFormat) { + setValueAxisLabelFont(axisFormat.getLabelFont()); + setValueAxisLabelColor(axisFormat.getLabelColor()); + setValueAxisTickLabelFont(axisFormat.getTickLabelFont()); + setValueAxisTickLabelColor(axisFormat.getTickLabelColor()); + setValueAxisTickLabelMask(axisFormat.getTickLabelMask()); + setValueAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBar3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBar3DPlot.java new file mode 100644 index 0000000..1371e43 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBar3DPlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseBar3DPlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignBar3DPlot extends JRBaseBar3DPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_COLOR = "categoryAxisLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_EXPRESSION = "categoryAxisLabelExpression"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_FONT = "categoryAxisLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_LINE_COLOR = "categoryAxisLineColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_COLOR = "categoryAxisTickLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_FONT = "categoryAxisTickLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_MASK = "categoryAxisTickLabelMask"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_COLOR = "valueAxisLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_EXPRESSION = "valueAxisLabelExpression"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_FONT = "valueAxisLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_LINE_COLOR = "valueAxisLineColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_COLOR = "valueAxisTickLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_FONT = "valueAxisTickLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_MASK = "valueAxisTickLabelMask"; + + public JRDesignBar3DPlot(JRChartPlot barPlot, JRChart chart) { + super(barPlot, chart); + } + + public void setCategoryAxisLabelExpression(JRExpression categoryAxisLabelExpression) { + Object old = this.categoryAxisLabelExpression; + this.categoryAxisLabelExpression = categoryAxisLabelExpression; + getEventSupport().firePropertyChange("categoryAxisLabelExpression", old, this.categoryAxisLabelExpression); + } + + public void setCategoryAxisLabelFont(JRFont categoryAxisLabelFont) { + Object old = this.categoryAxisLabelFont; + this.categoryAxisLabelFont = categoryAxisLabelFont; + getEventSupport().firePropertyChange("categoryAxisLabelFont", old, this.categoryAxisLabelFont); + } + + public void setCategoryAxisLabelColor(Color categoryAxisLabelColor) { + Object old = this.categoryAxisLabelColor; + this.categoryAxisLabelColor = categoryAxisLabelColor; + getEventSupport().firePropertyChange("categoryAxisLabelColor", old, this.categoryAxisLabelColor); + } + + public void setCategoryAxisTickLabelFont(JRFont categoryAxisTickLabelFont) { + Object old = this.categoryAxisTickLabelFont; + this.categoryAxisTickLabelFont = categoryAxisTickLabelFont; + getEventSupport().firePropertyChange("categoryAxisTickLabelFont", old, this.categoryAxisTickLabelFont); + } + + public void setCategoryAxisTickLabelColor(Color categoryAxisTickLabelColor) { + Object old = this.categoryAxisTickLabelColor; + this.categoryAxisTickLabelColor = categoryAxisTickLabelColor; + getEventSupport().firePropertyChange("categoryAxisTickLabelColor", old, this.categoryAxisTickLabelColor); + } + + public void setCategoryAxisTickLabelMask(String categoryAxisTickLabelMask) { + Object old = this.categoryAxisTickLabelMask; + this.categoryAxisTickLabelMask = categoryAxisTickLabelMask; + getEventSupport().firePropertyChange("categoryAxisTickLabelMask", old, this.categoryAxisTickLabelMask); + } + + public void setCategoryAxisLineColor(Color categoryAxisLineColor) { + Object old = this.categoryAxisLineColor; + this.categoryAxisLineColor = categoryAxisLineColor; + getEventSupport().firePropertyChange("categoryAxisLineColor", old, this.categoryAxisLineColor); + } + + public void setValueAxisLabelExpression(JRExpression valueAxisLabelExpression) { + Object old = this.valueAxisLabelExpression; + this.valueAxisLabelExpression = valueAxisLabelExpression; + getEventSupport().firePropertyChange("valueAxisLabelExpression", old, this.valueAxisLabelExpression); + } + + public void setValueAxisLabelFont(JRFont valueAxisLabelFont) { + Object old = this.valueAxisLabelFont; + this.valueAxisLabelFont = valueAxisLabelFont; + getEventSupport().firePropertyChange("valueAxisLabelFont", old, this.valueAxisLabelFont); + } + + public void setValueAxisLabelColor(Color valueAxisLabelColor) { + Object old = this.valueAxisLabelColor; + this.valueAxisLabelColor = valueAxisLabelColor; + getEventSupport().firePropertyChange("valueAxisLabelColor", old, this.valueAxisLabelColor); + } + + public void setValueAxisTickLabelFont(JRFont valueAxisTickLabelFont) { + Object old = this.valueAxisTickLabelFont; + this.valueAxisTickLabelFont = valueAxisTickLabelFont; + getEventSupport().firePropertyChange("valueAxisTickLabelFont", old, this.valueAxisTickLabelFont); + } + + public void setValueAxisTickLabelColor(Color valueAxisTickLabelColor) { + Object old = this.valueAxisTickLabelColor; + this.valueAxisTickLabelColor = valueAxisTickLabelColor; + getEventSupport().firePropertyChange("valueAxisTickLabelColor", old, this.valueAxisTickLabelColor); + } + + public void setValueAxisTickLabelMask(String valueAxisTickLabelMask) { + Object old = this.valueAxisTickLabelMask; + this.valueAxisTickLabelMask = valueAxisTickLabelMask; + getEventSupport().firePropertyChange("valueAxisTickLabelMask", old, this.valueAxisTickLabelMask); + } + + public void setValueAxisLineColor(Color valueAxisLineColor) { + Object old = this.valueAxisLineColor; + this.valueAxisLineColor = valueAxisLineColor; + getEventSupport().firePropertyChange("valueAxisLineColor", old, this.valueAxisLineColor); + } + + public void setCategoryAxisFormat(JRAxisFormat axisFormat) { + setCategoryAxisLabelFont(axisFormat.getLabelFont()); + setCategoryAxisLabelColor(axisFormat.getLabelColor()); + setCategoryAxisTickLabelFont(axisFormat.getTickLabelFont()); + setCategoryAxisTickLabelColor(axisFormat.getTickLabelColor()); + setCategoryAxisTickLabelMask(axisFormat.getTickLabelMask()); + setCategoryAxisLineColor(axisFormat.getLineColor()); + } + + public void setValueAxisFormat(JRAxisFormat axisFormat) { + setValueAxisLabelFont(axisFormat.getLabelFont()); + setValueAxisLabelColor(axisFormat.getLabelColor()); + setValueAxisTickLabelFont(axisFormat.getTickLabelFont()); + setValueAxisTickLabelColor(axisFormat.getTickLabelColor()); + setValueAxisTickLabelMask(axisFormat.getTickLabelMask()); + setValueAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBarPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBarPlot.java new file mode 100644 index 0000000..cac4a7b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBarPlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseBarPlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignBarPlot extends JRBaseBarPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_COLOR = "categoryAxisLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_EXPRESSION = "categoryAxisLabelExpression"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_FONT = "categoryAxisLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_LINE_COLOR = "categoryAxisLineColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_COLOR = "categoryAxisTickLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_FONT = "categoryAxisTickLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_MASK = "categoryAxisTickLabelMask"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_COLOR = "valueAxisLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_EXPRESSION = "valueAxisLabelExpression"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_FONT = "valueAxisLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_LINE_COLOR = "valueAxisLineColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_COLOR = "valueAxisTickLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_FONT = "valueAxisTickLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_MASK = "valueAxisTickLabelMask"; + + public JRDesignBarPlot(JRChartPlot barPlot, JRChart chart) { + super(barPlot, chart); + } + + public void setCategoryAxisLabelExpression(JRExpression categoryAxisLabelExpression) { + Object old = this.categoryAxisLabelExpression; + this.categoryAxisLabelExpression = categoryAxisLabelExpression; + getEventSupport().firePropertyChange("categoryAxisLabelExpression", old, this.categoryAxisLabelExpression); + } + + public void setCategoryAxisLabelFont(JRFont categoryAxisLabelFont) { + Object old = this.categoryAxisLabelFont; + this.categoryAxisLabelFont = categoryAxisLabelFont; + getEventSupport().firePropertyChange("categoryAxisLabelFont", old, this.categoryAxisLabelFont); + } + + public void setCategoryAxisLabelColor(Color categoryAxisLabelColor) { + Object old = this.categoryAxisLabelColor; + this.categoryAxisLabelColor = categoryAxisLabelColor; + getEventSupport().firePropertyChange("categoryAxisLabelColor", old, this.categoryAxisLabelColor); + } + + public void setCategoryAxisTickLabelFont(JRFont categoryAxisTickLabelFont) { + Object old = this.categoryAxisTickLabelFont; + this.categoryAxisTickLabelFont = categoryAxisTickLabelFont; + getEventSupport().firePropertyChange("categoryAxisTickLabelFont", old, this.categoryAxisTickLabelFont); + } + + public void setCategoryAxisTickLabelColor(Color categoryAxisTickLabelColor) { + Object old = this.categoryAxisTickLabelColor; + this.categoryAxisTickLabelColor = categoryAxisTickLabelColor; + getEventSupport().firePropertyChange("categoryAxisTickLabelColor", old, this.categoryAxisTickLabelColor); + } + + public void setCategoryAxisTickLabelMask(String categoryAxisTickLabelMask) { + Object old = this.categoryAxisTickLabelMask; + this.categoryAxisTickLabelMask = categoryAxisTickLabelMask; + getEventSupport().firePropertyChange("categoryAxisTickLabelMask", old, this.categoryAxisTickLabelMask); + } + + public void setCategoryAxisLineColor(Color categoryAxisLineColor) { + Object old = this.categoryAxisLineColor; + this.categoryAxisLineColor = categoryAxisLineColor; + getEventSupport().firePropertyChange("categoryAxisLineColor", old, this.categoryAxisLineColor); + } + + public void setValueAxisLabelExpression(JRExpression valueAxisLabelExpression) { + Object old = this.valueAxisLabelExpression; + this.valueAxisLabelExpression = valueAxisLabelExpression; + getEventSupport().firePropertyChange("valueAxisLabelExpression", old, this.valueAxisLabelExpression); + } + + public void setValueAxisLabelFont(JRFont valueAxisLabelFont) { + Object old = this.valueAxisLabelFont; + this.valueAxisLabelFont = valueAxisLabelFont; + getEventSupport().firePropertyChange("valueAxisLabelFont", old, this.valueAxisLabelFont); + } + + public void setValueAxisLabelColor(Color valueAxisLabelColor) { + Object old = this.valueAxisLabelColor; + this.valueAxisLabelColor = valueAxisLabelColor; + getEventSupport().firePropertyChange("valueAxisLabelColor", old, this.valueAxisLabelColor); + } + + public void setValueAxisTickLabelFont(JRFont valueAxisTickLabelFont) { + Object old = this.valueAxisTickLabelFont; + this.valueAxisTickLabelFont = valueAxisTickLabelFont; + getEventSupport().firePropertyChange("valueAxisTickLabelFont", old, this.valueAxisTickLabelFont); + } + + public void setValueAxisTickLabelColor(Color valueAxisTickLabelColor) { + Object old = this.valueAxisTickLabelColor; + this.valueAxisTickLabelColor = valueAxisTickLabelColor; + getEventSupport().firePropertyChange("valueAxisTickLabelColor", old, this.valueAxisTickLabelColor); + } + + public void setValueAxisTickLabelMask(String valueAxisTickLabelMask) { + Object old = this.valueAxisTickLabelMask; + this.valueAxisTickLabelMask = valueAxisTickLabelMask; + getEventSupport().firePropertyChange("valueAxisTickLabelMask", old, this.valueAxisTickLabelMask); + } + + public void setValueAxisLineColor(Color valueAxisLineColor) { + Object old = this.valueAxisLineColor; + this.valueAxisLineColor = valueAxisLineColor; + getEventSupport().firePropertyChange("valueAxisLineColor", old, this.valueAxisLineColor); + } + + public void setCategoryAxisFormat(JRAxisFormat axisFormat) { + setCategoryAxisLabelFont(axisFormat.getLabelFont()); + setCategoryAxisLabelColor(axisFormat.getLabelColor()); + setCategoryAxisTickLabelFont(axisFormat.getTickLabelFont()); + setCategoryAxisTickLabelColor(axisFormat.getTickLabelColor()); + setCategoryAxisTickLabelMask(axisFormat.getTickLabelMask()); + setCategoryAxisLineColor(axisFormat.getLineColor()); + } + + public void setValueAxisFormat(JRAxisFormat axisFormat) { + setValueAxisLabelFont(axisFormat.getLabelFont()); + setValueAxisLabelColor(axisFormat.getLabelColor()); + setValueAxisTickLabelFont(axisFormat.getTickLabelFont()); + setValueAxisTickLabelColor(axisFormat.getTickLabelColor()); + setValueAxisTickLabelMask(axisFormat.getTickLabelMask()); + setValueAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBubblePlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBubblePlot.java new file mode 100644 index 0000000..8ced43a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignBubblePlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseBubblePlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignBubblePlot extends JRBaseBubblePlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_X_AXIS_LABEL_COLOR = "xAxisLabelColor"; + + public static final String PROPERTY_X_AXIS_LABEL_EXPRESSION = "xAxisLabelExpression"; + + public static final String PROPERTY_X_AXIS_LABEL_FONT = "xAxisLabelFont"; + + public static final String PROPERTY_X_AXIS_LINE_COLOR = "xAxisLineColor"; + + public static final String PROPERTY_X_AXIS_TICK_LABEL_COLOR = "xAxisTickLabelColor"; + + public static final String PROPERTY_X_AXIS_TICK_LABEL_FONT = "xAxisTickLabelFont"; + + public static final String PROPERTY_X_AXIS_TICK_LABEL_MASK = "xAxisTickLabelMask"; + + public static final String PROPERTY_Y_AXIS_LABEL_COLOR = "yAxisLabelColor"; + + public static final String PROPERTY_Y_AXIS_LABEL_EXPRESSION = "yAxisLabelExpression"; + + public static final String PROPERTY_Y_AXIS_LABEL_FONT = "yAxisLabelFont"; + + public static final String PROPERTY_Y_AXIS_LINE_COLOR = "yAxisLineColor"; + + public static final String PROPERTY_Y_AXIS_TICK_LABEL_COLOR = "yAxisTickLabelColor"; + + public static final String PROPERTY_Y_AXIS_TICK_LABEL_FONT = "yAxisTickLabelFont"; + + public static final String PROPERTY_Y_AXIS_TICK_LABEL_MASK = "yAxisTickLabelMask"; + + public JRDesignBubblePlot(JRChartPlot bubblePlot, JRChart chart) { + super(bubblePlot, chart); + } + + public void setXAxisLabelExpression(JRExpression xAxisLabelExpression) { + Object old = this.xAxisLabelExpression; + this.xAxisLabelExpression = xAxisLabelExpression; + getEventSupport().firePropertyChange("xAxisLabelExpression", old, this.xAxisLabelExpression); + } + + public void setXAxisLabelFont(JRFont xAxisLabelFont) { + Object old = this.xAxisLabelFont; + this.xAxisLabelFont = xAxisLabelFont; + getEventSupport().firePropertyChange("xAxisLabelFont", old, this.xAxisLabelFont); + } + + public void setXAxisLabelColor(Color xAxisLabelColor) { + Object old = this.xAxisLabelColor; + this.xAxisLabelColor = xAxisLabelColor; + getEventSupport().firePropertyChange("xAxisLabelColor", old, this.xAxisLabelColor); + } + + public void setXAxisTickLabelFont(JRFont xAxisTickLabelFont) { + Object old = this.xAxisTickLabelFont; + this.xAxisTickLabelFont = xAxisTickLabelFont; + getEventSupport().firePropertyChange("xAxisTickLabelFont", old, this.xAxisTickLabelFont); + } + + public void setXAxisTickLabelColor(Color xAxisTickLabelColor) { + Object old = this.xAxisTickLabelColor; + this.xAxisTickLabelColor = xAxisTickLabelColor; + getEventSupport().firePropertyChange("xAxisTickLabelColor", old, this.xAxisTickLabelColor); + } + + public void setXAxisTickLabelMask(String xAxisTickLabelMask) { + Object old = this.xAxisTickLabelMask; + this.xAxisTickLabelMask = xAxisTickLabelMask; + getEventSupport().firePropertyChange("xAxisTickLabelMask", old, this.xAxisTickLabelMask); + } + + public void setXAxisLineColor(Color xAxisLineColor) { + Object old = this.xAxisLineColor; + this.xAxisLineColor = xAxisLineColor; + getEventSupport().firePropertyChange("xAxisLineColor", old, this.xAxisLineColor); + } + + public void setYAxisLabelExpression(JRExpression yAxisLabelExpression) { + Object old = this.yAxisLabelExpression; + this.yAxisLabelExpression = yAxisLabelExpression; + getEventSupport().firePropertyChange("yAxisLabelExpression", old, this.yAxisLabelExpression); + } + + public void setYAxisLabelFont(JRFont yAxisLabelFont) { + Object old = this.yAxisLabelFont; + this.yAxisLabelFont = yAxisLabelFont; + getEventSupport().firePropertyChange("yAxisLabelFont", old, this.yAxisLabelFont); + } + + public void setYAxisLabelColor(Color yAxisLabelColor) { + Object old = this.yAxisLabelColor; + this.yAxisLabelColor = yAxisLabelColor; + getEventSupport().firePropertyChange("yAxisLabelColor", old, this.yAxisLabelColor); + } + + public void setYAxisTickLabelFont(JRFont yAxisTickLabelFont) { + Object old = this.yAxisTickLabelFont; + this.yAxisTickLabelFont = yAxisTickLabelFont; + getEventSupport().firePropertyChange("yAxisTickLabelFont", old, this.yAxisTickLabelFont); + } + + public void setYAxisTickLabelColor(Color yAxisTickLabelColor) { + Object old = this.yAxisTickLabelColor; + this.yAxisTickLabelColor = yAxisTickLabelColor; + getEventSupport().firePropertyChange("yAxisTickLabelColor", old, this.yAxisTickLabelColor); + } + + public void setYAxisTickLabelMask(String yAxisTickLabelMask) { + Object old = this.yAxisTickLabelMask; + this.yAxisTickLabelMask = yAxisTickLabelMask; + getEventSupport().firePropertyChange("yAxisTickLabelMask", old, this.yAxisTickLabelMask); + } + + public void setYAxisLineColor(Color yAxisLineColor) { + Object old = this.yAxisLineColor; + this.yAxisLineColor = yAxisLineColor; + getEventSupport().firePropertyChange("yAxisLineColor", old, this.yAxisLineColor); + } + + public void setXAxisFormat(JRAxisFormat axisFormat) { + setXAxisLabelColor(axisFormat.getLabelColor()); + setXAxisLabelFont(axisFormat.getLabelFont()); + setXAxisTickLabelFont(axisFormat.getTickLabelFont()); + setXAxisTickLabelColor(axisFormat.getTickLabelColor()); + setXAxisTickLabelMask(axisFormat.getTickLabelMask()); + setXAxisLineColor(axisFormat.getLineColor()); + } + + public void setYAxisFormat(JRAxisFormat axisFormat) { + setYAxisLabelColor(axisFormat.getLabelColor()); + setYAxisLabelFont(axisFormat.getLabelFont()); + setYAxisTickLabelFont(axisFormat.getTickLabelFont()); + setYAxisTickLabelColor(axisFormat.getTickLabelColor()); + setYAxisTickLabelMask(axisFormat.getTickLabelMask()); + setYAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCandlestickPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCandlestickPlot.java new file mode 100644 index 0000000..e03629c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCandlestickPlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseCandlestickPlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignCandlestickPlot extends JRBaseCandlestickPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TIME_AXIS_LABEL_COLOR = "timeAxisLabelColor"; + + public static final String PROPERTY_TIME_AXIS_LABEL_EXPRESSION = "timeAxisLabelExpression"; + + public static final String PROPERTY_TIME_AXIS_LABEL_FONT = "timeAxisLabelFont"; + + public static final String PROPERTY_TIME_AXIS_LINE_COLOR = "timeAxisLineColor"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_COLOR = "timeAxisTickLabelColor"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_FONT = "timeAxisTickLabelFont"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_MASK = "timeAxisTickLabelMask"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_COLOR = "valueAxisLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_EXPRESSION = "valueAxisLabelExpression"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_FONT = "valueAxisLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_LINE_COLOR = "valueAxisLineColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_COLOR = "valueAxisTickLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_FONT = "valueAxisTickLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_MASK = "valueAxisTickLabelMask"; + + public JRDesignCandlestickPlot(JRChartPlot candlestickPlot, JRChart chart) { + super(candlestickPlot, chart); + } + + public void setTimeAxisLabelExpression(JRExpression timeAxisLabelExpression) { + Object old = this.timeAxisLabelExpression; + this.timeAxisLabelExpression = timeAxisLabelExpression; + getEventSupport().firePropertyChange("timeAxisLabelExpression", old, this.timeAxisLabelExpression); + } + + public void setTimeAxisLabelFont(JRFont timeAxisLabelFont) { + Object old = this.timeAxisLabelFont; + this.timeAxisLabelFont = timeAxisLabelFont; + getEventSupport().firePropertyChange("timeAxisLabelFont", old, this.timeAxisLabelFont); + } + + public void setTimeAxisLabelColor(Color timeAxisLabelColor) { + Object old = this.timeAxisLabelColor; + this.timeAxisLabelColor = timeAxisLabelColor; + getEventSupport().firePropertyChange("timeAxisLabelColor", old, this.timeAxisLabelColor); + } + + public void setTimeAxisTickLabelFont(JRFont timeAxisTickLabelFont) { + Object old = this.timeAxisTickLabelFont; + this.timeAxisTickLabelFont = timeAxisTickLabelFont; + getEventSupport().firePropertyChange("timeAxisTickLabelFont", old, this.timeAxisTickLabelFont); + } + + public void setTimeAxisTickLabelColor(Color timeAxisTickLabelColor) { + Object old = this.timeAxisTickLabelColor; + this.timeAxisTickLabelColor = timeAxisTickLabelColor; + getEventSupport().firePropertyChange("timeAxisTickLabelColor", old, this.timeAxisTickLabelColor); + } + + public void setTimeAxisTickLabelMask(String timeAxisTickLabelMask) { + Object old = this.timeAxisTickLabelMask; + this.timeAxisTickLabelMask = timeAxisTickLabelMask; + getEventSupport().firePropertyChange("timeAxisTickLabelMask", old, this.timeAxisTickLabelMask); + } + + public void setTimeAxisLineColor(Color timeAxisLineColor) { + Object old = this.timeAxisLineColor; + this.timeAxisLineColor = timeAxisLineColor; + getEventSupport().firePropertyChange("timeAxisLineColor", old, this.timeAxisLineColor); + } + + public void setValueAxisLabelExpression(JRExpression valueAxisLabelExpression) { + Object old = this.valueAxisLabelExpression; + this.valueAxisLabelExpression = valueAxisLabelExpression; + getEventSupport().firePropertyChange("valueAxisLabelExpression", old, this.valueAxisLabelExpression); + } + + public void setValueAxisLabelFont(JRFont valueAxisLabelFont) { + Object old = this.valueAxisLabelFont; + this.valueAxisLabelFont = valueAxisLabelFont; + getEventSupport().firePropertyChange("valueAxisLabelFont", old, this.valueAxisLabelFont); + } + + public void setValueAxisLabelColor(Color valueAxisLabelColor) { + Object old = this.valueAxisLabelColor; + this.valueAxisLabelColor = valueAxisLabelColor; + getEventSupport().firePropertyChange("valueAxisLabelColor", old, this.valueAxisLabelColor); + } + + public void setValueAxisTickLabelFont(JRFont valueAxisTickLabelFont) { + Object old = this.valueAxisTickLabelFont; + this.valueAxisTickLabelFont = valueAxisTickLabelFont; + getEventSupport().firePropertyChange("valueAxisTickLabelFont", old, this.valueAxisTickLabelFont); + } + + public void setValueAxisTickLabelColor(Color valueAxisTickLabelColor) { + Object old = this.valueAxisTickLabelColor; + this.valueAxisTickLabelColor = valueAxisTickLabelColor; + getEventSupport().firePropertyChange("valueAxisTickLabelColor", old, this.valueAxisTickLabelColor); + } + + public void setValueAxisTickLabelMask(String valueAxisTickLabelMask) { + Object old = this.valueAxisTickLabelMask; + this.valueAxisTickLabelMask = valueAxisTickLabelMask; + getEventSupport().firePropertyChange("valueAxisTickLabelMask", old, this.valueAxisTickLabelMask); + } + + public void setValueAxisLineColor(Color valueAxisLineColor) { + Object old = this.valueAxisLineColor; + this.valueAxisLineColor = valueAxisLineColor; + getEventSupport().firePropertyChange("valueAxisLineColor", old, this.valueAxisLineColor); + } + + public void setTimeAxisFormat(JRAxisFormat axisFormat) { + setTimeAxisLabelFont(axisFormat.getLabelFont()); + setTimeAxisLabelColor(axisFormat.getLabelColor()); + setTimeAxisTickLabelFont(axisFormat.getTickLabelFont()); + setTimeAxisTickLabelColor(axisFormat.getTickLabelColor()); + setTimeAxisTickLabelMask(axisFormat.getTickLabelMask()); + setTimeAxisLineColor(axisFormat.getLineColor()); + } + + public void setValueAxisFormat(JRAxisFormat axisFormat) { + setValueAxisLabelFont(axisFormat.getLabelFont()); + setValueAxisLabelColor(axisFormat.getLabelColor()); + setValueAxisTickLabelFont(axisFormat.getTickLabelFont()); + setValueAxisTickLabelColor(axisFormat.getTickLabelColor()); + setValueAxisTickLabelMask(axisFormat.getTickLabelMask()); + setValueAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCategoryDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCategoryDataset.java new file mode 100644 index 0000000..6bfd140 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignCategoryDataset.java @@ -0,0 +1,70 @@ +package net.sf.jasperreports.charts.design; + +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignCategoryDataset extends JRDesignChartDataset implements JRCategoryDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CATEGORY_SERIES = "categorySeries"; + + private List categorySeriesList = new ArrayList(); + + public JRDesignCategoryDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRCategorySeries[] getSeries() { + JRCategorySeries[] categorySeriesArray = new JRCategorySeries[this.categorySeriesList.size()]; + this.categorySeriesList.toArray((Object[])categorySeriesArray); + return categorySeriesArray; + } + + public List getSeriesList() { + return this.categorySeriesList; + } + + public void addCategorySeries(JRCategorySeries categorySeries) { + this.categorySeriesList.add(categorySeries); + getEventSupport().fireCollectionElementAddedEvent("categorySeries", categorySeries, this.categorySeriesList.size() - 1); + } + + public JRCategorySeries removeCategorySeries(JRCategorySeries categorySeries) { + if (categorySeries != null) { + int idx = this.categorySeriesList.indexOf(categorySeries); + if (idx >= 0) { + this.categorySeriesList.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("categorySeries", categorySeries, idx); + } + } + return categorySeries; + } + + public byte getDatasetType() { + return 2; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignCategoryDataset clone = (JRDesignCategoryDataset)super.clone(); + if (this.categorySeriesList != null) { + clone.categorySeriesList = new ArrayList(this.categorySeriesList.size()); + for (int i = 0; i < this.categorySeriesList.size(); i++) + clone.categorySeriesList.add(((JRCategorySeries)this.categorySeriesList.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowDataset.java new file mode 100644 index 0000000..f0cab22 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowDataset.java @@ -0,0 +1,162 @@ +package net.sf.jasperreports.charts.design; + +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignHighLowDataset extends JRDesignChartDataset implements JRHighLowDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CLOSE_EXPRESSION = "closeExpression"; + + public static final String PROPERTY_DATE_EXPRESSION = "dateExpression"; + + public static final String PROPERTY_HIGH_EXPRESSION = "highExpression"; + + public static final String PROPERTY_ITEM_HYPERLINK = "itemHyperlink"; + + public static final String PROPERTY_LOW_EXPRESSION = "lowExpression"; + + public static final String PROPERTY_OPEN_EXPRESSION = "openExpression"; + + public static final String PROPERTY_SERIES_EXPRESSION = "seriesExpression"; + + public static final String PROPERTY_VOLUME_EXPRESSION = "volumeExpression"; + + protected JRExpression seriesExpression; + + protected JRExpression dateExpression; + + protected JRExpression highExpression; + + protected JRExpression lowExpression; + + protected JRExpression openExpression; + + protected JRExpression closeExpression; + + protected JRExpression volumeExpression; + + private JRHyperlink itemHyperlink; + + public JRDesignHighLowDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRExpression getSeriesExpression() { + return this.seriesExpression; + } + + public void setSeriesExpression(JRExpression seriesExpression) { + Object old = this.seriesExpression; + this.seriesExpression = seriesExpression; + getEventSupport().firePropertyChange("seriesExpression", old, this.seriesExpression); + } + + public JRExpression getDateExpression() { + return this.dateExpression; + } + + public void setDateExpression(JRExpression dateExpression) { + Object old = this.dateExpression; + this.dateExpression = dateExpression; + getEventSupport().firePropertyChange("dateExpression", old, this.dateExpression); + } + + public JRExpression getHighExpression() { + return this.highExpression; + } + + public void setHighExpression(JRExpression highExpression) { + Object old = this.highExpression; + this.highExpression = highExpression; + getEventSupport().firePropertyChange("highExpression", old, this.highExpression); + } + + public JRExpression getLowExpression() { + return this.lowExpression; + } + + public void setLowExpression(JRExpression lowExpression) { + Object old = this.lowExpression; + this.lowExpression = lowExpression; + getEventSupport().firePropertyChange("lowExpression", old, this.lowExpression); + } + + public JRExpression getOpenExpression() { + return this.openExpression; + } + + public void setOpenExpression(JRExpression openExpression) { + Object old = this.openExpression; + this.openExpression = openExpression; + getEventSupport().firePropertyChange("openExpression", old, this.openExpression); + } + + public JRExpression getCloseExpression() { + return this.closeExpression; + } + + public void setCloseExpression(JRExpression closeExpression) { + Object old = this.closeExpression; + this.closeExpression = closeExpression; + getEventSupport().firePropertyChange("closeExpression", old, this.closeExpression); + } + + public JRExpression getVolumeExpression() { + return this.volumeExpression; + } + + public void setVolumeExpression(JRExpression volumeExpression) { + Object old = this.volumeExpression; + this.volumeExpression = volumeExpression; + getEventSupport().firePropertyChange("volumeExpression", old, this.volumeExpression); + } + + public byte getDatasetType() { + return 7; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRHyperlink getItemHyperlink() { + return this.itemHyperlink; + } + + public void setItemHyperlink(JRHyperlink itemHyperlink) { + Object old = this.itemHyperlink; + this.itemHyperlink = itemHyperlink; + getEventSupport().firePropertyChange("itemHyperlink", old, this.itemHyperlink); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignHighLowDataset clone = (JRDesignHighLowDataset)super.clone(); + if (this.seriesExpression != null) + clone.seriesExpression = (JRExpression)this.seriesExpression.clone(); + if (this.dateExpression != null) + clone.dateExpression = (JRExpression)this.dateExpression.clone(); + if (this.highExpression != null) + clone.highExpression = (JRExpression)this.highExpression.clone(); + if (this.lowExpression != null) + clone.lowExpression = (JRExpression)this.lowExpression.clone(); + if (this.openExpression != null) + clone.openExpression = (JRExpression)this.openExpression.clone(); + if (this.closeExpression != null) + clone.closeExpression = (JRExpression)this.closeExpression.clone(); + if (this.volumeExpression != null) + clone.volumeExpression = (JRExpression)this.volumeExpression.clone(); + if (this.itemHyperlink != null) + clone.itemHyperlink = (JRHyperlink)this.itemHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowPlot.java new file mode 100644 index 0000000..4b865f8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignHighLowPlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseHighLowPlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignHighLowPlot extends JRBaseHighLowPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TIME_AXIS_LABEL_COLOR = "timeAxisLabelColor"; + + public static final String PROPERTY_TIME_AXIS_LABEL_EXPRESSION = "timeAxisLabelExpression"; + + public static final String PROPERTY_TIME_AXIS_LABEL_FONT = "timeAxisLabelFont"; + + public static final String PROPERTY_TIME_AXIS_LINE_COLOR = "timeAxisLineColor"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_COLOR = "timeAxisTickLabelColor"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_FONT = "timeAxisTickLabelFont"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_MASK = "timeAxisTickLabelMask"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_COLOR = "valueAxisLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_EXPRESSION = "valueAxisLabelExpression"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_FONT = "valueAxisLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_LINE_COLOR = "valueAxisLineColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_COLOR = "valueAxisTickLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_FONT = "valueAxisTickLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_MASK = "valueAxisTickLabelMask"; + + public JRDesignHighLowPlot(JRChartPlot highLowPlot, JRChart chart) { + super(highLowPlot, chart); + } + + public void setTimeAxisLabelExpression(JRExpression timeAxisLabelExpression) { + Object old = this.timeAxisLabelExpression; + this.timeAxisLabelExpression = timeAxisLabelExpression; + getEventSupport().firePropertyChange("timeAxisLabelExpression", old, this.timeAxisLabelExpression); + } + + public void setTimeAxisLabelFont(JRFont timeAxisLabelFont) { + Object old = this.timeAxisLabelFont; + this.timeAxisLabelFont = timeAxisLabelFont; + getEventSupport().firePropertyChange("timeAxisLabelFont", old, this.timeAxisLabelFont); + } + + public void setTimeAxisLabelColor(Color timeAxisLabelColor) { + Object old = this.timeAxisLabelColor; + this.timeAxisLabelColor = timeAxisLabelColor; + getEventSupport().firePropertyChange("timeAxisLabelColor", old, this.timeAxisLabelColor); + } + + public void setTimeAxisTickLabelFont(JRFont timeAxisTickLabelFont) { + Object old = this.timeAxisTickLabelFont; + this.timeAxisTickLabelFont = timeAxisTickLabelFont; + getEventSupport().firePropertyChange("timeAxisTickLabelFont", old, this.timeAxisTickLabelFont); + } + + public void setTimeAxisTickLabelColor(Color timeAxisTickLabelColor) { + Object old = this.timeAxisTickLabelColor; + this.timeAxisTickLabelColor = timeAxisTickLabelColor; + getEventSupport().firePropertyChange("timeAxisTickLabelColor", old, this.timeAxisTickLabelColor); + } + + public void setTimeAxisTickLabelMask(String timeAxisTickLabelMask) { + Object old = this.timeAxisTickLabelMask; + this.timeAxisTickLabelMask = timeAxisTickLabelMask; + getEventSupport().firePropertyChange("timeAxisTickLabelMask", old, this.timeAxisTickLabelMask); + } + + public void setTimeAxisLineColor(Color timeAxisLineColor) { + Object old = this.timeAxisLineColor; + this.timeAxisLineColor = timeAxisLineColor; + getEventSupport().firePropertyChange("timeAxisLineColor", old, this.timeAxisLineColor); + } + + public void setValueAxisLabelExpression(JRExpression valueAxisLabelExpression) { + Object old = this.valueAxisLabelExpression; + this.valueAxisLabelExpression = valueAxisLabelExpression; + getEventSupport().firePropertyChange("valueAxisLabelExpression", old, this.valueAxisLabelExpression); + } + + public void setValueAxisLabelFont(JRFont valueAxisLabelFont) { + Object old = this.valueAxisLabelFont; + this.valueAxisLabelFont = valueAxisLabelFont; + getEventSupport().firePropertyChange("valueAxisLabelFont", old, this.valueAxisLabelFont); + } + + public void setValueAxisLabelColor(Color valueAxisLabelColor) { + Object old = this.valueAxisLabelColor; + this.valueAxisLabelColor = valueAxisLabelColor; + getEventSupport().firePropertyChange("valueAxisLabelColor", old, this.valueAxisLabelColor); + } + + public void setValueAxisTickLabelFont(JRFont valueAxisTickLabelFont) { + Object old = this.valueAxisTickLabelFont; + this.valueAxisTickLabelFont = valueAxisTickLabelFont; + getEventSupport().firePropertyChange("valueAxisTickLabelFont", old, this.valueAxisTickLabelFont); + } + + public void setValueAxisTickLabelColor(Color valueAxisTickLabelColor) { + Object old = this.valueAxisTickLabelColor; + this.valueAxisTickLabelColor = valueAxisTickLabelColor; + getEventSupport().firePropertyChange("valueAxisTickLabelColor", old, this.valueAxisTickLabelColor); + } + + public void setValueAxisTickLabelMask(String valueAxisTickLabelMask) { + Object old = this.valueAxisTickLabelMask; + this.valueAxisTickLabelMask = valueAxisTickLabelMask; + getEventSupport().firePropertyChange("valueAxisTickLabelMask", old, this.valueAxisTickLabelMask); + } + + public void setValueAxisLineColor(Color valueAxisLineColor) { + Object old = this.valueAxisLineColor; + this.valueAxisLineColor = valueAxisLineColor; + getEventSupport().firePropertyChange("valueAxisLineColor", old, this.valueAxisLineColor); + } + + public void setTimeAxisFormat(JRAxisFormat axisFormat) { + setTimeAxisLabelFont(axisFormat.getLabelFont()); + setTimeAxisLabelColor(axisFormat.getLabelColor()); + setTimeAxisTickLabelFont(axisFormat.getTickLabelFont()); + setTimeAxisTickLabelColor(axisFormat.getTickLabelColor()); + setTimeAxisTickLabelMask(axisFormat.getTickLabelMask()); + setTimeAxisLineColor(axisFormat.getLineColor()); + } + + public void setValueAxisFormat(JRAxisFormat axisFormat) { + setValueAxisLabelFont(axisFormat.getLabelFont()); + setValueAxisLabelColor(axisFormat.getLabelColor()); + setValueAxisTickLabelFont(axisFormat.getTickLabelFont()); + setValueAxisTickLabelColor(axisFormat.getTickLabelColor()); + setValueAxisTickLabelMask(axisFormat.getTickLabelMask()); + setValueAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignLinePlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignLinePlot.java new file mode 100644 index 0000000..5fa2d68 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignLinePlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseLinePlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignLinePlot extends JRBaseLinePlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_COLOR = "categoryAxisLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_EXPRESSION = "categoryAxisLabelExpression"; + + public static final String PROPERTY_CATEGORY_AXIS_LABEL_FONT = "categoryAxisLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_LINE_COLOR = "categoryAxisLineColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_COLOR = "categoryAxisTickLabelColor"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_FONT = "categoryAxisTickLabelFont"; + + public static final String PROPERTY_CATEGORY_AXIS_TICK_LABEL_MASK = "categoryAxisTickLabelMask"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_COLOR = "valueAxisLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_EXPRESSION = "valueAxisLabelExpression"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_FONT = "valueAxisLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_LINE_COLOR = "valueAxisLineColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_COLOR = "valueAxisTickLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_FONT = "valueAxisTickLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_MASK = "valueAxisTickLabelMask"; + + public JRDesignLinePlot(JRChartPlot linePlot, JRChart chart) { + super(linePlot, chart); + } + + public void setCategoryAxisLabelExpression(JRExpression categoryAxisLabelExpression) { + Object old = this.categoryAxisLabelExpression; + this.categoryAxisLabelExpression = categoryAxisLabelExpression; + getEventSupport().firePropertyChange("categoryAxisLabelExpression", old, this.categoryAxisLabelExpression); + } + + public void setCategoryAxisLabelFont(JRFont categoryAxisLabelFont) { + Object old = this.categoryAxisLabelFont; + this.categoryAxisLabelFont = categoryAxisLabelFont; + getEventSupport().firePropertyChange("categoryAxisLabelFont", old, this.categoryAxisLabelFont); + } + + public void setCategoryAxisLabelColor(Color categoryAxisLabelColor) { + Object old = this.categoryAxisLabelColor; + this.categoryAxisLabelColor = categoryAxisLabelColor; + getEventSupport().firePropertyChange("categoryAxisLabelColor", old, this.categoryAxisLabelColor); + } + + public void setCategoryAxisTickLabelFont(JRFont categoryAxisTickLabelFont) { + Object old = this.categoryAxisTickLabelFont; + this.categoryAxisTickLabelFont = categoryAxisTickLabelFont; + getEventSupport().firePropertyChange("categoryAxisTickLabelFont", old, this.categoryAxisTickLabelFont); + } + + public void setCategoryAxisTickLabelColor(Color categoryAxisTickLabelColor) { + Object old = this.categoryAxisTickLabelColor; + this.categoryAxisTickLabelColor = categoryAxisTickLabelColor; + getEventSupport().firePropertyChange("categoryAxisTickLabelColor", old, this.categoryAxisTickLabelColor); + } + + public void setCategoryAxisTickLabelMask(String categoryAxisTickLabelMask) { + Object old = this.categoryAxisTickLabelMask; + this.categoryAxisTickLabelMask = categoryAxisTickLabelMask; + getEventSupport().firePropertyChange("categoryAxisTickLabelMask", old, this.categoryAxisTickLabelMask); + } + + public void setCategoryAxisLineColor(Color categoryAxisLineColor) { + Object old = this.categoryAxisLineColor; + this.categoryAxisLineColor = categoryAxisLineColor; + getEventSupport().firePropertyChange("categoryAxisLineColor", old, this.categoryAxisLineColor); + } + + public void setValueAxisLabelExpression(JRExpression valueAxisLabelExpression) { + Object old = this.valueAxisLabelExpression; + this.valueAxisLabelExpression = valueAxisLabelExpression; + getEventSupport().firePropertyChange("valueAxisLabelExpression", old, this.valueAxisLabelExpression); + } + + public void setValueAxisLabelFont(JRFont valueAxisLabelFont) { + Object old = this.valueAxisLabelFont; + this.valueAxisLabelFont = valueAxisLabelFont; + getEventSupport().firePropertyChange("valueAxisLabelFont", old, this.valueAxisLabelFont); + } + + public void setValueAxisLabelColor(Color valueAxisLabelColor) { + Object old = this.valueAxisLabelColor; + this.valueAxisLabelColor = valueAxisLabelColor; + getEventSupport().firePropertyChange("valueAxisLabelColor", old, this.valueAxisLabelColor); + } + + public void setValueAxisTickLabelFont(JRFont valueAxisTickLabelFont) { + Object old = this.valueAxisTickLabelFont; + this.valueAxisTickLabelFont = valueAxisTickLabelFont; + getEventSupport().firePropertyChange("valueAxisTickLabelFont", old, this.valueAxisTickLabelFont); + } + + public void setValueAxisTickLabelColor(Color valueAxisTickLabelColor) { + Object old = this.valueAxisTickLabelColor; + this.valueAxisTickLabelColor = valueAxisTickLabelColor; + getEventSupport().firePropertyChange("valueAxisTickLabelColor", old, this.valueAxisTickLabelColor); + } + + public void setValueAxisTickLabelMask(String valueAxisTickLabelMask) { + Object old = this.valueAxisTickLabelMask; + this.valueAxisTickLabelMask = valueAxisTickLabelMask; + getEventSupport().firePropertyChange("valueAxisTickLabelMask", old, this.valueAxisTickLabelMask); + } + + public void setValueAxisLineColor(Color valueAxisLineColor) { + Object old = this.valueAxisLineColor; + this.valueAxisLineColor = valueAxisLineColor; + getEventSupport().firePropertyChange("valueAxisLineColor", old, this.valueAxisLineColor); + } + + public void setCategoryAxisFormat(JRAxisFormat axisFormat) { + setCategoryAxisLabelFont(axisFormat.getLabelFont()); + setCategoryAxisLabelColor(axisFormat.getLabelColor()); + setCategoryAxisTickLabelFont(axisFormat.getTickLabelFont()); + setCategoryAxisTickLabelColor(axisFormat.getTickLabelColor()); + setCategoryAxisTickLabelMask(axisFormat.getTickLabelMask()); + setCategoryAxisLineColor(axisFormat.getLineColor()); + } + + public void setValueAxisFormat(JRAxisFormat axisFormat) { + setValueAxisLabelFont(axisFormat.getLabelFont()); + setValueAxisLabelColor(axisFormat.getLabelColor()); + setValueAxisTickLabelFont(axisFormat.getTickLabelFont()); + setValueAxisTickLabelColor(axisFormat.getTickLabelColor()); + setValueAxisTickLabelMask(axisFormat.getTickLabelMask()); + setValueAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMeterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMeterPlot.java new file mode 100644 index 0000000..b70a97a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMeterPlot.java @@ -0,0 +1,113 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.Collection; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.charts.base.JRBaseMeterPlot; +import net.sf.jasperreports.charts.util.JRMeterInterval; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRException; + +public class JRDesignMeterPlot extends JRBaseMeterPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DATA_RANGE = "dataRange"; + + public static final String PROPERTY_METER_ANGLE = "meterAngle"; + + public static final String PROPERTY_METER_BACKGROUND_COLOR = "meterBackgroundColor"; + + public static final String PROPERTY_NEEDLE_COLOR = "needleColor"; + + public static final String PROPERTY_SHAPE = "shape"; + + public static final String PROPERTY_TICK_COLOR = "tickColor"; + + public static final String PROPERTY_TICK_INTERVAL = "tickInterval"; + + public static final String PROPERTY_UNITS = "units"; + + public static final String PROPERTY_VALUE_DISPLAY = "valueDisplay"; + + public static final String PROPERTY_INTERVALS = "intervals"; + + public JRDesignMeterPlot(JRChartPlot meterPlot, JRChart chart) { + super(meterPlot, chart); + } + + public void setDataRange(JRDataRange dataRange) throws JRException { + Object old = this.dataRange; + this.dataRange = dataRange; + getEventSupport().firePropertyChange("dataRange", old, this.dataRange); + } + + public void setValueDisplay(JRValueDisplay valueDisplay) { + Object old = this.valueDisplay; + this.valueDisplay = valueDisplay; + getEventSupport().firePropertyChange("valueDisplay", old, this.valueDisplay); + } + + public void setShape(byte shape) throws JRException { + if (shape < 0 || shape > 2) + throw new JRException("Unknown shape for MeterPlot"); + byte old = this.shape; + this.shape = shape; + getEventSupport().firePropertyChange("shape", old, this.shape); + } + + public void addInterval(JRMeterInterval interval) { + this.intervals.add(interval); + getEventSupport().fireCollectionElementAddedEvent("intervals", interval, this.intervals.size() - 1); + } + + public void clearIntervals() { + setIntervals((Collection)null); + } + + public void setIntervals(Collection intervals) { + Object old = new ArrayList(this.intervals); + this.intervals.clear(); + if (intervals != null) + this.intervals.addAll(intervals); + getEventSupport().firePropertyChange("intervals", old, this.intervals); + } + + public void setMeterAngle(int meterAngle) { + int old = this.meterAngle; + this.meterAngle = meterAngle; + getEventSupport().firePropertyChange("meterAngle", old, this.meterAngle); + } + + public void setUnits(String units) { + Object old = this.units; + this.units = units; + getEventSupport().firePropertyChange("units", old, this.units); + } + + public void setTickInterval(double tickInterval) { + double old = this.tickInterval; + this.tickInterval = tickInterval; + getEventSupport().firePropertyChange("tickInterval", old, this.tickInterval); + } + + public void setMeterBackgroundColor(Color meterBackgroundColor) { + Object old = this.meterBackgroundColor; + this.meterBackgroundColor = meterBackgroundColor; + getEventSupport().firePropertyChange("meterBackgroundColor", old, this.meterBackgroundColor); + } + + public void setNeedleColor(Color needleColor) { + Object old = this.needleColor; + this.needleColor = needleColor; + getEventSupport().firePropertyChange("needleColor", old, this.needleColor); + } + + public void setTickColor(Color tickColor) { + Object old = this.tickColor; + this.tickColor = tickColor; + getEventSupport().firePropertyChange("tickColor", old, this.tickColor); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMultiAxisPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMultiAxisPlot.java new file mode 100644 index 0000000..9a172a9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignMultiAxisPlot.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.charts.design; + +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.charts.base.JRBaseMultiAxisPlot; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.design.JRDesignChart; + +public class JRDesignMultiAxisPlot extends JRBaseMultiAxisPlot { + public static final String PROPERTY_CHART = "chart"; + + public static final String PROPERTY_AXES = "axes"; + + private JRDesignChart chart = null; + + private static final long serialVersionUID = 10200L; + + public JRDesignMultiAxisPlot(JRChartPlot multiAxisPlot, JRChart chart) { + super(multiAxisPlot, chart); + } + + public void addAxis(JRChartAxis axis) { + this.axes.add(axis); + if (this.axes.size() == 1) + this.chart.setDataset(axis.getChart().getDataset()); + getEventSupport().fireCollectionElementAddedEvent("axes", axis, this.axes.size() - 1); + } + + public void clearAxes() { + this.axes.clear(); + this.chart.setDataset(null); + } + + public JRChart getChart() { + return (JRChart)this.chart; + } + + public void setChart(JRDesignChart chart) { + Object old = this.chart; + this.chart = chart; + getEventSupport().firePropertyChange("chart", old, this.chart); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPie3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPie3DPlot.java new file mode 100644 index 0000000..515c1e4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPie3DPlot.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.charts.design; + +import net.sf.jasperreports.charts.base.JRBasePie3DPlot; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; + +public class JRDesignPie3DPlot extends JRBasePie3DPlot { + private static final long serialVersionUID = 10200L; + + public JRDesignPie3DPlot(JRChartPlot pie3DPlot, JRChart chart) { + super(pie3DPlot, chart); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPieDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPieDataset.java new file mode 100644 index 0000000..6083562 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPieDataset.java @@ -0,0 +1,98 @@ +package net.sf.jasperreports.charts.design; + +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignPieDataset extends JRDesignChartDataset implements JRPieDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_KEY_EXPRESSION = "keyExpression"; + + public static final String PROPERTY_LABEL_EXPRESSION = "labelExpression"; + + public static final String PROPERTY_SECTION_HYPERLINK = "sectionHyperlink"; + + public static final String PROPERTY_VALUE_EXPRESSION = "valueExpression"; + + protected JRExpression keyExpression = null; + + protected JRExpression valueExpression = null; + + protected JRExpression labelExpression = null; + + private JRHyperlink sectionHyperlink; + + public JRDesignPieDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRExpression getKeyExpression() { + return this.keyExpression; + } + + public void setKeyExpression(JRExpression keyExpression) { + Object old = this.keyExpression; + this.keyExpression = keyExpression; + getEventSupport().firePropertyChange("keyExpression", old, this.keyExpression); + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public void setValueExpression(JRExpression valueExpression) { + Object old = this.valueExpression; + this.valueExpression = valueExpression; + getEventSupport().firePropertyChange("valueExpression", old, this.valueExpression); + } + + public JRExpression getLabelExpression() { + return this.labelExpression; + } + + public void setLabelExpression(JRExpression labelExpression) { + Object old = this.labelExpression; + this.labelExpression = labelExpression; + getEventSupport().firePropertyChange("labelExpression", old, this.labelExpression); + } + + public byte getDatasetType() { + return 1; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRHyperlink getSectionHyperlink() { + return this.sectionHyperlink; + } + + public void setSectionHyperlink(JRHyperlink sectionHyperlink) { + Object old = this.sectionHyperlink; + this.sectionHyperlink = sectionHyperlink; + getEventSupport().firePropertyChange("sectionHyperlink", old, this.sectionHyperlink); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignPieDataset clone = (JRDesignPieDataset)super.clone(); + if (this.keyExpression != null) + clone.keyExpression = (JRExpression)this.keyExpression.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + if (this.labelExpression != null) + clone.labelExpression = (JRExpression)this.labelExpression.clone(); + if (this.sectionHyperlink != null) + clone.sectionHyperlink = (JRHyperlink)this.sectionHyperlink.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPiePlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPiePlot.java new file mode 100644 index 0000000..d519a08 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignPiePlot.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.charts.design; + +import net.sf.jasperreports.charts.base.JRBasePiePlot; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; + +public class JRDesignPiePlot extends JRBasePiePlot { + private static final long serialVersionUID = 10200L; + + public JRDesignPiePlot(JRChartPlot piePlot, JRChart chart) { + super(piePlot, chart); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignScatterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignScatterPlot.java new file mode 100644 index 0000000..f025eba --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignScatterPlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseScatterPlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignScatterPlot extends JRBaseScatterPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_X_AXIS_LABEL_COLOR = "xAxisLabelColor"; + + public static final String PROPERTY_X_AXIS_LABEL_EXPRESSION = "xAxisLabelExpression"; + + public static final String PROPERTY_X_AXIS_LABEL_FONT = "xAxisLabelFont"; + + public static final String PROPERTY_X_AXIS_LINE_COLOR = "xAxisLineColor"; + + public static final String PROPERTY_X_AXIS_TICK_LABEL_COLOR = "xAxisTickLabelColor"; + + public static final String PROPERTY_X_AXIS_TICK_LABEL_FONT = "xAxisTickLabelFont"; + + public static final String PROPERTY_X_AXIS_TICK_LABEL_MASK = "xAxisTickLabelMask"; + + public static final String PROPERTY_Y_AXIS_LABEL_COLOR = "yAxisLabelColor"; + + public static final String PROPERTY_Y_AXIS_LABEL_EXPRESSION = "yAxisLabelExpression"; + + public static final String PROPERTY_Y_AXIS_LABEL_FONT = "yAxisLabelFont"; + + public static final String PROPERTY_Y_AXIS_LINE_COLOR = "yAxisLineColor"; + + public static final String PROPERTY_Y_AXIS_TICK_LABEL_COLOR = "yAxisTickLabelColor"; + + public static final String PROPERTY_Y_AXIS_TICK_LABEL_FONT = "yAxisTickLabelFont"; + + public static final String PROPERTY_Y_AXIS_TICK_LABEL_MASK = "yAxisTickLabelMask"; + + public JRDesignScatterPlot(JRChartPlot scattedPlot, JRChart chart) { + super(scattedPlot, chart); + } + + public void setXAxisLabelExpression(JRExpression xAxisLabelExpression) { + Object old = this.xAxisLabelExpression; + this.xAxisLabelExpression = xAxisLabelExpression; + getEventSupport().firePropertyChange("xAxisLabelExpression", old, this.xAxisLabelExpression); + } + + public void setXAxisLabelFont(JRFont xAxisLabelFont) { + Object old = this.xAxisLabelFont; + this.xAxisLabelFont = xAxisLabelFont; + getEventSupport().firePropertyChange("xAxisLabelFont", old, this.xAxisLabelFont); + } + + public void setXAxisLabelColor(Color xAxisLabelColor) { + Object old = this.xAxisLabelColor; + this.xAxisLabelColor = xAxisLabelColor; + getEventSupport().firePropertyChange("xAxisLabelColor", old, this.xAxisLabelColor); + } + + public void setXAxisTickLabelFont(JRFont xAxisTickLabelFont) { + Object old = this.xAxisTickLabelFont; + this.xAxisTickLabelFont = xAxisTickLabelFont; + getEventSupport().firePropertyChange("xAxisTickLabelFont", old, this.xAxisTickLabelFont); + } + + public void setXAxisTickLabelColor(Color xAxisTickLabelColor) { + Object old = this.xAxisTickLabelColor; + this.xAxisTickLabelColor = xAxisTickLabelColor; + getEventSupport().firePropertyChange("xAxisTickLabelColor", old, this.xAxisTickLabelColor); + } + + public void setXAxisTickLabelMask(String xAxisTickLabelMask) { + Object old = this.xAxisTickLabelMask; + this.xAxisTickLabelMask = xAxisTickLabelMask; + getEventSupport().firePropertyChange("xAxisTickLabelMask", old, this.xAxisTickLabelMask); + } + + public void setXAxisLineColor(Color xAxisLineColor) { + Object old = this.xAxisLineColor; + this.xAxisLineColor = xAxisLineColor; + getEventSupport().firePropertyChange("xAxisLineColor", old, this.xAxisLineColor); + } + + public void setYAxisLabelExpression(JRExpression yAxisLabelExpression) { + Object old = this.yAxisLabelExpression; + this.yAxisLabelExpression = yAxisLabelExpression; + getEventSupport().firePropertyChange("yAxisLabelExpression", old, this.yAxisLabelExpression); + } + + public void setYAxisLabelFont(JRFont yAxisLabelFont) { + Object old = this.yAxisLabelFont; + this.yAxisLabelFont = yAxisLabelFont; + getEventSupport().firePropertyChange("yAxisLabelFont", old, this.yAxisLabelFont); + } + + public void setYAxisLabelColor(Color yAxisLabelColor) { + Object old = this.yAxisLabelColor; + this.yAxisLabelColor = yAxisLabelColor; + getEventSupport().firePropertyChange("yAxisLabelColor", old, this.yAxisLabelColor); + } + + public void setYAxisTickLabelFont(JRFont yAxisTickLabelFont) { + Object old = this.yAxisTickLabelFont; + this.yAxisTickLabelFont = yAxisTickLabelFont; + getEventSupport().firePropertyChange("yAxisTickLabelFont", old, this.yAxisTickLabelFont); + } + + public void setYAxisTickLabelColor(Color yAxisTickLabelColor) { + Object old = this.yAxisTickLabelColor; + this.yAxisTickLabelColor = yAxisTickLabelColor; + getEventSupport().firePropertyChange("yAxisTickLabelColor", old, this.yAxisTickLabelColor); + } + + public void setYAxisTickLabelMask(String yAxisTickLabelMask) { + Object old = this.yAxisTickLabelMask; + this.yAxisTickLabelMask = yAxisTickLabelMask; + getEventSupport().firePropertyChange("yAxisTickLabelMask", old, this.yAxisTickLabelMask); + } + + public void setYAxisLineColor(Color yAxisLineColor) { + Object old = this.yAxisLineColor; + this.yAxisLineColor = yAxisLineColor; + getEventSupport().firePropertyChange("yAxisLineColor", old, this.yAxisLineColor); + } + + public void setXAxisFormat(JRAxisFormat axisFormat) { + setXAxisLabelColor(axisFormat.getLabelColor()); + setXAxisLabelFont(axisFormat.getLabelFont()); + setXAxisTickLabelFont(axisFormat.getTickLabelFont()); + setXAxisTickLabelColor(axisFormat.getTickLabelColor()); + setXAxisTickLabelMask(axisFormat.getTickLabelMask()); + setXAxisLineColor(axisFormat.getLineColor()); + } + + public void setYAxisFormat(JRAxisFormat axisFormat) { + setYAxisLabelColor(axisFormat.getLabelColor()); + setYAxisLabelFont(axisFormat.getLabelFont()); + setYAxisTickLabelFont(axisFormat.getTickLabelFont()); + setYAxisTickLabelColor(axisFormat.getTickLabelColor()); + setYAxisTickLabelMask(axisFormat.getTickLabelMask()); + setYAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignThermometerPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignThermometerPlot.java new file mode 100644 index 0000000..69bc7ca --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignThermometerPlot.java @@ -0,0 +1,80 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.charts.base.JRBaseThermometerPlot; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; + +public class JRDesignThermometerPlot extends JRBaseThermometerPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DATA_RANGE = "dataRange"; + + public static final String PROPERTY_HIGH_RANGE = "highRange"; + + public static final String PROPERTY_LOW_RANGE = "lowRange"; + + public static final String PROPERTY_MEDIUM_RANGE = "mediumRange"; + + public static final String PROPERTY_MERCURY_COLOR = "mercuryColor"; + + public static final String PROPERTY_SHOW_VALUE_LINES = "showValueLines"; + + public static final String PROPERTY_VALUE_DISPLAY = "valueDisplay"; + + public static final String PROPERTY_VALUE_LOCATION = "valueLocation"; + + public JRDesignThermometerPlot(JRChartPlot thermoPlot, JRChart chart) { + super(thermoPlot, chart); + } + + public void setDataRange(JRDataRange dataRange) { + Object old = this.dataRange; + this.dataRange = dataRange; + getEventSupport().firePropertyChange("dataRange", old, this.dataRange); + } + + public void setValueDisplay(JRValueDisplay valueDisplay) { + Object old = this.valueDisplay; + this.valueDisplay = valueDisplay; + getEventSupport().firePropertyChange("valueDisplay", old, this.valueDisplay); + } + + public void setShowValueLines(boolean showValueLines) { + boolean old = this.showValueLines; + this.showValueLines = showValueLines; + getEventSupport().firePropertyChange("showValueLines", old, this.showValueLines); + } + + public void setValueLocation(byte valueLocation) { + byte old = this.valueLocation; + this.valueLocation = valueLocation; + getEventSupport().firePropertyChange("valueLocation", old, this.valueLocation); + } + + public void setMercuryColor(Color mercuryColor) { + Object old = this.mercuryColor; + this.mercuryColor = mercuryColor; + getEventSupport().firePropertyChange("mercuryColor", old, this.mercuryColor); + } + + public void setLowRange(JRDataRange lowRange) { + Object old = this.lowRange; + this.lowRange = lowRange; + getEventSupport().firePropertyChange("lowRange", old, this.lowRange); + } + + public void setMediumRange(JRDataRange mediumRange) { + Object old = this.mediumRange; + this.mediumRange = mediumRange; + getEventSupport().firePropertyChange("mediumRange", old, this.mediumRange); + } + + public void setHighRange(JRDataRange highRange) { + Object old = this.highRange; + this.highRange = highRange; + getEventSupport().firePropertyChange("highRange", old, this.highRange); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimePeriodDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimePeriodDataset.java new file mode 100644 index 0000000..75412cd --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimePeriodDataset.java @@ -0,0 +1,70 @@ +package net.sf.jasperreports.charts.design; + +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignTimePeriodDataset extends JRDesignChartDataset implements JRTimePeriodDataset { + public static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TIME_PERIODS_SERIES = "timePeriodSeries"; + + private List timePeriodSeriesList = new ArrayList(); + + public JRDesignTimePeriodDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRTimePeriodSeries[] getSeries() { + JRTimePeriodSeries[] timePeriodSeriesArray = new JRTimePeriodSeries[this.timePeriodSeriesList.size()]; + this.timePeriodSeriesList.toArray((Object[])timePeriodSeriesArray); + return timePeriodSeriesArray; + } + + public List getSeriesList() { + return this.timePeriodSeriesList; + } + + public void addTimePeriodSeries(JRTimePeriodSeries timePeriodSeries) { + this.timePeriodSeriesList.add(timePeriodSeries); + getEventSupport().fireCollectionElementAddedEvent("timePeriodSeries", timePeriodSeries, this.timePeriodSeriesList.size() - 1); + } + + public JRTimePeriodSeries removeTimePeriodSeries(JRTimePeriodSeries timePeriodSeries) { + if (timePeriodSeries != null) { + int idx = this.timePeriodSeriesList.indexOf(timePeriodSeries); + if (idx >= 0) { + this.timePeriodSeriesList.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("timePeriodSeries", timePeriodSeries, idx); + } + } + return timePeriodSeries; + } + + public byte getDatasetType() { + return 5; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignTimePeriodDataset clone = (JRDesignTimePeriodDataset)super.clone(); + if (this.timePeriodSeriesList != null) { + clone.timePeriodSeriesList = new ArrayList(this.timePeriodSeriesList.size()); + for (int i = 0; i < this.timePeriodSeriesList.size(); i++) + clone.timePeriodSeriesList.add(((JRTimePeriodSeries)this.timePeriodSeriesList.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesDataset.java new file mode 100644 index 0000000..d9e9a06 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesDataset.java @@ -0,0 +1,84 @@ +package net.sf.jasperreports.charts.design; + +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignTimeSeriesDataset extends JRDesignChartDataset implements JRTimeSeriesDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TIME_PERIOD = "timePeriod"; + + public static final String PROPERTY_TIME_SERIES = "timeSeries"; + + private List timeSeriesList = new ArrayList(); + + private Class timePeriod = null; + + public JRDesignTimeSeriesDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRTimeSeries[] getSeries() { + JRTimeSeries[] timeSeriesArray = new JRTimeSeries[this.timeSeriesList.size()]; + this.timeSeriesList.toArray((Object[])timeSeriesArray); + return timeSeriesArray; + } + + public List getSeriesList() { + return this.timeSeriesList; + } + + public void addTimeSeries(JRTimeSeries timeSeries) { + this.timeSeriesList.add(timeSeries); + getEventSupport().fireCollectionElementAddedEvent("timeSeries", timeSeries, this.timeSeriesList.size() - 1); + } + + public JRTimeSeries removeTimeSeries(JRTimeSeries timeSeries) { + if (timeSeries != null) { + int idx = this.timeSeriesList.indexOf(timeSeries); + if (idx >= 0) { + this.timeSeriesList.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("timeSeries", timeSeries, idx); + } + } + return timeSeries; + } + + public Class getTimePeriod() { + return this.timePeriod; + } + + public void setTimePeriod(Class timePeriod) { + Object old = this.timePeriod; + this.timePeriod = timePeriod; + getEventSupport().firePropertyChange("timePeriod", old, this.timePeriod); + } + + public byte getDatasetType() { + return 6; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignTimeSeriesDataset clone = (JRDesignTimeSeriesDataset)super.clone(); + if (this.timeSeriesList != null) { + clone.timeSeriesList = new ArrayList(this.timeSeriesList.size()); + for (int i = 0; i < this.timeSeriesList.size(); i++) + clone.timeSeriesList.add(((JRTimeSeries)this.timeSeriesList.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesPlot.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesPlot.java new file mode 100644 index 0000000..3d016d9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignTimeSeriesPlot.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.charts.design; + +import java.awt.Color; +import net.sf.jasperreports.charts.base.JRBaseTimeSeriesPlot; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; + +public class JRDesignTimeSeriesPlot extends JRBaseTimeSeriesPlot { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TIME_AXIS_LABEL_COLOR = "timeAxisLabelColor"; + + public static final String PROPERTY_TIME_AXIS_LABEL_EXPRESSION = "timeAxisLabelExpression"; + + public static final String PROPERTY_TIME_AXIS_LABEL_FONT = "timeAxisLabelFont"; + + public static final String PROPERTY_TIME_AXIS_LINE_COLOR = "timeAxisLineColor"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_COLOR = "timeAxisTickLabelColor"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_FONT = "timeAxisTickLabelFont"; + + public static final String PROPERTY_TIME_AXIS_TICK_LABEL_MASK = "timeAxisTickLabelMask"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_COLOR = "valueAxisLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_EXPRESSION = "valueAxisLabelExpression"; + + public static final String PROPERTY_VALUE_AXIS_LABEL_FONT = "valueAxisLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_LINE_COLOR = "valueAxisLineColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_COLOR = "valueAxisTickLabelColor"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_FONT = "valueAxisTickLabelFont"; + + public static final String PROPERTY_VALUE_AXIS_TICK_LABEL_MASK = "valueAxisTickLabelMask"; + + public JRDesignTimeSeriesPlot(JRChartPlot plot, JRChart chart) { + super(plot, chart); + } + + public void setTimeAxisLabelExpression(JRExpression timeAxisLabelExpression) { + Object old = this.timeAxisLabelExpression; + this.timeAxisLabelExpression = timeAxisLabelExpression; + getEventSupport().firePropertyChange("timeAxisLabelExpression", old, this.timeAxisLabelExpression); + } + + public void setTimeAxisLabelFont(JRFont timeAxisLabelFont) { + Object old = this.timeAxisLabelFont; + this.timeAxisLabelFont = timeAxisLabelFont; + getEventSupport().firePropertyChange("timeAxisLabelFont", old, this.timeAxisLabelFont); + } + + public void setTimeAxisLabelColor(Color timeAxisLabelColor) { + Object old = this.timeAxisLabelColor; + this.timeAxisLabelColor = timeAxisLabelColor; + getEventSupport().firePropertyChange("timeAxisLabelColor", old, this.timeAxisLabelColor); + } + + public void setTimeAxisTickLabelFont(JRFont timeAxisTickLabelFont) { + Object old = this.timeAxisTickLabelFont; + this.timeAxisTickLabelFont = timeAxisTickLabelFont; + getEventSupport().firePropertyChange("timeAxisTickLabelFont", old, this.timeAxisTickLabelFont); + } + + public void setTimeAxisTickLabelColor(Color timeAxisTickLabelColor) { + Object old = this.timeAxisTickLabelColor; + this.timeAxisTickLabelColor = timeAxisTickLabelColor; + getEventSupport().firePropertyChange("timeAxisTickLabelColor", old, this.timeAxisTickLabelColor); + } + + public void setTimeAxisTickLabelMask(String timeAxisTickLabelMask) { + Object old = this.timeAxisTickLabelMask; + this.timeAxisTickLabelMask = timeAxisTickLabelMask; + getEventSupport().firePropertyChange("timeAxisTickLabelMask", old, this.timeAxisTickLabelMask); + } + + public void setTimeAxisLineColor(Color timeAxisLineColor) { + Object old = this.timeAxisLineColor; + this.timeAxisLineColor = timeAxisLineColor; + getEventSupport().firePropertyChange("timeAxisLineColor", old, this.timeAxisLineColor); + } + + public void setValueAxisLabelExpression(JRExpression valueAxisLabelExpression) { + Object old = this.valueAxisLabelExpression; + this.valueAxisLabelExpression = valueAxisLabelExpression; + getEventSupport().firePropertyChange("valueAxisLabelExpression", old, this.valueAxisLabelExpression); + } + + public void setValueAxisLabelFont(JRFont valueAxisLabelFont) { + Object old = this.valueAxisLabelFont; + this.valueAxisLabelFont = valueAxisLabelFont; + getEventSupport().firePropertyChange("valueAxisLabelFont", old, this.valueAxisLabelFont); + } + + public void setValueAxisLabelColor(Color valueAxisLabelColor) { + Object old = this.valueAxisLabelColor; + this.valueAxisLabelColor = valueAxisLabelColor; + getEventSupport().firePropertyChange("valueAxisLabelColor", old, this.valueAxisLabelColor); + } + + public void setValueAxisTickLabelFont(JRFont valueAxisTickLabelFont) { + Object old = this.valueAxisTickLabelFont; + this.valueAxisTickLabelFont = valueAxisTickLabelFont; + getEventSupport().firePropertyChange("valueAxisTickLabelFont", old, this.valueAxisTickLabelFont); + } + + public void setValueAxisTickLabelColor(Color valueAxisTickLabelColor) { + Object old = this.valueAxisTickLabelColor; + this.valueAxisTickLabelColor = valueAxisTickLabelColor; + getEventSupport().firePropertyChange("valueAxisTickLabelColor", old, this.valueAxisTickLabelColor); + } + + public void setValueAxisTickLabelMask(String valueAxisTickLabelMask) { + Object old = this.valueAxisTickLabelMask; + this.valueAxisTickLabelMask = valueAxisTickLabelMask; + getEventSupport().firePropertyChange("valueAxisTickLabelMask", old, this.valueAxisTickLabelMask); + } + + public void setValueAxisLineColor(Color valueAxisLineColor) { + Object old = this.valueAxisLineColor; + this.valueAxisLineColor = valueAxisLineColor; + getEventSupport().firePropertyChange("valueAxisLineColor", old, this.valueAxisLineColor); + } + + public void setTimeAxisFormat(JRAxisFormat axisFormat) { + setTimeAxisLabelFont(axisFormat.getLabelFont()); + setTimeAxisLabelColor(axisFormat.getLabelColor()); + setTimeAxisTickLabelFont(axisFormat.getTickLabelFont()); + setTimeAxisTickLabelColor(axisFormat.getTickLabelColor()); + setTimeAxisTickLabelMask(axisFormat.getTickLabelMask()); + setTimeAxisLineColor(axisFormat.getLineColor()); + } + + public void setValueAxisFormat(JRAxisFormat axisFormat) { + setValueAxisLabelFont(axisFormat.getLabelFont()); + setValueAxisLabelColor(axisFormat.getLabelColor()); + setValueAxisTickLabelFont(axisFormat.getTickLabelFont()); + setValueAxisTickLabelColor(axisFormat.getTickLabelColor()); + setValueAxisTickLabelMask(axisFormat.getTickLabelMask()); + setValueAxisLineColor(axisFormat.getLineColor()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignValueDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignValueDataset.java new file mode 100644 index 0000000..8ab0fb0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignValueDataset.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.charts.design; + +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignValueDataset extends JRDesignChartDataset implements JRValueDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_VALUE_EXPRESSION = "valueExpression"; + + protected JRExpression valueExpression = null; + + public JRDesignValueDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public void setValueExpression(JRExpression valueExpression) { + Object old = this.valueExpression; + this.valueExpression = valueExpression; + getEventSupport().firePropertyChange("valueExpression", old, this.valueExpression); + } + + public byte getDatasetType() { + return 8; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignValueDataset clone = (JRDesignValueDataset)super.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyDataset.java new file mode 100644 index 0000000..0a4314e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyDataset.java @@ -0,0 +1,70 @@ +package net.sf.jasperreports.charts.design; + +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignXyDataset extends JRDesignChartDataset implements JRXyDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_XY_SERIES = "xySeries"; + + private List xySeriesList = new ArrayList(); + + public JRDesignXyDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRXySeries[] getSeries() { + JRXySeries[] xySeriesArray = new JRXySeries[this.xySeriesList.size()]; + this.xySeriesList.toArray((Object[])xySeriesArray); + return xySeriesArray; + } + + public List getSeriesList() { + return this.xySeriesList; + } + + public void addXySeries(JRXySeries xySeries) { + this.xySeriesList.add(xySeries); + getEventSupport().fireCollectionElementAddedEvent("xySeries", xySeries, this.xySeriesList.size() - 1); + } + + public JRXySeries removeXySeries(JRXySeries xySeries) { + if (xySeries != null) { + int idx = this.xySeriesList.indexOf(xySeries); + if (idx >= 0) { + this.xySeriesList.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("xySeries", xySeries, idx); + } + } + return xySeries; + } + + public byte getDatasetType() { + return 3; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignXyDataset clone = (JRDesignXyDataset)super.clone(); + if (this.xySeriesList != null) { + clone.xySeriesList = new ArrayList(this.xySeriesList.size()); + for (int i = 0; i < this.xySeriesList.size(); i++) + clone.xySeriesList.add(((JRXySeries)this.xySeriesList.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyzDataset.java b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyzDataset.java new file mode 100644 index 0000000..0a50076 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/design/JRDesignXyzDataset.java @@ -0,0 +1,71 @@ +package net.sf.jasperreports.charts.design; + +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRDesignChartDataset; +import net.sf.jasperreports.engine.design.JRVerifier; + +public class JRDesignXyzDataset extends JRDesignChartDataset implements JRXyzDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_XYZ_SERIES = "xyzSeries"; + + private List xyzSeriesList = new ArrayList(); + + public JRDesignXyzDataset(JRChartDataset dataset) { + super(dataset); + } + + public JRXyzSeries[] getSeries() { + JRXyzSeries[] xyzSeriesArray = new JRXyzSeries[this.xyzSeriesList.size()]; + this.xyzSeriesList.toArray((Object[])xyzSeriesArray); + return xyzSeriesArray; + } + + public List getSeriesList() { + return this.xyzSeriesList; + } + + public void addXyzSeries(JRXyzSeries xyzSeries) { + this.xyzSeriesList.add(xyzSeries); + getEventSupport().fireCollectionElementAddedEvent("xyzSeries", xyzSeries, this.xyzSeriesList.size() - 1); + } + + public JRXyzSeries removeXyzSeries(JRXyzSeries xyzSeries) { + if (xyzSeries != null) { + int idx = this.xyzSeriesList.indexOf(xyzSeries); + if (idx >= 0) { + this.xyzSeriesList.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("xyzSeries", xyzSeries, idx); + } + } + return xyzSeries; + } + + public byte getDatasetType() { + return 4; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } + + public Object clone() { + JRDesignXyzDataset clone = (JRDesignXyzDataset)super.clone(); + if (this.xyzSeriesList != null) { + clone.xyzSeriesList = new ArrayList(this.xyzSeriesList.size()); + for (int i = 0; i < this.xyzSeriesList.size(); i++) + clone.xyzSeriesList.add(((JRXySeries)this.xyzSeriesList.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillAreaPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillAreaPlot.java new file mode 100644 index 0000000..b8c3f19 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillAreaPlot.java @@ -0,0 +1,154 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillAreaPlot extends JRFillChartPlot implements JRAreaPlot { + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected Color categoryAxisLineColor = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected Color valueAxisLineColor = null; + + public JRFillAreaPlot(JRAreaPlot areaPlot, JRFillObjectFactory factory) { + super((JRChartPlot)areaPlot, factory); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = areaPlot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = areaPlot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisLineColor = areaPlot.getOwnCategoryAxisLineColor(); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = areaPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)areaPlot.getChart(), areaPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = areaPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisLineColor = areaPlot.getOwnValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return ((JRAreaPlot)this.parent).getCategoryAxisLabelExpression(); + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public void setCategoryAxisLabelFont(JRFont font) {} + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public void setCategoryAxisLabelColor(Color color) {} + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public void setCategoryAxisTickLabelFont(JRFont font) {} + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public void setCategoryAxisTickLabelColor(Color color) {} + + public String getCategoryAxisTickLabelMask() { + return ((JRAreaPlot)this.parent).getCategoryAxisTickLabelMask(); + } + + public void setCategoryAxisTickLabelMask(String mask) {} + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public void setCategoryAxisLineColor(Color color) {} + + public JRExpression getValueAxisLabelExpression() { + return ((JRAreaPlot)this.parent).getValueAxisLabelExpression(); + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public void setValueAxisLabelFont(JRFont font) {} + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public void setValueAxisLabelColor(Color color) {} + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public void setValueAxisTickLabelFont(JRFont font) {} + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public void setValueAxisTickLabelColor(Color color) {} + + public String getValueAxisTickLabelMask() { + return ((JRAreaPlot)this.parent).getValueAxisTickLabelMask(); + } + + public void setValueAxisTickLabelMask(String mask) {} + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public void setValueAxisLineColor(Color color) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBar3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBar3DPlot.java new file mode 100644 index 0000000..dd9f859 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBar3DPlot.java @@ -0,0 +1,172 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillBar3DPlot extends JRFillChartPlot implements JRBar3DPlot { + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected Color categoryAxisLineColor = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected Color valueAxisLineColor = null; + + public JRFillBar3DPlot(JRBar3DPlot barPlot, JRFillObjectFactory factory) { + super((JRChartPlot)barPlot, factory); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = barPlot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = barPlot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisLineColor = barPlot.getOwnCategoryAxisLineColor(); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = barPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = barPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisLineColor = barPlot.getOwnValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return ((JRBar3DPlot)this.parent).getCategoryAxisLabelExpression(); + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public void setCategoryAxisLabelFont(JRFont font) {} + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public void setCategoryAxisLabelColor(Color color) {} + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public void setCategoryAxisTickLabelFont(JRFont font) {} + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public void setCategoryAxisTickLabelColor(Color color) {} + + public String getCategoryAxisTickLabelMask() { + return ((JRBar3DPlot)this.parent).getCategoryAxisTickLabelMask(); + } + + public void setCategoryAxisTickLabelMask(String mask) {} + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public void setCategoryAxisLineColor(Color color) {} + + public JRExpression getValueAxisLabelExpression() { + return ((JRBar3DPlot)this.parent).getValueAxisLabelExpression(); + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public void setValueAxisLabelFont(JRFont font) {} + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public void setValueAxisLabelColor(Color color) {} + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public void setValueAxisTickLabelFont(JRFont font) {} + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public void setValueAxisTickLabelColor(Color color) {} + + public String getValueAxisTickLabelMask() { + return ((JRBar3DPlot)this.parent).getValueAxisTickLabelMask(); + } + + public void setValueAxisTickLabelMask(String mask) {} + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public void setValueAxisLineColor(Color color) {} + + public double getXOffset() { + return ((JRBar3DPlot)this.parent).getXOffset(); + } + + public void setXOffset(double xOffset) {} + + public double getYOffset() { + return ((JRBar3DPlot)this.parent).getYOffset(); + } + + public void setYOffset(double yOffset) {} + + public boolean isShowLabels() { + return ((JRBar3DPlot)this.parent).isShowLabels(); + } + + public void setShowLabels(boolean isShowLabels) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBarPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBarPlot.java new file mode 100644 index 0000000..74cd8a2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBarPlot.java @@ -0,0 +1,172 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillBarPlot extends JRFillChartPlot implements JRBarPlot { + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected Color categoryAxisLineColor = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected Color valueAxisLineColor = null; + + public JRFillBarPlot(JRBarPlot barPlot, JRFillObjectFactory factory) { + super((JRChartPlot)barPlot, factory); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = barPlot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = barPlot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisLineColor = barPlot.getOwnCategoryAxisLineColor(); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = barPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)barPlot.getChart(), barPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = barPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisLineColor = barPlot.getOwnValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return ((JRBarPlot)this.parent).getCategoryAxisLabelExpression(); + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public void setCategoryAxisLabelFont(JRFont font) {} + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public void setCategoryAxisLabelColor(Color color) {} + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public void setCategoryAxisTickLabelFont(JRFont font) {} + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public void setCategoryAxisTickLabelColor(Color color) {} + + public String getCategoryAxisTickLabelMask() { + return ((JRBarPlot)this.parent).getCategoryAxisTickLabelMask(); + } + + public void setCategoryAxisTickLabelMask(String mask) {} + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public void setCategoryAxisLineColor(Color color) {} + + public JRExpression getValueAxisLabelExpression() { + return ((JRBarPlot)this.parent).getValueAxisLabelExpression(); + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public void setValueAxisLabelFont(JRFont font) {} + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public void setValueAxisLabelColor(Color color) {} + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public void setValueAxisTickLabelFont(JRFont font) {} + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public void setValueAxisTickLabelColor(Color color) {} + + public String getValueAxisTickLabelMask() { + return ((JRBarPlot)this.parent).getValueAxisTickLabelMask(); + } + + public void setValueAxisTickLabelMask(String mask) {} + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public void setValueAxisLineColor(Color color) {} + + public boolean isShowTickMarks() { + return ((JRBarPlot)this.parent).isShowTickMarks(); + } + + public void setShowTickMarks(boolean isShowTickMarks) {} + + public boolean isShowTickLabels() { + return ((JRBarPlot)this.parent).isShowTickLabels(); + } + + public void setShowTickLabels(boolean isShowTickLabels) {} + + public boolean isShowLabels() { + return ((JRBarPlot)this.parent).isShowLabels(); + } + + public void setShowLabels(boolean isShowLabels) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBubblePlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBubblePlot.java new file mode 100644 index 0000000..0cd7bdb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillBubblePlot.java @@ -0,0 +1,136 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRXAxisFormat; +import net.sf.jasperreports.charts.JRYAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillBubblePlot extends JRFillChartPlot implements JRBubblePlot { + protected JRFont xAxisLabelFont = null; + + protected Color xAxisLabelColor = null; + + protected JRFont xAxisTickLabelFont = null; + + protected Color xAxisTickLabelColor = null; + + protected Color xAxisLineColor = null; + + protected JRFont yAxisLabelFont = null; + + protected Color yAxisLabelColor = null; + + protected JRFont yAxisTickLabelFont = null; + + protected Color yAxisTickLabelColor = null; + + protected Color yAxisLineColor = null; + + public JRFillBubblePlot(JRBubblePlot bubblePlot, JRFillObjectFactory factory) { + super((JRChartPlot)bubblePlot, factory); + this.xAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getXAxisLabelFont()); + this.xAxisLabelColor = bubblePlot.getOwnXAxisLabelColor(); + this.xAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getXAxisTickLabelFont()); + this.xAxisTickLabelColor = bubblePlot.getOwnXAxisTickLabelColor(); + this.xAxisLineColor = bubblePlot.getXAxisLineColor(); + this.yAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getYAxisLabelFont()); + this.yAxisLabelColor = bubblePlot.getOwnYAxisLabelColor(); + this.yAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)bubblePlot.getChart(), bubblePlot.getYAxisTickLabelFont()); + this.yAxisTickLabelColor = bubblePlot.getOwnYAxisTickLabelColor(); + this.yAxisLineColor = bubblePlot.getYAxisLineColor(); + } + + public JRExpression getXAxisLabelExpression() { + return ((JRBubblePlot)this.parent).getXAxisLabelExpression(); + } + + public JRFont getXAxisLabelFont() { + return this.xAxisLabelFont; + } + + public Color getXAxisLabelColor() { + return JRStyleResolver.getXAxisLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLabelColor() { + return this.xAxisLabelColor; + } + + public JRFont getXAxisTickLabelFont() { + return this.xAxisTickLabelFont; + } + + public Color getXAxisTickLabelColor() { + return JRStyleResolver.getXAxisTickLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisTickLabelColor() { + return this.xAxisTickLabelColor; + } + + public String getXAxisTickLabelMask() { + return ((JRBubblePlot)this.parent).getXAxisTickLabelMask(); + } + + public Color getXAxisLineColor() { + return JRStyleResolver.getXAxisLineColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLineColor() { + return this.xAxisLineColor; + } + + public JRExpression getYAxisLabelExpression() { + return ((JRBubblePlot)this.parent).getYAxisLabelExpression(); + } + + public JRFont getYAxisLabelFont() { + return this.yAxisLabelFont; + } + + public Color getYAxisLabelColor() { + return JRStyleResolver.getYAxisLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLabelColor() { + return this.yAxisLabelColor; + } + + public JRFont getYAxisTickLabelFont() { + return this.yAxisTickLabelFont; + } + + public Color getYAxisTickLabelColor() { + return JRStyleResolver.getYAxisTickLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisTickLabelColor() { + return this.yAxisTickLabelColor; + } + + public String getYAxisTickLabelMask() { + return ((JRBubblePlot)this.parent).getYAxisTickLabelMask(); + } + + public Color getYAxisLineColor() { + return JRStyleResolver.getYAxisLineColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLineColor() { + return this.yAxisLineColor; + } + + public int getScaleType() { + return ((JRBubblePlot)this.parent).getScaleType(); + } + + public void setScaleType(int scaleType) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCandlestickPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCandlestickPlot.java new file mode 100644 index 0000000..6808a34 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCandlestickPlot.java @@ -0,0 +1,158 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRTimeAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillCandlestickPlot extends JRFillChartPlot implements JRCandlestickPlot { + protected JRFont timeAxisLabelFont = null; + + protected Color timeAxisLabelColor = null; + + protected JRFont timeAxisTickLabelFont = null; + + protected Color timeAxisTickLabelColor = null; + + protected Color timeAxisLineColor = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected Color valueAxisLineColor = null; + + public JRFillCandlestickPlot(JRCandlestickPlot candlestickPlot, JRFillObjectFactory factory) { + super((JRChartPlot)candlestickPlot, factory); + this.timeAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getTimeAxisLabelFont()); + this.timeAxisLabelColor = candlestickPlot.getOwnTimeAxisLabelColor(); + this.timeAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getTimeAxisTickLabelFont()); + this.timeAxisTickLabelColor = candlestickPlot.getOwnTimeAxisTickLabelColor(); + this.timeAxisLineColor = candlestickPlot.getTimeAxisLineColor(); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = candlestickPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)candlestickPlot.getChart(), candlestickPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = candlestickPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisLineColor = candlestickPlot.getValueAxisTickLabelColor(); + } + + public JRExpression getTimeAxisLabelExpression() { + return ((JRCandlestickPlot)this.parent).getTimeAxisLabelExpression(); + } + + public JRFont getTimeAxisLabelFont() { + return this.timeAxisLabelFont; + } + + public void setTimeAxisLabelFont(JRFont font) {} + + public Color getTimeAxisLabelColor() { + return JRStyleResolver.getTimeAxisLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLabelColor() { + return this.timeAxisLabelColor; + } + + public void setTimeAxisLabelColor(Color color) {} + + public JRFont getTimeAxisTickLabelFont() { + return this.timeAxisTickLabelFont; + } + + public void setTimeAxisTickLabelFont(JRFont font) {} + + public Color getTimeAxisTickLabelColor() { + return JRStyleResolver.getTimeAxisTickLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisTickLabelColor() { + return this.timeAxisTickLabelColor; + } + + public void setTimeAxisTickLabelColor(Color color) {} + + public String getTimeAxisTickLabelMask() { + return ((JRCandlestickPlot)this.parent).getTimeAxisTickLabelMask(); + } + + public void setTimeAxisTickLabelMask(String mask) {} + + public Color getTimeAxisLineColor() { + return JRStyleResolver.getTimeAxisLineColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLineColor() { + return this.timeAxisLineColor; + } + + public void setTimeAxisLineColor(Color color) {} + + public JRExpression getValueAxisLabelExpression() { + return ((JRCandlestickPlot)this.parent).getValueAxisLabelExpression(); + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public void setValueAxisLabelFont(JRFont font) {} + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public void setValueAxisLabelColor(Color color) {} + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public void setValueAxisTickLabelFont(JRFont font) {} + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public void setValueAxisTickLabelColor(Color color) {} + + public String getValueAxisTickLabelMask() { + return ((JRCandlestickPlot)this.parent).getValueAxisTickLabelMask(); + } + + public void setValueAxisTickLabelMask(String mask) {} + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public void setValueAxisLineColor(Color color) {} + + public boolean isShowVolume() { + return ((JRCandlestickPlot)this.parent).isShowVolume(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategoryDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategoryDataset.java new file mode 100644 index 0000000..5cac426 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategoryDataset.java @@ -0,0 +1,120 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.charts.util.CategoryLabelGenerator; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import org.jfree.data.category.DefaultCategoryDataset; +import org.jfree.data.general.Dataset; + +public class JRFillCategoryDataset extends JRFillChartDataset implements JRCategoryDataset { + protected JRFillCategorySeries[] categorySeries = null; + + private DefaultCategoryDataset dataset = null; + + private Map labelsMap = null; + + private Map itemHyperlinks; + + public JRFillCategoryDataset(JRCategoryDataset categoryDataset, JRFillObjectFactory factory) { + super((JRChartDataset)categoryDataset, factory); + JRCategorySeries[] srcCategorySeries = categoryDataset.getSeries(); + if (srcCategorySeries != null && srcCategorySeries.length > 0) { + this.categorySeries = new JRFillCategorySeries[srcCategorySeries.length]; + for (int i = 0; i < this.categorySeries.length; i++) + this.categorySeries[i] = (JRFillCategorySeries)factory.getCategorySeries(srcCategorySeries[i]); + } + } + + public JRCategorySeries[] getSeries() { + return (JRCategorySeries[])this.categorySeries; + } + + protected void customInitialize() { + this.dataset = null; + this.labelsMap = null; + this.itemHyperlinks = null; + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + if (this.categorySeries != null && this.categorySeries.length > 0) + for (int i = 0; i < this.categorySeries.length; i++) + this.categorySeries[i].evaluate(calculator); + } + + protected void customIncrement() { + if (this.categorySeries != null && this.categorySeries.length > 0) { + if (this.dataset == null) { + this.dataset = new DefaultCategoryDataset(); + this.labelsMap = new HashMap(); + this.itemHyperlinks = new HashMap(); + } + for (int i = 0; i < this.categorySeries.length; i++) { + JRFillCategorySeries crtCategorySeries = this.categorySeries[i]; + Comparable seriesName = crtCategorySeries.getSeries(); + if (seriesName == null) + throw new JRRuntimeException("Category series name is null."); + this.dataset.addValue(crtCategorySeries.getValue(), crtCategorySeries.getSeries(), crtCategorySeries.getCategory()); + if (crtCategorySeries.getLabelExpression() != null) { + Map seriesLabels = (Map)this.labelsMap.get(seriesName); + if (seriesLabels == null) { + seriesLabels = new HashMap(); + this.labelsMap.put(seriesName, seriesLabels); + } + seriesLabels.put(crtCategorySeries.getCategory(), crtCategorySeries.getLabel()); + } + if (crtCategorySeries.hasItemHyperlinks()) { + Map seriesLinks = (Map)this.itemHyperlinks.get(seriesName); + if (seriesLinks == null) { + seriesLinks = new HashMap(); + this.itemHyperlinks.put(seriesName, seriesLinks); + } + seriesLinks.put(crtCategorySeries.getCategory(), crtCategorySeries.getPrintItemHyperlink()); + } + } + } + } + + public Dataset getCustomDataset() { + return (Dataset)this.dataset; + } + + public byte getDatasetType() { + return 2; + } + + public CategoryLabelGenerator getLabelGenerator() { + return new CategoryLabelGenerator(this.labelsMap); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Map getItemHyperlinks() { + return this.itemHyperlinks; + } + + public boolean hasItemHyperlinks() { + boolean foundLinks = false; + if (this.categorySeries != null && this.categorySeries.length > 0) + for (int i = 0; i < this.categorySeries.length && !foundLinks; i++) { + JRFillCategorySeries serie = this.categorySeries[i]; + foundLinks = serie.hasItemHyperlinks(); + } + return foundLinks; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategorySeries.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategorySeries.java new file mode 100644 index 0000000..1da1e52 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillCategorySeries.java @@ -0,0 +1,100 @@ +package net.sf.jasperreports.charts.fill; + +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; +import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillCategorySeries implements JRCategorySeries { + protected JRCategorySeries parent = null; + + private Comparable series = null; + + private Comparable category = null; + + private Number value = null; + + private String label = null; + + private JRPrintHyperlink itemHyperlink; + + public JRFillCategorySeries(JRCategorySeries categorySeries, JRFillObjectFactory factory) { + factory.put(categorySeries, this); + this.parent = categorySeries; + } + + public JRExpression getSeriesExpression() { + return this.parent.getSeriesExpression(); + } + + public JRExpression getCategoryExpression() { + return this.parent.getCategoryExpression(); + } + + public JRExpression getValueExpression() { + return this.parent.getValueExpression(); + } + + public JRExpression getLabelExpression() { + return this.parent.getLabelExpression(); + } + + protected Comparable getSeries() { + return this.series; + } + + protected Comparable getCategory() { + return this.category; + } + + protected Number getValue() { + return this.value; + } + + protected String getLabel() { + return this.label; + } + + protected JRPrintHyperlink getPrintItemHyperlink() { + return this.itemHyperlink; + } + + protected void evaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.series = (Comparable)calculator.evaluate(getSeriesExpression()); + this.category = (Comparable)calculator.evaluate(getCategoryExpression()); + this.value = (Number)calculator.evaluate(getValueExpression()); + this.label = (String)calculator.evaluate(getLabelExpression()); + if (hasItemHyperlinks()) + evaluateItemHyperlink(calculator); + } + + protected void evaluateItemHyperlink(JRCalculator calculator) throws JRExpressionEvalException { + try { + this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); + } catch (JRExpressionEvalException e) { + throw e; + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + public boolean hasItemHyperlinks() { + return !JRHyperlinkHelper.isEmpty(getItemHyperlink()); + } + + public JRHyperlink getItemHyperlink() { + return this.parent.getItemHyperlink(); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillChartAxis.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillChartAxis.java new file mode 100644 index 0000000..83a007a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillChartAxis.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.charts.fill; + +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.fill.JRFillChart; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillChartAxis implements JRChartAxis { + protected JRChartAxis parent; + + protected JRFillChart fillChart = null; + + private static final long serialVersionUID = 10200L; + + public JRFillChartAxis(JRChartAxis axis, JRFillObjectFactory factory) { + factory.put(axis, this); + this.parent = axis; + this.fillChart = (JRFillChart)factory.getVisitResult((JRVisitable)axis.getChart()); + } + + public JRFillChart getFillChart() { + return this.fillChart; + } + + public JRChart getChart() { + return this.parent.getChart(); + } + + public byte getPosition() { + return this.parent.getPosition(); + } + + public Object clone(JRChart parentChart) { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowDataset.java new file mode 100644 index 0000000..ba98912 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowDataset.java @@ -0,0 +1,240 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; +import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import org.jfree.data.general.Dataset; +import org.jfree.data.xy.DefaultHighLowDataset; + +public class JRFillHighLowDataset extends JRFillChartDataset implements JRHighLowDataset { + private String series = null; + + private List elements = new ArrayList(); + + private Date date = null; + + private Number high = null; + + private Number low = null; + + private Number open = null; + + private Number close = null; + + private Number volume = null; + + private JRPrintHyperlink itemHyperlink; + + private List itemHyperlinks; + + public JRFillHighLowDataset(JRHighLowDataset dataset, JRFillObjectFactory factory) { + super((JRChartDataset)dataset, factory); + } + + protected void customInitialize() { + this.elements = new ArrayList(); + this.itemHyperlinks = new ArrayList(); + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.series = (String)calculator.evaluate(getSeriesExpression()); + this.date = (Date)calculator.evaluate(getDateExpression()); + this.high = (Number)calculator.evaluate(getHighExpression()); + this.low = (Number)calculator.evaluate(getLowExpression()); + this.open = (Number)calculator.evaluate(getOpenExpression()); + this.close = (Number)calculator.evaluate(getCloseExpression()); + this.volume = (Number)calculator.evaluate(getVolumeExpression()); + if (hasItemHyperlink()) + evaluateSectionHyperlink(calculator); + } + + protected void evaluateSectionHyperlink(JRCalculator calculator) throws JRExpressionEvalException { + try { + this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); + } catch (JRExpressionEvalException e) { + throw e; + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + protected void customIncrement() { + this.elements.add(new HighLowElement(this.date, this.high, this.low, this.open, this.close, this.volume)); + if (hasItemHyperlink()) + this.itemHyperlinks.add(this.itemHyperlink); + } + + public Dataset getCustomDataset() { + int size = this.elements.size(); + if (size > 0) { + Date[] dateArray = new Date[size]; + double[] highArray = new double[size]; + double[] lowArray = new double[size]; + double[] openArray = new double[size]; + double[] closeArray = new double[size]; + double[] volumeArray = new double[size]; + for (int i = 0; i < this.elements.size(); i++) { + HighLowElement bean = this.elements.get(i); + dateArray[i] = new Date(bean.getDate().getTime()); + highArray[i] = bean.getHigh().doubleValue(); + lowArray[i] = bean.getLow().doubleValue(); + openArray[i] = bean.getOpen().doubleValue(); + closeArray[i] = bean.getClose().doubleValue(); + volumeArray[i] = bean.getVolume().doubleValue(); + } + return (Dataset)new DefaultHighLowDataset(this.series, dateArray, highArray, lowArray, openArray, closeArray, volumeArray); + } + return null; + } + + public JRExpression getSeriesExpression() { + return ((JRHighLowDataset)this.parent).getSeriesExpression(); + } + + public JRExpression getDateExpression() { + return ((JRHighLowDataset)this.parent).getDateExpression(); + } + + public JRExpression getHighExpression() { + return ((JRHighLowDataset)this.parent).getHighExpression(); + } + + public JRExpression getLowExpression() { + return ((JRHighLowDataset)this.parent).getLowExpression(); + } + + public JRExpression getOpenExpression() { + return ((JRHighLowDataset)this.parent).getOpenExpression(); + } + + public JRExpression getCloseExpression() { + return ((JRHighLowDataset)this.parent).getCloseExpression(); + } + + public JRExpression getVolumeExpression() { + return ((JRHighLowDataset)this.parent).getVolumeExpression(); + } + + private static class HighLowElement { + Date date; + + Number high; + + Number low; + + Number open; + + Number close; + + Number volume; + + public HighLowElement(Date date, Number high, Number low, Number open, Number close, Number volume) { + if (date == null) + throw new JRRuntimeException("Date value is null in high-low series."); + this.date = date; + if (high == null) + throw new JRRuntimeException("High value is null in high-low series."); + this.high = high; + if (low == null) + throw new JRRuntimeException("Low value is null in high-low series."); + this.low = low; + if (open == null) + throw new JRRuntimeException("Open value is null in high-low series."); + this.open = open; + if (close == null) + throw new JRRuntimeException("Close value is null in high-low series."); + this.close = close; + if (volume == null) + throw new JRRuntimeException("Volume value is null in high-low series."); + this.volume = volume; + } + + public Date getDate() { + return this.date; + } + + public void setDate(Date date) { + this.date = date; + } + + public Number getHigh() { + return this.high; + } + + public void setHigh(Number high) { + this.high = high; + } + + public Number getLow() { + return this.low; + } + + public void setLow(Number low) { + this.low = low; + } + + public Number getOpen() { + return this.open; + } + + public void setOpen(Number open) { + this.open = open; + } + + public Number getClose() { + return this.close; + } + + public void setClose(Number close) { + this.close = close; + } + + public Number getVolume() { + return this.volume; + } + + public void setVolume(Number volume) { + this.volume = volume; + } + } + + public byte getDatasetType() { + return 7; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRHyperlink getItemHyperlink() { + return ((JRHighLowDataset)this.parent).getItemHyperlink(); + } + + public boolean hasItemHyperlink() { + return !JRHyperlinkHelper.isEmpty(getItemHyperlink()); + } + + public List getItemHyperlinks() { + return this.itemHyperlinks; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowPlot.java new file mode 100644 index 0000000..763c864 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillHighLowPlot.java @@ -0,0 +1,162 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRTimeAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillHighLowPlot extends JRFillChartPlot implements JRHighLowPlot { + protected JRFont timeAxisLabelFont = null; + + protected Color timeAxisLabelColor = null; + + protected JRFont timeAxisTickLabelFont = null; + + protected Color timeAxisTickLabelColor = null; + + protected Color timeAxisLineColor = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected Color valueAxisLineColor = null; + + public JRFillHighLowPlot(JRHighLowPlot highLowPlot, JRFillObjectFactory factory) { + super((JRChartPlot)highLowPlot, factory); + this.timeAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getTimeAxisLabelFont()); + this.timeAxisLabelColor = highLowPlot.getOwnTimeAxisLabelColor(); + this.timeAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getTimeAxisTickLabelFont()); + this.timeAxisTickLabelColor = highLowPlot.getOwnTimeAxisTickLabelColor(); + this.timeAxisLineColor = highLowPlot.getTimeAxisLineColor(); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getValueAxisLabelFont()); + this.valueAxisLabelColor = highLowPlot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)highLowPlot.getChart(), highLowPlot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = highLowPlot.getOwnValueAxisTickLabelColor(); + this.valueAxisLineColor = highLowPlot.getValueAxisTickLabelColor(); + } + + public JRExpression getTimeAxisLabelExpression() { + return ((JRHighLowPlot)this.parent).getTimeAxisLabelExpression(); + } + + public JRFont getTimeAxisLabelFont() { + return this.timeAxisLabelFont; + } + + public void setTimeAxisLabelFont(JRFont font) {} + + public Color getTimeAxisLabelColor() { + return JRStyleResolver.getTimeAxisLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLabelColor() { + return this.timeAxisLabelColor; + } + + public void setTimeAxisLabelColor(Color color) {} + + public JRFont getTimeAxisTickLabelFont() { + return this.timeAxisTickLabelFont; + } + + public void setTimeAxisTickLabelFont(JRFont font) {} + + public Color getTimeAxisTickLabelColor() { + return JRStyleResolver.getTimeAxisTickLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisTickLabelColor() { + return this.timeAxisTickLabelColor; + } + + public void setTimeAxisTickLabelColor(Color color) {} + + public String getTimeAxisTickLabelMask() { + return ((JRHighLowPlot)this.parent).getTimeAxisTickLabelMask(); + } + + public void setTimeAxisTickLabelMask(String mask) {} + + public Color getTimeAxisLineColor() { + return JRStyleResolver.getTimeAxisLineColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLineColor() { + return this.timeAxisLineColor; + } + + public void setTimeAxisLineColor(Color color) {} + + public JRExpression getValueAxisLabelExpression() { + return ((JRHighLowPlot)this.parent).getValueAxisLabelExpression(); + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public void setValueAxisLabelFont(JRFont font) {} + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public void setValueAxisLabelColor(Color color) {} + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public void setValueAxisTickLabelFont(JRFont font) {} + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public void setValueAxisTickLabelColor(Color color) {} + + public String getValueAxisTickLabelMask() { + return ((JRHighLowPlot)this.parent).getValueAxisTickLabelMask(); + } + + public void setValueAxisTickLabelMask(String mask) {} + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public void setValueAxisLineColor(Color color) {} + + public boolean isShowOpenTicks() { + return ((JRHighLowPlot)this.parent).isShowOpenTicks(); + } + + public boolean isShowCloseTicks() { + return ((JRHighLowPlot)this.parent).isShowCloseTicks(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillLinePlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillLinePlot.java new file mode 100644 index 0000000..49eb70e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillLinePlot.java @@ -0,0 +1,166 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillLinePlot extends JRFillChartPlot implements JRLinePlot { + protected JRFont categoryAxisLabelFont = null; + + protected Color categoryAxisLabelColor = null; + + protected JRFont categoryAxisTickLabelFont = null; + + protected Color categoryAxisTickLabelColor = null; + + protected Color categoryAxisLineColor = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected Color valueAxisLineColor = null; + + public JRFillLinePlot(JRLinePlot plot, JRFillObjectFactory factory) { + super((JRChartPlot)plot, factory); + this.categoryAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getCategoryAxisLabelFont()); + this.categoryAxisLabelColor = plot.getOwnCategoryAxisLabelColor(); + this.categoryAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getCategoryAxisTickLabelFont()); + this.categoryAxisTickLabelColor = plot.getOwnCategoryAxisTickLabelColor(); + this.categoryAxisLineColor = plot.getOwnCategoryAxisLineColor(); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getValueAxisLabelFont()); + this.valueAxisLabelColor = plot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = plot.getOwnValueAxisTickLabelColor(); + this.valueAxisLineColor = plot.getOwnValueAxisLineColor(); + } + + public JRExpression getCategoryAxisLabelExpression() { + return ((JRLinePlot)this.parent).getCategoryAxisLabelExpression(); + } + + public JRFont getCategoryAxisLabelFont() { + return this.categoryAxisLabelFont; + } + + public void setCategoryAxisLabelFont(JRFont font) {} + + public Color getCategoryAxisLabelColor() { + return JRStyleResolver.getCategoryAxisLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLabelColor() { + return this.categoryAxisLabelColor; + } + + public void setCategoryAxisLabelColor(Color color) {} + + public JRFont getCategoryAxisTickLabelFont() { + return this.categoryAxisTickLabelFont; + } + + public void setCategoryAxisTickLabelFont(JRFont font) {} + + public Color getCategoryAxisTickLabelColor() { + return JRStyleResolver.getCategoryAxisTickLabelColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisTickLabelColor() { + return this.categoryAxisTickLabelColor; + } + + public void setCategoryAxisTickLabelColor(Color color) {} + + public String getCategoryAxisTickLabelMask() { + return ((JRLinePlot)this.parent).getCategoryAxisTickLabelMask(); + } + + public void setCategoryAxisTickLabelMask(String mask) {} + + public Color getCategoryAxisLineColor() { + return JRStyleResolver.getCategoryAxisLineColor((JRCategoryAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnCategoryAxisLineColor() { + return this.categoryAxisLineColor; + } + + public void setCategoryAxisLineColor(Color color) {} + + public JRExpression getValueAxisLabelExpression() { + return ((JRLinePlot)this.parent).getValueAxisLabelExpression(); + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public void setValueAxisLabelFont(JRFont font) {} + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public void setValueAxisLabelColor(Color color) {} + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public void setValueAxisTickLabelFont(JRFont font) {} + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public void setValueAxisTickLabelColor(Color color) {} + + public String getValueAxisTickLabelMask() { + return ((JRLinePlot)this.parent).getValueAxisTickLabelMask(); + } + + public void setValueAxisTickLabelMask(String mask) {} + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public void setValueAxisLineColor(Color color) {} + + public boolean isShowShapes() { + return ((JRLinePlot)this.parent).isShowShapes(); + } + + public void setShowShapes(boolean value) {} + + public boolean isShowLines() { + return ((JRLinePlot)this.parent).isShowLines(); + } + + public void setShowLines(boolean value) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMeterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMeterPlot.java new file mode 100644 index 0000000..6950452 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMeterPlot.java @@ -0,0 +1,56 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import java.util.List; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillMeterPlot extends JRFillChartPlot implements JRMeterPlot { + public JRFillMeterPlot(JRMeterPlot meterPlot, JRFillObjectFactory factory) { + super((JRChartPlot)meterPlot, factory); + } + + public JRDataRange getDataRange() { + return ((JRMeterPlot)this.parent).getDataRange(); + } + + public JRValueDisplay getValueDisplay() { + return ((JRMeterPlot)this.parent).getValueDisplay(); + } + + public byte getShape() { + return ((JRMeterPlot)this.parent).getShape(); + } + + public List getIntervals() { + return ((JRMeterPlot)this.parent).getIntervals(); + } + + public int getMeterAngle() { + return ((JRMeterPlot)this.parent).getMeterAngle(); + } + + public String getUnits() { + return ((JRMeterPlot)this.parent).getUnits(); + } + + public double getTickInterval() { + return ((JRMeterPlot)this.parent).getTickInterval(); + } + + public Color getMeterBackgroundColor() { + return ((JRMeterPlot)this.parent).getMeterBackgroundColor(); + } + + public Color getNeedleColor() { + return ((JRMeterPlot)this.parent).getNeedleColor(); + } + + public Color getTickColor() { + return ((JRMeterPlot)this.parent).getTickColor(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMultiAxisPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMultiAxisPlot.java new file mode 100644 index 0000000..4c89791 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillMultiAxisPlot.java @@ -0,0 +1,34 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.charts.JRMultiAxisPlot; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillMultiAxisPlot extends JRFillChartPlot implements JRMultiAxisPlot { + private List axes; + + public JRFillMultiAxisPlot(JRMultiAxisPlot multiAxisPlot, JRFillObjectFactory factory) { + super((JRChartPlot)multiAxisPlot, factory); + List parentAxes = multiAxisPlot.getAxes(); + this.axes = new ArrayList(parentAxes.size()); + Iterator iter = parentAxes.iterator(); + while (iter.hasNext()) { + JRChartAxis axis = iter.next(); + this.axes.add(factory.getChartAxis(axis)); + } + } + + public List getAxes() { + return this.axes; + } + + public JRFillChartDataset getMainDataset() { + return (JRFillChartDataset)((JRFillChartAxis)this.axes.get(0)).getFillChart().getDataset(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPie3DPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPie3DPlot.java new file mode 100644 index 0000000..903e238 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPie3DPlot.java @@ -0,0 +1,20 @@ +package net.sf.jasperreports.charts.fill; + +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillPie3DPlot extends JRFillChartPlot implements JRPie3DPlot { + public JRFillPie3DPlot(JRPie3DPlot pie3DPlot, JRFillObjectFactory factory) { + super((JRChartPlot)pie3DPlot, factory); + } + + public double getDepthFactor() { + return ((JRPie3DPlot)this.parent).getDepthFactor(); + } + + public boolean isCircular() { + return ((JRPie3DPlot)this.parent).isCircular(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPieDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPieDataset.java new file mode 100644 index 0000000..9dbfef8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPieDataset.java @@ -0,0 +1,118 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.util.PieLabelGenerator; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; +import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import org.jfree.data.general.Dataset; +import org.jfree.data.general.DefaultPieDataset; + +public class JRFillPieDataset extends JRFillChartDataset implements JRPieDataset { + private DefaultPieDataset dataset = new DefaultPieDataset(); + + private Map labels = null; + + private Comparable key = null; + + private Number value = null; + + private String label = null; + + private Map sectionHyperlinks; + + private JRPrintHyperlink sectionHyperlink; + + public JRFillPieDataset(JRPieDataset pieDataset, JRFillObjectFactory factory) { + super((JRChartDataset)pieDataset, factory); + } + + public JRExpression getKeyExpression() { + return ((JRPieDataset)this.parent).getKeyExpression(); + } + + public JRExpression getValueExpression() { + return ((JRPieDataset)this.parent).getValueExpression(); + } + + public JRExpression getLabelExpression() { + return ((JRPieDataset)this.parent).getLabelExpression(); + } + + protected void customInitialize() { + this.dataset = new DefaultPieDataset(); + this.labels = new HashMap(); + this.sectionHyperlinks = new HashMap(); + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.key = (Comparable)calculator.evaluate(getKeyExpression()); + this.value = (Number)calculator.evaluate(getValueExpression()); + this.label = (String)calculator.evaluate(getLabelExpression()); + if (hasSectionHyperlinks()) + evaluateSectionHyperlink(calculator); + } + + protected void evaluateSectionHyperlink(JRCalculator calculator) throws JRExpressionEvalException { + try { + this.sectionHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getSectionHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); + } catch (JRExpressionEvalException e) { + throw e; + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + protected void customIncrement() { + this.dataset.setValue(this.key, this.value); + this.labels.put(this.key, this.label); + if (hasSectionHyperlinks()) + this.sectionHyperlinks.put(this.key, this.sectionHyperlink); + } + + public Dataset getCustomDataset() { + return (Dataset)this.dataset; + } + + public byte getDatasetType() { + return 1; + } + + public PieLabelGenerator getLabelGenerator() { + return (getLabelExpression() == null) ? null : new PieLabelGenerator(this.labels); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRHyperlink getSectionHyperlink() { + return ((JRPieDataset)this.parent).getSectionHyperlink(); + } + + public boolean hasSectionHyperlinks() { + return !JRHyperlinkHelper.isEmpty(getSectionHyperlink()); + } + + public Map getSectionHyperlinks() { + return this.sectionHyperlinks; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPiePlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPiePlot.java new file mode 100644 index 0000000..869a6eb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPiePlot.java @@ -0,0 +1,16 @@ +package net.sf.jasperreports.charts.fill; + +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillPiePlot extends JRFillChartPlot implements JRPiePlot { + public JRFillPiePlot(JRPiePlot piePlot, JRFillObjectFactory factory) { + super((JRChartPlot)piePlot, factory); + } + + public boolean isCircular() { + return ((JRPiePlot)this.parent).isCircular(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillScatterPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillScatterPlot.java new file mode 100644 index 0000000..5a60c10 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillScatterPlot.java @@ -0,0 +1,146 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRXAxisFormat; +import net.sf.jasperreports.charts.JRYAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillScatterPlot extends JRFillChartPlot implements JRScatterPlot { + protected JRFont xAxisLabelFont = null; + + protected Color xAxisLabelColor = null; + + protected JRFont xAxisTickLabelFont = null; + + protected Color xAxisTickLabelColor = null; + + protected Color xAxisLineColor = null; + + protected JRFont yAxisLabelFont = null; + + protected Color yAxisLabelColor = null; + + protected JRFont yAxisTickLabelFont = null; + + protected Color yAxisTickLabelColor = null; + + protected Color yAxisLineColor = null; + + public JRFillScatterPlot(JRScatterPlot plot, JRFillObjectFactory factory) { + super((JRChartPlot)plot, factory); + this.xAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getXAxisLabelFont()); + this.xAxisLabelColor = plot.getOwnXAxisLabelColor(); + this.xAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getXAxisTickLabelFont()); + this.xAxisTickLabelColor = plot.getOwnXAxisTickLabelColor(); + this.xAxisLineColor = plot.getXAxisLineColor(); + this.yAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getYAxisLabelFont()); + this.yAxisLabelColor = plot.getOwnYAxisLabelColor(); + this.yAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getYAxisTickLabelFont()); + this.yAxisTickLabelColor = plot.getOwnYAxisTickLabelColor(); + this.yAxisLineColor = plot.getYAxisLineColor(); + } + + public JRExpression getXAxisLabelExpression() { + return ((JRScatterPlot)this.parent).getXAxisLabelExpression(); + } + + public JRFont getXAxisLabelFont() { + return this.xAxisLabelFont; + } + + public Color getXAxisLabelColor() { + return JRStyleResolver.getXAxisLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLabelColor() { + return this.xAxisLabelColor; + } + + public JRFont getXAxisTickLabelFont() { + return this.xAxisTickLabelFont; + } + + public Color getXAxisTickLabelColor() { + return JRStyleResolver.getXAxisTickLabelColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisTickLabelColor() { + return this.xAxisTickLabelColor; + } + + public String getXAxisTickLabelMask() { + return ((JRScatterPlot)this.parent).getXAxisTickLabelMask(); + } + + public void setXAxisTickLabelMask(String mask) {} + + public Color getXAxisLineColor() { + return JRStyleResolver.getXAxisLineColor((JRXAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnXAxisLineColor() { + return this.xAxisLineColor; + } + + public JRExpression getYAxisLabelExpression() { + return ((JRScatterPlot)this.parent).getYAxisLabelExpression(); + } + + public JRFont getYAxisLabelFont() { + return this.yAxisLabelFont; + } + + public Color getYAxisLabelColor() { + return JRStyleResolver.getYAxisLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLabelColor() { + return this.yAxisLabelColor; + } + + public JRFont getYAxisTickLabelFont() { + return this.yAxisTickLabelFont; + } + + public Color getYAxisTickLabelColor() { + return JRStyleResolver.getYAxisTickLabelColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisTickLabelColor() { + return this.yAxisTickLabelColor; + } + + public String getYAxisTickLabelMask() { + return ((JRScatterPlot)this.parent).getYAxisTickLabelMask(); + } + + public void setYAxisTickLabelMask(String mask) {} + + public Color getYAxisLineColor() { + return JRStyleResolver.getYAxisLineColor((JRYAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnYAxisLineColor() { + return this.yAxisLineColor; + } + + public boolean isShowShapes() { + return ((JRScatterPlot)this.parent).isShowShapes(); + } + + public void setShowShapes(boolean value) {} + + public boolean isShowLines() { + return ((JRScatterPlot)this.parent).isShowLines(); + } + + public void setShowLines(boolean value) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillThermometerPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillThermometerPlot.java new file mode 100644 index 0000000..1065cf2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillThermometerPlot.java @@ -0,0 +1,47 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillThermometerPlot extends JRFillChartPlot implements JRThermometerPlot { + public JRFillThermometerPlot(JRThermometerPlot thermoPlot, JRFillObjectFactory factory) { + super((JRChartPlot)thermoPlot, factory); + } + + public JRDataRange getDataRange() { + return ((JRThermometerPlot)this.parent).getDataRange(); + } + + public JRValueDisplay getValueDisplay() { + return ((JRThermometerPlot)this.parent).getValueDisplay(); + } + + public boolean isShowValueLines() { + return ((JRThermometerPlot)this.parent).isShowValueLines(); + } + + public byte getValueLocation() { + return ((JRThermometerPlot)this.parent).getValueLocation(); + } + + public Color getMercuryColor() { + return ((JRThermometerPlot)this.parent).getMercuryColor(); + } + + public JRDataRange getLowRange() { + return ((JRThermometerPlot)this.parent).getLowRange(); + } + + public JRDataRange getMediumRange() { + return ((JRThermometerPlot)this.parent).getMediumRange(); + } + + public JRDataRange getHighRange() { + return ((JRThermometerPlot)this.parent).getHighRange(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodDataset.java new file mode 100644 index 0000000..52362bf --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodDataset.java @@ -0,0 +1,140 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.charts.util.TimePeriodDatasetLabelGenerator; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import org.jfree.data.general.Dataset; +import org.jfree.data.time.SimpleTimePeriod; +import org.jfree.data.time.TimePeriod; +import org.jfree.data.time.TimePeriodValues; +import org.jfree.data.time.TimePeriodValuesCollection; + +public class JRFillTimePeriodDataset extends JRFillChartDataset implements JRTimePeriodDataset { + protected JRFillTimePeriodSeries[] timePeriodSeries = null; + + private List seriesNames = null; + + private Map seriesMap = null; + + private Map labelsMap = null; + + private Map itemHyperlinks; + + public JRFillTimePeriodDataset(JRTimePeriodDataset timePeriodDataset, JRFillObjectFactory factory) { + super((JRChartDataset)timePeriodDataset, factory); + JRTimePeriodSeries[] srcTimePeriodSeries = timePeriodDataset.getSeries(); + if (srcTimePeriodSeries != null && srcTimePeriodSeries.length > 0) { + this.timePeriodSeries = new JRFillTimePeriodSeries[srcTimePeriodSeries.length]; + for (int i = 0; i < this.timePeriodSeries.length; i++) + this.timePeriodSeries[i] = (JRFillTimePeriodSeries)factory.getTimePeriodSeries(srcTimePeriodSeries[i]); + } + } + + public JRTimePeriodSeries[] getSeries() { + return (JRTimePeriodSeries[])this.timePeriodSeries; + } + + protected void customInitialize() { + this.seriesNames = null; + this.seriesMap = null; + this.labelsMap = null; + this.itemHyperlinks = null; + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + if (this.timePeriodSeries != null && this.timePeriodSeries.length > 0) + for (int i = 0; i < this.timePeriodSeries.length; i++) + this.timePeriodSeries[i].evaluate(calculator); + } + + protected void customIncrement() { + if (this.timePeriodSeries != null && this.timePeriodSeries.length > 0) { + if (this.seriesNames == null) { + this.seriesNames = new ArrayList(); + this.seriesMap = new HashMap(); + this.labelsMap = new HashMap(); + this.itemHyperlinks = new HashMap(); + } + for (int i = 0; i < this.timePeriodSeries.length; i++) { + JRFillTimePeriodSeries crtTimePeriodSeries = this.timePeriodSeries[i]; + Comparable seriesName = crtTimePeriodSeries.getSeries(); + if (seriesName == null) + throw new JRRuntimeException("Time period series name is null."); + TimePeriodValues timePeriodValues = (TimePeriodValues)this.seriesMap.get(seriesName); + if (timePeriodValues == null) { + timePeriodValues = new TimePeriodValues(seriesName.toString()); + this.seriesNames.add(seriesName); + this.seriesMap.put(seriesName, timePeriodValues); + } + SimpleTimePeriod stp = new SimpleTimePeriod(crtTimePeriodSeries.getStartDate(), crtTimePeriodSeries.getEndDate()); + timePeriodValues.add((TimePeriod)stp, crtTimePeriodSeries.getValue()); + if (crtTimePeriodSeries.getLabelExpression() != null) { + Map seriesLabels = (Map)this.labelsMap.get(seriesName); + if (seriesLabels == null) { + seriesLabels = new HashMap(); + this.labelsMap.put(seriesName, seriesLabels); + } + seriesLabels.put(stp, crtTimePeriodSeries.getLabel()); + } + if (crtTimePeriodSeries.hasItemHyperlink()) { + Map seriesLinks = (Map)this.itemHyperlinks.get(seriesName); + if (seriesLinks == null) { + seriesLinks = new HashMap(); + this.itemHyperlinks.put(seriesName, seriesLinks); + } + seriesLinks.put(stp, crtTimePeriodSeries.getPrintItemHyperlink()); + } + } + } + } + + public Dataset getCustomDataset() { + TimePeriodValuesCollection dataset = new TimePeriodValuesCollection(); + if (this.seriesNames != null) + for (int i = 0; i < this.seriesNames.size(); i++) { + Comparable seriesName = this.seriesNames.get(i); + dataset.addSeries((TimePeriodValues)this.seriesMap.get(seriesName)); + } + return (Dataset)dataset; + } + + public byte getDatasetType() { + return 5; + } + + public TimePeriodDatasetLabelGenerator getLabelGenerator() { + return new TimePeriodDatasetLabelGenerator(this.labelsMap); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public boolean hasItemHyperlinks() { + boolean foundLinks = false; + if (this.timePeriodSeries != null && this.timePeriodSeries.length > 0) + for (int i = 0; i < this.timePeriodSeries.length && !foundLinks; i++) + foundLinks = this.timePeriodSeries[i].hasItemHyperlink(); + return foundLinks; + } + + public Map getItemHyperlinks() { + return this.itemHyperlinks; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodSeries.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodSeries.java new file mode 100644 index 0000000..794c53f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimePeriodSeries.java @@ -0,0 +1,112 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.Date; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; +import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillTimePeriodSeries implements JRTimePeriodSeries { + protected JRTimePeriodSeries parent = null; + + private Comparable series = null; + + private Date startDate = null; + + private Date endDate = null; + + private Number value = null; + + private String label = null; + + private JRPrintHyperlink itemHyperlink; + + public JRFillTimePeriodSeries(JRTimePeriodSeries timePeriodSeries, JRFillObjectFactory factory) { + factory.put(timePeriodSeries, this); + this.parent = timePeriodSeries; + } + + public JRExpression getSeriesExpression() { + return this.parent.getSeriesExpression(); + } + + public JRExpression getStartDateExpression() { + return this.parent.getStartDateExpression(); + } + + public JRExpression getEndDateExpression() { + return this.parent.getEndDateExpression(); + } + + public JRExpression getValueExpression() { + return this.parent.getValueExpression(); + } + + public JRExpression getLabelExpression() { + return this.parent.getLabelExpression(); + } + + protected Comparable getSeries() { + return this.series; + } + + protected Date getStartDate() { + return this.startDate; + } + + protected Date getEndDate() { + return this.endDate; + } + + protected Number getValue() { + return this.value; + } + + protected String getLabel() { + return this.label; + } + + protected void evaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.series = (Comparable)calculator.evaluate(getSeriesExpression()); + this.startDate = (Date)calculator.evaluate(getStartDateExpression()); + this.endDate = (Date)calculator.evaluate(getEndDateExpression()); + this.value = (Number)calculator.evaluate(getValueExpression()); + this.label = (String)calculator.evaluate(getLabelExpression()); + if (hasItemHyperlink()) + evaluateItemHyperlink(calculator); + } + + protected void evaluateItemHyperlink(JRCalculator calculator) throws JRExpressionEvalException { + try { + this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); + } catch (JRExpressionEvalException e) { + throw e; + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + public JRHyperlink getItemHyperlink() { + return this.parent.getItemHyperlink(); + } + + public boolean hasItemHyperlink() { + return !JRHyperlinkHelper.isEmpty(getItemHyperlink()); + } + + public JRPrintHyperlink getPrintItemHyperlink() { + return this.itemHyperlink; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeries.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeries.java new file mode 100644 index 0000000..434061d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeries.java @@ -0,0 +1,101 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.Date; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; +import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillTimeSeries implements JRTimeSeries { + protected JRTimeSeries parent = null; + + private Comparable series = null; + + private Date timePeriod = null; + + private Number value = null; + + private String label = null; + + private JRPrintHyperlink itemHyperlink; + + public JRFillTimeSeries(JRTimeSeries timeSeries, JRFillObjectFactory factory) { + factory.put(timeSeries, this); + this.parent = timeSeries; + } + + public JRExpression getSeriesExpression() { + return this.parent.getSeriesExpression(); + } + + public JRExpression getTimePeriodExpression() { + return this.parent.getTimePeriodExpression(); + } + + public JRExpression getValueExpression() { + return this.parent.getValueExpression(); + } + + public JRExpression getLabelExpression() { + return this.parent.getLabelExpression(); + } + + protected Comparable getSeries() { + return this.series; + } + + protected Date getTimePeriod() { + return this.timePeriod; + } + + protected Number getValue() { + return this.value; + } + + protected String getLabel() { + return this.label; + } + + protected void evaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.series = (Comparable)calculator.evaluate(getSeriesExpression()); + this.timePeriod = (Date)calculator.evaluate(getTimePeriodExpression()); + this.value = (Number)calculator.evaluate(getValueExpression()); + this.label = (String)calculator.evaluate(getLabelExpression()); + if (hasItemHyperlink()) + evaluateItemHyperlink(calculator); + } + + protected void evaluateItemHyperlink(JRCalculator calculator) throws JRExpressionEvalException { + try { + this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); + } catch (JRExpressionEvalException e) { + throw e; + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + public JRHyperlink getItemHyperlink() { + return this.parent.getItemHyperlink(); + } + + public boolean hasItemHyperlink() { + return !JRHyperlinkHelper.isEmpty(getItemHyperlink()); + } + + public JRPrintHyperlink getPrintItemHyperlink() { + return this.itemHyperlink; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesDataset.java new file mode 100644 index 0000000..a083b6b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesDataset.java @@ -0,0 +1,145 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.util.TimeSeriesLabelGenerator; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import org.jfree.data.general.Dataset; +import org.jfree.data.time.RegularTimePeriod; +import org.jfree.data.time.TimeSeries; +import org.jfree.data.time.TimeSeriesCollection; + +public class JRFillTimeSeriesDataset extends JRFillChartDataset implements JRTimeSeriesDataset { + protected JRFillTimeSeries[] timeSeries = null; + + private List seriesNames = null; + + private Map seriesMap = null; + + private Map labelsMap = null; + + private Map itemHyperlinks; + + public JRFillTimeSeriesDataset(JRTimeSeriesDataset timeSeriesDataset, JRFillObjectFactory factory) { + super((JRChartDataset)timeSeriesDataset, factory); + JRTimeSeries[] srcTimeSeries = timeSeriesDataset.getSeries(); + if (srcTimeSeries != null && srcTimeSeries.length > 0) { + this.timeSeries = new JRFillTimeSeries[srcTimeSeries.length]; + for (int i = 0; i < this.timeSeries.length; i++) + this.timeSeries[i] = (JRFillTimeSeries)factory.getTimeSeries(srcTimeSeries[i]); + } + } + + public JRTimeSeries[] getSeries() { + return (JRTimeSeries[])this.timeSeries; + } + + protected void customInitialize() { + this.seriesNames = null; + this.seriesMap = null; + this.labelsMap = null; + this.itemHyperlinks = null; + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + if (this.timeSeries != null && this.timeSeries.length > 0) + for (int i = 0; i < this.timeSeries.length; i++) + this.timeSeries[i].evaluate(calculator); + } + + protected void customIncrement() { + if (this.timeSeries != null && this.timeSeries.length > 0) { + if (this.seriesNames == null) { + this.seriesNames = new ArrayList(); + this.seriesMap = new HashMap(); + this.labelsMap = new HashMap(); + this.itemHyperlinks = new HashMap(); + } + for (int i = 0; i < this.timeSeries.length; i++) { + JRFillTimeSeries crtTimeSeries = this.timeSeries[i]; + Comparable seriesName = crtTimeSeries.getSeries(); + if (seriesName == null) + throw new JRRuntimeException("Time series name is null."); + TimeSeries series = (TimeSeries)this.seriesMap.get(seriesName); + if (series == null) { + series = new TimeSeries(seriesName.toString(), getTimePeriod()); + this.seriesNames.add(seriesName); + this.seriesMap.put(seriesName, series); + } + RegularTimePeriod tp = RegularTimePeriod.createInstance(getTimePeriod(), crtTimeSeries.getTimePeriod(), getTimeZone()); + series.addOrUpdate(tp, crtTimeSeries.getValue()); + if (crtTimeSeries.getLabelExpression() != null) { + Map seriesLabels = (Map)this.labelsMap.get(seriesName); + if (seriesLabels == null) { + seriesLabels = new HashMap(); + this.labelsMap.put(seriesName, seriesLabels); + } + seriesLabels.put(tp, crtTimeSeries.getLabel()); + } + if (crtTimeSeries.hasItemHyperlink()) { + Map seriesLinks = (Map)this.itemHyperlinks.get(seriesName); + if (seriesLinks == null) { + seriesLinks = new HashMap(); + this.itemHyperlinks.put(seriesName, seriesLinks); + } + seriesLinks.put(tp, crtTimeSeries.getPrintItemHyperlink()); + } + } + } + } + + public Dataset getCustomDataset() { + TimeSeriesCollection dataset = new TimeSeriesCollection(); + if (this.seriesNames != null) + for (int i = 0; i < this.seriesNames.size(); i++) { + Comparable seriesName = this.seriesNames.get(i); + dataset.addSeries((TimeSeries)this.seriesMap.get(seriesName)); + } + return (Dataset)dataset; + } + + public Class getTimePeriod() { + return ((JRTimeSeriesDataset)this.parent).getTimePeriod(); + } + + public void setTimePeriod(Class timePeriod) {} + + public byte getDatasetType() { + return 6; + } + + public TimeSeriesLabelGenerator getLabelGenerator() { + return new TimeSeriesLabelGenerator(this.labelsMap); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Map getItemHyperlinks() { + return this.itemHyperlinks; + } + + public boolean hasItemHyperlinks() { + boolean foundLinks = false; + if (this.timeSeries != null && this.timeSeries.length > 0) + for (int i = 0; i < this.timeSeries.length && !foundLinks; i++) + foundLinks = this.timeSeries[i].hasItemHyperlink(); + return foundLinks; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesPlot.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesPlot.java new file mode 100644 index 0000000..c2d92c1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillTimeSeriesPlot.java @@ -0,0 +1,164 @@ +package net.sf.jasperreports.charts.fill; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRTimeAxisFormat; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.fill.JRFillChartPlot; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillTimeSeriesPlot extends JRFillChartPlot implements JRTimeSeriesPlot { + protected JRFont timeAxisLabelFont = null; + + protected Color timeAxisLabelColor = null; + + protected JRFont timeAxisTickLabelFont = null; + + protected Color timeAxisTickLabelColor = null; + + protected Color timeAxisLineColor = null; + + protected JRFont valueAxisLabelFont = null; + + protected Color valueAxisLabelColor = null; + + protected JRFont valueAxisTickLabelFont = null; + + protected Color valueAxisTickLabelColor = null; + + protected Color valueAxisLineColor = null; + + public JRFillTimeSeriesPlot(JRTimeSeriesPlot plot, JRFillObjectFactory factory) { + super((JRChartPlot)plot, factory); + this.timeAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getTimeAxisLabelFont()); + this.timeAxisLabelColor = plot.getOwnTimeAxisLabelColor(); + this.timeAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getTimeAxisTickLabelFont()); + this.timeAxisTickLabelColor = plot.getOwnTimeAxisTickLabelColor(); + this.timeAxisLineColor = plot.getTimeAxisLineColor(); + this.valueAxisLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getValueAxisLabelFont()); + this.valueAxisLabelColor = plot.getOwnValueAxisLabelColor(); + this.valueAxisTickLabelFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)plot.getChart(), plot.getValueAxisTickLabelFont()); + this.valueAxisTickLabelColor = plot.getOwnValueAxisTickLabelColor(); + this.valueAxisLineColor = plot.getValueAxisTickLabelColor(); + } + + public JRExpression getTimeAxisLabelExpression() { + return ((JRTimeSeriesPlot)this.parent).getTimeAxisLabelExpression(); + } + + public JRFont getTimeAxisLabelFont() { + return this.timeAxisLabelFont; + } + + public void setTimeAxisLabelFont(JRFont font) {} + + public Color getTimeAxisLabelColor() { + return JRStyleResolver.getTimeAxisLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLabelColor() { + return this.timeAxisLabelColor; + } + + public void setTimeAxisLabelColor(Color color) {} + + public JRFont getTimeAxisTickLabelFont() { + return this.timeAxisTickLabelFont; + } + + public void setTimeAxisTickLabelFont(JRFont font) {} + + public Color getTimeAxisTickLabelColor() { + return JRStyleResolver.getTimeAxisTickLabelColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisTickLabelColor() { + return this.timeAxisTickLabelColor; + } + + public void setTimeAxisTickLabelColor(Color color) {} + + public String getTimeAxisTickLabelMask() { + return ((JRTimeSeriesPlot)this.parent).getTimeAxisTickLabelMask(); + } + + public void setTimeAxisTickLabelMask(String mask) {} + + public Color getTimeAxisLineColor() { + return JRStyleResolver.getTimeAxisLineColor((JRTimeAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnTimeAxisLineColor() { + return this.timeAxisLineColor; + } + + public void setTimeAxisLineColor(Color color) {} + + public JRExpression getValueAxisLabelExpression() { + return ((JRTimeSeriesPlot)this.parent).getValueAxisLabelExpression(); + } + + public JRFont getValueAxisLabelFont() { + return this.valueAxisLabelFont; + } + + public void setValueAxisLabelFont(JRFont font) {} + + public Color getValueAxisLabelColor() { + return JRStyleResolver.getValueAxisLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLabelColor() { + return this.valueAxisLabelColor; + } + + public void setValueAxisLabelColor(Color color) {} + + public JRFont getValueAxisTickLabelFont() { + return this.valueAxisTickLabelFont; + } + + public void setValueAxisTickLabelFont(JRFont font) {} + + public Color getValueAxisTickLabelColor() { + return JRStyleResolver.getValueAxisTickLabelColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisTickLabelColor() { + return this.valueAxisTickLabelColor; + } + + public void setValueAxisTickLabelColor(Color color) {} + + public String getValueAxisTickLabelMask() { + return ((JRTimeSeriesPlot)this.parent).getValueAxisTickLabelMask(); + } + + public void setValueAxisTickLabelMask(String mask) {} + + public Color getValueAxisLineColor() { + return JRStyleResolver.getValueAxisLineColor((JRValueAxisFormat)this, (JRChartPlot)this); + } + + public Color getOwnValueAxisLineColor() { + return this.valueAxisLineColor; + } + + public boolean isShowLines() { + return ((JRTimeSeriesPlot)this.parent).isShowLines(); + } + + public void setShowLines() {} + + public boolean isShowShapes() { + return ((JRTimeSeriesPlot)this.parent).isShowShapes(); + } + + public void setShowShapes() {} +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillValueDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillValueDataset.java new file mode 100644 index 0000000..5e5f941 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillValueDataset.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.charts.fill; + +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import org.jfree.data.general.Dataset; +import org.jfree.data.general.DefaultValueDataset; + +public class JRFillValueDataset extends JRFillChartDataset implements JRValueDataset { + private Number value = null; + + private DefaultValueDataset valueDataset = new DefaultValueDataset(); + + public JRFillValueDataset(JRValueDataset valueDataset, JRFillObjectFactory factory) { + super((JRChartDataset)valueDataset, factory); + } + + public JRExpression getValueExpression() { + return ((JRValueDataset)this.parent).getValueExpression(); + } + + protected void customInitialize() { + this.valueDataset = new DefaultValueDataset(); + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.value = (Number)calculator.evaluate(getValueExpression()); + } + + protected void customIncrement() { + this.valueDataset.setValue(this.value); + } + + public Dataset getCustomDataset() { + return (Dataset)this.valueDataset; + } + + public byte getDatasetType() { + return 8; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyDataset.java new file mode 100644 index 0000000..4abb655 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyDataset.java @@ -0,0 +1,138 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.charts.util.XYDatasetLabelGenerator; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.Pair; +import org.jfree.data.general.Dataset; +import org.jfree.data.xy.XYSeries; +import org.jfree.data.xy.XYSeriesCollection; + +public class JRFillXyDataset extends JRFillChartDataset implements JRXyDataset { + protected JRFillXySeries[] xySeries = null; + + private List seriesNames = null; + + private Map seriesMap = null; + + private Map labelsMap = null; + + private Map itemHyperlinks; + + public JRFillXyDataset(JRXyDataset xyDataset, JRFillObjectFactory factory) { + super((JRChartDataset)xyDataset, factory); + JRXySeries[] srcXySeries = xyDataset.getSeries(); + if (srcXySeries != null && srcXySeries.length > 0) { + this.xySeries = new JRFillXySeries[srcXySeries.length]; + for (int i = 0; i < this.xySeries.length; i++) + this.xySeries[i] = (JRFillXySeries)factory.getXySeries(srcXySeries[i]); + } + } + + public JRXySeries[] getSeries() { + return (JRXySeries[])this.xySeries; + } + + protected void customInitialize() { + this.seriesNames = null; + this.seriesMap = null; + this.labelsMap = null; + this.itemHyperlinks = null; + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + if (this.xySeries != null && this.xySeries.length > 0) + for (int i = 0; i < this.xySeries.length; i++) + this.xySeries[i].evaluate(calculator); + } + + protected void customIncrement() { + if (this.xySeries != null && this.xySeries.length > 0) { + if (this.seriesNames == null) { + this.seriesNames = new ArrayList(); + this.seriesMap = new HashMap(); + this.labelsMap = new HashMap(); + this.itemHyperlinks = new HashMap(); + } + for (int i = 0; i < this.xySeries.length; i++) { + JRFillXySeries crtXySeries = this.xySeries[i]; + Comparable seriesName = crtXySeries.getSeries(); + XYSeries xySrs = (XYSeries)this.seriesMap.get(seriesName); + if (xySrs == null) { + xySrs = new XYSeries(seriesName); + this.seriesNames.add(seriesName); + this.seriesMap.put(seriesName, xySrs); + } + xySrs.addOrUpdate(crtXySeries.getXValue(), crtXySeries.getYValue()); + if (crtXySeries.getLabelExpression() != null) { + Map seriesLabels = (Map)this.labelsMap.get(seriesName); + if (seriesLabels == null) { + seriesLabels = new HashMap(); + this.labelsMap.put(seriesName, seriesLabels); + } + seriesLabels.put(crtXySeries.getXValue(), crtXySeries.getLabel()); + } + if (crtXySeries.hasItemHyperlinks()) { + Map seriesLinks = (Map)this.itemHyperlinks.get(seriesName); + if (seriesLinks == null) { + seriesLinks = new HashMap(); + this.itemHyperlinks.put(seriesName, seriesLinks); + } + Pair xyKey = new Pair(crtXySeries.getXValue(), crtXySeries.getYValue()); + seriesLinks.put(xyKey, crtXySeries.getPrintItemHyperlink()); + } + } + } + } + + public Dataset getCustomDataset() { + XYSeriesCollection dataset = new XYSeriesCollection(); + if (this.seriesNames != null) + for (int i = 0; i < this.seriesNames.size(); i++) { + Comparable seriesName = this.seriesNames.get(i); + dataset.addSeries((XYSeries)this.seriesMap.get(seriesName)); + } + return (Dataset)dataset; + } + + public byte getDatasetType() { + return 3; + } + + public XYDatasetLabelGenerator getLabelGenerator() { + return new XYDatasetLabelGenerator(this.labelsMap); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public Map getItemHyperlinks() { + return this.itemHyperlinks; + } + + public boolean hasItemHyperlinks() { + boolean foundLinks = false; + if (this.xySeries != null && this.xySeries.length > 0) + for (int i = 0; i < this.xySeries.length && !foundLinks; i++) { + JRFillXySeries serie = this.xySeries[i]; + foundLinks = serie.hasItemHyperlinks(); + } + return foundLinks; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXySeries.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXySeries.java new file mode 100644 index 0000000..4f37687 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXySeries.java @@ -0,0 +1,100 @@ +package net.sf.jasperreports.charts.fill; + +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; +import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillXySeries implements JRXySeries { + protected JRXySeries parent = null; + + private Comparable series = null; + + private Number xValue = null; + + private Number yValue = null; + + private String label = null; + + private JRPrintHyperlink itemHyperlink; + + public JRFillXySeries(JRXySeries xySeries, JRFillObjectFactory factory) { + factory.put(xySeries, this); + this.parent = xySeries; + } + + public JRExpression getSeriesExpression() { + return this.parent.getSeriesExpression(); + } + + public JRExpression getXValueExpression() { + return this.parent.getXValueExpression(); + } + + public JRExpression getYValueExpression() { + return this.parent.getYValueExpression(); + } + + public JRExpression getLabelExpression() { + return this.parent.getLabelExpression(); + } + + protected Comparable getSeries() { + return this.series; + } + + protected Number getXValue() { + return this.xValue; + } + + protected Number getYValue() { + return this.yValue; + } + + protected String getLabel() { + return this.label; + } + + protected JRPrintHyperlink getPrintItemHyperlink() { + return this.itemHyperlink; + } + + protected void evaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.series = (Comparable)calculator.evaluate(getSeriesExpression()); + this.xValue = (Number)calculator.evaluate(getXValueExpression()); + this.yValue = (Number)calculator.evaluate(getYValueExpression()); + this.label = (String)calculator.evaluate(getLabelExpression()); + if (hasItemHyperlinks()) + evaluateItemHyperlink(calculator); + } + + protected void evaluateItemHyperlink(JRCalculator calculator) throws JRExpressionEvalException { + try { + this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); + } catch (JRExpressionEvalException e) { + throw e; + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + public JRHyperlink getItemHyperlink() { + return this.parent.getItemHyperlink(); + } + + public boolean hasItemHyperlinks() { + return !JRHyperlinkHelper.isEmpty(getItemHyperlink()); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzDataset.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzDataset.java new file mode 100644 index 0000000..27007d6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzDataset.java @@ -0,0 +1,100 @@ +package net.sf.jasperreports.charts.fill; + +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.charts.util.DefaultXYZDataset; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.util.Pair; +import org.jfree.data.general.Dataset; + +public class JRFillXyzDataset extends JRFillChartDataset implements JRXyzDataset { + protected JRFillXyzSeries[] xyzSeries = null; + + private DefaultXYZDataset dataset = null; + + private Map itemHyperlinks; + + public JRFillXyzDataset(JRXyzDataset xyzDataset, JRFillObjectFactory factory) { + super((JRChartDataset)xyzDataset, factory); + JRXyzSeries[] srcXyzSeries = xyzDataset.getSeries(); + if (srcXyzSeries != null && srcXyzSeries.length > 0) { + this.xyzSeries = new JRFillXyzSeries[srcXyzSeries.length]; + for (int i = 0; i < this.xyzSeries.length; i++) + this.xyzSeries[i] = (JRFillXyzSeries)factory.getXyzSeries(srcXyzSeries[i]); + } + } + + public JRXyzSeries[] getSeries() { + return (JRXyzSeries[])this.xyzSeries; + } + + protected void customInitialize() { + this.dataset = new DefaultXYZDataset(); + this.itemHyperlinks = new HashMap(); + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + if (this.xyzSeries != null && this.xyzSeries.length > 0) + for (int i = 0; i < this.xyzSeries.length; i++) + this.xyzSeries[i].evaluate(calculator); + } + + protected void customIncrement() { + if (this.xyzSeries != null && this.xyzSeries.length > 0) + for (int i = 0; i < this.xyzSeries.length; i++) { + JRFillXyzSeries crtXyzSeries = this.xyzSeries[i]; + Comparable seriesName = crtXyzSeries.getSeries(); + if (seriesName == null) + throw new JRRuntimeException("XYZ series name is null."); + this.dataset.addValue(crtXyzSeries.getSeries(), crtXyzSeries.getXValue(), crtXyzSeries.getYValue(), crtXyzSeries.getZValue()); + if (crtXyzSeries.hasItemHyperlinks()) { + Map seriesLinks = (Map)this.itemHyperlinks.get(crtXyzSeries.getSeries()); + if (seriesLinks == null) { + seriesLinks = new HashMap(); + this.itemHyperlinks.put(crtXyzSeries.getSeries(), seriesLinks); + } + Pair xyKey = new Pair(crtXyzSeries.getXValue(), crtXyzSeries.getYValue()); + seriesLinks.put(xyKey, crtXyzSeries.getPrintItemHyperlink()); + } + } + } + + public Dataset getCustomDataset() { + return (Dataset)this.dataset; + } + + public byte getDatasetType() { + return 4; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public boolean hasItemHyperlinks() { + boolean foundLinks = false; + if (this.xyzSeries != null && this.xyzSeries.length > 0) + for (int i = 0; i < this.xyzSeries.length && !foundLinks; i++) { + JRFillXyzSeries serie = this.xyzSeries[i]; + foundLinks = serie.hasItemHyperlinks(); + } + return foundLinks; + } + + public Map getItemHyperlinks() { + return this.itemHyperlinks; + } + + public void validate(JRVerifier verifier) { + verifier.verify(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzSeries.java b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzSeries.java new file mode 100644 index 0000000..11bdd4c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillXyzSeries.java @@ -0,0 +1,100 @@ +package net.sf.jasperreports.charts.fill; + +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.fill.JRCalculator; +import net.sf.jasperreports.engine.fill.JRExpressionEvalException; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; +import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillXyzSeries implements JRXyzSeries { + JRXyzSeries parent = null; + + private Comparable series = null; + + private Number xValue = null; + + private Number yValue = null; + + private Number zValue = null; + + private JRPrintHyperlink itemHyperlink; + + public JRFillXyzSeries(JRXyzSeries xyzSeries, JRFillObjectFactory factory) { + factory.put(xyzSeries, this); + this.parent = xyzSeries; + } + + public JRExpression getSeriesExpression() { + return this.parent.getSeriesExpression(); + } + + public JRExpression getXValueExpression() { + return this.parent.getXValueExpression(); + } + + public JRExpression getYValueExpression() { + return this.parent.getYValueExpression(); + } + + public JRExpression getZValueExpression() { + return this.parent.getZValueExpression(); + } + + protected Comparable getSeries() { + return this.series; + } + + protected Number getXValue() { + return this.xValue; + } + + protected Number getYValue() { + return this.yValue; + } + + protected Number getZValue() { + return this.zValue; + } + + protected JRPrintHyperlink getPrintItemHyperlink() { + return this.itemHyperlink; + } + + protected void evaluate(JRCalculator calculator) throws JRExpressionEvalException { + this.series = (Comparable)calculator.evaluate(getSeriesExpression()); + this.xValue = (Number)calculator.evaluate(getXValueExpression()); + this.yValue = (Number)calculator.evaluate(getYValueExpression()); + this.zValue = (Number)calculator.evaluate(getZValueExpression()); + if (hasItemHyperlinks()) + evaluateItemHyperlink(calculator); + } + + protected void evaluateItemHyperlink(JRCalculator calculator) throws JRExpressionEvalException { + try { + this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); + } catch (JRExpressionEvalException e) { + throw e; + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + public JRHyperlink getItemHyperlink() { + return this.parent.getItemHyperlink(); + } + + public boolean hasItemHyperlinks() { + return !JRHyperlinkHelper.isEmpty(getItemHyperlink()); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/CategoryChartHyperlinkProvider.java b/hrmsEjb/net/sf/jasperreports/charts/util/CategoryChartHyperlinkProvider.java new file mode 100644 index 0000000..3ab3f57 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/CategoryChartHyperlinkProvider.java @@ -0,0 +1,34 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import org.jfree.chart.entity.CategoryItemEntity; +import org.jfree.chart.entity.ChartEntity; + +public class CategoryChartHyperlinkProvider implements ChartHyperlinkProvider { + private static final long serialVersionUID = 10200L; + + private Map itemHyperlinks; + + public CategoryChartHyperlinkProvider(Map itemHyperlinks) { + this.itemHyperlinks = itemHyperlinks; + } + + public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { + JRPrintHyperlink printHyperlink = null; + if (hasHyperlinks() && entity instanceof CategoryItemEntity) { + CategoryItemEntity itemEntity = (CategoryItemEntity)entity; + Comparable serie = itemEntity.getDataset().getRowKey(itemEntity.getSeries()); + Map serieHyperlinks = (Map)this.itemHyperlinks.get(serie); + if (serieHyperlinks != null) { + Object category = itemEntity.getCategory(); + printHyperlink = (JRPrintHyperlink)serieHyperlinks.get(category); + } + } + return printHyperlink; + } + + public boolean hasHyperlinks() { + return (this.itemHyperlinks != null && this.itemHyperlinks.size() > 0); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/CategoryLabelGenerator.java b/hrmsEjb/net/sf/jasperreports/charts/util/CategoryLabelGenerator.java new file mode 100644 index 0000000..9024947 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/CategoryLabelGenerator.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; +import org.jfree.data.category.CategoryDataset; + +public class CategoryLabelGenerator extends StandardCategoryItemLabelGenerator { + private static final long serialVersionUID = 10200L; + + private Map labelsMap = null; + + public CategoryLabelGenerator(Map labelsMap) { + this.labelsMap = labelsMap; + } + + public String generateLabel(CategoryDataset dataset, int series, int category) { + Comparable seriesName = dataset.getRowKey(series); + Map labels = (Map)this.labelsMap.get(seriesName); + if (labels != null) + return (String)labels.get(dataset.getColumnKey(category)); + return super.generateLabel(dataset, series, category); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/ChartHyperlinkProvider.java b/hrmsEjb/net/sf/jasperreports/charts/util/ChartHyperlinkProvider.java new file mode 100644 index 0000000..d5ba5a5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/ChartHyperlinkProvider.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.charts.util; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import org.jfree.chart.entity.ChartEntity; + +public interface ChartHyperlinkProvider extends Serializable { + JRPrintHyperlink getEntityHyperlink(ChartEntity paramChartEntity); + + boolean hasHyperlinks(); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/ChartRendererFactory.java b/hrmsEjb/net/sf/jasperreports/charts/util/ChartRendererFactory.java new file mode 100644 index 0000000..fccef63 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/ChartRendererFactory.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.charts.util; + +import java.awt.geom.Rectangle2D; +import net.sf.jasperreports.engine.JRRenderable; +import org.jfree.chart.JFreeChart; + +public interface ChartRendererFactory { + public static final String PROPERTY_CHART_RENDERER_FACTORY_PREFIX = "net.sf.jasperreports.chart.renderer.factory."; + + JRRenderable getRenderer(JFreeChart paramJFreeChart, ChartHyperlinkProvider paramChartHyperlinkProvider, Rectangle2D paramRectangle2D); +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/DefaultXYZDataset.java b/hrmsEjb/net/sf/jasperreports/charts/util/DefaultXYZDataset.java new file mode 100644 index 0000000..40134f7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/DefaultXYZDataset.java @@ -0,0 +1,91 @@ +package net.sf.jasperreports.charts.util; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import org.jfree.data.xy.AbstractXYZDataset; +import org.jfree.data.xy.XYZDataset; + +public class DefaultXYZDataset extends AbstractXYZDataset implements XYZDataset { + private static final long serialVersionUID = 10200L; + + List dataset = null; + + public DefaultXYZDataset() { + this.dataset = new ArrayList(); + } + + public void addValue(Comparable series, Number xValue, Number yValue, Number zValue) { + boolean found = false; + for (Iterator it = this.dataset.iterator(); it.hasNext(); ) { + XYZElement element = it.next(); + if (element.getSeries().equals(series)) { + element.addElement(xValue, yValue, zValue); + found = true; + } + } + if (!found) { + XYZElement element = new XYZElement(); + element.setSeries(series); + element.addElement(xValue, yValue, zValue); + this.dataset.add(element); + } + } + + public int getSeriesCount() { + int retVal = 0; + if (this.dataset != null) + retVal = this.dataset.size(); + return retVal; + } + + public Number getZ(int series, int index) { + Number retVal = null; + if (this.dataset != null && + series < getSeriesCount()) { + XYZElement element = this.dataset.get(series); + retVal = element.getZElement(index); + } + return retVal; + } + + public int getItemCount(int series) { + int retVal = 0; + if (this.dataset != null && + series < getSeriesCount()) { + XYZElement element = this.dataset.get(series); + retVal = element.getCount(); + } + return retVal; + } + + public Number getX(int series, int index) { + Number retVal = null; + if (this.dataset != null && + series < getSeriesCount()) { + XYZElement element = this.dataset.get(series); + retVal = element.getXElement(index); + } + return retVal; + } + + public Number getY(int series, int index) { + Number retVal = null; + if (this.dataset != null && + series < getSeriesCount()) { + XYZElement element = this.dataset.get(series); + retVal = element.getYElement(index); + } + return retVal; + } + + public Comparable getSeriesKey(int index) { + String retVal = null; + if (this.dataset != null && + index < getSeriesCount()) { + XYZElement element = this.dataset.get(index); + retVal = element.getSeries().toString(); + } + return retVal; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/HighLowChartHyperlinkProvider.java b/hrmsEjb/net/sf/jasperreports/charts/util/HighLowChartHyperlinkProvider.java new file mode 100644 index 0000000..07114e6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/HighLowChartHyperlinkProvider.java @@ -0,0 +1,31 @@ +package net.sf.jasperreports.charts.util; + +import java.util.List; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import org.jfree.chart.entity.ChartEntity; +import org.jfree.chart.entity.XYItemEntity; + +public class HighLowChartHyperlinkProvider implements ChartHyperlinkProvider { + private static final long serialVersionUID = 10200L; + + private List itemHyperlinks; + + public HighLowChartHyperlinkProvider(List itemHyperlinks) { + this.itemHyperlinks = itemHyperlinks; + } + + public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { + JRPrintHyperlink printHyperlink = null; + if (hasHyperlinks() && entity instanceof XYItemEntity) { + XYItemEntity itemEntity = (XYItemEntity)entity; + int item = itemEntity.getItem(); + if (item >= 0 && item < this.itemHyperlinks.size()) + printHyperlink = this.itemHyperlinks.get(item); + } + return printHyperlink; + } + + public boolean hasHyperlinks() { + return (this.itemHyperlinks != null && this.itemHyperlinks.size() > 0); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/JRAxisFormat.java b/hrmsEjb/net/sf/jasperreports/charts/util/JRAxisFormat.java new file mode 100644 index 0000000..29aa647 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/JRAxisFormat.java @@ -0,0 +1,69 @@ +package net.sf.jasperreports.charts.util; + +import java.awt.Color; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRFont; + +public class JRAxisFormat implements Serializable { + private static final long serialVersionUID = 10200L; + + protected Color labelColor = null; + + protected JRFont labelFont = null; + + protected Color tickLabelColor = null; + + protected JRFont tickLabelFont = null; + + protected String tickLabelMask = null; + + protected Color lineColor = null; + + public Color getLabelColor() { + return this.labelColor; + } + + public void setLabelColor(Color labelColor) { + this.labelColor = labelColor; + } + + public JRFont getLabelFont() { + return this.labelFont; + } + + public void setLabelFont(JRFont labelFont) { + this.labelFont = labelFont; + } + + public Color getLineColor() { + return this.lineColor; + } + + public void setLineColor(Color lineColor) { + this.lineColor = lineColor; + } + + public Color getTickLabelColor() { + return this.tickLabelColor; + } + + public void setTickLabelColor(Color tickLabelColor) { + this.tickLabelColor = tickLabelColor; + } + + public JRFont getTickLabelFont() { + return this.tickLabelFont; + } + + public void setTickLabelFont(JRFont tickLabelFont) { + this.tickLabelFont = tickLabelFont; + } + + public String getTickLabelMask() { + return this.tickLabelMask; + } + + public void setTickLabelMask(String mask) { + this.tickLabelMask = mask; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/JRMeterInterval.java b/hrmsEjb/net/sf/jasperreports/charts/util/JRMeterInterval.java new file mode 100644 index 0000000..59f2d3d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/JRMeterInterval.java @@ -0,0 +1,74 @@ +package net.sf.jasperreports.charts.util; + +import java.awt.Color; +import java.io.Serializable; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.base.JRBaseDataRange; +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRMeterInterval implements JRCloneable, Serializable { + protected JRDataRange dataRange = null; + + protected String label = null; + + protected Color backgroundColor = null; + + protected double alpha = 1.0D; + + private static final long serialVersionUID = 10200L; + + public JRMeterInterval() {} + + public JRMeterInterval(JRMeterInterval meterInterval, JRBaseObjectFactory factory) { + this.dataRange = (JRDataRange)new JRBaseDataRange(meterInterval.getDataRange(), factory); + this.label = meterInterval.getLabel(); + this.backgroundColor = meterInterval.getBackgroundColor(); + this.alpha = meterInterval.getAlpha(); + } + + public JRDataRange getDataRange() { + return this.dataRange; + } + + public void setDataRange(JRDataRange dataRange) { + this.dataRange = dataRange; + } + + public String getLabel() { + return this.label; + } + + public void setLabel(String label) { + this.label = label; + } + + public Color getBackgroundColor() { + return this.backgroundColor; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public double getAlpha() { + return this.alpha; + } + + public void setAlpha(double alpha) { + this.alpha = alpha; + } + + public Object clone() { + JRMeterInterval clone = null; + try { + clone = (JRMeterInterval)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.dataRange != null) + clone.dataRange = (JRDataRange)this.dataRange.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/PieChartHyperlinkProvider.java b/hrmsEjb/net/sf/jasperreports/charts/util/PieChartHyperlinkProvider.java new file mode 100644 index 0000000..f80ef67 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/PieChartHyperlinkProvider.java @@ -0,0 +1,29 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import org.jfree.chart.entity.ChartEntity; +import org.jfree.chart.entity.PieSectionEntity; + +public class PieChartHyperlinkProvider implements ChartHyperlinkProvider { + private static final long serialVersionUID = 10200L; + + private Map sectionHyperlinks; + + public PieChartHyperlinkProvider(Map sectionHyperlinks) { + this.sectionHyperlinks = sectionHyperlinks; + } + + public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { + JRPrintHyperlink printHyperlink = null; + if (hasHyperlinks() && entity instanceof PieSectionEntity) { + PieSectionEntity pieEntity = (PieSectionEntity)entity; + printHyperlink = (JRPrintHyperlink)this.sectionHyperlinks.get(pieEntity.getSectionKey()); + } + return printHyperlink; + } + + public boolean hasHyperlinks() { + return (this.sectionHyperlinks != null && this.sectionHyperlinks.size() > 0); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/PieLabelGenerator.java b/hrmsEjb/net/sf/jasperreports/charts/util/PieLabelGenerator.java new file mode 100644 index 0000000..d7f156c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/PieLabelGenerator.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.charts.util; + +import java.io.Serializable; +import java.text.AttributedString; +import java.util.Map; +import org.jfree.chart.labels.PieSectionLabelGenerator; +import org.jfree.data.general.PieDataset; + +public class PieLabelGenerator implements PieSectionLabelGenerator, Serializable { + private static final long serialVersionUID = 10200L; + + private Map labels = null; + + public PieLabelGenerator(Map labels) { + this.labels = labels; + } + + public String generateSectionLabel(PieDataset arg0, Comparable arg1) { + return (String)this.labels.get(arg1); + } + + public AttributedString generateAttributedSectionLabel(PieDataset arg0, Comparable arg1) { + return new AttributedString(generateSectionLabel(arg0, arg1)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodChartHyperlinkProvider.java b/hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodChartHyperlinkProvider.java new file mode 100644 index 0000000..86d6be6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodChartHyperlinkProvider.java @@ -0,0 +1,38 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import org.jfree.chart.entity.ChartEntity; +import org.jfree.chart.entity.XYItemEntity; +import org.jfree.data.time.TimePeriod; +import org.jfree.data.time.TimePeriodValues; +import org.jfree.data.time.TimePeriodValuesCollection; + +public class TimePeriodChartHyperlinkProvider implements ChartHyperlinkProvider { + private static final long serialVersionUID = 10200L; + + private Map itemHyperlinks; + + public TimePeriodChartHyperlinkProvider(Map itemHyperlinks) { + this.itemHyperlinks = itemHyperlinks; + } + + public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { + JRPrintHyperlink printHyperlink = null; + if (hasHyperlinks() && entity instanceof XYItemEntity) { + XYItemEntity itemEntity = (XYItemEntity)entity; + TimePeriodValuesCollection dataset = (TimePeriodValuesCollection)itemEntity.getDataset(); + TimePeriodValues series = dataset.getSeries(itemEntity.getSeriesIndex()); + Map serieHyperlinks = (Map)this.itemHyperlinks.get(series.getKey()); + if (serieHyperlinks != null) { + TimePeriod timePeriod = series.getTimePeriod(itemEntity.getItem()); + printHyperlink = (JRPrintHyperlink)serieHyperlinks.get(timePeriod); + } + } + return printHyperlink; + } + + public boolean hasHyperlinks() { + return (this.itemHyperlinks != null && this.itemHyperlinks.size() > 0); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodDatasetLabelGenerator.java b/hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodDatasetLabelGenerator.java new file mode 100644 index 0000000..5f9658b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/TimePeriodDatasetLabelGenerator.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import org.jfree.chart.labels.StandardXYItemLabelGenerator; +import org.jfree.data.time.TimePeriodValuesCollection; +import org.jfree.data.xy.XYDataset; + +public class TimePeriodDatasetLabelGenerator extends StandardXYItemLabelGenerator { + private static final long serialVersionUID = 10200L; + + private Map labelsMap = null; + + public TimePeriodDatasetLabelGenerator(Map labelsMap) { + this.labelsMap = labelsMap; + } + + public String generateLabel(XYDataset dataset, int series, int item) { + Comparable seriesName = dataset.getSeriesKey(series); + Map labels = (Map)this.labelsMap.get(seriesName); + if (labels != null) + return (String)labels.get(((TimePeriodValuesCollection)dataset).getSeries(series).getTimePeriod(item)); + return super.generateLabel(dataset, series, item); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesChartHyperlinkProvider.java b/hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesChartHyperlinkProvider.java new file mode 100644 index 0000000..646f0da --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesChartHyperlinkProvider.java @@ -0,0 +1,38 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import org.jfree.chart.entity.ChartEntity; +import org.jfree.chart.entity.XYItemEntity; +import org.jfree.data.time.RegularTimePeriod; +import org.jfree.data.time.TimeSeries; +import org.jfree.data.time.TimeSeriesCollection; + +public class TimeSeriesChartHyperlinkProvider implements ChartHyperlinkProvider { + private static final long serialVersionUID = 10200L; + + private Map itemHyperlinks; + + public TimeSeriesChartHyperlinkProvider(Map itemHyperlinks) { + this.itemHyperlinks = itemHyperlinks; + } + + public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { + JRPrintHyperlink printHyperlink = null; + if (hasHyperlinks() && entity instanceof XYItemEntity) { + XYItemEntity itemEntity = (XYItemEntity)entity; + TimeSeriesCollection dataset = (TimeSeriesCollection)itemEntity.getDataset(); + TimeSeries series = dataset.getSeries(itemEntity.getSeriesIndex()); + Map serieHyperlinks = (Map)this.itemHyperlinks.get(series.getKey()); + if (serieHyperlinks != null) { + RegularTimePeriod timePeriod = series.getTimePeriod(itemEntity.getItem()); + printHyperlink = (JRPrintHyperlink)serieHyperlinks.get(timePeriod); + } + } + return printHyperlink; + } + + public boolean hasHyperlinks() { + return (this.itemHyperlinks != null && this.itemHyperlinks.size() > 0); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesLabelGenerator.java b/hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesLabelGenerator.java new file mode 100644 index 0000000..3cd04e4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/TimeSeriesLabelGenerator.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import org.jfree.chart.labels.StandardXYItemLabelGenerator; +import org.jfree.data.time.TimeSeriesCollection; +import org.jfree.data.xy.XYDataset; + +public class TimeSeriesLabelGenerator extends StandardXYItemLabelGenerator { + private static final long serialVersionUID = 10200L; + + private Map labelsMap = null; + + public TimeSeriesLabelGenerator(Map labelsMap) { + this.labelsMap = labelsMap; + } + + public String generateLabel(XYDataset dataset, int series, int item) { + Comparable seriesName = dataset.getSeriesKey(series); + Map labels = (Map)this.labelsMap.get(seriesName); + if (labels != null) + return (String)labels.get(((TimeSeriesCollection)dataset).getSeries(series).getTimePeriod(item)); + return super.generateLabel(dataset, series, item); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/XYChartHyperlinkProvider.java b/hrmsEjb/net/sf/jasperreports/charts/util/XYChartHyperlinkProvider.java new file mode 100644 index 0000000..31aa97d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/XYChartHyperlinkProvider.java @@ -0,0 +1,39 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.util.Pair; +import org.jfree.chart.entity.ChartEntity; +import org.jfree.chart.entity.XYItemEntity; +import org.jfree.data.xy.XYDataset; + +public class XYChartHyperlinkProvider implements ChartHyperlinkProvider { + private static final long serialVersionUID = 10200L; + + private Map itemHyperlinks; + + public XYChartHyperlinkProvider(Map itemHyperlinks) { + this.itemHyperlinks = itemHyperlinks; + } + + public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { + JRPrintHyperlink printHyperlink = null; + if (hasHyperlinks() && entity instanceof XYItemEntity) { + XYItemEntity itemEntity = (XYItemEntity)entity; + XYDataset dataset = itemEntity.getDataset(); + Comparable serie = dataset.getSeriesKey(itemEntity.getSeriesIndex()); + Map serieHyperlinks = (Map)this.itemHyperlinks.get(serie); + if (serieHyperlinks != null) { + Number x = dataset.getX(itemEntity.getSeriesIndex(), itemEntity.getItem()); + Number y = dataset.getY(itemEntity.getSeriesIndex(), itemEntity.getItem()); + Object xyKey = new Pair(x, y); + printHyperlink = (JRPrintHyperlink)serieHyperlinks.get(xyKey); + } + } + return printHyperlink; + } + + public boolean hasHyperlinks() { + return (this.itemHyperlinks != null && this.itemHyperlinks.size() > 0); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/XYDatasetLabelGenerator.java b/hrmsEjb/net/sf/jasperreports/charts/util/XYDatasetLabelGenerator.java new file mode 100644 index 0000000..16a1170 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/XYDatasetLabelGenerator.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.charts.util; + +import java.util.Map; +import org.jfree.chart.labels.StandardXYItemLabelGenerator; +import org.jfree.data.xy.XYDataset; +import org.jfree.data.xy.XYSeriesCollection; + +public class XYDatasetLabelGenerator extends StandardXYItemLabelGenerator { + private static final long serialVersionUID = 10200L; + + private Map labelsMap = null; + + public XYDatasetLabelGenerator(Map labelsMap) { + this.labelsMap = labelsMap; + } + + public String generateLabel(XYDataset dataset, int series, int item) { + Comparable seriesName = dataset.getSeriesKey(series); + Map labels = (Map)this.labelsMap.get(seriesName); + if (labels != null) + return (String)labels.get(((XYSeriesCollection)dataset).getX(series, item)); + return super.generateLabel(dataset, series, item); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/charts/util/XYZElement.java b/hrmsEjb/net/sf/jasperreports/charts/util/XYZElement.java new file mode 100644 index 0000000..430ae1d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/charts/util/XYZElement.java @@ -0,0 +1,56 @@ +package net.sf.jasperreports.charts.util; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +public class XYZElement implements Serializable { + private static final long serialVersionUID = 10200L; + + private Comparable series = null; + + private List xElements = null; + + private List yElements = null; + + private List zElements = null; + + public XYZElement() { + this.xElements = new ArrayList(); + this.yElements = new ArrayList(); + this.zElements = new ArrayList(); + } + + public void setSeries(Comparable series) { + this.series = series; + } + + public Comparable getSeries() { + return this.series; + } + + public void addElement(Number xElement, Number yElement, Number zElement) { + this.xElements.add(xElement); + this.yElements.add(yElement); + this.zElements.add(zElement); + } + + public Number getXElement(int index) { + return this.xElements.get(index); + } + + public Number getYElement(int index) { + return this.yElements.get(index); + } + + public Number getZElement(int index) { + return this.zElements.get(index); + } + + public int getCount() { + int retVal = 0; + if (this.xElements != null) + retVal = this.xElements.size(); + return retVal; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCellContents.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCellContents.java new file mode 100644 index 0000000..8bf3f42 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCellContents.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.crosstabs; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRStyleContainer; + +public interface JRCellContents extends JRElementGroup, JRStyleContainer, JRBoxContainer { + public static final byte POSITION_X_LEFT = 1; + + public static final byte POSITION_X_CENTER = 2; + + public static final byte POSITION_X_RIGHT = 3; + + public static final byte POSITION_X_STRETCH = 4; + + public static final byte POSITION_Y_TOP = 1; + + public static final byte POSITION_Y_MIDDLE = 2; + + public static final byte POSITION_Y_BOTTOM = 3; + + public static final byte POSITION_Y_STRETCH = 4; + + public static final int NOT_CALCULATED = -2147483648; + + Color getBackcolor(); + + JRBox getBox(); + + int getWidth(); + + int getHeight(); + + Byte getMode(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstab.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstab.java new file mode 100644 index 0000000..3bae494 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstab.java @@ -0,0 +1,51 @@ +package net.sf.jasperreports.crosstabs; + +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRVariable; + +public interface JRCrosstab extends JRElement { + public static final int DEFAULT_COLUMN_BREAK_OFFSET = 10; + + public static final String VARIABLE_ROW_COUNT = "ROW_COUNT"; + + public static final String VARIABLE_COLUMN_COUNT = "COLUMN_COUNT"; + + public static final byte RUN_DIRECTION_LTR = 0; + + public static final byte RUN_DIRECTION_RTL = 1; + + int getId(); + + JRCrosstabDataset getDataset(); + + JRCrosstabRowGroup[] getRowGroups(); + + JRCrosstabColumnGroup[] getColumnGroups(); + + JRCrosstabMeasure[] getMeasures(); + + int getColumnBreakOffset(); + + boolean isRepeatColumnHeaders(); + + boolean isRepeatRowHeaders(); + + JRCrosstabCell[][] getCells(); + + JRCrosstabParameter[] getParameters(); + + JRExpression getParametersMapExpression(); + + JRCellContents getWhenNoDataCell(); + + JRElement getElementByKey(String paramString); + + JRCellContents getHeaderCell(); + + JRVariable[] getVariables(); + + byte getRunDirection(); + + void setRunDirection(byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabBucket.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabBucket.java new file mode 100644 index 0000000..3ee9f1c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabBucket.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.crosstabs; + +import net.sf.jasperreports.engine.JRExpression; + +public interface JRCrosstabBucket { + byte getOrder(); + + JRExpression getExpression(); + + JRExpression getComparatorExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabCell.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabCell.java new file mode 100644 index 0000000..3af2897 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabCell.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.crosstabs; + +import net.sf.jasperreports.engine.JRCloneable; + +public interface JRCrosstabCell extends JRCloneable { + Integer getWidth(); + + Integer getHeight(); + + String getRowTotalGroup(); + + String getColumnTotalGroup(); + + JRCellContents getContents(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabColumnGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabColumnGroup.java new file mode 100644 index 0000000..170467a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabColumnGroup.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.crosstabs; + +public interface JRCrosstabColumnGroup extends JRCrosstabGroup { + int getHeight(); + + byte getPosition(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabDataset.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabDataset.java new file mode 100644 index 0000000..1c83c29 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabDataset.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.crosstabs; + +import net.sf.jasperreports.engine.JRElementDataset; + +public interface JRCrosstabDataset extends JRElementDataset { + boolean isDataPreSorted(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabGroup.java new file mode 100644 index 0000000..5e9c32a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabGroup.java @@ -0,0 +1,20 @@ +package net.sf.jasperreports.crosstabs; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRVariable; + +public interface JRCrosstabGroup extends JRCloneable { + String getName(); + + byte getTotalPosition(); + + JRCrosstabBucket getBucket(); + + JRCellContents getHeader(); + + JRCellContents getTotalHeader(); + + JRVariable getVariable(); + + boolean hasTotal(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabMeasure.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabMeasure.java new file mode 100644 index 0000000..6ad1a44 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabMeasure.java @@ -0,0 +1,33 @@ +package net.sf.jasperreports.crosstabs; + +import net.sf.jasperreports.engine.JRCloneable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRVariable; + +public interface JRCrosstabMeasure extends JRCloneable { + public static final byte PERCENTAGE_TYPE_NONE = 0; + + public static final byte PERCENTAGE_TYPE_GRAND_TOTAL = 1; + + String getName(); + + String getValueClassName(); + + Class getValueClass(); + + JRExpression getValueExpression(); + + byte getCalculation(); + + String getIncrementerFactoryClassName(); + + Class getIncrementerFactoryClass(); + + byte getPercentageOfType(); + + String getPercentageCalculatorClassName(); + + Class getPercentageCalculatorClass(); + + JRVariable getVariable(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabParameter.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabParameter.java new file mode 100644 index 0000000..896406d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabParameter.java @@ -0,0 +1,6 @@ +package net.sf.jasperreports.crosstabs; + +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRParameter; + +public interface JRCrosstabParameter extends JRParameter, JRDatasetParameter {} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabRowGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabRowGroup.java new file mode 100644 index 0000000..4e8a855 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/JRCrosstabRowGroup.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.crosstabs; + +public interface JRCrosstabRowGroup extends JRCrosstabGroup { + int getWidth(); + + byte getPosition(); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCellContents.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCellContents.java new file mode 100644 index 0000000..fbfd7b5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCellContents.java @@ -0,0 +1,102 @@ +package net.sf.jasperreports.crosstabs.base; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.base.JRBaseElementGroup; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRBaseCellContents extends JRBaseElementGroup implements JRCellContents, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRDefaultStyleProvider defaultStyleProvider; + + protected JRStyle style; + + protected String styleNameReference; + + protected Byte mode; + + protected Color backcolor; + + protected JRLineBox lineBox; + + protected int width; + + protected int height; + + private JRBox box; + + public JRBaseCellContents(JRCellContents cell, JRBaseObjectFactory factory) { + super((JRElementGroup)cell, factory); + this.box = null; + this.defaultStyleProvider = factory.getDefaultStyleProvider(); + this.style = factory.getStyle(cell.getStyle()); + this.styleNameReference = cell.getStyleNameReference(); + this.mode = cell.getMode(); + this.backcolor = cell.getBackcolor(); + this.lineBox = cell.getLineBox().clone((JRBoxContainer)this); + this.width = cell.getWidth(); + this.height = cell.getHeight(); + } + + public Color getBackcolor() { + return this.backcolor; + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public int getWidth() { + return this.width; + } + + public int getHeight() { + return this.height; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public JRStyle getStyle() { + return this.style; + } + + public Byte getMode() { + return this.mode; + } + + public String getStyleNameReference() { + return this.styleNameReference; + } + + public Color getDefaultLineColor() { + return Color.black; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setBoxToLineBox(this.box, this.lineBox); + this.box = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstab.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstab.java new file mode 100644 index 0000000..c7d5e54 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstab.java @@ -0,0 +1,264 @@ +package net.sf.jasperreports.crosstabs.base; + +import java.util.Iterator; +import java.util.List; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.base.JRBaseElement; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseCrosstab extends JRBaseElement implements JRCrosstab { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_RUN_DIRECTION = "runDirection"; + + protected int id; + + protected JRCrosstabParameter[] parameters; + + protected JRVariable[] variables; + + protected JRExpression parametersMapExpression; + + protected JRCrosstabDataset dataset; + + protected JRCrosstabRowGroup[] rowGroups; + + protected JRCrosstabColumnGroup[] columnGroups; + + protected JRCrosstabMeasure[] measures; + + protected int columnBreakOffset; + + protected boolean repeatColumnHeaders = true; + + protected boolean repeatRowHeaders = true; + + protected byte runDirection; + + protected JRCrosstabCell[][] cells; + + protected JRCellContents whenNoDataCell; + + protected JRCellContents headerCell; + + public JRBaseCrosstab(JRCrosstab crosstab, JRBaseObjectFactory factory, int id) { + super((JRElement)crosstab, factory); + this.id = id; + this.columnBreakOffset = crosstab.getColumnBreakOffset(); + this.repeatColumnHeaders = crosstab.isRepeatColumnHeaders(); + this.repeatRowHeaders = crosstab.isRepeatRowHeaders(); + this.runDirection = crosstab.getRunDirection(); + this.dataset = factory.getCrosstabDataset(crosstab.getDataset()); + copyParameters(crosstab, factory); + copyVariables(crosstab, factory); + this.headerCell = factory.getCell(crosstab.getHeaderCell()); + copyRowGroups(crosstab, factory); + copyColumnGroups(crosstab, factory); + copyMeasures(crosstab, factory); + copyCells(crosstab, factory); + this.whenNoDataCell = factory.getCell(crosstab.getWhenNoDataCell()); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + private void copyParameters(JRCrosstab crosstab, JRBaseObjectFactory factory) { + JRCrosstabParameter[] crossParameters = crosstab.getParameters(); + if (crossParameters != null) { + this.parameters = new JRCrosstabParameter[crossParameters.length]; + for (int i = 0; i < this.parameters.length; i++) + this.parameters[i] = factory.getCrosstabParameter(crossParameters[i]); + } + this.parametersMapExpression = factory.getExpression(crosstab.getParametersMapExpression()); + } + + private void copyVariables(JRCrosstab crosstab, JRBaseObjectFactory factory) { + JRVariable[] vars = crosstab.getVariables(); + if (vars != null) { + this.variables = new JRVariable[vars.length]; + for (int i = 0; i < vars.length; i++) + this.variables[i] = (JRVariable)factory.getVariable(vars[i]); + } + } + + private void copyRowGroups(JRCrosstab crosstab, JRBaseObjectFactory factory) { + JRCrosstabRowGroup[] crossRowGroups = crosstab.getRowGroups(); + if (crossRowGroups != null) { + this.rowGroups = new JRCrosstabRowGroup[crossRowGroups.length]; + for (int i = 0; i < crossRowGroups.length; i++) + this.rowGroups[i] = factory.getCrosstabRowGroup(crossRowGroups[i]); + } + } + + private void copyColumnGroups(JRCrosstab crosstab, JRBaseObjectFactory factory) { + JRCrosstabColumnGroup[] crossColumnGroups = crosstab.getColumnGroups(); + if (crossColumnGroups != null) { + this.columnGroups = new JRCrosstabColumnGroup[crossColumnGroups.length]; + for (int i = 0; i < crossColumnGroups.length; i++) + this.columnGroups[i] = factory.getCrosstabColumnGroup(crossColumnGroups[i]); + } + } + + private void copyMeasures(JRCrosstab crosstab, JRBaseObjectFactory factory) { + JRCrosstabMeasure[] crossMeasures = crosstab.getMeasures(); + if (crossMeasures != null) { + this.measures = new JRCrosstabMeasure[crossMeasures.length]; + for (int i = 0; i < crossMeasures.length; i++) + this.measures[i] = factory.getCrosstabMeasure(crossMeasures[i]); + } + } + + private void copyCells(JRCrosstab crosstab, JRBaseObjectFactory factory) { + JRCrosstabCell[][] crossCells = crosstab.getCells(); + if (crossCells != null) { + this.cells = new JRCrosstabCell[this.rowGroups.length + 1][this.columnGroups.length + 1]; + for (int i = 0; i <= this.rowGroups.length; i++) { + for (int j = 0; j <= this.columnGroups.length; j++) + this.cells[i][j] = factory.getCrosstabCell(crossCells[i][j]); + } + } + } + + public int getId() { + return this.id; + } + + public JRCrosstabDataset getDataset() { + return this.dataset; + } + + public JRCrosstabRowGroup[] getRowGroups() { + return this.rowGroups; + } + + public JRCrosstabColumnGroup[] getColumnGroups() { + return this.columnGroups; + } + + public JRCrosstabMeasure[] getMeasures() { + return this.measures; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitCrosstab(this); + } + + public int getColumnBreakOffset() { + return this.columnBreakOffset; + } + + public boolean isRepeatColumnHeaders() { + return this.repeatColumnHeaders; + } + + public boolean isRepeatRowHeaders() { + return this.repeatRowHeaders; + } + + public JRCrosstabCell[][] getCells() { + return this.cells; + } + + public JRCrosstabParameter[] getParameters() { + return this.parameters; + } + + public JRExpression getParametersMapExpression() { + return this.parametersMapExpression; + } + + public JRCellContents getWhenNoDataCell() { + return this.whenNoDataCell; + } + + public static JRElement getElementByKey(JRCrosstab crosstab, String key) { + JRElement element = null; + if (crosstab.getHeaderCell() != null) + element = crosstab.getHeaderCell().getElementByKey(key); + if (element == null) + element = getHeadersElement((JRCrosstabGroup[])crosstab.getRowGroups(), key); + if (element == null) + element = getHeadersElement((JRCrosstabGroup[])crosstab.getColumnGroups(), key); + if (element == null) + if (crosstab instanceof JRDesignCrosstab) { + List cellsList = ((JRDesignCrosstab)crosstab).getCellsList(); + for (Iterator it = cellsList.iterator(); element == null && it.hasNext(); ) { + JRCrosstabCell cell = it.next(); + element = cell.getContents().getElementByKey(key); + } + } else { + JRCrosstabCell[][] cells = crosstab.getCells(); + for (int i = cells.length - 1; element == null && i >= 0; i--) { + for (int j = (cells[i]).length - 1; element == null && j >= 0; j--) { + JRCrosstabCell cell = cells[i][j]; + if (cell != null) + element = cell.getContents().getElementByKey(key); + } + } + } + if (element == null && crosstab.getWhenNoDataCell() != null) + element = crosstab.getWhenNoDataCell().getElementByKey(key); + return element; + } + + private static JRElement getHeadersElement(JRCrosstabGroup[] groups, String key) { + JRElement element = null; + if (groups != null) + for (int i = 0; element == null && i < groups.length; i++) { + JRCellContents header = groups[i].getHeader(); + element = header.getElementByKey(key); + if (element == null) { + JRCellContents totalHeader = groups[i].getTotalHeader(); + element = totalHeader.getElementByKey(key); + } + } + return element; + } + + public JRElement getElementByKey(String elementKey) { + return getElementByKey(this, elementKey); + } + + public JRCellContents getHeaderCell() { + return this.headerCell; + } + + public JRVariable[] getVariables() { + return this.variables; + } + + public byte getRunDirection() { + return this.runDirection; + } + + public void setRunDirection(byte runDirection) { + byte old = this.runDirection; + this.runDirection = runDirection; + getEventSupport().firePropertyChange("runDirection", old, this.runDirection); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabBucket.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabBucket.java new file mode 100644 index 0000000..0a4d222 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabBucket.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.crosstabs.base; + +import java.io.Serializable; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseCrosstabBucket implements JRCrosstabBucket, Serializable { + private static final long serialVersionUID = 10200L; + + protected byte order = 1; + + protected JRExpression expression; + + protected JRExpression comparatorExpression; + + protected JRBaseCrosstabBucket() {} + + public JRBaseCrosstabBucket(JRCrosstabBucket bucket, JRBaseObjectFactory factory) { + factory.put(bucket, this); + this.order = bucket.getOrder(); + this.expression = factory.getExpression(bucket.getExpression()); + this.comparatorExpression = factory.getExpression(bucket.getComparatorExpression()); + } + + public byte getOrder() { + return this.order; + } + + public JRExpression getExpression() { + return this.expression; + } + + public JRExpression getComparatorExpression() { + return this.comparatorExpression; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabCell.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabCell.java new file mode 100644 index 0000000..62b6db3 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabCell.java @@ -0,0 +1,64 @@ +package net.sf.jasperreports.crosstabs.base; + +import java.io.Serializable; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseCrosstabCell implements JRCrosstabCell, Serializable { + private static final long serialVersionUID = 10200L; + + protected Integer width; + + protected Integer height; + + protected String rowTotalGroup; + + protected String columnTotalGroup; + + protected JRCellContents contents; + + protected JRBaseCrosstabCell() {} + + public JRBaseCrosstabCell(JRCrosstabCell crosstabCell, JRBaseObjectFactory factory) { + factory.put(crosstabCell, this); + this.width = crosstabCell.getWidth(); + this.height = crosstabCell.getHeight(); + this.rowTotalGroup = crosstabCell.getRowTotalGroup(); + this.columnTotalGroup = crosstabCell.getColumnTotalGroup(); + this.contents = factory.getCell(crosstabCell.getContents()); + } + + public String getRowTotalGroup() { + return this.rowTotalGroup; + } + + public String getColumnTotalGroup() { + return this.columnTotalGroup; + } + + public JRCellContents getContents() { + return this.contents; + } + + public Integer getHeight() { + return this.height; + } + + public Integer getWidth() { + return this.width; + } + + public Object clone() { + JRBaseCrosstabCell clone = null; + try { + clone = (JRBaseCrosstabCell)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.contents != null) + clone.contents = (JRCellContents)this.contents.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabColumnGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabColumnGroup.java new file mode 100644 index 0000000..366f1dd --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabColumnGroup.java @@ -0,0 +1,27 @@ +package net.sf.jasperreports.crosstabs.base; + +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseCrosstabColumnGroup extends JRBaseCrosstabGroup implements JRCrosstabColumnGroup { + private static final long serialVersionUID = 10200L; + + protected int height; + + protected byte position = 1; + + public JRBaseCrosstabColumnGroup(JRCrosstabColumnGroup group, JRBaseObjectFactory factory) { + super((JRCrosstabGroup)group, factory); + this.height = group.getHeight(); + this.position = group.getPosition(); + } + + public byte getPosition() { + return this.position; + } + + public int getHeight() { + return this.height; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabDataset.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabDataset.java new file mode 100644 index 0000000..26b15fd --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabDataset.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.crosstabs.base; + +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.base.JRBaseElementDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseCrosstabDataset extends JRBaseElementDataset implements JRCrosstabDataset { + private static final long serialVersionUID = 10200L; + + protected boolean dataPreSorted = false; + + public JRBaseCrosstabDataset(JRCrosstabDataset dataset, JRBaseObjectFactory factory) { + super((JRElementDataset)dataset, factory); + this.dataPreSorted = dataset.isDataPreSorted(); + } + + public void collectExpressions(JRExpressionCollector collector) {} + + public boolean isDataPreSorted() { + return this.dataPreSorted; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabGroup.java new file mode 100644 index 0000000..ebf0686 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabGroup.java @@ -0,0 +1,66 @@ +package net.sf.jasperreports.crosstabs.base; + +import java.io.Serializable; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public abstract class JRBaseCrosstabGroup implements JRCrosstabGroup, Serializable { + protected String name; + + protected byte totalPosition = 0; + + protected JRCrosstabBucket bucket; + + protected JRCellContents header; + + protected JRCellContents totalHeader; + + protected JRVariable variable; + + protected JRBaseCrosstabGroup() {} + + public JRBaseCrosstabGroup(JRCrosstabGroup group, JRBaseObjectFactory factory) { + factory.put(group, this); + this.name = group.getName(); + this.totalPosition = group.getTotalPosition(); + this.bucket = factory.getCrosstabBucket(group.getBucket()); + this.header = factory.getCell(group.getHeader()); + this.totalHeader = factory.getCell(group.getTotalHeader()); + this.variable = (JRVariable)factory.getVariable(group.getVariable()); + } + + public String getName() { + return this.name; + } + + public JRCrosstabBucket getBucket() { + return this.bucket; + } + + public byte getTotalPosition() { + return this.totalPosition; + } + + public boolean hasTotal() { + return (this.totalPosition != 0); + } + + public JRCellContents getHeader() { + return this.header; + } + + public JRCellContents getTotalHeader() { + return this.totalHeader; + } + + public JRVariable getVariable() { + return this.variable; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabMeasure.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabMeasure.java new file mode 100644 index 0000000..74d8b48 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabMeasure.java @@ -0,0 +1,148 @@ +package net.sf.jasperreports.crosstabs.base; + +import java.io.Serializable; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.util.JRClassLoader; + +public class JRBaseCrosstabMeasure implements JRCrosstabMeasure, Serializable { + private static final long serialVersionUID = 10200L; + + protected String name; + + protected String valueClassName; + + protected String valueClassRealName = null; + + protected Class valueClass; + + protected JRExpression expression; + + protected byte calculation = 1; + + protected String incrementerFactoryClassName; + + protected String incrementerFactoryClassRealName; + + protected Class incrementerFactoryClass; + + protected byte percentageOfType = 0; + + protected String percentageCalculatorClassName; + + protected String percentageCalculatorClassRealName; + + protected Class percentageCalculatorClass; + + protected JRVariable variable; + + protected JRBaseCrosstabMeasure() {} + + public JRBaseCrosstabMeasure(JRCrosstabMeasure measure, JRBaseObjectFactory factory) { + factory.put(measure, this); + this.name = measure.getName(); + this.valueClassName = measure.getValueClassName(); + this.expression = factory.getExpression(measure.getValueExpression()); + this.calculation = measure.getCalculation(); + this.incrementerFactoryClassName = measure.getIncrementerFactoryClassName(); + this.percentageOfType = measure.getPercentageOfType(); + this.percentageCalculatorClassName = measure.getPercentageCalculatorClassName(); + this.variable = (JRVariable)factory.getVariable(measure.getVariable()); + } + + public String getName() { + return this.name; + } + + public String getValueClassName() { + return this.valueClassName; + } + + public JRExpression getValueExpression() { + return this.expression; + } + + public byte getCalculation() { + return this.calculation; + } + + public String getIncrementerFactoryClassName() { + return this.incrementerFactoryClassName; + } + + public byte getPercentageOfType() { + return this.percentageOfType; + } + + public Class getIncrementerFactoryClass() { + if (this.incrementerFactoryClass == null) { + String className = getIncrementerFactoryClassRealName(); + if (className != null) + try { + this.incrementerFactoryClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException("Could not load measure incrementer class", e); + } + } + return this.incrementerFactoryClass; + } + + private String getIncrementerFactoryClassRealName() { + if (this.incrementerFactoryClassRealName == null) + this.incrementerFactoryClassRealName = JRClassLoader.getClassRealName(this.incrementerFactoryClassName); + return this.incrementerFactoryClassRealName; + } + + public Class getValueClass() { + if (this.valueClass == null) { + String className = getValueClassRealName(); + if (className != null) + try { + this.valueClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException("Could not load bucket value class", e); + } + } + return this.valueClass; + } + + private String getValueClassRealName() { + if (this.valueClassRealName == null) + this.valueClassRealName = JRClassLoader.getClassRealName(this.valueClassName); + return this.valueClassRealName; + } + + public JRVariable getVariable() { + return this.variable; + } + + public String getPercentageCalculatorClassName() { + return this.percentageCalculatorClassName; + } + + public Class getPercentageCalculatorClass() { + if (this.percentageCalculatorClass == null) { + String className = getPercentageCalculatorClassRealName(); + if (className != null) + try { + this.percentageCalculatorClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException("Could not load measure percentage calculator class", e); + } + } + return this.percentageCalculatorClass; + } + + private String getPercentageCalculatorClassRealName() { + if (this.percentageCalculatorClassRealName == null) + this.percentageCalculatorClassRealName = JRClassLoader.getClassRealName(this.percentageCalculatorClassName); + return this.percentageCalculatorClassRealName; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabParameter.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabParameter.java new file mode 100644 index 0000000..d56982c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabParameter.java @@ -0,0 +1,31 @@ +package net.sf.jasperreports.crosstabs.base; + +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.base.JRBaseParameter; + +public class JRBaseCrosstabParameter extends JRBaseParameter implements JRCrosstabParameter { + private static final long serialVersionUID = 10200L; + + protected JRExpression valueExpression; + + protected JRBaseCrosstabParameter() {} + + public JRBaseCrosstabParameter(JRCrosstabParameter parameter, JRBaseObjectFactory factory) { + super((JRParameter)parameter, factory); + this.valueExpression = factory.getExpression(parameter.getExpression()); + } + + public JRExpression getExpression() { + return this.valueExpression; + } + + public Object clone() { + JRBaseCrosstabParameter clone = (JRBaseCrosstabParameter)super.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabRowGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabRowGroup.java new file mode 100644 index 0000000..1979e85 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/base/JRBaseCrosstabRowGroup.java @@ -0,0 +1,27 @@ +package net.sf.jasperreports.crosstabs.base; + +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public class JRBaseCrosstabRowGroup extends JRBaseCrosstabGroup implements JRCrosstabRowGroup { + private static final long serialVersionUID = 10200L; + + protected int width; + + protected byte position = 1; + + public JRBaseCrosstabRowGroup(JRCrosstabRowGroup group, JRBaseObjectFactory factory) { + super((JRCrosstabGroup)group, factory); + this.width = group.getWidth(); + this.position = group.getPosition(); + } + + public byte getPosition() { + return this.position; + } + + public int getWidth() { + return this.width; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRCrosstabOrigin.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRCrosstabOrigin.java new file mode 100644 index 0000000..16fbe23 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRCrosstabOrigin.java @@ -0,0 +1,56 @@ +package net.sf.jasperreports.crosstabs.design; + +import java.io.Serializable; + +public class JRCrosstabOrigin implements Serializable { + private static final long serialVersionUID = 10200L; + + public static final byte TYPE_HEADER_CELL = 1; + + public static final byte TYPE_WHEN_NO_DATA_CELL = 2; + + public static final byte TYPE_ROW_GROUP_HEADER = 3; + + public static final byte TYPE_ROW_GROUP_TOTAL_HEADER = 4; + + public static final byte TYPE_COLUMN_GROUP_HEADER = 5; + + public static final byte TYPE_COLUMN_GROUP_TOTAL_HEADER = 6; + + public static final byte TYPE_DATA_CELL = 7; + + private final JRDesignCrosstab crosstab; + + private final byte type; + + private final String rowGroupName; + + private final String columnGroupName; + + public JRCrosstabOrigin(JRDesignCrosstab crosstab, byte type) { + this(crosstab, type, null, null); + } + + public JRCrosstabOrigin(JRDesignCrosstab crosstab, byte type, String rowGroupName, String columnGroupName) { + this.crosstab = crosstab; + this.type = type; + this.rowGroupName = rowGroupName; + this.columnGroupName = columnGroupName; + } + + public byte getType() { + return this.type; + } + + public String getRowGroupName() { + return this.rowGroupName; + } + + public String getColumnGroupName() { + return this.columnGroupName; + } + + public JRDesignCrosstab getCrosstab() { + return this.crosstab; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCellContents.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCellContents.java new file mode 100644 index 0000000..e92b418 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCellContents.java @@ -0,0 +1,147 @@ +package net.sf.jasperreports.crosstabs.design; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.design.JRDesignElementGroup; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRDesignCellContents extends JRDesignElementGroup implements JRCellContents { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_BOX = "box"; + + public static final String PROPERTY_STYLE = "style"; + + public static final String PROPERTY_STYLE_NAME_REFERENCE = "styleNameReference"; + + protected JRDefaultStyleProvider defaultStyleProvider; + + protected JRStyle style; + + protected String styleNameReference; + + protected Byte mode; + + private Color backcolor; + + private JRLineBox lineBox; + + private int width = Integer.MIN_VALUE; + + private int height = Integer.MIN_VALUE; + + private JRCrosstabOrigin origin; + + private JRBox box; + + public Color getBackcolor() { + return this.backcolor; + } + + public void setBackcolor(Color color) { + Object old = this.backcolor; + this.backcolor = color; + getEventSupport().firePropertyChange("backcolor", old, this.backcolor); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, this.lineBox); + } + + public int getHeight() { + return this.height; + } + + protected void setHeight(int height) { + this.height = height; + } + + public int getWidth() { + return this.width; + } + + protected void setWidth(int width) { + this.width = width; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public JRStyle getStyle() { + return this.style; + } + + public void setStyle(JRStyle style) { + Object old = this.style; + this.style = style; + getEventSupport().firePropertyChange("style", old, this.style); + } + + public Byte getMode() { + return this.mode; + } + + public void setMode(Byte mode) { + Object old = this.mode; + this.mode = mode; + getEventSupport().firePropertyChange("mode", old, this.mode); + } + + public String getStyleNameReference() { + return this.styleNameReference; + } + + public void setStyleNameReference(String styleName) { + Object old = this.styleNameReference; + this.styleNameReference = styleName; + getEventSupport().firePropertyChange("styleNameReference", old, this.styleNameReference); + } + + public JRCrosstabOrigin getOrigin() { + return this.origin; + } + + public void setOrigin(JRCrosstabOrigin origin) { + this.origin = origin; + } + + public Color getDefaultLineColor() { + return Color.black; + } + + public Object clone() { + return null; + } + + public JRDesignCellContents() { + this.box = null; + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setBoxToLineBox(this.box, this.lineBox); + this.box = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstab.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstab.java new file mode 100644 index 0000000..8249c55 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstab.java @@ -0,0 +1,946 @@ +package net.sf.jasperreports.crosstabs.design; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.Serializable; +import java.net.URLStreamHandlerFactory; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Locale; +import java.util.Map; +import java.util.ResourceBundle; +import java.util.TimeZone; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstab; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.design.JRDesignElement; +import net.sf.jasperreports.engine.design.JRDesignVariable; +import net.sf.jasperreports.engine.util.FileResolver; +import net.sf.jasperreports.engine.util.FormatFactory; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.Pair; +import org.apache.commons.collections.SequencedHashMap; + +public class JRDesignCrosstab extends JRDesignElement implements JRCrosstab { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_COLUMN_BREAK_OFFSET = "columnBreakOffset"; + + public static final String PROPERTY_DATASET = "dataset"; + + public static final String PROPERTY_HEADER_CELL = "headerCell"; + + public static final String PROPERTY_PARAMETERS_MAP_EXPRESSION = "parametersMapExpression"; + + public static final String PROPERTY_REPEAT_COLUMN_HEADERS = "repeatColumnHeaders"; + + public static final String PROPERTY_REPEAT_ROW_HEADERS = "repeatRowHeaders"; + + public static final String PROPERTY_WHEN_NO_DATA_CELL = "whenNoDataCell"; + + public static final String PROPERTY_CELLS = "cells"; + + public static final String PROPERTY_ROW_GROUPS = "rowGroups"; + + public static final String PROPERTY_COLUMN_GROUPS = "columnGroups"; + + public static final String PROPERTY_MEASURES = "measures"; + + public static final String PROPERTY_PARAMETERS = "parameters"; + + protected List parametersList; + + protected Map parametersMap; + + protected SequencedHashMap variablesList; + + protected JRExpression parametersMapExpression; + + protected JRDesignCrosstabDataset dataset; + + protected List rowGroups; + + protected List columnGroups; + + protected List measures; + + protected Map rowGroupsMap; + + protected Map columnGroupsMap; + + protected Map measuresMap; + + protected int columnBreakOffset = 10; + + protected boolean repeatColumnHeaders = true; + + protected boolean repeatRowHeaders = true; + + protected byte runDirection; + + protected List cellsList; + + protected Map cellsMap; + + protected JRDesignCrosstabCell[][] crossCells; + + protected JRDesignCellContents whenNoDataCell; + + protected JRDesignCellContents headerCell; + + private class MeasureClassChangeListener implements PropertyChangeListener, Serializable { + private static final long serialVersionUID = 10200L; + + private final JRDesignCrosstab this$0; + + private MeasureClassChangeListener() {} + + public void propertyChange(PropertyChangeEvent evt) { + JRDesignCrosstab.this.measureClassChanged((JRDesignCrosstabMeasure)evt.getSource(), (String)evt.getNewValue()); + } + } + + private PropertyChangeListener measureClassChangeListener = new MeasureClassChangeListener(); + + private static final Object[] BUILT_IN_PARAMETERS = new Object[] { + "REPORT_PARAMETERS_MAP", Map.class, "REPORT_LOCALE", Locale.class, "REPORT_RESOURCE_BUNDLE", ResourceBundle.class, "REPORT_TIME_ZONE", TimeZone.class, "REPORT_FORMAT_FACTORY", FormatFactory.class, + "REPORT_CLASS_LOADER", ClassLoader.class, "REPORT_URL_HANDLER_FACTORY", URLStreamHandlerFactory.class, "REPORT_FILE_RESOLVER", FileResolver.class }; + + private static final Object[] BUILT_IN_VARIABLES = new Object[] { "ROW_COUNT", Integer.class, "COLUMN_COUNT", Integer.class }; + + public JRDesignCrosstab(JRDefaultStyleProvider defaultStyleProvider) { + super(defaultStyleProvider); + this.parametersList = new ArrayList(); + this.parametersMap = new HashMap(); + this.rowGroupsMap = new HashMap(); + this.rowGroups = new ArrayList(); + this.columnGroupsMap = new HashMap(); + this.columnGroups = new ArrayList(); + this.measuresMap = new HashMap(); + this.measures = new ArrayList(); + this.cellsMap = new HashMap(); + this.cellsList = new ArrayList(); + addBuiltinParameters(); + this.variablesList = new SequencedHashMap(); + addBuiltinVariables(); + this.dataset = new JRDesignCrosstabDataset(); + } + + private void addBuiltinParameters() { + for (int i = 0; i < BUILT_IN_PARAMETERS.length; i++) { + JRDesignCrosstabParameter parameter = new JRDesignCrosstabParameter(); + parameter.setName((String)BUILT_IN_PARAMETERS[i++]); + parameter.setValueClass((Class)BUILT_IN_PARAMETERS[i]); + parameter.setSystemDefined(true); + try { + addParameter(parameter); + } catch (JRException e) {} + } + } + + private void addBuiltinVariables() { + for (int i = 0; i < BUILT_IN_VARIABLES.length; i++) { + JRDesignVariable variable = new JRDesignVariable(); + variable.setName((String)BUILT_IN_VARIABLES[i]); + variable.setValueClass((Class)BUILT_IN_VARIABLES[++i]); + variable.setCalculation((byte)8); + variable.setSystemDefined(true); + addVariable((JRVariable)variable); + } + } + + public JRDesignCrosstab() { + this((JRDefaultStyleProvider)null); + } + + public int getId() { + return 0; + } + + public JRCrosstabDataset getDataset() { + return this.dataset; + } + + public JRDesignCrosstabDataset getDesignDataset() { + return this.dataset; + } + + public JRCrosstabRowGroup[] getRowGroups() { + JRCrosstabRowGroup[] groups = new JRCrosstabRowGroup[this.rowGroups.size()]; + this.rowGroups.toArray((Object[])groups); + return groups; + } + + public JRCrosstabColumnGroup[] getColumnGroups() { + JRCrosstabColumnGroup[] groups = new JRCrosstabColumnGroup[this.columnGroups.size()]; + this.columnGroups.toArray((Object[])groups); + return groups; + } + + public JRCrosstabMeasure[] getMeasures() { + JRCrosstabMeasure[] measureArray = new JRCrosstabMeasure[this.measures.size()]; + this.measures.toArray((Object[])measureArray); + return measureArray; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitCrosstab(this); + } + + public void setDataset(JRDesignCrosstabDataset dataset) { + Object old = this.dataset; + this.dataset = dataset; + getEventSupport().firePropertyChange("dataset", old, this.dataset); + } + + public void addRowGroup(JRDesignCrosstabRowGroup group) throws JRException { + String groupName = group.getName(); + if (this.rowGroupsMap.containsKey(groupName) || this.columnGroupsMap.containsKey(groupName) || this.measuresMap.containsKey(groupName)) + throw new JRException("A group or measure having the same name already exists in the crosstab."); + this.rowGroupsMap.put(groupName, new Integer(this.rowGroups.size())); + this.rowGroups.add(group); + addRowGroupVars(group); + setParent(group); + getEventSupport().fireCollectionElementAddedEvent("rowGroups", group, this.rowGroups.size() - 1); + } + + protected void addRowGroupVars(JRDesignCrosstabRowGroup rowGroup) { + addVariable(rowGroup.getVariable()); + for (Iterator measureIt = this.measures.iterator(); measureIt.hasNext(); ) { + JRCrosstabMeasure measure = measureIt.next(); + addTotalVar(measure, rowGroup, (JRCrosstabColumnGroup)null); + for (Iterator colIt = this.columnGroups.iterator(); colIt.hasNext(); ) { + JRCrosstabColumnGroup colGroup = colIt.next(); + addTotalVar(measure, rowGroup, colGroup); + } + } + } + + public void addColumnGroup(JRDesignCrosstabColumnGroup group) throws JRException { + String groupName = group.getName(); + if (this.rowGroupsMap.containsKey(groupName) || this.columnGroupsMap.containsKey(groupName) || this.measuresMap.containsKey(groupName)) + throw new JRException("A group or measure having the same name already exists in the crosstab."); + this.columnGroupsMap.put(groupName, new Integer(this.columnGroups.size())); + this.columnGroups.add(group); + addColGroupVars(group); + setParent(group); + getEventSupport().fireCollectionElementAddedEvent("columnGroups", group, this.columnGroups.size() - 1); + } + + protected void addColGroupVars(JRDesignCrosstabColumnGroup colGroup) { + addVariable(colGroup.getVariable()); + for (Iterator measureIt = this.measures.iterator(); measureIt.hasNext(); ) { + JRCrosstabMeasure measure = measureIt.next(); + addTotalVar(measure, (JRCrosstabRowGroup)null, colGroup); + for (Iterator rowIt = this.rowGroups.iterator(); rowIt.hasNext(); ) { + JRCrosstabRowGroup rowGroup = rowIt.next(); + addTotalVar(measure, rowGroup, colGroup); + } + } + } + + public void addMeasure(JRDesignCrosstabMeasure measure) throws JRException { + String measureName = measure.getName(); + if (this.rowGroupsMap.containsKey(measureName) || this.columnGroupsMap.containsKey(measureName) || this.measuresMap.containsKey(measureName)) + throw new JRException("A group or measure having the same name already exists in the crosstab."); + measure.addPropertyChangeListener("valueClassName", this.measureClassChangeListener); + this.measuresMap.put(measureName, new Integer(this.measures.size())); + this.measures.add(measure); + addMeasureVars(measure); + getEventSupport().fireCollectionElementAddedEvent("measures", measure, this.measures.size() - 1); + } + + protected void addMeasureVars(JRDesignCrosstabMeasure measure) { + addVariable(measure.getVariable()); + for (Iterator colIt = this.columnGroups.iterator(); colIt.hasNext(); ) { + JRCrosstabColumnGroup colGroup = colIt.next(); + addTotalVar((JRCrosstabMeasure)measure, (JRCrosstabRowGroup)null, colGroup); + } + for (Iterator rowIt = this.rowGroups.iterator(); rowIt.hasNext(); ) { + JRCrosstabRowGroup rowGroup = rowIt.next(); + addTotalVar((JRCrosstabMeasure)measure, rowGroup, (JRCrosstabColumnGroup)null); + for (Iterator iterator = this.columnGroups.iterator(); iterator.hasNext(); ) { + JRCrosstabColumnGroup colGroup = iterator.next(); + addTotalVar((JRCrosstabMeasure)measure, rowGroup, colGroup); + } + } + } + + protected void addTotalVar(JRCrosstabMeasure measure, JRCrosstabRowGroup rowGroup, JRCrosstabColumnGroup colGroup) { + JRDesignVariable var = new JRDesignVariable(); + var.setCalculation((byte)8); + var.setSystemDefined(true); + var.setName(getTotalVariableName(measure, rowGroup, colGroup)); + var.setValueClassName(measure.getValueClassName()); + addVariable((JRVariable)var); + } + + protected void removeTotalVar(JRCrosstabMeasure measure, JRCrosstabRowGroup rowGroup, JRCrosstabColumnGroup colGroup) { + String varName = getTotalVariableName(measure, rowGroup, colGroup); + removeVariable(varName); + } + + public static String getTotalVariableName(JRCrosstabMeasure measure, JRCrosstabRowGroup rowGroup, JRCrosstabColumnGroup colGroup) { + StringBuffer name = new StringBuffer(); + name.append(measure.getName()); + if (rowGroup != null) { + name.append('_'); + name.append(rowGroup.getName()); + } + if (colGroup != null) { + name.append('_'); + name.append(colGroup.getName()); + } + name.append("_ALL"); + return name.toString(); + } + + public JRCrosstabRowGroup removeRowGroup(String groupName) { + JRCrosstabRowGroup removed = null; + Integer idx = (Integer)this.rowGroupsMap.remove(groupName); + if (idx != null) { + removed = this.rowGroups.remove(idx.intValue()); + for (ListIterator listIterator = this.rowGroups.listIterator(idx.intValue()); listIterator.hasNext(); ) { + JRCrosstabRowGroup group = listIterator.next(); + this.rowGroupsMap.put(group.getName(), new Integer(listIterator.previousIndex())); + } + for (Iterator it = this.cellsList.iterator(); it.hasNext(); ) { + JRCrosstabCell cell = it.next(); + String rowTotalGroup = cell.getRowTotalGroup(); + if (rowTotalGroup != null && rowTotalGroup.equals(groupName)) { + it.remove(); + this.cellsMap.remove(new Pair(rowTotalGroup, cell.getColumnTotalGroup())); + getEventSupport().fireCollectionElementRemovedEvent("cells", cell, -1); + } + } + removeRowGroupVars(removed); + getEventSupport().fireCollectionElementRemovedEvent("rowGroups", removed, idx.intValue()); + } + return removed; + } + + protected void removeRowGroupVars(JRCrosstabRowGroup rowGroup) { + removeVariable(rowGroup.getVariable()); + for (Iterator measureIt = this.measures.iterator(); measureIt.hasNext(); ) { + JRCrosstabMeasure measure = measureIt.next(); + removeTotalVar(measure, rowGroup, (JRCrosstabColumnGroup)null); + for (Iterator colIt = this.columnGroups.iterator(); colIt.hasNext(); ) { + JRCrosstabColumnGroup colGroup = colIt.next(); + removeTotalVar(measure, rowGroup, colGroup); + } + } + } + + public JRCrosstabRowGroup removeRowGroup(JRCrosstabRowGroup group) { + return removeRowGroup(group.getName()); + } + + public JRCrosstabColumnGroup removeColumnGroup(String groupName) { + JRCrosstabColumnGroup removed = null; + Integer idx = (Integer)this.columnGroupsMap.remove(groupName); + if (idx != null) { + removed = this.columnGroups.remove(idx.intValue()); + for (ListIterator listIterator = this.columnGroups.listIterator(idx.intValue()); listIterator.hasNext(); ) { + JRCrosstabColumnGroup group = listIterator.next(); + this.columnGroupsMap.put(group.getName(), new Integer(listIterator.previousIndex())); + } + for (Iterator it = this.cellsList.iterator(); it.hasNext(); ) { + JRCrosstabCell cell = it.next(); + String columnTotalGroup = cell.getColumnTotalGroup(); + if (columnTotalGroup != null && columnTotalGroup.equals(groupName)) { + it.remove(); + this.cellsMap.remove(new Pair(cell.getRowTotalGroup(), columnTotalGroup)); + getEventSupport().fireCollectionElementRemovedEvent("cells", cell, -1); + } + } + removeColGroupVars(removed); + getEventSupport().fireCollectionElementRemovedEvent("columnGroups", removed, idx.intValue()); + } + return removed; + } + + protected void removeColGroupVars(JRCrosstabColumnGroup colGroup) { + removeVariable(colGroup.getVariable()); + for (Iterator measureIt = this.measures.iterator(); measureIt.hasNext(); ) { + JRCrosstabMeasure measure = measureIt.next(); + removeTotalVar(measure, (JRCrosstabRowGroup)null, colGroup); + for (Iterator rowIt = this.rowGroups.iterator(); rowIt.hasNext(); ) { + JRCrosstabRowGroup rowGroup = rowIt.next(); + removeTotalVar(measure, rowGroup, colGroup); + } + } + } + + public JRCrosstabColumnGroup removeColumnGroup(JRCrosstabColumnGroup group) { + return removeColumnGroup(group.getName()); + } + + public JRCrosstabMeasure removeMeasure(String measureName) { + JRDesignCrosstabMeasure removed = null; + Integer idx = (Integer)this.measuresMap.remove(measureName); + if (idx != null) { + removed = this.measures.remove(idx.intValue()); + for (ListIterator it = this.measures.listIterator(idx.intValue()); it.hasNext(); ) { + JRCrosstabMeasure group = it.next(); + this.measuresMap.put(group.getName(), new Integer(it.previousIndex())); + } + removeMeasureVars(removed); + removed.removePropertyChangeListener("valueClassName", this.measureClassChangeListener); + getEventSupport().fireCollectionElementRemovedEvent("measures", removed, idx.intValue()); + } + return (JRCrosstabMeasure)removed; + } + + protected void removeMeasureVars(JRDesignCrosstabMeasure measure) { + removeVariable(measure.getVariable()); + for (Iterator colIt = this.columnGroups.iterator(); colIt.hasNext(); ) { + JRCrosstabColumnGroup colGroup = colIt.next(); + removeTotalVar((JRCrosstabMeasure)measure, (JRCrosstabRowGroup)null, colGroup); + } + for (Iterator rowIt = this.rowGroups.iterator(); rowIt.hasNext(); ) { + JRCrosstabRowGroup rowGroup = rowIt.next(); + removeTotalVar((JRCrosstabMeasure)measure, rowGroup, (JRCrosstabColumnGroup)null); + for (Iterator iterator = this.columnGroups.iterator(); iterator.hasNext(); ) { + JRCrosstabColumnGroup colGroup = iterator.next(); + removeTotalVar((JRCrosstabMeasure)measure, rowGroup, colGroup); + } + } + } + + public JRCrosstabMeasure removeMeasure(JRCrosstabMeasure measure) { + return removeMeasure(measure.getName()); + } + + public boolean isRepeatColumnHeaders() { + return this.repeatColumnHeaders; + } + + public void setRepeatColumnHeaders(boolean repeatColumnHeaders) { + boolean old = this.repeatColumnHeaders; + this.repeatColumnHeaders = repeatColumnHeaders; + getEventSupport().firePropertyChange("repeatColumnHeaders", old, this.repeatColumnHeaders); + } + + public boolean isRepeatRowHeaders() { + return this.repeatRowHeaders; + } + + public void setRepeatRowHeaders(boolean repeatRowHeaders) { + boolean old = this.repeatRowHeaders; + this.repeatRowHeaders = repeatRowHeaders; + getEventSupport().firePropertyChange("repeatRowHeaders", old, this.repeatRowHeaders); + } + + public JRCrosstabCell[][] getCells() { + return (JRCrosstabCell[][])this.crossCells; + } + + public List getCellsList() { + return this.cellsList; + } + + public Map getCellsMap() { + return this.cellsMap; + } + + public void addCell(JRDesignCrosstabCell cell) throws JRException { + String rowTotalGroup = cell.getRowTotalGroup(); + if (rowTotalGroup != null && !this.rowGroupsMap.containsKey(rowTotalGroup)) + throw new JRException("Row group " + rowTotalGroup + " does not exist."); + String columnTotalGroup = cell.getColumnTotalGroup(); + if (columnTotalGroup != null && !this.columnGroupsMap.containsKey(columnTotalGroup)) + throw new JRException("Row group " + columnTotalGroup + " does not exist."); + Object cellKey = new Pair(rowTotalGroup, columnTotalGroup); + if (this.cellsMap.containsKey(cellKey)) + throw new JRException("Duplicate cell in crosstab."); + this.cellsMap.put(cellKey, cell); + this.cellsList.add(cell); + setCellOrigin(cell.getContents(), new JRCrosstabOrigin(this, (byte)7, rowTotalGroup, columnTotalGroup)); + getEventSupport().fireCollectionElementAddedEvent("cells", cell, this.cellsList.size() - 1); + } + + public JRCrosstabCell removeCell(String rowTotalGroup, String columnTotalGroup) { + Object cellKey = new Pair(rowTotalGroup, columnTotalGroup); + JRCrosstabCell cell = (JRCrosstabCell)this.cellsMap.remove(cellKey); + if (cell != null) { + this.cellsList.remove(cell); + getEventSupport().fireCollectionElementRemovedEvent("cells", cell, -1); + } + return cell; + } + + public JRCrosstabCell removeCell(JRCrosstabCell cell) { + return removeCell(cell.getRowTotalGroup(), cell.getColumnTotalGroup()); + } + + public JRCrosstabParameter[] getParameters() { + JRCrosstabParameter[] parameters = new JRCrosstabParameter[this.parametersList.size()]; + this.parametersList.toArray((Object[])parameters); + return parameters; + } + + public List getParametersList() { + return this.parametersList; + } + + public Map getParametersMap() { + return this.parametersMap; + } + + public JRExpression getParametersMapExpression() { + return this.parametersMapExpression; + } + + public void addParameter(JRCrosstabParameter parameter) throws JRException { + if (this.parametersMap.containsKey(parameter.getName())) + if (this.parametersMap.containsKey(parameter.getName())) + throw new JRException("Duplicate declaration of parameter : " + parameter.getName()); + this.parametersMap.put(parameter.getName(), parameter); + this.parametersList.add(parameter); + getEventSupport().fireCollectionElementAddedEvent("parameters", parameter, this.parametersList.size() - 1); + } + + public JRCrosstabParameter removeParameter(String parameterName) { + JRCrosstabParameter param = (JRCrosstabParameter)this.parametersMap.remove(parameterName); + if (param != null) { + int idx = this.parametersList.indexOf(param); + if (idx >= 0) + this.parametersList.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("parameters", param, idx); + } + return param; + } + + public JRCrosstabParameter removeParameter(JRCrosstabParameter parameter) { + return removeParameter(parameter.getName()); + } + + public void setParametersMapExpression(JRExpression expression) { + Object old = this.parametersMapExpression; + this.parametersMapExpression = expression; + getEventSupport().firePropertyChange("parametersMapExpression", old, this.parametersMapExpression); + } + + public Map getVariablesMap() { + JRVariable[] variables = getVariables(); + Map variablesMap = new HashMap(); + for (int i = 0; i < variables.length; i++) + variablesMap.put(variables[i].getName(), variables[i]); + return variablesMap; + } + + public JRVariable[] getVariables() { + JRVariable[] variables = new JRVariable[this.variablesList.size()]; + this.variablesList.values().toArray((Object[])variables); + return variables; + } + + public int getColumnBreakOffset() { + return this.columnBreakOffset; + } + + public void setColumnBreakOffset(int columnBreakOffset) { + int old = this.columnBreakOffset; + this.columnBreakOffset = columnBreakOffset; + getEventSupport().firePropertyChange("columnBreakOffset", old, this.columnBreakOffset); + } + + public void preprocess() { + setGroupVariablesClass(this.rowGroups); + setGroupVariablesClass(this.columnGroups); + calculateSizes(); + } + + protected void setGroupVariablesClass(List groups) { + for (Iterator it = groups.iterator(); it.hasNext(); ) { + JRDesignCrosstabGroup group = it.next(); + JRCrosstabBucket bucket = group.getBucket(); + if (bucket != null) { + JRExpression expression = bucket.getExpression(); + if (expression != null) + group.designVariable.setValueClassName(expression.getValueClassName()); + } + } + } + + protected void calculateSizes() { + setWhenNoDataCellSize(); + createCellMatrix(); + int rowHeadersWidth = calculateRowHeadersSizes(); + int colHeadersHeight = calculateColumnHeadersSizes(); + if (this.headerCell != null) { + this.headerCell.setWidth(rowHeadersWidth); + this.headerCell.setHeight(colHeadersHeight); + } + } + + protected void setWhenNoDataCellSize() { + if (this.whenNoDataCell != null) { + this.whenNoDataCell.setWidth(getWidth()); + this.whenNoDataCell.setHeight(getHeight()); + } + } + + protected void createCellMatrix() { + this.crossCells = new JRDesignCrosstabCell[this.rowGroups.size() + 1][this.columnGroups.size() + 1]; + for (Iterator it = this.cellsList.iterator(); it.hasNext(); ) { + JRDesignCrosstabCell crosstabCell = it.next(); + JRDesignCellContents contents = (JRDesignCellContents)crosstabCell.getContents(); + String rowTotalGroup = crosstabCell.getRowTotalGroup(); + int rowGroupIndex = (rowTotalGroup == null) ? (rowGroupIndex = this.rowGroups.size()) : ((Integer)this.rowGroupsMap.get(rowTotalGroup)).intValue(); + Integer cellWidth = crosstabCell.getWidth(); + if (cellWidth != null) + contents.setWidth(cellWidth.intValue()); + String columnTotalGroup = crosstabCell.getColumnTotalGroup(); + int columnGroupIndex = (columnTotalGroup == null) ? (columnGroupIndex = this.columnGroups.size()) : ((Integer)this.columnGroupsMap.get(columnTotalGroup)).intValue(); + Integer cellHeight = crosstabCell.getHeight(); + if (cellHeight != null) + contents.setHeight(cellHeight.intValue()); + this.crossCells[rowGroupIndex][columnGroupIndex] = crosstabCell; + } + inheritCells(); + } + + protected JRDesignCrosstabRowGroup getRowGroup(int rowGroupIndex) { + return this.rowGroups.get(rowGroupIndex); + } + + protected JRDesignCrosstabColumnGroup getColumnGroup(int columnGroupIndex) { + return this.columnGroups.get(columnGroupIndex); + } + + protected void inheritCells() { + for (int i = this.rowGroups.size(); i >= 0; i--) { + for (int j = this.columnGroups.size(); j >= 0; j--) { + boolean used = ((i == this.rowGroups.size() || getRowGroup(i).hasTotal()) && (j == this.columnGroups.size() || getColumnGroup(j).hasTotal())); + if (used) { + if (this.crossCells[i][j] == null) { + inheritCell(i, j); + if (this.crossCells[i][j] == null) { + this.crossCells[i][j] = emptyCell(i, j); + inheritCellSize(i, j); + } + } else { + inheritCellSize(i, j); + } + } else { + this.crossCells[i][j] = null; + } + } + } + } + + private JRDesignCrosstabCell emptyCell(int i, int j) { + JRDesignCrosstabCell emptyCell = new JRDesignCrosstabCell(); + if (i < this.rowGroups.size()) + emptyCell.setRowTotalGroup(((JRCrosstabRowGroup)this.rowGroups.get(i)).getName()); + if (j < this.columnGroups.size()) + emptyCell.setColumnTotalGroup(((JRCrosstabColumnGroup)this.columnGroups.get(j)).getName()); + return emptyCell; + } + + protected void inheritCellSize(int i, int j) { + JRDesignCrosstabCell cell = this.crossCells[i][j]; + JRDesignCellContents contents = (JRDesignCellContents)cell.getContents(); + if (contents.getWidth() == Integer.MIN_VALUE) + if (i < this.rowGroups.size()) { + JRDesignCrosstabCell rowCell = this.crossCells[this.rowGroups.size()][j]; + if (rowCell != null) + contents.setWidth(rowCell.getContents().getWidth()); + } else { + for (int k = j + 1; k <= this.columnGroups.size(); k++) { + if (this.crossCells[i][k] != null) { + contents.setWidth(this.crossCells[i][k].getContents().getWidth()); + break; + } + } + } + if (contents.getHeight() == Integer.MIN_VALUE) + if (j < this.columnGroups.size()) { + JRDesignCrosstabCell colCell = this.crossCells[i][this.columnGroups.size()]; + if (colCell != null) + contents.setHeight(colCell.getContents().getHeight()); + } else { + for (int k = i + 1; k <= this.rowGroups.size(); k++) { + if (this.crossCells[k][j] != null) + contents.setHeight(this.crossCells[k][j].getContents().getHeight()); + } + } + } + + protected void inheritCell(int i, int j) { + JRDesignCrosstabCell inheritedCell = null; + if (j < this.columnGroups.size()) { + JRDesignCrosstabCell colCell = this.crossCells[this.rowGroups.size()][j]; + JRDesignCellContents colContents = (colCell == null) ? null : (JRDesignCellContents)colCell.getContents(); + for (int k = j + 1; inheritedCell == null && k <= this.columnGroups.size(); k++) { + JRDesignCrosstabCell cell = this.crossCells[i][k]; + if (cell != null) { + JRDesignCellContents contents = (JRDesignCellContents)cell.getContents(); + if (colContents == null || contents.getWidth() == colContents.getWidth()) + inheritedCell = cell; + } + } + } + if (inheritedCell == null && i < this.rowGroups.size()) { + JRDesignCrosstabCell rowCell = this.crossCells[i][this.columnGroups.size()]; + JRDesignCellContents rowContents = (rowCell == null) ? null : (JRDesignCellContents)rowCell.getContents(); + for (int k = i + 1; inheritedCell == null && k <= this.rowGroups.size(); k++) { + JRDesignCrosstabCell cell = this.crossCells[k][j]; + if (cell != null) { + JRDesignCellContents contents = (JRDesignCellContents)cell.getContents(); + if (rowContents == null || contents.getHeight() == rowContents.getHeight()) + inheritedCell = cell; + } + } + } + this.crossCells[i][j] = inheritedCell; + } + + protected int calculateRowHeadersSizes() { + int widthSum = 0; + for (int i = this.rowGroups.size() - 1, heightSum = 0; i >= 0; i--) { + JRDesignCrosstabRowGroup group = this.rowGroups.get(i); + widthSum += group.getWidth(); + JRDesignCrosstabCell cell = this.crossCells[i + 1][this.columnGroups.size()]; + if (cell != null) + heightSum += cell.getContents().getHeight(); + JRDesignCellContents header = (JRDesignCellContents)group.getHeader(); + header.setHeight(heightSum); + header.setWidth(group.getWidth()); + if (group.hasTotal()) { + JRDesignCellContents totalHeader = (JRDesignCellContents)group.getTotalHeader(); + totalHeader.setWidth(widthSum); + JRDesignCrosstabCell totalCell = this.crossCells[i][this.columnGroups.size()]; + if (totalCell != null) + totalHeader.setHeight(totalCell.getContents().getHeight()); + } + } + return widthSum; + } + + protected int calculateColumnHeadersSizes() { + int heightSum = 0; + for (int i = this.columnGroups.size() - 1, widthSum = 0; i >= 0; i--) { + JRDesignCrosstabColumnGroup group = this.columnGroups.get(i); + heightSum += group.getHeight(); + JRDesignCrosstabCell cell = this.crossCells[this.rowGroups.size()][i + 1]; + if (cell != null) + widthSum += cell.getContents().getWidth(); + JRDesignCellContents header = (JRDesignCellContents)group.getHeader(); + header.setHeight(group.getHeight()); + header.setWidth(widthSum); + if (group.hasTotal()) { + JRDesignCellContents totalHeader = (JRDesignCellContents)group.getTotalHeader(); + totalHeader.setHeight(heightSum); + JRDesignCrosstabCell totalCell = this.crossCells[this.rowGroups.size()][i]; + if (totalCell != null) + totalHeader.setWidth(totalCell.getContents().getWidth()); + } + } + return heightSum; + } + + public JRCellContents getWhenNoDataCell() { + return this.whenNoDataCell; + } + + public void setWhenNoDataCell(JRDesignCellContents whenNoDataCell) { + Object old = this.whenNoDataCell; + this.whenNoDataCell = whenNoDataCell; + setCellOrigin(this.whenNoDataCell, new JRCrosstabOrigin(this, (byte)2)); + getEventSupport().firePropertyChange("whenNoDataCell", old, this.whenNoDataCell); + } + + public JRElement getElementByKey(String elementKey) { + return JRBaseCrosstab.getElementByKey(this, elementKey); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public JRCellContents getHeaderCell() { + return this.headerCell; + } + + public void setHeaderCell(JRDesignCellContents headerCell) { + Object old = this.headerCell; + this.headerCell = headerCell; + setCellOrigin(this.headerCell, new JRCrosstabOrigin(this, (byte)1)); + getEventSupport().firePropertyChange("headerCell", old, this.headerCell); + } + + protected void measureClassChanged(JRDesignCrosstabMeasure measure, String valueClassName) { + for (Iterator colIt = this.columnGroups.iterator(); colIt.hasNext(); ) { + JRCrosstabColumnGroup colGroup = colIt.next(); + setTotalVarClass((JRCrosstabMeasure)measure, (JRCrosstabRowGroup)null, colGroup, valueClassName); + } + for (Iterator rowIt = this.rowGroups.iterator(); rowIt.hasNext(); ) { + JRCrosstabRowGroup rowGroup = rowIt.next(); + setTotalVarClass((JRCrosstabMeasure)measure, rowGroup, (JRCrosstabColumnGroup)null, valueClassName); + for (Iterator iterator = this.columnGroups.iterator(); iterator.hasNext(); ) { + JRCrosstabColumnGroup colGroup = iterator.next(); + setTotalVarClass((JRCrosstabMeasure)measure, rowGroup, colGroup, valueClassName); + } + } + } + + protected void setTotalVarClass(JRCrosstabMeasure measure, JRCrosstabRowGroup rowGroup, JRCrosstabColumnGroup colGroup, String valueClassName) { + JRDesignVariable variable = getVariable(getTotalVariableName(measure, rowGroup, colGroup)); + variable.setValueClassName(valueClassName); + } + + private void addVariable(JRVariable variable) { + this.variablesList.put(variable.getName(), variable); + } + + private void removeVariable(JRVariable variable) { + removeVariable(variable.getName()); + } + + private void removeVariable(String varName) { + this.variablesList.remove(varName); + } + + private JRDesignVariable getVariable(String varName) { + return (JRDesignVariable)this.variablesList.get(varName); + } + + public byte getRunDirection() { + return this.runDirection; + } + + public void setRunDirection(byte runDirection) { + byte old = this.runDirection; + this.runDirection = runDirection; + getEventSupport().firePropertyChange("runDirection", old, this.runDirection); + } + + protected void setCellOrigin(JRCellContents cell, JRCrosstabOrigin origin) { + if (cell instanceof JRDesignCellContents) + setCellOrigin((JRDesignCellContents)cell, origin); + } + + protected void setCellOrigin(JRDesignCellContents cell, JRCrosstabOrigin origin) { + if (cell != null) + cell.setOrigin(origin); + } + + protected void setParent(JRDesignCrosstabGroup group) { + if (group != null) + group.setParent(this); + } + + public Object clone() { + JRDesignCrosstab clone = (JRDesignCrosstab)super.clone(); + if (this.parametersList != null) { + clone.parametersList = new ArrayList(this.parametersList.size()); + clone.parametersMap = new HashMap(this.parametersList.size()); + for (int i = 0; i < this.parametersList.size(); i++) { + JRCrosstabParameter parameter = (JRCrosstabParameter)((JRCrosstabParameter)this.parametersList.get(i)).clone(); + clone.parametersList.add(parameter); + clone.parametersMap.put(parameter.getName(), parameter); + } + } + if (this.variablesList != null) { + clone.variablesList = new SequencedHashMap(this.variablesList.size()); + for (Iterator it = this.variablesList.sequence().iterator(); it.hasNext(); ) { + Object key = it.next(); + JRVariable variable = (JRVariable)this.variablesList.get(key); + clone.variablesList.put(variable.getName(), variable); + } + } + if (this.parametersMapExpression != null) + clone.parametersMapExpression = (JRExpression)this.parametersMapExpression.clone(); + if (this.dataset != null) + clone.dataset = (JRDesignCrosstabDataset)this.dataset.clone(); + if (this.rowGroups != null) { + clone.rowGroups = new ArrayList(this.rowGroups.size()); + clone.rowGroupsMap = new HashMap(this.rowGroups.size()); + for (int i = 0; i < this.rowGroups.size(); i++) { + JRCrosstabRowGroup group = (JRCrosstabRowGroup)((JRCrosstabRowGroup)this.rowGroups.get(i)).clone(); + clone.rowGroups.add(group); + clone.rowGroupsMap.put(group.getName(), new Integer(i)); + } + } + if (this.columnGroups != null) { + clone.columnGroups = new ArrayList(this.columnGroups.size()); + clone.columnGroupsMap = new HashMap(this.columnGroups.size()); + for (int i = 0; i < this.columnGroups.size(); i++) { + JRCrosstabColumnGroup group = (JRCrosstabColumnGroup)((JRCrosstabColumnGroup)this.columnGroups.get(i)).clone(); + clone.columnGroups.add(group); + clone.columnGroupsMap.put(group.getName(), new Integer(i)); + } + } + if (this.measures != null) { + clone.measures = new ArrayList(this.measures.size()); + clone.measuresMap = new HashMap(this.measures.size()); + for (int i = 0; i < this.measures.size(); i++) { + JRCrosstabMeasure measure = (JRCrosstabMeasure)((JRCrosstabMeasure)this.measures.get(i)).clone(); + clone.measures.add(measure); + clone.measuresMap.put(measure.getName(), new Integer(i)); + } + } + if (this.cellsList != null) { + clone.cellsList = new ArrayList(this.cellsList.size()); + clone.cellsMap = new HashMap(this.cellsList.size()); + for (int i = 0; i < this.cellsList.size(); i++) { + JRDesignCrosstabCell cell = (JRDesignCrosstabCell)((JRDesignCrosstabCell)this.cellsList.get(i)).clone(); + clone.cellsList.add(cell); + clone.cellsMap.put(new Pair(cell.getRowTotalGroup(), cell.getColumnTotalGroup()), cell); + } + } + if (this.whenNoDataCell != null) + clone.whenNoDataCell = (JRDesignCellContents)this.whenNoDataCell.clone(); + if (this.headerCell != null) + clone.headerCell = (JRDesignCellContents)this.headerCell.clone(); + return clone; + } + + public List getRowGroupsList() { + return this.rowGroups; + } + + public Map getRowGroupIndicesMap() { + return this.rowGroupsMap; + } + + public List getColumnGroupsList() { + return this.columnGroups; + } + + public Map getColumnGroupIndicesMap() { + return this.columnGroupsMap; + } + + public List getMesuresList() { + return this.measures; + } + + public Map getMeasureIndicesMap() { + return this.measuresMap; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabBucket.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabBucket.java new file mode 100644 index 0000000..65b689f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabBucket.java @@ -0,0 +1,45 @@ +package net.sf.jasperreports.crosstabs.design; + +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabBucket; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.design.JRDesignExpression; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignCrosstabBucket extends JRBaseCrosstabBucket implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_COMPARATOR_EXPRESSION = "comparatorExpression"; + + public static final String PROPERTY_EXPRESSION = "expression"; + + public static final String PROPERTY_ORDER = "order"; + + private transient JRPropertyChangeSupport eventSupport; + + public void setComparatorExpression(JRExpression comparatorExpression) { + Object old = this.comparatorExpression; + this.comparatorExpression = comparatorExpression; + getEventSupport().firePropertyChange("comparatorExpression", old, this.comparatorExpression); + } + + public void setExpression(JRDesignExpression expression) { + Object old = this.expression; + this.expression = (JRExpression)expression; + getEventSupport().firePropertyChange("expression", old, this.expression); + } + + public void setOrder(byte order) { + byte old = this.order; + this.order = order; + getEventSupport().firePropertyChange("order", old, this.order); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabCell.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabCell.java new file mode 100644 index 0000000..630a7df --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabCell.java @@ -0,0 +1,61 @@ +package net.sf.jasperreports.crosstabs.design; + +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabCell; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignCrosstabCell extends JRBaseCrosstabCell implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_COLUMN_TOTAL_GROUP = "columnTotalGroup"; + + public static final String PROPERTY_CONTENTS = "contents"; + + public static final String PROPERTY_HEIGHT = "height"; + + public static final String PROPERTY_ROW_TOTAL_GROUP = "rowTotalGroup"; + + public static final String PROPERTY_WIDTH = "width"; + + private transient JRPropertyChangeSupport eventSupport; + + public void setColumnTotalGroup(String columnTotalGroup) { + Object old = this.columnTotalGroup; + this.columnTotalGroup = columnTotalGroup; + getEventSupport().firePropertyChange("columnTotalGroup", old, this.columnTotalGroup); + } + + public void setContents(JRDesignCellContents contents) { + Object old = this.contents; + if (contents == null) + contents = new JRDesignCellContents(); + this.contents = contents; + getEventSupport().firePropertyChange("contents", old, this.contents); + } + + public void setRowTotalGroup(String rowTotalGroup) { + Object old = this.rowTotalGroup; + this.rowTotalGroup = rowTotalGroup; + getEventSupport().firePropertyChange("rowTotalGroup", old, this.rowTotalGroup); + } + + public void setWidth(Integer width) { + Object old = this.width; + this.width = width; + getEventSupport().firePropertyChange("width", old, this.width); + } + + public void setHeight(Integer height) { + Object old = this.height; + this.height = height; + getEventSupport().firePropertyChange("height", old, this.height); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabColumnGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabColumnGroup.java new file mode 100644 index 0000000..12aa3aa --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabColumnGroup.java @@ -0,0 +1,51 @@ +package net.sf.jasperreports.crosstabs.design; + +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; + +public class JRDesignCrosstabColumnGroup extends JRDesignCrosstabGroup implements JRCrosstabColumnGroup { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_HEIGHT = "height"; + + public static final String PROPERTY_POSITION = "position"; + + protected int height; + + protected byte position = 1; + + public byte getPosition() { + return this.position; + } + + public void setPosition(byte position) { + byte old = this.position; + this.position = position; + getEventSupport().firePropertyChange("position", old, this.position); + } + + public int getHeight() { + return this.height; + } + + public void setHeight(int height) { + int old = this.height; + this.height = height; + getEventSupport().firePropertyChange("height", old, this.height); + } + + public void setHeader(JRDesignCellContents header) { + super.setHeader(header); + setCellOrigin(this.header, new JRCrosstabOrigin(getParent(), (byte)5, null, getName())); + } + + public void setTotalHeader(JRDesignCellContents totalHeader) { + super.setTotalHeader(totalHeader); + setCellOrigin(this.totalHeader, new JRCrosstabOrigin(getParent(), (byte)6, null, getName())); + } + + void setParent(JRDesignCrosstab parent) { + super.setParent(parent); + setCellOrigin(this.header, new JRCrosstabOrigin(getParent(), (byte)5, null, getName())); + setCellOrigin(this.totalHeader, new JRCrosstabOrigin(getParent(), (byte)6, null, getName())); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabDataset.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabDataset.java new file mode 100644 index 0000000..f3e72b0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabDataset.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.crosstabs.design; + +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.design.JRDesignElementDataset; + +public class JRDesignCrosstabDataset extends JRDesignElementDataset implements JRCrosstabDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DATA_PRE_SORTED = "dataPreSorted"; + + protected boolean dataPreSorted = false; + + public void collectExpressions(JRExpressionCollector collector) {} + + public boolean isDataPreSorted() { + return this.dataPreSorted; + } + + public void setDataPreSorted(boolean dataPreSorted) { + boolean old = this.dataPreSorted; + this.dataPreSorted = dataPreSorted; + getEventSupport().firePropertyChange("dataPreSorted", old, this.dataPreSorted); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabGroup.java new file mode 100644 index 0000000..20825b7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabGroup.java @@ -0,0 +1,95 @@ +package net.sf.jasperreports.crosstabs.design; + +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabGroup; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.design.JRDesignVariable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public abstract class JRDesignCrosstabGroup extends JRBaseCrosstabGroup implements JRChangeEventsSupport { + public static final String PROPERTY_BUCKET = "bucket"; + + public static final String PROPERTY_HEADER = "header"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_TOTAL_HEADER = "totalHeader"; + + public static final String PROPERTY_TOTAL_POSITION = "totalPosition"; + + protected JRDesignVariable designVariable; + + protected JRDesignCrosstab parent; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRDesignCrosstabGroup() { + this.variable = (JRVariable)(this.designVariable = new JRDesignVariable()); + this.designVariable.setCalculation((byte)8); + this.designVariable.setSystemDefined(true); + this.header = new JRDesignCellContents(); + this.totalHeader = new JRDesignCellContents(); + } + + public void setName(String name) { + Object old = this.name; + this.name = name; + this.designVariable.setName(name); + getEventSupport().firePropertyChange("name", old, this.name); + } + + public void setTotalPosition(byte totalPosition) { + byte old = this.totalPosition; + this.totalPosition = totalPosition; + getEventSupport().firePropertyChange("totalPosition", old, this.totalPosition); + } + + public void setBucket(JRDesignCrosstabBucket bucket) { + Object old = this.bucket; + this.bucket = (JRCrosstabBucket)bucket; + getEventSupport().firePropertyChange("bucket", old, this.bucket); + } + + public void setHeader(JRDesignCellContents header) { + Object old = this.header; + if (header == null) + header = new JRDesignCellContents(); + this.header = header; + getEventSupport().firePropertyChange("header", old, this.header); + } + + public void setTotalHeader(JRDesignCellContents totalHeader) { + Object old = this.totalHeader; + if (totalHeader == null) + totalHeader = new JRDesignCellContents(); + this.totalHeader = totalHeader; + getEventSupport().firePropertyChange("totalHeader", old, this.totalHeader); + } + + public JRDesignCrosstab getParent() { + return this.parent; + } + + void setParent(JRDesignCrosstab parent) { + this.parent = parent; + } + + protected void setCellOrigin(JRCellContents cell, JRCrosstabOrigin origin) { + if (cell instanceof JRDesignCellContents) + ((JRDesignCellContents)cell).setOrigin(origin); + } + + public Object clone() { + return null; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabMeasure.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabMeasure.java new file mode 100644 index 0000000..b5a5779 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabMeasure.java @@ -0,0 +1,120 @@ +package net.sf.jasperreports.crosstabs.design; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabMeasure; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.design.JRDesignVariable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignCrosstabMeasure extends JRBaseCrosstabMeasure implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CALCULATION = "calculation"; + + public static final String PROPERTY_INCREMENTER_FACTORY_CLASS_NAME = "incrementerFactoryClassName"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_PERCENTAGE_CALCULATION_CLASS_NAME = "percentageCalculatorClassName"; + + public static final String PROPERTY_PERCENTAGE_OF_TYPE = "percentageOfType"; + + public static final String PROPERTY_VALUE_CLASS = "valueClassName"; + + public static final String PROPERTY_VALUE_EXPRESSION = "expression"; + + private JRDesignVariable designVariable; + + private transient JRPropertyChangeSupport eventSupport; + + public JRDesignCrosstabMeasure() { + this.variable = (JRVariable)(this.designVariable = new JRDesignVariable()); + this.designVariable.setCalculation((byte)8); + this.designVariable.setSystemDefined(true); + } + + public void setCalculation(byte calculation) { + byte old = this.calculation; + this.calculation = calculation; + getEventSupport().firePropertyChange("calculation", old, this.calculation); + } + + public void setValueExpression(JRExpression expression) { + Object old = this.expression; + this.expression = expression; + getEventSupport().firePropertyChange("expression", old, this.expression); + } + + public void setIncrementerFactoryClassName(String incrementerFactoryClassName) { + Object old = this.incrementerFactoryClassName; + this.incrementerFactoryClassName = incrementerFactoryClassName; + this.incrementerFactoryClass = null; + this.incrementerFactoryClassRealName = null; + getEventSupport().firePropertyChange("incrementerFactoryClassName", old, this.incrementerFactoryClassName); + } + + public void setName(String name) { + Object old = this.name; + this.name = name; + this.designVariable.setName(name); + getEventSupport().firePropertyChange("name", old, this.name); + } + + public void setPercentageOfType(byte percentageOfType) { + byte old = this.percentageOfType; + this.percentageOfType = percentageOfType; + getEventSupport().firePropertyChange("percentageOfType", old, this.percentageOfType); + } + + public void setPercentageCalculatorClassName(String percentageCalculatorClassName) { + Object old = this.percentageCalculatorClassName; + this.percentageCalculatorClassName = percentageCalculatorClassName; + this.percentageCalculatorClass = null; + this.percentageCalculatorClassRealName = null; + getEventSupport().firePropertyChange("percentageCalculatorClassName", old, this.percentageCalculatorClassName); + } + + public void setValueClassName(String valueClassName) { + String old = this.valueClassName; + this.valueClassName = valueClassName; + this.valueClass = null; + this.valueClassRealName = null; + this.designVariable.setValueClassName(valueClassName); + getEventSupport().firePropertyChange("valueClassName", old, this.valueClassName); + } + + public void addPropertyChangeListener(PropertyChangeListener l) { + getPropertyChangeSupport().addPropertyChangeListener(l); + } + + public void addPropertyChangeListener(String propName, PropertyChangeListener l) { + getPropertyChangeSupport().addPropertyChangeListener(propName, l); + } + + public void removePropertyChangeListener(PropertyChangeListener l) { + getPropertyChangeSupport().removePropertyChangeListener(l); + } + + public void removePropertyChangeListener(String propName, PropertyChangeListener l) { + getPropertyChangeSupport().removePropertyChangeListener(propName, l); + } + + protected PropertyChangeSupport getPropertyChangeSupport() { + return (PropertyChangeSupport)getEventSupport(); + } + + public Object clone() { + return null; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabParameter.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabParameter.java new file mode 100644 index 0000000..0212c28 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabParameter.java @@ -0,0 +1,30 @@ +package net.sf.jasperreports.crosstabs.design; + +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.design.JRDesignParameter; + +public class JRDesignCrosstabParameter extends JRDesignParameter implements JRCrosstabParameter { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_VALUE_EXPRESSION = "valueExpression"; + + protected JRExpression valueExpression; + + public JRExpression getExpression() { + return this.valueExpression; + } + + public void setExpression(JRExpression expression) { + Object old = this.valueExpression; + this.valueExpression = expression; + getEventSupport().firePropertyChange("valueExpression", old, this.valueExpression); + } + + public Object clone() { + JRDesignCrosstabParameter clone = (JRDesignCrosstabParameter)super.clone(); + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabRowGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabRowGroup.java new file mode 100644 index 0000000..12f7806 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/design/JRDesignCrosstabRowGroup.java @@ -0,0 +1,51 @@ +package net.sf.jasperreports.crosstabs.design; + +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; + +public class JRDesignCrosstabRowGroup extends JRDesignCrosstabGroup implements JRCrosstabRowGroup { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_POSITION = "position"; + + public static final String PROPERTY_WIDTH = "width"; + + protected int width; + + protected byte position = 1; + + public byte getPosition() { + return this.position; + } + + public void setPosition(byte position) { + byte old = this.position; + this.position = position; + getEventSupport().firePropertyChange("position", old, this.position); + } + + public int getWidth() { + return this.width; + } + + public void setWidth(int width) { + int old = this.width; + this.width = width; + getEventSupport().firePropertyChange("width", old, this.width); + } + + public void setHeader(JRDesignCellContents header) { + super.setHeader(header); + setCellOrigin(this.header, new JRCrosstabOrigin(getParent(), (byte)3, getName(), null)); + } + + public void setTotalHeader(JRDesignCellContents totalHeader) { + super.setTotalHeader(totalHeader); + setCellOrigin(this.totalHeader, new JRCrosstabOrigin(getParent(), (byte)4, getName(), null)); + } + + void setParent(JRDesignCrosstab parent) { + super.setParent(parent); + setCellOrigin(this.header, new JRCrosstabOrigin(getParent(), (byte)3, getName(), null)); + setCellOrigin(this.totalHeader, new JRCrosstabOrigin(getParent(), (byte)4, getName(), null)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRCrosstabExpressionEvaluator.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRCrosstabExpressionEvaluator.java new file mode 100644 index 0000000..d0e3978 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRCrosstabExpressionEvaluator.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.crosstabs.fill; + +import java.util.Map; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.fill.JREvaluator; +import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; + +public class JRCrosstabExpressionEvaluator implements JRFillExpressionEvaluator { + private final JREvaluator evaluator; + + public JRCrosstabExpressionEvaluator(JREvaluator evaluator) { + this.evaluator = evaluator; + } + + public Object evaluate(JRExpression expression, byte evaluationType) throws JRException { + if (evaluationType != 3) + throw new JRException("The crosstab evaluator doesn't support old or estimated expression evaluation."); + return this.evaluator.evaluate(expression); + } + + public void init(Map parametersMap, Map variablesMap, byte whenResourceMissingType) throws JRException { + this.evaluator.init(parametersMap, null, variablesMap, whenResourceMissingType); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabCell.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabCell.java new file mode 100644 index 0000000..6b33187 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabCell.java @@ -0,0 +1,46 @@ +package net.sf.jasperreports.crosstabs.fill; + +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.engine.fill.JRFillCellContents; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillCrosstabCell implements JRCrosstabCell { + private JRCrosstabCell parentCell; + + protected JRFillCellContents contents; + + public JRFillCrosstabCell(JRCrosstabCell cell, JRFillObjectFactory factory) { + factory.put(cell, this); + this.parentCell = cell; + this.contents = factory.getCell(cell.getContents()); + } + + public String getRowTotalGroup() { + return this.parentCell.getRowTotalGroup(); + } + + public String getColumnTotalGroup() { + return this.parentCell.getColumnTotalGroup(); + } + + public JRCellContents getContents() { + return (JRCellContents)this.contents; + } + + public JRFillCellContents getFillContents() { + return this.contents; + } + + public Integer getWidth() { + return this.parentCell.getWidth(); + } + + public Integer getHeight() { + return this.parentCell.getHeight(); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabColumnGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabColumnGroup.java new file mode 100644 index 0000000..f033355 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabColumnGroup.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.crosstabs.fill; + +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillCrosstabColumnGroup extends JRFillCrosstabGroup implements JRCrosstabColumnGroup { + public JRFillCrosstabColumnGroup(JRCrosstabColumnGroup group, JRFillObjectFactory factory) { + super((JRCrosstabGroup)group, factory); + } + + public byte getPosition() { + return ((JRCrosstabColumnGroup)this.parentGroup).getPosition(); + } + + public int getHeight() { + return ((JRCrosstabColumnGroup)this.parentGroup).getHeight(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabGroup.java new file mode 100644 index 0000000..ecfb713 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabGroup.java @@ -0,0 +1,71 @@ +package net.sf.jasperreports.crosstabs.fill; + +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.fill.JRFillCellContents; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.fill.JRFillVariable; + +public abstract class JRFillCrosstabGroup implements JRCrosstabGroup { + protected JRCrosstabGroup parentGroup; + + protected JRFillCellContents header; + + protected JRFillCellContents totalHeader; + + protected JRFillVariable variable; + + public JRFillCrosstabGroup(JRCrosstabGroup group, JRFillObjectFactory factory) { + factory.put(group, this); + this.parentGroup = group; + this.header = factory.getCell(group.getHeader()); + this.totalHeader = factory.getCell(group.getTotalHeader()); + this.variable = factory.getVariable(group.getVariable()); + } + + public String getName() { + return this.parentGroup.getName(); + } + + public byte getTotalPosition() { + return this.parentGroup.getTotalPosition(); + } + + public boolean hasTotal() { + return this.parentGroup.hasTotal(); + } + + public JRCrosstabBucket getBucket() { + return this.parentGroup.getBucket(); + } + + public JRCellContents getHeader() { + return (JRCellContents)this.header; + } + + public JRCellContents getTotalHeader() { + return (JRCellContents)this.totalHeader; + } + + public JRFillCellContents getFillHeader() { + return this.header; + } + + public JRFillCellContents getFillTotalHeader() { + return this.totalHeader; + } + + public JRVariable getVariable() { + return (JRVariable)this.variable; + } + + public JRFillVariable getFillVariable() { + return this.variable; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabMeasure.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabMeasure.java new file mode 100644 index 0000000..1bfafc4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabMeasure.java @@ -0,0 +1,109 @@ +package net.sf.jasperreports.crosstabs.fill; + +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.fill.JRDefaultIncrementerFactory; +import net.sf.jasperreports.engine.fill.JRExtendedIncrementerFactory; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.fill.JRFillVariable; +import net.sf.jasperreports.engine.fill.JRIncrementerFactoryCache; + +public class JRFillCrosstabMeasure implements JRCrosstabMeasure { + protected JRCrosstabMeasure parentMeasure; + + protected JRFillVariable variable; + + protected JRExtendedIncrementerFactory incrementerFactory; + + protected JRPercentageCalculator percentageCalculator; + + public JRFillCrosstabMeasure(JRCrosstabMeasure measure, JRFillObjectFactory factory) { + factory.put(measure, this); + this.parentMeasure = measure; + this.variable = factory.getVariable(measure.getVariable()); + this.incrementerFactory = createIncrementerFactory(); + this.percentageCalculator = createPercentageCalculator(); + } + + public String getName() { + return this.parentMeasure.getName(); + } + + public String getValueClassName() { + return this.parentMeasure.getValueClassName(); + } + + public Class getValueClass() { + return this.parentMeasure.getValueClass(); + } + + public JRExpression getValueExpression() { + return this.parentMeasure.getValueExpression(); + } + + public byte getCalculation() { + return this.parentMeasure.getCalculation(); + } + + public String getIncrementerFactoryClassName() { + return this.parentMeasure.getIncrementerFactoryClassName(); + } + + public Class getIncrementerFactoryClass() { + return this.parentMeasure.getIncrementerFactoryClass(); + } + + public byte getPercentageOfType() { + return this.parentMeasure.getPercentageOfType(); + } + + public JRVariable getVariable() { + return (JRVariable)this.variable; + } + + public JRFillVariable getFillVariable() { + return this.variable; + } + + public JRExtendedIncrementerFactory getIncrementerFactory() { + return this.incrementerFactory; + } + + public JRPercentageCalculator getPercentageCalculator() { + return this.percentageCalculator; + } + + private JRExtendedIncrementerFactory createIncrementerFactory() { + JRExtendedIncrementerFactory incrFactory; + String incrementerFactoryClassName = getIncrementerFactoryClassName(); + if (incrementerFactoryClassName == null) { + incrFactory = JRDefaultIncrementerFactory.getFactory(getValueClass()); + } else { + incrFactory = (JRExtendedIncrementerFactory)JRIncrementerFactoryCache.getInstance(getIncrementerFactoryClass()); + } + return incrFactory; + } + + public JRPercentageCalculator createPercentageCalculator() { + JRPercentageCalculator percentageCalc; + if (getPercentageOfType() == 1) { + percentageCalc = JRPercentageCalculatorFactory.getPercentageCalculator(getPercentageCalculatorClass(), getValueClass()); + } else { + percentageCalc = null; + } + return percentageCalc; + } + + public String getPercentageCalculatorClassName() { + return this.parentMeasure.getPercentageCalculatorClassName(); + } + + public Class getPercentageCalculatorClass() { + return this.parentMeasure.getPercentageCalculatorClass(); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabParameter.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabParameter.java new file mode 100644 index 0000000..b69cf5f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabParameter.java @@ -0,0 +1,20 @@ +package net.sf.jasperreports.crosstabs.fill; + +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; +import net.sf.jasperreports.engine.fill.JRFillParameter; + +public class JRFillCrosstabParameter extends JRFillParameter implements JRCrosstabParameter { + private JRCrosstabParameter parentParameter; + + public JRFillCrosstabParameter(JRCrosstabParameter parameter, JRFillObjectFactory factory) { + super((JRParameter)parameter, factory); + this.parentParameter = parameter; + } + + public JRExpression getExpression() { + return this.parentParameter.getExpression(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabRowGroup.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabRowGroup.java new file mode 100644 index 0000000..d46ed1b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRFillCrosstabRowGroup.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.crosstabs.fill; + +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.engine.fill.JRFillObjectFactory; + +public class JRFillCrosstabRowGroup extends JRFillCrosstabGroup implements JRCrosstabRowGroup { + public JRFillCrosstabRowGroup(JRCrosstabRowGroup group, JRFillObjectFactory factory) { + super((JRCrosstabGroup)group, factory); + } + + public byte getPosition() { + return ((JRCrosstabRowGroup)this.parentGroup).getPosition(); + } + + public int getWidth() { + return ((JRCrosstabRowGroup)this.parentGroup).getWidth(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculator.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculator.java new file mode 100644 index 0000000..19277cf --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculator.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.crosstabs.fill; + +import net.sf.jasperreports.engine.fill.JRCalculable; + +public interface JRPercentageCalculator { + Object calculatePercentage(JRCalculable paramJRCalculable1, JRCalculable paramJRCalculable2); +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculatorFactory.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculatorFactory.java new file mode 100644 index 0000000..fa5851d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/JRPercentageCalculatorFactory.java @@ -0,0 +1,142 @@ +package net.sf.jasperreports.crosstabs.fill; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.fill.JRCalculable; + +public class JRPercentageCalculatorFactory { + private static final Map builtInCalculators = new HashMap(); + + static { + builtInCalculators.put(Float.class.getName(), new FloatPercentageCalculator()); + builtInCalculators.put(Double.class.getName(), new DoublePercentageCalculator()); + builtInCalculators.put(Integer.class.getName(), new IntegerPercentageCalculator()); + builtInCalculators.put(Long.class.getName(), new LongPercentageCalculator()); + builtInCalculators.put(Short.class.getName(), new ShortPercentageCalculator()); + builtInCalculators.put(Byte.class.getName(), new BytePercentageCalculator()); + builtInCalculators.put(BigDecimal.class.getName(), new BigDecimalPercentageCalculator()); + builtInCalculators.put(BigInteger.class.getName(), new BigIntegerPercentageCalculator()); + } + + private static final Map cachedCalculators = new HashMap(); + + public static boolean hasBuiltInCalculator(Class valueClass) { + return builtInCalculators.containsKey(valueClass.getName()); + } + + public static JRPercentageCalculator getPercentageCalculator(Class percentageCalculatorClass, Class valueClass) { + JRPercentageCalculator calculator; + if (percentageCalculatorClass == null) { + calculator = (JRPercentageCalculator)builtInCalculators.get(valueClass.getName()); + if (calculator == null) + throw new JRRuntimeException("Measure with type " + valueClass.getName() + " should specify a percentage calculator class."); + } else { + calculator = (JRPercentageCalculator)cachedCalculators.get(percentageCalculatorClass.getName()); + if (calculator == null) + try { + calculator = percentageCalculatorClass.newInstance(); + cachedCalculators.put(percentageCalculatorClass.getName(), calculator); + } catch (InstantiationException e) { + throw new JRRuntimeException("Error while creating percentage calculator instance of " + percentageCalculatorClass + ".", e); + } catch (IllegalAccessException e) { + throw new JRRuntimeException("Error while creating percentage calculator instance of " + percentageCalculatorClass + ".", e); + } + } + return calculator; + } + + public static class BytePercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + Byte totalVal = (Byte)total.getValue(); + Byte val = (Byte)value.getValue(); + byte percentage = 0; + if (totalVal != null && totalVal.byteValue() != 0) + percentage = (byte)(100 * val.byteValue() / totalVal.byteValue()); + return new Byte(percentage); + } + } + + public static class ShortPercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + Short totalVal = (Short)total.getValue(); + Short val = (Short)value.getValue(); + short percentage = 0; + if (totalVal != null && totalVal.shortValue() != 0) + percentage = (short)(100 * val.shortValue() / totalVal.shortValue()); + return new Short(percentage); + } + } + + public static class IntegerPercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + Integer totalVal = (Integer)total.getValue(); + Integer val = (Integer)value.getValue(); + int percentage = 0; + if (totalVal != null && totalVal.intValue() != 0) + percentage = 100 * val.intValue() / totalVal.intValue(); + return new Integer(percentage); + } + } + + public static class LongPercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + Long totalVal = (Long)total.getValue(); + Long val = (Long)value.getValue(); + long percentage = 0L; + if (totalVal != null && totalVal.longValue() != 0L) + percentage = 100L * val.longValue() / totalVal.longValue(); + return new Long(percentage); + } + } + + public static class FloatPercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + Float totalVal = (Float)total.getValue(); + Float val = (Float)value.getValue(); + float percentage = 0.0F; + if (totalVal != null && totalVal.floatValue() != 0.0F) + percentage = 100.0F * val.floatValue() / totalVal.floatValue(); + return new Float(percentage); + } + } + + public static class DoublePercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + Double totalVal = (Double)total.getValue(); + Double val = (Double)value.getValue(); + double percentage = 0.0D; + if (totalVal != null && totalVal.doubleValue() != 0.0D) + percentage = 100.0D * val.doubleValue() / totalVal.doubleValue(); + return new Double(percentage); + } + } + + public static class BigDecimalPercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + BigDecimal percentage, totalVal = (BigDecimal)total.getValue(); + BigDecimal val = (BigDecimal)value.getValue(); + if (totalVal != null && totalVal.doubleValue() != 0.0D) { + percentage = val.multiply(BigDecimal.valueOf(100L)).divide(totalVal, 4); + } else { + percentage = BigDecimal.valueOf(0L); + } + return percentage; + } + } + + public static class BigIntegerPercentageCalculator implements JRPercentageCalculator { + public Object calculatePercentage(JRCalculable value, JRCalculable total) { + BigInteger percentage, totalVal = (BigInteger)total.getValue(); + BigInteger val = (BigInteger)value.getValue(); + if (totalVal != null && totalVal.doubleValue() != 0.0D) { + percentage = val.multiply(BigInteger.valueOf(100L)).divide(totalVal); + } else { + percentage = BigInteger.valueOf(0L); + } + return percentage; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketDefinition.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketDefinition.java new file mode 100644 index 0000000..7101071 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketDefinition.java @@ -0,0 +1,139 @@ +package net.sf.jasperreports.crosstabs.fill.calculation; + +import java.util.Comparator; +import net.sf.jasperreports.engine.JRException; +import org.apache.commons.collections.comparators.ReverseComparator; + +public class BucketDefinition { + public static final byte ORDER_ASCENDING = 1; + + public static final byte ORDER_DESCENDING = 2; + + public static final byte TOTAL_POSITION_NONE = 0; + + public static final byte TOTAL_POSITION_START = 1; + + public static final byte TOTAL_POSITION_END = 2; + + protected static final byte VALUE_TYPE_VALUE = 0; + + protected static final byte VALUE_TYPE_NULL = 1; + + protected static final byte VALUE_TYPE_TOTAL = 2; + + protected final Bucket VALUE_TOTAL = new Bucket((byte)2); + + protected final Bucket VALUE_NULL = new Bucket((byte)1); + + protected final Comparator comparator; + + private final byte totalPosition; + + private boolean computeTotal; + + public BucketDefinition(Class valueClass, Comparator comparator, byte order, byte totalPosition) throws JRException { + if (comparator == null && !Comparable.class.isAssignableFrom(valueClass)) + throw new JRException("The bucket expression values are not comparable and no comparator specified."); + switch (order) { + case 2: + if (comparator == null) { + this.comparator = (Comparator)new ReverseComparator(); + break; + } + this.comparator = (Comparator)new ReverseComparator(comparator); + break; + default: + this.comparator = comparator; + break; + } + this.totalPosition = totalPosition; + this.computeTotal = (totalPosition != 0); + } + + public boolean computeTotal() { + return this.computeTotal; + } + + public void setComputeTotal() { + this.computeTotal = true; + } + + public byte getTotalPosition() { + return this.totalPosition; + } + + public Comparator getComparator() { + return this.comparator; + } + + public Bucket create(Object value) { + if (value == null) + return this.VALUE_NULL; + return new Bucket(value); + } + + public class Bucket implements Comparable { + private final Object value; + + private final byte type; + + private final BucketDefinition this$0; + + protected Bucket(byte type) { + this.value = null; + this.type = type; + } + + protected Bucket(Object value) { + this.value = value; + this.type = 0; + } + + public Object getValue() { + return this.value; + } + + public boolean equals(Object o) { + if (o == null || !(o instanceof Bucket)) + return false; + if (o == this) + return true; + Bucket v = (Bucket)o; + if (this.type != 0) + return (this.type == v.type); + return (v.type == 0 && this.value.equals(v.value)); + } + + public int hashCode() { + int hash = this.type; + if (this.type == 0) + hash = 37 * hash + this.value.hashCode(); + return hash; + } + + public String toString() { + switch (this.type) { + case 1: + return "NULL"; + case 2: + return "TOTAL"; + } + return String.valueOf(this.value); + } + + public int compareTo(Object o) { + Bucket val = (Bucket)o; + if (this.type != val.type) + return this.type - val.type; + if (this.type != 0) + return 0; + if (BucketDefinition.this.comparator != null) + return BucketDefinition.this.comparator.compare(this.value, val.value); + return ((Comparable)this.value).compareTo(val.value); + } + + public boolean isTotal() { + return (this.type == 2); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketingService.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketingService.java new file mode 100644 index 0000000..648406d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/BucketingService.java @@ -0,0 +1,843 @@ +package net.sf.jasperreports.crosstabs.fill.calculation; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.TreeMap; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.util.JRProperties; + +public class BucketingService { + public static final String PROPERTY_BUCKET_MEASURE_LIMIT = "net.sf.jasperreports.crosstab.bucket.measure.limit"; + + protected static final byte DIMENSION_ROW = 0; + + protected static final byte DIMENSION_COLUMN = 1; + + protected static final int DIMENSIONS = 2; + + protected final BucketDefinition[] allBuckets; + + protected final BucketDefinition[][] buckets; + + protected final int rowBucketCount; + + protected final int colBucketCount; + + protected final boolean[][] retrieveTotal; + + private boolean[] rowRetrTotals; + + private int rowRetrTotalMin; + + private int rowRetrTotalMax; + + private int[] rowRetrColMax; + + protected final MeasureDefinition[] measures; + + protected final int origMeasureCount; + + protected final int[] measureIndexes; + + protected final boolean sorted; + + protected final BucketMap bucketValueMap; + + protected long dataCount; + + protected boolean processed; + + protected HeaderCell[][] colHeaders; + + protected HeaderCell[][] rowHeaders; + + protected CrosstabCell[][] cells; + + private final MeasureDefinition.MeasureValue[] zeroUserMeasureValues; + + private final int bucketMeasureLimit; + + private int runningBucketMeasureCount = 0; + + public BucketingService(List rowBuckets, List columnBuckets, List measures, boolean sorted, boolean[][] retrieveTotal) { + this.sorted = sorted; + this.buckets = new BucketDefinition[2][]; + this.rowBucketCount = rowBuckets.size(); + this.buckets[0] = new BucketDefinition[this.rowBucketCount]; + rowBuckets.toArray((Object[])this.buckets[0]); + this.colBucketCount = columnBuckets.size(); + this.buckets[1] = new BucketDefinition[this.colBucketCount]; + columnBuckets.toArray((Object[])this.buckets[1]); + this.allBuckets = new BucketDefinition[this.rowBucketCount + this.colBucketCount]; + System.arraycopy(this.buckets[0], 0, this.allBuckets, 0, this.rowBucketCount); + System.arraycopy(this.buckets[1], 0, this.allBuckets, this.rowBucketCount, this.colBucketCount); + this.origMeasureCount = measures.size(); + List measuresList = new ArrayList(measures.size() * 2); + List measureIndexList = new ArrayList(measures.size() * 2); + int i; + for (i = 0; i < measures.size(); i++) { + MeasureDefinition measure = measures.get(i); + addMeasure(measure, i, measuresList, measureIndexList); + } + this.measures = new MeasureDefinition[measuresList.size()]; + measuresList.toArray((Object[])this.measures); + this.measureIndexes = new int[measureIndexList.size()]; + for (i = 0; i < this.measureIndexes.length; i++) + this.measureIndexes[i] = ((Integer)measureIndexList.get(i)).intValue(); + this.retrieveTotal = retrieveTotal; + checkTotals(); + this.bucketValueMap = createBucketMap(0); + this.zeroUserMeasureValues = initUserMeasureValues(); + this.bucketMeasureLimit = JRProperties.getIntegerProperty("net.sf.jasperreports.crosstab.bucket.measure.limit", 0); + } + + protected void checkTotals() { + this.rowRetrTotalMin = this.rowBucketCount + 1; + this.rowRetrTotalMax = -1; + this.rowRetrTotals = new boolean[this.rowBucketCount + 1]; + this.rowRetrColMax = new int[this.rowBucketCount + 1]; + for (int row = 0; row <= this.rowBucketCount; row++) { + this.rowRetrColMax[row] = -1; + boolean total = false; + for (int i = 0; i <= this.colBucketCount; i++) { + if (this.retrieveTotal[row][i]) { + total = true; + this.rowRetrColMax[row] = i; + } + } + this.rowRetrTotals[row] = total; + if (total) { + if (row < this.rowRetrTotalMin) + this.rowRetrTotalMin = row; + this.rowRetrTotalMax = row; + if (row < this.rowBucketCount) + this.allBuckets[row].setComputeTotal(); + } + } + for (int col = 0; col < this.colBucketCount; col++) { + BucketDefinition colBucket = this.allBuckets[this.rowBucketCount + col]; + if (!colBucket.computeTotal()) { + boolean total = false; + for (int i = 0; !total && i <= this.rowBucketCount; i++) + total = this.retrieveTotal[i][col]; + if (total) + colBucket.setComputeTotal(); + } + } + for (int d = 0; d < 2; d++) { + boolean dTotal = false; + for (int i = 0; i < (this.buckets[d]).length; i++) { + if (dTotal) { + this.buckets[d][i].setComputeTotal(); + } else { + dTotal = this.buckets[d][i].computeTotal(); + } + } + } + } + + public void clear() { + this.bucketValueMap.clear(); + this.processed = false; + this.dataCount = 0L; + this.runningBucketMeasureCount = 0; + } + + protected BucketMap createBucketMap(int level) { + BucketMap map; + if (this.sorted) { + map = new BucketListMap(level, false); + } else { + map = new BucketTreeMap(level); + } + return map; + } + + protected BucketListMap createCollectBucketMap(int level) { + return new BucketListMap(level, true); + } + + protected void addMeasure(MeasureDefinition measure, int index, List measuresList, List measureIndexList) { + MeasureDefinition sumMeasure, varianceMeasure, countMeasure, measureDefinition1; + switch (measure.getCalculation()) { + case 3: + case 7: + sumMeasure = MeasureDefinition.createHelperMeasure(measure, (byte)2); + addMeasure(sumMeasure, index, measuresList, measureIndexList); + measureDefinition1 = MeasureDefinition.createHelperMeasure(measure, (byte)1); + addMeasure(measureDefinition1, index, measuresList, measureIndexList); + break; + case 6: + varianceMeasure = MeasureDefinition.createHelperMeasure(measure, (byte)7); + addMeasure(varianceMeasure, index, measuresList, measureIndexList); + break; + case 10: + countMeasure = MeasureDefinition.createDistinctCountHelperMeasure(measure); + addMeasure(countMeasure, index, measuresList, measureIndexList); + break; + } + measuresList.add(measure); + measureIndexList.add(new Integer(index)); + } + + public void addData(Object[] bucketValues, Object[] measureValues) throws JRException { + if (this.processed) + throw new JRException("Crosstab data has already been processed."); + this.dataCount++; + BucketDefinition.Bucket[] bucketVals = getBucketValues(bucketValues); + MeasureDefinition.MeasureValue[] values = this.bucketValueMap.insertMeasureValues(bucketVals); + for (int i = 0; i < this.measures.length; i++) + values[i].addValue(measureValues[this.measureIndexes[i]]); + } + + protected void bucketMeasuresCreated() { + this.runningBucketMeasureCount += this.origMeasureCount; + checkBucketMeasureCount(this.runningBucketMeasureCount); + } + + protected BucketDefinition.Bucket[] getBucketValues(Object[] bucketValues) { + BucketDefinition.Bucket[] bucketVals = new BucketDefinition.Bucket[this.allBuckets.length]; + for (int i = 0; i < this.allBuckets.length; i++) { + BucketDefinition bucket = this.allBuckets[i]; + Object value = bucketValues[i]; + bucketVals[i] = bucket.create(value); + } + return bucketVals; + } + + protected MeasureDefinition.MeasureValue[] initMeasureValues() { + MeasureDefinition.MeasureValue[] values = new MeasureDefinition.MeasureValue[this.measures.length]; + for (int i = 0; i < this.measures.length; i++) { + MeasureDefinition measure = this.measures[i]; + measure.getClass(); + values[i] = new MeasureDefinition.MeasureValue(measure); + switch (measure.getCalculation()) { + case 3: + case 7: + values[i].setHelper(values[i - 2], (byte)1); + values[i].setHelper(values[i - 1], (byte)0); + break; + case 6: + values[i].setHelper(values[i - 1], (byte)2); + case 10: + values[i].setHelper(values[i - 1], (byte)0); + break; + } + } + return values; + } + + protected MeasureDefinition.MeasureValue[] initUserMeasureValues() { + MeasureDefinition.MeasureValue[] vals = new MeasureDefinition.MeasureValue[this.origMeasureCount]; + for (int c = 0, i = 0; i < this.measures.length; i++) { + if (!this.measures[i].isSystemDefined()) { + this.measures[i].getClass(); + vals[c] = new MeasureDefinition.MeasureValue(this.measures[i]); + c++; + } + } + return vals; + } + + public void processData() throws JRException { + if (!this.processed) { + if (this.dataCount > 0L) { + if (this.allBuckets[this.rowBucketCount - 1].computeTotal() || this.allBuckets[this.allBuckets.length - 1].computeTotal()) + computeTotals(this.bucketValueMap); + createCrosstab(); + } + this.processed = true; + } + } + + public boolean hasData() { + return (this.dataCount > 0L); + } + + public HeaderCell[][] getColumnHeaders() { + return this.colHeaders; + } + + public HeaderCell[][] getRowHeaders() { + return this.rowHeaders; + } + + public CrosstabCell[][] getCrosstabCells() { + return this.cells; + } + + public MeasureDefinition.MeasureValue[] getMeasureValues(BucketDefinition.Bucket[] bucketValues) { + BucketMap map = this.bucketValueMap; + for (int i = 0; map != null && i < this.allBuckets.length - 1; i++) + map = (BucketMap)map.get(bucketValues[i]); + return (map == null) ? null : (MeasureDefinition.MeasureValue[])map.get(bucketValues[this.allBuckets.length - 1]); + } + + protected MeasureDefinition.MeasureValue[] getUserMeasureValues(MeasureDefinition.MeasureValue[] values) { + MeasureDefinition.MeasureValue[] vals = new MeasureDefinition.MeasureValue[this.origMeasureCount]; + for (int c = 0, i = 0; i < this.measures.length; i++) { + if (!this.measures[i].isSystemDefined()) { + vals[c] = values[i]; + c++; + } + } + return vals; + } + + public MeasureDefinition.MeasureValue[] getGrandTotals() { + BucketMap map = this.bucketValueMap; + for (int i = 0; map != null && i < this.allBuckets.length - 1; i++) + map = (BucketMap)map.getTotalEntry().getValue(); + return (map == null) ? null : (MeasureDefinition.MeasureValue[])map.getTotalEntry().getValue(); + } + + protected void computeTotals(BucketMap bucketMap) throws JRException { + byte dimension = (bucketMap.level < this.rowBucketCount) ? 0 : 1; + if (dimension == 1 && !this.allBuckets[this.allBuckets.length - 1].computeTotal()) + return; + if (!bucketMap.last) + for (Iterator it = bucketMap.entryIterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + computeTotals((BucketMap)entry.getValue()); + } + if (this.allBuckets[bucketMap.level].computeTotal()) + if (dimension == 1) { + computeColumnTotal(bucketMap); + } else { + computeRowTotals(bucketMap); + } + } + + protected void sumVals(MeasureDefinition.MeasureValue[] totals, MeasureDefinition.MeasureValue[] vals) throws JRException { + for (int i = 0; i < this.measures.length; i++) + totals[i].addValue(vals[i]); + } + + protected void computeColumnTotal(BucketMap bucketMap) throws JRException { + MeasureDefinition.MeasureValue[] totals = initMeasureValues(); + for (Iterator it = bucketMap.entryIterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + for (int j = bucketMap.level + 1; j < this.allBuckets.length; j++) + entry = ((BucketMap)entry.getValue()).getTotalEntry(); + sumVals(totals, (MeasureDefinition.MeasureValue[])entry.getValue()); + } + for (int i = bucketMap.level + 1; i < this.allBuckets.length; i++) + bucketMap = bucketMap.addTotalNextMap(); + bucketMap.addTotalEntry(totals); + } + + protected void computeRowTotals(BucketMap bucketMap) throws JRException { + BucketListMap totals = createCollectBucketMap(this.rowBucketCount); + for (Iterator it = bucketMap.entryIterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + for (int j = bucketMap.level + 1; j < this.rowBucketCount; j++) + entry = ((BucketMap)entry.getValue()).getTotalEntry(); + totals.collectVals((BucketMap)entry.getValue(), true); + } + BucketMap totalBucketMap = bucketMap; + for (int i = bucketMap.level + 1; i < this.rowBucketCount; i++) + totalBucketMap = totalBucketMap.addTotalNextMap(); + totalBucketMap.addTotalEntry(totals); + } + + protected static class MapEntry implements Map.Entry, Comparable { + final BucketDefinition.Bucket key; + + final Object value; + + MapEntry(BucketDefinition.Bucket key, Object value) { + this.key = key; + this.value = value; + } + + public Object getKey() { + return this.key; + } + + public Object getValue() { + return this.value; + } + + public Object setValue(Object value) { + throw new UnsupportedOperationException(); + } + + public int compareTo(Object o) { + return this.key.compareTo(((MapEntry)o).key); + } + + public String toString() { + return this.key + ":" + this.value; + } + } + + protected abstract class BucketMap { + final int level; + + final boolean last; + + final BucketDefinition.Bucket totalKey; + + private final BucketingService this$0; + + BucketMap(int level) { + this.level = level; + this.last = (level == BucketingService.this.allBuckets.length - 1); + this.totalKey = (BucketingService.this.allBuckets[level]).VALUE_TOTAL; + } + + BucketMap addTotalNextMap() { + BucketMap nextMap = BucketingService.this.createBucketMap(this.level + 1); + addTotalEntry(nextMap); + return nextMap; + } + + abstract void set(BucketDefinition.Bucket param1Bucket, Object param1Object); + + abstract void clear(); + + abstract Iterator entryIterator(); + + abstract Object get(BucketDefinition.Bucket param1Bucket); + + abstract MeasureDefinition.MeasureValue[] insertMeasureValues(BucketDefinition.Bucket[] param1ArrayOfBucket); + + abstract void addTotalEntry(Object param1Object); + + abstract int size(); + + abstract Map.Entry getTotalEntry(); + } + + protected class BucketTreeMap extends BucketMap { + TreeMap map; + + private final BucketingService this$0; + + BucketTreeMap(int level) { + super(level); + this.map = new TreeMap(); + } + + void clear() { + this.map.clear(); + } + + Iterator entryIterator() { + return this.map.entrySet().iterator(); + } + + Object get(BucketDefinition.Bucket key) { + return this.map.get(key); + } + + MeasureDefinition.MeasureValue[] insertMeasureValues(BucketDefinition.Bucket[] bucketValues) { + BucketTreeMap levelMap = (BucketTreeMap)BucketingService.this.bucketValueMap; + for (int i = 0; i < bucketValues.length - 1; i++) { + BucketTreeMap nextMap = (BucketTreeMap)levelMap.get(bucketValues[i]); + if (nextMap == null) { + nextMap = new BucketTreeMap(i + 1); + levelMap.map.put(bucketValues[i], nextMap); + } + levelMap = nextMap; + } + MeasureDefinition.MeasureValue[] values = (MeasureDefinition.MeasureValue[])levelMap.get(bucketValues[bucketValues.length - 1]); + if (values == null) { + values = BucketingService.this.initMeasureValues(); + levelMap.map.put(bucketValues[bucketValues.length - 1], values); + BucketingService.this.bucketMeasuresCreated(); + } + return values; + } + + int size() { + return this.map.size(); + } + + void addTotalEntry(Object value) { + this.map.put(this.totalKey, value); + } + + Map.Entry getTotalEntry() { + Object value = get(this.totalKey); + return (value == null) ? null : new BucketingService.MapEntry(this.totalKey, value); + } + + public String toString() { + return this.map.toString(); + } + + void set(BucketDefinition.Bucket key, Object value) { + this.map.put(key, value); + } + } + + protected class BucketListMap extends BucketMap { + List entries; + + private final BucketingService this$0; + + BucketListMap(int level, boolean linked) { + super(level); + if (linked) { + this.entries = new LinkedList(); + } else { + this.entries = new ArrayList(); + } + } + + void clear() { + this.entries.clear(); + } + + Iterator entryIterator() { + return this.entries.iterator(); + } + + private void add(BucketDefinition.Bucket key, Object value) { + this.entries.add(new BucketingService.MapEntry(key, value)); + } + + Object get(BucketDefinition.Bucket key) { + int idx = Collections.binarySearch(this.entries, new BucketingService.MapEntry(key, null)); + return (idx >= 0) ? ((BucketingService.MapEntry)this.entries.get(idx)).value : null; + } + + MeasureDefinition.MeasureValue[] insertMeasureValues(BucketDefinition.Bucket[] bucketValues) { + int i = 0; + Object levelObj = this; + BucketListMap map = null; + while (i < BucketingService.this.allBuckets.length) { + map = (BucketListMap)levelObj; + int size = map.entries.size(); + if (size == 0) + break; + BucketingService.MapEntry lastEntry = map.entries.get(size - 1); + if (!lastEntry.key.equals(bucketValues[i])) + break; + i++; + levelObj = lastEntry.value; + } + if (i == BucketingService.this.allBuckets.length) + return (MeasureDefinition.MeasureValue[])levelObj; + while (i < BucketingService.this.allBuckets.length - 1) { + BucketListMap nextMap = new BucketListMap(i + 1, false); + map.add(bucketValues[i], nextMap); + map = nextMap; + i++; + } + MeasureDefinition.MeasureValue[] values = BucketingService.this.initMeasureValues(); + map.add(bucketValues[i], values); + BucketingService.this.bucketMeasuresCreated(); + return values; + } + + int size() { + return this.entries.size(); + } + + void addTotalEntry(Object value) { + add(this.totalKey, value); + } + + Map.Entry getTotalEntry() { + BucketingService.MapEntry lastEntry = this.entries.get(this.entries.size() - 1); + if (lastEntry.key.isTotal()) + return lastEntry; + return null; + } + + void set(BucketDefinition.Bucket key, Object value) { + BucketingService.MapEntry mapEntry = new BucketingService.MapEntry(key, value); + int idx = Collections.binarySearch(this.entries, mapEntry); + int ins = -idx - 1; + this.entries.add(ins, mapEntry); + } + + void collectVals(BucketingService.BucketMap map, boolean sum) throws JRException { + ListIterator totalIt = this.entries.listIterator(); + BucketingService.MapEntry totalItEntry = totalIt.hasNext() ? totalIt.next() : null; + Iterator it = map.entryIterator(); + Map.Entry entry = it.hasNext() ? it.next() : null; + while (entry != null) { + BucketDefinition.Bucket key = (BucketDefinition.Bucket)entry.getKey(); + int compare = (totalItEntry == null) ? -1 : key.compareTo(totalItEntry.key); + if (compare <= 0) { + Object addVal = null; + if (this.last) { + if (sum) { + MeasureDefinition.MeasureValue[] totalVals = (compare == 0) ? (MeasureDefinition.MeasureValue[])totalItEntry.value : null; + if (totalVals == null) { + totalVals = BucketingService.this.initMeasureValues(); + addVal = totalVals; + } + BucketingService.this.sumVals(totalVals, (MeasureDefinition.MeasureValue[])entry.getValue()); + } + } else { + BucketListMap nextTotals = (compare == 0) ? (BucketListMap)totalItEntry.value : null; + if (nextTotals == null) { + nextTotals = BucketingService.this.createCollectBucketMap(this.level + 1); + addVal = nextTotals; + } + nextTotals.collectVals((BucketingService.BucketMap)entry.getValue(), sum); + } + if (compare < 0) { + if (totalItEntry != null) + totalIt.previous(); + totalIt.add(new BucketingService.MapEntry(key, addVal)); + if (totalItEntry != null) + totalIt.next(); + } + entry = it.hasNext() ? it.next() : null; + } + if (compare >= 0) + totalItEntry = totalIt.hasNext() ? totalIt.next() : null; + } + } + } + + protected void createCrosstab() throws JRException { + BucketListMap collectedCols; + CollectedList[] collectedHeaders = new CollectedList[2]; + collectedHeaders[0] = createHeadersList((byte)0, this.bucketValueMap, 0, false); + if (this.allBuckets[0].computeTotal()) { + BucketMap map = this.bucketValueMap; + for (int i = 0; i < this.rowBucketCount; i++) + map = (BucketMap)map.getTotalEntry().getValue(); + collectedCols = (BucketListMap)map; + } else { + collectedCols = createCollectBucketMap(this.rowBucketCount); + collectCols(collectedCols, this.bucketValueMap); + } + collectedHeaders[1] = createHeadersList((byte)1, collectedCols, 0, false); + int rowBuckets = (collectedHeaders[0]).span; + int colBuckets = (collectedHeaders[1]).span; + int bucketMeasureCount = rowBuckets * colBuckets * this.origMeasureCount; + checkBucketMeasureCount(bucketMeasureCount); + this.colHeaders = createHeaders((byte)1, collectedHeaders); + this.rowHeaders = createHeaders((byte)0, collectedHeaders); + this.cells = new CrosstabCell[rowBuckets][colBuckets]; + fillCells(collectedHeaders, this.bucketValueMap, 0, new int[] { 0, 0 }, new ArrayList(), new ArrayList()); + } + + protected void checkBucketMeasureCount(int bucketMeasureCount) { + if (this.bucketMeasureLimit > 0 && bucketMeasureCount > this.bucketMeasureLimit) + throw new JRRuntimeException("Crosstab bucket/measure limit (" + this.bucketMeasureLimit + ") exceeded."); + } + + protected void collectCols(BucketListMap collectedCols, BucketMap bucketMap) throws JRException { + if (this.allBuckets[bucketMap.level].computeTotal()) { + BucketMap map = bucketMap; + for (int i = bucketMap.level; i < this.rowBucketCount; i++) + map = (BucketMap)map.getTotalEntry().getValue(); + collectedCols.collectVals(map, false); + return; + } + for (Iterator it = bucketMap.entryIterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + BucketMap nextMap = (BucketMap)entry.getValue(); + if (bucketMap.level == this.rowBucketCount - 1) { + collectedCols.collectVals(nextMap, false); + continue; + } + collectCols(collectedCols, nextMap); + } + } + + protected CollectedList createHeadersList(byte dimension, BucketMap bucketMap, int level, boolean total) { + CollectedList headers = new CollectedList(); + for (Iterator it = bucketMap.entryIterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + BucketDefinition.Bucket bucketValue = (BucketDefinition.Bucket)entry.getKey(); + boolean totalBucket = bucketValue.isTotal(); + byte totalPosition = this.allBuckets[bucketMap.level].getTotalPosition(); + boolean createHeader = (!totalBucket || total || totalPosition != 0); + if (createHeader) { + CollectedList nextHeaders; + if (level + 1 < (this.buckets[dimension]).length) { + BucketMap nextMap = (BucketMap)entry.getValue(); + nextHeaders = createHeadersList(dimension, nextMap, level + 1, (total || totalBucket)); + } else { + nextHeaders = new CollectedList(); + nextHeaders.span = 1; + } + nextHeaders.key = bucketValue; + if (totalBucket) { + if (totalPosition == 1) { + headers.addFirst(nextHeaders); + continue; + } + headers.add(nextHeaders); + continue; + } + headers.add(nextHeaders); + } + } + if (headers.span == 0) + headers.span = 1; + return headers; + } + + protected HeaderCell[][] createHeaders(byte dimension, CollectedList[] headersLists) { + HeaderCell[][] headers = new HeaderCell[(this.buckets[dimension]).length][(headersLists[dimension]).span]; + List vals = new ArrayList(); + fillHeaders(dimension, headers, 0, 0, headersLists[dimension], vals); + return headers; + } + + protected void fillHeaders(byte dimension, HeaderCell[][] headers, int level, int col, CollectedList list, List vals) { + if (level == (this.buckets[dimension]).length) + return; + for (Iterator it = list.iterator(); it.hasNext(); ) { + CollectedList subList = (CollectedList)it.next(); + vals.add(subList.key); + int depthSpan = subList.key.isTotal() ? ((this.buckets[dimension]).length - level) : 1; + BucketDefinition.Bucket[] values = new BucketDefinition.Bucket[(this.buckets[dimension]).length]; + vals.toArray(values); + headers[level][col] = new HeaderCell(values, subList.span, depthSpan); + if (!subList.key.isTotal()) + fillHeaders(dimension, headers, level + 1, col, subList, vals); + col += subList.span; + vals.remove(vals.size() - 1); + } + } + + protected void fillCells(CollectedList[] collectedHeaders, BucketMap bucketMap, int level, int[] pos, List vals, List bucketMaps) { + bucketMaps.add(bucketMap); + byte dimension = (level < this.rowBucketCount) ? 0 : 1; + boolean last = (level == this.allBuckets.length - 1); + CollectedList[] nextCollected = null; + if (!last) { + nextCollected = new CollectedList[2]; + for (int d = 0; d < 2; d++) { + if (d != dimension) + nextCollected[d] = collectedHeaders[d]; + } + } + boolean incrementRow = (level == (this.buckets[0]).length - 1); + CollectedList collectedList = collectedHeaders[dimension]; + Iterator bucketIt = (bucketMap == null) ? null : bucketMap.entryIterator(); + Map.Entry bucketItEntry = (bucketIt != null && bucketIt.hasNext()) ? bucketIt.next() : null; + for (Iterator it = collectedList.iterator(); it.hasNext(); ) { + CollectedList list = (CollectedList)it.next(); + Map.Entry bucketEntry = null; + if (list.key.isTotal()) { + if (bucketMap != null) + bucketEntry = bucketMap.getTotalEntry(); + } else if (bucketItEntry != null && bucketItEntry.getKey().equals(list.key)) { + bucketEntry = bucketItEntry; + bucketItEntry = bucketIt.hasNext() ? bucketIt.next() : null; + } + vals.add(list.key); + if (last) { + fillCell(pos, vals, bucketMaps, bucketEntry); + } else { + nextCollected[dimension] = list; + BucketMap nextMap = (bucketEntry == null) ? null : (BucketMap)bucketEntry.getValue(); + fillCells(nextCollected, nextMap, level + 1, pos, vals, bucketMaps); + } + vals.remove(vals.size() - 1); + if (incrementRow) { + pos[0] = pos[0] + 1; + pos[1] = 0; + } + } + bucketMaps.remove(bucketMaps.size() - 1); + } + + protected void fillCell(int[] pos, List vals, List bucketMaps, Map.Entry bucketEntry) { + Iterator valsIt = vals.iterator(); + BucketDefinition.Bucket[] rowValues = new BucketDefinition.Bucket[(this.buckets[0]).length]; + for (int i = 0; i < rowValues.length; i++) + rowValues[i] = valsIt.next(); + BucketDefinition.Bucket[] columnValues = new BucketDefinition.Bucket[(this.buckets[1]).length]; + for (int j = 0; j < columnValues.length; j++) + columnValues[j] = valsIt.next(); + MeasureDefinition.MeasureValue[] measureVals = (bucketEntry == null) ? this.zeroUserMeasureValues : getUserMeasureValues((MeasureDefinition.MeasureValue[])bucketEntry.getValue()); + MeasureDefinition.MeasureValue[][][] totals = retrieveTotals(vals, bucketMaps); + this.cells[pos[0]][pos[1]] = new CrosstabCell(rowValues, columnValues, measureVals, totals); + pos[1] = pos[1] + 1; + } + + protected MeasureDefinition.MeasureValue[][][] retrieveTotals(List vals, List bucketMaps) { + MeasureDefinition.MeasureValue[][][] totals = new MeasureDefinition.MeasureValue[this.rowBucketCount + 1][this.colBucketCount + 1][]; + for (int row = this.rowRetrTotalMax; row >= this.rowRetrTotalMin; row--) { + if (this.rowRetrTotals[row]) { + BucketMap rowMap = bucketMaps.get(row); + for (int i = row; rowMap != null && i < this.rowBucketCount; i++) { + Map.Entry totalEntry = rowMap.getTotalEntry(); + rowMap = (totalEntry == null) ? null : (BucketMap)totalEntry.getValue(); + } + for (int col = 0; col <= this.rowRetrColMax[row]; col++) { + BucketMap colMap = rowMap; + if (col < this.colBucketCount - 1) + if (row == this.rowBucketCount) { + rowMap = bucketMaps.get(this.rowBucketCount + col + 1); + } else if (rowMap != null) { + rowMap = (BucketMap)rowMap.get(vals.get(this.rowBucketCount + col)); + } + if (this.retrieveTotal[row][col]) { + for (int j = col + 1; colMap != null && j < this.colBucketCount; j++) + colMap = (BucketMap)colMap.getTotalEntry().getValue(); + if (colMap != null) + if (col == this.colBucketCount) { + MeasureDefinition.MeasureValue[] measureValues = (MeasureDefinition.MeasureValue[])colMap.get(vals.get(this.rowBucketCount + this.colBucketCount - 1)); + totals[row][col] = getUserMeasureValues(measureValues); + } else { + Map.Entry totalEntry = colMap.getTotalEntry(); + if (totalEntry != null) { + MeasureDefinition.MeasureValue[] totalValues = (MeasureDefinition.MeasureValue[])totalEntry.getValue(); + totals[row][col] = getUserMeasureValues(totalValues); + } + } + if (totals[row][col] == null) + totals[row][col] = this.zeroUserMeasureValues; + } + } + } + } + return totals; + } + + protected static class CollectedList extends LinkedList { + private static final long serialVersionUID = 10200L; + + int span = 0; + + BucketDefinition.Bucket key; + + public boolean add(Object o) { + boolean added = super.add(o); + incrementSpan(o); + return added; + } + + public void addFirst(Object o) { + super.addFirst(o); + incrementSpan(o); + } + + public void addLast(Object o) { + super.add(o); + incrementSpan(o); + } + + private void incrementSpan(Object o) { + if (o != null && o instanceof CollectedList) { + this.span += ((CollectedList)o).span; + } else { + this.span++; + } + } + + public String toString() { + return this.key + "/" + this.span + ": " + super.toString(); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/CrosstabCell.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/CrosstabCell.java new file mode 100644 index 0000000..837baec --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/CrosstabCell.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.crosstabs.fill.calculation; + +public class CrosstabCell { + private final BucketDefinition.Bucket[] rowBucketValues; + + private final int rowTotalGroupIndex; + + private final BucketDefinition.Bucket[] columnBucketValues; + + private final int columnTotalGroupIndex; + + private final MeasureDefinition.MeasureValue[] mesureValues; + + private final MeasureDefinition.MeasureValue[][][] totals; + + public CrosstabCell(BucketDefinition.Bucket[] rowBucketValues, BucketDefinition.Bucket[] columnBucketValues, MeasureDefinition.MeasureValue[] mesureValues, MeasureDefinition.MeasureValue[][][] totals) { + this.rowBucketValues = rowBucketValues; + this.rowTotalGroupIndex = getTotalIndex(rowBucketValues); + this.columnBucketValues = columnBucketValues; + this.columnTotalGroupIndex = getTotalIndex(columnBucketValues); + this.mesureValues = mesureValues; + this.totals = totals; + } + + private static int getTotalIndex(BucketDefinition.Bucket[] values) { + int i = 0; + while (i < values.length && !values[i].isTotal()) + i++; + return i; + } + + public MeasureDefinition.MeasureValue[] getMesureValues() { + return this.mesureValues; + } + + public BucketDefinition.Bucket[] getColumnBucketValues() { + return this.columnBucketValues; + } + + public BucketDefinition.Bucket[] getRowBucketValues() { + return this.rowBucketValues; + } + + public int getColumnTotalGroupIndex() { + return this.columnTotalGroupIndex; + } + + public int getRowTotalGroupIndex() { + return this.rowTotalGroupIndex; + } + + public MeasureDefinition.MeasureValue[][][] getTotals() { + return this.totals; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/HeaderCell.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/HeaderCell.java new file mode 100644 index 0000000..4e217d3 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/HeaderCell.java @@ -0,0 +1,45 @@ +package net.sf.jasperreports.crosstabs.fill.calculation; + +public class HeaderCell { + private final BucketDefinition.Bucket[] bucketValues; + + private final int levelSpan; + + private final int depthSpan; + + private final boolean isTotal; + + public HeaderCell(BucketDefinition.Bucket[] bucketValues, int levelSpan, int depthSpan) { + this.bucketValues = bucketValues; + this.levelSpan = levelSpan; + this.depthSpan = depthSpan; + boolean foundTotal = false; + for (int i = 0; i < bucketValues.length; i++) { + if (bucketValues[i] != null && bucketValues[i].isTotal()) { + foundTotal = true; + break; + } + } + this.isTotal = foundTotal; + } + + public BucketDefinition.Bucket[] getBucketValues() { + return this.bucketValues; + } + + public int getLevelSpan() { + return this.levelSpan; + } + + public int getDepthSpan() { + return this.depthSpan; + } + + public boolean isTotal() { + return this.isTotal; + } + + public static HeaderCell createLevelSpanCopy(HeaderCell cell, int newLevelSpan) { + return new HeaderCell(cell.bucketValues, newLevelSpan, cell.getDepthSpan()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/MeasureDefinition.java b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/MeasureDefinition.java new file mode 100644 index 0000000..289ed51 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/crosstabs/fill/calculation/MeasureDefinition.java @@ -0,0 +1,129 @@ +package net.sf.jasperreports.crosstabs.fill.calculation; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.fill.AbstractValueProvider; +import net.sf.jasperreports.engine.fill.JRCalculable; +import net.sf.jasperreports.engine.fill.JRDistinctCountExtendedIncrementerFactory; +import net.sf.jasperreports.engine.fill.JRExtendedIncrementer; +import net.sf.jasperreports.engine.fill.JRExtendedIncrementerFactory; + +public class MeasureDefinition { + protected final byte calculation; + + protected final JRExtendedIncrementerFactory incrementerFactory; + + protected final Class valueClass; + + protected final boolean isSystemDefined; + + public MeasureDefinition(Class valueClass, byte calculation, JRExtendedIncrementerFactory incrementerFactory) { + this(valueClass, calculation, incrementerFactory, false); + } + + protected MeasureDefinition(Class valueClass, byte calculation, JRExtendedIncrementerFactory incrementerFactory, boolean isSystemDefined) { + this.valueClass = valueClass; + this.calculation = calculation; + this.incrementerFactory = incrementerFactory; + this.isSystemDefined = isSystemDefined; + } + + public static MeasureDefinition createHelperMeasure(MeasureDefinition measure, byte helperCalculation) { + return new MeasureDefinition(measure.valueClass, helperCalculation, measure.incrementerFactory, true); + } + + public static MeasureDefinition createDistinctCountHelperMeasure(MeasureDefinition measure) { + return new MeasureDefinition(measure.valueClass, (byte)0, (JRExtendedIncrementerFactory)JRDistinctCountExtendedIncrementerFactory.getInstance(), true); + } + + public byte getCalculation() { + return this.calculation; + } + + public JRExtendedIncrementerFactory getIncrementerFactory() { + return this.incrementerFactory; + } + + public JRExtendedIncrementer getIncrementer() { + return this.incrementerFactory.getExtendedIncrementer(this.calculation); + } + + protected boolean isSystemDefined() { + return this.isSystemDefined; + } + + public Class getValueClass() { + return this.valueClass; + } + + protected static final AbstractValueProvider VALUE_PROVIDER = new AbstractValueProvider() { + public Object getValue(JRCalculable calculable) { + return calculable.getValue(); + } + }; + + public class MeasureValue implements JRCalculable { + private Object value; + + private MeasureValue[] helpers; + + private boolean initialized; + + private JRExtendedIncrementer incrementer; + + private final MeasureDefinition this$0; + + public MeasureValue() { + this.value = null; + this.helpers = new MeasureValue[3]; + this.incrementer = MeasureDefinition.this.getIncrementer(); + init(); + } + + protected void init() { + this.value = this.incrementer.initialValue(); + setInitialized(true); + } + + public void addValue(Object addValue) throws JRException { + this.value = this.incrementer.increment(this, addValue, MeasureDefinition.VALUE_PROVIDER); + setInitialized(false); + } + + public void addValue(MeasureValue measureValue) throws JRException { + if (!measureValue.isInitialized()) { + this.value = this.incrementer.combine(this, measureValue, MeasureDefinition.VALUE_PROVIDER); + setInitialized(false); + } + } + + public Object getValue() { + return this.value; + } + + public String toString() { + return String.valueOf(getValue()); + } + + public MeasureValue setHelper(MeasureValue helperVariable, byte type) { + MeasureValue old = this.helpers[type]; + this.helpers[type] = helperVariable; + return old; + } + + public boolean isInitialized() { + return this.initialized; + } + + public Object getIncrementedValue() { + return this.value; + } + + public JRCalculable getHelperVariable(byte helperType) { + return this.helpers[helperType]; + } + + public void setInitialized(boolean isInitialized) { + this.initialized = isInitialized; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRAbstractChartCustomizer.java b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractChartCustomizer.java new file mode 100644 index 0000000..e8fd731 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractChartCustomizer.java @@ -0,0 +1,40 @@ +package net.sf.jasperreports.engine; + +import net.sf.jasperreports.engine.fill.JRBaseFiller; +import net.sf.jasperreports.engine.fill.JRFillChart; +import net.sf.jasperreports.engine.fill.JRFillChartDataset; + +public abstract class JRAbstractChartCustomizer implements JRChartCustomizer { + private JRBaseFiller filler; + + private JRFillChartDataset chartDataset; + + public void init(JRBaseFiller chartFiller, JRFillChart chart) { + this.filler = chartFiller; + this.chartDataset = (JRFillChartDataset)chart.getDataset(); + } + + protected final Object getParameterValue(String parameterName) { + return getParameterValue(parameterName, false); + } + + protected final Object getParameterValue(String parameterName, boolean fromInputDataset) { + return (fromInputDataset ? this.chartDataset.getInputDataset() : this.filler.getMainDataset()).getParameterValue(parameterName); + } + + protected final Object getVariableValue(String variableName) { + return getVariableValue(variableName, false); + } + + protected final Object getVariableValue(String variableName, boolean fromInputDataset) { + return (fromInputDataset ? this.chartDataset.getInputDataset() : this.filler.getMainDataset()).getVariableValue(variableName); + } + + protected final Object getFieldValue(String fieldName) { + return getFieldValue(fieldName, false); + } + + protected final Object getFieldValue(String fieldName, boolean fromInputDataset) { + return (fromInputDataset ? this.chartDataset.getInputDataset() : this.filler.getMainDataset()).getFieldValue(fieldName); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRAbstractObjectFactory.java b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractObjectFactory.java new file mode 100644 index 0000000..b4e6c32 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractObjectFactory.java @@ -0,0 +1,95 @@ +package net.sf.jasperreports.engine; + +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; + +public abstract class JRAbstractObjectFactory implements JRVisitor { + private Map objectsMap = new HashMap(); + + private Object visitResult = null; + + protected Object get(Object object) { + return this.objectsMap.get(object); + } + + public void put(Object object, Object copy) { + this.objectsMap.put(object, copy); + } + + public Object getVisitResult(JRVisitable visitable) { + if (visitable != null) { + visitable.visit(this); + return this.visitResult; + } + return null; + } + + protected void setVisitResult(Object visitResult) { + this.visitResult = visitResult; + } + + public abstract JRReportFont getReportFont(JRReportFont paramJRReportFont); + + public abstract JRStyle getStyle(JRStyle paramJRStyle); + + public abstract void setStyle(JRStyleSetter paramJRStyleSetter, JRStyleContainer paramJRStyleContainer); + + public abstract JRPieDataset getPieDataset(JRPieDataset paramJRPieDataset); + + public abstract JRPiePlot getPiePlot(JRPiePlot paramJRPiePlot); + + public abstract JRPie3DPlot getPie3DPlot(JRPie3DPlot paramJRPie3DPlot); + + public abstract JRCategoryDataset getCategoryDataset(JRCategoryDataset paramJRCategoryDataset); + + public abstract JRTimeSeriesDataset getTimeSeriesDataset(JRTimeSeriesDataset paramJRTimeSeriesDataset); + + public abstract JRTimePeriodDataset getTimePeriodDataset(JRTimePeriodDataset paramJRTimePeriodDataset); + + public abstract JRTimePeriodSeries getTimePeriodSeries(JRTimePeriodSeries paramJRTimePeriodSeries); + + public abstract JRTimeSeries getTimeSeries(JRTimeSeries paramJRTimeSeries); + + public abstract JRCategorySeries getCategorySeries(JRCategorySeries paramJRCategorySeries); + + public abstract JRXyzDataset getXyzDataset(JRXyzDataset paramJRXyzDataset); + + public abstract JRXyzSeries getXyzSeries(JRXyzSeries paramJRXyzSeries); + + public abstract JRBarPlot getBarPlot(JRBarPlot paramJRBarPlot); + + public abstract JRBar3DPlot getBar3DPlot(JRBar3DPlot paramJRBar3DPlot); + + public abstract JRLinePlot getLinePlot(JRLinePlot paramJRLinePlot); + + public abstract JRAreaPlot getAreaPlot(JRAreaPlot paramJRAreaPlot); + + public abstract JRBubblePlot getBubblePlot(JRBubblePlot paramJRBubblePlot); + + public abstract JRCandlestickPlot getCandlestickPlot(JRCandlestickPlot paramJRCandlestickPlot); + + public abstract JRConditionalStyle getConditionalStyle(JRConditionalStyle paramJRConditionalStyle, JRStyle paramJRStyle); + + public abstract JRExpression getExpression(JRExpression paramJRExpression, boolean paramBoolean); + + public JRExpression getExpression(JRExpression expression) { + return getExpression(expression, false); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRAbstractRenderer.java b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractRenderer.java new file mode 100644 index 0000000..a0775b1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractRenderer.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.engine; + +public abstract class JRAbstractRenderer implements JRRenderable { + private static final long serialVersionUID = 10200L; + + private String id = null; + + public JRAbstractRenderer() { + this.id = System.currentTimeMillis() + "-" + Math.random(); + } + + public String getId() { + return this.id; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRAbstractScriptlet.java b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractScriptlet.java new file mode 100644 index 0000000..42462c5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRAbstractScriptlet.java @@ -0,0 +1,140 @@ +package net.sf.jasperreports.engine; + +import java.util.Map; +import net.sf.jasperreports.engine.fill.JRFillField; +import net.sf.jasperreports.engine.fill.JRFillGroup; +import net.sf.jasperreports.engine.fill.JRFillParameter; +import net.sf.jasperreports.engine.fill.JRFillVariable; + +public abstract class JRAbstractScriptlet { + protected Map parametersMap = null; + + protected Map fieldsMap = null; + + protected Map variablesMap = null; + + protected JRFillGroup[] groups = null; + + public void setData(Map parsm, Map fldsm, Map varsm, JRFillGroup[] grps) { + this.parametersMap = parsm; + this.fieldsMap = fldsm; + this.variablesMap = varsm; + this.groups = grps; + } + + public Object getParameterValue(String parameterName) throws JRScriptletException { + JRFillParameter parameter = (JRFillParameter)this.parametersMap.get(parameterName); + if (parameter == null) + throw new JRScriptletException("Parameter not found : " + parameterName); + return parameter.getValue(); + } + + public Object getFieldValue(String fieldName) throws JRScriptletException { + JRFillField field = (JRFillField)this.fieldsMap.get(fieldName); + if (field == null) + throw new JRScriptletException("Field not found : " + fieldName); + return field.getValue(); + } + + public Object getVariableValue(String variableName) throws JRScriptletException { + JRFillVariable variable = (JRFillVariable)this.variablesMap.get(variableName); + if (variable == null) + throw new JRScriptletException("Variable not found : " + variableName); + return variable.getValue(); + } + + public void setVariableValue(String variableName, Object value) throws JRScriptletException { + JRFillVariable variable = (JRFillVariable)this.variablesMap.get(variableName); + if (variable == null) + throw new JRScriptletException("Variable not found : " + variableName); + if (value != null && !variable.getValueClass().isInstance(value)) + throw new JRScriptletException("Incompatible value assigned to variable " + variableName + ". Expected " + variable.getValueClassName() + "."); + variable.setValue(value); + } + + public void callBeforeReportInit() throws JRScriptletException { + beforeReportInit(); + beforePageInit(); + beforeColumnInit(); + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) + beforeGroupInit(this.groups[i].getName()); + } + + public void callAfterReportInit() throws JRScriptletException { + if (this.groups != null && this.groups.length > 0) + for (int i = this.groups.length - 1; i >= 0; i--) + afterGroupInit(this.groups[i].getName()); + afterColumnInit(); + afterPageInit(); + afterReportInit(); + } + + public void callBeforePageInit() throws JRScriptletException { + beforePageInit(); + beforeColumnInit(); + } + + public void callAfterPageInit() throws JRScriptletException { + afterColumnInit(); + afterPageInit(); + } + + public void callBeforeColumnInit() throws JRScriptletException { + beforeColumnInit(); + } + + public void callAfterColumnInit() throws JRScriptletException { + afterColumnInit(); + } + + public void callBeforeGroupInit() throws JRScriptletException { + if (this.groups != null && this.groups.length > 0) { + JRFillGroup group = null; + for (int i = 0; i < this.groups.length; i++) { + group = this.groups[i]; + if (group.hasChanged()) + beforeGroupInit(group.getName()); + } + } + } + + public void callAfterGroupInit() throws JRScriptletException { + if (this.groups != null && this.groups.length > 0) { + JRFillGroup group = null; + for (int i = this.groups.length - 1; i >= 0; i--) { + group = this.groups[i]; + if (group.hasChanged()) + afterGroupInit(group.getName()); + } + } + } + + public void callBeforeDetailEval() throws JRScriptletException { + beforeDetailEval(); + } + + public void callAfterDetailEval() throws JRScriptletException { + afterDetailEval(); + } + + public abstract void beforeReportInit() throws JRScriptletException; + + public abstract void afterReportInit() throws JRScriptletException; + + public abstract void beforePageInit() throws JRScriptletException; + + public abstract void afterPageInit() throws JRScriptletException; + + public abstract void beforeColumnInit() throws JRScriptletException; + + public abstract void afterColumnInit() throws JRScriptletException; + + public abstract void beforeGroupInit(String paramString) throws JRScriptletException; + + public abstract void afterGroupInit(String paramString) throws JRScriptletException; + + public abstract void beforeDetailEval() throws JRScriptletException; + + public abstract void afterDetailEval() throws JRScriptletException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRAlignment.java b/hrmsEjb/net/sf/jasperreports/engine/JRAlignment.java new file mode 100644 index 0000000..58777b6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRAlignment.java @@ -0,0 +1,35 @@ +package net.sf.jasperreports.engine; + +public interface JRAlignment extends JRStyleContainer { + public static final byte HORIZONTAL_ALIGN_LEFT = 1; + + public static final byte HORIZONTAL_ALIGN_CENTER = 2; + + public static final byte HORIZONTAL_ALIGN_RIGHT = 3; + + public static final byte HORIZONTAL_ALIGN_JUSTIFIED = 4; + + public static final byte VERTICAL_ALIGN_TOP = 1; + + public static final byte VERTICAL_ALIGN_MIDDLE = 2; + + public static final byte VERTICAL_ALIGN_BOTTOM = 3; + + public static final byte VERTICAL_ALIGN_JUSTIFIED = 4; + + byte getHorizontalAlignment(); + + Byte getOwnHorizontalAlignment(); + + void setHorizontalAlignment(byte paramByte); + + void setHorizontalAlignment(Byte paramByte); + + byte getVerticalAlignment(); + + Byte getOwnVerticalAlignment(); + + void setVerticalAlignment(byte paramByte); + + void setVerticalAlignment(Byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRAnchor.java b/hrmsEjb/net/sf/jasperreports/engine/JRAnchor.java new file mode 100644 index 0000000..4d0e374 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRAnchor.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +public interface JRAnchor { + public static final int NO_BOOKMARK = 0; + + JRExpression getAnchorNameExpression(); + + int getBookmarkLevel(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRBand.java b/hrmsEjb/net/sf/jasperreports/engine/JRBand.java new file mode 100644 index 0000000..384d7c1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRBand.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine; + +public interface JRBand extends JRElementGroup { + int getHeight(); + + boolean isSplitAllowed(); + + void setSplitAllowed(boolean paramBoolean); + + JRExpression getPrintWhenExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRBox.java b/hrmsEjb/net/sf/jasperreports/engine/JRBox.java new file mode 100644 index 0000000..7d9f14f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRBox.java @@ -0,0 +1,115 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRBox extends JRStyleContainer { + byte getBorder(); + + Byte getOwnBorder(); + + void setBorder(byte paramByte); + + void setBorder(Byte paramByte); + + Color getBorderColor(); + + Color getOwnBorderColor(); + + void setBorderColor(Color paramColor); + + int getPadding(); + + Integer getOwnPadding(); + + void setPadding(int paramInt); + + void setPadding(Integer paramInteger); + + byte getTopBorder(); + + Byte getOwnTopBorder(); + + void setTopBorder(byte paramByte); + + void setTopBorder(Byte paramByte); + + Color getTopBorderColor(); + + Color getOwnTopBorderColor(); + + void setTopBorderColor(Color paramColor); + + int getTopPadding(); + + Integer getOwnTopPadding(); + + void setTopPadding(int paramInt); + + void setTopPadding(Integer paramInteger); + + byte getLeftBorder(); + + Byte getOwnLeftBorder(); + + void setLeftBorder(byte paramByte); + + void setLeftBorder(Byte paramByte); + + Color getLeftBorderColor(); + + Color getOwnLeftBorderColor(); + + void setLeftBorderColor(Color paramColor); + + int getLeftPadding(); + + Integer getOwnLeftPadding(); + + void setLeftPadding(int paramInt); + + void setLeftPadding(Integer paramInteger); + + byte getBottomBorder(); + + Byte getOwnBottomBorder(); + + void setBottomBorder(byte paramByte); + + void setBottomBorder(Byte paramByte); + + Color getBottomBorderColor(); + + Color getOwnBottomBorderColor(); + + void setBottomBorderColor(Color paramColor); + + int getBottomPadding(); + + Integer getOwnBottomPadding(); + + void setBottomPadding(int paramInt); + + void setBottomPadding(Integer paramInteger); + + byte getRightBorder(); + + Byte getOwnRightBorder(); + + void setRightBorder(byte paramByte); + + void setRightBorder(Byte paramByte); + + Color getRightBorderColor(); + + Color getOwnRightBorderColor(); + + void setRightBorderColor(Color paramColor); + + int getRightPadding(); + + Integer getOwnRightPadding(); + + void setRightPadding(int paramInt); + + void setRightPadding(Integer paramInteger); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRBoxContainer.java b/hrmsEjb/net/sf/jasperreports/engine/JRBoxContainer.java new file mode 100644 index 0000000..626761d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRBoxContainer.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRBoxContainer extends JRStyleContainer { + Color getDefaultLineColor(); + + JRLineBox getLineBox(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRBreak.java b/hrmsEjb/net/sf/jasperreports/engine/JRBreak.java new file mode 100644 index 0000000..44c6c11 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRBreak.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine; + +public interface JRBreak extends JRElement { + public static final byte TYPE_PAGE = 1; + + public static final byte TYPE_COLUMN = 2; + + byte getType(); + + void setType(byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRChart.java b/hrmsEjb/net/sf/jasperreports/engine/JRChart.java new file mode 100644 index 0000000..05b7990 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRChart.java @@ -0,0 +1,133 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRChart extends JRElement, JRAnchor, JRHyperlink, JRBox, JRBoxContainer { + public static final String PROPERTY_CHART_RENDER_TYPE = "net.sf.jasperreports.chart.render.type"; + + public static final byte EDGE_TOP = 1; + + public static final byte EDGE_BOTTOM = 2; + + public static final byte EDGE_LEFT = 3; + + public static final byte EDGE_RIGHT = 4; + + public static final byte TITLE_POSITION_TOP = 1; + + public static final byte TITLE_POSITION_BOTTOM = 2; + + public static final byte TITLE_POSITION_LEFT = 3; + + public static final byte TITLE_POSITION_RIGHT = 4; + + public static final byte CHART_TYPE_AREA = 1; + + public static final byte CHART_TYPE_BAR3D = 2; + + public static final byte CHART_TYPE_BAR = 3; + + public static final byte CHART_TYPE_BUBBLE = 4; + + public static final byte CHART_TYPE_CANDLESTICK = 5; + + public static final byte CHART_TYPE_HIGHLOW = 6; + + public static final byte CHART_TYPE_LINE = 7; + + public static final byte CHART_TYPE_PIE3D = 8; + + public static final byte CHART_TYPE_PIE = 9; + + public static final byte CHART_TYPE_SCATTER = 10; + + public static final byte CHART_TYPE_STACKEDBAR3D = 11; + + public static final byte CHART_TYPE_STACKEDBAR = 12; + + public static final byte CHART_TYPE_XYAREA = 13; + + public static final byte CHART_TYPE_XYBAR = 14; + + public static final byte CHART_TYPE_XYLINE = 15; + + public static final byte CHART_TYPE_TIMESERIES = 16; + + public static final byte CHART_TYPE_METER = 17; + + public static final byte CHART_TYPE_THERMOMETER = 18; + + public static final byte CHART_TYPE_MULTI_AXIS = 19; + + public static final byte CHART_TYPE_STACKEDAREA = 20; + + public static final String RENDER_TYPE_DRAW = "draw"; + + public static final String RENDER_TYPE_IMAGE = "image"; + + public static final String RENDER_TYPE_SVG = "svg"; + + boolean isShowLegend(); + + void setShowLegend(boolean paramBoolean); + + byte getEvaluationTime(); + + JRGroup getEvaluationGroup(); + + JRBox getBox(); + + JRExpression getTitleExpression(); + + JRFont getTitleFont(); + + byte getTitlePosition(); + + void setTitlePosition(byte paramByte); + + Color getTitleColor(); + + Color getOwnTitleColor(); + + void setTitleColor(Color paramColor); + + JRExpression getSubtitleExpression(); + + JRFont getSubtitleFont(); + + Color getSubtitleColor(); + + Color getOwnSubtitleColor(); + + void setSubtitleColor(Color paramColor); + + Color getLegendColor(); + + Color getOwnLegendColor(); + + void setLegendColor(Color paramColor); + + Color getOwnLegendBackgroundColor(); + + Color getLegendBackgroundColor(); + + void setLegendBackgroundColor(Color paramColor); + + JRFont getLegendFont(); + + byte getLegendPosition(); + + void setLegendPosition(byte paramByte); + + JRChartDataset getDataset(); + + JRChartPlot getPlot(); + + byte getChartType(); + + String getCustomizerClass(); + + String getRenderType(); + + void setRenderType(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRChartCustomizer.java b/hrmsEjb/net/sf/jasperreports/engine/JRChartCustomizer.java new file mode 100644 index 0000000..d502712 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRChartCustomizer.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +import org.jfree.chart.JFreeChart; + +public interface JRChartCustomizer { + void customize(JFreeChart paramJFreeChart, JRChart paramJRChart); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRChartDataset.java b/hrmsEjb/net/sf/jasperreports/engine/JRChartDataset.java new file mode 100644 index 0000000..ec5e9d1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRChartDataset.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine; + +import net.sf.jasperreports.engine.design.JRVerifier; + +public interface JRChartDataset extends JRElementDataset { + public static final byte PIE_DATASET = 1; + + public static final byte CATEGORY_DATASET = 2; + + public static final byte XY_DATASET = 3; + + public static final byte XYZ_DATASET = 4; + + public static final byte TIMEPERIOD_DATASET = 5; + + public static final byte TIMESERIES_DATASET = 6; + + public static final byte HIGHLOW_DATASET = 7; + + public static final byte VALUE_DATASET = 8; + + byte getDatasetType(); + + void validate(JRVerifier paramJRVerifier); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRChartPlot.java b/hrmsEjb/net/sf/jasperreports/engine/JRChartPlot.java new file mode 100644 index 0000000..ddccf8b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRChartPlot.java @@ -0,0 +1,50 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; +import java.util.Collection; +import java.util.SortedSet; +import org.jfree.chart.plot.PlotOrientation; + +public interface JRChartPlot { + JRChart getChart(); + + Color getBackcolor(); + + Color getOwnBackcolor(); + + void setBackcolor(Color paramColor); + + PlotOrientation getOrientation(); + + void setOrientation(PlotOrientation paramPlotOrientation); + + float getBackgroundAlpha(); + + void setBackgroundAlpha(float paramFloat); + + float getForegroundAlpha(); + + void setForegroundAlpha(float paramFloat); + + double getLabelRotation(); + + void setLabelRotation(double paramDouble); + + SortedSet getSeriesColors(); + + void clearSeriesColors(); + + void addSeriesColor(JRSeriesColor paramJRSeriesColor); + + void setSeriesColors(Collection paramCollection); + + void collectExpressions(JRExpressionCollector paramJRExpressionCollector); + + Object clone(JRChart paramJRChart); + + public static interface JRSeriesColor extends JRCloneable { + int getSeriesOrder(); + + Color getColor(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRChild.java b/hrmsEjb/net/sf/jasperreports/engine/JRChild.java new file mode 100644 index 0000000..f66554c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRChild.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRChild extends JRVisitable, JRCloneable { + Object clone(JRElementGroup paramJRElementGroup); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRCloneable.java b/hrmsEjb/net/sf/jasperreports/engine/JRCloneable.java new file mode 100644 index 0000000..2aa1287 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRCloneable.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRCloneable extends Cloneable { + Object clone(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRCommonElement.java b/hrmsEjb/net/sf/jasperreports/engine/JRCommonElement.java new file mode 100644 index 0000000..3aeb6c9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRCommonElement.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRCommonElement extends JRStyleContainer { + String getKey(); + + byte getMode(); + + Byte getOwnMode(); + + Color getForecolor(); + + Color getOwnForecolor(); + + Color getBackcolor(); + + Color getOwnBackcolor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRCommonGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/JRCommonGraphicElement.java new file mode 100644 index 0000000..a5cc7ee --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRCommonGraphicElement.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +public interface JRCommonGraphicElement extends JRCommonElement, JRPenContainer { + JRPen getLinePen(); + + byte getFill(); + + Byte getOwnFill(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRCommonImage.java b/hrmsEjb/net/sf/jasperreports/engine/JRCommonImage.java new file mode 100644 index 0000000..6c656ca --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRCommonImage.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRCommonImage extends JRCommonGraphicElement, JRBoxContainer { + byte getScaleImage(); + + Byte getOwnScaleImage(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRCommonRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/JRCommonRectangle.java new file mode 100644 index 0000000..a3f5c0e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRCommonRectangle.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRCommonRectangle extends JRStyleContainer { + int getRadius(); + + Integer getOwnRadius(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRCommonText.java b/hrmsEjb/net/sf/jasperreports/engine/JRCommonText.java new file mode 100644 index 0000000..ec070ab --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRCommonText.java @@ -0,0 +1,33 @@ +package net.sf.jasperreports.engine; + +public interface JRCommonText extends JRCommonElement, JRBoxContainer { + public static final String MARKUP_NONE = "none"; + + public static final String MARKUP_STYLED_TEXT = "styled"; + + public static final String MARKUP_HTML = "html"; + + public static final String MARKUP_RTF = "rtf"; + + int getWidth(); + + int getHeight(); + + byte getRotation(); + + Byte getOwnRotation(); + + byte getLineSpacing(); + + Byte getOwnLineSpacing(); + + boolean isStyledText(); + + Boolean isOwnStyledText(); + + String getMarkup(); + + String getOwnMarkup(); + + int getFontSize(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRConditionalStyle.java b/hrmsEjb/net/sf/jasperreports/engine/JRConditionalStyle.java new file mode 100644 index 0000000..25090a4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRConditionalStyle.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRConditionalStyle extends JRStyle { + JRExpression getConditionExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRDataSource.java b/hrmsEjb/net/sf/jasperreports/engine/JRDataSource.java new file mode 100644 index 0000000..7552707 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRDataSource.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRDataSource { + boolean next() throws JRException; + + Object getFieldValue(JRField paramJRField) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRDataset.java b/hrmsEjb/net/sf/jasperreports/engine/JRDataset.java new file mode 100644 index 0000000..dd25748 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRDataset.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.engine; + +public interface JRDataset extends JRPropertiesHolder, JRCloneable { + public static final byte WHEN_RESOURCE_MISSING_TYPE_NULL = 1; + + public static final byte WHEN_RESOURCE_MISSING_TYPE_EMPTY = 2; + + public static final byte WHEN_RESOURCE_MISSING_TYPE_KEY = 3; + + public static final byte WHEN_RESOURCE_MISSING_TYPE_ERROR = 4; + + String getName(); + + String getScriptletClass(); + + JRParameter[] getParameters(); + + JRQuery getQuery(); + + JRField[] getFields(); + + JRSortField[] getSortFields(); + + JRVariable[] getVariables(); + + JRGroup[] getGroups(); + + boolean isMainDataset(); + + String getResourceBundle(); + + byte getWhenResourceMissingType(); + + void setWhenResourceMissingType(byte paramByte); + + JRExpression getFilterExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRDatasetParameter.java b/hrmsEjb/net/sf/jasperreports/engine/JRDatasetParameter.java new file mode 100644 index 0000000..d8060ba --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRDatasetParameter.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRDatasetParameter extends JRCloneable { + String getName(); + + JRExpression getExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRDatasetRun.java b/hrmsEjb/net/sf/jasperreports/engine/JRDatasetRun.java new file mode 100644 index 0000000..b5ae0ef --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRDatasetRun.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.engine; + +public interface JRDatasetRun extends JRCloneable { + String getDatasetName(); + + JRExpression getParametersMapExpression(); + + JRDatasetParameter[] getParameters(); + + JRExpression getConnectionExpression(); + + JRExpression getDataSourceExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRDefaultFontProvider.java b/hrmsEjb/net/sf/jasperreports/engine/JRDefaultFontProvider.java new file mode 100644 index 0000000..c0f043f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRDefaultFontProvider.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRDefaultFontProvider { + JRReportFont getDefaultFont(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRDefaultScriptlet.java b/hrmsEjb/net/sf/jasperreports/engine/JRDefaultScriptlet.java new file mode 100644 index 0000000..e708f6d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRDefaultScriptlet.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine; + +public class JRDefaultScriptlet extends JRAbstractScriptlet { + public void beforeReportInit() throws JRScriptletException {} + + public void afterReportInit() throws JRScriptletException {} + + public void beforePageInit() throws JRScriptletException {} + + public void afterPageInit() throws JRScriptletException {} + + public void beforeColumnInit() throws JRScriptletException {} + + public void afterColumnInit() throws JRScriptletException {} + + public void beforeGroupInit(String groupName) throws JRScriptletException {} + + public void afterGroupInit(String groupName) throws JRScriptletException {} + + public void beforeDetailEval() throws JRScriptletException {} + + public void afterDetailEval() throws JRScriptletException {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRDefaultStyleProvider.java b/hrmsEjb/net/sf/jasperreports/engine/JRDefaultStyleProvider.java new file mode 100644 index 0000000..f71c428 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRDefaultStyleProvider.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRDefaultStyleProvider extends JRDefaultFontProvider { + JRStyle getDefaultStyle(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRElement.java b/hrmsEjb/net/sf/jasperreports/engine/JRElement.java new file mode 100644 index 0000000..9d7b173 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRElement.java @@ -0,0 +1,77 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRElement extends JRChild, JRCommonElement, JRPropertiesHolder { + public static final byte POSITION_TYPE_FLOAT = 1; + + public static final byte POSITION_TYPE_FIX_RELATIVE_TO_TOP = 2; + + public static final byte POSITION_TYPE_FIX_RELATIVE_TO_BOTTOM = 3; + + public static final byte MODE_OPAQUE = 1; + + public static final byte MODE_TRANSPARENT = 2; + + public static final byte STRETCH_TYPE_NO_STRETCH = 0; + + public static final byte STRETCH_TYPE_RELATIVE_TO_TALLEST_OBJECT = 1; + + public static final byte STRETCH_TYPE_RELATIVE_TO_BAND_HEIGHT = 2; + + String getKey(); + + byte getPositionType(); + + void setPositionType(byte paramByte); + + byte getStretchType(); + + void setStretchType(byte paramByte); + + boolean isPrintRepeatedValues(); + + void setPrintRepeatedValues(boolean paramBoolean); + + void setMode(byte paramByte); + + void setMode(Byte paramByte); + + int getX(); + + void setX(int paramInt); + + int getY(); + + int getWidth(); + + void setWidth(int paramInt); + + int getHeight(); + + boolean isRemoveLineWhenBlank(); + + void setRemoveLineWhenBlank(boolean paramBoolean); + + boolean isPrintInFirstWholeBand(); + + void setPrintInFirstWholeBand(boolean paramBoolean); + + boolean isPrintWhenDetailOverflows(); + + void setPrintWhenDetailOverflows(boolean paramBoolean); + + void setForecolor(Color paramColor); + + void setBackcolor(Color paramColor); + + JRExpression getPrintWhenExpression(); + + JRGroup getPrintWhenGroupChanges(); + + JRElementGroup getElementGroup(); + + void collectExpressions(JRExpressionCollector paramJRExpressionCollector); + + JRPropertyExpression[] getPropertyExpressions(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRElementDataset.java b/hrmsEjb/net/sf/jasperreports/engine/JRElementDataset.java new file mode 100644 index 0000000..5a64928 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRElementDataset.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine; + +public interface JRElementDataset extends JRCloneable { + byte getResetType(); + + JRGroup getResetGroup(); + + byte getIncrementType(); + + JRGroup getIncrementGroup(); + + void collectExpressions(JRExpressionCollector paramJRExpressionCollector); + + JRDatasetRun getDatasetRun(); + + JRExpression getIncrementWhenExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRElementGroup.java b/hrmsEjb/net/sf/jasperreports/engine/JRElementGroup.java new file mode 100644 index 0000000..22ab004 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRElementGroup.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.engine; + +import java.util.List; + +public interface JRElementGroup extends JRChild { + List getChildren(); + + JRElementGroup getElementGroup(); + + JRElement[] getElements(); + + JRElement getElementByKey(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JREllipse.java b/hrmsEjb/net/sf/jasperreports/engine/JREllipse.java new file mode 100644 index 0000000..27113c4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JREllipse.java @@ -0,0 +1,3 @@ +package net.sf.jasperreports.engine; + +public interface JREllipse extends JRGraphicElement {} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRException.java b/hrmsEjb/net/sf/jasperreports/engine/JRException.java new file mode 100644 index 0000000..3b88630 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRException.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine; + +public class JRException extends Exception { + private static final long serialVersionUID = 10200L; + + public JRException(String message) { + super(message); + } + + public JRException(Throwable t) { + super(t); + } + + public JRException(String message, Throwable t) { + super(message, t); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRExpression.java b/hrmsEjb/net/sf/jasperreports/engine/JRExpression.java new file mode 100644 index 0000000..e53e365 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRExpression.java @@ -0,0 +1,35 @@ +package net.sf.jasperreports.engine; + +public interface JRExpression extends JRCloneable { + public static final byte EVALUATION_TIME_NOW = 1; + + public static final byte EVALUATION_TIME_REPORT = 2; + + public static final byte EVALUATION_TIME_PAGE = 3; + + public static final byte EVALUATION_TIME_COLUMN = 4; + + public static final byte EVALUATION_TIME_GROUP = 5; + + public static final byte EVALUATION_TIME_BAND = 6; + + public static final byte EVALUATION_TIME_AUTO = 7; + + public static final byte EVALUATION_OLD = 1; + + public static final byte EVALUATION_ESTIMATED = 2; + + public static final byte EVALUATION_DEFAULT = 3; + + public static final Integer NOT_USED_ID = new Integer(-1); + + Class getValueClass(); + + String getValueClassName(); + + int getId(); + + JRExpressionChunk[] getChunks(); + + String getText(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRExpressionChunk.java b/hrmsEjb/net/sf/jasperreports/engine/JRExpressionChunk.java new file mode 100644 index 0000000..b0a4bb1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRExpressionChunk.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine; + +public interface JRExpressionChunk extends JRCloneable { + public static final byte TYPE_TEXT = 1; + + public static final byte TYPE_PARAMETER = 2; + + public static final byte TYPE_FIELD = 3; + + public static final byte TYPE_VARIABLE = 4; + + public static final byte TYPE_RESOURCE = 5; + + byte getType(); + + String getText(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRExpressionCollector.java b/hrmsEjb/net/sf/jasperreports/engine/JRExpressionCollector.java new file mode 100644 index 0000000..9fb8772 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRExpressionCollector.java @@ -0,0 +1,701 @@ +package net.sf.jasperreports.engine; + +import java.util.ArrayList; +import java.util.Collection; +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 java.util.TreeMap; +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.charts.util.JRMeterInterval; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; + +public class JRExpressionCollector { + private final JRReport report; + + private final JRExpressionCollector parent; + + private Map expressionIds; + + public static JRExpressionCollector collector(JRReport report) { + JRExpressionCollector collector = new JRExpressionCollector(null, report); + collector.collect(); + return collector; + } + + public static List collectExpressions(JRReport report) { + return collector(report).getExpressions(); + } + + public static JRExpressionCollector collector(JRReport report, JRCrosstab crosstab) { + JRExpressionCollector collector = new JRExpressionCollector(null, report); + collector.collect(crosstab); + return collector; + } + + public static List collectExpressions(JRReport report, JRCrosstab crosstab) { + return collector(report, crosstab).getExpressions(crosstab); + } + + protected static class GeneratedIds { + private final TreeMap ids = new TreeMap(); + + private int nextId = 0; + + private List expressions; + + public JRExpression put(Integer id, JRExpression expression) { + this.expressions = null; + return this.ids.put(id, expression); + } + + public Integer nextId() { + Integer id = new Integer(this.nextId); + while (this.ids.containsKey(id)) + id = new Integer(++this.nextId); + return id; + } + + public List expressions() { + if (this.expressions == null) + this.expressions = new ArrayList(this.ids.values()); + return this.expressions; + } + + public JRExpression expression(int id) { + return (JRExpression)this.ids.get(new Integer(id)); + } + } + + private GeneratedIds generatedIds = new GeneratedIds(); + + private Map crosstabIds = new HashMap(); + + private Map datasetCollectors; + + private Map crosstabCollectors; + + private final Set collectedStyles; + + protected JRExpressionCollector(JRExpressionCollector parent, JRReport report) { + this.parent = parent; + this.report = report; + if (parent == null) { + this.expressionIds = new HashMap(); + this.datasetCollectors = new HashMap(); + this.crosstabCollectors = new HashMap(); + } else { + this.expressionIds = this.parent.expressionIds; + } + this.collectedStyles = new HashSet(); + } + + private void addExpression(JRExpression expression) { + if (expression != null) { + Integer id = getExpressionId(expression); + if (id == null) { + id = this.generatedIds.nextId(); + setGeneratedId(expression, id); + this.generatedIds.put(id, expression); + } else { + JRExpression existingExpression = this.generatedIds.put(id, expression); + if (existingExpression != null && !existingExpression.equals(expression)) { + Integer newId = this.generatedIds.nextId(); + updateGeneratedId(existingExpression, id, newId); + this.generatedIds.put(newId, existingExpression); + } + } + } + } + + private void setGeneratedId(JRExpression expression, Integer id) { + Object existingId = this.expressionIds.put(expression, id); + if (existingId != null && !existingId.equals(id)) + throw new JRRuntimeException("Expression \"" + expression.getText() + "\" has two generated IDs"); + } + + private void updateGeneratedId(JRExpression expression, Integer currentId, Integer newId) { + Object existingId = this.expressionIds.put(expression, newId); + if (existingId == null || !existingId.equals(currentId)) + throw new JRRuntimeException("Expression \"" + expression.getText() + "\" not found with id " + currentId); + } + + private JRExpressionCollector getCollector(JRElementDataset elementDataset) { + JRExpressionCollector collector; + JRDatasetRun datasetRun = elementDataset.getDatasetRun(); + if (datasetRun == null) { + collector = this; + } else { + collector = getDatasetCollector(datasetRun.getDatasetName()); + } + return collector; + } + + private JRExpressionCollector getDatasetCollector(String datasetName) { + JRExpressionCollector collector = (JRExpressionCollector)this.datasetCollectors.get(datasetName); + if (collector == null) { + collector = new JRExpressionCollector(this, this.report); + this.datasetCollectors.put(datasetName, collector); + } + return collector; + } + + public JRExpressionCollector getCollector(JRDataset dataset) { + JRExpressionCollector collector; + if (dataset.isMainDataset() || this.datasetCollectors == null) { + collector = this; + } else { + collector = getDatasetCollector(dataset.getName()); + } + return collector; + } + + public JRExpressionCollector getCollector(JRCrosstab crosstab) { + JRExpressionCollector collector = (JRExpressionCollector)this.crosstabCollectors.get(crosstab); + if (collector == null) { + collector = new JRExpressionCollector(this, this.report); + this.crosstabCollectors.put(crosstab, collector); + } + return collector; + } + + public List getExpressions() { + return new ArrayList(this.generatedIds.expressions()); + } + + public List getExpressions(JRDataset dataset) { + return getCollector(dataset).getExpressions(); + } + + public List getExpressions(JRCrosstab crosstab) { + return getCollector(crosstab).getExpressions(); + } + + public Integer getExpressionId(JRExpression expression) { + return (Integer)this.expressionIds.get(expression); + } + + public JRExpression getExpression(int expressionId) { + return this.generatedIds.expression(expressionId); + } + + public Integer getCrosstabId(JRCrosstab crosstab) { + return (Integer)this.crosstabIds.get(crosstab); + } + + public Collection collect() { + collectTemplates(); + collect(this.report.getDefaultStyle()); + collect(this.report.getMainDataset()); + JRDataset[] datasets = this.report.getDatasets(); + if (datasets != null && datasets.length > 0) + for (int i = 0; i < datasets.length; i++) { + JRExpressionCollector collector = getCollector(datasets[i]); + collector.collect(datasets[i]); + } + collect(this.report.getBackground()); + collect(this.report.getTitle()); + collect(this.report.getPageHeader()); + collect(this.report.getColumnHeader()); + collect(this.report.getDetail()); + collect(this.report.getColumnFooter()); + collect(this.report.getPageFooter()); + collect(this.report.getLastPageFooter()); + collect(this.report.getSummary()); + collect(this.report.getNoData()); + return getExpressions(); + } + + protected void collectTemplates() { + JRReportTemplate[] templates = this.report.getTemplates(); + if (templates != null) + for (int i = 0; i < templates.length; i++) { + JRReportTemplate template = templates[i]; + collect(template); + } + } + + protected void collect(JRReportTemplate template) { + addExpression(template.getSourceExpression()); + } + + private void collect(JRStyle style) { + if (style != null && this.collectedStyles.add(style)) { + JRConditionalStyle[] conditionalStyles = style.getConditionalStyles(); + if (conditionalStyles != null && conditionalStyles.length > 0) + for (int i = 0; i < conditionalStyles.length; i++) + addExpression(conditionalStyles[i].getConditionExpression()); + collect(style.getStyle()); + } + } + + private void collect(JRParameter[] parameters) { + if (parameters != null && parameters.length > 0) + for (int i = 0; i < parameters.length; i++) + addExpression(parameters[i].getDefaultValueExpression()); + } + + private void collect(JRVariable[] variables) { + if (variables != null && variables.length > 0) + for (int i = 0; i < variables.length; i++) { + JRVariable variable = variables[i]; + addExpression(variable.getExpression()); + addExpression(variable.getInitialValueExpression()); + } + } + + private void collect(JRGroup[] groups) { + if (groups != null && groups.length > 0) + for (int i = 0; i < groups.length; i++) { + JRGroup group = groups[i]; + addExpression(group.getExpression()); + collect(group.getGroupHeader()); + collect(group.getGroupFooter()); + } + } + + private void collect(JRBand band) { + if (band != null) { + addExpression(band.getPrintWhenExpression()); + JRElement[] elements = band.getElements(); + if (elements != null && elements.length > 0) + for (int i = 0; i < elements.length; i++) + elements[i].collectExpressions(this); + } + } + + private void collectElement(JRElement element) { + collect(element.getStyle()); + addExpression(element.getPrintWhenExpression()); + collectPropertyExpressions(element.getPropertyExpressions()); + } + + protected void collectPropertyExpressions(JRPropertyExpression[] propertyExpressions) { + if (propertyExpressions != null && propertyExpressions.length > 0) + for (int i = 0; i < propertyExpressions.length; i++) + collectPropertyExpression(propertyExpressions[i]); + } + + protected void collectPropertyExpression(JRPropertyExpression propertyExpression) { + addExpression(propertyExpression.getValueExpression()); + } + + private void collectAnchor(JRAnchor anchor) { + addExpression(anchor.getAnchorNameExpression()); + } + + private void collectHyperlink(JRHyperlink hyperlink) { + if (hyperlink != null) { + addExpression(hyperlink.getHyperlinkReferenceExpression()); + addExpression(hyperlink.getHyperlinkAnchorExpression()); + addExpression(hyperlink.getHyperlinkPageExpression()); + addExpression(hyperlink.getHyperlinkTooltipExpression()); + JRHyperlinkParameter[] hyperlinkParameters = hyperlink.getHyperlinkParameters(); + if (hyperlinkParameters != null) + for (int i = 0; i < hyperlinkParameters.length; i++) { + JRHyperlinkParameter parameter = hyperlinkParameters[i]; + collectHyperlinkParameter(parameter); + } + } + } + + protected void collectHyperlinkParameter(JRHyperlinkParameter parameter) { + if (parameter != null) + addExpression(parameter.getValueExpression()); + } + + public void collect(JRBreak breakElement) { + collectElement(breakElement); + } + + public void collect(JRLine line) { + collectElement(line); + } + + public void collect(JRRectangle rectangle) { + collectElement(rectangle); + } + + public void collect(JREllipse ellipse) { + collectElement(ellipse); + } + + public void collect(JRImage image) { + collectElement(image); + addExpression(image.getExpression()); + collectAnchor(image); + collectHyperlink(image); + } + + public void collect(JRStaticText staticText) { + collectElement(staticText); + } + + public void collect(JRTextField textField) { + collectElement(textField); + addExpression(textField.getExpression()); + collectAnchor(textField); + collectHyperlink(textField); + } + + public void collect(JRSubreport subreport) { + collectElement(subreport); + addExpression(subreport.getParametersMapExpression()); + JRSubreportParameter[] parameters = subreport.getParameters(); + if (parameters != null && parameters.length > 0) + for (int j = 0; j < parameters.length; j++) + addExpression(parameters[j].getExpression()); + addExpression(subreport.getConnectionExpression()); + addExpression(subreport.getDataSourceExpression()); + addExpression(subreport.getExpression()); + } + + public void collect(JRChart chart) { + collectElement(chart); + collectAnchor(chart); + collectHyperlink(chart); + addExpression(chart.getTitleExpression()); + addExpression(chart.getSubtitleExpression()); + chart.getDataset().collectExpressions(this); + chart.getPlot().collectExpressions(this); + } + + public void collect(JRPieDataset pieDataset) { + collect((JRElementDataset)pieDataset); + JRExpressionCollector collector = getCollector((JRElementDataset)pieDataset); + collector.addExpression(pieDataset.getKeyExpression()); + collector.addExpression(pieDataset.getValueExpression()); + collector.addExpression(pieDataset.getLabelExpression()); + collector.collectHyperlink(pieDataset.getSectionHyperlink()); + } + + public void collect(JRCategoryDataset categoryDataset) { + collect((JRElementDataset)categoryDataset); + JRCategorySeries[] categorySeries = categoryDataset.getSeries(); + if (categorySeries != null && categorySeries.length > 0) { + JRExpressionCollector collector = getCollector((JRElementDataset)categoryDataset); + for (int j = 0; j < categorySeries.length; j++) + collector.collect(categorySeries[j]); + } + } + + public void collect(JRXyDataset xyDataset) { + collect((JRElementDataset)xyDataset); + JRXySeries[] xySeries = xyDataset.getSeries(); + if (xySeries != null && xySeries.length > 0) { + JRExpressionCollector collector = getCollector((JRElementDataset)xyDataset); + for (int j = 0; j < xySeries.length; j++) + collector.collect(xySeries[j]); + } + } + + public void collect(JRTimeSeriesDataset timeSeriesDataset) { + collect((JRElementDataset)timeSeriesDataset); + JRTimeSeries[] timeSeries = timeSeriesDataset.getSeries(); + if (timeSeries != null && timeSeries.length > 0) { + JRExpressionCollector collector = getCollector((JRElementDataset)timeSeriesDataset); + for (int i = 0; i < timeSeries.length; i++) + collector.collect(timeSeries[i]); + } + } + + public void collect(JRTimePeriodDataset timePeriodDataset) { + collect((JRElementDataset)timePeriodDataset); + JRTimePeriodSeries[] timePeriodSeries = timePeriodDataset.getSeries(); + if (timePeriodSeries != null && timePeriodSeries.length > 0) { + JRExpressionCollector collector = getCollector((JRElementDataset)timePeriodDataset); + for (int i = 0; i < timePeriodSeries.length; i++) + collector.collect(timePeriodSeries[i]); + } + } + + public void collect(JRValueDataset valueDataset) { + collect((JRElementDataset)valueDataset); + JRExpressionCollector collector = getCollector((JRElementDataset)valueDataset); + collector.addExpression(valueDataset.getValueExpression()); + } + + private void collect(JRXySeries xySeries) { + addExpression(xySeries.getSeriesExpression()); + addExpression(xySeries.getXValueExpression()); + addExpression(xySeries.getYValueExpression()); + addExpression(xySeries.getLabelExpression()); + collectHyperlink(xySeries.getItemHyperlink()); + } + + private void collect(JRCategorySeries categorySeries) { + addExpression(categorySeries.getSeriesExpression()); + addExpression(categorySeries.getCategoryExpression()); + addExpression(categorySeries.getValueExpression()); + addExpression(categorySeries.getLabelExpression()); + collectHyperlink(categorySeries.getItemHyperlink()); + } + + public void collect(JRBarPlot barPlot) { + addExpression(barPlot.getCategoryAxisLabelExpression()); + addExpression(barPlot.getValueAxisLabelExpression()); + } + + public void collect(JRBar3DPlot barPlot) { + addExpression(barPlot.getCategoryAxisLabelExpression()); + addExpression(barPlot.getValueAxisLabelExpression()); + } + + public void collect(JRLinePlot linePlot) { + addExpression(linePlot.getCategoryAxisLabelExpression()); + addExpression(linePlot.getValueAxisLabelExpression()); + } + + public void collect(JRTimeSeriesPlot timeSeriesPlot) { + addExpression(timeSeriesPlot.getTimeAxisLabelExpression()); + addExpression(timeSeriesPlot.getValueAxisLabelExpression()); + } + + public void collect(JRScatterPlot scatterPlot) { + addExpression(scatterPlot.getXAxisLabelExpression()); + addExpression(scatterPlot.getYAxisLabelExpression()); + } + + public void collect(JRAreaPlot areaPlot) { + addExpression(areaPlot.getCategoryAxisLabelExpression()); + addExpression(areaPlot.getValueAxisLabelExpression()); + } + + private void collect(JRTimeSeries timeSeries) { + addExpression(timeSeries.getSeriesExpression()); + addExpression(timeSeries.getTimePeriodExpression()); + addExpression(timeSeries.getValueExpression()); + addExpression(timeSeries.getLabelExpression()); + collectHyperlink(timeSeries.getItemHyperlink()); + } + + private void collect(JRTimePeriodSeries timePeriodSeries) { + addExpression(timePeriodSeries.getSeriesExpression()); + addExpression(timePeriodSeries.getStartDateExpression()); + addExpression(timePeriodSeries.getEndDateExpression()); + addExpression(timePeriodSeries.getValueExpression()); + addExpression(timePeriodSeries.getLabelExpression()); + collectHyperlink(timePeriodSeries.getItemHyperlink()); + } + + public void collect(JRXyzDataset xyzDataset) { + collect((JRElementDataset)xyzDataset); + JRXyzSeries[] xyzSeries = xyzDataset.getSeries(); + if (xyzSeries != null && xyzSeries.length > 0) { + JRExpressionCollector collector = getCollector((JRElementDataset)xyzDataset); + for (int j = 0; j < xyzSeries.length; j++) + collector.collect(xyzSeries[j]); + } + } + + private void collect(JRXyzSeries xyzSeries) { + addExpression(xyzSeries.getSeriesExpression()); + addExpression(xyzSeries.getXValueExpression()); + addExpression(xyzSeries.getYValueExpression()); + addExpression(xyzSeries.getZValueExpression()); + collectHyperlink(xyzSeries.getItemHyperlink()); + } + + public void collect(JRBubblePlot bubblePlot) { + addExpression(bubblePlot.getXAxisLabelExpression()); + addExpression(bubblePlot.getYAxisLabelExpression()); + } + + public void collect(JRHighLowPlot highLowPlot) { + addExpression(highLowPlot.getTimeAxisLabelExpression()); + addExpression(highLowPlot.getValueAxisLabelExpression()); + } + + public void collect(JRDataRange dataRange) { + if (dataRange != null) { + addExpression(dataRange.getLowExpression()); + addExpression(dataRange.getHighExpression()); + } + } + + public void collect(JRMeterPlot meterPlot) { + List intervals = meterPlot.getIntervals(); + if (intervals != null) { + Iterator iter = intervals.iterator(); + while (iter.hasNext()) { + JRMeterInterval interval = iter.next(); + collect(interval.getDataRange()); + } + } + collect(meterPlot.getDataRange()); + } + + public void collect(JRThermometerPlot thermometerPlot) { + collect(thermometerPlot.getDataRange()); + collect(thermometerPlot.getLowRange()); + collect(thermometerPlot.getMediumRange()); + collect(thermometerPlot.getHighRange()); + } + + public void collect(JRHighLowDataset highLowDataset) { + collect((JRElementDataset)highLowDataset); + JRExpressionCollector collector = getCollector((JRElementDataset)highLowDataset); + collector.addExpression(highLowDataset.getSeriesExpression()); + collector.addExpression(highLowDataset.getDateExpression()); + collector.addExpression(highLowDataset.getHighExpression()); + collector.addExpression(highLowDataset.getLowExpression()); + collector.addExpression(highLowDataset.getOpenExpression()); + collector.addExpression(highLowDataset.getCloseExpression()); + collector.addExpression(highLowDataset.getVolumeExpression()); + collector.collectHyperlink(highLowDataset.getItemHyperlink()); + } + + public void collect(JRCandlestickPlot candlestickPlot) { + addExpression(candlestickPlot.getTimeAxisLabelExpression()); + addExpression(candlestickPlot.getValueAxisLabelExpression()); + } + + public void collect(JRCrosstab crosstab) { + collectElement((JRElement)crosstab); + createCrosstabId(crosstab); + JRCrosstabDataset dataset = crosstab.getDataset(); + collect((JRElementDataset)dataset); + JRExpressionCollector datasetCollector = getCollector((JRElementDataset)dataset); + JRExpressionCollector crosstabCollector = getCollector(crosstab); + crosstabCollector.collect(this.report.getDefaultStyle()); + addExpression(crosstab.getParametersMapExpression()); + JRCrosstabParameter[] parameters = crosstab.getParameters(); + if (parameters != null) + for (int i = 0; i < parameters.length; i++) + addExpression(parameters[i].getExpression()); + crosstabCollector.collect(crosstab.getHeaderCell()); + JRCrosstabRowGroup[] rowGroups = crosstab.getRowGroups(); + if (rowGroups != null) + for (int i = 0; i < rowGroups.length; i++) { + JRCrosstabRowGroup rowGroup = rowGroups[i]; + JRCrosstabBucket bucket = rowGroup.getBucket(); + datasetCollector.addExpression(bucket.getExpression()); + addExpression(bucket.getComparatorExpression()); + crosstabCollector.collect(rowGroup.getHeader()); + crosstabCollector.collect(rowGroup.getTotalHeader()); + } + JRCrosstabColumnGroup[] colGroups = crosstab.getColumnGroups(); + if (colGroups != null) + for (int i = 0; i < colGroups.length; i++) { + JRCrosstabColumnGroup columnGroup = colGroups[i]; + datasetCollector.addExpression(columnGroup.getBucket().getExpression()); + addExpression(columnGroup.getBucket().getComparatorExpression()); + crosstabCollector.collect(columnGroup.getHeader()); + crosstabCollector.collect(columnGroup.getTotalHeader()); + } + JRCrosstabMeasure[] measures = crosstab.getMeasures(); + if (measures != null) + for (int i = 0; i < measures.length; i++) + datasetCollector.addExpression(measures[i].getValueExpression()); + crosstabCollector.collect(crosstab.getWhenNoDataCell()); + collectCrosstabCells(crosstab, crosstabCollector); + } + + private void createCrosstabId(JRCrosstab crosstab) { + this.crosstabIds.put(crosstab, new Integer(this.crosstabIds.size())); + } + + private void collectCrosstabCells(JRCrosstab crosstab, JRExpressionCollector crosstabCollector) { + if (crosstab instanceof JRDesignCrosstab) { + List cellsList = ((JRDesignCrosstab)crosstab).getCellsList(); + if (cellsList != null) + for (Iterator iter = cellsList.iterator(); iter.hasNext(); ) { + JRCrosstabCell cell = iter.next(); + crosstabCollector.collect(cell.getContents()); + } + } else { + JRCrosstabCell[][] cells = crosstab.getCells(); + if (cells != null) + for (int i = 0; i < cells.length; i++) { + for (int j = 0; j < (cells[i]).length; j++) { + if (cells[i][j] != null) + crosstabCollector.collect(cells[i][j].getContents()); + } + } + } + } + + public Collection collect(JRDataset dataset) { + JRExpressionCollector collector = getCollector(dataset); + collector.collect(dataset.getParameters()); + collector.collect(dataset.getVariables()); + collector.collect(dataset.getGroups()); + collector.addExpression(dataset.getFilterExpression()); + return getExpressions(dataset); + } + + protected void collect(JRElementDataset dataset) { + collect(dataset.getDatasetRun()); + JRExpression incrementWhenExpression = dataset.getIncrementWhenExpression(); + if (incrementWhenExpression != null) { + JRExpressionCollector datasetCollector = getCollector(dataset); + datasetCollector.addExpression(incrementWhenExpression); + } + } + + private void collect(JRDatasetRun datasetRun) { + if (datasetRun != null) { + addExpression(datasetRun.getParametersMapExpression()); + addExpression(datasetRun.getConnectionExpression()); + addExpression(datasetRun.getDataSourceExpression()); + JRDatasetParameter[] parameters = datasetRun.getParameters(); + if (parameters != null && parameters.length > 0) + for (int i = 0; i < parameters.length; i++) + addExpression(parameters[i].getExpression()); + } + } + + protected void collect(JRCellContents cell) { + if (cell != null) { + collect(cell.getStyle()); + JRElement[] elements = cell.getElements(); + if (elements != null && elements.length > 0) + for (int i = 0; i < elements.length; i++) + elements[i].collectExpressions(this); + } + } + + public void collect(JRFrame frame) { + collectElement(frame); + JRElement[] elements = frame.getElements(); + if (elements != null) + for (int i = 0; i < elements.length; i++) + elements[i].collectExpressions(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRField.java b/hrmsEjb/net/sf/jasperreports/engine/JRField.java new file mode 100644 index 0000000..f450784 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRField.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.engine; + +public interface JRField extends JRPropertiesHolder, JRCloneable { + String getName(); + + String getDescription(); + + void setDescription(String paramString); + + Class getValueClass(); + + String getValueClassName(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRFont.java b/hrmsEjb/net/sf/jasperreports/engine/JRFont.java new file mode 100644 index 0000000..5c63fd2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRFont.java @@ -0,0 +1,91 @@ +package net.sf.jasperreports.engine; + +public interface JRFont extends JRStyleContainer { + public static final String DEFAULT_FONT_NAME = "net.sf.jasperreports.default.font.name"; + + public static final String DEFAULT_FONT_SIZE = "net.sf.jasperreports.default.font.size"; + + public static final String DEFAULT_PDF_FONT_NAME = "net.sf.jasperreports.default.pdf.font.name"; + + public static final String DEFAULT_PDF_ENCODING = "net.sf.jasperreports.default.pdf.encoding"; + + public static final String DEFAULT_PDF_EMBEDDED = "net.sf.jasperreports.default.pdf.embedded"; + + JRReportFont getReportFont(); + + void setReportFont(JRReportFont paramJRReportFont); + + String getFontName(); + + String getOwnFontName(); + + void setFontName(String paramString); + + boolean isBold(); + + Boolean isOwnBold(); + + void setBold(boolean paramBoolean); + + void setBold(Boolean paramBoolean); + + boolean isItalic(); + + Boolean isOwnItalic(); + + void setItalic(boolean paramBoolean); + + void setItalic(Boolean paramBoolean); + + boolean isUnderline(); + + Boolean isOwnUnderline(); + + void setUnderline(boolean paramBoolean); + + void setUnderline(Boolean paramBoolean); + + boolean isStrikeThrough(); + + Boolean isOwnStrikeThrough(); + + void setStrikeThrough(boolean paramBoolean); + + void setStrikeThrough(Boolean paramBoolean); + + int getSize(); + + Integer getOwnSize(); + + void setSize(int paramInt); + + void setSize(Integer paramInteger); + + int getFontSize(); + + Integer getOwnFontSize(); + + void setFontSize(int paramInt); + + void setFontSize(Integer paramInteger); + + String getPdfFontName(); + + String getOwnPdfFontName(); + + void setPdfFontName(String paramString); + + String getPdfEncoding(); + + String getOwnPdfEncoding(); + + void setPdfEncoding(String paramString); + + boolean isPdfEmbedded(); + + Boolean isOwnPdfEmbedded(); + + void setPdfEmbedded(boolean paramBoolean); + + void setPdfEmbedded(Boolean paramBoolean); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRFrame.java b/hrmsEjb/net/sf/jasperreports/engine/JRFrame.java new file mode 100644 index 0000000..91ce3d9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRFrame.java @@ -0,0 +1,3 @@ +package net.sf.jasperreports.engine; + +public interface JRFrame extends JRElement, JRElementGroup, JRBox, JRBoxContainer {} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/JRGraphicElement.java new file mode 100644 index 0000000..33b8682 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRGraphicElement.java @@ -0,0 +1,29 @@ +package net.sf.jasperreports.engine; + +public interface JRGraphicElement extends JRElement, JRCommonGraphicElement { + public static final byte PEN_NONE = 0; + + public static final byte PEN_1_POINT = 1; + + public static final byte PEN_2_POINT = 2; + + public static final byte PEN_4_POINT = 3; + + public static final byte PEN_DOTTED = 4; + + public static final byte PEN_THIN = 5; + + public static final byte FILL_SOLID = 1; + + byte getPen(); + + Byte getOwnPen(); + + void setPen(byte paramByte); + + void setPen(Byte paramByte); + + void setFill(byte paramByte); + + void setFill(Byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRGroup.java b/hrmsEjb/net/sf/jasperreports/engine/JRGroup.java new file mode 100644 index 0000000..d1877b5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRGroup.java @@ -0,0 +1,33 @@ +package net.sf.jasperreports.engine; + +public interface JRGroup extends JRCloneable { + String getName(); + + boolean isStartNewColumn(); + + void setStartNewColumn(boolean paramBoolean); + + boolean isStartNewPage(); + + void setStartNewPage(boolean paramBoolean); + + boolean isResetPageNumber(); + + void setResetPageNumber(boolean paramBoolean); + + boolean isReprintHeaderOnEachPage(); + + void setReprintHeaderOnEachPage(boolean paramBoolean); + + int getMinHeightToStartNewPage(); + + void setMinHeightToStartNewPage(int paramInt); + + JRExpression getExpression(); + + JRBand getGroupHeader(); + + JRBand getGroupFooter(); + + JRVariable getCountVariable(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRHyperlink.java b/hrmsEjb/net/sf/jasperreports/engine/JRHyperlink.java new file mode 100644 index 0000000..abc0cdc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRHyperlink.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.engine; + +public interface JRHyperlink extends JRCloneable { + public static final byte HYPERLINK_TYPE_NONE = 1; + + public static final byte HYPERLINK_TYPE_REFERENCE = 2; + + public static final byte HYPERLINK_TYPE_LOCAL_ANCHOR = 3; + + public static final byte HYPERLINK_TYPE_LOCAL_PAGE = 4; + + public static final byte HYPERLINK_TYPE_REMOTE_ANCHOR = 5; + + public static final byte HYPERLINK_TYPE_REMOTE_PAGE = 6; + + public static final byte HYPERLINK_TYPE_NULL = 0; + + public static final byte HYPERLINK_TYPE_CUSTOM = 7; + + public static final byte HYPERLINK_TARGET_SELF = 1; + + public static final byte HYPERLINK_TARGET_BLANK = 2; + + public static final byte HYPERLINK_TARGET_PARENT = 3; + + public static final byte HYPERLINK_TARGET_TOP = 4; + + byte getHyperlinkType(); + + byte getHyperlinkTarget(); + + JRExpression getHyperlinkReferenceExpression(); + + JRExpression getHyperlinkAnchorExpression(); + + JRExpression getHyperlinkPageExpression(); + + String getLinkType(); + + JRHyperlinkParameter[] getHyperlinkParameters(); + + JRExpression getHyperlinkTooltipExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkHelper.java b/hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkHelper.java new file mode 100644 index 0000000..84d98c3 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkHelper.java @@ -0,0 +1,82 @@ +package net.sf.jasperreports.engine; + +import java.util.HashMap; +import java.util.Map; + +public class JRHyperlinkHelper { + public static final String HYPERLINK_TYPE_NONE = "None"; + + public static final String HYPERLINK_TYPE_REFERENCE = "Reference"; + + public static final String HYPERLINK_TYPE_LOCAL_ANCHOR = "LocalAnchor"; + + public static final String HYPERLINK_TYPE_LOCAL_PAGE = "LocalPage"; + + public static final String HYPERLINK_TYPE_REMOTE_ANCHOR = "RemoteAnchor"; + + public static final String HYPERLINK_TYPE_REMOTE_PAGE = "RemotePage"; + + private static final Map builtinTypes = createBuiltinTypes(); + + private static Map createBuiltinTypes() { + Map types = new HashMap(); + types.put("None", new Byte((byte)1)); + types.put("Reference", new Byte((byte)2)); + types.put("LocalAnchor", new Byte((byte)3)); + types.put("LocalPage", new Byte((byte)4)); + types.put("RemoteAnchor", new Byte((byte)5)); + types.put("RemotePage", new Byte((byte)6)); + return types; + } + + public static byte getHyperlinkType(JRHyperlink hyperlink) { + return getHyperlinkType(hyperlink.getLinkType()); + } + + public static byte getHyperlinkType(String linkType) { + byte type; + if (linkType == null) { + type = 1; + } else { + Byte builtinType = (Byte)builtinTypes.get(linkType); + if (builtinType == null) { + type = 7; + } else { + type = builtinType.byteValue(); + } + } + return type; + } + + public static String getLinkType(byte hyperlinkType) { + String type; + switch (hyperlinkType) { + case 0: + case 1: + type = null; + return type; + case 2: + type = "Reference"; + return type; + case 3: + type = "LocalAnchor"; + return type; + case 4: + type = "LocalPage"; + return type; + case 5: + type = "RemoteAnchor"; + return type; + case 6: + type = "RemotePage"; + return type; + case 7: + throw new JRRuntimeException("Custom hyperlink types cannot be specified using the byte constant"); + } + throw new JRRuntimeException("Unknown hyperlink type " + hyperlinkType); + } + + public static boolean isEmpty(JRHyperlink hyperlink) { + return (hyperlink == null || (hyperlink.getHyperlinkType() == 1 && hyperlink.getHyperlinkTooltipExpression() == null)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkParameter.java b/hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkParameter.java new file mode 100644 index 0000000..6d37685 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRHyperlinkParameter.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRHyperlinkParameter extends JRCloneable { + String getName(); + + JRExpression getValueExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRImage.java b/hrmsEjb/net/sf/jasperreports/engine/JRImage.java new file mode 100644 index 0000000..bdc3e1e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRImage.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.engine; + +public interface JRImage extends JRGraphicElement, JRAnchor, JRHyperlink, JRAlignment, JRBox, JRCommonImage { + public static final byte SCALE_IMAGE_CLIP = 1; + + public static final byte SCALE_IMAGE_FILL_FRAME = 2; + + public static final byte SCALE_IMAGE_RETAIN_SHAPE = 3; + + public static final byte ON_ERROR_TYPE_ERROR = 1; + + public static final byte ON_ERROR_TYPE_BLANK = 2; + + public static final byte ON_ERROR_TYPE_ICON = 3; + + void setScaleImage(byte paramByte); + + void setScaleImage(Byte paramByte); + + boolean isUsingCache(); + + Boolean isOwnUsingCache(); + + void setUsingCache(boolean paramBoolean); + + void setUsingCache(Boolean paramBoolean); + + boolean isLazy(); + + void setLazy(boolean paramBoolean); + + byte getOnErrorType(); + + void setOnErrorType(byte paramByte); + + byte getEvaluationTime(); + + JRGroup getEvaluationGroup(); + + JRExpression getExpression(); + + JRBox getBox(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRImageRenderer.java b/hrmsEjb/net/sf/jasperreports/engine/JRImageRenderer.java new file mode 100644 index 0000000..2aa0f4a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRImageRenderer.java @@ -0,0 +1,189 @@ +package net.sf.jasperreports.engine; + +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.geom.Dimension2D; +import java.awt.geom.Rectangle2D; +import java.io.File; +import java.io.InputStream; +import java.lang.ref.SoftReference; +import java.net.URL; +import java.net.URLStreamHandlerFactory; +import net.sf.jasperreports.engine.util.FileResolver; +import net.sf.jasperreports.engine.util.JRImageLoader; +import net.sf.jasperreports.engine.util.JRLoader; +import net.sf.jasperreports.engine.util.JRResourcesUtil; +import net.sf.jasperreports.engine.util.JRTypeSniffer; + +public class JRImageRenderer extends JRAbstractRenderer { + private static final long serialVersionUID = 10200L; + + private byte[] imageData = null; + + private String imageLocation = null; + + private byte imageType = 0; + + private transient SoftReference awtImageRef = null; + + protected JRImageRenderer(byte[] imageData) { + this.imageData = imageData; + if (imageData != null) + this.imageType = JRTypeSniffer.getImageType(imageData); + } + + protected JRImageRenderer(String imageLocation) { + this.imageLocation = imageLocation; + } + + public static ClassLoader getClassLoader() { + return JRResourcesUtil.getThreadClassLoader(); + } + + public static void setClassLoader(ClassLoader classLoader) { + JRResourcesUtil.setThreadClassLoader(classLoader); + } + + public static JRImageRenderer getInstance(byte[] imageData) { + return new JRImageRenderer(imageData); + } + + public static JRRenderable getInstance(String imageLocation) throws JRException { + return getInstance(imageLocation, (byte)1, true); + } + + public static JRRenderable getInstance(String imageLocation, byte onErrorType) throws JRException { + return getInstance(imageLocation, onErrorType, true); + } + + public static JRRenderable getInstance(String imageLocation, byte onErrorType, boolean isLazy) throws JRException { + return getInstance(imageLocation, onErrorType, isLazy, null, null, null); + } + + public static JRRenderable getInstance(String imageLocation, byte onErrorType, boolean isLazy, ClassLoader classLoader, URLStreamHandlerFactory urlHandlerFactory, FileResolver fileResolver) throws JRException { + if (imageLocation == null) + return null; + if (isLazy) + return new JRImageRenderer(imageLocation); + try { + byte[] data = JRLoader.loadBytesFromLocation(imageLocation, classLoader, urlHandlerFactory, fileResolver); + return new JRImageRenderer(data); + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + public static JRRenderable getInstance(Image img, byte onErrorType) throws JRException { + return getInstance(img, (byte)2, onErrorType); + } + + public static JRRenderable getInstance(Image image, byte imageType, byte onErrorType) throws JRException { + try { + return new JRImageRenderer(JRImageLoader.loadImageDataFromAWTImage(image, imageType)); + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + public static JRRenderable getInstance(InputStream is, byte onErrorType) throws JRException { + try { + return new JRImageRenderer(JRLoader.loadBytes(is)); + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + public static JRRenderable getInstance(URL url, byte onErrorType) throws JRException { + try { + return new JRImageRenderer(JRLoader.loadBytes(url)); + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + public static JRRenderable getInstance(File file, byte onErrorType) throws JRException { + try { + return new JRImageRenderer(JRLoader.loadBytes(file)); + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + public static JRRenderable getOnErrorRendererForDimension(JRRenderable renderer, byte onErrorType) throws JRException { + try { + renderer.getDimension(); + return renderer; + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + public static JRRenderable getOnErrorRendererForImageData(JRRenderable renderer, byte onErrorType) throws JRException { + try { + renderer.getImageData(); + return renderer; + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + public static JRImageRenderer getOnErrorRendererForImage(JRImageRenderer renderer, byte onErrorType) throws JRException { + try { + renderer.getImage(); + return renderer; + } catch (JRException e) { + return getOnErrorRenderer(onErrorType, e); + } + } + + private static JRImageRenderer getOnErrorRenderer(byte onErrorType, JRException e) throws JRException { + JRImageRenderer renderer = null; + switch (onErrorType) { + case 3: + renderer = new JRImageRenderer("net/sf/jasperreports/engine/images/noimage.GIF"); + case 2: + return renderer; + } + throw e; + } + + public Image getImage() throws JRException { + if (this.awtImageRef == null || this.awtImageRef.get() == null) { + Image awtImage = JRImageLoader.loadImage(getImageData()); + this.awtImageRef = new SoftReference(awtImage); + } + return this.awtImageRef.get(); + } + + public String getImageLocation() { + return this.imageLocation; + } + + public byte getType() { + return 0; + } + + public byte getImageType() { + return this.imageType; + } + + public Dimension2D getDimension() throws JRException { + Image img = getImage(); + return new Dimension(img.getWidth(null), img.getHeight(null)); + } + + public byte[] getImageData() throws JRException { + if (this.imageData == null) { + this.imageData = JRLoader.loadBytesFromLocation(this.imageLocation); + if (this.imageData != null) + this.imageType = JRTypeSniffer.getImageType(this.imageData); + } + return this.imageData; + } + + public void render(Graphics2D grx, Rectangle2D rectanle) throws JRException { + Image img = getImage(); + grx.drawImage(img, (int)rectanle.getX(), (int)rectanle.getY(), (int)rectanle.getWidth(), (int)rectanle.getHeight(), null); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRLine.java b/hrmsEjb/net/sf/jasperreports/engine/JRLine.java new file mode 100644 index 0000000..229df76 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRLine.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine; + +public interface JRLine extends JRGraphicElement { + public static final byte DIRECTION_TOP_DOWN = 1; + + public static final byte DIRECTION_BOTTOM_UP = 2; + + byte getDirection(); + + void setDirection(byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRLineBox.java b/hrmsEjb/net/sf/jasperreports/engine/JRLineBox.java new file mode 100644 index 0000000..799c670 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRLineBox.java @@ -0,0 +1,69 @@ +package net.sf.jasperreports.engine; + +import net.sf.jasperreports.engine.base.JRBoxPen; + +public interface JRLineBox extends JRPenContainer { + JRBoxContainer getBoxContainer(); + + JRLineBox clone(JRBoxContainer paramJRBoxContainer); + + JRBoxPen getPen(); + + void copyPen(JRBoxPen paramJRBoxPen); + + JRBoxPen getTopPen(); + + void copyTopPen(JRBoxPen paramJRBoxPen); + + JRBoxPen getLeftPen(); + + void copyLeftPen(JRBoxPen paramJRBoxPen); + + JRBoxPen getBottomPen(); + + void copyBottomPen(JRBoxPen paramJRBoxPen); + + JRBoxPen getRightPen(); + + void copyRightPen(JRBoxPen paramJRBoxPen); + + Integer getPadding(); + + Integer getOwnPadding(); + + void setPadding(int paramInt); + + void setPadding(Integer paramInteger); + + Integer getTopPadding(); + + Integer getOwnTopPadding(); + + void setTopPadding(int paramInt); + + void setTopPadding(Integer paramInteger); + + Integer getLeftPadding(); + + Integer getOwnLeftPadding(); + + void setLeftPadding(int paramInt); + + void setLeftPadding(Integer paramInteger); + + Integer getBottomPadding(); + + Integer getOwnBottomPadding(); + + void setBottomPadding(int paramInt); + + void setBottomPadding(Integer paramInteger); + + Integer getRightPadding(); + + Integer getOwnRightPadding(); + + void setRightPadding(int paramInt); + + void setRightPadding(Integer paramInteger); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JROrigin.java b/hrmsEjb/net/sf/jasperreports/engine/JROrigin.java new file mode 100644 index 0000000..34f3432 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JROrigin.java @@ -0,0 +1,94 @@ +package net.sf.jasperreports.engine; + +import java.io.Serializable; + +public class JROrigin implements JRCloneable, Serializable { + private static final long serialVersionUID = 10200L; + + public static final byte UNKNOWN = 0; + + public static final byte BACKGROUND = 1; + + public static final byte TITLE = 2; + + public static final byte PAGE_HEADER = 3; + + public static final byte COLUMN_HEADER = 4; + + public static final byte GROUP_HEADER = 5; + + public static final byte DETAIL = 6; + + public static final byte GROUP_FOOTER = 7; + + public static final byte COLUMN_FOOTER = 8; + + public static final byte PAGE_FOOTER = 9; + + public static final byte LAST_PAGE_FOOTER = 10; + + public static final byte SUMMARY = 11; + + public static final byte NO_DATA = 12; + + private byte bandType = 0; + + private String groupName = null; + + private String reportName = null; + + private int hashCode = 0; + + public JROrigin(byte bandType) { + this(null, null, bandType); + } + + public JROrigin(String reportName, byte bandType) { + this(reportName, null, bandType); + } + + public JROrigin(String reportName, String groupName, byte bandType) { + this.reportName = reportName; + this.groupName = groupName; + this.bandType = bandType; + int hash = 17; + hash = 31 * hash + ((reportName == null) ? 0 : reportName.hashCode()); + hash = 31 * hash + ((groupName == null) ? 0 : groupName.hashCode()); + hash = 31 * hash + bandType; + this.hashCode = hash; + } + + public String getReportName() { + return this.reportName; + } + + public String getGroupName() { + return this.groupName; + } + + public byte getBandType() { + return this.bandType; + } + + public boolean equals(Object obj) { + if (obj instanceof JROrigin) { + JROrigin origin = (JROrigin)obj; + String groupName2 = origin.getGroupName(); + String reportName2 = origin.getReportName(); + return (origin.getBandType() == this.bandType && ((this.groupName == null && groupName2 == null) || this.groupName.equals(groupName2)) && ((this.reportName == null && reportName2 == null) || this.reportName.equals(reportName2))); + } + return false; + } + + public int hashCode() { + return this.hashCode; + } + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRParameter.java b/hrmsEjb/net/sf/jasperreports/engine/JRParameter.java new file mode 100644 index 0000000..81a0318 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRParameter.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine; + +public interface JRParameter extends JRPropertiesHolder, JRCloneable { + public static final String REPORT_PARAMETERS_MAP = "REPORT_PARAMETERS_MAP"; + + public static final String REPORT_CONNECTION = "REPORT_CONNECTION"; + + public static final String REPORT_MAX_COUNT = "REPORT_MAX_COUNT"; + + public static final String REPORT_DATA_SOURCE = "REPORT_DATA_SOURCE"; + + public static final String REPORT_SCRIPTLET = "REPORT_SCRIPTLET"; + + public static final String REPORT_LOCALE = "REPORT_LOCALE"; + + public static final String REPORT_RESOURCE_BUNDLE = "REPORT_RESOURCE_BUNDLE"; + + public static final String REPORT_TIME_ZONE = "REPORT_TIME_ZONE"; + + public static final String REPORT_VIRTUALIZER = "REPORT_VIRTUALIZER"; + + public static final String REPORT_CLASS_LOADER = "REPORT_CLASS_LOADER"; + + public static final String REPORT_URL_HANDLER_FACTORY = "REPORT_URL_HANDLER_FACTORY"; + + public static final String REPORT_FILE_RESOLVER = "REPORT_FILE_RESOLVER"; + + public static final String REPORT_FORMAT_FACTORY = "REPORT_FORMAT_FACTORY"; + + public static final String IS_IGNORE_PAGINATION = "IS_IGNORE_PAGINATION"; + + public static final String REPORT_TEMPLATES = "REPORT_TEMPLATES"; + + String getName(); + + String getDescription(); + + void setDescription(String paramString); + + Class getValueClass(); + + String getValueClassName(); + + boolean isSystemDefined(); + + boolean isForPrompting(); + + JRExpression getDefaultValueExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPen.java b/hrmsEjb/net/sf/jasperreports/engine/JRPen.java new file mode 100644 index 0000000..f0cd778 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPen.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRPen { + public static final byte LINE_STYLE_SOLID = 0; + + public static final byte LINE_STYLE_DASHED = 1; + + public static final byte LINE_STYLE_DOTTED = 2; + + public static final byte LINE_STYLE_DOUBLE = 3; + + public static final Float LINE_WIDTH_0 = new Float(0.0F); + + public static final Float LINE_WIDTH_1 = new Float(1.0F); + + JRStyleContainer getStyleContainer(); + + JRPen clone(JRPenContainer paramJRPenContainer); + + Float getLineWidth(); + + Float getOwnLineWidth(); + + void setLineWidth(float paramFloat); + + void setLineWidth(Float paramFloat); + + Byte getLineStyle(); + + Byte getOwnLineStyle(); + + void setLineStyle(byte paramByte); + + void setLineStyle(Byte paramByte); + + Color getLineColor(); + + Color getOwnLineColor(); + + void setLineColor(Color paramColor); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPenContainer.java b/hrmsEjb/net/sf/jasperreports/engine/JRPenContainer.java new file mode 100644 index 0000000..5da7802 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPenContainer.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRPenContainer extends JRStyleContainer { + Float getDefaultLineWidth(); + + Color getDefaultLineColor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchor.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchor.java new file mode 100644 index 0000000..d2d60af --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchor.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine; + +public interface JRPrintAnchor { + String getAnchorName(); + + void setAnchorName(String paramString); + + int getBookmarkLevel(); + + void setBookmarkLevel(int paramInt); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchorIndex.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchorIndex.java new file mode 100644 index 0000000..b82e646 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintAnchorIndex.java @@ -0,0 +1,38 @@ +package net.sf.jasperreports.engine; + +public class JRPrintAnchorIndex { + private int pageIndex = 0; + + private JRPrintElement element = null; + + private final int offsetX; + + private final int offsetY; + + public JRPrintAnchorIndex(int page, JRPrintElement elem) { + this(page, elem, 0, 0); + } + + public JRPrintAnchorIndex(int page, JRPrintElement elem, int offsetX, int offsetY) { + this.pageIndex = page; + this.element = elem; + this.offsetX = offsetX; + this.offsetY = offsetY; + } + + public int getPageIndex() { + return this.pageIndex; + } + + public JRPrintElement getElement() { + return this.element; + } + + public int getElementAbsoluteX() { + return this.element.getX() + this.offsetX; + } + + public int getElementAbsoluteY() { + return this.element.getY() + this.offsetY; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintElement.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintElement.java new file mode 100644 index 0000000..e251fdb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintElement.java @@ -0,0 +1,35 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRPrintElement extends JRCommonElement, JRPropertiesHolder { + JROrigin getOrigin(); + + void setStyle(JRStyle paramJRStyle); + + void setMode(byte paramByte); + + void setMode(Byte paramByte); + + int getX(); + + void setX(int paramInt); + + int getY(); + + void setY(int paramInt); + + int getWidth(); + + void setWidth(int paramInt); + + int getHeight(); + + void setHeight(int paramInt); + + void setForecolor(Color paramColor); + + void setBackcolor(Color paramColor); + + String getKey(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintElementContainer.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintElementContainer.java new file mode 100644 index 0000000..e3f8a90 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintElementContainer.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.engine; + +import java.util.List; + +public interface JRPrintElementContainer { + int getHeight(); + + void setHeight(int paramInt); + + List getElements(); + + void addElement(JRPrintElement paramJRPrintElement); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintEllipse.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintEllipse.java new file mode 100644 index 0000000..b995196 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintEllipse.java @@ -0,0 +1,3 @@ +package net.sf.jasperreports.engine; + +public interface JRPrintEllipse extends JRPrintGraphicElement {} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintFrame.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintFrame.java new file mode 100644 index 0000000..42a8aa4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintFrame.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +import java.util.List; + +public interface JRPrintFrame extends JRPrintElement, JRBox, JRBoxContainer { + List getElements(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintGraphicElement.java new file mode 100644 index 0000000..49a083f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintGraphicElement.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.engine; + +public interface JRPrintGraphicElement extends JRPrintElement, JRCommonGraphicElement { + byte getPen(); + + Byte getOwnPen(); + + void setPen(byte paramByte); + + void setPen(Byte paramByte); + + void setFill(byte paramByte); + + void setFill(Byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlink.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlink.java new file mode 100644 index 0000000..e81114a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlink.java @@ -0,0 +1,35 @@ +package net.sf.jasperreports.engine; + +public interface JRPrintHyperlink { + byte getHyperlinkType(); + + void setHyperlinkType(byte paramByte); + + byte getHyperlinkTarget(); + + void setHyperlinkTarget(byte paramByte); + + String getHyperlinkReference(); + + void setHyperlinkReference(String paramString); + + String getHyperlinkAnchor(); + + void setHyperlinkAnchor(String paramString); + + Integer getHyperlinkPage(); + + void setHyperlinkPage(Integer paramInteger); + + String getLinkType(); + + void setLinkType(String paramString); + + JRPrintHyperlinkParameters getHyperlinkParameters(); + + void setHyperlinkParameters(JRPrintHyperlinkParameters paramJRPrintHyperlinkParameters); + + String getHyperlinkTooltip(); + + void setHyperlinkTooltip(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameter.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameter.java new file mode 100644 index 0000000..5dba6be --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameter.java @@ -0,0 +1,47 @@ +package net.sf.jasperreports.engine; + +import java.io.Serializable; + +public class JRPrintHyperlinkParameter implements Serializable { + private static final long serialVersionUID = 10200L; + + public static final String DEFAULT_VALUE_CLASS = String.class.getName(); + + private String name; + + private String valueClass = DEFAULT_VALUE_CLASS; + + private Object value; + + public JRPrintHyperlinkParameter(String name, String valueClass, Object value) { + this.name = name; + this.valueClass = valueClass; + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValueClass() { + return this.valueClass; + } + + public Object getValue() { + return this.value; + } + + public void setName(String name) { + this.name = name; + } + + public void setValueClass(String valueClass) { + this.valueClass = valueClass; + } + + public void setValue(Object value) { + this.value = value; + } + + public JRPrintHyperlinkParameter() {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameters.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameters.java new file mode 100644 index 0000000..61bd5e8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintHyperlinkParameters.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +public class JRPrintHyperlinkParameters implements Serializable { + private static final long serialVersionUID = 10200L; + + private List parameters = new ArrayList(); + + public List getParameters() { + return this.parameters; + } + + public void addParameter(JRPrintHyperlinkParameter parameter) { + this.parameters.add(parameter); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintImage.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintImage.java new file mode 100644 index 0000000..97c0882 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintImage.java @@ -0,0 +1,27 @@ +package net.sf.jasperreports.engine; + +public interface JRPrintImage extends JRPrintGraphicElement, JRPrintAnchor, JRPrintHyperlink, JRAlignment, JRBox, JRCommonImage { + JRRenderable getRenderer(); + + void setRenderer(JRRenderable paramJRRenderable); + + void setScaleImage(byte paramByte); + + void setScaleImage(Byte paramByte); + + boolean isUsingCache(); + + void setUsingCache(boolean paramBoolean); + + boolean isLazy(); + + void setLazy(boolean paramBoolean); + + byte getOnErrorType(); + + void setOnErrorType(byte paramByte); + + JRBox getBox(); + + void setBox(JRBox paramJRBox); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintLine.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintLine.java new file mode 100644 index 0000000..e5ec904 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintLine.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRPrintLine extends JRPrintGraphicElement { + byte getDirection(); + + void setDirection(byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintPage.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintPage.java new file mode 100644 index 0000000..51881f4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintPage.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine; + +import java.util.List; + +public interface JRPrintPage { + List getElements(); + + void setElements(List paramList); + + void addElement(JRPrintElement paramJRPrintElement); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintRectangle.java new file mode 100644 index 0000000..317deb3 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintRectangle.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRPrintRectangle extends JRPrintGraphicElement, JRCommonRectangle { + void setRadius(int paramInt); + + void setRadius(Integer paramInteger); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPrintText.java b/hrmsEjb/net/sf/jasperreports/engine/JRPrintText.java new file mode 100644 index 0000000..b68bdc1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPrintText.java @@ -0,0 +1,87 @@ +package net.sf.jasperreports.engine; + +import net.sf.jasperreports.engine.util.JRStyledText; + +public interface JRPrintText extends JRPrintElement, JRAlignment, JRPrintAnchor, JRPrintHyperlink, JRBox, JRFont, JRCommonText { + public static final byte RUN_DIRECTION_LTR = 0; + + public static final byte RUN_DIRECTION_RTL = 1; + + String getText(); + + void setText(String paramString); + + Integer getTextTruncateIndex(); + + void setTextTruncateIndex(Integer paramInteger); + + String getTextTruncateSuffix(); + + void setTextTruncateSuffix(String paramString); + + String getFullText(); + + String getOriginalText(); + + JRStyledText getStyledText(JRStyledTextAttributeSelector paramJRStyledTextAttributeSelector); + + JRStyledText getFullStyledText(JRStyledTextAttributeSelector paramJRStyledTextAttributeSelector); + + float getLineSpacingFactor(); + + void setLineSpacingFactor(float paramFloat); + + float getLeadingOffset(); + + void setLeadingOffset(float paramFloat); + + byte getTextAlignment(); + + void setTextAlignment(byte paramByte); + + Byte getOwnRotation(); + + void setRotation(byte paramByte); + + void setRotation(Byte paramByte); + + byte getRunDirection(); + + void setRunDirection(byte paramByte); + + float getTextHeight(); + + void setTextHeight(float paramFloat); + + Byte getOwnLineSpacing(); + + void setLineSpacing(byte paramByte); + + void setLineSpacing(Byte paramByte); + + void setStyledText(boolean paramBoolean); + + void setStyledText(Boolean paramBoolean); + + String getOwnMarkup(); + + void setMarkup(String paramString); + + JRBox getBox(); + + void setBox(JRBox paramJRBox); + + JRFont getFont(); + + void setFont(JRFont paramJRFont); + + String getValueClassName(); + + String getPattern(); + + String getFormatFactoryClass(); + + String getLocaleCode(); + + String getTimeZoneId(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPropertiesHolder.java b/hrmsEjb/net/sf/jasperreports/engine/JRPropertiesHolder.java new file mode 100644 index 0000000..da3c796 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPropertiesHolder.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +public interface JRPropertiesHolder { + boolean hasProperties(); + + JRPropertiesMap getPropertiesMap(); + + JRPropertiesHolder getParentProperties(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPropertiesMap.java b/hrmsEjb/net/sf/jasperreports/engine/JRPropertiesMap.java new file mode 100644 index 0000000..49bbe53 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPropertiesMap.java @@ -0,0 +1,151 @@ +package net.sf.jasperreports.engine; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; + +public class JRPropertiesMap implements Serializable, Cloneable { + private static final long serialVersionUID = 10200L; + + private Map propertiesMap; + + private List propertiesList; + + private JRPropertiesMap base; + + public JRPropertiesMap() {} + + public JRPropertiesMap(JRPropertiesMap propertiesMap) { + this(); + this.base = propertiesMap.base; + String[] propertyNames = propertiesMap.getPropertyNames(); + if (propertyNames != null && propertyNames.length > 0) + for (int i = 0; i < propertyNames.length; i++) + setProperty(propertyNames[i], propertiesMap.getProperty(propertyNames[i])); + } + + protected synchronized void ensureInit() { + if (this.propertiesMap == null) + init(); + } + + private void init() { + this.propertiesMap = new HashMap(); + this.propertiesList = new ArrayList(); + } + + public String[] getPropertyNames() { + String[] names; + if (hasOwnProperties()) { + if (this.base == null) { + names = (String[])this.propertiesList.toArray((Object[])new String[this.propertiesList.size()]); + } else { + LinkedHashSet namesSet = new LinkedHashSet(); + collectPropertyNames(namesSet); + names = (String[])namesSet.toArray((Object[])new String[namesSet.size()]); + } + } else if (this.base != null) { + names = this.base.getPropertyNames(); + } else { + names = new String[0]; + } + return names; + } + + protected void collectPropertyNames(Collection names) { + if (this.base != null) + this.base.collectPropertyNames(names); + if (this.propertiesList != null) + names.addAll(this.propertiesList); + } + + public String getProperty(String propName) { + String val; + if (hasOwnProperty(propName)) { + val = getOwnProperty(propName); + } else if (this.base != null) { + val = this.base.getProperty(propName); + } else { + val = null; + } + return val; + } + + public boolean containsProperty(String propName) { + return (hasOwnProperty(propName) || (this.base != null && this.base.containsProperty(propName))); + } + + protected boolean hasOwnProperty(String propName) { + return (this.propertiesMap != null && this.propertiesMap.containsKey(propName)); + } + + protected String getOwnProperty(String propName) { + return (this.propertiesMap != null) ? (String)this.propertiesMap.get(propName) : null; + } + + public void setProperty(String propName, String value) { + ensureInit(); + if (!hasOwnProperty(propName)) + this.propertiesList.add(propName); + this.propertiesMap.put(propName, value); + } + + public void removeProperty(String propName) { + if (hasOwnProperty(propName)) { + this.propertiesList.remove(propName); + this.propertiesMap.remove(propName); + } + } + + public JRPropertiesMap cloneProperties() { + return new JRPropertiesMap(this); + } + + public Object clone() { + return cloneProperties(); + } + + public String toString() { + return (this.propertiesMap == null) ? "" : this.propertiesMap.toString(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.propertiesList == null && this.propertiesMap != null) { + this.propertiesList = new ArrayList(this.propertiesMap.keySet()); + this.propertiesMap = new HashMap(this.propertiesMap); + } + } + + public boolean hasProperties() { + return (hasOwnProperties() || (this.base != null && this.base.hasProperties())); + } + + public boolean hasOwnProperties() { + return (this.propertiesList != null && !this.propertiesList.isEmpty()); + } + + public static JRPropertiesMap getPropertiesClone(JRPropertiesHolder propertiesHolder) { + JRPropertiesMap clone; + if (propertiesHolder.hasProperties()) { + clone = propertiesHolder.getPropertiesMap().cloneProperties(); + } else { + clone = null; + } + return clone; + } + + public JRPropertiesMap getBaseProperties() { + return this.base; + } + + public void setBaseProperties(JRPropertiesMap base) { + this.base = base; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRPropertyExpression.java b/hrmsEjb/net/sf/jasperreports/engine/JRPropertyExpression.java new file mode 100644 index 0000000..f2c3317 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRPropertyExpression.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +public interface JRPropertyExpression { + String getName(); + + void setName(String paramString); + + JRExpression getValueExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRQuery.java b/hrmsEjb/net/sf/jasperreports/engine/JRQuery.java new file mode 100644 index 0000000..b3b0b44 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRQuery.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +public interface JRQuery extends JRCloneable { + JRQueryChunk[] getChunks(); + + String getText(); + + String getLanguage(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRQueryChunk.java b/hrmsEjb/net/sf/jasperreports/engine/JRQueryChunk.java new file mode 100644 index 0000000..56d9521 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRQueryChunk.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine; + +public interface JRQueryChunk extends JRCloneable { + public static final String PROPERTY_CHUNK_TOKEN_SEPARATOR = "net.sf.jasperreports.query.chunk.token.separators"; + + public static final byte TYPE_TEXT = 1; + + public static final byte TYPE_PARAMETER = 2; + + public static final byte TYPE_PARAMETER_CLAUSE = 3; + + public static final byte TYPE_CLAUSE_TOKENS = 4; + + byte getType(); + + String getText(); + + String[] getTokens(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/JRRectangle.java new file mode 100644 index 0000000..ebce0b6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRRectangle.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRRectangle extends JRGraphicElement, JRCommonRectangle { + void setRadius(int paramInt); + + void setRadius(Integer paramInteger); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRRenderable.java b/hrmsEjb/net/sf/jasperreports/engine/JRRenderable.java new file mode 100644 index 0000000..e3b2012 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRRenderable.java @@ -0,0 +1,42 @@ +package net.sf.jasperreports.engine; + +import java.awt.Graphics2D; +import java.awt.geom.Dimension2D; +import java.awt.geom.Rectangle2D; +import java.io.Serializable; + +public interface JRRenderable extends Serializable { + public static final byte TYPE_IMAGE = 0; + + public static final byte TYPE_SVG = 1; + + public static final byte IMAGE_TYPE_UNKNOWN = 0; + + public static final byte IMAGE_TYPE_GIF = 1; + + public static final byte IMAGE_TYPE_JPEG = 2; + + public static final byte IMAGE_TYPE_PNG = 3; + + public static final byte IMAGE_TYPE_TIFF = 4; + + public static final String MIME_TYPE_GIF = "image/gif"; + + public static final String MIME_TYPE_JPEG = "image/jpeg"; + + public static final String MIME_TYPE_PNG = "image/png"; + + public static final String MIME_TYPE_TIFF = "image/tiff"; + + String getId(); + + byte getType(); + + byte getImageType(); + + Dimension2D getDimension() throws JRException; + + byte[] getImageData() throws JRException; + + void render(Graphics2D paramGraphics2D, Rectangle2D paramRectangle2D) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRReport.java b/hrmsEjb/net/sf/jasperreports/engine/JRReport.java new file mode 100644 index 0000000..f893c78 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRReport.java @@ -0,0 +1,131 @@ +package net.sf.jasperreports.engine; + +public interface JRReport extends JRDefaultFontProvider, JRDefaultStyleProvider, JRPropertiesHolder { + public static final String LANGUAGE_JAVA = "java"; + + public static final String LANGUAGE_GROOVY = "groovy"; + + public static final byte PRINT_ORDER_VERTICAL = 1; + + public static final byte PRINT_ORDER_HORIZONTAL = 2; + + public static final byte ORIENTATION_PORTRAIT = 1; + + public static final byte ORIENTATION_LANDSCAPE = 2; + + public static final byte WHEN_NO_DATA_TYPE_NO_PAGES = 1; + + public static final byte WHEN_NO_DATA_TYPE_BLANK_PAGE = 2; + + public static final byte WHEN_NO_DATA_TYPE_ALL_SECTIONS_NO_DETAIL = 3; + + public static final byte WHEN_NO_DATA_TYPE_NO_DATA_SECTION = 4; + + public static final byte WHEN_RESOURCE_MISSING_TYPE_NULL = 1; + + public static final byte WHEN_RESOURCE_MISSING_TYPE_EMPTY = 2; + + public static final byte WHEN_RESOURCE_MISSING_TYPE_KEY = 3; + + public static final byte WHEN_RESOURCE_MISSING_TYPE_ERROR = 4; + + String getName(); + + String getLanguage(); + + int getColumnCount(); + + byte getPrintOrder(); + + int getPageWidth(); + + int getPageHeight(); + + byte getOrientation(); + + byte getWhenNoDataType(); + + void setWhenNoDataType(byte paramByte); + + int getColumnWidth(); + + int getColumnSpacing(); + + int getLeftMargin(); + + int getRightMargin(); + + int getTopMargin(); + + int getBottomMargin(); + + boolean isTitleNewPage(); + + boolean isSummaryNewPage(); + + boolean isFloatColumnFooter(); + + String getScriptletClass(); + + String getFormatFactoryClass(); + + String getResourceBundle(); + + String[] getPropertyNames(); + + String getProperty(String paramString); + + void setProperty(String paramString1, String paramString2); + + void removeProperty(String paramString); + + String[] getImports(); + + JRReportFont[] getFonts(); + + JRStyle[] getStyles(); + + JRParameter[] getParameters(); + + JRQuery getQuery(); + + JRField[] getFields(); + + JRSortField[] getSortFields(); + + JRVariable[] getVariables(); + + JRGroup[] getGroups(); + + JRBand getBackground(); + + JRBand getTitle(); + + JRBand getPageHeader(); + + JRBand getColumnHeader(); + + JRBand getDetail(); + + JRBand getColumnFooter(); + + JRBand getPageFooter(); + + JRBand getLastPageFooter(); + + JRBand getSummary(); + + JRBand getNoData(); + + byte getWhenResourceMissingType(); + + void setWhenResourceMissingType(byte paramByte); + + JRDataset getMainDataset(); + + JRDataset[] getDatasets(); + + boolean isIgnorePagination(); + + JRReportTemplate[] getTemplates(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRReportFont.java b/hrmsEjb/net/sf/jasperreports/engine/JRReportFont.java new file mode 100644 index 0000000..3a92b67 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRReportFont.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRReportFont extends JRFont { + String getName(); + + boolean isDefault(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRReportTemplate.java b/hrmsEjb/net/sf/jasperreports/engine/JRReportTemplate.java new file mode 100644 index 0000000..2865976 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRReportTemplate.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRReportTemplate { + JRExpression getSourceExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRRewindableDataSource.java b/hrmsEjb/net/sf/jasperreports/engine/JRRewindableDataSource.java new file mode 100644 index 0000000..9e5bf83 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRRewindableDataSource.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRRewindableDataSource extends JRDataSource { + void moveFirst() throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRRuntimeException.java b/hrmsEjb/net/sf/jasperreports/engine/JRRuntimeException.java new file mode 100644 index 0000000..c80b116 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRRuntimeException.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine; + +public class JRRuntimeException extends RuntimeException { + private static final long serialVersionUID = 10200L; + + public JRRuntimeException(String message) { + super(message); + } + + public JRRuntimeException(Throwable t) { + super(t); + } + + public JRRuntimeException(String message, Throwable t) { + super(message, t); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRScriptletException.java b/hrmsEjb/net/sf/jasperreports/engine/JRScriptletException.java new file mode 100644 index 0000000..d7d963f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRScriptletException.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine; + +public class JRScriptletException extends JRException { + private static final long serialVersionUID = 10200L; + + public JRScriptletException(String message) { + super(message); + } + + public JRScriptletException(Exception e) { + super(e); + } + + public JRScriptletException(String message, Exception e) { + super(message, e); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRSortField.java b/hrmsEjb/net/sf/jasperreports/engine/JRSortField.java new file mode 100644 index 0000000..c4ab013 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRSortField.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine; + +public interface JRSortField extends JRCloneable { + public static final byte SORT_ORDER_ASCENDING = 0; + + public static final byte SORT_ORDER_DESCENDING = 1; + + String getName(); + + byte getOrder(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRStaticText.java b/hrmsEjb/net/sf/jasperreports/engine/JRStaticText.java new file mode 100644 index 0000000..9a7467a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRStaticText.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRStaticText extends JRTextElement { + String getText(); + + void setText(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRStyle.java b/hrmsEjb/net/sf/jasperreports/engine/JRStyle.java new file mode 100644 index 0000000..368324b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRStyle.java @@ -0,0 +1,303 @@ +package net.sf.jasperreports.engine; + +import java.awt.Color; + +public interface JRStyle extends JRStyleContainer, JRBoxContainer, JRPenContainer { + String getName(); + + boolean isDefault(); + + Byte getMode(); + + Byte getOwnMode(); + + Color getForecolor(); + + Color getOwnForecolor(); + + Color getBackcolor(); + + Color getOwnBackcolor(); + + JRPen getLinePen(); + + Byte getPen(); + + Byte getOwnPen(); + + Byte getFill(); + + Byte getOwnFill(); + + Integer getRadius(); + + Integer getOwnRadius(); + + Byte getScaleImage(); + + Byte getOwnScaleImage(); + + Byte getHorizontalAlignment(); + + Byte getOwnHorizontalAlignment(); + + Byte getVerticalAlignment(); + + Byte getOwnVerticalAlignment(); + + JRLineBox getLineBox(); + + Byte getBorder(); + + Byte getOwnBorder(); + + Color getBorderColor(); + + Color getOwnBorderColor(); + + Integer getPadding(); + + Integer getOwnPadding(); + + Byte getTopBorder(); + + Byte getOwnTopBorder(); + + Color getTopBorderColor(); + + Color getOwnTopBorderColor(); + + Integer getTopPadding(); + + Integer getOwnTopPadding(); + + Byte getLeftBorder(); + + Byte getOwnLeftBorder(); + + Color getLeftBorderColor(); + + Color getOwnLeftBorderColor(); + + Integer getLeftPadding(); + + Integer getOwnLeftPadding(); + + Byte getBottomBorder(); + + Byte getOwnBottomBorder(); + + Color getBottomBorderColor(); + + Color getOwnBottomBorderColor(); + + Integer getBottomPadding(); + + Integer getOwnBottomPadding(); + + Byte getRightBorder(); + + Byte getOwnRightBorder(); + + Color getRightBorderColor(); + + Color getOwnRightBorderColor(); + + Integer getRightPadding(); + + Integer getOwnRightPadding(); + + Byte getRotation(); + + Byte getOwnRotation(); + + Byte getLineSpacing(); + + Byte getOwnLineSpacing(); + + Boolean isStyledText(); + + Boolean isOwnStyledText(); + + String getMarkup(); + + String getOwnMarkup(); + + String getFontName(); + + String getOwnFontName(); + + Boolean isBold(); + + Boolean isOwnBold(); + + Boolean isItalic(); + + Boolean isOwnItalic(); + + Boolean isUnderline(); + + Boolean isOwnUnderline(); + + Boolean isStrikeThrough(); + + Boolean isOwnStrikeThrough(); + + Integer getFontSize(); + + Integer getOwnFontSize(); + + String getPdfFontName(); + + String getOwnPdfFontName(); + + String getPdfEncoding(); + + String getOwnPdfEncoding(); + + Boolean isPdfEmbedded(); + + Boolean isOwnPdfEmbedded(); + + String getPattern(); + + String getOwnPattern(); + + Boolean isBlankWhenNull(); + + Boolean isOwnBlankWhenNull(); + + void setForecolor(Color paramColor); + + void setBackcolor(Color paramColor); + + void setMode(byte paramByte); + + void setMode(Byte paramByte); + + void setPen(byte paramByte); + + void setPen(Byte paramByte); + + void setFill(byte paramByte); + + void setFill(Byte paramByte); + + void setRadius(int paramInt); + + void setRadius(Integer paramInteger); + + void setScaleImage(byte paramByte); + + void setScaleImage(Byte paramByte); + + void setHorizontalAlignment(byte paramByte); + + void setHorizontalAlignment(Byte paramByte); + + void setVerticalAlignment(byte paramByte); + + void setVerticalAlignment(Byte paramByte); + + void setBorder(byte paramByte); + + void setBorder(Byte paramByte); + + void setBorderColor(Color paramColor); + + void setPadding(int paramInt); + + void setPadding(Integer paramInteger); + + void setTopBorder(byte paramByte); + + void setTopBorder(Byte paramByte); + + void setTopBorderColor(Color paramColor); + + void setTopPadding(int paramInt); + + void setTopPadding(Integer paramInteger); + + void setLeftBorder(byte paramByte); + + void setLeftBorder(Byte paramByte); + + void setLeftBorderColor(Color paramColor); + + void setLeftPadding(int paramInt); + + void setLeftPadding(Integer paramInteger); + + void setBottomBorder(byte paramByte); + + void setBottomBorder(Byte paramByte); + + void setBottomBorderColor(Color paramColor); + + void setBottomPadding(int paramInt); + + void setBottomPadding(Integer paramInteger); + + void setRightBorder(byte paramByte); + + void setRightBorder(Byte paramByte); + + void setRightBorderColor(Color paramColor); + + void setRightPadding(int paramInt); + + void setRightPadding(Integer paramInteger); + + void setRotation(byte paramByte); + + void setRotation(Byte paramByte); + + void setFontName(String paramString); + + void setBold(boolean paramBoolean); + + void setBold(Boolean paramBoolean); + + void setItalic(boolean paramBoolean); + + void setItalic(Boolean paramBoolean); + + void setPdfEmbedded(boolean paramBoolean); + + void setPdfEmbedded(Boolean paramBoolean); + + void setStrikeThrough(boolean paramBoolean); + + void setStrikeThrough(Boolean paramBoolean); + + void setStyledText(boolean paramBoolean); + + void setStyledText(Boolean paramBoolean); + + void setMarkup(String paramString); + + void setUnderline(boolean paramBoolean); + + void setUnderline(Boolean paramBoolean); + + void setLineSpacing(byte paramByte); + + void setLineSpacing(Byte paramByte); + + void setPattern(String paramString); + + void setBlankWhenNull(boolean paramBoolean); + + void setBlankWhenNull(Boolean paramBoolean); + + void setPdfEncoding(String paramString); + + void setPdfFontName(String paramString); + + void setFontSize(int paramInt); + + void setFontSize(Integer paramInteger); + + JRConditionalStyle[] getConditionalStyles(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRStyleContainer.java b/hrmsEjb/net/sf/jasperreports/engine/JRStyleContainer.java new file mode 100644 index 0000000..506d74a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRStyleContainer.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine; + +public interface JRStyleContainer { + JRDefaultStyleProvider getDefaultStyleProvider(); + + JRStyle getStyle(); + + String getStyleNameReference(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRStyleSetter.java b/hrmsEjb/net/sf/jasperreports/engine/JRStyleSetter.java new file mode 100644 index 0000000..4e5a042 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRStyleSetter.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRStyleSetter { + void setStyle(JRStyle paramJRStyle); + + void setStyleNameReference(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRStyledTextAttributeSelector.java b/hrmsEjb/net/sf/jasperreports/engine/JRStyledTextAttributeSelector.java new file mode 100644 index 0000000..230065a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRStyledTextAttributeSelector.java @@ -0,0 +1,36 @@ +package net.sf.jasperreports.engine; + +import java.awt.font.TextAttribute; +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.engine.util.JRFontUtil; + +public interface JRStyledTextAttributeSelector { + public static final JRStyledTextAttributeSelector ALL = new JRStyledTextAttributeSelector() { + public Map getStyledTextAttributes(JRPrintText printText) { + Map attributes = new HashMap(); + attributes.putAll(JRFontUtil.setAttributes(attributes, printText)); + attributes.put(TextAttribute.FOREGROUND, printText.getForecolor()); + if (printText.getMode() == 1) + attributes.put(TextAttribute.BACKGROUND, printText.getBackcolor()); + return attributes; + } + }; + + public static final JRStyledTextAttributeSelector NO_BACKCOLOR = new JRStyledTextAttributeSelector() { + public Map getStyledTextAttributes(JRPrintText printText) { + Map attributes = new HashMap(); + attributes.putAll(JRFontUtil.setAttributes(attributes, printText)); + attributes.put(TextAttribute.FOREGROUND, printText.getForecolor()); + return attributes; + } + }; + + public static final JRStyledTextAttributeSelector NONE = new JRStyledTextAttributeSelector() { + public Map getStyledTextAttributes(JRPrintText printText) { + return null; + } + }; + + Map getStyledTextAttributes(JRPrintText paramJRPrintText); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRSubreport.java b/hrmsEjb/net/sf/jasperreports/engine/JRSubreport.java new file mode 100644 index 0000000..d4e563f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRSubreport.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine; + +public interface JRSubreport extends JRElement { + boolean isUsingCache(); + + void setUsingCache(boolean paramBoolean); + + JRExpression getParametersMapExpression(); + + JRSubreportParameter[] getParameters(); + + JRExpression getConnectionExpression(); + + JRExpression getDataSourceExpression(); + + JRExpression getExpression(); + + JRSubreportReturnValue[] getReturnValues(); + + Boolean isOwnUsingCache(); + + void setUsingCache(Boolean paramBoolean); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRSubreportParameter.java b/hrmsEjb/net/sf/jasperreports/engine/JRSubreportParameter.java new file mode 100644 index 0000000..ee28155 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRSubreportParameter.java @@ -0,0 +1,3 @@ +package net.sf.jasperreports.engine; + +public interface JRSubreportParameter extends JRDatasetParameter {} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRSubreportReturnValue.java b/hrmsEjb/net/sf/jasperreports/engine/JRSubreportReturnValue.java new file mode 100644 index 0000000..e94672f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRSubreportReturnValue.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine; + +public interface JRSubreportReturnValue extends JRCloneable { + String getSubreportVariable(); + + String getToVariable(); + + byte getCalculation(); + + String getIncrementerFactoryClassName(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRTemplate.java b/hrmsEjb/net/sf/jasperreports/engine/JRTemplate.java new file mode 100644 index 0000000..36671e8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRTemplate.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine; + +public interface JRTemplate extends JRDefaultStyleProvider { + JRTemplateReference[] getIncludedTemplates(); + + JRStyle[] getStyles(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRTemplateReference.java b/hrmsEjb/net/sf/jasperreports/engine/JRTemplateReference.java new file mode 100644 index 0000000..21cf651 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRTemplateReference.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine; + +public class JRTemplateReference { + private String location; + + public JRTemplateReference() {} + + public JRTemplateReference(String location) { + this.location = location; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRTextElement.java b/hrmsEjb/net/sf/jasperreports/engine/JRTextElement.java new file mode 100644 index 0000000..97cb89a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRTextElement.java @@ -0,0 +1,51 @@ +package net.sf.jasperreports.engine; + +public interface JRTextElement extends JRElement, JRAlignment, JRBox, JRFont, JRCommonText { + public static final String PROPERTY_PRINT_KEEP_FULL_TEXT = "net.sf.jasperreports.print.keep.full.text"; + + public static final String PROPERTY_TRUNCATE_AT_CHAR = "net.sf.jasperreports.text.truncate.at.char"; + + public static final String PROPERTY_TRUNCATE_SUFFIX = "net.sf.jasperreports.text.truncate.suffix"; + + public static final byte TEXT_ALIGN_LEFT = 1; + + public static final byte TEXT_ALIGN_CENTER = 2; + + public static final byte TEXT_ALIGN_RIGHT = 3; + + public static final byte TEXT_ALIGN_JUSTIFIED = 4; + + public static final byte ROTATION_NONE = 0; + + public static final byte ROTATION_LEFT = 1; + + public static final byte ROTATION_RIGHT = 2; + + public static final byte ROTATION_UPSIDE_DOWN = 3; + + public static final byte LINE_SPACING_SINGLE = 0; + + public static final byte LINE_SPACING_1_1_2 = 1; + + public static final byte LINE_SPACING_DOUBLE = 2; + + byte getTextAlignment(); + + void setTextAlignment(byte paramByte); + + void setRotation(byte paramByte); + + void setRotation(Byte paramByte); + + void setLineSpacing(byte paramByte); + + void setLineSpacing(Byte paramByte); + + void setStyledText(boolean paramBoolean); + + void setStyledText(Boolean paramBoolean); + + JRBox getBox(); + + JRFont getFont(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRTextField.java b/hrmsEjb/net/sf/jasperreports/engine/JRTextField.java new file mode 100644 index 0000000..8f015a8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRTextField.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine; + +public interface JRTextField extends JRTextElement, JRAnchor, JRHyperlink { + public static final String STANDARD_DATE_FORMAT_DEFAULT = "default"; + + public static final String STANDARD_DATE_FORMAT_SHORT = "short"; + + public static final String STANDARD_DATE_FORMAT_MEDIUM = "medium"; + + public static final String STANDARD_DATE_FORMAT_LONG = "long"; + + public static final String STANDARD_DATE_FORMAT_FULL = "full"; + + public static final String STANDARD_DATE_FORMAT_HIDE = "hide"; + + public static final String STANDARD_DATE_FORMAT_SEPARATOR = ","; + + boolean isStretchWithOverflow(); + + void setStretchWithOverflow(boolean paramBoolean); + + byte getEvaluationTime(); + + String getPattern(); + + String getOwnPattern(); + + void setPattern(String paramString); + + boolean isBlankWhenNull(); + + Boolean isOwnBlankWhenNull(); + + void setBlankWhenNull(boolean paramBoolean); + + void setBlankWhenNull(Boolean paramBoolean); + + JRGroup getEvaluationGroup(); + + JRExpression getExpression(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRValueParameter.java b/hrmsEjb/net/sf/jasperreports/engine/JRValueParameter.java new file mode 100644 index 0000000..68dfe6f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRValueParameter.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRValueParameter extends JRParameter { + Object getValue(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRVariable.java b/hrmsEjb/net/sf/jasperreports/engine/JRVariable.java new file mode 100644 index 0000000..dafcf03 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRVariable.java @@ -0,0 +1,71 @@ +package net.sf.jasperreports.engine; + +public interface JRVariable extends JRCloneable { + public static final String REPORT_COUNT = "REPORT_COUNT"; + + public static final String PAGE_COUNT = "PAGE_COUNT"; + + public static final String COLUMN_COUNT = "COLUMN_COUNT"; + + public static final String PAGE_NUMBER = "PAGE_NUMBER"; + + public static final String COLUMN_NUMBER = "COLUMN_NUMBER"; + + public static final byte RESET_TYPE_REPORT = 1; + + public static final byte RESET_TYPE_PAGE = 2; + + public static final byte RESET_TYPE_COLUMN = 3; + + public static final byte RESET_TYPE_GROUP = 4; + + public static final byte RESET_TYPE_NONE = 5; + + public static final byte CALCULATION_NOTHING = 0; + + public static final byte CALCULATION_COUNT = 1; + + public static final byte CALCULATION_SUM = 2; + + public static final byte CALCULATION_AVERAGE = 3; + + public static final byte CALCULATION_LOWEST = 4; + + public static final byte CALCULATION_HIGHEST = 5; + + public static final byte CALCULATION_STANDARD_DEVIATION = 6; + + public static final byte CALCULATION_VARIANCE = 7; + + public static final byte CALCULATION_SYSTEM = 8; + + public static final byte CALCULATION_FIRST = 9; + + public static final byte CALCULATION_DISTINCT_COUNT = 10; + + String getName(); + + Class getValueClass(); + + String getValueClassName(); + + Class getIncrementerFactoryClass(); + + String getIncrementerFactoryClassName(); + + byte getResetType(); + + byte getIncrementType(); + + byte getCalculation(); + + boolean isSystemDefined(); + + JRExpression getExpression(); + + JRExpression getInitialValueExpression(); + + JRGroup getResetGroup(); + + JRGroup getIncrementGroup(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizable.java b/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizable.java new file mode 100644 index 0000000..39ac041 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizable.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine; + +import net.sf.jasperreports.engine.fill.JRVirtualizationContext; + +public interface JRVirtualizable { + String getUID(); + + void setVirtualData(Object paramObject); + + Object getVirtualData(); + + void removeVirtualData(); + + void setIdentityData(Object paramObject); + + Object getIdentityData(); + + void beforeExternalization(); + + void afterExternalization(); + + void afterInternalization(); + + JRVirtualizationContext getContext(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizationHelper.java b/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizationHelper.java new file mode 100644 index 0000000..ebff5b4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizationHelper.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine; + +public class JRVirtualizationHelper { + private static final ThreadLocal threadVirtualizer = new ThreadLocal(); + + public static void setThreadVirtualizer(JRVirtualizer virtualizer) { + threadVirtualizer.set(virtualizer); + } + + public static void clearThreadVirtualizer() { + threadVirtualizer.set(null); + } + + public static JRVirtualizer getThreadVirtualizer() { + return threadVirtualizer.get(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizer.java b/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizer.java new file mode 100644 index 0000000..6d02f94 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRVirtualizer.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine; + +public interface JRVirtualizer { + void registerObject(JRVirtualizable paramJRVirtualizable); + + void deregisterObject(JRVirtualizable paramJRVirtualizable); + + void touch(JRVirtualizable paramJRVirtualizable); + + void requestData(JRVirtualizable paramJRVirtualizable); + + void clearData(JRVirtualizable paramJRVirtualizable); + + void virtualizeData(JRVirtualizable paramJRVirtualizable); + + void cleanup(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRVisitable.java b/hrmsEjb/net/sf/jasperreports/engine/JRVisitable.java new file mode 100644 index 0000000..2f47806 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRVisitable.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine; + +public interface JRVisitable { + void visit(JRVisitor paramJRVisitor); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JRVisitor.java b/hrmsEjb/net/sf/jasperreports/engine/JRVisitor.java new file mode 100644 index 0000000..863fced --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JRVisitor.java @@ -0,0 +1,29 @@ +package net.sf.jasperreports.engine; + +import net.sf.jasperreports.crosstabs.JRCrosstab; + +public interface JRVisitor { + void visitBreak(JRBreak paramJRBreak); + + void visitChart(JRChart paramJRChart); + + void visitCrosstab(JRCrosstab paramJRCrosstab); + + void visitElementGroup(JRElementGroup paramJRElementGroup); + + void visitEllipse(JREllipse paramJREllipse); + + void visitFrame(JRFrame paramJRFrame); + + void visitImage(JRImage paramJRImage); + + void visitLine(JRLine paramJRLine); + + void visitRectangle(JRRectangle paramJRRectangle); + + void visitStaticText(JRStaticText paramJRStaticText); + + void visitSubreport(JRSubreport paramJRSubreport); + + void visitTextField(JRTextField paramJRTextField); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JasperCompileManager.java b/hrmsEjb/net/sf/jasperreports/engine/JasperCompileManager.java new file mode 100644 index 0000000..6ba9a7f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JasperCompileManager.java @@ -0,0 +1,183 @@ +package net.sf.jasperreports.engine; + +import java.io.File; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Collection; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.engine.design.JRCompiler; +import net.sf.jasperreports.engine.design.JRJavacCompiler; +import net.sf.jasperreports.engine.design.JRJdk13Compiler; +import net.sf.jasperreports.engine.design.JRJdtCompiler; +import net.sf.jasperreports.engine.design.JRVerifier; +import net.sf.jasperreports.engine.design.JasperDesign; +import net.sf.jasperreports.engine.fill.JREvaluator; +import net.sf.jasperreports.engine.util.JRClassLoader; +import net.sf.jasperreports.engine.util.JRLoader; +import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.util.JRSaver; +import net.sf.jasperreports.engine.xml.JRXmlLoader; +import net.sf.jasperreports.engine.xml.JRXmlWriter; + +public class JasperCompileManager { + public static String compileReportToFile(String sourceFileName) throws JRException { + File sourceFile = new File(sourceFileName); + JasperDesign jasperDesign = JRXmlLoader.load(sourceFileName); + File destFile = new File(sourceFile.getParent(), jasperDesign.getName() + ".jasper"); + String destFileName = destFile.toString(); + compileReportToFile(jasperDesign, destFileName); + return destFileName; + } + + public static void compileReportToFile(String sourceFileName, String destFileName) throws JRException { + JasperDesign jasperDesign = JRXmlLoader.load(sourceFileName); + compileReportToFile(jasperDesign, destFileName); + } + + public static void compileReportToFile(JasperDesign jasperDesign, String destFileName) throws JRException { + JasperReport jasperReport = compileReport(jasperDesign); + JRSaver.saveObject(jasperReport, destFileName); + } + + public static JasperReport compileReport(String sourceFileName) throws JRException { + JasperDesign jasperDesign = JRXmlLoader.load(sourceFileName); + return compileReport(jasperDesign); + } + + public static void compileReportToStream(InputStream inputStream, OutputStream outputStream) throws JRException { + JasperDesign jasperDesign = JRXmlLoader.load(inputStream); + compileReportToStream(jasperDesign, outputStream); + } + + public static void compileReportToStream(JasperDesign jasperDesign, OutputStream outputStream) throws JRException { + JasperReport jasperReport = compileReport(jasperDesign); + JRSaver.saveObject(jasperReport, outputStream); + } + + public static JasperReport compileReport(InputStream inputStream) throws JRException { + JasperDesign jasperDesign = JRXmlLoader.load(inputStream); + return compileReport(jasperDesign); + } + + public static JasperReport compileReport(JasperDesign jasperDesign) throws JRException { + return getCompiler(jasperDesign).compileReport(jasperDesign); + } + + public static Collection verifyDesign(JasperDesign jasperDesign) { + return JRVerifier.verifyDesign(jasperDesign); + } + + public static JREvaluator loadEvaluator(JasperReport jasperReport, JRDataset dataset) throws JRException { + JRCompiler compiler = getCompiler(jasperReport); + return compiler.loadEvaluator(jasperReport, dataset); + } + + public static JREvaluator loadEvaluator(JasperReport jasperReport, JRCrosstab crosstab) throws JRException { + JRCompiler compiler = getCompiler(jasperReport); + return compiler.loadEvaluator(jasperReport, crosstab); + } + + public static JREvaluator loadEvaluator(JasperReport jasperReport) throws JRException { + return loadEvaluator(jasperReport, jasperReport.getMainDataset()); + } + + public static String writeReportToXmlFile(String sourceFileName) throws JRException { + File sourceFile = new File(sourceFileName); + JRReport report = (JRReport)JRLoader.loadObject(sourceFile); + File destFile = new File(sourceFile.getParent(), report.getName() + ".jasper.jrxml"); + String destFileName = destFile.toString(); + writeReportToXmlFile(report, destFileName); + return destFileName; + } + + public static void writeReportToXmlFile(String sourceFileName, String destFileName) throws JRException { + JRReport report = (JRReport)JRLoader.loadObject(sourceFileName); + writeReportToXmlFile(report, destFileName); + } + + public static void writeReportToXmlFile(JRReport report, String destFileName) throws JRException { + JRXmlWriter.writeReport(report, destFileName, "UTF-8"); + } + + public static void writeReportToXmlStream(InputStream inputStream, OutputStream outputStream) throws JRException { + JRReport report = (JRReport)JRLoader.loadObject(inputStream); + writeReportToXmlStream(report, outputStream); + } + + public static void writeReportToXmlStream(JRReport report, OutputStream outputStream) throws JRException { + JRXmlWriter.writeReport(report, outputStream, "UTF-8"); + } + + public static String writeReportToXml(JRReport report) { + return JRXmlWriter.writeReport(report, "UTF-8"); + } + + private static JRCompiler getJavaCompiler() { + JRJdtCompiler jRJdtCompiler; + JRJdk13Compiler jRJdk13Compiler; + JRJavacCompiler jRJavacCompiler; + JRCompiler compiler = null; + try { + JRClassLoader.loadClassForRealName("org.eclipse.jdt.internal.compiler.Compiler"); + jRJdtCompiler = new JRJdtCompiler(); + } catch (Exception e) {} + if (jRJdtCompiler == null) + try { + JRClassLoader.loadClassForRealName("com.sun.tools.javac.Main"); + jRJdk13Compiler = new JRJdk13Compiler(); + } catch (Exception e) {} + if (jRJdk13Compiler == null) + jRJavacCompiler = new JRJavacCompiler(); + return (JRCompiler)jRJavacCompiler; + } + + private static JRCompiler getCompiler(JasperReport jasperReport) throws JRException { + JRCompiler compiler = null; + String compilerClassName = jasperReport.getCompilerClass(); + Class compilerClass = null; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + try { + compilerClass = classLoader.loadClass(compilerClassName); + } catch (ClassNotFoundException e) {} + if (compilerClass == null) { + classLoader = JasperCompileManager.class.getClassLoader(); + try { + if (classLoader == null) { + compilerClass = Class.forName(compilerClassName); + } else { + compilerClass = classLoader.loadClass(compilerClassName); + } + } catch (ClassNotFoundException e) { + throw new JRException("Report compiler class not found : " + compilerClassName); + } + } + try { + compiler = (JRCompiler)compilerClass.newInstance(); + } catch (Exception e) { + throw new JRException("Could not instantiate report compiler : " + compilerClassName, e); + } + return compiler; + } + + private static JRCompiler getCompiler(JasperDesign jasperDesign) throws JRException { + JRCompiler compiler = null; + String compilerClassName = JRProperties.getProperty("net.sf.jasperreports.compiler.class"); + if (compilerClassName == null || compilerClassName.trim().length() == 0) { + String language = jasperDesign.getLanguage(); + compilerClassName = JRProperties.getProperty("net.sf.jasperreports.compiler." + language); + if (compilerClassName == null || compilerClassName.trim().length() == 0) { + if ("java".equals(language)) + return getJavaCompiler(); + throw new JRException("No report compiler set for language : " + language); + } + } + try { + Class clazz = JRClassLoader.loadClassForName(compilerClassName); + compiler = clazz.newInstance(); + } catch (Exception e) { + throw new JRException("Could not instantiate report compiler : " + compilerClassName, e); + } + return compiler; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JasperFillManager.java b/hrmsEjb/net/sf/jasperreports/engine/JasperFillManager.java new file mode 100644 index 0000000..6a1e5b0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JasperFillManager.java @@ -0,0 +1,144 @@ +package net.sf.jasperreports.engine; + +import java.io.File; +import java.io.InputStream; +import java.io.OutputStream; +import java.sql.Connection; +import java.util.Map; +import net.sf.jasperreports.engine.fill.JRFiller; +import net.sf.jasperreports.engine.util.JRLoader; +import net.sf.jasperreports.engine.util.JRSaver; + +public class JasperFillManager { + public static String fillReportToFile(String sourceFileName, Map parameters, Connection connection) throws JRException { + File sourceFile = new File(sourceFileName); + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile); + File destFile = new File(sourceFile.getParent(), jasperReport.getName() + ".jrprint"); + String destFileName = destFile.toString(); + fillReportToFile(jasperReport, destFileName, parameters, connection); + return destFileName; + } + + public static String fillReportToFile(String sourceFileName, Map parameters) throws JRException { + File sourceFile = new File(sourceFileName); + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile); + File destFile = new File(sourceFile.getParent(), jasperReport.getName() + ".jrprint"); + String destFileName = destFile.toString(); + fillReportToFile(jasperReport, destFileName, parameters); + return destFileName; + } + + public static void fillReportToFile(String sourceFileName, String destFileName, Map parameters, Connection connection) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFileName); + fillReportToFile(jasperReport, destFileName, parameters, connection); + } + + public static void fillReportToFile(String sourceFileName, String destFileName, Map parameters) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFileName); + fillReportToFile(jasperReport, destFileName, parameters); + } + + public static void fillReportToFile(JasperReport jasperReport, String destFileName, Map parameters, Connection connection) throws JRException { + JasperPrint jasperPrint = fillReport(jasperReport, parameters, connection); + JRSaver.saveObject(jasperPrint, destFileName); + } + + public static void fillReportToFile(JasperReport jasperReport, String destFileName, Map parameters) throws JRException { + JasperPrint jasperPrint = fillReport(jasperReport, parameters); + JRSaver.saveObject(jasperPrint, destFileName); + } + + public static JasperPrint fillReport(String sourceFileName, Map parameters, Connection connection) throws JRException { + File sourceFile = new File(sourceFileName); + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile); + return fillReport(jasperReport, parameters, connection); + } + + public static JasperPrint fillReport(String sourceFileName, Map parameters) throws JRException { + File sourceFile = new File(sourceFileName); + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile); + return fillReport(jasperReport, parameters); + } + + public static void fillReportToStream(InputStream inputStream, OutputStream outputStream, Map parameters, Connection connection) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream); + fillReportToStream(jasperReport, outputStream, parameters, connection); + } + + public static void fillReportToStream(InputStream inputStream, OutputStream outputStream, Map parameters) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream); + fillReportToStream(jasperReport, outputStream, parameters); + } + + public static void fillReportToStream(JasperReport jasperReport, OutputStream outputStream, Map parameters, Connection connection) throws JRException { + JasperPrint jasperPrint = fillReport(jasperReport, parameters, connection); + JRSaver.saveObject(jasperPrint, outputStream); + } + + public static void fillReportToStream(JasperReport jasperReport, OutputStream outputStream, Map parameters) throws JRException { + JasperPrint jasperPrint = fillReport(jasperReport, parameters); + JRSaver.saveObject(jasperPrint, outputStream); + } + + public static JasperPrint fillReport(InputStream inputStream, Map parameters, Connection connection) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream); + return fillReport(jasperReport, parameters, connection); + } + + public static JasperPrint fillReport(InputStream inputStream, Map parameters) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream); + return fillReport(jasperReport, parameters); + } + + public static JasperPrint fillReport(JasperReport jasperReport, Map parameters, Connection connection) throws JRException { + return JRFiller.fillReport(jasperReport, parameters, connection); + } + + public static JasperPrint fillReport(JasperReport jasperReport, Map parameters) throws JRException { + return JRFiller.fillReport(jasperReport, parameters); + } + + public static String fillReportToFile(String sourceFileName, Map parameters, JRDataSource dataSource) throws JRException { + File sourceFile = new File(sourceFileName); + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile); + File destFile = new File(sourceFile.getParent(), jasperReport.getName() + ".jrprint"); + String destFileName = destFile.toString(); + fillReportToFile(jasperReport, destFileName, parameters, dataSource); + return destFileName; + } + + public static void fillReportToFile(String sourceFileName, String destFileName, Map parameters, JRDataSource dataSource) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFileName); + fillReportToFile(jasperReport, destFileName, parameters, dataSource); + } + + public static void fillReportToFile(JasperReport jasperReport, String destFileName, Map parameters, JRDataSource dataSource) throws JRException { + JasperPrint jasperPrint = fillReport(jasperReport, parameters, dataSource); + JRSaver.saveObject(jasperPrint, destFileName); + } + + public static JasperPrint fillReport(String sourceFileName, Map parameters, JRDataSource dataSource) throws JRException { + File sourceFile = new File(sourceFileName); + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile); + return fillReport(jasperReport, parameters, dataSource); + } + + public static void fillReportToStream(InputStream inputStream, OutputStream outputStream, Map parameters, JRDataSource dataSource) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream); + fillReportToStream(jasperReport, outputStream, parameters, dataSource); + } + + public static void fillReportToStream(JasperReport jasperReport, OutputStream outputStream, Map parameters, JRDataSource dataSource) throws JRException { + JasperPrint jasperPrint = fillReport(jasperReport, parameters, dataSource); + JRSaver.saveObject(jasperPrint, outputStream); + } + + public static JasperPrint fillReport(InputStream inputStream, Map parameters, JRDataSource dataSource) throws JRException { + JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream); + return fillReport(jasperReport, parameters, dataSource); + } + + public static JasperPrint fillReport(JasperReport jasperReport, Map parameters, JRDataSource dataSource) throws JRException { + return JRFiller.fillReport(jasperReport, parameters, dataSource); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JasperPrint.java b/hrmsEjb/net/sf/jasperreports/engine/JasperPrint.java new file mode 100644 index 0000000..22fdaea --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JasperPrint.java @@ -0,0 +1,355 @@ +package net.sf.jasperreports.engine; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class JasperPrint implements Serializable, JRPropertiesHolder { + public static final String PROPERTIES_PRINT_TRANSFER_PREFIX = "net.sf.jasperreports.print.transfer."; + + private static final long serialVersionUID = 10200L; + + private static class DefaultStyleProvider implements JRDefaultStyleProvider, Serializable { + private static final long serialVersionUID = 10200L; + + private JRReportFont defaultFont; + + private JRStyle defaultStyle; + + DefaultStyleProvider(JRReportFont font, JRStyle style) { + this.defaultFont = font; + this.defaultStyle = style; + } + + public JRReportFont getDefaultFont() { + return this.defaultFont; + } + + void setDefaultFont(JRReportFont font) { + this.defaultFont = font; + } + + public JRStyle getDefaultStyle() { + return this.defaultStyle; + } + + void setDefaultStyle(JRStyle style) { + this.defaultStyle = style; + } + } + + private String name = null; + + private int pageWidth = 0; + + private int pageHeight = 0; + + private byte orientation = 1; + + private Map fontsMap = new HashMap(); + + private List fontsList = new ArrayList(); + + private Map stylesMap = new HashMap(); + + private List stylesList = new ArrayList(); + + private Map originsMap = new HashMap(); + + private List originsList = new ArrayList(); + + private List pages = new ArrayList(); + + private transient Map anchorIndexes = null; + + private DefaultStyleProvider defaultStyleProvider = null; + + private String formatFactoryClass; + + private String localeCode; + + private String timeZoneId; + + private JRPropertiesMap propertiesMap; + + public JasperPrint() { + this.defaultStyleProvider = new DefaultStyleProvider(null, null); + this.propertiesMap = new JRPropertiesMap(); + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public int getPageWidth() { + return this.pageWidth; + } + + public void setPageWidth(int pageWidth) { + this.pageWidth = pageWidth; + } + + public int getPageHeight() { + return this.pageHeight; + } + + public void setPageHeight(int pageHeight) { + this.pageHeight = pageHeight; + } + + public byte getOrientation() { + return this.orientation; + } + + public void setOrientation(byte orientation) { + this.orientation = orientation; + } + + public boolean hasProperties() { + return (this.propertiesMap != null && this.propertiesMap.hasProperties()); + } + + public JRPropertiesMap getPropertiesMap() { + return this.propertiesMap; + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public String[] getPropertyNames() { + return this.propertiesMap.getPropertyNames(); + } + + public String getProperty(String propName) { + return this.propertiesMap.getProperty(propName); + } + + public void setProperty(String propName, String value) { + this.propertiesMap.setProperty(propName, value); + } + + public void removeProperty(String propName) { + this.propertiesMap.removeProperty(propName); + } + + public JRReportFont getDefaultFont() { + return this.defaultStyleProvider.getDefaultFont(); + } + + public void setDefaultFont(JRReportFont font) { + this.defaultStyleProvider.setDefaultFont(font); + } + + public JRDefaultFontProvider getDefaultFontProvider() { + return this.defaultStyleProvider; + } + + public JRReportFont[] getFonts() { + JRReportFont[] fontsArray = new JRReportFont[this.fontsList.size()]; + this.fontsList.toArray((Object[])fontsArray); + return fontsArray; + } + + public List getFontsList() { + return this.fontsList; + } + + public Map getFontsMap() { + return this.fontsMap; + } + + public synchronized void addFont(JRReportFont reportFont) throws JRException { + addFont(reportFont, false); + } + + public synchronized void addFont(JRReportFont reportFont, boolean isIgnoreDuplicate) throws JRException { + if (this.fontsMap.containsKey(reportFont.getName())) { + if (!isIgnoreDuplicate) + throw new JRException("Duplicate declaration of report font : " + reportFont.getName()); + } else { + this.fontsList.add(reportFont); + this.fontsMap.put(reportFont.getName(), reportFont); + if (reportFont.isDefault()) + setDefaultFont(reportFont); + } + } + + public synchronized JRReportFont removeFont(String fontName) { + return removeFont((JRReportFont)this.fontsMap.get(fontName)); + } + + public synchronized JRReportFont removeFont(JRReportFont reportFont) { + if (reportFont != null) { + if (reportFont.isDefault()) + setDefaultFont(null); + this.fontsList.remove(reportFont); + this.fontsMap.remove(reportFont.getName()); + } + return reportFont; + } + + public JRStyle getDefaultStyle() { + return this.defaultStyleProvider.getDefaultStyle(); + } + + public synchronized void setDefaultStyle(JRStyle style) { + this.defaultStyleProvider.setDefaultStyle(style); + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public JRStyle[] getStyles() { + JRStyle[] stylesArray = new JRStyle[this.stylesList.size()]; + this.stylesList.toArray((Object[])stylesArray); + return stylesArray; + } + + public List getStylesList() { + return this.stylesList; + } + + public Map getStylesMap() { + return this.stylesMap; + } + + public synchronized void addStyle(JRStyle style) throws JRException { + addStyle(style, false); + } + + public synchronized void addStyle(JRStyle style, boolean isIgnoreDuplicate) throws JRException { + if (this.stylesMap.containsKey(style.getName())) { + if (!isIgnoreDuplicate) + throw new JRException("Duplicate declaration of report style : " + style.getName()); + } else { + this.stylesList.add(style); + this.stylesMap.put(style.getName(), style); + if (style.isDefault()) + setDefaultStyle(style); + } + } + + public synchronized JRStyle removeStyle(String styleName) { + return removeStyle((JRStyle)this.stylesMap.get(styleName)); + } + + public synchronized JRStyle removeStyle(JRStyle style) { + if (style != null) { + if (style.isDefault()) + setDefaultStyle(null); + this.stylesList.remove(style); + this.stylesMap.remove(style.getName()); + } + return style; + } + + public JROrigin[] getOrigins() { + return (JROrigin[])this.originsList.toArray((Object[])new JROrigin[this.originsList.size()]); + } + + public List getOriginsList() { + return this.originsList; + } + + public Map getOriginsMap() { + return this.originsMap; + } + + public synchronized void addOrigin(JROrigin origin) { + if (!this.originsMap.containsKey(origin)) { + this.originsList.add(origin); + this.originsMap.put(origin, new Integer(this.originsList.size() - 1)); + } + } + + public synchronized JROrigin removeOrigin(JROrigin origin) { + if (this.originsMap.containsKey(origin)) { + this.originsList.remove(origin); + this.originsMap = new HashMap(); + for (int i = 0; i < this.originsList.size(); i++) + this.originsMap.put(this.originsList.get(i), new Integer(i)); + } + return origin; + } + + public List getPages() { + return this.pages; + } + + public synchronized void addPage(JRPrintPage page) { + this.anchorIndexes = null; + this.pages.add(page); + } + + public synchronized void addPage(int index, JRPrintPage page) { + this.anchorIndexes = null; + this.pages.add(index, page); + } + + public synchronized JRPrintPage removePage(int index) { + this.anchorIndexes = null; + return this.pages.remove(index); + } + + public synchronized Map getAnchorIndexes() { + if (this.anchorIndexes == null) { + this.anchorIndexes = new HashMap(); + int i = 0; + for (Iterator itp = this.pages.iterator(); itp.hasNext(); i++) { + JRPrintPage page = itp.next(); + Collection elements = page.getElements(); + collectAnchors(elements, i, 0, 0); + } + } + return this.anchorIndexes; + } + + protected void collectAnchors(Collection elements, int pageIndex, int offsetX, int offsetY) { + if (elements != null && elements.size() > 0) { + JRPrintElement element = null; + for (Iterator it = elements.iterator(); it.hasNext(); ) { + element = it.next(); + if (element instanceof JRPrintAnchor) + this.anchorIndexes.put(((JRPrintAnchor)element).getAnchorName(), new JRPrintAnchorIndex(pageIndex, element, offsetX, offsetY)); + if (element instanceof JRPrintFrame) { + JRPrintFrame frame = (JRPrintFrame)element; + collectAnchors(frame.getElements(), pageIndex, offsetX + frame.getX(), offsetY + frame.getY()); + } + } + } + } + + public String getFormatFactoryClass() { + return this.formatFactoryClass; + } + + public void setFormatFactoryClass(String formatFactoryClass) { + this.formatFactoryClass = formatFactoryClass; + } + + public String getLocaleCode() { + return this.localeCode; + } + + public void setLocaleCode(String localeCode) { + this.localeCode = localeCode; + } + + public String getTimeZoneId() { + return this.timeZoneId; + } + + public void setTimeZoneId(String timeZoneId) { + this.timeZoneId = timeZoneId; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/JasperReport.java b/hrmsEjb/net/sf/jasperreports/engine/JasperReport.java new file mode 100644 index 0000000..b00c591 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/JasperReport.java @@ -0,0 +1,33 @@ +package net.sf.jasperreports.engine; + +import java.io.Serializable; +import net.sf.jasperreports.engine.base.JRBaseReport; + +public class JasperReport extends JRBaseReport { + private static final long serialVersionUID = 10200L; + + private String compilerClass = null; + + private String compileNameSuffix; + + private Serializable compileData = null; + + public JasperReport(JRReport report, String compilerClass, Serializable compileData, JRExpressionCollector expressionCollector, String compileNameSuffix) { + super(report, expressionCollector); + this.compilerClass = compilerClass; + this.compileData = compileData; + this.compileNameSuffix = compileNameSuffix; + } + + public String getCompilerClass() { + return this.compilerClass; + } + + public Serializable getCompileData() { + return this.compileData; + } + + public String getCompileNameSuffix() { + return this.compileNameSuffix; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBand.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBand.java new file mode 100644 index 0000000..a9dcfbc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBand.java @@ -0,0 +1,61 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRBaseBand extends JRBaseElementGroup implements JRBand, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_SPLIT_ALLOWED = "splitAllowed"; + + protected int height = 0; + + protected boolean isSplitAllowed = true; + + protected JRExpression printWhenExpression = null; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseBand(JRBand band, JRBaseObjectFactory factory) { + super((JRElementGroup)band, factory); + this.height = band.getHeight(); + this.isSplitAllowed = band.isSplitAllowed(); + this.printWhenExpression = factory.getExpression(band.getPrintWhenExpression()); + } + + public int getHeight() { + return this.height; + } + + public boolean isSplitAllowed() { + return this.isSplitAllowed; + } + + public void setSplitAllowed(boolean isSplitAllowed) { + boolean old = this.isSplitAllowed; + this.isSplitAllowed = isSplitAllowed; + getEventSupport().firePropertyChange("splitAllowed", old, this.isSplitAllowed); + } + + public JRExpression getPrintWhenExpression() { + return this.printWhenExpression; + } + + public Object clone() { + JRBaseBand clone = (JRBaseBand)super.clone(); + if (this.printWhenExpression != null) + clone.printWhenExpression = (JRExpression)this.printWhenExpression.clone(); + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxBottomPen.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxBottomPen.java new file mode 100644 index 0000000..10de1e5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxBottomPen.java @@ -0,0 +1,16 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; + +public class JRBaseBoxBottomPen extends JRBaseBoxPen { + private static final long serialVersionUID = 10200L; + + public JRBaseBoxBottomPen(JRLineBox box) { + super(box); + } + + public JRPen getPen(JRLineBox box) { + return box.getBottomPen(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxLeftPen.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxLeftPen.java new file mode 100644 index 0000000..fbb790a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxLeftPen.java @@ -0,0 +1,16 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; + +public class JRBaseBoxLeftPen extends JRBaseBoxPen { + private static final long serialVersionUID = 10200L; + + public JRBaseBoxLeftPen(JRLineBox box) { + super(box); + } + + public JRPen getPen(JRLineBox box) { + return box.getLeftPen(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxPen.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxPen.java new file mode 100644 index 0000000..72a8f3e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxPen.java @@ -0,0 +1,44 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseBoxPen extends JRBasePen implements JRBoxPen { + private static final long serialVersionUID = 10200L; + + protected JRLineBox lineBox = null; + + public JRBaseBoxPen(JRLineBox box) { + super((JRPenContainer)box); + this.lineBox = box; + } + + public JRLineBox getBox() { + return this.lineBox; + } + + public Float getLineWidth() { + return JRStyleResolver.getLineWidth(this, this.penContainer.getDefaultLineWidth()); + } + + public Byte getLineStyle() { + return JRStyleResolver.getLineStyle(this); + } + + public Color getLineColor() { + return JRStyleResolver.getLineColor(this, this.penContainer.getDefaultLineColor()); + } + + public JRPen getPen(JRLineBox box) { + return box.getPen(); + } + + public JRBoxPen clone(JRLineBox lineBox) { + JRBaseBoxPen clone = (JRBaseBoxPen)clone((JRPenContainer)lineBox); + clone.lineBox = lineBox; + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxRightPen.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxRightPen.java new file mode 100644 index 0000000..e9f2ebb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxRightPen.java @@ -0,0 +1,16 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; + +public class JRBaseBoxRightPen extends JRBaseBoxPen { + private static final long serialVersionUID = 10200L; + + public JRBaseBoxRightPen(JRLineBox box) { + super(box); + } + + public JRPen getPen(JRLineBox box) { + return box.getRightPen(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxTopPen.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxTopPen.java new file mode 100644 index 0000000..62a2f8a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBoxTopPen.java @@ -0,0 +1,16 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; + +public class JRBaseBoxTopPen extends JRBaseBoxPen { + private static final long serialVersionUID = 10200L; + + public JRBaseBoxTopPen(JRLineBox box) { + super(box); + } + + public JRPen getPen(JRLineBox box) { + return box.getTopPen(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBreak.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBreak.java new file mode 100644 index 0000000..eb2d9e9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseBreak.java @@ -0,0 +1,45 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRBaseBreak extends JRBaseElement implements JRBreak { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TYPE = "type"; + + protected byte type = 1; + + protected JRBaseBreak(JRBreak breakElement, JRBaseObjectFactory factory) { + super((JRElement)breakElement, factory); + this.type = breakElement.getType(); + } + + public int getX() { + return 0; + } + + public int getHeight() { + return 1; + } + + public byte getType() { + return this.type; + } + + public void setType(byte type) { + byte old = this.type; + this.type = type; + getEventSupport().firePropertyChange("type", old, this.type); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitBreak(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChart.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChart.java new file mode 100644 index 0000000..f6c0580 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChart.java @@ -0,0 +1,781 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRMultiAxisPlot; +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRBaseChart extends JRBaseElement implements JRChart { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_LEGEND_BACKGROUND_COLOR = "legendBackgroundColor"; + + public static final String PROPERTY_LEGEND_COLOR = "legendColor"; + + public static final String PROPERTY_LEGEND_POSITION = "legendPosition"; + + public static final String PROPERTY_SHOW_LEGEND = "showLegend"; + + public static final String PROPERTY_SUBTITLE_COLOR = "subtitleColor"; + + public static final String PROPERTY_TITLE_COLOR = "titleColor"; + + public static final String PROPERTY_TITLE_POSITION = "titlePosition"; + + public static final String PROPERTY_RENDER_TYPE = "renderType"; + + protected byte chartType = 0; + + protected boolean isShowLegend = false; + + protected byte evaluationTime = 1; + + protected byte hyperlinkType = 0; + + protected String linkType; + + protected byte hyperlinkTarget = 1; + + private JRHyperlinkParameter[] hyperlinkParameters; + + protected byte titlePosition = 1; + + protected Color titleColor = null; + + protected Color subtitleColor = null; + + protected Color legendColor = null; + + protected Color legendBackgroundColor = null; + + protected byte legendPosition = 2; + + protected String renderType; + + protected JRLineBox lineBox = null; + + protected JRFont titleFont = null; + + protected JRFont subtitleFont = null; + + protected JRFont legendFont = null; + + protected String customizerClass; + + protected JRGroup evaluationGroup = null; + + protected JRExpression titleExpression = null; + + protected JRExpression subtitleExpression = null; + + protected JRExpression anchorNameExpression = null; + + protected JRExpression hyperlinkReferenceExpression = null; + + protected JRExpression hyperlinkAnchorExpression = null; + + protected JRExpression hyperlinkPageExpression = null; + + private JRExpression hyperlinkTooltipExpression; + + protected JRChartDataset dataset = null; + + protected JRChartPlot plot = null; + + protected int bookmarkLevel = 0; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + protected JRBaseChart(JRChart chart, JRBaseObjectFactory factory) { + super((JRElement)chart, factory); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.chartType = chart.getChartType(); + switch (this.chartType) { + case 1: + this.dataset = (JRChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot()); + break; + case 3: + this.dataset = (JRChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot()); + break; + case 2: + this.dataset = (JRChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBar3DPlot((JRBar3DPlot)chart.getPlot()); + break; + case 4: + this.dataset = (JRChartDataset)factory.getXyzDataset((JRXyzDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBubblePlot((JRBubblePlot)chart.getPlot()); + break; + case 5: + this.dataset = (JRChartDataset)factory.getHighLowDataset((JRHighLowDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getCandlestickPlot((JRCandlestickPlot)chart.getPlot()); + break; + case 6: + this.dataset = (JRChartDataset)factory.getHighLowDataset((JRHighLowDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getHighLowPlot((JRHighLowPlot)chart.getPlot()); + break; + case 7: + this.dataset = (JRChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getLinePlot((JRLinePlot)chart.getPlot()); + break; + case 17: + this.dataset = (JRChartDataset)factory.getValueDataset((JRValueDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getMeterPlot((JRMeterPlot)chart.getPlot()); + break; + case 19: + this.dataset = null; + this.plot = (JRChartPlot)factory.getMultiAxisPlot((JRMultiAxisPlot)chart.getPlot()); + break; + case 9: + this.dataset = (JRChartDataset)factory.getPieDataset((JRPieDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getPiePlot((JRPiePlot)chart.getPlot()); + break; + case 8: + this.dataset = (JRChartDataset)factory.getPieDataset((JRPieDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getPie3DPlot((JRPie3DPlot)chart.getPlot()); + break; + case 10: + this.dataset = (JRChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getScatterPlot((JRScatterPlot)chart.getPlot()); + break; + case 12: + this.dataset = (JRChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot()); + break; + case 11: + this.dataset = (JRChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBar3DPlot((JRBar3DPlot)chart.getPlot()); + break; + case 18: + this.dataset = (JRChartDataset)factory.getValueDataset((JRValueDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getThermometerPlot((JRThermometerPlot)chart.getPlot()); + break; + case 16: + this.dataset = (JRChartDataset)factory.getTimeSeriesDataset((JRTimeSeriesDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getTimeSeriesPlot((JRTimeSeriesPlot)chart.getPlot()); + break; + case 13: + this.dataset = (JRChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot()); + break; + case 14: + switch (chart.getDataset().getDatasetType()) { + case 6: + this.dataset = (JRChartDataset)factory.getTimeSeriesDataset((JRTimeSeriesDataset)chart.getDataset()); + break; + case 5: + this.dataset = (JRChartDataset)factory.getTimePeriodDataset((JRTimePeriodDataset)chart.getDataset()); + break; + case 3: + this.dataset = (JRChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + break; + } + this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot()); + break; + case 15: + this.dataset = (JRChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getLinePlot((JRLinePlot)chart.getPlot()); + break; + case 20: + this.dataset = (JRChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot()); + break; + default: + throw new JRRuntimeException("Chart type not supported."); + } + this.isShowLegend = chart.isShowLegend(); + this.evaluationTime = chart.getEvaluationTime(); + this.linkType = chart.getLinkType(); + this.hyperlinkTarget = chart.getHyperlinkTarget(); + this.titlePosition = chart.getTitlePosition(); + this.titleColor = chart.getOwnTitleColor(); + this.subtitleColor = chart.getOwnSubtitleColor(); + this.legendColor = chart.getOwnLegendColor(); + this.legendBackgroundColor = chart.getOwnLegendBackgroundColor(); + this.legendPosition = chart.getLegendPosition(); + this.renderType = chart.getRenderType(); + this.titleFont = new JRBaseFont(null, null, (JRStyleContainer)this, chart.getTitleFont()); + this.subtitleFont = new JRBaseFont(null, null, (JRStyleContainer)this, chart.getSubtitleFont()); + this.legendFont = new JRBaseFont(null, null, (JRStyleContainer)this, chart.getLegendFont()); + this.evaluationGroup = factory.getGroup(chart.getEvaluationGroup()); + this.titleExpression = factory.getExpression(chart.getTitleExpression()); + this.subtitleExpression = factory.getExpression(chart.getSubtitleExpression()); + this.anchorNameExpression = factory.getExpression(chart.getAnchorNameExpression()); + this.hyperlinkReferenceExpression = factory.getExpression(chart.getHyperlinkReferenceExpression()); + this.hyperlinkAnchorExpression = factory.getExpression(chart.getHyperlinkAnchorExpression()); + this.hyperlinkPageExpression = factory.getExpression(chart.getHyperlinkPageExpression()); + this.hyperlinkTooltipExpression = factory.getExpression(chart.getHyperlinkTooltipExpression()); + this.bookmarkLevel = chart.getBookmarkLevel(); + this.hyperlinkParameters = JRBaseHyperlink.copyHyperlinkParameters((JRHyperlink)chart, factory); + this.customizerClass = chart.getCustomizerClass(); + this.lineBox = chart.getLineBox().clone((JRBoxContainer)this); + } + + public boolean isShowLegend() { + return this.isShowLegend; + } + + public void setShowLegend(boolean isShowLegend) { + boolean old = this.isShowLegend; + this.isShowLegend = isShowLegend; + getEventSupport().firePropertyChange("showLegend", old, this.isShowLegend); + } + + public byte getEvaluationTime() { + return this.evaluationTime; + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public JRFont getTitleFont() { + return this.titleFont; + } + + public byte getTitlePosition() { + return this.titlePosition; + } + + public void setTitlePosition(byte titlePosition) { + byte old = this.titlePosition; + this.titlePosition = titlePosition; + getEventSupport().firePropertyChange("titlePosition", old, this.titlePosition); + } + + public Color getTitleColor() { + return JRStyleResolver.getTitleColor(this); + } + + public Color getOwnTitleColor() { + return this.titleColor; + } + + public void setTitleColor(Color titleColor) { + Object old = this.titleColor; + this.titleColor = titleColor; + getEventSupport().firePropertyChange("titleColor", old, this.titleColor); + } + + public JRFont getSubtitleFont() { + return this.subtitleFont; + } + + public Color getOwnSubtitleColor() { + return this.subtitleColor; + } + + public Color getSubtitleColor() { + return JRStyleResolver.getSubtitleColor(this); + } + + public void setSubtitleColor(Color subtitleColor) { + Object old = this.subtitleColor; + this.subtitleColor = subtitleColor; + getEventSupport().firePropertyChange("subtitleColor", old, this.subtitleColor); + } + + public Color getLegendBackgroundColor() { + return JRStyleResolver.getLegendBackgroundColor(this); + } + + public Color getOwnLegendBackgroundColor() { + return this.legendBackgroundColor; + } + + public Color getOwnLegendColor() { + return this.legendColor; + } + + public Color getLegendColor() { + return JRStyleResolver.getLegendColor(this); + } + + public JRFont getLegendFont() { + return this.legendFont; + } + + public void setLegendBackgroundColor(Color legendBackgroundColor) { + Object old = this.legendBackgroundColor; + this.legendBackgroundColor = legendBackgroundColor; + getEventSupport().firePropertyChange("legendBackgroundColor", old, this.legendBackgroundColor); + } + + public void setLegendColor(Color legendColor) { + Object old = this.legendColor; + this.legendColor = legendColor; + getEventSupport().firePropertyChange("legendColor", old, this.legendColor); + } + + public byte getLegendPosition() { + return this.legendPosition; + } + + public void setLegendPosition(byte legendPosition) { + byte old = this.legendPosition; + this.legendPosition = legendPosition; + getEventSupport().firePropertyChange("legendPosition", old, this.legendPosition); + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType((JRHyperlink)this); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public JRExpression getTitleExpression() { + return this.titleExpression; + } + + public JRExpression getSubtitleExpression() { + return this.subtitleExpression; + } + + public JRExpression getAnchorNameExpression() { + return this.anchorNameExpression; + } + + public JRExpression getHyperlinkReferenceExpression() { + return this.hyperlinkReferenceExpression; + } + + public JRExpression getHyperlinkAnchorExpression() { + return this.hyperlinkAnchorExpression; + } + + public JRExpression getHyperlinkPageExpression() { + return this.hyperlinkPageExpression; + } + + public JRChartDataset getDataset() { + return this.dataset; + } + + public JRChartPlot getPlot() { + return this.plot; + } + + public byte getChartType() { + return this.chartType; + } + + public String getRenderType() { + return this.renderType; + } + + public void setRenderType(String renderType) { + String old = this.renderType; + this.renderType = renderType; + getEventSupport().firePropertyChange("renderType", old, this.renderType); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitChart(this); + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public String getCustomizerClass() { + return this.customizerClass; + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public String getLinkType() { + return this.linkType; + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + return this.hyperlinkParameters; + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public JRExpression getHyperlinkTooltipExpression() { + return this.hyperlinkTooltipExpression; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public Object clone() { + JRBaseChart clone = (JRBaseChart)super.clone(); + if (this.hyperlinkParameters != null) { + clone.hyperlinkParameters = new JRHyperlinkParameter[this.hyperlinkParameters.length]; + for (int i = 0; i < this.hyperlinkParameters.length; i++) + clone.hyperlinkParameters[i] = (JRHyperlinkParameter)this.hyperlinkParameters[i].clone(); + } + if (this.titleExpression != null) + clone.titleExpression = (JRExpression)this.titleExpression.clone(); + if (this.subtitleExpression != null) + clone.subtitleExpression = (JRExpression)this.subtitleExpression.clone(); + if (this.anchorNameExpression != null) + clone.anchorNameExpression = (JRExpression)this.anchorNameExpression.clone(); + if (this.hyperlinkReferenceExpression != null) + clone.hyperlinkReferenceExpression = (JRExpression)this.hyperlinkReferenceExpression.clone(); + if (this.hyperlinkAnchorExpression != null) + clone.hyperlinkAnchorExpression = (JRExpression)this.hyperlinkAnchorExpression.clone(); + if (this.hyperlinkPageExpression != null) + clone.hyperlinkPageExpression = (JRExpression)this.hyperlinkPageExpression.clone(); + if (this.hyperlinkTooltipExpression != null) + clone.hyperlinkTooltipExpression = (JRExpression)this.hyperlinkTooltipExpression.clone(); + if (this.dataset != null) + clone.dataset = (JRChartDataset)this.dataset.clone(); + if (this.plot != null) + clone.plot = (JRChartPlot)this.plot.clone(clone); + return clone; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + normalizeLinkType(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartDataset.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartDataset.java new file mode 100644 index 0000000..704c22c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartDataset.java @@ -0,0 +1,18 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRElementDataset; + +public abstract class JRBaseChartDataset extends JRBaseElementDataset implements JRChartDataset { + private static final long serialVersionUID = 10200L; + + protected JRBaseChartDataset() {} + + protected JRBaseChartDataset(JRChartDataset dataset) { + super((JRElementDataset)dataset); + } + + protected JRBaseChartDataset(JRChartDataset dataset, JRBaseObjectFactory factory) { + super((JRElementDataset)dataset, factory); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartPlot.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartPlot.java new file mode 100644 index 0000000..2522801 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseChartPlot.java @@ -0,0 +1,211 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.Serializable; +import java.util.Collection; +import java.util.Iterator; +import java.util.SortedSet; +import java.util.TreeSet; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import org.jfree.chart.plot.PlotOrientation; + +public abstract class JRBaseChartPlot implements JRChartPlot, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_BACKCOLOR = "backcolor"; + + public static final String PROPERTY_BACKGROUND_ALPHA = "backgroundAlpha"; + + public static final String PROPERTY_FOREGROUND_ALPHA = "foregroundAlpha"; + + public static final String PROPERTY_LABEL_ROTATION = "labelRotation"; + + public static final String PROPERTY_ORIENTATION = "orientation"; + + public static final String PROPERTY_SERIES_COLORS = "seriesColors"; + + protected JRChart chart = null; + + protected Color backcolor = null; + + protected PlotOrientation orientation = PlotOrientation.VERTICAL; + + protected float backgroundAlpha = 1.0F; + + protected float foregroundAlpha = 1.0F; + + protected double labelRotation = 0.0D; + + protected SortedSet seriesColors = null; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseChartPlot(JRChartPlot plot, JRChart chart) { + this.chart = chart; + if (plot != null) { + this.backcolor = plot.getOwnBackcolor(); + this.orientation = plot.getOrientation(); + this.backgroundAlpha = plot.getBackgroundAlpha(); + this.foregroundAlpha = plot.getForegroundAlpha(); + this.labelRotation = plot.getLabelRotation(); + this.seriesColors = new TreeSet(plot.getSeriesColors()); + } else { + this.seriesColors = new TreeSet(); + } + } + + protected JRBaseChartPlot(JRChartPlot plot, JRBaseObjectFactory factory) { + factory.put(plot, this); + this.chart = (JRChart)factory.getVisitResult((JRVisitable)plot.getChart()); + this.backcolor = plot.getOwnBackcolor(); + this.orientation = plot.getOrientation(); + this.backgroundAlpha = plot.getBackgroundAlpha(); + this.foregroundAlpha = plot.getForegroundAlpha(); + this.labelRotation = plot.getLabelRotation(); + this.seriesColors = new TreeSet(plot.getSeriesColors()); + } + + public JRChart getChart() { + return this.chart; + } + + public Color getBackcolor() { + return JRStyleResolver.getBackcolor(this); + } + + public Color getOwnBackcolor() { + return this.backcolor; + } + + public void setBackcolor(Color backcolor) { + Object old = this.backcolor; + this.backcolor = backcolor; + getEventSupport().firePropertyChange("backcolor", old, this.backcolor); + } + + public PlotOrientation getOrientation() { + return this.orientation; + } + + public void setOrientation(PlotOrientation orientation) { + Object old = this.orientation; + this.orientation = orientation; + getEventSupport().firePropertyChange("orientation", old, this.orientation); + } + + public float getBackgroundAlpha() { + return this.backgroundAlpha; + } + + public void setBackgroundAlpha(float backgroundAlpha) { + float old = this.backgroundAlpha; + this.backgroundAlpha = backgroundAlpha; + getEventSupport().firePropertyChange("backgroundAlpha", old, this.backgroundAlpha); + } + + public float getForegroundAlpha() { + return this.foregroundAlpha; + } + + public void setForegroundAlpha(float foregroundAlpha) { + float old = this.foregroundAlpha; + this.foregroundAlpha = foregroundAlpha; + getEventSupport().firePropertyChange("foregroundAlpha", old, this.foregroundAlpha); + } + + public double getLabelRotation() { + return this.labelRotation; + } + + public void setLabelRotation(double labelRotation) { + double old = this.labelRotation; + this.labelRotation = labelRotation; + getEventSupport().firePropertyChange("labelRotation", old, this.labelRotation); + } + + public SortedSet getSeriesColors() { + return this.seriesColors; + } + + public void clearSeriesColors() { + setSeriesColors(null); + } + + public void addSeriesColor(JRChartPlot.JRSeriesColor seriesColor) { + this.seriesColors.add(seriesColor); + getEventSupport().fireCollectionElementAddedEvent("seriesColors", seriesColor, this.seriesColors.size() - 1); + } + + public void setSeriesColors(Collection colors) { + Object old = new TreeSet(this.seriesColors); + this.seriesColors.clear(); + if (colors != null) + this.seriesColors.addAll(colors); + getEventSupport().firePropertyChange("seriesColors", old, this.seriesColors); + } + + public static class JRBaseSeriesColor implements JRChartPlot.JRSeriesColor, Serializable, Comparable { + private static final long serialVersionUID = 10200L; + + protected int seriesOrder = -1; + + protected Color color = null; + + public JRBaseSeriesColor(int seriesOrder, Color color) { + this.seriesOrder = seriesOrder; + this.color = color; + } + + public int getSeriesOrder() { + return this.seriesOrder; + } + + public Color getColor() { + return this.color; + } + + public int compareTo(Object obj) { + if (obj == null) + throw new NullPointerException(); + return this.seriesOrder - ((JRBaseSeriesColor)obj).getSeriesOrder(); + } + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } + } + + public Object clone(JRChart parentChart) { + JRBaseChartPlot clone = null; + try { + clone = (JRBaseChartPlot)clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + clone.chart = parentChart; + if (this.seriesColors != null) { + clone.seriesColors = new TreeSet(); + for (Iterator it = this.seriesColors.iterator(); it.hasNext();) + clone.seriesColors.add(((JRChartPlot.JRSeriesColor)it.next()).clone()); + } + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseConditionalStyle.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseConditionalStyle.java new file mode 100644 index 0000000..36194ed --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseConditionalStyle.java @@ -0,0 +1,48 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRAbstractObjectFactory; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRConditionalStyle; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.JRStyle; + +public class JRBaseConditionalStyle extends JRBaseStyle implements JRConditionalStyle { + private static final long serialVersionUID = 10200L; + + protected JRExpression conditionExpression = null; + + public JRBaseConditionalStyle() {} + + public JRBaseConditionalStyle(JRConditionalStyle style, JRStyle parentStyle, JRAbstractObjectFactory factory) { + this.parentStyle = parentStyle; + this.mode = style.getOwnMode(); + this.forecolor = style.getOwnForecolor(); + this.backcolor = style.getOwnBackcolor(); + this.linePen = style.getLinePen().clone((JRPenContainer)this); + this.fill = style.getOwnFill(); + this.radius = style.getOwnRadius(); + this.scaleImage = style.getOwnScaleImage(); + this.horizontalAlignment = style.getOwnHorizontalAlignment(); + this.verticalAlignment = style.getOwnVerticalAlignment(); + this.lineBox = style.getLineBox().clone((JRBoxContainer)this); + this.rotation = style.getOwnRotation(); + this.lineSpacing = style.getOwnLineSpacing(); + this.markup = style.getOwnMarkup(); + this.pattern = style.getOwnPattern(); + this.fontName = style.getOwnFontName(); + this.isBold = style.isOwnBold(); + this.isItalic = style.isOwnItalic(); + this.isUnderline = style.isOwnUnderline(); + this.isStrikeThrough = style.isOwnStrikeThrough(); + this.fontSize = style.getOwnFontSize(); + this.pdfFontName = style.getOwnPdfFontName(); + this.pdfEncoding = style.getOwnPdfEncoding(); + this.isPdfEmbedded = style.isOwnPdfEmbedded(); + this.conditionExpression = factory.getExpression(style.getConditionExpression(), true); + } + + public JRExpression getConditionExpression() { + return this.conditionExpression; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDataset.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDataset.java new file mode 100644 index 0000000..3cdc567 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDataset.java @@ -0,0 +1,212 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRBaseDataset implements JRDataset, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_WHEN_RESOURCE_MISSING_TYPE = "whenResourceMissingType"; + + protected final boolean isMain; + + protected String name = null; + + protected String scriptletClass = null; + + protected JRParameter[] parameters = null; + + protected JRQuery query = null; + + protected JRField[] fields = null; + + protected JRSortField[] sortFields = null; + + protected JRVariable[] variables = null; + + protected JRGroup[] groups = null; + + protected String resourceBundle = null; + + protected byte whenResourceMissingType = 1; + + protected JRPropertiesMap propertiesMap; + + protected JRExpression filterExpression; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseDataset(boolean isMain) { + this.isMain = isMain; + this.propertiesMap = new JRPropertiesMap(); + } + + protected JRBaseDataset(JRDataset dataset, JRBaseObjectFactory factory) { + factory.put(dataset, this); + this.name = dataset.getName(); + this.scriptletClass = dataset.getScriptletClass(); + this.resourceBundle = dataset.getResourceBundle(); + this.whenResourceMissingType = dataset.getWhenResourceMissingType(); + this.propertiesMap = dataset.getPropertiesMap().cloneProperties(); + this.query = factory.getQuery(dataset.getQuery()); + this.isMain = dataset.isMainDataset(); + JRParameter[] jrParameters = dataset.getParameters(); + if (jrParameters != null && jrParameters.length > 0) { + this.parameters = new JRParameter[jrParameters.length]; + for (int i = 0; i < this.parameters.length; i++) + this.parameters[i] = factory.getParameter(jrParameters[i]); + } + JRField[] jrFields = dataset.getFields(); + if (jrFields != null && jrFields.length > 0) { + this.fields = new JRField[jrFields.length]; + for (int i = 0; i < this.fields.length; i++) + this.fields[i] = factory.getField(jrFields[i]); + } + JRSortField[] jrSortFields = dataset.getSortFields(); + if (jrSortFields != null && jrSortFields.length > 0) { + this.sortFields = new JRSortField[jrSortFields.length]; + for (int i = 0; i < this.sortFields.length; i++) + this.sortFields[i] = factory.getSortField(jrSortFields[i]); + } + JRVariable[] jrVariables = dataset.getVariables(); + if (jrVariables != null && jrVariables.length > 0) { + this.variables = new JRVariable[jrVariables.length]; + for (int i = 0; i < this.variables.length; i++) + this.variables[i] = factory.getVariable(jrVariables[i]); + } + JRGroup[] jrGroups = dataset.getGroups(); + if (jrGroups != null && jrGroups.length > 0) { + this.groups = new JRGroup[jrGroups.length]; + for (int i = 0; i < this.groups.length; i++) + this.groups[i] = factory.getGroup(jrGroups[i]); + } + this.filterExpression = factory.getExpression(dataset.getFilterExpression()); + } + + public String getName() { + return this.name; + } + + public String getScriptletClass() { + return this.scriptletClass; + } + + public JRQuery getQuery() { + return this.query; + } + + public JRParameter[] getParameters() { + return this.parameters; + } + + public JRField[] getFields() { + return this.fields; + } + + public JRSortField[] getSortFields() { + return this.sortFields; + } + + public JRVariable[] getVariables() { + return this.variables; + } + + public JRGroup[] getGroups() { + return this.groups; + } + + public boolean isMainDataset() { + return this.isMain; + } + + public String getResourceBundle() { + return this.resourceBundle; + } + + public byte getWhenResourceMissingType() { + return this.whenResourceMissingType; + } + + public void setWhenResourceMissingType(byte whenResourceMissingType) { + byte old = this.whenResourceMissingType; + this.whenResourceMissingType = whenResourceMissingType; + getEventSupport().firePropertyChange("whenResourceMissingType", old, this.whenResourceMissingType); + } + + public boolean hasProperties() { + return (this.propertiesMap != null && this.propertiesMap.hasProperties()); + } + + public JRPropertiesMap getPropertiesMap() { + return this.propertiesMap; + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public JRExpression getFilterExpression() { + return this.filterExpression; + } + + public Object clone() { + JRBaseDataset clone = null; + try { + clone = (JRBaseDataset)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.query != null) + clone.query = (JRQuery)this.query.clone(); + if (this.filterExpression != null) + clone.filterExpression = (JRExpression)this.filterExpression.clone(); + if (this.propertiesMap != null) + clone.propertiesMap = (JRPropertiesMap)this.propertiesMap.clone(); + if (this.parameters != null) { + clone.parameters = new JRParameter[this.parameters.length]; + for (int i = 0; i < this.parameters.length; i++) + clone.parameters[i] = (JRParameter)this.parameters[i].clone(); + } + if (this.fields != null) { + clone.fields = new JRField[this.fields.length]; + for (int i = 0; i < this.fields.length; i++) + clone.fields[i] = (JRField)this.fields[i].clone(); + } + if (this.sortFields != null) { + clone.sortFields = new JRSortField[this.sortFields.length]; + for (int i = 0; i < this.sortFields.length; i++) + clone.sortFields[i] = (JRSortField)this.sortFields[i].clone(); + } + if (this.variables != null) { + clone.variables = new JRVariable[this.variables.length]; + for (int i = 0; i < this.variables.length; i++) + clone.variables[i] = (JRVariable)this.variables[i].clone(); + } + if (this.groups != null) { + clone.groups = new JRGroup[this.groups.length]; + for (int i = 0; i < this.groups.length; i++) + clone.groups[i] = (JRGroup)this.groups[i].clone(); + } + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetParameter.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetParameter.java new file mode 100644 index 0000000..fcb9565 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetParameter.java @@ -0,0 +1,38 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRBaseDatasetParameter implements JRDatasetParameter, Serializable { + private static final long serialVersionUID = 10200L; + + protected String name = null; + + protected JRExpression expression = null; + + protected JRBaseDatasetParameter() {} + + protected JRBaseDatasetParameter(JRDatasetParameter datasetParameter, JRBaseObjectFactory factory) { + factory.put(datasetParameter, this); + this.name = datasetParameter.getName(); + this.expression = factory.getExpression(datasetParameter.getExpression()); + } + + public String getName() { + return this.name; + } + + public JRExpression getExpression() { + return this.expression; + } + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetRun.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetRun.java new file mode 100644 index 0000000..ec31f38 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseDatasetRun.java @@ -0,0 +1,78 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRBaseDatasetRun implements JRDatasetRun, Serializable { + private static final long serialVersionUID = 10200L; + + protected String datasetName; + + protected JRExpression parametersMapExpression; + + protected JRDatasetParameter[] parameters; + + protected JRExpression connectionExpression; + + protected JRExpression dataSourceExpression; + + protected JRBaseDatasetRun() {} + + protected JRBaseDatasetRun(JRDatasetRun datasetRun, JRBaseObjectFactory factory) { + factory.put(datasetRun, this); + this.datasetName = datasetRun.getDatasetName(); + this.parametersMapExpression = factory.getExpression(datasetRun.getParametersMapExpression()); + this.connectionExpression = factory.getExpression(datasetRun.getConnectionExpression()); + this.dataSourceExpression = factory.getExpression(datasetRun.getDataSourceExpression()); + JRDatasetParameter[] datasetParams = datasetRun.getParameters(); + if (datasetParams != null && datasetParams.length > 0) { + this.parameters = (JRDatasetParameter[])new JRBaseDatasetParameter[datasetParams.length]; + for (int i = 0; i < this.parameters.length; i++) + this.parameters[i] = factory.getDatasetParameter(datasetParams[i]); + } + } + + public String getDatasetName() { + return this.datasetName; + } + + public JRExpression getParametersMapExpression() { + return this.parametersMapExpression; + } + + public JRDatasetParameter[] getParameters() { + return this.parameters; + } + + public JRExpression getConnectionExpression() { + return this.connectionExpression; + } + + public JRExpression getDataSourceExpression() { + return this.dataSourceExpression; + } + + public Object clone() { + JRBaseDatasetRun clone = null; + try { + clone = (JRBaseDatasetRun)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.parametersMapExpression != null) + clone.parametersMapExpression = (JRExpression)this.parametersMapExpression.clone(); + if (this.connectionExpression != null) + clone.connectionExpression = (JRExpression)this.connectionExpression.clone(); + if (this.dataSourceExpression != null) + clone.dataSourceExpression = (JRExpression)this.dataSourceExpression.clone(); + if (this.parameters != null) { + clone.parameters = new JRDatasetParameter[this.parameters.length]; + for (int i = 0; i < this.parameters.length; i++) + clone.parameters[i] = (JRDatasetParameter)this.parameters[i].clone(); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElement.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElement.java new file mode 100644 index 0000000..a696fb6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElement.java @@ -0,0 +1,338 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRBaseElement implements JRElement, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_POSITION_TYPE = "positionType"; + + public static final String PROPERTY_PRINT_IN_FIRST_WHOLE_BAND = "isPrintInFirstWholeBand"; + + public static final String PROPERTY_PRINT_REPEATED_VALUES = "isPrintRepeatedValues"; + + public static final String PROPERTY_PRINT_WHEN_DETAIL_OVERFLOWS = "isPrintWhenDetailOverflows"; + + public static final String PROPERTY_REMOVE_LINE_WHEN_BLANK = "isRemoveLineWhenBlank"; + + public static final String PROPERTY_STRETCH_TYPE = "stretchType"; + + public static final String PROPERTY_WIDTH = "width"; + + public static final String PROPERTY_X = "x"; + + protected String key = null; + + protected byte positionType; + + protected byte stretchType; + + protected boolean isPrintRepeatedValues = true; + + protected Byte mode; + + protected int x = 0; + + protected int y = 0; + + protected int width = 0; + + protected int height = 0; + + protected boolean isRemoveLineWhenBlank = false; + + protected boolean isPrintInFirstWholeBand = false; + + protected boolean isPrintWhenDetailOverflows = false; + + protected Color forecolor = null; + + protected Color backcolor = null; + + protected JRExpression printWhenExpression = null; + + protected JRGroup printWhenGroupChanges = null; + + protected JRElementGroup elementGroup = null; + + protected JRDefaultStyleProvider defaultStyleProvider; + + protected JRStyle parentStyle; + + protected String parentStyleNameReference; + + private JRPropertiesMap propertiesMap; + + private JRPropertyExpression[] propertyExpressions; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseElement(JRDefaultStyleProvider defaultStyleProvider) { + this.defaultStyleProvider = defaultStyleProvider; + } + + protected JRBaseElement(JRElement element, JRBaseObjectFactory factory) { + factory.put(element, this); + this.defaultStyleProvider = factory.getDefaultStyleProvider(); + this.parentStyle = factory.getStyle(element.getStyle()); + this.parentStyleNameReference = element.getStyleNameReference(); + this.key = element.getKey(); + this.positionType = element.getPositionType(); + this.stretchType = element.getStretchType(); + this.isPrintRepeatedValues = element.isPrintRepeatedValues(); + this.mode = element.getOwnMode(); + this.x = element.getX(); + this.y = element.getY(); + this.width = element.getWidth(); + this.height = element.getHeight(); + this.isRemoveLineWhenBlank = element.isRemoveLineWhenBlank(); + this.isPrintInFirstWholeBand = element.isPrintInFirstWholeBand(); + this.isPrintWhenDetailOverflows = element.isPrintWhenDetailOverflows(); + this.forecolor = element.getOwnForecolor(); + this.backcolor = element.getOwnBackcolor(); + this.printWhenExpression = factory.getExpression(element.getPrintWhenExpression()); + this.printWhenGroupChanges = factory.getGroup(element.getPrintWhenGroupChanges()); + this.elementGroup = (JRElementGroup)factory.getVisitResult((JRVisitable)element.getElementGroup()); + this.propertiesMap = JRPropertiesMap.getPropertiesClone((JRPropertiesHolder)element); + copyPropertyExpressions(element, factory); + } + + private void copyPropertyExpressions(JRElement element, JRBaseObjectFactory factory) { + JRPropertyExpression[] props = element.getPropertyExpressions(); + if (props != null && props.length > 0) { + this.propertyExpressions = new JRPropertyExpression[props.length]; + for (int i = 0; i < props.length; i++) + this.propertyExpressions[i] = factory.getPropertyExpression(props[i]); + } + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + protected JRStyle getBaseStyle() { + if (this.parentStyle != null) + return this.parentStyle; + if (this.defaultStyleProvider != null) + return this.defaultStyleProvider.getDefaultStyle(); + return null; + } + + public String getKey() { + return this.key; + } + + public byte getPositionType() { + return this.positionType; + } + + public void setPositionType(byte positionType) { + byte old = this.positionType; + this.positionType = positionType; + getEventSupport().firePropertyChange("positionType", old, this.positionType); + } + + public byte getStretchType() { + return this.stretchType; + } + + public void setStretchType(byte stretchType) { + byte old = this.stretchType; + this.stretchType = stretchType; + getEventSupport().firePropertyChange("stretchType", old, this.stretchType); + } + + public boolean isPrintRepeatedValues() { + return this.isPrintRepeatedValues; + } + + public void setPrintRepeatedValues(boolean isPrintRepeatedValues) { + boolean old = this.isPrintRepeatedValues; + this.isPrintRepeatedValues = isPrintRepeatedValues; + getEventSupport().firePropertyChange("isPrintRepeatedValues", old, this.isPrintRepeatedValues); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)1); + } + + public Byte getOwnMode() { + return this.mode; + } + + public void setMode(byte mode) { + setMode(new Byte(mode)); + } + + public void setMode(Byte mode) { + Object old = this.mode; + this.mode = mode; + getEventSupport().firePropertyChange("mode", old, this.mode); + } + + public int getX() { + return this.x; + } + + public void setX(int x) { + int old = this.x; + this.x = x; + getEventSupport().firePropertyChange("x", old, this.x); + } + + public int getY() { + return this.y; + } + + public int getWidth() { + return this.width; + } + + public void setWidth(int width) { + int old = this.width; + this.width = width; + getEventSupport().firePropertyChange("width", old, this.width); + } + + public int getHeight() { + return this.height; + } + + public boolean isRemoveLineWhenBlank() { + return this.isRemoveLineWhenBlank; + } + + public void setRemoveLineWhenBlank(boolean isRemoveLine) { + boolean old = this.isRemoveLineWhenBlank; + this.isRemoveLineWhenBlank = isRemoveLine; + getEventSupport().firePropertyChange("isRemoveLineWhenBlank", old, this.isRemoveLineWhenBlank); + } + + public boolean isPrintInFirstWholeBand() { + return this.isPrintInFirstWholeBand; + } + + public void setPrintInFirstWholeBand(boolean isPrint) { + boolean old = this.isPrintInFirstWholeBand; + this.isPrintInFirstWholeBand = isPrint; + getEventSupport().firePropertyChange("isPrintInFirstWholeBand", old, this.isPrintInFirstWholeBand); + } + + public boolean isPrintWhenDetailOverflows() { + return this.isPrintWhenDetailOverflows; + } + + public void setPrintWhenDetailOverflows(boolean isPrint) { + boolean old = this.isPrintWhenDetailOverflows; + this.isPrintWhenDetailOverflows = isPrint; + getEventSupport().firePropertyChange("isPrintWhenDetailOverflows", old, this.isPrintWhenDetailOverflows); + } + + public Color getForecolor() { + return JRStyleResolver.getForecolor((JRCommonElement)this); + } + + public Color getOwnForecolor() { + return this.forecolor; + } + + public void setForecolor(Color forecolor) { + Object old = this.forecolor; + this.forecolor = forecolor; + getEventSupport().firePropertyChange("forecolor", old, this.forecolor); + } + + public Color getBackcolor() { + return JRStyleResolver.getBackcolor((JRCommonElement)this); + } + + public Color getOwnBackcolor() { + return this.backcolor; + } + + public void setBackcolor(Color backcolor) { + Object old = this.backcolor; + this.backcolor = backcolor; + getEventSupport().firePropertyChange("backcolor", old, this.backcolor); + } + + public JRExpression getPrintWhenExpression() { + return this.printWhenExpression; + } + + public JRGroup getPrintWhenGroupChanges() { + return this.printWhenGroupChanges; + } + + public JRElementGroup getElementGroup() { + return this.elementGroup; + } + + public JRStyle getStyle() { + return this.parentStyle; + } + + public String getStyleNameReference() { + return this.parentStyleNameReference; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } + + public Object clone() { + JRBaseElement clone = null; + try { + clone = (JRBaseElement)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.printWhenExpression != null) + clone.printWhenExpression = (JRExpression)this.printWhenExpression.clone(); + return clone; + } + + public Object clone(JRElementGroup parentGroup) { + JRBaseElement clone = (JRBaseElement)clone(); + clone.elementGroup = parentGroup; + return clone; + } + + public boolean hasProperties() { + return (this.propertiesMap != null && this.propertiesMap.hasProperties()); + } + + public JRPropertiesMap getPropertiesMap() { + if (this.propertiesMap == null) + this.propertiesMap = new JRPropertiesMap(); + return this.propertiesMap; + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public JRPropertyExpression[] getPropertyExpressions() { + return this.propertyExpressions; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementDataset.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementDataset.java new file mode 100644 index 0000000..712ae4f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementDataset.java @@ -0,0 +1,85 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRRuntimeException; + +public abstract class JRBaseElementDataset implements JRElementDataset, Serializable { + private static final long serialVersionUID = 10200L; + + protected byte resetType = 1; + + protected byte incrementType = 5; + + protected JRGroup resetGroup = null; + + protected JRGroup incrementGroup = null; + + protected JRDatasetRun datasetRun; + + protected JRExpression incrementWhenExpression; + + protected JRBaseElementDataset() {} + + protected JRBaseElementDataset(JRElementDataset dataset) { + if (dataset != null) { + this.resetType = dataset.getResetType(); + this.incrementType = dataset.getIncrementType(); + this.resetGroup = dataset.getResetGroup(); + this.incrementGroup = dataset.getIncrementGroup(); + this.datasetRun = dataset.getDatasetRun(); + this.incrementWhenExpression = dataset.getIncrementWhenExpression(); + } + } + + protected JRBaseElementDataset(JRElementDataset dataset, JRBaseObjectFactory factory) { + factory.put(dataset, this); + this.resetType = dataset.getResetType(); + this.incrementType = dataset.getIncrementType(); + this.resetGroup = factory.getGroup(dataset.getResetGroup()); + this.incrementGroup = factory.getGroup(dataset.getIncrementGroup()); + this.datasetRun = factory.getDatasetRun(dataset.getDatasetRun()); + this.incrementWhenExpression = factory.getExpression(dataset.getIncrementWhenExpression()); + } + + public byte getResetType() { + return this.resetType; + } + + public byte getIncrementType() { + return this.incrementType; + } + + public JRGroup getResetGroup() { + return this.resetGroup; + } + + public JRGroup getIncrementGroup() { + return this.incrementGroup; + } + + public JRDatasetRun getDatasetRun() { + return this.datasetRun; + } + + public JRExpression getIncrementWhenExpression() { + return this.incrementWhenExpression; + } + + public Object clone() { + JRBaseElementDataset clone = null; + try { + clone = (JRBaseElementDataset)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.incrementWhenExpression != null) + clone.incrementWhenExpression = (JRExpression)this.incrementWhenExpression.clone(); + if (this.datasetRun != null) + clone.datasetRun = (JRDatasetRun)this.datasetRun.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementGroup.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementGroup.java new file mode 100644 index 0000000..30a48f7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementGroup.java @@ -0,0 +1,119 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.engine.JRChild; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRBaseElementGroup implements JRElementGroup, Serializable { + private static final long serialVersionUID = 10200L; + + protected List children = new ArrayList(); + + protected JRElementGroup elementGroup = null; + + protected JRBaseElementGroup() {} + + protected JRBaseElementGroup(JRElementGroup elementGrp, JRBaseObjectFactory factory) { + factory.put(elementGrp, this); + List list = elementGrp.getChildren(); + if (list != null && list.size() > 0) + for (int i = 0; i < list.size(); i++) { + JRChild child = list.get(i); + child = (JRChild)factory.getVisitResult((JRVisitable)child); + this.children.add(child); + } + this.elementGroup = (JRElementGroup)factory.getVisitResult((JRVisitable)elementGrp.getElementGroup()); + } + + public List getChildren() { + return this.children; + } + + public JRElementGroup getElementGroup() { + return this.elementGroup; + } + + public static JRElement[] getElements(List children) { + JRElement[] elements = null; + if (children != null) { + List allElements = new ArrayList(); + Object child = null; + JRElement[] childElementArray = null; + for (int i = 0; i < children.size(); i++) { + child = children.get(i); + if (child instanceof JRElement) { + allElements.add(child); + } else if (child instanceof JRElementGroup) { + childElementArray = ((JRElementGroup)child).getElements(); + if (childElementArray != null) + allElements.addAll(Arrays.asList((Object[])childElementArray)); + } + } + elements = new JRElement[allElements.size()]; + allElements.toArray(elements); + } + return elements; + } + + public JRElement[] getElements() { + return getElements(this.children); + } + + public static JRElement getElementByKey(JRElement[] elements, String key) { + JRElement element = null; + if (key != null) + if (elements != null) { + int i = 0; + while (element == null && i < elements.length) { + JRElement elem = elements[i]; + if (key.equals(elem.getKey())) { + element = elem; + } else if (elem instanceof JRFrame) { + element = ((JRFrame)elem).getElementByKey(key); + } else if (elem instanceof JRCrosstab) { + element = ((JRCrosstab)elem).getElementByKey(key); + } + i++; + } + } + return element; + } + + public JRElement getElementByKey(String key) { + return getElementByKey(getElements(), key); + } + + public void visit(JRVisitor visitor) { + visitor.visitElementGroup(this); + } + + public Object clone() { + JRBaseElementGroup clone = null; + try { + clone = (JRBaseElementGroup)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.children != null) { + clone.children = new ArrayList(this.children.size()); + for (int i = 0; i < this.children.size(); i++) + clone.children.add(((JRChild)this.children.get(i)).clone(clone)); + } + return clone; + } + + public Object clone(JRElementGroup parentGroup) { + JRBaseElementGroup clone = (JRBaseElementGroup)clone(); + clone.elementGroup = parentGroup; + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseEllipse.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseEllipse.java new file mode 100644 index 0000000..ea46801 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseEllipse.java @@ -0,0 +1,22 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRBaseEllipse extends JRBaseGraphicElement implements JREllipse { + private static final long serialVersionUID = 10200L; + + protected JRBaseEllipse(JREllipse ellipse, JRBaseObjectFactory factory) { + super((JRGraphicElement)ellipse, factory); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitEllipse(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpression.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpression.java new file mode 100644 index 0000000..ae6f384 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpression.java @@ -0,0 +1,157 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import java.util.StringTokenizer; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.util.JRClassLoader; + +public class JRBaseExpression implements JRExpression, Serializable { + private static final long serialVersionUID = 10200L; + + protected String valueClassName = null; + + protected String valueClassRealName = null; + + protected int id = 0; + + protected transient Class valueClass = null; + + private JRExpressionChunk[] chunks = null; + + private static int lastId = 0; + + protected JRBaseExpression() {} + + protected JRBaseExpression(JRExpression expression, JRBaseObjectFactory factory, Integer expressionId) { + factory.put(expression, this); + this.valueClassName = expression.getValueClassName(); + if (expressionId == null) { + this.id = expression.getId(); + } else { + this.id = expressionId.intValue(); + } + JRExpressionChunk[] jrChunks = expression.getChunks(); + if (jrChunks != null && jrChunks.length > 0) { + this.chunks = new JRExpressionChunk[jrChunks.length]; + for (int i = 0; i < this.chunks.length; i++) + this.chunks[i] = factory.getExpressionChunk(jrChunks[i]); + } + } + + protected JRBaseExpression(JRExpression expression, JRBaseObjectFactory factory) { + this(expression, factory, null); + } + + private static synchronized int getNextId() { + return lastId++; + } + + public void regenerateId() { + this.id = getNextId(); + } + + public Class getValueClass() { + if (this.valueClass == null) { + String className = getValueClassRealName(); + if (className != null) + try { + this.valueClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException(e); + } + } + return this.valueClass; + } + + public String getValueClassName() { + return this.valueClassName; + } + + private String getValueClassRealName() { + if (this.valueClassRealName == null) + this.valueClassRealName = JRClassLoader.getClassRealName(this.valueClassName); + return this.valueClassRealName; + } + + public int getId() { + return this.id; + } + + public JRExpressionChunk[] getChunks() { + return this.chunks; + } + + public String getText() { + String text = ""; + this.chunks = getChunks(); + if (this.chunks != null && this.chunks.length > 0) { + StringBuffer sbuffer = new StringBuffer(); + for (int i = 0; i < this.chunks.length; i++) { + String textChunk; + String escapedText; + switch (this.chunks[i].getType()) { + case 2: + sbuffer.append("$P{"); + sbuffer.append(this.chunks[i].getText()); + sbuffer.append("}"); + break; + case 3: + sbuffer.append("$F{"); + sbuffer.append(this.chunks[i].getText()); + sbuffer.append("}"); + break; + case 4: + sbuffer.append("$V{"); + sbuffer.append(this.chunks[i].getText()); + sbuffer.append("}"); + break; + case 5: + sbuffer.append("$R{"); + sbuffer.append(this.chunks[i].getText()); + sbuffer.append("}"); + break; + default: + textChunk = this.chunks[i].getText(); + escapedText = escapeTextChunk(textChunk); + sbuffer.append(escapedText); + break; + } + } + text = sbuffer.toString(); + } + return text; + } + + protected String escapeTextChunk(String text) { + if (text == null || text.indexOf('$') < 0) + return text; + StringBuffer sb = new StringBuffer(text.length() + 4); + StringTokenizer tkzer = new StringTokenizer(text, "$", true); + boolean wasDelim = false; + while (tkzer.hasMoreElements()) { + String token = tkzer.nextToken(); + if (wasDelim && (token.startsWith("P{") || token.startsWith("F{") || token.startsWith("V{") || token.startsWith("R{")) && token.indexOf('}') > 0) + sb.append('$'); + sb.append(token); + wasDelim = token.equals("$"); + } + return sb.toString(); + } + + public Object clone() { + JRBaseExpression clone = null; + try { + clone = (JRBaseExpression)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.chunks != null) { + clone.chunks = new JRExpressionChunk[this.chunks.length]; + for (int i = 0; i < this.chunks.length; i++) + clone.chunks[i] = (JRExpressionChunk)this.chunks[i].clone(); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpressionChunk.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpressionChunk.java new file mode 100644 index 0000000..2dfb465 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseExpressionChunk.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRBaseExpressionChunk implements JRExpressionChunk, Serializable { + private static final long serialVersionUID = 10200L; + + protected byte type = 1; + + protected String text = null; + + protected JRBaseExpressionChunk() {} + + protected JRBaseExpressionChunk(JRExpressionChunk queryChunk, JRBaseObjectFactory factory) { + factory.put(queryChunk, this); + this.type = queryChunk.getType(); + this.text = queryChunk.getText(); + } + + public byte getType() { + return this.type; + } + + public String getText() { + return this.text; + } + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseField.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseField.java new file mode 100644 index 0000000..4a6c020 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseField.java @@ -0,0 +1,111 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRClassLoader; + +public class JRBaseField implements JRField, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DESCRIPTION = "description"; + + protected String name = null; + + protected String description = null; + + protected String valueClassName = String.class.getName(); + + protected String valueClassRealName = null; + + protected transient Class valueClass = null; + + protected JRPropertiesMap propertiesMap; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseField() { + this.propertiesMap = new JRPropertiesMap(); + } + + protected JRBaseField(JRField field, JRBaseObjectFactory factory) { + factory.put(field, this); + this.name = field.getName(); + this.description = field.getDescription(); + this.valueClassName = field.getValueClassName(); + this.propertiesMap = field.getPropertiesMap().cloneProperties(); + } + + public String getName() { + return this.name; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + Object old = this.description; + this.description = description; + getEventSupport().firePropertyChange("description", old, this.description); + } + + public Class getValueClass() { + if (this.valueClass == null) { + String className = getValueClassRealName(); + if (className != null) + try { + this.valueClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException(e); + } + } + return this.valueClass; + } + + public String getValueClassName() { + return this.valueClassName; + } + + private String getValueClassRealName() { + if (this.valueClassRealName == null) + this.valueClassRealName = JRClassLoader.getClassRealName(this.valueClassName); + return this.valueClassRealName; + } + + public boolean hasProperties() { + return (this.propertiesMap != null && this.propertiesMap.hasProperties()); + } + + public JRPropertiesMap getPropertiesMap() { + return this.propertiesMap; + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public Object clone() { + JRBaseField clone = null; + try { + clone = (JRBaseField)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.propertiesMap != null) + clone.propertiesMap = (JRPropertiesMap)this.propertiesMap.clone(); + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFont.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFont.java new file mode 100644 index 0000000..7a754a8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFont.java @@ -0,0 +1,322 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.font.TextAttribute; +import java.io.Serializable; +import java.util.Map; +import net.sf.jasperreports.engine.JRDefaultFontProvider; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.JRTextAttribute; + +public class JRBaseFont implements JRFont, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_BOLD = "bold"; + + public static final String PROPERTY_FONT_NAME = "fontName"; + + public static final String PROPERTY_FONT_SIZE = "fontSize"; + + public static final String PROPERTY_ITALIC = "italic"; + + public static final String PROPERTY_PDF_EMBEDDED = "pdfEmbedded"; + + public static final String PROPERTY_PDF_ENCODING = "pdfEncoding"; + + public static final String PROPERTY_PDF_FONT_NAME = "pdfFontName"; + + public static final String PROPERTY_REPORT_FONT = "reportFont"; + + public static final String PROPERTY_STRIKE_THROUGH = "strikeThrough"; + + public static final String PROPERTY_UNDERLINE = "underline"; + + protected JRDefaultFontProvider defaultFontProvider = null; + + protected JRReportFont reportFont = null; + + protected JRStyleContainer styleContainer = null; + + protected String fontName = null; + + protected Boolean isBold = null; + + protected Boolean isItalic = null; + + protected Boolean isUnderline = null; + + protected Boolean isStrikeThrough = null; + + protected Integer fontSize = null; + + protected String pdfFontName = null; + + protected String pdfEncoding = null; + + protected Boolean isPdfEmbedded = null; + + private transient JRPropertyChangeSupport eventSupport; + + public JRBaseFont() {} + + public JRBaseFont(Map attributes) { + String fontNameAttr = (String)attributes.get(TextAttribute.FAMILY); + if (fontNameAttr != null) + setFontName(fontNameAttr); + Object bold = attributes.get(TextAttribute.WEIGHT); + if (bold != null) + setBold(TextAttribute.WEIGHT_BOLD.equals(bold)); + Object italic = attributes.get(TextAttribute.POSTURE); + if (italic != null) + setItalic(TextAttribute.POSTURE_OBLIQUE.equals(italic)); + Float sizeAttr = (Float)attributes.get(TextAttribute.SIZE); + if (sizeAttr != null) + setFontSize(sizeAttr.intValue()); + Object underline = attributes.get(TextAttribute.UNDERLINE); + if (underline != null) + setUnderline(TextAttribute.UNDERLINE_ON.equals(underline)); + Object strikeThrough = attributes.get(TextAttribute.STRIKETHROUGH); + if (strikeThrough != null) + setStrikeThrough(TextAttribute.STRIKETHROUGH_ON.equals(strikeThrough)); + String pdfFontNameAttr = (String)attributes.get(JRTextAttribute.PDF_FONT_NAME); + if (pdfFontNameAttr != null) + setPdfFontName(pdfFontNameAttr); + String pdfEncodingAttr = (String)attributes.get(JRTextAttribute.PDF_ENCODING); + if (pdfEncodingAttr != null) + setPdfEncoding(pdfEncodingAttr); + Boolean isPdfEmbeddedAttr = (Boolean)attributes.get(JRTextAttribute.IS_PDF_EMBEDDED); + if (isPdfEmbeddedAttr != null) + setPdfEmbedded(isPdfEmbeddedAttr); + } + + protected JRBaseFont(JRDefaultFontProvider defaultFontProvider) { + this.defaultFontProvider = defaultFontProvider; + } + + public JRBaseFont(JRDefaultFontProvider defaultFontProvider, JRReportFont reportFont, JRFont font) { + this(defaultFontProvider, reportFont, null, font); + } + + public JRBaseFont(JRDefaultFontProvider defaultFontProvider, JRReportFont reportFont, JRStyleContainer styleContainer, JRFont font) { + this.defaultFontProvider = defaultFontProvider; + this.reportFont = reportFont; + this.styleContainer = styleContainer; + if (font != null) { + this.fontName = font.getOwnFontName(); + this.isBold = font.isOwnBold(); + this.isItalic = font.isOwnItalic(); + this.isUnderline = font.isOwnUnderline(); + this.isStrikeThrough = font.isOwnStrikeThrough(); + this.fontSize = font.getOwnFontSize(); + this.pdfFontName = font.getOwnPdfFontName(); + this.pdfEncoding = font.getOwnPdfEncoding(); + this.isPdfEmbedded = font.isOwnPdfEmbedded(); + } + } + + public JRDefaultFontProvider getDefaultFontProvider() { + return this.defaultFontProvider; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return (this.styleContainer == null) ? null : this.styleContainer.getDefaultStyleProvider(); + } + + public JRStyle getStyle() { + return (this.styleContainer == null) ? null : this.styleContainer.getStyle(); + } + + public JRReportFont getReportFont() { + return this.reportFont; + } + + public void setReportFont(JRReportFont reportFont) { + Object old = this.reportFont; + this.reportFont = reportFont; + getEventSupport().firePropertyChange("reportFont", old, this.reportFont); + } + + public String getFontName() { + return JRStyleResolver.getFontName(this); + } + + public String getOwnFontName() { + return this.fontName; + } + + public void setFontName(String fontName) { + Object old = this.fontName; + this.fontName = fontName; + getEventSupport().firePropertyChange("fontName", old, this.fontName); + } + + public boolean isBold() { + return JRStyleResolver.isBold(this); + } + + public Boolean isOwnBold() { + return this.isBold; + } + + public void setBold(boolean isBold) { + setBold(isBold ? Boolean.TRUE : Boolean.FALSE); + } + + public void setBold(Boolean isBold) { + Object old = this.isBold; + this.isBold = isBold; + getEventSupport().firePropertyChange("bold", old, this.isBold); + } + + public boolean isItalic() { + return JRStyleResolver.isItalic(this); + } + + public Boolean isOwnItalic() { + return this.isItalic; + } + + public void setItalic(boolean isItalic) { + setItalic(isItalic ? Boolean.TRUE : Boolean.FALSE); + } + + public void setItalic(Boolean isItalic) { + Object old = this.isItalic; + this.isItalic = isItalic; + getEventSupport().firePropertyChange("italic", old, this.isItalic); + } + + public boolean isUnderline() { + return JRStyleResolver.isUnderline(this); + } + + public Boolean isOwnUnderline() { + return this.isUnderline; + } + + public void setUnderline(boolean isUnderline) { + setUnderline(isUnderline ? Boolean.TRUE : Boolean.FALSE); + } + + public void setUnderline(Boolean isUnderline) { + Object old = this.isUnderline; + this.isUnderline = isUnderline; + getEventSupport().firePropertyChange("underline", old, this.isUnderline); + } + + public boolean isStrikeThrough() { + return JRStyleResolver.isStrikeThrough(this); + } + + public Boolean isOwnStrikeThrough() { + return this.isStrikeThrough; + } + + public void setStrikeThrough(boolean isStrikeThrough) { + setStrikeThrough(isStrikeThrough ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStrikeThrough(Boolean isStrikeThrough) { + Object old = this.isStrikeThrough; + this.isStrikeThrough = isStrikeThrough; + getEventSupport().firePropertyChange("strikeThrough", old, this.isStrikeThrough); + } + + public int getFontSize() { + return JRStyleResolver.getFontSize(this); + } + + public Integer getOwnFontSize() { + return this.fontSize; + } + + public void setFontSize(int fontSize) { + setFontSize(new Integer(fontSize)); + } + + public void setFontSize(Integer fontSize) { + Object old = this.fontSize; + this.fontSize = fontSize; + getEventSupport().firePropertyChange("fontSize", old, this.fontSize); + } + + public int getSize() { + return getFontSize(); + } + + public Integer getOwnSize() { + return getOwnFontSize(); + } + + public void setSize(int size) { + setFontSize(size); + } + + public void setSize(Integer size) { + setFontSize(size); + } + + public String getPdfFontName() { + return JRStyleResolver.getPdfFontName(this); + } + + public String getOwnPdfFontName() { + return this.pdfFontName; + } + + public void setPdfFontName(String pdfFontName) { + Object old = this.pdfFontName; + this.pdfFontName = pdfFontName; + getEventSupport().firePropertyChange("pdfFontName", old, this.pdfFontName); + } + + public String getPdfEncoding() { + return JRStyleResolver.getPdfEncoding(this); + } + + public String getOwnPdfEncoding() { + return this.pdfEncoding; + } + + public void setPdfEncoding(String pdfEncoding) { + Object old = this.pdfEncoding; + this.pdfEncoding = pdfEncoding; + getEventSupport().firePropertyChange("pdfEncoding", old, this.pdfEncoding); + } + + public boolean isPdfEmbedded() { + return JRStyleResolver.isPdfEmbedded(this); + } + + public Boolean isOwnPdfEmbedded() { + return this.isPdfEmbedded; + } + + public void setPdfEmbedded(boolean isPdfEmbedded) { + setPdfEmbedded(isPdfEmbedded ? Boolean.TRUE : Boolean.FALSE); + } + + public void setPdfEmbedded(Boolean isPdfEmbedded) { + Object old = this.isPdfEmbedded; + this.isPdfEmbedded = isPdfEmbedded; + getEventSupport().firePropertyChange("pdfEmbedded", old, this.isPdfEmbedded); + } + + public String getStyleNameReference() { + return (this.styleContainer == null) ? null : this.styleContainer.getStyleNameReference(); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFrame.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFrame.java new file mode 100644 index 0000000..95b1c6d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseFrame.java @@ -0,0 +1,367 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRChild; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRBaseFrame extends JRBaseElement implements JRFrame { + private static final long serialVersionUID = 10200L; + + protected List children; + + protected JRLineBox lineBox = null; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + public JRBaseFrame(JRFrame frame, JRBaseObjectFactory factory) { + super((JRElement)frame, factory); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + List frameChildren = frame.getChildren(); + if (frameChildren != null) { + this.children = new ArrayList(frameChildren.size()); + for (Iterator it = frameChildren.iterator(); it.hasNext(); ) { + JRChild child = it.next(); + this.children.add(factory.getVisitResult((JRVisitable)child)); + } + } + this.lineBox = frame.getLineBox().clone((JRBoxContainer)this); + } + + public JRElement[] getElements() { + return JRBaseElementGroup.getElements(this.children); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitFrame(this); + } + + public List getChildren() { + return this.children; + } + + public JRElement getElementByKey(String elementKey) { + return JRBaseElementGroup.getElementByKey(getElements(), elementKey); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGraphicElement.java new file mode 100644 index 0000000..96d77d7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGraphicElement.java @@ -0,0 +1,83 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRCommonGraphicElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRBaseGraphicElement extends JRBaseElement implements JRGraphicElement { + private static final long serialVersionUID = 10200L; + + protected JRPen linePen; + + protected Byte fill; + + private Byte pen; + + protected JRBaseGraphicElement(JRGraphicElement graphicElement, JRBaseObjectFactory factory) { + super((JRElement)graphicElement, factory); + this.linePen = graphicElement.getLinePen().clone((JRPenContainer)this); + this.fill = graphicElement.getOwnFill(); + } + + public JRPen getLinePen() { + return this.linePen; + } + + public byte getPen() { + return JRPenUtil.getPenFromLinePen(this.linePen); + } + + public Byte getOwnPen() { + return JRPenUtil.getOwnPenFromLinePen(this.linePen); + } + + public void setPen(byte pen) { + setPen(new Byte(pen)); + } + + public void setPen(Byte pen) { + JRPenUtil.setLinePenFromPen(pen, this.linePen); + } + + public byte getFill() { + return JRStyleResolver.getFill((JRCommonGraphicElement)this); + } + + public Byte getOwnFill() { + return this.fill; + } + + public void setFill(byte fill) { + setFill(new Byte(fill)); + } + + public void setFill(Byte fill) { + Object old = this.fill; + this.fill = fill; + getEventSupport().firePropertyChange("fill", old, this.fill); + } + + public Float getDefaultLineWidth() { + return JRPen.LINE_WIDTH_1; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.linePen == null) { + this.linePen = new JRBasePen((JRPenContainer)this); + JRPenUtil.setLinePenFromPen(this.pen, this.linePen); + this.pen = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGroup.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGroup.java new file mode 100644 index 0000000..c5d443a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseGroup.java @@ -0,0 +1,158 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRBaseGroup implements JRGroup, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_MIN_HEIGHT_TO_START_NEW_PAGE = "minHeightToStartNewPage"; + + public static final String PROPERTY_RESET_PAGE_NUMBER = "resetPageNumber"; + + public static final String PROPERTY_REPRINT_HEADER_ON_EACH_PAGE = "reprintHeaderOnEachPage"; + + public static final String PROPERTY_START_NEW_COLUMN = "startNewColumn"; + + public static final String PROPERTY_START_NEW_PAGE = "startNewPage"; + + protected String name = null; + + protected boolean isStartNewColumn = false; + + protected boolean isStartNewPage = false; + + protected boolean isResetPageNumber = false; + + protected boolean isReprintHeaderOnEachPage = false; + + protected int minHeightToStartNewPage = 0; + + protected JRExpression expression = null; + + protected JRBand groupHeader = null; + + protected JRBand groupFooter = null; + + protected JRVariable countVariable = null; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseGroup() {} + + protected JRBaseGroup(JRGroup group, JRBaseObjectFactory factory) { + factory.put(group, this); + this.name = group.getName(); + this.isStartNewColumn = group.isStartNewColumn(); + this.isStartNewPage = group.isStartNewPage(); + this.isResetPageNumber = group.isResetPageNumber(); + this.isReprintHeaderOnEachPage = group.isReprintHeaderOnEachPage(); + this.minHeightToStartNewPage = group.getMinHeightToStartNewPage(); + this.expression = factory.getExpression(group.getExpression()); + this.groupHeader = factory.getBand(group.getGroupHeader()); + this.groupFooter = factory.getBand(group.getGroupFooter()); + this.countVariable = factory.getVariable(group.getCountVariable()); + } + + public String getName() { + return this.name; + } + + public boolean isStartNewColumn() { + return this.isStartNewColumn; + } + + public void setStartNewColumn(boolean isStart) { + boolean old = this.isStartNewColumn; + this.isStartNewColumn = isStart; + getEventSupport().firePropertyChange("startNewColumn", old, this.isStartNewColumn); + } + + public boolean isStartNewPage() { + return this.isStartNewPage; + } + + public void setStartNewPage(boolean isStart) { + boolean old = this.isStartNewPage; + this.isStartNewPage = isStart; + getEventSupport().firePropertyChange("startNewPage", old, this.isStartNewPage); + } + + public boolean isResetPageNumber() { + return this.isResetPageNumber; + } + + public void setResetPageNumber(boolean isReset) { + boolean old = this.isResetPageNumber; + this.isResetPageNumber = isReset; + getEventSupport().firePropertyChange("resetPageNumber", old, this.isResetPageNumber); + } + + public boolean isReprintHeaderOnEachPage() { + return this.isReprintHeaderOnEachPage; + } + + public void setReprintHeaderOnEachPage(boolean isReprint) { + boolean old = this.isReprintHeaderOnEachPage; + this.isReprintHeaderOnEachPage = isReprint; + getEventSupport().firePropertyChange("reprintHeaderOnEachPage", old, this.isReprintHeaderOnEachPage); + } + + public int getMinHeightToStartNewPage() { + return this.minHeightToStartNewPage; + } + + public void setMinHeightToStartNewPage(int minHeight) { + int old = this.minHeightToStartNewPage; + this.minHeightToStartNewPage = minHeight; + getEventSupport().firePropertyChange("minHeightToStartNewPage", old, this.minHeightToStartNewPage); + } + + public JRExpression getExpression() { + return this.expression; + } + + public JRBand getGroupHeader() { + return this.groupHeader; + } + + public JRBand getGroupFooter() { + return this.groupFooter; + } + + public JRVariable getCountVariable() { + return this.countVariable; + } + + public Object clone() { + JRBaseGroup clone = null; + try { + clone = (JRBaseGroup)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.expression != null) + clone.expression = (JRExpression)this.expression.clone(); + if (this.groupHeader != null) + clone.groupHeader = (JRBand)this.groupHeader.clone(); + if (this.groupFooter != null) + clone.groupFooter = (JRBand)this.groupFooter.clone(); + if (this.countVariable != null) + clone.countVariable = (JRVariable)this.countVariable.clone(); + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlink.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlink.java new file mode 100644 index 0000000..37c7fde --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlink.java @@ -0,0 +1,107 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRBaseHyperlink implements JRHyperlink, Serializable { + private static final long serialVersionUID = 10200L; + + protected String linkType; + + protected byte hyperlinkTarget = 1; + + protected JRExpression hyperlinkReferenceExpression; + + protected JRExpression hyperlinkAnchorExpression; + + protected JRExpression hyperlinkPageExpression; + + protected JRExpression hyperlinkTooltipExpression; + + protected JRHyperlinkParameter[] hyperlinkParameters; + + public JRBaseHyperlink() {} + + protected JRBaseHyperlink(JRHyperlink link, JRBaseObjectFactory factory) { + factory.put(link, this); + this.linkType = link.getLinkType(); + this.hyperlinkTarget = link.getHyperlinkTarget(); + this.hyperlinkReferenceExpression = factory.getExpression(link.getHyperlinkReferenceExpression()); + this.hyperlinkAnchorExpression = factory.getExpression(link.getHyperlinkAnchorExpression()); + this.hyperlinkPageExpression = factory.getExpression(link.getHyperlinkPageExpression()); + this.hyperlinkTooltipExpression = factory.getExpression(link.getHyperlinkTooltipExpression()); + this.hyperlinkParameters = copyHyperlinkParameters(link, factory); + } + + public static JRHyperlinkParameter[] copyHyperlinkParameters(JRHyperlink link, JRBaseObjectFactory factory) { + JRHyperlinkParameter[] linkParameters = link.getHyperlinkParameters(); + JRHyperlinkParameter[] parameters = null; + if (linkParameters != null && linkParameters.length > 0) { + parameters = new JRHyperlinkParameter[linkParameters.length]; + for (int i = 0; i < linkParameters.length; i++) { + JRHyperlinkParameter parameter = linkParameters[i]; + parameters[i] = factory.getHyperlinkParameter(parameter); + } + } + return parameters; + } + + public JRExpression getHyperlinkAnchorExpression() { + return this.hyperlinkAnchorExpression; + } + + public JRExpression getHyperlinkPageExpression() { + return this.hyperlinkPageExpression; + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + return this.hyperlinkParameters; + } + + public JRExpression getHyperlinkReferenceExpression() { + return this.hyperlinkReferenceExpression; + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType(this); + } + + public String getLinkType() { + return this.linkType; + } + + public JRExpression getHyperlinkTooltipExpression() { + return this.hyperlinkTooltipExpression; + } + + public Object clone() { + JRBaseHyperlink clone = null; + try { + clone = (JRBaseHyperlink)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.hyperlinkParameters != null) { + clone.hyperlinkParameters = new JRHyperlinkParameter[this.hyperlinkParameters.length]; + for (int i = 0; i < this.hyperlinkParameters.length; i++) + clone.hyperlinkParameters[i] = (JRHyperlinkParameter)this.hyperlinkParameters[i].clone(); + } + if (this.hyperlinkReferenceExpression != null) + clone.hyperlinkReferenceExpression = (JRExpression)this.hyperlinkReferenceExpression.clone(); + if (this.hyperlinkAnchorExpression != null) + clone.hyperlinkAnchorExpression = (JRExpression)this.hyperlinkAnchorExpression.clone(); + if (this.hyperlinkPageExpression != null) + clone.hyperlinkPageExpression = (JRExpression)this.hyperlinkPageExpression.clone(); + if (this.hyperlinkTooltipExpression != null) + clone.hyperlinkTooltipExpression = (JRExpression)this.hyperlinkTooltipExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlinkParameter.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlinkParameter.java new file mode 100644 index 0000000..426be09 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseHyperlinkParameter.java @@ -0,0 +1,42 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRBaseHyperlinkParameter implements JRHyperlinkParameter, Serializable { + private static final long serialVersionUID = 10200L; + + protected String name; + + protected JRExpression valueExpression; + + protected JRBaseHyperlinkParameter() {} + + public JRBaseHyperlinkParameter(JRHyperlinkParameter parameter, JRBaseObjectFactory factory) { + factory.put(parameter, this); + this.name = parameter.getName(); + this.valueExpression = factory.getExpression(parameter.getValueExpression()); + } + + public String getName() { + return this.name; + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + public Object clone() { + JRBaseHyperlinkParameter clone = null; + try { + clone = (JRBaseHyperlinkParameter)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.valueExpression != null) + clone.valueExpression = (JRExpression)this.valueExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseImage.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseImage.java new file mode 100644 index 0000000..6a20102 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseImage.java @@ -0,0 +1,588 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRCommonImage; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRBaseImage extends JRBaseGraphicElement implements JRImage { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_LAZY = "lazy"; + + public static final String PROPERTY_ON_ERROR_TYPE = "onErrorType"; + + public static final String PROPERTY_USING_CACHE = "usingCache"; + + protected Byte scaleImage; + + protected Byte horizontalAlignment; + + protected Byte verticalAlignment; + + protected Boolean isUsingCache = null; + + protected boolean isLazy = false; + + protected byte onErrorType = 1; + + protected byte evaluationTime = 1; + + protected byte hyperlinkType = 0; + + protected String linkType; + + protected byte hyperlinkTarget = 1; + + private JRHyperlinkParameter[] hyperlinkParameters; + + protected JRLineBox lineBox = null; + + protected JRGroup evaluationGroup = null; + + protected JRExpression expression = null; + + protected JRExpression anchorNameExpression = null; + + protected JRExpression hyperlinkReferenceExpression = null; + + protected JRExpression hyperlinkAnchorExpression = null; + + protected JRExpression hyperlinkPageExpression = null; + + private JRExpression hyperlinkTooltipExpression; + + protected int bookmarkLevel = 0; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + protected JRBaseImage(JRImage image, JRBaseObjectFactory factory) { + super((JRGraphicElement)image, factory); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.scaleImage = image.getOwnScaleImage(); + this.horizontalAlignment = image.getOwnHorizontalAlignment(); + this.verticalAlignment = image.getOwnVerticalAlignment(); + this.isUsingCache = image.isOwnUsingCache(); + this.isLazy = image.isLazy(); + this.onErrorType = image.getOnErrorType(); + this.evaluationTime = image.getEvaluationTime(); + this.linkType = image.getLinkType(); + this.hyperlinkTarget = image.getHyperlinkTarget(); + this.hyperlinkParameters = JRBaseHyperlink.copyHyperlinkParameters((JRHyperlink)image, factory); + this.lineBox = image.getLineBox().clone((JRBoxContainer)this); + this.evaluationGroup = factory.getGroup(image.getEvaluationGroup()); + this.expression = factory.getExpression(image.getExpression()); + this.anchorNameExpression = factory.getExpression(image.getAnchorNameExpression()); + this.hyperlinkReferenceExpression = factory.getExpression(image.getHyperlinkReferenceExpression()); + this.hyperlinkAnchorExpression = factory.getExpression(image.getHyperlinkAnchorExpression()); + this.hyperlinkPageExpression = factory.getExpression(image.getHyperlinkPageExpression()); + this.hyperlinkTooltipExpression = factory.getExpression(image.getHyperlinkTooltipExpression()); + this.bookmarkLevel = image.getBookmarkLevel(); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getScaleImage() { + return JRStyleResolver.getScaleImage((JRCommonImage)this); + } + + public Byte getOwnScaleImage() { + return this.scaleImage; + } + + public void setScaleImage(byte scaleImage) { + setScaleImage(new Byte(scaleImage)); + } + + public void setScaleImage(Byte scaleImage) { + Object old = this.scaleImage; + this.scaleImage = scaleImage; + getEventSupport().firePropertyChange("scaleImage", old, this.scaleImage); + } + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment((JRAlignment)this); + } + + public Byte getOwnHorizontalAlignment() { + return this.horizontalAlignment; + } + + public void setHorizontalAlignment(byte horizontalAlignment) { + setHorizontalAlignment(new Byte(horizontalAlignment)); + } + + public void setHorizontalAlignment(Byte horizontalAlignment) { + Object old = this.horizontalAlignment; + this.horizontalAlignment = horizontalAlignment; + getEventSupport().firePropertyChange("horizontalAlignment", old, this.horizontalAlignment); + } + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment((JRAlignment)this); + } + + public Byte getOwnVerticalAlignment() { + return this.verticalAlignment; + } + + public void setVerticalAlignment(byte verticalAlignment) { + setVerticalAlignment(new Byte(verticalAlignment)); + } + + public void setVerticalAlignment(Byte verticalAlignment) { + Object old = this.verticalAlignment; + this.verticalAlignment = verticalAlignment; + getEventSupport().firePropertyChange("verticalAlignment", old, this.verticalAlignment); + } + + public boolean isUsingCache() { + if (this.isUsingCache == null) { + if (getExpression() != null) + return String.class.getName().equals(getExpression().getValueClassName()); + return true; + } + return this.isUsingCache.booleanValue(); + } + + public Boolean isOwnUsingCache() { + return this.isUsingCache; + } + + public void setUsingCache(boolean isUsingCache) { + setUsingCache(isUsingCache ? Boolean.TRUE : Boolean.FALSE); + } + + public void setUsingCache(Boolean isUsingCache) { + Object old = this.isUsingCache; + this.isUsingCache = isUsingCache; + getEventSupport().firePropertyChange("usingCache", old, this.isUsingCache); + } + + public boolean isLazy() { + return this.isLazy; + } + + public void setLazy(boolean isLazy) { + boolean old = this.isLazy; + this.isLazy = isLazy; + getEventSupport().firePropertyChange("lazy", old, this.isLazy); + } + + public byte getOnErrorType() { + return this.onErrorType; + } + + public void setOnErrorType(byte onErrorType) { + byte old = this.onErrorType; + this.onErrorType = onErrorType; + getEventSupport().firePropertyChange("onErrorType", old, this.onErrorType); + } + + public byte getEvaluationTime() { + return this.evaluationTime; + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType((JRHyperlink)this); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRExpression getExpression() { + return this.expression; + } + + public JRExpression getAnchorNameExpression() { + return this.anchorNameExpression; + } + + public JRExpression getHyperlinkReferenceExpression() { + return this.hyperlinkReferenceExpression; + } + + public JRExpression getHyperlinkAnchorExpression() { + return this.hyperlinkAnchorExpression; + } + + public JRExpression getHyperlinkPageExpression() { + return this.hyperlinkPageExpression; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitImage(this); + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public Float getDefaultLineWidth() { + return JRPen.LINE_WIDTH_0; + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public String getLinkType() { + return this.linkType; + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + return this.hyperlinkParameters; + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public JRExpression getHyperlinkTooltipExpression() { + return this.hyperlinkTooltipExpression; + } + + public Object clone() { + JRBaseImage clone = (JRBaseImage)super.clone(); + if (this.hyperlinkParameters != null) { + clone.hyperlinkParameters = new JRHyperlinkParameter[this.hyperlinkParameters.length]; + for (int i = 0; i < this.hyperlinkParameters.length; i++) + clone.hyperlinkParameters[i] = (JRHyperlinkParameter)this.hyperlinkParameters[i].clone(); + } + if (this.expression != null) + clone.expression = (JRExpression)this.expression.clone(); + if (this.anchorNameExpression != null) + clone.anchorNameExpression = (JRExpression)this.anchorNameExpression.clone(); + if (this.hyperlinkReferenceExpression != null) + clone.hyperlinkReferenceExpression = (JRExpression)this.hyperlinkReferenceExpression.clone(); + if (this.hyperlinkAnchorExpression != null) + clone.hyperlinkAnchorExpression = (JRExpression)this.hyperlinkAnchorExpression.clone(); + if (this.hyperlinkPageExpression != null) + clone.hyperlinkPageExpression = (JRExpression)this.hyperlinkPageExpression.clone(); + if (this.hyperlinkTooltipExpression != null) + clone.hyperlinkTooltipExpression = (JRExpression)this.hyperlinkTooltipExpression.clone(); + return clone; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + normalizeLinkType(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLine.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLine.java new file mode 100644 index 0000000..1a0cc0c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLine.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRBaseLine extends JRBaseGraphicElement implements JRLine { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DIRECTION = "direction"; + + protected byte direction = 1; + + protected JRBaseLine(JRLine line, JRBaseObjectFactory factory) { + super((JRGraphicElement)line, factory); + this.direction = line.getDirection(); + } + + public void setWidth(int width) { + if (width == 0) + width = 1; + super.setWidth(width); + } + + public byte getDirection() { + return this.direction; + } + + public void setDirection(byte direction) { + byte old = this.direction; + this.direction = direction; + getEventSupport().firePropertyChange("direction", old, this.direction); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitLine(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLineBox.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLineBox.java new file mode 100644 index 0000000..488f742 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseLineBox.java @@ -0,0 +1,247 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseLineBox implements JRLineBox, JRPenContainer, Serializable, Cloneable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_PADDING = "padding"; + + public static final String PROPERTY_TOP_PADDING = "topPadding"; + + public static final String PROPERTY_LEFT_PADDING = "leftPadding"; + + public static final String PROPERTY_BOTTOM_PADDING = "bottomPadding"; + + public static final String PROPERTY_RIGHT_PADDING = "rightPadding"; + + protected JRBoxContainer boxContainer = null; + + protected JRBoxPen pen = null; + + protected JRBoxPen topPen = null; + + protected JRBoxPen leftPen = null; + + protected JRBoxPen bottomPen = null; + + protected JRBoxPen rightPen = null; + + protected Integer padding = null; + + protected Integer topPadding = null; + + protected Integer leftPadding = null; + + protected Integer bottomPadding = null; + + protected Integer rightPadding = null; + + private transient JRPropertyChangeSupport eventSupport; + + public JRBaseLineBox(JRBoxContainer boxContainer) { + this.boxContainer = boxContainer; + this.pen = new JRBaseBoxPen(this); + this.topPen = new JRBaseBoxTopPen(this); + this.leftPen = new JRBaseBoxLeftPen(this); + this.bottomPen = new JRBaseBoxBottomPen(this); + this.rightPen = new JRBaseBoxRightPen(this); + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + if (this.boxContainer != null) + return this.boxContainer.getDefaultStyleProvider(); + return null; + } + + public JRStyle getStyle() { + if (this.boxContainer != null) + return this.boxContainer.getStyle(); + return null; + } + + public String getStyleNameReference() { + if (this.boxContainer != null) + return this.boxContainer.getStyleNameReference(); + return null; + } + + public JRBoxContainer getBoxContainer() { + return this.boxContainer; + } + + public Float getDefaultLineWidth() { + return JRPen.LINE_WIDTH_0; + } + + public Color getDefaultLineColor() { + if (this.boxContainer != null) + return this.boxContainer.getDefaultLineColor(); + return Color.black; + } + + public JRBoxPen getPen() { + return this.pen; + } + + public void copyPen(JRBoxPen pen) { + this.pen = pen.clone(this); + } + + public JRBoxPen getTopPen() { + return this.topPen; + } + + public void copyTopPen(JRBoxPen topPen) { + this.topPen = topPen.clone(this); + } + + public JRBoxPen getLeftPen() { + return this.leftPen; + } + + public void copyLeftPen(JRBoxPen leftPen) { + this.leftPen = leftPen.clone(this); + } + + public JRBoxPen getBottomPen() { + return this.bottomPen; + } + + public void copyBottomPen(JRBoxPen bottomPen) { + this.bottomPen = bottomPen.clone(this); + } + + public JRBoxPen getRightPen() { + return this.rightPen; + } + + public void copyRightPen(JRBoxPen rightPen) { + this.rightPen = rightPen.clone(this); + } + + public Integer getPadding() { + return JRStyleResolver.getPadding(this); + } + + public Integer getOwnPadding() { + return this.padding; + } + + public void setPadding(int padding) { + setPadding(new Integer(padding)); + } + + public void setPadding(Integer padding) { + Object old = this.padding; + this.padding = padding; + getEventSupport().firePropertyChange("padding", old, this.padding); + } + + public Integer getTopPadding() { + return JRStyleResolver.getTopPadding(this); + } + + public Integer getOwnTopPadding() { + return this.topPadding; + } + + public void setTopPadding(int topPadding) { + setTopPadding(new Integer(topPadding)); + } + + public void setTopPadding(Integer topPadding) { + Object old = this.topPadding; + this.topPadding = topPadding; + getEventSupport().firePropertyChange("topPadding", old, this.topPadding); + } + + public Integer getLeftPadding() { + return JRStyleResolver.getLeftPadding(this); + } + + public Integer getOwnLeftPadding() { + return this.leftPadding; + } + + public void setLeftPadding(int leftPadding) { + setLeftPadding(new Integer(leftPadding)); + } + + public void setLeftPadding(Integer leftPadding) { + Object old = this.leftPadding; + this.leftPadding = leftPadding; + getEventSupport().firePropertyChange("leftPadding", old, this.leftPadding); + } + + public Integer getBottomPadding() { + return JRStyleResolver.getBottomPadding(this); + } + + public Integer getOwnBottomPadding() { + return this.bottomPadding; + } + + public void setBottomPadding(int bottomPadding) { + setBottomPadding(new Integer(bottomPadding)); + } + + public void setBottomPadding(Integer bottomPadding) { + Object old = this.bottomPadding; + this.bottomPadding = bottomPadding; + getEventSupport().firePropertyChange("bottomPadding", old, this.bottomPadding); + } + + public Integer getRightPadding() { + return JRStyleResolver.getRightPadding(this); + } + + public Integer getOwnRightPadding() { + return this.rightPadding; + } + + public void setRightPadding(int rightPadding) { + setRightPadding(new Integer(rightPadding)); + } + + public void setRightPadding(Integer rightPadding) { + Object old = this.rightPadding; + this.rightPadding = rightPadding; + getEventSupport().firePropertyChange("rightPadding", old, this.rightPadding); + } + + public JRLineBox clone(JRBoxContainer boxContainer) { + JRBaseLineBox clone = null; + try { + clone = (JRBaseLineBox)clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + clone.boxContainer = boxContainer; + clone.pen = this.pen.clone(clone); + clone.topPen = this.topPen.clone(clone); + clone.leftPen = this.leftPen.clone(clone); + clone.bottomPen = this.bottomPen.clone(clone); + clone.rightPen = this.rightPen.clone(clone); + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseObjectFactory.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseObjectFactory.java new file mode 100644 index 0000000..3ce2c7c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseObjectFactory.java @@ -0,0 +1,882 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRMultiAxisPlot; +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.charts.base.JRBaseAreaPlot; +import net.sf.jasperreports.charts.base.JRBaseBar3DPlot; +import net.sf.jasperreports.charts.base.JRBaseBarPlot; +import net.sf.jasperreports.charts.base.JRBaseBubblePlot; +import net.sf.jasperreports.charts.base.JRBaseCandlestickPlot; +import net.sf.jasperreports.charts.base.JRBaseCategoryDataset; +import net.sf.jasperreports.charts.base.JRBaseCategorySeries; +import net.sf.jasperreports.charts.base.JRBaseChartAxis; +import net.sf.jasperreports.charts.base.JRBaseHighLowDataset; +import net.sf.jasperreports.charts.base.JRBaseHighLowPlot; +import net.sf.jasperreports.charts.base.JRBaseLinePlot; +import net.sf.jasperreports.charts.base.JRBaseMeterPlot; +import net.sf.jasperreports.charts.base.JRBaseMultiAxisPlot; +import net.sf.jasperreports.charts.base.JRBasePie3DPlot; +import net.sf.jasperreports.charts.base.JRBasePieDataset; +import net.sf.jasperreports.charts.base.JRBasePiePlot; +import net.sf.jasperreports.charts.base.JRBaseScatterPlot; +import net.sf.jasperreports.charts.base.JRBaseThermometerPlot; +import net.sf.jasperreports.charts.base.JRBaseTimePeriodDataset; +import net.sf.jasperreports.charts.base.JRBaseTimePeriodSeries; +import net.sf.jasperreports.charts.base.JRBaseTimeSeries; +import net.sf.jasperreports.charts.base.JRBaseTimeSeriesDataset; +import net.sf.jasperreports.charts.base.JRBaseTimeSeriesPlot; +import net.sf.jasperreports.charts.base.JRBaseValueDataset; +import net.sf.jasperreports.charts.base.JRBaseXyDataset; +import net.sf.jasperreports.charts.base.JRBaseXySeries; +import net.sf.jasperreports.charts.base.JRBaseXyzDataset; +import net.sf.jasperreports.charts.base.JRBaseXyzSeries; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.base.JRBaseCellContents; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstab; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabBucket; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabCell; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabDataset; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabMeasure; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabParameter; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstabRowGroup; +import net.sf.jasperreports.engine.JRAbstractObjectFactory; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRConditionalStyle; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRQueryChunk; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRStyleSetter; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRSubreportParameter; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVariable; + +public class JRBaseObjectFactory extends JRAbstractObjectFactory { + private JRDefaultStyleProvider defaultStyleProvider = null; + + private JRExpressionCollector expressionCollector; + + protected JRBaseObjectFactory(JRDefaultStyleProvider defaultStyleProvider) { + this.defaultStyleProvider = defaultStyleProvider; + } + + protected JRBaseObjectFactory(JRDefaultStyleProvider defaultStyleProvider, JRExpressionCollector expressionCollector) { + this.defaultStyleProvider = defaultStyleProvider; + this.expressionCollector = expressionCollector; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public JRReportFont getReportFont(JRReportFont font) { + JRBaseReportFont baseFont = null; + if (font != null) { + baseFont = (JRBaseReportFont)get(font); + if (baseFont == null) { + baseFont = new JRBaseReportFont(font); + put(font, baseFont); + } + } + return baseFont; + } + + public JRStyle getStyle(JRStyle style) { + JRBaseStyle baseStyle = null; + if (style != null) { + baseStyle = (JRBaseStyle)get(style); + if (baseStyle == null) { + baseStyle = new JRBaseStyle(style, this); + put(style, baseStyle); + } + } + return baseStyle; + } + + public void setStyle(JRStyleSetter setter, JRStyleContainer styleContainer) { + JRStyle style = styleContainer.getStyle(); + String nameReference = styleContainer.getStyleNameReference(); + if (style != null) { + JRStyle newStyle = getStyle(style); + setter.setStyle(newStyle); + } else if (nameReference != null) { + handleStyleNameReference(setter, nameReference); + } + } + + protected void handleStyleNameReference(JRStyleSetter setter, String nameReference) { + setter.setStyleNameReference(nameReference); + } + + protected JRBaseParameter getParameter(JRParameter parameter) { + JRBaseParameter baseParameter = null; + if (parameter != null) { + baseParameter = (JRBaseParameter)get(parameter); + if (baseParameter == null) + baseParameter = new JRBaseParameter(parameter, this); + } + return baseParameter; + } + + protected JRBaseQuery getQuery(JRQuery query) { + JRBaseQuery baseQuery = null; + if (query != null) { + baseQuery = (JRBaseQuery)get(query); + if (baseQuery == null) + baseQuery = new JRBaseQuery(query, this); + } + return baseQuery; + } + + protected JRBaseQueryChunk getQueryChunk(JRQueryChunk queryChunk) { + JRBaseQueryChunk baseQueryChunk = null; + if (queryChunk != null) { + baseQueryChunk = (JRBaseQueryChunk)get(queryChunk); + if (baseQueryChunk == null) + baseQueryChunk = new JRBaseQueryChunk(queryChunk, this); + } + return baseQueryChunk; + } + + protected JRBaseField getField(JRField field) { + JRBaseField baseField = null; + if (field != null) { + baseField = (JRBaseField)get(field); + if (baseField == null) + baseField = new JRBaseField(field, this); + } + return baseField; + } + + protected JRBaseSortField getSortField(JRSortField sortField) { + JRBaseSortField baseSortField = null; + if (sortField != null) { + baseSortField = (JRBaseSortField)get(sortField); + if (baseSortField == null) + baseSortField = new JRBaseSortField(sortField, this); + } + return baseSortField; + } + + public JRBaseVariable getVariable(JRVariable variable) { + JRBaseVariable baseVariable = null; + if (variable != null) { + baseVariable = (JRBaseVariable)get(variable); + if (baseVariable == null) + baseVariable = new JRBaseVariable(variable, this); + } + return baseVariable; + } + + public JRExpression getExpression(JRExpression expression, boolean assignNotUsedId) { + JRBaseExpression baseExpression = null; + if (expression != null) { + baseExpression = (JRBaseExpression)get(expression); + if (baseExpression == null) { + Integer expressionId = getCollectedExpressionId(expression, assignNotUsedId); + baseExpression = new JRBaseExpression(expression, this, expressionId); + } + } + return baseExpression; + } + + private Integer getCollectedExpressionId(JRExpression expression, boolean assignNotUsedId) { + Integer expressionId = null; + if (this.expressionCollector != null) { + expressionId = this.expressionCollector.getExpressionId(expression); + if (expressionId == null) + if (assignNotUsedId) { + expressionId = JRExpression.NOT_USED_ID; + } else { + throw new JRRuntimeException("Expression ID not found for expression <<" + expression.getText() + ">>."); + } + } + return expressionId; + } + + protected JRBaseExpressionChunk getExpressionChunk(JRExpressionChunk expressionChunk) { + JRBaseExpressionChunk baseExpressionChunk = null; + if (expressionChunk != null) { + baseExpressionChunk = (JRBaseExpressionChunk)get(expressionChunk); + if (baseExpressionChunk == null) + baseExpressionChunk = new JRBaseExpressionChunk(expressionChunk, this); + } + return baseExpressionChunk; + } + + protected JRBaseGroup getGroup(JRGroup group) { + JRBaseGroup baseGroup = null; + if (group != null) { + baseGroup = (JRBaseGroup)get(group); + if (baseGroup == null) + baseGroup = new JRBaseGroup(group, this); + } + return baseGroup; + } + + protected JRBaseBand getBand(JRBand band) { + JRBaseBand baseBand = null; + if (band != null) { + baseBand = (JRBaseBand)get(band); + if (baseBand == null) + baseBand = new JRBaseBand(band, this); + } + return baseBand; + } + + public void visitElementGroup(JRElementGroup elementGroup) { + JRElementGroup baseElementGroup = null; + if (elementGroup != null) { + baseElementGroup = (JRElementGroup)get(elementGroup); + if (baseElementGroup == null) + baseElementGroup = new JRBaseElementGroup(elementGroup, this); + } + setVisitResult(baseElementGroup); + } + + public void visitBreak(JRBreak breakElement) { + JRBaseBreak baseBreak = null; + if (breakElement != null) { + baseBreak = (JRBaseBreak)get(breakElement); + if (baseBreak == null) + baseBreak = new JRBaseBreak(breakElement, this); + } + setVisitResult(baseBreak); + } + + public void visitLine(JRLine line) { + JRBaseLine baseLine = null; + if (line != null) { + baseLine = (JRBaseLine)get(line); + if (baseLine == null) + baseLine = new JRBaseLine(line, this); + } + setVisitResult(baseLine); + } + + public void visitRectangle(JRRectangle rectangle) { + JRBaseRectangle baseRectangle = null; + if (rectangle != null) { + baseRectangle = (JRBaseRectangle)get(rectangle); + if (baseRectangle == null) + baseRectangle = new JRBaseRectangle(rectangle, this); + } + setVisitResult(baseRectangle); + } + + public void visitEllipse(JREllipse ellipse) { + JRBaseEllipse baseEllipse = null; + if (ellipse != null) { + baseEllipse = (JRBaseEllipse)get(ellipse); + if (baseEllipse == null) + baseEllipse = new JRBaseEllipse(ellipse, this); + } + setVisitResult(baseEllipse); + } + + public void visitImage(JRImage image) { + JRBaseImage baseImage = null; + if (image != null) { + baseImage = (JRBaseImage)get(image); + if (baseImage == null) + baseImage = new JRBaseImage(image, this); + } + setVisitResult(baseImage); + } + + public void visitStaticText(JRStaticText staticText) { + JRBaseStaticText baseStaticText = null; + if (staticText != null) { + baseStaticText = (JRBaseStaticText)get(staticText); + if (baseStaticText == null) + baseStaticText = new JRBaseStaticText(staticText, this); + } + setVisitResult(baseStaticText); + } + + public void visitTextField(JRTextField textField) { + JRBaseTextField baseTextField = null; + if (textField != null) { + baseTextField = (JRBaseTextField)get(textField); + if (baseTextField == null) + baseTextField = new JRBaseTextField(textField, this); + } + setVisitResult(baseTextField); + } + + public void visitSubreport(JRSubreport subreport) { + JRBaseSubreport baseSubreport = null; + if (subreport != null) { + baseSubreport = (JRBaseSubreport)get(subreport); + if (baseSubreport == null) + baseSubreport = new JRBaseSubreport(subreport, this); + } + setVisitResult(baseSubreport); + } + + protected JRBaseSubreportParameter getSubreportParameter(JRSubreportParameter subreportParameter) { + JRBaseSubreportParameter baseSubreportParameter = null; + if (subreportParameter != null) { + baseSubreportParameter = (JRBaseSubreportParameter)get(subreportParameter); + if (baseSubreportParameter == null) { + baseSubreportParameter = new JRBaseSubreportParameter(subreportParameter, this); + put(subreportParameter, baseSubreportParameter); + } + } + return baseSubreportParameter; + } + + protected JRBaseDatasetParameter getDatasetParameter(JRDatasetParameter datasetParameter) { + JRBaseDatasetParameter baseSubreportParameter = null; + if (datasetParameter != null) { + baseSubreportParameter = (JRBaseDatasetParameter)get(datasetParameter); + if (baseSubreportParameter == null) { + baseSubreportParameter = new JRBaseDatasetParameter(datasetParameter, this); + put(datasetParameter, baseSubreportParameter); + } + } + return baseSubreportParameter; + } + + public JRPieDataset getPieDataset(JRPieDataset pieDataset) { + JRBasePieDataset basePieDataset = null; + if (pieDataset != null) { + basePieDataset = (JRBasePieDataset)get(pieDataset); + if (basePieDataset == null) + basePieDataset = new JRBasePieDataset(pieDataset, this); + } + return (JRPieDataset)basePieDataset; + } + + public JRPiePlot getPiePlot(JRPiePlot piePlot) { + JRBasePiePlot basePiePlot = null; + if (piePlot != null) { + basePiePlot = (JRBasePiePlot)get(piePlot); + if (basePiePlot == null) + basePiePlot = new JRBasePiePlot(piePlot, this); + } + return (JRPiePlot)basePiePlot; + } + + public JRPie3DPlot getPie3DPlot(JRPie3DPlot pie3DPlot) { + JRBasePie3DPlot basePie3DPlot = null; + if (pie3DPlot != null) { + basePie3DPlot = (JRBasePie3DPlot)get(pie3DPlot); + if (basePie3DPlot == null) + basePie3DPlot = new JRBasePie3DPlot(pie3DPlot, this); + } + return (JRPie3DPlot)basePie3DPlot; + } + + public JRCategoryDataset getCategoryDataset(JRCategoryDataset categoryDataset) { + JRBaseCategoryDataset baseCategoryDataset = null; + if (categoryDataset != null) { + baseCategoryDataset = (JRBaseCategoryDataset)get(categoryDataset); + if (baseCategoryDataset == null) + baseCategoryDataset = new JRBaseCategoryDataset(categoryDataset, this); + } + return (JRCategoryDataset)baseCategoryDataset; + } + + public JRTimeSeriesDataset getTimeSeriesDataset(JRTimeSeriesDataset timeSeriesDataset) { + JRBaseTimeSeriesDataset baseTimeSeriesDataset = null; + if (timeSeriesDataset != null) { + baseTimeSeriesDataset = (JRBaseTimeSeriesDataset)get(timeSeriesDataset); + if (baseTimeSeriesDataset == null) + baseTimeSeriesDataset = new JRBaseTimeSeriesDataset(timeSeriesDataset, this); + } + return (JRTimeSeriesDataset)baseTimeSeriesDataset; + } + + public JRTimePeriodDataset getTimePeriodDataset(JRTimePeriodDataset timePeriodDataset) { + JRBaseTimePeriodDataset baseTimePeriodDataset = null; + if (timePeriodDataset != null) { + baseTimePeriodDataset = (JRBaseTimePeriodDataset)get(timePeriodDataset); + if (baseTimePeriodDataset == null) + baseTimePeriodDataset = new JRBaseTimePeriodDataset(timePeriodDataset, this); + } + return (JRTimePeriodDataset)baseTimePeriodDataset; + } + + public JRCategorySeries getCategorySeries(JRCategorySeries categorySeries) { + JRBaseCategorySeries baseCategorySeries = null; + if (categorySeries != null) { + baseCategorySeries = (JRBaseCategorySeries)get(categorySeries); + if (baseCategorySeries == null) + baseCategorySeries = new JRBaseCategorySeries(categorySeries, this); + } + return (JRCategorySeries)baseCategorySeries; + } + + public JRXySeries getXySeries(JRXySeries xySeries) { + JRBaseXySeries baseXySeries = null; + if (xySeries != null) { + baseXySeries = (JRBaseXySeries)get(xySeries); + if (baseXySeries == null) + baseXySeries = new JRBaseXySeries(xySeries, this); + } + return (JRXySeries)baseXySeries; + } + + public JRTimeSeries getTimeSeries(JRTimeSeries timeSeries) { + JRBaseTimeSeries baseTimeSeries = null; + if (timeSeries != null) { + baseTimeSeries = (JRBaseTimeSeries)get(timeSeries); + if (baseTimeSeries == null) + baseTimeSeries = new JRBaseTimeSeries(timeSeries, this); + } + return (JRTimeSeries)baseTimeSeries; + } + + public JRTimePeriodSeries getTimePeriodSeries(JRTimePeriodSeries timePeriodSeries) { + JRBaseTimePeriodSeries baseTimePeriodSeries = null; + if (timePeriodSeries != null) { + baseTimePeriodSeries = (JRBaseTimePeriodSeries)get(timePeriodSeries); + if (baseTimePeriodSeries == null) + baseTimePeriodSeries = new JRBaseTimePeriodSeries(timePeriodSeries, this); + } + return (JRTimePeriodSeries)baseTimePeriodSeries; + } + + public JRBarPlot getBarPlot(JRBarPlot barPlot) { + JRBaseBarPlot baseBarPlot = null; + if (barPlot != null) { + baseBarPlot = (JRBaseBarPlot)get(barPlot); + if (baseBarPlot == null) + baseBarPlot = new JRBaseBarPlot(barPlot, this); + } + return (JRBarPlot)baseBarPlot; + } + + public JRBar3DPlot getBar3DPlot(JRBar3DPlot barPlot) { + JRBaseBar3DPlot baseBarPlot = null; + if (barPlot != null) { + baseBarPlot = (JRBaseBar3DPlot)get(barPlot); + if (baseBarPlot == null) + baseBarPlot = new JRBaseBar3DPlot(barPlot, this); + } + return (JRBar3DPlot)baseBarPlot; + } + + public JRLinePlot getLinePlot(JRLinePlot linePlot) { + JRBaseLinePlot baseLinePlot = null; + if (linePlot != null) { + baseLinePlot = (JRBaseLinePlot)get(linePlot); + if (baseLinePlot == null) + baseLinePlot = new JRBaseLinePlot(linePlot, this); + } + return (JRLinePlot)baseLinePlot; + } + + public JRAreaPlot getAreaPlot(JRAreaPlot areaPlot) { + JRBaseAreaPlot baseAreaPlot = null; + if (areaPlot != null) { + baseAreaPlot = (JRBaseAreaPlot)get(areaPlot); + if (baseAreaPlot == null) + baseAreaPlot = new JRBaseAreaPlot(areaPlot, this); + } + return (JRAreaPlot)baseAreaPlot; + } + + public JRXyzDataset getXyzDataset(JRXyzDataset xyzDataset) { + JRBaseXyzDataset baseXyzDataset = null; + if (xyzDataset != null) { + baseXyzDataset = (JRBaseXyzDataset)get(xyzDataset); + if (baseXyzDataset == null) + baseXyzDataset = new JRBaseXyzDataset(xyzDataset, this); + } + return (JRXyzDataset)baseXyzDataset; + } + + public JRXyDataset getXyDataset(JRXyDataset xyDataset) { + JRBaseXyDataset baseXyDataset = null; + if (xyDataset != null) { + baseXyDataset = (JRBaseXyDataset)get(xyDataset); + if (baseXyDataset == null) + baseXyDataset = new JRBaseXyDataset(xyDataset, this); + } + return (JRXyDataset)baseXyDataset; + } + + public JRHighLowDataset getHighLowDataset(JRHighLowDataset highLowDataset) { + JRBaseHighLowDataset baseHighLowDataset = null; + if (highLowDataset != null) { + baseHighLowDataset = (JRBaseHighLowDataset)get(highLowDataset); + if (baseHighLowDataset == null) + baseHighLowDataset = new JRBaseHighLowDataset(highLowDataset, this); + } + return (JRHighLowDataset)baseHighLowDataset; + } + + public JRXyzSeries getXyzSeries(JRXyzSeries xyzSeries) { + JRBaseXyzSeries baseXyzSeries = null; + if (xyzSeries != null) { + baseXyzSeries = (JRBaseXyzSeries)get(xyzSeries); + if (baseXyzSeries == null) + baseXyzSeries = new JRBaseXyzSeries(xyzSeries, this); + } + return (JRXyzSeries)baseXyzSeries; + } + + public JRBubblePlot getBubblePlot(JRBubblePlot bubblePlot) { + JRBaseBubblePlot baseBubblePlot = null; + if (bubblePlot != null) { + baseBubblePlot = (JRBaseBubblePlot)get(bubblePlot); + if (baseBubblePlot == null) + baseBubblePlot = new JRBaseBubblePlot(bubblePlot, this); + } + return (JRBubblePlot)baseBubblePlot; + } + + public JRCandlestickPlot getCandlestickPlot(JRCandlestickPlot candlestickPlot) { + JRBaseCandlestickPlot baseCandlestickPlot = null; + if (candlestickPlot != null) { + baseCandlestickPlot = (JRBaseCandlestickPlot)get(candlestickPlot); + if (baseCandlestickPlot == null) + baseCandlestickPlot = new JRBaseCandlestickPlot(candlestickPlot, this); + } + return (JRCandlestickPlot)baseCandlestickPlot; + } + + public JRHighLowPlot getHighLowPlot(JRHighLowPlot highLowPlot) { + JRBaseHighLowPlot baseHighLowPlot = null; + if (highLowPlot != null) { + baseHighLowPlot = (JRBaseHighLowPlot)get(highLowPlot); + if (baseHighLowPlot == null) + baseHighLowPlot = new JRBaseHighLowPlot(highLowPlot, this); + } + return (JRHighLowPlot)baseHighLowPlot; + } + + public JRScatterPlot getScatterPlot(JRScatterPlot scatterPlot) { + JRBaseScatterPlot baseScatterPlot = null; + if (scatterPlot != null) { + baseScatterPlot = (JRBaseScatterPlot)get(scatterPlot); + if (baseScatterPlot == null) + baseScatterPlot = new JRBaseScatterPlot(scatterPlot, this); + } + return (JRScatterPlot)baseScatterPlot; + } + + public JRTimeSeriesPlot getTimeSeriesPlot(JRTimeSeriesPlot plot) { + JRBaseTimeSeriesPlot basePlot = null; + if (plot != null) { + basePlot = (JRBaseTimeSeriesPlot)get(plot); + if (basePlot == null) + basePlot = new JRBaseTimeSeriesPlot(plot, this); + } + return (JRTimeSeriesPlot)basePlot; + } + + public JRValueDataset getValueDataset(JRValueDataset valueDataset) { + JRBaseValueDataset baseValueDataset = null; + if (valueDataset != null) { + baseValueDataset = (JRBaseValueDataset)get(valueDataset); + if (baseValueDataset == null) + baseValueDataset = new JRBaseValueDataset(valueDataset, this); + } + return (JRValueDataset)baseValueDataset; + } + + public JRMeterPlot getMeterPlot(JRMeterPlot meterPlot) { + JRBaseMeterPlot baseMeterPlot = null; + if (meterPlot != null) { + baseMeterPlot = (JRBaseMeterPlot)get(meterPlot); + if (baseMeterPlot == null) + baseMeterPlot = new JRBaseMeterPlot(meterPlot, this); + } + return (JRMeterPlot)baseMeterPlot; + } + + public JRThermometerPlot getThermometerPlot(JRThermometerPlot thermometerPlot) { + JRBaseThermometerPlot baseThermometerPlot = null; + if (thermometerPlot != null) { + baseThermometerPlot = (JRBaseThermometerPlot)get(thermometerPlot); + if (baseThermometerPlot == null) + baseThermometerPlot = new JRBaseThermometerPlot(thermometerPlot, this); + } + return (JRThermometerPlot)baseThermometerPlot; + } + + public JRMultiAxisPlot getMultiAxisPlot(JRMultiAxisPlot multiAxisPlot) { + JRBaseMultiAxisPlot baseMultiAxisPlot = null; + if (multiAxisPlot != null) { + baseMultiAxisPlot = (JRBaseMultiAxisPlot)get(baseMultiAxisPlot); + if (baseMultiAxisPlot == null) + baseMultiAxisPlot = new JRBaseMultiAxisPlot(multiAxisPlot, this); + } + return (JRMultiAxisPlot)baseMultiAxisPlot; + } + + public void visitChart(JRChart chart) { + JRBaseChart baseChart = null; + if (chart != null) { + baseChart = (JRBaseChart)get(chart); + if (baseChart == null) + baseChart = new JRBaseChart(chart, this); + } + setVisitResult(baseChart); + } + + protected JRBaseSubreportReturnValue getSubreportReturnValue(JRSubreportReturnValue returnValue) { + JRBaseSubreportReturnValue baseSubreportReturnValue = null; + if (returnValue != null) { + baseSubreportReturnValue = (JRBaseSubreportReturnValue)get(returnValue); + if (baseSubreportReturnValue == null) { + baseSubreportReturnValue = new JRBaseSubreportReturnValue(returnValue, this); + put(returnValue, baseSubreportReturnValue); + } + } + return baseSubreportReturnValue; + } + + public JRConditionalStyle getConditionalStyle(JRConditionalStyle conditionalStyle, JRStyle style) { + JRBaseConditionalStyle baseConditionalStyle = null; + if (conditionalStyle != null) { + baseConditionalStyle = (JRBaseConditionalStyle)get(conditionalStyle); + if (baseConditionalStyle == null) { + baseConditionalStyle = new JRBaseConditionalStyle(conditionalStyle, style, this); + put(conditionalStyle, baseConditionalStyle); + } + } + return baseConditionalStyle; + } + + public JRBaseCrosstabDataset getCrosstabDataset(JRCrosstabDataset crosstabDataset) { + JRBaseCrosstabDataset baseCrosstabDataset = null; + if (crosstabDataset != null) { + baseCrosstabDataset = (JRBaseCrosstabDataset)get(crosstabDataset); + if (baseCrosstabDataset == null) + baseCrosstabDataset = new JRBaseCrosstabDataset(crosstabDataset, this); + } + return baseCrosstabDataset; + } + + public JRBaseCrosstabRowGroup getCrosstabRowGroup(JRCrosstabRowGroup group) { + JRBaseCrosstabRowGroup baseCrosstabRowGroup = null; + if (group != null) { + baseCrosstabRowGroup = (JRBaseCrosstabRowGroup)get(group); + if (baseCrosstabRowGroup == null) + baseCrosstabRowGroup = new JRBaseCrosstabRowGroup(group, this); + } + return baseCrosstabRowGroup; + } + + public JRBaseCrosstabColumnGroup getCrosstabColumnGroup(JRCrosstabColumnGroup group) { + JRBaseCrosstabColumnGroup baseCrosstabDataset = null; + if (group != null) { + baseCrosstabDataset = (JRBaseCrosstabColumnGroup)get(group); + if (baseCrosstabDataset == null) + baseCrosstabDataset = new JRBaseCrosstabColumnGroup(group, this); + } + return baseCrosstabDataset; + } + + public JRBaseCrosstabBucket getCrosstabBucket(JRCrosstabBucket bucket) { + JRBaseCrosstabBucket baseCrosstabBucket = null; + if (bucket != null) { + baseCrosstabBucket = (JRBaseCrosstabBucket)get(bucket); + if (baseCrosstabBucket == null) + baseCrosstabBucket = new JRBaseCrosstabBucket(bucket, this); + } + return baseCrosstabBucket; + } + + public JRBaseCrosstabMeasure getCrosstabMeasure(JRCrosstabMeasure measure) { + JRBaseCrosstabMeasure baseCrosstabMeasure = null; + if (measure != null) { + baseCrosstabMeasure = (JRBaseCrosstabMeasure)get(measure); + if (baseCrosstabMeasure == null) + baseCrosstabMeasure = new JRBaseCrosstabMeasure(measure, this); + } + return baseCrosstabMeasure; + } + + public void visitCrosstab(JRCrosstab crosstab) { + JRBaseCrosstab baseCrosstab = null; + if (crosstab != null) { + baseCrosstab = (JRBaseCrosstab)get(crosstab); + if (baseCrosstab == null) { + Integer id = this.expressionCollector.getCrosstabId(crosstab); + if (id == null) + throw new JRRuntimeException("Crosstab ID not found."); + baseCrosstab = new JRBaseCrosstab(crosstab, this, id.intValue()); + } + } + setVisitResult(baseCrosstab); + } + + public JRBaseDataset getDataset(JRDataset dataset) { + JRBaseDataset baseDataset = null; + if (dataset != null) { + baseDataset = (JRBaseDataset)get(dataset); + if (baseDataset == null) + baseDataset = new JRBaseDataset(dataset, this); + } + return baseDataset; + } + + public JRBaseDatasetRun getDatasetRun(JRDatasetRun datasetRun) { + JRBaseDatasetRun baseDatasetRun = null; + if (datasetRun != null) { + baseDatasetRun = (JRBaseDatasetRun)get(datasetRun); + if (baseDatasetRun == null) + baseDatasetRun = new JRBaseDatasetRun(datasetRun, this); + } + return baseDatasetRun; + } + + public JRBaseCellContents getCell(JRCellContents cell) { + JRBaseCellContents baseCell = null; + if (cell != null) { + baseCell = (JRBaseCellContents)get(cell); + if (baseCell == null) + baseCell = new JRBaseCellContents(cell, this); + } + return baseCell; + } + + public JRCrosstabCell getCrosstabCell(JRCrosstabCell cell) { + JRBaseCrosstabCell baseCell = null; + if (cell != null) { + baseCell = (JRBaseCrosstabCell)get(cell); + if (baseCell == null) + baseCell = new JRBaseCrosstabCell(cell, this); + } + return (JRCrosstabCell)baseCell; + } + + public JRBaseCrosstabParameter getCrosstabParameter(JRCrosstabParameter parameter) { + JRBaseCrosstabParameter baseParameter = null; + if (parameter != null) { + baseParameter = (JRBaseCrosstabParameter)get(parameter); + if (baseParameter == null) + baseParameter = new JRBaseCrosstabParameter(parameter, this); + } + return baseParameter; + } + + public void visitFrame(JRFrame frame) { + JRBaseFrame baseFrame = null; + if (frame != null) { + baseFrame = (JRBaseFrame)get(frame); + if (baseFrame == null) + baseFrame = new JRBaseFrame(frame, this); + } + setVisitResult(baseFrame); + } + + public JRHyperlinkParameter getHyperlinkParameter(JRHyperlinkParameter parameter) { + JRHyperlinkParameter baseParameter = null; + if (parameter != null) { + baseParameter = (JRHyperlinkParameter)get(parameter); + if (baseParameter == null) + baseParameter = new JRBaseHyperlinkParameter(parameter, this); + } + return baseParameter; + } + + public JRHyperlink getHyperlink(JRHyperlink hyperlink) { + JRHyperlink link = null; + if (hyperlink != null) { + link = (JRHyperlink)get(hyperlink); + if (link == null) + link = new JRBaseHyperlink(hyperlink, this); + } + return link; + } + + public JRChartAxis getChartAxis(JRChartAxis axis) { + JRBaseChartAxis jRBaseChartAxis; + JRChartAxis baseAxis = null; + if (axis != null) { + baseAxis = (JRChartAxis)get(axis); + if (baseAxis == null) + jRBaseChartAxis = new JRBaseChartAxis(axis, this); + } + return (JRChartAxis)jRBaseChartAxis; + } + + public JRReportTemplate getReportTemplate(JRReportTemplate template) { + JRReportTemplate baseTemplate = null; + if (template != null) { + baseTemplate = (JRReportTemplate)get(template); + if (baseTemplate == null) + baseTemplate = new JRBaseReportTemplate(template, this); + } + return baseTemplate; + } + + public JRPropertyExpression getPropertyExpression(JRPropertyExpression propertyExpression) { + JRPropertyExpression baseProp = null; + if (propertyExpression != null) { + baseProp = (JRPropertyExpression)get(propertyExpression); + if (baseProp == null) + baseProp = new JRBasePropertyExpression(propertyExpression, this); + } + return baseProp; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseParameter.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseParameter.java new file mode 100644 index 0000000..90cca36 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseParameter.java @@ -0,0 +1,135 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRClassLoader; + +public class JRBaseParameter implements JRParameter, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DESCRIPTION = "description"; + + protected String name = null; + + protected String description = null; + + protected String valueClassName = String.class.getName(); + + protected String valueClassRealName = null; + + protected boolean isSystemDefined = false; + + protected boolean isForPrompting = true; + + protected transient Class valueClass = null; + + protected JRExpression defaultValueExpression = null; + + protected JRPropertiesMap propertiesMap; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseParameter() { + this.propertiesMap = new JRPropertiesMap(); + } + + protected JRBaseParameter(JRParameter parameter, JRBaseObjectFactory factory) { + factory.put(parameter, this); + this.name = parameter.getName(); + this.description = parameter.getDescription(); + this.valueClassName = parameter.getValueClassName(); + this.isSystemDefined = parameter.isSystemDefined(); + this.isForPrompting = parameter.isForPrompting(); + this.defaultValueExpression = factory.getExpression(parameter.getDefaultValueExpression()); + this.propertiesMap = parameter.getPropertiesMap().cloneProperties(); + } + + public String getName() { + return this.name; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + Object old = this.description; + this.description = description; + getEventSupport().firePropertyChange("description", old, this.description); + } + + public Class getValueClass() { + if (this.valueClass == null) { + String className = getValueClassRealName(); + if (className != null) + try { + this.valueClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException(e); + } + } + return this.valueClass; + } + + public String getValueClassName() { + return this.valueClassName; + } + + private String getValueClassRealName() { + if (this.valueClassRealName == null) + this.valueClassRealName = JRClassLoader.getClassRealName(this.valueClassName); + return this.valueClassRealName; + } + + public boolean isSystemDefined() { + return this.isSystemDefined; + } + + public boolean isForPrompting() { + return this.isForPrompting; + } + + public JRExpression getDefaultValueExpression() { + return this.defaultValueExpression; + } + + public boolean hasProperties() { + return (this.propertiesMap != null && this.propertiesMap.hasProperties()); + } + + public JRPropertiesMap getPropertiesMap() { + return this.propertiesMap; + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public Object clone() { + JRBaseParameter clone = null; + try { + clone = (JRBaseParameter)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.defaultValueExpression != null) + clone.defaultValueExpression = (JRExpression)this.defaultValueExpression.clone(); + if (this.propertiesMap != null) + clone.propertiesMap = (JRPropertiesMap)this.propertiesMap.clone(); + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePen.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePen.java new file mode 100644 index 0000000..96a1dc3 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePen.java @@ -0,0 +1,112 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBasePen implements JRPen, Serializable, Cloneable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_LINE_WIDTH = "lineWidth"; + + public static final String PROPERTY_LINE_STYLE = "lineStyle"; + + public static final String PROPERTY_LINE_COLOR = "lineColor"; + + protected JRPenContainer penContainer = null; + + protected Float lineWidth = null; + + protected Byte lineStyle = null; + + protected Color lineColor = null; + + private transient JRPropertyChangeSupport eventSupport; + + public JRBasePen(JRPenContainer penContainer) { + this.penContainer = penContainer; + } + + public JRStyleContainer getStyleContainer() { + return (JRStyleContainer)this.penContainer; + } + + public Float getLineWidth() { + return JRStyleResolver.getLineWidth(this, this.penContainer.getDefaultLineWidth()); + } + + public Float getOwnLineWidth() { + return this.lineWidth; + } + + public void setLineWidth(float lineWidth) { + setLineWidth(new Float(lineWidth)); + } + + public void setLineWidth(Float lineWidth) { + Object old = this.lineWidth; + this.lineWidth = lineWidth; + getEventSupport().firePropertyChange("lineWidth", old, this.lineWidth); + } + + public Byte getLineStyle() { + return JRStyleResolver.getLineStyle(this); + } + + public Byte getOwnLineStyle() { + return this.lineStyle; + } + + public void setLineStyle(byte lineStyle) { + setLineStyle(new Byte(lineStyle)); + } + + public void setLineStyle(Byte lineStyle) { + Object old = this.lineStyle; + this.lineStyle = lineStyle; + getEventSupport().firePropertyChange("lineStyle", old, this.lineStyle); + } + + public Color getLineColor() { + return JRStyleResolver.getLineColor(this, this.penContainer.getDefaultLineColor()); + } + + public Color getOwnLineColor() { + return this.lineColor; + } + + public void setLineColor(Color lineColor) { + Object old = this.lineColor; + this.lineColor = lineColor; + getEventSupport().firePropertyChange("lineColor", old, this.lineColor); + } + + public String getStyleNameReference() { + return null; + } + + public JRPen clone(JRPenContainer penContainer) { + JRBasePen clone = null; + try { + clone = (JRBasePen)clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + clone.penContainer = penContainer; + return clone; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintHyperlink.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintHyperlink.java new file mode 100644 index 0000000..0ac708d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintHyperlink.java @@ -0,0 +1,95 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameter; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameters; + +public class JRBasePrintHyperlink implements JRPrintHyperlink, Serializable { + private static final long serialVersionUID = 10200L; + + private String linkType; + + private byte hyperlinkTarget = 1; + + private String hyperlinkReference; + + private String hyperlinkAnchor; + + private Integer hyperlinkPage; + + private String hyperlinkTooltip; + + private JRPrintHyperlinkParameters hyperlinkParameters; + + public String getHyperlinkAnchor() { + return this.hyperlinkAnchor; + } + + public Integer getHyperlinkPage() { + return this.hyperlinkPage; + } + + public JRPrintHyperlinkParameters getHyperlinkParameters() { + return this.hyperlinkParameters; + } + + public String getHyperlinkReference() { + return this.hyperlinkReference; + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType(getLinkType()); + } + + public String getLinkType() { + return this.linkType; + } + + public void setHyperlinkAnchor(String hyperlinkAnchor) { + this.hyperlinkAnchor = hyperlinkAnchor; + } + + public void setHyperlinkPage(Integer hyperlinkPage) { + this.hyperlinkPage = hyperlinkPage; + } + + public void setHyperlinkParameters(JRPrintHyperlinkParameters parameters) { + this.hyperlinkParameters = parameters; + } + + public void setHyperlinkReference(String hyperlinkReference) { + this.hyperlinkReference = hyperlinkReference; + } + + public void setHyperlinkTarget(byte hyperlinkTarget) { + this.hyperlinkTarget = hyperlinkTarget; + } + + public void setHyperlinkType(byte hyperlinkType) { + setLinkType(JRHyperlinkHelper.getLinkType(hyperlinkType)); + } + + public void setLinkType(String type) { + this.linkType = type; + } + + public void addHyperlinkParameter(JRPrintHyperlinkParameter parameter) { + if (this.hyperlinkParameters == null) + this.hyperlinkParameters = new JRPrintHyperlinkParameters(); + this.hyperlinkParameters.addParameter(parameter); + } + + public String getHyperlinkTooltip() { + return this.hyperlinkTooltip; + } + + public void setHyperlinkTooltip(String hyperlinkTooltip) { + this.hyperlinkTooltip = hyperlinkTooltip; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintPage.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintPage.java new file mode 100644 index 0000000..9f662f1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePrintPage.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintPage; + +public class JRBasePrintPage implements JRPrintPage, Serializable { + private static final long serialVersionUID = 10200L; + + protected List elements = new ArrayList(); + + public List getElements() { + return this.elements; + } + + public void setElements(List elements) { + this.elements = elements; + } + + public void addElement(JRPrintElement element) { + this.elements.add(element); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePropertyExpression.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePropertyExpression.java new file mode 100644 index 0000000..5b59938 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBasePropertyExpression.java @@ -0,0 +1,56 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRBasePropertyExpression implements JRPropertyExpression, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_NAME = "name"; + + public static final String pROPERTY_VALUE_EXPRESSION = "valueExpression"; + + private String name; + + private JRExpression valueExpression; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBasePropertyExpression() {} + + public JRBasePropertyExpression(JRPropertyExpression propertyExpression, JRBaseObjectFactory factory) { + this.name = propertyExpression.getName(); + this.valueExpression = factory.getExpression(propertyExpression.getValueExpression()); + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + Object old = this.name; + this.name = name; + getEventSupport().firePropertyChange("name", old, this.name); + } + + public JRExpression getValueExpression() { + return this.valueExpression; + } + + protected void setValueExpression(JRExpression valueExpression) { + Object old = this.valueExpression; + this.valueExpression = valueExpression; + getEventSupport().firePropertyChange("valueExpression", old, this.valueExpression); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQuery.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQuery.java new file mode 100644 index 0000000..72c9666 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQuery.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRQueryChunk; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.util.JRQueryParser; + +public class JRBaseQuery implements JRQuery, Serializable { + private static final long serialVersionUID = 10200L; + + private JRQueryChunk[] chunks = null; + + protected String language = "sql"; + + protected JRBaseQuery() {} + + protected JRBaseQuery(JRQuery query, JRBaseObjectFactory factory) { + factory.put(query, this); + JRQueryChunk[] jrChunks = query.getChunks(); + if (jrChunks != null && jrChunks.length > 0) { + this.chunks = new JRQueryChunk[jrChunks.length]; + for (int i = 0; i < this.chunks.length; i++) + this.chunks[i] = factory.getQueryChunk(jrChunks[i]); + } + this.language = query.getLanguage(); + } + + public JRQueryChunk[] getChunks() { + return this.chunks; + } + + public String getText() { + return JRQueryParser.instance().asText(getChunks()); + } + + public String getLanguage() { + return this.language; + } + + public Object clone() { + JRBaseQuery clone = null; + try { + clone = (JRBaseQuery)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.chunks != null) { + clone.chunks = new JRQueryChunk[this.chunks.length]; + for (int i = 0; i < this.chunks.length; i++) + clone.chunks[i] = (JRQueryChunk)this.chunks[i].clone(); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQueryChunk.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQueryChunk.java new file mode 100644 index 0000000..c0fc7e8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseQueryChunk.java @@ -0,0 +1,53 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRQueryChunk; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.util.JRQueryParser; + +public class JRBaseQueryChunk implements JRQueryChunk, Serializable { + private static final long serialVersionUID = 10200L; + + protected byte type = 1; + + protected String text = null; + + protected String[] tokens; + + protected JRBaseQueryChunk() {} + + protected JRBaseQueryChunk(JRQueryChunk queryChunk, JRBaseObjectFactory factory) { + factory.put(queryChunk, this); + this.type = queryChunk.getType(); + this.text = queryChunk.getText(); + String[] chunkTokens = queryChunk.getTokens(); + if (chunkTokens == null) { + this.tokens = null; + } else { + this.tokens = new String[chunkTokens.length]; + System.arraycopy(chunkTokens, 0, this.tokens, 0, chunkTokens.length); + } + } + + public byte getType() { + return this.type; + } + + public String getText() { + if (this.type == 4) + return JRQueryParser.instance().asClauseText(getTokens()); + return this.text; + } + + public String[] getTokens() { + return this.tokens; + } + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseRectangle.java new file mode 100644 index 0000000..805aa58 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseRectangle.java @@ -0,0 +1,45 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRCommonRectangle; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseRectangle extends JRBaseGraphicElement implements JRRectangle { + private static final long serialVersionUID = 10200L; + + protected Integer radius; + + protected JRBaseRectangle(JRRectangle rectangle, JRBaseObjectFactory factory) { + super((JRGraphicElement)rectangle, factory); + this.radius = rectangle.getOwnRadius(); + } + + public int getRadius() { + return JRStyleResolver.getRadius((JRCommonRectangle)this); + } + + public Integer getOwnRadius() { + return this.radius; + } + + public void setRadius(int radius) { + setRadius(new Integer(radius)); + } + + public void setRadius(Integer radius) { + Object old = this.radius; + this.radius = radius; + getEventSupport().firePropertyChange("radius", old, this.radius); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitRectangle(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReport.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReport.java new file mode 100644 index 0000000..2344351 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReport.java @@ -0,0 +1,415 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRReport; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRBaseReport implements JRReport, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_WHEN_NO_DATA_TYPE = "whenNoDataType"; + + protected String name = null; + + protected String language = "java"; + + protected int columnCount = 1; + + protected byte printOrder = 1; + + protected int pageWidth = 595; + + protected int pageHeight = 842; + + protected byte orientation = 1; + + protected byte whenNoDataType = 1; + + protected int columnWidth = 555; + + protected int columnSpacing = 0; + + protected int leftMargin = 20; + + protected int rightMargin = 20; + + protected int topMargin = 30; + + protected int bottomMargin = 30; + + protected boolean isTitleNewPage = false; + + protected boolean isSummaryNewPage = false; + + protected boolean isFloatColumnFooter = false; + + protected boolean ignorePagination = false; + + protected String formatFactoryClass = null; + + protected Set importsSet = null; + + protected JRReportTemplate[] templates; + + protected JRReportFont defaultFont = null; + + protected JRReportFont[] fonts = null; + + protected JRStyle defaultStyle = null; + + protected JRStyle[] styles = null; + + protected JRDataset mainDataset; + + protected JRDataset[] datasets; + + protected JRBand background = null; + + protected JRBand title = null; + + protected JRBand pageHeader = null; + + protected JRBand columnHeader = null; + + protected JRBand detail = null; + + protected JRBand columnFooter = null; + + protected JRBand pageFooter = null; + + protected JRBand lastPageFooter = null; + + protected JRBand summary = null; + + protected JRBand noData = null; + + private transient JRPropertyChangeSupport eventSupport; + + public JRBaseReport() {} + + public JRBaseReport(JRReport report, JRExpressionCollector expressionCollector) { + this.name = report.getName(); + this.language = report.getLanguage(); + this.columnCount = report.getColumnCount(); + this.printOrder = report.getPrintOrder(); + this.pageWidth = report.getPageWidth(); + this.pageHeight = report.getPageHeight(); + this.orientation = report.getOrientation(); + this.whenNoDataType = report.getWhenNoDataType(); + this.columnWidth = report.getColumnWidth(); + this.columnSpacing = report.getColumnSpacing(); + this.leftMargin = report.getLeftMargin(); + this.rightMargin = report.getRightMargin(); + this.topMargin = report.getTopMargin(); + this.bottomMargin = report.getBottomMargin(); + this.isTitleNewPage = report.isTitleNewPage(); + this.isSummaryNewPage = report.isSummaryNewPage(); + this.isFloatColumnFooter = report.isFloatColumnFooter(); + this.ignorePagination = report.isIgnorePagination(); + this.formatFactoryClass = report.getFormatFactoryClass(); + String[] imports = report.getImports(); + if (imports != null && imports.length > 0) { + this.importsSet = new HashSet(imports.length); + this.importsSet.addAll(Arrays.asList(imports)); + } + JRBaseObjectFactory factory = new JRBaseObjectFactory((JRDefaultStyleProvider)this, expressionCollector); + copyTemplates(report, factory); + this.defaultFont = factory.getReportFont(report.getDefaultFont()); + JRReportFont[] jrFonts = report.getFonts(); + if (jrFonts != null && jrFonts.length > 0) { + this.fonts = new JRReportFont[jrFonts.length]; + for (int i = 0; i < this.fonts.length; i++) + this.fonts[i] = factory.getReportFont(jrFonts[i]); + } + this.defaultStyle = factory.getStyle(report.getDefaultStyle()); + JRStyle[] jrStyles = report.getStyles(); + if (jrStyles != null && jrStyles.length > 0) { + this.styles = new JRStyle[jrStyles.length]; + for (int i = 0; i < this.styles.length; i++) + this.styles[i] = factory.getStyle(jrStyles[i]); + } + this.mainDataset = factory.getDataset(report.getMainDataset()); + JRDataset[] datasetArray = report.getDatasets(); + if (datasetArray != null && datasetArray.length > 0) { + this.datasets = new JRDataset[datasetArray.length]; + for (int i = 0; i < this.datasets.length; i++) + this.datasets[i] = factory.getDataset(datasetArray[i]); + } + this.background = factory.getBand(report.getBackground()); + this.title = factory.getBand(report.getTitle()); + this.pageHeader = factory.getBand(report.getPageHeader()); + this.columnHeader = factory.getBand(report.getColumnHeader()); + this.detail = factory.getBand(report.getDetail()); + this.columnFooter = factory.getBand(report.getColumnFooter()); + this.pageFooter = factory.getBand(report.getPageFooter()); + this.lastPageFooter = factory.getBand(report.getLastPageFooter()); + this.summary = factory.getBand(report.getSummary()); + this.noData = factory.getBand(report.getNoData()); + } + + protected void copyTemplates(JRReport report, JRBaseObjectFactory factory) { + JRReportTemplate[] reportTemplates = report.getTemplates(); + if (reportTemplates == null || reportTemplates.length == 0) { + this.templates = null; + } else { + this.templates = new JRReportTemplate[reportTemplates.length]; + for (int i = 0; i < reportTemplates.length; i++) + this.templates[i] = factory.getReportTemplate(reportTemplates[i]); + } + } + + public JRBaseReport(JRReport report) { + this(report, null); + } + + public String getName() { + return this.name; + } + + public String getLanguage() { + return this.language; + } + + public int getColumnCount() { + return this.columnCount; + } + + public byte getPrintOrder() { + return this.printOrder; + } + + public int getPageWidth() { + return this.pageWidth; + } + + public int getPageHeight() { + return this.pageHeight; + } + + public byte getOrientation() { + return this.orientation; + } + + public byte getWhenNoDataType() { + return this.whenNoDataType; + } + + public void setWhenNoDataType(byte whenNoDataType) { + byte old = getWhenNoDataType(); + this.whenNoDataType = whenNoDataType; + getEventSupport().firePropertyChange("whenNoDataType", old, getWhenNoDataType()); + } + + public int getColumnWidth() { + return this.columnWidth; + } + + public int getColumnSpacing() { + return this.columnSpacing; + } + + public int getLeftMargin() { + return this.leftMargin; + } + + public int getRightMargin() { + return this.rightMargin; + } + + public int getTopMargin() { + return this.topMargin; + } + + public int getBottomMargin() { + return this.bottomMargin; + } + + public boolean isTitleNewPage() { + return this.isTitleNewPage; + } + + public boolean isSummaryNewPage() { + return this.isSummaryNewPage; + } + + public boolean isFloatColumnFooter() { + return this.isFloatColumnFooter; + } + + public String getScriptletClass() { + return this.mainDataset.getScriptletClass(); + } + + public String getFormatFactoryClass() { + return this.formatFactoryClass; + } + + public String getResourceBundle() { + return this.mainDataset.getResourceBundle(); + } + + public String[] getPropertyNames() { + return this.mainDataset.getPropertiesMap().getPropertyNames(); + } + + public String getProperty(String propName) { + return this.mainDataset.getPropertiesMap().getProperty(propName); + } + + public void setProperty(String propName, String value) { + this.mainDataset.getPropertiesMap().setProperty(propName, value); + } + + public void removeProperty(String propName) { + this.mainDataset.getPropertiesMap().removeProperty(propName); + } + + public String[] getImports() { + if (this.importsSet != null) + return (String[])this.importsSet.toArray((Object[])new String[this.importsSet.size()]); + return null; + } + + public JRReportFont getDefaultFont() { + return this.defaultFont; + } + + public JRReportFont[] getFonts() { + return this.fonts; + } + + public JRStyle getDefaultStyle() { + return this.defaultStyle; + } + + public JRStyle[] getStyles() { + return this.styles; + } + + public JRParameter[] getParameters() { + return this.mainDataset.getParameters(); + } + + public JRQuery getQuery() { + return this.mainDataset.getQuery(); + } + + public JRField[] getFields() { + return this.mainDataset.getFields(); + } + + public JRSortField[] getSortFields() { + return this.mainDataset.getSortFields(); + } + + public JRVariable[] getVariables() { + return this.mainDataset.getVariables(); + } + + public JRGroup[] getGroups() { + return this.mainDataset.getGroups(); + } + + public JRBand getBackground() { + return this.background; + } + + public JRBand getTitle() { + return this.title; + } + + public JRBand getPageHeader() { + return this.pageHeader; + } + + public JRBand getColumnHeader() { + return this.columnHeader; + } + + public JRBand getDetail() { + return this.detail; + } + + public JRBand getColumnFooter() { + return this.columnFooter; + } + + public JRBand getPageFooter() { + return this.pageFooter; + } + + public JRBand getLastPageFooter() { + return this.lastPageFooter; + } + + public JRBand getSummary() { + return this.summary; + } + + public byte getWhenResourceMissingType() { + return this.mainDataset.getWhenResourceMissingType(); + } + + public void setWhenResourceMissingType(byte whenResourceMissingType) { + this.mainDataset.setWhenResourceMissingType(whenResourceMissingType); + } + + public JRDataset getMainDataset() { + return this.mainDataset; + } + + public JRDataset[] getDatasets() { + return this.datasets; + } + + public boolean isIgnorePagination() { + return this.ignorePagination; + } + + public boolean hasProperties() { + return this.mainDataset.hasProperties(); + } + + public JRPropertiesMap getPropertiesMap() { + return this.mainDataset.getPropertiesMap(); + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public JRReportTemplate[] getTemplates() { + return this.templates; + } + + public JRBand getNoData() { + return this.noData; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportFont.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportFont.java new file mode 100644 index 0000000..61e3932 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportFont.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRReportFont; + +public class JRBaseReportFont extends JRBaseFont implements JRReportFont { + private static final long serialVersionUID = 10200L; + + protected String name = null; + + protected boolean isDefault = false; + + public JRBaseReportFont(JRReportFont reportFont) { + super(null, null, (JRFont)reportFont); + this.name = reportFont.getName(); + this.isDefault = reportFont.isDefault(); + } + + public String getName() { + return this.name; + } + + public boolean isDefault() { + return this.isDefault; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportTemplate.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportTemplate.java new file mode 100644 index 0000000..4e3f6c4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReportTemplate.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRAbstractObjectFactory; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRReportTemplate; + +public class JRBaseReportTemplate implements JRReportTemplate, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRExpression sourceExpression; + + protected JRBaseReportTemplate() {} + + public JRBaseReportTemplate(JRReportTemplate reportTemplate, JRAbstractObjectFactory factory) { + factory.put(reportTemplate, this); + this.sourceExpression = factory.getExpression(reportTemplate.getSourceExpression()); + } + + public JRExpression getSourceExpression() { + return this.sourceExpression; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSortField.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSortField.java new file mode 100644 index 0000000..2ffcd46 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSortField.java @@ -0,0 +1,57 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRBaseSortField implements JRSortField, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_ORDER = "order"; + + protected String name = null; + + protected byte order = 0; + + private transient JRPropertyChangeSupport eventSupport; + + protected JRBaseSortField() {} + + protected JRBaseSortField(JRSortField sortField, JRBaseObjectFactory factory) { + factory.put(sortField, this); + this.name = sortField.getName(); + this.order = sortField.getOrder(); + } + + public String getName() { + return this.name; + } + + public byte getOrder() { + return this.order; + } + + public void setOrder(byte order) { + byte old = this.order; + this.order = order; + getEventSupport().firePropertyChange("order", old, this.order); + } + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStaticText.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStaticText.java new file mode 100644 index 0000000..cb5b528 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStaticText.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRBaseStaticText extends JRBaseTextElement implements JRStaticText { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TEXT = "text"; + + protected String text = null; + + protected JRBaseStaticText(JRStaticText staticText, JRBaseObjectFactory factory) { + super((JRTextElement)staticText, factory); + this.text = staticText.getText(); + } + + public String getText() { + return this.text; + } + + public void setText(String text) { + Object old = this.text; + this.text = text; + getEventSupport().firePropertyChange("text", old, this.text); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitStaticText(this); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStyle.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStyle.java new file mode 100644 index 0000000..d526e61 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseStyle.java @@ -0,0 +1,999 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRAbstractObjectFactory; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRConditionalStyle; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRStyleSetter; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseStyle implements JRStyle, Serializable, JRChangeEventsSupport { + private static final long serialVersionUID = 10001L; + + public static final String PROPERTY_BACKCOLOR = "backcolor"; + + public static final String PROPERTY_BLANK_WHEN_NULL = "blankWhenNull"; + + public static final String PROPERTY_BOLD = "bold"; + + public static final String PROPERTY_FILL = "fill"; + + public static final String PROPERTY_FONT_NAME = "fontName"; + + public static final String PROPERTY_FONT_SIZE = "fontSize"; + + public static final String PROPERTY_FORECOLOR = "forecolor"; + + public static final String PROPERTY_HORIZONTAL_ALIGNMENT = "horizontalAlignment"; + + public static final String PROPERTY_ITALIC = "italic"; + + public static final String PROPERTY_LINE_SPACING = "lineSpacing"; + + public static final String PROPERTY_MODE = "mode"; + + public static final String PROPERTY_PATTERN = "pattern"; + + public static final String PROPERTY_PDF_EMBEDDED = "pdfEmbedded"; + + public static final String PROPERTY_PDF_ENCODING = "pdfEncoding"; + + public static final String PROPERTY_PDF_FONT_NAME = "pdfFontName"; + + public static final String PROPERTY_RADIUS = "radius"; + + public static final String PROPERTY_ROTATION = "rotation"; + + public static final String PROPERTY_SCALE_IMAGE = "scaleImage"; + + public static final String PROPERTY_STRIKE_THROUGH = "strikeThrough"; + + public static final String PROPERTY_IS_STYLED_TEXT = "isStyledText"; + + public static final String PROPERTY_MARKUP = "markup"; + + public static final String PROPERTY_UNDERLINE = "underline"; + + public static final String PROPERTY_VERTICAL_ALIGNMENT = "verticalAlignment"; + + protected JRDefaultStyleProvider defaultStyleProvider = null; + + protected JRStyle parentStyle = null; + + protected String parentStyleNameReference; + + protected String name = null; + + protected boolean isDefault = false; + + protected Byte positionType = null; + + protected Byte stretchType = null; + + protected Byte mode = null; + + protected Color forecolor = null; + + protected Color backcolor = null; + + protected JRPen linePen = null; + + protected Byte fill = null; + + protected Integer radius = null; + + protected Byte scaleImage = null; + + protected Byte horizontalAlignment = null; + + protected Byte verticalAlignment = null; + + protected JRLineBox lineBox = null; + + protected String fontName = null; + + protected Boolean isBold = null; + + protected Boolean isItalic = null; + + protected Boolean isUnderline = null; + + protected Boolean isStrikeThrough = null; + + protected Integer fontSize = null; + + protected String pdfFontName = null; + + protected String pdfEncoding = null; + + protected Boolean isPdfEmbedded = null; + + protected Byte rotation = null; + + protected Byte lineSpacing = null; + + protected String markup = null; + + protected String pattern = null; + + protected Boolean isBlankWhenNull = null; + + protected JRConditionalStyle[] conditionalStyles; + + private transient JRPropertyChangeSupport eventSupport; + + private Byte pen; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + private Boolean isStyledText; + + protected void setParentStyle(JRStyle parentStyle) { + this.parentStyle = parentStyle; + checkCircularParent(); + } + + protected void checkCircularParent() { + for (JRStyle ancestor = this.parentStyle; ancestor != null; ancestor = ancestor.getStyle()) { + if (ancestor == this) + throw new JRRuntimeException("Circular dependency detected for style " + getName()); + } + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public JRStyle getStyle() { + return this.parentStyle; + } + + public String getName() { + return this.name; + } + + public void rename(String newName) { + this.name = newName; + } + + public boolean isDefault() { + return this.isDefault; + } + + public Color getForecolor() { + return JRStyleResolver.getForecolor(this); + } + + public Color getOwnForecolor() { + return this.forecolor; + } + + public Color getBackcolor() { + return JRStyleResolver.getBackcolor(this); + } + + public Color getOwnBackcolor() { + return this.backcolor; + } + + public JRPen getLinePen() { + return this.linePen; + } + + public Byte getPen() { + return new Byte(JRPenUtil.getPenFromLinePen(this.linePen)); + } + + public Byte getOwnPen() { + return JRPenUtil.getOwnPenFromLinePen(this.linePen); + } + + public void setPen(byte pen) { + setPen(new Byte(pen)); + } + + public void setPen(Byte pen) { + JRPenUtil.setLinePenFromPen(pen, this.linePen); + } + + public Byte getFill() { + return JRStyleResolver.getFill(this); + } + + public Byte getOwnFill() { + return this.fill; + } + + public Integer getRadius() { + return JRStyleResolver.getRadius(this); + } + + public Integer getOwnRadius() { + return this.radius; + } + + public Byte getScaleImage() { + return JRStyleResolver.getScaleImage(this); + } + + public Byte getOwnScaleImage() { + return this.scaleImage; + } + + public Byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment(this); + } + + public Byte getOwnHorizontalAlignment() { + return this.horizontalAlignment; + } + + public Byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment(this); + } + + public Byte getOwnVerticalAlignment() { + return this.verticalAlignment; + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public Byte getBorder() { + return new Byte(JRPenUtil.getPenFromLinePen(this.lineBox.getPen())); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public Integer getPadding() { + return this.lineBox.getPadding(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public Byte getTopBorder() { + return new Byte(JRPenUtil.getPenFromLinePen(this.lineBox.getTopPen())); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public Integer getTopPadding() { + return this.lineBox.getTopPadding(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public Byte getLeftBorder() { + return new Byte(JRPenUtil.getPenFromLinePen(this.lineBox.getLeftPen())); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public Integer getLeftPadding() { + return this.lineBox.getLeftPadding(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public Byte getBottomBorder() { + return new Byte(JRPenUtil.getPenFromLinePen(this.lineBox.getBottomPen())); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public Integer getBottomPadding() { + return this.lineBox.getBottomPadding(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public Byte getRightBorder() { + return new Byte(JRPenUtil.getPenFromLinePen(this.lineBox.getRightPen())); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public Integer getRightPadding() { + return this.lineBox.getRightPadding(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public Byte getRotation() { + return JRStyleResolver.getRotation(this); + } + + public Byte getOwnRotation() { + return this.rotation; + } + + public Byte getLineSpacing() { + return JRStyleResolver.getLineSpacing(this); + } + + public Byte getOwnLineSpacing() { + return this.lineSpacing; + } + + public Boolean isStyledText() { + String mkp = getMarkup(); + return "styled".equals(mkp) ? Boolean.TRUE : ((mkp == null) ? null : Boolean.FALSE); + } + + public Boolean isOwnStyledText() { + String mkp = getOwnMarkup(); + return "styled".equals(mkp) ? Boolean.TRUE : ((mkp == null) ? null : Boolean.FALSE); + } + + public String getMarkup() { + return JRStyleResolver.getMarkup(this); + } + + public String getOwnMarkup() { + return this.markup; + } + + public Boolean isBlankWhenNull() { + return JRStyleResolver.isBlankWhenNull(this); + } + + public Boolean isOwnBlankWhenNull() { + return this.isBlankWhenNull; + } + + public String getFontName() { + return JRStyleResolver.getFontName(this); + } + + public String getOwnFontName() { + return this.fontName; + } + + public Boolean isBold() { + return JRStyleResolver.isBold(this); + } + + public Boolean isOwnBold() { + return this.isBold; + } + + public Boolean isItalic() { + return JRStyleResolver.isItalic(this); + } + + public Boolean isOwnItalic() { + return this.isItalic; + } + + public Boolean isUnderline() { + return JRStyleResolver.isUnderline(this); + } + + public Boolean isOwnUnderline() { + return this.isUnderline; + } + + public Boolean isStrikeThrough() { + return JRStyleResolver.isStrikeThrough(this); + } + + public Boolean isOwnStrikeThrough() { + return this.isStrikeThrough; + } + + public Integer getFontSize() { + return JRStyleResolver.getFontSize(this); + } + + public Integer getOwnFontSize() { + return this.fontSize; + } + + public String getPdfFontName() { + return JRStyleResolver.getPdfFontName(this); + } + + public String getOwnPdfFontName() { + return this.pdfFontName; + } + + public String getPdfEncoding() { + return JRStyleResolver.getPdfEncoding(this); + } + + public String getOwnPdfEncoding() { + return this.pdfEncoding; + } + + public Boolean isPdfEmbedded() { + return JRStyleResolver.isPdfEmbedded(this); + } + + public Boolean isOwnPdfEmbedded() { + return this.isPdfEmbedded; + } + + public String getPattern() { + return JRStyleResolver.getPattern(this); + } + + public String getOwnPattern() { + return this.pattern; + } + + public Byte getMode() { + return JRStyleResolver.getMode(this); + } + + public Byte getOwnMode() { + return this.mode; + } + + public void setForecolor(Color forecolor) { + Object old = this.forecolor; + this.forecolor = forecolor; + getEventSupport().firePropertyChange("forecolor", old, this.forecolor); + } + + public void setBackcolor(Color backcolor) { + Object old = this.backcolor; + this.backcolor = backcolor; + getEventSupport().firePropertyChange("backcolor", old, this.backcolor); + } + + public void setMode(byte mode) { + setMode(new Byte(mode)); + } + + public void setMode(Byte mode) { + Object old = this.mode; + this.mode = mode; + getEventSupport().firePropertyChange("mode", old, this.mode); + } + + public void setFill(byte fill) { + setFill(new Byte(fill)); + } + + public void setFill(Byte fill) { + Object old = this.fill; + this.fill = fill; + getEventSupport().firePropertyChange("fill", old, this.fill); + } + + public void setRadius(int radius) { + setRadius(new Integer(radius)); + } + + public void setRadius(Integer radius) { + Object old = this.radius; + this.radius = radius; + getEventSupport().firePropertyChange("radius", old, this.radius); + } + + public void setScaleImage(byte scaleImage) { + setScaleImage(new Byte(scaleImage)); + } + + public void setScaleImage(Byte scaleImage) { + Object old = this.scaleImage; + this.scaleImage = scaleImage; + getEventSupport().firePropertyChange("scaleImage", old, this.scaleImage); + } + + public void setHorizontalAlignment(byte horizontalAlignment) { + setHorizontalAlignment(new Byte(horizontalAlignment)); + } + + public void setHorizontalAlignment(Byte horizontalAlignment) { + Object old = this.horizontalAlignment; + this.horizontalAlignment = horizontalAlignment; + getEventSupport().firePropertyChange("horizontalAlignment", old, this.horizontalAlignment); + } + + public void setVerticalAlignment(byte verticalAlignment) { + setVerticalAlignment(new Byte(verticalAlignment)); + } + + public void setVerticalAlignment(Byte verticalAlignment) { + Object old = this.verticalAlignment; + this.verticalAlignment = verticalAlignment; + getEventSupport().firePropertyChange("verticalAlignment", old, this.verticalAlignment); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRotation(byte rotation) { + setRotation(new Byte(rotation)); + } + + public void setRotation(Byte rotation) { + Object old = this.rotation; + this.rotation = rotation; + getEventSupport().firePropertyChange("rotation", old, this.rotation); + } + + public void setFontName(String fontName) { + Object old = this.fontName; + this.fontName = fontName; + getEventSupport().firePropertyChange("fontName", old, this.fontName); + } + + public void setBold(boolean bold) { + setBold(bold ? Boolean.TRUE : Boolean.FALSE); + } + + public void setBold(Boolean bold) { + Object old = this.isBold; + this.isBold = bold; + getEventSupport().firePropertyChange("bold", old, this.isBold); + } + + public void setItalic(boolean italic) { + setItalic(italic ? Boolean.TRUE : Boolean.FALSE); + } + + public void setItalic(Boolean italic) { + Object old = this.isItalic; + this.isItalic = italic; + getEventSupport().firePropertyChange("italic", old, this.isItalic); + } + + public void setPdfEmbedded(boolean pdfEmbedded) { + setPdfEmbedded(pdfEmbedded ? Boolean.TRUE : Boolean.FALSE); + } + + public void setPdfEmbedded(Boolean pdfEmbedded) { + Object old = this.isPdfEmbedded; + this.isPdfEmbedded = pdfEmbedded; + getEventSupport().firePropertyChange("pdfEmbedded", old, this.isPdfEmbedded); + } + + public void setStrikeThrough(boolean strikeThrough) { + setStrikeThrough(strikeThrough ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStrikeThrough(Boolean strikeThrough) { + Object old = this.isStrikeThrough; + this.isStrikeThrough = strikeThrough; + getEventSupport().firePropertyChange("strikeThrough", old, this.isStrikeThrough); + } + + public void setStyledText(boolean styledText) { + setStyledText(styledText ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStyledText(Boolean styledText) { + if (styledText == null) { + setMarkup(null); + } else { + setMarkup(styledText.booleanValue() ? "styled" : "none"); + } + } + + public void setMarkup(String markup) { + Object old = this.markup; + this.markup = markup; + getEventSupport().firePropertyChange("markup", old, this.markup); + } + + public void setBlankWhenNull(boolean isBlankWhenNull) { + setBlankWhenNull(isBlankWhenNull ? Boolean.TRUE : Boolean.FALSE); + } + + public void setBlankWhenNull(Boolean isBlankWhenNull) { + Object old = this.isBlankWhenNull; + this.isBlankWhenNull = isBlankWhenNull; + getEventSupport().firePropertyChange("blankWhenNull", old, this.isBlankWhenNull); + } + + public void setUnderline(boolean underline) { + setUnderline(underline ? Boolean.TRUE : Boolean.FALSE); + } + + public void setUnderline(Boolean underline) { + Object old = this.isUnderline; + this.isUnderline = underline; + getEventSupport().firePropertyChange("underline", old, this.isUnderline); + } + + public void setLineSpacing(byte lineSpacing) { + setLineSpacing(new Byte(lineSpacing)); + } + + public void setLineSpacing(Byte lineSpacing) { + Object old = this.lineSpacing; + this.lineSpacing = lineSpacing; + getEventSupport().firePropertyChange("lineSpacing", old, this.lineSpacing); + } + + public void setPattern(String pattern) { + Object old = this.pattern; + this.pattern = pattern; + getEventSupport().firePropertyChange("pattern", old, this.pattern); + } + + public void setPdfEncoding(String pdfEncoding) { + Object old = this.pdfEncoding; + this.pdfEncoding = pdfEncoding; + getEventSupport().firePropertyChange("pdfEncoding", old, this.pdfEncoding); + } + + public void setPdfFontName(String pdfFontName) { + Object old = this.pdfFontName; + this.pdfFontName = pdfFontName; + getEventSupport().firePropertyChange("pdfFontName", old, this.pdfFontName); + } + + public void setFontSize(int fontSize) { + setFontSize(new Integer(fontSize)); + } + + public void setFontSize(Integer fontSize) { + Object old = this.fontSize; + this.fontSize = fontSize; + getEventSupport().firePropertyChange("fontSize", old, this.fontSize); + } + + public JRConditionalStyle[] getConditionalStyles() { + return this.conditionalStyles; + } + + public String getStyleNameReference() { + return this.parentStyleNameReference; + } + + public Float getDefaultLineWidth() { + return null; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } + + public JRBaseStyle() { + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.isStyledText = null; + this.linePen = new JRBasePen((JRPenContainer)this); + this.lineBox = new JRBaseLineBox((JRBoxContainer)this); + } + + public JRBaseStyle(String name) { + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.isStyledText = null; + this.name = name; + this.linePen = new JRBasePen((JRPenContainer)this); + this.lineBox = new JRBaseLineBox((JRBoxContainer)this); + } + + public JRBaseStyle(JRStyle style, JRAbstractObjectFactory factory) { + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.isStyledText = null; + this.name = style.getName(); + factory.setStyle(new JRStyleSetter() { + private final JRBaseStyle this$0; + + public void setStyle(JRStyle aStyle) { + JRBaseStyle.this.setParentStyle(aStyle); + } + + public void setStyleNameReference(String name) { + JRBaseStyle.this.parentStyleNameReference = name; + } + }, (JRStyleContainer)style); + this.isDefault = style.isDefault(); + this.mode = style.getOwnMode(); + this.forecolor = style.getOwnForecolor(); + this.backcolor = style.getOwnBackcolor(); + this.linePen = style.getLinePen().clone((JRPenContainer)this); + this.fill = style.getOwnFill(); + this.radius = style.getOwnRadius(); + this.scaleImage = style.getOwnScaleImage(); + this.horizontalAlignment = style.getOwnHorizontalAlignment(); + this.verticalAlignment = style.getOwnVerticalAlignment(); + this.lineBox = style.getLineBox().clone((JRBoxContainer)this); + this.rotation = style.getOwnRotation(); + this.lineSpacing = style.getOwnLineSpacing(); + this.markup = style.getOwnMarkup(); + this.pattern = style.getOwnPattern(); + this.fontName = style.getOwnFontName(); + this.isBold = style.isOwnBold(); + this.isItalic = style.isOwnItalic(); + this.isUnderline = style.isOwnUnderline(); + this.isStrikeThrough = style.isOwnStrikeThrough(); + this.fontSize = style.getOwnFontSize(); + this.pdfFontName = style.getOwnPdfFontName(); + this.pdfEncoding = style.getOwnPdfEncoding(); + this.isPdfEmbedded = style.isOwnPdfEmbedded(); + this.isBlankWhenNull = style.isOwnBlankWhenNull(); + JRConditionalStyle[] condStyles = style.getConditionalStyles(); + if (condStyles != null && condStyles.length > 0) { + this.conditionalStyles = new JRConditionalStyle[condStyles.length]; + for (int i = 0; i < condStyles.length; i++) + this.conditionalStyles[i] = factory.getConditionalStyle(condStyles[i], this); + } + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.linePen == null) { + this.linePen = new JRBasePen((JRPenContainer)this); + JRPenUtil.setLinePenFromPen(this.pen, this.linePen); + this.pen = null; + } + if (this.lineBox == null) { + this.lineBox = new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + if (this.isStyledText != null) { + this.markup = this.isStyledText.booleanValue() ? "styled" : "none"; + this.isStyledText = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreport.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreport.java new file mode 100644 index 0000000..aff23bf --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreport.java @@ -0,0 +1,135 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRSubreportParameter; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseSubreport extends JRBaseElement implements JRSubreport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_USING_CACHE = "usingCache"; + + protected Boolean isUsingCache = null; + + protected JRExpression parametersMapExpression = null; + + protected JRSubreportParameter[] parameters = null; + + protected JRExpression connectionExpression = null; + + protected JRExpression dataSourceExpression = null; + + protected JRExpression expression = null; + + protected JRSubreportReturnValue[] returnValues = null; + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + protected JRBaseSubreport(JRSubreport subreport, JRBaseObjectFactory factory) { + super((JRElement)subreport, factory); + this.isUsingCache = subreport.isOwnUsingCache(); + this.parametersMapExpression = factory.getExpression(subreport.getParametersMapExpression()); + JRSubreportParameter[] jrSubreportParameters = subreport.getParameters(); + if (jrSubreportParameters != null && jrSubreportParameters.length > 0) { + this.parameters = new JRSubreportParameter[jrSubreportParameters.length]; + for (int i = 0; i < this.parameters.length; i++) + this.parameters[i] = factory.getSubreportParameter(jrSubreportParameters[i]); + } + this.connectionExpression = factory.getExpression(subreport.getConnectionExpression()); + this.dataSourceExpression = factory.getExpression(subreport.getDataSourceExpression()); + JRSubreportReturnValue[] subrepReturnValues = subreport.getReturnValues(); + if (subrepReturnValues != null && subrepReturnValues.length > 0) { + this.returnValues = new JRSubreportReturnValue[subrepReturnValues.length]; + for (int i = 0; i < subrepReturnValues.length; i++) + this.returnValues[i] = factory.getSubreportReturnValue(subrepReturnValues[i]); + } + this.expression = factory.getExpression(subreport.getExpression()); + } + + public boolean isUsingCache() { + if (this.isUsingCache == null) { + JRExpression subreportExpression = getExpression(); + if (subreportExpression != null) + return String.class.getName().equals(subreportExpression.getValueClassName()); + return true; + } + return this.isUsingCache.booleanValue(); + } + + public void setUsingCache(boolean isUsingCache) { + setUsingCache(isUsingCache ? Boolean.TRUE : Boolean.FALSE); + } + + public JRExpression getParametersMapExpression() { + return this.parametersMapExpression; + } + + public JRSubreportParameter[] getParameters() { + return this.parameters; + } + + public JRExpression getConnectionExpression() { + return this.connectionExpression; + } + + public JRExpression getDataSourceExpression() { + return this.dataSourceExpression; + } + + public JRExpression getExpression() { + return this.expression; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitSubreport(this); + } + + public JRSubreportReturnValue[] getReturnValues() { + return this.returnValues; + } + + public Boolean isOwnUsingCache() { + return this.isUsingCache; + } + + public void setUsingCache(Boolean isUsingCache) { + Object old = this.isUsingCache; + this.isUsingCache = isUsingCache; + getEventSupport().firePropertyChange("usingCache", old, this.isUsingCache); + } + + public Object clone() { + JRBaseSubreport clone = (JRBaseSubreport)super.clone(); + if (this.parameters != null) { + clone.parameters = new JRSubreportParameter[this.parameters.length]; + for (int i = 0; i < this.parameters.length; i++) + clone.parameters[i] = (JRSubreportParameter)this.parameters[i].clone(); + } + if (this.returnValues != null) { + clone.returnValues = new JRSubreportReturnValue[this.returnValues.length]; + for (int i = 0; i < this.returnValues.length; i++) + clone.returnValues[i] = (JRSubreportReturnValue)this.returnValues[i].clone(); + } + if (this.parametersMapExpression != null) + clone.parametersMapExpression = (JRExpression)this.parametersMapExpression.clone(); + if (this.connectionExpression != null) + clone.connectionExpression = (JRExpression)this.connectionExpression.clone(); + if (this.dataSourceExpression != null) + clone.dataSourceExpression = (JRExpression)this.dataSourceExpression.clone(); + if (this.expression != null) + clone.expression = (JRExpression)this.expression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportParameter.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportParameter.java new file mode 100644 index 0000000..520af6e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportParameter.java @@ -0,0 +1,14 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRSubreportParameter; + +public class JRBaseSubreportParameter extends JRBaseDatasetParameter implements JRSubreportParameter { + private static final long serialVersionUID = 10200L; + + protected JRBaseSubreportParameter() {} + + protected JRBaseSubreportParameter(JRSubreportParameter subreportParameter, JRBaseObjectFactory factory) { + super((JRDatasetParameter)subreportParameter, factory); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportReturnValue.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportReturnValue.java new file mode 100644 index 0000000..7893e8d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseSubreportReturnValue.java @@ -0,0 +1,51 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSubreportReturnValue; + +public class JRBaseSubreportReturnValue implements JRSubreportReturnValue, Serializable { + private static final long serialVersionUID = 10200L; + + protected String subreportVariable = null; + + protected String toVariable = null; + + protected byte calculation = 0; + + protected String incrementerFactoryClassName = null; + + protected JRBaseSubreportReturnValue() {} + + protected JRBaseSubreportReturnValue(JRSubreportReturnValue returnValue, JRBaseObjectFactory factory) { + factory.put(returnValue, this); + this.subreportVariable = returnValue.getSubreportVariable(); + this.toVariable = returnValue.getToVariable(); + this.calculation = returnValue.getCalculation(); + this.incrementerFactoryClassName = returnValue.getIncrementerFactoryClassName(); + } + + public String getSubreportVariable() { + return this.subreportVariable; + } + + public String getToVariable() { + return this.toVariable; + } + + public byte getCalculation() { + return this.calculation; + } + + public String getIncrementerFactoryClassName() { + return this.incrementerFactoryClassName; + } + + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextElement.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextElement.java new file mode 100644 index 0000000..4188624 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextElement.java @@ -0,0 +1,696 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRCommonText; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public abstract class JRBaseTextElement extends JRBaseElement implements JRTextElement { + private static final long serialVersionUID = 10200L; + + protected Byte horizontalAlignment; + + protected Byte verticalAlignment; + + protected Byte rotation; + + protected Byte lineSpacing; + + protected String markup; + + protected JRLineBox lineBox = null; + + protected JRReportFont reportFont = null; + + protected String fontName = null; + + protected Boolean isBold = null; + + protected Boolean isItalic = null; + + protected Boolean isUnderline = null; + + protected Boolean isStrikeThrough = null; + + protected Integer fontSize = null; + + protected String pdfFontName = null; + + protected String pdfEncoding = null; + + protected Boolean isPdfEmbedded = null; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + private Boolean isStyledText; + + protected JRBaseTextElement(JRTextElement textElement, JRBaseObjectFactory factory) { + super((JRElement)textElement, factory); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.isStyledText = null; + this.horizontalAlignment = textElement.getOwnHorizontalAlignment(); + this.verticalAlignment = textElement.getOwnVerticalAlignment(); + this.rotation = textElement.getOwnRotation(); + this.lineSpacing = textElement.getOwnLineSpacing(); + this.markup = textElement.getOwnMarkup(); + this.lineBox = textElement.getLineBox().clone((JRBoxContainer)this); + this.reportFont = factory.getReportFont(textElement.getReportFont()); + this.fontName = textElement.getOwnFontName(); + this.isBold = textElement.isOwnBold(); + this.isItalic = textElement.isOwnItalic(); + this.isUnderline = textElement.isOwnUnderline(); + this.isStrikeThrough = textElement.isOwnStrikeThrough(); + this.fontSize = textElement.getOwnFontSize(); + this.pdfFontName = textElement.getOwnPdfFontName(); + this.pdfEncoding = textElement.getOwnPdfEncoding(); + this.isPdfEmbedded = textElement.isOwnPdfEmbedded(); + } + + protected JRFont getBaseFont() { + if (this.reportFont != null) + return (JRFont)this.reportFont; + if (this.defaultStyleProvider != null) + return (JRFont)this.defaultStyleProvider.getDefaultFont(); + return null; + } + + public byte getTextAlignment() { + if (this.horizontalAlignment == null) { + JRStyle style = getBaseStyle(); + if (style != null && style.getHorizontalAlignment() != null) + return style.getHorizontalAlignment().byteValue(); + return 1; + } + return this.horizontalAlignment.byteValue(); + } + + public void setTextAlignment(byte horizontalAlignment) { + setHorizontalAlignment(new Byte(horizontalAlignment)); + } + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment((JRAlignment)this); + } + + public Byte getOwnHorizontalAlignment() { + return this.horizontalAlignment; + } + + public void setHorizontalAlignment(byte horizontalAlignment) { + setHorizontalAlignment(new Byte(horizontalAlignment)); + } + + public void setHorizontalAlignment(Byte horizontalAlignment) { + Object old = this.horizontalAlignment; + this.horizontalAlignment = horizontalAlignment; + getEventSupport().firePropertyChange("horizontalAlignment", old, this.horizontalAlignment); + } + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment((JRAlignment)this); + } + + public Byte getOwnVerticalAlignment() { + return this.verticalAlignment; + } + + public void setVerticalAlignment(byte verticalAlignment) { + setVerticalAlignment(new Byte(verticalAlignment)); + } + + public void setVerticalAlignment(Byte verticalAlignment) { + Object old = this.verticalAlignment; + this.verticalAlignment = verticalAlignment; + getEventSupport().firePropertyChange("verticalAlignment", old, this.verticalAlignment); + } + + public byte getRotation() { + return JRStyleResolver.getRotation((JRCommonText)this); + } + + public Byte getOwnRotation() { + return this.rotation; + } + + public void setRotation(byte rotation) { + setRotation(new Byte(rotation)); + } + + public void setRotation(Byte rotation) { + Object old = this.rotation; + this.rotation = rotation; + getEventSupport().firePropertyChange("rotation", old, this.rotation); + } + + public byte getLineSpacing() { + return JRStyleResolver.getLineSpacing((JRCommonText)this); + } + + public Byte getOwnLineSpacing() { + return this.lineSpacing; + } + + public void setLineSpacing(byte lineSpacing) { + setLineSpacing(new Byte(lineSpacing)); + } + + public void setLineSpacing(Byte lineSpacing) { + Object old = this.lineSpacing; + this.lineSpacing = lineSpacing; + getEventSupport().firePropertyChange("lineSpacing", old, this.lineSpacing); + } + + public boolean isStyledText() { + return "styled".equals(getMarkup()); + } + + public Boolean isOwnStyledText() { + String mkp = getOwnMarkup(); + return "styled".equals(mkp) ? Boolean.TRUE : ((mkp == null) ? null : Boolean.FALSE); + } + + public void setStyledText(boolean isStyledText) { + setStyledText(isStyledText ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStyledText(Boolean isStyledText) { + if (isStyledText == null) { + setMarkup((String)null); + } else { + setMarkup(isStyledText.booleanValue() ? "styled" : "none"); + } + } + + public String getMarkup() { + return JRStyleResolver.getMarkup((JRCommonText)this); + } + + public String getOwnMarkup() { + return this.markup; + } + + public void setMarkup(String markup) { + Object old = this.markup; + this.markup = markup; + getEventSupport().firePropertyChange("markup", old, this.markup); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public JRFont getFont() { + return (JRFont)this; + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen(this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen(this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public JRReportFont getReportFont() { + return this.reportFont; + } + + public void setReportFont(JRReportFont reportFont) { + Object old = this.reportFont; + this.reportFont = reportFont; + getEventSupport().firePropertyChange("reportFont", old, this.reportFont); + } + + public String getFontName() { + return JRStyleResolver.getFontName((JRFont)this); + } + + public String getOwnFontName() { + return this.fontName; + } + + public void setFontName(String fontName) { + Object old = this.fontName; + this.fontName = fontName; + getEventSupport().firePropertyChange("fontName", old, this.fontName); + } + + public boolean isBold() { + return JRStyleResolver.isBold((JRFont)this); + } + + public Boolean isOwnBold() { + return this.isBold; + } + + public void setBold(boolean isBold) { + setBold(isBold ? Boolean.TRUE : Boolean.FALSE); + } + + public void setBold(Boolean isBold) { + Object old = this.isBold; + this.isBold = isBold; + getEventSupport().firePropertyChange("bold", old, this.isBold); + } + + public boolean isItalic() { + return JRStyleResolver.isItalic((JRFont)this); + } + + public Boolean isOwnItalic() { + return this.isItalic; + } + + public void setItalic(boolean isItalic) { + setItalic(isItalic ? Boolean.TRUE : Boolean.FALSE); + } + + public void setItalic(Boolean isItalic) { + Object old = this.isItalic; + this.isItalic = isItalic; + getEventSupport().firePropertyChange("italic", old, this.isItalic); + } + + public boolean isUnderline() { + return JRStyleResolver.isUnderline((JRFont)this); + } + + public Boolean isOwnUnderline() { + return this.isUnderline; + } + + public void setUnderline(boolean isUnderline) { + setUnderline(isUnderline ? Boolean.TRUE : Boolean.FALSE); + } + + public void setUnderline(Boolean isUnderline) { + Object old = this.isUnderline; + this.isUnderline = isUnderline; + getEventSupport().firePropertyChange("underline", old, this.isUnderline); + } + + public boolean isStrikeThrough() { + return JRStyleResolver.isStrikeThrough((JRFont)this); + } + + public Boolean isOwnStrikeThrough() { + return this.isStrikeThrough; + } + + public void setStrikeThrough(boolean isStrikeThrough) { + setStrikeThrough(isStrikeThrough ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStrikeThrough(Boolean isStrikeThrough) { + Object old = this.isStrikeThrough; + this.isStrikeThrough = isStrikeThrough; + getEventSupport().firePropertyChange("strikeThrough", old, this.isStrikeThrough); + } + + public int getFontSize() { + return JRStyleResolver.getFontSize((JRFont)this); + } + + public Integer getOwnFontSize() { + return this.fontSize; + } + + public void setFontSize(int fontSize) { + setFontSize(new Integer(fontSize)); + } + + public void setFontSize(Integer fontSize) { + Object old = this.fontSize; + this.fontSize = fontSize; + getEventSupport().firePropertyChange("fontSize", old, this.fontSize); + } + + public int getSize() { + return getFontSize(); + } + + public Integer getOwnSize() { + return getOwnFontSize(); + } + + public void setSize(int size) { + setFontSize(size); + } + + public void setSize(Integer size) { + setFontSize(size); + } + + public String getPdfFontName() { + return JRStyleResolver.getPdfFontName((JRFont)this); + } + + public String getOwnPdfFontName() { + return this.pdfFontName; + } + + public void setPdfFontName(String pdfFontName) { + Object old = this.pdfFontName; + this.pdfFontName = pdfFontName; + getEventSupport().firePropertyChange("pdfFontName", old, this.pdfFontName); + } + + public String getPdfEncoding() { + return JRStyleResolver.getPdfEncoding((JRFont)this); + } + + public String getOwnPdfEncoding() { + return this.pdfEncoding; + } + + public void setPdfEncoding(String pdfEncoding) { + Object old = this.pdfEncoding; + this.pdfEncoding = pdfEncoding; + getEventSupport().firePropertyChange("pdfEncoding", old, this.pdfEncoding); + } + + public boolean isPdfEmbedded() { + return JRStyleResolver.isPdfEmbedded((JRFont)this); + } + + public Boolean isOwnPdfEmbedded() { + return this.isPdfEmbedded; + } + + public void setPdfEmbedded(boolean isPdfEmbedded) { + setPdfEmbedded(isPdfEmbedded ? Boolean.TRUE : Boolean.FALSE); + } + + public void setPdfEmbedded(Boolean isPdfEmbedded) { + Object old = this.isPdfEmbedded; + this.isPdfEmbedded = isPdfEmbedded; + getEventSupport().firePropertyChange("pdfEmbedded", old, this.isPdfEmbedded); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + if (this.isStyledText != null) { + this.markup = this.isStyledText.booleanValue() ? "styled" : "none"; + this.isStyledText = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextField.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextField.java new file mode 100644 index 0000000..adfee7b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseTextField.java @@ -0,0 +1,206 @@ +package net.sf.jasperreports.engine.base; + +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRBaseTextField extends JRBaseTextElement implements JRTextField { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_STRETCH_WITH_OVERFLOW = "stretchWithOverflow"; + + protected boolean isStretchWithOverflow = false; + + protected byte evaluationTime = 1; + + protected String pattern; + + protected Boolean isBlankWhenNull = null; + + protected byte hyperlinkType = 0; + + protected String linkType; + + protected byte hyperlinkTarget = 1; + + private JRHyperlinkParameter[] hyperlinkParameters; + + protected JRGroup evaluationGroup = null; + + protected JRExpression expression = null; + + protected JRExpression anchorNameExpression = null; + + protected JRExpression hyperlinkReferenceExpression = null; + + protected JRExpression hyperlinkAnchorExpression = null; + + protected JRExpression hyperlinkPageExpression = null; + + private JRExpression hyperlinkTooltipExpression; + + protected int bookmarkLevel = 0; + + protected JRBaseTextField(JRTextField textField, JRBaseObjectFactory factory) { + super((JRTextElement)textField, factory); + this.isStretchWithOverflow = textField.isStretchWithOverflow(); + this.evaluationTime = textField.getEvaluationTime(); + this.pattern = textField.getOwnPattern(); + this.isBlankWhenNull = textField.isOwnBlankWhenNull(); + this.linkType = textField.getLinkType(); + this.hyperlinkTarget = textField.getHyperlinkTarget(); + this.hyperlinkParameters = JRBaseHyperlink.copyHyperlinkParameters((JRHyperlink)textField, factory); + this.evaluationGroup = factory.getGroup(textField.getEvaluationGroup()); + this.expression = factory.getExpression(textField.getExpression()); + this.anchorNameExpression = factory.getExpression(textField.getAnchorNameExpression()); + this.hyperlinkReferenceExpression = factory.getExpression(textField.getHyperlinkReferenceExpression()); + this.hyperlinkAnchorExpression = factory.getExpression(textField.getHyperlinkAnchorExpression()); + this.hyperlinkPageExpression = factory.getExpression(textField.getHyperlinkPageExpression()); + this.hyperlinkTooltipExpression = factory.getExpression(textField.getHyperlinkTooltipExpression()); + this.bookmarkLevel = textField.getBookmarkLevel(); + } + + public boolean isStretchWithOverflow() { + return this.isStretchWithOverflow; + } + + public void setStretchWithOverflow(boolean isStretchWithOverflow) { + boolean old = this.isStretchWithOverflow; + this.isStretchWithOverflow = isStretchWithOverflow; + getEventSupport().firePropertyChange("stretchWithOverflow", old, this.isStretchWithOverflow); + } + + public byte getEvaluationTime() { + return this.evaluationTime; + } + + public String getPattern() { + return JRStyleResolver.getPattern(this); + } + + public String getOwnPattern() { + return this.pattern; + } + + public void setPattern(String pattern) { + Object old = this.pattern; + this.pattern = pattern; + getEventSupport().firePropertyChange("pattern", old, this.pattern); + } + + public boolean isBlankWhenNull() { + return JRStyleResolver.isBlankWhenNull(this); + } + + public Boolean isOwnBlankWhenNull() { + return this.isBlankWhenNull; + } + + public void setBlankWhenNull(Boolean isBlank) { + Object old = this.isBlankWhenNull; + this.isBlankWhenNull = isBlank; + getEventSupport().firePropertyChange("blankWhenNull", old, this.isBlankWhenNull); + } + + public void setBlankWhenNull(boolean isBlank) { + setBlankWhenNull(isBlank ? Boolean.TRUE : Boolean.FALSE); + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType((JRHyperlink)this); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRExpression getExpression() { + return this.expression; + } + + public JRExpression getAnchorNameExpression() { + return this.anchorNameExpression; + } + + public JRExpression getHyperlinkReferenceExpression() { + return this.hyperlinkReferenceExpression; + } + + public JRExpression getHyperlinkAnchorExpression() { + return this.hyperlinkAnchorExpression; + } + + public JRExpression getHyperlinkPageExpression() { + return this.hyperlinkPageExpression; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitTextField(this); + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public String getLinkType() { + return this.linkType; + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + return this.hyperlinkParameters; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + normalizeLinkType(); + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public JRExpression getHyperlinkTooltipExpression() { + return this.hyperlinkTooltipExpression; + } + + public Object clone() { + JRBaseTextField clone = (JRBaseTextField)super.clone(); + if (this.hyperlinkParameters != null) { + clone.hyperlinkParameters = new JRHyperlinkParameter[this.hyperlinkParameters.length]; + for (int i = 0; i < this.hyperlinkParameters.length; i++) + clone.hyperlinkParameters[i] = (JRHyperlinkParameter)this.hyperlinkParameters[i].clone(); + } + if (this.expression != null) + clone.expression = (JRExpression)this.expression.clone(); + if (this.anchorNameExpression != null) + clone.anchorNameExpression = (JRExpression)this.anchorNameExpression.clone(); + if (this.hyperlinkReferenceExpression != null) + clone.hyperlinkReferenceExpression = (JRExpression)this.hyperlinkReferenceExpression.clone(); + if (this.hyperlinkAnchorExpression != null) + clone.hyperlinkAnchorExpression = (JRExpression)this.hyperlinkAnchorExpression.clone(); + if (this.hyperlinkPageExpression != null) + clone.hyperlinkPageExpression = (JRExpression)this.hyperlinkPageExpression.clone(); + if (this.hyperlinkTooltipExpression != null) + clone.hyperlinkTooltipExpression = (JRExpression)this.hyperlinkTooltipExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseVariable.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseVariable.java new file mode 100644 index 0000000..5cea60c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseVariable.java @@ -0,0 +1,155 @@ +package net.sf.jasperreports.engine.base; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.util.JRClassLoader; + +public class JRBaseVariable implements JRVariable, Serializable { + private static final long serialVersionUID = 10200L; + + protected String name = null; + + protected String valueClassName = String.class.getName(); + + protected String valueClassRealName = null; + + protected String incrementerFactoryClassName = null; + + protected String incrementerFactoryClassRealName = null; + + protected byte resetType = 1; + + protected byte incrementType = 5; + + protected byte calculation = 0; + + protected boolean isSystemDefined = false; + + protected transient Class valueClass = null; + + protected transient Class incrementerFactoryClass = null; + + protected JRExpression expression = null; + + protected JRExpression initialValueExpression = null; + + protected JRGroup resetGroup = null; + + protected JRGroup incrementGroup = null; + + protected JRBaseVariable(JRVariable variable, JRBaseObjectFactory factory) { + factory.put(variable, this); + this.name = variable.getName(); + this.valueClassName = variable.getValueClassName(); + this.incrementerFactoryClassName = variable.getIncrementerFactoryClassName(); + this.resetType = variable.getResetType(); + this.incrementType = variable.getIncrementType(); + this.calculation = variable.getCalculation(); + this.isSystemDefined = variable.isSystemDefined(); + this.expression = factory.getExpression(variable.getExpression()); + this.initialValueExpression = factory.getExpression(variable.getInitialValueExpression()); + this.resetGroup = factory.getGroup(variable.getResetGroup()); + this.incrementGroup = factory.getGroup(variable.getIncrementGroup()); + } + + public String getName() { + return this.name; + } + + public Class getValueClass() { + if (this.valueClass == null) { + String className = getValueClassRealName(); + if (className != null) + try { + this.valueClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException(e); + } + } + return this.valueClass; + } + + public String getValueClassName() { + return this.valueClassName; + } + + private String getValueClassRealName() { + if (this.valueClassRealName == null) + this.valueClassRealName = JRClassLoader.getClassRealName(this.valueClassName); + return this.valueClassRealName; + } + + public Class getIncrementerFactoryClass() { + if (this.incrementerFactoryClass == null) { + String className = getIncrementerFactoryClassRealName(); + if (className != null) + try { + this.incrementerFactoryClass = JRClassLoader.loadClassForName(className); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException(e); + } + } + return this.incrementerFactoryClass; + } + + public String getIncrementerFactoryClassName() { + return this.incrementerFactoryClassName; + } + + private String getIncrementerFactoryClassRealName() { + if (this.incrementerFactoryClassRealName == null) + this.incrementerFactoryClassRealName = JRClassLoader.getClassRealName(this.incrementerFactoryClassName); + return this.incrementerFactoryClassRealName; + } + + public byte getResetType() { + return this.resetType; + } + + public byte getIncrementType() { + return this.incrementType; + } + + public byte getCalculation() { + return this.calculation; + } + + public boolean isSystemDefined() { + return this.isSystemDefined; + } + + public JRExpression getExpression() { + return this.expression; + } + + public JRExpression getInitialValueExpression() { + return this.initialValueExpression; + } + + public JRGroup getResetGroup() { + return this.resetGroup; + } + + public JRGroup getIncrementGroup() { + return this.incrementGroup; + } + + public Object clone() { + JRBaseVariable clone = null; + try { + clone = (JRBaseVariable)super.clone(); + } catch (CloneNotSupportedException e) { + throw new JRRuntimeException(e); + } + if (this.expression != null) + clone.expression = (JRExpression)this.expression.clone(); + if (this.initialValueExpression != null) + clone.initialValueExpression = (JRExpression)this.initialValueExpression.clone(); + return clone; + } + + protected JRBaseVariable() {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRBoxPen.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRBoxPen.java new file mode 100644 index 0000000..a1a18d0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRBoxPen.java @@ -0,0 +1,12 @@ +package net.sf.jasperreports.engine.base; + +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; + +public interface JRBoxPen extends JRPen { + JRLineBox getBox(); + + JRPen getPen(JRLineBox paramJRLineBox); + + JRBoxPen clone(JRLineBox paramJRLineBox); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/base/JRVirtualPrintPage.java b/hrmsEjb/net/sf/jasperreports/engine/base/JRVirtualPrintPage.java new file mode 100644 index 0000000..ebe3765 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/base/JRVirtualPrintPage.java @@ -0,0 +1,439 @@ +package net.sf.jasperreports.engine.base; + +import java.awt.Graphics2D; +import java.awt.geom.Dimension2D; +import java.awt.geom.Rectangle2D; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintFrame; +import net.sf.jasperreports.engine.JRPrintImage; +import net.sf.jasperreports.engine.JRPrintPage; +import net.sf.jasperreports.engine.JRRenderable; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVirtualizable; +import net.sf.jasperreports.engine.JRVirtualizationHelper; +import net.sf.jasperreports.engine.JRVirtualizer; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.fill.JRTemplateElement; +import net.sf.jasperreports.engine.fill.JRTemplatePrintElement; +import net.sf.jasperreports.engine.fill.JRVirtualizationContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRVirtualPrintPage implements JRPrintPage, JRVirtualizable, Serializable { + protected static final Log log = LogFactory.getLog(JRVirtualPrintPage.class); + + private static final long serialVersionUID = 10200L; + + public static class ObjectIDPair implements Serializable { + private static final long serialVersionUID = 10200L; + + private final Object o; + + private final int id; + + public ObjectIDPair(Object o) { + this.o = o; + this.id = System.identityHashCode(o); + } + + public Object getObject() { + return this.o; + } + + public int getIdentity() { + return this.id; + } + } + + private static final Random random = new Random(System.currentTimeMillis()); + + private static short counter = 1; + + protected List elements = new ArrayList(); + + private String uid; + + private transient JRVirtualizer virtualizer; + + private transient IdentityDataProvider[] identityProviders; + + protected JRVirtualizationContext virtualizationContext; + + public JRVirtualPrintPage(JasperPrint printObject, JRVirtualizer virtualizer, JRVirtualizationContext virtualizationContext) { + this.virtualizationContext = virtualizationContext; + this.uid = makeUID(printObject); + this.virtualizer = virtualizer; + this.identityProviders = null; + if (virtualizer != null) + virtualizer.registerObject(this); + } + + private static String makeUID(JasperPrint printObject) { + synchronized (random) { + counter = (short)(counter + 1); + return Integer.toString(System.identityHashCode(printObject)) + "_" + printObject.getPages().size() + "_" + Integer.toString(counter) + "_" + Integer.toString(random.nextInt()); + } + } + + public final String getUID() { + return this.uid; + } + + public void setVirtualData(Object o) { + this.elements = (List)o; + } + + public Object getVirtualData() { + return this.elements; + } + + public void removeVirtualData() { + this.elements = null; + } + + public void setIdentityData(Object o) { + if (this.identityProviders != null) + for (int i = 0; i < this.identityProviders.length; i++) + this.identityProviders[i].setIdentityData(this, (ObjectIDPair[])o); + } + + public Object getIdentityData() { + ObjectIDPair[] data; + if (this.identityProviders != null) { + if (this.identityProviders.length == 1) { + data = this.identityProviders[0].getIdentityData(this); + } else if (this.identityProviders.length > 1) { + Set list = new HashSet(); + for (int i = 0; i < this.identityProviders.length; i++) { + ObjectIDPair[] pairs = this.identityProviders[i].getIdentityData(this); + if (pairs != null) + for (int j = 0; j < pairs.length; j++) + list.add(pairs[j]); + } + data = list.toArray(new ObjectIDPair[list.size()]); + } else { + data = null; + } + } else { + data = null; + } + return data; + } + + public boolean isVirtualized() { + return (this.elements == null); + } + + public void setVirtualizer(JRVirtualizer virtualizer) { + this.virtualizer = virtualizer; + } + + public JRVirtualizer getVirtualizer() { + return this.virtualizer; + } + + public void addIdentityDataProvider(IdentityDataProvider p) { + if (this.identityProviders == null) { + this.identityProviders = new IdentityDataProvider[] { p }; + } else { + IdentityDataProvider[] newList = new IdentityDataProvider[this.identityProviders.length + 1]; + System.arraycopy(this.identityProviders, 0, newList, 0, this.identityProviders.length); + newList[this.identityProviders.length] = p; + this.identityProviders = newList; + } + } + + public void removeIdentityDataProvider(IdentityDataProvider p) { + if (this.identityProviders != null) + for (int idx = 0; idx < this.identityProviders.length; idx++) { + if (this.identityProviders[idx] == p) { + IdentityDataProvider[] newList = new IdentityDataProvider[this.identityProviders.length - 1]; + System.arraycopy(this.identityProviders, 0, newList, 0, idx); + int remaining = this.identityProviders.length - idx - 1; + if (remaining > 0) + System.arraycopy(this.identityProviders, idx + 1, newList, idx, remaining); + this.identityProviders = newList; + break; + } + } + } + + public List getElements() { + ensureVirtualData(); + return this.elements; + } + + protected void ensureVirtualData() { + if (this.virtualizer != null) + this.virtualizer.requestData(this); + } + + public void setElements(List elements) { + cleanVirtualData(); + this.elements = elements; + cacheInContext(this.elements); + } + + protected void cleanVirtualData() { + if (this.virtualizer != null) + this.virtualizer.clearData(this); + } + + public void addElement(JRPrintElement element) { + ensureVirtualData(); + this.elements.add(element); + cacheInContext(element); + } + + public static interface IdentityDataProvider { + JRVirtualPrintPage.ObjectIDPair[] getIdentityData(JRVirtualPrintPage param1JRVirtualPrintPage); + + void setIdentityData(JRVirtualPrintPage param1JRVirtualPrintPage, JRVirtualPrintPage.ObjectIDPair[] param1ArrayOfObjectIDPair); + } + + protected static class JRIdHolderRenderer implements JRRenderable, Serializable { + private static final long serialVersionUID = 10200L; + + protected final String id; + + protected JRIdHolderRenderer(JRRenderable renderer) { + this.id = renderer.getId(); + } + + public String getId() { + return this.id; + } + + public byte getType() { + return 0; + } + + public byte getImageType() { + return 0; + } + + public Dimension2D getDimension() throws JRException { + return null; + } + + public byte[] getImageData() throws JRException { + return null; + } + + public void render(Graphics2D grx, Rectangle2D rectanle) throws JRException {} + } + + protected static class JRIdHolderTemplateElement extends JRTemplateElement { + private static final long serialVersionUID = 10200L; + + protected JRIdHolderTemplateElement(String id) { + super(id); + } + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + this.uid = (String)in.readObject(); + this.virtualizationContext = (JRVirtualizationContext)in.readObject(); + int length = in.readInt(); + byte[] buffer = new byte[length]; + in.readFully(buffer); + ByteArrayInputStream inputStream = new ByteArrayInputStream(buffer, 0, buffer.length); + ObjectInputStream elementsStream = new ObjectInputStream(inputStream); + this.elements = (List)elementsStream.readObject(); + afterInternalization(); + setThreadVirtualizer(); + } + + private void writeObject(ObjectOutputStream out) throws IOException { + ensureVirtualData(); + beforeExternalization(); + try { + out.writeObject(this.uid); + out.writeObject(this.virtualizationContext); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ObjectOutputStream stream = new ObjectOutputStream(bout); + stream.writeObject(this.elements); + stream.flush(); + byte[] bytes = bout.toByteArray(); + out.writeInt(bytes.length); + out.write(bytes); + } finally { + afterExternalization(); + } + } + + private void setThreadVirtualizer() { + JRVirtualizer threadVirtualizer = JRVirtualizationHelper.getThreadVirtualizer(); + if (threadVirtualizer != null) { + this.virtualizer = threadVirtualizer; + this.virtualizer.registerObject(this); + } + } + + protected void finalize() { + if (this.virtualizer != null) + this.virtualizer.deregisterObject(this); + } + + protected List getDeepElements() { + List deepElements = new ArrayList(this.elements.size()); + collectDeepElements(this.elements, deepElements); + return deepElements; + } + + protected void collectDeepElements(List elementsList, List deepElements) { + for (Iterator it = elementsList.iterator(); it.hasNext(); ) { + JRPrintElement element = it.next(); + deepElements.add(element); + if (element instanceof JRPrintFrame) { + JRPrintFrame frame = (JRPrintFrame)element; + collectDeepElements(frame.getElements(), deepElements); + } + } + } + + public void beforeExternalization() { + setElementsExternalData(); + } + + protected void setElementsExternalData() { + traverseDeepElements(new ExternalizationElementVisitor()); + } + + protected void setExternalizationRenderer(JRPrintImage image) { + JRRenderable renderer = image.getRenderer(); + if (renderer != null && this.virtualizationContext.hasCachedRenderer(renderer.getId())) + image.setRenderer(new JRIdHolderRenderer(renderer)); + } + + protected void cacheInContext(List elementList) { + if (elementList != null && !elementList.isEmpty()) + for (Iterator it = elementList.iterator(); it.hasNext(); ) { + JRPrintElement element = it.next(); + cacheInContext(element); + } + } + + protected void cacheInContext(JRPrintElement element) { + if (element instanceof JRTemplatePrintElement) { + JRTemplatePrintElement templateElement = (JRTemplatePrintElement)element; + JRTemplateElement template = templateElement.getTemplate(); + if (template != null) + this.virtualizationContext.cacheTemplate(template); + } + if (element instanceof JRPrintFrame) { + JRPrintFrame frame = (JRPrintFrame)element; + cacheInContext(frame.getElements()); + } + } + + public void afterInternalization() { + restoreElementsData(); + } + + protected void restoreElementsData() { + traverseDeepElements(new InternalizationElementVisitor()); + } + + public JRVirtualizationContext getContext() { + return this.virtualizationContext; + } + + public void afterExternalization() { + restoreElementsData(); + } + + protected void traverseDeepElements(ElementVisitor visitor) { + traverseDeepElements(visitor, this.elements); + } + + protected void traverseDeepElements(ElementVisitor visitor, List elementsList) { + for (Iterator it = elementsList.iterator(); it.hasNext(); ) { + JRPrintElement element = it.next(); + visitor.visitElement(element); + if (element instanceof JRPrintFrame) { + JRPrintFrame frame = (JRPrintFrame)element; + traverseDeepElements(visitor, frame.getElements()); + } + } + } + + protected static interface ElementVisitor { + void visitElement(JRPrintElement param1JRPrintElement); + } + + protected class ExternalizationElementVisitor implements ElementVisitor { + private final Map idTemplates = new HashMap(); + + private final JRVirtualPrintPage this$0; + + public void visitElement(JRPrintElement element) { + if (element instanceof JRTemplatePrintElement) + setExternalizationTemplate((JRTemplatePrintElement)element); + if (element instanceof JRPrintImage) + JRVirtualPrintPage.this.setExternalizationRenderer((JRPrintImage)element); + } + + protected void setExternalizationTemplate(JRTemplatePrintElement templateElement) { + JRTemplateElement template = templateElement.getTemplate(); + if (template != null) + if (JRVirtualPrintPage.this.virtualizationContext.hasCachedTemplate(template.getId())) { + String templateId = template.getId(); + JRVirtualPrintPage.JRIdHolderTemplateElement idTemplate = (JRVirtualPrintPage.JRIdHolderTemplateElement)this.idTemplates.get(templateId); + if (idTemplate == null) { + idTemplate = new JRVirtualPrintPage.JRIdHolderTemplateElement(templateId); + this.idTemplates.put(templateId, idTemplate); + } + templateElement.setTemplate(idTemplate); + } else if (JRVirtualPrintPage.log.isDebugEnabled()) { + JRVirtualPrintPage.log.debug("Template " + template + " having id " + template.getId() + " not found in virtualization context cache"); + } + } + } + + protected class InternalizationElementVisitor implements ElementVisitor { + private final JRVirtualPrintPage this$0; + + public void visitElement(JRPrintElement element) { + if (element instanceof JRTemplatePrintElement) + restoreTemplate((JRTemplatePrintElement)element); + if (element instanceof JRPrintImage) + restoreRenderer((JRPrintImage)element); + } + + protected void restoreTemplate(JRTemplatePrintElement element) { + JRTemplateElement template = element.getTemplate(); + if (template != null && template instanceof JRVirtualPrintPage.JRIdHolderTemplateElement) { + JRTemplateElement cachedTemplate = JRVirtualPrintPage.this.virtualizationContext.getCachedTemplate(template.getId()); + if (cachedTemplate == null) + throw new JRRuntimeException("Template " + template.getId() + " not found in virtualization context."); + element.setTemplate(cachedTemplate); + } + } + + protected void restoreRenderer(JRPrintImage image) { + JRRenderable renderer = image.getRenderer(); + if (renderer != null && renderer instanceof JRVirtualPrintPage.JRIdHolderRenderer) { + JRRenderable cachedRenderer = JRVirtualPrintPage.this.virtualizationContext.getCachedRenderer(renderer.getId()); + if (cachedRenderer == null) + throw new JRRuntimeException("Renderer " + renderer.getId() + " not found in virtualization context."); + image.setRenderer(cachedRenderer); + } + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/data/JRSortableDataSource.java b/hrmsEjb/net/sf/jasperreports/engine/data/JRSortableDataSource.java new file mode 100644 index 0000000..dc9bae4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/data/JRSortableDataSource.java @@ -0,0 +1,141 @@ +package net.sf.jasperreports.engine.data; + +import java.text.Collator; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRRewindableDataSource; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; + +public class JRSortableDataSource implements JRRewindableDataSource { + private List records = new ArrayList(); + + private Iterator iterator = null; + + private Object[] currentRecord = null; + + private Map fieldIndexMap = new HashMap(); + + protected Collator collator = null; + + public JRSortableDataSource(JRDataSource ds, JRField[] fields, JRSortField[] sortFields, Locale locale) throws JRException { + if (fields == null) + fields = new JRField[0]; + if (sortFields == null) + sortFields = new JRSortField[0]; + verifySortFields(fields, sortFields); + this.collator = Collator.getInstance(locale); + for (int i = 0; i < fields.length; i++) + this.fieldIndexMap.put(fields[i].getName(), new Integer(i)); + int[] sortIndexes = new int[sortFields.length]; + int[] sortOrders = new int[sortFields.length]; + boolean[] collatorFlags = new boolean[sortFields.length]; + for (int j = 0; j < sortFields.length; j++) { + JRSortField sortField = sortFields[j]; + sortIndexes[j] = ((Integer)this.fieldIndexMap.get(sortField.getName())).intValue(); + sortOrders[j] = (0 == sortField.getOrder()) ? 1 : -1; + collatorFlags[j] = false; + for (int k = 0; k < fields.length; k++) { + JRField field = fields[k]; + if (sortField.getName().equals(field.getName())) { + collatorFlags[j] = String.class.getName().equals(field.getValueClassName()); + break; + } + } + } + if (ds != null) + while (ds.next()) { + Object[] record = new Object[fields.length]; + for (int k = 0; k < fields.length; k++) + record[k] = ds.getFieldValue(fields[k]); + this.records.add(record); + } + Collections.sort(this.records, new DataSourceComparator(sortIndexes, sortOrders, collatorFlags)); + this.iterator = this.records.iterator(); + } + + public boolean next() { + boolean hasNext = false; + if (this.iterator != null) { + hasNext = this.iterator.hasNext(); + if (hasNext) + this.currentRecord = this.iterator.next(); + } + return hasNext; + } + + public Object getFieldValue(JRField jrField) { + Integer fieldIndex = (Integer)this.fieldIndexMap.get(jrField.getName()); + if (fieldIndex == null) + throw new JRRuntimeException("Field \"" + jrField.getName() + "\" not found in sortable data source."); + return this.currentRecord[fieldIndex.intValue()]; + } + + public void moveFirst() { + this.iterator = this.records.iterator(); + } + + public static void verifySortFields(JRField[] fields, JRSortField[] sortFields) { + if (fields != null && sortFields != null) + for (int i = 0; i < sortFields.length; i++) { + String sortFieldName = sortFields[i].getName(); + boolean isFound = false; + int j = 0; + while (!isFound && j < fields.length) { + isFound = sortFieldName.equals(fields[j].getName()); + j++; + } + if (!isFound) + throw new JRRuntimeException("Sort field \"" + sortFieldName + "\" not found in the list of data source fields."); + } + } + + class DataSourceComparator implements Comparator { + int[] sortIndexes = null; + + int[] sortOrders = null; + + boolean[] collatorFlags = null; + + private final JRSortableDataSource this$0; + + public DataSourceComparator(int[] sortIndexes, int[] sortOrders, boolean[] collatorFlags) { + this.sortIndexes = sortIndexes; + this.sortOrders = sortOrders; + this.collatorFlags = collatorFlags; + } + + public int compare(Object arg1, Object arg2) { + Object[] record1 = (Object[])arg1; + Object[] record2 = (Object[])arg2; + int ret = 0; + for (int i = 0; i < this.sortIndexes.length; i++) { + int sortIndex = this.sortIndexes[i]; + Comparable field1 = (Comparable)record1[sortIndex]; + Comparable field2 = (Comparable)record2[sortIndex]; + if (field1 == null) { + ret = (field2 == null) ? 0 : -1; + } else if (field2 == null) { + ret = 1; + } else if (this.collatorFlags[i]) { + ret = JRSortableDataSource.this.collator.compare(field1, field2); + } else { + ret = field1.compareTo(field2); + } + ret *= this.sortOrders[i]; + if (ret != 0) + return ret; + } + return ret; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractClassCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractClassCompiler.java new file mode 100644 index 0000000..428e033 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractClassCompiler.java @@ -0,0 +1,48 @@ +package net.sf.jasperreports.engine.design; + +import java.io.File; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.util.JRLoader; + +public abstract class JRAbstractClassCompiler extends JRAbstractJavaCompiler implements JRMultiClassCompiler { + protected JRAbstractClassCompiler() { + super(true); + } + + protected String compileUnits(JRCompilationUnit[] units, String classpath, File tempDirFile) throws JRException { + File[] sources = new File[units.length]; + for (int i = 0; i < sources.length; i++) + sources[i] = units[i].getSourceFile(); + File[] classFiles = new File[units.length]; + for (int j = 0; j < classFiles.length; j++) + classFiles[j] = new File(tempDirFile, units[j].getName() + ".class"); + try { + String errors = compileClasses(sources, classpath); + if (errors == null) + for (int m = 0; m < units.length; m++) { + byte[] classBytes = JRLoader.loadBytes(classFiles[m]); + units[m].setCompileData((Serializable)classBytes); + } + return errors; + } finally { + for (int k = 0; k < classFiles.length; k++) { + if (classFiles[k].exists()) + classFiles[k].delete(); + } + } + } + + protected void checkLanguage(String language) throws JRException { + if (!"java".equals(language)) + throw new JRException("Language \"" + language + "\" not supported by this report compiler.\n" + "Expecting \"java\" instead."); + } + + protected JRCompilationSourceCode generateSourceCode(JRSourceCompileTask sourceTask) throws JRException { + return JRClassGenerator.generateClass(sourceTask); + } + + protected String getSourceFileName(String unitName) { + return unitName + ".java"; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractCompiler.java new file mode 100644 index 0000000..3c8d882 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractCompiler.java @@ -0,0 +1,189 @@ +package net.sf.jasperreports.engine.design; + +import java.io.File; +import java.io.Serializable; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Random; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRReport; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.fill.JREvaluator; +import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.util.JRSaver; +import net.sf.jasperreports.engine.util.JRStringUtil; + +public abstract class JRAbstractCompiler implements JRCompiler { + private static final int NAME_SUFFIX_RANDOM_MAX = 1000000; + + private static final Random random = new Random(); + + private final boolean needsSourceFiles; + + protected JRAbstractCompiler(boolean needsSourceFiles) { + this.needsSourceFiles = needsSourceFiles; + } + + public static String getUnitName(JasperReport report, JRDataset dataset) { + return getUnitName((JRReport)report, dataset, report.getCompileNameSuffix()); + } + + protected static String getUnitName(JRReport report, JRDataset dataset, String nameSuffix) { + if (dataset.isMainDataset()) { + className = report.getName(); + } else { + className = report.getName() + "_" + dataset.getName(); + } + String className = JRStringUtil.getLiteral(className) + nameSuffix; + return className; + } + + public static String getUnitName(JasperReport report, JRCrosstab crosstab) { + return getUnitName((JRReport)report, crosstab.getId(), report.getCompileNameSuffix()); + } + + protected static String getUnitName(JRReport report, JRCrosstab crosstab, JRExpressionCollector expressionCollector, String nameSuffix) { + Integer crosstabId = expressionCollector.getCrosstabId(crosstab); + if (crosstabId == null) + throw new JRRuntimeException("Crosstab ID not found."); + return getUnitName(report, crosstabId.intValue(), nameSuffix); + } + + protected static String getUnitName(JRReport report, int crosstabId, String nameSuffix) { + return JRStringUtil.getLiteral(report.getName()) + "_CROSSTAB" + crosstabId + nameSuffix; + } + + public final JasperReport compileReport(JasperDesign jasperDesign) throws JRException { + checkLanguage(jasperDesign.getLanguage()); + JRExpressionCollector expressionCollector = JRExpressionCollector.collector((JRReport)jasperDesign); + verifyDesign(jasperDesign, expressionCollector); + String nameSuffix = createNameSuffix(); + boolean isKeepJavaFile = JRProperties.getBooleanProperty("net.sf.jasperreports.compiler.keep.java.file"); + File tempDirFile = null; + if (isKeepJavaFile || this.needsSourceFiles) { + String tempDirStr = JRProperties.getProperty("net.sf.jasperreports.compiler.temp.dir"); + tempDirFile = new File(tempDirStr); + if (!tempDirFile.exists() || !tempDirFile.isDirectory()) + throw new JRException("Temporary directory not found : " + tempDirStr); + } + List datasets = jasperDesign.getDatasetsList(); + List crosstabs = jasperDesign.getCrosstabs(); + JRCompilationUnit[] units = new JRCompilationUnit[datasets.size() + crosstabs.size() + 1]; + units[0] = createCompileUnit(jasperDesign, jasperDesign.getMainDesignDataset(), expressionCollector, tempDirFile, nameSuffix); + int sourcesCount = 1; + for (Iterator iterator = datasets.iterator(); iterator.hasNext(); sourcesCount++) { + JRDesignDataset dataset = iterator.next(); + units[sourcesCount] = createCompileUnit(jasperDesign, dataset, expressionCollector, tempDirFile, nameSuffix); + } + for (Iterator it = crosstabs.iterator(); it.hasNext(); sourcesCount++) { + JRDesignCrosstab crosstab = it.next(); + units[sourcesCount] = createCompileUnit(jasperDesign, crosstab, expressionCollector, tempDirFile, nameSuffix); + } + String classpath = JRProperties.getProperty("net.sf.jasperreports.compiler.classpath"); + try { + String compileErrors = compileUnits(units, classpath, tempDirFile); + if (compileErrors != null) + throw new JRException("Errors were encountered when compiling report expressions class file:\n" + compileErrors); + JRReportCompileData reportCompileData = new JRReportCompileData(); + reportCompileData.setMainDatasetCompileData(units[0].getCompileData()); + for (ListIterator listIterator1 = datasets.listIterator(); listIterator1.hasNext(); ) { + JRDesignDataset dataset = listIterator1.next(); + reportCompileData.setDatasetCompileData((JRDataset)dataset, units[listIterator1.nextIndex()].getCompileData()); + } + for (ListIterator listIterator = crosstabs.listIterator(); listIterator.hasNext(); ) { + JRDesignCrosstab crosstab = listIterator.next(); + Integer crosstabId = expressionCollector.getCrosstabId((JRCrosstab)crosstab); + reportCompileData.setCrosstabCompileData(crosstabId.intValue(), units[datasets.size() + listIterator.nextIndex()].getCompileData()); + } + JasperReport jasperReport = new JasperReport((JRReport)jasperDesign, getCompilerClass(), reportCompileData, expressionCollector, nameSuffix); + return jasperReport; + } catch (JRException e) { + throw e; + } catch (Exception e) { + throw new JRException("Error compiling report design.", e); + } finally { + if (this.needsSourceFiles && !isKeepJavaFile) + deleteSourceFiles(units); + } + } + + private static String createNameSuffix() { + return "_" + System.currentTimeMillis() + "_" + random.nextInt(1000000); + } + + protected String getCompilerClass() { + return getClass().getName(); + } + + private void verifyDesign(JasperDesign jasperDesign, JRExpressionCollector expressionCollector) throws JRException { + Collection brokenRules = JRVerifier.verifyDesign(jasperDesign, expressionCollector); + if (brokenRules != null && brokenRules.size() > 0) + throw new JRValidationException(brokenRules); + } + + private JRCompilationUnit createCompileUnit(JasperDesign jasperDesign, JRDesignDataset dataset, JRExpressionCollector expressionCollector, File saveSourceDir, String nameSuffix) throws JRException { + String unitName = getUnitName((JRReport)jasperDesign, (JRDataset)dataset, nameSuffix); + JRSourceCompileTask sourceTask = new JRSourceCompileTask(jasperDesign, dataset, expressionCollector, unitName); + JRCompilationSourceCode sourceCode = generateSourceCode(sourceTask); + File sourceFile = getSourceFile(saveSourceDir, unitName, sourceCode); + return new JRCompilationUnit(unitName, sourceCode, sourceFile, expressionCollector.getExpressions((JRDataset)dataset)); + } + + private JRCompilationUnit createCompileUnit(JasperDesign jasperDesign, JRDesignCrosstab crosstab, JRExpressionCollector expressionCollector, File saveSourceDir, String nameSuffix) throws JRException { + String unitName = getUnitName((JRReport)jasperDesign, (JRCrosstab)crosstab, expressionCollector, nameSuffix); + JRSourceCompileTask sourceTask = new JRSourceCompileTask(jasperDesign, crosstab, expressionCollector, unitName); + JRCompilationSourceCode sourceCode = generateSourceCode(sourceTask); + File sourceFile = getSourceFile(saveSourceDir, unitName, sourceCode); + return new JRCompilationUnit(unitName, sourceCode, sourceFile, expressionCollector.getExpressions((JRCrosstab)crosstab)); + } + + private File getSourceFile(File saveSourceDir, String unitName, JRCompilationSourceCode sourceCode) throws JRException { + File sourceFile = null; + if (saveSourceDir != null) { + String fileName = getSourceFileName(unitName); + sourceFile = new File(saveSourceDir, fileName); + JRSaver.saveClassSource(sourceCode.getCode(), sourceFile); + } + return sourceFile; + } + + private void deleteSourceFiles(JRCompilationUnit[] units) { + for (int i = 0; i < units.length; i++) + units[i].getSourceFile().delete(); + } + + public JREvaluator loadEvaluator(JasperReport jasperReport) throws JRException { + return loadEvaluator(jasperReport, jasperReport.getMainDataset()); + } + + public JREvaluator loadEvaluator(JasperReport jasperReport, JRDataset dataset) throws JRException { + String unitName = getUnitName(jasperReport, dataset); + JRReportCompileData reportCompileData = (JRReportCompileData)jasperReport.getCompileData(); + Serializable compileData = reportCompileData.getDatasetCompileData(dataset); + return loadEvaluator(compileData, unitName); + } + + public JREvaluator loadEvaluator(JasperReport jasperReport, JRCrosstab crosstab) throws JRException { + String unitName = getUnitName(jasperReport, crosstab); + JRReportCompileData reportCompileData = (JRReportCompileData)jasperReport.getCompileData(); + Serializable compileData = reportCompileData.getCrosstabCompileData(crosstab); + return loadEvaluator(compileData, unitName); + } + + protected abstract JREvaluator loadEvaluator(Serializable paramSerializable, String paramString) throws JRException; + + protected abstract void checkLanguage(String paramString) throws JRException; + + protected abstract JRCompilationSourceCode generateSourceCode(JRSourceCompileTask paramJRSourceCompileTask) throws JRException; + + protected abstract String compileUnits(JRCompilationUnit[] paramArrayOfJRCompilationUnit, String paramString, File paramFile) throws JRException; + + protected abstract String getSourceFileName(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractJavaCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractJavaCompiler.java new file mode 100644 index 0000000..f1acf68 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractJavaCompiler.java @@ -0,0 +1,66 @@ +package net.sf.jasperreports.engine.design; + +import java.io.Serializable; +import java.util.Map; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.fill.JREvaluator; +import net.sf.jasperreports.engine.util.JRClassLoader; +import net.sf.jasperreports.engine.util.JRProperties; +import org.apache.commons.collections.ReferenceMap; + +public abstract class JRAbstractJavaCompiler extends JRAbstractCompiler { + public static final String PROPERTY_EVALUATOR_CLASS_REFERENCE_FIX_ENABLED = "net.sf.jasperreports.evaluator.class.reference.fix.enabled"; + + private static ThreadLocal classFromBytesRef = new ThreadLocal(); + + private static Object CLASS_CACHE_NULL_KEY = new Object(); + + private static Map classCache = (Map)new ReferenceMap(2, 1); + + protected JRAbstractJavaCompiler(boolean needsSourceFiles) { + super(needsSourceFiles); + } + + protected JREvaluator loadEvaluator(Serializable compileData, String className) throws JRException { + JREvaluator evaluator = null; + try { + Class clazz = getClassFromCache(className); + if (clazz == null) { + clazz = JRClassLoader.loadClassFromBytes(className, (byte[])compileData); + putClassInCache(className, clazz); + } + if (JRProperties.getBooleanProperty("net.sf.jasperreports.evaluator.class.reference.fix.enabled")) + classFromBytesRef.set(clazz); + evaluator = (JREvaluator)clazz.newInstance(); + } catch (Exception e) { + throw new JRException("Error loading expression class : " + className, e); + } + return evaluator; + } + + protected static Object classCacheKey() { + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + Object key = (contextClassLoader == null) ? CLASS_CACHE_NULL_KEY : contextClassLoader; + return key; + } + + protected static synchronized Class getClassFromCache(String className) { + Object key = classCacheKey(); + Map contextMap = (Map)classCache.get(key); + Class cachedClass = null; + if (contextMap != null) + cachedClass = (Class)contextMap.get(className); + return cachedClass; + } + + protected static synchronized void putClassInCache(String className, Class loadedClass) { + ReferenceMap referenceMap; + Object key = classCacheKey(); + Map contextMap = (Map)classCache.get(key); + if (contextMap == null) { + referenceMap = new ReferenceMap(0, 1); + classCache.put(key, referenceMap); + } + referenceMap.put(className, loadedClass); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractMultiClassCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractMultiClassCompiler.java new file mode 100644 index 0000000..5b70a45 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRAbstractMultiClassCompiler.java @@ -0,0 +1,10 @@ +package net.sf.jasperreports.engine.design; + +import java.io.File; +import net.sf.jasperreports.engine.JRException; + +public abstract class JRAbstractMultiClassCompiler extends JRAbstractClassCompiler { + public String compileClass(File sourceFile, String classpath) throws JRException { + return compileClasses(new File[] { sourceFile }, classpath); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRClassCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRClassCompiler.java new file mode 100644 index 0000000..99be2fd --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRClassCompiler.java @@ -0,0 +1,8 @@ +package net.sf.jasperreports.engine.design; + +import java.io.File; +import net.sf.jasperreports.engine.JRException; + +public interface JRClassCompiler { + String compileClass(File paramFile, String paramString) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRClassGenerator.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRClassGenerator.java new file mode 100644 index 0000000..7af54bf --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRClassGenerator.java @@ -0,0 +1,482 @@ +package net.sf.jasperreports.engine.design; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.util.JRStringUtil; + +public class JRClassGenerator { + private static final int EXPR_MAX_COUNT_PER_METHOD = 100; + + protected static final String SOURCE_EXPRESSION_ID_START = "$JR_EXPR_ID="; + + protected static final int sOURCE_EXPRESSION_ID_START_LENGTH = "$JR_EXPR_ID=".length(); + + protected static final String SOURCE_EXPRESSION_ID_END = "$"; + + private static Map fieldPrefixMap = null; + + private static Map variablePrefixMap = null; + + private static Map methodSuffixMap = null; + + protected final JRSourceCompileTask sourceTask; + + protected Map parametersMap; + + protected Map fieldsMap; + + protected Map variablesMap; + + protected JRVariable[] variables; + + static { + fieldPrefixMap = new HashMap(); + fieldPrefixMap.put(new Byte((byte)1), "Old"); + fieldPrefixMap.put(new Byte((byte)2), ""); + fieldPrefixMap.put(new Byte((byte)3), ""); + variablePrefixMap = new HashMap(); + variablePrefixMap.put(new Byte((byte)1), "Old"); + variablePrefixMap.put(new Byte((byte)2), "Estimated"); + variablePrefixMap.put(new Byte((byte)3), ""); + methodSuffixMap = new HashMap(); + methodSuffixMap.put(new Byte((byte)1), "Old"); + methodSuffixMap.put(new Byte((byte)2), "Estimated"); + methodSuffixMap.put(new Byte((byte)3), ""); + } + + protected JRClassGenerator(JRSourceCompileTask sourceTask) { + this.sourceTask = sourceTask; + this.parametersMap = sourceTask.getParametersMap(); + this.fieldsMap = sourceTask.getFieldsMap(); + this.variablesMap = sourceTask.getVariablesMap(); + this.variables = sourceTask.getVariables(); + } + + public static JRCompilationSourceCode generateClass(JRSourceCompileTask sourceTask) throws JRException { + JRClassGenerator generator = new JRClassGenerator(sourceTask); + return generator.generateClass(); + } + + protected JRCompilationSourceCode generateClass() throws JRException { + StringBuffer sb = new StringBuffer(); + generateClassStart(sb); + generateDeclarations(sb); + generateInitMethod(sb); + generateInitParamsMethod(sb); + if (this.fieldsMap != null) + generateInitFieldsMethod(sb); + generateInitVarsMethod(sb); + List expressions = this.sourceTask.getExpressions(); + sb.append(generateMethod((byte)3, expressions)); + if (this.sourceTask.isOnlyDefaultEvaluation()) { + List empty = new ArrayList(); + sb.append(generateMethod((byte)1, empty)); + sb.append(generateMethod((byte)2, empty)); + } else { + sb.append(generateMethod((byte)1, expressions)); + sb.append(generateMethod((byte)2, expressions)); + } + sb.append("}\n"); + String code = sb.toString(); + JRExpression[] lineExpressions = parseSourceLines(code); + return new JRDefaultCompilationSourceCode(code, lineExpressions); + } + + private void generateInitMethod(StringBuffer sb) { + sb.append("\n"); + sb.append("\n"); + sb.append(" /**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + sb.append(" public void customizedInit(\n"); + sb.append(" Map pm,\n"); + sb.append(" Map fm,\n"); + sb.append(" Map vm\n"); + sb.append(" )\n"); + sb.append(" {\n"); + sb.append(" initParams(pm);\n"); + if (this.fieldsMap != null) + sb.append(" initFields(fm);\n"); + sb.append(" initVars(vm);\n"); + sb.append(" }\n"); + sb.append("\n"); + sb.append("\n"); + } + + protected final void generateClassStart(StringBuffer sb) { + sb.append("/*\n"); + sb.append(" * Generated by JasperReports - "); + sb.append((new SimpleDateFormat()).format(new Date())); + sb.append("\n"); + sb.append(" */\n"); + sb.append("import net.sf.jasperreports.engine.*;\n"); + sb.append("import net.sf.jasperreports.engine.fill.*;\n"); + sb.append("\n"); + sb.append("import java.util.*;\n"); + sb.append("import java.math.*;\n"); + sb.append("import java.text.*;\n"); + sb.append("import java.io.*;\n"); + sb.append("import java.net.*;\n"); + sb.append("\n"); + String[] imports = this.sourceTask.getImports(); + if (imports != null && imports.length > 0) + for (int i = 0; i < imports.length; i++) { + sb.append("import "); + sb.append(imports[i]); + sb.append(";\n"); + } + sb.append("\n"); + sb.append("\n"); + sb.append("/**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + sb.append("public class "); + sb.append(this.sourceTask.getUnitName()); + sb.append(" extends JREvaluator\n"); + sb.append("{\n"); + sb.append("\n"); + sb.append("\n"); + sb.append(" /**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + } + + protected final void generateDeclarations(StringBuffer sb) { + if (this.parametersMap != null && this.parametersMap.size() > 0) { + Collection parameterNames = this.parametersMap.keySet(); + for (Iterator it = parameterNames.iterator(); it.hasNext(); ) { + sb.append(" private JRFillParameter parameter_"); + sb.append(JRStringUtil.getLiteral(it.next())); + sb.append(" = null;\n"); + } + } + if (this.fieldsMap != null && this.fieldsMap.size() > 0) { + Collection fieldNames = this.fieldsMap.keySet(); + for (Iterator it = fieldNames.iterator(); it.hasNext(); ) { + sb.append(" private JRFillField field_"); + sb.append(JRStringUtil.getLiteral(it.next())); + sb.append(" = null;\n"); + } + } + if (this.variables != null && this.variables.length > 0) + for (int i = 0; i < this.variables.length; i++) { + sb.append(" private JRFillVariable variable_"); + sb.append(JRStringUtil.getLiteral(this.variables[i].getName())); + sb.append(" = null;\n"); + } + } + + protected final void generateInitParamsMethod(StringBuffer sb) throws JRException { + Iterator parIt = null; + if (this.parametersMap != null && this.parametersMap.size() > 0) { + parIt = this.parametersMap.keySet().iterator(); + } else { + parIt = Collections.EMPTY_SET.iterator(); + } + generateInitParamsMethod(sb, parIt, 0); + } + + protected final void generateInitFieldsMethod(StringBuffer sb) throws JRException { + Iterator fieldIt = null; + if (this.fieldsMap != null && this.fieldsMap.size() > 0) { + fieldIt = this.fieldsMap.keySet().iterator(); + } else { + fieldIt = Collections.EMPTY_SET.iterator(); + } + generateInitFieldsMethod(sb, fieldIt, 0); + } + + protected final void generateInitVarsMethod(StringBuffer sb) throws JRException { + Iterator varIt = null; + if (this.variables != null && this.variables.length > 0) { + varIt = Arrays.asList(this.variables).iterator(); + } else { + varIt = Collections.EMPTY_LIST.iterator(); + } + generateInitVarsMethod(sb, varIt, 0); + } + + private void generateInitParamsMethod(StringBuffer sb, Iterator it, int index) throws JRException { + sb.append(" /**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + sb.append(" private void initParams"); + if (index > 0) + sb.append(index); + sb.append("(Map pm)\n"); + sb.append(" {\n"); + for (int i = 0; i < 100 && it.hasNext(); i++) { + String parameterName = it.next(); + sb.append(" parameter_"); + sb.append(JRStringUtil.getLiteral(parameterName)); + sb.append(" = (JRFillParameter)pm.get(\""); + sb.append(parameterName); + sb.append("\");\n"); + } + if (it.hasNext()) { + sb.append(" initParams"); + sb.append(index + 1); + sb.append("(pm);\n"); + } + sb.append(" }\n"); + sb.append("\n"); + sb.append("\n"); + if (it.hasNext()) + generateInitParamsMethod(sb, it, index + 1); + } + + private void generateInitFieldsMethod(StringBuffer sb, Iterator it, int index) throws JRException { + sb.append(" /**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + sb.append(" private void initFields"); + if (index > 0) + sb.append(index); + sb.append("(Map fm)\n"); + sb.append(" {\n"); + for (int i = 0; i < 100 && it.hasNext(); i++) { + String fieldName = it.next(); + sb.append(" field_"); + sb.append(JRStringUtil.getLiteral(fieldName)); + sb.append(" = (JRFillField)fm.get(\""); + sb.append(fieldName); + sb.append("\");\n"); + } + if (it.hasNext()) { + sb.append(" initFields"); + sb.append(index + 1); + sb.append("(fm);\n"); + } + sb.append(" }\n"); + sb.append("\n"); + sb.append("\n"); + if (it.hasNext()) + generateInitFieldsMethod(sb, it, index + 1); + } + + private void generateInitVarsMethod(StringBuffer sb, Iterator it, int index) throws JRException { + sb.append(" /**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + sb.append(" private void initVars"); + if (index > 0) + sb.append(index); + sb.append("(Map vm)\n"); + sb.append(" {\n"); + for (int i = 0; i < 100 && it.hasNext(); i++) { + String variableName = ((JRVariable)it.next()).getName(); + sb.append(" variable_"); + sb.append(JRStringUtil.getLiteral(variableName)); + sb.append(" = (JRFillVariable)vm.get(\""); + sb.append(variableName); + sb.append("\");\n"); + } + if (it.hasNext()) { + sb.append(" initVars"); + sb.append(index + 1); + sb.append("(vm);\n"); + } + sb.append(" }\n"); + sb.append("\n"); + sb.append("\n"); + if (it.hasNext()) + generateInitVarsMethod(sb, it, index + 1); + } + + protected final String generateMethod(byte evaluationType, List expressionsList) throws JRException { + StringBuffer sb = new StringBuffer(); + if (expressionsList.size() > 0) { + sb.append(generateMethod(expressionsList.listIterator(), 0, evaluationType)); + } else { + sb.append(" /**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + sb.append(" public Object evaluate"); + sb.append((String)methodSuffixMap.get(new Byte(evaluationType))); + sb.append("(int id) throws Throwable\n"); + sb.append(" {\n"); + sb.append(" return null;\n"); + sb.append(" }\n"); + sb.append("\n"); + sb.append("\n"); + } + return sb.toString(); + } + + private String generateMethod(Iterator it, int index, byte evaluationType) throws JRException { + StringBuffer sb = new StringBuffer(); + sb.append(" /**\n"); + sb.append(" *\n"); + sb.append(" */\n"); + if (index > 0) { + sb.append(" private Object evaluate"); + sb.append((String)methodSuffixMap.get(new Byte(evaluationType))); + sb.append(index); + } else { + sb.append(" public Object evaluate"); + sb.append((String)methodSuffixMap.get(new Byte(evaluationType))); + } + sb.append("(int id) throws Throwable\n"); + sb.append(" {\n"); + sb.append(" Object value = null;\n"); + sb.append("\n"); + sb.append(" switch (id)\n"); + sb.append(" {\n"); + for (int i = 0; it.hasNext() && i < 100; i++) { + JRExpression expression = it.next(); + sb.append(" case "); + sb.append(this.sourceTask.getExpressionId(expression)); + sb.append(" : \n"); + sb.append(" {\n"); + sb.append(" value = ("); + sb.append(expression.getValueClassName()); + sb.append(")("); + sb.append(generateExpression(expression, evaluationType)); + sb.append(");"); + appendExpressionComment(sb, expression); + sb.append("\n"); + sb.append(" break;\n"); + sb.append(" }\n"); + } + sb.append(" default :\n"); + sb.append(" {\n"); + if (it.hasNext()) { + sb.append(" value = evaluate"); + sb.append((String)methodSuffixMap.get(new Byte(evaluationType))); + sb.append(index + 1); + sb.append("(id);\n"); + } + sb.append(" }\n"); + sb.append(" }\n"); + sb.append(" \n"); + sb.append(" return value;\n"); + sb.append(" }\n"); + sb.append("\n"); + sb.append("\n"); + if (it.hasNext()) + sb.append(generateMethod(it, index + 1, evaluationType)); + return sb.toString(); + } + + private String generateExpression(JRExpression expression, byte evaluationType) { + JRParameter jrParameter = null; + JRField jrField = null; + JRVariable jrVariable = null; + StringBuffer sb = new StringBuffer(); + JRExpressionChunk[] chunks = expression.getChunks(); + JRExpressionChunk chunk = null; + String chunkText = null; + if (chunks != null && chunks.length > 0) + for (int i = 0; i < chunks.length; i++) { + chunk = chunks[i]; + chunkText = chunk.getText(); + if (chunkText == null) + chunkText = ""; + switch (chunk.getType()) { + case 1: + appendExpressionText(expression, sb, chunkText); + break; + case 2: + jrParameter = (JRParameter)this.parametersMap.get(chunkText); + sb.append("(("); + sb.append(jrParameter.getValueClassName()); + sb.append(")parameter_"); + sb.append(JRStringUtil.getLiteral(chunkText)); + sb.append(".getValue())"); + break; + case 3: + jrField = (JRField)this.fieldsMap.get(chunkText); + sb.append("(("); + sb.append(jrField.getValueClassName()); + sb.append(")field_"); + sb.append(JRStringUtil.getLiteral(chunkText)); + sb.append(".get"); + sb.append((String)fieldPrefixMap.get(new Byte(evaluationType))); + sb.append("Value())"); + break; + case 4: + jrVariable = (JRVariable)this.variablesMap.get(chunkText); + sb.append("(("); + sb.append(jrVariable.getValueClassName()); + sb.append(")variable_"); + sb.append(JRStringUtil.getLiteral(chunkText)); + sb.append(".get"); + sb.append((String)variablePrefixMap.get(new Byte(evaluationType))); + sb.append("Value())"); + break; + case 5: + sb.append("str(\""); + sb.append(chunkText); + sb.append("\")"); + break; + } + } + if (sb.length() == 0) + sb.append("null"); + return sb.toString(); + } + + protected void appendExpressionText(JRExpression expression, StringBuffer sb, String chunkText) { + StringTokenizer tokenizer = new StringTokenizer(chunkText, "\n", true); + while (tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken(); + if (token.equals("\n")) + appendExpressionComment(sb, expression); + sb.append(token); + } + } + + protected void appendExpressionComment(StringBuffer sb, JRExpression expression) { + sb.append("//"); + sb.append("$JR_EXPR_ID="); + sb.append(this.sourceTask.getExpressionId(expression)); + sb.append("$"); + } + + protected JRExpression[] parseSourceLines(String sourceCode) { + List expressions = new ArrayList(); + int start = 0; + int end = sourceCode.indexOf('\n'); + while (end >= 0) { + JRExpression expression = null; + if (start < end) { + String line = sourceCode.substring(start, end); + expression = getLineExpression(line); + } + expressions.add(expression); + start = end + 1; + end = sourceCode.indexOf('\n', start); + } + return expressions.toArray(new JRExpression[expressions.size()]); + } + + protected JRExpression getLineExpression(String line) { + JRExpression expression = null; + int exprIdStart = line.indexOf("$JR_EXPR_ID="); + if (exprIdStart >= 0) { + exprIdStart += sOURCE_EXPRESSION_ID_START_LENGTH; + int exprIdEnd = line.indexOf("$", exprIdStart); + if (exprIdEnd >= 0) + try { + int exprId = Integer.parseInt(line.substring(exprIdStart, exprIdEnd)); + expression = this.sourceTask.getExpression(exprId); + } catch (NumberFormatException e) {} + } + return expression; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationSourceCode.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationSourceCode.java new file mode 100644 index 0000000..967823f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationSourceCode.java @@ -0,0 +1,9 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRExpression; + +public interface JRCompilationSourceCode { + String getCode(); + + JRExpression getExpressionAtLine(int paramInt); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationUnit.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationUnit.java new file mode 100644 index 0000000..e5d233c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRCompilationUnit.java @@ -0,0 +1,52 @@ +package net.sf.jasperreports.engine.design; + +import java.io.File; +import java.io.Serializable; +import java.util.List; + +public class JRCompilationUnit { + private final String name; + + private final JRCompilationSourceCode source; + + private final File sourceFile; + + private final List expressions; + + private Serializable compileData; + + public JRCompilationUnit(String name, JRCompilationSourceCode sourceCode, File sourceFile, List expressions) { + this.name = name; + this.source = sourceCode; + this.sourceFile = sourceFile; + this.expressions = expressions; + } + + public String getName() { + return this.name; + } + + public String getSourceCode() { + return this.source.getCode(); + } + + public JRCompilationSourceCode getCompilationSource() { + return this.source; + } + + public File getSourceFile() { + return this.sourceFile; + } + + public List getExpressions() { + return this.expressions; + } + + public void setCompileData(Serializable compileData) { + this.compileData = compileData; + } + + public Serializable getCompileData() { + return this.compileData; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRCompiler.java new file mode 100644 index 0000000..9580b62 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRCompiler.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.fill.JREvaluator; + +public interface JRCompiler { + public static final String COMPILER_PREFIX = "net.sf.jasperreports.compiler."; + + JasperReport compileReport(JasperDesign paramJasperDesign) throws JRException; + + JREvaluator loadEvaluator(JasperReport paramJasperReport) throws JRException; + + JREvaluator loadEvaluator(JasperReport paramJasperReport, JRDataset paramJRDataset) throws JRException; + + JREvaluator loadEvaluator(JasperReport paramJasperReport, JRCrosstab paramJRCrosstab) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDefaultCompilationSourceCode.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDefaultCompilationSourceCode.java new file mode 100644 index 0000000..1657200 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDefaultCompilationSourceCode.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRExpression; + +public class JRDefaultCompilationSourceCode implements JRCompilationSourceCode { + private final String sourceCode; + + private final JRExpression[] lineExpressions; + + public JRDefaultCompilationSourceCode(String sourceCode, JRExpression[] lineExpressions) { + this.sourceCode = sourceCode; + this.lineExpressions = lineExpressions; + } + + public String getCode() { + return this.sourceCode; + } + + public JRExpression getExpressionAtLine(int line) { + if (this.lineExpressions == null || line <= 0 || line > this.lineExpressions.length) + return null; + return this.lineExpressions[line - 1]; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignBand.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignBand.java new file mode 100644 index 0000000..1d77c36 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignBand.java @@ -0,0 +1,68 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JROrigin; + +public class JRDesignBand extends JRDesignElementGroup implements JRBand { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_HEIGHT = "height"; + + public static final String PROPERTY_PRINT_WHEN_EXPRESSION = "printWhenExpression"; + + protected int height = 0; + + protected boolean isSplitAllowed = true; + + protected JRExpression printWhenExpression = null; + + private JROrigin origin; + + public int getHeight() { + return this.height; + } + + public void setHeight(int height) { + int old = this.height; + this.height = height; + getEventSupport().firePropertyChange("height", old, this.height); + } + + public boolean isSplitAllowed() { + return this.isSplitAllowed; + } + + public void setSplitAllowed(boolean isSplitAllowed) { + boolean old = this.isSplitAllowed; + this.isSplitAllowed = isSplitAllowed; + getEventSupport().firePropertyChange("splitAllowed", old, this.isSplitAllowed); + } + + public JRExpression getPrintWhenExpression() { + return this.printWhenExpression; + } + + public void setPrintWhenExpression(JRExpression expression) { + Object old = this.printWhenExpression; + this.printWhenExpression = expression; + getEventSupport().firePropertyChange("printWhenExpression", old, this.printWhenExpression); + } + + public JROrigin getOrigin() { + return this.origin; + } + + void setOrigin(JROrigin origin) { + this.origin = origin; + } + + public Object clone() { + JRDesignBand clone = (JRDesignBand)super.clone(); + if (this.printWhenExpression != null) + clone.printWhenExpression = (JRExpression)this.printWhenExpression.clone(); + if (this.origin != null) + clone.origin = (JROrigin)this.origin.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChart.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChart.java new file mode 100644 index 0000000..f25b179 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChart.java @@ -0,0 +1,932 @@ +package net.sf.jasperreports.engine.design; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; +import net.sf.jasperreports.charts.design.JRDesignAreaPlot; +import net.sf.jasperreports.charts.design.JRDesignBar3DPlot; +import net.sf.jasperreports.charts.design.JRDesignBarPlot; +import net.sf.jasperreports.charts.design.JRDesignBubblePlot; +import net.sf.jasperreports.charts.design.JRDesignCandlestickPlot; +import net.sf.jasperreports.charts.design.JRDesignCategoryDataset; +import net.sf.jasperreports.charts.design.JRDesignHighLowDataset; +import net.sf.jasperreports.charts.design.JRDesignHighLowPlot; +import net.sf.jasperreports.charts.design.JRDesignLinePlot; +import net.sf.jasperreports.charts.design.JRDesignMeterPlot; +import net.sf.jasperreports.charts.design.JRDesignMultiAxisPlot; +import net.sf.jasperreports.charts.design.JRDesignPie3DPlot; +import net.sf.jasperreports.charts.design.JRDesignPieDataset; +import net.sf.jasperreports.charts.design.JRDesignPiePlot; +import net.sf.jasperreports.charts.design.JRDesignScatterPlot; +import net.sf.jasperreports.charts.design.JRDesignThermometerPlot; +import net.sf.jasperreports.charts.design.JRDesignTimeSeriesDataset; +import net.sf.jasperreports.charts.design.JRDesignTimeSeriesPlot; +import net.sf.jasperreports.charts.design.JRDesignValueDataset; +import net.sf.jasperreports.charts.design.JRDesignXyDataset; +import net.sf.jasperreports.charts.design.JRDesignXyzDataset; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRDesignChart extends JRDesignElement implements JRChart { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_ANCHOR_NAME_EXPRESSION = "anchorNameExpression"; + + public static final String PROPERTY_BOOKMARK_LEVEL = "bookmarkLevel"; + + public static final String PROPERTY_EVALUATION_GROUP = "evaluationGroup"; + + public static final String PROPERTY_EVALUATION_TIME = "evaluationTime"; + + public static final String PROPERTY_CHART_TYPE = "chartType"; + + public static final String PROPERTY_CUSTOMIZER_CLASS = "customizerClass"; + + public static final String PROPERTY_DATASET = "dataset"; + + public static final String PROPERTY_LEGEND_FONT = "legendFont"; + + public static final String PROPERTY_SUBTITLE_EXPRESSION = "subtitleExpression"; + + public static final String PROPERTY_SUBTITLE_FONT = "subtitleFont"; + + public static final String PROPERTY_TITLE_EXPRESSION = "titleExpression"; + + public static final String PROPERTY_TITLE_FONT = "titleFont"; + + protected byte chartType = 0; + + protected boolean isShowLegend = false; + + protected byte evaluationTime = 1; + + protected byte hyperlinkType = 0; + + protected String linkType; + + protected byte hyperlinkTarget = 1; + + protected byte titlePosition = 1; + + protected Color titleColor = null; + + protected Color subtitleColor = null; + + protected Color legendColor = null; + + protected Color legendBackgroundColor = null; + + protected byte legendPosition = 2; + + protected String renderType; + + protected JRFont titleFont = null; + + protected JRFont subtitleFont = null; + + protected JRFont legendFont = null; + + protected String customizerClass; + + protected JRGroup evaluationGroup = null; + + protected JRExpression titleExpression = null; + + protected JRExpression subtitleExpression = null; + + protected JRExpression anchorNameExpression = null; + + protected JRExpression hyperlinkReferenceExpression = null; + + protected JRExpression hyperlinkAnchorExpression = null; + + protected JRExpression hyperlinkPageExpression = null; + + private JRExpression hyperlinkTooltipExpression; + + private List hyperlinkParameters; + + protected JRChartDataset dataset = null; + + protected JRChartPlot plot = null; + + protected JRLineBox lineBox; + + protected int bookmarkLevel = 0; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + public JRDesignChart(JRDefaultStyleProvider defaultStyleProvider, byte chartType) { + super(defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + setChartType(chartType); + this.hyperlinkParameters = new ArrayList(); + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + } + + public boolean isShowLegend() { + return this.isShowLegend; + } + + public void setShowLegend(boolean isShowLegend) { + boolean old = this.isShowLegend; + this.isShowLegend = isShowLegend; + getEventSupport().firePropertyChange("showLegend", old, this.isShowLegend); + } + + public String getRenderType() { + return this.renderType; + } + + public void setRenderType(String renderType) { + String old = this.renderType; + this.renderType = renderType; + getEventSupport().firePropertyChange("renderType", old, this.renderType); + } + + public byte getEvaluationTime() { + return this.evaluationTime; + } + + public void setEvaluationTime(byte evaluationTime) { + byte old = this.evaluationTime; + this.evaluationTime = evaluationTime; + getEventSupport().firePropertyChange("evaluationTime", old, this.evaluationTime); + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public void setEvaluationGroup(JRGroup group) { + Object old = this.evaluationGroup; + this.evaluationGroup = group; + getEventSupport().firePropertyChange("evaluationGroup", old, this.evaluationGroup); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, this.lineBox); + } + + public JRFont getTitleFont() { + return this.titleFont; + } + + public void setTitleFont(JRFont font) { + Object old = this.titleFont; + this.titleFont = font; + getEventSupport().firePropertyChange("titleFont", old, this.titleFont); + } + + public byte getTitlePosition() { + return this.titlePosition; + } + + public void setTitlePosition(byte titlePosition) { + byte old = this.titlePosition; + this.titlePosition = titlePosition; + getEventSupport().firePropertyChange("titlePosition", old, this.titlePosition); + } + + public Color getTitleColor() { + return JRStyleResolver.getTitleColor(this); + } + + public Color getOwnTitleColor() { + return this.titleColor; + } + + public void setTitleColor(Color titleColor) { + Object old = this.titleColor; + this.titleColor = titleColor; + getEventSupport().firePropertyChange("titleColor", old, this.titleColor); + } + + public JRFont getSubtitleFont() { + return this.subtitleFont; + } + + public void setSubtitleFont(JRFont font) { + Object old = this.subtitleFont; + this.subtitleFont = font; + getEventSupport().firePropertyChange("subtitleFont", old, this.subtitleFont); + } + + public Color getSubtitleColor() { + return JRStyleResolver.getSubtitleColor(this); + } + + public Color getOwnSubtitleColor() { + return this.subtitleColor; + } + + public void setSubtitleColor(Color subtitleColor) { + Object old = this.subtitleColor; + this.subtitleColor = subtitleColor; + getEventSupport().firePropertyChange("subtitleColor", old, this.subtitleColor); + } + + public Color getOwnLegendColor() { + return this.legendColor; + } + + public Color getLegendColor() { + return JRStyleResolver.getLegendColor(this); + } + + public void setLegendColor(Color legendColor) { + Object old = this.legendColor; + this.legendColor = legendColor; + getEventSupport().firePropertyChange("legendColor", old, this.legendColor); + } + + public Color getOwnLegendBackgroundColor() { + return this.legendBackgroundColor; + } + + public Color getLegendBackgroundColor() { + return JRStyleResolver.getLegendBackgroundColor(this); + } + + public void setLegendBackgroundColor(Color legendBackgroundColor) { + Object old = this.legendBackgroundColor; + this.legendBackgroundColor = legendBackgroundColor; + getEventSupport().firePropertyChange("legendBackgroundColor", old, this.legendBackgroundColor); + } + + public JRFont getLegendFont() { + return this.legendFont; + } + + public void setLegendFont(JRFont legendFont) { + Object old = this.legendFont; + this.legendFont = legendFont; + getEventSupport().firePropertyChange("legendFont", old, this.legendFont); + } + + public byte getLegendPosition() { + return this.legendPosition; + } + + public void setLegendPosition(byte legendPosition) { + byte old = this.legendPosition; + this.legendPosition = legendPosition; + getEventSupport().firePropertyChange("legendPosition", old, this.legendPosition); + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType((JRHyperlink)this); + } + + public void setHyperlinkType(byte hyperlinkType) { + setLinkType(JRHyperlinkHelper.getLinkType(hyperlinkType)); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public void setHyperlinkTarget(byte hyperlinkTarget) { + byte old = this.hyperlinkTarget; + this.hyperlinkTarget = hyperlinkTarget; + getEventSupport().firePropertyChange("hyperlinkTarget", old, this.hyperlinkTarget); + } + + public JRExpression getTitleExpression() { + return this.titleExpression; + } + + public void setTitleExpression(JRExpression expression) { + Object old = this.titleExpression; + this.titleExpression = expression; + getEventSupport().firePropertyChange("titleExpression", old, this.titleExpression); + } + + public JRExpression getSubtitleExpression() { + return this.subtitleExpression; + } + + public void setSubtitleExpression(JRExpression expression) { + Object old = this.subtitleExpression; + this.subtitleExpression = expression; + getEventSupport().firePropertyChange("subtitleExpression", old, this.subtitleExpression); + } + + public JRExpression getAnchorNameExpression() { + return this.anchorNameExpression; + } + + public void setAnchorNameExpression(JRExpression anchorNameExpression) { + Object old = this.anchorNameExpression; + this.anchorNameExpression = anchorNameExpression; + getEventSupport().firePropertyChange("anchorNameExpression", old, this.anchorNameExpression); + } + + public JRExpression getHyperlinkReferenceExpression() { + return this.hyperlinkReferenceExpression; + } + + public void setHyperlinkReferenceExpression(JRExpression hyperlinkReferenceExpression) { + Object old = this.hyperlinkReferenceExpression; + this.hyperlinkReferenceExpression = hyperlinkReferenceExpression; + getEventSupport().firePropertyChange("hyperlinkReferenceExpression", old, this.hyperlinkReferenceExpression); + } + + public JRExpression getHyperlinkAnchorExpression() { + return this.hyperlinkAnchorExpression; + } + + public void setHyperlinkAnchorExpression(JRExpression hyperlinkAnchorExpression) { + Object old = this.hyperlinkAnchorExpression; + this.hyperlinkAnchorExpression = hyperlinkAnchorExpression; + getEventSupport().firePropertyChange("hyperlinkAnchorExpression", old, this.hyperlinkAnchorExpression); + } + + public JRExpression getHyperlinkPageExpression() { + return this.hyperlinkPageExpression; + } + + public void setHyperlinkPageExpression(JRExpression hyperlinkPageExpression) { + Object old = this.hyperlinkPageExpression; + this.hyperlinkPageExpression = hyperlinkPageExpression; + getEventSupport().firePropertyChange("hyperlinkPageExpression", old, this.hyperlinkPageExpression); + } + + public JRChartDataset getDataset() { + return this.dataset; + } + + public JRChartPlot getPlot() { + return this.plot; + } + + public byte getChartType() { + return this.chartType; + } + + public void setChartType(byte chartType) { + byte old = this.chartType; + this.chartType = chartType; + switch (chartType) { + case 1: + this.dataset = (JRChartDataset)new JRDesignCategoryDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignAreaPlot(this.plot, this); + break; + case 3: + this.dataset = (JRChartDataset)new JRDesignCategoryDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignBarPlot(this.plot, this); + break; + case 2: + this.dataset = (JRChartDataset)new JRDesignCategoryDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignBar3DPlot(this.plot, this); + break; + case 4: + this.dataset = (JRChartDataset)new JRDesignXyzDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignBubblePlot(this.plot, this); + break; + case 5: + this.dataset = (JRChartDataset)new JRDesignHighLowDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignCandlestickPlot(this.plot, this); + break; + case 6: + this.dataset = (JRChartDataset)new JRDesignHighLowDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignHighLowPlot(this.plot, this); + break; + case 7: + this.dataset = (JRChartDataset)new JRDesignCategoryDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignLinePlot(this.plot, this); + break; + case 17: + this.dataset = (JRChartDataset)new JRDesignValueDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignMeterPlot(this.plot, this); + break; + case 19: + this.plot = (JRChartPlot)new JRDesignMultiAxisPlot(this.plot, this); + this.dataset = null; + break; + case 9: + this.dataset = (JRChartDataset)new JRDesignPieDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignPiePlot(this.plot, this); + break; + case 8: + this.dataset = (JRChartDataset)new JRDesignPieDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignPie3DPlot(this.plot, this); + break; + case 10: + this.dataset = (JRChartDataset)new JRDesignXyDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignScatterPlot(this.plot, this); + break; + case 12: + this.dataset = (JRChartDataset)new JRDesignCategoryDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignBarPlot(this.plot, this); + break; + case 11: + this.dataset = (JRChartDataset)new JRDesignCategoryDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignBar3DPlot(this.plot, this); + break; + case 18: + this.dataset = (JRChartDataset)new JRDesignValueDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignThermometerPlot(this.plot, this); + break; + case 16: + this.dataset = (JRChartDataset)new JRDesignTimeSeriesDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignTimeSeriesPlot(this.plot, this); + break; + case 13: + this.dataset = (JRChartDataset)new JRDesignXyDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignAreaPlot(this.plot, this); + break; + case 14: + this.plot = (JRChartPlot)new JRDesignBarPlot(this.plot, this); + break; + case 15: + this.dataset = (JRChartDataset)new JRDesignXyDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignLinePlot(this.plot, this); + break; + case 20: + this.dataset = (JRChartDataset)new JRDesignCategoryDataset(this.dataset); + this.plot = (JRChartPlot)new JRDesignAreaPlot(this.plot, this); + break; + default: + throw new JRRuntimeException("Chart type not supported."); + } + getEventSupport().firePropertyChange("chartType", old, this.chartType); + } + + public void setDataset(JRChartDataset ds) { + Object old = this.dataset; + switch (ds.getDatasetType()) { + case 2: + this.dataset = ds; + break; + case 7: + this.dataset = ds; + break; + case 1: + this.dataset = ds; + break; + case 5: + this.dataset = ds; + break; + case 6: + this.dataset = ds; + break; + case 8: + this.dataset = ds; + break; + case 3: + this.dataset = ds; + break; + case 4: + this.dataset = ds; + break; + } + getEventSupport().firePropertyChange("dataset", old, this.dataset); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitChart(this); + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public void setBookmarkLevel(int bookmarkLevel) { + int old = this.bookmarkLevel; + this.bookmarkLevel = bookmarkLevel; + getEventSupport().firePropertyChange("bookmarkLevel", old, this.bookmarkLevel); + } + + public String getCustomizerClass() { + return this.customizerClass; + } + + public void setCustomizerClass(String customizerClass) { + Object old = this.customizerClass; + this.customizerClass = customizerClass; + getEventSupport().firePropertyChange("customizerClass", old, this.customizerClass); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public String getLinkType() { + return this.linkType; + } + + public void setLinkType(String type) { + Object old = this.linkType; + this.linkType = type; + getEventSupport().firePropertyChange("linkType", old, this.linkType); + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + JRHyperlinkParameter[] parameters; + if (this.hyperlinkParameters.isEmpty()) { + parameters = null; + } else { + parameters = new JRHyperlinkParameter[this.hyperlinkParameters.size()]; + this.hyperlinkParameters.toArray((Object[])parameters); + } + return parameters; + } + + public List getHyperlinkParametersList() { + return this.hyperlinkParameters; + } + + public void addHyperlinkParameter(JRHyperlinkParameter parameter) { + this.hyperlinkParameters.add(parameter); + getEventSupport().fireCollectionElementAddedEvent("hyperlinkParameters", parameter, this.hyperlinkParameters.size() - 1); + } + + public void removeHyperlinkParameter(JRHyperlinkParameter parameter) { + int idx = this.hyperlinkParameters.indexOf(parameter); + if (idx >= 0) { + this.hyperlinkParameters.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("hyperlinkParameters", parameter, idx); + } + } + + public void removeHyperlinkParameter(String parameterName) { + for (ListIterator it = this.hyperlinkParameters.listIterator(); it.hasNext(); ) { + JRHyperlinkParameter parameter = it.next(); + if (parameter.getName() != null && parameter.getName().equals(parameterName)) { + it.remove(); + getEventSupport().fireCollectionElementRemovedEvent("hyperlinkParameters", parameter, it.nextIndex()); + } + } + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public JRExpression getHyperlinkTooltipExpression() { + return this.hyperlinkTooltipExpression; + } + + public void setHyperlinkTooltipExpression(JRExpression hyperlinkTooltipExpression) { + Object old = this.hyperlinkTooltipExpression; + this.hyperlinkTooltipExpression = hyperlinkTooltipExpression; + getEventSupport().firePropertyChange("hyperlinkTooltipExpression", old, this.hyperlinkTooltipExpression); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public Object clone() { + JRDesignChart clone = (JRDesignChart)super.clone(); + if (this.hyperlinkParameters != null) { + clone.hyperlinkParameters = new ArrayList(this.hyperlinkParameters.size()); + for (int i = 0; i < this.hyperlinkParameters.size(); i++) + clone.hyperlinkParameters.add(((JRHyperlinkParameter)this.hyperlinkParameters.get(i)).clone()); + } + if (this.titleExpression != null) + clone.titleExpression = (JRExpression)this.titleExpression.clone(); + if (this.subtitleExpression != null) + clone.subtitleExpression = (JRExpression)this.subtitleExpression.clone(); + if (this.anchorNameExpression != null) + clone.anchorNameExpression = (JRExpression)this.anchorNameExpression.clone(); + if (this.hyperlinkReferenceExpression != null) + clone.hyperlinkReferenceExpression = (JRExpression)this.hyperlinkReferenceExpression.clone(); + if (this.hyperlinkAnchorExpression != null) + clone.hyperlinkAnchorExpression = (JRExpression)this.hyperlinkAnchorExpression.clone(); + if (this.hyperlinkPageExpression != null) + clone.hyperlinkPageExpression = (JRExpression)this.hyperlinkPageExpression.clone(); + if (this.hyperlinkTooltipExpression != null) + clone.hyperlinkTooltipExpression = (JRExpression)this.hyperlinkTooltipExpression.clone(); + if (this.dataset != null) + clone.dataset = (JRChartDataset)this.dataset.clone(); + if (this.plot != null) + clone.plot = (JRChartPlot)this.plot.clone(clone); + return clone; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + normalizeLinkType(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChartDataset.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChartDataset.java new file mode 100644 index 0000000..844f3e2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignChartDataset.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; + +public abstract class JRDesignChartDataset extends JRDesignElementDataset implements JRChartDataset { + private static final long serialVersionUID = 10200L; + + public JRDesignChartDataset() {} + + public JRDesignChartDataset(JRChartDataset dataset) { + super((JRElementDataset)dataset); + } + + public JRDesignChartDataset(JRChartDataset dataset, JRBaseObjectFactory factory) { + super((JRElementDataset)dataset, factory); + } + + public byte getDatasetType() { + return -1; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignDataset.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignDataset.java new file mode 100644 index 0000000..dc6f70d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignDataset.java @@ -0,0 +1,589 @@ +package net.sf.jasperreports.engine.design; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import java.net.URLStreamHandlerFactory; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.ListIterator; +import java.util.Locale; +import java.util.Map; +import java.util.ResourceBundle; +import java.util.TimeZone; +import net.sf.jasperreports.engine.JRAbstractScriptlet; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JRVirtualizer; +import net.sf.jasperreports.engine.base.JRBaseDataset; +import net.sf.jasperreports.engine.query.JRQueryExecuterFactory; +import net.sf.jasperreports.engine.util.FileResolver; +import net.sf.jasperreports.engine.util.FormatFactory; +import net.sf.jasperreports.engine.util.JRQueryExecuterUtils; + +public class JRDesignDataset extends JRBaseDataset { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_FIELDS = "fields"; + + public static final String PROPERTY_FILTER_EXPRESSION = "filterExpression"; + + public static final String PROPERTY_GROUPS = "groups"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_PARAMETERS = "parameters"; + + public static final String PROPERTY_QUERY = "query"; + + public static final String PROPERTY_RESOURCE_BUNDLE = "resourceBundle"; + + public static final String PROPERTY_SCRIPTLET_CLASS = "scriptletClass"; + + public static final String PROPERTY_SORT_FIELDS = "sortFields"; + + public static final String PROPERTY_VARIABLES = "variables"; + + protected Map parametersMap = new HashMap(); + + protected List parametersList = new ArrayList(); + + protected Map fieldsMap = new HashMap(); + + protected List fieldsList = new ArrayList(); + + protected Map sortFieldsMap = new HashMap(); + + protected List sortFieldsList = new ArrayList(); + + protected Map variablesMap = new HashMap(); + + protected List variablesList = new ArrayList(); + + protected Map groupsMap = new HashMap(); + + protected List groupsList = new ArrayList(); + + private class QueryLanguageChangeListener implements PropertyChangeListener, Serializable { + private static final long serialVersionUID = 10200L; + + private final JRDesignDataset this$0; + + private QueryLanguageChangeListener() {} + + public void propertyChange(PropertyChangeEvent evt) { + JRDesignDataset.this.queryLanguageChanged((String)evt.getOldValue(), (String)evt.getNewValue()); + } + } + + private PropertyChangeListener queryLanguageChangeListener = new QueryLanguageChangeListener(); + + private static final Object[] BUILT_IN_PARAMETERS = new Object[] { + "REPORT_PARAMETERS_MAP", Map.class, "REPORT_CONNECTION", Connection.class, "REPORT_MAX_COUNT", Integer.class, "REPORT_DATA_SOURCE", JRDataSource.class, "REPORT_SCRIPTLET", JRAbstractScriptlet.class, + "REPORT_LOCALE", Locale.class, "REPORT_RESOURCE_BUNDLE", ResourceBundle.class, "REPORT_TIME_ZONE", TimeZone.class, "REPORT_FORMAT_FACTORY", FormatFactory.class, "REPORT_CLASS_LOADER", ClassLoader.class, + "REPORT_URL_HANDLER_FACTORY", URLStreamHandlerFactory.class, "REPORT_FILE_RESOLVER", FileResolver.class }; + + private static final Object[] BUILT_IN_PARAMETERS_MAIN = new Object[] { "REPORT_VIRTUALIZER", JRVirtualizer.class, "IS_IGNORE_PAGINATION", Boolean.class, "REPORT_TEMPLATES", Collection.class }; + + public JRDesignDataset(boolean isMain) { + super(isMain); + addBuiltinParameters(BUILT_IN_PARAMETERS); + if (isMain) + addBuiltinParameters(BUILT_IN_PARAMETERS_MAIN); + try { + if (isMain) { + addVariable(createPageNumberVariable()); + addVariable(createColumnNumberVariable()); + } + addVariable(createReportCountVariable()); + if (isMain) { + addVariable(createPageCountVariable()); + addVariable(createColumnCountVariable()); + } + } catch (JRException e) {} + } + + private static JRDesignVariable createPageCountVariable() { + JRDesignVariable variable = new JRDesignVariable(); + variable.setName("PAGE_COUNT"); + variable.setValueClass(Integer.class); + variable.setResetType((byte)2); + variable.setCalculation((byte)1); + variable.setSystemDefined(true); + JRDesignExpression expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(1)"); + variable.setExpression((JRExpression)expression); + expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(0)"); + variable.setInitialValueExpression((JRExpression)expression); + return variable; + } + + private static JRDesignVariable createColumnNumberVariable() { + JRDesignVariable variable = new JRDesignVariable(); + variable.setName("COLUMN_NUMBER"); + variable.setValueClass(Integer.class); + variable.setResetType((byte)2); + variable.setCalculation((byte)8); + variable.setSystemDefined(true); + JRDesignExpression expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(1)"); + variable.setInitialValueExpression((JRExpression)expression); + return variable; + } + + private static JRDesignVariable createPageNumberVariable() { + JRDesignVariable variable = new JRDesignVariable(); + variable.setName("PAGE_NUMBER"); + variable.setValueClass(Integer.class); + variable.setResetType((byte)1); + variable.setCalculation((byte)8); + variable.setSystemDefined(true); + JRDesignExpression expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(1)"); + variable.setInitialValueExpression((JRExpression)expression); + return variable; + } + + private static JRDesignVariable createColumnCountVariable() { + JRDesignVariable variable = new JRDesignVariable(); + variable.setName("COLUMN_COUNT"); + variable.setValueClass(Integer.class); + variable.setResetType((byte)3); + variable.setCalculation((byte)1); + variable.setSystemDefined(true); + JRDesignExpression expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(1)"); + variable.setExpression((JRExpression)expression); + expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(0)"); + variable.setInitialValueExpression((JRExpression)expression); + return variable; + } + + private void addBuiltinParameters(Object[] parametersArray) { + for (int i = 0; i < parametersArray.length; i++) { + JRDesignParameter parameter = new JRDesignParameter(); + parameter.setName((String)parametersArray[i++]); + parameter.setValueClass((Class)parametersArray[i]); + parameter.setSystemDefined(true); + try { + addParameter((JRParameter)parameter); + } catch (JRException e) {} + } + } + + private static JRDesignVariable createReportCountVariable() { + JRDesignVariable variable = new JRDesignVariable(); + variable.setName("REPORT_COUNT"); + variable.setValueClass(Integer.class); + variable.setResetType((byte)1); + variable.setCalculation((byte)1); + variable.setSystemDefined(true); + JRDesignExpression expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(1)"); + variable.setExpression((JRExpression)expression); + expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(0)"); + variable.setInitialValueExpression((JRExpression)expression); + return variable; + } + + public void setName(String name) { + Object old = this.name; + this.name = name; + getEventSupport().firePropertyChange("name", old, this.name); + } + + public JRParameter[] getParameters() { + JRParameter[] parametersArray = new JRParameter[this.parametersList.size()]; + this.parametersList.toArray((Object[])parametersArray); + return parametersArray; + } + + public List getParametersList() { + return this.parametersList; + } + + public Map getParametersMap() { + return this.parametersMap; + } + + public void addParameter(JRParameter parameter) throws JRException { + if (this.parametersMap.containsKey(parameter.getName())) + throw new JRException("Duplicate declaration of parameter : " + parameter.getName()); + this.parametersList.add(parameter); + this.parametersMap.put(parameter.getName(), parameter); + getEventSupport().fireCollectionElementAddedEvent("parameters", parameter, this.parametersList.size() - 1); + } + + public JRParameter removeParameter(String parameterName) { + return removeParameter((JRParameter)this.parametersMap.get(parameterName)); + } + + public JRParameter removeParameter(JRParameter parameter) { + if (parameter != null) { + int idx = this.parametersList.indexOf(parameter); + if (idx >= 0) { + this.parametersList.remove(idx); + this.parametersMap.remove(parameter.getName()); + getEventSupport().fireCollectionElementRemovedEvent("parameters", parameter, idx); + } + } + return parameter; + } + + public void setQuery(JRDesignQuery query) { + Object old = query; + String oldLanguage = null; + if (this.query != null) { + ((JRDesignQuery)this.query).removePropertyChangeListener("language", this.queryLanguageChangeListener); + oldLanguage = this.query.getLanguage(); + } + this.query = (JRQuery)query; + String newLanguage = null; + if (query != null) { + query.addPropertyChangeListener("language", this.queryLanguageChangeListener); + newLanguage = query.getLanguage(); + } + queryLanguageChanged(oldLanguage, newLanguage); + getEventSupport().firePropertyChange("query", old, this.query); + } + + public void setScriptletClass(String scriptletClass) { + Object old = this.scriptletClass; + this.scriptletClass = scriptletClass; + if (scriptletClass == null) { + ((JRDesignParameter)this.parametersMap.get("REPORT_SCRIPTLET")).setValueClass(JRAbstractScriptlet.class); + } else { + ((JRDesignParameter)this.parametersMap.get("REPORT_SCRIPTLET")).setValueClassName(scriptletClass); + } + getEventSupport().firePropertyChange("scriptletClass", old, this.scriptletClass); + } + + public JRField[] getFields() { + JRField[] fieldsArray = new JRField[this.fieldsList.size()]; + this.fieldsList.toArray((Object[])fieldsArray); + return fieldsArray; + } + + public List getFieldsList() { + return this.fieldsList; + } + + public Map getFieldsMap() { + return this.fieldsMap; + } + + public void addField(JRField field) throws JRException { + if (this.fieldsMap.containsKey(field.getName())) + throw new JRException("Duplicate declaration of field : " + field.getName()); + this.fieldsList.add(field); + this.fieldsMap.put(field.getName(), field); + getEventSupport().fireCollectionElementAddedEvent("fields", field, this.fieldsList.size() - 1); + } + + public JRField removeField(String fieldName) { + return removeField((JRField)this.fieldsMap.get(fieldName)); + } + + public JRField removeField(JRField field) { + if (field != null) { + int idx = this.fieldsList.indexOf(field); + if (idx >= 0) { + this.fieldsList.remove(idx); + this.fieldsMap.remove(field.getName()); + getEventSupport().fireCollectionElementRemovedEvent("fields", field, idx); + } + } + return field; + } + + public JRSortField[] getSortFields() { + JRSortField[] sortFieldsArray = new JRSortField[this.sortFieldsList.size()]; + this.sortFieldsList.toArray((Object[])sortFieldsArray); + return sortFieldsArray; + } + + public List getSortFieldsList() { + return this.sortFieldsList; + } + + public void addSortField(JRSortField sortField) throws JRException { + if (this.sortFieldsMap.containsKey(sortField.getName())) + throw new JRException("Duplicate declaration of sort field : " + sortField.getName()); + this.sortFieldsList.add(sortField); + this.sortFieldsMap.put(sortField.getName(), sortField); + getEventSupport().fireCollectionElementAddedEvent("sortFields", sortField, this.sortFieldsList.size() - 1); + } + + public JRSortField removeSortField(String fieldName) { + return removeSortField((JRSortField)this.sortFieldsMap.get(fieldName)); + } + + public JRSortField removeSortField(JRSortField sortField) { + if (sortField != null) { + int idx = this.sortFieldsList.indexOf(sortField); + if (idx >= 0) { + this.sortFieldsList.remove(idx); + this.sortFieldsMap.remove(sortField.getName()); + getEventSupport().fireCollectionElementRemovedEvent("sortFields", sortField, idx); + } + } + return sortField; + } + + public JRVariable[] getVariables() { + JRVariable[] variablesArray = new JRVariable[this.variablesList.size()]; + this.variablesList.toArray((Object[])variablesArray); + return variablesArray; + } + + public List getVariablesList() { + return this.variablesList; + } + + public Map getVariablesMap() { + return this.variablesMap; + } + + public void addVariable(JRDesignVariable variable) throws JRException { + addVariable(variable, false); + } + + protected void addVariable(JRDesignVariable variable, boolean system) throws JRException { + int addedIdx; + if (this.variablesMap.containsKey(variable.getName())) + throw new JRException("Duplicate declaration of variable : " + variable.getName()); + if (system) { + ListIterator it = this.variablesList.listIterator(); + while (it.hasNext()) { + JRVariable var = it.next(); + if (!var.isSystemDefined()) { + it.previous(); + break; + } + } + it.add(variable); + addedIdx = it.previousIndex(); + } else { + this.variablesList.add(variable); + addedIdx = this.variablesList.size() - 1; + } + this.variablesMap.put(variable.getName(), variable); + getEventSupport().fireCollectionElementAddedEvent("variables", variable, addedIdx); + } + + public JRVariable removeVariable(String variableName) { + return removeVariable((JRVariable)this.variablesMap.get(variableName)); + } + + public JRVariable removeVariable(JRVariable variable) { + if (variable != null) { + int idx = this.variablesList.indexOf(variable); + if (idx >= 0) { + this.variablesList.remove(idx); + this.variablesMap.remove(variable.getName()); + getEventSupport().fireCollectionElementRemovedEvent("variables", variable, idx); + } + } + return variable; + } + + public JRGroup[] getGroups() { + JRGroup[] groupsArray = new JRGroup[this.groupsList.size()]; + this.groupsList.toArray((Object[])groupsArray); + return groupsArray; + } + + public List getGroupsList() { + return this.groupsList; + } + + public Map getGroupsMap() { + return this.groupsMap; + } + + public void addGroup(JRDesignGroup group) throws JRException { + if (this.groupsMap.containsKey(group.getName())) + throw new JRException("Duplicate declaration of group : " + group.getName()); + JRDesignVariable countVariable = new JRDesignVariable(); + countVariable.setName(group.getName() + "_COUNT"); + countVariable.setValueClass(Integer.class); + countVariable.setResetType((byte)4); + countVariable.setResetGroup((JRGroup)group); + countVariable.setCalculation((byte)1); + countVariable.setSystemDefined(true); + JRDesignExpression expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(1)"); + countVariable.setExpression((JRExpression)expression); + expression = new JRDesignExpression(); + expression.setValueClass(Integer.class); + expression.setText("new Integer(0)"); + countVariable.setInitialValueExpression((JRExpression)expression); + addVariable(countVariable, true); + group.setCountVariable((JRVariable)countVariable); + this.groupsList.add(group); + this.groupsMap.put(group.getName(), group); + getEventSupport().fireCollectionElementAddedEvent("groups", group, this.groupsList.size() - 1); + } + + public JRGroup removeGroup(String groupName) { + return removeGroup((JRGroup)this.groupsMap.get(groupName)); + } + + public JRGroup removeGroup(JRGroup group) { + if (group != null) { + removeVariable(group.getCountVariable()); + int idx = this.groupsList.indexOf(group); + if (idx >= 0) { + this.groupsList.remove(idx); + this.groupsMap.remove(group.getName()); + getEventSupport().fireCollectionElementRemovedEvent("groups", group, idx); + } + } + return group; + } + + public void setResourceBundle(String resourceBundle) { + Object old = this.resourceBundle; + this.resourceBundle = resourceBundle; + getEventSupport().firePropertyChange("resourceBundle", old, this.resourceBundle); + } + + protected void queryLanguageChanged(String oldLanguage, String newLanguage) { + try { + if (oldLanguage != null) { + JRQueryExecuterFactory queryExecuterFactory = JRQueryExecuterUtils.getQueryExecuterFactory(oldLanguage); + Object[] builtinParameters = queryExecuterFactory.getBuiltinParameters(); + if (builtinParameters != null) + removeBuiltinParameters(builtinParameters); + } + if (newLanguage != null) { + JRQueryExecuterFactory queryExecuterFactory = JRQueryExecuterUtils.getQueryExecuterFactory(newLanguage); + Object[] builtinParameters = queryExecuterFactory.getBuiltinParameters(); + if (builtinParameters != null) { + addBuiltinParameters(builtinParameters); + sortSystemParamsFirst(); + } + } + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + private void sortSystemParamsFirst() { + Collections.sort(this.parametersList, new Comparator() { + private final JRDesignDataset this$0; + + public int compare(Object o1, Object o2) { + JRParameter p1 = (JRParameter)o1; + JRParameter p2 = (JRParameter)o2; + boolean s1 = p1.isSystemDefined(); + boolean s2 = p2.isSystemDefined(); + return s1 ? (s2 ? 0 : -1) : (s2 ? 1 : 0); + } + }); + } + + private void removeBuiltinParameters(Object[] builtinParameters) { + for (int i = 0; i < builtinParameters.length; i += 2) { + String parameterName = (String)builtinParameters[i]; + JRParameter parameter = (JRParameter)this.parametersMap.get(parameterName); + if (parameter.isSystemDefined()) + removeParameter(parameter); + } + } + + public void setProperty(String propName, String value) { + getPropertiesMap().setProperty(propName, value); + } + + public void setFilterExpression(JRExpression expression) { + Object old = this.filterExpression; + this.filterExpression = expression; + getEventSupport().firePropertyChange("filterExpression", old, this.filterExpression); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.sortFieldsMap == null) + this.sortFieldsMap = new HashMap(); + if (this.sortFieldsList == null) + this.sortFieldsList = new ArrayList(); + } + + public Object clone() { + JRDesignDataset clone = (JRDesignDataset)super.clone(); + if (this.parametersList != null) { + clone.parametersList = new ArrayList(this.parametersList.size()); + clone.parametersMap = new HashMap(this.parametersList.size()); + for (int i = 0; i < this.parametersList.size(); i++) { + JRParameter parameter = (JRParameter)((JRParameter)this.parametersList.get(i)).clone(); + clone.parametersList.add(parameter); + clone.parametersMap.put(parameter.getName(), parameter); + } + } + if (this.fieldsList != null) { + clone.fieldsList = new ArrayList(this.fieldsList.size()); + clone.fieldsMap = new HashMap(this.fieldsList.size()); + for (int i = 0; i < this.fieldsList.size(); i++) { + JRField field = (JRField)((JRField)this.fieldsList.get(i)).clone(); + clone.fieldsList.add(field); + clone.fieldsMap.put(field.getName(), field); + } + } + if (this.sortFieldsList != null) { + clone.sortFieldsList = new ArrayList(this.sortFieldsList.size()); + clone.sortFieldsMap = new HashMap(this.sortFieldsList.size()); + for (int i = 0; i < this.sortFieldsList.size(); i++) { + JRSortField sortField = (JRSortField)((JRSortField)this.sortFieldsList.get(i)).clone(); + clone.sortFieldsList.add(sortField); + clone.sortFieldsMap.put(sortField.getName(), sortField); + } + } + if (this.variablesList != null) { + clone.variablesList = new ArrayList(this.variablesList.size()); + clone.variablesMap = new HashMap(this.variablesList.size()); + for (int i = 0; i < this.variablesList.size(); i++) { + JRVariable variable = (JRVariable)((JRVariable)this.variablesList.get(i)).clone(); + clone.variablesList.add(variable); + clone.variablesMap.put(variable.getName(), variable); + } + } + if (this.groupsList != null) { + clone.groupsList = new ArrayList(this.groupsList.size()); + clone.groupsMap = new HashMap(this.groupsList.size()); + for (int i = 0; i < this.groupsList.size(); i++) { + JRGroup group = (JRGroup)((JRGroup)this.groupsList.get(i)).clone(); + clone.groupsList.add(group); + clone.groupsMap.put(group.getName(), group); + } + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElement.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElement.java new file mode 100644 index 0000000..10ac8f2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElement.java @@ -0,0 +1,139 @@ +package net.sf.jasperreports.engine.design; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.base.JRBaseElement; + +public abstract class JRDesignElement extends JRBaseElement { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_ELEMENT_GROUP = "elementGroup"; + + public static final String PROPERTY_HEIGHT = "height"; + + public static final String PROPERTY_KEY = "key"; + + public static final String PROPERTY_PRINT_WHEN_EXPRESSION = "printWhenExpression"; + + public static final String PROPERTY_PRINT_WHEN_GROUP_CHANGES = "printWhenGroupChanges"; + + public static final String PROPERTY_PARENT_STYLE = "parentStyle"; + + public static final String PROPERTY_PARENT_STYLE_NAME_REFERENCE = "parentStyleNameReference"; + + public static final String PROPERTY_Y = "y"; + + public static final String PROPERTY_PROPERTY_EXPRESSIONS = "propertyExpressions"; + + private List propertyExpressions = new ArrayList(); + + protected JRDesignElement(JRDefaultStyleProvider defaultStyleProvider) { + super(defaultStyleProvider); + this.positionType = 2; + } + + public void setKey(String key) { + Object old = this.key; + this.key = key; + getEventSupport().firePropertyChange("key", old, this.key); + } + + public void setY(int y) { + int old = this.y; + this.y = y; + getEventSupport().firePropertyChange("y", old, this.y); + } + + public void setHeight(int height) { + int old = this.height; + this.height = height; + getEventSupport().firePropertyChange("height", old, this.height); + } + + public void setPrintWhenExpression(JRExpression expression) { + Object old = this.printWhenExpression; + this.printWhenExpression = expression; + getEventSupport().firePropertyChange("printWhenExpression", old, this.printWhenExpression); + } + + public void setPrintWhenGroupChanges(JRGroup group) { + Object old = this.printWhenGroupChanges; + this.printWhenGroupChanges = group; + getEventSupport().firePropertyChange("printWhenGroupChanges", old, this.printWhenGroupChanges); + } + + public void setElementGroup(JRElementGroup elementGroup) { + Object old = this.elementGroup; + this.elementGroup = elementGroup; + getEventSupport().firePropertyChange("elementGroup", old, this.elementGroup); + } + + public void setStyle(JRStyle style) { + Object old = this.parentStyle; + this.parentStyle = style; + getEventSupport().firePropertyChange("parentStyle", old, this.parentStyle); + } + + public void setStyleNameReference(String styleName) { + Object old = this.parentStyleNameReference; + this.parentStyleNameReference = styleName; + getEventSupport().firePropertyChange("parentStyleNameReference", old, this.parentStyleNameReference); + } + + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + if (this.propertyExpressions == null) + this.propertyExpressions = new ArrayList(); + } + + public void addPropertyExpression(JRPropertyExpression propertyExpression) { + this.propertyExpressions.add(propertyExpression); + getEventSupport().fireCollectionElementAddedEvent("propertyExpressions", propertyExpression, this.propertyExpressions.size() - 1); + } + + public void removePropertyExpression(JRPropertyExpression propertyExpression) { + int idx = this.propertyExpressions.indexOf(propertyExpression); + if (idx >= 0) { + this.propertyExpressions.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("propertyExpressions", propertyExpression, idx); + } + } + + public JRPropertyExpression removePropertyExpression(String name) { + JRPropertyExpression removed = null; + for (ListIterator it = this.propertyExpressions.listIterator(); it.hasNext(); ) { + JRPropertyExpression prop = it.next(); + if (name.equals(prop.getName())) { + removed = prop; + int idx = it.previousIndex(); + it.remove(); + getEventSupport().fireCollectionElementRemovedEvent("propertyExpressions", removed, idx); + break; + } + } + return removed; + } + + public List getPropertyExpressionsList() { + return this.propertyExpressions; + } + + public JRPropertyExpression[] getPropertyExpressions() { + JRPropertyExpression[] props; + if (this.propertyExpressions.isEmpty()) { + props = null; + } else { + props = (JRPropertyExpression[])this.propertyExpressions.toArray((Object[])new JRPropertyExpression[this.propertyExpressions.size()]); + } + return props; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementDataset.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementDataset.java new file mode 100644 index 0000000..7ad317f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementDataset.java @@ -0,0 +1,82 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.base.JRBaseElementDataset; +import net.sf.jasperreports.engine.base.JRBaseObjectFactory; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public abstract class JRDesignElementDataset extends JRBaseElementDataset implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DATASET_RUN = "datasetRun"; + + public static final String PROPERTY_INCREMENT_GROUP = "incrementGroup"; + + public static final String PROPERTY_INCREMENT_TYPE = "incrementType"; + + public static final String PROPERTY_INCREMENT_WHEN_EXPRESSION = "incrementWhenExpression"; + + public static final String PROPERTY_RESET_GROUP = "resetGroup"; + + public static final String PROPERTY_RESET_TYPE = "resetType"; + + private transient JRPropertyChangeSupport eventSupport; + + public JRDesignElementDataset() {} + + public JRDesignElementDataset(JRElementDataset dataset) { + super(dataset); + } + + public JRDesignElementDataset(JRElementDataset dataset, JRBaseObjectFactory factory) { + super(dataset, factory); + } + + public void setResetType(byte resetType) { + byte old = this.resetType; + this.resetType = resetType; + getEventSupport().firePropertyChange("resetType", old, this.resetType); + } + + public void setIncrementType(byte incrementType) { + byte old = this.incrementType; + this.incrementType = incrementType; + getEventSupport().firePropertyChange("incrementType", old, this.incrementType); + } + + public void setResetGroup(JRGroup group) { + Object old = this.resetGroup; + this.resetGroup = group; + getEventSupport().firePropertyChange("resetGroup", old, this.resetGroup); + } + + public void setIncrementGroup(JRGroup group) { + Object old = this.incrementGroup; + this.incrementGroup = group; + getEventSupport().firePropertyChange("incrementGroup", old, this.incrementGroup); + } + + public void setDatasetRun(JRDatasetRun datasetRun) { + Object old = this.datasetRun; + this.datasetRun = datasetRun; + getEventSupport().firePropertyChange("datasetRun", old, this.datasetRun); + } + + public void setIncrementWhenExpression(JRExpression expression) { + Object old = this.incrementWhenExpression; + this.incrementWhenExpression = expression; + getEventSupport().firePropertyChange("incrementWhenExpression", old, this.incrementWhenExpression); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementGroup.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementGroup.java new file mode 100644 index 0000000..29839cf --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignElementGroup.java @@ -0,0 +1,62 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.base.JRBaseElementGroup; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignElementGroup extends JRBaseElementGroup implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_ELEMENT_GROUP = "elementGroup"; + + public static final String PROPERTY_CHILDREN = "children"; + + private transient JRPropertyChangeSupport eventSupport; + + public void setElementGroup(JRElementGroup elementGroup) { + Object old = this.elementGroup; + this.elementGroup = elementGroup; + getEventSupport().firePropertyChange("elementGroup", old, this.elementGroup); + } + + public void addElement(JRDesignElement element) { + element.setElementGroup((JRElementGroup)this); + this.children.add(element); + getEventSupport().fireCollectionElementAddedEvent("children", element, this.children.size() - 1); + } + + public JRDesignElement removeElement(JRDesignElement element) { + element.setElementGroup(null); + int idx = this.children.indexOf(element); + if (idx >= 0) { + this.children.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("children", element, idx); + } + return element; + } + + public void addElementGroup(JRDesignElementGroup elemGrp) { + elemGrp.setElementGroup((JRElementGroup)this); + this.children.add(elemGrp); + getEventSupport().fireCollectionElementAddedEvent("children", elemGrp, this.children.size() - 1); + } + + public JRDesignElementGroup removeElementGroup(JRDesignElementGroup elemGrp) { + elemGrp.setElementGroup((JRElementGroup)null); + int idx = this.children.indexOf(elemGrp); + if (idx >= 0) { + this.children.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("children", elemGrp, idx); + } + return elemGrp; + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpression.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpression.java new file mode 100644 index 0000000..eda9a12 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpression.java @@ -0,0 +1,176 @@ +package net.sf.jasperreports.engine.design; + +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.base.JRBaseExpression; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignExpression extends JRBaseExpression implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TEXT = "text"; + + public static final String PROPERTY_VALUE_CLASS_NAME = "valueClassName"; + + protected List chunks = new ArrayList(); + + private transient JRPropertyChangeSupport eventSupport; + + public JRDesignExpression() { + regenerateId(); + } + + public void setValueClass(Class clazz) { + setValueClassName(clazz.getName()); + } + + public void setValueClassName(String className) { + Object old = this.valueClassName; + this.valueClassName = className; + this.valueClass = null; + this.valueClassRealName = null; + getEventSupport().firePropertyChange("valueClassName", old, this.valueClassName); + } + + public void setId(int id) { + this.id = id; + } + + public JRExpressionChunk[] getChunks() { + JRExpressionChunk[] chunkArray = null; + if (this.chunks != null && this.chunks.size() > 0) { + chunkArray = new JRExpressionChunk[this.chunks.size()]; + this.chunks.toArray((Object[])chunkArray); + } + return chunkArray; + } + + public void setChunks(List chunks) { + this.chunks.clear(); + this.chunks.addAll(chunks); + } + + public void addChunk(JRDesignExpressionChunk chunk) { + this.chunks.add(chunk); + } + + protected void addChunk(byte type, String text) { + JRDesignExpressionChunk chunk = new JRDesignExpressionChunk(); + chunk.setType(type); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addTextChunk(String text) { + JRDesignExpressionChunk chunk = new JRDesignExpressionChunk(); + chunk.setType((byte)1); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addParameterChunk(String text) { + JRDesignExpressionChunk chunk = new JRDesignExpressionChunk(); + chunk.setType((byte)2); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addFieldChunk(String text) { + JRDesignExpressionChunk chunk = new JRDesignExpressionChunk(); + chunk.setType((byte)3); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addVariableChunk(String text) { + JRDesignExpressionChunk chunk = new JRDesignExpressionChunk(); + chunk.setType((byte)4); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addResourceChunk(String text) { + JRDesignExpressionChunk chunk = new JRDesignExpressionChunk(); + chunk.setType((byte)5); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void setText(String text) { + Object old = getText(); + this.chunks.clear(); + if (text != null) { + StringBuffer textChunk = new StringBuffer(); + StringTokenizer tkzer = new StringTokenizer(text, "$", true); + int behindDelims = 0; + while (tkzer.hasMoreTokens()) { + String token = tkzer.nextToken(); + if (token.equals("$")) { + if (behindDelims > 0) + textChunk.append("$"); + behindDelims++; + continue; + } + byte chunkType = 1; + if (behindDelims > 0) + if (token.startsWith("P{")) { + chunkType = 2; + } else if (token.startsWith("F{")) { + chunkType = 3; + } else if (token.startsWith("V{")) { + chunkType = 4; + } else if (token.startsWith("R{")) { + chunkType = 5; + } + if (chunkType == 1) { + if (behindDelims > 0) + textChunk.append("$"); + textChunk.append(token); + } else { + int end = token.indexOf('}'); + if (end > 0) { + if (behindDelims > 1) { + textChunk.append(token); + } else { + if (textChunk.length() > 0) + addTextChunk(textChunk.toString()); + addChunk(chunkType, token.substring(2, end)); + textChunk = new StringBuffer(token.substring(end + 1)); + } + } else { + if (behindDelims > 0) + textChunk.append("$"); + textChunk.append(token); + } + } + behindDelims = 0; + } + if (behindDelims > 0) + textChunk.append("$"); + if (textChunk.length() > 0) + addTextChunk(textChunk.toString()); + } + getEventSupport().firePropertyChange("text", old, text); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } + + public Object clone() { + JRDesignExpression clone = (JRDesignExpression)super.clone(); + if (this.chunks != null) { + clone.chunks = new ArrayList(this.chunks.size()); + for (int i = 0; i < this.chunks.size(); i++) + clone.chunks.add(((JRExpressionChunk)this.chunks.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpressionChunk.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpressionChunk.java new file mode 100644 index 0000000..e60a581 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignExpressionChunk.java @@ -0,0 +1,35 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.base.JRBaseExpressionChunk; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignExpressionChunk extends JRBaseExpressionChunk implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TEXT = "text"; + + public static final String PROPERTY_TYPE = "type"; + + private transient JRPropertyChangeSupport eventSupport; + + public void setType(byte type) { + byte old = this.type; + this.type = type; + getEventSupport().firePropertyChange("type", old, this.type); + } + + public void setText(String text) { + Object old = this.text; + this.text = text; + getEventSupport().firePropertyChange("text", old, this.text); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGraphicElement.java new file mode 100644 index 0000000..261d58b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGraphicElement.java @@ -0,0 +1,83 @@ +package net.sf.jasperreports.engine.design; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRCommonGraphicElement; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.base.JRBasePen; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRDesignGraphicElement extends JRDesignElement implements JRGraphicElement { + private static final long serialVersionUID = 10200L; + + protected JRPen linePen; + + protected Byte fill; + + private Byte pen; + + protected JRDesignGraphicElement(JRDefaultStyleProvider defaultStyleProvider) { + super(defaultStyleProvider); + this.linePen = (JRPen)new JRBasePen((JRPenContainer)this); + } + + public JRPen getLinePen() { + return this.linePen; + } + + public byte getPen() { + return JRPenUtil.getPenFromLinePen(this.linePen); + } + + public Byte getOwnPen() { + return JRPenUtil.getOwnPenFromLinePen(this.linePen); + } + + public void setPen(byte pen) { + setPen(new Byte(pen)); + } + + public void setPen(Byte pen) { + JRPenUtil.setLinePenFromPen(pen, this.linePen); + } + + public byte getFill() { + return JRStyleResolver.getFill((JRCommonGraphicElement)this); + } + + public Byte getOwnFill() { + return this.fill; + } + + public void setFill(byte fill) { + setFill(new Byte(fill)); + } + + public void setFill(Byte fill) { + Object old = this.fill; + this.fill = fill; + getEventSupport().firePropertyChange("fill", old, this.fill); + } + + public Float getDefaultLineWidth() { + return JRPen.LINE_WIDTH_1; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.linePen == null) { + this.linePen = (JRPen)new JRBasePen((JRPenContainer)this); + JRPenUtil.setLinePenFromPen(this.pen, this.linePen); + this.pen = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGroup.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGroup.java new file mode 100644 index 0000000..b3fac12 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignGroup.java @@ -0,0 +1,66 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.base.JRBaseGroup; + +public class JRDesignGroup extends JRBaseGroup { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_COUNT_VARIABLE = "countVariable"; + + public static final String PROPERTY_EXPRESSION = "expression"; + + public static final String PROPERTY_GROUP_FOOTER = "groupFooter"; + + public static final String PROPERTY_GROUP_HEADER = "groupHeader"; + + public static final String PROPERTY_NAME = "name"; + + public void setName(String name) { + Object old = this.name; + this.name = name; + updateBandOrigins(); + getEventSupport().firePropertyChange("name", old, this.name); + } + + public void setExpression(JRExpression expression) { + Object old = this.expression; + this.expression = expression; + getEventSupport().firePropertyChange("expression", old, this.expression); + } + + public void setGroupHeader(JRBand groupHeader) { + Object old = this.groupHeader; + this.groupHeader = groupHeader; + setBandOrigin(this.groupHeader, (byte)5); + getEventSupport().firePropertyChange("groupHeader", old, this.groupHeader); + } + + public void setGroupFooter(JRBand groupFooter) { + Object old = this.groupFooter; + this.groupFooter = groupFooter; + setBandOrigin(this.groupFooter, (byte)7); + getEventSupport().firePropertyChange("groupFooter", old, this.groupFooter); + } + + public void setCountVariable(JRVariable countVariable) { + Object old = this.countVariable; + this.countVariable = countVariable; + getEventSupport().firePropertyChange("countVariable", old, this.countVariable); + } + + protected void setBandOrigin(JRBand band, byte type) { + if (band instanceof JRDesignBand) { + JROrigin origin = new JROrigin(null, getName(), type); + ((JRDesignBand)band).setOrigin(origin); + } + } + + protected void updateBandOrigins() { + setBandOrigin(getGroupHeader(), (byte)5); + setBandOrigin(getGroupFooter(), (byte)7); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignImage.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignImage.java new file mode 100644 index 0000000..49aff0c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignImage.java @@ -0,0 +1,687 @@ +package net.sf.jasperreports.engine.design; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRCommonImage; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRDesignImage extends JRDesignGraphicElement implements JRImage { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_ANCHOR_NAME_EXPRESSION = "anchorNameExpression"; + + public static final String PROPERTY_BOOKMARK_LEVEL = "bookmarkLevel"; + + public static final String PROPERTY_EVALUATION_GROUP = "evaluationGroup"; + + public static final String PROPERTY_EVALUATION_TIME = "evaluationTime"; + + public static final String PROPERTY_EXPRESSION = "expression"; + + protected Byte scaleImage; + + protected Byte horizontalAlignment; + + protected Byte verticalAlignment; + + protected Boolean isUsingCache = null; + + protected boolean isLazy = false; + + protected byte onErrorType = 1; + + protected byte evaluationTime = 1; + + protected byte hyperlinkType = 0; + + protected String linkType; + + protected byte hyperlinkTarget = 1; + + private List hyperlinkParameters; + + protected JRLineBox lineBox = null; + + protected JRGroup evaluationGroup = null; + + protected JRExpression expression = null; + + protected JRExpression anchorNameExpression = null; + + protected JRExpression hyperlinkReferenceExpression = null; + + protected JRExpression hyperlinkAnchorExpression = null; + + protected JRExpression hyperlinkPageExpression = null; + + private JRExpression hyperlinkTooltipExpression; + + protected int bookmarkLevel = 0; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + public JRDesignImage(JRDefaultStyleProvider defaultStyleProvider) { + super(defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.hyperlinkParameters = new ArrayList(); + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getScaleImage() { + return JRStyleResolver.getScaleImage((JRCommonImage)this); + } + + public Byte getOwnScaleImage() { + return this.scaleImage; + } + + public void setScaleImage(byte scaleImage) { + setScaleImage(new Byte(scaleImage)); + } + + public void setScaleImage(Byte scaleImage) { + Object old = this.scaleImage; + this.scaleImage = scaleImage; + getEventSupport().firePropertyChange("scaleImage", old, this.scaleImage); + } + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment((JRAlignment)this); + } + + public Byte getOwnHorizontalAlignment() { + return this.horizontalAlignment; + } + + public void setHorizontalAlignment(byte horizontalAlignment) { + setHorizontalAlignment(new Byte(horizontalAlignment)); + } + + public void setHorizontalAlignment(Byte horizontalAlignment) { + Object old = this.horizontalAlignment; + this.horizontalAlignment = horizontalAlignment; + getEventSupport().firePropertyChange("horizontalAlignment", old, this.horizontalAlignment); + } + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment((JRAlignment)this); + } + + public Byte getOwnVerticalAlignment() { + return this.verticalAlignment; + } + + public void setVerticalAlignment(byte verticalAlignment) { + setVerticalAlignment(new Byte(verticalAlignment)); + } + + public void setVerticalAlignment(Byte verticalAlignment) { + Object old = this.verticalAlignment; + this.verticalAlignment = verticalAlignment; + getEventSupport().firePropertyChange("verticalAlignment", old, this.verticalAlignment); + } + + public boolean isUsingCache() { + if (this.isUsingCache == null) { + if (getExpression() != null) + return String.class.getName().equals(getExpression().getValueClassName()); + return true; + } + return this.isUsingCache.booleanValue(); + } + + public Boolean isOwnUsingCache() { + return this.isUsingCache; + } + + public byte getEvaluationTime() { + return this.evaluationTime; + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, this.lineBox); + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType((JRHyperlink)this); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRExpression getExpression() { + return this.expression; + } + + public JRExpression getAnchorNameExpression() { + return this.anchorNameExpression; + } + + public JRExpression getHyperlinkReferenceExpression() { + return this.hyperlinkReferenceExpression; + } + + public JRExpression getHyperlinkAnchorExpression() { + return this.hyperlinkAnchorExpression; + } + + public JRExpression getHyperlinkPageExpression() { + return this.hyperlinkPageExpression; + } + + public void setUsingCache(boolean isUsingCache) { + setUsingCache(isUsingCache ? Boolean.TRUE : Boolean.FALSE); + } + + public void setUsingCache(Boolean isUsingCache) { + Object old = this.isUsingCache; + this.isUsingCache = isUsingCache; + getEventSupport().firePropertyChange("usingCache", old, this.isUsingCache); + } + + public boolean isLazy() { + return this.isLazy; + } + + public void setLazy(boolean isLazy) { + boolean old = this.isLazy; + this.isLazy = isLazy; + getEventSupport().firePropertyChange("lazy", old, this.isLazy); + } + + public byte getOnErrorType() { + return this.onErrorType; + } + + public void setOnErrorType(byte onErrorType) { + byte old = this.onErrorType; + this.onErrorType = onErrorType; + getEventSupport().firePropertyChange("onErrorType", old, this.onErrorType); + } + + public void setEvaluationTime(byte evaluationTime) { + byte old = this.evaluationTime; + this.evaluationTime = evaluationTime; + getEventSupport().firePropertyChange("evaluationTime", old, this.evaluationTime); + } + + public void setHyperlinkType(byte hyperlinkType) { + setLinkType(JRHyperlinkHelper.getLinkType(hyperlinkType)); + } + + public void setHyperlinkTarget(byte hyperlinkTarget) { + byte old = this.hyperlinkTarget; + this.hyperlinkTarget = hyperlinkTarget; + getEventSupport().firePropertyChange("hyperlinkTarget", old, this.hyperlinkTarget); + } + + public void setEvaluationGroup(JRGroup evaluationGroup) { + Object old = this.evaluationGroup; + this.evaluationGroup = evaluationGroup; + getEventSupport().firePropertyChange("evaluationGroup", old, this.evaluationGroup); + } + + public void setExpression(JRExpression expression) { + Object old = this.expression; + this.expression = expression; + getEventSupport().firePropertyChange("expression", old, this.expression); + } + + public void setAnchorNameExpression(JRExpression anchorNameExpression) { + Object old = this.anchorNameExpression; + this.anchorNameExpression = anchorNameExpression; + getEventSupport().firePropertyChange("anchorNameExpression", old, this.anchorNameExpression); + } + + public void setHyperlinkReferenceExpression(JRExpression hyperlinkReferenceExpression) { + Object old = this.hyperlinkReferenceExpression; + this.hyperlinkReferenceExpression = hyperlinkReferenceExpression; + getEventSupport().firePropertyChange("hyperlinkReferenceExpression", old, this.hyperlinkReferenceExpression); + } + + public void setHyperlinkAnchorExpression(JRExpression hyperlinkAnchorExpression) { + Object old = this.hyperlinkAnchorExpression; + this.hyperlinkAnchorExpression = hyperlinkAnchorExpression; + getEventSupport().firePropertyChange("hyperlinkAnchorExpression", old, this.hyperlinkAnchorExpression); + } + + public void setHyperlinkPageExpression(JRExpression hyperlinkPageExpression) { + Object old = this.hyperlinkPageExpression; + this.hyperlinkPageExpression = hyperlinkPageExpression; + getEventSupport().firePropertyChange("hyperlinkPageExpression", old, this.hyperlinkPageExpression); + } + + public void visit(JRVisitor visitor) { + visitor.visitImage(this); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public void setBookmarkLevel(int bookmarkLevel) { + int old = this.bookmarkLevel; + this.bookmarkLevel = bookmarkLevel; + getEventSupport().firePropertyChange("bookmarkLevel", old, this.bookmarkLevel); + } + + public Float getDefaultLineWidth() { + return JRPen.LINE_WIDTH_0; + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public String getLinkType() { + return this.linkType; + } + + public void setLinkType(String type) { + Object old = this.linkType; + this.linkType = type; + getEventSupport().firePropertyChange("linkType", old, this.linkType); + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + JRHyperlinkParameter[] parameters; + if (this.hyperlinkParameters.isEmpty()) { + parameters = null; + } else { + parameters = new JRHyperlinkParameter[this.hyperlinkParameters.size()]; + this.hyperlinkParameters.toArray((Object[])parameters); + } + return parameters; + } + + public List getHyperlinkParametersList() { + return this.hyperlinkParameters; + } + + public void addHyperlinkParameter(JRHyperlinkParameter parameter) { + this.hyperlinkParameters.add(parameter); + getEventSupport().fireCollectionElementAddedEvent("hyperlinkParameters", parameter, this.hyperlinkParameters.size() - 1); + } + + public void removeHyperlinkParameter(JRHyperlinkParameter parameter) { + int idx = this.hyperlinkParameters.indexOf(parameter); + if (idx >= 0) { + this.hyperlinkParameters.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("hyperlinkParameters", parameter, idx); + } + } + + public void removeHyperlinkParameter(String parameterName) { + for (ListIterator it = this.hyperlinkParameters.listIterator(); it.hasNext(); ) { + JRHyperlinkParameter parameter = it.next(); + if (parameter.getName() != null && parameter.getName().equals(parameterName)) { + it.remove(); + getEventSupport().fireCollectionElementRemovedEvent("hyperlinkParameters", parameter, it.nextIndex()); + } + } + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public JRExpression getHyperlinkTooltipExpression() { + return this.hyperlinkTooltipExpression; + } + + public void setHyperlinkTooltipExpression(JRExpression hyperlinkTooltipExpression) { + Object old = this.hyperlinkTooltipExpression; + this.hyperlinkTooltipExpression = hyperlinkTooltipExpression; + getEventSupport().firePropertyChange("hyperlinkTooltipExpression", old, this.hyperlinkTooltipExpression); + } + + public Object clone() { + JRDesignImage clone = (JRDesignImage)super.clone(); + if (this.hyperlinkParameters != null) { + clone.hyperlinkParameters = new ArrayList(this.hyperlinkParameters.size()); + for (int i = 0; i < this.hyperlinkParameters.size(); i++) + clone.hyperlinkParameters.add(((JRHyperlinkParameter)this.hyperlinkParameters.get(i)).clone()); + } + if (this.expression != null) + clone.expression = (JRExpression)this.expression.clone(); + if (this.anchorNameExpression != null) + clone.anchorNameExpression = (JRExpression)this.anchorNameExpression.clone(); + if (this.hyperlinkReferenceExpression != null) + clone.hyperlinkReferenceExpression = (JRExpression)this.hyperlinkReferenceExpression.clone(); + if (this.hyperlinkAnchorExpression != null) + clone.hyperlinkAnchorExpression = (JRExpression)this.hyperlinkAnchorExpression.clone(); + if (this.hyperlinkPageExpression != null) + clone.hyperlinkPageExpression = (JRExpression)this.hyperlinkPageExpression.clone(); + if (this.hyperlinkTooltipExpression != null) + clone.hyperlinkTooltipExpression = (JRExpression)this.hyperlinkTooltipExpression.clone(); + return clone; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + normalizeLinkType(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignParameter.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignParameter.java new file mode 100644 index 0000000..1b13feb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignParameter.java @@ -0,0 +1,54 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.base.JRBaseParameter; + +public class JRDesignParameter extends JRBaseParameter { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_DEFAULT_VALUE_EXPRESSION = "defaultValueExpression"; + + public static final String PROPERTY_FOR_PROMPTING = "forPrompting"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_SYSTEM_DEFINED = "systemDefined"; + + public static final String PROPERTY_VALUE_CLASS_NAME = "valueClassName"; + + public void setName(String name) { + Object old = this.name; + this.name = name; + getEventSupport().firePropertyChange("name", old, this.name); + } + + public void setValueClass(Class clazz) { + setValueClassName(clazz.getName()); + } + + public void setValueClassName(String className) { + Object old = this.valueClassName; + this.valueClassName = className; + this.valueClass = null; + this.valueClassRealName = null; + getEventSupport().firePropertyChange("valueClassName", old, this.valueClassName); + } + + public void setSystemDefined(boolean isSystemDefined) { + boolean old = this.isSystemDefined; + this.isSystemDefined = isSystemDefined; + getEventSupport().firePropertyChange("systemDefined", old, this.isSystemDefined); + } + + public void setForPrompting(boolean isForPrompting) { + boolean old = this.isForPrompting; + this.isForPrompting = isForPrompting; + getEventSupport().firePropertyChange("forPrompting", old, this.isForPrompting); + } + + public void setDefaultValueExpression(JRExpression expression) { + Object old = this.defaultValueExpression; + this.defaultValueExpression = expression; + getEventSupport().firePropertyChange("defaultValueExpression", old, this.defaultValueExpression); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQuery.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQuery.java new file mode 100644 index 0000000..2b43c56 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQuery.java @@ -0,0 +1,140 @@ +package net.sf.jasperreports.engine.design; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.engine.JRQueryChunk; +import net.sf.jasperreports.engine.base.JRBaseQuery; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRQueryChunkHandler; +import net.sf.jasperreports.engine.util.JRQueryParser; + +public class JRDesignQuery extends JRBaseQuery implements JRChangeEventsSupport { + private transient JRPropertyChangeSupport propSupport; + + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_LANGUAGE = "language"; + + public static final String PROPERTY_TEXT = "text"; + + protected List chunks = new ArrayList(); + + private final transient JRQueryChunkHandler chunkAdder = new JRQueryChunkHandler() { + private final JRDesignQuery this$0; + + public void handleParameterChunk(String text) { + JRDesignQuery.this.addParameterChunk(text); + } + + public void handleParameterClauseChunk(String text) { + JRDesignQuery.this.addParameterClauseChunk(text); + } + + public void handleTextChunk(String text) { + JRDesignQuery.this.addTextChunk(text); + } + + public void handleClauseChunk(String[] tokens) { + JRDesignQuery.this.addClauseChunk(tokens); + } + }; + + public JRQueryChunk[] getChunks() { + JRQueryChunk[] chunkArray = null; + if (this.chunks != null && this.chunks.size() > 0) { + chunkArray = new JRQueryChunk[this.chunks.size()]; + this.chunks.toArray((Object[])chunkArray); + } + return chunkArray; + } + + public void setChunks(List chunks) { + this.chunks = chunks; + } + + public void addChunk(JRDesignQueryChunk chunk) { + this.chunks.add(chunk); + } + + public void addTextChunk(String text) { + JRDesignQueryChunk chunk = new JRDesignQueryChunk(); + chunk.setType((byte)1); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addParameterChunk(String text) { + JRDesignQueryChunk chunk = new JRDesignQueryChunk(); + chunk.setType((byte)2); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addParameterClauseChunk(String text) { + JRDesignQueryChunk chunk = new JRDesignQueryChunk(); + chunk.setType((byte)3); + chunk.setText(text); + this.chunks.add(chunk); + } + + public void addClauseChunk(String[] tokens) { + JRDesignQueryChunk chunk = new JRDesignQueryChunk(); + chunk.setType((byte)4); + chunk.setTokens(tokens); + this.chunks.add(chunk); + } + + public void setText(String text) { + Object old = getText(); + this.chunks = new ArrayList(); + JRQueryParser.instance().parse(text, this.chunkAdder); + getEventSupport().firePropertyChange("text", old, getText()); + } + + public void setLanguage(String language) { + String oldValue = this.language; + this.language = language; + getPropertyChangeSupport().firePropertyChange("language", oldValue, this.language); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.propSupport == null) + this.propSupport = new JRPropertyChangeSupport(this); + } + return this.propSupport; + } + + protected PropertyChangeSupport getPropertyChangeSupport() { + return (PropertyChangeSupport)getEventSupport(); + } + + public void addPropertyChangeListener(PropertyChangeListener l) { + getPropertyChangeSupport().addPropertyChangeListener(l); + } + + public void addPropertyChangeListener(String propName, PropertyChangeListener l) { + getPropertyChangeSupport().addPropertyChangeListener(propName, l); + } + + public void removePropertyChangeListener(PropertyChangeListener l) { + getPropertyChangeSupport().removePropertyChangeListener(l); + } + + public void removePropertyChangeListener(String propName, PropertyChangeListener l) { + getPropertyChangeSupport().removePropertyChangeListener(propName, l); + } + + public Object clone() { + JRDesignQuery clone = (JRDesignQuery)super.clone(); + if (this.chunks != null) { + clone.chunks = new ArrayList(this.chunks.size()); + for (int i = 0; i < this.chunks.size(); i++) + clone.chunks.add(((JRQueryChunk)this.chunks.get(i)).clone()); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQueryChunk.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQueryChunk.java new file mode 100644 index 0000000..7e9e25d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignQueryChunk.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.base.JRBaseQueryChunk; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignQueryChunk extends JRBaseQueryChunk implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_TEXT = "text"; + + public static final String PROPERTY_TOKENS = "tokens"; + + public static final String PROPERTY_TYPE = "type"; + + private transient JRPropertyChangeSupport eventSupport; + + public void setType(byte type) { + byte old = this.type; + this.type = type; + getEventSupport().firePropertyChange("type", old, this.type); + } + + public void setText(String text) { + Object old = this.text; + this.text = text; + getEventSupport().firePropertyChange("text", old, this.text); + } + + public void setTokens(String[] tokens) { + Object old = this.tokens; + this.tokens = tokens; + getEventSupport().firePropertyChange("tokens", old, this.tokens); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignRectangle.java new file mode 100644 index 0000000..f89b90d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignRectangle.java @@ -0,0 +1,60 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRCommonRectangle; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRDesignRectangle extends JRDesignGraphicElement implements JRRectangle, JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + protected Integer radius; + + private transient JRPropertyChangeSupport eventSupport; + + public JRDesignRectangle() { + super(null); + } + + public JRDesignRectangle(JRDefaultStyleProvider defaultStyleProvider) { + super(defaultStyleProvider); + } + + public int getRadius() { + return JRStyleResolver.getRadius((JRCommonRectangle)this); + } + + public Integer getOwnRadius() { + return this.radius; + } + + public void setRadius(int radius) { + setRadius(new Integer(radius)); + } + + public void setRadius(Integer radius) { + Object old = this.radius; + this.radius = radius; + getEventSupport().firePropertyChange("radius", old, this.radius); + } + + public void visit(JRVisitor visitor) { + visitor.visitRectangle(this); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignSubreportReturnValue.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignSubreportReturnValue.java new file mode 100644 index 0000000..a54e883 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignSubreportReturnValue.java @@ -0,0 +1,51 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.base.JRBaseSubreportReturnValue; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignSubreportReturnValue extends JRBaseSubreportReturnValue implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CALCULATION = "calculation"; + + public static final String PROPERTY_INCREMENTER_FACTORY_CLASS_NAME = "incrementerFactoryClassName"; + + public static final String PROPERTY_SUBREPORT_VARIABLE = "subreportVariable"; + + public static final String PROPERTY_TO_VARIABLE = "toVariable"; + + private transient JRPropertyChangeSupport eventSupport; + + public void setSubreportVariable(String name) { + Object old = this.subreportVariable; + this.subreportVariable = name; + getEventSupport().firePropertyChange("subreportVariable", old, this.subreportVariable); + } + + public void setToVariable(String name) { + Object old = this.toVariable; + this.toVariable = name; + getEventSupport().firePropertyChange("toVariable", old, this.toVariable); + } + + public void setCalculation(byte calculation) { + byte old = this.calculation; + this.calculation = calculation; + getEventSupport().firePropertyChange("calculation", old, this.calculation); + } + + public void setIncrementerFactoryClassName(String incrementerFactoryClassName) { + Object old = this.incrementerFactoryClassName; + this.incrementerFactoryClassName = incrementerFactoryClassName; + getEventSupport().firePropertyChange("incrementerFactoryClassName", old, this.incrementerFactoryClassName); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextElement.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextElement.java new file mode 100644 index 0000000..84a8120 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextElement.java @@ -0,0 +1,700 @@ +package net.sf.jasperreports.engine.design; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRCommonText; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public abstract class JRDesignTextElement extends JRDesignElement implements JRTextElement { + private static final long serialVersionUID = 10200L; + + protected Byte horizontalAlignment; + + protected Byte verticalAlignment; + + protected Byte rotation; + + protected Byte lineSpacing; + + protected String markup; + + protected JRLineBox lineBox; + + protected JRReportFont reportFont = null; + + protected String fontName = null; + + protected Boolean isBold = null; + + protected Boolean isItalic = null; + + protected Boolean isUnderline = null; + + protected Boolean isStrikeThrough = null; + + protected Integer fontSize = null; + + protected String pdfFontName = null; + + protected String pdfEncoding = null; + + protected Boolean isPdfEmbedded = null; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + private Boolean isStyledText; + + protected JRDesignTextElement(JRDefaultStyleProvider defaultStyleProvider) { + super(defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.isStyledText = null; + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + } + + protected JRFont getBaseFont() { + if (this.reportFont != null) + return (JRFont)this.reportFont; + if (this.defaultStyleProvider != null) + return (JRFont)this.defaultStyleProvider.getDefaultFont(); + return null; + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getTextAlignment() { + if (this.horizontalAlignment == null) { + JRStyle style = getBaseStyle(); + if (style != null && style.getHorizontalAlignment() != null) + return style.getHorizontalAlignment().byteValue(); + return 1; + } + return this.horizontalAlignment.byteValue(); + } + + public void setTextAlignment(byte horizontalAlignment) { + setHorizontalAlignment(new Byte(horizontalAlignment)); + } + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment((JRAlignment)this); + } + + public Byte getOwnHorizontalAlignment() { + return this.horizontalAlignment; + } + + public void setHorizontalAlignment(byte horizontalAlignment) { + setHorizontalAlignment(new Byte(horizontalAlignment)); + } + + public void setHorizontalAlignment(Byte horizontalAlignment) { + Object old = this.horizontalAlignment; + this.horizontalAlignment = horizontalAlignment; + getEventSupport().firePropertyChange("horizontalAlignment", old, this.horizontalAlignment); + } + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment((JRAlignment)this); + } + + public Byte getOwnVerticalAlignment() { + return this.verticalAlignment; + } + + public void setVerticalAlignment(byte verticalAlignment) { + setVerticalAlignment(new Byte(verticalAlignment)); + } + + public void setVerticalAlignment(Byte verticalAlignment) { + Object old = this.verticalAlignment; + this.verticalAlignment = verticalAlignment; + getEventSupport().firePropertyChange("verticalAlignment", old, this.verticalAlignment); + } + + public byte getRotation() { + return JRStyleResolver.getRotation((JRCommonText)this); + } + + public Byte getOwnRotation() { + return this.rotation; + } + + public void setRotation(byte rotation) { + setRotation(new Byte(rotation)); + } + + public void setRotation(Byte rotation) { + Object old = this.rotation; + this.rotation = rotation; + getEventSupport().firePropertyChange("rotation", old, this.rotation); + } + + public byte getLineSpacing() { + return JRStyleResolver.getLineSpacing((JRCommonText)this); + } + + public Byte getOwnLineSpacing() { + return this.lineSpacing; + } + + public void setLineSpacing(byte lineSpacing) { + setLineSpacing(new Byte(lineSpacing)); + } + + public void setLineSpacing(Byte lineSpacing) { + Object old = this.lineSpacing; + this.lineSpacing = lineSpacing; + getEventSupport().firePropertyChange("lineSpacing", old, this.lineSpacing); + } + + public boolean isStyledText() { + return "styled".equals(getMarkup()); + } + + public Boolean isOwnStyledText() { + String mkp = getOwnMarkup(); + return "styled".equals(mkp) ? Boolean.TRUE : ((mkp == null) ? null : Boolean.FALSE); + } + + public void setStyledText(boolean isStyledText) { + setStyledText(isStyledText ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStyledText(Boolean isStyledText) { + if (isStyledText == null) { + setMarkup((String)null); + } else { + setMarkup(isStyledText.booleanValue() ? "styled" : "none"); + } + } + + public String getMarkup() { + return JRStyleResolver.getMarkup((JRCommonText)this); + } + + public String getOwnMarkup() { + return this.markup; + } + + public void setMarkup(String markup) { + Object old = this.markup; + this.markup = markup; + getEventSupport().firePropertyChange("markup", old, this.markup); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, this.lineBox); + } + + public JRFont getFont() { + return (JRFont)this; + } + + public void setFont(JRFont font) { + setReportFont(font.getReportFont()); + setFontName(font.getOwnFontName()); + setBold(font.isOwnBold()); + setItalic(font.isOwnItalic()); + setUnderline(font.isOwnUnderline()); + setStrikeThrough(font.isOwnStrikeThrough()); + setFontSize(font.getOwnSize()); + setPdfFontName(font.getOwnPdfFontName()); + setPdfEncoding(font.getOwnPdfEncoding()); + setPdfEmbedded(font.isOwnPdfEmbedded()); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public JRReportFont getReportFont() { + return this.reportFont; + } + + public void setReportFont(JRReportFont reportFont) { + Object old = this.reportFont; + this.reportFont = reportFont; + getEventSupport().firePropertyChange("reportFont", old, this.reportFont); + } + + public String getFontName() { + return JRStyleResolver.getFontName((JRFont)this); + } + + public String getOwnFontName() { + return this.fontName; + } + + public void setFontName(String fontName) { + Object old = this.fontName; + this.fontName = fontName; + getEventSupport().firePropertyChange("fontName", old, this.fontName); + } + + public boolean isBold() { + return JRStyleResolver.isBold((JRFont)this); + } + + public Boolean isOwnBold() { + return this.isBold; + } + + public void setBold(boolean isBold) { + setBold(isBold ? Boolean.TRUE : Boolean.FALSE); + } + + public void setBold(Boolean isBold) { + Object old = this.isBold; + this.isBold = isBold; + getEventSupport().firePropertyChange("bold", old, this.isBold); + } + + public boolean isItalic() { + return JRStyleResolver.isItalic((JRFont)this); + } + + public Boolean isOwnItalic() { + return this.isItalic; + } + + public void setItalic(boolean isItalic) { + setItalic(isItalic ? Boolean.TRUE : Boolean.FALSE); + } + + public void setItalic(Boolean isItalic) { + Object old = this.isItalic; + this.isItalic = isItalic; + getEventSupport().firePropertyChange("italic", old, this.isItalic); + } + + public boolean isUnderline() { + return JRStyleResolver.isUnderline((JRFont)this); + } + + public Boolean isOwnUnderline() { + return this.isUnderline; + } + + public void setUnderline(boolean isUnderline) { + setUnderline(isUnderline ? Boolean.TRUE : Boolean.FALSE); + } + + public void setUnderline(Boolean isUnderline) { + Object old = this.isUnderline; + this.isUnderline = isUnderline; + getEventSupport().firePropertyChange("underline", old, this.isUnderline); + } + + public boolean isStrikeThrough() { + return JRStyleResolver.isStrikeThrough((JRFont)this); + } + + public Boolean isOwnStrikeThrough() { + return this.isStrikeThrough; + } + + public void setStrikeThrough(boolean isStrikeThrough) { + setStrikeThrough(isStrikeThrough ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStrikeThrough(Boolean isStrikeThrough) { + Object old = this.isStrikeThrough; + this.isStrikeThrough = isStrikeThrough; + getEventSupport().firePropertyChange("strikeThrough", old, this.isStrikeThrough); + } + + public int getFontSize() { + return JRStyleResolver.getFontSize((JRFont)this); + } + + public Integer getOwnFontSize() { + return this.fontSize; + } + + public void setFontSize(int fontSize) { + setFontSize(new Integer(fontSize)); + } + + public void setFontSize(Integer fontSize) { + Object old = this.fontSize; + this.fontSize = fontSize; + getEventSupport().firePropertyChange("fontSize", old, this.fontSize); + } + + public int getSize() { + return getFontSize(); + } + + public Integer getOwnSize() { + return getOwnFontSize(); + } + + public void setSize(int size) { + setFontSize(size); + } + + public void setSize(Integer size) { + setFontSize(size); + } + + public String getPdfFontName() { + return JRStyleResolver.getPdfFontName((JRFont)this); + } + + public String getOwnPdfFontName() { + return this.pdfFontName; + } + + public void setPdfFontName(String pdfFontName) { + Object old = this.pdfFontName; + this.pdfFontName = pdfFontName; + getEventSupport().firePropertyChange("pdfFontName", old, this.pdfFontName); + } + + public String getPdfEncoding() { + return JRStyleResolver.getPdfEncoding((JRFont)this); + } + + public String getOwnPdfEncoding() { + return this.pdfEncoding; + } + + public void setPdfEncoding(String pdfEncoding) { + Object old = this.pdfEncoding; + this.pdfEncoding = pdfEncoding; + getEventSupport().firePropertyChange("pdfEncoding", old, this.pdfEncoding); + } + + public boolean isPdfEmbedded() { + return JRStyleResolver.isPdfEmbedded((JRFont)this); + } + + public Boolean isOwnPdfEmbedded() { + return this.isPdfEmbedded; + } + + public void setPdfEmbedded(boolean isPdfEmbedded) { + setPdfEmbedded(isPdfEmbedded ? Boolean.TRUE : Boolean.FALSE); + } + + public void setPdfEmbedded(Boolean isPdfEmbedded) { + Object old = this.isPdfEmbedded; + this.isPdfEmbedded = isPdfEmbedded; + getEventSupport().firePropertyChange("pdfEmbedded", old, this.isPdfEmbedded); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + if (this.isStyledText != null) { + this.markup = this.isStyledText.booleanValue() ? "styled" : "none"; + this.isStyledText = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextField.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextField.java new file mode 100644 index 0000000..c19fa0e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignTextField.java @@ -0,0 +1,312 @@ +package net.sf.jasperreports.engine.design; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRDesignTextField extends JRDesignTextElement implements JRTextField { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_ANCHOR_NAME_EXPRESSION = "anchorNameExpression"; + + public static final String PROPERTY_BOOKMARK_LEVEL = "bookmarkLevel"; + + public static final String PROPERTY_EVALUATION_GROUP = "evaluationGroup"; + + public static final String PROPERTY_EVALUATION_TIME = "evaluationTime"; + + public static final String PROPERTY_EXPRESSION = "expression"; + + protected boolean isStretchWithOverflow = false; + + protected byte evaluationTime = 1; + + protected String pattern = null; + + protected Boolean isBlankWhenNull = null; + + protected byte hyperlinkType = 0; + + protected String linkType; + + protected byte hyperlinkTarget = 1; + + private List hyperlinkParameters; + + protected JRGroup evaluationGroup = null; + + protected JRExpression expression = null; + + protected JRExpression anchorNameExpression = null; + + protected JRExpression hyperlinkReferenceExpression = null; + + protected JRExpression hyperlinkAnchorExpression = null; + + protected JRExpression hyperlinkPageExpression = null; + + private JRExpression hyperlinkTooltipExpression; + + protected int bookmarkLevel = 0; + + public JRDesignTextField() { + super((JRDefaultStyleProvider)null); + this.hyperlinkParameters = new ArrayList(); + } + + public JRDesignTextField(JRDefaultStyleProvider defaultStyleProvider) { + super(defaultStyleProvider); + this.hyperlinkParameters = new ArrayList(); + } + + public boolean isStretchWithOverflow() { + return this.isStretchWithOverflow; + } + + public byte getEvaluationTime() { + return this.evaluationTime; + } + + public String getPattern() { + return JRStyleResolver.getPattern(this); + } + + public String getOwnPattern() { + return this.pattern; + } + + public boolean isBlankWhenNull() { + return JRStyleResolver.isBlankWhenNull(this); + } + + public Boolean isOwnBlankWhenNull() { + return this.isBlankWhenNull; + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType((JRHyperlink)this); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRExpression getExpression() { + return this.expression; + } + + public JRExpression getAnchorNameExpression() { + return this.anchorNameExpression; + } + + public JRExpression getHyperlinkReferenceExpression() { + return this.hyperlinkReferenceExpression; + } + + public JRExpression getHyperlinkAnchorExpression() { + return this.hyperlinkAnchorExpression; + } + + public JRExpression getHyperlinkPageExpression() { + return this.hyperlinkPageExpression; + } + + public void setStretchWithOverflow(boolean isStretch) { + boolean old = this.isStretchWithOverflow; + this.isStretchWithOverflow = isStretch; + getEventSupport().firePropertyChange("stretchWithOverflow", old, this.isStretchWithOverflow); + } + + public void setEvaluationTime(byte evaluationTime) { + byte old = this.evaluationTime; + this.evaluationTime = evaluationTime; + getEventSupport().firePropertyChange("evaluationTime", old, this.evaluationTime); + } + + public void setPattern(String pattern) { + Object old = this.pattern; + this.pattern = pattern; + getEventSupport().firePropertyChange("pattern", old, this.pattern); + } + + public void setBlankWhenNull(boolean isBlank) { + setBlankWhenNull(isBlank ? Boolean.TRUE : Boolean.FALSE); + } + + public void setBlankWhenNull(Boolean isBlank) { + Object old = this.isBlankWhenNull; + this.isBlankWhenNull = isBlank; + getEventSupport().firePropertyChange("blankWhenNull", old, this.isBlankWhenNull); + } + + public void setHyperlinkType(byte hyperlinkType) { + setLinkType(JRHyperlinkHelper.getLinkType(hyperlinkType)); + } + + public void setHyperlinkTarget(byte hyperlinkTarget) { + byte old = this.hyperlinkTarget; + this.hyperlinkTarget = hyperlinkTarget; + getEventSupport().firePropertyChange("hyperlinkTarget", old, this.hyperlinkTarget); + } + + public void setEvaluationGroup(JRGroup evaluationGroup) { + Object old = this.evaluationGroup; + this.evaluationGroup = evaluationGroup; + getEventSupport().firePropertyChange("evaluationGroup", old, this.evaluationGroup); + } + + public void setExpression(JRExpression expression) { + Object old = this.expression; + this.expression = expression; + getEventSupport().firePropertyChange("expression", old, this.expression); + } + + public void setAnchorNameExpression(JRExpression anchorNameExpression) { + Object old = this.anchorNameExpression; + this.anchorNameExpression = anchorNameExpression; + getEventSupport().firePropertyChange("anchorNameExpression", old, this.anchorNameExpression); + } + + public void setHyperlinkReferenceExpression(JRExpression hyperlinkReferenceExpression) { + Object old = this.hyperlinkReferenceExpression; + this.hyperlinkReferenceExpression = hyperlinkReferenceExpression; + getEventSupport().firePropertyChange("hyperlinkReferenceExpression", old, this.hyperlinkReferenceExpression); + } + + public void setHyperlinkAnchorExpression(JRExpression hyperlinkAnchorExpression) { + Object old = this.hyperlinkAnchorExpression; + this.hyperlinkAnchorExpression = hyperlinkAnchorExpression; + getEventSupport().firePropertyChange("hyperlinkAnchorExpression", old, this.hyperlinkAnchorExpression); + } + + public void setHyperlinkPageExpression(JRExpression hyperlinkPageExpression) { + Object old = this.hyperlinkPageExpression; + this.hyperlinkPageExpression = hyperlinkPageExpression; + getEventSupport().firePropertyChange("hyperlinkPageExpression", old, this.hyperlinkPageExpression); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitTextField(this); + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public void setBookmarkLevel(int bookmarkLevel) { + int old = this.bookmarkLevel; + this.bookmarkLevel = bookmarkLevel; + getEventSupport().firePropertyChange("bookmarkLevel", old, this.bookmarkLevel); + } + + public String getLinkType() { + return this.linkType; + } + + public void setLinkType(String type) { + Object old = this.linkType; + this.linkType = type; + getEventSupport().firePropertyChange("linkType", old, this.linkType); + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + JRHyperlinkParameter[] parameters; + if (this.hyperlinkParameters.isEmpty()) { + parameters = null; + } else { + parameters = new JRHyperlinkParameter[this.hyperlinkParameters.size()]; + this.hyperlinkParameters.toArray((Object[])parameters); + } + return parameters; + } + + public List getHyperlinkParametersList() { + return this.hyperlinkParameters; + } + + public void addHyperlinkParameter(JRHyperlinkParameter parameter) { + this.hyperlinkParameters.add(parameter); + getEventSupport().fireCollectionElementAddedEvent("hyperlinkParameters", parameter, this.hyperlinkParameters.size() - 1); + } + + public void removeHyperlinkParameter(JRHyperlinkParameter parameter) { + int idx = this.hyperlinkParameters.indexOf(parameter); + if (idx >= 0) { + this.hyperlinkParameters.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("hyperlinkParameters", parameter, idx); + } + } + + public void removeHyperlinkParameter(String parameterName) { + for (ListIterator it = this.hyperlinkParameters.listIterator(); it.hasNext(); ) { + JRHyperlinkParameter parameter = it.next(); + if (parameter.getName() != null && parameter.getName().equals(parameterName)) { + it.remove(); + getEventSupport().fireCollectionElementRemovedEvent("hyperlinkParameters", parameter, it.nextIndex()); + } + } + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + normalizeLinkType(); + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public JRExpression getHyperlinkTooltipExpression() { + return this.hyperlinkTooltipExpression; + } + + public void setHyperlinkTooltipExpression(JRExpression hyperlinkTooltipExpression) { + Object old = this.hyperlinkTooltipExpression; + this.hyperlinkTooltipExpression = hyperlinkTooltipExpression; + getEventSupport().firePropertyChange("hyperlinkTooltipExpression", old, this.hyperlinkTooltipExpression); + } + + public Object clone() { + JRDesignTextField clone = (JRDesignTextField)super.clone(); + if (this.hyperlinkParameters != null) { + clone.hyperlinkParameters = new ArrayList(this.hyperlinkParameters.size()); + for (int i = 0; i < this.hyperlinkParameters.size(); i++) + clone.hyperlinkParameters.add(((JRHyperlinkParameter)this.hyperlinkParameters.get(i)).clone()); + } + if (this.expression != null) + clone.expression = (JRExpression)this.expression.clone(); + if (this.anchorNameExpression != null) + clone.anchorNameExpression = (JRExpression)this.anchorNameExpression.clone(); + if (this.hyperlinkReferenceExpression != null) + clone.hyperlinkReferenceExpression = (JRExpression)this.hyperlinkReferenceExpression.clone(); + if (this.hyperlinkAnchorExpression != null) + clone.hyperlinkAnchorExpression = (JRExpression)this.hyperlinkAnchorExpression.clone(); + if (this.hyperlinkPageExpression != null) + clone.hyperlinkPageExpression = (JRExpression)this.hyperlinkPageExpression.clone(); + if (this.hyperlinkTooltipExpression != null) + clone.hyperlinkTooltipExpression = (JRExpression)this.hyperlinkTooltipExpression.clone(); + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignVariable.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignVariable.java new file mode 100644 index 0000000..7111058 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRDesignVariable.java @@ -0,0 +1,121 @@ +package net.sf.jasperreports.engine.design; + +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.base.JRBaseVariable; +import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; +import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; + +public class JRDesignVariable extends JRBaseVariable implements JRChangeEventsSupport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_CALCULATION = "calculation"; + + public static final String PROPERTY_EXPRESSION = "expression"; + + public static final String PROPERTY_INCREMENTER_FACTORY_CLASS_NAME = "incrementerFactoryClassName"; + + public static final String PROPERTY_INCREMENT_GROUP = "incrementGroup"; + + public static final String PROPERTY_INCREMENT_TYPE = "incrementType"; + + public static final String PROPERTY_INITIAL_VALUE_EXPRESSION = "initialValueExpression"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_RESET_GROUP = "resetGroup"; + + public static final String PROPERTY_RESET_TYPE = "resetType"; + + public static final String PROPERTY_SYSTEM_DEFINED = "systemDefined"; + + public static final String PROPERTY_VALUE_CLASS_NAME = "valueClassName"; + + private transient JRPropertyChangeSupport eventSupport; + + public void setName(String name) { + String old = this.name; + this.name = name; + getEventSupport().firePropertyChange("name", old, this.name); + } + + public void setValueClass(Class clazz) { + setValueClassName(clazz.getName()); + } + + public void setValueClassName(String className) { + Object old = this.valueClassName; + this.valueClassName = className; + this.valueClass = null; + this.valueClassRealName = null; + getEventSupport().firePropertyChange("valueClassName", old, this.valueClassName); + } + + public void setIncrementerFactoryClass(Class clazz) { + setIncrementerFactoryClassName(clazz.getName()); + } + + public void setIncrementerFactoryClassName(String className) { + Object old = this.incrementerFactoryClassName; + this.incrementerFactoryClassName = className; + this.incrementerFactoryClass = null; + this.incrementerFactoryClassRealName = null; + getEventSupport().firePropertyChange("incrementerFactoryClassName", old, this.incrementerFactoryClassName); + } + + public void setResetType(byte resetType) { + byte old = this.resetType; + this.resetType = resetType; + getEventSupport().firePropertyChange("resetType", old, this.resetType); + } + + public void setIncrementType(byte incrementType) { + byte old = this.incrementType; + this.incrementType = incrementType; + getEventSupport().firePropertyChange("incrementType", old, this.incrementType); + } + + public void setCalculation(byte calculation) { + byte old = this.calculation; + this.calculation = calculation; + getEventSupport().firePropertyChange("calculation", old, this.calculation); + } + + public void setSystemDefined(boolean isSystemDefined) { + boolean old = this.isSystemDefined; + this.isSystemDefined = isSystemDefined; + getEventSupport().firePropertyChange("systemDefined", old, this.isSystemDefined); + } + + public void setExpression(JRExpression expression) { + Object old = this.expression; + this.expression = expression; + getEventSupport().firePropertyChange("expression", old, this.expression); + } + + public void setInitialValueExpression(JRExpression expression) { + Object old = this.initialValueExpression; + this.initialValueExpression = expression; + getEventSupport().firePropertyChange("initialValueExpression", old, this.initialValueExpression); + } + + public void setResetGroup(JRGroup group) { + Object old = this.resetGroup; + this.resetGroup = group; + getEventSupport().firePropertyChange("resetGroup", old, this.resetGroup); + } + + public void setIncrementGroup(JRGroup group) { + Object old = this.incrementGroup; + this.incrementGroup = group; + getEventSupport().firePropertyChange("incrementGroup", old, this.incrementGroup); + } + + public JRPropertyChangeSupport getEventSupport() { + synchronized (this) { + if (this.eventSupport == null) + this.eventSupport = new JRPropertyChangeSupport(this); + } + return this.eventSupport; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRJavacCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRJavacCompiler.java new file mode 100644 index 0000000..520d824 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRJavacCompiler.java @@ -0,0 +1,40 @@ +package net.sf.jasperreports.engine.design; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.InputStream; +import net.sf.jasperreports.engine.JRException; + +public class JRJavacCompiler extends JRAbstractMultiClassCompiler { + public String compileClasses(File[] sourceFiles, String classpath) throws JRException { + String[] source = new String[sourceFiles.length + 3]; + source[0] = "javac"; + source[1] = "-classpath"; + source[2] = classpath; + for (int i = 0; i < sourceFiles.length; i++) + source[i + 3] = sourceFiles[i].getPath(); + try { + Process compile = Runtime.getRuntime().exec(source); + InputStream errFile = compile.getErrorStream(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int count = 0; + do { + count = errFile.read(buffer); + if (count <= 0) + continue; + baos.write(buffer, 0, count); + } while (count >= 0); + if (baos.toString().indexOf("error") != -1) + return baos.toString(); + return null; + } catch (Exception e) { + StringBuffer files = new StringBuffer(); + for (int j = 0; j < sourceFiles.length; j++) { + files.append(sourceFiles[j].getPath()); + files.append(' '); + } + throw new JRException("Error compiling report java source files : " + files, e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRJdk13Compiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRJdk13Compiler.java new file mode 100644 index 0000000..d83b0bc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRJdk13Compiler.java @@ -0,0 +1,54 @@ +package net.sf.jasperreports.engine.design; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.PrintWriter; +import java.lang.reflect.Method; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.util.JRClassLoader; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRJdk13Compiler extends JRAbstractMultiClassCompiler { + static final Log log = LogFactory.getLog(JRJdk13Compiler.class); + + private static final int MODERN_COMPILER_SUCCESS = 0; + + static Class array$Ljava$lang$String; + + public String compileClasses(File[] sourceFiles, String classpath) throws JRException { + String[] source = new String[sourceFiles.length + 2]; + for (int i = 0; i < sourceFiles.length; i++) + source[i] = sourceFiles[i].getPath(); + source[sourceFiles.length] = "-classpath"; + source[sourceFiles.length + 1] = classpath; + String errors = null; + try { + Class clazz = JRClassLoader.loadClassForRealName("com.sun.tools.javac.Main"); + Object compiler = clazz.newInstance(); + try { + Method compileMethod = clazz.getMethod("compile", new Class[] { (array$Ljava$lang$String == null) ? (array$Ljava$lang$String = class$("[Ljava.lang.String;")) : array$Ljava$lang$String, PrintWriter.class }); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int result = ((Integer)compileMethod.invoke(compiler, new Object[] { source, new PrintWriter(baos) })).intValue(); + if (result != 0) { + errors = baos.toString(); + } else if (log.isInfoEnabled() && baos.size() > 0) { + log.info(baos.toString()); + } + } catch (NoSuchMethodException ex) { + Method compileMethod = clazz.getMethod("compile", new Class[] { (array$Ljava$lang$String == null) ? (array$Ljava$lang$String = class$("[Ljava.lang.String;")) : array$Ljava$lang$String }); + int result = ((Integer)compileMethod.invoke(compiler, new Object[] { source })).intValue(); + if (result != 0) + errors = "See error messages above."; + } + } catch (Exception e) { + StringBuffer files = new StringBuffer(); + for (int j = 0; j < sourceFiles.length; j++) { + files.append(sourceFiles[j].getPath()); + files.append(' '); + } + throw new JRException("Error compiling report java source files : " + files, e); + } + return errors; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRJdtCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRJdtCompiler.java new file mode 100644 index 0000000..09f65b8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRJdtCompiler.java @@ -0,0 +1,394 @@ +package net.sf.jasperreports.engine.design; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.Serializable; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Properties; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.util.JRClassLoader; +import net.sf.jasperreports.engine.util.JRProperties; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.eclipse.jdt.core.compiler.IProblem; +import org.eclipse.jdt.internal.compiler.ClassFile; +import org.eclipse.jdt.internal.compiler.CompilationResult; +import org.eclipse.jdt.internal.compiler.Compiler; +import org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies; +import org.eclipse.jdt.internal.compiler.ICompilerRequestor; +import org.eclipse.jdt.internal.compiler.IErrorHandlingPolicy; +import org.eclipse.jdt.internal.compiler.IProblemFactory; +import org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader; +import org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException; +import org.eclipse.jdt.internal.compiler.env.IBinaryType; +import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; +import org.eclipse.jdt.internal.compiler.env.INameEnvironment; +import org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer; +import org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory; + +public class JRJdtCompiler extends JRAbstractJavaCompiler { + private static final String JDT_PROPERTIES_PREFIX = "org.eclipse.jdt.core."; + + static final Log log = LogFactory.getLog(JRJdtCompiler.class); + + private final ClassLoader classLoader; + + Constructor constrNameEnvAnsBin; + + Constructor constrNameEnvAnsCompUnit; + + boolean is2ArgsConstr; + + Constructor constrNameEnvAnsBin2Args; + + Constructor constrNameEnvAnsCompUnit2Args; + + public JRJdtCompiler() { + super(false); + boolean bool; + this.classLoader = getClassLoader(); + try { + Class classAccessRestriction = loadClass("org.eclipse.jdt.internal.compiler.env.AccessRestriction"); + this.constrNameEnvAnsBin2Args = NameEnvironmentAnswer.class.getConstructor(new Class[] { IBinaryType.class, classAccessRestriction }); + this.constrNameEnvAnsCompUnit2Args = NameEnvironmentAnswer.class.getConstructor(new Class[] { ICompilationUnit.class, classAccessRestriction }); + this.is2ArgsConstr = true; + bool = true; + } catch (NoSuchMethodException e) { + bool = false; + } catch (ClassNotFoundException ex) { + bool = false; + } + if (!bool) + try { + this.constrNameEnvAnsBin = NameEnvironmentAnswer.class.getConstructor(new Class[] { IBinaryType.class }); + this.constrNameEnvAnsCompUnit = NameEnvironmentAnswer.class.getConstructor(new Class[] { ICompilationUnit.class }); + this.is2ArgsConstr = false; + } catch (NoSuchMethodException ex) { + throw new JRRuntimeException("Not able to load JDT classes", ex); + } + } + + class CompilationUnit implements ICompilationUnit { + protected String srcCode; + + protected String className; + + private final JRJdtCompiler this$0; + + public CompilationUnit(String srcCode, String className) { + this.srcCode = srcCode; + this.className = className; + } + + public char[] getFileName() { + return this.className.toCharArray(); + } + + public char[] getContents() { + return this.srcCode.toCharArray(); + } + + public char[] getMainTypeName() { + return this.className.toCharArray(); + } + + public char[][] getPackageName() { + return new char[0][0]; + } + } + + protected String compileUnits(JRCompilationUnit[] units, String classpath, File tempDirFile) { + StringBuffer problemBuffer = new StringBuffer(); + INameEnvironment env = getNameEnvironment(units); + IErrorHandlingPolicy policy = DefaultErrorHandlingPolicies.proceedWithAllProblems(); + Map settings = getJdtSettings(); + DefaultProblemFactory defaultProblemFactory = new DefaultProblemFactory(Locale.getDefault()); + ICompilerRequestor requestor = getCompilerRequestor(units, problemBuffer); + ICompilationUnit[] compilationUnits = new ICompilationUnit[units.length]; + for (int i = 0; i < compilationUnits.length; i++) + compilationUnits[i] = new CompilationUnit(units[i].getSourceCode(), units[i].getName()); + Compiler compiler = new Compiler(env, policy, settings, requestor, (IProblemFactory)defaultProblemFactory); + compiler.compile(compilationUnits); + if (problemBuffer.length() > 0) + return problemBuffer.toString(); + return null; + } + + protected INameEnvironment getNameEnvironment(final JRCompilationUnit[] units) { + INameEnvironment env = new INameEnvironment() { + private final JRCompilationUnit[] val$units; + + private final JRJdtCompiler this$0; + + public NameEnvironmentAnswer findType(char[][] compoundTypeName) { + StringBuffer result = new StringBuffer(); + String sep = ""; + for (int i = 0; i < compoundTypeName.length; i++) { + result.append(sep); + result.append(compoundTypeName[i]); + sep = "."; + } + return findType(result.toString()); + } + + public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) { + StringBuffer result = new StringBuffer(); + String sep = ""; + for (int i = 0; i < packageName.length; i++) { + result.append(sep); + result.append(packageName[i]); + sep = "."; + } + result.append(sep); + result.append(typeName); + return findType(result.toString()); + } + + private int getClassIndex(String className) { + int classIdx; + for (classIdx = 0; classIdx < units.length; classIdx++) { + if (className.equals(units[classIdx].getName())) + break; + } + if (classIdx >= units.length) + classIdx = -1; + return classIdx; + } + + private NameEnvironmentAnswer findType(String className) { + try { + int classIdx = getClassIndex(className); + if (classIdx >= 0) { + ICompilationUnit compilationUnit = new JRJdtCompiler.CompilationUnit(units[classIdx].getSourceCode(), className); + if (JRJdtCompiler.this.is2ArgsConstr) + return JRJdtCompiler.this.constrNameEnvAnsCompUnit2Args.newInstance(new Object[] { compilationUnit, null }); + return JRJdtCompiler.this.constrNameEnvAnsCompUnit.newInstance(new Object[] { compilationUnit }); + } + String resourceName = className.replace('.', '/') + ".class"; + InputStream is = JRJdtCompiler.this.getResource(resourceName); + if (is != null) { + byte[] buf = new byte[8192]; + ByteArrayOutputStream baos = new ByteArrayOutputStream(buf.length); + int count; + while ((count = is.read(buf, 0, buf.length)) > 0) + baos.write(buf, 0, count); + baos.flush(); + byte[] classBytes = baos.toByteArray(); + char[] fileName = className.toCharArray(); + ClassFileReader classFileReader = new ClassFileReader(classBytes, fileName, true); + if (JRJdtCompiler.this.is2ArgsConstr) + return JRJdtCompiler.this.constrNameEnvAnsBin2Args.newInstance(new Object[] { classFileReader, null }); + return JRJdtCompiler.this.constrNameEnvAnsBin.newInstance(new Object[] { classFileReader }); + } + } catch (IOException exc) { + JRJdtCompiler.log.error("Compilation error", exc); + } catch (ClassFormatException exc) { + JRJdtCompiler.log.error("Compilation error", (Throwable)exc); + } catch (InvocationTargetException e) { + throw new JRRuntimeException("Not able to create NameEnvironmentAnswer", e); + } catch (IllegalArgumentException e) { + throw new JRRuntimeException("Not able to create NameEnvironmentAnswer", e); + } catch (InstantiationException e) { + throw new JRRuntimeException("Not able to create NameEnvironmentAnswer", e); + } catch (IllegalAccessException e) { + throw new JRRuntimeException("Not able to create NameEnvironmentAnswer", e); + } + return null; + } + + private boolean isPackage(String result) { + int classIdx = getClassIndex(result); + if (classIdx >= 0) + return false; + String resourceName = result.replace('.', '/') + ".class"; + boolean isPackage = true; + InputStream is = JRJdtCompiler.this.getResource(resourceName); + if (is != null) + try { + isPackage = (is.read() > 0); + } catch (IOException e) { + try { + is.close(); + } catch (IOException iOException) {} + } finally { + try { + is.close(); + } catch (IOException e) {} + } + return isPackage; + } + + public boolean isPackage(char[][] parentPackageName, char[] packageName) { + StringBuffer result = new StringBuffer(); + String sep = ""; + if (parentPackageName != null) + for (int i = 0; i < parentPackageName.length; i++) { + result.append(sep); + result.append(parentPackageName[i]); + sep = "."; + } + if (Character.isUpperCase(packageName[0])) + if (!isPackage(result.toString())) + return false; + result.append(sep); + result.append(packageName); + return isPackage(result.toString()); + } + + public void cleanup() {} + }; + return env; + } + + protected ICompilerRequestor getCompilerRequestor(final JRCompilationUnit[] units, final StringBuffer problemBuffer) { + ICompilerRequestor requestor = new ICompilerRequestor() { + private final JRCompilationUnit[] val$units; + + private final StringBuffer val$problemBuffer; + + private final JRJdtCompiler this$0; + + public void acceptResult(CompilationResult result) { + String className = ((JRJdtCompiler.CompilationUnit)result.getCompilationUnit()).className; + int classIdx; + for (classIdx = 0; classIdx < units.length; classIdx++) { + if (className.equals(units[classIdx].getName())) + break; + } + if (result.hasErrors()) { + String sourceCode = units[classIdx].getSourceCode(); + IProblem[] problems = JRJdtCompiler.this.getJavaCompilationErrors(result); + for (int i = 0; i < problems.length; i++) { + IProblem problem = problems[i]; + problemBuffer.append(i + 1); + problemBuffer.append(". "); + problemBuffer.append(problem.getMessage()); + if (problem.getSourceStart() >= 0 && problem.getSourceEnd() >= 0) { + int problemStartIndex = sourceCode.lastIndexOf("\n", problem.getSourceStart()) + 1; + int problemEndIndex = sourceCode.indexOf("\n", problem.getSourceEnd()); + if (problemEndIndex < 0) + problemEndIndex = sourceCode.length(); + problemBuffer.append("\n"); + problemBuffer.append(sourceCode.substring(problemStartIndex, problemEndIndex)); + problemBuffer.append("\n"); + int j; + for (j = problemStartIndex; j < problem.getSourceStart(); j++) + problemBuffer.append(" "); + if (problem.getSourceStart() == problem.getSourceEnd()) { + problemBuffer.append("^"); + } else { + problemBuffer.append("<"); + for (j = problem.getSourceStart() + 1; j < problem.getSourceEnd(); j++) + problemBuffer.append("-"); + problemBuffer.append(">"); + } + } + problemBuffer.append("\n"); + } + problemBuffer.append(problems.length); + problemBuffer.append(" errors\n"); + } + if (problemBuffer.length() == 0) { + ClassFile[] resultClassFiles = result.getClassFiles(); + for (int i = 0; i < resultClassFiles.length; i++) + units[classIdx].setCompileData((Serializable)resultClassFiles[i].getBytes()); + } + } + }; + return requestor; + } + + protected Map getJdtSettings() { + Map settings = new HashMap(); + settings.put("org.eclipse.jdt.core.compiler.debug.lineNumber", "generate"); + settings.put("org.eclipse.jdt.core.compiler.debug.sourceFile", "generate"); + settings.put("org.eclipse.jdt.core.compiler.problem.deprecation", "ignore"); + List properties = JRProperties.getProperties("org.eclipse.jdt.core."); + for (Iterator it = properties.iterator(); it.hasNext(); ) { + JRProperties.PropertySuffix property = it.next(); + String propVal = property.getValue(); + if (propVal != null && propVal.length() > 0) + settings.put(property.getKey(), propVal); + } + Properties systemProps = System.getProperties(); + for (Enumeration enumeration = systemProps.propertyNames(); enumeration.hasMoreElements(); ) { + String propName = (String)enumeration.nextElement(); + if (propName.startsWith("org.eclipse.jdt.core.")) { + String propVal = systemProps.getProperty(propName); + if (propVal != null && propVal.length() > 0) + settings.put(propName, propVal); + } + } + return settings; + } + + private ClassLoader getClassLoader() { + ClassLoader clsLoader = Thread.currentThread().getContextClassLoader(); + if (clsLoader != null) + try { + Class.forName(JRJdtCompiler.class.getName(), true, clsLoader); + } catch (ClassNotFoundException e) { + clsLoader = null; + } + if (clsLoader == null) + clsLoader = JRClassLoader.class.getClassLoader(); + return clsLoader; + } + + protected InputStream getResource(String resourceName) { + if (this.classLoader == null) + return JRJdtCompiler.class.getResourceAsStream("/" + resourceName); + return this.classLoader.getResourceAsStream(resourceName); + } + + protected Class loadClass(String className) throws ClassNotFoundException { + if (this.classLoader == null) + return Class.forName(className); + return this.classLoader.loadClass(className); + } + + protected void checkLanguage(String language) throws JRException { + if (!"java".equals(language)) + throw new JRException("Language \"" + language + "\" not supported by this report compiler.\n" + "Expecting \"java\" instead."); + } + + protected JRCompilationSourceCode generateSourceCode(JRSourceCompileTask sourceTask) throws JRException { + return JRClassGenerator.generateClass(sourceTask); + } + + protected String getSourceFileName(String unitName) { + return unitName + ".java"; + } + + protected String getCompilerClass() { + return JRJavacCompiler.class.getName(); + } + + protected IProblem[] getJavaCompilationErrors(CompilationResult result) { + try { + Method getErrorsMethod = result.getClass().getMethod("getErrors", null); + return (IProblem[])getErrorsMethod.invoke(result, null); + } catch (SecurityException e) { + throw new JRRuntimeException("Error resolving JDT methods", e); + } catch (NoSuchMethodException e) { + throw new JRRuntimeException("Error resolving JDT methods", e); + } catch (IllegalArgumentException e) { + throw new JRRuntimeException("Error invoking JDT methods", e); + } catch (IllegalAccessException e) { + throw new JRRuntimeException("Error invoking JDT methods", e); + } catch (InvocationTargetException e) { + throw new JRRuntimeException("Error invoking JDT methods", e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRMultiClassCompiler.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRMultiClassCompiler.java new file mode 100644 index 0000000..87efb58 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRMultiClassCompiler.java @@ -0,0 +1,8 @@ +package net.sf.jasperreports.engine.design; + +import java.io.File; +import net.sf.jasperreports.engine.JRException; + +public interface JRMultiClassCompiler extends JRClassCompiler { + String compileClasses(File[] paramArrayOfFile, String paramString) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRReportCompileData.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRReportCompileData.java new file mode 100644 index 0000000..e005c0d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRReportCompileData.java @@ -0,0 +1,57 @@ +package net.sf.jasperreports.engine.design; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRException; + +public class JRReportCompileData implements Serializable { + private static final long serialVersionUID = 10200L; + + private Serializable mainDatasetCompileData; + + private Map datasetCompileData = new HashMap(); + + private Map crosstabCompileData = new HashMap(); + + public void setMainDatasetCompileData(Serializable compileData) { + this.mainDatasetCompileData = compileData; + } + + public void setDatasetCompileData(JRDataset dataset, Serializable compileData) { + if (dataset.isMainDataset()) { + setMainDatasetCompileData(compileData); + } else { + this.datasetCompileData.put(dataset.getName(), compileData); + } + } + + public void setCrosstabCompileData(int crosstabId, Serializable compileData) { + this.crosstabCompileData.put(new Integer(crosstabId), compileData); + } + + public Serializable getMainDatasetCompileData() { + return this.mainDatasetCompileData; + } + + public Serializable getDatasetCompileData(JRDataset dataset) throws JRException { + Serializable compileData; + if (dataset.isMainDataset()) { + compileData = getMainDatasetCompileData(); + } else { + compileData = (Serializable)this.datasetCompileData.get(dataset.getName()); + if (compileData == null) + throw new JRException("Compile data for dataset " + dataset.getName() + " not found in the report."); + } + return compileData; + } + + public Serializable getCrosstabCompileData(JRCrosstab crosstab) throws JRException { + Serializable compileData = (Serializable)this.crosstabCompileData.get(new Integer(crosstab.getId())); + if (compileData == null) + throw new JRException("Compile data for crosstab not found in the report."); + return compileData; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRSourceCompileTask.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRSourceCompileTask.java new file mode 100644 index 0000000..c7450d3 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRSourceCompileTask.java @@ -0,0 +1,94 @@ +package net.sf.jasperreports.engine.design; + +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRVariable; + +public class JRSourceCompileTask { + private JasperDesign jasperDesign; + + private String unitName; + + private JRExpressionCollector expressionCollector; + + private Map parametersMap; + + private Map fieldsMap; + + private Map variablesMap; + + private JRVariable[] variables; + + private List expressions; + + private boolean onlyDefaultEvaluation; + + protected JRSourceCompileTask(JasperDesign jasperDesign, String unitName, JRExpressionCollector expressionCollector, Map parametersMap, Map fieldsMap, Map variablesMap, JRVariable[] variables, boolean onlyDefaultEvaluation) { + this.jasperDesign = jasperDesign; + this.unitName = unitName; + this.expressionCollector = expressionCollector; + this.parametersMap = parametersMap; + this.fieldsMap = fieldsMap; + this.variablesMap = variablesMap; + this.variables = variables; + this.expressions = expressionCollector.getExpressions(); + this.onlyDefaultEvaluation = onlyDefaultEvaluation; + } + + public JRSourceCompileTask(JasperDesign jasperDesign, JRDesignDataset dataset, JRExpressionCollector expressionCollector, String unitName) { + this(jasperDesign, unitName, expressionCollector.getCollector((JRDataset)dataset), dataset.getParametersMap(), dataset.getFieldsMap(), dataset.getVariablesMap(), dataset.getVariables(), false); + } + + public JRSourceCompileTask(JasperDesign jasperDesign, JRDesignCrosstab crosstab, JRExpressionCollector expressionCollector, String unitName) { + this(jasperDesign, unitName, expressionCollector.getCollector((JRCrosstab)crosstab), crosstab.getParametersMap(), null, crosstab.getVariablesMap(), crosstab.getVariables(), true); + } + + public List getExpressions() { + return this.expressions; + } + + public Map getFieldsMap() { + return this.fieldsMap; + } + + public JasperDesign getJasperDesign() { + return this.jasperDesign; + } + + public String[] getImports() { + return this.jasperDesign.getImports(); + } + + public boolean isOnlyDefaultEvaluation() { + return this.onlyDefaultEvaluation; + } + + public Map getParametersMap() { + return this.parametersMap; + } + + public String getUnitName() { + return this.unitName; + } + + public JRVariable[] getVariables() { + return this.variables; + } + + public Map getVariablesMap() { + return this.variablesMap; + } + + public Integer getExpressionId(JRExpression expression) { + return this.expressionCollector.getExpressionId(expression); + } + + public JRExpression getExpression(int expressionId) { + return this.expressionCollector.getExpression(expressionId); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRValidationException.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRValidationException.java new file mode 100644 index 0000000..a7a5bc0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRValidationException.java @@ -0,0 +1,47 @@ +package net.sf.jasperreports.engine.design; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import net.sf.jasperreports.engine.JRException; + +public class JRValidationException extends JRException { + private static final long serialVersionUID = 10200L; + + private final Collection faults; + + public JRValidationException(String message, Object source) { + this(createFault(message, source)); + } + + private static JRValidationFault createFault(String message, Object source) { + JRValidationFault fault = new JRValidationFault(); + fault.setMessage(message); + fault.setSource(source); + return fault; + } + + public JRValidationException(JRValidationFault fault) { + this(Arrays.asList(new JRValidationFault[] { fault })); + } + + public JRValidationException(Collection faults) { + super(appendMessages(faults)); + this.faults = faults; + } + + public Collection getFaults() { + return this.faults; + } + + protected static String appendMessages(Collection faults) { + StringBuffer sbuffer = new StringBuffer(); + sbuffer.append("Report design not valid : "); + int i = 1; + for (Iterator it = faults.iterator(); it.hasNext(); i++) { + JRValidationFault fault = it.next(); + sbuffer.append("\n\t " + i + ". " + fault.getMessage()); + } + return sbuffer.toString(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRValidationFault.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRValidationFault.java new file mode 100644 index 0000000..febdf84 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRValidationFault.java @@ -0,0 +1,27 @@ +package net.sf.jasperreports.engine.design; + +import java.io.Serializable; + +public class JRValidationFault implements Serializable { + private static final long serialVersionUID = 10200L; + + private String message; + + private Object source; + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Object getSource() { + return this.source; + } + + public void setSource(Object source) { + this.source = source; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JRVerifier.java b/hrmsEjb/net/sf/jasperreports/engine/design/JRVerifier.java new file mode 100644 index 0000000..a54721b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JRVerifier.java @@ -0,0 +1,1407 @@ +package net.sf.jasperreports.engine.design; + +import java.awt.Image; +import java.io.File; +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URL; +import java.sql.Connection; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +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 net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.crosstabs.fill.JRPercentageCalculator; +import net.sf.jasperreports.crosstabs.fill.JRPercentageCalculatorFactory; +import net.sf.jasperreports.engine.JRAnchor; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRQueryChunk; +import net.sf.jasperreports.engine.JRRenderable; +import net.sf.jasperreports.engine.JRReport; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRSubreportParameter; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.JRTemplate; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.fill.JRExtendedIncrementerFactory; +import net.sf.jasperreports.engine.query.JRQueryExecuterFactory; +import net.sf.jasperreports.engine.util.FormatFactory; +import net.sf.jasperreports.engine.util.JRClassLoader; +import net.sf.jasperreports.engine.util.JRQueryExecuterUtils; + +public class JRVerifier { + private static String[] textFieldClassNames = null; + + private static String[] imageClassNames = null; + + private static String[] subreportClassNames = null; + + private static Class[] templateTypes = new Class[] { String.class, File.class, URL.class, InputStream.class, JRTemplate.class }; + + private JasperDesign jasperDesign = null; + + private Collection brokenRules = null; + + private JRExpressionCollector expressionCollector; + + protected JRVerifier(JasperDesign jrDesign) { + this(jrDesign, null); + } + + protected JRVerifier(JasperDesign jrDesign, JRExpressionCollector expressionCollector) { + this.jasperDesign = jrDesign; + this.brokenRules = new ArrayList(); + if (expressionCollector != null) { + this.expressionCollector = expressionCollector; + } else { + this.expressionCollector = JRExpressionCollector.collector((JRReport)this.jasperDesign); + } + } + + protected void addBrokenRule(String message, Object source) { + JRValidationFault fault = new JRValidationFault(); + fault.setMessage(message); + fault.setSource(source); + this.brokenRules.add(fault); + } + + protected void addBrokenRule(Exception e, Object source) { + JRValidationFault fault = new JRValidationFault(); + fault.setMessage(e.getMessage()); + fault.setSource(source); + this.brokenRules.add(fault); + } + + public static Collection verifyDesign(JasperDesign jasperDesign, JRExpressionCollector expressionCollector) { + JRVerifier verifier = new JRVerifier(jasperDesign, expressionCollector); + return verifier.verifyDesign(); + } + + public static Collection verifyDesign(JasperDesign jasperDesign) { + return verifyDesign(jasperDesign, null); + } + + protected Collection verifyDesign() { + this.jasperDesign.preprocess(); + verifyDesignAttributes(); + verifyReportTemplates(); + verifyReportFonts(); + verifyDataset(this.jasperDesign.getMainDesignDataset()); + verifyDatasets(); + verifyStyles(); + verifyBand(this.jasperDesign.getBackground()); + verifyBand(this.jasperDesign.getTitle()); + verifyBand(this.jasperDesign.getPageHeader()); + verifyBand(this.jasperDesign.getColumnHeader()); + verifyBand(this.jasperDesign.getDetail()); + verifyBand(this.jasperDesign.getColumnFooter()); + verifyBand(this.jasperDesign.getPageFooter()); + verifyBand(this.jasperDesign.getLastPageFooter()); + verifyBand(this.jasperDesign.getSummary()); + verifyBand(this.jasperDesign.getNoData()); + return this.brokenRules; + } + + private void verifyDesignAttributes() { + if (this.jasperDesign.getName() == null || this.jasperDesign.getName().trim().length() == 0) + addBrokenRule("Report name is missing.", this.jasperDesign); + if (this.jasperDesign.getColumnCount() <= 0) + addBrokenRule("Column count must be greater than zero.", this.jasperDesign); + if (this.jasperDesign.getPageWidth() < 0) + addBrokenRule("Page width must be positive.", this.jasperDesign); + if (this.jasperDesign.getPageHeight() < 0) + addBrokenRule("Page height must be positive.", this.jasperDesign); + if (this.jasperDesign.getColumnWidth() < 0) + addBrokenRule("Column width must be positive.", this.jasperDesign); + if (this.jasperDesign.getColumnSpacing() < 0) + addBrokenRule("Column spacing must be positive.", this.jasperDesign); + if (this.jasperDesign.getLeftMargin() < 0) + addBrokenRule("Left margin must be positive.", this.jasperDesign); + if (this.jasperDesign.getRightMargin() < 0) + addBrokenRule("Right margin must be positive.", this.jasperDesign); + if (this.jasperDesign.getTopMargin() < 0) + addBrokenRule("Top margin must be positive.", this.jasperDesign); + if (this.jasperDesign.getBottomMargin() < 0) + addBrokenRule("Bottom margin must be positive.", this.jasperDesign); + if (this.jasperDesign.getLeftMargin() + this.jasperDesign.getColumnCount() * this.jasperDesign.getColumnWidth() + (this.jasperDesign.getColumnCount() - 1) * this.jasperDesign.getColumnSpacing() + this.jasperDesign.getRightMargin() > this.jasperDesign.getPageWidth()) + addBrokenRule("The columns and the margins do not fit the page width.", this.jasperDesign); + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getBackground() != null) ? this.jasperDesign.getBackground().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The background section and the margins do not fit the page height.", this.jasperDesign); + if (this.jasperDesign.isTitleNewPage()) { + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getTitle() != null) ? this.jasperDesign.getTitle().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The title section and the margins do not fit the page height.", this.jasperDesign); + } else if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getTitle() != null) ? this.jasperDesign.getTitle().getHeight() : 0) + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getPageFooter() != null) ? this.jasperDesign.getPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) { + addBrokenRule("The title section, the page and column headers and footers and the margins do not fit the page height.", this.jasperDesign); + } + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getPageFooter() != null) ? this.jasperDesign.getPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The page and column headers and footers and the margins do not fit the page height.", this.jasperDesign); + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getLastPageFooter() != null) ? this.jasperDesign.getLastPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The page and column headers and footers and the margins do not fit the last page height.", this.jasperDesign); + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getSummary() != null) ? this.jasperDesign.getSummary().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The summary section and the margins do not fit the page height.", this.jasperDesign); + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((this.jasperDesign.getDetail() != null) ? this.jasperDesign.getDetail().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getPageFooter() != null) ? this.jasperDesign.getPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The detail section, the page and column headers and footers and the margins do not fit the page height.", this.jasperDesign); + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getNoData() != null) ? this.jasperDesign.getNoData().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The noData section and the margins do not fit the page height.", this.jasperDesign); + verifyFormatFactoryClass(); + } + + protected void verifyFormatFactoryClass() { + String formatFactoryClassName = this.jasperDesign.getFormatFactoryClass(); + if (formatFactoryClassName != null) + try { + Class formatFactoryClass = JRClassLoader.loadClassForName(formatFactoryClassName); + if (!FormatFactory.class.isAssignableFrom(formatFactoryClass)) + addBrokenRule("The report format factory class is not compatible with " + FormatFactory.class.getName(), this.jasperDesign); + } catch (ClassNotFoundException e) { + addBrokenRule(e.toString(), this.jasperDesign); + } + } + + private void verifyQuery(JRDesignDataset dataset) { + JRQuery query = dataset.getQuery(); + if (query != null) { + String language = query.getLanguage(); + JRQueryExecuterFactory queryExecuterFactory = null; + if (language == null || language.length() == 0) { + addBrokenRule("Query language not set.", query); + } else { + try { + queryExecuterFactory = JRQueryExecuterUtils.getQueryExecuterFactory(query.getLanguage()); + } catch (JRException e1) { + addBrokenRule("Query executer factory for " + language + " cannot be created.", query); + } + } + JRQueryChunk[] chunks = query.getChunks(); + if (chunks != null && chunks.length > 0) { + Map parametersMap = dataset.getParametersMap(); + for (int j = 0; j < chunks.length; j++) { + JRParameter parameter; + JRQueryChunk queryChunk = chunks[j]; + switch (queryChunk.getType()) { + case 2: + parameter = (JRParameter)parametersMap.get(queryChunk.getText()); + if (parameter == null) { + addBrokenRule("Query parameter not found : " + queryChunk.getText(), query); + break; + } + if (queryExecuterFactory != null) { + String parameterType = null; + try { + parameterType = parameter.getValueClassName(); + } catch (JRRuntimeException e) {} + if (parameterType != null && !queryExecuterFactory.supportsQueryParameterType(parameterType)) + addBrokenRule("Parameter type not supported in query : " + queryChunk.getText() + " class " + parameterType, query); + } + break; + case 3: + if (!parametersMap.containsKey(queryChunk.getText())) + addBrokenRule("Query parameter not found : " + queryChunk.getText(), query); + break; + } + } + } + } + } + + private void verifyExpressions(List expressions, Map parametersMap, Map fieldsMap, Map variablesMap) { + if (expressions != null && expressions.size() > 0) + for (Iterator it = expressions.iterator(); it.hasNext(); ) { + JRExpression expression = it.next(); + JRExpressionChunk[] chunks = expression.getChunks(); + if (chunks != null && chunks.length > 0) + for (int j = 0; j < chunks.length; j++) { + JRExpressionChunk expressionChunk = chunks[j]; + switch (expressionChunk.getType()) { + case 4: + if (!variablesMap.containsKey(expressionChunk.getText())) + addBrokenRule("Variable not found : " + expressionChunk.getText(), expression); + break; + case 3: + if (!fieldsMap.containsKey(expressionChunk.getText())) + addBrokenRule("Field not found : " + expressionChunk.getText(), expression); + break; + case 2: + if (!parametersMap.containsKey(expressionChunk.getText())) + addBrokenRule("Parameter not found : " + expressionChunk.getText(), expression); + break; + } + } + } + } + + private void verifyExpressions(JRDesignDataset dataset) { + verifyExpressions(this.expressionCollector.getExpressions((JRDataset)dataset), dataset.getParametersMap(), dataset.getFieldsMap(), dataset.getVariablesMap()); + } + + private void verifyReportFonts() { + JRReportFont[] fonts = this.jasperDesign.getFonts(); + if (fonts != null && fonts.length > 0) + for (int index = 0; index < fonts.length; index++) { + JRReportFont font = fonts[index]; + if (font.getName() == null || font.getName().trim().length() == 0) + addBrokenRule("Report font name missing.", font); + } + } + + protected void verifyReportTemplates() { + JRReportTemplate[] templates = this.jasperDesign.getTemplates(); + if (templates != null) + for (int i = 0; i < templates.length; i++) { + JRReportTemplate template = templates[i]; + verifyTemplate(template); + } + } + + protected void verifyTemplate(JRReportTemplate template) { + JRExpression sourceExpression = template.getSourceExpression(); + if (sourceExpression == null) { + addBrokenRule("Template source expression missing.", template); + } else { + try { + Class valueClass = sourceExpression.getValueClass(); + if (valueClass == null) { + addBrokenRule("Template source expression value class not set.", sourceExpression); + } else if (!verifyTemplateSourceType(valueClass)) { + addBrokenRule("Template source expression value class " + valueClass.getName() + "not supported.", sourceExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, sourceExpression); + } + } + } + + protected boolean verifyTemplateSourceType(Class valueClass) { + boolean valid = false; + for (int i = 0; i < templateTypes.length; i++) { + Class type = templateTypes[i]; + if (type.isAssignableFrom(valueClass)) { + valid = true; + break; + } + } + return valid; + } + + private void verifyStyles() { + JRStyle[] styles = this.jasperDesign.getStyles(); + if (styles != null && styles.length > 0) + for (int index = 0; index < styles.length; index++) { + JRStyle style = styles[index]; + if (style.getName() == null || style.getName().trim().length() == 0) + addBrokenRule("Report style name missing.", style); + } + } + + private void verifyParameters(JRDesignDataset dataset) { + JRParameter[] parameters = dataset.getParameters(); + if (parameters != null && parameters.length > 0) + for (int index = 0; index < parameters.length; index++) { + JRParameter parameter = parameters[index]; + Object errorSource = parameter; + if (parameter.isSystemDefined()) + errorSource = this.jasperDesign; + if (parameter.getName() == null || parameter.getName().trim().length() == 0) + addBrokenRule("Parameter name missing.", errorSource); + if (parameter.getValueClassName() == null) { + addBrokenRule("Class not set for parameter : " + parameter.getName(), errorSource); + } else { + try { + Class parameterType = parameter.getValueClass(); + JRExpression expression = parameter.getDefaultValueExpression(); + if (expression != null) + try { + if (expression.getValueClass() == null) { + addBrokenRule("No value class defined for the expression in parameter: " + parameter.getName(), expression); + } else if (!parameterType.isAssignableFrom(expression.getValueClass())) { + addBrokenRule("The parameter default value expression class is not compatible with the parameter's class : " + parameter.getName(), expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, errorSource); + } + } + } + } + + private void verifyFields(JRDesignDataset dataset) { + JRField[] fields = dataset.getFields(); + if (fields != null && fields.length > 0) + for (int index = 0; index < fields.length; index++) { + JRField field = fields[index]; + if (field.getName() == null || field.getName().trim().length() == 0) + addBrokenRule("Field name missing.", field); + try { + Class fieldType = field.getValueClass(); + if (fieldType == null) + addBrokenRule("Class not set for field : " + field.getName(), field); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, field); + } + } + } + + private void verifySortFields(JRDesignDataset dataset) { + JRField[] fields = dataset.getFields(); + JRSortField[] sortFields = dataset.getSortFields(); + if (sortFields != null && sortFields.length > 0) + for (int index = 0; index < sortFields.length; index++) { + JRSortField sortField = sortFields[index]; + String sortFieldName = sortField.getName(); + if (sortFieldName == null || sortFieldName.trim().length() == 0) { + addBrokenRule("Sort field name missing.", sortField); + } else { + boolean isFound = false; + int j = 0; + while (!isFound && j < fields.length) { + isFound = sortFieldName.equals(fields[j].getName()); + j++; + } + if (!isFound) + addBrokenRule("Sort field \"" + sortFieldName + "\" not declared.", sortField); + } + } + } + + private void verifyVariables(JRDesignDataset dataset) throws JRRuntimeException { + JRVariable[] variables = dataset.getVariables(); + if (variables != null && variables.length > 0) { + boolean isMainDataset = dataset.isMainDataset(); + for (int index = 0; index < variables.length; index++) { + JRVariable variable = variables[index]; + if (variable.getName() == null || variable.getName().trim().length() == 0) + addBrokenRule("Variable name missing.", variable); + try { + Class valueClass = variable.getValueClass(); + if (valueClass == null) { + addBrokenRule("Class not set for variable : " + variable.getName(), variable); + } else { + JRExpression expression = variable.getExpression(); + if (expression != null) + try { + if (expression.getValueClass() == null) { + addBrokenRule("No value class for the expression has been set in variable: " + variable.getName(), expression); + } else if (variable.getCalculation() != 1 && variable.getCalculation() != 10 && variable.getCalculation() != 8 && !valueClass.isAssignableFrom(expression.getValueClass())) { + addBrokenRule("The variable expression class is not compatible with the variable's class : " + variable.getName(), expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + if (variable.getInitialValueExpression() != null) + try { + if (!valueClass.isAssignableFrom(variable.getInitialValueExpression().getValueClass())) + addBrokenRule("The initial value class is not compatible with the variable's class : " + variable.getName(), variable.getInitialValueExpression()); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, variable.getInitialValueExpression()); + } + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, variable); + } + byte resetType = variable.getResetType(); + if (resetType == 4) + if (variable.getResetGroup() == null) { + addBrokenRule("Reset group missing for variable : " + variable.getName(), variable); + } else { + Map groupsMap = dataset.getGroupsMap(); + if (!groupsMap.containsKey(variable.getResetGroup().getName())) + addBrokenRule("Reset group \"" + variable.getResetGroup().getName() + "\" not found for variable : " + variable.getName(), variable); + } + byte incrementType = variable.getIncrementType(); + if (incrementType == 4) + if (variable.getIncrementGroup() == null) { + addBrokenRule("Increment group missing for variable : " + variable.getName(), variable); + } else { + Map groupsMap = dataset.getGroupsMap(); + if (!groupsMap.containsKey(variable.getIncrementGroup().getName())) + addBrokenRule("Increment group \"" + variable.getIncrementGroup().getName() + "\" not found for variable : " + variable.getName(), variable); + } + if (!isMainDataset) { + if (resetType == 3 || resetType == 2) + addBrokenRule("Variable " + variable.getName() + " of dataset " + dataset.getName() + " cannot have Column or Page reset type.", variable); + if (incrementType == 3 || incrementType == 2) + addBrokenRule("Variable " + variable.getName() + " of dataset " + dataset.getName() + " cannot have Column or Page increment type.", variable); + } + } + } + } + + private void verifyGroups(JRDesignDataset dataset) { + JRGroup[] groups = dataset.getGroups(); + if (groups != null && groups.length > 0) { + boolean isMainDataset = dataset.isMainDataset(); + for (int index = 0; index < groups.length; index++) { + JRGroup group = groups[index]; + if (group.getName() == null || group.getName().trim().length() == 0) + addBrokenRule("Group name missing.", group); + if (isMainDataset) { + verifyGroupHeaderAndFooter(group); + } else if (group.getGroupHeader() != null || group.getGroupFooter() != null) { + addBrokenRule("Group " + group.getName() + " cannot have header or footer sections.", group); + } + JRExpression expression = group.getExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) + addBrokenRule("Class not set for group expression : " + group.getName(), expression); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + if (isMainDataset) { + verifyBand(group.getGroupHeader()); + verifyBand(group.getGroupFooter()); + } + } + } + } + + private void verifyGroupHeaderAndFooter(JRGroup group) { + if (this.jasperDesign.isTitleNewPage()) { + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((group.getGroupHeader() != null) ? group.getGroupHeader().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getPageFooter() != null) ? this.jasperDesign.getPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The '" + group.getName() + "' group header section, the page and column headers and footers and the margins do not fit the page height.", group.getGroupHeader()); + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((group.getGroupFooter() != null) ? group.getGroupFooter().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getPageFooter() != null) ? this.jasperDesign.getPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The '" + group.getName() + "' group footer section, the page and column headers and footers and the margins do not fit the page height.", group.getGroupFooter()); + } else { + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getTitle() != null) ? this.jasperDesign.getTitle().getHeight() : 0) + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((group.getGroupHeader() != null) ? group.getGroupHeader().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getPageFooter() != null) ? this.jasperDesign.getPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The '" + group.getName() + "' group header section, the title, the page and column headers and footers and the margins do not fit the first page height.", group.getGroupHeader()); + if (this.jasperDesign.getTopMargin() + ((this.jasperDesign.getTitle() != null) ? this.jasperDesign.getTitle().getHeight() : 0) + ((this.jasperDesign.getPageHeader() != null) ? this.jasperDesign.getPageHeader().getHeight() : 0) + ((this.jasperDesign.getColumnHeader() != null) ? this.jasperDesign.getColumnHeader().getHeight() : 0) + ((group.getGroupFooter() != null) ? group.getGroupFooter().getHeight() : 0) + ((this.jasperDesign.getColumnFooter() != null) ? this.jasperDesign.getColumnFooter().getHeight() : 0) + ((this.jasperDesign.getPageFooter() != null) ? this.jasperDesign.getPageFooter().getHeight() : 0) + this.jasperDesign.getBottomMargin() > this.jasperDesign.getPageHeight()) + addBrokenRule("The '" + group.getName() + "' group footer section, the title, the page and column headers and footers and the margins do not fit the first page height.", group.getGroupFooter()); + } + } + + private void verifyBand(JRBand band) { + if (band != null) { + JRElement[] elements = band.getElements(); + if (elements != null && elements.length > 0) { + JRExpression expression = band.getPrintWhenExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for band \"print when\" expression.", expression); + } else if (!Boolean.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for band \"print when\" expression. Use java.lang.Boolean instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + for (int index = 0; index < elements.length; index++) { + JRElement element = elements[index]; + verifyPrintWhenExpr(element); + if (element.getY() + element.getHeight() > band.getHeight()) + addBrokenRule("Warning : Element bottom reaches outside band area : y=" + element.getY() + " height=" + element.getHeight() + " band-height=" + band.getHeight(), element); + verifyElement(element); + } + } + } + } + + protected void verifyElement(JRElement element) { + if (element instanceof JRStaticText) { + verifyStaticText((JRStaticText)element); + } else if (element instanceof JRTextField) { + verifyTextField((JRTextField)element); + } else if (element instanceof JRImage) { + verifyImage((JRImage)element); + } else if (element instanceof JRSubreport) { + verifySubreport((JRSubreport)element); + } else if (element instanceof JRCrosstab) { + verifyCrosstab((JRDesignCrosstab)element); + } else if (element instanceof JRChart) { + verifyChart((JRChart)element); + } else if (element instanceof JRFrame) { + verifyFrame((JRFrame)element); + } + } + + private void verifyPrintWhenExpr(JRElement element) { + JRExpression expression = element.getPrintWhenExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for element \"print when\" expression.", expression); + } else if (!Boolean.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for element \"print when\" expression. Use java.lang.Boolean instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } + + private void verifyStaticText(JRStaticText staticText) { + verifyReportElement((JRElement)staticText); + verifyFont((JRFont)staticText); + } + + private void verifyTextField(JRTextField textField) { + verifyReportElement((JRElement)textField); + verifyFont((JRFont)textField); + verifyAnchor((JRAnchor)textField); + verifyHyperlink((JRHyperlink)textField); + if (textField != null) { + JRExpression expression = textField.getExpression(); + if (expression != null) + try { + String className = expression.getValueClassName(); + if (className == null) { + addBrokenRule("Class not set for text field expression.", expression); + } else if (Arrays.binarySearch((Object[])getTextFieldClassNames(), className) < 0) { + addBrokenRule("Class \"" + className + "\" not supported for text field expression.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } + } + + private void verifyFont(JRFont font) { + JRReportFont reportFont = font.getReportFont(); + if (reportFont != null && reportFont.getName() != null) { + Map fontsMap = this.jasperDesign.getFontsMap(); + if (!fontsMap.containsKey(reportFont.getName())) + addBrokenRule("Report font not found : " + reportFont.getName(), font); + } + } + + private void verifyAnchor(JRAnchor anchor) { + if (anchor != null) { + JRExpression expression = anchor.getAnchorNameExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for anchor name expression.", expression); + } else if (!String.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for anchor name expression. Use java.lang.String instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + if (anchor.getBookmarkLevel() != 0 && anchor.getBookmarkLevel() < 1) + addBrokenRule("Bookmark level should be 0 or greater than 0", anchor); + } + } + + private void verifyHyperlink(JRHyperlink hyperlink) { + if (hyperlink != null) { + JRExpression expression = hyperlink.getHyperlinkReferenceExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for hyperlink reference expression.", expression); + } else if (!String.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for hyperlink reference expression. Use java.lang.String instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + expression = hyperlink.getHyperlinkAnchorExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for hyperlink anchor expression.", expression); + } else if (!String.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for hyperlink anchor expression. Use java.lang.String instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + expression = hyperlink.getHyperlinkPageExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for hyperlink page expression.", expression); + } else if (!Integer.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for hyperlink page expression. Use java.lang.Integer instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + expression = hyperlink.getHyperlinkTooltipExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for hyperlink tooltip expression.", expression); + } else if (!String.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for hyperlink tooltip expression. Use java.lang.String instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + JRHyperlinkParameter[] parameters = hyperlink.getHyperlinkParameters(); + if (parameters != null) + for (int i = 0; i < parameters.length; i++) { + JRHyperlinkParameter parameter = parameters[i]; + verifyHyperlinkParameter(parameter); + } + } + } + + protected void verifyHyperlinkParameter(JRHyperlinkParameter parameter) { + if (parameter != null) { + String name = parameter.getName(); + if (name == null || name.length() == 0) + addBrokenRule("Hyperlink parameter name missing.", parameter); + } + } + + private void verifyImage(JRImage image) { + verifyReportElement((JRElement)image); + verifyAnchor((JRAnchor)image); + verifyHyperlink((JRHyperlink)image); + if (image != null) { + JRExpression expression = image.getExpression(); + if (expression != null) + try { + String className = expression.getValueClassName(); + if (className == null) { + addBrokenRule("Class not set for image expression.", expression); + } else if (Arrays.binarySearch((Object[])getImageClassNames(), className) < 0) { + addBrokenRule("Class \"" + className + "\" not supported for image expression.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } + } + + private void verifySubreport(JRSubreport subreport) { + if (subreport != null) { + verifyReportElement((JRElement)subreport); + JRExpression expression = subreport.getExpression(); + if (expression != null) + try { + String className = expression.getValueClassName(); + if (className == null) { + addBrokenRule("Class not set for subreport expression.", expression); + } else if (Arrays.binarySearch((Object[])getSubreportClassNames(), className) < 0) { + addBrokenRule("Class \"" + className + "\" not supported for subreport expression.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + expression = subreport.getParametersMapExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for subreport parameters map expression.", expression); + } else if (!Map.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for subreport parameters map expression. Use java.util.Map instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + JRSubreportParameter[] parameters = subreport.getParameters(); + if (parameters != null && parameters.length > 0) + for (int index = 0; index < parameters.length; index++) { + JRSubreportParameter parameter = parameters[index]; + if (parameter.getName() == null || parameter.getName().trim().length() == 0) + addBrokenRule("Subreport parameter name missing.", expression); + expression = parameter.getExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) + addBrokenRule("Class not set for subreport parameter expression : " + parameter.getName() + ". Use java.lang.Object class.", expression); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } + if (subreport.getConnectionExpression() != null && subreport.getDataSourceExpression() != null) + addBrokenRule("Subreport cannot have both connection expresion and data source expression.", subreport); + expression = subreport.getConnectionExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for subreport connection expression.", expression); + } else if (!Connection.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for subreport connection expression. Use java.sql.Connection instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + expression = subreport.getDataSourceExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for subreport data source expression.", expression); + } else if (!JRDataSource.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for subreport data source expression. Use net.sf.jasperreports.engine.JRDataSource instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + JRSubreportReturnValue[] returnValues = subreport.getReturnValues(); + if (returnValues != null && returnValues.length > 0) + for (int i = 0; i < returnValues.length; i++) { + JRSubreportReturnValue returnValue = returnValues[i]; + if (returnValue.getSubreportVariable() == null || returnValue.getSubreportVariable().trim().length() == 0) + addBrokenRule("Subreport return value variable name missing.", returnValue); + if (returnValue.getToVariable() == null || returnValue.getToVariable().trim().length() == 0) + addBrokenRule("Subreport return value to variable name missing.", returnValue); + if (!this.jasperDesign.getVariablesMap().containsKey(returnValue.getToVariable())) + addBrokenRule("Subreport return value to variable not found.", returnValue); + } + } + } + + private static synchronized String[] getTextFieldClassNames() { + if (textFieldClassNames == null) { + textFieldClassNames = new String[] { + Boolean.class.getName(), Byte.class.getName(), Date.class.getName(), Timestamp.class.getName(), Time.class.getName(), Double.class.getName(), Float.class.getName(), Integer.class.getName(), Long.class.getName(), Short.class.getName(), + BigDecimal.class.getName(), Number.class.getName(), String.class.getName() }; + Arrays.sort((Object[])textFieldClassNames); + } + return textFieldClassNames; + } + + private static synchronized String[] getImageClassNames() { + if (imageClassNames == null) { + imageClassNames = new String[] { String.class.getName(), File.class.getName(), URL.class.getName(), InputStream.class.getName(), Image.class.getName(), JRRenderable.class.getName() }; + Arrays.sort((Object[])imageClassNames); + } + return imageClassNames; + } + + private static synchronized String[] getSubreportClassNames() { + if (subreportClassNames == null) { + subreportClassNames = new String[] { String.class.getName(), File.class.getName(), URL.class.getName(), InputStream.class.getName(), JasperReport.class.getName() }; + Arrays.sort((Object[])subreportClassNames); + } + return subreportClassNames; + } + + private void verifyCrosstab(JRDesignCrosstab crosstab) { + verifyReportElement((JRElement)crosstab); + verifyParameters(crosstab); + JRCrosstabDataset dataset = crosstab.getDataset(); + if (dataset == null) { + addBrokenRule("Crosstab dataset missing.", crosstab); + } else { + verifyElementDataset((JRElementDataset)dataset); + } + verifyCellContents(crosstab.getHeaderCell(), "crosstab cell"); + JRCrosstabRowGroup[] rowGroups = crosstab.getRowGroups(); + if (rowGroups == null || rowGroups.length == 0) { + addBrokenRule("Crosstab should have at least one row group.", crosstab); + } else { + for (int i = 0; i < rowGroups.length; i++) + verifyCrosstabRowGroup(rowGroups[i]); + } + JRCrosstabColumnGroup[] colGroups = crosstab.getColumnGroups(); + if (colGroups == null || colGroups.length == 0) { + addBrokenRule("Crosstab should have at least one column group.", crosstab); + } else { + for (int i = 0; i < colGroups.length; i++) + verifyCrosstabColumnGroup(colGroups[i]); + } + JRCrosstabMeasure[] measures = crosstab.getMeasures(); + if (measures == null || measures.length == 0) { + addBrokenRule("Crosstab should have at least one measure.", crosstab); + } else { + for (int i = 0; i < measures.length; i++) + verifyCrosstabMeasure(measures[i]); + } + verifyCrosstabCells(crosstab); + verifyCellContents(crosstab.getWhenNoDataCell(), "when no data cell"); + verifyExpressions(crosstab); + } + + private void verifyParameters(JRDesignCrosstab crosstab) { + JRExpression paramMapExpression = crosstab.getParametersMapExpression(); + if (paramMapExpression != null) + try { + Class clazz = paramMapExpression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for crosstab parameters map expression.", paramMapExpression); + } else if (!Map.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for crosstab parameters map expression. Use java.util.Map instead.", paramMapExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, paramMapExpression); + } + JRCrosstabParameter[] parameters = crosstab.getParameters(); + if (parameters != null) + for (int i = 0; i < parameters.length; i++) { + JRCrosstabParameter parameter = parameters[i]; + String paramName = parameter.getName(); + if (paramName == null || paramName.length() == 0) + addBrokenRule("Missing parameter name for crosstab.", parameter); + JRExpression expression = parameter.getExpression(); + Class expressionClass = null; + if (expression != null) + try { + expressionClass = expression.getValueClass(); + if (expressionClass == null) + addBrokenRule("Expression class not set for crosstab parameter " + paramName + ".", expression); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + try { + Class valueClass = parameter.getValueClass(); + if (valueClass == null) { + addBrokenRule("Class not set for crosstab parameter " + paramName + ".", parameter); + } else if (expressionClass != null && !valueClass.isAssignableFrom(expressionClass)) { + addBrokenRule("Incompatible expression class for crosstab parameter " + paramName + ".", parameter); + } + } catch (Exception e) { + addBrokenRule(e, parameter); + } + } + } + + private void verifyCrosstabRowGroup(JRCrosstabRowGroup group) { + verifyCrosstabGroup((JRCrosstabGroup)group); + } + + private void verifyCrosstabColumnGroup(JRCrosstabColumnGroup group) { + verifyCrosstabGroup((JRCrosstabGroup)group); + } + + private void verifyCrosstabGroup(JRCrosstabGroup group) { + String groupName = group.getName(); + if (groupName == null || groupName.length() == 0) + addBrokenRule("Crosstab group name missing.", group); + verifyCrosstabBucket(group); + verifyCellContents(group.getHeader(), groupName + " header"); + if (group.hasTotal()) + verifyCellContents(group.getTotalHeader(), groupName + " total header"); + } + + private void verifyCrosstabBucket(JRCrosstabGroup group) { + JRCrosstabBucket bucket = group.getBucket(); + JRExpression expression = bucket.getExpression(); + Class expressionClass = null; + if (expression == null) { + addBrokenRule("Crosstab bucket expression missing for group " + group.getName() + ".", bucket); + } else { + try { + expressionClass = expression.getValueClass(); + if (expressionClass == null) + addBrokenRule("Crosstab bucket expression class missing for group " + group.getName() + ".", expression); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } + try { + Class valueClass = (expression == null) ? null : expression.getValueClass(); + if (valueClass == null) { + addBrokenRule("Crosstab bucket value class missing for group " + group.getName() + ".", bucket); + } else if (expressionClass != null && !valueClass.isAssignableFrom(expressionClass)) { + addBrokenRule("The class of the expression is not compatible with the class of the crosstab bucket for group " + group.getName() + ".", expression); + } + JRExpression comparatorExpression = bucket.getComparatorExpression(); + if (comparatorExpression == null) { + if (valueClass != null && !Comparable.class.isAssignableFrom(valueClass)) + addBrokenRule("No comparator expression specified and the value class is not comparable for crosstab group " + group.getName() + ".", bucket); + } else { + try { + Class comparatorClass = comparatorExpression.getValueClass(); + if (comparatorClass == null) { + addBrokenRule("Crosstab bucket comparator expression class missing for group " + group.getName() + ".", comparatorExpression); + } else if (!Comparator.class.isAssignableFrom(comparatorClass)) { + addBrokenRule("The comparator expression should be compatible with java.util.Comparator for crosstab group " + group.getName() + ".", comparatorExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, comparatorExpression); + } + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } + + private void verifyCrosstabCells(JRDesignCrosstab crosstab) { + JRCrosstabCell[][] cells = crosstab.getCells(); + JRCrosstabRowGroup[] rowGroups = crosstab.getRowGroups(); + JRCrosstabColumnGroup[] columnGroups = crosstab.getColumnGroups(); + JRCrosstabCell baseCell = cells[rowGroups.length][columnGroups.length]; + if (baseCell == null || baseCell.getWidth() == null) + addBrokenRule("Crosstab base cell width not specified.", crosstab); + if (baseCell == null || baseCell.getHeight() == null) + addBrokenRule("Crosstab base cell height not specified.", crosstab); + for (int i = rowGroups.length; i >= 0; i--) { + for (int j = columnGroups.length; j >= 0; j--) { + JRCrosstabCell cell = cells[i][j]; + String cellText = getCrosstabCellText(rowGroups, columnGroups, i, j); + if (cell != null) { + JRCellContents contents = cell.getContents(); + if (i < rowGroups.length) { + JRCrosstabCell colCell = cells[rowGroups.length][j]; + if (colCell != null && colCell.getContents().getWidth() != contents.getWidth()) + addBrokenRule("Crosstab " + cellText + " width should be " + colCell.getContents().getWidth() + ".", cell); + } + if (j < columnGroups.length) { + JRCrosstabCell rowCell = cells[i][columnGroups.length]; + if (rowCell != null && rowCell.getContents().getHeight() != contents.getHeight()) + addBrokenRule("Crosstab " + cellText + " height should be " + rowCell.getContents().getHeight() + ".", cell); + } + verifyCellContents(contents, cellText); + } + } + } + } + + private String getCrosstabCellText(JRCrosstabRowGroup[] rowGroups, JRCrosstabColumnGroup[] columnGroups, int rowIndex, int columnIndex) { + String text; + if (rowIndex == rowGroups.length) { + if (columnIndex == columnGroups.length) { + text = "cell"; + } else { + text = columnGroups[columnIndex].getName() + " total cell"; + } + } else if (columnIndex == columnGroups.length) { + text = rowGroups[rowIndex].getName() + " total cell"; + } else { + text = rowGroups[rowIndex].getName() + "," + columnGroups[columnIndex].getName() + " total cell"; + } + return text; + } + + private void verifyCrosstabMeasure(JRCrosstabMeasure measure) { + String measureName = measure.getName(); + if (measureName == null || measureName.trim().length() == 0) + addBrokenRule("Measure name missing.", measure); + byte calculation = measure.getCalculation(); + if (calculation == 8) + addBrokenRule("Crosstab mesures cannot have system calculation", measure); + JRExpression valueExpression = measure.getValueExpression(); + Class expressionClass = null; + if (valueExpression == null) { + addBrokenRule("Missing expression for measure " + measureName, measure); + } else { + try { + expressionClass = valueExpression.getValueClass(); + if (expressionClass == null) + addBrokenRule("Crosstab measure expression class missing for " + measureName + ".", valueExpression); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, valueExpression); + } + } + try { + Class valueClass = measure.getValueClass(); + if (valueClass == null) { + addBrokenRule("Measure value class missing.", measure); + } else if (expressionClass != null && calculation != 1 && calculation != 10 && !valueClass.isAssignableFrom(expressionClass)) { + addBrokenRule("The class of the expression is not compatible with the class of the measure " + measureName + ".", valueExpression); + } + if (measure.getPercentageOfType() != 0) { + Class percentageCalculatorClass = measure.getPercentageCalculatorClass(); + if (percentageCalculatorClass == null) { + if (valueClass != null && !JRPercentageCalculatorFactory.hasBuiltInCalculator(valueClass)) + addBrokenRule("Percentage calculator class needs to be specified for measure " + measureName + ".", measure); + } else if (!JRPercentageCalculator.class.isAssignableFrom(percentageCalculatorClass)) { + addBrokenRule("Incompatible percentage calculator class for measure " + measureName + ".", measure); + } + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, measure); + } + try { + Class incrementerFactoryClass = measure.getIncrementerFactoryClass(); + if (incrementerFactoryClass != null && !JRExtendedIncrementerFactory.class.isAssignableFrom(incrementerFactoryClass)) + addBrokenRule("Crosstab measures need extended incrementers (net.sf.jasperreports.engine.fill.JRExtendedIncrementerFactory).", measure); + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, measure); + } + } + + private void verifyExpressions(JRDesignCrosstab crosstab) { + verifyExpressions(this.expressionCollector.getExpressions((JRCrosstab)crosstab), crosstab.getParametersMap(), new HashMap(), crosstab.getVariablesMap()); + } + + private void verifyChart(JRChart chart) { + verifyReportElement((JRElement)chart); + if (chart.getEvaluationTime() == 7) + addBrokenRule("Charts do not support Auto evaluation time.", chart); + JRChartDataset dataset = chart.getDataset(); + if (dataset == null) { + addBrokenRule("Chart dataset missing.", chart); + } else { + dataset.validate(this); + } + } + + private void verifyCellContents(JRCellContents contents, String cellText) { + if (contents != null) { + JRElement[] elements = contents.getElements(); + if (elements != null && elements.length > 0) { + int topPadding = 0; + int leftPadding = 0; + int bottomPadding = 0; + int rightPadding = 0; + JRLineBox box = contents.getLineBox(); + if (box != null) { + topPadding = box.getTopPadding().intValue(); + leftPadding = box.getLeftPadding().intValue(); + bottomPadding = box.getBottomPadding().intValue(); + rightPadding = box.getRightPadding().intValue(); + } + int cellWidth = contents.getWidth(); + boolean widthCalculated = (cellWidth != Integer.MIN_VALUE); + int avlblWidth = cellWidth - leftPadding - rightPadding; + int cellHeight = contents.getHeight(); + boolean heightCalculated = (cellHeight != Integer.MIN_VALUE); + int avlblHeight = cellHeight - topPadding - bottomPadding; + for (int i = 0; i < elements.length; i++) { + JRElement element = elements[i]; + verifyPrintWhenExpr(element); + if (widthCalculated && element.getX() + element.getWidth() > avlblWidth) + addBrokenRule("Element reaches outside " + cellText + " width: x=" + element.getX() + ", width=" + element.getWidth() + ", available width=" + avlblWidth + ".", element); + if (heightCalculated && element.getY() + element.getHeight() > avlblHeight) + addBrokenRule("Element reaches outside " + cellText + " height: y=" + element.getY() + ", height=" + element.getHeight() + ", available height=" + avlblHeight + ".", element); + if (element instanceof JRStaticText) { + verifyStaticText((JRStaticText)element); + } else if (element instanceof JRTextField) { + JRTextField textField = (JRTextField)element; + if (textField.getEvaluationTime() != 1) + addBrokenRule("Elements with delayed evaluation time are not supported inside crosstab cells.", textField); + verifyTextField(textField); + } else if (element instanceof JRImage) { + JRImage image = (JRImage)element; + if (image.getEvaluationTime() != 1) + addBrokenRule("Elements with delayed evaluation time are not supported inside crosstab cells.", image); + verifyImage(image); + } else if (element instanceof JRFrame) { + verifyFrame((JRFrame)element); + } else if (element instanceof JRSubreport) { + addBrokenRule("Subreports are not allowed inside crosstab cells.", element); + } else if (element instanceof JRCrosstab) { + addBrokenRule("Crosstabs are not allowed inside crosstab cells.", element); + } else if (element instanceof JRChart) { + addBrokenRule("Charts are not allowed inside crosstab cells.", element); + } + } + } + } + } + + private void verifyElementDataset(JRElementDataset dataset) { + JRDatasetRun datasetRun = dataset.getDatasetRun(); + if (datasetRun != null) { + byte incrementType = dataset.getIncrementType(); + if (incrementType == 2 || incrementType == 3) + addBrokenRule("Chart datasets with dataset run cannont have Column or Page increment type.", dataset); + byte resetType = dataset.getResetType(); + if (resetType == 2 || resetType == 3) { + addBrokenRule("Chart datasets with dataset run cannont have Column or Page reset type.", dataset); + } else if (resetType != 1) { + + } + verifyDatasetRun(datasetRun); + } + JRExpression incrementWhenExpression = dataset.getIncrementWhenExpression(); + if (incrementWhenExpression != null) + try { + Class valueClass = incrementWhenExpression.getValueClass(); + if (valueClass == null) { + addBrokenRule("Class not set for data set \"increment when\" expression.", incrementWhenExpression); + } else if (!Boolean.class.isAssignableFrom(valueClass)) { + addBrokenRule("Class " + valueClass + " not supported for dataset \"increment when\" expression. Use java.lang.Boolean instead.", incrementWhenExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, incrementWhenExpression); + } + } + + private void verifyDatasetRun(JRDatasetRun datasetRun) { + JRDesignDataset dataset = null; + String datasetName = datasetRun.getDatasetName(); + if (datasetName == null || datasetName.length() == 0) { + addBrokenRule("Dataset name is missing for dataset run.", datasetRun); + } else { + dataset = (JRDesignDataset)this.jasperDesign.getDatasetMap().get(datasetName); + if (dataset == null) + addBrokenRule("Unknown dataset name " + datasetName + ".", datasetRun); + } + JRExpression parametersMapExpression = datasetRun.getParametersMapExpression(); + if (parametersMapExpression != null) + try { + Class clazz = parametersMapExpression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for dataset " + datasetName + " parameters map expression.", parametersMapExpression); + } else if (!Map.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for dataset " + datasetName + " parameters map expression. Use java.util.Map instead.", parametersMapExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, parametersMapExpression); + } + JRDatasetParameter[] parameters = datasetRun.getParameters(); + if (parameters != null && parameters.length > 0) + for (int index = 0; index < parameters.length; index++) { + JRDatasetParameter parameter = parameters[index]; + String paramName = parameter.getName(); + if (paramName == null || paramName.trim().length() == 0) + addBrokenRule("Dataset " + datasetName + " parameter name missing.", parameter); + JRParameter datasetParam = null; + if (dataset != null) { + datasetParam = (JRParameter)dataset.getParametersMap().get(paramName); + if (datasetParam == null) + addBrokenRule("Unknown parameter " + paramName + " in dataset " + datasetName + ".", parameter); + } + JRExpression expression = parameter.getExpression(); + if (expression != null) + try { + Class clazz = expression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for dataset " + datasetName + " parameter expression : " + paramName + ".", expression); + } else if (datasetParam != null && !datasetParam.getValueClass().isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for parameter " + paramName + " of dataset " + datasetName + ". Use " + datasetParam.getValueClass() + " instead.", expression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, expression); + } + } + JRExpression connectionExpression = datasetRun.getConnectionExpression(); + JRExpression dataSourceExpression = datasetRun.getDataSourceExpression(); + if (connectionExpression != null && dataSourceExpression != null) + addBrokenRule("Dataset " + datasetName + " cannot have both connection expresion and data source expression.", datasetRun); + if (connectionExpression != null) + try { + Class clazz = connectionExpression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for dataset " + datasetName + " connection expression.", connectionExpression); + } else if (!Connection.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for dataset " + datasetName + " connection expression. Use java.sql.Connection instead.", connectionExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, connectionExpression); + } + if (dataSourceExpression != null) + try { + Class clazz = dataSourceExpression.getValueClass(); + if (clazz == null) { + addBrokenRule("Class not set for dataset " + datasetName + " data source expression.", dataSourceExpression); + } else if (!JRDataSource.class.isAssignableFrom(clazz)) { + addBrokenRule("Class " + clazz + " not supported for dataset " + datasetName + " data source expression. Use net.sf.jasperreports.engine.JRDataSource instead.", dataSourceExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, dataSourceExpression); + } + } + + private void verifyDatasets() { + JRDataset[] datasets = this.jasperDesign.getDatasets(); + if (datasets != null && datasets.length > 0) + for (int i = 0; i < datasets.length; i++) { + JRDesignDataset dataset = (JRDesignDataset)datasets[i]; + if (dataset.getName() == null || dataset.getName().trim().length() == 0) + addBrokenRule("Dataset name is missing.", dataset); + verifyDataset(dataset); + } + } + + private void verifyDataset(JRDesignDataset dataset) { + verifyExpressions(dataset); + verifyParameters(dataset); + verifyQuery(dataset); + verifyFields(dataset); + verifySortFields(dataset); + verifyVariables(dataset); + verifyGroups(dataset); + JRExpression filterExpression = dataset.getFilterExpression(); + if (filterExpression != null) + try { + Class valueClass = filterExpression.getValueClass(); + if (valueClass == null) { + addBrokenRule("Class not set for filter expression.", filterExpression); + } else if (!Boolean.class.isAssignableFrom(valueClass)) { + addBrokenRule("Class " + valueClass + " not supported for filter expression. Use java.lang.Boolean instead.", filterExpression); + } + } catch (JRRuntimeException e) { + addBrokenRule((Exception)e, filterExpression); + } + } + + private void verifyFrame(JRFrame frame) { + verifyReportElement((JRElement)frame); + JRElement[] elements = frame.getElements(); + if (elements != null && elements.length > 0) { + int topPadding = frame.getLineBox().getTopPadding().intValue(); + int leftPadding = frame.getLineBox().getLeftPadding().intValue(); + int bottomPadding = frame.getLineBox().getBottomPadding().intValue(); + int rightPadding = frame.getLineBox().getRightPadding().intValue(); + int avlblWidth = frame.getWidth() - leftPadding - rightPadding; + int avlblHeight = frame.getHeight() - topPadding - bottomPadding; + for (int i = 0; i < elements.length; i++) { + JRElement element = elements[i]; + if (element.getX() + element.getWidth() > avlblWidth) + addBrokenRule("Element reaches outside frame width: x=" + element.getX() + ", width=" + element.getWidth() + ", available width=" + avlblWidth + ".", element); + if (element.getY() + element.getHeight() > avlblHeight) + addBrokenRule("Element reaches outside frame height: y=" + element.getY() + ", height=" + element.getHeight() + ", available height=" + avlblHeight + ".", element); + verifyElement(element); + } + } + } + + public void verify(JRCategoryDataset dataset) { + verifyElementDataset((JRElementDataset)dataset); + JRCategorySeries[] series = dataset.getSeries(); + if (series != null) + for (int i = 0; i < series.length; i++) + verify(series[i]); + } + + protected void verify(JRCategorySeries series) { + verifyHyperlink(series.getItemHyperlink()); + } + + public void verify(JRPieDataset dataset) { + verifyElementDataset((JRElementDataset)dataset); + verifyHyperlink(dataset.getSectionHyperlink()); + } + + public void verify(JRHighLowDataset dataset) { + verifyElementDataset((JRElementDataset)dataset); + verifyHyperlink(dataset.getItemHyperlink()); + } + + public void verify(JRTimePeriodDataset dataset) { + verifyElementDataset((JRElementDataset)dataset); + JRTimePeriodSeries[] series = dataset.getSeries(); + if (series != null) + for (int i = 0; i < series.length; i++) + verify(series[i]); + } + + protected void verify(JRTimePeriodSeries series) { + verifyHyperlink(series.getItemHyperlink()); + } + + public void verify(JRTimeSeriesDataset dataset) { + verifyElementDataset((JRElementDataset)dataset); + JRTimeSeries[] series = dataset.getSeries(); + if (series != null) + for (int i = 0; i < series.length; i++) + verify(series[i]); + } + + protected void verify(JRTimeSeries series) { + verifyHyperlink(series.getItemHyperlink()); + } + + public void verify(JRValueDataset dataset) {} + + public void verify(JRXyDataset dataset) { + verifyElementDataset((JRElementDataset)dataset); + JRXySeries[] series = dataset.getSeries(); + if (series != null) + for (int i = 0; i < series.length; i++) + verify(series[i]); + } + + protected void verify(JRXySeries series) { + verifyHyperlink(series.getItemHyperlink()); + } + + public void verify(JRXyzDataset dataset) { + verifyElementDataset((JRElementDataset)dataset); + JRXyzSeries[] series = dataset.getSeries(); + if (series != null) + for (int i = 0; i < series.length; i++) + verify(series[i]); + } + + protected void verify(JRXyzSeries series) { + verifyHyperlink(series.getItemHyperlink()); + } + + protected void verifyReportElement(JRElement element) { + verifyProperyExpressions(element.getPropertyExpressions()); + } + + protected void verifyProperyExpressions(JRPropertyExpression[] propertyExpressions) { + if (propertyExpressions != null) + for (int i = 0; i < propertyExpressions.length; i++) + verifyPropertyExpression(propertyExpressions[i]); + } + + protected void verifyPropertyExpression(JRPropertyExpression propertyExpression) { + String name = propertyExpression.getName(); + if (name == null) + addBrokenRule("Property name missing.", propertyExpression); + JRExpression expr = propertyExpression.getValueExpression(); + if (expr == null) { + addBrokenRule("Property value expression missing.", propertyExpression); + } else { + String valueExprClassName = expr.getValueClassName(); + if (valueExprClassName == null) { + addBrokenRule("Class not set for property value expression.", expr); + } else if (!String.class.getName().equals(valueExprClassName)) { + addBrokenRule("Class " + valueExprClassName + " not supported for anchor name expression. Use java.lang.String instead.", expr); + } + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/JasperDesign.java b/hrmsEjb/net/sf/jasperreports/engine/design/JasperDesign.java new file mode 100644 index 0000000..a383c3c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/JasperDesign.java @@ -0,0 +1,633 @@ +package net.sf.jasperreports.engine.design; + +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRReport; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.base.JRBaseReport; +import net.sf.jasperreports.engine.design.events.PropagationChangeListener; +import net.sf.jasperreports.engine.util.JRElementsVisitor; +import net.sf.jasperreports.engine.util.JRVisitorSupport; + +public class JasperDesign extends JRBaseReport { + private static final long serialVersionUID = 10200L; + + public static final String PROPERTY_BACKGROUND = "background"; + + public static final String PROPERTY_BOTTOM_MARGIN = "bottomMargin"; + + public static final String PROPERTY_COLUMN_COUNT = "columnCount"; + + public static final String PROPERTY_COLUMN_FOOTER = "columnFooter"; + + public static final String PROPERTY_COLUMN_HEADER = "columnHeader"; + + public static final String PROPERTY_COLUMN_SPACING = "columnSpacing"; + + public static final String PROPERTY_COLUMN_WIDTH = "columnWidth"; + + public static final String PROPERTY_DATASETS = "datasets"; + + public static final String PROPERTY_DEFAULT_FONT = "defaultFont"; + + public static final String PROPERTY_DEFAULT_STLYE = "defaultStyle"; + + public static final String PROPERTY_DETAIL = "detail"; + + public static final String PROPERTY_FLOAT_COLUMN_FOOTER = "floatColumnFooter"; + + public static final String PROPERTY_FONTS = "fonts"; + + public static final String PROPERTY_FORMAT_FACTORY_CLASS = "formatFactoryClass"; + + public static final String PROPERTY_IGNORE_PAGINATION = "ignorePagination"; + + public static final String PROPERTY_IMPORTS = "imports"; + + public static final String PROPERTY_LANGUAGE = "language"; + + public static final String PROPERTY_LAST_PAGE_FOOTER = "lastPageFooter"; + + public static final String PROPERTY_LEFT_MARGIN = "leftMargin"; + + public static final String PROPERTY_MAIN_DATASET = "mainDataset"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_NO_DATA = "noData"; + + public static final String PROPERTY_ORIENTATION = "orientation"; + + public static final String PROPERTY_PAGE_FOOTER = "pageFooter"; + + public static final String PROPERTY_PAGE_HEADER = "pageHeader"; + + public static final String PROPERTY_PAGE_HEIGHT = "pageHeight"; + + public static final String PROPERTY_PAGE_WIDTH = "pageWidth"; + + public static final String PROPERTY_PRINT_ORDER = "printOrder"; + + public static final String PROPERTY_RIGHT_MARGIN = "rightMargin"; + + public static final String PROPERTY_STYLES = "styles"; + + public static final String PROPERTY_SUMMARY = "summary"; + + public static final String PROPERTY_SUMMARY_NEW_PAGE = "summaryNewPage"; + + public static final String PROPERTY_TEMPLATES = "templates"; + + public static final String PROPERTY_TITLE = "title"; + + public static final String PROPERTY_TITLE_NEW_PAGE = "titleNewPage"; + + public static final String PROPERTY_TOP_MARGIN = "topMargin"; + + private List templateList = new ArrayList(); + + private Map fontsMap = new HashMap(); + + private List fontsList = new ArrayList(); + + private Map stylesMap = new HashMap(); + + private List stylesList = new ArrayList(); + + private JRDesignDataset mainDesignDataset; + + private Map datasetMap = new HashMap(); + + private List datasetList = new ArrayList(); + + public JasperDesign() { + setMainDataset(new JRDesignDataset(true)); + } + + public void setName(String name) { + Object old = this.name; + this.name = name; + this.mainDesignDataset.setName(name); + getEventSupport().firePropertyChange("name", old, this.name); + } + + public void setLanguage(String language) { + Object old = this.language; + this.language = language; + getEventSupport().firePropertyChange("language", old, this.language); + } + + public void setColumnCount(int columnCount) { + int old = this.columnCount; + this.columnCount = columnCount; + getEventSupport().firePropertyChange("columnCount", old, this.columnCount); + } + + public void setPrintOrder(byte printOrder) { + int old = this.printOrder; + this.printOrder = printOrder; + getEventSupport().firePropertyChange("printOrder", old, this.printOrder); + } + + public void setPageWidth(int pageWidth) { + int old = this.pageWidth; + this.pageWidth = pageWidth; + getEventSupport().firePropertyChange("pageWidth", old, this.pageWidth); + } + + public void setPageHeight(int pageHeight) { + int old = this.pageHeight; + this.pageHeight = pageHeight; + getEventSupport().firePropertyChange("pageHeight", old, this.pageHeight); + } + + public void setOrientation(byte orientation) { + int old = this.orientation; + this.orientation = orientation; + getEventSupport().firePropertyChange("orientation", old, this.orientation); + } + + public void setColumnWidth(int columnWidth) { + int old = columnWidth; + this.columnWidth = columnWidth; + getEventSupport().firePropertyChange("columnWidth", old, this.columnWidth); + } + + public void setColumnSpacing(int columnSpacing) { + int old = this.columnSpacing; + this.columnSpacing = columnSpacing; + getEventSupport().firePropertyChange("columnSpacing", old, this.columnSpacing); + } + + public void setLeftMargin(int leftMargin) { + int old = this.leftMargin; + this.leftMargin = leftMargin; + getEventSupport().firePropertyChange("leftMargin", old, this.leftMargin); + } + + public void setRightMargin(int rightMargin) { + int old = this.rightMargin; + this.rightMargin = rightMargin; + getEventSupport().firePropertyChange("rightMargin", old, this.rightMargin); + } + + public void setTopMargin(int topMargin) { + int old = this.topMargin; + this.topMargin = topMargin; + getEventSupport().firePropertyChange("topMargin", old, this.topMargin); + } + + public void setBottomMargin(int bottomMargin) { + int old = this.bottomMargin; + this.bottomMargin = bottomMargin; + getEventSupport().firePropertyChange("bottomMargin", old, this.bottomMargin); + } + + public void setBackground(JRBand background) { + Object old = this.background; + this.background = background; + setBandOrigin(this.background, (byte)1); + getEventSupport().firePropertyChange("background", old, this.background); + } + + public void setTitle(JRBand title) { + Object old = this.title; + this.title = title; + setBandOrigin(this.title, (byte)2); + getEventSupport().firePropertyChange("title", old, this.title); + } + + public void setTitleNewPage(boolean isTitleNewPage) { + boolean old = this.isTitleNewPage; + this.isTitleNewPage = isTitleNewPage; + getEventSupport().firePropertyChange("titleNewPage", old, this.isTitleNewPage); + } + + public void setSummary(JRBand summary) { + Object old = this.summary; + this.summary = summary; + setBandOrigin(this.summary, (byte)11); + getEventSupport().firePropertyChange("summary", old, this.summary); + } + + public void setNoData(JRBand noData) { + Object old = this.noData; + this.noData = noData; + setBandOrigin(this.noData, (byte)12); + getEventSupport().firePropertyChange("noData", old, this.noData); + } + + public void setSummaryNewPage(boolean isSummaryNewPage) { + boolean old = this.isSummaryNewPage; + this.isSummaryNewPage = isSummaryNewPage; + getEventSupport().firePropertyChange("summaryNewPage", old, this.isSummaryNewPage); + } + + public void setFloatColumnFooter(boolean isFloatColumnFooter) { + boolean old = this.isFloatColumnFooter; + this.isFloatColumnFooter = isFloatColumnFooter; + getEventSupport().firePropertyChange("floatColumnFooter", old, this.isFloatColumnFooter); + } + + public void setPageHeader(JRBand pageHeader) { + Object old = this.pageHeader; + this.pageHeader = pageHeader; + setBandOrigin(this.pageHeader, (byte)3); + getEventSupport().firePropertyChange("pageHeader", old, this.pageHeader); + } + + public void setPageFooter(JRBand pageFooter) { + Object old = this.pageFooter; + this.pageFooter = pageFooter; + setBandOrigin(this.pageFooter, (byte)9); + getEventSupport().firePropertyChange("pageFooter", old, this.pageFooter); + } + + public void setLastPageFooter(JRBand lastPageFooter) { + Object old = this.lastPageFooter; + this.lastPageFooter = lastPageFooter; + setBandOrigin(this.lastPageFooter, (byte)10); + getEventSupport().firePropertyChange("lastPageFooter", old, this.lastPageFooter); + } + + public void setColumnHeader(JRBand columnHeader) { + Object old = this.columnHeader; + this.columnHeader = columnHeader; + setBandOrigin(this.columnHeader, (byte)4); + getEventSupport().firePropertyChange("columnHeader", old, this.columnHeader); + } + + public void setColumnFooter(JRBand columnFooter) { + Object old = this.columnFooter; + this.columnFooter = columnFooter; + setBandOrigin(this.columnFooter, (byte)8); + getEventSupport().firePropertyChange("columnFooter", old, this.columnFooter); + } + + public void setDetail(JRBand detail) { + Object old = this.detail; + this.detail = detail; + setBandOrigin(this.detail, (byte)6); + getEventSupport().firePropertyChange("detail", old, this.detail); + } + + public void setScriptletClass(String scriptletClass) { + this.mainDesignDataset.setScriptletClass(scriptletClass); + } + + public void setFormatFactoryClass(String formatFactoryClass) { + Object old = this.formatFactoryClass; + this.formatFactoryClass = formatFactoryClass; + getEventSupport().firePropertyChange("formatFactoryClass", old, this.formatFactoryClass); + } + + public void setResourceBundle(String resourceBundle) { + this.mainDesignDataset.setResourceBundle(resourceBundle); + } + + public void addImport(String value) { + if (this.importsSet == null) + this.importsSet = new HashSet(); + if (this.importsSet.add(value)) + getEventSupport().fireCollectionElementAddedEvent("imports", value, this.importsSet.size() - 1); + } + + public void removeImport(String value) { + if (this.importsSet != null) + if (this.importsSet.remove(value)) + getEventSupport().fireCollectionElementRemovedEvent("imports", value, -1); + } + + public void setDefaultFont(JRReportFont font) { + Object old = this.defaultFont; + this.defaultFont = font; + getEventSupport().firePropertyChange("defaultFont", old, this.defaultFont); + } + + public JRReportFont[] getFonts() { + JRReportFont[] fontsArray = new JRReportFont[this.fontsList.size()]; + this.fontsList.toArray((Object[])fontsArray); + return fontsArray; + } + + public List getFontsList() { + return this.fontsList; + } + + public Map getFontsMap() { + return this.fontsMap; + } + + public void addFont(JRReportFont reportFont) throws JRException { + if (this.fontsMap.containsKey(reportFont.getName())) + throw new JRException("Duplicate declaration of report font : " + reportFont.getName()); + this.fontsList.add(reportFont); + this.fontsMap.put(reportFont.getName(), reportFont); + if (reportFont.isDefault()) + setDefaultFont(reportFont); + getEventSupport().fireCollectionElementAddedEvent("fonts", reportFont, this.fontsList.size() - 1); + } + + public JRReportFont removeFont(String propName) { + return removeFont((JRReportFont)this.fontsMap.get(propName)); + } + + public JRReportFont removeFont(JRReportFont reportFont) { + if (reportFont != null) { + if (reportFont.isDefault()) + setDefaultFont((JRReportFont)null); + int idx = this.fontsList.indexOf(reportFont); + if (idx >= 0) { + this.fontsList.remove(idx); + this.fontsMap.remove(reportFont.getName()); + getEventSupport().fireCollectionElementRemovedEvent("fonts", reportFont, idx); + } + } + return reportFont; + } + + public void setDefaultStyle(JRStyle style) { + Object old = this.defaultStyle; + this.defaultStyle = style; + getEventSupport().firePropertyChange("defaultStyle", old, this.defaultStyle); + } + + public JRStyle[] getStyles() { + JRStyle[] stylesArray = new JRStyle[this.stylesList.size()]; + this.stylesList.toArray((Object[])stylesArray); + return stylesArray; + } + + public List getStylesList() { + return this.stylesList; + } + + public Map getStylesMap() { + return this.stylesMap; + } + + public void addStyle(JRStyle style) throws JRException { + if (this.stylesMap.containsKey(style.getName())) + throw new JRException("Duplicate declaration of report style : " + style.getName()); + this.stylesList.add(style); + this.stylesMap.put(style.getName(), style); + if (style.isDefault()) + setDefaultStyle(style); + getEventSupport().fireCollectionElementAddedEvent("styles", style, this.stylesList.size() - 1); + } + + public JRStyle removeStyle(String styleName) { + return removeStyle((JRStyle)this.stylesMap.get(styleName)); + } + + public JRStyle removeStyle(JRStyle style) { + if (style != null) { + if (style.isDefault()) + setDefaultStyle((JRStyle)null); + int idx = this.stylesList.indexOf(style); + if (idx >= 0) { + this.stylesList.remove(idx); + this.stylesMap.remove(style.getName()); + getEventSupport().fireCollectionElementRemovedEvent("styles", style, idx); + } + } + return style; + } + + public List getParametersList() { + return this.mainDesignDataset.getParametersList(); + } + + public Map getParametersMap() { + return this.mainDesignDataset.getParametersMap(); + } + + public void addParameter(JRParameter parameter) throws JRException { + this.mainDesignDataset.addParameter(parameter); + } + + public JRParameter removeParameter(String parameterName) { + return this.mainDesignDataset.removeParameter(parameterName); + } + + public JRParameter removeParameter(JRParameter parameter) { + return this.mainDesignDataset.removeParameter(parameter); + } + + public void setQuery(JRDesignQuery query) { + this.mainDesignDataset.setQuery(query); + } + + public List getFieldsList() { + return this.mainDesignDataset.getFieldsList(); + } + + public Map getFieldsMap() { + return this.mainDesignDataset.getFieldsMap(); + } + + public void addField(JRField field) throws JRException { + this.mainDesignDataset.addField(field); + } + + public JRField removeField(String fieldName) { + return this.mainDesignDataset.removeField(fieldName); + } + + public JRField removeField(JRField field) { + return this.mainDesignDataset.removeField(field); + } + + public List getSortFieldsList() { + return this.mainDesignDataset.getSortFieldsList(); + } + + public void addSortField(JRSortField sortField) throws JRException { + this.mainDesignDataset.addSortField(sortField); + } + + public JRSortField removeSortField(String fieldName) { + return this.mainDesignDataset.removeSortField(fieldName); + } + + public JRSortField removeSortField(JRSortField sortField) { + return this.mainDesignDataset.removeSortField(sortField); + } + + public List getVariablesList() { + return this.mainDesignDataset.getVariablesList(); + } + + public Map getVariablesMap() { + return this.mainDesignDataset.getVariablesMap(); + } + + public void addVariable(JRDesignVariable variable) throws JRException { + this.mainDesignDataset.addVariable(variable); + } + + public JRVariable removeVariable(String variableName) { + return this.mainDesignDataset.removeVariable(variableName); + } + + public JRVariable removeVariable(JRVariable variable) { + return this.mainDesignDataset.removeVariable(variable); + } + + public List getGroupsList() { + return this.mainDesignDataset.getGroupsList(); + } + + public Map getGroupsMap() { + return this.mainDesignDataset.getGroupsMap(); + } + + public void addGroup(JRDesignGroup group) throws JRException { + this.mainDesignDataset.addGroup(group); + } + + public JRGroup removeGroup(String groupName) { + return this.mainDesignDataset.removeGroup(groupName); + } + + public JRGroup removeGroup(JRGroup group) { + return this.mainDesignDataset.removeGroup(group); + } + + public Collection getExpressions() { + return JRExpressionCollector.collectExpressions((JRReport)this); + } + + public JRDataset[] getDatasets() { + JRDataset[] datasetArray = new JRDataset[this.datasetList.size()]; + this.datasetList.toArray((Object[])datasetArray); + return datasetArray; + } + + public List getDatasetsList() { + return this.datasetList; + } + + public Map getDatasetMap() { + return this.datasetMap; + } + + public void addDataset(JRDesignDataset dataset) throws JRException { + if (this.datasetMap.containsKey(dataset.getName())) + throw new JRException("Duplicate declaration of dataset : " + dataset.getName()); + this.datasetList.add(dataset); + this.datasetMap.put(dataset.getName(), dataset); + getEventSupport().fireCollectionElementAddedEvent("datasets", dataset, this.datasetList.size() - 1); + } + + public JRDataset removeDataset(String datasetName) { + return removeDataset((JRDataset)this.datasetMap.get(datasetName)); + } + + public JRDataset removeDataset(JRDataset dataset) { + if (dataset != null) { + int idx = this.datasetList.indexOf(dataset); + if (idx >= 0) { + this.datasetList.remove(idx); + this.datasetMap.remove(dataset.getName()); + getEventSupport().fireCollectionElementRemovedEvent("datasets", dataset, idx); + } + } + return dataset; + } + + public JRDesignDataset getMainDesignDataset() { + return this.mainDesignDataset; + } + + public void setMainDataset(JRDesignDataset dataset) { + Object old = this.background; + this.mainDataset = (JRDataset)(this.mainDesignDataset = dataset); + this.mainDesignDataset.setName(getName()); + this.mainDesignDataset.getEventSupport().addPropertyChangeListener((PropertyChangeListener)new PropagationChangeListener(getEventSupport())); + getEventSupport().firePropertyChange("mainDataset", old, this.mainDataset); + } + + public void preprocess() { + for (Iterator it = getCrosstabs().iterator(); it.hasNext(); ) { + JRDesignCrosstab crosstab = it.next(); + crosstab.preprocess(); + } + } + + protected List getCrosstabs() { + final List crosstabs = new ArrayList(); + JRElementsVisitor.visitReport((JRReport)this, (JRVisitor)new JRVisitorSupport() { + private final List val$crosstabs; + + private final JasperDesign this$0; + + public void visitCrosstab(JRCrosstab crosstab) { + crosstabs.add(crosstab); + } + }); + return crosstabs; + } + + public void setIgnorePagination(boolean ignorePagination) { + boolean old = this.ignorePagination; + this.ignorePagination = ignorePagination; + getEventSupport().firePropertyChange("ignorePagination", old, this.ignorePagination); + } + + public JRExpression getFilterExpression() { + return this.mainDesignDataset.getFilterExpression(); + } + + public void setFilterExpression(JRExpression expression) { + this.mainDesignDataset.setFilterExpression(expression); + } + + public void addTemplate(JRReportTemplate template) { + this.templateList.add(template); + getEventSupport().fireCollectionElementAddedEvent("templates", template, this.templateList.size() - 1); + } + + public boolean removeTemplate(JRReportTemplate template) { + int idx = this.templateList.indexOf(template); + if (idx >= 0) { + this.templateList.remove(idx); + getEventSupport().fireCollectionElementRemovedEvent("templates", template, idx); + return true; + } + return false; + } + + public JRReportTemplate[] getTemplates() { + return (JRReportTemplate[])this.templateList.toArray((Object[])new JRReportTemplate[this.templateList.size()]); + } + + protected void setBandOrigin(JRBand band, byte type) { + if (band instanceof JRDesignBand) { + JROrigin origin = new JROrigin(type); + ((JRDesignBand)band).setOrigin(origin); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementAddedEvent.java b/hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementAddedEvent.java new file mode 100644 index 0000000..5c6b221 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementAddedEvent.java @@ -0,0 +1,22 @@ +package net.sf.jasperreports.engine.design.events; + +import java.beans.PropertyChangeEvent; + +public class CollectionElementAddedEvent extends PropertyChangeEvent { + private static final long serialVersionUID = 10200L; + + private final int addedIndex; + + public CollectionElementAddedEvent(Object source, String propertyName, Object addedValue, int addedIndex) { + super(source, propertyName, null, addedValue); + this.addedIndex = addedIndex; + } + + public Object getAddedValue() { + return getNewValue(); + } + + public int getAddedIndex() { + return this.addedIndex; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementRemovedEvent.java b/hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementRemovedEvent.java new file mode 100644 index 0000000..34c2adf --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/events/CollectionElementRemovedEvent.java @@ -0,0 +1,22 @@ +package net.sf.jasperreports.engine.design.events; + +import java.beans.PropertyChangeEvent; + +public class CollectionElementRemovedEvent extends PropertyChangeEvent { + private static final long serialVersionUID = 10200L; + + private final int removedIndex; + + public CollectionElementRemovedEvent(Object source, String propertyName, Object removedValue, int removedIndex) { + super(source, propertyName, removedValue, null); + this.removedIndex = removedIndex; + } + + public Object getRemovedValue() { + return getOldValue(); + } + + public int getRemovedIndex() { + return this.removedIndex; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/events/JRChangeEventsSupport.java b/hrmsEjb/net/sf/jasperreports/engine/design/events/JRChangeEventsSupport.java new file mode 100644 index 0000000..c6961eb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/events/JRChangeEventsSupport.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine.design.events; + +public interface JRChangeEventsSupport { + JRPropertyChangeSupport getEventSupport(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/events/JRPropertyChangeSupport.java b/hrmsEjb/net/sf/jasperreports/engine/design/events/JRPropertyChangeSupport.java new file mode 100644 index 0000000..d52b857 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/events/JRPropertyChangeSupport.java @@ -0,0 +1,34 @@ +package net.sf.jasperreports.engine.design.events; + +import java.beans.PropertyChangeSupport; + +public class JRPropertyChangeSupport extends PropertyChangeSupport { + private static final long serialVersionUID = 10200L; + + private Object sourceBean; + + public JRPropertyChangeSupport(Object sourceBean) { + super(sourceBean); + this.sourceBean = sourceBean; + } + + public void fireCollectionElementAddedEvent(String propertyName, Object addedValue, int addedIndex) { + firePropertyChange(new CollectionElementAddedEvent(this.sourceBean, propertyName, addedValue, addedIndex)); + } + + public void fireCollectionElementRemovedEvent(String propertyName, Object removedValue, int removedIndex) { + firePropertyChange(new CollectionElementRemovedEvent(this.sourceBean, propertyName, removedValue, removedIndex)); + } + + public void firePropertyChange(String propertyName, float oldValue, float newValue) { + if (oldValue == newValue) + return; + firePropertyChange(propertyName, new Float(oldValue), new Float(newValue)); + } + + public void firePropertyChange(String propertyName, double oldValue, double newValue) { + if (oldValue == newValue) + return; + firePropertyChange(propertyName, new Double(oldValue), new Double(newValue)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/design/events/PropagationChangeListener.java b/hrmsEjb/net/sf/jasperreports/engine/design/events/PropagationChangeListener.java new file mode 100644 index 0000000..aa72a8a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/design/events/PropagationChangeListener.java @@ -0,0 +1,16 @@ +package net.sf.jasperreports.engine.design.events; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +public class PropagationChangeListener implements PropertyChangeListener { + private final JRPropertyChangeSupport propertyChangeSupport; + + public PropagationChangeListener(JRPropertyChangeSupport propertyChangeSupport) { + this.propertyChangeSupport = propertyChangeSupport; + } + + public void propertyChange(PropertyChangeEvent evt) { + this.propertyChangeSupport.firePropertyChange(evt); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/AbstractValueProvider.java b/hrmsEjb/net/sf/jasperreports/engine/fill/AbstractValueProvider.java new file mode 100644 index 0000000..24baca5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/AbstractValueProvider.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +public abstract class AbstractValueProvider { + private static AbstractValueProvider currentValueProvider = new AbstractValueProvider() { + public Object getValue(JRCalculable calculable) { + return calculable.getValue(); + } + }; + + private static AbstractValueProvider estimatedValueProvider = new AbstractValueProvider() { + public Object getValue(JRCalculable calculable) { + return ((JRFillVariable)calculable).getEstimatedValue(); + } + }; + + public static AbstractValueProvider getCurrentValueProvider() { + return currentValueProvider; + } + + public static AbstractValueProvider getEstimatedValueProvider() { + return estimatedValueProvider; + } + + public abstract Object getValue(JRCalculable paramJRCalculable); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/DistinctCountHolder.java b/hrmsEjb/net/sf/jasperreports/engine/fill/DistinctCountHolder.java new file mode 100644 index 0000000..d726371 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/DistinctCountHolder.java @@ -0,0 +1,45 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.HashSet; +import java.util.Set; + +class DistinctCountHolder { + private Set distinctValues = null; + + private Object lastValue = null; + + public DistinctCountHolder() { + this.distinctValues = new HashSet(); + } + + public DistinctCountHolder(Set distinctValues) { + this.distinctValues = distinctValues; + } + + public DistinctCountHolder(DistinctCountHolder holder, Object lastValue) { + this.distinctValues = holder.getDistinctValues(); + this.lastValue = lastValue; + } + + public void init() { + this.distinctValues = new HashSet(); + } + + public Set getDistinctValues() { + return this.distinctValues; + } + + public Object getLastValue() { + return this.lastValue; + } + + public void addLastValue() { + if (this.lastValue != null) + this.distinctValues.add(this.lastValue); + this.lastValue = null; + } + + public long getCount() { + return (this.distinctValues.size() + ((this.lastValue == null || this.distinctValues.contains(this.lastValue)) ? 0 : 1)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementer.java new file mode 100644 index 0000000..e50fda1 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementer.java @@ -0,0 +1,13 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; + +public abstract class JRAbstractExtendedIncrementer implements JRExtendedIncrementer { + public Object increment(JRFillVariable variable, Object expressionValue, AbstractValueProvider valueProvider) throws JRException { + return increment(variable, expressionValue, valueProvider); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) throws JRException { + return increment(calculable, calculableValue.getValue(), valueProvider); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementerFactory.java new file mode 100644 index 0000000..be76ea0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRAbstractExtendedIncrementerFactory.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.fill; + +public abstract class JRAbstractExtendedIncrementerFactory implements JRExtendedIncrementerFactory { + public JRIncrementer getIncrementer(byte calculation) { + return getExtendedIncrementer(calculation); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBaseFiller.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBaseFiller.java new file mode 100644 index 0000000..e0cec3b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBaseFiller.java @@ -0,0 +1,1137 @@ +package net.sf.jasperreports.engine.fill; + +import java.net.URLStreamHandlerFactory; +import java.sql.Connection; +import java.text.Format; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.TimeZone; +import net.sf.jasperreports.engine.JRAbstractScriptlet; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintPage; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleSetter; +import net.sf.jasperreports.engine.JRTemplate; +import net.sf.jasperreports.engine.JRTemplateReference; +import net.sf.jasperreports.engine.JRVirtualizer; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.base.JRBasePrintPage; +import net.sf.jasperreports.engine.base.JRVirtualPrintPage; +import net.sf.jasperreports.engine.util.DefaultFormatFactory; +import net.sf.jasperreports.engine.util.FileResolver; +import net.sf.jasperreports.engine.util.FormatFactory; +import net.sf.jasperreports.engine.util.JRDataUtils; +import net.sf.jasperreports.engine.util.JRGraphEnvInitializer; +import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.util.JRResourcesUtil; +import net.sf.jasperreports.engine.util.JRStyledTextParser; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public abstract class JRBaseFiller implements JRDefaultStyleProvider, JRVirtualPrintPage.IdentityDataProvider { + private static final Log log = LogFactory.getLog(JRBaseFiller.class); + + protected final String fillerId; + + public class BoundElementMap { + private static final long serialVersionUID = 10200L; + + private final Map map = new HashMap(); + + private final JRBaseFiller this$0; + + public Object put(Object key, Object value, JRPrintPage keyPage) { + Map pageMap = (Map)this.map.get(keyPage); + if (pageMap == null) { + pageMap = new HashMap(); + this.map.put(keyPage, pageMap); + } + return pageMap.put(key, value); + } + + public Object put(Object key, Object value) { + if (JRBaseFiller.this.isPerPageBoundElements) + return put(key, value, JRBaseFiller.this.fillContext.getPrintPage()); + return this.map.put(key, value); + } + + public void clear() { + this.map.clear(); + } + + public Map getMap() { + return this.map; + } + + public Map getMap(JRPrintPage page) { + return (Map)this.map.get(page); + } + + public Map putMap(JRPrintPage page, Map valueMap) { + return this.map.put(page, valueMap); + } + } + + protected JRBaseFiller parentFiller = null; + + private final JRFillObjectFactory factory; + + private JRStyledTextParser styledTextParser = new JRStyledTextParser(); + + private boolean isInterrupted = false; + + protected String name = null; + + protected int columnCount = 1; + + protected byte printOrder = 1; + + protected int pageWidth = 0; + + protected int pageHeight = 0; + + protected byte orientation = 1; + + protected byte whenNoDataType = 1; + + protected int columnWidth = 0; + + protected int columnSpacing = 0; + + protected int leftMargin = 0; + + protected int rightMargin = 0; + + protected int topMargin = 0; + + protected int bottomMargin = 0; + + protected boolean isTitleNewPage = false; + + protected boolean isSummaryNewPage = false; + + protected boolean isFloatColumnFooter = false; + + protected byte whenResourceMissingType = 1; + + protected JRFillReportTemplate[] reportTemplates; + + protected JRReportFont defaultFont = null; + + protected JRReportFont[] fonts = null; + + protected JRStyle defaultStyle = null; + + protected JRStyle[] styles = null; + + protected JRFillDataset mainDataset; + + protected JRFillGroup[] groups = null; + + protected JRFillBand missingFillBand = null; + + protected JRFillBand background = null; + + protected JRFillBand title = null; + + protected JRFillBand pageHeader = null; + + protected JRFillBand columnHeader = null; + + protected JRFillBand detail = null; + + protected JRFillBand columnFooter = null; + + protected JRFillBand pageFooter = null; + + protected JRFillBand lastPageFooter = null; + + protected JRFillBand summary = null; + + protected JRFillBand noData = null; + + protected JRVirtualizer virtualizer = null; + + protected ClassLoader reportClassLoader = null; + + protected FormatFactory formatFactory = null; + + protected URLStreamHandlerFactory urlHandlerFactory; + + protected FileResolver fileResolver; + + protected JRFillContext fillContext; + + protected Map boundElements; + + protected JasperPrint jasperPrint = null; + + protected JRPrintPage printPage = null; + + protected int printPageStretchHeight = 0; + + protected List bands; + + protected Set subfillers; + + private List identityPages; + + private Thread fillingThread; + + protected JRCalculator calculator; + + protected JRAbstractScriptlet scriptlet; + + protected Map datasetMap; + + protected JasperReport jasperReport; + + private boolean bandOverFlowAllowed; + + protected boolean isPerPageBoundElements; + + protected Map dateFormatCache = new HashMap(); + + protected Map numberFormatCache = new HashMap(); + + private JRSubreportRunner subreportRunner; + + protected boolean isCreatingNewPage = false; + + protected boolean isNewPage = false; + + protected boolean isNewColumn = false; + + protected boolean isNewGroup = true; + + protected boolean isFirstPageBand = false; + + protected boolean isFirstColumnBand = false; + + protected int columnIndex = 0; + + protected int offsetX = 0; + + protected int offsetY = 0; + + protected int columnHeaderOffsetY = 0; + + protected int columnFooterOffsetY = 0; + + protected int lastPageColumnFooterOffsetY = 0; + + protected boolean isLastPageFooter = false; + + private final List defaultStyleListeners; + + protected Map getParametersMap() { + return this.mainDataset.parametersMap; + } + + protected Map getFieldsMap() { + return this.mainDataset.fieldsMap; + } + + protected Map getVariablesMap() { + return this.mainDataset.variablesMap; + } + + protected JRFillVariable getVariable(String variableName) { + return (JRFillVariable)this.mainDataset.variablesMap.get(variableName); + } + + protected JRFillField getField(String fieldName) { + return (JRFillField)this.mainDataset.fieldsMap.get(fieldName); + } + + private void initBands() { + this.bands = new ArrayList(8 + ((this.groups == null) ? 0 : (2 * this.groups.length))); + this.bands.add(this.title); + this.bands.add(this.summary); + this.bands.add(this.pageHeader); + this.bands.add(this.pageFooter); + this.bands.add(this.lastPageFooter); + this.bands.add(this.columnHeader); + this.bands.add(this.columnFooter); + this.bands.add(this.detail); + this.bands.add(this.noData); + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + JRFillGroup group = this.groups[i]; + this.bands.add(group.getGroupHeader()); + this.bands.add(group.getGroupFooter()); + } + initBandsNowEvaluationTimes(); + } + + private void initBandsNowEvaluationTimes() { + JREvaluationTime[] groupEvaluationTimes; + if (this.groups == null) { + groupEvaluationTimes = new JREvaluationTime[0]; + } else { + groupEvaluationTimes = new JREvaluationTime[this.groups.length]; + int i; + for (i = 0; i < this.groups.length; i++) + groupEvaluationTimes[i] = JREvaluationTime.getGroupEvaluationTime(this.groups[i].getName()); + for (i = 0; i < this.groups.length; i++) { + JRGroup group = this.groups[i]; + JRFillBand footer = (JRFillBand)group.getGroupFooter(); + for (int j = i; j < groupEvaluationTimes.length; j++) + footer.addNowEvaluationTime(groupEvaluationTimes[j]); + } + } + this.columnFooter.addNowEvaluationTime(JREvaluationTime.EVALUATION_TIME_COLUMN); + this.pageFooter.addNowEvaluationTime(JREvaluationTime.EVALUATION_TIME_COLUMN); + this.pageFooter.addNowEvaluationTime(JREvaluationTime.EVALUATION_TIME_PAGE); + this.summary.addNowEvaluationTimes(groupEvaluationTimes); + this.noData.addNowEvaluationTimes(groupEvaluationTimes); + } + + public JRStyledTextParser getStyledTextParser() { + return this.styledTextParser; + } + + public JasperPrint getJasperPrint() { + return this.jasperPrint; + } + + public JRReportFont getDefaultFont() { + return this.defaultFont; + } + + public JRStyle getDefaultStyle() { + return this.defaultStyle; + } + + protected boolean isSubreport() { + return (this.parentFiller != null); + } + + protected boolean isInterrupted() { + return (this.isInterrupted || (this.parentFiller != null && this.parentFiller.isInterrupted())); + } + + protected void setInterrupted(boolean isInterrupted) { + this.isInterrupted = isInterrupted; + } + + protected JRPrintPage getCurrentPage() { + return this.printPage; + } + + protected JRReportFont[] getFonts() { + return this.fonts; + } + + protected int getCurrentPageStretchHeight() { + return this.printPageStretchHeight; + } + + public JasperPrint fill(Map parameterValues, Connection conn) throws JRException { + if (parameterValues == null) + parameterValues = new HashMap(); + setConnectionParameterValue(parameterValues, conn); + return fill(parameterValues); + } + + protected void setConnectionParameterValue(Map parameterValues, Connection conn) { + this.mainDataset.setConnectionParameterValue(parameterValues, conn); + } + + public JasperPrint fill(Map parameterValues, JRDataSource ds) throws JRException { + if (parameterValues == null) + parameterValues = new HashMap(); + setDatasourceParameterValue(parameterValues, ds); + return fill(parameterValues); + } + + protected void setDatasourceParameterValue(Map parameterValues, JRDataSource ds) { + this.mainDataset.setDatasourceParameterValue(parameterValues, ds); + } + + public JasperPrint fill(Map parameterValues) throws JRException { + if (parameterValues == null) + parameterValues = new HashMap(); + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": filling report"); + this.fillingThread = Thread.currentThread(); + boolean fileResolverSet = false; + boolean urlHandlerFactorySet = false; + boolean classLoaderSet = false; + try { + classLoaderSet = setClassLoader(parameterValues); + urlHandlerFactorySet = setUrlHandlerFactory(parameterValues); + fileResolverSet = setFileResolver(parameterValues); + setParameters(parameterValues); + loadStyles(); + if (this.parentFiller != null) + this.parentFiller.registerSubfiller(this); + this.jasperPrint.setName(this.name); + this.jasperPrint.setPageWidth(this.pageWidth); + this.jasperPrint.setPageHeight(this.pageHeight); + this.jasperPrint.setOrientation(this.orientation); + this.jasperPrint.setDefaultFont(this.defaultFont); + this.jasperPrint.setFormatFactoryClass(this.jasperReport.getFormatFactoryClass()); + this.jasperPrint.setLocaleCode(JRDataUtils.getLocaleCode(getLocale())); + this.jasperPrint.setTimeZoneId(JRDataUtils.getTimeZoneId(getTimeZone())); + if (this.fonts != null && this.fonts.length > 0) + for (int i = 0; i < this.fonts.length; i++) + this.jasperPrint.addFont(this.fonts[i], true); + this.jasperPrint.setDefaultStyle(this.defaultStyle); + if (this.styles != null && this.styles.length > 0) + for (int i = 0; i < this.styles.length; i++) + addPrintStyle(this.styles[i]); + createBoundElemementMaps(); + this.mainDataset.start(); + fillReport(); + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": ended"); + return this.jasperPrint; + } finally { + this.mainDataset.closeDatasource(); + if (this.parentFiller != null) + this.parentFiller.unregisterSubfiller(this); + this.fillingThread = null; + killSubfillerThreads(); + if (classLoaderSet) + JRResourcesUtil.resetClassLoader(); + if (urlHandlerFactorySet) + JRResourcesUtil.resetThreadURLHandlerFactory(); + if (fileResolverSet) + JRResourcesUtil.resetThreadFileResolver(); + } + } + + protected void addPrintStyle(JRStyle style) throws JRException { + this.jasperPrint.addStyle(style, true); + } + + protected JRBaseFiller(JasperReport jasperReport, JREvaluator initEvaluator, JRBaseFiller parentFiller) throws JRException { + this.defaultStyleListeners = new ArrayList(); + this.fillerId = Integer.toString(System.identityHashCode(this)); + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": created for " + jasperReport.getName()); + JRGraphEnvInitializer.initializeGraphEnv(); + this.jasperReport = jasperReport; + this.parentFiller = parentFiller; + if (parentFiller == null) { + this.fillContext = new JRFillContext(); + } else { + this.fillContext = parentFiller.fillContext; + } + this.name = jasperReport.getName(); + this.columnCount = jasperReport.getColumnCount(); + this.printOrder = jasperReport.getPrintOrder(); + this.pageWidth = jasperReport.getPageWidth(); + this.pageHeight = jasperReport.getPageHeight(); + this.orientation = jasperReport.getOrientation(); + this.whenNoDataType = jasperReport.getWhenNoDataType(); + this.columnWidth = jasperReport.getColumnWidth(); + this.columnSpacing = jasperReport.getColumnSpacing(); + this.leftMargin = jasperReport.getLeftMargin(); + this.rightMargin = jasperReport.getRightMargin(); + this.topMargin = jasperReport.getTopMargin(); + this.bottomMargin = jasperReport.getBottomMargin(); + this.isTitleNewPage = jasperReport.isTitleNewPage(); + this.isSummaryNewPage = jasperReport.isSummaryNewPage(); + this.isFloatColumnFooter = jasperReport.isFloatColumnFooter(); + this.whenResourceMissingType = jasperReport.getWhenResourceMissingType(); + this.jasperPrint = new JasperPrint(); + JRProperties.transferProperties((JRPropertiesHolder)jasperReport, (JRPropertiesHolder)this.jasperPrint, "net.sf.jasperreports.print.transfer."); + if (initEvaluator == null) { + this.calculator = JRFillDataset.createCalculator(jasperReport, jasperReport.getMainDataset()); + } else { + this.calculator = new JRCalculator(initEvaluator); + } + this.factory = new JRFillObjectFactory(this); + this.defaultFont = this.factory.getReportFont(jasperReport.getDefaultFont()); + JRReportFont[] jrFonts = jasperReport.getFonts(); + if (jrFonts != null && jrFonts.length > 0) { + this.fonts = new JRReportFont[jrFonts.length]; + for (int i = 0; i < this.fonts.length; i++) + this.fonts[i] = this.factory.getReportFont(jrFonts[i]); + } + createDatasets(); + this.mainDataset = this.factory.getDataset(jasperReport.getMainDataset()); + this.groups = this.mainDataset.groups; + createReportTemplates(this.factory); + String reportName = this.factory.getFiller().isSubreport() ? this.factory.getFiller().getJasperReport().getName() : null; + this.missingFillBand = this.factory.getBand(null); + this.background = this.factory.getBand(jasperReport.getBackground()); + if (this.background != this.missingFillBand) + this.background.setOrigin(new JROrigin(reportName, (byte)1)); + this.title = this.factory.getBand(jasperReport.getTitle()); + if (this.title != this.missingFillBand) + this.title.setOrigin(new JROrigin(reportName, (byte)2)); + this.pageHeader = this.factory.getBand(jasperReport.getPageHeader()); + if (this.pageHeader != this.missingFillBand) + this.pageHeader.setOrigin(new JROrigin(reportName, (byte)3)); + this.columnHeader = this.factory.getBand(jasperReport.getColumnHeader()); + if (this.columnHeader != this.missingFillBand) + this.columnHeader.setOrigin(new JROrigin(reportName, (byte)4)); + this.detail = this.factory.getBand(jasperReport.getDetail()); + if (this.detail != this.missingFillBand) + this.detail.setOrigin(new JROrigin(reportName, (byte)6)); + this.columnFooter = this.factory.getBand(jasperReport.getColumnFooter()); + if (this.columnFooter != this.missingFillBand) + this.columnFooter.setOrigin(new JROrigin(reportName, (byte)8)); + this.pageFooter = this.factory.getBand(jasperReport.getPageFooter()); + if (this.pageFooter != this.missingFillBand) + this.pageFooter.setOrigin(new JROrigin(reportName, (byte)9)); + this.lastPageFooter = this.factory.getBand(jasperReport.getLastPageFooter()); + if (this.lastPageFooter != this.missingFillBand) + this.lastPageFooter.setOrigin(new JROrigin(reportName, (byte)10)); + this.summary = this.factory.getBand(jasperReport.getSummary()); + if (this.summary != this.missingFillBand && this.summary.isEmpty()) + this.summary = this.missingFillBand; + if (this.summary != this.missingFillBand) + this.summary.setOrigin(new JROrigin(reportName, (byte)11)); + this.noData = this.factory.getBand(jasperReport.getNoData()); + if (this.noData != this.missingFillBand) + this.noData.setOrigin(new JROrigin(reportName, (byte)12)); + this.mainDataset.initElementDatasets(this.factory); + initDatasets(this.factory); + this.mainDataset.checkVariableCalculationReqs(this.factory); + this.mainDataset.setCalculator(this.calculator); + this.mainDataset.initCalculator(); + initBands(); + } + + protected void addDefaultStyleListener(DefaultStyleListener listener) { + this.defaultStyleListeners.add(listener); + } + + protected void setDefaultStyle(JRStyle style) { + this.defaultStyle = style; + for (Iterator it = this.defaultStyleListeners.iterator(); it.hasNext(); ) { + DefaultStyleListener listener = it.next(); + listener.defaultStyleSet(style); + } + } + + protected void loadStyles() throws JRException { + List styleList = collectStyles(); + JRStyle reportDefaultStyle = this.jasperReport.getDefaultStyle(); + if (reportDefaultStyle == null) + lookupExternalDefaultStyle(styleList); + List includedStyles = this.factory.setStyles(styleList); + this.styles = (JRStyle[])includedStyles.toArray((Object[])new JRStyle[includedStyles.size()]); + if (reportDefaultStyle != null) + setDefaultStyle(this.factory.getStyle(reportDefaultStyle)); + } + + private static final JRStyleSetter DUMMY_STYLE_SETTER = new JRStyleSetter() { + public void setStyle(JRStyle style) {} + + public void setStyleNameReference(String name) {} + }; + + protected List collectStyles() throws JRException { + List styleList = collectTemplateStyles(); + JRStyle[] reportStyles = this.jasperReport.getStyles(); + if (reportStyles != null) { + this.styles = new JRStyle[reportStyles.length]; + for (int i = 0; i < reportStyles.length; i++) { + JRStyle style = reportStyles[i]; + styleList.add(style); + this.factory.registerDelayedStyleSetter(DUMMY_STYLE_SETTER, style.getName()); + } + } + return styleList; + } + + protected List collectTemplateStyles() throws JRException { + List externalStyles = new ArrayList(); + HashSet loadedLocations = new HashSet(); + if (this.reportTemplates != null) + for (int i = 0; i < this.reportTemplates.length; i++) { + JRFillReportTemplate reportTemplate = this.reportTemplates[i]; + JRTemplate template = reportTemplate.evaluate(); + collectStyles(template, externalStyles, loadedLocations); + } + Collection paramTemplates = (Collection)this.mainDataset.getParameterValue("REPORT_TEMPLATES", true); + if (paramTemplates != null) + for (Iterator it = paramTemplates.iterator(); it.hasNext(); ) { + JRTemplate template = it.next(); + collectStyles(template, externalStyles, loadedLocations); + } + return externalStyles; + } + + protected void collectStyles(JRTemplate template, List externalStyles, Set loadedLocations) throws JRException { + collectIncludedTemplates(template, externalStyles, loadedLocations); + JRStyle[] templateStyles = template.getStyles(); + if (templateStyles != null) + for (int i = 0; i < templateStyles.length; i++) { + JRStyle style = templateStyles[i]; + String styleName = style.getName(); + if (styleName == null) + throw new JRRuntimeException("External style name not set."); + externalStyles.add(style); + } + } + + protected void collectIncludedTemplates(JRTemplate template, List externalStyles, Set loadedLocations) throws JRException { + JRTemplateReference[] includedTemplates = template.getIncludedTemplates(); + if (includedTemplates != null) + for (int i = 0; i < includedTemplates.length; i++) { + JRTemplateReference reference = includedTemplates[i]; + String location = reference.getLocation(); + if (!loadedLocations.add(location)) + throw new JRRuntimeException("Circular dependency found for template at location " + location); + JRTemplate includedTemplate = JRFillReportTemplate.loadTemplate(location, String.class, this.fillContext); + collectStyles(includedTemplate, externalStyles, loadedLocations); + } + } + + protected void lookupExternalDefaultStyle(Collection styleList) { + JRStyle defStyle = null; + for (Iterator it = styleList.iterator(); it.hasNext(); ) { + JRStyle style = it.next(); + if (style.isDefault()) + defStyle = style; + } + if (defStyle != null) + this.factory.registerDelayedStyleSetter(new JRStyleSetter() { + private final JRBaseFiller this$0; + + public void setStyle(JRStyle style) { + if (style.isDefault()) + JRBaseFiller.this.setDefaultStyle(style); + } + + public void setStyleNameReference(String name) {} + }, defStyle.getName()); + } + + private void createBoundElemementMaps() { + this.boundElements = new HashMap(); + createBoundElementMaps(JREvaluationTime.EVALUATION_TIME_REPORT); + createBoundElementMaps(JREvaluationTime.EVALUATION_TIME_PAGE); + createBoundElementMaps(JREvaluationTime.EVALUATION_TIME_COLUMN); + if (this.groups != null) + for (int j = 0; j < this.groups.length; j++) + createBoundElementMaps(JREvaluationTime.getGroupEvaluationTime(this.groups[j].getName())); + for (Iterator i = this.bands.iterator(); i.hasNext(); ) { + JRFillBand band = i.next(); + createBoundElementMaps(JREvaluationTime.getBandEvaluationTime(band)); + } + } + + private void createBoundElementMaps(JREvaluationTime evaluationTime) { + BoundElementMap boundElementsMap = new BoundElementMap(); + this.boundElements.put(evaluationTime, boundElementsMap); + } + + private void killSubfillerThreads() { + if (this.subfillers != null && !this.subfillers.isEmpty()) + for (Iterator it = this.subfillers.iterator(); it.hasNext(); ) { + JRBaseFiller subfiller = it.next(); + if (subfiller.fillingThread != null) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": Interrupting subfiller thread " + subfiller.fillingThread); + subfiller.fillingThread.interrupt(); + } + } + } + + protected void setParameters(Map parameterValues) throws JRException { + if (!isSubreport()) { + this.virtualizer = (JRVirtualizer)parameterValues.get("REPORT_VIRTUALIZER"); + if (this.virtualizer != null) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": using virtualizer " + this.virtualizer); + this.fillContext.setUsingVirtualizer(true); + this.fillContext.setPerPageBoundElements(true); + JRVirtualizationContext.register(this.fillContext.getVirtualizationContext(), this.jasperPrint); + } + } + this.isPerPageBoundElements = this.fillContext.isPerPageBoundElements(); + setFormatFactory(parameterValues); + setIgnorePagination(parameterValues); + this.mainDataset.setParameterValues(parameterValues); + this.mainDataset.initDatasource(); + this.scriptlet = this.mainDataset.scriptlet; + if (!isSubreport()) { + this.fillContext.setMasterFormatFactory(getFormatFactory()); + this.fillContext.setMasterLocale(getLocale()); + this.fillContext.setMasterTimeZone(getTimeZone()); + } + } + + private void setFormatFactory(Map parameterValues) { + this.formatFactory = (FormatFactory)parameterValues.get("REPORT_FORMAT_FACTORY"); + if (this.formatFactory == null) { + this.formatFactory = DefaultFormatFactory.createFormatFactory(this.jasperReport.getFormatFactoryClass()); + parameterValues.put("REPORT_FORMAT_FACTORY", this.formatFactory); + } + } + + private boolean setClassLoader(Map parameterValues) { + this.reportClassLoader = (ClassLoader)parameterValues.get("REPORT_CLASS_LOADER"); + boolean setClassLoader = (this.reportClassLoader != null); + if (setClassLoader) + JRResourcesUtil.setThreadClassLoader(this.reportClassLoader); + return setClassLoader; + } + + private boolean setUrlHandlerFactory(Map parameterValues) { + this.urlHandlerFactory = (URLStreamHandlerFactory)parameterValues.get("REPORT_URL_HANDLER_FACTORY"); + boolean setUrlHandlerFactory = (this.urlHandlerFactory != null); + if (setUrlHandlerFactory) + JRResourcesUtil.setThreadURLHandlerFactory(this.urlHandlerFactory); + return setUrlHandlerFactory; + } + + private boolean setFileResolver(Map parameterValues) { + this.fileResolver = (FileResolver)parameterValues.get("REPORT_FILE_RESOLVER"); + boolean setFileResolver = (this.fileResolver != null); + if (setFileResolver) + JRResourcesUtil.setThreadFileResolver(this.fileResolver); + return setFileResolver; + } + + private void setIgnorePagination(Map parameterValues) { + if (this.parentFiller == null) { + Boolean isIgnorePaginationParam = (Boolean)parameterValues.get("IS_IGNORE_PAGINATION"); + if (isIgnorePaginationParam != null) { + this.fillContext.setIgnorePagination(isIgnorePaginationParam.booleanValue()); + } else { + boolean ignorePagination = this.jasperReport.isIgnorePagination(); + this.fillContext.setIgnorePagination(ignorePagination); + parameterValues.put("IS_IGNORE_PAGINATION", ignorePagination ? Boolean.TRUE : Boolean.FALSE); + } + } else { + boolean ignorePagination = this.fillContext.isIgnorePagination(); + parameterValues.put("IS_IGNORE_PAGINATION", ignorePagination ? Boolean.TRUE : Boolean.FALSE); + } + if (this.fillContext.isIgnorePagination()) { + this.isTitleNewPage = false; + this.isSummaryNewPage = false; + if (this.groups != null) + for (int i = 0; i < this.groups.length; i++) { + this.groups[i].setStartNewPage(false); + this.groups[i].setResetPageNumber(false); + this.groups[i].setStartNewColumn(false); + } + setPageHeight(2147483647); + } + } + + protected Locale getLocale() { + return this.mainDataset.locale; + } + + protected TimeZone getTimeZone() { + return this.mainDataset.timeZone; + } + + protected FormatFactory getFormatFactory() { + return this.formatFactory; + } + + protected Format getDateFormat(String pattern) { + Locale lc = getLocale(); + TimeZone tz = getTimeZone(); + String key = pattern + "|" + JRDataUtils.getLocaleCode(lc) + "|" + JRDataUtils.getTimeZoneId(tz); + Format format = (Format)this.dateFormatCache.get(key); + if (format == null) { + format = getFormatFactory().createDateFormat(pattern, lc, tz); + if (format != null) + this.dateFormatCache.put(key, format); + } + return format; + } + + protected Format getNumberFormat(String pattern) { + Locale lc = getLocale(); + String key = pattern + "|" + JRDataUtils.getLocaleCode(lc); + Format format = (Format)this.numberFormatCache.get(key); + if (format == null) { + format = getFormatFactory().createNumberFormat(pattern, lc); + if (format != null) + this.numberFormatCache.put(key, format); + } + return format; + } + + protected boolean hasMasterFormatFactory() { + return (!isSubreport() || getFormatFactory().getClass().getName().equals(this.fillContext.getMasterFormatFactory().getClass().getName())); + } + + protected boolean hasMasterLocale() { + return (!isSubreport() || getLocale().equals(this.fillContext.getMasterLocale())); + } + + protected boolean hasMasterTimeZone() { + return (!isSubreport() || getTimeZone().equals(this.fillContext.getMasterTimeZone())); + } + + protected void setParameter(String parameterName, Object value) throws JRException { + this.mainDataset.setParameter(parameterName, value); + } + + protected void setParameter(JRFillParameter parameter, Object value) throws JRException { + this.mainDataset.setParameter(parameter, value); + } + + protected boolean next() throws JRException { + return this.mainDataset.next(); + } + + private void resolveBoundElements(Map boundElementsMap, byte evaluation, JREvaluationTime evaluationTime) throws JRException { + if (boundElementsMap != null) + for (Iterator it = boundElementsMap.entrySet().iterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + JRPrintElement element = (JRPrintElement)entry.getKey(); + JRFillElement fillElement = (JRFillElement)entry.getValue(); + fillElement.resolveElement(element, evaluation, evaluationTime); + } + } + + protected void resolveBoundElements(JREvaluationTime evaluationTime, byte evaluation) throws JRException { + BoundElementMap boundElementsMap = (BoundElementMap)this.boundElements.get(evaluationTime); + if (this.isPerPageBoundElements) { + Map perPageElementsMap = boundElementsMap.getMap(); + for (Iterator it = perPageElementsMap.entrySet().iterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + JRPrintPage page = (JRPrintPage)entry.getKey(); + page.getElements(); + Map elementsMap = (Map)entry.getValue(); + resolveBoundElements(elementsMap, evaluation, evaluationTime); + } + boundElementsMap.clear(); + } else { + resolveBoundElements(boundElementsMap.getMap(), evaluation, evaluationTime); + boundElementsMap.clear(); + } + } + + protected void resolveReportBoundElements() throws JRException { + resolveBoundElements(JREvaluationTime.EVALUATION_TIME_REPORT, (byte)3); + } + + protected void resolvePageBoundElements(byte evaluation) throws JRException { + resolveBoundElements(JREvaluationTime.EVALUATION_TIME_PAGE, evaluation); + } + + protected void resolveColumnBoundElements(byte evaluation) throws JRException { + resolveBoundElements(JREvaluationTime.EVALUATION_TIME_COLUMN, evaluation); + } + + protected void resolveGroupBoundElements(byte evaluation, boolean isFinal) throws JRException { + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + JRFillGroup group = this.groups[i]; + if ((group.hasChanged() && group.isFooterPrinted()) || isFinal) { + String groupName = group.getName(); + resolveBoundElements(JREvaluationTime.getGroupEvaluationTime(groupName), evaluation); + } + } + } + + protected JRPrintPage newPage() { + JRBasePrintPage jRBasePrintPage; + if (this.virtualizer != null) { + JRVirtualPrintPage virtualPage = new JRVirtualPrintPage(this.jasperPrint, this.virtualizer, this.fillContext.getVirtualizationContext()); + addIdentityDataProviders(virtualPage, this); + JRVirtualPrintPage jRVirtualPrintPage1 = virtualPage; + } else { + jRBasePrintPage = new JRBasePrintPage(); + } + return (JRPrintPage)jRBasePrintPage; + } + + public Object getVariableValue(String variableName) { + return this.mainDataset.getVariableValue(variableName); + } + + protected void resolveBandBoundElements(JRFillBand band, byte evaluation) throws JRException { + resolveBoundElements(JREvaluationTime.getBandEvaluationTime(band), evaluation); + } + + protected void addVariableCalculationReq(String variableName, byte calculation) { + this.mainDataset.addVariableCalculationReq(variableName, calculation); + } + + public void cancelFill() throws JRException { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": cancelling"); + if (this.fillContext.cancelRunningQuery()) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": query cancelled"); + } else { + Thread t = this.fillingThread; + if (t != null) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": Interrupting thread " + t); + t.interrupt(); + } + } + } + + protected void registerSubfiller(JRBaseFiller subfiller) { + if (this.subfillers == null) + this.subfillers = new HashSet(); + if (this.subfillers.add(subfiller) && this.fillContext.isUsingVirtualizer()) { + subfiller.identityPages = new ArrayList(); + JRVirtualPrintPage masterPrintPage = (JRVirtualPrintPage)this.fillContext.getPrintPage(); + subfiller.identityPages.add(masterPrintPage); + addIdentityDataProviders(masterPrintPage, subfiller); + } + } + + protected void unregisterSubfiller(JRBaseFiller subfiller) { + if (this.subfillers != null && this.subfillers.remove(subfiller) && this.fillContext.isUsingVirtualizer()) + removeIdentityDataProviders(subfiller); + } + + private static void addIdentityDataProviders(JRVirtualPrintPage page, JRBaseFiller filler) { + page.addIdentityDataProvider(filler); + if (filler.subfillers != null) + for (Iterator i = filler.subfillers.iterator(); i.hasNext(); ) { + JRBaseFiller subfiller = i.next(); + subfiller.identityPages.add(page); + addIdentityDataProviders(page, subfiller); + } + } + + private void removeIdentityDataProviders(JRBaseFiller filler) { + if (filler.identityPages != null) { + for (Iterator it = filler.identityPages.iterator(); it.hasNext(); ) { + JRVirtualPrintPage page = it.next(); + page.removeIdentityDataProvider(filler); + } + filler.identityPages = null; + } + } + + protected void addPage(JRPrintPage page) { + if (!isSubreport()) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": adding page " + (this.jasperPrint.getPages().size() + 1)); + this.jasperPrint.addPage(page); + this.fillContext.setPrintPage(page); + } + } + + protected static final class PageIdentityDataProvider implements JRVirtualPrintPage.IdentityDataProvider { + private static final Map providers = new HashMap(); + + private final JRPrintPage printPage; + + protected PageIdentityDataProvider(JRPrintPage printPage) { + this.printPage = printPage; + } + + public JRVirtualPrintPage.ObjectIDPair[] getIdentityData(JRVirtualPrintPage page) { + return null; + } + + public void setIdentityData(JRVirtualPrintPage page, JRVirtualPrintPage.ObjectIDPair[] identityData) { + if (identityData != null && identityData.length > 0) { + Map idMap = new HashMap(); + for (int j = 0; j < identityData.length; j++) + idMap.put(new Integer(identityData[j].getIdentity()), identityData[j].getObject()); + for (ListIterator i = this.printPage.getElements().listIterator(); i.hasNext(); ) { + Object element = i.next(); + Integer id = new Integer(System.identityHashCode(element)); + Object idObject = idMap.get(id); + if (idObject != null) + i.set(idObject); + } + } + } + + public static JRVirtualPrintPage.IdentityDataProvider getIdentityDataProvider(JRPrintPage printPage) { + JRVirtualPrintPage.IdentityDataProvider provider = (JRVirtualPrintPage.IdentityDataProvider)providers.get(printPage); + if (provider == null) { + provider = new PageIdentityDataProvider(printPage); + providers.put(printPage, provider); + } + return provider; + } + + public static JRVirtualPrintPage.IdentityDataProvider removeIdentityDataProvider(JRPrintPage printPage) { + JRVirtualPrintPage.IdentityDataProvider provider = (JRVirtualPrintPage.IdentityDataProvider)providers.remove(printPage); + return provider; + } + } + + protected void addPageIdentityDataProvider() { + JRVirtualPrintPage.IdentityDataProvider pageProvider = PageIdentityDataProvider.getIdentityDataProvider(this.printPage); + JRVirtualPrintPage masterPage = (JRVirtualPrintPage)this.fillContext.getPrintPage(); + masterPage.addIdentityDataProvider(pageProvider); + } + + protected void removePageIdentityDataProvider() { + JRVirtualPrintPage.IdentityDataProvider pageProvider = PageIdentityDataProvider.removeIdentityDataProvider(this.printPage); + if (pageProvider != null) + ((JRVirtualPrintPage)this.fillContext.getPrintPage()).removeIdentityDataProvider(pageProvider); + } + + protected Object evaluateExpression(JRExpression expression, byte evaluation) throws JRException { + return this.mainDataset.calculator.evaluate(expression, evaluation); + } + + private void createDatasets() throws JRException { + this.datasetMap = new HashMap(); + JRDataset[] datasets = this.jasperReport.getDatasets(); + if (datasets != null && datasets.length > 0) + for (int i = 0; i < datasets.length; i++) { + JRFillDataset fillDataset = this.factory.getDataset(datasets[i]); + fillDataset.createCalculator(this.jasperReport); + this.datasetMap.put(datasets[i].getName(), fillDataset); + } + } + + private void initDatasets(JRFillObjectFactory factory) { + for (Iterator it = this.datasetMap.values().iterator(); it.hasNext(); ) { + JRFillDataset dataset = it.next(); + dataset.inheritFromMain(); + dataset.initElementDatasets(factory); + } + } + + protected byte getWhenResourceMissingType() { + return this.mainDataset.whenResourceMissingType; + } + + protected JasperReport getJasperReport() { + return this.jasperReport; + } + + protected boolean isBandOverFlowAllowed() { + return this.bandOverFlowAllowed; + } + + protected void setBandOverFlowAllowed(boolean splittableBand) { + this.bandOverFlowAllowed = splittableBand; + } + + protected int getMasterColumnCount() { + JRBaseFiller filler = this.parentFiller; + int colCount = 1; + while (filler != null) { + colCount *= filler.columnCount; + filler = filler.parentFiller; + } + return colCount; + } + + public JRFillDataset getMainDataset() { + return this.mainDataset; + } + + protected void addBoundElement(JRFillElement element, JRPrintElement printElement, byte evaluationType, JRGroup group, JRFillBand band) { + JREvaluationTime evaluationTime = JREvaluationTime.getEvaluationTime(evaluationType, group, band); + addBoundElement(element, printElement, evaluationTime); + } + + protected void addBoundElement(JRFillElement element, JRPrintElement printElement, JREvaluationTime evaluationTime) { + BoundElementMap boundElementsMap = (BoundElementMap)this.boundElements.get(evaluationTime); + boundElementsMap.put(printElement, element); + } + + public JRVirtualPrintPage.ObjectIDPair[] getIdentityData(JRVirtualPrintPage page) { + Map allElements = new HashMap(); + List identityList = new ArrayList(); + for (Iterator it = this.boundElements.values().iterator(); it.hasNext(); ) { + BoundElementMap pageBoundElementsMap = it.next(); + Map map = pageBoundElementsMap.getMap((JRPrintPage)page); + if (map != null && !map.isEmpty()) { + Map idMap = new HashMap(); + for (Iterator iter = map.entrySet().iterator(); iter.hasNext(); ) { + Map.Entry entry = iter.next(); + Object key = entry.getKey(); + Integer id = (Integer)allElements.get(key); + if (id == null) { + JRVirtualPrintPage.ObjectIDPair idPair = new JRVirtualPrintPage.ObjectIDPair(key); + identityList.add(idPair); + id = new Integer(idPair.getIdentity()); + allElements.put(key, id); + } + idMap.put(id, entry.getValue()); + } + pageBoundElementsMap.putMap((JRPrintPage)page, idMap); + } + } + JRVirtualPrintPage.ObjectIDPair[] identityData = null; + if (!identityList.isEmpty()) { + identityData = new JRVirtualPrintPage.ObjectIDPair[identityList.size()]; + identityList.toArray(identityData); + } + return identityData; + } + + public void setIdentityData(JRVirtualPrintPage page, JRVirtualPrintPage.ObjectIDPair[] identityData) { + if (identityData == null || identityData.length == 0) + return; + for (Iterator it = this.boundElements.values().iterator(); it.hasNext(); ) { + BoundElementMap pageBoundElementsMap = it.next(); + Map idMap = pageBoundElementsMap.getMap((JRPrintPage)page); + if (idMap != null && !idMap.isEmpty()) { + Map map = new HashMap(); + for (int i = 0; i < identityData.length; i++) { + JRVirtualPrintPage.ObjectIDPair idPair = identityData[i]; + Integer id = new Integer(idPair.getIdentity()); + Object value = idMap.get(id); + if (value != null) + map.put(idPair.getObject(), value); + } + pageBoundElementsMap.putMap((JRPrintPage)page, map); + } + } + } + + protected void setSubreportRunner(JRSubreportRunner runner) { + this.subreportRunner = runner; + } + + protected void suspendSubreportRunner() throws JRException { + if (this.subreportRunner == null) + throw new JRRuntimeException("No subreport runner set."); + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": suspeding subreport runner"); + this.subreportRunner.suspend(); + } + + protected void createReportTemplates(JRFillObjectFactory factory) { + JRReportTemplate[] templates = this.jasperReport.getTemplates(); + if (templates != null) { + this.reportTemplates = new JRFillReportTemplate[templates.length]; + for (int i = 0; i < templates.length; i++) { + JRReportTemplate template = templates[i]; + this.reportTemplates[i] = factory.getReportTemplate(template); + } + } + } + + protected abstract void setPageHeight(int paramInt); + + protected abstract void fillReport() throws JRException; + + protected static interface DefaultStyleListener { + void defaultStyleSet(JRStyle param1JRStyle); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalAverageIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalAverageIncrementer.java new file mode 100644 index 0000000..cfe2a08 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalAverageIncrementer.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +class JRBigDecimalAverageIncrementer extends JRAbstractExtendedIncrementer { + private static JRBigDecimalAverageIncrementer mainInstance = new JRBigDecimalAverageIncrementer(); + + public static JRBigDecimalAverageIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + BigDecimal countValue = (BigDecimal)valueProvider.getValue(variable.getHelperVariable((byte)0)); + BigDecimal sumValue = (BigDecimal)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return sumValue.divide(countValue, 4); + } + + public Object initialValue() { + return JRBigDecimalIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalCountIncrementer.java new file mode 100644 index 0000000..d58f534 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalCountIncrementer.java @@ -0,0 +1,34 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +class JRBigDecimalCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRBigDecimalCountIncrementer mainInstance = new JRBigDecimalCountIncrementer(); + + public static JRBigDecimalCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + BigDecimal value = (BigDecimal)variable.getIncrementedValue(); + if (value == null || variable.isInitialized()) + value = JRBigDecimalIncrementerFactory.ZERO; + if (expressionValue == null) + return value; + return value.add(JRBigDecimalIncrementerFactory.ONE); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + BigDecimal value = (BigDecimal)calculable.getIncrementedValue(); + BigDecimal combineValue = (BigDecimal)calculableValue.getValue(); + if (value == null || calculable.isInitialized()) + value = JRBigDecimalIncrementerFactory.ZERO; + if (combineValue == null) + return value; + return value.add(combineValue); + } + + public Object initialValue() { + return JRBigDecimalIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalDistinctCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalDistinctCountIncrementer.java new file mode 100644 index 0000000..8db0160 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalDistinctCountIncrementer.java @@ -0,0 +1,27 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +class JRBigDecimalDistinctCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRBigDecimalDistinctCountIncrementer mainInstance = new JRBigDecimalDistinctCountIncrementer(); + + public static JRBigDecimalDistinctCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(variable.getHelperVariable((byte)0)); + if (variable.isInitialized()) + holder.init(); + return new BigDecimal(holder.getCount()); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + return new BigDecimal(holder.getCount()); + } + + public Object initialValue() { + return JRBigDecimalIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalIncrementerFactory.java new file mode 100644 index 0000000..b7a19e7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalIncrementerFactory.java @@ -0,0 +1,45 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +public class JRBigDecimalIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + protected static final BigDecimal ZERO = new BigDecimal("0"); + + protected static final BigDecimal ONE = new BigDecimal("1"); + + private static JRBigDecimalIncrementerFactory mainInstance = new JRBigDecimalIncrementerFactory(); + + public static JRBigDecimalIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 1: + incrementer = JRBigDecimalCountIncrementer.getInstance(); + return incrementer; + case 2: + incrementer = JRBigDecimalSumIncrementer.getInstance(); + return incrementer; + case 3: + incrementer = JRBigDecimalAverageIncrementer.getInstance(); + return incrementer; + case 4: + case 5: + incrementer = JRComparableIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + case 6: + incrementer = JRBigDecimalStandardDeviationIncrementer.getInstance(); + return incrementer; + case 7: + incrementer = JRBigDecimalVarianceIncrementer.getInstance(); + return incrementer; + case 10: + incrementer = JRBigDecimalDistinctCountIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalStandardDeviationIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalStandardDeviationIncrementer.java new file mode 100644 index 0000000..eb3e0f8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalStandardDeviationIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +class JRBigDecimalStandardDeviationIncrementer extends JRAbstractExtendedIncrementer { + private static JRBigDecimalStandardDeviationIncrementer mainInstance = new JRBigDecimalStandardDeviationIncrementer(); + + public static JRBigDecimalStandardDeviationIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number varianceValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)2)); + return new BigDecimal(Math.sqrt(varianceValue.doubleValue())); + } + + public Object initialValue() { + return JRBigDecimalIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalSumIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalSumIncrementer.java new file mode 100644 index 0000000..11feee9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalSumIncrementer.java @@ -0,0 +1,28 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +class JRBigDecimalSumIncrementer extends JRAbstractExtendedIncrementer { + private static JRBigDecimalSumIncrementer mainInstance = new JRBigDecimalSumIncrementer(); + + public static JRBigDecimalSumIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + BigDecimal value = (BigDecimal)variable.getIncrementedValue(); + BigDecimal newValue = (BigDecimal)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + value = JRBigDecimalIncrementerFactory.ZERO; + return value.add(newValue); + } + + public Object initialValue() { + return JRBigDecimalIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalVarianceIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalVarianceIncrementer.java new file mode 100644 index 0000000..d332614 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRBigDecimalVarianceIncrementer.java @@ -0,0 +1,54 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +class JRBigDecimalVarianceIncrementer extends JRAbstractExtendedIncrementer { + private static JRBigDecimalVarianceIncrementer mainInstance = new JRBigDecimalVarianceIncrementer(); + + public static JRBigDecimalVarianceIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + BigDecimal value = (BigDecimal)variable.getIncrementedValue(); + BigDecimal newValue = (BigDecimal)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + return JRBigDecimalIncrementerFactory.ZERO; + BigDecimal countValue = (BigDecimal)valueProvider.getValue(variable.getHelperVariable((byte)0)); + BigDecimal sumValue = (BigDecimal)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return countValue.subtract(JRBigDecimalIncrementerFactory.ONE).multiply(value).divide(countValue, 4).add(sumValue.divide(countValue, 4).subtract(newValue).multiply(sumValue.divide(countValue, 4).subtract(newValue)).divide(countValue.subtract(JRBigDecimalIncrementerFactory.ONE), 4)); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + BigDecimal value = (BigDecimal)calculable.getIncrementedValue(); + if (calculableValue.getValue() == null) { + if (calculable.isInitialized()) + return null; + return value; + } + if (value == null || calculable.isInitialized()) + return calculableValue.getIncrementedValue(); + BigDecimal v1 = value; + BigDecimal c1 = (BigDecimal)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + BigDecimal s1 = (BigDecimal)valueProvider.getValue(calculable.getHelperVariable((byte)1)); + BigDecimal v2 = (BigDecimal)calculableValue.getIncrementedValue(); + BigDecimal c2 = (BigDecimal)valueProvider.getValue(calculableValue.getHelperVariable((byte)0)); + BigDecimal s2 = (BigDecimal)valueProvider.getValue(calculableValue.getHelperVariable((byte)1)); + c1 = c1.subtract(c2); + s1 = s1.subtract(s2); + BigDecimal c = c1.add(c2); + BigDecimal x1 = s1.divide(c, 4); + BigDecimal x2 = s2.divide(c, 4); + BigDecimal x3 = x1.multiply(x2); + return c1.divide(c, 4).multiply(v1).add(c2.divide(c, 4).multiply(v2)).add(c2.divide(c1, 4).multiply(x1).multiply(x1)).add(c1.divide(c2, 4).multiply(x2).multiply(x2)).subtract(x3).subtract(x3); + } + + public Object initialValue() { + return JRBigDecimalIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteAverageIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteAverageIncrementer.java new file mode 100644 index 0000000..a6a343b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteAverageIncrementer.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.fill; + +class JRByteAverageIncrementer extends JRAbstractExtendedIncrementer { + private static JRByteAverageIncrementer mainInstance = new JRByteAverageIncrementer(); + + public static JRByteAverageIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Byte((byte)(sumValue.byteValue() / countValue.byteValue())); + } + + public Object initialValue() { + return JRByteIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteCountIncrementer.java new file mode 100644 index 0000000..5cc718b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteCountIncrementer.java @@ -0,0 +1,32 @@ +package net.sf.jasperreports.engine.fill; + +class JRByteCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRByteCountIncrementer mainInstance = new JRByteCountIncrementer(); + + public static JRByteCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + if (value == null || variable.isInitialized()) + value = JRByteIncrementerFactory.ZERO; + if (expressionValue == null) + return value; + return new Byte((byte)(value.byteValue() + 1)); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + Number combineValue = (Number)calculableValue.getValue(); + if (value == null || calculable.isInitialized()) + value = JRByteIncrementerFactory.ZERO; + if (combineValue == null) + return value; + return new Byte((byte)(value.byteValue() + combineValue.byteValue())); + } + + public Object initialValue() { + return JRByteIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteDistinctCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteDistinctCountIncrementer.java new file mode 100644 index 0000000..abf35ab --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteDistinctCountIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +class JRByteDistinctCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRByteDistinctCountIncrementer mainInstance = new JRByteDistinctCountIncrementer(); + + public static JRByteDistinctCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(variable.getHelperVariable((byte)0)); + if (variable.isInitialized()) + holder.init(); + return new Byte((byte)(int)holder.getCount()); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + return new Byte((byte)(int)holder.getCount()); + } + + public Object initialValue() { + return JRByteIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteIncrementerFactory.java new file mode 100644 index 0000000..12d9a28 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteIncrementerFactory.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine.fill; + +public class JRByteIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + protected static final Byte ZERO = new Byte((byte)0); + + private static JRByteIncrementerFactory mainInstance = new JRByteIncrementerFactory(); + + public static JRByteIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 1: + incrementer = JRByteCountIncrementer.getInstance(); + return incrementer; + case 2: + incrementer = JRByteSumIncrementer.getInstance(); + return incrementer; + case 3: + incrementer = JRByteAverageIncrementer.getInstance(); + return incrementer; + case 4: + case 5: + incrementer = JRComparableIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + case 6: + incrementer = JRByteStandardDeviationIncrementer.getInstance(); + return incrementer; + case 7: + incrementer = JRByteVarianceIncrementer.getInstance(); + return incrementer; + case 10: + incrementer = JRByteDistinctCountIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteStandardDeviationIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteStandardDeviationIncrementer.java new file mode 100644 index 0000000..3ad8b14 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteStandardDeviationIncrementer.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +class JRByteStandardDeviationIncrementer extends JRAbstractExtendedIncrementer { + private static JRByteStandardDeviationIncrementer mainInstance = new JRByteStandardDeviationIncrementer(); + + public static JRByteStandardDeviationIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number varianceValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)2)); + return new Byte((byte)(int)Math.sqrt(varianceValue.doubleValue())); + } + + public Object initialValue() { + return JRByteIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteSumIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteSumIncrementer.java new file mode 100644 index 0000000..d6ca239 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteSumIncrementer.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +class JRByteSumIncrementer extends JRAbstractExtendedIncrementer { + private static JRByteSumIncrementer mainInstance = new JRByteSumIncrementer(); + + public static JRByteSumIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + value = JRByteIncrementerFactory.ZERO; + return new Byte((byte)(value.byteValue() + newValue.byteValue())); + } + + public Object initialValue() { + return JRByteIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteVarianceIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteVarianceIncrementer.java new file mode 100644 index 0000000..3ace2d6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRByteVarianceIncrementer.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +class JRByteVarianceIncrementer extends JRAbstractExtendedIncrementer { + private static JRByteVarianceIncrementer mainInstance = new JRByteVarianceIncrementer(); + + public static JRByteVarianceIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + return JRByteIncrementerFactory.ZERO; + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Byte((byte)((countValue.byteValue() - 1) * value.byteValue() / countValue.byteValue() + (sumValue.byteValue() / countValue.byteValue() - newValue.byteValue()) * (sumValue.byteValue() / countValue.byteValue() - newValue.byteValue()) / (countValue.byteValue() - 1))); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + if (calculableValue.getValue() == null) { + if (calculable.isInitialized()) + return null; + return value; + } + if (value == null || calculable.isInitialized()) + return new Byte(((Number)calculableValue.getIncrementedValue()).byteValue()); + float v1 = value.floatValue(); + float c1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)0))).floatValue(); + float s1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)1))).floatValue(); + float v2 = ((Number)calculableValue.getIncrementedValue()).floatValue(); + float c2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)0))).floatValue(); + float s2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)1))).floatValue(); + c1 -= c2; + s1 -= s2; + float c = c1 + c2; + return new Byte((byte)(int)(c1 / c * v1 + c2 / c * v2 + c2 / c1 * s1 / c * s1 / c + c1 / c2 * s2 / c * s2 / c - 2.0F * s1 / c * s2 / c)); + } + + public Object initialValue() { + return JRByteIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculable.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculable.java new file mode 100644 index 0000000..26e2772 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculable.java @@ -0,0 +1,21 @@ +package net.sf.jasperreports.engine.fill; + +public interface JRCalculable { + public static final byte HELPER_COUNT = 0; + + public static final byte HELPER_SUM = 1; + + public static final byte HELPER_VARIANCE = 2; + + public static final int HELPER_SIZE = 3; + + boolean isInitialized(); + + void setInitialized(boolean paramBoolean); + + Object getIncrementedValue(); + + Object getValue(); + + JRCalculable getHelperVariable(byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculator.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculator.java new file mode 100644 index 0000000..11c3ce8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRCalculator.java @@ -0,0 +1,252 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.Map; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; + +public class JRCalculator implements JRFillExpressionEvaluator { + protected Map parsm = null; + + protected Map fldsm = null; + + protected Map varsm = null; + + protected JRFillVariable[] variables = null; + + protected JRFillGroup[] groups = null; + + protected JRFillElementDataset[] datasets = null; + + private JRFillVariable pageNumber = null; + + private JRFillVariable columnNumber = null; + + private final JREvaluator evaluator; + + protected JRCalculator(JREvaluator evaluator) { + this.evaluator = evaluator; + } + + protected void init(JRFillDataset dataset) throws JRException { + this.parsm = dataset.parametersMap; + this.fldsm = dataset.fieldsMap; + this.varsm = dataset.variablesMap; + this.variables = dataset.variables; + this.groups = dataset.groups; + this.datasets = dataset.elementDatasets; + this.pageNumber = (JRFillVariable)this.varsm.get("PAGE_NUMBER"); + this.columnNumber = (JRFillVariable)this.varsm.get("COLUMN_NUMBER"); + byte whenResourceMissingType = dataset.getWhenResourceMissingType(); + this.evaluator.init(this.parsm, this.fldsm, this.varsm, whenResourceMissingType); + } + + public JRFillVariable getPageNumber() { + return this.pageNumber; + } + + public JRFillVariable getColumnNumber() { + return this.columnNumber; + } + + public void calculateVariables() throws JRException { + if (this.variables != null && this.variables.length > 0) + for (int i = 0; i < this.variables.length; i++) { + JRFillVariable variable = this.variables[i]; + Object expressionValue = evaluate(variable.getExpression()); + Object newValue = variable.getIncrementer().increment(variable, expressionValue, AbstractValueProvider.getCurrentValueProvider()); + variable.setValue(newValue); + variable.setInitialized(false); + if (variable.getIncrementType() == 5) + variable.setIncrementedValue(variable.getValue()); + } + if (this.datasets != null && this.datasets.length > 0) + for (int i = 0; i < this.datasets.length; i++) { + JRFillElementDataset elementDataset = this.datasets[i]; + elementDataset.evaluate(this); + if (elementDataset.getIncrementType() == 5) + elementDataset.increment(); + } + } + + public void estimateVariables() throws JRException { + if (this.variables != null && this.variables.length > 0) { + JRFillVariable variable = null; + Object expressionValue = null; + Object newValue = null; + for (int i = 0; i < this.variables.length; i++) { + variable = this.variables[i]; + expressionValue = evaluateEstimated(variable.getExpression()); + newValue = variable.getIncrementer().increment(variable, expressionValue, AbstractValueProvider.getEstimatedValueProvider()); + variable.setEstimatedValue(newValue); + } + } + } + + public void estimateGroupRuptures() throws JRException { + JRFillGroup group = null; + Object oldValue = null; + Object estimatedValue = null; + boolean groupHasChanged = false; + boolean isTopLevelChange = false; + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + group = this.groups[i]; + isTopLevelChange = false; + if (!groupHasChanged) { + oldValue = evaluateOld(group.getExpression()); + estimatedValue = evaluateEstimated(group.getExpression()); + if ((oldValue == null && estimatedValue != null) || (oldValue != null && !oldValue.equals(estimatedValue))) { + groupHasChanged = true; + isTopLevelChange = true; + } + } + group.setHasChanged(groupHasChanged); + group.setTopLevelChange(isTopLevelChange); + } + } + + public void initializeVariables(byte resetType) throws JRException { + if (this.variables != null && this.variables.length > 0) + for (int i = 0; i < this.variables.length; i++) { + incrementVariable(this.variables[i], resetType); + initializeVariable(this.variables[i], resetType); + } + if (this.datasets != null && this.datasets.length > 0) + for (int i = 0; i < this.datasets.length; i++) { + incrementDataset(this.datasets[i], resetType); + initializeDataset(this.datasets[i], resetType); + } + } + + private void incrementVariable(JRFillVariable variable, byte incrementType) { + if (variable.getIncrementType() != 5) { + boolean toIncrement = false; + switch (incrementType) { + case 1: + toIncrement = true; + break; + case 2: + toIncrement = (variable.getIncrementType() == 2 || variable.getIncrementType() == 3); + break; + case 3: + toIncrement = (variable.getIncrementType() == 3); + break; + case 4: + if (variable.getIncrementType() == 4) { + JRFillGroup group = (JRFillGroup)variable.getIncrementGroup(); + toIncrement = group.hasChanged(); + } + break; + } + if (toIncrement) + variable.setIncrementedValue(variable.getValue()); + } else { + variable.setIncrementedValue(variable.getValue()); + } + } + + private void incrementDataset(JRFillElementDataset elementDataset, byte incrementType) { + if (elementDataset.getIncrementType() != 5) { + boolean toIncrement = false; + switch (incrementType) { + case 1: + toIncrement = true; + break; + case 2: + toIncrement = (elementDataset.getIncrementType() == 2 || elementDataset.getIncrementType() == 3); + break; + case 3: + toIncrement = (elementDataset.getIncrementType() == 3); + break; + case 4: + if (elementDataset.getIncrementType() == 4) { + JRFillGroup group = (JRFillGroup)elementDataset.getIncrementGroup(); + toIncrement = group.hasChanged(); + } + break; + } + if (toIncrement) + elementDataset.increment(); + } + } + + private void initializeVariable(JRFillVariable variable, byte resetType) throws JRException { + if (variable.getResetType() != 5) { + boolean toInitialize = false; + switch (resetType) { + case 1: + toInitialize = true; + break; + case 2: + toInitialize = (variable.getResetType() == 2 || variable.getResetType() == 3); + break; + case 3: + toInitialize = (variable.getResetType() == 3); + break; + case 4: + if (variable.getResetType() == 4) { + JRFillGroup group = (JRFillGroup)variable.getResetGroup(); + toInitialize = group.hasChanged(); + } + break; + } + if (toInitialize) { + variable.setValue(evaluate(variable.getInitialValueExpression())); + variable.setInitialized(true); + variable.setIncrementedValue(null); + } + } else { + variable.setValue(evaluate(variable.getExpression())); + variable.setIncrementedValue(variable.getValue()); + } + } + + private void initializeDataset(JRFillElementDataset elementDataset, byte resetType) { + boolean toInitialize = false; + switch (resetType) { + case 1: + toInitialize = true; + break; + case 2: + toInitialize = (elementDataset.getResetType() == 2 || elementDataset.getResetType() == 3); + break; + case 3: + toInitialize = (elementDataset.getResetType() == 3); + break; + case 4: + if (elementDataset.getResetType() == 4) { + JRFillGroup group = (JRFillGroup)elementDataset.getResetGroup(); + toInitialize = group.hasChanged(); + } + break; + } + if (toInitialize) + elementDataset.initialize(); + } + + public Object evaluate(JRExpression expression, byte evaluationType) throws JRException { + Object value = null; + switch (evaluationType) { + case 1: + value = evaluateOld(expression); + return value; + case 2: + value = evaluateEstimated(expression); + return value; + } + value = evaluate(expression); + return value; + } + + public Object evaluateOld(JRExpression expression) throws JRExpressionEvalException { + return this.evaluator.evaluateOld(expression); + } + + public Object evaluateEstimated(JRExpression expression) throws JRExpressionEvalException { + return this.evaluator.evaluateEstimated(expression); + } + + public Object evaluate(JRExpression expression) throws JRExpressionEvalException { + return this.evaluator.evaluate(expression); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRClonePool.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRClonePool.java new file mode 100644 index 0000000..8e9812c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRClonePool.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Set; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRClonePool { + private final JRFillCloneable original; + + private final LinkedList availableClones; + + private final boolean trackLockedClones; + + private final Set lockedClones; + + public JRClonePool(JRFillCloneable original, boolean trackLockedClones, boolean useOriginal) { + this.original = original; + this.availableClones = new LinkedList(); + this.trackLockedClones = trackLockedClones; + if (trackLockedClones) { + this.lockedClones = new HashSet(); + } else { + this.lockedClones = null; + } + if (useOriginal) + this.availableClones.add(original); + } + + public Object getClone() { + JRFillCloneable clone; + if (this.availableClones.isEmpty()) { + JRFillCloneFactory factory = new JRFillCloneFactory(); + clone = this.original.createClone(factory); + } else { + clone = this.availableClones.removeFirst(); + } + if (this.trackLockedClones) + this.lockedClones.add(clone); + return clone; + } + + public void releaseClone(Object clone) { + if (this.trackLockedClones) + if (!this.lockedClones.remove(clone)) + throw new JRRuntimeException("Cannot release clone."); + this.availableClones.addLast(clone); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableHighestIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableHighestIncrementer.java new file mode 100644 index 0000000..a4e770c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableHighestIncrementer.java @@ -0,0 +1,21 @@ +package net.sf.jasperreports.engine.fill; + +class JRComparableHighestIncrementer extends JRAbstractExtendedIncrementer { + private static JRComparableHighestIncrementer mainInstance = new JRComparableHighestIncrementer(); + + public static JRComparableHighestIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Comparable value = (Comparable)variable.getIncrementedValue(); + Comparable newValue = (Comparable)expressionValue; + if (value != null && !variable.isInitialized() && (newValue == null || value.compareTo(newValue) > 0)) + newValue = value; + return newValue; + } + + public Object initialValue() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableIncrementerFactory.java new file mode 100644 index 0000000..cd6849e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableIncrementerFactory.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +public class JRComparableIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + private static JRComparableIncrementerFactory mainInstance = new JRComparableIncrementerFactory(); + + public static JRComparableIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 4: + incrementer = JRComparableLowestIncrementer.getInstance(); + return incrementer; + case 5: + incrementer = JRComparableHighestIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableLowestIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableLowestIncrementer.java new file mode 100644 index 0000000..2919b71 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRComparableLowestIncrementer.java @@ -0,0 +1,21 @@ +package net.sf.jasperreports.engine.fill; + +class JRComparableLowestIncrementer extends JRAbstractExtendedIncrementer { + private static JRComparableLowestIncrementer mainInstance = new JRComparableLowestIncrementer(); + + public static JRComparableLowestIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Comparable value = (Comparable)variable.getIncrementedValue(); + Comparable newValue = (Comparable)expressionValue; + if (value != null && !variable.isInitialized() && (newValue == null || value.compareTo(newValue) < 0)) + newValue = value; + return newValue; + } + + public Object initialValue() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultFirstIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultFirstIncrementer.java new file mode 100644 index 0000000..efe7ec5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultFirstIncrementer.java @@ -0,0 +1,27 @@ +package net.sf.jasperreports.engine.fill; + +class JRDefaultFirstIncrementer extends JRAbstractExtendedIncrementer { + private static final JRDefaultFirstIncrementer instance = new JRDefaultFirstIncrementer(); + + public static JRDefaultFirstIncrementer getInstance() { + return instance; + } + + public Object initialValue() { + return null; + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + if (!calculable.isInitialized()) + return calculable.getValue(); + if (!calculableValue.isInitialized()) + return calculableValue.getValue(); + return null; + } + + public Object increment(JRCalculable calculable, Object expressionValue, AbstractValueProvider valueProvider) { + if (calculable.isInitialized()) + return expressionValue; + return calculable.getIncrementedValue(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultIncrementerFactory.java new file mode 100644 index 0000000..4fbbf9e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultIncrementerFactory.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +import java.math.BigDecimal; + +public class JRDefaultIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + private static JRDefaultIncrementerFactory mainInstance = new JRDefaultIncrementerFactory(); + + public static JRDefaultIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 8: + incrementer = JRDefaultSystemIncrementer.getInstance(); + return incrementer; + case 9: + incrementer = JRDefaultFirstIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultNothingIncrementer.getInstance(); + return incrementer; + } + + public static JRExtendedIncrementerFactory getFactory(Class valueClass) { + JRExtendedIncrementerFactory factory; + if (BigDecimal.class.equals(valueClass)) { + factory = JRBigDecimalIncrementerFactory.getInstance(); + } else if (Number.class.equals(valueClass) || Double.class.equals(valueClass)) { + factory = JRDoubleIncrementerFactory.getInstance(); + } else if (Float.class.equals(valueClass)) { + factory = JRFloatIncrementerFactory.getInstance(); + } else if (Long.class.equals(valueClass)) { + factory = JRLongIncrementerFactory.getInstance(); + } else if (Integer.class.equals(valueClass)) { + factory = JRIntegerIncrementerFactory.getInstance(); + } else if (Short.class.equals(valueClass)) { + factory = JRShortIncrementerFactory.getInstance(); + } else if (Byte.class.equals(valueClass)) { + factory = JRByteIncrementerFactory.getInstance(); + } else if (Comparable.class.isAssignableFrom(valueClass)) { + factory = JRComparableIncrementerFactory.getInstance(); + } else { + factory = getInstance(); + } + return factory; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultNothingIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultNothingIncrementer.java new file mode 100644 index 0000000..e592fc9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultNothingIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +class JRDefaultNothingIncrementer extends JRAbstractExtendedIncrementer { + private static JRDefaultNothingIncrementer mainInstance = new JRDefaultNothingIncrementer(); + + public static JRDefaultNothingIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + return expressionValue; + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + if (!calculableValue.isInitialized()) + return calculableValue.getValue(); + if (!calculable.isInitialized()) + return calculable.getValue(); + return null; + } + + public Object initialValue() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultSystemIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultSystemIncrementer.java new file mode 100644 index 0000000..2b2274c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDefaultSystemIncrementer.java @@ -0,0 +1,21 @@ +package net.sf.jasperreports.engine.fill; + +class JRDefaultSystemIncrementer extends JRAbstractExtendedIncrementer { + private static JRDefaultSystemIncrementer mainInstance = new JRDefaultSystemIncrementer(); + + public static JRDefaultSystemIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + return variable.getValue(); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + return calculable.getValue(); + } + + public Object initialValue() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementer.java new file mode 100644 index 0000000..f92b532 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementer.java @@ -0,0 +1,40 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.HashSet; +import java.util.Set; + +class JRDistinctCountExtendedIncrementer extends JRAbstractExtendedIncrementer { + private DistinctCountHolder lastHolder = new DistinctCountHolder(); + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)variable.getIncrementedValue(); + if (holder == null) { + holder = this.lastHolder; + } else { + this.lastHolder = holder; + } + holder.addLastValue(); + return new DistinctCountHolder(holder, expressionValue); + } + + public Object combine(JRCalculable calculable1, JRCalculable calculable2, AbstractValueProvider valueProvider) { + Set distinctValues = new HashSet(); + DistinctCountHolder holder1 = (DistinctCountHolder)calculable1.getValue(); + if (holder1 != null) { + distinctValues.addAll(holder1.getDistinctValues()); + if (holder1.getLastValue() != null) + distinctValues.add(holder1.getLastValue()); + } + DistinctCountHolder holder2 = (DistinctCountHolder)calculable2.getValue(); + if (holder2 != null) { + distinctValues.addAll(holder2.getDistinctValues()); + if (holder2.getLastValue() != null) + distinctValues.add(holder2.getLastValue()); + } + return new DistinctCountHolder(distinctValues); + } + + public Object initialValue() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementerFactory.java new file mode 100644 index 0000000..4cf27dc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementerFactory.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine.fill; + +public class JRDistinctCountExtendedIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + private static JRDistinctCountExtendedIncrementerFactory mainInstance = new JRDistinctCountExtendedIncrementerFactory(); + + public static JRDistinctCountExtendedIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + return new JRDistinctCountExtendedIncrementer(); + } + + public static JRExtendedIncrementerFactory getFactory(Class valueClass) { + return getInstance(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleAverageIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleAverageIncrementer.java new file mode 100644 index 0000000..3799147 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleAverageIncrementer.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.fill; + +class JRDoubleAverageIncrementer extends JRAbstractExtendedIncrementer { + private static JRDoubleAverageIncrementer mainInstance = new JRDoubleAverageIncrementer(); + + public static JRDoubleAverageIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Double(sumValue.doubleValue() / countValue.doubleValue()); + } + + public Object initialValue() { + return JRDoubleIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleCountIncrementer.java new file mode 100644 index 0000000..d9c6650 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleCountIncrementer.java @@ -0,0 +1,32 @@ +package net.sf.jasperreports.engine.fill; + +class JRDoubleCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRDoubleCountIncrementer mainInstance = new JRDoubleCountIncrementer(); + + public static JRDoubleCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + if (value == null || variable.isInitialized()) + value = JRDoubleIncrementerFactory.ZERO; + if (expressionValue == null) + return value; + return new Double(value.doubleValue() + 1.0D); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + Number combineValue = (Number)calculableValue.getValue(); + if (value == null || calculable.isInitialized()) + value = JRDoubleIncrementerFactory.ZERO; + if (combineValue == null) + return value; + return new Double(value.doubleValue() + combineValue.doubleValue()); + } + + public Object initialValue() { + return JRDoubleIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleDistinctCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleDistinctCountIncrementer.java new file mode 100644 index 0000000..34bbd9f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleDistinctCountIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +class JRDoubleDistinctCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRDoubleDistinctCountIncrementer mainInstance = new JRDoubleDistinctCountIncrementer(); + + public static JRDoubleDistinctCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(variable.getHelperVariable((byte)0)); + if (variable.isInitialized()) + holder.init(); + return new Double(holder.getCount()); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + return new Double(holder.getCount()); + } + + public Object initialValue() { + return JRDoubleIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleIncrementerFactory.java new file mode 100644 index 0000000..0d7ff4c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleIncrementerFactory.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine.fill; + +public class JRDoubleIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + protected static final Double ZERO = new Double(0.0D); + + private static JRDoubleIncrementerFactory mainInstance = new JRDoubleIncrementerFactory(); + + public static JRDoubleIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 1: + incrementer = JRDoubleCountIncrementer.getInstance(); + return incrementer; + case 2: + incrementer = JRDoubleSumIncrementer.getInstance(); + return incrementer; + case 3: + incrementer = JRDoubleAverageIncrementer.getInstance(); + return incrementer; + case 4: + case 5: + incrementer = JRComparableIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + case 6: + incrementer = JRDoubleStandardDeviationIncrementer.getInstance(); + return incrementer; + case 7: + incrementer = JRDoubleVarianceIncrementer.getInstance(); + return incrementer; + case 10: + incrementer = JRDoubleDistinctCountIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleStandardDeviationIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleStandardDeviationIncrementer.java new file mode 100644 index 0000000..78423fe --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleStandardDeviationIncrementer.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +class JRDoubleStandardDeviationIncrementer extends JRAbstractExtendedIncrementer { + private static JRDoubleStandardDeviationIncrementer mainInstance = new JRDoubleStandardDeviationIncrementer(); + + public static JRDoubleStandardDeviationIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number varianceValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)2)); + return new Double(Math.sqrt(varianceValue.doubleValue())); + } + + public Object initialValue() { + return JRDoubleIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleSumIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleSumIncrementer.java new file mode 100644 index 0000000..2ea5c1a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleSumIncrementer.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +class JRDoubleSumIncrementer extends JRAbstractExtendedIncrementer { + private static JRDoubleSumIncrementer mainInstance = new JRDoubleSumIncrementer(); + + public static JRDoubleSumIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + value = JRDoubleIncrementerFactory.ZERO; + return new Double(value.doubleValue() + newValue.doubleValue()); + } + + public Object initialValue() { + return JRDoubleIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleVarianceIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleVarianceIncrementer.java new file mode 100644 index 0000000..2887d3a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRDoubleVarianceIncrementer.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +class JRDoubleVarianceIncrementer extends JRAbstractExtendedIncrementer { + private static JRDoubleVarianceIncrementer mainInstance = new JRDoubleVarianceIncrementer(); + + public static JRDoubleVarianceIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + return JRDoubleIncrementerFactory.ZERO; + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Double((countValue.doubleValue() - 1.0D) * value.doubleValue() / countValue.doubleValue() + (sumValue.doubleValue() / countValue.doubleValue() - newValue.doubleValue()) * (sumValue.doubleValue() / countValue.doubleValue() - newValue.doubleValue()) / (countValue.doubleValue() - 1.0D)); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + if (calculableValue.getValue() == null) { + if (calculable.isInitialized()) + return null; + return value; + } + if (value == null || calculable.isInitialized()) + return new Double(((Number)calculableValue.getIncrementedValue()).doubleValue()); + double v1 = value.doubleValue(); + double c1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)0))).doubleValue(); + double s1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)1))).doubleValue(); + double v2 = ((Number)calculableValue.getIncrementedValue()).doubleValue(); + double c2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)0))).doubleValue(); + double s2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)1))).doubleValue(); + c1 -= c2; + s1 -= s2; + double c = c1 + c2; + return new Double(c1 / c * v1 + c2 / c * v2 + c2 / c1 * s1 / c * s1 / c + c1 / c2 * s2 / c * s2 / c - 2.0D * s1 / c * s2 / c); + } + + public Object initialValue() { + return JRDoubleIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluationTime.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluationTime.java new file mode 100644 index 0000000..f195abc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluationTime.java @@ -0,0 +1,89 @@ +package net.sf.jasperreports.engine.fill; + +import java.io.Serializable; +import net.sf.jasperreports.engine.JRGroup; + +public class JREvaluationTime implements Serializable { + private static final long serialVersionUID = 10200L; + + public static final JREvaluationTime EVALUATION_TIME_REPORT = new JREvaluationTime((byte)2, null, null); + + public static final JREvaluationTime EVALUATION_TIME_PAGE = new JREvaluationTime((byte)3, null, null); + + public static final JREvaluationTime EVALUATION_TIME_COLUMN = new JREvaluationTime((byte)4, null, null); + + public static final JREvaluationTime EVALUATION_TIME_NOW = new JREvaluationTime((byte)1, null, null); + + private final byte type; + + private final String groupName; + + private final int bandId; + + private final int hash; + + public static JREvaluationTime getGroupEvaluationTime(String groupName) { + return new JREvaluationTime((byte)5, groupName, null); + } + + public static JREvaluationTime getBandEvaluationTime(JRFillBand band) { + return new JREvaluationTime((byte)6, null, band); + } + + public static JREvaluationTime getEvaluationTime(byte type, JRGroup group, JRFillBand band) { + switch (type) { + case 2: + evaluationTime = EVALUATION_TIME_REPORT; + return evaluationTime; + case 3: + evaluationTime = EVALUATION_TIME_PAGE; + return evaluationTime; + case 4: + evaluationTime = EVALUATION_TIME_COLUMN; + return evaluationTime; + case 5: + evaluationTime = getGroupEvaluationTime(group.getName()); + return evaluationTime; + case 6: + evaluationTime = getBandEvaluationTime(band); + return evaluationTime; + } + JREvaluationTime evaluationTime = null; + return evaluationTime; + } + + private JREvaluationTime(byte type, String groupName, JRFillBand band) { + this.type = type; + this.groupName = groupName; + this.bandId = (band == null) ? 0 : band.getId(); + this.hash = computeHash(); + } + + private int computeHash() { + int hashCode = this.type; + hashCode = 31 * hashCode + ((this.groupName == null) ? 0 : this.groupName.hashCode()); + hashCode = 31 * hashCode + this.bandId; + return hashCode; + } + + public boolean equals(Object obj) { + if (obj == this) + return true; + JREvaluationTime e = (JREvaluationTime)obj; + boolean eq = (e.type == this.type); + if (eq) + switch (this.type) { + case 5: + eq = this.groupName.equals(e.groupName); + break; + case 6: + eq = (this.bandId == e.bandId); + break; + } + return eq; + } + + public int hashCode() { + return this.hash; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluator.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluator.java new file mode 100644 index 0000000..71539a3 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JREvaluator.java @@ -0,0 +1,129 @@ +package net.sf.jasperreports.engine.fill; + +import java.text.FieldPosition; +import java.text.MessageFormat; +import java.util.Locale; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.ResourceBundle; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRRuntimeException; + +public abstract class JREvaluator { + private JRFillParameter resourceBundle = null; + + private byte whenResourceMissingType; + + private JRFillParameter locale; + + public void init(Map parametersMap, Map fieldsMap, Map variablesMap, byte resourceMissingType) throws JRException { + this.whenResourceMissingType = resourceMissingType; + this.resourceBundle = (JRFillParameter)parametersMap.get("REPORT_RESOURCE_BUNDLE"); + this.locale = (JRFillParameter)parametersMap.get("REPORT_LOCALE"); + customizedInit(parametersMap, fieldsMap, variablesMap); + } + + public String msg(String pattern, Object arg0) { + return getMessageFormat(pattern).format(new Object[] { arg0 }, new StringBuffer(), (FieldPosition)null).toString(); + } + + public String msg(String pattern, Object arg0, Object arg1) { + return getMessageFormat(pattern).format(new Object[] { arg0, arg1 }, new StringBuffer(), (FieldPosition)null).toString(); + } + + public String msg(String pattern, Object arg0, Object arg1, Object arg2) { + return getMessageFormat(pattern).format(new Object[] { arg0, arg1, arg2 }, new StringBuffer(), (FieldPosition)null).toString(); + } + + public String msg(String pattern, Object[] args) { + return getMessageFormat(pattern).format(args, new StringBuffer(), (FieldPosition)null).toString(); + } + + public String str(String key) { + String str = null; + try { + str = ((ResourceBundle)this.resourceBundle.getValue()).getString(key); + } catch (NullPointerException e) { + str = handleMissingResource(key, e); + } catch (MissingResourceException e) { + str = handleMissingResource(key, e); + } + return str; + } + + public Object evaluate(JRExpression expression) throws JRExpressionEvalException { + Object value = null; + if (expression != null) + try { + value = evaluate(expression.getId()); + } catch (NullPointerException e) { + + } catch (OutOfMemoryError e) { + throw e; + } catch (Throwable e) { + throw new JRExpressionEvalException(expression, e); + } + return value; + } + + public Object evaluateOld(JRExpression expression) throws JRExpressionEvalException { + Object value = null; + if (expression != null) + try { + value = evaluateOld(expression.getId()); + } catch (NullPointerException e) { + + } catch (OutOfMemoryError e) { + throw e; + } catch (Throwable e) { + throw new JRExpressionEvalException(expression, e); + } + return value; + } + + public Object evaluateEstimated(JRExpression expression) throws JRExpressionEvalException { + Object value = null; + if (expression != null) + try { + value = evaluateEstimated(expression.getId()); + } catch (NullPointerException e) { + + } catch (OutOfMemoryError e) { + throw e; + } catch (Throwable e) { + throw new JRExpressionEvalException(expression, e); + } + return value; + } + + protected String handleMissingResource(String key, Exception e) throws JRRuntimeException { + switch (this.whenResourceMissingType) { + case 2: + str = ""; + return str; + case 3: + str = key; + return str; + case 4: + throw new JRRuntimeException("Resource not found for key \"" + key + "\".", e); + } + String str = null; + return str; + } + + protected abstract void customizedInit(Map paramMap1, Map paramMap2, Map paramMap3) throws JRException; + + protected abstract Object evaluate(int paramInt) throws Throwable; + + protected abstract Object evaluateOld(int paramInt) throws Throwable; + + protected abstract Object evaluateEstimated(int paramInt) throws Throwable; + + private MessageFormat getMessageFormat(String pattern) { + MessageFormat messageFormat = new MessageFormat(""); + messageFormat.setLocale((Locale)this.locale.getValue()); + messageFormat.applyPattern(pattern); + return messageFormat; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRExpressionEvalException.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRExpressionEvalException.java new file mode 100644 index 0000000..a3c5f58 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRExpressionEvalException.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; + +public class JRExpressionEvalException extends JRException { + private static final long serialVersionUID = 10200L; + + private JRExpression expression = null; + + public JRExpressionEvalException(JRExpression expr, Throwable throwable) { + super("Error evaluating expression : \n\tSource text : " + expr.getText(), throwable); + this.expression = expr; + } + + public JRExpression getExpression() { + return this.expression; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementer.java new file mode 100644 index 0000000..c9763c0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementer.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; + +public interface JRExtendedIncrementer extends JRIncrementer { + Object increment(JRCalculable paramJRCalculable, Object paramObject, AbstractValueProvider paramAbstractValueProvider) throws JRException; + + Object initialValue(); + + Object combine(JRCalculable paramJRCalculable1, JRCalculable paramJRCalculable2, AbstractValueProvider paramAbstractValueProvider) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementerFactory.java new file mode 100644 index 0000000..47cc726 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRExtendedIncrementerFactory.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine.fill; + +public interface JRExtendedIncrementerFactory extends JRIncrementerFactory { + JRExtendedIncrementer getExtendedIncrementer(byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBand.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBand.java new file mode 100644 index 0000000..a72725c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBand.java @@ -0,0 +1,231 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JROrigin; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRFillBand extends JRFillElementContainer implements JRBand { + private static final Log log = LogFactory.getLog(JRFillBand.class); + + private JRBand parent = null; + + private boolean isPrintWhenTrue = true; + + private boolean isNewPageColumn = false; + + private boolean isFirstWholeOnPageColumn = false; + + private Map isNewGroupMap = new HashMap(); + + private Set nowEvaluationTimes; + + private Map savedVariableValues = new HashMap(); + + protected JROrigin origin = null; + + protected JRFillBand(JRBaseFiller filler, JRBand band, JRFillObjectFactory factory) { + super(filler, (JRElementGroup)band, factory); + this.parent = band; + if (this.deepElements.length > 0) + for (int i = 0; i < this.deepElements.length; i++) + this.deepElements[i].setBand(this); + initElements(); + initConditionalStyles(); + this.nowEvaluationTimes = new HashSet(); + } + + protected JROrigin getOrigin() { + return this.origin; + } + + protected void setOrigin(JROrigin origin) { + this.origin = origin; + this.filler.getJasperPrint().addOrigin(origin); + } + + protected void setNewPageColumn(boolean isNew) { + this.isNewPageColumn = isNew; + } + + protected boolean isNewPageColumn() { + return this.isNewPageColumn; + } + + protected boolean isFirstWholeOnPageColumn() { + return this.isFirstWholeOnPageColumn; + } + + protected void setNewGroup(JRGroup group, boolean isNew) { + this.isNewGroupMap.put(group, isNew ? Boolean.TRUE : Boolean.FALSE); + } + + protected boolean isNewGroup(JRGroup group) { + Boolean value = (Boolean)this.isNewGroupMap.get(group); + if (value == null) + value = Boolean.FALSE; + return value.booleanValue(); + } + + public int getHeight() { + return (this.parent != null) ? this.parent.getHeight() : 0; + } + + public boolean isSplitAllowed() { + return this.parent.isSplitAllowed(); + } + + public void setSplitAllowed(boolean isSplitAllowed) {} + + public JRExpression getPrintWhenExpression() { + return (this.parent != null) ? this.parent.getPrintWhenExpression() : null; + } + + protected boolean isPrintWhenExpressionNull() { + return (getPrintWhenExpression() == null); + } + + protected boolean isPrintWhenTrue() { + return this.isPrintWhenTrue; + } + + protected void setPrintWhenTrue(boolean isPrintWhenTrue) { + this.isPrintWhenTrue = isPrintWhenTrue; + } + + protected boolean isToPrint() { + return (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())); + } + + protected void evaluatePrintWhenExpression(byte evaluation) throws JRException { + boolean isPrintTrue = false; + JRExpression expression = getPrintWhenExpression(); + if (expression != null) { + Boolean printWhenExpressionValue = (Boolean)this.filler.evaluateExpression(expression, evaluation); + if (printWhenExpressionValue == null) { + isPrintTrue = false; + } else { + isPrintTrue = printWhenExpressionValue.booleanValue(); + } + } + setPrintWhenTrue(isPrintTrue); + } + + protected JRPrintBand refill(int availableStretchHeight) throws JRException { + rewind(); + restoreSavedVariables(); + return fill(availableStretchHeight); + } + + protected JRPrintBand fill() throws JRException { + return fill(0, false); + } + + protected JRPrintBand fill(int availableStretchHeight) throws JRException { + return fill(availableStretchHeight, true); + } + + protected JRPrintBand fill(int availableStretchHeight, boolean isOverflowAllowed) throws JRException { + this.filler.fillContext.ensureMasterPageAvailable(); + if (Thread.currentThread().isInterrupted() || this.filler.isInterrupted()) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": interrupted"); + this.filler.setInterrupted(true); + throw new JRFillInterruptedException(); + } + this.filler.setBandOverFlowAllowed(isOverflowAllowed); + initFill(); + if (this.isNewPageColumn && !this.isOverflow) + this.isFirstWholeOnPageColumn = true; + resetElements(); + prepareElements(availableStretchHeight, isOverflowAllowed); + stretchElements(); + moveBandBottomElements(); + removeBlankElements(); + this.isFirstWholeOnPageColumn = (this.isNewPageColumn && this.isOverflow); + this.isNewPageColumn = false; + this.isNewGroupMap = new HashMap(); + JRPrintBand printBand = new JRPrintBand(); + fillElements(printBand); + return printBand; + } + + protected int getContainerHeight() { + return getHeight(); + } + + protected boolean isVariableUsedInSubreportReturns(String variableName) { + boolean used = false; + if (this.deepElements != null) + for (int i = 0; i < this.deepElements.length; i++) { + JRFillElement element = this.deepElements[i]; + if (element instanceof JRFillSubreport) { + JRFillSubreport subreport = (JRFillSubreport)element; + if (subreport.usesForReturnValue(variableName)) { + used = true; + break; + } + } + } + return used; + } + + protected void addNowEvaluationTime(JREvaluationTime evaluationTime) { + this.nowEvaluationTimes.add(evaluationTime); + } + + protected void addNowEvaluationTimes(JREvaluationTime[] evaluationTimes) { + for (int i = 0; i < evaluationTimes.length; i++) + this.nowEvaluationTimes.add(evaluationTimes[i]); + } + + protected boolean isNowEvaluationTime(JREvaluationTime evaluationTime) { + return this.nowEvaluationTimes.contains(evaluationTime); + } + + protected int getId() { + return System.identityHashCode(this); + } + + protected void evaluate(byte evaluation) throws JRException { + resetSavedVariables(); + evaluateConditionalStyles(evaluation); + super.evaluate(evaluation); + } + + protected void resetSavedVariables() { + this.savedVariableValues.clear(); + } + + protected void saveVariable(String variableName) { + if (!this.savedVariableValues.containsKey(variableName)) { + Object value = this.filler.getVariableValue(variableName); + this.savedVariableValues.put(variableName, value); + } + } + + protected void restoreSavedVariables() { + for (Iterator it = this.savedVariableValues.entrySet().iterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + String variableName = (String)entry.getKey(); + Object value = entry.getValue(); + JRFillVariable variable = this.filler.getVariable(variableName); + variable.setOldValue(value); + variable.setValue(value); + variable.setIncrementedValue(value); + } + } + + protected boolean isEmpty() { + return (this == this.filler.missingFillBand || (getHeight() == 0 && (getElements() == null || (getElements()).length == 0) && getPrintWhenExpression() == null)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBreak.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBreak.java new file mode 100644 index 0000000..7f322e4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillBreak.java @@ -0,0 +1,83 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRFillBreak extends JRFillElement implements JRBreak { + protected JRFillBreak(JRBaseFiller filler, JRBreak breakElement, JRFillObjectFactory factory) { + super(filler, (JRElement)breakElement, factory); + } + + protected JRFillBreak(JRFillBreak breakElement, JRFillCloneFactory factory) { + super(breakElement, factory); + } + + public int getWidth() { + switch (getType()) { + case 1: + width = this.filler.pageWidth - this.filler.leftMargin - this.filler.rightMargin; + return width; + } + int width = this.filler.columnWidth; + return width; + } + + public byte getType() { + return ((JRBreak)this.parent).getType(); + } + + public void setType(byte type) {} + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + setValueRepeating(true); + } + + protected JRPrintElement fill() { + return null; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitBreak(this); + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillBreak(this, factory); + } + + public void rewind() {} + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + super.prepare(availableStretchHeight, isOverflow); + if (!isToPrint()) + return false; + boolean isToPrint = true; + if (isOverflow && isAlreadyPrinted()) + isToPrint = false; + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) + isToPrint = false; + if (isToPrint) + if (getType() == 2) { + if (!this.filler.isFirstColumnBand || this.band.firstYElement != null) + setStretchHeight(getHeight() + availableStretchHeight - getRelativeY() + getY() + getBandBottomY()); + } else if (!this.filler.isFirstPageBand || this.band.firstYElement != null) { + setStretchHeight(getHeight() + availableStretchHeight - getRelativeY() + getY() + getBandBottomY()); + this.filler.columnIndex = this.filler.columnCount - 1; + } + setToPrint(isToPrint); + setReprinted(false); + return false; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCellContents.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCellContents.java new file mode 100644 index 0000000..71229e9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCellContents.java @@ -0,0 +1,459 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintFrame; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRStyleSetter; +import net.sf.jasperreports.engine.util.LineBoxWrapper; +import org.apache.commons.collections.ReferenceMap; + +public class JRFillCellContents extends JRFillElementContainer implements JRCellContents, JRFillCloneable, JRStyleSetter { + private final Map transformedContentsCache; + + private final Map boxContentsCache; + + private final JRClonePool clonePool; + + private JRFillCellContents original; + + private final JRCellContents parentCell; + + private JRLineBox lineBox; + + private int height; + + private int width; + + private int x; + + private int y; + + private int verticalSpan; + + private byte verticalPositionType = 1; + + private Map templateFrames; + + private JRDefaultStyleProvider defaultStyleProvider; + + private JRStyle initStyle; + + public JRFillCellContents(JRBaseFiller filler, JRCellContents cell, JRFillObjectFactory factory) { + super(filler, (JRElementGroup)cell, factory); + this.defaultStyleProvider = factory.getDefaultStyleProvider(); + this.parentCell = cell; + this.lineBox = cell.getLineBox(); + this.width = cell.getWidth(); + this.height = cell.getHeight(); + factory.registerDelayedStyleSetter(this, (JRStyleContainer)this.parentCell); + initElements(); + initConditionalStyles(); + initTemplatesMap(); + this.transformedContentsCache = (Map)new ReferenceMap(); + this.boxContentsCache = new HashMap(); + this.clonePool = new JRClonePool(this, true, true); + } + + private void initTemplatesMap() { + this.templateFrames = new HashMap(); + } + + protected JRFillCellContents(JRFillCellContents cellContents, JRFillCloneFactory factory) { + super(cellContents, factory); + this.defaultStyleProvider = cellContents.defaultStyleProvider; + this.parentCell = cellContents.parentCell; + this.lineBox = cellContents.lineBox; + this.width = cellContents.width; + this.height = cellContents.height; + this.initStyle = cellContents.initStyle; + initElements(); + initConditionalStyles(); + this.templateFrames = cellContents.templateFrames; + this.transformedContentsCache = (Map)new ReferenceMap(); + this.boxContentsCache = new HashMap(); + this.clonePool = new JRClonePool(this, true, true); + this.verticalPositionType = cellContents.verticalPositionType; + } + + public Color getBackcolor() { + return this.parentCell.getBackcolor(); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + protected void setBox(JRLineBox box) { + this.lineBox = box; + initTemplatesMap(); + } + + public int getHeight() { + return this.height; + } + + public int getWidth() { + return this.width; + } + + protected void setHeight(int height) { + this.height = height; + } + + protected void setWidth(int width) { + this.width = width; + } + + public JRFillCellContents getBoxContents(boolean left, boolean right, boolean top) { + if (this.lineBox == null) + return this; + boolean copyLeft = (left && this.lineBox.getLeftPen().getLineWidth().floatValue() <= 0.0F && this.lineBox.getRightPen().getLineWidth().floatValue() > 0.0F); + boolean copyRight = (right && this.lineBox.getRightPen().getLineWidth().floatValue() <= 0.0F && this.lineBox.getLeftPen().getLineWidth().floatValue() > 0.0F); + boolean copyTop = (top && this.lineBox.getTopPen().getLineWidth().floatValue() <= 0.0F && this.lineBox.getBottomPen().getLineWidth().floatValue() > 0.0F); + if (!copyLeft && !copyRight && !copyTop) + return this; + Object key = new BoxContents(copyLeft, copyRight, copyTop); + JRFillCellContents boxContents = (JRFillCellContents)this.boxContentsCache.get(key); + if (boxContents == null) { + boxContents = (JRFillCellContents)createClone(); + JRLineBox newBox = this.lineBox.clone((JRBoxContainer)this.parentCell); + if (copyLeft) + newBox.copyLeftPen(this.lineBox.getRightPen()); + if (copyRight) + newBox.copyRightPen(this.lineBox.getLeftPen()); + if (copyTop) + newBox.copyTopPen(this.lineBox.getBottomPen()); + boxContents.setBox(newBox); + this.boxContentsCache.put(key, boxContents); + } + return boxContents; + } + + public JRFillCellContents getTransformedContents(int newWidth, int newHeight, byte xPosition, byte yPosition) throws JRException { + if (getHeight() == newHeight && getWidth() == newWidth) + return this; + if (newHeight < getHeight() || newWidth < getWidth()) + throw new JRException("Cannot shrink cell contents."); + Object key = new StretchedContents(newWidth, newHeight, xPosition, yPosition); + JRFillCellContents transformedCell = (JRFillCellContents)this.transformedContentsCache.get(key); + if (transformedCell == null) { + transformedCell = (JRFillCellContents)createClone(); + transformedCell.transform(newWidth, newHeight, xPosition, yPosition); + transformedCell.setElementsBandBottomY(); + this.transformedContentsCache.put(key, transformedCell); + } + return transformedCell; + } + + private void transform(int newWidth, int newHeight, byte xPosition, byte yPosition) { + transformElements(newWidth, newHeight, xPosition, yPosition); + this.width = newWidth; + this.height = newHeight; + } + + private void transformElements(int newWidth, int newHeight, byte xPosition, byte yPosition) { + if ((this.height == newHeight || yPosition == 1) && (this.width == newWidth || xPosition == 1)) + return; + double scaleX = -1.0D; + int offsetX = 0; + switch (xPosition) { + case 2: + offsetX = (newWidth - this.width) / 2; + break; + case 3: + offsetX = newWidth - this.width; + break; + case 4: + scaleX = newWidth / this.width; + break; + } + double scaleY = -1.0D; + int offsetY = 0; + switch (yPosition) { + case 2: + offsetY = (newHeight - this.height) / 2; + break; + case 3: + offsetY = newHeight - this.height; + break; + case 4: + scaleY = newHeight / this.height; + break; + } + transformElements(getElements(), scaleX, offsetX, scaleY, offsetY); + } + + private static void transformElements(JRElement[] elements, double scaleX, int offsetX, double scaleY, int offsetY) { + if (elements != null) + for (int i = 0; i < elements.length; i++) { + JRFillElement element = (JRFillElement)elements[i]; + if (scaleX != -1.0D) { + element.setX((int)(element.getX() * scaleX)); + element.setWidth((int)(element.getWidth() * scaleX)); + } + if (offsetX != 0) + element.setX(element.getX() + offsetX); + if (scaleY != -1.0D) { + element.setY((int)(element.getY() * scaleY)); + element.setHeight((int)(element.getHeight() * scaleY)); + } + if (offsetY != 0) + element.setY(element.getY() + offsetY); + if (element instanceof JRFrame) { + JRElement[] frameElements = ((JRFrame)element).getElements(); + transformElements(frameElements, scaleX, offsetX, scaleY, offsetY); + } + } + } + + protected void prepare(int availableStretchHeight) throws JRException { + initFill(); + resetElements(); + prepareElements(availableStretchHeight, true); + } + + protected JRPrintFrame fill() throws JRException { + stretchElements(); + moveBandBottomElements(); + removeBlankElements(); + JRTemplatePrintFrame printCell = new JRTemplatePrintFrame(getTemplateFrame()); + printCell.setX(this.x); + printCell.setY(this.y); + printCell.setWidth(this.width); + fillElements(printCell); + verticallyPositionElements(printCell); + printCell.setHeight(getPrintHeight()); + return printCell; + } + + private JRTemplateFrame getTemplateFrame() { + JRStyle style = getStyle(); + JRTemplateFrame template = (JRTemplateFrame)this.templateFrames.get(style); + if (template == null) { + template = new JRTemplateFrame(null, this.filler.getJasperPrint().getDefaultStyleProvider(), this); + this.templateFrames.put(style, template); + } + return template; + } + + protected void verticallyPositionElements(JRTemplatePrintFrame printCell) { + int positionOffset; + switch (this.verticalPositionType) { + case 2: + positionOffset = (getStretchHeight() - getContainerHeight()) / 2; + break; + case 3: + positionOffset = getStretchHeight() - getContainerHeight(); + break; + default: + positionOffset = 0; + break; + } + if (positionOffset != 0) { + List printElements = printCell.getElements(); + int positionY = getStretchHeight() - positionOffset; + boolean outside = false; + for (Iterator it = printElements.iterator(); !outside && it.hasNext(); ) { + JRPrintElement element = it.next(); + outside = (element.getY() > positionY); + } + if (!outside) + for (Iterator iterator = printElements.iterator(); iterator.hasNext(); ) { + JRPrintElement element = iterator.next(); + element.setY(element.getY() + positionOffset); + } + } + } + + protected int getPrintHeight() { + return getStretchHeight() + getTopPadding() + getBottomPadding(); + } + + protected void stretchTo(int stretchHeight) { + setStretchHeight(stretchHeight - getTopPadding() - getBottomPadding()); + } + + protected static class BoxContents { + final boolean left; + + final boolean right; + + final boolean top; + + final int hashCode; + + public BoxContents(boolean left, boolean right, boolean top) { + this.left = left; + this.right = right; + this.top = top; + int hash = left ? 1231 : 1237; + hash = 31 * hash + (right ? 1231 : 1237); + hash = 31 * hash + (top ? 1231 : 1237); + this.hashCode = hash; + } + + public boolean equals(Object obj) { + if (obj == this) + return true; + BoxContents b = (BoxContents)obj; + return (b.left == this.left && b.right == this.right && b.top == this.top); + } + + public int hashCode() { + return this.hashCode; + } + } + + protected static class StretchedContents { + final int newHeight; + + final int newWidth; + + final int hashCode; + + final byte xPosition; + + final byte yPosition; + + StretchedContents(int newWidth, int newHeight, byte xPosition, byte yPosition) { + this.newHeight = newHeight; + this.newWidth = newWidth; + this.xPosition = xPosition; + this.yPosition = yPosition; + int hash = newHeight; + hash = 31 * hash + newWidth; + hash = 31 * hash + xPosition; + hash = 31 * hash + yPosition; + this.hashCode = hash; + } + + public boolean equals(Object o) { + if (o == this) + return true; + StretchedContents s = (StretchedContents)o; + return (s.newHeight == this.newHeight && s.newWidth == this.newWidth && s.xPosition == this.xPosition && s.yPosition == this.yPosition); + } + + public int hashCode() { + return this.hashCode; + } + } + + protected int getContainerHeight() { + return getHeight() - getTopPadding() - getBottomPadding(); + } + + protected int getTopPadding() { + return (this.lineBox == null) ? 0 : this.lineBox.getTopPadding().intValue(); + } + + protected int getBottomPadding() { + return (this.lineBox == null) ? 0 : this.lineBox.getBottomPadding().intValue(); + } + + public JRFillCloneable createClone() { + JRFillCloneFactory factory = new JRFillCloneFactory(); + return createClone(factory); + } + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillCellContents(this, factory); + } + + public JRFillCellContents getWorkingClone() { + JRFillCellContents clone = (JRFillCellContents)this.clonePool.getClone(); + clone.original = this; + return clone; + } + + public void releaseWorkingClone() { + this.original.clonePool.releaseClone(this); + } + + public void setX(int x) { + this.x = x; + } + + public void setY(int y) { + this.y = y; + } + + public int getVerticalSpan() { + return this.verticalSpan; + } + + public void setVerticalSpan(int span) { + this.verticalSpan = span; + } + + public void setVerticalPositionType(byte positionType) { + this.verticalPositionType = positionType; + } + + protected void evaluate(byte evaluation) throws JRException { + evaluateConditionalStyles(evaluation); + super.evaluate(evaluation); + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public JRStyle getStyle() { + JRStyle crtStyle = this.initStyle; + boolean isUsingDefaultStyle = false; + if (crtStyle == null) { + crtStyle = this.filler.getDefaultStyle(); + isUsingDefaultStyle = true; + } + JRStyle evalStyle = getEvaluatedConditionalStyle(crtStyle); + if (isUsingDefaultStyle && evalStyle == crtStyle) + evalStyle = null; + return evalStyle; + } + + protected void initConditionalStyles() { + super.initConditionalStyles(); + collectConditionalStyle(this.initStyle); + } + + public Byte getMode() { + return this.parentCell.getMode(); + } + + public String getStyleNameReference() { + return null; + } + + public void setStyle(JRStyle style) { + this.initStyle = style; + collectConditionalStyle(style); + } + + public void setStyleNameReference(String name) { + throw new UnsupportedOperationException("Style name references not allowed at fill time"); + } + + public Color getDefaultLineColor() { + return this.parentCell.getDefaultLineColor(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChart.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChart.java new file mode 100644 index 0000000..01a0b0b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChart.java @@ -0,0 +1,1486 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Paint; +import java.awt.geom.Rectangle2D; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.text.SimpleDateFormat; +import java.util.Iterator; +import java.util.List; +import java.util.SortedSet; +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRMultiAxisPlot; +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.fill.JRFillAreaPlot; +import net.sf.jasperreports.charts.fill.JRFillBar3DPlot; +import net.sf.jasperreports.charts.fill.JRFillBarPlot; +import net.sf.jasperreports.charts.fill.JRFillCategoryDataset; +import net.sf.jasperreports.charts.fill.JRFillChartAxis; +import net.sf.jasperreports.charts.fill.JRFillHighLowDataset; +import net.sf.jasperreports.charts.fill.JRFillLinePlot; +import net.sf.jasperreports.charts.fill.JRFillMeterPlot; +import net.sf.jasperreports.charts.fill.JRFillMultiAxisPlot; +import net.sf.jasperreports.charts.fill.JRFillPie3DPlot; +import net.sf.jasperreports.charts.fill.JRFillPieDataset; +import net.sf.jasperreports.charts.fill.JRFillPiePlot; +import net.sf.jasperreports.charts.fill.JRFillThermometerPlot; +import net.sf.jasperreports.charts.fill.JRFillTimePeriodDataset; +import net.sf.jasperreports.charts.fill.JRFillTimeSeriesDataset; +import net.sf.jasperreports.charts.fill.JRFillXyDataset; +import net.sf.jasperreports.charts.fill.JRFillXyzDataset; +import net.sf.jasperreports.charts.util.CategoryChartHyperlinkProvider; +import net.sf.jasperreports.charts.util.ChartHyperlinkProvider; +import net.sf.jasperreports.charts.util.ChartRendererFactory; +import net.sf.jasperreports.charts.util.HighLowChartHyperlinkProvider; +import net.sf.jasperreports.charts.util.JRMeterInterval; +import net.sf.jasperreports.charts.util.PieChartHyperlinkProvider; +import net.sf.jasperreports.charts.util.PieLabelGenerator; +import net.sf.jasperreports.charts.util.TimePeriodChartHyperlinkProvider; +import net.sf.jasperreports.charts.util.TimeSeriesChartHyperlinkProvider; +import net.sf.jasperreports.charts.util.XYChartHyperlinkProvider; +import net.sf.jasperreports.engine.JRAbstractChartCustomizer; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartCustomizer; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameters; +import net.sf.jasperreports.engine.JRPrintImage; +import net.sf.jasperreports.engine.JRRenderable; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.base.JRBaseFont; +import net.sf.jasperreports.engine.util.JRClassLoader; +import net.sf.jasperreports.engine.util.JRFontUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.util.JRSingletonCache; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; +import org.jfree.chart.ChartFactory; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.Axis; +import org.jfree.chart.axis.AxisLocation; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.CategoryLabelPositions; +import org.jfree.chart.axis.DateAxis; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.labels.CategoryItemLabelGenerator; +import org.jfree.chart.labels.PieSectionLabelGenerator; +import org.jfree.chart.labels.XYItemLabelGenerator; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.plot.DefaultDrawingSupplier; +import org.jfree.chart.plot.DialShape; +import org.jfree.chart.plot.DrawingSupplier; +import org.jfree.chart.plot.MeterInterval; +import org.jfree.chart.plot.MeterPlot; +import org.jfree.chart.plot.PiePlot; +import org.jfree.chart.plot.PiePlot3D; +import org.jfree.chart.plot.Plot; +import org.jfree.chart.plot.ThermometerPlot; +import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.category.BarRenderer3D; +import org.jfree.chart.renderer.category.CategoryItemRenderer; +import org.jfree.chart.renderer.category.LineAndShapeRenderer; +import org.jfree.chart.renderer.category.StackedBarRenderer3D; +import org.jfree.chart.renderer.xy.CandlestickRenderer; +import org.jfree.chart.renderer.xy.HighLowRenderer; +import org.jfree.chart.renderer.xy.XYBubbleRenderer; +import org.jfree.chart.renderer.xy.XYItemRenderer; +import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; +import org.jfree.chart.title.LegendTitle; +import org.jfree.chart.title.TextTitle; +import org.jfree.chart.title.Title; +import org.jfree.data.Range; +import org.jfree.data.category.CategoryDataset; +import org.jfree.data.general.PieDataset; +import org.jfree.data.general.ValueDataset; +import org.jfree.data.xy.IntervalXYDataset; +import org.jfree.data.xy.OHLCDataset; +import org.jfree.data.xy.XYDataset; +import org.jfree.data.xy.XYZDataset; +import org.jfree.ui.RectangleEdge; + +public class JRFillChart extends JRFillElement implements JRChart { + private static final Color TRANSPARENT_PAINT = new Color(0, 0, 0, 0); + + private static final JRSingletonCache chartRendererFactoryCache = new JRSingletonCache(ChartRendererFactory.class); + + protected byte chartType = 0; + + protected JRFont titleFont = null; + + protected JRFont subtitleFont = null; + + protected JRFont legendFont = null; + + protected JRGroup evaluationGroup = null; + + protected JRFillChartDataset dataset = null; + + protected JRChartPlot plot = null; + + protected JRRenderable renderer = null; + + private String anchorName = null; + + private String hyperlinkReference = null; + + private String hyperlinkAnchor = null; + + private Integer hyperlinkPage = null; + + private String hyperlinkTooltip; + + private JRPrintHyperlinkParameters hyperlinkParameters; + + protected String customizerClass; + + protected JRChartCustomizer chartCustomizer; + + protected String renderType; + + protected JFreeChart chart; + + protected ChartHyperlinkProvider chartHyperlinkProvider; + + protected JRFillChart(JRBaseFiller filler, JRChart chart, JRFillObjectFactory factory) { + super(filler, (JRElement)chart, factory); + this.chartType = chart.getChartType(); + switch (this.chartType) { + case 1: + this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot()); + break; + case 3: + this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot()); + break; + case 2: + this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBar3DPlot((JRBar3DPlot)chart.getPlot()); + break; + case 4: + this.dataset = (JRFillChartDataset)factory.getXyzDataset((JRXyzDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBubblePlot((JRBubblePlot)chart.getPlot()); + break; + case 5: + this.dataset = (JRFillChartDataset)factory.getHighLowDataset((JRHighLowDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getCandlestickPlot((JRCandlestickPlot)chart.getPlot()); + break; + case 6: + this.dataset = (JRFillChartDataset)factory.getHighLowDataset((JRHighLowDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getHighLowPlot((JRHighLowPlot)chart.getPlot()); + break; + case 7: + this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getLinePlot((JRLinePlot)chart.getPlot()); + break; + case 17: + this.dataset = (JRFillChartDataset)factory.getValueDataset((JRValueDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getMeterPlot((JRMeterPlot)chart.getPlot()); + break; + case 19: + this.plot = (JRChartPlot)factory.getMultiAxisPlot((JRMultiAxisPlot)chart.getPlot()); + this.dataset = ((JRFillMultiAxisPlot)this.plot).getMainDataset(); + break; + case 9: + this.dataset = (JRFillChartDataset)factory.getPieDataset((JRPieDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getPiePlot((JRPiePlot)chart.getPlot()); + break; + case 8: + this.dataset = (JRFillChartDataset)factory.getPieDataset((JRPieDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getPie3DPlot((JRPie3DPlot)chart.getPlot()); + break; + case 10: + this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getScatterPlot((JRScatterPlot)chart.getPlot()); + break; + case 12: + this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot()); + break; + case 11: + this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getBar3DPlot((JRBar3DPlot)chart.getPlot()); + break; + case 18: + this.dataset = (JRFillChartDataset)factory.getValueDataset((JRValueDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getThermometerPlot((JRThermometerPlot)chart.getPlot()); + break; + case 16: + this.dataset = (JRFillChartDataset)factory.getTimeSeriesDataset((JRTimeSeriesDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getTimeSeriesPlot((JRTimeSeriesPlot)chart.getPlot()); + break; + case 13: + this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot()); + break; + case 14: + switch (chart.getDataset().getDatasetType()) { + case 6: + this.dataset = (JRFillChartDataset)factory.getTimeSeriesDataset((JRTimeSeriesDataset)chart.getDataset()); + break; + case 5: + this.dataset = (JRFillChartDataset)factory.getTimePeriodDataset((JRTimePeriodDataset)chart.getDataset()); + break; + case 3: + this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + break; + } + this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot()); + break; + case 15: + this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getLinePlot((JRLinePlot)chart.getPlot()); + break; + case 20: + this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset()); + this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot()); + break; + default: + throw new JRRuntimeException("Chart type not supported."); + } + this.titleFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)chart, chart.getTitleFont()); + this.subtitleFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)chart, chart.getSubtitleFont()); + this.legendFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)chart, chart.getLegendFont()); + this.evaluationGroup = factory.getGroup(chart.getEvaluationGroup()); + this.customizerClass = chart.getCustomizerClass(); + if (this.customizerClass != null && this.customizerClass.length() > 0) { + try { + Class myClass = JRClassLoader.loadClassForName(this.customizerClass); + this.chartCustomizer = myClass.newInstance(); + } catch (Exception e) { + throw new JRRuntimeException("Could not create chart customizer instance.", e); + } + if (this.chartCustomizer instanceof JRAbstractChartCustomizer) + ((JRAbstractChartCustomizer)this.chartCustomizer).init(filler, this); + } + this.renderType = chart.getRenderType(); + if (this.renderType == null) + this.renderType = JRProperties.getProperty(getParentProperties(), "net.sf.jasperreports.chart.render.type"); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public boolean isShowLegend() { + return ((JRChart)this.parent).isShowLegend(); + } + + public void setShowLegend(boolean isShowLegend) {} + + public String getRenderType() { + return this.renderType; + } + + public void setRenderType(String renderType) {} + + public byte getEvaluationTime() { + return ((JRChart)this.parent).getEvaluationTime(); + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return ((JRBoxContainer)this.parent).getLineBox(); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen()); + } + + public Color getBorderColor() { + return getLineBox().getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return getLineBox().getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + getLineBox().getPen().setLineColor(borderColor); + } + + public int getPadding() { + return getLineBox().getPadding().intValue(); + } + + public Integer getOwnPadding() { + return getLineBox().getOwnPadding(); + } + + public void setPadding(int padding) { + getLineBox().setPadding(padding); + } + + public void setPadding(Integer padding) { + getLineBox().setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen()); + } + + public Color getTopBorderColor() { + return getLineBox().getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return getLineBox().getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + getLineBox().getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return getLineBox().getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return getLineBox().getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + getLineBox().setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + getLineBox().setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen()); + } + + public Color getLeftBorderColor() { + return getLineBox().getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return getLineBox().getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + getLineBox().getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return getLineBox().getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return getLineBox().getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + getLineBox().setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + getLineBox().setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen()); + } + + public Color getBottomBorderColor() { + return getLineBox().getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return getLineBox().getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + getLineBox().getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return getLineBox().getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return getLineBox().getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + getLineBox().setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + getLineBox().setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen()); + } + + public Color getRightBorderColor() { + return getLineBox().getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return getLineBox().getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + getLineBox().getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return getLineBox().getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return getLineBox().getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + getLineBox().setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + getLineBox().setRightPadding(rightPadding); + } + + public JRFont getTitleFont() { + return this.titleFont; + } + + public byte getTitlePosition() { + return ((JRChart)this.parent).getTitlePosition(); + } + + public void setTitlePosition(byte titlePosition) {} + + public Color getTitleColor() { + return JRStyleResolver.getTitleColor(this); + } + + public Color getOwnTitleColor() { + return ((JRChart)this.parent).getOwnTitleColor(); + } + + public void setTitleColor(Color titleColor) {} + + public JRFont getSubtitleFont() { + return this.subtitleFont; + } + + public Color getOwnSubtitleColor() { + return ((JRChart)this.parent).getOwnSubtitleColor(); + } + + public Color getSubtitleColor() { + return JRStyleResolver.getSubtitleColor(this); + } + + public void setSubtitleColor(Color subtitleColor) {} + + public Color getOwnLegendColor() { + return ((JRChart)this.parent).getOwnLegendColor(); + } + + public Color getLegendColor() { + return JRStyleResolver.getLegendColor(this); + } + + public void setLegendColor(Color legendColor) {} + + public Color getOwnLegendBackgroundColor() { + return ((JRChart)this.parent).getOwnLegendBackgroundColor(); + } + + public Color getLegendBackgroundColor() { + return JRStyleResolver.getLegendBackgroundColor(this); + } + + public void setLegendBackgroundColor(Color legendBackgroundColor) {} + + public JRFont getLegendFont() { + return this.legendFont; + } + + public byte getLegendPosition() { + return ((JRChart)this.parent).getLegendPosition(); + } + + public void setLegendPosition(byte legendPosition) {} + + public JRExpression getTitleExpression() { + return ((JRChart)this.parent).getTitleExpression(); + } + + public JRExpression getSubtitleExpression() { + return ((JRChart)this.parent).getSubtitleExpression(); + } + + public byte getHyperlinkType() { + return ((JRChart)this.parent).getHyperlinkType(); + } + + public byte getHyperlinkTarget() { + return ((JRChart)this.parent).getHyperlinkTarget(); + } + + public JRExpression getAnchorNameExpression() { + return ((JRChart)this.parent).getAnchorNameExpression(); + } + + public JRExpression getHyperlinkReferenceExpression() { + return ((JRChart)this.parent).getHyperlinkReferenceExpression(); + } + + public JRExpression getHyperlinkAnchorExpression() { + return ((JRChart)this.parent).getHyperlinkAnchorExpression(); + } + + public JRExpression getHyperlinkPageExpression() { + return ((JRChart)this.parent).getHyperlinkPageExpression(); + } + + public JRChartDataset getDataset() { + return this.dataset; + } + + public void setDataset(JRFillChartDataset dataset) { + this.dataset = dataset; + } + + public JRChartPlot getPlot() { + return this.plot; + } + + protected JRRenderable getRenderer() { + return this.renderer; + } + + protected String getAnchorName() { + return this.anchorName; + } + + protected String getHyperlinkReference() { + return this.hyperlinkReference; + } + + protected String getHyperlinkAnchor() { + return this.hyperlinkAnchor; + } + + protected Integer getHyperlinkPage() { + return this.hyperlinkPage; + } + + protected String getHyperlinkTooltip() { + return this.hyperlinkTooltip; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + protected JRTemplateImage getJRTemplateImage() { + JRStyle style = getStyle(); + JRTemplateImage template = (JRTemplateImage)getTemplate(style); + if (template == null) { + template = new JRTemplateImage(this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + registerTemplate(style, template); + } + return template; + } + + protected void rewind() {} + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) + if (getEvaluationTime() == 1) + evaluateRenderer(evaluation); + } + + protected void evaluateRenderer(byte evaluation) throws JRException { + evaluateChart(evaluation); + Rectangle2D rectangle = new Rectangle2D.Double(0.0D, 0.0D, getWidth(), getHeight()); + this.renderer = getChartRendererFactory(getRenderType()).getRenderer(this.chart, this.chartHyperlinkProvider, rectangle); + } + + protected static ChartRendererFactory getChartRendererFactory(String renderType) { + ChartRendererFactory chartRendererFactory = null; + String factoryClass = JRProperties.getProperty("net.sf.jasperreports.chart.renderer.factory." + renderType); + if (factoryClass == null) + throw new JRRuntimeException("No chart renderer factory specifyed for '" + renderType + "' render type."); + try { + chartRendererFactory = (ChartRendererFactory)chartRendererFactoryCache.getCachedInstance(factoryClass); + } catch (JRException e) { + throw new JRRuntimeException(e); + } + return chartRendererFactory; + } + + protected JFreeChart evaluateChart(byte evaluation) throws JRException { + evaluateProperties(evaluation); + evaluateDatasetRun(evaluation); + switch (this.chartType) { + case 1: + evaluateAreaChart(evaluation); + break; + case 3: + evaluateBarChart(evaluation); + break; + case 2: + evaluateBar3DChart(evaluation); + break; + case 4: + evaluateBubbleChart(evaluation); + break; + case 5: + evaluateCandlestickChart(evaluation); + break; + case 6: + evaluateHighLowChart(evaluation); + break; + case 7: + evaluateLineChart(evaluation); + break; + case 17: + evaluateMeterChart(evaluation); + break; + case 19: + evaluateMultiAxisChart(evaluation); + break; + case 9: + evaluatePieChart(evaluation); + break; + case 8: + evaluatePie3DChart(evaluation); + break; + case 10: + evaluateScatterChart(evaluation); + break; + case 12: + evaluateStackedBarChart(evaluation); + break; + case 11: + evaluateStackedBar3DChart(evaluation); + break; + case 18: + evaluateThermometerChart(evaluation); + break; + case 16: + evaluateTimeSeriesChart(evaluation); + break; + case 13: + evaluateXyAreaChart(evaluation); + break; + case 14: + evaluateXYBarChart(evaluation); + break; + case 15: + evaluateXyLineChart(evaluation); + break; + case 20: + evaluateStackedAreaChart(evaluation); + break; + default: + throw new JRRuntimeException("Chart type " + getChartType() + " not supported."); + } + if (this.chartCustomizer != null) + this.chartCustomizer.customize(this.chart, this); + this.anchorName = (String)evaluateExpression(getAnchorNameExpression(), evaluation); + this.hyperlinkReference = (String)evaluateExpression(getHyperlinkReferenceExpression(), evaluation); + this.hyperlinkAnchor = (String)evaluateExpression(getHyperlinkAnchorExpression(), evaluation); + this.hyperlinkPage = (Integer)evaluateExpression(getHyperlinkPageExpression(), evaluation); + this.hyperlinkTooltip = (String)evaluateExpression(getHyperlinkTooltipExpression(), evaluation); + this.hyperlinkParameters = JRFillHyperlinkHelper.evaluateHyperlinkParameters((JRHyperlink)this, this.expressionEvaluator, evaluation); + return this.chart; + } + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) { + boolean willOverflow = false; + if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) { + setToPrint(true); + } else { + setToPrint(false); + } + if (!isToPrint()) + return willOverflow; + boolean isToPrint = true; + boolean isReprinted = false; + if (getEvaluationTime() == 1) { + if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows()) + isToPrint = false; + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + isToPrint = false; + willOverflow = true; + } + if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues()))) + isReprinted = true; + if (isToPrint && isRemoveLineWhenBlank() && getRenderer() == null) + isToPrint = false; + } else { + if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows()) + isToPrint = false; + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + isToPrint = false; + willOverflow = true; + } + if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues()))) + isReprinted = true; + } + setToPrint(isToPrint); + setReprinted(isReprinted); + return willOverflow; + } + + protected JRPrintElement fill() { + JRTemplatePrintImage printImage = new JRTemplatePrintImage(getJRTemplateImage()); + printImage.setX(getX()); + printImage.setY(getRelativeY()); + printImage.setWidth(getWidth()); + printImage.setHeight(getStretchHeight()); + byte evaluationType = getEvaluationTime(); + if (evaluationType == 1) { + copy(printImage); + } else { + this.filler.addBoundElement(this, printImage, evaluationType, getEvaluationGroup(), this.band); + } + return printImage; + } + + protected void copy(JRPrintImage printImage) { + printImage.setRenderer(getRenderer()); + printImage.setAnchorName(getAnchorName()); + printImage.setHyperlinkReference(getHyperlinkReference()); + printImage.setHyperlinkAnchor(getHyperlinkAnchor()); + printImage.setHyperlinkPage(getHyperlinkPage()); + printImage.setHyperlinkTooltip(getHyperlinkTooltip()); + printImage.setBookmarkLevel(getBookmarkLevel()); + printImage.setHyperlinkParameters(this.hyperlinkParameters); + transferProperties((JRPrintElement)printImage); + } + + public byte getChartType() { + return this.chartType; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitChart(this); + } + + private void configureChart(JRChartPlot jrPlot, byte evaluation) throws JRException { + if (getMode() == 1) { + this.chart.setBackgroundPaint(getBackcolor()); + } else { + this.chart.setBackgroundPaint(TRANSPARENT_PAINT); + } + RectangleEdge titleEdge = getEdge(getTitlePosition()); + if (this.chart.getTitle() != null) { + TextTitle title = this.chart.getTitle(); + title.setPaint(getTitleColor()); + title.setFont(new Font(JRFontUtil.getAttributes(getTitleFont()))); + title.setPosition(titleEdge); + } + String subtitleText = (String)evaluateExpression(getSubtitleExpression(), evaluation); + if (subtitleText != null) { + TextTitle subtitle = new TextTitle(subtitleText); + subtitle.setPaint(getSubtitleColor()); + subtitle.setFont(new Font(JRFontUtil.getAttributes(getSubtitleFont()))); + subtitle.setPosition(titleEdge); + this.chart.addSubtitle((Title)subtitle); + } + LegendTitle legend = this.chart.getLegend(); + if (legend != null) { + legend.setItemPaint(getLegendColor()); + if (getOwnLegendBackgroundColor() == null) { + legend.setBackgroundPaint(TRANSPARENT_PAINT); + } else { + legend.setBackgroundPaint(getLegendBackgroundColor()); + } + this.chart.getLegend().setItemFont(new Font(JRFontUtil.getAttributes(getLegendFont()))); + this.chart.getLegend().setPosition(getEdge(getLegendPosition())); + } + configurePlot(this.chart.getPlot(), jrPlot); + } + + private void configurePlot(Plot p, JRChartPlot jrPlot) { + p.setOutlinePaint(TRANSPARENT_PAINT); + if (getPlot().getOwnBackcolor() == null) { + p.setBackgroundPaint(TRANSPARENT_PAINT); + } else { + p.setBackgroundPaint(getPlot().getBackcolor()); + } + p.setBackgroundAlpha(getPlot().getBackgroundAlpha()); + p.setForegroundAlpha(getPlot().getForegroundAlpha()); + SortedSet seriesColors = getPlot().getSeriesColors(); + if (p instanceof CategoryPlot) { + CategoryAxis axis = ((CategoryPlot)p).getDomainAxis(); + double labelRotation = getPlot().getLabelRotation(); + if (labelRotation == 90.0D) { + axis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90); + } else if (labelRotation == -90.0D) { + axis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); + } else if (labelRotation < 0.0D) { + axis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(-labelRotation / 180.0D * Math.PI)); + } else if (labelRotation > 0.0D) { + axis.setCategoryLabelPositions(CategoryLabelPositions.createDownRotationLabelPositions(labelRotation / 180.0D * Math.PI)); + } + } + if (seriesColors != null) + if (seriesColors.size() == 1) { + Paint[] colors = new Paint[DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE.length + 1]; + colors[0] = ((JRChartPlot.JRSeriesColor)seriesColors.first()).getColor(); + for (int i = 0; i < DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE.length; i++) + colors[i + 1] = DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE[i]; + p.setDrawingSupplier((DrawingSupplier)new DefaultDrawingSupplier(colors, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE)); + } else if (seriesColors.size() > 1) { + Color[] colors = new Color[seriesColors.size()]; + JRChartPlot.JRSeriesColor[] colorSequence = new JRChartPlot.JRSeriesColor[seriesColors.size()]; + seriesColors.toArray((Object[])colorSequence); + for (int i = 0; i < colorSequence.length; i++) + colors[i] = colorSequence[i].getColor(); + p.setDrawingSupplier((DrawingSupplier)new DefaultDrawingSupplier((Paint[])colors, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE)); + } + } + + private void configureAxisSeriesColors(CategoryItemRenderer renderer, JRChartPlot jrPlot) { + SortedSet seriesColors = jrPlot.getSeriesColors(); + if (seriesColors != null) { + Iterator iter = seriesColors.iterator(); + while (iter.hasNext()) { + JRChartPlot.JRSeriesColor seriesColor = iter.next(); + renderer.setSeriesPaint(seriesColor.getSeriesOrder(), seriesColor.getColor()); + } + } + } + + private void configureAxisSeriesColors(XYItemRenderer renderer, JRChartPlot jrPlot) { + SortedSet seriesColors = jrPlot.getSeriesColors(); + if (seriesColors != null) { + Iterator iter = seriesColors.iterator(); + while (iter.hasNext()) { + JRChartPlot.JRSeriesColor seriesColor = iter.next(); + renderer.setSeriesPaint(seriesColor.getSeriesOrder(), seriesColor.getColor()); + } + } + } + + private void configureAxis(Axis axis, JRFont labelFont, Color labelColor, JRFont tickLabelFont, Color tickLabelColor, String tickLabelMask, Color lineColor) { + axis.setLabelFont(new Font(JRFontUtil.getAttributes(labelFont))); + axis.setTickLabelFont(new Font(JRFontUtil.getAttributes(tickLabelFont))); + if (labelColor != null) + axis.setLabelPaint(labelColor); + if (tickLabelColor != null) + axis.setTickLabelPaint(tickLabelColor); + if (lineColor != null) { + axis.setAxisLinePaint(lineColor); + axis.setTickMarkPaint(lineColor); + } + if (tickLabelMask != null) + if (axis instanceof NumberAxis) { + NumberFormat fmt = NumberFormat.getInstance(); + if (fmt instanceof DecimalFormat) + ((DecimalFormat)fmt).applyPattern(tickLabelMask); + ((NumberAxis)axis).setNumberFormatOverride(fmt); + } else if (axis instanceof DateAxis) { + DateFormat fmt = null; + if (tickLabelMask.equals("SHORT") || tickLabelMask.equals("DateFormat.SHORT")) { + fmt = DateFormat.getDateInstance(3); + } else if (tickLabelMask.equals("MEDIUM") || tickLabelMask.equals("DateFormat.MEDIUM")) { + fmt = DateFormat.getDateInstance(2); + } else if (tickLabelMask.equals("LONG") || tickLabelMask.equals("DateFormat.LONG")) { + fmt = DateFormat.getDateInstance(1); + } else if (tickLabelMask.equals("FULL") || tickLabelMask.equals("DateFormat.FULL")) { + fmt = DateFormat.getDateInstance(0); + } else { + fmt = new SimpleDateFormat(tickLabelMask); + } + ((DateAxis)axis).setDateFormatOverride(fmt); + } + } + + protected void evaluateAreaChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createAreaChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + JRFillAreaPlot areaPlot = (JRFillAreaPlot)getPlot(); + configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getDomainAxis(), areaPlot.getCategoryAxisLabelFont(), areaPlot.getCategoryAxisLabelColor(), areaPlot.getCategoryAxisTickLabelFont(), areaPlot.getCategoryAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getCategoryAxisLineColor()); + configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getRangeAxis(), areaPlot.getValueAxisLabelFont(), areaPlot.getValueAxisLabelColor(), areaPlot.getValueAxisTickLabelFont(), areaPlot.getValueAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateBar3DChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createBarChart3D((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot(); + JRFillBar3DPlot bar3DPlot = (JRFillBar3DPlot)getPlot(); + BarRenderer3D barRenderer3D = new BarRenderer3D(bar3DPlot.getXOffset(), bar3DPlot.getYOffset()); + categoryPlot.setRenderer((CategoryItemRenderer)barRenderer3D); + barRenderer3D.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator()); + barRenderer3D.setItemLabelsVisible(bar3DPlot.isShowLabels()); + configureAxis((Axis)categoryPlot.getDomainAxis(), bar3DPlot.getCategoryAxisLabelFont(), bar3DPlot.getCategoryAxisLabelColor(), bar3DPlot.getCategoryAxisTickLabelFont(), bar3DPlot.getCategoryAxisTickLabelColor(), bar3DPlot.getCategoryAxisTickLabelMask(), bar3DPlot.getCategoryAxisLineColor()); + configureAxis((Axis)categoryPlot.getRangeAxis(), bar3DPlot.getValueAxisLabelFont(), bar3DPlot.getValueAxisLabelColor(), bar3DPlot.getValueAxisTickLabelFont(), bar3DPlot.getValueAxisTickLabelColor(), bar3DPlot.getValueAxisTickLabelMask(), bar3DPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateBarChart(byte evaluation) throws JRException { + CategoryDataset categoryDataset = (CategoryDataset)this.dataset.getDataset(); + this.chart = ChartFactory.createBarChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getValueAxisLabelExpression(), evaluation), categoryDataset, getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot(); + JRFillBarPlot barPlot = (JRFillBarPlot)getPlot(); + categoryPlot.getDomainAxis().setTickMarksVisible(barPlot.isShowTickMarks()); + categoryPlot.getDomainAxis().setTickLabelsVisible(barPlot.isShowTickLabels()); + configureAxis((Axis)categoryPlot.getDomainAxis(), barPlot.getCategoryAxisLabelFont(), barPlot.getCategoryAxisLabelColor(), barPlot.getCategoryAxisTickLabelFont(), barPlot.getCategoryAxisTickLabelColor(), barPlot.getCategoryAxisTickLabelMask(), barPlot.getCategoryAxisLineColor()); + ((NumberAxis)categoryPlot.getRangeAxis()).setTickMarksVisible(barPlot.isShowTickMarks()); + ((NumberAxis)categoryPlot.getRangeAxis()).setTickLabelsVisible(barPlot.isShowTickLabels()); + configureAxis((Axis)categoryPlot.getRangeAxis(), barPlot.getValueAxisLabelFont(), barPlot.getValueAxisLabelColor(), barPlot.getValueAxisTickLabelFont(), barPlot.getValueAxisTickLabelColor(), barPlot.getValueAxisTickLabelMask(), barPlot.getValueAxisLineColor()); + CategoryItemRenderer categoryRenderer = categoryPlot.getRenderer(); + categoryRenderer.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator()); + categoryRenderer.setItemLabelsVisible(barPlot.isShowLabels()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateBubbleChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createBubbleChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBubblePlot)getPlot()).getXAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBubblePlot)getPlot()).getYAxisLabelExpression(), evaluation), (XYZDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + XYPlot xyPlot = (XYPlot)this.chart.getPlot(); + JRBubblePlot bubblePlot = (JRBubblePlot)getPlot(); + XYBubbleRenderer bubbleRenderer = new XYBubbleRenderer(bubblePlot.getScaleType()); + xyPlot.setRenderer((XYItemRenderer)bubbleRenderer); + configureAxis((Axis)xyPlot.getDomainAxis(), bubblePlot.getXAxisLabelFont(), bubblePlot.getXAxisLabelColor(), bubblePlot.getXAxisTickLabelFont(), bubblePlot.getXAxisTickLabelColor(), bubblePlot.getXAxisTickLabelMask(), bubblePlot.getXAxisLineColor()); + configureAxis((Axis)xyPlot.getRangeAxis(), bubblePlot.getYAxisLabelFont(), bubblePlot.getYAxisLabelColor(), bubblePlot.getYAxisTickLabelFont(), bubblePlot.getYAxisTickLabelColor(), bubblePlot.getYAxisTickLabelMask(), bubblePlot.getYAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyzDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateCandlestickChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createCandlestickChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRCandlestickPlot)getPlot()).getTimeAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRCandlestickPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (OHLCDataset)this.dataset.getDataset(), isShowLegend()); + configureChart(getPlot(), evaluation); + XYPlot xyPlot = (XYPlot)this.chart.getPlot(); + JRCandlestickPlot candlestickPlot = (JRCandlestickPlot)getPlot(); + CandlestickRenderer candlestickRenderer = (CandlestickRenderer)xyPlot.getRenderer(); + candlestickRenderer.setDrawVolume(candlestickPlot.isShowVolume()); + configureAxis((Axis)xyPlot.getDomainAxis(), candlestickPlot.getTimeAxisLabelFont(), candlestickPlot.getTimeAxisLabelColor(), candlestickPlot.getTimeAxisTickLabelFont(), candlestickPlot.getTimeAxisTickLabelColor(), candlestickPlot.getTimeAxisTickLabelMask(), candlestickPlot.getTimeAxisLineColor()); + configureAxis((Axis)xyPlot.getRangeAxis(), candlestickPlot.getValueAxisLabelFont(), candlestickPlot.getValueAxisLabelColor(), candlestickPlot.getValueAxisTickLabelFont(), candlestickPlot.getValueAxisTickLabelColor(), candlestickPlot.getValueAxisTickLabelMask(), candlestickPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new HighLowChartHyperlinkProvider(((JRFillHighLowDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateHighLowChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createHighLowChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRHighLowPlot)getPlot()).getTimeAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRHighLowPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (OHLCDataset)this.dataset.getDataset(), isShowLegend()); + configureChart(getPlot(), evaluation); + XYPlot xyPlot = (XYPlot)this.chart.getPlot(); + JRHighLowPlot highLowPlot = (JRHighLowPlot)getPlot(); + HighLowRenderer hlRenderer = (HighLowRenderer)xyPlot.getRenderer(); + hlRenderer.setDrawOpenTicks(highLowPlot.isShowOpenTicks()); + hlRenderer.setDrawCloseTicks(highLowPlot.isShowCloseTicks()); + configureAxis((Axis)xyPlot.getDomainAxis(), highLowPlot.getTimeAxisLabelFont(), highLowPlot.getTimeAxisLabelColor(), highLowPlot.getTimeAxisTickLabelFont(), highLowPlot.getTimeAxisTickLabelColor(), highLowPlot.getTimeAxisTickLabelMask(), highLowPlot.getTimeAxisLineColor()); + configureAxis((Axis)xyPlot.getRangeAxis(), highLowPlot.getValueAxisLabelFont(), highLowPlot.getValueAxisLabelColor(), highLowPlot.getValueAxisTickLabelFont(), highLowPlot.getValueAxisTickLabelColor(), highLowPlot.getValueAxisTickLabelMask(), highLowPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new HighLowChartHyperlinkProvider(((JRFillHighLowDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateLineChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createLineChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRLinePlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRLinePlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot(); + JRFillLinePlot linePlot = (JRFillLinePlot)getPlot(); + LineAndShapeRenderer lineRenderer = (LineAndShapeRenderer)categoryPlot.getRenderer(); + lineRenderer.setShapesVisible(linePlot.isShowShapes()); + lineRenderer.setLinesVisible(linePlot.isShowLines()); + configureAxis((Axis)categoryPlot.getDomainAxis(), linePlot.getCategoryAxisLabelFont(), linePlot.getCategoryAxisLabelColor(), linePlot.getCategoryAxisTickLabelFont(), linePlot.getCategoryAxisTickLabelColor(), linePlot.getCategoryAxisTickLabelMask(), linePlot.getCategoryAxisLineColor()); + configureAxis((Axis)categoryPlot.getRangeAxis(), linePlot.getValueAxisLabelFont(), linePlot.getValueAxisLabelColor(), linePlot.getValueAxisTickLabelFont(), linePlot.getValueAxisTickLabelColor(), linePlot.getValueAxisTickLabelMask(), linePlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluatePie3DChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createPieChart3D((String)evaluateExpression(getTitleExpression(), evaluation), (PieDataset)this.dataset.getDataset(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + PiePlot3D piePlot3D = (PiePlot3D)this.chart.getPlot(); + piePlot3D.setDepthFactor(((JRFillPie3DPlot)getPlot()).getDepthFactor()); + piePlot3D.setCircular(((JRFillPie3DPlot)getPlot()).isCircular()); + PieLabelGenerator pieLabelGenerator = ((JRFillPieDataset)getDataset()).getLabelGenerator(); + if (pieLabelGenerator != null) + piePlot3D.setLabelGenerator((PieSectionLabelGenerator)pieLabelGenerator); + piePlot3D.setLabelFont(new Font(JRFontUtil.getAttributes((JRFont)new JRBaseFont(null, null, (JRStyleContainer)this, null)))); + piePlot3D.setLabelPaint(getForecolor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new PieChartHyperlinkProvider(((JRFillPieDataset)getDataset()).getSectionHyperlinks()); + } + + protected void evaluatePieChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createPieChart((String)evaluateExpression(getTitleExpression(), evaluation), (PieDataset)this.dataset.getDataset(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + PiePlot piePlot = (PiePlot)this.chart.getPlot(); + piePlot.setCircular(((JRFillPiePlot)getPlot()).isCircular()); + PieLabelGenerator pieLabelGenerator = ((JRFillPieDataset)getDataset()).getLabelGenerator(); + if (pieLabelGenerator != null) + piePlot.setLabelGenerator((PieSectionLabelGenerator)pieLabelGenerator); + piePlot.setLabelFont(new Font(JRFontUtil.getAttributes((JRFont)new JRBaseFont(null, null, (JRStyleContainer)this, null)))); + piePlot.setLabelPaint(getForecolor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new PieChartHyperlinkProvider(((JRFillPieDataset)getDataset()).getSectionHyperlinks()); + } + + protected void evaluateScatterChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createScatterPlot((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRScatterPlot)getPlot()).getXAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRScatterPlot)getPlot()).getYAxisLabelExpression(), evaluation), (XYDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + XYLineAndShapeRenderer plotRenderer = (XYLineAndShapeRenderer)((XYPlot)this.chart.getPlot()).getRenderer(); + JRScatterPlot scatterPlot = (JRScatterPlot)getPlot(); + plotRenderer.setLinesVisible(scatterPlot.isShowLines()); + plotRenderer.setShapesVisible(scatterPlot.isShowShapes()); + configureAxis((Axis)this.chart.getXYPlot().getDomainAxis(), scatterPlot.getXAxisLabelFont(), scatterPlot.getXAxisLabelColor(), scatterPlot.getXAxisTickLabelFont(), scatterPlot.getXAxisTickLabelColor(), scatterPlot.getXAxisTickLabelMask(), scatterPlot.getXAxisLineColor()); + configureAxis((Axis)this.chart.getXYPlot().getRangeAxis(), scatterPlot.getYAxisLabelFont(), scatterPlot.getYAxisLabelColor(), scatterPlot.getYAxisTickLabelFont(), scatterPlot.getYAxisTickLabelColor(), scatterPlot.getYAxisTickLabelMask(), scatterPlot.getYAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateStackedBar3DChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createStackedBarChart3D((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot(); + JRFillBar3DPlot bar3DPlot = (JRFillBar3DPlot)getPlot(); + StackedBarRenderer3D stackedBarRenderer3D = new StackedBarRenderer3D(bar3DPlot.getXOffset(), bar3DPlot.getYOffset()); + categoryPlot.setRenderer((CategoryItemRenderer)stackedBarRenderer3D); + stackedBarRenderer3D.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator()); + stackedBarRenderer3D.setItemLabelsVisible(bar3DPlot.isShowLabels()); + configureAxis((Axis)categoryPlot.getDomainAxis(), bar3DPlot.getCategoryAxisLabelFont(), bar3DPlot.getCategoryAxisLabelColor(), bar3DPlot.getCategoryAxisTickLabelFont(), bar3DPlot.getCategoryAxisTickLabelColor(), bar3DPlot.getCategoryAxisTickLabelMask(), bar3DPlot.getCategoryAxisLineColor()); + configureAxis((Axis)categoryPlot.getRangeAxis(), bar3DPlot.getValueAxisLabelFont(), bar3DPlot.getValueAxisLabelColor(), bar3DPlot.getValueAxisTickLabelFont(), bar3DPlot.getValueAxisTickLabelColor(), bar3DPlot.getValueAxisTickLabelMask(), bar3DPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateStackedBarChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createStackedBarChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot(); + JRFillBarPlot barPlot = (JRFillBarPlot)getPlot(); + categoryPlot.getDomainAxis().setTickMarksVisible(barPlot.isShowTickMarks()); + categoryPlot.getDomainAxis().setTickLabelsVisible(barPlot.isShowTickLabels()); + ((NumberAxis)categoryPlot.getRangeAxis()).setTickMarksVisible(barPlot.isShowTickMarks()); + ((NumberAxis)categoryPlot.getRangeAxis()).setTickLabelsVisible(barPlot.isShowTickLabels()); + CategoryItemRenderer categoryRenderer = categoryPlot.getRenderer(); + categoryRenderer.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator()); + categoryRenderer.setItemLabelsVisible(((JRFillBarPlot)getPlot()).isShowLabels()); + configureAxis((Axis)categoryPlot.getDomainAxis(), barPlot.getCategoryAxisLabelFont(), barPlot.getCategoryAxisLabelColor(), barPlot.getCategoryAxisTickLabelFont(), barPlot.getCategoryAxisTickLabelColor(), barPlot.getCategoryAxisTickLabelMask(), barPlot.getCategoryAxisLineColor()); + configureAxis((Axis)categoryPlot.getRangeAxis(), barPlot.getValueAxisLabelFont(), barPlot.getValueAxisLabelColor(), barPlot.getValueAxisTickLabelFont(), barPlot.getValueAxisTickLabelColor(), barPlot.getValueAxisTickLabelMask(), barPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateStackedAreaChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createStackedAreaChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + JRFillAreaPlot areaPlot = (JRFillAreaPlot)getPlot(); + configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getDomainAxis(), areaPlot.getCategoryAxisLabelFont(), areaPlot.getCategoryAxisLabelColor(), areaPlot.getCategoryAxisTickLabelFont(), areaPlot.getCategoryAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getCategoryAxisLineColor()); + configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getRangeAxis(), areaPlot.getValueAxisLabelFont(), areaPlot.getValueAxisLabelColor(), areaPlot.getValueAxisTickLabelFont(), areaPlot.getValueAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateXyAreaChart(byte evaluation) throws JRException { + this.chart = ChartFactory.createXYAreaChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (XYDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + JRAreaPlot areaPlot = (JRAreaPlot)getPlot(); + configureAxis((Axis)this.chart.getXYPlot().getDomainAxis(), areaPlot.getCategoryAxisLabelFont(), areaPlot.getCategoryAxisLabelColor(), areaPlot.getCategoryAxisTickLabelFont(), areaPlot.getCategoryAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getCategoryAxisLineColor()); + configureAxis((Axis)this.chart.getXYPlot().getRangeAxis(), areaPlot.getValueAxisLabelFont(), areaPlot.getValueAxisLabelColor(), areaPlot.getValueAxisTickLabelFont(), areaPlot.getValueAxisTickLabelColor(), areaPlot.getValueAxisTickLabelMask(), areaPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateXYBarChart(byte evaluation) throws JRException { + IntervalXYDataset tmpDataset = (IntervalXYDataset)this.dataset.getDataset(); + boolean isDate = true; + if (this.dataset.getDatasetType() == 3) + isDate = false; + this.chart = ChartFactory.createXYBarChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), isDate, (String)evaluateExpression(((JRBarPlot)getPlot()).getValueAxisLabelExpression(), evaluation), tmpDataset, getPlot().getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + XYPlot xyPlot = (XYPlot)this.chart.getPlot(); + XYItemRenderer itemRenderer = xyPlot.getRenderer(); + if (getDataset().getDatasetType() == 6) { + itemRenderer.setBaseItemLabelGenerator((XYItemLabelGenerator)((JRFillTimeSeriesDataset)getDataset()).getLabelGenerator()); + } else if (getDataset().getDatasetType() == 5) { + itemRenderer.setBaseItemLabelGenerator((XYItemLabelGenerator)((JRFillTimePeriodDataset)getDataset()).getLabelGenerator()); + } else if (getDataset().getDatasetType() == 3) { + itemRenderer.setBaseItemLabelGenerator((XYItemLabelGenerator)((JRFillXyDataset)getDataset()).getLabelGenerator()); + } + JRFillBarPlot barPlot = (JRFillBarPlot)getPlot(); + itemRenderer.setBaseItemLabelsVisible(barPlot.isShowLabels()); + configureAxis((Axis)xyPlot.getDomainAxis(), barPlot.getCategoryAxisLabelFont(), barPlot.getCategoryAxisLabelColor(), barPlot.getCategoryAxisTickLabelFont(), barPlot.getCategoryAxisTickLabelColor(), barPlot.getCategoryAxisTickLabelMask(), barPlot.getCategoryAxisLineColor()); + configureAxis((Axis)xyPlot.getRangeAxis(), barPlot.getValueAxisLabelFont(), barPlot.getValueAxisLabelColor(), barPlot.getValueAxisTickLabelFont(), barPlot.getValueAxisTickLabelColor(), barPlot.getValueAxisTickLabelMask(), barPlot.getValueAxisLineColor()); + if (getDataset().getDatasetType() == 6) { + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new TimeSeriesChartHyperlinkProvider(((JRFillTimeSeriesDataset)getDataset()).getItemHyperlinks()); + } else if (getDataset().getDatasetType() == 5) { + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new TimePeriodChartHyperlinkProvider(((JRFillTimePeriodDataset)getDataset()).getItemHyperlinks()); + } else if (getDataset().getDatasetType() == 3) { + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks()); + } else { + this.chartHyperlinkProvider = null; + } + } + + protected void evaluateXyLineChart(byte evaluation) throws JRException { + JRLinePlot linePlot = (JRLinePlot)getPlot(); + this.chart = ChartFactory.createXYLineChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(linePlot.getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(linePlot.getValueAxisLabelExpression(), evaluation), (XYDataset)this.dataset.getDataset(), linePlot.getOrientation(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + configureAxis((Axis)this.chart.getXYPlot().getDomainAxis(), linePlot.getCategoryAxisLabelFont(), linePlot.getCategoryAxisLabelColor(), linePlot.getCategoryAxisTickLabelFont(), linePlot.getCategoryAxisTickLabelColor(), linePlot.getCategoryAxisTickLabelMask(), linePlot.getCategoryAxisLineColor()); + configureAxis((Axis)this.chart.getXYPlot().getRangeAxis(), linePlot.getValueAxisLabelFont(), linePlot.getValueAxisLabelColor(), linePlot.getValueAxisTickLabelFont(), linePlot.getValueAxisTickLabelColor(), linePlot.getValueAxisTickLabelMask(), linePlot.getValueAxisLineColor()); + XYLineAndShapeRenderer lineRenderer = (XYLineAndShapeRenderer)this.chart.getXYPlot().getRenderer(); + lineRenderer.setShapesVisible(linePlot.isShowShapes()); + lineRenderer.setLinesVisible(linePlot.isShowLines()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks()); + } + + protected void evaluateTimeSeriesChart(byte evaluation) throws JRException { + String timeAxisLabel = (String)evaluateExpression(((JRTimeSeriesPlot)getPlot()).getTimeAxisLabelExpression(), evaluation); + String valueAxisLabel = (String)evaluateExpression(((JRTimeSeriesPlot)getPlot()).getValueAxisLabelExpression(), evaluation); + this.chart = ChartFactory.createTimeSeriesChart((String)evaluateExpression(getTitleExpression(), evaluation), timeAxisLabel, valueAxisLabel, (XYDataset)this.dataset.getDataset(), isShowLegend(), true, false); + configureChart(getPlot(), evaluation); + XYPlot xyPlot = (XYPlot)this.chart.getPlot(); + JRTimeSeriesPlot timeSeriesPlot = (JRTimeSeriesPlot)getPlot(); + XYLineAndShapeRenderer lineRenderer = (XYLineAndShapeRenderer)xyPlot.getRenderer(); + lineRenderer.setLinesVisible(((JRTimeSeriesPlot)getPlot()).isShowLines()); + lineRenderer.setShapesVisible(((JRTimeSeriesPlot)getPlot()).isShowShapes()); + configureAxis((Axis)xyPlot.getDomainAxis(), timeSeriesPlot.getTimeAxisLabelFont(), timeSeriesPlot.getTimeAxisLabelColor(), timeSeriesPlot.getTimeAxisTickLabelFont(), timeSeriesPlot.getTimeAxisTickLabelColor(), timeSeriesPlot.getTimeAxisTickLabelMask(), timeSeriesPlot.getTimeAxisLineColor()); + configureAxis((Axis)xyPlot.getRangeAxis(), timeSeriesPlot.getValueAxisLabelFont(), timeSeriesPlot.getValueAxisLabelColor(), timeSeriesPlot.getValueAxisTickLabelFont(), timeSeriesPlot.getValueAxisTickLabelColor(), timeSeriesPlot.getValueAxisTickLabelMask(), timeSeriesPlot.getValueAxisLineColor()); + this.chartHyperlinkProvider = (ChartHyperlinkProvider)new TimeSeriesChartHyperlinkProvider(((JRFillTimeSeriesDataset)getDataset()).getItemHyperlinks()); + } + + protected Range convertRange(JRDataRange dataRange, byte evaluation) throws JRException { + if (dataRange == null) + return null; + Number low = (Number)evaluateExpression(dataRange.getLowExpression(), evaluation); + Number high = (Number)evaluateExpression(dataRange.getHighExpression(), evaluation); + return new Range((low != null) ? low.doubleValue() : 0.0D, (high != null) ? high.doubleValue() : 100.0D); + } + + protected MeterInterval convertInterval(JRMeterInterval interval, byte evaluation) throws JRException { + String label = interval.getLabel(); + if (label == null) + label = ""; + Range range = convertRange(interval.getDataRange(), evaluation); + Color color = interval.getBackgroundColor(); + float[] components = color.getRGBColorComponents(null); + Color alphaColor = new Color(components[0], components[1], components[2], (float)interval.getAlpha()); + return new MeterInterval(label, range, alphaColor, null, alphaColor); + } + + protected void evaluateMeterChart(byte evaluation) throws JRException { + JRFillMeterPlot jrPlot = (JRFillMeterPlot)getPlot(); + MeterPlot chartPlot = new MeterPlot((ValueDataset)this.dataset.getDataset()); + int shape = jrPlot.getShape(); + if (shape == 0) { + chartPlot.setDialShape(DialShape.CHORD); + } else if (shape == 1) { + chartPlot.setDialShape(DialShape.CIRCLE); + } else { + chartPlot.setDialShape(DialShape.PIE); + } + chartPlot.setRange(convertRange(jrPlot.getDataRange(), evaluation)); + chartPlot.setMeterAngle(jrPlot.getMeterAngle()); + String units = jrPlot.getUnits(); + if (units != null && units.length() > 0) + chartPlot.setUnits(units); + chartPlot.setTickSize(jrPlot.getTickInterval()); + Color color = jrPlot.getMeterBackgroundColor(); + if (color != null) + chartPlot.setDialBackgroundPaint(color); + color = jrPlot.getNeedleColor(); + if (color != null) + chartPlot.setNeedlePaint(color); + JRValueDisplay display = jrPlot.getValueDisplay(); + if (display != null) { + if (display.getColor() != null) + chartPlot.setValuePaint(display.getColor()); + if (display.getMask() != null) + chartPlot.setTickLabelFormat(new DecimalFormat(display.getMask())); + if (display.getFont() != null) + chartPlot.setValueFont(new Font(JRFontUtil.getAttributes(display.getFont()))); + } + color = jrPlot.getTickColor(); + if (color != null) + chartPlot.setTickPaint(color); + List intervals = jrPlot.getIntervals(); + if (intervals != null) { + Iterator iter = intervals.iterator(); + while (iter.hasNext()) { + JRMeterInterval interval = iter.next(); + chartPlot.addInterval(convertInterval(interval, evaluation)); + } + } + this.chart = new JFreeChart((String)evaluateExpression(getTitleExpression(), evaluation), null, (Plot)chartPlot, isShowLegend()); + configureChart(getPlot(), evaluation); + this.chartHyperlinkProvider = null; + } + + protected void evaluateThermometerChart(byte evaluation) throws JRException { + JRFillThermometerPlot jrPlot = (JRFillThermometerPlot)getPlot(); + ThermometerPlot chartPlot = new ThermometerPlot((ValueDataset)this.dataset.getDataset()); + Range range = convertRange(jrPlot.getDataRange(), evaluation); + chartPlot.setLowerBound(range.getLowerBound()); + chartPlot.setUpperBound(range.getUpperBound()); + chartPlot.setShowValueLines(jrPlot.isShowValueLines()); + chartPlot.setUnits(0); + Color color = jrPlot.getMercuryColor(); + if (color != null) + chartPlot.setMercuryPaint(color); + JRValueDisplay display = jrPlot.getValueDisplay(); + if (display != null) { + if (display.getColor() != null) + chartPlot.setValuePaint(display.getColor()); + if (display.getMask() != null) + chartPlot.setValueFormat(new DecimalFormat(display.getMask())); + if (display.getFont() != null) + chartPlot.setValueFont(new Font(JRFontUtil.getAttributes(display.getFont()))); + } + switch (jrPlot.getValueLocation()) { + case 0: + chartPlot.setValueLocation(0); + break; + case 1: + chartPlot.setValueLocation(2); + break; + case 2: + chartPlot.setValueLocation(1); + break; + default: + chartPlot.setValueLocation(3); + break; + } + range = convertRange(jrPlot.getLowRange(), evaluation); + if (range != null) + chartPlot.setSubrangeInfo(2, range.getLowerBound(), range.getUpperBound()); + range = convertRange(jrPlot.getMediumRange(), evaluation); + if (range != null) + chartPlot.setSubrangeInfo(1, range.getLowerBound(), range.getUpperBound()); + range = convertRange(jrPlot.getHighRange(), evaluation); + if (range != null) + chartPlot.setSubrangeInfo(0, range.getLowerBound(), range.getUpperBound()); + this.chart = new JFreeChart((Plot)chartPlot); + configureChart(getPlot(), evaluation); + this.chartHyperlinkProvider = null; + } + + protected void evaluateMultiAxisChart(byte evaluation) throws JRException { + Plot mainPlot = null; + JRFillMultiAxisPlot jrPlot = (JRFillMultiAxisPlot)getPlot(); + Iterator iter = jrPlot.getAxes().iterator(); + if (iter.hasNext()) { + JRFillChartAxis axis = iter.next(); + JRFillChart fillChart = axis.getFillChart(); + this.chart = fillChart.evaluateChart(evaluation); + configureChart(getPlot(), evaluation); + mainPlot = this.chart.getPlot(); + if (axis.getPosition() == 2) { + if (mainPlot instanceof CategoryPlot) + ((CategoryPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.BOTTOM_OR_RIGHT); + if (mainPlot instanceof XYPlot) + ((XYPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.BOTTOM_OR_RIGHT); + } else { + if (mainPlot instanceof CategoryPlot) + ((CategoryPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.TOP_OR_LEFT); + if (mainPlot instanceof XYPlot) + ((XYPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.TOP_OR_LEFT); + } + } + int axisNumber = 0; + while (iter.hasNext()) { + axisNumber++; + JRFillChartAxis chartAxis = iter.next(); + JRFillChart fillChart = chartAxis.getFillChart(); + JFreeChart axisChart = fillChart.evaluateChart(evaluation); + if (mainPlot instanceof CategoryPlot) { + CategoryPlot mainCatPlot = (CategoryPlot)mainPlot; + if (!(axisChart.getPlot() instanceof CategoryPlot)) + throw new JRException("You can not mix plot types in a MultiAxisChart"); + CategoryPlot axisPlot = (CategoryPlot)axisChart.getPlot(); + mainCatPlot.setRangeAxis(axisNumber, axisPlot.getRangeAxis()); + if (chartAxis.getPosition() == 2) { + mainCatPlot.setRangeAxisLocation(axisNumber, AxisLocation.BOTTOM_OR_RIGHT); + } else { + mainCatPlot.setRangeAxisLocation(axisNumber, AxisLocation.TOP_OR_LEFT); + } + mainCatPlot.setDataset(axisNumber, axisPlot.getDataset()); + mainCatPlot.mapDatasetToRangeAxis(axisNumber, axisNumber); + mainCatPlot.setRenderer(axisNumber, axisPlot.getRenderer()); + configureAxisSeriesColors(axisPlot.getRenderer(), fillChart.getPlot()); + continue; + } + if (mainPlot instanceof XYPlot) { + XYPlot mainXyPlot = (XYPlot)mainPlot; + if (!(axisChart.getPlot() instanceof XYPlot)) + throw new JRException("You can not mix plot types in a MultiAxisChart"); + XYPlot axisPlot = (XYPlot)axisChart.getPlot(); + mainXyPlot.setRangeAxis(axisNumber, axisPlot.getRangeAxis()); + if (chartAxis.getPosition() == 2) { + mainXyPlot.setRangeAxisLocation(axisNumber, AxisLocation.BOTTOM_OR_RIGHT); + } else { + mainXyPlot.setRangeAxisLocation(axisNumber, AxisLocation.TOP_OR_LEFT); + } + mainXyPlot.setDataset(axisNumber, axisPlot.getDataset()); + mainXyPlot.mapDatasetToRangeAxis(axisNumber, axisNumber); + mainXyPlot.setRenderer(axisNumber, axisPlot.getRenderer()); + configureAxisSeriesColors(axisPlot.getRenderer(), fillChart.getPlot()); + continue; + } + throw new JRException("MultiAxis charts only support Category and XY plots."); + } + this.chartHyperlinkProvider = null; + } + + protected void resolveElement(JRPrintElement element, byte evaluation) throws JRException { + evaluateRenderer(evaluation); + copy((JRPrintImage)element); + } + + public int getBookmarkLevel() { + return ((JRChart)this.parent).getBookmarkLevel(); + } + + public String getCustomizerClass() { + return this.customizerClass; + } + + private void evaluateDatasetRun(byte evaluation) throws JRException { + this.dataset.evaluateDatasetRun(evaluation); + } + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return null; + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + return ((JRChart)this.parent).getHyperlinkParameters(); + } + + public String getLinkType() { + return ((JRChart)this.parent).getLinkType(); + } + + public JRExpression getHyperlinkTooltipExpression() { + return ((JRChart)this.parent).getHyperlinkTooltipExpression(); + } + + private static RectangleEdge getEdge(byte position) { + RectangleEdge edge = RectangleEdge.TOP; + switch (position) { + case 1: + edge = RectangleEdge.TOP; + break; + case 2: + edge = RectangleEdge.BOTTOM; + break; + case 3: + edge = RectangleEdge.LEFT; + break; + case 4: + edge = RectangleEdge.RIGHT; + break; + } + return edge; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartDataset.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartDataset.java new file mode 100644 index 0000000..c62c3b0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartDataset.java @@ -0,0 +1,18 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRElementDataset; +import org.jfree.data.general.Dataset; + +public abstract class JRFillChartDataset extends JRFillElementDataset implements JRChartDataset { + protected JRFillChartDataset(JRChartDataset dataset, JRFillObjectFactory factory) { + super((JRElementDataset)dataset, factory); + } + + public Dataset getDataset() { + increment(); + return getCustomDataset(); + } + + public abstract Dataset getCustomDataset(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartPlot.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartPlot.java new file mode 100644 index 0000000..79a6a27 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChartPlot.java @@ -0,0 +1,77 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.util.Collection; +import java.util.SortedSet; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import org.jfree.chart.plot.PlotOrientation; + +public class JRFillChartPlot implements JRChartPlot { + protected JRChartPlot parent = null; + + protected JRChart chart = null; + + protected JRFillChartPlot(JRChartPlot plot, JRFillObjectFactory factory) { + factory.put(plot, this); + this.parent = plot; + this.chart = (JRChart)factory.getVisitResult((JRVisitable)plot.getChart()); + } + + public JRChart getChart() { + return this.chart; + } + + public Color getBackcolor() { + return JRStyleResolver.getBackcolor(this); + } + + public Color getOwnBackcolor() { + return this.parent.getOwnBackcolor(); + } + + public void setBackcolor(Color backcolor) {} + + public PlotOrientation getOrientation() { + return this.parent.getOrientation(); + } + + public void setOrientation(PlotOrientation orientation) {} + + public float getBackgroundAlpha() { + return this.parent.getBackgroundAlpha(); + } + + public void setBackgroundAlpha(float BackgroundAlpha) {} + + public float getForegroundAlpha() { + return this.parent.getForegroundAlpha(); + } + + public void setForegroundAlpha(float foregroundAlpha) {} + + public double getLabelRotation() { + return this.parent.getLabelRotation(); + } + + public void setLabelRotation(double labelRotation) {} + + public SortedSet getSeriesColors() { + return this.parent.getSeriesColors(); + } + + public void clearSeriesColors() {} + + public void addSeriesColor(JRChartPlot.JRSeriesColor seriesColor) {} + + public void setSeriesColors(Collection colors) {} + + public void collectExpressions(JRExpressionCollector collector) {} + + public Object clone(JRChart parentChart) { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneFactory.java new file mode 100644 index 0000000..df510bc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneFactory.java @@ -0,0 +1,28 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.HashMap; +import java.util.Map; + +public class JRFillCloneFactory { + private Map cloneMap = new HashMap(); + + protected JRFillCloneable getCached(JRFillCloneable original) { + return (JRFillCloneable)this.cloneMap.get(original); + } + + public void put(JRFillCloneable original, JRFillCloneable clone) { + this.cloneMap.put(original, clone); + } + + public JRFillCloneable getClone(JRFillCloneable original) { + JRFillCloneable clone; + if (original == null) { + clone = null; + } else { + clone = getCached(original); + if (clone == null) + clone = original.createClone(this); + } + return clone; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneable.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneable.java new file mode 100644 index 0000000..5761b66 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCloneable.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine.fill; + +public interface JRFillCloneable { + JRFillCloneable createClone(JRFillCloneFactory paramJRFillCloneFactory); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillContext.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillContext.java new file mode 100644 index 0000000..b163286 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillContext.java @@ -0,0 +1,164 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.TimeZone; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRPrintImage; +import net.sf.jasperreports.engine.JRPrintPage; +import net.sf.jasperreports.engine.JRTemplate; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.query.JRQueryExecuter; +import net.sf.jasperreports.engine.util.FormatFactory; + +public class JRFillContext { + private Map loadedImages; + + private Map loadedSubreports; + + private Map loadedTemplates; + + private boolean usingVirtualizer = false; + + private boolean perPageBoundElements = false; + + private JRPrintPage printPage = null; + + private boolean ignorePagination = false; + + private JRQueryExecuter queryExecuter; + + private JRVirtualizationContext virtualizationContext; + + private FormatFactory masterFormatFactory; + + private Locale masterLocale; + + private TimeZone masterTimeZone; + + public JRFillContext() { + this.loadedImages = new HashMap(); + this.loadedSubreports = new HashMap(); + this.loadedTemplates = new HashMap(); + } + + public boolean hasLoadedImage(Object source) { + return this.loadedImages.containsKey(source); + } + + public JRPrintImage getLoadedImage(Object source) { + return (JRPrintImage)this.loadedImages.get(source); + } + + public void registerLoadedImage(Object source, JRPrintImage image) { + this.loadedImages.put(source, image); + if (this.usingVirtualizer) + this.virtualizationContext.cacheRenderer(image); + } + + public boolean hasLoadedSubreport(Object source) { + return this.loadedSubreports.containsKey(source); + } + + public JasperReport getLoadedSubreport(Object source) { + return (JasperReport)this.loadedSubreports.get(source); + } + + public void registerLoadedSubreport(Object source, JasperReport subreport) { + this.loadedSubreports.put(source, subreport); + } + + public void setUsingVirtualizer(boolean usingVirtualizer) { + this.usingVirtualizer = usingVirtualizer; + if (usingVirtualizer && this.virtualizationContext == null) + this.virtualizationContext = new JRVirtualizationContext(); + } + + public boolean isUsingVirtualizer() { + return this.usingVirtualizer; + } + + public void setPerPageBoundElements(boolean perPageBoundElements) { + this.perPageBoundElements = perPageBoundElements; + } + + public boolean isPerPageBoundElements() { + return this.perPageBoundElements; + } + + public void setPrintPage(JRPrintPage page) { + this.printPage = page; + } + + public JRPrintPage getPrintPage() { + return this.printPage; + } + + public void setIgnorePagination(boolean ignorePagination) { + this.ignorePagination = ignorePagination; + } + + public boolean isIgnorePagination() { + return this.ignorePagination; + } + + public synchronized void setRunningQueryExecuter(JRQueryExecuter queryExecuter) { + this.queryExecuter = queryExecuter; + } + + public synchronized void clearRunningQueryExecuter() { + this.queryExecuter = null; + } + + public synchronized boolean cancelRunningQuery() throws JRException { + if (this.queryExecuter != null) + return this.queryExecuter.cancelQuery(); + return false; + } + + public void ensureMasterPageAvailable() { + if (this.usingVirtualizer) + this.printPage.getElements(); + } + + public JRVirtualizationContext getVirtualizationContext() { + return this.virtualizationContext; + } + + public FormatFactory getMasterFormatFactory() { + return this.masterFormatFactory; + } + + public void setMasterFormatFactory(FormatFactory masterFormatFactory) { + this.masterFormatFactory = masterFormatFactory; + } + + public Locale getMasterLocale() { + return this.masterLocale; + } + + public void setMasterLocale(Locale masterLocale) { + this.masterLocale = masterLocale; + } + + public TimeZone getMasterTimeZone() { + return this.masterTimeZone; + } + + public void setMasterTimeZone(TimeZone masterTimeZone) { + this.masterTimeZone = masterTimeZone; + } + + public boolean hasLoadedTemplate(Object source) { + return this.loadedTemplates.containsKey(source); + } + + public JRTemplate getLoadedTemplate(Object source) { + return (JRTemplate)this.loadedTemplates.get(source); + } + + public void registerLoadedTemplate(Object source, JRTemplate template) { + this.loadedTemplates.put(source, template); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCrosstab.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCrosstab.java new file mode 100644 index 0000000..6b9f417 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillCrosstab.java @@ -0,0 +1,1331 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.ResourceBundle; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.base.JRBaseCrosstab; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.crosstabs.fill.JRCrosstabExpressionEvaluator; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabCell; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabGroup; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabMeasure; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabParameter; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.fill.calculation.BucketDefinition; +import net.sf.jasperreports.crosstabs.fill.calculation.BucketingService; +import net.sf.jasperreports.crosstabs.fill.calculation.CrosstabCell; +import net.sf.jasperreports.crosstabs.fill.calculation.HeaderCell; +import net.sf.jasperreports.crosstabs.fill.calculation.MeasureDefinition; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintFrame; +import net.sf.jasperreports.engine.JRPrintRectangle; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRReport; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.JasperCompileManager; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.design.JRDesignRectangle; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import org.jfree.data.general.Dataset; + +public class JRFillCrosstab extends JRFillElement implements JRCrosstab { + protected final JRCrosstab parentCrosstab; + + protected JRFillCrosstabDataset dataset; + + protected JRFillCrosstabRowGroup[] rowGroups; + + protected Map rowGroupsMap; + + protected JRFillCrosstabColumnGroup[] columnGroups; + + protected Map columnGroupsMap; + + protected JRFillCrosstabMeasure[] measures; + + protected BucketingService bucketingService; + + protected JRFillVariable[] variables; + + protected Map variablesMap; + + protected JRFillVariable[][][] totalVariables; + + protected boolean[][] retrieveTotal; + + protected JRFillCrosstabParameter[] parameters; + + protected Map parametersMap; + + protected JRCrosstabExpressionEvaluator crosstabEvaluator; + + protected JRFillCrosstabCell[][] crossCells; + + protected JRFillCellContents headerCell; + + protected JRFillCellContents whenNoDataCell; + + protected boolean hasData; + + protected HeaderCell[][] columnHeadersData; + + protected HeaderCell[][] rowHeadersData; + + protected CrosstabCell[][] cellData; + + protected MeasureDefinition.MeasureValue[] grandTotals; + + private boolean percentage; + + private CrosstabFiller crosstabFiller; + + public JRFillCrosstab(JRBaseFiller filler, JRCrosstab crosstab, JRFillObjectFactory factory) { + super(filler, (JRElement)crosstab, factory); + this.parentCrosstab = crosstab; + loadEvaluator(filler.getJasperReport()); + JRFillObjectFactory crosstabFactory = new JRFillObjectFactory(factory, (JRFillExpressionEvaluator)this.crosstabEvaluator); + this.headerCell = crosstabFactory.getCell(crosstab.getHeaderCell()); + copyRowGroups(crosstab, crosstabFactory); + copyColumnGroups(crosstab, crosstabFactory); + copyMeasures(crosstab, crosstabFactory); + copyCells(crosstab, crosstabFactory); + this.whenNoDataCell = crosstabFactory.getCell(crosstab.getWhenNoDataCell()); + this.dataset = factory.getCrosstabDataset(crosstab.getDataset(), this); + copyParameters(crosstab, factory); + copyVariables(crosstab, crosstabFactory); + this.crosstabFiller = new CrosstabFiller(); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + private void copyRowGroups(JRCrosstab crosstab, JRFillObjectFactory factory) { + JRCrosstabRowGroup[] groups = crosstab.getRowGroups(); + this.rowGroups = new JRFillCrosstabRowGroup[groups.length]; + this.rowGroupsMap = new HashMap(); + for (int i = 0; i < groups.length; i++) { + JRFillCrosstabRowGroup group = factory.getCrosstabRowGroup(groups[i]); + group.getFillHeader().setVerticalPositionType(groups[i].getPosition()); + this.rowGroups[i] = group; + this.rowGroupsMap.put(group.getName(), new Integer(i)); + } + } + + private void copyColumnGroups(JRCrosstab crosstab, JRFillObjectFactory factory) { + JRCrosstabColumnGroup[] groups = crosstab.getColumnGroups(); + this.columnGroups = new JRFillCrosstabColumnGroup[groups.length]; + this.columnGroupsMap = new HashMap(); + for (int i = 0; i < groups.length; i++) { + JRFillCrosstabColumnGroup group = factory.getCrosstabColumnGroup(groups[i]); + this.columnGroups[i] = group; + this.columnGroupsMap.put(group.getName(), new Integer(i)); + } + } + + private void copyMeasures(JRCrosstab crosstab, JRFillObjectFactory factory) { + JRCrosstabMeasure[] crossMeasures = crosstab.getMeasures(); + this.measures = new JRFillCrosstabMeasure[crossMeasures.length]; + for (int i = 0; i < crossMeasures.length; i++) + this.measures[i] = factory.getCrosstabMeasure(crossMeasures[i]); + } + + private void copyParameters(JRCrosstab crosstab, JRFillObjectFactory factory) { + JRCrosstabParameter[] crossParams = crosstab.getParameters(); + this.parameters = new JRFillCrosstabParameter[crossParams.length]; + this.parametersMap = new HashMap(); + for (int i = 0; i < crossParams.length; i++) { + this.parameters[i] = factory.getCrosstabParameter(crossParams[i]); + this.parametersMap.put(this.parameters[i].getName(), this.parameters[i]); + } + } + + private void copyCells(JRCrosstab crosstab, JRFillObjectFactory factory) { + JRCrosstabCell[][] crosstabCells = crosstab.getCells(); + this.crossCells = new JRFillCrosstabCell[this.rowGroups.length + 1][this.columnGroups.length + 1]; + for (int i = 0; i <= this.rowGroups.length; i++) { + for (int j = 0; j <= this.columnGroups.length; j++) { + if (crosstabCells[i][j] != null) + this.crossCells[i][j] = factory.getCrosstabCell(crosstabCells[i][j]); + } + } + } + + private void copyVariables(JRCrosstab crosstab, JRFillObjectFactory factory) { + JRVariable[] vars = crosstab.getVariables(); + this.variables = new JRFillVariable[vars.length]; + this.variablesMap = new HashMap(); + for (int i = 0; i < this.variables.length; i++) { + this.variables[i] = factory.getVariable(vars[i]); + this.variablesMap.put(this.variables[i].getName(), this.variables[i]); + } + Map totalVarPos = new HashMap(); + this.totalVariables = new JRFillVariable[this.rowGroups.length + 1][this.columnGroups.length + 1][this.measures.length]; + for (int row = 0; row <= this.rowGroups.length; row++) { + JRFillCrosstabRowGroup jRFillCrosstabRowGroup = (row == this.rowGroups.length) ? null : this.rowGroups[row]; + for (int col = 0; col <= this.columnGroups.length; col++) { + JRFillCrosstabColumnGroup jRFillCrosstabColumnGroup = (col == this.columnGroups.length) ? null : this.columnGroups[col]; + if (row < this.rowGroups.length || col < this.columnGroups.length) + for (int m = 0; m < this.measures.length; m++) { + String totalVariableName = JRDesignCrosstab.getTotalVariableName((JRCrosstabMeasure)this.measures[m], (JRCrosstabRowGroup)jRFillCrosstabRowGroup, (JRCrosstabColumnGroup)jRFillCrosstabColumnGroup); + this.totalVariables[row][col][m] = (JRFillVariable)this.variablesMap.get(totalVariableName); + totalVarPos.put(totalVariableName, new int[] { row, col }); + } + } + } + this.retrieveTotal = new boolean[this.rowGroups.length + 1][this.columnGroups.length + 1]; + List expressions = JRExpressionCollector.collectExpressions((JRReport)this.filler.getJasperReport(), crosstab); + for (Iterator iter = expressions.iterator(); iter.hasNext(); ) { + JRExpression expression = iter.next(); + JRExpressionChunk[] chunks = expression.getChunks(); + if (chunks != null) + for (int j = 0; j < chunks.length; j++) { + JRExpressionChunk chunk = chunks[j]; + if (chunk.getType() == 4) { + String varName = chunk.getText(); + int[] pos = (int[])totalVarPos.get(varName); + if (pos != null) + this.retrieveTotal[pos[0]][pos[1]] = true; + } + } + } + } + + protected void loadEvaluator(JasperReport jasperReport) { + try { + JREvaluator evaluator = JasperCompileManager.loadEvaluator(jasperReport, this.parentCrosstab); + this.crosstabEvaluator = new JRCrosstabExpressionEvaluator(evaluator); + } catch (JRException e) { + throw new JRRuntimeException("Could not load evaluator for crosstab.", e); + } + } + + private BucketingService createService(byte evaluation) throws JRException { + List rowBuckets = new ArrayList(this.rowGroups.length); + for (int i = 0; i < this.rowGroups.length; i++) + rowBuckets.add(createServiceBucket((JRCrosstabGroup)this.rowGroups[i], evaluation)); + List colBuckets = new ArrayList(this.columnGroups.length); + for (int j = 0; j < this.columnGroups.length; j++) + colBuckets.add(createServiceBucket((JRCrosstabGroup)this.columnGroups[j], evaluation)); + this.percentage = false; + List measureList = new ArrayList(this.measures.length); + for (int k = 0; k < this.measures.length; k++) { + measureList.add(createServiceMeasure(this.measures[k])); + this.percentage |= (this.measures[k].getPercentageOfType() == 1) ? 1 : 0; + } + if (this.percentage) { + ((BucketDefinition)rowBuckets.get(0)).setComputeTotal(); + ((BucketDefinition)colBuckets.get(0)).setComputeTotal(); + } + return new BucketingService(rowBuckets, colBuckets, measureList, this.dataset.isDataPreSorted(), this.retrieveTotal); + } + + private BucketDefinition createServiceBucket(JRCrosstabGroup group, byte evaluation) throws JRException { + JRCrosstabBucket bucket = group.getBucket(); + Comparator comparator = null; + JRExpression comparatorExpression = bucket.getComparatorExpression(); + if (comparatorExpression != null) + comparator = (Comparator)evaluateExpression(comparatorExpression, evaluation); + byte totalPosition = group.getTotalPosition(); + return new BucketDefinition(bucket.getExpression().getValueClass(), comparator, bucket.getOrder(), totalPosition); + } + + private MeasureDefinition createServiceMeasure(JRFillCrosstabMeasure measure) { + return new MeasureDefinition(measure.getValueClass(), measure.getCalculation(), measure.getIncrementerFactory()); + } + + protected void reset() { + super.reset(); + for (int i = 0; i < this.variables.length; i++) { + this.variables[i].setValue(null); + this.variables[i].setInitialized(true); + } + } + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + if (isPrintWhenExpressionNull() || isPrintWhenTrue()) { + this.dataset.evaluateDatasetRun(evaluation); + initEvaluator(evaluation); + this.bucketingService.processData(); + this.hasData = this.bucketingService.hasData(); + if (this.hasData) { + this.columnHeadersData = this.bucketingService.getColumnHeaders(); + this.rowHeadersData = this.bucketingService.getRowHeaders(); + this.cellData = this.bucketingService.getCrosstabCells(); + if (this.percentage) + this.grandTotals = this.bucketingService.getGrandTotals(); + this.crosstabFiller.initCrosstab(); + } + } + } + + protected void initEvaluator(byte evaluation) throws JRException { + Map parameterValues = JRFillSubreport.getParameterValues(this.filler, getParametersMapExpression(), (JRDatasetParameter[])getParameters(), evaluation, true, false, false); + ResourceBundle resBdl = (ResourceBundle)parameterValues.get("REPORT_RESOURCE_BUNDLE"); + if (resBdl == null) { + JRFillParameter resourceBundleParam = (JRFillParameter)this.filler.getParametersMap().get("REPORT_RESOURCE_BUNDLE"); + parameterValues.put("REPORT_RESOURCE_BUNDLE", resourceBundleParam.getValue()); + } + parameterValues.put("REPORT_PARAMETERS_MAP", parameterValues); + for (int i = 0; i < this.parameters.length; i++) { + Object value = parameterValues.get(this.parameters[i].getName()); + this.parameters[i].setValue(value); + } + this.crosstabEvaluator.init(this.parametersMap, this.variablesMap, this.filler.getWhenResourceMissingType()); + } + + protected void initBucketingService() { + if (this.bucketingService == null) { + try { + this.bucketingService = createService((byte)1); + } catch (JRException e) { + throw new JRRuntimeException("Could not create bucketing service", e); + } + } else { + this.bucketingService.clear(); + } + } + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + super.prepare(availableStretchHeight, isOverflow); + if (!isToPrint()) + return false; + if (availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + setToPrint(false); + return true; + } + if (isOverflow && this.crosstabFiller.ended() && isAlreadyPrinted()) + if (isPrintWhenDetailOverflows()) { + rewind(); + setReprinted(true); + } else { + setStretchHeight(getHeight()); + setToPrint(false); + return false; + } + if (isOverflow && isPrintWhenDetailOverflows()) + setReprinted(true); + int availableHeight = getHeight() + availableStretchHeight - getRelativeY() + getY() + getBandBottomY(); + this.crosstabFiller.fill(availableHeight); + boolean willOverflow = this.crosstabFiller.willOverflow(); + setStretchHeight(willOverflow ? availableHeight : this.crosstabFiller.getUsedHeight()); + return willOverflow; + } + + protected JRPrintElement fill() { + JRPrintRectangle printRectangle = null; + printRectangle = new JRTemplatePrintRectangle(getJRTemplateRectangle()); + printRectangle.setX(getX()); + printRectangle.setY(getRelativeY()); + printRectangle.setWidth(getWidth()); + printRectangle.setHeight(getStretchHeight()); + return (JRPrintElement)printRectangle; + } + + protected JRTemplateRectangle getJRTemplateRectangle() { + JRStyle style = getStyle(); + JRTemplateRectangle template = (JRTemplateRectangle)getTemplate(style); + if (template == null) { + JRDesignRectangle rectangle = new JRDesignRectangle(); + rectangle.setKey(getKey()); + rectangle.setPositionType(getPositionType()); + rectangle.setMode(getMode()); + rectangle.setX(getX()); + rectangle.setY(getY()); + rectangle.setWidth(getWidth()); + rectangle.setHeight(getHeight()); + rectangle.setRemoveLineWhenBlank(isRemoveLineWhenBlank()); + rectangle.setPrintInFirstWholeBand(isPrintInFirstWholeBand()); + rectangle.setPrintWhenDetailOverflows(isPrintWhenDetailOverflows()); + rectangle.setPrintWhenGroupChanges(getPrintWhenGroupChanges()); + rectangle.setForecolor(getForecolor()); + rectangle.setBackcolor(getBackcolor()); + rectangle.getLinePen().setLineWidth(0.0F); + template = new JRTemplateRectangle(this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), (JRRectangle)rectangle); + registerTemplate(style, template); + } + return template; + } + + protected void rewind() { + this.crosstabFiller.initCrosstab(); + } + + protected List getPrintElements() { + List printElements = this.crosstabFiller.getPrintElements(); + if (getRunDirection() == 1) + mirrorPrintElements(printElements); + return printElements; + } + + protected void mirrorPrintElements(List printElements) { + for (Iterator it = printElements.iterator(); it.hasNext(); ) { + JRPrintElement element = it.next(); + int mirrorX = getWidth() - element.getX() - element.getWidth(); + element.setX(mirrorX); + } + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitCrosstab(this); + } + + public int getId() { + return this.parentCrosstab.getId(); + } + + public JRCrosstabDataset getDataset() { + return this.dataset; + } + + public JRCrosstabRowGroup[] getRowGroups() { + return (JRCrosstabRowGroup[])this.rowGroups; + } + + public JRCrosstabColumnGroup[] getColumnGroups() { + return (JRCrosstabColumnGroup[])this.columnGroups; + } + + public JRCrosstabMeasure[] getMeasures() { + return (JRCrosstabMeasure[])this.measures; + } + + public class JRFillCrosstabDataset extends JRFillElementDataset implements JRCrosstabDataset { + private Object[] bucketValues; + + private Object[] measureValues; + + private final JRFillCrosstab this$0; + + public JRFillCrosstabDataset(JRCrosstabDataset dataset, JRFillObjectFactory factory) { + super((JRElementDataset)dataset, factory); + this.bucketValues = new Object[JRFillCrosstab.this.rowGroups.length + JRFillCrosstab.this.columnGroups.length]; + this.measureValues = new Object[JRFillCrosstab.this.measures.length]; + } + + protected void customInitialize() { + JRFillCrosstab.this.initBucketingService(); + } + + protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException { + int i; + for (i = 0; i < JRFillCrosstab.this.rowGroups.length; i++) + this.bucketValues[i] = calculator.evaluate(JRFillCrosstab.this.rowGroups[i].getBucket().getExpression()); + for (i = 0; i < JRFillCrosstab.this.columnGroups.length; i++) + this.bucketValues[i + JRFillCrosstab.this.rowGroups.length] = calculator.evaluate(JRFillCrosstab.this.columnGroups[i].getBucket().getExpression()); + for (i = 0; i < JRFillCrosstab.this.measures.length; i++) + this.measureValues[i] = calculator.evaluate(JRFillCrosstab.this.measures[i].getValueExpression()); + } + + protected void customIncrement() { + try { + JRFillCrosstab.this.bucketingService.addData(this.bucketValues, this.measureValues); + } catch (JRException e) { + throw new JRRuntimeException("Error incrementing crosstab dataset", e); + } + } + + protected Dataset getCustomDataset() { + return null; + } + + public void collectExpressions(JRExpressionCollector collector) {} + + public boolean isDataPreSorted() { + return ((JRCrosstabDataset)this.parent).isDataPreSorted(); + } + } + + protected class CrosstabFiller { + private int yOffset; + + private boolean willOverflow; + + private int[] rowHeadersXOffsets; + + private boolean[] columnBreakable; + + private boolean[] rowBreakable; + + private int[] columnCount; + + private int[] rowCount; + + private int[] columnXOffsets; + + private boolean noDataCellPrinted; + + private int startRowIndex; + + private int startColumnIndex; + + private int lastColumnIndex; + + private List columnHeaders; + + private List printRows; + + private HeaderCell[] spanHeaders; + + private int[] spanHeadersStart; + + private List rowYs = new ArrayList(); + + private int rowIdx; + + private List preparedRow = new ArrayList(); + + private int preparedRowHeight; + + private boolean printRowHeaders; + + private boolean printColumnHeaders; + + private JRFillVariable rowCountVar; + + private JRFillVariable colCountVar; + + private final JRFillCrosstab this$0; + + protected CrosstabFiller() { + setRowHeadersXOffsets(); + this.printRows = new ArrayList(); + this.rowCountVar = (JRFillVariable)JRFillCrosstab.this.variablesMap.get("ROW_COUNT"); + this.colCountVar = (JRFillVariable)JRFillCrosstab.this.variablesMap.get("COLUMN_COUNT"); + } + + protected void initCrosstab() { + this.columnXOffsets = computeOffsets(JRFillCrosstab.this.columnHeadersData, (JRFillCrosstabGroup[])JRFillCrosstab.this.columnGroups, true); + this.columnBreakable = computeBreakableHeaders(JRFillCrosstab.this.columnHeadersData, (JRFillCrosstabGroup[])JRFillCrosstab.this.columnGroups, this.columnXOffsets, true, true); + this.columnCount = computeCounts(JRFillCrosstab.this.columnHeadersData); + int[] rowYOffsets = computeOffsets(JRFillCrosstab.this.rowHeadersData, (JRFillCrosstabGroup[])JRFillCrosstab.this.rowGroups, false); + this.rowBreakable = computeBreakableHeaders(JRFillCrosstab.this.rowHeadersData, (JRFillCrosstabGroup[])JRFillCrosstab.this.rowGroups, rowYOffsets, false, false); + this.rowCount = computeCounts(JRFillCrosstab.this.rowHeadersData); + this.spanHeaders = new HeaderCell[JRFillCrosstab.this.rowGroups.length - 1]; + this.spanHeadersStart = new int[JRFillCrosstab.this.rowGroups.length - 1]; + this.startRowIndex = 0; + this.startColumnIndex = 0; + this.lastColumnIndex = 0; + this.noDataCellPrinted = false; + } + + protected void setRowHeadersXOffsets() { + this.rowHeadersXOffsets = new int[JRFillCrosstab.this.rowGroups.length + 1]; + this.rowHeadersXOffsets[0] = 0; + for (int i = 0; i < JRFillCrosstab.this.rowGroups.length; i++) + this.rowHeadersXOffsets[i + 1] = this.rowHeadersXOffsets[i] + JRFillCrosstab.this.rowGroups[i].getWidth(); + } + + protected int[] computeOffsets(HeaderCell[][] headersData, JRFillCrosstabGroup[] groups, boolean width) { + int[] offsets = new int[(headersData[0]).length + 1]; + offsets[0] = 0; + for (int i = 0; i < (headersData[0]).length; i++) { + int size = 0; + for (int j = groups.length - 1; j >= 0; j--) { + if (headersData[j][i] != null) { + JRFillCellContents cell = headersData[j][i].isTotal() ? groups[j].getFillTotalHeader() : groups[j].getFillHeader(); + size = (cell == null) ? 0 : (width ? cell.getWidth() : cell.getHeight()); + break; + } + } + offsets[i + 1] = offsets[i] + size; + } + return offsets; + } + + protected boolean[] computeBreakableHeaders(HeaderCell[][] headersData, JRFillCrosstabGroup[] groups, int[] offsets, boolean width, boolean startHeaders) { + boolean[] breakable = new boolean[(headersData[0]).length]; + for (int i = 0; i < breakable.length; i++) + breakable[i] = true; + for (int j = 0; j < groups.length; j++) { + JRFillCellContents fillHeader = groups[j].getFillHeader(); + if (fillHeader != null) { + int size = width ? fillHeader.getWidth() : fillHeader.getHeight(); + for (int k = 0; k < (headersData[0]).length; k++) { + HeaderCell header = headersData[j][k]; + if (header != null && !header.isTotal() && header.getLevelSpan() > 1) { + int span = header.getLevelSpan(); + if (startHeaders) + for (int n = k + 1; n < k + span && offsets[n] - offsets[k] < size; n++) + breakable[n] = false; + for (int m = k + span - 1; m > k && offsets[k + span] - offsets[m] < size; m--) + breakable[m] = false; + } + } + } + } + return breakable; + } + + private int[] computeCounts(HeaderCell[][] headersData) { + int[] counts = new int[(headersData[0]).length]; + HeaderCell[] lastHeaders = headersData[headersData.length - 1]; + for (int i = 0, c = 0; i < counts.length; i++) { + HeaderCell lastHeader = lastHeaders[i]; + if (lastHeader != null && !lastHeader.isTotal()) + c++; + counts[i] = c; + } + return counts; + } + + protected void fill(int availableHeight) throws JRException { + this.printRows.clear(); + this.yOffset = 0; + this.willOverflow = false; + fillVerticalCrosstab(availableHeight); + } + + protected boolean willOverflow() { + return this.willOverflow; + } + + protected int getUsedHeight() { + return this.yOffset; + } + + protected boolean ended() { + return JRFillCrosstab.this.hasData ? ((this.startRowIndex >= (JRFillCrosstab.this.rowHeadersData[0]).length && this.startColumnIndex >= (JRFillCrosstab.this.columnHeadersData[0]).length)) : this.noDataCellPrinted; + } + + protected void fillVerticalCrosstab(int availableHeight) throws JRException { + if (!JRFillCrosstab.this.hasData) { + fillNoDataCell(availableHeight); + return; + } + this.printRowHeaders = (this.startColumnIndex == 0 || JRFillCrosstab.this.isRepeatRowHeaders()); + int rowHeadersXOffset = this.printRowHeaders ? this.rowHeadersXOffsets[JRFillCrosstab.this.rowGroups.length] : 0; + if (this.startColumnIndex == this.lastColumnIndex) { + int availableWidth = JRFillCrosstab.this.getWidth(); + this.columnHeaders = getGroupHeaders(availableWidth - rowHeadersXOffset, this.columnXOffsets, this.columnBreakable, this.startColumnIndex, JRFillCrosstab.this.columnHeadersData, (JRFillCrosstabGroup[])JRFillCrosstab.this.columnGroups); + this.lastColumnIndex = this.startColumnIndex + this.columnHeaders.size(); + if (this.startColumnIndex == this.lastColumnIndex) + throw new JRRuntimeException("Not enough space to render the crosstab."); + } + this.printColumnHeaders = (this.startRowIndex == 0 || JRFillCrosstab.this.isRepeatColumnHeaders()); + List columnHeaderRows = null; + if (this.printColumnHeaders) { + columnHeaderRows = fillColumnHeaders(rowHeadersXOffset, availableHeight - this.yOffset); + if (this.willOverflow) + return; + } + int lastRowIndex = fillRows(rowHeadersXOffset, availableHeight - this.yOffset); + if (lastRowIndex == this.startRowIndex) { + this.willOverflow = true; + return; + } + if (columnHeaderRows != null) + this.printRows.addAll(columnHeaderRows); + if (lastRowIndex >= (JRFillCrosstab.this.rowHeadersData[0]).length) { + this.startColumnIndex = this.lastColumnIndex; + if (this.startColumnIndex < (JRFillCrosstab.this.columnHeadersData[0]).length) { + this.startRowIndex = lastRowIndex = 0; + this.yOffset += JRFillCrosstab.this.getColumnBreakOffset(); + fillVerticalCrosstab(availableHeight); + return; + } + } + boolean fillEnded = (lastRowIndex >= (JRFillCrosstab.this.rowHeadersData[0]).length && this.lastColumnIndex >= (JRFillCrosstab.this.columnHeadersData[0]).length); + if (fillEnded) { + JRFillCrosstab.this.setStretchHeight(this.yOffset); + } else { + JRFillCrosstab.this.setStretchHeight(availableHeight); + } + this.startRowIndex = lastRowIndex; + this.willOverflow = !fillEnded; + } + + protected List getGroupHeaders(int available, int[] offsets, boolean[] breakable, int firstIndex, HeaderCell[][] headersData, JRFillCrosstabGroup[] groups) { + List headers = new ArrayList(); + int maxOffset = available + offsets[firstIndex]; + int lastIndex; + for (lastIndex = firstIndex; lastIndex < (headersData[0]).length && offsets[lastIndex + 1] <= maxOffset; lastIndex++) { + HeaderCell[] groupHeaders = new HeaderCell[groups.length]; + for (int j = 0; j < groups.length; j++) + groupHeaders[j] = headersData[j][lastIndex]; + headers.add(groupHeaders); + } + if (lastIndex < (headersData[0]).length) + while (lastIndex > firstIndex && !breakable[lastIndex]) { + lastIndex--; + headers.remove(headers.size() - 1); + } + if (lastIndex > firstIndex) { + if (firstIndex > 0) { + HeaderCell[] firstHeaders = headers.get(0); + for (int j = 0; j < groups.length; j++) { + HeaderCell header = headersData[j][firstIndex]; + if (header == null) { + int spanIndex = getSpanIndex(firstIndex, j, headersData); + if (spanIndex >= 0) { + HeaderCell spanCell = headersData[j][spanIndex]; + int headerEndIdx = spanCell.getLevelSpan() + spanIndex; + if (headerEndIdx > lastIndex) + headerEndIdx = lastIndex; + firstHeaders[j] = HeaderCell.createLevelSpanCopy(spanCell, headerEndIdx - firstIndex); + } + } + } + } + if (lastIndex < (headersData[0]).length) + for (int j = 0; j < groups.length; j++) { + HeaderCell header = headersData[j][lastIndex]; + if (header == null) { + int spanIndex = getSpanIndex(lastIndex, j, headersData); + if (spanIndex >= firstIndex) { + HeaderCell spanCell = headersData[j][spanIndex]; + HeaderCell[] headerCells = headers.get(spanIndex - firstIndex); + headerCells[j] = HeaderCell.createLevelSpanCopy(spanCell, lastIndex - spanIndex); + } + } + } + } + return headers; + } + + protected int getSpanIndex(int i, int j, HeaderCell[][] headersData) { + int spanIndex = i - 1; + while (spanIndex >= 0 && headersData[j][spanIndex] == null) + spanIndex--; + if (spanIndex >= 0) { + HeaderCell spanCell = headersData[j][spanIndex]; + int span = spanCell.getLevelSpan(); + if (span > i - spanIndex) + return spanIndex; + } + return -1; + } + + protected void fillNoDataCell(int availableHeight) throws JRException { + if (JRFillCrosstab.this.whenNoDataCell == null) { + this.noDataCellPrinted = true; + } else if (availableHeight < JRFillCrosstab.this.whenNoDataCell.getHeight()) { + this.willOverflow = true; + } else { + JRFillCrosstab.this.whenNoDataCell.evaluate((byte)3); + JRFillCrosstab.this.whenNoDataCell.prepare(availableHeight - JRFillCrosstab.this.whenNoDataCell.getHeight()); + this.willOverflow = JRFillCrosstab.this.whenNoDataCell.willOverflow(); + if (!this.willOverflow) { + JRFillCrosstab.this.whenNoDataCell.setX(0); + JRFillCrosstab.this.whenNoDataCell.setY(0); + JRPrintFrame printCell = JRFillCrosstab.this.whenNoDataCell.fill(); + List noDataRow = new ArrayList(1); + noDataRow.add(printCell); + addPrintRow(noDataRow); + this.yOffset += JRFillCrosstab.this.whenNoDataCell.getPrintHeight(); + this.noDataCellPrinted = true; + } + } + } + + protected List fillColumnHeaders(int rowHeadersXOffset, int availableHeight) throws JRException { + List headerRows; + JRFillCellContents[][] columnHeaderRows = new JRFillCellContents[JRFillCrosstab.this.columnGroups.length][this.lastColumnIndex - this.startColumnIndex + 1]; + this.rowYs.clear(); + this.rowYs.add(new Integer(0)); + if (this.printRowHeaders && JRFillCrosstab.this.headerCell != null) { + JRFillCellContents contents = fillHeader(availableHeight); + if (this.willOverflow) + return null; + columnHeaderRows[JRFillCrosstab.this.columnGroups.length - 1][0] = contents; + } + label29: for (this.rowIdx = 0; this.rowIdx < JRFillCrosstab.this.columnGroups.length; this.rowIdx++) { + for (int columnIdx = this.startColumnIndex; columnIdx < this.lastColumnIndex; columnIdx++) { + HeaderCell[] headers = this.columnHeaders.get(columnIdx - this.startColumnIndex); + HeaderCell cell = headers[this.rowIdx]; + if (cell != null) { + JRFillCellContents contents = prepareColumnHeader(cell, columnIdx, rowHeadersXOffset, availableHeight); + columnHeaderRows[this.rowIdx + cell.getDepthSpan() - 1][columnIdx - this.startColumnIndex + 1] = contents; + if (this.willOverflow) + break label29; + } + } + int rowStretchHeight = stretchColumnHeadersRow(columnHeaderRows[this.rowIdx]); + this.rowYs.add(new Integer(((Integer)this.rowYs.get(this.rowIdx)).intValue() + rowStretchHeight)); + } + if (this.willOverflow) { + headerRows = null; + releaseColumnHeaderCells(columnHeaderRows); + } else { + headerRows = fillColumnHeaders(columnHeaderRows); + this.yOffset += ((Integer)this.rowYs.get(JRFillCrosstab.this.columnGroups.length)).intValue(); + } + resetVariables(); + return headerRows; + } + + private void setCountVars(int rowIdx, int colIdx) { + if (rowIdx == -1) { + this.rowCountVar.setValue(null); + } else { + this.rowCountVar.setValue(new Integer(this.rowCount[rowIdx])); + } + if (colIdx == -1) { + this.colCountVar.setValue(null); + } else { + this.colCountVar.setValue(new Integer(this.columnCount[colIdx])); + } + } + + private JRFillCellContents fillHeader(int availableHeight) throws JRException { + setCountVars(-1, -1); + JRFillCellContents contents = JRFillCrosstab.this.headerCell.getWorkingClone(); + contents.evaluate((byte)3); + contents.prepare(availableHeight - JRFillCrosstab.this.headerCell.getHeight()); + this.willOverflow = contents.willOverflow(); + if (!this.willOverflow) { + contents.setX(0); + contents.setY(this.yOffset); + contents.setVerticalSpan(JRFillCrosstab.this.columnGroups.length); + } + return contents; + } + + private JRFillCellContents prepareColumnHeader(HeaderCell cell, int columnIdx, int xOffset, int availableHeight) throws JRException { + JRFillCrosstabColumnGroup group = JRFillCrosstab.this.columnGroups[this.rowIdx]; + JRFillCellContents contents = cell.isTotal() ? group.getFillTotalHeader() : group.getFillHeader(); + int width = this.columnXOffsets[columnIdx + cell.getLevelSpan()] - this.columnXOffsets[columnIdx]; + int height = contents.getHeight(); + if (width <= 0 || height <= 0) + return null; + JRFillCellContents preparedContents = null; + int rowY = ((Integer)this.rowYs.get(this.rowIdx)).intValue(); + int cellAvailableStretch = availableHeight - rowY - height; + if (cellAvailableStretch >= 0) { + setCountVars(-1, columnIdx); + setGroupVariables((JRFillCrosstabGroup[])JRFillCrosstab.this.columnGroups, cell.getBucketValues()); + contents = contents.getTransformedContents(width, height, group.getPosition(), (byte)1); + boolean firstOnRow = (columnIdx == this.startColumnIndex && (!this.printRowHeaders || JRFillCrosstab.this.headerCell == null)); + contents = contents.getBoxContents((firstOnRow && JRFillCrosstab.this.getRunDirection() == 0), (firstOnRow && JRFillCrosstab.this.getRunDirection() == 1), false); + contents = contents.getWorkingClone(); + contents.evaluate((byte)3); + contents.prepare(cellAvailableStretch); + if (contents.willOverflow()) { + this.willOverflow = true; + } else { + contents.setX(this.columnXOffsets[columnIdx] - this.columnXOffsets[this.startColumnIndex] + xOffset); + contents.setY(rowY + this.yOffset); + contents.setVerticalSpan(cell.getDepthSpan()); + preparedContents = contents; + } + } else { + this.willOverflow = true; + } + return preparedContents; + } + + private int stretchColumnHeadersRow(JRFillCellContents[] headers) { + int rowY = ((Integer)this.rowYs.get(this.rowIdx)).intValue(); + int rowStretchHeight = 0; + int j; + for (j = 0; j < headers.length; j++) { + JRFillCellContents contents = headers[j]; + if (contents != null) { + int startRowY = rowY; + if (contents.getVerticalSpan() > 1) + startRowY = ((Integer)this.rowYs.get(this.rowIdx - contents.getVerticalSpan() + 1)).intValue(); + int height = contents.getPrintHeight() - rowY + startRowY; + if (height > rowStretchHeight) + rowStretchHeight = height; + } + } + for (j = 0; j < headers.length; j++) { + JRFillCellContents contents = headers[j]; + if (contents != null) { + int startRowY = rowY; + if (contents.getVerticalSpan() > 1) + startRowY = ((Integer)this.rowYs.get(this.rowIdx - contents.getVerticalSpan() + 1)).intValue(); + contents.stretchTo(rowStretchHeight + rowY - startRowY); + } + } + return rowStretchHeight; + } + + private List fillColumnHeaders(JRFillCellContents[][] columnHeaderRows) throws JRException { + List headerRows = new ArrayList(JRFillCrosstab.this.columnGroups.length); + for (int i = 0; i < columnHeaderRows.length; i++) { + List headerRow = new ArrayList(this.lastColumnIndex - this.startColumnIndex); + headerRows.add(headerRow); + for (int j = 0; j < (columnHeaderRows[i]).length; j++) { + JRFillCellContents contents = columnHeaderRows[i][j]; + if (contents != null) { + headerRow.add(contents.fill()); + contents.releaseWorkingClone(); + } + } + } + return headerRows; + } + + private void releaseColumnHeaderCells(JRFillCellContents[][] columnHeaderRows) throws JRException { + for (int i = 0; i < columnHeaderRows.length; i++) { + for (int j = 0; j < (columnHeaderRows[i]).length; j++) { + JRFillCellContents contents = columnHeaderRows[i][j]; + if (contents != null) { + contents.rewind(); + contents.releaseWorkingClone(); + } + } + } + } + + protected int fillRows(int xOffset, int availableHeight) throws JRException { + this.rowYs.clear(); + this.rowYs.add(new Integer(0)); + for (this.rowIdx = 0; this.rowIdx < JRFillCrosstab.this.cellData.length - this.startRowIndex; this.rowIdx++) { + initPreparedRow(); + prepareRow(xOffset, availableHeight); + if (this.willOverflow) + break; + fillRow(); + this.rowYs.add(new Integer(((Integer)this.rowYs.get(this.rowIdx)).intValue() + this.preparedRowHeight)); + } + if (this.rowIdx < JRFillCrosstab.this.cellData.length - this.startRowIndex) { + releasePreparedRow(); + if (this.printRowHeaders) + fillContinuingRowHeaders(xOffset, availableHeight); + } + this.yOffset += ((Integer)this.rowYs.get(this.rowIdx)).intValue(); + return this.rowIdx + this.startRowIndex; + } + + private void initPreparedRow() { + this.preparedRow.clear(); + this.preparedRowHeight = 0; + } + + private void removeFilledRows(int rowsToRemove) { + if (rowsToRemove > 0) { + for (int i = 0; i < rowsToRemove; i++) { + this.printRows.remove(this.printRows.size() - 1); + this.rowYs.remove(this.rowYs.size() - 1); + } + this.rowIdx -= rowsToRemove; + } + } + + private void releasePreparedRow() throws JRException { + for (Iterator it = this.preparedRow.iterator(); it.hasNext(); ) { + JRFillCellContents cell = it.next(); + cell.rewind(); + cell.releaseWorkingClone(); + } + this.preparedRow.clear(); + } + + private void fillRow() throws JRException { + int rowY = ((Integer)this.rowYs.get(this.rowIdx)).intValue(); + List rowPrints = new ArrayList(this.preparedRow.size()); + for (Iterator it = this.preparedRow.iterator(); it.hasNext(); ) { + JRFillCellContents cell = it.next(); + int spanHeight = 0; + if (cell.getVerticalSpan() > 1) + spanHeight = rowY - ((Integer)this.rowYs.get(this.rowIdx - cell.getVerticalSpan() + 1)).intValue(); + cell.stretchTo(this.preparedRowHeight + spanHeight); + rowPrints.add(cell.fill()); + cell.releaseWorkingClone(); + } + addPrintRow(rowPrints); + } + + private void prepareRow(int xOffset, int availableHeight) throws JRException { + for (int col = this.startColumnIndex; col < this.lastColumnIndex; col++) { + CrosstabCell data = JRFillCrosstab.this.cellData[this.rowIdx + this.startRowIndex][col]; + boolean overflow = prepareDataCell(data, col, availableHeight, xOffset); + if (overflow) { + this.willOverflow = true; + return; + } + } + resetVariables(); + if (this.printRowHeaders) { + int j = 0; + while (true) { + boolean overflow; + if (j < JRFillCrosstab.this.rowGroups.length) { + HeaderCell cell = JRFillCrosstab.this.rowHeadersData[j][this.rowIdx + this.startRowIndex]; + overflow = false; + if (cell == null) { + overflow = prepareClosingRowHeader(j, availableHeight); + } else { + if (cell.getLevelSpan() > 1) { + this.spanHeaders[j] = cell; + this.spanHeadersStart[j] = this.rowIdx + this.startRowIndex; + } else { + overflow = prepareRowHeader(j, cell, 1, availableHeight); + if (overflow) { + this.willOverflow = true; + return; + } + } + j++; + } + } else { + break; + } + if (overflow) { + this.willOverflow = true; + return; + } + } + resetVariables(); + } + } + + private boolean prepareDataCell(CrosstabCell data, int column, int availableHeight, int xOffset) throws JRException { + int rowY = ((Integer)this.rowYs.get(this.rowIdx)).intValue(); + JRFillCrosstabCell cell = JRFillCrosstab.this.crossCells[data.getRowTotalGroupIndex()][data.getColumnTotalGroupIndex()]; + JRFillCellContents contents = (cell == null) ? null : cell.getFillContents(); + if (contents == null || contents.getWidth() <= 0 || contents.getHeight() <= 0) + return false; + int cellAvailableStretch = availableHeight - rowY - contents.getHeight(); + boolean overflow = (cellAvailableStretch < 0); + if (!overflow) { + boolean leftEmpty = (this.startColumnIndex != 0 && !JRFillCrosstab.this.isRepeatRowHeaders()); + boolean topEmpty = (this.startRowIndex != 0 && !JRFillCrosstab.this.isRepeatColumnHeaders()); + setCountVars(this.rowIdx + this.startRowIndex, column); + setGroupVariables((JRFillCrosstabGroup[])JRFillCrosstab.this.rowGroups, data.getRowBucketValues()); + setGroupVariables((JRFillCrosstabGroup[])JRFillCrosstab.this.columnGroups, data.getColumnBucketValues()); + setMeasureVariables(data); + boolean firstOnRow = (leftEmpty && column == this.startColumnIndex); + contents = contents.getBoxContents((firstOnRow && JRFillCrosstab.this.getRunDirection() == 0), (firstOnRow && JRFillCrosstab.this.getRunDirection() == 1), (topEmpty && this.rowIdx == 0)); + contents = contents.getWorkingClone(); + contents.evaluate((byte)3); + contents.prepare(cellAvailableStretch); + this.preparedRow.add(contents); + overflow = contents.willOverflow(); + if (!overflow) { + contents.setX(this.columnXOffsets[column] - this.columnXOffsets[this.startColumnIndex] + xOffset); + contents.setY(rowY + this.yOffset); + int rowCellHeight = contents.getPrintHeight(); + if (rowCellHeight > this.preparedRowHeight) + this.preparedRowHeight = rowCellHeight; + } + } + return overflow; + } + + private boolean prepareRowHeader(int rowGroup, HeaderCell cell, int vSpan, int availableHeight) throws JRException { + JRFillCrosstabRowGroup group = JRFillCrosstab.this.rowGroups[rowGroup]; + JRFillCellContents contents = cell.isTotal() ? group.getFillTotalHeader() : group.getFillHeader(); + if (contents.getWidth() <= 0 || contents.getHeight() <= 0) + return false; + int spanHeight = 0; + int headerY = ((Integer)this.rowYs.get(this.rowIdx - vSpan + 1)).intValue(); + if (vSpan > 1) + spanHeight += ((Integer)this.rowYs.get(this.rowIdx)).intValue() - headerY; + int rowHeight = spanHeight + this.preparedRowHeight; + boolean stretchContents = (group.getPosition() == 4); + int contentsHeight = stretchContents ? rowHeight : contents.getHeight(); + int cellAvailableStretch = availableHeight - headerY - contentsHeight; + boolean headerOverflow = (cellAvailableStretch < 0 || rowHeight < contents.getHeight()); + if (!headerOverflow) { + setCountVars(this.rowIdx + this.startRowIndex - vSpan + 1, -1); + setGroupVariables((JRFillCrosstabGroup[])JRFillCrosstab.this.rowGroups, cell.getBucketValues()); + if (stretchContents) + contents = contents.getTransformedContents(contents.getWidth(), rowHeight, (byte)1, (byte)4); + contents = contents.getBoxContents(false, false, (this.rowIdx + 1 == vSpan && (!this.printColumnHeaders || JRFillCrosstab.this.headerCell == null))); + contents.getWorkingClone(); + contents.evaluate((byte)3); + contents.prepare(cellAvailableStretch); + this.preparedRow.add(contents); + headerOverflow = contents.willOverflow(); + if (!headerOverflow) { + contents.setX(this.rowHeadersXOffsets[rowGroup]); + contents.setY(headerY + this.yOffset); + contents.setVerticalSpan(vSpan); + int rowCellHeight = contents.getPrintHeight() - spanHeight; + if (rowCellHeight > this.preparedRowHeight) + this.preparedRowHeight = rowCellHeight; + } + } + if (headerOverflow) + removeFilledRows(vSpan - 1); + return headerOverflow; + } + + private boolean prepareClosingRowHeader(int rowGroup, int availableHeight) throws JRException { + if (rowGroup < JRFillCrosstab.this.rowGroups.length - 1 && this.spanHeaders[rowGroup] != null && this.spanHeaders[rowGroup].getLevelSpan() + this.spanHeadersStart[rowGroup] == this.rowIdx + this.startRowIndex + 1) { + HeaderCell cell = this.spanHeaders[rowGroup]; + int vSpan = cell.getLevelSpan(); + if (this.spanHeadersStart[rowGroup] < this.startRowIndex) + vSpan += this.spanHeadersStart[rowGroup] - this.startRowIndex; + this.spanHeaders[rowGroup] = null; + return prepareRowHeader(rowGroup, cell, vSpan, availableHeight); + } + return false; + } + + private void removeExceedingSpanHeaders() { + for (int j = JRFillCrosstab.this.rowGroups.length - 2; j >= 0; j--) { + if (this.spanHeaders[j] != null && this.spanHeadersStart[j] >= this.rowIdx + this.startRowIndex) + this.spanHeaders[j] = null; + } + } + + private void setBackSpanHeaders() { + for (int j = JRFillCrosstab.this.rowGroups.length - 2; j >= 0 && this.spanHeaders[j] == null; j--) { + int spanIndex = getSpanIndex(this.rowIdx + this.startRowIndex, j, JRFillCrosstab.this.rowHeadersData); + if (spanIndex >= 0) { + this.spanHeaders[j] = JRFillCrosstab.this.rowHeadersData[j][spanIndex]; + this.spanHeadersStart[j] = spanIndex; + } + } + } + + private void fillContinuingRowHeaders(int xOffset, int availableHeight) throws JRException { + boolean done = false; + label27: do { + removeExceedingSpanHeaders(); + if (!this.rowBreakable[this.rowIdx + this.startRowIndex]) { + removeFilledRows(1); + setBackSpanHeaders(); + } else { + initPreparedRow(); + for (int j = 0; j < JRFillCrosstab.this.rowGroups.length - 1; j++) { + if (this.spanHeaders[j] != null) { + boolean headerOverflow = prepareContinuingRowHeader(j, availableHeight); + if (headerOverflow) { + releasePreparedRow(); + continue label27; + } + } + } + if (!this.preparedRow.isEmpty()) { + int lastRowHeight = ((Integer)this.rowYs.get(this.rowIdx)).intValue() - ((Integer)this.rowYs.get(this.rowIdx - 1)).intValue(); + if (this.preparedRowHeight > lastRowHeight) { + refillLastRow(xOffset, availableHeight); + } else { + fillContinuingHeaders(lastRowHeight); + } + } + done = true; + } + } while (!done && this.rowIdx > 0); + } + + private void fillContinuingHeaders(int lastRowHeight) throws JRException { + int nextToLastHeaderY = ((Integer)this.rowYs.get(this.rowIdx - 1)).intValue(); + List lastPrintRow = getLastPrintRow(); + for (int j = 0; j < this.preparedRow.size(); j++) { + JRFillCellContents contents = this.preparedRow.get(j); + int headerY = ((Integer)this.rowYs.get(this.rowIdx - contents.getVerticalSpan())).intValue(); + contents.stretchTo(nextToLastHeaderY - headerY + lastRowHeight); + lastPrintRow.add(contents.fill()); + contents.releaseWorkingClone(); + } + } + + private void refillLastRow(int xOffset, int availableHeight) throws JRException { + removeFilledRows(1); + setBackSpanHeaders(); + prepareRow(xOffset, availableHeight); + fillRow(); + this.rowYs.add(new Integer(((Integer)this.rowYs.get(this.rowIdx)).intValue() + this.preparedRowHeight)); + this.rowIdx++; + } + + private boolean prepareContinuingRowHeader(int rowGroup, int availableHeight) throws JRException { + HeaderCell cell = this.spanHeaders[rowGroup]; + int vSpan = this.rowIdx + this.startRowIndex - this.spanHeadersStart[rowGroup]; + if (this.spanHeadersStart[rowGroup] < this.startRowIndex) + vSpan += this.spanHeadersStart[rowGroup] - this.startRowIndex; + int headerY = ((Integer)this.rowYs.get(this.rowIdx - vSpan)).intValue(); + int lastHeaderY = ((Integer)this.rowYs.get(this.rowIdx)).intValue(); + int headerHeight = lastHeaderY - headerY; + int nextToLastHeaderY = ((Integer)this.rowYs.get(this.rowIdx - 1)).intValue(); + int stretchHeight = nextToLastHeaderY - headerY; + JRFillCrosstabRowGroup group = JRFillCrosstab.this.rowGroups[rowGroup]; + JRFillCellContents contents = cell.isTotal() ? group.getFillTotalHeader() : group.getFillHeader(); + boolean stretchContents = (group.getPosition() == 4); + int contentsHeight = stretchContents ? headerHeight : contents.getHeight(); + int cellAvailableStretch = availableHeight - headerY - contentsHeight; + boolean headerOverflow = (cellAvailableStretch < 0 || headerHeight < contents.getHeight()); + if (!headerOverflow) { + setCountVars(this.rowIdx + this.startRowIndex - vSpan, -1); + setGroupVariables((JRFillCrosstabGroup[])JRFillCrosstab.this.rowGroups, cell.getBucketValues()); + if (stretchContents) + contents = contents.getTransformedContents(contents.getWidth(), headerHeight, (byte)1, (byte)4); + contents = contents.getBoxContents(false, false, (this.rowIdx == vSpan && (!this.printColumnHeaders || JRFillCrosstab.this.headerCell == null))); + contents.getWorkingClone(); + contents.evaluate((byte)3); + contents.prepare(cellAvailableStretch); + this.preparedRow.add(contents); + headerOverflow = contents.willOverflow(); + if (!headerOverflow) { + contents.setX(this.rowHeadersXOffsets[rowGroup]); + contents.setY(headerY + this.yOffset); + contents.setVerticalSpan(vSpan); + int rowHeight = contents.getPrintHeight() - stretchHeight; + if (rowHeight > this.preparedRowHeight) + this.preparedRowHeight = rowHeight; + } + } + if (headerOverflow) + removeFilledRows(vSpan); + return headerOverflow; + } + + protected void addPrintRow(List printRow) { + this.printRows.add(printRow); + } + + protected List getLastPrintRow() { + return this.printRows.get(this.printRows.size() - 1); + } + + protected List getPrintElements() { + List prints = new ArrayList(); + for (Iterator it = this.printRows.iterator(); it.hasNext(); ) { + List rowPrints = it.next(); + prints.addAll(rowPrints); + } + return prints; + } + + protected void setGroupVariables(JRFillCrosstabGroup[] groups, BucketDefinition.Bucket[] bucketValues) { + for (int i = 0; i < groups.length; i++) { + Object value = null; + if (bucketValues[i] != null && !bucketValues[i].isTotal()) + value = bucketValues[i].getValue(); + groups[i].getFillVariable().setValue(value); + } + } + + protected void setMeasureVariables(CrosstabCell cell) { + MeasureDefinition.MeasureValue[] values = cell.getMesureValues(); + for (int i = 0; i < JRFillCrosstab.this.measures.length; i++) { + Object value = measureValue(values, i); + JRFillCrosstab.this.measures[i].getFillVariable().setValue(value); + } + MeasureDefinition.MeasureValue[][][] totals = cell.getTotals(); + for (int row = 0; row <= JRFillCrosstab.this.rowGroups.length; row++) { + for (int col = 0; col <= JRFillCrosstab.this.columnGroups.length; col++) { + MeasureDefinition.MeasureValue[] vals = totals[row][col]; + if (JRFillCrosstab.this.retrieveTotal[row][col]) + for (int m = 0; m < JRFillCrosstab.this.measures.length; m++) { + JRFillVariable totalVar = JRFillCrosstab.this.totalVariables[row][col][m]; + Object value = measureValue(vals, m); + totalVar.setValue(value); + } + } + } + } + + protected Object measureValue(MeasureDefinition.MeasureValue[] values, int measureIdx) { + Object value; + if (JRFillCrosstab.this.measures[measureIdx].getPercentageOfType() == 1) { + if (values[measureIdx].isInitialized()) { + value = values[measureIdx].getValue(); + } else { + value = JRFillCrosstab.this.measures[measureIdx].getPercentageCalculator().calculatePercentage((JRCalculable)values[measureIdx], (JRCalculable)JRFillCrosstab.this.grandTotals[measureIdx]); + } + } else { + value = values[measureIdx].getValue(); + } + return value; + } + + protected void resetVariables() { + int i; + for (i = 0; i < JRFillCrosstab.this.rowGroups.length; i++) + JRFillCrosstab.this.rowGroups[i].getFillVariable().setValue(null); + for (i = 0; i < JRFillCrosstab.this.columnGroups.length; i++) + JRFillCrosstab.this.columnGroups[i].getFillVariable().setValue(null); + for (i = 0; i < JRFillCrosstab.this.measures.length; i++) + JRFillCrosstab.this.measures[i].getFillVariable().setValue(null); + for (int row = 0; row <= JRFillCrosstab.this.rowGroups.length; row++) { + for (int col = 0; col <= JRFillCrosstab.this.columnGroups.length; col++) { + if (JRFillCrosstab.this.retrieveTotal[row][col]) + for (int j = 0; j < JRFillCrosstab.this.measures.length; j++) + JRFillCrosstab.this.totalVariables[row][col][j].setValue(null); + } + } + } + } + + public int getColumnBreakOffset() { + return this.parentCrosstab.getColumnBreakOffset(); + } + + public boolean isRepeatColumnHeaders() { + return this.parentCrosstab.isRepeatColumnHeaders(); + } + + public boolean isRepeatRowHeaders() { + return this.parentCrosstab.isRepeatRowHeaders(); + } + + public JRCrosstabCell[][] getCells() { + return (JRCrosstabCell[][])this.crossCells; + } + + public JRCellContents getWhenNoDataCell() { + return this.whenNoDataCell; + } + + public JRCrosstabParameter[] getParameters() { + return (JRCrosstabParameter[])this.parameters; + } + + public JRExpression getParametersMapExpression() { + return this.parentCrosstab.getParametersMapExpression(); + } + + public JRElement getElementByKey(String elementKey) { + return JRBaseCrosstab.getElementByKey(this, elementKey); + } + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return null; + } + + public JRCellContents getHeaderCell() { + return this.headerCell; + } + + public JRVariable[] getVariables() { + return (JRVariable[])this.variables; + } + + public byte getRunDirection() { + return this.parentCrosstab.getRunDirection(); + } + + public void setRunDirection(byte direction) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDataset.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDataset.java new file mode 100644 index 0000000..9a592ec --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDataset.java @@ -0,0 +1,653 @@ +package net.sf.jasperreports.engine.fill; + +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.ResourceBundle; +import java.util.Set; +import java.util.TimeZone; +import net.sf.jasperreports.engine.JRAbstractScriptlet; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRDefaultScriptlet; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JasperCompileManager; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.data.JRSortableDataSource; +import net.sf.jasperreports.engine.design.JRDesignVariable; +import net.sf.jasperreports.engine.query.JRQueryExecuter; +import net.sf.jasperreports.engine.query.JRQueryExecuterFactory; +import net.sf.jasperreports.engine.util.JRClassLoader; +import net.sf.jasperreports.engine.util.JRQueryExecuterUtils; +import net.sf.jasperreports.engine.util.JRResourcesUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRFillDataset implements JRDataset { + private static final Log log = LogFactory.getLog(JRFillDataset.class); + + private final JRBaseFiller filler; + + private final JRDataset parent; + + private final boolean isMain; + + protected JRQuery query = null; + + private boolean useDatasourceParamValue = false; + + private boolean useConnectionParamValue = false; + + protected JRFillParameter[] parameters = null; + + protected Map parametersMap = null; + + protected JRFillField[] fields = null; + + protected Map fieldsMap = null; + + protected JRFillVariable[] variables = null; + + protected Map variablesMap = null; + + protected Set variableCalculationReqs; + + protected JRFillElementDataset[] elementDatasets; + + protected JRFillElementDataset[] origElementDatasets; + + protected JRFillGroup[] groups = null; + + protected String resourceBundleBaseName = null; + + protected byte whenResourceMissingType; + + protected String scriptletClassName = null; + + protected JRDataSource dataSource = null; + + protected Locale locale = null; + + protected ResourceBundle resourceBundle = null; + + protected TimeZone timeZone = null; + + protected int reportCount = 0; + + protected JRCalculator calculator = null; + + protected JRAbstractScriptlet scriptlet = null; + + protected Integer reportMaxCount = null; + + private JRQueryExecuter queryExecuter; + + protected JRFillDataset(JRBaseFiller filler, JRDataset dataset, JRFillObjectFactory factory) { + factory.put(dataset, this); + this.filler = filler; + this.parent = dataset; + this.isMain = dataset.isMainDataset(); + this.scriptletClassName = dataset.getScriptletClass(); + this.resourceBundleBaseName = dataset.getResourceBundle(); + this.whenResourceMissingType = dataset.getWhenResourceMissingType(); + this.query = dataset.getQuery(); + setParameters(dataset, factory); + setFields(dataset, factory); + setVariables(dataset, factory); + setGroups(dataset, factory); + } + + private void setParameters(JRDataset dataset, JRFillObjectFactory factory) { + JRParameter[] jrParameters = dataset.getParameters(); + if (jrParameters != null && jrParameters.length > 0) { + this.parameters = new JRFillParameter[jrParameters.length]; + this.parametersMap = new HashMap(); + for (int i = 0; i < this.parameters.length; i++) { + this.parameters[i] = factory.getParameter(jrParameters[i]); + this.parametersMap.put(this.parameters[i].getName(), this.parameters[i]); + } + } + } + + private void setGroups(JRDataset dataset, JRFillObjectFactory factory) { + JRGroup[] jrGroups = dataset.getGroups(); + if (jrGroups != null && jrGroups.length > 0) { + this.groups = new JRFillGroup[jrGroups.length]; + for (int i = 0; i < this.groups.length; i++) + this.groups[i] = factory.getGroup(jrGroups[i]); + } + } + + private void setVariables(JRDataset dataset, JRFillObjectFactory factory) { + JRVariable[] jrVariables = dataset.getVariables(); + if (jrVariables != null && jrVariables.length > 0) { + List variableList = new ArrayList(jrVariables.length * 3); + this.variablesMap = new HashMap(); + for (int i = 0; i < jrVariables.length; i++) + addVariable(jrVariables[i], variableList, factory); + setVariables(variableList); + } + } + + private JRFillVariable addVariable(JRVariable parentVariable, List variableList, JRFillObjectFactory factory) { + JRVariable jRVariable1, varianceVar, countVar; + JRFillVariable jRFillVariable1, fillVarianceVar, fillCountVar; + JRVariable sumVar; + JRFillVariable fillSumVar, variable = factory.getVariable(parentVariable); + byte calculation = variable.getCalculation(); + switch (calculation) { + case 3: + case 7: + jRVariable1 = createHelperVariable(parentVariable, "_COUNT", (byte)1); + jRFillVariable1 = addVariable(jRVariable1, variableList, factory); + variable.setHelperVariable(jRFillVariable1, (byte)0); + sumVar = createHelperVariable(parentVariable, "_SUM", (byte)2); + fillSumVar = addVariable(sumVar, variableList, factory); + variable.setHelperVariable(fillSumVar, (byte)1); + break; + case 6: + varianceVar = createHelperVariable(parentVariable, "_VARIANCE", (byte)7); + fillVarianceVar = addVariable(varianceVar, variableList, factory); + variable.setHelperVariable(fillVarianceVar, (byte)2); + break; + case 10: + countVar = createDistinctCountHelperVariable(parentVariable); + fillCountVar = addVariable(countVar, variableList, factory); + variable.setHelperVariable(fillCountVar, (byte)0); + break; + } + variableList.add(variable); + return variable; + } + + private JRVariable createHelperVariable(JRVariable variable, String nameSuffix, byte calculation) { + JRDesignVariable helper = new JRDesignVariable(); + helper.setName(variable.getName() + nameSuffix); + helper.setValueClassName(variable.getValueClassName()); + helper.setIncrementerFactoryClassName(variable.getIncrementerFactoryClassName()); + helper.setResetType(variable.getResetType()); + helper.setResetGroup(variable.getResetGroup()); + helper.setIncrementType(variable.getIncrementType()); + helper.setIncrementGroup(variable.getIncrementGroup()); + helper.setCalculation(calculation); + helper.setSystemDefined(true); + helper.setExpression(variable.getExpression()); + return (JRVariable)helper; + } + + private JRVariable createDistinctCountHelperVariable(JRVariable variable) { + JRDesignVariable helper = new JRDesignVariable(); + helper.setName(variable.getName() + "_DISTINCT_COUNT"); + helper.setValueClassName(variable.getValueClassName()); + helper.setIncrementerFactoryClassName(JRDistinctCountIncrementerFactory.class.getName()); + helper.setResetType((byte)1); + if (variable.getIncrementType() != 5) + helper.setResetType(variable.getIncrementType()); + helper.setResetGroup(variable.getIncrementGroup()); + helper.setCalculation((byte)0); + helper.setSystemDefined(true); + helper.setExpression(variable.getExpression()); + return (JRVariable)helper; + } + + private void setVariables(List variableList) { + this.variables = new JRFillVariable[variableList.size()]; + this.variables = (JRFillVariable[])variableList.toArray((Object[])this.variables); + for (int i = 0; i < this.variables.length; i++) + this.variablesMap.put(this.variables[i].getName(), this.variables[i]); + } + + private void setFields(JRDataset dataset, JRFillObjectFactory factory) { + JRField[] jrFields = dataset.getFields(); + if (jrFields != null && jrFields.length > 0) { + this.fields = new JRFillField[jrFields.length]; + this.fieldsMap = new HashMap(); + for (int i = 0; i < this.fields.length; i++) { + this.fields[i] = factory.getField(jrFields[i]); + this.fieldsMap.put(this.fields[i].getName(), this.fields[i]); + } + } + } + + protected void createCalculator(JasperReport jasperReport) throws JRException { + setCalculator(createCalculator(jasperReport, this)); + } + + protected void setCalculator(JRCalculator calculator) { + this.calculator = calculator; + } + + protected static JRCalculator createCalculator(JasperReport jasperReport, JRDataset dataset) throws JRException { + JREvaluator evaluator = JasperCompileManager.loadEvaluator(jasperReport, dataset); + return new JRCalculator(evaluator); + } + + protected void initCalculator() throws JRException { + this.calculator.init(this); + } + + protected void inheritFromMain() { + if (this.resourceBundleBaseName == null && !this.isMain) { + this.resourceBundleBaseName = this.filler.mainDataset.resourceBundleBaseName; + this.whenResourceMissingType = this.filler.mainDataset.whenResourceMissingType; + } + } + + protected JRAbstractScriptlet createScriptlet() throws JRException { + JRDefaultScriptlet jRDefaultScriptlet; + JRAbstractScriptlet tmpScriptlet = null; + if (this.scriptletClassName != null) { + try { + Class scriptletClass = JRClassLoader.loadClassForName(this.scriptletClassName); + tmpScriptlet = scriptletClass.newInstance(); + } catch (ClassNotFoundException e) { + throw new JRException("Error loading scriptlet class : " + this.scriptletClassName, e); + } catch (Exception e) { + throw new JRException("Error creating scriptlet class instance : " + this.scriptletClassName, e); + } + } else { + jRDefaultScriptlet = new JRDefaultScriptlet(); + } + return (JRAbstractScriptlet)jRDefaultScriptlet; + } + + protected void initElementDatasets(JRFillObjectFactory factory) { + this.elementDatasets = factory.getElementDatasets(this); + } + + protected void filterElementDatasets(JRFillElementDataset elementDataset) { + this.origElementDatasets = this.elementDatasets; + this.elementDatasets = new JRFillElementDataset[] { elementDataset }; + } + + protected void restoreElementDatasets() { + if (this.origElementDatasets != null) { + this.elementDatasets = this.origElementDatasets; + this.origElementDatasets = null; + } + } + + protected ResourceBundle loadResourceBundle() { + ResourceBundle loadedBundle; + if (this.resourceBundleBaseName == null) { + loadedBundle = null; + } else { + loadedBundle = JRResourcesUtil.loadResourceBundle(this.resourceBundleBaseName, this.locale); + } + return loadedBundle; + } + + protected void setParameterValues(Map parameterValues) throws JRException { + parameterValues.put("REPORT_PARAMETERS_MAP", parameterValues); + this.reportMaxCount = (Integer)parameterValues.get("REPORT_MAX_COUNT"); + this.locale = (Locale)parameterValues.get("REPORT_LOCALE"); + if (this.locale == null) { + this.locale = Locale.getDefault(); + parameterValues.put("REPORT_LOCALE", this.locale); + } + this.resourceBundle = (ResourceBundle)parameterValues.get("REPORT_RESOURCE_BUNDLE"); + if (this.resourceBundle == null) { + this.resourceBundle = loadResourceBundle(); + if (this.resourceBundle != null) + parameterValues.put("REPORT_RESOURCE_BUNDLE", this.resourceBundle); + } + this.timeZone = (TimeZone)parameterValues.get("REPORT_TIME_ZONE"); + if (this.timeZone == null) { + this.timeZone = TimeZone.getDefault(); + parameterValues.put("REPORT_TIME_ZONE", this.timeZone); + } + this.scriptlet = (JRAbstractScriptlet)parameterValues.get("REPORT_SCRIPTLET"); + if (this.scriptlet == null) { + this.scriptlet = createScriptlet(); + parameterValues.put("REPORT_SCRIPTLET", this.scriptlet); + } + this.scriptlet.setData(this.parametersMap, this.fieldsMap, this.variablesMap, this.groups); + setFillParameterValues(parameterValues); + } + + protected void initDatasource() throws JRException { + this.queryExecuter = null; + this.dataSource = (JRDataSource)getParameterValue("REPORT_DATA_SOURCE"); + if (!this.useDatasourceParamValue && (this.useConnectionParamValue || this.dataSource == null)) { + this.dataSource = createQueryDatasource(); + setParameter("REPORT_DATA_SOURCE", this.dataSource); + } + JRSortField[] sortFields = getSortFields(); + if (sortFields != null && sortFields.length > 0) { + this.dataSource = (JRDataSource)new JRSortableDataSource(this.dataSource, (JRField[])this.fields, sortFields, this.locale); + setParameter("REPORT_DATA_SOURCE", this.dataSource); + } + } + + private void setFillParameterValues(Map parameterValues) throws JRException { + if (this.parameters != null && this.parameters.length > 0) + for (int i = 0; i < this.parameters.length; i++) { + Object value = null; + if (parameterValues.containsKey(this.parameters[i].getName())) { + value = parameterValues.get(this.parameters[i].getName()); + } else if (!this.parameters[i].isSystemDefined()) { + value = this.calculator.evaluate(this.parameters[i].getDefaultValueExpression(), (byte)3); + if (value != null) + parameterValues.put(this.parameters[i].getName(), value); + } + setParameter(this.parameters[i], value); + } + } + + private JRDataSource createQueryDatasource() throws JRException { + if (this.query == null) + return null; + try { + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": Creating " + this.query.getLanguage() + " query executer"); + JRQueryExecuterFactory queryExecuterFactory = JRQueryExecuterUtils.getQueryExecuterFactory(this.query.getLanguage()); + this.queryExecuter = queryExecuterFactory.createQueryExecuter(this.parent, this.parametersMap); + this.filler.fillContext.setRunningQueryExecuter(this.queryExecuter); + return this.queryExecuter.createDatasource(); + } finally { + this.filler.fillContext.clearRunningQueryExecuter(); + } + } + + protected void reset() { + this.useDatasourceParamValue = false; + this.useConnectionParamValue = false; + } + + protected void setDatasourceParameterValue(Map parameterValues, JRDataSource ds) { + this.useDatasourceParamValue = true; + if (ds != null) + parameterValues.put("REPORT_DATA_SOURCE", ds); + } + + protected void setConnectionParameterValue(Map parameterValues, Connection conn) { + this.useConnectionParamValue = true; + if (conn != null) + parameterValues.put("REPORT_CONNECTION", conn); + } + + protected void closeDatasource() { + if (this.queryExecuter != null) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": closing query executer"); + this.queryExecuter.close(); + this.queryExecuter = null; + } + reset(); + } + + protected void start() { + this.reportCount = 0; + } + + protected boolean next() throws JRException { + boolean hasNext = false; + if (this.dataSource != null) { + boolean includeRow = true; + JRExpression filterExpression = getFilterExpression(); + do { + hasNext = advanceDataSource(); + if (!hasNext) + continue; + setOldValues(); + this.calculator.estimateVariables(); + if (filterExpression != null) { + Boolean filterExprResult = (Boolean)this.calculator.evaluate(filterExpression, (byte)2); + includeRow = (filterExprResult != null && filterExprResult.booleanValue()); + } + if (includeRow) + continue; + revertToOldValues(); + } while (hasNext && !includeRow); + if (hasNext) + this.reportCount++; + } + return hasNext; + } + + protected void setOldValues() throws JRException { + if (this.fields != null && this.fields.length > 0) + for (int i = 0; i < this.fields.length; i++) { + JRFillField field = this.fields[i]; + field.setPreviousOldValue(field.getOldValue()); + field.setOldValue(field.getValue()); + field.setValue(this.dataSource.getFieldValue(field)); + } + if (this.variables != null && this.variables.length > 0) + for (int i = 0; i < this.variables.length; i++) { + JRFillVariable variable = this.variables[i]; + variable.setPreviousOldValue(variable.getOldValue()); + variable.setOldValue(variable.getValue()); + } + } + + protected void revertToOldValues() { + if (this.fields != null && this.fields.length > 0) + for (int i = 0; i < this.fields.length; i++) { + JRFillField field = this.fields[i]; + field.setValue(field.getOldValue()); + field.setOldValue(field.getPreviousOldValue()); + } + if (this.variables != null && this.variables.length > 0) + for (int i = 0; i < this.variables.length; i++) { + JRFillVariable variable = this.variables[i]; + variable.setValue(variable.getOldValue()); + variable.setOldValue(variable.getPreviousOldValue()); + } + } + + protected boolean advanceDataSource() throws JRException { + boolean hasNext = ((this.reportMaxCount == null || this.reportMaxCount.intValue() > this.reportCount) && this.dataSource.next()); + return hasNext; + } + + protected void setParameter(String parameterName, Object value) throws JRException { + JRFillParameter parameter = (JRFillParameter)this.parametersMap.get(parameterName); + if (parameter != null) + setParameter(parameter, value); + } + + protected void setParameter(JRFillParameter parameter, Object value) throws JRException { + if (value != null) { + if (parameter.getValueClass().isInstance(value)) { + parameter.setValue(value); + } else { + throw new JRException("Incompatible " + value.getClass().getName() + " value assigned to parameter " + parameter.getName() + " in the " + getName() + " dataset."); + } + } else { + parameter.setValue(value); + } + } + + public Object getVariableValue(String variableName) { + JRFillVariable var = (JRFillVariable)this.variablesMap.get(variableName); + if (var == null) + throw new JRRuntimeException("No such variable " + variableName); + return var.getValue(); + } + + public Object getParameterValue(String parameterName) { + return getParameterValue(parameterName, false); + } + + public Object getParameterValue(String parameterName, boolean ignoreMissing) { + Object value; + JRFillParameter param = (JRFillParameter)this.parametersMap.get(parameterName); + if (param == null) { + if (!ignoreMissing) + throw new JRRuntimeException("No such parameter " + parameterName); + value = null; + } else { + value = param.getValue(); + } + return value; + } + + public Object getFieldValue(String fieldName) { + JRFillField var = (JRFillField)this.fieldsMap.get(fieldName); + if (var == null) + throw new JRRuntimeException("No such field " + fieldName); + return var.getValue(); + } + + protected static class VariableCalculationReq { + String variableName; + + byte calculation; + + VariableCalculationReq(String variableName, byte calculation) { + this.variableName = variableName; + this.calculation = calculation; + } + + public boolean equals(Object o) { + if (o == null || !(o instanceof VariableCalculationReq)) + return false; + VariableCalculationReq r = (VariableCalculationReq)o; + return (this.variableName.equals(r.variableName) && this.calculation == r.calculation); + } + + public int hashCode() { + return 31 * this.calculation + this.variableName.hashCode(); + } + } + + protected void addVariableCalculationReq(String variableName, byte calculation) { + if (this.variableCalculationReqs == null) + this.variableCalculationReqs = new HashSet(); + this.variableCalculationReqs.add(new VariableCalculationReq(variableName, calculation)); + } + + protected void checkVariableCalculationReqs(JRFillObjectFactory factory) { + if (this.variableCalculationReqs != null && !this.variableCalculationReqs.isEmpty()) { + List variableList = new ArrayList(this.variables.length * 2); + for (int i = 0; i < this.variables.length; i++) { + JRFillVariable variable = this.variables[i]; + checkVariableCalculationReq(variable, variableList, factory); + } + setVariables(variableList); + } + } + + private void checkVariableCalculationReq(JRFillVariable variable, List variableList, JRFillObjectFactory factory) { + if (hasVariableCalculationReq(variable, (byte)3) || hasVariableCalculationReq(variable, (byte)7)) { + if (variable.getHelperVariable((byte)0) == null) { + JRVariable countVar = createHelperVariable(variable, "_COUNT", (byte)1); + JRFillVariable fillCountVar = factory.getVariable(countVar); + checkVariableCalculationReq(fillCountVar, variableList, factory); + variable.setHelperVariable(fillCountVar, (byte)0); + } + if (variable.getHelperVariable((byte)1) == null) { + JRVariable sumVar = createHelperVariable(variable, "_SUM", (byte)2); + JRFillVariable fillSumVar = factory.getVariable(sumVar); + checkVariableCalculationReq(fillSumVar, variableList, factory); + variable.setHelperVariable(fillSumVar, (byte)1); + } + } + if (hasVariableCalculationReq(variable, (byte)6)) + if (variable.getHelperVariable((byte)2) == null) { + JRVariable varianceVar = createHelperVariable(variable, "_VARIANCE", (byte)7); + JRFillVariable fillVarianceVar = factory.getVariable(varianceVar); + checkVariableCalculationReq(fillVarianceVar, variableList, factory); + variable.setHelperVariable(fillVarianceVar, (byte)2); + } + if (hasVariableCalculationReq(variable, (byte)10)) + if (variable.getHelperVariable((byte)0) == null) { + JRVariable countVar = createDistinctCountHelperVariable(variable); + JRFillVariable fillCountVar = factory.getVariable(countVar); + checkVariableCalculationReq(fillCountVar, variableList, factory); + variable.setHelperVariable(fillCountVar, (byte)0); + } + variableList.add(variable); + } + + private boolean hasVariableCalculationReq(JRVariable var, byte calculation) { + return this.variableCalculationReqs.contains(new VariableCalculationReq(var.getName(), calculation)); + } + + public String getName() { + return this.parent.getName(); + } + + public String getScriptletClass() { + return this.parent.getScriptletClass(); + } + + public JRParameter[] getParameters() { + return (JRParameter[])this.parameters; + } + + public Map getParametersMap() { + return this.parametersMap; + } + + public JRQuery getQuery() { + return this.query; + } + + public JRField[] getFields() { + return (JRField[])this.fields; + } + + public JRSortField[] getSortFields() { + return this.parent.getSortFields(); + } + + public JRVariable[] getVariables() { + return (JRVariable[])this.variables; + } + + public JRGroup[] getGroups() { + return (JRGroup[])this.groups; + } + + public boolean isMainDataset() { + return this.isMain; + } + + public String getResourceBundle() { + return this.parent.getResourceBundle(); + } + + public byte getWhenResourceMissingType() { + return this.whenResourceMissingType; + } + + public void setWhenResourceMissingType(byte whenResourceMissingType) { + this.whenResourceMissingType = whenResourceMissingType; + } + + public boolean hasProperties() { + return this.parent.hasProperties(); + } + + public JRPropertiesMap getPropertiesMap() { + return this.parent.getPropertiesMap(); + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public JRExpression getFilterExpression() { + return this.parent.getFilterExpression(); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDatasetRun.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDatasetRun.java new file mode 100644 index 0000000..36e8a7e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillDatasetRun.java @@ -0,0 +1,142 @@ +package net.sf.jasperreports.engine.fill; + +import java.sql.Connection; +import java.util.Map; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRScriptletException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRFillDatasetRun implements JRDatasetRun { + private static final Log log = LogFactory.getLog(JRFillDatasetRun.class); + + private final JRBaseFiller filler; + + private final JRFillDataset dataset; + + private JRExpression parametersMapExpression; + + private JRDatasetParameter[] parameters; + + private JRExpression connectionExpression; + + private JRExpression dataSourceExpression; + + public JRFillDatasetRun(JRBaseFiller filler, JRDatasetRun datasetRun, JRFillObjectFactory factory) { + factory.put(datasetRun, this); + this.filler = filler; + this.dataset = (JRFillDataset)filler.datasetMap.get(datasetRun.getDatasetName()); + this.parametersMapExpression = datasetRun.getParametersMapExpression(); + this.parameters = datasetRun.getParameters(); + this.connectionExpression = datasetRun.getConnectionExpression(); + this.dataSourceExpression = datasetRun.getDataSourceExpression(); + } + + public void evaluate(JRFillElementDataset elementDataset, byte evaluation) throws JRException { + Map parameterValues = JRFillSubreport.getParameterValues(this.filler, this.parametersMapExpression, this.parameters, evaluation, false, (this.dataset.getResourceBundle() != null), false); + try { + if (this.dataSourceExpression != null) { + JRDataSource dataSource = (JRDataSource)this.filler.evaluateExpression(this.dataSourceExpression, evaluation); + this.dataset.setDatasourceParameterValue(parameterValues, dataSource); + } else if (this.connectionExpression != null) { + Connection connection = (Connection)this.filler.evaluateExpression(this.connectionExpression, evaluation); + this.dataset.setConnectionParameterValue(parameterValues, connection); + } + copyConnectionParameter(parameterValues); + this.dataset.setParameterValues(parameterValues); + this.dataset.initDatasource(); + this.dataset.filterElementDatasets(elementDataset); + this.dataset.initCalculator(); + iterate(); + } finally { + this.dataset.closeDatasource(); + this.dataset.restoreElementDatasets(); + } + } + + protected void copyConnectionParameter(Map parameterValues) { + JRQuery query = this.dataset.getQuery(); + if (query != null) { + String language = query.getLanguage(); + if (this.connectionExpression == null && (language.equals("sql") || language.equals("SQL")) && !parameterValues.containsKey("REPORT_CONNECTION")) { + JRFillParameter connParam = (JRFillParameter)this.filler.getParametersMap().get("REPORT_CONNECTION"); + Connection connection = (Connection)connParam.getValue(); + parameterValues.put("REPORT_CONNECTION", connection); + } + } + } + + protected void iterate() throws JRException { + this.dataset.start(); + init(); + if (this.dataset.next()) { + detail(); + while (this.dataset.next()) { + checkInterrupted(); + group(); + detail(); + } + } + } + + protected void checkInterrupted() { + if (Thread.currentThread().isInterrupted() || this.filler.isInterrupted()) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": interrupting"); + this.filler.setInterrupted(true); + throw new JRFillInterruptedException(); + } + } + + protected void group() throws JRException, JRScriptletException { + this.dataset.calculator.estimateGroupRuptures(); + this.dataset.scriptlet.callBeforeGroupInit(); + this.dataset.calculator.initializeVariables((byte)4); + this.dataset.scriptlet.callAfterGroupInit(); + } + + protected void init() throws JRScriptletException, JRException { + this.dataset.scriptlet.callBeforeReportInit(); + this.dataset.calculator.initializeVariables((byte)1); + this.dataset.scriptlet.callAfterReportInit(); + } + + protected void detail() throws JRScriptletException, JRException { + this.dataset.scriptlet.callBeforeDetailEval(); + this.dataset.calculator.calculateVariables(); + this.dataset.scriptlet.callAfterDetailEval(); + } + + public String getDatasetName() { + return this.dataset.getName(); + } + + public JRExpression getParametersMapExpression() { + return this.parametersMapExpression; + } + + public JRDatasetParameter[] getParameters() { + return this.parameters; + } + + public JRExpression getConnectionExpression() { + return this.connectionExpression; + } + + public JRExpression getDataSourceExpression() { + return this.dataSourceExpression; + } + + protected JRFillDataset getDataset() { + return this.dataset; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElement.java new file mode 100644 index 0000000..45f626f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElement.java @@ -0,0 +1,717 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionChunk; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRStyleSetter; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRFillElement implements JRElement, JRFillCloneable, JRStyleSetter { + protected JRElement parent = null; + + protected Map templates = new HashMap(); + + protected JRBaseFiller filler = null; + + protected JRFillExpressionEvaluator expressionEvaluator = null; + + protected JRDefaultStyleProvider defaultStyleProvider; + + protected JRGroup printWhenGroupChanges = null; + + protected JRFillElementGroup elementGroup = null; + + protected JRFillBand band = null; + + private boolean isPrintWhenExpressionNull = true; + + private boolean isPrintWhenTrue = true; + + private boolean isToPrint = true; + + private boolean isReprinted = false; + + private boolean isAlreadyPrinted = false; + + private Collection dependantElements = new ArrayList(); + + private int relativeY = 0; + + private int stretchHeight = 0; + + private int bandBottomY = 0; + + private int x; + + private int y; + + private int width; + + private int height; + + private boolean isValueRepeating = false; + + protected byte currentEvaluation; + + protected Map delayedEvaluationsMap; + + protected JRFillElementContainer conditionalStylesContainer; + + protected JRStyle initStyle; + + private boolean shrinkable; + + protected JRPropertiesMap staticProperties; + + protected JRPropertiesMap dynamicProperties; + + protected JRPropertiesMap mergedProperties; + + protected JRFillElement(JRBaseFiller filler, JRElement element, JRFillObjectFactory factory) { + factory.put(element, this); + this.parent = element; + this.filler = filler; + this.expressionEvaluator = factory.getExpressionEvaluator(); + this.defaultStyleProvider = factory.getDefaultStyleProvider(); + this.printWhenGroupChanges = factory.getGroup(element.getPrintWhenGroupChanges()); + this.elementGroup = (JRFillElementGroup)factory.getVisitResult((JRVisitable)element.getElementGroup()); + this.x = element.getX(); + this.y = element.getY(); + this.width = element.getWidth(); + this.height = element.getHeight(); + this.staticProperties = element.hasProperties() ? element.getPropertiesMap().cloneProperties() : null; + this.mergedProperties = this.staticProperties; + factory.registerDelayedStyleSetter(this, (JRStyleContainer)this.parent); + } + + protected JRFillElement(JRFillElement element, JRFillCloneFactory factory) { + factory.put(element, this); + this.parent = element.parent; + this.filler = element.filler; + this.expressionEvaluator = element.expressionEvaluator; + this.defaultStyleProvider = element.defaultStyleProvider; + this.printWhenGroupChanges = element.printWhenGroupChanges; + this.elementGroup = (JRFillElementGroup)factory.getClone((JRFillElementGroup)element.getElementGroup()); + this.x = element.getX(); + this.y = element.getY(); + this.width = element.getWidth(); + this.height = element.getHeight(); + this.templates = element.templates; + this.initStyle = element.initStyle; + this.shrinkable = element.shrinkable; + this.staticProperties = (element.staticProperties == null) ? null : element.staticProperties.cloneProperties(); + this.mergedProperties = this.staticProperties; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public String getKey() { + return this.parent.getKey(); + } + + public byte getPositionType() { + return this.parent.getPositionType(); + } + + public void setPositionType(byte positionType) {} + + public byte getStretchType() { + return this.parent.getStretchType(); + } + + public void setStretchType(byte stretchType) {} + + public boolean isPrintRepeatedValues() { + return this.parent.isPrintRepeatedValues(); + } + + public void setPrintRepeatedValues(boolean isPrintRepeatedValues) {} + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)1); + } + + public Byte getOwnMode() { + return this.parent.getOwnMode(); + } + + public void setMode(byte mode) {} + + public void setMode(Byte mode) {} + + public int getX() { + return this.x; + } + + public void setX(int x) { + this.x = x; + } + + public void setY(int y) { + this.y = y; + } + + public int getY() { + return this.y; + } + + public int getWidth() { + return this.width; + } + + public void setWidth(int width) { + this.width = width; + } + + public void setHeight(int height) { + this.height = height; + } + + public int getHeight() { + return this.height; + } + + public boolean isRemoveLineWhenBlank() { + return this.parent.isRemoveLineWhenBlank(); + } + + public void setRemoveLineWhenBlank(boolean isRemoveLine) {} + + public boolean isPrintInFirstWholeBand() { + return this.parent.isPrintInFirstWholeBand(); + } + + public void setPrintInFirstWholeBand(boolean isPrint) {} + + public boolean isPrintWhenDetailOverflows() { + return this.parent.isPrintWhenDetailOverflows(); + } + + public void setPrintWhenDetailOverflows(boolean isPrint) {} + + public Color getForecolor() { + return JRStyleResolver.getForecolor((JRCommonElement)this); + } + + public Color getOwnForecolor() { + return this.parent.getOwnForecolor(); + } + + public void setForecolor(Color forecolor) {} + + public Color getBackcolor() { + return JRStyleResolver.getBackcolor((JRCommonElement)this); + } + + public Color getOwnBackcolor() { + return this.parent.getOwnBackcolor(); + } + + public void setBackcolor(Color backcolor) {} + + public JRExpression getPrintWhenExpression() { + return this.parent.getPrintWhenExpression(); + } + + public JRGroup getPrintWhenGroupChanges() { + return this.printWhenGroupChanges; + } + + public JRElementGroup getElementGroup() { + return this.elementGroup; + } + + protected boolean isPrintWhenExpressionNull() { + return this.isPrintWhenExpressionNull; + } + + protected void setPrintWhenExpressionNull(boolean isPrintWhenExpressionNull) { + this.isPrintWhenExpressionNull = isPrintWhenExpressionNull; + } + + protected boolean isPrintWhenTrue() { + return this.isPrintWhenTrue; + } + + protected void setPrintWhenTrue(boolean isPrintWhenTrue) { + this.isPrintWhenTrue = isPrintWhenTrue; + } + + protected boolean isToPrint() { + return this.isToPrint; + } + + protected void setToPrint(boolean isToPrint) { + this.isToPrint = isToPrint; + } + + protected boolean isReprinted() { + return this.isReprinted; + } + + protected void setReprinted(boolean isReprinted) { + this.isReprinted = isReprinted; + } + + protected boolean isAlreadyPrinted() { + return this.isAlreadyPrinted; + } + + protected void setAlreadyPrinted(boolean isAlreadyPrinted) { + this.isAlreadyPrinted = isAlreadyPrinted; + } + + protected JRElement[] getGroupElements() { + JRElement[] groupElements = null; + if (this.elementGroup != null) + groupElements = this.elementGroup.getElements(); + return groupElements; + } + + protected Collection getDependantElements() { + return this.dependantElements; + } + + protected void addDependantElement(JRElement element) { + this.dependantElements.add(element); + } + + protected int getRelativeY() { + return this.relativeY; + } + + protected void setRelativeY(int relativeY) { + this.relativeY = relativeY; + } + + protected int getStretchHeight() { + return this.stretchHeight; + } + + protected void setStretchHeight(int stretchHeight) { + if (stretchHeight > getHeight() || (this.shrinkable && isRemoveLineWhenBlank())) { + this.stretchHeight = stretchHeight; + } else { + this.stretchHeight = getHeight(); + } + } + + protected int getBandBottomY() { + return this.bandBottomY; + } + + protected void setBandBottomY(int bandBottomY) { + this.bandBottomY = bandBottomY; + } + + protected JRFillBand getBand() { + return this.band; + } + + protected void setBand(JRFillBand band) { + this.band = band; + } + + protected void reset() { + this.relativeY = this.y; + this.stretchHeight = this.height; + if (this.elementGroup != null) + this.elementGroup.reset(); + } + + protected void setCurrentEvaluation(byte evaluation) { + this.currentEvaluation = evaluation; + } + + protected abstract void evaluate(byte paramByte) throws JRException; + + protected void evaluatePrintWhenExpression(byte evaluation) throws JRException { + boolean isExprNull = true; + boolean isExprTrue = false; + JRExpression expression = getPrintWhenExpression(); + if (expression != null) { + isExprNull = false; + Boolean printWhenExpressionValue = (Boolean)evaluateExpression(expression, evaluation); + if (printWhenExpressionValue == null) { + isExprTrue = false; + } else { + isExprTrue = printWhenExpressionValue.booleanValue(); + } + } + setPrintWhenExpressionNull(isExprNull); + setPrintWhenTrue(isExprTrue); + } + + protected abstract void rewind() throws JRException; + + protected abstract JRPrintElement fill() throws JRException; + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) { + setToPrint(true); + } else { + setToPrint(false); + } + setReprinted(false); + return false; + } + + protected void stretchElement(int bandStretch) { + switch (getStretchType()) { + case 2: + setStretchHeight(getHeight() + bandStretch); + break; + case 1: + if (this.elementGroup != null) + setStretchHeight(getHeight() + this.elementGroup.getStretchHeightDiff()); + break; + } + } + + protected void moveDependantElements() { + Collection elements = getDependantElements(); + if (elements != null && elements.size() > 0) { + JRFillElement element = null; + int diffY = 0; + for (Iterator it = elements.iterator(); it.hasNext(); ) { + element = it.next(); + diffY = element.getY() - getY() - getHeight() - element.getRelativeY() - getRelativeY() - getStretchHeight(); + if (diffY < 0) + diffY = 0; + element.setRelativeY(element.getRelativeY() + diffY); + } + } + } + + protected abstract void resolveElement(JRPrintElement paramJRPrintElement, byte paramByte) throws JRException; + + protected final Object evaluateExpression(JRExpression expression, byte evaluation) throws JRException { + return this.expressionEvaluator.evaluate(expression, evaluation); + } + + protected boolean isValueRepeating() { + return this.isValueRepeating; + } + + protected void setValueRepeating(boolean isValueRepeating) { + this.isValueRepeating = isValueRepeating; + } + + protected JRFillVariable getVariable(String variableName) { + return this.filler.getVariable(variableName); + } + + protected JRFillField getField(String fieldName) { + return this.filler.getField(fieldName); + } + + protected byte getEvaluationTime() { + return 1; + } + + protected void resolveElement(JRPrintElement element, byte evaluation, JREvaluationTime evaluationTime) throws JRException { + byte evaluationTimeType = getEvaluationTime(); + switch (evaluationTimeType) { + case 1: + return; + case 7: + delayedEvaluate((JRRecordedValuesPrintElement)element, evaluationTime, evaluation); + } + resolveElement(element, evaluation); + } + + private static class DelayedEvaluations implements Serializable { + private static final long serialVersionUID = 10200L; + + final Set fields = new HashSet(); + + final Set variables = new HashSet(); + } + + protected void initDelayedEvaluations() { + if (getEvaluationTime() == 7 && this.delayedEvaluationsMap == null) { + this.delayedEvaluationsMap = new HashMap(); + collectDelayedEvaluations(); + } + } + + protected void collectDelayedEvaluations() {} + + protected void collectDelayedEvaluations(JRExpression expression) { + if (expression != null) { + JRExpressionChunk[] chunks = expression.getChunks(); + if (chunks != null) + for (int i = 0; i < chunks.length; i++) { + DelayedEvaluations delayedEvaluations; + JREvaluationTime time; + DelayedEvaluations delayedEvaluations1; + JRExpressionChunk chunk = chunks[i]; + switch (chunk.getType()) { + case 3: + delayedEvaluations = getDelayedEvaluations(JREvaluationTime.EVALUATION_TIME_NOW); + delayedEvaluations.fields.add(chunk.getText()); + break; + case 4: + time = autogetVariableEvaluationTime(chunk.getText()); + delayedEvaluations1 = getDelayedEvaluations(time); + delayedEvaluations1.variables.add(chunk.getText()); + break; + } + } + } + } + + private DelayedEvaluations getDelayedEvaluations(JREvaluationTime time) { + DelayedEvaluations delayedEvaluations = (DelayedEvaluations)this.delayedEvaluationsMap.get(time); + if (delayedEvaluations == null) { + delayedEvaluations = new DelayedEvaluations(); + this.delayedEvaluationsMap.put(time, delayedEvaluations); + } + return delayedEvaluations; + } + + private JREvaluationTime autogetVariableEvaluationTime(String variableName) { + JREvaluationTime evaluationTime; + JRFillVariable variable = getVariable(variableName); + switch (variable.getResetType()) { + case 1: + evaluationTime = JREvaluationTime.EVALUATION_TIME_REPORT; + break; + case 2: + evaluationTime = JREvaluationTime.EVALUATION_TIME_PAGE; + break; + case 3: + evaluationTime = JREvaluationTime.EVALUATION_TIME_COLUMN; + break; + case 4: + evaluationTime = JREvaluationTime.getGroupEvaluationTime(variable.getResetGroup().getName()); + break; + default: + evaluationTime = JREvaluationTime.EVALUATION_TIME_NOW; + break; + } + if (!evaluationTime.equals(JREvaluationTime.EVALUATION_TIME_NOW) && this.band.isNowEvaluationTime(evaluationTime)) + evaluationTime = JREvaluationTime.EVALUATION_TIME_NOW; + if (variable.getCalculation() == 8 && evaluationTime.equals(JREvaluationTime.EVALUATION_TIME_NOW) && this.band.isVariableUsedInSubreportReturns(variableName)) + evaluationTime = JREvaluationTime.getBandEvaluationTime(this.band); + return evaluationTime; + } + + protected void initDelayedEvaluationPrint(JRRecordedValuesPrintElement printElement) throws JRException { + for (Iterator it = this.delayedEvaluationsMap.keySet().iterator(); it.hasNext(); ) { + JREvaluationTime evaluationTime = it.next(); + if (!evaluationTime.equals(JREvaluationTime.EVALUATION_TIME_NOW)) + this.filler.addBoundElement(this, printElement, evaluationTime); + } + printElement.initRecordedValues(this.delayedEvaluationsMap.keySet()); + if (this.delayedEvaluationsMap.containsKey(JREvaluationTime.EVALUATION_TIME_NOW)) + delayedEvaluate(printElement, JREvaluationTime.EVALUATION_TIME_NOW, this.currentEvaluation); + } + + protected void delayedEvaluate(JRRecordedValuesPrintElement printElement, JREvaluationTime evaluationTime, byte evaluation) throws JRException { + JRRecordedValues recordedValues = printElement.getRecordedValues(); + if (!recordedValues.lastEvaluationTime()) { + DelayedEvaluations delayedEvaluations = (DelayedEvaluations)this.delayedEvaluationsMap.get(evaluationTime); + for (Iterator iterator1 = delayedEvaluations.fields.iterator(); iterator1.hasNext(); ) { + String fieldName = iterator1.next(); + JRFillField field = getField(fieldName); + recordedValues.recordFieldValue(fieldName, field.getValue(evaluation)); + } + for (Iterator it = delayedEvaluations.variables.iterator(); it.hasNext(); ) { + String variableName = it.next(); + JRFillVariable variable = getVariable(variableName); + recordedValues.recordVariableValue(variableName, variable.getValue(evaluation)); + } + } + recordedValues.doneEvaluation(evaluationTime); + if (recordedValues.finishedEvaluations()) { + overwriteWithRecordedValues(recordedValues, evaluation); + resolveElement(printElement, evaluation); + restoreValues(recordedValues, evaluation); + printElement.deleteRecordedValues(); + } + } + + private void overwriteWithRecordedValues(JRRecordedValues recordedValues, byte evaluation) { + Map fieldValues = recordedValues.getRecordedFieldValues(); + if (fieldValues != null) + for (Iterator it = fieldValues.entrySet().iterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + String fieldName = (String)entry.getKey(); + Object fieldValue = entry.getValue(); + JRFillField field = getField(fieldName); + field.overwriteValue(fieldValue, evaluation); + } + Map variableValues = recordedValues.getRecordedVariableValues(); + if (variableValues != null) + for (Iterator it = variableValues.entrySet().iterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + String variableName = (String)entry.getKey(); + Object variableValue = entry.getValue(); + JRFillVariable variable = getVariable(variableName); + variable.overwriteValue(variableValue, evaluation); + } + } + + private void restoreValues(JRRecordedValues recordedValues, byte evaluation) { + Map fieldValues = recordedValues.getRecordedFieldValues(); + if (fieldValues != null) + for (Iterator it = fieldValues.keySet().iterator(); it.hasNext(); ) { + String fieldName = it.next(); + JRFillField field = getField(fieldName); + field.restoreValue(evaluation); + } + Map variableValues = recordedValues.getRecordedVariableValues(); + if (variableValues != null) + for (Iterator it = variableValues.keySet().iterator(); it.hasNext(); ) { + String variableName = it.next(); + JRFillVariable variable = getVariable(variableName); + variable.restoreValue(evaluation); + } + } + + protected void setConditionalStylesContainer(JRFillElementContainer conditionalStylesContainer) { + this.conditionalStylesContainer = conditionalStylesContainer; + } + + public JRStyle getStyle() { + JRStyle crtStyle = this.initStyle; + boolean isUsingDefaultStyle = false; + if (crtStyle == null) { + crtStyle = this.filler.getDefaultStyle(); + isUsingDefaultStyle = true; + } + JRStyle evalStyle = crtStyle; + if (this.conditionalStylesContainer != null) + evalStyle = this.conditionalStylesContainer.getEvaluatedConditionalStyle(crtStyle); + if (isUsingDefaultStyle && evalStyle == crtStyle) + evalStyle = null; + return evalStyle; + } + + protected JRTemplateElement getTemplate(JRStyle style) { + return (JRTemplateElement)this.templates.get(style); + } + + protected void registerTemplate(JRStyle style, JRTemplateElement template) { + this.templates.put(style, template); + } + + protected final void setShrinkable(boolean shrinkable) { + this.shrinkable = shrinkable; + } + + protected void stretchHeightFinal() {} + + protected boolean isEvaluateNow() { + switch (getEvaluationTime()) { + case 1: + evaluateNow = true; + return evaluateNow; + case 7: + evaluateNow = isAutoEvaluateNow(); + return evaluateNow; + } + boolean evaluateNow = false; + return evaluateNow; + } + + protected boolean isAutoEvaluateNow() { + return (this.delayedEvaluationsMap == null || this.delayedEvaluationsMap.isEmpty() || (this.delayedEvaluationsMap.size() == 1 && this.delayedEvaluationsMap.containsKey(JREvaluationTime.EVALUATION_TIME_NOW))); + } + + protected boolean isEvaluateAuto() { + return (getEvaluationTime() == 7 && !isAutoEvaluateNow()); + } + + public String getStyleNameReference() { + return null; + } + + public void setStyle(JRStyle style) { + this.initStyle = style; + this.conditionalStylesContainer.collectConditionalStyle(style); + } + + public void setStyleNameReference(String name) { + throw new UnsupportedOperationException("Style name references not allowed at fill time"); + } + + public Object clone() { + return null; + } + + public Object clone(JRElementGroup parentGroup) { + return null; + } + + public boolean hasProperties() { + return (this.mergedProperties != null && this.mergedProperties.hasProperties()); + } + + public JRPropertiesMap getPropertiesMap() { + return this.mergedProperties; + } + + public JRPropertiesHolder getParentProperties() { + return (JRPropertiesHolder)this.filler.getJasperReport(); + } + + public JRPropertyExpression[] getPropertyExpressions() { + return this.parent.getPropertyExpressions(); + } + + protected void transferProperties(JRTemplateElement template) { + JRProperties.transferProperties((JRPropertiesHolder)this.parent, template, "net.sf.jasperreports.print.transfer."); + } + + protected void transferProperties(JRPrintElement element) { + JRProperties.transferProperties(this.dynamicProperties, (JRPropertiesHolder)element, "net.sf.jasperreports.print.transfer."); + } + + protected JRPropertiesMap getEvaluatedProperties() { + return this.mergedProperties; + } + + protected void evaluateProperties(byte evaluation) throws JRException { + JRPropertyExpression[] propExprs = getPropertyExpressions(); + if (propExprs == null || propExprs.length == 0) { + this.dynamicProperties = null; + this.mergedProperties = this.staticProperties; + } else { + this.dynamicProperties = new JRPropertiesMap(); + for (int i = 0; i < propExprs.length; i++) { + JRPropertyExpression prop = propExprs[i]; + String value = (String)evaluateExpression(prop.getValueExpression(), evaluation); + if (value != null) + this.dynamicProperties.setProperty(prop.getName(), value); + } + this.mergedProperties = this.dynamicProperties.cloneProperties(); + this.mergedProperties.setBaseProperties(this.staticProperties); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementContainer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementContainer.java new file mode 100644 index 0000000..a23330a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementContainer.java @@ -0,0 +1,434 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +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 net.sf.jasperreports.engine.JRConditionalStyle; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintElementContainer; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.base.JRBaseStyle; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRFillElementContainer extends JRFillElementGroup { + protected JRBaseFiller filler; + + private JRFillElement[] ySortedElements = null; + + private JRFillElement[] stretchElements = null; + + private JRFillElement[] bandBottomElements = null; + + private JRFillElement[] removableElements = null; + + private boolean willOverflow = false; + + protected boolean isOverflow = false; + + private int stretchHeight = 0; + + private int firstY = 0; + + protected JRFillElement firstYElement = null; + + protected final JRFillExpressionEvaluator expressionEvaluator; + + protected JRFillElement[] deepElements; + + protected Set stylesToEvaluate = new HashSet(); + + protected Map evaluatedStyles = new HashMap(); + + protected boolean hasPrintWhenOverflowElement; + + protected JRFillElementContainer(JRBaseFiller filler, JRElementGroup container, JRFillObjectFactory factory) { + super(container, factory); + this.expressionEvaluator = factory.getExpressionEvaluator(); + initDeepElements(); + this.filler = filler; + } + + protected JRFillElementContainer(JRFillElementContainer container, JRFillCloneFactory factory) { + super(container, factory); + this.expressionEvaluator = container.expressionEvaluator; + initDeepElements(); + this.filler = container.filler; + } + + private void initDeepElements() { + if (this.elements == null) { + this.deepElements = new JRFillElement[0]; + } else { + List deepElementsList = new ArrayList(this.elements.length); + collectDeepElements((JRElement[])this.elements, deepElementsList); + this.deepElements = new JRFillElement[deepElementsList.size()]; + deepElementsList.toArray((Object[])this.deepElements); + } + } + + private static void collectDeepElements(JRElement[] elements, List deepElementsList) { + for (int i = 0; i < elements.length; i++) { + JRElement element = elements[i]; + deepElementsList.add(element); + if (element instanceof JRFillFrame) { + JRFrame frame = (JRFrame)element; + collectDeepElements(frame.getElements(), deepElementsList); + } + } + } + + protected final void initElements() { + this.hasPrintWhenOverflowElement = false; + if (this.elements != null && this.elements.length > 0) { + List sortedElemsList = new ArrayList(); + List stretchElemsList = new ArrayList(); + List bandBottomElemsList = new ArrayList(); + List removableElemsList = new ArrayList(); + for (int i = 0; i < this.elements.length; i++) { + JRFillElement element = this.elements[i]; + sortedElemsList.add(element); + if (element.getPositionType() == 3) + bandBottomElemsList.add(element); + if (element.getStretchType() != 0) + stretchElemsList.add(element); + if (element.isRemoveLineWhenBlank()) + removableElemsList.add(element); + if (element.isPrintWhenDetailOverflows()) + this.hasPrintWhenOverflowElement = true; + } + Collections.sort(sortedElemsList, new JRYComparator()); + this.ySortedElements = new JRFillElement[this.elements.length]; + sortedElemsList.toArray(this.ySortedElements); + this.stretchElements = new JRFillElement[stretchElemsList.size()]; + stretchElemsList.toArray(this.stretchElements); + this.bandBottomElements = new JRFillElement[bandBottomElemsList.size()]; + bandBottomElemsList.toArray(this.bandBottomElements); + this.removableElements = new JRFillElement[removableElemsList.size()]; + removableElemsList.toArray(this.removableElements); + } + setDependentElements(); + setElementsBandBottomY(); + } + + protected final void setElementsBandBottomY() { + if (this.elements != null && this.elements.length > 0) + for (int i = 0; i < this.elements.length; i++) + this.elements[i].setBandBottomY(getContainerHeight() - this.elements[i].getY() - this.elements[i].getHeight()); + } + + private void setDependentElements() { + if (this.ySortedElements != null && this.ySortedElements.length > 0) + for (int i = 0; i < this.ySortedElements.length - 1; i++) { + JRFillElement iElem = this.ySortedElements[i]; + boolean isBreakElem = iElem instanceof JRFillBreak; + for (int j = i + 1; j < this.ySortedElements.length; j++) { + JRFillElement jElem = this.ySortedElements[j]; + int left = Math.min(iElem.getX(), jElem.getX()); + int right = Math.max(iElem.getX() + iElem.getWidth(), jElem.getX() + jElem.getWidth()); + if (((isBreakElem && jElem.getPositionType() == 2) || jElem.getPositionType() == 1) && iElem.getY() + iElem.getHeight() <= jElem.getY() && iElem.getWidth() + jElem.getWidth() > right - left) + iElem.addDependantElement(jElem); + } + } + } + + protected void evaluate(byte evaluation) throws JRException { + JRElement[] allElements = getElements(); + if (allElements != null && allElements.length > 0) + for (int i = 0; i < allElements.length; i++) { + JRFillElement element = (JRFillElement)allElements[i]; + element.setCurrentEvaluation(evaluation); + element.evaluate(evaluation); + } + } + + protected void resetElements() { + if (this.ySortedElements != null && this.ySortedElements.length > 0) + for (int i = 0; i < this.ySortedElements.length; i++) { + JRFillElement element = this.ySortedElements[i]; + element.reset(); + if (!this.isOverflow) + element.setAlreadyPrinted(false); + } + } + + protected boolean willOverflow() { + return this.willOverflow; + } + + protected void initFill() { + this.isOverflow = this.willOverflow; + this.firstY = 0; + this.firstYElement = null; + } + + protected void prepareElements(int availableStretchHeight, boolean isOverflowAllowed) throws JRException { + boolean tmpWillOverflow = false; + int maxBandStretch = 0; + int bandStretch = 0; + this.firstY = this.isOverflow ? getContainerHeight() : 0; + this.firstYElement = null; + boolean isFirstYFound = false; + if (this.ySortedElements != null && this.ySortedElements.length > 0) + for (int i = 0; i < this.ySortedElements.length; i++) { + JRFillElement element = this.ySortedElements[i]; + tmpWillOverflow = (element.prepare(availableStretchHeight + getElementFirstY(element), this.isOverflow) || tmpWillOverflow); + element.moveDependantElements(); + if (element.isToPrint()) { + if (this.isOverflow) { + if (element.isReprinted()) { + this.firstY = 0; + } else if (!isFirstYFound) { + this.firstY = element.getY(); + } + isFirstYFound = true; + } + this.firstYElement = element; + bandStretch = element.getRelativeY() + element.getStretchHeight() - getContainerHeight() + element.getBandBottomY(); + if (bandStretch > maxBandStretch) + maxBandStretch = bandStretch; + } + } + if (maxBandStretch > availableStretchHeight + this.firstY) + tmpWillOverflow = true; + if (tmpWillOverflow) { + this.stretchHeight = getContainerHeight() + availableStretchHeight; + } else { + this.stretchHeight = getContainerHeight() + maxBandStretch; + } + this.willOverflow = (tmpWillOverflow && isOverflowAllowed); + } + + private int getElementFirstY(JRFillElement element) { + int elemFirstY; + if (!this.isOverflow || this.hasPrintWhenOverflowElement) { + elemFirstY = 0; + } else if (element.getY() >= this.firstY) { + elemFirstY = this.firstY; + } else { + elemFirstY = element.getY(); + } + return elemFirstY; + } + + protected void setStretchHeight(int stretchHeight) { + if (stretchHeight > this.stretchHeight) + this.stretchHeight = stretchHeight; + } + + protected void stretchElements() { + if (this.stretchElements != null && this.stretchElements.length > 0) + for (int i = 0; i < this.stretchElements.length; i++) { + JRFillElement element = this.stretchElements[i]; + element.stretchElement(this.stretchHeight - getContainerHeight()); + element.moveDependantElements(); + } + if (this.ySortedElements != null && this.ySortedElements.length > 0) + for (int i = 0; i < this.ySortedElements.length; i++) { + JRFillElement element = this.ySortedElements[i]; + element.stretchHeightFinal(); + } + } + + protected int getStretchHeight() { + return this.stretchHeight; + } + + protected void moveBandBottomElements() { + if (this.bandBottomElements != null && this.bandBottomElements.length > 0) + for (int i = 0; i < this.bandBottomElements.length; i++) { + JRFillElement element = this.bandBottomElements[i]; + element.setRelativeY(element.getY() + this.stretchHeight - getContainerHeight()); + element.setToPrint((element.isToPrint() && !this.willOverflow)); + } + } + + protected void removeBlankElements() { + JRFillElement[] arrayOfJRFillElement = this.removableElements; + if (arrayOfJRFillElement != null && arrayOfJRFillElement.length > 0) { + JRFillElement[] arrayOfJRFillElement1 = this.ySortedElements; + for (int i = 0; i < arrayOfJRFillElement.length; i++) { + int blankHeight; + JRFillElement iElem = arrayOfJRFillElement[i]; + if (iElem.isToPrint()) { + blankHeight = iElem.getHeight() - iElem.getStretchHeight(); + } else { + blankHeight = iElem.getHeight(); + } + if (blankHeight > 0 && iElem.getRelativeY() + iElem.getStretchHeight() <= this.stretchHeight && iElem.getRelativeY() >= this.firstY) { + int blankY = iElem.getRelativeY() + iElem.getHeight() - blankHeight; + boolean isToRemove = true; + int j; + for (j = 0; j < arrayOfJRFillElement1.length; j++) { + JRFillElement jElem = arrayOfJRFillElement1[j]; + if (iElem != jElem && jElem.isToPrint()) { + int top = Math.min(blankY, jElem.getRelativeY()); + int bottom = Math.max(blankY + blankHeight, jElem.getRelativeY() + jElem.getStretchHeight()); + if (blankHeight + jElem.getStretchHeight() > bottom - top) { + isToRemove = false; + break; + } + } + } + if (isToRemove) { + for (j = 0; j < arrayOfJRFillElement1.length; j++) { + JRFillElement jElem = arrayOfJRFillElement1[j]; + if (jElem.getRelativeY() >= blankY + blankHeight) + jElem.setRelativeY(jElem.getRelativeY() - blankHeight); + } + this.stretchHeight -= blankHeight; + } + } + } + } + } + + protected void fillElements(JRPrintElementContainer printContainer) throws JRException { + JRElement[] allElements = getElements(); + if (allElements != null && allElements.length > 0) + for (int i = 0; i < allElements.length; i++) { + JRFillElement element = (JRFillElement)allElements[i]; + element.setRelativeY(element.getRelativeY() - this.firstY); + if (element.getRelativeY() + element.getStretchHeight() > this.stretchHeight) + element.setToPrint(false); + element.setAlreadyPrinted((element.isToPrint() || element.isAlreadyPrinted())); + if (element.isToPrint()) { + JRPrintElement printElement = element.fill(); + if (printElement != null) { + printContainer.addElement(printElement); + if (element instanceof JRFillSubreport) { + JRFillSubreport subreport = (JRFillSubreport)element; + List fonts = subreport.subreportFiller.getJasperPrint().getFontsList(); + for (int j = 0; j < fonts.size(); j++) + this.filler.getJasperPrint().addFont(fonts.get(j), true); + List styles = subreport.subreportFiller.getJasperPrint().getStylesList(); + for (int k = 0; k < styles.size(); k++) + this.filler.addPrintStyle(styles.get(k)); + List origins = subreport.subreportFiller.getJasperPrint().getOriginsList(); + for (int m = 0; m < origins.size(); m++) + this.filler.getJasperPrint().addOrigin(origins.get(m)); + Collection printElements = subreport.getPrintElements(); + addSubElements(printContainer, element, printElements); + } else if (element instanceof JRFillCrosstab) { + List printElements = ((JRFillCrosstab)element).getPrintElements(); + addSubElements(printContainer, element, printElements); + } + } + } + } + printContainer.setHeight(this.stretchHeight - this.firstY); + } + + protected void addSubElements(JRPrintElementContainer printContainer, JRFillElement element, Collection printElements) { + if (printElements != null && printElements.size() > 0) + for (Iterator it = printElements.iterator(); it.hasNext(); ) { + JRPrintElement printElement = it.next(); + printElement.setX(element.getX() + printElement.getX()); + printElement.setY(element.getRelativeY() + printElement.getY()); + printContainer.addElement(printElement); + } + } + + protected void rewind() throws JRException { + if (this.ySortedElements != null && this.ySortedElements.length > 0) + for (int i = 0; i < this.ySortedElements.length; i++) { + JRFillElement element = this.ySortedElements[i]; + element.rewind(); + element.setAlreadyPrinted(false); + } + this.willOverflow = false; + } + + protected int getFirstY() { + return this.firstY; + } + + protected abstract int getContainerHeight(); + + protected void initConditionalStyles() { + this.filler.addDefaultStyleListener(new JRBaseFiller.DefaultStyleListener() { + private final JRFillElementContainer this$0; + + public void defaultStyleSet(JRStyle style) { + JRFillElementContainer.this.collectConditionalStyle(style); + } + }); + int i; + for (i = 0; i < this.deepElements.length; i++) { + JRStyle style = (this.deepElements[i]).initStyle; + collectConditionalStyle(style); + } + if (this.deepElements.length > 0) + for (i = 0; i < this.deepElements.length; i++) + this.deepElements[i].setConditionalStylesContainer(this); + } + + protected void collectConditionalStyle(JRStyle style) { + if (style != null) + this.stylesToEvaluate.add(style); + } + + protected void evaluateConditionalStyles(byte evaluation) throws JRException { + for (Iterator it = this.stylesToEvaluate.iterator(); it.hasNext();) + evaluateConditionalStyle(it.next(), evaluation); + } + + protected JRStyle evaluateConditionalStyle(JRStyle initialStyle, byte evaluation) throws JRException { + JRBaseStyle jRBaseStyle; + JRStyle consolidatedStyle = initialStyle; + StringBuffer code = new StringBuffer(); + List condStylesToApply = new ArrayList(); + boolean anyTrue = buildConsolidatedStyle(initialStyle, evaluation, code, condStylesToApply); + if (anyTrue) { + String consolidatedStyleName = initialStyle.getName() + code.toString(); + consolidatedStyle = (JRStyle)this.filler.getJasperPrint().getStylesMap().get(consolidatedStyleName); + if (consolidatedStyle == null) { + jRBaseStyle = new JRBaseStyle(consolidatedStyleName); + for (int j = condStylesToApply.size() - 1; j >= 0; j--) + JRStyleResolver.appendStyle((JRStyle)jRBaseStyle, condStylesToApply.get(j)); + this.filler.addPrintStyle((JRStyle)jRBaseStyle); + } + } + this.evaluatedStyles.put(initialStyle, jRBaseStyle); + return (JRStyle)jRBaseStyle; + } + + protected boolean buildConsolidatedStyle(JRStyle style, byte evaluation, StringBuffer code, List condStylesToApply) throws JRException { + boolean anyTrue = false; + JRConditionalStyle[] conditionalStyles = style.getConditionalStyles(); + if (conditionalStyles != null && conditionalStyles.length > 0) + for (int j = 0; j < conditionalStyles.length; j++) { + boolean condition; + JRConditionalStyle conditionalStyle = conditionalStyles[j]; + Boolean expressionValue = (Boolean)this.expressionEvaluator.evaluate(conditionalStyle.getConditionExpression(), evaluation); + if (expressionValue == null) { + condition = false; + } else { + condition = expressionValue.booleanValue(); + } + code.append(condition ? 49 : 48); + anyTrue |= condition; + if (condition) + condStylesToApply.add(conditionalStyle); + } + condStylesToApply.add(style); + if (style.getStyle() != null) + anyTrue |= buildConsolidatedStyle(style.getStyle(), evaluation, code, condStylesToApply); + return anyTrue; + } + + public JRStyle getEvaluatedConditionalStyle(JRStyle parentStyle) { + return (JRStyle)this.evaluatedStyles.get(parentStyle); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementDataset.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementDataset.java new file mode 100644 index 0000000..3040d74 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementDataset.java @@ -0,0 +1,115 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.TimeZone; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; + +public abstract class JRFillElementDataset implements JRElementDataset { + protected JRElementDataset parent = null; + + private final JRBaseFiller filler; + + protected JRGroup resetGroup = null; + + protected JRGroup incrementGroup = null; + + private boolean isIncremented = true; + + protected JRFillDatasetRun datasetRun; + + private boolean increment = false; + + protected JRFillElementDataset(JRElementDataset dataset, JRFillObjectFactory factory) { + factory.put(dataset, this); + this.parent = dataset; + this.filler = factory.getFiller(); + this.resetGroup = factory.getGroup(dataset.getResetGroup()); + this.incrementGroup = factory.getGroup(dataset.getIncrementGroup()); + this.datasetRun = factory.getDatasetRun(dataset.getDatasetRun()); + } + + public byte getResetType() { + return this.parent.getResetType(); + } + + public byte getIncrementType() { + return this.parent.getIncrementType(); + } + + public JRGroup getResetGroup() { + return this.resetGroup; + } + + public JRGroup getIncrementGroup() { + return this.incrementGroup; + } + + protected TimeZone getTimeZone() { + return this.filler.getTimeZone(); + } + + protected void initialize() { + customInitialize(); + this.isIncremented = false; + this.increment = false; + } + + protected void evaluate(JRCalculator calculator) throws JRExpressionEvalException { + evaluateIncrementWhenExpression(calculator); + if (this.increment) + customEvaluate(calculator); + this.isIncremented = false; + } + + protected void evaluateIncrementWhenExpression(JRCalculator calculator) throws JRExpressionEvalException { + JRExpression incrementWhenExpression = getIncrementWhenExpression(); + if (incrementWhenExpression == null) { + this.increment = true; + } else { + Boolean evaluated = (Boolean)calculator.evaluate(incrementWhenExpression); + this.increment = (evaluated != null && evaluated.booleanValue()); + } + } + + protected void increment() { + if (!this.isIncremented && this.increment) + customIncrement(); + this.isIncremented = true; + } + + protected abstract void customInitialize(); + + protected abstract void customEvaluate(JRCalculator paramJRCalculator) throws JRExpressionEvalException; + + protected abstract void customIncrement(); + + public JRDatasetRun getDatasetRun() { + return this.datasetRun; + } + + public void evaluateDatasetRun(byte evaluation) throws JRException { + if (this.datasetRun != null) + this.datasetRun.evaluate(this, evaluation); + } + + public JRFillDataset getInputDataset() { + JRFillDataset inputDataset; + if (this.datasetRun != null) { + inputDataset = this.datasetRun.getDataset(); + } else { + inputDataset = this.filler.mainDataset; + } + return inputDataset; + } + + public JRExpression getIncrementWhenExpression() { + return this.parent.getIncrementWhenExpression(); + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementGroup.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementGroup.java new file mode 100644 index 0000000..b542c08 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillElementGroup.java @@ -0,0 +1,143 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import net.sf.jasperreports.engine.JRChild; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRVisitable; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRFillElementGroup implements JRElementGroup, JRFillCloneable { + protected List children = new ArrayList(); + + protected JRElementGroup elementGroup = null; + + protected JRFillElement[] elements = null; + + private JRElement topElementInGroup = null; + + private JRElement bottomElementInGroup = null; + + private int stretchHeightDiff = 0; + + protected JRFillElementGroup(JRElementGroup elementGrp, JRFillObjectFactory factory) { + factory.put(elementGrp, this); + if (elementGrp != null) { + List list = elementGrp.getChildren(); + if (list != null && list.size() > 0) + for (int i = 0; i < list.size(); i++) { + JRChild child = list.get(i); + child = (JRChild)factory.getVisitResult((JRVisitable)child); + this.children.add(child); + } + getElements(); + this.elementGroup = (JRElementGroup)factory.getVisitResult((JRVisitable)elementGrp.getElementGroup()); + } + } + + protected JRFillElementGroup(JRFillElementGroup elementGrp, JRFillCloneFactory factory) { + factory.put(elementGrp, this); + List list = elementGrp.getChildren(); + if (list != null) + for (int i = 0; i < list.size(); i++) { + JRFillCloneable child = list.get(i); + JRFillCloneable clone = child.createClone(factory); + this.children.add(clone); + } + getElements(); + this.elementGroup = (JRFillElementGroup)factory.getClone((JRFillElementGroup)elementGrp.getElementGroup()); + } + + public List getChildren() { + return this.children; + } + + public JRElementGroup getElementGroup() { + return this.elementGroup; + } + + public JRElement[] getElements() { + if (this.elements == null) + if (this.children != null) { + List allElements = new ArrayList(); + Object child = null; + JRElement[] childElementArray = null; + for (int i = 0; i < this.children.size(); i++) { + child = this.children.get(i); + if (child instanceof JRFillElement) { + allElements.add(child); + } else if (child instanceof JRFillElementGroup) { + childElementArray = ((JRFillElementGroup)child).getElements(); + if (childElementArray != null) + allElements.addAll(Arrays.asList((Object[])childElementArray)); + } + } + this.elements = new JRFillElement[allElements.size()]; + allElements.toArray(this.elements); + } + return (JRElement[])this.elements; + } + + public JRElement getElementByKey(String key) { + return null; + } + + protected void reset() { + this.topElementInGroup = null; + } + + protected int getStretchHeightDiff() { + if (this.topElementInGroup == null) { + this.stretchHeightDiff = 0; + setTopBottomElements(); + JRElement[] allElements = getElements(); + if (allElements != null && allElements.length > 0) { + JRFillElement topElem = null; + JRFillElement bottomElem = null; + for (int i = 0; i < allElements.length; i++) { + JRFillElement element = (JRFillElement)allElements[i]; + if (element.isToPrint()) { + if (topElem == null || (topElem != null && element.getRelativeY() + element.getStretchHeight() < topElem.getRelativeY() + topElem.getStretchHeight())) + topElem = element; + if (bottomElem == null || (bottomElem != null && element.getRelativeY() + element.getStretchHeight() > bottomElem.getRelativeY() + bottomElem.getStretchHeight())) + bottomElem = element; + } + } + if (topElem != null) + this.stretchHeightDiff = bottomElem.getRelativeY() + bottomElem.getStretchHeight() - topElem.getRelativeY() - this.bottomElementInGroup.getY() + this.bottomElementInGroup.getHeight() - this.topElementInGroup.getY(); + if (this.stretchHeightDiff < 0) + this.stretchHeightDiff = 0; + } + } + return this.stretchHeightDiff; + } + + private void setTopBottomElements() { + JRElement[] allElements = getElements(); + if (allElements != null && allElements.length > 0) + for (int i = 0; i < allElements.length; i++) { + if (this.topElementInGroup == null || (this.topElementInGroup != null && allElements[i].getY() + allElements[i].getHeight() < this.topElementInGroup.getY() + this.topElementInGroup.getHeight())) + this.topElementInGroup = allElements[i]; + if (this.bottomElementInGroup == null || (this.bottomElementInGroup != null && allElements[i].getY() + allElements[i].getHeight() > this.bottomElementInGroup.getY() + this.bottomElementInGroup.getHeight())) + this.bottomElementInGroup = allElements[i]; + } + } + + public void visit(JRVisitor visitor) { + visitor.visitElementGroup(this); + } + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillElementGroup(this, factory); + } + + public Object clone() { + return null; + } + + public Object clone(JRElementGroup parentGroup) { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillEllipse.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillEllipse.java new file mode 100644 index 0000000..763245c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillEllipse.java @@ -0,0 +1,61 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRFillEllipse extends JRFillGraphicElement implements JREllipse { + protected JRFillEllipse(JRBaseFiller filler, JREllipse ellipse, JRFillObjectFactory factory) { + super(filler, (JRGraphicElement)ellipse, factory); + } + + protected JRFillEllipse(JRFillEllipse ellipse, JRFillCloneFactory factory) { + super(ellipse, factory); + } + + protected JRTemplateEllipse getJRTemplateEllipse() { + JRStyle style = getStyle(); + JRTemplateEllipse template = (JRTemplateEllipse)getTemplate(style); + if (template == null) { + template = new JRTemplateEllipse((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + registerTemplate(style, template); + } + return template; + } + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + setValueRepeating(true); + } + + protected JRPrintElement fill() { + JRTemplatePrintEllipse printEllipse = new JRTemplatePrintEllipse(getJRTemplateEllipse()); + printEllipse.setX(getX()); + printEllipse.setY(getRelativeY()); + printEllipse.setWidth(getWidth()); + printEllipse.setHeight(getStretchHeight()); + transferProperties(printEllipse); + return printEllipse; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitEllipse(this); + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillEllipse(this, factory); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillExpressionEvaluator.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillExpressionEvaluator.java new file mode 100644 index 0000000..3f9420a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillExpressionEvaluator.java @@ -0,0 +1,8 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; + +public interface JRFillExpressionEvaluator { + Object evaluate(JRExpression paramJRExpression, byte paramByte) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillField.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillField.java new file mode 100644 index 0000000..042a46f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillField.java @@ -0,0 +1,113 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; + +public class JRFillField implements JRField { + protected JRField parent = null; + + private Object previousOldValue = null; + + private Object oldValue = null; + + private Object value = null; + + private Object savedValue; + + protected JRFillField(JRField field, JRFillObjectFactory factory) { + factory.put(field, this); + this.parent = field; + } + + public String getName() { + return this.parent.getName(); + } + + public String getDescription() { + return this.parent.getDescription(); + } + + public void setDescription(String description) {} + + public Class getValueClass() { + return this.parent.getValueClass(); + } + + public String getValueClassName() { + return this.parent.getValueClassName(); + } + + public Object getOldValue() { + return this.oldValue; + } + + public void setOldValue(Object oldValue) { + this.oldValue = oldValue; + } + + public Object getValue() { + return this.value; + } + + public void setValue(Object value) { + this.value = value; + } + + public Object getValue(byte evaluation) { + switch (evaluation) { + case 1: + returnValue = this.oldValue; + return returnValue; + } + Object returnValue = this.value; + return returnValue; + } + + public void overwriteValue(Object newValue, byte evaluation) { + switch (evaluation) { + case 1: + this.savedValue = this.oldValue; + this.oldValue = newValue; + return; + } + this.savedValue = this.value; + this.value = newValue; + } + + public void restoreValue(byte evaluation) { + switch (evaluation) { + case 1: + this.oldValue = this.savedValue; + break; + default: + this.value = this.savedValue; + break; + } + this.savedValue = null; + } + + public Object getPreviousOldValue() { + return this.previousOldValue; + } + + public void setPreviousOldValue(Object previousOldValue) { + this.previousOldValue = previousOldValue; + } + + public boolean hasProperties() { + return this.parent.hasProperties(); + } + + public JRPropertiesMap getPropertiesMap() { + return this.parent.getPropertiesMap(); + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillFrame.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillFrame.java new file mode 100644 index 0000000..74b976e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillFrame.java @@ -0,0 +1,463 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.base.JRBaseElementGroup; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillFrame extends JRFillElement implements JRFrame { + protected final JRFrame parentFrame; + + private JRFillFrameElements frameContainer; + + private Map bottomTemplateFrames; + + private Map topTemplateFrames; + + private Map topBottomTemplateFrames; + + private boolean first; + + private boolean fillBottomBorder; + + private boolean filling; + + public JRFillFrame(JRBaseFiller filler, JRFrame frame, JRFillObjectFactory factory) { + super(filler, (JRElement)frame, factory); + this.parentFrame = frame; + this.frameContainer = new JRFillFrameElements(factory); + this.bottomTemplateFrames = new HashMap(); + this.topTemplateFrames = new HashMap(); + this.topBottomTemplateFrames = new HashMap(); + setShrinkable(true); + } + + protected JRFillFrame(JRFillFrame frame, JRFillCloneFactory factory) { + super(frame, factory); + this.parentFrame = frame.parentFrame; + this.frameContainer = new JRFillFrameElements(frame.frameContainer, factory); + this.bottomTemplateFrames = frame.bottomTemplateFrames; + this.topTemplateFrames = frame.topTemplateFrames; + this.topBottomTemplateFrames = frame.topBottomTemplateFrames; + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + if (isPrintWhenExpressionNull() || isPrintWhenTrue()) { + this.frameContainer.evaluate(evaluation); + boolean repeating = true; + JRFillElement[] elements = (JRFillElement[])getElements(); + for (int i = 0; repeating && i < elements.length; i++) + repeating &= elements[i].isValueRepeating(); + setValueRepeating(repeating); + } + this.filling = false; + } + + protected void rewind() throws JRException { + this.frameContainer.rewind(); + this.filling = false; + } + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + super.prepare(availableStretchHeight, isOverflow); + if (!isToPrint()) + return false; + this.first = (!isOverflow || !this.filling); + int topPadding = this.first ? getLineBox().getTopPadding().intValue() : 0; + int bottomPadding = getLineBox().getBottomPadding().intValue(); + if (availableStretchHeight < getRelativeY() - getY() - getBandBottomY() - topPadding) { + setToPrint(false); + return true; + } + if (!this.filling && !isPrintRepeatedValues() && isValueRepeating() && (!isPrintInFirstWholeBand() || !getBand().isFirstWholeOnPageColumn()) && (getPrintWhenGroupChanges() == null || !getBand().isNewGroup(getPrintWhenGroupChanges())) && (!isOverflow || !isPrintWhenDetailOverflows())) { + setToPrint(false); + return false; + } + if (!this.filling && isOverflow && isAlreadyPrinted()) + if (isPrintWhenDetailOverflows()) { + rewind(); + setReprinted(true); + } else { + setToPrint(false); + return false; + } + int stretchHeight = availableStretchHeight - getRelativeY() + getY() + getBandBottomY(); + this.frameContainer.initFill(); + this.frameContainer.resetElements(); + int frameElemsAvailableHeight = stretchHeight + bottomPadding + getLineBox().getTopPadding().intValue() - topPadding; + this.frameContainer.prepareElements(frameElemsAvailableHeight, true); + boolean willOverflow = this.frameContainer.willOverflow(); + if (willOverflow) { + this.fillBottomBorder = false; + setStretchHeight(getHeight() + stretchHeight); + } else { + int neededStretch = this.frameContainer.getStretchHeight() - this.frameContainer.getFirstY() + topPadding + bottomPadding; + if (neededStretch <= getHeight() + stretchHeight) { + this.fillBottomBorder = true; + setStretchHeight(neededStretch); + } else { + this.fillBottomBorder = false; + setStretchHeight(getHeight() + stretchHeight); + } + } + this.filling = willOverflow; + return willOverflow; + } + + protected void setStretchHeight(int stretchHeight) { + super.setStretchHeight(stretchHeight); + int topPadding = this.first ? getLineBox().getTopPadding().intValue() : 0; + int bottomPadding = this.fillBottomBorder ? getLineBox().getBottomPadding().intValue() : 0; + this.frameContainer.setStretchHeight(stretchHeight + this.frameContainer.getFirstY() - topPadding - bottomPadding); + } + + protected void stretchHeightFinal() { + this.frameContainer.stretchElements(); + this.frameContainer.moveBandBottomElements(); + this.frameContainer.removeBlankElements(); + int topPadding = this.first ? getLineBox().getTopPadding().intValue() : 0; + int bottomPadding = this.fillBottomBorder ? getLineBox().getBottomPadding().intValue() : 0; + super.setStretchHeight(this.frameContainer.getStretchHeight() - this.frameContainer.getFirstY() + topPadding + bottomPadding); + } + + protected JRPrintElement fill() throws JRException { + JRTemplatePrintFrame printFrame = new JRTemplatePrintFrame(getTemplate()); + printFrame.setX(getX()); + printFrame.setY(getRelativeY()); + printFrame.setWidth(getWidth()); + this.frameContainer.fillElements(printFrame); + printFrame.setHeight(getStretchHeight()); + transferProperties(printFrame); + return printFrame; + } + + protected JRTemplateFrame getTemplate() { + Map templatesMap; + JRStyle style = getStyle(); + if (this.first) { + if (this.fillBottomBorder) { + templatesMap = this.templates; + } else { + templatesMap = this.bottomTemplateFrames; + } + } else if (this.fillBottomBorder) { + templatesMap = this.topTemplateFrames; + } else { + templatesMap = this.topBottomTemplateFrames; + } + JRTemplateFrame boxTemplate = (JRTemplateFrame)templatesMap.get(style); + if (boxTemplate == null) { + boxTemplate = new JRTemplateFrame((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(boxTemplate); + if (this.first) { + if (!this.fillBottomBorder) { + boxTemplate.copyBox(getLineBox()); + JRBoxUtil.reset(boxTemplate.getLineBox(), false, false, false, true); + } + } else if (this.fillBottomBorder) { + boxTemplate.copyBox(getLineBox()); + JRBoxUtil.reset(boxTemplate.getLineBox(), false, false, true, false); + } else { + boxTemplate.copyBox(getLineBox()); + JRBoxUtil.reset(boxTemplate.getLineBox(), false, false, true, true); + } + templatesMap.put(style, boxTemplate); + } + return boxTemplate; + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public JRElement[] getElements() { + return this.frameContainer.getElements(); + } + + public List getChildren() { + return this.frameContainer.getChildren(); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public JRLineBox getLineBox() { + return ((JRBoxContainer)this.parent).getLineBox(); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen()); + } + + public Color getBorderColor() { + return getLineBox().getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return getLineBox().getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + getLineBox().getPen().setLineColor(borderColor); + } + + public int getPadding() { + return getLineBox().getPadding().intValue(); + } + + public Integer getOwnPadding() { + return getLineBox().getOwnPadding(); + } + + public void setPadding(int padding) { + getLineBox().setPadding(padding); + } + + public void setPadding(Integer padding) { + getLineBox().setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen()); + } + + public Color getTopBorderColor() { + return getLineBox().getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return getLineBox().getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + getLineBox().getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return getLineBox().getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return getLineBox().getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + getLineBox().setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + getLineBox().setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen()); + } + + public Color getLeftBorderColor() { + return getLineBox().getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return getLineBox().getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + getLineBox().getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return getLineBox().getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return getLineBox().getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + getLineBox().setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + getLineBox().setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen()); + } + + public Color getBottomBorderColor() { + return getLineBox().getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return getLineBox().getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + getLineBox().getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return getLineBox().getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return getLineBox().getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + getLineBox().setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + getLineBox().setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen()); + } + + public Color getRightBorderColor() { + return getLineBox().getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return getLineBox().getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + getLineBox().getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return getLineBox().getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return getLineBox().getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + getLineBox().setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + getLineBox().setRightPadding(rightPadding); + } + + public void visit(JRVisitor visitor) { + visitor.visitFrame(this); + } + + public JRElement getElementByKey(String key) { + return JRBaseElementGroup.getElementByKey(getElements(), key); + } + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillFrame(this, factory); + } + + protected class JRFillFrameElements extends JRFillElementContainer { + private final JRFillFrame this$0; + + JRFillFrameElements(JRFillObjectFactory factory) { + super(JRFillFrame.this.filler, (JRElementGroup)JRFillFrame.this.parentFrame, factory); + initElements(); + } + + JRFillFrameElements(JRFillFrameElements frameElements, JRFillCloneFactory factory) { + super(frameElements, factory); + initElements(); + } + + protected int getContainerHeight() { + return JRFillFrame.this.getHeight() - JRFillFrame.this.getLineBox().getTopPadding().intValue() - JRFillFrame.this.getLineBox().getBottomPadding().intValue(); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGraphicElement.java new file mode 100644 index 0000000..e1da546 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGraphicElement.java @@ -0,0 +1,81 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRCommonGraphicElement; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRFillGraphicElement extends JRFillElement implements JRGraphicElement { + protected JRFillGraphicElement(JRBaseFiller filler, JRGraphicElement graphicElement, JRFillObjectFactory factory) { + super(filler, (JRElement)graphicElement, factory); + } + + protected JRFillGraphicElement(JRFillGraphicElement graphicElement, JRFillCloneFactory factory) { + super(graphicElement, factory); + } + + public JRPen getLinePen() { + return ((JRGraphicElement)this.parent).getLinePen(); + } + + public byte getPen() { + return JRPenUtil.getPenFromLinePen(getLinePen()); + } + + public Byte getOwnPen() { + return JRPenUtil.getOwnPenFromLinePen(getLinePen()); + } + + public void setPen(byte pen) {} + + public void setPen(Byte pen) {} + + public byte getFill() { + return JRStyleResolver.getFill((JRCommonGraphicElement)this); + } + + public Byte getOwnFill() { + return ((JRGraphicElement)this.parent).getOwnFill(); + } + + public void setFill(byte fill) {} + + public void setFill(Byte fill) {} + + public Float getDefaultLineWidth() { + return ((JRGraphicElement)this.parent).getDefaultLineWidth(); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public void rewind() {} + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + boolean willOverflow = false; + super.prepare(availableStretchHeight, isOverflow); + if (!isToPrint()) + return willOverflow; + boolean isToPrint = true; + boolean isReprinted = false; + if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows()) + isToPrint = false; + if (isToPrint && isPrintWhenExpressionNull() && !isPrintRepeatedValues()) + if ((!isPrintInFirstWholeBand() || !getBand().isFirstWholeOnPageColumn()) && (getPrintWhenGroupChanges() == null || !getBand().isNewGroup(getPrintWhenGroupChanges())) && (!isOverflow || !isPrintWhenDetailOverflows())) + isToPrint = false; + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + isToPrint = false; + willOverflow = true; + } + if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues()))) + isReprinted = true; + setToPrint(isToPrint); + setReprinted(isReprinted); + return willOverflow; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGroup.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGroup.java new file mode 100644 index 0000000..62c0912 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillGroup.java @@ -0,0 +1,130 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRVariable; + +public class JRFillGroup implements JRGroup { + protected JRGroup parent = null; + + private JRFillBand groupHeader = null; + + private JRFillBand groupFooter = null; + + private JRVariable countVariable = null; + + private boolean hasChanged = true; + + private boolean isTopLevelChange = false; + + private boolean isHeaderPrinted = false; + + private boolean isFooterPrinted = true; + + public JRFillGroup(JRGroup group, JRFillObjectFactory factory) { + factory.put(group, this); + this.parent = group; + String reportName = factory.getFiller().isSubreport() ? factory.getFiller().getJasperReport().getName() : null; + this.groupHeader = factory.getBand(group.getGroupHeader()); + if (this.groupHeader != (factory.getFiller()).missingFillBand) + this.groupHeader.setOrigin(new JROrigin(reportName, group.getName(), (byte)5)); + this.groupFooter = factory.getBand(group.getGroupFooter()); + if (this.groupFooter != (factory.getFiller()).missingFillBand) + this.groupFooter.setOrigin(new JROrigin(reportName, group.getName(), (byte)7)); + this.countVariable = factory.getVariable(group.getCountVariable()); + } + + public String getName() { + return this.parent.getName(); + } + + public JRExpression getExpression() { + return this.parent.getExpression(); + } + + public boolean isStartNewColumn() { + return this.parent.isStartNewColumn(); + } + + public void setStartNewColumn(boolean isStart) { + this.parent.setStartNewColumn(isStart); + } + + public boolean isStartNewPage() { + return this.parent.isStartNewPage(); + } + + public void setStartNewPage(boolean isStart) { + this.parent.setStartNewPage(isStart); + } + + public boolean isResetPageNumber() { + return this.parent.isResetPageNumber(); + } + + public void setResetPageNumber(boolean isReset) { + this.parent.setResetPageNumber(isReset); + } + + public boolean isReprintHeaderOnEachPage() { + return this.parent.isReprintHeaderOnEachPage(); + } + + public void setReprintHeaderOnEachPage(boolean isReprint) {} + + public int getMinHeightToStartNewPage() { + return this.parent.getMinHeightToStartNewPage(); + } + + public void setMinHeightToStartNewPage(int minHeight) {} + + public JRBand getGroupHeader() { + return this.groupHeader; + } + + public JRBand getGroupFooter() { + return this.groupFooter; + } + + public JRVariable getCountVariable() { + return this.countVariable; + } + + public boolean hasChanged() { + return this.hasChanged; + } + + public void setHasChanged(boolean hasChanged) { + this.hasChanged = hasChanged; + } + + public boolean isTopLevelChange() { + return this.isTopLevelChange; + } + + public void setTopLevelChange(boolean isTopLevelChange) { + this.isTopLevelChange = isTopLevelChange; + } + + public boolean isHeaderPrinted() { + return this.isHeaderPrinted; + } + + public void setHeaderPrinted(boolean isHeaderPrinted) { + this.isHeaderPrinted = isHeaderPrinted; + } + + public boolean isFooterPrinted() { + return this.isFooterPrinted; + } + + public void setFooterPrinted(boolean isFooterPrinted) { + this.isFooterPrinted = isFooterPrinted; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillHyperlinkHelper.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillHyperlinkHelper.java new file mode 100644 index 0000000..73dab49 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillHyperlinkHelper.java @@ -0,0 +1,50 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRPrintHyperlink; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameter; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameters; +import net.sf.jasperreports.engine.base.JRBasePrintHyperlink; + +public class JRFillHyperlinkHelper { + public static JRPrintHyperlinkParameters evaluateHyperlinkParameters(JRHyperlink hyperlink, JRFillExpressionEvaluator expressionEvaluator, byte evaluationType) throws JRException { + JRPrintHyperlinkParameters printParameters; + JRHyperlinkParameter[] hyperlinkParameters = hyperlink.getHyperlinkParameters(); + if (hyperlinkParameters == null) { + printParameters = null; + } else { + printParameters = new JRPrintHyperlinkParameters(); + for (int i = 0; i < hyperlinkParameters.length; i++) { + Class valueClass; + Object value; + JRHyperlinkParameter hyperlinkParameter = hyperlinkParameters[i]; + JRExpression valueExpression = hyperlinkParameter.getValueExpression(); + if (valueExpression == null) { + value = null; + valueClass = Object.class; + } else { + value = expressionEvaluator.evaluate(valueExpression, evaluationType); + valueClass = valueExpression.getValueClass(); + } + JRPrintHyperlinkParameter printParam = new JRPrintHyperlinkParameter(hyperlinkParameter.getName(), valueClass.getName(), value); + printParameters.addParameter(printParam); + } + } + return printParameters; + } + + public static JRPrintHyperlink evaluateHyperlink(JRHyperlink hyperlink, JRFillExpressionEvaluator expressionEvaluator, byte evaluationType) throws JRException { + JRBasePrintHyperlink printHyperlink = new JRBasePrintHyperlink(); + printHyperlink.setLinkType(hyperlink.getLinkType()); + printHyperlink.setHyperlinkTarget(hyperlink.getHyperlinkTarget()); + printHyperlink.setHyperlinkReference((String)expressionEvaluator.evaluate(hyperlink.getHyperlinkReferenceExpression(), evaluationType)); + printHyperlink.setHyperlinkAnchor((String)expressionEvaluator.evaluate(hyperlink.getHyperlinkAnchorExpression(), evaluationType)); + printHyperlink.setHyperlinkPage((Integer)expressionEvaluator.evaluate(hyperlink.getHyperlinkPageExpression(), evaluationType)); + printHyperlink.setHyperlinkTooltip((String)expressionEvaluator.evaluate(hyperlink.getHyperlinkTooltipExpression(), evaluationType)); + printHyperlink.setHyperlinkParameters(evaluateHyperlinkParameters(hyperlink, expressionEvaluator, evaluationType)); + return (JRPrintHyperlink)printHyperlink; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillImage.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillImage.java new file mode 100644 index 0000000..0e3494d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillImage.java @@ -0,0 +1,590 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.awt.Image; +import java.io.File; +import java.io.InputStream; +import java.net.URL; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRCommonImage; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRImageRenderer; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameters; +import net.sf.jasperreports.engine.JRPrintImage; +import net.sf.jasperreports.engine.JRRenderable; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRFillImage extends JRFillGraphicElement implements JRImage { + private JRGroup evaluationGroup = null; + + private JRRenderable renderer = null; + + private String anchorName = null; + + private String hyperlinkReference = null; + + private String hyperlinkAnchor = null; + + private Integer hyperlinkPage = null; + + private String hyperlinkTooltip; + + private JRPrintHyperlinkParameters hyperlinkParameters; + + protected JRFillImage(JRBaseFiller filler, JRImage image, JRFillObjectFactory factory) { + super(filler, (JRGraphicElement)image, factory); + this.evaluationGroup = factory.getGroup(image.getEvaluationGroup()); + } + + protected JRFillImage(JRFillImage image, JRFillCloneFactory factory) { + super(image, factory); + this.evaluationGroup = image.evaluationGroup; + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getScaleImage() { + return JRStyleResolver.getScaleImage((JRCommonImage)this); + } + + public Byte getOwnScaleImage() { + return ((JRImage)this.parent).getOwnScaleImage(); + } + + public void setScaleImage(byte scaleImage) {} + + public void setScaleImage(Byte scaleImage) {} + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment((JRAlignment)this); + } + + public Byte getOwnHorizontalAlignment() { + return ((JRImage)this.parent).getOwnHorizontalAlignment(); + } + + public void setHorizontalAlignment(byte horizontalAlignment) {} + + public void setHorizontalAlignment(Byte horizontalAlignment) {} + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment((JRAlignment)this); + } + + public Byte getOwnVerticalAlignment() { + return ((JRImage)this.parent).getOwnVerticalAlignment(); + } + + public void setVerticalAlignment(byte verticalAlignment) {} + + public void setVerticalAlignment(Byte verticalAlignment) {} + + public boolean isUsingCache() { + return ((JRImage)this.parent).isUsingCache(); + } + + public Boolean isOwnUsingCache() { + return ((JRImage)this.parent).isOwnUsingCache(); + } + + public void setUsingCache(boolean isUsingCache) {} + + public void setUsingCache(Boolean isUsingCache) {} + + public boolean isLazy() { + return ((JRImage)this.parent).isLazy(); + } + + public void setLazy(boolean isLazy) {} + + public byte getOnErrorType() { + return ((JRImage)this.parent).getOnErrorType(); + } + + public void setOnErrorType(byte onErrorType) {} + + public byte getEvaluationTime() { + return ((JRImage)this.parent).getEvaluationTime(); + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return ((JRImage)this.parent).getLineBox(); + } + + public byte getBorder() { + return getBox().getBorder(); + } + + public Byte getOwnBorder() { + return getBox().getOwnBorder(); + } + + public void setBorder(byte border) { + getBox().setBorder(border); + } + + public void setBorder(Byte border) { + getBox().setBorder(border); + } + + public Color getBorderColor() { + return getBox().getBorderColor(); + } + + public Color getOwnBorderColor() { + return getBox().getOwnBorderColor(); + } + + public void setBorderColor(Color borderColor) { + getBox().setBorderColor(borderColor); + } + + public int getPadding() { + return getBox().getPadding(); + } + + public Integer getOwnPadding() { + return getBox().getOwnPadding(); + } + + public void setPadding(int padding) { + getBox().setPadding(padding); + } + + public void setPadding(Integer padding) { + getBox().setPadding(padding); + } + + public byte getTopBorder() { + return getBox().getTopBorder(); + } + + public Byte getOwnTopBorder() { + return getBox().getOwnTopBorder(); + } + + public void setTopBorder(byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public void setTopBorder(Byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public Color getTopBorderColor() { + return getBox().getTopBorderColor(); + } + + public Color getOwnTopBorderColor() { + return getBox().getOwnTopBorderColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + getBox().setTopBorderColor(topBorderColor); + } + + public int getTopPadding() { + return getBox().getTopPadding(); + } + + public Integer getOwnTopPadding() { + return getBox().getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + getBox().setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + getBox().setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return getBox().getLeftBorder(); + } + + public Byte getOwnLeftBorder() { + return getBox().getOwnLeftBorder(); + } + + public void setLeftBorder(byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public void setLeftBorder(Byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public Color getLeftBorderColor() { + return getBox().getLeftBorderColor(); + } + + public Color getOwnLeftBorderColor() { + return getBox().getOwnLeftBorderColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + getBox().setLeftBorderColor(leftBorderColor); + } + + public int getLeftPadding() { + return getBox().getLeftPadding(); + } + + public Integer getOwnLeftPadding() { + return getBox().getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return getBox().getBottomBorder(); + } + + public Byte getOwnBottomBorder() { + return getBox().getOwnBottomBorder(); + } + + public void setBottomBorder(byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public void setBottomBorder(Byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public Color getBottomBorderColor() { + return getBox().getBottomBorderColor(); + } + + public Color getOwnBottomBorderColor() { + return getBox().getOwnBottomBorderColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + getBox().setBottomBorderColor(bottomBorderColor); + } + + public int getBottomPadding() { + return getBox().getBottomPadding(); + } + + public Integer getOwnBottomPadding() { + return getBox().getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return getBox().getRightBorder(); + } + + public Byte getOwnRightBorder() { + return getBox().getOwnRightBorder(); + } + + public void setRightBorder(byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public void setRightBorder(Byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public Color getRightBorderColor() { + return getBox().getRightBorderColor(); + } + + public Color getOwnRightBorderColor() { + return getBox().getOwnRightBorderColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + getBox().setRightBorderColor(rightBorderColor); + } + + public int getRightPadding() { + return getBox().getRightPadding(); + } + + public Integer getOwnRightPadding() { + return getBox().getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public byte getHyperlinkType() { + return ((JRImage)this.parent).getHyperlinkType(); + } + + public byte getHyperlinkTarget() { + return ((JRImage)this.parent).getHyperlinkTarget(); + } + + public JRExpression getExpression() { + return ((JRImage)this.parent).getExpression(); + } + + public JRExpression getAnchorNameExpression() { + return ((JRImage)this.parent).getAnchorNameExpression(); + } + + public JRExpression getHyperlinkReferenceExpression() { + return ((JRImage)this.parent).getHyperlinkReferenceExpression(); + } + + public JRExpression getHyperlinkAnchorExpression() { + return ((JRImage)this.parent).getHyperlinkAnchorExpression(); + } + + public JRExpression getHyperlinkPageExpression() { + return ((JRImage)this.parent).getHyperlinkPageExpression(); + } + + protected JRRenderable getRenderer() { + return this.renderer; + } + + protected String getAnchorName() { + return this.anchorName; + } + + protected String getHyperlinkReference() { + return this.hyperlinkReference; + } + + protected String getHyperlinkAnchor() { + return this.hyperlinkAnchor; + } + + protected Integer getHyperlinkPage() { + return this.hyperlinkPage; + } + + protected String getHyperlinkTooltip() { + return this.hyperlinkTooltip; + } + + protected JRTemplateImage getJRTemplateImage() { + JRStyle style = getStyle(); + JRTemplateImage template = (JRTemplateImage)getTemplate(style); + if (template == null) { + template = new JRTemplateImage((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + registerTemplate(style, template); + } + return template; + } + + protected void evaluate(byte evaluation) throws JRException { + initDelayedEvaluations(); + reset(); + evaluatePrintWhenExpression(evaluation); + if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) + if (isEvaluateNow()) + evaluateImage(evaluation); + } + + protected void evaluateImage(byte evaluation) throws JRException { + evaluateProperties(evaluation); + JRExpression expression = getExpression(); + JRRenderable newRenderer = null; + Object source = evaluateExpression(expression, evaluation); + if (source != null) + if (isUsingCache() && this.filler.fillContext.hasLoadedImage(source)) { + newRenderer = this.filler.fillContext.getLoadedImage(source).getRenderer(); + } else { + Class expressionClass = expression.getValueClass(); + if (Image.class.getName().equals(expressionClass.getName())) { + Image img = (Image)source; + newRenderer = JRImageRenderer.getInstance(img, getOnErrorType()); + } else if (InputStream.class.getName().equals(expressionClass.getName())) { + InputStream is = (InputStream)source; + newRenderer = JRImageRenderer.getInstance(is, getOnErrorType()); + } else if (URL.class.getName().equals(expressionClass.getName())) { + URL url = (URL)source; + newRenderer = JRImageRenderer.getInstance(url, getOnErrorType()); + } else if (File.class.getName().equals(expressionClass.getName())) { + File file = (File)source; + newRenderer = JRImageRenderer.getInstance(file, getOnErrorType()); + } else if (String.class.getName().equals(expressionClass.getName())) { + String location = (String)source; + newRenderer = JRImageRenderer.getInstance(location, getOnErrorType(), isLazy(), this.filler.reportClassLoader, this.filler.urlHandlerFactory, this.filler.fileResolver); + } else if (JRRenderable.class.getName().equals(expressionClass.getName())) { + newRenderer = (JRRenderable)source; + } + if (isUsingCache()) { + JRPrintImage img = new JRTemplatePrintImage(getJRTemplateImage()); + img.setRenderer(newRenderer); + this.filler.fillContext.registerLoadedImage(source, img); + } + } + setValueRepeating((this.renderer == newRenderer)); + this.renderer = newRenderer; + this.anchorName = (String)evaluateExpression(getAnchorNameExpression(), evaluation); + this.hyperlinkReference = (String)evaluateExpression(getHyperlinkReferenceExpression(), evaluation); + this.hyperlinkAnchor = (String)evaluateExpression(getHyperlinkAnchorExpression(), evaluation); + this.hyperlinkPage = (Integer)evaluateExpression(getHyperlinkPageExpression(), evaluation); + this.hyperlinkTooltip = (String)evaluateExpression(getHyperlinkTooltipExpression(), evaluation); + this.hyperlinkParameters = JRFillHyperlinkHelper.evaluateHyperlinkParameters((JRHyperlink)this, this.expressionEvaluator, evaluation); + } + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) { + boolean willOverflow = false; + if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) { + setToPrint(true); + } else { + setToPrint(false); + } + if (!isToPrint()) + return willOverflow; + boolean isToPrint = true; + boolean isReprinted = false; + if (isEvaluateNow()) { + if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows()) + isToPrint = false; + if (isToPrint && isPrintWhenExpressionNull() && !isPrintRepeatedValues() && isValueRepeating()) + if ((!isPrintInFirstWholeBand() || !getBand().isFirstWholeOnPageColumn()) && (getPrintWhenGroupChanges() == null || !getBand().isNewGroup(getPrintWhenGroupChanges())) && (!isOverflow || !isPrintWhenDetailOverflows())) + isToPrint = false; + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + isToPrint = false; + willOverflow = true; + } + if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues()))) + isReprinted = true; + if (isToPrint && isRemoveLineWhenBlank() && getRenderer() == null) + isToPrint = false; + } else { + if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows()) + isToPrint = false; + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + isToPrint = false; + willOverflow = true; + } + if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues()))) + isReprinted = true; + } + setToPrint(isToPrint); + setReprinted(isReprinted); + return willOverflow; + } + + protected JRPrintElement fill() throws JRException { + JRTemplatePrintImage printImage; + JRRecordedValuesPrintImage recordedValuesImage; + byte evaluationType = getEvaluationTime(); + if (isEvaluateAuto()) { + printImage = recordedValuesImage = new JRRecordedValuesPrintImage(getJRTemplateImage()); + } else { + printImage = new JRTemplatePrintImage(getJRTemplateImage()); + recordedValuesImage = null; + } + printImage.setX(getX()); + printImage.setY(getRelativeY()); + printImage.setWidth(getWidth()); + printImage.setHeight(getStretchHeight()); + if (isEvaluateNow()) { + copy(printImage); + } else if (isEvaluateAuto()) { + initDelayedEvaluationPrint(recordedValuesImage); + } else { + this.filler.addBoundElement(this, printImage, evaluationType, getEvaluationGroup(), this.band); + } + return printImage; + } + + protected void copy(JRPrintImage printImage) { + printImage.setRenderer(getRenderer()); + printImage.setAnchorName(getAnchorName()); + printImage.setHyperlinkReference(getHyperlinkReference()); + printImage.setHyperlinkAnchor(getHyperlinkAnchor()); + printImage.setHyperlinkPage(getHyperlinkPage()); + printImage.setHyperlinkTooltip(getHyperlinkTooltip()); + printImage.setBookmarkLevel(getBookmarkLevel()); + printImage.setHyperlinkParameters(this.hyperlinkParameters); + transferProperties((JRPrintElement)printImage); + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitImage(this); + } + + protected void resolveElement(JRPrintElement element, byte evaluation) throws JRException { + evaluateImage(evaluation); + copy((JRPrintImage)element); + } + + public int getBookmarkLevel() { + return ((JRImage)this.parent).getBookmarkLevel(); + } + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillImage(this, factory); + } + + protected void collectDelayedEvaluations() { + collectDelayedEvaluations(getExpression()); + collectDelayedEvaluations(getAnchorNameExpression()); + collectDelayedEvaluations(getHyperlinkReferenceExpression()); + collectDelayedEvaluations(getHyperlinkAnchorExpression()); + collectDelayedEvaluations(getHyperlinkPageExpression()); + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + return ((JRImage)this.parent).getHyperlinkParameters(); + } + + public String getLinkType() { + return ((JRImage)this.parent).getLinkType(); + } + + public JRExpression getHyperlinkTooltipExpression() { + return ((JRImage)this.parent).getHyperlinkTooltipExpression(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillInterruptedException.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillInterruptedException.java new file mode 100644 index 0000000..412ddb4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillInterruptedException.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine.fill; + +public class JRFillInterruptedException extends RuntimeException { + private static final long serialVersionUID = 10200L; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillLine.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillLine.java new file mode 100644 index 0000000..543534e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillLine.java @@ -0,0 +1,67 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRFillLine extends JRFillGraphicElement implements JRLine { + protected JRFillLine(JRBaseFiller filler, JRLine line, JRFillObjectFactory factory) { + super(filler, (JRGraphicElement)line, factory); + } + + protected JRFillLine(JRFillLine line, JRFillCloneFactory factory) { + super(line, factory); + } + + public byte getDirection() { + return ((JRLine)this.parent).getDirection(); + } + + public void setDirection(byte direction) {} + + protected JRTemplateLine getJRTemplateLine() { + JRStyle style = getStyle(); + JRTemplateLine template = (JRTemplateLine)getTemplate(style); + if (template == null) { + template = new JRTemplateLine((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + registerTemplate(style, template); + } + return template; + } + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + setValueRepeating(true); + } + + protected JRPrintElement fill() { + JRTemplatePrintLine printLine = new JRTemplatePrintLine(getJRTemplateLine()); + printLine.setX(getX()); + printLine.setY(getRelativeY()); + printLine.setWidth(getWidth()); + printLine.setHeight(getStretchHeight()); + transferProperties(printLine); + return printLine; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitLine(this); + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillLine(this, factory); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillObjectFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillObjectFactory.java new file mode 100644 index 0000000..e1a038b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillObjectFactory.java @@ -0,0 +1,965 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.ArrayList; +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 net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRMultiAxisPlot; +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.charts.fill.JRFillAreaPlot; +import net.sf.jasperreports.charts.fill.JRFillBar3DPlot; +import net.sf.jasperreports.charts.fill.JRFillBarPlot; +import net.sf.jasperreports.charts.fill.JRFillBubblePlot; +import net.sf.jasperreports.charts.fill.JRFillCandlestickPlot; +import net.sf.jasperreports.charts.fill.JRFillCategoryDataset; +import net.sf.jasperreports.charts.fill.JRFillCategorySeries; +import net.sf.jasperreports.charts.fill.JRFillChartAxis; +import net.sf.jasperreports.charts.fill.JRFillHighLowDataset; +import net.sf.jasperreports.charts.fill.JRFillHighLowPlot; +import net.sf.jasperreports.charts.fill.JRFillLinePlot; +import net.sf.jasperreports.charts.fill.JRFillMeterPlot; +import net.sf.jasperreports.charts.fill.JRFillMultiAxisPlot; +import net.sf.jasperreports.charts.fill.JRFillPie3DPlot; +import net.sf.jasperreports.charts.fill.JRFillPieDataset; +import net.sf.jasperreports.charts.fill.JRFillPiePlot; +import net.sf.jasperreports.charts.fill.JRFillScatterPlot; +import net.sf.jasperreports.charts.fill.JRFillThermometerPlot; +import net.sf.jasperreports.charts.fill.JRFillTimePeriodDataset; +import net.sf.jasperreports.charts.fill.JRFillTimePeriodSeries; +import net.sf.jasperreports.charts.fill.JRFillTimeSeries; +import net.sf.jasperreports.charts.fill.JRFillTimeSeriesDataset; +import net.sf.jasperreports.charts.fill.JRFillTimeSeriesPlot; +import net.sf.jasperreports.charts.fill.JRFillValueDataset; +import net.sf.jasperreports.charts.fill.JRFillXyDataset; +import net.sf.jasperreports.charts.fill.JRFillXySeries; +import net.sf.jasperreports.charts.fill.JRFillXyzDataset; +import net.sf.jasperreports.charts.fill.JRFillXyzSeries; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabCell; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabMeasure; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabParameter; +import net.sf.jasperreports.crosstabs.fill.JRFillCrosstabRowGroup; +import net.sf.jasperreports.engine.JRAbstractObjectFactory; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRConditionalStyle; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRStyleSetter; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.base.JRBaseConditionalStyle; +import net.sf.jasperreports.engine.base.JRBaseReportFont; +import net.sf.jasperreports.engine.base.JRBaseStyle; +import org.apache.commons.collections.SequencedHashMap; + +public class JRFillObjectFactory extends JRAbstractObjectFactory { + private JRBaseFiller filler = null; + + private JRFillExpressionEvaluator evaluator; + + private JRFillObjectFactory parentFiller; + + private List elementDatasets = new ArrayList(); + + private Map elementDatasetMap = new HashMap(); + + private Map delayedStyleSettersByName = new HashMap(); + + private Set originalStyleList; + + protected static class StylesList { + private final List styles = new ArrayList(); + + private final Map stylesIdx = new HashMap(); + + public boolean containsStyle(String name) { + return this.stylesIdx.containsKey(name); + } + + public JRStyle getStyle(String name) { + Integer idx = (Integer)this.stylesIdx.get(name); + return (idx == null) ? null : this.styles.get(idx.intValue()); + } + + public void addStyle(JRStyle style) { + this.styles.add(style); + this.stylesIdx.put(style.getName(), new Integer(this.styles.size() - 1)); + } + + public void renamed(String oldName, String newName) { + Integer idx = (Integer)this.stylesIdx.remove(oldName); + this.stylesIdx.put(newName, idx); + } + } + + private StylesList stylesMap = new StylesList(); + + protected JRFillObjectFactory(JRBaseFiller filler) { + this.filler = filler; + this.evaluator = filler.calculator; + } + + public JRFillObjectFactory(JRBaseFiller filler, JRFillExpressionEvaluator expressionEvaluator) { + this.filler = filler; + this.evaluator = expressionEvaluator; + } + + public JRFillObjectFactory(JRFillObjectFactory parent, JRFillExpressionEvaluator expressionEvaluator) { + this.parentFiller = parent; + this.filler = parent.filler; + this.evaluator = expressionEvaluator; + } + + protected JRFillExpressionEvaluator getExpressionEvaluator() { + return this.evaluator; + } + + protected JRFillChartDataset[] getDatasets() { + return (JRFillChartDataset[])this.elementDatasets.toArray((Object[])new JRFillChartDataset[this.elementDatasets.size()]); + } + + protected JRFillElementDataset[] getElementDatasets(JRDataset dataset) { + JRFillElementDataset[] elementDatasetsArray; + List elementDatasetsList; + if (dataset.isMainDataset()) { + elementDatasetsList = this.elementDatasets; + } else { + elementDatasetsList = (List)this.elementDatasetMap.get(dataset.getName()); + } + if (elementDatasetsList == null || elementDatasetsList.size() == 0) { + elementDatasetsArray = new JRFillElementDataset[0]; + } else { + elementDatasetsArray = new JRFillElementDataset[elementDatasetsList.size()]; + elementDatasetsList.toArray((Object[])elementDatasetsArray); + } + return elementDatasetsArray; + } + + public JRReportFont getReportFont(JRReportFont font) { + JRBaseReportFont fillFont = null; + if (font != null) { + fillFont = (JRBaseReportFont)get(font); + if (fillFont == null) { + fillFont = new JRBaseReportFont(font); + put(font, fillFont); + } + } + return (JRReportFont)fillFont; + } + + protected void registerDelayedStyleSetter(JRStyleSetter delayedSetter, String styleName) { + if (this.parentFiller == null) { + List setters = (List)this.delayedStyleSettersByName.get(styleName); + if (setters == null) { + setters = new ArrayList(); + this.delayedStyleSettersByName.put(styleName, setters); + } + setters.add(delayedSetter); + } else { + this.parentFiller.registerDelayedStyleSetter(delayedSetter, styleName); + } + } + + public void registerDelayedStyleSetter(JRStyleSetter delayedSetter, JRStyleContainer styleContainer) { + JRStyle style = styleContainer.getStyle(); + String nameReference = styleContainer.getStyleNameReference(); + if (style != null) { + registerDelayedStyleSetter(delayedSetter, style.getName()); + } else if (nameReference != null) { + registerDelayedStyleSetter(delayedSetter, nameReference); + } + } + + public JRStyle getStyle(JRStyle style) { + JRBaseStyle fillStyle = null; + if (style != null) { + fillStyle = (JRBaseStyle)get(style); + if (fillStyle == null) { + fillStyle = new JRBaseStyle(style, this); + put(style, fillStyle); + if (this.originalStyleList != null && this.originalStyleList.contains(style)) { + renameExistingStyle(style.getName()); + this.stylesMap.addStyle(style); + } + } + } + return (JRStyle)fillStyle; + } + + protected void renameExistingStyle(String name) { + JRStyle originalStyle = this.stylesMap.getStyle(name); + if (originalStyle != null) { + String newName; + JRBaseStyle style = (JRBaseStyle)get(originalStyle); + int suf = 1; + do { + newName = name + suf; + suf++; + } while (this.stylesMap.containsStyle(newName)); + style.rename(newName); + this.stylesMap.renamed(name, newName); + } + } + + public void setStyle(JRStyleSetter setter, JRStyleContainer styleContainer) { + JRStyle style = styleContainer.getStyle(); + String nameReference = styleContainer.getStyleNameReference(); + if (style != null) { + JRStyle newStyle = getStyle(style); + setter.setStyle(newStyle); + } else if (nameReference != null) { + JRStyle originalStyle = this.stylesMap.getStyle(nameReference); + if (originalStyle == null) + throw new JRRuntimeException("Style " + nameReference + " not found"); + JRStyle externalStyle = (JRStyle)get(originalStyle); + setter.setStyle(externalStyle); + } + } + + protected JRFillParameter getParameter(JRParameter parameter) { + JRFillParameter fillParameter = null; + if (parameter != null) { + fillParameter = (JRFillParameter)get(parameter); + if (fillParameter == null) + fillParameter = new JRFillParameter(parameter, this); + } + return fillParameter; + } + + protected JRFillField getField(JRField field) { + JRFillField fillField = null; + if (field != null) { + fillField = (JRFillField)get(field); + if (fillField == null) + fillField = new JRFillField(field, this); + } + return fillField; + } + + public JRFillVariable getVariable(JRVariable variable) { + JRFillVariable fillVariable = null; + if (variable != null) { + fillVariable = (JRFillVariable)get(variable); + if (fillVariable == null) + fillVariable = new JRFillVariable(variable, this); + } + return fillVariable; + } + + protected JRFillGroup getGroup(JRGroup group) { + JRFillGroup fillGroup = null; + if (group != null) { + fillGroup = (JRFillGroup)get(group); + if (fillGroup == null) + fillGroup = new JRFillGroup(group, this); + } + return fillGroup; + } + + protected JRFillBand getBand(JRBand band) { + JRFillBand fillBand = null; + fillBand = (JRFillBand)get(band); + if (fillBand == null) + fillBand = new JRFillBand(this.filler, band, this); + return fillBand; + } + + public void visitElementGroup(JRElementGroup elementGroup) { + JRFillElementGroup fillElementGroup = null; + if (elementGroup != null) { + fillElementGroup = (JRFillElementGroup)get(elementGroup); + if (fillElementGroup == null) + fillElementGroup = new JRFillElementGroup(elementGroup, this); + } + setVisitResult(fillElementGroup); + } + + public void visitBreak(JRBreak breakElement) { + JRFillBreak fillBreak = null; + if (breakElement != null) { + fillBreak = (JRFillBreak)get(breakElement); + if (fillBreak == null) + fillBreak = new JRFillBreak(this.filler, breakElement, this); + } + setVisitResult(fillBreak); + } + + public void visitLine(JRLine line) { + JRFillLine fillLine = null; + if (line != null) { + fillLine = (JRFillLine)get(line); + if (fillLine == null) + fillLine = new JRFillLine(this.filler, line, this); + } + setVisitResult(fillLine); + } + + public void visitRectangle(JRRectangle rectangle) { + JRFillRectangle fillRectangle = null; + if (rectangle != null) { + fillRectangle = (JRFillRectangle)get(rectangle); + if (fillRectangle == null) + fillRectangle = new JRFillRectangle(this.filler, rectangle, this); + } + setVisitResult(fillRectangle); + } + + public void visitEllipse(JREllipse ellipse) { + JRFillEllipse fillEllipse = null; + if (ellipse != null) { + fillEllipse = (JRFillEllipse)get(ellipse); + if (fillEllipse == null) + fillEllipse = new JRFillEllipse(this.filler, ellipse, this); + } + setVisitResult(fillEllipse); + } + + public void visitImage(JRImage image) { + JRFillImage fillImage = null; + if (image != null) { + fillImage = (JRFillImage)get(image); + if (fillImage == null) + fillImage = new JRFillImage(this.filler, image, this); + } + setVisitResult(fillImage); + } + + public void visitStaticText(JRStaticText staticText) { + JRFillStaticText fillStaticText = null; + if (staticText != null) { + fillStaticText = (JRFillStaticText)get(staticText); + if (fillStaticText == null) + fillStaticText = new JRFillStaticText(this.filler, staticText, this); + } + setVisitResult(fillStaticText); + } + + public void visitTextField(JRTextField textField) { + JRFillTextField fillTextField = null; + if (textField != null) { + fillTextField = (JRFillTextField)get(textField); + if (fillTextField == null) + fillTextField = new JRFillTextField(this.filler, textField, this); + } + setVisitResult(fillTextField); + } + + public void visitSubreport(JRSubreport subreport) { + JRFillSubreport fillSubreport = null; + if (subreport != null) { + fillSubreport = (JRFillSubreport)get(subreport); + if (fillSubreport == null) + fillSubreport = new JRFillSubreport(this.filler, subreport, this); + } + setVisitResult(fillSubreport); + } + + public void visitChart(JRChart chart) { + JRFillChart fillChart = null; + if (chart != null) { + fillChart = (JRFillChart)get(chart); + if (fillChart == null) + fillChart = new JRFillChart(this.filler, chart, this); + } + setVisitResult(fillChart); + } + + public JRPieDataset getPieDataset(JRPieDataset pieDataset) { + JRFillPieDataset fillPieDataset = null; + if (pieDataset != null) { + fillPieDataset = (JRFillPieDataset)get(pieDataset); + if (fillPieDataset == null) { + fillPieDataset = new JRFillPieDataset(pieDataset, this); + addChartDataset((JRFillElementDataset)fillPieDataset); + } + } + return (JRPieDataset)fillPieDataset; + } + + public JRPiePlot getPiePlot(JRPiePlot piePlot) { + JRFillPiePlot fillPiePlot = null; + if (piePlot != null) { + fillPiePlot = (JRFillPiePlot)get(piePlot); + if (fillPiePlot == null) + fillPiePlot = new JRFillPiePlot(piePlot, this); + } + return (JRPiePlot)fillPiePlot; + } + + public JRPie3DPlot getPie3DPlot(JRPie3DPlot pie3DPlot) { + JRFillPie3DPlot fillPie3DPlot = null; + if (pie3DPlot != null) { + fillPie3DPlot = (JRFillPie3DPlot)get(pie3DPlot); + if (fillPie3DPlot == null) + fillPie3DPlot = new JRFillPie3DPlot(pie3DPlot, this); + } + return (JRPie3DPlot)fillPie3DPlot; + } + + public JRCategoryDataset getCategoryDataset(JRCategoryDataset categoryDataset) { + JRFillCategoryDataset fillCategoryDataset = null; + if (categoryDataset != null) { + fillCategoryDataset = (JRFillCategoryDataset)get(categoryDataset); + if (fillCategoryDataset == null) { + fillCategoryDataset = new JRFillCategoryDataset(categoryDataset, this); + addChartDataset((JRFillElementDataset)fillCategoryDataset); + } + } + return (JRCategoryDataset)fillCategoryDataset; + } + + public JRXyzDataset getXyzDataset(JRXyzDataset xyzDataset) { + JRFillXyzDataset fillXyzDataset = null; + if (xyzDataset != null) { + fillXyzDataset = (JRFillXyzDataset)get(xyzDataset); + if (fillXyzDataset == null) { + fillXyzDataset = new JRFillXyzDataset(xyzDataset, this); + addChartDataset((JRFillElementDataset)fillXyzDataset); + } + } + return (JRXyzDataset)fillXyzDataset; + } + + public JRXyDataset getXyDataset(JRXyDataset xyDataset) { + JRFillXyDataset fillXyDataset = null; + if (xyDataset != null) { + fillXyDataset = (JRFillXyDataset)get(xyDataset); + if (fillXyDataset == null) { + fillXyDataset = new JRFillXyDataset(xyDataset, this); + addChartDataset((JRFillElementDataset)fillXyDataset); + } + } + return (JRXyDataset)fillXyDataset; + } + + public JRTimeSeriesDataset getTimeSeriesDataset(JRTimeSeriesDataset timeSeriesDataset) { + JRFillTimeSeriesDataset fillTimeSeriesDataset = null; + if (timeSeriesDataset != null) { + fillTimeSeriesDataset = (JRFillTimeSeriesDataset)get(timeSeriesDataset); + if (fillTimeSeriesDataset == null) { + fillTimeSeriesDataset = new JRFillTimeSeriesDataset(timeSeriesDataset, this); + addChartDataset((JRFillElementDataset)fillTimeSeriesDataset); + } + } + return (JRTimeSeriesDataset)fillTimeSeriesDataset; + } + + public JRTimePeriodDataset getTimePeriodDataset(JRTimePeriodDataset timePeriodDataset) { + JRFillTimePeriodDataset fillTimePeriodDataset = null; + if (timePeriodDataset != null) { + fillTimePeriodDataset = (JRFillTimePeriodDataset)get(timePeriodDataset); + if (fillTimePeriodDataset == null) { + fillTimePeriodDataset = new JRFillTimePeriodDataset(timePeriodDataset, this); + addChartDataset((JRFillElementDataset)fillTimePeriodDataset); + } + } + return (JRTimePeriodDataset)fillTimePeriodDataset; + } + + public JRCategorySeries getCategorySeries(JRCategorySeries categorySeries) { + JRFillCategorySeries fillCategorySeries = null; + if (categorySeries != null) { + fillCategorySeries = (JRFillCategorySeries)get(categorySeries); + if (fillCategorySeries == null) + fillCategorySeries = new JRFillCategorySeries(categorySeries, this); + } + return (JRCategorySeries)fillCategorySeries; + } + + public JRXyzSeries getXyzSeries(JRXyzSeries xyzSeries) { + JRFillXyzSeries fillXyzSeries = null; + if (xyzSeries != null) { + fillXyzSeries = (JRFillXyzSeries)get(xyzSeries); + if (fillXyzSeries == null) + fillXyzSeries = new JRFillXyzSeries(xyzSeries, this); + } + return (JRXyzSeries)fillXyzSeries; + } + + public JRXySeries getXySeries(JRXySeries xySeries) { + JRFillXySeries fillXySeries = null; + if (xySeries != null) { + fillXySeries = (JRFillXySeries)get(xySeries); + if (fillXySeries == null) + fillXySeries = new JRFillXySeries(xySeries, this); + } + return (JRXySeries)fillXySeries; + } + + public JRBarPlot getBarPlot(JRBarPlot barPlot) { + JRFillBarPlot fillBarPlot = null; + if (barPlot != null) { + fillBarPlot = (JRFillBarPlot)get(barPlot); + if (fillBarPlot == null) + fillBarPlot = new JRFillBarPlot(barPlot, this); + } + return (JRBarPlot)fillBarPlot; + } + + public JRTimeSeries getTimeSeries(JRTimeSeries timeSeries) { + JRFillTimeSeries fillTimeSeries = null; + if (timeSeries != null) { + fillTimeSeries = (JRFillTimeSeries)get(timeSeries); + if (fillTimeSeries == null) + fillTimeSeries = new JRFillTimeSeries(timeSeries, this); + } + return (JRTimeSeries)fillTimeSeries; + } + + public JRTimePeriodSeries getTimePeriodSeries(JRTimePeriodSeries timePeriodSeries) { + JRFillTimePeriodSeries fillTimePeriodSeries = null; + if (timePeriodSeries != null) { + fillTimePeriodSeries = (JRFillTimePeriodSeries)get(timePeriodSeries); + if (fillTimePeriodSeries == null) + fillTimePeriodSeries = new JRFillTimePeriodSeries(timePeriodSeries, this); + } + return (JRTimePeriodSeries)fillTimePeriodSeries; + } + + public JRBar3DPlot getBar3DPlot(JRBar3DPlot barPlot) { + JRFillBar3DPlot fillBarPlot = null; + if (barPlot != null) { + fillBarPlot = (JRFillBar3DPlot)get(barPlot); + if (fillBarPlot == null) + fillBarPlot = new JRFillBar3DPlot(barPlot, this); + } + return (JRBar3DPlot)fillBarPlot; + } + + public JRLinePlot getLinePlot(JRLinePlot linePlot) { + JRFillLinePlot fillLinePlot = null; + if (linePlot != null) { + fillLinePlot = (JRFillLinePlot)get(linePlot); + if (fillLinePlot == null) + fillLinePlot = new JRFillLinePlot(linePlot, this); + } + return (JRLinePlot)fillLinePlot; + } + + public JRScatterPlot getScatterPlot(JRScatterPlot scatterPlot) { + JRFillScatterPlot fillScatterPlot = null; + if (scatterPlot != null) { + fillScatterPlot = (JRFillScatterPlot)get(scatterPlot); + if (fillScatterPlot == null) + fillScatterPlot = new JRFillScatterPlot(scatterPlot, this); + } + return (JRScatterPlot)fillScatterPlot; + } + + public JRAreaPlot getAreaPlot(JRAreaPlot areaPlot) { + JRFillAreaPlot fillAreaPlot = null; + if (areaPlot != null) { + fillAreaPlot = (JRFillAreaPlot)get(areaPlot); + if (fillAreaPlot == null) + fillAreaPlot = new JRFillAreaPlot(areaPlot, this); + } + return (JRAreaPlot)fillAreaPlot; + } + + public JRBubblePlot getBubblePlot(JRBubblePlot bubblePlot) { + JRFillBubblePlot fillBubblePlot = null; + if (bubblePlot != null) { + fillBubblePlot = (JRFillBubblePlot)get(bubblePlot); + if (fillBubblePlot == null) + fillBubblePlot = new JRFillBubblePlot(bubblePlot, this); + } + return (JRBubblePlot)fillBubblePlot; + } + + public JRHighLowDataset getHighLowDataset(JRHighLowDataset highLowDataset) { + JRFillHighLowDataset fillHighLowDataset = null; + if (highLowDataset != null) { + fillHighLowDataset = (JRFillHighLowDataset)get(highLowDataset); + if (fillHighLowDataset == null) { + fillHighLowDataset = new JRFillHighLowDataset(highLowDataset, this); + addChartDataset((JRFillElementDataset)fillHighLowDataset); + } + } + return (JRHighLowDataset)fillHighLowDataset; + } + + public JRHighLowPlot getHighLowPlot(JRHighLowPlot highLowPlot) { + JRFillHighLowPlot fillHighLowPlot = null; + if (highLowPlot != null) { + fillHighLowPlot = (JRFillHighLowPlot)get(highLowPlot); + if (fillHighLowPlot == null) + fillHighLowPlot = new JRFillHighLowPlot(highLowPlot, this); + } + return (JRHighLowPlot)fillHighLowPlot; + } + + public JRCandlestickPlot getCandlestickPlot(JRCandlestickPlot candlestickPlot) { + JRFillCandlestickPlot fillCandlestickPlot = null; + if (candlestickPlot != null) { + fillCandlestickPlot = (JRFillCandlestickPlot)get(candlestickPlot); + if (fillCandlestickPlot == null) + fillCandlestickPlot = new JRFillCandlestickPlot(candlestickPlot, this); + } + return (JRCandlestickPlot)fillCandlestickPlot; + } + + public JRTimeSeriesPlot getTimeSeriesPlot(JRTimeSeriesPlot plot) { + JRFillTimeSeriesPlot fillPlot = null; + if (plot != null) { + fillPlot = (JRFillTimeSeriesPlot)get(plot); + if (fillPlot == null) + fillPlot = new JRFillTimeSeriesPlot(plot, this); + } + return (JRTimeSeriesPlot)fillPlot; + } + + public JRValueDataset getValueDataset(JRValueDataset valueDataset) { + JRFillValueDataset fillValueDataset = null; + if (valueDataset != null) { + fillValueDataset = (JRFillValueDataset)get(valueDataset); + if (fillValueDataset == null) { + fillValueDataset = new JRFillValueDataset(valueDataset, this); + addChartDataset((JRFillElementDataset)fillValueDataset); + } + } + return (JRValueDataset)fillValueDataset; + } + + public JRMeterPlot getMeterPlot(JRMeterPlot meterPlot) { + JRFillMeterPlot fillMeterPlot = null; + if (meterPlot != null) { + fillMeterPlot = (JRFillMeterPlot)get(meterPlot); + if (fillMeterPlot == null) + fillMeterPlot = new JRFillMeterPlot(meterPlot, this); + } + return (JRMeterPlot)fillMeterPlot; + } + + public JRThermometerPlot getThermometerPlot(JRThermometerPlot thermometerPlot) { + JRFillThermometerPlot fillThermometerPlot = null; + if (thermometerPlot != null) { + fillThermometerPlot = (JRFillThermometerPlot)get(thermometerPlot); + if (fillThermometerPlot == null) + fillThermometerPlot = new JRFillThermometerPlot(thermometerPlot, this); + } + return (JRThermometerPlot)fillThermometerPlot; + } + + public JRMultiAxisPlot getMultiAxisPlot(JRMultiAxisPlot multiAxisPlot) { + JRFillMultiAxisPlot fillMultiAxisPlot = null; + if (multiAxisPlot != null) { + fillMultiAxisPlot = (JRFillMultiAxisPlot)get(multiAxisPlot); + if (fillMultiAxisPlot == null) + fillMultiAxisPlot = new JRFillMultiAxisPlot(multiAxisPlot, this); + } + return (JRMultiAxisPlot)fillMultiAxisPlot; + } + + protected JRFillSubreportReturnValue getSubreportReturnValue(JRSubreportReturnValue returnValue) { + JRFillSubreportReturnValue fillReturnValue = null; + if (returnValue != null) { + fillReturnValue = (JRFillSubreportReturnValue)get(returnValue); + if (fillReturnValue == null) + fillReturnValue = new JRFillSubreportReturnValue(returnValue, this, this.filler); + } + return fillReturnValue; + } + + public void visitCrosstab(JRCrosstab crosstabElement) { + JRFillCrosstab fillCrosstab = null; + if (crosstabElement != null) { + fillCrosstab = (JRFillCrosstab)get(crosstabElement); + if (fillCrosstab == null) + fillCrosstab = new JRFillCrosstab(this.filler, crosstabElement, this); + } + setVisitResult(fillCrosstab); + } + + public JRFillCrosstab.JRFillCrosstabDataset getCrosstabDataset(JRCrosstabDataset dataset, JRFillCrosstab fillCrosstab) { + JRFillCrosstab.JRFillCrosstabDataset fillDataset = null; + if (dataset != null) { + fillDataset = (JRFillCrosstab.JRFillCrosstabDataset)get(dataset); + if (fillDataset == null) { + fillCrosstab.getClass(); + fillDataset = new JRFillCrosstab.JRFillCrosstabDataset(fillCrosstab, dataset, this); + addChartDataset(fillDataset); + } + } + return fillDataset; + } + + public JRFillDataset getDataset(JRDataset dataset) { + JRFillDataset fillDataset = null; + if (dataset != null) { + fillDataset = (JRFillDataset)get(dataset); + if (fillDataset == null) + fillDataset = new JRFillDataset(this.filler, dataset, this); + } + return fillDataset; + } + + private void addChartDataset(JRFillElementDataset elementDataset) { + List elementDatasetsList; + JRDatasetRun datasetRun = elementDataset.getDatasetRun(); + if (datasetRun == null) { + elementDatasetsList = this.elementDatasets; + } else { + String datasetName = datasetRun.getDatasetName(); + elementDatasetsList = (List)this.elementDatasetMap.get(datasetName); + if (elementDatasetsList == null) { + elementDatasetsList = new ArrayList(); + this.elementDatasetMap.put(datasetName, elementDatasetsList); + } + } + elementDatasetsList.add(elementDataset); + } + + public JRFillDatasetRun getDatasetRun(JRDatasetRun datasetRun) { + JRFillDatasetRun fillDatasetRun = null; + if (datasetRun != null) { + fillDatasetRun = (JRFillDatasetRun)get(datasetRun); + if (fillDatasetRun == null) + fillDatasetRun = new JRFillDatasetRun(this.filler, datasetRun, this); + } + return fillDatasetRun; + } + + public JRFillCrosstabParameter getCrosstabParameter(JRCrosstabParameter parameter) { + JRFillCrosstabParameter fillParameter = null; + if (parameter != null) { + fillParameter = (JRFillCrosstabParameter)get(parameter); + if (fillParameter == null) + fillParameter = new JRFillCrosstabParameter(parameter, this); + } + return fillParameter; + } + + public JRFillCellContents getCell(JRCellContents cell) { + JRFillCellContents fillCell = null; + if (cell != null) { + fillCell = (JRFillCellContents)get(cell); + if (fillCell == null) + fillCell = new JRFillCellContents(this.filler, cell, this); + } + return fillCell; + } + + public JRFillCrosstabRowGroup getCrosstabRowGroup(JRCrosstabRowGroup group) { + JRFillCrosstabRowGroup fillGroup = null; + if (group != null) { + fillGroup = (JRFillCrosstabRowGroup)get(group); + if (fillGroup == null) + fillGroup = new JRFillCrosstabRowGroup(group, this); + } + return fillGroup; + } + + public JRFillCrosstabColumnGroup getCrosstabColumnGroup(JRCrosstabColumnGroup group) { + JRFillCrosstabColumnGroup fillGroup = null; + if (group != null) { + fillGroup = (JRFillCrosstabColumnGroup)get(group); + if (fillGroup == null) + fillGroup = new JRFillCrosstabColumnGroup(group, this); + } + return fillGroup; + } + + public JRFillCrosstabCell getCrosstabCell(JRCrosstabCell cell) { + JRFillCrosstabCell fillCell = null; + if (cell != null) { + fillCell = (JRFillCrosstabCell)get(cell); + if (fillCell == null) + fillCell = new JRFillCrosstabCell(cell, this); + } + return fillCell; + } + + public JRFillCrosstabMeasure getCrosstabMeasure(JRCrosstabMeasure measure) { + JRFillCrosstabMeasure fillMeasure = null; + if (measure != null) { + fillMeasure = (JRFillCrosstabMeasure)get(measure); + if (fillMeasure == null) + fillMeasure = new JRFillCrosstabMeasure(measure, this); + } + return fillMeasure; + } + + public void visitFrame(JRFrame frame) { + Object fillFrame = null; + if (frame != null) { + fillFrame = get(frame); + if (fillFrame == null) + fillFrame = new JRFillFrame(this.filler, frame, this); + } + setVisitResult(fillFrame); + } + + protected JRBaseFiller getFiller() { + return this.filler; + } + + public JRConditionalStyle getConditionalStyle(JRConditionalStyle conditionalStyle, JRStyle style) { + JRBaseConditionalStyle baseConditionalStyle = null; + if (conditionalStyle != null) { + baseConditionalStyle = (JRBaseConditionalStyle)get(conditionalStyle); + if (baseConditionalStyle == null) { + baseConditionalStyle = new JRBaseConditionalStyle(conditionalStyle, style, this); + put(conditionalStyle, baseConditionalStyle); + } + } + return (JRConditionalStyle)baseConditionalStyle; + } + + public JRExpression getExpression(JRExpression expression, boolean assignNotUsedId) { + return expression; + } + + public JRChartAxis getChartAxis(JRChartAxis axis) { + JRFillChartAxis fillAxis = null; + if (axis != null) { + fillAxis = (JRFillChartAxis)get(axis); + if (fillAxis == null) + fillAxis = new JRFillChartAxis(axis, this); + } + return (JRChartAxis)fillAxis; + } + + public JRFillReportTemplate getReportTemplate(JRReportTemplate template) { + JRFillReportTemplate fillTemplate = null; + if (template != null) { + fillTemplate = (JRFillReportTemplate)get(template); + if (fillTemplate == null) + fillTemplate = new JRFillReportTemplate(template, this.filler, this); + } + return fillTemplate; + } + + public List setStyles(List styles) { + this.originalStyleList = new HashSet(styles); + Set requestedStyles = collectRequestedStyles(styles); + SequencedHashMap sequencedHashMap = new SequencedHashMap(); + Map allStylesMap = new HashMap(); + for (Iterator it = styles.iterator(); it.hasNext(); ) { + JRStyle style = (JRStyle)it.next(); + if (requestedStyles.contains(style)) + collectUsedStyles(style, (Map)sequencedHashMap, allStylesMap); + allStylesMap.put(style.getName(), style); + } + List includedStyles = new ArrayList(); + for (Iterator iterator = sequencedHashMap.keySet().iterator(); iterator.hasNext(); ) { + JRStyle style = iterator.next(); + JRStyle newStyle = getStyle(style); + includedStyles.add(newStyle); + if (requestedStyles.contains(style)) + useDelayedStyle(newStyle); + } + checkUnresolvedReferences(); + return includedStyles; + } + + protected Set collectRequestedStyles(List externalStyles) { + Map requestedStylesMap = new HashMap(); + for (Iterator it = externalStyles.iterator(); it.hasNext(); ) { + JRStyle style = it.next(); + String name = style.getName(); + if (this.delayedStyleSettersByName.containsKey(name)) + requestedStylesMap.put(name, style); + } + return new HashSet(requestedStylesMap.values()); + } + + protected void collectUsedStyles(JRStyle style, Map usedStylesMap, Map allStylesMap) { + if (!usedStylesMap.containsKey(style) && this.originalStyleList.contains(style)) { + JRStyle parent = style.getStyle(); + if (parent == null) { + String parentName = style.getStyleNameReference(); + if (parentName != null) { + parent = (JRStyle)allStylesMap.get(parentName); + if (parent == null) + throw new JRRuntimeException("Style " + parentName + " not found"); + } + } + if (parent != null) + collectUsedStyles(parent, usedStylesMap, allStylesMap); + usedStylesMap.put(style, null); + } + } + + protected void useDelayedStyle(JRStyle style) { + List delayedSetters = (List)this.delayedStyleSettersByName.remove(style.getName()); + if (delayedSetters != null) + for (Iterator it = delayedSetters.iterator(); it.hasNext(); ) { + JRStyleSetter setter = it.next(); + setter.setStyle(style); + } + } + + protected void checkUnresolvedReferences() { + if (!this.delayedStyleSettersByName.isEmpty()) { + StringBuffer errorMsg = new StringBuffer("Could not resolved style(s): "); + for (Iterator it = this.delayedStyleSettersByName.keySet().iterator(); it.hasNext(); ) { + String name = it.next(); + errorMsg.append(name); + errorMsg.append(", "); + } + throw new JRRuntimeException(errorMsg.substring(0, errorMsg.length() - 2)); + } + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.filler.getJasperPrint().getDefaultStyleProvider(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillParameter.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillParameter.java new file mode 100644 index 0000000..7e004c9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillParameter.java @@ -0,0 +1,72 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRValueParameter; + +public class JRFillParameter implements JRValueParameter { + protected JRParameter parent = null; + + private Object value = null; + + protected JRFillParameter(JRParameter parameter, JRFillObjectFactory factory) { + factory.put(parameter, this); + this.parent = parameter; + } + + public String getName() { + return this.parent.getName(); + } + + public String getDescription() { + return this.parent.getDescription(); + } + + public void setDescription(String description) {} + + public Class getValueClass() { + return this.parent.getValueClass(); + } + + public String getValueClassName() { + return this.parent.getValueClassName(); + } + + public boolean isSystemDefined() { + return this.parent.isSystemDefined(); + } + + public boolean isForPrompting() { + return this.parent.isForPrompting(); + } + + public JRExpression getDefaultValueExpression() { + return this.parent.getDefaultValueExpression(); + } + + public Object getValue() { + return this.value; + } + + public void setValue(Object value) { + this.value = value; + } + + public boolean hasProperties() { + return this.parent.hasProperties(); + } + + public JRPropertiesMap getPropertiesMap() { + return this.parent.getPropertiesMap(); + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillRectangle.java new file mode 100644 index 0000000..76fbdd4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillRectangle.java @@ -0,0 +1,77 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRCommonRectangle; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintRectangle; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillRectangle extends JRFillGraphicElement implements JRRectangle { + protected JRFillRectangle(JRBaseFiller filler, JRRectangle rectangle, JRFillObjectFactory factory) { + super(filler, (JRGraphicElement)rectangle, factory); + } + + protected JRFillRectangle(JRFillRectangle rectangle, JRFillCloneFactory factory) { + super(rectangle, factory); + } + + public int getRadius() { + return JRStyleResolver.getRadius((JRCommonRectangle)this); + } + + public Integer getOwnRadius() { + return ((JRRectangle)this.parent).getOwnRadius(); + } + + public void setRadius(int radius) {} + + public void setRadius(Integer radius) {} + + protected JRTemplateRectangle getJRTemplateRectangle() { + JRStyle style = getStyle(); + JRTemplateRectangle template = (JRTemplateRectangle)getTemplate(style); + if (template == null) { + template = new JRTemplateRectangle((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + registerTemplate(style, template); + } + return template; + } + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + setValueRepeating(true); + } + + protected JRPrintElement fill() { + JRPrintRectangle printRectangle = null; + printRectangle = new JRTemplatePrintRectangle(getJRTemplateRectangle()); + printRectangle.setX(getX()); + printRectangle.setY(getRelativeY()); + printRectangle.setWidth(getWidth()); + printRectangle.setHeight(getStretchHeight()); + transferProperties((JRPrintElement)printRectangle); + return (JRPrintElement)printRectangle; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitRectangle(this); + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillRectangle(this, factory); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillReportTemplate.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillReportTemplate.java new file mode 100644 index 0000000..e68ad4b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillReportTemplate.java @@ -0,0 +1,65 @@ +package net.sf.jasperreports.engine.fill; + +import java.io.File; +import java.io.InputStream; +import java.net.URL; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRTemplate; +import net.sf.jasperreports.engine.xml.JRXmlTemplateLoader; + +public class JRFillReportTemplate implements JRReportTemplate { + private final JRReportTemplate parent; + + private final JRBaseFiller filler; + + public JRFillReportTemplate(JRReportTemplate template, JRBaseFiller filler, JRFillObjectFactory factory) { + factory.put(template, this); + this.parent = template; + this.filler = filler; + } + + public JRExpression getSourceExpression() { + return this.parent.getSourceExpression(); + } + + public JRTemplate evaluate() throws JRException { + JRTemplate template; + JRExpression sourceExpression = getSourceExpression(); + Object source = this.filler.evaluateExpression(sourceExpression, (byte)3); + if (source == null) { + template = null; + } else { + Class sourceType = sourceExpression.getValueClass(); + if (JRTemplate.class.isAssignableFrom(sourceType)) { + template = (JRTemplate)source; + } else { + template = loadTemplate(source, sourceType, this.filler.fillContext); + } + } + return template; + } + + protected static JRTemplate loadTemplate(Object source, Class sourceType, JRFillContext fillContext) throws JRException { + JRTemplate template; + if (fillContext.hasLoadedTemplate(source)) { + template = fillContext.getLoadedTemplate(source); + } else { + if (String.class.equals(sourceType)) { + template = JRXmlTemplateLoader.load((String)source); + } else if (File.class.isAssignableFrom(sourceType)) { + template = JRXmlTemplateLoader.load((File)source); + } else if (URL.class.isAssignableFrom(sourceType)) { + template = JRXmlTemplateLoader.load((URL)source); + } else if (InputStream.class.isAssignableFrom(sourceType)) { + template = JRXmlTemplateLoader.load((InputStream)source); + } else { + throw new JRRuntimeException("Unknown template source class " + sourceType.getName()); + } + fillContext.registerLoadedTemplate(source, template); + } + return template; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillStaticText.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillStaticText.java new file mode 100644 index 0000000..c832826 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillStaticText.java @@ -0,0 +1,113 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRFillStaticText extends JRFillTextElement implements JRStaticText { + protected JRFillStaticText(JRBaseFiller filler, JRStaticText staticText, JRFillObjectFactory factory) { + super(filler, (JRTextElement)staticText, factory); + String text = processMarkupText(staticText.getText()); + if (text == null) + text = ""; + setRawText(text); + } + + protected JRFillStaticText(JRFillStaticText staticText, JRFillCloneFactory factory) { + super(staticText, factory); + String text = processMarkupText(staticText.getText()); + if (text == null) + text = ""; + setRawText(text); + } + + public void setText(String text) {} + + protected JRTemplateText getJRTemplateText() { + JRStyle style = getStyle(); + JRTemplateText template = (JRTemplateText)getTemplate(style); + if (template == null) { + template = new JRTemplateText((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + registerTemplate(style, template); + } + return template; + } + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + setTextStart(0); + setTextEnd(0); + setValueRepeating(true); + } + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + boolean willOverflow = false; + super.prepare(availableStretchHeight, isOverflow); + if (!isToPrint()) + return willOverflow; + boolean isToPrint = true; + boolean isReprinted = false; + if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows()) + isToPrint = false; + if (isToPrint && isPrintWhenExpressionNull() && !isPrintRepeatedValues()) + if ((!isPrintInFirstWholeBand() || !getBand().isFirstWholeOnPageColumn()) && (getPrintWhenGroupChanges() == null || !getBand().isNewGroup(getPrintWhenGroupChanges())) && (!isOverflow || !isPrintWhenDetailOverflows())) + isToPrint = false; + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + isToPrint = false; + willOverflow = true; + } + if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues()))) + isReprinted = true; + setTextStart(0); + setTextEnd(0); + if (isToPrint) + chopTextElement(0); + setToPrint(isToPrint); + setReprinted(isReprinted); + return willOverflow; + } + + protected JRPrintElement fill() { + JRTemplatePrintText text = new JRTemplatePrintText(getJRTemplateText()); + text.setX(getX()); + text.setY(getRelativeY()); + text.setWidth(getWidth()); + if (getRotation() == 0) { + text.setHeight(getStretchHeight()); + } else { + text.setHeight(getHeight()); + } + text.setRunDirection(getRunDirection()); + text.setLineSpacingFactor(getLineSpacingFactor()); + text.setLeadingOffset(getLeadingOffset()); + text.setTextHeight(getTextHeight()); + transferProperties(text); + setPrintText(text); + return text; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitStaticText(this); + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillStaticText(this, factory); + } + + protected boolean canOverflow() { + return false; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreport.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreport.java new file mode 100644 index 0000000..f5f273e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreport.java @@ -0,0 +1,491 @@ +package net.sf.jasperreports.engine.fill; + +import java.io.File; +import java.io.InputStream; +import java.net.URL; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintPage; +import net.sf.jasperreports.engine.JRPrintRectangle; +import net.sf.jasperreports.engine.JRRewindableDataSource; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRSubreportParameter; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.JasperCompileManager; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.design.JRDesignSubreportReturnValue; +import net.sf.jasperreports.engine.util.JRLoader; +import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.util.JRSingletonCache; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRFillSubreport extends JRFillElement implements JRSubreport { + private static final Log log = LogFactory.getLog(JRFillSubreport.class); + + private static final JRSingletonCache runnerFactoryCache = new JRSingletonCache(JRSubreportRunnerFactory.class); + + private Map parameterValues = null; + + private JRSubreportParameter[] parameters = null; + + private Connection connection = null; + + private JRDataSource dataSource = null; + + private JasperReport jasperReport = null; + + private Map loadedEvaluators = null; + + private JRFillSubreportReturnValue[] returnValues = null; + + protected JRBaseFiller subreportFiller = null; + + private JRPrintPage printPage = null; + + private JRSubreportRunner runner; + + private Set checkedReports; + + protected JRFillSubreport(JRBaseFiller filler, JRSubreport subreport, JRFillObjectFactory factory) { + super(filler, (JRElement)subreport, factory); + this.parameters = subreport.getParameters(); + JRSubreportReturnValue[] subrepReturnValues = subreport.getReturnValues(); + if (subrepReturnValues != null) { + List returnValuesList = new ArrayList(subrepReturnValues.length * 2); + this.returnValues = new JRFillSubreportReturnValue[subrepReturnValues.length]; + for (int i = 0; i < subrepReturnValues.length; i++) + addReturnValue(subrepReturnValues[i], returnValuesList, factory); + this.returnValues = new JRFillSubreportReturnValue[returnValuesList.size()]; + returnValuesList.toArray((Object[])this.returnValues); + } + this.loadedEvaluators = new HashMap(); + this.checkedReports = new HashSet(); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public boolean isUsingCache() { + return ((JRSubreport)this.parent).isUsingCache(); + } + + public void setUsingCache(boolean isUsingCache) {} + + public JRExpression getParametersMapExpression() { + return ((JRSubreport)this.parent).getParametersMapExpression(); + } + + public JRSubreportParameter[] getParameters() { + return this.parameters; + } + + public JRExpression getConnectionExpression() { + return ((JRSubreport)this.parent).getConnectionExpression(); + } + + public JRExpression getDataSourceExpression() { + return ((JRSubreport)this.parent).getDataSourceExpression(); + } + + public JRExpression getExpression() { + return ((JRSubreport)this.parent).getExpression(); + } + + protected JRTemplateRectangle getJRTemplateRectangle() { + JRStyle style = getStyle(); + JRTemplateRectangle template = (JRTemplateRectangle)getTemplate(style); + if (template == null) { + template = new JRTemplateRectangle(this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + registerTemplate(style, template); + } + return template; + } + + protected Collection getPrintElements() { + Collection printElements = null; + if (this.printPage != null) + printElements = this.printPage.getElements(); + return printElements; + } + + protected void evaluate(byte evaluation) throws JRException { + reset(); + evaluatePrintWhenExpression(evaluation); + evaluateProperties(evaluation); + if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) + evaluateSubreport(evaluation); + } + + protected void evaluateSubreport(byte evaluation) throws JRException { + JRExpression expression = getExpression(); + Object source = evaluateExpression(expression, evaluation); + if (source != null) { + JREvaluator evaluator = null; + if (isUsingCache() && this.filler.fillContext.hasLoadedSubreport(source)) { + this.jasperReport = this.filler.fillContext.getLoadedSubreport(source); + evaluator = (JREvaluator)this.loadedEvaluators.get(this.jasperReport); + if (evaluator == null) { + evaluator = JasperCompileManager.loadEvaluator(this.jasperReport); + this.loadedEvaluators.put(this.jasperReport, evaluator); + } + } else { + Class expressionClass = expression.getValueClass(); + if (expressionClass.equals(JasperReport.class)) { + this.jasperReport = (JasperReport)source; + } else if (expressionClass.equals(InputStream.class)) { + this.jasperReport = (JasperReport)JRLoader.loadObject((InputStream)source); + } else if (expressionClass.equals(URL.class)) { + this.jasperReport = (JasperReport)JRLoader.loadObject((URL)source); + } else if (expressionClass.equals(File.class)) { + this.jasperReport = (JasperReport)JRLoader.loadObject((File)source); + } else if (expressionClass.equals(String.class)) { + this.jasperReport = (JasperReport)JRLoader.loadObjectFromLocation((String)source, this.filler.reportClassLoader, this.filler.urlHandlerFactory, this.filler.fileResolver); + } + if (this.jasperReport != null) + evaluator = JasperCompileManager.loadEvaluator(this.jasperReport); + if (isUsingCache()) { + this.filler.fillContext.registerLoadedSubreport(source, this.jasperReport); + this.loadedEvaluators.put(this.jasperReport, evaluator); + } + } + if (this.jasperReport != null) { + expression = getConnectionExpression(); + this.connection = (Connection)evaluateExpression(expression, evaluation); + expression = getDataSourceExpression(); + this.dataSource = (JRDataSource)evaluateExpression(expression, evaluation); + this.parameterValues = getParameterValues(this.filler, getParametersMapExpression(), (JRDatasetParameter[])getParameters(), evaluation, false, (this.jasperReport.getResourceBundle() != null), (this.jasperReport.getFormatFactoryClass() != null)); + if (this.subreportFiller != null) + this.filler.unregisterSubfiller(this.subreportFiller); + initSubreportFiller(evaluator); + checkReturnValues(); + saveReturnVariables(); + } + } + } + + protected void initSubreportFiller(JREvaluator evaluator) throws JRException { + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": creating subreport filler"); + switch (this.jasperReport.getPrintOrder()) { + case 2: + this.subreportFiller = new JRHorizontalFiller(this.jasperReport, evaluator, this.filler); + break; + case 1: + this.subreportFiller = new JRVerticalFiller(this.jasperReport, evaluator, this.filler); + break; + default: + throw new JRRuntimeException("Unkown print order " + this.jasperReport.getPrintOrder() + "."); + } + this.runner = getRunnerFactory().createSubreportRunner(this, this.subreportFiller); + this.subreportFiller.setSubreportRunner(this.runner); + } + + protected void saveReturnVariables() { + if (this.returnValues != null) + for (int i = 0; i < this.returnValues.length; i++) { + String varName = this.returnValues[i].getToVariable(); + this.band.saveVariable(varName); + } + } + + public static Map getParameterValues(JRBaseFiller filler, JRExpression parametersMapExpression, JRDatasetParameter[] subreportParameters, byte evaluation, boolean ignoreNullExpressions, boolean removeResourceBundle, boolean removeFormatFactory) throws JRException { + Map parameterValues = null; + if (parametersMapExpression != null) + parameterValues = (Map)filler.evaluateExpression(parametersMapExpression, evaluation); + if (parameterValues != null) { + if (removeResourceBundle) + parameterValues.remove("REPORT_RESOURCE_BUNDLE"); + if (removeFormatFactory) + parameterValues.remove("REPORT_FORMAT_FACTORY"); + parameterValues.remove("REPORT_CONNECTION"); + parameterValues.remove("REPORT_MAX_COUNT"); + parameterValues.remove("REPORT_DATA_SOURCE"); + parameterValues.remove("REPORT_SCRIPTLET"); + parameterValues.remove("REPORT_VIRTUALIZER"); + parameterValues.remove("IS_IGNORE_PAGINATION"); + parameterValues.remove("REPORT_PARAMETERS_MAP"); + } + if (parameterValues == null) + parameterValues = new HashMap(); + if (subreportParameters != null && subreportParameters.length > 0) { + Object parameterValue = null; + for (int i = 0; i < subreportParameters.length; i++) { + JRExpression expression = subreportParameters[i].getExpression(); + if (expression != null || !ignoreNullExpressions) { + parameterValue = filler.evaluateExpression(expression, evaluation); + if (parameterValue == null) { + parameterValues.remove(subreportParameters[i].getName()); + } else { + parameterValues.put(subreportParameters[i].getName(), parameterValue); + } + } + } + } + if (!parameterValues.containsKey("REPORT_LOCALE")) + parameterValues.put("REPORT_LOCALE", filler.getLocale()); + if (!parameterValues.containsKey("REPORT_TIME_ZONE")) + parameterValues.put("REPORT_TIME_ZONE", filler.getTimeZone()); + if (!parameterValues.containsKey("REPORT_FORMAT_FACTORY") && !removeFormatFactory) + parameterValues.put("REPORT_FORMAT_FACTORY", filler.getFormatFactory()); + if (!parameterValues.containsKey("REPORT_CLASS_LOADER") && filler.reportClassLoader != null) + parameterValues.put("REPORT_CLASS_LOADER", filler.reportClassLoader); + if (!parameterValues.containsKey("REPORT_URL_HANDLER_FACTORY") && filler.urlHandlerFactory != null) + parameterValues.put("REPORT_URL_HANDLER_FACTORY", filler.urlHandlerFactory); + if (!parameterValues.containsKey("REPORT_FILE_RESOLVER") && filler.fileResolver != null) + parameterValues.put("REPORT_FILE_RESOLVER", filler.fileResolver); + return parameterValues; + } + + protected void fillSubreport() throws JRException { + if (getConnectionExpression() != null) { + this.subreportFiller.fill(this.parameterValues, this.connection); + } else if (getDataSourceExpression() != null) { + this.subreportFiller.fill(this.parameterValues, this.dataSource); + } else { + this.subreportFiller.fill(this.parameterValues); + } + } + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + boolean willOverflow = false; + super.prepare(availableStretchHeight, isOverflow); + if (this.subreportFiller == null) + setToPrint(false); + if (!isToPrint()) + return willOverflow; + if (availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + setToPrint(false); + return true; + } + boolean filling = this.runner.isFilling(); + boolean toPrint = (!isOverflow || isPrintWhenDetailOverflows() || !isAlreadyPrinted()); + boolean reprinted = (isOverflow && isPrintWhenDetailOverflows()); + if (!filling && toPrint && reprinted) + rewind(); + int availableHeight = getHeight() + availableStretchHeight - getRelativeY() + getY() + getBandBottomY(); + this.subreportFiller.setPageHeight(availableHeight); + synchronized (this.subreportFiller) { + JRSubreportRunResult result; + if (filling) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": resuming " + this.subreportFiller.fillerId); + result = this.runner.resume(); + } else if (toPrint) { + setReprinted(reprinted); + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": starting " + this.subreportFiller.fillerId); + result = this.runner.start(); + } else { + this.printPage = null; + setStretchHeight(getHeight()); + setToPrint(false); + return willOverflow; + } + if (result.getException() != null) { + Throwable error = result.getException(); + if (log.isErrorEnabled()) + log.error("Fill " + this.filler.fillerId + ": exception", error); + if (error instanceof RuntimeException) + throw (RuntimeException)error; + throw new JRRuntimeException(error); + } + if (result.hasFinished()) { + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": subreport " + this.subreportFiller.fillerId + " finished"); + copyValues(); + } else if (log.isDebugEnabled()) { + log.debug("Fill " + this.filler.fillerId + ": subreport " + this.subreportFiller.fillerId + " to continue"); + } + this.printPage = this.subreportFiller.getCurrentPage(); + setStretchHeight(result.hasFinished() ? this.subreportFiller.getCurrentPageStretchHeight() : availableHeight); + willOverflow = !result.hasFinished(); + if (!willOverflow) + this.runner.reset(); + } + Collection printElements = getPrintElements(); + if ((printElements == null || printElements.size() == 0) && isRemoveLineWhenBlank()) + setToPrint(false); + return willOverflow; + } + + public void rewind() throws JRException { + if (this.subreportFiller == null) + return; + if (log.isDebugEnabled()) + log.debug("Fill " + this.filler.fillerId + ": cancelling " + this.subreportFiller.fillerId); + this.subreportFiller.setInterrupted(true); + synchronized (this.subreportFiller) { + this.runner.cancel(); + this.runner.reset(); + } + this.filler.unregisterSubfiller(this.subreportFiller); + initSubreportFiller((JREvaluator)null); + if (getConnectionExpression() == null && this.dataSource != null) + if (this.dataSource instanceof JRRewindableDataSource) { + ((JRRewindableDataSource)this.dataSource).moveFirst(); + } else { + throw new JRException("The subreport is placed on a non-splitting band, but it does not have a rewindable data source."); + } + } + + protected JRPrintElement fill() { + JRPrintRectangle printRectangle = new JRTemplatePrintRectangle(getJRTemplateRectangle()); + printRectangle.setX(getX()); + printRectangle.setY(getRelativeY()); + printRectangle.setWidth(getWidth()); + printRectangle.setHeight(getStretchHeight()); + return (JRPrintElement)printRectangle; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitSubreport(this); + } + + private JRFillSubreportReturnValue addReturnValue(JRSubreportReturnValue parentReturnValue, List returnValueList, JRFillObjectFactory factory) { + JRSubreportReturnValue jRSubreportReturnValue1, varianceVal, countVal, sumVal; + JRFillSubreportReturnValue returnValue = factory.getSubreportReturnValue(parentReturnValue); + byte calculation = returnValue.getCalculation(); + switch (calculation) { + case 3: + case 7: + jRSubreportReturnValue1 = createHelperReturnValue(parentReturnValue, "_COUNT", (byte)1); + addReturnValue(jRSubreportReturnValue1, returnValueList, factory); + sumVal = createHelperReturnValue(parentReturnValue, "_SUM", (byte)2); + addReturnValue(sumVal, returnValueList, factory); + this.filler.addVariableCalculationReq(returnValue.getToVariable(), calculation); + break; + case 6: + varianceVal = createHelperReturnValue(parentReturnValue, "_VARIANCE", (byte)7); + addReturnValue(varianceVal, returnValueList, factory); + this.filler.addVariableCalculationReq(returnValue.getToVariable(), calculation); + break; + case 10: + countVal = createDistinctCountHelperReturnValue(parentReturnValue); + addReturnValue(countVal, returnValueList, factory); + this.filler.addVariableCalculationReq(returnValue.getToVariable(), calculation); + break; + } + returnValueList.add(returnValue); + return returnValue; + } + + protected JRSubreportReturnValue createHelperReturnValue(JRSubreportReturnValue returnValue, String nameSuffix, byte calculation) { + JRDesignSubreportReturnValue helper = new JRDesignSubreportReturnValue(); + helper.setToVariable(returnValue.getToVariable() + nameSuffix); + helper.setSubreportVariable(returnValue.getSubreportVariable()); + helper.setCalculation(calculation); + helper.setIncrementerFactoryClassName(helper.getIncrementerFactoryClassName()); + return (JRSubreportReturnValue)helper; + } + + protected JRSubreportReturnValue createDistinctCountHelperReturnValue(JRSubreportReturnValue returnValue) { + JRDesignSubreportReturnValue helper = new JRDesignSubreportReturnValue(); + helper.setToVariable(returnValue.getToVariable() + "_DISTINCT_COUNT"); + helper.setSubreportVariable(returnValue.getSubreportVariable()); + helper.setCalculation((byte)0); + helper.setIncrementerFactoryClassName(helper.getIncrementerFactoryClassName()); + return (JRSubreportReturnValue)helper; + } + + public JRSubreportReturnValue[] getReturnValues() { + return (JRSubreportReturnValue[])this.returnValues; + } + + public boolean usesForReturnValue(String variableName) { + boolean used = false; + if (this.returnValues != null) + for (int j = 0; j < this.returnValues.length; j++) { + JRSubreportReturnValue returnValue = this.returnValues[j]; + if (returnValue.getToVariable().equals(variableName)) { + used = true; + break; + } + } + return used; + } + + protected void copyValues() { + if (this.returnValues != null && this.returnValues.length > 0) + for (int i = 0; i < this.returnValues.length; i++) + copyValue(this.returnValues[i]); + } + + protected void copyValue(JRFillSubreportReturnValue returnValue) { + try { + JRFillVariable variable = this.filler.getVariable(returnValue.getToVariable()); + Object value = this.subreportFiller.getVariableValue(returnValue.getSubreportVariable()); + Object newValue = returnValue.getIncrementer().increment(variable, value, AbstractValueProvider.getCurrentValueProvider()); + variable.setOldValue(newValue); + variable.setValue(newValue); + variable.setIncrementedValue(newValue); + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + private void checkReturnValues() throws JRException { + if (this.returnValues != null && this.returnValues.length > 0 && !this.checkedReports.contains(this.jasperReport)) { + for (int i = 0; i < this.returnValues.length; i++) { + JRSubreportReturnValue returnValue = this.returnValues[i]; + String subreportVariableName = returnValue.getSubreportVariable(); + JRVariable subrepVariable = this.subreportFiller.getVariable(subreportVariableName); + if (subrepVariable == null) + throw new JRException("Subreport variable " + subreportVariableName + " not found."); + JRVariable variable = this.filler.getVariable(returnValue.getToVariable()); + if (returnValue.getCalculation() == 1 || returnValue.getCalculation() == 10) { + if (!Number.class.isAssignableFrom(variable.getValueClass())) + throw new JRException("Variable " + returnValue.getToVariable() + " must have a numeric type."); + } else if (!variable.getValueClass().isAssignableFrom(subrepVariable.getValueClass()) && (!Number.class.isAssignableFrom(variable.getValueClass()) || !Number.class.isAssignableFrom(subrepVariable.getValueClass()))) { + throw new JRException("Variable " + returnValue.getToVariable() + " is not assignable from subreport variable " + subreportVariableName); + } + } + if (isUsingCache()) + this.checkedReports.add(this.jasperReport); + } + } + + protected void resolveElement(JRPrintElement element, byte evaluation) {} + + public Boolean isOwnUsingCache() { + return ((JRSubreport)this.parent).isOwnUsingCache(); + } + + public void setUsingCache(Boolean isUsingCache) {} + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return null; + } + + protected static JRSubreportRunnerFactory getRunnerFactory() throws JRException { + String factoryClassName = JRProperties.getProperty("net.sf.jasperreports.subreport.runner.factory"); + if (factoryClassName == null) + throw new JRException("Property \"net.sf.jasperreports.subreport.runner.factory\" must be set"); + return (JRSubreportRunnerFactory)runnerFactoryCache.getCachedInstance(factoryClassName); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreportReturnValue.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreportReturnValue.java new file mode 100644 index 0000000..ae6aa3a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillSubreportReturnValue.java @@ -0,0 +1,60 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.util.JRClassLoader; + +public class JRFillSubreportReturnValue implements JRSubreportReturnValue { + protected final JRSubreportReturnValue parent; + + protected JRIncrementer incrementer = null; + + protected final JRBaseFiller filler; + + protected JRFillSubreportReturnValue(JRSubreportReturnValue returnValue, JRFillObjectFactory factory, JRBaseFiller filler) { + factory.put(returnValue, this); + this.parent = returnValue; + this.filler = filler; + } + + public String getSubreportVariable() { + return this.parent.getSubreportVariable(); + } + + public String getToVariable() { + return this.parent.getToVariable(); + } + + public String getIncrementerFactoryClassName() { + return this.parent.getIncrementerFactoryClassName(); + } + + public byte getCalculation() { + return this.parent.getCalculation(); + } + + public JRIncrementer getIncrementer() { + if (this.incrementer == null) { + JRIncrementerFactory incrementerFactory; + String incrementerFactoryClassName = getIncrementerFactoryClassName(); + if (incrementerFactoryClassName == null) { + JRVariable toVariable = this.filler.getVariable(getToVariable()); + incrementerFactory = JRDefaultIncrementerFactory.getFactory(toVariable.getValueClass()); + } else { + try { + Class incrementerFactoryClass = JRClassLoader.loadClassForName(incrementerFactoryClassName); + incrementerFactory = JRIncrementerFactoryCache.getInstance(incrementerFactoryClass); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException("Increment class " + incrementerFactoryClassName + " not found.", e); + } + } + this.incrementer = incrementerFactory.getIncrementer(getCalculation()); + } + return this.incrementer; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextElement.java new file mode 100644 index 0000000..b6f079b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextElement.java @@ -0,0 +1,716 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.awt.font.TextAttribute; +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRCommonText; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPrintText; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.util.JRFontUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.util.JRSingletonCache; +import net.sf.jasperreports.engine.util.JRStringUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.JRStyledText; +import net.sf.jasperreports.engine.util.JRTextMeasurerUtil; +import net.sf.jasperreports.engine.util.LineBoxWrapper; +import net.sf.jasperreports.engine.util.MarkupProcessor; +import net.sf.jasperreports.engine.util.MarkupProcessorFactory; + +public abstract class JRFillTextElement extends JRFillElement implements JRTextElement { + private static final JRSingletonCache markupProcessorFactoryCache = new JRSingletonCache(MarkupProcessorFactory.class); + + private static final Map markupProcessors = new HashMap(); + + private boolean isLeftToRight = true; + + private JRTextMeasurer textMeasurer = null; + + private float lineSpacingFactor = 0.0F; + + private float leadingOffset = 0.0F; + + private float textHeight = 0.0F; + + private int textStart = 0; + + private int textEnd = 0; + + private String textTruncateSuffix; + + private String rawText = null; + + private JRStyledText styledText = null; + + private Map styledTextAttributesMap = new HashMap(); + + protected final JRReportFont reportFont; + + protected JRFillTextElement(JRBaseFiller filler, JRTextElement textElement, JRFillObjectFactory factory) { + super(filler, (JRElement)textElement, factory); + this.reportFont = factory.getReportFont(textElement.getReportFont()); + } + + protected JRFillTextElement(JRFillTextElement textElement, JRFillCloneFactory factory) { + super(textElement, factory); + this.reportFont = textElement.reportFont; + } + + private void createTextMeasurer() { + this.textMeasurer = JRTextMeasurerUtil.createTextMeasurer((JRCommonText)this); + } + + protected void ensureTextMeasurer() { + if (this.textMeasurer == null) + createTextMeasurer(); + } + + public byte getMode() { + return JRStyleResolver.getMode((JRCommonElement)this, (byte)2); + } + + public byte getTextAlignment() { + return JRStyleResolver.getHorizontalAlignment((JRAlignment)this); + } + + public void setTextAlignment(byte horizontalAlignment) {} + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment((JRAlignment)this); + } + + public Byte getOwnHorizontalAlignment() { + return ((JRTextElement)this.parent).getOwnHorizontalAlignment(); + } + + public void setHorizontalAlignment(byte horizontalAlignment) {} + + public void setHorizontalAlignment(Byte horizontalAlignment) {} + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment((JRAlignment)this); + } + + public Byte getOwnVerticalAlignment() { + return ((JRTextElement)this.parent).getOwnVerticalAlignment(); + } + + public void setVerticalAlignment(byte verticalAlignment) {} + + public void setVerticalAlignment(Byte verticalAlignment) {} + + public byte getRotation() { + return JRStyleResolver.getRotation((JRCommonText)this); + } + + public Byte getOwnRotation() { + return ((JRTextElement)this.parent).getOwnRotation(); + } + + public void setRotation(byte rotation) {} + + public void setRotation(Byte rotation) {} + + public byte getLineSpacing() { + return JRStyleResolver.getLineSpacing((JRCommonText)this); + } + + public Byte getOwnLineSpacing() { + return ((JRTextElement)this.parent).getOwnLineSpacing(); + } + + public void setLineSpacing(byte lineSpacing) {} + + public void setLineSpacing(Byte lineSpacing) {} + + public boolean isStyledText() { + return "styled".equals(getMarkup()); + } + + public Boolean isOwnStyledText() { + String mkp = getOwnMarkup(); + return "styled".equals(mkp) ? Boolean.TRUE : ((mkp == null) ? null : Boolean.FALSE); + } + + public void setStyledText(boolean isStyledText) {} + + public void setStyledText(Boolean isStyledText) {} + + public String getMarkup() { + return JRStyleResolver.getMarkup((JRCommonText)this); + } + + public String getOwnMarkup() { + return ((JRTextElement)this.parent).getOwnMarkup(); + } + + public void setMarkup(String markup) {} + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return ((JRBoxContainer)this.parent).getLineBox(); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen()); + } + + public Color getBorderColor() { + return getLineBox().getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return getLineBox().getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + getLineBox().getPen().setLineColor(borderColor); + } + + public int getPadding() { + return getLineBox().getPadding().intValue(); + } + + public Integer getOwnPadding() { + return getLineBox().getOwnPadding(); + } + + public void setPadding(int padding) { + getLineBox().setPadding(padding); + } + + public void setPadding(Integer padding) { + getLineBox().setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen()); + } + + public Color getTopBorderColor() { + return getLineBox().getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return getLineBox().getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + getLineBox().getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return getLineBox().getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return getLineBox().getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + getLineBox().setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + getLineBox().setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen()); + } + + public Color getLeftBorderColor() { + return getLineBox().getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return getLineBox().getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + getLineBox().getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return getLineBox().getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return getLineBox().getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + getLineBox().setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + getLineBox().setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen()); + } + + public Color getBottomBorderColor() { + return getLineBox().getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return getLineBox().getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + getLineBox().getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return getLineBox().getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return getLineBox().getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + getLineBox().setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + getLineBox().setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen()); + } + + public Color getRightBorderColor() { + return getLineBox().getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return getLineBox().getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + getLineBox().getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return getLineBox().getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return getLineBox().getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + getLineBox().setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + getLineBox().setRightPadding(rightPadding); + } + + public JRFont getFont() { + return (JRFont)this; + } + + protected Map getStyledTextAttributes() { + JRStyle style = getStyle(); + Map styledTextAttributes = (Map)this.styledTextAttributesMap.get(style); + if (styledTextAttributes == null) { + styledTextAttributes = new HashMap(); + JRFontUtil.setAttributes(styledTextAttributes, (JRFont)this); + styledTextAttributes.put(TextAttribute.FOREGROUND, getForecolor()); + if (getMode() == 1) + styledTextAttributes.put(TextAttribute.BACKGROUND, getBackcolor()); + this.styledTextAttributesMap.put(style, styledTextAttributes); + } + return styledTextAttributes; + } + + protected float getLineSpacingFactor() { + return this.lineSpacingFactor; + } + + protected void setLineSpacingFactor(float lineSpacingFactor) { + this.lineSpacingFactor = lineSpacingFactor; + } + + protected float getLeadingOffset() { + return this.leadingOffset; + } + + protected void setLeadingOffset(float leadingOffset) { + this.leadingOffset = leadingOffset; + } + + protected byte getRunDirection() { + return this.isLeftToRight ? 0 : 1; + } + + protected float getTextHeight() { + return this.textHeight; + } + + protected void setTextHeight(float textHeight) { + this.textHeight = textHeight; + } + + protected int getTextStart() { + return this.textStart; + } + + protected void setTextStart(int textStart) { + this.textStart = textStart; + } + + protected int getTextEnd() { + return this.textEnd; + } + + protected void setTextEnd(int textEnd) { + this.textEnd = textEnd; + } + + protected String getRawText() { + return this.rawText; + } + + protected void setRawText(String rawText) { + this.rawText = rawText; + this.styledText = null; + } + + protected void reset() { + super.reset(); + this.isLeftToRight = true; + this.lineSpacingFactor = 0.0F; + this.leadingOffset = 0.0F; + this.textHeight = 0.0F; + } + + protected void rewind() { + this.textStart = 0; + this.textEnd = 0; + } + + protected JRStyledText getStyledText() { + if (this.styledText == null) { + String text = getRawText(); + if (text != null) + this.styledText = this.filler.getStyledTextParser().getStyledText(getStyledTextAttributes(), text, !"none".equals(getMarkup())); + } + return this.styledText; + } + + public String getText() { + JRStyledText tmpStyledText = getStyledText(); + if (tmpStyledText == null) + return null; + return tmpStyledText.getText(); + } + + protected void chopTextElement(int availableStretchHeight) { + ensureTextMeasurer(); + JRStyledText tmpStyledText = getStyledText(); + if (tmpStyledText == null) + return; + if (getTextEnd() == tmpStyledText.getText().length()) + return; + JRMeasuredText measuredText = this.textMeasurer.measure(tmpStyledText, getTextEnd(), availableStretchHeight, canOverflow()); + this.isLeftToRight = measuredText.isLeftToRight(); + setTextHeight(measuredText.getTextHeight()); + if (getRotation() == 0) { + setStretchHeight((int)getTextHeight() + getLineBox().getTopPadding().intValue() + getLineBox().getBottomPadding().intValue()); + } else { + setStretchHeight(getHeight()); + } + setTextStart(getTextEnd()); + setTextEnd(measuredText.getTextOffset()); + setTextTruncateSuffix(measuredText.getTextSuffix()); + setLineSpacingFactor(measuredText.getLineSpacingFactor()); + setLeadingOffset(measuredText.getLeadingOffset()); + } + + public JRReportFont getReportFont() { + return this.reportFont; + } + + public void setReportFont(JRReportFont reportFont) {} + + public String getFontName() { + return JRStyleResolver.getFontName((JRFont)this); + } + + public String getOwnFontName() { + return ((JRFont)this.parent).getOwnFontName(); + } + + public void setFontName(String fontName) {} + + public boolean isBold() { + return JRStyleResolver.isBold((JRFont)this); + } + + public Boolean isOwnBold() { + return ((JRFont)this.parent).isOwnBold(); + } + + public void setBold(boolean isBold) {} + + public void setBold(Boolean isBold) {} + + public boolean isItalic() { + return JRStyleResolver.isItalic((JRFont)this); + } + + public Boolean isOwnItalic() { + return ((JRFont)this.parent).isOwnItalic(); + } + + public void setItalic(boolean isItalic) {} + + public void setItalic(Boolean isItalic) {} + + public boolean isUnderline() { + return JRStyleResolver.isUnderline((JRFont)this); + } + + public Boolean isOwnUnderline() { + return ((JRFont)this.parent).isOwnUnderline(); + } + + public void setUnderline(boolean isUnderline) {} + + public void setUnderline(Boolean isUnderline) {} + + public boolean isStrikeThrough() { + return JRStyleResolver.isStrikeThrough((JRFont)this); + } + + public Boolean isOwnStrikeThrough() { + return ((JRFont)this.parent).isOwnStrikeThrough(); + } + + public void setStrikeThrough(boolean isStrikeThrough) {} + + public void setStrikeThrough(Boolean isStrikeThrough) {} + + public int getFontSize() { + return JRStyleResolver.getFontSize((JRFont)this); + } + + public Integer getOwnFontSize() { + return ((JRFont)this.parent).getOwnFontSize(); + } + + public void setFontSize(int size) {} + + public void setFontSize(Integer size) {} + + public int getSize() { + return getFontSize(); + } + + public Integer getOwnSize() { + return getOwnFontSize(); + } + + public void setSize(int size) {} + + public void setSize(Integer size) {} + + public String getPdfFontName() { + return JRStyleResolver.getPdfFontName((JRFont)this); + } + + public String getOwnPdfFontName() { + return ((JRFont)this.parent).getOwnPdfFontName(); + } + + public void setPdfFontName(String pdfFontName) {} + + public String getPdfEncoding() { + return JRStyleResolver.getPdfEncoding((JRFont)this); + } + + public String getOwnPdfEncoding() { + return ((JRFont)this.parent).getOwnPdfEncoding(); + } + + public void setPdfEncoding(String pdfEncoding) {} + + public boolean isPdfEmbedded() { + return JRStyleResolver.isPdfEmbedded((JRFont)this); + } + + public Boolean isOwnPdfEmbedded() { + return ((JRFont)this.parent).isOwnPdfEmbedded(); + } + + public void setPdfEmbedded(boolean isPdfEmbedded) { + setPdfEmbedded(isPdfEmbedded ? Boolean.TRUE : Boolean.FALSE); + } + + public void setPdfEmbedded(Boolean isPdfEmbedded) {} + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public void setHeight(int height) { + super.setHeight(height); + createTextMeasurer(); + } + + public void setWidth(int width) { + super.setWidth(width); + createTextMeasurer(); + } + + protected String processMarkupText(String text) { + text = JRStringUtil.replaceCRwithLF(text); + if (text != null) { + String markup = getMarkup(); + if (!"none".equals(markup) && !"styled".equals(markup)) + text = getMarkupProcessor(markup).convert(text); + } + return text; + } + + protected static MarkupProcessor getMarkupProcessor(String markup) { + MarkupProcessor markupProcessor = (MarkupProcessor)markupProcessors.get(markup); + if (markupProcessor == null) { + String factoryClass = JRProperties.getProperty("net.sf.jasperreports.markup.processor.factory." + markup); + if (factoryClass == null) + throw new JRRuntimeException("No markup processor factory specifyed for '" + markup + "' markup."); + MarkupProcessorFactory factory = null; + try { + factory = (MarkupProcessorFactory)markupProcessorFactoryCache.getCachedInstance(factoryClass); + } catch (JRException e) { + throw new JRRuntimeException(e); + } + markupProcessor = factory.createMarkupProcessor(); + markupProcessors.put(markup, markupProcessor); + } + return markupProcessor; + } + + protected void setPrintText(JRPrintText printText) { + int startIndex = getTextStart(); + int endIndex = getTextEnd(); + JRStyledText fullStyledText = getStyledText(); + String fullText = fullStyledText.getText(); + boolean keepAllText = (!canOverflow() && JRProperties.getBooleanProperty((JRPropertiesHolder)this, "net.sf.jasperreports.print.keep.full.text", false)); + if (keepAllText) { + if (startIndex != 0) + throw new JRRuntimeException("Text start index != 0 on keep all text."); + if (!"none".equals(getMarkup())) { + String styledText = this.filler.getStyledTextParser().write(fullStyledText); + printText.setText(styledText); + } else { + printText.setText(fullText); + } + if (endIndex < fullText.length()) + printText.setTextTruncateIndex(new Integer(endIndex)); + } else { + String printedText; + if (!"none".equals(getMarkup())) { + printedText = this.filler.getStyledTextParser().write(fullStyledText, startIndex, endIndex); + } else { + printedText = fullText.substring(startIndex, endIndex); + } + printText.setText(printedText); + } + printText.setTextTruncateSuffix(getTextTruncateSuffix()); + } + + protected String getTextTruncateSuffix() { + return this.textTruncateSuffix; + } + + protected void setTextTruncateSuffix(String textTruncateSuffix) { + this.textTruncateSuffix = textTruncateSuffix; + } + + protected abstract boolean canOverflow(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextField.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextField.java new file mode 100644 index 0000000..66fd8f7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillTextField.java @@ -0,0 +1,383 @@ +package net.sf.jasperreports.engine.fill; + +import java.text.DecimalFormat; +import java.text.Format; +import java.text.SimpleDateFormat; +import java.util.Date; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRExpressionCollector; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameters; +import net.sf.jasperreports.engine.JRPrintText; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVisitor; +import net.sf.jasperreports.engine.util.JRDataUtils; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRFillTextField extends JRFillTextElement implements JRTextField { + private JRGroup evaluationGroup = null; + + private String anchorName = null; + + private String hyperlinkReference = null; + + private String hyperlinkAnchor = null; + + private Integer hyperlinkPage = null; + + private String hyperlinkTooltip; + + private JRPrintHyperlinkParameters hyperlinkParameters; + + protected JRFillTextField(JRBaseFiller filler, JRTextField textField, JRFillObjectFactory factory) { + super(filler, (JRTextElement)textField, factory); + this.evaluationGroup = factory.getGroup(textField.getEvaluationGroup()); + } + + protected JRFillTextField(JRFillTextField textField, JRFillCloneFactory factory) { + super(textField, factory); + this.evaluationGroup = textField.evaluationGroup; + } + + public boolean isStretchWithOverflow() { + return ((JRTextField)this.parent).isStretchWithOverflow(); + } + + public void setStretchWithOverflow(boolean isStretchWithOverflow) {} + + public byte getEvaluationTime() { + return ((JRTextField)this.parent).getEvaluationTime(); + } + + public String getPattern() { + return JRStyleResolver.getPattern(this); + } + + public String getOwnPattern() { + return ((JRTextField)this.parent).getOwnPattern(); + } + + public void setPattern(String pattern) {} + + public boolean isBlankWhenNull() { + return JRStyleResolver.isBlankWhenNull(this); + } + + public Boolean isOwnBlankWhenNull() { + return ((JRTextField)this.parent).isOwnBlankWhenNull(); + } + + public void setBlankWhenNull(boolean isBlank) {} + + public void setBlankWhenNull(Boolean isBlank) {} + + public byte getHyperlinkType() { + return ((JRTextField)this.parent).getHyperlinkType(); + } + + public byte getHyperlinkTarget() { + return ((JRTextField)this.parent).getHyperlinkTarget(); + } + + public JRGroup getEvaluationGroup() { + return this.evaluationGroup; + } + + public JRExpression getExpression() { + return ((JRTextField)this.parent).getExpression(); + } + + public JRExpression getAnchorNameExpression() { + return ((JRTextField)this.parent).getAnchorNameExpression(); + } + + public JRExpression getHyperlinkReferenceExpression() { + return ((JRTextField)this.parent).getHyperlinkReferenceExpression(); + } + + public JRExpression getHyperlinkAnchorExpression() { + return ((JRTextField)this.parent).getHyperlinkAnchorExpression(); + } + + public JRExpression getHyperlinkPageExpression() { + return ((JRTextField)this.parent).getHyperlinkPageExpression(); + } + + protected String getAnchorName() { + return this.anchorName; + } + + protected String getHyperlinkReference() { + return this.hyperlinkReference; + } + + protected String getHyperlinkAnchor() { + return this.hyperlinkAnchor; + } + + protected Integer getHyperlinkPage() { + return this.hyperlinkPage; + } + + protected String getHyperlinkTooltip() { + return this.hyperlinkTooltip; + } + + protected JRTemplateText getJRTemplateText() { + JRStyle style = getStyle(); + JRTemplateText template = (JRTemplateText)getTemplate(style); + if (template == null) { + template = new JRTemplateText((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); + transferProperties(template); + setTemplatePattern(template); + registerTemplate(style, template); + } + return template; + } + + protected void setTemplatePattern(JRTemplateText template) { + if (getExpression() != null) { + Class valueClass = getExpression().getValueClass(); + if (!String.class.equals(valueClass)) { + template.setValueClassName(valueClass.getName()); + String pattern = getTemplatePattern(); + if (pattern != null) + template.setPattern(pattern); + if (!this.filler.hasMasterFormatFactory()) + template.setFormatFactoryClass(this.filler.getFormatFactory().getClass().getName()); + if (!this.filler.hasMasterLocale()) + template.setLocaleCode(JRDataUtils.getLocaleCode(this.filler.getLocale())); + if (!this.filler.hasMasterTimeZone() && Date.class.isAssignableFrom(valueClass)) + template.setTimeZoneId(JRDataUtils.getTimeZoneId(this.filler.getTimeZone())); + } + } + } + + protected void evaluate(byte evaluation) throws JRException { + initDelayedEvaluations(); + reset(); + evaluatePrintWhenExpression(evaluation); + if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) + if (isEvaluateNow()) + evaluateText(evaluation); + } + + protected void evaluateText(byte evaluation) throws JRException { + evaluateProperties(evaluation); + Object textFieldValue = evaluateExpression(getExpression(), evaluation); + if (textFieldValue == null) { + if (isBlankWhenNull()) + textFieldValue = ""; + } else { + Format format = getFormat(); + if (format != null) + textFieldValue = format.format(textFieldValue); + } + String oldRawText = getRawText(); + String newRawText = processMarkupText(String.valueOf(textFieldValue)); + setRawText(newRawText); + setTextStart(0); + setTextEnd(0); + setValueRepeating(((oldRawText == null && newRawText == null) || (oldRawText != null && oldRawText.equals(newRawText)))); + this.anchorName = (String)evaluateExpression(getAnchorNameExpression(), evaluation); + this.hyperlinkReference = (String)evaluateExpression(getHyperlinkReferenceExpression(), evaluation); + this.hyperlinkAnchor = (String)evaluateExpression(getHyperlinkAnchorExpression(), evaluation); + this.hyperlinkPage = (Integer)evaluateExpression(getHyperlinkPageExpression(), evaluation); + this.hyperlinkTooltip = (String)evaluateExpression(getHyperlinkTooltipExpression(), evaluation); + this.hyperlinkParameters = JRFillHyperlinkHelper.evaluateHyperlinkParameters((JRHyperlink)this, this.expressionEvaluator, evaluation); + } + + protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { + boolean willOverflow = false; + super.prepare(availableStretchHeight, isOverflow); + if (!isToPrint()) + return willOverflow; + boolean isToPrint = true; + boolean isReprinted = false; + if (isEvaluateNow()) { + if (isOverflow) { + if (getPositionType() == 3) { + setTextStart(0); + setTextEnd(0); + } + if (getTextEnd() >= getText().length() || !isStretchWithOverflow() || getRotation() != 0) + if (isAlreadyPrinted()) + if (isPrintWhenDetailOverflows()) { + setTextStart(0); + setTextEnd(0); + isReprinted = true; + } else { + isToPrint = false; + } + if (isToPrint && isPrintWhenExpressionNull() && !isPrintRepeatedValues() && isValueRepeating()) + isToPrint = false; + } else if (isPrintWhenExpressionNull() && !isPrintRepeatedValues() && isValueRepeating()) { + if ((!isPrintInFirstWholeBand() || !getBand().isFirstWholeOnPageColumn()) && (getPrintWhenGroupChanges() == null || !getBand().isNewGroup(getPrintWhenGroupChanges()))) + isToPrint = false; + } + if (isToPrint) + if (availableStretchHeight >= getRelativeY() - getY() - getBandBottomY()) { + if (getTextEnd() < getText().length() || getTextEnd() == 0) { + if (isStretchWithOverflow() && getRotation() == 0) { + chopTextElement(availableStretchHeight - getRelativeY() + getY() + getBandBottomY()); + if (getTextEnd() < getText().length()) + willOverflow = true; + } else { + chopTextElement(0); + } + } else { + isToPrint = false; + } + } else { + isToPrint = false; + willOverflow = true; + } + if (isToPrint && isRemoveLineWhenBlank() && getText().substring(getTextStart(), getTextEnd()).trim().length() == 0) + isToPrint = false; + } else { + if (isOverflow && isAlreadyPrinted()) + if (isPrintWhenDetailOverflows()) { + isReprinted = true; + } else { + isToPrint = false; + } + if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { + isToPrint = false; + willOverflow = true; + } + } + setToPrint(isToPrint); + setReprinted(isReprinted); + return willOverflow; + } + + protected JRPrintElement fill() throws JRException { + JRTemplatePrintText text; + JRRecordedValuesPrintText recordedValuesText; + byte evaluationType = getEvaluationTime(); + if (isEvaluateAuto()) { + text = recordedValuesText = new JRRecordedValuesPrintText(getJRTemplateText()); + } else { + text = new JRTemplatePrintText(getJRTemplateText()); + recordedValuesText = null; + } + text.setX(getX()); + text.setY(getRelativeY()); + text.setWidth(getWidth()); + if (getRotation() == 0) { + text.setHeight(getStretchHeight()); + } else { + text.setHeight(getHeight()); + } + text.setRunDirection(getRunDirection()); + if (isEvaluateNow()) { + copy(text); + } else if (isEvaluateAuto()) { + initDelayedEvaluationPrint(recordedValuesText); + } else { + this.filler.addBoundElement(this, text, evaluationType, getEvaluationGroup(), this.band); + } + return text; + } + + protected void copy(JRPrintText text) { + text.setLineSpacingFactor(getLineSpacingFactor()); + text.setLeadingOffset(getLeadingOffset()); + text.setTextHeight(getTextHeight()); + setPrintText(text); + text.setAnchorName(getAnchorName()); + text.setHyperlinkReference(getHyperlinkReference()); + text.setHyperlinkAnchor(getHyperlinkAnchor()); + text.setHyperlinkPage(getHyperlinkPage()); + text.setHyperlinkTooltip(getHyperlinkTooltip()); + text.setBookmarkLevel(getBookmarkLevel()); + text.setHyperlinkParameters(this.hyperlinkParameters); + transferProperties((JRPrintElement)text); + } + + protected Format getFormat() { + Format format = null; + JRExpression valueExpression = getExpression(); + if (valueExpression != null) { + Class valueClass = valueExpression.getValueClass(); + if (Date.class.isAssignableFrom(valueClass)) { + format = this.filler.getDateFormat(getPattern()); + } else if (Number.class.isAssignableFrom(valueClass)) { + format = this.filler.getNumberFormat(getPattern()); + } + } + return format; + } + + protected String getTemplatePattern() { + String pattern = null; + String originalPattern = getPattern(); + Format format = getFormat(); + JRExpression valueExpression = getExpression(); + if (format != null && valueExpression != null) { + Class valueClass = valueExpression.getValueClass(); + if (Date.class.isAssignableFrom(valueClass)) { + if (format instanceof SimpleDateFormat) + pattern = ((SimpleDateFormat)format).toPattern(); + } else if (Number.class.isAssignableFrom(valueClass)) { + if (format instanceof DecimalFormat) + pattern = ((DecimalFormat)format).toPattern(); + } + } + if (pattern == null) + pattern = originalPattern; + return pattern; + } + + public void collectExpressions(JRExpressionCollector collector) { + collector.collect(this); + } + + public void visit(JRVisitor visitor) { + visitor.visitTextField(this); + } + + protected void resolveElement(JRPrintElement element, byte evaluation) throws JRException { + evaluateText(evaluation); + chopTextElement(0); + copy((JRPrintText)element); + } + + public int getBookmarkLevel() { + return ((JRTextField)this.parent).getBookmarkLevel(); + } + + public JRFillCloneable createClone(JRFillCloneFactory factory) { + return new JRFillTextField(this, factory); + } + + protected void collectDelayedEvaluations() { + collectDelayedEvaluations(getExpression()); + collectDelayedEvaluations(getAnchorNameExpression()); + collectDelayedEvaluations(getHyperlinkReferenceExpression()); + collectDelayedEvaluations(getHyperlinkAnchorExpression()); + collectDelayedEvaluations(getHyperlinkPageExpression()); + } + + public JRHyperlinkParameter[] getHyperlinkParameters() { + return ((JRTextField)this.parent).getHyperlinkParameters(); + } + + public String getLinkType() { + return ((JRTextField)this.parent).getLinkType(); + } + + public JRExpression getHyperlinkTooltipExpression() { + return ((JRTextField)this.parent).getHyperlinkTooltipExpression(); + } + + protected boolean canOverflow() { + return (isStretchWithOverflow() && getRotation() == 0 && isEvaluateNow() && this.filler.isBandOverFlowAllowed()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillVariable.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillVariable.java new file mode 100644 index 0000000..b8d439b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillVariable.java @@ -0,0 +1,210 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRVariable; + +public class JRFillVariable implements JRVariable, JRCalculable { + protected JRVariable parent = null; + + private JRGroup resetGroup = null; + + private JRGroup incrementGroup = null; + + private Object previousOldValue = null; + + private Object oldValue = null; + + private Object estimatedValue = null; + + private Object incrementedValue = null; + + private Object value = null; + + private boolean isInitialized = false; + + private Object savedValue; + + private JRFillVariable[] helperVariables; + + private JRIncrementer incrementer = null; + + protected JRFillVariable(JRVariable variable, JRFillObjectFactory factory) { + factory.put(variable, this); + this.parent = variable; + this.resetGroup = factory.getGroup(variable.getResetGroup()); + this.incrementGroup = factory.getGroup(variable.getIncrementGroup()); + this.helperVariables = new JRFillVariable[3]; + } + + public String getName() { + return this.parent.getName(); + } + + public Class getValueClass() { + return this.parent.getValueClass(); + } + + public String getValueClassName() { + return this.parent.getValueClassName(); + } + + public Class getIncrementerFactoryClass() { + return this.parent.getIncrementerFactoryClass(); + } + + public String getIncrementerFactoryClassName() { + return this.parent.getIncrementerFactoryClassName(); + } + + public JRExpression getExpression() { + return this.parent.getExpression(); + } + + public JRExpression getInitialValueExpression() { + return this.parent.getInitialValueExpression(); + } + + public byte getResetType() { + return this.parent.getResetType(); + } + + public byte getIncrementType() { + return this.parent.getIncrementType(); + } + + public byte getCalculation() { + return this.parent.getCalculation(); + } + + public boolean isSystemDefined() { + return this.parent.isSystemDefined(); + } + + public JRGroup getResetGroup() { + return this.resetGroup; + } + + public JRGroup getIncrementGroup() { + return this.incrementGroup; + } + + public Object getOldValue() { + return this.oldValue; + } + + public void setOldValue(Object oldValue) { + this.oldValue = oldValue; + } + + public Object getEstimatedValue() { + return this.estimatedValue; + } + + public void setEstimatedValue(Object estimatedValue) { + this.estimatedValue = estimatedValue; + } + + public Object getIncrementedValue() { + return this.incrementedValue; + } + + public void setIncrementedValue(Object incrementedValue) { + this.incrementedValue = incrementedValue; + } + + public Object getValue() { + return this.value; + } + + public void setValue(Object value) { + this.value = value; + } + + public boolean isInitialized() { + return this.isInitialized; + } + + public void setInitialized(boolean isInitialized) { + this.isInitialized = isInitialized; + } + + public JRIncrementer getIncrementer() { + if (this.incrementer == null) { + JRIncrementerFactory incrementerFactory; + Class incrementerFactoryClass = getIncrementerFactoryClass(); + if (incrementerFactoryClass == null) { + incrementerFactory = JRDefaultIncrementerFactory.getFactory(getValueClass()); + } else { + incrementerFactory = JRIncrementerFactoryCache.getInstance(incrementerFactoryClass); + } + this.incrementer = incrementerFactory.getIncrementer(getCalculation()); + } + return this.incrementer; + } + + public JRFillVariable setHelperVariable(JRFillVariable helperVariable, byte type) { + JRFillVariable old = this.helperVariables[type]; + this.helperVariables[type] = helperVariable; + return old; + } + + public JRCalculable getHelperVariable(byte type) { + return this.helperVariables[type]; + } + + public Object getValue(byte evaluation) { + switch (evaluation) { + case 1: + returnValue = this.oldValue; + return returnValue; + case 2: + returnValue = this.estimatedValue; + return returnValue; + } + Object returnValue = this.value; + return returnValue; + } + + public void overwriteValue(Object newValue, byte evaluation) { + switch (evaluation) { + case 1: + this.savedValue = this.oldValue; + this.oldValue = newValue; + return; + case 2: + this.savedValue = this.estimatedValue; + this.estimatedValue = newValue; + return; + } + this.savedValue = this.value; + this.value = newValue; + } + + public void restoreValue(byte evaluation) { + switch (evaluation) { + case 1: + this.oldValue = this.savedValue; + break; + case 2: + this.estimatedValue = this.savedValue; + break; + default: + this.value = this.savedValue; + break; + } + this.savedValue = null; + } + + public Object getPreviousOldValue() { + return this.previousOldValue; + } + + public void setPreviousOldValue(Object previousOldValue) { + this.previousOldValue = previousOldValue; + } + + public Object clone() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFiller.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFiller.java new file mode 100644 index 0000000..9253f2d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFiller.java @@ -0,0 +1,55 @@ +package net.sf.jasperreports.engine.fill; + +import java.sql.Connection; +import java.util.Map; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.JasperReport; + +public abstract class JRFiller { + public static JasperPrint fillReport(JasperReport jasperReport, Map parameters, Connection conn) throws JRException { + JRBaseFiller filler = createFiller(jasperReport); + JasperPrint jasperPrint = null; + try { + jasperPrint = filler.fill(parameters, conn); + } catch (JRFillInterruptedException e) { + throw new JRException("The report filling thread was interrupted."); + } + return jasperPrint; + } + + public static JasperPrint fillReport(JasperReport jasperReport, Map parameters, JRDataSource dataSource) throws JRException { + JRBaseFiller filler = createFiller(jasperReport); + JasperPrint jasperPrint = null; + try { + jasperPrint = filler.fill(parameters, dataSource); + } catch (JRFillInterruptedException e) { + throw new JRException("The report filling thread was interrupted."); + } + return jasperPrint; + } + + public static JasperPrint fillReport(JasperReport jasperReport, Map parameters) throws JRException { + JRBaseFiller filler = createFiller(jasperReport); + try { + JasperPrint jasperPrint = filler.fill(parameters); + return jasperPrint; + } catch (JRFillInterruptedException e) { + throw new JRException("The report filling thread was interrupted."); + } + } + + public static JRBaseFiller createFiller(JasperReport jasperReport) throws JRException { + JRBaseFiller filler = null; + switch (jasperReport.getPrintOrder()) { + case 2: + filler = new JRHorizontalFiller(jasperReport); + break; + case 1: + filler = new JRVerticalFiller(jasperReport); + break; + } + return filler; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatAverageIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatAverageIncrementer.java new file mode 100644 index 0000000..775d3b9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatAverageIncrementer.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.fill; + +class JRFloatAverageIncrementer extends JRAbstractExtendedIncrementer { + private static JRFloatAverageIncrementer mainInstance = new JRFloatAverageIncrementer(); + + public static JRFloatAverageIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Float(sumValue.floatValue() / countValue.floatValue()); + } + + public Object initialValue() { + return JRFloatIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatCountIncrementer.java new file mode 100644 index 0000000..9a388d5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatCountIncrementer.java @@ -0,0 +1,32 @@ +package net.sf.jasperreports.engine.fill; + +class JRFloatCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRFloatCountIncrementer mainInstance = new JRFloatCountIncrementer(); + + public static JRFloatCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + if (value == null || variable.isInitialized()) + value = JRFloatIncrementerFactory.ZERO; + if (expressionValue == null) + return value; + return new Float(value.floatValue() + 1.0F); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + Number combineValue = (Number)calculableValue.getValue(); + if (value == null || calculable.isInitialized()) + value = JRFloatIncrementerFactory.ZERO; + if (combineValue == null) + return value; + return new Float(value.floatValue() + combineValue.floatValue()); + } + + public Object initialValue() { + return JRFloatIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatDistinctCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatDistinctCountIncrementer.java new file mode 100644 index 0000000..3bd3585 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatDistinctCountIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +class JRFloatDistinctCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRFloatDistinctCountIncrementer mainInstance = new JRFloatDistinctCountIncrementer(); + + public static JRFloatDistinctCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(variable.getHelperVariable((byte)0)); + if (variable.isInitialized()) + holder.init(); + return new Float((float)holder.getCount()); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + return new Float((float)holder.getCount()); + } + + public Object initialValue() { + return JRFloatIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatIncrementerFactory.java new file mode 100644 index 0000000..4f8a18f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatIncrementerFactory.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine.fill; + +public class JRFloatIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + protected static final Float ZERO = new Float(0.0F); + + private static JRFloatIncrementerFactory mainInstance = new JRFloatIncrementerFactory(); + + public static JRFloatIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 1: + incrementer = JRFloatCountIncrementer.getInstance(); + return incrementer; + case 2: + incrementer = JRFloatSumIncrementer.getInstance(); + return incrementer; + case 3: + incrementer = JRFloatAverageIncrementer.getInstance(); + return incrementer; + case 4: + case 5: + incrementer = JRComparableIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + case 6: + incrementer = JRFloatStandardDeviationIncrementer.getInstance(); + return incrementer; + case 7: + incrementer = JRFloatVarianceIncrementer.getInstance(); + return incrementer; + case 10: + incrementer = JRFloatDistinctCountIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatStandardDeviationIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatStandardDeviationIncrementer.java new file mode 100644 index 0000000..5007740 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatStandardDeviationIncrementer.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +class JRFloatStandardDeviationIncrementer extends JRAbstractExtendedIncrementer { + private static JRFloatStandardDeviationIncrementer mainInstance = new JRFloatStandardDeviationIncrementer(); + + public static JRFloatStandardDeviationIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number varianceValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)2)); + return new Float(Math.sqrt(varianceValue.doubleValue())); + } + + public Object initialValue() { + return JRFloatIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatSumIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatSumIncrementer.java new file mode 100644 index 0000000..51135fb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatSumIncrementer.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +class JRFloatSumIncrementer extends JRAbstractExtendedIncrementer { + private static JRFloatSumIncrementer mainInstance = new JRFloatSumIncrementer(); + + public static JRFloatSumIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + value = JRFloatIncrementerFactory.ZERO; + return new Float(value.floatValue() + newValue.floatValue()); + } + + public Object initialValue() { + return JRFloatIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatVarianceIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatVarianceIncrementer.java new file mode 100644 index 0000000..3f65c89 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRFloatVarianceIncrementer.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +class JRFloatVarianceIncrementer extends JRAbstractExtendedIncrementer { + private static JRFloatVarianceIncrementer mainInstance = new JRFloatVarianceIncrementer(); + + public static JRFloatVarianceIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + return JRFloatIncrementerFactory.ZERO; + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Float((countValue.floatValue() - 1.0F) * value.floatValue() / countValue.floatValue() + (sumValue.floatValue() / countValue.floatValue() - newValue.floatValue()) * (sumValue.floatValue() / countValue.floatValue() - newValue.floatValue()) / (countValue.floatValue() - 1.0F)); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + if (calculableValue.getValue() == null) { + if (calculable.isInitialized()) + return null; + return value; + } + if (value == null || calculable.isInitialized()) + return new Float(((Number)calculableValue.getIncrementedValue()).floatValue()); + float v1 = value.floatValue(); + float c1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)0))).floatValue(); + float s1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)1))).floatValue(); + float v2 = ((Number)calculableValue.getIncrementedValue()).floatValue(); + float c2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)0))).floatValue(); + float s2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)1))).floatValue(); + c1 -= c2; + s1 -= s2; + float c = c1 + c2; + return new Float(c1 / c * v1 + c2 / c * v2 + c2 / c1 * s1 / c * s1 / c + c1 / c2 * s2 / c * s2 / c - 2.0F * s1 / c * s2 / c); + } + + public Object initialValue() { + return JRFloatIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRHorizontalFiller.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRHorizontalFiller.java new file mode 100644 index 0000000..43740af --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRHorizontalFiller.java @@ -0,0 +1,818 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.Iterator; +import java.util.List; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JasperReport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRHorizontalFiller extends JRBaseFiller { + private static final Log log = LogFactory.getLog(JRHorizontalFiller.class); + + private int lastDetailOffsetX = -1; + + private int lastDetailOffsetY = -1; + + protected JRHorizontalFiller(JasperReport jasperReport) throws JRException { + this(jasperReport, (JREvaluator)null, (JRBaseFiller)null); + } + + protected JRHorizontalFiller(JasperReport jasperReport, JRBaseFiller parentFiller) throws JRException { + super(jasperReport, null, parentFiller); + setPageHeight(this.pageHeight); + } + + protected JRHorizontalFiller(JasperReport jasperReport, JREvaluator evaluator, JRBaseFiller parentFiller) throws JRException { + super(jasperReport, evaluator, parentFiller); + setPageHeight(this.pageHeight); + } + + protected void setPageHeight(int pageHeight) { + this.pageHeight = pageHeight; + this.columnFooterOffsetY = pageHeight - this.bottomMargin; + if (this.pageFooter != null) + this.columnFooterOffsetY -= this.pageFooter.getHeight(); + if (this.columnFooter != null) + this.columnFooterOffsetY -= this.columnFooter.getHeight(); + this.lastPageColumnFooterOffsetY = pageHeight - this.bottomMargin; + if (this.lastPageFooter != null) + this.lastPageColumnFooterOffsetY -= this.lastPageFooter.getHeight(); + if (this.columnFooter != null) + this.lastPageColumnFooterOffsetY -= this.columnFooter.getHeight(); + } + + protected synchronized void fillReport() throws JRException { + setLastPageFooter(false); + if (next()) { + fillReportStart(); + while (next()) + fillReportContent(); + fillReportEnd(); + } else { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": no data"); + switch (this.whenNoDataType) { + case 3: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": all sections"); + this.scriptlet.callBeforeReportInit(); + this.calculator.initializeVariables((byte)1); + this.scriptlet.callAfterReportInit(); + this.printPage = newPage(); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + fillBackground(); + fillTitle(); + fillPageHeader((byte)3); + fillColumnHeaders((byte)3); + fillGroupHeaders(true); + fillGroupFooters(true); + fillSummary(); + break; + case 2: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": blank page"); + this.printPage = newPage(); + addPage(this.printPage); + break; + case 4: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": NoData section"); + this.scriptlet.callBeforeReportInit(); + this.calculator.initializeVariables((byte)1); + this.scriptlet.callAfterReportInit(); + this.printPage = newPage(); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + fillBackground(); + fillNoData(); + break; + default: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": no pages"); + break; + } + } + if (isSubreport()) { + this.printPageStretchHeight = this.offsetY + this.bottomMargin; + if (this.fillContext.isUsingVirtualizer()) + removePageIdentityDataProvider(); + } + if (this.fillContext.isIgnorePagination()) + this.jasperPrint.setPageHeight(this.offsetY + this.bottomMargin); + } + + private void fillReportStart() throws JRException { + this.scriptlet.callBeforeReportInit(); + this.calculator.initializeVariables((byte)1); + this.scriptlet.callAfterReportInit(); + this.printPage = newPage(); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + fillBackground(); + fillTitle(); + fillPageHeader((byte)3); + fillColumnHeaders((byte)3); + fillGroupHeaders(true); + fillDetail(); + } + + private void setFirstColumn() { + this.columnIndex = 0; + this.offsetX = this.leftMargin; + setColumnNumberVariable(); + } + + private void fillReportContent() throws JRException { + this.calculator.estimateGroupRuptures(); + fillGroupFooters(false); + resolveGroupBoundElements((byte)1, false); + this.scriptlet.callBeforeGroupInit(); + this.calculator.initializeVariables((byte)4); + this.scriptlet.callAfterGroupInit(); + fillGroupHeaders(false); + fillDetail(); + } + + private void fillReportEnd() throws JRException { + fillGroupFooters(true); + fillSummary(); + } + + private void fillTitle() throws JRException { + if (log.isDebugEnabled() && !this.title.isEmpty()) + log.debug("Fill " + this.fillerId + ": title"); + this.title.evaluatePrintWhenExpression((byte)3); + if (this.title.isToPrint()) { + while (this.title.getHeight() > this.pageHeight - this.bottomMargin - this.offsetY) + addPage(false); + this.title.evaluate((byte)3); + JRPrintBand printBand = this.title.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.title.getHeight()); + if (this.title.willOverflow() && !this.title.isSplitAllowed() && isSubreport()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.title.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.title.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (this.title.willOverflow()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.title.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.title.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.title, (byte)3); + if (this.isTitleNewPage) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + } + } + } + + private void fillPageHeader(byte evaluation) throws JRException { + if (log.isDebugEnabled() && !this.pageHeader.isEmpty()) + log.debug("Fill " + this.fillerId + ": page header"); + setNewPageColumnInBands(); + this.pageHeader.evaluatePrintWhenExpression((byte)3); + if (this.pageHeader.isToPrint()) { + int reattempts = getMasterColumnCount(); + if (this.isCreatingNewPage) + reattempts--; + boolean filled = fillBandNoOverflow(this.pageHeader, evaluation); + for (int i = 0; !filled && i < reattempts; i++) { + resolveGroupBoundElements(evaluation, false); + resolveColumnBoundElements(evaluation); + resolvePageBoundElements(evaluation); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + filled = fillBandNoOverflow(this.pageHeader, evaluation); + } + if (!filled) + throw new JRRuntimeException("Infinite loop creating new page due to page header overflow."); + } + this.columnHeaderOffsetY = this.offsetY; + this.isNewPage = true; + this.isFirstPageBand = true; + } + + private boolean fillBandNoOverflow(JRFillBand band, byte evaluation) throws JRException { + int availableStretch = this.columnFooterOffsetY - this.offsetY - band.getHeight(); + boolean overflow = (availableStretch < 0); + if (!overflow) { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(availableStretch); + overflow = band.willOverflow(); + if (overflow) { + band.rewind(); + } else { + fillBand(printBand); + this.offsetY += printBand.getHeight(); + resolveBandBoundElements(band, evaluation); + } + } + return !overflow; + } + + private void fillColumnHeaders(byte evaluation) throws JRException { + if (log.isDebugEnabled() && !this.columnHeader.isEmpty()) + log.debug("Fill " + this.fillerId + ": column headers"); + setNewPageColumnInBands(); + for (this.columnIndex = 0; this.columnIndex < this.columnCount; this.columnIndex++) { + setColumnNumberVariable(); + this.columnHeader.evaluatePrintWhenExpression(evaluation); + if (this.columnHeader.isToPrint()) { + int reattempts = getMasterColumnCount(); + if (this.isCreatingNewPage) + reattempts--; + boolean fits = (this.columnHeader.getHeight() <= this.columnFooterOffsetY - this.offsetY); + for (int i = 0; !fits && i < reattempts; i++) { + fillPageFooter(evaluation); + resolveGroupBoundElements(evaluation, false); + resolveColumnBoundElements(evaluation); + resolvePageBoundElements(evaluation); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + fillPageHeader(evaluation); + fits = (this.columnHeader.getHeight() <= this.columnFooterOffsetY - this.offsetY); + } + if (!fits) + throw new JRRuntimeException("Infinite loop creating new page due to column header size."); + this.offsetX = this.leftMargin + this.columnIndex * (this.columnSpacing + this.columnWidth); + this.offsetY = this.columnHeaderOffsetY; + fillFixedBand(this.columnHeader, evaluation, false); + } + } + setFirstColumn(); + this.isNewColumn = true; + this.isFirstColumnBand = true; + } + + private void fillGroupHeaders(boolean isFillAll) throws JRException { + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + if (isFillAll) { + fillGroupHeader(this.groups[i]); + } else if (this.groups[i].hasChanged()) { + fillGroupHeader(this.groups[i]); + } + } + } + + private void fillGroupHeader(JRFillGroup group) throws JRException { + JRFillBand groupHeader = (JRFillBand)group.getGroupHeader(); + if (log.isDebugEnabled() && !groupHeader.isEmpty()) + log.debug("Fill " + this.fillerId + ": " + group.getName() + " header"); + byte evalPrevPage = group.isTopLevelChange() ? 1 : 3; + if (((group.isStartNewPage() || group.isResetPageNumber()) && !this.isNewPage) || (group.isStartNewColumn() && !this.isNewColumn)) + fillPageBreak(group.isResetPageNumber(), evalPrevPage, (byte)3, true); + groupHeader.evaluatePrintWhenExpression((byte)3); + if (groupHeader.isToPrint()) + while (groupHeader.getHeight() > this.columnFooterOffsetY - this.offsetY || group.getMinHeightToStartNewPage() > this.columnFooterOffsetY - this.offsetY) + fillPageBreak(false, evalPrevPage, (byte)3, true); + setNewGroupInBands(group); + group.setFooterPrinted(false); + if (groupHeader.isToPrint()) { + setFirstColumn(); + fillColumnBand(groupHeader, (byte)3); + } + group.setHeaderPrinted(true); + this.isNewGroup = true; + this.isFirstPageBand = false; + } + + private void fillGroupHeadersReprint(byte evaluation) throws JRException { + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) + fillGroupHeaderReprint(this.groups[i], evaluation); + } + + private void fillGroupHeaderReprint(JRFillGroup group, byte evaluation) throws JRException { + if (group.isReprintHeaderOnEachPage() && (!group.hasChanged() || (group.hasChanged() && group.isHeaderPrinted()))) { + JRFillBand groupHeader = (JRFillBand)group.getGroupHeader(); + groupHeader.evaluatePrintWhenExpression(evaluation); + if (groupHeader.isToPrint()) { + setFirstColumn(); + while (groupHeader.getHeight() > this.columnFooterOffsetY - this.offsetY || group.getMinHeightToStartNewPage() > this.columnFooterOffsetY - this.offsetY) + fillPageBreak(false, evaluation, evaluation, true); + fillColumnBand(groupHeader, evaluation); + } + this.isFirstPageBand = false; + } + } + + private void fillDetail() throws JRException { + if (log.isDebugEnabled() && !this.detail.isEmpty()) + log.debug("Fill " + this.fillerId + ": detail"); + if (!this.detail.isPrintWhenExpressionNull()) { + this.calculator.estimateVariables(); + this.detail.evaluatePrintWhenExpression((byte)2); + } + if (this.detail.isToPrint()) + while ((this.columnIndex == this.columnCount - 1 || this.isNewGroup) && this.detail.getHeight() > this.columnFooterOffsetY - this.offsetY) { + byte evalPrevPage = this.isNewGroup ? 3 : 1; + fillPageBreak(false, evalPrevPage, (byte)3, true); + } + this.scriptlet.callBeforeDetailEval(); + this.calculator.calculateVariables(); + this.scriptlet.callAfterDetailEval(); + if (!this.detail.isPrintWhenExpressionNull()) + this.detail.evaluatePrintWhenExpression((byte)3); + if (this.detail.isToPrint()) { + if (this.offsetX == this.lastDetailOffsetX && this.offsetY == this.lastDetailOffsetY) + if (this.columnIndex == this.columnCount - 1) { + setFirstColumn(); + } else { + this.columnIndex++; + this.offsetX += this.columnWidth + this.columnSpacing; + this.offsetY -= this.detail.getHeight(); + setColumnNumberVariable(); + } + fillFixedBand(this.detail, (byte)3, false); + this.lastDetailOffsetX = this.offsetX; + this.lastDetailOffsetY = this.offsetY; + } + this.isNewPage = false; + this.isNewColumn = false; + this.isNewGroup = false; + this.isFirstPageBand = false; + this.isFirstColumnBand = false; + } + + private void fillGroupFooters(boolean isFillAll) throws JRException { + if (this.groups != null && this.groups.length > 0) { + byte evaluation = isFillAll ? 3 : 1; + for (int i = this.groups.length - 1; i >= 0; i--) { + if (isFillAll) { + fillGroupFooter(this.groups[i], evaluation); + } else if (this.groups[i].hasChanged()) { + fillGroupFooter(this.groups[i], evaluation); + } + } + } + } + + private void fillGroupFooter(JRFillGroup group, byte evaluation) throws JRException { + JRFillBand groupFooter = (JRFillBand)group.getGroupFooter(); + if (log.isDebugEnabled() && !groupFooter.isEmpty()) + log.debug("Fill " + this.fillerId + ": " + group.getName() + " footer"); + groupFooter.evaluatePrintWhenExpression(evaluation); + if (groupFooter.isToPrint()) { + setFirstColumn(); + if (groupFooter.getHeight() > this.columnFooterOffsetY - this.offsetY) + fillPageBreak(false, evaluation, evaluation, true); + fillColumnBand(groupFooter, evaluation); + } + this.isNewPage = false; + this.isNewColumn = false; + this.isFirstPageBand = false; + this.isFirstColumnBand = false; + group.setHeaderPrinted(false); + group.setFooterPrinted(true); + } + + private void fillColumnFooters(byte evaluation) throws JRException { + if (log.isDebugEnabled() && !this.columnFooter.isEmpty()) + log.debug("Fill " + this.fillerId + ": column footers"); + if (isSubreport()) + this.columnFooterOffsetY = this.offsetY; + int tmpColumnFooterOffsetY = this.columnFooterOffsetY; + if (this.isFloatColumnFooter || this.fillContext.isIgnorePagination()) + tmpColumnFooterOffsetY = this.offsetY; + for (this.columnIndex = 0; this.columnIndex < this.columnCount; this.columnIndex++) { + setColumnNumberVariable(); + this.offsetX = this.leftMargin + this.columnIndex * (this.columnSpacing + this.columnWidth); + this.offsetY = tmpColumnFooterOffsetY; + this.columnFooter.evaluatePrintWhenExpression(evaluation); + if (this.columnFooter.isToPrint()) + fillFixedBand(this.columnFooter, evaluation, false); + } + } + + private void fillPageFooter(byte evaluation) throws JRException { + JRFillBand crtPageFooter = getCurrentPageFooter(); + if (log.isDebugEnabled() && !crtPageFooter.isEmpty()) + log.debug("Fill " + this.fillerId + ": " + (this.isLastPageFooter ? "last " : "") + "page footer"); + this.offsetX = this.leftMargin; + if (!isSubreport() && !this.fillContext.isIgnorePagination()) + this.offsetY = this.pageHeight - crtPageFooter.getHeight() - this.bottomMargin; + crtPageFooter.evaluatePrintWhenExpression(evaluation); + if (crtPageFooter.isToPrint()) + fillFixedBand(crtPageFooter, evaluation); + } + + private void fillSummary() throws JRException { + if (log.isDebugEnabled() && !this.summary.isEmpty()) + log.debug("Fill " + this.fillerId + ": summary"); + this.offsetX = this.leftMargin; + if (this.lastPageFooter == this.missingFillBand) { + if (!this.isSummaryNewPage && this.summary.getHeight() <= this.columnFooterOffsetY - this.offsetY) { + fillSummarySamePage(); + } else { + fillSummaryNewPage(); + } + } else if (!this.isSummaryNewPage && this.summary.getHeight() <= this.lastPageColumnFooterOffsetY - this.offsetY) { + setLastPageFooter(true); + fillSummarySamePage(); + } else if (!this.isSummaryNewPage && this.summary.getHeight() <= this.columnFooterOffsetY - this.offsetY) { + fillSummarySamePageMixedFooters(); + } else if (this.offsetY <= this.lastPageColumnFooterOffsetY) { + setLastPageFooter(true); + fillSummaryNewPage(); + } else { + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + if (this.isSummaryNewPage) { + fillSummaryNewPage(); + } else { + fillSummarySamePage(); + } + } + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + resolveReportBoundElements(); + } + + private void fillSummarySamePage() throws JRException { + this.summary.evaluatePrintWhenExpression((byte)3); + if (this.summary != this.missingFillBand && this.summary.isToPrint()) { + this.summary.evaluate((byte)3); + JRPrintBand printBand = this.summary.fill(this.columnFooterOffsetY - this.offsetY - this.summary.getHeight()); + if (this.summary.willOverflow() && !this.summary.isSplitAllowed()) { + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } else { + fillBand(printBand); + this.offsetY += printBand.getHeight(); + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + } + while (this.summary.willOverflow()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.summary, (byte)3); + } else { + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + } + } + + private void fillSummarySamePageMixedFooters() throws JRException { + this.summary.evaluatePrintWhenExpression((byte)3); + if (this.summary != this.missingFillBand && this.summary.isToPrint()) { + this.summary.evaluate((byte)3); + JRPrintBand printBand = this.summary.fill(this.columnFooterOffsetY - this.offsetY - this.summary.getHeight()); + if (this.summary.willOverflow() && !this.summary.isSplitAllowed()) { + if (this.offsetY <= this.lastPageColumnFooterOffsetY) { + setLastPageFooter(true); + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } else { + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + printBand = this.summary.refill(this.lastPageColumnFooterOffsetY - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + } + } else { + fillBand(printBand); + this.offsetY += printBand.getHeight(); + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + if (this.summary.willOverflow()) { + printBand = this.summary.fill(this.lastPageColumnFooterOffsetY - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + } + while (this.summary.willOverflow()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.summary, (byte)3); + } else { + if (this.offsetY > this.lastPageColumnFooterOffsetY) + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + } + } + + private void fillSummaryNewPage() throws JRException { + fillColumnFooters((byte)3); + fillPageFooter((byte)3); + this.summary.evaluatePrintWhenExpression((byte)3); + if (this.summary != this.missingFillBand && this.summary.isToPrint()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + this.columnIndex = -1; + this.summary.evaluate((byte)3); + JRPrintBand printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + if (this.summary.willOverflow() && !this.summary.isSplitAllowed() && isSubreport()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (this.summary.willOverflow()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.summary, (byte)3); + } + } + + private void fillBackground() throws JRException { + if (log.isDebugEnabled() && !this.background.isEmpty()) + log.debug("Fill " + this.fillerId + ": background"); + if (this.background.getHeight() <= this.pageHeight - this.bottomMargin - this.offsetY) { + this.background.evaluatePrintWhenExpression((byte)3); + if (this.background.isToPrint()) { + this.background.evaluate((byte)3); + JRPrintBand printBand = this.background.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.background.getHeight()); + fillBand(printBand); + } + } + } + + private void addPage(boolean isResetPageNumber) throws JRException { + if (isSubreport()) { + if (!this.parentFiller.isBandOverFlowAllowed()) + throw new JRRuntimeException("Subreport overflowed on a band that does not support overflow."); + this.printPageStretchHeight = this.offsetY + this.bottomMargin; + if (this.fillContext.isUsingVirtualizer()) + removePageIdentityDataProvider(); + suspendSubreportRunner(); + } + this.printPage = newPage(); + if (isSubreport() && this.fillContext.isUsingVirtualizer()) + addPageIdentityDataProvider(); + if (isResetPageNumber) { + this.calculator.getPageNumber().setValue(new Integer(1)); + } else { + this.calculator.getPageNumber().setValue(new Integer(((Number)this.calculator.getPageNumber().getValue()).intValue() + 1)); + } + this.calculator.getPageNumber().setOldValue(this.calculator.getPageNumber().getValue()); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + this.lastDetailOffsetX = -1; + this.lastDetailOffsetY = -1; + fillBackground(); + } + + private void setColumnNumberVariable() { + JRFillVariable columnNumberVar = this.calculator.getColumnNumber(); + columnNumberVar.setValue(new Integer(this.columnIndex + 1)); + columnNumberVar.setOldValue(columnNumberVar.getValue()); + } + + private void fillPageBreak(boolean isResetPageNumber, byte evalPrevPage, byte evalNextPage, boolean isReprintGroupHeaders) throws JRException { + if (this.isCreatingNewPage) + throw new JRException("Infinite loop creating new page."); + this.isCreatingNewPage = true; + fillColumnFooters(evalPrevPage); + fillPageFooter(evalPrevPage); + resolveGroupBoundElements(evalPrevPage, false); + resolveColumnBoundElements(evalPrevPage); + resolvePageBoundElements(evalPrevPage); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(isResetPageNumber); + fillPageHeader(evalNextPage); + fillColumnHeaders(evalNextPage); + if (isReprintGroupHeaders) + fillGroupHeadersReprint(evalNextPage); + this.isCreatingNewPage = false; + } + + protected void fillPageBand(JRFillBand band, byte evaluation) throws JRException { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + if (band.willOverflow() && !band.isSplitAllowed()) { + fillPageBreak(false, evaluation, evaluation, true); + printBand = band.refill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (band.willOverflow()) { + fillPageBreak(false, evaluation, evaluation, true); + printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(band, evaluation); + } + + protected void fillColumnBand(JRFillBand band, byte evaluation) throws JRException { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + if (band.willOverflow() && !band.isSplitAllowed()) { + fillPageBreak(false, evaluation, evaluation, true); + printBand = band.refill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (band.willOverflow()) { + fillPageBreak(false, evaluation, evaluation, true); + printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(band, evaluation); + } + + protected void fillFixedBand(JRFillBand band, byte evaluation) throws JRException { + fillFixedBand(band, evaluation, true); + } + + protected void fillFixedBand(JRFillBand band, byte evaluation, boolean allowShrinking) throws JRException { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(); + fillBand(printBand); + this.offsetY += allowShrinking ? printBand.getHeight() : band.getHeight(); + resolveBandBoundElements(band, evaluation); + } + + protected void fillBand(JRPrintBand band) { + List elements = band.getElements(); + if (elements != null && elements.size() > 0) { + JRPrintElement element = null; + for (Iterator it = elements.iterator(); it.hasNext(); ) { + element = it.next(); + element.setX(element.getX() + this.offsetX); + element.setY(element.getY() + this.offsetY); + this.printPage.addElement(element); + } + } + } + + private void setNewPageColumnInBands() { + this.title.setNewPageColumn(true); + this.pageHeader.setNewPageColumn(true); + this.columnHeader.setNewPageColumn(true); + this.detail.setNewPageColumn(true); + this.columnFooter.setNewPageColumn(true); + this.pageFooter.setNewPageColumn(true); + this.lastPageFooter.setNewPageColumn(true); + this.summary.setNewPageColumn(true); + this.noData.setNewPageColumn(true); + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + ((JRFillBand)this.groups[i].getGroupHeader()).setNewPageColumn(true); + ((JRFillBand)this.groups[i].getGroupFooter()).setNewPageColumn(true); + } + } + + private void setNewGroupInBands(JRGroup group) { + this.title.setNewGroup(group, true); + this.pageHeader.setNewGroup(group, true); + this.columnHeader.setNewGroup(group, true); + this.detail.setNewGroup(group, true); + this.columnFooter.setNewGroup(group, true); + this.pageFooter.setNewGroup(group, true); + this.lastPageFooter.setNewGroup(group, true); + this.summary.setNewGroup(group, true); + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + ((JRFillBand)this.groups[i].getGroupHeader()).setNewGroup(group, true); + ((JRFillBand)this.groups[i].getGroupFooter()).setNewGroup(group, true); + } + } + + private JRFillBand getCurrentPageFooter() { + return this.isLastPageFooter ? this.lastPageFooter : this.pageFooter; + } + + private void setLastPageFooter(boolean isLastPageFooter) { + this.isLastPageFooter = isLastPageFooter; + if (isLastPageFooter) + this.columnFooterOffsetY = this.lastPageColumnFooterOffsetY; + } + + private void fillNoData() throws JRException { + if (log.isDebugEnabled() && !this.noData.isEmpty()) + log.debug("Fill " + this.fillerId + ": noData"); + this.noData.evaluatePrintWhenExpression((byte)3); + if (this.noData.isToPrint()) { + while (this.noData.getHeight() > this.pageHeight - this.bottomMargin - this.offsetY) + addPage(false); + this.noData.evaluate((byte)3); + JRPrintBand printBand = this.noData.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.noData.getHeight()); + if (this.noData.willOverflow() && !this.noData.isSplitAllowed() && isSubreport()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.noData.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.noData.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (this.noData.willOverflow()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.noData.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.noData.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.noData, (byte)3); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementer.java new file mode 100644 index 0000000..535c646 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementer.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; + +public interface JRIncrementer { + Object increment(JRFillVariable paramJRFillVariable, Object paramObject, AbstractValueProvider paramAbstractValueProvider) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactory.java new file mode 100644 index 0000000..da9c8e6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactory.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine.fill; + +public interface JRIncrementerFactory { + JRIncrementer getIncrementer(byte paramByte); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactoryCache.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactoryCache.java new file mode 100644 index 0000000..7767c62 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIncrementerFactoryCache.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRIncrementerFactoryCache { + private static Map factoriesMap = null; + + public static synchronized JRIncrementerFactory getInstance(Class factoryClass) { + if (factoriesMap == null) + factoriesMap = new HashMap(); + JRIncrementerFactory incrementerFactory = (JRIncrementerFactory)factoriesMap.get(factoryClass.getName()); + if (incrementerFactory == null) { + try { + incrementerFactory = factoryClass.newInstance(); + } catch (InstantiationException e) { + throw new JRRuntimeException(e); + } catch (IllegalAccessException e) { + throw new JRRuntimeException(e); + } + factoriesMap.put(factoryClass.getName(), incrementerFactory); + } + return incrementerFactory; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerAverageIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerAverageIncrementer.java new file mode 100644 index 0000000..16a3d05 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerAverageIncrementer.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.fill; + +class JRIntegerAverageIncrementer extends JRAbstractExtendedIncrementer { + private static JRIntegerAverageIncrementer mainInstance = new JRIntegerAverageIncrementer(); + + public static JRIntegerAverageIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Integer(sumValue.intValue() / countValue.intValue()); + } + + public Object initialValue() { + return JRIntegerIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerCountIncrementer.java new file mode 100644 index 0000000..989235d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerCountIncrementer.java @@ -0,0 +1,32 @@ +package net.sf.jasperreports.engine.fill; + +class JRIntegerCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRIntegerCountIncrementer mainInstance = new JRIntegerCountIncrementer(); + + public static JRIntegerCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + if (value == null || variable.isInitialized()) + value = JRIntegerIncrementerFactory.ZERO; + if (expressionValue == null) + return value; + return new Integer(value.intValue() + 1); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + Number combineValue = (Number)calculableValue.getValue(); + if (value == null || calculable.isInitialized()) + value = JRIntegerIncrementerFactory.ZERO; + if (combineValue == null) + return value; + return new Integer(value.intValue() + combineValue.intValue()); + } + + public Object initialValue() { + return JRIntegerIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerDistinctCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerDistinctCountIncrementer.java new file mode 100644 index 0000000..40c8f41 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerDistinctCountIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +class JRIntegerDistinctCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRIntegerDistinctCountIncrementer mainInstance = new JRIntegerDistinctCountIncrementer(); + + public static JRIntegerDistinctCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(variable.getHelperVariable((byte)0)); + if (variable.isInitialized()) + holder.init(); + return new Integer((int)holder.getCount()); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + return new Integer((int)holder.getCount()); + } + + public Object initialValue() { + return JRIntegerIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerIncrementerFactory.java new file mode 100644 index 0000000..0f1fa26 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerIncrementerFactory.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine.fill; + +public class JRIntegerIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + protected static final Integer ZERO = new Integer(0); + + private static JRIntegerIncrementerFactory mainInstance = new JRIntegerIncrementerFactory(); + + public static JRIntegerIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 1: + incrementer = JRIntegerCountIncrementer.getInstance(); + return incrementer; + case 2: + incrementer = JRIntegerSumIncrementer.getInstance(); + return incrementer; + case 3: + incrementer = JRIntegerAverageIncrementer.getInstance(); + return incrementer; + case 4: + case 5: + incrementer = JRComparableIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + case 6: + incrementer = JRIntegerStandardDeviationIncrementer.getInstance(); + return incrementer; + case 7: + incrementer = JRIntegerVarianceIncrementer.getInstance(); + return incrementer; + case 10: + incrementer = JRIntegerDistinctCountIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerStandardDeviationIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerStandardDeviationIncrementer.java new file mode 100644 index 0000000..21508cc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerStandardDeviationIncrementer.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +class JRIntegerStandardDeviationIncrementer extends JRAbstractExtendedIncrementer { + private static JRIntegerStandardDeviationIncrementer mainInstance = new JRIntegerStandardDeviationIncrementer(); + + public static JRIntegerStandardDeviationIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number varianceValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)2)); + return new Integer((int)Math.sqrt(varianceValue.doubleValue())); + } + + public Object initialValue() { + return JRIntegerIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerSumIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerSumIncrementer.java new file mode 100644 index 0000000..2ca48a6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerSumIncrementer.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +class JRIntegerSumIncrementer extends JRAbstractExtendedIncrementer { + private static JRIntegerSumIncrementer mainInstance = new JRIntegerSumIncrementer(); + + public static JRIntegerSumIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + value = JRIntegerIncrementerFactory.ZERO; + return new Integer(value.intValue() + newValue.intValue()); + } + + public Object initialValue() { + return JRIntegerIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerVarianceIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerVarianceIncrementer.java new file mode 100644 index 0000000..0e92e90 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRIntegerVarianceIncrementer.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +class JRIntegerVarianceIncrementer extends JRAbstractExtendedIncrementer { + private static JRIntegerVarianceIncrementer mainInstance = new JRIntegerVarianceIncrementer(); + + public static JRIntegerVarianceIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + return JRIntegerIncrementerFactory.ZERO; + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Integer((countValue.intValue() - 1) * value.intValue() / countValue.intValue() + (sumValue.intValue() / countValue.intValue() - newValue.intValue()) * (sumValue.intValue() / countValue.intValue() - newValue.intValue()) / (countValue.intValue() - 1)); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + if (calculableValue.getValue() == null) { + if (calculable.isInitialized()) + return null; + return value; + } + if (value == null || calculable.isInitialized()) + return new Integer(((Number)calculableValue.getIncrementedValue()).intValue()); + double v1 = value.doubleValue(); + double c1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)0))).doubleValue(); + double s1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)1))).doubleValue(); + double v2 = ((Number)calculableValue.getIncrementedValue()).doubleValue(); + double c2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)0))).doubleValue(); + double s2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)1))).doubleValue(); + c1 -= c2; + s1 -= s2; + double c = c1 + c2; + return new Integer((int)(c1 / c * v1 + c2 / c * v2 + c2 / c1 * s1 / c * s1 / c + c1 / c2 * s2 / c * s2 / c - 2.0D * s1 / c * s2 / c)); + } + + public Object initialValue() { + return JRIntegerIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongAverageIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongAverageIncrementer.java new file mode 100644 index 0000000..e3a06d9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongAverageIncrementer.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.fill; + +class JRLongAverageIncrementer extends JRAbstractExtendedIncrementer { + private static JRLongAverageIncrementer mainInstance = new JRLongAverageIncrementer(); + + public static JRLongAverageIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Long(sumValue.longValue() / countValue.longValue()); + } + + public Object initialValue() { + return JRLongIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongCountIncrementer.java new file mode 100644 index 0000000..f5f0aa4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongCountIncrementer.java @@ -0,0 +1,32 @@ +package net.sf.jasperreports.engine.fill; + +class JRLongCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRLongCountIncrementer mainInstance = new JRLongCountIncrementer(); + + public static JRLongCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + if (value == null || variable.isInitialized()) + value = JRLongIncrementerFactory.ZERO; + if (expressionValue == null) + return value; + return new Long(value.longValue() + 1L); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + Number combineValue = (Number)calculableValue.getValue(); + if (value == null || calculable.isInitialized()) + value = JRLongIncrementerFactory.ZERO; + if (combineValue == null) + return value; + return new Long(value.longValue() + combineValue.longValue()); + } + + public Object initialValue() { + return JRLongIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongDistinctCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongDistinctCountIncrementer.java new file mode 100644 index 0000000..e399a86 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongDistinctCountIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +class JRLongDistinctCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRLongDistinctCountIncrementer mainInstance = new JRLongDistinctCountIncrementer(); + + public static JRLongDistinctCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(variable.getHelperVariable((byte)0)); + if (variable.isInitialized()) + holder.init(); + return new Long(holder.getCount()); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + return new Long(holder.getCount()); + } + + public Object initialValue() { + return JRLongIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongIncrementerFactory.java new file mode 100644 index 0000000..68f98be --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongIncrementerFactory.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine.fill; + +public class JRLongIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + protected static final Long ZERO = new Long(0L); + + private static JRLongIncrementerFactory mainInstance = new JRLongIncrementerFactory(); + + public static JRLongIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 1: + incrementer = JRLongCountIncrementer.getInstance(); + return incrementer; + case 2: + incrementer = JRLongSumIncrementer.getInstance(); + return incrementer; + case 3: + incrementer = JRLongAverageIncrementer.getInstance(); + return incrementer; + case 4: + case 5: + incrementer = JRComparableIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + case 6: + incrementer = JRLongStandardDeviationIncrementer.getInstance(); + return incrementer; + case 7: + incrementer = JRLongVarianceIncrementer.getInstance(); + return incrementer; + case 10: + incrementer = JRLongDistinctCountIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongStandardDeviationIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongStandardDeviationIncrementer.java new file mode 100644 index 0000000..b451940 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongStandardDeviationIncrementer.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +class JRLongStandardDeviationIncrementer extends JRAbstractExtendedIncrementer { + private static JRLongStandardDeviationIncrementer mainInstance = new JRLongStandardDeviationIncrementer(); + + public static JRLongStandardDeviationIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number varianceValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)2)); + return new Long((long)Math.sqrt(varianceValue.doubleValue())); + } + + public Object initialValue() { + return JRLongIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongSumIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongSumIncrementer.java new file mode 100644 index 0000000..18f123f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongSumIncrementer.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +class JRLongSumIncrementer extends JRAbstractExtendedIncrementer { + private static JRLongSumIncrementer mainInstance = new JRLongSumIncrementer(); + + public static JRLongSumIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + value = JRLongIncrementerFactory.ZERO; + return new Long(value.longValue() + newValue.longValue()); + } + + public Object initialValue() { + return JRLongIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongVarianceIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongVarianceIncrementer.java new file mode 100644 index 0000000..99afbd2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRLongVarianceIncrementer.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +class JRLongVarianceIncrementer extends JRAbstractExtendedIncrementer { + private static JRLongVarianceIncrementer mainInstance = new JRLongVarianceIncrementer(); + + public static JRLongVarianceIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + return JRLongIncrementerFactory.ZERO; + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Long((countValue.longValue() - 1L) * value.longValue() / countValue.longValue() + (sumValue.longValue() / countValue.longValue() - newValue.longValue()) * (sumValue.longValue() / countValue.longValue() - newValue.longValue()) / (countValue.longValue() - 1L)); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + if (calculableValue.getValue() == null) { + if (calculable.isInitialized()) + return null; + return value; + } + if (value == null || calculable.isInitialized()) + return new Long(((Number)calculableValue.getIncrementedValue()).longValue()); + double v1 = value.doubleValue(); + double c1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)0))).doubleValue(); + double s1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)1))).doubleValue(); + double v2 = ((Number)calculableValue.getIncrementedValue()).doubleValue(); + double c2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)0))).doubleValue(); + double s2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)1))).doubleValue(); + c1 -= c2; + s1 -= s2; + double c = c1 + c2; + return new Long((long)(c1 / c * v1 + c2 / c * v2 + c2 / c1 * s1 / c * s1 / c + c1 / c2 * s2 / c * s2 / c - 2.0D * s1 / c * s2 / c)); + } + + public Object initialValue() { + return JRLongIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRMeasuredText.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRMeasuredText.java new file mode 100644 index 0000000..949d454 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRMeasuredText.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.engine.fill; + +public interface JRMeasuredText { + float getLeadingOffset(); + + float getLineSpacingFactor(); + + float getTextHeight(); + + int getTextOffset(); + + boolean isLeftToRight(); + + String getTextSuffix(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRPrintBand.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRPrintBand.java new file mode 100644 index 0000000..af89042 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRPrintBand.java @@ -0,0 +1,28 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintElementContainer; + +public class JRPrintBand implements JRPrintElementContainer { + private int height = 0; + + private List elements = new ArrayList(); + + public int getHeight() { + return this.height; + } + + public void setHeight(int height) { + this.height = height; + } + + public List getElements() { + return this.elements; + } + + public void addElement(JRPrintElement element) { + this.elements.add(element); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValues.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValues.java new file mode 100644 index 0000000..69b73da --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValues.java @@ -0,0 +1,53 @@ +package net.sf.jasperreports.engine.fill; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class JRRecordedValues implements Serializable { + private static final long serialVersionUID = 10200L; + + private Set evaluationTimes; + + private Map recordedVariableValues; + + private Map recordedFieldValues; + + public JRRecordedValues(Set evaluationTimes) { + this.evaluationTimes = new HashSet(evaluationTimes); + } + + public void doneEvaluation(JREvaluationTime evaluationTime) { + this.evaluationTimes.remove(evaluationTime); + } + + public boolean lastEvaluationTime() { + return (this.evaluationTimes.size() == 1); + } + + public boolean finishedEvaluations() { + return this.evaluationTimes.isEmpty(); + } + + public void recordVariableValue(String variableName, Object value) { + if (this.recordedVariableValues == null) + this.recordedVariableValues = new HashMap(); + this.recordedVariableValues.put(variableName, value); + } + + public void recordFieldValue(String fieldName, Object value) { + if (this.recordedFieldValues == null) + this.recordedFieldValues = new HashMap(); + this.recordedFieldValues.put(fieldName, value); + } + + public Map getRecordedVariableValues() { + return this.recordedVariableValues; + } + + public Map getRecordedFieldValues() { + return this.recordedFieldValues; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintElement.java new file mode 100644 index 0000000..80410af --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintElement.java @@ -0,0 +1,12 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.Set; +import net.sf.jasperreports.engine.JRPrintElement; + +public interface JRRecordedValuesPrintElement extends JRPrintElement { + void initRecordedValues(Set paramSet); + + JRRecordedValues getRecordedValues(); + + void deleteRecordedValues(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintImage.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintImage.java new file mode 100644 index 0000000..fb20d08 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintImage.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.Set; + +public class JRRecordedValuesPrintImage extends JRTemplatePrintImage implements JRRecordedValuesPrintElement { + private static final long serialVersionUID = 10200L; + + private JRRecordedValues recordedValues; + + public JRRecordedValuesPrintImage(JRTemplateImage image) { + super(image); + } + + public JRRecordedValues getRecordedValues() { + return this.recordedValues; + } + + public void deleteRecordedValues() { + this.recordedValues = null; + } + + public void initRecordedValues(Set evaluationTimes) { + this.recordedValues = new JRRecordedValues(evaluationTimes); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintText.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintText.java new file mode 100644 index 0000000..54be2d2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRRecordedValuesPrintText.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.Set; + +public class JRRecordedValuesPrintText extends JRTemplatePrintText implements JRRecordedValuesPrintElement { + private static final long serialVersionUID = 10200L; + + private JRRecordedValues recordedValues; + + public JRRecordedValuesPrintText(JRTemplateText text) { + super(text); + } + + public JRRecordedValues getRecordedValues() { + return this.recordedValues; + } + + public void deleteRecordedValues() { + this.recordedValues = null; + } + + public void initRecordedValues(Set evaluationTimes) { + this.recordedValues = new JRRecordedValues(evaluationTimes); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortAverageIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortAverageIncrementer.java new file mode 100644 index 0000000..0025df7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortAverageIncrementer.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.fill; + +class JRShortAverageIncrementer extends JRAbstractExtendedIncrementer { + private static JRShortAverageIncrementer mainInstance = new JRShortAverageIncrementer(); + + public static JRShortAverageIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Short((short)(sumValue.shortValue() / countValue.shortValue())); + } + + public Object initialValue() { + return JRShortIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortCountIncrementer.java new file mode 100644 index 0000000..074012a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortCountIncrementer.java @@ -0,0 +1,32 @@ +package net.sf.jasperreports.engine.fill; + +class JRShortCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRShortCountIncrementer mainInstance = new JRShortCountIncrementer(); + + public static JRShortCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + if (value == null || variable.isInitialized()) + value = JRShortIncrementerFactory.ZERO; + if (expressionValue == null) + return value; + return new Short((short)(value.shortValue() + 1)); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + Number combineValue = (Number)calculableValue.getValue(); + if (value == null || calculable.isInitialized()) + value = JRShortIncrementerFactory.ZERO; + if (combineValue == null) + return value; + return new Short((short)(value.shortValue() + combineValue.shortValue())); + } + + public Object initialValue() { + return JRShortIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortDistinctCountIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortDistinctCountIncrementer.java new file mode 100644 index 0000000..50b444c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortDistinctCountIncrementer.java @@ -0,0 +1,25 @@ +package net.sf.jasperreports.engine.fill; + +class JRShortDistinctCountIncrementer extends JRAbstractExtendedIncrementer { + private static JRShortDistinctCountIncrementer mainInstance = new JRShortDistinctCountIncrementer(); + + public static JRShortDistinctCountIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(variable.getHelperVariable((byte)0)); + if (variable.isInitialized()) + holder.init(); + return new Short((short)(int)holder.getCount()); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + DistinctCountHolder holder = (DistinctCountHolder)valueProvider.getValue(calculable.getHelperVariable((byte)0)); + return new Short((short)(int)holder.getCount()); + } + + public Object initialValue() { + return JRShortIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortIncrementerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortIncrementerFactory.java new file mode 100644 index 0000000..2025e52 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortIncrementerFactory.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine.fill; + +public class JRShortIncrementerFactory extends JRAbstractExtendedIncrementerFactory { + protected static final Short ZERO = new Short((short)0); + + private static JRShortIncrementerFactory mainInstance = new JRShortIncrementerFactory(); + + public static JRShortIncrementerFactory getInstance() { + return mainInstance; + } + + public JRExtendedIncrementer getExtendedIncrementer(byte calculation) { + JRExtendedIncrementer incrementer = null; + switch (calculation) { + case 1: + incrementer = JRShortCountIncrementer.getInstance(); + return incrementer; + case 2: + incrementer = JRShortSumIncrementer.getInstance(); + return incrementer; + case 3: + incrementer = JRShortAverageIncrementer.getInstance(); + return incrementer; + case 4: + case 5: + incrementer = JRComparableIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + case 6: + incrementer = JRShortStandardDeviationIncrementer.getInstance(); + return incrementer; + case 7: + incrementer = JRShortVarianceIncrementer.getInstance(); + return incrementer; + case 10: + incrementer = JRShortDistinctCountIncrementer.getInstance(); + return incrementer; + } + incrementer = JRDefaultIncrementerFactory.getInstance().getExtendedIncrementer(calculation); + return incrementer; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortStandardDeviationIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortStandardDeviationIncrementer.java new file mode 100644 index 0000000..3ee56da --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortStandardDeviationIncrementer.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +class JRShortStandardDeviationIncrementer extends JRAbstractExtendedIncrementer { + private static JRShortStandardDeviationIncrementer mainInstance = new JRShortStandardDeviationIncrementer(); + + public static JRShortStandardDeviationIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + if (expressionValue == null) { + if (variable.isInitialized()) + return null; + return variable.getValue(); + } + Number varianceValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)2)); + return new Short((short)(int)Math.sqrt(varianceValue.doubleValue())); + } + + public Object initialValue() { + return JRShortIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortSumIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortSumIncrementer.java new file mode 100644 index 0000000..8e49a43 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortSumIncrementer.java @@ -0,0 +1,26 @@ +package net.sf.jasperreports.engine.fill; + +class JRShortSumIncrementer extends JRAbstractExtendedIncrementer { + private static JRShortSumIncrementer mainInstance = new JRShortSumIncrementer(); + + public static JRShortSumIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + value = JRShortIncrementerFactory.ZERO; + return new Short((short)(value.shortValue() + newValue.shortValue())); + } + + public Object initialValue() { + return JRShortIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortVarianceIncrementer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortVarianceIncrementer.java new file mode 100644 index 0000000..15cde02 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRShortVarianceIncrementer.java @@ -0,0 +1,49 @@ +package net.sf.jasperreports.engine.fill; + +class JRShortVarianceIncrementer extends JRAbstractExtendedIncrementer { + private static JRShortVarianceIncrementer mainInstance = new JRShortVarianceIncrementer(); + + public static JRShortVarianceIncrementer getInstance() { + return mainInstance; + } + + public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) { + Number value = (Number)variable.getIncrementedValue(); + Number newValue = (Number)expressionValue; + if (newValue == null) { + if (variable.isInitialized()) + return null; + return value; + } + if (value == null || variable.isInitialized()) + return JRShortIncrementerFactory.ZERO; + Number countValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)0)); + Number sumValue = (Number)valueProvider.getValue(variable.getHelperVariable((byte)1)); + return new Short((short)((countValue.shortValue() - 1) * value.shortValue() / countValue.shortValue() + (sumValue.shortValue() / countValue.shortValue() - newValue.shortValue()) * (sumValue.shortValue() / countValue.shortValue() - newValue.shortValue()) / (countValue.shortValue() - 1))); + } + + public Object combine(JRCalculable calculable, JRCalculable calculableValue, AbstractValueProvider valueProvider) { + Number value = (Number)calculable.getIncrementedValue(); + if (calculableValue.getValue() == null) { + if (calculable.isInitialized()) + return null; + return value; + } + if (value == null || calculable.isInitialized()) + return new Short(((Number)calculableValue.getIncrementedValue()).shortValue()); + float v1 = value.floatValue(); + float c1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)0))).floatValue(); + float s1 = ((Number)valueProvider.getValue(calculable.getHelperVariable((byte)1))).floatValue(); + float v2 = ((Number)calculableValue.getIncrementedValue()).floatValue(); + float c2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)0))).floatValue(); + float s2 = ((Number)valueProvider.getValue(calculableValue.getHelperVariable((byte)1))).floatValue(); + c1 -= c2; + s1 -= s2; + float c = c1 + c2; + return new Short((short)(int)(c1 / c * v1 + c2 / c * v2 + c2 / c1 * s1 / c * s1 / c + c1 / c2 * s2 / c * s2 / c - 2.0F * s1 / c * s2 / c)); + } + + public Object initialValue() { + return JRShortIncrementerFactory.ZERO; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunResult.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunResult.java new file mode 100644 index 0000000..4336b32 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunResult.java @@ -0,0 +1,24 @@ +package net.sf.jasperreports.engine.fill; + +public class JRSubreportRunResult { + private final boolean finished; + + private final Throwable exception; + + public JRSubreportRunResult(boolean finished, Throwable exception) { + this.finished = finished; + this.exception = exception; + } + + public boolean isError() { + return (this.exception != null); + } + + public Throwable getException() { + return this.exception; + } + + public boolean hasFinished() { + return this.finished; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunner.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunner.java new file mode 100644 index 0000000..0560653 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunner.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRException; + +public interface JRSubreportRunner { + boolean isFilling(); + + JRSubreportRunResult start() throws JRException; + + JRSubreportRunResult resume() throws JRException; + + void reset() throws JRException; + + void cancel() throws JRException; + + void suspend() throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunnerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunnerFactory.java new file mode 100644 index 0000000..825cba7 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRSubreportRunnerFactory.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.fill; + +public interface JRSubreportRunnerFactory { + public static final String SUBREPORT_RUNNER_FACTORY = "net.sf.jasperreports.subreport.runner.factory"; + + JRSubreportRunner createSubreportRunner(JRFillSubreport paramJRFillSubreport, JRBaseFiller paramJRBaseFiller); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateElement.java new file mode 100644 index 0000000..38a6003 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateElement.java @@ -0,0 +1,155 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.io.Serializable; +import java.util.Random; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRTemplateElement implements JRCommonElement, Serializable, JRPropertiesHolder { + private static final long serialVersionUID = 10200L; + + private static final Random randomId = new Random(); + + private String key; + + private Byte mode = null; + + private Color forecolor = null; + + private Color backcolor = null; + + protected JROrigin origin = null; + + protected JRDefaultStyleProvider defaultStyleProvider; + + protected JRStyle parentStyle = null; + + private final String id; + + private JRPropertiesMap propertiesMap; + + protected JRTemplateElement(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider) { + this.origin = origin; + this.defaultStyleProvider = defaultStyleProvider; + this.id = createId(); + } + + protected JRTemplateElement(JROrigin origin, JRElement element) { + this.origin = origin; + setElement(element); + this.id = createId(); + } + + protected JRTemplateElement(String id) { + this.id = id; + } + + private String createId() { + return System.identityHashCode(this) + "_" + System.currentTimeMillis() + "_" + randomId.nextInt(); + } + + protected void setElement(JRElement element) { + this.parentStyle = element.getStyle(); + setKey(element.getKey()); + this.mode = element.getOwnMode(); + this.forecolor = element.getOwnForecolor(); + this.backcolor = element.getOwnBackcolor(); + } + + public JROrigin getOrigin() { + return this.origin; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.defaultStyleProvider; + } + + public JRStyle getStyle() { + return this.parentStyle; + } + + protected JRStyle getBaseStyle() { + if (this.parentStyle != null) + return this.parentStyle; + if (this.defaultStyleProvider != null) + return this.defaultStyleProvider.getDefaultStyle(); + return null; + } + + public byte getMode() { + return JRStyleResolver.getMode(this, (byte)1); + } + + public Byte getOwnMode() { + return this.mode; + } + + protected void setMode(byte mode) { + this.mode = new Byte(mode); + } + + protected void setMode(Byte mode) { + this.mode = mode; + } + + public Color getForecolor() { + return JRStyleResolver.getForecolor(this); + } + + public Color getOwnForecolor() { + return this.forecolor; + } + + protected void setForecolor(Color forecolor) { + this.forecolor = forecolor; + } + + public Color getBackcolor() { + return JRStyleResolver.getBackcolor(this); + } + + public Color getOwnBackcolor() { + return this.backcolor; + } + + protected void setBackcolor(Color backcolor) { + this.backcolor = backcolor; + } + + public String getId() { + return this.id; + } + + public String getKey() { + return this.key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getStyleNameReference() { + return null; + } + + public synchronized boolean hasProperties() { + return (this.propertiesMap != null && this.propertiesMap.hasProperties()); + } + + public synchronized JRPropertiesMap getPropertiesMap() { + if (this.propertiesMap == null) + this.propertiesMap = new JRPropertiesMap(); + return this.propertiesMap; + } + + public JRPropertiesHolder getParentProperties() { + return null; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateEllipse.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateEllipse.java new file mode 100644 index 0000000..2e54c65 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateEllipse.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JROrigin; + +public class JRTemplateEllipse extends JRTemplateGraphicElement { + private static final long serialVersionUID = 10200L; + + protected JRTemplateEllipse(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JREllipse ellipse) { + super(origin, defaultStyleProvider); + setEllipse(ellipse); + } + + protected void setEllipse(JREllipse ellipse) { + setGraphicElement((JRGraphicElement)ellipse); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateFrame.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateFrame.java new file mode 100644 index 0000000..e254315 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateFrame.java @@ -0,0 +1,361 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRTemplateFrame extends JRTemplateElement implements JRBox, JRBoxContainer { + private static final long serialVersionUID = 10200L; + + protected JRLineBox lineBox; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + public JRTemplateFrame(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRFillCellContents cell) { + super(origin, defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.parentStyle = cell.getStyle(); + setBackcolor(cell.getBackcolor()); + setMode(cell.getMode()); + copyBox(cell.getLineBox()); + } + + public JRTemplateFrame(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRFillFrame frame) { + super(origin, defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + setElement(frame); + copyBox(frame.getLineBox()); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, this.lineBox); + } + + public void copyBox(JRLineBox lineBox) { + this.lineBox = lineBox.clone(this); + } + + public byte getMode() { + return JRStyleResolver.getMode(this, (byte)2); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox(this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateGraphicElement.java new file mode 100644 index 0000000..f419887 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateGraphicElement.java @@ -0,0 +1,93 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRCommonGraphicElement; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.base.JRBasePen; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public abstract class JRTemplateGraphicElement extends JRTemplateElement implements JRCommonGraphicElement { + private static final long serialVersionUID = 10200L; + + protected JRPen linePen = null; + + private Byte fill = null; + + private Byte pen; + + protected JRTemplateGraphicElement(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider) { + super(origin, defaultStyleProvider); + } + + protected JRTemplateGraphicElement(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRGraphicElement graphicElement) { + super(origin, defaultStyleProvider); + setGraphicElement(graphicElement); + } + + protected void setGraphicElement(JRGraphicElement graphicElement) { + setElement((JRElement)graphicElement); + this.linePen = graphicElement.getLinePen().clone((JRPenContainer)this); + setFill(graphicElement.getOwnFill()); + } + + public JRPen getLinePen() { + return this.linePen; + } + + public byte getPen() { + return JRPenUtil.getPenFromLinePen(this.linePen); + } + + public Byte getOwnPen() { + return JRPenUtil.getOwnPenFromLinePen(this.linePen); + } + + public void setPen(byte pen) { + setPen(new Byte(pen)); + } + + public void setPen(Byte pen) { + JRPenUtil.setLinePenFromPen(pen, this.linePen); + } + + public byte getFill() { + return JRStyleResolver.getFill(this); + } + + public Byte getOwnFill() { + return this.fill; + } + + protected void setFill(byte fill) { + this.fill = new Byte(fill); + } + + protected void setFill(Byte fill) { + this.fill = fill; + } + + public Float getDefaultLineWidth() { + return JRPen.LINE_WIDTH_1; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.linePen == null) { + this.linePen = (JRPen)new JRBasePen((JRPenContainer)this); + JRPenUtil.setLinePenFromPen(this.pen, this.linePen); + this.pen = null; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateImage.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateImage.java new file mode 100644 index 0000000..5342f8c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateImage.java @@ -0,0 +1,506 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRCommonImage; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.base.JRBasePen; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRTemplateImage extends JRTemplateGraphicElement implements JRAlignment, JRBox, JRCommonImage { + private static final long serialVersionUID = 10200L; + + private Byte scaleImage = null; + + private Boolean isUsingCache = Boolean.TRUE; + + private Byte horizontalAlignment = null; + + private Byte verticalAlignment = null; + + protected boolean isLazy = false; + + private byte onErrorType = 1; + + private byte hyperlinkType = 0; + + private String linkType; + + private byte hyperlinkTarget = 1; + + private JRLineBox lineBox = null; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + protected JRTemplateImage(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRImage image) { + super(origin, defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + setImage(image); + } + + protected JRTemplateImage(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRChart chart) { + super(origin, defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + setChart(chart); + } + + protected void setImage(JRImage image) { + setGraphicElement((JRGraphicElement)image); + this.lineBox = image.getLineBox().clone((JRBoxContainer)this); + setScaleImage(image.getScaleImage()); + setUsingCache(image.isUsingCache()); + setHorizontalAlignment(image.getHorizontalAlignment()); + setVerticalAlignment(image.getVerticalAlignment()); + setLazy(image.isLazy()); + setOnErrorType(image.getOnErrorType()); + setLinkType(image.getLinkType()); + setHyperlinkTarget(image.getHyperlinkTarget()); + } + + protected void setChart(JRChart chart) { + setElement((JRElement)chart); + this.linePen = (JRPen)new JRBasePen((JRPenContainer)this); + getLinePen().setLineWidth(0.0F); + setFill((byte)1); + this.lineBox = chart.getLineBox().clone((JRBoxContainer)this); + setLinkType(chart.getLinkType()); + setHyperlinkTarget(chart.getHyperlinkTarget()); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, this.lineBox); + } + + public byte getMode() { + return JRStyleResolver.getMode(this, (byte)2); + } + + public byte getScaleImage() { + return JRStyleResolver.getScaleImage(this); + } + + public Byte getOwnScaleImage() { + return this.scaleImage; + } + + protected void setScaleImage(byte scaleImage) { + this.scaleImage = new Byte(scaleImage); + } + + protected void setScaleImage(Byte scaleImage) { + this.scaleImage = scaleImage; + } + + public boolean isUsingCache() { + return (this.isUsingCache == null) ? true : this.isUsingCache.booleanValue(); + } + + public void setUsingCache(boolean isUsingCache) { + this.isUsingCache = isUsingCache ? Boolean.TRUE : Boolean.FALSE; + } + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment(this); + } + + public Byte getOwnHorizontalAlignment() { + return this.horizontalAlignment; + } + + public void setHorizontalAlignment(byte horizontalAlignment) { + this.horizontalAlignment = new Byte(horizontalAlignment); + } + + public void setHorizontalAlignment(Byte horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + } + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment(this); + } + + public Byte getOwnVerticalAlignment() { + return this.verticalAlignment; + } + + public void setVerticalAlignment(byte verticalAlignment) { + this.verticalAlignment = new Byte(verticalAlignment); + } + + public void setVerticalAlignment(Byte verticalAlignment) { + this.verticalAlignment = verticalAlignment; + } + + public boolean isLazy() { + return this.isLazy; + } + + public void setLazy(boolean isLazy) { + this.isLazy = isLazy; + } + + public byte getOnErrorType() { + return this.onErrorType; + } + + public void setOnErrorType(byte onErrorType) { + this.onErrorType = onErrorType; + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType(getLinkType()); + } + + protected void setHyperlinkType(byte hyperlinkType) { + setLinkType(JRHyperlinkHelper.getLinkType(hyperlinkType)); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + protected void setHyperlinkTarget(byte hyperlinkTarget) { + this.hyperlinkTarget = hyperlinkTarget; + } + + public String getLinkType() { + return this.linkType; + } + + public void setLinkType(String linkType) { + this.linkType = linkType; + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public Float getDefaultLineWidth() { + return JRPen.LINE_WIDTH_0; + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + normalizeLinkType(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateLine.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateLine.java new file mode 100644 index 0000000..50966e4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateLine.java @@ -0,0 +1,30 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JROrigin; + +public class JRTemplateLine extends JRTemplateGraphicElement { + private static final long serialVersionUID = 10200L; + + private byte direction = 1; + + protected JRTemplateLine(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRLine line) { + super(origin, defaultStyleProvider); + setLine(line); + } + + protected void setLine(JRLine line) { + setGraphicElement((JRGraphicElement)line); + setDirection(line.getDirection()); + } + + public byte getDirection() { + return this.direction; + } + + protected void setDirection(byte direction) { + this.direction = direction; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintElement.java new file mode 100644 index 0000000..89b880c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintElement.java @@ -0,0 +1,159 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRStyle; + +public class JRTemplatePrintElement implements JRPrintElement, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRTemplateElement template = null; + + private int x = 0; + + private int y = 0; + + private int height = 0; + + private int width = 0; + + private JRPropertiesMap properties; + + protected JRTemplatePrintElement(JRTemplateElement element) { + this.template = element; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.template.getDefaultStyleProvider(); + } + + public JROrigin getOrigin() { + return this.template.getOrigin(); + } + + public JRStyle getStyle() { + return this.template.getStyle(); + } + + public void setStyle(JRStyle style) {} + + public byte getMode() { + return this.template.getMode(); + } + + public Byte getOwnMode() { + return this.template.getOwnMode(); + } + + public void setMode(byte mode) {} + + public void setMode(Byte mode) {} + + public int getX() { + return this.x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return this.y; + } + + public void setY(int y) { + this.y = y; + } + + public int getWidth() { + return this.width; + } + + public void setWidth(int width) { + this.width = width; + } + + public int getHeight() { + return this.height; + } + + public void setHeight(int height) { + this.height = height; + } + + public Color getForecolor() { + return this.template.getForecolor(); + } + + public Color getOwnForecolor() { + return this.template.getOwnForecolor(); + } + + public void setForecolor(Color color) {} + + public Color getBackcolor() { + return this.template.getBackcolor(); + } + + public Color getOwnBackcolor() { + return this.template.getOwnBackcolor(); + } + + public void setBackcolor(Color color) {} + + public JRTemplateElement getTemplate() { + return this.template; + } + + public void setTemplate(JRTemplateElement template) { + this.template = template; + if (this.properties != null) + if (this.template != null && this.template.hasProperties()) { + this.properties.setBaseProperties(this.template.getPropertiesMap()); + } else { + this.properties.setBaseProperties(null); + } + } + + public String getKey() { + return this.template.getKey(); + } + + public String getStyleNameReference() { + return null; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public synchronized boolean hasProperties() { + return ((this.properties != null && this.properties.hasProperties()) || this.template.hasProperties()); + } + + public synchronized JRPropertiesMap getPropertiesMap() { + if (this.properties == null) { + this.properties = new JRPropertiesMap(); + if (this.template.hasProperties()) + this.properties.setBaseProperties(this.template.getPropertiesMap()); + } + return this.properties; + } + + public JRPropertiesHolder getParentProperties() { + return null; + } + + private synchronized void writeObject(ObjectOutputStream out) throws IOException { + if (this.properties != null && !this.properties.hasOwnProperties()) + this.properties = null; + out.defaultWriteObject(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintEllipse.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintEllipse.java new file mode 100644 index 0000000..3c13b9b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintEllipse.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRPrintEllipse; + +public class JRTemplatePrintEllipse extends JRTemplatePrintGraphicElement implements JRPrintEllipse { + private static final long serialVersionUID = 10200L; + + public JRTemplatePrintEllipse(JRTemplateEllipse ellipse) { + super(ellipse); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintFrame.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintFrame.java new file mode 100644 index 0000000..50d2b63 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintFrame.java @@ -0,0 +1,262 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRPrintElementContainer; +import net.sf.jasperreports.engine.JRPrintFrame; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRTemplatePrintFrame extends JRTemplatePrintElement implements JRPrintFrame, JRPrintElementContainer { + private static final long serialVersionUID = 10200L; + + private List elements; + + protected JRTemplatePrintFrame(JRTemplateFrame templateFrame) { + super(templateFrame); + this.elements = new ArrayList(); + } + + public List getElements() { + return this.elements; + } + + public void addElement(JRPrintElement element) { + this.elements.add(element); + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return ((JRTemplateFrame)this.template).getLineBox(); + } + + public byte getBorder() { + return getBox().getBorder(); + } + + public Byte getOwnBorder() { + return getBox().getOwnBorder(); + } + + public void setBorder(byte border) { + getBox().setBorder(border); + } + + public void setBorder(Byte border) { + getBox().setBorder(border); + } + + public Color getBorderColor() { + return getBox().getBorderColor(); + } + + public Color getOwnBorderColor() { + return getBox().getOwnBorderColor(); + } + + public void setBorderColor(Color borderColor) { + getBox().setBorderColor(borderColor); + } + + public int getPadding() { + return getBox().getPadding(); + } + + public Integer getOwnPadding() { + return getBox().getOwnPadding(); + } + + public void setPadding(int padding) { + getBox().setPadding(padding); + } + + public void setPadding(Integer padding) { + getBox().setPadding(padding); + } + + public byte getTopBorder() { + return getBox().getTopBorder(); + } + + public Byte getOwnTopBorder() { + return getBox().getOwnTopBorder(); + } + + public void setTopBorder(byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public void setTopBorder(Byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public Color getTopBorderColor() { + return getBox().getTopBorderColor(); + } + + public Color getOwnTopBorderColor() { + return getBox().getOwnTopBorderColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + getBox().setTopBorderColor(topBorderColor); + } + + public int getTopPadding() { + return getBox().getTopPadding(); + } + + public Integer getOwnTopPadding() { + return getBox().getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + getBox().setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + getBox().setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return getBox().getLeftBorder(); + } + + public Byte getOwnLeftBorder() { + return getBox().getOwnLeftBorder(); + } + + public void setLeftBorder(byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public void setLeftBorder(Byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public Color getLeftBorderColor() { + return getBox().getLeftBorderColor(); + } + + public Color getOwnLeftBorderColor() { + return getBox().getOwnLeftBorderColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + getBox().setLeftBorderColor(leftBorderColor); + } + + public int getLeftPadding() { + return getBox().getLeftPadding(); + } + + public Integer getOwnLeftPadding() { + return getBox().getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return getBox().getBottomBorder(); + } + + public Byte getOwnBottomBorder() { + return getBox().getOwnBottomBorder(); + } + + public void setBottomBorder(byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public void setBottomBorder(Byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public Color getBottomBorderColor() { + return getBox().getBottomBorderColor(); + } + + public Color getOwnBottomBorderColor() { + return getBox().getOwnBottomBorderColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + getBox().setBottomBorderColor(bottomBorderColor); + } + + public int getBottomPadding() { + return getBox().getBottomPadding(); + } + + public Integer getOwnBottomPadding() { + return getBox().getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return getBox().getRightBorder(); + } + + public Byte getOwnRightBorder() { + return getBox().getOwnRightBorder(); + } + + public void setRightBorder(byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public void setRightBorder(Byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public Color getRightBorderColor() { + return getBox().getRightBorderColor(); + } + + public Color getOwnRightBorderColor() { + return getBox().getOwnRightBorderColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + getBox().setRightBorderColor(rightBorderColor); + } + + public int getRightPadding() { + return getBox().getRightPadding(); + } + + public Integer getOwnRightPadding() { + return getBox().getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public Color getDefaultLineColor() { + return getForecolor(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintGraphicElement.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintGraphicElement.java new file mode 100644 index 0000000..6b28195 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintGraphicElement.java @@ -0,0 +1,54 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPrintGraphicElement; +import net.sf.jasperreports.engine.util.JRPenUtil; + +public class JRTemplatePrintGraphicElement extends JRTemplatePrintElement implements JRPrintGraphicElement { + private static final long serialVersionUID = 10200L; + + protected JRTemplatePrintGraphicElement(JRTemplateGraphicElement graphicElement) { + super(graphicElement); + } + + public JRPen getLinePen() { + return ((JRTemplateGraphicElement)this.template).getLinePen(); + } + + public byte getPen() { + return JRPenUtil.getPenFromLinePen(getLinePen()); + } + + public Byte getOwnPen() { + return JRPenUtil.getOwnPenFromLinePen(getLinePen()); + } + + public void setPen(byte pen) { + setPen(new Byte(pen)); + } + + public void setPen(Byte pen) { + JRPenUtil.setLinePenFromPen(pen, getLinePen()); + } + + public byte getFill() { + return ((JRTemplateGraphicElement)this.template).getFill(); + } + + public Byte getOwnFill() { + return ((JRTemplateGraphicElement)this.template).getOwnFill(); + } + + public void setFill(byte fill) {} + + public void setFill(Byte fill) {} + + public Float getDefaultLineWidth() { + return ((JRTemplateGraphicElement)this.template).getDefaultLineWidth(); + } + + public Color getDefaultLineColor() { + return ((JRTemplateGraphicElement)this.template).getDefaultLineColor(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintImage.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintImage.java new file mode 100644 index 0000000..6ace5eb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintImage.java @@ -0,0 +1,402 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameters; +import net.sf.jasperreports.engine.JRPrintImage; +import net.sf.jasperreports.engine.JRRenderable; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRTemplatePrintImage extends JRTemplatePrintGraphicElement implements JRPrintImage { + private static final long serialVersionUID = 10200L; + + private JRRenderable renderer = null; + + private String anchorName = null; + + private String hyperlinkReference = null; + + private String hyperlinkAnchor = null; + + private Integer hyperlinkPage = null; + + private String hyperlinkTooltip; + + private JRPrintHyperlinkParameters hyperlinkParameters; + + protected int bookmarkLevel = 0; + + public JRTemplatePrintImage(JRTemplateImage image) { + super(image); + } + + public JRRenderable getRenderer() { + return this.renderer; + } + + public void setRenderer(JRRenderable renderer) { + this.renderer = renderer; + } + + public byte getScaleImage() { + return ((JRTemplateImage)this.template).getScaleImage(); + } + + public Byte getOwnScaleImage() { + return ((JRTemplateImage)this.template).getOwnScaleImage(); + } + + public void setScaleImage(byte scaleImage) {} + + public void setScaleImage(Byte scaleImage) {} + + public boolean isUsingCache() { + return ((JRTemplateImage)this.template).isUsingCache(); + } + + public void setUsingCache(boolean isUsingCache) {} + + public byte getHorizontalAlignment() { + return ((JRTemplateImage)this.template).getHorizontalAlignment(); + } + + public Byte getOwnHorizontalAlignment() { + return ((JRTemplateImage)this.template).getOwnHorizontalAlignment(); + } + + public void setHorizontalAlignment(byte horizontalAlignment) {} + + public void setHorizontalAlignment(Byte horizontalAlignment) {} + + public byte getVerticalAlignment() { + return ((JRTemplateImage)this.template).getVerticalAlignment(); + } + + public Byte getOwnVerticalAlignment() { + return ((JRTemplateImage)this.template).getOwnVerticalAlignment(); + } + + public void setVerticalAlignment(byte verticalAlignment) {} + + public void setVerticalAlignment(Byte verticalAlignment) {} + + public boolean isLazy() { + return ((JRTemplateImage)this.template).isLazy(); + } + + public void setLazy(boolean isLazy) {} + + public byte getOnErrorType() { + return ((JRTemplateImage)this.template).getOnErrorType(); + } + + public void setOnErrorType(byte onErrorType) {} + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return ((JRTemplateImage)this.template).getLineBox(); + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, getLineBox()); + } + + public String getAnchorName() { + return this.anchorName; + } + + public void setAnchorName(String anchorName) { + this.anchorName = anchorName; + } + + public byte getHyperlinkType() { + return ((JRTemplateImage)this.template).getHyperlinkType(); + } + + public void setHyperlinkType(byte hyperlinkType) {} + + public byte getHyperlinkTarget() { + return ((JRTemplateImage)this.template).getHyperlinkTarget(); + } + + public void setHyperlinkTarget(byte hyperlinkTarget) {} + + public String getHyperlinkReference() { + return this.hyperlinkReference; + } + + public void setHyperlinkReference(String hyperlinkReference) { + this.hyperlinkReference = hyperlinkReference; + } + + public String getHyperlinkAnchor() { + return this.hyperlinkAnchor; + } + + public void setHyperlinkAnchor(String hyperlinkAnchor) { + this.hyperlinkAnchor = hyperlinkAnchor; + } + + public Integer getHyperlinkPage() { + return this.hyperlinkPage; + } + + public void setHyperlinkPage(Integer hyperlinkPage) { + this.hyperlinkPage = hyperlinkPage; + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public void setBookmarkLevel(int bookmarkLevel) { + this.bookmarkLevel = bookmarkLevel; + } + + public byte getBorder() { + return getBox().getBorder(); + } + + public Byte getOwnBorder() { + return getBox().getOwnBorder(); + } + + public void setBorder(byte border) { + getBox().setBorder(border); + } + + public void setBorder(Byte border) { + getBox().setBorder(border); + } + + public Color getBorderColor() { + return getBox().getBorderColor(); + } + + public Color getOwnBorderColor() { + return getBox().getOwnBorderColor(); + } + + public void setBorderColor(Color borderColor) { + getBox().setBorderColor(borderColor); + } + + public int getPadding() { + return getBox().getPadding(); + } + + public Integer getOwnPadding() { + return getBox().getOwnPadding(); + } + + public void setPadding(int padding) { + getBox().setPadding(padding); + } + + public void setPadding(Integer padding) { + getBox().setPadding(padding); + } + + public byte getTopBorder() { + return getBox().getTopBorder(); + } + + public Byte getOwnTopBorder() { + return getBox().getOwnTopBorder(); + } + + public void setTopBorder(byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public void setTopBorder(Byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public Color getTopBorderColor() { + return getBox().getTopBorderColor(); + } + + public Color getOwnTopBorderColor() { + return getBox().getOwnTopBorderColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + getBox().setTopBorderColor(topBorderColor); + } + + public int getTopPadding() { + return getBox().getTopPadding(); + } + + public Integer getOwnTopPadding() { + return getBox().getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + getBox().setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + getBox().setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return getBox().getLeftBorder(); + } + + public Byte getOwnLeftBorder() { + return getBox().getOwnLeftBorder(); + } + + public void setLeftBorder(byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public void setLeftBorder(Byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public Color getLeftBorderColor() { + return getBox().getLeftBorderColor(); + } + + public Color getOwnLeftBorderColor() { + return getBox().getOwnLeftBorderColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + getBox().setLeftBorderColor(leftBorderColor); + } + + public int getLeftPadding() { + return getBox().getLeftPadding(); + } + + public Integer getOwnLeftPadding() { + return getBox().getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return getBox().getBottomBorder(); + } + + public Byte getOwnBottomBorder() { + return getBox().getOwnBottomBorder(); + } + + public void setBottomBorder(byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public void setBottomBorder(Byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public Color getBottomBorderColor() { + return getBox().getBottomBorderColor(); + } + + public Color getOwnBottomBorderColor() { + return getBox().getOwnBottomBorderColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + getBox().setBottomBorderColor(bottomBorderColor); + } + + public int getBottomPadding() { + return getBox().getBottomPadding(); + } + + public Integer getOwnBottomPadding() { + return getBox().getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return getBox().getRightBorder(); + } + + public Byte getOwnRightBorder() { + return getBox().getOwnRightBorder(); + } + + public void setRightBorder(byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public void setRightBorder(Byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public Color getRightBorderColor() { + return getBox().getRightBorderColor(); + } + + public Color getOwnRightBorderColor() { + return getBox().getOwnRightBorderColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + getBox().setRightBorderColor(rightBorderColor); + } + + public int getRightPadding() { + return getBox().getRightPadding(); + } + + public Integer getOwnRightPadding() { + return getBox().getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public JRPrintHyperlinkParameters getHyperlinkParameters() { + return this.hyperlinkParameters; + } + + public void setHyperlinkParameters(JRPrintHyperlinkParameters parameters) { + this.hyperlinkParameters = parameters; + } + + public String getLinkType() { + return ((JRTemplateImage)this.template).getLinkType(); + } + + public void setLinkType(String type) {} + + public String getHyperlinkTooltip() { + return this.hyperlinkTooltip; + } + + public void setHyperlinkTooltip(String hyperlinkTooltip) { + this.hyperlinkTooltip = hyperlinkTooltip; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintLine.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintLine.java new file mode 100644 index 0000000..1fa0649 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintLine.java @@ -0,0 +1,17 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRPrintLine; + +public class JRTemplatePrintLine extends JRTemplatePrintGraphicElement implements JRPrintLine { + private static final long serialVersionUID = 10200L; + + public JRTemplatePrintLine(JRTemplateLine line) { + super(line); + } + + public byte getDirection() { + return ((JRTemplateLine)this.template).getDirection(); + } + + public void setDirection(byte direction) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintRectangle.java new file mode 100644 index 0000000..bf43ea0 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintRectangle.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRPrintRectangle; + +public class JRTemplatePrintRectangle extends JRTemplatePrintGraphicElement implements JRPrintRectangle { + private static final long serialVersionUID = 10200L; + + public JRTemplatePrintRectangle(JRTemplateRectangle rectangle) { + super(rectangle); + } + + public int getRadius() { + return ((JRTemplateRectangle)this.template).getRadius(); + } + + public Integer getOwnRadius() { + return ((JRTemplateRectangle)this.template).getOwnRadius(); + } + + public void setRadius(int radius) {} + + public void setRadius(Integer radius) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintText.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintText.java new file mode 100644 index 0000000..ea3c1e6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplatePrintText.java @@ -0,0 +1,676 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPrintHyperlinkParameters; +import net.sf.jasperreports.engine.JRPrintText; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRStyledTextAttributeSelector; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRStyledText; +import net.sf.jasperreports.engine.util.JRStyledTextParser; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRTemplatePrintText extends JRTemplatePrintElement implements JRPrintText { + private static final long serialVersionUID = 10200L; + + private String text = ""; + + private Integer textTruncateIndex; + + private String textTruncateSuffix; + + private transient String truncatedText; + + private float lineSpacingFactor = 0.0F; + + private float leadingOffset = 0.0F; + + private byte runDirection = 0; + + private float textHeight = 0.0F; + + private String anchorName = null; + + private String hyperlinkReference = null; + + private String hyperlinkAnchor = null; + + private Integer hyperlinkPage = null; + + private String hyperlinkTooltip; + + private JRPrintHyperlinkParameters hyperlinkParameters; + + protected int bookmarkLevel = 0; + + public JRTemplatePrintText(JRTemplateText text) { + super(text); + } + + public String getText() { + if (this.truncatedText == null && this.text != null) { + if (getTextTruncateIndex() == null) { + this.truncatedText = this.text; + } else if (!"none".equals(getMarkup())) { + this.truncatedText = JRStyledTextParser.getInstance().write(getFullStyledText(JRStyledTextAttributeSelector.ALL), 0, getTextTruncateIndex().intValue()); + } else { + this.truncatedText = this.text.substring(0, getTextTruncateIndex().intValue()); + } + if (this.textTruncateSuffix != null) + this.truncatedText += this.textTruncateSuffix; + } + return this.truncatedText; + } + + public void setText(String text) { + this.text = text; + this.truncatedText = null; + } + + public Integer getTextTruncateIndex() { + return this.textTruncateIndex; + } + + public void setTextTruncateIndex(Integer textTruncateIndex) { + this.textTruncateIndex = textTruncateIndex; + this.truncatedText = null; + } + + public String getTextTruncateSuffix() { + return this.textTruncateSuffix; + } + + public void setTextTruncateSuffix(String textTruncateSuffix) { + this.textTruncateSuffix = textTruncateSuffix; + this.truncatedText = null; + } + + public String getFullText() { + String fullText = this.text; + if (this.textTruncateIndex == null && this.textTruncateSuffix != null) + fullText = fullText + this.textTruncateSuffix; + return fullText; + } + + public String getOriginalText() { + return this.text; + } + + public JRStyledText getStyledText(JRStyledTextAttributeSelector attributeSelector) { + if (getText() == null) + return null; + return JRStyledTextParser.getInstance().getStyledText(attributeSelector.getStyledTextAttributes(this), getText(), !"none".equals(getMarkup())); + } + + public JRStyledText getFullStyledText(JRStyledTextAttributeSelector attributeSelector) { + if (getFullText() == null) + return null; + return JRStyledTextParser.getInstance().getStyledText(attributeSelector.getStyledTextAttributes(this), getFullText(), !"none".equals(getMarkup())); + } + + public float getLineSpacingFactor() { + return this.lineSpacingFactor; + } + + public void setLineSpacingFactor(float lineSpacingFactor) { + this.lineSpacingFactor = lineSpacingFactor; + } + + public float getLeadingOffset() { + return this.leadingOffset; + } + + public void setLeadingOffset(float leadingOffset) { + this.leadingOffset = leadingOffset; + } + + public byte getTextAlignment() { + return getHorizontalAlignment(); + } + + public void setTextAlignment(byte horizontalAlignment) {} + + public byte getHorizontalAlignment() { + return ((JRTemplateText)this.template).getHorizontalAlignment(); + } + + public Byte getOwnHorizontalAlignment() { + return ((JRTemplateText)this.template).getOwnHorizontalAlignment(); + } + + public void setHorizontalAlignment(byte horizontalAlignment) {} + + public void setHorizontalAlignment(Byte horizontalAlignment) {} + + public byte getVerticalAlignment() { + return ((JRTemplateText)this.template).getVerticalAlignment(); + } + + public Byte getOwnVerticalAlignment() { + return ((JRTemplateText)this.template).getOwnVerticalAlignment(); + } + + public void setVerticalAlignment(byte verticalAlignment) {} + + public void setVerticalAlignment(Byte verticalAlignment) {} + + public byte getRotation() { + return ((JRTemplateText)this.template).getRotation(); + } + + public Byte getOwnRotation() { + return ((JRTemplateText)this.template).getOwnRotation(); + } + + public void setRotation(byte rotation) {} + + public void setRotation(Byte rotation) {} + + public byte getRunDirection() { + return this.runDirection; + } + + public void setRunDirection(byte runDirection) { + this.runDirection = runDirection; + } + + public float getTextHeight() { + return this.textHeight; + } + + public void setTextHeight(float textHeight) { + this.textHeight = textHeight; + } + + public byte getLineSpacing() { + return ((JRTemplateText)this.template).getLineSpacing(); + } + + public Byte getOwnLineSpacing() { + return ((JRTemplateText)this.template).getOwnLineSpacing(); + } + + public void setLineSpacing(byte lineSpacing) {} + + public void setLineSpacing(Byte lineSpacing) {} + + public boolean isStyledText() { + return "styled".equals(getMarkup()); + } + + public Boolean isOwnStyledText() { + String mkp = getOwnMarkup(); + return "styled".equals(mkp) ? Boolean.TRUE : ((mkp == null) ? null : Boolean.FALSE); + } + + public void setStyledText(boolean isStyledText) {} + + public void setStyledText(Boolean isStyledText) {} + + public String getMarkup() { + return ((JRTemplateText)this.template).getMarkup(); + } + + public String getOwnMarkup() { + return ((JRTemplateText)this.template).getOwnMarkup(); + } + + public void setMarkup(String markup) {} + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return ((JRTemplateText)this.template).getLineBox(); + } + + public void setBox(JRBox box) { + JRBoxUtil.setBoxToLineBox(box, getLineBox()); + } + + public JRFont getFont() { + return (JRTemplateText)this.template; + } + + public void setFont(JRFont font) {} + + public String getAnchorName() { + return this.anchorName; + } + + public void setAnchorName(String anchorName) { + this.anchorName = anchorName; + } + + public byte getHyperlinkType() { + return ((JRTemplateText)this.template).getHyperlinkType(); + } + + public void setHyperlinkType(byte hyperlinkType) {} + + public byte getHyperlinkTarget() { + return ((JRTemplateText)this.template).getHyperlinkTarget(); + } + + public void setHyperlinkTarget(byte hyperlinkTarget) {} + + public String getHyperlinkReference() { + return this.hyperlinkReference; + } + + public void setHyperlinkReference(String hyperlinkReference) { + this.hyperlinkReference = hyperlinkReference; + } + + public String getHyperlinkAnchor() { + return this.hyperlinkAnchor; + } + + public void setHyperlinkAnchor(String hyperlinkAnchor) { + this.hyperlinkAnchor = hyperlinkAnchor; + } + + public Integer getHyperlinkPage() { + return this.hyperlinkPage; + } + + public void setHyperlinkPage(Integer hyperlinkPage) { + this.hyperlinkPage = hyperlinkPage; + } + + public int getBookmarkLevel() { + return this.bookmarkLevel; + } + + public void setBookmarkLevel(int bookmarkLevel) { + this.bookmarkLevel = bookmarkLevel; + } + + public byte getBorder() { + return getBox().getBorder(); + } + + public Byte getOwnBorder() { + return getBox().getOwnBorder(); + } + + public void setBorder(byte border) { + getBox().setBorder(border); + } + + public void setBorder(Byte border) { + getBox().setBorder(border); + } + + public Color getBorderColor() { + return getBox().getBorderColor(); + } + + public Color getOwnBorderColor() { + return getBox().getOwnBorderColor(); + } + + public void setBorderColor(Color borderColor) { + getBox().setBorderColor(borderColor); + } + + public int getPadding() { + return getBox().getPadding(); + } + + public Integer getOwnPadding() { + return getBox().getOwnPadding(); + } + + public void setPadding(int padding) { + getBox().setPadding(padding); + } + + public void setPadding(Integer padding) { + getBox().setPadding(padding); + } + + public byte getTopBorder() { + return getBox().getTopBorder(); + } + + public Byte getOwnTopBorder() { + return getBox().getOwnTopBorder(); + } + + public void setTopBorder(byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public void setTopBorder(Byte topBorder) { + getBox().setTopBorder(topBorder); + } + + public Color getTopBorderColor() { + return getBox().getTopBorderColor(); + } + + public Color getOwnTopBorderColor() { + return getBox().getOwnTopBorderColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + getBox().setTopBorderColor(topBorderColor); + } + + public int getTopPadding() { + return getBox().getTopPadding(); + } + + public Integer getOwnTopPadding() { + return getBox().getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + getBox().setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + getBox().setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return getBox().getLeftBorder(); + } + + public Byte getOwnLeftBorder() { + return getBox().getOwnLeftBorder(); + } + + public void setLeftBorder(byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public void setLeftBorder(Byte leftBorder) { + getBox().setLeftBorder(leftBorder); + } + + public Color getLeftBorderColor() { + return getBox().getLeftBorderColor(); + } + + public Color getOwnLeftBorderColor() { + return getBox().getOwnLeftBorderColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + getBox().setLeftBorderColor(leftBorderColor); + } + + public int getLeftPadding() { + return getBox().getLeftPadding(); + } + + public Integer getOwnLeftPadding() { + return getBox().getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + getBox().setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return getBox().getBottomBorder(); + } + + public Byte getOwnBottomBorder() { + return getBox().getOwnBottomBorder(); + } + + public void setBottomBorder(byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public void setBottomBorder(Byte bottomBorder) { + getBox().setBottomBorder(bottomBorder); + } + + public Color getBottomBorderColor() { + return getBox().getBottomBorderColor(); + } + + public Color getOwnBottomBorderColor() { + return getBox().getOwnBottomBorderColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + getBox().setBottomBorderColor(bottomBorderColor); + } + + public int getBottomPadding() { + return getBox().getBottomPadding(); + } + + public Integer getOwnBottomPadding() { + return getBox().getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + getBox().setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return getBox().getRightBorder(); + } + + public Byte getOwnRightBorder() { + return getBox().getOwnRightBorder(); + } + + public void setRightBorder(byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public void setRightBorder(Byte rightBorder) { + getBox().setRightBorder(rightBorder); + } + + public Color getRightBorderColor() { + return getBox().getRightBorderColor(); + } + + public Color getOwnRightBorderColor() { + return getBox().getOwnRightBorderColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + getBox().setRightBorderColor(rightBorderColor); + } + + public int getRightPadding() { + return getBox().getRightPadding(); + } + + public Integer getOwnRightPadding() { + return getBox().getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + getBox().setRightPadding(rightPadding); + } + + public JRReportFont getReportFont() { + return ((JRTemplateText)this.template).getReportFont(); + } + + public void setReportFont(JRReportFont reportFont) {} + + public String getFontName() { + return ((JRTemplateText)this.template).getFontName(); + } + + public String getOwnFontName() { + return ((JRTemplateText)this.template).getOwnFontName(); + } + + public void setFontName(String fontName) {} + + public boolean isBold() { + return ((JRTemplateText)this.template).isBold(); + } + + public Boolean isOwnBold() { + return ((JRTemplateText)this.template).isOwnBold(); + } + + public void setBold(boolean isBold) {} + + public void setBold(Boolean isBold) {} + + public boolean isItalic() { + return ((JRTemplateText)this.template).isItalic(); + } + + public Boolean isOwnItalic() { + return ((JRTemplateText)this.template).isOwnItalic(); + } + + public void setItalic(boolean isItalic) {} + + public void setItalic(Boolean isItalic) {} + + public boolean isUnderline() { + return ((JRTemplateText)this.template).isUnderline(); + } + + public Boolean isOwnUnderline() { + return ((JRTemplateText)this.template).isOwnUnderline(); + } + + public void setUnderline(boolean isUnderline) {} + + public void setUnderline(Boolean isUnderline) {} + + public boolean isStrikeThrough() { + return ((JRTemplateText)this.template).isStrikeThrough(); + } + + public Boolean isOwnStrikeThrough() { + return ((JRTemplateText)this.template).isOwnStrikeThrough(); + } + + public void setStrikeThrough(boolean isStrikeThrough) { + setStrikeThrough(isStrikeThrough ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStrikeThrough(Boolean isStrikeThrough) {} + + public int getFontSize() { + return ((JRTemplateText)this.template).getFontSize(); + } + + public Integer getOwnFontSize() { + return ((JRTemplateText)this.template).getOwnFontSize(); + } + + public void setFontSize(int fontSize) {} + + public void setFontSize(Integer fontSize) {} + + public int getSize() { + return getFontSize(); + } + + public Integer getOwnSize() { + return getOwnFontSize(); + } + + public void setSize(int size) {} + + public void setSize(Integer size) {} + + public String getPdfFontName() { + return ((JRTemplateText)this.template).getPdfFontName(); + } + + public String getOwnPdfFontName() { + return ((JRTemplateText)this.template).getOwnPdfFontName(); + } + + public void setPdfFontName(String pdfFontName) {} + + public String getPdfEncoding() { + return ((JRTemplateText)this.template).getPdfEncoding(); + } + + public String getOwnPdfEncoding() { + return ((JRTemplateText)this.template).getOwnPdfEncoding(); + } + + public void setPdfEncoding(String pdfEncoding) {} + + public boolean isPdfEmbedded() { + return ((JRTemplateText)this.template).isPdfEmbedded(); + } + + public Boolean isOwnPdfEmbedded() { + return ((JRTemplateText)this.template).isOwnPdfEmbedded(); + } + + public void setPdfEmbedded(boolean isPdfEmbedded) {} + + public void setPdfEmbedded(Boolean isPdfEmbedded) {} + + public String getValueClassName() { + return ((JRTemplateText)this.template).getValueClassName(); + } + + public String getPattern() { + return ((JRTemplateText)this.template).getPattern(); + } + + public String getFormatFactoryClass() { + return ((JRTemplateText)this.template).getFormatFactoryClass(); + } + + public String getLocaleCode() { + return ((JRTemplateText)this.template).getLocaleCode(); + } + + public String getTimeZoneId() { + return ((JRTemplateText)this.template).getTimeZoneId(); + } + + public JRPrintHyperlinkParameters getHyperlinkParameters() { + return this.hyperlinkParameters; + } + + public void setHyperlinkParameters(JRPrintHyperlinkParameters hyperlinkParameters) { + this.hyperlinkParameters = hyperlinkParameters; + } + + public String getLinkType() { + return ((JRTemplateText)this.template).getLinkType(); + } + + public void setLinkType(String type) {} + + public String getHyperlinkTooltip() { + return this.hyperlinkTooltip; + } + + public void setHyperlinkTooltip(String hyperlinkTooltip) { + this.hyperlinkTooltip = hyperlinkTooltip; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateRectangle.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateRectangle.java new file mode 100644 index 0000000..74ef617 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateRectangle.java @@ -0,0 +1,58 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRCommonRectangle; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRPenContainer; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.base.JRBasePen; +import net.sf.jasperreports.engine.util.JRStyleResolver; + +public class JRTemplateRectangle extends JRTemplateGraphicElement implements JRCommonRectangle { + private static final long serialVersionUID = 10200L; + + private Integer radius = null; + + protected JRTemplateRectangle(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRRectangle rectangle) { + super(origin, defaultStyleProvider); + setRectangle(rectangle); + } + + protected JRTemplateRectangle(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRSubreport subreport) { + super(origin, defaultStyleProvider); + setSubreport(subreport); + } + + protected void setRectangle(JRRectangle rectangle) { + setGraphicElement((JRGraphicElement)rectangle); + setRadius(rectangle.getRadius()); + } + + protected void setSubreport(JRSubreport subreport) { + setElement((JRElement)subreport); + setMode(subreport.getMode()); + this.linePen = (JRPen)new JRBasePen((JRPenContainer)this); + getLinePen().setLineWidth(0.0F); + setFill((byte)1); + } + + public int getRadius() { + return JRStyleResolver.getRadius(this); + } + + public Integer getOwnRadius() { + return this.radius; + } + + protected void setRadius(int radius) { + this.radius = new Integer(radius); + } + + protected void setRadius(Integer radius) { + this.radius = radius; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateText.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateText.java new file mode 100644 index 0000000..a6f467a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTemplateText.java @@ -0,0 +1,756 @@ +package net.sf.jasperreports.engine.fill; + +import java.awt.Color; +import java.io.IOException; +import java.io.ObjectInputStream; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRBoxContainer; +import net.sf.jasperreports.engine.JRCommonText; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRHyperlinkHelper; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JROrigin; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.base.JRBaseLineBox; +import net.sf.jasperreports.engine.util.JRBoxUtil; +import net.sf.jasperreports.engine.util.JRPenUtil; +import net.sf.jasperreports.engine.util.JRStyleResolver; +import net.sf.jasperreports.engine.util.LineBoxWrapper; + +public class JRTemplateText extends JRTemplateElement implements JRAlignment, JRBox, JRFont, JRCommonText { + private static final long serialVersionUID = 10200L; + + private Byte horizontalAlignment = null; + + private Byte verticalAlignment = null; + + private Byte rotation = null; + + private Byte lineSpacing = null; + + private String markup = null; + + private byte hyperlinkType = 0; + + private String linkType; + + private byte hyperlinkTarget = 1; + + protected JRLineBox lineBox; + + protected JRReportFont reportFont = null; + + protected String fontName = null; + + protected Boolean isBold = null; + + protected Boolean isItalic = null; + + protected Boolean isUnderline = null; + + protected Boolean isStrikeThrough = null; + + protected Integer fontSize = null; + + protected String pdfFontName = null; + + protected String pdfEncoding = null; + + protected Boolean isPdfEmbedded = null; + + protected String valueClassName; + + protected String pattern; + + protected String formatFactoryClass; + + protected String localeCode; + + protected String timeZoneId; + + private Byte border; + + private Byte topBorder; + + private Byte leftBorder; + + private Byte bottomBorder; + + private Byte rightBorder; + + private Color borderColor; + + private Color topBorderColor; + + private Color leftBorderColor; + + private Color bottomBorderColor; + + private Color rightBorderColor; + + private Integer padding; + + private Integer topPadding; + + private Integer leftPadding; + + private Integer bottomPadding; + + private Integer rightPadding; + + private Boolean isStyledText; + + protected JRTemplateText(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRStaticText staticText) { + super(origin, defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.isStyledText = null; + setStaticText(staticText); + } + + protected JRTemplateText(JROrigin origin, JRDefaultStyleProvider defaultStyleProvider, JRTextField textField) { + super(origin, defaultStyleProvider); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + this.isStyledText = null; + setTextField(textField); + } + + protected void setStaticText(JRStaticText staticText) { + setTextElement((JRTextElement)staticText); + } + + protected void setTextField(JRTextField textField) { + setTextElement((JRTextElement)textField); + setLinkType(textField.getLinkType()); + this.hyperlinkTarget = textField.getHyperlinkTarget(); + } + + protected void setTextElement(JRTextElement textElement) { + setElement((JRElement)textElement); + this.lineBox = textElement.getLineBox().clone((JRBoxContainer)this); + this.reportFont = textElement.getReportFont(); + this.fontName = textElement.getOwnFontName(); + this.isBold = textElement.isOwnBold(); + this.isItalic = textElement.isOwnItalic(); + this.isUnderline = textElement.isOwnUnderline(); + this.isStrikeThrough = textElement.isOwnStrikeThrough(); + this.fontSize = textElement.getOwnFontSize(); + this.pdfFontName = textElement.getOwnPdfFontName(); + this.pdfEncoding = textElement.getOwnPdfEncoding(); + this.isPdfEmbedded = textElement.isOwnPdfEmbedded(); + this.horizontalAlignment = textElement.getOwnHorizontalAlignment(); + this.verticalAlignment = textElement.getOwnVerticalAlignment(); + this.rotation = textElement.getOwnRotation(); + this.lineSpacing = textElement.getOwnLineSpacing(); + this.markup = textElement.getOwnMarkup(); + } + + protected JRFont getBaseFont() { + if (this.reportFont != null) + return (JRFont)this.reportFont; + if (this.defaultStyleProvider != null) + return (JRFont)this.defaultStyleProvider.getDefaultFont(); + return null; + } + + public int getWidth() { + throw new JRRuntimeException("This method should never be called."); + } + + public int getHeight() { + throw new JRRuntimeException("This method should never be called."); + } + + public byte getMode() { + return JRStyleResolver.getMode(this, (byte)2); + } + + public byte getTextAlignment() { + return getHorizontalAlignment(); + } + + public byte getHorizontalAlignment() { + return JRStyleResolver.getHorizontalAlignment(this); + } + + public Byte getOwnHorizontalAlignment() { + return this.horizontalAlignment; + } + + public void setHorizontalAlignment(byte horizontalAlignment) { + this.horizontalAlignment = new Byte(horizontalAlignment); + } + + public void setHorizontalAlignment(Byte horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + } + + public byte getVerticalAlignment() { + return JRStyleResolver.getVerticalAlignment(this); + } + + public Byte getOwnVerticalAlignment() { + return this.verticalAlignment; + } + + public void setVerticalAlignment(byte verticalAlignment) { + this.verticalAlignment = new Byte(verticalAlignment); + } + + public void setVerticalAlignment(Byte verticalAlignment) { + this.verticalAlignment = verticalAlignment; + } + + public byte getRotation() { + return JRStyleResolver.getRotation(this); + } + + public Byte getOwnRotation() { + return this.rotation; + } + + public byte getLineSpacing() { + return JRStyleResolver.getLineSpacing(this); + } + + public Byte getOwnLineSpacing() { + return this.lineSpacing; + } + + public boolean isStyledText() { + return "styled".equals(getMarkup()); + } + + public Boolean isOwnStyledText() { + String mkp = getOwnMarkup(); + return "styled".equals(mkp) ? Boolean.TRUE : ((mkp == null) ? null : Boolean.FALSE); + } + + public String getMarkup() { + return JRStyleResolver.getMarkup(this); + } + + public String getOwnMarkup() { + return this.markup; + } + + public JRBox getBox() { + return (JRBox)new LineBoxWrapper(getLineBox()); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public JRFont getFont() { + return this; + } + + public byte getHyperlinkType() { + return JRHyperlinkHelper.getHyperlinkType(getLinkType()); + } + + public byte getHyperlinkTarget() { + return this.hyperlinkTarget; + } + + public JRReportFont getReportFont() { + return this.reportFont; + } + + public void setReportFont(JRReportFont reportFont) { + this.reportFont = reportFont; + } + + public String getFontName() { + return JRStyleResolver.getFontName(this); + } + + public String getOwnFontName() { + return this.fontName; + } + + public void setFontName(String fontName) { + this.fontName = fontName; + } + + public boolean isBold() { + return JRStyleResolver.isBold(this); + } + + public Boolean isOwnBold() { + return this.isBold; + } + + public void setBold(boolean isBold) { + setBold(isBold ? Boolean.TRUE : Boolean.FALSE); + } + + public void setBold(Boolean isBold) { + this.isBold = isBold; + } + + public boolean isItalic() { + return JRStyleResolver.isItalic(this); + } + + public Boolean isOwnItalic() { + return this.isItalic; + } + + public void setItalic(boolean isItalic) { + setItalic(isItalic ? Boolean.TRUE : Boolean.FALSE); + } + + public void setItalic(Boolean isItalic) { + this.isItalic = isItalic; + } + + public boolean isUnderline() { + return JRStyleResolver.isUnderline(this); + } + + public Boolean isOwnUnderline() { + return this.isUnderline; + } + + public void setUnderline(boolean isUnderline) { + setUnderline(isUnderline ? Boolean.TRUE : Boolean.FALSE); + } + + public void setUnderline(Boolean isUnderline) { + this.isUnderline = isUnderline; + } + + public boolean isStrikeThrough() { + return JRStyleResolver.isStrikeThrough(this); + } + + public Boolean isOwnStrikeThrough() { + return this.isStrikeThrough; + } + + public void setStrikeThrough(boolean isStrikeThrough) { + setStrikeThrough(isStrikeThrough ? Boolean.TRUE : Boolean.FALSE); + } + + public void setStrikeThrough(Boolean isStrikeThrough) { + this.isStrikeThrough = isStrikeThrough; + } + + public int getFontSize() { + return JRStyleResolver.getFontSize(this); + } + + public Integer getOwnFontSize() { + return this.fontSize; + } + + public void setFontSize(int fontSize) { + setFontSize(new Integer(fontSize)); + } + + public void setFontSize(Integer fontSize) { + this.fontSize = fontSize; + } + + public int getSize() { + return getFontSize(); + } + + public Integer getOwnSize() { + return getOwnFontSize(); + } + + public void setSize(int size) { + setFontSize(size); + } + + public void setSize(Integer size) { + setFontSize(size); + } + + public String getPdfFontName() { + return JRStyleResolver.getPdfFontName(this); + } + + public String getOwnPdfFontName() { + return this.pdfFontName; + } + + public void setPdfFontName(String pdfFontName) { + this.pdfFontName = pdfFontName; + } + + public String getPdfEncoding() { + return JRStyleResolver.getPdfEncoding(this); + } + + public String getOwnPdfEncoding() { + return this.pdfEncoding; + } + + public void setPdfEncoding(String pdfEncoding) { + this.pdfEncoding = pdfEncoding; + } + + public boolean isPdfEmbedded() { + return JRStyleResolver.isPdfEmbedded(this); + } + + public Boolean isOwnPdfEmbedded() { + return this.isPdfEmbedded; + } + + public void setPdfEmbedded(boolean isPdfEmbedded) { + setPdfEmbedded(isPdfEmbedded ? Boolean.TRUE : Boolean.FALSE); + } + + public void setPdfEmbedded(Boolean isPdfEmbedded) { + this.isPdfEmbedded = isPdfEmbedded; + } + + public JRStyle getStyle() { + return this.parentStyle; + } + + public String getPattern() { + return this.pattern; + } + + public void setPattern(String pattern) { + this.pattern = pattern; + } + + public String getValueClassName() { + return this.valueClassName; + } + + public void setValueClassName(String valueClassName) { + this.valueClassName = valueClassName; + } + + public String getFormatFactoryClass() { + return this.formatFactoryClass; + } + + public void setFormatFactoryClass(String formatFactoryClass) { + this.formatFactoryClass = formatFactoryClass; + } + + public String getLocaleCode() { + return this.localeCode; + } + + public void setLocaleCode(String localeCode) { + this.localeCode = localeCode; + } + + public String getTimeZoneId() { + return this.timeZoneId; + } + + public void setTimeZoneId(String timeZoneId) { + this.timeZoneId = timeZoneId; + } + + public String getLinkType() { + return this.linkType; + } + + public void setLinkType(String linkType) { + this.linkType = linkType; + } + + protected void normalizeLinkType() { + if (this.linkType == null) + this.linkType = JRHyperlinkHelper.getLinkType(this.hyperlinkType); + this.hyperlinkType = 0; + } + + public Color getDefaultLineColor() { + return getForecolor(); + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + if (this.lineBox == null) { + this.lineBox = (JRLineBox)new JRBaseLineBox((JRBoxContainer)this); + JRBoxUtil.setToBox(this.border, this.topBorder, this.leftBorder, this.bottomBorder, this.rightBorder, this.borderColor, this.topBorderColor, this.leftBorderColor, this.bottomBorderColor, this.rightBorderColor, this.padding, this.topPadding, this.leftPadding, this.bottomPadding, this.rightPadding, this.lineBox); + this.border = null; + this.topBorder = null; + this.leftBorder = null; + this.bottomBorder = null; + this.rightBorder = null; + this.borderColor = null; + this.topBorderColor = null; + this.leftBorderColor = null; + this.bottomBorderColor = null; + this.rightBorderColor = null; + this.padding = null; + this.topPadding = null; + this.leftPadding = null; + this.bottomPadding = null; + this.rightPadding = null; + } + if (this.isStyledText != null) { + this.markup = this.isStyledText.booleanValue() ? "styled" : "none"; + this.isStyledText = null; + } + normalizeLinkType(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurer.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurer.java new file mode 100644 index 0000000..3714d43 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurer.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.util.JRStyledText; + +public interface JRTextMeasurer { + JRMeasuredText measure(JRStyledText paramJRStyledText, int paramInt1, int paramInt2, boolean paramBoolean); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurerFactory.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurerFactory.java new file mode 100644 index 0000000..7cc13d5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRTextMeasurerFactory.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.fill; + +import net.sf.jasperreports.engine.JRCommonText; + +public interface JRTextMeasurerFactory { + JRTextMeasurer createMeasurer(JRCommonText paramJRCommonText); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRVerticalFiller.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRVerticalFiller.java new file mode 100644 index 0000000..b6cb2a6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRVerticalFiller.java @@ -0,0 +1,816 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.Iterator; +import java.util.List; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRPrintElement; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JasperReport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRVerticalFiller extends JRBaseFiller { + private static final Log log = LogFactory.getLog(JRVerticalFiller.class); + + protected JRVerticalFiller(JasperReport jasperReport) throws JRException { + this(jasperReport, (JREvaluator)null, (JRBaseFiller)null); + } + + protected JRVerticalFiller(JasperReport jasperReport, JRBaseFiller parentFiller) throws JRException { + super(jasperReport, null, parentFiller); + setPageHeight(this.pageHeight); + } + + protected JRVerticalFiller(JasperReport jasperReport, JREvaluator evaluator, JRBaseFiller parentFiller) throws JRException { + super(jasperReport, evaluator, parentFiller); + setPageHeight(this.pageHeight); + } + + protected void setPageHeight(int pageHeight) { + this.pageHeight = pageHeight; + this.columnFooterOffsetY = pageHeight - this.bottomMargin; + if (this.pageFooter != null) + this.columnFooterOffsetY -= this.pageFooter.getHeight(); + if (this.columnFooter != null) + this.columnFooterOffsetY -= this.columnFooter.getHeight(); + this.lastPageColumnFooterOffsetY = pageHeight - this.bottomMargin; + if (this.lastPageFooter != null) + this.lastPageColumnFooterOffsetY -= this.lastPageFooter.getHeight(); + if (this.columnFooter != null) + this.lastPageColumnFooterOffsetY -= this.columnFooter.getHeight(); + } + + protected synchronized void fillReport() throws JRException { + setLastPageFooter(false); + if (next()) { + fillReportStart(); + while (next()) + fillReportContent(); + fillReportEnd(); + } else { + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": no data"); + switch (this.whenNoDataType) { + case 3: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": all sections"); + this.scriptlet.callBeforeReportInit(); + this.calculator.initializeVariables((byte)1); + this.scriptlet.callAfterReportInit(); + this.printPage = newPage(); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + fillBackground(); + fillTitle(); + fillPageHeader((byte)3); + fillColumnHeader((byte)3); + fillGroupHeaders(true); + fillGroupFooters(true); + fillSummary(); + break; + case 2: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": blank page"); + this.printPage = newPage(); + addPage(this.printPage); + break; + case 4: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": all sections"); + this.scriptlet.callBeforeReportInit(); + this.calculator.initializeVariables((byte)1); + this.scriptlet.callAfterReportInit(); + this.printPage = newPage(); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + fillBackground(); + fillNoData(); + break; + default: + if (log.isDebugEnabled()) + log.debug("Fill " + this.fillerId + ": no pages"); + break; + } + } + if (isSubreport()) { + this.printPageStretchHeight = this.offsetY + this.bottomMargin; + if (this.fillContext.isUsingVirtualizer()) + removePageIdentityDataProvider(); + } + if (this.fillContext.isIgnorePagination()) + this.jasperPrint.setPageHeight(this.offsetY + this.bottomMargin); + } + + private void fillReportStart() throws JRException { + this.scriptlet.callBeforeReportInit(); + this.calculator.initializeVariables((byte)1); + this.scriptlet.callAfterReportInit(); + this.printPage = newPage(); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + fillBackground(); + fillTitle(); + fillPageHeader((byte)3); + fillColumnHeader((byte)3); + fillGroupHeaders(true); + fillDetail(); + } + + private void fillReportContent() throws JRException { + this.calculator.estimateGroupRuptures(); + fillGroupFooters(false); + resolveGroupBoundElements((byte)1, false); + this.scriptlet.callBeforeGroupInit(); + this.calculator.initializeVariables((byte)4); + this.scriptlet.callAfterGroupInit(); + fillGroupHeaders(false); + fillDetail(); + } + + private void fillReportEnd() throws JRException { + fillGroupFooters(true); + fillSummary(); + } + + private void fillTitle() throws JRException { + if (log.isDebugEnabled() && !this.title.isEmpty()) + log.debug("Fill " + this.fillerId + ": title"); + this.title.evaluatePrintWhenExpression((byte)3); + if (this.title.isToPrint()) { + while (this.title.getHeight() > this.pageHeight - this.bottomMargin - this.offsetY) + addPage(false); + this.title.evaluate((byte)3); + JRPrintBand printBand = this.title.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.title.getHeight()); + if (this.title.willOverflow() && !this.title.isSplitAllowed() && isSubreport()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.title.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.title.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (this.title.willOverflow()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.title.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.title.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.title, (byte)3); + if (this.isTitleNewPage) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + } + } + } + + private void fillPageHeader(byte evaluation) throws JRException { + if (log.isDebugEnabled() && !this.pageHeader.isEmpty()) + log.debug("Fill " + this.fillerId + ": page header"); + setNewPageColumnInBands(); + this.pageHeader.evaluatePrintWhenExpression((byte)3); + if (this.pageHeader.isToPrint()) { + int reattempts = getMasterColumnCount(); + if (this.isCreatingNewPage) + reattempts--; + boolean filled = fillBandNoOverflow(this.pageHeader, evaluation); + for (int i = 0; !filled && i < reattempts; i++) { + resolveGroupBoundElements(evaluation, false); + resolveColumnBoundElements(evaluation); + resolvePageBoundElements(evaluation); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + filled = fillBandNoOverflow(this.pageHeader, evaluation); + } + if (!filled) + throw new JRRuntimeException("Infinite loop creating new page due to page header overflow."); + } + this.columnHeaderOffsetY = this.offsetY; + this.isNewPage = true; + this.isFirstPageBand = true; + } + + private boolean fillBandNoOverflow(JRFillBand band, byte evaluation) throws JRException { + int availableStretch = this.columnFooterOffsetY - this.offsetY - band.getHeight(); + boolean overflow = (availableStretch < 0); + if (!overflow) { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(availableStretch); + overflow = band.willOverflow(); + if (overflow) { + band.rewind(); + } else { + fillBand(printBand); + this.offsetY += printBand.getHeight(); + resolveBandBoundElements(band, evaluation); + } + } + return !overflow; + } + + private void fillColumnHeader(byte evaluation) throws JRException { + if (log.isDebugEnabled() && !this.columnHeader.isEmpty()) + log.debug("Fill " + this.fillerId + ": column header"); + setNewPageColumnInBands(); + this.columnHeader.evaluatePrintWhenExpression(evaluation); + if (this.columnHeader.isToPrint()) { + int reattempts = getMasterColumnCount(); + if (this.isCreatingNewPage) + reattempts--; + boolean filled = fillBandNoOverflow(this.columnHeader, evaluation); + for (int i = 0; !filled && i < reattempts; i++) { + while (this.columnIndex < this.columnCount - 1) { + resolveGroupBoundElements(evaluation, false); + resolveColumnBoundElements(evaluation); + this.scriptlet.callBeforeColumnInit(); + this.calculator.initializeVariables((byte)3); + this.scriptlet.callAfterColumnInit(); + this.columnIndex++; + this.offsetX = this.leftMargin + this.columnIndex * (this.columnSpacing + this.columnWidth); + this.offsetY = this.columnHeaderOffsetY; + setColumnNumberVar(); + } + fillPageFooter(evaluation); + resolveGroupBoundElements(evaluation, false); + resolveColumnBoundElements(evaluation); + resolvePageBoundElements(evaluation); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + fillPageHeader(evaluation); + filled = fillBandNoOverflow(this.columnHeader, evaluation); + } + if (!filled) + throw new JRRuntimeException("Infinite loop creating new page due to column header overflow."); + } + this.isNewColumn = true; + this.isFirstColumnBand = true; + } + + private void fillGroupHeaders(boolean isFillAll) throws JRException { + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + if (isFillAll) { + fillGroupHeader(this.groups[i]); + } else if (this.groups[i].hasChanged()) { + fillGroupHeader(this.groups[i]); + } + } + } + + private void fillGroupHeader(JRFillGroup group) throws JRException { + JRFillBand groupHeader = (JRFillBand)group.getGroupHeader(); + if (log.isDebugEnabled() && !groupHeader.isEmpty()) + log.debug("Fill " + this.fillerId + ": " + group.getName() + " header"); + byte evalPrevPage = group.isTopLevelChange() ? 1 : 3; + if ((group.isStartNewPage() || group.isResetPageNumber()) && !this.isNewPage) { + fillPageBreak(group.isResetPageNumber(), evalPrevPage, (byte)3, true); + } else if (group.isStartNewColumn() && !this.isNewColumn) { + fillColumnBreak(evalPrevPage, (byte)3); + } + groupHeader.evaluatePrintWhenExpression((byte)3); + if (groupHeader.isToPrint()) + while (groupHeader.getHeight() > this.columnFooterOffsetY - this.offsetY || group.getMinHeightToStartNewPage() > this.columnFooterOffsetY - this.offsetY) + fillColumnBreak(evalPrevPage, (byte)3); + setNewGroupInBands(group); + group.setFooterPrinted(false); + if (groupHeader.isToPrint()) + fillColumnBand(groupHeader, (byte)3); + group.setHeaderPrinted(true); + this.isNewGroup = true; + this.isFirstPageBand = false; + this.isFirstColumnBand = false; + } + + private void fillGroupHeadersReprint(byte evaluation) throws JRException { + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) + fillGroupHeaderReprint(this.groups[i], evaluation); + } + + private void fillGroupHeaderReprint(JRFillGroup group, byte evaluation) throws JRException { + if (group.isReprintHeaderOnEachPage() && (!group.hasChanged() || (group.hasChanged() && group.isHeaderPrinted()))) { + JRFillBand groupHeader = (JRFillBand)group.getGroupHeader(); + groupHeader.evaluatePrintWhenExpression(evaluation); + if (groupHeader.isToPrint()) { + while (groupHeader.getHeight() > this.columnFooterOffsetY - this.offsetY || group.getMinHeightToStartNewPage() > this.columnFooterOffsetY - this.offsetY) + fillColumnBreak(evaluation, evaluation); + fillColumnBand(groupHeader, evaluation); + } + this.isFirstPageBand = false; + this.isFirstColumnBand = false; + } + } + + private void fillDetail() throws JRException { + if (log.isDebugEnabled() && !this.detail.isEmpty()) + log.debug("Fill " + this.fillerId + ": detail"); + if (!this.detail.isPrintWhenExpressionNull()) { + this.calculator.estimateVariables(); + this.detail.evaluatePrintWhenExpression((byte)2); + } + if (this.detail.isToPrint()) + while (this.detail.getHeight() > this.columnFooterOffsetY - this.offsetY) { + byte evalPrevPage = this.isNewGroup ? 3 : 1; + fillColumnBreak(evalPrevPage, (byte)3); + } + this.scriptlet.callBeforeDetailEval(); + this.calculator.calculateVariables(); + this.scriptlet.callAfterDetailEval(); + if (!this.detail.isPrintWhenExpressionNull()) + this.detail.evaluatePrintWhenExpression((byte)3); + if (this.detail.isToPrint()) + fillColumnBand(this.detail, (byte)3); + this.isNewPage = false; + this.isNewColumn = false; + this.isNewGroup = false; + this.isFirstPageBand = false; + this.isFirstColumnBand = false; + } + + private void fillGroupFooters(boolean isFillAll) throws JRException { + if (this.groups != null && this.groups.length > 0) { + byte evaluation = isFillAll ? 3 : 1; + for (int i = this.groups.length - 1; i >= 0; i--) { + if (isFillAll) { + fillGroupFooter(this.groups[i], evaluation); + } else if (this.groups[i].hasChanged()) { + fillGroupFooter(this.groups[i], evaluation); + } + } + } + } + + private void fillGroupFooter(JRFillGroup group, byte evaluation) throws JRException { + JRFillBand groupFooter = (JRFillBand)group.getGroupFooter(); + if (log.isDebugEnabled() && !groupFooter.isEmpty()) + log.debug("Fill " + this.fillerId + ": " + group.getName() + " footer"); + groupFooter.evaluatePrintWhenExpression(evaluation); + if (groupFooter.isToPrint()) { + if (groupFooter.getHeight() > this.columnFooterOffsetY - this.offsetY) + fillColumnBreak(evaluation, evaluation); + fillColumnBand(groupFooter, evaluation); + } + this.isNewPage = false; + this.isNewColumn = false; + this.isFirstPageBand = false; + this.isFirstColumnBand = false; + group.setHeaderPrinted(false); + group.setFooterPrinted(true); + } + + private void fillColumnFooter(byte evaluation) throws JRException { + if (log.isDebugEnabled() && !this.columnFooter.isEmpty()) + log.debug("Fill " + this.fillerId + ": column footer"); + if (isSubreport() && this.columnIndex == 0) + this.columnFooterOffsetY = this.offsetY; + int oldOffsetY = this.offsetY; + if (!this.isFloatColumnFooter && !this.fillContext.isIgnorePagination()) + this.offsetY = this.columnFooterOffsetY; + this.columnFooter.evaluatePrintWhenExpression(evaluation); + if (this.columnFooter.isToPrint()) + fillFixedBand(this.columnFooter, evaluation); + if (this.isFloatColumnFooter && !this.fillContext.isIgnorePagination()) + this.offsetY += this.columnFooterOffsetY - oldOffsetY; + } + + private void fillPageFooter(byte evaluation) throws JRException { + JRFillBand crtPageFooter = getCurrentPageFooter(); + if (log.isDebugEnabled() && !crtPageFooter.isEmpty()) + log.debug("Fill " + this.fillerId + ": " + (this.isLastPageFooter ? "last " : "") + "page footer"); + this.offsetX = this.leftMargin; + if (!isSubreport() && !this.fillContext.isIgnorePagination()) + this.offsetY = this.pageHeight - crtPageFooter.getHeight() - this.bottomMargin; + crtPageFooter.evaluatePrintWhenExpression(evaluation); + if (crtPageFooter.isToPrint()) + fillFixedBand(crtPageFooter, evaluation); + } + + private void fillSummary() throws JRException { + if (log.isDebugEnabled() && !this.summary.isEmpty()) + log.debug("Fill " + this.fillerId + ": summary"); + if (this.lastPageFooter == this.missingFillBand) { + if (!this.isSummaryNewPage && this.columnIndex == 0 && this.summary.getHeight() <= this.columnFooterOffsetY - this.offsetY) { + fillSummarySamePage(); + } else { + fillSummaryNewPage(); + } + } else if (!this.isSummaryNewPage && this.columnIndex == 0 && this.summary.getHeight() <= this.lastPageColumnFooterOffsetY - this.offsetY) { + setLastPageFooter(true); + fillSummarySamePage(); + } else if (!this.isSummaryNewPage && this.columnIndex == 0 && this.summary.getHeight() <= this.columnFooterOffsetY - this.offsetY) { + fillSummarySamePageMixedFooters(); + } else if (this.columnIndex == 0 && this.offsetY <= this.lastPageColumnFooterOffsetY) { + setLastPageFooter(true); + fillSummaryNewPage(); + } else { + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + if (this.isSummaryNewPage) { + fillSummaryNewPage(); + } else { + fillSummarySamePage(); + } + } + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + resolveReportBoundElements(); + } + + private void fillSummarySamePage() throws JRException { + this.summary.evaluatePrintWhenExpression((byte)3); + if (this.summary != this.missingFillBand && this.summary.isToPrint()) { + this.summary.evaluate((byte)3); + JRPrintBand printBand = this.summary.fill(this.columnFooterOffsetY - this.offsetY - this.summary.getHeight()); + if (this.summary.willOverflow() && !this.summary.isSplitAllowed()) { + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } else { + fillBand(printBand); + this.offsetY += printBand.getHeight(); + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + } + while (this.summary.willOverflow()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.summary, (byte)3); + } else { + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + } + } + + private void fillSummarySamePageMixedFooters() throws JRException { + this.summary.evaluatePrintWhenExpression((byte)3); + if (this.summary != this.missingFillBand && this.summary.isToPrint()) { + this.summary.evaluate((byte)3); + JRPrintBand printBand = this.summary.fill(this.columnFooterOffsetY - this.offsetY - this.summary.getHeight()); + if (this.summary.willOverflow() && !this.summary.isSplitAllowed()) { + if (this.offsetY <= this.lastPageColumnFooterOffsetY) { + setLastPageFooter(true); + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } else { + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + printBand = this.summary.refill(this.lastPageColumnFooterOffsetY - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + } + } else { + fillBand(printBand); + this.offsetY += printBand.getHeight(); + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + if (this.summary.willOverflow()) { + printBand = this.summary.fill(this.lastPageColumnFooterOffsetY - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + } + while (this.summary.willOverflow()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.summary, (byte)3); + } else { + if (this.offsetY > this.lastPageColumnFooterOffsetY) + fillPageBreak(false, (byte)3, (byte)3, false); + setLastPageFooter(true); + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + } + } + + private void fillSummaryNewPage() throws JRException { + fillColumnFooter((byte)3); + fillPageFooter((byte)3); + this.summary.evaluatePrintWhenExpression((byte)3); + if (this.summary != this.missingFillBand && this.summary.isToPrint()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + this.columnIndex = -1; + this.summary.evaluate((byte)3); + JRPrintBand printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + if (this.summary.willOverflow() && !this.summary.isSplitAllowed() && isSubreport()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (this.summary.willOverflow()) { + resolveGroupBoundElements((byte)3, true); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.summary.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.summary.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.summary, (byte)3); + } + } + + private void fillBackground() throws JRException { + if (log.isDebugEnabled() && !this.background.isEmpty()) + log.debug("Fill " + this.fillerId + ": background"); + if (this.background.getHeight() <= this.pageHeight - this.bottomMargin - this.offsetY) { + this.background.evaluatePrintWhenExpression((byte)3); + if (this.background.isToPrint()) { + this.background.evaluate((byte)3); + JRPrintBand printBand = this.background.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.background.getHeight()); + fillBand(printBand); + } + } + } + + private void addPage(boolean isResetPageNumber) throws JRException { + if (isSubreport()) { + if (!this.parentFiller.isBandOverFlowAllowed()) + throw new JRRuntimeException("Subreport overflowed on a band that does not support overflow."); + this.printPageStretchHeight = this.offsetY + this.bottomMargin; + if (this.fillContext.isUsingVirtualizer()) + removePageIdentityDataProvider(); + suspendSubreportRunner(); + } + this.printPage = newPage(); + if (isSubreport() && this.fillContext.isUsingVirtualizer()) + addPageIdentityDataProvider(); + if (isResetPageNumber) { + this.calculator.getPageNumber().setValue(new Integer(1)); + } else { + this.calculator.getPageNumber().setValue(new Integer(((Number)this.calculator.getPageNumber().getValue()).intValue() + 1)); + } + this.calculator.getPageNumber().setOldValue(this.calculator.getPageNumber().getValue()); + addPage(this.printPage); + setFirstColumn(); + this.offsetY = this.topMargin; + fillBackground(); + } + + private void setFirstColumn() { + this.columnIndex = 0; + this.offsetX = this.leftMargin; + setColumnNumberVar(); + } + + private void setColumnNumberVar() { + JRFillVariable columnNumber = this.calculator.getColumnNumber(); + columnNumber.setValue(new Integer(this.columnIndex + 1)); + columnNumber.setOldValue(columnNumber.getValue()); + } + + private void fillPageBreak(boolean isResetPageNumber, byte evalPrevPage, byte evalNextPage, boolean isReprintGroupHeaders) throws JRException { + if (this.isCreatingNewPage) + throw new JRException("Infinite loop creating new page."); + this.isCreatingNewPage = true; + fillColumnFooter(evalPrevPage); + fillPageFooter(evalPrevPage); + resolveGroupBoundElements(evalPrevPage, false); + resolveColumnBoundElements(evalPrevPage); + resolvePageBoundElements(evalPrevPage); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(isResetPageNumber); + fillPageHeader(evalNextPage); + fillColumnHeader(evalNextPage); + if (isReprintGroupHeaders) + fillGroupHeadersReprint(evalNextPage); + this.isCreatingNewPage = false; + } + + private void fillColumnBreak(byte evalPrevPage, byte evalNextPage) throws JRException { + if (this.columnIndex == this.columnCount - 1) { + fillPageBreak(false, evalPrevPage, evalNextPage, true); + } else { + fillColumnFooter(evalPrevPage); + resolveGroupBoundElements(evalPrevPage, false); + resolveColumnBoundElements(evalPrevPage); + this.scriptlet.callBeforeColumnInit(); + this.calculator.initializeVariables((byte)3); + this.scriptlet.callAfterColumnInit(); + this.columnIndex++; + this.offsetX = this.leftMargin + this.columnIndex * (this.columnSpacing + this.columnWidth); + this.offsetY = this.columnHeaderOffsetY; + setColumnNumberVar(); + fillColumnHeader(evalNextPage); + } + } + + protected void fillPageBand(JRFillBand band, byte evaluation) throws JRException { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + if (band.willOverflow() && !band.isSplitAllowed()) { + fillPageBreak(false, evaluation, evaluation, true); + printBand = band.refill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (band.willOverflow()) { + fillPageBreak(false, evaluation, evaluation, true); + printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(band, evaluation); + } + + protected void fillColumnBand(JRFillBand band, byte evaluation) throws JRException { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + if (band.willOverflow() && !band.isSplitAllowed()) { + fillColumnBreak(evaluation, evaluation); + printBand = band.refill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (band.willOverflow()) { + fillColumnBreak(evaluation, evaluation); + printBand = band.fill(this.columnFooterOffsetY - this.offsetY - band.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(band, evaluation); + } + + protected void fillFixedBand(JRFillBand band, byte evaluation) throws JRException { + band.evaluate(evaluation); + JRPrintBand printBand = band.fill(); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + resolveBandBoundElements(band, evaluation); + } + + protected void fillBand(JRPrintBand band) { + List elements = band.getElements(); + if (elements != null && elements.size() > 0) { + JRPrintElement element = null; + for (Iterator it = elements.iterator(); it.hasNext(); ) { + element = it.next(); + element.setX(element.getX() + this.offsetX); + element.setY(element.getY() + this.offsetY); + this.printPage.addElement(element); + } + } + } + + private void setNewPageColumnInBands() { + this.title.setNewPageColumn(true); + this.pageHeader.setNewPageColumn(true); + this.columnHeader.setNewPageColumn(true); + this.detail.setNewPageColumn(true); + this.columnFooter.setNewPageColumn(true); + this.pageFooter.setNewPageColumn(true); + this.lastPageFooter.setNewPageColumn(true); + this.summary.setNewPageColumn(true); + this.noData.setNewPageColumn(true); + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + ((JRFillBand)this.groups[i].getGroupHeader()).setNewPageColumn(true); + ((JRFillBand)this.groups[i].getGroupFooter()).setNewPageColumn(true); + } + } + + private void setNewGroupInBands(JRGroup group) { + this.title.setNewGroup(group, true); + this.pageHeader.setNewGroup(group, true); + this.columnHeader.setNewGroup(group, true); + this.detail.setNewGroup(group, true); + this.columnFooter.setNewGroup(group, true); + this.pageFooter.setNewGroup(group, true); + this.lastPageFooter.setNewGroup(group, true); + this.summary.setNewGroup(group, true); + this.noData.setNewGroup(group, true); + if (this.groups != null && this.groups.length > 0) + for (int i = 0; i < this.groups.length; i++) { + ((JRFillBand)this.groups[i].getGroupHeader()).setNewGroup(group, true); + ((JRFillBand)this.groups[i].getGroupFooter()).setNewGroup(group, true); + } + } + + private JRFillBand getCurrentPageFooter() { + return this.isLastPageFooter ? this.lastPageFooter : this.pageFooter; + } + + private void setLastPageFooter(boolean isLastPageFooter) { + this.isLastPageFooter = isLastPageFooter; + if (isLastPageFooter) + this.columnFooterOffsetY = this.lastPageColumnFooterOffsetY; + } + + private void fillNoData() throws JRException { + if (log.isDebugEnabled() && !this.noData.isEmpty()) + log.debug("Fill " + this.fillerId + ": noData"); + this.noData.evaluatePrintWhenExpression((byte)3); + if (this.noData.isToPrint()) { + while (this.noData.getHeight() > this.pageHeight - this.bottomMargin - this.offsetY) + addPage(false); + this.noData.evaluate((byte)3); + JRPrintBand printBand = this.noData.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.noData.getHeight()); + if (this.noData.willOverflow() && !this.noData.isSplitAllowed() && isSubreport()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.noData.refill(this.pageHeight - this.bottomMargin - this.offsetY - this.noData.getHeight()); + } + fillBand(printBand); + this.offsetY += printBand.getHeight(); + while (this.noData.willOverflow()) { + resolveGroupBoundElements((byte)3, false); + resolveColumnBoundElements((byte)3); + resolvePageBoundElements((byte)3); + this.scriptlet.callBeforePageInit(); + this.calculator.initializeVariables((byte)2); + this.scriptlet.callAfterPageInit(); + addPage(false); + printBand = this.noData.fill(this.pageHeight - this.bottomMargin - this.offsetY - this.noData.getHeight()); + fillBand(printBand); + this.offsetY += printBand.getHeight(); + } + resolveBandBoundElements(this.noData, (byte)3); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRVirtualizationContext.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRVirtualizationContext.java new file mode 100644 index 0000000..4f8f421 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRVirtualizationContext.java @@ -0,0 +1,73 @@ +package net.sf.jasperreports.engine.fill; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.engine.JRPrintImage; +import net.sf.jasperreports.engine.JRRenderable; +import net.sf.jasperreports.engine.JasperPrint; +import org.apache.commons.collections.ReferenceMap; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JRVirtualizationContext implements Serializable { + private static final long serialVersionUID = 10200L; + + private static final Log log = LogFactory.getLog(JRVirtualizationContext.class); + + private static final ReferenceMap contexts = new ReferenceMap(2, 2); + + private Map cachedRenderers = new HashMap(); + + private Map cachedTemplates = new HashMap(); + + private boolean readOnly; + + public void cacheRenderer(JRPrintImage image) { + JRRenderable renderer = image.getRenderer(); + if (renderer != null) + this.cachedRenderers.put(renderer.getId(), renderer); + } + + public JRRenderable getCachedRenderer(String id) { + return (JRRenderable)this.cachedRenderers.get(id); + } + + public boolean hasCachedRenderer(String id) { + return this.cachedRenderers.containsKey(id); + } + + public boolean hasCachedTemplate(String id) { + return this.cachedTemplates.containsKey(id); + } + + public void cacheTemplate(JRTemplateElement template) { + Object old = this.cachedTemplates.put(template.getId(), template); + if (old == null && log.isDebugEnabled()) + log.debug("Cached template " + template + " having id " + template.getId()); + } + + public JRTemplateElement getCachedTemplate(String templateId) { + return (JRTemplateElement)this.cachedTemplates.get(templateId); + } + + public boolean isReadOnly() { + return this.readOnly; + } + + public void setReadOnly(boolean readOnly) { + this.readOnly = readOnly; + } + + public static void register(JRVirtualizationContext context, JasperPrint print) { + synchronized (contexts) { + contexts.put(print, context); + } + } + + public static JRVirtualizationContext getRegistered(JasperPrint print) { + synchronized (contexts) { + return (JRVirtualizationContext)contexts.get(print); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/fill/JRYComparator.java b/hrmsEjb/net/sf/jasperreports/engine/fill/JRYComparator.java new file mode 100644 index 0000000..08d7108 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/fill/JRYComparator.java @@ -0,0 +1,12 @@ +package net.sf.jasperreports.engine.fill; + +import java.util.Comparator; +import net.sf.jasperreports.engine.JRElement; + +public class JRYComparator implements Comparator { + public int compare(Object obj1, Object obj2) { + JRElement elem1 = (JRElement)obj1; + JRElement elem2 = (JRElement)obj2; + return elem1.getY() - elem2.getY(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuter.java b/hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuter.java new file mode 100644 index 0000000..0b43c7d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuter.java @@ -0,0 +1,12 @@ +package net.sf.jasperreports.engine.query; + +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRException; + +public interface JRQueryExecuter { + JRDataSource createDatasource() throws JRException; + + void close(); + + boolean cancelQuery() throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuterFactory.java b/hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuterFactory.java new file mode 100644 index 0000000..234285c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/query/JRQueryExecuterFactory.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.engine.query; + +import java.util.Map; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRException; + +public interface JRQueryExecuterFactory { + public static final String QUERY_EXECUTER_FACTORY_PREFIX = "net.sf.jasperreports.query.executer.factory."; + + Object[] getBuiltinParameters(); + + JRQueryExecuter createQueryExecuter(JRDataset paramJRDataset, Map paramMap) throws JRException; + + boolean supportsQueryParameterType(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/DefaultFormatFactory.java b/hrmsEjb/net/sf/jasperreports/engine/util/DefaultFormatFactory.java new file mode 100644 index 0000000..adf935b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/DefaultFormatFactory.java @@ -0,0 +1,115 @@ +package net.sf.jasperreports.engine.util; + +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.text.SimpleDateFormat; +import java.util.Locale; +import java.util.TimeZone; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class DefaultFormatFactory implements FormatFactory { + public static final String STANDARD_DATE_FORMAT_DEFAULT = "default"; + + public static final String STANDARD_DATE_FORMAT_SHORT = "short"; + + public static final String STANDARD_DATE_FORMAT_MEDIUM = "medium"; + + public static final String STANDARD_DATE_FORMAT_LONG = "long"; + + public static final String STANDARD_DATE_FORMAT_FULL = "full"; + + public static final String STANDARD_DATE_FORMAT_HIDE = "hide"; + + public static final String STANDARD_DATE_FORMAT_SEPARATOR = ","; + + public DateFormat createDateFormat(String pattern, Locale locale, TimeZone tz) { + DateFormat format; + int[] dateStyle = null; + int[] timeStyle = null; + if (pattern != null && pattern.trim().length() > 0) { + int sepIdx = pattern.indexOf(","); + String dateTok = (sepIdx < 0) ? pattern : pattern.substring(0, sepIdx); + dateStyle = getDateStyle(dateTok); + if (dateStyle != null) + if (sepIdx >= 0) { + String timeTok = pattern.substring(sepIdx + ",".length()); + timeStyle = getDateStyle(timeTok); + } else { + timeStyle = dateStyle; + } + } + if (dateStyle != null && timeStyle != null) { + format = getDateFormat(dateStyle, timeStyle, locale); + } else { + if (locale == null) { + format = DateFormat.getDateTimeInstance(3, 3); + } else { + format = DateFormat.getDateTimeInstance(3, 3, locale); + } + if (pattern != null && pattern.trim().length() > 0 && format instanceof SimpleDateFormat) + ((SimpleDateFormat)format).applyPattern(pattern); + } + if (tz != null) + format.setTimeZone(tz); + return format; + } + + protected static int[] getDateStyle(String pattern) { + if (pattern.equalsIgnoreCase("default")) + return new int[] { 2 }; + if (pattern.equalsIgnoreCase("short")) + return new int[] { 3 }; + if (pattern.equalsIgnoreCase("medium")) + return new int[] { 2 }; + if (pattern.equalsIgnoreCase("long")) + return new int[] { 1 }; + if (pattern.equalsIgnoreCase("full")) + return new int[] { 0 }; + if (pattern.equalsIgnoreCase("hide")) + return new int[0]; + return null; + } + + protected static DateFormat getDateFormat(int[] dateStyle, int[] timeStyle, Locale locale) { + if (dateStyle.length == 0) { + if (timeStyle.length == 0) + return new SimpleDateFormat(""); + return (locale == null) ? DateFormat.getTimeInstance(timeStyle[0]) : DateFormat.getTimeInstance(timeStyle[0], locale); + } + if (timeStyle.length == 0) + return (locale == null) ? DateFormat.getDateInstance(dateStyle[0]) : DateFormat.getDateInstance(dateStyle[0], locale); + return (locale == null) ? DateFormat.getDateTimeInstance(dateStyle[0], timeStyle[0]) : DateFormat.getDateTimeInstance(dateStyle[0], timeStyle[0], locale); + } + + public NumberFormat createNumberFormat(String pattern, Locale locale) { + NumberFormat format = null; + if (pattern != null && pattern.trim().length() > 0) { + if (locale == null) { + format = NumberFormat.getNumberInstance(); + } else { + format = NumberFormat.getNumberInstance(locale); + } + if (format instanceof DecimalFormat) + ((DecimalFormat)format).applyPattern(pattern); + } + return format; + } + + public static FormatFactory createFormatFactory(String formatFactoryClassName) { + FormatFactory formatFactory = null; + if (formatFactoryClassName != null) { + try { + Class formatFactoryClass = JRClassLoader.loadClassForName(formatFactoryClassName); + formatFactory = formatFactoryClass.newInstance(); + } catch (ClassNotFoundException e) { + throw new JRRuntimeException("Error loading format factory class : " + formatFactoryClassName, e); + } catch (Exception e) { + throw new JRRuntimeException("Error creating format factory instance : " + formatFactoryClassName, e); + } + } else { + formatFactory = new DefaultFormatFactory(); + } + return formatFactory; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/FileResolver.java b/hrmsEjb/net/sf/jasperreports/engine/util/FileResolver.java new file mode 100644 index 0000000..5c4df23 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/FileResolver.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.util; + +import java.io.File; + +public interface FileResolver { + File resolveFile(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/FormatFactory.java b/hrmsEjb/net/sf/jasperreports/engine/util/FormatFactory.java new file mode 100644 index 0000000..8416301 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/FormatFactory.java @@ -0,0 +1,12 @@ +package net.sf.jasperreports.engine.util; + +import java.text.DateFormat; +import java.text.NumberFormat; +import java.util.Locale; +import java.util.TimeZone; + +public interface FormatFactory { + DateFormat createDateFormat(String paramString, Locale paramLocale, TimeZone paramTimeZone); + + NumberFormat createNumberFormat(String paramString, Locale paramLocale); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRAbstractImageEncoder.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRAbstractImageEncoder.java new file mode 100644 index 0000000..fc647e2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRAbstractImageEncoder.java @@ -0,0 +1,23 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Graphics; +import java.awt.Image; +import java.awt.image.BufferedImage; +import net.sf.jasperreports.engine.JRException; + +public abstract class JRAbstractImageEncoder implements JRImageEncoder { + public byte[] encode(Image image, byte imageType) throws JRException { + BufferedImage bi = null; + if (image instanceof BufferedImage) { + bi = (BufferedImage)image; + } else { + bi = new BufferedImage(image.getWidth(null), image.getHeight(null), (imageType == 1 || imageType == 3) ? 2 : 1); + Graphics g = bi.createGraphics(); + g.drawImage(image, 0, 0, null); + g.dispose(); + } + return encode(bi, imageType); + } + + public abstract byte[] encode(BufferedImage paramBufferedImage, byte paramByte) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRBoxUtil.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRBoxUtil.java new file mode 100644 index 0000000..be6abfc --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRBoxUtil.java @@ -0,0 +1,78 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Color; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; + +public class JRBoxUtil { + public static JRLineBox clone(JRLineBox box, boolean keepLeft, boolean keepRight, boolean keepTop, boolean keepBottom, JRLineBox complementaryBox) { + JRLineBox clone = box.clone(box.getBoxContainer()); + if (!keepLeft || box.getLeftPen().getLineWidth().floatValue() <= 0.0F) + if (complementaryBox != null) { + clone.getLeftPen().setLineWidth(complementaryBox.getLeftPen().getLineWidth()); + clone.getLeftPen().setLineColor(complementaryBox.getLeftPen().getLineColor()); + clone.setLeftPadding(complementaryBox.getLeftPadding()); + } else { + clone.getLeftPen().setLineWidth(0.0F); + } + if (!keepRight || box.getRightPen().getLineWidth().floatValue() <= 0.0F) + if (complementaryBox != null) { + clone.getRightPen().setLineWidth(complementaryBox.getRightPen().getLineWidth()); + clone.getRightPen().setLineColor(complementaryBox.getRightPen().getLineColor()); + clone.setRightPadding(complementaryBox.getRightPadding()); + } else { + clone.getRightPen().setLineWidth(0.0F); + } + if (!keepTop || box.getTopPen().getLineWidth().floatValue() <= 0.0F) + if (complementaryBox != null) { + clone.getTopPen().setLineWidth(complementaryBox.getTopPen().getLineWidth()); + clone.getTopPen().setLineColor(complementaryBox.getTopPen().getLineColor()); + clone.setTopPadding(complementaryBox.getTopPadding()); + } else { + clone.getTopPen().setLineWidth(0.0F); + } + if (!keepBottom || box.getBottomPen().getLineWidth().floatValue() <= 0.0F) + if (complementaryBox != null) { + clone.getBottomPen().setLineWidth(complementaryBox.getBottomPen().getLineWidth()); + clone.getBottomPen().setLineColor(complementaryBox.getBottomPen().getLineColor()); + clone.setBottomPadding(complementaryBox.getBottomPadding()); + } else { + clone.getBottomPen().setLineWidth(0.0F); + } + return clone; + } + + public static void reset(JRLineBox box, boolean resetLeft, boolean resetRight, boolean resetTop, boolean resetBottom) { + if (resetLeft) + box.getLeftPen().setLineWidth(0.0F); + if (resetRight) + box.getRightPen().setLineWidth(0.0F); + if (resetTop) + box.getTopPen().setLineWidth(0.0F); + if (resetBottom) + box.getBottomPen().setLineWidth(0.0F); + } + + public static void setToBox(Byte border, Byte topBorder, Byte leftBorder, Byte bottomBorder, Byte rightBorder, Color borderColor, Color topBorderColor, Color leftBorderColor, Color bottomBorderColor, Color rightBorderColor, Integer padding, Integer topPadding, Integer leftPadding, Integer bottomPadding, Integer rightPadding, JRLineBox box) { + JRPenUtil.setLinePenFromPen(border, (JRPen)box.getPen()); + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)box.getTopPen()); + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)box.getLeftPen()); + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)box.getBottomPen()); + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)box.getRightPen()); + box.getPen().setLineColor(borderColor); + box.getTopPen().setLineColor(topBorderColor); + box.getLeftPen().setLineColor(leftBorderColor); + box.getBottomPen().setLineColor(bottomBorderColor); + box.getRightPen().setLineColor(rightBorderColor); + box.setPadding(padding); + box.setTopPadding(topPadding); + box.setLeftPadding(leftPadding); + box.setBottomPadding(bottomPadding); + box.setRightPadding(rightPadding); + } + + public static void setBoxToLineBox(JRBox box, JRLineBox lineBox) { + setToBox(box.getOwnBorder(), box.getOwnTopBorder(), box.getOwnLeftBorder(), box.getOwnBottomBorder(), box.getOwnRightBorder(), box.getOwnBorderColor(), box.getOwnTopBorderColor(), box.getOwnLeftBorderColor(), box.getOwnBottomBorderColor(), box.getOwnRightBorderColor(), box.getOwnPadding(), box.getOwnTopPadding(), box.getOwnLeftPadding(), box.getOwnBottomPadding(), box.getOwnRightPadding(), lineBox); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRClassLoader.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRClassLoader.java new file mode 100644 index 0000000..41ab60a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRClassLoader.java @@ -0,0 +1,170 @@ +package net.sf.jasperreports.engine.util; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.security.ProtectionDomain; + +public class JRClassLoader extends ClassLoader { + private static ProtectionDomainFactory protectionDomainFactory = null; + + private ProtectionDomain protectionDomain; + + protected static synchronized ProtectionDomainFactory getProtectionDomainFactory() { + if (protectionDomainFactory == null) + protectionDomainFactory = new SingleProtectionDomainFactory(JRClassLoader.class.getProtectionDomain()); + return protectionDomainFactory; + } + + public static void setProtectionDomain(ProtectionDomain protectionDomain) { + SingleProtectionDomainFactory factory = new SingleProtectionDomainFactory(protectionDomain); + setProtectionDomainFactory(factory); + } + + public static void setProtectionDomainFactory(ProtectionDomainFactory protectionDomainFactory) { + JRClassLoader.protectionDomainFactory = protectionDomainFactory; + } + + protected JRClassLoader() {} + + protected JRClassLoader(ClassLoader parent) { + super(parent); + } + + public static Class loadClassForName(String className) throws ClassNotFoundException { + Class clazz = null; + String classRealName = className; + ClassNotFoundException initialEx = null; + try { + clazz = loadClassForRealName(classRealName); + } catch (ClassNotFoundException e) { + initialEx = e; + } + int lastDotIndex = 0; + while (clazz == null && (lastDotIndex = classRealName.lastIndexOf('.')) > 0) { + classRealName = classRealName.substring(0, lastDotIndex) + "$" + classRealName.substring(lastDotIndex + 1); + try { + clazz = loadClassForRealName(classRealName); + } catch (ClassNotFoundException e) {} + } + if (clazz == null) + throw initialEx; + return clazz; + } + + public static Class loadClassForRealName(String className) throws ClassNotFoundException { + Class clazz = null; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + try { + clazz = Class.forName(className, true, classLoader); + } catch (ClassNotFoundException e) {} + if (clazz == null) { + classLoader = JRClassLoader.class.getClassLoader(); + if (classLoader == null) { + clazz = Class.forName(className); + } else { + clazz = Class.forName(className, true, classLoader); + } + } + return clazz; + } + + public static Class loadClassFromFile(String className, File file) throws IOException { + Class clazz = null; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + try { + clazz = (new JRClassLoader(classLoader)).loadClass(className, file); + } catch (NoClassDefFoundError e) {} + if (clazz == null) { + classLoader = JRClassLoader.class.getClassLoader(); + if (classLoader == null) { + clazz = (new JRClassLoader()).loadClass(className, file); + } else { + clazz = (new JRClassLoader(classLoader)).loadClass(className, file); + } + } + return clazz; + } + + public static Class loadClassFromBytes(String className, byte[] bytecodes) { + Class clazz = null; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + try { + clazz = (new JRClassLoader(classLoader)).loadClass(className, bytecodes); + } catch (NoClassDefFoundError e) {} + if (clazz == null) { + classLoader = JRClassLoader.class.getClassLoader(); + if (classLoader == null) { + clazz = (new JRClassLoader()).loadClass(className, bytecodes); + } else { + clazz = (new JRClassLoader(classLoader)).loadClass(className, bytecodes); + } + } + return clazz; + } + + protected Class loadClass(String className, File file) throws IOException { + FileInputStream fis = null; + ByteArrayOutputStream baos = null; + byte[] bytecodes = new byte[10000]; + int ln = 0; + try { + fis = new FileInputStream(file); + baos = new ByteArrayOutputStream(); + while ((ln = fis.read(bytecodes)) > 0) + baos.write(bytecodes, 0, ln); + baos.flush(); + } finally { + if (baos != null) + try { + baos.close(); + } catch (IOException e) {} + if (fis != null) + try { + fis.close(); + } catch (IOException e) {} + } + return loadClass(className, baos.toByteArray()); + } + + protected synchronized ProtectionDomain getProtectionDomain() { + if (this.protectionDomain == null) + this.protectionDomain = getProtectionDomainFactory().getProtectionDomain(this); + return this.protectionDomain; + } + + protected Class loadClass(String className, byte[] bytecodes) { + Class clazz = null; + clazz = defineClass(className, bytecodes, 0, bytecodes.length, getProtectionDomain()); + return clazz; + } + + public static String getClassRealName(String className) { + if (className == null) + return null; + int arrayDimension = 0; + int classNameEnd = className.length(); + int index = 0; + int pos = 0; + while (index < classNameEnd && (pos = className.indexOf('[', index)) >= 0) { + if (index == 0) + classNameEnd = pos; + index = pos; + arrayDimension++; + } + if (arrayDimension > 0) { + StringBuffer sbuffer = new StringBuffer(); + for (int i = 0; i < arrayDimension; i++) + sbuffer.append('['); + sbuffer.append('L'); + sbuffer.append(className.substring(0, classNameEnd)); + sbuffer.append(';'); + return sbuffer.toString(); + } + return className; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRColorUtil.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRColorUtil.java new file mode 100644 index 0000000..e20863d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRColorUtil.java @@ -0,0 +1,12 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Color; + +public class JRColorUtil { + public static final int COLOR_MASK = Integer.parseInt("FFFFFF", 16); + + public static String getColorHexa(Color color) { + String hexa = Integer.toHexString(color.getRGB() & COLOR_MASK).toUpperCase(); + return ("000000" + hexa).substring(hexa.length()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRDataUtils.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRDataUtils.java new file mode 100644 index 0000000..d005217 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRDataUtils.java @@ -0,0 +1,38 @@ +package net.sf.jasperreports.engine.util; + +import java.util.Locale; +import java.util.TimeZone; + +public class JRDataUtils { + public static String getLocaleCode(Locale locale) { + return locale.toString(); + } + + public static Locale getLocale(String code) { + String language, country, variant; + int firstSep = code.indexOf('_'); + if (firstSep < 0) { + language = code; + country = variant = ""; + } else { + language = code.substring(0, firstSep); + int secondSep = code.indexOf('_', firstSep + 1); + if (secondSep < 0) { + country = code.substring(firstSep + 1); + variant = ""; + } else { + country = code.substring(firstSep + 1, secondSep); + variant = code.substring(secondSep + 1); + } + } + return new Locale(language, country, variant); + } + + public static String getTimeZoneId(TimeZone tz) { + return tz.getID(); + } + + public static TimeZone getTimeZone(String id) { + return TimeZone.getTimeZone(id); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRDelegationVisitor.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRDelegationVisitor.java new file mode 100644 index 0000000..7901c4f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRDelegationVisitor.java @@ -0,0 +1,75 @@ +package net.sf.jasperreports.engine.util; + +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVisitor; + +public abstract class JRDelegationVisitor implements JRVisitor { + private final JRVisitor visitor; + + public JRDelegationVisitor(JRVisitor visitor) { + this.visitor = visitor; + } + + public JRVisitor getVisitor() { + return this.visitor; + } + + public void visitBreak(JRBreak breakElement) { + this.visitor.visitBreak(breakElement); + } + + public void visitChart(JRChart chart) { + this.visitor.visitChart(chart); + } + + public void visitCrosstab(JRCrosstab crosstab) { + this.visitor.visitCrosstab(crosstab); + } + + public void visitElementGroup(JRElementGroup elementGroup) { + this.visitor.visitElementGroup(elementGroup); + } + + public void visitEllipse(JREllipse ellipse) { + this.visitor.visitEllipse(ellipse); + } + + public void visitFrame(JRFrame frame) { + this.visitor.visitFrame(frame); + } + + public void visitImage(JRImage image) { + this.visitor.visitImage(image); + } + + public void visitLine(JRLine line) { + this.visitor.visitLine(line); + } + + public void visitRectangle(JRRectangle rectangle) { + this.visitor.visitRectangle(rectangle); + } + + public void visitStaticText(JRStaticText staticText) { + this.visitor.visitStaticText(staticText); + } + + public void visitSubreport(JRSubreport subreport) { + this.visitor.visitSubreport(subreport); + } + + public void visitTextField(JRTextField textField) { + this.visitor.visitTextField(textField); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRElementsVisitor.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRElementsVisitor.java new file mode 100644 index 0000000..0746e18 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRElementsVisitor.java @@ -0,0 +1,115 @@ +package net.sf.jasperreports.engine.util; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRChild; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRReport; +import net.sf.jasperreports.engine.JRVisitor; + +public class JRElementsVisitor extends JRDelegationVisitor { + public static void visitReport(JRReport report, JRVisitor visitor) { + JRElementsVisitor reportVisitor = new JRElementsVisitor(visitor); + reportVisitor.visitReport(report); + } + + public JRElementsVisitor(JRVisitor visitor) { + super(visitor); + } + + public void visitReport(JRReport report) { + visitBand(report.getBackground()); + visitBand(report.getTitle()); + visitBand(report.getPageHeader()); + visitBand(report.getColumnHeader()); + visitBand(report.getDetail()); + visitBand(report.getColumnFooter()); + visitBand(report.getPageFooter()); + visitBand(report.getLastPageFooter()); + visitBand(report.getSummary()); + visitBand(report.getNoData()); + JRGroup[] groups = report.getGroups(); + if (groups != null) + for (int i = 0; i < groups.length; i++) { + JRGroup group = groups[i]; + visitBand(group.getGroupHeader()); + visitBand(group.getGroupFooter()); + } + } + + protected void visitBand(JRBand band) { + if (band != null) + band.visit(this); + } + + protected void visitElements(List elements) { + if (elements != null) + for (Iterator it = elements.iterator(); it.hasNext(); ) { + JRChild child = it.next(); + child.visit(this); + } + } + + public void visitElementGroup(JRElementGroup elementGroup) { + super.visitElementGroup(elementGroup); + visitElements(elementGroup.getChildren()); + } + + public void visitFrame(JRFrame frame) { + super.visitFrame(frame); + visitElements(frame.getChildren()); + } + + public void visitCrosstab(JRCrosstab crosstab) { + super.visitCrosstab(crosstab); + visitCrosstabCell(crosstab.getWhenNoDataCell()); + visitCrosstabCell(crosstab.getHeaderCell()); + JRCrosstabRowGroup[] rowGroups = crosstab.getRowGroups(); + for (int i = 0; i < rowGroups.length; i++) { + JRCrosstabRowGroup rowGroup = rowGroups[i]; + visitCrosstabCell(rowGroup.getHeader()); + visitCrosstabCell(rowGroup.getTotalHeader()); + } + JRCrosstabColumnGroup[] columnGroups = crosstab.getColumnGroups(); + for (int j = 0; j < columnGroups.length; j++) { + JRCrosstabColumnGroup columnGroup = columnGroups[j]; + visitCrosstabCell(columnGroup.getHeader()); + visitCrosstabCell(columnGroup.getTotalHeader()); + } + if (crosstab instanceof JRDesignCrosstab) { + List cells = ((JRDesignCrosstab)crosstab).getCellsList(); + for (Iterator it = cells.iterator(); it.hasNext(); ) { + JRCrosstabCell cell = it.next(); + visitCrosstabCell(cell.getContents()); + } + } else { + JRCrosstabCell[][] cells = crosstab.getCells(); + if (cells != null) { + Set cellContents = new HashSet(); + for (int k = 0; k < cells.length; k++) { + for (int m = 0; m < (cells[k]).length; m++) { + JRCrosstabCell cell = cells[k][m]; + if (cell != null && cell.getContents() != null && cellContents.add(cell.getContents())) + visitCrosstabCell(cell.getContents()); + } + } + } + } + } + + protected void visitCrosstabCell(JRCellContents cell) { + if (cell != null) + visitElements(cell.getChildren()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRFontUtil.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRFontUtil.java new file mode 100644 index 0000000..feb0550 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRFontUtil.java @@ -0,0 +1,43 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.font.TextAttribute; +import java.util.HashMap; +import java.util.Map; +import net.sf.jasperreports.engine.JRFont; + +public class JRFontUtil { + public static Map getNonPdfAttributes(JRFont font) { + Map nonPdfAttributes = new HashMap(); + setNonPdfAttributes(nonPdfAttributes, font); + return nonPdfAttributes; + } + + public static Map getAttributes(JRFont font) { + Map attributes = new HashMap(); + setAttributes(attributes, font); + return attributes; + } + + private static Map setNonPdfAttributes(Map attributes, JRFont font) { + attributes.put(TextAttribute.FAMILY, font.getFontName()); + attributes.put(TextAttribute.SIZE, new Float(font.getFontSize())); + if (font.isBold()) + attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD); + if (font.isItalic()) + attributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE); + if (font.isUnderline()) + attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); + if (font.isStrikeThrough()) + attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON); + return attributes; + } + + public static Map setAttributes(Map attributes, JRFont font) { + attributes = setNonPdfAttributes(attributes, font); + attributes.put(JRTextAttribute.PDF_FONT_NAME, font.getPdfFontName()); + attributes.put(JRTextAttribute.PDF_ENCODING, font.getPdfEncoding()); + if (font.isPdfEmbedded()) + attributes.put(JRTextAttribute.IS_PDF_EMBEDDED, Boolean.TRUE); + return attributes; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRGraphEnvInitializer.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRGraphEnvInitializer.java new file mode 100644 index 0000000..29349af --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRGraphEnvInitializer.java @@ -0,0 +1,19 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.GraphicsEnvironment; +import net.sf.jasperreports.engine.JRException; + +public class JRGraphEnvInitializer { + private static boolean isGraphicsEnvironmentInitiliazed = false; + + public static void initializeGraphEnv() throws JRException { + if (!isGraphicsEnvironmentInitiliazed) { + try { + GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); + } catch (Exception e) { + throw new JRException("Error initializing graphic environment.", e); + } + isGraphicsEnvironmentInitiliazed = true; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRImageEncoder.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRImageEncoder.java new file mode 100644 index 0000000..0b2bf9f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRImageEncoder.java @@ -0,0 +1,8 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Image; +import net.sf.jasperreports.engine.JRException; + +public interface JRImageEncoder { + byte[] encode(Image paramImage, byte paramByte) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRImageLoader.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRImageLoader.java new file mode 100644 index 0000000..ae41a2b --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRImageLoader.java @@ -0,0 +1,150 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Image; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.InputStream; +import java.net.URL; +import java.net.URLStreamHandlerFactory; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRImageLoader { + public static final String PROPERTY_IMAGE_READER = "net.sf.jasperreports.image.reader"; + + public static final String PROPERTY_IMAGE_ENCODER = "net.sf.jasperreports.image.encoder"; + + public static final byte NO_IMAGE = 1; + + public static final byte SUBREPORT_IMAGE = 2; + + public static final byte CHART_IMAGE = 3; + + public static final byte CROSSTAB_IMAGE = 4; + + private static final String str_NO_IMAGE = "net/sf/jasperreports/engine/images/noimage.GIF"; + + private static final String str_SUBREPORT_IMAGE = "net/sf/jasperreports/engine/images/subreport.GIF"; + + private static final String str_CHART_IMAGE = "net/sf/jasperreports/engine/images/chart.GIF"; + + private static final String str_CROSSTAB_IMAGE = "net/sf/jasperreports/engine/images/crosstab.GIF"; + + private static Image img_NO_IMAGE = null; + + private static Image img_SUBREPORT_IMAGE = null; + + private static Image img_CHART_IMAGE = null; + + private static Image img_CROSSTAB_IMAGE = null; + + private static JRImageReader imageReader = null; + + private static JRImageEncoder imageEncoder = null; + + static { + String readerClassName = JRProperties.getProperty("net.sf.jasperreports.image.reader"); + if (readerClassName == null) { + imageReader = new JRJdk14ImageReader(); + } else { + try { + Class clazz = JRClassLoader.loadClassForRealName(readerClassName); + imageReader = clazz.newInstance(); + } catch (Exception e) { + throw new JRRuntimeException(e); + } + } + String encoderClassName = JRProperties.getProperty("net.sf.jasperreports.image.encoder"); + if (encoderClassName == null) { + imageEncoder = new JRJdk14ImageEncoder(); + } else { + try { + Class clazz = JRClassLoader.loadClassForRealName(encoderClassName); + imageEncoder = clazz.newInstance(); + } catch (Exception e) { + throw new JRRuntimeException(e); + } + } + } + + public static byte[] loadImageDataFromFile(File file) throws JRException { + return JRLoader.loadBytes(file); + } + + public static byte[] loadImageDataFromURL(URL url) throws JRException { + return JRLoader.loadBytes(url); + } + + public static byte[] loadImageDataFromInputStream(InputStream is) throws JRException { + return JRLoader.loadBytes(is); + } + + public static byte[] loadImageDataFromLocation(String location) throws JRException { + return JRLoader.loadBytesFromLocation(location); + } + + public static byte[] loadImageDataFromLocation(String location, ClassLoader classLoader) throws JRException { + return JRLoader.loadBytesFromLocation(location, classLoader); + } + + public static byte[] loadImageDataFromLocation(String location, ClassLoader classLoader, URLStreamHandlerFactory urlHandlerFactory) throws JRException { + return JRLoader.loadBytesFromLocation(location, classLoader, urlHandlerFactory); + } + + public static byte[] loadImageDataFromAWTImage(Image image, byte imageType) throws JRException { + return imageEncoder.encode(image, imageType); + } + + public static byte[] loadImageDataFromAWTImage(BufferedImage bi) throws JRException { + return loadImageDataFromAWTImage(bi, (byte)2); + } + + public static byte[] loadImageDataFromAWTImage(Image image) throws JRException { + return loadImageDataFromAWTImage(image, (byte)2); + } + + public static Image getImage(byte index) throws JRException { + Image image = null; + switch (index) { + case 1: + if (img_NO_IMAGE == null) + img_NO_IMAGE = loadImage("net/sf/jasperreports/engine/images/noimage.GIF"); + image = img_NO_IMAGE; + break; + case 2: + if (img_SUBREPORT_IMAGE == null) + img_SUBREPORT_IMAGE = loadImage("net/sf/jasperreports/engine/images/subreport.GIF"); + image = img_SUBREPORT_IMAGE; + break; + case 3: + if (img_CHART_IMAGE == null) + img_CHART_IMAGE = loadImage("net/sf/jasperreports/engine/images/chart.GIF"); + image = img_CHART_IMAGE; + break; + case 4: + if (img_CROSSTAB_IMAGE == null) + img_CROSSTAB_IMAGE = loadImage("net/sf/jasperreports/engine/images/crosstab.GIF"); + image = img_CROSSTAB_IMAGE; + break; + } + return image; + } + + public static Image loadImage(byte[] bytes) throws JRException { + return imageReader.readImage(bytes); + } + + protected static Image loadImage(String image) throws JRException { + InputStream is; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + URL url = classLoader.getResource(image); + if (url == null) + classLoader = JRImageLoader.class.getClassLoader(); + if (classLoader == null) { + is = JRImageLoader.class.getResourceAsStream("/" + image); + } else { + is = classLoader.getResourceAsStream(image); + } + return imageReader.readImage(JRLoader.loadBytes(is)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRImageReader.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRImageReader.java new file mode 100644 index 0000000..0beb030 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRImageReader.java @@ -0,0 +1,8 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Image; +import net.sf.jasperreports.engine.JRException; + +public interface JRImageReader { + Image readImage(byte[] paramArrayOfbyte) throws JRException; +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageEncoder.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageEncoder.java new file mode 100644 index 0000000..b7e6896 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageEncoder.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import javax.imageio.ImageIO; +import net.sf.jasperreports.engine.JRException; + +public class JRJdk14ImageEncoder extends JRAbstractImageEncoder { + public byte[] encode(BufferedImage bi, byte imageType) throws JRException { + String formatName = null; + switch (imageType) { + case 1: + formatName = "gif"; + break; + case 3: + formatName = "png"; + break; + case 4: + formatName = "tiff"; + break; + default: + formatName = "jpeg"; + break; + } + boolean success = false; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + success = ImageIO.write(bi, formatName, baos); + } catch (IOException e) { + throw new JRException(e); + } + if (!success) + throw new JRException("No appropriate image writer found for the \"" + formatName + "\" format."); + return baos.toByteArray(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageReader.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageReader.java new file mode 100644 index 0000000..3bffcfb --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRJdk14ImageReader.java @@ -0,0 +1,27 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Image; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import javax.imageio.ImageIO; +import net.sf.jasperreports.engine.JRException; + +public class JRJdk14ImageReader implements JRImageReader { + public Image readImage(byte[] bytes) throws JRException { + InputStream bais = new ByteArrayInputStream(bytes); + Image image = null; + try { + image = ImageIO.read(bais); + } catch (Exception e) { + throw new JRException(e); + } finally { + try { + bais.close(); + } catch (IOException e) {} + } + if (image == null) + throw new JRException("Image read failed."); + return image; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRLoader.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRLoader.java new file mode 100644 index 0000000..2b46201 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRLoader.java @@ -0,0 +1,260 @@ +package net.sf.jasperreports.engine.util; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLStreamHandlerFactory; +import net.sf.jasperreports.engine.JRException; + +public class JRLoader { + public static Object loadObject(String fileName) throws JRException { + return loadObject(new File(fileName)); + } + + public static Object loadObject(File file) throws JRException { + if (!file.exists() || !file.isFile()) + throw new JRException(new FileNotFoundException(String.valueOf(file))); + Object obj = null; + FileInputStream fis = null; + ObjectInputStream ois = null; + try { + fis = new FileInputStream(file); + BufferedInputStream bufferedIn = new BufferedInputStream(fis); + ois = new ObjectInputStream(bufferedIn); + obj = ois.readObject(); + } catch (IOException e) { + throw new JRException("Error loading object from file : " + file, e); + } catch (ClassNotFoundException e) { + throw new JRException("Class not found when loading object from file : " + file, e); + } finally { + if (ois != null) + try { + ois.close(); + } catch (IOException e) {} + if (fis != null) + try { + fis.close(); + } catch (IOException e) {} + } + return obj; + } + + public static Object loadObject(URL url) throws JRException { + Object obj = null; + InputStream is = null; + ObjectInputStream ois = null; + try { + is = url.openStream(); + ois = new ObjectInputStream(is); + obj = ois.readObject(); + } catch (IOException e) { + throw new JRException("Error loading object from URL : " + url, e); + } catch (ClassNotFoundException e) { + throw new JRException("Class not found when loading object from URL : " + url, e); + } finally { + if (ois != null) + try { + ois.close(); + } catch (IOException e) {} + if (is != null) + try { + is.close(); + } catch (IOException e) {} + } + return obj; + } + + public static Object loadObject(InputStream is) throws JRException { + Object obj = null; + ObjectInputStream ois = null; + try { + ois = new ObjectInputStream(is); + obj = ois.readObject(); + } catch (IOException e) { + throw new JRException("Error loading object from InputStream", e); + } catch (ClassNotFoundException e) { + throw new JRException("Class not found when loading object from InputStream", e); + } finally { + if (ois != null) + try { + ois.close(); + } catch (IOException e) {} + } + return obj; + } + + public static Object loadObjectFromLocation(String location) throws JRException { + return loadObjectFromLocation(location, null, null, null); + } + + public static Object loadObjectFromLocation(String location, ClassLoader classLoader) throws JRException { + return loadObjectFromLocation(location, classLoader, null, null); + } + + public static Object loadObjectFromLocation(String location, ClassLoader classLoader, URLStreamHandlerFactory urlHandlerFactory, FileResolver fileResolver) throws JRException { + URL url = JRResourcesUtil.createURL(location, urlHandlerFactory); + if (url != null) + return loadObject(url); + File file = JRResourcesUtil.resolveFile(location, fileResolver); + if (file != null) + return loadObject(file); + url = JRResourcesUtil.findClassLoaderResource(location, classLoader, JRLoader.class); + if (url != null) + return loadObject(url); + throw new JRException("Could not load object from location : " + location); + } + + public static byte[] loadBytes(File file) throws JRException { + ByteArrayOutputStream baos = null; + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + baos = new ByteArrayOutputStream(); + byte[] bytes = new byte[10000]; + int ln = 0; + while ((ln = fis.read(bytes)) > 0) + baos.write(bytes, 0, ln); + baos.flush(); + } catch (IOException e) { + throw new JRException("Error loading byte data : " + file, e); + } finally { + if (baos != null) + try { + baos.close(); + } catch (IOException e) {} + if (fis != null) + try { + fis.close(); + } catch (IOException e) {} + } + return baos.toByteArray(); + } + + public static byte[] loadBytes(URL url) throws JRException { + ByteArrayOutputStream baos = null; + InputStream is = null; + try { + is = url.openStream(); + baos = new ByteArrayOutputStream(); + byte[] bytes = new byte[10000]; + int ln = 0; + while ((ln = is.read(bytes)) > 0) + baos.write(bytes, 0, ln); + baos.flush(); + } catch (IOException e) { + throw new JRException("Error loading byte data : " + url, e); + } finally { + if (baos != null) + try { + baos.close(); + } catch (IOException e) {} + if (is != null) + try { + is.close(); + } catch (IOException e) {} + } + return baos.toByteArray(); + } + + public static byte[] loadBytes(InputStream is) throws JRException { + ByteArrayOutputStream baos = null; + try { + baos = new ByteArrayOutputStream(); + byte[] bytes = new byte[10000]; + int ln = 0; + while ((ln = is.read(bytes)) > 0) + baos.write(bytes, 0, ln); + baos.flush(); + } catch (IOException e) { + throw new JRException("Error loading byte data from input stream.", e); + } finally { + if (baos != null) + try { + baos.close(); + } catch (IOException e) {} + } + return baos.toByteArray(); + } + + public static byte[] loadBytesFromLocation(String location) throws JRException { + return loadBytesFromLocation(location, null, null, null); + } + + public static byte[] loadBytesFromLocation(String location, ClassLoader classLoader) throws JRException { + return loadBytesFromLocation(location, classLoader, null, null); + } + + public static byte[] loadBytesFromLocation(String location, ClassLoader classLoader, URLStreamHandlerFactory urlHandlerFactory) throws JRException { + return loadBytesFromLocation(location, classLoader, urlHandlerFactory, null); + } + + public static byte[] loadBytesFromLocation(String location, ClassLoader classLoader, URLStreamHandlerFactory urlHandlerFactory, FileResolver fileResolver) throws JRException { + URL url = JRResourcesUtil.createURL(location, urlHandlerFactory); + if (url != null) + return loadBytes(url); + File file = JRResourcesUtil.resolveFile(location, fileResolver); + if (file != null) + return loadBytes(file); + url = JRResourcesUtil.findClassLoaderResource(location, classLoader, JRLoader.class); + if (url != null) + return loadBytes(url); + throw new JRException("Byte data not found at location : " + location); + } + + public static InputStream getLocationInputStream(String location) throws JRException { + InputStream is = null; + is = getResourceInputStream(location); + if (is == null) + is = getFileInputStream(location); + if (is == null) + is = getURLInputStream(location); + return is; + } + + public static InputStream getFileInputStream(String filename) throws JRException { + InputStream is = null; + File file = new File(filename); + if (file.exists() && file.isFile()) + try { + is = new FileInputStream(file); + } catch (FileNotFoundException e) { + throw new JRException("Error opening file " + filename); + } + return is; + } + + public static InputStream getResourceInputStream(String resource) { + InputStream is = null; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + is = classLoader.getResourceAsStream(resource); + if (is == null) { + classLoader = JRLoader.class.getClassLoader(); + if (classLoader != null) + is = classLoader.getResourceAsStream(resource); + if (is == null) + is = JRProperties.class.getResourceAsStream("/" + resource); + } + return is; + } + + public static InputStream getURLInputStream(String spec) throws JRException { + InputStream is = null; + try { + URL url = new URL(spec); + is = url.openStream(); + } catch (MalformedURLException e) { + + } catch (IOException e) { + throw new JRException("Error opening URL " + spec); + } + return is; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRPenUtil.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRPenUtil.java new file mode 100644 index 0000000..d9b1d9f --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRPenUtil.java @@ -0,0 +1,61 @@ +package net.sf.jasperreports.engine.util; + +import net.sf.jasperreports.engine.JRPen; + +public class JRPenUtil { + public static void setLinePenFromPen(byte pen, JRPen linePen) { + setLinePenFromPen(new Byte(pen), linePen); + } + + public static void setLinePenFromPen(Byte pen, JRPen linePen) { + if (pen != null) + switch (pen.byteValue()) { + case 5: + linePen.setLineWidth(0.5F); + linePen.setLineStyle((byte)0); + break; + case 1: + linePen.setLineWidth(1.0F); + linePen.setLineStyle((byte)0); + break; + case 2: + linePen.setLineWidth(2.0F); + linePen.setLineStyle((byte)0); + break; + case 3: + linePen.setLineWidth(4.0F); + linePen.setLineStyle((byte)0); + break; + case 4: + linePen.setLineWidth(1.0F); + linePen.setLineStyle((byte)1); + break; + case 0: + linePen.setLineWidth(0.0F); + linePen.setLineStyle((byte)0); + break; + } + } + + public static byte getPenFromLinePen(JRPen linePen) { + float lineWidth = linePen.getLineWidth().floatValue(); + if (lineWidth <= 0.0F) + return 0; + if (0.0F < lineWidth && lineWidth < 1.0F) + return 5; + if (1.0F <= lineWidth && lineWidth < 2.0F) { + if (linePen.getLineStyle().byteValue() == 1) + return 4; + return 1; + } + if (2.0F <= lineWidth && lineWidth < 4.0F) + return 2; + return 3; + } + + public static Byte getOwnPenFromLinePen(JRPen linePen) { + if (linePen.getOwnLineWidth() == null && linePen.getOwnLineStyle() == null) + return null; + return new Byte(getPenFromLinePen(linePen)); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRProperties.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRProperties.java new file mode 100644 index 0000000..d002d3d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRProperties.java @@ -0,0 +1,331 @@ +package net.sf.jasperreports.engine.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRProperties { + protected static final String DEFAULT_PROPERTIES_FILE = "jasperreports.properties"; + + public static final String PROPERTY_PREFIX = "net.sf.jasperreports."; + + public static final String PROPERTIES_FILE = "net.sf.jasperreports.properties"; + + public static final String COMPILER_CLASS = "net.sf.jasperreports.compiler.class"; + + public static final String COMPILER_XML_VALIDATION = "net.sf.jasperreports.compiler.xml.validation"; + + public static final String COMPILER_KEEP_JAVA_FILE = "net.sf.jasperreports.compiler.keep.java.file"; + + public static final String COMPILER_TEMP_DIR = "net.sf.jasperreports.compiler.temp.dir"; + + public static final String COMPILER_CLASSPATH = "net.sf.jasperreports.compiler.classpath"; + + public static final String EXPORT_XML_VALIDATION = "net.sf.jasperreports.export.xml.validation"; + + public static final String PDF_FONT_FILES_PREFIX = "net.sf.jasperreports.export.pdf.font."; + + public static final String PDF_FONT_DIRS_PREFIX = "net.sf.jasperreports.export.pdf.fontdir."; + + public static final String QUERY_EXECUTER_FACTORY_PREFIX = "net.sf.jasperreports.query.executer.factory."; + + public static final String SUBREPORT_RUNNER_FACTORY = "net.sf.jasperreports.subreport.runner.factory"; + + public static final String PDF_FORCE_LINEBREAK_POLICY = "net.sf.jasperreports.export.pdf.force.linebreak.policy"; + + protected static Properties props; + + protected static Properties savedProps; + + static { + initProperties(); + } + + protected static void initProperties() { + try { + Properties defaults = getDefaults(); + String propFile = getSystemProperty("net.sf.jasperreports.properties"); + if (propFile == null) { + props = loadProperties("jasperreports.properties", defaults); + if (props == null) + props = new Properties(defaults); + } else { + props = loadProperties(propFile, defaults); + if (props == null) + throw new JRRuntimeException("Could not load properties file \"" + propFile + "\""); + } + loadSystemProperties(); + } catch (JRException e) { + throw new JRRuntimeException("Error loading the properties", e); + } + } + + protected static void loadSystemProperties() { + loadSystemProperty("jasper.reports.compiler.class", "net.sf.jasperreports.compiler.class"); + loadSystemProperty("jasper.reports.compile.xml.validation", "net.sf.jasperreports.compiler.xml.validation"); + loadSystemProperty("jasper.reports.export.xml.validation", "net.sf.jasperreports.export.xml.validation"); + loadSystemProperty("jasper.reports.compile.keep.java.file", "net.sf.jasperreports.compiler.keep.java.file"); + loadSystemProperty("jasper.reports.compile.temp", "net.sf.jasperreports.compiler.temp.dir"); + loadSystemProperty("jasper.reports.compile.class.path", "net.sf.jasperreports.compiler.classpath"); + } + + protected static Properties getDefaults() throws JRException { + Properties defaults = new Properties(); + InputStream is = JRProperties.class.getResourceAsStream("/default.jasperreports.properties"); + if (is == null) + throw new JRException("Default properties file not found."); + try { + defaults.load(is); + } catch (IOException e) { + throw new JRException("Failed to load default properties.", e); + } finally { + try { + is.close(); + } catch (IOException e) {} + } + String userDir = getSystemProperty("user.dir"); + if (userDir != null) + defaults.setProperty("net.sf.jasperreports.compiler.temp.dir", userDir); + String classPath = getSystemProperty("java.class.path"); + if (classPath != null) + defaults.setProperty("net.sf.jasperreports.compiler.classpath", classPath); + return defaults; + } + + protected static String getSystemProperty(String propertyName) { + try { + return System.getProperty(propertyName); + } catch (SecurityException e) { + return null; + } + } + + protected static void loadSystemProperty(String sysKey, String propKey) { + String val = getSystemProperty(sysKey); + if (val != null) + props.setProperty(propKey, val); + } + + public static Properties loadProperties(String name, Properties defaults) throws JRException { + Properties properties = null; + InputStream is = null; + try { + is = JRLoader.getLocationInputStream(name); + } catch (SecurityException e) {} + if (is != null) { + properties = new Properties(defaults); + try { + properties.load(is); + } catch (IOException e) { + throw new JRException("Failed to load properties file \"" + name + "\"", e); + } finally { + try { + is.close(); + } catch (IOException e) {} + } + } + return properties; + } + + public static String getProperty(String key) { + return props.getProperty(key); + } + + public static boolean getBooleanProperty(String key) { + return asBoolean(props.getProperty(key)); + } + + public static int getIntegerProperty(String key) { + return asInteger(props.getProperty(key)); + } + + public static boolean asBoolean(String value) { + return Boolean.valueOf(value).booleanValue(); + } + + public static int asInteger(String value) { + return Integer.parseInt(value); + } + + public static void setProperty(String key, String value) { + props.setProperty(key, value); + } + + public static void setProperty(String key, boolean value) { + props.setProperty(key, String.valueOf(value)); + } + + public static void backupProperties() { + savedProps = (Properties)props.clone(); + } + + public static void restoreProperties() { + if (savedProps != null) + try { + props.clear(); + props.putAll(savedProps); + } finally { + savedProps = null; + } + } + + public static class PropertySuffix { + protected final String key; + + protected final String suffix; + + protected final String value; + + public PropertySuffix(String key, String suffix, String value) { + this.key = key; + this.suffix = suffix; + this.value = value; + } + + public String getKey() { + return this.key; + } + + public String getSuffix() { + return this.suffix; + } + + public String getValue() { + return this.value; + } + } + + public static List getProperties(String prefix) { + int prefixLength = prefix.length(); + List values = new ArrayList(); + for (Enumeration names = props.propertyNames(); names.hasMoreElements(); ) { + String name = (String)names.nextElement(); + if (name.startsWith(prefix)) { + String suffix = name.substring(prefixLength); + String value = props.getProperty(name); + values.add(new PropertySuffix(name, suffix, value)); + } + } + return values; + } + + public static List getProperties(JRPropertiesHolder propertiesHolder, String prefix) { + return getProperties(getOwnProperties(propertiesHolder), prefix); + } + + public static List getProperties(JRPropertiesMap propertiesMap, String prefix) { + int prefixLength = prefix.length(); + List values = new ArrayList(); + if (propertiesMap != null) { + String[] propertyNames = propertiesMap.getPropertyNames(); + for (int i = 0; i < propertyNames.length; i++) { + String name = propertyNames[i]; + if (name.startsWith(prefix)) { + String suffix = name.substring(prefixLength); + String value = propertiesMap.getProperty(name); + values.add(new PropertySuffix(name, suffix, value)); + } + } + } + return values; + } + + public static String getProperty(JRPropertiesHolder propertiesHolder, String key) { + String value = null; + while (propertiesHolder != null && value == null) { + if (propertiesHolder.hasProperties()) + value = propertiesHolder.getPropertiesMap().getProperty(key); + propertiesHolder = propertiesHolder.getParentProperties(); + } + if (value == null) + value = props.getProperty(key); + return value; + } + + public static String getProperty(JRPropertiesMap propertiesMap, String key) { + String value = null; + if (propertiesMap != null) + value = propertiesMap.getProperty(key); + if (value == null) + value = props.getProperty(key); + return value; + } + + public static boolean getBooleanProperty(JRPropertiesHolder propertiesHolder, String key, boolean defaultValue) { + String value = getProperty(propertiesHolder, key); + return (value == null) ? defaultValue : asBoolean(value); + } + + public static boolean getBooleanProperty(JRPropertiesMap propertiesMap, String key, boolean defaultValue) { + String value = getProperty(propertiesMap, key); + return (value == null) ? defaultValue : asBoolean(value); + } + + public static int getIntegerProperty(JRPropertiesHolder propertiesHolder, String key, int defaultValue) { + String value = getProperty(propertiesHolder, key); + return (value == null) ? defaultValue : asInteger(value); + } + + public static int getIntegerProperty(JRPropertiesMap propertiesMap, String key, int defaultValue) { + String value = getProperty(propertiesMap, key); + return (value == null) ? defaultValue : asInteger(value); + } + + public static int getIntegerProperty(String key, int defaultValue) { + String value = getProperty(key); + return (value == null) ? defaultValue : asInteger(value); + } + + public static long asLong(String value) { + return Long.parseLong(value); + } + + public static long getLongProperty(String key) { + return asLong(props.getProperty(key)); + } + + public static long getLongProperty(JRPropertiesMap propertiesMap, String key, int defaultValue) { + String value = getProperty(propertiesMap, key); + return (value == null) ? defaultValue : asLong(value); + } + + protected static JRPropertiesMap getOwnProperties(JRPropertiesHolder propertiesHolder) { + return propertiesHolder.hasProperties() ? propertiesHolder.getPropertiesMap() : null; + } + + public static void transferProperties(JRPropertiesHolder source, JRPropertiesHolder destination, String tranferPropertiesPrefix) { + if (!source.hasProperties()) + return; + transfer(source.getPropertiesMap(), destination, tranferPropertiesPrefix); + } + + public static void transferProperties(JRPropertiesMap source, JRPropertiesHolder destination, String tranferPropertiesPrefix) { + if (source == null || !source.hasProperties()) + return; + transfer(source, destination, tranferPropertiesPrefix); + } + + protected static void transfer(JRPropertiesMap source, JRPropertiesHolder destination, String tranferPropertiesPrefix) { + List transferPrefixProps = getProperties(tranferPropertiesPrefix); + for (Iterator prefixIt = transferPrefixProps.iterator(); prefixIt.hasNext(); ) { + PropertySuffix transferPrefixProp = prefixIt.next(); + String transferPrefix = transferPrefixProp.getValue(); + if (transferPrefix != null && transferPrefix.length() > 0) { + List transferProps = getProperties(source, transferPrefix); + for (Iterator propIt = transferProps.iterator(); propIt.hasNext(); ) { + PropertySuffix property = propIt.next(); + String value = property.getValue(); + destination.getPropertiesMap().setProperty(property.getKey(), value); + } + } + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryChunkHandler.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryChunkHandler.java new file mode 100644 index 0000000..903d60a --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryChunkHandler.java @@ -0,0 +1,11 @@ +package net.sf.jasperreports.engine.util; + +public interface JRQueryChunkHandler { + void handleTextChunk(String paramString); + + void handleParameterChunk(String paramString); + + void handleParameterClauseChunk(String paramString); + + void handleClauseChunk(String[] paramArrayOfString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryExecuterUtils.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryExecuterUtils.java new file mode 100644 index 0000000..b0cfee5 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryExecuterUtils.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.engine.util; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.query.JRQueryExecuterFactory; + +public class JRQueryExecuterUtils { + private static final JRSingletonCache cache = new JRSingletonCache(JRQueryExecuterFactory.class); + + public static JRQueryExecuterFactory getQueryExecuterFactory(String language) throws JRException { + String factoryClassName = JRProperties.getProperty("net.sf.jasperreports.query.executer.factory." + language); + if (factoryClassName == null) + throw new JRException("No query executer factory class registered for " + language + " queries. " + "Create a propery named " + "net.sf.jasperreports.query.executer.factory." + language + "."); + return (JRQueryExecuterFactory)cache.getCachedInstance(factoryClassName); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryParser.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryParser.java new file mode 100644 index 0000000..7db646c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRQueryParser.java @@ -0,0 +1,168 @@ +package net.sf.jasperreports.engine.util; + +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; +import net.sf.jasperreports.engine.JRQueryChunk; +import net.sf.jasperreports.engine.JRRuntimeException; + +public class JRQueryParser { + private static final JRQueryParser singleton = new JRQueryParser(); + + public static JRQueryParser instance() { + return singleton; + } + + public void parse(String text, JRQueryChunkHandler chunkHandler) { + if (text != null) { + StringBuffer textChunk = new StringBuffer(); + StringTokenizer tkzer = new StringTokenizer(text, "$", true); + boolean wasDelim = false; + while (tkzer.hasMoreTokens()) { + String token = tkzer.nextToken(); + if (token.equals("$")) { + if (wasDelim) + textChunk.append("$"); + wasDelim = true; + continue; + } + if (token.startsWith("P{") && wasDelim) { + int end = token.indexOf('}'); + if (end > 0) { + if (textChunk.length() > 0) + chunkHandler.handleTextChunk(textChunk.toString()); + String parameterChunk = token.substring(2, end); + chunkHandler.handleParameterChunk(parameterChunk); + textChunk = new StringBuffer(token.substring(end + 1)); + } else { + if (wasDelim) + textChunk.append("$"); + textChunk.append(token); + } + } else if (token.startsWith("P!{") && wasDelim) { + int end = token.indexOf('}'); + if (end > 0) { + if (textChunk.length() > 0) + chunkHandler.handleTextChunk(textChunk.toString()); + String parameterClauseChunk = token.substring(3, end); + chunkHandler.handleParameterClauseChunk(parameterClauseChunk); + textChunk = new StringBuffer(token.substring(end + 1)); + } else { + if (wasDelim) + textChunk.append("$"); + textChunk.append(token); + } + } else if (token.startsWith("X{") && wasDelim) { + int end = token.indexOf('}'); + if (end > 0) { + if (textChunk.length() > 0) + chunkHandler.handleTextChunk(textChunk.toString()); + String clauseChunk = token.substring(2, end); + String[] tokens = parseClause(clauseChunk); + chunkHandler.handleClauseChunk(tokens); + textChunk = new StringBuffer(token.substring(end + 1)); + } else { + if (wasDelim) + textChunk.append("$"); + textChunk.append(token); + } + } else { + if (wasDelim) + textChunk.append("$"); + textChunk.append(token); + } + wasDelim = false; + } + if (wasDelim) + textChunk.append("$"); + if (textChunk.length() > 0) + chunkHandler.handleTextChunk(textChunk.toString()); + } + } + + protected String[] parseClause(String clauseChunk) { + List tokens = new ArrayList(); + boolean wasClauseToken = false; + String separator = determineClauseTokenSeparator(clauseChunk); + StringTokenizer tokenizer = new StringTokenizer(clauseChunk, separator, true); + while (tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken(); + if (token.equals(separator)) { + if (!wasClauseToken) + tokens.add(""); + wasClauseToken = false; + continue; + } + tokens.add(token); + wasClauseToken = true; + } + if (!wasClauseToken) + tokens.add(""); + return tokens.toArray(new String[tokens.size()]); + } + + protected String determineClauseTokenSeparator(String clauseChunk) { + String allSeparators = getTokenSeparators(); + if (allSeparators == null || allSeparators.length() == 0) + throw new JRRuntimeException("No token separators configured"); + int firstSepIdx = 0; + int clauseLenght = clauseChunk.length(); + for (int idx = 0; idx < clauseLenght; idx++) { + int sepIdx = allSeparators.indexOf(clauseChunk.charAt(idx)); + if (sepIdx >= 0) { + firstSepIdx = sepIdx; + break; + } + } + return String.valueOf(allSeparators.charAt(firstSepIdx)); + } + + protected String getTokenSeparators() { + return JRProperties.getProperty("net.sf.jasperreports.query.chunk.token.separators"); + } + + public String asText(JRQueryChunk[] chunks) { + String text = ""; + if (chunks != null && chunks.length > 0) { + StringBuffer sbuffer = new StringBuffer(); + for (int i = 0; i < chunks.length; i++) { + JRQueryChunk queryChunk = chunks[i]; + switch (queryChunk.getType()) { + case 2: + sbuffer.append("$P{"); + sbuffer.append(queryChunk.getText()); + sbuffer.append("}"); + break; + case 3: + sbuffer.append("$P!{"); + sbuffer.append(queryChunk.getText()); + sbuffer.append("}"); + break; + case 4: + sbuffer.append("$X{"); + sbuffer.append(queryChunk.getText()); + sbuffer.append("}"); + break; + default: + sbuffer.append(queryChunk.getText()); + break; + } + } + text = sbuffer.toString(); + } + return text; + } + + public String asClauseText(String[] tokens) { + StringBuffer sb = new StringBuffer(); + if (tokens != null && tokens.length > 0) + for (int i = 0; i < tokens.length; i++) { + if (i > 0) + sb.append(','); + String token = tokens[i]; + if (token != null) + sb.append(token); + } + return sb.toString(); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRResourcesUtil.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRResourcesUtil.java new file mode 100644 index 0000000..a383aed --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRResourcesUtil.java @@ -0,0 +1,223 @@ +package net.sf.jasperreports.engine.util; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLStreamHandler; +import java.net.URLStreamHandlerFactory; +import java.util.Locale; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class JRResourcesUtil { + private static FileResolver globalFileResolver; + + private static ThreadLocalStack localFileResolverStack = new ThreadLocalStack(); + + private static URLStreamHandlerFactory globalURLHandlerFactory; + + private static ThreadLocalStack localURLHandlerFactoryStack = new ThreadLocalStack(); + + private static ClassLoader globalClassLoader; + + private static ThreadLocalStack localClassLoaderStack = new ThreadLocalStack(); + + public static URL createURL(String spec, URLStreamHandlerFactory urlHandlerFactory) { + URL uRL; + URLStreamHandler handler = getURLHandler(spec, urlHandlerFactory); + try { + if (handler == null) { + uRL = new URL(spec); + } else { + uRL = new URL(null, spec, handler); + } + } catch (MalformedURLException e) { + uRL = null; + } + return uRL; + } + + public static URLStreamHandler getURLHandler(String spec, URLStreamHandlerFactory urlHandlerFactory) { + urlHandlerFactory = getURLHandlerFactory(urlHandlerFactory); + URLStreamHandler handler = null; + if (urlHandlerFactory != null) { + String protocol = getURLProtocol(spec); + if (protocol != null) + handler = urlHandlerFactory.createURLStreamHandler(protocol); + } + return handler; + } + + private static String getURLProtocol(String spec) { + String protocol = null; + spec = spec.trim(); + int colon = spec.indexOf(':'); + if (colon > 0) { + String proto = spec.substring(0, colon); + if (protocolValid(proto)) + protocol = proto; + } + return protocol; + } + + private static boolean protocolValid(String protocol) { + int length = protocol.length(); + if (length < 1) + return false; + if (!Character.isLetter(protocol.charAt(0))) + return false; + for (int i = 1; i < length; i++) { + char c = protocol.charAt(i); + if (!Character.isLetterOrDigit(c) && c != '+' && c != '-' && c != '.') + return false; + } + return true; + } + + public static FileResolver getFileResolver(FileResolver fileResolver) { + if (fileResolver == null) { + fileResolver = getThreadFileResolver(); + if (fileResolver == null) + fileResolver = globalFileResolver; + } + return fileResolver; + } + + public static FileResolver getGlobalFileResolver() { + return globalFileResolver; + } + + public static FileResolver getThreadFileResolver() { + return (FileResolver)localFileResolverStack.top(); + } + + public static void setThreadFileResolver(FileResolver fileResolver) { + localFileResolverStack.push(fileResolver); + } + + public static void resetThreadFileResolver() { + localFileResolverStack.pop(); + } + + public static void setGlobalFileResolver(FileResolver fileResolver) { + globalFileResolver = fileResolver; + } + + public static File resolveFile(String location, FileResolver fileResolver) { + fileResolver = getFileResolver(fileResolver); + if (fileResolver != null) + return fileResolver.resolveFile(location); + File file = new File(location); + if (file.exists() && file.isFile()) + return file; + return null; + } + + public static URLStreamHandlerFactory getURLHandlerFactory(URLStreamHandlerFactory urlHandlerFactory) { + if (urlHandlerFactory == null) { + urlHandlerFactory = getThreadURLStreamHandlerFactory(); + if (urlHandlerFactory == null) + urlHandlerFactory = globalURLHandlerFactory; + } + return urlHandlerFactory; + } + + public static URLStreamHandlerFactory getGlobalURLStreamHandlerFactory() { + return globalURLHandlerFactory; + } + + public static URLStreamHandlerFactory getThreadURLStreamHandlerFactory() { + return (URLStreamHandlerFactory)localURLHandlerFactoryStack.top(); + } + + public static void setThreadURLHandlerFactory(URLStreamHandlerFactory urlHandlerFactory) { + localURLHandlerFactoryStack.push(urlHandlerFactory); + } + + public static void resetThreadURLHandlerFactory() { + localURLHandlerFactoryStack.pop(); + } + + public static void setGlobalURLHandlerFactory(URLStreamHandlerFactory urlHandlerFactory) { + globalURLHandlerFactory = urlHandlerFactory; + } + + public static ClassLoader getClassLoader(ClassLoader classLoader) { + if (classLoader == null) { + classLoader = getThreadClassLoader(); + if (classLoader == null) + classLoader = globalClassLoader; + } + return classLoader; + } + + public static ClassLoader getGlobalClassLoader() { + return globalClassLoader; + } + + public static ClassLoader getThreadClassLoader() { + return (ClassLoader)localClassLoaderStack.top(); + } + + public static void setThreadClassLoader(ClassLoader classLoader) { + localClassLoaderStack.push(classLoader); + } + + public static void resetClassLoader() { + localClassLoaderStack.pop(); + } + + public static void setGlobalClassLoader(ClassLoader classLoader) { + globalClassLoader = classLoader; + } + + public static URL findClassLoaderResource(String location, ClassLoader classLoader, Class clazz) { + classLoader = getClassLoader(classLoader); + URL url = null; + if (classLoader != null) + url = classLoader.getResource(location); + if (url == null) { + classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + url = classLoader.getResource(location); + if (url == null) { + classLoader = clazz.getClassLoader(); + if (classLoader == null) { + url = clazz.getResource("/" + location); + } else { + url = classLoader.getResource(location); + } + } + } + return url; + } + + public static ResourceBundle loadResourceBundle(String baseName, Locale locale) { + return loadResourceBundle(baseName, locale, null); + } + + public static ResourceBundle loadResourceBundle(String baseName, Locale locale, ClassLoader classLoader) { + ResourceBundle resourceBundle = null; + classLoader = getClassLoader(classLoader); + if (classLoader != null) + try { + resourceBundle = ResourceBundle.getBundle(baseName, locale, classLoader); + } catch (MissingResourceException e) {} + if (resourceBundle == null) { + classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + try { + resourceBundle = ResourceBundle.getBundle(baseName, locale, classLoader); + } catch (MissingResourceException e) {} + } + if (resourceBundle == null) { + classLoader = JRClassLoader.class.getClassLoader(); + if (classLoader == null) { + resourceBundle = ResourceBundle.getBundle(baseName, locale); + } else { + resourceBundle = ResourceBundle.getBundle(baseName, locale, classLoader); + } + } + return resourceBundle; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRSaver.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRSaver.java new file mode 100644 index 0000000..849fb31 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRSaver.java @@ -0,0 +1,76 @@ +package net.sf.jasperreports.engine.util; + +import java.io.BufferedOutputStream; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.OutputStream; +import net.sf.jasperreports.engine.JRException; + +public class JRSaver { + public static void saveObject(Object obj, String fileName) throws JRException { + saveObject(obj, new File(fileName)); + } + + public static void saveObject(Object obj, File file) throws JRException { + FileOutputStream fos = null; + ObjectOutputStream oos = null; + try { + fos = new FileOutputStream(file); + BufferedOutputStream bos = new BufferedOutputStream(fos); + oos = new ObjectOutputStream(bos); + oos.writeObject(obj); + oos.flush(); + bos.flush(); + fos.flush(); + } catch (IOException e) { + throw new JRException("Error saving file : " + file, e); + } finally { + if (oos != null) + try { + oos.close(); + } catch (IOException e) {} + if (fos != null) + try { + fos.close(); + } catch (IOException e) {} + } + } + + public static void saveObject(Object obj, OutputStream os) throws JRException { + ObjectOutputStream oos = null; + try { + oos = new ObjectOutputStream(os); + oos.writeObject(obj); + oos.flush(); + } catch (IOException e) { + throw new JRException("Error saving object to OutputStream", e); + } finally { + if (oos != null) + try { + oos.close(); + } catch (IOException e) {} + } + } + + public static void saveClassSource(String source, File file) throws JRException { + FileWriter fwriter = null; + try { + fwriter = new FileWriter(file); + BufferedWriter bufferedWriter = new BufferedWriter(fwriter); + bufferedWriter.write(source); + bufferedWriter.flush(); + fwriter.flush(); + } catch (IOException e) { + throw new JRException("Error saving expressions class file : " + file, e); + } finally { + if (fwriter != null) + try { + fwriter.close(); + } catch (IOException e) {} + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRSingletonCache.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRSingletonCache.java new file mode 100644 index 0000000..870e1c6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRSingletonCache.java @@ -0,0 +1,61 @@ +package net.sf.jasperreports.engine.util; + +import java.util.Map; +import net.sf.jasperreports.engine.JRException; +import org.apache.commons.collections.ReferenceMap; + +public class JRSingletonCache { + private static final Object CONTEXT_KEY_NULL = new Object(); + + private final ReferenceMap cache; + + private final Class itf; + + public JRSingletonCache(Class itf) { + this.cache = new ReferenceMap(2, 1); + this.itf = itf; + } + + public synchronized Object getCachedInstance(String className) throws JRException { + Map contextCache = getContextInstanceCache(); + Object instance = contextCache.get(className); + if (instance == null) { + instance = createInstance(className); + contextCache.put(className, instance); + } + return instance; + } + + protected Object createInstance(String className) throws JRException { + try { + Class clazz = JRClassLoader.loadClassForName(className); + if (this.itf != null && !this.itf.isAssignableFrom(clazz)) + throw new JRException("Class \"" + className + "\" should be compatible with \"" + this.itf.getName() + "\""); + return clazz.newInstance(); + } catch (ClassNotFoundException e) { + throw new JRException("Class " + className + " not found.", e); + } catch (InstantiationException e) { + throw new JRException("Error instantiating class " + className + ".", e); + } catch (IllegalAccessException e) { + throw new JRException("Error instantiating class " + className + ".", e); + } + } + + protected Map getContextInstanceCache() { + ReferenceMap referenceMap; + Object contextKey = getContextKey(); + Map contextCache = (Map)this.cache.get(contextKey); + if (contextCache == null) { + referenceMap = new ReferenceMap(); + this.cache.put(contextKey, referenceMap); + } + return (Map)referenceMap; + } + + protected Object getContextKey() { + Object key = Thread.currentThread().getContextClassLoader(); + if (key == null) + key = CONTEXT_KEY_NULL; + return key; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRStringUtil.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRStringUtil.java new file mode 100644 index 0000000..618dd67 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRStringUtil.java @@ -0,0 +1,176 @@ +package net.sf.jasperreports.engine.util; + +public class JRStringUtil { + public static String replaceCRwithLF(String text) { + if (text != null) { + int length = text.length(); + char[] chars = text.toCharArray(); + int r = 0; + boolean dirty = false; + for (int i = 0; i < length; i++) { + char ch = chars[i]; + if (ch == '\r') { + dirty = true; + if (i + 1 < length && chars[i + 1] == '\n') { + r++; + } else { + chars[i - r] = '\n'; + } + } else { + chars[i - r] = ch; + } + } + return dirty ? new String(chars, 0, length - r) : text; + } + return null; + } + + public static String xmlEncode(String text) { + int length = text.length(); + if (text != null && length > 0) { + StringBuffer ret = new StringBuffer(length * 12 / 10); + int last = 0; + for (int i = 0; i < length; i++) { + char c = text.charAt(i); + switch (c) { + case '&': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("&"); + break; + case '>': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append(">"); + break; + case '<': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("<"); + break; + case '"': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("""); + break; + case '\'': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("'"); + break; + } + } + if (last < length) + ret.append(text.substring(last)); + return ret.toString(); + } + return text; + } + + public static String htmlEncode(String text) { + int length = text.length(); + if (text != null && length > 0) { + StringBuffer ret = new StringBuffer(length * 12 / 10); + boolean isEncodeSpace = true; + int last = 0; + for (int i = 0; i < length; i++) { + char c = text.charAt(i); + switch (c) { + case ' ': + if (isEncodeSpace) { + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append(" "); + isEncodeSpace = false; + break; + } + isEncodeSpace = true; + break; + case '&': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("&"); + isEncodeSpace = false; + break; + case '>': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append(">"); + isEncodeSpace = false; + break; + case '<': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("<"); + isEncodeSpace = false; + break; + case '"': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("""); + isEncodeSpace = false; + break; + case '\n': + if (last < i) + ret.append(text.substring(last, i)); + last = i + 1; + ret.append("
"); + isEncodeSpace = false; + break; + default: + isEncodeSpace = false; + break; + } + } + if (last < length) + ret.append(text.substring(last)); + return ret.toString(); + } + return text; + } + + public static String getLiteral(String name) { + if (isValidLiteral(name)) + return name; + StringBuffer buffer = new StringBuffer(name.length() + 5); + char[] literalChars = new char[name.length()]; + name.getChars(0, literalChars.length, literalChars, 0); + for (int i = 0; i < literalChars.length; i++) { + if (i == 0 && !Character.isJavaIdentifierStart(literalChars[i])) { + buffer.append(literalChars[i]); + } else if (i != 0 && !Character.isJavaIdentifierPart(literalChars[i])) { + buffer.append(literalChars[i]); + } else { + buffer.append(literalChars[i]); + } + } + return buffer.toString(); + } + + private static boolean isValidLiteral(String literal) { + boolean result = true; + char[] literalChars = new char[literal.length()]; + literal.getChars(0, literalChars.length, literalChars, 0); + for (int i = 0; i < literalChars.length; i++) { + if (i == 0 && !Character.isJavaIdentifierStart(literalChars[i])) { + result = false; + break; + } + if (i != 0 && !Character.isJavaIdentifierPart(literalChars[i])) { + result = false; + break; + } + } + return result; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRStyleResolver.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRStyleResolver.java new file mode 100644 index 0000000..5c9247d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRStyleResolver.java @@ -0,0 +1,785 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Color; +import net.sf.jasperreports.charts.JRCategoryAxisFormat; +import net.sf.jasperreports.charts.JRTimeAxisFormat; +import net.sf.jasperreports.charts.JRValueAxisFormat; +import net.sf.jasperreports.charts.JRXAxisFormat; +import net.sf.jasperreports.charts.JRYAxisFormat; +import net.sf.jasperreports.engine.JRAlignment; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRCommonElement; +import net.sf.jasperreports.engine.JRCommonGraphicElement; +import net.sf.jasperreports.engine.JRCommonImage; +import net.sf.jasperreports.engine.JRCommonRectangle; +import net.sf.jasperreports.engine.JRCommonText; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.base.JRBoxPen; + +public class JRStyleResolver { + private static final Integer INTEGER_ZERO = new Integer(0); + + private static JRFont getBaseFont(JRFont font) { + if (font.getReportFont() != null) + return (JRFont)font.getReportFont(); + if (font.getDefaultStyleProvider() != null) + return (JRFont)font.getDefaultStyleProvider().getDefaultFont(); + return null; + } + + private static JRStyle getBaseStyle(JRStyleContainer styleContainer) { + if (styleContainer != null) { + if (styleContainer.getStyle() != null) + return styleContainer.getStyle(); + if (styleContainer.getDefaultStyleProvider() != null) + return styleContainer.getDefaultStyleProvider().getDefaultStyle(); + } + return null; + } + + public static byte getMode(JRCommonElement element, byte defaultMode) { + if (element.getOwnMode() != null) + return element.getOwnMode().byteValue(); + JRStyle style = getBaseStyle((JRStyleContainer)element); + if (style != null && style.getMode() != null) + return style.getMode().byteValue(); + return defaultMode; + } + + public static Byte getMode(JRStyle style) { + if (style.getOwnMode() != null) + return style.getOwnMode(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getMode(); + return null; + } + + public static Color getForecolor(JRCommonElement element) { + if (element.getOwnForecolor() != null) + return element.getOwnForecolor(); + JRStyle style = getBaseStyle((JRStyleContainer)element); + if (style != null && style.getForecolor() != null) + return style.getForecolor(); + return Color.black; + } + + public static Color getForecolor(JRChartPlot plot) { + JRChart chart = plot.getChart(); + if (chart != null) + return getForecolor((JRCommonElement)chart); + return Color.black; + } + + public static Color getForecolor(JRStyle style) { + if (style.getOwnForecolor() != null) + return style.getOwnForecolor(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getForecolor(); + return null; + } + + public static Color getBackcolor(JRCommonElement element) { + if (element.getOwnBackcolor() != null) + return element.getOwnBackcolor(); + JRStyle style = getBaseStyle((JRStyleContainer)element); + if (style != null && style.getBackcolor() != null) + return style.getBackcolor(); + return Color.white; + } + + public static Color getBackcolor(JRChartPlot plot) { + if (plot.getOwnBackcolor() != null) + return plot.getOwnBackcolor(); + JRChart chart = plot.getChart(); + if (chart != null) + return getBackcolor((JRCommonElement)chart); + return Color.white; + } + + public static Color getBackcolor(JRStyle style) { + if (style.getOwnBackcolor() != null) + return style.getOwnBackcolor(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getBackcolor(); + return null; + } + + public static Float getLineWidth(JRPen pen, Float defaultLineWidth) { + if (pen.getOwnLineWidth() != null) + return pen.getOwnLineWidth(); + JRStyle baseStyle = getBaseStyle(pen.getStyleContainer()); + if (baseStyle != null && baseStyle.getLinePen().getLineWidth() != null) + return baseStyle.getLinePen().getLineWidth(); + return defaultLineWidth; + } + + public static Float getLineWidth(JRBoxPen boxPen, Float defaultLineWidth) { + if (boxPen.getOwnLineWidth() != null) + return boxPen.getOwnLineWidth(); + if (boxPen.getBox().getPen().getOwnLineWidth() != null) + return boxPen.getBox().getPen().getOwnLineWidth(); + JRStyle baseStyle = getBaseStyle(boxPen.getStyleContainer()); + if (baseStyle != null && boxPen.getPen(baseStyle.getLineBox()).getLineWidth() != null) + return boxPen.getPen(baseStyle.getLineBox()).getLineWidth(); + return defaultLineWidth; + } + + public static Byte getLineStyle(JRPen pen) { + if (pen.getOwnLineStyle() != null) + return pen.getOwnLineStyle(); + JRStyle baseStyle = getBaseStyle(pen.getStyleContainer()); + if (baseStyle != null && baseStyle.getLinePen().getLineStyle() != null) + return baseStyle.getLinePen().getLineStyle(); + return new Byte((byte)0); + } + + public static Byte getLineStyle(JRBoxPen boxPen) { + if (boxPen.getOwnLineStyle() != null) + return boxPen.getOwnLineStyle(); + if (boxPen.getBox().getPen().getOwnLineStyle() != null) + return boxPen.getBox().getPen().getOwnLineStyle(); + JRStyle baseStyle = getBaseStyle(boxPen.getStyleContainer()); + if (baseStyle != null && boxPen.getPen(baseStyle.getLineBox()).getLineStyle() != null) + return boxPen.getPen(baseStyle.getLineBox()).getLineStyle(); + return new Byte((byte)0); + } + + public static Color getLineColor(JRPen pen, Color defaultColor) { + if (pen.getOwnLineColor() != null) + return pen.getOwnLineColor(); + JRStyle baseStyle = getBaseStyle(pen.getStyleContainer()); + if (baseStyle != null && baseStyle.getLinePen().getLineColor() != null) + return baseStyle.getLinePen().getLineColor(); + return defaultColor; + } + + public static Color getLineColor(JRBoxPen boxPen, Color defaultColor) { + if (boxPen.getOwnLineColor() != null) + return boxPen.getOwnLineColor(); + if (boxPen.getBox().getPen().getOwnLineColor() != null) + return boxPen.getBox().getPen().getOwnLineColor(); + JRStyle baseStyle = getBaseStyle(boxPen.getStyleContainer()); + if (baseStyle != null && boxPen.getPen(baseStyle.getLineBox()).getLineColor() != null) + return boxPen.getPen(baseStyle.getLineBox()).getLineColor(); + return defaultColor; + } + + public static byte getFill(JRCommonGraphicElement element) { + if (element.getOwnFill() != null) + return element.getOwnFill().byteValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)element); + if (baseStyle != null && baseStyle.getFill() != null) + return baseStyle.getFill().byteValue(); + return 1; + } + + public static Byte getFill(JRStyle style) { + if (style.getOwnFill() != null) + return style.getOwnFill(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getFill(); + return null; + } + + public static int getRadius(JRCommonRectangle rectangle) { + if (rectangle.getOwnRadius() != null) + return rectangle.getOwnRadius().intValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)rectangle); + if (baseStyle != null && baseStyle.getRadius() != null) + return baseStyle.getRadius().intValue(); + return 0; + } + + public static Integer getRadius(JRStyle style) { + if (style.getOwnRadius() != null) + return style.getOwnRadius(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getRadius(); + return null; + } + + public static byte getScaleImage(JRCommonImage image) { + if (image.getOwnScaleImage() != null) + return image.getOwnScaleImage().byteValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)image); + if (baseStyle != null && baseStyle.getScaleImage() != null) + return baseStyle.getScaleImage().byteValue(); + return 3; + } + + public static Byte getScaleImage(JRStyle style) { + if (style.getOwnScaleImage() != null) + return style.getOwnScaleImage(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getScaleImage(); + return null; + } + + public static byte getHorizontalAlignment(JRAlignment alignment) { + if (alignment.getOwnHorizontalAlignment() != null) + return alignment.getOwnHorizontalAlignment().byteValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)alignment); + if (baseStyle != null && baseStyle.getHorizontalAlignment() != null) + return baseStyle.getHorizontalAlignment().byteValue(); + return 1; + } + + public static Byte getHorizontalAlignment(JRStyle style) { + if (style.getOwnHorizontalAlignment() != null) + return style.getOwnHorizontalAlignment(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null && baseStyle.getHorizontalAlignment() != null) + return baseStyle.getHorizontalAlignment(); + return null; + } + + public static byte getVerticalAlignment(JRAlignment alignment) { + if (alignment.getOwnVerticalAlignment() != null) + return alignment.getOwnVerticalAlignment().byteValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)alignment); + if (baseStyle != null && baseStyle.getVerticalAlignment() != null) + return baseStyle.getVerticalAlignment().byteValue(); + return 1; + } + + public static Byte getVerticalAlignment(JRStyle style) { + if (style.getOwnVerticalAlignment() != null) + return style.getOwnVerticalAlignment(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null && baseStyle.getVerticalAlignment() != null) + return baseStyle.getVerticalAlignment(); + return null; + } + + public static byte getRotation(JRCommonText element) { + if (element.getOwnRotation() != null) + return element.getOwnRotation().byteValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)element); + if (baseStyle != null && baseStyle.getRotation() != null) + return baseStyle.getRotation().byteValue(); + return 0; + } + + public static Byte getRotation(JRStyle style) { + if (style.getOwnRotation() != null) + return style.getOwnRotation(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getRotation(); + return null; + } + + public static byte getLineSpacing(JRCommonText element) { + if (element.getOwnLineSpacing() != null) + return element.getOwnLineSpacing().byteValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)element); + if (baseStyle != null && baseStyle.getLineSpacing() != null) + return baseStyle.getLineSpacing().byteValue(); + return 0; + } + + public static Byte getLineSpacing(JRStyle style) { + if (style.getOwnLineSpacing() != null) + return style.getOwnLineSpacing(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getLineSpacing(); + return null; + } + + public static String getMarkup(JRCommonText element) { + if (element.getOwnMarkup() != null) + return element.getOwnMarkup(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)element); + if (baseStyle != null && baseStyle.getMarkup() != null) + return baseStyle.getMarkup(); + return "none"; + } + + public static String getMarkup(JRStyle style) { + if (style.getOwnMarkup() != null) + return style.getOwnMarkup(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getMarkup(); + return "none"; + } + + public static String getPattern(JRTextField element) { + if (element.getOwnPattern() != null) + return element.getOwnPattern(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)element); + if (baseStyle != null) + return baseStyle.getPattern(); + return null; + } + + public static String getPattern(JRStyle style) { + if (style.getOwnPattern() != null) + return style.getOwnPattern(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getPattern(); + return null; + } + + public static boolean isBlankWhenNull(JRTextField element) { + if (element.isOwnBlankWhenNull() != null) + return element.isOwnBlankWhenNull().booleanValue(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)element); + if (baseStyle != null && baseStyle.isBlankWhenNull() != null) + return baseStyle.isBlankWhenNull().booleanValue(); + return false; + } + + public static Boolean isBlankWhenNull(JRStyle style) { + if (style.isOwnBlankWhenNull() != null) + return style.isOwnBlankWhenNull(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.isBlankWhenNull(); + return null; + } + + public static String getFontName(JRFont font) { + if (font.getOwnFontName() != null) + return font.getOwnFontName(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null && baseFont.getFontName() != null) + return baseFont.getFontName(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.getFontName() != null) + return baseStyle.getFontName(); + return JRProperties.getProperty("net.sf.jasperreports.default.font.name"); + } + + public static String getFontName(JRStyle style) { + if (style.getOwnFontName() != null) + return style.getOwnFontName(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null && baseStyle.getFontName() != null) + return baseStyle.getFontName(); + return JRProperties.getProperty("net.sf.jasperreports.default.font.name"); + } + + public static boolean isBold(JRFont font) { + if (font.isOwnBold() != null) + return font.isOwnBold().booleanValue(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null) + return baseFont.isBold(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.isBold() != null) + return baseStyle.isBold().booleanValue(); + return false; + } + + public static Boolean isBold(JRStyle style) { + if (style.isOwnBold() != null) + return style.isOwnBold(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.isBold(); + return null; + } + + public static boolean isItalic(JRFont font) { + if (font.isOwnItalic() != null) + return font.isOwnItalic().booleanValue(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null) + return baseFont.isItalic(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.isItalic() != null) + return baseStyle.isItalic().booleanValue(); + return false; + } + + public static Boolean isItalic(JRStyle style) { + if (style.isOwnItalic() != null) + return style.isOwnItalic(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.isItalic(); + return null; + } + + public static boolean isUnderline(JRFont font) { + if (font.isOwnUnderline() != null) + return font.isOwnUnderline().booleanValue(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null) + return baseFont.isUnderline(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.isUnderline() != null) + return baseStyle.isUnderline().booleanValue(); + return false; + } + + public static Boolean isUnderline(JRStyle style) { + if (style.isOwnUnderline() != null) + return style.isOwnUnderline(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.isUnderline(); + return null; + } + + public static boolean isStrikeThrough(JRFont font) { + if (font.isOwnStrikeThrough() != null) + return font.isOwnStrikeThrough().booleanValue(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null) + return baseFont.isStrikeThrough(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.isStrikeThrough() != null) + return baseStyle.isStrikeThrough().booleanValue(); + return false; + } + + public static Boolean isStrikeThrough(JRStyle style) { + if (style.isOwnStrikeThrough() != null) + return style.isOwnStrikeThrough(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.isStrikeThrough(); + return null; + } + + public static int getFontSize(JRFont font) { + if (font.getOwnFontSize() != null) + return font.getOwnFontSize().intValue(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null) + return baseFont.getFontSize(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.getFontSize() != null) + return baseStyle.getFontSize().intValue(); + return JRProperties.getIntegerProperty("net.sf.jasperreports.default.font.size"); + } + + public static Integer getFontSize(JRStyle style) { + if (style.getOwnFontSize() != null) + return style.getOwnFontSize(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.getFontSize(); + return null; + } + + public static String getPdfFontName(JRFont font) { + if (font.getOwnPdfFontName() != null) + return font.getOwnPdfFontName(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null && baseFont.getPdfFontName() != null) + return baseFont.getPdfFontName(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.getPdfFontName() != null) + return baseStyle.getPdfFontName(); + return JRProperties.getProperty("net.sf.jasperreports.default.pdf.font.name"); + } + + public static String getPdfFontName(JRStyle style) { + if (style.getOwnPdfFontName() != null) + return style.getOwnPdfFontName(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null && baseStyle.getPdfFontName() != null) + return baseStyle.getPdfFontName(); + return JRProperties.getProperty("net.sf.jasperreports.default.pdf.font.name"); + } + + public static String getPdfEncoding(JRFont font) { + if (font.getOwnPdfEncoding() != null) + return font.getOwnPdfEncoding(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null && baseFont.getPdfEncoding() != null) + return baseFont.getPdfEncoding(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.getPdfEncoding() != null) + return baseStyle.getPdfEncoding(); + return JRProperties.getProperty("net.sf.jasperreports.default.pdf.encoding"); + } + + public static String getPdfEncoding(JRStyle style) { + if (style.getOwnPdfEncoding() != null) + return style.getOwnPdfEncoding(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null && baseStyle.getPdfEncoding() != null) + return baseStyle.getPdfEncoding(); + return JRProperties.getProperty("net.sf.jasperreports.default.pdf.encoding"); + } + + public static boolean isPdfEmbedded(JRFont font) { + if (font.isOwnPdfEmbedded() != null) + return font.isOwnPdfEmbedded().booleanValue(); + JRFont baseFont = getBaseFont(font); + if (baseFont != null) + return baseFont.isPdfEmbedded(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)font); + if (baseStyle != null && baseStyle.isPdfEmbedded() != null) + return baseStyle.isPdfEmbedded().booleanValue(); + return JRProperties.getBooleanProperty("net.sf.jasperreports.default.pdf.embedded"); + } + + public static Boolean isPdfEmbedded(JRStyle style) { + if (style.isOwnPdfEmbedded() != null) + return style.isOwnPdfEmbedded(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)style); + if (baseStyle != null) + return baseStyle.isPdfEmbedded(); + return null; + } + + public static Integer getPadding(JRLineBox box) { + if (box.getOwnPadding() != null) + return box.getOwnPadding(); + JRStyle baseStyle = getBaseStyle((JRStyleContainer)box); + if (baseStyle != null && baseStyle.getLineBox().getPadding() != null) + return baseStyle.getLineBox().getPadding(); + return INTEGER_ZERO; + } + + public static Integer getTopPadding(JRLineBox box) { + if (box.getOwnTopPadding() != null) + return box.getOwnTopPadding(); + if (box.getOwnPadding() != null) + return box.getOwnPadding(); + JRStyle style = getBaseStyle((JRStyleContainer)box); + if (style != null && style.getLineBox().getTopPadding() != null) + return style.getLineBox().getTopPadding(); + return INTEGER_ZERO; + } + + public static Integer getLeftPadding(JRLineBox box) { + if (box.getOwnLeftPadding() != null) + return box.getOwnLeftPadding(); + if (box.getOwnPadding() != null) + return box.getOwnPadding(); + JRStyle style = getBaseStyle((JRStyleContainer)box); + if (style != null && style.getLineBox().getLeftPadding() != null) + return style.getLineBox().getLeftPadding(); + return INTEGER_ZERO; + } + + public static Integer getBottomPadding(JRLineBox box) { + if (box.getOwnBottomPadding() != null) + return box.getOwnBottomPadding(); + if (box.getOwnPadding() != null) + return box.getOwnPadding(); + JRStyle style = getBaseStyle((JRStyleContainer)box); + if (style != null && style.getLineBox().getBottomPadding() != null) + return style.getLineBox().getBottomPadding(); + return INTEGER_ZERO; + } + + public static Integer getRightPadding(JRLineBox box) { + if (box.getOwnRightPadding() != null) + return box.getOwnRightPadding(); + if (box.getOwnPadding() != null) + return box.getOwnPadding(); + JRStyle style = getBaseStyle((JRStyleContainer)box); + if (style != null && style.getLineBox().getRightPadding() != null) + return style.getLineBox().getRightPadding(); + return INTEGER_ZERO; + } + + public static void appendStyle(JRStyle destStyle, JRStyle srcStyle) { + if (srcStyle.getOwnMode() != null) + destStyle.setMode(srcStyle.getOwnMode()); + if (srcStyle.getOwnForecolor() != null) + destStyle.setForecolor(srcStyle.getOwnForecolor()); + if (srcStyle.getOwnBackcolor() != null) + destStyle.setBackcolor(srcStyle.getOwnBackcolor()); + appendPen(destStyle.getLinePen(), srcStyle.getLinePen()); + if (srcStyle.getOwnFill() != null) + destStyle.setFill(srcStyle.getOwnFill()); + if (srcStyle.getOwnRadius() != null) + destStyle.setRadius(srcStyle.getOwnRadius()); + if (srcStyle.getOwnScaleImage() != null) + destStyle.setScaleImage(srcStyle.getOwnScaleImage()); + if (srcStyle.getOwnHorizontalAlignment() != null) + destStyle.setHorizontalAlignment(srcStyle.getOwnHorizontalAlignment()); + if (srcStyle.getOwnVerticalAlignment() != null) + destStyle.setVerticalAlignment(srcStyle.getOwnVerticalAlignment()); + appendBox(destStyle.getLineBox(), srcStyle.getLineBox()); + if (srcStyle.getOwnRotation() != null) + destStyle.setRotation(srcStyle.getOwnRotation()); + if (srcStyle.getOwnLineSpacing() != null) + destStyle.setLineSpacing(srcStyle.getOwnLineSpacing()); + if (srcStyle.getOwnMarkup() != null) + destStyle.setMarkup(srcStyle.getOwnMarkup()); + if (srcStyle.getOwnPattern() != null) + destStyle.setPattern(srcStyle.getOwnPattern()); + if (srcStyle.getOwnFontName() != null) + destStyle.setFontName(srcStyle.getOwnFontName()); + if (srcStyle.isOwnBold() != null) + destStyle.setBold(srcStyle.isOwnBold()); + if (srcStyle.isOwnItalic() != null) + destStyle.setItalic(srcStyle.isOwnItalic()); + if (srcStyle.isOwnUnderline() != null) + destStyle.setUnderline(srcStyle.isOwnUnderline()); + if (srcStyle.isOwnStrikeThrough() != null) + destStyle.setStrikeThrough(srcStyle.isOwnStrikeThrough()); + if (srcStyle.getOwnFontSize() != null) + destStyle.setFontSize(srcStyle.getOwnFontSize()); + if (srcStyle.getOwnPdfFontName() != null) + destStyle.setPdfFontName(srcStyle.getOwnPdfFontName()); + if (srcStyle.getOwnPdfEncoding() != null) + destStyle.setPdfEncoding(srcStyle.getOwnPdfEncoding()); + if (srcStyle.isOwnPdfEmbedded() != null) + destStyle.setPdfEmbedded(srcStyle.isOwnPdfEmbedded()); + } + + private static void appendPen(JRPen destPen, JRPen srcPen) { + if (srcPen.getOwnLineWidth() != null) + destPen.setLineWidth(srcPen.getOwnLineWidth()); + if (srcPen.getOwnLineStyle() != null) + destPen.setLineStyle(srcPen.getOwnLineStyle()); + if (srcPen.getOwnLineColor() != null) + destPen.setLineColor(srcPen.getOwnLineColor()); + } + + private static void appendBox(JRLineBox destBox, JRLineBox srcBox) { + appendPen((JRPen)destBox.getPen(), (JRPen)srcBox.getPen()); + appendPen((JRPen)destBox.getTopPen(), (JRPen)srcBox.getTopPen()); + appendPen((JRPen)destBox.getLeftPen(), (JRPen)srcBox.getLeftPen()); + appendPen((JRPen)destBox.getBottomPen(), (JRPen)srcBox.getBottomPen()); + appendPen((JRPen)destBox.getRightPen(), (JRPen)srcBox.getRightPen()); + if (srcBox.getOwnPadding() != null) + destBox.setPadding(srcBox.getOwnPadding()); + if (srcBox.getOwnTopPadding() != null) + destBox.setTopPadding(srcBox.getOwnTopPadding()); + if (srcBox.getOwnLeftPadding() != null) + destBox.setLeftPadding(srcBox.getOwnLeftPadding()); + if (srcBox.getOwnBottomPadding() != null) + destBox.setBottomPadding(srcBox.getOwnBottomPadding()); + if (srcBox.getOwnRightPadding() != null) + destBox.setRightPadding(srcBox.getOwnRightPadding()); + } + + public static Color getTitleColor(JRChart chart) { + if (chart.getOwnTitleColor() != null) + return chart.getOwnTitleColor(); + return getForecolor((JRCommonElement)chart); + } + + public static Color getSubtitleColor(JRChart chart) { + if (chart.getOwnSubtitleColor() != null) + return chart.getOwnSubtitleColor(); + return getForecolor((JRCommonElement)chart); + } + + public static Color getLegendColor(JRChart chart) { + if (chart.getOwnLegendColor() != null) + return chart.getOwnLegendColor(); + return getForecolor((JRCommonElement)chart); + } + + public static Color getLegendBackgroundColor(JRChart chart) { + if (chart.getOwnLegendBackgroundColor() != null) + return chart.getOwnLegendBackgroundColor(); + return getBackcolor((JRCommonElement)chart); + } + + public static Color getCategoryAxisLabelColor(JRCategoryAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnCategoryAxisLabelColor() != null) + return axisFormat.getOwnCategoryAxisLabelColor(); + return getForecolor(plot); + } + + public static Color getCategoryAxisTickLabelColor(JRCategoryAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnCategoryAxisTickLabelColor() != null) + return axisFormat.getOwnCategoryAxisTickLabelColor(); + return getForecolor(plot); + } + + public static Color getCategoryAxisLineColor(JRCategoryAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnCategoryAxisLineColor() != null) + return axisFormat.getOwnCategoryAxisLineColor(); + return getForecolor(plot); + } + + public static Color getValueAxisLabelColor(JRValueAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnValueAxisLabelColor() != null) + return axisFormat.getOwnValueAxisLabelColor(); + return getForecolor(plot); + } + + public static Color getValueAxisTickLabelColor(JRValueAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnValueAxisTickLabelColor() != null) + return axisFormat.getOwnValueAxisTickLabelColor(); + return getForecolor(plot); + } + + public static Color getValueAxisLineColor(JRValueAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnValueAxisLineColor() != null) + return axisFormat.getOwnValueAxisLineColor(); + return getForecolor(plot); + } + + public static Color getXAxisLabelColor(JRXAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnXAxisLabelColor() != null) + return axisFormat.getOwnXAxisLabelColor(); + return getForecolor(plot); + } + + public static Color getXAxisTickLabelColor(JRXAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnXAxisTickLabelColor() != null) + return axisFormat.getOwnXAxisTickLabelColor(); + return getForecolor(plot); + } + + public static Color getXAxisLineColor(JRXAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnXAxisLineColor() != null) + return axisFormat.getOwnXAxisLineColor(); + return getForecolor(plot); + } + + public static Color getYAxisLabelColor(JRYAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnYAxisLabelColor() != null) + return axisFormat.getOwnYAxisLabelColor(); + return getForecolor(plot); + } + + public static Color getYAxisTickLabelColor(JRYAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnYAxisTickLabelColor() != null) + return axisFormat.getOwnYAxisTickLabelColor(); + return getForecolor(plot); + } + + public static Color getYAxisLineColor(JRYAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnYAxisLineColor() != null) + return axisFormat.getOwnYAxisLineColor(); + return getForecolor(plot); + } + + public static Color getTimeAxisLabelColor(JRTimeAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnTimeAxisLabelColor() != null) + return axisFormat.getOwnTimeAxisLabelColor(); + return getForecolor(plot); + } + + public static Color getTimeAxisTickLabelColor(JRTimeAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnTimeAxisTickLabelColor() != null) + return axisFormat.getOwnTimeAxisTickLabelColor(); + return getForecolor(plot); + } + + public static Color getTimeAxisLineColor(JRTimeAxisFormat axisFormat, JRChartPlot plot) { + if (axisFormat.getOwnTimeAxisLineColor() != null) + return axisFormat.getOwnTimeAxisLineColor(); + return getForecolor(plot); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRStyledText.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRStyledText.java new file mode 100644 index 0000000..786dff9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRStyledText.java @@ -0,0 +1,100 @@ +package net.sf.jasperreports.engine.util; + +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class JRStyledText { + private StringBuffer sbuffer = new StringBuffer(); + + private List runs = new ArrayList(); + + private AttributedString attributedString = null; + + private AttributedString awtAttributedString = null; + + private Map globalAttributes; + + public void append(String text) { + this.sbuffer.append(text); + this.attributedString = null; + this.awtAttributedString = null; + } + + public void addRun(Run run) { + this.runs.add(run); + this.attributedString = null; + this.awtAttributedString = null; + } + + public int length() { + return this.sbuffer.length(); + } + + public String getText() { + return this.sbuffer.toString(); + } + + public AttributedString getAttributedString() { + if (this.attributedString == null) { + this.attributedString = new AttributedString(this.sbuffer.toString()); + for (int i = this.runs.size() - 1; i >= 0; i--) { + Run run = this.runs.get(i); + if (run.startIndex != run.endIndex && run.attributes != null) + this.attributedString.addAttributes(run.attributes, run.startIndex, run.endIndex); + } + } + return this.attributedString; + } + + public AttributedString getAwtAttributedString() { + if (this.awtAttributedString == null) { + this.awtAttributedString = new AttributedString(this.sbuffer.toString()); + for (int i = this.runs.size() - 1; i >= 0; i--) { + Run run = this.runs.get(i); + if (run.startIndex != run.endIndex && run.attributes != null && !run.attributes.isEmpty()) { + Iterator it = run.attributes.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + AttributedCharacterIterator.Attribute attribute = (AttributedCharacterIterator.Attribute)entry.getKey(); + if (!(attribute instanceof JRTextAttribute)) { + Object value = entry.getValue(); + this.awtAttributedString.addAttribute(attribute, value, run.startIndex, run.endIndex); + } + } + } + } + } + return this.awtAttributedString; + } + + public List getRuns() { + return this.runs; + } + + public static class Run { + public Map attributes = null; + + public int startIndex = 0; + + public int endIndex = 0; + + public Run(Map attributes, int startIndex, int endIndex) { + this.attributes = attributes; + this.startIndex = startIndex; + this.endIndex = endIndex; + } + } + + public void setGlobalAttributes(Map attributes) { + this.globalAttributes = attributes; + addRun(new Run(attributes, 0, length())); + } + + public Map getGlobalAttributes() { + return this.globalAttributes; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRStyledTextParser.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRStyledTextParser.java new file mode 100644 index 0000000..22d10b4 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRStyledTextParser.java @@ -0,0 +1,464 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Color; +import java.awt.GraphicsEnvironment; +import java.awt.font.TextAttribute; +import java.io.IOException; +import java.io.StringReader; +import java.lang.ref.SoftReference; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.xml.JRXmlConstants; +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.ErrorHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class JRStyledTextParser implements ErrorHandler { + private static final String ROOT_START = ""; + + private static final String ROOT_END = ""; + + private static final String NODE_style = "style"; + + private static final String NODE_bold = "b"; + + private static final String NODE_italic = "i"; + + private static final String NODE_underline = "u"; + + private static final String NODE_sup = "sup"; + + private static final String NODE_sub = "sub"; + + private static final String NODE_font = "font"; + + private static final String NODE_br = "br"; + + private static final String NODE_li = "li"; + + private static final String ATTRIBUTE_fontName = "fontName"; + + private static final String ATTRIBUTE_fontFace = "face"; + + private static final String ATTRIBUTE_color = "color"; + + private static final String ATTRIBUTE_size = "size"; + + private static final String ATTRIBUTE_isBold = "isBold"; + + private static final String ATTRIBUTE_isItalic = "isItalic"; + + private static final String ATTRIBUTE_isUnderline = "isUnderline"; + + private static final String ATTRIBUTE_isStrikeThrough = "isStrikeThrough"; + + private static final String ATTRIBUTE_forecolor = "forecolor"; + + private static final String ATTRIBUTE_backcolor = "backcolor"; + + private static final String ATTRIBUTE_pdfFontName = "pdfFontName"; + + private static final String ATTRIBUTE_pdfEncoding = "pdfEncoding"; + + private static final String ATTRIBUTE_isPdfEmbedded = "isPdfEmbedded"; + + private static final String SPACE = " "; + + private static final String EQUAL_QUOTE = "=\""; + + private static final String QUOTE = "\""; + + private static final String SHARP = "#"; + + private static final String LESS = "<"; + + private static final String LESS_SLASH = ""; + + private static final ThreadLocal threadInstances = new ThreadLocal(); + + public static JRStyledTextParser getInstance() { + JRStyledTextParser instance = null; + SoftReference instanceRef = threadInstances.get(); + if (instanceRef != null) + instance = instanceRef.get(); + if (instance == null) { + instance = new JRStyledTextParser(); + threadInstances.set(new SoftReference(instance)); + } + return instance; + } + + private DocumentBuilder documentBuilder = null; + + public JRStyledTextParser() { + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + this.documentBuilder = factory.newDocumentBuilder(); + this.documentBuilder.setErrorHandler(this); + } catch (ParserConfigurationException e) { + throw new JRRuntimeException(e); + } + } + + public JRStyledText parse(Map attributes, String text) throws SAXException { + JRStyledText styledText = new JRStyledText(); + Document document = null; + try { + document = this.documentBuilder.parse(new InputSource(new StringReader("" + text + ""))); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + parseStyle(styledText, document.getDocumentElement()); + styledText.setGlobalAttributes(attributes); + return styledText; + } + + public JRStyledText getStyledText(Map parentAttributes, String text, boolean isStyledText) { + JRStyledText styledText = null; + if (isStyledText) + try { + styledText = parse(parentAttributes, text); + } catch (SAXException e) {} + if (styledText == null) { + styledText = new JRStyledText(); + styledText.append(text); + styledText.setGlobalAttributes(parentAttributes); + } + return styledText; + } + + public String write(JRStyledText styledText) { + return write(styledText.getGlobalAttributes(), styledText.getAttributedString().getIterator(), styledText.getText()); + } + + public String write(Map parentAttrs, AttributedCharacterIterator iterator, String text) { + StringBuffer sbuffer = new StringBuffer(); + int runLimit = 0; + while (runLimit < iterator.getEndIndex() && (runLimit = iterator.getRunLimit()) <= iterator.getEndIndex()) { + String chunk = text.substring(iterator.getIndex(), runLimit); + Map attrs = iterator.getAttributes(); + StringBuffer styleBuffer = writeStyleAttributes(parentAttrs, attrs); + if (styleBuffer.length() > 0) { + sbuffer.append("<"); + sbuffer.append("style"); + sbuffer.append(styleBuffer.toString()); + sbuffer.append(">"); + writeChunk(sbuffer, parentAttrs, attrs, chunk); + sbuffer.append(""); + } else { + writeChunk(sbuffer, parentAttrs, attrs, chunk); + } + iterator.setIndex(runLimit); + } + return sbuffer.toString(); + } + + public String write(JRStyledText styledText, int startIndex, int endIndex) { + AttributedCharacterIterator subIterator = (new AttributedString(styledText.getAttributedString().getIterator(), startIndex, endIndex)).getIterator(); + String subText = styledText.getText().substring(startIndex, endIndex); + return write(styledText.getGlobalAttributes(), subIterator, subText); + } + + public void writeChunk(StringBuffer sbuffer, Map parentAttrs, Map attrs, String chunk) { + Object value = attrs.get(TextAttribute.SUPERSCRIPT); + Object oldValue = parentAttrs.get(TextAttribute.SUPERSCRIPT); + boolean isSuper = false; + boolean isSub = false; + if (value != null && !value.equals(oldValue)) { + isSuper = TextAttribute.SUPERSCRIPT_SUPER.equals(value); + isSub = TextAttribute.SUPERSCRIPT_SUB.equals(value); + } + if (isSuper || isSub) { + String node = isSuper ? "sup" : "sub"; + sbuffer.append("<"); + sbuffer.append(node); + sbuffer.append(">"); + sbuffer.append(JRStringUtil.xmlEncode(chunk)); + sbuffer.append(""); + } else { + sbuffer.append(JRStringUtil.xmlEncode(chunk)); + } + } + + private void parseStyle(JRStyledText styledText, Node parentNode) throws SAXException { + NodeList nodeList = parentNode.getChildNodes(); + int i; + label116: for (i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + if (node.getNodeType() == 3) { + styledText.append(node.getNodeValue()); + } else if (node.getNodeType() == 1 && "style".equals(node.getNodeName())) { + NamedNodeMap nodeAttrs = node.getAttributes(); + Map styleAttrs = new HashMap(); + if (nodeAttrs.getNamedItem("fontName") != null) + styleAttrs.put(TextAttribute.FAMILY, nodeAttrs.getNamedItem("fontName").getNodeValue()); + if (nodeAttrs.getNamedItem("isBold") != null) + styleAttrs.put(TextAttribute.WEIGHT, Boolean.valueOf(nodeAttrs.getNamedItem("isBold").getNodeValue()).booleanValue() ? TextAttribute.WEIGHT_BOLD : TextAttribute.WEIGHT_REGULAR); + if (nodeAttrs.getNamedItem("isItalic") != null) + styleAttrs.put(TextAttribute.POSTURE, Boolean.valueOf(nodeAttrs.getNamedItem("isItalic").getNodeValue()).booleanValue() ? TextAttribute.POSTURE_OBLIQUE : TextAttribute.POSTURE_REGULAR); + if (nodeAttrs.getNamedItem("isUnderline") != null) + styleAttrs.put(TextAttribute.UNDERLINE, Boolean.valueOf(nodeAttrs.getNamedItem("isUnderline").getNodeValue()).booleanValue() ? TextAttribute.UNDERLINE_ON : null); + if (nodeAttrs.getNamedItem("isStrikeThrough") != null) + styleAttrs.put(TextAttribute.STRIKETHROUGH, Boolean.valueOf(nodeAttrs.getNamedItem("isStrikeThrough").getNodeValue()).booleanValue() ? TextAttribute.STRIKETHROUGH_ON : null); + if (nodeAttrs.getNamedItem("size") != null) + styleAttrs.put(TextAttribute.SIZE, new Float(nodeAttrs.getNamedItem("size").getNodeValue())); + if (nodeAttrs.getNamedItem("pdfFontName") != null) + styleAttrs.put(JRTextAttribute.PDF_FONT_NAME, nodeAttrs.getNamedItem("pdfFontName").getNodeValue()); + if (nodeAttrs.getNamedItem("pdfEncoding") != null) + styleAttrs.put(JRTextAttribute.PDF_ENCODING, nodeAttrs.getNamedItem("pdfEncoding").getNodeValue()); + if (nodeAttrs.getNamedItem("isPdfEmbedded") != null) + styleAttrs.put(JRTextAttribute.IS_PDF_EMBEDDED, Boolean.valueOf(nodeAttrs.getNamedItem("isPdfEmbedded").getNodeValue())); + if (nodeAttrs.getNamedItem("forecolor") != null) { + Color color = JRXmlConstants.getColor(nodeAttrs.getNamedItem("forecolor").getNodeValue(), Color.black); + styleAttrs.put(TextAttribute.FOREGROUND, color); + } + if (nodeAttrs.getNamedItem("backcolor") != null) { + Color color = JRXmlConstants.getColor(nodeAttrs.getNamedItem("backcolor").getNodeValue(), Color.black); + styleAttrs.put(TextAttribute.BACKGROUND, color); + } + int startIndex = styledText.length(); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(styleAttrs, startIndex, styledText.length())); + } else if (node.getNodeType() == 1 && "b".equalsIgnoreCase(node.getNodeName())) { + Map styleAttrs = new HashMap(); + styleAttrs.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD); + int startIndex = styledText.length(); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(styleAttrs, startIndex, styledText.length())); + } else if (node.getNodeType() == 1 && "i".equalsIgnoreCase(node.getNodeName())) { + Map styleAttrs = new HashMap(); + styleAttrs.put(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE); + int startIndex = styledText.length(); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(styleAttrs, startIndex, styledText.length())); + } else if (node.getNodeType() == 1 && "u".equalsIgnoreCase(node.getNodeName())) { + Map styleAttrs = new HashMap(); + styleAttrs.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); + int startIndex = styledText.length(); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(styleAttrs, startIndex, styledText.length())); + } else if (node.getNodeType() == 1 && "sup".equalsIgnoreCase(node.getNodeName())) { + Map styleAttrs = new HashMap(); + styleAttrs.put(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER); + int startIndex = styledText.length(); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(styleAttrs, startIndex, styledText.length())); + } else if (node.getNodeType() == 1 && "sub".equalsIgnoreCase(node.getNodeName())) { + Map styleAttrs = new HashMap(); + styleAttrs.put(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB); + int startIndex = styledText.length(); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(styleAttrs, startIndex, styledText.length())); + } else if (node.getNodeType() == 1 && "font".equalsIgnoreCase(node.getNodeName())) { + NamedNodeMap nodeAttrs = node.getAttributes(); + Map styleAttrs = new HashMap(); + if (nodeAttrs.getNamedItem("face") != null) + styleAttrs.put(JRTextAttribute.HTML_FONT_FACE, nodeAttrs.getNamedItem("face").getNodeValue()); + if (nodeAttrs.getNamedItem("size") != null) + styleAttrs.put(TextAttribute.SIZE, new Float(nodeAttrs.getNamedItem("size").getNodeValue())); + if (nodeAttrs.getNamedItem("color") != null) { + Color color = JRXmlConstants.getColor(nodeAttrs.getNamedItem("color").getNodeValue(), Color.black); + styleAttrs.put(TextAttribute.FOREGROUND, color); + } + if (nodeAttrs.getNamedItem("face") != null) { + String[] fontList = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); + String fontFaces = nodeAttrs.getNamedItem("face").getNodeValue(); + StringTokenizer t = new StringTokenizer(fontFaces, ","); + while (t.hasMoreTokens()) { + String face = t.nextToken().trim(); + for (int j = 0; j < fontList.length; j++) { + if (fontList[j].equals(face)) { + styleAttrs.put(TextAttribute.FAMILY, face); + continue label116; + } + } + } + } + int startIndex = styledText.length(); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(styleAttrs, startIndex, styledText.length())); + } else if (node.getNodeType() == 1 && "br".equalsIgnoreCase(node.getNodeName())) { + styledText.append("\n"); + int startIndex = styledText.length(); + resizeRuns(styledText.getRuns(), startIndex, 1); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(new HashMap(), startIndex, styledText.length())); + if (startIndex < styledText.length()) { + styledText.append("\n"); + resizeRuns(styledText.getRuns(), startIndex, 1); + } + } else if (node.getNodeType() == 1 && "li".equalsIgnoreCase(node.getNodeName())) { + String tmpText = styledText.getText(); + if (tmpText.length() > 0 && !tmpText.endsWith("\n")) + styledText.append("\n"); + styledText.append(" • "); + int startIndex = styledText.length(); + resizeRuns(styledText.getRuns(), startIndex, 1); + parseStyle(styledText, node); + styledText.addRun(new JRStyledText.Run(new HashMap(), startIndex, styledText.length())); + Node nextNode = node.getNextSibling(); + String textContent = getFirstTextOccurence(nextNode); + if (nextNode != null && (nextNode.getNodeType() != 1 || !"li".equalsIgnoreCase(nextNode.getNodeName())) && (textContent == null || !textContent.startsWith("\n"))) { + styledText.append("\n"); + resizeRuns(styledText.getRuns(), startIndex, 1); + } + } else if (node.getNodeType() == 1) { + String nodeName = "<" + node.getNodeName() + ">"; + throw new SAXException("Tag " + nodeName + " is not a valid styled text tag."); + } + } + } + + private void resizeRuns(List runs, int startIndex, int count) { + for (int j = 0; j < runs.size(); j++) { + JRStyledText.Run run = runs.get(j); + if (run.startIndex <= startIndex && run.endIndex > startIndex - count) + run.endIndex += count; + } + } + + private StringBuffer writeStyleAttributes(Map parentAttrs, Map attrs) { + StringBuffer sbuffer = new StringBuffer(); + Object value = attrs.get(TextAttribute.FAMILY); + Object oldValue = parentAttrs.get(TextAttribute.FAMILY); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("fontName"); + sbuffer.append("=\""); + sbuffer.append(value); + sbuffer.append("\""); + } + value = attrs.get(TextAttribute.WEIGHT); + oldValue = parentAttrs.get(TextAttribute.WEIGHT); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("isBold"); + sbuffer.append("=\""); + sbuffer.append(value.equals(TextAttribute.WEIGHT_BOLD)); + sbuffer.append("\""); + } + value = attrs.get(TextAttribute.POSTURE); + oldValue = parentAttrs.get(TextAttribute.POSTURE); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("isItalic"); + sbuffer.append("=\""); + sbuffer.append(value.equals(TextAttribute.POSTURE_OBLIQUE)); + sbuffer.append("\""); + } + value = attrs.get(TextAttribute.UNDERLINE); + oldValue = parentAttrs.get(TextAttribute.UNDERLINE); + if ((value == null && oldValue != null) || (value != null && !value.equals(oldValue))) { + sbuffer.append(" "); + sbuffer.append("isUnderline"); + sbuffer.append("=\""); + sbuffer.append((value != null)); + sbuffer.append("\""); + } + value = attrs.get(TextAttribute.STRIKETHROUGH); + oldValue = parentAttrs.get(TextAttribute.STRIKETHROUGH); + if ((value == null && oldValue != null) || (value != null && !value.equals(oldValue))) { + sbuffer.append(" "); + sbuffer.append("isStrikeThrough"); + sbuffer.append("=\""); + sbuffer.append((value != null)); + sbuffer.append("\""); + } + value = attrs.get(TextAttribute.SIZE); + oldValue = parentAttrs.get(TextAttribute.SIZE); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("size"); + sbuffer.append("=\""); + sbuffer.append(((Float)value).intValue()); + sbuffer.append("\""); + } + value = attrs.get(JRTextAttribute.PDF_FONT_NAME); + oldValue = parentAttrs.get(JRTextAttribute.PDF_FONT_NAME); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("pdfFontName"); + sbuffer.append("=\""); + sbuffer.append(value); + sbuffer.append("\""); + } + value = attrs.get(JRTextAttribute.PDF_ENCODING); + oldValue = parentAttrs.get(JRTextAttribute.PDF_ENCODING); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("pdfEncoding"); + sbuffer.append("=\""); + sbuffer.append(value); + sbuffer.append("\""); + } + value = attrs.get(JRTextAttribute.IS_PDF_EMBEDDED); + oldValue = parentAttrs.get(JRTextAttribute.IS_PDF_EMBEDDED); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("isPdfEmbedded"); + sbuffer.append("=\""); + sbuffer.append(value); + sbuffer.append("\""); + } + value = attrs.get(TextAttribute.FOREGROUND); + oldValue = parentAttrs.get(TextAttribute.FOREGROUND); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("forecolor"); + sbuffer.append("=\""); + sbuffer.append("#"); + sbuffer.append(JRColorUtil.getColorHexa((Color)value)); + sbuffer.append("\""); + } + value = attrs.get(TextAttribute.BACKGROUND); + oldValue = parentAttrs.get(TextAttribute.BACKGROUND); + if (value != null && !value.equals(oldValue)) { + sbuffer.append(" "); + sbuffer.append("backcolor"); + sbuffer.append("=\""); + sbuffer.append("#"); + sbuffer.append(JRColorUtil.getColorHexa((Color)value)); + sbuffer.append("\""); + } + return sbuffer; + } + + private String getFirstTextOccurence(Node node) { + if (node != null) { + if (node.getNodeValue() != null) + return node.getNodeValue(); + NodeList nodeList = node.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + String firstOccurence = getFirstTextOccurence(nodeList.item(i)); + if (firstOccurence != null) + return firstOccurence; + } + } + return null; + } + + public void error(SAXParseException e) {} + + public void fatalError(SAXParseException e) {} + + public void warning(SAXParseException e) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRTextAttribute.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRTextAttribute.java new file mode 100644 index 0000000..9a29e19 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRTextAttribute.java @@ -0,0 +1,35 @@ +package net.sf.jasperreports.engine.util; + +import java.io.InvalidObjectException; +import java.text.AttributedCharacterIterator; +import java.util.HashMap; +import java.util.Map; + +public final class JRTextAttribute extends AttributedCharacterIterator.Attribute { + private static final long serialVersionUID = 10200L; + + private static final Map instanceMap = new HashMap(4); + + public static JRTextAttribute PDF_FONT_NAME = new JRTextAttribute("PDF_FONT_NAME"); + + public static JRTextAttribute PDF_ENCODING = new JRTextAttribute("PDF_ENCODING"); + + public static JRTextAttribute IS_PDF_EMBEDDED = new JRTextAttribute("IS_PDF_EMBEDDED"); + + public static JRTextAttribute HTML_FONT_FACE = new JRTextAttribute("HTML_FONT_FACE"); + + private JRTextAttribute(String name) { + super(name); + if (getClass() == JRTextAttribute.class) + instanceMap.put(name, this); + } + + protected Object readResolve() throws InvalidObjectException { + if (getClass() != JRTextAttribute.class) + throw new InvalidObjectException("Subclass didn't correctly implement readResolve"); + JRTextAttribute instance = (JRTextAttribute)instanceMap.get(getName()); + if (instance != null) + return instance; + throw new InvalidObjectException("Unknown attribute name"); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRTextMeasurerUtil.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRTextMeasurerUtil.java new file mode 100644 index 0000000..6c9b7f9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRTextMeasurerUtil.java @@ -0,0 +1,42 @@ +package net.sf.jasperreports.engine.util; + +import net.sf.jasperreports.engine.JRCommonText; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.fill.JRTextMeasurer; +import net.sf.jasperreports.engine.fill.JRTextMeasurerFactory; + +public class JRTextMeasurerUtil { + public static final String PROPERTY_TEXT_MEASURER_FACTORY = "net.sf.jasperreports.text.measurer.factory"; + + private static final JRSingletonCache cache = new JRSingletonCache(JRTextMeasurerFactory.class); + + public static JRTextMeasurer createTextMeasurer(JRCommonText text) { + JRPropertiesHolder propertiesHolder = (text instanceof JRPropertiesHolder) ? (JRPropertiesHolder)text : null; + return createTextMeasurer(text, propertiesHolder); + } + + public static JRTextMeasurer createTextMeasurer(JRCommonText text, JRPropertiesHolder propertiesHolder) { + JRTextMeasurerFactory factory = getTextMeasurerFactory(propertiesHolder); + return factory.createMeasurer(text); + } + + public static JRTextMeasurerFactory getTextMeasurerFactory(JRPropertiesHolder propertiesHolder) { + String factoryClass = getTextMeasurerFactoryClass(propertiesHolder); + try { + return (JRTextMeasurerFactory)cache.getCachedInstance(factoryClass); + } catch (JRException e) { + throw new JRRuntimeException(e); + } + } + + protected static String getTextMeasurerFactoryClass(JRPropertiesHolder propertiesHolder) { + String factory = JRProperties.getProperty(propertiesHolder, "net.sf.jasperreports.text.measurer.factory"); + String factoryClassProperty = "net.sf.jasperreports.text.measurer.factory." + factory; + String factoryClass = JRProperties.getProperty(propertiesHolder, factoryClassProperty); + if (factoryClass == null) + factoryClass = factory; + return factoryClass; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRTypeSniffer.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRTypeSniffer.java new file mode 100644 index 0000000..9b38ad9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRTypeSniffer.java @@ -0,0 +1,68 @@ +package net.sf.jasperreports.engine.util; + +public class JRTypeSniffer { + public static boolean isGIF(byte[] data) { + if (data.length < 3) + return false; + byte[] first = new byte[3]; + System.arraycopy(data, 0, first, 0, 3); + if ((new String(first)).equalsIgnoreCase("GIF")) + return true; + return false; + } + + public static boolean isJPEG(byte[] data) { + if (data.length < 2) + return false; + if (data[0] == -1 && data[1] == -40) + return true; + return false; + } + + public static boolean isPNG(byte[] data) { + if (data.length < 8) + return false; + if (data[0] == -119 && data[1] == 80 && data[2] == 78 && data[3] == 71 && data[4] == 13 && data[5] == 10 && data[6] == 26 && data[7] == 10) + return true; + return false; + } + + public static boolean isTIFF(byte[] data) { + if (data.length < 2) + return false; + if ((data[0] == 73 && data[1] == 73) || (data[0] == 77 && data[1] == 77)) + return true; + return false; + } + + public static byte getImageType(byte[] data) { + if (isGIF(data)) + return 1; + if (isJPEG(data)) + return 2; + if (isPNG(data)) + return 3; + if (isTIFF(data)) + return 4; + return 0; + } + + public static String getImageMimeType(byte imageType) { + String mimeType = null; + switch (imageType) { + case 1: + mimeType = "image/gif"; + break; + case 2: + mimeType = "image/jpeg"; + break; + case 3: + mimeType = "image/png"; + break; + case 4: + mimeType = "image/tiff"; + break; + } + return mimeType; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRVisitorSupport.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRVisitorSupport.java new file mode 100644 index 0000000..b145c65 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRVisitorSupport.java @@ -0,0 +1,41 @@ +package net.sf.jasperreports.engine.util; + +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVisitor; + +public abstract class JRVisitorSupport implements JRVisitor { + public void visitBreak(JRBreak breakElement) {} + + public void visitChart(JRChart chart) {} + + public void visitCrosstab(JRCrosstab crosstab) {} + + public void visitElementGroup(JRElementGroup elementGroup) {} + + public void visitEllipse(JREllipse ellipse) {} + + public void visitFrame(JRFrame frame) {} + + public void visitImage(JRImage image) {} + + public void visitLine(JRLine line) {} + + public void visitRectangle(JRRectangle rectangle) {} + + public void visitStaticText(JRStaticText staticText) {} + + public void visitSubreport(JRSubreport subreport) {} + + public void visitTextField(JRTextField textField) {} +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/JRXmlWriteHelper.java b/hrmsEjb/net/sf/jasperreports/engine/util/JRXmlWriteHelper.java new file mode 100644 index 0000000..87e7f9c --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/JRXmlWriteHelper.java @@ -0,0 +1,330 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Color; +import java.io.IOException; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import net.sf.jasperreports.engine.JRExpression; + +public class JRXmlWriteHelper { + private final Writer writer; + + private final List indents; + + private int indent; + + private final List elementStack; + + private StringBuffer buffer; + + private StackElement lastElement; + + protected static class Attribute { + String name; + + String value; + + Attribute(String name, String value) { + this.name = name; + this.value = value; + } + } + + protected static class StackElement { + String name; + + List atts; + + boolean hasChildren; + + StackElement(String name) { + this.name = name; + this.atts = new ArrayList(); + this.hasChildren = false; + } + + void addAttribute(String attName, String value) { + this.atts.add(new JRXmlWriteHelper.Attribute(attName, value)); + } + } + + public JRXmlWriteHelper(Writer writer) { + this.writer = writer; + this.indents = new ArrayList(); + this.indent = 0; + this.elementStack = new ArrayList(); + this.lastElement = null; + clearBuffer(); + } + + public void writeProlog(String encoding) throws IOException { + this.writer.write("\n"); + } + + public void writePublicDoctype(String rootElement, String description, String dtdLocation) throws IOException { + this.writer.write("\n\n"); + } + + public void startElement(String name) { + this.indent++; + this.lastElement = new StackElement(name); + this.elementStack.add(this.lastElement); + } + + protected void writeParents(boolean content) throws IOException { + int stackSize = this.elementStack.size(); + int startWrite = stackSize - 1; + while (startWrite >= 0) { + StackElement element = this.elementStack.get(startWrite); + if (element.hasChildren) + break; + if (startWrite < stackSize - 1) { + element.hasChildren = true; + } else { + element.hasChildren |= content; + } + startWrite--; + } + for (int i = startWrite + 1; i < stackSize; i++) { + StackElement element = this.elementStack.get(i); + writeElementAttributes(element, i); + } + } + + public void writeCDATA(String data) throws IOException { + if (data != null) { + writeParents(true); + this.buffer.append(getIndent(this.indent)); + this.buffer.append("\n"); + flushBuffer(); + } + } + + public void writeCDATAElement(String name, String data) throws IOException { + if (data != null) { + writeParents(true); + this.buffer.append(getIndent(this.indent)); + this.buffer.append('<'); + this.buffer.append(name); + this.buffer.append(">\n"); + flushBuffer(); + } + } + + public void writeCDATAElement(String name, String data, String attName, String attValue) throws IOException { + writeCDATAElement(name, data, attName, attValue); + } + + public void writeCDATAElement(String name, String data, String attName, Object attValue) throws IOException { + if (data != null) { + writeParents(true); + this.buffer.append(getIndent(this.indent)); + this.buffer.append('<'); + this.buffer.append(name); + if (attValue != null) { + this.buffer.append(' '); + this.buffer.append(attName); + this.buffer.append("=\""); + this.buffer.append(attValue); + this.buffer.append("\""); + } + this.buffer.append(">\n"); + flushBuffer(); + } + } + + protected void writeElementAttributes(StackElement element, int level) throws IOException { + this.buffer.append(getIndent(level)); + this.buffer.append('<'); + this.buffer.append(element.name); + for (Iterator i = element.atts.iterator(); i.hasNext(); ) { + Attribute att = i.next(); + this.buffer.append(' '); + this.buffer.append(att.name); + this.buffer.append("=\""); + this.buffer.append(att.value); + this.buffer.append('"'); + } + if (element.hasChildren) { + this.buffer.append(">\n"); + } else { + this.buffer.append("/>\n"); + } + flushBuffer(); + } + + public void closeElement() throws IOException { + closeElement(false); + } + + public void closeElement(boolean skipIfEmpty) throws IOException { + this.indent--; + if (skipIfEmpty && this.lastElement.atts.size() == 0 && !this.lastElement.hasChildren) { + clearBuffer(); + } else { + writeParents(false); + if (this.lastElement.hasChildren) { + this.buffer.append(getIndent(this.indent)); + this.buffer.append("\n"); + flushBuffer(); + } + } + this.elementStack.remove(this.indent); + this.lastElement = (this.indent > 0) ? this.elementStack.get(this.indent - 1) : null; + } + + protected char[] getIndent(int level) { + if (level >= this.indents.size()) + for (int i = this.indents.size(); i <= level; i++) { + char[] str = new char[i]; + Arrays.fill(str, '\t'); + this.indents.add(str); + } + return this.indents.get(level); + } + + protected void flushBuffer() throws IOException { + this.writer.write(this.buffer.toString()); + clearBuffer(); + } + + protected void clearBuffer() { + this.buffer = new StringBuffer(); + } + + public void writeExpression(String name, JRExpression expression, boolean writeClass) throws IOException { + writeExpression(name, expression, writeClass, null); + } + + public void writeExpression(String name, JRExpression expression, boolean writeClass, String defaultClassName) throws IOException { + if (expression != null) + if (writeClass && (defaultClassName == null || !defaultClassName.equals(expression.getValueClassName()))) { + writeCDATAElement(name, expression.getText(), "class", expression.getValueClassName()); + } else { + writeCDATAElement(name, expression.getText()); + } + } + + protected void writeAttribute(String name, String value) { + this.lastElement.addAttribute(name, value); + } + + public void addAttribute(String name, String value) { + if (value != null) + writeAttribute(name, value); + } + + public void addEncodedAttribute(String name, String value) { + if (value != null) + writeAttribute(name, JRStringUtil.xmlEncode(value)); + } + + public void addAttribute(String name, String value, String defaultValue) { + if (value != null && !value.equals(defaultValue)) + writeAttribute(name, value); + } + + public void addEncodedAttribute(String name, String value, String defaultValue) { + if (value != null && !value.equals(defaultValue)) + writeAttribute(name, JRStringUtil.xmlEncode(value)); + } + + public void addAttribute(String name, Object value) { + if (value != null) + writeAttribute(name, String.valueOf(value)); + } + + public void addAttribute(String name, int value) { + writeAttribute(name, String.valueOf(value)); + } + + public void addAttributePositive(String name, int value) { + if (value > 0) + writeAttribute(name, String.valueOf(value)); + } + + public void addAttribute(String name, float value) { + writeAttribute(name, String.valueOf(value)); + } + + public void addAttribute(String name, float value, float defaultValue) { + if (value != defaultValue) + writeAttribute(name, String.valueOf(value)); + } + + public void addAttribute(String name, double value) { + writeAttribute(name, String.valueOf(value)); + } + + public void addAttribute(String name, double value, double defaultValue) { + if (value != defaultValue) + writeAttribute(name, String.valueOf(value)); + } + + public void addAttribute(String name, int value, int defaultValue) { + if (value != defaultValue) + addAttribute(name, value); + } + + public void addAttribute(String name, boolean value) { + writeAttribute(name, String.valueOf(value)); + } + + public void addAttribute(String name, boolean value, boolean defaultValue) { + if (value != defaultValue) + addAttribute(name, value); + } + + public void addAttribute(String name, Color color) { + if (color != null) + writeAttribute(name, "#" + JRColorUtil.getColorHexa(color)); + } + + public void addAttribute(String name, Color value, Color defaultValue) { + if (value != null && value.getRGB() != defaultValue.getRGB()) + addAttribute(name, value); + } + + public void addAttribute(String name, byte value, Map xmlValues) { + String xmlValue = (String)xmlValues.get(new Byte(value)); + writeAttribute(name, xmlValue); + } + + public void addAttribute(String name, int value, Map xmlValues) { + String xmlValue = (String)xmlValues.get(new Integer(value)); + writeAttribute(name, xmlValue); + } + + public void addAttribute(String name, byte value, Map xmlValues, byte defaultValue) { + if (value != defaultValue) + addAttribute(name, value, xmlValues); + } + + public void addAttribute(String name, Object value, Map xmlValues) { + if (value != null) { + String xmlValue = (String)xmlValues.get(value); + writeAttribute(name, xmlValue); + } + } + + public void addAttribute(String name, Object value, Map xmlValues, Object defaultValue) { + if (!value.equals(defaultValue)) + addAttribute(name, value, xmlValues); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/LineBoxWrapper.java b/hrmsEjb/net/sf/jasperreports/engine/util/LineBoxWrapper.java new file mode 100644 index 0000000..e6efc86 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/LineBoxWrapper.java @@ -0,0 +1,255 @@ +package net.sf.jasperreports.engine.util; + +import java.awt.Color; +import java.io.Serializable; +import net.sf.jasperreports.engine.JRBox; +import net.sf.jasperreports.engine.JRDefaultStyleProvider; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRStyle; + +public class LineBoxWrapper implements JRBox, Serializable { + private static final long serialVersionUID = 10200L; + + protected JRLineBox lineBox = null; + + public LineBoxWrapper(JRLineBox lineBox) { + this.lineBox = lineBox; + } + + public JRDefaultStyleProvider getDefaultStyleProvider() { + return this.lineBox.getDefaultStyleProvider(); + } + + public JRStyle getStyle() { + return this.lineBox.getStyle(); + } + + public String getStyleNameReference() { + return this.lineBox.getStyleNameReference(); + } + + public JRLineBox getLineBox() { + return this.lineBox; + } + + public byte getBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public Byte getOwnBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getPen()); + } + + public void setBorder(byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public void setBorder(Byte border) { + JRPenUtil.setLinePenFromPen(border, (JRPen)this.lineBox.getPen()); + } + + public Color getBorderColor() { + return this.lineBox.getPen().getLineColor(); + } + + public Color getOwnBorderColor() { + return this.lineBox.getPen().getOwnLineColor(); + } + + public void setBorderColor(Color borderColor) { + this.lineBox.getPen().setLineColor(borderColor); + } + + public int getPadding() { + return this.lineBox.getPadding().intValue(); + } + + public Integer getOwnPadding() { + return this.lineBox.getOwnPadding(); + } + + public void setPadding(int padding) { + this.lineBox.setPadding(padding); + } + + public void setPadding(Integer padding) { + this.lineBox.setPadding(padding); + } + + public byte getTopBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public Byte getOwnTopBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public void setTopBorder(Byte topBorder) { + JRPenUtil.setLinePenFromPen(topBorder, (JRPen)this.lineBox.getTopPen()); + } + + public Color getTopBorderColor() { + return this.lineBox.getTopPen().getLineColor(); + } + + public Color getOwnTopBorderColor() { + return this.lineBox.getTopPen().getOwnLineColor(); + } + + public void setTopBorderColor(Color topBorderColor) { + this.lineBox.getTopPen().setLineColor(topBorderColor); + } + + public int getTopPadding() { + return this.lineBox.getTopPadding().intValue(); + } + + public Integer getOwnTopPadding() { + return this.lineBox.getOwnTopPadding(); + } + + public void setTopPadding(int topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public void setTopPadding(Integer topPadding) { + this.lineBox.setTopPadding(topPadding); + } + + public byte getLeftBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public Byte getOwnLeftBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public void setLeftBorder(Byte leftBorder) { + JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)this.lineBox.getLeftPen()); + } + + public Color getLeftBorderColor() { + return this.lineBox.getLeftPen().getLineColor(); + } + + public Color getOwnLeftBorderColor() { + return this.lineBox.getLeftPen().getOwnLineColor(); + } + + public void setLeftBorderColor(Color leftBorderColor) { + this.lineBox.getLeftPen().setLineColor(leftBorderColor); + } + + public int getLeftPadding() { + return this.lineBox.getLeftPadding().intValue(); + } + + public Integer getOwnLeftPadding() { + return this.lineBox.getOwnLeftPadding(); + } + + public void setLeftPadding(int leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public void setLeftPadding(Integer leftPadding) { + this.lineBox.setLeftPadding(leftPadding); + } + + public byte getBottomBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public Byte getOwnBottomBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public void setBottomBorder(Byte bottomBorder) { + JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)this.lineBox.getBottomPen()); + } + + public Color getBottomBorderColor() { + return this.lineBox.getBottomPen().getLineColor(); + } + + public Color getOwnBottomBorderColor() { + return this.lineBox.getBottomPen().getOwnLineColor(); + } + + public void setBottomBorderColor(Color bottomBorderColor) { + this.lineBox.getBottomPen().setLineColor(bottomBorderColor); + } + + public int getBottomPadding() { + return this.lineBox.getBottomPadding().intValue(); + } + + public Integer getOwnBottomPadding() { + return this.lineBox.getOwnBottomPadding(); + } + + public void setBottomPadding(int bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public void setBottomPadding(Integer bottomPadding) { + this.lineBox.setBottomPadding(bottomPadding); + } + + public byte getRightBorder() { + return JRPenUtil.getPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public Byte getOwnRightBorder() { + return JRPenUtil.getOwnPenFromLinePen((JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public void setRightBorder(Byte rightBorder) { + JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)this.lineBox.getRightPen()); + } + + public Color getRightBorderColor() { + return this.lineBox.getRightPen().getLineColor(); + } + + public Color getOwnRightBorderColor() { + return this.lineBox.getRightPen().getOwnLineColor(); + } + + public void setRightBorderColor(Color rightBorderColor) { + this.lineBox.getRightPen().setLineColor(rightBorderColor); + } + + public int getRightPadding() { + return this.lineBox.getRightPadding().intValue(); + } + + public Integer getOwnRightPadding() { + return this.lineBox.getOwnRightPadding(); + } + + public void setRightPadding(int rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } + + public void setRightPadding(Integer rightPadding) { + this.lineBox.setRightPadding(rightPadding); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessor.java b/hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessor.java new file mode 100644 index 0000000..4149ee8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessor.java @@ -0,0 +1,5 @@ +package net.sf.jasperreports.engine.util; + +public interface MarkupProcessor { + String convert(String paramString); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessorFactory.java b/hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessorFactory.java new file mode 100644 index 0000000..4ffbcc2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/MarkupProcessorFactory.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.util; + +public interface MarkupProcessorFactory { + public static final String PROPERTY_MARKUP_PROCESSOR_FACTORY_PREFIX = "net.sf.jasperreports.markup.processor.factory."; + + MarkupProcessor createMarkupProcessor(); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/Pair.java b/hrmsEjb/net/sf/jasperreports/engine/util/Pair.java new file mode 100644 index 0000000..740d962 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/Pair.java @@ -0,0 +1,45 @@ +package net.sf.jasperreports.engine.util; + +import java.io.Serializable; + +public class Pair implements Serializable { + private static final long serialVersionUID = 1L; + + private final Object o1; + + private final Object o2; + + private final int hash; + + public Pair(Object o1, Object o2) { + this.o1 = o1; + this.o2 = o2; + this.hash = computeHash(); + } + + private int computeHash() { + int hashCode = (this.o1 == null) ? 0 : this.o1.hashCode(); + hashCode *= 31; + hashCode += (this.o2 == null) ? 0 : this.o2.hashCode(); + return hashCode; + } + + public boolean equals(Object o) { + if (o == this) + return true; + if (o == null || !(o instanceof Pair)) + return false; + Pair p = (Pair)o; + if ((p.o1 == null) ? (this.o1 == null) : (this.o1 != null && p.o1.equals(this.o1))) + if ((p.o2 == null) ? (this.o2 == null) : (this.o2 != null && p.o2.equals(this.o2))); + return false; + } + + public int hashCode() { + return this.hash; + } + + public String toString() { + return "(" + String.valueOf(this.o1) + ", " + String.valueOf(this.o2) + ")"; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/ProtectionDomainFactory.java b/hrmsEjb/net/sf/jasperreports/engine/util/ProtectionDomainFactory.java new file mode 100644 index 0000000..1be92f9 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/ProtectionDomainFactory.java @@ -0,0 +1,7 @@ +package net.sf.jasperreports.engine.util; + +import java.security.ProtectionDomain; + +public interface ProtectionDomainFactory { + ProtectionDomain getProtectionDomain(ClassLoader paramClassLoader); +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/SingleProtectionDomainFactory.java b/hrmsEjb/net/sf/jasperreports/engine/util/SingleProtectionDomainFactory.java new file mode 100644 index 0000000..9c19a58 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/SingleProtectionDomainFactory.java @@ -0,0 +1,15 @@ +package net.sf.jasperreports.engine.util; + +import java.security.ProtectionDomain; + +public class SingleProtectionDomainFactory implements ProtectionDomainFactory { + private final ProtectionDomain protectionDomain; + + public SingleProtectionDomainFactory(ProtectionDomain protectionDomain) { + this.protectionDomain = protectionDomain; + } + + public ProtectionDomain getProtectionDomain(ClassLoader classloader) { + return this.protectionDomain; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/util/ThreadLocalStack.java b/hrmsEjb/net/sf/jasperreports/engine/util/ThreadLocalStack.java new file mode 100644 index 0000000..d5ec98e --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/util/ThreadLocalStack.java @@ -0,0 +1,37 @@ +package net.sf.jasperreports.engine.util; + +import java.util.LinkedList; + +public class ThreadLocalStack { + private final ThreadLocal threadStack = new ThreadLocal(); + + public void push(Object o) { + LinkedList stack = this.threadStack.get(); + if (stack == null) { + stack = new LinkedList(); + this.threadStack.set(stack); + } + stack.addFirst(o); + } + + public Object top() { + Object o = null; + LinkedList stack = this.threadStack.get(); + if (stack != null && !stack.isEmpty()) + o = stack.getFirst(); + return o; + } + + public Object pop() { + Object o = null; + LinkedList stack = this.threadStack.get(); + if (stack != null) + o = stack.removeFirst(); + return o; + } + + public boolean empty() { + LinkedList stack = this.threadStack.get(); + return (stack == null || stack.isEmpty()); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRPropertyDigesterRule.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRPropertyDigesterRule.java new file mode 100644 index 0000000..a36c77d --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRPropertyDigesterRule.java @@ -0,0 +1,14 @@ +package net.sf.jasperreports.engine.xml; + +import net.sf.jasperreports.engine.JRPropertiesHolder; +import org.apache.commons.digester.Rule; +import org.xml.sax.Attributes; + +public class JRPropertyDigesterRule extends Rule { + public void begin(String namespace, String name, Attributes attributes) { + JRPropertiesHolder propertiesHolder = (JRPropertiesHolder)this.digester.peek(); + String key = attributes.getValue("name"); + String value = attributes.getValue("value"); + propertiesHolder.getPropertiesMap().setProperty(key, value); + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlBaseWriter.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlBaseWriter.java new file mode 100644 index 0000000..27e2870 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlBaseWriter.java @@ -0,0 +1,101 @@ +package net.sf.jasperreports.engine.xml; + +import java.io.IOException; +import net.sf.jasperreports.engine.JRConditionalStyle; +import net.sf.jasperreports.engine.JRLineBox; +import net.sf.jasperreports.engine.JRPen; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.util.JRXmlWriteHelper; + +public abstract class JRXmlBaseWriter { + protected JRXmlWriteHelper writer; + + protected void useWriter(JRXmlWriteHelper aWriter) { + this.writer = aWriter; + } + + protected void writeStyle(JRStyle style) throws IOException { + this.writer.startElement("style"); + this.writer.addEncodedAttribute("name", style.getName()); + this.writer.addAttribute("isDefault", style.isDefault()); + writeStyleReferenceAttr((JRStyleContainer)style); + this.writer.addAttribute("mode", style.getOwnMode(), JRXmlConstants.getModeMap()); + this.writer.addAttribute("forecolor", style.getOwnForecolor()); + this.writer.addAttribute("backcolor", style.getOwnBackcolor()); + this.writer.addAttribute("fill", style.getOwnFill(), JRXmlConstants.getFillMap()); + this.writer.addAttribute("radius", style.getOwnRadius()); + this.writer.addAttribute("scaleImage", style.getOwnScaleImage(), JRXmlConstants.getScaleImageMap()); + this.writer.addAttribute("hAlign", style.getOwnHorizontalAlignment(), JRXmlConstants.getHorizontalAlignMap()); + this.writer.addAttribute("vAlign", style.getOwnVerticalAlignment(), JRXmlConstants.getVerticalAlignMap()); + this.writer.addAttribute("rotation", style.getOwnRotation(), JRXmlConstants.getRotationMap()); + this.writer.addAttribute("lineSpacing", style.getOwnLineSpacing(), JRXmlConstants.getLineSpacingMap()); + this.writer.addAttribute("markup", style.getOwnMarkup()); + this.writer.addEncodedAttribute("pattern", style.getOwnPattern()); + this.writer.addAttribute("isBlankWhenNull", style.isOwnBlankWhenNull()); + this.writer.addEncodedAttribute("fontName", style.getOwnFontName()); + this.writer.addAttribute("fontSize", style.getOwnFontSize()); + this.writer.addAttribute("isBold", style.isOwnBold()); + this.writer.addAttribute("isItalic", style.isOwnItalic()); + this.writer.addAttribute("isUnderline", style.isOwnUnderline()); + this.writer.addAttribute("isStrikeThrough", style.isOwnStrikeThrough()); + this.writer.addEncodedAttribute("pdfFontName", style.getOwnPdfFontName()); + this.writer.addEncodedAttribute("pdfEncoding", style.getOwnPdfEncoding()); + this.writer.addAttribute("isPdfEmbedded", style.isOwnPdfEmbedded()); + writePen(style.getLinePen()); + writeBox(style.getLineBox()); + if (toWriteConditionalStyles()) { + JRConditionalStyle[] conditionalStyles = style.getConditionalStyles(); + if (!(style instanceof JRConditionalStyle) && conditionalStyles != null) + for (int i = 0; i < conditionalStyles.length; i++) + writeConditionalStyle(conditionalStyles[i]); + } + this.writer.closeElement(); + } + + protected void writeStyleReferenceAttr(JRStyleContainer styleContainer) { + if (styleContainer.getStyle() != null) { + this.writer.addEncodedAttribute("style", styleContainer.getStyle().getName()); + } else if (styleContainer.getStyleNameReference() != null) { + this.writer.addEncodedAttribute("style", styleContainer.getStyleNameReference()); + } + } + + protected abstract boolean toWriteConditionalStyles(); + + protected void writeConditionalStyle(JRConditionalStyle style) throws IOException { + this.writer.startElement("conditionalStyle"); + this.writer.writeExpression("conditionExpression", style.getConditionExpression(), false); + writeStyle((JRStyle)style); + this.writer.closeElement(); + } + + protected void writePen(JRPen pen) throws IOException { + writePen("pen", pen); + } + + private void writePen(String element, JRPen pen) throws IOException { + this.writer.startElement(element); + this.writer.addAttribute("lineWidth", pen.getOwnLineWidth()); + this.writer.addAttribute("lineStyle", pen.getOwnLineStyle(), JRXmlConstants.getLineStyleMap()); + this.writer.addAttribute("lineColor", pen.getOwnLineColor()); + this.writer.closeElement(true); + } + + protected void writeBox(JRLineBox box) throws IOException { + if (box != null) { + this.writer.startElement("box"); + this.writer.addAttribute("padding", box.getOwnPadding()); + this.writer.addAttribute("topPadding", box.getOwnTopPadding()); + this.writer.addAttribute("leftPadding", box.getOwnLeftPadding()); + this.writer.addAttribute("bottomPadding", box.getOwnBottomPadding()); + this.writer.addAttribute("rightPadding", box.getOwnRightPadding()); + writePen("pen", (JRPen)box.getPen()); + writePen("topPen", (JRPen)box.getTopPen()); + writePen("leftPen", (JRPen)box.getLeftPen()); + writePen("bottomPen", (JRPen)box.getBottomPen()); + writePen("rightPen", (JRPen)box.getRightPen()); + this.writer.closeElement(true); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlConstants.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlConstants.java new file mode 100644 index 0000000..a7868a8 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlConstants.java @@ -0,0 +1,1740 @@ +package net.sf.jasperreports.engine.xml; + +import java.awt.Color; +import java.util.HashMap; +import java.util.Map; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.data.time.Day; +import org.jfree.data.time.Hour; +import org.jfree.data.time.Millisecond; +import org.jfree.data.time.Minute; +import org.jfree.data.time.Month; +import org.jfree.data.time.Quarter; +import org.jfree.data.time.Second; +import org.jfree.data.time.Week; +import org.jfree.data.time.Year; + +public class JRXmlConstants { + private static final String POSITION_TYPE_FLOAT = "Float"; + + private static final String POSITION_TYPE_FIX_RELATIVE_TO_TOP = "FixRelativeToTop"; + + private static final String POSITION_TYPE_FIX_RELATIVE_TO_BOTTOM = "FixRelativeToBottom"; + + private static Map positionTypeMap = null; + + private static final String MODE_OPAQUE = "Opaque"; + + private static final String MODE_TRANSPARENT = "Transparent"; + + public static Map getPositionTypeMap() { + if (positionTypeMap == null) { + positionTypeMap = new HashMap(6); + positionTypeMap.put("Float", new Byte((byte)1)); + positionTypeMap.put("FixRelativeToTop", new Byte((byte)2)); + positionTypeMap.put("FixRelativeToBottom", new Byte((byte)3)); + positionTypeMap.put(new Byte((byte)1), "Float"); + positionTypeMap.put(new Byte((byte)2), "FixRelativeToTop"); + positionTypeMap.put(new Byte((byte)3), "FixRelativeToBottom"); + } + return positionTypeMap; + } + + private static Map modeMap = null; + + private static final String COLOR_BLACK = "black"; + + private static final String COLOR_BLUE = "blue"; + + private static final String COLOR_CYAN = "cyan"; + + private static final String COLOR_DARK_GRAY = "darkGray"; + + private static final String COLOR_GRAY = "gray"; + + private static final String COLOR_GREEN = "green"; + + private static final String COLOR_LIGHT_GRAY = "lightGray"; + + private static final String COLOR_MAGENTA = "magenta"; + + private static final String COLOR_ORANGE = "orange"; + + private static final String COLOR_PINK = "pink"; + + private static final String COLOR_RED = "red"; + + private static final String COLOR_YELLOW = "yellow"; + + private static final String COLOR_WHITE = "white"; + + public static Map getModeMap() { + if (modeMap == null) { + modeMap = new HashMap(4); + modeMap.put("Opaque", new Byte((byte)1)); + modeMap.put("Transparent", new Byte((byte)2)); + modeMap.put(new Byte((byte)1), "Opaque"); + modeMap.put(new Byte((byte)2), "Transparent"); + } + return modeMap; + } + + private static Map colorMap = null; + + private static final String HORIZONTAL_ALIGN_LEFT = "Left"; + + private static final String HORIZONTAL_ALIGN_CENTER = "Center"; + + private static final String HORIZONTAL_ALIGN_RIGHT = "Right"; + + private static final String HORIZONTAL_ALIGN_JUSTIFIED = "Justified"; + + public static Map getColorMap() { + if (colorMap == null) { + colorMap = new HashMap(26); + colorMap.put("black", Color.black); + colorMap.put("blue", Color.blue); + colorMap.put("cyan", Color.cyan); + colorMap.put("darkGray", Color.darkGray); + colorMap.put("gray", Color.gray); + colorMap.put("green", Color.green); + colorMap.put("lightGray", Color.lightGray); + colorMap.put("magenta", Color.magenta); + colorMap.put("orange", Color.orange); + colorMap.put("pink", Color.pink); + colorMap.put("red", Color.red); + colorMap.put("yellow", Color.yellow); + colorMap.put("white", Color.white); + colorMap.put(Color.black, "black"); + colorMap.put(Color.blue, "blue"); + colorMap.put(Color.cyan, "cyan"); + colorMap.put(Color.darkGray, "darkGray"); + colorMap.put(Color.gray, "gray"); + colorMap.put(Color.green, "green"); + colorMap.put(Color.lightGray, "lightGray"); + colorMap.put(Color.magenta, "magenta"); + colorMap.put(Color.orange, "orange"); + colorMap.put(Color.pink, "pink"); + colorMap.put(Color.red, "red"); + colorMap.put(Color.yellow, "yellow"); + colorMap.put(Color.white, "white"); + } + return colorMap; + } + + private static Map horizontalAlignMap = null; + + private static final String VERTICAL_ALIGN_TOP = "Top"; + + private static final String VERTICAL_ALIGN_MIDDLE = "Middle"; + + private static final String VERTICAL_ALIGN_BOTTOM = "Bottom"; + + public static Map getHorizontalAlignMap() { + if (horizontalAlignMap == null) { + horizontalAlignMap = new HashMap(8); + horizontalAlignMap.put("Left", new Byte((byte)1)); + horizontalAlignMap.put("Center", new Byte((byte)2)); + horizontalAlignMap.put("Right", new Byte((byte)3)); + horizontalAlignMap.put("Justified", new Byte((byte)4)); + horizontalAlignMap.put(new Byte((byte)1), "Left"); + horizontalAlignMap.put(new Byte((byte)2), "Center"); + horizontalAlignMap.put(new Byte((byte)3), "Right"); + horizontalAlignMap.put(new Byte((byte)4), "Justified"); + } + return horizontalAlignMap; + } + + public static Map getTextAlignMap() { + return getHorizontalAlignMap(); + } + + private static Map verticalAlignMap = null; + + private static final String ROTATION_NONE = "None"; + + private static final String ROTATION_LEFT = "Left"; + + private static final String ROTATION_RIGHT = "Right"; + + private static final String ROTATION_UPSIDE_DOWN = "UpsideDown"; + + public static Map getVerticalAlignMap() { + if (verticalAlignMap == null) { + verticalAlignMap = new HashMap(6); + verticalAlignMap.put("Top", new Byte((byte)1)); + verticalAlignMap.put("Middle", new Byte((byte)2)); + verticalAlignMap.put("Bottom", new Byte((byte)3)); + verticalAlignMap.put(new Byte((byte)1), "Top"); + verticalAlignMap.put(new Byte((byte)2), "Middle"); + verticalAlignMap.put(new Byte((byte)3), "Bottom"); + } + return verticalAlignMap; + } + + private static Map rotationMap = null; + + private static final String BREAK_TYPE_PAGE = "Page"; + + private static final String BREAK_TYPE_COLUMN = "Column"; + + public static Map getRotationMap() { + if (rotationMap == null) { + rotationMap = new HashMap(6); + rotationMap.put("None", new Byte((byte)0)); + rotationMap.put("Left", new Byte((byte)1)); + rotationMap.put("Right", new Byte((byte)2)); + rotationMap.put("UpsideDown", new Byte((byte)3)); + rotationMap.put(new Byte((byte)0), "None"); + rotationMap.put(new Byte((byte)1), "Left"); + rotationMap.put(new Byte((byte)2), "Right"); + rotationMap.put(new Byte((byte)3), "UpsideDown"); + } + return rotationMap; + } + + private static Map breakTypeMap = null; + + private static final String RUN_DIRECTION_LTR = "LTR"; + + private static final String RUN_DIRECTION_RTL = "RTL"; + + public static Map getBreakTypeMap() { + if (breakTypeMap == null) { + breakTypeMap = new HashMap(4); + breakTypeMap.put("Page", new Byte((byte)1)); + breakTypeMap.put("Column", new Byte((byte)2)); + breakTypeMap.put(new Byte((byte)1), "Page"); + breakTypeMap.put(new Byte((byte)2), "Column"); + } + return breakTypeMap; + } + + private static Map runDirectionMap = null; + + private static final String LINE_SPACING_SINGLE = "Single"; + + private static final String LINE_SPACING_1_1_2 = "1_1_2"; + + private static final String LINE_SPACING_DOUBLE = "Double"; + + public static Map getRunDirectionMap() { + if (runDirectionMap == null) { + runDirectionMap = new HashMap(4); + runDirectionMap.put("LTR", new Byte((byte)0)); + runDirectionMap.put("RTL", new Byte((byte)1)); + runDirectionMap.put(new Byte((byte)0), "LTR"); + runDirectionMap.put(new Byte((byte)1), "RTL"); + } + return runDirectionMap; + } + + private static Map lineSpacingMap = null; + + private static final String DIRECTION_TOP_DOWN = "TopDown"; + + private static final String DIRECTION_BOTTOM_UP = "BottomUp"; + + public static Map getLineSpacingMap() { + if (lineSpacingMap == null) { + lineSpacingMap = new HashMap(6); + lineSpacingMap.put("Single", new Byte((byte)0)); + lineSpacingMap.put("1_1_2", new Byte((byte)1)); + lineSpacingMap.put("Double", new Byte((byte)2)); + lineSpacingMap.put(new Byte((byte)0), "Single"); + lineSpacingMap.put(new Byte((byte)1), "1_1_2"); + lineSpacingMap.put(new Byte((byte)2), "Double"); + } + return lineSpacingMap; + } + + private static Map directionMap = null; + + private static final String SCALE_IMAGE_CLIP = "Clip"; + + private static final String SCALE_IMAGE_FILL_FRAME = "FillFrame"; + + private static final String SCALE_IMAGE_RETAIN_SHAPE = "RetainShape"; + + public static Map getDirectionMap() { + if (directionMap == null) { + directionMap = new HashMap(4); + directionMap.put("TopDown", new Byte((byte)1)); + directionMap.put("BottomUp", new Byte((byte)2)); + directionMap.put(new Byte((byte)1), "TopDown"); + directionMap.put(new Byte((byte)2), "BottomUp"); + } + return directionMap; + } + + private static Map scaleImageMap = null; + + private static final String ON_ERROR_TYPE_ERROR = "Error"; + + private static final String ON_ERROR_TYPE_BLANK = "Blank"; + + private static final String ON_ERROR_TYPE_ICON = "Icon"; + + public static Map getScaleImageMap() { + if (scaleImageMap == null) { + scaleImageMap = new HashMap(6); + scaleImageMap.put("Clip", new Byte((byte)1)); + scaleImageMap.put("FillFrame", new Byte((byte)2)); + scaleImageMap.put("RetainShape", new Byte((byte)3)); + scaleImageMap.put(new Byte((byte)1), "Clip"); + scaleImageMap.put(new Byte((byte)2), "FillFrame"); + scaleImageMap.put(new Byte((byte)3), "RetainShape"); + } + return scaleImageMap; + } + + private static Map onErrorTypeMap = null; + + private static final String STRETCH_TYPE_NO_STRETCH = "NoStretch"; + + private static final String STRETCH_TYPE_RELATIVE_TO_TALLEST_OBJECT = "RelativeToTallestObject"; + + private static final String STRETCH_TYPE_RELATIVE_TO_BAND_HEIGHT = "RelativeToBandHeight"; + + public static Map getOnErrorTypeMap() { + if (onErrorTypeMap == null) { + onErrorTypeMap = new HashMap(6); + onErrorTypeMap.put("Error", new Byte((byte)1)); + onErrorTypeMap.put("Blank", new Byte((byte)2)); + onErrorTypeMap.put("Icon", new Byte((byte)3)); + onErrorTypeMap.put(new Byte((byte)1), "Error"); + onErrorTypeMap.put(new Byte((byte)2), "Blank"); + onErrorTypeMap.put(new Byte((byte)3), "Icon"); + } + return onErrorTypeMap; + } + + private static Map stretchTypeMap = null; + + private static final String LINE_STYLE_SOLID = "Solid"; + + private static final String LINE_STYLE_DASHED = "Dashed"; + + private static final String LINE_STYLE_DOTTED = "Dotted"; + + private static final String lINE_STYLE_DOUBLE = "Double"; + + public static Map getStretchTypeMap() { + if (stretchTypeMap == null) { + stretchTypeMap = new HashMap(6); + stretchTypeMap.put("NoStretch", new Byte((byte)0)); + stretchTypeMap.put("RelativeToTallestObject", new Byte((byte)1)); + stretchTypeMap.put("RelativeToBandHeight", new Byte((byte)2)); + stretchTypeMap.put(new Byte((byte)0), "NoStretch"); + stretchTypeMap.put(new Byte((byte)1), "RelativeToTallestObject"); + stretchTypeMap.put(new Byte((byte)2), "RelativeToBandHeight"); + } + return stretchTypeMap; + } + + private static Map lineStyleMap = null; + + private static final String PEN_NONE = "None"; + + private static final String PEN_THIN = "Thin"; + + private static final String PEN_1_POINT = "1Point"; + + private static final String PEN_2_POINT = "2Point"; + + private static final String PEN_4_POINT = "4Point"; + + private static final String PEN_DOTTED = "Dotted"; + + public static Map getLineStyleMap() { + if (lineStyleMap == null) { + lineStyleMap = new HashMap(4); + lineStyleMap.put("Solid", new Byte((byte)0)); + lineStyleMap.put("Dashed", new Byte((byte)1)); + lineStyleMap.put("Dotted", new Byte((byte)2)); + lineStyleMap.put("Double", new Byte((byte)3)); + lineStyleMap.put(new Byte((byte)0), "Solid"); + lineStyleMap.put(new Byte((byte)1), "Dashed"); + lineStyleMap.put(new Byte((byte)2), "Dotted"); + lineStyleMap.put(new Byte((byte)3), "Double"); + } + return lineStyleMap; + } + + private static Map penMap = null; + + private static final String FILL_SOLID = "Solid"; + + public static Map getPenMap() { + if (penMap == null) { + penMap = new HashMap(10); + penMap.put("None", new Byte((byte)0)); + penMap.put("Thin", new Byte((byte)5)); + penMap.put("1Point", new Byte((byte)1)); + penMap.put("2Point", new Byte((byte)2)); + penMap.put("4Point", new Byte((byte)3)); + penMap.put("Dotted", new Byte((byte)4)); + penMap.put(new Byte((byte)0), "None"); + penMap.put(new Byte((byte)5), "Thin"); + penMap.put(new Byte((byte)1), "1Point"); + penMap.put(new Byte((byte)2), "2Point"); + penMap.put(new Byte((byte)3), "4Point"); + penMap.put(new Byte((byte)4), "Dotted"); + } + return penMap; + } + + private static Map fillMap = null; + + private static final String RESET_TYPE_NONE = "None"; + + private static final String RESET_TYPE_REPORT = "Report"; + + private static final String RESET_TYPE_PAGE = "Page"; + + private static final String RESET_TYPE_COLUMN = "Column"; + + private static final String RESET_TYPE_GROUP = "Group"; + + public static Map getFillMap() { + if (fillMap == null) { + fillMap = new HashMap(2); + fillMap.put("Solid", new Byte((byte)1)); + fillMap.put(new Byte((byte)1), "Solid"); + } + return fillMap; + } + + private static Map resetTypeMap = null; + + private static final String CALCULATION_NOTHING = "Nothing"; + + private static final String CALCULATION_COUNT = "Count"; + + private static final String CALCULATION_SUM = "Sum"; + + private static final String CALCULATION_AVERAGE = "Average"; + + private static final String CALCULATION_LOWEST = "Lowest"; + + private static final String CALCULATION_HIGHEST = "Highest"; + + private static final String CALCULATION_STANDARD_DEVIATION = "StandardDeviation"; + + private static final String CALCULATION_VARIANCE = "Variance"; + + private static final String CALCULATION_SYSTEM = "System"; + + private static final String CALCULATION_FIRST = "First"; + + private static final String CALCULATION_DISTINCT_COUNT = "DistinctCount"; + + public static Map getResetTypeMap() { + if (resetTypeMap == null) { + resetTypeMap = new HashMap(10); + resetTypeMap.put("None", new Byte((byte)5)); + resetTypeMap.put("Report", new Byte((byte)1)); + resetTypeMap.put("Page", new Byte((byte)2)); + resetTypeMap.put("Column", new Byte((byte)3)); + resetTypeMap.put("Group", new Byte((byte)4)); + resetTypeMap.put(new Byte((byte)5), "None"); + resetTypeMap.put(new Byte((byte)1), "Report"); + resetTypeMap.put(new Byte((byte)2), "Page"); + resetTypeMap.put(new Byte((byte)3), "Column"); + resetTypeMap.put(new Byte((byte)4), "Group"); + } + return resetTypeMap; + } + + private static Map calculationMap = null; + + private static final String PRINT_ORDER_VERTICAL = "Vertical"; + + private static final String PRINT_ORDER_HORIZONTAL = "Horizontal"; + + public static Map getCalculationMap() { + if (calculationMap == null) { + calculationMap = new HashMap(18); + calculationMap.put("Nothing", new Byte((byte)0)); + calculationMap.put("Count", new Byte((byte)1)); + calculationMap.put("Sum", new Byte((byte)2)); + calculationMap.put("Average", new Byte((byte)3)); + calculationMap.put("Lowest", new Byte((byte)4)); + calculationMap.put("Highest", new Byte((byte)5)); + calculationMap.put("StandardDeviation", new Byte((byte)6)); + calculationMap.put("Variance", new Byte((byte)7)); + calculationMap.put("System", new Byte((byte)8)); + calculationMap.put("First", new Byte((byte)9)); + calculationMap.put("DistinctCount", new Byte((byte)10)); + calculationMap.put(new Byte((byte)0), "Nothing"); + calculationMap.put(new Byte((byte)1), "Count"); + calculationMap.put(new Byte((byte)2), "Sum"); + calculationMap.put(new Byte((byte)3), "Average"); + calculationMap.put(new Byte((byte)4), "Lowest"); + calculationMap.put(new Byte((byte)5), "Highest"); + calculationMap.put(new Byte((byte)6), "StandardDeviation"); + calculationMap.put(new Byte((byte)7), "Variance"); + calculationMap.put(new Byte((byte)8), "System"); + calculationMap.put(new Byte((byte)9), "First"); + calculationMap.put(new Byte((byte)10), "DistinctCount"); + } + return calculationMap; + } + + private static Map printOrderMap = null; + + private static final String ORIENTATION_PORTRAIT = "Portrait"; + + private static final String ORIENTATION_LANDSCAPE = "Landscape"; + + public static Map getPrintOrderMap() { + if (printOrderMap == null) { + printOrderMap = new HashMap(4); + printOrderMap.put("Vertical", new Byte((byte)1)); + printOrderMap.put("Horizontal", new Byte((byte)2)); + printOrderMap.put(new Byte((byte)1), "Vertical"); + printOrderMap.put(new Byte((byte)2), "Horizontal"); + } + return printOrderMap; + } + + private static Map orientationMap = null; + + private static final String WHEN_NO_DATA_TYPE_NO_PAGES = "NoPages"; + + private static final String WHEN_NO_DATA_TYPE_BLANK_PAGE = "BlankPage"; + + private static final String WHEN_NO_DATA_TYPE_ALL_SECTIONS_NO_DETAIL = "AllSectionsNoDetail"; + + private static final String WHEN_NO_DATA_TYPE_NO_DATA_SECTION = "NoDataSection"; + + public static Map getOrientationMap() { + if (orientationMap == null) { + orientationMap = new HashMap(4); + orientationMap.put("Portrait", new Byte((byte)1)); + orientationMap.put("Landscape", new Byte((byte)2)); + orientationMap.put(new Byte((byte)1), "Portrait"); + orientationMap.put(new Byte((byte)2), "Landscape"); + } + return orientationMap; + } + + private static Map whenNoDataTypeMap = null; + + private static final String EVALUATION_TIME_NOW = "Now"; + + private static final String EVALUATION_TIME_REPORT = "Report"; + + private static final String EVALUATION_TIME_PAGE = "Page"; + + private static final String EVALUATION_TIME_COLUMN = "Column"; + + private static final String EVALUATION_TIME_GROUP = "Group"; + + private static final String EVALUATION_TIME_BAND = "Band"; + + private static final String EVALUATION_TIME_AUTO = "Auto"; + + public static Map getWhenNoDataTypeMap() { + if (whenNoDataTypeMap == null) { + whenNoDataTypeMap = new HashMap(6); + whenNoDataTypeMap.put("NoPages", new Byte((byte)1)); + whenNoDataTypeMap.put("BlankPage", new Byte((byte)2)); + whenNoDataTypeMap.put("AllSectionsNoDetail", new Byte((byte)3)); + whenNoDataTypeMap.put("NoDataSection", new Byte((byte)4)); + whenNoDataTypeMap.put(new Byte((byte)1), "NoPages"); + whenNoDataTypeMap.put(new Byte((byte)2), "BlankPage"); + whenNoDataTypeMap.put(new Byte((byte)3), "AllSectionsNoDetail"); + whenNoDataTypeMap.put(new Byte((byte)4), "NoDataSection"); + } + return whenNoDataTypeMap; + } + + private static Map evaluationTimeMap = null; + + private static final String HYPERLINK_TYPE_NONE = "None"; + + private static final String HYPERLINK_TYPE_REFERENCE = "Reference"; + + private static final String HYPERLINK_TYPE_LOCAL_ANCHOR = "LocalAnchor"; + + private static final String HYPERLINK_TYPE_LOCAL_PAGE = "LocalPage"; + + private static final String HYPERLINK_TYPE_REMOTE_ANCHOR = "RemoteAnchor"; + + private static final String HYPERLINK_TYPE_REMOTE_PAGE = "RemotePage"; + + public static Map getEvaluationTimeMap() { + if (evaluationTimeMap == null) { + evaluationTimeMap = new HashMap(10); + evaluationTimeMap.put("Now", new Byte((byte)1)); + evaluationTimeMap.put("Report", new Byte((byte)2)); + evaluationTimeMap.put("Page", new Byte((byte)3)); + evaluationTimeMap.put("Column", new Byte((byte)4)); + evaluationTimeMap.put("Group", new Byte((byte)5)); + evaluationTimeMap.put("Band", new Byte((byte)6)); + evaluationTimeMap.put("Auto", new Byte((byte)7)); + evaluationTimeMap.put(new Byte((byte)1), "Now"); + evaluationTimeMap.put(new Byte((byte)2), "Report"); + evaluationTimeMap.put(new Byte((byte)3), "Page"); + evaluationTimeMap.put(new Byte((byte)4), "Column"); + evaluationTimeMap.put(new Byte((byte)5), "Group"); + evaluationTimeMap.put(new Byte((byte)6), "Band"); + evaluationTimeMap.put(new Byte((byte)7), "Auto"); + } + return evaluationTimeMap; + } + + private static Map hyperlinkTypeMap = null; + + private static final String HYPERLINK_TARGET_SELF = "Self"; + + private static final String HYPERLINK_TARGET_BLANK = "Blank"; + + private static final String HYPERLINK_TARGET_PARENT = "Parent"; + + private static final String HYPERLINK_TARGET_TOP = "Top"; + + public static Map getHyperlinkTypeMap() { + if (hyperlinkTypeMap == null) { + hyperlinkTypeMap = new HashMap(12); + hyperlinkTypeMap.put("None", new Byte((byte)1)); + hyperlinkTypeMap.put("Reference", new Byte((byte)2)); + hyperlinkTypeMap.put("LocalAnchor", new Byte((byte)3)); + hyperlinkTypeMap.put("LocalPage", new Byte((byte)4)); + hyperlinkTypeMap.put("RemoteAnchor", new Byte((byte)5)); + hyperlinkTypeMap.put("RemotePage", new Byte((byte)6)); + hyperlinkTypeMap.put(new Byte((byte)1), "None"); + hyperlinkTypeMap.put(new Byte((byte)2), "Reference"); + hyperlinkTypeMap.put(new Byte((byte)3), "LocalAnchor"); + hyperlinkTypeMap.put(new Byte((byte)4), "LocalPage"); + hyperlinkTypeMap.put(new Byte((byte)5), "RemoteAnchor"); + hyperlinkTypeMap.put(new Byte((byte)6), "RemotePage"); + } + return hyperlinkTypeMap; + } + + private static Map hyperlinkTargetMap = null; + + private static final String EDGE_TOP = "Top"; + + private static final String EDGE_BOTTOM = "Bottom"; + + private static final String EDGE_LEFT = "Left"; + + private static final String EDGE_RIGHT = "Right"; + + public static Map getHyperlinkTargetMap() { + if (hyperlinkTargetMap == null) { + hyperlinkTargetMap = new HashMap(4); + hyperlinkTargetMap.put("Self", new Byte((byte)1)); + hyperlinkTargetMap.put("Blank", new Byte((byte)2)); + hyperlinkTargetMap.put("Parent", new Byte((byte)3)); + hyperlinkTargetMap.put("Top", new Byte((byte)4)); + hyperlinkTargetMap.put(new Byte((byte)1), "Self"); + hyperlinkTargetMap.put(new Byte((byte)2), "Blank"); + hyperlinkTargetMap.put(new Byte((byte)3), "Parent"); + hyperlinkTargetMap.put(new Byte((byte)4), "Top"); + } + return hyperlinkTargetMap; + } + + private static Map chartEdgeMap = null; + + private static final String ORIENTATION_HORIZONTAL = "Horizontal"; + + private static final String ORIENTATION_VERTICAL = "Vertical"; + + public static Map getChartEdgeMap() { + if (chartEdgeMap == null) { + chartEdgeMap = new HashMap(4); + chartEdgeMap.put("Top", new Byte((byte)1)); + chartEdgeMap.put("Bottom", new Byte((byte)2)); + chartEdgeMap.put("Left", new Byte((byte)3)); + chartEdgeMap.put("Right", new Byte((byte)4)); + chartEdgeMap.put(new Byte((byte)1), "Top"); + chartEdgeMap.put(new Byte((byte)2), "Bottom"); + chartEdgeMap.put(new Byte((byte)3), "Left"); + chartEdgeMap.put(new Byte((byte)4), "Right"); + } + return chartEdgeMap; + } + + public static Map getChartTitlePositionMap() { + return getChartEdgeMap(); + } + + private static Map plotOrientationMap = null; + + private static final String SORT_ORDER_ASCENDING = "Ascending"; + + private static final String SORT_ORDER_DESCENDING = "Descending"; + + public static Map getPlotOrientationMap() { + if (plotOrientationMap == null) { + plotOrientationMap = new HashMap(4); + plotOrientationMap.put("Horizontal", PlotOrientation.HORIZONTAL); + plotOrientationMap.put("Vertical", PlotOrientation.VERTICAL); + plotOrientationMap.put(PlotOrientation.HORIZONTAL, "Horizontal"); + plotOrientationMap.put(PlotOrientation.VERTICAL, "Vertical"); + } + return plotOrientationMap; + } + + private static Map sortOrderMap = null; + + private static final String SCALE_ON_BOTH_AXES = "BothAxes"; + + private static final String SCALE_ON_DOMAIN_AXIS = "DomainAxis"; + + private static final String SCALE_ON_RANGE_AXIS = "RangeAxis"; + + public static Map getSortOrderMap() { + if (sortOrderMap == null) { + sortOrderMap = new HashMap(4); + sortOrderMap.put("Ascending", new Byte((byte)0)); + sortOrderMap.put("Descending", new Byte((byte)1)); + sortOrderMap.put(new Byte((byte)0), "Ascending"); + sortOrderMap.put(new Byte((byte)1), "Descending"); + } + return sortOrderMap; + } + + private static Map scaleTypeMap = null; + + private static final String TIME_PERIOD_YEAR = "Year"; + + private static final String TIME_PERIOD_QUARTER = "Quarter"; + + private static final String TIME_PERIOD_MONTH = "Month"; + + private static final String TIME_PERIOD_WEEK = "Week"; + + private static final String TIME_PERIOD_DAY = "Day"; + + private static final String TIME_PERIOD_HOUR = "Hour"; + + private static final String TIME_PERIOD_MINUTE = "Minute"; + + private static final String TIME_PERIOD_SECOND = "Second"; + + private static final String TIME_PERIOD_MILISECOND = "Milisecond"; + + private static final String WHEN_RESOURCE_MISSING_TYPE_NULL = "Null"; + + private static final String WHEN_RESOURCE_MISSING_TYPE_EMPTY = "Empty"; + + private static final String WHEN_RESOURCE_MISSING_TYPE_KEY = "Key"; + + private static final String WHEN_RESOURCE_MISSING_TYPE_ERROR = "Error"; + + public static Map getScaleTypeMap() { + if (scaleTypeMap == null) { + scaleTypeMap = new HashMap(6); + scaleTypeMap.put("BothAxes", new Integer(0)); + scaleTypeMap.put("DomainAxis", new Integer(1)); + scaleTypeMap.put("RangeAxis", new Integer(2)); + scaleTypeMap.put(new Integer(0), "BothAxes"); + scaleTypeMap.put(new Integer(1), "DomainAxis"); + scaleTypeMap.put(new Integer(2), "RangeAxis"); + } + return scaleTypeMap; + } + + public static Class getTimePeriod(String timePeriod) { + if (timePeriod.equals("Year")) + return Year.class; + if (timePeriod.equals("Quarter")) + return Quarter.class; + if (timePeriod.equals("Month")) + return Month.class; + if (timePeriod.equals("Week")) + return Week.class; + if (timePeriod.equals("Day")) + return Day.class; + if (timePeriod.equals("Hour")) + return Hour.class; + if (timePeriod.equals("Minute")) + return Minute.class; + if (timePeriod.equals("Second")) + return Second.class; + return Millisecond.class; + } + + public static String getTimePeriodName(Class clazz) { + if (clazz.equals(Year.class)) + return "Year"; + if (clazz.equals(Quarter.class)) + return "Quarter"; + if (clazz.equals(Month.class)) + return "Month"; + if (clazz.equals(Week.class)) + return "Week"; + if (clazz.equals(Day.class)) + return "Day"; + if (clazz.equals(Hour.class)) + return "Hour"; + if (clazz.equals(Minute.class)) + return "Minute"; + if (clazz.equals(Second.class)) + return "Second"; + return "Milisecond"; + } + + private static Map whenResourceMissingTypeMap = null; + + private static final String METER_SHAPE_CHORD = "chord"; + + private static final String METER_SHAPE_CIRCLE = "circle"; + + private static final String METER_SHAPE_PIE = "pie"; + + public static Map getWhenResourceMissingTypeMap() { + if (whenResourceMissingTypeMap == null) { + whenResourceMissingTypeMap = new HashMap(); + whenResourceMissingTypeMap.put("Null", new Byte((byte)1)); + whenResourceMissingTypeMap.put("Empty", new Byte((byte)2)); + whenResourceMissingTypeMap.put("Key", new Byte((byte)3)); + whenResourceMissingTypeMap.put("Error", new Byte((byte)4)); + whenResourceMissingTypeMap.put(new Byte((byte)1), "Null"); + whenResourceMissingTypeMap.put(new Byte((byte)2), "Empty"); + whenResourceMissingTypeMap.put(new Byte((byte)3), "Key"); + whenResourceMissingTypeMap.put(new Byte((byte)4), "Error"); + } + return whenResourceMissingTypeMap; + } + + private static Map meterShapeMap = null; + + private static final String THERMOMETER_VALUE_LOCATION_NONE = "none"; + + private static final String THERMOMETER_VALUE_LOCATION_LEFT = "left"; + + private static final String THERMOMETER_VALUE_LOCATION_RIGHT = "right"; + + private static final String THERMOMETER_VALUE_LOCATION_BULB = "bulb"; + + public static Map getMeterShapeMap() { + if (meterShapeMap == null) { + meterShapeMap = new HashMap(); + meterShapeMap.put("chord", new Byte((byte)0)); + meterShapeMap.put("circle", new Byte((byte)1)); + meterShapeMap.put("pie", new Byte((byte)2)); + meterShapeMap.put(new Byte((byte)0), "chord"); + meterShapeMap.put(new Byte((byte)1), "circle"); + meterShapeMap.put(new Byte((byte)2), "pie"); + } + return meterShapeMap; + } + + private static Map thermometerValueLocationMap = null; + + private static final String AXIS_POSITION_LEFT_OR_TOP = "leftOrTop"; + + private static final String AXIS_POSITION_RIGHT_OR_BOTTOM = "rightOrBottom"; + + public static Map getThermometerValueLocationMap() { + if (thermometerValueLocationMap == null) { + thermometerValueLocationMap = new HashMap(); + thermometerValueLocationMap.put("none", new Byte((byte)0)); + thermometerValueLocationMap.put("left", new Byte((byte)1)); + thermometerValueLocationMap.put("right", new Byte((byte)2)); + thermometerValueLocationMap.put("bulb", new Byte((byte)3)); + thermometerValueLocationMap.put(new Byte((byte)0), "none"); + thermometerValueLocationMap.put(new Byte((byte)1), "left"); + thermometerValueLocationMap.put(new Byte((byte)2), "right"); + thermometerValueLocationMap.put(new Byte((byte)3), "bulb"); + } + return thermometerValueLocationMap; + } + + private static Map axisPositionMap = null; + + private static final String CROSSTAB_BUCKET_ORDER_ASCENDING = "Ascending"; + + private static final String CROSSTAB_BUCKET_ORDER_DESCENDING = "Descending"; + + public static Map getAxisPositionMap() { + if (axisPositionMap == null) { + axisPositionMap = new HashMap(); + axisPositionMap.put("leftOrTop", new Byte((byte)1)); + axisPositionMap.put("rightOrBottom", new Byte((byte)2)); + axisPositionMap.put(new Byte((byte)1), "leftOrTop"); + axisPositionMap.put(new Byte((byte)2), "rightOrBottom"); + } + return axisPositionMap; + } + + private static Map crosstabBucketOrderMap = null; + + private static final String CROSSTAB_PERCENTAGE_NONE = "None"; + + private static final String CROSSTAB_PERCENTAGE_GRAND_TOTAL = "GrandTotal"; + + public static Map getCrosstabBucketOrderMap() { + if (crosstabBucketOrderMap == null) { + crosstabBucketOrderMap = new HashMap(); + crosstabBucketOrderMap.put("Ascending", new Byte((byte)1)); + crosstabBucketOrderMap.put("Descending", new Byte((byte)2)); + crosstabBucketOrderMap.put(new Byte((byte)1), "Ascending"); + crosstabBucketOrderMap.put(new Byte((byte)2), "Descending"); + } + return crosstabBucketOrderMap; + } + + private static Map crosstabPercentageMap = null; + + private static final String CROSSTAB_TOTAL_POSITION_NONE = "None"; + + private static final String CROSSTAB_TOTAL_POSITION_START = "Start"; + + private static final String CROSSTAB_TOTAL_POSITION_END = "End"; + + public static Map getCrosstabPercentageMap() { + if (crosstabPercentageMap == null) { + crosstabPercentageMap = new HashMap(); + crosstabPercentageMap.put("None", new Byte((byte)0)); + crosstabPercentageMap.put("GrandTotal", new Byte((byte)1)); + crosstabPercentageMap.put(new Byte((byte)0), "None"); + crosstabPercentageMap.put(new Byte((byte)1), "GrandTotal"); + } + return crosstabPercentageMap; + } + + private static Map crosstabTotalPositionMap = null; + + private static final String CROSSTAB_ROW_POSITION_TOP = "Top"; + + private static final String CROSSTAB_ROW_POSITION_MIDDLE = "Middle"; + + private static final String CROSSTAB_ROW_POSITION_BOTTOM = "Bottom"; + + private static final String CROSSTAB_ROW_POSITION_STRETCH = "Stretch"; + + public static Map getCrosstabTotalPositionMap() { + if (crosstabTotalPositionMap == null) { + crosstabTotalPositionMap = new HashMap(); + crosstabTotalPositionMap.put("None", new Byte((byte)0)); + crosstabTotalPositionMap.put("Start", new Byte((byte)1)); + crosstabTotalPositionMap.put("End", new Byte((byte)2)); + crosstabTotalPositionMap.put(new Byte((byte)0), "None"); + crosstabTotalPositionMap.put(new Byte((byte)1), "Start"); + crosstabTotalPositionMap.put(new Byte((byte)2), "End"); + } + return crosstabTotalPositionMap; + } + + private static Map crosstabRowPositionMap = null; + + private static final String CROSSTAB_COLUMN_POSITION_LEFT = "Left"; + + private static final String CROSSTAB_COLUMN_POSITION_CENTER = "Center"; + + private static final String CROSSTAB_COLUMN_POSITION_RIGHT = "Right"; + + private static final String CROSSTAB_COLUMN_POSITION_STRETCH = "Stretch"; + + public static Map getCrosstabRowPositionMap() { + if (crosstabRowPositionMap == null) { + crosstabRowPositionMap = new HashMap(); + crosstabRowPositionMap.put("Top", new Byte((byte)1)); + crosstabRowPositionMap.put("Middle", new Byte((byte)2)); + crosstabRowPositionMap.put("Bottom", new Byte((byte)3)); + crosstabRowPositionMap.put("Stretch", new Byte((byte)4)); + crosstabRowPositionMap.put(new Byte((byte)1), "Top"); + crosstabRowPositionMap.put(new Byte((byte)2), "Middle"); + crosstabRowPositionMap.put(new Byte((byte)3), "Bottom"); + crosstabRowPositionMap.put(new Byte((byte)4), "Stretch"); + } + return crosstabRowPositionMap; + } + + private static Map crosstabColumnPositionMap = null; + + private static final String UNKNOWN = "unknown"; + + private static final String BACKGROUND = "background"; + + private static final String TITLE = "title"; + + private static final String PAGE_HEADER = "pageHeader"; + + private static final String COLUMN_HEADER = "columnHeader"; + + private static final String GROUP_HEADER = "groupHeader"; + + private static final String DETAIL = "detail"; + + private static final String GROUP_FOOTER = "groupFooter"; + + private static final String COLUMN_FOOTER = "columnFooter"; + + private static final String PAGE_FOOTER = "pageFooter"; + + private static final String LAST_PAGE_FOOTER = "lastPageFooter"; + + private static final String SUMMARY = "summary"; + + private static final String NO_DATA = "noData"; + + public static Map getCrosstabColumnPositionMap() { + if (crosstabColumnPositionMap == null) { + crosstabColumnPositionMap = new HashMap(); + crosstabColumnPositionMap.put("Left", new Byte((byte)1)); + crosstabColumnPositionMap.put("Center", new Byte((byte)2)); + crosstabColumnPositionMap.put("Right", new Byte((byte)3)); + crosstabColumnPositionMap.put("Stretch", new Byte((byte)4)); + crosstabColumnPositionMap.put(new Byte((byte)1), "Left"); + crosstabColumnPositionMap.put(new Byte((byte)2), "Center"); + crosstabColumnPositionMap.put(new Byte((byte)3), "Right"); + crosstabColumnPositionMap.put(new Byte((byte)4), "Stretch"); + } + return crosstabColumnPositionMap; + } + + private static Map bandTypeMap = null; + + public static final String JASPERREPORT_PUBLIC_ID = "-//JasperReports//DTD JasperReport//EN"; + + public static final String JASPERREPORT_SYSTEM_ID = "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"; + + public static final String JASPERREPORT_DTD = "net/sf/jasperreports/engine/dtds/jasperreport.dtd"; + + public static final String JASPERPRINT_PUBLIC_ID = "-//JasperReports//DTD JasperPrint//EN"; + + public static final String JASPERPRINT_SYSTEM_ID = "http://jasperreports.sourceforge.net/dtds/jasperprint.dtd"; + + public static final String JASPERPRINT_DTD = "net/sf/jasperreports/engine/dtds/jasperprint.dtd"; + + public static final String JASPERTEMPLATE_PUBLIC_ID = "-//JasperReports//DTD Template//EN"; + + public static final String JASPERTEMPLATE_SYSTEM_ID = "http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd"; + + public static final String JASPERTEMPLATE_DTD = "net/sf/jasperreports/engine/dtds/jaspertemplate.dtd"; + + public static final String ELEMENT_jasperReport = "jasperReport"; + + public static final String ATTRIBUTE_name = "name"; + + public static final String ATTRIBUTE_language = "language"; + + public static final String ATTRIBUTE_columnCount = "columnCount"; + + public static final String ATTRIBUTE_printOrder = "printOrder"; + + public static final String ATTRIBUTE_pageWidth = "pageWidth"; + + public static final String ATTRIBUTE_pageHeight = "pageHeight"; + + public static final String ATTRIBUTE_orientation = "orientation"; + + public static final String ATTRIBUTE_whenNoDataType = "whenNoDataType"; + + public static final String ATTRIBUTE_columnWidth = "columnWidth"; + + public static final String ATTRIBUTE_columnSpacing = "columnSpacing"; + + public static final String ATTRIBUTE_leftMargin = "leftMargin"; + + public static final String ATTRIBUTE_rightMargin = "rightMargin"; + + public static final String ATTRIBUTE_topMargin = "topMargin"; + + public static final String ATTRIBUTE_bottomMargin = "bottomMargin"; + + public static final String ATTRIBUTE_isTitleNewPage = "isTitleNewPage"; + + public static final String ATTRIBUTE_isSummaryNewPage = "isSummaryNewPage"; + + public static final String ATTRIBUTE_isFloatColumnFooter = "isFloatColumnFooter"; + + public static final String ATTRIBUTE_scriptletClass = "scriptletClass"; + + public static final String ATTRIBUTE_formatFactoryClass = "formatFactoryClass"; + + public static final String ATTRIBUTE_resourceBundle = "resourceBundle"; + + public static final String ATTRIBUTE_whenResourceMissingType = "whenResourceMissingType"; + + public static final String ATTRIBUTE_isIgnorePagination = "isIgnorePagination"; + + public static final String ATTRIBUTE_value = "value"; + + public static final String ELEMENT_import = "import"; + + public static final String ELEMENT_background = "background"; + + public static final String ELEMENT_title = "title"; + + public static final String ELEMENT_pageHeader = "pageHeader"; + + public static final String ELEMENT_columnHeader = "columnHeader"; + + public static final String ELEMENT_detail = "detail"; + + public static final String ELEMENT_columnFooter = "columnFooter"; + + public static final String ELEMENT_pageFooter = "pageFooter"; + + public static final String ELEMENT_lastPageFooter = "lastPageFooter"; + + public static final String ELEMENT_summary = "summary"; + + public static final String ELEMENT_noData = "noData"; + + public static final String ELEMENT_property = "property"; + + public static final String ELEMENT_propertyExpression = "propertyExpression"; + + public static final String ELEMENT_page = "page"; + + public static final String ELEMENT_jasperPrint = "jasperPrint"; + + public static final String ATTRIBUTE_locale = "locale"; + + public static final String ATTRIBUTE_timezone = "timezone"; + + public static final String ELEMENT_origin = "origin"; + + public static final String ATTRIBUTE_report = "report"; + + public static final String ATTRIBUTE_group = "group"; + + public static final String ATTRIBUTE_band = "band"; + + public static final String ELEMENT_band = "band"; + + public static final String ELEMENT_printWhenExpression = "printWhenExpression"; + + public static final String ATTRIBUTE_height = "height"; + + public static final String ATTRIBUTE_isSplitAllowed = "isSplitAllowed"; + + public static final String ELEMENT_pen = "pen"; + + public static final String ATTRIBUTE_lineWidth = "lineWidth"; + + public static final String ATTRIBUTE_lineStyle = "lineStyle"; + + public static final String ATTRIBUTE_lineColor = "lineColor"; + + public static final String ELEMENT_box = "box"; + + public static final String ELEMENT_topPen = "topPen"; + + public static final String ELEMENT_leftPen = "leftPen"; + + public static final String ELEMENT_bottomPen = "bottomPen"; + + public static final String ELEMENT_rightPen = "rightPen"; + + public static final String ATTRIBUTE_border = "border"; + + public static final String ATTRIBUTE_borderColor = "borderColor"; + + public static final String ATTRIBUTE_padding = "padding"; + + public static final String ATTRIBUTE_topBorder = "topBorder"; + + public static final String ATTRIBUTE_topBorderColor = "topBorderColor"; + + public static final String ATTRIBUTE_topPadding = "topPadding"; + + public static final String ATTRIBUTE_leftBorder = "leftBorder"; + + public static final String ATTRIBUTE_leftBorderColor = "leftBorderColor"; + + public static final String ATTRIBUTE_leftPadding = "leftPadding"; + + public static final String ATTRIBUTE_bottomBorder = "bottomBorder"; + + public static final String ATTRIBUTE_bottomBorderColor = "bottomBorderColor"; + + public static final String ATTRIBUTE_bottomPadding = "bottomPadding"; + + public static final String ATTRIBUTE_rightBorder = "rightBorder"; + + public static final String ATTRIBUTE_rightBorderColor = "rightBorderColor"; + + public static final String ATTRIBUTE_rightPadding = "rightPadding"; + + public static final String ELEMENT_break = "break"; + + public static final String ATTRIBUTE_type = "type"; + + public static final String ELEMENT_chart = "chart"; + + public static final String ELEMENT_chartTitle = "chartTitle"; + + public static final String ELEMENT_titleExpression = "titleExpression"; + + public static final String ELEMENT_chartSubtitle = "chartSubtitle"; + + public static final String ELEMENT_subtitleExpression = "subtitleExpression"; + + public static final String ELEMENT_chartLegend = "chartLegend"; + + public static final String ELEMENT_pieChart = "pieChart"; + + public static final String ELEMENT_pie3DChart = "pie3DChart"; + + public static final String ELEMENT_barChart = "barChart"; + + public static final String ELEMENT_bar3DChart = "bar3DChart"; + + public static final String ELEMENT_bubbleChart = "bubbleChart"; + + public static final String ELEMENT_stackedBarChart = "stackedBarChart"; + + public static final String ELEMENT_stackedBar3DChart = "stackedBar3DChart"; + + public static final String ELEMENT_lineChart = "lineChart"; + + public static final String ELEMENT_highLowChart = "highLowChart"; + + public static final String ELEMENT_candlestickChart = "candlestickChart"; + + public static final String ELEMENT_areaChart = "areaChart"; + + public static final String ELEMENT_scatterChart = "scatterChart"; + + public static final String ELEMENT_timeSeriesChart = "timeSeriesChart"; + + public static final String ELEMENT_xyAreaChart = "xyAreaChart"; + + public static final String ELEMENT_xyBarChart = "xyBarChart"; + + public static final String ELEMENT_xyLineChart = "xyLineChart"; + + public static final String ELEMENT_meterChart = "meterChart"; + + public static final String ELEMENT_thermometerChart = "thermometerChart"; + + public static final String ELEMENT_multiAxisChart = "multiAxisChart"; + + public static final String ELEMENT_stackedAreaChart = "stackedAreaChart"; + + public static final String ATTRIBUTE_isShowLegend = "isShowLegend"; + + public static final String ATTRIBUTE_evaluationTime = "evaluationTime"; + + public static final String ATTRIBUTE_evaluationGroup = "evaluationGroup"; + + public static final String ATTRIBUTE_bookmarkLevel = "bookmarkLevel"; + + public static final String ATTRIBUTE_customizerClass = "customizerClass"; + + public static final String ATTRIBUTE_renderType = "renderType"; + + public static final String ELEMENT_axisFormat = "axisFormat"; + + public static final String ELEMENT_labelFont = "labelFont"; + + public static final String ELEMENT_tickLabelFont = "tickLabelFont"; + + public static final String ATTRIBUTE_labelColor = "labelColor"; + + public static final String ATTRIBUTE_tickLabelColor = "tickLabelColor"; + + public static final String ATTRIBUTE_tickLabelMask = "tickLabelMask"; + + public static final String ATTRIBUTE_axisLineColor = "axisLineColor"; + + public static final String ATTRIBUTE_textColor = "textColor"; + + public static final String ATTRIBUTE_backgroundColor = "backgroundColor"; + + public static final String ATTRIBUTE_position = "position"; + + public static final String ATTRIBUTE_color = "color"; + + public static final String ELEMENT_plot = "plot"; + + public static final String ELEMENT_piePlot = "piePlot"; + + public static final String ELEMENT_pie3DPlot = "pie3DPlot"; + + public static final String ELEMENT_barPlot = "barPlot"; + + public static final String ELEMENT_bubblePlot = "bubblePlot"; + + public static final String ELEMENT_linePlot = "linePlot"; + + public static final String ELEMENT_timeSeriesPlot = "timeSeriesPlot"; + + public static final String ELEMENT_bar3DPlot = "bar3DPlot"; + + public static final String ELEMENT_highLowPlot = "highLowPlot"; + + public static final String ELEMENT_candlestickPlot = "candlestickPlot"; + + public static final String ELEMENT_areaPlot = "areaPlot"; + + public static final String ELEMENT_scatterPlot = "scatterPlot"; + + public static final String ELEMENT_multiAxisPlot = "multiAxisPlot"; + + public static final String ELEMENT_valueDisplay = "valueDisplay"; + + public static final String ELEMENT_dataRange = "dataRange"; + + public static final String ELEMENT_meterInterval = "meterInterval"; + + public static final String ELEMENT_categoryAxisFormat = "categoryAxisFormat"; + + public static final String ELEMENT_valueAxisFormat = "valueAxisFormat"; + + public static final String ELEMENT_xAxisFormat = "xAxisFormat"; + + public static final String ELEMENT_yAxisFormat = "yAxisFormat"; + + public static final String ELEMENT_timeAxisFormat = "timeAxisFormat"; + + public static final String ELEMENT_lowExpression = "lowExpression"; + + public static final String ELEMENT_highExpression = "highExpression"; + + public static final String ELEMENT_categoryAxisLabelExpression = "categoryAxisLabelExpression"; + + public static final String ELEMENT_valueAxisLabelExpression = "valueAxisLabelExpression"; + + public static final String ELEMENT_xAxisLabelExpression = "xAxisLabelExpression"; + + public static final String ELEMENT_yAxisLabelExpression = "yAxisLabelExpression"; + + public static final String ELEMENT_timeAxisLabelExpression = "timeAxisLabelExpression"; + + public static final String ATTRIBUTE_backgroundAlpha = "backgroundAlpha"; + + public static final String ATTRIBUTE_foregroundAlpha = "foregroundAlpha"; + + public static final String ATTRIBUTE_labelRotation = "labelRotation"; + + public static final String ATTRIBUTE_mask = "mask"; + + public static final String ATTRIBUTE_label = "label"; + + public static final String ATTRIBUTE_alpha = "alpha"; + + public static final String ATTRIBUTE_depthFactor = "depthFactor"; + + public static final String ATTRIBUTE_isShowLabels = "isShowLabels"; + + public static final String ATTRIBUTE_isShowTickLabels = "isShowTickLabels"; + + public static final String ATTRIBUTE_scaleType = "scaleType"; + + public static final String ATTRIBUTE_isShowTickMarks = "isShowTickMarks"; + + public static final String ATTRIBUTE_isShowLines = "isShowLines"; + + public static final String ATTRIBUTE_isShowShapes = "isShowShapes"; + + public static final String ATTRIBUTE_xOffset = "xOffset"; + + public static final String ATTRIBUTE_yOffset = "yOffset"; + + public static final String ATTRIBUTE_isShowOpenTicks = "isShowOpenTicks"; + + public static final String ATTRIBUTE_isShowCloseTicks = "isShowCloseTicks"; + + public static final String ATTRIBUTE_isShowVolume = "isShowVolume"; + + public static final String ATTRIBUTE_isCircular = "isCircular"; + + public static final String ELEMENT_seriesColor = "seriesColor"; + + public static final String ATTRIBUTE_seriesOrder = "seriesOrder"; + + public static final String ELEMENT_conditionalStyle = "conditionalStyle"; + + public static final String ELEMENT_conditionExpression = "conditionExpression"; + + public static final String ELEMENT_style = "style"; + + public static final String ATTRIBUTE_isDefault = "isDefault"; + + public static final String ATTRIBUTE_mode = "mode"; + + public static final String ATTRIBUTE_forecolor = "forecolor"; + + public static final String ATTRIBUTE_backcolor = "backcolor"; + + public static final String ATTRIBUTE_style = "style"; + + public static final String ATTRIBUTE_origin = "origin"; + + public static final String ATTRIBUTE_radius = "radius"; + + public static final String ATTRIBUTE_rotation = "rotation"; + + public static final String ATTRIBUTE_lineSpacing = "lineSpacing"; + + public static final String ATTRIBUTE_isStyledText = "isStyledText"; + + public static final String ATTRIBUTE_markup = "markup"; + + public static final String ATTRIBUTE_pattern = "pattern"; + + public static final String ATTRIBUTE_isBlankWhenNull = "isBlankWhenNull"; + + public static final String ATTRIBUTE_fontSize = "fontSize"; + + public static final String ELEMENT_subDataset = "subDataset"; + + public static final String ELEMENT_filterExpression = "filterExpression"; + + public static final String ELEMENT_datasetRun = "datasetRun"; + + public static final String ELEMENT_parametersMapExpression = "parametersMapExpression"; + + public static final String ELEMENT_connectionExpression = "connectionExpression"; + + public static final String ELEMENT_dataSourceExpression = "dataSourceExpression"; + + public static final String ATTRIBUTE_subDataset = "subDataset"; + + public static final String ELEMENT_datasetParameterExpression = "datasetParameterExpression"; + + public static final String ELEMENT_datasetParameter = "datasetParameter"; + + public static final String ELEMENT_dataset = "dataset"; + + public static final String ELEMENT_categoryDataset = "categoryDataset"; + + public static final String ELEMENT_timeSeriesDataset = "timeSeriesDataset"; + + public static final String ELEMENT_timePeriodDataset = "timePeriodDataset"; + + public static final String ELEMENT_xyzDataset = "xyzDataset"; + + public static final String ELEMENT_xyDataset = "xyDataset"; + + public static final String ELEMENT_pieDataset = "pieDataset"; + + public static final String ELEMENT_valueDataset = "valueDataset"; + + public static final String ELEMENT_highLowDataset = "highLowDataset"; + + public static final String ELEMENT_categorySeries = "categorySeries"; + + public static final String ELEMENT_xyzSeries = "xyzSeries"; + + public static final String ELEMENT_xySeries = "xySeries"; + + public static final String ELEMENT_timeSeries = "timeSeries"; + + public static final String ELEMENT_timePeriodSeries = "timePeriodSeries"; + + public static final String ELEMENT_incrementWhenExpression = "incrementWhenExpression"; + + public static final String ELEMENT_keyExpression = "keyExpression"; + + public static final String ELEMENT_valueExpression = "valueExpression"; + + public static final String ELEMENT_labelExpression = "labelExpression"; + + public static final String ELEMENT_seriesExpression = "seriesExpression"; + + public static final String ELEMENT_categoryExpression = "categoryExpression"; + + public static final String ELEMENT_xValueExpression = "xValueExpression"; + + public static final String ELEMENT_yValueExpression = "yValueExpression"; + + public static final String ELEMENT_zValueExpression = "zValueExpression"; + + public static final String ELEMENT_timePeriodExpression = "timePeriodExpression"; + + public static final String ELEMENT_startDateExpression = "startDateExpression"; + + public static final String ELEMENT_endDateExpression = "endDateExpression"; + + public static final String ELEMENT_dateExpression = "dateExpression"; + + public static final String ELEMENT_openExpression = "openExpression"; + + public static final String ELEMENT_closeExpression = "closeExpression"; + + public static final String ELEMENT_volumeExpression = "volumeExpression"; + + public static final String ATTRIBUTE_timePeriod = "timePeriod"; + + public static final String ELEMENT_reportElement = "reportElement"; + + public static final String ATTRIBUTE_key = "key"; + + public static final String ATTRIBUTE_positionType = "positionType"; + + public static final String ATTRIBUTE_stretchType = "stretchType"; + + public static final String ATTRIBUTE_isPrintRepeatedValues = "isPrintRepeatedValues"; + + public static final String ATTRIBUTE_x = "x"; + + public static final String ATTRIBUTE_y = "y"; + + public static final String ATTRIBUTE_width = "width"; + + public static final String ATTRIBUTE_isRemoveLineWhenBlank = "isRemoveLineWhenBlank"; + + public static final String ATTRIBUTE_isPrintInFirstWholeBand = "isPrintInFirstWholeBand"; + + public static final String ATTRIBUTE_isPrintWhenDetailOverflows = "isPrintWhenDetailOverflows"; + + public static final String ATTRIBUTE_printWhenGroupChanges = "printWhenGroupChanges"; + + public static final String ELEMENT_elementGroup = "elementGroup"; + + public static final String ELEMENT_ellipse = "ellipse"; + + public static final String ELEMENT_field = "field"; + + public static final String ELEMENT_fieldDescription = "fieldDescription"; + + public static final String ATTRIBUTE_class = "class"; + + public static final String ELEMENT_font = "font"; + + public static final String ATTRIBUTE_reportFont = "reportFont"; + + public static final String ATTRIBUTE_fontName = "fontName"; + + public static final String ATTRIBUTE_isBold = "isBold"; + + public static final String ATTRIBUTE_isItalic = "isItalic"; + + public static final String ATTRIBUTE_isUnderline = "isUnderline"; + + public static final String ATTRIBUTE_isStrikeThrough = "isStrikeThrough"; + + public static final String ATTRIBUTE_size = "size"; + + public static final String ATTRIBUTE_pdfFontName = "pdfFontName"; + + public static final String ATTRIBUTE_pdfEncoding = "pdfEncoding"; + + public static final String ATTRIBUTE_isPdfEmbedded = "isPdfEmbedded"; + + public static final String ELEMENT_frame = "frame"; + + public static final String ELEMENT_graphicElement = "graphicElement"; + + public static final String ATTRIBUTE_pen = "pen"; + + public static final String ATTRIBUTE_fill = "fill"; + + public static final String ELEMENT_group = "group"; + + public static final String ELEMENT_groupExpression = "groupExpression"; + + public static final String ELEMENT_groupHeader = "groupHeader"; + + public static final String ELEMENT_groupFooter = "groupFooter"; + + public static final String ATTRIBUTE_isStartNewColumn = "isStartNewColumn"; + + public static final String ATTRIBUTE_isStartNewPage = "isStartNewPage"; + + public static final String ATTRIBUTE_isResetPageNumber = "isResetPageNumber"; + + public static final String ATTRIBUTE_isReprintHeaderOnEachPage = "isReprintHeaderOnEachPage"; + + public static final String ATTRIBUTE_minHeightToStartNewPage = "minHeightToStartNewPage"; + + public static final String ELEMENT_hyperlinkTooltipExpression = "hyperlinkTooltipExpression"; + + public static final String ELEMENT_sectionHyperlink = "sectionHyperlink"; + + public static final String ELEMENT_itemHyperlink = "itemHyperlink"; + + public static final String ELEMENT_anchorNameExpression = "anchorNameExpression"; + + public static final String ELEMENT_hyperlinkReferenceExpression = "hyperlinkReferenceExpression"; + + public static final String ELEMENT_hyperlinkAnchorExpression = "hyperlinkAnchorExpression"; + + public static final String ELEMENT_hyperlinkPageExpression = "hyperlinkPageExpression"; + + public static final String ATTRIBUTE_hyperlinkType = "hyperlinkType"; + + public static final String ATTRIBUTE_hyperlinkTarget = "hyperlinkTarget"; + + public static final String ELEMENT_hyperlinkParameterExpression = "hyperlinkParameterExpression"; + + public static final String ELEMENT_hyperlinkParameter = "hyperlinkParameter"; + + public static final String ELEMENT_image = "image"; + + public static final String ELEMENT_imageSource = "imageSource"; + + public static final String ELEMENT_imageExpression = "imageExpression"; + + public static final String ATTRIBUTE_scaleImage = "scaleImage"; + + public static final String ATTRIBUTE_hAlign = "hAlign"; + + public static final String ATTRIBUTE_vAlign = "vAlign"; + + public static final String ATTRIBUTE_isUsingCache = "isUsingCache"; + + public static final String ATTRIBUTE_isLazy = "isLazy"; + + public static final String ATTRIBUTE_onErrorType = "onErrorType"; + + public static final String ELEMENT_line = "line"; + + public static final String ATTRIBUTE_direction = "direction"; + + public static final String ELEMENT_parameter = "parameter"; + + public static final String ELEMENT_parameterDescription = "parameterDescription"; + + public static final String ELEMENT_defaultValueExpression = "defaultValueExpression"; + + public static final String ATTRIBUTE_isForPrompting = "isForPrompting"; + + public static final String ELEMENT_hyperlinkParameterValue = "hyperlinkParameterValue"; + + public static final String ATTRIBUTE_anchorName = "anchorName"; + + public static final String ATTRIBUTE_hyperlinkReference = "hyperlinkReference"; + + public static final String ATTRIBUTE_hyperlinkAnchor = "hyperlinkAnchor"; + + public static final String ATTRIBUTE_hyperlinkPage = "hyperlinkPage"; + + public static final String ATTRIBUTE_hyperlinkTooltip = "hyperlinkTooltip"; + + public static final String ATTRIBUTE_isEmbedded = "isEmbedded"; + + public static final String ATTRIBUTE_textAlignment = "textAlignment"; + + public static final String ATTRIBUTE_verticalAlignment = "verticalAlignment"; + + public static final String ATTRIBUTE_runDirection = "runDirection"; + + public static final String ATTRIBUTE_textHeight = "textHeight"; + + public static final String ATTRIBUTE_lineSpacingFactor = "lineSpacingFactor"; + + public static final String ATTRIBUTE_leadingOffset = "leadingOffset"; + + public static final String ATTRIBUTE_valueClass = "valueClass"; + + public static final String ELEMENT_queryString = "queryString"; + + public static final String ELEMENT_rectangle = "rectangle"; + + public static final String ELEMENT_sortField = "sortField"; + + public static final String ATTRIBUTE_order = "order"; + + public static final String ELEMENT_staticText = "staticText"; + + public static final String ELEMENT_text = "text"; + + public static final String ELEMENT_textContent = "textContent"; + + public static final String ATTRIBUTE_truncateIndex = "truncateIndex"; + + public static final String ELEMENT_textTruncateSuffix = "textTruncateSuffix"; + + public static final String ELEMENT_subreportExpression = "subreportExpression"; + + public static final String ELEMENT_subreport = "subreport"; + + public static final String ELEMENT_subreportParameter = "subreportParameter"; + + public static final String ELEMENT_subreportParameterExpression = "subreportParameterExpression"; + + public static final String ELEMENT_returnValue = "returnValue"; + + public static final String ATTRIBUTE_subreportVariable = "subreportVariable"; + + public static final String ATTRIBUTE_toVariable = "toVariable"; + + public static final String ELEMENT_textElement = "textElement"; + + public static final String ELEMENT_textFieldExpression = "textFieldExpression"; + + public static final String ELEMENT_textField = "textField"; + + public static final String ATTRIBUTE_isStretchWithOverflow = "isStretchWithOverflow"; + + public static final String ELEMENT_variable = "variable"; + + public static final String ELEMENT_variableExpression = "variableExpression"; + + public static final String ELEMENT_initialValueExpression = "initialValueExpression"; + + public static final String ATTRIBUTE_resetType = "resetType"; + + public static final String ATTRIBUTE_resetGroup = "resetGroup"; + + public static final String ATTRIBUTE_incrementType = "incrementType"; + + public static final String ATTRIBUTE_incrementGroup = "incrementGroup"; + + public static final String ATTRIBUTE_calculation = "calculation"; + + public static final String ATTRIBUTE_incrementerFactoryClass = "incrementerFactoryClass"; + + public static final String ELEMENT_reportFont = "reportFont"; + + public static final String ELEMENT_template = "template"; + + public static final String TEMPLATE_ELEMENT_ROOT = "jasperTemplate"; + + public static final String TEMPLATE_ELEMENT_INCLUDED_TEMPLATE = "template"; + + public static Map getBandTypeMap() { + if (bandTypeMap == null) { + bandTypeMap = new HashMap(24); + bandTypeMap.put("unknown", new Byte((byte)0)); + bandTypeMap.put("background", new Byte((byte)1)); + bandTypeMap.put("title", new Byte((byte)2)); + bandTypeMap.put("pageHeader", new Byte((byte)3)); + bandTypeMap.put("columnHeader", new Byte((byte)4)); + bandTypeMap.put("groupHeader", new Byte((byte)5)); + bandTypeMap.put("detail", new Byte((byte)6)); + bandTypeMap.put("groupFooter", new Byte((byte)7)); + bandTypeMap.put("columnFooter", new Byte((byte)8)); + bandTypeMap.put("pageFooter", new Byte((byte)9)); + bandTypeMap.put("lastPageFooter", new Byte((byte)10)); + bandTypeMap.put("summary", new Byte((byte)11)); + bandTypeMap.put("noData", new Byte((byte)12)); + bandTypeMap.put(new Byte((byte)0), "unknown"); + bandTypeMap.put(new Byte((byte)1), "background"); + bandTypeMap.put(new Byte((byte)2), "title"); + bandTypeMap.put(new Byte((byte)3), "pageHeader"); + bandTypeMap.put(new Byte((byte)4), "columnHeader"); + bandTypeMap.put(new Byte((byte)5), "groupHeader"); + bandTypeMap.put(new Byte((byte)6), "detail"); + bandTypeMap.put(new Byte((byte)7), "groupFooter"); + bandTypeMap.put(new Byte((byte)8), "columnFooter"); + bandTypeMap.put(new Byte((byte)9), "pageFooter"); + bandTypeMap.put(new Byte((byte)10), "lastPageFooter"); + bandTypeMap.put(new Byte((byte)11), "summary"); + bandTypeMap.put(new Byte((byte)12), "noData"); + } + return bandTypeMap; + } + + public static Color getColor(String strColor, Color defaultColor) { + Color color = null; + if (strColor != null && strColor.length() > 0) { + char firstChar = strColor.charAt(0); + if (firstChar == '#') { + color = new Color(Integer.parseInt(strColor.substring(1), 16)); + } else if ('0' <= firstChar && firstChar <= '9') { + color = new Color(Integer.parseInt(strColor)); + } else if (getColorMap().containsKey(strColor)) { + color = (Color)getColorMap().get(strColor); + } else { + color = defaultColor; + } + } + return color; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigester.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigester.java new file mode 100644 index 0000000..c9e4ce2 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigester.java @@ -0,0 +1,46 @@ +package net.sf.jasperreports.engine.xml; + +import java.io.InputStream; +import java.net.URL; +import org.apache.commons.digester.Digester; +import org.xml.sax.InputSource; +import org.xml.sax.XMLReader; + +public class JRXmlDigester extends Digester { + public JRXmlDigester() {} + + public JRXmlDigester(XMLReader xmlReader) { + super(xmlReader); + } + + public InputSource resolveEntity(String pubId, String systemId) { + InputSource inputSource = null; + if (systemId != null) { + InputStream is; + String dtd = null; + if ("http://jasperreports.sourceforge.net/dtds/jasperreport.dtd".equals(systemId)) { + dtd = "net/sf/jasperreports/engine/dtds/jasperreport.dtd"; + } else if ("http://jasperreports.sourceforge.net/dtds/jasperprint.dtd".equals(systemId)) { + dtd = "net/sf/jasperreports/engine/dtds/jasperprint.dtd"; + } else if ("http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd".equals(systemId)) { + dtd = "net/sf/jasperreports/engine/dtds/jaspertemplate.dtd"; + } else { + return new InputSource(systemId); + } + ClassLoader clsLoader = Thread.currentThread().getContextClassLoader(); + URL url = null; + if (clsLoader != null) + url = clsLoader.getResource(dtd); + if (url == null) + clsLoader = JRXmlDigester.class.getClassLoader(); + if (clsLoader == null) { + is = JRXmlDigester.class.getResourceAsStream("/" + dtd); + } else { + is = clsLoader.getResourceAsStream(dtd); + } + if (is != null) + inputSource = new InputSource(is); + } + return inputSource; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigesterFactory.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigesterFactory.java new file mode 100644 index 0000000..35baced --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlDigesterFactory.java @@ -0,0 +1,714 @@ +package net.sf.jasperreports.engine.xml; + +import javax.xml.parsers.ParserConfigurationException; +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.charts.design.JRDesignCategorySeries; +import net.sf.jasperreports.charts.design.JRDesignDataRange; +import net.sf.jasperreports.charts.design.JRDesignTimePeriodSeries; +import net.sf.jasperreports.charts.design.JRDesignTimeSeries; +import net.sf.jasperreports.charts.design.JRDesignValueDisplay; +import net.sf.jasperreports.charts.design.JRDesignXySeries; +import net.sf.jasperreports.charts.design.JRDesignXyzSeries; +import net.sf.jasperreports.charts.util.JRAxisFormat; +import net.sf.jasperreports.charts.util.JRMeterInterval; +import net.sf.jasperreports.charts.xml.JRAreaChartFactory; +import net.sf.jasperreports.charts.xml.JRAreaPlotFactory; +import net.sf.jasperreports.charts.xml.JRBar3DChartFactory; +import net.sf.jasperreports.charts.xml.JRBar3DPlotFactory; +import net.sf.jasperreports.charts.xml.JRBarChartFactory; +import net.sf.jasperreports.charts.xml.JRBarPlotFactory; +import net.sf.jasperreports.charts.xml.JRBubbleChartFactory; +import net.sf.jasperreports.charts.xml.JRBubblePlotFactory; +import net.sf.jasperreports.charts.xml.JRCandlestickChartFactory; +import net.sf.jasperreports.charts.xml.JRCandlestickPlotFactory; +import net.sf.jasperreports.charts.xml.JRCategoryDatasetFactory; +import net.sf.jasperreports.charts.xml.JRCategorySeriesFactory; +import net.sf.jasperreports.charts.xml.JRChartAxisFactory; +import net.sf.jasperreports.charts.xml.JRDataRangeFactory; +import net.sf.jasperreports.charts.xml.JRHighLowChartFactory; +import net.sf.jasperreports.charts.xml.JRHighLowDatasetFactory; +import net.sf.jasperreports.charts.xml.JRHighLowPlotFactory; +import net.sf.jasperreports.charts.xml.JRLineChartFactory; +import net.sf.jasperreports.charts.xml.JRLinePlotFactory; +import net.sf.jasperreports.charts.xml.JRMeterChartFactory; +import net.sf.jasperreports.charts.xml.JRMeterIntervalFactory; +import net.sf.jasperreports.charts.xml.JRMeterPlotFactory; +import net.sf.jasperreports.charts.xml.JRMultiAxisChartFactory; +import net.sf.jasperreports.charts.xml.JRMultiAxisPlotFactory; +import net.sf.jasperreports.charts.xml.JRPie3DChartFactory; +import net.sf.jasperreports.charts.xml.JRPie3DPlotFactory; +import net.sf.jasperreports.charts.xml.JRPieChartFactory; +import net.sf.jasperreports.charts.xml.JRPieDatasetFactory; +import net.sf.jasperreports.charts.xml.JRPiePlotFactory; +import net.sf.jasperreports.charts.xml.JRScatterChartFactory; +import net.sf.jasperreports.charts.xml.JRScatterPlotFactory; +import net.sf.jasperreports.charts.xml.JRStackedAreaChartFactory; +import net.sf.jasperreports.charts.xml.JRStackedBar3DChartFactory; +import net.sf.jasperreports.charts.xml.JRStackedBarChartFactory; +import net.sf.jasperreports.charts.xml.JRThermometerChartFactory; +import net.sf.jasperreports.charts.xml.JRThermometerPlotFactory; +import net.sf.jasperreports.charts.xml.JRTimePeriodDatasetFactory; +import net.sf.jasperreports.charts.xml.JRTimePeriodSeriesFactory; +import net.sf.jasperreports.charts.xml.JRTimeSeriesChartFactory; +import net.sf.jasperreports.charts.xml.JRTimeSeriesDatasetFactory; +import net.sf.jasperreports.charts.xml.JRTimeSeriesFactory; +import net.sf.jasperreports.charts.xml.JRTimeSeriesPlotFactory; +import net.sf.jasperreports.charts.xml.JRValueDatasetFactory; +import net.sf.jasperreports.charts.xml.JRValueDisplayFactory; +import net.sf.jasperreports.charts.xml.JRXyAreaChartFactory; +import net.sf.jasperreports.charts.xml.JRXyBarChartFactory; +import net.sf.jasperreports.charts.xml.JRXyDatasetFactory; +import net.sf.jasperreports.charts.xml.JRXyLineChartFactory; +import net.sf.jasperreports.charts.xml.JRXySeriesFactory; +import net.sf.jasperreports.charts.xml.JRXyzDatasetFactory; +import net.sf.jasperreports.charts.xml.JRXyzSeriesFactory; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.design.JRDesignCellContents; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstabBucket; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstabCell; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstabMeasure; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.xml.JRCellContentsFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabBucketExpressionFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabBucketFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabCellFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabColumnGroupFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabDatasetFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabMeasureExpressionFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabMeasureFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabParameterFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabParameterValueExpressionFactory; +import net.sf.jasperreports.crosstabs.xml.JRCrosstabRowGroupFactory; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRExpression; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRSubreportParameter; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.design.JRDesignDataset; +import net.sf.jasperreports.engine.design.JRDesignElement; +import net.sf.jasperreports.engine.design.JRDesignElementGroup; +import net.sf.jasperreports.engine.design.JRDesignExpression; +import net.sf.jasperreports.engine.design.JRDesignGroup; +import net.sf.jasperreports.engine.design.JRDesignQuery; +import net.sf.jasperreports.engine.design.JRDesignReportTemplate; +import net.sf.jasperreports.engine.design.JRDesignVariable; +import net.sf.jasperreports.engine.design.JasperDesign; +import net.sf.jasperreports.engine.util.JRProperties; +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.Rule; +import org.apache.commons.digester.SetNestedPropertiesRule; +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class JRXmlDigesterFactory { + public static void configureDigester(Digester digester) throws SAXException, ParserConfigurationException { + boolean validating = JRProperties.getBooleanProperty("net.sf.jasperreports.compiler.xml.validation"); + digester.setErrorHandler(new ErrorHandlerImpl()); + digester.setValidating(validating); + digester.setFeature("http://xml.org/sax/features/validation", validating); + digester.addFactoryCreate("jasperReport", JasperDesignFactory.class.getName()); + digester.addSetNext("jasperReport", "setJasperDesign", JasperDesign.class.getName()); + digester.addRule("*/property", new JRPropertyDigesterRule()); + String propertyExpressionPattern = "*/propertyExpression"; + digester.addFactoryCreate(propertyExpressionPattern, JRPropertyExpressionFactory.class.getName()); + digester.addSetNext(propertyExpressionPattern, "addPropertyExpression", JRPropertyExpression.class.getName()); + digester.addFactoryCreate(propertyExpressionPattern, JRExpressionFactory.StringExpressionFactory.class.getName()); + digester.addSetNext(propertyExpressionPattern, "setValueExpression", JRExpression.class.getName()); + digester.addCallMethod(propertyExpressionPattern, "setText", 0); + digester.addCallMethod("jasperReport/import", "addImport", 1); + digester.addCallParam("jasperReport/import", 0, "value"); + addTemplateRules(digester); + digester.addFactoryCreate("jasperReport/reportFont", JRReportFontFactory.class.getName()); + digester.addSetNext("jasperReport/reportFont", "addFont", JRReportFont.class.getName()); + digester.addFactoryCreate("jasperReport/style", JRStyleFactory.class.getName()); + digester.addSetNext("jasperReport/style", "addStyle", JRStyle.class.getName()); + digester.addFactoryCreate("jasperReport/style/conditionalStyle", JRConditionalStyleFactory.class.getName()); + digester.addFactoryCreate("jasperReport/style/conditionalStyle/conditionExpression", JRExpressionFactory.BooleanExpressionFactory.class.getName()); + digester.addSetNext("jasperReport/style/conditionalStyle/conditionExpression", "setConditionExpression", JRExpression.class.getName()); + digester.addCallMethod("jasperReport/style/conditionalStyle/conditionExpression", "setText", 0); + digester.addFactoryCreate("jasperReport/style/conditionalStyle/style", JRConditionalStyleFillerFactory.class.getName()); + digester.addFactoryCreate("*/style/pen", JRPenFactory.Style.class.getName()); + digester.addFactoryCreate("*/parameter", JRParameterFactory.class.getName()); + digester.addSetNext("*/parameter", "addParameter", JRParameter.class.getName()); + digester.addCallMethod("*/parameter/parameterDescription", "setDescription", 0); + digester.addFactoryCreate("*/parameter/defaultValueExpression", JRDefaultValueExpressionFactory.class.getName()); + digester.addSetNext("*/parameter/defaultValueExpression", "setDefaultValueExpression", JRExpression.class.getName()); + digester.addCallMethod("*/parameter/defaultValueExpression", "setText", 0); + digester.addFactoryCreate("*/queryString", JRQueryFactory.class.getName()); + digester.addSetNext("*/queryString", "setQuery", JRDesignQuery.class.getName()); + digester.addCallMethod("*/queryString", "setText", 0); + digester.addFactoryCreate("*/field", JRFieldFactory.class.getName()); + digester.addSetNext("*/field", "addField", JRField.class.getName()); + digester.addCallMethod("*/field/fieldDescription", "setDescription", 0); + digester.addFactoryCreate("*/sortField", JRSortFieldFactory.class.getName()); + digester.addSetNext("*/sortField", "addSortField", JRSortField.class.getName()); + digester.addFactoryCreate("*/variable", JRVariableFactory.class.getName()); + digester.addSetNext("*/variable", "addVariable", JRDesignVariable.class.getName()); + digester.addFactoryCreate("*/variable/variableExpression", JRVariableExpressionFactory.class.getName()); + digester.addSetNext("*/variable/variableExpression", "setExpression", JRExpression.class.getName()); + digester.addCallMethod("*/variable/variableExpression", "setText", 0); + digester.addFactoryCreate("*/variable/initialValueExpression", JRInitialValueExpressionFactory.class.getName()); + digester.addSetNext("*/variable/initialValueExpression", "setInitialValueExpression", JRExpression.class.getName()); + digester.addCallMethod("*/variable/initialValueExpression", "setText", 0); + String filterExpressionPath = "*/filterExpression"; + digester.addFactoryCreate(filterExpressionPath, JRExpressionFactory.BooleanExpressionFactory.class.getName()); + digester.addSetNext(filterExpressionPath, "setFilterExpression", JRExpression.class.getName()); + digester.addCallMethod(filterExpressionPath, "setText", 0); + digester.addFactoryCreate("*/group", JRGroupFactory.class.getName()); + digester.addSetNext("*/group", "addGroup", JRDesignGroup.class.getName()); + digester.addFactoryCreate("*/group/groupExpression", JRExpressionFactory.ObjectExpressionFactory.class.getName()); + digester.addSetNext("*/group/groupExpression", "setExpression", JRExpression.class.getName()); + digester.addCallMethod("*/group/groupExpression", "setText", 0); + digester.addFactoryCreate("jasperReport/background/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/background/band", "setBackground", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/title/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/title/band", "setTitle", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/pageHeader/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/pageHeader/band", "setPageHeader", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/columnHeader/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/columnHeader/band", "setColumnHeader", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/group/groupHeader/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/group/groupHeader/band", "setGroupHeader", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/detail/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/detail/band", "setDetail", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/group/groupFooter/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/group/groupFooter/band", "setGroupFooter", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/columnFooter/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/columnFooter/band", "setColumnFooter", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/pageFooter/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/pageFooter/band", "setPageFooter", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/lastPageFooter/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/lastPageFooter/band", "setLastPageFooter", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/summary/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/summary/band", "setSummary", JRBand.class.getName()); + digester.addFactoryCreate("jasperReport/noData/band", JRBandFactory.class.getName()); + digester.addSetNext("jasperReport/noData/band", "setNoData", JRBand.class.getName()); + digester.addFactoryCreate("*/band/printWhenExpression", JRExpressionFactory.BooleanExpressionFactory.class.getName()); + digester.addSetNext("*/band/printWhenExpression", "setPrintWhenExpression", JRExpression.class.getName()); + digester.addCallMethod("*/band/printWhenExpression", "setText", 0); + digester.addFactoryCreate("*/break", JRBreakFactory.class.getName()); + digester.addSetNext("*/break", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/line", JRLineFactory.class.getName()); + digester.addSetNext("*/line", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/reportElement", JRElementFactory.class.getName()); + digester.addFactoryCreate("*/reportElement/printWhenExpression", JRExpressionFactory.BooleanExpressionFactory.class.getName()); + digester.addSetNext("*/reportElement/printWhenExpression", "setPrintWhenExpression", JRExpression.class.getName()); + digester.addCallMethod("*/reportElement/printWhenExpression", "setText", 0); + digester.addFactoryCreate("*/graphicElement", JRGraphicElementFactory.class.getName()); + digester.addFactoryCreate("*/graphicElement/pen", JRPenFactory.class.getName()); + digester.addFactoryCreate("*/rectangle", JRRectangleFactory.class.getName()); + digester.addSetNext("*/rectangle", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/ellipse", JREllipseFactory.class.getName()); + digester.addSetNext("*/ellipse", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/image", JRImageFactory.class.getName()); + digester.addSetNext("*/image", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/box", JRBoxFactory.class.getName()); + digester.addFactoryCreate("*/box/pen", JRPenFactory.Box.class.getName()); + digester.addFactoryCreate("*/box/topPen", JRPenFactory.Top.class.getName()); + digester.addFactoryCreate("*/box/leftPen", JRPenFactory.Left.class.getName()); + digester.addFactoryCreate("*/box/bottomPen", JRPenFactory.Bottom.class.getName()); + digester.addFactoryCreate("*/box/rightPen", JRPenFactory.Right.class.getName()); + digester.addFactoryCreate("*/image/imageExpression", JRStringExpressionFactory.class.getName()); + digester.addSetNext("*/image/imageExpression", "setExpression", JRExpression.class.getName()); + digester.addCallMethod("*/image/imageExpression", "setText", 0); + digester.addFactoryCreate("*/staticText", JRStaticTextFactory.class.getName()); + digester.addSetNext("*/staticText", "addElement", JRDesignElement.class.getName()); + SetNestedPropertiesRule textRule = new SetNestedPropertiesRule(new String[] { "text", "reportElement", "box", "textElement" }, new String[] { "text" }); + textRule.setTrimData(false); + textRule.setAllowUnknownChildElements(true); + digester.addRule("*/staticText", (Rule)textRule); + digester.addFactoryCreate("*/textElement", JRTextElementFactory.class.getName()); + digester.addFactoryCreate("*/textElement/font", JRFontFactory.TextElementFontFactory.class.getName()); + digester.addFactoryCreate("*/textField", JRTextFieldFactory.class.getName()); + digester.addSetNext("*/textField", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/textField/textFieldExpression", JRStringExpressionFactory.class.getName()); + digester.addSetNext("*/textField/textFieldExpression", "setExpression", JRExpression.class.getName()); + digester.addCallMethod("*/textField/textFieldExpression", "setText", 0); + digester.addFactoryCreate("*/anchorNameExpression", JRExpressionFactory.StringExpressionFactory.class.getName()); + digester.addSetNext("*/anchorNameExpression", "setAnchorNameExpression", JRExpression.class.getName()); + digester.addCallMethod("*/anchorNameExpression", "setText", 0); + digester.addFactoryCreate("*/hyperlinkReferenceExpression", JRExpressionFactory.StringExpressionFactory.class.getName()); + digester.addSetNext("*/hyperlinkReferenceExpression", "setHyperlinkReferenceExpression", JRExpression.class.getName()); + digester.addCallMethod("*/hyperlinkReferenceExpression", "setText", 0); + digester.addFactoryCreate("*/hyperlinkAnchorExpression", JRExpressionFactory.StringExpressionFactory.class.getName()); + digester.addSetNext("*/hyperlinkAnchorExpression", "setHyperlinkAnchorExpression", JRExpression.class.getName()); + digester.addCallMethod("*/hyperlinkAnchorExpression", "setText", 0); + digester.addFactoryCreate("*/hyperlinkPageExpression", JRExpressionFactory.IntegerExpressionFactory.class.getName()); + digester.addSetNext("*/hyperlinkPageExpression", "setHyperlinkPageExpression", JRExpression.class.getName()); + digester.addCallMethod("*/hyperlinkPageExpression", "setText", 0); + String hyperlinkTooltipExpressionPattern = "*/hyperlinkTooltipExpression"; + digester.addFactoryCreate(hyperlinkTooltipExpressionPattern, JRExpressionFactory.StringExpressionFactory.class.getName()); + digester.addSetNext(hyperlinkTooltipExpressionPattern, "setHyperlinkTooltipExpression", JRExpression.class.getName()); + digester.addCallMethod(hyperlinkTooltipExpressionPattern, "setText", 0); + addHyperlinkParameterRules(digester); + digester.addFactoryCreate("*/subreport", JRSubreportFactory.class.getName()); + digester.addSetNext("*/subreport", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/subreport/subreportParameter", JRSubreportParameterFactory.class.getName()); + digester.addSetNext("*/subreport/subreportParameter", "addParameter", JRSubreportParameter.class.getName()); + digester.addFactoryCreate("*/subreport/returnValue", JRSubreportReturnValueFactory.class.getName()); + digester.addSetNext("*/subreport/returnValue", "addReturnValue", JRSubreportReturnValue.class.getName()); + digester.addFactoryCreate("*/parametersMapExpression", JRExpressionFactory.MapExpressionFactory.class.getName()); + digester.addSetNext("*/parametersMapExpression", "setParametersMapExpression", JRExpression.class.getName()); + digester.addCallMethod("*/parametersMapExpression", "setText", 0); + digester.addFactoryCreate("*/subreport/subreportParameter/subreportParameterExpression", JRExpressionFactory.ObjectExpressionFactory.class.getName()); + digester.addSetNext("*/subreport/subreportParameter/subreportParameterExpression", "setExpression", JRExpression.class.getName()); + digester.addCallMethod("*/subreport/subreportParameter/subreportParameterExpression", "setText", 0); + digester.addFactoryCreate("*/connectionExpression", JRExpressionFactory.ConnectionExpressionFactory.class.getName()); + digester.addSetNext("*/connectionExpression", "setConnectionExpression", JRExpression.class.getName()); + digester.addCallMethod("*/connectionExpression", "setText", 0); + digester.addFactoryCreate("*/dataSourceExpression", JRExpressionFactory.DataSourceExpressionFactory.class.getName()); + digester.addSetNext("*/dataSourceExpression", "setDataSourceExpression", JRExpression.class.getName()); + digester.addCallMethod("*/dataSourceExpression", "setText", 0); + digester.addFactoryCreate("*/subreport/subreportExpression", JRSubreportExpressionFactory.class.getName()); + digester.addSetNext("*/subreport/subreportExpression", "setExpression", JRExpression.class.getName()); + digester.addCallMethod("*/subreport/subreportExpression", "setText", 0); + digester.addFactoryCreate("*/elementGroup", JRElementGroupFactory.class.getName()); + digester.addSetNext("*/elementGroup", "addElementGroup", JRDesignElementGroup.class.getName()); + addChartRules(digester); + addDatasetRules(digester); + addCrosstabRules(digester); + addFrameRules(digester); + } + + protected static void addTemplateRules(Digester digester) { + String templatePattern = "jasperReport/template"; + digester.addObjectCreate(templatePattern, JRDesignReportTemplate.class); + digester.addSetNext(templatePattern, "addTemplate", JRReportTemplate.class.getName()); + digester.addFactoryCreate(templatePattern, JRStringExpressionFactory.class); + digester.addCallMethod(templatePattern, "setText", 0); + digester.addSetNext(templatePattern, "setSourceExpression", JRExpression.class.getName()); + } + + private static void addChartRules(Digester digester) { + digester.addFactoryCreate("*/dataset", JRElementDatasetFactory.class.getName()); + String datasetIncrementWhenExpressionPath = "*/dataset/incrementWhenExpression"; + digester.addFactoryCreate(datasetIncrementWhenExpressionPath, JRExpressionFactory.BooleanExpressionFactory.class.getName()); + digester.addSetNext(datasetIncrementWhenExpressionPath, "setIncrementWhenExpression", JRExpression.class.getName()); + digester.addCallMethod(datasetIncrementWhenExpressionPath, "setText", 0); + digester.addFactoryCreate("*/plot", JRChartPlotFactory.class.getName()); + digester.addFactoryCreate("*/plot/seriesColor", JRChartPlotFactory.JRSeriesColorFactory.class.getName()); + digester.addSetNext("*/plot/seriesColor", "addSeriesColor", JRChartPlot.JRSeriesColor.class.getName()); + digester.addFactoryCreate("*/chart", JRChartFactory.class.getName()); + digester.addFactoryCreate("*/chart/chartTitle", JRChartFactory.JRChartTitleFactory.class.getName()); + digester.addFactoryCreate("*/chart/chartTitle/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/chart/chartTitle/font", "setTitleFont", JRFont.class.getName()); + digester.addFactoryCreate("*/chart/chartTitle/titleExpression", JRExpressionFactory.StringExpressionFactory.class); + digester.addSetNext("*/chart/chartTitle/titleExpression", "setTitleExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/chart/chartTitle/titleExpression", "setText", 0); + digester.addFactoryCreate("*/chart/chartSubtitle", JRChartFactory.JRChartSubtitleFactory.class.getName()); + digester.addFactoryCreate("*/chart/chartSubtitle/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/chart/chartSubtitle/font", "setSubtitleFont", JRFont.class.getName()); + digester.addFactoryCreate("*/chart/chartSubtitle/subtitleExpression", JRExpressionFactory.StringExpressionFactory.class); + digester.addSetNext("*/chart/chartSubtitle/subtitleExpression", "setSubtitleExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/chart/chartSubtitle/subtitleExpression", "setText", 0); + digester.addFactoryCreate("*/chart/chartLegend", JRChartFactory.JRChartLegendFactory.class.getName()); + digester.addFactoryCreate("*/chart/chartLegend/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/chart/chartLegend/font", "setLegendFont", JRFont.class.getName()); + digester.addFactoryCreate("*/categoryAxisFormat/axisFormat", JRChartFactory.JRChartAxisFormatFactory.class.getName()); + digester.addSetNext("*/categoryAxisFormat/axisFormat", "setCategoryAxisFormat", JRAxisFormat.class.getName()); + digester.addFactoryCreate("*/categoryAxisFormat/axisFormat/labelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/categoryAxisFormat/axisFormat/labelFont/font", "setLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/categoryAxisFormat/axisFormat/tickLabelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/categoryAxisFormat/axisFormat/tickLabelFont/font", "setTickLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/valueAxisFormat/axisFormat", JRChartFactory.JRChartAxisFormatFactory.class.getName()); + digester.addSetNext("*/valueAxisFormat/axisFormat", "setValueAxisFormat", JRAxisFormat.class.getName()); + digester.addFactoryCreate("*/valueAxisFormat/axisFormat/labelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/valueAxisFormat/axisFormat/labelFont/font", "setLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/valueAxisFormat/axisFormat/tickLabelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/valueAxisFormat/axisFormat/tickLabelFont/font", "setTickLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/timeAxisFormat/axisFormat", JRChartFactory.JRChartAxisFormatFactory.class.getName()); + digester.addSetNext("*/timeAxisFormat/axisFormat", "setTimeAxisFormat", JRAxisFormat.class.getName()); + digester.addFactoryCreate("*/timeAxisFormat/axisFormat/labelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/timeAxisFormat/axisFormat/labelFont/font", "setLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/timeAxisFormat/axisFormat/tickLabelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/timeAxisFormat/axisFormat/tickLabelFont/font", "setTickLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/xAxisFormat/axisFormat", JRChartFactory.JRChartAxisFormatFactory.class.getName()); + digester.addSetNext("*/xAxisFormat/axisFormat", "setXAxisFormat", JRAxisFormat.class.getName()); + digester.addFactoryCreate("*/xAxisFormat/axisFormat/labelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/xAxisFormat/axisFormat/labelFont/font", "setLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/xAxisFormat/axisFormat/tickLabelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/xAxisFormat/axisFormat/tickLabelFont/font", "setTickLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/yAxisFormat/axisFormat", JRChartFactory.JRChartAxisFormatFactory.class.getName()); + digester.addSetNext("*/yAxisFormat/axisFormat", "setYAxisFormat", JRAxisFormat.class.getName()); + digester.addFactoryCreate("*/yAxisFormat/axisFormat/labelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/yAxisFormat/axisFormat/labelFont/font", "setLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/yAxisFormat/axisFormat/tickLabelFont/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/yAxisFormat/axisFormat/tickLabelFont/font", "setTickLabelFont", JRFont.class.getName()); + digester.addFactoryCreate("*/pieChart", JRPieChartFactory.class.getName()); + digester.addSetNext("*/pieChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/pieChart/piePlot", JRPiePlotFactory.class.getName()); + digester.addFactoryCreate("*/pieDataset", JRPieDatasetFactory.class.getName()); + digester.addFactoryCreate("*/pieDataset/keyExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/pieDataset/keyExpression", "setKeyExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/pieDataset/keyExpression", "setText", 0); + digester.addFactoryCreate("*/pieDataset/labelExpression", JRExpressionFactory.StringExpressionFactory.class); + digester.addSetNext("*/pieDataset/labelExpression", "setLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/pieDataset/labelExpression", "setText", 0); + digester.addFactoryCreate("*/pieDataset/valueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/pieDataset/valueExpression", "setValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/pieDataset/valueExpression", "setText", 0); + String sectionHyperlinkPattern = "*/pieDataset/sectionHyperlink"; + digester.addFactoryCreate(sectionHyperlinkPattern, JRHyperlinkFactory.class); + digester.addSetNext(sectionHyperlinkPattern, "setSectionHyperlink", JRHyperlink.class.getName()); + digester.addFactoryCreate("*/pie3DChart", JRPie3DChartFactory.class.getName()); + digester.addSetNext("*/pie3DChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/pie3DPlot", JRPie3DPlotFactory.class.getName()); + digester.addFactoryCreate("*/barChart", JRBarChartFactory.class.getName()); + digester.addSetNext("*/barChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/barChart/barPlot", JRBarPlotFactory.class.getName()); + digester.addFactoryCreate("*/barPlot/categoryAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/barPlot/categoryAxisLabelExpression", "setCategoryAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/barPlot/categoryAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/barPlot/valueAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/barPlot/valueAxisLabelExpression", "setValueAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/barPlot/valueAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/areaChart", JRAreaChartFactory.class.getName()); + digester.addSetNext("*/areaChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/areaChart/areaPlot", JRAreaPlotFactory.class.getName()); + digester.addFactoryCreate("*/xyAreaChart", JRXyAreaChartFactory.class.getName()); + digester.addSetNext("*/xyAreaChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/xyAreaChart/areaPlot", JRAreaPlotFactory.class.getName()); + digester.addFactoryCreate("*/areaPlot/categoryAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/areaPlot/categoryAxisLabelExpression", "setCategoryAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/areaPlot/categoryAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/areaPlot/valueAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/areaPlot/valueAxisLabelExpression", "setValueAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/areaPlot/valueAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/bar3DChart", JRBar3DChartFactory.class.getName()); + digester.addSetNext("*/bar3DChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/bar3DChart/bar3DPlot", JRBar3DPlotFactory.class.getName()); + digester.addFactoryCreate("*/bar3DPlot/categoryAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/bar3DPlot/categoryAxisLabelExpression", "setCategoryAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/bar3DPlot/categoryAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/bar3DPlot/valueAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/bar3DPlot/valueAxisLabelExpression", "setValueAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/bar3DPlot/valueAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/categoryDataset", JRCategoryDatasetFactory.class.getName()); + digester.addFactoryCreate("*/categoryDataset/categorySeries", JRCategorySeriesFactory.class.getName()); + digester.addSetNext("*/categoryDataset/categorySeries", "addCategorySeries", JRDesignCategorySeries.class.getName()); + digester.addFactoryCreate("*/categorySeries/seriesExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/categorySeries/seriesExpression", "setSeriesExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/categorySeries/seriesExpression", "setText", 0); + digester.addFactoryCreate("*/categorySeries/categoryExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/categorySeries/categoryExpression", "setCategoryExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/categorySeries/categoryExpression", "setText", 0); + digester.addFactoryCreate("*/categorySeries/labelExpression", JRExpressionFactory.StringExpressionFactory.class); + digester.addSetNext("*/categorySeries/labelExpression", "setLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/categorySeries/labelExpression", "setText", 0); + digester.addFactoryCreate("*/categorySeries/valueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/categorySeries/valueExpression", "setValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/categorySeries/valueExpression", "setText", 0); + String itemHyperlinkPattern = "*/itemHyperlink"; + digester.addFactoryCreate(itemHyperlinkPattern, JRHyperlinkFactory.class); + digester.addSetNext(itemHyperlinkPattern, "setItemHyperlink", JRHyperlink.class.getName()); + digester.addFactoryCreate("*/xyzDataset", JRXyzDatasetFactory.class.getName()); + digester.addFactoryCreate("*/xyzDataset/xyzSeries", JRXyzSeriesFactory.class.getName()); + digester.addSetNext("*/xyzDataset/xyzSeries", "addXyzSeries", JRDesignXyzSeries.class.getName()); + digester.addFactoryCreate("*/xyzSeries/seriesExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/xyzSeries/seriesExpression", "setSeriesExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xyzSeries/seriesExpression", "setText", 0); + digester.addFactoryCreate("*/xyzSeries", JRXyzDatasetFactory.class.getName()); + digester.addFactoryCreate("*/xyzSeries/xValueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/xyzSeries/xValueExpression", "setXValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xyzSeries/xValueExpression", "setText", 0); + digester.addFactoryCreate("*/xyzSeries/yValueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/xyzSeries/yValueExpression", "setYValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xyzSeries/yValueExpression", "setText", 0); + digester.addFactoryCreate("*/xyzSeries/zValueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/xyzSeries/zValueExpression", "setZValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xyzSeries/zValueExpression", "setText", 0); + digester.addFactoryCreate("*/timePeriodDataset", JRTimePeriodDatasetFactory.class.getName()); + digester.addFactoryCreate("*/timePeriodDataset/timePeriodSeries", JRTimePeriodSeriesFactory.class.getName()); + digester.addSetNext("*/timePeriodDataset/timePeriodSeries", "addTimePeriodSeries", JRDesignTimePeriodSeries.class.getName()); + digester.addFactoryCreate("*/timePeriodSeries/seriesExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/timePeriodSeries/seriesExpression", "setSeriesExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timePeriodSeries/seriesExpression", "setText", 0); + digester.addFactoryCreate("*/timePeriodSeries/startDateExpression", JRExpressionFactory.DateExpressionFactory.class); + digester.addSetNext("*/timePeriodSeries/startDateExpression", "setStartDateExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timePeriodSeries/startDateExpression", "setText", 0); + digester.addFactoryCreate("*/timePeriodSeries/endDateExpression", JRExpressionFactory.DateExpressionFactory.class); + digester.addSetNext("*/timePeriodSeries/endDateExpression", "setEndDateExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timePeriodSeries/endDateExpression", "setText", 0); + digester.addFactoryCreate("*/timePeriodSeries/valueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/timePeriodSeries/valueExpression", "setValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timePeriodSeries/valueExpression", "setText", 0); + digester.addFactoryCreate("*/timePeriodSeries/labelExpression", JRExpressionFactory.StringExpressionFactory.class); + digester.addSetNext("*/timePeriodSeries/labelExpression", "setLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timePeriodSeries/labelExpression", "setText", 0); + digester.addFactoryCreate("*/timeSeriesChart", JRTimeSeriesChartFactory.class.getName()); + digester.addFactoryCreate("*/timeSeriesChart/timeSeriesPlot", JRTimeSeriesPlotFactory.class.getName()); + digester.addSetNext("*/timeSeriesChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/timeSeriesPlot/timeAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/timeSeriesPlot/timeAxisLabelExpression", "setTimeAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timeSeriesPlot/timeAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/timeSeriesPlot/valueAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/timeSeriesPlot/valueAxisLabelExpression", "setValueAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timeSeriesPlot/valueAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/xyBarChart", JRXyBarChartFactory.class.getName()); + digester.addSetNext("*/xyBarChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/xyBarChart/barPlot", JRBarPlotFactory.class.getName()); + digester.addFactoryCreate("*/timeSeriesDataset", JRTimeSeriesDatasetFactory.class.getName()); + digester.addFactoryCreate("*/timeSeriesDataset/timeSeries", JRTimeSeriesFactory.class.getName()); + digester.addSetNext("*/timeSeriesDataset/timeSeries", "addTimeSeries", JRDesignTimeSeries.class.getName()); + digester.addFactoryCreate("*/timeSeries/seriesExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/timeSeries/seriesExpression", "setSeriesExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timeSeries/seriesExpression", "setText", 0); + digester.addFactoryCreate("*/timeSeries/timePeriodExpression", JRExpressionFactory.DateExpressionFactory.class); + digester.addSetNext("*/timeSeries/timePeriodExpression", "setTimePeriodExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timeSeries/timePeriodExpression", "setText", 0); + digester.addFactoryCreate("*/timeSeries/labelExpression", JRExpressionFactory.StringExpressionFactory.class); + digester.addSetNext("*/timeSeries/labelExpression", "setLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timeSeries/labelExpression", "setText", 0); + digester.addFactoryCreate("*/timeSeries/valueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/timeSeries/valueExpression", "setValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/timeSeries/valueExpression", "setText", 0); + digester.addFactoryCreate("*/stackedBarChart", JRStackedBarChartFactory.class.getName()); + digester.addSetNext("*/stackedBarChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/stackedBarChart/barPlot", JRBarPlotFactory.class.getName()); + digester.addFactoryCreate("*/lineChart", JRLineChartFactory.class.getName()); + digester.addSetNext("*/lineChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/linePlot", JRLinePlotFactory.class.getName()); + digester.addFactoryCreate("*/linePlot/categoryAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/linePlot/categoryAxisLabelExpression", "setCategoryAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/linePlot/categoryAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/linePlot/valueAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/linePlot/valueAxisLabelExpression", "setValueAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/linePlot/valueAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/xyLineChart", JRXyLineChartFactory.class.getName()); + digester.addSetNext("*/xyLineChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/scatterChart", JRScatterChartFactory.class.getName()); + digester.addSetNext("*/scatterChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/scatterPlot", JRScatterPlotFactory.class.getName()); + digester.addFactoryCreate("*/scatterPlot/xAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/scatterPlot/xAxisLabelExpression", "setXAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/scatterPlot/xAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/scatterPlot/yAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/scatterPlot/yAxisLabelExpression", "setYAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/scatterPlot/yAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/xyDataset", JRXyDatasetFactory.class.getName()); + digester.addFactoryCreate("*/xyDataset/xySeries", JRXySeriesFactory.class.getName()); + digester.addSetNext("*/xyDataset/xySeries", "addXySeries", JRDesignXySeries.class.getName()); + digester.addFactoryCreate("*/xySeries", JRXyDatasetFactory.class.getName()); + digester.addFactoryCreate("*/xySeries/seriesExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/xySeries/seriesExpression", "setSeriesExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xySeries/seriesExpression", "setText", 0); + digester.addFactoryCreate("*/xySeries/xValueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/xySeries/xValueExpression", "setXValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xySeries/xValueExpression", "setText", 0); + digester.addFactoryCreate("*/xySeries/yValueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/xySeries/yValueExpression", "setYValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xySeries/yValueExpression", "setText", 0); + digester.addFactoryCreate("*/xySeries/labelExpression", JRExpressionFactory.StringExpressionFactory.class); + digester.addSetNext("*/xySeries/labelExpression", "setLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/xySeries/labelExpression", "setText", 0); + digester.addFactoryCreate("*/stackedBar3DChart", JRStackedBar3DChartFactory.class.getName()); + digester.addSetNext("*/stackedBar3DChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/stackedBar3DChart/bar3DPlot", JRBar3DPlotFactory.class.getName()); + digester.addFactoryCreate("*/bubbleChart", JRBubbleChartFactory.class.getName()); + digester.addSetNext("*/bubbleChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/bubblePlot", JRBubblePlotFactory.class.getName()); + digester.addFactoryCreate("*/bubblePlot/xAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/bubblePlot/xAxisLabelExpression", "setXAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/bubblePlot/xAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/bubblePlot/yAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/bubblePlot/yAxisLabelExpression", "setYAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/bubblePlot/yAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/highLowChart", JRHighLowChartFactory.class.getName()); + digester.addSetNext("*/highLowChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/highLowChart/highLowPlot", JRHighLowPlotFactory.class.getName()); + digester.addFactoryCreate("*/highLowPlot/timeAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/highLowPlot/timeAxisLabelExpression", "setTimeAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowPlot/timeAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/highLowPlot/valueAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/highLowPlot/valueAxisLabelExpression", "setValueAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowPlot/valueAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/highLowDataset", JRHighLowDatasetFactory.class.getName()); + digester.addFactoryCreate("*/highLowDataset/seriesExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/highLowDataset/seriesExpression", "setSeriesExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowDataset/seriesExpression", "setText", 0); + digester.addFactoryCreate("*/highLowDataset/dateExpression", JRExpressionFactory.DateExpressionFactory.class); + digester.addSetNext("*/highLowDataset/dateExpression", "setDateExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowDataset/dateExpression", "setText", 0); + digester.addFactoryCreate("*/highLowDataset/highExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/highLowDataset/highExpression", "setHighExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowDataset/highExpression", "setText", 0); + digester.addFactoryCreate("*/highLowDataset/lowExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/highLowDataset/lowExpression", "setLowExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowDataset/lowExpression", "setText", 0); + digester.addFactoryCreate("*/highLowDataset/openExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/highLowDataset/openExpression", "setOpenExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowDataset/openExpression", "setText", 0); + digester.addFactoryCreate("*/highLowDataset/closeExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/highLowDataset/closeExpression", "setCloseExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowDataset/closeExpression", "setText", 0); + digester.addFactoryCreate("*/highLowDataset/volumeExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/highLowDataset/volumeExpression", "setVolumeExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/highLowDataset/volumeExpression", "setText", 0); + digester.addFactoryCreate("*/candlestickChart", JRCandlestickChartFactory.class); + digester.addSetNext("*/candlestickChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/candlestickChart/candlestickPlot", JRCandlestickPlotFactory.class); + digester.addFactoryCreate("*/candlestickPlot/timeAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/candlestickPlot/timeAxisLabelExpression", "setTimeAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/candlestickPlot/timeAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/candlestickPlot/valueAxisLabelExpression", JRExpressionFactory.ComparableExpressionFactory.class); + digester.addSetNext("*/candlestickPlot/valueAxisLabelExpression", "setValueAxisLabelExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/candlestickPlot/valueAxisLabelExpression", "setText", 0); + digester.addFactoryCreate("*/valueDataset", JRValueDatasetFactory.class.getName()); + digester.addFactoryCreate("*/valueDataset/valueExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/valueDataset/valueExpression", "setValueExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/valueDataset/valueExpression", "setText", 0); + digester.addFactoryCreate("*/dataRange", JRDataRangeFactory.class.getName()); + digester.addSetNext("*/dataRange", "setDataRange", JRDesignDataRange.class.getName()); + digester.addFactoryCreate("*/dataRange/lowExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/dataRange/lowExpression", "setLowExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/dataRange/lowExpression", "setText", 0); + digester.addFactoryCreate("*/dataRange/highExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/dataRange/highExpression", "setHighExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/dataRange/highExpression", "setText", 0); + digester.addFactoryCreate("*/valueDisplay", JRValueDisplayFactory.class.getName()); + digester.addSetNext("*/valueDisplay", "setValueDisplay", JRDesignValueDisplay.class.getName()); + digester.addFactoryCreate("*/valueDisplay/font", JRFontFactory.ChartFontFactory.class.getName()); + digester.addSetNext("*/valueDisplay/font", "setFont", JRFont.class.getName()); + digester.addFactoryCreate("*/meterChart", JRMeterChartFactory.class.getName()); + digester.addSetNext("*/meterChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/meterChart/meterPlot", JRMeterPlotFactory.class.getName()); + digester.addFactoryCreate("*/meterPlot/lowExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/meterPlot/lowExpression", "setLowExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/meterPlot/lowExpression", "setText", 0); + digester.addFactoryCreate("*/meterPlot/highExpression", JRExpressionFactory.NumberExpressionFactory.class); + digester.addSetNext("*/meterPlot/highExpression", "setHighExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/meterPlot/highExpression", "setText", 0); + digester.addFactoryCreate("*/meterPlot/meterInterval", JRMeterIntervalFactory.class.getName()); + digester.addSetNext("*/meterPlot/meterInterval", "addInterval", JRMeterInterval.class.getName()); + digester.addFactoryCreate("*/thermometerChart", JRThermometerChartFactory.class.getName()); + digester.addSetNext("*/thermometerChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/thermometerChart/thermometerPlot", JRThermometerPlotFactory.class.getName()); + digester.addFactoryCreate("*/thermometerPlot/lowRange/dataRange", JRDataRangeFactory.class.getName()); + digester.addSetNext("*/thermometerPlot/lowRange/dataRange", "setLowRange", JRDesignDataRange.class.getName()); + digester.addFactoryCreate("*/thermometerPlot/mediumRange/dataRange", JRDataRangeFactory.class.getName()); + digester.addSetNext("*/thermometerPlot/mediumRange/dataRange", "setMediumRange", JRDesignDataRange.class.getName()); + digester.addFactoryCreate("*/thermometerPlot/highRange/dataRange", JRDataRangeFactory.class.getName()); + digester.addSetNext("*/thermometerPlot/highRange/dataRange", "setHighRange", JRDesignDataRange.class.getName()); + digester.addFactoryCreate("*/multiAxisChart", JRMultiAxisChartFactory.class.getName()); + digester.addSetNext("*/multiAxisChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/multiAxisChart/multiAxisPlot", JRMultiAxisPlotFactory.class.getName()); + digester.addFactoryCreate("*/axis", JRChartAxisFactory.class.getName()); + digester.addSetNext("*/axis", "addAxis", JRChartAxis.class.getName()); + digester.addFactoryCreate("*/stackedAreaChart", JRStackedAreaChartFactory.class.getName()); + digester.addSetNext("*/stackedAreaChart", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/stackedAreaChart/areaPlot", JRAreaPlotFactory.class.getName()); + } + + private static void addDatasetRules(Digester digester) { + String subDatasetPattern = "jasperReport/subDataset"; + digester.addFactoryCreate(subDatasetPattern, JRDatasetFactory.class.getName()); + digester.addSetNext(subDatasetPattern, "addDataset", JRDesignDataset.class.getName()); + String datasetRunPattern = "*/dataset/datasetRun"; + digester.addFactoryCreate(datasetRunPattern, JRDatasetRunFactory.class.getName()); + digester.addSetNext(datasetRunPattern, "setDatasetRun", JRDatasetRun.class.getName()); + String datasetParamPattern = datasetRunPattern + "/" + "datasetParameter"; + digester.addFactoryCreate(datasetParamPattern, JRDatasetRunParameterFactory.class.getName()); + digester.addSetNext(datasetParamPattern, "addParameter", JRDatasetParameter.class.getName()); + String datasetParamExprPattern = datasetParamPattern + "/" + "datasetParameterExpression"; + digester.addFactoryCreate(datasetParamExprPattern, JRDatasetRunParameterExpressionFactory.class.getName()); + digester.addSetNext(datasetParamExprPattern, "setExpression", JRExpression.class.getName()); + digester.addCallMethod(datasetParamExprPattern, "setText", 0); + } + + private static void addCrosstabRules(Digester digester) { + digester.addFactoryCreate("*/crosstab", JRCrosstabFactory.class.getName()); + digester.addSetNext("*/crosstab", "addElement", JRDesignElement.class.getName()); + digester.addFactoryCreate("*/crosstab/crosstabParameter", JRCrosstabParameterFactory.class.getName()); + digester.addSetNext("*/crosstab/crosstabParameter", "addParameter", JRCrosstabParameter.class.getName()); + digester.addFactoryCreate("*/crosstab/crosstabParameter/parameterValueExpression", JRCrosstabParameterValueExpressionFactory.class.getName()); + digester.addSetNext("*/crosstab/crosstabParameter/parameterValueExpression", "setExpression", JRExpression.class.getName()); + digester.addCallMethod("*/crosstab/crosstabParameter/parameterValueExpression", "setText", 0); + digester.addFactoryCreate("*/crosstab/crosstabDataset", JRCrosstabDatasetFactory.class.getName()); + digester.addFactoryCreate("*/crosstab/rowGroup", JRCrosstabRowGroupFactory.class.getName()); + digester.addSetNext("*/crosstab/rowGroup", "addRowGroup", JRDesignCrosstabRowGroup.class.getName()); + digester.addFactoryCreate("*/crosstab/rowGroup/crosstabRowHeader/cellContents", JRCellContentsFactory.class.getName()); + digester.addSetNext("*/crosstab/rowGroup/crosstabRowHeader/cellContents", "setHeader", JRDesignCellContents.class.getName()); + digester.addFactoryCreate("*/crosstab/rowGroup/crosstabTotalRowHeader/cellContents", JRCellContentsFactory.class.getName()); + digester.addSetNext("*/crosstab/rowGroup/crosstabTotalRowHeader/cellContents", "setTotalHeader", JRDesignCellContents.class.getName()); + digester.addFactoryCreate("*/crosstab/columnGroup", JRCrosstabColumnGroupFactory.class.getName()); + digester.addSetNext("*/crosstab/columnGroup", "addColumnGroup", JRDesignCrosstabColumnGroup.class.getName()); + digester.addFactoryCreate("*/crosstab/columnGroup/crosstabColumnHeader/cellContents", JRCellContentsFactory.class.getName()); + digester.addSetNext("*/crosstab/columnGroup/crosstabColumnHeader/cellContents", "setHeader", JRDesignCellContents.class.getName()); + digester.addFactoryCreate("*/crosstab/columnGroup/crosstabTotalColumnHeader/cellContents", JRCellContentsFactory.class.getName()); + digester.addSetNext("*/crosstab/columnGroup/crosstabTotalColumnHeader/cellContents", "setTotalHeader", JRDesignCellContents.class.getName()); + digester.addFactoryCreate("*/bucket", JRCrosstabBucketFactory.class.getName()); + digester.addSetNext("*/bucket", "setBucket", JRDesignCrosstabBucket.class.getName()); + digester.addFactoryCreate("*/bucket/bucketExpression", JRCrosstabBucketExpressionFactory.class.getName()); + digester.addSetNext("*/bucket/bucketExpression", "setExpression", JRDesignExpression.class.getName()); + digester.addCallMethod("*/bucket/bucketExpression", "setText", 0); + digester.addFactoryCreate("*/bucket/comparatorExpression", JRExpressionFactory.ComparatorExpressionFactory.class.getName()); + digester.addSetNext("*/bucket/comparatorExpression", "setComparatorExpression", JRExpression.class.getName()); + digester.addCallMethod("*/bucket/comparatorExpression", "setText", 0); + digester.addFactoryCreate("*/crosstab/measure", JRCrosstabMeasureFactory.class.getName()); + digester.addSetNext("*/crosstab/measure", "addMeasure", JRDesignCrosstabMeasure.class.getName()); + digester.addFactoryCreate("*/crosstab/measure/measureExpression", JRCrosstabMeasureExpressionFactory.class.getName()); + digester.addSetNext("*/crosstab/measure/measureExpression", "setValueExpression", JRExpression.class.getName()); + digester.addCallMethod("*/crosstab/measure/measureExpression", "setText", 0); + digester.addFactoryCreate("*/crosstab/crosstabCell", JRCrosstabCellFactory.class.getName()); + digester.addSetNext("*/crosstab/crosstabCell", "addCell", JRDesignCrosstabCell.class.getName()); + digester.addFactoryCreate("*/crosstab/crosstabCell/cellContents", JRCellContentsFactory.class.getName()); + digester.addSetNext("*/crosstab/crosstabCell/cellContents", "setContents", JRDesignCellContents.class.getName()); + digester.addFactoryCreate("*/crosstab/whenNoDataCell/cellContents", JRCellContentsFactory.class.getName()); + digester.addSetNext("*/crosstab/whenNoDataCell/cellContents", "setWhenNoDataCell", JRDesignCellContents.class.getName()); + digester.addFactoryCreate("*/crosstab/crosstabHeaderCell/cellContents", JRCellContentsFactory.class.getName()); + digester.addSetNext("*/crosstab/crosstabHeaderCell/cellContents", "setHeaderCell", JRDesignCellContents.class.getName()); + } + + private static void addFrameRules(Digester digester) { + String framePattern = "*/frame"; + digester.addFactoryCreate(framePattern, JRFrameFactory.class.getName()); + digester.addSetNext(framePattern, "addElement", JRDesignElement.class.getName()); + } + + private static void addHyperlinkParameterRules(Digester digester) { + String hyperlinkParameterPattern = "*/hyperlinkParameter"; + digester.addFactoryCreate(hyperlinkParameterPattern, JRHyperlinkParameterFactory.class.getName()); + digester.addSetNext(hyperlinkParameterPattern, "addHyperlinkParameter", JRHyperlinkParameter.class.getName()); + String hyperlinkParameterExpressionPattern = hyperlinkParameterPattern + '/' + "hyperlinkParameterExpression"; + digester.addFactoryCreate(hyperlinkParameterExpressionPattern, JRStringExpressionFactory.class.getName()); + digester.addSetNext(hyperlinkParameterExpressionPattern, "setValueExpression", JRExpression.class.getName()); + digester.addCallMethod(hyperlinkParameterExpressionPattern, "setText", 0); + } + + public static JRXmlDigester createDigester() throws ParserConfigurationException, SAXException { + JRXmlDigester digester = new JRXmlDigester(); + configureDigester(digester); + return digester; + } + + private static class ErrorHandlerImpl implements ErrorHandler { + private ErrorHandlerImpl() {} + + public void error(SAXParseException exception) throws SAXException { + throw exception; + } + + public void fatalError(SAXParseException exception) throws SAXException { + throw exception; + } + + public void warning(SAXParseException exception) throws SAXException { + throw exception; + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlLoader.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlLoader.java new file mode 100644 index 0000000..37f6364 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlLoader.java @@ -0,0 +1,304 @@ +package net.sf.jasperreports.engine.xml; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import javax.xml.parsers.ParserConfigurationException; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.design.JRDesignChart; +import net.sf.jasperreports.engine.design.JRDesignDataset; +import net.sf.jasperreports.engine.design.JRDesignElement; +import net.sf.jasperreports.engine.design.JRDesignElementDataset; +import net.sf.jasperreports.engine.design.JRDesignImage; +import net.sf.jasperreports.engine.design.JRDesignTextField; +import net.sf.jasperreports.engine.design.JRDesignVariable; +import net.sf.jasperreports.engine.design.JRValidationException; +import net.sf.jasperreports.engine.design.JasperDesign; +import org.apache.commons.digester.Digester; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +public class JRXmlLoader { + private JasperDesign jasperDesign = null; + + private Collection groupReprintedElements = new ArrayList(); + + private Collection groupEvaluatedImages = new ArrayList(); + + private Collection groupEvaluatedTextFields = new ArrayList(); + + private Collection groupEvaluatedCharts = new ArrayList(); + + private Set groupBoundDatasets = new HashSet(); + + private List errors = new ArrayList(); + + private Digester digester = null; + + private boolean ignoreConsistencyProblems; + + public JRXmlLoader(Digester digester) { + this.digester = digester; + } + + public void setJasperDesign(JasperDesign jasperDesign) { + this.jasperDesign = jasperDesign; + } + + public Collection getGroupReprintedElements() { + return this.groupReprintedElements; + } + + public Collection getGroupEvaluatedImages() { + return this.groupEvaluatedImages; + } + + public Collection getGroupEvaluatedTextFields() { + return this.groupEvaluatedTextFields; + } + + public Collection getGroupEvaluatedCharts() { + return this.groupEvaluatedCharts; + } + + public Set getGroupBoundDatasets() { + return this.groupBoundDatasets; + } + + public static JasperDesign load(String sourceFileName) throws JRException { + return load(new File(sourceFileName)); + } + + public static JasperDesign load(File file) throws JRException { + JasperDesign jasperDesign = null; + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + jasperDesign = load(fis); + } catch (IOException e) { + throw new JRException(e); + } finally { + if (fis != null) + try { + fis.close(); + } catch (IOException e) {} + } + return jasperDesign; + } + + public static JasperDesign load(InputStream is) throws JRException { + JasperDesign jasperDesign = null; + JRXmlLoader xmlLoader = null; + try { + xmlLoader = new JRXmlLoader(JRXmlDigesterFactory.createDigester()); + } catch (ParserConfigurationException e) { + throw new JRException(e); + } catch (SAXException e) { + throw new JRException(e); + } + jasperDesign = xmlLoader.loadXML(is); + return jasperDesign; + } + + public JasperDesign loadXML(InputStream is) throws JRException { + return loadXML(new InputSource(is)); + } + + public JasperDesign loadXML(InputSource is) throws JRException { + try { + this.digester.push(this); + this.digester.parse(is); + } catch (SAXException e) { + throw new JRException(e); + } catch (IOException e) { + throw new JRException(e); + } finally { + this.digester.clear(); + } + if (this.errors.size() > 0) { + Exception e = this.errors.get(0); + if (e instanceof JRException) + throw (JRException)e; + throw new JRException(e); + } + assignGroupsToVariables(this.jasperDesign.getMainDesignDataset()); + for (Iterator it = this.jasperDesign.getDatasetsList().iterator(); it.hasNext(); ) { + JRDesignDataset dataset = it.next(); + assignGroupsToVariables(dataset); + } + assignGroupsToElements(); + assignGroupsToImages(); + assignGroupsToTextFields(); + assignGroupsToCharts(); + assignGroupsToDatasets(); + return this.jasperDesign; + } + + private void assignGroupsToVariables(JRDesignDataset dataset) throws JRException { + JRVariable[] variables = dataset.getVariables(); + if (variables != null && variables.length > 0) { + Map groupsMap = dataset.getGroupsMap(); + for (int i = 0; i < variables.length; i++) { + JRDesignVariable variable = (JRDesignVariable)variables[i]; + if (variable.getResetType() == 4) { + String groupName = null; + JRGroup group = variable.getResetGroup(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(groupName); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown reset group '" + groupName + "' for variable : " + variable.getName(), variable); + variable.setResetGroup(group); + } else { + variable.setResetGroup(null); + } + if (variable.getIncrementType() == 4) { + String groupName = null; + JRGroup group = variable.getIncrementGroup(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(groupName); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown increment group '" + groupName + "' for variable : " + variable.getName(), variable); + variable.setIncrementGroup(group); + } else { + variable.setIncrementGroup(null); + } + } + } + } + + private void assignGroupsToElements() throws JRException { + Map groupsMap = this.jasperDesign.getGroupsMap(); + for (Iterator it = this.groupReprintedElements.iterator(); it.hasNext(); ) { + JRDesignElement element = it.next(); + String groupName = null; + JRGroup group = element.getPrintWhenGroupChanges(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(group.getName()); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown reprint group '" + groupName + "' for element.", element); + element.setPrintWhenGroupChanges(group); + } + } + + private void assignGroupsToImages() throws JRException { + Map groupsMap = this.jasperDesign.getGroupsMap(); + for (Iterator it = this.groupEvaluatedImages.iterator(); it.hasNext(); ) { + JRDesignImage image = it.next(); + String groupName = null; + JRGroup group = image.getEvaluationGroup(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(group.getName()); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown evaluation group '" + groupName + "' for image.", image); + image.setEvaluationGroup(group); + } + } + + private void assignGroupsToTextFields() throws JRException { + Map groupsMap = this.jasperDesign.getGroupsMap(); + for (Iterator it = this.groupEvaluatedTextFields.iterator(); it.hasNext(); ) { + JRDesignTextField textField = it.next(); + String groupName = null; + JRGroup group = textField.getEvaluationGroup(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(group.getName()); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown evaluation group '" + groupName + "' for text field.", textField); + textField.setEvaluationGroup(group); + } + } + + private void assignGroupsToCharts() throws JRException { + Map groupsMap = this.jasperDesign.getGroupsMap(); + for (Iterator it = this.groupEvaluatedCharts.iterator(); it.hasNext(); ) { + JRDesignChart chart = it.next(); + String groupName = null; + JRGroup group = chart.getEvaluationGroup(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(group.getName()); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown evaluation group '" + groupName + "' for chart.", chart); + chart.setEvaluationGroup(group); + } + } + + private void assignGroupsToDatasets() throws JRException { + for (Iterator it = this.groupBoundDatasets.iterator(); it.hasNext(); ) { + Map groupsMap; + JRDesignElementDataset dataset = it.next(); + JRDatasetRun datasetRun = dataset.getDatasetRun(); + if (datasetRun == null) { + groupsMap = this.jasperDesign.getGroupsMap(); + } else { + Map datasetMap = this.jasperDesign.getDatasetMap(); + String datasetName = datasetRun.getDatasetName(); + JRDesignDataset subDataset = (JRDesignDataset)datasetMap.get(datasetName); + if (subDataset == null) + throw new JRException("Unknown sub dataset '" + datasetName + "' for chart dataset."); + groupsMap = subDataset.getGroupsMap(); + } + if (dataset.getIncrementType() == 4) { + String groupName = null; + JRGroup group = dataset.getIncrementGroup(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(group.getName()); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown increment group '" + groupName + "' for chart dataset.", dataset); + dataset.setIncrementGroup(group); + } else { + dataset.setIncrementGroup(null); + } + if (dataset.getResetType() == 4) { + String groupName = null; + JRGroup group = dataset.getResetGroup(); + if (group != null) { + groupName = group.getName(); + group = (JRGroup)groupsMap.get(group.getName()); + } + if (!this.ignoreConsistencyProblems && group == null) + throw new JRValidationException("Unknown reset group '" + groupName + "' for chart dataset.", dataset); + dataset.setResetGroup(group); + continue; + } + dataset.setResetGroup(null); + } + } + + public void addError(Exception e) { + if (!this.ignoreConsistencyProblems) + this.errors.add(e); + } + + public boolean isIgnoreConsistencyProblems() { + return this.ignoreConsistencyProblems; + } + + public void setIgnoreConsistencyProblems(boolean ignoreConsistencyProblems) { + this.ignoreConsistencyProblems = ignoreConsistencyProblems; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateDigesterFactory.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateDigesterFactory.java new file mode 100644 index 0000000..5b50f60 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateDigesterFactory.java @@ -0,0 +1,121 @@ +package net.sf.jasperreports.engine.xml; + +import javax.xml.parsers.ParserConfigurationException; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.util.JRProperties; +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.RuleSet; +import org.apache.commons.digester.RuleSetBase; +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class JRXmlTemplateDigesterFactory implements ErrorHandler { + protected static final String PATTERN_ROOT = "jasperTemplate"; + + protected static final String PATTERN_INCLUDED_TEMPLATE = "jasperTemplate/template"; + + protected static final String PATTERN_STYLE = "jasperTemplate/style"; + + protected static final String PATTERN_STYLE_PEN = "jasperTemplate/style/pen"; + + protected static final String PATTERN_BOX = "jasperTemplate/style/box"; + + protected static final String PATTERN_BOX_PEN = "jasperTemplate/style/box/pen"; + + protected static final String PATTERN_BOX_TOP_PEN = "jasperTemplate/style/box/topPen"; + + protected static final String PATTERN_BOX_LEFT_PEN = "jasperTemplate/style/box/leftPen"; + + protected static final String PATTERN_BOX_BOTTOM_PEN = "jasperTemplate/style/box/bottomPen"; + + protected static final String PATTERN_BOX_RIGHT_PEN = "jasperTemplate/style/box/rightPen"; + + private static final JRXmlTemplateDigesterFactory instance = new JRXmlTemplateDigesterFactory(); + + private final RuleSet rules = readRuleSet(); + + static Class class$net$sf$jasperreports$engine$JRSimpleTemplate; + + static Class class$net$sf$jasperreports$engine$xml$JRTemplateStyleFactory; + + static Class class$net$sf$jasperreports$engine$JRStyle; + + static Class class$net$sf$jasperreports$engine$xml$JRPenFactory$Style; + + static Class class$net$sf$jasperreports$engine$xml$JRBoxFactory; + + static Class class$net$sf$jasperreports$engine$xml$JRPenFactory$Box; + + static Class class$net$sf$jasperreports$engine$xml$JRPenFactory$Top; + + static Class class$net$sf$jasperreports$engine$xml$JRPenFactory$Left; + + static Class class$net$sf$jasperreports$engine$xml$JRPenFactory$Bottom; + + static Class class$net$sf$jasperreports$engine$xml$JRPenFactory$Right; + + public static JRXmlTemplateDigesterFactory instance() { + return instance; + } + + protected RuleSet readRuleSet() { + return (RuleSet)new RuleSetBase() { + private final JRXmlTemplateDigesterFactory this$0; + + public void addRuleInstances(Digester digester) { + digester.addObjectCreate("jasperTemplate", (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$JRSimpleTemplate == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$JRSimpleTemplate = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.JRSimpleTemplate")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$JRSimpleTemplate); + digester.addCallMethod("jasperTemplate/template", "addIncludedTemplate", 0); + digester.addFactoryCreate("jasperTemplate/style", (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRTemplateStyleFactory == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRTemplateStyleFactory = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRTemplateStyleFactory")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRTemplateStyleFactory); + digester.addSetNext("jasperTemplate/style", "addStyle", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$JRStyle == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$JRStyle = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.JRStyle")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$JRStyle).getName()); + digester.addFactoryCreate("jasperTemplate/style/pen", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Style == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Style = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRPenFactory$Style")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Style).getName()); + digester.addFactoryCreate("jasperTemplate/style/box", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRBoxFactory == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRBoxFactory = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRBoxFactory")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRBoxFactory).getName()); + digester.addFactoryCreate("jasperTemplate/style/box/pen", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Box == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Box = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRPenFactory$Box")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Box).getName()); + digester.addFactoryCreate("jasperTemplate/style/box/topPen", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Top == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Top = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRPenFactory$Top")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Top).getName()); + digester.addFactoryCreate("jasperTemplate/style/box/leftPen", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Left == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Left = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRPenFactory$Left")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Left).getName()); + digester.addFactoryCreate("jasperTemplate/style/box/bottomPen", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Bottom == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Bottom = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRPenFactory$Bottom")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Bottom).getName()); + digester.addFactoryCreate("jasperTemplate/style/box/rightPen", ((JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Right == null) ? (JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Right = JRXmlTemplateDigesterFactory.class$("net.sf.jasperreports.engine.xml.JRPenFactory$Right")) : JRXmlTemplateDigesterFactory.class$net$sf$jasperreports$engine$xml$JRPenFactory$Right).getName()); + } + }; + } + + static Class class$(String x0) { + try { + return Class.forName(x0); + } catch (ClassNotFoundException x1) { + throw (new NoClassDefFoundError()).initCause(x1); + } + } + + public JRXmlDigester createDigester() { + JRXmlDigester digester = new JRXmlDigester(); + try { + configureDigester(digester); + } catch (SAXException e) { + throw new JRRuntimeException(e); + } catch (ParserConfigurationException e) { + throw new JRRuntimeException(e); + } + return digester; + } + + protected void configureDigester(Digester digester) throws SAXException, ParserConfigurationException { + boolean validating = JRProperties.getBooleanProperty("net.sf.jasperreports.compiler.xml.validation"); + digester.setErrorHandler(this); + digester.setValidating(validating); + digester.setFeature("http://xml.org/sax/features/validation", validating); + digester.addRuleSet(this.rules); + } + + public void error(SAXParseException exception) throws SAXException { + throw exception; + } + + public void fatalError(SAXParseException exception) throws SAXException { + throw exception; + } + + public void warning(SAXParseException exception) throws SAXException { + throw exception; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateLoader.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateLoader.java new file mode 100644 index 0000000..eb29e99 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlTemplateLoader.java @@ -0,0 +1,79 @@ +package net.sf.jasperreports.engine.xml; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRTemplate; +import net.sf.jasperreports.engine.util.JRLoader; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.xml.sax.SAXException; + +public class JRXmlTemplateLoader { + private static final Log log = LogFactory.getLog(JRXmlTemplateLoader.class); + + public static JRTemplate load(String location) throws JRException { + byte[] data = JRLoader.loadBytesFromLocation(location); + return load(new ByteArrayInputStream(data)); + } + + public static JRTemplate load(File file) { + BufferedInputStream fileIn; + try { + fileIn = new BufferedInputStream(new FileInputStream(file)); + } catch (FileNotFoundException e) { + throw new JRRuntimeException("Template XML file not found", e); + } + try { + return load(fileIn); + } finally { + try { + fileIn.close(); + } catch (IOException e) { + log.warn("Error closing XML file", e); + } + } + } + + public static JRTemplate load(URL url) { + InputStream input; + try { + input = url.openStream(); + } catch (IOException e) { + throw new JRRuntimeException("Error opening connection to template URL " + url, e); + } + try { + return load(input); + } finally { + try { + input.close(); + } catch (IOException e) { + log.warn("Error closing connection to template URL " + url, e); + } + } + } + + public static JRTemplate load(InputStream data) { + JRXmlTemplateLoader loader = new JRXmlTemplateLoader(); + return loader.loadTemplate(data); + } + + protected JRTemplate loadTemplate(InputStream data) { + JRXmlDigester digester = JRXmlTemplateDigesterFactory.instance().createDigester(); + try { + JRTemplate template = (JRTemplate)digester.parse(data); + return template; + } catch (IOException e) { + throw new JRRuntimeException("Error reading template XML", e); + } catch (SAXException e) { + throw new JRRuntimeException("Error parsing template XML", e); + } + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlWriter.java b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlWriter.java new file mode 100644 index 0000000..878eda6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlWriter.java @@ -0,0 +1,1537 @@ +package net.sf.jasperreports.engine.xml; + +import java.awt.Color; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.StringWriter; +import java.io.Writer; +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 java.util.SortedSet; +import net.sf.jasperreports.charts.JRAreaPlot; +import net.sf.jasperreports.charts.JRBar3DPlot; +import net.sf.jasperreports.charts.JRBarPlot; +import net.sf.jasperreports.charts.JRBubblePlot; +import net.sf.jasperreports.charts.JRCandlestickPlot; +import net.sf.jasperreports.charts.JRCategoryDataset; +import net.sf.jasperreports.charts.JRCategorySeries; +import net.sf.jasperreports.charts.JRChartAxis; +import net.sf.jasperreports.charts.JRDataRange; +import net.sf.jasperreports.charts.JRHighLowDataset; +import net.sf.jasperreports.charts.JRHighLowPlot; +import net.sf.jasperreports.charts.JRLinePlot; +import net.sf.jasperreports.charts.JRMeterPlot; +import net.sf.jasperreports.charts.JRMultiAxisPlot; +import net.sf.jasperreports.charts.JRPie3DPlot; +import net.sf.jasperreports.charts.JRPieDataset; +import net.sf.jasperreports.charts.JRPiePlot; +import net.sf.jasperreports.charts.JRScatterPlot; +import net.sf.jasperreports.charts.JRThermometerPlot; +import net.sf.jasperreports.charts.JRTimePeriodDataset; +import net.sf.jasperreports.charts.JRTimePeriodSeries; +import net.sf.jasperreports.charts.JRTimeSeries; +import net.sf.jasperreports.charts.JRTimeSeriesDataset; +import net.sf.jasperreports.charts.JRTimeSeriesPlot; +import net.sf.jasperreports.charts.JRValueDataset; +import net.sf.jasperreports.charts.JRValueDisplay; +import net.sf.jasperreports.charts.JRXyDataset; +import net.sf.jasperreports.charts.JRXySeries; +import net.sf.jasperreports.charts.JRXyzDataset; +import net.sf.jasperreports.charts.JRXyzSeries; +import net.sf.jasperreports.charts.util.JRMeterInterval; +import net.sf.jasperreports.crosstabs.JRCellContents; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.crosstabs.JRCrosstabBucket; +import net.sf.jasperreports.crosstabs.JRCrosstabCell; +import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup; +import net.sf.jasperreports.crosstabs.JRCrosstabDataset; +import net.sf.jasperreports.crosstabs.JRCrosstabMeasure; +import net.sf.jasperreports.crosstabs.JRCrosstabParameter; +import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup; +import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab; +import net.sf.jasperreports.engine.JRBand; +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRChartDataset; +import net.sf.jasperreports.engine.JRChartPlot; +import net.sf.jasperreports.engine.JRChild; +import net.sf.jasperreports.engine.JRDataset; +import net.sf.jasperreports.engine.JRDatasetParameter; +import net.sf.jasperreports.engine.JRDatasetRun; +import net.sf.jasperreports.engine.JRElement; +import net.sf.jasperreports.engine.JRElementDataset; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRField; +import net.sf.jasperreports.engine.JRFont; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRGraphicElement; +import net.sf.jasperreports.engine.JRGroup; +import net.sf.jasperreports.engine.JRHyperlink; +import net.sf.jasperreports.engine.JRHyperlinkParameter; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRParameter; +import net.sf.jasperreports.engine.JRPropertiesHolder; +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.JRPropertyExpression; +import net.sf.jasperreports.engine.JRQuery; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRReport; +import net.sf.jasperreports.engine.JRReportFont; +import net.sf.jasperreports.engine.JRReportTemplate; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRSortField; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRStyle; +import net.sf.jasperreports.engine.JRStyleContainer; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRSubreportParameter; +import net.sf.jasperreports.engine.JRSubreportReturnValue; +import net.sf.jasperreports.engine.JRTextElement; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVariable; +import net.sf.jasperreports.engine.util.JRXmlWriteHelper; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.data.time.Day; + +public class JRXmlWriter extends JRXmlBaseWriter { + private JRReport report = null; + + private String encoding = null; + + private Map fontsMap = new HashMap(); + + private XmlWriterVisitor xmlWriterVisitor = new XmlWriterVisitor(this); + + protected JRXmlWriter(JRReport report, String encoding) { + this.report = report; + this.encoding = encoding; + } + + public static String writeReport(JRReport report, String encoding) { + JRXmlWriter writer = new JRXmlWriter(report, encoding); + StringWriter buffer = new StringWriter(); + try { + writer.writeReport(buffer); + } catch (IOException e) { + throw new JRRuntimeException("Error writing report design.", e); + } + return buffer.toString(); + } + + public static void writeReport(JRReport report, String destFileName, String encoding) throws JRException { + FileOutputStream fos = null; + try { + fos = new FileOutputStream(destFileName); + Writer out = new OutputStreamWriter(fos, encoding); + JRXmlWriter writer = new JRXmlWriter(report, encoding); + writer.writeReport(out); + } catch (IOException e) { + throw new JRException("Error writing to file : " + destFileName, e); + } finally { + if (fos != null) + try { + fos.close(); + } catch (IOException e) {} + } + } + + public static void writeReport(JRReport report, OutputStream outputStream, String encoding) throws JRException { + try { + Writer out = new OutputStreamWriter(outputStream, encoding); + JRXmlWriter writer = new JRXmlWriter(report, encoding); + writer.writeReport(out); + } catch (Exception e) { + throw new JRException("Error writing to OutputStream : " + report.getName(), e); + } + } + + protected void writeReport(Writer out) throws IOException { + useWriter(new JRXmlWriteHelper(out)); + this.writer.writeProlog(this.encoding); + this.writer.writePublicDoctype("jasperReport", "-//JasperReports//DTD JasperReport//EN", "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"); + this.writer.startElement("jasperReport"); + this.writer.addEncodedAttribute("name", this.report.getName()); + this.writer.addEncodedAttribute("language", this.report.getLanguage(), "java"); + this.writer.addAttribute("columnCount", this.report.getColumnCount(), 1); + this.writer.addAttribute("printOrder", this.report.getPrintOrder(), JRXmlConstants.getPrintOrderMap(), (byte)1); + this.writer.addAttribute("pageWidth", this.report.getPageWidth()); + this.writer.addAttribute("pageHeight", this.report.getPageHeight()); + this.writer.addAttribute("orientation", this.report.getOrientation(), JRXmlConstants.getOrientationMap(), (byte)1); + this.writer.addAttribute("whenNoDataType", this.report.getWhenNoDataType(), JRXmlConstants.getWhenNoDataTypeMap(), (byte)1); + this.writer.addAttribute("columnWidth", this.report.getColumnWidth()); + this.writer.addAttribute("columnSpacing", this.report.getColumnSpacing(), 0); + this.writer.addAttribute("leftMargin", this.report.getLeftMargin()); + this.writer.addAttribute("rightMargin", this.report.getRightMargin()); + this.writer.addAttribute("topMargin", this.report.getTopMargin()); + this.writer.addAttribute("bottomMargin", this.report.getBottomMargin()); + this.writer.addAttribute("isTitleNewPage", this.report.isTitleNewPage(), false); + this.writer.addAttribute("isSummaryNewPage", this.report.isSummaryNewPage(), false); + this.writer.addAttribute("isFloatColumnFooter", this.report.isFloatColumnFooter(), false); + this.writer.addAttribute("scriptletClass", this.report.getScriptletClass()); + this.writer.addAttribute("formatFactoryClass", this.report.getFormatFactoryClass()); + this.writer.addEncodedAttribute("resourceBundle", this.report.getResourceBundle()); + this.writer.addAttribute("whenResourceMissingType", this.report.getWhenResourceMissingType(), JRXmlConstants.getWhenResourceMissingTypeMap(), (byte)1); + this.writer.addAttribute("isIgnorePagination", this.report.isIgnorePagination(), false); + writeProperties((JRPropertiesHolder)this.report); + String[] imports = this.report.getImports(); + if (imports != null && imports.length > 0) + for (int i = 0; i < imports.length; i++) { + String value = imports[i]; + if (value != null) { + this.writer.startElement("import"); + this.writer.addEncodedAttribute("value", value); + this.writer.closeElement(); + } + } + writeTemplates(); + JRReportFont[] fonts = this.report.getFonts(); + if (fonts != null && fonts.length > 0) + for (int i = 0; i < fonts.length; i++) { + this.fontsMap.put(fonts[i].getName(), fonts[i]); + writeReportFont(fonts[i]); + } + JRStyle[] styles = this.report.getStyles(); + if (styles != null && styles.length > 0) + for (int i = 0; i < styles.length; i++) + writeStyle(styles[i]); + JRDataset[] datasets = this.report.getDatasets(); + if (datasets != null && datasets.length > 0) + for (int i = 0; i < datasets.length; i++) + writeDataset(datasets[i]); + writeDatasetContents(this.report.getMainDataset()); + if (this.report.getBackground() != null) { + this.writer.startElement("background"); + writeBand(this.report.getBackground()); + this.writer.closeElement(); + } + if (this.report.getTitle() != null) { + this.writer.startElement("title"); + writeBand(this.report.getTitle()); + this.writer.closeElement(); + } + if (this.report.getPageHeader() != null) { + this.writer.startElement("pageHeader"); + writeBand(this.report.getPageHeader()); + this.writer.closeElement(); + } + if (this.report.getColumnHeader() != null) { + this.writer.startElement("columnHeader"); + writeBand(this.report.getColumnHeader()); + this.writer.closeElement(); + } + if (this.report.getDetail() != null) { + this.writer.startElement("detail"); + writeBand(this.report.getDetail()); + this.writer.closeElement(); + } + if (this.report.getColumnFooter() != null) { + this.writer.startElement("columnFooter"); + writeBand(this.report.getColumnFooter()); + this.writer.closeElement(); + } + if (this.report.getPageFooter() != null) { + this.writer.startElement("pageFooter"); + writeBand(this.report.getPageFooter()); + this.writer.closeElement(); + } + if (this.report.getLastPageFooter() != null) { + this.writer.startElement("lastPageFooter"); + writeBand(this.report.getLastPageFooter()); + this.writer.closeElement(); + } + if (this.report.getSummary() != null) { + this.writer.startElement("summary"); + writeBand(this.report.getSummary()); + this.writer.closeElement(); + } + if (this.report.getNoData() != null) { + this.writer.startElement("noData"); + writeBand(this.report.getNoData()); + this.writer.closeElement(); + } + this.writer.closeElement(); + out.flush(); + } + + private void writeProperties(JRPropertiesHolder propertiesHolder) throws IOException { + if (propertiesHolder.hasProperties()) { + JRPropertiesMap propertiesMap = propertiesHolder.getPropertiesMap(); + String[] propertyNames = propertiesMap.getPropertyNames(); + if (propertyNames != null && propertyNames.length > 0) + for (int i = 0; i < propertyNames.length; i++) { + this.writer.startElement("property"); + this.writer.addEncodedAttribute("name", propertyNames[i]); + String value = propertiesMap.getProperty(propertyNames[i]); + if (value != null) + this.writer.addEncodedAttribute("value", value); + this.writer.closeElement(); + } + } + } + + protected void writeTemplates() throws IOException { + JRReportTemplate[] templates = this.report.getTemplates(); + if (templates != null) + for (int i = 0; i < templates.length; i++) { + JRReportTemplate template = templates[i]; + writeTemplate(template); + } + } + + protected void writeTemplate(JRReportTemplate template) throws IOException { + this.writer.writeExpression("template", template.getSourceExpression(), true, String.class.getName()); + } + + private void writeReportFont(JRReportFont font) throws IOException { + this.writer.startElement("reportFont"); + this.writer.addEncodedAttribute("name", font.getName()); + this.writer.addAttribute("isDefault", font.isDefault()); + this.writer.addEncodedAttribute("fontName", font.getOwnFontName()); + this.writer.addAttribute("size", font.getOwnFontSize()); + this.writer.addAttribute("isBold", font.isOwnBold()); + this.writer.addAttribute("isItalic", font.isOwnItalic()); + this.writer.addAttribute("isUnderline", font.isOwnUnderline()); + this.writer.addAttribute("isStrikeThrough", font.isOwnStrikeThrough()); + this.writer.addEncodedAttribute("pdfFontName", font.getOwnPdfFontName()); + this.writer.addEncodedAttribute("pdfEncoding", font.getOwnPdfEncoding()); + this.writer.addAttribute("isPdfEmbedded", font.isOwnPdfEmbedded()); + this.writer.closeElement(); + } + + private void writeParameter(JRParameter parameter) throws IOException { + this.writer.startElement("parameter"); + this.writer.addEncodedAttribute("name", parameter.getName()); + this.writer.addAttribute("class", parameter.getValueClassName()); + this.writer.addAttribute("isForPrompting", parameter.isForPrompting(), true); + writeProperties((JRPropertiesHolder)parameter); + this.writer.writeCDATAElement("parameterDescription", parameter.getDescription()); + this.writer.writeExpression("defaultValueExpression", parameter.getDefaultValueExpression(), false); + this.writer.closeElement(); + } + + private void writeQuery(JRQuery query) throws IOException { + this.writer.startElement("queryString"); + this.writer.addEncodedAttribute("language", query.getLanguage(), "sql"); + this.writer.writeCDATA(query.getText()); + this.writer.closeElement(); + } + + private void writeField(JRField field) throws IOException { + this.writer.startElement("field"); + this.writer.addEncodedAttribute("name", field.getName()); + this.writer.addAttribute("class", field.getValueClassName()); + writeProperties((JRPropertiesHolder)field); + this.writer.writeCDATAElement("fieldDescription", field.getDescription()); + this.writer.closeElement(); + } + + private void writeSortField(JRSortField sortField) throws IOException { + this.writer.startElement("sortField"); + this.writer.addEncodedAttribute("name", sortField.getName()); + this.writer.addAttribute("order", sortField.getOrder(), JRXmlConstants.getSortOrderMap(), (byte)0); + this.writer.closeElement(); + } + + private void writeVariable(JRVariable variable) throws IOException { + this.writer.startElement("variable"); + this.writer.addEncodedAttribute("name", variable.getName()); + this.writer.addAttribute("class", variable.getValueClassName()); + this.writer.addAttribute("resetType", variable.getResetType(), JRXmlConstants.getResetTypeMap(), (byte)1); + if (variable.getResetGroup() != null) + this.writer.addEncodedAttribute("resetGroup", variable.getResetGroup().getName()); + this.writer.addAttribute("incrementType", variable.getIncrementType(), JRXmlConstants.getResetTypeMap(), (byte)5); + if (variable.getIncrementGroup() != null) + this.writer.addEncodedAttribute("incrementGroup", variable.getIncrementGroup().getName()); + this.writer.addAttribute("calculation", variable.getCalculation(), JRXmlConstants.getCalculationMap(), (byte)0); + this.writer.addAttribute("incrementerFactoryClass", variable.getIncrementerFactoryClassName()); + this.writer.writeExpression("variableExpression", variable.getExpression(), false); + this.writer.writeExpression("initialValueExpression", variable.getInitialValueExpression(), false); + this.writer.closeElement(); + } + + private void writeGroup(JRGroup group) throws IOException { + this.writer.startElement("group"); + this.writer.addEncodedAttribute("name", group.getName()); + this.writer.addAttribute("isStartNewColumn", group.isStartNewColumn(), false); + this.writer.addAttribute("isStartNewPage", group.isStartNewPage(), false); + this.writer.addAttribute("isResetPageNumber", group.isResetPageNumber(), false); + this.writer.addAttribute("isReprintHeaderOnEachPage", group.isReprintHeaderOnEachPage(), false); + this.writer.addAttributePositive("minHeightToStartNewPage", group.getMinHeightToStartNewPage()); + this.writer.writeExpression("groupExpression", group.getExpression(), false); + if (group.getGroupHeader() != null) { + this.writer.startElement("groupHeader"); + writeBand(group.getGroupHeader()); + this.writer.closeElement(); + } + if (group.getGroupFooter() != null) { + this.writer.startElement("groupFooter"); + writeBand(group.getGroupFooter()); + this.writer.closeElement(); + } + this.writer.closeElement(); + } + + private void writeBand(JRBand band) throws IOException { + this.writer.startElement("band"); + this.writer.addAttributePositive("height", band.getHeight()); + this.writer.addAttribute("isSplitAllowed", band.isSplitAllowed(), true); + this.writer.writeExpression("printWhenExpression", band.getPrintWhenExpression(), false); + List children = band.getChildren(); + if (children != null && children.size() > 0) + for (int i = 0; i < children.size(); i++) + ((JRChild)children.get(i)).visit(this.xmlWriterVisitor); + this.writer.closeElement(); + } + + public void writeElementGroup(JRElementGroup elementGroup) throws IOException { + this.writer.startElement("elementGroup"); + List children = elementGroup.getChildren(); + if (children != null && children.size() > 0) + for (int i = 0; i < children.size(); i++) + ((JRChild)children.get(i)).visit(this.xmlWriterVisitor); + this.writer.closeElement(); + } + + public void writeBreak(JRBreak breakElement) throws IOException { + this.writer.startElement("break"); + this.writer.addAttribute("type", breakElement.getType(), JRXmlConstants.getBreakTypeMap(), (byte)1); + writeReportElement((JRElement)breakElement); + this.writer.closeElement(); + } + + public void writeLine(JRLine line) throws IOException { + this.writer.startElement("line"); + this.writer.addAttribute("direction", line.getDirection(), JRXmlConstants.getDirectionMap(), (byte)1); + writeReportElement((JRElement)line); + writeGraphicElement((JRGraphicElement)line); + this.writer.closeElement(); + } + + private void writeReportElement(JRElement element) throws IOException { + this.writer.startElement("reportElement"); + this.writer.addEncodedAttribute("key", element.getKey()); + writeStyleReferenceAttr((JRStyleContainer)element); + this.writer.addAttribute("positionType", element.getPositionType(), JRXmlConstants.getPositionTypeMap(), (byte)2); + this.writer.addAttribute("stretchType", element.getStretchType(), JRXmlConstants.getStretchTypeMap(), (byte)0); + this.writer.addAttribute("isPrintRepeatedValues", element.isPrintRepeatedValues(), true); + this.writer.addAttribute("mode", element.getOwnMode(), JRXmlConstants.getModeMap()); + this.writer.addAttribute("x", element.getX()); + this.writer.addAttribute("y", element.getY()); + this.writer.addAttribute("width", element.getWidth()); + this.writer.addAttribute("height", element.getHeight()); + this.writer.addAttribute("isRemoveLineWhenBlank", element.isRemoveLineWhenBlank(), false); + this.writer.addAttribute("isPrintInFirstWholeBand", element.isPrintInFirstWholeBand(), false); + this.writer.addAttribute("isPrintWhenDetailOverflows", element.isPrintWhenDetailOverflows(), false); + if (element.getPrintWhenGroupChanges() != null) + this.writer.addEncodedAttribute("printWhenGroupChanges", element.getPrintWhenGroupChanges().getName()); + this.writer.addAttribute("forecolor", element.getOwnForecolor()); + this.writer.addAttribute("backcolor", element.getOwnBackcolor()); + writeProperties((JRPropertiesHolder)element); + writePropertyExpressions(element.getPropertyExpressions()); + this.writer.writeExpression("printWhenExpression", element.getPrintWhenExpression(), false); + this.writer.closeElement(); + } + + protected void writePropertyExpressions(JRPropertyExpression[] propertyExpressions) throws IOException { + if (propertyExpressions != null) + for (int i = 0; i < propertyExpressions.length; i++) + writePropertyExpression(propertyExpressions[i]); + } + + protected void writePropertyExpression(JRPropertyExpression propertyExpression) throws IOException { + String expressionText = propertyExpression.getValueExpression().getText(); + this.writer.writeCDATAElement("propertyExpression", expressionText, "name", propertyExpression.getName()); + } + + private void writeGraphicElement(JRGraphicElement element) throws IOException { + this.writer.startElement("graphicElement"); + this.writer.addAttribute("fill", element.getOwnFill(), JRXmlConstants.getFillMap()); + writePen(element.getLinePen()); + this.writer.closeElement(true); + } + + public void writeRectangle(JRRectangle rectangle) throws IOException { + this.writer.startElement("rectangle"); + this.writer.addAttribute("radius", rectangle.getOwnRadius()); + writeReportElement((JRElement)rectangle); + writeGraphicElement((JRGraphicElement)rectangle); + this.writer.closeElement(); + } + + public void writeEllipse(JREllipse ellipse) throws IOException { + this.writer.startElement("ellipse"); + writeReportElement((JRElement)ellipse); + writeGraphicElement((JRGraphicElement)ellipse); + this.writer.closeElement(); + } + + public void writeImage(JRImage image) throws IOException { + this.writer.startElement("image"); + this.writer.addAttribute("scaleImage", image.getOwnScaleImage(), JRXmlConstants.getScaleImageMap()); + this.writer.addAttribute("hAlign", image.getOwnHorizontalAlignment(), JRXmlConstants.getHorizontalAlignMap()); + this.writer.addAttribute("vAlign", image.getOwnVerticalAlignment(), JRXmlConstants.getVerticalAlignMap()); + this.writer.addAttribute("isUsingCache", image.isOwnUsingCache()); + this.writer.addAttribute("isLazy", image.isLazy(), false); + this.writer.addAttribute("onErrorType", image.getOnErrorType(), JRXmlConstants.getOnErrorTypeMap(), (byte)1); + this.writer.addAttribute("evaluationTime", image.getEvaluationTime(), JRXmlConstants.getEvaluationTimeMap(), (byte)1); + if (image.getEvaluationGroup() != null) + this.writer.addEncodedAttribute("evaluationGroup", image.getEvaluationGroup().getName()); + this.writer.addEncodedAttribute("hyperlinkType", image.getLinkType()); + this.writer.addAttribute("hyperlinkTarget", image.getHyperlinkTarget(), JRXmlConstants.getHyperlinkTargetMap(), (byte)1); + this.writer.addAttribute("bookmarkLevel", image.getBookmarkLevel(), 0); + writeReportElement((JRElement)image); + writeBox(image.getLineBox()); + writeGraphicElement((JRGraphicElement)image); + this.writer.writeExpression("imageExpression", image.getExpression(), true); + this.writer.writeExpression("anchorNameExpression", image.getAnchorNameExpression(), false); + this.writer.writeExpression("hyperlinkReferenceExpression", image.getHyperlinkReferenceExpression(), false); + this.writer.writeExpression("hyperlinkAnchorExpression", image.getHyperlinkAnchorExpression(), false); + this.writer.writeExpression("hyperlinkPageExpression", image.getHyperlinkPageExpression(), false); + this.writer.writeExpression("hyperlinkTooltipExpression", image.getHyperlinkTooltipExpression(), false); + writeHyperlinkParameters(image.getHyperlinkParameters()); + this.writer.closeElement(); + } + + public void writeStaticText(JRStaticText staticText) throws IOException { + this.writer.startElement("staticText"); + writeReportElement((JRElement)staticText); + writeBox(staticText.getLineBox()); + writeTextElement((JRTextElement)staticText); + this.writer.writeCDATAElement("text", staticText.getText()); + this.writer.closeElement(); + } + + private void writeTextElement(JRTextElement textElement) throws IOException { + this.writer.startElement("textElement"); + this.writer.addAttribute("textAlignment", textElement.getOwnHorizontalAlignment(), JRXmlConstants.getHorizontalAlignMap()); + this.writer.addAttribute("verticalAlignment", textElement.getOwnVerticalAlignment(), JRXmlConstants.getVerticalAlignMap()); + this.writer.addAttribute("rotation", textElement.getOwnRotation(), JRXmlConstants.getRotationMap()); + this.writer.addAttribute("lineSpacing", textElement.getOwnLineSpacing(), JRXmlConstants.getLineSpacingMap()); + this.writer.addAttribute("markup", textElement.getOwnMarkup()); + writeFont((JRFont)textElement); + this.writer.closeElement(); + } + + private void writeFont(JRFont font) throws IOException { + if (font != null) { + this.writer.startElement("font"); + if (font.getReportFont() != null) { + JRFont baseFont = (JRFont)this.fontsMap.get(font.getReportFont().getName()); + if (baseFont != null) { + this.writer.addEncodedAttribute("reportFont", font.getReportFont().getName()); + } else { + throw new JRRuntimeException("Referenced report font not found : " + font.getReportFont().getName()); + } + } + this.writer.addEncodedAttribute("fontName", font.getOwnFontName()); + this.writer.addAttribute("size", font.getOwnFontSize()); + this.writer.addAttribute("isBold", font.isOwnBold()); + this.writer.addAttribute("isItalic", font.isOwnItalic()); + this.writer.addAttribute("isUnderline", font.isOwnUnderline()); + this.writer.addAttribute("isStrikeThrough", font.isOwnStrikeThrough()); + this.writer.addEncodedAttribute("pdfFontName", font.getOwnPdfFontName()); + this.writer.addEncodedAttribute("pdfEncoding", font.getOwnPdfEncoding()); + this.writer.addAttribute("isPdfEmbedded", font.isOwnPdfEmbedded()); + this.writer.closeElement(true); + } + } + + public void writeTextField(JRTextField textField) throws IOException { + this.writer.startElement("textField"); + this.writer.addAttribute("isStretchWithOverflow", textField.isStretchWithOverflow(), false); + this.writer.addAttribute("evaluationTime", textField.getEvaluationTime(), JRXmlConstants.getEvaluationTimeMap(), (byte)1); + if (textField.getEvaluationGroup() != null) + this.writer.addEncodedAttribute("evaluationGroup", textField.getEvaluationGroup().getName()); + this.writer.addEncodedAttribute("pattern", textField.getOwnPattern()); + this.writer.addAttribute("isBlankWhenNull", textField.isOwnBlankWhenNull()); + this.writer.addEncodedAttribute("hyperlinkType", textField.getLinkType()); + this.writer.addAttribute("hyperlinkTarget", textField.getHyperlinkTarget(), JRXmlConstants.getHyperlinkTargetMap(), (byte)1); + this.writer.addAttribute("bookmarkLevel", textField.getBookmarkLevel(), 0); + writeReportElement((JRElement)textField); + writeBox(textField.getLineBox()); + writeTextElement((JRTextElement)textField); + this.writer.writeExpression("textFieldExpression", textField.getExpression(), true); + this.writer.writeExpression("anchorNameExpression", textField.getAnchorNameExpression(), false); + this.writer.writeExpression("hyperlinkReferenceExpression", textField.getHyperlinkReferenceExpression(), false); + this.writer.writeExpression("hyperlinkAnchorExpression", textField.getHyperlinkAnchorExpression(), false); + this.writer.writeExpression("hyperlinkPageExpression", textField.getHyperlinkPageExpression(), false); + this.writer.writeExpression("hyperlinkTooltipExpression", textField.getHyperlinkTooltipExpression(), false); + writeHyperlinkParameters(textField.getHyperlinkParameters()); + this.writer.closeElement(); + } + + public void writeSubreport(JRSubreport subreport) throws IOException { + this.writer.startElement("subreport"); + this.writer.addAttribute("isUsingCache", subreport.isOwnUsingCache()); + writeReportElement((JRElement)subreport); + this.writer.writeExpression("parametersMapExpression", subreport.getParametersMapExpression(), false); + JRSubreportParameter[] parameters = subreport.getParameters(); + if (parameters != null && parameters.length > 0) + for (int i = 0; i < parameters.length; i++) + writeSubreportParameter(parameters[i]); + this.writer.writeExpression("connectionExpression", subreport.getConnectionExpression(), false); + this.writer.writeExpression("dataSourceExpression", subreport.getDataSourceExpression(), false); + JRSubreportReturnValue[] returnValues = subreport.getReturnValues(); + if (returnValues != null && returnValues.length > 0) + for (int i = 0; i < returnValues.length; i++) + writeSubreportReturnValue(returnValues[i]); + this.writer.writeExpression("subreportExpression", subreport.getExpression(), true); + this.writer.closeElement(); + } + + private void writeSubreportParameter(JRSubreportParameter subreportParameter) throws IOException { + this.writer.startElement("subreportParameter"); + this.writer.addEncodedAttribute("name", subreportParameter.getName()); + this.writer.writeExpression("subreportParameterExpression", subreportParameter.getExpression(), false); + this.writer.closeElement(); + } + + private void writeDatasetParameter(JRDatasetParameter datasetParameter) throws IOException { + this.writer.startElement("datasetParameter"); + this.writer.addEncodedAttribute("name", datasetParameter.getName()); + this.writer.writeExpression("datasetParameterExpression", datasetParameter.getExpression(), false); + this.writer.closeElement(); + } + + private void writeChart(JRChart chart) throws IOException { + this.writer.startElement("chart"); + this.writer.addAttribute("isShowLegend", chart.isShowLegend(), true); + this.writer.addAttribute("evaluationTime", chart.getEvaluationTime(), JRXmlConstants.getEvaluationTimeMap(), (byte)1); + if (chart.getEvaluationTime() == 5) + this.writer.addEncodedAttribute("evaluationGroup", chart.getEvaluationGroup().getName()); + this.writer.addEncodedAttribute("hyperlinkType", chart.getLinkType()); + this.writer.addAttribute("hyperlinkTarget", chart.getHyperlinkTarget(), JRXmlConstants.getHyperlinkTargetMap(), (byte)1); + this.writer.addAttribute("bookmarkLevel", chart.getBookmarkLevel(), 0); + this.writer.addAttribute("customizerClass", chart.getCustomizerClass()); + this.writer.addAttribute("renderType", chart.getRenderType()); + writeReportElement((JRElement)chart); + writeBox(chart.getLineBox()); + this.writer.startElement("chartTitle"); + this.writer.addAttribute("position", chart.getTitlePosition(), JRXmlConstants.getChartEdgeMap(), (byte)1); + this.writer.addAttribute("color", chart.getOwnTitleColor()); + writeFont(chart.getTitleFont()); + if (chart.getTitleExpression() != null) + this.writer.writeExpression("titleExpression", chart.getTitleExpression(), false); + this.writer.closeElement(); + this.writer.startElement("chartSubtitle"); + this.writer.addAttribute("color", chart.getOwnSubtitleColor()); + writeFont(chart.getSubtitleFont()); + if (chart.getSubtitleExpression() != null) + this.writer.writeExpression("subtitleExpression", chart.getSubtitleExpression(), false); + this.writer.closeElement(); + this.writer.startElement("chartLegend"); + if (chart.getOwnLegendColor() != null) + this.writer.addAttribute("textColor", chart.getOwnLegendColor()); + if (chart.getOwnLegendBackgroundColor() != null) + this.writer.addAttribute("backgroundColor", chart.getOwnLegendBackgroundColor()); + this.writer.addAttribute("position", chart.getLegendPosition(), JRXmlConstants.getChartEdgeMap(), (byte)2); + writeFont(chart.getLegendFont()); + this.writer.closeElement(); + this.writer.writeExpression("anchorNameExpression", chart.getAnchorNameExpression(), false); + this.writer.writeExpression("hyperlinkReferenceExpression", chart.getHyperlinkReferenceExpression(), false); + this.writer.writeExpression("hyperlinkAnchorExpression", chart.getHyperlinkAnchorExpression(), false); + this.writer.writeExpression("hyperlinkPageExpression", chart.getHyperlinkPageExpression(), false); + this.writer.writeExpression("hyperlinkTooltipExpression", chart.getHyperlinkTooltipExpression(), false); + writeHyperlinkParameters(chart.getHyperlinkParameters()); + this.writer.closeElement(); + } + + private void writeElementDataset(JRElementDataset dataset) throws IOException { + this.writer.startElement("dataset"); + this.writer.addAttribute("resetType", dataset.getResetType(), JRXmlConstants.getResetTypeMap(), (byte)1); + if (dataset.getResetType() == 4) + this.writer.addEncodedAttribute("resetGroup", dataset.getResetGroup().getName()); + this.writer.addAttribute("incrementType", dataset.getIncrementType(), JRXmlConstants.getResetTypeMap(), (byte)5); + if (dataset.getIncrementType() == 4) + this.writer.addEncodedAttribute("incrementGroup", dataset.getIncrementGroup().getName()); + this.writer.writeExpression("incrementWhenExpression", dataset.getIncrementWhenExpression(), false); + JRDatasetRun datasetRun = dataset.getDatasetRun(); + if (datasetRun != null) + writeDatasetRun(datasetRun); + this.writer.closeElement(true); + } + + private void writeCategoryDataSet(JRCategoryDataset dataset) throws IOException { + this.writer.startElement("categoryDataset"); + writeElementDataset((JRElementDataset)dataset); + JRCategorySeries[] categorySeries = dataset.getSeries(); + if (categorySeries != null && categorySeries.length > 0) + for (int i = 0; i < categorySeries.length; i++) + writeCategorySeries(categorySeries[i]); + this.writer.closeElement(); + } + + private void writeTimeSeriesDataset(JRTimeSeriesDataset dataset) throws IOException { + this.writer.startElement("timeSeriesDataset"); + if (dataset.getTimePeriod() != null && !Day.class.getName().equals(dataset.getTimePeriod().getName())) + this.writer.addAttribute("timePeriod", JRXmlConstants.getTimePeriodName(dataset.getTimePeriod())); + writeElementDataset((JRElementDataset)dataset); + JRTimeSeries[] timeSeries = dataset.getSeries(); + if (timeSeries != null && timeSeries.length > 0) + for (int i = 0; i < timeSeries.length; i++) + writeTimeSeries(timeSeries[i]); + this.writer.closeElement(); + } + + private void writeTimePeriodDataset(JRTimePeriodDataset dataset) throws IOException { + this.writer.startElement("timePeriodDataset"); + writeElementDataset((JRElementDataset)dataset); + JRTimePeriodSeries[] timePeriodSeries = dataset.getSeries(); + if (timePeriodSeries != null && timePeriodSeries.length > 0) + for (int i = 0; i < timePeriodSeries.length; i++) + writeTimePeriodSeries(timePeriodSeries[i]); + this.writer.closeElement(); + } + + private void writeCategorySeries(JRCategorySeries categorySeries) throws IOException { + this.writer.startElement("categorySeries"); + this.writer.writeExpression("seriesExpression", categorySeries.getSeriesExpression(), false); + this.writer.writeExpression("categoryExpression", categorySeries.getCategoryExpression(), false); + this.writer.writeExpression("valueExpression", categorySeries.getValueExpression(), false); + this.writer.writeExpression("labelExpression", categorySeries.getLabelExpression(), false); + writeHyperlink("itemHyperlink", categorySeries.getItemHyperlink()); + this.writer.closeElement(); + } + + private void writeXyzDataset(JRXyzDataset dataset) throws IOException { + this.writer.startElement("xyzDataset"); + writeElementDataset((JRElementDataset)dataset); + JRXyzSeries[] series = dataset.getSeries(); + if (series != null && series.length > 0) + for (int i = 0; i < series.length; i++) + writeXyzSeries(series[i]); + this.writer.closeElement(); + } + + private void writeXyzSeries(JRXyzSeries series) throws IOException { + this.writer.startElement("xyzSeries"); + this.writer.writeExpression("seriesExpression", series.getSeriesExpression(), false); + this.writer.writeExpression("xValueExpression", series.getXValueExpression(), false); + this.writer.writeExpression("yValueExpression", series.getYValueExpression(), false); + this.writer.writeExpression("zValueExpression", series.getZValueExpression(), false); + writeHyperlink("itemHyperlink", series.getItemHyperlink()); + this.writer.closeElement(); + } + + private void writeXySeries(JRXySeries xySeries) throws IOException { + this.writer.startElement("xySeries"); + this.writer.writeExpression("seriesExpression", xySeries.getSeriesExpression(), false); + this.writer.writeExpression("xValueExpression", xySeries.getXValueExpression(), false); + this.writer.writeExpression("yValueExpression", xySeries.getYValueExpression(), false); + this.writer.writeExpression("labelExpression", xySeries.getLabelExpression(), false); + writeHyperlink("itemHyperlink", xySeries.getItemHyperlink()); + this.writer.closeElement(); + } + + private void writeXyDataset(JRXyDataset dataset) throws IOException { + this.writer.startElement("xyDataset"); + writeElementDataset((JRElementDataset)dataset); + JRXySeries[] xySeries = dataset.getSeries(); + if (xySeries != null && xySeries.length > 0) + for (int i = 0; i < xySeries.length; i++) + writeXySeries(xySeries[i]); + this.writer.closeElement(); + } + + private void writeTimeSeries(JRTimeSeries timeSeries) throws IOException { + this.writer.startElement("timeSeries"); + this.writer.writeExpression("seriesExpression", timeSeries.getSeriesExpression(), false); + this.writer.writeExpression("timePeriodExpression", timeSeries.getTimePeriodExpression(), false); + this.writer.writeExpression("valueExpression", timeSeries.getValueExpression(), false); + this.writer.writeExpression("labelExpression", timeSeries.getLabelExpression(), false); + writeHyperlink("itemHyperlink", timeSeries.getItemHyperlink()); + this.writer.closeElement(); + } + + private void writeTimePeriodSeries(JRTimePeriodSeries timePeriodSeries) throws IOException { + this.writer.startElement("timePeriodSeries"); + this.writer.writeExpression("seriesExpression", timePeriodSeries.getSeriesExpression(), false); + this.writer.writeExpression("startDateExpression", timePeriodSeries.getStartDateExpression(), false); + this.writer.writeExpression("endDateExpression", timePeriodSeries.getEndDateExpression(), false); + this.writer.writeExpression("valueExpression", timePeriodSeries.getValueExpression(), false); + this.writer.writeExpression("labelExpression", timePeriodSeries.getLabelExpression(), false); + writeHyperlink("itemHyperlink", timePeriodSeries.getItemHyperlink()); + this.writer.closeElement(); + } + + public void writePieDataset(JRPieDataset dataset) throws IOException { + this.writer.startElement("pieDataset"); + writeElementDataset((JRElementDataset)dataset); + this.writer.writeExpression("keyExpression", dataset.getKeyExpression(), false); + this.writer.writeExpression("valueExpression", dataset.getValueExpression(), false); + this.writer.writeExpression("labelExpression", dataset.getLabelExpression(), false); + writeHyperlink("sectionHyperlink", dataset.getSectionHyperlink()); + this.writer.closeElement(); + } + + public void writeValueDataset(JRValueDataset dataset) throws IOException { + this.writer.startElement("valueDataset"); + writeElementDataset((JRElementDataset)dataset); + this.writer.writeExpression("valueExpression", dataset.getValueExpression(), false); + this.writer.closeElement(); + } + + public void writeValueDisplay(JRValueDisplay valueDisplay) throws IOException { + this.writer.startElement("valueDisplay"); + this.writer.addAttribute("color", valueDisplay.getColor()); + this.writer.addAttribute("mask", valueDisplay.getMask()); + writeFont(valueDisplay.getFont()); + this.writer.closeElement(); + } + + public void writeDataRange(JRDataRange dataRange) throws IOException { + this.writer.startElement("dataRange"); + this.writer.writeExpression("lowExpression", dataRange.getLowExpression(), false); + this.writer.writeExpression("highExpression", dataRange.getHighExpression(), false); + this.writer.closeElement(); + } + + private void writeMeterInterval(JRMeterInterval interval) throws IOException { + this.writer.startElement("meterInterval"); + this.writer.addAttribute("label", interval.getLabel()); + this.writer.addAttribute("color", interval.getBackgroundColor()); + this.writer.addAttribute("alpha", interval.getAlpha()); + writeDataRange(interval.getDataRange()); + this.writer.closeElement(); + } + + private void writeSeriesColors(SortedSet seriesColors) throws IOException { + if (seriesColors == null || seriesColors.size() == 0) + return; + JRChartPlot.JRSeriesColor[] colors = (JRChartPlot.JRSeriesColor[])seriesColors.toArray((Object[])new JRChartPlot.JRSeriesColor[0]); + for (int i = 0; i < colors.length; i++) { + this.writer.startElement("seriesColor"); + this.writer.addAttribute("seriesOrder", colors[i].getSeriesOrder()); + this.writer.addAttribute("color", colors[i].getColor()); + this.writer.closeElement(); + } + } + + private void writeChartAxis(JRChartAxis chartAxis) throws IOException { + this.writer.startElement("axis"); + this.writer.addAttribute("position", chartAxis.getPosition(), JRXmlConstants.getAxisPositionMap(), (byte)1); + writeChartTag(chartAxis.getChart()); + this.writer.closeElement(); + } + + private void writePlot(JRChartPlot plot) throws IOException { + this.writer.startElement("plot"); + this.writer.addAttribute("backcolor", plot.getOwnBackcolor()); + this.writer.addAttribute("orientation", plot.getOrientation(), JRXmlConstants.getPlotOrientationMap(), PlotOrientation.VERTICAL); + this.writer.addAttribute("backgroundAlpha", plot.getBackgroundAlpha(), 1.0F); + this.writer.addAttribute("foregroundAlpha", plot.getForegroundAlpha(), 1.0F); + this.writer.addAttribute("labelRotation", plot.getLabelRotation(), 0.0D); + writeSeriesColors(plot.getSeriesColors()); + this.writer.closeElement(); + } + + public void writePieChart(JRChart chart) throws IOException { + this.writer.startElement("pieChart"); + writeChart(chart); + writePieDataset((JRPieDataset)chart.getDataset()); + JRPiePlot plot = (JRPiePlot)chart.getPlot(); + this.writer.startElement("piePlot"); + this.writer.addAttribute("isCircular", plot.isCircular(), false); + writePlot(chart.getPlot()); + this.writer.closeElement(); + this.writer.closeElement(); + } + + public void writePie3DChart(JRChart chart) throws IOException { + this.writer.startElement("pie3DChart"); + writeChart(chart); + writePieDataset((JRPieDataset)chart.getDataset()); + JRPie3DPlot plot = (JRPie3DPlot)chart.getPlot(); + this.writer.startElement("pie3DPlot"); + this.writer.addAttribute("depthFactor", plot.getDepthFactor(), 0.2D); + this.writer.addAttribute("isCircular", plot.isCircular(), false); + writePlot(chart.getPlot()); + this.writer.closeElement(); + this.writer.closeElement(); + } + + public void writeAxisFormat(String axisFormatElementName, JRFont axisLabelFont, Color axisLabelColor, JRFont axisTickLabelFont, Color axisTickLabelColor, String axisTickLabelMask, Color axisLineColor) throws IOException { + if (axisLabelFont == null && axisLabelColor == null && axisTickLabelFont == null && axisTickLabelColor == null && axisLineColor == null) + return; + this.writer.startElement(axisFormatElementName); + this.writer.startElement("axisFormat"); + this.writer.addAttribute("labelColor", axisLabelColor); + this.writer.addAttribute("tickLabelColor", axisTickLabelColor); + this.writer.addAttribute("tickLabelMask", axisTickLabelMask); + this.writer.addAttribute("axisLineColor", axisLineColor); + if (axisLabelFont != null) { + this.writer.startElement("labelFont"); + writeFont(axisLabelFont); + this.writer.closeElement(); + } + if (axisTickLabelFont != null) { + this.writer.startElement("tickLabelFont"); + writeFont(axisTickLabelFont); + this.writer.closeElement(); + } + this.writer.closeElement(); + this.writer.closeElement(); + } + + private void writeBarPlot(JRBarPlot plot) throws IOException { + this.writer.startElement("barPlot"); + this.writer.addAttribute("isShowLabels", plot.isShowLabels(), false); + this.writer.addAttribute("isShowTickLabels", plot.isShowTickLabels(), true); + this.writer.addAttribute("isShowTickMarks", plot.isShowTickMarks(), true); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("categoryAxisLabelExpression", plot.getCategoryAxisLabelExpression(), false); + writeAxisFormat("categoryAxisFormat", plot.getCategoryAxisLabelFont(), plot.getOwnCategoryAxisLabelColor(), plot.getCategoryAxisTickLabelFont(), plot.getOwnCategoryAxisTickLabelColor(), plot.getCategoryAxisTickLabelMask(), plot.getOwnCategoryAxisLineColor()); + this.writer.writeExpression("valueAxisLabelExpression", plot.getValueAxisLabelExpression(), false); + writeAxisFormat("valueAxisFormat", plot.getValueAxisLabelFont(), plot.getOwnValueAxisLabelColor(), plot.getValueAxisTickLabelFont(), plot.getOwnValueAxisTickLabelColor(), plot.getValueAxisTickLabelMask(), plot.getOwnValueAxisLineColor()); + this.writer.closeElement(); + } + + private void writeBubblePlot(JRBubblePlot plot) throws IOException { + this.writer.startElement("bubblePlot"); + this.writer.addAttribute("scaleType", plot.getScaleType(), JRXmlConstants.getScaleTypeMap()); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("xAxisLabelExpression", plot.getXAxisLabelExpression(), false); + writeAxisFormat("xAxisFormat", plot.getXAxisLabelFont(), plot.getOwnXAxisLabelColor(), plot.getXAxisTickLabelFont(), plot.getOwnXAxisTickLabelColor(), plot.getXAxisTickLabelMask(), plot.getOwnXAxisLineColor()); + this.writer.writeExpression("yAxisLabelExpression", plot.getYAxisLabelExpression(), false); + writeAxisFormat("yAxisFormat", plot.getYAxisLabelFont(), plot.getOwnYAxisLabelColor(), plot.getYAxisTickLabelFont(), plot.getOwnYAxisTickLabelColor(), plot.getYAxisTickLabelMask(), plot.getOwnYAxisLineColor()); + this.writer.closeElement(); + } + + private void writeLinePlot(JRLinePlot plot) throws IOException { + this.writer.startElement("linePlot"); + this.writer.addAttribute("isShowLines", plot.isShowLines(), true); + this.writer.addAttribute("isShowShapes", plot.isShowShapes(), true); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("categoryAxisLabelExpression", plot.getCategoryAxisLabelExpression(), false); + writeAxisFormat("categoryAxisFormat", plot.getCategoryAxisLabelFont(), plot.getOwnCategoryAxisLabelColor(), plot.getCategoryAxisTickLabelFont(), plot.getOwnCategoryAxisTickLabelColor(), plot.getCategoryAxisTickLabelMask(), plot.getOwnCategoryAxisLineColor()); + this.writer.writeExpression("valueAxisLabelExpression", plot.getValueAxisLabelExpression(), false); + writeAxisFormat("valueAxisFormat", plot.getValueAxisLabelFont(), plot.getOwnValueAxisLabelColor(), plot.getValueAxisTickLabelFont(), plot.getOwnValueAxisTickLabelColor(), plot.getValueAxisTickLabelMask(), plot.getOwnValueAxisLineColor()); + this.writer.closeElement(); + } + + private void writeTimeSeriesPlot(JRTimeSeriesPlot plot) throws IOException { + this.writer.startElement("timeSeriesPlot"); + this.writer.addAttribute("isShowLines", plot.isShowLines(), true); + this.writer.addAttribute("isShowShapes", plot.isShowShapes(), true); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("timeAxisLabelExpression", plot.getTimeAxisLabelExpression(), false); + writeAxisFormat("timeAxisFormat", plot.getTimeAxisLabelFont(), plot.getOwnTimeAxisLabelColor(), plot.getTimeAxisTickLabelFont(), plot.getOwnTimeAxisTickLabelColor(), plot.getTimeAxisTickLabelMask(), plot.getOwnTimeAxisLineColor()); + this.writer.writeExpression("valueAxisLabelExpression", plot.getValueAxisLabelExpression(), false); + writeAxisFormat("valueAxisFormat", plot.getValueAxisLabelFont(), plot.getOwnValueAxisLabelColor(), plot.getValueAxisTickLabelFont(), plot.getOwnValueAxisTickLabelColor(), plot.getValueAxisTickLabelMask(), plot.getOwnValueAxisLineColor()); + this.writer.closeElement(); + } + + public void writeBar3DPlot(JRBar3DPlot plot) throws IOException { + this.writer.startElement("bar3DPlot"); + this.writer.addAttribute("isShowLabels", plot.isShowLabels(), false); + this.writer.addAttribute("xOffset", plot.getXOffset(), 12.0D); + this.writer.addAttribute("yOffset", plot.getYOffset(), 8.0D); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("categoryAxisLabelExpression", plot.getCategoryAxisLabelExpression(), false); + writeAxisFormat("categoryAxisFormat", plot.getCategoryAxisLabelFont(), plot.getOwnCategoryAxisLabelColor(), plot.getCategoryAxisTickLabelFont(), plot.getOwnCategoryAxisTickLabelColor(), plot.getCategoryAxisTickLabelMask(), plot.getOwnCategoryAxisLineColor()); + this.writer.writeExpression("valueAxisLabelExpression", plot.getValueAxisLabelExpression(), false); + writeAxisFormat("valueAxisFormat", plot.getValueAxisLabelFont(), plot.getOwnValueAxisLabelColor(), plot.getValueAxisTickLabelFont(), plot.getOwnValueAxisTickLabelColor(), plot.getValueAxisTickLabelMask(), plot.getOwnValueAxisLineColor()); + this.writer.closeElement(); + } + + public void writeBarChart(JRChart chart) throws IOException { + this.writer.startElement("barChart"); + writeChart(chart); + writeCategoryDataSet((JRCategoryDataset)chart.getDataset()); + writeBarPlot((JRBarPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeBar3DChart(JRChart chart) throws IOException { + this.writer.startElement("bar3DChart"); + writeChart(chart); + writeCategoryDataSet((JRCategoryDataset)chart.getDataset()); + writeBar3DPlot((JRBar3DPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeBubbleChart(JRChart chart) throws IOException { + this.writer.startElement("bubbleChart"); + writeChart(chart); + writeXyzDataset((JRXyzDataset)chart.getDataset()); + writeBubblePlot((JRBubblePlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeStackedBarChart(JRChart chart) throws IOException { + this.writer.startElement("stackedBarChart"); + writeChart(chart); + writeCategoryDataSet((JRCategoryDataset)chart.getDataset()); + writeBarPlot((JRBarPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeStackedBar3DChart(JRChart chart) throws IOException { + this.writer.startElement("stackedBar3DChart"); + writeChart(chart); + writeCategoryDataSet((JRCategoryDataset)chart.getDataset()); + writeBar3DPlot((JRBar3DPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeLineChart(JRChart chart) throws IOException { + this.writer.startElement("lineChart"); + writeChart(chart); + writeCategoryDataSet((JRCategoryDataset)chart.getDataset()); + writeLinePlot((JRLinePlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeTimeSeriesChart(JRChart chart) throws IOException { + this.writer.startElement("timeSeriesChart"); + writeChart(chart); + writeTimeSeriesDataset((JRTimeSeriesDataset)chart.getDataset()); + writeTimeSeriesPlot((JRTimeSeriesPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeHighLowDataset(JRHighLowDataset dataset) throws IOException { + this.writer.startElement("highLowDataset"); + writeElementDataset((JRElementDataset)dataset); + this.writer.writeExpression("seriesExpression", dataset.getSeriesExpression(), false); + this.writer.writeExpression("dateExpression", dataset.getDateExpression(), false); + this.writer.writeExpression("highExpression", dataset.getHighExpression(), false); + this.writer.writeExpression("lowExpression", dataset.getLowExpression(), false); + this.writer.writeExpression("openExpression", dataset.getOpenExpression(), false); + this.writer.writeExpression("closeExpression", dataset.getCloseExpression(), false); + this.writer.writeExpression("volumeExpression", dataset.getVolumeExpression(), false); + writeHyperlink("itemHyperlink", dataset.getItemHyperlink()); + this.writer.closeElement(); + } + + public void writeHighLowChart(JRChart chart) throws IOException { + this.writer.startElement("highLowChart"); + writeChart(chart); + writeHighLowDataset((JRHighLowDataset)chart.getDataset()); + JRHighLowPlot plot = (JRHighLowPlot)chart.getPlot(); + this.writer.startElement("highLowPlot"); + this.writer.addAttribute("isShowOpenTicks", plot.isShowOpenTicks(), true); + this.writer.addAttribute("isShowCloseTicks", plot.isShowCloseTicks(), true); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("timeAxisLabelExpression", plot.getTimeAxisLabelExpression(), false); + writeAxisFormat("timeAxisFormat", plot.getTimeAxisLabelFont(), plot.getOwnTimeAxisLabelColor(), plot.getTimeAxisTickLabelFont(), plot.getOwnTimeAxisTickLabelColor(), plot.getTimeAxisTickLabelMask(), plot.getOwnTimeAxisLineColor()); + this.writer.writeExpression("valueAxisLabelExpression", plot.getValueAxisLabelExpression(), false); + writeAxisFormat("valueAxisFormat", plot.getValueAxisLabelFont(), plot.getOwnValueAxisLabelColor(), plot.getValueAxisTickLabelFont(), plot.getOwnValueAxisTickLabelColor(), plot.getValueAxisTickLabelMask(), plot.getOwnValueAxisLineColor()); + this.writer.closeElement(); + this.writer.closeElement(); + } + + public void writeCandlestickChart(JRChart chart) throws IOException { + this.writer.startElement("candlestickChart"); + writeChart(chart); + writeHighLowDataset((JRHighLowDataset)chart.getDataset()); + JRCandlestickPlot plot = (JRCandlestickPlot)chart.getPlot(); + this.writer.startElement("candlestickPlot"); + this.writer.addAttribute("isShowVolume", plot.isShowVolume(), true); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("timeAxisLabelExpression", plot.getTimeAxisLabelExpression(), false); + writeAxisFormat("timeAxisFormat", plot.getTimeAxisLabelFont(), plot.getOwnTimeAxisLabelColor(), plot.getTimeAxisTickLabelFont(), plot.getOwnTimeAxisTickLabelColor(), plot.getTimeAxisTickLabelMask(), plot.getOwnTimeAxisLineColor()); + this.writer.writeExpression("valueAxisLabelExpression", plot.getValueAxisLabelExpression(), false); + writeAxisFormat("valueAxisFormat", plot.getValueAxisLabelFont(), plot.getOwnValueAxisLabelColor(), plot.getValueAxisTickLabelFont(), plot.getOwnValueAxisTickLabelColor(), plot.getValueAxisTickLabelMask(), plot.getOwnValueAxisLineColor()); + this.writer.closeElement(); + this.writer.closeElement(); + } + + private void writeAreaPlot(JRAreaPlot plot) throws IOException { + this.writer.startElement("areaPlot"); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("categoryAxisLabelExpression", plot.getCategoryAxisLabelExpression(), false); + writeAxisFormat("categoryAxisFormat", plot.getCategoryAxisLabelFont(), plot.getOwnCategoryAxisLabelColor(), plot.getCategoryAxisTickLabelFont(), plot.getOwnCategoryAxisTickLabelColor(), plot.getCategoryAxisTickLabelMask(), plot.getOwnCategoryAxisLineColor()); + this.writer.writeExpression("valueAxisLabelExpression", plot.getValueAxisLabelExpression(), false); + writeAxisFormat("valueAxisFormat", plot.getValueAxisLabelFont(), plot.getOwnValueAxisLabelColor(), plot.getValueAxisTickLabelFont(), plot.getOwnValueAxisTickLabelColor(), plot.getValueAxisTickLabelMask(), plot.getOwnValueAxisLineColor()); + this.writer.closeElement(); + } + + public void writeAreaChart(JRChart chart) throws IOException { + this.writer.startElement("areaChart"); + writeChart(chart); + writeCategoryDataSet((JRCategoryDataset)chart.getDataset()); + writeAreaPlot((JRAreaPlot)chart.getPlot()); + this.writer.closeElement(); + } + + private void writeScatterPlot(JRScatterPlot plot) throws IOException { + this.writer.startElement("scatterPlot"); + this.writer.addAttribute("isShowLines", plot.isShowLines(), true); + this.writer.addAttribute("isShowShapes", plot.isShowShapes(), true); + writePlot((JRChartPlot)plot); + this.writer.writeExpression("xAxisLabelExpression", plot.getXAxisLabelExpression(), false); + writeAxisFormat("xAxisFormat", plot.getXAxisLabelFont(), plot.getOwnXAxisLabelColor(), plot.getXAxisTickLabelFont(), plot.getOwnXAxisTickLabelColor(), plot.getXAxisTickLabelMask(), plot.getOwnXAxisLineColor()); + this.writer.writeExpression("yAxisLabelExpression", plot.getYAxisLabelExpression(), false); + writeAxisFormat("yAxisFormat", plot.getYAxisLabelFont(), plot.getOwnYAxisLabelColor(), plot.getYAxisTickLabelFont(), plot.getOwnYAxisTickLabelColor(), plot.getYAxisTickLabelMask(), plot.getOwnYAxisLineColor()); + this.writer.closeElement(); + } + + public void writeScatterChart(JRChart chart) throws IOException { + this.writer.startElement("scatterChart"); + writeChart(chart); + writeXyDataset((JRXyDataset)chart.getDataset()); + writeScatterPlot((JRScatterPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeXyAreaChart(JRChart chart) throws IOException { + this.writer.startElement("xyAreaChart"); + writeChart(chart); + writeXyDataset((JRXyDataset)chart.getDataset()); + writeAreaPlot((JRAreaPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeXyBarChart(JRChart chart) throws IOException { + this.writer.startElement("xyBarChart"); + writeChart(chart); + JRChartDataset dataset = chart.getDataset(); + if (dataset.getDatasetType() == 6) { + writeTimeSeriesDataset((JRTimeSeriesDataset)dataset); + } else if (dataset.getDatasetType() == 5) { + writeTimePeriodDataset((JRTimePeriodDataset)dataset); + } else if (dataset.getDatasetType() == 3) { + writeXyDataset((JRXyDataset)dataset); + } + writeBarPlot((JRBarPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeXyLineChart(JRChart chart) throws IOException { + this.writer.startElement("xyLineChart"); + writeChart(chart); + writeXyDataset((JRXyDataset)chart.getDataset()); + writeLinePlot((JRLinePlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeMeterChart(JRChart chart) throws IOException { + this.writer.startElement("meterChart"); + writeChart(chart); + writeValueDataset((JRValueDataset)chart.getDataset()); + JRMeterPlot plot = (JRMeterPlot)chart.getPlot(); + this.writer.startElement("meterPlot"); + this.writer.addAttribute("shape", plot.getShape(), JRXmlConstants.getMeterShapeMap(), (byte)2); + this.writer.addAttribute("angle", plot.getMeterAngle()); + this.writer.addAttribute("units", plot.getUnits()); + this.writer.addAttribute("tickInterval", plot.getTickInterval()); + this.writer.addAttribute("meterColor", plot.getMeterBackgroundColor()); + this.writer.addAttribute("needleColor", plot.getNeedleColor()); + this.writer.addAttribute("tickColor", plot.getTickColor()); + writePlot(chart.getPlot()); + writeValueDisplay(plot.getValueDisplay()); + writeDataRange(plot.getDataRange()); + List intervals = plot.getIntervals(); + if (intervals != null) { + Iterator iter = intervals.iterator(); + while (iter.hasNext()) { + JRMeterInterval meterInterval = iter.next(); + writeMeterInterval(meterInterval); + } + } + this.writer.closeElement(); + this.writer.closeElement(); + } + + public void writeThermometerChart(JRChart chart) throws IOException { + this.writer.startElement("thermometerChart"); + writeChart(chart); + writeValueDataset((JRValueDataset)chart.getDataset()); + JRThermometerPlot plot = (JRThermometerPlot)chart.getPlot(); + this.writer.startElement("thermometerPlot"); + this.writer.addAttribute("valueLocation", plot.getValueLocation(), JRXmlConstants.getThermometerValueLocationMap(), (byte)3); + this.writer.addAttribute("isShowValueLines", plot.isShowValueLines()); + this.writer.addAttribute("mercuryColor", plot.getMercuryColor()); + writePlot(chart.getPlot()); + writeValueDisplay(plot.getValueDisplay()); + writeDataRange(plot.getDataRange()); + if (plot.getLowRange() != null) { + this.writer.startElement("lowRange"); + writeDataRange(plot.getLowRange()); + this.writer.closeElement(); + } + if (plot.getMediumRange() != null) { + this.writer.startElement("mediumRange"); + writeDataRange(plot.getMediumRange()); + this.writer.closeElement(); + } + if (plot.getHighRange() != null) { + this.writer.startElement("highRange"); + writeDataRange(plot.getHighRange()); + this.writer.closeElement(); + } + this.writer.closeElement(); + this.writer.closeElement(); + } + + public void writeMultiAxisChart(JRChart chart) throws IOException { + this.writer.startElement("multiAxisChart"); + writeChart(chart); + JRMultiAxisPlot plot = (JRMultiAxisPlot)chart.getPlot(); + this.writer.startElement("multiAxisPlot"); + writePlot(chart.getPlot()); + List axes = plot.getAxes(); + if (axes != null) { + Iterator iter = axes.iterator(); + while (iter.hasNext()) { + JRChartAxis chartAxis = iter.next(); + writeChartAxis(chartAxis); + } + } + this.writer.closeElement(); + this.writer.closeElement(); + } + + public void writeStackedAreaChart(JRChart chart) throws IOException { + this.writer.startElement("stackedAreaChart"); + writeChart(chart); + writeCategoryDataSet((JRCategoryDataset)chart.getDataset()); + writeAreaPlot((JRAreaPlot)chart.getPlot()); + this.writer.closeElement(); + } + + public void writeChartTag(JRChart chart) throws IOException { + switch (chart.getChartType()) { + case 1: + writeAreaChart(chart); + return; + case 3: + writeBarChart(chart); + return; + case 2: + writeBar3DChart(chart); + return; + case 4: + writeBubbleChart(chart); + return; + case 5: + writeCandlestickChart(chart); + return; + case 6: + writeHighLowChart(chart); + return; + case 7: + writeLineChart(chart); + return; + case 17: + writeMeterChart(chart); + return; + case 19: + writeMultiAxisChart(chart); + return; + case 9: + writePieChart(chart); + return; + case 8: + writePie3DChart(chart); + return; + case 10: + writeScatterChart(chart); + return; + case 12: + writeStackedBarChart(chart); + return; + case 11: + writeStackedBar3DChart(chart); + return; + case 18: + writeThermometerChart(chart); + return; + case 16: + writeTimeSeriesChart(chart); + return; + case 13: + writeXyAreaChart(chart); + return; + case 14: + writeXyBarChart(chart); + return; + case 15: + writeXyLineChart(chart); + return; + case 20: + writeStackedAreaChart(chart); + return; + } + throw new JRRuntimeException("Chart type not supported."); + } + + private void writeSubreportReturnValue(JRSubreportReturnValue returnValue) throws IOException { + this.writer.startElement("returnValue"); + this.writer.addEncodedAttribute("subreportVariable", returnValue.getSubreportVariable()); + this.writer.addEncodedAttribute("toVariable", returnValue.getToVariable()); + this.writer.addAttribute("calculation", returnValue.getCalculation(), JRXmlConstants.getCalculationMap(), (byte)0); + this.writer.addAttribute("incrementerFactoryClass", returnValue.getIncrementerFactoryClassName()); + this.writer.closeElement(); + } + + public void writeCrosstab(JRCrosstab crosstab) throws IOException { + this.writer.startElement("crosstab"); + this.writer.addAttribute("isRepeatColumnHeaders", crosstab.isRepeatColumnHeaders(), true); + this.writer.addAttribute("isRepeatRowHeaders", crosstab.isRepeatRowHeaders(), true); + this.writer.addAttribute("columnBreakOffset", crosstab.getColumnBreakOffset(), 10); + this.writer.addAttribute("runDirection", crosstab.getRunDirection(), JRXmlConstants.getRunDirectionMap(), (byte)0); + writeReportElement((JRElement)crosstab); + JRCrosstabParameter[] parameters = crosstab.getParameters(); + if (parameters != null) + for (int m = 0; m < parameters.length; m++) { + if (!parameters[m].isSystemDefined()) + writeCrosstabParameter(parameters[m]); + } + this.writer.writeExpression("parametersMapExpression", crosstab.getParametersMapExpression(), false); + writeCrosstabDataset(crosstab); + writeCrosstabHeaderCell(crosstab); + JRCrosstabRowGroup[] rowGroups = crosstab.getRowGroups(); + for (int i = 0; i < rowGroups.length; i++) + writeCrosstabRowGroup(rowGroups[i]); + JRCrosstabColumnGroup[] columnGroups = crosstab.getColumnGroups(); + for (int j = 0; j < columnGroups.length; j++) + writeCrosstabColumnGroup(columnGroups[j]); + JRCrosstabMeasure[] measures = crosstab.getMeasures(); + for (int k = 0; k < measures.length; k++) + writeCrosstabMeasure(measures[k]); + if (crosstab instanceof JRDesignCrosstab) { + List cellsList = ((JRDesignCrosstab)crosstab).getCellsList(); + for (Iterator it = cellsList.iterator(); it.hasNext(); ) { + JRCrosstabCell cell = it.next(); + writeCrosstabCell(cell); + } + } else { + JRCrosstabCell[][] cells = crosstab.getCells(); + Set cellsSet = new HashSet(); + for (int m = cells.length - 1; m >= 0; m--) { + for (int n = (cells[m]).length - 1; n >= 0; n--) { + JRCrosstabCell cell = cells[m][n]; + if (cell != null && cellsSet.add(cell)) + writeCrosstabCell(cell); + } + } + } + writeCrosstabWhenNoDataCell(crosstab); + this.writer.closeElement(); + } + + private void writeCrosstabDataset(JRCrosstab crosstab) throws IOException { + JRCrosstabDataset dataset = crosstab.getDataset(); + this.writer.startElement("crosstabDataset"); + this.writer.addAttribute("isDataPreSorted", dataset.isDataPreSorted(), false); + writeElementDataset((JRElementDataset)dataset); + this.writer.closeElement(true); + } + + private void writeCrosstabWhenNoDataCell(JRCrosstab crosstab) throws IOException { + JRCellContents whenNoDataCell = crosstab.getWhenNoDataCell(); + if (whenNoDataCell != null) { + this.writer.startElement("whenNoDataCell"); + writeCellContents(whenNoDataCell); + this.writer.closeElement(); + } + } + + private void writeCrosstabHeaderCell(JRCrosstab crosstab) throws IOException { + JRCellContents headerCell = crosstab.getHeaderCell(); + if (headerCell != null) { + this.writer.startElement("crosstabHeaderCell"); + writeCellContents(headerCell); + this.writer.closeElement(); + } + } + + protected void writeCrosstabRowGroup(JRCrosstabRowGroup group) throws IOException { + this.writer.startElement("rowGroup"); + this.writer.addEncodedAttribute("name", group.getName()); + this.writer.addAttribute("width", group.getWidth()); + this.writer.addAttribute("totalPosition", group.getTotalPosition(), JRXmlConstants.getCrosstabTotalPositionMap(), (byte)0); + this.writer.addAttribute("headerPosition", group.getPosition(), JRXmlConstants.getCrosstabRowPositionMap(), (byte)1); + writeBucket(group.getBucket()); + JRCellContents header = group.getHeader(); + this.writer.startElement("crosstabRowHeader"); + writeCellContents(header); + this.writer.closeElement(); + JRCellContents totalHeader = group.getTotalHeader(); + this.writer.startElement("crosstabTotalRowHeader"); + writeCellContents(totalHeader); + this.writer.closeElement(); + this.writer.closeElement(); + } + + protected void writeCrosstabColumnGroup(JRCrosstabColumnGroup group) throws IOException { + this.writer.startElement("columnGroup"); + this.writer.addEncodedAttribute("name", group.getName()); + this.writer.addAttribute("height", group.getHeight()); + this.writer.addAttribute("totalPosition", group.getTotalPosition(), JRXmlConstants.getCrosstabTotalPositionMap(), (byte)0); + this.writer.addAttribute("headerPosition", group.getPosition(), JRXmlConstants.getCrosstabColumnPositionMap(), (byte)1); + writeBucket(group.getBucket()); + JRCellContents header = group.getHeader(); + this.writer.startElement("crosstabColumnHeader"); + writeCellContents(header); + this.writer.closeElement(); + JRCellContents totalHeader = group.getTotalHeader(); + this.writer.startElement("crosstabTotalColumnHeader"); + writeCellContents(totalHeader); + this.writer.closeElement(); + this.writer.closeElement(); + } + + protected void writeBucket(JRCrosstabBucket bucket) throws IOException { + this.writer.startElement("bucket"); + this.writer.addAttribute("order", bucket.getOrder(), JRXmlConstants.getCrosstabBucketOrderMap(), (byte)1); + this.writer.writeExpression("bucketExpression", bucket.getExpression(), true); + this.writer.writeExpression("comparatorExpression", bucket.getComparatorExpression(), false); + this.writer.closeElement(); + } + + protected void writeCrosstabMeasure(JRCrosstabMeasure measure) throws IOException { + this.writer.startElement("measure"); + this.writer.addEncodedAttribute("name", measure.getName()); + this.writer.addAttribute("class", measure.getValueClassName()); + this.writer.addAttribute("calculation", measure.getCalculation(), JRXmlConstants.getCalculationMap(), (byte)0); + this.writer.addAttribute("percentageOf", measure.getPercentageOfType(), JRXmlConstants.getCrosstabPercentageMap(), (byte)0); + this.writer.addAttribute("percentageCalculatorClass", measure.getPercentageCalculatorClassName()); + this.writer.writeExpression("measureExpression", measure.getValueExpression(), false); + this.writer.closeElement(); + } + + protected void writeCrosstabCell(JRCrosstabCell cell) throws IOException { + this.writer.startElement("crosstabCell"); + this.writer.addAttribute("width", cell.getWidth()); + this.writer.addAttribute("height", cell.getHeight()); + this.writer.addEncodedAttribute("rowTotalGroup", cell.getRowTotalGroup()); + this.writer.addEncodedAttribute("columnTotalGroup", cell.getColumnTotalGroup()); + writeCellContents(cell.getContents()); + this.writer.closeElement(); + } + + protected void writeCellContents(JRCellContents contents) throws IOException { + if (contents != null) { + this.writer.startElement("cellContents"); + this.writer.addAttribute("backcolor", contents.getBackcolor()); + this.writer.addAttribute("mode", contents.getMode(), JRXmlConstants.getModeMap()); + writeStyleReferenceAttr((JRStyleContainer)contents); + writeBox(contents.getLineBox()); + List children = contents.getChildren(); + if (children != null) + for (Iterator it = children.iterator(); it.hasNext();) + ((JRChild)it.next()).visit(this.xmlWriterVisitor); + this.writer.closeElement(); + } + } + + protected void writeCrosstabParameter(JRCrosstabParameter parameter) throws IOException { + this.writer.startElement("crosstabParameter"); + this.writer.addEncodedAttribute("name", parameter.getName()); + this.writer.addAttribute("class", parameter.getValueClassName(), "java.lang.String"); + this.writer.writeExpression("parameterValueExpression", parameter.getExpression(), false); + this.writer.closeElement(); + } + + public void writeDataset(JRDataset dataset) throws IOException { + this.writer.startElement("subDataset"); + this.writer.addEncodedAttribute("name", dataset.getName()); + this.writer.addAttribute("scriptletClass", dataset.getScriptletClass()); + this.writer.addEncodedAttribute("resourceBundle", dataset.getResourceBundle()); + this.writer.addAttribute("whenResourceMissingType", dataset.getWhenResourceMissingType(), JRXmlConstants.getWhenResourceMissingTypeMap(), (byte)1); + writeProperties((JRPropertiesHolder)dataset); + writeDatasetContents(dataset); + this.writer.closeElement(); + } + + protected void writeDatasetContents(JRDataset dataset) throws IOException { + JRParameter[] parameters = dataset.getParameters(); + if (parameters != null && parameters.length > 0) + for (int i = 0; i < parameters.length; i++) { + if (!parameters[i].isSystemDefined()) + writeParameter(parameters[i]); + } + if (dataset.getQuery() != null) + writeQuery(dataset.getQuery()); + JRField[] fields = dataset.getFields(); + if (fields != null && fields.length > 0) + for (int i = 0; i < fields.length; i++) + writeField(fields[i]); + JRSortField[] sortFields = dataset.getSortFields(); + if (sortFields != null && sortFields.length > 0) + for (int i = 0; i < sortFields.length; i++) + writeSortField(sortFields[i]); + JRVariable[] variables = dataset.getVariables(); + if (variables != null && variables.length > 0) + for (int i = 0; i < variables.length; i++) { + if (!variables[i].isSystemDefined()) + writeVariable(variables[i]); + } + this.writer.writeExpression("filterExpression", dataset.getFilterExpression(), false); + JRGroup[] groups = dataset.getGroups(); + if (groups != null && groups.length > 0) + for (int i = 0; i < groups.length; i++) + writeGroup(groups[i]); + } + + protected void writeDatasetRun(JRDatasetRun datasetRun) throws IOException { + this.writer.startElement("datasetRun"); + this.writer.addEncodedAttribute("subDataset", datasetRun.getDatasetName()); + this.writer.writeExpression("parametersMapExpression", datasetRun.getParametersMapExpression(), false); + JRDatasetParameter[] parameters = datasetRun.getParameters(); + if (parameters != null && parameters.length > 0) + for (int i = 0; i < parameters.length; i++) + writeDatasetParameter(parameters[i]); + this.writer.writeExpression("connectionExpression", datasetRun.getConnectionExpression(), false); + this.writer.writeExpression("dataSourceExpression", datasetRun.getDataSourceExpression(), false); + this.writer.closeElement(); + } + + public void writeFrame(JRFrame frame) throws IOException { + this.writer.startElement("frame"); + writeReportElement((JRElement)frame); + writeBox(frame.getLineBox()); + List children = frame.getChildren(); + if (children != null) + for (Iterator it = children.iterator(); it.hasNext();) + ((JRChild)it.next()).visit(this.xmlWriterVisitor); + this.writer.closeElement(); + } + + protected void writeHyperlinkParameters(JRHyperlinkParameter[] parameters) throws IOException { + if (parameters != null) + for (int i = 0; i < parameters.length; i++) { + JRHyperlinkParameter parameter = parameters[i]; + writeHyperlinkParameter(parameter); + } + } + + protected void writeHyperlinkParameter(JRHyperlinkParameter parameter) throws IOException { + if (parameter != null) { + this.writer.startElement("hyperlinkParameter"); + this.writer.addEncodedAttribute("name", parameter.getName()); + this.writer.writeExpression("hyperlinkParameterExpression", parameter.getValueExpression(), true, String.class.getName()); + this.writer.closeElement(); + } + } + + protected void writeHyperlink(String tagName, JRHyperlink hyperlink) throws IOException { + if (hyperlink != null) { + this.writer.startElement(tagName); + this.writer.addEncodedAttribute("hyperlinkType", hyperlink.getLinkType()); + this.writer.addAttribute("hyperlinkTarget", hyperlink.getHyperlinkTarget(), JRXmlConstants.getHyperlinkTargetMap(), (byte)1); + this.writer.writeExpression("hyperlinkReferenceExpression", hyperlink.getHyperlinkReferenceExpression(), false); + this.writer.writeExpression("hyperlinkAnchorExpression", hyperlink.getHyperlinkAnchorExpression(), false); + this.writer.writeExpression("hyperlinkPageExpression", hyperlink.getHyperlinkPageExpression(), false); + this.writer.writeExpression("hyperlinkTooltipExpression", hyperlink.getHyperlinkTooltipExpression(), false); + writeHyperlinkParameters(hyperlink.getHyperlinkParameters()); + this.writer.closeElement(); + } + } + + protected boolean toWriteConditionalStyles() { + return true; + } +} diff --git a/hrmsEjb/net/sf/jasperreports/engine/xml/XmlWriterVisitor.java b/hrmsEjb/net/sf/jasperreports/engine/xml/XmlWriterVisitor.java new file mode 100644 index 0000000..6fa89c6 --- /dev/null +++ b/hrmsEjb/net/sf/jasperreports/engine/xml/XmlWriterVisitor.java @@ -0,0 +1,121 @@ +package net.sf.jasperreports.engine.xml; + +import java.io.IOException; +import net.sf.jasperreports.crosstabs.JRCrosstab; +import net.sf.jasperreports.engine.JRBreak; +import net.sf.jasperreports.engine.JRChart; +import net.sf.jasperreports.engine.JRElementGroup; +import net.sf.jasperreports.engine.JREllipse; +import net.sf.jasperreports.engine.JRFrame; +import net.sf.jasperreports.engine.JRImage; +import net.sf.jasperreports.engine.JRLine; +import net.sf.jasperreports.engine.JRRectangle; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JRStaticText; +import net.sf.jasperreports.engine.JRSubreport; +import net.sf.jasperreports.engine.JRTextField; +import net.sf.jasperreports.engine.JRVisitor; + +public class XmlWriterVisitor implements JRVisitor { + private JRXmlWriter xmlWriter = null; + + public XmlWriterVisitor(JRXmlWriter xmlWriter) { + this.xmlWriter = xmlWriter; + } + + public void visitBreak(JRBreak breakElement) { + try { + this.xmlWriter.writeBreak(breakElement); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitChart(JRChart chart) { + try { + this.xmlWriter.writeChartTag(chart); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitCrosstab(JRCrosstab crosstab) { + try { + this.xmlWriter.writeCrosstab(crosstab); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitElementGroup(JRElementGroup elementGroup) { + try { + this.xmlWriter.writeElementGroup(elementGroup); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitEllipse(JREllipse ellipse) { + try { + this.xmlWriter.writeEllipse(ellipse); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitFrame(JRFrame frame) { + try { + this.xmlWriter.writeFrame(frame); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitImage(JRImage image) { + try { + this.xmlWriter.writeImage(image); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitLine(JRLine line) { + try { + this.xmlWriter.writeLine(line); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitRectangle(JRRectangle rectangle) { + try { + this.xmlWriter.writeRectangle(rectangle); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitStaticText(JRStaticText staticText) { + try { + this.xmlWriter.writeStaticText(staticText); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitSubreport(JRSubreport subreport) { + try { + this.xmlWriter.writeSubreport(subreport); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } + + public void visitTextField(JRTextField textField) { + try { + this.xmlWriter.writeTextField(textField); + } catch (IOException e) { + throw new JRRuntimeException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/BeanUtils.java b/hrmsEjb/org/apache/commons/beanutils/BeanUtils.java new file mode 100644 index 0000000..4431c30 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/BeanUtils.java @@ -0,0 +1,445 @@ +package org.apache.commons.beanutils; + +import java.beans.IndexedPropertyDescriptor; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Array; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import org.apache.commons.collections.FastHashMap; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class BeanUtils { + private static FastHashMap dummy = new FastHashMap(); + + private static Log log = LogFactory.getLog(BeanUtils.class); + + private static int debug = 0; + + public static int getDebug() { + return debug; + } + + public static void setDebug(int newDebug) { + debug = newDebug; + } + + public static Object cloneBean(Object bean) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { + if (log.isDebugEnabled()) + log.debug("Cloning bean: " + bean.getClass().getName()); + Class clazz = bean.getClass(); + Object newBean = clazz.newInstance(); + PropertyUtils.copyProperties(newBean, bean); + return newBean; + } + + public static void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException { + if (dest == null) + throw new IllegalArgumentException("No destination bean specified"); + if (orig == null) + throw new IllegalArgumentException("No origin bean specified"); + if (log.isDebugEnabled()) + log.debug("BeanUtils.copyProperties(" + dest + ", " + orig + ")"); + if (orig instanceof DynaBean) { + DynaProperty[] origDescriptors = ((DynaBean)orig).getDynaClass().getDynaProperties(); + for (int i = 0; i < origDescriptors.length; i++) { + String name = origDescriptors[i].getName(); + if (PropertyUtils.isWriteable(dest, name)) { + Object value = ((DynaBean)orig).get(name); + copyProperty(dest, name, value); + } + } + } else if (orig instanceof Map) { + Iterator names = ((Map)orig).keySet().iterator(); + while (names.hasNext()) { + String name = names.next(); + if (PropertyUtils.isWriteable(dest, name)) { + Object value = ((Map)orig).get(name); + copyProperty(dest, name, value); + } + } + } else { + PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(orig); + for (int i = 0; i < origDescriptors.length; i++) { + String name = origDescriptors[i].getName(); + if (!"class".equals(name)) + if (PropertyUtils.isReadable(orig, name) && PropertyUtils.isWriteable(dest, name)) + try { + Object value = PropertyUtils.getSimpleProperty(orig, name); + copyProperty(dest, name, value); + } catch (NoSuchMethodException e) {} + } + } + } + + public static void copyProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException { + if (log.isTraceEnabled()) { + StringBuffer sb = new StringBuffer(" copyProperty("); + sb.append(bean); + sb.append(", "); + sb.append(name); + sb.append(", "); + if (value == null) { + sb.append(""); + } else if (value instanceof String) { + sb.append((String)value); + } else if (value instanceof String[]) { + String[] values = (String[])value; + sb.append('['); + for (int k = 0; k < values.length; k++) { + if (k > 0) + sb.append(','); + sb.append(values[k]); + } + sb.append(']'); + } else { + sb.append(value.toString()); + } + sb.append(')'); + log.trace(sb.toString()); + } + Object target = bean; + int delim = name.lastIndexOf('.'); + if (delim >= 0) { + try { + target = PropertyUtils.getProperty(bean, name.substring(0, delim)); + } catch (NoSuchMethodException e) { + return; + } + name = name.substring(delim + 1); + if (log.isTraceEnabled()) { + log.trace(" Target bean = " + target); + log.trace(" Target name = " + name); + } + } + String propName = null; + Class type = null; + int index = -1; + String key = null; + propName = name; + int i = propName.indexOf('['); + if (i >= 0) { + int k = propName.indexOf(']'); + try { + index = Integer.parseInt(propName.substring(i + 1, k)); + } catch (NumberFormatException e) {} + propName = propName.substring(0, i); + } + int j = propName.indexOf('('); + if (j >= 0) { + int k = propName.indexOf(')'); + try { + key = propName.substring(j + 1, k); + } catch (IndexOutOfBoundsException e) {} + propName = propName.substring(0, j); + } + if (target instanceof DynaBean) { + DynaClass dynaClass = ((DynaBean)target).getDynaClass(); + DynaProperty dynaProperty = dynaClass.getDynaProperty(propName); + if (dynaProperty == null) + return; + type = dynaProperty.getType(); + } else { + PropertyDescriptor descriptor = null; + try { + descriptor = PropertyUtils.getPropertyDescriptor(target, name); + if (descriptor == null) + return; + } catch (NoSuchMethodException e) { + return; + } + type = descriptor.getPropertyType(); + if (type == null) { + if (log.isTraceEnabled()) + log.trace(" target type for property '" + propName + "' is null, so skipping ths setter"); + return; + } + } + if (log.isTraceEnabled()) + log.trace(" target propName=" + propName + ", type=" + type + ", index=" + index + ", key=" + key); + if (index >= 0) { + Converter converter = ConvertUtils.lookup(type.getComponentType()); + if (converter != null) { + log.trace(" USING CONVERTER " + converter); + value = converter.convert(type, value); + } + try { + PropertyUtils.setIndexedProperty(target, propName, index, value); + } catch (NoSuchMethodException e) { + throw new InvocationTargetException(e, "Cannot set " + propName); + } + } else if (key != null) { + try { + PropertyUtils.setMappedProperty(target, propName, key, value); + } catch (NoSuchMethodException e) { + throw new InvocationTargetException(e, "Cannot set " + propName); + } + } else { + Converter converter = ConvertUtils.lookup(type); + if (converter != null) { + log.trace(" USING CONVERTER " + converter); + value = converter.convert(type, value); + } + try { + PropertyUtils.setSimpleProperty(target, propName, value); + } catch (NoSuchMethodException e) { + throw new InvocationTargetException(e, "Cannot set " + propName); + } + } + } + + public static Map describe(Object bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + return new HashMap(); + if (log.isDebugEnabled()) + log.debug("Describing bean: " + bean.getClass().getName()); + Map description = new HashMap(); + if (bean instanceof DynaBean) { + DynaProperty[] descriptors = ((DynaBean)bean).getDynaClass().getDynaProperties(); + for (int i = 0; i < descriptors.length; i++) { + String name = descriptors[i].getName(); + description.put(name, getProperty(bean, name)); + } + } else { + PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(bean); + for (int i = 0; i < descriptors.length; i++) { + String name = descriptors[i].getName(); + if (descriptors[i].getReadMethod() != null) + description.put(name, getProperty(bean, name)); + } + } + return description; + } + + public static String[] getArrayProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Object value = PropertyUtils.getProperty(bean, name); + if (value == null) + return null; + if (value instanceof Collection) { + ArrayList values = new ArrayList(); + Iterator items = ((Collection)value).iterator(); + while (items.hasNext()) { + Object item = items.next(); + if (item == null) { + values.add((String)null); + continue; + } + values.add(item.toString()); + } + return values.toArray(new String[values.size()]); + } + if (value.getClass().isArray()) { + int n = Array.getLength(value); + String[] arrayOfString = new String[n]; + for (int i = 0; i < n; i++) { + Object item = Array.get(value, i); + if (item == null) { + arrayOfString[i] = null; + } else { + arrayOfString[i] = item.toString(); + } + } + return arrayOfString; + } + String[] results = new String[1]; + results[0] = value.toString(); + return results; + } + + public static String getIndexedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Object value = PropertyUtils.getIndexedProperty(bean, name); + return ConvertUtils.convert(value); + } + + public static String getIndexedProperty(Object bean, String name, int index) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Object value = PropertyUtils.getIndexedProperty(bean, name, index); + return ConvertUtils.convert(value); + } + + public static String getMappedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Object value = PropertyUtils.getMappedProperty(bean, name); + return ConvertUtils.convert(value); + } + + public static String getMappedProperty(Object bean, String name, String key) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Object value = PropertyUtils.getMappedProperty(bean, name, key); + return ConvertUtils.convert(value); + } + + public static String getNestedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Object value = PropertyUtils.getNestedProperty(bean, name); + return ConvertUtils.convert(value); + } + + public static String getProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + return getNestedProperty(bean, name); + } + + public static String getSimpleProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Object value = PropertyUtils.getSimpleProperty(bean, name); + return ConvertUtils.convert(value); + } + + public static void populate(Object bean, Map properties) throws IllegalAccessException, InvocationTargetException { + if (bean == null || properties == null) + return; + if (log.isDebugEnabled()) + log.debug("BeanUtils.populate(" + bean + ", " + properties + ")"); + Iterator names = properties.keySet().iterator(); + while (names.hasNext()) { + String name = names.next(); + if (name == null) + continue; + Object value = properties.get(name); + setProperty(bean, name, value); + } + } + + public static void setProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException { + if (log.isTraceEnabled()) { + StringBuffer sb = new StringBuffer(" setProperty("); + sb.append(bean); + sb.append(", "); + sb.append(name); + sb.append(", "); + if (value == null) { + sb.append(""); + } else if (value instanceof String) { + sb.append((String)value); + } else if (value instanceof String[]) { + String[] values = (String[])value; + sb.append('['); + for (int k = 0; k < values.length; k++) { + if (k > 0) + sb.append(','); + sb.append(values[k]); + } + sb.append(']'); + } else { + sb.append(value.toString()); + } + sb.append(')'); + log.trace(sb.toString()); + } + Object target = bean; + int delim = name.lastIndexOf('.'); + if (delim >= 0) { + try { + target = PropertyUtils.getProperty(bean, name.substring(0, delim)); + } catch (NoSuchMethodException e) { + return; + } + name = name.substring(delim + 1); + if (log.isTraceEnabled()) { + log.trace(" Target bean = " + target); + log.trace(" Target name = " + name); + } + } + String propName = null; + Class type = null; + int index = -1; + String key = null; + propName = name; + int i = propName.indexOf('['); + if (i >= 0) { + int k = propName.indexOf(']'); + try { + index = Integer.parseInt(propName.substring(i + 1, k)); + } catch (NumberFormatException e) {} + propName = propName.substring(0, i); + } + int j = propName.indexOf('('); + if (j >= 0) { + int k = propName.indexOf(')'); + try { + key = propName.substring(j + 1, k); + } catch (IndexOutOfBoundsException e) {} + propName = propName.substring(0, j); + } + if (target instanceof DynaBean) { + DynaClass dynaClass = ((DynaBean)target).getDynaClass(); + DynaProperty dynaProperty = dynaClass.getDynaProperty(propName); + if (dynaProperty == null) + return; + type = dynaProperty.getType(); + } else { + PropertyDescriptor descriptor = null; + try { + descriptor = PropertyUtils.getPropertyDescriptor(target, name); + if (descriptor == null) + return; + } catch (NoSuchMethodException e) { + return; + } + if (descriptor instanceof MappedPropertyDescriptor) { + if (((MappedPropertyDescriptor)descriptor).getMappedWriteMethod() == null) { + if (log.isDebugEnabled()) + log.debug("Skipping read-only property"); + return; + } + type = ((MappedPropertyDescriptor)descriptor).getMappedPropertyType(); + } else if (descriptor instanceof IndexedPropertyDescriptor) { + if (((IndexedPropertyDescriptor)descriptor).getIndexedWriteMethod() == null) { + if (log.isDebugEnabled()) + log.debug("Skipping read-only property"); + return; + } + type = ((IndexedPropertyDescriptor)descriptor).getIndexedPropertyType(); + } else { + if (descriptor.getWriteMethod() == null) { + if (log.isDebugEnabled()) + log.debug("Skipping read-only property"); + return; + } + type = descriptor.getPropertyType(); + } + } + Object newValue = null; + if (type.isArray() && index < 0) { + if (value == null) { + String[] values = new String[1]; + values[0] = (String)value; + newValue = ConvertUtils.convert(values, type); + } else if (value instanceof String) { + String[] values = new String[1]; + values[0] = (String)value; + newValue = ConvertUtils.convert(values, type); + } else if (value instanceof String[]) { + newValue = ConvertUtils.convert((String[])value, type); + } else { + newValue = value; + } + } else if (type.isArray()) { + if (value instanceof String) { + newValue = ConvertUtils.convert((String)value, type.getComponentType()); + } else if (value instanceof String[]) { + newValue = ConvertUtils.convert(((String[])value)[0], type.getComponentType()); + } else { + newValue = value; + } + } else if (value instanceof String || value == null) { + newValue = ConvertUtils.convert((String)value, type); + } else if (value instanceof String[]) { + newValue = ConvertUtils.convert(((String[])value)[0], type); + } else if (ConvertUtils.lookup(value.getClass()) != null) { + newValue = ConvertUtils.convert(value.toString(), type); + } else { + newValue = value; + } + try { + if (index >= 0) { + PropertyUtils.setIndexedProperty(target, propName, index, newValue); + } else if (key != null) { + PropertyUtils.setMappedProperty(target, propName, key, newValue); + } else { + PropertyUtils.setProperty(target, propName, newValue); + } + } catch (NoSuchMethodException e) { + throw new InvocationTargetException(e, "Cannot set " + propName); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/ConversionException.java b/hrmsEjb/org/apache/commons/beanutils/ConversionException.java new file mode 100644 index 0000000..e4b1760 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/ConversionException.java @@ -0,0 +1,26 @@ +package org.apache.commons.beanutils; + +public class ConversionException extends RuntimeException { + protected Throwable cause; + + public ConversionException(String message) { + super(message); + this.cause = null; + } + + public ConversionException(String message, Throwable cause) { + super(message); + this.cause = null; + this.cause = cause; + } + + public ConversionException(Throwable cause) { + super(cause.getMessage()); + this.cause = null; + this.cause = cause; + } + + public Throwable getCause() { + return this.cause; + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/ConvertUtils.java b/hrmsEjb/org/apache/commons/beanutils/ConvertUtils.java new file mode 100644 index 0000000..a6cbdbc --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/ConvertUtils.java @@ -0,0 +1,244 @@ +package org.apache.commons.beanutils; + +import java.lang.reflect.Array; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.sql.Date; +import java.sql.Time; +import java.sql.Timestamp; +import org.apache.commons.beanutils.converters.BigDecimalConverter; +import org.apache.commons.beanutils.converters.BigIntegerConverter; +import org.apache.commons.beanutils.converters.BooleanArrayConverter; +import org.apache.commons.beanutils.converters.BooleanConverter; +import org.apache.commons.beanutils.converters.ByteArrayConverter; +import org.apache.commons.beanutils.converters.ByteConverter; +import org.apache.commons.beanutils.converters.CharacterArrayConverter; +import org.apache.commons.beanutils.converters.CharacterConverter; +import org.apache.commons.beanutils.converters.ClassConverter; +import org.apache.commons.beanutils.converters.DoubleArrayConverter; +import org.apache.commons.beanutils.converters.DoubleConverter; +import org.apache.commons.beanutils.converters.FloatArrayConverter; +import org.apache.commons.beanutils.converters.FloatConverter; +import org.apache.commons.beanutils.converters.IntegerArrayConverter; +import org.apache.commons.beanutils.converters.IntegerConverter; +import org.apache.commons.beanutils.converters.LongArrayConverter; +import org.apache.commons.beanutils.converters.LongConverter; +import org.apache.commons.beanutils.converters.ShortArrayConverter; +import org.apache.commons.beanutils.converters.ShortConverter; +import org.apache.commons.beanutils.converters.SqlDateConverter; +import org.apache.commons.beanutils.converters.SqlTimeConverter; +import org.apache.commons.beanutils.converters.SqlTimestampConverter; +import org.apache.commons.beanutils.converters.StringArrayConverter; +import org.apache.commons.beanutils.converters.StringConverter; +import org.apache.commons.collections.FastHashMap; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class ConvertUtils { + private static Boolean defaultBoolean = Boolean.FALSE; + + public static boolean getDefaultBoolean() { + return defaultBoolean.booleanValue(); + } + + public static void setDefaultBoolean(boolean newDefaultBoolean) { + defaultBoolean = new Boolean(newDefaultBoolean); + converters.put(boolean.class, new BooleanConverter(defaultBoolean)); + converters.put(Boolean.class, new BooleanConverter(defaultBoolean)); + } + + private static Byte defaultByte = new Byte((byte)0); + + public static byte getDefaultByte() { + return defaultByte.byteValue(); + } + + public static void setDefaultByte(byte newDefaultByte) { + defaultByte = new Byte(newDefaultByte); + converters.put(byte.class, new ByteConverter(defaultByte)); + converters.put(Byte.class, new ByteConverter(defaultByte)); + } + + private static Character defaultCharacter = new Character(' '); + + public static char getDefaultCharacter() { + return defaultCharacter.charValue(); + } + + public static void setDefaultCharacter(char newDefaultCharacter) { + defaultCharacter = new Character(newDefaultCharacter); + converters.put(char.class, new CharacterConverter(defaultCharacter)); + converters.put(Character.class, new CharacterConverter(defaultCharacter)); + } + + private static Double defaultDouble = new Double(0.0D); + + public static double getDefaultDouble() { + return defaultDouble.doubleValue(); + } + + public static void setDefaultDouble(double newDefaultDouble) { + defaultDouble = new Double(newDefaultDouble); + converters.put(double.class, new DoubleConverter(defaultDouble)); + converters.put(Double.class, new DoubleConverter(defaultDouble)); + } + + private static Float defaultFloat = new Float(0.0F); + + public static float getDefaultFloat() { + return defaultFloat.floatValue(); + } + + public static void setDefaultFloat(float newDefaultFloat) { + defaultFloat = new Float(newDefaultFloat); + converters.put(float.class, new FloatConverter(defaultFloat)); + converters.put(Float.class, new FloatConverter(defaultFloat)); + } + + private static Integer defaultInteger = new Integer(0); + + public static int getDefaultInteger() { + return defaultInteger.intValue(); + } + + public static void setDefaultInteger(int newDefaultInteger) { + defaultInteger = new Integer(newDefaultInteger); + converters.put(int.class, new IntegerConverter(defaultInteger)); + converters.put(Integer.class, new IntegerConverter(defaultInteger)); + } + + private static Long defaultLong = new Long(0L); + + public static long getDefaultLong() { + return defaultLong.longValue(); + } + + public static void setDefaultLong(long newDefaultLong) { + defaultLong = new Long(newDefaultLong); + converters.put(long.class, new LongConverter(defaultLong)); + converters.put(Long.class, new LongConverter(defaultLong)); + } + + private static Short defaultShort = new Short((short)0); + + public static short getDefaultShort() { + return defaultShort.shortValue(); + } + + public static void setDefaultShort(short newDefaultShort) { + defaultShort = new Short(newDefaultShort); + converters.put(short.class, new ShortConverter(defaultShort)); + converters.put(Short.class, new ShortConverter(defaultShort)); + } + + private static FastHashMap converters = new FastHashMap(); + + static { + converters.setFast(false); + deregister(); + converters.setFast(true); + } + + private static Log log = LogFactory.getLog(ConvertUtils.class); + + public static String convert(Object value) { + if (value == null) + return (String)null; + if (value.getClass().isArray()) { + if (Array.getLength(value) < 1) + return null; + value = Array.get(value, 0); + if (value == null) + return (String)null; + Converter converter1 = (Converter)converters.get(String.class); + return (String)converter1.convert(String.class, value); + } + Converter converter = (Converter)converters.get(String.class); + return (String)converter.convert(String.class, value); + } + + public static Object convert(String value, Class clazz) { + if (log.isDebugEnabled()) + log.debug("Convert string '" + value + "' to class '" + clazz.getName() + "'"); + Converter converter = (Converter)converters.get(clazz); + if (converter == null) + converter = (Converter)converters.get(String.class); + if (log.isTraceEnabled()) + log.trace(" Using converter " + converter); + return converter.convert(clazz, value); + } + + public static Object convert(String[] values, Class clazz) { + Class type = clazz; + if (clazz.isArray()) + type = clazz.getComponentType(); + if (log.isDebugEnabled()) + log.debug("Convert String[" + values.length + "] to class '" + type.getName() + "[]'"); + Converter converter = (Converter)converters.get(type); + if (converter == null) + converter = (Converter)converters.get(String.class); + if (log.isTraceEnabled()) + log.trace(" Using converter " + converter); + Object array = Array.newInstance(type, values.length); + for (int i = 0; i < values.length; i++) + Array.set(array, i, converter.convert(type, values[i])); + return array; + } + + public static void deregister() { + boolean[] booleanArray = new boolean[0]; + byte[] byteArray = new byte[0]; + char[] charArray = new char[0]; + double[] doubleArray = new double[0]; + float[] floatArray = new float[0]; + int[] intArray = new int[0]; + long[] longArray = new long[0]; + short[] shortArray = new short[0]; + String[] stringArray = new String[0]; + converters.clear(); + converters.put(BigDecimal.class, new BigDecimalConverter()); + converters.put(BigInteger.class, new BigIntegerConverter()); + converters.put(boolean.class, new BooleanConverter(defaultBoolean)); + converters.put(Boolean.class, new BooleanConverter(defaultBoolean)); + converters.put(booleanArray.getClass(), new BooleanArrayConverter(booleanArray)); + converters.put(byte.class, new ByteConverter(defaultByte)); + converters.put(Byte.class, new ByteConverter(defaultByte)); + converters.put(byteArray.getClass(), new ByteArrayConverter(byteArray)); + converters.put(char.class, new CharacterConverter(defaultCharacter)); + converters.put(Character.class, new CharacterConverter(defaultCharacter)); + converters.put(charArray.getClass(), new CharacterArrayConverter(charArray)); + converters.put(Class.class, new ClassConverter()); + converters.put(double.class, new DoubleConverter(defaultDouble)); + converters.put(Double.class, new DoubleConverter(defaultDouble)); + converters.put(doubleArray.getClass(), new DoubleArrayConverter(doubleArray)); + converters.put(float.class, new FloatConverter(defaultFloat)); + converters.put(Float.class, new FloatConverter(defaultFloat)); + converters.put(floatArray.getClass(), new FloatArrayConverter(floatArray)); + converters.put(int.class, new IntegerConverter(defaultInteger)); + converters.put(Integer.class, new IntegerConverter(defaultInteger)); + converters.put(intArray.getClass(), new IntegerArrayConverter(intArray)); + converters.put(long.class, new LongConverter(defaultLong)); + converters.put(Long.class, new LongConverter(defaultLong)); + converters.put(longArray.getClass(), new LongArrayConverter(longArray)); + converters.put(short.class, new ShortConverter(defaultShort)); + converters.put(Short.class, new ShortConverter(defaultShort)); + converters.put(shortArray.getClass(), new ShortArrayConverter(shortArray)); + converters.put(String.class, new StringConverter()); + converters.put(stringArray.getClass(), new StringArrayConverter(stringArray)); + converters.put(Date.class, new SqlDateConverter()); + converters.put(Time.class, new SqlTimeConverter()); + converters.put(Timestamp.class, new SqlTimestampConverter()); + } + + public static void deregister(Class clazz) { + converters.remove(clazz); + } + + public static Converter lookup(Class clazz) { + return (Converter)converters.get(clazz); + } + + public static void register(Converter converter, Class clazz) { + converters.put(clazz, converter); + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/Converter.java b/hrmsEjb/org/apache/commons/beanutils/Converter.java new file mode 100644 index 0000000..ec77590 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/Converter.java @@ -0,0 +1,5 @@ +package org.apache.commons.beanutils; + +public interface Converter { + Object convert(Class paramClass, Object paramObject); +} diff --git a/hrmsEjb/org/apache/commons/beanutils/DynaBean.java b/hrmsEjb/org/apache/commons/beanutils/DynaBean.java new file mode 100644 index 0000000..49ad781 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/DynaBean.java @@ -0,0 +1,21 @@ +package org.apache.commons.beanutils; + +public interface DynaBean { + boolean contains(String paramString1, String paramString2); + + Object get(String paramString); + + Object get(String paramString, int paramInt); + + Object get(String paramString1, String paramString2); + + DynaClass getDynaClass(); + + void remove(String paramString1, String paramString2); + + void set(String paramString, Object paramObject); + + void set(String paramString, int paramInt, Object paramObject); + + void set(String paramString1, String paramString2, Object paramObject); +} diff --git a/hrmsEjb/org/apache/commons/beanutils/DynaClass.java b/hrmsEjb/org/apache/commons/beanutils/DynaClass.java new file mode 100644 index 0000000..cb689df --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/DynaClass.java @@ -0,0 +1,11 @@ +package org.apache.commons.beanutils; + +public interface DynaClass { + String getName(); + + DynaProperty getDynaProperty(String paramString); + + DynaProperty[] getDynaProperties(); + + DynaBean newInstance() throws IllegalAccessException, InstantiationException; +} diff --git a/hrmsEjb/org/apache/commons/beanutils/DynaProperty.java b/hrmsEjb/org/apache/commons/beanutils/DynaProperty.java new file mode 100644 index 0000000..32a5a12 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/DynaProperty.java @@ -0,0 +1,140 @@ +package org.apache.commons.beanutils; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.io.StreamCorruptedException; +import java.util.List; +import java.util.Map; + +public class DynaProperty implements Serializable { + private static final int BOOLEAN_TYPE = 1; + + private static final int BYTE_TYPE = 2; + + private static final int CHAR_TYPE = 3; + + private static final int DOUBLE_TYPE = 4; + + private static final int FLOAT_TYPE = 5; + + private static final int INT_TYPE = 6; + + private static final int LONG_TYPE = 7; + + private static final int SHORT_TYPE = 8; + + protected String name; + + protected transient Class type; + + public DynaProperty(String name) { + this(name, Object.class); + } + + public DynaProperty(String name, Class type) { + this.name = null; + this.type = null; + this.name = name; + this.type = type; + } + + public String getName() { + return this.name; + } + + public Class getType() { + return this.type; + } + + public boolean isIndexed() { + if (this.type == null) + return false; + if (this.type.isArray()) + return true; + if (List.class.isAssignableFrom(this.type)) + return true; + return false; + } + + public boolean isMapped() { + if (this.type == null) + return false; + return Map.class.isAssignableFrom(this.type); + } + + public String toString() { + StringBuffer sb = new StringBuffer("DynaProperty[name="); + sb.append(this.name); + sb.append(",type="); + sb.append(this.type); + sb.append("]"); + return sb.toString(); + } + + private void writeObject(ObjectOutputStream out) throws IOException { + int primitiveType = 0; + if (boolean.class.equals(this.type)) { + primitiveType = 1; + } else if (byte.class.equals(this.type)) { + primitiveType = 2; + } else if (char.class.equals(this.type)) { + primitiveType = 3; + } else if (double.class.equals(this.type)) { + primitiveType = 4; + } else if (float.class.equals(this.type)) { + primitiveType = 5; + } else if (int.class.equals(this.type)) { + primitiveType = 6; + } else if (long.class.equals(this.type)) { + primitiveType = 7; + } else if (short.class.equals(this.type)) { + primitiveType = 8; + } + if (primitiveType == 0) { + out.writeBoolean(false); + out.writeObject(this.type); + } else { + out.writeBoolean(true); + out.writeInt(primitiveType); + } + out.defaultWriteObject(); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + if (in.readBoolean()) { + switch (in.readInt()) { + case 1: + this.type = boolean.class; + break; + case 2: + this.type = byte.class; + break; + case 3: + this.type = char.class; + break; + case 4: + this.type = double.class; + break; + case 5: + this.type = float.class; + break; + case 6: + this.type = int.class; + break; + case 7: + this.type = long.class; + break; + case 8: + this.type = short.class; + break; + default: + throw new StreamCorruptedException("Invalid primitive type. Check version of beanutils used to serialize is compatible."); + } + } else { + this.type = (Class)in.readObject(); + } + in.defaultReadObject(); + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/MappedPropertyDescriptor.java b/hrmsEjb/org/apache/commons/beanutils/MappedPropertyDescriptor.java new file mode 100644 index 0000000..aa85da4 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/MappedPropertyDescriptor.java @@ -0,0 +1,242 @@ +package org.apache.commons.beanutils; + +import java.beans.IntrospectionException; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.util.Hashtable; + +public class MappedPropertyDescriptor extends PropertyDescriptor { + private Class mappedPropertyType; + + private Method mappedReadMethod; + + private Method mappedWriteMethod; + + private static final Class[] stringClassArray = new Class[] { String.class }; + + public MappedPropertyDescriptor(String propertyName, Class beanClass) throws IntrospectionException { + super(propertyName, (Method)null, (Method)null); + if (propertyName == null || propertyName.length() == 0) + throw new IntrospectionException("bad property name: " + propertyName + " on class: " + beanClass.getClass().getName()); + setName(propertyName); + String base = capitalizePropertyName(propertyName); + try { + this.mappedReadMethod = findMethod(beanClass, "get" + base, 1, stringClassArray); + Class[] params = { String.class, this.mappedReadMethod.getReturnType() }; + this.mappedWriteMethod = findMethod(beanClass, "set" + base, 2, params); + } catch (IntrospectionException e) {} + if (this.mappedReadMethod == null) + this.mappedWriteMethod = findMethod(beanClass, "set" + base, 2); + if (this.mappedReadMethod == null && this.mappedWriteMethod == null) + throw new IntrospectionException("Property '" + propertyName + "' not found on " + beanClass.getName()); + findMappedPropertyType(); + } + + public MappedPropertyDescriptor(String propertyName, Class beanClass, String mappedGetterName, String mappedSetterName) throws IntrospectionException { + super(propertyName, (Method)null, (Method)null); + if (propertyName == null || propertyName.length() == 0) + throw new IntrospectionException("bad property name: " + propertyName); + setName(propertyName); + this.mappedReadMethod = findMethod(beanClass, mappedGetterName, 1, stringClassArray); + if (this.mappedReadMethod != null) { + Class[] params = { String.class, this.mappedReadMethod.getReturnType() }; + this.mappedWriteMethod = findMethod(beanClass, mappedSetterName, 2, params); + } else { + this.mappedWriteMethod = findMethod(beanClass, mappedSetterName, 2); + } + findMappedPropertyType(); + } + + public MappedPropertyDescriptor(String propertyName, Method mappedGetter, Method mappedSetter) throws IntrospectionException { + super(propertyName, mappedGetter, mappedSetter); + if (propertyName == null || propertyName.length() == 0) + throw new IntrospectionException("bad property name: " + propertyName); + setName(propertyName); + this.mappedReadMethod = mappedGetter; + this.mappedWriteMethod = mappedSetter; + findMappedPropertyType(); + } + + public Class getMappedPropertyType() { + return this.mappedPropertyType; + } + + public Method getMappedReadMethod() { + return this.mappedReadMethod; + } + + public void setMappedReadMethod(Method mappedGetter) throws IntrospectionException { + this.mappedReadMethod = mappedGetter; + findMappedPropertyType(); + } + + public Method getMappedWriteMethod() { + return this.mappedWriteMethod; + } + + public void setMappedWriteMethod(Method mappedSetter) throws IntrospectionException { + this.mappedWriteMethod = mappedSetter; + findMappedPropertyType(); + } + + private void findMappedPropertyType() throws IntrospectionException { + try { + this.mappedPropertyType = null; + if (this.mappedReadMethod != null) { + if ((this.mappedReadMethod.getParameterTypes()).length != 1) + throw new IntrospectionException("bad mapped read method arg count"); + this.mappedPropertyType = this.mappedReadMethod.getReturnType(); + if (this.mappedPropertyType == void.class) + throw new IntrospectionException("mapped read method " + this.mappedReadMethod.getName() + " returns void"); + } + if (this.mappedWriteMethod != null) { + Class[] params = this.mappedWriteMethod.getParameterTypes(); + if (params.length != 2) + throw new IntrospectionException("bad mapped write method arg count"); + if (this.mappedPropertyType != null && this.mappedPropertyType != params[1]) + throw new IntrospectionException("type mismatch between mapped read and write methods"); + this.mappedPropertyType = params[1]; + } + } catch (IntrospectionException ex) { + throw ex; + } + } + + private static String capitalizePropertyName(String s) { + if (s.length() == 0) + return s; + char[] chars = s.toCharArray(); + chars[0] = Character.toUpperCase(chars[0]); + return new String(chars); + } + + private static Hashtable declaredMethodCache = new Hashtable(); + + private static synchronized Method[] getPublicDeclaredMethods(Class clz) { + Class fclz = clz; + Method[] result = (Method[])declaredMethodCache.get(fclz); + if (result != null) + return result; + result = AccessController.doPrivileged(new PrivilegedAction(fclz) { + private final Class val$fclz; + + public Object run() { + return this.val$fclz.getDeclaredMethods(); + } + }); + for (int i = 0; i < result.length; i++) { + Method method = result[i]; + int mods = method.getModifiers(); + if (!Modifier.isPublic(mods)) + result[i] = null; + } + declaredMethodCache.put(clz, result); + return result; + } + + private static Method internalFindMethod(Class start, String methodName, int argCount) { + for (Class cl = start; cl != null; cl = cl.getSuperclass()) { + Method[] methods = getPublicDeclaredMethods(cl); + for (int j = 0; j < methods.length; j++) { + Method method = methods[j]; + if (method != null) { + int mods = method.getModifiers(); + if (!Modifier.isStatic(mods)) + if (method.getName().equals(methodName) && (method.getParameterTypes()).length == argCount) + return method; + } + } + } + Class[] ifcs = start.getInterfaces(); + for (int i = 0; i < ifcs.length; i++) { + Method m = internalFindMethod(ifcs[i], methodName, argCount); + if (m != null) + return m; + } + return null; + } + + private static Method internalFindMethod(Class start, String methodName, int argCount, Class[] args) { + for (Class cl = start; cl != null; cl = cl.getSuperclass()) { + Method[] methods = getPublicDeclaredMethods(cl); + for (int j = 0; j < methods.length; j++) { + Method method = methods[j]; + if (method == null) + continue; + int mods = method.getModifiers(); + if (Modifier.isStatic(mods)) + continue; + Class[] params = method.getParameterTypes(); + if (method.getName().equals(methodName) && params.length == argCount) { + boolean different = false; + if (argCount > 0) { + for (int k = 0; k < argCount; k++) { + if (params[k] != args[k]) + different = true; + } + if (different) + continue; + } + return method; + } + continue; + } + } + Class[] ifcs = start.getInterfaces(); + for (int i = 0; i < ifcs.length; i++) { + Method m = internalFindMethod(ifcs[i], methodName, argCount); + if (m != null) + return m; + } + return null; + } + + static Method findMethod(Class cls, String methodName, int argCount) throws IntrospectionException { + if (methodName == null) + return null; + Method m = internalFindMethod(cls, methodName, argCount); + if (m != null) + return m; + throw new IntrospectionException("No method \"" + methodName + "\" with " + argCount + " arg(s)"); + } + + static Method findMethod(Class cls, String methodName, int argCount, Class[] args) throws IntrospectionException { + if (methodName == null) + return null; + Method m = internalFindMethod(cls, methodName, argCount, args); + if (m != null) + return m; + throw new IntrospectionException("No method \"" + methodName + "\" with " + argCount + " arg(s) of matching types."); + } + + static boolean isSubclass(Class a, Class b) { + if (a == b) + return true; + if (a == null || b == null) + return false; + for (Class x = a; x != null; x = x.getSuperclass()) { + if (x == b) + return true; + if (b.isInterface()) { + Class[] interfaces = x.getInterfaces(); + for (int i = 0; i < interfaces.length; i++) { + if (isSubclass(interfaces[i], b)) + return true; + } + } + } + return false; + } + + private boolean throwsException(Method method, Class exception) { + Class[] exs = method.getExceptionTypes(); + for (int i = 0; i < exs.length; i++) { + if (exs[i] == exception) + return true; + } + return false; + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/MethodUtils.java b/hrmsEjb/org/apache/commons/beanutils/MethodUtils.java new file mode 100644 index 0000000..7221628 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/MethodUtils.java @@ -0,0 +1,204 @@ +package org.apache.commons.beanutils; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class MethodUtils { + private static Log log = LogFactory.getLog(MethodUtils.class); + + private static boolean loggedAccessibleWarning = false; + + private static final Class[] emptyClassArray = new Class[0]; + + private static final Object[] emptyObjectArray = new Object[0]; + + public static Object invokeMethod(Object object, String methodName, Object arg) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + Object[] args = { arg }; + return invokeMethod(object, methodName, args); + } + + public static Object invokeMethod(Object object, String methodName, Object[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + if (args == null) + args = emptyObjectArray; + int arguments = args.length; + Class[] parameterTypes = new Class[arguments]; + for (int i = 0; i < arguments; i++) + parameterTypes[i] = args[i].getClass(); + return invokeMethod(object, methodName, args, parameterTypes); + } + + public static Object invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + if (parameterTypes == null) + parameterTypes = emptyClassArray; + if (args == null) + args = emptyObjectArray; + Method method = getMatchingAccessibleMethod(object.getClass(), methodName, parameterTypes); + if (method == null) + throw new NoSuchMethodException("No such accessible method: " + methodName + "() on object: " + object.getClass().getName()); + return method.invoke(object, args); + } + + public static Object invokeExactMethod(Object object, String methodName, Object arg) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + Object[] args = { arg }; + return invokeExactMethod(object, methodName, args); + } + + public static Object invokeExactMethod(Object object, String methodName, Object[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + if (args == null) + args = emptyObjectArray; + int arguments = args.length; + Class[] parameterTypes = new Class[arguments]; + for (int i = 0; i < arguments; i++) + parameterTypes[i] = args[i].getClass(); + return invokeExactMethod(object, methodName, args, parameterTypes); + } + + public static Object invokeExactMethod(Object object, String methodName, Object[] args, Class[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + if (args == null) + args = emptyObjectArray; + if (parameterTypes == null) + parameterTypes = emptyClassArray; + Method method = getAccessibleMethod(object.getClass(), methodName, parameterTypes); + if (method == null) + throw new NoSuchMethodException("No such accessible method: " + methodName + "() on object: " + object.getClass().getName()); + return method.invoke(object, args); + } + + public static Method getAccessibleMethod(Class clazz, String methodName, Class parameterType) { + Class[] parameterTypes = { parameterType }; + return getAccessibleMethod(clazz, methodName, parameterTypes); + } + + public static Method getAccessibleMethod(Class clazz, String methodName, Class[] parameterTypes) { + try { + return getAccessibleMethod(clazz.getMethod(methodName, parameterTypes)); + } catch (NoSuchMethodException e) { + return null; + } + } + + public static Method getAccessibleMethod(Method method) { + if (method == null) + return null; + if (!Modifier.isPublic(method.getModifiers())) + return null; + Class clazz = method.getDeclaringClass(); + if (Modifier.isPublic(clazz.getModifiers())) + return method; + method = getAccessibleMethodFromInterfaceNest(clazz, method.getName(), method.getParameterTypes()); + return method; + } + + private static Method getAccessibleMethodFromInterfaceNest(Class clazz, String methodName, Class[] parameterTypes) { + Method method = null; + for (; clazz != null; clazz = clazz.getSuperclass()) { + Class[] interfaces = clazz.getInterfaces(); + for (int i = 0; i < interfaces.length; i++) { + if (Modifier.isPublic(interfaces[i].getModifiers())) { + try { + method = interfaces[i].getDeclaredMethod(methodName, parameterTypes); + } catch (NoSuchMethodException e) {} + if (method != null) + break; + method = getAccessibleMethodFromInterfaceNest(interfaces[i], methodName, parameterTypes); + if (method != null) + break; + } + } + } + if (method != null) + return method; + return null; + } + + public static Method getMatchingAccessibleMethod(Class clazz, String methodName, Class[] parameterTypes) { + if (log.isTraceEnabled()) + log.trace("Matching name=" + methodName + " on " + clazz); + try { + Method method = clazz.getMethod(methodName, parameterTypes); + if (log.isTraceEnabled()) { + log.trace("Found straight match: " + method); + log.trace("isPublic:" + Modifier.isPublic(method.getModifiers())); + } + try { + method.setAccessible(true); + } catch (SecurityException se) { + if (!loggedAccessibleWarning) { + log.warn("Cannot use JVM pre-1.4 access bug workaround die to restrictive security manager."); + loggedAccessibleWarning = true; + } + log.debug("Cannot setAccessible on method. Therefore cannot use jvm access bug workaround.", se); + } + return method; + } catch (NoSuchMethodException e) { + int paramSize = parameterTypes.length; + Method[] methods = clazz.getMethods(); + for (int i = 0, size = methods.length; i < size; i++) { + if (methods[i].getName().equals(methodName)) { + if (log.isTraceEnabled()) { + log.trace("Found matching name:"); + log.trace(methods[i]); + } + Class[] methodsParams = methods[i].getParameterTypes(); + int methodParamSize = methodsParams.length; + if (methodParamSize == paramSize) { + boolean match = true; + for (int n = 0; n < methodParamSize; n++) { + if (log.isTraceEnabled()) { + log.trace("Param=" + parameterTypes[n].getName()); + log.trace("Method=" + methodsParams[n].getName()); + } + if (!isAssignmentCompatible(methodsParams[n], parameterTypes[n])) { + if (log.isTraceEnabled()) + log.trace(methodsParams[n] + " is not assignable from " + parameterTypes[n]); + match = false; + break; + } + } + if (match) { + Method method = getAccessibleMethod(methods[i]); + if (method != null) { + if (log.isTraceEnabled()) + log.trace(method + " accessible version of " + methods[i]); + try { + method.setAccessible(true); + } catch (SecurityException se) { + if (!loggedAccessibleWarning) { + log.warn("Cannot use JVM pre-1.4 access bug workaround die to restrictive security manager."); + loggedAccessibleWarning = true; + } + log.debug("Cannot setAccessible on method. Therefore cannot use jvm access bug workaround.", se); + } + return method; + } + log.trace("Couldn't find accessible method."); + } + } + } + } + log.trace("No match found."); + return null; + } + } + + protected static final boolean isAssignmentCompatible(Class parameterType, Class parameterization) { + if (parameterType.isAssignableFrom(parameterization)) + return true; + if (parameterType.isPrimitive()) { + if (boolean.class.equals(parameterType)) + return Boolean.class.equals(parameterization); + if (float.class.equals(parameterType)) + return Float.class.equals(parameterization); + if (long.class.equals(parameterType)) + return Long.class.equals(parameterization); + if (int.class.equals(parameterType)) + return Integer.class.equals(parameterization); + if (double.class.equals(parameterType)) + return Double.class.equals(parameterization); + } + return false; + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/PropertyUtils.java b/hrmsEjb/org/apache/commons/beanutils/PropertyUtils.java new file mode 100644 index 0000000..82eca46 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/PropertyUtils.java @@ -0,0 +1,707 @@ +package org.apache.commons.beanutils; + +import java.beans.BeanInfo; +import java.beans.IndexedPropertyDescriptor; +import java.beans.IntrospectionException; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Array; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import org.apache.commons.collections.FastHashMap; + +public class PropertyUtils { + public static final char INDEXED_DELIM = '['; + + public static final char INDEXED_DELIM2 = ']'; + + public static final char MAPPED_DELIM = '('; + + public static final char MAPPED_DELIM2 = ')'; + + public static final char NESTED_DELIM = '.'; + + private static int debug = 0; + + public static int getDebug() { + return debug; + } + + public static void setDebug(int newDebug) { + debug = newDebug; + } + + private static FastHashMap descriptorsCache = null; + + private static FastHashMap mappedDescriptorsCache = null; + + static { + descriptorsCache = new FastHashMap(); + descriptorsCache.setFast(true); + mappedDescriptorsCache = new FastHashMap(); + mappedDescriptorsCache.setFast(true); + } + + public static void clearDescriptors() { + descriptorsCache.clear(); + mappedDescriptorsCache.clear(); + Introspector.flushCaches(); + } + + public static void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (dest == null) + throw new IllegalArgumentException("No destination bean specified"); + if (orig == null) + throw new IllegalArgumentException("No origin bean specified"); + if (orig instanceof DynaBean) { + DynaProperty[] origDescriptors = ((DynaBean)orig).getDynaClass().getDynaProperties(); + for (int i = 0; i < origDescriptors.length; i++) { + String name = origDescriptors[i].getName(); + if (dest instanceof DynaBean) { + if (isWriteable(dest, name)) { + Object value = ((DynaBean)orig).get(name); + ((DynaBean)dest).set(name, value); + } + } else if (isWriteable(dest, name)) { + Object value = ((DynaBean)orig).get(name); + setSimpleProperty(dest, name, value); + } + } + } else if (orig instanceof Map) { + Iterator names = ((Map)orig).keySet().iterator(); + while (names.hasNext()) { + String name = names.next(); + if (dest instanceof DynaBean) { + if (isWriteable(dest, name)) { + Object value = ((Map)orig).get(name); + ((DynaBean)dest).set(name, value); + } + continue; + } + if (isWriteable(dest, name)) { + Object value = ((Map)orig).get(name); + setSimpleProperty(dest, name, value); + } + } + } else { + PropertyDescriptor[] origDescriptors = getPropertyDescriptors(orig); + for (int i = 0; i < origDescriptors.length; i++) { + String name = origDescriptors[i].getName(); + if (isReadable(orig, name)) + if (dest instanceof DynaBean) { + if (isWriteable(dest, name)) { + Object value = getSimpleProperty(orig, name); + ((DynaBean)dest).set(name, value); + } + } else if (isWriteable(dest, name)) { + Object value = getSimpleProperty(orig, name); + setSimpleProperty(dest, name, value); + } + } + } + } + + public static Map describe(Object bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + Map description = new HashMap(); + if (bean instanceof DynaBean) { + DynaProperty[] descriptors = ((DynaBean)bean).getDynaClass().getDynaProperties(); + for (int i = 0; i < descriptors.length; i++) { + String name = descriptors[i].getName(); + description.put(name, getProperty(bean, name)); + } + } else { + PropertyDescriptor[] descriptors = getPropertyDescriptors(bean); + for (int i = 0; i < descriptors.length; i++) { + String name = descriptors[i].getName(); + if (descriptors[i].getReadMethod() != null) + description.put(name, getProperty(bean, name)); + } + } + return description; + } + + public static Object getIndexedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + int delim = name.indexOf('['); + int delim2 = name.indexOf(']'); + if (delim < 0 || delim2 <= delim) + throw new IllegalArgumentException("Invalid indexed property '" + name + "'"); + int index = -1; + try { + String subscript = name.substring(delim + 1, delim2); + index = Integer.parseInt(subscript); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Invalid indexed property '" + name + "'"); + } + name = name.substring(0, delim); + return getIndexedProperty(bean, name, index); + } + + public static Object getIndexedProperty(Object bean, String name, int index) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (bean instanceof DynaBean) { + DynaProperty dynaProperty = ((DynaBean)bean).getDynaClass().getDynaProperty(name); + if (dynaProperty == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + return ((DynaBean)bean).get(name, index); + } + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + if (descriptor instanceof IndexedPropertyDescriptor) { + Method method = ((IndexedPropertyDescriptor)descriptor).getIndexedReadMethod(); + if (method != null) { + Object[] subscript = new Object[1]; + subscript[0] = new Integer(index); + try { + return method.invoke(bean, subscript); + } catch (InvocationTargetException e) { + if (e.getTargetException() instanceof ArrayIndexOutOfBoundsException) + throw (ArrayIndexOutOfBoundsException)e.getTargetException(); + throw e; + } + } + } + Method readMethod = getReadMethod(descriptor); + if (readMethod == null) + throw new NoSuchMethodException("Property '" + name + "' has no getter method"); + Object value = readMethod.invoke(bean, new Object[0]); + if (!value.getClass().isArray()) { + if (!(value instanceof List)) + throw new IllegalArgumentException("Property '" + name + "' is not indexed"); + return ((List)value).get(index); + } + return Array.get(value, index); + } + + public static Object getMappedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + int delim = name.indexOf('('); + int delim2 = name.indexOf(')'); + if (delim < 0 || delim2 <= delim) + throw new IllegalArgumentException("Invalid mapped property '" + name + "'"); + String key = name.substring(delim + 1, delim2); + name = name.substring(0, delim); + return getMappedProperty(bean, name, key); + } + + public static Object getMappedProperty(Object bean, String name, String key) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (key == null) + throw new IllegalArgumentException("No key specified"); + if (bean instanceof DynaBean) { + DynaProperty dynaProperty = ((DynaBean)bean).getDynaClass().getDynaProperty(name); + if (dynaProperty == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + return ((DynaBean)bean).get(name, key); + } + Object result = null; + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + if (descriptor instanceof MappedPropertyDescriptor) { + Method readMethod = ((MappedPropertyDescriptor)descriptor).getMappedReadMethod(); + if (readMethod != null) { + Object[] keyArray = new Object[1]; + keyArray[0] = key; + result = readMethod.invoke(bean, keyArray); + } else { + throw new NoSuchMethodException("Property '" + name + "' has no mapped getter method"); + } + } else { + Method readMethod = descriptor.getReadMethod(); + if (readMethod != null) { + Object invokeResult = readMethod.invoke(bean, new Object[0]); + if (invokeResult instanceof Map) + result = ((Map)invokeResult).get(key); + } else { + throw new NoSuchMethodException("Property '" + name + "' has no mapped getter method"); + } + } + return result; + } + + public static FastHashMap getMappedPropertyDescriptors(Class beanClass) { + if (beanClass == null) + return null; + return (FastHashMap)mappedDescriptorsCache.get(beanClass); + } + + public static FastHashMap getMappedPropertyDescriptors(Object bean) { + if (bean == null) + return null; + return getMappedPropertyDescriptors(bean.getClass()); + } + + public static Object getNestedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + int indexOfINDEXED_DELIM = -1; + int indexOfMAPPED_DELIM = -1; + int indexOfMAPPED_DELIM2 = -1; + int indexOfNESTED_DELIM = -1; + while (true) { + indexOfNESTED_DELIM = name.indexOf('.'); + indexOfMAPPED_DELIM = name.indexOf('('); + indexOfMAPPED_DELIM2 = name.indexOf(')'); + if (indexOfMAPPED_DELIM2 >= 0 && indexOfMAPPED_DELIM >= 0 && (indexOfNESTED_DELIM < 0 || indexOfNESTED_DELIM > indexOfMAPPED_DELIM)) { + indexOfNESTED_DELIM = name.indexOf('.', indexOfMAPPED_DELIM2); + } else { + indexOfNESTED_DELIM = name.indexOf('.'); + } + if (indexOfNESTED_DELIM < 0) + break; + String next = name.substring(0, indexOfNESTED_DELIM); + indexOfINDEXED_DELIM = next.indexOf('['); + indexOfMAPPED_DELIM = next.indexOf('('); + if (bean instanceof Map) { + bean = ((Map)bean).get(next); + } else if (indexOfMAPPED_DELIM >= 0) { + bean = getMappedProperty(bean, next); + } else if (indexOfINDEXED_DELIM >= 0) { + bean = getIndexedProperty(bean, next); + } else { + bean = getSimpleProperty(bean, next); + } + if (bean == null) + throw new IllegalArgumentException("Null property value for '" + name.substring(0, indexOfNESTED_DELIM) + "'"); + name = name.substring(indexOfNESTED_DELIM + 1); + } + indexOfINDEXED_DELIM = name.indexOf('['); + indexOfMAPPED_DELIM = name.indexOf('('); + if (bean instanceof Map) { + bean = ((Map)bean).get(name); + } else if (indexOfMAPPED_DELIM >= 0) { + bean = getMappedProperty(bean, name); + } else if (indexOfINDEXED_DELIM >= 0) { + bean = getIndexedProperty(bean, name); + } else { + bean = getSimpleProperty(bean, name); + } + return bean; + } + + public static Object getProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + return getNestedProperty(bean, name); + } + + public static PropertyDescriptor getPropertyDescriptor(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + while (true) { + int period = name.indexOf('.'); + if (period < 0) + break; + String next = name.substring(0, period); + int indexOfINDEXED_DELIM = next.indexOf('['); + int indexOfMAPPED_DELIM = next.indexOf('('); + if (indexOfMAPPED_DELIM >= 0 && (indexOfINDEXED_DELIM < 0 || indexOfMAPPED_DELIM < indexOfINDEXED_DELIM)) { + bean = getMappedProperty(bean, next); + } else if (indexOfINDEXED_DELIM >= 0) { + bean = getIndexedProperty(bean, next); + } else { + bean = getSimpleProperty(bean, next); + } + if (bean == null) + throw new IllegalArgumentException("Null property value for '" + name.substring(0, period) + "'"); + name = name.substring(period + 1); + } + int left = name.indexOf('['); + if (left >= 0) + name = name.substring(0, left); + left = name.indexOf('('); + if (left >= 0) + name = name.substring(0, left); + if (bean == null || name == null) + return null; + PropertyDescriptor[] descriptors = getPropertyDescriptors(bean); + if (descriptors != null) + for (int i = 0; i < descriptors.length; i++) { + if (name.equals(descriptors[i].getName())) + return descriptors[i]; + } + PropertyDescriptor result = null; + FastHashMap mappedDescriptors = getMappedPropertyDescriptors(bean); + if (mappedDescriptors == null) { + mappedDescriptors = new FastHashMap(); + mappedDescriptors.setFast(true); + mappedDescriptorsCache.put(bean.getClass(), mappedDescriptors); + } + result = (PropertyDescriptor)mappedDescriptors.get(name); + if (result == null) { + try { + result = new MappedPropertyDescriptor(name, bean.getClass()); + } catch (IntrospectionException ie) {} + if (result != null) + mappedDescriptors.put(name, result); + } + return result; + } + + public static PropertyDescriptor[] getPropertyDescriptors(Class beanClass) { + if (beanClass == null) + throw new IllegalArgumentException("No bean class specified"); + PropertyDescriptor[] descriptors = null; + descriptors = (PropertyDescriptor[])descriptorsCache.get(beanClass); + if (descriptors != null) + return descriptors; + BeanInfo beanInfo = null; + try { + beanInfo = Introspector.getBeanInfo(beanClass); + } catch (IntrospectionException e) { + return new PropertyDescriptor[0]; + } + descriptors = beanInfo.getPropertyDescriptors(); + if (descriptors == null) + descriptors = new PropertyDescriptor[0]; + descriptorsCache.put(beanClass, descriptors); + return descriptors; + } + + public static PropertyDescriptor[] getPropertyDescriptors(Object bean) { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + return getPropertyDescriptors(bean.getClass()); + } + + public static Class getPropertyEditorClass(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor != null) + return descriptor.getPropertyEditorClass(); + return null; + } + + public static Class getPropertyType(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (bean instanceof DynaBean) { + DynaProperty dynaProperty = ((DynaBean)bean).getDynaClass().getDynaProperty(name); + if (dynaProperty == null) + return null; + Class type = dynaProperty.getType(); + if (type == null) + return null; + if (type.isArray()) + return type.getComponentType(); + return type; + } + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) + return null; + if (descriptor instanceof IndexedPropertyDescriptor) + return ((IndexedPropertyDescriptor)descriptor).getIndexedPropertyType(); + if (descriptor instanceof MappedPropertyDescriptor) + return ((MappedPropertyDescriptor)descriptor).getMappedPropertyType(); + return descriptor.getPropertyType(); + } + + public static Method getReadMethod(PropertyDescriptor descriptor) { + return MethodUtils.getAccessibleMethod(descriptor.getReadMethod()); + } + + public static Object getSimpleProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (name.indexOf('.') >= 0) + throw new IllegalArgumentException("Nested property names are not allowed"); + if (name.indexOf('[') >= 0) + throw new IllegalArgumentException("Indexed property names are not allowed"); + if (name.indexOf('(') >= 0) + throw new IllegalArgumentException("Mapped property names are not allowed"); + if (bean instanceof DynaBean) { + DynaProperty dynaProperty = ((DynaBean)bean).getDynaClass().getDynaProperty(name); + if (dynaProperty == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + return ((DynaBean)bean).get(name); + } + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + Method readMethod = getReadMethod(descriptor); + if (readMethod == null) + throw new NoSuchMethodException("Property '" + name + "' has no getter method"); + Object value = readMethod.invoke(bean, new Object[0]); + return value; + } + + public static Method getWriteMethod(PropertyDescriptor descriptor) { + return MethodUtils.getAccessibleMethod(descriptor.getWriteMethod()); + } + + public static boolean isReadable(Object bean, String name) { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (bean instanceof DynaBean) + return (((DynaBean)bean).getDynaClass().getDynaProperty(name) != null); + try { + PropertyDescriptor desc = getPropertyDescriptor(bean, name); + if (desc != null) { + Method readMethod = desc.getReadMethod(); + if (readMethod == null && desc instanceof IndexedPropertyDescriptor) + readMethod = ((IndexedPropertyDescriptor)desc).getIndexedReadMethod(); + return (readMethod != null); + } + return false; + } catch (IllegalAccessException e) { + return false; + } catch (InvocationTargetException e) { + return false; + } catch (NoSuchMethodException e) { + return false; + } + } + + public static boolean isWriteable(Object bean, String name) { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (bean instanceof DynaBean) + return (((DynaBean)bean).getDynaClass().getDynaProperty(name) != null); + try { + PropertyDescriptor desc = getPropertyDescriptor(bean, name); + if (desc != null) { + Method writeMethod = desc.getWriteMethod(); + if (writeMethod == null && desc instanceof IndexedPropertyDescriptor) + writeMethod = ((IndexedPropertyDescriptor)desc).getIndexedWriteMethod(); + return (writeMethod != null); + } + return false; + } catch (IllegalAccessException e) { + return false; + } catch (InvocationTargetException e) { + return false; + } catch (NoSuchMethodException e) { + return false; + } + } + + public static void setIndexedProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + int delim = name.indexOf('['); + int delim2 = name.indexOf(']'); + if (delim < 0 || delim2 <= delim) + throw new IllegalArgumentException("Invalid indexed property '" + name + "'"); + int index = -1; + try { + String subscript = name.substring(delim + 1, delim2); + index = Integer.parseInt(subscript); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Invalid indexed property '" + name + "'"); + } + name = name.substring(0, delim); + setIndexedProperty(bean, name, index, value); + } + + public static void setIndexedProperty(Object bean, String name, int index, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (bean instanceof DynaBean) { + DynaProperty dynaProperty = ((DynaBean)bean).getDynaClass().getDynaProperty(name); + if (dynaProperty == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + ((DynaBean)bean).set(name, index, value); + return; + } + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + if (descriptor instanceof IndexedPropertyDescriptor) { + Method writeMethod = ((IndexedPropertyDescriptor)descriptor).getIndexedWriteMethod(); + if (writeMethod != null) { + Object[] subscript = new Object[2]; + subscript[0] = new Integer(index); + subscript[1] = value; + try { + writeMethod.invoke(bean, subscript); + } catch (InvocationTargetException e) { + if (e.getTargetException() instanceof ArrayIndexOutOfBoundsException) + throw (ArrayIndexOutOfBoundsException)e.getTargetException(); + throw e; + } + return; + } + } + Method readMethod = descriptor.getReadMethod(); + if (readMethod == null) + throw new NoSuchMethodException("Property '" + name + "' has no getter method"); + Object array = readMethod.invoke(bean, new Object[0]); + if (!array.getClass().isArray()) { + if (array instanceof List) { + ((List)array).set(index, value); + } else { + throw new IllegalArgumentException("Property '" + name + "' is not indexed"); + } + } else { + Array.set(array, index, value); + } + } + + public static void setMappedProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + int delim = name.indexOf('('); + int delim2 = name.indexOf(')'); + if (delim < 0 || delim2 <= delim) + throw new IllegalArgumentException("Invalid mapped property '" + name + "'"); + String key = name.substring(delim + 1, delim2); + name = name.substring(0, delim); + setMappedProperty(bean, name, key, value); + } + + public static void setMappedProperty(Object bean, String name, String key, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (key == null) + throw new IllegalArgumentException("No key specified"); + if (bean instanceof DynaBean) { + DynaProperty dynaProperty = ((DynaBean)bean).getDynaClass().getDynaProperty(name); + if (dynaProperty == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + ((DynaBean)bean).set(name, key, value); + return; + } + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + if (descriptor instanceof MappedPropertyDescriptor) { + Method mappedWriteMethod = ((MappedPropertyDescriptor)descriptor).getMappedWriteMethod(); + if (mappedWriteMethod != null) { + Object[] params = new Object[2]; + params[0] = key; + params[1] = value; + mappedWriteMethod.invoke(bean, params); + } else { + throw new NoSuchMethodException("Property '" + name + "' has no mapped setter method"); + } + } else { + Method readMethod = descriptor.getReadMethod(); + if (readMethod != null) { + Object invokeResult = readMethod.invoke(bean, new Object[0]); + if (invokeResult instanceof Map) + ((Map)invokeResult).put(key, value); + } else { + throw new NoSuchMethodException("Property '" + name + "' has no mapped getter method"); + } + } + } + + public static void setNestedProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + int indexOfINDEXED_DELIM = -1; + int indexOfMAPPED_DELIM = -1; + while (true) { + int delim = name.indexOf('.'); + if (delim < 0) + break; + String next = name.substring(0, delim); + indexOfINDEXED_DELIM = next.indexOf('['); + indexOfMAPPED_DELIM = next.indexOf('('); + if (bean instanceof Map) { + bean = ((Map)bean).get(next); + } else if (indexOfMAPPED_DELIM >= 0) { + bean = getMappedProperty(bean, next); + } else if (indexOfINDEXED_DELIM >= 0) { + bean = getIndexedProperty(bean, next); + } else { + bean = getSimpleProperty(bean, next); + } + if (bean == null) + throw new IllegalArgumentException("Null property value for '" + name.substring(0, delim) + "'"); + name = name.substring(delim + 1); + } + indexOfINDEXED_DELIM = name.indexOf('['); + indexOfMAPPED_DELIM = name.indexOf('('); + if (bean instanceof Map) { + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) { + ((Map)bean).put(name, value); + } else { + setSimpleProperty(bean, name, value); + } + } else if (indexOfMAPPED_DELIM >= 0) { + setMappedProperty(bean, name, value); + } else if (indexOfINDEXED_DELIM >= 0) { + setIndexedProperty(bean, name, value); + } else { + setSimpleProperty(bean, name, value); + } + } + + public static void setProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + setNestedProperty(bean, name, value); + } + + public static void setSimpleProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + if (bean == null) + throw new IllegalArgumentException("No bean specified"); + if (name == null) + throw new IllegalArgumentException("No name specified"); + if (name.indexOf('.') >= 0) + throw new IllegalArgumentException("Nested property names are not allowed"); + if (name.indexOf('[') >= 0) + throw new IllegalArgumentException("Indexed property names are not allowed"); + if (name.indexOf('(') >= 0) + throw new IllegalArgumentException("Mapped property names are not allowed"); + if (bean instanceof DynaBean) { + DynaProperty dynaProperty = ((DynaBean)bean).getDynaClass().getDynaProperty(name); + if (dynaProperty == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + ((DynaBean)bean).set(name, value); + return; + } + PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); + if (descriptor == null) + throw new NoSuchMethodException("Unknown property '" + name + "'"); + Method writeMethod = getWriteMethod(descriptor); + if (writeMethod == null) + throw new NoSuchMethodException("Property '" + name + "' has no setter method"); + Object[] values = new Object[1]; + values[0] = value; + writeMethod.invoke(bean, values); + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/AbstractArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/AbstractArrayConverter.java new file mode 100644 index 0000000..eb39cd6 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/AbstractArrayConverter.java @@ -0,0 +1,52 @@ +package org.apache.commons.beanutils.converters; + +import java.io.IOException; +import java.io.StreamTokenizer; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public abstract class AbstractArrayConverter implements Converter { + protected Object defaultValue = null; + + protected static String[] strings = new String[0]; + + protected boolean useDefault = true; + + public abstract Object convert(Class paramClass, Object paramObject); + + protected List parseElements(String svalue) { + if (svalue == null) + throw new NullPointerException(); + svalue = svalue.trim(); + if (svalue.startsWith("{") && svalue.endsWith("}")) + svalue = svalue.substring(1, svalue.length() - 1); + try { + int ttype; + StreamTokenizer st = new StreamTokenizer(new StringReader(svalue)); + st.whitespaceChars(44, 44); + st.ordinaryChars(48, 57); + st.ordinaryChars(46, 46); + st.ordinaryChars(45, 45); + st.wordChars(48, 57); + st.wordChars(46, 46); + st.wordChars(45, 45); + ArrayList list = new ArrayList(); + while (true) { + ttype = st.nextToken(); + if (ttype == -3 || ttype > 0) { + list.add(st.sval); + continue; + } + break; + } + if (ttype == -1) + return list; + throw new ConversionException("Encountered token of type " + ttype); + } catch (IOException e) { + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/BigDecimalConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/BigDecimalConverter.java new file mode 100644 index 0000000..15f9ec9 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/BigDecimalConverter.java @@ -0,0 +1,42 @@ +package org.apache.commons.beanutils.converters; + +import java.math.BigDecimal; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class BigDecimalConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public BigDecimalConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public BigDecimalConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof BigDecimal) + return value; + try { + return new BigDecimal(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/BigIntegerConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/BigIntegerConverter.java new file mode 100644 index 0000000..4aa53f9 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/BigIntegerConverter.java @@ -0,0 +1,42 @@ +package org.apache.commons.beanutils.converters; + +import java.math.BigInteger; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class BigIntegerConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public BigIntegerConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public BigIntegerConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof BigInteger) + return value; + try { + return new BigInteger(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/BooleanArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/BooleanArrayConverter.java new file mode 100644 index 0000000..27d71bc --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/BooleanArrayConverter.java @@ -0,0 +1,71 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class BooleanArrayConverter extends AbstractArrayConverter { + public BooleanArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public BooleanArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static boolean[] model = new boolean[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + boolean[] results = new boolean[values.length]; + for (int i = 0; i < values.length; i++) { + String stringValue = values[i]; + if (stringValue.equalsIgnoreCase("yes") || stringValue.equalsIgnoreCase("y") || stringValue.equalsIgnoreCase("true") || stringValue.equalsIgnoreCase("on") || stringValue.equalsIgnoreCase("1")) { + results[i] = true; + } else if (stringValue.equalsIgnoreCase("no") || stringValue.equalsIgnoreCase("n") || stringValue.equalsIgnoreCase("false") || stringValue.equalsIgnoreCase("off") || stringValue.equalsIgnoreCase("0")) { + results[i] = false; + } else { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString()); + } + } + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + boolean[] results = new boolean[list.size()]; + for (int i = 0; i < results.length; i++) { + String stringValue = list.get(i); + if (stringValue.equalsIgnoreCase("yes") || stringValue.equalsIgnoreCase("y") || stringValue.equalsIgnoreCase("true") || stringValue.equalsIgnoreCase("on") || stringValue.equalsIgnoreCase("1")) { + results[i] = true; + } else if (stringValue.equalsIgnoreCase("no") || stringValue.equalsIgnoreCase("n") || stringValue.equalsIgnoreCase("false") || stringValue.equalsIgnoreCase("off") || stringValue.equalsIgnoreCase("0")) { + results[i] = false; + } else { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString()); + } + } + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/BooleanConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/BooleanConverter.java new file mode 100644 index 0000000..ec17cfc --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/BooleanConverter.java @@ -0,0 +1,48 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class BooleanConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public BooleanConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public BooleanConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Boolean) + return value; + try { + String stringValue = value.toString(); + if (stringValue.equalsIgnoreCase("yes") || stringValue.equalsIgnoreCase("y") || stringValue.equalsIgnoreCase("true") || stringValue.equalsIgnoreCase("on") || stringValue.equalsIgnoreCase("1")) + return Boolean.TRUE; + if (stringValue.equalsIgnoreCase("no") || stringValue.equalsIgnoreCase("n") || stringValue.equalsIgnoreCase("false") || stringValue.equalsIgnoreCase("off") || stringValue.equalsIgnoreCase("0")) + return Boolean.FALSE; + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(stringValue); + } catch (ClassCastException e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/ByteArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/ByteArrayConverter.java new file mode 100644 index 0000000..5140c59 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/ByteArrayConverter.java @@ -0,0 +1,51 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class ByteArrayConverter extends AbstractArrayConverter { + public ByteArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public ByteArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static byte[] model = new byte[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + byte[] results = new byte[values.length]; + for (int i = 0; i < values.length; i++) + results[i] = Byte.parseByte(values[i]); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + byte[] results = new byte[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = Byte.parseByte((String)list.get(i)); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/ByteConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/ByteConverter.java new file mode 100644 index 0000000..25b1e39 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/ByteConverter.java @@ -0,0 +1,43 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class ByteConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public ByteConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public ByteConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Byte) + return value; + if (value instanceof Number) + return new Byte(((Number)value).byteValue()); + try { + return new Byte(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/CharacterArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/CharacterArrayConverter.java new file mode 100644 index 0000000..fc15dfa --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/CharacterArrayConverter.java @@ -0,0 +1,51 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class CharacterArrayConverter extends AbstractArrayConverter { + public CharacterArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public CharacterArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static char[] model = new char[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + char[] results = new char[values.length]; + for (int i = 0; i < values.length; i++) + results[i] = values[i].charAt(0); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + char[] results = new char[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = ((String)list.get(i)).charAt(0); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/CharacterConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/CharacterConverter.java new file mode 100644 index 0000000..d7fefb3 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/CharacterConverter.java @@ -0,0 +1,41 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class CharacterConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public CharacterConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public CharacterConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Character) + return value; + try { + return new Character(value.toString().charAt(0)); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/ClassConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/ClassConverter.java new file mode 100644 index 0000000..cc6ebae --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/ClassConverter.java @@ -0,0 +1,44 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class ClassConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public ClassConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public ClassConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Class) + return value; + try { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader == null) + classLoader = ClassConverter.class.getClassLoader(); + return classLoader.loadClass(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/DoubleArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/DoubleArrayConverter.java new file mode 100644 index 0000000..015a1a7 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/DoubleArrayConverter.java @@ -0,0 +1,51 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class DoubleArrayConverter extends AbstractArrayConverter { + public DoubleArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public DoubleArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static double[] model = new double[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + double[] results = new double[values.length]; + for (int i = 0; i < values.length; i++) + results[i] = Double.parseDouble(values[i]); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + double[] results = new double[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = Double.parseDouble((String)list.get(i)); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/DoubleConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/DoubleConverter.java new file mode 100644 index 0000000..ea2658b --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/DoubleConverter.java @@ -0,0 +1,43 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class DoubleConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public DoubleConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public DoubleConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Double) + return value; + if (value instanceof Number) + return new Double(((Number)value).doubleValue()); + try { + return new Double(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/FloatArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/FloatArrayConverter.java new file mode 100644 index 0000000..1052df5 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/FloatArrayConverter.java @@ -0,0 +1,51 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class FloatArrayConverter extends AbstractArrayConverter { + public FloatArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public FloatArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static float[] model = new float[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + float[] results = new float[values.length]; + for (int i = 0; i < values.length; i++) + results[i] = Float.parseFloat(values[i]); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + float[] results = new float[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = Float.parseFloat((String)list.get(i)); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/FloatConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/FloatConverter.java new file mode 100644 index 0000000..7ed63fb --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/FloatConverter.java @@ -0,0 +1,43 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class FloatConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public FloatConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public FloatConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Float) + return value; + if (value instanceof Number) + return new Float(((Number)value).floatValue()); + try { + return new Float(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/IntegerArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/IntegerArrayConverter.java new file mode 100644 index 0000000..49bdb14 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/IntegerArrayConverter.java @@ -0,0 +1,51 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class IntegerArrayConverter extends AbstractArrayConverter { + public IntegerArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public IntegerArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static int[] model = new int[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + int[] results = new int[values.length]; + for (int i = 0; i < values.length; i++) + results[i] = Integer.parseInt(values[i]); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + int[] results = new int[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = Integer.parseInt((String)list.get(i)); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/IntegerConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/IntegerConverter.java new file mode 100644 index 0000000..c2cb14a --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/IntegerConverter.java @@ -0,0 +1,43 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class IntegerConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public IntegerConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public IntegerConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Integer) + return value; + if (value instanceof Number) + return new Integer(((Number)value).intValue()); + try { + return new Integer(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/LongArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/LongArrayConverter.java new file mode 100644 index 0000000..a6f2f16 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/LongArrayConverter.java @@ -0,0 +1,51 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class LongArrayConverter extends AbstractArrayConverter { + public LongArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public LongArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static long[] model = new long[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + long[] results = new long[values.length]; + for (int i = 0; i < values.length; i++) + results[i] = Long.parseLong(values[i]); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + long[] results = new long[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = Long.parseLong((String)list.get(i)); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/LongConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/LongConverter.java new file mode 100644 index 0000000..bc13222 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/LongConverter.java @@ -0,0 +1,43 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class LongConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public LongConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public LongConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Long) + return value; + if (value instanceof Number) + return new Long(((Number)value).longValue()); + try { + return new Long(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/ShortArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/ShortArrayConverter.java new file mode 100644 index 0000000..892201c --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/ShortArrayConverter.java @@ -0,0 +1,51 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class ShortArrayConverter extends AbstractArrayConverter { + public ShortArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public ShortArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static short[] model = new short[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + if (AbstractArrayConverter.strings.getClass() == value.getClass()) + try { + String[] values = (String[])value; + short[] results = new short[values.length]; + for (int i = 0; i < values.length; i++) + results[i] = Short.parseShort(values[i]); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + try { + List list = parseElements(value.toString()); + short[] results = new short[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = Short.parseShort((String)list.get(i)); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/ShortConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/ShortConverter.java new file mode 100644 index 0000000..e0a81c9 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/ShortConverter.java @@ -0,0 +1,43 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class ShortConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public ShortConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public ShortConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Short) + return value; + if (value instanceof Number) + return new Short(((Number)value).shortValue()); + try { + return new Short(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/SqlDateConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/SqlDateConverter.java new file mode 100644 index 0000000..57fba83 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/SqlDateConverter.java @@ -0,0 +1,42 @@ +package org.apache.commons.beanutils.converters; + +import java.sql.Date; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class SqlDateConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public SqlDateConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public SqlDateConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Date) + return value; + try { + return Date.valueOf(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/SqlTimeConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/SqlTimeConverter.java new file mode 100644 index 0000000..d99473c --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/SqlTimeConverter.java @@ -0,0 +1,42 @@ +package org.apache.commons.beanutils.converters; + +import java.sql.Time; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class SqlTimeConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public SqlTimeConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public SqlTimeConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Time) + return value; + try { + return Time.valueOf(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/SqlTimestampConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/SqlTimestampConverter.java new file mode 100644 index 0000000..1edbbdf --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/SqlTimestampConverter.java @@ -0,0 +1,42 @@ +package org.apache.commons.beanutils.converters; + +import java.sql.Timestamp; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +public final class SqlTimestampConverter implements Converter { + private Object defaultValue; + + private boolean useDefault; + + public SqlTimestampConverter() { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = null; + this.useDefault = false; + } + + public SqlTimestampConverter(Object defaultValue) { + this.defaultValue = null; + this.useDefault = true; + this.defaultValue = defaultValue; + this.useDefault = true; + } + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (value instanceof Timestamp) + return value; + try { + return Timestamp.valueOf(value.toString()); + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/StringArrayConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/StringArrayConverter.java new file mode 100644 index 0000000..21ead25 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/StringArrayConverter.java @@ -0,0 +1,39 @@ +package org.apache.commons.beanutils.converters; + +import java.util.List; +import org.apache.commons.beanutils.ConversionException; + +public final class StringArrayConverter extends AbstractArrayConverter { + public StringArrayConverter() { + this.defaultValue = null; + this.useDefault = false; + } + + public StringArrayConverter(Object defaultValue) { + this.defaultValue = defaultValue; + this.useDefault = true; + } + + private static String[] model = new String[0]; + + public Object convert(Class type, Object value) { + if (value == null) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException("No value specified"); + } + if (model.getClass() == value.getClass()) + return value; + try { + List list = parseElements(value.toString()); + String[] results = new String[list.size()]; + for (int i = 0; i < results.length; i++) + results[i] = list.get(i); + return results; + } catch (Exception e) { + if (this.useDefault) + return this.defaultValue; + throw new ConversionException(value.toString(), e); + } + } +} diff --git a/hrmsEjb/org/apache/commons/beanutils/converters/StringConverter.java b/hrmsEjb/org/apache/commons/beanutils/converters/StringConverter.java new file mode 100644 index 0000000..dfde755 --- /dev/null +++ b/hrmsEjb/org/apache/commons/beanutils/converters/StringConverter.java @@ -0,0 +1,11 @@ +package org.apache.commons.beanutils.converters; + +import org.apache.commons.beanutils.Converter; + +public final class StringConverter implements Converter { + public Object convert(Class type, Object value) { + if (value == null) + return null; + return value.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/collections/ArrayStack.java b/hrmsEjb/org/apache/commons/collections/ArrayStack.java new file mode 100644 index 0000000..43b543b --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/ArrayStack.java @@ -0,0 +1,69 @@ +package org.apache.commons.collections; + +import java.util.ArrayList; +import java.util.EmptyStackException; + +public class ArrayStack extends ArrayList implements Buffer { + private static final long serialVersionUID = 2130079159931574599L; + + public ArrayStack() {} + + public ArrayStack(int paramInt) { + super(paramInt); + } + + public boolean empty() { + return isEmpty(); + } + + public Object get() { + int i = size(); + if (i == 0) + throw new BufferUnderflowException(); + return get(i - 1); + } + + public Object peek() throws EmptyStackException { + int i = size(); + if (i <= 0) + throw new EmptyStackException(); + return get(i - 1); + } + + public Object peek(int paramInt) throws EmptyStackException { + int i = size() - paramInt - 1; + if (i < 0) + throw new EmptyStackException(); + return get(i); + } + + public Object pop() throws EmptyStackException { + int i = size(); + if (i <= 0) + throw new EmptyStackException(); + return remove(i - 1); + } + + public Object push(Object paramObject) { + add((E)paramObject); + return paramObject; + } + + public Object remove() { + int i = size(); + if (i == 0) + throw new BufferUnderflowException(); + return remove(i - 1); + } + + public int search(Object paramObject) { + int i = size() - 1; + for (byte b = 1; i >= 0; b++) { + E e = get(i); + if ((paramObject == null && e == null) || (paramObject != null && paramObject.equals(e))) + return b; + i--; + } + return -1; + } +} diff --git a/hrmsEjb/org/apache/commons/collections/Buffer.java b/hrmsEjb/org/apache/commons/collections/Buffer.java new file mode 100644 index 0000000..a51d82a --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/Buffer.java @@ -0,0 +1,9 @@ +package org.apache.commons.collections; + +import java.util.Collection; + +public interface Buffer extends Collection { + Object get(); + + Object remove(); +} diff --git a/hrmsEjb/org/apache/commons/collections/BufferUnderflowException.java b/hrmsEjb/org/apache/commons/collections/BufferUnderflowException.java new file mode 100644 index 0000000..7ad32ad --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/BufferUnderflowException.java @@ -0,0 +1,19 @@ +package org.apache.commons.collections; + +public class BufferUnderflowException extends RuntimeException { + private final Throwable m_throwable = null; + + public BufferUnderflowException() {} + + public BufferUnderflowException(String paramString) { + this(paramString, null); + } + + public BufferUnderflowException(String paramString, Throwable paramThrowable) { + super(paramString); + } + + public final Throwable getCause() { + return this.m_throwable; + } +} diff --git a/hrmsEjb/org/apache/commons/collections/DefaultMapEntry.java b/hrmsEjb/org/apache/commons/collections/DefaultMapEntry.java new file mode 100644 index 0000000..8775e03 --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/DefaultMapEntry.java @@ -0,0 +1,49 @@ +package org.apache.commons.collections; + +import java.util.Map; + +public class DefaultMapEntry implements Map.Entry { + private Object key; + + private Object value; + + public DefaultMapEntry() {} + + public DefaultMapEntry(Object paramObject1, Object paramObject2) { + this.key = paramObject1; + this.value = paramObject2; + } + + public boolean equals(Object paramObject) { + if (paramObject == null) + return false; + if (paramObject == this) + return true; + if (!(paramObject instanceof Map.Entry)) + return false; + Map.Entry entry = (Map.Entry)paramObject; + return !(!((getKey() == null) ? (entry.getKey() == null) : getKey().equals(entry.getKey())) || !((getValue() == null) ? (entry.getValue() == null) : getValue().equals(entry.getValue()))); + } + + public Object getKey() { + return this.key; + } + + public Object getValue() { + return this.value; + } + + public int hashCode() { + return ((getKey() == null) ? 0 : getKey().hashCode()) ^ ((getValue() == null) ? 0 : getValue().hashCode()); + } + + public void setKey(Object paramObject) { + this.key = paramObject; + } + + public Object setValue(Object paramObject) { + Object object = this.value; + this.value = paramObject; + return object; + } +} diff --git a/hrmsEjb/org/apache/commons/collections/FastHashMap.java b/hrmsEjb/org/apache/commons/collections/FastHashMap.java new file mode 100644 index 0000000..2e8a20d --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/FastHashMap.java @@ -0,0 +1,455 @@ +package org.apache.commons.collections; + +import java.util.Collection; +import java.util.ConcurrentModificationException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +public class FastHashMap extends HashMap { + protected HashMap map = null; + + protected boolean fast = false; + + public FastHashMap() { + this.map = new HashMap(); + } + + public FastHashMap(int paramInt) { + this.map = new HashMap(paramInt); + } + + public FastHashMap(int paramInt, float paramFloat) { + this.map = new HashMap(paramInt, paramFloat); + } + + public FastHashMap(Map paramMap) { + this.map = new HashMap(paramMap); + } + + public void clear() { + if (this.fast) { + synchronized (this) { + HashMap hashMap = (HashMap)this.map.clone(); + hashMap.clear(); + this.map = hashMap; + } + } else { + synchronized (this.map) { + this.map.clear(); + } + } + } + + public Object clone() { + FastHashMap fastHashMap = null; + if (this.fast) { + fastHashMap = new FastHashMap(this.map); + } else { + synchronized (this.map) { + fastHashMap = new FastHashMap(this.map); + } + } + fastHashMap.setFast(getFast()); + return fastHashMap; + } + + public boolean containsKey(Object paramObject) { + if (this.fast) + return this.map.containsKey(paramObject); + synchronized (this.map) { + return this.map.containsKey(paramObject); + } + } + + public boolean containsValue(Object paramObject) { + if (this.fast) + return this.map.containsValue(paramObject); + synchronized (this.map) { + return this.map.containsValue(paramObject); + } + } + + public Set entrySet() { + return new EntrySet(this); + } + + public boolean equals(Object paramObject) { + if (paramObject == this) + return true; + if (!(paramObject instanceof Map)) + return false; + Map map = (Map)paramObject; + if (this.fast) { + if (map.size() != this.map.size()) + return false; + for (Map.Entry entry : this.map.entrySet()) { + Object object1 = entry.getKey(); + Object object2 = entry.getValue(); + if (object2 == null) { + if (map.get(object1) != null || !map.containsKey(object1)) + return false; + continue; + } + if (!object2.equals(map.get(object1))) + return false; + } + return true; + } + synchronized (this.map) { + if (map.size() != this.map.size()) + return false; + for (Map.Entry entry : this.map.entrySet()) { + Object object1 = entry.getKey(); + Object object2 = entry.getValue(); + if (object2 == null) { + if (map.get(object1) != null || !map.containsKey(object1)) + return false; + continue; + } + if (!object2.equals(map.get(object1))) + return false; + } + return true; + } + } + + public Object get(Object paramObject) { + if (this.fast) + return this.map.get(paramObject); + synchronized (this.map) { + return this.map.get(paramObject); + } + } + + public boolean getFast() { + return this.fast; + } + + public int hashCode() { + if (this.fast) { + int i = 0; + Iterator iterator = this.map.entrySet().iterator(); + while (iterator.hasNext()) + i += iterator.next().hashCode(); + return i; + } + synchronized (this.map) { + int i = 0; + Iterator iterator = this.map.entrySet().iterator(); + while (iterator.hasNext()) + i += iterator.next().hashCode(); + return i; + } + } + + public boolean isEmpty() { + if (this.fast) + return this.map.isEmpty(); + synchronized (this.map) { + return this.map.isEmpty(); + } + } + + public Set keySet() { + return new KeySet(this); + } + + public Object put(Object paramObject1, Object paramObject2) { + if (this.fast) + synchronized (this) { + HashMap hashMap = (HashMap)this.map.clone(); + Object object = hashMap.put(paramObject1, paramObject2); + this.map = hashMap; + return object; + } + synchronized (this.map) { + return this.map.put(paramObject1, paramObject2); + } + } + + public void putAll(Map paramMap) { + if (this.fast) { + synchronized (this) { + HashMap hashMap = (HashMap)this.map.clone(); + hashMap.putAll(paramMap); + this.map = hashMap; + } + } else { + synchronized (this.map) { + this.map.putAll(paramMap); + } + } + } + + public Object remove(Object paramObject) { + if (this.fast) + synchronized (this) { + HashMap hashMap = (HashMap)this.map.clone(); + Object object = hashMap.remove(paramObject); + this.map = hashMap; + return object; + } + synchronized (this.map) { + return this.map.remove(paramObject); + } + } + + public void setFast(boolean paramBoolean) { + this.fast = paramBoolean; + } + + public int size() { + if (this.fast) + return this.map.size(); + synchronized (this.map) { + return this.map.size(); + } + } + + public Collection values() { + return new Values(this); + } + + private abstract class CollectionView implements Collection { + private final FastHashMap this$0; + + public CollectionView(FastHashMap this$0) { + this.this$0 = this$0; + } + + public boolean add(Object param1Object) { + throw new UnsupportedOperationException(); + } + + public boolean addAll(Collection param1Collection) { + throw new UnsupportedOperationException(); + } + + public void clear() { + if (this.this$0.fast) { + synchronized (this.this$0) { + HashMap hashMap = (HashMap)this.this$0.map.clone(); + get(hashMap).clear(); + this.this$0.map = hashMap; + } + } else { + synchronized (this.this$0.map) { + get(this.this$0.map).clear(); + } + } + } + + public boolean contains(Object param1Object) { + if (this.this$0.fast) + return get(this.this$0.map).contains(param1Object); + synchronized (this.this$0.map) { + return get(this.this$0.map).contains(param1Object); + } + } + + public boolean containsAll(Collection param1Collection) { + if (this.this$0.fast) + return get(this.this$0.map).containsAll(param1Collection); + synchronized (this.this$0.map) { + return get(this.this$0.map).containsAll(param1Collection); + } + } + + public boolean equals(Object param1Object) { + if (param1Object == this) + return true; + if (this.this$0.fast) + return get(this.this$0.map).equals(param1Object); + synchronized (this.this$0.map) { + return get(this.this$0.map).equals(param1Object); + } + } + + protected abstract Collection get(Map param1Map); + + public int hashCode() { + if (this.this$0.fast) + return get(this.this$0.map).hashCode(); + synchronized (this.this$0.map) { + return get(this.this$0.map).hashCode(); + } + } + + public boolean isEmpty() { + if (this.this$0.fast) + return get(this.this$0.map).isEmpty(); + synchronized (this.this$0.map) { + return get(this.this$0.map).isEmpty(); + } + } + + public Iterator iterator() { + return new CollectionViewIterator(this); + } + + protected abstract Object iteratorNext(Map.Entry param1Entry); + + public boolean remove(Object param1Object) { + if (this.this$0.fast) + synchronized (this.this$0) { + HashMap hashMap = (HashMap)this.this$0.map.clone(); + boolean bool = get(hashMap).remove(param1Object); + this.this$0.map = hashMap; + return bool; + } + synchronized (this.this$0.map) { + return get(this.this$0.map).remove(param1Object); + } + } + + public boolean removeAll(Collection param1Collection) { + if (this.this$0.fast) + synchronized (this.this$0) { + HashMap hashMap = (HashMap)this.this$0.map.clone(); + boolean bool = get(hashMap).removeAll(param1Collection); + this.this$0.map = hashMap; + return bool; + } + synchronized (this.this$0.map) { + return get(this.this$0.map).removeAll(param1Collection); + } + } + + public boolean retainAll(Collection param1Collection) { + if (this.this$0.fast) + synchronized (this.this$0) { + HashMap hashMap = (HashMap)this.this$0.map.clone(); + boolean bool = get(hashMap).retainAll(param1Collection); + this.this$0.map = hashMap; + return bool; + } + synchronized (this.this$0.map) { + return get(this.this$0.map).retainAll(param1Collection); + } + } + + public int size() { + if (this.this$0.fast) + return get(this.this$0.map).size(); + synchronized (this.this$0.map) { + return get(this.this$0.map).size(); + } + } + + public Object[] toArray() { + if (this.this$0.fast) + return get(this.this$0.map).toArray(); + synchronized (this.this$0.map) { + return get(this.this$0.map).toArray(); + } + } + + public Object[] toArray(Object[] param1ArrayOfObject) { + if (this.this$0.fast) + return get(this.this$0.map).toArray(param1ArrayOfObject); + synchronized (this.this$0.map) { + return get(this.this$0.map).toArray(param1ArrayOfObject); + } + } + + private class CollectionViewIterator implements Iterator { + private final FastHashMap.CollectionView this$1; + + private Map expected; + + private Map.Entry lastReturned; + + private Iterator iterator; + + public CollectionViewIterator(FastHashMap.CollectionView this$0) { + this.this$1 = this$0; + this.lastReturned = null; + this.expected = this$0.this$0.map; + this.iterator = this.expected.entrySet().iterator(); + } + + public boolean hasNext() { + if (this.expected != this.this$1.this$0.map) + throw new ConcurrentModificationException(); + return this.iterator.hasNext(); + } + + public Object next() { + if (this.expected != this.this$1.this$0.map) + throw new ConcurrentModificationException(); + this.lastReturned = this.iterator.next(); + return this.this$1.iteratorNext(this.lastReturned); + } + + public void remove() { + if (this.lastReturned == null) + throw new IllegalStateException(); + if (this.this$1.this$0.fast) { + synchronized (this.this$1.this$0) { + if (this.expected != this.this$1.this$0.map) + throw new ConcurrentModificationException(); + this.this$1.this$0.remove(this.lastReturned.getKey()); + this.lastReturned = null; + this.expected = this.this$1.this$0.map; + } + } else { + this.iterator.remove(); + this.lastReturned = null; + } + } + } + } + + private class KeySet extends CollectionView implements Set { + private final FastHashMap this$0; + + KeySet(FastHashMap this$0) { + super(this$0); + this.this$0 = this$0; + } + + protected Collection get(Map param1Map) { + return param1Map.keySet(); + } + + protected Object iteratorNext(Map.Entry param1Entry) { + return param1Entry.getKey(); + } + } + + private class Values extends CollectionView { + private final FastHashMap this$0; + + Values(FastHashMap this$0) { + super(this$0); + this.this$0 = this$0; + } + + protected Collection get(Map param1Map) { + return param1Map.values(); + } + + protected Object iteratorNext(Map.Entry param1Entry) { + return param1Entry.getValue(); + } + } + + private class EntrySet extends CollectionView implements Set { + private final FastHashMap this$0; + + EntrySet(FastHashMap this$0) { + super(this$0); + this.this$0 = this$0; + } + + protected Collection get(Map param1Map) { + return param1Map.entrySet(); + } + + protected Object iteratorNext(Map.Entry param1Entry) { + return param1Entry; + } + } +} diff --git a/hrmsEjb/org/apache/commons/collections/ReferenceMap.java b/hrmsEjb/org/apache/commons/collections/ReferenceMap.java new file mode 100644 index 0000000..e186108 --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/ReferenceMap.java @@ -0,0 +1,563 @@ +package org.apache.commons.collections; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.SoftReference; +import java.lang.ref.WeakReference; +import java.util.AbstractCollection; +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; + +public class ReferenceMap extends AbstractMap { + private static final long serialVersionUID = -3370601314380922368L; + + public static final int HARD = 0; + + public static final int SOFT = 1; + + public static final int WEAK = 2; + + private int keyType; + + private int valueType; + + private float loadFactor; + + private transient ReferenceQueue queue = new ReferenceQueue(); + + private transient Entry[] table; + + private transient int size; + + private transient int threshold; + + private volatile transient int modCount; + + private transient Set keySet; + + private transient Set entrySet; + + private transient Collection values; + + public ReferenceMap() { + this(0, 1); + } + + public ReferenceMap(int paramInt1, int paramInt2) { + this(paramInt1, paramInt2, 16, 0.75F); + } + + public ReferenceMap(int paramInt1, int paramInt2, int paramInt3, float paramFloat) { + verify("keyType", paramInt1); + verify("valueType", paramInt2); + if (paramInt3 <= 0) + throw new IllegalArgumentException("capacity must be positive"); + if (paramFloat <= 0.0F || paramFloat >= 1.0F) + throw new IllegalArgumentException("Load factor must be greater than 0 and less than 1."); + this.keyType = paramInt1; + this.valueType = paramInt2; + int i; + for (i = 1; i < paramInt3; i *= 2); + this.table = new Entry[i]; + this.loadFactor = paramFloat; + this.threshold = (int)(i * paramFloat); + } + + public void clear() { + Arrays.fill((Object[])this.table, (Object)null); + this.size = 0; + do { + + } while (this.queue.poll() != null); + } + + public boolean containsKey(Object paramObject) { + purge(); + Entry entry = getEntry(paramObject); + return (entry == null) ? false : (!(entry.getValue() == null)); + } + + public Set entrySet() { + if (this.entrySet != null) + return this.entrySet; + this.entrySet = new AbstractSet(this) { + private final ReferenceMap this$0; + + public void clear() { + this.this$0.clear(); + } + + public boolean contains(Object param1Object) { + if (param1Object == null) + return false; + if (!(param1Object instanceof Map.Entry)) + return false; + Map.Entry entry = (Map.Entry)param1Object; + ReferenceMap.Entry entry1 = this.this$0.getEntry(entry.getKey()); + return !(entry1 == null || !entry.equals(entry1)); + } + + public Iterator iterator() { + return new ReferenceMap.EntryIterator(this.this$0); + } + + public boolean remove(Object param1Object) { + boolean bool = contains(param1Object); + if (bool) { + Map.Entry entry = (Map.Entry)param1Object; + this.this$0.remove(entry.getKey()); + } + return bool; + } + + public int size() { + return this.this$0.size(); + } + + public Object[] toArray() { + return toArray(new Object[0]); + } + + public Object[] toArray(Object[] param1ArrayOfObject) { + ArrayList arrayList = new ArrayList(); + for (ReferenceMap.Entry entry : this) + arrayList.add(new DefaultMapEntry(entry.getKey(), entry.getValue())); + return arrayList.toArray(param1ArrayOfObject); + } + }; + return this.entrySet; + } + + public Object get(Object paramObject) { + purge(); + Entry entry = getEntry(paramObject); + return (entry == null) ? null : entry.getValue(); + } + + private Entry getEntry(Object paramObject) { + if (paramObject == null) + return null; + int i = paramObject.hashCode(); + int j = indexFor(i); + for (Entry entry = this.table[j]; entry != null; entry = entry.next) { + if (entry.hash == i && paramObject.equals(entry.getKey())) + return entry; + } + return null; + } + + private int indexFor(int paramInt) { + paramInt += paramInt << 15 ^ 0xFFFFFFFF; + paramInt ^= paramInt >>> 10; + paramInt += paramInt << 3; + paramInt ^= paramInt >>> 6; + paramInt += paramInt << 11 ^ 0xFFFFFFFF; + paramInt ^= paramInt >>> 16; + return paramInt & this.table.length - 1; + } + + public boolean isEmpty() { + purge(); + return !(this.size != 0); + } + + public Set keySet() { + if (this.keySet != null) + return this.keySet; + this.keySet = new AbstractSet(this) { + private final ReferenceMap this$0; + + public void clear() { + this.this$0.clear(); + } + + public boolean contains(Object param1Object) { + return this.this$0.containsKey(param1Object); + } + + public Iterator iterator() { + return new ReferenceMap.KeyIterator(this.this$0); + } + + public boolean remove(Object param1Object) { + Object object = this.this$0.remove(param1Object); + return !(object == null); + } + + public int size() { + return this.this$0.size; + } + }; + return this.keySet; + } + + private void purge() { + for (Reference reference = this.queue.poll(); reference != null; reference = this.queue.poll()) + purge(reference); + } + + private void purge(Reference paramReference) { + int i = paramReference.hashCode(); + int j = indexFor(i); + Entry entry1 = null; + for (Entry entry2 = this.table[j]; entry2 != null; entry2 = entry2.next) { + if (entry2.purge(paramReference)) { + if (entry1 == null) { + this.table[j] = entry2.next; + } else { + entry1.next = entry2.next; + } + this.size--; + return; + } + entry1 = entry2; + } + } + + public Object put(Object paramObject1, Object paramObject2) { + if (paramObject1 == null) + throw new NullPointerException("null keys not allowed"); + if (paramObject2 == null) + throw new NullPointerException("null values not allowed"); + purge(); + if (this.size + 1 > this.threshold) + resize(); + int i = paramObject1.hashCode(); + int j = indexFor(i); + for (Entry entry = this.table[j]; entry != null; entry = entry.next) { + if (i == entry.hash && paramObject1.equals(entry.getKey())) { + Object object = entry.getValue(); + entry.setValue(paramObject2); + return object; + } + } + this.size++; + this.modCount++; + paramObject1 = toReference(this.keyType, paramObject1, i); + paramObject2 = toReference(this.valueType, paramObject2, i); + this.table[j] = new Entry(this, paramObject1, i, paramObject2, this.table[j]); + return null; + } + + private void readObject(ObjectInputStream paramObjectInputStream) throws IOException, ClassNotFoundException { + paramObjectInputStream.defaultReadObject(); + this.table = new Entry[paramObjectInputStream.readInt()]; + this.threshold = (int)(this.table.length * this.loadFactor); + this.queue = new ReferenceQueue(); + for (Object object = paramObjectInputStream.readObject(); object != null; object = paramObjectInputStream.readObject()) { + Object object1 = paramObjectInputStream.readObject(); + put(object, object1); + } + } + + public Object remove(Object paramObject) { + if (paramObject == null) + return null; + purge(); + int i = paramObject.hashCode(); + int j = indexFor(i); + Entry entry1 = null; + for (Entry entry2 = this.table[j]; entry2 != null; entry2 = entry2.next) { + if (i == entry2.hash && paramObject.equals(entry2.getKey())) { + if (entry1 == null) { + this.table[j] = entry2.next; + } else { + entry1.next = entry2.next; + } + this.size--; + this.modCount++; + return entry2.getValue(); + } + entry1 = entry2; + } + return null; + } + + private void resize() { + Entry[] arrayOfEntry = this.table; + this.table = new Entry[arrayOfEntry.length * 2]; + for (byte b = 0; b < arrayOfEntry.length; b++) { + Entry entry = arrayOfEntry[b]; + while (entry != null) { + Entry entry1 = entry; + entry = entry.next; + int i = indexFor(entry1.hash); + entry1.next = this.table[i]; + this.table[i] = entry1; + } + arrayOfEntry[b] = null; + } + this.threshold = (int)(this.table.length * this.loadFactor); + } + + public int size() { + purge(); + return this.size; + } + + private Object toReference(int paramInt1, Object paramObject, int paramInt2) { + switch (paramInt1) { + case 0: + return paramObject; + case 1: + return new SoftRef(paramInt2, paramObject, this.queue); + case 2: + return new WeakRef(paramInt2, paramObject, this.queue); + } + throw new Error(); + } + + public Collection values() { + if (this.values != null) + return this.values; + this.values = new AbstractCollection(this) { + private final ReferenceMap this$0; + + public void clear() { + this.this$0.clear(); + } + + public Iterator iterator() { + return new ReferenceMap.ValueIterator(this.this$0); + } + + public int size() { + return this.this$0.size; + } + }; + return this.values; + } + + private static void verify(String paramString, int paramInt) { + if (paramInt < 0 || paramInt > 2) + throw new IllegalArgumentException(String.valueOf(paramString) + " must be HARD, SOFT, WEAK."); + } + + private void writeObject(ObjectOutputStream paramObjectOutputStream) throws IOException { + paramObjectOutputStream.defaultWriteObject(); + paramObjectOutputStream.writeInt(this.table.length); + for (Map.Entry entry : entrySet()) { + paramObjectOutputStream.writeObject(entry.getKey()); + paramObjectOutputStream.writeObject(entry.getValue()); + } + paramObjectOutputStream.writeObject(null); + } + + private class Entry implements Map.Entry { + private final ReferenceMap this$0; + + Object key; + + Object value; + + int hash; + + Entry next; + + public Entry(ReferenceMap this$0, Object param1Object1, int param1Int, Object param1Object2, Entry param1Entry) { + this.this$0 = this$0; + this.key = param1Object1; + this.hash = param1Int; + this.value = param1Object2; + this.next = param1Entry; + } + + public boolean equals(Object param1Object) { + if (param1Object == null) + return false; + if (param1Object == this) + return true; + if (!(param1Object instanceof Map.Entry)) + return false; + Map.Entry entry = (Map.Entry)param1Object; + Object object1 = entry.getKey(); + Object object2 = entry.getValue(); + return (object1 == null || object2 == null) ? false : (!(!object1.equals(getKey()) || !object2.equals(getValue()))); + } + + public Object getKey() { + return (this.this$0.keyType > 0) ? ((Reference)this.key).get() : this.key; + } + + public Object getValue() { + return (this.this$0.valueType > 0) ? ((Reference)this.value).get() : this.value; + } + + public int hashCode() { + Object object = getValue(); + return this.hash ^ ((object == null) ? 0 : object.hashCode()); + } + + boolean purge(Reference param1Reference) { + boolean bool = (this.this$0.keyType <= 0 || this.key != param1Reference) ? false : true; + bool = (!bool && (this.this$0.valueType <= 0 || this.value != param1Reference)) ? false : true; + if (bool) { + if (this.this$0.keyType > 0) + ((Reference)this.key).clear(); + if (this.this$0.valueType > 0) + ((Reference)this.value).clear(); + } + return bool; + } + + public Object setValue(Object param1Object) { + Object object = getValue(); + if (this.this$0.valueType > 0) + ((Reference)this.value).clear(); + this.value = this.this$0.toReference(this.this$0.valueType, param1Object, this.hash); + return object; + } + + public String toString() { + return String.valueOf(String.valueOf(getKey())) + "=" + getValue(); + } + } + + private class EntryIterator implements Iterator { + private final ReferenceMap this$0; + + int index; + + ReferenceMap.Entry entry; + + ReferenceMap.Entry previous; + + Object nextKey; + + Object nextValue; + + Object currentKey; + + Object currentValue; + + int expectedModCount; + + public EntryIterator(ReferenceMap this$0) { + this.this$0 = this$0; + this.index = (this$0.size() != 0) ? this$0.table.length : 0; + this.expectedModCount = this$0.modCount; + } + + private void checkMod() { + if (this.this$0.modCount != this.expectedModCount) + throw new ConcurrentModificationException(); + } + + public boolean hasNext() { + checkMod(); + while (nextNull()) { + ReferenceMap.Entry entry = this.entry; + int i = this.index; + while (entry == null && i > 0) + entry = this.this$0.table[--i]; + this.entry = entry; + this.index = i; + if (entry == null) { + this.currentKey = null; + this.currentValue = null; + return false; + } + this.nextKey = entry.getKey(); + this.nextValue = entry.getValue(); + if (nextNull()) + this.entry = this.entry.next; + } + return true; + } + + public Object next() { + return nextEntry(); + } + + protected ReferenceMap.Entry nextEntry() { + checkMod(); + if (nextNull() && !hasNext()) + throw new NoSuchElementException(); + this.previous = this.entry; + this.entry = this.entry.next; + this.currentKey = this.nextKey; + this.currentValue = this.nextValue; + this.nextKey = null; + this.nextValue = null; + return this.previous; + } + + private boolean nextNull() { + return !(this.nextKey != null && this.nextValue != null); + } + + public void remove() { + checkMod(); + if (this.previous == null) + throw new IllegalStateException(); + this.this$0.remove(this.currentKey); + this.previous = null; + this.currentKey = null; + this.currentValue = null; + this.expectedModCount = this.this$0.modCount; + } + } + + private class ValueIterator extends EntryIterator { + private final ReferenceMap this$0; + + ValueIterator(ReferenceMap this$0) { + super(this$0); + this.this$0 = this$0; + } + + public Object next() { + return nextEntry().getValue(); + } + } + + private class KeyIterator extends EntryIterator { + private final ReferenceMap this$0; + + KeyIterator(ReferenceMap this$0) { + super(this$0); + this.this$0 = this$0; + } + + public Object next() { + return nextEntry().getKey(); + } + } + + private static class SoftRef extends SoftReference { + private int hash; + + public SoftRef(int param1Int, Object param1Object, ReferenceQueue param1ReferenceQueue) { + super((T)param1Object, param1ReferenceQueue); + this.hash = param1Int; + } + + public int hashCode() { + return this.hash; + } + } + + private static class WeakRef extends WeakReference { + private int hash; + + public WeakRef(int param1Int, Object param1Object, ReferenceQueue param1ReferenceQueue) { + super((T)param1Object, param1ReferenceQueue); + this.hash = param1Int; + } + + public int hashCode() { + return this.hash; + } + } +} diff --git a/hrmsEjb/org/apache/commons/collections/SequencedHashMap.java b/hrmsEjb/org/apache/commons/collections/SequencedHashMap.java new file mode 100644 index 0000000..74ba3ac --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/SequencedHashMap.java @@ -0,0 +1,476 @@ +package org.apache.commons.collections; + +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.AbstractCollection; +import java.util.AbstractSet; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.ConcurrentModificationException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; + +public class SequencedHashMap implements Map, Cloneable, Externalizable { + private Entry sentinel = createSentinel(); + + private HashMap entries = new HashMap(); + + private transient long modCount = 0L; + + private static final int KEY = 0; + + private static final int VALUE = 1; + + private static final int ENTRY = 2; + + private static final int REMOVED_MASK = -2147483648; + + private static final long serialVersionUID = 3380552487888102930L; + + public SequencedHashMap() {} + + public SequencedHashMap(int paramInt) {} + + public SequencedHashMap(int paramInt, float paramFloat) {} + + public SequencedHashMap(Map paramMap) { + this(); + putAll(paramMap); + } + + public void clear() { + this.modCount++; + this.entries.clear(); + this.sentinel.next = this.sentinel; + this.sentinel.prev = this.sentinel; + } + + public Object clone() throws CloneNotSupportedException { + SequencedHashMap sequencedHashMap = (SequencedHashMap)super.clone(); + sequencedHashMap.sentinel = createSentinel(); + sequencedHashMap.entries = new HashMap(); + sequencedHashMap.putAll(this); + return sequencedHashMap; + } + + public boolean containsKey(Object paramObject) { + return this.entries.containsKey(paramObject); + } + + public boolean containsValue(Object paramObject) { + if (paramObject == null) { + for (Entry entry = this.sentinel.next; entry != this.sentinel; entry = entry.next) { + if (entry.getValue() == null) + return true; + } + } else { + for (Entry entry = this.sentinel.next; entry != this.sentinel; entry = entry.next) { + if (paramObject.equals(entry.getValue())) + return true; + } + } + return false; + } + + private static final Entry createSentinel() { + Entry entry = new Entry(null, null); + entry.prev = entry; + entry.next = entry; + return entry; + } + + public Set entrySet() { + return new AbstractSet(this) { + private final SequencedHashMap this$0; + + public void clear() { + this.this$0.clear(); + } + + public boolean contains(Object param1Object) { + return !(findEntry(param1Object) == null); + } + + private SequencedHashMap.Entry findEntry(Object param1Object) { + if (param1Object == null) + return null; + if (!(param1Object instanceof Map.Entry)) + return null; + Map.Entry entry = (Map.Entry)param1Object; + SequencedHashMap.Entry entry1 = (SequencedHashMap.Entry)this.this$0.entries.get(entry.getKey()); + return (entry1 != null && entry1.equals(entry)) ? entry1 : null; + } + + public boolean isEmpty() { + return this.this$0.isEmpty(); + } + + public Iterator iterator() { + return new SequencedHashMap.OrderedIterator(this.this$0, 2); + } + + public boolean remove(Object param1Object) { + SequencedHashMap.Entry entry = findEntry(param1Object); + return (entry == null) ? false : (!(this.this$0.removeImpl(entry.getKey()) == null)); + } + + public int size() { + return this.this$0.size(); + } + }; + } + + public boolean equals(Object paramObject) { + return (paramObject == null) ? false : ((paramObject == this) ? true : (!(paramObject instanceof Map) ? false : entrySet().equals(((Map)paramObject).entrySet()))); + } + + public Object get(int paramInt) { + return getEntry(paramInt).getKey(); + } + + public Object get(Object paramObject) { + Entry entry = (Entry)this.entries.get(paramObject); + return (entry == null) ? null : entry.getValue(); + } + + private Map.Entry getEntry(int paramInt) { + Entry entry = this.sentinel; + if (paramInt < 0) + throw new ArrayIndexOutOfBoundsException(String.valueOf(paramInt) + " < 0"); + byte b = -1; + while (b < paramInt - 1 && entry.next != this.sentinel) { + b++; + entry = entry.next; + } + if (entry.next == this.sentinel) + throw new ArrayIndexOutOfBoundsException(String.valueOf(paramInt) + " >= " + (b + 1)); + return entry.next; + } + + public Map.Entry getFirst() { + return isEmpty() ? null : this.sentinel.next; + } + + public Object getFirstKey() { + return this.sentinel.next.getKey(); + } + + public Object getFirstValue() { + return this.sentinel.next.getValue(); + } + + public Map.Entry getLast() { + return isEmpty() ? null : this.sentinel.prev; + } + + public Object getLastKey() { + return this.sentinel.prev.getKey(); + } + + public Object getLastValue() { + return this.sentinel.prev.getValue(); + } + + public Object getValue(int paramInt) { + return getEntry(paramInt).getValue(); + } + + public int hashCode() { + return entrySet().hashCode(); + } + + public int indexOf(Object paramObject) { + Entry entry = (Entry)this.entries.get(paramObject); + byte b = 0; + while (entry.prev != this.sentinel) { + b++; + entry = entry.prev; + } + return b; + } + + private void insertEntry(Entry paramEntry) { + paramEntry.next = this.sentinel; + paramEntry.prev = this.sentinel.prev; + this.sentinel.prev.next = paramEntry; + this.sentinel.prev = paramEntry; + } + + public boolean isEmpty() { + return !(this.sentinel.next != this.sentinel); + } + + public Iterator iterator() { + return keySet().iterator(); + } + + public Set keySet() { + return new AbstractSet(this) { + private final SequencedHashMap this$0; + + public void clear() { + this.this$0.clear(); + } + + public boolean contains(Object param1Object) { + return this.this$0.containsKey(param1Object); + } + + public boolean isEmpty() { + return this.this$0.isEmpty(); + } + + public Iterator iterator() { + return new SequencedHashMap.OrderedIterator(this.this$0, 0); + } + + public boolean remove(Object param1Object) { + SequencedHashMap.Entry entry = this.this$0.removeImpl(param1Object); + return !(entry == null); + } + + public int size() { + return this.this$0.size(); + } + }; + } + + public int lastIndexOf(Object paramObject) { + return indexOf(paramObject); + } + + public Object put(Object paramObject1, Object paramObject2) { + this.modCount++; + Object object = null; + Entry entry = (Entry)this.entries.get(paramObject1); + if (entry != null) { + removeEntry(entry); + object = entry.setValue(paramObject2); + } else { + entry = new Entry(paramObject1, paramObject2); + this.entries.put(paramObject1, entry); + } + insertEntry(entry); + return object; + } + + public void putAll(Map paramMap) { + for (Map.Entry entry : paramMap.entrySet()) + put(entry.getKey(), entry.getValue()); + } + + public void readExternal(ObjectInput paramObjectInput) throws IOException, ClassNotFoundException { + int i = paramObjectInput.readInt(); + for (byte b = 0; b < i; b++) { + Object object1 = paramObjectInput.readObject(); + Object object2 = paramObjectInput.readObject(); + put(object1, object2); + } + } + + public Object remove(int paramInt) { + return remove(get(paramInt)); + } + + public Object remove(Object paramObject) { + Entry entry = removeImpl(paramObject); + return (entry == null) ? null : entry.getValue(); + } + + private void removeEntry(Entry paramEntry) { + paramEntry.next.prev = paramEntry.prev; + paramEntry.prev.next = paramEntry.next; + } + + private Entry removeImpl(Object paramObject) { + Entry entry = (Entry)this.entries.remove(paramObject); + if (entry == null) + return null; + this.modCount++; + removeEntry(entry); + return entry; + } + + public List sequence() { + ArrayList arrayList = new ArrayList(size()); + Iterator iterator = keySet().iterator(); + while (iterator.hasNext()) + arrayList.add(iterator.next()); + return Collections.unmodifiableList(arrayList); + } + + public int size() { + return this.entries.size(); + } + + public String toString() { + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append('['); + for (Entry entry = this.sentinel.next; entry != this.sentinel; entry = entry.next) { + stringBuffer.append(entry.getKey()); + stringBuffer.append('='); + stringBuffer.append(entry.getValue()); + if (entry.next != this.sentinel) + stringBuffer.append(','); + } + stringBuffer.append(']'); + return stringBuffer.toString(); + } + + public Collection values() { + return new AbstractCollection(this) { + private final SequencedHashMap this$0; + + public void clear() { + this.this$0.clear(); + } + + public boolean contains(Object param1Object) { + return this.this$0.containsValue(param1Object); + } + + public boolean isEmpty() { + return this.this$0.isEmpty(); + } + + public Iterator iterator() { + return new SequencedHashMap.OrderedIterator(this.this$0, 1); + } + + public boolean remove(Object param1Object) { + if (param1Object == null) { + for (SequencedHashMap.Entry entry = this.this$0.sentinel.next; entry != this.this$0.sentinel; entry = entry.next) { + if (entry.getValue() == null) { + this.this$0.removeImpl(entry.getKey()); + return true; + } + } + } else { + for (SequencedHashMap.Entry entry = this.this$0.sentinel.next; entry != this.this$0.sentinel; entry = entry.next) { + if (param1Object.equals(entry.getValue())) { + this.this$0.removeImpl(entry.getKey()); + return true; + } + } + } + return false; + } + + public int size() { + return this.this$0.size(); + } + }; + } + + public void writeExternal(ObjectOutput paramObjectOutput) throws IOException { + paramObjectOutput.writeInt(size()); + for (Entry entry = this.sentinel.next; entry != this.sentinel; entry = entry.next) { + paramObjectOutput.writeObject(entry.getKey()); + paramObjectOutput.writeObject(entry.getValue()); + } + } + + private static class Entry implements Map.Entry { + private final Object key; + + private Object value; + + Entry next = null; + + Entry prev = null; + + public Entry(Object param1Object1, Object param1Object2) { + this.key = param1Object1; + this.value = param1Object2; + } + + public boolean equals(Object param1Object) { + if (param1Object == null) + return false; + if (param1Object == this) + return true; + if (!(param1Object instanceof Map.Entry)) + return false; + Map.Entry entry = (Map.Entry)param1Object; + return !(!((getKey() == null) ? (entry.getKey() == null) : getKey().equals(entry.getKey())) || !((getValue() == null) ? (entry.getValue() == null) : getValue().equals(entry.getValue()))); + } + + public Object getKey() { + return this.key; + } + + public Object getValue() { + return this.value; + } + + public int hashCode() { + return ((getKey() == null) ? 0 : getKey().hashCode()) ^ ((getValue() == null) ? 0 : getValue().hashCode()); + } + + public Object setValue(Object param1Object) { + Object object = this.value; + this.value = param1Object; + return object; + } + + public String toString() { + return "[" + getKey() + "=" + getValue() + "]"; + } + } + + private class OrderedIterator implements Iterator { + private final SequencedHashMap this$0; + + private int returnType; + + private SequencedHashMap.Entry pos; + + private transient long expectedModCount; + + public OrderedIterator(SequencedHashMap this$0, int param1Int) { + this.this$0 = this$0; + this.pos = this.this$0.sentinel; + this.expectedModCount = this.this$0.modCount; + this.returnType = param1Int | Integer.MIN_VALUE; + } + + public boolean hasNext() { + return !(this.pos.next == this.this$0.sentinel); + } + + public Object next() { + if (this.this$0.modCount != this.expectedModCount) + throw new ConcurrentModificationException(); + if (this.pos.next == this.this$0.sentinel) + throw new NoSuchElementException(); + this.returnType &= Integer.MAX_VALUE; + this.pos = this.pos.next; + switch (this.returnType) { + case 0: + return this.pos.getKey(); + case 1: + return this.pos.getValue(); + case 2: + return this.pos; + } + throw new Error("bad iterator type: " + this.returnType); + } + + public void remove() { + if ((this.returnType & Integer.MIN_VALUE) != 0) + throw new IllegalStateException("remove() must follow next()"); + if (this.this$0.modCount != this.expectedModCount) + throw new ConcurrentModificationException(); + this.this$0.removeImpl(this.pos.getKey()); + this.expectedModCount++; + this.returnType |= Integer.MIN_VALUE; + } + } +} diff --git a/hrmsEjb/org/apache/commons/collections/comparators/ComparableComparator.java b/hrmsEjb/org/apache/commons/collections/comparators/ComparableComparator.java new file mode 100644 index 0000000..6723e07 --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/comparators/ComparableComparator.java @@ -0,0 +1,36 @@ +package org.apache.commons.collections.comparators; + +import java.io.Serializable; +import java.util.Comparator; + +public class ComparableComparator implements Comparator, Serializable { + private static final ComparableComparator instance = new ComparableComparator(); + + private static final long serialVersionUID = -291439688585137865L; + + public int compare(Object paramObject1, Object paramObject2) { + if (paramObject1 == null || paramObject2 == null) + throw new ClassCastException("There were nulls in the arguments for this method: compare(" + paramObject1 + ", " + paramObject2 + ")"); + if (paramObject1 instanceof Comparable) { + if (paramObject2 instanceof Comparable) { + int i = ((Comparable)paramObject1).compareTo(paramObject2); + int j = ((Comparable)paramObject2).compareTo(paramObject1); + if (i == 0 && j == 0) + return 0; + if (i < 0 && j > 0) + return i; + if (i > 0 && j < 0) + return i; + throw new ClassCastException("o1 not comparable to o2"); + } + throw new ClassCastException("The first argument of this method was not a Comparable: " + paramObject2.getClass().getName()); + } + if (paramObject2 instanceof Comparable) + throw new ClassCastException("The second argument of this method was not a Comparable: " + paramObject1.getClass().getName()); + throw new ClassCastException("Both arguments of this method were not Comparables: " + paramObject1.getClass().getName() + " and " + paramObject2.getClass().getName()); + } + + public static ComparableComparator getInstance() { + return instance; + } +} diff --git a/hrmsEjb/org/apache/commons/collections/comparators/ReverseComparator.java b/hrmsEjb/org/apache/commons/collections/comparators/ReverseComparator.java new file mode 100644 index 0000000..7897c7d --- /dev/null +++ b/hrmsEjb/org/apache/commons/collections/comparators/ReverseComparator.java @@ -0,0 +1,24 @@ +package org.apache.commons.collections.comparators; + +import java.io.Serializable; +import java.util.Comparator; + +public class ReverseComparator implements Comparator, Serializable { + private Comparator comparator; + + public ReverseComparator() { + this(null); + } + + public ReverseComparator(Comparator paramComparator) { + if (paramComparator != null) { + this.comparator = paramComparator; + } else { + this.comparator = ComparableComparator.getInstance(); + } + } + + public int compare(Object paramObject1, Object paramObject2) { + return this.comparator.compare(paramObject2, paramObject1); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/AbstractObjectCreationFactory.java b/hrmsEjb/org/apache/commons/digester/AbstractObjectCreationFactory.java new file mode 100644 index 0000000..f86373f --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/AbstractObjectCreationFactory.java @@ -0,0 +1,17 @@ +package org.apache.commons.digester; + +import org.xml.sax.Attributes; + +public abstract class AbstractObjectCreationFactory implements ObjectCreationFactory { + protected Digester digester = null; + + public abstract Object createObject(Attributes paramAttributes) throws Exception; + + public Digester getDigester() { + return this.digester; + } + + public void setDigester(Digester digester) { + this.digester = digester; + } +} diff --git a/hrmsEjb/org/apache/commons/digester/BeanPropertySetterRule.java b/hrmsEjb/org/apache/commons/digester/BeanPropertySetterRule.java new file mode 100644 index 0000000..2768547 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/BeanPropertySetterRule.java @@ -0,0 +1,68 @@ +package org.apache.commons.digester; + +import java.beans.PropertyDescriptor; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.DynaBean; +import org.apache.commons.beanutils.DynaProperty; +import org.apache.commons.beanutils.PropertyUtils; + +public class BeanPropertySetterRule extends Rule { + protected String propertyName; + + protected String bodyText; + + public BeanPropertySetterRule(Digester digester, String propertyName) { + this(propertyName); + } + + public BeanPropertySetterRule(Digester digester) { + this(); + } + + public BeanPropertySetterRule(String propertyName) { + this.propertyName = null; + this.bodyText = null; + this.propertyName = propertyName; + } + + public BeanPropertySetterRule() { + this((String)null); + } + + public void body(String namespace, String name, String text) throws Exception { + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[BeanPropertySetterRule]{" + this.digester.match + "} Called with text '" + text + "'"); + this.bodyText = text.trim(); + } + + public void end(String namespace, String name) throws Exception { + String property = this.propertyName; + if (property == null) + property = name; + Object top = this.digester.peek(); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[BeanPropertySetterRule]{" + this.digester.match + "} Set " + top.getClass().getName() + " property " + property + " with text " + this.bodyText); + if (top instanceof DynaBean) { + DynaProperty desc = ((DynaBean)top).getDynaClass().getDynaProperty(property); + if (desc == null) + throw new NoSuchMethodException("Bean has no property named " + property); + } else { + PropertyDescriptor desc = PropertyUtils.getPropertyDescriptor(top, property); + if (desc == null) + throw new NoSuchMethodException("Bean has no property named " + property); + } + BeanUtils.setProperty(top, property, this.bodyText); + } + + public void finish() throws Exception { + this.bodyText = null; + } + + public String toString() { + StringBuffer sb = new StringBuffer("BeanPropertySetterRule["); + sb.append("propertyName="); + sb.append(this.propertyName); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/CallMethodRule.java b/hrmsEjb/org/apache/commons/digester/CallMethodRule.java new file mode 100644 index 0000000..8685472 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/CallMethodRule.java @@ -0,0 +1,217 @@ +package org.apache.commons.digester; + +import org.apache.commons.beanutils.ConvertUtils; +import org.apache.commons.beanutils.MethodUtils; +import org.xml.sax.Attributes; + +public class CallMethodRule extends Rule { + protected String bodyText; + + protected String methodName; + + protected int paramCount; + + protected Class[] paramTypes; + + private String[] paramClassNames; + + protected boolean useExactMatch; + + public CallMethodRule(Digester digester, String methodName, int paramCount) { + this(methodName, paramCount); + } + + public CallMethodRule(Digester digester, String methodName, int paramCount, String[] paramTypes) { + this(methodName, paramCount, paramTypes); + } + + public CallMethodRule(Digester digester, String methodName, int paramCount, Class[] paramTypes) { + this(methodName, paramCount, paramTypes); + } + + public CallMethodRule(String methodName, int paramCount) { + this.bodyText = null; + this.methodName = null; + this.paramCount = 0; + this.paramTypes = null; + this.paramClassNames = null; + this.useExactMatch = false; + this.methodName = methodName; + this.paramCount = paramCount; + if (paramCount == 0) { + this.paramTypes = new Class[] { String.class }; + } else { + this.paramTypes = new Class[paramCount]; + for (int i = 0; i < this.paramTypes.length; i++) + this.paramTypes[i] = String.class; + } + } + + public CallMethodRule(String methodName) { + this(methodName, 0, (Class[])null); + } + + public CallMethodRule(String methodName, int paramCount, String[] paramTypes) { + this.bodyText = null; + this.methodName = null; + this.paramCount = 0; + this.paramTypes = null; + this.paramClassNames = null; + this.useExactMatch = false; + this.methodName = methodName; + this.paramCount = paramCount; + if (paramTypes == null) { + this.paramTypes = new Class[paramCount]; + for (int i = 0; i < this.paramTypes.length; i++) + this.paramTypes[i] = "abc".getClass(); + } else { + this.paramClassNames = new String[paramTypes.length]; + for (int i = 0; i < this.paramClassNames.length; i++) + this.paramClassNames[i] = paramTypes[i]; + } + } + + public CallMethodRule(String methodName, int paramCount, Class[] paramTypes) { + this.bodyText = null; + this.methodName = null; + this.paramCount = 0; + this.paramTypes = null; + this.paramClassNames = null; + this.useExactMatch = false; + this.methodName = methodName; + this.paramCount = paramCount; + if (paramTypes == null) { + this.paramTypes = new Class[paramCount]; + for (int i = 0; i < this.paramTypes.length; i++) + this.paramTypes[i] = "abc".getClass(); + } else { + this.paramTypes = new Class[paramTypes.length]; + for (int i = 0; i < this.paramTypes.length; i++) + this.paramTypes[i] = paramTypes[i]; + } + } + + public boolean getUseExactMatch() { + return this.useExactMatch; + } + + public void setUseExactMatch(boolean useExactMatch) { + this.useExactMatch = useExactMatch; + } + + public void setDigester(Digester digester) { + super.setDigester(digester); + if (this.paramClassNames != null) { + this.paramTypes = new Class[this.paramClassNames.length]; + for (int i = 0; i < this.paramClassNames.length; i++) { + try { + this.paramTypes[i] = digester.getClassLoader().loadClass(this.paramClassNames[i]); + } catch (ClassNotFoundException e) { + digester.getLogger().error("(CallMethodRule) Cannot load class " + this.paramClassNames[i], e); + this.paramTypes[i] = null; + } + } + } + } + + public void begin(Attributes attributes) throws Exception { + if (this.paramCount > 0) { + Object[] parameters = new Object[this.paramCount]; + for (int i = 0; i < parameters.length; i++) + parameters[i] = null; + this.digester.pushParams(parameters); + } + } + + public void body(String bodyText) throws Exception { + if (this.paramCount == 0) + this.bodyText = bodyText.trim(); + } + + public void end() throws Exception { + Object[] parameters = null; + if (this.paramCount > 0) { + parameters = (Object[])this.digester.popParams(); + if (this.digester.log.isTraceEnabled()) + for (int j = 0, size = parameters.length; j < size; j++) + this.digester.log.trace("[CallMethodRule](" + j + ")" + parameters[j]); + if (this.paramCount == 1 && parameters[0] == null) + return; + } else if (this.paramTypes != null && this.paramTypes.length != 0) { + if (this.bodyText == null) + return; + parameters = new Object[1]; + parameters[0] = this.bodyText; + if (this.paramTypes.length == 0) { + this.paramTypes = new Class[1]; + this.paramTypes[0] = "abc".getClass(); + } + } + Object[] paramValues = new Object[this.paramTypes.length]; + for (int i = 0; i < this.paramTypes.length; i++) { + if (parameters[i] == null || (parameters[i] instanceof String && !String.class.isAssignableFrom(this.paramTypes[i]))) { + paramValues[i] = ConvertUtils.convert((String)parameters[i], this.paramTypes[i]); + } else { + paramValues[i] = parameters[i]; + } + } + Object top = this.digester.peek(); + if (this.digester.log.isDebugEnabled()) { + StringBuffer sb = new StringBuffer("[CallMethodRule]{"); + sb.append(this.digester.match); + sb.append("} Call "); + if (top == null) { + sb.append("[NULL TOP]"); + } else { + sb.append(top.getClass().getName()); + } + sb.append("."); + sb.append(this.methodName); + sb.append("("); + for (int j = 0; j < paramValues.length; j++) { + if (j > 0) + sb.append(","); + if (paramValues[j] == null) { + sb.append("null"); + } else { + sb.append(paramValues[j].toString()); + } + sb.append("/"); + if (this.paramTypes[j] == null) { + sb.append("null"); + } else { + sb.append(this.paramTypes[j].getName()); + } + } + sb.append(")"); + this.digester.log.debug(sb.toString()); + } + if (this.useExactMatch) { + MethodUtils.invokeExactMethod(top, this.methodName, paramValues, this.paramTypes); + } else { + MethodUtils.invokeMethod(top, this.methodName, paramValues, this.paramTypes); + } + } + + public void finish() throws Exception { + this.bodyText = null; + } + + public String toString() { + StringBuffer sb = new StringBuffer("CallMethodRule["); + sb.append("methodName="); + sb.append(this.methodName); + sb.append(", paramCount="); + sb.append(this.paramCount); + sb.append(", paramTypes={"); + if (this.paramTypes != null) + for (int i = 0; i < this.paramTypes.length; i++) { + if (i > 0) + sb.append(", "); + sb.append(this.paramTypes[i].getName()); + } + sb.append("}"); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/CallParamRule.java b/hrmsEjb/org/apache/commons/digester/CallParamRule.java new file mode 100644 index 0000000..13d6808 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/CallParamRule.java @@ -0,0 +1,103 @@ +package org.apache.commons.digester; + +import org.apache.commons.collections.ArrayStack; +import org.xml.sax.Attributes; + +public class CallParamRule extends Rule { + protected String attributeName; + + protected int paramIndex; + + protected boolean fromStack; + + protected int stackIndex; + + protected ArrayStack bodyTextStack; + + public CallParamRule(Digester digester, int paramIndex) { + this(paramIndex); + } + + public CallParamRule(Digester digester, int paramIndex, String attributeName) { + this(paramIndex, attributeName); + } + + public CallParamRule(int paramIndex) { + this(paramIndex, (String)null); + } + + public CallParamRule(int paramIndex, String attributeName) { + this.attributeName = null; + this.paramIndex = 0; + this.fromStack = false; + this.stackIndex = 0; + this.paramIndex = paramIndex; + this.attributeName = attributeName; + } + + public CallParamRule(int paramIndex, boolean fromStack) { + this.attributeName = null; + this.paramIndex = 0; + this.fromStack = false; + this.stackIndex = 0; + this.paramIndex = paramIndex; + this.fromStack = fromStack; + } + + public CallParamRule(int paramIndex, int stackIndex) { + this.attributeName = null; + this.paramIndex = 0; + this.fromStack = false; + this.stackIndex = 0; + this.paramIndex = paramIndex; + this.fromStack = true; + this.stackIndex = stackIndex; + } + + public void begin(Attributes attributes) throws Exception { + Object param = null; + if (this.attributeName != null) { + param = attributes.getValue(this.attributeName); + } else if (this.fromStack) { + param = this.digester.peek(this.stackIndex); + if (this.digester.log.isDebugEnabled()) { + StringBuffer sb = new StringBuffer("[CallParamRule]{"); + sb.append(this.digester.match); + sb.append("} Save from stack; from stack?").append(this.fromStack); + sb.append("; object=").append(param); + this.digester.log.debug(sb.toString()); + } + } + if (param != null) { + Object[] parameters = (Object[])this.digester.peekParams(); + parameters[this.paramIndex] = param; + } + } + + public void body(String bodyText) throws Exception { + if (this.attributeName == null && !this.fromStack) { + if (this.bodyTextStack == null) + this.bodyTextStack = new ArrayStack(); + this.bodyTextStack.push(bodyText.trim()); + } + } + + public void end(String namespace, String name) { + if (this.bodyTextStack != null && !this.bodyTextStack.empty()) { + Object[] parameters = (Object[])this.digester.peekParams(); + parameters[this.paramIndex] = this.bodyTextStack.pop(); + } + } + + public String toString() { + StringBuffer sb = new StringBuffer("CallParamRule["); + sb.append("paramIndex="); + sb.append(this.paramIndex); + sb.append(", attributeName="); + sb.append(this.attributeName); + sb.append(", from stack="); + sb.append(this.fromStack); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/Digester.java b/hrmsEjb/org/apache/commons/digester/Digester.java new file mode 100644 index 0000000..c2b8ffb --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/Digester.java @@ -0,0 +1,874 @@ +package org.apache.commons.digester; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.lang.reflect.InvocationTargetException; +import java.util.EmptyStackException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import org.apache.commons.collections.ArrayStack; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.xml.sax.Attributes; +import org.xml.sax.EntityResolver; +import org.xml.sax.ErrorHandler; +import org.xml.sax.InputSource; +import org.xml.sax.Locator; +import org.xml.sax.SAXException; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; +import org.xml.sax.SAXParseException; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.DefaultHandler; + +public class Digester extends DefaultHandler { + public Digester() {} + + public Digester(SAXParser parser) { + this.parser = parser; + } + + public Digester(XMLReader reader) { + this.reader = reader; + } + + protected StringBuffer bodyText = new StringBuffer(); + + protected ArrayStack bodyTexts = new ArrayStack(); + + protected ClassLoader classLoader = null; + + protected boolean configured = false; + + protected EntityResolver entityResolver; + + protected HashMap entityValidator = new HashMap(); + + protected ErrorHandler errorHandler = null; + + protected SAXParserFactory factory = null; + + private static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource"; + + protected String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; + + protected Locator locator = null; + + protected String match = ""; + + protected boolean namespaceAware = false; + + protected HashMap namespaces = new HashMap(); + + protected ArrayStack params = new ArrayStack(); + + protected SAXParser parser = null; + + protected String publicId = null; + + protected XMLReader reader = null; + + protected Object root = null; + + protected Rules rules = null; + + protected String schemaLanguage = "http://www.w3.org/2001/XMLSchema"; + + protected String schemaLocation = null; + + protected ArrayStack stack = new ArrayStack(); + + protected boolean useContextClassLoader = false; + + protected boolean validating = false; + + protected Log log = LogFactory.getLog("org.apache.commons.digester.Digester"); + + protected Log saxLog = LogFactory.getLog("org.apache.commons.digester.Digester.sax"); + + protected static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; + + public String findNamespaceURI(String prefix) { + ArrayStack stack = (ArrayStack)this.namespaces.get(prefix); + if (stack == null) + return null; + try { + return (String)stack.peek(); + } catch (EmptyStackException e) { + return null; + } + } + + public ClassLoader getClassLoader() { + if (this.classLoader != null) + return this.classLoader; + if (this.useContextClassLoader) { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader != null) + return classLoader; + } + return getClass().getClassLoader(); + } + + public void setClassLoader(ClassLoader classLoader) { + this.classLoader = classLoader; + } + + public int getCount() { + return this.stack.size(); + } + + public String getCurrentElementName() { + String elementName = this.match; + int lastSlash = elementName.lastIndexOf('/'); + if (lastSlash >= 0) + elementName = elementName.substring(lastSlash + 1); + return elementName; + } + + public int getDebug() { + return 0; + } + + public void setDebug(int debug) {} + + public ErrorHandler getErrorHandler() { + return this.errorHandler; + } + + public void setErrorHandler(ErrorHandler errorHandler) { + this.errorHandler = errorHandler; + } + + public SAXParserFactory getFactory() { + if (this.factory == null) { + this.factory = SAXParserFactory.newInstance(); + this.factory.setNamespaceAware(this.namespaceAware); + this.factory.setValidating(this.validating); + } + return this.factory; + } + + public boolean getFeature(String feature) throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException { + return getFactory().getFeature(feature); + } + + public void setFeature(String feature, boolean value) throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException { + getFactory().setFeature(feature, value); + } + + public Log getLogger() { + return this.log; + } + + public void setLogger(Log log) { + this.log = log; + } + + public String getMatch() { + return this.match; + } + + public boolean getNamespaceAware() { + return this.namespaceAware; + } + + public void setNamespaceAware(boolean namespaceAware) { + this.namespaceAware = namespaceAware; + } + + public void setPublicId(String publicId) { + this.publicId = publicId; + } + + public String getPublicId() { + return this.publicId; + } + + public String getRuleNamespaceURI() { + return getRules().getNamespaceURI(); + } + + public void setRuleNamespaceURI(String ruleNamespaceURI) { + getRules().setNamespaceURI(ruleNamespaceURI); + } + + public SAXParser getParser() { + if (this.parser != null) + return this.parser; + try { + this.parser = getFactory().newSAXParser(); + } catch (Exception e) { + this.log.error("Digester.getParser: ", e); + return null; + } + try { + if (this.schemaLocation != null) { + setProperty(this.JAXP_SCHEMA_LANGUAGE, this.schemaLanguage); + setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", this.schemaLocation); + } + } catch (Exception e) { + this.log.warn("" + e); + } + return this.parser; + } + + public Object getProperty(String property) throws SAXNotRecognizedException, SAXNotSupportedException { + return getParser().getProperty(property); + } + + public void setProperty(String property, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { + getParser().setProperty(property, value); + } + + public XMLReader getReader() { + try { + return getXMLReader(); + } catch (SAXException e) { + this.log.error("Cannot get XMLReader", e); + return null; + } + } + + public Rules getRules() { + if (this.rules == null) { + this.rules = new RulesBase(); + this.rules.setDigester(this); + } + return this.rules; + } + + public void setRules(Rules rules) { + this.rules = rules; + this.rules.setDigester(this); + } + + public String getSchema() { + return this.schemaLocation; + } + + public void setSchema(String schemaLocation) { + this.schemaLocation = schemaLocation; + } + + public String getSchemaLanguage() { + return this.schemaLanguage; + } + + public void setSchemaLanguage(String schemaLanguage) { + this.schemaLanguage = schemaLanguage; + } + + public boolean getUseContextClassLoader() { + return this.useContextClassLoader; + } + + public void setUseContextClassLoader(boolean use) { + this.useContextClassLoader = use; + } + + public boolean getValidating() { + return this.validating; + } + + public void setValidating(boolean validating) { + this.validating = validating; + } + + public XMLReader getXMLReader() throws SAXException { + if (this.reader == null) + this.reader = getParser().getXMLReader(); + this.reader.setDTDHandler(this); + this.reader.setContentHandler(this); + if (this.entityResolver == null) { + this.reader.setEntityResolver(this); + } else { + this.reader.setEntityResolver(this.entityResolver); + } + this.reader.setErrorHandler(this); + return this.reader; + } + + public void characters(char[] buffer, int start, int length) throws SAXException { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("characters(" + new String(buffer, start, length) + ")"); + this.bodyText.append(buffer, start, length); + } + + public void endDocument() throws SAXException { + if (this.saxLog.isDebugEnabled()) + if (getCount() > 1) { + this.saxLog.debug("endDocument(): " + getCount() + " elements left"); + } else { + this.saxLog.debug("endDocument()"); + } + while (getCount() > 1) + pop(); + Iterator rules = getRules().rules().iterator(); + while (rules.hasNext()) { + Rule rule = rules.next(); + try { + rule.finish(); + } catch (Exception e) { + this.log.error("Finish event threw exception", e); + throw createSAXException(e); + } catch (Error e) { + this.log.error("Finish event threw error", e); + throw e; + } + } + clear(); + } + + public void endElement(String namespaceURI, String localName, String qName) throws SAXException { + boolean debug = this.log.isDebugEnabled(); + if (debug) { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("endElement(" + namespaceURI + "," + localName + "," + qName + ")"); + this.log.debug(" match='" + this.match + "'"); + this.log.debug(" bodyText='" + this.bodyText + "'"); + } + String name = localName; + if (name == null || name.length() < 1) + name = qName; + List rules = getRules().match(namespaceURI, this.match); + if (rules != null && rules.size() > 0) { + String bodyText = this.bodyText.toString(); + for (int i = 0; i < rules.size(); i++) { + try { + Rule rule = rules.get(i); + if (debug) + this.log.debug(" Fire body() for " + rule); + rule.body(namespaceURI, name, bodyText); + } catch (Exception e) { + this.log.error("Body event threw exception", e); + throw createSAXException(e); + } catch (Error e) { + this.log.error("Body event threw error", e); + throw e; + } + } + } else if (debug) { + this.log.debug(" No rules found matching '" + this.match + "'."); + } + this.bodyText = (StringBuffer)this.bodyTexts.pop(); + if (debug) + this.log.debug(" Popping body text '" + this.bodyText.toString() + "'"); + if (rules != null) + for (int i = 0; i < rules.size(); i++) { + int j = rules.size() - i - 1; + try { + Rule rule = rules.get(j); + if (debug) + this.log.debug(" Fire end() for " + rule); + rule.end(namespaceURI, name); + } catch (Exception e) { + this.log.error("End event threw exception", e); + throw createSAXException(e); + } catch (Error e) { + this.log.error("End event threw error", e); + throw e; + } + } + int slash = this.match.lastIndexOf('/'); + if (slash >= 0) { + this.match = this.match.substring(0, slash); + } else { + this.match = ""; + } + } + + public void endPrefixMapping(String prefix) throws SAXException { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("endPrefixMapping(" + prefix + ")"); + ArrayStack stack = (ArrayStack)this.namespaces.get(prefix); + if (stack == null) + return; + try { + stack.pop(); + if (stack.empty()) + this.namespaces.remove(prefix); + } catch (EmptyStackException e) { + throw createSAXException("endPrefixMapping popped too many times"); + } + } + + public void ignorableWhitespace(char[] buffer, int start, int len) throws SAXException { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("ignorableWhitespace(" + new String(buffer, start, len) + ")"); + } + + public void processingInstruction(String target, String data) throws SAXException { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("processingInstruction('" + target + "','" + data + "')"); + } + + public Locator getDocumentLocator() { + return this.locator; + } + + public void setDocumentLocator(Locator locator) { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("setDocumentLocator(" + locator + ")"); + this.locator = locator; + } + + public void skippedEntity(String name) throws SAXException { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("skippedEntity(" + name + ")"); + } + + public void startDocument() throws SAXException { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("startDocument()"); + configure(); + } + + public void startElement(String namespaceURI, String localName, String qName, Attributes list) throws SAXException { + boolean debug = this.log.isDebugEnabled(); + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("startElement(" + namespaceURI + "," + localName + "," + qName + ")"); + this.bodyTexts.push(this.bodyText); + if (debug) + this.log.debug(" Pushing body text '" + this.bodyText.toString() + "'"); + this.bodyText = new StringBuffer(); + String name = localName; + if (name == null || name.length() < 1) + name = qName; + StringBuffer sb = new StringBuffer(this.match); + if (this.match.length() > 0) + sb.append('/'); + sb.append(name); + this.match = sb.toString(); + if (debug) + this.log.debug(" New match='" + this.match + "'"); + List rules = getRules().match(namespaceURI, this.match); + if (rules != null && rules.size() > 0) { + String bodyText = this.bodyText.toString(); + for (int i = 0; i < rules.size(); i++) { + try { + Rule rule = rules.get(i); + if (debug) + this.log.debug(" Fire begin() for " + rule); + rule.begin(namespaceURI, name, list); + } catch (Exception e) { + this.log.error("Begin event threw exception", e); + throw createSAXException(e); + } catch (Error e) { + this.log.error("Begin event threw error", e); + throw e; + } + } + } else if (debug) { + this.log.debug(" No rules found matching '" + this.match + "'."); + } + } + + public void startPrefixMapping(String prefix, String namespaceURI) throws SAXException { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("startPrefixMapping(" + prefix + "," + namespaceURI + ")"); + ArrayStack stack = (ArrayStack)this.namespaces.get(prefix); + if (stack == null) { + stack = new ArrayStack(); + this.namespaces.put(prefix, stack); + } + stack.push(namespaceURI); + } + + public void notationDecl(String name, String publicId, String systemId) { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("notationDecl(" + name + "," + publicId + "," + systemId + ")"); + } + + public void unparsedEntityDecl(String name, String publicId, String systemId, String notation) { + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("unparsedEntityDecl(" + name + "," + publicId + "," + systemId + "," + notation + ")"); + } + + public void setEntityResolver(EntityResolver entityResolver) { + this.entityResolver = entityResolver; + } + + public EntityResolver getEntityResolver() { + return this.entityResolver; + } + + public InputSource resolveEntity(String publicId, String systemId) throws SAXException { + boolean debug = this.log.isDebugEnabled(); + if (this.saxLog.isDebugEnabled()) + this.saxLog.debug("resolveEntity('" + publicId + "', '" + systemId + "')"); + if (publicId != null) + this.publicId = publicId; + String entityURL = null; + if (publicId != null) + entityURL = (String)this.entityValidator.get(publicId); + if (this.schemaLocation != null && entityURL == null && systemId != null) + entityURL = (String)this.entityValidator.get(systemId); + if (entityURL == null) + return null; + if (debug) + this.log.debug(" Resolving to alternate DTD '" + entityURL + "'"); + try { + return new InputSource(entityURL); + } catch (Exception e) { + throw createSAXException(e); + } + } + + public void error(SAXParseException exception) throws SAXException { + this.log.error("Parse Error at line " + exception.getLineNumber() + " column " + exception.getColumnNumber() + ": " + exception.getMessage(), exception); + if (this.errorHandler != null) + this.errorHandler.error(exception); + } + + public void fatalError(SAXParseException exception) throws SAXException { + this.log.error("Parse Fatal Error at line " + exception.getLineNumber() + " column " + exception.getColumnNumber() + ": " + exception.getMessage(), exception); + if (this.errorHandler != null) + this.errorHandler.fatalError(exception); + } + + public void warning(SAXParseException exception) throws SAXException { + if (this.errorHandler != null) { + this.log.warn("Parse Warning Error at line " + exception.getLineNumber() + " column " + exception.getColumnNumber() + ": " + exception.getMessage(), exception); + this.errorHandler.warning(exception); + } + } + + public void log(String message) { + this.log.info(message); + } + + public void log(String message, Throwable exception) { + this.log.error(message, exception); + } + + public Object parse(File file) throws IOException, SAXException { + configure(); + InputSource input = new InputSource(new FileInputStream(file)); + input.setSystemId("file://" + file.getAbsolutePath()); + getXMLReader().parse(input); + return this.root; + } + + public Object parse(InputSource input) throws IOException, SAXException { + configure(); + getXMLReader().parse(input); + return this.root; + } + + public Object parse(InputStream input) throws IOException, SAXException { + configure(); + InputSource is = new InputSource(input); + getXMLReader().parse(is); + return this.root; + } + + public Object parse(Reader reader) throws IOException, SAXException { + configure(); + InputSource is = new InputSource(reader); + getXMLReader().parse(is); + return this.root; + } + + public Object parse(String uri) throws IOException, SAXException { + configure(); + InputSource is = new InputSource(uri); + getXMLReader().parse(is); + return this.root; + } + + public void register(String publicId, String entityURL) { + if (this.log.isDebugEnabled()) + this.log.debug("register('" + publicId + "', '" + entityURL + "'"); + this.entityValidator.put(publicId, entityURL); + } + + public void addRule(String pattern, Rule rule) { + rule.setDigester(this); + getRules().add(pattern, rule); + } + + public void addRuleSet(RuleSet ruleSet) { + String oldNamespaceURI = getRuleNamespaceURI(); + String newNamespaceURI = ruleSet.getNamespaceURI(); + if (this.log.isDebugEnabled()) + if (newNamespaceURI == null) { + this.log.debug("addRuleSet() with no namespace URI"); + } else { + this.log.debug("addRuleSet() with namespace URI " + newNamespaceURI); + } + setRuleNamespaceURI(newNamespaceURI); + ruleSet.addRuleInstances(this); + setRuleNamespaceURI(oldNamespaceURI); + } + + public void addBeanPropertySetter(String pattern) { + addRule(pattern, new BeanPropertySetterRule()); + } + + public void addBeanPropertySetter(String pattern, String propertyName) { + addRule(pattern, new BeanPropertySetterRule(propertyName)); + } + + public void addCallMethod(String pattern, String methodName) { + addRule(pattern, new CallMethodRule(methodName)); + } + + public void addCallMethod(String pattern, String methodName, int paramCount) { + addRule(pattern, new CallMethodRule(methodName, paramCount)); + } + + public void addCallMethod(String pattern, String methodName, int paramCount, String[] paramTypes) { + addRule(pattern, new CallMethodRule(methodName, paramCount, paramTypes)); + } + + public void addCallMethod(String pattern, String methodName, int paramCount, Class[] paramTypes) { + addRule(pattern, new CallMethodRule(methodName, paramCount, paramTypes)); + } + + public void addCallParam(String pattern, int paramIndex) { + addRule(pattern, new CallParamRule(paramIndex)); + } + + public void addCallParam(String pattern, int paramIndex, String attributeName) { + addRule(pattern, new CallParamRule(paramIndex, attributeName)); + } + + public void addCallParam(String pattern, int paramIndex, boolean fromStack) { + addRule(pattern, new CallParamRule(paramIndex, fromStack)); + } + + public void addCallParam(String pattern, int paramIndex, int stackIndex) { + addRule(pattern, new CallParamRule(paramIndex, stackIndex)); + } + + public void addFactoryCreate(String pattern, String className) { + addFactoryCreate(pattern, className, false); + } + + public void addFactoryCreate(String pattern, Class clazz) { + addFactoryCreate(pattern, clazz, false); + } + + public void addFactoryCreate(String pattern, String className, String attributeName) { + addFactoryCreate(pattern, className, attributeName, false); + } + + public void addFactoryCreate(String pattern, Class clazz, String attributeName) { + addFactoryCreate(pattern, clazz, attributeName, false); + } + + public void addFactoryCreate(String pattern, ObjectCreationFactory creationFactory) { + addFactoryCreate(pattern, creationFactory, false); + } + + public void addFactoryCreate(String pattern, String className, boolean ignoreCreateExceptions) { + addRule(pattern, new FactoryCreateRule(className, ignoreCreateExceptions)); + } + + public void addFactoryCreate(String pattern, Class clazz, boolean ignoreCreateExceptions) { + addRule(pattern, new FactoryCreateRule(clazz, ignoreCreateExceptions)); + } + + public void addFactoryCreate(String pattern, String className, String attributeName, boolean ignoreCreateExceptions) { + addRule(pattern, new FactoryCreateRule(className, attributeName, ignoreCreateExceptions)); + } + + public void addFactoryCreate(String pattern, Class clazz, String attributeName, boolean ignoreCreateExceptions) { + addRule(pattern, new FactoryCreateRule(clazz, attributeName, ignoreCreateExceptions)); + } + + public void addFactoryCreate(String pattern, ObjectCreationFactory creationFactory, boolean ignoreCreateExceptions) { + creationFactory.setDigester(this); + addRule(pattern, new FactoryCreateRule(creationFactory, ignoreCreateExceptions)); + } + + public void addObjectCreate(String pattern, String className) { + addRule(pattern, new ObjectCreateRule(className)); + } + + public void addObjectCreate(String pattern, Class clazz) { + addRule(pattern, new ObjectCreateRule(clazz)); + } + + public void addObjectCreate(String pattern, String className, String attributeName) { + addRule(pattern, new ObjectCreateRule(className, attributeName)); + } + + public void addObjectCreate(String pattern, String attributeName, Class clazz) { + addRule(pattern, new ObjectCreateRule(attributeName, clazz)); + } + + public void addSetNext(String pattern, String methodName) { + addRule(pattern, new SetNextRule(methodName)); + } + + public void addSetNext(String pattern, String methodName, String paramType) { + addRule(pattern, new SetNextRule(methodName, paramType)); + } + + public void addSetRoot(String pattern, String methodName) { + addRule(pattern, new SetRootRule(methodName)); + } + + public void addSetRoot(String pattern, String methodName, String paramType) { + addRule(pattern, new SetRootRule(methodName, paramType)); + } + + public void addSetProperties(String pattern) { + addRule(pattern, new SetPropertiesRule()); + } + + public void addSetProperties(String pattern, String attributeName, String propertyName) { + addRule(pattern, new SetPropertiesRule(attributeName, propertyName)); + } + + public void addSetProperties(String pattern, String[] attributeNames, String[] propertyNames) { + addRule(pattern, new SetPropertiesRule(attributeNames, propertyNames)); + } + + public void addSetProperty(String pattern, String name, String value) { + addRule(pattern, new SetPropertyRule(name, value)); + } + + public void addSetTop(String pattern, String methodName) { + addRule(pattern, new SetTopRule(methodName)); + } + + public void addSetTop(String pattern, String methodName, String paramType) { + addRule(pattern, new SetTopRule(methodName, paramType)); + } + + public void clear() { + this.match = ""; + this.bodyTexts.clear(); + this.params.clear(); + this.publicId = null; + this.stack.clear(); + } + + public Object peek() { + try { + return this.stack.peek(); + } catch (EmptyStackException e) { + this.log.warn("Empty stack (returning null)"); + return null; + } + } + + public Object peek(int n) { + try { + return this.stack.peek(n); + } catch (EmptyStackException e) { + this.log.warn("Empty stack (returning null)"); + return null; + } + } + + public Object pop() { + try { + return this.stack.pop(); + } catch (EmptyStackException e) { + this.log.warn("Empty stack (returning null)"); + return null; + } + } + + public void push(Object object) { + if (this.stack.size() == 0) + this.root = object; + this.stack.push(object); + } + + public Object getRoot() { + return this.root; + } + + protected void configure() { + if (this.configured) + return; + this.configured = true; + } + + Map getRegistrations() { + return this.entityValidator; + } + + List getRules(String match) { + return getRules().match(match); + } + + Object peekParams() { + try { + return this.params.peek(); + } catch (EmptyStackException e) { + this.log.warn("Empty stack (returning null)"); + return null; + } + } + + Object peekParams(int n) { + try { + return this.params.peek(n); + } catch (EmptyStackException e) { + this.log.warn("Empty stack (returning null)"); + return null; + } + } + + Object popParams() { + try { + if (this.log.isTraceEnabled()) + this.log.trace("Popping params"); + return this.params.pop(); + } catch (EmptyStackException e) { + this.log.warn("Empty stack (returning null)"); + return null; + } + } + + void pushParams(Object object) { + if (this.log.isTraceEnabled()) + this.log.trace("Pushing params"); + this.params.push(object); + } + + protected SAXException createSAXException(String message, Exception e) { + if (e != null && e instanceof InvocationTargetException) { + Throwable t = ((InvocationTargetException)e).getTargetException(); + if (t != null && t instanceof Exception) + e = (Exception)t; + } + if (this.locator != null) { + String error = "Error at (" + this.locator.getLineNumber() + ", " + this.locator.getColumnNumber() + ": " + message; + if (e != null) + return new SAXParseException(error, this.locator, e); + return new SAXParseException(error, this.locator); + } + this.log.error("No Locator!"); + if (e != null) + return new SAXException(message, e); + return new SAXException(message); + } + + protected SAXException createSAXException(Exception e) { + if (e instanceof InvocationTargetException) { + Throwable t = ((InvocationTargetException)e).getTargetException(); + if (t != null && t instanceof Exception) + e = (Exception)t; + } + return createSAXException(e.getMessage(), e); + } + + protected SAXException createSAXException(String message) { + return createSAXException(message, null); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/FactoryCreateRule.java b/hrmsEjb/org/apache/commons/digester/FactoryCreateRule.java new file mode 100644 index 0000000..05e76f7 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/FactoryCreateRule.java @@ -0,0 +1,159 @@ +package org.apache.commons.digester; + +import org.apache.commons.collections.ArrayStack; +import org.xml.sax.Attributes; + +public class FactoryCreateRule extends Rule { + private boolean ignoreCreateExceptions; + + private ArrayStack exceptionIgnoredStack; + + protected String attributeName; + + protected String className; + + protected ObjectCreationFactory creationFactory; + + public FactoryCreateRule(Digester digester, String className) { + this(className); + } + + public FactoryCreateRule(Digester digester, Class clazz) { + this(clazz); + } + + public FactoryCreateRule(Digester digester, String className, String attributeName) { + this(className, attributeName); + } + + public FactoryCreateRule(Digester digester, Class clazz, String attributeName) { + this(clazz, attributeName); + } + + public FactoryCreateRule(Digester digester, ObjectCreationFactory creationFactory) { + this(creationFactory); + } + + public FactoryCreateRule(String className) { + this(className, false); + } + + public FactoryCreateRule(Class clazz) { + this(clazz, false); + } + + public FactoryCreateRule(String className, String attributeName) { + this(className, attributeName, false); + } + + public FactoryCreateRule(Class clazz, String attributeName) { + this(clazz, attributeName, false); + } + + public FactoryCreateRule(ObjectCreationFactory creationFactory) { + this(creationFactory, false); + } + + public FactoryCreateRule(String className, boolean ignoreCreateExceptions) { + this(className, (String)null, ignoreCreateExceptions); + } + + public FactoryCreateRule(Class clazz, boolean ignoreCreateExceptions) { + this(clazz, (String)null, ignoreCreateExceptions); + } + + public FactoryCreateRule(String className, String attributeName, boolean ignoreCreateExceptions) { + this.attributeName = null; + this.className = null; + this.creationFactory = null; + this.className = className; + this.attributeName = attributeName; + this.ignoreCreateExceptions = ignoreCreateExceptions; + } + + public FactoryCreateRule(Class clazz, String attributeName, boolean ignoreCreateExceptions) { + this(clazz.getName(), attributeName, ignoreCreateExceptions); + } + + public FactoryCreateRule(ObjectCreationFactory creationFactory, boolean ignoreCreateExceptions) { + this.attributeName = null; + this.className = null; + this.creationFactory = null; + this.creationFactory = creationFactory; + this.ignoreCreateExceptions = ignoreCreateExceptions; + } + + public void begin(String namespace, String name, Attributes attributes) throws Exception { + if (this.ignoreCreateExceptions) { + if (this.exceptionIgnoredStack == null) + this.exceptionIgnoredStack = new ArrayStack(); + try { + Object instance = getFactory(attributes).createObject(attributes); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[FactoryCreateRule]{" + this.digester.match + "} New " + instance.getClass().getName()); + this.digester.push(instance); + this.exceptionIgnoredStack.push(Boolean.FALSE); + } catch (Exception e) { + if (this.digester.log.isInfoEnabled()) { + this.digester.log.info("[FactoryCreateRule] Create exception ignored: " + ((e.getMessage() == null) ? e.getClass().getName() : e.getMessage())); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[FactoryCreateRule] Ignored exception:", e); + } + this.exceptionIgnoredStack.push(Boolean.TRUE); + } + } else { + Object instance = getFactory(attributes).createObject(attributes); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[FactoryCreateRule]{" + this.digester.match + "} New " + instance.getClass().getName()); + this.digester.push(instance); + } + } + + public void end(String namespace, String name) throws Exception { + if (this.ignoreCreateExceptions && this.exceptionIgnoredStack != null && !this.exceptionIgnoredStack.empty()) + if (((Boolean)this.exceptionIgnoredStack.pop()).booleanValue()) { + if (this.digester.log.isTraceEnabled()) + this.digester.log.trace("[FactoryCreateRule] No creation so no push so no pop"); + return; + } + Object top = this.digester.pop(); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[FactoryCreateRule]{" + this.digester.match + "} Pop " + top.getClass().getName()); + } + + public void finish() throws Exception { + if (this.attributeName != null) + this.creationFactory = null; + } + + public String toString() { + StringBuffer sb = new StringBuffer("FactoryCreateRule["); + sb.append("className="); + sb.append(this.className); + sb.append(", attributeName="); + sb.append(this.attributeName); + if (this.creationFactory != null) { + sb.append(", creationFactory="); + sb.append(this.creationFactory); + } + sb.append("]"); + return sb.toString(); + } + + protected ObjectCreationFactory getFactory(Attributes attributes) throws Exception { + if (this.creationFactory == null) { + String realClassName = this.className; + if (this.attributeName != null) { + String value = attributes.getValue(this.attributeName); + if (value != null) + realClassName = value; + } + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[FactoryCreateRule]{" + this.digester.match + "} New factory " + realClassName); + Class clazz = this.digester.getClassLoader().loadClass(realClassName); + this.creationFactory = (ObjectCreationFactory)clazz.newInstance(); + this.creationFactory.setDigester(this.digester); + } + return this.creationFactory; + } +} diff --git a/hrmsEjb/org/apache/commons/digester/ObjectCreateRule.java b/hrmsEjb/org/apache/commons/digester/ObjectCreateRule.java new file mode 100644 index 0000000..d10973c --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/ObjectCreateRule.java @@ -0,0 +1,74 @@ +package org.apache.commons.digester; + +import org.xml.sax.Attributes; + +public class ObjectCreateRule extends Rule { + protected String attributeName; + + protected String className; + + public ObjectCreateRule(Digester digester, String className) { + this(className); + } + + public ObjectCreateRule(Digester digester, Class clazz) { + this(clazz); + } + + public ObjectCreateRule(Digester digester, String className, String attributeName) { + this(className, attributeName); + } + + public ObjectCreateRule(Digester digester, String attributeName, Class clazz) { + this(attributeName, clazz); + } + + public ObjectCreateRule(String className) { + this(className, (String)null); + } + + public ObjectCreateRule(Class clazz) { + this(clazz.getName(), (String)null); + } + + public ObjectCreateRule(String className, String attributeName) { + this.attributeName = null; + this.className = null; + this.className = className; + this.attributeName = attributeName; + } + + public ObjectCreateRule(String attributeName, Class clazz) { + this(clazz.getName(), attributeName); + } + + public void begin(Attributes attributes) throws Exception { + String realClassName = this.className; + if (this.attributeName != null) { + String value = attributes.getValue(this.attributeName); + if (value != null) + realClassName = value; + } + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[ObjectCreateRule]{" + this.digester.match + "}New " + realClassName); + Class clazz = this.digester.getClassLoader().loadClass(realClassName); + Object instance = clazz.newInstance(); + this.digester.push(instance); + } + + public void end() throws Exception { + Object top = this.digester.pop(); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[ObjectCreateRule]{" + this.digester.match + "} Pop " + top.getClass().getName()); + } + + public String toString() { + StringBuffer sb = new StringBuffer("ObjectCreateRule["); + sb.append("className="); + sb.append(this.className); + sb.append(", attributeName="); + sb.append(this.attributeName); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/ObjectCreationFactory.java b/hrmsEjb/org/apache/commons/digester/ObjectCreationFactory.java new file mode 100644 index 0000000..28f8ab6 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/ObjectCreationFactory.java @@ -0,0 +1,11 @@ +package org.apache.commons.digester; + +import org.xml.sax.Attributes; + +public interface ObjectCreationFactory { + Object createObject(Attributes paramAttributes) throws Exception; + + Digester getDigester(); + + void setDigester(Digester paramDigester); +} diff --git a/hrmsEjb/org/apache/commons/digester/Rule.java b/hrmsEjb/org/apache/commons/digester/Rule.java new file mode 100644 index 0000000..953719c --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/Rule.java @@ -0,0 +1,56 @@ +package org.apache.commons.digester; + +import org.xml.sax.Attributes; + +public abstract class Rule { + protected Digester digester; + + protected String namespaceURI; + + public Rule(Digester digester) { + this.digester = null; + this.namespaceURI = null; + setDigester(digester); + } + + public Rule() { + this.digester = null; + this.namespaceURI = null; + } + + public Digester getDigester() { + return this.digester; + } + + public void setDigester(Digester digester) { + this.digester = digester; + } + + public String getNamespaceURI() { + return this.namespaceURI; + } + + public void setNamespaceURI(String namespaceURI) { + this.namespaceURI = namespaceURI; + } + + public void begin(Attributes attributes) throws Exception {} + + public void begin(String namespace, String name, Attributes attributes) throws Exception { + begin(attributes); + } + + public void body(String text) throws Exception {} + + public void body(String namespace, String name, String text) throws Exception { + body(text); + } + + public void end() throws Exception {} + + public void end(String namespace, String name) throws Exception { + end(); + } + + public void finish() throws Exception {} +} diff --git a/hrmsEjb/org/apache/commons/digester/RuleSet.java b/hrmsEjb/org/apache/commons/digester/RuleSet.java new file mode 100644 index 0000000..17becfe --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/RuleSet.java @@ -0,0 +1,7 @@ +package org.apache.commons.digester; + +public interface RuleSet { + String getNamespaceURI(); + + void addRuleInstances(Digester paramDigester); +} diff --git a/hrmsEjb/org/apache/commons/digester/RuleSetBase.java b/hrmsEjb/org/apache/commons/digester/RuleSetBase.java new file mode 100644 index 0000000..45adc51 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/RuleSetBase.java @@ -0,0 +1,11 @@ +package org.apache.commons.digester; + +public abstract class RuleSetBase implements RuleSet { + protected String namespaceURI = null; + + public String getNamespaceURI() { + return this.namespaceURI; + } + + public abstract void addRuleInstances(Digester paramDigester); +} diff --git a/hrmsEjb/org/apache/commons/digester/Rules.java b/hrmsEjb/org/apache/commons/digester/Rules.java new file mode 100644 index 0000000..8b00bb4 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/Rules.java @@ -0,0 +1,23 @@ +package org.apache.commons.digester; + +import java.util.List; + +public interface Rules { + Digester getDigester(); + + void setDigester(Digester paramDigester); + + String getNamespaceURI(); + + void setNamespaceURI(String paramString); + + void add(String paramString, Rule paramRule); + + void clear(); + + List match(String paramString); + + List match(String paramString1, String paramString2); + + List rules(); +} diff --git a/hrmsEjb/org/apache/commons/digester/RulesBase.java b/hrmsEjb/org/apache/commons/digester/RulesBase.java new file mode 100644 index 0000000..11e5758 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/RulesBase.java @@ -0,0 +1,100 @@ +package org.apache.commons.digester; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +public class RulesBase implements Rules { + protected HashMap cache = new HashMap(); + + protected Digester digester = null; + + protected String namespaceURI = null; + + protected ArrayList rules = new ArrayList(); + + public Digester getDigester() { + return this.digester; + } + + public void setDigester(Digester digester) { + this.digester = digester; + Iterator items = this.rules.iterator(); + while (items.hasNext()) { + Rule item = items.next(); + item.setDigester(digester); + } + } + + public String getNamespaceURI() { + return this.namespaceURI; + } + + public void setNamespaceURI(String namespaceURI) { + this.namespaceURI = namespaceURI; + } + + public void add(String pattern, Rule rule) { + List list = (List)this.cache.get(pattern); + if (list == null) { + list = new ArrayList(); + this.cache.put(pattern, list); + } + list.add(rule); + this.rules.add(rule); + if (this.digester != null) + rule.setDigester(this.digester); + if (this.namespaceURI != null) + rule.setNamespaceURI(this.namespaceURI); + } + + public void clear() { + this.cache.clear(); + this.rules.clear(); + } + + public List match(String pattern) { + return match(null, pattern); + } + + public List match(String namespaceURI, String pattern) { + List rulesList = lookup(namespaceURI, pattern); + if (rulesList == null || rulesList.size() < 1) { + String longKey = ""; + Iterator keys = this.cache.keySet().iterator(); + while (keys.hasNext()) { + String key = keys.next(); + if (key.startsWith("*/") && ( + pattern.equals(key.substring(2)) || pattern.endsWith(key.substring(1)))) + if (key.length() > longKey.length()) { + rulesList = lookup(namespaceURI, key); + longKey = key; + } + } + } + if (rulesList == null) + rulesList = new ArrayList(); + return rulesList; + } + + public List rules() { + return this.rules; + } + + protected List lookup(String namespaceURI, String pattern) { + List list = (List)this.cache.get(pattern); + if (list == null) + return null; + if (namespaceURI == null || namespaceURI.length() == 0) + return list; + ArrayList results = new ArrayList(); + Iterator items = list.iterator(); + while (items.hasNext()) { + Rule item = items.next(); + if (namespaceURI.equals(item.getNamespaceURI()) || item.getNamespaceURI() == null) + results.add(item); + } + return results; + } +} diff --git a/hrmsEjb/org/apache/commons/digester/SetNextRule.java b/hrmsEjb/org/apache/commons/digester/SetNextRule.java new file mode 100644 index 0000000..51361b2 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/SetNextRule.java @@ -0,0 +1,71 @@ +package org.apache.commons.digester; + +import org.apache.commons.beanutils.MethodUtils; + +public class SetNextRule extends Rule { + protected String methodName; + + protected String paramType; + + protected boolean useExactMatch; + + public SetNextRule(Digester digester, String methodName) { + this(methodName); + } + + public SetNextRule(Digester digester, String methodName, String paramType) { + this(methodName, paramType); + } + + public SetNextRule(String methodName) { + this(methodName, (String)null); + } + + public SetNextRule(String methodName, String paramType) { + this.methodName = null; + this.paramType = null; + this.useExactMatch = false; + this.methodName = methodName; + this.paramType = paramType; + } + + public boolean isExactMatch() { + return this.useExactMatch; + } + + public void setExactMatch(boolean useExactMatch) { + this.useExactMatch = useExactMatch; + } + + public void end() throws Exception { + Object child = this.digester.peek(0); + Object parent = this.digester.peek(1); + if (this.digester.log.isDebugEnabled()) + if (parent == null) { + this.digester.log.debug("[SetNextRule]{" + this.digester.match + "} Call [NULL PARENT]." + this.methodName + "(" + child + ")"); + } else { + this.digester.log.debug("[SetNextRule]{" + this.digester.match + "} Call " + parent.getClass().getName() + "." + this.methodName + "(" + child + ")"); + } + Class[] paramTypes = new Class[1]; + if (this.paramType != null) { + paramTypes[0] = this.digester.getClassLoader().loadClass(this.paramType); + } else { + paramTypes[0] = child.getClass(); + } + if (this.useExactMatch) { + MethodUtils.invokeExactMethod(parent, this.methodName, new Object[] { child }, paramTypes); + } else { + MethodUtils.invokeMethod(parent, this.methodName, new Object[] { child }, paramTypes); + } + } + + public String toString() { + StringBuffer sb = new StringBuffer("SetNextRule["); + sb.append("methodName="); + sb.append(this.methodName); + sb.append(", paramType="); + sb.append(this.paramType); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/SetPropertiesRule.java b/hrmsEjb/org/apache/commons/digester/SetPropertiesRule.java new file mode 100644 index 0000000..2e76a92 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/SetPropertiesRule.java @@ -0,0 +1,94 @@ +package org.apache.commons.digester; + +import java.util.HashMap; +import org.apache.commons.beanutils.BeanUtils; +import org.xml.sax.Attributes; + +public class SetPropertiesRule extends Rule { + private String[] attributeNames; + + private String[] propertyNames; + + public SetPropertiesRule(Digester digester) { + this(); + } + + public SetPropertiesRule() {} + + public SetPropertiesRule(String attributeName, String propertyName) { + this.attributeNames = new String[1]; + this.attributeNames[0] = attributeName; + this.propertyNames = new String[1]; + this.propertyNames[0] = propertyName; + } + + public SetPropertiesRule(String[] attributeNames, String[] propertyNames) { + this.attributeNames = new String[attributeNames.length]; + for (int i = 0, size = attributeNames.length; i < size; i++) + this.attributeNames[i] = attributeNames[i]; + this.propertyNames = new String[propertyNames.length]; + for (int j = 0, k = propertyNames.length; j < k; j++) + this.propertyNames[j] = propertyNames[j]; + } + + public void begin(Attributes attributes) throws Exception { + HashMap values = new HashMap(); + int attNamesLength = 0; + if (this.attributeNames != null) + attNamesLength = this.attributeNames.length; + int propNamesLength = 0; + if (this.propertyNames != null) + propNamesLength = this.propertyNames.length; + for (int i = 0; i < attributes.getLength(); i++) { + String name = attributes.getLocalName(i); + if ("".equals(name)) + name = attributes.getQName(i); + String value = attributes.getValue(i); + for (int n = 0; n < attNamesLength; n++) { + if (name.equals(this.attributeNames[n])) { + if (n < propNamesLength) { + name = this.propertyNames[n]; + break; + } + name = null; + break; + } + } + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[SetPropertiesRule]{" + this.digester.match + "} Setting property '" + name + "' to '" + value + "'"); + if (name != null) + values.put(name, value); + } + Object top = this.digester.peek(); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[SetPropertiesRule]{" + this.digester.match + "} Set " + top.getClass().getName() + " properties"); + BeanUtils.populate(top, values); + } + + public void addAlias(String attributeName, String propertyName) { + if (this.attributeNames == null) { + this.attributeNames = new String[1]; + this.attributeNames[0] = attributeName; + this.propertyNames = new String[1]; + this.propertyNames[0] = propertyName; + } else { + int length = this.attributeNames.length; + String[] tempAttributes = new String[length + 1]; + for (int i = 0; i < length; i++) + tempAttributes[i] = this.attributeNames[i]; + tempAttributes[length] = attributeName; + String[] tempProperties = new String[length + 1]; + for (int j = 0; j < length && j < this.propertyNames.length; j++) + tempProperties[j] = this.propertyNames[j]; + tempProperties[length] = propertyName; + this.propertyNames = tempProperties; + this.attributeNames = tempAttributes; + } + } + + public String toString() { + StringBuffer sb = new StringBuffer("SetPropertiesRule["); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/SetPropertyRule.java b/hrmsEjb/org/apache/commons/digester/SetPropertyRule.java new file mode 100644 index 0000000..8d96510 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/SetPropertyRule.java @@ -0,0 +1,64 @@ +package org.apache.commons.digester; + +import java.beans.PropertyDescriptor; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.DynaBean; +import org.apache.commons.beanutils.DynaProperty; +import org.apache.commons.beanutils.PropertyUtils; +import org.xml.sax.Attributes; + +public class SetPropertyRule extends Rule { + protected String name; + + protected String value; + + public SetPropertyRule(Digester digester, String name, String value) { + this(name, value); + } + + public SetPropertyRule(String name, String value) { + this.name = null; + this.value = null; + this.name = name; + this.value = value; + } + + public void begin(Attributes attributes) throws Exception { + String actualName = null; + String actualValue = null; + for (int i = 0; i < attributes.getLength(); i++) { + String name = attributes.getLocalName(i); + if ("".equals(name)) + name = attributes.getQName(i); + String value = attributes.getValue(i); + if (name.equals(this.name)) { + actualName = value; + } else if (name.equals(this.value)) { + actualValue = value; + } + } + Object top = this.digester.peek(); + if (this.digester.log.isDebugEnabled()) + this.digester.log.debug("[SetPropertyRule]{" + this.digester.match + "} Set " + top.getClass().getName() + " property " + actualName + " to " + actualValue); + if (top instanceof DynaBean) { + DynaProperty desc = ((DynaBean)top).getDynaClass().getDynaProperty(actualName); + if (desc == null) + throw new NoSuchMethodException("Bean has no property named " + actualName); + } else { + PropertyDescriptor desc = PropertyUtils.getPropertyDescriptor(top, actualName); + if (desc == null) + throw new NoSuchMethodException("Bean has no property named " + actualName); + } + BeanUtils.setProperty(top, actualName, actualValue); + } + + public String toString() { + StringBuffer sb = new StringBuffer("SetPropertyRule["); + sb.append("name="); + sb.append(this.name); + sb.append(", value="); + sb.append(this.value); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/SetRootRule.java b/hrmsEjb/org/apache/commons/digester/SetRootRule.java new file mode 100644 index 0000000..a2aec30 --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/SetRootRule.java @@ -0,0 +1,71 @@ +package org.apache.commons.digester; + +import org.apache.commons.beanutils.MethodUtils; + +public class SetRootRule extends Rule { + protected String methodName; + + protected String paramType; + + protected boolean useExactMatch; + + public SetRootRule(Digester digester, String methodName) { + this(methodName); + } + + public SetRootRule(Digester digester, String methodName, String paramType) { + this(methodName, paramType); + } + + public SetRootRule(String methodName) { + this(methodName, (String)null); + } + + public SetRootRule(String methodName, String paramType) { + this.methodName = null; + this.paramType = null; + this.useExactMatch = false; + this.methodName = methodName; + this.paramType = paramType; + } + + public boolean isExactMatch() { + return this.useExactMatch; + } + + public void setExactMatch(boolean useExactMatch) { + this.useExactMatch = useExactMatch; + } + + public void end() throws Exception { + Object child = this.digester.peek(0); + Object parent = this.digester.root; + if (this.digester.log.isDebugEnabled()) + if (parent == null) { + this.digester.log.debug("[SetRootRule]{" + this.digester.match + "} Call [NULL ROOT]." + this.methodName + "(" + child + ")"); + } else { + this.digester.log.debug("[SetRootRule]{" + this.digester.match + "} Call " + parent.getClass().getName() + "." + this.methodName + "(" + child + ")"); + } + Class[] paramTypes = new Class[1]; + if (this.paramType != null) { + paramTypes[0] = this.digester.getClassLoader().loadClass(this.paramType); + } else { + paramTypes[0] = child.getClass(); + } + if (this.useExactMatch) { + MethodUtils.invokeExactMethod(parent, this.methodName, new Object[] { child }, paramTypes); + } else { + MethodUtils.invokeMethod(parent, this.methodName, new Object[] { child }, paramTypes); + } + } + + public String toString() { + StringBuffer sb = new StringBuffer("SetRootRule["); + sb.append("methodName="); + sb.append(this.methodName); + sb.append(", paramType="); + sb.append(this.paramType); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/digester/SetTopRule.java b/hrmsEjb/org/apache/commons/digester/SetTopRule.java new file mode 100644 index 0000000..936d7ec --- /dev/null +++ b/hrmsEjb/org/apache/commons/digester/SetTopRule.java @@ -0,0 +1,71 @@ +package org.apache.commons.digester; + +import org.apache.commons.beanutils.MethodUtils; + +public class SetTopRule extends Rule { + protected String methodName; + + protected String paramType; + + protected boolean useExactMatch; + + public SetTopRule(Digester digester, String methodName) { + this(methodName); + } + + public SetTopRule(Digester digester, String methodName, String paramType) { + this(methodName, paramType); + } + + public SetTopRule(String methodName) { + this(methodName, (String)null); + } + + public SetTopRule(String methodName, String paramType) { + this.methodName = null; + this.paramType = null; + this.useExactMatch = false; + this.methodName = methodName; + this.paramType = paramType; + } + + public boolean isExactMatch() { + return this.useExactMatch; + } + + public void setExactMatch(boolean useExactMatch) { + this.useExactMatch = useExactMatch; + } + + public void end() throws Exception { + Object child = this.digester.peek(0); + Object parent = this.digester.peek(1); + if (this.digester.log.isDebugEnabled()) + if (child == null) { + this.digester.log.debug("[SetTopRule]{" + this.digester.match + "} Call [NULL CHILD]." + this.methodName + "(" + parent + ")"); + } else { + this.digester.log.debug("[SetTopRule]{" + this.digester.match + "} Call " + child.getClass().getName() + "." + this.methodName + "(" + parent + ")"); + } + Class[] paramTypes = new Class[1]; + if (this.paramType != null) { + paramTypes[0] = this.digester.getClassLoader().loadClass(this.paramType); + } else { + paramTypes[0] = parent.getClass(); + } + if (this.useExactMatch) { + MethodUtils.invokeExactMethod(child, this.methodName, new Object[] { parent }, paramTypes); + } else { + MethodUtils.invokeMethod(child, this.methodName, new Object[] { parent }, paramTypes); + } + } + + public String toString() { + StringBuffer sb = new StringBuffer("SetTopRule["); + sb.append("methodName="); + sb.append(this.methodName); + sb.append(", paramType="); + sb.append(this.paramType); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/commons/logging/Log.java b/hrmsEjb/org/apache/commons/logging/Log.java new file mode 100644 index 0000000..083d4f2 --- /dev/null +++ b/hrmsEjb/org/apache/commons/logging/Log.java @@ -0,0 +1,39 @@ +package org.apache.commons.logging; + +public interface Log { + boolean isDebugEnabled(); + + boolean isErrorEnabled(); + + boolean isFatalEnabled(); + + boolean isInfoEnabled(); + + boolean isTraceEnabled(); + + boolean isWarnEnabled(); + + void trace(Object paramObject); + + void trace(Object paramObject, Throwable paramThrowable); + + void debug(Object paramObject); + + void debug(Object paramObject, Throwable paramThrowable); + + void info(Object paramObject); + + void info(Object paramObject, Throwable paramThrowable); + + void warn(Object paramObject); + + void warn(Object paramObject, Throwable paramThrowable); + + void error(Object paramObject); + + void error(Object paramObject, Throwable paramThrowable); + + void fatal(Object paramObject); + + void fatal(Object paramObject, Throwable paramThrowable); +} diff --git a/hrmsEjb/org/apache/commons/logging/LogConfigurationException.java b/hrmsEjb/org/apache/commons/logging/LogConfigurationException.java new file mode 100644 index 0000000..5e60f75 --- /dev/null +++ b/hrmsEjb/org/apache/commons/logging/LogConfigurationException.java @@ -0,0 +1,24 @@ +package org.apache.commons.logging; + +public class LogConfigurationException extends RuntimeException { + public LogConfigurationException() {} + + public LogConfigurationException(String message) { + super(message); + } + + public LogConfigurationException(Throwable cause) { + this((cause == null) ? null : cause.toString(), cause); + } + + public LogConfigurationException(String message, Throwable cause) { + super(message); + this.cause = cause; + } + + protected Throwable cause = null; + + public Throwable getCause() { + return this.cause; + } +} diff --git a/hrmsEjb/org/apache/commons/logging/LogFactory.java b/hrmsEjb/org/apache/commons/logging/LogFactory.java new file mode 100644 index 0000000..a3ff754 --- /dev/null +++ b/hrmsEjb/org/apache/commons/logging/LogFactory.java @@ -0,0 +1,207 @@ +package org.apache.commons.logging; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Properties; + +public abstract class LogFactory { + public static final String FACTORY_PROPERTY = "org.apache.commons.logging.LogFactory"; + + public static final String FACTORY_DEFAULT = "org.apache.commons.logging.impl.LogFactoryImpl"; + + public static final String FACTORY_PROPERTIES = "commons-logging.properties"; + + protected static final String SERVICE_ID = "META-INF/services/org.apache.commons.logging.LogFactory"; + + protected static Hashtable factories = new Hashtable(); + + public static LogFactory getFactory() throws LogConfigurationException { + ClassLoader contextClassLoader = AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + return LogFactory.getContextClassLoader(); + } + }); + LogFactory factory = getCachedFactory(contextClassLoader); + if (factory != null) + return factory; + Properties props = null; + try { + InputStream stream = getResourceAsStream(contextClassLoader, "commons-logging.properties"); + if (stream != null) { + props = new Properties(); + props.load(stream); + stream.close(); + } + } catch (IOException e) { + + } catch (SecurityException e) {} + try { + String factoryClass = System.getProperty("org.apache.commons.logging.LogFactory"); + if (factoryClass != null) + factory = newFactory(factoryClass, contextClassLoader); + } catch (SecurityException e) {} + if (factory == null) + try { + InputStream is = getResourceAsStream(contextClassLoader, "META-INF/services/org.apache.commons.logging.LogFactory"); + if (is != null) { + BufferedReader bufferedReader; + try { + bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")); + } catch (UnsupportedEncodingException e) { + bufferedReader = new BufferedReader(new InputStreamReader(is)); + } + String factoryClassName = bufferedReader.readLine(); + bufferedReader.close(); + if (factoryClassName != null && !"".equals(factoryClassName)) + factory = newFactory(factoryClassName, contextClassLoader); + } + } catch (Exception ex) {} + if (factory == null && props != null) { + String factoryClass = props.getProperty("org.apache.commons.logging.LogFactory"); + if (factoryClass != null) + factory = newFactory(factoryClass, contextClassLoader); + } + if (factory == null) + factory = newFactory("org.apache.commons.logging.impl.LogFactoryImpl", LogFactory.class.getClassLoader()); + if (factory != null) { + cacheFactory(contextClassLoader, factory); + if (props != null) { + Enumeration names = props.propertyNames(); + while (names.hasMoreElements()) { + String name = (String)names.nextElement(); + String value = props.getProperty(name); + factory.setAttribute(name, value); + } + } + } + return factory; + } + + public static Log getLog(Class clazz) throws LogConfigurationException { + return getFactory().getInstance(clazz); + } + + public static Log getLog(String name) throws LogConfigurationException { + return getFactory().getInstance(name); + } + + public static void release(ClassLoader classLoader) { + synchronized (factories) { + LogFactory factory = (LogFactory)factories.get(classLoader); + if (factory != null) { + factory.release(); + factories.remove(classLoader); + } + } + } + + public static void releaseAll() { + synchronized (factories) { + Enumeration elements = factories.elements(); + while (elements.hasMoreElements()) { + LogFactory element = elements.nextElement(); + element.release(); + } + factories.clear(); + } + } + + protected static ClassLoader getContextClassLoader() throws LogConfigurationException { + ClassLoader classLoader = null; + try { + Method method = Thread.class.getMethod("getContextClassLoader", null); + try { + classLoader = (ClassLoader)method.invoke(Thread.currentThread(), null); + } catch (IllegalAccessException e) { + throw new LogConfigurationException("Unexpected IllegalAccessException", e); + } catch (InvocationTargetException e) { + if (!(e.getTargetException() instanceof SecurityException)) + throw new LogConfigurationException("Unexpected InvocationTargetException", e.getTargetException()); + } + } catch (NoSuchMethodException e) { + classLoader = LogFactory.class.getClassLoader(); + } + return classLoader; + } + + private static LogFactory getCachedFactory(ClassLoader contextClassLoader) { + LogFactory factory = null; + if (contextClassLoader != null) + factory = (LogFactory)factories.get(contextClassLoader); + return factory; + } + + private static void cacheFactory(ClassLoader classLoader, LogFactory factory) { + if (classLoader != null && factory != null) + factories.put(classLoader, factory); + } + + protected static LogFactory newFactory(String factoryClass, ClassLoader classLoader) throws LogConfigurationException { + Object result = AccessController.doPrivileged(new PrivilegedAction(classLoader, factoryClass) { + private final ClassLoader val$classLoader; + + private final String val$factoryClass; + + public Object run() { + try { + if (this.val$classLoader != null) + try { + return this.val$classLoader.loadClass(this.val$factoryClass).newInstance(); + } catch (ClassNotFoundException ex) { + if (this.val$classLoader == ((LogFactory.class$org$apache$commons$logging$LogFactory == null) ? (LogFactory.class$org$apache$commons$logging$LogFactory = LogFactory.class$("org.apache.commons.logging.LogFactory")) : LogFactory.class$org$apache$commons$logging$LogFactory).getClassLoader()) + throw ex; + } catch (NoClassDefFoundError e) { + if (this.val$classLoader == ((LogFactory.class$org$apache$commons$logging$LogFactory == null) ? (LogFactory.class$org$apache$commons$logging$LogFactory = LogFactory.class$("org.apache.commons.logging.LogFactory")) : LogFactory.class$org$apache$commons$logging$LogFactory).getClassLoader()) + throw e; + } catch (ClassCastException e) { + if (this.val$classLoader == ((LogFactory.class$org$apache$commons$logging$LogFactory == null) ? (LogFactory.class$org$apache$commons$logging$LogFactory = LogFactory.class$("org.apache.commons.logging.LogFactory")) : LogFactory.class$org$apache$commons$logging$LogFactory).getClassLoader()) + throw e; + } + return Class.forName(this.val$factoryClass).newInstance(); + } catch (Exception e) { + return new LogConfigurationException(e); + } + } + }); + if (result instanceof LogConfigurationException) + throw (LogConfigurationException)result; + return (LogFactory)result; + } + + private static InputStream getResourceAsStream(ClassLoader loader, String name) { + return AccessController.doPrivileged(new PrivilegedAction(loader, name) { + private final ClassLoader val$loader; + + private final String val$name; + + public Object run() { + if (this.val$loader != null) + return this.val$loader.getResourceAsStream(this.val$name); + return ClassLoader.getSystemResourceAsStream(this.val$name); + } + }); + } + + public abstract Object getAttribute(String paramString); + + public abstract String[] getAttributeNames(); + + public abstract Log getInstance(Class paramClass) throws LogConfigurationException; + + public abstract Log getInstance(String paramString) throws LogConfigurationException; + + public abstract void release(); + + public abstract void removeAttribute(String paramString); + + public abstract void setAttribute(String paramString, Object paramObject); +} diff --git a/hrmsEjb/org/apache/struts/action/Action.java b/hrmsEjb/org/apache/struts/action/Action.java new file mode 100644 index 0000000..c738d12 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/Action.java @@ -0,0 +1,169 @@ +package org.apache.struts.action; + +import java.io.IOException; +import java.util.Locale; +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 javax.sql.DataSource; +import org.apache.struts.config.ModuleConfig; +import org.apache.struts.util.MessageResources; +import org.apache.struts.util.RequestUtils; +import org.apache.struts.util.TokenProcessor; + +public class Action { + public static final String ACTION_SERVLET_KEY = "org.apache.struts.action.ACTION_SERVLET"; + + public static final String APPLICATION_KEY = "org.apache.struts.action.MODULE"; + + public static final String DATA_SOURCE_KEY = "org.apache.struts.action.DATA_SOURCE"; + + public static final String ERROR_KEY = "org.apache.struts.action.ERROR"; + + public static final String EXCEPTION_KEY = "org.apache.struts.action.EXCEPTION"; + + public static final String FORM_BEANS_KEY = "org.apache.struts.action.FORM_BEANS"; + + public static final String FORWARDS_KEY = "org.apache.struts.action.FORWARDS"; + + public static final String LOCALE_KEY = "org.apache.struts.action.LOCALE"; + + public static final String MAPPING_KEY = "org.apache.struts.action.mapping.instance"; + + public static final String MAPPINGS_KEY = "org.apache.struts.action.MAPPINGS"; + + public static final String MESSAGE_KEY = "org.apache.struts.action.ACTION_MESSAGE"; + + public static final String MESSAGES_KEY = "org.apache.struts.action.MESSAGE"; + + public static final String MULTIPART_KEY = "org.apache.struts.action.mapping.multipartclass"; + + public static final String PLUG_INS_KEY = "org.apache.struts.action.PLUG_INS"; + + public static final String REQUEST_PROCESSOR_KEY = "org.apache.struts.action.REQUEST_PROCESSOR"; + + public static final String SERVLET_KEY = "org.apache.struts.action.SERVLET_MAPPING"; + + public static final String TRANSACTION_TOKEN_KEY = "org.apache.struts.action.TOKEN"; + + private static TokenProcessor token = TokenProcessor.getInstance(); + + protected static Locale defaultLocale = Locale.getDefault(); + + protected ActionServlet servlet = null; + + public ActionServlet getServlet() { + return this.servlet; + } + + public void setServlet(ActionServlet servlet) { + this.servlet = servlet; + } + + public ActionForward execute(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) throws Exception { + return perform(mapping, form, request, response); + } + + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { + return perform(mapping, form, request, response); + } + + public ActionForward perform(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) throws IOException, ServletException { + try { + return perform(mapping, form, (HttpServletRequest)request, (HttpServletResponse)response); + } catch (ClassCastException e) { + return null; + } + } + + public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + return null; + } + + protected String generateToken(HttpServletRequest request) { + return token.generateToken(request); + } + + protected DataSource getDataSource(HttpServletRequest request) { + return getDataSource(request, "org.apache.struts.action.DATA_SOURCE"); + } + + protected DataSource getDataSource(HttpServletRequest request, String key) { + ServletContext context = getServlet().getServletContext(); + ModuleConfig moduleConfig = RequestUtils.getModuleConfig(request, context); + return (DataSource)context.getAttribute(key + moduleConfig.getPrefix()); + } + + protected Locale getLocale(HttpServletRequest request) { + HttpSession session = request.getSession(); + Locale locale = (Locale)session.getAttribute("org.apache.struts.action.LOCALE"); + if (locale == null) + locale = defaultLocale; + return locale; + } + + protected MessageResources getResources() { + return (MessageResources)this.servlet.getServletContext().getAttribute("org.apache.struts.action.MESSAGE"); + } + + protected MessageResources getResources(HttpServletRequest request) { + return (MessageResources)request.getAttribute("org.apache.struts.action.MESSAGE"); + } + + protected MessageResources getResources(HttpServletRequest request, String key) { + ServletContext context = getServlet().getServletContext(); + ModuleConfig moduleConfig = RequestUtils.getModuleConfig(request, context); + return (MessageResources)context.getAttribute(key + moduleConfig.getPrefix()); + } + + protected boolean isCancelled(HttpServletRequest request) { + return (request.getAttribute("org.apache.struts.action.CANCEL") != null); + } + + protected boolean isTokenValid(HttpServletRequest request) { + return token.isTokenValid(request, false); + } + + protected boolean isTokenValid(HttpServletRequest request, boolean reset) { + return token.isTokenValid(request, reset); + } + + protected void resetToken(HttpServletRequest request) { + token.resetToken(request); + } + + protected void saveErrors(HttpServletRequest request, ActionErrors errors) { + if (errors == null || errors.isEmpty()) { + request.removeAttribute("org.apache.struts.action.ERROR"); + return; + } + request.setAttribute("org.apache.struts.action.ERROR", errors); + } + + protected void saveMessages(HttpServletRequest request, ActionMessages messages) { + if (messages == null || messages.isEmpty()) { + request.removeAttribute("org.apache.struts.action.ACTION_MESSAGE"); + return; + } + request.setAttribute("org.apache.struts.action.ACTION_MESSAGE", messages); + } + + protected void saveToken(HttpServletRequest request) { + token.saveToken(request); + } + + protected void setLocale(HttpServletRequest request, Locale locale) { + HttpSession session = request.getSession(); + if (locale == null) + locale = defaultLocale; + session.setAttribute("org.apache.struts.action.LOCALE", locale); + } + + protected String toHex(byte[] buffer) { + return token.toHex(buffer); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionError.java b/hrmsEjb/org/apache/struts/action/ActionError.java new file mode 100644 index 0000000..57e2e18 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionError.java @@ -0,0 +1,29 @@ +package org.apache.struts.action; + +import java.io.Serializable; + +public class ActionError extends ActionMessage implements Serializable { + public ActionError(String key) { + super(key); + } + + public ActionError(String key, Object value0) { + super(key, value0); + } + + public ActionError(String key, Object value0, Object value1) { + super(key, value0, value1); + } + + public ActionError(String key, Object value0, Object value1, Object value2) { + super(key, value0, value1, value2); + } + + public ActionError(String key, Object value0, Object value1, Object value2, Object value3) { + super(key, value0, value1, value2, value3); + } + + public ActionError(String key, Object[] values) { + super(key, values); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionErrors.java b/hrmsEjb/org/apache/struts/action/ActionErrors.java new file mode 100644 index 0000000..11a0f7e --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionErrors.java @@ -0,0 +1,17 @@ +package org.apache.struts.action; + +import java.io.Serializable; + +public class ActionErrors extends ActionMessages implements Serializable { + public static final String GLOBAL_ERROR = "org.apache.struts.action.GLOBAL_ERROR"; + + public ActionErrors() {} + + public ActionErrors(ActionErrors messages) { + super(messages); + } + + public void add(String property, ActionError error) { + add(property, error); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionForm.java b/hrmsEjb/org/apache/struts/action/ActionForm.java new file mode 100644 index 0000000..382e8f5 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionForm.java @@ -0,0 +1,52 @@ +package org.apache.struts.action; + +import java.io.Serializable; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.upload.MultipartRequestHandler; + +public abstract class ActionForm implements Serializable { + protected transient ActionServlet servlet = null; + + protected transient MultipartRequestHandler multipartRequestHandler; + + protected ActionServlet getServlet() { + return this.servlet; + } + + public ActionServletWrapper getServletWrapper() { + return new ActionServletWrapper(getServlet()); + } + + public MultipartRequestHandler getMultipartRequestHandler() { + return this.multipartRequestHandler; + } + + public void setServlet(ActionServlet servlet) { + this.servlet = servlet; + } + + public void setMultipartRequestHandler(MultipartRequestHandler multipartRequestHandler) { + this.multipartRequestHandler = multipartRequestHandler; + } + + public void reset(ActionMapping mapping, ServletRequest request) { + try { + reset(mapping, (HttpServletRequest)request); + } catch (ClassCastException e) {} + } + + public void reset(ActionMapping mapping, HttpServletRequest request) {} + + public ActionErrors validate(ActionMapping mapping, ServletRequest request) { + try { + return validate(mapping, (HttpServletRequest)request); + } catch (ClassCastException e) { + return null; + } + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return null; + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionFormBean.java b/hrmsEjb/org/apache/struts/action/ActionFormBean.java new file mode 100644 index 0000000..93621d5 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionFormBean.java @@ -0,0 +1,12 @@ +package org.apache.struts.action; + +import org.apache.struts.config.FormBeanConfig; + +public class ActionFormBean extends FormBeanConfig { + public ActionFormBean() {} + + public ActionFormBean(String name, String type) { + setName(name); + setType(type); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionFormBeans.java b/hrmsEjb/org/apache/struts/action/ActionFormBeans.java new file mode 100644 index 0000000..89efd4f --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionFormBeans.java @@ -0,0 +1,32 @@ +package org.apache.struts.action; + +import java.io.Serializable; +import org.apache.commons.collections.FastHashMap; + +public class ActionFormBeans implements Serializable { + protected FastHashMap formBeans = new FastHashMap(); + + public boolean getFast() { + return this.formBeans.getFast(); + } + + public void setFast(boolean fast) { + this.formBeans.setFast(fast); + } + + public void addFormBean(ActionFormBean formBean) { + this.formBeans.put(formBean.getName(), formBean); + } + + public ActionFormBean findFormBean(String name) { + return (ActionFormBean)this.formBeans.get(name); + } + + public String[] findFormBeans() { + return (String[])this.formBeans.keySet().toArray((Object[])new String[this.formBeans.size()]); + } + + public void removeFormBean(ActionFormBean formBean) { + this.formBeans.remove(formBean.getName()); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionForward.java b/hrmsEjb/org/apache/struts/action/ActionForward.java new file mode 100644 index 0000000..fe383bb --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionForward.java @@ -0,0 +1,32 @@ +package org.apache.struts.action; + +import org.apache.struts.config.ForwardConfig; + +public class ActionForward extends ForwardConfig { + public ActionForward() { + this((String)null, false); + } + + public ActionForward(String path) { + this(path, false); + } + + public ActionForward(String path, boolean redirect) { + setName(null); + setPath(path); + setRedirect(redirect); + } + + public ActionForward(String name, String path, boolean redirect) { + setName(name); + setPath(path); + setRedirect(redirect); + } + + public ActionForward(String name, String path, boolean redirect, boolean contextRelative) { + setName(name); + setPath(path); + setRedirect(redirect); + setContextRelative(contextRelative); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionForwards.java b/hrmsEjb/org/apache/struts/action/ActionForwards.java new file mode 100644 index 0000000..55f5035 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionForwards.java @@ -0,0 +1,32 @@ +package org.apache.struts.action; + +import java.io.Serializable; +import org.apache.commons.collections.FastHashMap; + +public class ActionForwards implements Serializable { + private FastHashMap forwards = new FastHashMap(); + + public boolean getFast() { + return this.forwards.getFast(); + } + + public void setFast(boolean fast) { + this.forwards.setFast(fast); + } + + public void addForward(ActionForward forward) { + this.forwards.put(forward.getName(), forward); + } + + public ActionForward findForward(String name) { + return (ActionForward)this.forwards.get(name); + } + + public String[] findForwards() { + return (String[])this.forwards.keySet().toArray((Object[])new String[this.forwards.size()]); + } + + public void removeForward(ActionForward forward) { + this.forwards.remove(forward.getName()); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionMapping.java b/hrmsEjb/org/apache/struts/action/ActionMapping.java new file mode 100644 index 0000000..a090c77 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionMapping.java @@ -0,0 +1,44 @@ +package org.apache.struts.action; + +import java.util.ArrayList; +import org.apache.struts.config.ActionConfig; +import org.apache.struts.config.ExceptionConfig; +import org.apache.struts.config.ForwardConfig; + +public class ActionMapping extends ActionConfig { + public ExceptionConfig findException(Class type) { + ExceptionConfig config = null; + do { + String name = type.getName(); + config = findExceptionConfig(name); + if (config != null) + return config; + config = getModuleConfig().findExceptionConfig(name); + if (config != null) + return config; + type = type.getSuperclass(); + } while (type != null); + return null; + } + + public ActionForward findForward(String name) { + ForwardConfig config = findForwardConfig(name); + if (config == null) + config = getModuleConfig().findForwardConfig(name); + return (ActionForward)config; + } + + public String[] findForwards() { + ArrayList results = new ArrayList(); + ForwardConfig[] fcs = findForwardConfigs(); + for (int i = 0; i < fcs.length; i++) + results.add(fcs[i].getName()); + return results.toArray(new String[results.size()]); + } + + public ActionForward getInputForward() { + if (getModuleConfig().getControllerConfig().getInputForward()) + return findForward(getInput()); + return new ActionForward(getInput()); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionMappings.java b/hrmsEjb/org/apache/struts/action/ActionMappings.java new file mode 100644 index 0000000..bbeab32 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionMappings.java @@ -0,0 +1,64 @@ +package org.apache.struts.action; + +import java.io.Serializable; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import org.apache.commons.collections.FastHashMap; + +public class ActionMappings implements Serializable { + protected FastHashMap mappings = new FastHashMap(); + + protected transient ActionServlet servlet = null; + + protected ActionMapping unknown = null; + + public boolean getFast() { + return this.mappings.getFast(); + } + + public void setFast(boolean fast) { + this.mappings.setFast(fast); + } + + public ActionMapping getUnknown(ServletRequest request) { + return getUnknown((HttpServletRequest)request); + } + + public ActionMapping getUnknown(HttpServletRequest request) { + if (this.unknown != null) + return this.unknown; + String[] paths = findMappings(); + for (int i = 0; i < paths.length; i++) { + ActionMapping mapping = findMapping(paths[i]); + if (mapping.getUnknown()) { + this.unknown = mapping; + return mapping; + } + } + return null; + } + + public ActionServlet getServlet() { + return this.servlet; + } + + public void setServlet(ActionServlet servlet) { + this.servlet = servlet; + } + + public void addMapping(ActionMapping mapping) { + this.mappings.put(mapping.getPath(), mapping); + } + + public ActionMapping findMapping(String path) { + return (ActionMapping)this.mappings.get(path); + } + + public String[] findMappings() { + return (String[])this.mappings.keySet().toArray((Object[])new String[this.mappings.size()]); + } + + public void removeMapping(ActionMapping mapping) { + this.mappings.remove(mapping.getPath()); + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionMessage.java b/hrmsEjb/org/apache/struts/action/ActionMessage.java new file mode 100644 index 0000000..ee21411 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionMessage.java @@ -0,0 +1,59 @@ +package org.apache.struts.action; + +import java.io.Serializable; + +public class ActionMessage implements Serializable { + protected String key; + + protected Object[] values; + + public ActionMessage(String key) { + this.key = null; + this.values = null; + this.key = key; + this.values = null; + } + + public ActionMessage(String key, Object value0) { + this.key = null; + this.values = null; + this.key = key; + this.values = new Object[] { value0 }; + } + + public ActionMessage(String key, Object value0, Object value1) { + this.key = null; + this.values = null; + this.key = key; + this.values = new Object[] { value0, value1 }; + } + + public ActionMessage(String key, Object value0, Object value1, Object value2) { + this.key = null; + this.values = null; + this.key = key; + this.values = new Object[] { value0, value1, value2 }; + } + + public ActionMessage(String key, Object value0, Object value1, Object value2, Object value3) { + this.key = null; + this.values = null; + this.key = key; + this.values = new Object[] { value0, value1, value2, value3 }; + } + + public ActionMessage(String key, Object[] values) { + this.key = null; + this.values = null; + this.key = key; + this.values = values; + } + + public String getKey() { + return this.key; + } + + public Object[] getValues() { + return this.values; + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionMessages.java b/hrmsEjb/org/apache/struts/action/ActionMessages.java new file mode 100644 index 0000000..2a6bcf2 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionMessages.java @@ -0,0 +1,143 @@ +package org.apache.struts.action; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +public class ActionMessages implements Serializable { + public static final String GLOBAL_MESSAGE = "org.apache.struts.action.GLOBAL_MESSAGE"; + + protected HashMap messages = new HashMap(); + + protected int iCount = 0; + + public ActionMessages() {} + + public ActionMessages(ActionMessages messages) { + add(messages); + } + + public void add(String property, ActionMessage message) { + ActionMessageItem item = (ActionMessageItem)this.messages.get(property); + List list = null; + if (item == null) { + list = new ArrayList(); + item = new ActionMessageItem(this, list, this.iCount++); + this.messages.put(property, item); + } else { + list = item.getList(); + } + list.add(message); + } + + public void add(ActionMessages messages) { + if (messages == null) + return; + Iterator props = messages.properties(); + while (props.hasNext()) { + String property = props.next(); + Iterator msgs = messages.get(property); + while (msgs.hasNext()) { + ActionMessage msg = msgs.next(); + add(property, msg); + } + } + } + + public void clear() { + this.messages.clear(); + } + + public boolean empty() { + return isEmpty(); + } + + public boolean isEmpty() { + return this.messages.isEmpty(); + } + + public Iterator get() { + if (this.messages.isEmpty()) + return Collections.EMPTY_LIST.iterator(); + ArrayList results = new ArrayList(); + ArrayList actionItems = new ArrayList(); + for (Iterator i = this.messages.values().iterator(); i.hasNext();) + actionItems.add(i.next()); + Collections.sort(actionItems, new Comparator(this) { + private final ActionMessages this$0; + + public int compare(Object o1, Object o2) { + return ((ActionMessages.ActionMessageItem)o1).getOrder() - ((ActionMessages.ActionMessageItem)o2).getOrder(); + } + }); + for (Iterator iterator = actionItems.iterator(); iterator.hasNext(); ) { + ActionMessageItem ami = (ActionMessageItem)iterator.next(); + for (Iterator messages = ami.getList().iterator(); messages.hasNext();) + results.add(messages.next()); + } + return results.iterator(); + } + + public Iterator get(String property) { + ActionMessageItem item = (ActionMessageItem)this.messages.get(property); + if (item == null) + return Collections.EMPTY_LIST.iterator(); + return item.getList().iterator(); + } + + public Iterator properties() { + return this.messages.keySet().iterator(); + } + + public int size() { + int total = 0; + for (Iterator i = this.messages.values().iterator(); i.hasNext(); ) { + ActionMessageItem ami = i.next(); + total += ami.getList().size(); + } + return total; + } + + public int size(String property) { + ActionMessageItem ami = (ActionMessageItem)this.messages.get(property); + if (ami == null) + return 0; + return ami.getList().size(); + } + + protected class ActionMessageItem implements Serializable { + protected List list; + + protected int iOrder; + + private final ActionMessages this$0; + + public ActionMessageItem(ActionMessages this$0, List list, int iOrder) { + this.this$0 = this$0; + this.list = null; + this.iOrder = 0; + this.list = list; + this.iOrder = iOrder; + } + + public List getList() { + return this.list; + } + + public void setList(List list) { + this.list = list; + } + + public int getOrder() { + return this.iOrder; + } + + public void setOrder(int iOrder) { + this.iOrder = iOrder; + } + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionServlet.java b/hrmsEjb/org/apache/struts/action/ActionServlet.java new file mode 100644 index 0000000..b0e5e85 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionServlet.java @@ -0,0 +1,646 @@ +package org.apache.struts.action; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.MalformedURLException; +import java.net.URL; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.MissingResourceException; +import javax.servlet.ServletException; +import javax.servlet.UnavailableException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.sql.DataSource; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.ConvertUtils; +import org.apache.commons.beanutils.Converter; +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.beanutils.converters.BigDecimalConverter; +import org.apache.commons.beanutils.converters.BigIntegerConverter; +import org.apache.commons.beanutils.converters.BooleanConverter; +import org.apache.commons.beanutils.converters.ByteConverter; +import org.apache.commons.beanutils.converters.CharacterConverter; +import org.apache.commons.beanutils.converters.DoubleConverter; +import org.apache.commons.beanutils.converters.FloatConverter; +import org.apache.commons.beanutils.converters.IntegerConverter; +import org.apache.commons.beanutils.converters.LongConverter; +import org.apache.commons.beanutils.converters.ShortConverter; +import org.apache.commons.collections.FastHashMap; +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.RuleSet; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts.config.ActionConfig; +import org.apache.struts.config.ApplicationConfig; +import org.apache.struts.config.ConfigRuleSet; +import org.apache.struts.config.ControllerConfig; +import org.apache.struts.config.DataSourceConfig; +import org.apache.struts.config.FormBeanConfig; +import org.apache.struts.config.ForwardConfig; +import org.apache.struts.config.MessageResourcesConfig; +import org.apache.struts.config.ModuleConfig; +import org.apache.struts.config.ModuleConfigFactory; +import org.apache.struts.config.PlugInConfig; +import org.apache.struts.config.impl.ModuleConfigImpl; +import org.apache.struts.util.GenericDataSource; +import org.apache.struts.util.MessageResources; +import org.apache.struts.util.MessageResourcesFactory; +import org.apache.struts.util.RequestUtils; +import org.apache.struts.util.ServletContextWriter; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +public class ActionServlet extends HttpServlet { + protected String config = "/WEB-INF/struts-config.xml"; + + protected Digester configDigester = null; + + protected boolean convertNull = false; + + protected FastHashMap dataSources = new FastHashMap(); + + protected int debug = 0; + + protected MessageResources internal = null; + + protected String internalName = "org.apache.struts.action.ActionResources"; + + protected static Log log = LogFactory.getLog(ActionServlet.class); + + protected RequestProcessor processor = null; + + protected String[] registrations = new String[] { "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN", "/org/apache/struts/resources/struts-config_1_0.dtd", "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN", "/org/apache/struts/resources/struts-config_1_1.dtd", "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN", "/org/apache/struts/resources/web-app_2_2.dtd", "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN", "/org/apache/struts/resources/web-app_2_3.dtd" }; + + protected String servletMapping = null; + + protected String servletName = null; + + public void destroy() { + if (log.isDebugEnabled()) + log.debug(this.internal.getMessage("finalizing")); + destroyModules(); + destroyDataSources(); + destroyInternal(); + getServletContext().removeAttribute("org.apache.struts.action.ACTION_SERVLET"); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader == null) + classLoader = ActionServlet.class.getClassLoader(); + try { + LogFactory.release(classLoader); + } catch (Throwable t) {} + } + + public void init() throws ServletException { + initInternal(); + initOther(); + initServlet(); + getServletContext().setAttribute("org.apache.struts.action.ACTION_SERVLET", this); + ModuleConfig moduleConfig = initModuleConfig("", this.config); + initModuleMessageResources(moduleConfig); + initModuleDataSources(moduleConfig); + initModulePlugIns(moduleConfig); + moduleConfig.freeze(); + Enumeration names = getServletConfig().getInitParameterNames(); + while (names.hasMoreElements()) { + String name = names.nextElement(); + if (!name.startsWith("config/")) + continue; + String prefix = name.substring(6); + moduleConfig = initModuleConfig(prefix, getServletConfig().getInitParameter(name)); + initModuleMessageResources(moduleConfig); + initModuleDataSources(moduleConfig); + initModulePlugIns(moduleConfig); + moduleConfig.freeze(); + } + destroyConfigDigester(); + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + process(request, response); + } + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + process(request, response); + } + + public void addServletMapping(String servletName, String urlPattern) { + if (log.isDebugEnabled()) + log.debug("Process servletName=" + servletName + ", urlPattern=" + urlPattern); + if (servletName == null) + return; + if (servletName.equals(this.servletName)) + this.servletMapping = urlPattern; + } + + public DataSource findDataSource(String key) { + if (key == null) + return (DataSource)this.dataSources.get("org.apache.struts.action.DATA_SOURCE"); + return (DataSource)this.dataSources.get(key); + } + + public ActionFormBean findFormBean(String name) { + ActionFormBeans afb = (ActionFormBeans)getServletContext().getAttribute("org.apache.struts.action.FORM_BEANS"); + if (afb == null) + return null; + return afb.findFormBean(name); + } + + public ActionForward findForward(String name) { + ActionForwards af = (ActionForwards)getServletContext().getAttribute("org.apache.struts.action.FORWARDS"); + if (af == null) + return null; + return af.findForward(name); + } + + public ActionMapping findMapping(String path) { + ActionMappings am = (ActionMappings)getServletContext().getAttribute("org.apache.struts.action.MAPPINGS"); + if (am == null) + return null; + return am.findMapping(path); + } + + public int getDebug() { + return this.debug; + } + + public MessageResources getInternal() { + return this.internal; + } + + public MessageResources getResources() { + return (MessageResources)getServletContext().getAttribute("org.apache.struts.action.MESSAGE"); + } + + public void log(String message, int level) { + if (this.debug >= level) + log(message); + } + + protected void destroyApplications() { + destroyModules(); + } + + protected void destroyModules() { + ArrayList values = new ArrayList(); + Enumeration names = getServletContext().getAttributeNames(); + while (names.hasMoreElements()) + values.add(names.nextElement()); + Iterator keys = values.iterator(); + while (keys.hasNext()) { + String name = keys.next(); + Object value = getServletContext().getAttribute(name); + if (value instanceof ModuleConfig) { + ModuleConfig config = (ModuleConfig)value; + try { + getRequestProcessor(config).destroy(); + } catch (ServletException e) { + log.error(e); + } + getServletContext().removeAttribute(name); + PlugIn[] plugIns = (PlugIn[])getServletContext().getAttribute("org.apache.struts.action.PLUG_INS" + config.getPrefix()); + if (plugIns != null) { + for (int i = 0; i < plugIns.length; i++) { + int j = plugIns.length - i + 1; + plugIns[j].destroy(); + } + getServletContext().removeAttribute("org.apache.struts.action.PLUG_INS" + config.getPrefix()); + } + } + } + } + + protected void destroyConfigDigester() { + this.configDigester = null; + } + + protected void destroyDataSources() { + synchronized (this.dataSources) { + Iterator keys = this.dataSources.keySet().iterator(); + while (keys.hasNext()) { + String key = keys.next(); + getServletContext().removeAttribute(key); + DataSource dataSource = findDataSource(key); + if (dataSource instanceof GenericDataSource) { + if (log.isDebugEnabled()) + log.debug(this.internal.getMessage("dataSource.destroy", key)); + try { + ((GenericDataSource)dataSource).close(); + } catch (SQLException e) { + log.error(this.internal.getMessage("destroyDataSource", key), e); + } + } + } + this.dataSources.clear(); + } + } + + protected void destroyInternal() { + this.internal = null; + } + + protected ApplicationConfig getApplicationConfig(HttpServletRequest request) { + return new ApplicationConfig((ModuleConfigImpl)getModuleConfig(request)); + } + + protected ModuleConfig getModuleConfig(HttpServletRequest request) { + ModuleConfig config = (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE"); + if (config == null) + config = (ModuleConfig)getServletContext().getAttribute("org.apache.struts.action.MODULE"); + return config; + } + + protected synchronized RequestProcessor getRequestProcessor(ModuleConfig config) throws ServletException { + String key = "org.apache.struts.action.REQUEST_PROCESSOR" + config.getPrefix(); + RequestProcessor processor = (RequestProcessor)getServletContext().getAttribute(key); + if (processor == null) { + try { + processor = (RequestProcessor)RequestUtils.applicationInstance(config.getControllerConfig().getProcessorClass()); + } catch (Exception e) { + throw new UnavailableException("Cannot initialize RequestProcessor of class " + config.getControllerConfig().getProcessorClass() + ": " + e); + } + processor.init(this, config); + getServletContext().setAttribute(key, processor); + } + return processor; + } + + protected ApplicationConfig initApplicationConfig(String prefix, String path) throws ServletException { + return new ApplicationConfig((ModuleConfigImpl)initModuleConfig(prefix, path)); + } + + protected ModuleConfig initModuleConfig(String prefix, String paths) throws ServletException { + if (log.isDebugEnabled()) + log.debug("Initializing module path '" + prefix + "' configuration from '" + paths + "'"); + ModuleConfigFactory factoryObject = ModuleConfigFactory.createFactory(); + ModuleConfig config = factoryObject.createModuleConfig(prefix); + String mapping = getServletConfig().getInitParameter("mapping"); + if (mapping != null) + config.setActionMappingClass(mapping); + Digester digester = initConfigDigester(); + while (paths.length() > 0) { + digester.push(config); + String path = null; + int comma = paths.indexOf(','); + if (comma >= 0) { + path = paths.substring(0, comma).trim(); + paths = paths.substring(comma + 1); + } else { + path = paths.trim(); + paths = ""; + } + if (path.length() < 1) + break; + parseModuleConfigFile(prefix, paths, config, digester, path); + } + FormBeanConfig[] fbs = config.findFormBeanConfigs(); + for (int i = 0; i < fbs.length; i++) { + if (fbs[i].getDynamic()) + DynaActionFormClass.createDynaActionFormClass(fbs[i]); + } + if (prefix.length() < 1) { + defaultControllerConfig(config); + defaultMessageResourcesConfig(config); + defaultFormBeansConfig(config); + defaultForwardsConfig(config); + defaultMappingsConfig(config); + } + return config; + } + + private void parseModuleConfigFile(String prefix, String paths, ModuleConfig config, Digester digester, String path) throws UnavailableException { + InputStream input = null; + try { + URL url = getServletContext().getResource(path); + InputSource is = new InputSource(url.toExternalForm()); + input = getServletContext().getResourceAsStream(path); + is.setByteStream(input); + digester.parse(is); + getServletContext().setAttribute("org.apache.struts.action.MODULE" + prefix, config); + } catch (MalformedURLException e) { + handleConfigException(paths, e); + } catch (IOException e) { + handleConfigException(paths, e); + } catch (SAXException e) { + handleConfigException(paths, e); + } finally { + if (input != null) + try { + input.close(); + } catch (IOException e) { + throw new UnavailableException(e.getMessage()); + } + } + } + + private void handleConfigException(String paths, Exception e) throws UnavailableException { + log.error(this.internal.getMessage("configParse", paths), e); + throw new UnavailableException(this.internal.getMessage("configParse", paths)); + } + + protected void initApplicationDataSources(ModuleConfig config) throws ServletException { + initModuleDataSources(config); + } + + protected void initModuleDataSources(ModuleConfig config) throws ServletException { + if (log.isDebugEnabled()) + log.debug("Initializing module path '" + config.getPrefix() + "' data sources"); + ServletContextWriter scw = new ServletContextWriter(getServletContext()); + DataSourceConfig[] dscs = config.findDataSourceConfigs(); + if (dscs == null) + dscs = new DataSourceConfig[0]; + this.dataSources.setFast(false); + for (int i = 0; i < dscs.length; i++) { + if (log.isDebugEnabled()) + log.debug("Initializing module path '" + config.getPrefix() + "' data source '" + dscs[i].getKey() + "'"); + DataSource ds = null; + try { + ds = (DataSource)RequestUtils.applicationInstance(dscs[i].getType()); + BeanUtils.populate(ds, dscs[i].getProperties()); + if (ds instanceof GenericDataSource) + ((GenericDataSource)ds).open(); + ds.setLogWriter((PrintWriter)scw); + } catch (Exception e) { + log.error(this.internal.getMessage("dataSource.init", dscs[i].getKey()), e); + throw new UnavailableException(this.internal.getMessage("dataSource.init", dscs[i].getKey())); + } + getServletContext().setAttribute(dscs[i].getKey() + config.getPrefix(), ds); + this.dataSources.put(dscs[i].getKey(), ds); + } + this.dataSources.setFast(true); + if ("".equals(config.getPrefix())) + initDataSources(); + } + + protected void initApplicationPlugIns(ModuleConfig config) throws ServletException { + initModulePlugIns(config); + } + + protected void initModulePlugIns(ModuleConfig config) throws ServletException { + if (log.isDebugEnabled()) + log.debug("Initializing module path '" + config.getPrefix() + "' plug ins"); + PlugInConfig[] plugInConfigs = config.findPlugInConfigs(); + PlugIn[] plugIns = new PlugIn[plugInConfigs.length]; + getServletContext().setAttribute("org.apache.struts.action.PLUG_INS" + config.getPrefix(), plugIns); + for (int i = 0; i < plugIns.length; i++) { + try { + plugIns[i] = (PlugIn)RequestUtils.applicationInstance(plugInConfigs[i].getClassName()); + BeanUtils.populate(plugIns[i], plugInConfigs[i].getProperties()); + try { + PropertyUtils.setProperty(plugIns[i], "currentPlugInConfigObject", plugInConfigs[i]); + } catch (Exception e) {} + plugIns[i].init(this, config); + } catch (ServletException e) { + throw e; + } catch (Exception e) { + String errMsg = this.internal.getMessage("plugIn.init", plugInConfigs[i].getClassName()); + log(errMsg, e); + throw new UnavailableException(errMsg); + } + } + } + + protected void initApplicationMessageResources(ModuleConfig config) throws ServletException { + initModuleMessageResources(config); + } + + protected void initModuleMessageResources(ModuleConfig config) throws ServletException { + MessageResourcesConfig[] mrcs = config.findMessageResourcesConfigs(); + for (int i = 0; i < mrcs.length; i++) { + if (mrcs[i].getFactory() != null && mrcs[i].getParameter() != null) { + if (log.isDebugEnabled()) + log.debug("Initializing module path '" + config.getPrefix() + "' message resources from '" + mrcs[i].getParameter() + "'"); + String factory = mrcs[i].getFactory(); + MessageResourcesFactory.setFactoryClass(factory); + MessageResourcesFactory factoryObject = MessageResourcesFactory.createFactory(); + MessageResources resources = factoryObject.createResources(mrcs[i].getParameter()); + resources.setReturnNull(mrcs[i].getNull()); + getServletContext().setAttribute(mrcs[i].getKey() + config.getPrefix(), resources); + } + } + } + + protected Digester initConfigDigester() throws ServletException { + if (this.configDigester != null) + return this.configDigester; + boolean validating = true; + String value = getServletConfig().getInitParameter("validating"); + if ("false".equalsIgnoreCase(value) || "no".equalsIgnoreCase(value) || "n".equalsIgnoreCase(value) || "0".equalsIgnoreCase(value)) + validating = false; + this.configDigester = new Digester(); + this.configDigester.setNamespaceAware(true); + this.configDigester.setValidating(validating); + this.configDigester.setUseContextClassLoader(true); + this.configDigester.addRuleSet((RuleSet)new ConfigRuleSet()); + for (int i = 0; i < this.registrations.length; i += 2) { + URL url = getClass().getResource(this.registrations[i + 1]); + if (url != null) + this.configDigester.register(this.registrations[i], url.toString()); + } + String rulesets = getServletConfig().getInitParameter("rulesets"); + if (rulesets == null) + rulesets = ""; + rulesets = rulesets.trim(); + String ruleset = null; + while (rulesets.length() > 0) { + int comma = rulesets.indexOf(","); + if (comma < 0) { + ruleset = rulesets.trim(); + rulesets = ""; + } else { + ruleset = rulesets.substring(0, comma).trim(); + rulesets = rulesets.substring(comma + 1).trim(); + } + if (log.isDebugEnabled()) + log.debug("Configuring custom Digester Ruleset of type " + ruleset); + try { + RuleSet instance = (RuleSet)RequestUtils.applicationInstance(ruleset); + this.configDigester.addRuleSet(instance); + } catch (Exception e) { + log.error("Exception configuring custom Digester RuleSet", e); + throw new ServletException(e); + } + } + return this.configDigester; + } + + protected void initDataSources() throws ServletException {} + + protected void initInternal() throws ServletException { + try { + this.internal = MessageResources.getMessageResources(this.internalName); + } catch (MissingResourceException e) { + log.error("Cannot load internal resources from '" + this.internalName + "'", e); + throw new UnavailableException("Cannot load internal resources from '" + this.internalName + "'"); + } + } + + protected void initOther() throws ServletException { + String value = null; + value = getServletConfig().getInitParameter("config"); + if (value != null) + this.config = value; + value = getServletConfig().getInitParameter("debug"); + if (value != null) + try { + this.debug = Integer.parseInt(value); + } catch (NumberFormatException e) { + this.debug = 0; + } + value = getServletConfig().getInitParameter("convertNull"); + if ("true".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value) || "on".equalsIgnoreCase(value) || "y".equalsIgnoreCase(value) || "1".equalsIgnoreCase(value)) + this.convertNull = true; + if (this.convertNull) { + ConvertUtils.deregister(); + ConvertUtils.register((Converter)new BigDecimalConverter(null), BigDecimal.class); + ConvertUtils.register((Converter)new BigIntegerConverter(null), BigInteger.class); + ConvertUtils.register((Converter)new BooleanConverter(null), Boolean.class); + ConvertUtils.register((Converter)new ByteConverter(null), Byte.class); + ConvertUtils.register((Converter)new CharacterConverter(null), Character.class); + ConvertUtils.register((Converter)new DoubleConverter(null), Double.class); + ConvertUtils.register((Converter)new FloatConverter(null), Float.class); + ConvertUtils.register((Converter)new IntegerConverter(null), Integer.class); + ConvertUtils.register((Converter)new LongConverter(null), Long.class); + ConvertUtils.register((Converter)new ShortConverter(null), Short.class); + } + } + + protected void initServlet() throws ServletException { + this.servletName = getServletConfig().getServletName(); + Digester digester = new Digester(); + digester.push(this); + digester.setNamespaceAware(true); + digester.setValidating(false); + for (int i = 0; i < this.registrations.length; i += 2) { + URL url = getClass().getResource(this.registrations[i + 1]); + if (url != null) + digester.register(this.registrations[i], url.toString()); + } + digester.addCallMethod("web-app/servlet-mapping", "addServletMapping", 2); + digester.addCallParam("web-app/servlet-mapping/servlet-name", 0); + digester.addCallParam("web-app/servlet-mapping/url-pattern", 1); + if (log.isDebugEnabled()) + log.debug("Scanning web.xml for controller servlet mapping"); + InputStream input = getServletContext().getResourceAsStream("/WEB-INF/web.xml"); + try { + digester.parse(input); + } catch (IOException e) { + log.error(this.internal.getMessage("configWebXml"), e); + throw new ServletException(e); + } catch (SAXException e) { + log.error(this.internal.getMessage("configWebXml"), e); + throw new ServletException(e); + } finally { + if (input != null) + try { + input.close(); + } catch (IOException e) { + log.error(this.internal.getMessage("configWebXml"), e); + throw new ServletException(e); + } + } + if (log.isDebugEnabled()) + log.debug("Mapping for servlet '" + this.servletName + "' = '" + this.servletMapping + "'"); + if (this.servletMapping != null) + getServletContext().setAttribute("org.apache.struts.action.SERVLET_MAPPING", this.servletMapping); + } + + protected void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + RequestUtils.selectModule(request, getServletContext()); + getRequestProcessor(getModuleConfig(request)).process(request, response); + } + + private void defaultControllerConfig(ModuleConfig config) { + String value = null; + ControllerConfig cc = config.getControllerConfig(); + value = getServletConfig().getInitParameter("bufferSize"); + if (value != null) + cc.setBufferSize(Integer.parseInt(value)); + value = getServletConfig().getInitParameter("content"); + if (value != null) + cc.setContentType(value); + value = getServletConfig().getInitParameter("locale"); + if (value != null) + if ("true".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value)) { + cc.setLocale(true); + } else { + cc.setLocale(false); + } + value = getServletConfig().getInitParameter("maxFileSize"); + if (value != null) + cc.setMaxFileSize(value); + value = getServletConfig().getInitParameter("nocache"); + if (value != null) + if ("true".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value)) { + cc.setNocache(true); + } else { + cc.setNocache(false); + } + value = getServletConfig().getInitParameter("multipartClass"); + if (value != null) + cc.setMultipartClass(value); + value = getServletConfig().getInitParameter("tempDir"); + if (value != null) + cc.setTempDir(value); + } + + private void defaultFormBeansConfig(ModuleConfig config) { + FormBeanConfig[] fbcs = config.findFormBeanConfigs(); + ActionFormBeans afb = new ActionFormBeans(); + afb.setFast(false); + for (int i = 0; i < fbcs.length; i++) + afb.addFormBean((ActionFormBean)fbcs[i]); + afb.setFast(true); + getServletContext().setAttribute("org.apache.struts.action.FORM_BEANS", afb); + } + + private void defaultForwardsConfig(ModuleConfig config) { + ForwardConfig[] fcs = config.findForwardConfigs(); + ActionForwards af = new ActionForwards(); + af.setFast(false); + for (int i = 0; i < fcs.length; i++) + af.addForward((ActionForward)fcs[i]); + af.setFast(true); + getServletContext().setAttribute("org.apache.struts.action.FORWARDS", af); + } + + private void defaultMappingsConfig(ModuleConfig config) { + ActionConfig[] acs = config.findActionConfigs(); + ActionMappings am = new ActionMappings(); + am.setServlet(this); + am.setFast(false); + for (int i = 0; i < acs.length; i++) + am.addMapping((ActionMapping)acs[i]); + am.setFast(true); + getServletContext().setAttribute("org.apache.struts.action.MAPPINGS", am); + } + + private void defaultMessageResourcesConfig(ModuleConfig config) { + String value = null; + MessageResourcesConfig mrc = config.findMessageResourcesConfig("org.apache.struts.action.MESSAGE"); + if (mrc == null) { + mrc = new MessageResourcesConfig(); + mrc.setKey("org.apache.struts.action.MESSAGE"); + config.addMessageResourcesConfig(mrc); + } + value = getServletConfig().getInitParameter("application"); + if (value != null) + mrc.setParameter(value); + value = getServletConfig().getInitParameter("factory"); + if (value != null) + mrc.setFactory(value); + value = getServletConfig().getInitParameter("null"); + if (value != null) + if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes")) { + mrc.setNull(true); + } else { + mrc.setNull(false); + } + } +} diff --git a/hrmsEjb/org/apache/struts/action/ActionServletWrapper.java b/hrmsEjb/org/apache/struts/action/ActionServletWrapper.java new file mode 100644 index 0000000..0a0aa23 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ActionServletWrapper.java @@ -0,0 +1,23 @@ +package org.apache.struts.action; + +import org.apache.struts.upload.MultipartRequestHandler; + +public class ActionServletWrapper { + protected transient ActionServlet servlet = null; + + public void log(String message, int level) { + this.servlet.log(message, level); + } + + public void log(String message) { + this.servlet.log(message); + } + + public void setServletFor(MultipartRequestHandler object) { + object.setServlet(this.servlet); + } + + public ActionServletWrapper(ActionServlet servlet) { + this.servlet = servlet; + } +} diff --git a/hrmsEjb/org/apache/struts/action/DynaActionForm.java b/hrmsEjb/org/apache/struts/action/DynaActionForm.java new file mode 100644 index 0000000..1b86911 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/DynaActionForm.java @@ -0,0 +1,228 @@ +package org.apache.struts.action; + +import java.lang.reflect.Array; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.DynaBean; +import org.apache.commons.beanutils.DynaClass; +import org.apache.commons.beanutils.DynaProperty; +import org.apache.struts.config.FormBeanConfig; +import org.apache.struts.config.FormPropertyConfig; + +public class DynaActionForm extends ActionForm implements DynaBean { + protected DynaActionFormClass dynaClass = null; + + protected HashMap dynaValues = new HashMap(); + + public void initialize(ActionMapping mapping) { + String name = mapping.getName(); + if (name == null) + return; + FormBeanConfig config = mapping.getModuleConfig().findFormBeanConfig(name); + if (config == null) + return; + FormPropertyConfig[] props = config.findFormPropertyConfigs(); + for (int i = 0; i < props.length; i++) + set(props[i].getName(), props[i].initial()); + } + + public void reset(ActionMapping mapping, ServletRequest request) { + try { + reset(mapping, (HttpServletRequest)request); + } catch (ClassCastException e) {} + } + + public void reset(ActionMapping mapping, HttpServletRequest request) {} + + public boolean contains(String name, String key) { + Object value = this.dynaValues.get(name); + if (value == null) + throw new NullPointerException("No mapped value for '" + name + "(" + key + ")'"); + if (value instanceof Map) + return ((Map)value).containsKey(key); + throw new IllegalArgumentException("Non-mapped property for '" + name + "(" + key + ")'"); + } + + public Object get(String name) { + Object value = this.dynaValues.get(name); + if (value != null) + return value; + Class type = getDynaProperty(name).getType(); + if (type == null) + throw new NullPointerException("The type for property " + name + " is invalid"); + if (!type.isPrimitive()) + return value; + if (type == boolean.class) + return Boolean.FALSE; + if (type == byte.class) + return new Byte((byte)0); + if (type == char.class) + return new Character(false); + if (type == double.class) + return new Double(0.0D); + if (type == float.class) + return new Float(0.0F); + if (type == int.class) + return new Integer(0); + if (type == long.class) + return new Long(0L); + if (type == short.class) + return new Short((short)0); + return null; + } + + public Object get(String name, int index) { + Object value = this.dynaValues.get(name); + if (value == null) + throw new NullPointerException("No indexed value for '" + name + "[" + index + "]'"); + if (value.getClass().isArray()) + return Array.get(value, index); + if (value instanceof List) + return ((List)value).get(index); + throw new IllegalArgumentException("Non-indexed property for '" + name + "[" + index + "]'"); + } + + public Object get(String name, String key) { + Object value = this.dynaValues.get(name); + if (value == null) + throw new NullPointerException("No mapped value for '" + name + "(" + key + ")'"); + if (value instanceof Map) + return ((Map)value).get(key); + throw new IllegalArgumentException("Non-mapped property for '" + name + "(" + key + ")'"); + } + + public DynaClass getDynaClass() { + return this.dynaClass; + } + + public Map getMap() { + return this.dynaValues; + } + + public void remove(String name, String key) { + Object value = this.dynaValues.get(name); + if (value == null) + throw new NullPointerException("No mapped value for '" + name + "(" + key + ")'"); + if (value instanceof Map) { + ((Map)value).remove(key); + } else { + throw new IllegalArgumentException("Non-mapped property for '" + name + "(" + key + ")'"); + } + } + + public void set(String name, Object value) { + DynaProperty descriptor = getDynaProperty(name); + if (descriptor.getType() == null) + throw new NullPointerException("The type for property " + name + " is invalid"); + if (value == null) { + if (descriptor.getType().isPrimitive()) + throw new NullPointerException("Primitive value for '" + name + "'"); + } else if (!isDynaAssignable(descriptor.getType(), value.getClass())) { + throw new ConversionException("Cannot assign value of type '" + value.getClass().getName() + "' to property '" + name + "' of type '" + descriptor.getType().getName() + "'"); + } + this.dynaValues.put(name, value); + } + + public void set(String name, int index, Object value) { + Object prop = this.dynaValues.get(name); + if (prop == null) + throw new NullPointerException("No indexed value for '" + name + "[" + index + "]'"); + if (prop.getClass().isArray()) { + Array.set(prop, index, value); + } else if (prop instanceof List) { + try { + ((List)prop).set(index, value); + } catch (ClassCastException e) { + throw new ConversionException(e.getMessage()); + } + } else { + throw new IllegalArgumentException("Non-indexed property for '" + name + "[" + index + "]'"); + } + } + + public void set(String name, String key, Object value) { + Object prop = this.dynaValues.get(name); + if (prop == null) + throw new NullPointerException("No mapped value for '" + name + "(" + key + ")'"); + if (prop instanceof Map) { + ((Map)prop).put(key, value); + } else { + throw new IllegalArgumentException("Non-mapped property for '" + name + "(" + key + ")'"); + } + } + + public String toString() { + StringBuffer sb = new StringBuffer("DynaActionForm[dynaClass="); + sb.append(getDynaClass().getName()); + DynaProperty[] props = getDynaClass().getDynaProperties(); + if (props == null) + props = new DynaProperty[0]; + for (int i = 0; i < props.length; i++) { + sb.append(','); + sb.append(props[i].getName()); + sb.append('='); + Object value = get(props[i].getName()); + if (value == null) { + sb.append(""); + } else if (value.getClass().isArray()) { + int n = Array.getLength(value); + sb.append("{"); + for (int j = 0; j < n; j++) { + if (j > 0) + sb.append(','); + sb.append(Array.get(value, j)); + } + sb.append("}"); + } else if (value instanceof List) { + int n = ((List)value).size(); + sb.append("{"); + for (int j = 0; j < n; j++) { + if (j > 0) + sb.append(','); + sb.append(((List)value).get(j)); + } + sb.append("}"); + } else if (value instanceof Map) { + int n = 0; + Iterator keys = ((Map)value).keySet().iterator(); + sb.append("{"); + while (keys.hasNext()) { + if (n > 0) + sb.append(','); + n++; + String key = keys.next(); + sb.append(key); + sb.append('='); + sb.append(((Map)value).get(key)); + } + sb.append("}"); + } else { + sb.append(value); + } + } + sb.append("]"); + return sb.toString(); + } + + void setDynaActionFormClass(DynaActionFormClass dynaClass) { + this.dynaClass = dynaClass; + } + + protected DynaProperty getDynaProperty(String name) { + DynaProperty descriptor = getDynaClass().getDynaProperty(name); + if (descriptor == null) + throw new IllegalArgumentException("Invalid property name '" + name + "'"); + return descriptor; + } + + protected boolean isDynaAssignable(Class dest, Class source) { + if (dest.isAssignableFrom(source) || (dest == boolean.class && source == Boolean.class) || (dest == byte.class && source == Byte.class) || (dest == char.class && source == Character.class) || (dest == double.class && source == Double.class) || (dest == float.class && source == Float.class) || (dest == int.class && source == Integer.class) || (dest == long.class && source == Long.class) || (dest == short.class && source == Short.class)) + return true; + return false; + } +} diff --git a/hrmsEjb/org/apache/struts/action/DynaActionFormClass.java b/hrmsEjb/org/apache/struts/action/DynaActionFormClass.java new file mode 100644 index 0000000..7729fa3 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/DynaActionFormClass.java @@ -0,0 +1,126 @@ +package org.apache.struts.action; + +import java.io.Serializable; +import java.util.HashMap; +import org.apache.commons.beanutils.DynaBean; +import org.apache.commons.beanutils.DynaClass; +import org.apache.commons.beanutils.DynaProperty; +import org.apache.struts.config.FormBeanConfig; +import org.apache.struts.config.FormPropertyConfig; +import org.apache.struts.config.ModuleConfig; +import org.apache.struts.util.RequestUtils; + +public class DynaActionFormClass implements DynaClass, Serializable { + protected transient Class beanClass; + + protected FormBeanConfig config; + + protected String name; + + protected DynaProperty[] properties; + + protected HashMap propertiesMap; + + private DynaActionFormClass(FormBeanConfig config) { + this.beanClass = null; + this.config = null; + this.name = null; + this.properties = null; + this.propertiesMap = new HashMap(); + introspect(config); + } + + protected static transient HashMap dynaClasses = new HashMap(); + + protected static String lock = ""; + + public String getName() { + return this.name; + } + + public DynaProperty getDynaProperty(String name) { + if (name == null) + throw new IllegalArgumentException("No property name specified"); + return (DynaProperty)this.propertiesMap.get(name); + } + + public DynaProperty[] getDynaProperties() { + return this.properties; + } + + public DynaBean newInstance() throws IllegalAccessException, InstantiationException { + DynaActionForm dynaBean = getBeanClass().newInstance(); + dynaBean.setDynaActionFormClass(this); + FormPropertyConfig[] props = this.config.findFormPropertyConfigs(); + for (int i = 0; i < props.length; i++) + dynaBean.set(props[i].getName(), props[i].initial()); + return dynaBean; + } + + public String toString() { + StringBuffer sb = new StringBuffer("DynaActionFormBean[name="); + sb.append(this.name); + DynaProperty[] props = getDynaProperties(); + if (props == null) + props = new DynaProperty[0]; + for (int i = 0; i < props.length; i++) { + sb.append(','); + sb.append(props[i].getName()); + sb.append('/'); + sb.append(props[i].getType()); + } + sb.append("]"); + return sb.toString(); + } + + public static void clear() { + synchronized (lock) { + if (dynaClasses == null) + dynaClasses = new HashMap(); + dynaClasses.clear(); + } + } + + public static DynaActionFormClass createDynaActionFormClass(FormBeanConfig config) { + synchronized (lock) { + if (dynaClasses == null) + dynaClasses = new HashMap(); + ModuleConfig moduleConfig = config.getModuleConfig(); + String key = config.getName(); + if (moduleConfig != null) + key = key + moduleConfig.getPrefix(); + DynaActionFormClass dynaClass = (DynaActionFormClass)dynaClasses.get(key); + if (dynaClass == null) { + dynaClass = new DynaActionFormClass(config); + dynaClasses.put(key, dynaClass); + } + return dynaClass; + } + } + + protected Class getBeanClass() { + if (this.beanClass == null) + introspect(this.config); + return this.beanClass; + } + + protected void introspect(FormBeanConfig config) { + this.config = config; + try { + this.beanClass = RequestUtils.applicationClass(config.getType()); + } catch (Throwable t) { + throw new IllegalArgumentException("Cannot instantiate ActionFormBean class '" + config.getType() + "': " + t); + } + if (!DynaActionForm.class.isAssignableFrom(this.beanClass)) + throw new IllegalArgumentException("Class '" + config.getType() + "' is not a subclass of " + "'org.apache.struts.action.DynaActionForm'"); + this.name = config.getName(); + FormPropertyConfig[] descriptors = config.findFormPropertyConfigs(); + if (descriptors == null) + descriptors = new FormPropertyConfig[0]; + this.properties = new DynaProperty[descriptors.length]; + for (int i = 0; i < descriptors.length; i++) { + this.properties[i] = new DynaProperty(descriptors[i].getName(), descriptors[i].getTypeClass()); + this.propertiesMap.put(this.properties[i].getName(), this.properties[i]); + } + } +} diff --git a/hrmsEjb/org/apache/struts/action/ExceptionHandler.java b/hrmsEjb/org/apache/struts/action/ExceptionHandler.java new file mode 100644 index 0000000..1c45f43 --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/ExceptionHandler.java @@ -0,0 +1,40 @@ +package org.apache.struts.action; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.struts.config.ExceptionConfig; +import org.apache.struts.util.ModuleException; + +public class ExceptionHandler { + public ActionForward execute(Exception ex, ExceptionConfig ae, ActionMapping mapping, ActionForm formInstance, HttpServletRequest request, HttpServletResponse response) throws ServletException { + ActionForward forward = null; + ActionError error = null; + String property = null; + if (ae.getPath() != null) { + forward = new ActionForward(ae.getPath()); + } else { + forward = mapping.getInputForward(); + } + if (ex instanceof ModuleException) { + error = ((ModuleException)ex).getError(); + property = ((ModuleException)ex).getProperty(); + } else { + error = new ActionError(ae.getKey(), ex.getMessage()); + property = error.getKey(); + } + request.setAttribute("org.apache.struts.action.EXCEPTION", ex); + storeException(request, property, error, forward, ae.getScope()); + return forward; + } + + protected void storeException(HttpServletRequest request, String property, ActionError error, ActionForward forward, String scope) { + ActionErrors errors = new ActionErrors(); + errors.add(property, error); + if ("request".equals(scope)) { + request.setAttribute("org.apache.struts.action.ERROR", errors); + } else { + request.getSession().setAttribute("org.apache.struts.action.ERROR", errors); + } + } +} diff --git a/hrmsEjb/org/apache/struts/action/PlugIn.java b/hrmsEjb/org/apache/struts/action/PlugIn.java new file mode 100644 index 0000000..cd92a3b --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/PlugIn.java @@ -0,0 +1,10 @@ +package org.apache.struts.action; + +import javax.servlet.ServletException; +import org.apache.struts.config.ModuleConfig; + +public interface PlugIn { + void destroy(); + + void init(ActionServlet paramActionServlet, ModuleConfig paramModuleConfig) throws ServletException; +} diff --git a/hrmsEjb/org/apache/struts/action/RequestProcessor.java b/hrmsEjb/org/apache/struts/action/RequestProcessor.java new file mode 100644 index 0000000..8882b2c --- /dev/null +++ b/hrmsEjb/org/apache/struts/action/RequestProcessor.java @@ -0,0 +1,414 @@ +package org.apache.struts.action; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; +import javax.servlet.RequestDispatcher; +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 org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts.config.ActionConfig; +import org.apache.struts.config.ExceptionConfig; +import org.apache.struts.config.ForwardConfig; +import org.apache.struts.config.ModuleConfig; +import org.apache.struts.upload.MultipartRequestWrapper; +import org.apache.struts.util.MessageResources; +import org.apache.struts.util.RequestUtils; + +public class RequestProcessor { + public static final String INCLUDE_PATH_INFO = "javax.servlet.include.path_info"; + + public static final String INCLUDE_SERVLET_PATH = "javax.servlet.include.servlet_path"; + + protected HashMap actions = new HashMap(); + + protected ModuleConfig appConfig = null; + + protected ModuleConfig moduleConfig = null; + + protected static Log log = LogFactory.getLog(RequestProcessor.class); + + protected ActionServlet servlet = null; + + public void destroy() { + synchronized (this.actions) { + Iterator actions = this.actions.values().iterator(); + while (actions.hasNext()) { + Action action = actions.next(); + action.setServlet(null); + } + this.actions.clear(); + } + this.servlet = null; + } + + public void init(ActionServlet servlet, ModuleConfig moduleConfig) throws ServletException { + synchronized (this.actions) { + this.actions.clear(); + } + this.servlet = servlet; + this.appConfig = moduleConfig; + this.moduleConfig = moduleConfig; + } + + public void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request = processMultipart(request); + String path = processPath(request, response); + if (path == null) + return; + if (log.isDebugEnabled()) + log.debug("Processing a '" + request.getMethod() + "' for path '" + path + "'"); + processLocale(request, response); + processContent(request, response); + processNoCache(request, response); + if (!processPreprocess(request, response)) + return; + ActionMapping mapping = processMapping(request, response, path); + if (mapping == null) + return; + if (!processRoles(request, response, mapping)) + return; + ActionForm form = processActionForm(request, response, mapping); + processPopulate(request, response, form, mapping); + if (!processValidate(request, response, form, mapping)) + return; + if (!processForward(request, response, mapping)) + return; + if (!processInclude(request, response, mapping)) + return; + Action action = processActionCreate(request, response, mapping); + if (action == null) + return; + ActionForward forward = processActionPerform(request, response, action, form, mapping); + processForwardConfig(request, response, forward); + } + + protected Action processActionCreate(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) throws IOException { + String className = mapping.getType(); + if (log.isDebugEnabled()) + log.debug(" Looking for Action instance for class " + className); + Action instance = null; + synchronized (this.actions) { + instance = (Action)this.actions.get(className); + if (instance != null) { + if (log.isTraceEnabled()) + log.trace(" Returning existing Action instance"); + return instance; + } + if (log.isTraceEnabled()) + log.trace(" Creating new Action instance"); + try { + instance = (Action)RequestUtils.applicationInstance(className); + } catch (Exception e) { + log.error(getInternal().getMessage("actionCreate", mapping.getPath()), e); + response.sendError(500, getInternal().getMessage("actionCreate", mapping.getPath())); + return null; + } + instance.setServlet(this.servlet); + this.actions.put(className, instance); + } + return instance; + } + + protected ActionForm processActionForm(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) { + ActionForm instance = RequestUtils.createActionForm(request, mapping, this.moduleConfig, this.servlet); + if (instance == null) + return null; + if (log.isDebugEnabled()) + log.debug(" Storing ActionForm bean instance in scope '" + mapping.getScope() + "' under attribute key '" + mapping.getAttribute() + "'"); + if ("request".equals(mapping.getScope())) { + request.setAttribute(mapping.getAttribute(), instance); + } else { + HttpSession session = request.getSession(); + session.setAttribute(mapping.getAttribute(), instance); + } + return instance; + } + + protected void processActionForward(HttpServletRequest request, HttpServletResponse response, ActionForward forward) throws IOException, ServletException { + processForwardConfig(request, response, forward); + } + + protected void processForwardConfig(HttpServletRequest request, HttpServletResponse response, ForwardConfig forward) throws IOException, ServletException { + if (forward == null) + return; + if (log.isDebugEnabled()) + log.debug("processForwardConfig(" + forward + ")"); + String forwardPath = forward.getPath(); + String uri = null; + if (forwardPath.startsWith("/")) { + uri = RequestUtils.forwardURL(request, forward); + } else { + uri = forwardPath; + } + if (forward.getRedirect()) { + if (uri.startsWith("/")) + uri = request.getContextPath() + uri; + response.sendRedirect(response.encodeRedirectURL(uri)); + } else { + doForward(uri, request, response); + } + } + + protected ActionForward processActionPerform(HttpServletRequest request, HttpServletResponse response, Action action, ActionForm form, ActionMapping mapping) throws IOException, ServletException { + try { + return action.execute(mapping, form, request, response); + } catch (Exception e) { + return processException(request, response, e, form, mapping); + } + } + + protected void processContent(HttpServletRequest request, HttpServletResponse response) { + String contentType = this.moduleConfig.getControllerConfig().getContentType(); + if (contentType != null) + response.setContentType(contentType); + } + + protected ActionForward processException(HttpServletRequest request, HttpServletResponse response, Exception exception, ActionForm form, ActionMapping mapping) throws IOException, ServletException { + ExceptionConfig config = mapping.findException(exception.getClass()); + if (config == null) { + log.warn(getInternal().getMessage("unhandledException", exception.getClass())); + if (exception instanceof IOException) + throw (IOException)exception; + if (exception instanceof ServletException) + throw (ServletException)exception; + throw new ServletException(exception); + } + try { + ExceptionHandler handler = (ExceptionHandler)RequestUtils.applicationInstance(config.getHandler()); + return handler.execute(exception, config, mapping, form, request, response); + } catch (Exception e) { + throw new ServletException(e); + } + } + + protected boolean processForward(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) throws IOException, ServletException { + String forward = mapping.getForward(); + if (forward == null) + return true; + internalModuleRelativeForward(forward, request, response); + return false; + } + + protected boolean processInclude(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) throws IOException, ServletException { + String include = mapping.getInclude(); + if (include == null) + return true; + internalModuleRelativeInclude(include, request, response); + return false; + } + + protected void processLocale(HttpServletRequest request, HttpServletResponse response) { + if (!this.moduleConfig.getControllerConfig().getLocale()) + return; + HttpSession session = request.getSession(); + if (session.getAttribute("org.apache.struts.action.LOCALE") != null) + return; + Locale locale = request.getLocale(); + if (locale != null) { + if (log.isDebugEnabled()) + log.debug(" Setting user locale '" + locale + "'"); + session.setAttribute("org.apache.struts.action.LOCALE", locale); + } + } + + protected ActionMapping processMapping(HttpServletRequest request, HttpServletResponse response, String path) throws IOException { + ActionMapping mapping = (ActionMapping)this.moduleConfig.findActionConfig(path); + if (mapping != null) { + request.setAttribute("org.apache.struts.action.mapping.instance", mapping); + return mapping; + } + ActionConfig[] configs = this.moduleConfig.findActionConfigs(); + for (int i = 0; i < configs.length; i++) { + if (configs[i].getUnknown()) { + mapping = (ActionMapping)configs[i]; + request.setAttribute("org.apache.struts.action.mapping.instance", mapping); + return mapping; + } + } + log.error(getInternal().getMessage("processInvalid", path)); + response.sendError(400, getInternal().getMessage("processInvalid", path)); + return null; + } + + protected HttpServletRequest processMultipart(HttpServletRequest request) { + if (!"POST".equalsIgnoreCase(request.getMethod())) + return request; + String contentType = request.getContentType(); + if (contentType != null && contentType.startsWith("multipart/form-data")) + return (HttpServletRequest)new MultipartRequestWrapper(request); + return request; + } + + protected void processNoCache(HttpServletRequest request, HttpServletResponse response) { + if (this.moduleConfig.getControllerConfig().getNocache()) { + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.setDateHeader("Expires", 1L); + } + } + + protected String processPath(HttpServletRequest request, HttpServletResponse response) throws IOException { + String path = null; + path = (String)request.getAttribute("javax.servlet.include.path_info"); + if (path == null) + path = request.getPathInfo(); + if (path != null && path.length() > 0) + return path; + path = (String)request.getAttribute("javax.servlet.include.servlet_path"); + if (path == null) + path = request.getServletPath(); + String prefix = this.moduleConfig.getPrefix(); + if (!path.startsWith(prefix)) { + log.error(getInternal().getMessage("processPath", request.getRequestURI())); + response.sendError(400, getInternal().getMessage("processPath", request.getRequestURI())); + return null; + } + path = path.substring(prefix.length()); + int slash = path.lastIndexOf("/"); + int period = path.lastIndexOf("."); + if (period >= 0 && period > slash) + path = path.substring(0, period); + return path; + } + + protected void processPopulate(HttpServletRequest request, HttpServletResponse response, ActionForm form, ActionMapping mapping) throws ServletException { + if (form == null) + return; + if (log.isDebugEnabled()) + log.debug(" Populating bean properties from this request"); + form.setServlet(this.servlet); + form.reset(mapping, request); + if (mapping.getMultipartClass() != null) + request.setAttribute("org.apache.struts.action.mapping.multipartclass", mapping.getMultipartClass()); + RequestUtils.populate(form, mapping.getPrefix(), mapping.getSuffix(), request); + if (request.getParameter("org.apache.struts.taglib.html.CANCEL") != null || request.getParameter("org.apache.struts.taglib.html.CANCEL.x") != null) + request.setAttribute("org.apache.struts.action.CANCEL", Boolean.TRUE); + } + + protected boolean processPreprocess(HttpServletRequest request, HttpServletResponse response) { + return true; + } + + protected boolean processRoles(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) throws IOException, ServletException { + String[] roles = mapping.getRoleNames(); + if (roles == null || roles.length < 1) + return true; + for (int i = 0; i < roles.length; i++) { + if (request.isUserInRole(roles[i])) { + if (log.isDebugEnabled()) + log.debug(" User '" + request.getRemoteUser() + "' has role '" + roles[i] + "', granting access"); + return true; + } + } + if (log.isDebugEnabled()) + log.debug(" User '" + request.getRemoteUser() + "' does not have any required role, denying access"); + response.sendError(400, getInternal().getMessage("notAuthorized", mapping.getPath())); + return false; + } + + protected boolean processValidate(HttpServletRequest request, HttpServletResponse response, ActionForm form, ActionMapping mapping) throws IOException, ServletException { + if (form == null) + return true; + if (request.getAttribute("org.apache.struts.action.CANCEL") != null) { + if (log.isDebugEnabled()) + log.debug(" Cancelled transaction, skipping validation"); + return true; + } + if (!mapping.getValidate()) + return true; + if (log.isDebugEnabled()) + log.debug(" Validating input form properties"); + ActionErrors errors = form.validate(mapping, request); + if (errors == null || errors.isEmpty()) { + if (log.isTraceEnabled()) + log.trace(" No errors detected, accepting input"); + return true; + } + if (form.getMultipartRequestHandler() != null) { + if (log.isTraceEnabled()) + log.trace(" Rolling back multipart request"); + form.getMultipartRequestHandler().rollback(); + } + String input = mapping.getInput(); + if (input == null) { + if (log.isTraceEnabled()) + log.trace(" Validation failed but no input form available"); + response.sendError(500, getInternal().getMessage("noInput", mapping.getPath())); + return false; + } + if (log.isDebugEnabled()) + log.debug(" Validation failed, returning to '" + input + "'"); + request.setAttribute("org.apache.struts.action.ERROR", errors); + if (this.moduleConfig.getControllerConfig().getInputForward()) { + ForwardConfig forward = mapping.findForward(input); + processForwardConfig(request, response, forward); + } else { + internalModuleRelativeForward(input, request, response); + } + return false; + } + + protected void internalModuleRelativeForward(String uri, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + uri = this.moduleConfig.getPrefix() + uri; + if (log.isDebugEnabled()) + log.debug(" Delegating via forward to '" + uri + "'"); + doForward(uri, request, response); + } + + protected void internalModuleRelativeInclude(String uri, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + uri = this.moduleConfig.getPrefix() + uri; + if (log.isDebugEnabled()) + log.debug(" Delegating via include to '" + uri + "'"); + doInclude(uri, request, response); + } + + protected void doForward(String uri, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + if (request instanceof MultipartRequestWrapper) + request = ((MultipartRequestWrapper)request).getRequest(); + RequestDispatcher rd = getServletContext().getRequestDispatcher(uri); + if (rd == null) { + response.sendError(500, getInternal().getMessage("requestDispatcher", uri)); + return; + } + rd.forward((ServletRequest)request, (ServletResponse)response); + } + + protected void doInclude(String uri, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + if (request instanceof MultipartRequestWrapper) + request = ((MultipartRequestWrapper)request).getRequest(); + RequestDispatcher rd = getServletContext().getRequestDispatcher(uri); + if (rd == null) { + response.sendError(500, getInternal().getMessage("requestDispatcher", uri)); + return; + } + rd.include((ServletRequest)request, (ServletResponse)response); + } + + public int getDebug() { + return this.servlet.getDebug(); + } + + protected MessageResources getInternal() { + return this.servlet.getInternal(); + } + + protected ServletContext getServletContext() { + return this.servlet.getServletContext(); + } + + protected void log(String message) { + this.servlet.log(message); + } + + protected void log(String message, Throwable exception) { + this.servlet.log(message, exception); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ActionConfig.java b/hrmsEjb/org/apache/struts/config/ActionConfig.java new file mode 100644 index 0000000..34bc78c --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ActionConfig.java @@ -0,0 +1,344 @@ +package org.apache.struts.config; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; + +public class ActionConfig implements Serializable { + protected boolean configured = false; + + protected HashMap exceptions = new HashMap(); + + protected HashMap forwards = new HashMap(); + + protected ModuleConfig moduleConfig = null; + + public ModuleConfig getApplicationConfig() { + return getModuleConfig(); + } + + public ModuleConfig getModuleConfig() { + return this.moduleConfig; + } + + public void setApplicationConfig(ModuleConfig moduleConfig) { + setModuleConfig(moduleConfig); + } + + public void setModuleConfig(ModuleConfig moduleConfig) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.moduleConfig = moduleConfig; + } + + protected String attribute = null; + + public String getAttribute() { + if (this.attribute == null) + return this.name; + return this.attribute; + } + + public void setAttribute(String attribute) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.attribute = attribute; + } + + protected String forward = null; + + public String getForward() { + return this.forward; + } + + public void setForward(String forward) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.forward = forward; + } + + protected String include = null; + + public String getInclude() { + return this.include; + } + + public void setInclude(String include) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.include = include; + } + + protected String input = null; + + public String getInput() { + return this.input; + } + + public void setInput(String input) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.input = input; + } + + protected String multipartClass = null; + + public String getMultipartClass() { + return this.multipartClass; + } + + public void setMultipartClass(String multipartClass) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.multipartClass = multipartClass; + } + + protected String name = null; + + public String getName() { + return this.name; + } + + public void setName(String name) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.name = name; + } + + protected String parameter = null; + + public String getParameter() { + return this.parameter; + } + + public void setParameter(String parameter) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.parameter = parameter; + } + + protected String path = null; + + public String getPath() { + return this.path; + } + + public void setPath(String path) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.path = path; + } + + protected String prefix = null; + + public String getPrefix() { + return this.prefix; + } + + public void setPrefix(String prefix) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.prefix = prefix; + } + + protected String roles = null; + + public String getRoles() { + return this.roles; + } + + public void setRoles(String roles) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.roles = roles; + if (roles == null) { + this.roleNames = new String[0]; + return; + } + ArrayList list = new ArrayList(); + while (true) { + int comma = roles.indexOf(','); + if (comma < 0) + break; + list.add(roles.substring(0, comma).trim()); + roles = roles.substring(comma + 1); + } + roles = roles.trim(); + if (roles.length() > 0) + list.add(roles); + this.roleNames = list.toArray(new String[list.size()]); + } + + protected String[] roleNames = new String[0]; + + public String[] getRoleNames() { + return this.roleNames; + } + + protected String scope = "session"; + + public String getScope() { + return this.scope; + } + + public void setScope(String scope) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.scope = scope; + } + + protected String suffix = null; + + public String getSuffix() { + return this.suffix; + } + + public void setSuffix(String suffix) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.suffix = suffix; + } + + protected String type = null; + + public String getType() { + return this.type; + } + + public void setType(String type) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.type = type; + } + + protected boolean unknown = false; + + public boolean getUnknown() { + return this.unknown; + } + + public void setUnknown(boolean unknown) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.unknown = unknown; + } + + protected boolean validate = true; + + public boolean getValidate() { + return this.validate; + } + + public void setValidate(boolean validate) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.validate = validate; + } + + public void addExceptionConfig(ExceptionConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.exceptions.put(config.getType(), config); + } + + public void addForwardConfig(ForwardConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.forwards.put(config.getName(), config); + } + + public ExceptionConfig findExceptionConfig(String type) { + return (ExceptionConfig)this.exceptions.get(type); + } + + public ExceptionConfig[] findExceptionConfigs() { + ExceptionConfig[] results = new ExceptionConfig[this.exceptions.size()]; + return (ExceptionConfig[])this.exceptions.values().toArray((Object[])results); + } + + public ForwardConfig findForwardConfig(String name) { + return (ForwardConfig)this.forwards.get(name); + } + + public ForwardConfig[] findForwardConfigs() { + ForwardConfig[] results = new ForwardConfig[this.forwards.size()]; + return (ForwardConfig[])this.forwards.values().toArray((Object[])results); + } + + public void freeze() { + this.configured = true; + ExceptionConfig[] econfigs = findExceptionConfigs(); + for (int i = 0; i < econfigs.length; i++) + econfigs[i].freeze(); + ForwardConfig[] fconfigs = findForwardConfigs(); + for (int j = 0; j < fconfigs.length; j++) + fconfigs[j].freeze(); + } + + public void removeExceptionConfig(ExceptionConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.exceptions.remove(config.getType()); + } + + public void removeForwardConfig(ForwardConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.forwards.remove(config.getName()); + } + + public String toString() { + StringBuffer sb = new StringBuffer("ActionConfig["); + sb.append("path="); + sb.append(this.path); + if (this.attribute != null) { + sb.append(",attribute="); + sb.append(this.attribute); + } + if (this.forward != null) { + sb.append(",forward="); + sb.append(this.forward); + } + if (this.include != null) { + sb.append(",include="); + sb.append(this.include); + } + if (this.input != null) { + sb.append(",input="); + sb.append(this.input); + } + if (this.multipartClass != null) { + sb.append(",multipartClass="); + sb.append(this.multipartClass); + } + if (this.name != null) { + sb.append(",name="); + sb.append(this.name); + } + if (this.parameter != null) { + sb.append(",parameter="); + sb.append(this.parameter); + } + if (this.prefix != null) { + sb.append(",prefix="); + sb.append(this.prefix); + } + if (this.roles != null) { + sb.append(",roles="); + sb.append(this.roles); + } + if (this.scope != null) { + sb.append(",scope="); + sb.append(this.scope); + } + if (this.suffix != null) { + sb.append(",suffix="); + sb.append(this.suffix); + } + if (this.type != null) { + sb.append(",type="); + sb.append(this.type); + } + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ActionMappingFactory.java b/hrmsEjb/org/apache/struts/config/ActionMappingFactory.java new file mode 100644 index 0000000..b3d0697 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ActionMappingFactory.java @@ -0,0 +1,22 @@ +package org.apache.struts.config; + +import org.apache.commons.digester.AbstractObjectCreationFactory; +import org.apache.struts.util.RequestUtils; +import org.xml.sax.Attributes; + +final class ActionMappingFactory extends AbstractObjectCreationFactory { + public Object createObject(Attributes attributes) { + String className = attributes.getValue("className"); + if (className == null) { + ModuleConfig mc = (ModuleConfig)this.digester.peek(); + className = mc.getActionMappingClass(); + } + Object actionMapping = null; + try { + actionMapping = RequestUtils.applicationInstance(className); + } catch (Exception e) { + this.digester.getLogger().error("ActionMappingFactory.createObject: ", e); + } + return actionMapping; + } +} diff --git a/hrmsEjb/org/apache/struts/config/AddDataSourcePropertyRule.java b/hrmsEjb/org/apache/struts/config/AddDataSourcePropertyRule.java new file mode 100644 index 0000000..ff7ce0b --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/AddDataSourcePropertyRule.java @@ -0,0 +1,11 @@ +package org.apache.struts.config; + +import org.apache.commons.digester.Rule; +import org.xml.sax.Attributes; + +final class AddDataSourcePropertyRule extends Rule { + public void begin(Attributes attributes) throws Exception { + DataSourceConfig dsc = (DataSourceConfig)this.digester.peek(); + dsc.addProperty(attributes.getValue("property"), attributes.getValue("value")); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ApplicationConfig.java b/hrmsEjb/org/apache/struts/config/ApplicationConfig.java new file mode 100644 index 0000000..b0c8800 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ApplicationConfig.java @@ -0,0 +1,14 @@ +package org.apache.struts.config; + +import org.apache.struts.config.impl.ModuleConfigImpl; + +public class ApplicationConfig extends ModuleConfigImpl { + public ApplicationConfig(String prefix) { + super(prefix); + this.prefix = prefix; + } + + public ApplicationConfig(ModuleConfigImpl moduleConfig) { + super(moduleConfig); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ConfigRuleSet.java b/hrmsEjb/org/apache/struts/config/ConfigRuleSet.java new file mode 100644 index 0000000..95908c8 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ConfigRuleSet.java @@ -0,0 +1,55 @@ +package org.apache.struts.config; + +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.ObjectCreationFactory; +import org.apache.commons.digester.RuleSetBase; + +public class ConfigRuleSet extends RuleSetBase { + public void addRuleInstances(Digester digester) { + digester.addObjectCreate("struts-config/data-sources/data-source", "org.apache.struts.config.DataSourceConfig", "className"); + digester.addSetProperties("struts-config/data-sources/data-source"); + digester.addSetNext("struts-config/data-sources/data-source", "addDataSourceConfig", "org.apache.struts.config.DataSourceConfig"); + digester.addRule("struts-config/data-sources/data-source/set-property", new AddDataSourcePropertyRule()); + digester.addRule("struts-config/action-mappings", new SetActionMappingClassRule()); + digester.addFactoryCreate("struts-config/action-mappings/action", (ObjectCreationFactory)new ActionMappingFactory()); + digester.addSetProperties("struts-config/action-mappings/action"); + digester.addSetNext("struts-config/action-mappings/action", "addActionConfig", "org.apache.struts.config.ActionConfig"); + digester.addSetProperty("struts-config/action-mappings/action/set-property", "property", "value"); + digester.addObjectCreate("struts-config/action-mappings/action/exception", "org.apache.struts.config.ExceptionConfig", "className"); + digester.addSetProperties("struts-config/action-mappings/action/exception"); + digester.addSetNext("struts-config/action-mappings/action/exception", "addExceptionConfig", "org.apache.struts.config.ExceptionConfig"); + digester.addSetProperty("struts-config/action-mappings/action/exception/set-property", "property", "value"); + digester.addObjectCreate("struts-config/action-mappings/action/forward", "org.apache.struts.action.ActionForward", "className"); + digester.addSetProperties("struts-config/action-mappings/action/forward"); + digester.addSetNext("struts-config/action-mappings/action/forward", "addForwardConfig", "org.apache.struts.config.ForwardConfig"); + digester.addSetProperty("struts-config/action-mappings/action/forward/set-property", "property", "value"); + digester.addObjectCreate("struts-config/controller", "org.apache.struts.config.ControllerConfig", "className"); + digester.addSetProperties("struts-config/controller"); + digester.addSetNext("struts-config/controller", "setControllerConfig", "org.apache.struts.config.ControllerConfig"); + digester.addSetProperty("struts-config/controller/set-property", "property", "value"); + digester.addObjectCreate("struts-config/form-beans/form-bean", "org.apache.struts.action.ActionFormBean", "className"); + digester.addSetProperties("struts-config/form-beans/form-bean"); + digester.addSetNext("struts-config/form-beans/form-bean", "addFormBeanConfig", "org.apache.struts.config.FormBeanConfig"); + digester.addObjectCreate("struts-config/form-beans/form-bean/form-property", "org.apache.struts.config.FormPropertyConfig", "className"); + digester.addSetProperties("struts-config/form-beans/form-bean/form-property"); + digester.addSetNext("struts-config/form-beans/form-bean/form-property", "addFormPropertyConfig", "org.apache.struts.config.FormPropertyConfig"); + digester.addSetProperty("struts-config/form-beans/form-bean/form-property/set-property", "property", "value"); + digester.addSetProperty("struts-config/form-beans/form-bean/set-property", "property", "value"); + digester.addObjectCreate("struts-config/global-exceptions/exception", "org.apache.struts.config.ExceptionConfig", "className"); + digester.addSetProperties("struts-config/global-exceptions/exception"); + digester.addSetNext("struts-config/global-exceptions/exception", "addExceptionConfig", "org.apache.struts.config.ExceptionConfig"); + digester.addSetProperty("struts-config/global-exceptions/exception/set-property", "property", "value"); + digester.addObjectCreate("struts-config/global-forwards/forward", "org.apache.struts.action.ActionForward", "className"); + digester.addSetProperties("struts-config/global-forwards/forward"); + digester.addSetNext("struts-config/global-forwards/forward", "addForwardConfig", "org.apache.struts.config.ForwardConfig"); + digester.addSetProperty("struts-config/global-forwards/forward/set-property", "property", "value"); + digester.addObjectCreate("struts-config/message-resources", "org.apache.struts.config.MessageResourcesConfig", "className"); + digester.addSetProperties("struts-config/message-resources"); + digester.addSetNext("struts-config/message-resources", "addMessageResourcesConfig", "org.apache.struts.config.MessageResourcesConfig"); + digester.addSetProperty("struts-config/message-resources/set-property", "property", "value"); + digester.addObjectCreate("struts-config/plug-in", "org.apache.struts.config.PlugInConfig"); + digester.addSetProperties("struts-config/plug-in"); + digester.addSetNext("struts-config/plug-in", "addPlugInConfig", "org.apache.struts.config.PlugInConfig"); + digester.addRule("struts-config/plug-in/set-property", new PlugInSetPropertyRule()); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ControllerConfig.java b/hrmsEjb/org/apache/struts/config/ControllerConfig.java new file mode 100644 index 0000000..afada9c --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ControllerConfig.java @@ -0,0 +1,203 @@ +package org.apache.struts.config; + +import java.io.Serializable; + +public class ControllerConfig implements Serializable { + protected boolean configured = false; + + protected int bufferSize = 4096; + + public int getBufferSize() { + return this.bufferSize; + } + + public void setBufferSize(int bufferSize) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.bufferSize = bufferSize; + } + + protected String contentType = "text/html"; + + public String getContentType() { + return this.contentType; + } + + public void setContentType(String contentType) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.contentType = contentType; + } + + protected int debug = 0; + + public int getDebug() { + return this.debug; + } + + public void setDebug(int debug) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.debug = debug; + } + + protected String forwardPattern = null; + + public String getForwardPattern() { + return this.forwardPattern; + } + + public void setForwardPattern(String forwardPattern) { + this.forwardPattern = forwardPattern; + } + + protected boolean inputForward = false; + + public boolean getInputForward() { + return this.inputForward; + } + + public void setInputForward(boolean inputForward) { + this.inputForward = inputForward; + } + + protected boolean locale = true; + + public boolean getLocale() { + return this.locale; + } + + public void setLocale(boolean locale) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.locale = locale; + } + + protected String maxFileSize = "250M"; + + public String getMaxFileSize() { + return this.maxFileSize; + } + + public void setMaxFileSize(String maxFileSize) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.maxFileSize = maxFileSize; + } + + protected String memFileSize = "256K"; + + public String getMemFileSize() { + return this.memFileSize; + } + + public void setMemFileSize(String memFileSize) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.memFileSize = memFileSize; + } + + protected String multipartClass = "org.apache.struts.upload.CommonsMultipartRequestHandler"; + + public String getMultipartClass() { + return this.multipartClass; + } + + public void setMultipartClass(String multipartClass) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.multipartClass = multipartClass; + } + + protected boolean nocache = false; + + public boolean getNocache() { + return this.nocache; + } + + public void setNocache(boolean nocache) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.nocache = nocache; + } + + protected String pagePattern = null; + + public String getPagePattern() { + return this.pagePattern; + } + + public void setPagePattern(String pagePattern) { + this.pagePattern = pagePattern; + } + + protected String processorClass = "org.apache.struts.action.RequestProcessor"; + + public String getProcessorClass() { + return this.processorClass; + } + + public void setProcessorClass(String processorClass) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.processorClass = processorClass; + } + + protected String tempDir = null; + + public String getTempDir() { + return this.tempDir; + } + + public void setTempDir(String tempDir) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.tempDir = tempDir; + } + + public void freeze() { + this.configured = true; + } + + public String toString() { + StringBuffer sb = new StringBuffer("ControllerConfig["); + sb.append("bufferSize="); + sb.append(this.bufferSize); + if (this.contentType != null) { + sb.append(",contentType="); + sb.append(this.contentType); + } + if (this.forwardPattern != null) { + sb.append(",forwardPattern="); + sb.append(this.forwardPattern); + } + sb.append(",inputForward="); + sb.append(this.inputForward); + sb.append(",locale="); + sb.append(this.locale); + if (this.maxFileSize != null) { + sb.append(",maxFileSize="); + sb.append(this.maxFileSize); + } + if (this.memFileSize != null) { + sb.append(",memFileSize="); + sb.append(this.memFileSize); + } + sb.append(",multipartClass="); + sb.append(this.multipartClass); + sb.append(",nocache="); + sb.append(this.nocache); + if (this.pagePattern != null) { + sb.append(",pagePattern="); + sb.append(this.pagePattern); + } + sb.append(",processorClass="); + sb.append(this.processorClass); + if (this.tempDir != null) { + sb.append(",tempDir="); + sb.append(this.tempDir); + } + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/struts/config/DataSourceConfig.java b/hrmsEjb/org/apache/struts/config/DataSourceConfig.java new file mode 100644 index 0000000..51a216b --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/DataSourceConfig.java @@ -0,0 +1,69 @@ +package org.apache.struts.config; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public class DataSourceConfig implements Serializable { + protected boolean configured = false; + + protected String key = "org.apache.struts.action.DATA_SOURCE"; + + public String getKey() { + return this.key; + } + + public void setKey(String key) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.key = key; + } + + protected HashMap properties = new HashMap(); + + public Map getProperties() { + return this.properties; + } + + protected String type = "org.apache.struts.util.GenericDataSource"; + + public String getType() { + return this.type; + } + + public void setType(String type) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.type = type; + } + + public void addProperty(String name, String value) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.properties.put(name, value); + } + + public void freeze() { + this.configured = true; + } + + public String toString() { + StringBuffer sb = new StringBuffer("DataSourceConfig["); + sb.append("key="); + sb.append(this.key); + sb.append(",type="); + sb.append(this.type); + Iterator names = this.properties.keySet().iterator(); + while (names.hasNext()) { + String name = names.next(); + String value = (String)this.properties.get(name); + sb.append(','); + sb.append(name); + sb.append('='); + sb.append(value); + } + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ExceptionConfig.java b/hrmsEjb/org/apache/struts/config/ExceptionConfig.java new file mode 100644 index 0000000..5e2a845 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ExceptionConfig.java @@ -0,0 +1,101 @@ +package org.apache.struts.config; + +import java.io.Serializable; + +public class ExceptionConfig implements Serializable { + protected boolean configured = false; + + protected String bundle = null; + + public String getBundle() { + return this.bundle; + } + + public void setBundle(String bundle) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.bundle = bundle; + } + + protected String handler = "org.apache.struts.action.ExceptionHandler"; + + public String getHandler() { + return this.handler; + } + + public void setHandler(String handler) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.handler = handler; + } + + protected String key = null; + + public String getKey() { + return this.key; + } + + public void setKey(String key) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.key = key; + } + + protected String path = null; + + public String getPath() { + return this.path; + } + + public void setPath(String path) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.path = path; + } + + protected String scope = "request"; + + public String getScope() { + return this.scope; + } + + public void setScope(String scope) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.scope = scope; + } + + protected String type = null; + + public String getType() { + return this.type; + } + + public void setType(String type) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.type = type; + } + + public void freeze() { + this.configured = true; + } + + public String toString() { + StringBuffer sb = new StringBuffer("ExceptionConfig["); + sb.append("type="); + sb.append(this.type); + if (this.bundle != null) { + sb.append(",bundle="); + sb.append(this.bundle); + } + sb.append(",key="); + sb.append(this.key); + sb.append(",path="); + sb.append(this.path); + sb.append(",scope="); + sb.append(this.scope); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/struts/config/FormBeanConfig.java b/hrmsEjb/org/apache/struts/config/FormBeanConfig.java new file mode 100644 index 0000000..74fc0cc --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/FormBeanConfig.java @@ -0,0 +1,120 @@ +package org.apache.struts.config; + +import java.io.Serializable; +import java.util.HashMap; +import org.apache.struts.action.DynaActionForm; + +public class FormBeanConfig implements Serializable { + protected boolean configured = false; + + protected HashMap formProperties = new HashMap(); + + protected boolean dynamic = false; + + public boolean getDynamic() { + return this.dynamic; + } + + public void setDynamic(boolean dynamic) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + } + + protected ModuleConfig moduleConfig = null; + + public ModuleConfig getModuleConfig() { + return this.moduleConfig; + } + + public void setModuleConfig(ModuleConfig moduleConfig) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.moduleConfig = moduleConfig; + } + + protected String name = null; + + public String getName() { + return this.name; + } + + public void setName(String name) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.name = name; + } + + protected String type = null; + + public String getType() { + return this.type; + } + + public void setType(String type) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.type = type; + Class dynaBeanClass = DynaActionForm.class; + Class formBeanClass = formBeanClass(); + if (formBeanClass != null) { + if (dynaBeanClass.isAssignableFrom(formBeanClass)) { + this.dynamic = true; + } else { + this.dynamic = false; + } + } else { + this.dynamic = false; + } + } + + public void addFormPropertyConfig(FormPropertyConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + if (this.formProperties.containsKey(config.getName())) + throw new IllegalArgumentException("Property " + config.getName() + " already defined"); + this.formProperties.put(config.getName(), config); + } + + public FormPropertyConfig findFormPropertyConfig(String name) { + return (FormPropertyConfig)this.formProperties.get(name); + } + + public FormPropertyConfig[] findFormPropertyConfigs() { + FormPropertyConfig[] results = new FormPropertyConfig[this.formProperties.size()]; + return (FormPropertyConfig[])this.formProperties.values().toArray((Object[])results); + } + + public void freeze() { + this.configured = true; + FormPropertyConfig[] fpconfigs = findFormPropertyConfigs(); + for (int i = 0; i < fpconfigs.length; i++) + fpconfigs[i].freeze(); + } + + public void removeFormPropertyConfig(FormPropertyConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.formProperties.remove(config.getName()); + } + + public String toString() { + StringBuffer sb = new StringBuffer("FormBeanConfig["); + sb.append("name="); + sb.append(this.name); + sb.append(",type="); + sb.append(this.type); + sb.append("]"); + return sb.toString(); + } + + protected Class formBeanClass() { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader == null) + classLoader = getClass().getClassLoader(); + try { + return classLoader.loadClass(getType()); + } catch (Exception e) { + return null; + } + } +} diff --git a/hrmsEjb/org/apache/struts/config/FormPropertyConfig.java b/hrmsEjb/org/apache/struts/config/FormPropertyConfig.java new file mode 100644 index 0000000..3491876 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/FormPropertyConfig.java @@ -0,0 +1,153 @@ +package org.apache.struts.config; + +import java.io.Serializable; +import java.lang.reflect.Array; +import org.apache.commons.beanutils.ConvertUtils; + +public class FormPropertyConfig implements Serializable { + public FormPropertyConfig() {} + + public FormPropertyConfig(String name, String type, String initial) { + this(name, type, initial, 0); + } + + public FormPropertyConfig(String name, String type, String initial, int size) { + setName(name); + setType(type); + setInitial(initial); + setSize(size); + } + + protected boolean configured = false; + + protected String initial = null; + + public String getInitial() { + return this.initial; + } + + public void setInitial(String initial) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.initial = initial; + } + + protected String name = null; + + public String getName() { + return this.name; + } + + public void setName(String name) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.name = name; + } + + protected int size = 0; + + public int getSize() { + return this.size; + } + + public void setSize(int size) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + if (size < 0) + throw new IllegalArgumentException("size < 0"); + this.size = size; + } + + protected String type = null; + + public String getType() { + return this.type; + } + + public void setType(String type) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.type = type; + } + + public Class getTypeClass() { + String baseType = getType(); + boolean indexed = false; + if (baseType.endsWith("[]")) { + baseType = baseType.substring(0, baseType.length() - 2); + indexed = true; + } + Class baseClass = null; + if ("boolean".equals(baseType)) { + baseClass = boolean.class; + } else if ("byte".equals(baseType)) { + Class clazz = byte.class; + } else if ("char".equals(baseType)) { + Class clazz = char.class; + } else if ("double".equals(baseType)) { + Class clazz = double.class; + } else if ("float".equals(baseType)) { + Class clazz = float.class; + } else if ("int".equals(baseType)) { + Class clazz = int.class; + } else if ("long".equals(baseType)) { + Class clazz = long.class; + } else if ("short".equals(baseType)) { + Class clazz = short.class; + } else { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader == null) + classLoader = getClass().getClassLoader(); + try { + baseClass = (Class)classLoader.loadClass(baseType); + } catch (Throwable t) { + baseClass = null; + } + } + if (indexed) + return Array.newInstance(baseClass, 0).getClass(); + return baseClass; + } + + public Object initial() { + Object initialValue = null; + try { + Class clazz = getTypeClass(); + if (clazz.isArray()) { + if (this.initial != null) { + initialValue = ConvertUtils.convert(this.initial, clazz); + } else { + initialValue = Array.newInstance(clazz.getComponentType(), this.size); + for (int i = 0; i < this.size; i++) { + try { + Array.set(initialValue, i, clazz.getComponentType().newInstance()); + } catch (Throwable t) {} + } + } + } else if (this.initial != null) { + initialValue = ConvertUtils.convert(this.initial, clazz); + } else { + initialValue = clazz.newInstance(); + } + } catch (Throwable t) { + initialValue = null; + } + return initialValue; + } + + public void freeze() { + this.configured = true; + } + + public String toString() { + StringBuffer sb = new StringBuffer("FormPropertyConfig["); + sb.append("name="); + sb.append(this.name); + sb.append(",type="); + sb.append(this.type); + sb.append(",initial="); + sb.append(this.initial); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ForwardConfig.java b/hrmsEjb/org/apache/struts/config/ForwardConfig.java new file mode 100644 index 0000000..1f9a4b9 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ForwardConfig.java @@ -0,0 +1,88 @@ +package org.apache.struts.config; + +import java.io.Serializable; + +public class ForwardConfig implements Serializable { + public ForwardConfig() {} + + public ForwardConfig(String name, String path, boolean redirect) { + setName(name); + setPath(path); + setRedirect(redirect); + } + + public ForwardConfig(String name, String path, boolean redirect, boolean contextRelative) { + setName(name); + setPath(path); + setRedirect(redirect); + setContextRelative(contextRelative); + } + + protected boolean configured = false; + + protected boolean contextRelative = false; + + public boolean getContextRelative() { + return this.contextRelative; + } + + public void setContextRelative(boolean contextRelative) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.contextRelative = contextRelative; + } + + protected String name = null; + + public String getName() { + return this.name; + } + + public void setName(String name) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.name = name; + } + + protected String path = null; + + public String getPath() { + return this.path; + } + + public void setPath(String path) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.path = path; + } + + protected boolean redirect = false; + + public boolean getRedirect() { + return this.redirect; + } + + public void setRedirect(boolean redirect) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.redirect = redirect; + } + + public void freeze() { + this.configured = true; + } + + public String toString() { + StringBuffer sb = new StringBuffer("ForwardConfig["); + sb.append("name="); + sb.append(this.name); + sb.append(",path="); + sb.append(this.path); + sb.append(",redirect="); + sb.append(this.redirect); + sb.append(",contextRelative="); + sb.append(this.contextRelative); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/struts/config/MessageResourcesConfig.java b/hrmsEjb/org/apache/struts/config/MessageResourcesConfig.java new file mode 100644 index 0000000..4df8014 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/MessageResourcesConfig.java @@ -0,0 +1,71 @@ +package org.apache.struts.config; + +import java.io.Serializable; + +public class MessageResourcesConfig implements Serializable { + protected boolean configured = false; + + protected String factory = "org.apache.struts.util.PropertyMessageResourcesFactory"; + + public String getFactory() { + return this.factory; + } + + public void setFactory(String factory) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.factory = factory; + } + + protected String key = "org.apache.struts.action.MESSAGE"; + + public String getKey() { + return this.key; + } + + public void setKey(String key) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.key = key; + } + + protected boolean nullValue = true; + + public boolean getNull() { + return this.nullValue; + } + + public void setNull(boolean nullValue) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.nullValue = nullValue; + } + + protected String parameter = null; + + public String getParameter() { + return this.parameter; + } + + public void setParameter(String parameter) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.parameter = parameter; + } + + public void freeze() { + this.configured = true; + } + + public String toString() { + StringBuffer sb = new StringBuffer("MessageResourcesConfig["); + sb.append("factory="); + sb.append(this.factory); + sb.append(",null="); + sb.append(this.nullValue); + sb.append(",parameter="); + sb.append(this.parameter); + sb.append("]"); + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/struts/config/ModuleConfig.java b/hrmsEjb/org/apache/struts/config/ModuleConfig.java new file mode 100644 index 0000000..a39a56d --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ModuleConfig.java @@ -0,0 +1,71 @@ +package org.apache.struts.config; + +public interface ModuleConfig { + boolean getConfigured(); + + ControllerConfig getControllerConfig(); + + void setControllerConfig(ControllerConfig paramControllerConfig); + + String getPrefix(); + + void setPrefix(String paramString); + + String getActionMappingClass(); + + void setActionMappingClass(String paramString); + + void addActionConfig(ActionConfig paramActionConfig); + + void addDataSourceConfig(DataSourceConfig paramDataSourceConfig); + + void addExceptionConfig(ExceptionConfig paramExceptionConfig); + + void addFormBeanConfig(FormBeanConfig paramFormBeanConfig); + + void addForwardConfig(ForwardConfig paramForwardConfig); + + void addMessageResourcesConfig(MessageResourcesConfig paramMessageResourcesConfig); + + void addPlugInConfig(PlugInConfig paramPlugInConfig); + + ActionConfig findActionConfig(String paramString); + + ActionConfig[] findActionConfigs(); + + DataSourceConfig findDataSourceConfig(String paramString); + + DataSourceConfig[] findDataSourceConfigs(); + + ExceptionConfig findExceptionConfig(String paramString); + + ExceptionConfig[] findExceptionConfigs(); + + FormBeanConfig findFormBeanConfig(String paramString); + + FormBeanConfig[] findFormBeanConfigs(); + + ForwardConfig findForwardConfig(String paramString); + + ForwardConfig[] findForwardConfigs(); + + MessageResourcesConfig findMessageResourcesConfig(String paramString); + + MessageResourcesConfig[] findMessageResourcesConfigs(); + + PlugInConfig[] findPlugInConfigs(); + + void freeze(); + + void removeActionConfig(ActionConfig paramActionConfig); + + void removeExceptionConfig(ExceptionConfig paramExceptionConfig); + + void removeDataSourceConfig(DataSourceConfig paramDataSourceConfig); + + void removeFormBeanConfig(FormBeanConfig paramFormBeanConfig); + + void removeForwardConfig(ForwardConfig paramForwardConfig); + + void removeMessageResourcesConfig(MessageResourcesConfig paramMessageResourcesConfig); +} diff --git a/hrmsEjb/org/apache/struts/config/ModuleConfigFactory.java b/hrmsEjb/org/apache/struts/config/ModuleConfigFactory.java new file mode 100644 index 0000000..fb58284 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/ModuleConfigFactory.java @@ -0,0 +1,36 @@ +package org.apache.struts.config; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts.util.RequestUtils; + +public abstract class ModuleConfigFactory { + public abstract ModuleConfig createModuleConfig(String paramString); + + public static String getFactoryClass() { + return factoryClass; + } + + public static void setFactoryClass(String factoryClass) { + ModuleConfigFactory.factoryClass = factoryClass; + clazz = null; + } + + public static ModuleConfigFactory createFactory() { + try { + if (clazz == null) + clazz = RequestUtils.applicationClass(factoryClass); + ModuleConfigFactory factory = clazz.newInstance(); + return factory; + } catch (Throwable t) { + LOG.error("ModuleConfigFactory.createFactory", t); + return null; + } + } + + protected static Class clazz = null; + + private static Log LOG = LogFactory.getLog(ModuleConfigFactory.class); + + protected static String factoryClass = "org.apache.struts.config.impl.DefaultModuleConfigFactory"; +} diff --git a/hrmsEjb/org/apache/struts/config/PlugInConfig.java b/hrmsEjb/org/apache/struts/config/PlugInConfig.java new file mode 100644 index 0000000..743d192 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/PlugInConfig.java @@ -0,0 +1,35 @@ +package org.apache.struts.config; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +public class PlugInConfig implements Serializable { + protected boolean configured = false; + + protected Map properties = new HashMap(); + + protected String className = null; + + public String getClassName() { + return this.className; + } + + public void setClassName(String className) { + this.className = className; + } + + public void addProperty(String name, String value) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.properties.put(name, value); + } + + public void freeze() { + this.configured = true; + } + + public Map getProperties() { + return this.properties; + } +} diff --git a/hrmsEjb/org/apache/struts/config/PlugInSetPropertyRule.java b/hrmsEjb/org/apache/struts/config/PlugInSetPropertyRule.java new file mode 100644 index 0000000..b897a63 --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/PlugInSetPropertyRule.java @@ -0,0 +1,11 @@ +package org.apache.struts.config; + +import org.apache.commons.digester.Rule; +import org.xml.sax.Attributes; + +final class PlugInSetPropertyRule extends Rule { + public void begin(Attributes attributes) throws Exception { + PlugInConfig plugInConfig = (PlugInConfig)this.digester.peek(); + plugInConfig.addProperty(attributes.getValue("property"), attributes.getValue("value")); + } +} diff --git a/hrmsEjb/org/apache/struts/config/SetActionMappingClassRule.java b/hrmsEjb/org/apache/struts/config/SetActionMappingClassRule.java new file mode 100644 index 0000000..877ff5e --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/SetActionMappingClassRule.java @@ -0,0 +1,14 @@ +package org.apache.struts.config; + +import org.apache.commons.digester.Rule; +import org.xml.sax.Attributes; + +final class SetActionMappingClassRule extends Rule { + public void begin(Attributes attributes) throws Exception { + String className = attributes.getValue("type"); + if (className != null) { + ModuleConfig mc = (ModuleConfig)this.digester.peek(); + mc.setActionMappingClass(className); + } + } +} diff --git a/hrmsEjb/org/apache/struts/config/impl/ModuleConfigImpl.java b/hrmsEjb/org/apache/struts/config/impl/ModuleConfigImpl.java new file mode 100644 index 0000000..3be71ab --- /dev/null +++ b/hrmsEjb/org/apache/struts/config/impl/ModuleConfigImpl.java @@ -0,0 +1,289 @@ +package org.apache.struts.config.impl; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import org.apache.struts.config.ActionConfig; +import org.apache.struts.config.ControllerConfig; +import org.apache.struts.config.DataSourceConfig; +import org.apache.struts.config.ExceptionConfig; +import org.apache.struts.config.FormBeanConfig; +import org.apache.struts.config.ForwardConfig; +import org.apache.struts.config.MessageResourcesConfig; +import org.apache.struts.config.ModuleConfig; +import org.apache.struts.config.PlugInConfig; + +public class ModuleConfigImpl implements Serializable, ModuleConfig { + protected HashMap actionConfigs; + + protected HashMap dataSources; + + protected HashMap exceptions; + + protected HashMap formBeans; + + protected HashMap forwards; + + protected HashMap messageResources; + + protected ArrayList plugIns; + + protected boolean configured; + + protected ControllerConfig controllerConfig; + + protected String prefix; + + protected String actionMappingClass; + + public ModuleConfigImpl(String prefix) { + this.actionConfigs = null; + this.dataSources = null; + this.exceptions = null; + this.formBeans = null; + this.forwards = null; + this.messageResources = null; + this.plugIns = null; + this.configured = false; + this.controllerConfig = null; + this.prefix = null; + this.actionMappingClass = "org.apache.struts.action.ActionMapping"; + this.prefix = prefix; + this.actionConfigs = new HashMap(); + this.actionMappingClass = "org.apache.struts.action.ActionMapping"; + this.configured = false; + this.controllerConfig = null; + this.dataSources = new HashMap(); + this.exceptions = new HashMap(); + this.formBeans = new HashMap(); + this.forwards = new HashMap(); + this.messageResources = new HashMap(); + this.plugIns = new ArrayList(); + } + + public ModuleConfigImpl(ModuleConfigImpl moduleConfig) { + this.actionConfigs = null; + this.dataSources = null; + this.exceptions = null; + this.formBeans = null; + this.forwards = null; + this.messageResources = null; + this.plugIns = null; + this.configured = false; + this.controllerConfig = null; + this.prefix = null; + this.actionMappingClass = "org.apache.struts.action.ActionMapping"; + this.actionConfigs = moduleConfig.actionConfigs; + this.actionMappingClass = moduleConfig.actionMappingClass; + this.configured = moduleConfig.configured; + this.controllerConfig = moduleConfig.controllerConfig; + this.dataSources = moduleConfig.dataSources; + this.exceptions = moduleConfig.exceptions; + this.formBeans = moduleConfig.formBeans; + this.forwards = moduleConfig.forwards; + this.messageResources = moduleConfig.messageResources; + this.plugIns = moduleConfig.plugIns; + this.prefix = moduleConfig.prefix; + } + + public boolean getConfigured() { + return this.configured; + } + + public ControllerConfig getControllerConfig() { + if (this.controllerConfig == null) + this.controllerConfig = new ControllerConfig(); + return this.controllerConfig; + } + + public void setControllerConfig(ControllerConfig cc) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.controllerConfig = cc; + } + + public String getPrefix() { + return this.prefix; + } + + public void setPrefix(String prefix) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.prefix = prefix; + } + + public String getActionMappingClass() { + return this.actionMappingClass; + } + + public void setActionMappingClass(String actionMappingClass) { + this.actionMappingClass = actionMappingClass; + } + + public void addActionConfig(ActionConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + config.setModuleConfig(this); + this.actionConfigs.put(config.getPath(), config); + } + + public void addDataSourceConfig(DataSourceConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.dataSources.put(config.getKey(), config); + } + + public void addExceptionConfig(ExceptionConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.exceptions.put(config.getType(), config); + } + + public void addFormBeanConfig(FormBeanConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + config.setModuleConfig(this); + this.formBeans.put(config.getName(), config); + } + + public void addForwardConfig(ForwardConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.forwards.put(config.getName(), config); + } + + public void addMessageResourcesConfig(MessageResourcesConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.messageResources.put(config.getKey(), config); + } + + public void addPlugInConfig(PlugInConfig plugInConfig) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.plugIns.add(plugInConfig); + } + + public ActionConfig findActionConfig(String path) { + return (ActionConfig)this.actionConfigs.get(path); + } + + public ActionConfig[] findActionConfigs() { + ActionConfig[] results = new ActionConfig[this.actionConfigs.size()]; + return (ActionConfig[])this.actionConfigs.values().toArray((Object[])results); + } + + public DataSourceConfig findDataSourceConfig(String key) { + return (DataSourceConfig)this.dataSources.get(key); + } + + public DataSourceConfig[] findDataSourceConfigs() { + DataSourceConfig[] results = new DataSourceConfig[this.dataSources.size()]; + return (DataSourceConfig[])this.dataSources.values().toArray((Object[])results); + } + + public ExceptionConfig findExceptionConfig(String type) { + return (ExceptionConfig)this.exceptions.get(type); + } + + public ExceptionConfig[] findExceptionConfigs() { + ExceptionConfig[] results = new ExceptionConfig[this.exceptions.size()]; + return (ExceptionConfig[])this.exceptions.values().toArray((Object[])results); + } + + public FormBeanConfig findFormBeanConfig(String name) { + return (FormBeanConfig)this.formBeans.get(name); + } + + public FormBeanConfig[] findFormBeanConfigs() { + FormBeanConfig[] results = new FormBeanConfig[this.formBeans.size()]; + return (FormBeanConfig[])this.formBeans.values().toArray((Object[])results); + } + + public ForwardConfig findForwardConfig(String name) { + return (ForwardConfig)this.forwards.get(name); + } + + public ForwardConfig[] findForwardConfigs() { + ForwardConfig[] results = new ForwardConfig[this.forwards.size()]; + return (ForwardConfig[])this.forwards.values().toArray((Object[])results); + } + + public MessageResourcesConfig findMessageResourcesConfig(String key) { + return (MessageResourcesConfig)this.messageResources.get(key); + } + + public MessageResourcesConfig[] findMessageResourcesConfigs() { + MessageResourcesConfig[] results = new MessageResourcesConfig[this.messageResources.size()]; + return (MessageResourcesConfig[])this.messageResources.values().toArray((Object[])results); + } + + public PlugInConfig[] findPlugInConfigs() { + PlugInConfig[] results = new PlugInConfig[this.plugIns.size()]; + return (PlugInConfig[])this.plugIns.toArray((Object[])results); + } + + public void freeze() { + this.configured = true; + ActionConfig[] aconfigs = findActionConfigs(); + for (int i = 0; i < aconfigs.length; i++) + aconfigs[i].freeze(); + getControllerConfig().freeze(); + DataSourceConfig[] dsconfigs = findDataSourceConfigs(); + for (int j = 0; j < dsconfigs.length; j++) + dsconfigs[j].freeze(); + ExceptionConfig[] econfigs = findExceptionConfigs(); + for (int k = 0; k < econfigs.length; k++) + econfigs[k].freeze(); + FormBeanConfig[] fbconfigs = findFormBeanConfigs(); + for (int m = 0; m < fbconfigs.length; m++) + fbconfigs[m].freeze(); + ForwardConfig[] fconfigs = findForwardConfigs(); + for (int n = 0; n < fconfigs.length; n++) + fconfigs[n].freeze(); + MessageResourcesConfig[] mrconfigs = findMessageResourcesConfigs(); + for (int i1 = 0; i1 < mrconfigs.length; i1++) + mrconfigs[i1].freeze(); + PlugInConfig[] piconfigs = findPlugInConfigs(); + for (int i2 = 0; i2 < piconfigs.length; i2++) + piconfigs[i2].freeze(); + } + + public void removeActionConfig(ActionConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + config.setModuleConfig(null); + this.actionConfigs.remove(config.getPath()); + } + + public void removeExceptionConfig(ExceptionConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.exceptions.remove(config.getType()); + } + + public void removeDataSourceConfig(DataSourceConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.dataSources.remove(config.getKey()); + } + + public void removeFormBeanConfig(FormBeanConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + config.setModuleConfig(null); + this.formBeans.remove(config.getName()); + } + + public void removeForwardConfig(ForwardConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.forwards.remove(config.getName()); + } + + public void removeMessageResourcesConfig(MessageResourcesConfig config) { + if (this.configured) + throw new IllegalStateException("Configuration is frozen"); + this.messageResources.remove(config.getKey()); + } +} diff --git a/hrmsEjb/org/apache/struts/upload/MultipartRequestHandler.java b/hrmsEjb/org/apache/struts/upload/MultipartRequestHandler.java new file mode 100644 index 0000000..45e4190 --- /dev/null +++ b/hrmsEjb/org/apache/struts/upload/MultipartRequestHandler.java @@ -0,0 +1,31 @@ +package org.apache.struts.upload; + +import java.util.Hashtable; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionServlet; + +public interface MultipartRequestHandler { + public static final String ATTRIBUTE_MAX_LENGTH_EXCEEDED = "org.apache.struts.upload.MaxLengthExceeded"; + + void setServlet(ActionServlet paramActionServlet); + + void setMapping(ActionMapping paramActionMapping); + + ActionServlet getServlet(); + + ActionMapping getMapping(); + + void handleRequest(HttpServletRequest paramHttpServletRequest) throws ServletException; + + Hashtable getTextElements(); + + Hashtable getFileElements(); + + Hashtable getAllElements(); + + void rollback(); + + void finish(); +} diff --git a/hrmsEjb/org/apache/struts/upload/MultipartRequestWrapper.java b/hrmsEjb/org/apache/struts/upload/MultipartRequestWrapper.java new file mode 100644 index 0000000..59bd70c --- /dev/null +++ b/hrmsEjb/org/apache/struts/upload/MultipartRequestWrapper.java @@ -0,0 +1,258 @@ +package org.apache.struts.upload; + +import java.io.BufferedReader; +import java.io.IOException; +import java.security.Principal; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; +import java.util.Vector; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletInputStream; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +public class MultipartRequestWrapper implements HttpServletRequest { + protected Map parameters; + + protected HttpServletRequest request; + + public MultipartRequestWrapper(HttpServletRequest request) { + this.request = request; + this.parameters = new HashMap(); + } + + public void setParameter(String name, String value) { + String[] mValue = (String[])this.parameters.get(name); + if (mValue == null) + mValue = new String[0]; + String[] newValue = new String[mValue.length + 1]; + System.arraycopy(mValue, 0, newValue, 0, mValue.length); + newValue[mValue.length] = value; + this.parameters.put(name, newValue); + } + + public String getParameter(String name) { + String value = this.request.getParameter(name); + if (value == null) { + String[] mValue = (String[])this.parameters.get(name); + if (mValue != null && mValue.length > 0) + value = mValue[0]; + } + return value; + } + + public Enumeration getParameterNames() { + Enumeration baseParams = this.request.getParameterNames(); + Vector list = new Vector(); + while (baseParams.hasMoreElements()) + list.add(baseParams.nextElement()); + Collection multipartParams = this.parameters.keySet(); + Iterator iterator = multipartParams.iterator(); + while (iterator.hasNext()) + list.add(iterator.next()); + return Collections.enumeration(list); + } + + public String[] getParameterValues(String name) { + String[] value = this.request.getParameterValues(name); + if (value == null) + value = (String[])this.parameters.get(name); + return value; + } + + public HttpServletRequest getRequest() { + return this.request; + } + + public Object getAttribute(String name) { + return this.request.getAttribute(name); + } + + public Enumeration getAttributeNames() { + return this.request.getAttributeNames(); + } + + public String getCharacterEncoding() { + return this.request.getCharacterEncoding(); + } + + public int getContentLength() { + return this.request.getContentLength(); + } + + public String getContentType() { + return this.request.getContentType(); + } + + public ServletInputStream getInputStream() throws IOException { + return this.request.getInputStream(); + } + + public String getProtocol() { + return this.request.getProtocol(); + } + + public String getScheme() { + return this.request.getScheme(); + } + + public String getServerName() { + return this.request.getServerName(); + } + + public int getServerPort() { + return this.request.getServerPort(); + } + + public BufferedReader getReader() throws IOException { + return this.request.getReader(); + } + + public String getRemoteAddr() { + return this.request.getRemoteAddr(); + } + + public String getRemoteHost() { + return this.request.getRemoteHost(); + } + + public void setAttribute(String name, Object o) { + this.request.setAttribute(name, o); + } + + public void removeAttribute(String name) { + this.request.removeAttribute(name); + } + + public Locale getLocale() { + return this.request.getLocale(); + } + + public Enumeration getLocales() { + return this.request.getLocales(); + } + + public boolean isSecure() { + return this.request.isSecure(); + } + + public RequestDispatcher getRequestDispatcher(String path) { + return this.request.getRequestDispatcher(path); + } + + public String getRealPath(String path) { + return this.request.getRealPath(path); + } + + public String getAuthType() { + return this.request.getAuthType(); + } + + public Cookie[] getCookies() { + return this.request.getCookies(); + } + + public long getDateHeader(String name) { + return this.request.getDateHeader(name); + } + + public String getHeader(String name) { + return this.request.getHeader(name); + } + + public Enumeration getHeaders(String name) { + return this.request.getHeaders(name); + } + + public Enumeration getHeaderNames() { + return this.request.getHeaderNames(); + } + + public int getIntHeader(String name) { + return this.request.getIntHeader(name); + } + + public String getMethod() { + return this.request.getMethod(); + } + + public String getPathInfo() { + return this.request.getPathInfo(); + } + + public String getPathTranslated() { + return this.request.getPathTranslated(); + } + + public String getContextPath() { + return this.request.getContextPath(); + } + + public String getQueryString() { + return this.request.getQueryString(); + } + + public String getRemoteUser() { + return this.request.getRemoteUser(); + } + + public boolean isUserInRole(String user) { + return this.request.isUserInRole(user); + } + + public Principal getUserPrincipal() { + return this.request.getUserPrincipal(); + } + + public String getRequestedSessionId() { + return this.request.getRequestedSessionId(); + } + + public String getRequestURI() { + return this.request.getRequestURI(); + } + + public String getServletPath() { + return this.request.getServletPath(); + } + + public HttpSession getSession(boolean create) { + return this.request.getSession(create); + } + + public HttpSession getSession() { + return this.request.getSession(); + } + + public boolean isRequestedSessionIdValid() { + return this.request.isRequestedSessionIdValid(); + } + + public boolean isRequestedSessionIdFromURL() { + return this.request.isRequestedSessionIdFromURL(); + } + + public boolean isRequestedSessionIdFromUrl() { + return this.request.isRequestedSessionIdFromUrl(); + } + + public Map getParameterMap() { + return null; + } + + public void setCharacterEncoding(String encoding) {} + + public StringBuffer getRequestURL() { + return null; + } + + public boolean isRequestedSessionIdFromCookie() { + return false; + } +} diff --git a/hrmsEjb/org/apache/struts/util/ErrorMessages.java b/hrmsEjb/org/apache/struts/util/ErrorMessages.java new file mode 100644 index 0000000..72c3691 --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/ErrorMessages.java @@ -0,0 +1,28 @@ +package org.apache.struts.util; + +import java.util.Vector; + +public class ErrorMessages { + private Vector errors = new Vector(); + + public void addError(String key) { + this.errors.addElement(key); + } + + public String getError(int index) { + return this.errors.elementAt(index); + } + + public String[] getErrors() { + if (this.errors.size() > 0) { + String[] array = new String[this.errors.size()]; + this.errors.copyInto((Object[])array); + return array; + } + return null; + } + + public int getSize() { + return this.errors.size(); + } +} diff --git a/hrmsEjb/org/apache/struts/util/GenericDataSource.java b/hrmsEjb/org/apache/struts/util/GenericDataSource.java new file mode 100644 index 0000000..d3e4a11 --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/GenericDataSource.java @@ -0,0 +1,5 @@ +package org.apache.struts.util; + +import org.apache.struts.legacy.GenericDataSource; + +public class GenericDataSource extends GenericDataSource {} diff --git a/hrmsEjb/org/apache/struts/util/MessageResources.java b/hrmsEjb/org/apache/struts/util/MessageResources.java new file mode 100644 index 0000000..c9b2825 --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/MessageResources.java @@ -0,0 +1,182 @@ +package org.apache.struts.util; + +import java.io.Serializable; +import java.text.MessageFormat; +import java.util.HashMap; +import java.util.Locale; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public abstract class MessageResources implements Serializable { + protected static Log log = LogFactory.getLog(MessageResources.class); + + protected String config = null; + + public String getConfig() { + return this.config; + } + + protected Locale defaultLocale = Locale.getDefault(); + + protected MessageResourcesFactory factory = null; + + public MessageResourcesFactory getFactory() { + return this.factory; + } + + protected HashMap formats = new HashMap(); + + protected boolean returnNull = false; + + public boolean getReturnNull() { + return this.returnNull; + } + + public void setReturnNull(boolean returnNull) { + this.returnNull = returnNull; + } + + public MessageResources(MessageResourcesFactory factory, String config) { + this(factory, config, false); + } + + public MessageResources(MessageResourcesFactory factory, String config, boolean returnNull) { + this.factory = factory; + this.config = config; + this.returnNull = returnNull; + } + + public String getMessage(String key) { + return getMessage((Locale)null, key); + } + + public String getMessage(String key, Object[] args) { + return getMessage((Locale)null, key, args); + } + + public String getMessage(String key, Object arg0) { + return getMessage((Locale)null, key, arg0); + } + + public String getMessage(String key, Object arg0, Object arg1) { + return getMessage((Locale)null, key, arg0, arg1); + } + + public String getMessage(String key, Object arg0, Object arg1, Object arg2) { + return getMessage((Locale)null, key, arg0, arg1, arg2); + } + + public String getMessage(String key, Object arg0, Object arg1, Object arg2, Object arg3) { + return getMessage((Locale)null, key, arg0, arg1, arg2, arg3); + } + + public String getMessage(Locale locale, String key, Object[] args) { + if (locale == null) + locale = this.defaultLocale; + MessageFormat format = null; + String formatKey = messageKey(locale, key); + synchronized (this.formats) { + format = (MessageFormat)this.formats.get(formatKey); + if (format == null) { + String formatString = getMessage(locale, key); + if (formatString == null) { + if (this.returnNull) + return null; + return "???" + formatKey + "???"; + } + format = new MessageFormat(escape(formatString)); + this.formats.put(formatKey, format); + } + } + return format.format(args); + } + + public String getMessage(Locale locale, String key, Object arg0) { + Object[] args = new Object[1]; + args[0] = arg0; + return getMessage(locale, key, args); + } + + public String getMessage(Locale locale, String key, Object arg0, Object arg1) { + Object[] args = new Object[2]; + args[0] = arg0; + args[1] = arg1; + return getMessage(locale, key, args); + } + + public String getMessage(Locale locale, String key, Object arg0, Object arg1, Object arg2) { + Object[] args = new Object[3]; + args[0] = arg0; + args[1] = arg1; + args[2] = arg2; + return getMessage(locale, key, args); + } + + public String getMessage(Locale locale, String key, Object arg0, Object arg1, Object arg2, Object arg3) { + Object[] args = new Object[4]; + args[0] = arg0; + args[1] = arg1; + args[2] = arg2; + args[3] = arg3; + return getMessage(locale, key, args); + } + + public boolean isPresent(String key) { + return isPresent(null, key); + } + + public boolean isPresent(Locale locale, String key) { + String message = getMessage(locale, key); + if (message == null) + return false; + if (message.startsWith("???") && message.endsWith("???")) + return false; + return true; + } + + protected String escape(String string) { + if (string == null || string.indexOf('\'') < 0) + return string; + int n = string.length(); + StringBuffer sb = new StringBuffer(n); + for (int i = 0; i < n; i++) { + char ch = string.charAt(i); + if (ch == '\'') + sb.append('\''); + sb.append(ch); + } + return sb.toString(); + } + + protected String localeKey(Locale locale) { + if (locale == null) + return ""; + return locale.toString(); + } + + protected String messageKey(Locale locale, String key) { + return localeKey(locale) + "." + key; + } + + protected String messageKey(String localeKey, String key) { + return localeKey + "." + key; + } + + protected static MessageResourcesFactory defaultFactory = null; + + public static synchronized MessageResources getMessageResources(String config) { + if (defaultFactory == null) + defaultFactory = MessageResourcesFactory.createFactory(); + return defaultFactory.createResources(config); + } + + public void log(String message) { + log.debug(message); + } + + public void log(String message, Throwable throwable) { + log.debug(message, throwable); + } + + public abstract String getMessage(Locale paramLocale, String paramString); +} diff --git a/hrmsEjb/org/apache/struts/util/MessageResourcesFactory.java b/hrmsEjb/org/apache/struts/util/MessageResourcesFactory.java new file mode 100644 index 0000000..fe84d98 --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/MessageResourcesFactory.java @@ -0,0 +1,46 @@ +package org.apache.struts.util; + +import java.io.Serializable; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public abstract class MessageResourcesFactory implements Serializable { + protected boolean returnNull = true; + + public boolean getReturnNull() { + return this.returnNull; + } + + public void setReturnNull(boolean returnNull) { + this.returnNull = returnNull; + } + + protected static transient Class clazz = null; + + private static Log LOG = LogFactory.getLog(MessageResourcesFactory.class); + + protected static String factoryClass = "org.apache.struts.util.PropertyMessageResourcesFactory"; + + public static String getFactoryClass() { + return factoryClass; + } + + public static void setFactoryClass(String factoryClass) { + MessageResourcesFactory.factoryClass = factoryClass; + clazz = null; + } + + public static MessageResourcesFactory createFactory() { + try { + if (clazz == null) + clazz = RequestUtils.applicationClass(factoryClass); + MessageResourcesFactory factory = clazz.newInstance(); + return factory; + } catch (Throwable t) { + LOG.error("MessageResourcesFactory.createFactory", t); + return null; + } + } + + public abstract MessageResources createResources(String paramString); +} diff --git a/hrmsEjb/org/apache/struts/util/ModuleException.java b/hrmsEjb/org/apache/struts/util/ModuleException.java new file mode 100644 index 0000000..f28e100 --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/ModuleException.java @@ -0,0 +1,50 @@ +package org.apache.struts.util; + +import org.apache.struts.action.ActionError; + +public class ModuleException extends Exception { + protected String property = null; + + protected ActionError error = null; + + public ModuleException(String key) { + super(key); + this.error = new ActionError(key); + } + + public ModuleException(String key, Object value) { + super(key); + this.error = new ActionError(key, value); + } + + public ModuleException(String key, Object value0, Object value1) { + super(key); + this.error = new ActionError(key, value0, value1); + } + + public ModuleException(String key, Object value0, Object value1, Object value2) { + super(key); + this.error = new ActionError(key, value0, value1, value2); + } + + public ModuleException(String key, Object value0, Object value1, Object value2, Object value3) { + super(key); + this.error = new ActionError(key, value0, value1, value2, value3); + } + + public ModuleException(String key, Object[] values) { + this.error = new ActionError(key, values); + } + + public String getProperty() { + return (this.property != null) ? this.property : this.error.getKey(); + } + + public void setProperty(String property) { + this.property = property; + } + + public ActionError getError() { + return this.error; + } +} diff --git a/hrmsEjb/org/apache/struts/util/RequestUtils.java b/hrmsEjb/org/apache/struts/util/RequestUtils.java new file mode 100644 index 0000000..76f761d --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/RequestUtils.java @@ -0,0 +1,930 @@ +package org.apache.struts.util; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.DynaBean; +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts.action.ActionError; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.action.ActionServlet; +import org.apache.struts.action.ActionServletWrapper; +import org.apache.struts.action.DynaActionForm; +import org.apache.struts.action.DynaActionFormClass; +import org.apache.struts.config.ActionConfig; +import org.apache.struts.config.FormBeanConfig; +import org.apache.struts.config.ForwardConfig; +import org.apache.struts.config.ModuleConfig; +import org.apache.struts.upload.MultipartRequestHandler; +import org.apache.struts.upload.MultipartRequestWrapper; + +public class RequestUtils { + protected static Log log = LogFactory.getLog(RequestUtils.class); + + private static MessageResources messages = MessageResources.getMessageResources("org.apache.struts.util.LocalStrings"); + + private static final String PREFIXES_KEY = "org.apache.struts.util.PREFIXES"; + + private static Method encode = null; + + private static Map scopes = new HashMap(); + + static { + try { + Class[] args = { String.class, String.class }; + encode = URLEncoder.class.getMethod("encode", args); + } catch (NoSuchMethodException e) { + log.debug("Could not find Java 1.4 encode method. Using deprecated version.", e); + } + scopes.put("page", new Integer(1)); + scopes.put("request", new Integer(2)); + scopes.put("session", new Integer(3)); + scopes.put("application", new Integer(4)); + } + + public static URL absoluteURL(HttpServletRequest request, String path) throws MalformedURLException { + return new URL(serverURL(request), request.getContextPath() + path); + } + + public static Class applicationClass(String className) throws ClassNotFoundException { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader == null) + classLoader = RequestUtils.class.getClassLoader(); + return classLoader.loadClass(className); + } + + public static Object applicationInstance(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + return applicationClass(className).newInstance(); + } + + public static Map computeParameters(PageContext pageContext, String paramId, String paramName, String paramProperty, String paramScope, String name, String property, String scope, boolean transaction) throws JspException { + if (paramId == null && name == null && !transaction) + return null; + Map map = null; + try { + if (name != null) + map = (Map)lookup(pageContext, name, property, scope); + } catch (ClassCastException e) { + saveException(pageContext, e); + throw new JspException(messages.getMessage("parameters.multi", name, property, scope)); + } catch (JspException e) { + saveException(pageContext, (Throwable)e); + throw e; + } + Map results = null; + if (map != null) { + results = new HashMap(map); + } else { + results = new HashMap(); + } + if (paramId != null && paramName != null) { + Object paramValue = null; + try { + paramValue = lookup(pageContext, paramName, paramProperty, paramScope); + } catch (JspException e) { + saveException(pageContext, (Throwable)e); + throw e; + } + if (paramValue != null) { + String paramString = null; + if (paramValue instanceof String) { + paramString = (String)paramValue; + } else { + paramString = paramValue.toString(); + } + Object mapValue = results.get(paramId); + if (mapValue == null) { + results.put(paramId, paramString); + } else if (mapValue instanceof String) { + String[] newValues = new String[2]; + newValues[0] = (String)mapValue; + newValues[1] = paramString; + results.put(paramId, newValues); + } else { + String[] oldValues = (String[])mapValue; + String[] newValues = new String[oldValues.length + 1]; + System.arraycopy(oldValues, 0, newValues, 0, oldValues.length); + newValues[oldValues.length] = paramString; + results.put(paramId, newValues); + } + } + } + if (transaction) { + HttpSession session = pageContext.getSession(); + String token = null; + if (session != null) + token = (String)session.getAttribute("org.apache.struts.action.TOKEN"); + if (token != null) + results.put("org.apache.struts.taglib.html.TOKEN", token); + } + return results; + } + + public static String computeURL(PageContext pageContext, String forward, String href, String page, Map params, String anchor, boolean redirect) throws MalformedURLException { + return computeURL(pageContext, forward, href, page, null, params, anchor, redirect); + } + + public static String computeURL(PageContext pageContext, String forward, String href, String page, String action, Map params, String anchor, boolean redirect) throws MalformedURLException { + return computeURL(pageContext, forward, href, page, action, params, anchor, redirect, true); + } + + public static String computeURL(PageContext pageContext, String forward, String href, String page, String action, Map params, String anchor, boolean redirect, boolean encodeSeparator) throws MalformedURLException { + int n = 0; + if (forward != null) + n++; + if (href != null) + n++; + if (page != null) + n++; + if (action != null) + n++; + if (n != 1) + throw new MalformedURLException(messages.getMessage("computeURL.specifier")); + ModuleConfig config = (ModuleConfig)pageContext.getRequest().getAttribute("org.apache.struts.action.MODULE"); + if (config == null) { + config = (ModuleConfig)pageContext.getServletContext().getAttribute("org.apache.struts.action.MODULE"); + pageContext.getRequest().setAttribute("org.apache.struts.action.MODULE", config); + } + StringBuffer url = new StringBuffer(); + HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); + if (forward != null) { + ForwardConfig fc = config.findForwardConfig(forward); + if (fc == null) + throw new MalformedURLException(messages.getMessage("computeURL.forward", forward)); + if (fc.getRedirect()) + redirect = true; + if (fc.getPath().startsWith("/")) { + url.append(request.getContextPath()); + url.append(forwardURL(request, fc)); + } else { + url.append(fc.getPath()); + } + } else if (href != null) { + url.append(href); + } else if (action != null) { + url.append(getActionMappingURL(action, pageContext)); + } else { + url.append(request.getContextPath()); + url.append(pageURL(request, page)); + } + if (anchor != null) { + String temp = url.toString(); + int hash = temp.indexOf('#'); + if (hash >= 0) + url.setLength(hash); + url.append('#'); + url.append(encodeURL(anchor)); + } + if (params != null && params.size() > 0) { + String temp = url.toString(); + int hash = temp.indexOf('#'); + if (hash >= 0) { + anchor = temp.substring(hash + 1); + url.setLength(hash); + temp = url.toString(); + } else { + anchor = null; + } + String separator = null; + if (redirect) { + separator = "&"; + } else if (encodeSeparator) { + separator = "&"; + } else { + separator = "&"; + } + boolean question = (temp.indexOf('?') >= 0); + Iterator keys = params.keySet().iterator(); + while (keys.hasNext()) { + String key = keys.next(); + Object value = params.get(key); + if (value == null) { + if (!question) { + url.append('?'); + question = true; + } else { + url.append(separator); + } + url.append(encodeURL(key)); + url.append('='); + continue; + } + if (value instanceof String) { + if (!question) { + url.append('?'); + question = true; + } else { + url.append(separator); + } + url.append(encodeURL(key)); + url.append('='); + url.append(encodeURL((String)value)); + continue; + } + if (value instanceof String[]) { + String[] values = (String[])value; + for (int i = 0; i < values.length; i++) { + if (!question) { + url.append('?'); + question = true; + } else { + url.append(separator); + } + url.append(encodeURL(key)); + url.append('='); + url.append(encodeURL(values[i])); + } + continue; + } + if (!question) { + url.append('?'); + question = true; + } else { + url.append(separator); + } + url.append(encodeURL(key)); + url.append('='); + url.append(encodeURL(value.toString())); + } + if (anchor != null) { + url.append('#'); + url.append(encodeURL(anchor)); + } + } + if (pageContext.getSession() != null) { + HttpServletResponse response = (HttpServletResponse)pageContext.getResponse(); + if (redirect) + return response.encodeRedirectURL(url.toString()); + return response.encodeURL(url.toString()); + } + return url.toString(); + } + + public static String getActionMappingName(String action) { + String value = action; + int question = action.indexOf("?"); + if (question >= 0) + value = value.substring(0, question); + int slash = value.lastIndexOf("/"); + int period = value.lastIndexOf("."); + if (period >= 0 && period > slash) + value = value.substring(0, period); + if (value.startsWith("/")) + return value; + return "/" + value; + } + + public static String getActionMappingURL(String action, PageContext pageContext) { + HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); + StringBuffer value = new StringBuffer(request.getContextPath()); + ModuleConfig config = (ModuleConfig)pageContext.getRequest().getAttribute("org.apache.struts.action.MODULE"); + if (config != null) + value.append(config.getPrefix()); + String servletMapping = (String)pageContext.getAttribute("org.apache.struts.action.SERVLET_MAPPING", 4); + if (servletMapping != null) { + String queryString = null; + int question = action.indexOf("?"); + if (question >= 0) + queryString = action.substring(question); + String actionMapping = getActionMappingName(action); + if (servletMapping.startsWith("*.")) { + value.append(actionMapping); + value.append(servletMapping.substring(1)); + } else if (servletMapping.endsWith("/*")) { + value.append(servletMapping.substring(0, servletMapping.length() - 2)); + value.append(actionMapping); + } else if (servletMapping.equals("/")) { + value.append(actionMapping); + } + if (queryString != null) + value.append(queryString); + } else { + if (!action.startsWith("/")) + value.append("/"); + value.append(action); + } + return value.toString(); + } + + public static ActionForm createActionForm(HttpServletRequest request, ActionMapping mapping, ModuleConfig moduleConfig, ActionServlet servlet) { + String attribute = mapping.getAttribute(); + if (attribute == null) + return null; + String name = mapping.getName(); + FormBeanConfig config = moduleConfig.findFormBeanConfig(name); + if (config == null) + return null; + if (log.isDebugEnabled()) + log.debug(" Looking for ActionForm bean instance in scope '" + mapping.getScope() + "' under attribute key '" + attribute + "'"); + ActionForm instance = null; + HttpSession session = null; + if ("request".equals(mapping.getScope())) { + instance = (ActionForm)request.getAttribute(attribute); + } else { + session = request.getSession(); + instance = (ActionForm)session.getAttribute(attribute); + } + if (instance != null) + if (config.getDynamic()) { + String className = ((DynaBean)instance).getDynaClass().getName(); + if (className.equals(config.getName())) { + if (log.isDebugEnabled()) { + log.debug(" Recycling existing DynaActionForm instance of type '" + className + "'"); + log.trace(" --> " + instance); + } + return instance; + } + } else { + try { + Class configClass = applicationClass(config.getType()); + if (configClass.isAssignableFrom(instance.getClass())) { + if (log.isDebugEnabled()) { + log.debug(" Recycling existing ActionForm instance of class '" + instance.getClass().getName() + "'"); + log.trace(" --> " + instance); + } + return instance; + } + } catch (Throwable t) { + log.error(servlet.getInternal().getMessage("formBean", config.getType()), t); + return null; + } + } + if (config.getDynamic()) { + try { + DynaActionFormClass dynaClass = DynaActionFormClass.createDynaActionFormClass(config); + instance = (ActionForm)dynaClass.newInstance(); + ((DynaActionForm)instance).initialize(mapping); + if (log.isDebugEnabled()) { + log.debug(" Creating new DynaActionForm instance of type '" + config.getType() + "'"); + log.trace(" --> " + instance); + } + } catch (Throwable t) { + log.error(servlet.getInternal().getMessage("formBean", config.getType()), t); + return null; + } + } else { + try { + instance = (ActionForm)applicationInstance(config.getType()); + if (log.isDebugEnabled()) { + log.debug(" Creating new ActionForm instance of type '" + config.getType() + "'"); + log.trace(" --> " + instance); + } + } catch (Throwable t) { + log.error(servlet.getInternal().getMessage("formBean", config.getType()), t); + return null; + } + } + instance.setServlet(servlet); + return instance; + } + + public static Object lookup(PageContext pageContext, String name, String scopeName) throws JspException { + if (scopeName == null) + return pageContext.findAttribute(name); + try { + return pageContext.getAttribute(name, getScope(scopeName)); + } catch (JspException e) { + saveException(pageContext, (Throwable)e); + throw e; + } + } + + public static int getScope(String scopeName) throws JspException { + Integer scope = (Integer)scopes.get(scopeName.toLowerCase()); + if (scope == null) + throw new JspException(messages.getMessage("lookup.scope", scope)); + return scope.intValue(); + } + + public static Object lookup(PageContext pageContext, String name, String property, String scope) throws JspException { + Object bean = lookup(pageContext, name, scope); + if (bean == null) { + JspException e = null; + if (scope == null) { + e = new JspException(messages.getMessage("lookup.bean.any", name)); + } else { + e = new JspException(messages.getMessage("lookup.bean", name, scope)); + } + saveException(pageContext, (Throwable)e); + throw e; + } + if (property == null) + return bean; + try { + return PropertyUtils.getProperty(bean, property); + } catch (IllegalAccessException e) { + saveException(pageContext, e); + throw new JspException(messages.getMessage("lookup.access", property, name)); + } catch (InvocationTargetException e) { + Throwable t = e.getTargetException(); + if (t == null) + t = e; + saveException(pageContext, t); + throw new JspException(messages.getMessage("lookup.target", property, name)); + } catch (NoSuchMethodException e) { + saveException(pageContext, e); + throw new JspException(messages.getMessage("lookup.method", property, name)); + } + } + + public static Locale retrieveUserLocale(PageContext pageContext, String locale) { + Locale userLocale = null; + HttpSession session = pageContext.getSession(); + if (locale == null) + locale = "org.apache.struts.action.LOCALE"; + if (session != null) + userLocale = (Locale)session.getAttribute(locale); + if (userLocale == null) + userLocale = pageContext.getRequest().getLocale(); + return userLocale; + } + + public static String message(PageContext pageContext, String bundle, String locale, String key) throws JspException { + return message(pageContext, bundle, locale, key, null); + } + + public static String message(PageContext pageContext, String bundle, String locale, String key, Object[] args) throws JspException { + MessageResources resources = retrieveMessageResources(pageContext, bundle, false); + Locale userLocale = retrieveUserLocale(pageContext, locale); + if (args == null) + return resources.getMessage(userLocale, key); + return resources.getMessage(userLocale, key, args); + } + + private static MessageResources retrieveMessageResources(PageContext pageContext, String bundle, boolean checkPageScope) throws JspException { + MessageResources resources = null; + if (bundle == null) + bundle = "org.apache.struts.action.MESSAGE"; + if (checkPageScope) + resources = (MessageResources)pageContext.getAttribute(bundle, 1); + if (resources == null) + resources = (MessageResources)pageContext.getAttribute(bundle, 2); + if (resources == null) + resources = (MessageResources)pageContext.getAttribute(bundle, 4); + if (resources == null) { + JspException e = new JspException(messages.getMessage("message.bundle", bundle)); + saveException(pageContext, (Throwable)e); + throw e; + } + return resources; + } + + public static void populate(Object bean, HttpServletRequest request) throws ServletException { + populate(bean, null, null, request); + } + + public static void populate(Object bean, String prefix, String suffix, HttpServletRequest request) throws ServletException { + HashMap properties = new HashMap(); + Enumeration names = null; + Map multipartParameters = null; + String contentType = request.getContentType(); + String method = request.getMethod(); + boolean isMultipart = false; + if (contentType != null && contentType.startsWith("multipart/form-data") && method.equalsIgnoreCase("POST")) { + ActionServletWrapper servlet; + if (bean instanceof ActionForm) { + servlet = ((ActionForm)bean).getServletWrapper(); + } else { + throw new ServletException("bean that's supposed to be populated from a multipart request is not of type \"org.apache.struts.action.ActionForm\", but type \"" + bean.getClass().getName() + "\""); + } + MultipartRequestHandler multipartHandler = getMultipartHandler(request); + ((ActionForm)bean).setMultipartRequestHandler(multipartHandler); + if (multipartHandler != null) { + isMultipart = true; + servlet.setServletFor(multipartHandler); + multipartHandler.setMapping((ActionMapping)request.getAttribute("org.apache.struts.action.mapping.instance")); + multipartHandler.handleRequest(request); + Boolean maxLengthExceeded = (Boolean)request.getAttribute("org.apache.struts.upload.MaxLengthExceeded"); + if (maxLengthExceeded != null && maxLengthExceeded.booleanValue()) + return; + multipartParameters = getAllParametersForMultipartRequest(request, multipartHandler); + names = Collections.enumeration(multipartParameters.keySet()); + } + } + if (!isMultipart) + names = request.getParameterNames(); + while (names.hasMoreElements()) { + String name = (String)names.nextElement(); + String stripped = name; + if (prefix != null) { + if (!stripped.startsWith(prefix)) + continue; + stripped = stripped.substring(prefix.length()); + } + if (suffix != null) { + if (!stripped.endsWith(suffix)) + continue; + stripped = stripped.substring(0, stripped.length() - suffix.length()); + } + if (isMultipart) { + properties.put(stripped, multipartParameters.get(name)); + continue; + } + properties.put(stripped, request.getParameterValues(name)); + } + try { + BeanUtils.populate(bean, properties); + } catch (Exception e) { + throw new ServletException("BeanUtils.populate", e); + } + } + + private static MultipartRequestHandler getMultipartHandler(HttpServletRequest request) throws ServletException { + MultipartRequestHandler multipartHandler = null; + String multipartClass = (String)request.getAttribute("org.apache.struts.action.mapping.multipartclass"); + request.removeAttribute("org.apache.struts.action.mapping.multipartclass"); + if (multipartClass != null) { + try { + multipartHandler = (MultipartRequestHandler)applicationInstance(multipartClass); + } catch (ClassNotFoundException cnfe) { + log.error("MultipartRequestHandler class \"" + multipartClass + "\" in mapping class not found, " + "defaulting to global multipart class"); + } catch (InstantiationException ie) { + log.error("InstantiaionException when instantiating MultipartRequestHandler \"" + multipartClass + "\", " + "defaulting to global multipart class, exception: " + ie.getMessage()); + } catch (IllegalAccessException iae) { + log.error("IllegalAccessException when instantiating MultipartRequestHandler \"" + multipartClass + "\", " + "defaulting to global multipart class, exception: " + iae.getMessage()); + } + if (multipartHandler != null) + return multipartHandler; + } + ModuleConfig moduleConfig = (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE"); + multipartClass = moduleConfig.getControllerConfig().getMultipartClass(); + if (multipartClass != null) { + try { + multipartHandler = (MultipartRequestHandler)applicationInstance(multipartClass); + } catch (ClassNotFoundException cnfe) { + throw new ServletException("Cannot find multipart class \"" + multipartClass + "\"" + ", exception: " + cnfe.getMessage()); + } catch (InstantiationException ie) { + throw new ServletException("InstantiaionException when instantiating multipart class \"" + multipartClass + "\", exception: " + ie.getMessage()); + } catch (IllegalAccessException iae) { + throw new ServletException("IllegalAccessException when instantiating multipart class \"" + multipartClass + "\", exception: " + iae.getMessage()); + } + if (multipartHandler != null) + return multipartHandler; + } + return multipartHandler; + } + + private static Map getAllParametersForMultipartRequest(HttpServletRequest request, MultipartRequestHandler multipartHandler) { + Map parameters = new HashMap(); + Hashtable elements = multipartHandler.getAllElements(); + Enumeration enum = elements.keys(); + while (enum.hasMoreElements()) { + String key = enum.nextElement(); + parameters.put(key, elements.get(key)); + } + if (request instanceof MultipartRequestWrapper) { + request = ((MultipartRequestWrapper)request).getRequest(); + enum = request.getParameterNames(); + while (enum.hasMoreElements()) { + String key = enum.nextElement(); + parameters.put(key, request.getParameterValues(key)); + } + } else { + log.debug("Gathering multipart parameters for unwrapped request"); + } + return parameters; + } + + public static boolean present(PageContext pageContext, String bundle, String locale, String key) throws JspException { + MessageResources resources = retrieveMessageResources(pageContext, bundle, true); + Locale userLocale = retrieveUserLocale(pageContext, locale); + return resources.isPresent(userLocale, key); + } + + public static String printableURL(URL url) { + if (url.getHost() != null) + return url.toString(); + String file = url.getFile(); + String ref = url.getRef(); + if (ref == null) + return file; + StringBuffer sb = new StringBuffer(file); + sb.append('#'); + sb.append(ref); + return sb.toString(); + } + + public static String actionURL(HttpServletRequest request, ActionConfig action, String pattern) { + StringBuffer sb = new StringBuffer(); + if (pattern.endsWith("/*")) { + sb.append(pattern.substring(0, pattern.length() - 2)); + sb.append(action.getPath()); + } else if (pattern.startsWith("*.")) { + ModuleConfig appConfig = (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE"); + sb.append(appConfig.getPrefix()); + sb.append(action.getPath()); + sb.append(pattern.substring(1)); + } else { + throw new IllegalArgumentException(pattern); + } + return sb.toString(); + } + + public static String forwardURL(HttpServletRequest request, ForwardConfig forward) { + String path = forward.getPath(); + StringBuffer sb = new StringBuffer(); + if (forward.getContextRelative()) { + if (!path.startsWith("/")) + sb.append("/"); + sb.append(path); + return sb.toString(); + } + ModuleConfig moduleConfig = (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE"); + String forwardPattern = moduleConfig.getControllerConfig().getForwardPattern(); + if (forwardPattern == null) { + sb.append(moduleConfig.getPrefix()); + if (!path.startsWith("/")) + sb.append("/"); + sb.append(path); + } else { + boolean dollar = false; + for (int i = 0; i < forwardPattern.length(); i++) { + char ch = forwardPattern.charAt(i); + if (dollar) { + switch (ch) { + case 'M': + sb.append(moduleConfig.getPrefix()); + break; + case 'P': + if (!path.startsWith("/")) + sb.append("/"); + sb.append(path); + break; + case '$': + sb.append('$'); + break; + } + dollar = false; + } else if (ch == '$') { + dollar = true; + } else { + sb.append(ch); + } + } + } + return sb.toString(); + } + + public static String pageURL(HttpServletRequest request, String page) { + StringBuffer sb = new StringBuffer(); + ModuleConfig moduleConfig = (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE"); + String pagePattern = moduleConfig.getControllerConfig().getPagePattern(); + if (pagePattern == null) { + sb.append(moduleConfig.getPrefix()); + sb.append(page); + } else { + boolean dollar = false; + for (int i = 0; i < pagePattern.length(); i++) { + char ch = pagePattern.charAt(i); + if (dollar) { + switch (ch) { + case 'M': + sb.append(moduleConfig.getPrefix()); + break; + case 'P': + sb.append(page); + break; + case '$': + sb.append('$'); + break; + } + dollar = false; + } else if (ch == '$') { + dollar = true; + } else { + sb.append(ch); + } + } + } + return sb.toString(); + } + + public static URL requestURL(HttpServletRequest request) throws MalformedURLException { + StringBuffer url = new StringBuffer(); + String scheme = request.getScheme(); + int port = request.getServerPort(); + if (port < 0) + port = 80; + url.append(scheme); + url.append("://"); + url.append(request.getServerName()); + if ((scheme.equals("http") && port != 80) || (scheme.equals("https") && port != 443)) { + url.append(':'); + url.append(port); + } + url.append(request.getRequestURI()); + return new URL(url.toString()); + } + + public static URL serverURL(HttpServletRequest request) throws MalformedURLException { + StringBuffer url = new StringBuffer(); + String scheme = request.getScheme(); + int port = request.getServerPort(); + if (port < 0) + port = 80; + url.append(scheme); + url.append("://"); + url.append(request.getServerName()); + if ((scheme.equals("http") && port != 80) || (scheme.equals("https") && port != 443)) { + url.append(':'); + url.append(port); + } + return new URL(url.toString()); + } + + public static void saveException(PageContext pageContext, Throwable exception) { + pageContext.setAttribute("org.apache.struts.action.EXCEPTION", exception, 2); + } + + public static void selectApplication(String prefix, HttpServletRequest request, ServletContext context) { + selectModule(prefix, request, context); + } + + public static void selectModule(String prefix, HttpServletRequest request, ServletContext context) { + ModuleConfig config = (ModuleConfig)context.getAttribute("org.apache.struts.action.MODULE" + prefix); + if (config != null) { + request.setAttribute("org.apache.struts.action.MODULE", config); + } else { + request.removeAttribute("org.apache.struts.action.MODULE"); + } + MessageResources resources = (MessageResources)context.getAttribute("org.apache.struts.action.MESSAGE" + prefix); + if (resources != null) { + request.setAttribute("org.apache.struts.action.MESSAGE", resources); + } else { + request.removeAttribute("org.apache.struts.action.MESSAGE"); + } + } + + public static void selectApplication(HttpServletRequest request, ServletContext context) { + selectModule(request, context); + } + + public static void selectModule(HttpServletRequest request, ServletContext context) { + String prefix = getModuleName(request, context); + selectModule(prefix, request, context); + } + + public static String getModuleName(HttpServletRequest request, ServletContext context) { + String matchPath = (String)request.getAttribute("javax.servlet.include.servlet_path"); + if (matchPath == null) + matchPath = request.getServletPath(); + return getModuleName(matchPath, context); + } + + public static String getModuleName(String matchPath, ServletContext context) { + if (log.isDebugEnabled()) + log.debug("Get module name for path " + matchPath); + String prefix = ""; + String[] prefixes = getModulePrefixes(context); + int lastSlash = 0; + while (prefix.equals("") && (lastSlash = matchPath.lastIndexOf("/")) > 0) { + matchPath = matchPath.substring(0, lastSlash); + for (int i = 0; i < prefixes.length; i++) { + if (matchPath.equals(prefixes[i])) { + prefix = prefixes[i]; + break; + } + } + } + if (log.isDebugEnabled()) + log.debug("Module name found: " + (prefix.equals("") ? "default" : prefix)); + return prefix; + } + + public static ModuleConfig getRequestModuleConfig(HttpServletRequest request) { + return (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE"); + } + + public static ModuleConfig getModuleConfig(HttpServletRequest request, ServletContext context) { + ModuleConfig moduleConfig = (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE"); + if (moduleConfig == null) + moduleConfig = (ModuleConfig)context.getAttribute("org.apache.struts.action.MODULE"); + return moduleConfig; + } + + public static ModuleConfig getModuleConfig(PageContext pageContext) { + return getModuleConfig((HttpServletRequest)pageContext.getRequest(), pageContext.getServletContext()); + } + + public static String[] getApplicationPrefixes(ServletContext context) { + return getModulePrefixes(context); + } + + public static synchronized String[] getModulePrefixes(ServletContext context) { + String[] prefixes = (String[])context.getAttribute("org.apache.struts.util.PREFIXES"); + if (prefixes != null) + return prefixes; + ArrayList list = new ArrayList(); + Enumeration names = context.getAttributeNames(); + while (names.hasMoreElements()) { + String name = names.nextElement(); + if (!name.startsWith("org.apache.struts.action.MODULE")) + continue; + String prefix = name.substring("org.apache.struts.action.MODULE".length()); + if (prefix.length() > 0) + list.add(prefix); + } + prefixes = list.toArray(new String[list.size()]); + context.setAttribute("org.apache.struts.util.PREFIXES", prefixes); + return prefixes; + } + + public static ActionMessages getActionMessages(PageContext pageContext, String paramName) throws JspException { + ActionMessages am = new ActionMessages(); + Object value = pageContext.findAttribute(paramName); + try { + if (value != null) + if (value instanceof String) { + am.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage((String)value)); + } else if (value instanceof String[]) { + String[] keys = (String[])value; + for (int i = 0; i < keys.length; i++) + am.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(keys[i])); + } else if (value instanceof ErrorMessages) { + String[] keys = ((ErrorMessages)value).getErrors(); + if (keys == null) + keys = new String[0]; + for (int i = 0; i < keys.length; i++) + am.add("org.apache.struts.action.GLOBAL_ERROR", (ActionMessage)new ActionError(keys[i])); + } else if (value instanceof ActionMessages) { + am = (ActionMessages)value; + } else { + throw new JspException(messages.getMessage("actionMessages.errors", value.getClass().getName())); + } + } catch (JspException e) { + throw e; + } catch (Exception e) {} + return am; + } + + public static ActionErrors getActionErrors(PageContext pageContext, String paramName) throws JspException { + ActionErrors errors = new ActionErrors(); + Object value = pageContext.findAttribute(paramName); + try { + if (value != null) + if (value instanceof String) { + errors.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError((String)value)); + } else if (value instanceof String[]) { + String[] keys = (String[])value; + for (int i = 0; i < keys.length; i++) + errors.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(keys[i])); + } else if (value instanceof ErrorMessages) { + String[] keys = ((ErrorMessages)value).getErrors(); + if (keys == null) + keys = new String[0]; + for (int i = 0; i < keys.length; i++) + errors.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(keys[i])); + } else if (value instanceof ActionErrors) { + errors = (ActionErrors)value; + } else { + throw new JspException(messages.getMessage("actionErrors.errors", value.getClass().getName())); + } + } catch (JspException e) { + throw e; + } catch (Exception e) { + log.debug(e, e); + } + return errors; + } + + public static String encodeURL(String url) { + try { + if (encode != null) + return (String)encode.invoke(null, new Object[] { url, "UTF-8" }); + } catch (IllegalAccessException e) { + log.debug("Could not find Java 1.4 encode method. Using deprecated version.", e); + } catch (InvocationTargetException e) { + log.debug("Could not find Java 1.4 encode method. Using deprecated version.", e); + } + return URLEncoder.encode(url); + } + + public static boolean isXhtml(PageContext pageContext) { + String xhtml = (String)pageContext.getAttribute("org.apache.struts.globals.XHTML", 1); + return "true".equalsIgnoreCase(xhtml); + } +} diff --git a/hrmsEjb/org/apache/struts/util/ResponseUtils.java b/hrmsEjb/org/apache/struts/util/ResponseUtils.java new file mode 100644 index 0000000..4e2eff8 --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/ResponseUtils.java @@ -0,0 +1,64 @@ +package org.apache.struts.util; + +import java.io.IOException; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyContent; + +public class ResponseUtils { + protected static MessageResources messages = MessageResources.getMessageResources("org.apache.struts.util.LocalStrings"); + + public static String filter(String value) { + if (value == null) + return null; + char[] content = new char[value.length()]; + value.getChars(0, value.length(), content, 0); + StringBuffer result = new StringBuffer(content.length + 50); + for (int i = 0; i < content.length; i++) { + switch (content[i]) { + case '<': + result.append("<"); + break; + case '>': + result.append(">"); + break; + case '&': + result.append("&"); + break; + case '"': + result.append("""); + break; + case '\'': + result.append("'"); + break; + default: + result.append(content[i]); + break; + } + } + return result.toString(); + } + + public static void write(PageContext pageContext, String text) throws JspException { + JspWriter writer = pageContext.getOut(); + try { + writer.print(text); + } catch (IOException e) { + RequestUtils.saveException(pageContext, e); + throw new JspException(messages.getMessage("write.io", e.toString())); + } + } + + public static void writePrevious(PageContext pageContext, String text) throws JspException { + JspWriter writer = pageContext.getOut(); + if (writer instanceof BodyContent) + writer = ((BodyContent)writer).getEnclosingWriter(); + try { + writer.print(text); + } catch (IOException e) { + RequestUtils.saveException(pageContext, e); + throw new JspException(messages.getMessage("write.io", e.toString())); + } + } +} diff --git a/hrmsEjb/org/apache/struts/util/ServletContextWriter.java b/hrmsEjb/org/apache/struts/util/ServletContextWriter.java new file mode 100644 index 0000000..41fb724 --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/ServletContextWriter.java @@ -0,0 +1,159 @@ +package org.apache.struts.util; + +import java.io.PrintWriter; +import java.io.StringWriter; +import javax.servlet.ServletContext; + +public class ServletContextWriter extends PrintWriter { + protected StringBuffer buffer; + + protected ServletContext context; + + protected boolean error; + + public ServletContextWriter(ServletContext context) { + super(new StringWriter()); + this.buffer = new StringBuffer(); + this.context = null; + this.error = false; + this.context = context; + } + + public boolean checkError() { + flush(); + return this.error; + } + + public void close() { + flush(); + } + + public void flush() { + if (this.buffer.length() > 0) { + this.context.log(this.buffer.toString()); + this.buffer.setLength(0); + } + } + + public void print(boolean b) { + write(String.valueOf(b)); + } + + public void print(char c) { + write(c); + } + + public void print(char[] c) { + for (int i = 0; i < c.length; i++) + write(c[i]); + } + + public void print(double d) { + write(String.valueOf(d)); + } + + public void print(float f) { + write(String.valueOf(f)); + } + + public void print(int i) { + write(String.valueOf(i)); + } + + public void print(long l) { + write(String.valueOf(l)); + } + + public void print(Object o) { + write(o.toString()); + } + + public void print(String s) { + int len = s.length(); + for (int i = 0; i < len; i++) + write(s.charAt(i)); + } + + public void println() { + flush(); + } + + public void println(boolean b) { + println(String.valueOf(b)); + } + + public void println(char c) { + write(c); + println(); + } + + public void println(char[] c) { + for (int i = 0; i < c.length; i++) + print(c[i]); + println(); + } + + public void println(double d) { + println(String.valueOf(d)); + } + + public void println(float f) { + println(String.valueOf(f)); + } + + public void println(int i) { + println(String.valueOf(i)); + } + + public void println(long l) { + println(String.valueOf(l)); + } + + public void println(Object o) { + println(o.toString()); + } + + public void println(String s) { + int len = s.length(); + for (int i = 0; i < len; i++) + print(s.charAt(i)); + println(); + } + + public void setError() { + this.error = true; + } + + public void write(char c) { + if (c == '\n') { + flush(); + } else if (c != '\r') { + this.buffer.append(c); + } + } + + public void write(int c) { + write((char)c); + } + + public void write(char[] buf) { + for (int i = 0; i < buf.length; i++) + write(buf[i]); + } + + public void write(char[] buf, int off, int len) { + for (int i = off; i < len; i++) + write(buf[i]); + } + + public void write(String s) { + int len = s.length(); + for (int i = 0; i < len; i++) + write(s.charAt(i)); + } + + public void write(String s, int off, int len) { + for (int i = off; i < len; i++) + write(s.charAt(i)); + } +} diff --git a/hrmsEjb/org/apache/struts/util/TokenProcessor.java b/hrmsEjb/org/apache/struts/util/TokenProcessor.java new file mode 100644 index 0000000..166193b --- /dev/null +++ b/hrmsEjb/org/apache/struts/util/TokenProcessor.java @@ -0,0 +1,75 @@ +package org.apache.struts.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +public class TokenProcessor { + private static TokenProcessor instance = new TokenProcessor(); + + public static TokenProcessor getInstance() { + return instance; + } + + public synchronized boolean isTokenValid(HttpServletRequest request) { + return isTokenValid(request, false); + } + + public synchronized boolean isTokenValid(HttpServletRequest request, boolean reset) { + HttpSession session = request.getSession(false); + if (session == null) + return false; + String saved = (String)session.getAttribute("org.apache.struts.action.TOKEN"); + if (saved == null) + return false; + if (reset) + resetToken(request); + String token = request.getParameter("org.apache.struts.taglib.html.TOKEN"); + if (token == null) + return false; + return saved.equals(token); + } + + public synchronized void resetToken(HttpServletRequest request) { + HttpSession session = request.getSession(false); + if (session == null) + return; + session.removeAttribute("org.apache.struts.action.TOKEN"); + } + + public synchronized void saveToken(HttpServletRequest request) { + HttpSession session = request.getSession(); + String token = generateToken(request); + if (token != null) + session.setAttribute("org.apache.struts.action.TOKEN", token); + } + + public String generateToken(HttpServletRequest request) { + HttpSession session = request.getSession(); + try { + byte[] id = session.getId().getBytes(); + byte[] now = (new Long(System.currentTimeMillis())).toString().getBytes(); + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(id); + md.update(now); + return toHex(md.digest()); + } catch (IllegalStateException e) { + return null; + } catch (NoSuchAlgorithmException e) { + return null; + } + } + + public String toHex(byte[] buffer) { + StringBuffer sb = new StringBuffer(); + String s = null; + for (int i = 0; i < buffer.length; i++) { + s = Integer.toHexString(buffer[i] & 0xFF); + if (s.length() < 2) + sb.append('0'); + sb.append(s); + } + return sb.toString(); + } +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/PSVIProvider.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/PSVIProvider.java new file mode 100644 index 0000000..30ca29b --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/PSVIProvider.java @@ -0,0 +1,12 @@ +package org.apache.xerces.impl.xs.psvi; + +import org.apache.xerces.xni.psvi.AttributePSVI; +import org.apache.xerces.xni.psvi.ElementPSVI; + +public interface PSVIProvider { + AttributePSVI getAttributePSVI(int paramInt); + + ElementPSVI getElementPSVI(); + + AttributePSVI getAttributePSVIByName(String paramString1, String paramString2); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/StringList.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/StringList.java new file mode 100644 index 0000000..3fb89fe --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/StringList.java @@ -0,0 +1,7 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface StringList { + int getLength(); + + String item(int paramInt); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAnnotation.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAnnotation.java new file mode 100644 index 0000000..600b2ff --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAnnotation.java @@ -0,0 +1,13 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSAnnotation extends XSObject { + public static final short W3C_DOM_ELEMENT = 1; + + public static final short SAX_CONTENTHANDLER = 2; + + public static final short W3C_DOM_DOCUMENT = 3; + + boolean writeAnnotation(Object paramObject, short paramShort); + + String getAnnotationString(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeDeclaration.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeDeclaration.java new file mode 100644 index 0000000..81830c9 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeDeclaration.java @@ -0,0 +1,15 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSAttributeDeclaration extends XSObject { + short getConstraintType(); + + short getScope(); + + String getConstraintValue(); + + XSAnnotation getAnnotation(); + + XSComplexTypeDefinition getEnclosingCTDefinition(); + + XSSimpleTypeDefinition getTypeDefinition(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeGroupDefinition.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeGroupDefinition.java new file mode 100644 index 0000000..d87376c --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSAttributeGroupDefinition.java @@ -0,0 +1,9 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSAttributeGroupDefinition extends XSObject { + XSAnnotation getAnnotation(); + + XSObjectList getAttributeUses(); + + XSWildcard getAttributeWildcard(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSComplexTypeDefinition.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSComplexTypeDefinition.java new file mode 100644 index 0000000..53a0e7d --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSComplexTypeDefinition.java @@ -0,0 +1,31 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSComplexTypeDefinition extends XSTypeDefinition { + public static final short CONTENTTYPE_EMPTY = 0; + + public static final short CONTENTTYPE_SIMPLE = 1; + + public static final short CONTENTTYPE_ELEMENT = 2; + + public static final short CONTENTTYPE_MIXED = 3; + + short getContentType(); + + short getDerivationMethod(); + + short getProhibitedSubstitutions(); + + boolean getAbstract(); + + boolean isProhibitedSubstitution(short paramShort); + + XSObjectList getAnnotations(); + + XSObjectList getAttributeUses(); + + XSParticle getParticle(); + + XSSimpleTypeDefinition getSimpleType(); + + XSWildcard getAttributeWildcard(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSElementDeclaration.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSElementDeclaration.java new file mode 100644 index 0000000..3dbe7fb --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSElementDeclaration.java @@ -0,0 +1,31 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSElementDeclaration extends XSTerm { + short getConstraintType(); + + short getDisallowedSubstitutions(); + + short getScope(); + + short getSubstitutionGroupExclusions(); + + boolean getAbstract(); + + boolean getNillable(); + + boolean isDisallowedSubstitution(short paramShort); + + boolean isSubstitutionGroupExclusion(short paramShort); + + String getConstraintValue(); + + XSAnnotation getAnnotation(); + + XSComplexTypeDefinition getEnclosingCTDefinition(); + + XSElementDeclaration getSubstitutionGroupAffiliation(); + + XSNamedMap getIdentityConstraints(); + + XSTypeDefinition getTypeDefinition(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModel.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModel.java new file mode 100644 index 0000000..fc3f393 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModel.java @@ -0,0 +1,25 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSModel { + StringList getNamespaces(); + + XSNamedMap getComponents(short paramShort); + + XSNamespaceItemList getNamespaceItems(); + + XSObjectList getAnnotations(); + + XSNamedMap getComponentsByNamespace(short paramShort, String paramString); + + XSAttributeDeclaration getAttributeDeclaration(String paramString1, String paramString2); + + XSAttributeGroupDefinition getAttributeGroup(String paramString1, String paramString2); + + XSElementDeclaration getElementDeclaration(String paramString1, String paramString2); + + XSModelGroupDefinition getModelGroupDefinition(String paramString1, String paramString2); + + XSNotationDeclaration getNotationDeclaration(String paramString1, String paramString2); + + XSTypeDefinition getTypeDefinition(String paramString1, String paramString2); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroup.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroup.java new file mode 100644 index 0000000..27694bb --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroup.java @@ -0,0 +1,15 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSModelGroup extends XSTerm { + public static final short COMPOSITOR_SEQUENCE = 1; + + public static final short COMPOSITOR_CHOICE = 2; + + public static final short COMPOSITOR_ALL = 3; + + short getCompositor(); + + XSAnnotation getAnnotation(); + + XSObjectList getParticles(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroupDefinition.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroupDefinition.java new file mode 100644 index 0000000..3d0fd6c --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSModelGroupDefinition.java @@ -0,0 +1,7 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSModelGroupDefinition extends XSObject { + XSAnnotation getAnnotation(); + + XSModelGroup getModelGroup(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamedMap.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamedMap.java new file mode 100644 index 0000000..58a379b --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamedMap.java @@ -0,0 +1,9 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSNamedMap { + int getLength(); + + XSObject item(int paramInt); + + XSObject itemByName(String paramString1, String paramString2); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItem.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItem.java new file mode 100644 index 0000000..f930cde --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItem.java @@ -0,0 +1,23 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSNamespaceItem { + String getSchemaNamespace(); + + StringList getDocumentLocations(); + + XSNamedMap getComponents(short paramShort); + + XSObjectList getAnnotations(); + + XSAttributeDeclaration getAttributeDeclaration(String paramString); + + XSAttributeGroupDefinition getAttributeGroup(String paramString); + + XSElementDeclaration getElementDeclaration(String paramString); + + XSModelGroupDefinition getModelGroupDefinition(String paramString); + + XSNotationDeclaration getNotationDeclaration(String paramString); + + XSTypeDefinition getTypeDefinition(String paramString); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItemList.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItemList.java new file mode 100644 index 0000000..390028b --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNamespaceItemList.java @@ -0,0 +1,7 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSNamespaceItemList { + int getLength(); + + XSNamespaceItem item(int paramInt); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNotationDeclaration.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNotationDeclaration.java new file mode 100644 index 0000000..6076084 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSNotationDeclaration.java @@ -0,0 +1,9 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSNotationDeclaration extends XSObject { + String getPublicId(); + + String getSystemId(); + + XSAnnotation getAnnotation(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObject.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObject.java new file mode 100644 index 0000000..4d8b789 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObject.java @@ -0,0 +1,11 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSObject { + short getType(); + + String getName(); + + String getNamespace(); + + XSNamespaceItem getNamespaceItem(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObjectList.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObjectList.java new file mode 100644 index 0000000..a9fe8a2 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSObjectList.java @@ -0,0 +1,7 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSObjectList { + int getLength(); + + XSObject item(int paramInt); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSParticle.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSParticle.java new file mode 100644 index 0000000..a035e8e --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSParticle.java @@ -0,0 +1,11 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSParticle extends XSObject { + int getMaxOccurs(); + + int getMinOccurs(); + + boolean getMaxOccursUnbounded(); + + XSTerm getTerm(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSSimpleTypeDefinition.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSSimpleTypeDefinition.java new file mode 100644 index 0000000..b501221 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSSimpleTypeDefinition.java @@ -0,0 +1,75 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSSimpleTypeDefinition extends XSTypeDefinition { + public static final short VARIETY_ABSENT = 0; + + public static final short VARIETY_ATOMIC = 1; + + public static final short VARIETY_LIST = 2; + + public static final short VARIETY_UNION = 3; + + public static final short FACET_NONE = 0; + + public static final short FACET_LENGTH = 1; + + public static final short FACET_MINLENGTH = 2; + + public static final short FACET_MAXLENGTH = 4; + + public static final short FACET_PATTERN = 8; + + public static final short FACET_WHITESPACE = 16; + + public static final short FACET_MAXINCLUSIVE = 32; + + public static final short FACET_MAXEXCLUSIVE = 64; + + public static final short FACET_MINEXCLUSIVE = 128; + + public static final short FACET_MININCLUSIVE = 256; + + public static final short FACET_TOTALDIGITS = 512; + + public static final short FACET_FRACTIONDIGITS = 1024; + + public static final short FACET_ENUMERATION = 2048; + + public static final short ORDERED_FALSE = 0; + + public static final short ORDERED_PARTIAL = 1; + + public static final short ORDERED_TOTAL = 2; + + short getDefinedFacets(); + + short getFixedFacets(); + + short getOrdered(); + + short getVariety(); + + boolean getBounded(); + + boolean getFinite(); + + boolean getNumeric(); + + boolean isDefinedFacet(short paramShort); + + boolean isFixedFacet(short paramShort); + + String getLexicalFacetValue(short paramShort); + + StringList getLexicalEnumeration(); + + StringList getLexicalPattern(); + + XSAnnotation getAnnotation(); + + XSObjectList getMemberTypes(); + + XSSimpleTypeDefinition getItemType(); + + XSSimpleTypeDefinition getPrimitiveType(); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTerm.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTerm.java new file mode 100644 index 0000000..2f52e41 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTerm.java @@ -0,0 +1,3 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSTerm extends XSObject {} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTypeDefinition.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTypeDefinition.java new file mode 100644 index 0000000..7fca9b4 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSTypeDefinition.java @@ -0,0 +1,21 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSTypeDefinition extends XSObject { + public static final short COMPLEX_TYPE = 13; + + public static final short SIMPLE_TYPE = 14; + + short getFinal(); + + short getTypeCategory(); + + boolean getAnonymous(); + + boolean isFinal(short paramShort); + + XSTypeDefinition getBaseType(); + + boolean derivedFromType(XSTypeDefinition paramXSTypeDefinition, short paramShort); + + boolean derivedFrom(String paramString1, String paramString2, short paramShort); +} diff --git a/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSWildcard.java b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSWildcard.java new file mode 100644 index 0000000..e09d99a --- /dev/null +++ b/hrmsEjb/org/apache/xerces/impl/xs/psvi/XSWildcard.java @@ -0,0 +1,23 @@ +package org.apache.xerces.impl.xs.psvi; + +public interface XSWildcard extends XSTerm { + public static final short NSCONSTRAINT_ANY = 1; + + public static final short NSCONSTRAINT_NOT = 2; + + public static final short NSCONSTRAINT_LIST = 3; + + public static final short PC_STRICT = 1; + + public static final short PC_SKIP = 2; + + public static final short PC_LAX = 3; + + short getConstraintType(); + + short getProcessContents(); + + StringList getNsConstraintList(); + + XSAnnotation getAnnotation(); +} diff --git a/hrmsEjb/org/apache/xerces/parsers/AbstractSAXParser.java b/hrmsEjb/org/apache/xerces/parsers/AbstractSAXParser.java new file mode 100644 index 0000000..d82f9c7 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/parsers/AbstractSAXParser.java @@ -0,0 +1,752 @@ +package org.apache.xerces.parsers; + +import java.io.IOException; +import java.util.Locale; +import org.apache.xerces.impl.xs.psvi.PSVIProvider; +import org.apache.xerces.util.EntityResolverWrapper; +import org.apache.xerces.util.ErrorHandlerWrapper; +import org.apache.xerces.util.SymbolHash; +import org.apache.xerces.xni.Augmentations; +import org.apache.xerces.xni.NamespaceContext; +import org.apache.xerces.xni.QName; +import org.apache.xerces.xni.XMLAttributes; +import org.apache.xerces.xni.XMLLocator; +import org.apache.xerces.xni.XMLResourceIdentifier; +import org.apache.xerces.xni.XMLString; +import org.apache.xerces.xni.XNIException; +import org.apache.xerces.xni.parser.XMLConfigurationException; +import org.apache.xerces.xni.parser.XMLEntityResolver; +import org.apache.xerces.xni.parser.XMLErrorHandler; +import org.apache.xerces.xni.parser.XMLInputSource; +import org.apache.xerces.xni.parser.XMLParseException; +import org.apache.xerces.xni.parser.XMLParserConfiguration; +import org.apache.xerces.xni.psvi.AttributePSVI; +import org.apache.xerces.xni.psvi.ElementPSVI; +import org.xml.sax.AttributeList; +import org.xml.sax.Attributes; +import org.xml.sax.ContentHandler; +import org.xml.sax.DTDHandler; +import org.xml.sax.DocumentHandler; +import org.xml.sax.EntityResolver; +import org.xml.sax.ErrorHandler; +import org.xml.sax.InputSource; +import org.xml.sax.Locator; +import org.xml.sax.Parser; +import org.xml.sax.SAXException; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; +import org.xml.sax.SAXParseException; +import org.xml.sax.XMLReader; +import org.xml.sax.ext.DeclHandler; +import org.xml.sax.ext.LexicalHandler; +import org.xml.sax.helpers.LocatorImpl; + +public abstract class AbstractSAXParser extends AbstractXMLDocumentParser implements PSVIProvider, Parser, XMLReader { + protected static final String NAMESPACES = "http://xml.org/sax/features/namespaces"; + + protected static final String NAMESPACE_PREFIXES = "http://xml.org/sax/features/namespace-prefixes"; + + protected static final String STRING_INTERNING = "http://xml.org/sax/features/string-interning"; + + private static final String[] RECOGNIZED_FEATURES = new String[] { "http://xml.org/sax/features/namespaces", "http://xml.org/sax/features/namespace-prefixes", "http://xml.org/sax/features/string-interning" }; + + protected static final String LEXICAL_HANDLER = "http://xml.org/sax/properties/lexical-handler"; + + protected static final String DECLARATION_HANDLER = "http://xml.org/sax/properties/declaration-handler"; + + protected static final String DOM_NODE = "http://xml.org/sax/properties/dom-node"; + + private static final String[] RECOGNIZED_PROPERTIES = new String[] { "http://xml.org/sax/properties/lexical-handler", "http://xml.org/sax/properties/declaration-handler", "http://xml.org/sax/properties/dom-node" }; + + protected boolean fNamespaces; + + protected boolean fNamespacePrefixes = false; + + protected ContentHandler fContentHandler; + + protected DocumentHandler fDocumentHandler; + + protected NamespaceContext fNamespaceContext; + + protected DTDHandler fDTDHandler; + + protected DeclHandler fDeclHandler; + + protected LexicalHandler fLexicalHandler; + + protected QName fQName = new QName(); + + protected boolean fParseInProgress = false; + + private final AttributesProxy fAttributesProxy = new AttributesProxy(); + + private Augmentations fAugmentations = null; + + private static final int BUFFER_SIZE = 20; + + private char[] fCharBuffer = new char[20]; + + protected SymbolHash fDeclaredAttrs = null; + + protected AbstractSAXParser(XMLParserConfiguration config) { + super(config); + config.addRecognizedFeatures(RECOGNIZED_FEATURES); + config.addRecognizedProperties(RECOGNIZED_PROPERTIES); + } + + public void startDocument(XMLLocator locator, String encoding, NamespaceContext namespaceContext, Augmentations augs) throws XNIException { + this.fNamespaceContext = namespaceContext; + try { + if (this.fDocumentHandler != null) { + if (locator != null) + this.fDocumentHandler.setDocumentLocator(new LocatorProxy(locator)); + this.fDocumentHandler.startDocument(); + } + if (this.fContentHandler != null) { + if (locator != null) + this.fContentHandler.setDocumentLocator(new LocatorProxy(locator)); + this.fContentHandler.startDocument(); + } + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void doctypeDecl(String rootElement, String publicId, String systemId, Augmentations augs) throws XNIException { + this.fInDTD = true; + try { + if (this.fLexicalHandler != null) + this.fLexicalHandler.startDTD(rootElement, publicId, systemId); + } catch (SAXException e) { + throw new XNIException(e); + } + if (this.fDeclHandler != null) + this.fDeclaredAttrs = new SymbolHash(); + } + + public void startGeneralEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs) throws XNIException { + startParameterEntity(name, identifier, encoding, augs); + } + + public void endGeneralEntity(String name, Augmentations augs) throws XNIException { + endParameterEntity(name, augs); + } + + public void startElement(QName element, XMLAttributes attributes, Augmentations augs) throws XNIException { + try { + if (this.fDocumentHandler != null) { + this.fAttributesProxy.setAttributes(attributes); + this.fDocumentHandler.startElement(element.rawname, this.fAttributesProxy); + } + if (this.fContentHandler != null) { + startNamespaceMapping(); + this.fAugmentations = augs; + int len = attributes.getLength(); + for (int i = len - 1; i >= 0; i--) { + attributes.getName(i, this.fQName); + if ((this.fQName.prefix != null && this.fQName.prefix.equals("xmlns")) || this.fQName.rawname.equals("xmlns")) { + if (!this.fNamespacePrefixes) + attributes.removeAttributeAt(i); + if (this.fNamespaces && this.fNamespacePrefixes) { + this.fQName.prefix = ""; + this.fQName.uri = ""; + this.fQName.localpart = ""; + attributes.setName(i, this.fQName); + } + } + } + String uri = (element.uri != null) ? element.uri : ""; + String localpart = this.fNamespaces ? element.localpart : ""; + this.fAttributesProxy.setAttributes(attributes); + this.fContentHandler.startElement(uri, localpart, element.rawname, this.fAttributesProxy); + } + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void characters(XMLString text, Augmentations augs) throws XNIException { + if (text.length == 0) + return; + try { + if (this.fDocumentHandler != null) + this.fDocumentHandler.characters(text.ch, text.offset, text.length); + if (this.fContentHandler != null) + this.fContentHandler.characters(text.ch, text.offset, text.length); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void ignorableWhitespace(XMLString text, Augmentations augs) throws XNIException { + try { + if (this.fDocumentHandler != null) + this.fDocumentHandler.ignorableWhitespace(text.ch, text.offset, text.length); + if (this.fContentHandler != null) + this.fContentHandler.ignorableWhitespace(text.ch, text.offset, text.length); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void endElement(QName element, Augmentations augs) throws XNIException { + try { + if (this.fDocumentHandler != null) + this.fDocumentHandler.endElement(element.rawname); + if (this.fContentHandler != null) { + this.fAugmentations = augs; + String uri = (element.uri != null) ? element.uri : ""; + String localpart = this.fNamespaces ? element.localpart : ""; + this.fContentHandler.endElement(uri, localpart, element.rawname); + endNamespaceMapping(); + } + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void startCDATA(Augmentations augs) throws XNIException { + try { + if (this.fLexicalHandler != null) + this.fLexicalHandler.startCDATA(); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void endCDATA(Augmentations augs) throws XNIException { + try { + if (this.fLexicalHandler != null) + this.fLexicalHandler.endCDATA(); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void comment(XMLString text, Augmentations augs) throws XNIException { + try { + if (this.fLexicalHandler != null) + this.fLexicalHandler.comment(text.ch, 0, text.length); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void processingInstruction(String target, XMLString data, Augmentations augs) throws XNIException { + try { + if (this.fDocumentHandler != null) + this.fDocumentHandler.processingInstruction(target, data.toString()); + if (this.fContentHandler != null) + this.fContentHandler.processingInstruction(target, data.toString()); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void endDocument(Augmentations augs) throws XNIException { + try { + if (this.fDocumentHandler != null) + this.fDocumentHandler.endDocument(); + if (this.fContentHandler != null) + this.fContentHandler.endDocument(); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void startExternalSubset(XMLResourceIdentifier identifier, Augmentations augs) throws XNIException { + startParameterEntity("[dtd]", (XMLResourceIdentifier)null, (String)null, augs); + } + + public void endExternalSubset(Augmentations augs) throws XNIException { + endParameterEntity("[dtd]", augs); + } + + public void startParameterEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs) throws XNIException { + try { + if (this.fLexicalHandler != null) + this.fLexicalHandler.startEntity(name); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void endParameterEntity(String name, Augmentations augs) throws XNIException { + try { + if (this.fLexicalHandler != null) + this.fLexicalHandler.endEntity(name); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void elementDecl(String name, String contentModel, Augmentations augs) throws XNIException { + try { + if (this.fDeclHandler != null) + this.fDeclHandler.elementDecl(name, contentModel); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void attributeDecl(String elementName, String attributeName, String type, String[] enumeration, String defaultType, XMLString defaultValue, XMLString nonNormalizedDefaultValue, Augmentations augs) throws XNIException { + try { + if (this.fDeclHandler != null) { + String elemAttr = elementName + "<" + attributeName; + if (this.fDeclaredAttrs.get(elemAttr) != null) + return; + this.fDeclaredAttrs.put(elemAttr, Boolean.TRUE); + if (type.equals("NOTATION") || type.equals("ENUMERATION")) { + StringBuffer str = new StringBuffer(); + if (type.equals("NOTATION")) { + str.append(type); + str.append(" ("); + } else { + str.append("("); + } + for (int i = 0; i < enumeration.length; i++) { + str.append(enumeration[i]); + if (i < enumeration.length - 1) + str.append('|'); + } + str.append(')'); + type = str.toString(); + } + String value = (defaultValue == null) ? null : defaultValue.toString(); + this.fDeclHandler.attributeDecl(elementName, attributeName, type, defaultType, value); + } + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void internalEntityDecl(String name, XMLString text, XMLString nonNormalizedText, Augmentations augs) throws XNIException { + try { + if (this.fDeclHandler != null) + this.fDeclHandler.internalEntityDecl(name, text.toString()); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void externalEntityDecl(String name, XMLResourceIdentifier identifier, Augmentations augs) throws XNIException { + String publicId = identifier.getPublicId(); + String literalSystemId = identifier.getLiteralSystemId(); + try { + if (this.fDeclHandler != null) + this.fDeclHandler.externalEntityDecl(name, publicId, literalSystemId); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void unparsedEntityDecl(String name, XMLResourceIdentifier identifier, String notation, Augmentations augs) throws XNIException { + String publicId = identifier.getPublicId(); + String expandedSystemId = identifier.getExpandedSystemId(); + try { + if (this.fDTDHandler != null) + this.fDTDHandler.unparsedEntityDecl(name, publicId, expandedSystemId, notation); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void notationDecl(String name, XMLResourceIdentifier identifier, Augmentations augs) throws XNIException { + String publicId = identifier.getPublicId(); + String expandedSystemId = identifier.getExpandedSystemId(); + try { + if (this.fDTDHandler != null) + this.fDTDHandler.notationDecl(name, publicId, expandedSystemId); + } catch (SAXException e) { + throw new XNIException(e); + } + } + + public void endDTD(Augmentations augs) throws XNIException { + this.fInDTD = false; + try { + if (this.fLexicalHandler != null) + this.fLexicalHandler.endDTD(); + } catch (SAXException e) { + throw new XNIException(e); + } + if (this.fDeclaredAttrs != null) + this.fDeclaredAttrs.clear(); + } + + public void parse(String systemId) throws SAXException, IOException { + XMLInputSource source = new XMLInputSource(null, systemId, null); + try { + parse(source); + } catch (XMLParseException e) { + Exception ex = e.getException(); + if (ex == null) { + LocatorImpl locatorImpl = new LocatorImpl(); + locatorImpl.setPublicId(e.getPublicId()); + locatorImpl.setSystemId(e.getExpandedSystemId()); + locatorImpl.setLineNumber(e.getLineNumber()); + locatorImpl.setColumnNumber(e.getColumnNumber()); + throw new SAXParseException(e.getMessage(), locatorImpl); + } + if (ex instanceof SAXException) + throw (SAXException)ex; + if (ex instanceof IOException) + throw (IOException)ex; + throw new SAXException(ex); + } catch (XNIException e) { + Exception ex = e.getException(); + if (ex == null) + throw new SAXException(e.getMessage()); + if (ex instanceof SAXException) + throw (SAXException)ex; + if (ex instanceof IOException) + throw (IOException)ex; + throw new SAXException(ex); + } + } + + public void parse(InputSource inputSource) throws SAXException, IOException { + try { + XMLInputSource xmlInputSource = new XMLInputSource(inputSource.getPublicId(), inputSource.getSystemId(), null); + xmlInputSource.setByteStream(inputSource.getByteStream()); + xmlInputSource.setCharacterStream(inputSource.getCharacterStream()); + xmlInputSource.setEncoding(inputSource.getEncoding()); + parse(xmlInputSource); + } catch (XMLParseException e) { + Exception ex = e.getException(); + if (ex == null) { + LocatorImpl locatorImpl = new LocatorImpl(); + locatorImpl.setPublicId(e.getPublicId()); + locatorImpl.setSystemId(e.getExpandedSystemId()); + locatorImpl.setLineNumber(e.getLineNumber()); + locatorImpl.setColumnNumber(e.getColumnNumber()); + throw new SAXParseException(e.getMessage(), locatorImpl); + } + if (ex instanceof SAXException) + throw (SAXException)ex; + if (ex instanceof IOException) + throw (IOException)ex; + throw new SAXException(ex); + } catch (XNIException e) { + Exception ex = e.getException(); + if (ex == null) + throw new SAXException(e.getMessage()); + if (ex instanceof SAXException) + throw (SAXException)ex; + if (ex instanceof IOException) + throw (IOException)ex; + throw new SAXException(ex); + } + } + + public void setEntityResolver(EntityResolver resolver) { + if (resolver == null) + throw new NullPointerException(); + try { + this.fConfiguration.setProperty("http://apache.org/xml/properties/internal/entity-resolver", new EntityResolverWrapper(resolver)); + } catch (XMLConfigurationException e) {} + } + + public EntityResolver getEntityResolver() { + EntityResolver entityResolver = null; + try { + XMLEntityResolver xmlEntityResolver = (XMLEntityResolver)this.fConfiguration.getProperty("http://apache.org/xml/properties/internal/entity-resolver"); + if (xmlEntityResolver != null && xmlEntityResolver instanceof EntityResolverWrapper) + entityResolver = ((EntityResolverWrapper)xmlEntityResolver).getEntityResolver(); + } catch (XMLConfigurationException e) {} + return entityResolver; + } + + public void setErrorHandler(ErrorHandler errorHandler) { + if (errorHandler == null) + throw new NullPointerException(); + try { + this.fConfiguration.setProperty("http://apache.org/xml/properties/internal/error-handler", new ErrorHandlerWrapper(errorHandler)); + } catch (XMLConfigurationException e) {} + } + + public ErrorHandler getErrorHandler() { + ErrorHandler errorHandler = null; + try { + XMLErrorHandler xmlErrorHandler = (XMLErrorHandler)this.fConfiguration.getProperty("http://apache.org/xml/properties/internal/error-handler"); + if (xmlErrorHandler != null && xmlErrorHandler instanceof ErrorHandlerWrapper) + errorHandler = ((ErrorHandlerWrapper)xmlErrorHandler).getErrorHandler(); + } catch (XMLConfigurationException e) {} + return errorHandler; + } + + public void setLocale(Locale locale) throws SAXException { + this.fConfiguration.setLocale(locale); + } + + public void setDTDHandler(DTDHandler dtdHandler) { + if (dtdHandler == null) + throw new NullPointerException(); + this.fDTDHandler = dtdHandler; + } + + public void setDocumentHandler(DocumentHandler documentHandler) { + this.fDocumentHandler = documentHandler; + } + + public void setContentHandler(ContentHandler contentHandler) { + if (contentHandler == null) + throw new NullPointerException(); + this.fContentHandler = contentHandler; + } + + public ContentHandler getContentHandler() { + return this.fContentHandler; + } + + public DTDHandler getDTDHandler() { + return this.fDTDHandler; + } + + public void setFeature(String featureId, boolean state) throws SAXNotRecognizedException, SAXNotSupportedException { + try { + if (featureId.startsWith("http://xml.org/sax/features/")) { + String feature = featureId.substring("http://xml.org/sax/features/".length()); + if (feature.equals("namespaces")) { + this.fConfiguration.setFeature(featureId, state); + this.fNamespaces = state; + return; + } + if (feature.equals("namespace-prefixes")) { + this.fConfiguration.setFeature(featureId, state); + this.fNamespacePrefixes = state; + return; + } + if (feature.equals("string-interning")) { + if (!state) + throw new SAXNotSupportedException("PAR018 " + state + " state for feature \"" + featureId + "\" is not supported.\n" + state + '\t' + featureId); + return; + } + } + this.fConfiguration.setFeature(featureId, state); + } catch (XMLConfigurationException e) { + String message = e.getMessage(); + if (e.getType() == 0) + throw new SAXNotRecognizedException(message); + throw new SAXNotSupportedException(message); + } + } + + public boolean getFeature(String featureId) throws SAXNotRecognizedException, SAXNotSupportedException { + try { + if (featureId.startsWith("http://xml.org/sax/features/")) { + String feature = featureId.substring("http://xml.org/sax/features/".length()); + if (feature.equals("namespace-prefixes")) { + boolean state = this.fConfiguration.getFeature(featureId); + return state; + } + if (feature.equals("string-interning")) + return true; + } + return this.fConfiguration.getFeature(featureId); + } catch (XMLConfigurationException e) { + String message = e.getMessage(); + if (e.getType() == 0) + throw new SAXNotRecognizedException(message); + throw new SAXNotSupportedException(message); + } + } + + public void setProperty(String propertyId, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { + try { + if (propertyId.startsWith("http://xml.org/sax/properties/")) { + String property = propertyId.substring("http://xml.org/sax/properties/".length()); + if (property.equals("lexical-handler")) { + try { + setLexicalHandler((LexicalHandler)value); + } catch (ClassCastException e) { + throw new SAXNotSupportedException("PAR012 For propertyID \"" + propertyId + "\", the value \"" + value + "\" cannot be cast to LexicalHandler." + '\n' + propertyId + '\t' + value + "\tLexicalHandler"); + } + return; + } + if (property.equals("declaration-handler")) { + try { + setDeclHandler((DeclHandler)value); + } catch (ClassCastException e) { + throw new SAXNotSupportedException("PAR012 For propertyID \"" + propertyId + "\", the value \"" + value + "\" cannot be cast to DeclHandler." + '\n' + propertyId + '\t' + value + "\tDeclHandler"); + } + return; + } + if (property.equals("dom-node")) + throw new SAXNotSupportedException("PAR013 Property \"" + propertyId + "\" is read only." + '\n' + propertyId); + } + this.fConfiguration.setProperty(propertyId, value); + } catch (XMLConfigurationException e) { + String message = e.getMessage(); + if (e.getType() == 0) + throw new SAXNotRecognizedException(message); + throw new SAXNotSupportedException(message); + } + } + + public Object getProperty(String propertyId) throws SAXNotRecognizedException, SAXNotSupportedException { + try { + if (propertyId.startsWith("http://xml.org/sax/properties/")) { + String property = propertyId.substring("http://xml.org/sax/properties/".length()); + if (property.equals("lexical-handler")) + return getLexicalHandler(); + if (property.equals("declaration-handler")) + return getDeclHandler(); + if (property.equals("dom-node")) + throw new SAXNotSupportedException("PAR014 Cannot getProperty(\"" + propertyId + "\". No DOM Tree exists.\n" + propertyId); + } + return this.fConfiguration.getProperty(propertyId); + } catch (XMLConfigurationException e) { + String message = e.getMessage(); + if (e.getType() == 0) + throw new SAXNotRecognizedException(message); + throw new SAXNotSupportedException(message); + } + } + + protected void setDeclHandler(DeclHandler handler) throws SAXNotRecognizedException, SAXNotSupportedException { + if (this.fParseInProgress) + throw new SAXNotSupportedException("PAR011 Feature: http://xml.org/sax/properties/declaration-handler is not supported during parse.\nhttp://xml.org/sax/properties/declaration-handler"); + this.fDeclHandler = handler; + } + + protected DeclHandler getDeclHandler() throws SAXNotRecognizedException, SAXNotSupportedException { + return this.fDeclHandler; + } + + protected void setLexicalHandler(LexicalHandler handler) throws SAXNotRecognizedException, SAXNotSupportedException { + if (this.fParseInProgress) + throw new SAXNotSupportedException("PAR011 Feature: http://xml.org/sax/properties/lexical-handler is not supported during parse.\nhttp://xml.org/sax/properties/lexical-handler"); + this.fLexicalHandler = handler; + } + + protected LexicalHandler getLexicalHandler() throws SAXNotRecognizedException, SAXNotSupportedException { + return this.fLexicalHandler; + } + + protected final void startNamespaceMapping() throws SAXException { + int count = this.fNamespaceContext.getDeclaredPrefixCount(); + if (count > 0) { + String prefix = null; + String uri = null; + for (int i = 0; i < count; i++) { + prefix = this.fNamespaceContext.getDeclaredPrefixAt(i); + uri = this.fNamespaceContext.getURI(prefix); + this.fContentHandler.startPrefixMapping(prefix, (uri == null) ? "" : uri); + } + } + } + + protected final void endNamespaceMapping() throws SAXException { + int count = this.fNamespaceContext.getDeclaredPrefixCount(); + if (count > 0) + for (int i = 0; i < count; i++) + this.fContentHandler.endPrefixMapping(this.fNamespaceContext.getDeclaredPrefixAt(i)); + } + + public void reset() throws XNIException { + super.reset(); + this.fInDTD = false; + this.fNamespaces = this.fConfiguration.getFeature("http://xml.org/sax/features/namespaces"); + this.fNamespacePrefixes = this.fConfiguration.getFeature("http://xml.org/sax/features/namespace-prefixes"); + this.fAugmentations = null; + this.fDeclaredAttrs = null; + } + + protected static class LocatorProxy implements Locator { + protected XMLLocator fLocator; + + public LocatorProxy(XMLLocator locator) { + this.fLocator = locator; + } + + public String getPublicId() { + return this.fLocator.getPublicId(); + } + + public String getSystemId() { + return this.fLocator.getExpandedSystemId(); + } + + public int getLineNumber() { + return this.fLocator.getLineNumber(); + } + + public int getColumnNumber() { + return this.fLocator.getColumnNumber(); + } + } + + protected static final class AttributesProxy implements AttributeList, Attributes { + protected XMLAttributes fAttributes; + + public void setAttributes(XMLAttributes attributes) { + this.fAttributes = attributes; + } + + public int getLength() { + return this.fAttributes.getLength(); + } + + public String getName(int i) { + return this.fAttributes.getQName(i); + } + + public String getQName(int index) { + return this.fAttributes.getQName(index); + } + + public String getURI(int index) { + String uri = this.fAttributes.getURI(index); + return (uri != null) ? uri : ""; + } + + public String getLocalName(int index) { + return this.fAttributes.getLocalName(index); + } + + public String getType(int i) { + return this.fAttributes.getType(i); + } + + public String getType(String name) { + return this.fAttributes.getType(name); + } + + public String getType(String uri, String localName) { + return uri.equals("") ? this.fAttributes.getType(null, localName) : this.fAttributes.getType(uri, localName); + } + + public String getValue(int i) { + return this.fAttributes.getValue(i); + } + + public String getValue(String name) { + return this.fAttributes.getValue(name); + } + + public String getValue(String uri, String localName) { + return uri.equals("") ? this.fAttributes.getValue(null, localName) : this.fAttributes.getValue(uri, localName); + } + + public int getIndex(String qName) { + return this.fAttributes.getIndex(qName); + } + + public int getIndex(String uri, String localPart) { + return uri.equals("") ? this.fAttributes.getIndex(null, localPart) : this.fAttributes.getIndex(uri, localPart); + } + } + + public ElementPSVI getElementPSVI() { + return (this.fAugmentations != null) ? (ElementPSVI)this.fAugmentations.getItem("ELEMENT_PSVI") : null; + } + + public AttributePSVI getAttributePSVI(int index) { + return (AttributePSVI)this.fAttributesProxy.fAttributes.getAugmentations(index).getItem("ATTRIBUTE_PSVI"); + } + + public AttributePSVI getAttributePSVIByName(String uri, String localname) { + return (AttributePSVI)this.fAttributesProxy.fAttributes.getAugmentations(uri, localname).getItem("ATTRIBUTE_PSVI"); + } +} diff --git a/hrmsEjb/org/apache/xerces/parsers/AbstractXMLDocumentParser.java b/hrmsEjb/org/apache/xerces/parsers/AbstractXMLDocumentParser.java new file mode 100644 index 0000000..85577d0 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/parsers/AbstractXMLDocumentParser.java @@ -0,0 +1,156 @@ +package org.apache.xerces.parsers; + +import org.apache.xerces.xni.Augmentations; +import org.apache.xerces.xni.NamespaceContext; +import org.apache.xerces.xni.QName; +import org.apache.xerces.xni.XMLAttributes; +import org.apache.xerces.xni.XMLDTDContentModelHandler; +import org.apache.xerces.xni.XMLDTDHandler; +import org.apache.xerces.xni.XMLDocumentHandler; +import org.apache.xerces.xni.XMLLocator; +import org.apache.xerces.xni.XMLResourceIdentifier; +import org.apache.xerces.xni.XMLString; +import org.apache.xerces.xni.XNIException; +import org.apache.xerces.xni.parser.XMLDTDContentModelSource; +import org.apache.xerces.xni.parser.XMLDTDSource; +import org.apache.xerces.xni.parser.XMLDocumentSource; +import org.apache.xerces.xni.parser.XMLParserConfiguration; + +public abstract class AbstractXMLDocumentParser extends XMLParser implements XMLDocumentHandler, XMLDTDHandler, XMLDTDContentModelHandler { + protected boolean fInDTD; + + protected XMLDocumentSource fDocumentSource; + + protected XMLDTDSource fDTDSource; + + protected XMLDTDContentModelSource fDTDContentModelSource; + + protected AbstractXMLDocumentParser(XMLParserConfiguration config) { + super(config); + config.setDocumentHandler(this); + config.setDTDHandler(this); + config.setDTDContentModelHandler(this); + } + + public void startDocument(XMLLocator locator, String encoding, NamespaceContext namespaceContext, Augmentations augs) throws XNIException {} + + public void xmlDecl(String version, String encoding, String standalone, Augmentations augs) throws XNIException {} + + public void doctypeDecl(String rootElement, String publicId, String systemId, Augmentations augs) throws XNIException {} + + public void startElement(QName element, XMLAttributes attributes, Augmentations augs) throws XNIException {} + + public void emptyElement(QName element, XMLAttributes attributes, Augmentations augs) throws XNIException { + startElement(element, attributes, augs); + endElement(element, augs); + } + + public void characters(XMLString text, Augmentations augs) throws XNIException {} + + public void ignorableWhitespace(XMLString text, Augmentations augs) throws XNIException {} + + public void endElement(QName element, Augmentations augs) throws XNIException {} + + public void startCDATA(Augmentations augs) throws XNIException {} + + public void endCDATA(Augmentations augs) throws XNIException {} + + public void endDocument(Augmentations augs) throws XNIException {} + + public void startGeneralEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs) throws XNIException {} + + public void textDecl(String version, String encoding, Augmentations augs) throws XNIException {} + + public void endGeneralEntity(String name, Augmentations augs) throws XNIException {} + + public void comment(XMLString text, Augmentations augs) throws XNIException {} + + public void processingInstruction(String target, XMLString data, Augmentations augs) throws XNIException {} + + public void setDocumentSource(XMLDocumentSource source) { + this.fDocumentSource = source; + } + + public XMLDocumentSource getDocumentSource() { + return this.fDocumentSource; + } + + public void startDTD(XMLLocator locator, Augmentations augs) throws XNIException { + this.fInDTD = true; + } + + public void startExternalSubset(XMLResourceIdentifier identifier, Augmentations augmentations) throws XNIException {} + + public void endExternalSubset(Augmentations augmentations) throws XNIException {} + + public void startParameterEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs) throws XNIException {} + + public void endParameterEntity(String name, Augmentations augs) throws XNIException {} + + public void ignoredCharacters(XMLString text, Augmentations augs) throws XNIException {} + + public void elementDecl(String name, String contentModel, Augmentations augs) throws XNIException {} + + public void startAttlist(String elementName, Augmentations augs) throws XNIException {} + + public void attributeDecl(String elementName, String attributeName, String type, String[] enumeration, String defaultType, XMLString defaultValue, XMLString nonNormalizedDefaultValue, Augmentations augs) throws XNIException {} + + public void endAttlist(Augmentations augs) throws XNIException {} + + public void internalEntityDecl(String name, XMLString text, XMLString nonNormalizedText, Augmentations augs) throws XNIException {} + + public void externalEntityDecl(String name, XMLResourceIdentifier identifier, Augmentations augs) throws XNIException {} + + public void unparsedEntityDecl(String name, XMLResourceIdentifier identifier, String notation, Augmentations augs) throws XNIException {} + + public void notationDecl(String name, XMLResourceIdentifier identifier, Augmentations augs) throws XNIException {} + + public void startConditional(short type, Augmentations augs) throws XNIException {} + + public void endConditional(Augmentations augs) throws XNIException {} + + public void endDTD(Augmentations augs) throws XNIException { + this.fInDTD = false; + } + + public void setDTDSource(XMLDTDSource source) { + this.fDTDSource = source; + } + + public XMLDTDSource getDTDSource() { + return this.fDTDSource; + } + + public void startContentModel(String elementName, Augmentations augs) throws XNIException {} + + public void any(Augmentations augs) throws XNIException {} + + public void empty(Augmentations augs) throws XNIException {} + + public void startGroup(Augmentations augs) throws XNIException {} + + public void pcdata(Augmentations augs) throws XNIException {} + + public void element(String elementName, Augmentations augs) throws XNIException {} + + public void separator(short separator, Augmentations augs) throws XNIException {} + + public void occurrence(short occurrence, Augmentations augs) throws XNIException {} + + public void endGroup(Augmentations augs) throws XNIException {} + + public void endContentModel(Augmentations augs) throws XNIException {} + + public void setDTDContentModelSource(XMLDTDContentModelSource source) { + this.fDTDContentModelSource = source; + } + + public XMLDTDContentModelSource getDTDContentModelSource() { + return this.fDTDContentModelSource; + } + + protected void reset() throws XNIException { + super.reset(); + this.fInDTD = false; + } +} diff --git a/hrmsEjb/org/apache/xerces/parsers/ObjectFactory.java b/hrmsEjb/org/apache/xerces/parsers/ObjectFactory.java new file mode 100644 index 0000000..5b2a1b4 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/parsers/ObjectFactory.java @@ -0,0 +1,189 @@ +package org.apache.xerces.parsers; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.util.Properties; + +class ObjectFactory { + private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties"; + + private static final boolean DEBUG = false; + + private static Properties fXercesProperties = null; + + private static long fLastModified = -1L; + + static Object createObject(String factoryId, String fallbackClassName) throws ConfigurationError { + return createObject(factoryId, null, fallbackClassName); + } + + public static Object createObject(String factoryId, String propertiesFilename, String fallbackClassName) throws ConfigurationError { + debugPrintln("debug is on"); + SecuritySupport ss = SecuritySupport.getInstance(); + ClassLoader cl = findClassLoader(); + try { + String systemProp = ss.getSystemProperty(factoryId); + if (systemProp != null) { + debugPrintln("found system property, value=" + systemProp); + return newInstance(systemProp, cl, true); + } + } catch (SecurityException se) {} + String factoryClassName = null; + if (propertiesFilename == null) { + String javah = ss.getSystemProperty("java.home"); + propertiesFilename = javah + File.separator + "lib" + File.separator + "xerces.properties"; + File propertiesFile = new File(propertiesFilename); + boolean propertiesFileExists = ss.getFileExists(propertiesFile); + synchronized (ObjectFactory.class) { + boolean loadProperties = false; + if (fLastModified >= 0L) { + if (propertiesFileExists && fLastModified < (fLastModified = ss.getLastModified(propertiesFile))) { + loadProperties = true; + } else if (!propertiesFileExists) { + fLastModified = -1L; + fXercesProperties = null; + } + } else if (propertiesFileExists) { + loadProperties = true; + fLastModified = ss.getLastModified(propertiesFile); + } + if (loadProperties) + try { + fXercesProperties = new Properties(); + FileInputStream fis = ss.getFileInputStream(propertiesFile); + fXercesProperties.load(fis); + fis.close(); + } catch (Exception x) { + fXercesProperties = null; + fLastModified = -1L; + } + } + if (fXercesProperties != null) + factoryClassName = fXercesProperties.getProperty(factoryId); + } else { + try { + FileInputStream fis = ss.getFileInputStream(new File(propertiesFilename)); + Properties props = new Properties(); + props.load(fis); + fis.close(); + factoryClassName = props.getProperty(factoryId); + } catch (Exception x) {} + } + if (factoryClassName != null) { + debugPrintln("found in " + propertiesFilename + ", value=" + factoryClassName); + return newInstance(factoryClassName, cl, true); + } + Object provider = findJarServiceProvider(factoryId); + if (provider != null) + return provider; + if (fallbackClassName == null) + throw new ConfigurationError("Provider for " + factoryId + " cannot be found", null); + debugPrintln("using fallback, value=" + fallbackClassName); + return newInstance(fallbackClassName, cl, true); + } + + private static void debugPrintln(String msg) {} + + static ClassLoader findClassLoader() throws ConfigurationError { + SecuritySupport ss = SecuritySupport.getInstance(); + ClassLoader cl = ss.getContextClassLoader(); + if (cl == null) + cl = ObjectFactory.class.getClassLoader(); + return cl; + } + + static Object newInstance(String className, ClassLoader cl, boolean doFallback) throws ConfigurationError { + try { + Class providerClass = findProviderClass(className, cl, doFallback); + Object instance = providerClass.newInstance(); + debugPrintln("created new instance of " + providerClass + " using ClassLoader: " + cl); + return instance; + } catch (ClassNotFoundException x) { + throw new ConfigurationError("Provider " + className + " not found", x); + } catch (Exception x) { + throw new ConfigurationError("Provider " + className + " could not be instantiated: " + x, x); + } + } + + static Class findProviderClass(String className, ClassLoader cl, boolean doFallback) throws ClassNotFoundException, ConfigurationError { + Class providerClass; + SecurityManager security = System.getSecurityManager(); + try { + if (security != null) + security.checkPackageAccess(className); + } catch (SecurityException e) { + throw e; + } + if (cl == null) { + providerClass = Class.forName(className); + } else { + try { + providerClass = cl.loadClass(className); + } catch (ClassNotFoundException x) { + if (doFallback) { + cl = ObjectFactory.class.getClassLoader(); + providerClass = cl.loadClass(className); + } else { + throw x; + } + } + } + return providerClass; + } + + private static Object findJarServiceProvider(String factoryId) throws ConfigurationError { + BufferedReader rd; + SecuritySupport ss = SecuritySupport.getInstance(); + String serviceId = "META-INF/services/" + factoryId; + InputStream is = null; + ClassLoader cl = ss.getContextClassLoader(); + if (cl != null) { + is = ss.getResourceAsStream(cl, serviceId); + if (is == null) { + cl = ObjectFactory.class.getClassLoader(); + is = ss.getResourceAsStream(cl, serviceId); + } + } else { + cl = ObjectFactory.class.getClassLoader(); + is = ss.getResourceAsStream(cl, serviceId); + } + if (is == null) + return null; + debugPrintln("found jar resource=" + serviceId + " using ClassLoader: " + cl); + try { + rd = new BufferedReader(new InputStreamReader(is, "UTF-8")); + } catch (UnsupportedEncodingException e) { + rd = new BufferedReader(new InputStreamReader(is)); + } + String factoryClassName = null; + try { + factoryClassName = rd.readLine(); + rd.close(); + } catch (IOException x) { + return null; + } + if (factoryClassName != null && !"".equals(factoryClassName)) { + debugPrintln("found in resource, value=" + factoryClassName); + return newInstance(factoryClassName, cl, false); + } + return null; + } + + static class ConfigurationError extends Error { + private Exception exception; + + ConfigurationError(String msg, Exception x) { + super(msg); + this.exception = x; + } + + Exception getException() { + return this.exception; + } + } +} diff --git a/hrmsEjb/org/apache/xerces/parsers/SAXParser.java b/hrmsEjb/org/apache/xerces/parsers/SAXParser.java new file mode 100644 index 0000000..5409a7f --- /dev/null +++ b/hrmsEjb/org/apache/xerces/parsers/SAXParser.java @@ -0,0 +1,40 @@ +package org.apache.xerces.parsers; + +import org.apache.xerces.util.SymbolTable; +import org.apache.xerces.xni.grammars.XMLGrammarPool; +import org.apache.xerces.xni.parser.XMLParserConfiguration; + +public class SAXParser extends AbstractSAXParser { + protected static final String NOTIFY_BUILTIN_REFS = "http://apache.org/xml/features/scanner/notify-builtin-refs"; + + private static final String[] RECOGNIZED_FEATURES = new String[] { "http://apache.org/xml/features/scanner/notify-builtin-refs" }; + + protected static final String SYMBOL_TABLE = "http://apache.org/xml/properties/internal/symbol-table"; + + protected static final String XMLGRAMMAR_POOL = "http://apache.org/xml/properties/internal/grammar-pool"; + + private static final String[] RECOGNIZED_PROPERTIES = new String[] { "http://apache.org/xml/properties/internal/symbol-table", "http://apache.org/xml/properties/internal/grammar-pool" }; + + public SAXParser(XMLParserConfiguration config) { + super(config); + } + + public SAXParser() { + this(null, null); + } + + public SAXParser(SymbolTable symbolTable) { + this(symbolTable, null); + } + + public SAXParser(SymbolTable symbolTable, XMLGrammarPool grammarPool) { + super((XMLParserConfiguration)ObjectFactory.createObject("org.apache.xerces.xni.parser.XMLParserConfiguration", "org.apache.xerces.parsers.IntegratedParserConfiguration")); + this.fConfiguration.addRecognizedFeatures(RECOGNIZED_FEATURES); + this.fConfiguration.setFeature("http://apache.org/xml/features/scanner/notify-builtin-refs", true); + this.fConfiguration.addRecognizedProperties(RECOGNIZED_PROPERTIES); + if (symbolTable != null) + this.fConfiguration.setProperty("http://apache.org/xml/properties/internal/symbol-table", symbolTable); + if (grammarPool != null) + this.fConfiguration.setProperty("http://apache.org/xml/properties/internal/grammar-pool", grammarPool); + } +} diff --git a/hrmsEjb/org/apache/xerces/parsers/SecuritySupport.java b/hrmsEjb/org/apache/xerces/parsers/SecuritySupport.java new file mode 100644 index 0000000..ade90fe --- /dev/null +++ b/hrmsEjb/org/apache/xerces/parsers/SecuritySupport.java @@ -0,0 +1,58 @@ +package org.apache.xerces.parsers; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; + +class SecuritySupport { + private static final Object securitySupport; + + static { + SecuritySupport ss = null; + try { + Class c = Class.forName("java.security.AccessController"); + ss = new SecuritySupport12(); + } catch (Exception ex) { + + } finally { + if (ss == null) + ss = new SecuritySupport(); + securitySupport = ss; + } + } + + static SecuritySupport getInstance() { + return (SecuritySupport)securitySupport; + } + + ClassLoader getContextClassLoader() { + return null; + } + + String getSystemProperty(String propName) { + return System.getProperty(propName); + } + + FileInputStream getFileInputStream(File file) throws FileNotFoundException { + return new FileInputStream(file); + } + + InputStream getResourceAsStream(ClassLoader cl, String name) { + InputStream ris; + if (cl == null) { + ris = ClassLoader.getSystemResourceAsStream(name); + } else { + ris = cl.getResourceAsStream(name); + } + return ris; + } + + boolean getFileExists(File f) { + return f.exists(); + } + + long getLastModified(File f) { + return f.lastModified(); + } +} diff --git a/hrmsEjb/org/apache/xerces/parsers/SecuritySupport12.java b/hrmsEjb/org/apache/xerces/parsers/SecuritySupport12.java new file mode 100644 index 0000000..4f2be13 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/parsers/SecuritySupport12.java @@ -0,0 +1,98 @@ +package org.apache.xerces.parsers; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; + +class SecuritySupport12 extends SecuritySupport { + ClassLoader getContextClassLoader() { + return AccessController.doPrivileged(new PrivilegedAction(this) { + private final SecuritySupport12 this$0; + + public Object run() { + ClassLoader cl = null; + try { + cl = Thread.currentThread().getContextClassLoader(); + } catch (SecurityException ex) {} + return cl; + } + }); + } + + String getSystemProperty(String propName) { + return AccessController.doPrivileged(new PrivilegedAction(this, propName) { + private final String val$propName; + + private final SecuritySupport12 this$0; + + public Object run() { + return System.getProperty(this.val$propName); + } + }); + } + + FileInputStream getFileInputStream(File file) throws FileNotFoundException { + try { + return AccessController.doPrivileged(new PrivilegedExceptionAction(this, file) { + private final File val$file; + + private final SecuritySupport12 this$0; + + public Object run() throws FileNotFoundException { + return new FileInputStream(this.val$file); + } + }); + } catch (PrivilegedActionException e) { + throw (FileNotFoundException)e.getException(); + } + } + + InputStream getResourceAsStream(ClassLoader cl, String name) { + return AccessController.doPrivileged(new PrivilegedAction(this, cl, name) { + private final ClassLoader val$cl; + + private final String val$name; + + private final SecuritySupport12 this$0; + + public Object run() { + InputStream ris; + if (this.val$cl == null) { + ris = ClassLoader.getSystemResourceAsStream(this.val$name); + } else { + ris = this.val$cl.getResourceAsStream(this.val$name); + } + return ris; + } + }); + } + + boolean getFileExists(File f) { + return ((Boolean)AccessController.doPrivileged(new PrivilegedAction(this, f) { + private final File val$f; + + private final SecuritySupport12 this$0; + + public Object run() { + return new Boolean(this.val$f.exists()); + } + })).booleanValue(); + } + + long getLastModified(File f) { + return ((Long)AccessController.doPrivileged(new PrivilegedAction(this, f) { + private final File val$f; + + private final SecuritySupport12 this$0; + + public Object run() { + return new Long(this.val$f.lastModified()); + } + })).longValue(); + } +} diff --git a/hrmsEjb/org/apache/xerces/parsers/XMLParser.java b/hrmsEjb/org/apache/xerces/parsers/XMLParser.java new file mode 100644 index 0000000..7caade3 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/parsers/XMLParser.java @@ -0,0 +1,28 @@ +package org.apache.xerces.parsers; + +import java.io.IOException; +import org.apache.xerces.xni.XNIException; +import org.apache.xerces.xni.parser.XMLInputSource; +import org.apache.xerces.xni.parser.XMLParserConfiguration; + +public abstract class XMLParser { + protected static final String ENTITY_RESOLVER = "http://apache.org/xml/properties/internal/entity-resolver"; + + protected static final String ERROR_HANDLER = "http://apache.org/xml/properties/internal/error-handler"; + + private static final String[] RECOGNIZED_PROPERTIES = new String[] { "http://apache.org/xml/properties/internal/entity-resolver", "http://apache.org/xml/properties/internal/error-handler" }; + + protected XMLParserConfiguration fConfiguration; + + protected XMLParser(XMLParserConfiguration config) { + this.fConfiguration = config; + this.fConfiguration.addRecognizedProperties(RECOGNIZED_PROPERTIES); + } + + public void parse(XMLInputSource inputSource) throws XNIException, IOException { + reset(); + this.fConfiguration.parse(inputSource); + } + + protected void reset() throws XNIException {} +} diff --git a/hrmsEjb/org/apache/xerces/util/EntityResolverWrapper.java b/hrmsEjb/org/apache/xerces/util/EntityResolverWrapper.java new file mode 100644 index 0000000..6f9b960 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/util/EntityResolverWrapper.java @@ -0,0 +1,60 @@ +package org.apache.xerces.util; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import org.apache.xerces.xni.XMLResourceIdentifier; +import org.apache.xerces.xni.XNIException; +import org.apache.xerces.xni.parser.XMLEntityResolver; +import org.apache.xerces.xni.parser.XMLInputSource; +import org.xml.sax.EntityResolver; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +public class EntityResolverWrapper implements XMLEntityResolver { + protected EntityResolver fEntityResolver; + + public EntityResolverWrapper() {} + + public EntityResolverWrapper(EntityResolver entityResolver) { + setEntityResolver(entityResolver); + } + + public void setEntityResolver(EntityResolver entityResolver) { + this.fEntityResolver = entityResolver; + } + + public EntityResolver getEntityResolver() { + return this.fEntityResolver; + } + + public XMLInputSource resolveEntity(XMLResourceIdentifier resourceIdentifier) throws XNIException, IOException { + String pubId = resourceIdentifier.getPublicId(); + String sysId = resourceIdentifier.getExpandedSystemId(); + if (pubId == null && sysId == null) + return null; + if (this.fEntityResolver != null && resourceIdentifier != null) + try { + InputSource inputSource = this.fEntityResolver.resolveEntity(pubId, sysId); + if (inputSource != null) { + String publicId = inputSource.getPublicId(); + String systemId = inputSource.getSystemId(); + String baseSystemId = resourceIdentifier.getBaseSystemId(); + InputStream byteStream = inputSource.getByteStream(); + Reader charStream = inputSource.getCharacterStream(); + String encoding = inputSource.getEncoding(); + XMLInputSource xmlInputSource = new XMLInputSource(publicId, systemId, baseSystemId); + xmlInputSource.setByteStream(byteStream); + xmlInputSource.setCharacterStream(charStream); + xmlInputSource.setEncoding(encoding); + return xmlInputSource; + } + } catch (SAXException e) { + Exception ex = e.getException(); + if (ex == null) + ex = e; + throw new XNIException(ex); + } + return null; + } +} diff --git a/hrmsEjb/org/apache/xerces/util/ErrorHandlerWrapper.java b/hrmsEjb/org/apache/xerces/util/ErrorHandlerWrapper.java new file mode 100644 index 0000000..65053fa --- /dev/null +++ b/hrmsEjb/org/apache/xerces/util/ErrorHandlerWrapper.java @@ -0,0 +1,121 @@ +package org.apache.xerces.util; + +import org.apache.xerces.xni.XMLLocator; +import org.apache.xerces.xni.XNIException; +import org.apache.xerces.xni.parser.XMLErrorHandler; +import org.apache.xerces.xni.parser.XMLParseException; +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class ErrorHandlerWrapper implements XMLErrorHandler { + protected ErrorHandler fErrorHandler; + + public ErrorHandlerWrapper() {} + + public ErrorHandlerWrapper(ErrorHandler errorHandler) { + setErrorHandler(errorHandler); + } + + public void setErrorHandler(ErrorHandler errorHandler) { + this.fErrorHandler = errorHandler; + } + + public ErrorHandler getErrorHandler() { + return this.fErrorHandler; + } + + public void warning(String domain, String key, XMLParseException exception) throws XNIException { + SAXParseException saxException = createSAXParseException(exception); + try { + this.fErrorHandler.warning(saxException); + } catch (SAXParseException e) { + throw createXMLParseException(e); + } catch (SAXException e) { + throw createXNIException(e); + } + } + + public void error(String domain, String key, XMLParseException exception) throws XNIException { + SAXParseException saxException = createSAXParseException(exception); + try { + this.fErrorHandler.error(saxException); + } catch (SAXParseException e) { + throw createXMLParseException(e); + } catch (SAXException e) { + throw createXNIException(e); + } + } + + public void fatalError(String domain, String key, XMLParseException exception) throws XNIException { + SAXParseException saxException = createSAXParseException(exception); + try { + this.fErrorHandler.fatalError(saxException); + } catch (SAXParseException e) { + throw createXMLParseException(e); + } catch (SAXException e) { + throw createXNIException(e); + } + } + + protected static SAXParseException createSAXParseException(XMLParseException exception) { + return new SAXParseException(exception.getMessage(), exception.getPublicId(), exception.getExpandedSystemId(), exception.getLineNumber(), exception.getColumnNumber(), exception.getException()); + } + + protected static XMLParseException createXMLParseException(SAXParseException exception) { + String fPublicId = exception.getPublicId(); + String fExpandedSystemId = exception.getSystemId(); + int fLineNumber = exception.getLineNumber(); + int fColumnNumber = exception.getColumnNumber(); + XMLLocator location = new XMLLocator(fPublicId, fExpandedSystemId, fColumnNumber, fLineNumber) { + private final String val$fPublicId; + + private final String val$fExpandedSystemId; + + private final int val$fColumnNumber; + + private final int val$fLineNumber; + + public void setPublicId(String id) {} + + public String getPublicId() { + return this.val$fPublicId; + } + + public void setExpandedSystemId(String id) {} + + public String getExpandedSystemId() { + return this.val$fExpandedSystemId; + } + + public void setBaseSystemId(String id) {} + + public String getBaseSystemId() { + return null; + } + + public void setLiteralSystemId(String id) {} + + public String getLiteralSystemId() { + return null; + } + + public int getColumnNumber() { + return this.val$fColumnNumber; + } + + public void setColumnNumber(int col) {} + + public int getLineNumber() { + return this.val$fLineNumber; + } + + public void setLineNumber(int line) {} + }; + return new XMLParseException(location, exception.getMessage(), exception.getException()); + } + + protected static XNIException createXNIException(SAXException exception) { + return new XNIException(exception.getMessage(), exception.getException()); + } +} diff --git a/hrmsEjb/org/apache/xerces/util/SymbolHash.java b/hrmsEjb/org/apache/xerces/util/SymbolHash.java new file mode 100644 index 0000000..0203153 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/util/SymbolHash.java @@ -0,0 +1,105 @@ +package org.apache.xerces.util; + +public class SymbolHash { + protected int fTableSize = 101; + + protected Entry[] fBuckets; + + protected int fNum = 0; + + public SymbolHash() { + this.fBuckets = new Entry[this.fTableSize]; + } + + public SymbolHash(int size) { + this.fTableSize = size; + this.fBuckets = new Entry[this.fTableSize]; + } + + public void put(Object key, Object value) { + int bucket = (key.hashCode() & Integer.MAX_VALUE) % this.fTableSize; + Entry entry = search(key, bucket); + if (entry != null) { + entry.value = value; + } else { + entry = new Entry(key, value, this.fBuckets[bucket]); + this.fBuckets[bucket] = entry; + this.fNum++; + } + } + + public Object get(Object key) { + int bucket = (key.hashCode() & Integer.MAX_VALUE) % this.fTableSize; + Entry entry = search(key, bucket); + if (entry != null) + return entry.value; + return null; + } + + public int getLength() { + return this.fNum; + } + + public int getValues(Object[] elements, int from) { + for (int i = 0, j = 0; i < this.fTableSize && j < this.fNum; i++) { + for (Entry entry = this.fBuckets[i]; entry != null; entry = entry.next) { + elements[from + j] = entry.value; + j++; + } + } + return this.fNum; + } + + public SymbolHash makeClone() { + SymbolHash newTable = new SymbolHash(this.fTableSize); + newTable.fNum = this.fNum; + for (int i = 0; i < this.fTableSize; i++) { + if (this.fBuckets[i] != null) + newTable.fBuckets[i] = this.fBuckets[i].makeClone(); + } + return newTable; + } + + public void clear() { + for (int i = 0; i < this.fTableSize; i++) + this.fBuckets[i] = null; + this.fNum = 0; + } + + protected Entry search(Object key, int bucket) { + for (Entry entry = this.fBuckets[bucket]; entry != null; entry = entry.next) { + if (key.equals(entry.key)) + return entry; + } + return null; + } + + protected static final class Entry { + public Object key; + + public Object value; + + public Entry next; + + public Entry() { + this.key = null; + this.value = null; + this.next = null; + } + + public Entry(Object key, Object value, Entry next) { + this.key = key; + this.value = value; + this.next = next; + } + + public Entry makeClone() { + Entry entry = new Entry(); + entry.key = this.key; + entry.value = this.value; + if (this.next != null) + entry.next = this.next.makeClone(); + return entry; + } + } +} diff --git a/hrmsEjb/org/apache/xerces/util/SymbolTable.java b/hrmsEjb/org/apache/xerces/util/SymbolTable.java new file mode 100644 index 0000000..02f1e38 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/util/SymbolTable.java @@ -0,0 +1,139 @@ +package org.apache.xerces.util; + +public class SymbolTable { + protected static final int TABLE_SIZE = 101; + + protected Entry[] fBuckets = null; + + protected int fTableSize; + + public SymbolTable() { + this(101); + } + + public SymbolTable(int tableSize) { + this.fTableSize = tableSize; + this.fBuckets = new Entry[this.fTableSize]; + } + + public String addSymbol(String symbol) { + int bucket = hash(symbol) % this.fTableSize; + int length = symbol.length(); + Entry entry; + for (entry = this.fBuckets[bucket]; entry != null; entry = entry.next) { + if (length == entry.characters.length) { + int i = 0; + while (true) { + if (i < length) { + if (symbol.charAt(i) != entry.characters[i]) + break; + i++; + continue; + } + return entry.symbol; + } + } + } + entry = new Entry(symbol, this.fBuckets[bucket]); + this.fBuckets[bucket] = entry; + return entry.symbol; + } + + public String addSymbol(char[] buffer, int offset, int length) { + int bucket = hash(buffer, offset, length) % this.fTableSize; + Entry entry; + for (entry = this.fBuckets[bucket]; entry != null; entry = entry.next) { + if (length == entry.characters.length) { + int i = 0; + while (true) { + if (i < length) { + if (buffer[offset + i] != entry.characters[i]) + break; + i++; + continue; + } + return entry.symbol; + } + } + } + entry = new Entry(buffer, offset, length, this.fBuckets[bucket]); + this.fBuckets[bucket] = entry; + return entry.symbol; + } + + public int hash(String symbol) { + int code = 0; + int length = symbol.length(); + for (int i = 0; i < length; i++) + code = code * 37 + symbol.charAt(i); + return code & 0x7FFFFFF; + } + + public int hash(char[] buffer, int offset, int length) { + int code = 0; + for (int i = 0; i < length; i++) + code = code * 37 + buffer[offset + i]; + return code & 0x7FFFFFF; + } + + public boolean containsSymbol(String symbol) { + int bucket = hash(symbol) % this.fTableSize; + int length = symbol.length(); + for (Entry entry = this.fBuckets[bucket]; entry != null; entry = entry.next) { + if (length == entry.characters.length) { + int i = 0; + while (true) { + if (i < length) { + if (symbol.charAt(i) != entry.characters[i]) + break; + i++; + continue; + } + return true; + } + } + } + return false; + } + + public boolean containsSymbol(char[] buffer, int offset, int length) { + int bucket = hash(buffer, offset, length) % this.fTableSize; + for (Entry entry = this.fBuckets[bucket]; entry != null; entry = entry.next) { + if (length == entry.characters.length) { + int i = 0; + while (true) { + if (i < length) { + if (buffer[offset + i] != entry.characters[i]) + break; + i++; + continue; + } + return true; + } + } + } + return false; + } + + protected static final class Entry { + public String symbol; + + public char[] characters; + + public Entry next; + + public Entry(String symbol, Entry next) { + this.symbol = symbol.intern(); + this.characters = new char[symbol.length()]; + symbol.getChars(0, this.characters.length, this.characters, 0); + this.next = next; + } + + public Entry(char[] ch, int offset, int length, Entry next) { + this.characters = new char[length]; + System.arraycopy(ch, offset, this.characters, 0, length); + this.symbol = (new String(this.characters)).intern(); + this.next = next; + } + } +} diff --git a/hrmsEjb/org/apache/xerces/xni/Augmentations.java b/hrmsEjb/org/apache/xerces/xni/Augmentations.java new file mode 100644 index 0000000..59219d9 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/Augmentations.java @@ -0,0 +1,15 @@ +package org.apache.xerces.xni; + +import java.util.Enumeration; + +public interface Augmentations { + void removeAllItems(); + + Enumeration keys(); + + Object getItem(String paramString); + + Object removeItem(String paramString); + + Object putItem(String paramString, Object paramObject); +} diff --git a/hrmsEjb/org/apache/xerces/xni/NamespaceContext.java b/hrmsEjb/org/apache/xerces/xni/NamespaceContext.java new file mode 100644 index 0000000..765a892 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/NamespaceContext.java @@ -0,0 +1,27 @@ +package org.apache.xerces.xni; + +import java.util.Enumeration; + +public interface NamespaceContext { + public static final String XML_URI = "http://www.w3.org/XML/1998/namespace".intern(); + + public static final String XMLNS_URI = "http://www.w3.org/2000/xmlns/".intern(); + + int getDeclaredPrefixCount(); + + void popContext(); + + void pushContext(); + + void reset(); + + String getDeclaredPrefixAt(int paramInt); + + Enumeration getAllPrefixes(); + + String getPrefix(String paramString); + + String getURI(String paramString); + + boolean declarePrefix(String paramString1, String paramString2); +} diff --git a/hrmsEjb/org/apache/xerces/xni/QName.java b/hrmsEjb/org/apache/xerces/xni/QName.java new file mode 100644 index 0000000..ab796b1 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/QName.java @@ -0,0 +1,92 @@ +package org.apache.xerces.xni; + +public class QName implements Cloneable { + public String prefix; + + public String localpart; + + public String rawname; + + public String uri; + + public QName() { + clear(); + } + + public QName(String prefix, String localpart, String rawname, String uri) { + setValues(prefix, localpart, rawname, uri); + } + + public QName(QName qname) { + setValues(qname); + } + + public void setValues(QName qname) { + this.prefix = qname.prefix; + this.localpart = qname.localpart; + this.rawname = qname.rawname; + this.uri = qname.uri; + } + + public void setValues(String prefix, String localpart, String rawname, String uri) { + this.prefix = prefix; + this.localpart = localpart; + this.rawname = rawname; + this.uri = uri; + } + + public void clear() { + this.prefix = null; + this.localpart = null; + this.rawname = null; + this.uri = null; + } + + public Object clone() { + return new QName(this); + } + + public int hashCode() { + if (this.uri != null) + return this.uri.hashCode() + this.localpart.hashCode(); + return this.rawname.hashCode(); + } + + public boolean equals(Object object) { + if (object instanceof QName) { + QName qname = (QName)object; + if (qname.uri != null) + return (this.uri == qname.uri && this.localpart == qname.localpart); + if (this.uri == null) + return (this.rawname == qname.rawname); + } + return false; + } + + public String toString() { + StringBuffer str = new StringBuffer(); + boolean comma = false; + if (this.prefix != null) { + str.append("prefix=\"" + this.prefix + '"'); + comma = true; + } + if (this.localpart != null) { + if (comma) + str.append(','); + str.append("localpart=\"" + this.localpart + '"'); + comma = true; + } + if (this.rawname != null) { + if (comma) + str.append(','); + str.append("rawname=\"" + this.rawname + '"'); + comma = true; + } + if (this.uri != null) { + if (comma) + str.append(','); + str.append("uri=\"" + this.uri + '"'); + } + return str.toString(); + } +} diff --git a/hrmsEjb/org/apache/xerces/xni/XMLAttributes.java b/hrmsEjb/org/apache/xerces/xni/XMLAttributes.java new file mode 100644 index 0000000..f573c2c --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XMLAttributes.java @@ -0,0 +1,59 @@ +package org.apache.xerces.xni; + +public interface XMLAttributes { + int getLength(); + + void removeAllAttributes(); + + void removeAttributeAt(int paramInt); + + boolean isSpecified(int paramInt); + + void setSpecified(int paramInt, boolean paramBoolean); + + String getLocalName(int paramInt); + + String getNonNormalizedValue(int paramInt); + + String getPrefix(int paramInt); + + String getQName(int paramInt); + + String getType(int paramInt); + + String getURI(int paramInt); + + String getValue(int paramInt); + + void setNonNormalizedValue(int paramInt, String paramString); + + void setType(int paramInt, String paramString); + + void setValue(int paramInt, String paramString); + + int getIndex(String paramString); + + Augmentations getAugmentations(int paramInt); + + void setAugmentations(int paramInt, Augmentations paramAugmentations); + + void getName(int paramInt, QName paramQName); + + void setName(int paramInt, QName paramQName); + + String getType(String paramString); + + String getValue(String paramString); + + int getIndex(String paramString1, String paramString2); + + Augmentations getAugmentations(String paramString); + + String getType(String paramString1, String paramString2); + + String getValue(String paramString1, String paramString2); + + int addAttribute(QName paramQName, String paramString1, String paramString2); + + Augmentations getAugmentations(String paramString1, String paramString2); +} diff --git a/hrmsEjb/org/apache/xerces/xni/XMLDTDContentModelHandler.java b/hrmsEjb/org/apache/xerces/xni/XMLDTDContentModelHandler.java new file mode 100644 index 0000000..ffd920d --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XMLDTDContentModelHandler.java @@ -0,0 +1,39 @@ +package org.apache.xerces.xni; + +import org.apache.xerces.xni.parser.XMLDTDContentModelSource; + +public interface XMLDTDContentModelHandler { + public static final short SEPARATOR_CHOICE = 0; + + public static final short SEPARATOR_SEQUENCE = 1; + + public static final short OCCURS_ZERO_OR_ONE = 2; + + public static final short OCCURS_ZERO_OR_MORE = 3; + + public static final short OCCURS_ONE_OR_MORE = 4; + + void any(Augmentations paramAugmentations) throws XNIException; + + void empty(Augmentations paramAugmentations) throws XNIException; + + void endContentModel(Augmentations paramAugmentations) throws XNIException; + + void endGroup(Augmentations paramAugmentations) throws XNIException; + + void pcdata(Augmentations paramAugmentations) throws XNIException; + + void startGroup(Augmentations paramAugmentations) throws XNIException; + + void occurrence(short paramShort, Augmentations paramAugmentations) throws XNIException; + + void separator(short paramShort, Augmentations paramAugmentations) throws XNIException; + + XMLDTDContentModelSource getDTDContentModelSource(); + + void setDTDContentModelSource(XMLDTDContentModelSource paramXMLDTDContentModelSource); + + void element(String paramString, Augmentations paramAugmentations) throws XNIException; + + void startContentModel(String paramString, Augmentations paramAugmentations) throws XNIException; +} diff --git a/hrmsEjb/org/apache/xerces/xni/XMLDTDHandler.java b/hrmsEjb/org/apache/xerces/xni/XMLDTDHandler.java new file mode 100644 index 0000000..cb5a212 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XMLDTDHandler.java @@ -0,0 +1,53 @@ +package org.apache.xerces.xni; + +import org.apache.xerces.xni.parser.XMLDTDSource; + +public interface XMLDTDHandler { + public static final short CONDITIONAL_INCLUDE = 0; + + public static final short CONDITIONAL_IGNORE = 1; + + void endAttlist(Augmentations paramAugmentations) throws XNIException; + + void endConditional(Augmentations paramAugmentations) throws XNIException; + + void endDTD(Augmentations paramAugmentations) throws XNIException; + + void endExternalSubset(Augmentations paramAugmentations) throws XNIException; + + void startConditional(short paramShort, Augmentations paramAugmentations) throws XNIException; + + XMLDTDSource getDTDSource(); + + void setDTDSource(XMLDTDSource paramXMLDTDSource); + + void endParameterEntity(String paramString, Augmentations paramAugmentations) throws XNIException; + + void startAttlist(String paramString, Augmentations paramAugmentations) throws XNIException; + + void startDTD(XMLLocator paramXMLLocator, Augmentations paramAugmentations) throws XNIException; + + void startExternalSubset(XMLResourceIdentifier paramXMLResourceIdentifier, Augmentations paramAugmentations) throws XNIException; + + void comment(XMLString paramXMLString, Augmentations paramAugmentations) throws XNIException; + + void ignoredCharacters(XMLString paramXMLString, Augmentations paramAugmentations) throws XNIException; + + void elementDecl(String paramString1, String paramString2, Augmentations paramAugmentations) throws XNIException; + + void textDecl(String paramString1, String paramString2, Augmentations paramAugmentations) throws XNIException; + + void externalEntityDecl(String paramString, XMLResourceIdentifier paramXMLResourceIdentifier, Augmentations paramAugmentations) throws XNIException; + + void notationDecl(String paramString, XMLResourceIdentifier paramXMLResourceIdentifier, Augmentations paramAugmentations) throws XNIException; + + void processingInstruction(String paramString, XMLString paramXMLString, Augmentations paramAugmentations) throws XNIException; + + void startParameterEntity(String paramString1, XMLResourceIdentifier paramXMLResourceIdentifier, String paramString2, Augmentations paramAugmentations) throws XNIException; + + void unparsedEntityDecl(String paramString1, XMLResourceIdentifier paramXMLResourceIdentifier, String paramString2, Augmentations paramAugmentations) throws XNIException; + + void internalEntityDecl(String paramString, XMLString paramXMLString1, XMLString paramXMLString2, Augmentations paramAugmentations) throws XNIException; + + void attributeDecl(String paramString1, String paramString2, String paramString3, String[] paramArrayOfString, String paramString4, XMLString paramXMLString1, XMLString paramXMLString2, Augmentations paramAugmentations) throws XNIException; +} diff --git a/hrmsEjb/org/apache/xerces/xni/XMLDocumentHandler.java b/hrmsEjb/org/apache/xerces/xni/XMLDocumentHandler.java new file mode 100644 index 0000000..ad03fdb --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XMLDocumentHandler.java @@ -0,0 +1,41 @@ +package org.apache.xerces.xni; + +import org.apache.xerces.xni.parser.XMLDocumentSource; + +public interface XMLDocumentHandler { + void endCDATA(Augmentations paramAugmentations) throws XNIException; + + void endDocument(Augmentations paramAugmentations) throws XNIException; + + void startCDATA(Augmentations paramAugmentations) throws XNIException; + + XMLDocumentSource getDocumentSource(); + + void setDocumentSource(XMLDocumentSource paramXMLDocumentSource); + + void endGeneralEntity(String paramString, Augmentations paramAugmentations) throws XNIException; + + void endElement(QName paramQName, Augmentations paramAugmentations) throws XNIException; + + void characters(XMLString paramXMLString, Augmentations paramAugmentations) throws XNIException; + + void comment(XMLString paramXMLString, Augmentations paramAugmentations) throws XNIException; + + void ignorableWhitespace(XMLString paramXMLString, Augmentations paramAugmentations) throws XNIException; + + void textDecl(String paramString1, String paramString2, Augmentations paramAugmentations) throws XNIException; + + void emptyElement(QName paramQName, XMLAttributes paramXMLAttributes, Augmentations paramAugmentations) throws XNIException; + + void startElement(QName paramQName, XMLAttributes paramXMLAttributes, Augmentations paramAugmentations) throws XNIException; + + void processingInstruction(String paramString, XMLString paramXMLString, Augmentations paramAugmentations) throws XNIException; + + void doctypeDecl(String paramString1, String paramString2, String paramString3, Augmentations paramAugmentations) throws XNIException; + + void xmlDecl(String paramString1, String paramString2, String paramString3, Augmentations paramAugmentations) throws XNIException; + + void startGeneralEntity(String paramString1, XMLResourceIdentifier paramXMLResourceIdentifier, String paramString2, Augmentations paramAugmentations) throws XNIException; + + void startDocument(XMLLocator paramXMLLocator, String paramString, NamespaceContext paramNamespaceContext, Augmentations paramAugmentations) throws XNIException; +} diff --git a/hrmsEjb/org/apache/xerces/xni/XMLLocator.java b/hrmsEjb/org/apache/xerces/xni/XMLLocator.java new file mode 100644 index 0000000..e7d3df4 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XMLLocator.java @@ -0,0 +1,15 @@ +package org.apache.xerces.xni; + +public interface XMLLocator { + int getColumnNumber(); + + int getLineNumber(); + + String getBaseSystemId(); + + String getExpandedSystemId(); + + String getLiteralSystemId(); + + String getPublicId(); +} diff --git a/hrmsEjb/org/apache/xerces/xni/XMLResourceIdentifier.java b/hrmsEjb/org/apache/xerces/xni/XMLResourceIdentifier.java new file mode 100644 index 0000000..b8870f7 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XMLResourceIdentifier.java @@ -0,0 +1,19 @@ +package org.apache.xerces.xni; + +public interface XMLResourceIdentifier { + String getBaseSystemId(); + + String getExpandedSystemId(); + + String getLiteralSystemId(); + + String getPublicId(); + + void setBaseSystemId(String paramString); + + void setExpandedSystemId(String paramString); + + void setLiteralSystemId(String paramString); + + void setPublicId(String paramString); +} diff --git a/hrmsEjb/org/apache/xerces/xni/XMLString.java b/hrmsEjb/org/apache/xerces/xni/XMLString.java new file mode 100644 index 0000000..fd19e59 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XMLString.java @@ -0,0 +1,63 @@ +package org.apache.xerces.xni; + +public class XMLString { + public char[] ch; + + public int offset; + + public int length; + + public XMLString() {} + + public XMLString(char[] ch, int offset, int length) { + setValues(ch, offset, length); + } + + public XMLString(XMLString string) { + setValues(string); + } + + public void setValues(char[] ch, int offset, int length) { + this.ch = ch; + this.offset = offset; + this.length = length; + } + + public void setValues(XMLString s) { + setValues(s.ch, s.offset, s.length); + } + + public void clear() { + this.ch = null; + this.offset = 0; + this.length = -1; + } + + public boolean equals(char[] ch, int offset, int length) { + if (ch == null) + return false; + if (this.length != length) + return false; + for (int i = 0; i < length; i++) { + if (this.ch[this.offset + i] != ch[offset + i]) + return false; + } + return true; + } + + public boolean equals(String s) { + if (s == null) + return false; + if (this.length != s.length()) + return false; + for (int i = 0; i < this.length; i++) { + if (this.ch[this.offset + i] != s.charAt(i)) + return false; + } + return true; + } + + public String toString() { + return (this.length > 0) ? new String(this.ch, this.offset, this.length) : ""; + } +} diff --git a/hrmsEjb/org/apache/xerces/xni/XNIException.java b/hrmsEjb/org/apache/xerces/xni/XNIException.java new file mode 100644 index 0000000..867f511 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/XNIException.java @@ -0,0 +1,23 @@ +package org.apache.xerces.xni; + +public class XNIException extends RuntimeException { + private Exception fException; + + public XNIException(String message) { + super(message); + } + + public XNIException(Exception exception) { + super(exception.getMessage()); + this.fException = exception; + } + + public XNIException(String message, Exception exception) { + super(message); + this.fException = exception; + } + + public Exception getException() { + return this.fException; + } +} diff --git a/hrmsEjb/org/apache/xerces/xni/grammars/Grammar.java b/hrmsEjb/org/apache/xerces/xni/grammars/Grammar.java new file mode 100644 index 0000000..aedc26f --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/grammars/Grammar.java @@ -0,0 +1,5 @@ +package org.apache.xerces.xni.grammars; + +public interface Grammar { + XMLGrammarDescription getGrammarDescription(); +} diff --git a/hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarDescription.java b/hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarDescription.java new file mode 100644 index 0000000..9079725 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarDescription.java @@ -0,0 +1,11 @@ +package org.apache.xerces.xni.grammars; + +import org.apache.xerces.xni.XMLResourceIdentifier; + +public interface XMLGrammarDescription extends XMLResourceIdentifier { + public static final String XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; + + public static final String XML_DTD = "http://www.w3.org/TR/REC-xml"; + + String getGrammarType(); +} diff --git a/hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarPool.java b/hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarPool.java new file mode 100644 index 0000000..4bc58ec --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/grammars/XMLGrammarPool.java @@ -0,0 +1,15 @@ +package org.apache.xerces.xni.grammars; + +public interface XMLGrammarPool { + void clear(); + + void lockPool(); + + void unlockPool(); + + Grammar[] retrieveInitialGrammarSet(String paramString); + + void cacheGrammars(String paramString, Grammar[] paramArrayOfGrammar); + + Grammar retrieveGrammar(XMLGrammarDescription paramXMLGrammarDescription); +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLComponentManager.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLComponentManager.java new file mode 100644 index 0000000..478fc27 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLComponentManager.java @@ -0,0 +1,7 @@ +package org.apache.xerces.xni.parser; + +public interface XMLComponentManager { + boolean getFeature(String paramString) throws XMLConfigurationException; + + Object getProperty(String paramString) throws XMLConfigurationException; +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLConfigurationException.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLConfigurationException.java new file mode 100644 index 0000000..2e38fe2 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLConfigurationException.java @@ -0,0 +1,33 @@ +package org.apache.xerces.xni.parser; + +import org.apache.xerces.xni.XNIException; + +public class XMLConfigurationException extends XNIException { + public static final short NOT_RECOGNIZED = 0; + + public static final short NOT_SUPPORTED = 1; + + protected short fType; + + protected String fIdentifier; + + public XMLConfigurationException(short type, String identifier) { + super(identifier); + this.fType = type; + this.fIdentifier = identifier; + } + + public XMLConfigurationException(short type, String identifier, String message) { + super(message); + this.fType = type; + this.fIdentifier = identifier; + } + + public short getType() { + return this.fType; + } + + public String getIdentifier() { + return this.fIdentifier; + } +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLDTDContentModelSource.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLDTDContentModelSource.java new file mode 100644 index 0000000..4afa6f9 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLDTDContentModelSource.java @@ -0,0 +1,9 @@ +package org.apache.xerces.xni.parser; + +import org.apache.xerces.xni.XMLDTDContentModelHandler; + +public interface XMLDTDContentModelSource { + XMLDTDContentModelHandler getDTDContentModelHandler(); + + void setDTDContentModelHandler(XMLDTDContentModelHandler paramXMLDTDContentModelHandler); +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLDTDSource.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLDTDSource.java new file mode 100644 index 0000000..1542efe --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLDTDSource.java @@ -0,0 +1,9 @@ +package org.apache.xerces.xni.parser; + +import org.apache.xerces.xni.XMLDTDHandler; + +public interface XMLDTDSource { + XMLDTDHandler getDTDHandler(); + + void setDTDHandler(XMLDTDHandler paramXMLDTDHandler); +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLDocumentSource.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLDocumentSource.java new file mode 100644 index 0000000..b914bef --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLDocumentSource.java @@ -0,0 +1,9 @@ +package org.apache.xerces.xni.parser; + +import org.apache.xerces.xni.XMLDocumentHandler; + +public interface XMLDocumentSource { + XMLDocumentHandler getDocumentHandler(); + + void setDocumentHandler(XMLDocumentHandler paramXMLDocumentHandler); +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLEntityResolver.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLEntityResolver.java new file mode 100644 index 0000000..d1fac1b --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLEntityResolver.java @@ -0,0 +1,9 @@ +package org.apache.xerces.xni.parser; + +import java.io.IOException; +import org.apache.xerces.xni.XMLResourceIdentifier; +import org.apache.xerces.xni.XNIException; + +public interface XMLEntityResolver { + XMLInputSource resolveEntity(XMLResourceIdentifier paramXMLResourceIdentifier) throws XNIException, IOException; +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLErrorHandler.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLErrorHandler.java new file mode 100644 index 0000000..d43d175 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLErrorHandler.java @@ -0,0 +1,11 @@ +package org.apache.xerces.xni.parser; + +import org.apache.xerces.xni.XNIException; + +public interface XMLErrorHandler { + void error(String paramString1, String paramString2, XMLParseException paramXMLParseException) throws XNIException; + + void fatalError(String paramString1, String paramString2, XMLParseException paramXMLParseException) throws XNIException; + + void warning(String paramString1, String paramString2, XMLParseException paramXMLParseException) throws XNIException; +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLInputSource.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLInputSource.java new file mode 100644 index 0000000..f10d509 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLInputSource.java @@ -0,0 +1,95 @@ +package org.apache.xerces.xni.parser; + +import java.io.InputStream; +import java.io.Reader; +import org.apache.xerces.xni.XMLResourceIdentifier; + +public class XMLInputSource { + protected String fPublicId; + + protected String fSystemId; + + protected String fBaseSystemId; + + protected InputStream fByteStream; + + protected Reader fCharStream; + + protected String fEncoding; + + public XMLInputSource(String publicId, String systemId, String baseSystemId) { + this.fPublicId = publicId; + this.fSystemId = systemId; + this.fBaseSystemId = baseSystemId; + } + + public XMLInputSource(XMLResourceIdentifier resourceIdentifier) { + this.fPublicId = resourceIdentifier.getPublicId(); + this.fSystemId = resourceIdentifier.getLiteralSystemId(); + this.fBaseSystemId = resourceIdentifier.getBaseSystemId(); + } + + public XMLInputSource(String publicId, String systemId, String baseSystemId, InputStream byteStream, String encoding) { + this.fPublicId = publicId; + this.fSystemId = systemId; + this.fBaseSystemId = baseSystemId; + this.fByteStream = byteStream; + this.fEncoding = encoding; + } + + public XMLInputSource(String publicId, String systemId, String baseSystemId, Reader charStream, String encoding) { + this.fPublicId = publicId; + this.fSystemId = systemId; + this.fBaseSystemId = baseSystemId; + this.fCharStream = charStream; + this.fEncoding = encoding; + } + + public void setPublicId(String publicId) { + this.fPublicId = publicId; + } + + public String getPublicId() { + return this.fPublicId; + } + + public void setSystemId(String systemId) { + this.fSystemId = systemId; + } + + public String getSystemId() { + return this.fSystemId; + } + + public void setBaseSystemId(String baseSystemId) { + this.fBaseSystemId = baseSystemId; + } + + public String getBaseSystemId() { + return this.fBaseSystemId; + } + + public void setByteStream(InputStream byteStream) { + this.fByteStream = byteStream; + } + + public InputStream getByteStream() { + return this.fByteStream; + } + + public void setCharacterStream(Reader charStream) { + this.fCharStream = charStream; + } + + public Reader getCharacterStream() { + return this.fCharStream; + } + + public void setEncoding(String encoding) { + this.fEncoding = encoding; + } + + public String getEncoding() { + return this.fEncoding; + } +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLParseException.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLParseException.java new file mode 100644 index 0000000..7a8d95c --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLParseException.java @@ -0,0 +1,96 @@ +package org.apache.xerces.xni.parser; + +import org.apache.xerces.xni.XMLLocator; +import org.apache.xerces.xni.XNIException; + +public class XMLParseException extends XNIException { + protected String fPublicId; + + protected String fLiteralSystemId; + + protected String fExpandedSystemId; + + protected String fBaseSystemId; + + protected int fLineNumber = -1; + + protected int fColumnNumber = -1; + + public XMLParseException(XMLLocator locator, String message) { + super(message); + if (locator != null) { + this.fPublicId = locator.getPublicId(); + this.fLiteralSystemId = locator.getLiteralSystemId(); + this.fExpandedSystemId = locator.getExpandedSystemId(); + this.fBaseSystemId = locator.getBaseSystemId(); + this.fLineNumber = locator.getLineNumber(); + this.fColumnNumber = locator.getColumnNumber(); + } + } + + public XMLParseException(XMLLocator locator, String message, Exception exception) { + super(message, exception); + this.fPublicId = locator.getPublicId(); + this.fLiteralSystemId = locator.getLiteralSystemId(); + this.fExpandedSystemId = locator.getExpandedSystemId(); + this.fBaseSystemId = locator.getBaseSystemId(); + this.fLineNumber = locator.getLineNumber(); + this.fColumnNumber = locator.getColumnNumber(); + } + + public String getPublicId() { + return this.fPublicId; + } + + public String getExpandedSystemId() { + return this.fExpandedSystemId; + } + + public String getLiteralSystemId() { + return this.fLiteralSystemId; + } + + public String getBaseSystemId() { + return this.fBaseSystemId; + } + + public int getLineNumber() { + return this.fLineNumber; + } + + public int getColumnNumber() { + return this.fColumnNumber; + } + + public String toString() { + StringBuffer str = new StringBuffer(); + if (this.fPublicId != null) + str.append(this.fPublicId); + str.append(':'); + if (this.fPublicId != null) + str.append(this.fPublicId); + str.append(':'); + if (this.fLiteralSystemId != null) + str.append(this.fLiteralSystemId); + str.append(':'); + if (this.fExpandedSystemId != null) + str.append(this.fExpandedSystemId); + str.append(':'); + if (this.fBaseSystemId != null) + str.append(this.fBaseSystemId); + str.append(':'); + str.append(this.fLineNumber); + str.append(':'); + str.append(this.fColumnNumber); + str.append(':'); + String message = getMessage(); + if (message == null) { + Exception exception = getException(); + if (exception != null) + message = exception.getMessage(); + } + if (message != null) + str.append(message); + return str.toString(); + } +} diff --git a/hrmsEjb/org/apache/xerces/xni/parser/XMLParserConfiguration.java b/hrmsEjb/org/apache/xerces/xni/parser/XMLParserConfiguration.java new file mode 100644 index 0000000..5b4d141 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/parser/XMLParserConfiguration.java @@ -0,0 +1,48 @@ +package org.apache.xerces.xni.parser; + +import java.io.IOException; +import java.util.Locale; +import org.apache.xerces.xni.XMLDTDContentModelHandler; +import org.apache.xerces.xni.XMLDTDHandler; +import org.apache.xerces.xni.XMLDocumentHandler; +import org.apache.xerces.xni.XNIException; + +public interface XMLParserConfiguration extends XMLComponentManager { + boolean getFeature(String paramString) throws XMLConfigurationException; + + void setFeature(String paramString, boolean paramBoolean) throws XMLConfigurationException; + + void addRecognizedFeatures(String[] paramArrayOfString); + + void addRecognizedProperties(String[] paramArrayOfString); + + Locale getLocale(); + + void setLocale(Locale paramLocale) throws XNIException; + + XMLDTDContentModelHandler getDTDContentModelHandler(); + + void setDTDContentModelHandler(XMLDTDContentModelHandler paramXMLDTDContentModelHandler); + + XMLDTDHandler getDTDHandler(); + + void setDTDHandler(XMLDTDHandler paramXMLDTDHandler); + + XMLDocumentHandler getDocumentHandler(); + + void setDocumentHandler(XMLDocumentHandler paramXMLDocumentHandler); + + XMLEntityResolver getEntityResolver(); + + void setEntityResolver(XMLEntityResolver paramXMLEntityResolver); + + XMLErrorHandler getErrorHandler(); + + void setErrorHandler(XMLErrorHandler paramXMLErrorHandler); + + void parse(XMLInputSource paramXMLInputSource) throws XNIException, IOException; + + Object getProperty(String paramString) throws XMLConfigurationException; + + void setProperty(String paramString, Object paramObject) throws XMLConfigurationException; +} diff --git a/hrmsEjb/org/apache/xerces/xni/psvi/AttributePSVI.java b/hrmsEjb/org/apache/xerces/xni/psvi/AttributePSVI.java new file mode 100644 index 0000000..ed60d64 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/psvi/AttributePSVI.java @@ -0,0 +1,7 @@ +package org.apache.xerces.xni.psvi; + +import org.apache.xerces.impl.xs.psvi.XSAttributeDeclaration; + +public interface AttributePSVI extends ItemPSVI { + XSAttributeDeclaration getAttributeDeclaration(); +} diff --git a/hrmsEjb/org/apache/xerces/xni/psvi/ElementPSVI.java b/hrmsEjb/org/apache/xerces/xni/psvi/ElementPSVI.java new file mode 100644 index 0000000..0d683f5 --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/psvi/ElementPSVI.java @@ -0,0 +1,13 @@ +package org.apache.xerces.xni.psvi; + +import org.apache.xerces.impl.xs.psvi.XSElementDeclaration; +import org.apache.xerces.impl.xs.psvi.XSModel; +import org.apache.xerces.impl.xs.psvi.XSNotationDeclaration; + +public interface ElementPSVI extends ItemPSVI { + XSElementDeclaration getElementDeclaration(); + + XSModel getSchemaInformation(); + + XSNotationDeclaration getNotation(); +} diff --git a/hrmsEjb/org/apache/xerces/xni/psvi/ItemPSVI.java b/hrmsEjb/org/apache/xerces/xni/psvi/ItemPSVI.java new file mode 100644 index 0000000..e63b29b --- /dev/null +++ b/hrmsEjb/org/apache/xerces/xni/psvi/ItemPSVI.java @@ -0,0 +1,37 @@ +package org.apache.xerces.xni.psvi; + +import org.apache.xerces.impl.xs.psvi.StringList; +import org.apache.xerces.impl.xs.psvi.XSSimpleTypeDefinition; +import org.apache.xerces.impl.xs.psvi.XSTypeDefinition; + +public interface ItemPSVI { + public static final short VALIDITY_NOTKNOWN = 0; + + public static final short VALIDITY_INVALID = 1; + + public static final short VALIDITY_VALID = 2; + + public static final short VALIDATION_NONE = 0; + + public static final short VALIDATION_PARTIAL = 1; + + public static final short VALIDATION_FULL = 2; + + short getValidationAttempted(); + + short getValidity(); + + boolean getIsSchemaSpecified(); + + String getSchemaDefault(); + + String getSchemaNormalizedValue(); + + String getValidationContext(); + + StringList getErrorCodes(); + + XSSimpleTypeDefinition getMemberTypeDefinition(); + + XSTypeDefinition getTypeDefinition(); +} diff --git a/hrmsEjb/org/nfunk/jep/ASTConstant.java b/hrmsEjb/org/nfunk/jep/ASTConstant.java new file mode 100644 index 0000000..ee2c651 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ASTConstant.java @@ -0,0 +1,29 @@ +package org.nfunk.jep; + +public class ASTConstant extends SimpleNode { + private Object value; + + public ASTConstant(int paramInt) { + super(paramInt); + } + + public ASTConstant(Parser paramParser, int paramInt) { + super(paramParser, paramInt); + } + + public void setValue(Object paramObject) { + this.value = paramObject; + } + + public Object getValue() { + return this.value; + } + + public Object jjtAccept(ParserVisitor paramParserVisitor, Object paramObject) throws ParseException { + return paramParserVisitor.visit(this, paramObject); + } + + public String toString() { + return "Constant: " + this.value; + } +} diff --git a/hrmsEjb/org/nfunk/jep/ASTFunNode.java b/hrmsEjb/org/nfunk/jep/ASTFunNode.java new file mode 100644 index 0000000..710899f --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ASTFunNode.java @@ -0,0 +1,54 @@ +package org.nfunk.jep; + +import org.nfunk.jep.function.PostfixMathCommandI; + +public class ASTFunNode extends SimpleNode { + private PostfixMathCommandI pfmc; + + private String name; + + private Operator opID = null; + + public ASTFunNode(int paramInt) { + super(paramInt); + } + + public ASTFunNode(Parser paramParser, int paramInt) { + super(paramParser, paramInt); + } + + public Object jjtAccept(ParserVisitor paramParserVisitor, Object paramObject) throws ParseException { + return paramParserVisitor.visit(this, paramObject); + } + + public void setFunction(String paramString, PostfixMathCommandI paramPostfixMathCommandI) { + this.name = paramString; + this.pfmc = paramPostfixMathCommandI; + } + + public void setOperator(Operator paramOperator) { + this.opID = paramOperator; + this.pfmc = paramOperator.getPFMC(); + this.name = paramOperator.getName(); + } + + public String toString() { + return "Function \"" + this.name + "\""; + } + + public PostfixMathCommandI getPFMC() { + return this.pfmc; + } + + public String getName() { + return this.name; + } + + public Operator getOperator() { + return this.opID; + } + + public boolean isOperator() { + return (this.opID != null); + } +} diff --git a/hrmsEjb/org/nfunk/jep/ASTStart.java b/hrmsEjb/org/nfunk/jep/ASTStart.java new file mode 100644 index 0000000..bd76daf --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ASTStart.java @@ -0,0 +1,15 @@ +package org.nfunk.jep; + +public class ASTStart extends SimpleNode { + public ASTStart(int paramInt) { + super(paramInt); + } + + public ASTStart(Parser paramParser, int paramInt) { + super(paramParser, paramInt); + } + + public Object jjtAccept(ParserVisitor paramParserVisitor, Object paramObject) throws ParseException { + return paramParserVisitor.visit(this, paramObject); + } +} diff --git a/hrmsEjb/org/nfunk/jep/ASTVarNode.java b/hrmsEjb/org/nfunk/jep/ASTVarNode.java new file mode 100644 index 0000000..16db597 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ASTVarNode.java @@ -0,0 +1,34 @@ +package org.nfunk.jep; + +public class ASTVarNode extends SimpleNode { + private Variable var; + + public ASTVarNode(int paramInt) { + super(paramInt); + this.var = null; + } + + public ASTVarNode(Parser paramParser, int paramInt) { + super(paramParser, paramInt); + } + + public Object jjtAccept(ParserVisitor paramParserVisitor, Object paramObject) throws ParseException { + return paramParserVisitor.visit(this, paramObject); + } + + public void setVar(Variable paramVariable) { + this.var = paramVariable; + } + + public Variable getVar() { + return this.var; + } + + public String getName() { + return this.var.getName(); + } + + public String toString() { + return "Variable: \"" + getName() + "\""; + } +} diff --git a/hrmsEjb/org/nfunk/jep/EvaluatorVisitor.java b/hrmsEjb/org/nfunk/jep/EvaluatorVisitor.java new file mode 100644 index 0000000..92643c4 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/EvaluatorVisitor.java @@ -0,0 +1,84 @@ +package org.nfunk.jep; + +import java.util.Stack; +import java.util.Vector; +import org.nfunk.jep.function.PostfixMathCommandI; +import org.nfunk.jep.function.SpecialEvaluationI; + +public class EvaluatorVisitor implements ParserVisitor { + protected Stack stack = new Stack(); + + protected Vector errorList = null; + + protected SymbolTable symTab = null; + + protected boolean errorFlag; + + private static final boolean debug = false; + + protected void addToErrorList(String paramString) { + if (this.errorList != null) + this.errorList.addElement(paramString); + } + + public Object getValue(Node paramNode, Vector paramVector, SymbolTable paramSymbolTable) throws Exception { + if (paramNode == null) + throw new IllegalArgumentException("topNode parameter is null"); + this.errorList = paramVector; + this.symTab = paramSymbolTable; + this.errorFlag = false; + this.stack.removeAllElements(); + try { + paramNode.jjtAccept(this, null); + } catch (ParseException parseException) { + addToErrorList(parseException.getMessage()); + throw parseException; + } + if (this.errorFlag || this.stack.size() != 1) + throw new Exception("EvaluatorVisitor.getValue(): Error during evaluation"); + return this.stack.pop(); + } + + public Object visit(SimpleNode paramSimpleNode, Object paramObject) throws ParseException { + throw new ParseException("No visit method for " + paramSimpleNode.getClass().toString()); + } + + public Object visit(ASTStart paramASTStart, Object paramObject) throws ParseException { + throw new ParseException("Start node encountered during evaluation"); + } + + public Object visit(ASTFunNode paramASTFunNode, Object paramObject) throws ParseException { + if (paramASTFunNode == null) + return null; + PostfixMathCommandI postfixMathCommandI = paramASTFunNode.getPFMC(); + if (postfixMathCommandI == null) + throw new ParseException("No function class associated with " + paramASTFunNode.getName()); + if (postfixMathCommandI instanceof SpecialEvaluationI) + return ((SpecialEvaluationI)paramASTFunNode.getPFMC()).evaluate(paramASTFunNode, paramObject, this, this.stack); + paramObject = paramASTFunNode.childrenAccept(this, paramObject); + if (postfixMathCommandI.getNumberOfParameters() == -1) + postfixMathCommandI.setCurNumberOfParameters(paramASTFunNode.jjtGetNumChildren()); + postfixMathCommandI.run(this.stack); + return paramObject; + } + + public Object visit(ASTVarNode paramASTVarNode, Object paramObject) throws ParseException { + Variable variable = paramASTVarNode.getVar(); + if (variable == null) { + String str = "Could not evaluate " + paramASTVarNode.getName() + ": "; + throw new ParseException(str + " variable not set"); + } + Object object = variable.getValue(); + if (object == null) { + String str = "Could not evaluate " + paramASTVarNode.getName() + ": "; + throw new ParseException(str + "the variable was not found in the symbol table"); + } + this.stack.push(object); + return paramObject; + } + + public Object visit(ASTConstant paramASTConstant, Object paramObject) { + this.stack.push(paramASTConstant.getValue()); + return paramObject; + } +} diff --git a/hrmsEjb/org/nfunk/jep/FunctionTable.java b/hrmsEjb/org/nfunk/jep/FunctionTable.java new file mode 100644 index 0000000..f7f62ed --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/FunctionTable.java @@ -0,0 +1,22 @@ +package org.nfunk.jep; + +import java.util.Hashtable; +import org.nfunk.jep.function.PostfixMathCommandI; + +public class FunctionTable extends Hashtable { + public Object put(String paramString, PostfixMathCommandI paramPostfixMathCommandI) { + return super.put(paramString, paramPostfixMathCommandI); + } + + public Object put(Object paramObject1, Object paramObject2) { + return put((String)paramObject1, (PostfixMathCommandI)paramObject2); + } + + public PostfixMathCommandI get(String paramString) { + return super.get(paramString); + } + + public Object get(Object paramObject) { + return get((String)paramObject); + } +} diff --git a/hrmsEjb/org/nfunk/jep/JEP.java b/hrmsEjb/org/nfunk/jep/JEP.java new file mode 100644 index 0000000..a010b01 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/JEP.java @@ -0,0 +1,327 @@ +package org.nfunk.jep; + +import java.io.StringReader; +import java.util.Vector; +import org.nfunk.jep.function.Abs; +import org.nfunk.jep.function.ArcCosine; +import org.nfunk.jep.function.ArcCosineH; +import org.nfunk.jep.function.ArcSine; +import org.nfunk.jep.function.ArcSineH; +import org.nfunk.jep.function.ArcTanH; +import org.nfunk.jep.function.ArcTangent; +import org.nfunk.jep.function.ArcTangent2; +import org.nfunk.jep.function.Arg; +import org.nfunk.jep.function.ComplexPFMC; +import org.nfunk.jep.function.Cosine; +import org.nfunk.jep.function.CosineH; +import org.nfunk.jep.function.Exp; +import org.nfunk.jep.function.If; +import org.nfunk.jep.function.Imaginary; +import org.nfunk.jep.function.Logarithm; +import org.nfunk.jep.function.Modulus; +import org.nfunk.jep.function.NaturalLogarithm; +import org.nfunk.jep.function.Polar; +import org.nfunk.jep.function.PostfixMathCommandI; +import org.nfunk.jep.function.Random; +import org.nfunk.jep.function.Real; +import org.nfunk.jep.function.Sine; +import org.nfunk.jep.function.SineH; +import org.nfunk.jep.function.SquareRoot; +import org.nfunk.jep.function.Str; +import org.nfunk.jep.function.Sum; +import org.nfunk.jep.function.TanH; +import org.nfunk.jep.function.Tangent; +import org.nfunk.jep.type.Complex; +import org.nfunk.jep.type.DoubleNumberFactory; +import org.nfunk.jep.type.NumberFactory; + +public class JEP { + private static final boolean debug = false; + + private boolean traverse = false; + + protected boolean allowUndeclared = false; + + protected boolean allowAssignment; + + protected boolean implicitMul; + + protected SymbolTable symTab; + + protected FunctionTable funTab; + + protected Vector errorList; + + protected Parser parser; + + private Node topNode = null; + + protected EvaluatorVisitor ev; + + protected NumberFactory numberFactory; + + protected OperatorSet opSet; + + public JEP() { + this.allowAssignment = false; + this.implicitMul = false; + this.numberFactory = (NumberFactory)new DoubleNumberFactory(); + this.opSet = new OperatorSet(); + initSymTab(); + initFunTab(); + this.errorList = new Vector(); + this.ev = new EvaluatorVisitor(); + this.parser = new Parser(new StringReader("")); + } + + public JEP(boolean paramBoolean1, boolean paramBoolean2, boolean paramBoolean3, NumberFactory paramNumberFactory) { + this.implicitMul = paramBoolean3; + if (paramNumberFactory == null) { + this.numberFactory = (NumberFactory)new DoubleNumberFactory(); + } else { + this.numberFactory = paramNumberFactory; + } + initSymTab(); + initFunTab(); + this.errorList = new Vector(); + this.ev = new EvaluatorVisitor(); + this.parser = new Parser(new StringReader("")); + parseExpression(""); + } + + protected JEP(JEP paramJEP) { + this.allowAssignment = paramJEP.allowAssignment; + this.implicitMul = paramJEP.implicitMul; + this.ev = paramJEP.ev; + this.funTab = paramJEP.funTab; + this.numberFactory = paramJEP.numberFactory; + this.parser = paramJEP.parser; + this.symTab = paramJEP.symTab; + this.errorList = paramJEP.errorList; + } + + public void initSymTab() { + this.symTab = new SymbolTable(new VariableFactory()); + } + + public void initFunTab() { + this.funTab = new FunctionTable(); + } + + public void addStandardFunctions() { + this.funTab.put("sin", (PostfixMathCommandI)new Sine()); + this.funTab.put("cos", (PostfixMathCommandI)new Cosine()); + this.funTab.put("tan", (PostfixMathCommandI)new Tangent()); + this.funTab.put("asin", (PostfixMathCommandI)new ArcSine()); + this.funTab.put("acos", (PostfixMathCommandI)new ArcCosine()); + this.funTab.put("atan", (PostfixMathCommandI)new ArcTangent()); + this.funTab.put("atan2", (PostfixMathCommandI)new ArcTangent2()); + this.funTab.put("sinh", (PostfixMathCommandI)new SineH()); + this.funTab.put("cosh", (PostfixMathCommandI)new CosineH()); + this.funTab.put("tanh", (PostfixMathCommandI)new TanH()); + this.funTab.put("asinh", (PostfixMathCommandI)new ArcSineH()); + this.funTab.put("acosh", (PostfixMathCommandI)new ArcCosineH()); + this.funTab.put("atanh", (PostfixMathCommandI)new ArcTanH()); + this.funTab.put("log", (PostfixMathCommandI)new Logarithm()); + this.funTab.put("ln", (PostfixMathCommandI)new NaturalLogarithm()); + this.funTab.put("exp", (PostfixMathCommandI)new Exp()); + this.funTab.put("sqrt", (PostfixMathCommandI)new SquareRoot()); + this.funTab.put("abs", (PostfixMathCommandI)new Abs()); + this.funTab.put("mod", (PostfixMathCommandI)new Modulus()); + this.funTab.put("sum", (PostfixMathCommandI)new Sum()); + this.funTab.put("rand", (PostfixMathCommandI)new Random()); + this.funTab.put("if", (PostfixMathCommandI)new If()); + this.funTab.put("str", (PostfixMathCommandI)new Str()); + } + + public void addStandardConstants() { + this.symTab.addConstant("pi", new Double(Math.PI)); + this.symTab.addConstant("e", new Double(Math.E)); + } + + public void addComplex() { + this.symTab.addConstant("i", new Complex(0.0D, 1.0D)); + this.funTab.put("re", (PostfixMathCommandI)new Real()); + this.funTab.put("im", (PostfixMathCommandI)new Imaginary()); + this.funTab.put("arg", (PostfixMathCommandI)new Arg()); + this.funTab.put("cmod", (PostfixMathCommandI)new Abs()); + this.funTab.put("complex", (PostfixMathCommandI)new ComplexPFMC()); + this.funTab.put("polar", (PostfixMathCommandI)new Polar()); + } + + public void addFunction(String paramString, PostfixMathCommandI paramPostfixMathCommandI) { + this.funTab.put(paramString, paramPostfixMathCommandI); + } + + public Double addVariable(String paramString, double paramDouble) { + Double double_ = new Double(paramDouble); + this.symTab.makeVarIfNeeded(paramString, double_); + return double_; + } + + public void addConstant(String paramString, Object paramObject) { + this.symTab.addConstant(paramString, paramObject); + } + + public Complex addVariable(String paramString, double paramDouble1, double paramDouble2) { + Complex complex = new Complex(paramDouble1, paramDouble2); + this.symTab.makeVarIfNeeded(paramString, complex); + return complex; + } + + public void addVariable(String paramString, Object paramObject) { + this.symTab.makeVarIfNeeded(paramString, paramObject); + } + + public Object removeVariable(String paramString) { + return this.symTab.remove(paramString); + } + + public Object getVarValue(String paramString) { + return this.symTab.getVar(paramString).getValue(); + } + + public boolean setVarValue(String paramString, Object paramObject) { + return this.symTab.setVarValue(paramString, paramObject); + } + + public Variable getVar(String paramString) { + return this.symTab.getVar(paramString); + } + + public Object removeFunction(String paramString) { + return this.funTab.remove(paramString); + } + + public void setTraverse(boolean paramBoolean) { + this.traverse = paramBoolean; + } + + public boolean getTraverse() { + return this.traverse; + } + + public void setImplicitMul(boolean paramBoolean) { + this.implicitMul = paramBoolean; + } + + public boolean getImplicitMul() { + return this.implicitMul; + } + + public void setAllowUndeclared(boolean paramBoolean) { + this.allowUndeclared = paramBoolean; + } + + public boolean getAllowUndeclared() { + return this.allowUndeclared; + } + + public void setAllowAssignment(boolean paramBoolean) { + this.allowAssignment = paramBoolean; + } + + public boolean getAllowAssignment() { + return this.allowAssignment; + } + + public void parseExpression(String paramString) { + StringReader stringReader = new StringReader(paramString); + try { + this.errorList.removeAllElements(); + this.topNode = this.parser.parseStream(stringReader, this); + } catch (Throwable throwable) { + this.topNode = null; + if (throwable instanceof ParseException) { + this.errorList.addElement(((ParseException)throwable).getMessage()); + } else { + this.errorList.addElement("Syntax error"); + } + } + if (this.traverse && !hasError()) { + ParserDumpVisitor parserDumpVisitor = new ParserDumpVisitor(); + try { + this.topNode.jjtAccept(parserDumpVisitor, null); + } catch (ParseException parseException) { + this.errorList.addElement(parseException.getMessage()); + } + } + } + + public Node parse(String paramString) throws ParseException { + StringReader stringReader = new StringReader(paramString); + return this.parser.parseStream(stringReader, this); + } + + public Object evaluate(Node paramNode) throws Exception { + return this.ev.getValue(paramNode, new Vector(), this.symTab); + } + + public double getValue() { + Object object = getValueAsObject(); + if (object == null) + return Double.NaN; + if (object instanceof Complex) { + Complex complex = (Complex)object; + return (complex.im() != 0.0D) ? Double.NaN : complex.re(); + } + return (object != null && object instanceof Number) ? ((Number)object).doubleValue() : Double.NaN; + } + + public Complex getComplexValue() { + Object object = getValueAsObject(); + return (object == null) ? null : ((object instanceof Complex) ? (Complex)object : ((object instanceof Number) ? new Complex(((Number)object).doubleValue(), 0.0D) : null)); + } + + public Object getValueAsObject() { + if (this.topNode != null && !hasError()) { + Object object; + try { + object = this.ev.getValue(this.topNode, this.errorList, this.symTab); + } catch (Exception exception) { + this.errorList.addElement("Error during evaluation"); + return null; + } + return object; + } + return null; + } + + public boolean hasError() { + return !this.errorList.isEmpty(); + } + + public String getErrorInfo() { + if (hasError()) { + String str = ""; + for (byte b = 0; b < this.errorList.size(); b++) + str = str + this.errorList.elementAt(b) + "\n"; + return str; + } + return null; + } + + public Node getTopNode() { + return this.topNode; + } + + public SymbolTable getSymbolTable() { + return this.symTab; + } + + public FunctionTable getFunctionTable() { + return this.funTab; + } + + public NumberFactory getNumberFactory() { + return this.numberFactory; + } + + public OperatorSet getOperatorSet() { + return this.opSet; + } + + public Parser getParser() { + return this.parser; + } +} diff --git a/hrmsEjb/org/nfunk/jep/JJTParserState.java b/hrmsEjb/org/nfunk/jep/JJTParserState.java new file mode 100644 index 0000000..a35a959 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/JJTParserState.java @@ -0,0 +1,91 @@ +package org.nfunk.jep; + +import java.util.Stack; + +class JJTParserState { + private Stack nodes = new Stack(); + + private Stack marks = new Stack(); + + private int sp = 0; + + private int mk = 0; + + private boolean node_created; + + boolean nodeCreated() { + return this.node_created; + } + + void reset() { + this.nodes.removeAllElements(); + this.marks.removeAllElements(); + this.sp = 0; + this.mk = 0; + } + + Node rootNode() { + return this.nodes.elementAt(0); + } + + void pushNode(Node paramNode) { + this.nodes.push(paramNode); + this.sp++; + } + + Node popNode() { + if (--this.sp < this.mk) + this.mk = ((Integer)this.marks.pop()).intValue(); + return this.nodes.pop(); + } + + Node peekNode() { + return this.nodes.peek(); + } + + int nodeArity() { + return this.sp - this.mk; + } + + void clearNodeScope(Node paramNode) { + while (this.sp > this.mk) + popNode(); + this.mk = ((Integer)this.marks.pop()).intValue(); + } + + void openNodeScope(Node paramNode) { + this.marks.push(new Integer(this.mk)); + this.mk = this.sp; + paramNode.jjtOpen(); + } + + void closeNodeScope(Node paramNode, int paramInt) { + this.mk = ((Integer)this.marks.pop()).intValue(); + while (paramInt-- > 0) { + Node node = popNode(); + node.jjtSetParent(paramNode); + paramNode.jjtAddChild(node, paramInt); + } + paramNode.jjtClose(); + pushNode(paramNode); + this.node_created = true; + } + + void closeNodeScope(Node paramNode, boolean paramBoolean) { + if (paramBoolean) { + int i = nodeArity(); + this.mk = ((Integer)this.marks.pop()).intValue(); + while (i-- > 0) { + Node node = popNode(); + node.jjtSetParent(paramNode); + paramNode.jjtAddChild(node, i); + } + paramNode.jjtClose(); + pushNode(paramNode); + this.node_created = true; + } else { + this.mk = ((Integer)this.marks.pop()).intValue(); + this.node_created = false; + } + } +} diff --git a/hrmsEjb/org/nfunk/jep/JavaCharStream.java b/hrmsEjb/org/nfunk/jep/JavaCharStream.java new file mode 100644 index 0000000..279967c --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/JavaCharStream.java @@ -0,0 +1,418 @@ +package org.nfunk.jep; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; + +public class JavaCharStream { + public static final boolean staticFlag = false; + + public int bufpos = -1; + + int bufsize; + + int available; + + int tokenBegin; + + protected int[] bufline; + + protected int[] bufcolumn; + + protected int column = 0; + + protected int line = 1; + + protected boolean prevCharIsCR = false; + + protected boolean prevCharIsLF = false; + + protected Reader inputStream; + + protected char[] nextCharBuf; + + protected char[] buffer; + + protected int maxNextCharInd = 0; + + protected int nextCharInd = -1; + + protected int inBuf = 0; + + static final int hexval(char paramChar) throws IOException { + switch (paramChar) { + case '0': + return 0; + case '1': + return 1; + case '2': + return 2; + case '3': + return 3; + case '4': + return 4; + case '5': + return 5; + case '6': + return 6; + case '7': + return 7; + case '8': + return 8; + case '9': + return 9; + case 'A': + case 'a': + return 10; + case 'B': + case 'b': + return 11; + case 'C': + case 'c': + return 12; + case 'D': + case 'd': + return 13; + case 'E': + case 'e': + return 14; + case 'F': + case 'f': + return 15; + } + throw new IOException(); + } + + protected void ExpandBuff(boolean paramBoolean) { + char[] arrayOfChar = new char[this.bufsize + 2048]; + int[] arrayOfInt1 = new int[this.bufsize + 2048]; + int[] arrayOfInt2 = new int[this.bufsize + 2048]; + try { + if (paramBoolean) { + System.arraycopy(this.buffer, this.tokenBegin, arrayOfChar, 0, this.bufsize - this.tokenBegin); + System.arraycopy(this.buffer, 0, arrayOfChar, this.bufsize - this.tokenBegin, this.bufpos); + this.buffer = arrayOfChar; + System.arraycopy(this.bufline, this.tokenBegin, arrayOfInt1, 0, this.bufsize - this.tokenBegin); + System.arraycopy(this.bufline, 0, arrayOfInt1, this.bufsize - this.tokenBegin, this.bufpos); + this.bufline = arrayOfInt1; + System.arraycopy(this.bufcolumn, this.tokenBegin, arrayOfInt2, 0, this.bufsize - this.tokenBegin); + System.arraycopy(this.bufcolumn, 0, arrayOfInt2, this.bufsize - this.tokenBegin, this.bufpos); + this.bufcolumn = arrayOfInt2; + this.bufpos += this.bufsize - this.tokenBegin; + } else { + System.arraycopy(this.buffer, this.tokenBegin, arrayOfChar, 0, this.bufsize - this.tokenBegin); + this.buffer = arrayOfChar; + System.arraycopy(this.bufline, this.tokenBegin, arrayOfInt1, 0, this.bufsize - this.tokenBegin); + this.bufline = arrayOfInt1; + System.arraycopy(this.bufcolumn, this.tokenBegin, arrayOfInt2, 0, this.bufsize - this.tokenBegin); + this.bufcolumn = arrayOfInt2; + this.bufpos -= this.tokenBegin; + } + } catch (Throwable throwable) { + throw new Error(throwable.getMessage()); + } + this.available = this.bufsize += 2048; + this.tokenBegin = 0; + } + + protected void FillBuff() throws IOException { + if (this.maxNextCharInd == 4096) + this.maxNextCharInd = this.nextCharInd = 0; + try { + int i; + if ((i = this.inputStream.read(this.nextCharBuf, this.maxNextCharInd, 4096 - this.maxNextCharInd)) == -1) { + this.inputStream.close(); + throw new IOException(); + } + this.maxNextCharInd += i; + return; + } catch (IOException iOException) { + if (this.bufpos != 0) { + this.bufpos--; + backup(0); + } else { + this.bufline[this.bufpos] = this.line; + this.bufcolumn[this.bufpos] = this.column; + } + throw iOException; + } + } + + protected char ReadByte() throws IOException { + if (++this.nextCharInd >= this.maxNextCharInd) + FillBuff(); + return this.nextCharBuf[this.nextCharInd]; + } + + public char BeginToken() throws IOException { + if (this.inBuf > 0) { + this.inBuf--; + if (++this.bufpos == this.bufsize) + this.bufpos = 0; + this.tokenBegin = this.bufpos; + return this.buffer[this.bufpos]; + } + this.tokenBegin = 0; + this.bufpos = -1; + return readChar(); + } + + protected void AdjustBuffSize() { + if (this.available == this.bufsize) { + if (this.tokenBegin > 2048) { + this.bufpos = 0; + this.available = this.tokenBegin; + } else { + ExpandBuff(false); + } + } else if (this.available > this.tokenBegin) { + this.available = this.bufsize; + } else if (this.tokenBegin - this.available < 2048) { + ExpandBuff(true); + } else { + this.available = this.tokenBegin; + } + } + + protected void UpdateLineColumn(char paramChar) { + this.column++; + if (this.prevCharIsLF) { + this.prevCharIsLF = false; + this.line += this.column = 1; + } else if (this.prevCharIsCR) { + this.prevCharIsCR = false; + if (paramChar == '\n') { + this.prevCharIsLF = true; + } else { + this.line += this.column = 1; + } + } + switch (paramChar) { + case '\r': + this.prevCharIsCR = true; + break; + case '\n': + this.prevCharIsLF = true; + break; + case '\t': + this.column--; + this.column += 8 - (this.column & 0x7); + break; + } + this.bufline[this.bufpos] = this.line; + this.bufcolumn[this.bufpos] = this.column; + } + + public char readChar() throws IOException { + if (this.inBuf > 0) { + this.inBuf--; + if (++this.bufpos == this.bufsize) + this.bufpos = 0; + return this.buffer[this.bufpos]; + } + if (++this.bufpos == this.available) + AdjustBuffSize(); + char c = ReadByte(); + if ((c = ReadByte()) == '\\') { + UpdateLineColumn(c); + byte b = 1; + while (true) { + if (++this.bufpos == this.available) + AdjustBuffSize(); + try { + this.buffer[this.bufpos] = c = ReadByte(); + if ((c = ReadByte()) != '\\') { + UpdateLineColumn(c); + if (c == 'u' && (b & 0x1) == 1) { + if (--this.bufpos < 0) { + this.bufpos = this.bufsize - 1; + break; + } + } else { + backup(b); + return '\\'; + } + } else { + UpdateLineColumn(c); + b++; + continue; + } + } catch (IOException iOException) { + if (b > 1) + backup(b); + return '\\'; + } + try { + break; + } catch (IOException iOException) { + throw new Error("Invalid escape character at line " + this.line + " column " + this.column + "."); + } + } + while ((c = ReadByte()) == 'u') + this.column++; + this.buffer[this.bufpos] = c = (char)(hexval(c) << 12 | hexval(ReadByte()) << 8 | hexval(ReadByte()) << 4 | hexval(ReadByte())); + this.column += 4; + if (b == 1) + return c; + backup(b - 1); + return '\\'; + } + UpdateLineColumn(c); + return c; + } + + public int getColumn() { + return this.bufcolumn[this.bufpos]; + } + + public int getLine() { + return this.bufline[this.bufpos]; + } + + public int getEndColumn() { + return this.bufcolumn[this.bufpos]; + } + + public int getEndLine() { + return this.bufline[this.bufpos]; + } + + public int getBeginColumn() { + return this.bufcolumn[this.tokenBegin]; + } + + public int getBeginLine() { + return this.bufline[this.tokenBegin]; + } + + public void backup(int paramInt) { + this.inBuf += paramInt; + if ((this.bufpos -= paramInt) < 0) + this.bufpos += this.bufsize; + } + + public JavaCharStream(Reader paramReader, int paramInt1, int paramInt2, int paramInt3) { + this.inputStream = paramReader; + this.line = paramInt1; + this.column = paramInt2 - 1; + this.available = this.bufsize = paramInt3; + this.buffer = new char[paramInt3]; + this.bufline = new int[paramInt3]; + this.bufcolumn = new int[paramInt3]; + this.nextCharBuf = new char[4096]; + } + + public JavaCharStream(Reader paramReader, int paramInt1, int paramInt2) { + this(paramReader, paramInt1, paramInt2, 4096); + } + + public JavaCharStream(Reader paramReader) { + this(paramReader, 1, 1, 4096); + } + + public void ReInit(Reader paramReader, int paramInt1, int paramInt2, int paramInt3) { + this.inputStream = paramReader; + this.line = paramInt1; + this.column = paramInt2 - 1; + if (this.buffer == null || paramInt3 != this.buffer.length) { + this.available = this.bufsize = paramInt3; + this.buffer = new char[paramInt3]; + this.bufline = new int[paramInt3]; + this.bufcolumn = new int[paramInt3]; + this.nextCharBuf = new char[4096]; + } + this.prevCharIsLF = this.prevCharIsCR = false; + this.tokenBegin = this.inBuf = this.maxNextCharInd = 0; + this.nextCharInd = this.bufpos = -1; + } + + public void ReInit(Reader paramReader, int paramInt1, int paramInt2) { + ReInit(paramReader, paramInt1, paramInt2, 4096); + } + + public void ReInit(Reader paramReader) { + ReInit(paramReader, 1, 1, 4096); + } + + public JavaCharStream(InputStream paramInputStream, int paramInt1, int paramInt2, int paramInt3) { + this(new InputStreamReader(paramInputStream), paramInt1, paramInt2, 4096); + } + + public JavaCharStream(InputStream paramInputStream, int paramInt1, int paramInt2) { + this(paramInputStream, paramInt1, paramInt2, 4096); + } + + public JavaCharStream(InputStream paramInputStream) { + this(paramInputStream, 1, 1, 4096); + } + + public void ReInit(InputStream paramInputStream, int paramInt1, int paramInt2, int paramInt3) { + ReInit(new InputStreamReader(paramInputStream), paramInt1, paramInt2, 4096); + } + + public void ReInit(InputStream paramInputStream, int paramInt1, int paramInt2) { + ReInit(paramInputStream, paramInt1, paramInt2, 4096); + } + + public void ReInit(InputStream paramInputStream) { + ReInit(paramInputStream, 1, 1, 4096); + } + + public String GetImage() { + return (this.bufpos >= this.tokenBegin) ? new String(this.buffer, this.tokenBegin, this.bufpos - this.tokenBegin + 1) : (new String(this.buffer, this.tokenBegin, this.bufsize - this.tokenBegin) + new String(this.buffer, 0, this.bufpos + 1)); + } + + public char[] GetSuffix(int paramInt) { + char[] arrayOfChar = new char[paramInt]; + if (this.bufpos + 1 >= paramInt) { + System.arraycopy(this.buffer, this.bufpos - paramInt + 1, arrayOfChar, 0, paramInt); + } else { + System.arraycopy(this.buffer, this.bufsize - paramInt - this.bufpos - 1, arrayOfChar, 0, paramInt - this.bufpos - 1); + System.arraycopy(this.buffer, 0, arrayOfChar, paramInt - this.bufpos - 1, this.bufpos + 1); + } + return arrayOfChar; + } + + public void Done() { + this.nextCharBuf = null; + this.buffer = null; + this.bufline = null; + this.bufcolumn = null; + } + + public void adjustBeginLineColumn(int paramInt1, int paramInt2) { + int j; + int i = this.tokenBegin; + if (this.bufpos >= this.tokenBegin) { + j = this.bufpos - this.tokenBegin + this.inBuf + 1; + } else { + j = this.bufsize - this.tokenBegin + this.bufpos + 1 + this.inBuf; + } + byte b = 0; + int k = 0; + int m = 0; + int n = 0; + int i1 = 0; + while (b < j && this.bufline[k = i % this.bufsize] == this.bufline[m = ++i % this.bufsize]) { + this.bufline[k] = paramInt1; + n = i1 + this.bufcolumn[m] - this.bufcolumn[k]; + this.bufcolumn[k] = paramInt2 + i1; + i1 = n; + b++; + } + if (b < j) { + this.bufline[k] = paramInt1++; + this.bufcolumn[k] = paramInt2 + i1; + while (b++ < j) { + if (this.bufline[k = i % this.bufsize] != this.bufline[++i % this.bufsize]) { + this.bufline[k] = paramInt1++; + continue; + } + this.bufline[k] = paramInt1; + } + } + this.line = this.bufline[k]; + this.column = this.bufcolumn[k]; + } +} diff --git a/hrmsEjb/org/nfunk/jep/Node.java b/hrmsEjb/org/nfunk/jep/Node.java new file mode 100644 index 0000000..3b97629 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/Node.java @@ -0,0 +1,19 @@ +package org.nfunk.jep; + +public interface Node { + void jjtOpen(); + + void jjtClose(); + + void jjtSetParent(Node paramNode); + + Node jjtGetParent(); + + void jjtAddChild(Node paramNode, int paramInt); + + Node jjtGetChild(int paramInt); + + int jjtGetNumChildren(); + + Object jjtAccept(ParserVisitor paramParserVisitor, Object paramObject) throws ParseException; +} diff --git a/hrmsEjb/org/nfunk/jep/Operator.java b/hrmsEjb/org/nfunk/jep/Operator.java new file mode 100644 index 0000000..7676b86 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/Operator.java @@ -0,0 +1,47 @@ +package org.nfunk.jep; + +import org.nfunk.jep.function.PostfixMathCommandI; + +public class Operator { + private String name; + + private String symbol; + + private PostfixMathCommandI pfmc; + + private Operator() {} + + public Operator(String paramString, PostfixMathCommandI paramPostfixMathCommandI) { + this(); + this.name = paramString; + this.pfmc = paramPostfixMathCommandI; + this.symbol = paramString; + } + + public Operator(String paramString1, String paramString2, PostfixMathCommandI paramPostfixMathCommandI) { + this(); + this.name = paramString1; + this.pfmc = paramPostfixMathCommandI; + this.symbol = paramString2; + } + + public final String getSymbol() { + return this.symbol; + } + + public final String getName() { + return this.name; + } + + public final PostfixMathCommandI getPFMC() { + return this.pfmc; + } + + public final void setPFMC(PostfixMathCommandI paramPostfixMathCommandI) { + this.pfmc = paramPostfixMathCommandI; + } + + public String toString() { + return "Operator: \"" + this.name + "\""; + } +} diff --git a/hrmsEjb/org/nfunk/jep/OperatorSet.java b/hrmsEjb/org/nfunk/jep/OperatorSet.java new file mode 100644 index 0000000..2572bb8 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/OperatorSet.java @@ -0,0 +1,153 @@ +package org.nfunk.jep; + +import org.nfunk.jep.function.Add; +import org.nfunk.jep.function.Assign; +import org.nfunk.jep.function.Comparative; +import org.nfunk.jep.function.Cross; +import org.nfunk.jep.function.Divide; +import org.nfunk.jep.function.Dot; +import org.nfunk.jep.function.List; +import org.nfunk.jep.function.Logical; +import org.nfunk.jep.function.Modulus; +import org.nfunk.jep.function.Multiply; +import org.nfunk.jep.function.Not; +import org.nfunk.jep.function.PostfixMathCommandI; +import org.nfunk.jep.function.Power; +import org.nfunk.jep.function.Subtract; +import org.nfunk.jep.function.UMinus; + +public class OperatorSet { + protected Operator OP_GT = new Operator(">", (PostfixMathCommandI)new Comparative(1)); + + protected Operator OP_LT = new Operator("<", (PostfixMathCommandI)new Comparative(0)); + + protected Operator OP_EQ = new Operator("==", (PostfixMathCommandI)new Comparative(5)); + + protected Operator OP_LE = new Operator("<=", (PostfixMathCommandI)new Comparative(2)); + + protected Operator OP_GE = new Operator(">=", (PostfixMathCommandI)new Comparative(3)); + + protected Operator OP_NE = new Operator("!=", (PostfixMathCommandI)new Comparative(4)); + + protected Operator OP_AND = new Operator("&&", (PostfixMathCommandI)new Logical(0)); + + protected Operator OP_OR = new Operator("||", (PostfixMathCommandI)new Logical(1)); + + protected Operator OP_NOT = new Operator("!", (PostfixMathCommandI)new Not()); + + protected Operator OP_ADD = new Operator("+", (PostfixMathCommandI)new Add()); + + protected Operator OP_SUBTRACT = new Operator("-", (PostfixMathCommandI)new Subtract()); + + protected Operator OP_UMINUS = new Operator("UMinus", "-", (PostfixMathCommandI)new UMinus()); + + protected Operator OP_MULTIPLY = new Operator("*", (PostfixMathCommandI)new Multiply()); + + protected Operator OP_DIVIDE = new Operator("/", (PostfixMathCommandI)new Divide()); + + protected Operator OP_MOD = new Operator("%", (PostfixMathCommandI)new Modulus()); + + protected Operator OP_UDIVIDE = new Operator("UDivide", "^-1", null); + + protected Operator OP_POWER = new Operator("^", (PostfixMathCommandI)new Power()); + + protected Operator OP_ASSIGN = new Operator("=", (PostfixMathCommandI)new Assign()); + + protected Operator OP_DOT = new Operator(".", (PostfixMathCommandI)new Dot()); + + protected Operator OP_CROSS = new Operator("^^", (PostfixMathCommandI)new Cross()); + + protected Operator OP_LIST = new Operator("LIST", (PostfixMathCommandI)new List()); + + public Operator[] getOperators() { + return new Operator[] { + this.OP_GT, this.OP_LT, this.OP_GE, this.OP_LE, this.OP_EQ, this.OP_NE, this.OP_AND, this.OP_OR, this.OP_NOT, this.OP_ADD, + this.OP_SUBTRACT, this.OP_UMINUS, this.OP_MULTIPLY, this.OP_DIVIDE, this.OP_MOD, this.OP_POWER, this.OP_ASSIGN, this.OP_DOT, this.OP_CROSS, this.OP_LIST }; + } + + public void printOperators() { + Operator[] arrayOfOperator = getOperators(); + for (byte b = 0; b < arrayOfOperator.length; b++) + System.out.println(arrayOfOperator[b].toString()); + } + + public Operator getAdd() { + return this.OP_ADD; + } + + public Operator getSubtract() { + return this.OP_SUBTRACT; + } + + public Operator getUMinus() { + return this.OP_UMINUS; + } + + public Operator getMultiply() { + return this.OP_MULTIPLY; + } + + public Operator getDivide() { + return this.OP_DIVIDE; + } + + public Operator getMod() { + return this.OP_MOD; + } + + public Operator getPower() { + return this.OP_POWER; + } + + public Operator getEQ() { + return this.OP_EQ; + } + + public Operator getNE() { + return this.OP_NE; + } + + public Operator getGE() { + return this.OP_GE; + } + + public Operator getGT() { + return this.OP_GT; + } + + public Operator getLE() { + return this.OP_LE; + } + + public Operator getLT() { + return this.OP_LT; + } + + public Operator getAnd() { + return this.OP_AND; + } + + public Operator getOr() { + return this.OP_OR; + } + + public Operator getNot() { + return this.OP_NOT; + } + + public Operator getAssign() { + return this.OP_ASSIGN; + } + + public Operator getDot() { + return this.OP_DOT; + } + + public Operator getCross() { + return this.OP_CROSS; + } + + public Operator getList() { + return this.OP_LIST; + } +} diff --git a/hrmsEjb/org/nfunk/jep/ParseException.java b/hrmsEjb/org/nfunk/jep/ParseException.java new file mode 100644 index 0000000..1c1777a --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ParseException.java @@ -0,0 +1,139 @@ +package org.nfunk.jep; + +public class ParseException extends Exception { + protected boolean specialConstructor = true; + + public Token currentToken; + + public int[][] expectedTokenSequences; + + public String[] tokenImage; + + protected String eol = System.getProperty("line.separator", "\n"); + + public ParseException(Token paramToken, int[][] paramArrayOfint, String[] paramArrayOfString) { + super(""); + this.currentToken = paramToken; + this.expectedTokenSequences = paramArrayOfint; + this.tokenImage = paramArrayOfString; + } + + public ParseException() {} + + public ParseException(String paramString) { + super(paramString); + } + + public String getMessage() { + if (!this.specialConstructor) + return super.getMessage(); + String str = ""; + int i = 0; + for (byte b1 = 0; b1 < this.expectedTokenSequences.length; b1++) { + if (i < (this.expectedTokenSequences[b1]).length) + i = (this.expectedTokenSequences[b1]).length; + for (byte b = 0; b < (this.expectedTokenSequences[b1]).length; b++) + str = str + this.tokenImage[this.expectedTokenSequences[b1][b]] + " "; + if (this.expectedTokenSequences[b1][(this.expectedTokenSequences[b1]).length - 1] != 0) + str = str + "..."; + str = str + this.eol + " "; + } + null = "Encountered \""; + Token token = this.currentToken.next; + for (byte b2 = 0; b2 < i; b2++) { + if (b2 != 0) + null = null + " "; + if (token.kind == 0) { + null = null + this.tokenImage[0]; + break; + } + null = null + add_escapes(token.image); + token = token.next; + } + null = null + "\" at line " + this.currentToken.next.beginLine + ", column " + this.currentToken.next.beginColumn; + null = null + "." + this.eol; + if (this.expectedTokenSequences.length == 1) { + null = null + "Was expecting:" + this.eol + " "; + } else { + null = null + "Was expecting one of:" + this.eol + " "; + } + return null + str; + } + + public String getErrorInfo() { + if (!this.specialConstructor) + try { + return super.getMessage() + " at column " + this.currentToken.next.beginColumn + "."; + } catch (Exception exception) { + return super.getMessage(); + } + String str = ""; + int i = 0; + for (byte b1 = 0; b1 < this.expectedTokenSequences.length; b1++) { + if (i < (this.expectedTokenSequences[b1]).length) + i = (this.expectedTokenSequences[b1]).length; + for (byte b = 0; b < (this.expectedTokenSequences[b1]).length; b++) + str = str + this.tokenImage[this.expectedTokenSequences[b1][b]] + " "; + if (this.expectedTokenSequences[b1][(this.expectedTokenSequences[b1]).length - 1] != 0) + str = str + "..."; + str = str + this.eol + " "; + } + null = "Unexpected \""; + Token token = this.currentToken.next; + for (byte b2 = 0; b2 < i; b2++) { + if (b2 != 0) + null = null + " "; + if (token.kind == 0) { + null = null + this.tokenImage[0]; + break; + } + null = null + add_escapes(token.image); + token = token.next; + } + return null + "\" at column " + this.currentToken.next.beginColumn + "."; + } + + protected String add_escapes(String paramString) { + StringBuffer stringBuffer = new StringBuffer(); + for (byte b = 0; b < paramString.length(); b++) { + char c; + switch (paramString.charAt(b)) { + case '\000': + break; + case '\b': + stringBuffer.append("\\b"); + break; + case '\t': + stringBuffer.append("\\t"); + break; + case '\n': + stringBuffer.append("\\n"); + break; + case '\f': + stringBuffer.append("\\f"); + break; + case '\r': + stringBuffer.append("\\r"); + break; + case '"': + stringBuffer.append("\\\""); + break; + case '\'': + stringBuffer.append("\\'"); + break; + case '\\': + stringBuffer.append("\\\\"); + break; + default: + if ((c = paramString.charAt(b)) < ' ' || c > '~') { + String str = "0000" + Integer.toString(c, 16); + stringBuffer.append("\\u" + str.substring(str.length() - 4, str.length())); + break; + } + stringBuffer.append(c); + break; + } + } + return stringBuffer.toString(); + } +} diff --git a/hrmsEjb/org/nfunk/jep/Parser.java b/hrmsEjb/org/nfunk/jep/Parser.java new file mode 100644 index 0000000..e562cad --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/Parser.java @@ -0,0 +1,1799 @@ +package org.nfunk.jep; + +import java.io.InputStream; +import java.io.Reader; +import java.util.Enumeration; +import java.util.Vector; + +public class Parser implements ParserTreeConstants, ParserConstants { + protected JJTParserState jjtree = new JJTParserState(); + + private JEP jep; + + private SymbolTable symTab; + + private OperatorSet opSet; + + private int initialTokenManagerState = 1; + + public ParserTokenManager token_source; + + JavaCharStream jj_input_stream; + + public Token token; + + public Token jj_nt; + + private int jj_ntk; + + private Token jj_scanpos; + + private Token jj_lastpos; + + private int jj_la; + + public boolean lookingAhead = false; + + private boolean jj_semLA; + + private int jj_gen; + + private final int[] jj_la1 = new int[22]; + + private static int[] jj_la1_0; + + private static int[] jj_la1_1; + + private final JJCalls[] jj_2_rtns = new JJCalls[8]; + + private boolean jj_rescan = false; + + private int jj_gc = 0; + + private final LookaheadSuccess jj_ls = new LookaheadSuccess(); + + private Vector jj_expentries = new Vector(); + + private int[] jj_expentry; + + private int jj_kind = -1; + + private int[] jj_lasttokens = new int[100]; + + private int jj_endpos; + + public Node parseStream(Reader paramReader, JEP paramJEP) throws ParseException { + restart(paramReader, paramJEP); + enable_tracing(); + ASTStart aSTStart = Start(); + if (aSTStart == null) + throw new ParseException("No expression entered"); + return aSTStart.jjtGetChild(0); + } + + public void restart(Reader paramReader, JEP paramJEP) { + ReInit(paramReader); + this.token_source.SwitchTo(this.initialTokenManagerState); + this.jep = paramJEP; + this.symTab = this.jep.getSymbolTable(); + this.opSet = this.jep.getOperatorSet(); + } + + public Node continueParse() throws ParseException { + ASTStart aSTStart = Start(); + return (aSTStart == null) ? null : aSTStart.jjtGetChild(0); + } + + private void addToErrorList(String paramString) { + this.jep.errorList.addElement(paramString); + } + + public void setInitialTokenManagerState(int paramInt) { + this.initialTokenManagerState = paramInt; + } + + private String replaceEscape(String paramString) { + int i = paramString.length(); + int j = 0; + String str1 = "tnrbf\\\"'"; + String str2 = "\t\n\r\b\f\\\"'"; + StringBuffer stringBuffer = new StringBuffer(); + int k; + while ((k = paramString.indexOf('\\', j)) != -1) { + stringBuffer.append(paramString.substring(j, k)); + if (k + 1 == i) + break; + char c = paramString.charAt(k + 1); + int m = str1.indexOf(c); + if (m == -1) { + stringBuffer.append('\\'); + stringBuffer.append(c); + } else { + stringBuffer.append(str2.charAt(m)); + } + j = k + 2; + } + if (j < i) + stringBuffer.append(paramString.substring(j)); + return stringBuffer.toString(); + } + + public final ASTStart Start() throws ParseException { + ASTStart aSTStart = new ASTStart(0); + boolean bool = true; + this.jjtree.openNodeScope(aSTStart); + try { + if (jj_2_1(1)) { + Expression(); + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 0: + jj_consume_token(0); + break; + case 19: + jj_consume_token(19); + break; + default: + this.jj_la1[0] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + this.jjtree.closeNodeScope(aSTStart, true); + bool = false; + return aSTStart; + } + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 0: + case 19: + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 0: + jj_consume_token(0); + break; + case 19: + jj_consume_token(19); + break; + default: + this.jj_la1[1] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + this.jjtree.closeNodeScope(aSTStart, true); + bool = false; + return null; + } + this.jj_la1[2] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTStart); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTStart, true); + } + } + + public final void Expression() throws ParseException { + if (jj_2_2(3)) { + AssignExpression(); + } else if (jj_2_3(1)) { + OrExpression(); + } else { + jj_consume_token(-1); + throw new ParseException(); + } + } + + public final void AssignExpression() throws ParseException { + ASTFunNode aSTFunNode = new ASTFunNode(2); + boolean bool = true; + this.jjtree.openNodeScope(aSTFunNode); + try { + Variable(); + jj_consume_token(18); + Expression(); + this.jjtree.closeNodeScope(aSTFunNode, 2); + bool = false; + if (!this.jep.getAllowAssignment()) + throw new ParseException("Syntax Error (assignment not enabled)"); + aSTFunNode.setOperator(this.opSet.getAssign()); + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTFunNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTFunNode, 2); + } + } + + public final void OrExpression() throws ParseException { + AndExpression(); + while (true) { + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 28: + break; + default: + this.jj_la1[3] = this.jj_gen; + break; + } + ASTFunNode aSTFunNode = new ASTFunNode(2); + boolean bool = true; + this.jjtree.openNodeScope(aSTFunNode); + try { + jj_consume_token(28); + AndExpression(); + this.jjtree.closeNodeScope(aSTFunNode, 2); + bool = false; + aSTFunNode.setOperator(this.opSet.getOr()); + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTFunNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTFunNode, 2); + } + } + } + + public final void AndExpression() throws ParseException { + EqualExpression(); + while (true) { + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 27: + break; + default: + this.jj_la1[4] = this.jj_gen; + break; + } + ASTFunNode aSTFunNode = new ASTFunNode(2); + boolean bool = true; + this.jjtree.openNodeScope(aSTFunNode); + try { + jj_consume_token(27); + EqualExpression(); + this.jjtree.closeNodeScope(aSTFunNode, 2); + bool = false; + aSTFunNode.setOperator(this.opSet.getAnd()); + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTFunNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTFunNode, 2); + } + } + } + + public final void EqualExpression() throws ParseException { + RelationalExpression(); + while (true) { + ASTFunNode aSTFunNode1; + boolean bool1; + ASTFunNode aSTFunNode2; + boolean bool2; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 23: + case 26: + break; + default: + this.jj_la1[5] = this.jj_gen; + break; + } + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 26: + aSTFunNode1 = new ASTFunNode(2); + bool1 = true; + this.jjtree.openNodeScope(aSTFunNode1); + try { + jj_consume_token(26); + RelationalExpression(); + this.jjtree.closeNodeScope(aSTFunNode1, 2); + bool1 = false; + aSTFunNode1.setOperator(this.opSet.getNE()); + continue; + } catch (Throwable throwable) { + if (bool1) { + this.jjtree.clearNodeScope(aSTFunNode1); + bool1 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool1) + this.jjtree.closeNodeScope(aSTFunNode1, 2); + } + case 23: + aSTFunNode2 = new ASTFunNode(2); + bool2 = true; + this.jjtree.openNodeScope(aSTFunNode2); + try { + jj_consume_token(23); + RelationalExpression(); + this.jjtree.closeNodeScope(aSTFunNode2, 2); + bool2 = false; + aSTFunNode2.setOperator(this.opSet.getEQ()); + continue; + } catch (Throwable throwable) { + if (bool2) { + this.jjtree.clearNodeScope(aSTFunNode2); + bool2 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool2) + this.jjtree.closeNodeScope(aSTFunNode2, 2); + } + } + this.jj_la1[6] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + + public final void RelationalExpression() throws ParseException { + AdditiveExpression(); + while (true) { + ASTFunNode aSTFunNode1; + boolean bool1; + ASTFunNode aSTFunNode2; + boolean bool2; + ASTFunNode aSTFunNode3; + boolean bool3; + ASTFunNode aSTFunNode4; + boolean bool4; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 21: + case 22: + case 24: + case 25: + break; + default: + this.jj_la1[7] = this.jj_gen; + break; + } + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 22: + aSTFunNode1 = new ASTFunNode(2); + bool1 = true; + this.jjtree.openNodeScope(aSTFunNode1); + try { + jj_consume_token(22); + AdditiveExpression(); + this.jjtree.closeNodeScope(aSTFunNode1, 2); + bool1 = false; + aSTFunNode1.setOperator(this.opSet.getLT()); + continue; + } catch (Throwable throwable) { + if (bool1) { + this.jjtree.clearNodeScope(aSTFunNode1); + bool1 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool1) + this.jjtree.closeNodeScope(aSTFunNode1, 2); + } + case 21: + aSTFunNode2 = new ASTFunNode(2); + bool2 = true; + this.jjtree.openNodeScope(aSTFunNode2); + try { + jj_consume_token(21); + AdditiveExpression(); + this.jjtree.closeNodeScope(aSTFunNode2, 2); + bool2 = false; + aSTFunNode2.setOperator(this.opSet.getGT()); + continue; + } catch (Throwable throwable) { + if (bool2) { + this.jjtree.clearNodeScope(aSTFunNode2); + bool2 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool2) + this.jjtree.closeNodeScope(aSTFunNode2, 2); + } + case 24: + aSTFunNode3 = new ASTFunNode(2); + bool3 = true; + this.jjtree.openNodeScope(aSTFunNode3); + try { + jj_consume_token(24); + AdditiveExpression(); + this.jjtree.closeNodeScope(aSTFunNode3, 2); + bool3 = false; + aSTFunNode3.setOperator(this.opSet.getLE()); + continue; + } catch (Throwable throwable) { + if (bool3) { + this.jjtree.clearNodeScope(aSTFunNode3); + bool3 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool3) + this.jjtree.closeNodeScope(aSTFunNode3, 2); + } + case 25: + aSTFunNode4 = new ASTFunNode(2); + bool4 = true; + this.jjtree.openNodeScope(aSTFunNode4); + try { + jj_consume_token(25); + AdditiveExpression(); + this.jjtree.closeNodeScope(aSTFunNode4, 2); + bool4 = false; + aSTFunNode4.setOperator(this.opSet.getGE()); + continue; + } catch (Throwable throwable) { + if (bool4) { + this.jjtree.clearNodeScope(aSTFunNode4); + bool4 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool4) + this.jjtree.closeNodeScope(aSTFunNode4, 2); + } + } + this.jj_la1[8] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + + public final void AdditiveExpression() throws ParseException { + MultiplicativeExpression(); + while (true) { + ASTFunNode aSTFunNode1; + boolean bool1; + ASTFunNode aSTFunNode2; + boolean bool2; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 29: + case 30: + break; + default: + this.jj_la1[9] = this.jj_gen; + break; + } + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 29: + aSTFunNode1 = new ASTFunNode(2); + bool1 = true; + this.jjtree.openNodeScope(aSTFunNode1); + try { + jj_consume_token(29); + MultiplicativeExpression(); + this.jjtree.closeNodeScope(aSTFunNode1, 2); + bool1 = false; + aSTFunNode1.setOperator(this.opSet.getAdd()); + continue; + } catch (Throwable throwable) { + if (bool1) { + this.jjtree.clearNodeScope(aSTFunNode1); + bool1 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool1) + this.jjtree.closeNodeScope(aSTFunNode1, 2); + } + case 30: + aSTFunNode2 = new ASTFunNode(2); + bool2 = true; + this.jjtree.openNodeScope(aSTFunNode2); + try { + jj_consume_token(30); + MultiplicativeExpression(); + this.jjtree.closeNodeScope(aSTFunNode2, 2); + bool2 = false; + aSTFunNode2.setOperator(this.opSet.getSubtract()); + continue; + } catch (Throwable throwable) { + if (bool2) { + this.jjtree.clearNodeScope(aSTFunNode2); + bool2 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool2) + this.jjtree.closeNodeScope(aSTFunNode2, 2); + } + } + this.jj_la1[10] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + + public final void MultiplicativeExpression() throws ParseException { + UnaryExpression(); + while (jj_2_4(1)) { + ASTFunNode aSTFunNode1; + boolean bool1; + ASTFunNode aSTFunNode2; + boolean bool2; + ASTFunNode aSTFunNode3; + boolean bool3; + ASTFunNode aSTFunNode4; + boolean bool4; + ASTFunNode aSTFunNode5; + boolean bool5; + if (jj_2_5(1)) { + ASTFunNode aSTFunNode = new ASTFunNode(2); + boolean bool = true; + this.jjtree.openNodeScope(aSTFunNode); + try { + PowerExpression(); + this.jjtree.closeNodeScope(aSTFunNode, 2); + bool = false; + if (!this.jep.implicitMul) + throw new ParseException("Syntax Error (implicit multiplication not enabled)"); + aSTFunNode.setOperator(this.opSet.getMultiply()); + continue; + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTFunNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTFunNode, 2); + } + } + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 31: + aSTFunNode1 = new ASTFunNode(2); + bool1 = true; + this.jjtree.openNodeScope(aSTFunNode1); + try { + jj_consume_token(31); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode1, 2); + bool1 = false; + aSTFunNode1.setOperator(this.opSet.getMultiply()); + continue; + } catch (Throwable throwable) { + if (bool1) { + this.jjtree.clearNodeScope(aSTFunNode1); + bool1 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool1) + this.jjtree.closeNodeScope(aSTFunNode1, 2); + } + case 32: + aSTFunNode2 = new ASTFunNode(2); + bool2 = true; + this.jjtree.openNodeScope(aSTFunNode2); + try { + jj_consume_token(32); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode2, 2); + bool2 = false; + aSTFunNode2.setOperator(this.opSet.getDot()); + continue; + } catch (Throwable throwable) { + if (bool2) { + this.jjtree.clearNodeScope(aSTFunNode2); + bool2 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool2) + this.jjtree.closeNodeScope(aSTFunNode2, 2); + } + case 37: + aSTFunNode3 = new ASTFunNode(2); + bool3 = true; + this.jjtree.openNodeScope(aSTFunNode3); + try { + jj_consume_token(37); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode3, 2); + bool3 = false; + aSTFunNode3.setOperator(this.opSet.getCross()); + continue; + } catch (Throwable throwable) { + if (bool3) { + this.jjtree.clearNodeScope(aSTFunNode3); + bool3 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool3) + this.jjtree.closeNodeScope(aSTFunNode3, 2); + } + case 33: + aSTFunNode4 = new ASTFunNode(2); + bool4 = true; + this.jjtree.openNodeScope(aSTFunNode4); + try { + jj_consume_token(33); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode4, 2); + bool4 = false; + aSTFunNode4.setOperator(this.opSet.getDivide()); + continue; + } catch (Throwable throwable) { + if (bool4) { + this.jjtree.clearNodeScope(aSTFunNode4); + bool4 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool4) + this.jjtree.closeNodeScope(aSTFunNode4, 2); + } + case 34: + aSTFunNode5 = new ASTFunNode(2); + bool5 = true; + this.jjtree.openNodeScope(aSTFunNode5); + try { + jj_consume_token(34); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode5, 2); + bool5 = false; + aSTFunNode5.setOperator(this.opSet.getMod()); + continue; + } catch (Throwable throwable) { + if (bool5) { + this.jjtree.clearNodeScope(aSTFunNode5); + bool5 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool5) + this.jjtree.closeNodeScope(aSTFunNode5, 2); + } + } + this.jj_la1[11] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + + public final void UnaryExpression() throws ParseException { + ASTFunNode aSTFunNode1; + boolean bool1; + ASTFunNode aSTFunNode2; + boolean bool2; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 29: + jj_consume_token(29); + UnaryExpression(); + return; + case 30: + aSTFunNode1 = new ASTFunNode(2); + bool1 = true; + this.jjtree.openNodeScope(aSTFunNode1); + try { + jj_consume_token(30); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode1, 1); + bool1 = false; + aSTFunNode1.setOperator(this.opSet.getUMinus()); + } catch (Throwable throwable) { + if (bool1) { + this.jjtree.clearNodeScope(aSTFunNode1); + bool1 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool1) + this.jjtree.closeNodeScope(aSTFunNode1, 1); + } + return; + case 35: + aSTFunNode2 = new ASTFunNode(2); + bool2 = true; + this.jjtree.openNodeScope(aSTFunNode2); + try { + jj_consume_token(35); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode2, 1); + bool2 = false; + aSTFunNode2.setOperator(this.opSet.getNot()); + } catch (Throwable throwable) { + if (bool2) { + this.jjtree.clearNodeScope(aSTFunNode2); + bool2 = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool2) + this.jjtree.closeNodeScope(aSTFunNode2, 1); + } + return; + } + this.jj_la1[12] = this.jj_gen; + if (jj_2_6(1)) { + PowerExpression(); + } else { + jj_consume_token(-1); + throw new ParseException(); + } + } + + public final void PowerExpression() throws ParseException { + ASTFunNode aSTFunNode; + boolean bool; + UnaryExpressionNotPlusMinus(); + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 36: + aSTFunNode = new ASTFunNode(2); + bool = true; + this.jjtree.openNodeScope(aSTFunNode); + try { + jj_consume_token(36); + UnaryExpression(); + this.jjtree.closeNodeScope(aSTFunNode, 2); + bool = false; + aSTFunNode.setOperator(this.opSet.getPower()); + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTFunNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTFunNode, 2); + } + return; + } + this.jj_la1[13] = this.jj_gen; + } + + public final void UnaryExpressionNotPlusMinus() throws ParseException { + String str = ""; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 7: + case 9: + case 11: + AnyConstant(); + return; + } + this.jj_la1[15] = this.jj_gen; + if (jj_2_7(1)) { + if (((getToken(1)).kind == 12 || (getToken(1)).kind == 15) && this.jep.funTab.containsKey((getToken(1)).image)) { + Function(); + } else { + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 12: + case 15: + Variable(); + return; + } + this.jj_la1[14] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } else { + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 40: + jj_consume_token(40); + Expression(); + jj_consume_token(41); + return; + case 38: + ListExpression(); + return; + } + this.jj_la1[16] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + + public final void ListExpression() throws ParseException { + ASTFunNode aSTFunNode = new ASTFunNode(2); + boolean bool = true; + this.jjtree.openNodeScope(aSTFunNode); + aSTFunNode.setOperator(this.opSet.getList()); + try { + jj_consume_token(38); + Expression(); + while (true) { + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 20: + break; + default: + this.jj_la1[17] = this.jj_gen; + jj_consume_token(39); + return; + } + jj_consume_token(20); + Expression(); + } + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTFunNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTFunNode, true); + } + } + + public final void Variable() throws ParseException { + String str = ""; + ASTVarNode aSTVarNode = new ASTVarNode(3); + boolean bool = true; + this.jjtree.openNodeScope(aSTVarNode); + try { + str = Identifier(); + this.jjtree.closeNodeScope(aSTVarNode, true); + bool = false; + if (this.symTab.containsKey(str)) { + aSTVarNode.setVar(this.symTab.getVar(str)); + } else if (this.jep.allowUndeclared) { + aSTVarNode.setVar(this.symTab.makeVarIfNeeded(str)); + } else { + addToErrorList("Unrecognized symbol \"" + str + "\""); + } + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTVarNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTVarNode, true); + } + } + + public final void Function() throws ParseException { + int i = 0; + String str = ""; + ASTFunNode aSTFunNode = new ASTFunNode(2); + boolean bool = true; + this.jjtree.openNodeScope(aSTFunNode); + try { + str = Identifier(); + if (this.jep.funTab.containsKey(str)) { + i = this.jep.funTab.get(str).getNumberOfParameters(); + aSTFunNode.setFunction(str, this.jep.funTab.get(str)); + } else { + addToErrorList("!!! Unrecognized function \"" + str + "\""); + } + jj_consume_token(40); + ArgumentList(i, str); + jj_consume_token(41); + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTFunNode); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTFunNode, true); + } + } + + public final void ArgumentList(int paramInt, String paramString) throws ParseException { + byte b = 0; + String str = ""; + if (jj_2_8(1)) { + Expression(); + b++; + while (true) { + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 20: + break; + default: + this.jj_la1[18] = this.jj_gen; + break; + } + jj_consume_token(20); + Expression(); + b++; + } + } + if (paramInt != b && paramInt != -1) { + str = "Function \"" + paramString + "\" requires " + paramInt + " parameter"; + if (paramInt != 1) + str = str + "s"; + addToErrorList(str); + } + } + + public final String Identifier() throws ParseException { + Token token; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 12: + token = jj_consume_token(12); + return token.image; + case 15: + token = jj_consume_token(15); + return token.image; + } + this.jj_la1[19] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + + public final void AnyConstant() throws ParseException { + ASTConstant aSTConstant = new ASTConstant(4); + boolean bool = true; + this.jjtree.openNodeScope(aSTConstant); + try { + Token token; + Object object; + String str; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 11: + token = jj_consume_token(11); + this.jjtree.closeNodeScope(aSTConstant, true); + bool = false; + str = token.image.substring(1, token.image.length() - 1); + str = replaceEscape(str); + aSTConstant.setValue(str); + break; + case 7: + case 9: + object = RealConstant(); + this.jjtree.closeNodeScope(aSTConstant, true); + bool = false; + aSTConstant.setValue(object); + break; + default: + this.jj_la1[20] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable throwable) { + if (bool) { + this.jjtree.clearNodeScope(aSTConstant); + bool = false; + } else { + this.jjtree.popNode(); + } + if (throwable instanceof RuntimeException) + throw (RuntimeException)throwable; + if (throwable instanceof ParseException) + throw (ParseException)throwable; + throw (Error)throwable; + } finally { + if (bool) + this.jjtree.closeNodeScope(aSTConstant, true); + } + } + + public final Object RealConstant() throws ParseException { + Token token; + Object object; + switch ((this.jj_ntk == -1) ? jj_ntk() : this.jj_ntk) { + case 7: + token = jj_consume_token(7); + break; + case 9: + token = jj_consume_token(9); + break; + default: + this.jj_la1[21] = this.jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + try { + object = this.jep.getNumberFactory().createNumber(token.image); + } catch (Exception exception) { + object = null; + addToErrorList("Can't parse \"" + token.image + "\""); + } + return object; + } + + private final boolean jj_2_1(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_1(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(0, paramInt); + } + } + + private final boolean jj_2_2(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_2(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(1, paramInt); + } + } + + private final boolean jj_2_3(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_3(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(2, paramInt); + } + } + + private final boolean jj_2_4(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_4(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(3, paramInt); + } + } + + private final boolean jj_2_5(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_5(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(4, paramInt); + } + } + + private final boolean jj_2_6(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_6(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(5, paramInt); + } + } + + private final boolean jj_2_7(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_7(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(6, paramInt); + } + } + + private final boolean jj_2_8(int paramInt) { + this.jj_la = paramInt; + this.jj_lastpos = this.jj_scanpos = this.token; + try { + return !jj_3_8(); + } catch (LookaheadSuccess lookaheadSuccess) { + return true; + } finally { + jj_save(7, paramInt); + } + } + + private final boolean jj_3R_10() { + return jj_3R_20() ? true : (jj_scan_token(18) ? true : (jj_3R_9())); + } + + private final boolean jj_3_8() { + return jj_3R_9(); + } + + private final boolean jj_3R_32() { + return jj_3R_35(); + } + + private final boolean jj_3R_17() { + return jj_3R_22(); + } + + private final boolean jj_3_3() { + return jj_3R_11(); + } + + private final boolean jj_3R_36() { + Token token = this.jj_scanpos; + if (jj_scan_token(7)) { + this.jj_scanpos = token; + if (jj_scan_token(9)) + return true; + } + return false; + } + + private final boolean jj_3R_9() { + Token token = this.jj_scanpos; + if (jj_3_2()) { + this.jj_scanpos = token; + if (jj_3_3()) + return true; + } + return false; + } + + private final boolean jj_3_2() { + return jj_3R_10(); + } + + private final boolean jj_3_6() { + return jj_3R_17(); + } + + private final boolean jj_3R_40() { + return jj_scan_token(35); + } + + private final boolean jj_3R_39() { + return jj_scan_token(30); + } + + private final boolean jj_3R_23() { + return jj_3R_24(); + } + + private final boolean jj_3R_38() { + return jj_scan_token(29); + } + + private final boolean jj_3R_37() { + Token token = this.jj_scanpos; + if (jj_3R_38()) { + this.jj_scanpos = token; + if (jj_3R_39()) { + this.jj_scanpos = token; + if (jj_3R_40()) { + this.jj_scanpos = token; + if (jj_3_6()) + return true; + } + } + } + return false; + } + + private final boolean jj_3_1() { + return jj_3R_9(); + } + + private final boolean jj_3R_29() { + return jj_3R_32(); + } + + private final boolean jj_3R_16() { + return jj_scan_token(34); + } + + private final boolean jj_3R_15() { + return jj_scan_token(33); + } + + private final boolean jj_3R_20() { + return jj_3R_24(); + } + + private final boolean jj_3R_14() { + return jj_scan_token(37); + } + + private final boolean jj_3R_25() { + return jj_3R_29(); + } + + private final boolean jj_3R_34() { + return jj_3R_36(); + } + + private final boolean jj_3R_13() { + return jj_scan_token(32); + } + + private final boolean jj_3R_31() { + return jj_scan_token(38); + } + + private final boolean jj_3R_12() { + return jj_scan_token(31); + } + + private final boolean jj_3R_19() { + return jj_3R_20(); + } + + private final boolean jj_3R_30() { + Token token = this.jj_scanpos; + if (jj_3R_33()) { + this.jj_scanpos = token; + if (jj_3R_34()) + return true; + } + return false; + } + + private final boolean jj_3R_33() { + return jj_scan_token(11); + } + + private final boolean jj_3R_28() { + return jj_3R_31(); + } + + private final boolean jj_3R_21() { + return jj_3R_25(); + } + + private final boolean jj_3R_27() { + return jj_scan_token(40); + } + + private final boolean jj_3_4() { + Token token = this.jj_scanpos; + if (jj_3_5()) { + this.jj_scanpos = token; + if (jj_3R_12()) { + this.jj_scanpos = token; + if (jj_3R_13()) { + this.jj_scanpos = token; + if (jj_3R_14()) { + this.jj_scanpos = token; + if (jj_3R_15()) { + this.jj_scanpos = token; + if (jj_3R_16()) + return true; + } + } + } + } + } + return false; + } + + private final boolean jj_3_5() { + return jj_3R_17(); + } + + private final boolean jj_3R_18() { + return jj_3R_23(); + } + + private final boolean jj_3R_24() { + Token token = this.jj_scanpos; + if (jj_scan_token(12)) { + this.jj_scanpos = token; + if (jj_scan_token(15)) + return true; + } + return false; + } + + private final boolean jj_3_7() { + Token token = this.jj_scanpos; + this.lookingAhead = true; + this.jj_semLA = (((getToken(1)).kind == 12 || (getToken(1)).kind == 15) && this.jep.funTab.containsKey((getToken(1)).image)); + this.lookingAhead = false; + if (!this.jj_semLA || jj_3R_18()) { + this.jj_scanpos = token; + if (jj_3R_19()) + return true; + } + return false; + } + + private final boolean jj_3R_35() { + return jj_3R_37(); + } + + private final boolean jj_3R_22() { + Token token = this.jj_scanpos; + if (jj_3R_26()) { + this.jj_scanpos = token; + if (jj_3_7()) { + this.jj_scanpos = token; + if (jj_3R_27()) { + this.jj_scanpos = token; + if (jj_3R_28()) + return true; + } + } + } + return false; + } + + private final boolean jj_3R_26() { + return jj_3R_30(); + } + + private final boolean jj_3R_11() { + return jj_3R_21(); + } + + private static void jj_la1_0() { + jj_la1_0 = new int[] { + 524289, 524289, 524289, 268435456, 134217728, 75497472, 75497472, 56623104, 56623104, 1610612736, + 1610612736, Integer.MIN_VALUE, 1610612736, 0, 36864, 2688, 0, 1048576, 1048576, 36864, + 2688, 640 }; + } + + private static void jj_la1_1() { + jj_la1_1 = new int[] { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 8, 16, 0, 0, 320, 0, 0, 0, + 0, 0 }; + } + + public Parser(InputStream paramInputStream) { + this.jj_input_stream = new JavaCharStream(paramInputStream, 1, 1); + this.token_source = new ParserTokenManager(this.jj_input_stream); + this.token = new Token(); + this.jj_ntk = -1; + this.jj_gen = 0; + byte b; + for (b = 0; b < 22; b++) + this.jj_la1[b] = -1; + for (b = 0; b < this.jj_2_rtns.length; b++) + this.jj_2_rtns[b] = new JJCalls(); + } + + public void ReInit(InputStream paramInputStream) { + this.jj_input_stream.ReInit(paramInputStream, 1, 1); + this.token_source.ReInit(this.jj_input_stream); + this.token = new Token(); + this.jj_ntk = -1; + this.jjtree.reset(); + this.jj_gen = 0; + byte b; + for (b = 0; b < 22; b++) + this.jj_la1[b] = -1; + for (b = 0; b < this.jj_2_rtns.length; b++) + this.jj_2_rtns[b] = new JJCalls(); + } + + public Parser(Reader paramReader) { + this.jj_input_stream = new JavaCharStream(paramReader, 1, 1); + this.token_source = new ParserTokenManager(this.jj_input_stream); + this.token = new Token(); + this.jj_ntk = -1; + this.jj_gen = 0; + byte b; + for (b = 0; b < 22; b++) + this.jj_la1[b] = -1; + for (b = 0; b < this.jj_2_rtns.length; b++) + this.jj_2_rtns[b] = new JJCalls(); + } + + public void ReInit(Reader paramReader) { + this.jj_input_stream.ReInit(paramReader, 1, 1); + this.token_source.ReInit(this.jj_input_stream); + this.token = new Token(); + this.jj_ntk = -1; + this.jjtree.reset(); + this.jj_gen = 0; + byte b; + for (b = 0; b < 22; b++) + this.jj_la1[b] = -1; + for (b = 0; b < this.jj_2_rtns.length; b++) + this.jj_2_rtns[b] = new JJCalls(); + } + + public Parser(ParserTokenManager paramParserTokenManager) { + this.token_source = paramParserTokenManager; + this.token = new Token(); + this.jj_ntk = -1; + this.jj_gen = 0; + byte b; + for (b = 0; b < 22; b++) + this.jj_la1[b] = -1; + for (b = 0; b < this.jj_2_rtns.length; b++) + this.jj_2_rtns[b] = new JJCalls(); + } + + public void ReInit(ParserTokenManager paramParserTokenManager) { + this.token_source = paramParserTokenManager; + this.token = new Token(); + this.jj_ntk = -1; + this.jjtree.reset(); + this.jj_gen = 0; + byte b; + for (b = 0; b < 22; b++) + this.jj_la1[b] = -1; + for (b = 0; b < this.jj_2_rtns.length; b++) + this.jj_2_rtns[b] = new JJCalls(); + } + + private final Token jj_consume_token(int paramInt) throws ParseException { + Token token; + if ((token = this.token).next != null) { + this.token = this.token.next; + } else { + this.token = this.token.next = this.token_source.getNextToken(); + } + this.jj_ntk = -1; + if (this.token.kind == paramInt) { + this.jj_gen++; + if (++this.jj_gc > 100) { + this.jj_gc = 0; + for (byte b = 0; b < this.jj_2_rtns.length; b++) { + for (JJCalls jJCalls = this.jj_2_rtns[b]; jJCalls != null; jJCalls = jJCalls.next) { + if (jJCalls.gen < this.jj_gen) + jJCalls.first = null; + } + } + } + return this.token; + } + this.token = token; + this.jj_kind = paramInt; + throw generateParseException(); + } + + private final boolean jj_scan_token(int paramInt) { + if (this.jj_scanpos == this.jj_lastpos) { + this.jj_la--; + if (this.jj_scanpos.next == null) { + this.jj_lastpos = this.jj_scanpos = this.jj_scanpos.next = this.token_source.getNextToken(); + } else { + this.jj_lastpos = this.jj_scanpos = this.jj_scanpos.next; + } + } else { + this.jj_scanpos = this.jj_scanpos.next; + } + if (this.jj_rescan) { + byte b = 0; + Token token; + for (token = this.token; token != null && token != this.jj_scanpos; token = token.next) + b++; + if (token != null) + jj_add_error_token(paramInt, b); + } + if (this.jj_scanpos.kind != paramInt) + return true; + if (this.jj_la == 0 && this.jj_scanpos == this.jj_lastpos) + throw this.jj_ls; + return false; + } + + public final Token getNextToken() { + if (this.token.next != null) { + this.token = this.token.next; + } else { + this.token = this.token.next = this.token_source.getNextToken(); + } + this.jj_ntk = -1; + this.jj_gen++; + return this.token; + } + + public final Token getToken(int paramInt) { + Token token = this.lookingAhead ? this.jj_scanpos : this.token; + for (byte b = 0; b < paramInt; b++) { + if (token.next != null) { + token = token.next; + } else { + token = token.next = this.token_source.getNextToken(); + } + } + return token; + } + + private final int jj_ntk() { + return ((this.jj_nt = this.token.next) == null) ? (this.jj_ntk = (this.token.next = this.token_source.getNextToken()).kind) : (this.jj_ntk = this.jj_nt.kind); + } + + private void jj_add_error_token(int paramInt1, int paramInt2) { + if (paramInt2 >= 100) + return; + if (paramInt2 == this.jj_endpos + 1) { + this.jj_lasttokens[this.jj_endpos++] = paramInt1; + } else if (this.jj_endpos != 0) { + this.jj_expentry = new int[this.jj_endpos]; + byte b; + for (b = 0; b < this.jj_endpos; b++) + this.jj_expentry[b] = this.jj_lasttokens[b]; + b = 0; + Enumeration enumeration = this.jj_expentries.elements(); + while (enumeration.hasMoreElements()) { + int[] arrayOfInt = enumeration.nextElement(); + if (arrayOfInt.length == this.jj_expentry.length) { + b = 1; + for (byte b1 = 0; b1 < this.jj_expentry.length; b1++) { + if (arrayOfInt[b1] != this.jj_expentry[b1]) { + b = 0; + break; + } + } + if (b != 0) + break; + } + } + if (b == 0) + this.jj_expentries.addElement(this.jj_expentry); + if (paramInt2 != 0) + this.jj_lasttokens[(this.jj_endpos = paramInt2) - 1] = paramInt1; + } + } + + public ParseException generateParseException() { + this.jj_expentries.removeAllElements(); + boolean[] arrayOfBoolean = new boolean[42]; + byte b1; + for (b1 = 0; b1 < 42; b1++) + arrayOfBoolean[b1] = false; + if (this.jj_kind >= 0) { + arrayOfBoolean[this.jj_kind] = true; + this.jj_kind = -1; + } + for (b1 = 0; b1 < 22; b1++) { + if (this.jj_la1[b1] == this.jj_gen) + for (byte b = 0; b < 32; b++) { + if ((jj_la1_0[b1] & 1 << b) != 0) + arrayOfBoolean[b] = true; + if ((jj_la1_1[b1] & 1 << b) != 0) + arrayOfBoolean[32 + b] = true; + } + } + for (b1 = 0; b1 < 42; b1++) { + if (arrayOfBoolean[b1]) { + this.jj_expentry = new int[1]; + this.jj_expentry[0] = b1; + this.jj_expentries.addElement(this.jj_expentry); + } + } + this.jj_endpos = 0; + jj_rescan_token(); + jj_add_error_token(0, 0); + int[][] arrayOfInt = new int[this.jj_expentries.size()][]; + for (byte b2 = 0; b2 < this.jj_expentries.size(); b2++) + arrayOfInt[b2] = this.jj_expentries.elementAt(b2); + return new ParseException(this.token, arrayOfInt, ParserConstants.tokenImage); + } + + public final void enable_tracing() {} + + public final void disable_tracing() {} + + private final void jj_rescan_token() { + this.jj_rescan = true; + byte b = 0; + while (b < 8) { + JJCalls jJCalls = this.jj_2_rtns[b]; + while (true) { + if (jJCalls.gen > this.jj_gen) { + this.jj_la = jJCalls.arg; + this.jj_lastpos = this.jj_scanpos = jJCalls.first; + switch (b) { + case 0: + jj_3_1(); + break; + case 1: + jj_3_2(); + break; + case 2: + jj_3_3(); + break; + case 3: + jj_3_4(); + break; + case 4: + jj_3_5(); + break; + case 5: + jj_3_6(); + break; + case 6: + jj_3_7(); + break; + case 7: + jj_3_8(); + break; + } + } + jJCalls = jJCalls.next; + if (jJCalls == null) + b++; + } + } + this.jj_rescan = false; + } + + private final void jj_save(int paramInt1, int paramInt2) { + JJCalls jJCalls; + for (jJCalls = this.jj_2_rtns[paramInt1]; jJCalls.gen > this.jj_gen; jJCalls = jJCalls.next) { + if (jJCalls.next == null) { + jJCalls = jJCalls.next = new JJCalls(); + break; + } + } + jJCalls.gen = this.jj_gen + paramInt2 - this.jj_la; + jJCalls.first = this.token; + jJCalls.arg = paramInt2; + } + + static { + jj_la1_0(); + jj_la1_1(); + } + + static final class JJCalls { + int gen; + + Token first; + + int arg; + + JJCalls next; + } + + private static final class LookaheadSuccess extends Error { + private LookaheadSuccess() {} + } +} diff --git a/hrmsEjb/org/nfunk/jep/ParserConstants.java b/hrmsEjb/org/nfunk/jep/ParserConstants.java new file mode 100644 index 0000000..d4eb0cd --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ParserConstants.java @@ -0,0 +1,86 @@ +package org.nfunk.jep; + +public interface ParserConstants { + public static final int EOF = 0; + + public static final int INTEGER_LITERAL = 7; + + public static final int DECIMAL_LITERAL = 8; + + public static final int FLOATING_POINT_LITERAL = 9; + + public static final int EXPONENT = 10; + + public static final int STRING_LITERAL = 11; + + public static final int INDENTIFIER1 = 12; + + public static final int LETTER1 = 13; + + public static final int DIGIT1 = 14; + + public static final int INDENTIFIER2 = 15; + + public static final int LETTER2 = 16; + + public static final int DIGIT2 = 17; + + public static final int ASSIGN = 18; + + public static final int SEMI = 19; + + public static final int COMMA = 20; + + public static final int GT = 21; + + public static final int LT = 22; + + public static final int EQ = 23; + + public static final int LE = 24; + + public static final int GE = 25; + + public static final int NE = 26; + + public static final int AND = 27; + + public static final int OR = 28; + + public static final int PLUS = 29; + + public static final int MINUS = 30; + + public static final int MUL = 31; + + public static final int DOT = 32; + + public static final int DIV = 33; + + public static final int MOD = 34; + + public static final int NOT = 35; + + public static final int POWER = 36; + + public static final int CROSS = 37; + + public static final int LSQ = 38; + + public static final int RSQ = 39; + + public static final int LRND = 40; + + public static final int RRND = 41; + + public static final int NO_DOT_IN_IDENTIFIERS = 0; + + public static final int DEFAULT = 1; + + public static final String[] tokenImage = new String[] { + "", "\" \"", "\"\\t\"", "\"\\n\"", "\"\\r\"", "", "", "", "", "", + "", "", "", "", "", "", "", "", "\"=\"", "\";\"", + "\",\"", "\">\"", "\"<\"", "\"==\"", "\"<=\"", "\">=\"", "\"!=\"", "\"&&\"", "\"||\"", "\"+\"", + "\"-\"", "\"*\"", "\".\"", "\"/\"", "\"%\"", "\"!\"", "\"^\"", "\"^^\"", "\"[\"", "\"]\"", + "\"(\"", "\")\"" }; +} diff --git a/hrmsEjb/org/nfunk/jep/ParserDumpVisitor.java b/hrmsEjb/org/nfunk/jep/ParserDumpVisitor.java new file mode 100644 index 0000000..33f12a1 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ParserDumpVisitor.java @@ -0,0 +1,52 @@ +package org.nfunk.jep; + +public class ParserDumpVisitor implements ParserVisitor { + private int indent = 0; + + private String indentString() { + StringBuffer stringBuffer = new StringBuffer(); + for (byte b = 0; b < this.indent; b++) + stringBuffer.append(" "); + return stringBuffer.toString(); + } + + public Object visit(SimpleNode paramSimpleNode, Object paramObject) throws ParseException { + System.out.println(indentString() + paramSimpleNode + ": acceptor not unimplemented in subclass?"); + this.indent++; + paramObject = paramSimpleNode.childrenAccept(this, paramObject); + this.indent--; + return paramObject; + } + + public Object visit(ASTStart paramASTStart, Object paramObject) throws ParseException { + System.out.println(indentString() + paramASTStart); + this.indent++; + paramObject = paramASTStart.childrenAccept(this, paramObject); + this.indent--; + return paramObject; + } + + public Object visit(ASTFunNode paramASTFunNode, Object paramObject) throws ParseException { + System.out.println(indentString() + paramASTFunNode); + this.indent++; + paramObject = paramASTFunNode.childrenAccept(this, paramObject); + this.indent--; + return paramObject; + } + + public Object visit(ASTVarNode paramASTVarNode, Object paramObject) throws ParseException { + System.out.println(indentString() + paramASTVarNode); + this.indent++; + paramObject = paramASTVarNode.childrenAccept(this, paramObject); + this.indent--; + return paramObject; + } + + public Object visit(ASTConstant paramASTConstant, Object paramObject) throws ParseException { + System.out.println(indentString() + paramASTConstant); + this.indent++; + paramObject = paramASTConstant.childrenAccept(this, paramObject); + this.indent--; + return paramObject; + } +} diff --git a/hrmsEjb/org/nfunk/jep/ParserTokenManager.java b/hrmsEjb/org/nfunk/jep/ParserTokenManager.java new file mode 100644 index 0000000..787fd98 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ParserTokenManager.java @@ -0,0 +1,1226 @@ +package org.nfunk.jep; + +import java.io.IOException; +import java.io.PrintStream; + +public class ParserTokenManager implements ParserConstants { + public PrintStream debugStream = System.out; + + static final long[] jjbitVec0 = new long[] { -2L, -1L, -1L, -1L }; + + static final long[] jjbitVec2 = new long[] { 0L, 0L, -1L, -1L }; + + static final long[] jjbitVec3 = new long[] { 2301339413881290750L, -16384L, 4294967295L, 432345564227567616L }; + + static final long[] jjbitVec4 = new long[] { 0L, 0L, 0L, -36028797027352577L }; + + static final long[] jjbitVec5 = new long[] { 0L, -1L, -1L, -1L }; + + static final long[] jjbitVec6 = new long[] { -1L, -1L, 65535L, 0L }; + + static final long[] jjbitVec7 = new long[] { -1L, -1L, 0L, 0L }; + + static final long[] jjbitVec8 = new long[] { 70368744177663L, 0L, 0L, 0L }; + + static final int[] jjnextStates = new int[] { + 14, 15, 17, 25, 26, 27, 32, 33, 13, 18, + 6, 7, 9, 21, 23, 3, 4, 30, 31, 34, + 35 }; + + public static final String[] jjstrLiteralImages = new String[] { + "", null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, "=", ";", + ",", ">", "<", "==", "<=", ">=", "!=", "&&", "||", "+", + "-", "*", ".", "/", "%", "!", "^", "^^", "[", "]", + "(", ")" }; + + public static final String[] lexStateNames = new String[] { "NO_DOT_IN_IDENTIFIERS", "DEFAULT" }; + + public static final int[] jjnewLexState = new int[] { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1 }; + + static final long[] jjtoToken = new long[] { 4398046288513L }; + + static final long[] jjtoSkip = new long[] { 126L }; + + protected JavaCharStream input_stream; + + private final int[] jjrounds = new int[36]; + + private final int[] jjstateSet = new int[72]; + + protected char curChar; + + int curLexState = 1; + + int defaultLexState = 1; + + int jjnewStateCnt; + + int jjround; + + int jjmatchedPos; + + int jjmatchedKind; + + public void setDebugStream(PrintStream paramPrintStream) { + this.debugStream = paramPrintStream; + } + + private final int jjStopStringLiteralDfa_1(int paramInt, long paramLong) { + switch (paramInt) { + case 0: + return ((paramLong & 0x100000000L) != 0L) ? 1 : (((paramLong & 0x200000000L) != 0L) ? 13 : -1); + } + return -1; + } + + private final int jjStartNfa_1(int paramInt, long paramLong) { + return jjMoveNfa_1(jjStopStringLiteralDfa_1(paramInt, paramLong), paramInt + 1); + } + + private final int jjStopAtPos(int paramInt1, int paramInt2) { + this.jjmatchedKind = paramInt2; + this.jjmatchedPos = paramInt1; + return paramInt1 + 1; + } + + private final int jjStartNfaWithStates_1(int paramInt1, int paramInt2, int paramInt3) { + this.jjmatchedKind = paramInt2; + this.jjmatchedPos = paramInt1; + try { + this.curChar = this.input_stream.readChar(); + } catch (IOException iOException) { + return paramInt1 + 1; + } + return jjMoveNfa_1(paramInt3, paramInt1 + 1); + } + + private final int jjMoveStringLiteralDfa0_1() { + switch (this.curChar) { + case '!': + this.jjmatchedKind = 35; + return jjMoveStringLiteralDfa1_1(67108864L); + case '%': + return jjStopAtPos(0, 34); + case '&': + return jjMoveStringLiteralDfa1_1(134217728L); + case '(': + return jjStopAtPos(0, 40); + case ')': + return jjStopAtPos(0, 41); + case '*': + return jjStopAtPos(0, 31); + case '+': + return jjStopAtPos(0, 29); + case ',': + return jjStopAtPos(0, 20); + case '-': + return jjStopAtPos(0, 30); + case '.': + return jjStartNfaWithStates_1(0, 32, 1); + case '/': + return jjStartNfaWithStates_1(0, 33, 13); + case ';': + return jjStopAtPos(0, 19); + case '<': + this.jjmatchedKind = 22; + return jjMoveStringLiteralDfa1_1(16777216L); + case '=': + this.jjmatchedKind = 18; + return jjMoveStringLiteralDfa1_1(8388608L); + case '>': + this.jjmatchedKind = 21; + return jjMoveStringLiteralDfa1_1(33554432L); + case '[': + return jjStopAtPos(0, 38); + case ']': + return jjStopAtPos(0, 39); + case '^': + this.jjmatchedKind = 36; + return jjMoveStringLiteralDfa1_1(137438953472L); + case '|': + return jjMoveStringLiteralDfa1_1(268435456L); + } + return jjMoveNfa_1(0, 0); + } + + private final int jjMoveStringLiteralDfa1_1(long paramLong) { + try { + this.curChar = this.input_stream.readChar(); + } catch (IOException iOException) { + jjStopStringLiteralDfa_1(0, paramLong); + return 1; + } + switch (this.curChar) { + case '&': + if ((paramLong & 0x8000000L) != 0L) + return jjStopAtPos(1, 27); + break; + case '=': + if ((paramLong & 0x800000L) != 0L) + return jjStopAtPos(1, 23); + if ((paramLong & 0x1000000L) != 0L) + return jjStopAtPos(1, 24); + if ((paramLong & 0x2000000L) != 0L) + return jjStopAtPos(1, 25); + if ((paramLong & 0x4000000L) != 0L) + return jjStopAtPos(1, 26); + break; + case '^': + if ((paramLong & 0x2000000000L) != 0L) + return jjStopAtPos(1, 37); + break; + case '|': + if ((paramLong & 0x10000000L) != 0L) + return jjStopAtPos(1, 28); + break; + } + return jjStartNfa_1(0, paramLong); + } + + private final void jjCheckNAdd(int paramInt) { + if (this.jjrounds[paramInt] != this.jjround) { + this.jjstateSet[this.jjnewStateCnt++] = paramInt; + this.jjrounds[paramInt] = this.jjround; + } + } + + private final void jjAddStates(int paramInt1, int paramInt2) { + do { + this.jjstateSet[this.jjnewStateCnt++] = jjnextStates[paramInt1]; + } while (paramInt1++ != paramInt2); + } + + private final void jjCheckNAddTwoStates(int paramInt1, int paramInt2) { + jjCheckNAdd(paramInt1); + jjCheckNAdd(paramInt2); + } + + private final void jjCheckNAddStates(int paramInt1, int paramInt2) { + do { + jjCheckNAdd(jjnextStates[paramInt1]); + } while (paramInt1++ != paramInt2); + } + + private final void jjCheckNAddStates(int paramInt) { + jjCheckNAdd(jjnextStates[paramInt]); + jjCheckNAdd(jjnextStates[paramInt + 1]); + } + + private final int jjMoveNfa_1(int paramInt1, int paramInt2) { + int i = 0; + this.jjnewStateCnt = 36; + int j = 1; + this.jjstateSet[0] = paramInt1; + int k = Integer.MAX_VALUE; + while (true) { + if (++this.jjround == Integer.MAX_VALUE) + ReInitRounds(); + if (this.curChar < '@') { + long l = 1L << this.curChar; + do { + switch (this.jjstateSet[--j]) { + case 13: + if (this.curChar == '*') { + jjCheckNAddTwoStates(19, 20); + break; + } + if (this.curChar == '/') + jjCheckNAddStates(0, 2); + break; + case 0: + if ((0x3FF000000000000L & l) != 0L) { + if (k > 7) + k = 7; + jjCheckNAddStates(3, 7); + break; + } + if (this.curChar == '/') { + jjAddStates(8, 9); + break; + } + if (this.curChar == '$') { + if (k > 12) + k = 12; + jjCheckNAdd(11); + break; + } + if (this.curChar == '"') { + jjCheckNAddStates(10, 12); + break; + } + if (this.curChar == '.') + jjCheckNAdd(1); + break; + case 1: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAddTwoStates(1, 2); + break; + case 3: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(4); + break; + case 4: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAdd(4); + break; + case 5: + if (this.curChar == '"') + jjCheckNAddStates(10, 12); + break; + case 6: + if ((0xFFFFFFFBFFFFDBFFL & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 8: + if ((0x8400000000L & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 9: + if (this.curChar == '"' && k > 11) + k = 11; + break; + case 10: + if (this.curChar != '$') + break; + if (k > 12) + k = 12; + jjCheckNAdd(11); + break; + case 11: + if ((0x3FF401000000000L & l) == 0L) + break; + if (k > 12) + k = 12; + jjCheckNAdd(11); + break; + case 12: + if (this.curChar == '/') + jjAddStates(8, 9); + break; + case 14: + if ((0xFFFFFFFFFFFFDBFFL & l) != 0L) + jjCheckNAddStates(0, 2); + break; + case 15: + if ((0x2400L & l) != 0L && k > 5) + k = 5; + break; + case 16: + if (this.curChar == '\n' && k > 5) + k = 5; + break; + case 17: + if (this.curChar == '\r') + this.jjstateSet[this.jjnewStateCnt++] = 16; + break; + case 18: + if (this.curChar == '*') + jjCheckNAddTwoStates(19, 20); + break; + case 19: + if ((0xFFFFFBFFFFFFFFFFL & l) != 0L) + jjCheckNAddTwoStates(19, 20); + break; + case 20: + if (this.curChar == '*') + jjAddStates(13, 14); + break; + case 21: + if ((0xFFFF7FFFFFFFFFFFL & l) != 0L) + jjCheckNAddTwoStates(22, 20); + break; + case 22: + if ((0xFFFFFBFFFFFFFFFFL & l) != 0L) + jjCheckNAddTwoStates(22, 20); + break; + case 23: + if (this.curChar == '/' && k > 6) + k = 6; + break; + case 24: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 7) + k = 7; + jjCheckNAddStates(3, 7); + break; + case 25: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 7) + k = 7; + jjCheckNAdd(25); + break; + case 26: + if ((0x3FF000000000000L & l) != 0L) + jjCheckNAddTwoStates(26, 27); + break; + case 27: + if (this.curChar != '.') + break; + if (k > 9) + k = 9; + jjCheckNAddTwoStates(28, 29); + break; + case 28: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAddTwoStates(28, 29); + break; + case 30: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(31); + break; + case 31: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAdd(31); + break; + case 32: + if ((0x3FF000000000000L & l) != 0L) + jjCheckNAddTwoStates(32, 33); + break; + case 34: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(35); + break; + case 35: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAdd(35); + break; + } + } while (j != i); + } else if (this.curChar < '€') { + long l = 1L << (this.curChar & 0x3F); + do { + switch (this.jjstateSet[--j]) { + case 0: + case 11: + if ((0x7FFFFFE87FFFFFEL & l) == 0L) + break; + if (k > 12) + k = 12; + jjCheckNAdd(11); + break; + case 2: + if ((0x2000000020L & l) != 0L) + jjAddStates(15, 16); + break; + case 6: + if ((0xFFFFFFFFEFFFFFFFL & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 7: + if (this.curChar == '\\') + this.jjstateSet[this.jjnewStateCnt++] = 8; + break; + case 8: + if ((0x14404410000000L & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 14: + jjAddStates(0, 2); + break; + case 19: + jjCheckNAddTwoStates(19, 20); + break; + case 21: + case 22: + jjCheckNAddTwoStates(22, 20); + break; + case 29: + if ((0x2000000020L & l) != 0L) + jjAddStates(17, 18); + break; + case 33: + if ((0x2000000020L & l) != 0L) + jjAddStates(19, 20); + break; + } + } while (j != i); + } else { + int m = this.curChar >> 8; + int n = m >> 6; + long l1 = 1L << (m & 0x3F); + int i1 = (this.curChar & 0xFF) >> 6; + long l2 = 1L << (this.curChar & 0x3F); + do { + switch (this.jjstateSet[--j]) { + case 0: + case 11: + if (!jjCanMove_1(m, n, i1, l1, l2)) + break; + if (k > 12) + k = 12; + jjCheckNAdd(11); + break; + case 6: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjAddStates(10, 12); + break; + case 14: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjAddStates(0, 2); + break; + case 19: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjCheckNAddTwoStates(19, 20); + break; + case 21: + case 22: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjCheckNAddTwoStates(22, 20); + break; + } + } while (j != i); + } + if (k != Integer.MAX_VALUE) { + this.jjmatchedKind = k; + this.jjmatchedPos = paramInt2; + k = Integer.MAX_VALUE; + } + paramInt2++; + if ((j = this.jjnewStateCnt) == (i = 36 - (this.jjnewStateCnt = i))) + return paramInt2; + try { + this.curChar = this.input_stream.readChar(); + } catch (IOException iOException) { + return paramInt2; + } + } + } + + private final int jjStopStringLiteralDfa_0(int paramInt, long paramLong) { + switch (paramInt) { + case 0: + return ((paramLong & 0x100000000L) != 0L) ? 1 : (((paramLong & 0x200000000L) != 0L) ? 13 : -1); + } + return -1; + } + + private final int jjStartNfa_0(int paramInt, long paramLong) { + return jjMoveNfa_0(jjStopStringLiteralDfa_0(paramInt, paramLong), paramInt + 1); + } + + private final int jjStartNfaWithStates_0(int paramInt1, int paramInt2, int paramInt3) { + this.jjmatchedKind = paramInt2; + this.jjmatchedPos = paramInt1; + try { + this.curChar = this.input_stream.readChar(); + } catch (IOException iOException) { + return paramInt1 + 1; + } + return jjMoveNfa_0(paramInt3, paramInt1 + 1); + } + + private final int jjMoveStringLiteralDfa0_0() { + switch (this.curChar) { + case '!': + this.jjmatchedKind = 35; + return jjMoveStringLiteralDfa1_0(67108864L); + case '%': + return jjStopAtPos(0, 34); + case '&': + return jjMoveStringLiteralDfa1_0(134217728L); + case '(': + return jjStopAtPos(0, 40); + case ')': + return jjStopAtPos(0, 41); + case '*': + return jjStopAtPos(0, 31); + case '+': + return jjStopAtPos(0, 29); + case ',': + return jjStopAtPos(0, 20); + case '-': + return jjStopAtPos(0, 30); + case '.': + return jjStartNfaWithStates_0(0, 32, 1); + case '/': + return jjStartNfaWithStates_0(0, 33, 13); + case ';': + return jjStopAtPos(0, 19); + case '<': + this.jjmatchedKind = 22; + return jjMoveStringLiteralDfa1_0(16777216L); + case '=': + this.jjmatchedKind = 18; + return jjMoveStringLiteralDfa1_0(8388608L); + case '>': + this.jjmatchedKind = 21; + return jjMoveStringLiteralDfa1_0(33554432L); + case '[': + return jjStopAtPos(0, 38); + case ']': + return jjStopAtPos(0, 39); + case '^': + this.jjmatchedKind = 36; + return jjMoveStringLiteralDfa1_0(137438953472L); + case '|': + return jjMoveStringLiteralDfa1_0(268435456L); + } + return jjMoveNfa_0(0, 0); + } + + private final int jjMoveStringLiteralDfa1_0(long paramLong) { + try { + this.curChar = this.input_stream.readChar(); + } catch (IOException iOException) { + jjStopStringLiteralDfa_0(0, paramLong); + return 1; + } + switch (this.curChar) { + case '&': + if ((paramLong & 0x8000000L) != 0L) + return jjStopAtPos(1, 27); + break; + case '=': + if ((paramLong & 0x800000L) != 0L) + return jjStopAtPos(1, 23); + if ((paramLong & 0x1000000L) != 0L) + return jjStopAtPos(1, 24); + if ((paramLong & 0x2000000L) != 0L) + return jjStopAtPos(1, 25); + if ((paramLong & 0x4000000L) != 0L) + return jjStopAtPos(1, 26); + break; + case '^': + if ((paramLong & 0x2000000000L) != 0L) + return jjStopAtPos(1, 37); + break; + case '|': + if ((paramLong & 0x10000000L) != 0L) + return jjStopAtPos(1, 28); + break; + } + return jjStartNfa_0(0, paramLong); + } + + private final int jjMoveNfa_0(int paramInt1, int paramInt2) { + int i = 0; + this.jjnewStateCnt = 36; + int j = 1; + this.jjstateSet[0] = paramInt1; + int k = Integer.MAX_VALUE; + while (true) { + if (++this.jjround == Integer.MAX_VALUE) + ReInitRounds(); + if (this.curChar < '@') { + long l = 1L << this.curChar; + do { + switch (this.jjstateSet[--j]) { + case 13: + if (this.curChar == '*') { + jjCheckNAddTwoStates(19, 20); + break; + } + if (this.curChar == '/') + jjCheckNAddStates(0, 2); + break; + case 0: + if ((0x3FF000000000000L & l) != 0L) { + if (k > 7) + k = 7; + jjCheckNAddStates(3, 7); + break; + } + if (this.curChar == '/') { + jjAddStates(8, 9); + break; + } + if (this.curChar == '$') { + if (k > 15) + k = 15; + jjCheckNAdd(11); + break; + } + if (this.curChar == '"') { + jjCheckNAddStates(10, 12); + break; + } + if (this.curChar == '.') + jjCheckNAdd(1); + break; + case 1: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAddTwoStates(1, 2); + break; + case 3: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(4); + break; + case 4: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAdd(4); + break; + case 5: + if (this.curChar == '"') + jjCheckNAddStates(10, 12); + break; + case 6: + if ((0xFFFFFFFBFFFFDBFFL & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 8: + if ((0x8400000000L & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 9: + if (this.curChar == '"' && k > 11) + k = 11; + break; + case 10: + if (this.curChar != '$') + break; + if (k > 15) + k = 15; + jjCheckNAdd(11); + break; + case 11: + if ((0x3FF001000000000L & l) == 0L) + break; + if (k > 15) + k = 15; + jjCheckNAdd(11); + break; + case 12: + if (this.curChar == '/') + jjAddStates(8, 9); + break; + case 14: + if ((0xFFFFFFFFFFFFDBFFL & l) != 0L) + jjCheckNAddStates(0, 2); + break; + case 15: + if ((0x2400L & l) != 0L && k > 5) + k = 5; + break; + case 16: + if (this.curChar == '\n' && k > 5) + k = 5; + break; + case 17: + if (this.curChar == '\r') + this.jjstateSet[this.jjnewStateCnt++] = 16; + break; + case 18: + if (this.curChar == '*') + jjCheckNAddTwoStates(19, 20); + break; + case 19: + if ((0xFFFFFBFFFFFFFFFFL & l) != 0L) + jjCheckNAddTwoStates(19, 20); + break; + case 20: + if (this.curChar == '*') + jjAddStates(13, 14); + break; + case 21: + if ((0xFFFF7FFFFFFFFFFFL & l) != 0L) + jjCheckNAddTwoStates(22, 20); + break; + case 22: + if ((0xFFFFFBFFFFFFFFFFL & l) != 0L) + jjCheckNAddTwoStates(22, 20); + break; + case 23: + if (this.curChar == '/' && k > 6) + k = 6; + break; + case 24: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 7) + k = 7; + jjCheckNAddStates(3, 7); + break; + case 25: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 7) + k = 7; + jjCheckNAdd(25); + break; + case 26: + if ((0x3FF000000000000L & l) != 0L) + jjCheckNAddTwoStates(26, 27); + break; + case 27: + if (this.curChar != '.') + break; + if (k > 9) + k = 9; + jjCheckNAddTwoStates(28, 29); + break; + case 28: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAddTwoStates(28, 29); + break; + case 30: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(31); + break; + case 31: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAdd(31); + break; + case 32: + if ((0x3FF000000000000L & l) != 0L) + jjCheckNAddTwoStates(32, 33); + break; + case 34: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(35); + break; + case 35: + if ((0x3FF000000000000L & l) == 0L) + break; + if (k > 9) + k = 9; + jjCheckNAdd(35); + break; + } + } while (j != i); + } else if (this.curChar < '€') { + long l = 1L << (this.curChar & 0x3F); + do { + switch (this.jjstateSet[--j]) { + case 0: + case 11: + if ((0x7FFFFFE87FFFFFEL & l) == 0L) + break; + if (k > 15) + k = 15; + jjCheckNAdd(11); + break; + case 2: + if ((0x2000000020L & l) != 0L) + jjAddStates(15, 16); + break; + case 6: + if ((0xFFFFFFFFEFFFFFFFL & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 7: + if (this.curChar == '\\') + this.jjstateSet[this.jjnewStateCnt++] = 8; + break; + case 8: + if ((0x14404410000000L & l) != 0L) + jjCheckNAddStates(10, 12); + break; + case 14: + jjAddStates(0, 2); + break; + case 19: + jjCheckNAddTwoStates(19, 20); + break; + case 21: + case 22: + jjCheckNAddTwoStates(22, 20); + break; + case 29: + if ((0x2000000020L & l) != 0L) + jjAddStates(17, 18); + break; + case 33: + if ((0x2000000020L & l) != 0L) + jjAddStates(19, 20); + break; + } + } while (j != i); + } else { + int m = this.curChar >> 8; + int n = m >> 6; + long l1 = 1L << (m & 0x3F); + int i1 = (this.curChar & 0xFF) >> 6; + long l2 = 1L << (this.curChar & 0x3F); + do { + switch (this.jjstateSet[--j]) { + case 0: + case 11: + if (!jjCanMove_1(m, n, i1, l1, l2)) + break; + if (k > 15) + k = 15; + jjCheckNAdd(11); + break; + case 6: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjAddStates(10, 12); + break; + case 14: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjAddStates(0, 2); + break; + case 19: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjCheckNAddTwoStates(19, 20); + break; + case 21: + case 22: + if (jjCanMove_0(m, n, i1, l1, l2)) + jjCheckNAddTwoStates(22, 20); + break; + } + } while (j != i); + } + if (k != Integer.MAX_VALUE) { + this.jjmatchedKind = k; + this.jjmatchedPos = paramInt2; + k = Integer.MAX_VALUE; + } + paramInt2++; + if ((j = this.jjnewStateCnt) == (i = 36 - (this.jjnewStateCnt = i))) + return paramInt2; + try { + this.curChar = this.input_stream.readChar(); + } catch (IOException iOException) { + return paramInt2; + } + } + } + + private static final boolean jjCanMove_0(int paramInt1, int paramInt2, int paramInt3, long paramLong1, long paramLong2) { + switch (paramInt1) { + case 0: + return ((jjbitVec2[paramInt3] & paramLong2) != 0L); + } + return ((jjbitVec0[paramInt2] & paramLong1) != 0L); + } + + private static final boolean jjCanMove_1(int paramInt1, int paramInt2, int paramInt3, long paramLong1, long paramLong2) { + switch (paramInt1) { + case 0: + return ((jjbitVec4[paramInt3] & paramLong2) != 0L); + case 48: + return ((jjbitVec5[paramInt3] & paramLong2) != 0L); + case 49: + return ((jjbitVec6[paramInt3] & paramLong2) != 0L); + case 51: + return ((jjbitVec7[paramInt3] & paramLong2) != 0L); + case 61: + return ((jjbitVec8[paramInt3] & paramLong2) != 0L); + } + return ((jjbitVec3[paramInt2] & paramLong1) != 0L); + } + + public ParserTokenManager(JavaCharStream paramJavaCharStream) { + this.input_stream = paramJavaCharStream; + } + + public ParserTokenManager(JavaCharStream paramJavaCharStream, int paramInt) { + this(paramJavaCharStream); + SwitchTo(paramInt); + } + + public void ReInit(JavaCharStream paramJavaCharStream) { + this.jjmatchedPos = this.jjnewStateCnt = 0; + this.curLexState = this.defaultLexState; + this.input_stream = paramJavaCharStream; + ReInitRounds(); + } + + private final void ReInitRounds() { + this.jjround = -2147483647; + int i = 36; + while (i-- > 0) + this.jjrounds[i] = Integer.MIN_VALUE; + } + + public void ReInit(JavaCharStream paramJavaCharStream, int paramInt) { + ReInit(paramJavaCharStream); + SwitchTo(paramInt); + } + + public void SwitchTo(int paramInt) { + if (paramInt >= 2 || paramInt < 0) + throw new TokenMgrError("Error: Ignoring invalid lexical state : " + paramInt + ". State unchanged.", 2); + this.curLexState = paramInt; + } + + protected Token jjFillToken() { + Token token = Token.newToken(this.jjmatchedKind); + token.kind = this.jjmatchedKind; + String str = jjstrLiteralImages[this.jjmatchedKind]; + token.image = (str == null) ? this.input_stream.GetImage() : str; + token.beginLine = this.input_stream.getBeginLine(); + token.beginColumn = this.input_stream.getBeginColumn(); + token.endLine = this.input_stream.getEndLine(); + token.endColumn = this.input_stream.getEndColumn(); + return token; + } + + public Token getNextToken() { + // Byte code: + // 0: aconst_null + // 1: astore_2 + // 2: iconst_0 + // 3: istore #4 + // 5: aload_0 + // 6: aload_0 + // 7: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 10: invokevirtual BeginToken : ()C + // 13: putfield curChar : C + // 16: goto -> 33 + // 19: astore #5 + // 21: aload_0 + // 22: iconst_0 + // 23: putfield jjmatchedKind : I + // 26: aload_0 + // 27: invokevirtual jjFillToken : ()Lorg/nfunk/jep/Token; + // 30: astore_3 + // 31: aload_3 + // 32: areturn + // 33: aload_0 + // 34: getfield curLexState : I + // 37: lookupswitch default -> 209, 0 -> 64, 1 -> 138 + // 64: aload_0 + // 65: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 68: iconst_0 + // 69: invokevirtual backup : (I)V + // 72: aload_0 + // 73: getfield curChar : C + // 76: bipush #32 + // 78: if_icmpgt -> 110 + // 81: ldc2_w 4294977024 + // 84: lconst_1 + // 85: aload_0 + // 86: getfield curChar : C + // 89: lshl + // 90: land + // 91: lconst_0 + // 92: lcmp + // 93: ifeq -> 110 + // 96: aload_0 + // 97: aload_0 + // 98: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 101: invokevirtual BeginToken : ()C + // 104: putfield curChar : C + // 107: goto -> 72 + // 110: goto -> 118 + // 113: astore #5 + // 115: goto -> 5 + // 118: aload_0 + // 119: ldc 2147483647 + // 121: putfield jjmatchedKind : I + // 124: aload_0 + // 125: iconst_0 + // 126: putfield jjmatchedPos : I + // 129: aload_0 + // 130: invokespecial jjMoveStringLiteralDfa0_0 : ()I + // 133: istore #4 + // 135: goto -> 209 + // 138: aload_0 + // 139: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 142: iconst_0 + // 143: invokevirtual backup : (I)V + // 146: aload_0 + // 147: getfield curChar : C + // 150: bipush #32 + // 152: if_icmpgt -> 184 + // 155: ldc2_w 4294977024 + // 158: lconst_1 + // 159: aload_0 + // 160: getfield curChar : C + // 163: lshl + // 164: land + // 165: lconst_0 + // 166: lcmp + // 167: ifeq -> 184 + // 170: aload_0 + // 171: aload_0 + // 172: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 175: invokevirtual BeginToken : ()C + // 178: putfield curChar : C + // 181: goto -> 146 + // 184: goto -> 192 + // 187: astore #5 + // 189: goto -> 5 + // 192: aload_0 + // 193: ldc 2147483647 + // 195: putfield jjmatchedKind : I + // 198: aload_0 + // 199: iconst_0 + // 200: putfield jjmatchedPos : I + // 203: aload_0 + // 204: invokespecial jjMoveStringLiteralDfa0_1 : ()I + // 207: istore #4 + // 209: aload_0 + // 210: getfield jjmatchedKind : I + // 213: ldc 2147483647 + // 215: if_icmpeq -> 329 + // 218: aload_0 + // 219: getfield jjmatchedPos : I + // 222: iconst_1 + // 223: iadd + // 224: iload #4 + // 226: if_icmpge -> 245 + // 229: aload_0 + // 230: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 233: iload #4 + // 235: aload_0 + // 236: getfield jjmatchedPos : I + // 239: isub + // 240: iconst_1 + // 241: isub + // 242: invokevirtual backup : (I)V + // 245: getstatic org/nfunk/jep/ParserTokenManager.jjtoToken : [J + // 248: aload_0 + // 249: getfield jjmatchedKind : I + // 252: bipush #6 + // 254: ishr + // 255: laload + // 256: lconst_1 + // 257: aload_0 + // 258: getfield jjmatchedKind : I + // 261: bipush #63 + // 263: iand + // 264: lshl + // 265: land + // 266: lconst_0 + // 267: lcmp + // 268: ifeq -> 302 + // 271: aload_0 + // 272: invokevirtual jjFillToken : ()Lorg/nfunk/jep/Token; + // 275: astore_3 + // 276: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I + // 279: aload_0 + // 280: getfield jjmatchedKind : I + // 283: iaload + // 284: iconst_m1 + // 285: if_icmpeq -> 300 + // 288: aload_0 + // 289: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I + // 292: aload_0 + // 293: getfield jjmatchedKind : I + // 296: iaload + // 297: putfield curLexState : I + // 300: aload_3 + // 301: areturn + // 302: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I + // 305: aload_0 + // 306: getfield jjmatchedKind : I + // 309: iaload + // 310: iconst_m1 + // 311: if_icmpeq -> 5 + // 314: aload_0 + // 315: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I + // 318: aload_0 + // 319: getfield jjmatchedKind : I + // 322: iaload + // 323: putfield curLexState : I + // 326: goto -> 5 + // 329: aload_0 + // 330: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 333: invokevirtual getEndLine : ()I + // 336: istore #5 + // 338: aload_0 + // 339: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 342: invokevirtual getEndColumn : ()I + // 345: istore #6 + // 347: aconst_null + // 348: astore #7 + // 350: iconst_0 + // 351: istore #8 + // 353: aload_0 + // 354: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 357: invokevirtual readChar : ()C + // 360: pop + // 361: aload_0 + // 362: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 365: iconst_1 + // 366: invokevirtual backup : (I)V + // 369: goto -> 427 + // 372: astore #9 + // 374: iconst_1 + // 375: istore #8 + // 377: iload #4 + // 379: iconst_1 + // 380: if_icmpgt -> 388 + // 383: ldc '' + // 385: goto -> 395 + // 388: aload_0 + // 389: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 392: invokevirtual GetImage : ()Ljava/lang/String; + // 395: astore #7 + // 397: aload_0 + // 398: getfield curChar : C + // 401: bipush #10 + // 403: if_icmpeq -> 415 + // 406: aload_0 + // 407: getfield curChar : C + // 410: bipush #13 + // 412: if_icmpne -> 424 + // 415: iinc #5, 1 + // 418: iconst_0 + // 419: istore #6 + // 421: goto -> 427 + // 424: iinc #6, 1 + // 427: iload #8 + // 429: ifne -> 460 + // 432: aload_0 + // 433: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 436: iconst_1 + // 437: invokevirtual backup : (I)V + // 440: iload #4 + // 442: iconst_1 + // 443: if_icmpgt -> 451 + // 446: ldc '' + // 448: goto -> 458 + // 451: aload_0 + // 452: getfield input_stream : Lorg/nfunk/jep/JavaCharStream; + // 455: invokevirtual GetImage : ()Ljava/lang/String; + // 458: astore #7 + // 460: new org/nfunk/jep/TokenMgrError + // 463: dup + // 464: iload #8 + // 466: aload_0 + // 467: getfield curLexState : I + // 470: iload #5 + // 472: iload #6 + // 474: aload #7 + // 476: aload_0 + // 477: getfield curChar : C + // 480: iconst_0 + // 481: invokespecial : (ZIIILjava/lang/String;CI)V + // 484: athrow + // Exception table: + // from to target type + // 5 16 19 java/io/IOException + // 64 110 113 java/io/IOException + // 138 184 187 java/io/IOException + // 353 369 372 java/io/IOException + } +} diff --git a/hrmsEjb/org/nfunk/jep/ParserTreeConstants.java b/hrmsEjb/org/nfunk/jep/ParserTreeConstants.java new file mode 100644 index 0000000..baaefd1 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ParserTreeConstants.java @@ -0,0 +1,15 @@ +package org.nfunk.jep; + +public interface ParserTreeConstants { + public static final int JJTSTART = 0; + + public static final int JJTVOID = 1; + + public static final int JJTFUNNODE = 2; + + public static final int JJTVARNODE = 3; + + public static final int JJTCONSTANT = 4; + + public static final String[] jjtNodeName = new String[] { "Start", "void", "FunNode", "VarNode", "Constant" }; +} diff --git a/hrmsEjb/org/nfunk/jep/ParserVisitor.java b/hrmsEjb/org/nfunk/jep/ParserVisitor.java new file mode 100644 index 0000000..0a277e0 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/ParserVisitor.java @@ -0,0 +1,13 @@ +package org.nfunk.jep; + +public interface ParserVisitor { + Object visit(SimpleNode paramSimpleNode, Object paramObject) throws ParseException; + + Object visit(ASTStart paramASTStart, Object paramObject) throws ParseException; + + Object visit(ASTFunNode paramASTFunNode, Object paramObject) throws ParseException; + + Object visit(ASTVarNode paramASTVarNode, Object paramObject) throws ParseException; + + Object visit(ASTConstant paramASTConstant, Object paramObject) throws ParseException; +} diff --git a/hrmsEjb/org/nfunk/jep/SimpleNode.java b/hrmsEjb/org/nfunk/jep/SimpleNode.java new file mode 100644 index 0000000..daa078b --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/SimpleNode.java @@ -0,0 +1,84 @@ +package org.nfunk.jep; + +public class SimpleNode implements Node { + protected Node parent; + + protected Node[] children; + + protected int id; + + protected Parser parser; + + public SimpleNode(int paramInt) { + this.id = paramInt; + } + + public SimpleNode(Parser paramParser, int paramInt) { + this(paramInt); + this.parser = paramParser; + } + + public void jjtOpen() {} + + public void jjtClose() {} + + public void jjtSetParent(Node paramNode) { + this.parent = paramNode; + } + + public Node jjtGetParent() { + return this.parent; + } + + public void jjtAddChild(Node paramNode, int paramInt) { + if (this.children == null) { + this.children = new Node[paramInt + 1]; + } else if (paramInt >= this.children.length) { + Node[] arrayOfNode = new Node[paramInt + 1]; + System.arraycopy(this.children, 0, arrayOfNode, 0, this.children.length); + this.children = arrayOfNode; + } + this.children[paramInt] = paramNode; + } + + public Node jjtGetChild(int paramInt) { + return this.children[paramInt]; + } + + public int jjtGetNumChildren() { + return (this.children == null) ? 0 : this.children.length; + } + + public Object jjtAccept(ParserVisitor paramParserVisitor, Object paramObject) throws ParseException { + return paramParserVisitor.visit(this, paramObject); + } + + public Object childrenAccept(ParserVisitor paramParserVisitor, Object paramObject) throws ParseException { + if (this.children != null) + for (byte b = 0; b < this.children.length; b++) + this.children[b].jjtAccept(paramParserVisitor, paramObject); + return paramObject; + } + + public String toString() { + return ParserTreeConstants.jjtNodeName[this.id]; + } + + public String toString(String paramString) { + return paramString + toString(); + } + + public void dump(String paramString) { + System.out.println(toString(paramString)); + if (this.children != null) + for (byte b = 0; b < this.children.length; b++) { + SimpleNode simpleNode = (SimpleNode)this.children[b]; + if (simpleNode != null) + simpleNode.dump(paramString + " "); + } + } + + public int getId() { + return this.id; + } +} diff --git a/hrmsEjb/org/nfunk/jep/SymbolTable.java b/hrmsEjb/org/nfunk/jep/SymbolTable.java new file mode 100644 index 0000000..8ee44fd --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/SymbolTable.java @@ -0,0 +1,97 @@ +package org.nfunk.jep; + +import java.util.Enumeration; +import java.util.Hashtable; + +public class SymbolTable extends Hashtable { + protected VariableFactory vf; + + public SymbolTable(VariableFactory paramVariableFactory) { + this.vf = paramVariableFactory; + } + + private SymbolTable() {} + + public Object get(Object paramObject) { + return getValue(paramObject); + } + + public Object getValue(Object paramObject) { + Variable variable = super.get(paramObject); + return (variable == null) ? null : variable.getValue(); + } + + public Variable getVar(String paramString) { + return super.get(paramString); + } + + public Object put(Object paramObject1, Object paramObject2) { + return makeVarIfNeeded((String)paramObject1, paramObject2); + } + + public boolean setVarValue(String paramString, Object paramObject) { + Variable variable = super.get(paramString); + return (variable != null) ? variable.setValue(paramObject) : false; + } + + public Variable addVariable(String paramString, Object paramObject) { + Variable variable = super.get(paramString); + if (variable != null) + return null; + variable = this.vf.createVariable(paramString, paramObject); + super.put(paramString, variable); + variable.setValidValue(true); + return variable; + } + + public Variable addConstant(String paramString, Object paramObject) { + Variable variable = addVariable(paramString, paramObject); + if (variable != null) + variable.setIsConstant(true); + return variable; + } + + public Variable makeVarIfNeeded(String paramString, Object paramObject) { + Variable variable = super.get(paramString); + if (variable != null) { + variable.setValue(paramObject); + return variable; + } + variable = this.vf.createVariable(paramString, paramObject); + super.put(paramString, variable); + return variable; + } + + public Variable makeVarIfNeeded(String paramString) { + Variable variable = super.get(paramString); + if (variable != null) + return variable; + variable = this.vf.createVariable(paramString, null); + super.put(paramString, variable); + return variable; + } + + public String toString() { + StringBuffer stringBuffer = new StringBuffer(); + Enumeration enumeration = elements(); + while (enumeration.hasMoreElements()) { + Variable variable = (Variable)enumeration.nextElement(); + stringBuffer.append(variable.toString()); + stringBuffer.append("\n"); + } + return stringBuffer.toString(); + } + + public void clearValues() { + Enumeration enumeration = elements(); + while (enumeration.hasMoreElements()) { + Variable variable = (Variable)enumeration.nextElement(); + if (!variable.isConstant()) + variable.setValidValue(false); + } + } + + public VariableFactory getVariableFactory() { + return this.vf; + } +} diff --git a/hrmsEjb/org/nfunk/jep/Token.java b/hrmsEjb/org/nfunk/jep/Token.java new file mode 100644 index 0000000..f703ce8 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/Token.java @@ -0,0 +1,30 @@ +package org.nfunk.jep; + +public class Token { + public int kind; + + public int beginLine; + + public int beginColumn; + + public int endLine; + + public int endColumn; + + public String image; + + public Token next; + + public Token specialToken; + + public String toString() { + return this.image; + } + + public static final Token newToken(int paramInt) { + switch (paramInt) { + + } + return new Token(); + } +} diff --git a/hrmsEjb/org/nfunk/jep/TokenMgrError.java b/hrmsEjb/org/nfunk/jep/TokenMgrError.java new file mode 100644 index 0000000..bbe4ac9 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/TokenMgrError.java @@ -0,0 +1,76 @@ +package org.nfunk.jep; + +public class TokenMgrError extends Error { + static final int LEXICAL_ERROR = 0; + + static final int STATIC_LEXER_ERROR = 1; + + static final int INVALID_LEXICAL_STATE = 2; + + static final int LOOP_DETECTED = 3; + + int errorCode; + + protected static final String addEscapes(String paramString) { + StringBuffer stringBuffer = new StringBuffer(); + for (byte b = 0; b < paramString.length(); b++) { + char c; + switch (paramString.charAt(b)) { + case '\000': + break; + case '\b': + stringBuffer.append("\\b"); + break; + case '\t': + stringBuffer.append("\\t"); + break; + case '\n': + stringBuffer.append("\\n"); + break; + case '\f': + stringBuffer.append("\\f"); + break; + case '\r': + stringBuffer.append("\\r"); + break; + case '"': + stringBuffer.append("\\\""); + break; + case '\'': + stringBuffer.append("\\'"); + break; + case '\\': + stringBuffer.append("\\\\"); + break; + default: + if ((c = paramString.charAt(b)) < ' ' || c > '~') { + String str = "0000" + Integer.toString(c, 16); + stringBuffer.append("\\u" + str.substring(str.length() - 4, str.length())); + break; + } + stringBuffer.append(c); + break; + } + } + return stringBuffer.toString(); + } + + protected static String LexicalError(boolean paramBoolean, int paramInt1, int paramInt2, int paramInt3, String paramString, char paramChar) { + return "Lexical error at line " + paramInt2 + ", column " + paramInt3 + ". Encountered: " + (paramBoolean ? " " : ("\"" + addEscapes(String.valueOf(paramChar)) + "\"" + " (" + paramChar + "), ")) + "after : \"" + addEscapes(paramString) + "\""; + } + + public String getMessage() { + return super.getMessage(); + } + + public TokenMgrError() {} + + public TokenMgrError(String paramString, int paramInt) { + super(paramString); + this.errorCode = paramInt; + } + + public TokenMgrError(boolean paramBoolean, int paramInt1, int paramInt2, int paramInt3, String paramString, char paramChar, int paramInt4) { + this(LexicalError(paramBoolean, paramInt1, paramInt2, paramInt3, paramString, paramChar), paramInt4); + } +} diff --git a/hrmsEjb/org/nfunk/jep/Variable.java b/hrmsEjb/org/nfunk/jep/Variable.java new file mode 100644 index 0000000..2bf1b77 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/Variable.java @@ -0,0 +1,69 @@ +package org.nfunk.jep; + +import java.util.Observable; + +public class Variable extends Observable { + protected String name; + + private Object value; + + private boolean isConstant = false; + + private boolean validValue = false; + + protected Variable(String paramString) { + this.name = paramString; + this.value = null; + this.validValue = false; + } + + protected Variable(String paramString, Object paramObject) { + this.name = paramString; + this.value = paramObject; + this.validValue = (paramObject != null); + } + + public String getName() { + return this.name; + } + + public boolean isConstant() { + return this.isConstant; + } + + public void setIsConstant(boolean paramBoolean) { + this.isConstant = paramBoolean; + } + + public Object getValue() { + return this.value; + } + + public boolean hasValidValue() { + return this.validValue; + } + + public void setValidValue(boolean paramBoolean) { + this.validValue = paramBoolean; + } + + public boolean setValue(Object paramObject) { + if (!setValueRaw(paramObject)) + return false; + setChanged(); + notifyObservers(); + return true; + } + + protected boolean setValueRaw(Object paramObject) { + if (this.isConstant) + return false; + this.validValue = true; + this.value = paramObject; + return true; + } + + public String toString() { + return (!this.validValue || this.value == null) ? (this.name + ": null") : (this.isConstant ? (this.name + ": " + this.value.toString() + " (Constant)") : (this.name + ": " + this.value.toString())); + } +} diff --git a/hrmsEjb/org/nfunk/jep/VariableFactory.java b/hrmsEjb/org/nfunk/jep/VariableFactory.java new file mode 100644 index 0000000..7f12084 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/VariableFactory.java @@ -0,0 +1,11 @@ +package org.nfunk.jep; + +public class VariableFactory { + public Variable createVariable(String paramString, Object paramObject) { + return new Variable(paramString, paramObject); + } + + public Variable createVariable(String paramString) { + return new Variable(paramString); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Abs.java b/hrmsEjb/org/nfunk/jep/function/Abs.java new file mode 100644 index 0000000..1d12899 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Abs.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Abs extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(abs(object)); + } + + public Object abs(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return new Double(((Complex)paramObject).abs()); + if (paramObject instanceof Number) + return new Double(Math.abs(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Add.java b/hrmsEjb/org/nfunk/jep/function/Add.java new file mode 100644 index 0000000..4bbf89f --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Add.java @@ -0,0 +1,46 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Add extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + for (byte b = 1; b < this.curNumberOfParameters; b++) { + Object object1 = paramStack.pop(); + object = add(object1, object); + } + paramStack.push(object); + } + + public Object add(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex) { + if (paramObject2 instanceof Complex) + return add((Complex)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return add((Complex)paramObject1, (Number)paramObject2); + } else if (paramObject1 instanceof Number) { + if (paramObject2 instanceof Complex) + return add((Complex)paramObject2, (Number)paramObject1); + if (paramObject2 instanceof Number) + return add((Number)paramObject1, (Number)paramObject2); + } else if (paramObject1 instanceof String && paramObject2 instanceof String) { + return (String)paramObject1 + (String)paramObject2; + } + throw new ParseException("Invalid parameter type"); + } + + public Double add(Number paramNumber1, Number paramNumber2) { + return new Double(paramNumber1.doubleValue() + paramNumber2.doubleValue()); + } + + public Complex add(Complex paramComplex1, Complex paramComplex2) { + return new Complex(paramComplex1.re() + paramComplex2.re(), paramComplex1.im() + paramComplex2.im()); + } + + public Complex add(Complex paramComplex, Number paramNumber) { + return new Complex(paramComplex.re() + paramNumber.doubleValue(), paramComplex.im()); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ArcCosine.java b/hrmsEjb/org/nfunk/jep/function/ArcCosine.java new file mode 100644 index 0000000..c3b7763 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ArcCosine.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class ArcCosine extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(acos(object)); + } + + public Object acos(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).acos(); + if (paramObject instanceof Number) + return new Double(Math.acos(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ArcCosineH.java b/hrmsEjb/org/nfunk/jep/function/ArcCosineH.java new file mode 100644 index 0000000..ec56485 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ArcCosineH.java @@ -0,0 +1,28 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class ArcCosineH extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(acosh(object)); + } + + public Object acosh(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).acosh(); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + if (d >= 1.0D) { + double d1 = Math.log(d + Math.sqrt(d * d - 1.0D)); + return new Double(d1); + } + Complex complex = new Complex(((Number)paramObject).doubleValue(), 0.0D); + return complex.acosh(); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ArcSine.java b/hrmsEjb/org/nfunk/jep/function/ArcSine.java new file mode 100644 index 0000000..b71d928 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ArcSine.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class ArcSine extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(asin(object)); + } + + public Object asin(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).asin(); + if (paramObject instanceof Number) + return new Double(Math.asin(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ArcSineH.java b/hrmsEjb/org/nfunk/jep/function/ArcSineH.java new file mode 100644 index 0000000..4c8b033 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ArcSineH.java @@ -0,0 +1,24 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class ArcSineH extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(asinh(object)); + } + + public Object asinh(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).asinh(); + if (paramObject instanceof Number) { + double d1 = ((Number)paramObject).doubleValue(); + double d2 = Math.log(d1 + Math.sqrt(d1 * d1 + 1.0D)); + return new Double(d2); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ArcTanH.java b/hrmsEjb/org/nfunk/jep/function/ArcTanH.java new file mode 100644 index 0000000..9ab0f27 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ArcTanH.java @@ -0,0 +1,28 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class ArcTanH extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(atanh(object)); + } + + public Object atanh(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).atanh(); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + if (d > -1.0D && d < 1.0D) { + double d1 = Math.log((1.0D + d) / (1.0D - d)) / 2.0D; + return new Double(d1); + } + Complex complex = new Complex(d, 0.0D); + return complex.atanh(); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ArcTangent.java b/hrmsEjb/org/nfunk/jep/function/ArcTangent.java new file mode 100644 index 0000000..9faf105 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ArcTangent.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class ArcTangent extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(atan(object)); + } + + public Object atan(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).atan(); + if (paramObject instanceof Number) + return new Double(Math.atan(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ArcTangent2.java b/hrmsEjb/org/nfunk/jep/function/ArcTangent2.java new file mode 100644 index 0000000..cb364b5 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ArcTangent2.java @@ -0,0 +1,19 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class ArcTangent2 extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Number number1 = (Number)paramStack.pop(); + Number number2 = (Number)paramStack.pop(); + if (number2 instanceof Number && number1 instanceof Number) { + double d1 = ((Number)number2).doubleValue(); + double d2 = ((Number)number1).doubleValue(); + paramStack.push(new Double(Math.atan2(d1, d2))); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Arg.java b/hrmsEjb/org/nfunk/jep/function/Arg.java new file mode 100644 index 0000000..daae575 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Arg.java @@ -0,0 +1,23 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Arg extends PostfixMathCommand { + private static final Double ONE = new Double(1.0D); + + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(arg(object)); + } + + public Number arg(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return new Double(((Complex)paramObject).arg()); + if (paramObject instanceof Number) + return ONE; + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Assign.java b/hrmsEjb/org/nfunk/jep/function/Assign.java new file mode 100644 index 0000000..fcdacf7 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Assign.java @@ -0,0 +1,26 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ASTVarNode; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.ParserVisitor; +import org.nfunk.jep.Variable; + +public class Assign extends PostfixMathCommand implements SpecialEvaluationI { + public Object evaluate(Node paramNode, Object paramObject, ParserVisitor paramParserVisitor, Stack paramStack) throws ParseException { + if (paramNode.jjtGetNumChildren() != 2) + throw new ParseException("Assignment opperator must have 2 operators."); + paramNode.jjtGetChild(1).jjtAccept(paramParserVisitor, paramObject); + checkStack(paramStack); + Object object = paramStack.peek(); + Node node = paramNode.jjtGetChild(0); + if (node instanceof ASTVarNode) { + ASTVarNode aSTVarNode = (ASTVarNode)node; + Variable variable = aSTVarNode.getVar(); + variable.setValue(object); + return object; + } + throw new ParseException("Assignment should have a variable for the lhs."); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Comparative.java b/hrmsEjb/org/nfunk/jep/function/Comparative.java new file mode 100644 index 0000000..af7820f --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Comparative.java @@ -0,0 +1,121 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Comparative extends PostfixMathCommand { + int id; + + double tolerance; + + public static final int LT = 0; + + public static final int GT = 1; + + public static final int LE = 2; + + public static final int GE = 3; + + public static final int NE = 4; + + public static final int EQ = 5; + + public Comparative(int paramInt) { + this.id = paramInt; + this.numberOfParameters = 2; + this.tolerance = 1.0E-6D; + } + + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object1 = paramStack.pop(); + Object object2 = paramStack.pop(); + boolean bool = false; + switch (this.id) { + case 0: + bool = lt(object2, object1); + break; + case 1: + bool = gt(object2, object1); + break; + case 2: + bool = le(object2, object1); + break; + case 3: + bool = ge(object2, object1); + break; + case 4: + bool = ne(object2, object1); + break; + case 5: + bool = eq(object2, object1); + break; + } + if (bool) { + paramStack.push(new Double(1.0D)); + } else { + paramStack.push(new Double(0.0D)); + } + } + + public boolean lt(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex || paramObject2 instanceof Complex) + throw new ParseException("< not defined for complex numbers"); + if (paramObject1 instanceof Number && paramObject2 instanceof Number) { + double d1 = ((Number)paramObject1).doubleValue(); + double d2 = ((Number)paramObject2).doubleValue(); + return (d1 < d2); + } + throw new ParseException("< not defined for object of type " + paramObject1.getClass().getName() + " and " + paramObject1.getClass().getName()); + } + + public boolean gt(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex || paramObject2 instanceof Complex) + throw new ParseException("> not defined for complex numbers"); + if (paramObject1 instanceof Number && paramObject2 instanceof Number) { + double d1 = ((Number)paramObject1).doubleValue(); + double d2 = ((Number)paramObject2).doubleValue(); + return (d1 > d2); + } + throw new ParseException("> not defined for object of type " + paramObject1.getClass().getName() + " and " + paramObject1.getClass().getName()); + } + + public boolean le(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex || paramObject2 instanceof Complex) + throw new ParseException("<= not defined for complex numbers"); + if (paramObject1 instanceof Number && paramObject2 instanceof Number) { + double d1 = ((Number)paramObject1).doubleValue(); + double d2 = ((Number)paramObject2).doubleValue(); + return (d1 <= d2); + } + throw new ParseException("<= not defined for object of type " + paramObject1.getClass().getName() + " and " + paramObject1.getClass().getName()); + } + + public boolean ge(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex || paramObject2 instanceof Complex) + throw new ParseException(">= not defined for complex numbers"); + if (paramObject1 instanceof Number && paramObject2 instanceof Number) { + double d1 = ((Number)paramObject1).doubleValue(); + double d2 = ((Number)paramObject2).doubleValue(); + return (d1 >= d2); + } + throw new ParseException(">= not defined for object of type " + paramObject1.getClass().getName() + " and " + paramObject1.getClass().getName()); + } + + public boolean eq(Object paramObject1, Object paramObject2) throws ParseException { + return (paramObject1 instanceof Complex && paramObject2 instanceof Complex) ? ((Complex)paramObject1).equals((Complex)paramObject2, this.tolerance) : ((paramObject1 instanceof Complex && paramObject2 instanceof Double) ? ((Complex)paramObject1).equals(new Complex((Number)paramObject2), this.tolerance) : ((paramObject2 instanceof Complex && paramObject1 instanceof Double) ? ((Complex)paramObject2).equals(new Complex((Number)paramObject1), this.tolerance) : paramObject1.equals(paramObject2))); + } + + public boolean ne(Object paramObject1, Object paramObject2) throws ParseException { + return (paramObject1 instanceof Complex && paramObject2 instanceof Complex) ? (!((Complex)paramObject1).equals((Complex)paramObject2, this.tolerance)) : ((paramObject1 instanceof Complex && paramObject2 instanceof Double) ? (!((Complex)paramObject1).equals(new Complex((Number)paramObject2), this.tolerance)) : ((paramObject2 instanceof Complex && paramObject1 instanceof Double) ? (!((Complex)paramObject2).equals(new Complex((Number)paramObject1), this.tolerance)) : (!paramObject1.equals(paramObject2)))); + } + + public double getTolerance() { + return this.tolerance; + } + + public void setTolerance(double paramDouble) { + this.tolerance = paramDouble; + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/ComplexPFMC.java b/hrmsEjb/org/nfunk/jep/function/ComplexPFMC.java new file mode 100644 index 0000000..f116c01 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/ComplexPFMC.java @@ -0,0 +1,20 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class ComplexPFMC extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Number number1 = (Number)paramStack.pop(); + Number number2 = (Number)paramStack.pop(); + if (number2 instanceof Number && number1 instanceof Number) { + double d1 = ((Number)number2).doubleValue(); + double d2 = ((Number)number1).doubleValue(); + paramStack.push(new Complex(d1, d2)); + } else { + throw new ParseException("Complex: Invalid parameter types " + number2.getClass().getName() + " " + number2.getClass().getName()); + } + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Cosine.java b/hrmsEjb/org/nfunk/jep/function/Cosine.java new file mode 100644 index 0000000..30a2112 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Cosine.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Cosine extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(cos(object)); + } + + public Object cos(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).cos(); + if (paramObject instanceof Number) + return new Double(Math.cos(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/CosineH.java b/hrmsEjb/org/nfunk/jep/function/CosineH.java new file mode 100644 index 0000000..100e6cf --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/CosineH.java @@ -0,0 +1,23 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class CosineH extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(cosh(object)); + } + + public Object cosh(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).cosh(); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + return new Double((Math.exp(d) + Math.exp(-d)) / 2.0D); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Cross.java b/hrmsEjb/org/nfunk/jep/function/Cross.java new file mode 100644 index 0000000..f108775 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Cross.java @@ -0,0 +1,39 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import java.util.Vector; +import org.nfunk.jep.ParseException; + +public class Cross extends PostfixMathCommand { + static Subtract sub = new Subtract(); + + static Multiply mul = new Multiply(); + + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object1 = paramStack.pop(); + Object object2 = paramStack.pop(); + paramStack.push(cross(object2, object1)); + } + + public Object cross(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Vector && paramObject2 instanceof Vector) + return cross((Vector)paramObject1, (Vector)paramObject2); + throw new ParseException("Cross: Invalid parameter type, both arguments must be vectors"); + } + + public Object cross(Vector paramVector1, Vector paramVector2) throws ParseException { + int i = paramVector1.size(); + if ((i != 2 && i != 3) || i != paramVector2.size()) + throw new ParseException("Cross: both sides must be of length 3"); + if (i == 3) { + Vector vector = new Vector(3); + vector.setSize(3); + vector.setElementAt(sub.sub(mul.mul(paramVector1.elementAt(1), paramVector2.elementAt(2)), mul.mul(paramVector1.elementAt(2), paramVector2.elementAt(1))), 0); + vector.setElementAt(sub.sub(mul.mul(paramVector1.elementAt(2), paramVector2.elementAt(0)), mul.mul(paramVector1.elementAt(0), paramVector2.elementAt(2))), 1); + vector.setElementAt(sub.sub(mul.mul(paramVector1.elementAt(0), paramVector2.elementAt(1)), mul.mul(paramVector1.elementAt(1), paramVector2.elementAt(0))), 2); + return vector; + } + return sub.sub(mul.mul(paramVector1.elementAt(0), paramVector2.elementAt(1)), mul.mul(paramVector1.elementAt(1), paramVector2.elementAt(0))); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Divide.java b/hrmsEjb/org/nfunk/jep/function/Divide.java new file mode 100644 index 0000000..8b36459 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Divide.java @@ -0,0 +1,84 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import java.util.Vector; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Divide extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object1 = paramStack.pop(); + Object object2 = paramStack.pop(); + paramStack.push(div(object2, object1)); + } + + public Object div(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex) { + if (paramObject2 instanceof Complex) + return div((Complex)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return div((Complex)paramObject1, (Number)paramObject2); + if (paramObject2 instanceof Vector) + return div((Complex)paramObject1, (Vector)paramObject2); + } else if (paramObject1 instanceof Number) { + if (paramObject2 instanceof Complex) + return div((Number)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return div((Number)paramObject1, (Number)paramObject2); + if (paramObject2 instanceof Vector) + return div((Number)paramObject1, (Vector)paramObject2); + } else if (paramObject1 instanceof Vector) { + if (paramObject2 instanceof Complex) + return div((Vector)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return div((Vector)paramObject1, (Number)paramObject2); + } + throw new ParseException("Invalid parameter type"); + } + + public Double div(Number paramNumber1, Number paramNumber2) { + return new Double(paramNumber1.doubleValue() / paramNumber2.doubleValue()); + } + + public Complex div(Complex paramComplex1, Complex paramComplex2) { + return paramComplex1.div(paramComplex2); + } + + public Complex div(Number paramNumber, Complex paramComplex) { + Complex complex = new Complex(paramNumber.doubleValue(), 0.0D); + return complex.div(paramComplex); + } + + public Complex div(Complex paramComplex, Number paramNumber) { + return new Complex(paramComplex.re() / paramNumber.doubleValue(), paramComplex.im() / paramNumber.doubleValue()); + } + + public Vector div(Vector paramVector, Number paramNumber) { + Vector vector = new Vector(); + for (byte b = 0; b < paramVector.size(); b++) + vector.addElement(div(paramVector.elementAt(b), paramNumber)); + return vector; + } + + public Vector div(Number paramNumber, Vector paramVector) { + Vector vector = new Vector(); + for (byte b = 0; b < paramVector.size(); b++) + vector.addElement(div(paramNumber, paramVector.elementAt(b))); + return vector; + } + + public Vector div(Vector paramVector, Complex paramComplex) { + Vector vector = new Vector(); + for (byte b = 0; b < paramVector.size(); b++) + vector.addElement(div(paramVector.elementAt(b), paramComplex)); + return vector; + } + + public Vector div(Complex paramComplex, Vector paramVector) { + Vector vector = new Vector(); + for (byte b = 0; b < paramVector.size(); b++) + vector.addElement(div(paramComplex, paramVector.elementAt(b))); + return vector; + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Dot.java b/hrmsEjb/org/nfunk/jep/function/Dot.java new file mode 100644 index 0000000..ff5ff74 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Dot.java @@ -0,0 +1,36 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import java.util.Vector; +import org.nfunk.jep.ParseException; + +public class Dot extends PostfixMathCommand { + static Add add = new Add(); + + static Multiply mul = new Multiply(); + + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object1 = paramStack.pop(); + Object object2 = paramStack.pop(); + paramStack.push(dot(object2, object1)); + } + + public Object dot(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Vector && paramObject2 instanceof Vector) + return dot((Vector)paramObject1, (Vector)paramObject2); + throw new ParseException("Dot: Invalid parameter type, both arguments must be vectors"); + } + + public Object dot(Vector paramVector1, Vector paramVector2) throws ParseException { + if (paramVector1.size() != paramVector2.size()) + throw new ParseException("Dot: both sides of dot must be same length"); + int i = paramVector1.size(); + if (i < 1) + throw new ParseException("Dot: empty vectors parsed"); + Object object = mul.mul(paramVector1.elementAt(0), paramVector2.elementAt(0)); + for (byte b = 1; b < i; b++) + object = add.add(object, mul.mul(paramVector1.elementAt(b), paramVector2.elementAt(b))); + return object; + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Exp.java b/hrmsEjb/org/nfunk/jep/function/Exp.java new file mode 100644 index 0000000..fd4a783 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Exp.java @@ -0,0 +1,26 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Exp extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(exp(object)); + } + + public Object exp(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) { + Complex complex = (Complex)paramObject; + double d1 = complex.re(); + double d2 = complex.im(); + double d3 = Math.exp(d1); + return new Complex(d3 * Math.cos(d2), d3 * Math.sin(d2)); + } + if (paramObject instanceof Number) + return new Double(Math.exp(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/If.java b/hrmsEjb/org/nfunk/jep/function/If.java new file mode 100644 index 0000000..651cdb3 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/If.java @@ -0,0 +1,34 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.ParserVisitor; +import org.nfunk.jep.type.Complex; + +public class If extends PostfixMathCommand implements SpecialEvaluationI { + public Object evaluate(Node paramNode, Object paramObject, ParserVisitor paramParserVisitor, Stack paramStack) throws ParseException { + double d; + int i = paramNode.jjtGetNumChildren(); + if (i < 3 || i > 4) + throw new ParseException("If operator must have 3 or 4 arguments."); + paramNode.jjtGetChild(0).jjtAccept(paramParserVisitor, paramObject); + checkStack(paramStack); + Double double_ = (Double)paramStack.pop(); + if (double_ instanceof Double) { + d = ((Double)double_).doubleValue(); + } else if (double_ instanceof Complex) { + d = ((Complex)double_).re(); + } else { + throw new ParseException("Condition in if operator must be double or complex"); + } + if (d > 0.0D) { + paramNode.jjtGetChild(1).jjtAccept(paramParserVisitor, paramObject); + } else if (i == 3 || d < 0.0D) { + paramNode.jjtGetChild(2).jjtAccept(paramParserVisitor, paramObject); + } else { + paramNode.jjtGetChild(3).jjtAccept(paramParserVisitor, paramObject); + } + return paramObject; + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Imaginary.java b/hrmsEjb/org/nfunk/jep/function/Imaginary.java new file mode 100644 index 0000000..1bcec07 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Imaginary.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Imaginary extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(im(object)); + } + + public Number im(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return new Double(((Complex)paramObject).im()); + if (paramObject instanceof Number) + return new Double(0.0D); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/List.java b/hrmsEjb/org/nfunk/jep/function/List.java new file mode 100644 index 0000000..10a54a9 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/List.java @@ -0,0 +1,20 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import java.util.Vector; +import org.nfunk.jep.ParseException; + +public class List extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + if (this.curNumberOfParameters < 1) + throw new ParseException("Empty list"); + Vector vector = new Vector(this.curNumberOfParameters); + vector.setSize(this.curNumberOfParameters); + for (int i = this.curNumberOfParameters - 1; i >= 0; i--) { + Object object = paramStack.pop(); + vector.setElementAt(object, i); + } + paramStack.push(vector); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Logarithm.java b/hrmsEjb/org/nfunk/jep/function/Logarithm.java new file mode 100644 index 0000000..203f0a9 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Logarithm.java @@ -0,0 +1,30 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Logarithm extends PostfixMathCommand { + private static final double LOG10 = Math.log(10.0D); + + private static final Complex CLOG10 = new Complex(Math.log(10.0D), 0.0D); + + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(log(object)); + } + + public Object log(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).log().div(CLOG10); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + if (d > 0.0D) + return new Double(Math.log(d) / LOG10); + Complex complex = new Complex(d); + return complex.log().div(CLOG10); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Logical.java b/hrmsEjb/org/nfunk/jep/function/Logical.java new file mode 100644 index 0000000..ebeefba --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Logical.java @@ -0,0 +1,42 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class Logical extends PostfixMathCommand { + int id; + + public static final int AND = 0; + + public static final int OR = 1; + + public Logical(int paramInt) { + this.id = paramInt; + this.numberOfParameters = 2; + } + + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Number number1 = (Number)paramStack.pop(); + Number number2 = (Number)paramStack.pop(); + if (number2 instanceof Number && number1 instanceof Number) { + boolean bool; + double d1 = ((Number)number2).doubleValue(); + double d2 = ((Number)number1).doubleValue(); + switch (this.id) { + case 0: + bool = (d1 != 0.0D && d2 != 0.0D) ? true : false; + break; + case 1: + bool = (d1 != 0.0D || d2 != 0.0D) ? true : false; + break; + default: + bool = false; + break; + } + paramStack.push(new Double(bool)); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Modulus.java b/hrmsEjb/org/nfunk/jep/function/Modulus.java new file mode 100644 index 0000000..5fcece1 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Modulus.java @@ -0,0 +1,20 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class Modulus extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Number number1 = (Number)paramStack.pop(); + Number number2 = (Number)paramStack.pop(); + if (number2 instanceof Number && number1 instanceof Number) { + double d1 = ((Number)number1).doubleValue(); + double d2 = ((Number)number2).doubleValue(); + double d3 = d2 % d1; + paramStack.push(new Double(d3)); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Multiply.java b/hrmsEjb/org/nfunk/jep/function/Multiply.java new file mode 100644 index 0000000..737beef --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Multiply.java @@ -0,0 +1,68 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import java.util.Vector; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Multiply extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + for (byte b = 1; b < this.curNumberOfParameters; b++) { + Object object1 = paramStack.pop(); + object = mul(object1, object); + } + paramStack.push(object); + } + + public Object mul(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex) { + if (paramObject2 instanceof Complex) + return mul((Complex)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return mul((Complex)paramObject1, (Number)paramObject2); + if (paramObject2 instanceof Vector) + return mul((Vector)paramObject2, (Complex)paramObject1); + } else if (paramObject1 instanceof Number) { + if (paramObject2 instanceof Complex) + return mul((Complex)paramObject2, (Number)paramObject1); + if (paramObject2 instanceof Number) + return mul((Number)paramObject1, (Number)paramObject2); + if (paramObject2 instanceof Vector) + return mul((Vector)paramObject2, (Number)paramObject1); + } else if (paramObject1 instanceof Vector) { + if (paramObject2 instanceof Complex) + return mul((Vector)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return mul((Vector)paramObject1, (Number)paramObject2); + } + throw new ParseException("Invalid parameter type"); + } + + public Double mul(Number paramNumber1, Number paramNumber2) { + return new Double(paramNumber1.doubleValue() * paramNumber2.doubleValue()); + } + + public Complex mul(Complex paramComplex1, Complex paramComplex2) { + return paramComplex1.mul(paramComplex2); + } + + public Complex mul(Complex paramComplex, Number paramNumber) { + return paramComplex.mul(paramNumber.doubleValue()); + } + + public Vector mul(Vector paramVector, Number paramNumber) { + Vector vector = new Vector(); + for (byte b = 0; b < paramVector.size(); b++) + vector.addElement(mul(paramVector.elementAt(b), paramNumber)); + return vector; + } + + public Vector mul(Vector paramVector, Complex paramComplex) { + Vector vector = new Vector(); + for (byte b = 0; b < paramVector.size(); b++) + vector.addElement(mul(paramComplex, paramVector.elementAt(b))); + return vector; + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/NaturalLogarithm.java b/hrmsEjb/org/nfunk/jep/function/NaturalLogarithm.java new file mode 100644 index 0000000..c34c4cd --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/NaturalLogarithm.java @@ -0,0 +1,26 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class NaturalLogarithm extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(ln(object)); + } + + public Object ln(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).log(); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + if (d > 0.0D) + return new Double(Math.log(d)); + Complex complex = new Complex(d); + return complex.log(); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Not.java b/hrmsEjb/org/nfunk/jep/function/Not.java new file mode 100644 index 0000000..701bd03 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Not.java @@ -0,0 +1,17 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class Not extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Number number = (Number)paramStack.pop(); + if (number instanceof Number) { + boolean bool = (((Number)number).doubleValue() == 0.0D) ? true : false; + paramStack.push(new Double(bool)); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Polar.java b/hrmsEjb/org/nfunk/jep/function/Polar.java new file mode 100644 index 0000000..e508435 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Polar.java @@ -0,0 +1,18 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Polar extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Number number1 = (Number)paramStack.pop(); + Number number2 = (Number)paramStack.pop(); + if (number2 instanceof Number && number1 instanceof Number) { + paramStack.push(Complex.polarValueOf(number2, number1)); + } else { + throw new ParseException("Complex: Invalid parameter types " + number2.getClass().getName() + " " + number2.getClass().getName()); + } + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/PostfixMathCommand.java b/hrmsEjb/org/nfunk/jep/function/PostfixMathCommand.java new file mode 100644 index 0000000..045235b --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/PostfixMathCommand.java @@ -0,0 +1,27 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class PostfixMathCommand implements PostfixMathCommandI { + protected int numberOfParameters = 0; + + protected int curNumberOfParameters = 0; + + protected void checkStack(Stack paramStack) throws ParseException { + if (null == paramStack) + throw new ParseException("Stack argument null"); + } + + public int getNumberOfParameters() { + return this.numberOfParameters; + } + + public void setCurNumberOfParameters(int paramInt) { + this.curNumberOfParameters = paramInt; + } + + public void run(Stack paramStack) throws ParseException { + throw new ParseException("run() method of PostfixMathCommand called"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/PostfixMathCommandI.java b/hrmsEjb/org/nfunk/jep/function/PostfixMathCommandI.java new file mode 100644 index 0000000..029a348 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/PostfixMathCommandI.java @@ -0,0 +1,12 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public interface PostfixMathCommandI { + void run(Stack paramStack) throws ParseException; + + int getNumberOfParameters(); + + void setCurNumberOfParameters(int paramInt); +} diff --git a/hrmsEjb/org/nfunk/jep/function/Power.java b/hrmsEjb/org/nfunk/jep/function/Power.java new file mode 100644 index 0000000..856e217 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Power.java @@ -0,0 +1,53 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Power extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object1 = paramStack.pop(); + Object object2 = paramStack.pop(); + paramStack.push(power(object2, object1)); + } + + public Object power(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex) { + if (paramObject2 instanceof Complex) + return power((Complex)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return power((Complex)paramObject1, (Number)paramObject2); + } else if (paramObject1 instanceof Number) { + if (paramObject2 instanceof Complex) + return power((Number)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return power((Number)paramObject1, (Number)paramObject2); + } + throw new ParseException("Invalid parameter type"); + } + + public Object power(Number paramNumber1, Number paramNumber2) { + if (paramNumber1.doubleValue() < 0.0D && paramNumber2.doubleValue() != paramNumber2.intValue()) { + Complex complex = new Complex(paramNumber1.doubleValue(), 0.0D); + return complex.power(paramNumber2.doubleValue()); + } + return new Double(Math.pow(paramNumber1.doubleValue(), paramNumber2.doubleValue())); + } + + public Object power(Complex paramComplex1, Complex paramComplex2) { + Complex complex = paramComplex1.power(paramComplex2); + return (complex.im() == 0.0D) ? new Double(complex.re()) : complex; + } + + public Object power(Complex paramComplex, Number paramNumber) { + Complex complex = paramComplex.power(paramNumber.doubleValue()); + return (complex.im() == 0.0D) ? new Double(complex.re()) : complex; + } + + public Object power(Number paramNumber, Complex paramComplex) { + Complex complex1 = new Complex(paramNumber.doubleValue(), 0.0D); + Complex complex2 = complex1.power(paramComplex); + return (complex2.im() == 0.0D) ? new Double(complex2.re()) : complex2; + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Random.java b/hrmsEjb/org/nfunk/jep/function/Random.java new file mode 100644 index 0000000..ed3e440 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Random.java @@ -0,0 +1,11 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class Random extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + paramStack.push(new Double(Math.random())); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Real.java b/hrmsEjb/org/nfunk/jep/function/Real.java new file mode 100644 index 0000000..fe79841 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Real.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Real extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(re(object)); + } + + public Number re(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return new Double(((Complex)paramObject).re()); + if (paramObject instanceof Number) + return (Number)paramObject; + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Sine.java b/hrmsEjb/org/nfunk/jep/function/Sine.java new file mode 100644 index 0000000..305afd0 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Sine.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Sine extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(sin(object)); + } + + public Object sin(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).sin(); + if (paramObject instanceof Number) + return new Double(Math.sin(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/SineH.java b/hrmsEjb/org/nfunk/jep/function/SineH.java new file mode 100644 index 0000000..5e01b38 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/SineH.java @@ -0,0 +1,23 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class SineH extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(sinh(object)); + } + + public Object sinh(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).sinh(); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + return new Double((Math.exp(d) - Math.exp(-d)) / 2.0D); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/SpecialEvaluationI.java b/hrmsEjb/org/nfunk/jep/function/SpecialEvaluationI.java new file mode 100644 index 0000000..df4630a --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/SpecialEvaluationI.java @@ -0,0 +1,10 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.ParserVisitor; + +public interface SpecialEvaluationI { + Object evaluate(Node paramNode, Object paramObject, ParserVisitor paramParserVisitor, Stack paramStack) throws ParseException; +} diff --git a/hrmsEjb/org/nfunk/jep/function/SquareRoot.java b/hrmsEjb/org/nfunk/jep/function/SquareRoot.java new file mode 100644 index 0000000..3b198e3 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/SquareRoot.java @@ -0,0 +1,23 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class SquareRoot extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(sqrt(object)); + } + + public Object sqrt(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).sqrt(); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + return (d < 0.0D) ? (new Complex(d)).sqrt() : new Double(Math.sqrt(d)); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Str.java b/hrmsEjb/org/nfunk/jep/function/Str.java new file mode 100644 index 0000000..82e37b1 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Str.java @@ -0,0 +1,12 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class Str extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(object.toString()); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Subtract.java b/hrmsEjb/org/nfunk/jep/function/Subtract.java new file mode 100644 index 0000000..89b99ef --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Subtract.java @@ -0,0 +1,45 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Subtract extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object1 = paramStack.pop(); + Object object2 = paramStack.pop(); + paramStack.push(sub(object2, object1)); + } + + public Object sub(Object paramObject1, Object paramObject2) throws ParseException { + if (paramObject1 instanceof Complex) { + if (paramObject2 instanceof Complex) + return sub((Complex)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return sub((Complex)paramObject1, (Number)paramObject2); + } else if (paramObject1 instanceof Number) { + if (paramObject2 instanceof Complex) + return sub((Number)paramObject1, (Complex)paramObject2); + if (paramObject2 instanceof Number) + return sub((Number)paramObject1, (Number)paramObject2); + } + throw new ParseException("Invalid parameter type"); + } + + public Double sub(Number paramNumber1, Number paramNumber2) { + return new Double(paramNumber1.doubleValue() - paramNumber2.doubleValue()); + } + + public Complex sub(Complex paramComplex1, Complex paramComplex2) { + return new Complex(paramComplex1.re() - paramComplex2.re(), paramComplex1.im() - paramComplex2.im()); + } + + public Complex sub(Complex paramComplex, Number paramNumber) { + return new Complex(paramComplex.re() - paramNumber.doubleValue(), paramComplex.im()); + } + + public Complex sub(Number paramNumber, Complex paramComplex) { + return new Complex(paramNumber.doubleValue() - paramComplex.re(), -paramComplex.im()); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Sum.java b/hrmsEjb/org/nfunk/jep/function/Sum.java new file mode 100644 index 0000000..e8b7967 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Sum.java @@ -0,0 +1,30 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; + +public class Sum extends PostfixMathCommand { + private Add addFun = new Add(); + + public void run(Stack paramStack) throws ParseException { + Number number2; + if (null == paramStack) + throw new ParseException("Stack argument null"); + Number number1 = (Number)paramStack.pop(); + if (number1 instanceof Number) { + number2 = number1; + } else { + throw new ParseException("Invalid parameter type"); + } + for (byte b = 1; b < this.curNumberOfParameters; b++) { + number1 = (Number)paramStack.pop(); + if (number1 instanceof Number) { + number2 = this.addFun.add(number1, number2); + } else { + throw new ParseException("Invalid parameter type"); + } + b++; + } + paramStack.push(number2); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/TanH.java b/hrmsEjb/org/nfunk/jep/function/TanH.java new file mode 100644 index 0000000..e358745 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/TanH.java @@ -0,0 +1,23 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class TanH extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(tanh(object)); + } + + public Object tanh(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).tanh(); + if (paramObject instanceof Number) { + double d = ((Number)paramObject).doubleValue(); + return new Double((Math.exp(d) - Math.exp(-d)) / (Math.pow(Math.E, d) + Math.pow(Math.E, -d))); + } + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/Tangent.java b/hrmsEjb/org/nfunk/jep/function/Tangent.java new file mode 100644 index 0000000..7470a70 --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/Tangent.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class Tangent extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(tan(object)); + } + + public Object tan(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).tan(); + if (paramObject instanceof Number) + return new Double(Math.tan(((Number)paramObject).doubleValue())); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/function/UMinus.java b/hrmsEjb/org/nfunk/jep/function/UMinus.java new file mode 100644 index 0000000..a10e38e --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/function/UMinus.java @@ -0,0 +1,21 @@ +package org.nfunk.jep.function; + +import java.util.Stack; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +public class UMinus extends PostfixMathCommand { + public void run(Stack paramStack) throws ParseException { + checkStack(paramStack); + Object object = paramStack.pop(); + paramStack.push(umin(object)); + } + + public Object umin(Object paramObject) throws ParseException { + if (paramObject instanceof Complex) + return ((Complex)paramObject).neg(); + if (paramObject instanceof Number) + return new Double(-((Number)paramObject).doubleValue()); + throw new ParseException("Invalid parameter type"); + } +} diff --git a/hrmsEjb/org/nfunk/jep/type/Complex.java b/hrmsEjb/org/nfunk/jep/type/Complex.java new file mode 100644 index 0000000..f89bc3d --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/type/Complex.java @@ -0,0 +1,403 @@ +package org.nfunk.jep.type; + +public class Complex { + private double re = 0.0D; + + private double im = 0.0D; + + public Complex() {} + + public Complex(double paramDouble) {} + + public Complex(Number paramNumber) {} + + public Complex(Complex paramComplex) {} + + public Complex(double paramDouble1, double paramDouble2) {} + + public double re() { + return this.re; + } + + public double im() { + return this.im; + } + + public void set(Complex paramComplex) { + this.re = paramComplex.re; + this.im = paramComplex.im; + } + + public void set(double paramDouble1, double paramDouble2) { + this.re = paramDouble1; + this.im = paramDouble2; + } + + public void setRe(double paramDouble) { + this.re = paramDouble; + } + + public void setIm(double paramDouble) { + this.im = paramDouble; + } + + public boolean equals(Complex paramComplex, double paramDouble) { + double d1 = this.re - paramComplex.re; + double d2 = this.im - paramComplex.im; + return (d1 * d1 + d2 * d2 <= paramDouble * paramDouble); + } + + public boolean equals(Object paramObject) { + if (!(paramObject instanceof Complex)) + return false; + Complex complex = (Complex)paramObject; + return (Double.doubleToLongBits(this.re) == Double.doubleToLongBits(complex.re) && Double.doubleToLongBits(this.im) == Double.doubleToLongBits(complex.im)); + } + + public int hashCode() { + null = 17; + long l1 = Double.doubleToLongBits(this.re); + long l2 = Double.doubleToLongBits(this.im); + int i = (int)(l1 ^ l1 >> 32L); + int j = (int)(l2 ^ l2 >> 32L); + null = 37 * null + i; + return 37 * null + j; + } + + public String toString() { + return "(" + this.re + ", " + this.im + ")"; + } + + public boolean isInfinite() { + return (Double.isInfinite(this.re) || Double.isInfinite(this.im)); + } + + public boolean isNaN() { + return (Double.isNaN(this.re) || Double.isNaN(this.im)); + } + + public double abs() { + double d1 = Math.abs(this.re); + double d2 = Math.abs(this.im); + if (d1 == 0.0D && d2 == 0.0D) + return 0.0D; + if (d1 > d2) { + double d = d2 / d1; + return d1 * Math.sqrt(1.0D + d * d); + } + double d3 = d1 / d2; + return d2 * Math.sqrt(1.0D + d3 * d3); + } + + public double abs2() { + return this.re * this.re + this.im * this.im; + } + + public double arg() { + return Math.atan2(this.im, this.re); + } + + public Complex neg() { + return new Complex(-this.re, -this.im); + } + + public Complex mul(double paramDouble) { + return new Complex(this.re * paramDouble, this.im * paramDouble); + } + + public Complex add(Complex paramComplex) { + return new Complex(this.re + paramComplex.re, this.im + paramComplex.im); + } + + public Complex sub(Complex paramComplex) { + return new Complex(this.re - paramComplex.re, this.im - paramComplex.im); + } + + public Complex mul(Complex paramComplex) { + return new Complex(this.re * paramComplex.re - this.im * paramComplex.im, this.im * paramComplex.re + this.re * paramComplex.im); + } + + public Complex div(Complex paramComplex) { + double d1; + double d2; + if (Math.abs(paramComplex.re) >= Math.abs(paramComplex.im)) { + double d3 = paramComplex.im / paramComplex.re; + double d4 = paramComplex.re + d3 * paramComplex.im; + d1 = (this.re + d3 * this.im) / d4; + d2 = (this.im - d3 * this.re) / d4; + } else { + double d3 = paramComplex.re / paramComplex.im; + double d4 = paramComplex.im + d3 * paramComplex.re; + d1 = (this.re * d3 + this.im) / d4; + d2 = (this.im * d3 - this.re) / d4; + } + return new Complex(d1, d2); + } + + public Complex power(double paramDouble) { + double d1 = Math.pow(abs(), paramDouble); + boolean bool = false; + byte b = 0; + if (this.im == 0.0D && this.re < 0.0D) { + bool = true; + b = 2; + } + if (this.re == 0.0D && this.im > 0.0D) { + bool = true; + b = 1; + } + if (this.re == 0.0D && this.im < 0.0D) { + bool = true; + b = -1; + } + if (bool && b * paramDouble == (int)(b * paramDouble)) { + short[] arrayOfShort1 = { 0, 1, 0, -1 }; + short[] arrayOfShort2 = { 1, 0, -1, 0 }; + int i = (int)(b * paramDouble) % 4; + if (i < 0) + i = 4 + i; + return new Complex(d1 * arrayOfShort2[i], d1 * arrayOfShort1[i]); + } + double d2 = paramDouble * arg(); + return new Complex(d1 * Math.cos(d2), d1 * Math.sin(d2)); + } + + public Complex power(Complex paramComplex) { + if (paramComplex.im == 0.0D) + return power(paramComplex.re); + double d1 = Math.log(abs()); + double d2 = arg(); + double d3 = d1 * paramComplex.re - d2 * paramComplex.im; + double d4 = d1 * paramComplex.im + d2 * paramComplex.re; + double d5 = Math.exp(d3); + return new Complex(d5 * Math.cos(d4), d5 * Math.sin(d4)); + } + + public Complex log() { + return new Complex(Math.log(abs()), arg()); + } + + public Complex sqrt() { + Complex complex; + if (this.re == 0.0D && this.im == 0.0D) { + complex = new Complex(0.0D, 0.0D); + } else { + double d3; + double d1 = Math.abs(this.re); + double d2 = Math.abs(this.im); + if (d1 >= d2) { + double d = d2 / d1; + d3 = Math.sqrt(d1) * Math.sqrt(0.5D * (1.0D + Math.sqrt(1.0D + d * d))); + } else { + double d = d1 / d2; + d3 = Math.sqrt(d2) * Math.sqrt(0.5D * (d + Math.sqrt(1.0D + d * d))); + } + if (this.re >= 0.0D) { + complex = new Complex(d3, this.im / 2.0D * d3); + } else { + if (this.im < 0.0D) + d3 = -d3; + complex = new Complex(this.im / 2.0D * d3, d3); + } + } + return complex; + } + + public Complex sin() { + double d1 = -this.im; + double d2 = this.re; + double d7 = Math.exp(d1); + double d3 = d7 * Math.cos(d2); + double d4 = d7 * Math.sin(d2); + d7 = Math.exp(-d1); + double d5 = d7 * Math.cos(-d2); + double d6 = d7 * Math.sin(-d2); + d3 -= d5; + d4 -= d6; + return new Complex(0.5D * d4, -0.5D * d3); + } + + public Complex cos() { + double d1 = -this.im; + double d2 = this.re; + double d7 = Math.exp(d1); + double d3 = d7 * Math.cos(d2); + double d4 = d7 * Math.sin(d2); + d7 = Math.exp(-d1); + double d5 = d7 * Math.cos(-d2); + double d6 = d7 * Math.sin(-d2); + d3 += d5; + d4 += d6; + return new Complex(0.5D * d3, 0.5D * d4); + } + + public Complex tan() { + double d1 = -this.im; + double d2 = this.re; + double d7 = Math.exp(d1); + double d3 = d7 * Math.cos(d2); + double d4 = d7 * Math.sin(d2); + d7 = Math.exp(-d1); + double d5 = d7 * Math.cos(-d2); + double d6 = d7 * Math.sin(-d2); + d3 -= d5; + d4 -= d6; + Complex complex1 = new Complex(0.5D * d3, 0.5D * d4); + d1 = -this.im; + d2 = this.re; + d7 = Math.exp(d1); + d3 = d7 * Math.cos(d2); + d4 = d7 * Math.sin(d2); + d7 = Math.exp(-d1); + d5 = d7 * Math.cos(-d2); + d6 = d7 * Math.sin(-d2); + d3 += d5; + d4 += d6; + Complex complex2 = new Complex(0.5D * d3, 0.5D * d4); + return complex1.div(complex2); + } + + public Complex asin() { + double d1 = 1.0D - this.re * this.re - this.im * this.im; + double d2 = 0.0D - this.re * this.im + this.im * this.re; + Complex complex = new Complex(d1, d2); + complex = complex.sqrt(); + complex.re += -this.im; + complex.im += this.re; + d1 = Math.log(complex.abs()); + d2 = complex.arg(); + complex.re = d2; + complex.im = -d1; + return complex; + } + + public Complex acos() { + double d1 = 1.0D - this.re * this.re - this.im * this.im; + double d2 = 0.0D - this.re * this.im + this.im * this.re; + Complex complex = new Complex(d1, d2); + complex = complex.sqrt(); + d1 = -complex.im; + d2 = complex.re; + this.re += d1; + this.im += d2; + d1 = Math.log(complex.abs()); + d2 = complex.arg(); + complex.re = d2; + complex.im = -d1; + return complex; + } + + public Complex atan() { + Complex complex = new Complex(-this.re, 1.0D - this.im); + double d1 = this.re; + double d2 = 1.0D + this.im; + complex = complex.div(new Complex(d1, d2)); + d1 = Math.log(complex.abs()); + d2 = complex.arg(); + complex.re = 0.5D * d2; + complex.im = -0.5D * d1; + return complex; + } + + public Complex sinh() { + double d1 = Math.exp(this.re); + double d2 = d1 * Math.cos(this.im); + double d3 = d1 * Math.sin(this.im); + d1 = Math.exp(-this.re); + double d4 = d1 * Math.cos(-this.im); + double d5 = d1 * Math.sin(-this.im); + d2 -= d4; + d3 -= d5; + return new Complex(0.5D * d2, 0.5D * d3); + } + + public Complex cosh() { + double d1 = Math.exp(this.re); + double d2 = d1 * Math.cos(this.im); + double d3 = d1 * Math.sin(this.im); + d1 = Math.exp(-this.re); + double d4 = d1 * Math.cos(-this.im); + double d5 = d1 * Math.sin(-this.im); + d2 += d4; + d3 += d5; + return new Complex(0.5D * d2, 0.5D * d3); + } + + public Complex tanh() { + double d1 = Math.exp(this.re); + double d2 = d1 * Math.cos(this.im); + double d3 = d1 * Math.sin(this.im); + d1 = Math.exp(-this.re); + double d4 = d1 * Math.cos(-this.im); + double d5 = d1 * Math.sin(-this.im); + d2 -= d4; + d3 -= d5; + Complex complex1 = new Complex(0.5D * d2, 0.5D * d3); + d1 = Math.exp(this.re); + d2 = d1 * Math.cos(this.im); + d3 = d1 * Math.sin(this.im); + d1 = Math.exp(-this.re); + d4 = d1 * Math.cos(-this.im); + d5 = d1 * Math.sin(-this.im); + d2 += d4; + d3 += d5; + Complex complex2 = new Complex(0.5D * d2, 0.5D * d3); + return complex1.div(complex2); + } + + public Complex asinh() { + Complex complex = new Complex(this.re * this.re - this.im * this.im + 1.0D, this.re * this.im + this.im * this.re); + complex = complex.sqrt(); + complex.re += this.re; + complex.im += this.im; + double d = complex.arg(); + complex.re = Math.log(complex.abs()); + complex.im = d; + return complex; + } + + public Complex acosh() { + Complex complex = new Complex(this.re * this.re - this.im * this.im - 1.0D, this.re * this.im + this.im * this.re); + complex = complex.sqrt(); + complex.re += this.re; + complex.im += this.im; + double d = complex.arg(); + complex.re = Math.log(complex.abs()); + complex.im = d; + return complex; + } + + public Complex atanh() { + Complex complex = new Complex(1.0D + this.re, this.im); + double d1 = 1.0D - this.re; + double d2 = -this.im; + complex = complex.div(new Complex(d1, d2)); + d1 = Math.log(complex.abs()); + d2 = complex.arg(); + complex.re = 0.5D * d1; + complex.im = 0.5D * d2; + return complex; + } + + public static Complex polarValueOf(Number paramNumber1, Number paramNumber2) { + double d1 = paramNumber1.doubleValue(); + double d2 = paramNumber2.doubleValue(); + return new Complex(d1 * Math.cos(d2), d1 * Math.sin(d2)); + } + + public double doubleValue() { + return this.re; + } + + public float floatValue() { + return (float)this.re; + } + + public int intValue() { + return (int)this.re; + } + + public long longValue() { + return (long)this.re; + } +} diff --git a/hrmsEjb/org/nfunk/jep/type/DoubleNumberFactory.java b/hrmsEjb/org/nfunk/jep/type/DoubleNumberFactory.java new file mode 100644 index 0000000..0c42a4a --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/type/DoubleNumberFactory.java @@ -0,0 +1,7 @@ +package org.nfunk.jep.type; + +public class DoubleNumberFactory implements NumberFactory { + public Object createNumber(String paramString) { + return new Double(paramString); + } +} diff --git a/hrmsEjb/org/nfunk/jep/type/NumberFactory.java b/hrmsEjb/org/nfunk/jep/type/NumberFactory.java new file mode 100644 index 0000000..6f1ac6f --- /dev/null +++ b/hrmsEjb/org/nfunk/jep/type/NumberFactory.java @@ -0,0 +1,5 @@ +package org.nfunk.jep.type; + +public interface NumberFactory { + Object createNumber(String paramString); +} diff --git a/hrmsEjb/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml b/hrmsEjb/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml new file mode 100644 index 0000000..134ba8e --- /dev/null +++ b/hrmsEjb/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml @@ -0,0 +1,215 @@ + + + + + + HrmSecondFacade + HrmSecondFacade + HrmSecondFacadeHome + + + + ejb/HrmAttendanceFacadeLocal + ejb/HrmAttendanceFacadeLocal + HrmAttendanceFacadeLocalHome + + + + ejb/HrmEligibilityFacadeLocal + ejb/HrmEligibilityFacadeLocal + HrmEligibilityFacadeLocalHome + + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + + ejb/HrmManPlFacadeLocal + ejb/HrmManPlFacadeLocal + HrmManPlFacadeLocalHome + + + + ejb/HrmPromotionFacadeLocal + ejb/HrmPromotionFacadeLocal + HrmPromotionFacadeLocalHome + + + + ejb/HrmRecruitmentFacadeLocal + ejb/HrmRecruitmentFacadeLocal + HrmRecruitmentFacadeLocalHome + + + + ejb/HrmTrainingFacadeLocal + ejb/HrmTrainingFacadeLocal + HrmTrainingFacadeLocalHome + + + + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacadeLocalHome + + + + HrmTrainingFacade + HrmTrainingFacade + HrmTrainingFacadeLocalHome + + + + HrmAttendanceFacade + HrmAttendanceFacade + HrmAttendanceFacadeLocalHome + + + + HrmHelpFacade + HrmHelpFacade + HelpFacadeHome + + + + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacadeLocalHome + + + + HrmRecruitmentFacade + HrmRecruitmentFacade + HrmRecruitmentFacadeLocalHome + + + + HrmLeaveFacade + HrmLeaveFacade + HrmLeaveFacadeLocalHome + + + + HrmThirdFacade + HrmThirdFacade + HrmThirdFacadeHome + + + + ejb/HrmAllocationTransferDeputationFacadeLocal + ejb/HrmAllocationTransferDeputationFacadeLocal + HrmAllocationTransferDeputationFacadeLocalHome + + + + ejb/HrmPerformanceAppraisalFacadeLocal + ejb/HrmPerformanceAppraisalFacadeLocal + HrmPerformanceAppraisalFacadeLocalHome + + + + HrmEligibilityFacade + HrmEligibilityFacade + HrmEligibilityFacadeLocalHome + + + + HrmLoanFacade + HrmLoanFacade + HrmLoanFacadeLocalHome + + + + HrmUserSession + HrmUserSession + UserSessionHome + + + + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacadeLocalHome + + + + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacadeLocalHome + + + + HrmSecurityFacade + HrmSecurityFacade + SecurityFacadeHome + + + + HrmFacade + HrmFacade + HrmFacadeHome + + + + ejb/HrmAdvanceClaimFacadeLocal + ejb/HrmAdvanceClaimFacadeLocal + HrmAdvanceClaimFacadeLocalHome + + + + ejb/HrmEmployeeMaintenanceFacadeLocal + ejb/HrmEmployeeMaintenanceFacadeLocal + HrmEmployeeMaintenanceFacadeLocalHome + + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + + ejb/HrmLoanFacadeLocal + ejb/HrmLoanFacadeLocal + HrmLoanFacadeLocalHome + + + + ejb/HrmOrganisationSetUpFacadeLocal + ejb/HrmOrganisationSetUpFacadeLocal + HrmOrganisationSetUpFacadeLocalHome + + + + ejb/HrmSeparationFacadeLocal + ejb/HrmSeparationFacadeLocal + HrmSeparationFacadeLocalHome + + + + HrmSeparationFacade + HrmSeparationFacade + HrmSeparationFacadeLocalHome + + + + HrmAdvanceClaimFacade + HrmAdvanceClaimFacade + HrmAdvanceClaimFacadeLocalHome + + + + HrmManPlFacade + HrmManPlFacade + HrmManPlFacadeLocalHome + + + + HrmPromotionFacade + HrmPromotionFacade + HrmPromotionFacadeLocalHome + + diff --git a/hrmsEjb/public_html/hrms/includes/images/Brand_Final.gif b/hrmsEjb/public_html/hrms/includes/images/Brand_Final.gif new file mode 100644 index 0000000000000000000000000000000000000000..8053976de032cc8e224192699b5f4cd7dee2fe06 GIT binary patch literal 19137 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 RwZ}pJ@q2-x5Y-3>06X;F3jY8A literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/jsp/AgeAnalysisReport.jsp b/hrmsEjb/public_html/hrms/jsp/AgeAnalysisReport.jsp new file mode 100644 index 0000000..abd25da --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/AgeAnalysisReport.jsp @@ -0,0 +1,250 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + of +
+ + + + + + +
+ +
+
+ + + + + +
AGE ANALYSIS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+ Excel DownLoad + Text DownLoad + PDF DownLoad +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + + + + + + + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmAcademicQualRep.jsp b/hrmsEjb/public_html/hrms/jsp/HrmAcademicQualRep.jsp new file mode 100644 index 0000000..90465ca --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmAcademicQualRep.jsp @@ -0,0 +1,220 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + of +
+ + + + + + +
+ +
+
+ + + + + +
AGE ANALYSIS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + +
View  Report
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + + + + + + + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmAdhocReport.jsp b/hrmsEjb/public_html/hrms/jsp/HrmAdhocReport.jsp new file mode 100644 index 0000000..be58d82 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmAdhocReport.jsp @@ -0,0 +1,327 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+ + + + + + +
  + Download Result
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/HrmAprslEmployee.jsp b/hrmsEjb/public_html/hrms/jsp/HrmAprslEmployee.jsp new file mode 100644 index 0000000..7bc3daf --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmAprslEmployee.jsp @@ -0,0 +1,346 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + +
+
+
+ +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/HrmEmpAwardDtls.jsp b/hrmsEjb/public_html/hrms/jsp/HrmEmpAwardDtls.jsp new file mode 100644 index 0000000..3279109 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmEmpAwardDtls.jsp @@ -0,0 +1,388 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + <%=idx.toString()%>
+ + + + + <%=idx.toString()%>
+
+
+ + + + + + +
+ + +
+ +
+
+
+ + + + + + + + +
Draft Save
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/HrmEmpPersAssetDtls.jsp b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersAssetDtls.jsp new file mode 100644 index 0000000..e67ee21 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersAssetDtls.jsp @@ -0,0 +1,418 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + +
+
+
+ + + + + + + + + + + + + +
 Get Detail    Add Row  Delete Row of
+ +
+
+
+ + + + + + + + + + + + + + + + + +
Draft Save
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/HrmEmpPersHealth.jsp b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersHealth.jsp new file mode 100644 index 0000000..a3b038a --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersHealth.jsp @@ -0,0 +1,386 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + +
+
+
+ + + + + + +
+ + +
+ +
+
+
+ + + + + + + + +
Draft Save
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/HrmEmpPersInsDtls.jsp b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersInsDtls.jsp new file mode 100644 index 0000000..3e60630 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersInsDtls.jsp @@ -0,0 +1,393 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+
+
+ + + + + + +
+ + +
+ +
+
+
+ + + + + + + + +
Draft Save
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/HrmEmpPersLngDtls.jsp b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersLngDtls.jsp new file mode 100644 index 0000000..e42f9e0 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmEmpPersLngDtls.jsp @@ -0,0 +1,404 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+
+
+ + + + + + +
+ + +
+ +
+
+
+ + + + + + + + +
Draft Save
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/HrmMediclaimMaster.jsp b/hrmsEjb/public_html/hrms/jsp/HrmMediclaimMaster.jsp new file mode 100644 index 0000000..0274bff --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmMediclaimMaster.jsp @@ -0,0 +1,380 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
 
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+
+
+ + +
+
+
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmMisReport.jsp b/hrmsEjb/public_html/hrms/jsp/HrmMisReport.jsp new file mode 100644 index 0000000..c22ef4f --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmMisReport.jsp @@ -0,0 +1,468 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + of +
+ + + + + + +
+ + + + + + +
+ + + + + + + +
+ +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Branch + Regional OfficeBranch + Regional Office
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
 
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + <%=idx.toString()%><%=idx.toString()%>
+ + + + + + <%=idx.toString()%>
+
+
+ +
+
+
+ + + + + + +
Generate Current  Report + View Previous  Report +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmMyWorkflow.jsp b/hrmsEjb/public_html/hrms/jsp/HrmMyWorkflow.jsp new file mode 100644 index 0000000..5bc488f --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmMyWorkflow.jsp @@ -0,0 +1,450 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Query (Ctrl+Q)Insert (Alt+N) + + + of +
+ + + + + +
+ + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ All + Leave + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + Act on Worklist
+
+
+ +
+
+
+ + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmOrgDistMst.jsp b/hrmsEjb/public_html/hrms/jsp/HrmOrgDistMst.jsp new file mode 100644 index 0000000..8d793bd --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmOrgDistMst.jsp @@ -0,0 +1,295 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Refresh (Ctrl+R) + of + Go (Ctrl+G)
+ + + + + +
+ + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
 
+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + + + + + + + + + +
 Get Detail    Add Row  Delete Row of
+
+
+
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + +
+ +
+ + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmOrgTehMst.jsp b/hrmsEjb/public_html/hrms/jsp/HrmOrgTehMst.jsp new file mode 100644 index 0000000..4592c7f --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmOrgTehMst.jsp @@ -0,0 +1,295 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Refresh (Ctrl+R) + of + Go (Ctrl+G)
+ + + + + +
+ + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
 
+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + + + + + + + + + +
 Get Detail    Add Row  Delete Row of
+
+
+
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + +
+ +
+ + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmRetirementForecastRep.jsp b/hrmsEjb/public_html/hrms/jsp/HrmRetirementForecastRep.jsp new file mode 100644 index 0000000..36be744 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmRetirementForecastRep.jsp @@ -0,0 +1,248 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + of +
+ + + + + + +
+ +
+
+ + + + + +
RETIREMENT FORECAST REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
View Retirement Status
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + +
Save  Data + View  Report +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + + + + + + + diff --git a/hrmsEjb/public_html/hrms/jsp/HrmRoasterEntry.jsp b/hrmsEjb/public_html/hrms/jsp/HrmRoasterEntry.jsp new file mode 100644 index 0000000..6dda26f --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/HrmRoasterEntry.jsp @@ -0,0 +1,367 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + + + pCZU4+oC~Y>5Hl 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

N7H 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

PnCCrtpDrIYeh8UuIS#rRmY*P&eC~-BN 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'E1xg|_uvR*!XkpxEdz2KocXLxEHIJA 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
si;6Bww3kQ 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

W*gWsC1R?WfT6bB)OGsb)@hQMF{b2H$MHFsYSf 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

Ja?w*WBa#&u+~RtS62f9fKwxa3oSl7!l4n079DJ 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 CP2Lv( literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/lib/xercesImpl.jar.src.zip b/hrmsWeb/WEB-INF/lib/xercesImpl.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..96ba7f1082c6bd17a2332c41bff417679e34771a GIT binary patch literal 706882 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

^5r-k>bp7%+)5J<#DmMbCESCbtODpMpE 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�a51$$%yTsYcU`2}xAQ=b%0W)-;PWUQ_ZhKZW+< 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

VDiZL4kA=y{3gidODWF2s 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 + + + + + + + + + +1.0 +1.1 +bean +http://jakarta.apache.org/struts/tags-bean + +cookie +org.apache.struts.taglib.bean.CookieTag +org.apache.struts.taglib.bean.CookieTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +define +org.apache.struts.taglib.bean.DefineTag +org.apache.struts.taglib.bean.DefineTei +JSP + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +header +org.apache.struts.taglib.bean.HeaderTag +org.apache.struts.taglib.bean.HeaderTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +include +org.apache.struts.taglib.bean.IncludeTag +org.apache.struts.taglib.bean.IncludeTei +empty + +anchor +false +true + + +forward +false +true + + +href +false +true + + +id +true +false + + +name +false +true + + +page +false +true + + +transaction +false +true + + + +message +org.apache.struts.taglib.bean.MessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +page +org.apache.struts.taglib.bean.PageTag +org.apache.struts.taglib.bean.PageTei +empty + +id +true +false + + +property +true +true + + + +parameter +org.apache.struts.taglib.bean.ParameterTag +org.apache.struts.taglib.bean.ParameterTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +resource +org.apache.struts.taglib.bean.ResourceTag +org.apache.struts.taglib.bean.ResourceTei +empty + +id +true +false + + +input +false +true + + +name +true +true + + + +size +org.apache.struts.taglib.bean.SizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + + +struts +org.apache.struts.taglib.bean.StrutsTag +org.apache.struts.taglib.bean.StrutsTei +empty + +id +true +false + + +formBean +false +true + + +forward +false +true + + +mapping +false +true + + + +write +org.apache.struts.taglib.bean.WriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +true +true + + +property +false +true + + +scope +false +true + + + + + + diff --git a/hrmsWeb/WEB-INF/struts-config.xml b/hrmsWeb/WEB-INF/struts-config.xml new file mode 100644 index 0000000..02f1e8e --- /dev/null +++ b/hrmsWeb/WEB-INF/struts-config.xml @@ -0,0 +1,8571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/struts-html.tld b/hrmsWeb/WEB-INF/struts-html.tld new file mode 100644 index 0000000..9087060 --- /dev/null +++ b/hrmsWeb/WEB-INF/struts-html.tld @@ -0,0 +1,2972 @@ + + + + + + + + + + +1.0 +1.1 +html +http://jakarta.apache.org/struts/tags-html + +base +org.apache.struts.taglib.html.BaseTag +empty + +target +false +true + + +server +false +true + + + +button +org.apache.struts.taglib.html.ButtonTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +cancel +org.apache.struts.taglib.html.CancelTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +checkbox +org.apache.struts.taglib.html.CheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.html.ErrorsTag +empty + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + + +file +org.apache.struts.taglib.html.FileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.html.FormTag +JSP + +action +true +true + + +enctype +false +true + + +focus +false +true + + +focusIndex +false +true + + +method +false +true + + +name +false +true + + +onreset +false +true + + +onsubmit +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + +type +false +true + + + +frame +org.apache.struts.taglib.html.FrameTag + +action +false +true + + +anchor +false +true + + +forward +false +true + + +frameborder +false +true + + +frameName +false +true + + +href +false +true + + +longdesc +false +true + + +marginheight +false +true + + +marginwidth +false +true + + +name +false +true + + +noresize +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +scrolling +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +hidden +org.apache.struts.taglib.html.HiddenTag +empty + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + +write +false +true + + + +html +org.apache.struts.taglib.html.HtmlTag +JSP + +locale +false +true + + +xhtml +false +true + + + +image +org.apache.struts.taglib.html.ImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.html.ImgTag +empty + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +javascript +org.apache.struts.taglib.html.JavascriptValidatorTag +empty + +cdata +false +true + + +dynamicJavascript +false +false + + +formName +false +true + + +method +false +true + + +page +false +true + + +src +false +true + + +staticJavascript +false +false + + +htmlComment +false +true + + + +link +org.apache.struts.taglib.html.LinkTag + +accesskey +false +true + + +action +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +messages +org.apache.struts.taglib.html.MessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +false + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.html.MultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +option +org.apache.struts.taglib.html.OptionTag + +bundle +false +true + + +disabled +false +true + + +key +false +true + + +locale +false +true + + +style +false +true + + +styleId +false +true + + +styleClass +false +true + + +value +true +true + + + +options +org.apache.struts.taglib.html.OptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.html.OptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.html.PasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.html.RadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + +reset +org.apache.struts.taglib.html.ResetTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +rewrite +org.apache.struts.taglib.html.RewriteTag +empty + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + + +select +org.apache.struts.taglib.html.SelectTag +JSP + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.html.SubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.html.TextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.html.TextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +cols +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +xhtml +org.apache.struts.taglib.html.XhtmlTag +empty + + + diff --git a/hrmsWeb/WEB-INF/struts-logic.tld b/hrmsWeb/WEB-INF/struts-logic.tld new file mode 100644 index 0000000..1975973 --- /dev/null +++ b/hrmsWeb/WEB-INF/struts-logic.tld @@ -0,0 +1,642 @@ + + + + + + + + + +1.0 +1.1 +logic +http://jakarta.apache.org/struts/tags-logic + +empty +org.apache.struts.taglib.logic.EmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.logic.EqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +forward +org.apache.struts.taglib.logic.ForwardTag +empty + +name +true +true + + + +greaterEqual +org.apache.struts.taglib.logic.GreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.logic.GreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.logic.IterateTag +org.apache.struts.taglib.logic.IterateTei +JSP + +collection +false +true + + +id +true +false + + +indexId +false +false + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.logic.LessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.logic.LessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.logic.MatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.logic.MessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.logic.MessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.logic.NotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.logic.NotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.logic.NotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.logic.NotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.logic.PresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +redirect +org.apache.struts.taglib.logic.RedirectTag + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + + + + + diff --git a/hrmsWeb/WEB-INF/struts-nested.tld b/hrmsWeb/WEB-INF/struts-nested.tld new file mode 100644 index 0000000..29bf792 --- /dev/null +++ b/hrmsWeb/WEB-INF/struts-nested.tld @@ -0,0 +1,2870 @@ + + + + + + + + + +1.0 +1.1 +nested +http://jakarta.apache.org/struts/tags-nested + +nest +org.apache.struts.taglib.nested.NestedPropertyTag +JSP + +property +false +true + + + +writeNesting +org.apache.struts.taglib.nested.NestedWriteNestingTag +JSP + +property +false +true + + +filter +false +true + + + +root +org.apache.struts.taglib.nested.NestedRootTag +JSP + +name +false +true + + + +define +org.apache.struts.taglib.nested.bean.NestedDefineTag +org.apache.struts.taglib.nested.bean.NestedDefineTei +empty + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +message +org.apache.struts.taglib.nested.bean.NestedMessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +size +org.apache.struts.taglib.nested.bean.NestedSizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +write +org.apache.struts.taglib.nested.bean.NestedWriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +checkbox +org.apache.struts.taglib.nested.html.NestedCheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.nested.html.NestedErrorsTag +empty + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + + +file +org.apache.struts.taglib.nested.html.NestedFileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.nested.html.NestedFormTag +JSP + +action +true +true + + +enctype +false +true + + +focus +false +true + + +method +false +true + + +name +false +true + + +onreset +false +true + + +onsubmit +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + +type +false +true + + + +hidden +org.apache.struts.taglib.nested.html.NestedHiddenTag + +alt +false +true + + +altKey +false +true + + +indexed +false +true + + +name +false +true + + +property +true +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +image +org.apache.struts.taglib.nested.html.NestedImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.nested.html.NestedImgTag +empty + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +link +org.apache.struts.taglib.nested.html.NestedLinkTag + +accesskey +false +true + + +action +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +messages +org.apache.struts.taglib.nested.html.NestedMessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +true + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.nested.html.NestedMultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +options +org.apache.struts.taglib.nested.html.NestedOptionsTag +empty + +collection +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.nested.html.NestedOptionsCollectionTag +empty + +label +false +true + + +name +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.nested.html.NestedPasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.nested.html.NestedRadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + + +select +org.apache.struts.taglib.nested.html.NestedSelectTag +JSP + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.nested.html.NestedSubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.nested.html.NestedTextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.nested.html.NestedTextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +cols +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +empty +org.apache.struts.taglib.nested.logic.NestedEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.nested.logic.NestedEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterEqual +org.apache.struts.taglib.nested.logic.NestedGreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.nested.logic.NestedGreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.nested.logic.NestedIterateTag +org.apache.struts.taglib.nested.logic.NestedIterateTei +JSP + +collection +false +true + + +id +false +true + + +indexId +false +true + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.nested.logic.NestedLessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.nested.logic.NestedLessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.nested.logic.NestedMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.nested.logic.NestedMessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.nested.logic.NestedMessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.nested.logic.NestedNotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.nested.logic.NestedNotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.nested.logic.NestedNotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.nested.logic.NestedNotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.nested.logic.NestedPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + + + + diff --git a/hrmsWeb/WEB-INF/struts-template.tld b/hrmsWeb/WEB-INF/struts-template.tld new file mode 100644 index 0000000..f8fbe99 --- /dev/null +++ b/hrmsWeb/WEB-INF/struts-template.tld @@ -0,0 +1,73 @@ + + + + + + + + + + +1.0 +1.1 +template +http://jakarta.apache.org/struts/tags-template + +insert +org.apache.struts.taglib.template.InsertTag +JSP + +template +true +true + + + +put +org.apache.struts.taglib.template.PutTag +JSP + +name +true +true + + +role +false +true + + +content +false +true + + +direct +false +true + + + +get +org.apache.struts.taglib.template.GetTag +empty + +flush +false +true + + +name +true +true + + +role +false +true + + + + + + diff --git a/hrmsWeb/WEB-INF/struts-tiles.tld b/hrmsWeb/WEB-INF/struts-tiles.tld new file mode 100644 index 0000000..e02243d --- /dev/null +++ b/hrmsWeb/WEB-INF/struts-tiles.tld @@ -0,0 +1,344 @@ + + + + + + + + + + +1.0 +1.1 +Tiles Tag Library +http://jakarta.apache.org/struts/tags-tiles-1.1 + +insert +org.apache.struts.taglib.tiles.InsertTag +JSP + +template +false +true + + +component +false +true + + +page +false +true + + +definition +false +true + + +attribute +false +false + + +name +false +true + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +flush +false +false + + +ignore +false +true + + +role +false +true + + +controllerUrl +false +false + + +controllerClass +false +false + + + +definition +org.apache.struts.taglib.tiles.DefinitionTag +JSP + +id +true +false + + +scope +false +false + + +template +false +true + + +page +false +true + + +role +false +true + + +extends +false +true + + + +put +org.apache.struts.taglib.tiles.PutTag +JSP + +name +false +false + + +value +false +true + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +putList +org.apache.struts.taglib.tiles.PutListTag +JSP + +name +true +false + + + +add +org.apache.struts.taglib.tiles.AddTag +JSP + +value +false +false + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +get +org.apache.struts.taglib.tiles.GetTag +empty + +name +true +true + + +ignore +false +true + + +flush +false +false + + +role +false +true + + + +getAsString +org.apache.struts.taglib.tiles.GetAttributeTag +empty + +name +true +true + + +ignore +false +true + + +role +false +true + + + +useAttribute +org.apache.struts.taglib.tiles.UseAttributeTag +org.apache.struts.taglib.tiles.UseAttributeTei +empty + +id +false +false + + +classname +false +false + + +scope +false +false + + +name +true +true + + +ignore +false +true + + + +importAttribute +org.apache.struts.taglib.tiles.ImportAttributeTag +empty + +name +false +true + + +scope +false +false + + +ignore +false +true + + + +initComponentDefinitions +org.apache.struts.taglib.tiles.InitDefinitionsTag +empty + +file +true +false + + +classname +false +false + + + + + + diff --git a/hrmsWeb/WEB-INF/web.xml b/hrmsWeb/WEB-INF/web.xml new file mode 100644 index 0000000..c4c3162 --- /dev/null +++ b/hrmsWeb/WEB-INF/web.xml @@ -0,0 +1,73 @@ + + + + Empty web.xml file for Web Application + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts-config.xml + + + debug + 2 + + + detail + 2 + + + validate + true + + 1 + + + + + HelpServlet + wenrgise.help.webtier.servlet.HelperServlet + + + + + action + *.do + + + + + HelpServlet + /helpServlet + + + + + 3000 + + + html + text/html + + + txt + text/plain + + + index.jsp + index.html + + + /WEB-INF/struts-bean.tld + /WEB-INF/struts-bean.tld + + + /WEB-INF/struts-html.tld + /WEB-INF/struts-html.tld + + + /WEB-INF/struts-logic.tld + /WEB-INF/struts-logic.tld + + \ No newline at end of file diff --git a/hrmsWeb/desktop.ini b/hrmsWeb/desktop.ini new file mode 100644 index 0000000..098ba6f --- /dev/null +++ b/hrmsWeb/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +ConfirmFileOp=0 +[{5984FFE0-28D4-11CF-AE66-08002B2E1262}] +PersistMoniker=file://Temp.Htt +[ExtShellFolderViews] +{5984FFE0-28D4-11CF-AE66-08002B2E1262}={5984FFE0-28D4-11CF-AE66-08002B2E1262} diff --git a/hrmsWeb/hrms/helpfile/HRMHrmATDTransAppl.html b/hrmsWeb/hrms/helpfile/HRMHrmATDTransAppl.html new file mode 100644 index 0000000..f21f6a1 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmATDTransAppl.html @@ -0,0 +1,5 @@ + +

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℞+liU&`%I8cLu0I^{@2O_rNKZJ z=p@)XLSLThq#o~erR&p&ml8E^ar2k8=lawUR^>OJs-PWaXpkHY_0>p8CJ(yW5G%XA z)~w4jQgwC<`-651fPOOe;}%Zc{mhb$(eknFy*X)JqoghQ3%dwS{{-R!m$r=G;xYz; z$v?0re! zol4V`YH~$;$*%Ktlw+e=_heubeG5%2;mhHlox@X+;2T-%OtOcQQMj>Dy26ZjE4&K5 zzFPN9scNe-%P1TaTiH9v9@p$3ZoN;*d-5e;`TfQ6a$t*Re#DSvv<5(lc3MX9KC=aa zyM8CJwaY?_i*vt@94Z94)yNH`vU}a!ecxkH?{s*}8{#ukz5l?7V`G2w4(`=|;+pkF zo!iKP*~9K^oY#b1{nqR1*x)YjSF77ndwcwcKBw=!3l;C*>|6g^r2m7l^?%JiSwk0N zi~p8+{zO#&x>5cakJY5@HyL1h(a(PEIZ351ow?~O0O~5j@Y;Z;-l#m~uSH+aB*03_ zHPw9I7Lo9qtV@R3r5OqUX_JZieZ9p)q4^mz3eg?-qteJQtQ9~gf}NL+1?u*zAVEYs zvh(wC@fF5(C^*cv(kQem_lpjIK%+)de=w&&7pWyz(ZCW;r6=D-R4@SA!m*E~1V_=F zj;Ub|%pMZ^Cs%E9YZzuf5T!YQbx$>Rq&6!Z&DXq& ztTL!cQU$T)zdCGOfo`BnsN_vfLk&NF6e-@jEw$oU%dXYYTuIg_VmBYuKA6Dq3eyVq z8CT4^$<$Cn8|O4G6-VMhpBo%}RExw-fN~-Op=j z0<7NR=nZOXo!P^Yj-+o=t4MT;zHN6GEwDw`DS-1Q!`+zYAKtL_5HBaO3+M7=xH|dI zS89ZQG&}Cn?lB{EM8moLd=Y=i81@#d4sMEoC{a{mMClKog9}?h>Tscc*!!4o? z5N}P(6xet9Z!FAFb%M0cX0XY6&ROUxe#&eFRI!irtk`rl^2@ts$!=_*z6YJhR?!Tm zn@SI(=-mj>sAN9gpJk5((J%v1oyRL;c`;axXtHvFVfn$&0E&HTY>vE`UEvol!$nJ9 zI5Jy)OlgRCf9FKCFO{_&K9C7gl>4$v^gw4RQE?3s3UfWE4sb*pTzqB>oaMaR^}r^a zt1b~rai=ViH{k{R(5B?@VUaXux(^+LQdf!AJ|^vIc*U2%xR2I` z@(CFuG%3dW=8m>*gn@j1zg4}H(bu!q-@KkxUxAY0U_+W01>i!e)*Lv-9hXtIa&Lu5+CApIKfAS;f(y6X0lwk~~eE zzf(phN9FwX`-d^wl>yP`=U>E>hWZ~x?f+}8$~*kGME%|S??nA)Y*E*?-;hA@i%b4t zxJW80p=f^y(6(S}S?Z^9d%8j0vwMgIt zk%}>Ivkt#NptJu6&YW=O^PWrgql?9$$}cp{!`;!#$qOiq#rSO30Q-rZM((4}Va$Ro zH$*c2)FQL+M@}ALLi6_l0<94e2?ZHUOquf&Xpa6}Sd9PtvjbSTAh!|QQyq_gw`JHH z)?+I!^ON|ha_xmK_lX-{)|`q4e88Wz*gu}9+cV_K z_zHP&d(C@6v12>$P>YD0^LL{-y#SqIi0DALKNVcJaFw8g%Jf%~dNv07B zq3dMC;d|l$9H-_&7ac@gTA&$-r|fX*NT4(p2MHGDb4lUf(ZWczXM)+ca3?sRln};( zQf!yr+0Pyz5Ic;6bs!c{jLop%v`Qiug8paDf`FTU1&m!;Y*|iXhmtX@hjQvk<9;2I zfurtV3ao*Y4i9rgK;a{2TH_y+*zr;a6#-1lA^fAdmD(T)wRtK4phQltb__! zKGoiuVokFH;q-NL`XQ#~th&-Uu%q+8aRE?`F%QuhXz>?twM_4GNQtorgz>ag>0VlmW9m10L8;g%Sy;T~DuCvr6-X2Xzib}a z$zm$fkfLaJu5$JAF8++m%PdNzRWE1Kd%x?Wh$}KR*X@mHbnMmV~KaGdNx=mkRsvcwWwv)BL?uH9h{k7RI`aEs7y^z3qKRMosTdw~a zpS%tC+qOs+zw>L(*DwaFl})fsbzvKyzo&ead9?bngyWpI2SUlW<~AJu_nQWL@ht02 zE1;o{Gt^qf$<}Szdd6jJrDZ}?USgA(AzioadLy?^YWH4CqUA%kuR+SL#rR0Ap8>7! zG%_R`pT3V$8cu84x-}fsJAJP6>B&2I@M%7 zIipT8=&^Y4LxXS)IM>eI>%VkO{}&+1$J4DX`8$TA{yU)h4|9wEdd(^rIywIb`{;jO zwg2CD-I)IWX{9Z48}ermPdolg;Qnkn=nQ?Ry||wRwhJ2~{KrmMn{i;q)a*re>7;^o zKt}Dnd^((p7}Mmq^h`BYOH9;)5#Dx@jd8n&*`V7jG>U9QnGIuj8jt}x6nu~s)NxV% z&I%g<9puZ##WB>P{JMneUYV1tonw4Wk__nVlu$kht zX3@7HIFVwhKBs=`A4+P^Vgu;#Z~y?FA^-qf|8J1+Uw@9%UtPh!(rW)+4*PF4N#K?G zU(Mq`Stc<)linyXg7oKv2MhA z-z>w~rV#Sy6Ntw!IjF5FuR)rtb#_HZ7t9zNMgTWQ!~Xiiifd2b4X82m^en^t zb-NEO4b5*|$MJ3pHfE1QP_WsjHTR>;&ZKDtjGf<0xwzx8!>YH%laE>#cuY67mess~ zeCz@o34QO$6c{eCh~=U<{Nv56*T@3(Y;9R|?|^U3q!wLdktTP0(e{vMp@m{qwC^M; zr%gi^%BD;qfIX9pYB;@`o_b3gz)HsYX5k-xdN1_>CT9UGm zLe{{W9Ewc5ITNHJ9<^3^FvZ&((B>eeU%FHJLM%4cD7>VG9CrAT}5|X_z zOekGx46B}T^sjPjfa=izdWe9Uz}3umAbS^f9qk@ER%9}(GNrDg~2syA(S8d9|<+JzP z&qVlz0JZ+1bEKe@8i_TJo?SIwYSVo=P18h5|INTJBie5-I8thulKDL{7KLWih-0q^ z)q2cfMAn#gZ1!6k<`fyUvaF~ZLQ6WWaW;p{Q9jit4M`zVRUG&fmb7NlDuRmH83e}~ zsf0=n;m1@zTW%<(LK<4B@8qmF^&e1fTNAG{K;*i=s$L@oj7++0z_zB*SftR$QYpsT zAbjVTHk*&T!sz4cWHMtX6~RJ*1Pd(<1*luYpv6H)&q=W#SInTTH$!Vwo6nWF>==Lh z9Hcw4Jw?Q&dJ^vW5%u*}m@lZu$S`Q*KE3@EE2JCM$rg&|XE*i+J@KIDV(qo)gx6;3 zrNK>gxIHk?c8Z{;NM7malmgVSWU?pgs-~i8P?HcoSe8nx`m!EWY*99mXNz7wzDQTc zGg9($2>D7w-C;geAT-{>?&L`5)s0ju_7!!)>WK%bxY`z<7Ik&{A5K+mbzj%wBn_E} zvB(e=oOUl}=}Ag<8QgJce#s<7%Su%&!r8^=mb!$CY?#0{3U5jyTS${WV=6OdDo*ruE&VQ{1}fu{)--qE(B>-U^wQy%vudY1J05=Q4;ZCjpWD;& z>W91Q!4IQneu;)l^}mq8;;ZwmKy;DCIE>6ZQ`wf$ON$_#Rp?2QDuRIz5*V0I%aMW2 zaH?&&r+5Hbh(OEw|Pc0y%SE0CcNt& zA^`cwplGUpDIG%wgP2ssGK|D^rfoe(Dzz9joYgNJMwVT=B7LQpdkkZGCo{XTXEvxa z7B%&Q8s2jv_-0@5`JFka|2^Om<=2EyB=@l5 zQf;Xj9`}>r>i#Qy4nflH%Eb%*$Jt@rIkf)n=f{rk=lA8S{Z^m%ulKAq_Hp|Mcrbhz zehkm}pQi7E$Njg#v%#amrNJqEvY(6Zm7nVg_n=+RzOE$Ahqb{1Lx&52yR_5_0xD8Gc-!3!e+m3ti_L z*c#ZnnA(^c&(+kG0qcsEVu2AIq1rDd*3}$yxJUdcL?nKDVb+v+uBo3#LbA?5`#H{ z?T5kKcI`oaGXq~7Q~H7LRSds?PfiVXz#kFsU;}3%`Pkn^e!C<3=-uf8=HdGQ-ih|3 zle?h%Sl*dJ9vk+9LJQY3z(5z(Gr&P71=|e_&}y{9LOa**1%+U|;RbK*;RF7N-g)=` z0{!y41OJT=`U~d^@~-UnFZ8d;J^3JhX$tr#I1QY@VM7g^kYPuS?7-oydJfq!@F+2oM4UPyrkuNC*;w1h4@#G#!SP5UIWXC5jqYVI`PC zd>WAg4hVsA5S@e^VEs`DPeON4Am0cu0t`_793aRD-O&9kAWaBPLKYB0g9un5a~#37 z!WKwE?1V1RLT!XB(1iHGLJR&#<_W~vuM8pV~VPhl(py46}To8)nBHIYKL1!Q$JqSH8 ziu@wL2(kh!pz|yuj|k3!Q@{;|;V}X>I7X`kZn#Fw2w5TN@J5K?+ypnl?brv#2zmbP z=m%+pH(?$C2aw@q1i7Iect~^-9t4aq5r`7e!UtF+wZcZ3b1)=kg!@4vAc=4iT!iPL zM;IjJ1m__~rV<~7nEobMiJlUigvS9(48>vutZ)^QLd@}*A<6Jch#Gjo#|$*$hMd5b z+{NSs*C9_RCSZhz{?So$2qvL~%t98~bE;!9LSV36uo;?TQ-Wr>b3g?ECaDC-fif6O zietruO+Xnq)oX^spwxImgY`^s)Os2jfmg6&g>}sFy1_P)bG$;9LY`x=f;Z4(v_f=X zp6Exs@%SO#=nty|{E`+>4}@byJKpi~#7H>Ifs3>pJ%Nw4dyU9W5OigGPSCZ4{m-BU ziv6r)?PMUUru`|T$)iWD$XLWIf@9KWm3zHp?PU<#Xj@Hz-m!B$1)xGve=7zzP5WUW zH(|SSI?rP8SMXnfN>F)`yDem%$v|>p3Thb6-~v)1MIlR>NjJjBl=uupwFRLSI+Hrc zb!?%R)c71kCp$uRnxm1BZ1pi&s18aYeZ)@Dv)1@YNYAc#d8qd;AwKG($83QeN$j)D6(Af!8#0uObD{Ze8xAQBhP9o z1D(zE-Mf?l5jbQxgeFf~rutEda_OBTytnk%LZw07c%)gouhbOpwu$rUp~%lLBq9`dMK5tb|oCYEh)= zL~~D(`A<6uyEvSZ43eu6iz10|k&yUuGejf_ktoOnjHZal(2TSQgB=)&!vH!kF&q?9 zq!io8sHXM4Mr`>DgHw9(ySOP;$AundDr9Y`c?w#zY-oMPn?%&&QLdu*4GJX&)hIaS zk#y*2iQc@D5sJnl?~-I6T0e~Jl?hNK3wkC>j(tXQA zPt0cH$hgh^R~;W!;on$a`MDp*T`i#(X<~L&KUmAVGcv8rN!L>*+{~Ue84*AwCiaHm zw^3~<2}sAlPG8m);H4#}B(M$59Cyz`=P$em|Mm0Z(!M$2J>=Cd`*GG`=${0$Q;Xhu z8FKAq*roTzUx_|Zx9{58rj&Ed+O_%GqICUv5l}f{%?sPm;w7hypzUQV^oJbj4fo=p zhU}SI>VaK$0SaO_uvOtxwR4l|8&+?bTCY2|rCy9OR(j{uj&>Vzvwgyw{f!nE84{*k zHOlYe_;UiWV01w7NR=Dy`4TSQ{&uhbEvyYr$(ELhSgjSbE?EDKbI5uvRZZ%H`Wdan zp0bxHSVa8kU;d&03#UuWBRmQG_4f=V005x-e}ke*qN*;IHvbKN)X~kNH>z_|p{6vX_ z#N|O$TiS%jlWvZQ!87mnAqwJ2$MmpysJOOtk@VO@*WBnf&oMRQz%&nT?>|@X%o+yD5QiXXN$+^Xyj*gr?Uu!G$zY# z*-S3?m&09?m#;s)BBvDTQykIAbQAvk!|Ej3`sl$XlktWZ_c^NFIJEs1jmVugd zeWQ*?4V*yjjKECaUGx`tjW^zl=*C_|gLOG4KAX@->lti-&%6hhb3$Q|`a~wzUSUo{iK~jv+_pabOU2xs`QTwZOLvGFO z(lc(&uHYM!ZY&!Wy4-s6!?nQnivjG{zc<|;E(LJ#SgO!$8f7~2`N7DCNS?QbtE$)T zlJxB`5r*8+*S%tt)lLxS{jgMF2C%o(s#gnc?ru8196dM;RQYC%O&apWOt-2JK!oiQ zFYP%-#jpZ8H6!zx!azcOjE~^q++*eD?ZS=@T?%=@Hy#zgeNZeQ$tRT1%0O$A#AIL3 zG?1ta&fS-!On)Em#7%oU7^@vWjXe9e5Pw6 zZlwnuDoB%=e!UaH=X*g%w-JBC#`ZVox|Afv7*r$r?)au;&1KXow0o0 zxjI~P0HBLn0B@5@0Io9HhBkKIRD}DD9dI|p9jXk|Kg| zCZpppNqtGN6SLBVxE&L@ZPA47dn~6;LfEl&0-`*ziAgylzz;VJY;Sxb>oW@3o{27d zVRorh1)3I4bqTrMKADP5g<{glhk?t2lfGC^Q|Cp83}i`O6prQh73=`?O+v1s)fXb? z%7JTwMNu*jQ2~DGu@b`^5HrX8W=5xe>Rc4$ccadCl2~KillLwa?RXxg?)g zjqukCG$y!3U2LiTqUDn3c#H+DHyH+F$pc@=k5NDBhg7}cU>N~`5A8F(QUFKl4Xb#9 z;gxA{OE?sfz}Wwfctfu7gX6t>A}Z&xdWpAqZ%12FSxquK!oWVa$bd@(sDA6fT#U(F z48@^;qF*2L(%Fu~;FdG^o7sL=pqkhB$S4J6ozg4cS(m(R_yVcDcD*@}SsZ zyE(}5#FLpYr5wE~FtJ`*w4plj@!}{8(BG9ie2Fl<8kfTt4E98qYn=X}n=hP;FrwXD zYcp1E8pnPmftf$iO*pc!_DrLpZm}s(6C1i2U9GZB$P8rhDC?T9I2GzmCmr@UXnwrUd0J{T;iO*e3|hxii`Uf7b6oH|7{0vQ zD~~w@jDCi@Lxl&w!Jha+9m`&hy{%*~UZo9+^7Z{M8u9 zzE@B(v@9!2|3|#W{Z8{iVSX0yW>U#T`Gh@lo2aBFfx^9F} zy8jglf8)t^`cBX(tseBrLSqMpseku*pLCn+^B3=`)tkOC;)smz1)3|iNBTjVQ`5cF z6>;b^yi-j%zwkw)f7OlC#$oo+d-$X8prE5GqY>WniH3gL zrIA$QiPnUhdQWNNk-rgeaUR{nogU2Y8%b(_j9RTq0ZXjD8Ax6;a75~ZU3`3#%GRkZ z(|ls2;h2o74?mH?LkrmL{g@nn-`xesnICr+3a0}?%~RS*3NxY6FXOq4ENRf%9}eNr zd*#wOwt6ox%0a=28{;FJM}@Ad1#uO`7#fcRCWNriZ2CQ`>F~QT;Xq+a#6V367r=MA zGZ2A0N5cdI0Z^fVeMOp>EPrVL_>iD6NYR$sBWVb@Dp)27$1NvNzXKpNZWd_JuK+}%LR-Yk3JGxc7(H^ln95(V8t8| zj~qIBa1F^)L7Hw3pMFKN8eQr-g-_?MYe@lA>6}@Z5IxTc05ez<%`cPuoLspZn2iSk zWQg8>qsS$M94!6XoCo=|isW@GQ!y3b$*-?pss8p11k{5{z(k2bb09E0w!3OwG6r*> zgjh4wAw#@SC!+G2_<06~&rT!LMZ`i4oUJLf)FOT$UcyBr92inT8j!0Euz7B;eOpp5 z&Ev`ND!JpB2ZUChEjoQ9*;GrkjDo|t#KqU)__`XX5D5s@H^)TAWH=l~$zkD;@hZn~ zARsR+zA?sPX-zsIVGrD75aQR1tpGnz>fUGSES)G!<7^&p`*<*r&&!lHEJddHVlHX8 zOkv0v0N;88q=bX31J)jBbpj9w!1!}{#%02&DozU``CW&)RG&n<-oq&yyFG$X5^ETG~*2ly|km1-osk{a72Xt8LNkv1eHOOG?fzHCP zl&=^h-?Ni{1k-vfQ9`ix^OUM?v1ckQ0qp27)s36T>l^o|xIWV{lOj@|NgA%fwRY7k z7kKnWqFBK7c|cqhNoj+0Q}Wx@oelX7o!_Vhn42>`zkai8IM?gIuMS5})8E-;7QtHFIisMnM!iP%jWpv} zw#zn^X3{MR&H61QK~muGV(|Hs4#qvH=)^qwbx_7D$l_M~XOcem)J7}QUPx1j%ef#} zU6tH$REnVqs|=uj^zldA^8#QE)@szefSS8e8O=Fay-3=CjWk_M>zA#hEV`iz>HuGQ z(#lPg*lZh9LsOJHxJ$Zw|Dmn#;h|xu2h?arv62^I^ zmMDD_GXKKwGUS*e4@>_smt%#*=f}R1uha=E&=&(Ru9Ow4I?9zMqN+-$l3w%4S(j40MYS`Xrc!cpJq`z{l%4-;KHN z!VEVn)863%B;=dn62C^!6|XojY1Dhm_rBC1*0pou{dHzphN%P$mVuQ)XbHl0S~!ZX zf~5ykj_j296#x>Vchu^&l~RzPoXYv=D!Wxq&P8%&v5Q$b0+aWURI?LBOa@?IGKeYM z;4D|Ks!;%C4eyap*2Tk5nmElUhjG~ZlSjE+M7MGX4&Ju{L@i~VaD=G@65Ug62)7`Yn5x!*%;;@b>TTS>MwR=_wchM4SJ4_3Ai%GLr zU$BHDHXrO3P6P*QTH~A2L5Hz1hD+Be=P=YX}ECyYRiXypQ zMz|lfvd$**=1bk?D#hwh^0rm(eG$>g^zBBtEx(^#o_B*j)rmi2Un@D8^zF!RT)Qdw-0Y~(XT}}z1Hn~f1QvjzbHpPZF^pt z8Ra3({9cQ0_Zg_W7{?Rku@Bs+R`mzDlMQ-bzNeak?izcCfvbuP!})6$2`cCS^Rt}D z-kcCoS2%ndl3WS*BG|92?U;s@)nxL*fHiQhii?YfA2UP-jA(wr=O9w06Sot^`cV1?X?)(rSI8 zX-}29=VrvX;$nxW{Ac-tj+QdD(y6cS)@@>-=Nh|933v$_;N@nJzE5R0`8FNwg2J6! zFAj4a*385uEd?XF7`Lp8O22wLWcW+Wv+XszMrJ$IY3S2koSA8FC)D!UUu_UuQ5*J= z2~6((z3YBTD5IqcQx|CNb{&z=&1CL07pmIa#smLr>C*57AIl!aMA(q8yGYMH^Y&@e z-16t0Yz^4RkFJ*fqOtiou((?K?Is0+io3EeI*=?m@M&=KNA?@TKDDA+c~vPHKH(U9 zdIEQv-wwjrf@3fH7fVv~hcn!=K2&@~hy7X6Icncu!#vAM5Q1>6T@&j^Q8#p~=TDQQ z4r6&jx~ea`fvuApHpj4%t=Z;ART1asos6QGG$gFl{GAN9WpiCB`J6ZDyp%^e>0MUb z-`>~fS)@!i;gGkE7_sD=Ey%0Q67k@JSBj(E|A_JPgZ0xpL%7l8Em&FOLn4X%{W*Ah z$*w)81}}?~P{FpWbhE_N=t8-+a(~X>y?IdXsMMZNg!??Ypr}2UPb7}~u?ZL4JvOgG zheL&BRF=+2e1ad!hL6b56)Nppe}zdEcV|TeIp-^a;Y8l0x=}BMbKB!5Y3iB{8zq$Cvl}GG$mOEF*7v9VHxI2K@MRhUZ1IE zxOWu)qxW&>BlfCfz%8#3@Ckwb>|Ym*Jd=@t*q`_qxb%*LFGD*|KxRaChS|P&75p}- z=WazR_5kD^4gBc4+rEF0HzAW+7JmMM0ePSQXvX=!b^rf!qvGG}ng2GjWN2jgSNs3Z zc#UiAyvg?9ZT^9u?o(bdG9SJ)sD{ISNFjAtq2H3NSK6Z&T51pxBXS`z;kI$ohmQvm zF$z>{!=BV-T`G%%)U}3=))htC2sHrT55pVDy-knp3 z*}47sQB~JB0H4I-?gw2P^uiT~c3ngQgJuEm;f!Odi84E*m|D#^aBmx~=9xS+r@?o2 z%#}N^<|kyBTbvx~fM}B8EN8(5y#P}(gRlSVm_rlqNbyWZ)Un>7ki(sBCvFEPoBLDF zJg%EP8Z)nVM3`qYUO8~6Ehb%O?ysyJqq(>}xrfXw+sSC#;rQ_WIV9d{TMRcBHwS)_ zBJgIpGoRHc+r{!ZC|;v=&du?A|5+F#CVO*?cZ9gCTpXOfq8xA4mUuc_;9OJWpXKv; zMARDd6#k?z`4LT52N$o8!TzlKerl$L%7~=nj(hx7ga0`T2emp_mMrgUx4mFQ2LK z`x-1BK3~_j4+kH)v%4B8oSfWlE}H7yw#xhM`+1WmGasKjKNc^3&(8;-EOPMbW~mV} zb#=^%N%16}VY>1CKh;>`c{B<%z{ZzzpA*=AlgkS&K5|MmXSkA3E2nM?;lRM~|-IHE?p2 z>SHKu(p56~$6{9D50ozGrRYtomN(Kn03O&8%^5zx!U1UbDOW`4#urs3&v$u6e!as~ zsm)ig+e^}CJKx_uCdJf!io^R>Vx@?4mjMF!(^zXLv~1Hzl0k_i?Cwmv>_^vZ@ky)v z&o_pV(k=}Ulq(upI&_QogJI}VOw!9?mYs?Ft^OrSiSb;{xEyj2Uc=*b-Xkl5U`Znr z=rF26BG~QD5dL?6J|^aot(2uw3jH!hQZ+Ca)Ahu6Og!{MOGU&AEt#TA0&!5xEtw*l zK&Q^|TC{$doK@3B6uznVQjF%lS-*JlF}@K(G+UhS*qmWdM-`Ilh!j7Z5i|o zDik~EgRRd*@?-i6bGlWsmLo*%db={x*x*#_dnxS-kKd~GWAPl}NOAfqdiY%d)T5>k zk6<;aMo%_x?{Bn_Jj^r!%WrJr_b9UB<4zF=TQy*bGj^ z>x#h86nXdgbGe~ZxChyS#$5}^}SQV_nwmx#P&qQBzH=|!fFvvO(Bj6}~&rF@HYoGlQoAgIyp2Ci=$$EIt0 zHOT&Ti&4JTHf#u^iVeT+?O#$w=LJm*f(1=R`c0#-GwB>O>|3Ul-6($N0j~VHw3(!r z5)3h!np8O!Co1>QNSF@qlz?GlbTEKc3U^BNUV?DH1vI^sDXrC*6>i7BuhY2AFc#1J zloug}s)`w7mP@7>5d_#o@}T%v^&2Hgd!1y+S{SiGKW$Bp?~1be`D0dvFP-_y+i&vy z1Un-CG}8L8P8Ma3*X%NlRXw~`lgAyesev1 zn=%T8RV~t%YGOyE>D?r!bQ~rOYN_x#+Y+P+;G}eBK#Pi=2vK}oRuoulWx;Izx&r_% ziPUZ4%r%on8U^zt2t=o69ykZGMPT+8(#trjhklMg`FCo0 zouG>~K_`~TEF9w;;Rma;2iA}r?2tgvT8l8uGiN9(LZ=JwEZoBK_`?Ou!n^>OLiK_P zv%wiIz{ZuCgGcMLQ5D{F5_!zHzdK2vnfQiD9$6numJQ*`pW34ZDO;Bm)*5edvq3x< zy}mRC?z4ftZ?iq&!K=a0p-+Z4JK?)npk70Pg)M+iDT%**h{FQ}jvfbIJw3`4{L2zL z*Jq_Nx}$rS*%r6^0IYNcw4@|^eQ#k=mS?j-W99|hNtdK{vgGWd3cLq=ln#CXhe7|7 z74e1>{F4>TchbQol-2jhp?l-H^f-yyW80a=+S!|Pu8=lx=>tJ6hsN150%0q zf|)ctHj2d%W zai1h!qb?^dPYXqFwzvm65aH?;4eS4|eII z87IoDZF&WNbw$GD-LyJL9QCFU@#m(vJzpf2fFJc>lSOaewdnL#+x zdug75**wbi9u_ndapiy%!4q3_ z@)aPhL*<9~cKeAlW#gzpBa3I92#5H7m{O*wdHM=dKprdiPr>icY69yfy+k|P<^xM_ zB>9{W<=cnw!Dh>*iXmL=+g<&UQd!AId=i#`_A4Juor4lSQ(Iftjyk1q&jXJWqv(j2 z+={xO=i}iB4;=lIPUW3ngvDLcayz1!uc20sHGRY$uzb9J&r9d3B{s%`a=EpNoKRLW z`{OM5MXVMGv2(KXIj2yplr0IsUCD(ZgC(*iTGB+MdT6%NCj#6~HXbgE8;NK3CW%z! z6I+$ss27*Isv4#RO+)1#?(;nPfe{X|gW|1^an!}^a&HF>Al?U-@;=uQK1jg1N4HjG zyK`Q<5<>#6S~*x;p6rIVRZvF)K1ClOoEWVF{6tq&k2obIP)B+UY*ccUf(J|^1LX(` z)8(e(rV!R!g()>)shkX2r4sS}exXjS-rgw)Bya@{xUTv?Rlc1_)v~1Y3RoYl0#|Os z^|qJ%a;5XC!3))nA)0riYqAMeudPimjqq3G7lqPsz4L@h&bKpWeYIXp^+s}(E&QNS zthQ7MTRW_b4Y3Bi6A4KBhqJz?8yAA2e=Y0s8P0dy>}c`uDsXKw#dq(*?U3K?hzx_G z1A@4%$P)8qt5sbOU}u7Ei0f$$U3{`=)+KWwU}I}DG{y{Y4{f`F zNAw!Krod_P(+6Gru{WxOwwJ=j1;QCoZYJWLyEh|+@lI%XEkVZ|G$YsS6==6roFDwl z0q_f2oKJm>S?uur_Sz~?!g!i8f_O0T?5lxC78v)EInz&gq)kJ#KUYwqh_rzt-Ez(kayNaWourN|}t zqnD&pmFmx=Z{7GJQQoTeaIC_H50OzePEpLWWa?4;@{p<1B3ZgYBj2N(+NpPeOX%KU z&$!$*S}r6>ym}r;N{wZ)s)8*tEga~Z8j%ktU95%}qx`h}v3%~E3W&Ju zA?=)}r34WpQ%jTb+1OPA63zRhbN4o?uhMRUmCd&g5n9cDGGhgr!+ISNCmT*myBeRC z2t&G3y93RvoZk;x7u{(@0D^c$#GQU9+{&pGl5Knx%ye?JWB^M&{KSk25Y1CvQe34( z!Ti*1l@)9Ao!Sv1hCpxp@x^*E&sK3z-wuux?cT06%zz0}r=rGmp`!H@`JfXKlYRTg z5V53FVfiniQqY<`MsH3X2=Lbmdhdg=LVs5n5*cinM)OoCF#AKtQN^nRRubcb+dyq} zYc;IsPJBp!ycDQZ_7t*ExFwdc>1x^{&z>vu|#xRtRSR zL_dg08RHj(%s$t&^B9CsJ+M!%xj%m}q(!U&7~z_2u5fSAp11He&*yKZGvKIl`04__ zJ+6=6P#3^*h43_$em$WfPB;Yk4w6-#)SGg&8LIETk#sA|8QX^QSFr%rvP7Up^%`uLtRsJ;gWQL=x2=U%VmaeSkZ;y2*qBfKeXF!71QvQ6XiQ86@OrQ4 z$vDSq)d=A3W~GQ{AL-PFc03+R5k|(ZSn%a3oE+peB92|SRa5q0qny00m7D~t=%wVR zN(X-!t5%KG@q)O&b@uW!vHj89qPwrqLkq47jePeo7yAPGDy&{1Bh=bE1vOhr>qtqS zl;|Uus3QwNDt%gQ(siwZeywqA^BSFx9M401okjPsJxHPEB(Of;;Cl*a&# z^8=_YsW@PiO4KS=DOwR|gD3@R6f~wt>Ako*M?&5&D3uY6uo5pd+7gRHKY zc^pNeNf|b@wje=ocCY@&meG0^rH}5#qN6!Gr<=TsxB_(YqhCHu_n|#oF}hTQNhFKH zN_%83uBkse6-biksxWUU>6SfzGPV;@@T^fXs*NJ~xq-g=e=zor!My}s+i#p5+vbjK z+jjDg%^lmeZQHhO@7UO}&6DRor|MMQ@B87I552m3`a@SuRnN?-YyB>z1>FLt5!9@9 z{b|xArK^GN$jAc3;=KlRzY9FSZlXBGGj}HqGHJiwLOD7x7+n2+z-}=cmd8!gEc>xH zAtda6egd!RE7&_P3!GVmfz9Q376!CVh>3h_55(o|NF%MV@>>X!IHne#0uVE>s5u;8 zG9iKLr*yXr!k-e--k^5lQZh3`(QQMRuprL9IEfoeFL4#aT+@7nEk7)fzA&Qn4MUz~ zpEU>?8A$BfGUt=~LWh<32U3ALc`ctUOJn+ChUH2_KcL2STB=9j`Vo=<`FM+DrGQLR zd0y!0wdCJ2uKD})`GHJ%EOO*(?2e}e$c@Hck!nZ0D~Ls>E83cz3lI-)8zK}7h%a7o zPish+{lk9AXtZhypN)Q^&S4Qo5VJ%o5S(1eP>QiigP!(Bj-%It$<(qV-8p@Nf=F{a zy7{+L%dn9X<)W#3%=x5hpcdE{hGxl$Ha+W=OKJ{GGSg*aoYe3}(0L7mNc`lbFlZeO zE0ArWor=QwoZ?C|%WUIeZh;BNdkSWHYDpOoYlfcwA6tc{GXoQJRl*%!Rc)4kT1BsM z4h|0gAl9X6wU_5_xsy|0KK;1_uqvwfph((N=?D1RNkD~+6;CL3vDq|+)LKh1t6V(S zjCFPbIaJ99wf9oHZ1mFDF{DS$(&L{?77E&oI0WzA^Lsvnq{T9v(+=mMAx_D*<8|+j zbQ!MLa?(Fk9Q=G=&dg<-Ef9JCmLCGpMUx44*J*O&F>9LeIgE-AavtH<`Ya4y5J+0? zCu+9|b_xI0-`DBpTQ}Dw8O)TSEA5mu&DFn-g|#+2)FH`vw6to}jFwrEr&WiM{l@+E zx=y6Qalj(GU?w-RBKI`)`j3C*kl>q8*wk(MSkit(m@bq28$U=Fpi+?h##Zp7DAc^a zzBL}b)|}z7yw+?=w$HnRo+}jW`^>P)Jc57+QFP^P*xV8%l38I5s3t%yIF7Jtrw{-D+LS6 zQtoS!^~GMXXUoLjs|d(+`)=9$Ry}yhocb1KI(7eQCNgH6S|v2J*f$TFm0M;b-)&SN zdG?M*)vNADwJ<4DV_fTPF8fR@*CvuWE&hlpYpv9k|5{S6$$gDERBbL?4ON(+_!>`S zLXE71>dA%=vz_}L%83Ves*u?uL^Ximis?lp@Ui3jA3VE>Slby6gAp`nUCDQZ>^of$96veI}!Nx z<(o1h=;qIH`(T1tLXlC_mMh|pAyycU@t*JIj_-XZoHXFOxH_wqJ=AYT|EPG!iu+@Z zi}`VhF#nGNvp~>^7iz>ucBx7^!5)%CMVdaa2uoG~c8+s>Rd~;dr)ClPS7N%{LEVqJ zJ0+f6E&to?_=!F)nKBLDltCr6cdFI~O80?JtHdNg1=m^WAXDyZe5lA3W;;Z~79iA6 z|GgG#Pm+bA4TQ3OgfQJobcNrW6$0!DHE`Iwm;#yF??&O>4KMUM-We~=j!h^I{)C(HcFHNGlnzDveu*_wN2R`82PZfb+@ zslG^8#G-mzm5*IetPS>~(5D|e>2OfXwjC$*RP{6uc<&`Ap#yKKc#aV(l7v%qz0jvjdWjtzDFaJT=#WTYOHHb(D z!q}z(MIB<&Vl;YDuf}oPSS=L6OxA>J*8J@V|5Vrc`{J}Z?lj08((|gGWJlF3h z|M(3j?Ywe!o>V;i zrBFI_eyCcgLO>RDM+UUCuu!)z;xe#lm4WuO+Bci^oU?Q?t1ob5WRsw=6#T&7Wpr!D zv1^LsQJgQP4$=@Ckv=9onRflVW{H}3rp;4YV0Kj@6 z7aV4APN;B!ihi<9Dz$(zv6X+ay16{d2DIRha^_TpYE8TGsa{MURoNJ8*#lI#%*u_l z^XF^O*)8k=itt{0dZ%?se37i&EaFm2jVH8887wP>& zbOCc(JIxqQQ-6sk7|#{2^ZL~yVfnis;X<8<&uqR=>L4NVS*~I+_DHjIIc2aZ8#RM$ z&~_$|LEd8gR2;cdx<8b5r>*n|hY0ONc%qTK8dp@*x{NZtHd^b<%rFV^fzm2$gZ3TB zG}c^L?#w;W!7^qkfuAkVE<$JV+OpOyX(G5o$@?PU#-rbo3S5; z9exVQXjQzrJxlhFDfiIA_}UHn@N9tvEF%M+Wq~k~bi!MzZb8sg_%~9RSDJ%UxB1=4!P58Lf79fRVvGqgtiR$UA-!1|_%BUkKMgmD8@ynTv9 zVj+b9mS%<#)5@?{#Hi!xKf(<1&mvccU*tppl1U;?i4;xu7V&1XUKWSqJo5d@a+B`K zh#qw@f@IQ?Q0u2%zX6HQ>Adyi&A^c53XOS7q#&(6nd&NZCS4iUrD*F7aa;@EvjVS@ z2m3;gl#6HUlQQL7iZGN0J=0qtW24AFDkC>m$FLgNS2T@RWm@&EKb2p)Nsog=2q;~C zFEZS!$bGJ+My1`Y77TwN#?N>6@2s&$=fQQq{rcyLE3NY&Kn#`(Bs~?VtN_`3e6mj9dBy<3bcbNh-L)g9V_j=E!{Gc zY$_$1#TIO?dCH|EXbtq0BFWY0Z#Lt&7GnEaZ-TD9>5Ni7aToCMjeI7l`jJWQ*A5?w z9979B4({n@l}2C*BL+lBn5K6rDNl#1h}OOFZf-16ZVpCnjl;75lXG=4r~zxB?d(L1 zs3Lj}p@-WK7_1$cDxTGjum%e>_UmXR%3%qYvmunotx@1CejMuHfc!g(-vUR>GW(l~ zWlwMOqfZyqwFNPEV_bOe`FC%LS`^rBMu>54FrFhkvJ&u|vPsaEMk_ix93t{cXd3D= zH14=1&ge-%;7$ezg)vk}uz-vz-%%Klha_)hWwELc+Xdu<9bb3q*&?#md0t(ku#^|d zYV!hug@&x}coHfpuhFdR;L=f9!vl}K;+%Rj_-WWnNF0^pCzUIp?}vmmwq|f)S*NM_5~vS`kh|&&ej>`509X)f$T{Euyw2$na!Fw}bFc0?PTbIFKX*uYE@VKWV%mYn!KSiD4! z0(pZ`>i(cZW@?o|L2yz-ccpk>Vp{gkb4htxc>r>XY1VFiH0pEQECE@&kumV11^pj3 zH(=9>8aSRgw|PUVOEDulX3Cvq>qY$pbCx=q7Q`xrYSa39<4%Up`G7BRKE1qb>0_SF zZegtnKfMLJ)C4srK<-SdsaQA)Kgonp6_!tufm#8Tl^bY9TOxHA<}uFs51i1={y#``BrMbg_VD`hV_z(2ukE7zsyK%YP)71;Kt`9=w2o0$M zIUi==^`uq&Zxl0&6-ldhllW?851&=K!DJXSe63d3)Kc4cYv&R!T$-(h8aOT@-E|7N zO08xi71hbXe|ldi--cd9lJ0M;A10b_n_HBYp3-MGl9d9X2%7sgM>I|~U@2sGqkrKg z*$*)xc%c<5m=oSd93j#F5-9TUd~@A8B4k;IgYimE0E}S&np$X?i)A6-hu93z=TfXs zHiTqvMW0dCzbZ1B;6Re^jy4zQ^|WB3C5-4_gq4Cn>OYx1FW_LzH!K;rN@Z{rbq9C1 zi&Hjnmtyy^H~EKwAHiHYrI2xUGG|h@bCx85ldWhb9Ii)7{pknlsqToW?DB>|TtgFy z5CJ`GY4;#hFJ`-L^W`53#HpkAaC^n(7u^qHC@@Q(e`N8WmUM#a;pl!4dT1pOe~{}- zKB5t9x%VQvR?%A?CJ)jEYAN}#fAndPeNYUwxz*}a2tqw0)6|1=*GpFJX0-Ze`NrkuI_(B$`fI%v|hBrC5Dkgoa-B z_cWbkhdeoYQAHV#nWE{KgJ5q#2bxQW00)MTa;p_(5FYRP0m8n-qYgZt*kp>x-X`d{ zLq@=)=ND2kYX^1*PP^02Oc?c$jQ{OFePb+8dn8s=%v`w%4D7PriVc}TO<)0iToR+5 z0hKIGzP)j=I1m#;cMMpYSG#KH%&O*A93D?wtO+d);(0wgxAf&`70Va}ya3ka0zPjC z+>gQlvuEfAMIgwzspP~eSlXnPTVoNKTx->IEXz@CX`E%0;j)wDg<=NW#jc#d3k|+` zR*b#aN1audN)GCWkc)}5F;Z2U2KCwW(>ifKLE?P;QxcL<5$}kQrd;HcLN6CbnQ0U2 zGllv~TZJbVmf@%|yc6vm6I_?zDg0`S?228}%I7uL(XXPKnfik{8p_Ed6A7po%N7h~ z+GFI4jg(gr;M5TpA{6hqRs$B{iZ@Y)eoKxA;JAu>e2HlcZki&AVQv3NrE?<7@T~S= z?e$3KsX=SItF9o(Klg{4^+)y=Ak)lshgIL$imRF`LD8zpZQXUS>T*AipuMT?Um~|- zp*S56vTCB~5vQUVj{Rmf3rV(zI{#NDGl5C5Pl~j&rSpStne%l69-0?R{2NQ5j1luG~S3dp@y>w z^YR%;?R**;?a|r#hamvYF0kS8Em~^ z$5ZKwyS`I2Mu-0|szu3s-Q`n#r2^wtt=#I` z`OFqfCQ?J%*cvy@<#X$Ao1>H!VOEDzp&q)I8a0R(a_5cfi42nI3qeUqNzel=UVi#> z2w*>$H=S;`-=%KiWX2N|=`+OO(A={tE#p1y_m2P2A$=^AyL##JiUg%{@*9Rlt>@wU zN43|zI6}cp5;g3gssxKi0peUs9_HamlKv_bD27%*TITuc2T&joTpZS3>QzdA#;Xehd&&E}OV1~h4+8Ywb0 z!5h+SkE~!C%mpJ~X9UqPQpO|(2DPxq3S2bw6{|#NNTKvFfb%n9W+L^_!Rqjm>Es|T zo0`co0FLv*y)vp#2Wgr^Hkjbra)u)XjDaaC%OuiV8wAQ^Pv?k@<31l!UBv&UMj1G zXf0{7WoRuL!L%+ItA>+K3g=MFA)}blXm@e;f8orl%CshcHdWG$T0=S2#!jvvoTr4e zg1K8jHtSVk_gF&-0oBX3L&tC?Gf=`V)ayMcA`QiMYW|6o?y1DP#wD8w$HSD4CKhS# zumRBZQQg&ulUKZk={Jx2>qXl)>wEfWM*s2)Qm~)_p5B~ewQ-Z$w|O}5Wdn4R;cC=bDSVN#0jJV;3~b*B)k=k7#V-87YTBlJeq09)n%beUBQ zGF4Yi(OS|4O@eLI3^L0XewIkh>-=Y08~5kN+Q8QDhW>hWGetKpxB$Usw zY3qO>fE9k-uq1>^qN#|5bloQ0>vC>>!u_lhObS3R<;bu&f#gwoV__v$0V-*uIX~oz zP@$$9ht{JNT-)-iCu4A*s;t>7P!CYX$_^nP+|i=47o`T$SCVU~ff_)Yd*EKzfjR=< ziiK`l-YnC=Wi2h%LjIqV>mEoDr)~lPeQs4%Ks3e%GSc$?DRbeIT~*%D^-B#^;g{7# z3u@ml%>?X+*w#vDO2-eKC}=3@{_^A+HOv;x$Nq)nN9pyAz=VW-2nZGsewhmh2cWp% z8r`l$<*q_xCX*x?vv`o;?9kX#cZPreW_THA-_MzkS(P%W%VC{?g^$=Q{LU$MMs;qgd_T_Wp7-i} zVZjO7Veq?od9Hg6L}%^RMz0#W`DZ;x={@NAaI zZr!h!$4|d^sWv!`@ArMPvU*-_J`OK$BfXW(*h2%^OMlnC&%Xa7(0zVlw5WZSe@2+` zEG3ZJ&U%i0`|kAJ=I4Zv;^xc>XVZQ99{R}6&NX~JrFC*~Nc+4$xw+VNzBd0JL^1_R z-M08w{!jKguh&-stQ}#fnF}j)=5diI=GWU*~|E=l@eE|14AML zy=ON@kfm$;&k45p^;NkYy14zipW-TM=u00ayra9!Y-e;n*D5+C)4{e47QbK6VR>lGtW04hTNd zluJ&Qj)#ZZ>vO|*e1llHo;+hl*bv=jz~2GfKt4|)Ajm#4s6b?mnF-7UL?1h@xlp@F z6I3B3aO}!7XYoS<80E1xAJ(}hy#cF&DrQT_L@fMNWEpWYAlxcTYk6L5dEd#At`nKJ zP}s%F>!i{1;9tC#)#kDn{x0o3`nI1e=V3c-?!Z07wbu1`2%>hTi;E$4WP?V(Ec3h@ zD2{1%ekGJ%{5blSGaAM@`ev-gD(31e01?{gUura0M1PK%$3VJm$*7;d4H>7 z%JTdzsm~3r=nvz*jl==R)#-^~l1X+{gj3SuOv9!0ZSpXaeUoa-xG;cNd3d#R?psQ% zdL$w*cg?j*@-Fg+YVJ#N@c(7`14}na{qY3IQ&)R$Y|or383b*+IL2L|+*94O{_PVE zw<1<%--~nJaif-7|7kRVQn1!};H^~lFCbb-Cxaz@e zAxj`$ORRBA@SIJM`i)3dXhw;j&ZZTpXq3iss`A?&^Q*XNZ;C(Uh)ttSm~>?G_p`Ng zr~faB z32Hxp@%agAmp+qY)gjs{tpZH~li-DTung|Q#Y#Y{|FsyPiX-kUO{v+j>o~tnI4v1} z49T)#n9TRSG)mM9Gi68&eU(l3elSP+LAi#ZgE*jpZtd2)xg)}P3m+(no1=U_=-Ks& zvBh~XSDsma4!l?isudp13|+SO-G;HSCT>Lk|}DLoNyjo*lHj zy-0X(DiRP>#>y{=pVoxA-v`vE9-TE=C9WUQ+&8dUF9Y*INtNUrhK-5f*PUKb+jk(8Ie~0Rbr&?Kbi@-CO0yxWc{R zUh*=s-Btgz9nD|h0}kRCPEnRrHuU%&<*mV04W$I9B_GxUnx{JwSEiwwV4f34W=}DE zqh*CUH+gnXe|x@K#j`r!(M#HH|JmGJAKBhGUhaN>{ujR$9nK>>@`nink@vqw+W+56 ztm~%O{$DK2f5l5)t5{r3=biW$gy!fWmxJ3fz59k0tH-E~Cw=)@WBg1V^wEmbno~M? zc~xaqn^_vG;#D13WDX-jA}EnnXhg!gdMIF*H8ip#GQj|3N~G{4u*ZiRGHSAWGJe8m zRp(siN>82;QT@v&ryZ_Z&#U%-S)S*A%X8K?*)~%4JT4_0&DgmA9@ZSO()uoJpZ+-V zd793pKUB3edp>nvyI*?>6rO{Rz}=T{T688_rI=;vypuULT4f*AK7n>}yRSWP3$73U zt1{j72(xaqdh4mb`U8joe%0bmL3x3Y-hMgp+%dxR(T8wZTy4N>w6gB_v%-XDWZ+&{ z-_zq&ysg1JgXO;xdI1~g-2z9tJ4LeA)O&hQ*tgWF72~?aAGU8yAAL6%Q zz=j<;2?wO~H?F;-tEFBGQXttWZ&~XA8LYe{ki{^q+$k-2-4ZW?IU8O{PfODm*l(&R za0weGH8uauly!lIov!-tIficDR;F~QECDn44B$HlMI%=h-T%sg(XM#jtaittTdmQ^qX&M>K2Syo(UjDX&(2?sywjS(sube_xR~=V?Pg9c z<;iYmi;<0%&4#^oDcns)jtPX?w1tZ{J-<30UMmf;ycr2VPI{<9#;X3K541}OJSPVm z7|`FWLKhoC@#s)fCK_a9+bocVGH=>!UcXkRQ2K}+V1D|BC8(vzz1ZMzBGcVwhbMFP zI6NYzL(m7b>*4KeQLorp5vvGP_t(uIMu~T}2kLOoAQ97+rN6o5d~Iq86N@Bp92@%; zqjnh66V6dQ$KQ*vw`WyDyY~x#GkLB+W+Iy5X@SBy{Eg{Ht9B z&<(QZ)Q>;F%9e7>C@RY%5NG9#SZ{Ssv8u*G1Pn}Ht2d(Jd^ZdrPpcn3&?(O|X{GGq! z`5=_v=K*1!KZM`?B~knv_0#c%e!iFQ?et6j`V;VQz2__PjrFziH9L?i8dw_?SSuFD z4+E(e389Aoxf2HAix1y}1=oWHuNw>Div*7^7AU^AyD`5@KiKbD(61L9cr6xq{nLsE zvJdoU&hJ9*?N*!LxNw9O1Tyfr9ewpvBf#rM!|TEz@FC%OG4ZtF;C*Zd27aFG>bl*G z&i7*s1k!KvzYGKh(u+a<YBvdb z?(|>IzHXL12h|JrtoCjW-UnlMaJJV7w%gf1L|8tIIX+ZaKAboUw-f1NYCF0a(p4 zAnr3#w@qQUncZX@N6=3Vtlh@*y1d%OafRIJ;&%JI+TGjgZ@q@^adf@e>I`J}VR+fI zYG+~8)Z2NQ(uJgP74x@YBZHbR7|UBjPjyI=;?T#G=|~1cD;n>DWw2<`deL%r8A!|6 zBT68ZlK$8K|$krq7HbmY|HO9Z{N05Xj&J#Lg>H{)+>RS${$y z12zrXul&S-%1=%-59N1%9pF!w-$){v{HWT<-iUH^n%~%}O0uPj7w<@6e~yL))B7Eh z1SbrH84ws16e9sE1L8+2z|H|h?8=hB+hyL&kI!|k6ox+)aVjC0FY~5x9wZkw8DhYi z@C4!Y1f|)l43ZxMab^Jh#p!K}?jwc}!z*V3x+nu6_(C1F0X?8CIAbYSr!4IU7d3*OVE~3*_W>$+)rOBJ)+es4#8@{de#X% zCR6?QG^4-g9K$A$jH)49dRvf(kxf`{VM zslNrbvt9zJnwi;})v_k4NB`KJ{pAws)ob99=XmqpV0KM3mDk*+ zy?e`Jo>3?7=4f!tk^gvzjOCy|^dBskyii(!p)#9*@ud+(>)MTA4?z!|KdyCdmEMqv z?F(!5aX`{Fi!PlaAU=N4T9x2pW8jAg{gQNsdw7$eU21P~%qN+MNf@|ksF-dHGu?gc zGIc|m=e7yCW%S;&jakR|h%RP}m(b_|RRgOIyiZIm#WmeF_0`c|Gvo|Sku|LcMu|6@ z06zRIpdbLs#u`)H2&}esgmlYJlV1$(bYhPr?)%w07 z8*D4QMl(t<6Ay3TnsM1Ej_Y*&0gaIesK>zH`vZ`*n3a7DeycqUo&K*au9t^Y8Dq4Q zqH9q4KK%oQU>#!IG;SOc*}noqQrH7FP2%{P$8oz1A&%Kz`L3Tf@mwcOVDVwy5q53X zb+}g}rwJn3)?77EXP$nPO`Kt&f(}4|@LZDLoa^>RJhlmR?@Pg0tnHahJVg%yvgDd8 z5x$LYq}c}obQ_oOm{9uJHi*mSi_nrF>|WAsUd!ENO$>Dta?nb|IAA%DQD@K$CJbNZ zVF~R6PH5ap;FwQePNuqSoq#2aNo3M{JDbr9mwEXE&Ru_5!=uxvV|$?b43~o8tG~3J zXijshx?n^Y-%=VhuKjIb>`;g>Qdrs!YUmBa(Z z?d3{HH|f;VGJ-^XJEv0NmqT>OxUht&Y9r@F%dB-@2AQ@nR{3ZsUZTWbCQj@ME-B)&d@x17Kw$?_vcE}<+2iGsBA4dLZ zkY`j)k^wM>0Ah{?rGzq{rdUj08d)Nw@UMEYqm{OYRos70xH^zU-`bFhFh^<`dD6#s z6jhYNJYwQuQdjy)oiPEgzpN=Ndsv9=ml((|QTsI;oZZX<63Cp=I?<(|#}@01#~L^R zToLKD6~&3>>@mV#RKtb>Edy{^FVS8?jm#0wL#waESpgt029;vQqAi!P{nl#zQ4Iam z94XUXP$2%zCjC=uLYq8RllJ2JV{<~8C~m-!_2R}cfIDOLDFiWlYg|B{x?l2{+5s!c zB=eun!}iad3xjF&*9N1vLJoo$(Huk}5k!9${vdUs0QSCUC&Yw26uk(XCmI5gub0$= z0D?kJ>JXcpI{mOwV@APwt*t%~chATR_!0m3yUW!tQfvQEihZ0;C@!$)%T$_iXH<8N z&B7Km8Ua~iI<~QSS5X$us2!(EbQK;km7!R8jiEh@9Z1QI7}XscEpyp~SypXAJc$f# z1SdPD)b+qUto|!*R~M& zm!l|$U?EslFx9^YA`n{kW6Gw&Wx%ip$yGPXz=uh1tM$i6nB7KQfCOI~+9T;RJ1>cQ2@ihila}MV5Y;sucO5L7rkjb!(nvjz+>ZK27|DpI%xrkM}>1|{F&YO zkUH%Jd6A~aKIZzJg2%!gg$TvkHhu*VJC*rZ^czZa1b-pe44d32o3D#DlduEYkHBSMd+E9)4Ll2HC_ z9g&0Vhj8*h0;6;|oVGWd#+w+daEMg#F-!SnR!+J|efv-X?uhg&rPLUjWEJ#ScjiL2 zyo{9KJ#oAy!A?^_sGal!{ht7tPTZ=RQ$K8Q*7L0nuMrIw`!rn`(Rm*M5W8_!frWwK zzl5nR*LLZIQme_hZsf}l7EOSkzG6-pX#(a2`2L+1EZp$LCm9E)$+O09$oV`+hVAb! zMckbBN;@}fJRz_$(Hs?;%hLtT9(RYoB)FTltf(RgEf(dgm z^h2l9p)B(Z0Paq0iu`6RRTar{Z3NY;s$*4C?E#0{QGUsbCgg@*BM4jRkn~D*&00#s zBo8p-wtNlftbfl>=?RM0n&)_jxu;Lu=J6!+yJODLbEk1L&2dwMI>v{$wY0rDSBaiH z8}2KI00Y&>EY*GE+MZ9^W^LM{#vT}V)P)_0j*+fiEulx5GX^z{8v4^V2XS_CmCT*! z(P$))NxpFXh~Rz7+9RzhB890*M-bilqxg9zDjY+xqnM`M*6O8n4j%+YAj2Z{!$s`& z&hNQ@f=S$i>%~+TLL{jBC#%^QhR@aM`0oaV-Hxlomz9wkn{MBWaMR4OMVI{ zb-8a>j{+D<5gUt26a72q&o#F};wW=N&90$&0u_T45WCN|J!A?ZUP(hv5_TJcYSdv0 zIp~I0RUVzlk`rd?xYOLplhE{K1hAk~#tIGwJ@5U!6E|h4Zn|6i8mCBODPoGN%15sg zn@l*=e#g#ByT>BmVb<=PS`;za;4b2gm78Zlc6-5-if(@5SLB<(4$3}~`c8}hm_BWG zcYQ}Gu5?MijlUn-vXLE(eOd|*uuqV9gUwJ4wZosC$X%Qz@!`6KX~!@`OIx&d{1C3z z`FM(wvV;O=z)VCdRB-7MCvFS_V7d?^wbbtE(A>oRgGoj5;5vGo=N(;7G$|+`9@I?? z?8)9(z>Fup)^TSIGSl%lrtWGQNT~)IR`?+HE;wH&HOb;N?bet8PRO`c&7`!6TsL&l zt=o)v!`&E7p7o*8Nt!=c`q8@=HGLc)By!dp9}&aEqEU`$HcX8_;<;O=VQWxNbXA(7 z^i|4x#9is&o;r|@eV|h3F4b%=SVff4F|em8T1sLt45bkIy&V4GG6h}sE$I}uSZY#_ z(Hz<;y9M1=&2=|7n6(z%DHzg|Jlcb~>_#*JL4J<=*<{wXCq6hY>xQd`$uya_?2l(y zkqh@#nI||#iFMInSi|ccRb+pJa;|N>EHqE3zu4bOs5)`cod=xwoq5N?LXQHaBZ}-3 zau=ccC0Tq50*|?=fpU|HEOscXCN1#3JF^=)P&t6O_BHMlmTC@fiy>;a2++}$-=@2l zn&avaQ4-x4uiZ8^i0JE0rlCs8l|*mtp^_d@cbz6M+1I#KyqwDEGT~#`^^*SH)=ap` zm)RDYArmLoCxmg>tTOsDC(B)&$^~gx<(o-whcY55BOlP<9z3*5dvS>JK|>*^e%;_rbSP?&kB2uT!D?{)r!GshrE`+ zwv&ZMWni1v_a8^pf3*hc`6%#~^}tQsLNHQR{G%9uZ_Sbq;Su~KkZ_9Q zfEuA(-~bhpd#J7n&4BmI|BC9Q965UvSF;Uof(Xb#iIk8t0#x$2B6FZMmEH)_> zostZpBiDM89)D=A2{7%&8B<}|Q>tNtr0#!h>)SMTI7kBXXC4V@yliX5eF+m@v>|&m ze3H;GL63OZvB$-1Wes4ASXqq#BkZ7P{X4`#I>aT)Q^1G~Igeqh&74Dw15-XP`m`-F zfrCv6XFrrUmA8UGN<>aE9$;)Uj`B)bwh+QloXp2@;hMEO_1xOh$K;OkZ9t$ts(z;| zD*4LLXL|s=3IQrW;3^Mc0Kf)wAn8m}0t%oaP|C`V9|gYw^STj^_y@FufN2OO&{{d) zez&t!`|4b-hjI-VEg_mA@d^S)dwh!){m{|^`=voPPt}F&yoc|O46YS^!g0jym_P#Z zb;fe1-oS6zE+LQ5i@DgwM#Qi6K}`L@s#6uMUM_%q7NWP=L*A}xw(usgbMfZ>rr|2c z)1kf(0>I)ch1~}f6XrtYFRhO59!(3R9Bx{J^KWWb&B#rwI2i>9?)PbBEm{bK)x%>- z8gvb7oRtNbNrq)`5X!x&3Ctv*C9h2DBCN{twVwPtR5+F?5U)#Vy_3h0PfUy~2ubi; zC!KsI*Y4$Z>Lg&1=ucuI9NBJyVJP&s7U57-K^K?O_=B^CB0yM*gOk^-wZitv)1Qyv z3RIXYFdDL;Gyuk`4gdhUmdf-5?8aVDOe7WeBb%sHV6FQd)zB2diI526 zFg6L{VE*uAqpBAms@6+XA;99Sg)n(Rl9gQKw?20uFw341SqtyM)aG4-sxG+(RA(T2 zEjHd>fr#9CwQ|N8ZkvODG$#9qoRdRPO%p>%9os`lEfrQVIC*ar>)XQuQU}=`DIi%& zItta%(uks4y=nSH!lH~&5W=M>ur&+ge|~(>{nbb?NvqL|u_4e4vMA3C6x_!RLuzt* zf#R1Y2EZCsk`*Knoid2$&YFzpV=eZWLJj2xgbF}q+uQsK;E}TxCWb}Po#SBScAXC# zg1H3ZrVrM|VcvLP1O}Ll>~DqRi;D0xIgx)|wW5Q$YQO||R)F_=F9qh!lz09~@CuNm zU0}6L$eSF}gJXD51WR*kaN0HHDROdJ^as>GDhkU${z1X$cZ+n|{bL=tguCePS?{bU zya+T3A!b91xB7c8EBxZL@6#=0emn)<3uaUbn{`pp6^oTWx5TXfuMA~x6421lj}5C@ zA+WirY`EIrLu+Y80iY98*(u$>S?7|>azHo5Nzy{gAHeoHhkM^U9e)d|ZS>1hgWlOmC5L@3)1+PO03Hg3y~# zrDBN#Lkj z4FZ>eY%w8dd77YR|LXJ}>8?B}K*(UxN*+PWbhK0qEUP+qa4eRv{q@OB@D?YVEE=+9+sTCTBrtA4)IG)LgaSNrrSZVqgya zGr@&WPX*7r7Y>p`EVYKw7BrAybb!PZWTQk?8AvMX1^BTBcb6Q!J-e8_^DmG1ZCjZl zPLo5qqck*pDXhhzG|vLVtkgryREXb=ZrMb1upD^6TV7HXXECgq5}Js$CJ^NORtZ#{ zOS90BU#v5%yAqdk=xUO~$@D1D}}MQ8M+sN58m)~bm8fSv5^%RQJ^q_ss-&a}jXsqdzg1(UH(PbkXDECuhg z=b`f}5NPu%+jBK)a!60JNcPV*`2wjm$sHz|e~VAX^Y=lJk!#9hW^<=9aH0ps4wPpp zfWoyla*U{Qy?P}59`GdoBj6NEHf4`SJ6W(ljWpxKl9uztV??8^qr0I|je|@OcLm*p>s8>NG9#_RI6*D2j*4^DStwDff zE0!TZ;;&MpW>NVog=A%%iT3b^oUtLCXaNMjyrMLoEEv}5kqBv@EU5!->|k%n)ldUd zBUx*I>Vkdr$NPEErpzZ(*O04BbVfcfS6=!=qBZl&hIuYg{OMLw9T|Ad(n%9Lwz1L? zl}VuR)@41px7Uw>VB(L3aONiDbpNy9aIpM5(k~k9PHDJZ81RUgP!m`$V>}An*wkl> z60m!|#roqxM>S?UULK+oE+AhfTdw47-7+m#yTXJ=4?z8juhjJ30?+(qxZAnP)IyvR6s5@bVxI01`>jgm${tBt` zCC*q#SJf{!X+^%hdz2qd?n8Hyn5=L`r$*n&6xb;zqr#f6v(LmDa)@>( zu{tkDLqo=VAkIb>ompq23jb(fGb4WYy_&dieHa-J+7@;EgdBcf-B^E-1>XpUS*$pn z2c9EwinCX!Y8iyLK^!tpg$nZ-Urp+e$o62)?eFN!pc}?3j0RG9VG62ux>A}U)F{Uz zTN_4Kma4yN=Kop~J{MKf8J$LOPJ3Jhz`WY~T zk5n0!9cNl^xq~H-ph-qSgCnH@FxG+TKG0p$SoJ~<40yYd&@ys^vUF)(Z#p_fQz=># zdDJ%Fu!bQ~eIVAbM|$-@C9dP+WhzoThWL@L)Im)*6mtn>6knR?qkc(IPccpAK3rPF z?Zc$}eaYMEaf+qPsSEpn55&v$_kS@auaH0~tU!Q(S|EUcSpRqR&Ne?)&IV>CbaoE5 zb|wx^7AB6+KtI}vp9>fW6KGeE{XYtb|BlfrvbO904`uHdU+I^n4WFoD+jdg1ZQHhO zTNOJM+o;&KZQC{~sl1u)XXbhO-}CnLd^zjfU-tQ(eJ|~`ueC0Igif_HztmF2W))B( z??R-A$ntDQ$s)8Oq=TBuVfT>E{a?$FrDJ~AmA(4d;v73V`_HCZ6J1%-YdAJ+_fpSf z?hVE%xrP=+j_;qp-867#;IAg@rJW(rh#SmN0x9Q2a4o*rHs+dzP-ZyxKT*~UAsFvI zCyr?a`4EtI1440jIEBbUbpW>(jA;Bzc7c{oDmGW;lVO(kD$?lz-~q#zWo~LFDL$cO z?k6Tn>G=-HXsQ{O#Mmo8#)-y7BBssqFA+ZUEz4v5$v`7|1|ia%ahCmA2?&ei#nLnC z8kCL27+U;q*EK?a8Y>tJUNU2*WlAvb?V&4HS(=UWBucYV9cB3i1e=o@CGGCI1k@fC zvV;s{x+%suZhh-EoB~VmqrB}O%$ylSi~kVf9DeVLgYor5&$ZqO1R8@I`{X6PdCev;oDq7)%Zk zE5el>vzQ4DI7y;iY!}#z?GC^I+dGZgem%D#FopG%IpHPjDOiLPm^iLCUDYe!L7zL< z*(bhH^K})?{M?`;4}6v}YtpH9J0EsxKyV@*A6Ycd!m6SWzM5Feknmi_-~Zj)&$Kpz z-B!74!wet)>OE=7YY^QgME!mvF7rAfj_nq8G+LX3WCH95j<&+7#ab(9dkwq&YC}!a zUAJ+zbRd!vzc~qSC#s@;F2-QeMKv_J|6ggio~h&i zQpt-{)@>K)5q!k<@V^ln$e&uSUZH6&DnmppfJ>4pLt4y(FWY$*Ls?v=60ch9a%m+NF474=L9ouuGN2Y z1Z(1@Nw&Ay@mp!y-5p_-z$3-;8(nA}+vm%%e0oXpB7! z9jrBx9ax_Z{uwhBfvsbc+lmeR^2npzV;Zjgg^PQuoq>ly%d7!>w{ysQwAw+WgFCqCj}RxNCsoN>XLHwoEI!a z+(OKWk|2?d(kcY>1^oH0^y|+d`4L}o0xQK*Gy44!kSqDbOit^hUrA+G;p&8$Rurx{ znZ6&c@11l`xDFYylt&*@(~38XpJf9X|R22`J8 z7&E(OwKGjkg^eZpUOKW~_i_6};z&d;pP|>#WVjW1W@vwaf3XS|N8IPb)|5?MT}zxf zGPpG#KejDa(jB?EE^2d7B0YuQ5~-5VEJ_|c7D&>F&`?It9S9K@v*g^!HHx5m3|?tF zRRj;P%GixmsFq@?O{Idm;2*?9v-S?{mX`tn z{lCL8oEx!tJU{>dI{5#!DOno)FHLDuO)7Go9-#~U4POz;WqeM5+|xtDZJMW19u4Xo zheRU~uMKka8=B;&7Yi}9V)i++&WVZjc!7ua{fv2D3Uzzt_Z^0+HCvsZg1|PGx!NvP zQ-vo>(o76KAC~d=iD=6_e8`|~42W)vq(%HLkPDW%Q-DjJSpA-UOZ1ocI%^IXT|Js-L9X7ziOdupMMjG*#)yq3Z#NhBvBNe?^!cGC87bPYI$-u?`Q_>L_XG+nFuP3%Sf5{S_R|t4qZiQ@PSg^(1t0liEXtL_I4QvmHG)U zc)9a7k1xm5npe-5Vt;}OzZ7a3)m&PT_{R*6`45StUx}OFteV7X zBgl4)bmXpnjU{-xWf`GurLB*kt-atzaUrSQ#c+LJoHd?PZTAwo5qyCy{waE1xi-I- zu~Pk2$$~m(9h`Wg^avsY3n(z*BanZW^?7_J3wxtDtIq)D@K;jG-?66%?Fl1^^NGM0 zDJGFMjdi`y@Y#GvOJZp(-?UuOb=?X(r<`yJ0 zdC%(slDn9rI!QIETfXT5at0D7I~3rEv>J!HE;Lm5l1dimH;deXw}e)I3%190!-N>t zvrS$P=7uM&OYOQkqU^j$fa+>ZGD~AF@Xgg|sBfEAZa~kS(F;+|^rt(cUe5|H10J%- ziol#cn1@TwR(0L8o0<6Kz9;8xCA-#v6P&(rx$rOw@W+i5N}<7z zMqqf2vrkvMVQJ5?1V{ z)xww7N$6Yqi%zN3vK!cifz}W6Wn=4oKL{CDU%>y-wfPov)6=uf%d^BxE%Ed^@flI`*Y+}5#pnZP z`KIW(1H#JQy1S7Gbo1C3K9>A!fg{f?)Va+ zk}xYK+h46CitiCsbn+GIvT3&pDyA+iaR+a$ zTkTO3j6!}r1TaNDr6@^{ItpOizrnUC`VH4{8xfi4r6uwoR+TrRj$f-7!(pb^O+!ik zS{|44rsr&)Hy6P&E(pAt)X-LH3-gGVZ0e|D^{iwam#QK=XHUR5Y_RbB9XU%K1a@5@ zY$Vv4kYI|UEe2`pjp#FHM-RpFV~tz0L+;nM{n@V+E9GojB+1_; zbs1qSA0Dru^W?=kR52IrO4ckobcI&OV09O5k9ys>SZ&c%>p1Nlg4fIIu_v7>2L{QM zi%4t#58tlVwuq&Z&7%k=jm`0(L++wT50MfcYJm9@*hzwAKCLR z96b%poV=pHPp0|eUlup!{m$Ir8}uIAp6c^Htu4CY9@E=BCqw_#Ys{XCP;6D^yU5%S zT(X|u#p|X>B)i^1EBYzG&F;>pDSwy2?~J{%mpzItb)+qu(VMH*dlBh#VhyOFPkl?1 zqh%mgGD5Q}Uco@l+YeMG&MC~M^;}dIu0Zofy;Swsw}757=p|#;9DL_WRCp?|PRgj5 zXRhc#s7gFE6;S3PFAr7ORo8Cj^kmT*zWBqh1R1P$E|XML3R+r}YTpZQC_a~BS~~-B zNrKqC-dv9%bHnH25Pq&YF;KBur6W&?UR6VyQMsHr9YlRM{(Xa9Vc(cm>x_=BzyXEa zyti9j*m{Y{@3j2o$g(&OQBrIpki4I3_>Hl4T=lg3`;IAU6?qO?YDVEio5?fQPXc^e zzEc?quW{Sj^$?(RiV2X;%eLaB$ z!{eQ=CoC=Hm_`Css2x*%JJ&Er56hac7K1L=C@G3s-j5PaH-CgOc=~G(!7#%3Co7oL zLqnI9%c5Z(X|cs-n+lsYyE^`oi&LHLI+VzL4M=v z!c|VLynik)&ABh0^pvGBW+8@&l5}9&O#+QZwAL(Tk%OVw3}6|RM(w~+d+T>*iCD=6 zB~y9RQ(6-F3=p3CKsO91o~1R&-*a7;HS|(vc$7|_3umrdElq!P)^|wV$e^d!VNtbA z5(TakMZR%c2v1)$qMuU#9xcDl4U@y$^MfQreF*l|gjGELR$Q-n#GZi9JVPedF#1l( z+h#ktz&PAkiMHJIO*YXhm$J!FipI44naTROGvlnCNsukr8E6lo zw2fEPFb%;JP&RHiCZ#hbwR!D@S*Hm9)B)UXr!Kas$2O5aP7-Q`+7tzHiqdi7xGE3} zdjJcnB@k+h!T-&$O}nL6+c_4fu!{Y1TgN)b;F+f2r^U@#ao;GLYvr@b9Cp1UgA{nJ zqsJP(_P0SsY?4s#co`b4uBgKmR=7A#HUR_%2Ui6D_gNS37D>yuOD)bH`M9LM{NI+A z1ZAAWlkEkV)Gb(=s~R*@rd)4IPLE>6jJQ0Fo^)J!T8^JAXV<@|q)orzBbvgK>C1ms zpv$aeacJ!~%-OY#=Cw;2?_^kuic42hCJ&x4wyfHZzpq`3cV6mw4a|HYiG}0e1qK*s z@ktU)#hNZnS+Umdn6Mwc;J{5Mr)-*TbIxG(MAZ@}xjpJgdz2IA%_b$uob=kX2Yq3J^Z^k}_Rl_`UIS6@@xOI#?*Pk!MTUm9)%Ye6Pq{a^+rd;n{k2 zx|jKe2{(s(*@~ZZ-$`T*9!Vx;ybT{oU4VR7m~|DlV^nRsT3VKQq-4D!6ub>8xB@^Z-<+y z_SoK)Q3UcmjW#QCkW%XMGV~0LAH>S4?V>0L8IsYd9h!F@sEEhyCdqY@=A5WXSy!I! zFa1I?R#eT*+{3&Oi`;je2!&0x=zWuVtOf}9kgHBHMw6C;k)c01a!#;l-0{-nMN9{1U2FN%C{xy zdOv-U#X#qie$%B=!`rekRe%hbq@bDsVv<}3miTaUzN=g38thYYo5U1*eRAi%;O)jp z^ht^C;Vh87CfDx3RDW+^;yitjTmNAAwcx0le+bd9<8~S-ipFq^fo;{;WLB<-lSj=> zZ+H?ZLvwq>6w=U)b|Mw73@BNye>EA^bYmZvMcTM(mqF4v%$T}!VD7GqXv!3!D{zmf znl+A3dUp+*NSWIt1H*-0DMXO$Tp4(2-R3<9kPTJ4<7G93mH2zi;%B-7?gJ5+Iqh$0-Tui1-zjMq{XxjDvNL?NIY@ zkW+L?A4zn07joj+sUK=kH{J@1g!t-s=t~=wT8pVVlq}H~1-s2S8L(MKhHiFjHyq^W z_C`!hbg1@jY_aCy!dtkw1vhoecYJA3BBxeSGe+LoTS{zsti>WWKOJ_N=;t;hfHt+* zQki3S_waU{W#DFi*68&oq9iEtxHG1*8@zHGFSd;iqW>w62QM?L(V=sA5P}!;;alM< zh`!4naTHepgPa8?ji$~c%bC0aGDTllU?F3H+K&WD)Q?@yT zC@I5J)95w{#j6xF@gKeF`6y@;x@N*$it3Dz{)GiK{#_WZYx{6%#*=-FV+^1yGNqM& zoM-tkjdnf9U2Ku53NF<)5z8VMCm~h0lr5O^3@rmXNbh5Z{c?$@dy{gNkgfZal9(43 zgCnZ=XNZ(!N;f$5m9O}V)O$XdPaeN@C&=hvfKd&wj;$*^d&K57=I+tVG^m3qCxJmd zs#>7b)X?X^bCG8$ZDsY%(a0+wp`e-Z?$MT#Jh!O}$zRR{M%aJuU2rVQ)0Qs$nZt8k zA9#V~;&ZvNuOVa!UTmZ{Q~*!d`IG%C=Hw6Gr2|gab68y{O{*$rQMsp%#=r^N!ee+v z#66l8>dA5gSdedI6&Q^3-VqmKDR}j^LY9;F@T$`~$g{ru_F9XX`($?e0RGbk=e4J8 z939$lh}&5!6Naa4W?H3+j|jdQv)_zT7NjQ`A0?&!dP};?k@WHC-iY^@H5oS^jM!b0&*KNJCxh%aS z*R`Xz`MNU33PFhBi}8wJ+5VNS3#!9CouliV=BEcuq=tItY9bm>Mx`oA@Dv16^JEFB ztIPO~$2sHgarhrMI2VSzj3YdeU=kqXwn&W1N|A$}b*Z8bb=rxDa@~A=pR-|pDvx;v zEIw=Mi`mZ>-3#ezm1O5X`YaBrmS&mT4h{$5QG;2@ z2WC5ehCTCI$tCbEG%k|W!b{1|cVZB&_A3<;uj`P^{x;VkGY(jAL0IGf&Sl0aEWAPj6rU0m17xL!cVjRB`f}hixSW8gu9*H#K0uFA5b=Tv z=mMX;Yw&9_AXNxg)Jc%Auj#xuUKB1+^*NWJ87YbKHe;xSj!_{&|Nm?ZgHzQ`taR>H=>`*j=`GlY1)<3_8ZfVY~wrc$9(b znhG3vmVqZPVS&j+3>&~t5JlMwLWTfpgvQ=S4fOkU&Rem~PKhH!VF1FI^HixYGvsBz z7A^eP%FwHyi>J3|L%(RrTjq8vSZVATzs+1mj@3kj3Jsbect}u{FH-6)AjJ@#gjmQT zjkr!r2TPFZ-pZB{bSQq%TrNrYc3eH1 z3~TeORh5~!B~$OolzCjlW^t09#os(3B%4>n!*^Ysa;fOy)#{zM-mqP*&$h3RgJ3nSWyY%)l+}0CK}soz1*F>b(Cu# zReX#6hA2TRcQG2=1`H`i)W(>YsYA2V`3E;3~C>Ur2h*Lfs3B(^nIS-5N8v*!Tv#WGq9d7IR3B- zaLlRDJ)x!Gh=$-hLJgqd$soCemV%+XK)xKpS~vQf0Ni}~26>*`X#dwU=&kzh?hj%* zI}nuQM+jg5er`pF96MkV^n~_z8aRN@Sfzvq3`igR*>;!!RD@N$Q1^T-tN z=XTa}9*#+b5mXYp9eUva>ZMNrJbw*sJ5{mI?N%W`gy0fF>R zmMBK364G_|VU?K1I&NNI{<&HH+#Q;3Hz)sVO(f_B=a62#K0;GPxjLWc%`WRt(&1CZ zi32LG@+@IjnAL&=rgl}#`J&c^p9W{=-bW5gzH-lt%Lf04e`Ac6#l_kuwYU97=TEFC z^yqKD&Ffw&y5auMoE3QUeK}?c467p-`zq<<}qHWC?J7^GPIOjk1C2AfGU{sP0 zIO>4zT9?T?)YAwLo?a9Tv}F3w1Ul4p5FRs0W>U7xgIeKiQt=;vv5Ck}wIdld>Lx6o zB|Oxx63H%QP_C9JgC=J(kU5N&nTp7-acjw;5@e6Nfiu&{%)XBep``hU)Xd`uf~gjw zqQxU8gqDg!PD;`c)f3q%AnK&8x|0hh#>U``0>AJTStKE;7i(-m#*!*?>Wlm`K@^Zf z=0>$Z=g1K$CZ0r8DJB`mqzz0ePAI?Ul40pY&K?!#vSv!9_a~rawPF!g$ zk?XMK_GxV?seN#E>7r!XU8nF^{!Ts`+^OZ;rja;{qpdTj(D!{8vfuZp%TX60QF>|f z#hOXZwBq%+mr7G^MQiv`&Ck1!idfL3N&<;Y5la~_2wCyRMxB-HWWT$XG^J<&Cx2f9q~1Z^I{#PeOUv1PJq+n~?|ESoU()p(ww(a>G8ZgpCC% zNb0o35zyWcJ4+n$JnuSQn>BsBBi_oyT9xHhqqo^5y%@;q}-yTSF0a5ctI zd!p>?`-${K%&{Nw1t-Gd;Su$U4GP`AbuHsACTr?$_4sMpwIiCkiDIZIqMK#+98tqn zN&ZZ&o=Fu6Ct=z->)54D7pzE8^*Z0fg{WPJ!3;#{rQH+CpO-)!0rwsEd5kPaR`wc-W!}M{IJ1 zRIA?c*+|=(tgRn!T(;pwKDzNIF46$bAze}86i7oc7Im=R@fxrYH8>PhJtgYICjDL1 zf7Oy*w;JkfB!xR0#*TdCot5S%<_7#q9KaK=#~Dy|6K?bsU6S8+ob?#iAGOI;ClUc96was?IUa!=KD%SXcNq&UwY^e28+lEw^fBorruVE&op;4D@LU zkhmGBMOjJ&gEmDQL9Wez?+Jve=pMJk=FF?$0)}?2r0vuhquK(FrEjYo&f+jxSGNu~ zd46ZP84Okhd384Z7P@K)S@&XpGmlCc%4@g?QvYkg({1Z*`{{(vA~uSLvWp^UrF4%{ ze#CzCF?Alp*XUV0@`^R{Y)fQ!UK&`y%bfAs=xfxtC)tJZxf+QUVmeJAE=lO`?*wK> z6<4B&VZ?I6k?go4*|5JkuHASxfaJ{P@F+!m}u2V?Ll#4oj&#mk=21`tIP^C zPAm+i2%3zPqVctgn?durTpwS-7U4{|R-m+K+QxpPMMbr26s>ONSZu7<1ALYcwaDN3 z+B(PAV#?i73i+SD$pJsyjP^^G)+#!s_6-z4A~~z+D(Q0(5Z)>tn+u;?9W%+}fua`ALZuE9)b}VPnq)r{5#D=q=_EFfx~Ci=nOr?|T@B z3dk!~0N)B6O^CNZSp%ESXL6_q&<2okDLZQsKtI!J*S=@@hrp;eX`$BbW7&SQfeU~s z=pFH=x5hQR$oirkzgKt&_xq5=6j+b#Y==XX)T1X@Uq*tL_?3YaP|FCBtRIyuU)qHM z7RN|_&u`9~Mg*hWp_lb2uBs6oJ_*5uLad|Ka5~IY6qcSem0{U4VKy$QYjkj%4?mJe zY#r9+SOiH#_Hi`IeFOHhPe{@?lvBgfVLnZNCl&e3d*!>>IqkV*f1BboCU^nz5{f+- z*&~VeA?(Q5RZxxc`tMYV78;&(xKZTR6&1&uG*^YIrcv2y$=#J>K8YyXuq5wbYD{7@ zoR{Wc@&-T0;Dt;U9(D{)t&>#JDB3OvX7&;`0UyTD`!n@A!Vrm;zfc3|_8|CC^s z$(PzEm7J0&>(HPiZ{8${SyY6K3p=k}@b(P_6z!QZN^Sc+zQLwfZu_CYYTC4J4GLMB z(@muWJ9Hv#8rl)WKu$5x{_!MZDL+r`{WR23q2d*|Fct>01m~gQQ5F^VJ54&S1oHis zu;98Ji%RcH83tQ%w! z)pq5;xvo|H^PK!gU1Uf61&k7}M|CGVO|sWhcoE3w^XEU_KQ8;TNS1v;%LIS`0Q!IH z{!zr;$i&|HzoX&kG5-5SXj z55E#R_no;6u0Ps2&RIkE{C&)67%VAt>yTmi4W)(RCKNa>Opa%`Ali?tI)@F!v zkiz2++a#aWnJ?#g>sYhN5R8Oh^MXM_%7>wQ{YS^&s7j#zhO~pQeAoQjm;dvD^)I%@ ziSGZ!=l%81|L606Z2Nz|Hr~Hn+t|+L-(LU!B1xhhTt#QTKv`O_0KoVEaeZMq8Cg4H z6L~v3>wmgk-l_ZhOZ}@HOqsP^qelt7j&~2M&w$iK$t%yIVxS^aT_~l_0`0^UR6&Cg zhLu3cfa84JG~;qb;))TnV=Y6E{`fq8!FgYm<^CL8C-^ZRy-%9mEiwgE#M>uZBPDq3 zpQX})-Jo@e_7S6Gh@cq2L`0G`rEQ7HOmTd|AN*@m@~OM8C(H%GgYYFUjKSN>J9UWq zfjCC!W!@HuV%s@P$1k@QV`y#~3|pb*VMGa!*0tI+2DG8{i()6u#Vv&ik_ajCYa8Yv za0_eIrN+bcG#8O9>c*qw=g8t>KB0Td(~dXSL}C_gypazWbxCaDbEqo>MBt^3^OLSH zH$VQk;&;yQ8)NH>UCvELuY6BqM4*Hno1Wp5CKHS#>X3_nPaCqf13y^V4R2%I!s3*~ z>Daj+2b-=7CcGTwg=tU2>G}TaDp=MHkk;I`aqmjnM6sY~?#Gv!{1Qpn3kCsXH^vc(jm7ZfdId3Ajp8&8 zrw!4gq&Mr1(U<6sE&1 z?h)jbi18iPof@Mf%myn;o2E5=%xpNvq@&hUhihFFg&O6LNM?&&pzzWGoro3G&2r9HzlQ)$ zLeMo;$r_J*b6Q{&-x#0#J7AEjH3Sj<}%hRbS7v&vWrwY%%j3%ErF0q zErkDD7G<%Oksn^nAu8c@J|3knD0k8$6ZM7I^!2Pk{#B)MS5W@4+hoIIPt!G}4ZtW6 zL38e0w32DN9eqX!(kya3GIq(5M;6gYvVD0)P=BVPaM zM)8}c2}Q_9(5?|z*^#4fn#(I7rL~EPYk1M~%%1YQiK>*DV;7#|kY&pjJSH`63x9nw zNYN}*q5C_Z_E9kuaq$}R!s%Q``}%b)ppuEDssf$Y+rPv1>8(?k{-e%0>z+5-t6t*x z+P3?H8OIF%%^GfOzA}Wpa`ATd>fU(?FWNJxgz)_xQZ0MLOwTLAX{5<1?)WWn*9&?o zbZYoFX74INp~{Bpj!vs?e}#{ED3ED#5f|?~{cH+4I8cfcG}|9$ww>=RB%>Z9AGKc?)})a8MEm(trSf<} zQn1D8fvyN%dB&jC&rv+9{Zq{Y*4l}@E}FX~s!+4#cB%uXu3W>vC@{fpXsY+{-6G6JTycLWp-HQN z2M4}*^R+3kn{;X-$j!w^Xfy8^Tm1VIUIF3~t4v2{@9c^F=GY1K)x4Md4smD1m6~UI zO6T`8QTYy&TP2~^N&`d8f?>*U!35YoD)uqtp-OmbZF4!8B|#+V=jmLxZOCB~15N>Z zL?M3Nf8lfUonZg$`^p`kz`kIs|FfgCGjg#pv2~WPvH#~x5mxm*3!ECxrtFXmg-f0kylw z+wc-CH zsR9D3U%28Gf4be{L9|W;J7V8Zsw(6=r4M(?riQ2Ug+rvs66c;}J>#^*veF{4W1(?8 zh8mU_KH+-!R7x89Xf2mBeBi}&>Cp6;a!B(Yt+!&oJwiO`;XjL#M}sASnE8`C|mjQ&$6>p06${vI5bHrqOXT8=WQnGQkx z)1C4AV*D=fUk4cjM6v6>N<|CR{-_Xic?e`((q#$T_=!r9{=PAh+XFaP=cj~YQ#8Ld?M zg?sOX`PbuNo#_7SM?@`5td0NautM+pcXjxyY*dwrou^0WtZw);C`FJIz6pF1Rk<{9 zi$^dNID?8q0B3X13d#^}($cK`xL(2Ia+phc5>#O+yY#R-niNxm7ILE_4aV^FhHX&i_QAZda&+nX}7xn%XDAqxS3^9>h7}swR8KZ za;bw#4x3WQQA;DC%B0n(m3{g|w2~_1 znUoyfc`!-Cq*Z06Uzhy(B(MHP64 z4GF>+<^nNK1mZTUzvgHza|enzjpYp`0cAO#6JwbA7Vu_B65VO+Njv_1f?(h@KMZXC z$`pe~(gEL#pE$^+#S`>JoaaFUryDv>VuZ9H{nc+2oodOtoO+ahb(>di)K`ezild&r zaAF-MLALSW5ZF0{?K2^?A?#aTQgPcUsq#hxCN;E+?AL&+N|C*+dl&pi&eA8|AYU_~ znB@g`x{B?sG}9w6DnR3}Xnn{wgBDc@Nof?tit3G-*k7WQ+&o{5VT_VWExkVO(5AbV zpmeu>=`L9?yst;=Zm8Bnz~$)W1SiXs(YeY-$ST7dI^1IH!)(P#Jrl}Q?@{#{K7ZQ0 zU_#(kP;$m+BAkn7W)ooQ@}c%?PM{!fFG?eEAqpU7$$p@pFN7iqx+a<(deaJ~v4==y z3A`%@!=h?1>9u(74&amq@LPaG3zNinsHh(2CyMg z^6%Rl^yB*IvoEKHpf_oY?myWV!p2YV?pzgB8XHzIEx+cN@h6zLZ*r#Jy#>*i{Yvp$r8Loixz=Eorp`fIn&W6jT55HL z-=5~}#K#*EvZOgd-9x#uHXif@__b0Y9TQsp=AlYxQ@9Xv*Q#9S%WW?`NgXzKMXt6o z&L;rEGsELGSV^qau7fa9p8jSGcHwUYXRpM=ZmP$VZ&rJKCG#7E zcEnw7=Tl67Yk?6EXCP`lcU)-fP%Z?=Zx zxjrTY2YcU;GqY7f5UFvHF|! zPV=v_N=3#l&`FrsG$^sk{9i8jy>6NEMV-+r4w&m3psaOuqOS_Gu#DMN(i$m z>S)TXcPE>jYgk|;G9SUg8NzK~B(W$gRe%XeP9(GCiCb7&${P+H`ZyS-Q_*(B*5Yhv ziQ{nNME!5>`IVEGh(dgcIo`czr-19BWu8Eg6!TxTM(WDz%1{WDbW-lxO5!0mUabHM z&8c2D^T)^w;OYw(h7Muz8vD*a3{4g1S73tZF}`fQ{dYg3X&0g zGkMwLsx-V@KGM2mlTgn0HE-B^7DFM|)V7wB_HrfL!A37V1}1wrVw*crygIw7b39+) zbzrd;b-|k&ntvji?up|n?m=;e!0M_9;Z0D|4SJ~ z`*b_q^DD4le3c#1XToMMte~M(PS@`%XE#Mg ztUtM21eDva%mur6@8mm#5IMMYD}G-MNF)iPM)qG}J|KwlC&-C3H=`dZhmKqh*Yeo=WC>DYrggK)b*xME#V*McVgPLBjNQvcXAflccKK4&vi-^VeM zNgi~TiH4^XN(nZ1k!IGca1y3!eeu3Qv@r*3t48cLt^<3E0(|PKRT!k^oha_3^&Jhd znuJOzbi!fzj=c#$yeXXs>U+xV)xM;4AB9brJE=lawpW4t!a%~+dR=l%uwrL!o*oBx zZpDbLvHuA1lNxUgdT5`;5&ahzNRcG8kq+%ixNF7R8na0->}=IT#8r~@u7$rWH_DGk zXbJ7{cRYtnwE2G0`MW&BS!AkrqG|u%sKVf@Zwx9J_}I1D<;&CYZXaiB`Sd`{XO^;C z(qg8ujncc3+AL0kl@3OXxL}1Q#!D=FZqXC6%#2nT3>0R;tQJ@xG7#?*7Bt+;3QEZ_ zKuU1WP;y5>xC6_D*6U%VUhXF9>sKNpKtpLU7W1%{TX*QS`fh<2Pa3eS-!9K6Zg`KBLZIg_PE;1ykjLdaQZeVGnume=DE(U1Aic z|M!jltNe1QcI&JNzVLCMyQVOdVB^+|1aj&4b;Ury4V&NKwfqg?8>Cl-O(YP?23Gez zecmbK>x{7n0YdpB?bp0pxUt6(h1(ZIA`62pyEUg_a z9dU^!w4z1SM655TY_IPvQWm7@8YJY&?7o`b6Q`=_ttA$|(s_t9!;#CEbrYWiVG#~P4fmZ{RuiMFelzAo7Iak4@t96J;IVgYbPTKeG@-0(1qzES=k85%{ zWJEOjyMLksRCJ(TCDd|tAkutEEh)8q8wlgu_wvaq5#n&CvMSv93JujceMb=HZllBG zS9+C=pFjy%qm1fNQ?Y*x=wb3_!0%XO`NVFYatE`ZdirY$vY^W7ymWl41$URA+14VC zBaT1Ww;In0k2|muw~_>H)H?~7^>+CQ^(3wAh`<&h@ViYvF#cVaY_WJcHBFTS#V|{k3!&==cIbq@O2dwq6 z2j5(F{lo*EOv>nfJ*^szk@I1B6wwiM>dh+bxNvr#4LUPwb#dGQekAIq#O10?`%|3( zV^LfwHWsL4>oGV8)ueU2BV`%bXQagY=x+&7H8uM0{^SZfQ~uo({*rjGl#g3(c)=vF ztV(*_rYD>0?WO2EdYYG%JA8(7>>Rg;DRqoK_oh#Hc@8iW8Ki8eyPQwqa=T=Au;!<( zTv@86NJ1DraCrqr6^bKeYCo;d9>){Qq<*2bkD;KLs|Br9G^iES-*7=PZBV8`FIRL7 zAFO4c1ZU>8U?nh-QyYPew(AO^hTvBVN$i8WIXwvPtD=MZ^tfp&{i=CFl3AuSl0FjT zpJ{~TF}k19mYZ>_J|lta?8IMra~f66jXm*6V;#GOXVIu&!)n!TqaLuj_53~1|ASXD zwiDmkCoFi}xAH^M#ajvu<@5=y^fiLe+&G{?sCAF+Kvp1ndb^>1RrCJVXMh+kRW^vI zlO;n<;BX0XgnD1Y3qMp>(N^&ggX4p`Woy)t0{!6rl2*HA5xQBR5$EB9aI>%)@u>24 zJcq>Ygou{A5ZMc6DR6K zJh?M-W382ixhL2?$l)Q6QVP0l54`wp*}P{e^2D~U$>#lre)eoH>QfFo`#DUW`q4QJ zzep;~FTAqNQ=s1G!+ERGM$Rxp2oB(z9N3g0ebO7tnAgv}#h5glUh(f9)3wDvd~v6V z?6p5W6CLHmsY;vn8*qp4J4bZw3BUcRr&IU=fl&E%wvc?~gv|f9h*H(g($Upa-s$U% z`IiGGKkTo4?@#L*Bm0#QB7{7KY#OH0O3*3jbRY?$?*kffH3wN@F)LdjUfbDJp@?8$ zc<}E)k8aDv%#LVf8Q27Q^;;ycwhWvSzC-oIN0&^hpuJQPLoZ{RwR?0vdPIWb0D=qZ zGhU?quDzp~i%0h;hcTe6rFzyRddBLuOjuyDGx!R*9Az@>5t9K|?<%T8wDrvT$|M^VNVERIV3=2O|82iFT1C(z1%y@V6DVeM|G5@6%$7 z?iY|ik5I&C)D;mL3&LxJT&%ujgn2fZ)Re{H#^=>w=g5v>nY+Pu#blsl9+H5+V3q-t zVX_~l1ERn;G|J(ccJIP+w(8buo^j`}Ivu}U-%b&J|$J%*AEHN*k z@(q0Rg({UQHrNxsnnN|RWa{j@XCF^z723+Vu9u&^da-9qiq2i>cw1R{2VTo;mtjfteNVU0 zz}fU0D%Uq#bLUgiuhzczhKhMSi=TdqE!VMnpEGZ-4m&9WzI-+Iu&n0y7M=F}owlXo z=uHoeted>6H@8EV_dZ^#y7G@oKK$0PA9tp%uLfl+{Jk8u8>Y@ZcIQh$Ir@6pJ8@^C z8`I`;gHiYQ&6r0;mMvOGaxDC6HJHuQpN~`Yw>}NoZTIChW6zZ}S__Wz)0LKfym|8H zR;hV8-#+i)?dA2m$McSotU4QqkDqq~_;dB&@5`E|_*v6GD&{Vb#q;!dKhMixd%C%N zKk)O|e*ZrD28+8oy}pU)>1P%i&p-QqdAhW;L*M)Pe6|T=^37y-?fK~LF3r4*zHVCL z#*%pF-&hG3k%pcM0y+h+?`@tEAAThG) z*PR6mcH>(ScOiX?Qk;^XvCG?UzGYj zngtm#=^ulu&BS18XQ$)uJj~gRW*>4pC3JkV+!k55{yBYjd|t=i_ib8u9T?UIOuK_$ zru7<;>I6B|-sTiO`VFIE3DT}*z_~t2POBW_44FDdpmBzTp926zYtAnP{qd0Do0$&X z=UElbwS!ywXVm?~5N$1w{_>?4=hVR!Ij724sdhkPha;bHSpPd$XoDmW`unPTc9$pf z_Z`)yn`S@0yp~ZgI0333*00w|my7O8F1lH#O6hj&RI4udp2_mJ^}p*SaxV&9o4nR! z;9)1Gp0CL&z$n?XNA9jm83G*Fa%aS?rT6=2tFT}12w(uJt{y>*c3TI=&G$5>#n^o? zrFG@Y;5)AnsE6JjElfn3U^ZJ%ink}C%7uT1dBpY0b&1(~TN>I=@Aa!{cwT-oalu+w zbg#c#wZPJpzxvj3#m3!T^QVXNXU3hEaVzAa%ioP+%vbtqgD4o~SGo08--+`8Fazg) zuVM_2Eb}xi00{E2;S~;EHUpwl;|xy%L55hxAt;fAoZB&`(nQ52H!$y7Eji?Xk2&%^e~l~zYAaPV zbgeL*z)OqbDxh?s1uBuwy#if4p@fo?HH%@II*(TN4wim}eeN`i6B zl?>sL0gdP?MxF!qaWM z!UIY6fRJ(1EYeAI?)OO=Ad9cZg41-1S=eydAe$Ko0%1)Rb}RBAVi<{~HgRmJBsJQL zzfe&)k+0>+!22W#ke@0b=$%5qq>3~tkuVJuo@@m$$n{gW5D}S1K+DzC0H_xIBgNoh zOgRXu5uuGth?A2p6x0U_UzdT#A;FtA3kYMx&@FLUpvwHg#lauTEEI{K_P+%rVOYWxN^cT z8O`GCoXPgzB~T6obNgvhj4qBsqDp?c2(VAzevSN3gn>{iy)c- z_UI@^1kcs|GvSCfEBH@o{PRun_Wv zM#dHFI|uk8A4|>lyQ>I$Xe>@2AG}oRwE&xbIDK8dur>NZ3ko6;n1l%rzlx?HiZsE;Ovo5A#fXF5fwr4fV|yj!k>? zaq#?se8k&!TVQ*ru67YEMW5lI__ry*!4 zhzlQZkN3^|lklFI`lq75ASfbc(tRs@C2NdVUUB zoj^e%$7phqZnyBC@uGon+VR+uF@D&Xt%%O+kyrOecOA5;*FC?)1lH`x{is=GT?mABeLF>Df0pP2;OSiG0tunhcipo@Gamt0h$fS2*^U#* z(I!gFe*c9@x|;tS6s4(Yp`(_F($E2`_g!kRlS^GP98EV^lIeG}xRMVnndLWFGRju4 zBozH1$@Q-%GSxq^a7B=Wqj+lyRC)_skP?o~-d}Qc2D|%v5)GXFY#E6-wd%x#zmS$w zw^YgiA1tuLo061KonEN-JptI{E}i_Mf7*l6Fu17_AR|OGRHD(ileko7K3LySQupwI zjSbjqrHDSRt)Tc@yKSZ!TO$hZ#DD_!c-s^jvBYdKQZz}V+gevlQ83u0#c*mxIPKPV zFMfu;Mt9ryo>qcGkQL9igDD1I$l1Uv=?NtlL-+^wWSZrKV|I5vS&c365URwH9I8Po z$-q>CYUNpgN|F&&i^T}V;{JmUpbheK(>nrokz$6B1}`pr)dkTO8~kB$Z%9++zV^n$ z6IEQ(RM<#96N3U{20aXlV#4+w5q|;8ep(v^@5TPeVG1y|DjL}uu-1)q;XrQy=cv1k zam9lKp!Z9KYxK5t@dT{hFf?Sp0WW4qfv~e1La8@K-NTG}kp^kdqu_){tDFI1%2RgR zC_+(dCl5l?9;L!D>`{i`-%z0Db%?E~vuce|@Vbo2T6U)@Vr@7oWAQtya`8DYf%dBv zmT^?#ctsXTy`hMwV3A6o|J?3$69@dcT{0T?jg{wP%blkX`J^xNcO9a|Z?!VACsrWY zmlX&W!LM;*w^;sGM4fYbIomu70(85&%?i{uZz2lm9DY7@EgPoX- zld9+SCwD$rF0AgA4SMd|XOqUt4TDAEN)xkA6ogV*7!)Zmjjx-30m>^tncxCwqUz?c z3EBiI2xn#CuDY=E8wFq;Q;DML^sw{KA?c<0j6m-ftsz|RhO&yl&Nx#L!N#Z*4cNp? zmb+Fh@^isp85P8VN#nuJEd14bVHO+21PyKS^)`{h0~pD*DtB#UOnas{!Oj>M${9zY z!9%Ewv%PtRu-c2FBY=c*aMGiHabcxL{^ELOf+eNofyI(i^1zY;Er6rv$@DWJ`{DIS z46`U1rYsS3h^Hk~eh?$BM)YpOb9PQLQ6S2EWS$hybj^*UMRoU`7)qj!jt6B@5E;Bg zQJ>s(VAp0_9VDp9^0FXa@6vL&-u~2bR{^f1jBvlE7!T^kiykH6SXw?PHa|BMNx*Z@ zET~Hk?941lMX)@n^AI%nW#P0VA+c9Pk-A{kVXzlP zkiv06Jk$P9))xL?E-%!mUoQlZEfW!6Uq`iZ1$6Jlb39`d=y5!Iwc@~b#mQ;}6xy=E zTBkQBIY-3-J8PdcaP695W}xTW-;^YOL;B(8#x!$XX?oBLb$P`3sA_WDmeaW8vTf#e zz=*w4HP@(_o{jUHRgq4aikkWLNb-SFKPNpry@H5Xw3U|_D;SKIkf}k`RP2Vhi#Lk{Jm%oM**_tJVK-Tv+;C%lTwkvw zMQG;Kt{)wrCLnYx{{)NhT`+CYTbwF_+bRufVzh>R@FX>sH`Ba|J}8?QI4BzH(nGe6 zsZC3mW;c0c3m@`n*3z%zS(h!Vb9QR?#T{#0jQgs+)FsG$L=Z`-zaF}UNIIQ@)j6c9?s8%k?wR(CqBJICy8wPZ*)~u^&uo^_9*vg=ZMAF$Z zcieX!k1`@0**km=hC(Ttd+y%rJYF1|)OSD{RH-TEh)Yh5W~-T0&o;T@ifFrGp<7aI zVV;JbhTg8q>XT4x0h(ke`)m)NjhRFCB$TBl&gO9TFIq& z>N>DoeOTtL8E)feTPgdF_9(aDiO50x`@B-+zKeG9^{-5T<|e?&&FwA}wV1?}HC z(KnhsKtMP?9ICS=&_NkY2~aujgd(SKci(y3^$f(+BLMm^gA*MTV5jFazTLo)rJj}e z8t01Vhp4*C?l@Rw29Ej6P)K#nchFFyoavhXbvt%dcT9K2IkVMX=z6@;W9)UEYOc^! zdn*Utezu$VtMM$79=ycP$VvP70!ENO>A_v);W*<&_Kp8$f0yWWtuCYxsg!hhfjBJ+ zruTj^HHkp(!0LQ^0Oi{g;P-73g?#|ngRD{&i@^2f2q@RbfbFpdMS-F@a5V}sb<}Cs zst8LR<>|y0O>NM!(jpo1dk{R{z?;>}nSP1F4p`_y83Fy4j^-!;+1%ghK?f|B7)~#u ziUv&<+*||R{hp(6*1cYLgH;`2?TSP3Nk+mCsk&-b+W`x1mxb#AvcWckT;)m0j|v50 zQ*^^b+aI|kS*5%IMs6_%lxmTNVO8u4U?%%9-L?4Z-6`QZ=F(Fxa8~n-2&QjxxaNVzmw{9HOZ#`Zs z3~gpj3W=l^`MoLd?^8+QrG&~u?aBj~Piv^{5$5Ku1}>IM&HEQ5nTaeXLGhe^{45z* zvNilMP8f-gfe)v)9kXEVX#X>gvY>Mg=R3V4EiH(S(L%-?Ax96+%bBk$s{k&xEt|{t zR#%U+#MK=WxVxaYmjA;O?E$BQy94QT%{WYIXJevip-IL#|f%O}Bh|g8tNf zRr_kXv7u+A3<(!bZ#^evY>4?ZYf~;l2GV;xBXBEI0c(Az!o#Xhn};n^-CFBH_Z zsf>#kO*h3W{o{lxhcU!E%Op_?e)@`%;(_?;qay#?wruILwY`&VPk3kYE*<@naQOyA zH5cA-EMUk~n*lxt7An%UMrhwP*iaDsvlFQtT=!1y{BGVtoVgrc;y^v6b57W%hXh_J zcs9>$c`^cgz|fwSMwdjCIz7t1IC{aVhlKz8xi-eB6rNNR)GE8&5VupWfPXB9{1|j3G4fRi3qH1fu&VcZt zSMj+w8b+l_SiR9!XlI3)6`!vH*eti8lCg_W7m>6k2dMh?xaJws9p9QnG}5uj`}p*> z$tkc*tY!FXZBhWR5y!@cp^1S#9KC%s6g#(XnC?0!H#=7%>4!+p^}7d)!L&JtED9v6IEl*x907x_sVL$*hrcHn>g_9u_MgcWO`th(2 z1Gqb~GaJJmlvXUlfN5KnLqc;W_K!=jX?O-?kUP49#&V>>DAg2h8cOG?GAGufEVvhE zXO7orhTh(ukB`A<9!mGIsH)|7tG!n`F_d07yW<^GAnXnteE0Zb!bA!^JoGL zV?)#kx$2?7c$Xpl9U$1@C?{aF5?b^?7}PX2M^0LnwrdG`(q<)6vYe@|wW-rT(o`f( zD6s*Ig4ARWbalS*-pl;FvKCOPiB|nRYQfx4%<8=C;z6GR&bSRnLqY@Iy#4`R&8|+R z94@4Ctt&`(GYueF&W~qkQbjLosc8ee89K2K-wHCG+qjW1Ji+7#&PN_8I!bsR+Z$9P zPFq7TL}Y?Op*Qr-B3Cdn3t2imRqrJWbCN6*2sCoocZA?xp;l*tB1o3(6fH)^9=y!x z*g(5T#LUp>G>ly?%GqdDlFz9{I#K=^^<=p%#yYg7SzQ9N_lColmZF=uJrK{Z-x_P9 z`C7ALZTwDY)t6DhRX=3P?N#nPXC*u(y-p~U2BsRM;nU|gOBh zbdmqK#=AYv#$v@)h>yd50prqvE46`&@oD=)vbNV`*(PkNx+FIqTS^cj?AaRbUbolX zi8GSWo`LKMo+ukVx-GTWT?bUmiTbsEFHrnbKhUZ@y_N*<-9f9=0qg^NazouZrR*Fp zM;+$5+^9#$z;Kgo+UiN^z|n;0+#!RK+ zHu!+%3=f?Jf^B6Vf*Z_NI>^b##it}qn8s~GoE{(8+}b? z#VN3&{iS;w)}xT5I39c$&OrG9tfP!$Kvq{T?he=*z1nxB=zlQJo**3ojwdSAKV>3u zY5}uuej!aCGx{SO34bDfXzT{DKQxJ*gb^a5IFJrP7-d*WJWD2Q;hg{M?hyrS*1h>z zFaBh2>oO%!=K>ycYjc}b7>3HsS);si9#xUqZ7AMoxOuI{Bm6ap>7312V>5qK?Ou{f zJ7oe$F~AyQNkC&$Trf32Qby>TRCmg={?g{75r5#@P);#4fRkwOR<tZJYgf!jMJ~l2MTAqvEzh#@$fWZR*klBxQ3++F*^sE{Um@$}sdj7;DTTd$ zFlUez_jYYb1O$)_#CISG)lM|T-xK?$5AioyABwk?J}@NhMOT&Bha$^_MvMHe1UGhp z5j&1{JO?VS^AFY0@f6qf^t4?wS9T~+iT_F=Z$0oXyKsCgIlSmG- z^#Ib0e`hkjnlkBxvQ?5Ck(hW)A|i_oego0$38u#lNX5z#ZY~Ou!{+5FymeowfMVsfCdIn%J-d#-BLU{)j!Cs!(p?=tNvEAM0>ZPs$??VmvLtm*1hRoAs71)ds561A1?Bs zASJis;jVrMkI=dKrMvZJ^|)Mp78E`yXzjaeg@$v#3ZaADA8dTUXA@?huH5YDg`*|w z-Dp`>d*bToKFLi-$K3(5MAatOqma$Kw9!vGwV-E{3d2nL6gN6xFy&DA(_Ff0AzOX| zpqESTJe6%Yfl8p~^N;?wcYf^l_7_w_<-fwj|KD={%4;m`8LD_%I$lu8J3wPD(Ryqa`<$pGABx?y7w=X_yq zuU=`e@jefsL2S{ZvGL5u)hvu%WN2bcsK-*d1Wyb13^;xf+MXh?6&#{Yk1k;Mg~v{& zBa&wmrliR5r4fZ{IGyZ{+3@rroh<{@La6TN?}wf20rYF!{A51Y;2KCC&4`y&$-WZa zj1XN8Rk_cU3Qz#~J+-TuL&|I0U;)(n6@MEpf%{LvuIGQ9KGlr`T>@e z)#J9qP!j-{s__R5lDAKxMv&^&8L^NwL&^1eH8?~}QXf7le?hd5S08^Qg;lM+OJWF) z2xU0f5CcSK))v|JoB73Aj8YJuYsITj(48xyOMqI=%2*{hRjuE@U`|$oQ)tCjYqw6f zq>iIPxF<B z?(ZG!_YIs>J&raeOq>OpdyDTgKNj}ENdn{KbViNUy$?HgVbe_^i(iGlIz0LhY;Z1osm17UBVrsFO zn-mmcBq!*4qiO^D5Op_KAq|d*_f4}70E;@$m%wM^T|iL5wI6!6MoILSJfo6#KW`gJ z$l&?>5T73(Ad_4oix*%-WnwOkz^QwXIc3-Fa#O5e>dn?~5l10b&?LGtm=|FF^d&=#Tv!SXObVr0|gNHoRb`g{6O2rr>eR8 z9%bR?#L^DPkpdMrEANd1;58Zk$HVU&?xRn&*6~;0>0x&$dE(P(C5N;Q#n)O*N@@dS zc%oHqUK?wuns>+f2t*y3<=NzdVsI=~O<$!ASV)Je_!1@#dYAf2uc8>h9*7W^jr3-*)#{^bPrpS?$kg66^e%X`GW;*0;x z75-n|^M&5}H=EI)Zu39m9Hlv_AqEs*{0sbAZwy+A+{Ls;a7?H{wh_DiER)kMESaSE zO*_<^of)kzS7gKxBqzJ?oR7K1sZr{^VhnaO?MFo7Y6ZwYGia)fQp`gp6rPKB&L4#) zI9?*M6dy#*4o+!o68R~W_Jb*vwkA@g|K>V9VJ9v;x)z@HfYd@co)&L=Jv+ela(01@ zH8rChDw>Vl74q0cJ)$J6fIXT#_Mk>%JD2;T@cn6My3NERlFA9x<&G#rYY=pX9Kpcd z9HHutMS%I68MGFggT@t-XdcRt%_K3gVD5zcXkX9?|FWOH9-u#RYsu-OT=>F~Ep#Z- za#=GBT+&-|&x>F?5;LpVeqdFUiof!}Rk(CoyV87i7L_nUb%33kmnivE{4$v9@K3uzvlLf z-obz97^FG7vNwct4`kItZhcZ=GxRCh;daZ357-A9+hpC2 zh@l@k+Nv2xmqd!VXkE1AyJDvyMsNVWrL=gxWeO*fO2X{fl9)5e(gzecF z>F}2jHU*CHl9b3DW%4Q*vnm;=xe($ytAk0E3r`0)r4xbenl}c+Lx>~DVO)y>K?XI} z{Ztl-F3*T0lk_SlHzzLJuY+V4&xFxCQ=a!x?u{Ft*s!rsGs|jUGSMWnh@KC)1WQ^( z6ycOl0T&ryw8?~)Uu<`!zq5|f2il}b^{Be<$O5Ht5H%B8vaWF}3y}GKubZoAyq~RZ zlXU_#U0`-x3-1jEIu*89d;e_SIQPGNAN7A{PILc+2$KKjrKbSL`~>}#j2pB5H-_#1 zn<5c0!G9Ch$Itz>Z~tj8u{Z2CMsIlqJ`4}S0;^32ZzW$0Mj&w3EMZpVusAIN10X0Y zNo!;is5*X^Sbn@;yvs?+In(iS2>ORlbzDzhOw%-dFJ)f?3T)IOS>wv0GjxKlqO3-4 z);gK+&8eQmoIW2|AeYaJFKHaytGKw zUj);=lcoD9`N$%5uMtQ;mk-cDw?Ny-Mgchqd6AQ<5l3c{DNGYkPEP;Z8zxSGXX;8a zFu+EE&xebTpPQ49>x<{p)$Q5u+sc&Dt_jxceMhL{MG^G1OaV06TyOv3Ww6DiAuKy^ zPquS^Wd-8j;3aK4K)>ytdaHx3L)Me`u&uz4JM3?56x$k>wrAoedFZddE5>Z>S-$x{ zYp2hw*3r3sH)O+4l?@0QoWCqXNM?L*i>j$F1lh1~fbvl_74;QG1_6v2cG{$?3AJzO zbE$ehwTi))*fiW9H)nM=+No%Ng&vCwJ~|5nGJjM@4dxwXOJj@l1Of0*E0?3$piBo0 zOJ^a$gItn8j#{g#qZLd@8v!zCHqy%JLXxUcsL2Ukk1`Y{RR?ucMkO$++9h3$8=$Ub z;y@ANmSZ=|uOP-UpA?2o1~qXLXW0^^ard`Wo)h>Pp=&PUl~3Cg*qM?3LrSj_kZ@#} z(2JSr;9X@EVMefc2QQ$9@99q7pazFRiSU<3FHj^)z63CVK15JLG)vd`FPDf&P}%&1 z`5!4d;SZ=5pimxhC19_>J#df#O-5kXF|LO5DFah5NC3wqGh)ENk0q<@#Mc;g?(VR_ z>46R;xb()B87|fFB{?0ZEDy|P+_Gs^L7oEI^Roo-a|bA#qlopEfa>03!xKP89q7q1 zJ@^T(ETgF`p(Ho`CK4eH>3j!lak2zRO{mj$&Gxgpp)4*kx^VsQ{Ql#^Q5Q{Zy2T_# z8CjuUnp-9mu2Pv$BU@-z#Fms3CF~(-eMj_1%_8_ioN+$z%)^YpW&BTij>ZbAe(d#5 z>6Sp;+z}YJ9^4tHa}yR_tG|g~Hv;b)2$%2_K93#NsnUhAES?TV>t8+uNlDf*r0nV; zc#goX2rJbdmQ_NZCm%(N5{l4s*+GZpaN0D5T+IR#bvaKBgyMk} zD&WQ`Pl3JU2MwGO8ZRd}F2(N!`~+IlnYzb4b6X*Hy*Ohr3t>Cg z?y9wJx!ehBTkxy)5)ncT*bt+|raobPNx8rIHYa8I@{LGP>6Kt_4IkCcm15akjif*5>AK*nS}Yx5kNQ(E zTumc}INZuC5A; zMa+l*b$oZ?%CnV=cZm*19o4m&In@GtVa!IhdMPi4uq0wVW_ z->E1NmJ>66VqUbWOE(sv-Dv#=$T)=8NEv2uH5uAahGo{xn6odJ8{8ovcoR8zUO=j? z=wOH9aub6SS}e^kVy$CaIHhA7L)yJj(zZh0%Y_^*H#43e#}&v<*ftXMHths0b}Bm1 zY(P6VC_Ib6bp@kyVxkO*W+Cjjt8=mAQ1L+ue5Rbj#&|}?N!nGUV0g|;6&V=8S*_nm zjiiy=L^v12DjdsJUzM66Hb!5OR%;b+pZj@5$S^;NQNo0K6Ewq`&56Q#*K5wjH`9$A zh8gpVqfxFMUy$F^asSLH#}!BB=UW7y>}rqhO&1R8x;cp|n6*t}sSdM3;Q4 zZiY#cucsNNM4tmw))v#59Wr^nEJzCv1fgXV&5Psni)Y%sT883viqNnH-Ch#IU`hcJ zEfx9!HL6kXF*j)+E-k3T+cqltI;)&5KOkK|q2wIAYH8s~&qO{T?{q{8DOqLl%N&Wz z;yobfmCh$+h0WDr2fU7YCXfH}bRE1|1IuGHn}K9y;F}a(mDeP5tM3*LGL&iR3>u`Giu)|W#rys%wz;64tXN1= z3e;^?a%w^Xg;u&k!;Xxr-L|t=!U_Fnv!ysc+IYiEe6n#ruysHYZex29jlpKY zs@GKR4cy*o;trFB8o?-$=jE&>2S@Xxly2Ka*L@HDii2h$CCD@wcNP{3zAwl(_U1kwQTlQE^hDMYesG{wz`4qy=pSLgAlap(aww8_WLB>OmT z^i|Mzal@$Qjll2r>R_qRyluQ^A@5HMhH0*R{jUAMAARRpZau8tyhb}OIo!fcFNERC zD&RsfO(jui>O@SR0%T+i+`-%-TXT;Wy6rxzGrxML9)doP-r;R`1y8{6(BWyC;RM@K zzj<5#)GMR9)Kq0mOU0SJ}`=0UE&Rp~Zy}q^yv^q(C>?Du=$M;ZlZrZ$x8^cn5 zE|{jvX3lnf>O%*H7@7=Z{;#pWfm+to6Fzp69Ax=pjgcB=miP{Bz{}RxZ?*@|7Ho z|KF2dQCkNW&wmqp=Rf@wd;e);l&9o|7!bPE&-gDIBoI(*3&2%SIS}+9%aMe}9orUn zR|oWj5zqRJ$$d)|R3mRSuBX3W*h!7DrQ*lyaj zX!8}rUXIJ^+DXO}7c7O$)pna$k<1Ny8-z`$o(+Lw%W$R!7@}KMinzGXKvf5)(4_?e zr%h{Nlm-`0b3Ls@Ja+XH`!Xz?7q4>=>f6Iq%iZol^?VQ+&_YQ+% z9!f?X@F;Tv(};q<4s*u4ioPjWlzwRVT!&pgI^U7jHG;`;jV!xj&K7d_gq!8L9GH{r z=FnMnQu=PpT%Px>KlWfok49hy>`+VE1WF->EwjVcgVGrg@u3?_3w~5aD;xcHzg6ka z16bXgN?2Dhh8+iW<$+KSCOG%V$E=AR{NyJGkMlMmhX`{KvBM=Bu2=X-GO=&Zu3Imd zSXC`d7o^YU|3O9x|33m)?7y^i|4BmW&)NQ;@jttnZN?6*-Itr8eL-0MvtZ@le?ZX1 z#p&M)YSrWO{k<;trwvi&{hOfHR>BiJdtfk6e>j&46|k^j{+V62w9!&SO_Q*a>ie~; z5DpSVWirg;{dSl6hSSXmGl($eL249^W(>(Jqo&4))mZes6L;Q>IicaWybD?BYJHr2 zly^?%WqHGTcmdAJ%4=c3s|SEApA$)om^$rL4f1Xx2}TXwMgUJbT&2K@O$^=row(1wZ0_Qn zkv6FeDX#cb#O;mQcCf?LGtd_YiHBAsE$W9-QO)80z{PllIlApU99=r}Z9$@3nuc)& z)Vd8NkR@5nkJfHpOuxefT$m$f(~9dTav~?5o4yJwb^vl{Au^<7aTLGlU(JggGCw+= zJXj1rG%SnhazioKo#9;=nE=sMqkoK_m{5TaY4deTetPr#vbcVTdnnfFIGuPR(e@tl zruCTS@&Bn*5sui)|Ic&F72HKP{Z(6;NBD2`mA}ueh^d*OtBs4uKeYD#rI6n*_SY2u zX=l`BkA`?sS2c&&DiPDkI0MI^cscr$u$&N}djT$#+=j1~?=qHCfiWyeCb?D#9CBHmwCa^v(1w}0+;RuE>+KrNXN4|d8jk;CIc zZ=FNui*E_@%a58ngcQ(`X(oSA}9(Ik0Rp9~{R!#9a5^6~$^@G?-71Xap|3ik+ zT-uCVxk#nz_W2vr{r2S?K7ui2G-$%2l%2hdeWGHq{Ia)!PNJLj_R#AZ{#~dRW*GLo zQZ6P9#jz5~wj}-;^+o+IMf-}k;#R~npw!O27j*TI5d3|rd{$MQQYi|tS#`3?5NiBN zrE}}B&QJmRIG=N78q+po=$ z?yCa!pINd0djb7JdGPd4~iuC)YE%*Qw2_KqfyO3M_^B*Wu~X3hGQaBO`om! zvVLp^%)1RIRot@q`PEP)bZEiiJho-9kLlMe9i(=Rg}ssyr-@8B#(4{pN^;xDpcY+k zuJ+egvIm;SL$ZKfQH*J=vSF1skYoVj$G6Y-ub|6-apko=!{mcvhKfUbydKq*@h+=5 zcZ5hOf6pRq&J!}FpjvF@pKDLkQ2Nxh?gdeP8Z16IzIMC`gY>VUo>v6-^j``J{>f)| zG!*OE>e*_N=a|)5UOu*BVofW!EYyvBhCR;SQc^3I=f@NqhnN3EmmRWrzfsh}Zr|JE z7LpUhp=8|2C&Fa6dOD`ebYc0jbN|gF_1pGLnE3_;DFi8s1sSY(?BJ|PvGZx}_j$;TRNSl$lY$aTb~5H;^IVQ`?8BS^CNW_*nzit+yaDI`0*akR*e znN~fJ?hC{&%$;iiDdh?`mqNreBc#!{aLLu*1`2`Ck0Gb&#!HZ8bVH^cZ>*fxFi$_Q zK!0#H{7#Zx{yoxdm4!QV&c)TQmeT&x#;{2PLo6u?UV?85BA3x*nj zuYs+*y3Ob^k#r^r`Dy6;qhezUR}Stl;69KbkR-`{!kYwDBpGxjU;|LllU-5V)SF@?0+Arv7J|aVx53LdSN)t$ehT`W#+eo!LVq!h2UZKG69e1p zXVv$(qYLG#LU-tUyb3Y)Evs+zLNGZWs^8mxgq)ULyYw;HQUSlami;zZ5{H#0lfD~v z&^CF8-5gqfP`8U;#(XwPfNq+9fYhOYF8i!U(y+Q8{U9?_a>@@pT)dFj%60sE(T=FN5#pO9e=14>IG#_8)b+SrbwBVZn*Awjyg%;Pe$l@JkJK&rpf7f%9@s zUfS0jVv?_=ptNEU3ZLYAddE!k+QNpFG1}IXzIL!FK(!}FDcK&+vQdf}^N3={mjt|& zc;T4X4?w{00~Eoo#Lqc0U+ebZu>-L8NoCJtb1CHDo{avg?H1iW_avUb*EYWv{A75A zjBqVM{Rjhj=yH_Rm4g%ILmX%U2FGiva+@ z``;tre*`favNHb@$4D63nb`arwDoTCUu)%0JEEcgH(bIu_}|<=8AB536&@5a8$s6_ zYfQ1Dc`0s35R*uWCvut^ulXh#QMuLjNz~XONP4rc9=jIa6H<(Ck<0vpWz0FoOkkUk zNB~)jG{2jbWJc&LoJUQJ3_}Dj0?s5ZtjQ*r^|LOkIJolWzlAd^h(WalT2tJ|e~@<> zNStmAy~ivk(m}%p!9?G_dFl-~zY`!C;4{c$j31!o=F>JSkjSHQBd6u}l*HBRyD~~dmllI0f}svM zt{((lc#jca>luJTIs5bu;dccz;wQ6$zyZYCCQq$`I9L`r_$HpFqcsiVT&U+^VG$)d5O#DdOUDip~sYPbO^iu`;05h{!&`^`P*Q<+{J}YHbz{FbH8PJJilc#gI<}|`) z3Rtl5g9;6*${o|Li$inv*;y^V*7A z9k9w&w~@G2oYBnCBfc5DOv+?rh`Quv#e2uR4X$DK6SSGA_;=86C`?1qAE74Oijip) zvIfMO#hXVt)D?b(7jP-O+k9c<-!t@5gR;Rg6-bCc>$ZO--bFlVoN_f0F6Hq&`7o6 zGT~5`nGFslLJ5{wxOg~t{(=&=>U2Bgdn(0yh8eK`Y@X(%_eSX92(>Y-^T=m%-VGW%{Jx*3rAuwX#BZ|Jg6W&c|wu&|8e$~QF$iI z+AzU`J0!TfySuv++}+*XJ-7yU2@b*C-3jil!S#J+_MY{fVfLOg=UdRLR`chkuP*EA z>MBDK)uLi7hOfHd8FjT{tvj~!fOEckxcj!Mn~0&@2aiy=VSP~Z59EwZ7(%oZ%Q}OK zMqFvgUX43KD#4w7Bw^#kw0Os1OQ4L0HoooZg~oMY#0i0V(qO8265*Ezo-0s1i2jJ9 zQ@~{-U`7oHbDy)uVt9~hi%b6)<_{@_D^ZSJ3@0FRuSu)BJQQZIeYr%e$-!a>%Pe~LkS6aK z%-6`!Kw38+^!d6TiO+G}0Z^xZ-j^swX~$fwYjmHQ)X-vuw9ck`vD7YBBeicbprPic zz3DWk{q|*$0o!3@mqix|+6>wu(ZZ{=oIKvhPy6K$JLXmFGrBaY9Te8!7gGuUNMF|F;vNL zm`|_YVAokTeUhfsTB z=JIlnydS5fSuF9!$zk(t>hy>Byt7tY*f2e=(rGoyx=suDFB{w!9tv(K4&l-~L^eGf z>C3k1!|#pR!E~j~U{DiC9V=<`Id+s&VO^(>~{7)yO}j@sh2(L@tc?+KN6& zQ-*is3eYud<)R8lc}6wx4H(T(v^%fVY46PpISTkz^B7msKx?N3zg@5Gc@TD-?Kd6+ zm&_l$e1e|R{Xs`OF6@C9;4lB<^jiW|wp=&6*s<{rqQAVQ+>;&5t28N4*XA}7C^ii| z-@QkBj1-mhILi%Cds4J0WF_*q#u&q15Y$I8j$eya5HwtnYHO`N`g(#lNV+FTt{qoJZcCCT7|0W0LIF`dj+ ziv_0(^)&b1%qvx)AYSbE-0y8w0l58{u%vBm$1CxR6DtpfltZoUG4;0-BLj>Z+#OeJs+`y-cL! z5@f^`9J*^{`)Jrg zFeya_=YG1&%^uvCdsE2%7C$!cVlPF6tAyxS0=L$&Sn0KY9kJkHOcg!5O0AH_1@`?O zMCmT<8ae|xTP$9dI#&bT^$1DRXNYOzhZJuYf@t#3n!&78Z_}=>9A3O_ zK(0isDYcniFtRAq4C>)RlE^$NjRd?)nV8pvLIj;I*^8IdH-_upKW$SGg1TXklAKm8~h7)t_Ixl-oT|`noUrpzD zYxz!QD3M$%V>5;9;zhHsKIaz%;c;dj5$&jucosA}qnn$fWMJd%o5cJAG>V!VmcrB2 zUq6v6Hq)pzQ!C1oaqw`nbARxQrO^Me%k-i|y%0!QUc9k;A9|VW(MmE9>D|%tlAn-2 zkw_q_3c5{NwL6j*e8;M~9Erj)-f+4%KsDCKF_+%YtQvWMwJnjU;7x099}>Zhmd(V6 zHpiIvX&8e>@*4C*<>mDz+}8>MF50OCD%-wUCBwuuxEC*Xf4P#Ju}OdXQ3S9OqEY`B zGM1S9e4not8RYm=pqX!6^E4r=G+@WgQLX7C*WhGy=@WZVs-wWDYU*m`5;pP53Txrz z#M`kO^+ZGoywF{cd#1v_GHhv`A>AzF+J!&x6A{acudB7YjOu`mIrS_2I6x9)5;|E% zs3!}mdSe%&ek9PO<}WlbPC$O5L@rnV#iKw;&O!|3rZj-2-@RG&K~aV!hpqbfM}7Z% zMJ({*mwEap)1G@vA@`}Dk`<<@>N__)Ng5t>_{RcmFX!}T3dz@~l==?m<=0s?=Ohkv z4py;faa0Fran68ej%;*#1U)ct3ScVQXrCooH#zS6N5uv5B&Iuo)&z_WEyj8;1`e5k zZHJt03pjBJ%{Ro7g;tT;mCEvYU9_ReK8G3mt=TdK4}gVx_*&B)XwVuqrcSw4#pitZ zj)Cc{a&I{)VcJpFGzWB;7kSWr^3}(yHB8K>r+j)I!N^xBD#)!l@DP}IZyqcNMw%+F zOA_wEaqm=-?b|c zLFZH`)ATV(?BVW356fJDzk_hsN925@gWKW3XlYD;RLHKz@*<7fm zzUWJji9k99qG5YFQ%jpg0trSMY)%b9bf~N)hNzr9V$`nwst77(gYp#|NEO^>5eLVB`%5O>DHSxbj7q)yQMMt?Z~3AbtfYz z1SFG&Rbz43&;FRhe?bUFF_7YFjEJ%OX$qO%x}MXKv_mI>EBI@13^ME-cy_kSB1JZh zo=$??V0v!~E`kSeubgn!e^yB-R`vQO$jt?swNV<^>hUJ}Yw3s0!NuLXJ~sh+N37QX za~KGS2mXCp?4Q-^e`zIG75gtG`<}L`05UJxepj+7fHD=jk|I@4b=J5r8vG!=fLCkT zeDa`x61^)DxqJ%s0W5FrfDD^+{D-Ma;6ZIat3>WIwZ!f(1LNy^P#FZ39rV+wnFg4G}6|JOTv){`4tF%|&1-GHDeg5hkK9`IBK&FG6w3fk?bI zHbA#5`ITRQ@Fm4Sh4VKaUT1x7+m>c^TzNbLTcQ*Waog5-kb38q`{Zd+xe5g6DLi1H z$tQ(k%;!1vWuIEwofBJ-HK+KdP_gXcH*+9^ls-X=)ly8zm_YkKmu-c-;DrMN``gA6 zwQlS{Lf5iWEAg7M&;*Y0tfiApFNn1}A?9lt;_z9eIHn)aO^kbWP}sV+jKX{)a`f=k zT~e;@CLUHoy8g-c7EqgL>?;>cpi;mgf7xMS${+9h-F7O-7({S-@j$=|4`^t9T13;| zhFFQS;2YxhL*Atq4zogQuV?-D_#|K~8_-npd}S8SR&q!*f2YE_=1`-D4+1dL( zIjQL{TQ{<~J6J;N^f-h!IGmlI)Gl=&+Bp*T(7?^LE5^uH7z>fs9v3d9$2xbJmo9xC zxBFbSenUG0&xtHlt;aSGHebOod*L*p4WYKWRB{l0wdb)Q>_qC53>TH4*g#`#ZaK57 z<2vB^0?zBu`8@^b2mkV|7j~b5+*MnR1LRVIxjU3q?W9gf&GVzcvc)PsTchmCuzCLb|wN(jS>UpbF)jX zlrbDqc*Xl0=*n3P>5!~}HA8weE*a7WEyA9#;}#^3H!cX%jMC({R1oH@H+qP1tpyW- z*JMBJ6P)hS>n-6U<)b-u4bOls#2)N@!`?kT;FO%JuL^5u{-shxQGAiu&oA%ZRjeE! zL~sL&Ww@{b0kQt?q1Au+aldI9Giwt-n+0PtlfQU$c)9%l3YWa2s~X2P%Y%q-ICyV8 z^I2q_`5D^KOw3n)Uk`-1+xSLgrgIVIcNF%pg-bovRN!CNIY;)->>uKyET(!sI1gq% zjE#;1ex@NTU&38L!8T=jAS}6&PE!NX!kAoqF6#Ehpy8@LUS3z9TrTh+4X&ZRyVEdD zYZEUm5nVssFFcPBIdfa#s4WuCrGxvPM?5$(w$)di$J>I-y32#A)R1~}#g1MWu<}q> z!9#_#L3YzYN(-po5UOo)hi$+MAkJtZ6U7eYL+MGo}9 zxkhJQ10O0&bRJ;|l@!%wZyJC7<@qc`FwFKo~X9PuHBWrbXE zpkq(DZJ0QmbTS2orv;6H@b>We4@{n|-}o_zE*f}OM|p_?!oVLJ`7&I!NdvZJlZ+ue zDo%R+X#9HKAQ1TlJh z!^5I-F>o{n?YvHMmf1kLuBBO%m*?y`+cYLjki85nZ^n$xSF&Xfw&qScYwk-Q;HEDS?p*kOF&-=nlxmhhBR5D4(C%aBWicW z@K6Js1og{6Pnh_Sym)lHmS3ei78?8QYtqJ(bgVrFeYt7bO0UV3!fe1;s=^-yWK>4R zEZrcII+if@ZbjA)epTqDQPx6Kp>}@UC)Kruu&+4U!0@2R2~pFze~^H%@PRlW-Vi9i z(Xb5>zmSEu0otp?=Tl?~TGSB_r^yq6jB0$#Y(W1s;V-vw89>_-v^0aV@>eqa>8sKu9jO2RgBXR&cZ6gs7cDw(+bO9wp+S=>p>K z%R5W1`X)Dq6lcp=IVBaTN}oV?A!8nZXvC^w=J#N_=k9sv=S#*LF}<#SIUD$c0JR6S zg^Km=OM35I+;lXho!-PUjx`>%BQzZW6VqwZhGSJTC(2iy(#S!seh(BVp82YXdJ;D$ z^)(8seJkmb<_UZ<;}oCBB8cTP`%Sxg{xH=3q50Rub|uF%zrg(YkA$N0Sdu#<>0&!d ztNBf(wv?nnSr5l_i(TZO=e)=%--v@c7>3QA1Ghw36;KM9aUSG$bO?f6c=t*caSOkT zkRM3G8-ha#!%&eT{Mx!h-&KHV!vlKgZk{n$9ddeq+hAjVm2U6b@$l-^Vpb+|V<9|2QX z=?--rcTV46Rol=a;nf436)Kj&tFUJLG&6d`vQl7eNAm{m!k(;EhM751x7@Zx#~xzW zvXDt>oyQ7AMeJsxg=S=xS|sYSfWgT9SjS&i?`?s>Ji`S`u(KS;pI?8gkHEa(4Lei+ zqk>J;sewJV=*Ms>N@@tIwV14XR7HE&jk5rCbnG!+LHiYamYn;6iN!S8&<7c5z3HA} z=8P$3eWTs7U$TQx_}7qkN_tzjSYhV)`20A^BD5ArL6ngq)JhMOmCWSIdRY|ID4&Z} z9dX?FGbLi*XnGc$iNyblkK_=RU}MZU^np;gynMkd7+hivMOyIdu*YY#LC=z~1x%yo`JO5* zP<)A_yikGFpO|6aoQ_x(Ag^0p^y#u>qiYrfh;fIa`TZO{Kcyoc<@Q((N zn4{#wUoMY&LU^6@ll{OEI}1ZjB(aH~_#4gAR`-=mj-dVH7u|)Rp1y$QZfBz}W$%#N zo_;piDc}{+^`&DI2{q`G;j9a1AT^`KCbCEe)elYxr|WbqTc<=!Z%=9x8Xb^5sS-EX z&)x{Eq(emoqbv+ObODvPq@~P8f2>|nQ8=O4Q}d*Uw#AIeHUNpIyTnT%OVh3T{Ki52 zovV)~nW<^=S7;)cGCIzDiCU%ya_Yx~P!D@>BM9*{4GeA+wLZG9eP6_~zuyW&_e|sh zDGh7cz;meJ@cUU?FeBD!l!lc$xkW_P2ob?5M1b?zZ-}nzU)s3w3rYFsgoY+0g-+y3 zKwgW5UcTlKOI?X#KWeXdK0O>AO{Aij#>fuB>tFMAx_=Y3bo6w@r^KnTt8vCx0==;S z;lOE5a!o=g{ECpCinzEm{Z?yG;Nrd(R`6A$wmC58Ezx@6G{ZC>B~0b#NCSk!zM0{=@3#MTd<5{|j+Nn`lXvRTlSXU67)vGDY zLlUQ#*SYb<|AJ1x7c19^Ah-9{%aV;UadtWEEu4#!3P9tG%(Jn6USv;c$Dk+KzBE%) zrHT(B^I9I0{}tK+a)8JSHHdDyqw|pnde{F)UzMz!M+@3ucaq|DAZ?8+Yee~AVKQaT zQ*1BMQzYfqb-;mpK5oo38dBX;r?RFIgJn&x~gYIjwy>LD73}j`ww+Sg~Gn`zhp_=L3{JGCT^{cJ{@Iw zNhV@Db6*>0R5)Vw8>FpN+|I>atK`#(t|{(b;^`EHz1<~O3kBE(U`vIpK1EB93C z_{tw8k|Kw50@9Uq|2EGkj91u0kvjRILy(Pd;8 z3G89L65u(i0hk7g9b1#f*~^83R=!Aa0NS*qlgN~T+#;lb7xAOWeIX;cNd{~-+_mr$ z=P#u&Sa~`l$rSVus+WQ4vdP@MClQjqyH} zZy3e0IMj*d;g9E&s*{*pp}okgY2QujE5HmMR_m{*O5O(^V|eVJyo=aJvLZCu0N@D# zjK6=&|2sU2j`o1#f|QxVU;DAq4gKq|@SYM6(?bEeGzD$0Zg84Pp=;rhk{KRDVz{6!VF5a)SfbU`OekI+)F&`CSPrq&q6ldBD=F{@LyW%Gg+2 z+c@eun%P+Yg3Q$MK2NJ_~6q35=Px>sk3FiqUEf^ zjQ4s+!aS#OXoaztu17UY$O78W3`{-D9TuHIL_0gwko&9qu{JG)A7k-*sWMW6u|2bd zzZRmI6~>oOu(R}svg_$?PIyDMupqu)F9pQ}DwrBJ?)vFHN4FS;RE?UYRLvUvz*@&3 zwrom6osBX~(!aUJ)EK5#de}a~U%1c=ZJ#!=dgvz7Q|AOnC`wJp#$SdBhZMDVV;_5$ z>&Mc@B>87f!!q?wgtxGM5@@8me^>H>?VI#=3jjwo0FHm(!tZxB0pJKoEjQD5ax@Y$ zGO*OM|Gyz>6iW{WXv8UeC($M-qGtbrWR`&u1z%;Mi5MY+%uXJ0>ntBni9qD3wSKxaW$TzVVl-OJrRht`(`WV()iinyEK?_)l9)TPXA}7;%g08v%IcZaTUyOlp z5qzG0BAaE#oMO>0WT>(HpQf@$0!e~wvpnu}Lv%<^yH9p% z`3d$Z0w|IzbL}K5OBgNNpM$5GQ}jz$sSM|h-63B%e~m9+QAND#d>C=rmz)HEZ4)qf z{`O4%9yU>X8z);p`jeTp+5d?dmB*@~y7>@5Cto*SHzlmjAQV3ON9p40{~R+$R^48; zYx(MXf1VbIM{eTUL(~aTx1(>(P1K3`;KvZ>>RmVvzZKuwRMnq0tBResot=QmXTR%K zl=kB&5sv-VOcoYGCAw=W8^!$LtD+OB(p^J;Q~*M5w~+d@&riz;#8K04SYI3kMh1k% zRL+LAqGFE|)rZBs%O8OMtdi@X-12h)h};6k-zVa}M@8A;uUV3Rh~ayx9Q`LI@{@sd zCV~o`6X&(UBf|fkiI_6GH+H?=OdzIRj_^HCh{2{ob^?pP=DUGX77+=$rxsQoQA7@Z zrj9h|r8EnbY|)DriHcP8@9eeJO1sov&HmzfBoWGVKbQ+)(f*S<9S-1t4CVfaFom zf5Iz*HdeNlMy^V3wg4gfKQl^V-0x30g73s0;BgL-ZVZI55e)eV5XeiQ6rJqg?5(N@ zpZtG&%~9{?4T>?m6TiNHxkSo}x2_u?kS+}h3n-QY7bS!_)liZ*E)ummMF-QJZ5EN1 zkJo29k0(!6TkVYC{NNFQtQk*0QUU55Sz1TK`;n)cFLawe$!~Rwp*X0bPLE!D^q1?m z{W2!+uy`h&Fi|_s>+!cX%e4I3#V{Au@JlKg&C}5*$}z*{NYZhS`%Ab{aJTZ+DwHRB z80+!vkDq_~;Y#~!9$q2Ef7X)ck2IP`OA6DNSmrg&af-_3;<69?Fodp9lPvogi-TEL zH~ryCRm(VH3zc|c@a#K-f&^nm18-gmEGqSOd>>D;znw$5-CMcADhR{d{>9D=+r3Li z2(O}+1f9|MRHr;ZlS6b`gG%`Ad!oQ! zgaf~L$t|zUUC23-S~}5KmWsN_spIRQY8tl?GD@?Hd1}JWAG9xD?FW$(cAeC%t>SVM zNd{U=t+Z7SX6_Jq}tB~)2sym12y3>8! zff9HbaS+Q1R9_*A+V!V*b}p9cjS~y7 zqeB28Wcw#V`0s49zq4}hxAc#>mpr#D;KAN1;V!Q$mE$Vh!&Ev7VS7OH=rWn z6L1N_TV@K>Pq`lBC$E)X+z^jo?n?7_U~H45R3z7*1^ENE^`U~Gzt@e|ayc0EF3&yOpN5BH9PxN!ds7vC;9p$; zG35A9}siQnV|l{lpe{Y z+B)w4`r#_FWCnb*-O6|lhV!Zyg-dthpz+Jq@)+{x;JX^2``4r|wOs!70jr5`k>d!kH1LFj$X;Z;jHDgOzR zO9S$BEdQdiba@1Rza4l_Gvj0d6?!m2&V#%|uqefJwO!I=`a8!2xlhuJ&zntOzqTgA zUbZX;QZx+ldyoZ^+GMTMno)1tl!NJON~Rh;!(0PL2NVf>5vTp8{zj8zB#+i$k-s5i z3hJVdHJG!ON+@qOI^1jRzQ8*E!Y+`yvO11KwC8Bj#t3I<cj-L)~H_cK|KJp=ruaMLzdM2d827~JE^~nE z7kuv5+Jm(`B5*429*a<)P!;q;=Y-R3KaK z<8I1S`NDDZ89;EHL;GJ6Tkx-7q2oT{(`mK7Xy40E=^ zkDYTH#rm8L{p8TCc?kINGpSUh(ClyIzs`+b6L&8@*z}CMFOK%xPkRLHx5~@cO+QID z1EKaun#)=e1SKzMG*gI<%d3i22D~OnPX$4zq9)T z;Hv_Re{}r#|KR%@J@B4!|CkGp0(@vXl%P%SSeL#GfLpM1s##K(EHe8bq)k~2DbR19PE4--i=BBXbvGgZ_Jeq;?|>ht4dhWyZ)u?J~3%7$_!8}U5Ez0l`TPc48Om0uA7&Y!bhuh@wBxgD-`-1qRgMBibh~S?9tnvl{wK-Tk4f>&Pe-^~*fW+>n%@VN`DZW0{l# zd!gV)6**i;B8Xvr_geEKm6>J-7eZQuptuqggRZ)XtB|F((nU6M`VcVfM`PHI?FMxo zb+2~;3g({^+V_Bk=K(D8KhpibE#ARa&%j9B(a7o_BM=n(`|Ek(yRTR9+QHJ^*=6B) zfwKbyRLz-9GqW25gWr^dLwyEhps)23GM&8k?%g4GIIqbv&Moj_J<4MahyiaPr*G(I zQQ*u~(2V#6ixN?W86L64P|}^jzy&k9(M1S(Mg&5W+G^SkzAlq7UPLIt*E+rpP$_Nn zGRwe$Q`2UEs*DFiUtRY)e@qw@H5ptA4W>BBG~wUqsylRLuQ^+jyNdC)uGo%r9j_K< zrDGv;x+c=!VRUnPojYv1%uwd`V3iBtG@8q_ZcRtvHj_$kGIPw5F-@|L;Fuv!mMvD< zUtLui?nTaBfbTwLSs3Eo)-k$#cZVD`S!?YK06P&d{{9a6--h;2VE@Ok&>uqeo@zz> z78XJP_3(SOEtoj~@%HP=7mvRsV7bzhWY3qR3w-8QIo2;yGfvnZ{&-zVUS+R|;5-|O zMs$pJi&p1lcs#)F+pP#ecV)$oNxUk74Ia+SCH)5ft%aWSr$E8iTh-nGZvL zIU~b~zm&?$c+X$|tX527Nh~4&OYH>=_J3jsW&Rx-`a5^;{X+kkEC0`SsW)-B2jUl7 z!a0$fkBsK5Tc&?1&+$Ur zv;)&8EM1iAp@?~``_z3H<0=79d;|5&t~qW*ml7yA() zs%G!^%@-_~&e4gQ6_%+Yv8fpH<_rNG6r@LI&0`uppAtNn9U{b^sY-(#867=7(wbUk zn3`o?jZl(R#Gj3PA15s5rs%9Y|Dp;!8^%EevV6bg!g^gvWuJL~T*ZEN%|59mE*{%gn+l*93`6mm`; zv!z=_F#GzfOECDipyw7Vv7fB8m`E$+nZlRP<_)NK!SgKG2BBT;ze-`$HIL%eHtaga zX!Ww{*q`-%U-^-;@`-eUM;0~K$@#UeCKKfgJgL{lc!S>+{8g~DQv8jvrvT$0SqwlP zh@+W-p?2c%~ufV#AZ$j5xLAv?nnTJxs4~UtlzlE~WT(iy4 zSevMQ1_pJyoE%9fhZ2dMPBw*Ql`SJSDXIP?JQ>C2&)n>E zxm0rl@Ul<=G!unt5d@cRbv{9EN z;IH39M`_qieIun^Bb{i@^yXzrhVZkPxonYrzt*d~>^Qv0=N`OO!TPav>yYu&FNQ`}L~9=Q=mdw|;K&h)+-hJAQQLgXuXQ z(|G)Z#^G0x@DS}D>R4kWZ2XowbFUjeiLEjs?feHufP!Z08{kJ#h$FKnt6Sk`&)mnu zJ-*xUoqvWY2buX=cjWbC3MurGiZ#M4rq(F#Km&HL5L`zw0^_RJ_hhe8KG776vG@(* zRK0GDKfF#DrSwx_Bd=&5@k9xB!-pcENjj=`W@5 z6)EivvFBsw*LSkkJx6A*0+2H`z@YdiMnuWT{;z(?d&c@>4m;2S>q`d%*2$ybd;zNM zi%*uF&Aj(v(}MVeu)qo2LS|ScgWot?b;#y-jZ)l0l!O%Ri zVhi=&OgV;V{FjO+u(U(Bwx@T86E?i)m`A{WPXKVS{=Pl-zYW0uPhs(j<(KT?LkRlq zqJ&+A47y@19HN36QUdxg=bK?oYN0{=s*#HZ65z6ogyffD4*cdr;s%#0xpRhec#`qVFqxO$ zj#!zQSERZ8n4D#Fk0*bN5GuP70 zX$h&#wPjl!yJsB&hA9Tg=F6^0YbL3|LB!1F+IP0ccR{9^ajdZ;0Nz*ty#JAQRt0pJ zGSIU({ENx`gG=7i#IM!n0Ou;$C18EC-x0CylOV+Q&@5RY(rl(bg$|ayC=y3~Q$o8( zL0xPD%{URD27B*Brs|_|6eLZglv@G(pfSwnu++S)MXAx5mZb#YFZYefL#A{r`iqoN zlM$qhu9Vtyu#eswhRrU zeqJBWU)3tBj~ZNa_gk22F=VdS#Gw5JFWpF|oV#55hP-P+r(d2~fT8rW?)jpr`9apP zs{m6TcxH`I3y%QYU|@bSY}@gb@{XocTWP)-Yji2{TN(1TGTQHNS^o2FGV$NaqNBZ@ zvyr_6;P+2umfi#T$NbMW#+}oS`L_+M0N9zoKa>2A&j4b-j(TR+|KVEMH}YR@#CvKb z*Co;WTNU(c+_h>ja_w6s6rmt)Dk?RbExpKE=9EG`hKh)-j%7;=Ri#0`z1=oe8>GQj zg`R_aa`ITW&8tp*wxkBwO0HgoAn+u%Zxk9vl}M6S8UF#kH@S%0-(#wgv9HAc@|K>$6yTJU?qoq@v*m3OD2&Go@#fXhXpyoaRasu zbE4<>t-9UXe1O%63zmJ%Yv>kw<}cH*KVzk?=IL-K7|My*M%tI0-zD9%QkZX5scz@T z%W-Z-_W=_$$wGX5TQrGSM$Aaxp*MbiKZFocfBTz0Is?G__d(eI0k4#vy@}C($2hk3 zUl_lqR?+mo1z`aO`~luZ3bF>&qR&^21CO3g1v~mWA*E2pP)7jha=m)BSsHBmOT&4) z%Q>vld5PY2gFKVmYE9bG{7C{2OlDdpk|eUmzD1&m+um{;YU_-UIm&7Y^ADASify(^ zPJ6fsLrm|Zs8|-uuG*?4c1@0TH}H(a$?lLU9LRljEmK0<$B2rFZt1SQ#BaTF{0KvY zmkX}Q>w@Q{=Es7)d-Zl#rmlxxERqHzTQ_}&8Z-=`dU6?~+-&N|l{?%2Dout01Oy2Q z1Zn=PzI|G{_FHr%7=StbKb0I=Yop)pdH0^oOM}hX7D+VOyIDEmA`Kmigh*l>Gc`B4;j-x*^2Em3iajJa=ZZ}6BJzRJ2Z$I z8mTUZq>n-4{3VAcZ9%LfKvFv7GVc6_L! z8hv+}+hejeTnd254*=2Mo5}ydmH>$UTLq!_==?EHl$8X8pAc5j?L)pa$l3dC3G`+j zbR$dkOoGo45h+rKy09vT&xhl+&W%2~E0J14YMK(cD^U;m`R9^3?MGqd?)aKO(dQtg z4kmPAZ0ed>6cdivqJHu{x5z`a%rKfw0>*P#JRF?6_cE9r|0Doy8rgD^$z9kBw-EL+ zJ?%5e%DYHS&3tb1 z696AbfLZ&;VykGS2WTAhUsYq(2f^QC%>sz#Y>+(tU^DM#TC?x+8EDQl*`nRFcqTJB+h;95Vxr2mMmz;JSDPV$nN^Orooli!StbFysFZLSjG|7T31PREwVmf7t@Laek0ma z*meUs&D%gicUa%=TEPh=2Ul8WJQd6-#>=b6qb_r#FuQ70V~0MtRpq>2V|j6U-($1h zh2)BhF0bh<3YD3_fX@3{+e_QUHVFMp$CW3^2Od0+v;Kl?Nz%kIfi)5VU;Kqn zZ9n5ifRSx|Mj`S!3%1%{pWk_(8;E>TZJ&XFfIEPIxc;f!{*UwwK~p0Gi~nGgVu^%* z2mU=h<+gBGZm3!3oO$bHV~k?@%9fN#VzrtPO*I8a%206dwV8EcJI9F4Sl}y#IQuyJ zm=CWj641vu1S57C4+bj&`6nP}^oZ5I07;kEDKGd)I(M69Nf&R}Q4K&*Z%g-x0-Lpd zW27Ifc;TBq5bHj7FD@5$7{vV$cYqg~Vf*PSRqDQj(yerCa?j7hQQwj8x*dHp+|SVNWYY`VBU2I)XG+qxP2?20<}NcLj2i=U9Zn7>i&Y|acQSUJ!K zwn5}L)2D?&vQ0n0%akEGAWRWRO1zMpM83DTEy-&Ap-6t-Of3*9`|tx+cc^%@=8 z?-M>4;D9WOw+3dmua@A$9rfZy`I*==_e?lxj;3;4f?W>51=TYRuGjf`VF>%vEWQnXX8>WpeT>R4Jjw@G2)RE%70Wh|p)wP+6r=>J&<8c(%jAek^jg<>s zS&S8XEwagUqkF)k;6?@WH%oniqP(+f<(ETKt`%3A22ukH4ouDhYh_f}8n*Q&3Enm) z;0yAXoT+jW-9@@kFUDiI6GF^JJYwT^h>wpe2M2Mf?7M-^P9MLJ<{jehBU?0oO05J5 z>y-Ne=n=X~D`Yast&Fs!Q%3*&^lRMk8i&%xo696F!w2g{e3N35+*RBI&+!mKrjHv< zjvz*a5(dX(qc}E}{jo?HIXX)rbVrIa(`W1F$YR53YTJ$T#;XB={qv@L#$m7=5Qo>n zbe^B2X9KU9_pt;>=V%e+T1xrNK8`l|vvUuxZX>(6NpY(^S{R(~s|SL!3(yh?=mGD2 zY#Qa<LDu8&w90w7NF`~V$)kRhNA{CW zomlWY=LL?My?Zwj$9Alh*FAndK9y7E{s>ePiC^pA87=jhxNf>{;LH zIh*%3^0(_(rygvAq-s%J_>rSC;8Lp&?S4tx-1;zuA^MXGIziRteqUIGSd`{<4Fj5WelI3 zR(tg}cvgunJgoJge+7X?>yA>}j&6yn=7@WHe4nrzpBu6Z@8Viz?WA}*gN9<=~jE!s5LWauoZJ{J%h7*Y3 zu0nS3TbXaOL^&LuPa|k^~9ThBcFRo(0DAalGQg<9P<}IU#h5YSOtKX#t0rb>biaq-~Fwc zPcrMa_Qv%1i+__W-uf#um0!OH2Nr&|DcCi?xQ(r5p7fXN_-pz4cp|?-aCk`4PpEEk zi>?}yBrKMMxPi{8Os-sI{7K#6?J>NRhWMa8b6g6#WQqIa=$j>_K-%LCwKVJK>6g+0 zPOz1&1mF*^y$|6N5nv-A-moe#7+>n}zPze+gb09F<7{WK?v%0H%U%)Q3AyZiJK*@H zPZ9)0I3&kx2D-q&rghbpKsABxCFaV$E{$`Hky*`PFsX~w<~Cn0mW{un5T;A0Bf2ALN{GDz zP1zzNCjtjWVXwrN+0KpftEujiPU(_a%9U1C-p~(lMi_GX9NF+NlNxte5@7H(SYmUE zRRZPyI5Y?*H9fHs-fMAuJ8k7+lB^{e;;W$-rBOLXxZ!?2)JynEb0x)0>8iIaKPvCo zRq~u2yaeIW2VGru$m|#>54>5$y2JDD;@F9L^QO;?URUMbdHk8a1dp06hdlytb@z(W zxF8KMG_H@?8TKZy)3n24c|9DJ=)RDs*|~n`d8l#M_~Gr-v{AS-w{mh0KO}~yFZ{W* z<6)%B6UehkK5|CbeD{+gpi-_X6!*OcO61f7%|1IoL?i6Q{ULMs3w*l^y*KcM9;$zy zkL-Ir*^*^Igwyj@`V9S0v~ue0daoD-|vR#KY6Cx~-6b#XJe+*~3 zO}1oc90GTu4NM6#yxDj2+Y`iCR#WrOO3aZ- zfr93%AFyL=J>(Tc-^-HPLi7)BxEHW7&G%)9?2}hh7mGO^{Y*V5NLu2QFf(v6g!<9G zU@eypp$`cz!>?p=YVp!&7OjQX zW%9C+k@@T{nQ#Vt9p}-wThNG3XsFqfbC7z46;@D0dK>XNH$rk7bPz3Y=5Q(gHr}uo z)wQ94dhQ(gCS#JVD%g^o9$l{h3ou^xS50%xQ(BWxXimT2q4r+o9UQ)58Arbut5`g@ zHkgZDtT9AKNfn8i5OCfKVks7Ub5cOFTHY}-go|m z*pxJ=rhH--uGioW(dxJ=ql9jVQfs6AqDn%&J$z$ev=1fB_<3o3swzoyw%7+G=Q^bA z(@%Z5WkZRNE32ByO-&8`z^fpU7~!)564y6qSdQG+x5Dms5opVagCgMF@C3s|_YeJ6 zp&|=X>_yGP$4^bCC1cc3uvQksBL++wa1Iv7aL6b*2pVC#7G-Scj*|;V zgo_QJ)r(GNQwVSdDORy5O*xaGO|~|h`pX??848Q4p<;^6TAFiLiZ@m!(og$J~IS>|)-hpg{Cj)f_+G(eE39;n!%FjlY6Q#=WJ9y=m?E-yv$M&`^u zcVu@=zCE9<&4|AxVro9(F;qg5-`)`Oym-Wl;SV_Qhcj>o)7-t7IWqd1^man>>8iwqTH50GuR9tdE9NbTE4S zvX{mnUe5#6i#dd94x&NQh5XMwNTM>b!LKsn_6p>cO6qMf{q|}I4LJNPN{UlK|Dc;@-|uHa|ga)5rv7?Km;V1K{+yE#lw@_JAmCR_>P%D z`3u03G^wEQlU5<~Ml5&A{>%?J#alD``rvDJ&s*-Kqb~9jiNfeC56GpuUy{8juH`6X zb6_scIavwJ-L_LV)Co_&d_6oieAXuo*vvnL92PsAXL{6pqiA=r1xolr)h zdE6M*dblrjVgX86h>WF4JNbwioV5)~C51lqEo5XO$}y>*^?q^)mIsOUx=YcCf``lv z7xX;dVw>15hUCG$Q|mio9&Yajc(5KFjv1ce4z3IQ25*M~$HlLiB7Zmx29notPRRms zFGzQpQ-}Zt+GW#Hyc|oTiSVG+&J^jP051K&F(RzMEWTL>gGs#ap)Azq

+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + <%=idx.toString()%> + Not Applicable + Merit + Direct + Quota + <%=idx.toString()%>
+ + + + + + + <%=idx.toString()%> + Not Applicable + Merit + Direct + Quota + <%=idx.toString()%>
+
+
+ +
+
+
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower1.jsp b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower1.jsp new file mode 100644 index 0000000..c20a31d --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower1.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
STAFF STRENGTH REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Manpower Details Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower2.jsp b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower2.jsp new file mode 100644 index 0000000..1546cb7 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower2.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
STAFF STRENGTH RECOMMENDATION MASTER REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Manpower recommendation master Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower3.jsp b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower3.jsp new file mode 100644 index 0000000..91cd640 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower3.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
STAFF STRENGTH CATEGORY WISE BRANCHLIST REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Staff Strength Category wise Branch List
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower5.jsp b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower5.jsp new file mode 100644 index 0000000..d207ace --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepAllIndiaManpower5.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
MANPOWER SUMMARY DASHBOARD
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
ManPower Summary DashBoard
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hrmsEjb/public_html/hrms/jsp/RepBranchListCode.jsp b/hrmsEjb/public_html/hrms/jsp/RepBranchListCode.jsp new file mode 100644 index 0000000..a7ffad4 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepBranchListCode.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
BRANCH DETAILS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Codewise BranchList Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/RepBranchListName.jsp b/hrmsEjb/public_html/hrms/jsp/RepBranchListName.jsp new file mode 100644 index 0000000..9de249e --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepBranchListName.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
BRANCH DETAILS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Namewise BranchList Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/RepBranchListZone.jsp b/hrmsEjb/public_html/hrms/jsp/RepBranchListZone.jsp new file mode 100644 index 0000000..27c0627 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepBranchListZone.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
BRANCH DETAILS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Zonewise BranchList Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/RepEmpAddress.jsp b/hrmsEjb/public_html/hrms/jsp/RepEmpAddress.jsp new file mode 100644 index 0000000..34cd415 --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepEmpAddress.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
ADDRESS DETAILS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Employee Address Details Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hrmsEjb/public_html/hrms/jsp/RepIncrDue.jsp b/hrmsEjb/public_html/hrms/jsp/RepIncrDue.jsp new file mode 100644 index 0000000..43f317c --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepIncrDue.jsp @@ -0,0 +1,236 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
EMPLOYEE INCREMENT DUE REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
Employee wise Increment Due Report
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/RepLeaveLedger.jsp b/hrmsEjb/public_html/hrms/jsp/RepLeaveLedger.jsp new file mode 100644 index 0000000..f90adbf --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepLeaveLedger.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
ALL INDIA MANPOWER DETAILS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Manpower Details Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hrmsEjb/public_html/hrms/jsp/RepRetrDue.jsp b/hrmsEjb/public_html/hrms/jsp/RepRetrDue.jsp new file mode 100644 index 0000000..d0ceedc --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepRetrDue.jsp @@ -0,0 +1,220 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
EMPLOYEE RETIREMENT DUE REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
Employee wise Retirement Due Report
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/RepStayBranch.jsp b/hrmsEjb/public_html/hrms/jsp/RepStayBranch.jsp new file mode 100644 index 0000000..3af589f --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepStayBranch.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
EMPLOYEE STAY DETAILS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
Branchwise Employee Stay Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/RepStayGrade.jsp b/hrmsEjb/public_html/hrms/jsp/RepStayGrade.jsp new file mode 100644 index 0000000..58fd8ad --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/RepStayGrade.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + +
EMPLOYEE STAY DETAILS REPORT
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +
Gradewise Employee Stay Report
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/hrmsEjb/public_html/hrms/jsp/report.jsp b/hrmsEjb/public_html/hrms/jsp/report.jsp new file mode 100644 index 0000000..43dc3ae --- /dev/null +++ b/hrmsEjb/public_html/hrms/jsp/report.jsp @@ -0,0 +1,87 @@ + +<%@page import="net.sf.jasperreports.engine.export.JRTextExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRTextExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRCsvExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRCsvExporter"%> +<%@page import="net.sf.jasperreports.engine.JRExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRHtmlExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRHtmlExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRPdfExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRPdfExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRXlsExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%> +<% +//out.clear(); +//out.clearBuffer(); +long startTime = System.currentTimeMillis(); +if ("C".equalsIgnoreCase(request.getParameter("DOWNLOAD"))) { + JRCsvExporter csvExporter = new JRCsvExporter(); + csvExporter.setParameter(JRCsvExporterParameter.JASPER_PRINT,request.getAttribute("reportBody")); + csvExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); + response.setContentType("application/octet-stream"); + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + csvExporter.exportReport(); + //response.flushBuffer(); + //response.reset(); +} +else if("T".equalsIgnoreCase(request.getParameter("DOWNLOAD"))){ + char PAGE_BREAK = 12; + JRTextExporter textExporter = new JRTextExporter(); + textExporter.setParameter(JRTextExporterParameter.JASPER_PRINT,request.getAttribute("reportBody")); + textExporter.setParameter(JRTextExporterParameter.OUTPUT_WRITER, out); + textExporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT,new Integer(53)); + textExporter.setParameter(JRTextExporterParameter.PAGE_WIDTH,new Integer(130)); + textExporter.setParameter(JRTextExporterParameter.BETWEEN_PAGES_TEXT,String.valueOf(PAGE_BREAK)); + response.setContentType("text/html"); + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + textExporter.exportReport(); + response.flushBuffer(); + response.reset(); +} +else if("P".equalsIgnoreCase(request.getParameter("DOWNLOAD"))){ + JRPdfExporter pdfExporter = new JRPdfExporter(); + pdfExporter.setParameter(JRPdfExporterParameter.JASPER_PRINT,request.getAttribute("reportBody")); + pdfExporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,response.getOutputStream()); + response.setContentType("application/pdf"); + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + pdfExporter.exportReport(); + response.flushBuffer(); + response.reset(); +} +else if ("E".equalsIgnoreCase(request.getParameter("DOWNLOAD"))){ + // coding For Excel: + JRXlsExporter exporterXLS = new JRXlsExporter(); + exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, request.getAttribute("reportBody")); + exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream()); + exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); + exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); + exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); + exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); + // SET THE MIME TYPE. + response.setContentType("application/vnd.ms-excel"); + // set content dispostion to attachment in with file name. + // case the open/save dialog needs to appear. + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + exporterXLS.exportReport(); + response.flushBuffer(); + response.reset(); +} + +else { + JRHtmlExporter exporter = new JRHtmlExporter(); + exporter.setParameter(JRExporterParameter.JASPER_PRINT, request.getAttribute("reportBody")); + exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); + exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); + exporter.setParameter(JRHtmlExporterParameter.IS_WRAP_BREAK_WORD, Boolean.TRUE); + exporter.exportReport(); + response.flushBuffer(); + response.reset(); +} +long endTime = System.currentTimeMillis(); +//Logger errorLog = Logger.getLogger("ERRORLOG"); +//errorLog.fatal("REPORT RENDERED="+request.getParameter("reportPath")+", TIME TAKEN="+(endTime-startTime)); +%> diff --git a/hrmsEjb/public_html/hrms/report/AgeAnalysisReport.jasper b/hrmsEjb/public_html/hrms/report/AgeAnalysisReport.jasper new file mode 100644 index 0000000000000000000000000000000000000000..bbd021c9c5e3b44a02f31956a1973189d283a803 GIT binary patch literal 14755 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 S|L-wQlIa|Lsf?WpGXDnyl6|oN literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/report/AllIndiaManpowerList.jasper b/hrmsEjb/public_html/hrms/report/AllIndiaManpowerList.jasper new file mode 100644 index 0000000000000000000000000000000000000000..257064a85330247c2eedd70704439cc02aafe534 GIT binary patch literal 13505 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 literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/report/All_India_CTC.jasper b/hrmsEjb/public_html/hrms/report/All_India_CTC.jasper new file mode 100644 index 0000000000000000000000000000000000000000..de3c274d576f3bb4dd733f303b5e9a5aea8d7069 GIT binary patch literal 39283 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 literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/report/Confidential_File_Report.jasper b/hrmsEjb/public_html/hrms/report/Confidential_File_Report.jasper new file mode 100644 index 0000000000000000000000000000000000000000..81605640bce9c370de63160c77f7594c4e5fd757 GIT binary patch literal 24848 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 z zN#Lx|HR}M>CvOzGa$OH6S)v# zZ^1L*fa$D1#b>w%2mVoH3|b zSB1tmi+s&_fdKBXLDiX6g)X%l+_p}kA-mo&KjlrjjN=}rz0x$%ctvA z8jw#nsI*l+y;_B05$`ym;?RnCdaX)>^6B*|4bgVSAfVEv@@Yb)9r7ux(oXqwQl-n} zQ$&TG5+iO_afVAg#Zmh_N<5`hx<)?Ds^pVTr&W5Dd^!Uuu*F=kY$$<3MgxQrj^b#;! zm)!Ky1<=g_S4;bPX%!Q->ZPXi((TTho2W=H-GLQi4XM|SURXO?pTYLhU0CJKw4s-N z%R$Sf2EBBzGYMP&dFg(q)>eF8db>i-E{K;N+MG#batkTxp?5+$MEVIj&r9!y2s!x~ zFa5ScwGA6D{Vp0ERp+Hg?Z#;@y$32nz)5)NaXd>6=cV6Q>LLd(J)wxutew?n6d|!< zgRO@?08Z7ZH7|V#%Csf}?7VyF!@$o`WnOv;J={vnOMigLS|?nwI4>QJG!b2cYICApjaxR*XfpT-NZZbbYBIT&v8 zK9xR0f6`0uqR*m(fXQe0#+);JJ@k37-g%ommexaGfcS`71k7Xh7FrKI3yRk!nJDB@ z0tR>xNT~E@@@>y!2DM({s)@sb*tEjjRjBR%*7q5T->3^#T{x~+@Zw99V%Shp}@r*>Ra5Qyu}@= zTil_z#T{x}+@Z9^9V%Pgp|Hgr>RQ~Pta0}uIDzTH^;!h1eV7-HqS6B+7isT^@;Msj z%Lrda`QqoxA-){u%Tc}@$yH znlGpLatmMPo&hQfoyFCF4I)^xPTaQu@c~$(A=seH*!qAyyYX)yrZI|XjMH^=jP}wA z)Z9eF6sG+&O(T?`1C&OOGjtGk!cRFGqa`{-MU23Qp|nCr=ngtcchmKBKi;L#8|h7w zFsPLRux;ePMaqthUZniU!Hcx$U^plQBmnWixA8OqTOGm}*dqx+*+z&PFo&;=92nHU zNM#RwiOw^D4-8hF;s}b%PH_~)6{qM&am^_nLh&t5@i2;aI>ncpSxh zoZ@Rxyw54#h~fiI@pULZ=oD{qX8js)f(S>(DF%+jLD>Y|NHcUZy@BQ^Njjxy6;ywK zX6Ze2iatuG>9ceTeHC2ruvxa~`;0}MHN5E^)|=kN(sN+&VW${E@pqi!B#MtX#VHgY zbBfa_{+?5eqWE5?7)SAaPI1PW(q0G{Q5I90$CPrIQXW&%Fr@`dX%SOe!jyEN4+p|R zf7L>tU-Etn>IYe<4-7u(6w@ev#3`Oa@uN=h78F0`6kWo9h0qA+fsp}>s=&wuM$5qH z0^a{|`UG(KL*U$r($iucKL>np`bW7&iCu{ng%9TQ-&Xu$_?^K|!|yzPcjEUTevjez zBz~X7?>YRwf!}xV`#ydz0tWPgvh_Lo)S1qU^i1qy^flM>7hKOz^K*yn^C4ILqpte5 zyXx<7)mKJ7OYzUs=e|T2@rHSnLZb9Vl+q|o+NDX9rbOvEv>it&Xt#}^G;NozLMdwZ z96)KtY8(ADrY7~vL(m_DOo)f>g7n@C0^Ntz{~(C;5ZL{05b9wN{SgrBQS^8mE$^jw z()&TQ51{m65bh)N6nzZD`#60XOn44Y&(kv?;%Dev^m!2SB7GON-={yNA7bUdNMEL( z&|iS4f2nlRH@+i)zf0B zXj{k97r@f*fu%nHOaB=x{a3K`-@wxU089T9Ed4Q9`V+A9r(o&-f~7yB#~|pBgDFoc zUGST>z?12P^D;osfl1FRL-Y-0JAF&JjJ~5>PTvK?zOP(OKU8+pi^?AQiLy^olwqY) z8CA9_2bDo(T-l|(8Z7)mfOXtDT1+a7xEIkL77QoU9Sb82TT?R`pfTg#CrEdXC-v*Z61(x0m zmfi=JJ_wdR1eU%VEPWU(eFQ9hA6WWjXbiYZIHb`uD`&R;zb5SD<}~8VoRxw!{vRQT BNe}=4 literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/report/Qual_All_India_Employees.jasper b/hrmsEjb/public_html/hrms/report/Qual_All_India_Employees.jasper new file mode 100644 index 0000000000000000000000000000000000000000..aba7f7a85fd54f504ed45213a47b60fd9a6a6fc0 GIT binary patch literal 21812 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 literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/report/Recr_List_During_A_Period.jasper b/hrmsEjb/public_html/hrms/report/Recr_List_During_A_Period.jasper new file mode 100644 index 0000000000000000000000000000000000000000..4bfc803cc7572329085728fa4b24b138a01ff770 GIT binary patch literal 18730 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 T&HtAQJKs5l7&B*OC5`_FXxLX< literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/report/Recruitment_Cessation_Status_For_A_Period.jasper b/hrmsEjb/public_html/hrms/report/Recruitment_Cessation_Status_For_A_Period.jasper new file mode 100644 index 0000000000000000000000000000000000000000..a67561230c4d9d5e08ae230819e9c2bff794189b GIT binary patch literal 19805 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∾=>;J3mwT= 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 literal 0 HcmV?d00001 diff --git a/hrmsEjb/public_html/hrms/report/Status_Of_Disciplinary_Cases.jasper b/hrmsEjb/public_html/hrms/report/Status_Of_Disciplinary_Cases.jasper new file mode 100644 index 0000000000000000000000000000000000000000..7ef3b74e9708bd1a42f11eb83890b4fc58483673 GIT binary patch literal 21109 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 monDate) { + if (beMon < 10) + beginMonth = String.valueOf("0").concat(String.valueOf(beginMonth)); + startDate = String.valueOf(String.valueOf(String.valueOf("01/").concat(String.valueOf(beginMonth))).concat(String.valueOf("/"))).concat(String.valueOf(yrDate - 1)); + } + } + startDate = getddmmmyyyyDateFormat(startDate); + return startDate; + } + + public String getEndDate(String sCalId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + String sStartDate = getStartDate(sCalId, sDate); + sStartDate = getddmmyyyyDateFormat(sStartDate); + String sEndDate = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sCalId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMORGCALENDARMST.proc_GetHrCalHdrInfoById(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0); + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + int yrEndDate, ddEndDate; + oRow = oIt.next(); + String durationMonth = oRow.get("DURATION_MONTH").getString(); + int durMon = Integer.parseInt(durationMonth); + String monOfStartDate = sStartDate.substring(3, 5); + String yearOfStartDate = sStartDate.substring(6, 10); + int monStartDate = Integer.parseInt(monOfStartDate); + int yrStartDate = Integer.parseInt(yearOfStartDate); + int monEndDate = monStartDate + durMon - 1; + if (monEndDate > 12) { + monEndDate -= 12; + yrEndDate = yrStartDate + 1; + } else { + yrEndDate = yrStartDate; + } + if (monEndDate == 2) { + int quo = yrEndDate / 4; + int rem = yrEndDate - 4 * quo; + if (rem == 0) { + ddEndDate = 29; + } else { + ddEndDate = 28; + } + } else if (monEndDate == 4 || monEndDate == 6 || monEndDate == 9 || monEndDate == 11) { + ddEndDate = 30; + } else { + ddEndDate = 31; + } + if (monEndDate < 10) { + sEndDate = String.valueOf(String.valueOf(String.valueOf(String.valueOf(ddEndDate).concat(String.valueOf("/0"))).concat(String.valueOf(monEndDate))).concat(String.valueOf("/"))).concat(String.valueOf(yrEndDate)); + continue; + } + sEndDate = String.valueOf(String.valueOf(String.valueOf(String.valueOf(ddEndDate).concat(String.valueOf("/"))).concat(String.valueOf(monEndDate))).concat(String.valueOf("/"))).concat(String.valueOf(yrEndDate)); + } + sEndDate = getddmmmyyyyDateFormat(sEndDate); + return sEndDate; + } + + public String getddmmyyyyDateFormat(String sDate) throws EnrgiseSystemException { + String sRetDate = null; + String monOfDate = sDate.substring(3, 6); + String yrOfdate = sDate.substring(7, 11); + String ddOfDate = sDate.substring(0, 2); + String[] e = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", + "Nov", "Dec" }; + for (int i = 1; i < e.length + 1; i++) { + if (e[i - 1].equalsIgnoreCase(monOfDate)) + monOfDate = (i <= 9) ? String.valueOf("0").concat(String.valueOf(String.valueOf(i))) : String.valueOf(i); + } + sRetDate = String.valueOf(String.valueOf(String.valueOf(String.valueOf(ddOfDate).concat(String.valueOf("/"))).concat(String.valueOf(monOfDate))).concat(String.valueOf("/"))).concat(String.valueOf(yrOfdate)); + return sRetDate; + } + + public String getddmmmyyyyDateFormat(String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + String sRetDate = null; + String monOfDate = sDate.substring(3, 5); + int monDate = Integer.parseInt(monOfDate); + String yrOfdate = sDate.substring(6, 10); + String ddOfDate = sDate.substring(0, 2); + String[] e = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", + "Nov", "Dec" }; + for (int i = 1; i < e.length + 1; i++) { + if (i == monDate) + monOfDate = e[i - 1]; + } + sRetDate = String.valueOf(String.valueOf(String.valueOf(String.valueOf(ddOfDate).concat(String.valueOf("-"))).concat(String.valueOf(monOfDate))).concat(String.valueOf("-"))).concat(String.valueOf(yrOfdate)); + return sRetDate; + } + + public int getDayOfWeek(String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + String sDdmmyyyy = oBO.getddmmyyyyDateFormat(sDate); + int iDay = Integer.parseInt(sDdmmyyyy.substring(0, 2)); + int iMonth = Integer.parseInt(sDdmmyyyy.substring(3, 5)); + int iYear = Integer.parseInt(sDdmmyyyy.substring(6, 10)); + iMonth--; + GregorianCalendar c = new GregorianCalendar(iYear, iMonth, iDay); + int iDayOfWeek = c.get(7); + iDayOfWeek = (iDayOfWeek == 1) ? 7 : (iDayOfWeek - 1); + return iDayOfWeek; + } + + public int getWeekOfMonth(String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + String sDdmmyyyy = oBO.getddmmyyyyDateFormat(sDate); + int iDay = Integer.parseInt(sDdmmyyyy.substring(0, 2)); + int iMonth = Integer.parseInt(sDdmmyyyy.substring(3, 5)); + int iYear = Integer.parseInt(sDdmmyyyy.substring(6, 10)); + iMonth--; + GregorianCalendar c = new GregorianCalendar(iYear, iMonth, iDay); + int iWeekOfMonth = c.get(4); + return iWeekOfMonth; + } + + public Date getNextDay(String sDate, int iDays) throws EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + String sDdmmyyyy = oBO.getddmmyyyyDateFormat(sDate); + int iDay = Integer.parseInt(sDdmmyyyy.substring(0, 2)); + int iMonth = Integer.parseInt(sDdmmyyyy.substring(3, 5)); + int iYear = Integer.parseInt(sDdmmyyyy.substring(6, 10)); + iMonth--; + GregorianCalendar c = new GregorianCalendar(iYear, iMonth, iDay); + while (iDays-- > 0) { + if (iMonth == 3 || iMonth == 5 || iMonth == 8 || iMonth == 10) { + if (iDay == 30) { + iDay = 1; + iMonth++; + } else { + iDay++; + } + } else if (iMonth == 1) { + if (iDay == 28) { + if (c.isLeapYear(iYear)) { + iDay++; + } else { + iDay = 1; + iMonth++; + } + } else if (iDay == 29) { + iDay = 1; + iMonth++; + } else { + iDay++; + } + } else if (iDay == 31) { + iDay = 1; + if (iMonth == 11) { + iMonth = 0; + iYear++; + } else { + iMonth++; + } + } else { + iDay++; + } + c.set(iYear, iMonth, iDay); + } + Date dDate = new Date(c.getTimeInMillis()); + return dDate; + } + + public Date getPreviousDay(String sDate, int iDays) throws EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + String ddmmyyyy = oBO.getddmmyyyyDateFormat(sDate); + int iDay = Integer.parseInt(ddmmyyyy.substring(0, 2)); + int iMonth = Integer.parseInt(ddmmyyyy.substring(3, 5)); + int iYear = Integer.parseInt(ddmmyyyy.substring(6, 10)); + iMonth--; + GregorianCalendar c = new GregorianCalendar(iYear, iMonth, iDay); + while (iDays-- > 0) { + if (iMonth == 1 || iMonth == 3 || iMonth == 5 || iMonth == 8 || iMonth == 10) { + if (iDay == 1) { + iDay = 31; + iMonth--; + } else { + iDay--; + } + } else if (iMonth == 3) { + if (iDay == 1) { + if (c.isLeapYear(iYear)) { + iDay = 29; + iMonth--; + } else { + iDay = 28; + iMonth--; + } + } else { + iDay--; + } + } else if (iDay == 1) { + iDay = 30; + if (iMonth == 1) { + iMonth = 12; + iYear--; + } else { + iMonth--; + } + } else { + iDay--; + } + c.set(iYear, iMonth, iDay); + } + Date dDate = new Date(c.getTimeInMillis()); + return dDate; + } + + public boolean checkTimeFormat(String sTime) throws EnrgiseSystemException { + boolean sFlag = true; + if (sTime.length() != 5 || !sTime.substring(2, 3).equalsIgnoreCase(":")) + sFlag = false; + return sFlag; + } + + public boolean checkTimeValue(String sTime) throws EnrgiseSystemException { + boolean returnVal = true; + String sHour = sTime.substring(0, 2); + String sMin = sTime.substring(3, 5); + int stHour = Integer.parseInt(sHour); + int stMin = Integer.parseInt(sMin); + if (stHour >= 24 || stHour < 0) + returnVal = false; + if (stMin >= 60 || stMin < 0) + returnVal = false; + return returnVal; + } + + public int compareTime(String sRefTime, String sOrigTime) throws EnrgiseSystemException { + if (null == sOrigTime || null == sRefTime) + return -2; + String sRefHour = sRefTime.substring(0, 2); + String sRefMin = sRefTime.substring(3, 5); + String refTime = String.valueOf(sRefHour).concat(String.valueOf(sRefMin)); + String sOrigHour = sOrigTime.substring(0, 2); + String sOrigMin = sOrigTime.substring(3, 5); + String origTime = String.valueOf(sOrigHour).concat(String.valueOf(sOrigMin)); + int iRefTime = Integer.parseInt(refTime); + int iOrigTime = Integer.parseInt(origTime); + if (iRefTime == iOrigTime) + return 0; + if (iOrigTime < iRefTime) + return -1; + return 1; + } + + public String getSysDate() throws EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + String sSysdate = EnrgiseUtil.convertToString(Calendar.getInstance().getTime()); + String ddmmyyyy = oBO.getddmmyyyyDateFormat(sSysdate); + return ddmmyyyy; + } + + public void checkMMYYYY(String yymm, ArrayList oErrorList) { + if (yymm.length() != 6) { + oErrorList.add(new EnrgiseApplicationException("hrms.common.yyyymm")); + return; + } + if (yymm.substring(2, 3).equals("0")) { + oErrorList.add(new EnrgiseApplicationException("hrms.common.yyyymm")); + return; + } + int mon = Integer.parseInt(yymm.substring(0, 2)); + if (mon > 12 || mon < 1) { + oErrorList.add(new EnrgiseApplicationException("hrms.common.yyyymm")); + return; + } + } + + public String getTimeDiff(String sRefTime, String sOrigTime) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + return new String(); + } + + public void initializeBOImpl() { + this.headerTable = "PUM_PO_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseSystemException { + return " "; + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return " "; + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/common/exception/BaseException.java b/hrmsEjb/wenrgise/common/exception/BaseException.java new file mode 100644 index 0000000..b6e01e8 --- /dev/null +++ b/hrmsEjb/wenrgise/common/exception/BaseException.java @@ -0,0 +1,21 @@ +package wenrgise.common.exception; + +import java.io.Serializable; + +public class BaseException extends Exception implements Serializable { + private String sKey; + + public BaseException() {} + + public BaseException(String sKey) { + this.sKey = sKey; + } + + public String getKey() { + return this.sKey; + } + + public void setKey(String sMessageKey) { + this.sKey = sMessageKey; + } +} diff --git a/hrmsEjb/wenrgise/common/exception/EnrgiseApplicationException.java b/hrmsEjb/wenrgise/common/exception/EnrgiseApplicationException.java new file mode 100644 index 0000000..bbd2d3d --- /dev/null +++ b/hrmsEjb/wenrgise/common/exception/EnrgiseApplicationException.java @@ -0,0 +1,62 @@ +package wenrgise.common.exception; + +import java.io.Serializable; +import java.util.ArrayList; + +public class EnrgiseApplicationException extends BaseException implements Serializable { + private ArrayList oListExceptions; + + private ArrayList oArguments; + + private String errorType = null; + + public EnrgiseApplicationException() {} + + public EnrgiseApplicationException(String sMsgKey) { + super(sMsgKey); + this.errorType = "E"; + } + + public EnrgiseApplicationException(String sMsgKey, String errorType) { + super(sMsgKey); + this.errorType = errorType; + } + + public EnrgiseApplicationException(String sMsgKey, ArrayList oArguments) { + super(sMsgKey); + this.oArguments = oArguments; + this.errorType = "E"; + } + + public EnrgiseApplicationException(String sMsgKey, ArrayList oArguments, String sErrorType) { + super(sMsgKey); + this.oArguments = oArguments; + this.errorType = sErrorType; + } + + public ArrayList getList() { + return this.oListExceptions; + } + + public void setList(ArrayList oListExceptions) { + this.oListExceptions = oListExceptions; + } + + public void addToList(EnrgiseApplicationException oAppExcp) { + if (this.oListExceptions == null) + this.oListExceptions = new ArrayList(); + this.oListExceptions.add(oAppExcp); + } + + public ArrayList getArguments() { + return this.oArguments; + } + + public void setArguments(ArrayList newOArguments) { + this.oArguments = newOArguments; + } + + public String getErrorType() { + return this.errorType; + } +} diff --git a/hrmsEjb/wenrgise/common/exception/EnrgiseMessageKeyException.java b/hrmsEjb/wenrgise/common/exception/EnrgiseMessageKeyException.java new file mode 100644 index 0000000..0ea1150 --- /dev/null +++ b/hrmsEjb/wenrgise/common/exception/EnrgiseMessageKeyException.java @@ -0,0 +1,16 @@ +package wenrgise.common.exception; + +import java.io.Serializable; +import java.util.ArrayList; + +public class EnrgiseMessageKeyException extends EnrgiseApplicationException implements Serializable { + public EnrgiseMessageKeyException() {} + + public EnrgiseMessageKeyException(String sMsgKey, ArrayList oArguments) { + super(sMsgKey, oArguments); + } + + public EnrgiseMessageKeyException(String sMsgKey, ArrayList oArguments, String sErrorType) { + super(sMsgKey, oArguments, sErrorType); + } +} diff --git a/hrmsEjb/wenrgise/common/exception/EnrgiseSystemException.java b/hrmsEjb/wenrgise/common/exception/EnrgiseSystemException.java new file mode 100644 index 0000000..74812bc --- /dev/null +++ b/hrmsEjb/wenrgise/common/exception/EnrgiseSystemException.java @@ -0,0 +1,18 @@ +package wenrgise.common.exception; + +import java.io.Serializable; + +public class EnrgiseSystemException extends BaseException implements Serializable { + private Exception oRootCause; + + public EnrgiseSystemException() {} + + public EnrgiseSystemException(Exception oExcp) { + this.oRootCause = oExcp; + } + + public EnrgiseSystemException(String sKey, Exception oExcp) { + super(sKey); + this.oRootCause = oExcp; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/ArrayListUtil.java b/hrmsEjb/wenrgise/common/utility/ArrayListUtil.java new file mode 100644 index 0000000..b1652bb --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/ArrayListUtil.java @@ -0,0 +1,3 @@ +package wenrgise.common.utility; + +public class ArrayListUtil {} diff --git a/hrmsEjb/wenrgise/common/utility/ContextProvider.java b/hrmsEjb/wenrgise/common/utility/ContextProvider.java new file mode 100644 index 0000000..cbb66ae --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/ContextProvider.java @@ -0,0 +1,39 @@ +package wenrgise.common.utility; + +import java.util.Hashtable; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +public class ContextProvider { + private Context ctx = null; + + public static InitialContext localContext; + + static { + try { + localContext = new InitialContext(); + } catch (NamingException oNx) { + oNx.printStackTrace(); + } + } + + private static ContextProvider objContextProvider = new ContextProvider(); + + private ContextProvider() { + try { + Hashtable env = new Hashtable(); + this.ctx = new InitialContext(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static Context getContext() { + return objContextProvider.ctx; + } + + public static InitialContext getLocalContext() { + return localContext; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/DateUtility.java b/hrmsEjb/wenrgise/common/utility/DateUtility.java new file mode 100644 index 0000000..4d86a8e --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/DateUtility.java @@ -0,0 +1,151 @@ +package wenrgise.common.utility; + +import java.sql.Date; +import java.util.Calendar; +import java.util.StringTokenizer; + +public class DateUtility { + public final int DATE = 1; + + public final int MONTH = 2; + + public final int YEAR = 3; + + public String getSysDate() { + Calendar cal = Calendar.getInstance(); + String sysDate = String.valueOf(String.valueOf(String.valueOf(String.valueOf(lPad(String.valueOf(cal.get(5)), 2)).concat(String.valueOf("/"))).concat(String.valueOf(lPad(String.valueOf(cal.get(2) + 1), 2)))).concat(String.valueOf("/"))).concat(String.valueOf(lPad(String.valueOf(cal.get(1)), 4))); + cal = null; + return sysDate; + } + + public int dateDiff(String fromDate, String toDate) { + Calendar cal = Calendar.getInstance(); + cal.set(Integer.parseInt(get(fromDate, 3)), Integer.parseInt(get(fromDate, 2)) - 1, Integer.parseInt(get(fromDate, 1))); + long fromDateInMilliSec = cal.getTime().getTime(); + cal.set(Integer.parseInt(get(toDate, 3)), Integer.parseInt(get(toDate, 2)) - 1, Integer.parseInt(get(toDate, 1))); + long toDateInMilliSec = cal.getTime().getTime(); + cal = null; + if (fromDateInMilliSec == toDateInMilliSec) + return 1; + int noOfDays = Math.abs((int)((toDateInMilliSec - fromDateInMilliSec) / 86400000L)); + return noOfDays; + } + + public int dateDiff1(String fromDate, String toDate) { + Calendar cal = Calendar.getInstance(); + cal.set(Integer.parseInt(get(fromDate, 3)), Integer.parseInt(get(fromDate, 2)) - 1, Integer.parseInt(get(fromDate, 1))); + long fromDateInMilliSec = cal.getTime().getTime(); + cal.set(Integer.parseInt(get(toDate, 3)), Integer.parseInt(get(toDate, 2)) - 1, Integer.parseInt(get(toDate, 1))); + long toDateInMilliSec = cal.getTime().getTime(); + cal = null; + int noOfDays = Math.abs((int)((toDateInMilliSec - fromDateInMilliSec) / 86400000L)); + return noOfDays; + } + + public long dateDiffLong(String fromDate, String toDate) { + Calendar cal = Calendar.getInstance(); + cal.set(Integer.parseInt(get(fromDate, 3)), Integer.parseInt(get(fromDate, 2)) - 1, Integer.parseInt(get(fromDate, 1))); + long fromDateInMilliSec = cal.getTime().getTime(); + cal.set(Integer.parseInt(get(toDate, 3)), Integer.parseInt(get(toDate, 2)) - 1, Integer.parseInt(get(toDate, 1))); + long toDateInMilliSec = cal.getTime().getTime(); + cal = null; + long noOfDaysInSec = (toDateInMilliSec - fromDateInMilliSec) / 1000L; + return noOfDaysInSec; + } + + public int dateGTcurrent(String fromDate, String toDate) { + Calendar cal = Calendar.getInstance(); + cal.set(Integer.parseInt(get(fromDate, 3)), Integer.parseInt(get(fromDate, 2)) - 1, Integer.parseInt(get(fromDate, 1))); + long fromDateInMilliSec = cal.getTime().getTime(); + cal.set(Integer.parseInt(get(toDate, 3)), Integer.parseInt(get(toDate, 2)) - 1, Integer.parseInt(get(toDate, 1))); + long toDateInMilliSec = cal.getTime().getTime(); + cal = null; + int noOfDays = (int)((toDateInMilliSec - fromDateInMilliSec) / 86400000L); + return noOfDays; + } + + public String get(String inDate, int Type) { + String[] strArr = new String[4]; + String retVal = ""; + strArr = getDateArray(inDate); + switch (Type) { + case 3: + retVal = lPad(strArr[2], 4); + break; + case 2: + retVal = lPad(strArr[1], 2); + break; + case 1: + retVal = lPad(strArr[0], 2); + break; + } + return retVal; + } + + public String reverseFormat(String tDate) { + String[] strArr = new String[4]; + strArr = getDateArray(tDate); + return String.valueOf(String.valueOf(String.valueOf(String.valueOf(lPad(strArr[1], 2)).concat(String.valueOf("/"))).concat(String.valueOf(lPad(strArr[0], 2)))).concat(String.valueOf("/"))).concat(String.valueOf(lPad(strArr[2], 4))); + } + + private String lPad(String inStr, int len) { + int count = len - inStr.length(); + for (int i = 0; i < count; i++) + inStr = String.valueOf("0").concat(String.valueOf(inStr)); + return inStr; + } + + private String[] getDateArray(String tDate) { + int j = 0; + StringTokenizer strTok = new StringTokenizer(tDate, "/"); + String[] strArr = new String[4]; + if (strTok.countTokens() <= 0) + strTok = new StringTokenizer(tDate, "-"); + while (strTok.hasMoreTokens()) { + strArr[j] = strTok.nextToken(); + j++; + } + return strArr; + } + + public long getDateLong(String tDate) { + Calendar cal = Calendar.getInstance(); + cal.set(Integer.parseInt(get(tDate, 3)), Integer.parseInt(get(tDate, 2)) - 1, Integer.parseInt(get(tDate, 1))); + return cal.getTime().getTime(); + } + + public long[] months_between(String fromDate, String toDate) { + long[] retArr = new long[2]; + retArr[0] = -1L; + retArr[1] = -1L; + long noOfDaysInSecs = dateDiffLong(fromDate, toDate); + double totNoOfDays = (noOfDaysInSecs / 86400L); + retArr[0] = (long)Math.floor(totNoOfDays / 30); + retArr[1] = Math.round(totNoOfDays % 30); + return retArr; + } + + public long[] months_between1(String fromDate, String toDate) { + long[] retArr = new long[2]; + retArr[0] = -1L; + retArr[1] = -1L; + long noOfDaysInSecs = dateDiffLong(fromDate, toDate); + double totNoOfDays = (noOfDaysInSecs / 86400L); + retArr[0] = (long)Math.floor(totNoOfDays / 30.4D); + retArr[1] = Math.round(totNoOfDays % 30); + return retArr; + } + + public static void main(String[] args) { + DateUtility d = new DateUtility(); + System.out.println(d.reverseFormat(d.getSysDate())); + System.out.println(d.dateDiff1("29/11/2003", "2/12/2003")); + System.out.println(d.dateDiff1("29/10/2003", "2/11/2003")); + d.getSysDate(); + long[] retIntArr = d.months_between("12/12/2003", "28/12/2003"); + System.out.println(String.valueOf(String.valueOf(retIntArr[0]).concat(String.valueOf("*****"))).concat(String.valueOf(retIntArr[1]))); + Date d1 = new Date(d.getDateLong("29/11/2003")); + Date d2 = new Date(d.getDateLong("2/12/2003")); + System.out.println(d1.compareTo(d2)); + } +} diff --git a/hrmsEjb/wenrgise/common/utility/DebugHelper.java b/hrmsEjb/wenrgise/common/utility/DebugHelper.java new file mode 100644 index 0000000..e7d816e --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/DebugHelper.java @@ -0,0 +1,44 @@ +package wenrgise.common.utility; + +import java.rmi.RemoteException; +import java.util.HashMap; +import javax.ejb.CreateException; +import javax.servlet.http.HttpSession; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class DebugHelper { + public static void createUserEjb(HttpSession session) throws EnrgiseSystemException { + try { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) { + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("HrmUserSession"); + oUser = oUserHome.create(); + UserInfo oUserInfo = new UserInfo(); + oUserInfo.setSiteId("1"); + oUserInfo.setModuleId("4"); + oUserInfo.setUserId("8501000"); + oUserInfo.setCurrentYear("2011"); + oUserInfo.setUserName("HANS RAJ SHARMA"); + oUser.setUserInfo(oUserInfo); + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HashMap oMap = new HashMap(); + oMap.put(ParamUtil.getModuleName(), oHrmFacade); + oUser.setModuleFacade(oMap); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + } + } catch (RemoteException oRmt) { + throw new EnrgiseSystemException(); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(); + } catch (Exception oExCc) { + oExCc.printStackTrace(); + throw new EnrgiseSystemException(); + } + } +} diff --git a/hrmsEjb/wenrgise/common/utility/EnrgiseConstants.java b/hrmsEjb/wenrgise/common/utility/EnrgiseConstants.java new file mode 100644 index 0000000..78ebc1d --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/EnrgiseConstants.java @@ -0,0 +1,141 @@ +package wenrgise.common.utility; + +public final class EnrgiseConstants { + public static final String DATABASE_NAME = ParamUtil.getDBName(); + + public static final int INFINITE = -999; + + public static final int GET_HEADER = 1; + + public static final int GET_NEXT_ACTION = 2; + + public static final int GET_PREVIOUS_ACTION = 3; + + public static final int GET_FIRST_ACTION = 4; + + public static final int GET_LAST_ACTION = 5; + + public static final int GET_DETAIL_ACTION = 6; + + public static final int GET_NEXT_DETAIL_ACTION = 7; + + public static final int SAVE_ACTION = 8; + + public static final int EXIT_APP = 9; + + public static final int NEW_ACTION = 10; + + public static final int QUERY_ACTION = 10; + + public static final int GET_DETAIL_PAGE_ACTION = 11; + + public static final int CLOSE_WINDOW = 12; + + public static final int ON_LOAD_ACTION = 13; + + public static final int ADD_ROW_ACTION = 14; + + public static final int DELETE_ROW_ACTION = 15; + + public static final int DECR_ACTION = 16; + + public static final int DELETE_ACTION = 17; + + public static final int GET_BUTTON_ACTION = 18; + + public static final int REFRESH_ACTION = 19; + + public static final int LOV_ACTION = 20; + + public static final int VALIDATE_ACTION = 21; + + public static final int GET_TAB_ACTION = 22; + + public static final int GET_INSERT_ACTION = 23; + + public static final String SUCCESS = "success"; + + public static final String ERROR = "E"; + + public static final String MESSAGE = "M"; + + public static final String BASE_HEADER_VO = "BaseHeaderVO"; + + public static final String BASE_QUERY_VO = "BaseQueryVO"; + + public static final String BASE_DETAIL_VO = "BaseDetailVO"; + + public static final String COMPONENTS_MAP = "Components"; + + public static final int HEADER_SIZE = 10; + + public static final String NEW_MODE = "N"; + + public static final String UPDATE_MODE = "U"; + + public static final String DELETE_MODE = "D"; + + public static final String QUERY_MODE = "Q"; + + public static final String FIRST_LOAD = "LoadingFirst"; + + public static final String SEARCH_RECORD = "SearchRecords"; + + public static final String HIDDEN = "H"; + + public static final String VISIBLE = "V"; + + public static final String ENABLE = "E"; + + public static final String DISABLE = "D"; + + public static final String HEADER = "HEADER"; + + public static final String DETAIL = "DETAIL"; + + public static final String ALL = "ALL"; + + public static final String STATUS = "status"; + + public static final String NEW = "N"; + + public static final String APPROVED = "A"; + + public static final String REVISED = "V"; + + public static final String REJECTED = "R"; + + public static final String DRAFT = "D"; + + public static final String CLOSED = "C"; + + public static final String CANCELLED = "L"; + + public static final String FINALLY_APPROVED = "FinallyApproved"; + + public static final String NOTPRICED = "N"; + + public static final String PRICED = "P"; + + public static final String ACCOUNTED = "Y"; + + public static final int AFTER_DATE = 1; + + public static final int DATE_ERROR = -2; + + public static final int EQUAL_DATE = 0; + + public static final int BEFORE_DATE = -1; + + public static final String POSITIVE = "P"; + + public static final String NEGATIVE = "N"; + + public static final String NOTPOSITIVE = "NP"; + + public static final String NOTNEGATIVE = "NN"; + + public static final String USER_NAME = "wenrgise.common.user.name"; + + public static final String SITE_NAME = "wenrgise.common.site.name"; +} diff --git a/hrmsEjb/wenrgise/common/utility/EnrgiseListener.java b/hrmsEjb/wenrgise/common/utility/EnrgiseListener.java new file mode 100644 index 0000000..39db35b --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/EnrgiseListener.java @@ -0,0 +1,24 @@ +package wenrgise.common.utility; + +import java.rmi.RemoteException; +import javax.ejb.RemoveException; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; +import wenrgise.ejb.common.session.UserSession; + +public class EnrgiseListener implements HttpSessionListener { + public void sessionCreated(HttpSessionEvent sEvent) {} + + public void sessionDestroyed(HttpSessionEvent sEvent) { + try { + HttpSession session = sEvent.getSession(); + if (session != null) { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + oUser.remove(); + } + } catch (RemoveException removeException) { + + } catch (RemoteException remoteException) {} + } +} diff --git a/hrmsEjb/wenrgise/common/utility/EnrgiseManager.java b/hrmsEjb/wenrgise/common/utility/EnrgiseManager.java new file mode 100644 index 0000000..6802903 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/EnrgiseManager.java @@ -0,0 +1,64 @@ +package wenrgise.common.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.common.xml.vo.DetailScreens; +import wenrgise.common.xml.vo.EnrgiseApp; +import wenrgise.common.xml.vo.EnrgiseForms; +import wenrgise.common.xml.vo.HashedEnrgiseForms; +import wenrgise.common.xml.vo.SingleForm; + +public class EnrgiseManager { + private static EnrgiseManager me; + + private HashMap oEnrgiseMap = new HashMap(); + + private HashMap appMap = new HashMap(); + + public static EnrgiseManager getInstance() { + if (me == null) + me = new EnrgiseManager(); + return me; + } + + public HashedEnrgiseForms getCachedObject(String name_) { + if (name_ == null || name_.trim().length() <= 0) + return null; + return (HashedEnrgiseForms)this.oEnrgiseMap.get(name_); + } + + public void init(EnrgiseForms oEnrgiseForms) { + if (oEnrgiseForms == null) + return; + ArrayList oFormsList = oEnrgiseForms.get_SingleForm(); + Iterator oIt = oFormsList.iterator(); + while (oIt.hasNext()) { + SingleForm oSingleForm = oIt.next(); + String sFormName = oSingleForm.get_FormName(); + HashedEnrgiseForms oHashedEnrgiseForms = new HashedEnrgiseForms(); + oHashedEnrgiseForms.setSingleForm(oSingleForm); + DetailScreens oDetailScreens = oSingleForm.get_DetailScreens(); + ArrayList oDetailList = oDetailScreens.get_DetailScreen(); + Iterator oDetailIt = oDetailList.iterator(); + while (oDetailIt.hasNext()) { + DetailScreen oDetailScreen = oDetailIt.next(); + String sDetailName = oDetailScreen.get_DetailScreenName(); + if (!oHashedEnrgiseForms.getDetailMap().containsKey(sDetailName)) + oHashedEnrgiseForms.getDetailMap().put(sDetailName, oDetailScreen); + } + if (!this.oEnrgiseMap.containsKey(sFormName)) + this.oEnrgiseMap.put(sFormName, oHashedEnrgiseForms); + } + } + + public void setEnrApp(EnrgiseApp oEnrApp) { + this.appMap.put("DBName", oEnrApp.get_DBName()); + this.appMap.put("Module", oEnrApp.get_Module()); + } + + public HashMap getAppMap() { + return this.appMap; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/EnrgisePlugIn.java b/hrmsEjb/wenrgise/common/utility/EnrgisePlugIn.java new file mode 100644 index 0000000..8d0481a --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/EnrgisePlugIn.java @@ -0,0 +1,60 @@ +package wenrgise.common.utility; + +import com.tcs.wenrgise.util.common.FWXMLUtility; +import java.util.logging.Logger; +import javax.servlet.ServletException; +import org.apache.struts.action.ActionServlet; +import org.apache.struts.action.PlugIn; +import org.apache.struts.config.ModuleConfig; +import wenrgise.common.xml.vo.EnrgiseApp; +import wenrgise.common.xml.vo.EnrgiseForms; +import wenrgise.common.xml.vo.INFOClass; +import wenrgise.common.xml.vo.LOVClass; +import wenrgise.workflow.utility.WflDocParamsManager; +import wenrgise.workflow.xml.vo.WflDocParams; + +public class EnrgisePlugIn implements PlugIn { + static final Logger log = Logger.getLogger("wenrgise.common.utility.EnrgisePlugIn"); + + private String formPathName = "/WEB-INF/EnrgiseConfig.xml"; + + private String pathName = "/WEB-INF/EnrgiseLOV.xml"; + + private String appPath = "/WEB-INF/EnrgiseApp.xml"; + + private String reportPathName = "/WEB-INF/EnrgiseReport.xml"; + + private String wflImplPathName = "/WEB-INF/WflDocParameters.xml"; + + public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { + try { + EnrgiseForms oEnrgiseForms = (EnrgiseForms)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.EnrgiseForms", calculatePath(servlet, this.formPathName)); + EnrgiseManager.getInstance().init(oEnrgiseForms); + LOVClass oLOVClass = (LOVClass)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.LOVClass", calculatePath(servlet, this.pathName)); + LOVManager.getInstance().init(oLOVClass); + EnrgiseApp oEnrgiseApp = (EnrgiseApp)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.EnrgiseApp", calculatePath(servlet, this.appPath)); + EnrgiseManager.getInstance().setEnrApp(oEnrgiseApp); + WflDocParams oWflDocParams = (WflDocParams)FWXMLUtility.xmlToObject("wenrgise.workflow.xml.vo.WflDocParams", calculatePath(servlet, this.wflImplPathName)); + WflDocParamsManager.getInstance().init(oWflDocParams); + INFOClass oINFOClass = (INFOClass)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.INFOClass", calculatePath(servlet, this.reportPathName)); + StringBuffer woStringBuffer = new StringBuffer(); + woStringBuffer.append(" rwserver server=peerless"); + } catch (Exception oEx) { + log.severe(oEx.getMessage()); + } + } + + public void destroy() {} + + private String calculatePath(ActionServlet servlet, String sPath) { + return servlet.getServletContext().getRealPath(sPath); + } + + public String getFormPathName() { + return this.formPathName; + } + + public void setFormPathName(String newFormPathName) { + this.formPathName = newFormPathName; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/EnrgiseUtil.java b/hrmsEjb/wenrgise/common/utility/EnrgiseUtil.java new file mode 100644 index 0000000..0df8647 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/EnrgiseUtil.java @@ -0,0 +1,342 @@ +package wenrgise.common.utility; + +import java.lang.reflect.Array; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; + +public class EnrgiseUtil { + public static void pageArrayCopier(ArrayList oSource, ArrayList oDest, int iSourcePos, int iLength) throws EnrgiseSystemException { + if (oSource == null) { + System.out.println("Source array is null"); + throw new EnrgiseSystemException(); + } + if (oDest == null) { + System.out.println("Destination array is null"); + throw new EnrgiseSystemException(); + } + if (iLength < 0) { + System.out.println("Length should be positive"); + return; + } + if (oSource.size() < iSourcePos + iLength) { + System.out.println("The source array is out of range"); + return; + } + oDest.clear(); + for (int iIndex = iSourcePos; iIndex < iSourcePos + iLength; iIndex++) + oDest.add(oSource.get(iIndex)); + } + + public static ArrayList addToList(ArrayList oList, Object[] obj) { + for (int i = 0; i < obj.length; i++) + oList.add(obj[i]); + return oList; + } + + public static boolean checkString(String oInputString) { + if (oInputString == null) + return false; + String oString = new String(oInputString); + oString = oString.trim(); + if (oString.equals("")) + return false; + return true; + } + + public static int compareDates(DateFormat dateFormat, String sOrigDate, String sRefDate) throws EnrgiseSystemException { + if (!checkString(sOrigDate) || !checkString(sRefDate)) + return -2; + if (null == dateFormat) { + dateFormat = DateFormat.getDateInstance(2); + dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + } + try { + Date origDate = dateFormat.parse(sOrigDate); + Date refDate = dateFormat.parse(sRefDate); + return compareDates(origDate, refDate); + } catch (ParseException oParEx) { + System.out.println(String.valueOf("Date comparison problem ").concat(String.valueOf(oParEx.getMessage()))); + throw new EnrgiseSystemException(); + } + } + + public static int compareDates(Date origDate, Date refDate) { + if (null == origDate || null == refDate) + return -2; + if (origDate.equals(refDate)) + return 0; + if (origDate.before(refDate)) + return -1; + return 1; + } + + public static int compareWithSysdate(Date origDate) throws EnrgiseSystemException { + return compareDates(origDate, getSysDate()); + } + + public static int compareWithSysdate(DateFormat dateFormat, String sOrigDate) throws EnrgiseSystemException { + if (!checkString(sOrigDate)) + return -2; + if (null == dateFormat) + dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + try { + Date origDate = dateFormat.parse(sOrigDate); + return compareDates(origDate, getSysDate()); + } catch (ParseException oParEx) { + System.out.println(String.valueOf("Date comparison problem ").concat(String.valueOf(oParEx.getMessage()))); + throw new EnrgiseSystemException(); + } + } + + public static Date getSysDate() throws EnrgiseSystemException { + Date sysDate = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery("SELECT sysdate FROM dual"); + if (null != oList) { + QueryRow oRow = oList.get(0); + QueryValue oValue = oRow.get("sysDate"); + return oValue.getDate(); + } + return null; + } + + public static Object setFieldValue(Object obj, String sItem, String sItemValue) throws EnrgiseSystemException { + try { + Class oClass = obj.getClass(); + String sSetterMethod = getSetterMethodName(sItem); + String oStr = new String(); + Class[] oCls = { oStr.getClass() }; + Method oMethod = oClass.getMethod(sSetterMethod, oCls); + Object[] oParams = { sItemValue }; + return oMethod.invoke(obj, oParams); + } catch (NoSuchMethodException oNsEx) { + throw new EnrgiseSystemException(oNsEx); + } catch (IllegalAccessException oIlEx) { + throw new EnrgiseSystemException(oIlEx); + } catch (InvocationTargetException oInEx) { + throw new EnrgiseSystemException(oInEx); + } + } + + public static Object getFieldValue(Object obj, String sItem) throws EnrgiseSystemException { + try { + Class oClass = obj.getClass(); + String sGetterMethod = getGetterMethodName(sItem); + Method oMethod = oClass.getMethod(sGetterMethod, null); + return oMethod.invoke(obj, null); + } catch (NoSuchMethodException oNsEx) { + throw new EnrgiseSystemException(oNsEx); + } catch (IllegalAccessException oIlEx) { + throw new EnrgiseSystemException(oIlEx); + } catch (InvocationTargetException oInEx) { + throw new EnrgiseSystemException(oInEx); + } + } + + public static String getGetterMethodName(String sItem) { + String sFirstString = sItem.substring(0, 1); + String sRestString = sItem.substring(1); + String sFirst = sFirstString.toUpperCase(); + return String.valueOf(String.valueOf("get").concat(String.valueOf(sFirst))).concat(String.valueOf(sRestString)); + } + + public static String getSetterMethodName(String sItem) { + String sFirstString = sItem.substring(0, 1); + String sRestString = sItem.substring(1); + String sFirst = sFirstString.toUpperCase(); + return String.valueOf(String.valueOf("set").concat(String.valueOf(sFirst))).concat(String.valueOf(sRestString)); + } + + public static void checkDuplicate(ArrayList oList, String[] sItems, String sFieldKey, ArrayList oExceptionList) throws EnrgiseSystemException { + int index = 0; + Object[] oItemArray = null; + String[] oStatusArray = null; + ArrayList oRowList = new ArrayList(); + int iSize = oList.size(); + if (sItems != null) { + oItemArray = (Object[])Array.newInstance(Class.forName("java.lang.String"), iSize); + oStatusArray = (String[])Array.newInstance(Class.forName("java.lang.String"), iSize); + } else { + return; + } + if (null != sItems) { + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + Object obj = oIt.next(); + oItemArray[index] = getAllFieldsValue(obj, sItems); + oStatusArray[index++] = (String)getFieldValue(obj, "status"); + } + } + for (int iSource = 0; iSource < iSize; iSource++) { + if (null != oItemArray[iSource]) + if (null == oStatusArray[iSource] || !oStatusArray[iSource].equals("D")) + for (int iTarget = iSource + 1; iTarget < iSize; iTarget++) { + if (null != oItemArray[iTarget]) + if (null == oStatusArray || !oStatusArray[iTarget].equals("D")) + if (compareObject(oItemArray[iSource], oItemArray[iTarget])) { + ArrayList oArgList = new ArrayList(); + Integer oRow = new Integer(iSource + 1); + if (null != sFieldKey) { + MessageKey oMessageKey = new MessageKey(sFieldKey); + oArgList.add(oMessageKey); + oArgList.add(oRow); + oExceptionList.add(new EnrgiseMessageKeyException("wenrgise.common.field.combinatonNotUnique", oArgList, "E")); + } else { + oArgList.add(oRow); + oExceptionList.add(new EnrgiseApplicationException("wenrgise.common.duplicatefound", oArgList, "E")); + } + } + } + } + } + + public static void checkDuplicate(ArrayList oList, String sItem, String sFieldKey, ArrayList oExceptionList, boolean bCheckStatus) throws EnrgiseSystemException { + int index = 0; + Object[] oItemArray = null; + String[] oStatusArray = null; + if (null == oList) + return; + int iSize = oList.size(); + if (null != sItem) { + oItemArray = (Object[])Array.newInstance(sItem.getClass(), iSize); + if (bCheckStatus) + oStatusArray = (String[])Array.newInstance(sItem.getClass(), iSize); + } else { + oItemArray = (Object[])Array.newInstance(oList.get(0).getClass(), iSize); + } + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + Object obj = oIt.next(); + if (null != sItem) { + oItemArray[index] = getFieldValue(obj, sItem); + oStatusArray[index++] = (String)getFieldValue(obj, "status"); + continue; + } + oItemArray[index++] = obj; + } + for (int iSource = 0; iSource < iSize; iSource++) { + if (null != oItemArray[iSource]) + if (null == oStatusArray[iSource] || !oStatusArray[iSource].equals("D")) + for (int iTarget = iSource + 1; iTarget < iSize; iTarget++) { + if (null != oItemArray[iTarget]) + if (null == oStatusArray || !oStatusArray[iTarget].equals("D")) + if (compareObject(oItemArray[iSource], oItemArray[iTarget])) { + ArrayList oArgList = new ArrayList(); + Integer oRow = new Integer(iSource + 1); + if (null != sFieldKey) { + MessageKey oMessageKey = new MessageKey(sFieldKey); + oArgList.add(oMessageKey); + oArgList.add(oRow); + oExceptionList.add(new EnrgiseMessageKeyException("wenrgise.common.field.duplicatefound", oArgList, "E")); + } else { + oArgList.add(oRow); + oExceptionList.add(new EnrgiseApplicationException("wenrgise.common.duplicatefound", oArgList, "E")); + } + } + } + } + } + + private static String getAllFieldsValue(Object obj, String[] sItems) throws EnrgiseSystemException { + String sValues = " "; + for (int i = 0; i < sItems.length; i++) { + String sValue = (String)getFieldValue(obj, sItems[i]); + if (null != sValue) + sValues = String.valueOf(sValues).concat(String.valueOf(sValue.trim())); + } + return sValues.trim(); + } + + private static boolean compareObject(Object oSource, Object oTarget) { + if (oSource.getClass().getName().equals("java.lang.String")) { + String sSource = ((String)oSource).trim(); + String sTarget = ((String)oTarget).trim(); + if (sSource.equalsIgnoreCase(sTarget)) + return true; + } else if (oSource.equals(oTarget)) { + return true; + } + return false; + } + + public static Timestamp convertToSqlDate(String sDate) throws EnrgiseSystemException { + if (!checkString(sDate)) + return null; + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + try { + Date oDate = dateFormat.parse(sDate); + return new Timestamp(oDate.getTime()); + } catch (ParseException oParEx) { + System.out.println(String.valueOf("Date comparison problem ").concat(String.valueOf(oParEx.getMessage()))); + throw new EnrgiseSystemException(); + } + } + + public static String convertToString(Date oDate) { + return (null != oDate) ? (new SimpleDateFormat("dd-MMM-yyyy")).format(oDate) : null; + } + + public static boolean checkNumber(String sInputValue, int iScale, int iPrecision, String sSign) { + String sLeft = null; + String sRight = null; + boolean bDecimal = false; + if (checkString(sInputValue)) { + String sVal = sInputValue.trim(); + int iDecimalIndex = sVal.indexOf("."); + if (iDecimalIndex != -1) { + sLeft = sVal.substring(0, iDecimalIndex); + sRight = sVal.substring(iDecimalIndex + 1); + } else { + sLeft = sVal; + } + if (!sLeft.startsWith("+") && !sLeft.startsWith("-")) + sLeft = String.valueOf("+").concat(String.valueOf(sLeft)); + if (iPrecision == 0 && iScale == 0) + return false; + try { + if (iPrecision == 0) { + long lVal = Long.parseLong(sVal); + if (sLeft.length() <= iScale + 1) { + if (Double.parseDouble(sLeft) == false && (sSign.equals("N") || sSign.equals("P"))) + return false; + } else { + return false; + } + } else { + double d = Double.parseDouble(sVal); + } + } catch (NumberFormatException oNumEx) { + return false; + } + if (sLeft.length() > iScale + 1) + return false; + if (null != sRight) + if (sRight.length() > iPrecision) + return false; + if (null != sSign) { + if (sSign.equals("N") && !sLeft.startsWith("-")) + return false; + if (sSign.equals("P") && !sLeft.startsWith("+")) + return false; + if (sSign.equals("NN") && sLeft.startsWith("-")) + return false; + if (sSign.equals("NP") && sLeft.startsWith("+")) + return false; + } + } + return true; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/LOVManager.java b/hrmsEjb/wenrgise/common/utility/LOVManager.java new file mode 100644 index 0000000..eb729ea --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/LOVManager.java @@ -0,0 +1,111 @@ +package wenrgise.common.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.xml.vo.LOV; +import wenrgise.common.xml.vo.LOVClass; +import wenrgise.common.xml.vo.LOVInfo; +import wenrgise.common.xml.vo.Screen; +import wenrgise.common.xml.vo.ScreenMode; +import wenrgise.common.xml.vo.ScreenModes; +import wenrgise.common.xml.vo.Screens; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; + +public class LOVManager { + private static LOVManager me; + + private HashMap oMap = new HashMap(); + + public static LOVManager getInstance() { + if (me == null) + me = new LOVManager(); + return me; + } + + public LOVInfo getCachedObject(String name_) { + if (name_ == null || name_.trim().length() <= 0) + return null; + return (LOVInfo)this.oMap.get(name_); + } + + public void init(LOVClass oLOVClass) { + if (oLOVClass == null) + return; + ArrayList oList = oLOVClass.get_LOV(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + LOV oLOV = oIt.next(); + String sLOVName = oLOV.get_LovKey(); + Screens oScreens = oLOV.get_Screens(); + Iterator oScreenIt = oScreens.get_Screen().iterator(); + while (oScreenIt.hasNext()) { + Screen oScreen = oScreenIt.next(); + String sScreenName = oScreen.get_ScreenName(); + ScreenModes oScreenModes = oScreen.get_ScreenModes(); + Iterator oScreenModeIt = oScreenModes.get_ScreenMode().iterator(); + while (oScreenModeIt.hasNext()) { + ScreenMode oScreenMode = oScreenModeIt.next(); + String sMode = oScreenMode.get_ModeName(); + LOVInfo oLOVInfo = new LOVInfo(); + oLOVInfo.setFacadeName(oScreenMode.get_FacadeName()); + oLOVInfo.setFunctionName(oScreenMode.get_FunctionName()); + oLOVInfo.setInsertFlag(oScreenMode.get_InsertFlag()); + oLOVInfo.setRecursiveFlag(oScreenMode.get_RecursiveFlag()); + String sCombinedKey = String.valueOf(String.valueOf(sLOVName).concat(String.valueOf(sScreenName))).concat(String.valueOf(sMode)); + if (!this.oMap.containsKey(sCombinedKey)) + this.oMap.put(sCombinedKey, oLOVInfo); + } + } + } + } + + public static void main(String[] argv) { + LOVManager oLov = new LOVManager(); + oLov.myFunc2(); + } + + private void myFunc() { + try { + String sDate = "12-JAN-1980"; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters.add(new DBObject(1, 1, 4, new Integer(2))); + oParameters.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + oParameters.add(new DBObject(3, 2, 4)); + oBean.callProc(oParameters, "BASU_AREA.proc_DateTester(?,?,?)"); + System.out.println("Insert successfull"); + } catch (EnrgiseSystemException oEx) { + System.out.println(String.valueOf("The problem is ").concat(String.valueOf(oEx.getMessage()))); + } + } + + private void myFunc2() { + try { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters.add(new DBObject(1, 1, 93, EnrgiseUtil.convertToSqlDate("12-JAN-1980"))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 4)); + ArrayList oList2 = oBean.callProc(oParameters, "BASU_AREA.proc_DateTester2(?,?,?)"); + DBObject oOutObject = oList2.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + QueryValue oVal = oRow.get("ID"); + String sId = oVal.getString(); + QueryValue oVal2 = oRow.get("purchase_date"); + String sDate = EnrgiseUtil.convertToString(oVal2.getDate()); + System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf("ID is ").concat(String.valueOf(sId))).concat(String.valueOf(" "))).concat(String.valueOf("Purchase Date is "))).concat(String.valueOf(sDate))); + } + System.out.println("Fetch successfull"); + } catch (EnrgiseSystemException oEx) { + System.out.println(String.valueOf("The problem is ").concat(String.valueOf(oEx.getMessage()))); + } + } +} diff --git a/hrmsEjb/wenrgise/common/utility/MessageKey.java b/hrmsEjb/wenrgise/common/utility/MessageKey.java new file mode 100644 index 0000000..1133b36 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/MessageKey.java @@ -0,0 +1,21 @@ +package wenrgise.common.utility; + +import java.io.Serializable; + +public class MessageKey implements Serializable { + private String key; + + public MessageKey() {} + + public MessageKey(String key) { + this.key = key; + } + + public String getKey() { + return this.key; + } + + public void setKey(String newKey) { + this.key = newKey; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/ParamUtil.java b/hrmsEjb/wenrgise/common/utility/ParamUtil.java new file mode 100644 index 0000000..a3d39e3 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/ParamUtil.java @@ -0,0 +1,94 @@ +package wenrgise.common.utility; + +import java.util.ArrayList; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.common.xml.vo.DetailScreens; +import wenrgise.common.xml.vo.HashedEnrgiseForms; +import wenrgise.common.xml.vo.ReportInfo; +import wenrgise.common.xml.vo.SingleForm; + +public class ParamUtil { + public static String getDBName() { + return (String)EnrgiseManager.getInstance().getAppMap().get("DBName"); + } + + public static String getModuleName() { + return (String)EnrgiseManager.getInstance().getAppMap().get("Module"); + } + + public static String getQueryVO(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_EnrgiseQueryVO(); + } + + public static String getHeaderBD(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderBD(); + } + + public static String getHeaderSaveRequired(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderSave(); + } + + public static String getPseudoHeaderFlag(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_PseudoHeader(); + } + + public static String getDetailBD(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailBD(); + } + + public static String getDetailArrayName(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailArrayName(); + } + + public static String getDetailBeanName(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailBean(); + } + + public static String getSessionBeanName() { + return String.valueOf(getModuleName()).concat(String.valueOf("_UserSession")); + } + + public static String getHeaderBean(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderBean(); + } + + public static int getHeaderSize(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return Integer.parseInt(oHashedEnrgiseForms.getSingleForm().get_HeaderSize()); + } + + public static int getDetailRecordPerPage(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return Integer.parseInt(oDetailScreen.get_DetailRecordPerPage()); + } + + public static int getMaxDetailPages(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return Integer.parseInt(oDetailScreen.get_DetailPagesPerSlot()); + } + + public static ArrayList getDetailList(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + SingleForm oSingleForm = oHashedEnrgiseForms.getSingleForm(); + DetailScreens oDetailScreens = oSingleForm.get_DetailScreens(); + return oDetailScreens.get_DetailScreen(); + } + + public static String getKeyinfo(String sMODULEname, String sJSPname, String sReportkey) { + ReportInfo oReportInfo = ReportManager.getInstance().getCachedObject(String.valueOf(String.valueOf(sMODULEname).concat(String.valueOf(sJSPname))).concat(String.valueOf(sReportkey))); + return oReportInfo.getReportKey(); + } +} diff --git a/hrmsEjb/wenrgise/common/utility/RecordMetaInfo.java b/hrmsEjb/wenrgise/common/utility/RecordMetaInfo.java new file mode 100644 index 0000000..2798799 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/RecordMetaInfo.java @@ -0,0 +1,26 @@ +package wenrgise.common.utility; + +import java.io.Serializable; +import java.sql.Timestamp; + +public class RecordMetaInfo implements Serializable { + private Timestamp oWhenPicked = null; + + private long recordCount = 0L; + + public long getRecordCount() { + return this.recordCount; + } + + public void setRecordCount(long newRecordCount) { + this.recordCount = newRecordCount; + } + + public Timestamp getOWhenPicked() { + return this.oWhenPicked; + } + + public void setOWhenPicked(Timestamp newOWhenPicked) { + this.oWhenPicked = newOWhenPicked; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/ReportManager.java b/hrmsEjb/wenrgise/common/utility/ReportManager.java new file mode 100644 index 0000000..e762061 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/ReportManager.java @@ -0,0 +1,58 @@ +package wenrgise.common.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.xml.vo.INFOClass; +import wenrgise.common.xml.vo.Module; +import wenrgise.common.xml.vo.Report; +import wenrgise.common.xml.vo.ReportInfo; +import wenrgise.common.xml.vo.Reports; +import wenrgise.common.xml.vo.ScreenInfo; + +public class ReportManager { + private static ReportManager me; + + private HashMap oMap = new HashMap(); + + public static ReportManager getInstance() { + if (me == null) + me = new ReportManager(); + return me; + } + + public ReportInfo getCachedObject(String name_) { + if (name_ == null || name_.trim().length() <= 0) + return null; + return (ReportInfo)this.oMap.get(name_); + } + + public void init(INFOClass oINFOClass) { + if (oINFOClass == null) + return; + ArrayList oList = oINFOClass.get_Module(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + Module oModule = oIt.next(); + String sModuleName = oModule.get_ModuleName(); + ArrayList oScreenInfoList = oModule.get_ScreenInfo(); + Iterator oScreenInfoIt = oScreenInfoList.iterator(); + while (oScreenInfoIt.hasNext()) { + ScreenInfo oScreenInfo = oScreenInfoIt.next(); + String sScreenName = oScreenInfo.get_ScreenName(); + Reports oReports = oScreenInfo.get_Reports(); + ArrayList oReportList = oReports.get_Report(); + Iterator oReportIt = oReportList.iterator(); + while (oReportIt.hasNext()) { + Report oReport = oReportIt.next(); + ReportInfo oReportInfo = new ReportInfo(); + oReportInfo.setReportKey(oReport.get_ReportKey()); + String sCombinedKey = String.valueOf(String.valueOf(sModuleName).concat(String.valueOf(sScreenName))).concat(String.valueOf(oReport.get_KeyInfo())); + System.out.println(String.valueOf("The key is ").concat(String.valueOf(sCombinedKey))); + if (!this.oMap.containsKey(sCombinedKey)) + this.oMap.put(sCombinedKey, oReportInfo); + } + } + } + } +} diff --git a/hrmsEjb/wenrgise/common/utility/ReportPlugin.java b/hrmsEjb/wenrgise/common/utility/ReportPlugin.java new file mode 100644 index 0000000..09804a7 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/ReportPlugin.java @@ -0,0 +1,18 @@ +package wenrgise.common.utility; + +import javax.servlet.ServletException; +import org.apache.struts.action.ActionServlet; +import org.apache.struts.action.PlugIn; +import org.apache.struts.config.ModuleConfig; + +public class ReportPlugin implements PlugIn { + private String reportPathName = "/WEB-INF/EnrgiseReport.xml"; + + public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {} + + public void destroy() {} + + private String calculatePath(ActionServlet servlet, String sPath) { + return servlet.getServletContext().getRealPath(sPath); + } +} diff --git a/hrmsEjb/wenrgise/common/utility/ReportReader.java b/hrmsEjb/wenrgise/common/utility/ReportReader.java new file mode 100644 index 0000000..5bcab5b --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/ReportReader.java @@ -0,0 +1,39 @@ +package wenrgise.common.utility; + +public class ReportReader { + String parameter; + + String parameterValue; + + public String getAppServerName() { + return "reportserver"; + } + + public String getAppServerPortNumber() { + return "8888"; + } + + public String getAppServerReportPathAlias() { + return "reports"; + } + + public String getStatsRep() { + return "statusKey"; + } + + public String getParameter() { + return this.parameter; + } + + public void setParameter(String newParameter) { + this.parameter = newParameter; + } + + public String getParameterValue() { + return this.parameterValue; + } + + public void setParameterValue(String newParameterValue) { + this.parameterValue = newParameterValue; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/ServiceLocator.java b/hrmsEjb/wenrgise/common/utility/ServiceLocator.java new file mode 100644 index 0000000..22775fa --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/ServiceLocator.java @@ -0,0 +1,83 @@ +package wenrgise.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; + +public class ServiceLocator { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static ServiceLocator serviceLocator = new ServiceLocator(); + + private ServiceLocator() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static ServiceLocator getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName.trim())) { + Context context = ContextProvider.getContext(); + this.homeCache.put(jndiName.trim(), context.lookup(jndiName.trim())); + } + } catch (NamingException oNa) { + oNa.printStackTrace(); + System.out.println(oNa.getExplanation()); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName.trim()); + } + + public Object getLocalService(String jndiHomeName) throws EnrgiseSystemException { + Object obj = null; + try { + Context context = ContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + obj = this.cacheMap.get(jndiHomeName); + } else { + obj = context.lookup(jndiHomeName); + this.cacheMap.put(jndiHomeName, obj); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return obj; + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + System.out.println(String.valueOf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").concat(String.valueOf(jndiHomeName))); + EJBLocalHome home = null; + try { + Context context = ContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + System.out.println(ne); + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return home; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/UserInfo.java b/hrmsEjb/wenrgise/common/utility/UserInfo.java new file mode 100644 index 0000000..e941c98 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/UserInfo.java @@ -0,0 +1,175 @@ +package wenrgise.common.utility; + +import java.io.Serializable; + +public class UserInfo implements Serializable { + private String userSystemId; + + private String userId; + + private String siteId; + + private String userType; + + private String userTypeId; + + private String userLocked; + + private String userActiveFlag; + + private String userName; + + private String siteName; + + private String currentYear; + + private boolean superUser = false; + + private String moduleId; + + private String gradeId; + + private String grade; + + private String desigId; + + private String designation; + + private String siteCode; + + public String getUserName() { + return this.userName; + } + + public void setUserName(String newUserName) { + this.userName = newUserName; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getUserActiveFlag() { + return this.userActiveFlag; + } + + public void setUserActiveFlag(String newUserActiveFlag) { + this.userActiveFlag = newUserActiveFlag; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String newUserId) { + this.userId = newUserId; + } + + public String getUserLocked() { + return this.userLocked; + } + + public void setUserLocked(String newUserLocked) { + this.userLocked = newUserLocked; + } + + public String getUserSystemId() { + return this.userSystemId; + } + + public void setUserSystemId(String newUserSystemId) { + this.userSystemId = newUserSystemId; + } + + public String getUserType() { + return this.userType; + } + + public void setUserType(String newUserType) { + this.userType = newUserType; + } + + public String getUserTypeId() { + return this.userTypeId; + } + + public void setUserTypeId(String newUserTypeId) { + this.userTypeId = newUserTypeId; + } + + public String getCurrentYear() { + return this.currentYear; + } + + public void setCurrentYear(String newCurrentYear) { + this.currentYear = newCurrentYear; + } + + public boolean isSuperUser() { + return this.superUser; + } + + public void setSuperUser(boolean newSuperUser) { + this.superUser = newSuperUser; + } + + public String getModuleId() { + return this.moduleId; + } + + public void setModuleId(String newModuleId) { + this.moduleId = newModuleId; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider.java b/hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider.java new file mode 100644 index 0000000..e54478b --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider.java @@ -0,0 +1,32 @@ +package wenrgise.common.utility; + +import java.util.Hashtable; +import javax.naming.Context; +import javax.naming.InitialContext; + +public class WorkFlowContextProvider { + private Context ctx = null; + + public static InitialContext localContext; + + private static WorkFlowContextProvider objContextProvider = new WorkFlowContextProvider(); + + private WorkFlowContextProvider() { + try { + Hashtable env = new Hashtable(); + env.put("java.naming.factory.initial", "com.ibm.websphere.naming.WsnInitialContextFactory"); + env.put("java.naming.provider.url", "iiop://tcs093390:2811"); + this.ctx = new InitialContext(env); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static Context getContext() { + return objContextProvider.ctx; + } + + public static InitialContext getLocalContext() { + return localContext; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider2.java b/hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider2.java new file mode 100644 index 0000000..cc30665 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/WorkFlowContextProvider2.java @@ -0,0 +1,35 @@ +package wenrgise.common.utility; + +import java.util.Hashtable; +import javax.naming.Context; +import javax.naming.InitialContext; + +public class WorkFlowContextProvider2 { + private Context ctx = null; + + public static InitialContext localContext; + + private static WorkFlowContextProvider2 objContextProvider = new WorkFlowContextProvider2(); + + private WorkFlowContextProvider2() { + try { + Hashtable env = new Hashtable(); + env.put("java.naming.factory.initial", "com.evermind.server.rmi.RMIInitialContextFactory"); + env.put("java.naming.security.principal", "admin"); + env.put("dedicated.rmicontext", "true"); + env.put("java.naming.security.credentials", "welcome"); + env.put("java.naming.provider.url", "ormi://tcs041981:23892/current-workspace-app"); + this.ctx = new InitialContext(env); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static Context getContext() { + return objContextProvider.ctx; + } + + public static InitialContext getLocalContext() { + return localContext; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator.java b/hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator.java new file mode 100644 index 0000000..e105176 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator.java @@ -0,0 +1,61 @@ +package wenrgise.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; + +public class WorkFlowServiceLocator { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static WorkFlowServiceLocator serviceLocator = new WorkFlowServiceLocator(); + + private WorkFlowServiceLocator() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static WorkFlowServiceLocator getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName)) { + Context context = WorkFlowContextProvider.getContext(); + this.homeCache.put(jndiName, context.lookup(jndiName)); + } + } catch (NamingException oNa) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oNa.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oNa.getClass().getName()))); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oEx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oEx.getClass().getName()))); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName); + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + EJBLocalHome home = null; + try { + jndiHomeName = jndiHomeName.trim(); + Context context = WorkFlowContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return home; + } +} diff --git a/hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator2.java b/hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator2.java new file mode 100644 index 0000000..194d1b9 --- /dev/null +++ b/hrmsEjb/wenrgise/common/utility/WorkFlowServiceLocator2.java @@ -0,0 +1,61 @@ +package wenrgise.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; + +public class WorkFlowServiceLocator2 { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static WorkFlowServiceLocator2 serviceLocator = new WorkFlowServiceLocator2(); + + private WorkFlowServiceLocator2() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static WorkFlowServiceLocator2 getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName)) { + Context context = WorkFlowContextProvider2.getContext(); + this.homeCache.put(jndiName, context.lookup(jndiName)); + } + } catch (NamingException oNa) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oNa.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oNa.getClass().getName()))); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oEx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oEx.getClass().getName()))); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName); + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + EJBLocalHome home = null; + try { + jndiHomeName = jndiHomeName.trim(); + Context context = WorkFlowContextProvider2.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return home; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/BaseDetailInfo.java b/hrmsEjb/wenrgise/common/vo/BaseDetailInfo.java new file mode 100644 index 0000000..070fcd0 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/BaseDetailInfo.java @@ -0,0 +1,5 @@ +package wenrgise.common.vo; + +import java.io.Serializable; + +public class BaseDetailInfo implements Serializable {} diff --git a/hrmsEjb/wenrgise/common/vo/BaseDetailVO.java b/hrmsEjb/wenrgise/common/vo/BaseDetailVO.java new file mode 100644 index 0000000..20b67d6 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/BaseDetailVO.java @@ -0,0 +1,144 @@ +package wenrgise.common.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class BaseDetailVO extends BaseVO implements Serializable { + private int recordsPerPage = 0; + + private int maxPage = 0; + + private long currentPage = 0L; + + private long currentSlot = 0L; + + private long totalDetailRecord = 0L; + + private ArrayList oThisPageData = null; + + private ArrayList oAllPageData = null; + + int rowAdded = 0; + + int rowDeleted = 0; + + public BaseDetailVO() { + this.oThisPageData = new ArrayList(); + this.oAllPageData = new ArrayList(); + this.currentSlot = 0L; + } + + public void reset() { + this.currentPage = 0L; + this.currentSlot = 0L; + this.oThisPageData = new ArrayList(); + this.oAllPageData = new ArrayList(); + } + + public ArrayList getOAllPageData() { + return this.oAllPageData; + } + + public void setOAllPageData(ArrayList newOAllPageData) { + this.oAllPageData = newOAllPageData; + } + + public ArrayList getOThisPageData() { + return this.oThisPageData; + } + + public void setOThisPageData(ArrayList newOThisPageData) { + this.oThisPageData = newOThisPageData; + } + + public long getTotalDetailRecord() { + return this.totalDetailRecord; + } + + public void setTotalDetailRecord(long newTotalDetailRecord) { + this.totalDetailRecord = newTotalDetailRecord; + } + + public int getRowAdded() { + return this.rowAdded; + } + + public void setRowAdded(int newRowAdded) { + this.rowAdded = newRowAdded; + } + + public int getRowDeleted() { + return this.rowDeleted; + } + + public void setRowDeleted(int newRowDeleted) { + this.rowDeleted = newRowDeleted; + } + + public long getCurrentPage() { + return this.currentPage; + } + + public void setCurrentPage(long newCurrentPage) { + this.currentPage = newCurrentPage; + } + + public long getCurrentSlot() { + return this.currentSlot; + } + + public void setCurrentSlot(long newCurrentSlot) { + this.currentSlot = newCurrentSlot; + } + + public int getMaxPage() { + return this.maxPage; + } + + public void setMaxPage(int newMaxPage) { + this.maxPage = newMaxPage; + } + + public int getRecordsPerPage() { + return this.recordsPerPage; + } + + public void setRecordsPerPage(int newRecordsPerPage) { + this.recordsPerPage = newRecordsPerPage; + } + + public long getSlot(long lPageRequested) { + return (lPageRequested % this.maxPage != 0L) ? (lPageRequested / this.maxPage + 1L) : (lPageRequested / this.maxPage); + } + + public int getRelativeStart(long lPageRequested) { + long lAbsoluteIndex = (lPageRequested - 1L) * this.recordsPerPage + 1L; + return (int)(lAbsoluteIndex % (this.recordsPerPage * this.maxPage)) - 1; + } + + public int getRelativeEnd(long lPageRequested) { + long lAbsoluteIndexStart = (lPageRequested - 1L) * this.recordsPerPage; + long lAbsoluteEnd = (lAbsoluteIndexStart + this.recordsPerPage < this.totalDetailRecord) ? (lAbsoluteIndexStart + this.recordsPerPage) : this.totalDetailRecord; + int iMod = (int)(lAbsoluteEnd % (this.recordsPerPage * this.maxPage)); + if (iMod != 0) + return iMod - 1; + return this.recordsPerPage * this.maxPage - 1; + } + + public long getAbsoluteStart(long lPageRequested) { + return (lPageRequested - 1L) * this.recordsPerPage + 1L; + } + + public long getAbsoluteEnd(long lPageRequested) { + long lStart = (lPageRequested - 1L) * this.recordsPerPage; + return (lStart + (this.recordsPerPage * this.maxPage) < this.totalDetailRecord) ? (lStart + (this.recordsPerPage * this.maxPage)) : this.totalDetailRecord; + } + + public long getSlotStartPosition() { + return (this.currentSlot - 1L) * this.recordsPerPage * this.maxPage + 1L; + } + + public long getSlotLastPosition() { + return (this.currentSlot * this.recordsPerPage * this.maxPage < this.totalDetailRecord) ? (this.currentSlot * this.recordsPerPage * this.maxPage) : this.totalDetailRecord; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/BaseHeaderVO.java b/hrmsEjb/wenrgise/common/vo/BaseHeaderVO.java new file mode 100644 index 0000000..a684042 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/BaseHeaderVO.java @@ -0,0 +1,85 @@ +package wenrgise.common.vo; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.util.ArrayList; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; + +public class BaseHeaderVO extends BaseVO implements Serializable { + private ArrayList oHeaderVOTable = new ArrayList(); + + private long positionRequested = 0L; + + private long currentSlot = 0L; + + private long totalCount = 0L; + + private long maxHeaderSize = 0L; + + private Timestamp oWhenPicked = null; + + public ArrayList getOHeaderVOTable() { + return this.oHeaderVOTable; + } + + public long getHeaderStartPosition() throws EnrgiseApplicationException { + int iSlot = getSlot(); + return (iSlot - 1) * this.maxHeaderSize + 1L; + } + + public long getHeaderLastPosition() throws EnrgiseApplicationException { + int iSlot = getSlot(); + return (iSlot * this.maxHeaderSize < this.totalCount) ? (iSlot * this.maxHeaderSize) : this.totalCount; + } + + public int getSlot() throws EnrgiseApplicationException { + if (this.positionRequested < 0L || this.positionRequested > this.totalCount) + throw new EnrgiseApplicationException("wenrgise.common.navigation", "E"); + return ((int)(this.positionRequested % this.maxHeaderSize) != 0) ? (int)((int)this.positionRequested / this.maxHeaderSize + 1L) : (int)(this.positionRequested / this.maxHeaderSize); + } + + public void setOHeaderVOTable(ArrayList newOHeaderVOTable) { + this.oHeaderVOTable = newOHeaderVOTable; + } + + public BaseHeaderBean getHeaderRecord(int iPosition) throws EnrgiseApplicationException { + if (this.oHeaderVOTable == null) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + if (this.oHeaderVOTable.size() == 0 || this.oHeaderVOTable.size() < iPosition) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + return this.oHeaderVOTable.get(iPosition - 1); + } + + public long getPositionRequested() { + return this.positionRequested; + } + + public void setPositionRequested(long newPositionRequested) { + this.positionRequested = newPositionRequested; + } + + public long getCurrentSlot() { + return this.currentSlot; + } + + public void setCurrentSlot(long newCurrentSlot) { + this.currentSlot = newCurrentSlot; + } + + public long getTotalCount() { + return this.totalCount; + } + + public void setTotalCount(long newTotalCount) { + this.totalCount = newTotalCount; + } + + public long getMaxHeaderSize() { + return this.maxHeaderSize; + } + + public void setMaxHeaderSize(long newMaxHeaderSize) { + this.maxHeaderSize = newMaxHeaderSize; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/BaseQueryVO.java b/hrmsEjb/wenrgise/common/vo/BaseQueryVO.java new file mode 100644 index 0000000..6f2fb24 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/BaseQueryVO.java @@ -0,0 +1,45 @@ +package wenrgise.common.vo; + +import java.io.Serializable; + +public class BaseQueryVO implements Serializable { + private long positionRequested = 0L; + + private String headerPrimaryKey = null; + + private int maxHeaderSize = 0; + + private String workListId; + + public long getPositionRequested() { + return this.positionRequested; + } + + public void setPositionRequested(long newPositionRequested) { + this.positionRequested = newPositionRequested; + } + + public String getHeaderPrimaryKey() { + return this.headerPrimaryKey; + } + + public void setHeaderPrimaryKey(String newHeaderPrimaryKey) { + this.headerPrimaryKey = newHeaderPrimaryKey; + } + + public int getMaxHeaderSize() { + return this.maxHeaderSize; + } + + public void setMaxHeaderSize(int newMaxHeaderSize) { + this.maxHeaderSize = newMaxHeaderSize; + } + + public String getWorkListId() { + return this.workListId; + } + + public void setWorkListId(String newWorkListId) { + this.workListId = newWorkListId; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/BaseVO.java b/hrmsEjb/wenrgise/common/vo/BaseVO.java new file mode 100644 index 0000000..9c30dcf --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/BaseVO.java @@ -0,0 +1,36 @@ +package wenrgise.common.vo; + +import java.io.Serializable; +import java.sql.Timestamp; + +public class BaseVO implements Serializable { + private Timestamp oWhenPicked = null; + + private long firstPosition = 0L; + + private long lastPosition = 0L; + + public Timestamp getOWhenPicked() { + return this.oWhenPicked; + } + + public void setOWhenPicked(Timestamp newOWhenPicked) { + this.oWhenPicked = newOWhenPicked; + } + + public long getFirstPosition() { + return this.firstPosition; + } + + public void setFirstPosition(long newFirstPosition) { + this.firstPosition = newFirstPosition; + } + + public long getLastPosition() { + return this.lastPosition; + } + + public void setLastPosition(long newLastPosition) { + this.lastPosition = newLastPosition; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/ComboVO.java b/hrmsEjb/wenrgise/common/vo/ComboVO.java new file mode 100644 index 0000000..2cc605b --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/ComboVO.java @@ -0,0 +1,30 @@ +package wenrgise.common.vo; + +import java.io.Serializable; + +public class ComboVO implements Serializable { + private String label; + + private String value; + + public ComboVO(String newLabel, String newValue) { + this.label = newLabel; + this.value = newValue; + } + + public String getLabel() { + return this.label; + } + + public void setLabel(String newLabel) { + this.label = newLabel; + } + + public String getValue() { + return this.value; + } + + public void setValue(String newValue) { + this.value = newValue; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/DetailSizeValues.java b/hrmsEjb/wenrgise/common/vo/DetailSizeValues.java new file mode 100644 index 0000000..9def3b1 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/DetailSizeValues.java @@ -0,0 +1,25 @@ +package wenrgise.common.vo; + +import java.io.Serializable; + +public class DetailSizeValues implements Serializable { + int detailRecordPerPage = 0; + + int maxPages = 0; + + public int getDetailRecordPerPage() { + return this.detailRecordPerPage; + } + + public void setDetailRecordPerPage(int newDetailRecordPerPage) { + this.detailRecordPerPage = newDetailRecordPerPage; + } + + public int getMaxPages() { + return this.maxPages; + } + + public void setMaxPages(int newMaxPages) { + this.maxPages = newMaxPages; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/LovQueryVO.java b/hrmsEjb/wenrgise/common/vo/LovQueryVO.java new file mode 100644 index 0000000..4718357 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/LovQueryVO.java @@ -0,0 +1,96 @@ +package wenrgise.common.vo; + +import java.io.Serializable; +import java.util.Properties; + +public class LovQueryVO extends Properties implements Serializable { + private String searchField1; + + private String searchField2; + + private int level; + + private int finalLevel; + + private int initialLevel; + + private String searchField3; + + private String searchField4; + + private String searchField5; + + private String searchField6; + + public String getSearchField1() { + return this.searchField1; + } + + public void setSearchField1(String newSearchField1) { + this.searchField1 = newSearchField1; + } + + public String getSearchField2() { + return this.searchField2; + } + + public void setSearchField2(String newSearchField2) { + this.searchField2 = newSearchField2; + } + + public int getLevel() { + return this.level; + } + + public void setLevel(int newLevel) { + this.level = newLevel; + } + + public int getFinalLevel() { + return this.finalLevel; + } + + public void setFinalLevel(int newFinalLevel) { + this.finalLevel = newFinalLevel; + } + + public int getInitialLevel() { + return this.initialLevel; + } + + public void setInitialLevel(int newInitialLevel) { + this.initialLevel = newInitialLevel; + } + + public String getSearchField3() { + return this.searchField3; + } + + public void setSearchField3(String newSearchField3) { + this.searchField3 = newSearchField3; + } + + public String getSearchField4() { + return this.searchField4; + } + + public void setSearchField4(String newSearchField4) { + this.searchField4 = newSearchField4; + } + + public String getSearchField5() { + return this.searchField5; + } + + public void setSearchField5(String newSearchField5) { + this.searchField5 = newSearchField5; + } + + public String getSearchField6() { + return this.searchField6; + } + + public void setSearchField6(String newSearchField6) { + this.searchField6 = newSearchField6; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/LovVO.java b/hrmsEjb/wenrgise/common/vo/LovVO.java new file mode 100644 index 0000000..0b3c347 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/LovVO.java @@ -0,0 +1,66 @@ +package wenrgise.common.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class LovVO implements Serializable { + private ArrayList detailList; + + private ArrayList headerList; + + private ArrayList visibilityList; + + private int finalLevel; + + private int level; + + private int initialLevel; + + public ArrayList getDetailList() { + return this.detailList; + } + + public void setDetailList(ArrayList newDetailList) { + this.detailList = newDetailList; + } + + public ArrayList getHeaderList() { + return this.headerList; + } + + public void setHeaderList(ArrayList newHeaderList) { + this.headerList = newHeaderList; + } + + public ArrayList getVisibilityList() { + return this.visibilityList; + } + + public void setVisibilityList(ArrayList newVisibilityList) { + this.visibilityList = newVisibilityList; + } + + public int getFinalLevel() { + return this.finalLevel; + } + + public void setFinalLevel(int newFinalLevel) { + this.finalLevel = newFinalLevel; + } + + public int getLevel() { + return this.level; + } + + public void setLevel(int newLevel) { + this.level = newLevel; + } + + public int getInitialLevel() { + return this.initialLevel; + } + + public void setInitialLevel(int newInitialLevel) { + this.initialLevel = newInitialLevel; + } +} diff --git a/hrmsEjb/wenrgise/common/vo/ThisPageVO.java b/hrmsEjb/wenrgise/common/vo/ThisPageVO.java new file mode 100644 index 0000000..16f44a2 --- /dev/null +++ b/hrmsEjb/wenrgise/common/vo/ThisPageVO.java @@ -0,0 +1,57 @@ +package wenrgise.common.vo; + +import java.io.Serializable; +import java.util.ArrayList; +import wenrgise.common.bean.BaseHeaderBean; + +public class ThisPageVO extends BaseVO implements Serializable { + private BaseHeaderBean oHeaderBean; + + private ArrayList oDetailList; + + private String screenMode; + + private String screenName; + + private int actionName; + + public BaseHeaderBean getOHeaderBean() { + return this.oHeaderBean; + } + + public void setOHeaderBean(BaseHeaderBean newOHeaderBean) { + this.oHeaderBean = newOHeaderBean; + } + + public ArrayList getODetailList() { + return this.oDetailList; + } + + public void setODetailList(ArrayList newODetailList) { + this.oDetailList = newODetailList; + } + + public String getScreenMode() { + return this.screenMode; + } + + public void setScreenMode(String newScreenMode) { + this.screenMode = newScreenMode; + } + + public String getScreenName() { + return this.screenName; + } + + public void setScreenName(String newScreenName) { + this.screenName = newScreenName; + } + + public int getActionName() { + return this.actionName; + } + + public void setActionName(int newActionName) { + this.actionName = newActionName; + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/AddRowAction.java b/hrmsEjb/wenrgise/common/webtier/action/AddRowAction.java new file mode 100644 index 0000000..f4d8b97 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/AddRowAction.java @@ -0,0 +1,133 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class AddRowAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + if (oBaseForm.getScreenMode().equals("N") || oBaseForm.getHeaderPrimaryKey() == null) { + String sHeaderSave = ParamUtil.getHeaderSaveRequired(sFormName); + if (null == sHeaderSave) + throw new EnrgiseApplicationException("wenrgise.common.saveheaderrecord", "M"); + } + String sScreenName = oBaseForm.getScreenName(); + String sHeaderPrimaryKey = oBaseForm.getHeaderPrimaryKey(); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 10, oBaseForm.getWorkListId()); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + boolean bGetDetailNotPressed = false; + BaseBD oBaseBD = getDetailBusinessDelegate((ActionForm)oBaseForm, request); + if (null == oBaseDetailVO) { + bGetDetailNotPressed = true; + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, false, oUser); + long l = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, l)); + } + if (oBaseDetailVO.getCurrentPage() == 0L) + oBaseDetailVO.setCurrentPage(1L); + long lPageRequested = getPageRequested(oBaseDetailVO, oDetailSizeValues); + ArrayList oDetailList = null; + if (oBaseDetailVO.getCurrentPage() != lPageRequested) { + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) { + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), getDetailArray(oBaseForm)); + throw new EnrgiseApplicationException("wenrgise.common.savefirst", "M"); + } + oBaseBD = getDetailBusinessDelegate(form, request); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, lPageRequested, request, oBaseBD, false, oUser); + oBaseDetailVO.setRowAdded(oBaseDetailVO.getRowAdded() + 1); + oDetailList = oBaseDetailVO.getOThisPageData(); + } else { + if (bGetDetailNotPressed) { + oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + } else { + oDetailList = getDetailArray(oBaseForm); + } + oBaseDetailVO.setRowAdded(oBaseDetailVO.getRowAdded() + 1); + } + BaseDetailBean oBaseDetailBean = getDetailBean(form); + oBaseDetailBean.setStatus("N"); + oDetailList.add(oBaseDetailBean); + oBaseForm.setThisPageDetailCount(oBaseForm.getThisPageDetailCount() + 1); + oBaseForm.setDetailDataChanged(true); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailList); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + ArrayList oEnableList = new ArrayList(); + oEnableList.add("butSave"); + if (null != oSecMap.get("E")) + oEnableList.addAll((ArrayList)oSecMap.get("E")); + enableDisable(oBaseForm, oEnableList, "E"); + } + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(14); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oList = getDetailArrayList(oBaseForm, sFormName, sScreenName); + oThisPageVO.setODetailList(oList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 14); + return mapping.findForward("success"); + } + + private void populateThisPageList(BaseDetailVO oBaseDetailVO, DetailSizeValues oDetailSizeValues) { + long lGrandTotalDetailRecord = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded(); + int iPage = (int)lGrandTotalDetailRecord % oDetailSizeValues.getDetailRecordPerPage() + 1; + int iDetailStartPosition = (iPage - 1) * oDetailSizeValues.getDetailRecordPerPage() + 1; + if (iDetailStartPosition < lGrandTotalDetailRecord + 1L); + } + + private long getPageRequested(BaseDetailVO oBaseDetailVO, DetailSizeValues oDetailSizeValues) { + long lLastRecordNumber = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded() + 1L; + return (lLastRecordNumber % oDetailSizeValues.getDetailRecordPerPage() != 0L) ? (lLastRecordNumber / oDetailSizeValues.getDetailRecordPerPage() + 1L) : (lLastRecordNumber / oDetailSizeValues.getDetailRecordPerPage()); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/BaseAction.java b/hrmsEjb/wenrgise/common/webtier/action/BaseAction.java new file mode 100644 index 0000000..e3e4e2e --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/BaseAction.java @@ -0,0 +1,751 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionError; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.util.MessageResources; +import wenrgise.common.bean.AccessBean; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DebugHelper; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.ParamUtil; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; + +public abstract class BaseAction extends Action { + static final Logger log = Logger.getLogger("wenrgise.common.webtier.action.BaseAction"); + + MessageResources oMsgRes = null; + + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ActionErrors oErrorTable = null; + ActionMessages oMessageTable = null; + BaseForm oBaseForm = (BaseForm)form; + this.oMsgRes = getResources(request); + try { + HttpSession oSes = request.getSession(); + String sUserId = (String)oSes.getAttribute("userId"); + System.out.println(String.valueOf("I am in Base Action and UserId: --->").concat(String.valueOf(sUserId))); + if (null == sUserId) { + System.out.println("I am in Base Action And session expired"); + System.out.println("Session has expired"); + return mapping.findForward("failure"); + } + DebugHelper.createUserEjb(request.getSession()); + return executeImpl(mapping, form, request, response); + } catch (ClassNotFoundException oClassEx) { + processSystemException(oClassEx, oErrorTable); + } catch (InstantiationException oInSt) { + processSystemException(oInSt, oErrorTable); + } catch (InvocationTargetException oInvTar) { + processSystemException(oInvTar, oErrorTable); + } catch (IllegalAccessException oIlAcc) { + processSystemException(oIlAcc, oErrorTable); + } catch (EnrgiseSystemException oSys) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + String sKey = (null != oSys.getKey()) ? oSys.getKey() : "wenrgise.common.system"; + ActionError oSysError = new ActionError(sKey); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } catch (EnrgiseApplicationException oApp) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + if (oMessageTable == null) + oMessageTable = new ActionMessages(); + processException(oErrorTable, oMessageTable, oApp); + if (oApp.getList() != null) { + Iterator oIt = oApp.getList().iterator(); + while (oIt.hasNext()) { + EnrgiseApplicationException oAppErr = oIt.next(); + processException(oErrorTable, oMessageTable, oAppErr); + } + } + } finally { + if (oErrorTable != null) { + System.out.println("Save errors"); + if (oErrorTable.size() > 0) { + saveErrors(request, oErrorTable); + return mapping.findForward("success"); + } + } + if (oMessageTable != null) + if (oMessageTable.size() > 0) { + System.out.println("Save messages"); + saveMessages(request, oMessageTable); + return mapping.findForward("success"); + } + } + return mapping.findForward("failure"); + } + + private void processSystemException(Exception oEc, ActionErrors oErrorTable) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + EnrgiseSystemException oSys = new EnrgiseSystemException("wenrgise.common.system", oEc); + ActionError oSysError = new ActionError(oSys.getKey()); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } + + private void processException(ActionErrors oErrorTable, ActionMessages oMessageTable, EnrgiseApplicationException oApp) { + if (oApp.getArguments() == null) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else if (oApp instanceof EnrgiseMessageKeyException) { + processMessageKeyException((EnrgiseMessageKeyException)oApp, oErrorTable, oMessageTable); + } else if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oApp.getArguments().toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oApp.getArguments().toArray())); + } + } + + private void processMessageKeyException(EnrgiseMessageKeyException oApp, ActionErrors oErrorTable, ActionMessages oMessageTable) { + ArrayList oList = oApp.getArguments(); + if (null == oList) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else { + ArrayList oNewList = new ArrayList(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + Object obj = oIt.next(); + if (obj instanceof MessageKey) { + MessageKey oMsgKey = (MessageKey)obj; + oNewList.add(this.oMsgRes.getMessage(oMsgKey.getKey())); + continue; + } + oNewList.add(obj); + } + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oNewList.toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oNewList.toArray())); + } + } + } + + protected BaseQueryVO getQueryVO(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sQueryVO = ParamUtil.getQueryVO(sFormName); + BaseQueryVO oBaseQueryVO = (BaseQueryVO)Class.forName(sQueryVO).newInstance(); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + return oBaseQueryVO; + } + + protected BaseDetailBean getDetailBean(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + return oBaseDetailBean; + } + + protected BaseBD getHeaderBusinessDelegate(ActionForm form, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getHeaderBD(sFormName); + try { + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } catch (Exception Ex) { + Ex.printStackTrace(); + return null; + } + } + + protected BaseBD getDetailBusinessDelegate(ActionForm form, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getDetailBD(sFormName, sScreenName); + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } + + protected BaseHeaderBean getBaseHeaderBean(String sFormName) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + String sBaseHeaderBean = ParamUtil.getHeaderBean(sFormName); + try { + BaseHeaderBean oBaseHeaderBean = (BaseHeaderBean)Class.forName(sBaseHeaderBean).newInstance(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + oBaseHeaderBean.setPseudoHeader(pseudoHeader); + return oBaseHeaderBean; + } catch (Exception ex) { + ex.printStackTrace(); + return null; + } + } + + protected ArrayList getDetailArrayList(BaseForm oBaseForm, String sFormName, String sScreenName) throws EnrgiseSystemException, IllegalAccessException, InstantiationException, ClassNotFoundException { + String sDetailArrayList = ParamUtil.getDetailArrayName(sFormName, sScreenName); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, sDetailArrayList); + return oList; + } + + protected UserSession getUserSessionBean(HttpServletRequest request) throws EnrgiseApplicationException, RemoteException, EnrgiseSystemException { + UserInfo oUserInfo = new UserInfo(); + HttpSession session = request.getSession(); + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) + try { + String sEmpId = (String)session.getAttribute("empId"); + String sSiteId = (String)session.getAttribute("siteId"); + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("HrmUserSession"); + oUser = oUserHome.create(); + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + oUserInfo = oHrmFacade.getLoginUserInfo(sEmpId, sSiteId); + oUser.setUserInfo(oUserInfo); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oSecHrmFacade = oSecHome.create(); + HrmThirdFacadeHome oThirdHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oThirdFacade = oThirdHome.create(); + HashMap oMap = new HashMap(); + oMap.put(ParamUtil.getModuleName(), oHrmFacade); + oMap.put("SecHRMS", oSecHrmFacade); + oMap.put("ThirdHRMS", oThirdFacade); + oUser.setModuleFacade(oMap); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + EmpInfoBean oEmpInfoBean = new EmpInfoBean(); + oEmpInfoBean.setModuleId("8"); + oEmpInfoBean.setEmpId(oUserInfo.getUserTypeId()); + SecurityBD oSecurityBD = new SecurityBD(); + ArrayList menu = oSecurityBD.getTreeSet(oEmpInfoBean); + HashMap secMap = oSecurityBD.getAccessInfo(oEmpInfoBean); + oUser.setAccessInfo(secMap); + session.setAttribute("menuList", menu); + session.setAttribute("userId", sEmpId); + } catch (CreateException ex) { + ex.printStackTrace(); + } + return oUser; + } + + protected void clearDetailLists(BaseForm form, ArrayList oDetailList) throws IllegalAccessException, InvocationTargetException { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + DetailScreen oDetailScreen = oIt.next(); + BeanUtils.copyProperty(form, oDetailScreen.get_DetailArrayName(), new ArrayList()); + } + } + + protected ArrayList getDetailArray(BaseForm oBaseForm) throws EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + ArrayList oDetailArray = new ArrayList(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + ArrayList oFieldList = new ArrayList(); + oFieldList = getFieldList(oFieldList, oBaseDetailBean.getClass()); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName)); + for (int iRecord = 0; iRecord < oBaseForm.getThisPageDetailCount(); iRecord++) { + if (null == oList) + break; + oBaseDetailBean = oList.get(iRecord); + if (null == oBaseDetailBean) + break; + Iterator oIt = oFieldList.iterator(); + while (oIt.hasNext()) { + try { + Field ob = oIt.next(); + String sFieldName = ob.getName(); + if (sFieldName.startsWith("disab")) + continue; + if (ob.getType().getName().equals("java.lang.String")) { + String sValue = BeanUtils.getIndexedProperty(oBaseForm, sFieldName, iRecord); + BeanUtils.setProperty(oBaseDetailBean, sFieldName, sValue); + } + } catch (NoSuchMethodException noSuchMethodException) {} + } + oDetailArray.add(oBaseDetailBean); + } + return oDetailArray; + } + + private ArrayList getFieldList(ArrayList oFieldList, Class oClass) { + if (oClass == null) + return oFieldList; + Field[] oFields = oClass.getDeclaredFields(); + EnrgiseUtil.addToList(oFieldList, (Object[])oFields); + return getFieldList(oFieldList, oClass.getSuperclass()); + } + + protected void changeMode(BaseForm oBaseForm, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseForm, oBaseHeaderBean); + clearDetailLists(oBaseForm, ParamUtil.getDetailList(sFormName)); + UserSession oUser = getUserSessionBean(request); + oUser.putBaseHeaderVO(sFormName, null); + oUser.removeAllDetailVO(sFormName); + resetForm(oBaseForm); + } + + protected void checkHeaderNavigation(BaseForm oBaseForm, BaseHeaderVO oBaseHeaderVO) throws EnrgiseApplicationException { + long lPositionRequested = Long.parseLong(oBaseForm.getUserPositionRequested()); + if (null != oBaseHeaderVO) { + if (lPositionRequested <= 0L || lPositionRequested > oBaseHeaderVO.getTotalCount()) + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + oBaseForm.setPositionRequested(lPositionRequested); + } else { + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + } + } + + private void resetForm(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setPositionRequested(0L); + oBaseForm.setTotalCount(0L); + oBaseForm.setTotalDetailRecord(0L); + oBaseForm.setTotalHeaderRecord(0L); + oBaseForm.setHeaderPrimaryKey(null); + oBaseForm.setUserPageRequested(null); + oBaseForm.setDetailId(null); + oBaseForm.setStatus(null); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setChecked(null); + oBaseForm.setUserPositionRequested(null); + oBaseForm.setTotalCount(0L); + oBaseForm.setNewPageRequested(null); + oBaseForm.setItemChecked(null); + oBaseForm.setLovKey(null); + oBaseForm.setTxtSearchFields(null); + oBaseForm.setTxtDisplayFields(null); + oBaseForm.setTxtIndex(null); + oBaseForm.setThisPageDetailCount(0); + oBaseForm.setTotalPageCount(0L); + oBaseForm.setHeaderStatus(null); + oBaseForm.setButtonClicked(null); + oBaseForm.setButtonName(null); + oBaseForm.setDetailStartPage(0); + } + + protected void checkDetailNavigation(BaseForm oBaseForm, BaseDetailVO oBaseDetailVO) throws EnrgiseApplicationException { + boolean flag = false; + long lPageRequested = 0L; + if (EnrgiseUtil.checkString(oBaseForm.getUserPageRequested())) { + lPageRequested = Long.parseLong(oBaseForm.getUserPageRequested()); + } else { + flag = true; + } + if (null != oBaseDetailVO) { + if (flag == false) { + if (lPageRequested <= 0L || oBaseDetailVO.getTotalDetailRecord() <= oBaseDetailVO.getRecordsPerPage() * (lPageRequested - 1L)) + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + oBaseForm.setPageRequested(lPageRequested); + } else if (oBaseForm.getDetailList() != null) { + oBaseForm.setPageRequested(1L); + } else { + oBaseForm.setPageRequested(0L); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + } + } + + protected void enableDisable(BaseForm oBaseForm, ArrayList arylstFields, String enableFlag) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (null != arylstFields) { + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + StringBuffer sField = new StringBuffer(iterFields.next()); + String sProperty = String.valueOf("setDisab").concat(String.valueOf(sField.toString())); + try { + Class[] oCls = { Class.forName("java.lang.String") }; + Method oMethod = oBaseForm.getClass().getMethod(sProperty, oCls); + String sFlag = enableFlag.equals("D") ? "true" : "false"; + Object[] obj = { sFlag }; + oMethod.invoke(oBaseForm, obj); + } catch (NoSuchMethodException nse) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(nse.getMessage()))).concat(String.valueOf(" "))).concat(String.valueOf(sProperty))); + } + } + } + } + + protected void enableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "E"); + } catch (Exception exception) {} + } + + protected void disableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "D"); + } catch (Exception exception) {} + } + + protected ArrayList queryClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butSave"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList insertClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butInsert"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList executeClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butExecute"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList deleteClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + return arylstFields; + } + + protected ArrayList saveClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList refreshClicked() { + ArrayList arylstFields = new ArrayList(); + return arylstFields; + } + + protected ArrayList nextHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList prevHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList getDetailClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList addRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList delRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butDelRow"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected void controlHeaderNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList arylstFields = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalCount(); + long lRecordNum = oBaseForm.getPositionRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + } else { + if (lRecordNum == lTotalRecord) + arylstFields.add("butNextHeader"); + if (lRecordNum == 1L) + arylstFields.add("butPrevHeader"); + } + enableDisable(oBaseForm, arylstFields, "D"); + } + + protected void controlDetailNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalPageCount(); + long lRecordNum = oBaseForm.getPageRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + oDisableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + oDisableList.add("newPageRequested"); + oDisableList.add("butJumpDetail"); + } else if (lRecordNum == lTotalRecord) { + oEnableList.add("butPrevDetail"); + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oDisableList.add("butNextDetail"); + } else if (lRecordNum == 1L) { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + } else { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oEnableList.add("butPrevDetail"); + } + enableDisable(oBaseForm, oEnableList, "E"); + enableDisable(oBaseForm, oDisableList, "D"); + } + + protected void resetDetailPageData(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setTotalPageCount(0L); + } + + protected long calculateTotalDetailPage(String sFormName, String sScreenName, long lTotDetRecord) { + long totRecPerPage = ParamUtil.getDetailRecordPerPage(sFormName, sScreenName); + if (lTotDetRecord % totRecPerPage != 0L) + return lTotDetRecord / totRecPerPage + 1L; + return lTotDetRecord / totRecPerPage; + } + + protected BaseDetailVO getDetailData(BaseForm oBaseForm, String sFormName, String sScreenName, long lPageRequested, HttpServletRequest request, BaseBD oBaseBD, boolean bForce, UserSession oUser) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = oBaseForm.getHeaderPrimaryKey(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (!EnrgiseUtil.checkString(pseudoHeader)) { + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, sHeaderPrimaryKey, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } else { + BaseQueryVO oBaseQueryVO = getQueryVO((ActionForm)oBaseForm); + BeanUtils.copyProperties(oBaseQueryVO, oBaseForm); + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, oBaseQueryVO, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } + if (oBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oBaseForm.setPageRequested(lPageRequested); + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oBaseForm.setNewPageRequested(null); + oBaseForm.setPageRequested(lPageRequested); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + return oBaseDetailVO; + } + + protected void onLoad(ActionForm form, HttpServletRequest request, int actionName) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseDetailVO oBaseDetailVO = new BaseDetailVO(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setActionName(actionName); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oBaseDetailVO) { + ArrayList oDetailList = getDetailArrayList(oBaseForm, sFormName, sScreenName); + oThisPageVO.setODetailList(oDetailList); + } + oBaseBD.onLoadAction(oThisPageVO); + if (oThisPageVO != null) + if (oThisPageVO.getOHeaderBean() != null) + BeanUtils.copyProperties(form, oThisPageVO.getOHeaderBean()); + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + } + + protected void checkAccessInfo(UserSession oUserSession, String sComponentName, String sScreenMode, String sButtonName, int iActionName, String sWorkListId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + HashMap oSecMap = oUserSession.getAccessInfo(); + AccessBean objBean = (AccessBean)oSecMap.get(sComponentName); + if (!EnrgiseUtil.checkString(sWorkListId)) { + if (iActionName == 10 || iActionName == 14 || iActionName == 23) { + String s = null; + System.out.println("I am in AccessInfo"); + System.out.println("Insert Flag: "); + try { + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + System.out.println("after Insert Flag: "); + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + if (iActionName == 8) + if (sScreenMode.equalsIgnoreCase("N")) { + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } else if (sScreenMode.equalsIgnoreCase("U")) { + if (!objBean.getUpdateFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.update"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + if (iActionName == 17 || iActionName == 15) + if (!objBean.getDeleteFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.delete"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + } + + protected String getComponentName(String sFormName) { + String sModFormName = sFormName.replace('.', ','); + int index = 0; + char g = ','; + char[] arrayModeFormName = sModFormName.toCharArray(); + int k; + for (k = arrayModeFormName.length - 1; k > 0; k--) { + if (arrayModeFormName[k] == g) { + index = k + 1; + break; + } + } + String sComponentName = sModFormName.substring(index, sModFormName.length()); + return sComponentName; + } + + public abstract ActionForward executeImpl(ActionMapping paramActionMapping, ActionForm paramActionForm, HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException; +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/CancelAction.java b/hrmsEjb/wenrgise/common/webtier/action/CancelAction.java new file mode 100644 index 0000000..fe383dd --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/CancelAction.java @@ -0,0 +1,22 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.webtier.form.BaseForm; + +public class CancelAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + return mapping.getInputForward(); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/DecrAction.java b/hrmsEjb/wenrgise/common/webtier/action/DecrAction.java new file mode 100644 index 0000000..9376785 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/DecrAction.java @@ -0,0 +1,64 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DecrAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + int count = 0; + ArrayList oDetailArray = getDetailArray(oBaseForm); + try { + String[] itemChecked = oBaseForm.getItemChecked(); + String[] sStatuss = oBaseForm.getStatus(); + String[] sStartFields = BeanUtils.getArrayProperty(oBaseForm, "startField"); + for (int i = 0; i < itemChecked.length; i++) { + if (itemChecked[i].equals("Y")) { + count++; + String sStartField = sStartFields[i]; + if (i < itemChecked.length - 1) { + for (int j = i + 1; j < itemChecked.length; j++) { + String sStatus = sStatuss[j]; + if (!sStatus.equals("D")) { + BaseDetailBean oBaseDetailBean = oDetailArray.get(j); + oBaseDetailBean.setStatus("U"); + BeanUtils.setProperty(oBaseDetailBean, "startField", sStartField); + oDetailArray.set(j, oBaseDetailBean); + break; + } + } + ((BaseDetailBean)oDetailArray.get(i)).setStatus("D"); + ((BaseDetailBean)oDetailArray.get(i)).setItemChecked("N"); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowDeleted() + 1); + } + } + } + } catch (NoSuchMethodException noSuchMethodException) {} + if (count > 0) + oBaseForm.setDetailDataChanged(true); + oBaseDetailVO.setOThisPageData(oDetailArray); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + onLoad(form, request, 16); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/DeleteAction.java b/hrmsEjb/wenrgise/common/webtier/action/DeleteAction.java new file mode 100644 index 0000000..3563140 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/DeleteAction.java @@ -0,0 +1,108 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DeleteAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 17, oBaseForm.getWorkListId()); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + BaseHeaderVO oBaseHeaderVO = null; + Timestamp oHeaderPicked = null; + Timestamp oDetailPicked = null; + oBaseHeaderVO = oUser.getBaseHeaderVO(sFormName); + if (oBaseHeaderVO != null) { + oHeaderPicked = oBaseHeaderVO.getOWhenPicked(); + oBaseHeaderBean = getBaseHeaderBean(sFormName); + if (oBaseHeaderBean == null) + oBaseHeaderBean = getBaseHeaderBean(sFormName); + } + BeanUtils.copyProperties(oBaseHeaderBean, form); + oBaseForm.setHeaderDataChanged(true); + String sHeaderPrimaryKey = oBaseBD.saveRecord(oBaseHeaderBean, oHeaderPicked, oBaseForm.getScreenName(), "D", oBaseForm.isHeaderDataChanged(), oDetailBeanArray, oBaseForm.isDetailDataChanged(), oDetailPicked); + BaseQueryVO oBaseQueryVO = null; + if (oBaseForm.getPositionRequested() > 0L && sHeaderPrimaryKey == null) { + if (oBaseForm.getTotalHeaderRecord() == 1L) { + oBaseForm.setScreenMode("Q"); + changeMode(oBaseForm, request); + } else { + oBaseHeaderVO = oBaseBD.getNextHeaderRecord(oBaseQueryVO, oBaseForm.getPositionRequested(), sFormName, true, oUser); + int iRelativePosition = (int)(oBaseHeaderVO.getPositionRequested() - oBaseHeaderVO.getHeaderStartPosition() + 1L); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(iRelativePosition)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oBaseForm.setTotalHeaderRecord(((int)oBaseForm.getTotalHeaderRecord() - 1)); + oBaseHeaderVO.setTotalCount(oBaseHeaderVO.getTotalCount() - 1L); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setScreenMode("U"); + } + } else { + oBaseQueryVO = getQueryVO(form); + oBaseQueryVO.setHeaderPrimaryKey(sHeaderPrimaryKey); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oBaseForm.setScreenMode("U"); + } + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(17); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 17); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/DeleteRowAction.java b/hrmsEjb/wenrgise/common/webtier/action/DeleteRowAction.java new file mode 100644 index 0000000..074f376 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/DeleteRowAction.java @@ -0,0 +1,89 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DeleteRowAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String[] itemChecked = oBaseForm.getItemChecked(); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 17, oBaseForm.getWorkListId()); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = null; + boolean newRecordFlag = false; + UserInfo oUserInfo = oUser.getUserInfo(); + SecurityBD oSecBD = new SecurityBD(); + ArrayList oDetailArray = getDetailArray(oBaseForm); + int count = 0; + for (int i = 0; i < itemChecked.length; i++) { + if (itemChecked[i].equals("Y")) + if (!((BaseDetailBean)oDetailArray.get(i)).getStatus().equals("N")) { + count++; + ((BaseDetailBean)oDetailArray.get(i)).setStatus("D"); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowDeleted() + 1); + } else { + oDetailArray.remove(i); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowAdded() - 1); + newRecordFlag = true; + } + } + if (count == 0 && newRecordFlag == false) + throw new EnrgiseApplicationException("wenrgise.common.norowselected"); + if (count > 0) + oBaseForm.setDetailDataChanged(true); + oBaseDetailVO.setOThisPageData(oDetailArray); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oThisList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oThisList); + } + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 15); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/ExitAction.java b/hrmsEjb/wenrgise/common/webtier/action/ExitAction.java new file mode 100644 index 0000000..c425510 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/ExitAction.java @@ -0,0 +1,33 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; + +public class ExitAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + System.out.println("I am in Exit Action ---->"); + BaseForm oBaseForm = (BaseForm)form; + String sFormBean = mapping.getAttribute(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + UserSession oUser = getUserSessionBean(request); + if (oUser != null) + oUser.removeAllIfExists(sFormName, sScreenName); + HttpSession session = request.getSession(); + session.removeAttribute(sFormBean); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetButtonAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetButtonAction.java new file mode 100644 index 0000000..e47c234 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetButtonAction.java @@ -0,0 +1,131 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetButtonAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.getScreenMode().equals("N")) + throw new EnrgiseApplicationException("wenrgise.common.saveheaderrecord", "M"); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + BaseHeaderVO oBaseHeaderVO = null; + Timestamp oHeaderPicked = null; + Timestamp oDetailPicked = null; + oBaseHeaderVO = oUser.getBaseHeaderVO(sFormName); + if (oBaseHeaderVO != null) { + oHeaderPicked = oBaseHeaderVO.getOWhenPicked(); + oBaseHeaderBean = getBaseHeaderBean(sFormName); + } + BeanUtils.copyProperties(oBaseHeaderBean, form); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (oBaseDetailVO != null) { + oDetailPicked = oBaseDetailVO.getOWhenPicked(); + oDetailBeanArray = getDetailArray(oBaseForm); + } + String sHeaderPrimaryKey = oBaseBD.submit(oBaseForm.getButtonName(), oBaseHeaderBean, oHeaderPicked, oBaseForm.getScreenName(), oBaseForm.getScreenMode(), oBaseForm.isHeaderDataChanged(), oDetailBeanArray, oBaseForm.isDetailDataChanged(), oDetailPicked); + oBaseForm.setHeaderPrimaryKey(sHeaderPrimaryKey); + BaseQueryVO oBaseQueryVO = null; + oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(sHeaderPrimaryKey); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oUser.putBaseHeaderVO(sFormName, oBaseHeaderVO); + if (null != oBaseDetailVO) { + if (oBaseDetailVO.getTotalDetailRecord() + oBaseDetailVO.getRowAdded() - oBaseDetailVO.getRowDeleted() > 0L) { + oBaseDetailVO.setRowDeleted(0); + oBaseDetailVO.setRowAdded(0); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setPageRequested(1L); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + checkDetailNavigation(oBaseForm, oUser.getBaseDetailVO(sFormName, sScreenName)); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + } + oBaseDetailVO.setRowAdded(0); + oBaseDetailVO.setRowDeleted(0); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + } + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(18); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 18); + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetDetailAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetDetailAction.java new file mode 100644 index 0000000..f8f2e5a --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetDetailAction.java @@ -0,0 +1,89 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetDetailAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.getScreenMode().equals("N")) + throw new EnrgiseApplicationException("wenrgise.common.saveheaderrecord", "M"); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + String sScreenName = oBaseForm.getScreenName(); + BaseDetailVO oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + if (oBaseDetailVO.getOThisPageData() != null) + oBaseForm.setScreenMode("U"); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + ArrayList oClicked = getDetailClicked(); + ArrayList oEnableList = new ArrayList(); + oEnableList.add("butAddRow"); + if (totDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } else { + oEnableList.add("butDelRow"); + oEnableList.add("butSave"); + } + enableDisable(oBaseForm, oClicked, "D"); + enableDisable(oBaseForm, oEnableList, "E"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(6); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 6); + oUser.setForwardedPage(sFormName, "success"); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetDetailPageAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetDetailPageAction.java new file mode 100644 index 0000000..c4ecb1f --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetDetailPageAction.java @@ -0,0 +1,85 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetDetailPageAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + String sScreenName = oBaseForm.getScreenName(); + checkDetailNavigation(oBaseForm, oUser.getBaseDetailVO(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, oBaseForm.getPageRequested(), request, oBaseBD, false, oUser); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getScreenName(), totDetRecord)); + ArrayList oClicked = getDetailClicked(); + ArrayList oEnableList = new ArrayList(); + oEnableList.add("butAddRow"); + if (totDetRecord == 0L) { + oClicked.add("butDelRow"); + } else { + oEnableList.add("butDelRow"); + oEnableList.add("butSave"); + } + enableDisable(oBaseForm, oClicked, "D"); + enableDisable(oBaseForm, oEnableList, "E"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(6); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 6); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetHeaderAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetHeaderAction.java new file mode 100644 index 0000000..3932df8 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetHeaderAction.java @@ -0,0 +1,68 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetHeaderAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + BaseQueryVO oBaseQueryVO = getQueryVO(form); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + UserSession oUser = getUserSessionBean(request); + BaseHeaderVO oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + resetDetailPageData(oBaseForm); + if (oBaseHeaderVO.getTotalCount() > 0L) + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, executeClicked(), "D"); + controlHeaderNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(1); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 1); + oUser.setForwardedPage(sFormName, "success"); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetInsertAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetInsertAction.java new file mode 100644 index 0000000..5e57e17 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetInsertAction.java @@ -0,0 +1,105 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetInsertAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseQueryVO oBaseQueryVO = getQueryVO(form); + System.out.println(String.valueOf("Class name ").concat(String.valueOf(oBaseQueryVO.getClass().getName()))); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 8, oBaseForm.getWorkListId()); + UserInfo oUserInfo = oUser.getUserInfo(); + SecurityBD oSecBD = new SecurityBD(); + System.out.println(oBaseForm.getHeaderPrimaryKey()); + String sNewPK = oBaseBD.getInsertDataImpl(oBaseQueryVO); + oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(sNewPK); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oUser = getUserSessionBean(request); + BaseHeaderVO oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + oUser.putBaseHeaderVO(sFormName, oBaseHeaderVO); + oUser.putBaseQueryVO(sFormName, oBaseQueryVO); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + System.out.println(oBaseHeaderVO.getHeaderRecord(1).getHeaderPrimaryKey()); + BaseDetailVO oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setDetailStartPage(1); + oBaseDetailVO.setCurrentPage(1L); + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + if (oBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, nextHeaderClicked(), "D"); + controlHeaderNavigation(oBaseForm); + enableDisable(oBaseForm, getDetailClicked(), "D"); + controlDetailNavigation(oBaseForm); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(23); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 23); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetNextHeaderAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetNextHeaderAction.java new file mode 100644 index 0000000..0832d63 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetNextHeaderAction.java @@ -0,0 +1,71 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetNextHeaderAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, EnrgiseApplicationException, EnrgiseSystemException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + checkHeaderNavigation(oBaseForm, oUser.getBaseHeaderVO(sFormName)); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseQueryVO oBaseQueryVO = oUser.getBaseQueryVO(sFormName); + BaseHeaderVO oBaseHeaderVO = oBaseBD.getNextHeaderRecord(oBaseQueryVO, oBaseForm.getPositionRequested(), sFormName, false, oUser); + int iRelativePosition = (int)(oBaseHeaderVO.getPositionRequested() - oBaseHeaderVO.getHeaderStartPosition() + 1L); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(iRelativePosition)); + oBaseForm.setTotalDetailRecord(0L); + clearDetailLists(oBaseForm, ParamUtil.getDetailList(sFormName)); + oUser.removeAllDetailVO(sFormName); + oBaseForm.setDetailStartPage(0); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oBaseForm.setNewPositionRequested(null); + resetDetailPageData(oBaseForm); + enableAll(oBaseForm); + enableDisable(oBaseForm, nextHeaderClicked(), "D"); + controlHeaderNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(1); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 1); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetRefreshTabAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetRefreshTabAction.java new file mode 100644 index 0000000..206f754 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetRefreshTabAction.java @@ -0,0 +1,104 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetRefreshTabAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) { + if (oBaseForm.isDetailDataChanged()) { + ArrayList arrayList = getDetailArray(oBaseForm); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), arrayList); + } + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + } + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sForwardedPage = oBaseForm.getForwardedPage(); + BaseDetailVO oPresentBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oPresentBaseDetailVO) + oPresentBaseDetailVO.setCurrentPage(oBaseForm.getPageRequested()); + oUser.putBaseDetailVO(sFormName, sScreenName, oPresentBaseDetailVO); + BaseDetailVO oNextBaseDetailVO = oUser.getBaseDetailVO(sFormName, sForwardedPage); + if (oPresentBaseDetailVO != null) { + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sForwardedPage)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sForwardedPage)); + oNextBaseDetailVO = getDetailData(oBaseForm, sFormName, sForwardedPage, 1L, request, oBaseBD, true, oUser); + if (oNextBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oNextBaseDetailVO.getOThisPageData()); + oBaseForm.setPageRequested(oNextBaseDetailVO.getCurrentPage()); + oBaseForm.setThisPageDetailCount((null != oNextBaseDetailVO.getOThisPageData()) ? oNextBaseDetailVO.getOThisPageData().size() : 0); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + oUser.putBaseDetailVO(sFormName, sForwardedPage, oNextBaseDetailVO); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + } + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailList = null; + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + if (oNextBaseDetailVO != null) { + oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getForwardedPage()); + oThisPageVO.setActionName(22); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + if (sForwardedPage != null) + oBaseForm.setScreenName(sForwardedPage); + onLoad(form, request, 22); + if (sForwardedPage != null) + return mapping.findForward(sForwardedPage); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/GetTabAction.java b/hrmsEjb/wenrgise/common/webtier/action/GetTabAction.java new file mode 100644 index 0000000..f8d2b78 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/GetTabAction.java @@ -0,0 +1,139 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetTabAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) { + if (oBaseForm.isDetailDataChanged()) { + ArrayList oDetailList = getDetailArray(oBaseForm); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailList); + } + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + } + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sForwardedPage = oBaseForm.getForwardedPage(); + BaseDetailVO oPresentBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oPresentBaseDetailVO) + oPresentBaseDetailVO.setCurrentPage(oBaseForm.getPageRequested()); + oUser.putBaseDetailVO(sFormName, sScreenName, oPresentBaseDetailVO); + BaseDetailVO oNextBaseDetailVO = oUser.getBaseDetailVO(sFormName, sForwardedPage); + if (null != oNextBaseDetailVO) { + oBaseForm.setPageRequested(oNextBaseDetailVO.getCurrentPage()); + oBaseForm.setThisPageDetailCount((null != oNextBaseDetailVO.getOThisPageData()) ? oNextBaseDetailVO.getOThisPageData().size() : 0); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(sForwardedPage); + oThisPageVO.setActionName(22); + ArrayList oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oThisPageVO.getODetailList()); + } + } else { + if (oBaseForm.getHeaderPrimaryKey() == null) + throw new EnrgiseApplicationException("wenrgise.common.bringheaderdata", "M"); + if (oPresentBaseDetailVO != null) { + oNextBaseDetailVO = getDetailData(oBaseForm, sFormName, sForwardedPage, 1L, request, oBaseBD, true, oUser); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + oUser.putBaseDetailVO(sFormName, sForwardedPage, oNextBaseDetailVO); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailList = null; + BeanUtils.copyProperties(oBaseHeaderBean, form); + oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setODetailList(oDetailList); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getForwardedPage()); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oThisPageVO.getODetailList()); + } + } + } + if (sForwardedPage != null) + oBaseForm.setScreenName(sForwardedPage); + onLoad(form, request, 22); + if (sForwardedPage != null) { + oUser.setForwardedPage(sFormName, sForwardedPage); + return mapping.findForward(sForwardedPage); + } + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/LOVAction.java b/hrmsEjb/wenrgise/common/webtier/action/LOVAction.java new file mode 100644 index 0000000..f6e2ccf --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/LOVAction.java @@ -0,0 +1,138 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.StringTokenizer; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.businessdelegate.LOVBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.common.webtier.form.BaseLOVForm; +import wenrgise.common.xml.vo.LOVInfo; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.LOVManager; + +public class LOVAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseLOVForm oBaseLOVForm = (BaseLOVForm)form; + System.out.println(oBaseLOVForm.getLovKey()); + UserSession oUser = getUserSessionBean(request); + LOVInfo oLOVInfo = LOVManager.getInstance().getCachedObject(oBaseLOVForm.getLovKey()); + if (oLOVInfo != null) + if (EnrgiseUtil.checkString(oLOVInfo.getRecursiveFlag())) { + if (oLOVInfo.getRecursiveFlag().equalsIgnoreCase("Y")) { + processRecursiveLov(oBaseLOVForm, oLOVInfo, mapping); + oBaseLOVForm.setRecursiveFlag("Y"); + } else { + processSimpleLov(oBaseLOVForm, oLOVInfo, mapping, oUser.getUserInfo()); + oBaseLOVForm.setRecursiveFlag("N"); + } + } else { + processSimpleLov(oBaseLOVForm, oLOVInfo, mapping, oUser.getUserInfo()); + oBaseLOVForm.setRecursiveFlag("N"); + } + return mapping.findForward("success"); + } + + private ActionForward processSimpleLov(BaseLOVForm oBaseLOVForm, LOVInfo oLOVInfo, ActionMapping mapping, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (oBaseLOVForm.getTxtHidAction().equals("FirstTime")) { + oBaseLOVForm.setTxtHidTotCols(-1); + oBaseLOVForm.setTxtHidSubmitFirst("true"); + oBaseLOVForm.setLevel(0); + oBaseLOVForm.setFinalLevel(0); + return mapping.findForward("success"); + } + if (oBaseLOVForm.getTxtHidAction().equals("SearchRecords")) { + LOVBD oLOVBD = new LOVBD(); + LovVO oLovVO = new LovVO(); + LovQueryVO oLOVQueryVO = new LovQueryVO(); + StringTokenizer stParameters = new StringTokenizer(oBaseLOVForm.getQueryParam(), ","); + while (stParameters.hasMoreTokens()) { + String[] sKeyValuePair = stParameters.nextToken().split("="); + oLOVQueryVO.setProperty(sKeyValuePair[0], sKeyValuePair[1]); + } + oLOVQueryVO.setProperty("LoginSiteId", oUserInfo.getSiteId()); + oLOVQueryVO.setProperty("ListSiteId", String.valueOf(String.valueOf("(").concat(String.valueOf(oUserInfo.getSiteId()))).concat(String.valueOf(")"))); + oLOVQueryVO.setSearchField1(oBaseLOVForm.getSearchField1()); + oLOVQueryVO.setSearchField2(oBaseLOVForm.getSearchField2()); + oLOVQueryVO.setSearchField2(oBaseLOVForm.getSearchField2()); + oLOVQueryVO.setSearchField3(oBaseLOVForm.getSearchField3()); + oLOVQueryVO.setSearchField4(oBaseLOVForm.getSearchField4()); + oLOVQueryVO.setSearchField5(oBaseLOVForm.getSearchField5()); + oLOVQueryVO.setSearchField6(oBaseLOVForm.getSearchField6()); + oLOVQueryVO.setLevel(0); + oBaseLOVForm.setFinalLevel(-1); + oLovVO = oLOVBD.getLOVData(oLOVInfo, oLOVQueryVO); + if (oBaseLOVForm.getLevel() == 0) + oBaseLOVForm.setLevel(oLovVO.getFinalLevel()); + if (oLovVO.getDetailList().size() > 0) { + BeanUtils.copyProperties(oBaseLOVForm, oLovVO); + oBaseLOVForm.setTxtHidTotRows(oLovVO.getDetailList().size()); + oBaseLOVForm.setTxtHidTotCols(oLovVO.getHeaderList().size()); + } else { + oBaseLOVForm.setTxtHidTotRows(0); + oBaseLOVForm.setTxtHidTotCols(-1); + } + oBaseLOVForm.setTxtHidSubmitFirst("false"); + oBaseLOVForm.setInsertFlag(oLOVInfo.getInsertFlag()); + } + return null; + } + + private ActionForward processRecursiveLov(BaseLOVForm oBaseLOVForm, LOVInfo oLOVInfo, ActionMapping mapping) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (oBaseLOVForm.getTxtHidAction().equals("FirstTime")) { + oBaseLOVForm.setTxtHidTotCols(-1); + oBaseLOVForm.setTxtHidSubmitFirst("true"); + oBaseLOVForm.setLevel(-999); + return mapping.findForward("success"); + } + if (oBaseLOVForm.getTxtHidAction().equals("SearchRecords")) { + LOVBD oLOVBD = new LOVBD(); + LovVO oLovVO = new LovVO(); + LovQueryVO oLOVQueryVO = new LovQueryVO(); + StringTokenizer stParameters = new StringTokenizer(oBaseLOVForm.getQueryParam(), ","); + while (stParameters.hasMoreTokens()) { + String[] sKeyValuePair = stParameters.nextToken().split("="); + oLOVQueryVO.setProperty(sKeyValuePair[0], sKeyValuePair[1]); + } + oLOVQueryVO.setSearchField1(oBaseLOVForm.getSearchField1()); + oLOVQueryVO.setSearchField2(oBaseLOVForm.getSearchField2()); + oLOVQueryVO.setLevel(oBaseLOVForm.getLevel()); + int iLevel = oBaseLOVForm.getLevel(); + int iFinalLevel = oBaseLOVForm.getFinalLevel(); + int iInitialLevel = oBaseLOVForm.getInitialLevel(); + oLOVQueryVO.setFinalLevel(iFinalLevel); + oLovVO = oLOVBD.getLOVData(oLOVInfo, oLOVQueryVO); + if (oLovVO.getDetailList().size() > 0) { + BeanUtils.copyProperties(oBaseLOVForm, oLovVO); + oBaseLOVForm.setTxtHidTotRows(oLovVO.getDetailList().size()); + oBaseLOVForm.setTxtHidTotCols(oLovVO.getHeaderList().size()); + } else { + oBaseLOVForm.setTxtHidTotRows(0); + oBaseLOVForm.setTxtHidTotCols(-1); + } + oBaseLOVForm.setTxtHidSubmitFirst("false"); + if (oLOVQueryVO.getLevel() == -999) { + oBaseLOVForm.setLevel(oLovVO.getInitialLevel()); + oBaseLOVForm.setFinalLevel(oLovVO.getFinalLevel()); + oBaseLOVForm.setInitialLevel(oLovVO.getInitialLevel()); + } else { + oBaseLOVForm.setLevel(iLevel); + oBaseLOVForm.setFinalLevel(iFinalLevel); + oBaseLOVForm.setInitialLevel(iInitialLevel); + } + oBaseLOVForm.setInsertFlag(oLOVInfo.getInsertFlag()); + } + return null; + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/LogOutAction.java b/hrmsEjb/wenrgise/common/webtier/action/LogOutAction.java new file mode 100644 index 0000000..4ae7587 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/LogOutAction.java @@ -0,0 +1,43 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; + +public class LogOutAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + Cookie cookieEmpId = null; + Cookie cookieSiteId = null; + String target = "success"; + String sEmpId = null; + String sSiteId = null; + cookieEmpId = new Cookie("EmpId", sEmpId); + cookieSiteId = new Cookie("SiteId", sSiteId); + setCookieAttributes(cookieEmpId, false); + setCookieAttributes(cookieSiteId, false); + response.addCookie(cookieEmpId); + response.addCookie(cookieSiteId); + System.out.println("The cookie has been created"); + HttpSession session = request.getSession(); + session.setAttribute("status", "LOGOUT"); + return mapping.findForward("success"); + } + + private void setCookieAttributes(Cookie c, boolean bValid) { + c.setPath("/"); + if (bValid) { + c.setMaxAge(1800); + } else { + c.setMaxAge(0); + } + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/NewModeAction.java b/hrmsEjb/wenrgise/common/webtier/action/NewModeAction.java new file mode 100644 index 0000000..ffde4a3 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/NewModeAction.java @@ -0,0 +1,66 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class NewModeAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sComponentName = getComponentName(sFormName); + UserSession oUser = getUserSessionBean(request); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 10, oBaseForm.getWorkListId()); + changeMode(oBaseForm, request); + oBaseForm.setQueried(false); + oBaseForm.setScreenMode("N"); + enableAll(oBaseForm); + enableDisable(oBaseForm, insertClicked(), "D"); + SecurityBD oSecBD = new SecurityBD(); + HashMap oMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), "N"); + if (null != oMap) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(10); + Map oBDMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oBDMap != null) { + if (oBDMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("D"), "D"); + if (oBDMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 10); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/QueryModeAction.java b/hrmsEjb/wenrgise/common/webtier/action/QueryModeAction.java new file mode 100644 index 0000000..35bc130 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/QueryModeAction.java @@ -0,0 +1,82 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.utility.ParamUtil; + +public class QueryModeAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + changeMode(oBaseForm, request); + oBaseForm.setQueried(true); + oBaseForm.setScreenMode("Q"); + BaseBD oBaseBD = getHeaderBusinessDelegate((ActionForm)oBaseForm, request); + setComboValues(oBaseBD.getComboDetails(), request.getSession()); + setComboValues(oBaseBD.getDetailComboDetails(), request.getSession()); + enableAll(oBaseForm); + enableDisable(oBaseForm, queryClicked(), "D"); + SecurityBD oSecBD = new SecurityBD(); + HashMap oMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), null); + if (null != oMap) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(10); + Map oBDMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oBDMap != null) { + if (oBDMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("D"), "D"); + if (oBDMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 10); + return mapping.findForward("success"); + } + + private void setComboValues(HashMap oComboMap, HttpSession session) { + if (null == oComboMap) + return; + if (oComboMap.size() <= 0) + return; + Set oKeySet = oComboMap.keySet(); + Iterator oIt = oKeySet.iterator(); + while (oIt.hasNext()) { + String sKey = oIt.next(); + session.setAttribute(sKey, oComboMap.get(sKey)); + } + oKeySet.clear(); + oComboMap.clear(); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/RefreshAction.java b/hrmsEjb/wenrgise/common/webtier/action/RefreshAction.java new file mode 100644 index 0000000..d9cf5c0 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/RefreshAction.java @@ -0,0 +1,111 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class RefreshAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + BaseDetailVO oBaseDetailVO = null; + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + String sScreenMode = oBaseForm.getScreenMode(); + oBaseForm.setUserPositionRequested(null); + oBaseForm.setUserPageRequested(null); + if (sScreenMode.equals("N") || sScreenMode.equals("Q")) { + changeMode(oBaseForm, request); + oBaseForm.setScreenMode(sScreenMode); + } else { + BaseQueryVO oBaseQueryVO = null; + BaseHeaderVO oBaseHeaderVO = null; + if (oBaseForm.isQueried()) { + oBaseQueryVO = oUser.getBaseQueryVO(sFormName); + if (oBaseQueryVO != null) { + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(null); + oBaseHeaderVO = oBaseBD.getNextHeaderRecord(oBaseQueryVO, oBaseForm.getPositionRequested(), sFormName, false, oUser); + int iRelativePosition = (int)(oBaseHeaderVO.getPositionRequested() - oBaseHeaderVO.getHeaderStartPosition() + 1L); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(iRelativePosition)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + } + } else { + oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + if (oBaseForm.getHeaderPrimaryKey() != null) { + oBaseQueryVO.setHeaderPrimaryKey(oBaseForm.getHeaderPrimaryKey()); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + } + } + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oBaseDetailVO) { + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, false, oUser); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + controlDetailNavigation(oBaseForm); + } + } + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(19); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 19); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/SaveAction.java b/hrmsEjb/wenrgise/common/webtier/action/SaveAction.java new file mode 100644 index 0000000..d2751b4 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/SaveAction.java @@ -0,0 +1,132 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class SaveAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + String wlId = oBaseForm.getWorkListId(); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 8, oBaseForm.getWorkListId()); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + BaseHeaderVO oBaseHeaderVO = null; + Timestamp oHeaderPicked = null; + Timestamp oDetailPicked = null; + if (!oBaseForm.isDetailDataChanged() && !oBaseForm.isHeaderDataChanged()) + return mapping.findForward("success"); + BeanUtils.copyProperties(oBaseHeaderBean, form); + if (oBaseForm.getScreenMode().equals("N")) { + oHeaderPicked = null; + } else { + if (oBaseForm.isHeaderDataChanged()) { + oBaseHeaderVO = oUser.getBaseHeaderVO(sFormName); + if (oBaseHeaderVO != null) { + oHeaderPicked = oBaseHeaderVO.getOWhenPicked(); + oBaseHeaderBean = getBaseHeaderBean(sFormName); + } + BeanUtils.copyProperties(oBaseHeaderBean, form); + } + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (oBaseDetailVO != null) + oDetailPicked = oBaseDetailVO.getOWhenPicked(); + if (oBaseForm.isDetailDataChanged()) + oDetailBeanArray = getDetailArray(oBaseForm); + } + String sHeaderPrimaryKey = oBaseBD.saveRecord(oBaseHeaderBean, oHeaderPicked, oBaseForm.getScreenName(), oBaseForm.getScreenMode(), oBaseForm.isHeaderDataChanged(), oDetailBeanArray, oBaseForm.isDetailDataChanged(), oDetailPicked); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setHeaderPrimaryKey(sHeaderPrimaryKey); + BaseQueryVO oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(sHeaderPrimaryKey); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oUser.putBaseHeaderVO(sFormName, oBaseHeaderVO); + if (!oBaseForm.getScreenMode().equals("N")) + if (null != oBaseDetailVO) { + if (oBaseDetailVO.getTotalDetailRecord() + oBaseDetailVO.getRowAdded() - oBaseDetailVO.getRowDeleted() >= 0L) { + oBaseDetailVO.setRowDeleted(0); + oBaseDetailVO.setRowAdded(0); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setPageRequested(1L); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + checkDetailNavigation(oBaseForm, oUser.getBaseDetailVO(sFormName, sScreenName)); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + } + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + } + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(8); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 8); + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/SaveDetailAction.java b/hrmsEjb/wenrgise/common/webtier/action/SaveDetailAction.java new file mode 100644 index 0000000..bfe4b28 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/SaveDetailAction.java @@ -0,0 +1,110 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class SaveDetailAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 8, oBaseForm.getWorkListId()); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + Timestamp oDetailPicked = null; + if (!oBaseForm.isDetailDataChanged()) + return mapping.findForward("success"); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (oBaseDetailVO != null) + oDetailPicked = oBaseDetailVO.getOWhenPicked(); + oDetailBeanArray = getDetailArray(oBaseForm); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + String sHeaderPrimaryKey = oBaseBD.saveRecord(oBaseHeaderBean, null, oBaseForm.getScreenName(), oBaseForm.getScreenMode(), false, oDetailBeanArray, true, oDetailPicked); + oBaseForm.setDetailDataChanged(false); + if (null != oBaseDetailVO) { + oBaseDetailVO.setRowDeleted(0); + oBaseDetailVO.setRowAdded(0); + } + BaseQueryVO oBaseQueryVO = null; + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setPageRequested(1L); + oBaseDetailVO.setRowAdded(0); + oBaseDetailVO.setRowDeleted(0); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + if (oBaseDetailVO != null) { + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + } + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(8); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 8); + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/action/ValidateAction.java b/hrmsEjb/wenrgise/common/webtier/action/ValidateAction.java new file mode 100644 index 0000000..5faaf43 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/action/ValidateAction.java @@ -0,0 +1,52 @@ +package wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; + +public class ValidateAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(21); + UserSession oUser = getUserSessionBean(request); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = getDetailArray(oBaseForm); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 21); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/form/BaseForm.java b/hrmsEjb/wenrgise/common/webtier/form/BaseForm.java new file mode 100644 index 0000000..7df4d82 --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/form/BaseForm.java @@ -0,0 +1,767 @@ +package wenrgise.common.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionMapping; + +public class BaseForm extends ActionForm { + private long totalHeaderRecord = 0L; + + private long totalDetailRecord = 0L; + + private ArrayList detailList = null; + + private String headerPrimaryKey = null; + + private long pageRequested = 0L; + + private String userPageRequested = null; + + private String[] detailId = null; + + private String[] status = null; + + private String screenName = null; + + private boolean headerDataChanged = false; + + private boolean detailDataChanged = false; + + private int detailStartPage = 0; + + private String screenMode = "Q"; + + private String forwardedPage = null; + + private boolean[] checked = null; + + private long positionRequested = 0L; + + private String userPositionRequested = null; + + private long totalCount = 0L; + + private String newPositionRequested = null; + + private String[] itemChecked = null; + + private String newPageRequested = null; + + private String lovKey; + + private String txtSearchFields; + + private String txtDisplayFields; + + private String txtIndex; + + private int thisPageDetailCount = 0; + + private boolean queried = true; + + String butQuery; + + String butInsert; + + String disabbutInsert; + + String butExecute; + + String disabbutExecute; + + String butSave; + + String disabbutSave; + + String butDelete; + + String disabbutDelete; + + String butRefresh; + + String disabbutRefresh; + + String butHelp; + + String disabbutHelp; + + String butPrint; + + String disabbutPrint; + + String butNextHeader; + + String disabbutNextHeader; + + String butPrevHeader; + + String disabbutPrevHeader; + + String butGetDetail; + + String disabbutGetDetail; + + String butJumpHeader; + + String disabbutJumpHeader; + + String butJumpDetail; + + String disabbutJumpDetail; + + private String butExit; + + private String disabbutExit; + + private String disabheaderStatus; + + private String disabbutQuery; + + private String butNextDetail; + + String butPrevDetail; + + private String disabbutPrevDetail; + + private String disabbutNextDetail; + + private String disabnewPageRequested; + + private String disabnewPositionRequested; + + private String butAddRow; + + private String butDelRow; + + private String disabbutAddRow; + + private String disabbutDelRow; + + private long totalPageCount; + + private String headerStatus; + + private String buttonClicked; + + private String buttonName; + + protected String firstLoad; + + private String confirmKey; + + private String buttonKeys; + + private String workListId; + + private String hidWorkListId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public long getTotalDetailRecord() { + return this.totalDetailRecord; + } + + public void setTotalDetailRecord(long newTotalDetailRecord) { + this.totalDetailRecord = newTotalDetailRecord; + } + + public long getTotalHeaderRecord() { + return this.totalHeaderRecord; + } + + public void setTotalHeaderRecord(long newTotalHeaderRecord) { + this.totalHeaderRecord = newTotalHeaderRecord; + } + + public ArrayList getDetailList() { + return this.detailList; + } + + public void setDetailList(ArrayList newDetailList) { + this.detailList = newDetailList; + } + + public String getHeaderPrimaryKey() { + return this.headerPrimaryKey; + } + + public void setHeaderPrimaryKey(String newHeaderPrimaryKey) { + this.headerPrimaryKey = newHeaderPrimaryKey; + } + + public long getPageRequested() { + return this.pageRequested; + } + + public void setPageRequested(long newPageRequested) { + this.pageRequested = newPageRequested; + } + + public String[] getStatus() { + return this.status; + } + + public void setStatus(String[] newStatus) { + this.status = newStatus; + } + + public String[] getDetailId() { + return this.detailId; + } + + public void setDetailId(String[] newDetailId) { + this.detailId = newDetailId; + } + + public String getScreenName() { + return this.screenName; + } + + public void setScreenName(String newScreenName) { + this.screenName = newScreenName; + } + + public boolean isHeaderDataChanged() { + return this.headerDataChanged; + } + + public void setHeaderDataChanged(boolean newHeaderDataChanged) { + this.headerDataChanged = newHeaderDataChanged; + } + + public boolean isDetailDataChanged() { + return this.detailDataChanged; + } + + public void setDetailDataChanged(boolean newDetailDataChanged) { + this.detailDataChanged = newDetailDataChanged; + } + + public int getDetailStartPage() { + return this.detailStartPage; + } + + public void setDetailStartPage(int newDetailStartPage) { + this.detailStartPage = newDetailStartPage; + } + + public String getScreenMode() { + return this.screenMode; + } + + public void setScreenMode(String newScreenMode) { + this.screenMode = newScreenMode; + } + + public String getForwardedPage() { + return this.forwardedPage; + } + + public void setForwardedPage(String newForwardedPage) { + this.forwardedPage = newForwardedPage; + } + + public boolean[] getChecked() { + return this.checked; + } + + public void setChecked(boolean[] newChecked) { + this.checked = newChecked; + } + + public long getPositionRequested() { + return this.positionRequested; + } + + public void setPositionRequested(long newPositionRequested) { + this.positionRequested = newPositionRequested; + } + + public long getTotalCount() { + return this.totalCount; + } + + public void setTotalCount(long newTotalCount) { + this.totalCount = newTotalCount; + } + + public String getNewPositionRequested() { + return this.newPositionRequested; + } + + public void setNewPositionRequested(String newNewPositionRequested) { + this.newPositionRequested = newNewPositionRequested; + } + + public String[] getItemChecked() { + return this.itemChecked; + } + + public void setItemChecked(String[] newItemChecked) { + this.itemChecked = newItemChecked; + } + + public String getLovKey() { + return this.lovKey; + } + + public void setLovKey(String newLovKey) { + this.lovKey = newLovKey; + } + + public String getTxtIndex() { + return this.txtIndex; + } + + public void setTxtIndex(String newTxtIndex) { + this.txtIndex = newTxtIndex; + } + + public String getNewPageRequested() { + return this.newPageRequested; + } + + public void setNewPageRequested(String newNewPageRequested) { + this.newPageRequested = newNewPageRequested; + } + + public String getUserPageRequested() { + return this.userPageRequested; + } + + public void setUserPageRequested(String newUserPageRequested) { + this.userPageRequested = newUserPageRequested; + } + + public String getUserPositionRequested() { + return this.userPositionRequested; + } + + public void setUserPositionRequested(String newUserPositionRequested) { + this.userPositionRequested = newUserPositionRequested; + } + + public int getThisPageDetailCount() { + return this.thisPageDetailCount; + } + + public void setThisPageDetailCount(int newThisPageDetailCount) { + this.thisPageDetailCount = newThisPageDetailCount; + } + + public String getTxtDisplayFields() { + return this.txtDisplayFields; + } + + public void setTxtDisplayFields(String newTxtDisplayFields) { + this.txtDisplayFields = newTxtDisplayFields; + } + + public String getTxtSearchFields() { + return this.txtSearchFields; + } + + public void setTxtSearchFields(String newTxtSearchFields) { + this.txtSearchFields = newTxtSearchFields; + } + + public long getTotalPageCount() { + return this.totalPageCount; + } + + public void setTotalPageCount(long newTotalPageCount) { + this.totalPageCount = newTotalPageCount; + } + + public String getHeaderStatus() { + return this.headerStatus; + } + + public void setHeaderStatus(String newHeaderStatus) { + this.headerStatus = newHeaderStatus; + } + + public String getButQuery() { + return this.butQuery; + } + + public void setButQuery(String newButQuery) { + this.butQuery = newButQuery; + } + + public String getButInsert() { + return this.butInsert; + } + + public void setButInsert(String newButInsert) { + this.butInsert = newButInsert; + } + + public String getDisabbutInsert() { + return this.disabbutInsert; + } + + public void setDisabbutInsert(String newDisabbutInsert) { + this.disabbutInsert = newDisabbutInsert; + } + + public String getButExecute() { + return this.butExecute; + } + + public void setButExecute(String newButExecute) { + this.butExecute = newButExecute; + } + + public String getDisabbutExecute() { + return this.disabbutExecute; + } + + public void setDisabbutExecute(String newDisabbutExecute) { + this.disabbutExecute = newDisabbutExecute; + } + + public String getButSave() { + return this.butSave; + } + + public void setButSave(String newButSave) { + this.butSave = newButSave; + } + + public String getDisabbutSave() { + return this.disabbutSave; + } + + public void setDisabbutSave(String newDisabbutSave) { + this.disabbutSave = newDisabbutSave; + } + + public String getButDelete() { + return this.butDelete; + } + + public void setButDelete(String newButDelete) { + this.butDelete = newButDelete; + } + + public String getDisabbutDelete() { + return this.disabbutDelete; + } + + public void setDisabbutDelete(String newDisabbutDelete) { + this.disabbutDelete = newDisabbutDelete; + } + + public String getButRefresh() { + return this.butRefresh; + } + + public void setButRefresh(String newButRefresh) { + this.butRefresh = newButRefresh; + } + + public String getDisabbutRefresh() { + return this.disabbutRefresh; + } + + public void setDisabbutRefresh(String newDisabbutRefresh) { + this.disabbutRefresh = newDisabbutRefresh; + } + + public String getButHelp() { + return this.butHelp; + } + + public void setButHelp(String newButHelp) { + this.butHelp = newButHelp; + } + + public String getDisabbutHelp() { + return this.disabbutHelp; + } + + public void setDisabbutHelp(String newDisabbutHelp) { + this.disabbutHelp = newDisabbutHelp; + } + + public String getButPrint() { + return this.butPrint; + } + + public void setButPrint(String newButPrint) { + this.butPrint = newButPrint; + } + + public String getDisabbutPrint() { + return this.disabbutPrint; + } + + public void setDisabbutPrint(String newDisabbutPrint) { + this.disabbutPrint = newDisabbutPrint; + } + + public String getButNextHeader() { + return this.butNextHeader; + } + + public void setButNextHeader(String newButNextHeader) { + this.butNextHeader = newButNextHeader; + } + + public String getDisabbutNextHeader() { + return this.disabbutNextHeader; + } + + public void setDisabbutNextHeader(String newDisabbutNextHeader) { + this.disabbutNextHeader = newDisabbutNextHeader; + } + + public String getButPrevHeader() { + return this.butPrevHeader; + } + + public void setButPrevHeader(String newButPrevHeader) { + this.butPrevHeader = newButPrevHeader; + } + + public String getDisabbutPrevHeader() { + return this.disabbutPrevHeader; + } + + public void setDisabbutPrevHeader(String newDisabbutPrevHeader) { + this.disabbutPrevHeader = newDisabbutPrevHeader; + } + + public String getButGetDetail() { + return this.butGetDetail; + } + + public void setButGetDetail(String newButGetDetail) { + this.butGetDetail = newButGetDetail; + } + + public String getDisabbutGetDetail() { + return this.disabbutGetDetail; + } + + public void setDisabbutGetDetail(String newDisabbutGetDetail) { + this.disabbutGetDetail = newDisabbutGetDetail; + } + + public String getButJumpHeader() { + return this.butJumpHeader; + } + + public void setButJumpHeader(String newButJumpHeader) { + this.butJumpHeader = newButJumpHeader; + } + + public String getDisabbutJumpHeader() { + return this.disabbutJumpHeader; + } + + public void setDisabbutJumpHeader(String newDisabbutJumpHeader) { + this.disabbutJumpHeader = newDisabbutJumpHeader; + } + + public String getButJumpDetail() { + return this.butJumpDetail; + } + + public void setButJumpDetail(String newButJumpDetail) { + this.butJumpDetail = newButJumpDetail; + } + + public String getDisabbutJumpDetail() { + return this.disabbutJumpDetail; + } + + public void setDisabbutJumpDetail(String newDisabbutJumpDetail) { + this.disabbutJumpDetail = newDisabbutJumpDetail; + } + + public String getButExit() { + return this.butExit; + } + + public void setButExit(String newButExit) { + this.butExit = newButExit; + } + + public String getDisabbutExit() { + return this.disabbutExit; + } + + public void setDisabbutExit(String newDisabbutExit) { + this.disabbutExit = newDisabbutExit; + } + + public String getDisabheaderStatus() { + return this.disabheaderStatus; + } + + public void setDisabheaderStatus(String newDisabheaderStatus) { + this.disabheaderStatus = newDisabheaderStatus; + } + + public String getDisabbutQuery() { + return this.disabbutQuery; + } + + public void setDisabbutQuery(String newDisabbutQuery) { + this.disabbutQuery = newDisabbutQuery; + } + + public String getButNextDetail() { + return this.butNextDetail; + } + + public void setButNextDetail(String newButNextDetail) { + this.butNextDetail = newButNextDetail; + } + + public String getButPrevDetail() { + return this.butPrevDetail; + } + + public void setButPrevDetail(String newButPrevDetail) { + this.butPrevDetail = newButPrevDetail; + } + + public String getDisabbutPrevDetail() { + return this.disabbutPrevDetail; + } + + public void setDisabbutPrevDetail(String newDisabbutPrevDetail) { + this.disabbutPrevDetail = newDisabbutPrevDetail; + } + + public String getDisabbutNextDetail() { + return this.disabbutNextDetail; + } + + public void setDisabbutNextDetail(String newDisabbutNextDetail) { + this.disabbutNextDetail = newDisabbutNextDetail; + } + + public String getDisabnewPageRequested() { + return this.disabnewPageRequested; + } + + public void setDisabnewPageRequested(String newDisabnewPageRequested) { + this.disabnewPageRequested = newDisabnewPageRequested; + } + + public String getDisabnewPositionRequested() { + return this.disabnewPositionRequested; + } + + public void setDisabnewPositionRequested(String newDisabnewPositionRequested) { + this.disabnewPositionRequested = newDisabnewPositionRequested; + } + + public String getButAddRow() { + return this.butAddRow; + } + + public void setButAddRow(String newButAddRow) { + this.butAddRow = newButAddRow; + } + + public String getButDelRow() { + return this.butDelRow; + } + + public void setButDelRow(String newButDelRow) { + this.butDelRow = newButDelRow; + } + + public String getDisabbutAddRow() { + return this.disabbutAddRow; + } + + public void setDisabbutAddRow(String newDisabbutAddRow) { + this.disabbutAddRow = newDisabbutAddRow; + } + + public String getDisabbutDelRow() { + return this.disabbutDelRow; + } + + public void setDisabbutDelRow(String newDisabbutDelRow) { + this.disabbutDelRow = newDisabbutDelRow; + } + + public String getButtonClicked() { + return this.buttonClicked; + } + + public void setButtonClicked(String newButtonClicked) { + this.buttonClicked = newButtonClicked; + } + + public String getButtonName() { + return this.buttonName; + } + + public void setButtonName(String newButtonName) { + this.buttonName = newButtonName; + } + + public boolean isQueried() { + return this.queried; + } + + public void setQueried(boolean newQueried) { + this.queried = newQueried; + } + + public String getFirstLoad() { + return this.firstLoad; + } + + public void setFirstLoad(String newFirstLoad) { + this.firstLoad = newFirstLoad; + } + + public String getConfirmKey() { + return this.confirmKey; + } + + public void setConfirmKey(String newConfirmKey) { + this.confirmKey = newConfirmKey; + } + + public String getButtonKeys() { + return this.buttonKeys; + } + + public void setButtonKeys(String newButtonKeys) { + this.buttonKeys = newButtonKeys; + } + + public String getWorkListId() { + return this.hidWorkListId; + } + + public void setWorkListId(String newWorkListId) { + this.workListId = newWorkListId; + } + + public String getHidWorkListId() { + return this.hidWorkListId; + } + + public void setHidWorkListId(String newHidWorkListId) { + this.hidWorkListId = newHidWorkListId; + } +} diff --git a/hrmsEjb/wenrgise/common/webtier/form/BaseLOVForm.java b/hrmsEjb/wenrgise/common/webtier/form/BaseLOVForm.java new file mode 100644 index 0000000..2b4306e --- /dev/null +++ b/hrmsEjb/wenrgise/common/webtier/form/BaseLOVForm.java @@ -0,0 +1,533 @@ +package wenrgise.common.webtier.form; + +import java.util.ArrayList; + +public class BaseLOVForm extends BaseForm { + private String[] detailField1; + + private String[] detailField2; + + private String[] detailField3; + + private String[] detailField4; + + private String[] detailField5; + + private String[] detailField6; + + private String[] detailField7; + + private String[] detailField8; + + private String[] detailField9; + + private String[] detailField10; + + private String[] detailField11; + + private String[] detailField12; + + private String[] detailField13; + + private String[] detailField14; + + private String[] detailField15; + + private String[] detailField16; + + private String[] detailField17; + + private String[] detailField18; + + private String[] detailField19; + + private String[] detailField20; + + private String selRadio; + + private ArrayList detailList; + + private String userAction; + + private String txtHidSubmitFirst; + + private String txtHidAction = "FirstTime"; + + private String txtHidSelectedValue; + + private int txtHidTotRows; + + private int txtHidTotCols; + + private String searchField1; + + private String searchField2; + + private String insertFlag; + + private String searchFieldName1; + + private String searchFieldName2; + + private String multipleFlag; + + private String queryParam; + + private ArrayList headerList; + + private ArrayList visibilityList; + + private String recursiveFlag; + + private int level; + + private int finalLevel; + + private int initialLevel; + + private String searchField3; + + private String searchField4; + + private String searchField5; + + private String searchField6; + + private String searchFieldName3; + + private String searchFieldName4; + + private String searchFieldName5; + + private String searchFieldName6; + + public ArrayList getDetailList() { + return this.detailList; + } + + public void setDetailList(ArrayList newDetailList) { + this.detailList = newDetailList; + } + + public String getSelRadio() { + return this.selRadio; + } + + public void setSelRadio(String newSelRadio) { + this.selRadio = newSelRadio; + } + + public String getUserAction() { + return this.userAction; + } + + public void setUserAction(String newUserAction) { + this.userAction = newUserAction; + } + + public String getTxtHidAction() { + return this.txtHidAction; + } + + public void setTxtHidAction(String newTxtHidAction) { + this.txtHidAction = newTxtHidAction; + } + + public String getTxtHidSelectedValue() { + return this.txtHidSelectedValue; + } + + public void setTxtHidSelectedValue(String newTxtHidSelectedValue) { + this.txtHidSelectedValue = newTxtHidSelectedValue; + } + + public String getTxtHidSubmitFirst() { + return this.txtHidSubmitFirst; + } + + public void setTxtHidSubmitFirst(String newTxtHidSubmitFirst) { + this.txtHidSubmitFirst = newTxtHidSubmitFirst; + } + + public String getSearchField1() { + return this.searchField1; + } + + public void setSearchField1(String newSearchField1) { + this.searchField1 = newSearchField1; + } + + public int getTxtHidTotRows() { + return this.txtHidTotRows; + } + + public void setTxtHidTotRows(int newTxtHidTotRows) { + this.txtHidTotRows = newTxtHidTotRows; + } + + public void onLoadReset() { + this.searchField1 = ""; + this.searchField2 = ""; + this.searchField3 = ""; + this.searchField4 = ""; + this.searchField5 = ""; + this.searchField6 = ""; + this.selRadio = ""; + this.detailField1 = null; + this.detailField2 = null; + this.detailField3 = null; + this.detailField4 = null; + this.detailField5 = null; + this.detailField6 = null; + this.detailField7 = null; + this.detailField8 = null; + this.detailField9 = null; + this.detailField10 = null; + this.detailField11 = null; + this.detailField12 = null; + this.detailField13 = null; + this.detailField14 = null; + this.detailField15 = null; + this.detailField16 = null; + this.detailField17 = null; + this.detailField18 = null; + this.detailField19 = null; + this.detailField20 = null; + this.txtHidTotRows = -1; + this.txtHidTotCols = -1; + this.headerList.clear(); + this.detailList.clear(); + } + + public String[] getDetailField4() { + return this.detailField4; + } + + public void setDetailField4(String[] newDetailField4) { + this.detailField4 = newDetailField4; + } + + public String[] getDetailField5() { + return this.detailField5; + } + + public void setDetailField5(String[] newDetailField5) { + this.detailField5 = newDetailField5; + } + + public String[] getDetailField6() { + return this.detailField6; + } + + public void setDetailField6(String[] newDetailField6) { + this.detailField6 = newDetailField6; + } + + public String[] getDetailField7() { + return this.detailField7; + } + + public void setDetailField7(String[] newDetailField7) { + this.detailField7 = newDetailField7; + } + + public String[] getDetailField8() { + return this.detailField8; + } + + public void setDetailField8(String[] newDetailField8) { + this.detailField8 = newDetailField8; + } + + public String[] getDetailField9() { + return this.detailField9; + } + + public void setDetailField9(String[] newDetailField9) { + this.detailField9 = newDetailField9; + } + + public String[] getDetailField10() { + return this.detailField10; + } + + public void setDetailField10(String[] newDetailField10) { + this.detailField10 = newDetailField10; + } + + public String getSearchField2() { + return this.searchField2; + } + + public void setSearchField2(String newSearchField2) { + this.searchField2 = newSearchField2; + } + + public String[] getDetailField1() { + return this.detailField1; + } + + public void setDetailField1(String[] newDetailField1) { + this.detailField1 = newDetailField1; + } + + public String[] getDetailField2() { + return this.detailField2; + } + + public void setDetailField2(String[] newDetailField2) { + this.detailField2 = newDetailField2; + } + + public String[] getDetailField3() { + return this.detailField3; + } + + public void setDetailField3(String[] newDetailField3) { + this.detailField3 = newDetailField3; + } + + public int getTxtHidTotCols() { + return this.txtHidTotCols; + } + + public void setTxtHidTotCols(int newTxtHidTotCols) { + this.txtHidTotCols = newTxtHidTotCols; + } + + public String getInsertFlag() { + return this.insertFlag; + } + + public void setInsertFlag(String newInsertFlag) { + this.insertFlag = newInsertFlag; + } + + public String getSearchFieldName1() { + return this.searchFieldName1; + } + + public void setSearchFieldName1(String newSearchFieldName1) { + this.searchFieldName1 = newSearchFieldName1; + } + + public String getSearchFieldName2() { + return this.searchFieldName2; + } + + public void setSearchFieldName2(String newSearchFieldName2) { + this.searchFieldName2 = newSearchFieldName2; + } + + public String getMultipleFlag() { + return this.multipleFlag; + } + + public void setMultipleFlag(String newMultipleFlag) { + this.multipleFlag = newMultipleFlag; + } + + public String getQueryParam() { + return this.queryParam; + } + + public void setQueryParam(String newQueryParam) { + this.queryParam = newQueryParam; + } + + public ArrayList getHeaderList() { + return this.headerList; + } + + public void setHeaderList(ArrayList newHeaderList) { + this.headerList = newHeaderList; + } + + public ArrayList getVisibilityList() { + return this.visibilityList; + } + + public void setVisibilityList(ArrayList newVisibilityList) { + this.visibilityList = newVisibilityList; + } + + public String getVisibility(int iIndex) { + return this.visibilityList.get(iIndex); + } + + public String[] getDetailField11() { + return this.detailField11; + } + + public void setDetailField11(String[] newDetailField11) { + this.detailField11 = newDetailField11; + } + + public String[] getDetailField12() { + return this.detailField12; + } + + public void setDetailField12(String[] newDetailField12) { + this.detailField12 = newDetailField12; + } + + public String[] getDetailField13() { + return this.detailField13; + } + + public void setDetailField13(String[] newDetailField13) { + this.detailField13 = newDetailField13; + } + + public String[] getDetailField14() { + return this.detailField14; + } + + public void setDetailField14(String[] newDetailField14) { + this.detailField14 = newDetailField14; + } + + public String[] getDetailField15() { + return this.detailField15; + } + + public void setDetailField15(String[] newDetailField15) { + this.detailField15 = newDetailField15; + } + + public String[] getDetailField17() { + return this.detailField17; + } + + public void setDetailField17(String[] newDetailField17) { + this.detailField17 = newDetailField17; + } + + public String[] getDetailField18() { + return this.detailField18; + } + + public void setDetailField18(String[] newDetailField18) { + this.detailField18 = newDetailField18; + } + + public String[] getDetailField19() { + return this.detailField19; + } + + public void setDetailField19(String[] newDetailField19) { + this.detailField19 = newDetailField19; + } + + public String[] getDetailField16() { + return this.detailField16; + } + + public void setDetailField16(String[] newDetailField16) { + this.detailField16 = newDetailField16; + } + + public String[] getDetailField20() { + return this.detailField20; + } + + public void setDetailField20(String[] newDetailField20) { + this.detailField20 = newDetailField20; + } + + public String getRecursiveFlag() { + return this.recursiveFlag; + } + + public void setRecursiveFlag(String newRecursiveFlag) { + this.recursiveFlag = newRecursiveFlag; + } + + public int getLevel() { + return this.level; + } + + public void setLevel(int newLevel) { + this.level = newLevel; + } + + public int getFinalLevel() { + return this.finalLevel; + } + + public void setFinalLevel(int newFinalLevel) { + this.finalLevel = newFinalLevel; + } + + public int getInitialLevel() { + return this.initialLevel; + } + + public void setInitialLevel(int newInitialLevel) { + this.initialLevel = newInitialLevel; + } + + public String getSearchField3() { + return this.searchField3; + } + + public void setSearchField3(String newSearchField3) { + this.searchField3 = newSearchField3; + } + + public String getSearchField4() { + return this.searchField4; + } + + public void setSearchField4(String newSearchField4) { + this.searchField4 = newSearchField4; + } + + public String getSearchField5() { + return this.searchField5; + } + + public void setSearchField5(String newSearchField5) { + this.searchField5 = newSearchField5; + } + + public String getSearchField6() { + return this.searchField6; + } + + public void setSearchField6(String newSearchField6) { + this.searchField6 = newSearchField6; + } + + public String getSearchFieldName3() { + return this.searchFieldName3; + } + + public void setSearchFieldName3(String newSearchFieldName3) { + this.searchFieldName3 = newSearchFieldName3; + } + + public String getSearchFieldName4() { + return this.searchFieldName4; + } + + public void setSearchFieldName4(String newSearchFieldName4) { + this.searchFieldName4 = newSearchFieldName4; + } + + public String getSearchFieldName5() { + return this.searchFieldName5; + } + + public void setSearchFieldName5(String newSearchFieldName5) { + this.searchFieldName5 = newSearchFieldName5; + } + + public String getSearchFieldName6() { + return this.searchFieldName6; + } + + public void setSearchFieldName6(String newSearchFieldName6) { + this.searchFieldName6 = newSearchFieldName6; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/DetailScreen.java b/hrmsEjb/wenrgise/common/xml/vo/DetailScreen.java new file mode 100644 index 0000000..cc2547c --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/DetailScreen.java @@ -0,0 +1,72 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class DetailScreen implements Serializable { + private String _DetailScreenName; + + private String _DetailArrayName; + + private String _DetailBD; + + private String _DetailBean; + + private String _DetailRecordPerPage; + + private String _DetailPagesPerSlot; + + public DetailScreen() {} + + public DetailScreen(String _DetailScreenName, String _DetailArrayName) { + this._DetailScreenName = _DetailScreenName; + this._DetailArrayName = _DetailArrayName; + } + + public String get_DetailArrayName() { + return this._DetailArrayName; + } + + public void set_DetailArrayName(String new_DetailArrayName) { + this._DetailArrayName = new_DetailArrayName; + } + + public String get_DetailScreenName() { + return this._DetailScreenName; + } + + public void set_DetailScreenName(String new_DetailScreenName) { + this._DetailScreenName = new_DetailScreenName; + } + + public String get_DetailBD() { + return this._DetailBD; + } + + public void set_DetailBD(String new_DetailBD) { + this._DetailBD = new_DetailBD; + } + + public String get_DetailBean() { + return this._DetailBean; + } + + public void set_DetailBean(String new_DetailBean) { + this._DetailBean = new_DetailBean; + } + + public String get_DetailRecordPerPage() { + return this._DetailRecordPerPage; + } + + public void set_DetailRecordPerPage(String new_DetailRecordPerPage) { + this._DetailRecordPerPage = new_DetailRecordPerPage; + } + + public String get_DetailPagesPerSlot() { + return this._DetailPagesPerSlot; + } + + public void set_DetailPagesPerSlot(String new_DetailPagesPerSlot) { + this._DetailPagesPerSlot = new_DetailPagesPerSlot; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/DetailScreens.java b/hrmsEjb/wenrgise/common/xml/vo/DetailScreens.java new file mode 100644 index 0000000..340ca4e --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/DetailScreens.java @@ -0,0 +1,22 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class DetailScreens implements Serializable { + private ArrayList _DetailScreen; + + public DetailScreens() {} + + public DetailScreens(ArrayList _DetailScreen) { + this._DetailScreen = _DetailScreen; + } + + public ArrayList get_DetailScreen() { + return this._DetailScreen; + } + + public void set_DetailScreen(ArrayList new_DetailScreen) { + this._DetailScreen = new_DetailScreen; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/EnrgiseApp.java b/hrmsEjb/wenrgise/common/xml/vo/EnrgiseApp.java new file mode 100644 index 0000000..e4e242b --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/EnrgiseApp.java @@ -0,0 +1,33 @@ +package wenrgise.common.xml.vo; + +public class EnrgiseApp { + private String _DBName; + + private String _WebApp; + + private String _Module; + + public String get_DBName() { + return this._DBName; + } + + public void set_DBName(String new_DBName) { + this._DBName = new_DBName; + } + + public String get_WebApp() { + return this._WebApp; + } + + public void set_WebApp(String new_WebApp) { + this._WebApp = new_WebApp; + } + + public String get_Module() { + return this._Module; + } + + public void set_Module(String new_Module) { + this._Module = new_Module; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/EnrgiseForms.java b/hrmsEjb/wenrgise/common/xml/vo/EnrgiseForms.java new file mode 100644 index 0000000..86e3b79 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/EnrgiseForms.java @@ -0,0 +1,25 @@ +package wenrgise.common.xml.vo; + +import java.util.ArrayList; + +public class EnrgiseForms { + private ArrayList _SingleForm; + + public EnrgiseForms() {} + + public EnrgiseForms(ArrayList _SingleForm_) { + set_SingleForm(_SingleForm_); + } + + public boolean isEmpty_SingleForm() { + return (null == this._SingleForm) ? true : this._SingleForm.isEmpty(); + } + + public ArrayList get_SingleForm() { + return this._SingleForm; + } + + public void set_SingleForm(ArrayList new_SingleForm_) { + this._SingleForm = new_SingleForm_; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/HashedEnrgiseForms.java b/hrmsEjb/wenrgise/common/xml/vo/HashedEnrgiseForms.java new file mode 100644 index 0000000..3fd5bd6 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/HashedEnrgiseForms.java @@ -0,0 +1,25 @@ +package wenrgise.common.xml.vo; + +import java.util.HashMap; + +public class HashedEnrgiseForms { + private SingleForm singleForm; + + private HashMap detailMap = new HashMap(); + + public HashMap getDetailMap() { + return this.detailMap; + } + + public void setDetailMap(HashMap newDetailMap) { + this.detailMap = newDetailMap; + } + + public SingleForm getSingleForm() { + return this.singleForm; + } + + public void setSingleForm(SingleForm newSingleForm) { + this.singleForm = newSingleForm; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/INFOClass.java b/hrmsEjb/wenrgise/common/xml/vo/INFOClass.java new file mode 100644 index 0000000..664c3a3 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/INFOClass.java @@ -0,0 +1,22 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class INFOClass implements Serializable { + private ArrayList _Module; + + public INFOClass() {} + + public INFOClass(ArrayList _module) { + this._Module = _module; + } + + public ArrayList get_Module() { + return this._Module; + } + + public void set_Module(ArrayList new_Module) { + this._Module = new_Module; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/LOV.java b/hrmsEjb/wenrgise/common/xml/vo/LOV.java new file mode 100644 index 0000000..ed50419 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/LOV.java @@ -0,0 +1,25 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class LOV implements Serializable { + private String _LovKey; + + private Screens _Screens; + + public String get_LovKey() { + return this._LovKey; + } + + public void set_LovKey(String new_LovKey) { + this._LovKey = new_LovKey; + } + + public Screens get_Screens() { + return this._Screens; + } + + public void set_Screens(Screens new_Screens) { + this._Screens = new_Screens; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/LOVClass.java b/hrmsEjb/wenrgise/common/xml/vo/LOVClass.java new file mode 100644 index 0000000..105b3f5 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/LOVClass.java @@ -0,0 +1,16 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class LOVClass implements Serializable { + private ArrayList _LOV; + + public ArrayList get_LOV() { + return this._LOV; + } + + public void set_LOV(ArrayList new_LOV) { + this._LOV = new_LOV; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/LOVInfo.java b/hrmsEjb/wenrgise/common/xml/vo/LOVInfo.java new file mode 100644 index 0000000..eed4f33 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/LOVInfo.java @@ -0,0 +1,45 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class LOVInfo implements Serializable { + private String facadeName; + + private String functionName; + + private String insertFlag; + + private String recursiveFlag; + + public String getFacadeName() { + return this.facadeName; + } + + public void setFacadeName(String newFacadeName) { + this.facadeName = newFacadeName; + } + + public String getFunctionName() { + return this.functionName; + } + + public void setFunctionName(String newFunctionName) { + this.functionName = newFunctionName; + } + + public String getInsertFlag() { + return this.insertFlag; + } + + public void setInsertFlag(String newInsertFlag) { + this.insertFlag = newInsertFlag; + } + + public String getRecursiveFlag() { + return this.recursiveFlag; + } + + public void setRecursiveFlag(String newRecursiveFlag) { + this.recursiveFlag = newRecursiveFlag; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/Module.java b/hrmsEjb/wenrgise/common/xml/vo/Module.java new file mode 100644 index 0000000..2152223 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/Module.java @@ -0,0 +1,32 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class Module implements Serializable { + private String _ModuleName; + + private ArrayList _ScreenInfo; + + public Module() {} + + public Module(String _modulename) { + this._ModuleName = _modulename; + } + + public String get_ModuleName() { + return this._ModuleName; + } + + public void set_ModuleName(String new_Modulename) { + this._ModuleName = new_Modulename; + } + + public ArrayList get_ScreenInfo() { + return this._ScreenInfo; + } + + public void set_ScreenInfo(ArrayList new_Screeninfo) { + this._ScreenInfo = new_Screeninfo; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/Report.java b/hrmsEjb/wenrgise/common/xml/vo/Report.java new file mode 100644 index 0000000..0a501ff --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/Report.java @@ -0,0 +1,25 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class Report implements Serializable { + private String _KeyInfo; + + private String _ReportKey; + + public String get_ReportKey() { + return this._ReportKey; + } + + public void set_ReportKey(String new_Reportkey) { + this._ReportKey = new_Reportkey; + } + + public String get_KeyInfo() { + return this._KeyInfo; + } + + public void set_KeyInfo(String new_Keyinfo) { + this._KeyInfo = new_Keyinfo; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/ReportInfo.java b/hrmsEjb/wenrgise/common/xml/vo/ReportInfo.java new file mode 100644 index 0000000..a93c2d8 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/ReportInfo.java @@ -0,0 +1,25 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class ReportInfo implements Serializable { + private String keyinfo; + + private String reportkey; + + public String getKeyInfo() { + return this.keyinfo; + } + + public void setKeyInfo(String newKeyinfo) { + this.keyinfo = newKeyinfo; + } + + public String getReportKey() { + return this.reportkey; + } + + public void setReportKey(String newReportKey) { + this.reportkey = newReportKey; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/Reports.java b/hrmsEjb/wenrgise/common/xml/vo/Reports.java new file mode 100644 index 0000000..2a38ea7 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/Reports.java @@ -0,0 +1,16 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class Reports implements Serializable { + private ArrayList _Report; + + public ArrayList get_Report() { + return this._Report; + } + + public void set_Report(ArrayList new_Report) { + this._Report = new_Report; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/Screen.java b/hrmsEjb/wenrgise/common/xml/vo/Screen.java new file mode 100644 index 0000000..3461a26 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/Screen.java @@ -0,0 +1,25 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class Screen implements Serializable { + private String _ScreenName; + + private ScreenModes _ScreenModes; + + public ScreenModes get_ScreenModes() { + return this._ScreenModes; + } + + public void set_ScreenModes(ScreenModes new_ScreenModes) { + this._ScreenModes = new_ScreenModes; + } + + public String get_ScreenName() { + return this._ScreenName; + } + + public void set_ScreenName(String new_ScreenName) { + this._ScreenName = new_ScreenName; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/ScreenInfo.java b/hrmsEjb/wenrgise/common/xml/vo/ScreenInfo.java new file mode 100644 index 0000000..b8b471a --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/ScreenInfo.java @@ -0,0 +1,31 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class ScreenInfo implements Serializable { + private String _ScreenName; + + private Reports _Reports; + + public ScreenInfo() {} + + public ScreenInfo(String _sscreennme) { + this._ScreenName = _sscreennme; + } + + public String get_ScreenName() { + return this._ScreenName; + } + + public void set_ScreenName(String new_Screenname) { + this._ScreenName = new_Screenname; + } + + public Reports get_Reports() { + return this._Reports; + } + + public void set_Reports(Reports new_Reports) { + this._Reports = new_Reports; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/ScreenMode.java b/hrmsEjb/wenrgise/common/xml/vo/ScreenMode.java new file mode 100644 index 0000000..c023721 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/ScreenMode.java @@ -0,0 +1,55 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class ScreenMode implements Serializable { + private String _ModeName; + + private String _FacadeName; + + private String _FunctionName; + + private String _InsertFlag; + + private String _RecursiveFlag; + + public String get_FacadeName() { + return this._FacadeName; + } + + public void set_FacadeName(String new_FacadeName) { + this._FacadeName = new_FacadeName; + } + + public String get_FunctionName() { + return this._FunctionName; + } + + public void set_FunctionName(String new_FunctionName) { + this._FunctionName = new_FunctionName; + } + + public String get_InsertFlag() { + return this._InsertFlag; + } + + public void set_InsertFlag(String new_InsertFlag) { + this._InsertFlag = new_InsertFlag; + } + + public String get_ModeName() { + return this._ModeName; + } + + public void set_ModeName(String new_ModeName) { + this._ModeName = new_ModeName; + } + + public String get_RecursiveFlag() { + return this._RecursiveFlag; + } + + public void set_RecursiveFlag(String new_RecursiveFlag) { + this._RecursiveFlag = new_RecursiveFlag; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/ScreenModes.java b/hrmsEjb/wenrgise/common/xml/vo/ScreenModes.java new file mode 100644 index 0000000..dc8b37c --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/ScreenModes.java @@ -0,0 +1,16 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class ScreenModes implements Serializable { + private ArrayList _ScreenMode; + + public ArrayList get_ScreenMode() { + return this._ScreenMode; + } + + public void set_ScreenMode(ArrayList new_ScreenMode) { + this._ScreenMode = new_ScreenMode; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/Screens.java b/hrmsEjb/wenrgise/common/xml/vo/Screens.java new file mode 100644 index 0000000..f4c2ca8 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/Screens.java @@ -0,0 +1,16 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class Screens implements Serializable { + private ArrayList _Screen; + + public ArrayList get_Screen() { + return this._Screen; + } + + public void set_Screen(ArrayList new_Screen) { + this._Screen = new_Screen; + } +} diff --git a/hrmsEjb/wenrgise/common/xml/vo/SingleForm.java b/hrmsEjb/wenrgise/common/xml/vo/SingleForm.java new file mode 100644 index 0000000..47fa001 --- /dev/null +++ b/hrmsEjb/wenrgise/common/xml/vo/SingleForm.java @@ -0,0 +1,93 @@ +package wenrgise.common.xml.vo; + +import java.io.Serializable; + +public class SingleForm implements Serializable { + private String _FormName; + + private String _EnrgiseQueryVO; + + private String _HeaderBD; + + private String _HeaderBean; + + private String _HeaderSize; + + private String _PseudoHeader; + + private DetailScreens _DetailScreens; + + private String _HeaderSave; + + public SingleForm() {} + + public SingleForm(String _FormName, String _EnrgiseQueryVO, DetailScreens _DetailScreens) { + this._FormName = _FormName; + this._EnrgiseQueryVO = _EnrgiseQueryVO; + this._DetailScreens = _DetailScreens; + } + + public DetailScreens get_DetailScreens() { + return this._DetailScreens; + } + + public void set_DetailScreens(DetailScreens new_DetailScreens) { + this._DetailScreens = new_DetailScreens; + } + + public String get_EnrgiseQueryVO() { + return this._EnrgiseQueryVO; + } + + public void set_EnrgiseQueryVO(String new_EnrgiseQueryVO) { + this._EnrgiseQueryVO = new_EnrgiseQueryVO; + } + + public String get_FormName() { + return this._FormName; + } + + public void set_FormName(String new_FormName) { + this._FormName = new_FormName; + } + + public String get_HeaderBD() { + return this._HeaderBD; + } + + public void set_HeaderBD(String new_HeaderBD) { + this._HeaderBD = new_HeaderBD; + } + + public String get_HeaderBean() { + return this._HeaderBean; + } + + public void set_HeaderBean(String new_HeaderBean) { + this._HeaderBean = new_HeaderBean; + } + + public String get_HeaderSize() { + return this._HeaderSize; + } + + public void set_HeaderSize(String new_HeaderSize) { + this._HeaderSize = new_HeaderSize; + } + + public String get_PseudoHeader() { + return this._PseudoHeader; + } + + public void set_PseudoHeader(String new_PseudoHeader) { + this._PseudoHeader = new_PseudoHeader; + } + + public String get_HeaderSave() { + return this._HeaderSave; + } + + public void set_HeaderSave(String new_HeaderSave) { + this._HeaderSave = new_HeaderSave; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/business/BaseBO.java b/hrmsEjb/wenrgise/ejb/common/business/BaseBO.java new file mode 100644 index 0000000..f08ba1b --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/business/BaseBO.java @@ -0,0 +1,295 @@ +package wenrgise.ejb.common.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Locale; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.ejb.common.utility.ServiceLocator; + +public abstract class BaseBO { + public static Logger log = Logger.getLogger("wenrgise.ejb.common.business.BaseBO"); + + protected String headerTable = null; + + private String headerPKColumnName = null; + + private String detailTable = null; + + private String detailPKColumnName = null; + + protected DateFormat userDateFormat; + + protected DateFormat defaultDateFormat; + + protected Locale userLocale; + + protected Locale defaultLocale; + + protected UserInfo oUserInfo; + + public BaseBO() {} + + public BaseBO(UserInfo oUserInfo) { + this.oUserInfo = oUserInfo; + } + + private void setDateFormatAndLocale() throws EnrgiseSystemException { + this.userDateFormat = new SimpleDateFormat("dd/MM/yyyy"); + this.defaultDateFormat = new SimpleDateFormat("dd/MM/yyyy"); + try { + UserSessionHome oHome = (UserSessionHome)ServiceLocator.getLocator().getService("UserSession"); + UserSession oUser = oHome.create(); + this.userDateFormat = oUser.getUserDateFormat(); + this.defaultDateFormat = oUser.getDefaultDateFormat(); + this.userLocale = oUser.getUserLocale(); + this.defaultLocale = oUser.getDefaultLocale(); + this.oUserInfo = oUser.getUserInfo(); + } catch (RemoteException oEx) { + log.severe(oEx.getMessage()); + throw new EnrgiseSystemException(); + } catch (CreateException oCrt) { + log.severe(oCrt.getMessage()); + throw new EnrgiseSystemException(); + } + } + + public String saveData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sScreenHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + String sHeaderPrimaryKey = sScreenHeaderPrimaryKey; + if (sScreenMode.equals("U")) + initializeBOImpl(); + if (sScreenMode.equals("U")) + if (bHeaderDataChanged || bDetailDataChanged) + if (oWhenPicked != null) { + if (!checkHeaderTimeStamp(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + } else if (!checkHeaderTimeStamp(null, oDetailPicked)) { + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + } + additionalFieldValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + additionalTimestampValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + additionalBusinessValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + if (bHeaderDataChanged) { + sHeaderPrimaryKey = saveHeaderImpl(oBaseHeaderBean, sScreenMode); + if (sHeaderPrimaryKey == null && !sScreenMode.equalsIgnoreCase("D")) + sHeaderPrimaryKey = sScreenHeaderPrimaryKey; + } + if (bDetailDataChanged && !sScreenMode.equalsIgnoreCase("D")) + if (oBaseHeaderBean == null) { + saveDetailImpl(sHeaderPrimaryKey, sScreenName, oDetailBeanArray); + if (oWhenPicked != null) + updateHeaderTimeStamp(sHeaderPrimaryKey); + } else if (!EnrgiseUtil.checkString(oBaseHeaderBean.getPseudoHeader())) { + saveDetailImpl(sHeaderPrimaryKey, sScreenName, oDetailBeanArray); + if (oWhenPicked != null) + updateHeaderTimeStamp(sHeaderPrimaryKey); + } else { + saveDetailImpl(oBaseHeaderBean, sScreenName, oDetailBeanArray); + } + return sHeaderPrimaryKey; + } + + private boolean updateHeaderTimeStamp(String sPrimaryKey) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, this.headerTable)); + oParameters.add(new DBObject(2, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "COMMONPROCEDURES.proc_UpdateHeaderTimeStamp(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + String sSuccessFlag = (String)oOutObject.getObject(); + if (!sSuccessFlag.trim().equals("Y")) + return false; + return true; + } + + public void initializeBO(String sHeaderTable, String sDetailTable) { + this.headerTable = sHeaderTable; + } + + public void initializeBO(String sHeaderTable) { + this.headerTable = sHeaderTable; + } + + private boolean checkHeaderTimeStamp(String sPrimaryKey, Timestamp oWhenPicked) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, this.headerTable)); + oParameters.add(new DBObject(2, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(3, 1, 93, oWhenPicked)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "COMMONPROCEDURES.proc_CheckHeaderTimeStamp(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + String sSuccessFlag = (String)oOutObject.getObject(); + if (!sSuccessFlag.trim().equals("Y")) + return false; + return true; + } + + private boolean checkDetailTimeStamp(String sPrimaryKey, Timestamp oWhenDetailPicked) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, this.headerTable)); + oParameters.add(new DBObject(2, 1, 12, this.detailTable)); + oParameters.add(new DBObject(3, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(4, 1, 93, oWhenDetailPicked)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "COMMONPROCEDURES.proc_CheckDetailTimeStamp(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + String sSuccessFlag = (String)oOutObject.getObject(); + if (!sSuccessFlag.trim().equals("Y")) + return false; + return true; + } + + public void reportError(ArrayList oList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (oList.size() > 0) { + boolean bFirstTime = true; + EnrgiseApplicationException oApp = null; + EnrgiseSystemException oSys = null; + Object obj = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + obj = oIt.next(); + if (obj instanceof EnrgiseApplicationException || obj instanceof EnrgiseMessageKeyException) { + if (!bFirstTime) { + oApp.addToList((EnrgiseApplicationException)obj); + continue; + } + bFirstTime = false; + oApp = (EnrgiseApplicationException)obj; + continue; + } + oSys = (EnrgiseSystemException)obj; + throw oSys; + } + throw oApp; + } + } + + public abstract String saveHeaderImpl(BaseHeaderBean paramBaseHeaderBean, String paramString) throws EnrgiseMessageKeyException, EnrgiseApplicationException, EnrgiseSystemException; + + public abstract void saveDetailImpl(String paramString1, String paramString2, ArrayList paramArrayList) throws EnrgiseApplicationException, EnrgiseSystemException; + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public abstract void initializeBOImpl(); + + public abstract void additionalFieldValidationImpl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + public abstract void additionalTimestampValidationImpl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + public abstract void additionalBusinessValidationImpl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + public UserInfo getOUserInfo() { + return this.oUserInfo; + } + + public void setOUserInfo(UserInfo newOUserInfo) { + this.oUserInfo = newOUserInfo; + } + + public String approve(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + initializeBOImpl(); + if (sHeaderPrimaryKey != null) { + if (oWhenPicked != null && + !checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + validateApprove(sHeaderPrimaryKey); + if (EnrgiseUtil.checkString(sTableName)) { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("update ").concat(String.valueOf(sTableName))).concat(String.valueOf(" set status_flag='"))).concat(String.valueOf("A"))).concat(String.valueOf("',modified_site_id = 100, user_id_modified = 100, modified_time_stamp = sysdate where id="))).concat(String.valueOf(sHeaderPrimaryKey)); + int i = oBean.executeUpsert(sQuery); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + } + return sHeaderPrimaryKey; + } + + public String callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity) throws EnrgiseApplicationException, EnrgiseSystemException { + if (activity.equals("A")) + return "FinallyApproved"; + if (activity.equals("R")) + return "R"; + return "success"; + } + + public void validateApprove(String sHeaderPrimaryKey) {} + + public void validateReject(String sHeaderPrimaryKey) {} + + public void validateRevise(String sHeaderPrimaryKey) {} + + public String submit(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + initializeBOImpl(); + if (sHeaderPrimaryKey != null) + if (oWhenPicked != null) + if (!checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + return oBaseHeaderBean.getHeaderPrimaryKey(); + } + + public String reject(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + if (sHeaderPrimaryKey != null) { + initializeBOImpl(); + if (!checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + validateReject(sHeaderPrimaryKey); + if (EnrgiseUtil.checkString(sTableName)) { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("update ").concat(String.valueOf(sTableName))).concat(String.valueOf(" set status_flag='"))).concat(String.valueOf("R"))).concat(String.valueOf("',modified_site_id = 100, user_id_modified = 100, modified_time_stamp = sysdate where id="))).concat(String.valueOf(sHeaderPrimaryKey)); + int i = oBean.executeUpsert(sQuery); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + } + return sHeaderPrimaryKey; + } + + public String revise(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + if (sHeaderPrimaryKey != null) { + initializeBOImpl(); + if (!checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + validateRevise(sHeaderPrimaryKey); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("update ").concat(String.valueOf(sTableName))).concat(String.valueOf(" sTablename set sTablename.status_flag = '"))).concat(String.valueOf("V"))).concat(String.valueOf("', sTablename.rev_no=sTablename.rev_no+1,sTablename.modified_site_id = 200, sTablename.user_id_modified = 200, sTablename.modified_time_stamp = sysdate where sTablename.code in (select code from "))).concat(String.valueOf(sTableName))).concat(String.valueOf(" where id="))).concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf(")")); + int i = oBean.executeUpsert(sQuery); + } else { + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + } + return sHeaderPrimaryKey; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/business/SecurityBO.java b/hrmsEjb/wenrgise/ejb/common/business/SecurityBO.java new file mode 100644 index 0000000..5cd49a0 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/business/SecurityBO.java @@ -0,0 +1,365 @@ +package wenrgise.ejb.common.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.AccessBean; +import wenrgise.common.bean.DynamicMenuBean; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.bean.MenuBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; + +public class SecurityBO { + public HashMap getDisabledFields(String sScreenName, String sHdrDtlFlag, String sScreenMode, String sPageStatus) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + HashMap oMap = new HashMap(); + if (sHdrDtlFlag.equalsIgnoreCase("Header")) { + oParameters.add(new DBObject(1, 1, 12, sScreenName)); + oParameters.add(new DBObject(2, 1, 12, sHdrDtlFlag)); + oParameters.add(new DBObject(3, 1, 12, sScreenMode)); + oParameters.add(new DBObject(4, 1, 12, sPageStatus)); + oParameters.add(new DBObject(5, 1, 12, "D")); + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "commonprocedures.proc_getfielddisableinfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + ArrayList arylstFields = new ArrayList(); + while (oIt.hasNext()) { + oRow = oIt.next(); + arylstFields.add(oRow.get("disabled_field").getString()); + } + oMap.put("D", arylstFields); + } + } else if (sHdrDtlFlag.equalsIgnoreCase("Detail")) { + oParameters.add(new DBObject(1, 1, 12, sScreenName)); + oParameters.add(new DBObject(2, 1, 12, sHdrDtlFlag)); + oParameters.add(new DBObject(3, 1, 12, sScreenMode)); + oParameters.add(new DBObject(4, 1, 12, sPageStatus)); + oParameters.add(new DBObject(5, 1, 12, "D")); + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "commonprocedures.proc_getfielddisableinfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + ArrayList disableList = new ArrayList(); + while (oIt.hasNext()) { + oRow = oIt.next(); + disableList.add(oRow.get("disabled_field").getString()); + } + oMap.put("D", disableList); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sScreenName)); + oParameters.add(new DBObject(2, 1, 12, sHdrDtlFlag)); + oParameters.add(new DBObject(3, 1, 12, sScreenMode)); + oParameters.add(new DBObject(4, 1, 12, sPageStatus)); + oParameters.add(new DBObject(5, 1, 12, "E")); + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + oOutArray = oBean.callProc(oParameters, "commonprocedures.proc_getfielddisableinfo(?,?,?,?,?,?,?,?,?)"); + oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + ArrayList enableList = new ArrayList(); + while (oIt.hasNext()) { + oRow = oIt.next(); + enableList.add(oRow.get("disabled_field").getString()); + } + oMap.put("E", enableList); + } + } else if (sHdrDtlFlag.equalsIgnoreCase("all")) { + oParameters.add(new DBObject(1, 1, 12, sScreenName)); + oParameters.add(new DBObject(2, 1, 12, sHdrDtlFlag)); + oParameters.add(new DBObject(3, 1, 12, sScreenMode)); + oParameters.add(new DBObject(4, 1, 12, sPageStatus)); + oParameters.add(new DBObject(5, 1, 12, "D")); + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "commonprocedures.proc_getfielddisableinfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + ArrayList arylstFields = new ArrayList(); + while (oIt.hasNext()) { + oRow = oIt.next(); + arylstFields.add(oRow.get("disabled_field").getString()); + } + oMap.put("D", arylstFields); + } + } + return oMap; + } + + private String getGroupIdForUser(String sUserId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + ArrayList oList = null; + String sGroupId = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + boolean returnFlag = true; + boolean tempFlag = true; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sUserId)); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "DYNAMIC_MENU.PROC_GetGroupId(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + sGroupId = (String)oOutObject.getObject(); + return sGroupId; + } + + public ArrayList addMenuList(EmpInfoBean oEmpInfoBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList menuList = new ArrayList(); + ArrayList finalList = new ArrayList(); + MenuBean oMenuBean = new MenuBean(); + oEmpInfoBean = getGroupId(oEmpInfoBean); + oMenuBean = getComponentIds(oEmpInfoBean, menuList); + Iterator oIt = menuList.iterator(); + while (oIt.hasNext()) { + DynamicMenuBean dynamicMenuBean = oIt.next(); + finalList.add(new DynamicMenuBean(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("MyMenu.makeMenu('").concat(String.valueOf(dynamicMenuBean.getCompId()))).concat(String.valueOf("','"))).concat(String.valueOf(dynamicMenuBean.getModuleId()))).concat(String.valueOf("','"))).concat(String.valueOf(dynamicMenuBean.getCompDesc()))).concat(String.valueOf("','"))).concat(String.valueOf(dynamicMenuBean.getActionName()))).concat(String.valueOf("?screenName="))).concat(String.valueOf(dynamicMenuBean.getScreenName()))).concat(String.valueOf("')")))); + } + if (oMenuBean.getModuleId() == null) + return null; + DynamicMenuBean oBean = new DynamicMenuBean(); + do { + oMenuBean = getModuleIds(oMenuBean, oBean, menuList); + Iterator oIt1 = menuList.iterator(); + while (oIt1.hasNext()) { + oBean = oIt1.next(); + if (oBean.getModuleId() == oEmpInfoBean.getModuleId()) + continue; + finalList.add(new DynamicMenuBean(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("MyMenu.makeMenu('").concat(String.valueOf(oBean.getModuleId()))).concat(String.valueOf("','"))).concat(String.valueOf(oBean.getParentModuleId()))).concat(String.valueOf("','"))).concat(String.valueOf(oBean.getModuleDesc()))).concat(String.valueOf("')")))); + } + } while (oMenuBean != null); + return finalList; + } + + public EmpInfoBean getGroupId(EmpInfoBean oEmpInfoBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oEmpInfoBean.getEmpId())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "DYNAMIC_MENU.PROC_GetGroupId(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + int count = 0; + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + StringBuffer concatList = new StringBuffer(); + int c = 0; + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + oEmpInfoBean.setGrpId(oRow.get("GROUP_ID").getString()); + if (c == 0) { + concatList = concatList.append(oEmpInfoBean.getGrpId()); + c++; + continue; + } + concatList = concatList.append(String.valueOf(",").concat(String.valueOf(oEmpInfoBean.getGrpId()))); + } + String sGrpIds = null; + if (c != 0) + sGrpIds = concatList.toString(); + oEmpInfoBean.setGrpId(sGrpIds); + return oEmpInfoBean; + } + + public MenuBean getModuleIds(MenuBean oBean, DynamicMenuBean oMenuBean, ArrayList oMenuList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oDBBean = new DBUtilitiesBean(); + oMenuList.clear(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oBean.getModuleId())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oDBBean.callProc(oParameters, "DYNAMIC_MENU.PROC_ModuleInfo(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + return null; + int count = 0; + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + StringBuffer concatList = new StringBuffer(); + int c = 0; + while (oIt.hasNext()) { + oMenuBean = new DynamicMenuBean(); + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + oMenuBean.setModuleId(oRow.get("module_id").getString()); + oMenuBean.setParentModuleId(oRow.get("parent_module_id").getString()); + oMenuBean.setModuleCode(oRow.get("module_code").getString()); + oMenuBean.setModuleDesc(oRow.get("module_description").getString()); + oMenuBean.setHierchyLevel(oRow.get("hierarchy_lvl").getString()); + oMenuList.add(oMenuBean); + if (c == 0) { + concatList = concatList.append(oMenuBean.getModuleId()); + c++; + continue; + } + concatList = concatList.append(String.valueOf(",").concat(String.valueOf(oMenuBean.getModuleId()))); + } + String sModuleId = null; + if (c != 0) + sModuleId = concatList.toString(); + oBean.setModuleId(sModuleId); + return oBean; + } + + public MenuBean getComponentIds(EmpInfoBean oEmpInfoBean, ArrayList oMenuList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oEmpInfoBean.getEmpId())); + oParameters.add(new DBObject(2, 1, 12, oEmpInfoBean.getGrpId())); + oParameters.add(new DBObject(3, 1, 12, oEmpInfoBean.getModuleId())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "DYNAMIC_MENU.PROC_GetCompInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + int count = 0; + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + StringBuffer concatList = new StringBuffer(); + int c = 0; + while (oIt.hasNext()) { + DynamicMenuBean oMenuBean = new DynamicMenuBean(); + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + oMenuBean.setCompId(oRow.get("component_id").getString()); + oMenuBean.setCompCode(oRow.get("component_code").getString()); + oMenuBean.setCompDesc(oRow.get("description").getString()); + oMenuBean.setActionName(oRow.get("action_name").getString()); + oMenuBean.setScreenName(oRow.get("screen_name").getString()); + oMenuBean.setModuleId(oRow.get("module_id").getString()); + oMenuList.add(oMenuBean); + if (c == 0) { + concatList = concatList.append(oMenuBean.getCompId()); + c++; + continue; + } + concatList = concatList.append(String.valueOf(",").concat(String.valueOf(oMenuBean.getCompId()))); + } + String sCompId = null; + if (c != 0) + sCompId = concatList.toString(); + MenuBean oBean1 = new MenuBean(); + oBean1.setModuleId(sCompId); + return oBean1; + } + + public HashMap getAccessInfo(EmpInfoBean oEmpInfoBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HashMap mapInfo = new HashMap(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oEmpInfoBean.getEmpId())); + oParameters.add(new DBObject(2, 1, 12, "null")); + oParameters.add(new DBObject(3, 1, 12, oEmpInfoBean.getModuleId())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "DYNAMIC_MENU.PROC_GetCompInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + String sComponentName = oRow.get("Component_Code").getString(); + AccessBean oAccessBean = new AccessBean(); + oAccessBean.setApproveFlag(oRow.get("APPROVFLAG").getString()); + oAccessBean.setDeleteFlag(oRow.get("DELFLAG").getString()); + oAccessBean.setInsertFlag(oRow.get("INSERTFLAG").getString()); + oAccessBean.setQueryFlag(oRow.get("QRYFLAG").getString()); + oAccessBean.setUpdateFlag(oRow.get("UPDATEFLAG").getString()); + mapInfo.put(sComponentName.trim(), oAccessBean); + } + oEmpInfoBean = getGroupId(oEmpInfoBean); + HashMap oHshMap = getAccessInfoFromGroup(oEmpInfoBean, mapInfo); + return oHshMap; + } + + private HashMap getAccessInfoFromGroup(EmpInfoBean oEmpInfoBean, HashMap oMap) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, null)); + oParameters.add(new DBObject(2, 1, 12, oEmpInfoBean.getGrpId())); + oParameters.add(new DBObject(3, 1, 12, oEmpInfoBean.getModuleId())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "DYNAMIC_MENU.PROC_GetCompInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + String sComponentName = oRow.get("Component_Code").getString(); + AccessBean oAccessBean = new AccessBean(); + oAccessBean.setApproveFlag(oRow.get("APPROVFLAG").getString()); + oAccessBean.setDeleteFlag(oRow.get("DELFLAG").getString()); + oAccessBean.setInsertFlag(oRow.get("INSERTFLAG").getString()); + oAccessBean.setQueryFlag(oRow.get("QRYFLAG").getString()); + oAccessBean.setUpdateFlag(oRow.get("UPDATEFLAG").getString()); + oMap.put(sComponentName.trim(), oAccessBean); + } + return oMap; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/facade/CommonFacade.java b/hrmsEjb/wenrgise/ejb/common/facade/CommonFacade.java new file mode 100644 index 0000000..1c3dda9 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/facade/CommonFacade.java @@ -0,0 +1,5 @@ +package wenrgise.ejb.common.facade; + +import javax.ejb.EJBObject; + +public interface CommonFacade extends EJBObject {} diff --git a/hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeBean.java b/hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeBean.java new file mode 100644 index 0000000..8aa901a --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeBean.java @@ -0,0 +1,16 @@ +package wenrgise.ejb.common.facade; + +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; + +public class CommonFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} +} diff --git a/hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeHome.java b/hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeHome.java new file mode 100644 index 0000000..9bf30e0 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/facade/CommonFacadeHome.java @@ -0,0 +1,9 @@ +package wenrgise.ejb.common.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface CommonFacadeHome extends EJBHome { + CommonFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacade.java b/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacade.java new file mode 100644 index 0000000..5c186c4 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacade.java @@ -0,0 +1,17 @@ +package wenrgise.ejb.common.facade; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.EJBObject; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; + +public interface SecurityFacade extends EJBObject { + HashMap getDisabledFields(String paramString1, String paramString2, String paramString3, String paramString4) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + ArrayList addMenuList(EmpInfoBean paramEmpInfoBean) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + HashMap getAccessInfo(EmpInfoBean paramEmpInfoBean) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; +} diff --git a/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeBean.java b/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeBean.java new file mode 100644 index 0000000..2125e4c --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeBean.java @@ -0,0 +1,41 @@ +package wenrgise.ejb.common.facade; + +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.business.SecurityBO; + +public class SecurityFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public HashMap getDisabledFields(String sScreenName, String sHdrDtlFlag, String sSreenMode, String sPageStatus) throws EnrgiseSystemException, EnrgiseApplicationException { + SecurityBO oSectBO = new SecurityBO(); + return oSectBO.getDisabledFields(sScreenName, sHdrDtlFlag, sSreenMode, sPageStatus); + } + + public ArrayList addMenuList(EmpInfoBean oEmpInfoBean) throws EnrgiseSystemException, EnrgiseApplicationException { + SecurityBO oSectBO = new SecurityBO(); + return oSectBO.addMenuList(oEmpInfoBean); + } + + public HashMap getAccessInfo(EmpInfoBean oEmpInfoBean) throws EnrgiseSystemException, EnrgiseApplicationException { + SecurityBO oSectBO = new SecurityBO(); + return oSectBO.getAccessInfo(oEmpInfoBean); + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeHome.java b/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeHome.java new file mode 100644 index 0000000..649c31a --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/facade/SecurityFacadeHome.java @@ -0,0 +1,9 @@ +package wenrgise.ejb.common.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface SecurityFacadeHome extends EJBHome { + SecurityFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/ejb/common/helper/DBObject.java b/hrmsEjb/wenrgise/ejb/common/helper/DBObject.java new file mode 100644 index 0000000..010d43d --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/helper/DBObject.java @@ -0,0 +1,37 @@ +package wenrgise.ejb.common.helper; + +import java.io.Serializable; + +public class DBObject extends InputDBObject implements Serializable { + private int iInputOutput; + + public static final int IN = 1; + + public static final int OUT = 2; + + public static final int INOUT = 3; + + public DBObject() {} + + public DBObject(int iPosition, int iDataType) { + this.iPosition = iPosition; + this.iDataType = iDataType; + } + + public DBObject(int iPosition, int iInputOutput, int iDataType) { + this.iPosition = iPosition; + this.iInputOutput = iInputOutput; + this.iDataType = iDataType; + } + + public DBObject(int iPosition, int iInputOutput, int iDataType, Object oValue) { + this.iPosition = iPosition; + this.iInputOutput = iInputOutput; + this.iDataType = iDataType; + this.oValue = oValue; + } + + public int getDirection() { + return this.iInputOutput; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/helper/InputDBObject.java b/hrmsEjb/wenrgise/ejb/common/helper/InputDBObject.java new file mode 100644 index 0000000..da9f197 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/helper/InputDBObject.java @@ -0,0 +1,43 @@ +package wenrgise.ejb.common.helper; + +import java.io.Serializable; + +public class InputDBObject implements Serializable { + protected int iPosition; + + protected int iDataType; + + protected Object oValue; + + public InputDBObject() {} + + public InputDBObject(int iPosition, int iDataType, Object oValue) { + this.iPosition = iPosition; + this.iDataType = iDataType; + this.oValue = oValue; + } + + public int getDataType() { + return this.iDataType; + } + + public void setDataType(int newIDataType) { + this.iDataType = newIDataType; + } + + public int getPosition() { + return this.iPosition; + } + + public void setPosition(int newIPosition) { + this.iPosition = newIPosition; + } + + public Object getObject() { + return this.oValue; + } + + public void setObject(Object newOValue) { + this.oValue = newOValue; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/helper/ParameterTypes.java b/hrmsEjb/wenrgise/ejb/common/helper/ParameterTypes.java new file mode 100644 index 0000000..7a7f394 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/helper/ParameterTypes.java @@ -0,0 +1,7 @@ +package wenrgise.ejb.common.helper; + +import oracle.jdbc.driver.OracleTypes; + +public class ParameterTypes extends OracleTypes { + int i = 3; +} diff --git a/hrmsEjb/wenrgise/ejb/common/helper/QueryRow.java b/hrmsEjb/wenrgise/ejb/common/helper/QueryRow.java new file mode 100644 index 0000000..70d707c --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/helper/QueryRow.java @@ -0,0 +1,26 @@ +package wenrgise.ejb.common.helper; + +import java.io.Serializable; +import java.util.HashMap; + +public class QueryRow implements Serializable { + private HashMap row = null; + + public QueryRow(int iCapacity) { + this.row = new HashMap(iCapacity); + } + + public HashMap getRow() { + return this.row; + } + + public void setRow(HashMap newRow) { + this.row = newRow; + } + + public QueryValue get(String sColumnName) { + if (this.row != null) + return (QueryValue)this.row.get(sColumnName.toUpperCase()); + return null; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/helper/QueryValue.java b/hrmsEjb/wenrgise/ejb/common/helper/QueryValue.java new file mode 100644 index 0000000..93939b2 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/helper/QueryValue.java @@ -0,0 +1,166 @@ +package wenrgise.ejb.common.helper; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Blob; +import java.sql.Clob; +import java.sql.Date; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.Date; + +public class QueryValue implements Serializable { + private String stringValue = null; + + private BigDecimal bigDecimalValue = BigDecimal.valueOf(0L); + + private short shortValue = 0; + + private int intValue = 0; + + private long longValue = 0L; + + private float floatValue = 0.0F; + + private double doubleValue = 0.0D; + + private Date dateValue = null; + + private Blob blobValue = null; + + private Clob clobValue = null; + + public void setString(String value) { + this.stringValue = value; + } + + public String getString() { + return this.stringValue; + } + + public void setBigDecimal(BigDecimal value) { + this.bigDecimalValue = value; + this.stringValue = (null != value) ? value.toString() : null; + } + + public BigDecimal getBigDecimal() { + return this.bigDecimalValue; + } + + public void setShort(short value) { + this.shortValue = value; + Short shrt = new Short(value); + this.stringValue = (null != shrt) ? shrt.toString() : null; + } + + public short getShort() { + return this.shortValue; + } + + public void setInt(int value) { + this.intValue = value; + Integer iValue = new Integer(value); + this.stringValue = (null != iValue) ? iValue.toString() : null; + } + + public int getInt() { + return this.intValue; + } + + public void setLong(long value) { + this.longValue = value; + Long lValue = new Long(value); + this.stringValue = (null != lValue) ? lValue.toString() : null; + } + + public long getLong() { + return this.longValue; + } + + public void setFloat(float value) { + this.floatValue = value; + Float fValue = new Float(value); + this.stringValue = (null != fValue) ? fValue.toString() : null; + } + + public float getFloat() { + return this.floatValue; + } + + public void setDouble(double value) { + this.doubleValue = value; + Double dValue = new Double(value); + this.stringValue = (null != dValue) ? dValue.toString() : null; + } + + public double getDouble() { + return this.doubleValue; + } + + public void setDate(Date value) { + this.dateValue = value; + this.stringValue = (null != value) ? value.toString() : null; + } + + public void setDate(Date value) { + if (null == value) { + this.stringValue = null; + this.dateValue = null; + return; + } + this.dateValue = new Date(value.getTime()); + this.stringValue = this.dateValue.toString(); + } + + public Date getDate() { + return this.dateValue; + } + + public void setTime(Date value) { + setDate(value); + } + + public void setTime(Time value) { + if (null == value) { + this.stringValue = null; + this.dateValue = null; + return; + } + this.dateValue = new Date(value.getTime()); + this.stringValue = this.dateValue.toString(); + } + + public Date getTime() { + return this.dateValue; + } + + public void setTimestamp(Timestamp value) { + if (null == value) { + this.stringValue = null; + this.dateValue = null; + return; + } + this.dateValue = new Date(value.getTime() + (value.getNanos() / 1000000)); + this.stringValue = this.dateValue.toString(); + } + + public Date getTimestamp() { + return this.dateValue; + } + + public void setBlob(Blob value) { + this.blobValue = value; + } + + public Blob getBlob() { + return this.blobValue; + } + + public void setClob(Clob value) { + this.clobValue = value; + } + + public Clob getClob() { + return this.clobValue; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/helper/ScreenWrapper.java b/hrmsEjb/wenrgise/ejb/common/helper/ScreenWrapper.java new file mode 100644 index 0000000..0620b8f --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/helper/ScreenWrapper.java @@ -0,0 +1,51 @@ +package wenrgise.ejb.common.helper; + +import java.util.HashMap; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; + +public class ScreenWrapper { + private BaseHeaderVO oBaseHeaderVO = null; + + private BaseQueryVO oBaseQueryVO = null; + + private HashMap oScreenMap = null; + + private String forwardedPage = null; + + public ScreenWrapper() { + this.oScreenMap = new HashMap(); + } + + public BaseHeaderVO getOBaseHeaderVO() { + return this.oBaseHeaderVO; + } + + public void setOBaseHeaderVO(BaseHeaderVO newOBaseHeaderVO) { + this.oBaseHeaderVO = newOBaseHeaderVO; + } + + public BaseQueryVO getOBaseQueryVO() { + return this.oBaseQueryVO; + } + + public void setOBaseQueryVO(BaseQueryVO newOBaseQueryVO) { + this.oBaseQueryVO = newOBaseQueryVO; + } + + public HashMap getOScreenMap() { + return this.oScreenMap; + } + + public void setOScreenMap(HashMap newOScreenMap) { + this.oScreenMap = newOScreenMap; + } + + public String getForwardedPage() { + return this.forwardedPage; + } + + public void setForwardedPage(String newForwardedPage) { + this.forwardedPage = newForwardedPage; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/helper/SysadminSql.java b/hrmsEjb/wenrgise/ejb/common/helper/SysadminSql.java new file mode 100644 index 0000000..88646e4 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/helper/SysadminSql.java @@ -0,0 +1,17 @@ +package wenrgise.ejb.common.helper; + +public class SysadminSql { + public static final String GetDate = "SELECT sysdate FROM dual"; + + public static final String GlobalCodeHeader = "SELECT * FROM aaa_myself"; + + public static final String GlobalCodeHeaderCount = "SELECT count(*) as counter FROM aaa_myself"; + + public static final String GlobalCodeHeaderName = "SELECT * FROM aaa_myself WHERE name = ?"; + + public static final String GlobalCodeHeaderNameCount = "SELECT count(*) as counter FROM aaa_myself WHERE name = ?"; + + public static final String GlobalCodeHeaderSex = "SELECT * FROM aaa_myself WHERE sex = ?"; + + public static final String GlobalCodeHeaderNameSex = "SELECT * FROM aaa_myself WHERE name = ? AND sex = ?"; +} diff --git a/hrmsEjb/wenrgise/ejb/common/session/UserSession.java b/hrmsEjb/wenrgise/ejb/common/session/UserSession.java new file mode 100644 index 0000000..92aa049 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/session/UserSession.java @@ -0,0 +1,59 @@ +package wenrgise.ejb.common.session; + +import java.rmi.RemoteException; +import java.text.DateFormat; +import java.util.HashMap; +import java.util.Locale; +import javax.ejb.EJBObject; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; + +public interface UserSession extends EJBObject { + void putBaseHeaderVO(String paramString, BaseHeaderVO paramBaseHeaderVO) throws RemoteException; + + void removeAllIfExists(String paramString1, String paramString2) throws RemoteException; + + void putBaseQueryVO(String paramString, BaseQueryVO paramBaseQueryVO) throws RemoteException; + + void putBaseDetailVO(String paramString1, String paramString2, BaseDetailVO paramBaseDetailVO) throws RemoteException; + + BaseHeaderVO getBaseHeaderVO(String paramString) throws RemoteException; + + BaseQueryVO getBaseQueryVO(String paramString) throws RemoteException; + + BaseDetailVO getBaseDetailVO(String paramString1, String paramString2) throws RemoteException; + + UserInfo getUserInfo() throws RemoteException; + + void setUserInfo(UserInfo paramUserInfo) throws RemoteException; + + Locale getUserLocale() throws RemoteException; + + void setUserLocale(Locale paramLocale) throws RemoteException; + + Locale getDefaultLocale() throws RemoteException; + + DateFormat getUserDateFormat() throws RemoteException; + + DateFormat getDefaultDateFormat() throws RemoteException; + + HashMap getModuleFacade() throws RemoteException; + + void removeAllDetailVO(String paramString) throws RemoteException; + + void setModuleFacade(HashMap paramHashMap) throws RemoteException; + + void setModuleName(String paramString) throws RemoteException; + + EJBObject getModuleEJBObject() throws RemoteException; + + void setForwardedPage(String paramString1, String paramString2) throws RemoteException; + + String getForwardedPage(String paramString) throws RemoteException; + + HashMap getAccessInfo() throws RemoteException; + + void setAccessInfo(HashMap paramHashMap) throws RemoteException; +} diff --git a/hrmsEjb/wenrgise/ejb/common/session/UserSessionBean.java b/hrmsEjb/wenrgise/ejb/common/session/UserSessionBean.java new file mode 100644 index 0000000..20fd0bd --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/session/UserSessionBean.java @@ -0,0 +1,182 @@ +package wenrgise.ejb.common.session; + +import java.text.DateFormat; +import java.util.Collection; +import java.util.HashMap; +import java.util.Locale; +import javax.ejb.EJBObject; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.ejb.common.helper.ScreenWrapper; + +public class UserSessionBean implements SessionBean { + private SessionContext context; + + private UserInfo userInfo; + + private HashMap oFormMap = new HashMap(); + + private Locale oUserLocale; + + private Locale oDefaultLocale = Locale.getDefault(); + + private HashMap moduleFacade = new HashMap(); + + private String moduleName = null; + + private HashMap securityMap = new HashMap(); + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.context = ctx; + } + + public HashMap getAccessInfo() { + return this.securityMap; + } + + public void setAccessInfo(HashMap oMap) { + this.securityMap = oMap; + } + + public void removeAllIfExists(String sFormName, String sScreenName) { + ScreenWrapper oScreenMap = (ScreenWrapper)this.oFormMap.get(sFormName); + if (oScreenMap == null) + return; + this.oFormMap.remove(sFormName); + } + + private ScreenWrapper getScreenWrapper(String sFormName) { + ScreenWrapper oScreenWrapper = (ScreenWrapper)this.oFormMap.get(sFormName); + if (oScreenWrapper == null) { + oScreenWrapper = new ScreenWrapper(); + this.oFormMap.put(sFormName, oScreenWrapper); + } + return oScreenWrapper; + } + + public void setForwardedPage(String sFormName, String sForwardedPage) { + ScreenWrapper screenWrapper = getScreenWrapper(sFormName); + if (null != screenWrapper) + screenWrapper.setForwardedPage(sForwardedPage); + } + + public String getForwardedPage(String sFormName) { + ScreenWrapper screenWrapper = getScreenWrapper(sFormName); + if (null != screenWrapper) + return screenWrapper.getForwardedPage(); + return null; + } + + private HashMap getScreenMap(String sFormName) { + ScreenWrapper oScreenWrapper = getScreenWrapper(sFormName); + HashMap oScreenMap = oScreenWrapper.getOScreenMap(); + if (oScreenMap == null) { + oScreenMap = new HashMap(); + oScreenWrapper.setOScreenMap(oScreenMap); + } + return oScreenMap; + } + + public void putBaseHeaderVO(String sFormName, BaseHeaderVO oBaseHeaderVO) { + getScreenWrapper(sFormName).setOBaseHeaderVO(oBaseHeaderVO); + } + + public void putBaseQueryVO(String sFormName, BaseQueryVO oBaseQueryVO) { + getScreenWrapper(sFormName).setOBaseQueryVO(oBaseQueryVO); + } + + public void putBaseDetailVO(String sFormName, String sScreenName, BaseDetailVO oBaseDetailVO) { + getScreenMap(sFormName).put(sScreenName, oBaseDetailVO); + } + + public BaseHeaderVO getBaseHeaderVO(String sFormName) { + ScreenWrapper oScreenWrapper = (ScreenWrapper)this.oFormMap.get(sFormName); + if (oScreenWrapper == null) + return null; + return oScreenWrapper.getOBaseHeaderVO(); + } + + public BaseQueryVO getBaseQueryVO(String sFormName) { + ScreenWrapper oScreenWrapper = (ScreenWrapper)this.oFormMap.get(sFormName); + if (oScreenWrapper == null) + return null; + return oScreenWrapper.getOBaseQueryVO(); + } + + public BaseDetailVO getBaseDetailVO(String sFormName, String sScreenName) { + ScreenWrapper oScreenWrapper = (ScreenWrapper)this.oFormMap.get(sFormName); + if (oScreenWrapper == null) + return null; + return (BaseDetailVO)oScreenWrapper.getOScreenMap().get(sScreenName); + } + + public UserInfo getUserInfo() { + return this.userInfo; + } + + public void setUserInfo(UserInfo newUserInfo) { + this.userInfo = newUserInfo; + } + + public Locale getUserLocale() { + return this.oUserLocale; + } + + public void setUserLocale(Locale oUserLocale) { + if (oUserLocale == null) + oUserLocale = this.oDefaultLocale; + } + + public Locale getDefaultLocale() { + return this.oDefaultLocale; + } + + public DateFormat getUserDateFormat() { + if (this.oUserLocale != null) + return DateFormat.getDateInstance(2, this.oUserLocale); + return DateFormat.getDateInstance(); + } + + public DateFormat getDefaultDateFormat() { + if (this.oDefaultLocale != null) + return DateFormat.getDateInstance(2, this.oDefaultLocale); + return DateFormat.getDateInstance(); + } + + public HashMap getModuleFacade() { + return this.moduleFacade; + } + + public void setModuleFacade(HashMap newModuleFacade) { + this.moduleFacade = newModuleFacade; + } + + public void removeAllDetailVO(String sFormName) { + ScreenWrapper oScreenWrapper = (ScreenWrapper)this.oFormMap.get(sFormName); + HashMap oMap = oScreenWrapper.getOScreenMap(); + Collection oCollection = oMap.values(); + oCollection.clear(); + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public EJBObject getModuleEJBObject() { + if (null != this.moduleFacade) + return (EJBObject)this.moduleFacade.get(this.moduleName); + return null; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/session/UserSessionHome.java b/hrmsEjb/wenrgise/ejb/common/session/UserSessionHome.java new file mode 100644 index 0000000..6c270f4 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/session/UserSessionHome.java @@ -0,0 +1,9 @@ +package wenrgise.ejb.common.session; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface UserSessionHome extends EJBHome { + UserSession create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/CommonAdditionalUtility.java b/hrmsEjb/wenrgise/ejb/common/utility/CommonAdditionalUtility.java new file mode 100644 index 0000000..fcb65b5 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/CommonAdditionalUtility.java @@ -0,0 +1,144 @@ +package wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.QueryRow; + +public class CommonAdditionalUtility { + public String getUserGroup(String empId) throws EnrgiseApplicationException, EnrgiseSystemException { + String groupId = new String(); + String sQuery = String.valueOf(" select group_id from sys_user_group_map m where m.user_system_id = ").concat(String.valueOf(empId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + groupId = oRow.get("group_id").getString(); + } + } + return groupId; + } + + public String getHOD(String empId) throws EnrgiseApplicationException, EnrgiseSystemException { + String hodId = new String(); + String sQuery = String.valueOf(String.valueOf(" select m.contact_person_id from gen_wrkgrp_mst m where m.id = (select dtl.wkgp_mst_id from hrm_emp_wrkgrp_dtl dtl where dtl.e_per_dtl_id =").concat(String.valueOf(empId))).concat(String.valueOf(")")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + hodId = oRow.get("CONTACT_PERSON_ID").getString(); + } + } + return hodId; + } + + public boolean checkValidEmail(String email) throws EnrgiseApplicationException, EnrgiseSystemException { + int atCount = 0; + int dotCount = 0; + boolean flag = true; + int i; + for (i = 0; i < email.length(); i++) { + if (email.charAt(i) == '@') + atCount++; + if (email.charAt(i) == '.') + dotCount++; + } + if (atCount == 1 && dotCount > 0 && email.indexOf("@") != 0 && email.charAt(email.length() - 1) != '.' && email.charAt(email.length() - 1) != '@') { + dotCount = 0; + for (i = email.indexOf("@"); i < email.length(); i++) { + if (email.charAt(i) == '.') + dotCount++; + if (email.indexOf("@") - email.indexOf(".") == -1 || email.lastIndexOf(".") - email.indexOf(".") == 1) { + flag = false; + break; + } + } + } else { + flag = false; + } + if (dotCount == 0 || dotCount > 2) + flag = false; + return flag; + } + + public boolean checkValidPan(String panNo) throws EnrgiseApplicationException, EnrgiseSystemException { + boolean flag = true; + panNo = panNo.toUpperCase(); + if (panNo.length() != 10) { + flag = false; + } else { + String first = panNo.substring(0, 5); + String second = panNo.substring(5, 9); + int i; + for (i = 0; i < first.length(); i++) { + if (first.charAt(i) < 'A' || first.charAt(i) > 'Z') { + flag = false; + break; + } + } + for (i = 0; i < second.length(); i++) { + if (second.charAt(i) < '0' || second.charAt(i) > '9') { + flag = false; + break; + } + } + if (panNo.charAt(9) < 'A' || panNo.charAt(9) > 'Z') + flag = false; + } + return flag; + } + + public ArrayList getDelegatedEmp_Level(String empId, String HdrPrKey, String docTypeId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList outArray = new ArrayList(); + String sQuery = "select wt.level_no, wt.delegated_emp_id "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" from workflow_tasklist wt,workflow_dtl wd,wfl_doc_type_mst wm ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where status='P' ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and delegator_emp_id = "))).concat(String.valueOf(empId)); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and doc_dtl_id = "))).concat(String.valueOf(HdrPrKey)); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wt.workflow_dtl_id=wd.id ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wd.doc_type_mst_id=wm.id ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and wm.id = "))).concat(String.valueOf(docTypeId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + outArray.add(oRow.get("level_no").getString()); + outArray.add(oRow.get("delegated_emp_id").getString()); + } + } + return outArray; + } + + public ArrayList getEmp_Level(String HdrPrKey, String docTypeId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList outArray = new ArrayList(); + String sQuery = "select wt.level_no, wt.delegated_emp_id "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" from workflow_tasklist wt,workflow_dtl wd,wfl_doc_type_mst wm ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where status='P' ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and doc_dtl_id = "))).concat(String.valueOf(HdrPrKey)); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wt.workflow_dtl_id=wd.id ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wd.doc_type_mst_id=wm.id ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and wm.id = "))).concat(String.valueOf(docTypeId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + outArray.add(oRow.get("level_no").getString()); + outArray.add(oRow.get("delegated_emp_id").getString()); + } + } + return outArray; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/DBUtilitiesBean.java b/hrmsEjb/wenrgise/ejb/common/utility/DBUtilitiesBean.java new file mode 100644 index 0000000..3ec3ded --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/DBUtilitiesBean.java @@ -0,0 +1,611 @@ +package wenrgise.ejb.common.utility; + +import java.sql.BatchUpdateException; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import javax.naming.InitialContext; +import javax.sql.DataSource; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.InputDBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; + +public class DBUtilitiesBean { + private String sDbName = "jdbc/conDS"; + + private ArrayList oOutParameters = null; + + private Connection oCon; + + private ResultSet oRs; + + private Connection oConn = null; + + private DataSource oDataSource = null; + + private PreparedStatement oDynamicBatchCall = null; + + private CallableStatement oBatchCall = null; + + private Connection oBatchCon = null; + + private Connection oPreParameterCon = null; + + private PreparedStatement oPreParameter = null; + + private Connection oPreUpsertCon = null; + + private PreparedStatement oPreUpsert = null; + + private boolean bDynamic = false; + + public DBUtilitiesBean() {} + + public DBUtilitiesBean(boolean bDynamic) { + this.bDynamic = bDynamic; + } + + public void createBatch(String sProcName) throws EnrgiseSystemException { + InitialContext oInitCont = null; + String sParam = String.valueOf(String.valueOf("{ call ").concat(String.valueOf(sProcName))).concat(String.valueOf("}")); + boolean bCreateCoonectionError = false; + try { + Object dataSourceObj = ServiceLocator.getLocator().getLocalService(this.sDbName); + this.oDataSource = (DataSource)dataSourceObj; + this.oBatchCon = this.oDataSource.getConnection(); + bCreateCoonectionError = true; + if (!this.bDynamic) { + if (this.oBatchCall != null) { + this.oBatchCall.close(); + this.oBatchCall = null; + } + this.oBatchCall = this.oBatchCon.prepareCall(sParam); + bCreateCoonectionError = false; + } else { + if (this.oDynamicBatchCall != null) { + this.oDynamicBatchCall.close(); + this.oDynamicBatchCall = null; + } + this.oDynamicBatchCall = this.oBatchCon.prepareStatement(sParam); + bCreateCoonectionError = false; + } + } catch (SQLException oExc) { + System.out.println(oExc.getMessage()); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oBatchCon != null && bCreateCoonectionError) { + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + this.oBatchCon = null; + } + } catch (SQLException sQLException) {} + } + } + + public void addToBatch(ArrayList oParameters) throws EnrgiseSystemException { + if (!this.bDynamic) { + addToProcBatch(oParameters); + } else { + addToDynamicBatch(oParameters); + } + } + + private void addToDynamicBatch(ArrayList oParameters) throws EnrgiseSystemException { + try { + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + InputDBObject oObject = oIter.next(); + inspectExecuteParameter(oObject, this.oDynamicBatchCall); + } + this.oBatchCall.addBatch(); + } catch (SQLException oSqlEx) { + System.out.println(oSqlEx.getMessage()); + throw new EnrgiseSystemException(oSqlEx); + } finally { + try { + if (this.oBatchCon != null) { + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + this.oBatchCon = null; + } + } catch (SQLException sQLException) {} + } + } + + private void addToProcBatch(ArrayList oParameters) throws EnrgiseSystemException { + try { + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + DBObject oObject = oIter.next(); + inspectParameter(oObject, this.oBatchCall); + } + this.oBatchCall.addBatch(); + } catch (SQLException oSqlEx) { + oSqlEx.printStackTrace(); + System.out.println(oSqlEx.getMessage()); + try { + if (this.oBatchCon != null) + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + this.oBatchCon = null; + } catch (SQLException sQLException) {} + throw new EnrgiseSystemException(oSqlEx); + } + } + + public void executeBatch() throws EnrgiseSystemException { + try { + if (!this.bDynamic) { + this.oBatchCall.executeBatch(); + } else { + this.oDynamicBatchCall.executeBatch(); + } + } catch (BatchUpdateException oBatchEx) { + System.out.println("Batch Update Failed"); + System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("Casue ").concat(String.valueOf(oBatchEx.getCause()))).concat(String.valueOf(" Message "))).concat(String.valueOf(oBatchEx.getMessage()))).concat(String.valueOf(" SQL State "))).concat(String.valueOf(oBatchEx.getSQLState()))).concat(String.valueOf(" Update Count "))).concat(String.valueOf(oBatchEx.getUpdateCounts()))).concat(String.valueOf(" SQL Trace "))).concat(String.valueOf(oBatchEx.getStackTrace()))); + throw new EnrgiseSystemException(oBatchEx); + } catch (SQLException oSqlEx) { + System.out.println(String.valueOf("dbutilities").concat(String.valueOf(oSqlEx.getMessage()))); + oSqlEx.printStackTrace(); + throw new EnrgiseSystemException(oSqlEx); + } finally { + try { + if (this.oBatchCon != null) + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + } catch (SQLException sQLException) {} + } + } + + public int executeUpsert(ArrayList oParameters, String sQuery) throws EnrgiseSystemException { + int iCount = 0; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (this.oPreUpsert != null) + this.oPreUpsert.close(); + if (this.oPreUpsertCon != null) { + this.oPreUpsertCon.close(); + this.oPreUpsertCon = null; + } + this.oPreUpsertCon = this.oDataSource.getConnection(); + this.oPreUpsert = this.oPreUpsertCon.prepareStatement(sQuery); + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + InputDBObject oObject = oIter.next(); + inspectExecuteParameter(oObject, this.oPreUpsert); + } + iCount = this.oPreUpsert.executeUpdate(); + while (true); + } catch (Exception oExc) { + System.out.println(oExc.getMessage()); + oExc.printStackTrace(); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oPreUpsertCon != null) { + if (!this.oPreUpsertCon.isClosed()) + this.oPreUpsertCon.close(); + this.oPreUpsertCon = null; + } + } catch (SQLException oSqlEx) { + System.out.println(oSqlEx.getMessage()); + throw new EnrgiseSystemException(oSqlEx); + } + return iCount; + } + } + + public ArrayList executeQuery(ArrayList oParameters, String sQuery) throws EnrgiseSystemException { + ResultSet oRs = null; + ArrayList oResult = null; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (oRs != null) { + oRs.close(); + oRs = null; + } + if (this.oPreParameter != null) + this.oPreParameter.close(); + if (this.oPreParameterCon != null) { + this.oPreParameterCon.close(); + this.oPreParameterCon = null; + } + this.oPreParameterCon = this.oDataSource.getConnection(); + this.oPreParameter = this.oPreParameterCon.prepareStatement(sQuery); + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + InputDBObject oObject = oIter.next(); + inspectExecuteParameter(oObject, this.oPreParameter); + } + oRs = this.oPreParameter.executeQuery(); + if (oRs == null) + throw new EnrgiseSystemException(); + oResult = convertToList(oRs); + while (true); + } catch (Exception oExc) { + System.out.println(oExc.getMessage()); + oExc.printStackTrace(); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oPreParameterCon != null) + if (this.oPreParameterCon.isClosed()) + this.oPreParameterCon.close(); + } catch (SQLException oSqlEx) { + System.out.println(oSqlEx.getMessage()); + throw new EnrgiseSystemException(oSqlEx); + } + return oResult; + } + } + + public ArrayList callProc(ArrayList oParameters, String sProcName) throws EnrgiseSystemException { + CallableStatement oCall = null; + if (this.oOutParameters == null) { + this.oOutParameters = new ArrayList(); + } else { + this.oOutParameters.clear(); + } + try { + Object datasourceObj = null; + datasourceObj = ServiceLocator.getLocator().getLocalService(this.sDbName); + this.oDataSource = (DataSource)datasourceObj; + Object conObj = this.oDataSource.getConnection(); + this.oCon = (Connection)conObj; + if (oCall != null) + oCall.close(); + String sParam = String.valueOf(String.valueOf("{ call ").concat(String.valueOf(sProcName))).concat(String.valueOf("}")); + Object callObj = this.oCon.prepareCall(sParam); + oCall = (CallableStatement)callObj; + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + DBObject oObject = oIter.next(); + inspectParameter(oObject, oCall); + } + oCall.execute(); + Iterator oOutIter = this.oOutParameters.iterator(); + while (oOutIter.hasNext()) + getOutParameters(oOutIter.next(), oCall); + if (this.oOutParameters.size() >= 3) { + DBObject oErrLog = this.oOutParameters.get(this.oOutParameters.size() - 3); + String sErrorLog = (String)oErrLog.getObject(); + DBObject oErrMessage = this.oOutParameters.get(this.oOutParameters.size() - 2); + String sErrorMessage = (String)oErrLog.getObject(); + DBObject oErr = this.oOutParameters.get(this.oOutParameters.size() - 1); + Integer oErrorCode = (Integer)oErr.getObject(); + if (null != oErrorCode && !oErrorCode.equals(new Integer(0))) { + System.out.println(String.valueOf("Error calling procedure ").concat(String.valueOf(sProcName))); + if (null != sErrorLog) + System.out.println(String.valueOf("Error Log ").concat(String.valueOf(sErrorLog))); + if (null != sErrorMessage) + System.out.println(String.valueOf("Error Message ").concat(String.valueOf(sErrorMessage))); + throw new EnrgiseSystemException(); + } + } + return this.oOutParameters; + } catch (Exception oExc) { + System.out.println(oExc.getMessage()); + oExc.printStackTrace(); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oCon != null) { + if (!this.oCon.isClosed()) + this.oCon.close(); + this.oCon = null; + } + } catch (Exception exception) {} + } + } + + public ArrayList executeQuery(String sQuery) throws EnrgiseSystemException { + PreparedStatement oPre = null; + ArrayList oResult = null; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (this.oRs != null) { + this.oRs.close(); + this.oRs = null; + } + if (oPre != null) + oPre.close(); + if (this.oConn != null) { + this.oConn.close(); + this.oConn = null; + } + this.oConn = this.oDataSource.getConnection(); + oPre = this.oConn.prepareStatement(sQuery); + this.oRs = oPre.executeQuery(); + oResult = convertToList(this.oRs); + while (true); + } catch (SQLException oExc) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("From DBUtility ").concat(String.valueOf(oExc.getClass().getName()))).concat(String.valueOf(" "))).concat(String.valueOf(oExc.getMessage()))); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oConn != null) + if (!this.oConn.isClosed()) + this.oConn.close(); + } catch (SQLException oSqEx) { + throw new EnrgiseSystemException(oSqEx); + } + return oResult; + } + } + + public int executeUpsert(String sQuery) throws EnrgiseSystemException { + PreparedStatement oPre = null; + Connection oPreCon = null; + int iCount = 0; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (oPre != null) + oPre.close(); + oPreCon = this.oDataSource.getConnection(); + oPre = oPreCon.prepareStatement(sQuery); + iCount = oPre.executeUpdate(); + while (true); + } catch (SQLException oExc) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("From DBUtility ").concat(String.valueOf(oExc.getClass().getName()))).concat(String.valueOf(" "))).concat(String.valueOf(oExc.getMessage()))); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (oPreCon != null) + if (!oPreCon.isClosed()) + oPreCon.close(); + } catch (SQLException oSqEx) { + throw new EnrgiseSystemException(oSqEx); + } + return iCount; + } + } + + private void inspectParameter(DBObject oDBObject, CallableStatement oCall) throws SQLException { + int iPosition = oDBObject.getPosition(); + int iDirection = oDBObject.getDirection(); + int iDataType = oDBObject.getDataType(); + if (iDirection == 1 || iDirection == 3) { + Object oObject = oDBObject.getObject(); + switch (iDataType) { + case 12: + if (oObject != null) { + oCall.setString(iPosition, oObject.toString()); + break; + } + oCall.setString(iPosition, (String)null); + break; + case 4: + if (oObject != null) { + oCall.setInt(iPosition, Integer.parseInt(oObject.toString())); + break; + } + oCall.setInt(iPosition, 0); + break; + case 8: + if (oObject != null) { + oCall.setDouble(iPosition, Double.parseDouble(oObject.toString())); + break; + } + oCall.setDouble(iPosition, 0.0D); + break; + case -5: + if (oObject != null) { + oCall.setLong(iPosition, ((Long)oObject).longValue()); + break; + } + oCall.setLong(iPosition, 0L); + break; + case 91: + if (oObject != null) { + oCall.setDate(iPosition, (Date)oObject); + break; + } + oCall.setDate(iPosition, (Date)null); + break; + case 93: + if (oObject != null) { + oCall.setTimestamp(iPosition, (Timestamp)oObject); + break; + } + oCall.setTimestamp(iPosition, (Timestamp)null); + break; + case 2000: + if (oObject != null) { + oCall.setObject(iPosition, oObject); + break; + } + oCall.setObject(iPosition, (Object)null); + break; + } + } + if (iDirection == 2 || iDirection == 3) { + oCall.registerOutParameter(iPosition, iDataType); + this.oOutParameters.add(new DBObject(iPosition, iDataType)); + } + } + + private void inspectExecuteParameter(InputDBObject oDBObject, PreparedStatement oCall) throws SQLException { + int iPosition = oDBObject.getPosition(); + int iDataType = oDBObject.getDataType(); + Object oObject = oDBObject.getObject(); + switch (iDataType) { + case 12: + if (oObject != null) { + oCall.setString(iPosition, oObject.toString()); + break; + } + oCall.setString(iPosition, (String)null); + break; + case 1: + if (oObject != null) { + oCall.setString(iPosition, oObject.toString()); + break; + } + oCall.setString(iPosition, (String)null); + break; + case 4: + if (oObject != null) { + oCall.setInt(iPosition, Integer.parseInt(oObject.toString())); + break; + } + oCall.setInt(iPosition, 0); + break; + case 8: + if (oObject != null) { + oCall.setDouble(iPosition, Double.parseDouble(oObject.toString())); + break; + } + oCall.setDouble(iPosition, 0.0D); + break; + case -5: + if (oObject != null) { + oCall.setLong(iPosition, ((Long)oObject).longValue()); + break; + } + oCall.setLong(iPosition, 0L); + break; + case 91: + if (oObject != null) { + oCall.setDate(iPosition, (Date)oObject); + break; + } + oCall.setDate(iPosition, (Date)null); + break; + case 93: + if (oObject != null) { + oCall.setTimestamp(iPosition, (Timestamp)oObject); + break; + } + oCall.setTimestamp(iPosition, (Timestamp)null); + break; + case 2000: + oCall.setObject(iPosition, oObject); + break; + } + } + + private void getOutParameters(DBObject oOutDBObject, CallableStatement oCall) throws SQLException { + int iPosition = oOutDBObject.getPosition(); + int iDataType = oOutDBObject.getDataType(); + switch (iDataType) { + case 12: + oOutDBObject.setObject(oCall.getString(iPosition)); + break; + case 1: + oOutDBObject.setObject(oCall.getString(iPosition)); + break; + case 4: + oOutDBObject.setObject(new Integer(oCall.getInt(iPosition))); + break; + case -5: + oOutDBObject.setObject(new Long(oCall.getLong(iPosition))); + break; + case 8: + oOutDBObject.setObject(new Double(oCall.getDouble(iPosition))); + break; + case 91: + oOutDBObject.setObject(oCall.getDate(iPosition)); + break; + case 93: + oOutDBObject.setObject(oCall.getTimestamp(iPosition)); + break; + case 2000: + oOutDBObject.setObject(oCall.getObject(iPosition)); + break; + case -10: + oOutDBObject.setObject(convertToList((ResultSet)oCall.getObject(iPosition))); + break; + } + } + + private ArrayList convertToList(ResultSet oRs2) throws SQLException { + if (null == oRs2) + return null; + ResultSetMetaData oRsMt = oRs2.getMetaData(); + int iColumnCount = oRsMt.getColumnCount(); + int iIndex = 0; + ArrayList oList = new ArrayList(); + String[] sColumnName = new String[iColumnCount]; + int[] iColumnType = new int[iColumnCount]; + for (iIndex = 0; iIndex < iColumnCount; iIndex++) { + sColumnName[iIndex] = oRsMt.getColumnName(iIndex + 1); + iColumnType[iIndex] = oRsMt.getColumnType(iIndex + 1); + } + while (oRs2.next()) { + QueryRow oRow = new QueryRow(iColumnCount); + for (iIndex = 0; iIndex < iColumnCount; iIndex++) { + QueryValue oValue = new QueryValue(); + setValue(sColumnName[iIndex], iColumnType[iIndex], oValue, oRs2); + oRow.getRow().put(sColumnName[iIndex].toUpperCase(), oValue); + } + oList.add(oRow); + } + oRs2.close(); + oRs2 = null; + return oList; + } + + private void setValue(String sColumnName, int iColumnType, QueryValue oValue, ResultSet oRs2) throws SQLException { + switch (iColumnType) { + case 2: + oValue.setString(oRs2.getString(sColumnName)); + break; + case 12: + oValue.setString(oRs2.getString(sColumnName)); + break; + case 1: + oValue.setString(oRs2.getString(sColumnName)); + break; + case 4: + oValue.setInt(oRs2.getInt(sColumnName)); + break; + case -5: + oValue.setLong(oRs2.getLong(sColumnName)); + break; + case 8: + oValue.setDouble(oRs2.getDouble(sColumnName)); + break; + case 91: + oValue.setDate(oRs2.getDate(sColumnName)); + break; + case 93: + oValue.setTimestamp(oRs2.getTimestamp(sColumnName)); + break; + case 2004: + oValue.setBlob(oRs2.getBlob(sColumnName)); + break; + case 2005: + oValue.setClob(oRs2.getClob(sColumnName)); + break; + } + } + + protected void finalize() { + try { + close(); + } catch (SQLException sQLException) {} + } + + private void close() throws SQLException { + if (this.oCon != null) { + if (!this.oCon.isClosed()) + this.oCon.close(); + this.oCon = null; + } + if (this.oConn != null) { + if (!this.oConn.isClosed()) + this.oConn.close(); + this.oConn = null; + } + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java new file mode 100644 index 0000000..1a78103 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java @@ -0,0 +1,38 @@ +package wenrgise.ejb.common.utility; + +import java.util.logging.Logger; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.tagext.BodyTagSupport; +import org.apache.struts.util.RequestUtils; +import org.apache.struts.util.ResponseUtils; +import wenrgise.common.utility.UserInfo; + +public class EnrgiseDisplayUserTag extends BodyTagSupport { + public static Logger log = Logger.getLogger("wenrgise.common.taglib.enrgise.EnrgiseDisplayUserTag"); + + public int doStartTag() throws JspException { + try { + String sessionBeanName = ParamUtil.getSessionBeanName(); + UserInfo oUserInfo = (UserInfo)RequestUtils.lookup(this.pageContext, sessionBeanName, "userInfo", "session"); + if (null != oUserInfo) { + String sEmp = RequestUtils.message(this.pageContext, null, "org.apache.struts.action.LOCALE", "wenrgise.common.user.name", null); + StringBuffer sbOutString = new StringBuffer(sEmp); + sbOutString.append(oUserInfo.getUserName()); + sbOutString.append("("); + sbOutString.append(oUserInfo.getUserId()); + sbOutString.append(")"); + sbOutString.append(" "); + String sSite = RequestUtils.message(this.pageContext, null, "org.apache.struts.action.LOCALE", "wenrgise.common.site.name", null); + sbOutString.append(sSite); + sbOutString.append(oUserInfo.getSiteName()); + sbOutString.append("("); + sbOutString.append(oUserInfo.getSiteCode()); + sbOutString.append(")"); + ResponseUtils.write(this.pageContext, sbOutString.toString()); + } + } catch (Exception oEx) { + log.info(oEx.getMessage()); + } + return 2; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseListener.java b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseListener.java new file mode 100644 index 0000000..691231d --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseListener.java @@ -0,0 +1,52 @@ +package wenrgise.ejb.common.utility; + +import java.rmi.RemoteException; +import java.util.Locale; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; + +public class EnrgiseListener implements HttpSessionListener { + static final Logger log = Logger.getLogger("wenrgise.common.utility.EnrgiseListener"); + + public void sessionCreated(HttpSessionEvent sEvent) { + try { + System.out.println("Creating Session---->"); + HttpSession session = sEvent.getSession(); + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) { + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("UserSession"); + oUser = oUserHome.create(); + UserInfo oUserInfo = new UserInfo(); + oUser.setUserInfo(oUserInfo); + Locale oLocale = (Locale)session.getAttribute("locale"); + oUser.setUserLocale((Locale)session.getAttribute("locale")); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + } + } catch (RemoteException oRmt) { + log.severe(oRmt.getMessage()); + } catch (CreateException oCrt) { + log.severe(oCrt.getMessage()); + } catch (Exception oExCc) { + log.severe(oExCc.getMessage()); + } + } + + public void sessionDestroyed(HttpSessionEvent sEvent) { + try { + HttpSession session = sEvent.getSession(); + if (session != null) { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + oUser.remove(); + } + } catch (RemoveException removeException) { + + } catch (RemoteException remoteException) {} + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseManager.java b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseManager.java new file mode 100644 index 0000000..5ff94f5 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseManager.java @@ -0,0 +1,66 @@ +package wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.common.xml.vo.DetailScreens; +import wenrgise.common.xml.vo.EnrgiseApp; +import wenrgise.common.xml.vo.EnrgiseForms; +import wenrgise.common.xml.vo.HashedEnrgiseForms; +import wenrgise.common.xml.vo.SingleForm; + +public class EnrgiseManager { + private static EnrgiseManager me; + + private HashMap oEnrgiseMap = new HashMap(); + + private HashMap appMap = new HashMap(); + + public static EnrgiseManager getInstance() { + if (me == null) + me = new EnrgiseManager(); + return me; + } + + public HashedEnrgiseForms getCachedObject(String name_) { + if (name_ == null || name_.trim().length() <= 0) + return null; + return (HashedEnrgiseForms)this.oEnrgiseMap.get(name_); + } + + public void init(EnrgiseForms oEnrgiseForms) { + if (oEnrgiseForms == null) + return; + ArrayList oFormsList = oEnrgiseForms.get_SingleForm(); + Iterator oIt = oFormsList.iterator(); + while (oIt.hasNext()) { + SingleForm oSingleForm = oIt.next(); + String sFormName = oSingleForm.get_FormName(); + HashedEnrgiseForms oHashedEnrgiseForms = new HashedEnrgiseForms(); + oHashedEnrgiseForms.setSingleForm(oSingleForm); + DetailScreens oDetailScreens = oSingleForm.get_DetailScreens(); + ArrayList oDetailList = oDetailScreens.get_DetailScreen(); + Iterator oDetailIt = oDetailList.iterator(); + while (oDetailIt.hasNext()) { + DetailScreen oDetailScreen = oDetailIt.next(); + String sDetailName = oDetailScreen.get_DetailScreenName(); + if (!oHashedEnrgiseForms.getDetailMap().containsKey(sDetailName)) + oHashedEnrgiseForms.getDetailMap().put(sDetailName, oDetailScreen); + } + if (!this.oEnrgiseMap.containsKey(sFormName)) + this.oEnrgiseMap.put(sFormName, oHashedEnrgiseForms); + } + } + + public void setEnrApp(EnrgiseApp oEnrApp) { + System.out.println(String.valueOf("DBname---->").concat(String.valueOf(oEnrApp.get_DBName()))); + System.out.println(String.valueOf("Module---->").concat(String.valueOf(oEnrApp.get_Module()))); + this.appMap.put("DBName", oEnrApp.get_DBName()); + this.appMap.put("Module", oEnrApp.get_Module()); + } + + public HashMap getAppMap() { + return this.appMap; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/EnrgisePlugIn.java b/hrmsEjb/wenrgise/ejb/common/utility/EnrgisePlugIn.java new file mode 100644 index 0000000..2a73346 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/EnrgisePlugIn.java @@ -0,0 +1,56 @@ +package wenrgise.ejb.common.utility; + +import com.tcs.wenrgise.util.common.FWXMLUtility; +import java.util.logging.Logger; +import javax.servlet.ServletException; +import org.apache.struts.action.ActionServlet; +import org.apache.struts.action.PlugIn; +import org.apache.struts.config.ModuleConfig; +import wenrgise.common.xml.vo.EnrgiseApp; +import wenrgise.common.xml.vo.EnrgiseForms; +import wenrgise.common.xml.vo.LOVClass; + +public class EnrgisePlugIn implements PlugIn { + static final Logger log = Logger.getLogger("wenrgise.ejb.common.utility.EnrgisePlugIn"); + + private String formPathName = "/WEB-INF/EnrgiseConfig.xml"; + + private String pathName = "/WEB-INF/EnrgiseLOV.xml"; + + private String appPath = "/WEB-INF/EnrgiseApp.xml"; + + private String reportPathName = "/WEB-INF/EnrgiseReport.xml"; + + private String wflImplPathName = "/WEB-INF/WflDocParameters.xml"; + + public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { + try { + System.out.println("I am in enrgise plugIn for HRMS--->"); + String appPathTest = calculatePath(servlet, this.appPath); + String configPathTest = calculatePath(servlet, this.formPathName); + String lovPathTest = calculatePath(servlet, this.pathName); + EnrgiseForms oEnrgiseForms = (EnrgiseForms)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.EnrgiseForms", configPathTest); + EnrgiseManager.getInstance().init(oEnrgiseForms); + LOVClass oLOVClass = (LOVClass)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.LOVClass", lovPathTest); + LOVManager.getInstance().init(oLOVClass); + EnrgiseApp oEnrgiseApp = (EnrgiseApp)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.EnrgiseApp", appPathTest); + EnrgiseManager.getInstance().setEnrApp(oEnrgiseApp); + } catch (Exception oEx) { + log.severe(oEx.getMessage()); + } + } + + public void destroy() {} + + private String calculatePath(ActionServlet servlet, String sPath) { + return servlet.getServletContext().getRealPath(sPath); + } + + public String getFormPathName() { + return this.formPathName; + } + + public void setFormPathName(String newFormPathName) { + this.formPathName = newFormPathName; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseSessionListener.java b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseSessionListener.java new file mode 100644 index 0000000..eaf6806 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/EnrgiseSessionListener.java @@ -0,0 +1,28 @@ +package wenrgise.ejb.common.utility; + +import java.rmi.RemoteException; +import java.util.logging.Logger; +import javax.ejb.RemoveException; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionActivationListener; +import javax.servlet.http.HttpSessionEvent; +import wenrgise.ejb.common.session.UserSession; + +public class EnrgiseSessionListener implements HttpSessionActivationListener { + static final Logger log = Logger.getLogger("wenrgise.common.Utility.EnrgiseSessionListener"); + + public void sessionDidActivate(HttpSessionEvent sessionEvent) {} + + public void sessionWillPassivate(HttpSessionEvent sessionEvent) { + try { + HttpSession oS = sessionEvent.getSession(); + UserSession oUser = (UserSession)oS.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser != null) + oUser.remove(); + } catch (RemoteException oExc) { + log.severe(String.valueOf("The reason ").concat(String.valueOf(oExc.getMessage()))); + } catch (RemoveException oEx) { + log.severe(String.valueOf("The reason ").concat(String.valueOf(oEx.getMessage()))); + } + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/LOVManager.java b/hrmsEjb/wenrgise/ejb/common/utility/LOVManager.java new file mode 100644 index 0000000..340f98e --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/LOVManager.java @@ -0,0 +1,65 @@ +package wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.xml.vo.LOV; +import wenrgise.common.xml.vo.LOVClass; +import wenrgise.common.xml.vo.LOVInfo; +import wenrgise.common.xml.vo.Screen; +import wenrgise.common.xml.vo.ScreenMode; +import wenrgise.common.xml.vo.ScreenModes; +import wenrgise.common.xml.vo.Screens; + +public class LOVManager { + private static LOVManager me; + + private HashMap oMap = new HashMap(); + + public static LOVManager getInstance() { + if (me == null) + me = new LOVManager(); + return me; + } + + public LOVInfo getCachedObject(String name_) { + if (name_ == null || name_.trim().length() <= 0) + return null; + return (LOVInfo)this.oMap.get(name_); + } + + public void init(LOVClass oLOVClass) { + if (oLOVClass == null) + return; + ArrayList oList = oLOVClass.get_LOV(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + LOV oLOV = oIt.next(); + String sLOVName = oLOV.get_LovKey(); + Screens oScreens = oLOV.get_Screens(); + Iterator oScreenIt = oScreens.get_Screen().iterator(); + while (oScreenIt.hasNext()) { + Screen oScreen = oScreenIt.next(); + String sScreenName = oScreen.get_ScreenName(); + ScreenModes oScreenModes = oScreen.get_ScreenModes(); + Iterator oScreenModeIt = oScreenModes.get_ScreenMode().iterator(); + while (oScreenModeIt.hasNext()) { + ScreenMode oScreenMode = oScreenModeIt.next(); + String sMode = oScreenMode.get_ModeName(); + LOVInfo oLOVInfo = new LOVInfo(); + oLOVInfo.setFacadeName(oScreenMode.get_FacadeName()); + oLOVInfo.setFunctionName(oScreenMode.get_FunctionName()); + oLOVInfo.setInsertFlag(oScreenMode.get_InsertFlag()); + oLOVInfo.setRecursiveFlag(oScreenMode.get_RecursiveFlag()); + String sCombinedKey = String.valueOf(String.valueOf(sLOVName).concat(String.valueOf(sScreenName))).concat(String.valueOf(sMode)); + if (!this.oMap.containsKey(sCombinedKey)) + this.oMap.put(sCombinedKey, oLOVInfo); + } + } + } + } + + public static void main(String[] argv) { + LOVManager oLov = new LOVManager(); + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/ParamUtil.java b/hrmsEjb/wenrgise/ejb/common/utility/ParamUtil.java new file mode 100644 index 0000000..144b4eb --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/ParamUtil.java @@ -0,0 +1,95 @@ +package wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.common.xml.vo.DetailScreens; +import wenrgise.common.xml.vo.HashedEnrgiseForms; +import wenrgise.common.xml.vo.SingleForm; + +public class ParamUtil { + public static String getDBName() { + return (String)EnrgiseManager.getInstance().getAppMap().get("DBName"); + } + + public static String getModuleName() { + return (String)EnrgiseManager.getInstance().getAppMap().get("Module"); + } + + public static String getQueryVO(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_EnrgiseQueryVO(); + } + + public static String getHeaderBD(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderBD(); + } + + public static String getHeaderSaveRequired(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderSave(); + } + + public static String getPseudoHeaderFlag(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_PseudoHeader(); + } + + public static String getDetailBD(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailBD(); + } + + public static String getDetailArrayName(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailArrayName(); + } + + public static String getDetailBeanName(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailBean(); + } + + public static String getSessionBeanName() { + String s = String.valueOf(getModuleName()).concat(String.valueOf("_UserSession")); + return String.valueOf(getModuleName()).concat(String.valueOf("_UserSession")); + } + + public static String getHeaderBean(String sFormName) { + try { + System.out.println(String.valueOf("I am in paramUtil-->").concat(String.valueOf(sFormName))); + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderBean(); + } catch (Exception ex) { + ex.printStackTrace(); + return null; + } + } + + public static int getHeaderSize(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return Integer.parseInt(oHashedEnrgiseForms.getSingleForm().get_HeaderSize()); + } + + public static int getDetailRecordPerPage(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return Integer.parseInt(oDetailScreen.get_DetailRecordPerPage()); + } + + public static int getMaxDetailPages(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return Integer.parseInt(oDetailScreen.get_DetailPagesPerSlot()); + } + + public static ArrayList getDetailList(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + SingleForm oSingleForm = oHashedEnrgiseForms.getSingleForm(); + DetailScreens oDetailScreens = oSingleForm.get_DetailScreens(); + return oDetailScreens.get_DetailScreen(); + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/PositionResolver.java b/hrmsEjb/wenrgise/ejb/common/utility/PositionResolver.java new file mode 100644 index 0000000..b5eec53 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/PositionResolver.java @@ -0,0 +1,50 @@ +package wenrgise.ejb.common.utility; + +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; + +public class PositionResolver { + public static long getStartPosition(BaseQueryVO oBaseQueryVO, long lTotalCount) { + int iMaxHeaderSize = oBaseQueryVO.getMaxHeaderSize(); + long lPositionRequested = oBaseQueryVO.getPositionRequested(); + if (lPositionRequested != 0L) { + long l; + return l = lPositionRequested; + } + int iStep = (int)(lTotalCount / iMaxHeaderSize); + long lStartPosition; + return lStartPosition = (iStep * iMaxHeaderSize + 1); + } + + public static long getLastPosition(BaseQueryVO oBaseQueryVO, long lTotalCount) { + long lLastPosition; + int iMaxHeaderSize = oBaseQueryVO.getMaxHeaderSize(); + long lPositionRequested = oBaseQueryVO.getPositionRequested(); + if (lPositionRequested != 0L) { + if (lPositionRequested + iMaxHeaderSize - 1L < lTotalCount) { + lLastPosition = lPositionRequested + iMaxHeaderSize - 1L; + } else { + lLastPosition = lTotalCount; + } + } else { + lLastPosition = lTotalCount; + } + return lLastPosition; + } + + public static long getDetailFirstPosition(int iStartPage, long lTotalDetailRecord, DetailSizeValues oDetailSizeValues) { + int iDetailRecordPerPage = oDetailSizeValues.getDetailRecordPerPage(); + int iMaxPage = oDetailSizeValues.getMaxPages(); + if (lTotalDetailRecord > ((iStartPage - 1) * iDetailRecordPerPage)) + return ((iStartPage - 1) * iDetailRecordPerPage + 1); + return 1L; + } + + public static long getDetailLastPosition(int iStartPage, long lTotalDetailRecord, DetailSizeValues oDetailSizeValues) { + int iDetailRecordPerPage = oDetailSizeValues.getDetailRecordPerPage(); + int iMaxPage = oDetailSizeValues.getMaxPages(); + if (lTotalDetailRecord > ((iStartPage + iMaxPage - 1) * iDetailRecordPerPage)) + return ((iStartPage + iMaxPage - 1) * iDetailRecordPerPage); + return lTotalDetailRecord; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/ServiceLocator.java b/hrmsEjb/wenrgise/ejb/common/utility/ServiceLocator.java new file mode 100644 index 0000000..9c3543c --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/ServiceLocator.java @@ -0,0 +1,91 @@ +package wenrgise.ejb.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; + +public class ServiceLocator { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static ServiceLocator serviceLocator = new ServiceLocator(); + + private ServiceLocator() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static ServiceLocator getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName.trim())) { + System.out.println("Test For Service Locator ---->"); + System.out.println(String.valueOf("JNDI Name ---->").concat(String.valueOf(jndiName))); + Context context = myContextProvider.getContext(); + System.out.println(String.valueOf("Context Name ---->").concat(String.valueOf(context.getNameInNamespace()))); + System.out.println(String.valueOf("Context").concat(String.valueOf(context.getEnvironment()))); + System.out.println("Context security java.naming.security.credentials"); + System.out.println("Context url is java.naming.provider.url"); + System.out.println(String.valueOf("jndiName : ").concat(String.valueOf(context.lookup(jndiName)))); + this.homeCache.put(jndiName.trim(), context.lookup(jndiName.trim())); + System.out.println(String.valueOf("After JNDI Name ---->").concat(String.valueOf(jndiName))); + } + } catch (NamingException oNa) { + oNa.printStackTrace(); + System.out.println(oNa.getExplanation()); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName.trim()); + } + + public Object getLocalService(String jndiHomeName) throws EnrgiseSystemException { + Object obj = null; + try { + Context context = myContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + obj = this.cacheMap.get(jndiHomeName); + } else { + obj = context.lookup(jndiHomeName); + this.cacheMap.put(jndiHomeName, obj); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return obj; + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + System.out.println(String.valueOf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").concat(String.valueOf(jndiHomeName))); + EJBLocalHome home = null; + try { + Context context = myContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + System.out.println(ne); + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return home; + } +} diff --git a/hrmsEjb/wenrgise/ejb/common/utility/myContextProvider.java b/hrmsEjb/wenrgise/ejb/common/utility/myContextProvider.java new file mode 100644 index 0000000..b338176 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/common/utility/myContextProvider.java @@ -0,0 +1,44 @@ +package wenrgise.ejb.common.utility; + +import java.util.Hashtable; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +public class myContextProvider { + private Context ctx = null; + + public static InitialContext localContext; + + static { + try { + localContext = new InitialContext(); + } catch (NamingException oNx) { + oNx.printStackTrace(); + } + } + + private static myContextProvider objContextProvider = new myContextProvider(); + + private myContextProvider() { + try { + Hashtable env = new Hashtable(); + System.out.println("Test for ContextProvider -->"); + env.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory"); + env.put("java.naming.provider.url", "t3://weblogicServer:7001"); + env.put("java.naming.security.principal", "weblogic"); + env.put("java.naming.security.credentials", "weblogic"); + this.ctx = new InitialContext(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static Context getContext() { + return objContextProvider.ctx; + } + + public static InitialContext getLocalContext() { + return localContext; + } +} diff --git a/hrmsEjb/wenrgise/ejb/help/business/HelpBO.java b/hrmsEjb/wenrgise/ejb/help/business/HelpBO.java new file mode 100644 index 0000000..3005b1d --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/help/business/HelpBO.java @@ -0,0 +1,262 @@ +package wenrgise.ejb.help.business; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.logging.Logger; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.help.bean.HelpChapterBean; +import wenrgise.help.bean.HelpComponentBean; +import wenrgise.help.bean.HelpContentBean; +import wenrgise.help.bean.HelpPartBean; + +public class HelpBO { + public static Logger log = Logger.getLogger("wenrgise.ejb.common.business.HelpBO"); + + public ArrayList getComponentCodes(String sModuleName) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oComponents = null; + String sComp = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sModuleName)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HLPCONTENTDETAIL.proc_GetComponents(?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + oList = new ArrayList(); + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oComponents = new ArrayList(); + count++; + oRow = oIt.next(); + sComp = new String(); + sComp = oRow.get("component_id").getString(); + oComponents.add(sComp); + } + return oComponents; + } + + public ArrayList getChapter(String sCompId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HelpChapterBean oHelpChapterBean = null; + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oChapter = null; + String sChap = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sCompId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HLPCONTENTDETAIL.proc_GetChapter(?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) { + oList = new ArrayList(); + oChapter = new ArrayList(); + } + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oChapter = new ArrayList(); + count++; + oRow = oIt.next(); + oHelpChapterBean = new HelpChapterBean(); + oHelpChapterBean.setTxtChapId(oRow.get("id").getString()); + oHelpChapterBean.setTxtHeading(oRow.get("heading").getString()); + oHelpChapterBean.setTxtKeyword(oRow.get("keyword").getString()); + oChapter.add(oHelpChapterBean); + } + return oChapter; + } + + public ArrayList getPart(String sChapId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oParts = null; + String sPart = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sChapId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HLPCONTENTDETAIL.proc_GetPart(?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) { + oList = new ArrayList(); + oParts = new ArrayList(); + } + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oParts = new ArrayList(); + count++; + oRow = oIt.next(); + sPart = new String(); + sPart = oRow.get("id").getString(); + oParts.add(sPart); + } + return oParts; + } + + public ArrayList getModule(String sModName) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oCompList = null; + ArrayList oModule = null; + ArrayList oChapList = null; + ArrayList oPartList = null; + ArrayList oCompListDtl = null; + ArrayList oModuleDtl = null; + ArrayList oChapListDtl = null; + ArrayList oPartListDtl = null; + ArrayList oSubPartListDtl = null; + HelpChapterBean oHelpChapterBean = new HelpChapterBean(); + HelpChapterBean oChapterBean = new HelpChapterBean(); + HelpComponentBean oHelpComponentBean = new HelpComponentBean(); + HelpPartBean oHelpPartBean = new HelpPartBean(); + String sCompId = ""; + String sChapId = ""; + String sPartId = ""; + String sPart = ""; + String sPartHeading = ""; + oCompList = getComponentCodes(sModName); + oCompListDtl = new ArrayList(); + for (int i = 0; i < oCompList.size(); i++) { + sCompId = oCompList.get(i); + oHelpComponentBean = new HelpComponentBean(); + oHelpComponentBean.setTxtComponentCode(sCompId); + oChapList = getChapter(sCompId); + oChapListDtl = new ArrayList(); + for (int j = 0; j < oChapList.size(); j++) { + oChapterBean = oChapList.get(j); + sChapId = oChapterBean.getTxtChapId(); + oHelpChapterBean = new HelpChapterBean(); + oHelpChapterBean.setTxtHeading(oChapterBean.getTxtHeading()); + oHelpChapterBean.setTxtChapId(oChapterBean.getTxtChapId()); + oPartList = getPart(sChapId); + oPartListDtl = new ArrayList(); + for (int k = 0; k < oPartList.size(); k++) { + sPartId = oPartList.get(k); + oHelpPartBean = new HelpPartBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sPartId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HLPCONTENTDETAIL.proc_GetPartDtl(?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + oSubPartListDtl = new ArrayList(); + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oSubPartListDtl = new ArrayList(); + count++; + oRow = oIt.next(); + sPart = new String(); + sPartHeading = oRow.get("HEADING").getString(); + sPart = oRow.get("CONTENT").getString(); + oSubPartListDtl.add(sPart); + } + oHelpPartBean.setTxtHeading(sPartHeading); + oHelpPartBean.setArylstContent(oSubPartListDtl); + oPartListDtl.add(oHelpPartBean); + } + oHelpChapterBean.setArylstPart(oPartListDtl); + oChapListDtl.add(oHelpChapterBean); + } + oHelpComponentBean.setArylstChapter(oChapListDtl); + oCompListDtl.add(oHelpComponentBean); + } + return oCompListDtl; + } + + public ArrayList getOneChapter(String sChapId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oPartList = null; + ArrayList oPartListDtl = null; + ArrayList oSubPartListDtl = null; + HelpPartBean oHelpPartBean = new HelpPartBean(); + HelpContentBean oHelpContentBean = new HelpContentBean(); + String sPartId = ""; + String sPart = ""; + String sPartHeading = ""; + oPartList = getPart(sChapId); + oPartListDtl = new ArrayList(); + for (int k = 0; k < oPartList.size(); k++) { + sPartId = oPartList.get(k); + oHelpPartBean = new HelpPartBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sPartId)); + oParameters.add(new DBObject(2, 1, 12, sChapId)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HLPCONTENTDETAIL.proc_GetPartDtl(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) { + oSubPartListDtl = new ArrayList(); + } else { + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oSubPartListDtl = new ArrayList(); + count++; + oRow = oIt.next(); + oHelpContentBean = new HelpContentBean(); + sPartHeading = oRow.get("HEADING").getString(); + oHelpContentBean.setTxtContents(oRow.get("CONTENT").getString()); + oHelpContentBean.setTxtSecHeading(oRow.get("SECTION_NAME").getString()); + oSubPartListDtl.add(oHelpContentBean); + } + oHelpPartBean.setTxtHeading(sPartHeading); + oHelpPartBean.setArylstContent(oSubPartListDtl); + oPartListDtl.add(oHelpPartBean); + } + } + return oPartListDtl; + } +} diff --git a/hrmsEjb/wenrgise/ejb/help/business/SearchBO.java b/hrmsEjb/wenrgise/ejb/help/business/SearchBO.java new file mode 100644 index 0000000..edeb205 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/help/business/SearchBO.java @@ -0,0 +1,65 @@ +package wenrgise.ejb.help.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.help.bean.SearchBean; + +public class SearchBO extends BaseBO { + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void initializeBOImpl() {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public ArrayList getChapterDetails(String sText, String sModuleId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + SearchBean oSearchBean = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oChapterDetail = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sModuleId)); + oParameters.add(new DBObject(2, 1, 12, sText)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "ENRGISEHELP.PROC_GetChapters(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + return new ArrayList(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oSearchBean = new SearchBean(); + oRow = oIt.next(); + oSearchBean.setChapterId(oRow.get("ID").getString()); + oSearchBean.setChapterName(oRow.get("HEADING").getString()); + oSearchBean.setTxtScreenName(oRow.get("KEYWORD").getString()); + oChapterDetail.add(oSearchBean); + } + return oChapterDetail; + } +} diff --git a/hrmsEjb/wenrgise/ejb/help/facade/HelpFacade.java b/hrmsEjb/wenrgise/ejb/help/facade/HelpFacade.java new file mode 100644 index 0000000..6279ca8 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/help/facade/HelpFacade.java @@ -0,0 +1,11 @@ +package wenrgise.ejb.help.facade; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import javax.ejb.EJBObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; + +public interface HelpFacade extends EJBObject { + ArrayList getChapterList(String paramString1, String paramString2) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; +} diff --git a/hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeBean.java b/hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeBean.java new file mode 100644 index 0000000..4ae9431 --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeBean.java @@ -0,0 +1,25 @@ +package wenrgise.ejb.help.facade; + +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.help.business.SearchBO; + +public class HelpFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public ArrayList getChapterList(String sText, String sModuleId) throws EnrgiseSystemException, EnrgiseApplicationException { + SearchBO oSearchBO = new SearchBO(); + return oSearchBO.getChapterDetails(sText, sModuleId); + } +} diff --git a/hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeHome.java b/hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeHome.java new file mode 100644 index 0000000..fed68da --- /dev/null +++ b/hrmsEjb/wenrgise/ejb/help/facade/HelpFacadeHome.java @@ -0,0 +1,9 @@ +package wenrgise.ejb.help.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface HelpFacadeHome extends EJBHome { + HelpFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/help/bean/HelpChapterBean.java b/hrmsEjb/wenrgise/help/bean/HelpChapterBean.java new file mode 100644 index 0000000..ce7ee4f --- /dev/null +++ b/hrmsEjb/wenrgise/help/bean/HelpChapterBean.java @@ -0,0 +1,46 @@ +package wenrgise.help.bean; + +import java.io.Serializable; +import java.util.ArrayList; + +public class HelpChapterBean implements Serializable { + private String txtHeading = ""; + + private ArrayList arylstPart = new ArrayList(); + + private String txtChapId = ""; + + private String txtKeyword = ""; + + public String getTxtHeading() { + return this.txtHeading; + } + + public void setTxtHeading(String newTxtHeading) { + this.txtHeading = newTxtHeading; + } + + public ArrayList getArylstPart() { + return this.arylstPart; + } + + public void setArylstPart(ArrayList newArylstPart) { + this.arylstPart = newArylstPart; + } + + public String getTxtChapId() { + return this.txtChapId; + } + + public void setTxtChapId(String newTxtChapId) { + this.txtChapId = newTxtChapId; + } + + public String getTxtKeyword() { + return this.txtKeyword; + } + + public void setTxtKeyword(String newTxtKeyword) { + this.txtKeyword = newTxtKeyword; + } +} diff --git a/hrmsEjb/wenrgise/help/bean/HelpComponentBean.java b/hrmsEjb/wenrgise/help/bean/HelpComponentBean.java new file mode 100644 index 0000000..70f2b23 --- /dev/null +++ b/hrmsEjb/wenrgise/help/bean/HelpComponentBean.java @@ -0,0 +1,26 @@ +package wenrgise.help.bean; + +import java.io.Serializable; +import java.util.ArrayList; + +public class HelpComponentBean implements Serializable { + private String txtComponentCode = ""; + + private ArrayList arylstChapter = new ArrayList(); + + public String getTxtComponentCode() { + return this.txtComponentCode; + } + + public void setTxtComponentCode(String newTxtComponentCode) { + this.txtComponentCode = newTxtComponentCode; + } + + public ArrayList getArylstChapter() { + return this.arylstChapter; + } + + public void setArylstChapter(ArrayList newArylstChapter) { + this.arylstChapter = newArylstChapter; + } +} diff --git a/hrmsEjb/wenrgise/help/bean/HelpContentBean.java b/hrmsEjb/wenrgise/help/bean/HelpContentBean.java new file mode 100644 index 0000000..3f0441c --- /dev/null +++ b/hrmsEjb/wenrgise/help/bean/HelpContentBean.java @@ -0,0 +1,25 @@ +package wenrgise.help.bean; + +import java.io.Serializable; + +public class HelpContentBean implements Serializable { + private String txtSecHeading = ""; + + private String txtContents = ""; + + public String getTxtSecHeading() { + return this.txtSecHeading; + } + + public void setTxtSecHeading(String newTxtSecHeading) { + this.txtSecHeading = newTxtSecHeading; + } + + public String getTxtContents() { + return this.txtContents; + } + + public void setTxtContents(String newTxtContents) { + this.txtContents = newTxtContents; + } +} diff --git a/hrmsEjb/wenrgise/help/bean/HelpPartBean.java b/hrmsEjb/wenrgise/help/bean/HelpPartBean.java new file mode 100644 index 0000000..d91dfaa --- /dev/null +++ b/hrmsEjb/wenrgise/help/bean/HelpPartBean.java @@ -0,0 +1,26 @@ +package wenrgise.help.bean; + +import java.io.Serializable; +import java.util.ArrayList; + +public class HelpPartBean implements Serializable { + private String txtHeading = ""; + + private ArrayList arylstContent = new ArrayList(); + + public String getTxtHeading() { + return this.txtHeading; + } + + public void setTxtHeading(String newTxtHeading) { + this.txtHeading = newTxtHeading; + } + + public ArrayList getArylstContent() { + return this.arylstContent; + } + + public void setArylstContent(ArrayList newArylstContent) { + this.arylstContent = newArylstContent; + } +} diff --git a/hrmsEjb/wenrgise/help/bean/SearchBean.java b/hrmsEjb/wenrgise/help/bean/SearchBean.java new file mode 100644 index 0000000..3e8fec3 --- /dev/null +++ b/hrmsEjb/wenrgise/help/bean/SearchBean.java @@ -0,0 +1,65 @@ +package wenrgise.help.bean; + +import wenrgise.common.bean.BaseDetailBean; + +public class SearchBean extends BaseDetailBean { + private String chapterId; + + private String chapterName; + + private String partName; + + private String txtModuleName; + + private String txtScreenName; + + private String txtAction; + + public String getChapterId() { + return this.chapterId; + } + + public void setChapterId(String newChapterId) { + this.chapterId = newChapterId; + } + + public String getChapterName() { + return this.chapterName; + } + + public void setChapterName(String newChapterName) { + this.chapterName = newChapterName; + } + + public String getPartName() { + return this.partName; + } + + public void setPartName(String newPartName) { + this.partName = newPartName; + } + + public String getTxtModuleName() { + return this.txtModuleName; + } + + public void setTxtModuleName(String newTxtModuleName) { + this.txtModuleName = newTxtModuleName; + } + + public String getTxtScreenName() { + return this.txtScreenName; + } + + public void setTxtScreenName(String newTxtScreenName) { + this.txtScreenName = newTxtScreenName; + } + + public String getTxtAction() { + return this.txtAction; + } + + public void setTxtAction(String newTxtAction) { + this.txtAction = newTxtAction; + } +} diff --git a/hrmsEjb/wenrgise/help/businessdelegate/HelpBD.java b/hrmsEjb/wenrgise/help/businessdelegate/HelpBD.java new file mode 100644 index 0000000..4b5d355 --- /dev/null +++ b/hrmsEjb/wenrgise/help/businessdelegate/HelpBD.java @@ -0,0 +1,21 @@ +package wenrgise.help.businessdelegate; + +import java.util.ArrayList; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.ejb.help.facade.HelpFacade; +import wenrgise.ejb.help.facade.HelpFacadeHome; + +public class HelpBD { + public ArrayList getChapters(String sText, String sModuleId) throws EnrgiseSystemException { + try { + HelpFacadeHome oHome = (HelpFacadeHome)ServiceLocator.getLocator().getService("HrmHelpFacade"); + HelpFacade oHelpFacade = oHome.create(); + return oHelpFacade.getChapterList(sText, sModuleId); + } catch (Exception oe) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("Debug For Help").concat(String.valueOf(oe.getClass().getName()))).concat(String.valueOf(" "))).concat(String.valueOf(oe.getMessage()))); + oe.printStackTrace(); + return new ArrayList(); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java new file mode 100644 index 0000000..23dba9e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java @@ -0,0 +1,226 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmATDDeputChrgRptHdrBean extends BaseHeaderBean implements Serializable { + private String dptOrderNo; + + private String empName; + + private String deputationDate; + + private String chargeCode; + + private String handOverDate; + + private String chargeType; + + private String fromWorkGroupCode; + + private String fromSiteCode; + + private String noonFlag; + + private String remarks; + + private String dptOrderNoId; + + private String depOrdrDtlId; + + private String chargeCodeId; + + private String chargeStatus; + + private String fromSiteId; + + private String toSiteCode; + + private String toSiteId; + + private String fromWrkGrpId; + + private String toWorkGroupCode; + + private String toWrkGrpId; + + private String empId; + + private String deputType; + + public String getDptOrderNo() { + return this.dptOrderNo; + } + + public void setDptOrderNo(String newDptOrderNo) { + this.dptOrderNo = newDptOrderNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDeputationDate() { + return this.deputationDate; + } + + public void setDeputationDate(String newDeputationDate) { + this.deputationDate = newDeputationDate; + } + + public String getChargeCode() { + return this.chargeCode; + } + + public void setChargeCode(String newChargeCode) { + this.chargeCode = newChargeCode; + } + + public String getHandOverDate() { + return this.handOverDate; + } + + public void setHandOverDate(String newHandOverDate) { + this.handOverDate = newHandOverDate; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getFromWorkGroupCode() { + return this.fromWorkGroupCode; + } + + public void setFromWorkGroupCode(String newFromWorkGroupCode) { + this.fromWorkGroupCode = newFromWorkGroupCode; + } + + public String getFromSiteCode() { + return this.fromSiteCode; + } + + public void setFromSiteCode(String newFromSiteCode) { + this.fromSiteCode = newFromSiteCode; + } + + public String getNoonFlag() { + return this.noonFlag; + } + + public void setNoonFlag(String newNoonFlag) { + this.noonFlag = newNoonFlag; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDptOrderNoId() { + return this.dptOrderNoId; + } + + public void setDptOrderNoId(String newDptOrderNoId) { + this.dptOrderNoId = newDptOrderNoId; + } + + public String getDepOrdrDtlId() { + return this.depOrdrDtlId; + } + + public void setDepOrdrDtlId(String newDepOrdrDtlId) { + this.depOrdrDtlId = newDepOrdrDtlId; + } + + public String getChargeCodeId() { + return this.chargeCodeId; + } + + public void setChargeCodeId(String newChargeCodeId) { + this.chargeCodeId = newChargeCodeId; + } + + public String getChargeStatus() { + return this.chargeStatus; + } + + public void setChargeStatus(String newChargeStatus) { + this.chargeStatus = newChargeStatus; + } + + public String getFromSiteId() { + return this.fromSiteId; + } + + public void setFromSiteId(String newFromSiteId) { + this.fromSiteId = newFromSiteId; + } + + public String getToSiteCode() { + return this.toSiteCode; + } + + public void setToSiteCode(String newToSiteCode) { + this.toSiteCode = newToSiteCode; + } + + public String getToSiteId() { + return this.toSiteId; + } + + public void setToSiteId(String newToSiteId) { + this.toSiteId = newToSiteId; + } + + public String getFromWrkGrpId() { + return this.fromWrkGrpId; + } + + public void setFromWrkGrpId(String newFromWrkGrpId) { + this.fromWrkGrpId = newFromWrkGrpId; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWrkGrpId() { + return this.toWrkGrpId; + } + + public void setToWrkGrpId(String newToWrkGrpId) { + this.toWrkGrpId = newToWrkGrpId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java new file mode 100644 index 0000000..08d2c29 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java @@ -0,0 +1,6 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmATDDeputOrderSngEmpDtlBean extends BaseDetailBean implements Serializable {} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java new file mode 100644 index 0000000..d56cbcb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java @@ -0,0 +1,236 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmATDDeputOrderSngEmpHdrBean extends BaseHeaderBean implements Serializable { + String orderNo; + + String orderDate; + + String deputType; + + String orderStatus; + + String applnNo; + + String employeeName; + + String applicationDate; + + String toOrg; + + String toPost; + + String deptnEffectDate; + + String reportingDate; + + String remarks; + + String applnNoId; + + String headerPrimaryKey1; + + String hdnOrderStatus; + + String hdnDeputType; + + private String deputStatus; + + private String reptBackDate; + + private String fax; + + private String email; + + private String phone; + + private String mobilePhone; + + String employeeNoId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getToOrg() { + return this.toOrg; + } + + public void setToOrg(String newToOrg) { + this.toOrg = newToOrg; + } + + public String getToPost() { + return this.toPost; + } + + public void setToPost(String newToPost) { + this.toPost = newToPost; + } + + public String getDeptnEffectDate() { + return this.deptnEffectDate; + } + + public void setDeptnEffectDate(String newDeptnEffectDate) { + this.deptnEffectDate = newDeptnEffectDate; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getHdnOrderStatus() { + return this.hdnOrderStatus; + } + + public void setHdnOrderStatus(String newHdnOrderStatus) { + this.hdnOrderStatus = newHdnOrderStatus; + } + + public String getHdnDeputType() { + return this.hdnDeputType; + } + + public void setHdnDeputType(String newHdnDeputType) { + this.hdnDeputType = newHdnDeputType; + } + + public String getDeputStatus() { + return this.deputStatus; + } + + public void setDeputStatus(String newDeputStatus) { + this.deputStatus = newDeputStatus; + } + + public String getReptBackDate() { + return this.reptBackDate; + } + + public void setReptBackDate(String newReptBackDate) { + this.reptBackDate = newReptBackDate; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getMobilePhone() { + return this.mobilePhone; + } + + public void setMobilePhone(String newMobilePhone) { + this.mobilePhone = newMobilePhone; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java new file mode 100644 index 0000000..0f6f388 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java @@ -0,0 +1,316 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmATDTransOrderForSingleEmpBean extends BaseHeaderBean implements Serializable { + private String orderNo; + + private String orderDate; + + private String orderStatus; + + private String orderNoID; + + private String orderType; + + private String remarks; + + private String noOfDays; + + private String reportingDate; + + private String trnsfrEffectDate; + + private String reportingEmpId; + + private String toSite; + + private String fromSite; + + private String applicationDate; + + private String empName; + + private String applnNo; + + private String toSiteID; + + private String empID; + + private String applnNoID; + + private String headerPrimaryKey1; + + private String fromSiteID; + + private String toDesignation; + + private String reptEmpID; + + private String reptEmpGrade; + + private String fromDesignation; + + private String approverNoId; + + private String approverName; + + private String selfOffice; + + private String disabSelfOffice; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String toWorkGroupCode; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getOrderNoID() { + return this.orderNoID; + } + + public void setOrderNoID(String newOrderNoID) { + this.orderNoID = newOrderNoID; + } + + public String getOrderType() { + return this.orderType; + } + + public void setOrderType(String newOrderType) { + this.orderType = newOrderType; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getNoOfDays() { + return this.noOfDays; + } + + public void setNoOfDays(String newNoOfDays) { + this.noOfDays = newNoOfDays; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getTrnsfrEffectDate() { + return this.trnsfrEffectDate; + } + + public void setTrnsfrEffectDate(String newTrnsfrEffectDate) { + this.trnsfrEffectDate = newTrnsfrEffectDate; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getToSiteID() { + return this.toSiteID; + } + + public void setToSiteID(String newToSiteID) { + this.toSiteID = newToSiteID; + } + + public String getEmpID() { + return this.empID; + } + + public void setEmpID(String newEmpID) { + this.empID = newEmpID; + } + + public String getApplnNoID() { + return this.applnNoID; + } + + public void setApplnNoID(String newApplnNoID) { + this.applnNoID = newApplnNoID; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getFromSiteID() { + return this.fromSiteID; + } + + public void setFromSiteID(String newFromSiteID) { + this.fromSiteID = newFromSiteID; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getReptEmpID() { + return this.reptEmpID; + } + + public void setReptEmpID(String newReptEmpID) { + this.reptEmpID = newReptEmpID; + } + + public String getReptEmpGrade() { + return this.reptEmpGrade; + } + + public void setReptEmpGrade(String newReptEmpGrade) { + this.reptEmpGrade = newReptEmpGrade; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getSelfOffice() { + return this.selfOffice; + } + + public void setSelfOffice(String newSelfOffice) { + this.selfOffice = newSelfOffice; + } + + public String getDisabSelfOffice() { + return this.disabSelfOffice; + } + + public void setDisabSelfOffice(String newDisabSelfOffice) { + this.disabSelfOffice = newDisabSelfOffice; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java new file mode 100644 index 0000000..df417c1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java @@ -0,0 +1,266 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdhocReportHdrBean extends BaseHeaderBean implements Serializable { + private String query; + + private String id; + + private String code; + + private String query_desc; + + private String category_tag; + + private String param1; + + private String param2; + + private String param3; + + private String param4; + + private String param5; + + private String param6; + + private String param7; + + private String param8; + + private String param9; + + private String param10; + + private String paramval1; + + private String paramval2; + + private String paramval3; + + private String paramval4; + + private String paramval5; + + private String paramval6; + + private String paramval7; + + private String paramval8; + + private String paramval9; + + private String paramval10; + + private String resultrow; + + public String getQuery() { + return this.query; + } + + public void setQuery(String newQuery) { + this.query = newQuery; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getQuery_desc() { + return this.query_desc; + } + + public void setQuery_desc(String query_desc) { + this.query_desc = query_desc; + } + + public String getCategory_tag() { + return this.category_tag; + } + + public void setCategory_tag(String category_tag) { + this.category_tag = category_tag; + } + + public String getParam1() { + return this.param1; + } + + public void setParam1(String param1) { + this.param1 = param1; + } + + public String getParam2() { + return this.param2; + } + + public void setParam2(String param2) { + this.param2 = param2; + } + + public String getParam3() { + return this.param3; + } + + public void setParam3(String param3) { + this.param3 = param3; + } + + public String getParam4() { + return this.param4; + } + + public void setParam4(String param4) { + this.param4 = param4; + } + + public String getParam5() { + return this.param5; + } + + public void setParam5(String param5) { + this.param5 = param5; + } + + public String getParam6() { + return this.param6; + } + + public void setParam6(String param6) { + this.param6 = param6; + } + + public String getParam7() { + return this.param7; + } + + public void setParam7(String param7) { + this.param7 = param7; + } + + public String getParam8() { + return this.param8; + } + + public void setParam8(String param8) { + this.param8 = param8; + } + + public String getParam9() { + return this.param9; + } + + public void setParam9(String param9) { + this.param9 = param9; + } + + public String getParam10() { + return this.param10; + } + + public void setParam10(String param10) { + this.param10 = param10; + } + + public String getParamval1() { + return this.paramval1; + } + + public void setParamval1(String paramval1) { + this.paramval1 = paramval1; + } + + public String getParamval2() { + return this.paramval2; + } + + public void setParamval2(String paramval2) { + this.paramval2 = paramval2; + } + + public String getParamval3() { + return this.paramval3; + } + + public void setParamval3(String paramval3) { + this.paramval3 = paramval3; + } + + public String getParamval4() { + return this.paramval4; + } + + public void setParamval4(String paramval4) { + this.paramval4 = paramval4; + } + + public String getParamval5() { + return this.paramval5; + } + + public void setParamval5(String paramval5) { + this.paramval5 = paramval5; + } + + public String getParamval6() { + return this.paramval6; + } + + public void setParamval6(String paramval6) { + this.paramval6 = paramval6; + } + + public String getParamval7() { + return this.paramval7; + } + + public void setParamval7(String paramval7) { + this.paramval7 = paramval7; + } + + public String getParamval8() { + return this.paramval8; + } + + public void setParamval8(String paramval8) { + this.paramval8 = paramval8; + } + + public String getParamval9() { + return this.paramval9; + } + + public void setParamval9(String paramval9) { + this.paramval9 = paramval9; + } + + public String getParamval10() { + return this.paramval10; + } + + public void setParamval10(String paramval10) { + this.paramval10 = paramval10; + } + + public String getResultrow() { + return this.resultrow; + } + + public void setResultrow(String resultrow) { + this.resultrow = resultrow; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java new file mode 100644 index 0000000..320296c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java @@ -0,0 +1,246 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdvSettleHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String employeeName; + + private String firstName; + + private String middleName; + + private String lastName; + + private String designation; + + private String advanceCode; + + private String dateApplied; + + private String fromDate; + + private String toDate; + + private String amountApplied; + + private String settleAmount; + + private String noOfIns; + + private String reason; + + private String employeeId; + + String advanceCodeId; + + private String grade; + + private String location; + + private String balance; + + private String recoveredAmount; + + private String paidInstallments; + + private String sanctionedDate; + + private String sanctionedAmount; + + private String settleId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAmountApplied() { + return this.amountApplied; + } + + public void setAmountApplied(String newAmountApplied) { + this.amountApplied = newAmountApplied; + } + + public String getSettleAmount() { + return this.settleAmount; + } + + public void setSettleAmount(String newSettleAmount) { + this.settleAmount = newSettleAmount; + } + + public String getNoOfIns() { + return this.noOfIns; + } + + public void setNoOfIns(String newNoOfIns) { + this.noOfIns = newNoOfIns; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getBalance() { + return this.balance; + } + + public void setBalance(String newBalance) { + this.balance = newBalance; + } + + public String getRecoveredAmount() { + return this.recoveredAmount; + } + + public void setRecoveredAmount(String newRecoveredAmount) { + this.recoveredAmount = newRecoveredAmount; + } + + public String getPaidInstallments() { + return this.paidInstallments; + } + + public void setPaidInstallments(String newPaidInstallments) { + this.paidInstallments = newPaidInstallments; + } + + public String getSanctionedDate() { + return this.sanctionedDate; + } + + public void setSanctionedDate(String newSanctionedDate) { + this.sanctionedDate = newSanctionedDate; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java new file mode 100644 index 0000000..420b00e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAdvSettleHeadsDtlBean extends BaseDetailBean implements Serializable { + private String txtHeadName; + + private String txtMaxLimit; + + private String txtAmount; + + String txtSettleHeadId; + + String txtAdvancesId; + + String txtSettleStatus; + + public String getTxtHeadName() { + return this.txtHeadName; + } + + public void setTxtHeadName(String newTxtHeadName) { + this.txtHeadName = newTxtHeadName; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String getTxtAmount() { + return this.txtAmount; + } + + public void setTxtAmount(String newTxtAmount) { + this.txtAmount = newTxtAmount; + } + + public String getTxtSettleHeadId() { + return this.txtSettleHeadId; + } + + public void setTxtSettleHeadId(String newTxtSettleHeadId) { + this.txtSettleHeadId = newTxtSettleHeadId; + } + + public String getTxtAdvancesId() { + return this.txtAdvancesId; + } + + public void setTxtAdvancesId(String newTxtAdvancesId) { + this.txtAdvancesId = newTxtAdvancesId; + } + + public String getTxtSettleStatus() { + return this.txtSettleStatus; + } + + public void setTxtSettleStatus(String newTxtSettleStatus) { + this.txtSettleStatus = newTxtSettleStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java new file mode 100644 index 0000000..430fecc --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdvSettleHeadsHdrBean extends BaseHeaderBean implements Serializable { + private String advanceDescription; + + String settleId; + + String advanceCodeId; + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java new file mode 100644 index 0000000..8c04c0f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java @@ -0,0 +1,146 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAdvanceMstDtlBean extends BaseDetailBean implements Serializable { + private String txtAdvanceDescription; + + private String txtEffectiveFromDate; + + private String txtEffectiveToDate; + + private String txtMaxCalLimit; + + private String txtNoOfTXN; + + private String txtMaxLimitPerTXN; + + private String txtFlatAmount; + + private String txtSettlementUnit; + + private String txtSettlementPeriod; + + private String txtMoratoriumInMonths; + + private String txtSettleThroughPayroll; + + private String txtApplicableToAll; + + private String txtNoOfMonSal; + + private String txtEligibilityFactor; + + public String getTxtAdvanceDescription() { + return this.txtAdvanceDescription; + } + + public void setTxtAdvanceDescription(String newTxtAdvanceDescription) { + this.txtAdvanceDescription = newTxtAdvanceDescription; + } + + public String getTxtEffectiveFromDate() { + return this.txtEffectiveFromDate; + } + + public void setTxtEffectiveFromDate(String newTxtEffectiveFromDate) { + this.txtEffectiveFromDate = newTxtEffectiveFromDate; + } + + public String getTxtEffectiveToDate() { + return this.txtEffectiveToDate; + } + + public void setTxtEffectiveToDate(String newTxtEffectiveToDate) { + this.txtEffectiveToDate = newTxtEffectiveToDate; + } + + public String getTxtMaxCalLimit() { + return this.txtMaxCalLimit; + } + + public void setTxtMaxCalLimit(String newTxtMaxCalLimit) { + this.txtMaxCalLimit = newTxtMaxCalLimit; + } + + public String getTxtNoOfTXN() { + return this.txtNoOfTXN; + } + + public void setTxtNoOfTXN(String newTxtNoOfTXN) { + this.txtNoOfTXN = newTxtNoOfTXN; + } + + public String getTxtMaxLimitPerTXN() { + return this.txtMaxLimitPerTXN; + } + + public void setTxtMaxLimitPerTXN(String newTxtMaxLimitPerTXN) { + this.txtMaxLimitPerTXN = newTxtMaxLimitPerTXN; + } + + public String getTxtFlatAmount() { + return this.txtFlatAmount; + } + + public void setTxtFlatAmount(String newTxtFlatAmount) { + this.txtFlatAmount = newTxtFlatAmount; + } + + public String getTxtSettlementUnit() { + return this.txtSettlementUnit; + } + + public void setTxtSettlementUnit(String newTxtSettlementUnit) { + this.txtSettlementUnit = newTxtSettlementUnit; + } + + public String getTxtSettlementPeriod() { + return this.txtSettlementPeriod; + } + + public void setTxtSettlementPeriod(String newTxtSettlementPeriod) { + this.txtSettlementPeriod = newTxtSettlementPeriod; + } + + public String getTxtMoratoriumInMonths() { + return this.txtMoratoriumInMonths; + } + + public void setTxtMoratoriumInMonths(String newTxtMoratoriumInMonths) { + this.txtMoratoriumInMonths = newTxtMoratoriumInMonths; + } + + public String getTxtSettleThroughPayroll() { + return this.txtSettleThroughPayroll; + } + + public void setTxtSettleThroughPayroll(String newTxtSettleThroughPayroll) { + this.txtSettleThroughPayroll = newTxtSettleThroughPayroll; + } + + public String getTxtApplicableToAll() { + return this.txtApplicableToAll; + } + + public void setTxtApplicableToAll(String newTxtApplicableToAll) { + this.txtApplicableToAll = newTxtApplicableToAll; + } + + public String getTxtNoOfMonSal() { + return this.txtNoOfMonSal; + } + + public void setTxtNoOfMonSal(String newTxtNoOfMonSal) { + this.txtNoOfMonSal = newTxtNoOfMonSal; + } + + public String getTxtEligibilityFactor() { + return this.txtEligibilityFactor; + } + + public void setTxtEligibilityFactor(String newTxtEligibilityFactor) { + this.txtEligibilityFactor = newTxtEligibilityFactor; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java new file mode 100644 index 0000000..aa4a1b2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdvanceMstHdrBean extends BaseHeaderBean implements Serializable { + private String advanceCode; + + private String advanceCodeId; + + private String description; + + private String calendar; + + private String calendarId; + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAppTempHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAppTempHdrBean.java new file mode 100644 index 0000000..73e63df --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAppTempHdrBean.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAppTempHdrBean extends BaseHeaderBean implements Serializable { + private String templateName; + + private String obsolete; + + private String applicableToAll; + + private String ratingCode; + + String ratingId; + + String headerFlag; + + String statusOfHeader; + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getObsolete() { + return this.obsolete; + } + + public void setObsolete(String newObsolete) { + this.obsolete = newObsolete; + } + + public String getApplicableToAll() { + return this.applicableToAll; + } + + public void setApplicableToAll(String newApplicableToAll) { + this.applicableToAll = newApplicableToAll; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String getHeaderFlag() { + return this.headerFlag; + } + + public void setHeaderFlag(String newHeaderFlag) { + this.headerFlag = newHeaderFlag; + } + + public String getStatusOfHeader() { + return this.statusOfHeader; + } + + public void setStatusOfHeader(String newStatusOfHeader) { + this.statusOfHeader = newStatusOfHeader; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java new file mode 100644 index 0000000..f5bac27 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalKPADtlBean extends BaseDetailBean implements Serializable { + private String txtSrlNo; + + private String txtKpaCode; + + private String txtDescription; + + private String mandatoryFlag; + + private String txtWeightage; + + private String kpaCodeId; + + private String disabtxtSrlNo; + + private String disabtxtKpaCode; + + private String disabtxtDescription; + + private String disabmandatoryFlag; + + private String disabtxtWeightage; + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getTxtKpaCode() { + return this.txtKpaCode; + } + + public void setTxtKpaCode(String newTxtKpaCode) { + this.txtKpaCode = newTxtKpaCode; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getMandatoryFlag() { + return this.mandatoryFlag; + } + + public void setMandatoryFlag(String newMandatoryFlag) { + this.mandatoryFlag = newMandatoryFlag; + } + + public String getTxtWeightage() { + return this.txtWeightage; + } + + public void setTxtWeightage(String newTxtWeightage) { + this.txtWeightage = newTxtWeightage; + } + + public String getKpaCodeId() { + return this.kpaCodeId; + } + + public void setKpaCodeId(String newKpaCodeId) { + this.kpaCodeId = newKpaCodeId; + } + + public String getDisabtxtSrlNo() { + return this.disabtxtSrlNo; + } + + public void setDisabtxtSrlNo(String newDisabtxtSrlNo) { + this.disabtxtSrlNo = newDisabtxtSrlNo; + } + + public String getDisabtxtKpaCode() { + return this.disabtxtKpaCode; + } + + public void setDisabtxtKpaCode(String newDisabtxtKpaCode) { + this.disabtxtKpaCode = newDisabtxtKpaCode; + } + + public String getDisabtxtDescription() { + return this.disabtxtDescription; + } + + public void setDisabtxtDescription(String newDisabtxtDescription) { + this.disabtxtDescription = newDisabtxtDescription; + } + + public String getDisabmandatoryFlag() { + return this.disabmandatoryFlag; + } + + public void setDisabmandatoryFlag(String newDisabmandatoryFlag) { + this.disabmandatoryFlag = newDisabmandatoryFlag; + } + + public String getDisabtxtWeightage() { + return this.disabtxtWeightage; + } + + public void setDisabtxtWeightage(String newDisabtxtWeightage) { + this.disabtxtWeightage = newDisabtxtWeightage; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java new file mode 100644 index 0000000..6e9c61b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAppraisalKPAHdrBean extends BaseHeaderBean implements Serializable { + String description; + + String kpaGroupCode; + + private String kpaGrpId; + + private String txtAppraiserType; + + private String ratingRequired; + + private String statusOfHeader; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getKpaGroupCode() { + return this.kpaGroupCode; + } + + public void setKpaGroupCode(String newKpaGroupCode) { + this.kpaGroupCode = newKpaGroupCode; + } + + public String getKpaGrpId() { + return this.kpaGrpId; + } + + public void setKpaGrpId(String newKpaGrpId) { + this.kpaGrpId = newKpaGrpId; + } + + public String getTxtAppraiserType() { + return this.txtAppraiserType; + } + + public void setTxtAppraiserType(String newTxtAppraiserType) { + this.txtAppraiserType = newTxtAppraiserType; + } + + public String getRatingRequired() { + return this.ratingRequired; + } + + public void setRatingRequired(String newRatingRequired) { + this.ratingRequired = newRatingRequired; + } + + public String getStatusOfHeader() { + return this.statusOfHeader; + } + + public void setStatusOfHeader(String newStatusOfHeader) { + this.statusOfHeader = newStatusOfHeader; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java new file mode 100644 index 0000000..683e84f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalTemplateGoalDtlBean extends BaseDetailBean implements Serializable { + String txtSlNo; + + String txtGoalDescription; + + public String getTxtSlNo() { + return this.txtSlNo; + } + + public void setTxtSlNo(String newTxtSlNo) { + this.txtSlNo = newTxtSlNo; + } + + public String getTxtGoalDescription() { + return this.txtGoalDescription; + } + + public void setTxtGoalDescription(String newTxtGoalDescription) { + this.txtGoalDescription = newTxtGoalDescription; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java new file mode 100644 index 0000000..aaa6f58 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAppraisalTemplateHdrBean extends BaseHeaderBean implements Serializable { + String templateName; + + String obsolete; + + String applicableToAll; + + String ratingCode; + + String headerFlag = "P"; + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getObsolete() { + return this.obsolete; + } + + public void setObsolete(String newObsolete) { + this.obsolete = newObsolete; + } + + public String getApplicableToAll() { + return this.applicableToAll; + } + + public void setApplicableToAll(String newApplicableToAll) { + this.applicableToAll = newApplicableToAll; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getHeaderFlag() { + return this.headerFlag; + } + + public void setHeaderFlag(String newHeaderFlag) { + this.headerFlag = newHeaderFlag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java new file mode 100644 index 0000000..81d292b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalTemplateKpaDtlBean extends BaseDetailBean implements Serializable { + String txtKpaGroupCode; + + String txtApprKpa; + + String txtKpaId; + + String txtWeightage; + + String disabtxtKpaGroupCode; + + String disabtxtApprKpa; + + String disabtxtWeightage; + + String disabbutKPAGroupCode; + + public String getTxtKpaGroupCode() { + return this.txtKpaGroupCode; + } + + public void setTxtKpaGroupCode(String newTxtKpaGroupCode) { + this.txtKpaGroupCode = newTxtKpaGroupCode; + } + + public String getTxtApprKpa() { + return this.txtApprKpa; + } + + public void setTxtApprKpa(String newTxtApprKpa) { + this.txtApprKpa = newTxtApprKpa; + } + + public String getTxtKpaId() { + return this.txtKpaId; + } + + public void setTxtKpaId(String newTxtKpaId) { + this.txtKpaId = newTxtKpaId; + } + + public String getTxtWeightage() { + return this.txtWeightage; + } + + public void setTxtWeightage(String newTxtWeightage) { + this.txtWeightage = newTxtWeightage; + } + + public String getDisabtxtKpaGroupCode() { + return this.disabtxtKpaGroupCode; + } + + public void setDisabtxtKpaGroupCode(String newDisabtxtKpaGroupCode) { + this.disabtxtKpaGroupCode = newDisabtxtKpaGroupCode; + } + + public String getDisabtxtApprKpa() { + return this.disabtxtApprKpa; + } + + public void setDisabtxtApprKpa(String newDisabtxtApprKpa) { + this.disabtxtApprKpa = newDisabtxtApprKpa; + } + + public String getDisabtxtWeightage() { + return this.disabtxtWeightage; + } + + public void setDisabtxtWeightage(String newDisabtxtWeightage) { + this.disabtxtWeightage = newDisabtxtWeightage; + } + + public String getDisabbutKPAGroupCode() { + return this.disabbutKPAGroupCode; + } + + public void setDisabbutKPAGroupCode(String newDisabbutKPAGroupCode) { + this.disabbutKPAGroupCode = newDisabbutKPAGroupCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java new file mode 100644 index 0000000..121962d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java @@ -0,0 +1,166 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalTemplateSecDtlBean extends BaseDetailBean implements Serializable { + String txtSrlNo; + + String txtSectionCode; + + String txtAppraiserType; + + String txtTemplateRemarks; + + String txtParentSection; + + String txtSectionWeightage; + + String txtParentSecId; + + String txtRatingReqd; + + String disabtxtSrlNo; + + String disabtxtSectionCode; + + String disabbutParentSecCode; + + String disabtxtSectionWeightage; + + String disabtxtAppraiserType; + + String disabtxtTemplateRemarks; + + String disabtxtRatingReqd; + + String disabtxtParentSection; + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getTxtSectionCode() { + return this.txtSectionCode; + } + + public void setTxtSectionCode(String newTxtSectionCode) { + this.txtSectionCode = newTxtSectionCode; + } + + public String getTxtAppraiserType() { + return this.txtAppraiserType; + } + + public void setTxtAppraiserType(String newTxtAppraiserType) { + this.txtAppraiserType = newTxtAppraiserType; + } + + public String getTxtTemplateRemarks() { + return this.txtTemplateRemarks; + } + + public void setTxtTemplateRemarks(String newTxtTemplateRemarks) { + this.txtTemplateRemarks = newTxtTemplateRemarks; + } + + public String getTxtParentSection() { + return this.txtParentSection; + } + + public void setTxtParentSection(String newTxtParentSection) { + this.txtParentSection = newTxtParentSection; + } + + public String getTxtSectionWeightage() { + return this.txtSectionWeightage; + } + + public void setTxtSectionWeightage(String newTxtSectionWeightage) { + this.txtSectionWeightage = newTxtSectionWeightage; + } + + public String getTxtParentSecId() { + return this.txtParentSecId; + } + + public void setTxtParentSecId(String newTxtParentSecId) { + this.txtParentSecId = newTxtParentSecId; + } + + public String getTxtRatingReqd() { + return this.txtRatingReqd; + } + + public void setTxtRatingReqd(String newTxtRatingReqd) { + this.txtRatingReqd = newTxtRatingReqd; + } + + public String getDisabtxtSrlNo() { + return this.disabtxtSrlNo; + } + + public void setDisabtxtSrlNo(String newDisabtxtSrlNo) { + this.disabtxtSrlNo = newDisabtxtSrlNo; + } + + public String getDisabtxtSectionCode() { + return this.disabtxtSectionCode; + } + + public void setDisabtxtSectionCode(String newDisabtxtSectionCode) { + this.disabtxtSectionCode = newDisabtxtSectionCode; + } + + public String getDisabbutParentSecCode() { + return this.disabbutParentSecCode; + } + + public void setDisabbutParentSecCode(String newDisabbutParentSecCode) { + this.disabbutParentSecCode = newDisabbutParentSecCode; + } + + public String getDisabtxtSectionWeightage() { + return this.disabtxtSectionWeightage; + } + + public void setDisabtxtSectionWeightage(String newDisabtxtSectionWeightage) { + this.disabtxtSectionWeightage = newDisabtxtSectionWeightage; + } + + public String getDisabtxtAppraiserType() { + return this.disabtxtAppraiserType; + } + + public void setDisabtxtAppraiserType(String newDisabtxtAppraiserType) { + this.disabtxtAppraiserType = newDisabtxtAppraiserType; + } + + public String getDisabtxtTemplateRemarks() { + return this.disabtxtTemplateRemarks; + } + + public void setDisabtxtTemplateRemarks(String newDisabtxtTemplateRemarks) { + this.disabtxtTemplateRemarks = newDisabtxtTemplateRemarks; + } + + public String getDisabtxtRatingReqd() { + return this.disabtxtRatingReqd; + } + + public void setDisabtxtRatingReqd(String newDisabtxtRatingReqd) { + this.disabtxtRatingReqd = newDisabtxtRatingReqd; + } + + public String getDisabtxtParentSection() { + return this.disabtxtParentSection; + } + + public void setDisabtxtParentSection(String newDisabtxtParentSection) { + this.disabtxtParentSection = newDisabtxtParentSection; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java new file mode 100644 index 0000000..7baded5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java @@ -0,0 +1,216 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslEmpDtlsBean extends BaseDetailBean implements Serializable { + private String grade; + + private String designation; + + private String presLoc; + + private String dateofBirth; + + private String joiningStaffDate; + + private String joiningOfficerDate; + + private String lastPromDate; + + private String lastPay; + + private String qual; + + private String empRating1; + + private String empRating2; + + private String empRating3; + + private String incr1; + + private String incr2; + + private String incr3; + + private String finalRating; + + private String empNo; + + private String butEmpNo; + + private String aprslYear; + + private String employeeId; + + private String detailId; + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getPresLoc() { + return this.presLoc; + } + + public void setPresLoc(String newPresLoc) { + this.presLoc = newPresLoc; + } + + public String getDateofBirth() { + return this.dateofBirth; + } + + public void setDateofBirth(String newDateofBirth) { + this.dateofBirth = newDateofBirth; + } + + public String getJoiningStaffDate() { + return this.joiningStaffDate; + } + + public void setJoiningStaffDate(String newJoiningStaffDate) { + this.joiningStaffDate = newJoiningStaffDate; + } + + public String getJoiningOfficerDate() { + return this.joiningOfficerDate; + } + + public void setJoiningOfficerDate(String newJoiningOfficerDate) { + this.joiningOfficerDate = newJoiningOfficerDate; + } + + public String getLastPromDate() { + return this.lastPromDate; + } + + public void setLastPromDate(String newLastPromDate) { + this.lastPromDate = newLastPromDate; + } + + public String getLastPay() { + return this.lastPay; + } + + public void setLastPay(String newLastPay) { + this.lastPay = newLastPay; + } + + public String getQual() { + return this.qual; + } + + public void setQual(String newQual) { + this.qual = newQual; + } + + public String getEmpRating1() { + return this.empRating1; + } + + public void setEmpRating1(String newEmpRating1) { + this.empRating1 = newEmpRating1; + } + + public String getEmpRating2() { + return this.empRating2; + } + + public void setEmpRating2(String newEmpRating2) { + this.empRating2 = newEmpRating2; + } + + public String getEmpRating3() { + return this.empRating3; + } + + public void setEmpRating3(String newEmpRating3) { + this.empRating3 = newEmpRating3; + } + + public String getIncr1() { + return this.incr1; + } + + public void setIncr1(String newIncr1) { + this.incr1 = newIncr1; + } + + public String getIncr2() { + return this.incr2; + } + + public void setIncr2(String newIncr2) { + this.incr2 = newIncr2; + } + + public String getIncr3() { + return this.incr3; + } + + public void setIncr3(String newIncr3) { + this.incr3 = newIncr3; + } + + public String getFinalRating() { + return this.finalRating; + } + + public void setFinalRating(String newFinalRating) { + this.finalRating = newFinalRating; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getAprslYear() { + return this.aprslYear; + } + + public void setAprslYear(String newAprslYear) { + this.aprslYear = newAprslYear; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getDetailId() { + return this.detailId; + } + + public void setDetailId(String newDetailId) { + this.detailId = newDetailId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslEmployeeBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslEmployeeBean.java new file mode 100644 index 0000000..c1c814b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslEmployeeBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslEmployeeBean extends BaseDetailBean implements Serializable { + private String finalRatingDtl; + + private String empNoDtl; + + private String empNameDtl; + + private String aprslYearDtl; + + private String empIdDtl; + + private String detailId; + + public String getFinalRatingDtl() { + return this.finalRatingDtl; + } + + public void setFinalRatingDtl(String newFinalRatingDtl) { + this.finalRatingDtl = newFinalRatingDtl; + } + + public String getEmpNoDtl() { + return this.empNoDtl; + } + + public void setEmpNoDtl(String newEmpNoDtl) { + this.empNoDtl = newEmpNoDtl; + } + + public String getEmpIdDtl() { + return this.empIdDtl; + } + + public void setEmpIdDtl(String newEmpIdDtl) { + this.empIdDtl = newEmpIdDtl; + } + + public String getEmpNameDtl() { + return this.empNameDtl; + } + + public void setEmpNameDtl(String newEmpNameDtl) { + this.empNameDtl = newEmpNameDtl; + } + + public String getAprslYearDtl() { + return this.aprslYearDtl; + } + + public void setAprslYearDtl(String newAprslYearDtl) { + this.aprslYearDtl = newAprslYearDtl; + } + + public String getDetailId() { + return this.detailId; + } + + public void setDetailId(String newDetailId) { + this.detailId = newDetailId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java new file mode 100644 index 0000000..d2fb984 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java @@ -0,0 +1,426 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslGoalsDtlBean extends BaseDetailBean implements Serializable { + String txtSection; + + String txtParentSec; + + String txtGoalDesc; + + String txtLevelAprl0g; + + String txtLevelRating0g; + + String txtLevelAprl1g; + + String txtLevelRating1g; + + String txtLevelAprl2g; + + String txtLevelRating2g; + + String txtLevelAprl3g; + + String txtLevelRating3g; + + String txtLevelAprl4g; + + String txtLevelRating4g; + + String txtTmplGoalId; + + String txtTmplSecId; + + String txtParentSecId; + + String txtEmpAprslHdrId; + + String txtRatingDescG; + + String txtRatingToG; + + String txtRatingFromG; + + String txtSecRatingReq; + + String disabtxtLevelAprl0g; + + String disabtxtLevelRating0g; + + String disabtxtLevelAprl1g; + + String disabtxtLevelRating1g; + + String disabtxtLevelAprl2g; + + String disabtxtLevelRating2g; + + String disabtxtLevelAprl3g; + + String disabtxtLevelRating3g; + + String disabtxtLevelAprl4g; + + String disabtxtLevelRating4g; + + String disabbutRatingG0LOV; + + String disabbutRatingG1LOV; + + String disabbutRatingG2LOV; + + String disabbutRatingG3LOV; + + String disabbutRatingG4LOV; + + String txtSecAprslType; + + private String txtLevelAprl5g; + + private String disabtxtLevelAprl5g; + + private String txtLevelRating5g; + + private String disabtxtLevelRating5g; + + private String disabbutRatingG5LOV; + + public String getTxtSection() { + return this.txtSection; + } + + public void setTxtSection(String newTxtSection) { + this.txtSection = newTxtSection; + } + + public String getTxtParentSec() { + return this.txtParentSec; + } + + public void setTxtParentSec(String newTxtParentSec) { + this.txtParentSec = newTxtParentSec; + } + + public String getTxtGoalDesc() { + return this.txtGoalDesc; + } + + public void setTxtGoalDesc(String newTxtGoalDesc) { + this.txtGoalDesc = newTxtGoalDesc; + } + + public String getTxtLevelAprl0g() { + return this.txtLevelAprl0g; + } + + public void setTxtLevelAprl0g(String newTxtLevelAprl0g) { + this.txtLevelAprl0g = newTxtLevelAprl0g; + } + + public String getTxtLevelRating0g() { + return this.txtLevelRating0g; + } + + public void setTxtLevelRating0g(String newTxtLevelRating0g) { + this.txtLevelRating0g = newTxtLevelRating0g; + } + + public String getTxtLevelAprl1g() { + return this.txtLevelAprl1g; + } + + public void setTxtLevelAprl1g(String newTxtLevelAprl1g) { + this.txtLevelAprl1g = newTxtLevelAprl1g; + } + + public String getTxtLevelRating1g() { + return this.txtLevelRating1g; + } + + public void setTxtLevelRating1g(String newTxtLevelRating1g) { + this.txtLevelRating1g = newTxtLevelRating1g; + } + + public String getTxtLevelAprl2g() { + return this.txtLevelAprl2g; + } + + public void setTxtLevelAprl2g(String newTxtLevelAprl2g) { + this.txtLevelAprl2g = newTxtLevelAprl2g; + } + + public String getTxtLevelRating2g() { + return this.txtLevelRating2g; + } + + public void setTxtLevelRating2g(String newTxtLevelRating2g) { + this.txtLevelRating2g = newTxtLevelRating2g; + } + + public String getTxtLevelAprl3g() { + return this.txtLevelAprl3g; + } + + public void setTxtLevelAprl3g(String newTxtLevelAprl3g) { + this.txtLevelAprl3g = newTxtLevelAprl3g; + } + + public String getTxtLevelRating3g() { + return this.txtLevelRating3g; + } + + public void setTxtLevelRating3g(String newTxtLevelRating3g) { + this.txtLevelRating3g = newTxtLevelRating3g; + } + + public String getTxtLevelAprl4g() { + return this.txtLevelAprl4g; + } + + public void setTxtLevelAprl4g(String newTxtLevelAprl4g) { + this.txtLevelAprl4g = newTxtLevelAprl4g; + } + + public String getTxtLevelRating4g() { + return this.txtLevelRating4g; + } + + public void setTxtLevelRating4g(String newTxtLevelRating4g) { + this.txtLevelRating4g = newTxtLevelRating4g; + } + + public String getTxtTmplGoalId() { + return this.txtTmplGoalId; + } + + public void setTxtTmplGoalId(String newTxtTmplGoalId) { + this.txtTmplGoalId = newTxtTmplGoalId; + } + + public String getTxtTmplSecId() { + return this.txtTmplSecId; + } + + public void setTxtTmplSecId(String newTxtTmplSecId) { + this.txtTmplSecId = newTxtTmplSecId; + } + + public String getTxtParentSecId() { + return this.txtParentSecId; + } + + public void setTxtParentSecId(String newTxtParentSecId) { + this.txtParentSecId = newTxtParentSecId; + } + + public String getTxtEmpAprslHdrId() { + return this.txtEmpAprslHdrId; + } + + public void setTxtEmpAprslHdrId(String newTxtEmpAprslHdrId) { + this.txtEmpAprslHdrId = newTxtEmpAprslHdrId; + } + + public String getTxtRatingDescG() { + return this.txtRatingDescG; + } + + public void setTxtRatingDescG(String newTxtRatingDescG) { + this.txtRatingDescG = newTxtRatingDescG; + } + + public String getTxtRatingToG() { + return this.txtRatingToG; + } + + public void setTxtRatingToG(String newTxtRatingToG) { + this.txtRatingToG = newTxtRatingToG; + } + + public String getTxtRatingFromG() { + return this.txtRatingFromG; + } + + public void setTxtRatingFromG(String newTxtRatingFromG) { + this.txtRatingFromG = newTxtRatingFromG; + } + + public String getTxtSecRatingReq() { + return this.txtSecRatingReq; + } + + public void setTxtSecRatingReq(String newTxtSecRatingReq) { + this.txtSecRatingReq = newTxtSecRatingReq; + } + + public String getDisabtxtLevelAprl0g() { + return this.disabtxtLevelAprl0g; + } + + public void setDisabtxtLevelAprl0g(String newDisabtxtLevelAprl0g) { + this.disabtxtLevelAprl0g = newDisabtxtLevelAprl0g; + } + + public String getDisabtxtLevelRating0g() { + return this.disabtxtLevelRating0g; + } + + public void setDisabtxtLevelRating0g(String newDisabtxtLevelRating0g) { + this.disabtxtLevelRating0g = newDisabtxtLevelRating0g; + } + + public String getDisabtxtLevelAprl1g() { + return this.disabtxtLevelAprl1g; + } + + public void setDisabtxtLevelAprl1g(String newDisabtxtLevelAprl1g) { + this.disabtxtLevelAprl1g = newDisabtxtLevelAprl1g; + } + + public String getDisabtxtLevelRating1g() { + return this.disabtxtLevelRating1g; + } + + public void setDisabtxtLevelRating1g(String newDisabtxtLevelRating1g) { + this.disabtxtLevelRating1g = newDisabtxtLevelRating1g; + } + + public String getDisabtxtLevelAprl2g() { + return this.disabtxtLevelAprl2g; + } + + public void setDisabtxtLevelAprl2g(String newDisabtxtLevelAprl2g) { + this.disabtxtLevelAprl2g = newDisabtxtLevelAprl2g; + } + + public String getDisabtxtLevelRating2g() { + return this.disabtxtLevelRating2g; + } + + public void setDisabtxtLevelRating2g(String newDisabtxtLevelRating2g) { + this.disabtxtLevelRating2g = newDisabtxtLevelRating2g; + } + + public String getDisabtxtLevelAprl3g() { + return this.disabtxtLevelAprl3g; + } + + public void setDisabtxtLevelAprl3g(String newDisabtxtLevelAprl3g) { + this.disabtxtLevelAprl3g = newDisabtxtLevelAprl3g; + } + + public String getDisabtxtLevelRating3g() { + return this.disabtxtLevelRating3g; + } + + public void setDisabtxtLevelRating3g(String newDisabtxtLevelRating3g) { + this.disabtxtLevelRating3g = newDisabtxtLevelRating3g; + } + + public String getDisabtxtLevelAprl4g() { + return this.disabtxtLevelAprl4g; + } + + public void setDisabtxtLevelAprl4g(String newDisabtxtLevelAprl4g) { + this.disabtxtLevelAprl4g = newDisabtxtLevelAprl4g; + } + + public String getDisabtxtLevelRating4g() { + return this.disabtxtLevelRating4g; + } + + public void setDisabtxtLevelRating4g(String newDisabtxtLevelRating4g) { + this.disabtxtLevelRating4g = newDisabtxtLevelRating4g; + } + + public String getDisabbutRatingG0LOV() { + return this.disabbutRatingG0LOV; + } + + public void setDisabbutRatingG0LOV(String newDisabbutRatingG0LOV) { + this.disabbutRatingG0LOV = newDisabbutRatingG0LOV; + } + + public String getDisabbutRatingG1LOV() { + return this.disabbutRatingG1LOV; + } + + public void setDisabbutRatingG1LOV(String newDisabbutRatingG1LOV) { + this.disabbutRatingG1LOV = newDisabbutRatingG1LOV; + } + + public String getDisabbutRatingG2LOV() { + return this.disabbutRatingG2LOV; + } + + public void setDisabbutRatingG2LOV(String newDisabbutRatingG2LOV) { + this.disabbutRatingG2LOV = newDisabbutRatingG2LOV; + } + + public String getDisabbutRatingG3LOV() { + return this.disabbutRatingG3LOV; + } + + public void setDisabbutRatingG3LOV(String newDisabbutRatingG3LOV) { + this.disabbutRatingG3LOV = newDisabbutRatingG3LOV; + } + + public String getDisabbutRatingG4LOV() { + return this.disabbutRatingG4LOV; + } + + public void setDisabbutRatingG4LOV(String newDisabbutRatingG4LOV) { + this.disabbutRatingG4LOV = newDisabbutRatingG4LOV; + } + + public String getTxtSecAprslType() { + return this.txtSecAprslType; + } + + public void setTxtSecAprslType(String newTxtSecAprslType) { + this.txtSecAprslType = newTxtSecAprslType; + } + + public String getTxtLevelAprl5g() { + return this.txtLevelAprl5g; + } + + public void setTxtLevelAprl5g(String newTxtLevelAprl5g) { + this.txtLevelAprl5g = newTxtLevelAprl5g; + } + + public String getDisabtxtLevelAprl5g() { + return this.disabtxtLevelAprl5g; + } + + public void setDisabtxtLevelAprl5g(String newDisabtxtLevelAprl5g) { + this.disabtxtLevelAprl5g = newDisabtxtLevelAprl5g; + } + + public String getTxtLevelRating5g() { + return this.txtLevelRating5g; + } + + public void setTxtLevelRating5g(String newTxtLevelRating5g) { + this.txtLevelRating5g = newTxtLevelRating5g; + } + + public String getDisabtxtLevelRating5g() { + return this.disabtxtLevelRating5g; + } + + public void setDisabtxtLevelRating5g(String newDisabtxtLevelRating5g) { + this.disabtxtLevelRating5g = newDisabtxtLevelRating5g; + } + + public String getDisabbutRatingG5LOV() { + return this.disabbutRatingG5LOV; + } + + public void setDisabbutRatingG5LOV(String newDisabbutRatingG5LOV) { + this.disabbutRatingG5LOV = newDisabbutRatingG5LOV; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslHdrBean.java new file mode 100644 index 0000000..e96a4b2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslHdrBean.java @@ -0,0 +1,256 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslHdrBean extends BaseHeaderBean implements Serializable { + String empName; + + String aprslLevel; + + String aprslPeriod; + + String stOrderNo; + + String finalRating; + + String fromDate; + + String toDate; + + String empNo; + + String empId; + + String tmplHdrId; + + String spcTmplId; + + String startOrderId; + + String rating0; + + String rating1; + + String rating2; + + String rating3; + + String rating4; + + String calFlag = "C"; + + String buttonName; + + String appFlag; + + String doneFlag; + + String hidDoneFlag; + + String approvalFlag; + + private String rating5; + + String aprslYear; + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getAprslLevel() { + return this.aprslLevel; + } + + public void setAprslLevel(String newAprslLevel) { + this.aprslLevel = newAprslLevel; + } + + public String getAprslPeriod() { + return this.aprslPeriod; + } + + public void setAprslPeriod(String newAprslPeriod) { + this.aprslPeriod = newAprslPeriod; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getFinalRating() { + return this.finalRating; + } + + public void setFinalRating(String newFinalRating) { + this.finalRating = newFinalRating; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getTmplHdrId() { + return this.tmplHdrId; + } + + public void setTmplHdrId(String newTmplHdrId) { + this.tmplHdrId = newTmplHdrId; + } + + public String getSpcTmplId() { + return this.spcTmplId; + } + + public void setSpcTmplId(String newSpcTmplId) { + this.spcTmplId = newSpcTmplId; + } + + public String getStartOrderId() { + return this.startOrderId; + } + + public void setStartOrderId(String newStartOrderId) { + this.startOrderId = newStartOrderId; + } + + public String getRating0() { + return this.rating0; + } + + public void setRating0(String newRating0) { + this.rating0 = newRating0; + } + + public String getRating1() { + return this.rating1; + } + + public void setRating1(String newRating1) { + this.rating1 = newRating1; + } + + public String getRating2() { + return this.rating2; + } + + public void setRating2(String newRating2) { + this.rating2 = newRating2; + } + + public String getRating3() { + return this.rating3; + } + + public void setRating3(String newRating3) { + this.rating3 = newRating3; + } + + public String getRating4() { + return this.rating4; + } + + public void setRating4(String newRating4) { + this.rating4 = newRating4; + } + + public String getCalFlag() { + return this.calFlag; + } + + public void setCalFlag(String newCalFlag) { + this.calFlag = newCalFlag; + } + + public String getButtonName() { + return this.buttonName; + } + + public void setButtonName(String newButtonName) { + this.buttonName = newButtonName; + } + + public String getAppFlag() { + return this.appFlag; + } + + public void setAppFlag(String newAppFlag) { + this.appFlag = newAppFlag; + } + + public String getDoneFlag() { + return this.doneFlag; + } + + public void setDoneFlag(String newDoneFlag) { + this.doneFlag = newDoneFlag; + } + + public String getHidDoneFlag() { + return this.hidDoneFlag; + } + + public void setHidDoneFlag(String newHidDoneFlag) { + this.hidDoneFlag = newHidDoneFlag; + } + + public String getApprovalFlag() { + return this.approvalFlag; + } + + public void setApprovalFlag(String newApprovalFlag) { + this.approvalFlag = newApprovalFlag; + } + + public String getRating5() { + return this.rating5; + } + + public void setRating5(String newRating5) { + this.rating5 = newRating5; + } + + public String getAprslYear() { + return this.aprslYear; + } + + public void setAprslYear(String newAprslYear) { + this.aprslYear = newAprslYear; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslKPADtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslKPADtlBean.java new file mode 100644 index 0000000..0a31636 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslKPADtlBean.java @@ -0,0 +1,406 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslKPADtlBean extends BaseDetailBean implements Serializable { + String txtKPACode; + + String txtKPADesc; + + String txtLevelAprl0; + + String txtLevelRating0; + + String txtLevelAprl1; + + String txtLevelRating1; + + String txtLevelAprl2; + + String txtLevelRating2; + + String txtLevelAprl3; + + String txtLevelRating3; + + String txtLevelAprl4; + + String txtLevelRating4; + + String txtTmplKPADtlId; + + String txtEmpAprsKPAlHdrId; + + String txtRatingFrom; + + String txtRatingTo; + + String txtRatingDesc; + + String txtKPADtlId; + + String txtKpaRatingReq; + + String disabtxtLevelAprl0; + + String disabtxtLevelRating0; + + String disabtxtLevelAprl1; + + String disabtxtLevelRating1; + + String disabtxtLevelAprl2; + + String disabtxtLevelRating2; + + String disabtxtLevelAprl3; + + String disabtxtLevelRating3; + + String disabtxtLevelAprl4; + + String disabtxtLevelRating4; + + String disabbutRatingK0LOV; + + String disabbutRatingK1LOV; + + String disabbutRatingK2LOV; + + String disabbutRatingK3LOV; + + String disabbutRatingK4LOV; + + String txtKpaAprslType; + + private String txtLevelAprl5; + + private String txtLevelRating5; + + private String disabtxtLevelRating5; + + private String disabtxtLevelAprl5; + + private String disabbutRatingK5LOV; + + public String getTxtKPACode() { + return this.txtKPACode; + } + + public void setTxtKPACode(String newTxtKPACode) { + this.txtKPACode = newTxtKPACode; + } + + public String getTxtKPADesc() { + return this.txtKPADesc; + } + + public void setTxtKPADesc(String newTxtKPADesc) { + this.txtKPADesc = newTxtKPADesc; + } + + public String getTxtLevelAprl0() { + return this.txtLevelAprl0; + } + + public void setTxtLevelAprl0(String newTxtLevelAprl0) { + this.txtLevelAprl0 = newTxtLevelAprl0; + } + + public String getTxtLevelRating0() { + return this.txtLevelRating0; + } + + public void setTxtLevelRating0(String newTxtLevelRating0) { + this.txtLevelRating0 = newTxtLevelRating0; + } + + public String getTxtLevelAprl1() { + return this.txtLevelAprl1; + } + + public void setTxtLevelAprl1(String newTxtLevelAprl1) { + this.txtLevelAprl1 = newTxtLevelAprl1; + } + + public String getTxtLevelRating1() { + return this.txtLevelRating1; + } + + public void setTxtLevelRating1(String newTxtLevelRating1) { + this.txtLevelRating1 = newTxtLevelRating1; + } + + public String getTxtLevelAprl2() { + return this.txtLevelAprl2; + } + + public void setTxtLevelAprl2(String newTxtLevelAprl2) { + this.txtLevelAprl2 = newTxtLevelAprl2; + } + + public String getTxtLevelRating2() { + return this.txtLevelRating2; + } + + public void setTxtLevelRating2(String newTxtLevelRating2) { + this.txtLevelRating2 = newTxtLevelRating2; + } + + public String getTxtLevelAprl3() { + return this.txtLevelAprl3; + } + + public void setTxtLevelAprl3(String newTxtLevelAprl3) { + this.txtLevelAprl3 = newTxtLevelAprl3; + } + + public String getTxtLevelRating3() { + return this.txtLevelRating3; + } + + public void setTxtLevelRating3(String newTxtLevelRating3) { + this.txtLevelRating3 = newTxtLevelRating3; + } + + public String getTxtLevelAprl4() { + return this.txtLevelAprl4; + } + + public void setTxtLevelAprl4(String newTxtLevelAprl4) { + this.txtLevelAprl4 = newTxtLevelAprl4; + } + + public String getTxtLevelRating4() { + return this.txtLevelRating4; + } + + public void setTxtLevelRating4(String newTxtLevelRating4) { + this.txtLevelRating4 = newTxtLevelRating4; + } + + public String getTxtTmplKPADtlId() { + return this.txtTmplKPADtlId; + } + + public void setTxtTmplKPADtlId(String newTxtTmplKPADtlId) { + this.txtTmplKPADtlId = newTxtTmplKPADtlId; + } + + public String getTxtEmpAprsKPAlHdrId() { + return this.txtEmpAprsKPAlHdrId; + } + + public void setTxtEmpAprsKPAlHdrId(String newTxtEmpAprsKPAlHdrId) { + this.txtEmpAprsKPAlHdrId = newTxtEmpAprsKPAlHdrId; + } + + public String getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String getTxtRatingDesc() { + return this.txtRatingDesc; + } + + public void setTxtRatingDesc(String newTxtRatingDesc) { + this.txtRatingDesc = newTxtRatingDesc; + } + + public String getTxtKPADtlId() { + return this.txtKPADtlId; + } + + public void setTxtKPADtlId(String newTxtKPADtlId) { + this.txtKPADtlId = newTxtKPADtlId; + } + + public String getTxtKpaRatingReq() { + return this.txtKpaRatingReq; + } + + public void setTxtKpaRatingReq(String newTxtKpaRatingReq) { + this.txtKpaRatingReq = newTxtKpaRatingReq; + } + + public String getDisabtxtLevelAprl0() { + return this.disabtxtLevelAprl0; + } + + public void setDisabtxtLevelAprl0(String newDisabtxtLevelAprl0) { + this.disabtxtLevelAprl0 = newDisabtxtLevelAprl0; + } + + public String getDisabtxtLevelRating0() { + return this.disabtxtLevelRating0; + } + + public void setDisabtxtLevelRating0(String newDisabtxtLevelRating0) { + this.disabtxtLevelRating0 = newDisabtxtLevelRating0; + } + + public String getDisabtxtLevelAprl1() { + return this.disabtxtLevelAprl1; + } + + public void setDisabtxtLevelAprl1(String newDisabtxtLevelAprl1) { + this.disabtxtLevelAprl1 = newDisabtxtLevelAprl1; + } + + public String getDisabtxtLevelRating1() { + return this.disabtxtLevelRating1; + } + + public void setDisabtxtLevelRating1(String newDisabtxtLevelRating1) { + this.disabtxtLevelRating1 = newDisabtxtLevelRating1; + } + + public String getDisabtxtLevelAprl2() { + return this.disabtxtLevelAprl2; + } + + public void setDisabtxtLevelAprl2(String newDisabtxtLevelAprl2) { + this.disabtxtLevelAprl2 = newDisabtxtLevelAprl2; + } + + public String getDisabtxtLevelRating2() { + return this.disabtxtLevelRating2; + } + + public void setDisabtxtLevelRating2(String newDisabtxtLevelRating2) { + this.disabtxtLevelRating2 = newDisabtxtLevelRating2; + } + + public String getDisabtxtLevelAprl3() { + return this.disabtxtLevelAprl3; + } + + public void setDisabtxtLevelAprl3(String newDisabtxtLevelAprl3) { + this.disabtxtLevelAprl3 = newDisabtxtLevelAprl3; + } + + public String getDisabtxtLevelRating3() { + return this.disabtxtLevelRating3; + } + + public void setDisabtxtLevelRating3(String newDisabtxtLevelRating3) { + this.disabtxtLevelRating3 = newDisabtxtLevelRating3; + } + + public String getDisabtxtLevelAprl4() { + return this.disabtxtLevelAprl4; + } + + public void setDisabtxtLevelAprl4(String newDisabtxtLevelAprl4) { + this.disabtxtLevelAprl4 = newDisabtxtLevelAprl4; + } + + public String getDisabtxtLevelRating4() { + return this.disabtxtLevelRating4; + } + + public void setDisabtxtLevelRating4(String newDisabtxtLevelRating4) { + this.disabtxtLevelRating4 = newDisabtxtLevelRating4; + } + + public String getDisabbutRatingK0LOV() { + return this.disabbutRatingK0LOV; + } + + public void setDisabbutRatingK0LOV(String newDisabbutRatingK0LOV) { + this.disabbutRatingK0LOV = newDisabbutRatingK0LOV; + } + + public String getDisabbutRatingK1LOV() { + return this.disabbutRatingK1LOV; + } + + public void setDisabbutRatingK1LOV(String newDisabbutRatingK1LOV) { + this.disabbutRatingK1LOV = newDisabbutRatingK1LOV; + } + + public String getDisabbutRatingK2LOV() { + return this.disabbutRatingK2LOV; + } + + public void setDisabbutRatingK2LOV(String newDisabbutRatingK2LOV) { + this.disabbutRatingK2LOV = newDisabbutRatingK2LOV; + } + + public String getDisabbutRatingK3LOV() { + return this.disabbutRatingK3LOV; + } + + public void setDisabbutRatingK3LOV(String newDisabbutRatingK3LOV) { + this.disabbutRatingK3LOV = newDisabbutRatingK3LOV; + } + + public String getDisabbutRatingK4LOV() { + return this.disabbutRatingK4LOV; + } + + public void setDisabbutRatingK4LOV(String newDisabbutRatingK4LOV) { + this.disabbutRatingK4LOV = newDisabbutRatingK4LOV; + } + + public String getTxtKpaAprslType() { + return this.txtKpaAprslType; + } + + public void setTxtKpaAprslType(String newTxtKpaAprslType) { + this.txtKpaAprslType = newTxtKpaAprslType; + } + + public String getTxtLevelAprl5() { + return this.txtLevelAprl5; + } + + public void setTxtLevelAprl5(String newTxtLevelAprl5) { + this.txtLevelAprl5 = newTxtLevelAprl5; + } + + public String getTxtLevelRating5() { + return this.txtLevelRating5; + } + + public void setTxtLevelRating5(String newTxtLevelRating5) { + this.txtLevelRating5 = newTxtLevelRating5; + } + + public String getDisabtxtLevelRating5() { + return this.disabtxtLevelRating5; + } + + public void setDisabtxtLevelRating5(String newDisabtxtLevelRating5) { + this.disabtxtLevelRating5 = newDisabtxtLevelRating5; + } + + public String getDisabtxtLevelAprl5() { + return this.disabtxtLevelAprl5; + } + + public void setDisabtxtLevelAprl5(String newDisabtxtLevelAprl5) { + this.disabtxtLevelAprl5 = newDisabtxtLevelAprl5; + } + + public String getDisabbutRatingK5LOV() { + return this.disabbutRatingK5LOV; + } + + public void setDisabbutRatingK5LOV(String newDisabbutRatingK5LOV) { + this.disabbutRatingK5LOV = newDisabbutRatingK5LOV; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java new file mode 100644 index 0000000..d16a12c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslSpcTmplDtlBean extends BaseDetailBean implements Serializable { + String txtKpaGrCode; + + String txtKpaGrDesc; + + String txtKpaCode; + + String txtKpaDesc; + + String txtFlag; + + String txtKPAId; + + String txtKPAGrId; + + public String getTxtKpaGrCode() { + return this.txtKpaGrCode; + } + + public void setTxtKpaGrCode(String newTxtKpaGrCode) { + this.txtKpaGrCode = newTxtKpaGrCode; + } + + public String getTxtKpaGrDesc() { + return this.txtKpaGrDesc; + } + + public void setTxtKpaGrDesc(String newTxtKpaGrDesc) { + this.txtKpaGrDesc = newTxtKpaGrDesc; + } + + public String getTxtKpaCode() { + return this.txtKpaCode; + } + + public void setTxtKpaCode(String newTxtKpaCode) { + this.txtKpaCode = newTxtKpaCode; + } + + public String getTxtKpaDesc() { + return this.txtKpaDesc; + } + + public void setTxtKpaDesc(String newTxtKpaDesc) { + this.txtKpaDesc = newTxtKpaDesc; + } + + public String getTxtFlag() { + return this.txtFlag; + } + + public void setTxtFlag(String newTxtFlag) { + this.txtFlag = newTxtFlag; + } + + public String getTxtKPAId() { + return this.txtKPAId; + } + + public void setTxtKPAId(String newTxtKPAId) { + this.txtKPAId = newTxtKPAId; + } + + public String getTxtKPAGrId() { + return this.txtKPAGrId; + } + + public void setTxtKPAGrId(String newTxtKPAGrId) { + this.txtKPAGrId = newTxtKPAGrId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java new file mode 100644 index 0000000..bd220d3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslSpcTmplEmpEligDtlBean extends BaseDetailBean implements Serializable { + String txtEmpName; + + String txtEmpNo; + + String txtEmpId; + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java new file mode 100644 index 0000000..13c09ad --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java @@ -0,0 +1,136 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslSpcTmplGoalDtlBean extends BaseDetailBean implements Serializable { + String txtSection; + + String txtGoalsDesc; + + String txtMesr; + + String txtParentSection; + + String txtWtg; + + String txtSectionId; + + private String txtSrlNo; + + private String disabtxtSrlNo; + + private String disabtxtSection; + + private String disabtxtParentSection; + + private String disabtxtGoalsDesc; + + private String disabtxtMesr; + + private String disabtxtWtg; + + public String getTxtSection() { + return this.txtSection; + } + + public void setTxtSection(String newTxtSection) { + this.txtSection = newTxtSection; + } + + public String getTxtGoalsDesc() { + return this.txtGoalsDesc; + } + + public void setTxtGoalsDesc(String newTxtGoalsDesc) { + this.txtGoalsDesc = newTxtGoalsDesc; + } + + public String getTxtMesr() { + return this.txtMesr; + } + + public void setTxtMesr(String newTxtMesr) { + this.txtMesr = newTxtMesr; + } + + public String getTxtParentSection() { + return this.txtParentSection; + } + + public void setTxtParentSection(String newTxtParentSection) { + this.txtParentSection = newTxtParentSection; + } + + public String getTxtWtg() { + return this.txtWtg; + } + + public void setTxtWtg(String newTxtWtg) { + this.txtWtg = newTxtWtg; + } + + public String getTxtSectionId() { + return this.txtSectionId; + } + + public void setTxtSectionId(String newTxtSectionId) { + this.txtSectionId = newTxtSectionId; + } + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getDisabtxtSrlNo() { + return this.disabtxtSrlNo; + } + + public void setDisabtxtSrlNo(String newDisabtxtSrlNo) { + this.disabtxtSrlNo = newDisabtxtSrlNo; + } + + public String getDisabtxtSection() { + return this.disabtxtSection; + } + + public void setDisabtxtSection(String newDisabtxtSection) { + this.disabtxtSection = newDisabtxtSection; + } + + public String getDisabtxtParentSection() { + return this.disabtxtParentSection; + } + + public void setDisabtxtParentSection(String newDisabtxtParentSection) { + this.disabtxtParentSection = newDisabtxtParentSection; + } + + public String getDisabtxtGoalsDesc() { + return this.disabtxtGoalsDesc; + } + + public void setDisabtxtGoalsDesc(String newDisabtxtGoalsDesc) { + this.disabtxtGoalsDesc = newDisabtxtGoalsDesc; + } + + public String getDisabtxtMesr() { + return this.disabtxtMesr; + } + + public void setDisabtxtMesr(String newDisabtxtMesr) { + this.disabtxtMesr = newDisabtxtMesr; + } + + public String getDisabtxtWtg() { + return this.disabtxtWtg; + } + + public void setDisabtxtWtg(String newDisabtxtWtg) { + this.disabtxtWtg = newDisabtxtWtg; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java new file mode 100644 index 0000000..4e5fba3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java @@ -0,0 +1,276 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslSpcTmplHdrBean extends BaseHeaderBean implements Serializable { + String splTemplateName; + + String templateName; + + String siteCode; + + String deptCode; + + String empNo; + + String stOrderNo; + + String fromDate; + + String toDate; + + String selectAll; + + String classHdr; + + String classHdrDesc; + + String classDtl; + + String classDtlDesc; + + String stOrderId; + + String empId; + + String deptId; + + String siteId; + + String classDtlId; + + String classHdrId; + + String templateNameId; + + String siteDesc; + + String empName; + + String deptDesc; + + private String disabsplTemplateName; + + String employeeId; + + String employeeName; + + String empLoyeeNumber; + + public String getSplTemplateName() { + return this.splTemplateName; + } + + public void setSplTemplateName(String newSplTemplateName) { + this.splTemplateName = newSplTemplateName; + } + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getDeptCode() { + return this.deptCode; + } + + public void setDeptCode(String newDeptCode) { + this.deptCode = newDeptCode; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getClassHdr() { + return this.classHdr; + } + + public void setClassHdr(String newClassHdr) { + this.classHdr = newClassHdr; + } + + public String getClassHdrDesc() { + return this.classHdrDesc; + } + + public void setClassHdrDesc(String newClassHdrDesc) { + this.classHdrDesc = newClassHdrDesc; + } + + public String getClassDtl() { + return this.classDtl; + } + + public void setClassDtl(String newClassDtl) { + this.classDtl = newClassDtl; + } + + public String getClassDtlDesc() { + return this.classDtlDesc; + } + + public void setClassDtlDesc(String newClassDtlDesc) { + this.classDtlDesc = newClassDtlDesc; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getDeptId() { + return this.deptId; + } + + public void setDeptId(String newDeptId) { + this.deptId = newDeptId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getClassDtlId() { + return this.classDtlId; + } + + public void setClassDtlId(String newClassDtlId) { + this.classDtlId = newClassDtlId; + } + + public String getClassHdrId() { + return this.classHdrId; + } + + public void setClassHdrId(String newClassHdrId) { + this.classHdrId = newClassHdrId; + } + + public String getTemplateNameId() { + return this.templateNameId; + } + + public void setTemplateNameId(String newTemplateNameId) { + this.templateNameId = newTemplateNameId; + } + + public String getSiteDesc() { + return this.siteDesc; + } + + public void setSiteDesc(String newSiteDesc) { + this.siteDesc = newSiteDesc; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDeptDesc() { + return this.deptDesc; + } + + public void setDeptDesc(String newDeptDesc) { + this.deptDesc = newDeptDesc; + } + + public String getDisabsplTemplateName() { + return this.disabsplTemplateName; + } + + public void setDisabsplTemplateName(String newDisabsplTemplateName) { + this.disabsplTemplateName = newDisabsplTemplateName; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmpLoyeeNumber() { + return this.empLoyeeNumber; + } + + public void setEmpLoyeeNumber(String newEmpLoyeeNumber) { + this.empLoyeeNumber = newEmpLoyeeNumber; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java new file mode 100644 index 0000000..58a62bb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslStartOrderHdrBean extends BaseHeaderBean implements Serializable { + String stOrderNo; + + String periodStDate; + + String periodEndDate; + + String aprslStDate; + + String aprslEndDate; + + String stOrderId; + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getPeriodStDate() { + return this.periodStDate; + } + + public void setPeriodStDate(String newPeriodStDate) { + this.periodStDate = newPeriodStDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getAprslStDate() { + return this.aprslStDate; + } + + public void setAprslStDate(String newAprslStDate) { + this.aprslStDate = newAprslStDate; + } + + public String getAprslEndDate() { + return this.aprslEndDate; + } + + public void setAprslEndDate(String newAprslEndDate) { + this.aprslEndDate = newAprslEndDate; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java new file mode 100644 index 0000000..1587aab --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslStartRuleDtlBean extends BaseDetailBean implements Serializable { + private String txtEmplNo; + + private String txtEmplName; + + private String dtlEmplNo; + + public String getTxtEmplNo() { + return this.txtEmplNo; + } + + public void setTxtEmplNo(String newTxtEmplNo) { + this.txtEmplNo = newTxtEmplNo; + } + + public String getTxtEmplName() { + return this.txtEmplName; + } + + public void setTxtEmplName(String newTxtEmplName) { + this.txtEmplName = newTxtEmplName; + } + + public String getDtlEmplNo() { + return this.dtlEmplNo; + } + + public void setDtlEmplNo(String newDtlEmplNo) { + this.dtlEmplNo = newDtlEmplNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java new file mode 100644 index 0000000..9f89173 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java @@ -0,0 +1,176 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslStartRuleHdrBean extends BaseHeaderBean implements Serializable { + private String txtAprslStOrdNo; + + private String hdnAprslStOrdNo; + + private String txtEmpNum; + + private String txtEmpName; + + private String hdnEmpNum; + + private String txtWrkGrpCode; + + private String hdnWrkGrpCode; + + private String txtWrkGrpDesc; + + private String txtSiteCode; + + private String hdnSiteCode; + + private String txtSiteDesc; + + private String txtClsHdr; + + private String hdnClsHdrID; + + private String txtClsHdrDesc; + + private String txtClsDtl; + + private String hdnClsDtlID; + + private String txtClsDtlDesc; + + public String getTxtAprslStOrdNo() { + return this.txtAprslStOrdNo; + } + + public void setTxtAprslStOrdNo(String newTxtAprslStOrdNo) { + this.txtAprslStOrdNo = newTxtAprslStOrdNo; + } + + public String getHdnAprslStOrdNo() { + return this.hdnAprslStOrdNo; + } + + public void setHdnAprslStOrdNo(String newHdnAprslStOrdNo) { + this.hdnAprslStOrdNo = newHdnAprslStOrdNo; + } + + public String getTxtEmpNum() { + return this.txtEmpNum; + } + + public void setTxtEmpNum(String newTxtEmpNum) { + this.txtEmpNum = newTxtEmpNum; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getHdnEmpNum() { + return this.hdnEmpNum; + } + + public void setHdnEmpNum(String newHdnEmpNum) { + this.hdnEmpNum = newHdnEmpNum; + } + + public String getTxtWrkGrpCode() { + return this.txtWrkGrpCode; + } + + public void setTxtWrkGrpCode(String newTxtWrkGrpCode) { + this.txtWrkGrpCode = newTxtWrkGrpCode; + } + + public String getHdnWrkGrpCode() { + return this.hdnWrkGrpCode; + } + + public void setHdnWrkGrpCode(String newHdnWrkGrpCode) { + this.hdnWrkGrpCode = newHdnWrkGrpCode; + } + + public String getTxtWrkGrpDesc() { + return this.txtWrkGrpDesc; + } + + public void setTxtWrkGrpDesc(String newTxtWrkGrpDesc) { + this.txtWrkGrpDesc = newTxtWrkGrpDesc; + } + + public String getTxtSiteCode() { + return this.txtSiteCode; + } + + public void setTxtSiteCode(String newTxtSiteCode) { + this.txtSiteCode = newTxtSiteCode; + } + + public String getHdnSiteCode() { + return this.hdnSiteCode; + } + + public void setHdnSiteCode(String newHdnSiteCode) { + this.hdnSiteCode = newHdnSiteCode; + } + + public String getTxtSiteDesc() { + return this.txtSiteDesc; + } + + public void setTxtSiteDesc(String newTxtSiteDesc) { + this.txtSiteDesc = newTxtSiteDesc; + } + + public String getTxtClsHdr() { + return this.txtClsHdr; + } + + public void setTxtClsHdr(String newTxtClsHdr) { + this.txtClsHdr = newTxtClsHdr; + } + + public String getHdnClsHdrID() { + return this.hdnClsHdrID; + } + + public void setHdnClsHdrID(String newHdnClsHdrID) { + this.hdnClsHdrID = newHdnClsHdrID; + } + + public String getTxtClsHdrDesc() { + return this.txtClsHdrDesc; + } + + public void setTxtClsHdrDesc(String newTxtClsHdrDesc) { + this.txtClsHdrDesc = newTxtClsHdrDesc; + } + + public String getTxtClsDtl() { + return this.txtClsDtl; + } + + public void setTxtClsDtl(String newTxtClsDtl) { + this.txtClsDtl = newTxtClsDtl; + } + + public String getHdnClsDtlID() { + return this.hdnClsDtlID; + } + + public void setHdnClsDtlID(String newHdnClsDtlID) { + this.hdnClsDtlID = newHdnClsDtlID; + } + + public String getTxtClsDtlDesc() { + return this.txtClsDtlDesc; + } + + public void setTxtClsDtlDesc(String newTxtClsDtlDesc) { + this.txtClsDtlDesc = newTxtClsDtlDesc; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java new file mode 100644 index 0000000..843cce5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java @@ -0,0 +1,236 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslTrngReqDtlBean extends BaseDetailBean implements Serializable { + String txtDateSubmitted; + + String txtCourseName; + + String txtTrngCal; + + String txtInstName; + + String txtStartDate; + + String txtEndDate; + + String txtNature; + + String txtPurpose; + + String txtRecommender; + + String txtAppStatus; + + String txtRemarks; + + String txtCrsId; + + String txtCalId; + + String txtRecId; + + String disabbutCourseLOV; + + String disabbutTrngCalLOV; + + String disabbutRecLOV; + + String txtLevel; + + String txtEmpId; + + String txtRecNo; + + String txtCourseCode; + + String disabtxtRemarks; + + String disabtxtPurpose; + + public String getTxtDateSubmitted() { + return this.txtDateSubmitted; + } + + public void setTxtDateSubmitted(String newTxtDateSubmitted) { + this.txtDateSubmitted = newTxtDateSubmitted; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getTxtTrngCal() { + return this.txtTrngCal; + } + + public void setTxtTrngCal(String newTxtTrngCal) { + this.txtTrngCal = newTxtTrngCal; + } + + public String getTxtInstName() { + return this.txtInstName; + } + + public void setTxtInstName(String newTxtInstName) { + this.txtInstName = newTxtInstName; + } + + public String getTxtStartDate() { + return this.txtStartDate; + } + + public void setTxtStartDate(String newTxtStartDate) { + this.txtStartDate = newTxtStartDate; + } + + public String getTxtEndDate() { + return this.txtEndDate; + } + + public void setTxtEndDate(String newTxtEndDate) { + this.txtEndDate = newTxtEndDate; + } + + public String getTxtNature() { + return this.txtNature; + } + + public void setTxtNature(String newTxtNature) { + this.txtNature = newTxtNature; + } + + public String getTxtPurpose() { + return this.txtPurpose; + } + + public void setTxtPurpose(String newTxtPurpose) { + this.txtPurpose = newTxtPurpose; + } + + public String getTxtRecommender() { + return this.txtRecommender; + } + + public void setTxtRecommender(String newTxtRecommender) { + this.txtRecommender = newTxtRecommender; + } + + public String getTxtAppStatus() { + return this.txtAppStatus; + } + + public void setTxtAppStatus(String newTxtAppStatus) { + this.txtAppStatus = newTxtAppStatus; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getTxtCrsId() { + return this.txtCrsId; + } + + public void setTxtCrsId(String newTxtCrsId) { + this.txtCrsId = newTxtCrsId; + } + + public String getTxtCalId() { + return this.txtCalId; + } + + public void setTxtCalId(String newTxtCalId) { + this.txtCalId = newTxtCalId; + } + + public String getTxtRecId() { + return this.txtRecId; + } + + public void setTxtRecId(String newTxtRecId) { + this.txtRecId = newTxtRecId; + } + + public String getDisabbutCourseLOV() { + return this.disabbutCourseLOV; + } + + public void setDisabbutCourseLOV(String newDisabbutCourseLOV) { + this.disabbutCourseLOV = newDisabbutCourseLOV; + } + + public String getDisabbutTrngCalLOV() { + return this.disabbutTrngCalLOV; + } + + public void setDisabbutTrngCalLOV(String newDisabbutTrngCalLOV) { + this.disabbutTrngCalLOV = newDisabbutTrngCalLOV; + } + + public String getDisabbutRecLOV() { + return this.disabbutRecLOV; + } + + public void setDisabbutRecLOV(String newDisabbutRecLOV) { + this.disabbutRecLOV = newDisabbutRecLOV; + } + + public String getTxtLevel() { + return this.txtLevel; + } + + public void setTxtLevel(String newTxtLevel) { + this.txtLevel = newTxtLevel; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtRecNo() { + return this.txtRecNo; + } + + public void setTxtRecNo(String newTxtRecNo) { + this.txtRecNo = newTxtRecNo; + } + + public String getTxtCourseCode() { + return this.txtCourseCode; + } + + public void setTxtCourseCode(String newTxtCourseCode) { + this.txtCourseCode = newTxtCourseCode; + } + + public String getDisabtxtRemarks() { + return this.disabtxtRemarks; + } + + public void setDisabtxtRemarks(String newDisabtxtRemarks) { + this.disabtxtRemarks = newDisabtxtRemarks; + } + + public String getDisabtxtPurpose() { + return this.disabtxtPurpose; + } + + public void setDisabtxtPurpose(String newDisabtxtPurpose) { + this.disabtxtPurpose = newDisabtxtPurpose; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java new file mode 100644 index 0000000..a4799f2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java @@ -0,0 +1,126 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpAttInHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String date; + + String shiftCode; + + String timeIn; + + String attndStatus; + + String reasons; + + String empId; + + String shiftId; + + String shiftTime; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getTimeIn() { + return this.timeIn; + } + + public void setTimeIn(String newTimeIn) { + this.timeIn = newTimeIn; + } + + public String getAttndStatus() { + return this.attndStatus; + } + + public void setAttndStatus(String newAttndStatus) { + this.attndStatus = newAttndStatus; + } + + public String getReasons() { + return this.reasons; + } + + public void setReasons(String newReasons) { + this.reasons = newReasons; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } + + public String getShiftTime() { + return this.shiftTime; + } + + public void setShiftTime(String newShiftTime) { + this.shiftTime = newShiftTime; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java new file mode 100644 index 0000000..9f71382 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java @@ -0,0 +1,136 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpAttOutHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String date; + + String shiftCode; + + String timeIn; + + String attndStatus; + + String empId; + + String shiftId; + + String shiftTime; + + String timeOut; + + String outDate; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getTimeIn() { + return this.timeIn; + } + + public void setTimeIn(String newTimeIn) { + this.timeIn = newTimeIn; + } + + public String getAttndStatus() { + return this.attndStatus; + } + + public void setAttndStatus(String newAttndStatus) { + this.attndStatus = newAttndStatus; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } + + public String getShiftTime() { + return this.shiftTime; + } + + public void setShiftTime(String newShiftTime) { + this.shiftTime = newShiftTime; + } + + public String getTimeOut() { + return this.timeOut; + } + + public void setTimeOut(String newTimeOut) { + this.timeOut = newTimeOut; + } + + public String getOutDate() { + return this.outDate; + } + + public void setOutDate(String newOutDate) { + this.outDate = newOutDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java new file mode 100644 index 0000000..803d6f3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java @@ -0,0 +1,126 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpAttQueryDtlBean extends BaseDetailBean implements Serializable { + String txtShiftCode; + + String txtChkInDate; + + String txtCheckInTime; + + String txtCheckOutTime; + + String txtAttStatus; + + String txtReason; + + private String txtEmpId; + + private String txtShiftMstId; + + private String txtEmpNo; + + private String txtEmpName; + + private String txtCheckInTimeMin; + + private String txtCheckOutTimeMin; + + public String getTxtShiftCode() { + return this.txtShiftCode; + } + + public void setTxtShiftCode(String newTxtShiftCode) { + this.txtShiftCode = newTxtShiftCode; + } + + public String getTxtChkInDate() { + return this.txtChkInDate; + } + + public void setTxtChkInDate(String newTxtChkInDate) { + this.txtChkInDate = newTxtChkInDate; + } + + public String getTxtCheckInTime() { + return this.txtCheckInTime; + } + + public void setTxtCheckInTime(String newTxtCheckInTime) { + this.txtCheckInTime = newTxtCheckInTime; + } + + public String getTxtCheckOutTime() { + return this.txtCheckOutTime; + } + + public void setTxtCheckOutTime(String newTxtCheckOutTime) { + this.txtCheckOutTime = newTxtCheckOutTime; + } + + public String getTxtAttStatus() { + return this.txtAttStatus; + } + + public void setTxtAttStatus(String newTxtAttStatus) { + this.txtAttStatus = newTxtAttStatus; + } + + public String getTxtReason() { + return this.txtReason; + } + + public void setTxtReason(String newTxtReason) { + this.txtReason = newTxtReason; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtShiftMstId() { + return this.txtShiftMstId; + } + + public void setTxtShiftMstId(String newTxtShiftMstId) { + this.txtShiftMstId = newTxtShiftMstId; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtCheckInTimeMin() { + return this.txtCheckInTimeMin; + } + + public void setTxtCheckInTimeMin(String newTxtCheckInTimeMin) { + this.txtCheckInTimeMin = newTxtCheckInTimeMin; + } + + public String getTxtCheckOutTimeMin() { + return this.txtCheckOutTimeMin; + } + + public void setTxtCheckOutTimeMin(String newTxtCheckOutTimeMin) { + this.txtCheckOutTimeMin = newTxtCheckOutTimeMin; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java new file mode 100644 index 0000000..0c4e142 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpAttQueryHdrBean extends BaseHeaderBean implements Serializable { + private String periodStartDt; + + private String empId; + + public String getPeriodStartDt() { + return this.periodStartDt; + } + + public void setPeriodStartDt(String newPeriodStartDt) { + this.periodStartDt = newPeriodStartDt; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java new file mode 100644 index 0000000..5167cfc --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpDayOffDtlBean extends BaseDetailBean implements Serializable { + private String txtStartWeekDate; + + private String txtEndWeekDate; + + private String txtFirstRestDay; + + private String txtSecondRestDay; + + private String txtHalfDay1; + + private String txtHalfDay2; + + private String txtRestWeek1; + + private String txtRestWeekDay1; + + private String txtRestWeek2; + + private String txtRestWeekDay2; + + public String getTxtStartWeekDate() { + return this.txtStartWeekDate; + } + + public void setTxtStartWeekDate(String newTxtStartWeekDate) { + this.txtStartWeekDate = newTxtStartWeekDate; + } + + public String getTxtEndWeekDate() { + return this.txtEndWeekDate; + } + + public void setTxtEndWeekDate(String newTxtEndWeekDate) { + this.txtEndWeekDate = newTxtEndWeekDate; + } + + public String getTxtFirstRestDay() { + return this.txtFirstRestDay; + } + + public void setTxtFirstRestDay(String newTxtFirstRestDay) { + this.txtFirstRestDay = newTxtFirstRestDay; + } + + public String getTxtSecondRestDay() { + return this.txtSecondRestDay; + } + + public void setTxtSecondRestDay(String newTxtSecondRestDay) { + this.txtSecondRestDay = newTxtSecondRestDay; + } + + public String getTxtHalfDay1() { + return this.txtHalfDay1; + } + + public void setTxtHalfDay1(String newTxtHalfDay1) { + this.txtHalfDay1 = newTxtHalfDay1; + } + + public String getTxtHalfDay2() { + return this.txtHalfDay2; + } + + public void setTxtHalfDay2(String newTxtHalfDay2) { + this.txtHalfDay2 = newTxtHalfDay2; + } + + public String getTxtRestWeek1() { + return this.txtRestWeek1; + } + + public void setTxtRestWeek1(String newTxtRestWeek1) { + this.txtRestWeek1 = newTxtRestWeek1; + } + + public String getTxtRestWeekDay1() { + return this.txtRestWeekDay1; + } + + public void setTxtRestWeekDay1(String newTxtRestWeekDay1) { + this.txtRestWeekDay1 = newTxtRestWeekDay1; + } + + public String getTxtRestWeek2() { + return this.txtRestWeek2; + } + + public void setTxtRestWeek2(String newTxtRestWeek2) { + this.txtRestWeek2 = newTxtRestWeek2; + } + + public String getTxtRestWeekDay2() { + return this.txtRestWeekDay2; + } + + public void setTxtRestWeekDay2(String newTxtRestWeekDay2) { + this.txtRestWeekDay2 = newTxtRestWeekDay2; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java new file mode 100644 index 0000000..b986ca6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpDayOffHdrBean extends BaseHeaderBean implements Serializable { + private String empId; + + private String employeeNo; + + private String employeeName; + + private String periodStartDate; + + private String periodEndDate; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java new file mode 100644 index 0000000..149a355 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpShiftDtlBean extends BaseDetailBean implements Serializable { + private String shiftBeginDate; + + private String shiftEndDate; + + private String shiftCode; + + String shiftId; + + public String getShiftBeginDate() { + return this.shiftBeginDate; + } + + public void setShiftBeginDate(String newShiftBeginDate) { + this.shiftBeginDate = newShiftBeginDate; + } + + public String getShiftEndDate() { + return this.shiftEndDate; + } + + public void setShiftEndDate(String newShiftEndDate) { + this.shiftEndDate = newShiftEndDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java new file mode 100644 index 0000000..e7f7729 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpShiftHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String employeeName; + + private String startDate; + + private String endDate; + + String empNoId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java new file mode 100644 index 0000000..2e23c29 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpShiftRosterDtlBean extends BaseDetailBean implements Serializable { + private String txtWorkDate; + + private String txtAvailability; + + private String txtShiftCode; + + private String txtMandatoryHoliady; + + private String txtEmpNo; + + private String txtShiftCodeId; + + public String getTxtWorkDate() { + return this.txtWorkDate; + } + + public void setTxtWorkDate(String newTxtWorkDate) { + this.txtWorkDate = newTxtWorkDate; + } + + public String getTxtAvailability() { + return this.txtAvailability; + } + + public void setTxtAvailability(String newTxtAvailability) { + this.txtAvailability = newTxtAvailability; + } + + public String getTxtShiftCode() { + return this.txtShiftCode; + } + + public void setTxtShiftCode(String newTxtShiftCode) { + this.txtShiftCode = newTxtShiftCode; + } + + public String getTxtMandatoryHoliady() { + return this.txtMandatoryHoliady; + } + + public void setTxtMandatoryHoliady(String newTxtMandatoryHoliady) { + this.txtMandatoryHoliady = newTxtMandatoryHoliady; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtShiftCodeId() { + return this.txtShiftCodeId; + } + + public void setTxtShiftCodeId(String newTxtShiftCodeId) { + this.txtShiftCodeId = newTxtShiftCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java new file mode 100644 index 0000000..ea9a130 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpShiftRosterHdrBean extends BaseHeaderBean implements Serializable { + String workGroupCode; + + String employeeNo; + + String employeeName; + + String periodStartDate; + + String periodEndDate; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java new file mode 100644 index 0000000..aead953 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttShiftMstHdrBean extends BaseHeaderBean implements Serializable { + private String shiftCode; + + private String shiftDescription; + + private String startTime; + + private String endTime; + + private String relaxationTime; + + private String startTolerenceTime; + + private String endTolerenceTime; + + private String overlapTime; + + private String txtDayOverlapFlag; + + String hdnWorkId; + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getShiftDescription() { + return this.shiftDescription; + } + + public void setShiftDescription(String newShiftDescription) { + this.shiftDescription = newShiftDescription; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String newStartTime) { + this.startTime = newStartTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String newEndTime) { + this.endTime = newEndTime; + } + + public String getRelaxationTime() { + return this.relaxationTime; + } + + public void setRelaxationTime(String newRelaxationTime) { + this.relaxationTime = newRelaxationTime; + } + + public String getStartTolerenceTime() { + return this.startTolerenceTime; + } + + public void setStartTolerenceTime(String newStartTolerenceTime) { + this.startTolerenceTime = newStartTolerenceTime; + } + + public String getEndTolerenceTime() { + return this.endTolerenceTime; + } + + public void setEndTolerenceTime(String newEndTolerenceTime) { + this.endTolerenceTime = newEndTolerenceTime; + } + + public String getOverlapTime() { + return this.overlapTime; + } + + public void setOverlapTime(String newOverlapTime) { + this.overlapTime = newOverlapTime; + } + + public String getTxtDayOverlapFlag() { + return this.txtDayOverlapFlag; + } + + public void setTxtDayOverlapFlag(String newTxtDayOverlapFlag) { + this.txtDayOverlapFlag = newTxtDayOverlapFlag; + } + + public String getHdnWorkId() { + return this.hdnWorkId; + } + + public void setHdnWorkId(String newHdnWorkId) { + this.hdnWorkId = newHdnWorkId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java new file mode 100644 index 0000000..89eba49 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttShiftRosterGenHdrBean extends BaseHeaderBean implements Serializable { + private String site; + + private String fromDate; + + private String toDate; + + private String siteId; + + private String workGroupId; + + private String workGroupCode; + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java new file mode 100644 index 0000000..76404be --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttWorkGroupDayOffDtlBean extends BaseDetailBean implements Serializable { + private String txtStartWeekDate; + + private String txtEndWeekDate; + + private String txtFirstRestDay; + + private String txtSecondRestDay; + + private String txtHalfDay1; + + private String txtHalfDay2; + + private String txtRestWeek1; + + private String txtRestWeekDay1; + + private String txtRestWeek2; + + private String txtRestWeekDay2; + + public String getTxtStartWeekDate() { + return this.txtStartWeekDate; + } + + public void setTxtStartWeekDate(String newTxtStartWeekDate) { + this.txtStartWeekDate = newTxtStartWeekDate; + } + + public String getTxtEndWeekDate() { + return this.txtEndWeekDate; + } + + public void setTxtEndWeekDate(String newTxtEndWeekDate) { + this.txtEndWeekDate = newTxtEndWeekDate; + } + + public String getTxtFirstRestDay() { + return this.txtFirstRestDay; + } + + public void setTxtFirstRestDay(String newTxtFirstRestDay) { + this.txtFirstRestDay = newTxtFirstRestDay; + } + + public String getTxtSecondRestDay() { + return this.txtSecondRestDay; + } + + public void setTxtSecondRestDay(String newTxtSecondRestDay) { + this.txtSecondRestDay = newTxtSecondRestDay; + } + + public String getTxtHalfDay1() { + return this.txtHalfDay1; + } + + public void setTxtHalfDay1(String newTxtHalfDay1) { + this.txtHalfDay1 = newTxtHalfDay1; + } + + public String getTxtHalfDay2() { + return this.txtHalfDay2; + } + + public void setTxtHalfDay2(String newTxtHalfDay2) { + this.txtHalfDay2 = newTxtHalfDay2; + } + + public String getTxtRestWeek1() { + return this.txtRestWeek1; + } + + public void setTxtRestWeek1(String newTxtRestWeek1) { + this.txtRestWeek1 = newTxtRestWeek1; + } + + public String getTxtRestWeekDay1() { + return this.txtRestWeekDay1; + } + + public void setTxtRestWeekDay1(String newTxtRestWeekDay1) { + this.txtRestWeekDay1 = newTxtRestWeekDay1; + } + + public String getTxtRestWeek2() { + return this.txtRestWeek2; + } + + public void setTxtRestWeek2(String newTxtRestWeek2) { + this.txtRestWeek2 = newTxtRestWeek2; + } + + public String getTxtRestWeekDay2() { + return this.txtRestWeekDay2; + } + + public void setTxtRestWeekDay2(String newTxtRestWeekDay2) { + this.txtRestWeekDay2 = newTxtRestWeekDay2; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java new file mode 100644 index 0000000..f360ed2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttWorkGroupDayOffHdrBean extends BaseHeaderBean implements Serializable { + private String workGroupId; + + private String siteId; + + private String workGroupCode; + + private String workGroupDescription; + + private String siteCode; + + private String siteDescription; + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java new file mode 100644 index 0000000..d4b4fc0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttWorkGroupShiftDtlBean extends BaseDetailBean implements Serializable { + String shiftBeginDate; + + String shiftEndDate; + + String shiftCode; + + String shiftId; + + public String getShiftBeginDate() { + return this.shiftBeginDate; + } + + public void setShiftBeginDate(String newShiftBeginDate) { + this.shiftBeginDate = newShiftBeginDate; + } + + public String getShiftEndDate() { + return this.shiftEndDate; + } + + public void setShiftEndDate(String newShiftEndDate) { + this.shiftEndDate = newShiftEndDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java new file mode 100644 index 0000000..415266e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttWorkGroupShiftHdrBean extends BaseHeaderBean implements Serializable { + String workGroupCode; + + String workGroupDescription; + + String siteCode; + + String siteDescription; + + String workGroupId; + + String siteId; + + String startDate; + + String endDate; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmChargeReportHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmChargeReportHdrBean.java new file mode 100644 index 0000000..aa2ab65 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmChargeReportHdrBean.java @@ -0,0 +1,276 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmChargeReportHdrBean extends BaseHeaderBean implements Serializable { + String trnOrderNo; + + String empName; + + String chargeType; + + String chargeCode; + + String handOverDate; + + private String fromDesignation; + + private String fromSiteCode; + + String remarks; + + String noonFlag; + + String trnOrderNoId; + + String chargeCodeId; + + String empNameId; + + String trnOrdrDtlId; + + String transferDate; + + private String fromDesigId; + + private String toDesignation; + + private String toDesigId; + + private String fromSiteId; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String toSiteCode; + + private String toSiteId; + + private String chargeStatus; + + private String orderType; + + private String handoverTakeover; + + private String handoverTakeoverId; + + private String handTakeEmpNo; + + public String getTrnOrderNo() { + return this.trnOrderNo; + } + + public void setTrnOrderNo(String newTrnOrderNo) { + this.trnOrderNo = newTrnOrderNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getChargeCode() { + return this.chargeCode; + } + + public void setChargeCode(String newChargeCode) { + this.chargeCode = newChargeCode; + } + + public String getHandOverDate() { + return this.handOverDate; + } + + public void setHandOverDate(String newHandOverDate) { + this.handOverDate = newHandOverDate; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getFromSiteCode() { + return this.fromSiteCode; + } + + public void setFromSiteCode(String newFromSiteCode) { + this.fromSiteCode = newFromSiteCode; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getNoonFlag() { + return this.noonFlag; + } + + public void setNoonFlag(String newNoonFlag) { + this.noonFlag = newNoonFlag; + } + + public String getTrnOrderNoId() { + return this.trnOrderNoId; + } + + public void setTrnOrderNoId(String newTrnOrderNoId) { + this.trnOrderNoId = newTrnOrderNoId; + } + + public String getChargeCodeId() { + return this.chargeCodeId; + } + + public void setChargeCodeId(String newChargeCodeId) { + this.chargeCodeId = newChargeCodeId; + } + + public String getEmpNameId() { + return this.empNameId; + } + + public void setEmpNameId(String newEmpNameId) { + this.empNameId = newEmpNameId; + } + + public String getTrnOrdrDtlId() { + return this.trnOrdrDtlId; + } + + public void setTrnOrdrDtlId(String newTrnOrdrDtlId) { + this.trnOrdrDtlId = newTrnOrdrDtlId; + } + + public String getTransferDate() { + return this.transferDate; + } + + public void setTransferDate(String newTransferDate) { + this.transferDate = newTransferDate; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getFromSiteId() { + return this.fromSiteId; + } + + public void setFromSiteId(String newFromSiteId) { + this.fromSiteId = newFromSiteId; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getToSiteCode() { + return this.toSiteCode; + } + + public void setToSiteCode(String newToSiteCode) { + this.toSiteCode = newToSiteCode; + } + + public String getToSiteId() { + return this.toSiteId; + } + + public void setToSiteId(String newToSiteId) { + this.toSiteId = newToSiteId; + } + + public String getChargeStatus() { + return this.chargeStatus; + } + + public void setChargeStatus(String newChargeStatus) { + this.chargeStatus = newChargeStatus; + } + + public String getOrderType() { + return this.orderType; + } + + public void setOrderType(String newOrderType) { + this.orderType = newOrderType; + } + + public String getHandoverTakeover() { + return this.handoverTakeover; + } + + public void setHandoverTakeover(String newHandoverTakeover) { + this.handoverTakeover = newHandoverTakeover; + } + + public String getHandoverTakeoverId() { + return this.handoverTakeoverId; + } + + public void setHandoverTakeoverId(String newHandoverTakeoverId) { + this.handoverTakeoverId = newHandoverTakeoverId; + } + + public String getHandTakeEmpNo() { + return this.handTakeEmpNo; + } + + public void setHandTakeEmpNo(String newHandTakeEmpNo) { + this.handTakeEmpNo = newHandTakeEmpNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmClaimMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmClaimMstDtlBean.java new file mode 100644 index 0000000..6d04314 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmClaimMstDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmClaimMstDtlBean extends BaseDetailBean implements Serializable { + private String txtClaimDetailCode; + + private String txtMaxCalLimit; + + private String txtGreaterLesserFlag; + + private String txtMaxLimit; + + private String txtFlatAmount; + + private String txtEffectFromDate; + + private String txtEffectToDate; + + private String txtAppliedToAll; + + public String getTxtClaimDetailCode() { + return this.txtClaimDetailCode; + } + + public void setTxtClaimDetailCode(String newTxtClaimDetailCode) { + this.txtClaimDetailCode = newTxtClaimDetailCode; + } + + public String getTxtMaxCalLimit() { + return this.txtMaxCalLimit; + } + + public void setTxtMaxCalLimit(String newTxtMaxCalLimit) { + this.txtMaxCalLimit = newTxtMaxCalLimit; + } + + public String getTxtGreaterLesserFlag() { + return this.txtGreaterLesserFlag; + } + + public void setTxtGreaterLesserFlag(String newTxtGreaterLesserFlag) { + this.txtGreaterLesserFlag = newTxtGreaterLesserFlag; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String getTxtFlatAmount() { + return this.txtFlatAmount; + } + + public void setTxtFlatAmount(String newTxtFlatAmount) { + this.txtFlatAmount = newTxtFlatAmount; + } + + public String getTxtEffectFromDate() { + return this.txtEffectFromDate; + } + + public void setTxtEffectFromDate(String newTxtEffectFromDate) { + this.txtEffectFromDate = newTxtEffectFromDate; + } + + public String getTxtEffectToDate() { + return this.txtEffectToDate; + } + + public void setTxtEffectToDate(String newTxtEffectToDate) { + this.txtEffectToDate = newTxtEffectToDate; + } + + public String getTxtAppliedToAll() { + return this.txtAppliedToAll; + } + + public void setTxtAppliedToAll(String newTxtAppliedToAll) { + this.txtAppliedToAll = newTxtAppliedToAll; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmClaimMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmClaimMstHdrBean.java new file mode 100644 index 0000000..822635e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmClaimMstHdrBean.java @@ -0,0 +1,96 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmClaimMstHdrBean extends BaseHeaderBean implements Serializable { + private String payrollFlag; + + private String calendarName; + + private String docReqFlag; + + private String claimCode; + + private String claimCodeId; + + private String calendarId; + + private String claimName; + + private String durationMonth; + + private String beginMonth; + + public String getPayrollFlag() { + return this.payrollFlag; + } + + public void setPayrollFlag(String newPayrollFlag) { + this.payrollFlag = newPayrollFlag; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getDocReqFlag() { + return this.docReqFlag; + } + + public void setDocReqFlag(String newDocReqFlag) { + this.docReqFlag = newDocReqFlag; + } + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String newClaimCode) { + this.claimCode = newClaimCode; + } + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getClaimName() { + return this.claimName; + } + + public void setClaimName(String newClaimName) { + this.claimName = newClaimName; + } + + public String getDurationMonth() { + return this.durationMonth; + } + + public void setDurationMonth(String newDurationMonth) { + this.durationMonth = newDurationMonth; + } + + public String getBeginMonth() { + return this.beginMonth; + } + + public void setBeginMonth(String newBeginMonth) { + this.beginMonth = newBeginMonth; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java new file mode 100644 index 0000000..071f967 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java @@ -0,0 +1,156 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmDeputationApplicationHdrBean extends BaseHeaderBean implements Serializable { + String applnNo; + + String applnDate; + + String deputType; + + String advtNo; + + String advtDate; + + String employeeNo; + + String orgName; + + String postName; + + String reason; + + String deputStatus; + + String empName; + + String selfOfficeFlag; + + String employeeNoId; + + String postCode; + + String postId; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } + + public String getAdvtNo() { + return this.advtNo; + } + + public void setAdvtNo(String newAdvtNo) { + this.advtNo = newAdvtNo; + } + + public String getAdvtDate() { + return this.advtDate; + } + + public void setAdvtDate(String newAdvtDate) { + this.advtDate = newAdvtDate; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getOrgName() { + return this.orgName; + } + + public void setOrgName(String newOrgName) { + this.orgName = newOrgName; + } + + public String getPostName() { + return this.postName; + } + + public void setPostName(String newPostName) { + this.postName = newPostName; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getDeputStatus() { + return this.deputStatus; + } + + public void setDeputStatus(String newDeputStatus) { + this.deputStatus = newDeputStatus; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getSelfOfficeFlag() { + return this.selfOfficeFlag; + } + + public void setSelfOfficeFlag(String newSelfOfficeFlag) { + this.selfOfficeFlag = newSelfOfficeFlag; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getPostCode() { + return this.postCode; + } + + public void setPostCode(String newPostCode) { + this.postCode = newPostCode; + } + + public String getPostId() { + return this.postId; + } + + public void setPostId(String newPostId) { + this.postId = newPostId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java new file mode 100644 index 0000000..e6f2ab9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEligibilityRuleValuesLovBean extends BaseHeaderBean implements Serializable { + private String id; + + private String code; + + private String name; + + private String heirarchy; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getHeirarchy() { + return this.heirarchy; + } + + public void setHeirarchy(String newHeirarchy) { + this.heirarchy = newHeirarchy; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java new file mode 100644 index 0000000..7f7986b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java @@ -0,0 +1,296 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpAdvAppHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String middleName; + + private String lastName; + + private String dateApplied; + + private String advanceCode; + + private String amountApplied; + + private String reason; + + private String amountSettled; + + String advanceStatus; + + private String employeeId; + + private String advanceCodeId; + + String grade; + + private String designation; + + private String location; + + private String approverName; + + private String remarks; + + private String sanctionDate; + + private String sanctionedAmount; + + private String eligibleAmount; + + private String approverNoId; + + private String payrollMonth; + + private String noOfInst; + + private String monthlyInstallment; + + private String paidInstallments; + + private String settledAmount; + + private String balance; + + private String bulkSettleAmount; + + private String mode; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getAmountApplied() { + return this.amountApplied; + } + + public void setAmountApplied(String newAmountApplied) { + this.amountApplied = newAmountApplied; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getAmountSettled() { + return this.amountSettled; + } + + public void setAmountSettled(String newAmountSettled) { + this.amountSettled = newAmountSettled; + } + + public String getAdvanceStatus() { + return this.advanceStatus; + } + + public void setAdvanceStatus(String newAdvanceStatus) { + this.advanceStatus = newAdvanceStatus; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getPayrollMonth() { + return this.payrollMonth; + } + + public void setPayrollMonth(String newPayrollMonth) { + this.payrollMonth = newPayrollMonth; + } + + public String getNoOfInst() { + return this.noOfInst; + } + + public void setNoOfInst(String newNoOfInst) { + this.noOfInst = newNoOfInst; + } + + public String getMonthlyInstallment() { + return this.monthlyInstallment; + } + + public void setMonthlyInstallment(String newMonthlyInstallment) { + this.monthlyInstallment = newMonthlyInstallment; + } + + public String getPaidInstallments() { + return this.paidInstallments; + } + + public void setPaidInstallments(String newPaidInstallments) { + this.paidInstallments = newPaidInstallments; + } + + public String getSettledAmount() { + return this.settledAmount; + } + + public void setSettledAmount(String newSettledAmount) { + this.settledAmount = newSettledAmount; + } + + public String getBalance() { + return this.balance; + } + + public void setBalance(String newBalance) { + this.balance = newBalance; + } + + public String getBulkSettleAmount() { + return this.bulkSettleAmount; + } + + public void setBulkSettleAmount(String newBulkSettleAmount) { + this.bulkSettleAmount = newBulkSettleAmount; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java new file mode 100644 index 0000000..e1faac1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java @@ -0,0 +1,176 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpClaimDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpId; + + private String txtApproverId; + + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtAppliedAmount; + + private String txtApplnDate; + + private String txtEligibleAmount; + + private String txtReimbursementTillDate; + + private String txtPayrollFlag; + + private String txtApprovedAmount; + + private String txtApprovalDate; + + private String txtApprovedBy; + + private String txtRemarks; + + private String txtClaimCode; + + private String txtClaimDtlId; + + private String txtClaimNo; + + private String txtNewRemarks; + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtApproverId() { + return this.txtApproverId; + } + + public void setTxtApproverId(String newTxtApproverId) { + this.txtApproverId = newTxtApproverId; + } + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtAppliedAmount() { + return this.txtAppliedAmount; + } + + public void setTxtAppliedAmount(String newTxtAppliedAmount) { + this.txtAppliedAmount = newTxtAppliedAmount; + } + + public String getTxtApplnDate() { + return this.txtApplnDate; + } + + public void setTxtApplnDate(String newTxtApplnDate) { + this.txtApplnDate = newTxtApplnDate; + } + + public String getTxtEligibleAmount() { + return this.txtEligibleAmount; + } + + public void setTxtEligibleAmount(String newTxtEligibleAmount) { + this.txtEligibleAmount = newTxtEligibleAmount; + } + + public String getTxtReimbursementTillDate() { + return this.txtReimbursementTillDate; + } + + public void setTxtReimbursementTillDate(String newTxtReimbursementTillDate) { + this.txtReimbursementTillDate = newTxtReimbursementTillDate; + } + + public String getTxtPayrollFlag() { + return this.txtPayrollFlag; + } + + public void setTxtPayrollFlag(String newTxtPayrollFlag) { + this.txtPayrollFlag = newTxtPayrollFlag; + } + + public String getTxtApprovedAmount() { + return this.txtApprovedAmount; + } + + public void setTxtApprovedAmount(String newTxtApprovedAmount) { + this.txtApprovedAmount = newTxtApprovedAmount; + } + + public String getTxtApprovalDate() { + return this.txtApprovalDate; + } + + public void setTxtApprovalDate(String newTxtApprovalDate) { + this.txtApprovalDate = newTxtApprovalDate; + } + + public String getTxtApprovedBy() { + return this.txtApprovedBy; + } + + public void setTxtApprovedBy(String newTxtApprovedBy) { + this.txtApprovedBy = newTxtApprovedBy; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getTxtClaimCode() { + return this.txtClaimCode; + } + + public void setTxtClaimCode(String newTxtClaimCode) { + this.txtClaimCode = newTxtClaimCode; + } + + public String getTxtClaimDtlId() { + return this.txtClaimDtlId; + } + + public void setTxtClaimDtlId(String newTxtClaimDtlId) { + this.txtClaimDtlId = newTxtClaimDtlId; + } + + public String getTxtClaimNo() { + return this.txtClaimNo; + } + + public void setTxtClaimNo(String newTxtClaimNo) { + this.txtClaimNo = newTxtClaimNo; + } + + public String getTxtNewRemarks() { + return this.txtNewRemarks; + } + + public void setTxtNewRemarks(String newTxtNewRemarks) { + this.txtNewRemarks = newTxtNewRemarks; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java new file mode 100644 index 0000000..4682bd1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpClaimHdrBean extends BaseHeaderBean implements Serializable { + private String claimCode; + + private String startDate; + + private String endDate; + + private String claimCodeId; + + private String claimNo; + + private String period; + + private String empNo; + + private String empDtlId; + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String newClaimCode) { + this.claimCode = newClaimCode; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getClaimNo() { + return this.claimNo; + } + + public void setClaimNo(String newClaimNo) { + this.claimNo = newClaimNo; + } + + public String getPeriod() { + return this.period; + } + + public void setPeriod(String newPeriod) { + this.period = newPeriod; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpDtlId() { + return this.empDtlId; + } + + public void setEmpDtlId(String newEmpDtlId) { + this.empDtlId = newEmpDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpDepDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDepDtlBean.java new file mode 100644 index 0000000..245f490 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDepDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpDepDtlBean extends BaseDetailBean implements Serializable { + String txtDOB; + + String txtDepName; + + String txtRelationType; + + String txtRelationTypeId; + + String txtSex; + + String txtRelationTypeCode; + + String txtOrgName; + + String txtIncomeAmount; + + public String getTxtDOB() { + return this.txtDOB; + } + + public void setTxtDOB(String newTxtDOB) { + this.txtDOB = newTxtDOB; + } + + public String getTxtDepName() { + return this.txtDepName; + } + + public void setTxtDepName(String newTxtDepName) { + this.txtDepName = newTxtDepName; + } + + public String getTxtRelationType() { + return this.txtRelationType; + } + + public void setTxtRelationType(String newTxtRelationType) { + this.txtRelationType = newTxtRelationType; + } + + public String getTxtRelationTypeId() { + return this.txtRelationTypeId; + } + + public void setTxtRelationTypeId(String newTxtRelationTypeId) { + this.txtRelationTypeId = newTxtRelationTypeId; + } + + public String getTxtSex() { + return this.txtSex; + } + + public void setTxtSex(String newTxtSex) { + this.txtSex = newTxtSex; + } + + public String getTxtRelationTypeCode() { + return this.txtRelationTypeCode; + } + + public void setTxtRelationTypeCode(String newTxtRelationTypeCode) { + this.txtRelationTypeCode = newTxtRelationTypeCode; + } + + public String getTxtOrgName() { + return this.txtOrgName; + } + + public void setTxtOrgName(String newTxtOrgName) { + this.txtOrgName = newTxtOrgName; + } + + public String getTxtIncomeAmount() { + return this.txtIncomeAmount; + } + + public void setTxtIncomeAmount(String newTxtIncomeAmount) { + this.txtIncomeAmount = newTxtIncomeAmount; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpDepHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDepHdrBean.java new file mode 100644 index 0000000..ee404c7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDepHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpDepHdrBean extends BaseHeaderBean implements Serializable { + String employeeName; + + String employeeNo; + + String employeeNoId; + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java new file mode 100644 index 0000000..6157107 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java @@ -0,0 +1,146 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpDiscActionDtlBean extends BaseDetailBean implements Serializable { + private String txtLocation; + + private String txtMisconduct; + + private String txtFromDate; + + private String txtToDate; + + private String txtActionTaken; + + private String txtStatus; + + private String txtStatusEffectDate; + + private String txtRemarks; + + private String txtLocationId; + + private String txtChrgShtDate; + + private String txtInqDate; + + private String txtInqOfficer; + + private String txtActionOfficer; + + private String txtAppealDate; + + public String getTxtChrgShtDate() { + return this.txtChrgShtDate; + } + + public void setTxtChrgShtDate(String txtChrgShtDate) { + this.txtChrgShtDate = txtChrgShtDate; + } + + public String getTxtInqDate() { + return this.txtInqDate; + } + + public void setTxtInqDate(String txtInqDate) { + this.txtInqDate = txtInqDate; + } + + public String getTxtInqOfficer() { + return this.txtInqOfficer; + } + + public void setTxtInqOfficer(String txtInqOfficer) { + this.txtInqOfficer = txtInqOfficer; + } + + public String getTxtActionOfficer() { + return this.txtActionOfficer; + } + + public void setTxtActionOfficer(String txtActionOfficer) { + this.txtActionOfficer = txtActionOfficer; + } + + public String getTxtAppealDate() { + return this.txtAppealDate; + } + + public void setTxtAppealDate(String txtAppealDate) { + this.txtAppealDate = txtAppealDate; + } + + public String getTxtLocation() { + return this.txtLocation; + } + + public void setTxtLocation(String newTxtLocation) { + this.txtLocation = newTxtLocation; + } + + public String getTxtMisconduct() { + return this.txtMisconduct; + } + + public void setTxtMisconduct(String newTxtMisconduct) { + this.txtMisconduct = newTxtMisconduct; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtActionTaken() { + return this.txtActionTaken; + } + + public void setTxtActionTaken(String newTxtActionTaken) { + this.txtActionTaken = newTxtActionTaken; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getTxtStatusEffectDate() { + return this.txtStatusEffectDate; + } + + public void setTxtStatusEffectDate(String newTxtStatusEffectDate) { + this.txtStatusEffectDate = newTxtStatusEffectDate; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java new file mode 100644 index 0000000..d8eba8e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpDiscActionHdrBean extends BaseHeaderBean implements Serializable { + String employeeName; + + String employeeNo; + + String caseFlag; + + String employeeNoId; + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getCaseFlag() { + return this.caseFlag; + } + + public void setCaseFlag(String newCaseFlag) { + this.caseFlag = newCaseFlag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java new file mode 100644 index 0000000..3a600df --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java @@ -0,0 +1,466 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersAddDtlBean extends BaseDetailBean implements Serializable { + String address; + + String city; + + String state; + + String country; + + String pinCode; + + String phone; + + String peAddress; + + String peCity; + + String peState; + + String peCountry; + + String pePinCode; + + String pePhone; + + String prAddress; + + String prCity; + + String prState; + + String prCountry; + + String prPinCode; + + String prPhone; + + String mobileNo; + + String extension; + + String secPhone; + + String secExtension; + + String htAddress; + + String htCity; + + String htState; + + String htCountry; + + String htPinCode; + + String htPhone; + + String email; + + String fax; + + String stateId; + + String stateCode; + + String countryCode; + + String countryId; + + String districtId; + + String districtCode; + + String tehsilCode; + + String tehsilId; + + String district; + + String peDistrict; + + String prDistrict; + + String htDistrict; + + String tehsil; + + String peTehsil; + + String prTehsil; + + String htTehsil; + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getCity() { + return this.city; + } + + public void setCity(String newCity) { + this.city = newCity; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getCountry() { + return this.country; + } + + public void setCountry(String newCountry) { + this.country = newCountry; + } + + public String getPinCode() { + return this.pinCode; + } + + public void setPinCode(String newPinCode) { + this.pinCode = newPinCode; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getPeAddress() { + return this.peAddress; + } + + public void setPeAddress(String newPeAddress) { + this.peAddress = newPeAddress; + } + + public String getPeCity() { + return this.peCity; + } + + public void setPeCity(String newPeCity) { + this.peCity = newPeCity; + } + + public String getPeState() { + return this.peState; + } + + public void setPeState(String newPeState) { + this.peState = newPeState; + } + + public String getPeCountry() { + return this.peCountry; + } + + public void setPeCountry(String newPeCountry) { + this.peCountry = newPeCountry; + } + + public String getPePinCode() { + return this.pePinCode; + } + + public void setPePinCode(String newPePinCode) { + this.pePinCode = newPePinCode; + } + + public String getPePhone() { + return this.pePhone; + } + + public void setPePhone(String newPePhone) { + this.pePhone = newPePhone; + } + + public String getPrAddress() { + return this.prAddress; + } + + public void setPrAddress(String newPrAddress) { + this.prAddress = newPrAddress; + } + + public String getPrCity() { + return this.prCity; + } + + public void setPrCity(String newPrCity) { + this.prCity = newPrCity; + } + + public String getPrState() { + return this.prState; + } + + public void setPrState(String newPrState) { + this.prState = newPrState; + } + + public String getPrCountry() { + return this.prCountry; + } + + public void setPrCountry(String newPrCountry) { + this.prCountry = newPrCountry; + } + + public String getPrPinCode() { + return this.prPinCode; + } + + public void setPrPinCode(String newPrPinCode) { + this.prPinCode = newPrPinCode; + } + + public String getPrPhone() { + return this.prPhone; + } + + public void setPrPhone(String newPrPhone) { + this.prPhone = newPrPhone; + } + + public String getMobileNo() { + return this.mobileNo; + } + + public void setMobileNo(String newMobileNo) { + this.mobileNo = newMobileNo; + } + + public String getExtension() { + return this.extension; + } + + public void setExtension(String newExtension) { + this.extension = newExtension; + } + + public String getSecPhone() { + return this.secPhone; + } + + public void setSecPhone(String newSecPhone) { + this.secPhone = newSecPhone; + } + + public String getSecExtension() { + return this.secExtension; + } + + public void setSecExtension(String newSecExtension) { + this.secExtension = newSecExtension; + } + + public String getHtAddress() { + return this.htAddress; + } + + public void setHtAddress(String newHtAddress) { + this.htAddress = newHtAddress; + } + + public String getHtCity() { + return this.htCity; + } + + public void setHtCity(String newHtCity) { + this.htCity = newHtCity; + } + + public String getHtState() { + return this.htState; + } + + public void setHtState(String newHtState) { + this.htState = newHtState; + } + + public String getHtCountry() { + return this.htCountry; + } + + public void setHtCountry(String newHtCountry) { + this.htCountry = newHtCountry; + } + + public String getHtPinCode() { + return this.htPinCode; + } + + public void setHtPinCode(String newHtPinCode) { + this.htPinCode = newHtPinCode; + } + + public String getHtPhone() { + return this.htPhone; + } + + public void setHtPhone(String newHtPhone) { + this.htPhone = newHtPhone; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getStateId() { + return this.stateId; + } + + public void setStateId(String newStateId) { + this.stateId = newStateId; + } + + public String getStateCode() { + return this.stateCode; + } + + public void setStateCode(String newStateCode) { + this.stateCode = newStateCode; + } + + public String getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String newCountryCode) { + this.countryCode = newCountryCode; + } + + public String getCountryId() { + return this.countryId; + } + + public void setCountryId(String newCountryId) { + this.countryId = newCountryId; + } + + public String getDistrictId() { + return this.districtId; + } + + public void setDistrictId(String districtId) { + this.districtId = districtId; + } + + public String getDistrictCode() { + return this.districtCode; + } + + public void setDistrictCode(String districtCode) { + this.districtCode = districtCode; + } + + public String getTehsilCode() { + return this.tehsilCode; + } + + public void setTehsilCode(String tehsilCode) { + this.tehsilCode = tehsilCode; + } + + public String getTehsilId() { + return this.tehsilId; + } + + public void setTehsilId(String tehsilId) { + this.tehsilId = tehsilId; + } + + public String getDistrict() { + return this.district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getPeDistrict() { + return this.peDistrict; + } + + public void setPeDistrict(String peDistrict) { + this.peDistrict = peDistrict; + } + + public String getPrDistrict() { + return this.prDistrict; + } + + public void setPrDistrict(String prDistrict) { + this.prDistrict = prDistrict; + } + + public String getHtDistrict() { + return this.htDistrict; + } + + public void setHtDistrict(String htDistrict) { + this.htDistrict = htDistrict; + } + + public String getTehsil() { + return this.tehsil; + } + + public void setTehsil(String tehsil) { + this.tehsil = tehsil; + } + + public String getPeTehsil() { + return this.peTehsil; + } + + public void setPeTehsil(String peTehsil) { + this.peTehsil = peTehsil; + } + + public String getPrTehsil() { + return this.prTehsil; + } + + public void setPrTehsil(String prTehsil) { + this.prTehsil = prTehsil; + } + + public String getHtTehsil() { + return this.htTehsil; + } + + public void setHtTehsil(String htTehsil) { + this.htTehsil = htTehsil; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java new file mode 100644 index 0000000..68c014a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersAssetDtlBean extends BaseDetailBean implements Serializable { + private String fullAddress; + + private String detailOfProperty; + + private String costOfConstruction; + + private String yearOfPurchase; + + private String presentValue; + + private String nameHeld; + + private String howAquired; + + private String detailOfPerson; + + private String totalIncome; + + private String remarks; + + public String getFullAddress() { + return this.fullAddress; + } + + public void setFullAddress(String fullAddress) { + this.fullAddress = fullAddress; + } + + public String getDetailOfProperty() { + return this.detailOfProperty; + } + + public void setDetailOfProperty(String detailOfProperty) { + this.detailOfProperty = detailOfProperty; + } + + public String getCostOfConstruction() { + return this.costOfConstruction; + } + + public void setCostOfConstruction(String costOfConstruction) { + this.costOfConstruction = costOfConstruction; + } + + public String getYearOfPurchase() { + return this.yearOfPurchase; + } + + public void setYearOfPurchase(String yearOfPurchase) { + this.yearOfPurchase = yearOfPurchase; + } + + public String getPresentValue() { + return this.presentValue; + } + + public void setPresentValue(String presentValue) { + this.presentValue = presentValue; + } + + public String getNameHeld() { + return this.nameHeld; + } + + public void setNameHeld(String nameHeld) { + this.nameHeld = nameHeld; + } + + public String getHowAquired() { + return this.howAquired; + } + + public void setHowAquired(String howAquired) { + this.howAquired = howAquired; + } + + public String getDetailOfPerson() { + return this.detailOfPerson; + } + + public void setDetailOfPerson(String detailOfPerson) { + this.detailOfPerson = detailOfPerson; + } + + public String getTotalIncome() { + return this.totalIncome; + } + + public void setTotalIncome(String totalIncome) { + this.totalIncome = totalIncome; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java new file mode 100644 index 0000000..c110fe1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersAwardDtlBean extends BaseDetailBean implements Serializable { + private String txtAwdName; + + private String txtAwdYear; + + private String txtAwdField; + + private String txtAwdDate; + + public String getTxtAwdName() { + return this.txtAwdName; + } + + public void setTxtAwdName(String newTxtAwdName) { + this.txtAwdName = newTxtAwdName; + } + + public String getTxtAwdYear() { + return this.txtAwdYear; + } + + public void setTxtAwdYear(String newTxtAwdYear) { + this.txtAwdYear = newTxtAwdYear; + } + + public String getTxtAwdField() { + return this.txtAwdField; + } + + public void setTxtAwdField(String newTxtAwdField) { + this.txtAwdField = newTxtAwdField; + } + + public String getTxtAwdDate() { + return this.txtAwdDate; + } + + public void setTxtAwdDate(String newTxtAwdDate) { + this.txtAwdDate = newTxtAwdDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java new file mode 100644 index 0000000..913e087 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java @@ -0,0 +1,716 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersDtlsBean extends BaseDetailBean implements Serializable { + String guardianName; + + String motherTongue; + + String dateOfBirth; + + String nationality; + + String bloodGroup; + + String sex; + + String maritalStatus; + + String department; + + String designation; + + private String rsvCtg; + + private String relatedToEmployee; + + String grade; + + String handicappedFlag; + + String panNumber; + + String girNumber; + + String pfNumber; + + String reportingEmployee; + + String lastPromotionDate; + + String religionId; + + String nationalityCode; + + String maritalCode; + + String departmentId; + + String designationId; + + String socialStatusId; + + String gradeId; + + String reportingEmpId; + + String gradeCode; + + String relatedEmpId; + + String motherTongueCode; + + String locationId; + + String dsgnCode; + + String relatedEmployee; + + String spouseOccupation; + + String spouseName; + + String validUpto; + + String passportExpDate; + + String placeOfIssue; + + String drivingLicenseNo; + + String passportIssueDate; + + String passportNo; + + String location; + + String locJoiningDate; + + String placeOfBirth; + + String idMark; + + String dependants; + + private String email; + + private String code; + + private String incrementDate; + + private String religion; + + private String socialCode; + + private String level; + + private String locationCode; + + private String nationalityId; + + private String motherTongueId; + + private String maritalId; + + private String personalEmail; + + private String mobile; + + private String deptCode; + + private String flat; + + private String anniversaryDate; + + private String motherName; + + private String scsmemershipNo; + + private String gunLicenseNo; + + private String gunLicenseRenDate; + + private String spouseOrganization; + + private String spOrgType; + + private String spTransferable; + + private String clubMembership; + + private String unionInfo; + + private String uanInfo; + + private String aadharInfo; + + public String getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String newGuardianName) { + this.guardianName = newGuardianName; + } + + public String getMotherTongue() { + return this.motherTongue; + } + + public void setMotherTongue(String newMotherTongue) { + this.motherTongue = newMotherTongue; + } + + public String getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String getNationality() { + return this.nationality; + } + + public void setNationality(String newNationality) { + this.nationality = newNationality; + } + + public String getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String getDepartment() { + return this.department; + } + + public void setDepartment(String newDepartment) { + this.department = newDepartment; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getRsvCtg() { + return this.rsvCtg; + } + + public void setRsvCtg(String newRsvCtg) { + this.rsvCtg = newRsvCtg; + } + + public String getRelatedToEmployee() { + return this.relatedToEmployee; + } + + public void setRelatedToEmployee(String newRelatedToEmployee) { + this.relatedToEmployee = newRelatedToEmployee; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getPanNumber() { + return this.panNumber; + } + + public void setPanNumber(String newPanNumber) { + this.panNumber = newPanNumber; + } + + public String getGirNumber() { + return this.girNumber; + } + + public void setGirNumber(String newGirNumber) { + this.girNumber = newGirNumber; + } + + public String getPfNumber() { + return this.pfNumber; + } + + public void setPfNumber(String newPfNumber) { + this.pfNumber = newPfNumber; + } + + public String getReportingEmployee() { + return this.reportingEmployee; + } + + public void setReportingEmployee(String newReportingEmployee) { + this.reportingEmployee = newReportingEmployee; + } + + public String getLastPromotionDate() { + return this.lastPromotionDate; + } + + public void setLastPromotionDate(String newLastPromotionDate) { + this.lastPromotionDate = newLastPromotionDate; + } + + public String getReligionId() { + return this.religionId; + } + + public void setReligionId(String newReligionId) { + this.religionId = newReligionId; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getMaritalCode() { + return this.maritalCode; + } + + public void setMaritalCode(String newMaritalCode) { + this.maritalCode = newMaritalCode; + } + + public String getDepartmentId() { + return this.departmentId; + } + + public void setDepartmentId(String newDepartmentId) { + this.departmentId = newDepartmentId; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getSocialStatusId() { + return this.socialStatusId; + } + + public void setSocialStatusId(String newSocialStatusId) { + this.socialStatusId = newSocialStatusId; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getRelatedEmpId() { + return this.relatedEmpId; + } + + public void setRelatedEmpId(String newRelatedEmpId) { + this.relatedEmpId = newRelatedEmpId; + } + + public String getMotherTongueCode() { + return this.motherTongueCode; + } + + public void setMotherTongueCode(String newMotherTongueCode) { + this.motherTongueCode = newMotherTongueCode; + } + + public String getLocationId() { + return this.locationId; + } + + public void setLocationId(String newLocationId) { + this.locationId = newLocationId; + } + + public String getDsgnCode() { + return this.dsgnCode; + } + + public void setDsgnCode(String newDsgnCode) { + this.dsgnCode = newDsgnCode; + } + + public String getRelatedEmployee() { + return this.relatedEmployee; + } + + public void setRelatedEmployee(String newRelatedEmployee) { + this.relatedEmployee = newRelatedEmployee; + } + + public String getSpouseOccupation() { + return this.spouseOccupation; + } + + public void setSpouseOccupation(String newSpouseOccupation) { + this.spouseOccupation = newSpouseOccupation; + } + + public String getSpouseName() { + return this.spouseName; + } + + public void setSpouseName(String newSpouseName) { + this.spouseName = newSpouseName; + } + + public String getValidUpto() { + return this.validUpto; + } + + public void setValidUpto(String newValidUpto) { + this.validUpto = newValidUpto; + } + + public String getPassportExpDate() { + return this.passportExpDate; + } + + public void setPassportExpDate(String newPassportExpDate) { + this.passportExpDate = newPassportExpDate; + } + + public String getPlaceOfIssue() { + return this.placeOfIssue; + } + + public void setPlaceOfIssue(String newPlaceOfIssue) { + this.placeOfIssue = newPlaceOfIssue; + } + + public String getDrivingLicenseNo() { + return this.drivingLicenseNo; + } + + public void setDrivingLicenseNo(String newDrivingLicenseNo) { + this.drivingLicenseNo = newDrivingLicenseNo; + } + + public String getPassportIssueDate() { + return this.passportIssueDate; + } + + public void setPassportIssueDate(String newPassportIssueDate) { + this.passportIssueDate = newPassportIssueDate; + } + + public String getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String newPassportNo) { + this.passportNo = newPassportNo; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getLocJoiningDate() { + return this.locJoiningDate; + } + + public void setLocJoiningDate(String newLocJoiningDate) { + this.locJoiningDate = newLocJoiningDate; + } + + public String getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getIdMark() { + return this.idMark; + } + + public void setIdMark(String newIdMark) { + this.idMark = newIdMark; + } + + public String getDependants() { + return this.dependants; + } + + public void setDependants(String newDependants) { + this.dependants = newDependants; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getIncrementDate() { + return this.incrementDate; + } + + public void setIncrementDate(String newIncrementDate) { + this.incrementDate = newIncrementDate; + } + + public String getReligion() { + return this.religion; + } + + public void setReligion(String newReligion) { + this.religion = newReligion; + } + + public String getSocialCode() { + return this.socialCode; + } + + public void setSocialCode(String newSocialCode) { + this.socialCode = newSocialCode; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } + + public String getNationalityId() { + return this.nationalityId; + } + + public void setNationalityId(String newNationalityId) { + this.nationalityId = newNationalityId; + } + + public String getMotherTongueId() { + return this.motherTongueId; + } + + public void setMotherTongueId(String newMotherTongueId) { + this.motherTongueId = newMotherTongueId; + } + + public String getMaritalId() { + return this.maritalId; + } + + public void setMaritalId(String newMaritalId) { + this.maritalId = newMaritalId; + } + + public String getPersonalEmail() { + return this.personalEmail; + } + + public void setPersonalEmail(String newPersonalEmail) { + this.personalEmail = newPersonalEmail; + } + + public String getMobile() { + return this.mobile; + } + + public void setMobile(String newMobile) { + this.mobile = newMobile; + } + + public String getDeptCode() { + return this.deptCode; + } + + public void setDeptCode(String newDeptCode) { + this.deptCode = newDeptCode; + } + + public String getFlat() { + return this.flat; + } + + public void setFlat(String newFlat) { + this.flat = newFlat; + } + + public String getAnniversaryDate() { + return this.anniversaryDate; + } + + public void setAnniversaryDate(String newAnniversaryDate) { + this.anniversaryDate = newAnniversaryDate; + } + + public String getMotherName() { + return this.motherName; + } + + public void setMotherName(String newMotherName) { + this.motherName = newMotherName; + } + + public String getScsmemershipNo() { + return this.scsmemershipNo; + } + + public void setScsmemershipNo(String newScsmemershipNo) { + this.scsmemershipNo = newScsmemershipNo; + } + + public String getGunLicenseNo() { + return this.gunLicenseNo; + } + + public void setGunLicenseNo(String newGunLicenseNo) { + this.gunLicenseNo = newGunLicenseNo; + } + + public String getGunLicenseRenDate() { + return this.gunLicenseRenDate; + } + + public void setGunLicenseRenDate(String newGunLicenseRenDate) { + this.gunLicenseRenDate = newGunLicenseRenDate; + } + + public String getSpouseOrganization() { + return this.spouseOrganization; + } + + public void setSpouseOrganization(String newSpouseOrganization) { + this.spouseOrganization = newSpouseOrganization; + } + + public String getSpOrgType() { + return this.spOrgType; + } + + public void setSpOrgType(String newSpOrgType) { + this.spOrgType = newSpOrgType; + } + + public String getSpTransferable() { + return this.spTransferable; + } + + public void setSpTransferable(String newSpTransferable) { + this.spTransferable = newSpTransferable; + } + + public String getClubMembership() { + return this.clubMembership; + } + + public void setClubMembership(String newClubMembership) { + this.clubMembership = newClubMembership; + } + + public String getUnionInfo() { + return this.unionInfo; + } + + public void setUnionInfo(String newUnionInfo) { + this.unionInfo = newUnionInfo; + } + + public String getUanInfo() { + return this.uanInfo; + } + + public void setUanInfo(String uanInfo) { + this.uanInfo = uanInfo; + } + + public String getAadharInfo() { + return this.aadharInfo; + } + + public void setAadharInfo(String aadharInfo) { + this.aadharInfo = aadharInfo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java new file mode 100644 index 0000000..461fe89 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersEduDtlBean extends BaseDetailBean implements Serializable { + private String txtSrlNo; + + private String txtSchoolColInst; + + private String txtExamDegreePassed; + + private String txtPercentageDivision; + + private String txtPassYear; + + private String txtMajorSubjects; + + private String txtSpecialisation; + + private String txtOtherProfQualification; + + private String txtSpecialisedCourses; + + private String txtQualificationId; + + private String txtQualificationCode; + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getTxtSchoolColInst() { + return this.txtSchoolColInst; + } + + public void setTxtSchoolColInst(String newTxtSchoolColInst) { + this.txtSchoolColInst = newTxtSchoolColInst; + } + + public String getTxtExamDegreePassed() { + return this.txtExamDegreePassed; + } + + public void setTxtExamDegreePassed(String newTxtExamDegreePassed) { + this.txtExamDegreePassed = newTxtExamDegreePassed; + } + + public String getTxtPercentageDivision() { + return this.txtPercentageDivision; + } + + public void setTxtPercentageDivision(String newTxtPercentageDivision) { + this.txtPercentageDivision = newTxtPercentageDivision; + } + + public String getTxtPassYear() { + return this.txtPassYear; + } + + public void setTxtPassYear(String newTxtPassYear) { + this.txtPassYear = newTxtPassYear; + } + + public String getTxtMajorSubjects() { + return this.txtMajorSubjects; + } + + public void setTxtMajorSubjects(String newTxtMajorSubjects) { + this.txtMajorSubjects = newTxtMajorSubjects; + } + + public String getTxtSpecialisation() { + return this.txtSpecialisation; + } + + public void setTxtSpecialisation(String newTxtSpecialisation) { + this.txtSpecialisation = newTxtSpecialisation; + } + + public String getTxtOtherProfQualification() { + return this.txtOtherProfQualification; + } + + public void setTxtOtherProfQualification(String newTxtOtherProfQualification) { + this.txtOtherProfQualification = newTxtOtherProfQualification; + } + + public String getTxtSpecialisedCourses() { + return this.txtSpecialisedCourses; + } + + public void setTxtSpecialisedCourses(String newTxtSpecialisedCourses) { + this.txtSpecialisedCourses = newTxtSpecialisedCourses; + } + + public String getTxtQualificationId() { + return this.txtQualificationId; + } + + public void setTxtQualificationId(String newTxtQualificationId) { + this.txtQualificationId = newTxtQualificationId; + } + + public String getTxtQualificationCode() { + return this.txtQualificationCode; + } + + public void setTxtQualificationCode(String newTxtQualificationCode) { + this.txtQualificationCode = newTxtQualificationCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHdrBean.java new file mode 100644 index 0000000..ba20f82 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHdrBean.java @@ -0,0 +1,136 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpPersHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String checkDigit; + + String accessCardNo; + + String employeeName; + + String firstName; + + String middleName; + + String lastName; + + String draftFlag; + + String draftSave; + + String picturePath; + + private String empNumberId; + + private String visibilityFlag; + + private String mode; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getCheckDigit() { + return this.checkDigit; + } + + public void setCheckDigit(String newCheckDigit) { + this.checkDigit = newCheckDigit; + } + + public String getAccessCardNo() { + return this.accessCardNo; + } + + public void setAccessCardNo(String newAccessCardNo) { + this.accessCardNo = newAccessCardNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDraftFlag() { + return this.draftFlag; + } + + public void setDraftFlag(String newDraftFlag) { + this.draftFlag = newDraftFlag; + } + + public String getDraftSave() { + return this.draftSave; + } + + public void setDraftSave(String newDraftSave) { + this.draftSave = newDraftSave; + } + + public String getPicturePath() { + return this.picturePath; + } + + public void setPicturePath(String newPicturePath) { + this.picturePath = newPicturePath; + } + + public String getEmpNumberId() { + return this.empNumberId; + } + + public void setEmpNumberId(String newEmpNumberId) { + this.empNumberId = newEmpNumberId; + } + + public String getVisibilityFlag() { + return this.visibilityFlag; + } + + public void setVisibilityFlag(String newVisibilityFlag) { + this.visibilityFlag = newVisibilityFlag; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHealthBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHealthBean.java new file mode 100644 index 0000000..d236f1e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHealthBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersHealthBean extends BaseDetailBean implements Serializable { + private String healthDtls; + + private String healthStartDate; + + private String healthEndDate; + + public String getHealthDtls() { + return this.healthDtls; + } + + public void setHealthDtls(String newHealthDtls) { + this.healthDtls = newHealthDtls; + } + + public String getHealthStartDate() { + return this.healthStartDate; + } + + public void setHealthStartDate(String newHealthStartDate) { + this.healthStartDate = newHealthStartDate; + } + + public String getHealthEndDate() { + return this.healthEndDate; + } + + public void setHealthEndDate(String newHealthEndDate) { + this.healthEndDate = newHealthEndDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java new file mode 100644 index 0000000..56e5456 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java @@ -0,0 +1,156 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersHstDtlBean extends BaseDetailBean implements Serializable { + private String txtSerialNo; + + private String txtActivity; + + private String txtEffectiveDate; + + private String txtFromBasic; + + private String txtToBasic; + + private String txtFromGrade; + + private String txtToGrade; + + private String txtFromDesig; + + private String txtToDesig; + + private String txtFromDepartment; + + private String txtFromLocation; + + private String txtToLocation; + + private String txtFromDesigId; + + private String txtToDesigId; + + private String txtToDepartment; + + public String getTxtSerialNo() { + return this.txtSerialNo; + } + + public void setTxtSerialNo(String newTxtSerialNo) { + this.txtSerialNo = newTxtSerialNo; + } + + public String getTxtActivity() { + return this.txtActivity; + } + + public void setTxtActivity(String newTxtActivity) { + this.txtActivity = newTxtActivity; + } + + public String getTxtEffectiveDate() { + return this.txtEffectiveDate; + } + + public void setTxtEffectiveDate(String newTxtEffectiveDate) { + this.txtEffectiveDate = newTxtEffectiveDate; + } + + public String getTxtFromBasic() { + return this.txtFromBasic; + } + + public void setTxtFromBasic(String newTxtFromBasic) { + this.txtFromBasic = newTxtFromBasic; + } + + public String getTxtToBasic() { + return this.txtToBasic; + } + + public void setTxtToBasic(String newTxtToBasic) { + this.txtToBasic = newTxtToBasic; + } + + public String getTxtFromGrade() { + return this.txtFromGrade; + } + + public void setTxtFromGrade(String newTxtFromGrade) { + this.txtFromGrade = newTxtFromGrade; + } + + public String getTxtToGrade() { + return this.txtToGrade; + } + + public void setTxtToGrade(String newTxtToGrade) { + this.txtToGrade = newTxtToGrade; + } + + public String getTxtFromDesig() { + return this.txtFromDesig; + } + + public void setTxtFromDesig(String newTxtFromDesig) { + this.txtFromDesig = newTxtFromDesig; + } + + public String getTxtToDesig() { + return this.txtToDesig; + } + + public void setTxtToDesig(String newTxtToDesig) { + this.txtToDesig = newTxtToDesig; + } + + public String getTxtFromDepartment() { + return this.txtFromDepartment; + } + + public void setTxtFromDepartment(String newTxtFromDepartment) { + this.txtFromDepartment = newTxtFromDepartment; + } + + public String getTxtFromLocation() { + return this.txtFromLocation; + } + + public void setTxtFromLocation(String newTxtFromLocation) { + this.txtFromLocation = newTxtFromLocation; + } + + public String getTxtToLocation() { + return this.txtToLocation; + } + + public void setTxtToLocation(String newTxtToLocation) { + this.txtToLocation = newTxtToLocation; + } + + public String getTxtFromDesigId() { + return this.txtFromDesigId; + } + + public void setTxtFromDesigId(String newTxtFromDesigId) { + this.txtFromDesigId = newTxtFromDesigId; + } + + public String getTxtToDesigId() { + return this.txtToDesigId; + } + + public void setTxtToDesigId(String newTxtToDesigId) { + this.txtToDesigId = newTxtToDesigId; + } + + public String getTxtToDepartment() { + return this.txtToDepartment; + } + + public void setTxtToDepartment(String newTxtToDepartment) { + this.txtToDepartment = newTxtToDepartment; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java new file mode 100644 index 0000000..125d55d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersInsDtlBean extends BaseDetailBean implements Serializable { + private String invDtls; + + private String invAmount; + + private String invPolicyNo; + + private String invDate; + + public String getInvDtls() { + return this.invDtls; + } + + public void setInvDtls(String newInvDtls) { + this.invDtls = newInvDtls; + } + + public String getInvAmount() { + return this.invAmount; + } + + public void setInvAmount(String newInvAmount) { + this.invAmount = newInvAmount; + } + + public String getInvPolicyNo() { + return this.invPolicyNo; + } + + public void setInvPolicyNo(String newInvPolicyNo) { + this.invPolicyNo = newInvPolicyNo; + } + + public String getInvDate() { + return this.invDate; + } + + public void setInvDate(String newInvDate) { + this.invDate = newInvDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java new file mode 100644 index 0000000..dfaef01 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java @@ -0,0 +1,346 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersJoinInfDtlBean extends BaseDetailBean implements Serializable { + private String baseSiteId; + + private String entryModeCode; + + private String employeeStatusCode; + + private String separationId; + + private String costId; + + private String accSite; + + private String accSiteId; + + private String costCode; + + private String entryModeId; + + private String baseSite; + + private String empStatId; + + private String sepCode; + + private String compJoiningDate; + + private String tentativeConfDate; + + private String placeOfInitialPosting; + + private String entryMode; + + private String refNo; + + private String orderNo; + + private String orderDate; + + private String paymentType; + + private String bankCode; + + private String bankName; + + private String accountNumber; + + private String employeeStatus; + + private String statusEffectDate; + + private String retirementDate; + + private String accountingSite; + + private String separationType; + + private String costCentre; + + private String bankId; + + private String branchName; + + private String jobRespId; + + private String jobResp; + + private String disabbutjobResp; + + public String getBaseSiteId() { + return this.baseSiteId; + } + + public void setBaseSiteId(String newBaseSiteId) { + this.baseSiteId = newBaseSiteId; + } + + public String getEntryModeCode() { + return this.entryModeCode; + } + + public void setEntryModeCode(String newEntryModeCode) { + this.entryModeCode = newEntryModeCode; + } + + public String getEmployeeStatusCode() { + return this.employeeStatusCode; + } + + public void setEmployeeStatusCode(String newEmployeeStatusCode) { + this.employeeStatusCode = newEmployeeStatusCode; + } + + public String getSeparationId() { + return this.separationId; + } + + public void setSeparationId(String newSeparationId) { + this.separationId = newSeparationId; + } + + public String getCostId() { + return this.costId; + } + + public void setCostId(String newCostId) { + this.costId = newCostId; + } + + public String getAccSite() { + return this.accSite; + } + + public void setAccSite(String newAccSite) { + this.accSite = newAccSite; + } + + public String getAccSiteId() { + return this.accSiteId; + } + + public void setAccSiteId(String newAccSiteId) { + this.accSiteId = newAccSiteId; + } + + public String getCostCode() { + return this.costCode; + } + + public void setCostCode(String newCostCode) { + this.costCode = newCostCode; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String getBaseSite() { + return this.baseSite; + } + + public void setBaseSite(String newBaseSite) { + this.baseSite = newBaseSite; + } + + public String getEmpStatId() { + return this.empStatId; + } + + public void setEmpStatId(String newEmpStatId) { + this.empStatId = newEmpStatId; + } + + public String getSepCode() { + return this.sepCode; + } + + public void setSepCode(String newSepCode) { + this.sepCode = newSepCode; + } + + public String getCompJoiningDate() { + return this.compJoiningDate; + } + + public void setCompJoiningDate(String newCompJoiningDate) { + this.compJoiningDate = newCompJoiningDate; + } + + public String getTentativeConfDate() { + return this.tentativeConfDate; + } + + public void setTentativeConfDate(String newTentativeConfDate) { + this.tentativeConfDate = newTentativeConfDate; + } + + public String getPlaceOfInitialPosting() { + return this.placeOfInitialPosting; + } + + public void setPlaceOfInitialPosting(String newPlaceOfInitialPosting) { + this.placeOfInitialPosting = newPlaceOfInitialPosting; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRefNo() { + return this.refNo; + } + + public void setRefNo(String newRefNo) { + this.refNo = newRefNo; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getPaymentType() { + return this.paymentType; + } + + public void setPaymentType(String newPaymentType) { + this.paymentType = newPaymentType; + } + + public String getBankCode() { + return this.bankCode; + } + + public void setBankCode(String newBankCode) { + this.bankCode = newBankCode; + } + + public String getBankName() { + return this.bankName; + } + + public void setBankName(String newBankName) { + this.bankName = newBankName; + } + + public String getAccountNumber() { + return this.accountNumber; + } + + public void setAccountNumber(String newAccountNumber) { + this.accountNumber = newAccountNumber; + } + + public String getEmployeeStatus() { + return this.employeeStatus; + } + + public void setEmployeeStatus(String newEmployeeStatus) { + this.employeeStatus = newEmployeeStatus; + } + + public String getStatusEffectDate() { + return this.statusEffectDate; + } + + public void setStatusEffectDate(String newStatusEffectDate) { + this.statusEffectDate = newStatusEffectDate; + } + + public String getRetirementDate() { + return this.retirementDate; + } + + public void setRetirementDate(String newRetirementDate) { + this.retirementDate = newRetirementDate; + } + + public String getAccountingSite() { + return this.accountingSite; + } + + public void setAccountingSite(String newAccountingSite) { + this.accountingSite = newAccountingSite; + } + + public String getSeparationType() { + return this.separationType; + } + + public void setSeparationType(String newSeparationType) { + this.separationType = newSeparationType; + } + + public String getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String newCostCentre) { + this.costCentre = newCostCentre; + } + + public String getBankId() { + return this.bankId; + } + + public void setBankId(String newBankId) { + this.bankId = newBankId; + } + + public String getBranchName() { + return this.branchName; + } + + public void setBranchName(String newBranchName) { + this.branchName = newBranchName; + } + + public String getJobRespId() { + return this.jobRespId; + } + + public void setJobRespId(String newJobRespId) { + this.jobRespId = newJobRespId; + } + + public String getJobResp() { + return this.jobResp; + } + + public void setJobResp(String newJobResp) { + this.jobResp = newJobResp; + } + + public String getDisabbutjobResp() { + return this.disabbutjobResp; + } + + public void setDisabbutjobResp(String newDisabbutjobResp) { + this.disabbutjobResp = newDisabbutjobResp; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java new file mode 100644 index 0000000..3ea462c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersLngDtlBean extends BaseDetailBean implements Serializable { + private String lngName; + + private String lngSpeak; + + private String lngRead; + + private String lngWrite; + + public String getLngName() { + return this.lngName; + } + + public void setLngName(String newLngName) { + this.lngName = newLngName; + } + + public String getLngSpeak() { + return this.lngSpeak; + } + + public void setLngSpeak(String newLngSpeak) { + this.lngSpeak = newLngSpeak; + } + + public String getLngRead() { + return this.lngRead; + } + + public void setLngRead(String newLngRead) { + this.lngRead = newLngRead; + } + + public String getLngWrite() { + return this.lngWrite; + } + + public void setLngWrite(String newLngWrite) { + this.lngWrite = newLngWrite; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java new file mode 100644 index 0000000..d01c20b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java @@ -0,0 +1,96 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersPFDtlBean extends BaseDetailBean implements Serializable { + String txtRelation; + + String txtNomineeName; + + String txtPercentage; + + String txtRelationId; + + private String txtNomineeId; + + private String txtDob; + + private String txtAddress; + + private String txtTotalAmount; + + private String txtMinorDetails; + + public String getTxtRelation() { + return this.txtRelation; + } + + public void setTxtRelation(String newTxtRelation) { + this.txtRelation = newTxtRelation; + } + + public String getTxtNomineeName() { + return this.txtNomineeName; + } + + public void setTxtNomineeName(String newTxtNomineeName) { + this.txtNomineeName = newTxtNomineeName; + } + + public String getTxtPercentage() { + return this.txtPercentage; + } + + public void setTxtPercentage(String newTxtPercentage) { + this.txtPercentage = newTxtPercentage; + } + + public String getTxtRelationId() { + return this.txtRelationId; + } + + public void setTxtRelationId(String newTxtRelationId) { + this.txtRelationId = newTxtRelationId; + } + + public String getTxtNomineeId() { + return this.txtNomineeId; + } + + public void setTxtNomineeId(String newTxtNomineeId) { + this.txtNomineeId = newTxtNomineeId; + } + + public String getTxtDob() { + return this.txtDob; + } + + public void setTxtDob(String newTxtDob) { + this.txtDob = newTxtDob; + } + + public String getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String getTxtTotalAmount() { + return this.txtTotalAmount; + } + + public void setTxtTotalAmount(String newTxtTotalAmount) { + this.txtTotalAmount = newTxtTotalAmount; + } + + public String getTxtMinorDetails() { + return this.txtMinorDetails; + } + + public void setTxtMinorDetails(String newTxtMinorDetails) { + this.txtMinorDetails = newTxtMinorDetails; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java new file mode 100644 index 0000000..62d52f3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersPriorExpDtlBean extends BaseDetailBean implements Serializable { + private String txtOrgName; + + private String txtOrgAdd; + + private String txtFromDate; + + private String txtToDate; + + private String txtWorkExp; + + private String txtDesignation; + + private String txtReportTo; + + private String txtJobDesc; + + private String txtPersonnelSupervised; + + private String txtSalStarting; + + private String txtSalLeaving; + + private String txtBasic; + + private String txtDa; + + private String txtHra; + + private String txtConveyance; + + private String txtOtherAllowance; + + private String txtBonus; + + private String txtIncentives; + + public String getTxtOrgName() { + return this.txtOrgName; + } + + public void setTxtOrgName(String newTxtOrgName) { + this.txtOrgName = newTxtOrgName; + } + + public String getTxtOrgAdd() { + return this.txtOrgAdd; + } + + public void setTxtOrgAdd(String newTxtOrgAdd) { + this.txtOrgAdd = newTxtOrgAdd; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtWorkExp() { + return this.txtWorkExp; + } + + public void setTxtWorkExp(String newTxtWorkExp) { + this.txtWorkExp = newTxtWorkExp; + } + + public String getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String getTxtReportTo() { + return this.txtReportTo; + } + + public void setTxtReportTo(String newTxtReportTo) { + this.txtReportTo = newTxtReportTo; + } + + public String getTxtJobDesc() { + return this.txtJobDesc; + } + + public void setTxtJobDesc(String newTxtJobDesc) { + this.txtJobDesc = newTxtJobDesc; + } + + public String getTxtPersonnelSupervised() { + return this.txtPersonnelSupervised; + } + + public void setTxtPersonnelSupervised(String newTxtPersonnelSupervised) { + this.txtPersonnelSupervised = newTxtPersonnelSupervised; + } + + public String getTxtSalStarting() { + return this.txtSalStarting; + } + + public void setTxtSalStarting(String newTxtSalStarting) { + this.txtSalStarting = newTxtSalStarting; + } + + public String getTxtSalLeaving() { + return this.txtSalLeaving; + } + + public void setTxtSalLeaving(String newTxtSalLeaving) { + this.txtSalLeaving = newTxtSalLeaving; + } + + public String getTxtBasic() { + return this.txtBasic; + } + + public void setTxtBasic(String newTxtBasic) { + this.txtBasic = newTxtBasic; + } + + public String getTxtDa() { + return this.txtDa; + } + + public void setTxtDa(String newTxtDa) { + this.txtDa = newTxtDa; + } + + public String getTxtHra() { + return this.txtHra; + } + + public void setTxtHra(String newTxtHra) { + this.txtHra = newTxtHra; + } + + public String getTxtConveyance() { + return this.txtConveyance; + } + + public void setTxtConveyance(String newTxtConveyance) { + this.txtConveyance = newTxtConveyance; + } + + public String getTxtOtherAllowance() { + return this.txtOtherAllowance; + } + + public void setTxtOtherAllowance(String newTxtOtherAllowance) { + this.txtOtherAllowance = newTxtOtherAllowance; + } + + public String getTxtBonus() { + return this.txtBonus; + } + + public void setTxtBonus(String newTxtBonus) { + this.txtBonus = newTxtBonus; + } + + public String getTxtIncentives() { + return this.txtIncentives; + } + + public void setTxtIncentives(String newTxtIncentives) { + this.txtIncentives = newTxtIncentives; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java new file mode 100644 index 0000000..4922e69 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersRefDtlBean extends BaseDetailBean implements Serializable { + String txtName; + + String txtAddress; + + private String txtTelephoneNo; + + String txtPositionOccupation; + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String getTxtTelephoneNo() { + return this.txtTelephoneNo; + } + + public void setTxtTelephoneNo(String newTxtTelephoneNo) { + this.txtTelephoneNo = newTxtTelephoneNo; + } + + public String getTxtPositionOccupation() { + return this.txtPositionOccupation; + } + + public void setTxtPositionOccupation(String newTxtPositionOccupation) { + this.txtPositionOccupation = newTxtPositionOccupation; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java new file mode 100644 index 0000000..6cc06e7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersTrngDtlsDtlBean extends BaseDetailBean implements Serializable { + String txtCourseName; + + String txtFromDate; + + String txtToDate; + + String txtCalendarName; + + String txtRating; + + String txtParticipation; + + String txtNonPart; + + private String txtNameOfInst; + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtCalendarName() { + return this.txtCalendarName; + } + + public void setTxtCalendarName(String newTxtCalendarName) { + this.txtCalendarName = newTxtCalendarName; + } + + public String getTxtRating() { + return this.txtRating; + } + + public void setTxtRating(String newTxtRating) { + this.txtRating = newTxtRating; + } + + public String getTxtParticipation() { + return this.txtParticipation; + } + + public void setTxtParticipation(String newTxtParticipation) { + this.txtParticipation = newTxtParticipation; + } + + public String getTxtNonPart() { + return this.txtNonPart; + } + + public void setTxtNonPart(String newTxtNonPart) { + this.txtNonPart = newTxtNonPart; + } + + public String getTxtNameOfInst() { + return this.txtNameOfInst; + } + + public void setTxtNameOfInst(String newTxtNameOfInst) { + this.txtNameOfInst = newTxtNameOfInst; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java new file mode 100644 index 0000000..247de83 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java @@ -0,0 +1,276 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpTransCnclApplHdrBean extends BaseHeaderBean implements Serializable { + private String applnNo; + + private String applnDate; + + private String empNo; + + private String empName; + + private String generatedBy; + + private String ofcNoteNo; + + private String ofcNoteDate; + + private String cancelDeferFlag; + + private String defermentPeriod; + + private String deferredDate; + + private String reason; + + private String deferredStatus; + + private String orderNo; + + private String trnOrderType; + + private String fromSite; + + private String toSite; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String fromDesignation; + + private String toDesignation; + + String applnNoId; + + String ofcNoteId; + + String employeeNoId; + + String orderDtlId; + + String orderDate; + + String effectDate; + + String empId; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getGeneratedBy() { + return this.generatedBy; + } + + public void setGeneratedBy(String newGeneratedBy) { + this.generatedBy = newGeneratedBy; + } + + public String getOfcNoteNo() { + return this.ofcNoteNo; + } + + public void setOfcNoteNo(String newOfcNoteNo) { + this.ofcNoteNo = newOfcNoteNo; + } + + public String getOfcNoteDate() { + return this.ofcNoteDate; + } + + public void setOfcNoteDate(String newOfcNoteDate) { + this.ofcNoteDate = newOfcNoteDate; + } + + public String getCancelDeferFlag() { + return this.cancelDeferFlag; + } + + public void setCancelDeferFlag(String newCancelDeferFlag) { + this.cancelDeferFlag = newCancelDeferFlag; + } + + public String getDefermentPeriod() { + return this.defermentPeriod; + } + + public void setDefermentPeriod(String newDefermentPeriod) { + this.defermentPeriod = newDefermentPeriod; + } + + public String getDeferredDate() { + return this.deferredDate; + } + + public void setDeferredDate(String newDeferredDate) { + this.deferredDate = newDeferredDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getDeferredStatus() { + return this.deferredStatus; + } + + public void setDeferredStatus(String newDeferredStatus) { + this.deferredStatus = newDeferredStatus; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getTrnOrderType() { + return this.trnOrderType; + } + + public void setTrnOrderType(String newTrnOrderType) { + this.trnOrderType = newTrnOrderType; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getOfcNoteId() { + return this.ofcNoteId; + } + + public void setOfcNoteId(String newOfcNoteId) { + this.ofcNoteId = newOfcNoteId; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getOrderDtlId() { + return this.orderDtlId; + } + + public void setOrderDtlId(String newOrderDtlId) { + this.orderDtlId = newOrderDtlId; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getEffectDate() { + return this.effectDate; + } + + public void setEffectDate(String newEffectDate) { + this.effectDate = newEffectDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java new file mode 100644 index 0000000..0524101 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpWrkgrpDtlBean extends BaseDetailBean implements Serializable { + private String id; + + private String name; + + private String reportingEmpId; + + private String empNo; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java new file mode 100644 index 0000000..5e5472c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmGenEligRuleHdrBean extends BaseHeaderBean implements Serializable { + private String eligSql; + + private String formula; + + private String documentType; + + private String hidDocumentCodeId; + + private String documentCode; + + private String hidAction; + + public String getEligSql() { + return this.eligSql; + } + + public void setEligSql(String newEligSql) { + this.eligSql = newEligSql; + } + + public String getFormula() { + return this.formula; + } + + public void setFormula(String newFormula) { + this.formula = newFormula; + } + + public String getDocumentType() { + return this.documentType; + } + + public void setDocumentType(String newDocumentType) { + this.documentType = newDocumentType; + } + + public String getHidDocumentCodeId() { + return this.hidDocumentCodeId; + } + + public void setHidDocumentCodeId(String newHidDocumentCodeId) { + this.hidDocumentCodeId = newHidDocumentCodeId; + } + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getHidAction() { + return this.hidAction; + } + + public void setHidAction(String newHidAction) { + this.hidAction = newHidAction; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java new file mode 100644 index 0000000..57a2da3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmGenEligRuleQueryDtlBean extends BaseDetailBean implements Serializable { + private String txtdocCode; + + private String txteligSql; + + private String disabtxtdocCode; + + private String disabtxteligSql; + + public String getTxtdocCode() { + return this.txtdocCode; + } + + public void setTxtdocCode(String newTxtdocCode) { + this.txtdocCode = newTxtdocCode; + } + + public String getTxteligSql() { + return this.txteligSql; + } + + public void setTxteligSql(String newTxteligSql) { + this.txteligSql = newTxteligSql; + } + + public String getDisabtxtdocCode() { + return this.disabtxtdocCode; + } + + public void setDisabtxtdocCode(String newDisabtxtdocCode) { + this.disabtxtdocCode = newDisabtxtdocCode; + } + + public String getDisabtxteligSql() { + return this.disabtxteligSql; + } + + public void setDisabtxteligSql(String newDisabtxteligSql) { + this.disabtxteligSql = newDisabtxteligSql; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java new file mode 100644 index 0000000..980e5eb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmGenEligRuleQueryHdrBean extends BaseHeaderBean implements Serializable { + private String docType; + + public String getDocType() { + return this.docType; + } + + public void setDocType(String newDocType) { + this.docType = newDocType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java new file mode 100644 index 0000000..6ba015a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java @@ -0,0 +1,25 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; + +public class HrmGenGenerateFormulaHdrBean implements Serializable { + private String txtParameterCode; + + private String txtParameterDescription; + + public String getTxtParameterCode() { + return this.txtParameterCode; + } + + public void setTxtParameterCode(String newTxtParameterCode) { + this.txtParameterCode = newTxtParameterCode; + } + + public String getTxtParameterDescription() { + return this.txtParameterDescription; + } + + public void setTxtParameterDescription(String newTxtParameterDescription) { + this.txtParameterDescription = newTxtParameterDescription; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnAppDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnAppDtlBean.java new file mode 100644 index 0000000..52bada2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnAppDtlBean.java @@ -0,0 +1,226 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnAppDtlBean extends BaseDetailBean implements Serializable { + private String propertyPrice; + + private String eligibleAmount; + + private String appliedAmount; + + private String applnDate; + + private String sanctionDate; + + private String noOfInstallment; + + private String fullyRepaid; + + private String firstInstDate; + + private String approvedFlag; + + private String reason; + + private String remarks; + + private String percProperty; + + private String disabappliedAmount; + + private String disabbutApplnDate; + + private String disabpropertyPrice; + + private String disabpercProperty; + + private String disabbutSanctionDate; + + private String disabnoOfInstallment; + + private String disabbutFirstInstDate; + + private String disabreason; + + private String disabremarks; + + private String sanctionedAmount; + + public String getPropertyPrice() { + return this.propertyPrice; + } + + public void setPropertyPrice(String newPropertyPrice) { + this.propertyPrice = newPropertyPrice; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getAppliedAmount() { + return this.appliedAmount; + } + + public void setAppliedAmount(String newAppliedAmount) { + this.appliedAmount = newAppliedAmount; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getNoOfInstallment() { + return this.noOfInstallment; + } + + public void setNoOfInstallment(String newNoOfInstallment) { + this.noOfInstallment = newNoOfInstallment; + } + + public String getFullyRepaid() { + return this.fullyRepaid; + } + + public void setFullyRepaid(String newFullyRepaid) { + this.fullyRepaid = newFullyRepaid; + } + + public String getFirstInstDate() { + return this.firstInstDate; + } + + public void setFirstInstDate(String newFirstInstDate) { + this.firstInstDate = newFirstInstDate; + } + + public String getApprovedFlag() { + return this.approvedFlag; + } + + public void setApprovedFlag(String newApprovedFlag) { + this.approvedFlag = newApprovedFlag; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getPercProperty() { + return this.percProperty; + } + + public void setPercProperty(String newPercProperty) { + this.percProperty = newPercProperty; + } + + public String getDisabappliedAmount() { + return this.disabappliedAmount; + } + + public void setDisabappliedAmount(String newDisabappliedAmount) { + this.disabappliedAmount = newDisabappliedAmount; + } + + public String getDisabbutApplnDate() { + return this.disabbutApplnDate; + } + + public void setDisabbutApplnDate(String newDisabbutApplnDate) { + this.disabbutApplnDate = newDisabbutApplnDate; + } + + public String getDisabpropertyPrice() { + return this.disabpropertyPrice; + } + + public void setDisabpropertyPrice(String newDisabpropertyPrice) { + this.disabpropertyPrice = newDisabpropertyPrice; + } + + public String getDisabpercProperty() { + return this.disabpercProperty; + } + + public void setDisabpercProperty(String newDisabpercProperty) { + this.disabpercProperty = newDisabpercProperty; + } + + public String getDisabbutSanctionDate() { + return this.disabbutSanctionDate; + } + + public void setDisabbutSanctionDate(String newDisabbutSanctionDate) { + this.disabbutSanctionDate = newDisabbutSanctionDate; + } + + public String getDisabnoOfInstallment() { + return this.disabnoOfInstallment; + } + + public void setDisabnoOfInstallment(String newDisabnoOfInstallment) { + this.disabnoOfInstallment = newDisabnoOfInstallment; + } + + public String getDisabbutFirstInstDate() { + return this.disabbutFirstInstDate; + } + + public void setDisabbutFirstInstDate(String newDisabbutFirstInstDate) { + this.disabbutFirstInstDate = newDisabbutFirstInstDate; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnAppHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnAppHdrBean.java new file mode 100644 index 0000000..c47e3d4 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnAppHdrBean.java @@ -0,0 +1,566 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLnAppHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String loanCode; + + private String middleName; + + private String lastName; + + private String loanDesc; + + private String loanCodeId; + + private String designation; + + private String empId; + + private String eligibleAmount; + + private String appliedAmount; + + private String applnDate; + + private String sanctionDate; + + private String noOfInstallment; + + private String fullyRepaid; + + private String reason; + + private String remarks; + + private String sanctionedAmount; + + private String interestBalance; + + private String principalBalance; + + private String totalBalance; + + private String interestPaid; + + private String principalPaid; + + private String totalAmountPaid; + + private String noOfInstInterestPaid; + + private String noOfInstPrincipalPaid; + + private String noOfInstPaid; + + private String approverName; + + private String approverNoId; + + private String instAmount; + + private String totalInterestInst; + + private String totalPrincipalInst; + + private String totalInst; + + private String payrollMonth; + + private String loanDetails; + + private String location; + + private String grade; + + private String hblAppliedFor; + + private String hblBranhConst; + + private String hblDocSubmitted; + + private String hblCity; + + private String hblPO; + + private String hblDistrict; + + private String hblMouza; + + private String hblKhatian; + + private String hblDag; + + private String hblNoOfDeed; + + private String hblParentDeed; + + private String hblVolOfDeed; + + private String hblBookNo; + + private String hblPageNo; + + private String hblRegisteredAt; + + private String bulkAmount; + + private String mode; + + private String bulkFlag; + + private String bulkPaymentDate; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getLoanDesc() { + return this.loanDesc; + } + + public void setLoanDesc(String newLoanDesc) { + this.loanDesc = newLoanDesc; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getAppliedAmount() { + return this.appliedAmount; + } + + public void setAppliedAmount(String newAppliedAmount) { + this.appliedAmount = newAppliedAmount; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getNoOfInstallment() { + return this.noOfInstallment; + } + + public void setNoOfInstallment(String newNoOfInstallment) { + this.noOfInstallment = newNoOfInstallment; + } + + public String getFullyRepaid() { + return this.fullyRepaid; + } + + public void setFullyRepaid(String newFullyRepaid) { + this.fullyRepaid = newFullyRepaid; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getInterestBalance() { + return this.interestBalance; + } + + public void setInterestBalance(String newInterestBalance) { + this.interestBalance = newInterestBalance; + } + + public String getPrincipalBalance() { + return this.principalBalance; + } + + public void setPrincipalBalance(String newPrincipalBalance) { + this.principalBalance = newPrincipalBalance; + } + + public String getTotalBalance() { + return this.totalBalance; + } + + public void setTotalBalance(String newTotalBalance) { + this.totalBalance = newTotalBalance; + } + + public String getInterestPaid() { + return this.interestPaid; + } + + public void setInterestPaid(String newInterestPaid) { + this.interestPaid = newInterestPaid; + } + + public String getPrincipalPaid() { + return this.principalPaid; + } + + public void setPrincipalPaid(String newPrincipalPaid) { + this.principalPaid = newPrincipalPaid; + } + + public String getTotalAmountPaid() { + return this.totalAmountPaid; + } + + public void setTotalAmountPaid(String newTotalAmountPaid) { + this.totalAmountPaid = newTotalAmountPaid; + } + + public String getNoOfInstInterestPaid() { + return this.noOfInstInterestPaid; + } + + public void setNoOfInstInterestPaid(String newNoOfInstInterestPaid) { + this.noOfInstInterestPaid = newNoOfInstInterestPaid; + } + + public String getNoOfInstPrincipalPaid() { + return this.noOfInstPrincipalPaid; + } + + public void setNoOfInstPrincipalPaid(String newNoOfInstPrincipalPaid) { + this.noOfInstPrincipalPaid = newNoOfInstPrincipalPaid; + } + + public String getNoOfInstPaid() { + return this.noOfInstPaid; + } + + public void setNoOfInstPaid(String newNoOfInstPaid) { + this.noOfInstPaid = newNoOfInstPaid; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getInstAmount() { + return this.instAmount; + } + + public void setInstAmount(String newInstAmount) { + this.instAmount = newInstAmount; + } + + public String getTotalInterestInst() { + return this.totalInterestInst; + } + + public void setTotalInterestInst(String newTotalInterestInst) { + this.totalInterestInst = newTotalInterestInst; + } + + public String getTotalPrincipalInst() { + return this.totalPrincipalInst; + } + + public void setTotalPrincipalInst(String newTotalPrincipalInst) { + this.totalPrincipalInst = newTotalPrincipalInst; + } + + public String getTotalInst() { + return this.totalInst; + } + + public void setTotalInst(String newTotalInst) { + this.totalInst = newTotalInst; + } + + public String getPayrollMonth() { + return this.payrollMonth; + } + + public void setPayrollMonth(String newPayrollMonth) { + this.payrollMonth = newPayrollMonth; + } + + public String getLoanDetails() { + return this.loanDetails; + } + + public void setLoanDetails(String newLoanDetails) { + this.loanDetails = newLoanDetails; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getHblAppliedFor() { + return this.hblAppliedFor; + } + + public void setHblAppliedFor(String newHblAppliedFor) { + this.hblAppliedFor = newHblAppliedFor; + } + + public String getHblBranhConst() { + return this.hblBranhConst; + } + + public void setHblBranhConst(String newHblBranhConst) { + this.hblBranhConst = newHblBranhConst; + } + + public String getHblDocSubmitted() { + return this.hblDocSubmitted; + } + + public void setHblDocSubmitted(String newHblDocSubmitted) { + this.hblDocSubmitted = newHblDocSubmitted; + } + + public String getHblCity() { + return this.hblCity; + } + + public void setHblCity(String newHblCity) { + this.hblCity = newHblCity; + } + + public String getHblPO() { + return this.hblPO; + } + + public void setHblPO(String newHblPO) { + this.hblPO = newHblPO; + } + + public String getHblDistrict() { + return this.hblDistrict; + } + + public void setHblDistrict(String newHblDistrict) { + this.hblDistrict = newHblDistrict; + } + + public String getHblMouza() { + return this.hblMouza; + } + + public void setHblMouza(String newHblMouza) { + this.hblMouza = newHblMouza; + } + + public String getHblKhatian() { + return this.hblKhatian; + } + + public void setHblKhatian(String newHblKhatian) { + this.hblKhatian = newHblKhatian; + } + + public String getHblDag() { + return this.hblDag; + } + + public void setHblDag(String newHblDag) { + this.hblDag = newHblDag; + } + + public String getHblNoOfDeed() { + return this.hblNoOfDeed; + } + + public void setHblNoOfDeed(String newHblNoOfDeed) { + this.hblNoOfDeed = newHblNoOfDeed; + } + + public String getHblParentDeed() { + return this.hblParentDeed; + } + + public void setHblParentDeed(String newHblParentDeed) { + this.hblParentDeed = newHblParentDeed; + } + + public String getHblVolOfDeed() { + return this.hblVolOfDeed; + } + + public void setHblVolOfDeed(String newHblVolOfDeed) { + this.hblVolOfDeed = newHblVolOfDeed; + } + + public String getHblBookNo() { + return this.hblBookNo; + } + + public void setHblBookNo(String newHblBookNo) { + this.hblBookNo = newHblBookNo; + } + + public String getHblPageNo() { + return this.hblPageNo; + } + + public void setHblPageNo(String newHblPageNo) { + this.hblPageNo = newHblPageNo; + } + + public String getHblRegisteredAt() { + return this.hblRegisteredAt; + } + + public void setHblRegisteredAt(String newHblRegisteredAt) { + this.hblRegisteredAt = newHblRegisteredAt; + } + + public String getBulkAmount() { + return this.bulkAmount; + } + + public void setBulkAmount(String newBulkAmount) { + this.bulkAmount = newBulkAmount; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } + + public String getBulkFlag() { + return this.bulkFlag; + } + + public void setBulkFlag(String newBulkFlag) { + this.bulkFlag = newBulkFlag; + } + + public String getBulkPaymentDate() { + return this.bulkPaymentDate; + } + + public void setBulkPaymentDate(String newBulkPaymentDate) { + this.bulkPaymentDate = newBulkPaymentDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java new file mode 100644 index 0000000..16a507d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java @@ -0,0 +1,3 @@ +package wenrgise.hrms.bean; + +public class HrmLnAppRepayDtlBean {} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnChartDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnChartDtlBean.java new file mode 100644 index 0000000..265d30a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnChartDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnChartDtlBean extends BaseDetailBean implements Serializable { + private String txtLoanAmt; + + private String txtNumberOfInstallments; + + private String txtPrincipal; + + private String txtInterest; + + private String txtEqualMonthlyInstallment; + + public String getTxtLoanAmt() { + return this.txtLoanAmt; + } + + public void setTxtLoanAmt(String newTxtLoanAmt) { + this.txtLoanAmt = newTxtLoanAmt; + } + + public String getTxtNumberOfInstallments() { + return this.txtNumberOfInstallments; + } + + public void setTxtNumberOfInstallments(String newTxtNumberOfInstallments) { + this.txtNumberOfInstallments = newTxtNumberOfInstallments; + } + + public String getTxtPrincipal() { + return this.txtPrincipal; + } + + public void setTxtPrincipal(String newTxtPrincipal) { + this.txtPrincipal = newTxtPrincipal; + } + + public String getTxtInterest() { + return this.txtInterest; + } + + public void setTxtInterest(String newTxtInterest) { + this.txtInterest = newTxtInterest; + } + + public String getTxtEqualMonthlyInstallment() { + return this.txtEqualMonthlyInstallment; + } + + public void setTxtEqualMonthlyInstallment(String newTxtEqualMonthlyInstallment) { + this.txtEqualMonthlyInstallment = newTxtEqualMonthlyInstallment; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnChartHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnChartHdrBean.java new file mode 100644 index 0000000..43d26b3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnChartHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLnChartHdrBean extends BaseHeaderBean implements Serializable { + private String chartName; + + private String chartId; + + private String effectiveFromDate; + + private String effectiveToDate; + + private String interestRate; + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getEffectiveFromDate() { + return this.effectiveFromDate; + } + + public void setEffectiveFromDate(String newEffectiveFromDate) { + this.effectiveFromDate = newEffectiveFromDate; + } + + public String getEffectiveToDate() { + return this.effectiveToDate; + } + + public void setEffectiveToDate(String newEffectiveToDate) { + this.effectiveToDate = newEffectiveToDate; + } + + public String getInterestRate() { + return this.interestRate; + } + + public void setInterestRate(String newInterestRate) { + this.interestRate = newInterestRate; + } + + public String getChartId() { + return this.chartId; + } + + public void setChartId(String newChartId) { + this.chartId = newChartId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnDisDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnDisDtlBean.java new file mode 100644 index 0000000..31a93c0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnDisDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnDisDtlBean extends BaseDetailBean implements Serializable { + private String tentativeDisDate; + + private String tentativeAmt; + + private String actDisDate; + + private String actDisAmt; + + private String disabbutActDisDate; + + public String getTentativeDisDate() { + return this.tentativeDisDate; + } + + public void setTentativeDisDate(String newTentativeDisDate) { + this.tentativeDisDate = newTentativeDisDate; + } + + public String getTentativeAmt() { + return this.tentativeAmt; + } + + public void setTentativeAmt(String newTentativeAmt) { + this.tentativeAmt = newTentativeAmt; + } + + public String getActDisDate() { + return this.actDisDate; + } + + public void setActDisDate(String newActDisDate) { + this.actDisDate = newActDisDate; + } + + public String getActDisAmt() { + return this.actDisAmt; + } + + public void setActDisAmt(String newActDisAmt) { + this.actDisAmt = newActDisAmt; + } + + public String getDisabbutActDisDate() { + return this.disabbutActDisDate; + } + + public void setDisabbutActDisDate(String newDisabbutActDisDate) { + this.disabbutActDisDate = newDisabbutActDisDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java new file mode 100644 index 0000000..ed9ef15 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnHblIntDtlBean extends BaseDetailBean implements Serializable { + private String txtFromAmount; + + private String txtToAmount; + + private String txtPercentage; + + public String getTxtFromAmount() { + return this.txtFromAmount; + } + + public void setTxtFromAmount(String newTxtFromAmount) { + this.txtFromAmount = newTxtFromAmount; + } + + public String getTxtToAmount() { + return this.txtToAmount; + } + + public void setTxtToAmount(String newTxtToAmount) { + this.txtToAmount = newTxtToAmount; + } + + public String getTxtPercentage() { + return this.txtPercentage; + } + + public void setTxtPercentage(String newTxtPercentage) { + this.txtPercentage = newTxtPercentage; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnMstDtlBean.java new file mode 100644 index 0000000..3e8db9c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnMstDtlBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnMstDtlBean extends BaseDetailBean implements Serializable { + private String txtLoanDetailCode; + + private String txtGreaterLessNotApplicable; + + private String txtMaxLimit; + + private String txtMaximumLoanPerc; + + private String txtNoOfMonthsSalary; + + private String txtCompanyPolicyStDate; + + private boolean txtAppliedToAllEmployee; + + String txtCompanyPolicyToDate; + + String allEmployeeApplicable = "N"; + + private String txtMinYrsOfServiceToBeCompleted; + + private String txtMinYrsOfRemainingService; + + public String getTxtLoanDetailCode() { + return this.txtLoanDetailCode; + } + + public void setTxtLoanDetailCode(String newTxtLoanDetailCode) { + this.txtLoanDetailCode = newTxtLoanDetailCode; + } + + public String getTxtGreaterLessNotApplicable() { + return this.txtGreaterLessNotApplicable; + } + + public void setTxtGreaterLessNotApplicable(String newTxtGreaterLessNotApplicable) { + this.txtGreaterLessNotApplicable = newTxtGreaterLessNotApplicable; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String getTxtMaximumLoanPerc() { + return this.txtMaximumLoanPerc; + } + + public void setTxtMaximumLoanPerc(String newTxtMaximumLoanPerc) { + this.txtMaximumLoanPerc = newTxtMaximumLoanPerc; + } + + public String getTxtNoOfMonthsSalary() { + return this.txtNoOfMonthsSalary; + } + + public void setTxtNoOfMonthsSalary(String newTxtNoOfMonthsSalary) { + this.txtNoOfMonthsSalary = newTxtNoOfMonthsSalary; + } + + public String getTxtCompanyPolicyStDate() { + return this.txtCompanyPolicyStDate; + } + + public void setTxtCompanyPolicyStDate(String newTxtCompanyPolicyStDate) { + this.txtCompanyPolicyStDate = newTxtCompanyPolicyStDate; + } + + public boolean getTxtAppliedToAllEmployee() { + return this.txtAppliedToAllEmployee; + } + + public void setTxtAppliedToAllEmployee(boolean newTxtAppliedToAllEmployee) { + this.txtAppliedToAllEmployee = newTxtAppliedToAllEmployee; + } + + public String getTxtCompanyPolicyToDate() { + return this.txtCompanyPolicyToDate; + } + + public void setTxtCompanyPolicyToDate(String newTxtCompanyPolicyToDate) { + this.txtCompanyPolicyToDate = newTxtCompanyPolicyToDate; + } + + public String getAllEmployeeApplicable() { + return this.allEmployeeApplicable; + } + + public void setAllEmployeeApplicable(String newAllEmployeeApplicable) { + this.allEmployeeApplicable = newAllEmployeeApplicable; + } + + public String getTxtMinYrsOfServiceToBeCompleted() { + return this.txtMinYrsOfServiceToBeCompleted; + } + + public void setTxtMinYrsOfServiceToBeCompleted(String newTxtMinYrsOfServiceToBeCompleted) { + this.txtMinYrsOfServiceToBeCompleted = newTxtMinYrsOfServiceToBeCompleted; + } + + public String getTxtMinYrsOfRemainingService() { + return this.txtMinYrsOfRemainingService; + } + + public void setTxtMinYrsOfRemainingService(String newTxtMinYrsOfRemainingService) { + this.txtMinYrsOfRemainingService = newTxtMinYrsOfRemainingService; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLnMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLnMstHdrBean.java new file mode 100644 index 0000000..f10f615 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLnMstHdrBean.java @@ -0,0 +1,126 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLnMstHdrBean extends BaseHeaderBean implements Serializable { + private String chartNameId; + + private String loanCodeId; + + private String loanCode; + + private String loanName; + + private String interestTaxRebate; + + private String typeOfInterest; + + private String repaymentUnits; + + private String settledAutoFrmSalary; + + private String principalTaxRebate; + + private String chartName; + + private String penaltyPercInterest; + + private String natureOfPayment; + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getLoanName() { + return this.loanName; + } + + public void setLoanName(String newLoanName) { + this.loanName = newLoanName; + } + + public String getInterestTaxRebate() { + return this.interestTaxRebate; + } + + public void setInterestTaxRebate(String newInterestTaxRebate) { + this.interestTaxRebate = newInterestTaxRebate; + } + + public String getTypeOfInterest() { + return this.typeOfInterest; + } + + public void setTypeOfInterest(String newTypeOfInterest) { + this.typeOfInterest = newTypeOfInterest; + } + + public String getRepaymentUnits() { + return this.repaymentUnits; + } + + public void setRepaymentUnits(String newRepaymentUnits) { + this.repaymentUnits = newRepaymentUnits; + } + + public String getSettledAutoFrmSalary() { + return this.settledAutoFrmSalary; + } + + public void setSettledAutoFrmSalary(String newSettledAutoFrmSalary) { + this.settledAutoFrmSalary = newSettledAutoFrmSalary; + } + + public String getPrincipalTaxRebate() { + return this.principalTaxRebate; + } + + public void setPrincipalTaxRebate(String newPrincipalTaxRebate) { + this.principalTaxRebate = newPrincipalTaxRebate; + } + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getPenaltyPercInterest() { + return this.penaltyPercInterest; + } + + public void setPenaltyPercInterest(String newPenaltyPercInterest) { + this.penaltyPercInterest = newPenaltyPercInterest; + } + + public String getNatureOfPayment() { + return this.natureOfPayment; + } + + public void setNatureOfPayment(String newNatureOfPayment) { + this.natureOfPayment = newNatureOfPayment; + } + + public String getChartNameId() { + return this.chartNameId; + } + + public void setChartNameId(String newChartNameId) { + this.chartNameId = newChartNameId; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnDtlBean.java new file mode 100644 index 0000000..4e08787 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvApplnDtlBean extends BaseDetailBean implements Serializable { + private String txtDate; + + private String txtHolidayFlag; + + private String txtHalfDayFlag; + + private String disabtxtDate; + + private String disabtxtHolidayFlag; + + private String disabtxtHalfDayFlag; + + public String getTxtDate() { + return this.txtDate; + } + + public void setTxtDate(String newTxtDate) { + this.txtDate = newTxtDate; + } + + public String getTxtHolidayFlag() { + return this.txtHolidayFlag; + } + + public void setTxtHolidayFlag(String newTxtHolidayFlag) { + this.txtHolidayFlag = newTxtHolidayFlag; + } + + public String getTxtHalfDayFlag() { + return this.txtHalfDayFlag; + } + + public void setTxtHalfDayFlag(String newTxtHalfDayFlag) { + this.txtHalfDayFlag = newTxtHalfDayFlag; + } + + public String getDisabtxtDate() { + return this.disabtxtDate; + } + + public void setDisabtxtDate(String newDisabtxtDate) { + this.disabtxtDate = newDisabtxtDate; + } + + public String getDisabtxtHolidayFlag() { + return this.disabtxtHolidayFlag; + } + + public void setDisabtxtHolidayFlag(String newDisabtxtHolidayFlag) { + this.disabtxtHolidayFlag = newDisabtxtHolidayFlag; + } + + public String getDisabtxtHalfDayFlag() { + return this.disabtxtHalfDayFlag; + } + + public void setDisabtxtHalfDayFlag(String newDisabtxtHalfDayFlag) { + this.disabtxtHalfDayFlag = newDisabtxtHalfDayFlag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnHdrBean.java new file mode 100644 index 0000000..ad6802a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnHdrBean.java @@ -0,0 +1,406 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvApplnHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String middleName; + + private String lastName; + + private String designation; + + private String scaleOfPay; + + private String leaveCodes; + + private String description; + + private String dateApplied; + + private String fromAppDate; + + private String toAppDate; + + private String days; + + private String purpose; + + private String statusOfLeaves; + + private String remarks; + + private String address; + + private String phone; + + private String employeeId; + + private String leaveTypeId; + + private String buttonName; + + private String department; + + private String siteId; + + private String[] txtDate; + + private String[] txtHolidayFlag; + + private String[] txtHalfDayFlag; + + private ArrayList detailArray; + + private String userId; + + String transId; + + String transacId; + + private String grade; + + private String location; + + private String ltaAmount; + + private String optedFor; + + private String ltaFlag; + + private String fromYear; + + private String itPercentage; + + private String eligAmount; + + private String medFlag; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getFromAppDate() { + return this.fromAppDate; + } + + public void setFromAppDate(String newFromAppDate) { + this.fromAppDate = newFromAppDate; + } + + public String getToAppDate() { + return this.toAppDate; + } + + public void setToAppDate(String newToAppDate) { + this.toAppDate = newToAppDate; + } + + public String getDays() { + return this.days; + } + + public void setDays(String newDays) { + this.days = newDays; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getStatusOfLeaves() { + return this.statusOfLeaves; + } + + public void setStatusOfLeaves(String newStatusOfLeaves) { + this.statusOfLeaves = newStatusOfLeaves; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getButtonName() { + return this.buttonName; + } + + public void setButtonName(String newButtonName) { + this.buttonName = newButtonName; + } + + public String getDepartment() { + return this.department; + } + + public void setDepartment(String newDepartment) { + this.department = newDepartment; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String[] getTxtDate() { + return this.txtDate; + } + + public void setTxtDate(String[] newTxtDate) { + this.txtDate = newTxtDate; + } + + public String[] getTxtHolidayFlag() { + return this.txtHolidayFlag; + } + + public void setTxtHolidayFlag(String[] newTxtHolidayFlag) { + this.txtHolidayFlag = newTxtHolidayFlag; + } + + public String[] getTxtHalfDayFlag() { + return this.txtHalfDayFlag; + } + + public void setTxtHalfDayFlag(String[] newTxtHalfDayFlag) { + this.txtHalfDayFlag = newTxtHalfDayFlag; + } + + public ArrayList getDetailArray() { + this.detailArray = new ArrayList(); + for (int iIndex = 0; iIndex < this.txtDate.length; iIndex++) { + HrmLvApplnDtlBean oDtlBean = new HrmLvApplnDtlBean(); + oDtlBean.setTxtDate(this.txtDate[iIndex]); + oDtlBean.setTxtHolidayFlag(this.txtHolidayFlag[iIndex]); + oDtlBean.setTxtHalfDayFlag(this.txtHalfDayFlag[iIndex]); + this.detailArray.add(oDtlBean); + } + return this.detailArray; + } + + public void setDetailArray(ArrayList detailArray) { + int iIndex = 0; + if (detailArray != null) { + Iterator itrDetailArray = detailArray.iterator(); + while (itrDetailArray.hasNext()) { + HrmLvApplnDtlBean oDtlBean = itrDetailArray.next(); + this.txtDate[iIndex] = oDtlBean.getTxtDate(); + this.txtHolidayFlag[iIndex] = oDtlBean.getTxtHolidayFlag(); + this.txtHalfDayFlag[iIndex] = oDtlBean.getTxtHalfDayFlag(); + iIndex++; + } + } + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String newUserId) { + this.userId = newUserId; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getTransacId() { + return this.transacId; + } + + public void setTransacId(String newTransacId) { + this.transacId = newTransacId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getLtaAmount() { + return this.ltaAmount; + } + + public void setLtaAmount(String newLtaAmount) { + this.ltaAmount = newLtaAmount; + } + + public String getOptedFor() { + return this.optedFor; + } + + public void setOptedFor(String newOptedFor) { + this.optedFor = newOptedFor; + } + + public String getLtaFlag() { + return this.ltaFlag; + } + + public void setFromYear(String newFromYear) { + this.fromYear = newFromYear; + } + + public String getFromYear() { + return this.fromYear; + } + + public void setLtaFlag(String newLtaFlag) { + this.ltaFlag = newLtaFlag; + } + + public String getItPercentage() { + return this.itPercentage; + } + + public void setItPercentage(String newItPercentage) { + this.itPercentage = newItPercentage; + } + + public String getEligAmount() { + return this.eligAmount; + } + + public void setEligAmount(String newEligAmount) { + this.eligAmount = newEligAmount; + } + + public String getMedFlag() { + return this.medFlag; + } + + public void setMedFlag(String newMedFlag) { + this.medFlag = newMedFlag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java new file mode 100644 index 0000000..ceb41fa --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvApplnQueryDtlBean extends BaseDetailBean implements Serializable { + private String txtTransId; + + private String txtLeaveCodes; + + private String txtAppliedLeaveDate; + + private String txtLeaveStatus; + + public String getTxtTransId() { + return this.txtTransId; + } + + public void setTxtTransId(String newTxtTransId) { + this.txtTransId = newTxtTransId; + } + + public String getTxtLeaveCodes() { + return this.txtLeaveCodes; + } + + public void setTxtLeaveCodes(String newTxtLeaveCodes) { + this.txtLeaveCodes = newTxtLeaveCodes; + } + + public String getTxtAppliedLeaveDate() { + return this.txtAppliedLeaveDate; + } + + public void setTxtAppliedLeaveDate(String newTxtAppliedLeaveDate) { + this.txtAppliedLeaveDate = newTxtAppliedLeaveDate; + } + + public String getTxtLeaveStatus() { + return this.txtLeaveStatus; + } + + public void setTxtLeaveStatus(String newTxtLeaveStatus) { + this.txtLeaveStatus = newTxtLeaveStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java new file mode 100644 index 0000000..1296043 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvApplnQueryHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String leaveCode; + + private String leaveDescription; + + private String fromDate; + + private String toDate; + + private String statusOfLeave; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvCancHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvCancHdrBean.java new file mode 100644 index 0000000..08914ab --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvCancHdrBean.java @@ -0,0 +1,296 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvCancHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String leaveCode; + + String leaveDescription; + + String dateApplied; + + String fromDate; + + String toDate; + + String days; + + String address; + + String phoneNo; + + String statusOfLeave; + + String purpose; + + String fromCancelDate; + + String toCancelDate; + + String cancelDays; + + String cancellationType; + + String cancelRemarks; + + String leaveCodeId; + + String cancelStatus; + + String cancelDateApplied; + + String employeeId; + + String leaveTransId; + + private String cancSide; + + private String buttonName; + + private String grade; + + private String location; + + private String desig; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getDays() { + return this.days; + } + + public void setDays(String newDays) { + this.days = newDays; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPhoneNo() { + return this.phoneNo; + } + + public void setPhoneNo(String newPhoneNo) { + this.phoneNo = newPhoneNo; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getFromCancelDate() { + return this.fromCancelDate; + } + + public void setFromCancelDate(String newFromCancelDate) { + this.fromCancelDate = newFromCancelDate; + } + + public String getToCancelDate() { + return this.toCancelDate; + } + + public void setToCancelDate(String newToCancelDate) { + this.toCancelDate = newToCancelDate; + } + + public String getCancelDays() { + return this.cancelDays; + } + + public void setCancelDays(String newCancelDays) { + this.cancelDays = newCancelDays; + } + + public String getCancellationType() { + return this.cancellationType; + } + + public void setCancellationType(String newCancellationType) { + this.cancellationType = newCancellationType; + } + + public String getCancelRemarks() { + return this.cancelRemarks; + } + + public void setCancelRemarks(String newCancelRemarks) { + this.cancelRemarks = newCancelRemarks; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getCancelStatus() { + return this.cancelStatus; + } + + public void setCancelStatus(String newCancelStatus) { + this.cancelStatus = newCancelStatus; + } + + public String getCancelDateApplied() { + return this.cancelDateApplied; + } + + public void setCancelDateApplied(String newCancelDateApplied) { + this.cancelDateApplied = newCancelDateApplied; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getLeaveTransId() { + return this.leaveTransId; + } + + public void setLeaveTransId(String newLeaveTransId) { + this.leaveTransId = newLeaveTransId; + } + + public String getCancSide() { + return this.cancSide; + } + + public void setCancSide(String newCancSide) { + this.cancSide = newCancSide; + } + + public String getButtonName() { + return this.buttonName; + } + + public void setButtonName(String newButtonName) { + this.buttonName = newButtonName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getDesig() { + return this.desig; + } + + public void setDesig(String newDesig) { + this.desig = newDesig; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java new file mode 100644 index 0000000..f35d216 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvCancQueryDtlBean extends BaseDetailBean implements Serializable { + private String txtTransId; + + private String txtLeaveCodes; + + private String txtAppliedLeaveDate; + + private String txtCancellationDate; + + private String txtCancellationType; + + private String txtCancelStatus; + + public String getTxtTransId() { + return this.txtTransId; + } + + public void setTxtTransId(String newTxtTransId) { + this.txtTransId = newTxtTransId; + } + + public String getTxtLeaveCodes() { + return this.txtLeaveCodes; + } + + public void setTxtLeaveCodes(String newTxtLeaveCodes) { + this.txtLeaveCodes = newTxtLeaveCodes; + } + + public String getTxtAppliedLeaveDate() { + return this.txtAppliedLeaveDate; + } + + public void setTxtAppliedLeaveDate(String newTxtAppliedLeaveDate) { + this.txtAppliedLeaveDate = newTxtAppliedLeaveDate; + } + + public String getTxtCancellationDate() { + return this.txtCancellationDate; + } + + public void setTxtCancellationDate(String newTxtCancellationDate) { + this.txtCancellationDate = newTxtCancellationDate; + } + + public String getTxtCancellationType() { + return this.txtCancellationType; + } + + public void setTxtCancellationType(String newTxtCancellationType) { + this.txtCancellationType = newTxtCancellationType; + } + + public String getTxtCancelStatus() { + return this.txtCancelStatus; + } + + public void setTxtCancelStatus(String newTxtCancelStatus) { + this.txtCancelStatus = newTxtCancelStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java new file mode 100644 index 0000000..faaf2e2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvCancQueryHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String leaveType; + + private String leaveDescription; + + private String cancelFromDate; + + private String cancelToDate; + + private String cancellationStatus; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getCancelFromDate() { + return this.cancelFromDate; + } + + public void setCancelFromDate(String newCancelFromDate) { + this.cancelFromDate = newCancelFromDate; + } + + public String getCancelToDate() { + return this.cancelToDate; + } + + public void setCancelToDate(String newCancelToDate) { + this.cancelToDate = newCancelToDate; + } + + public String getCancellationStatus() { + return this.cancellationStatus; + } + + public void setCancellationStatus(String newCancellationStatus) { + this.cancellationStatus = newCancellationStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditDtlBean.java new file mode 100644 index 0000000..69f93b9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditDtlBean.java @@ -0,0 +1,173 @@ +package wenrgise.hrms.bean; + +public class HrmLvCreditDtlBean extends HrmLvMstDtlBean { + private String lastCreditYYMM; + + private String nextCreditYYMM; + + private String lvAttrId; + + private String sex; + + private String creditCycle; + + private String minCreditLimit; + + private String eligibility; + + private String yearsOfService; + + private String calBeginMonth; + + private String name; + + private String employeeNo; + + private String employeeName; + + private String leaveType; + + private String leaveDescription; + + private String employeeNoId; + + private String leaveTypeId; + + private String txtNoOfDays; + + public String getLastCreditYYMM() { + return this.lastCreditYYMM; + } + + public void setLastCreditYYMM(String newLastCreditYYMM) { + this.lastCreditYYMM = newLastCreditYYMM; + } + + public String getNextCreditYYMM() { + return this.nextCreditYYMM; + } + + public void setNextCreditYYMM(String newNextCreditYYMM) { + this.nextCreditYYMM = newNextCreditYYMM; + } + + public String getLvAttrId() { + return this.lvAttrId; + } + + public void setLvAttrId(String newLvAttrId) { + this.lvAttrId = newLvAttrId; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getCreditCycle() { + return this.creditCycle; + } + + public void setCreditCycle(String newCreditCycle) { + this.creditCycle = newCreditCycle; + } + + public String getMinCreditLimit() { + return this.minCreditLimit; + } + + public void setMinCreditLimit(String newMinCreditLimit) { + this.minCreditLimit = newMinCreditLimit; + } + + public String getEligibility() { + return this.eligibility; + } + + public void setEligibility(String newEligibility) { + this.eligibility = newEligibility; + } + + public String getYearsOfService() { + return this.yearsOfService; + } + + public void setYearsOfService(String newYearsOfService) { + this.yearsOfService = newYearsOfService; + } + + public String getCalBeginMonth() { + return this.calBeginMonth; + } + + public void setCalBeginMonth(String newCalBeginMonth) { + this.calBeginMonth = newCalBeginMonth; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public void setTxtNoOfDays(String newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditEmpBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditEmpBean.java new file mode 100644 index 0000000..4ace631 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditEmpBean.java @@ -0,0 +1,43 @@ +package wenrgise.hrms.bean; + +public class HrmLvCreditEmpBean { + private String empId; + + private String joiningDate; + + private String serviceYears; + + private String sex; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getJoiningDate() { + return this.joiningDate; + } + + public void setJoiningDate(String newJoiningDate) { + this.joiningDate = newJoiningDate; + } + + public String getServiceYears() { + return this.serviceYears; + } + + public void setServiceYears(String newServiceYears) { + this.serviceYears = newServiceYears; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditHdrBean.java new file mode 100644 index 0000000..0dd8fb1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvCreditHdrBean.java @@ -0,0 +1,126 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvCreditHdrBean extends BaseHeaderBean implements Serializable { + private String txtRegionCode; + + String txtRegionName; + + private String buttxtRegion; + + private String butCreditLeaves; + + private String hdrRegionId; + + private String employeeNo; + + private String employeeName; + + private String leaveType; + + private String leaveDescription; + + private String employeeNoId; + + private String leaveTypeId; + + private String txtNoOfDays; + + public String getTxtRegionCode() { + return this.txtRegionCode; + } + + public void setTxtRegionCode(String newTxtRegionCode) { + this.txtRegionCode = newTxtRegionCode; + } + + public String getTxtRegionName() { + return this.txtRegionName; + } + + public void setTxtRegionName(String newTxtRegionName) { + this.txtRegionName = newTxtRegionName; + } + + public String getButtxtRegion() { + return this.buttxtRegion; + } + + public void setButtxtRegion(String newButtxtRegion) { + this.buttxtRegion = newButtxtRegion; + } + + public String getButCreditLeaves() { + return this.butCreditLeaves; + } + + public void setButCreditLeaves(String newButCreditLeaves) { + this.butCreditLeaves = newButCreditLeaves; + } + + public String getHdrRegionId() { + return this.hdrRegionId; + } + + public void setHdrRegionId(String newHdrRegionId) { + this.hdrRegionId = newHdrRegionId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public void setTxtNoOfDays(String newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvEncashHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvEncashHdrBean.java new file mode 100644 index 0000000..c2fbf15 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvEncashHdrBean.java @@ -0,0 +1,276 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvEncashHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String dateApplied; + + private String leaveCodes; + + private String description; + + private String daysEncashed; + + private String changeStatus; + + private String firstName; + + private String middleName; + + private String lastName; + + private String employeeName; + + private String designation; + + private String fromDate; + + private String toDate; + + private String encashedAmount; + + private String leaveCodeId; + + private String employeeId; + + private String totalEncashLimit; + + private String totalDaysEncashed; + + private String grade; + + private String location; + + private String taxAmount; + + private String pfDeduction; + + private String eligibleAmount; + + private String level; + + private String lvTxnId; + + private String lvApplnFromDate; + + private String lvApplnToDate; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getDaysEncashed() { + return this.daysEncashed; + } + + public void setDaysEncashed(String newDaysEncashed) { + this.daysEncashed = newDaysEncashed; + } + + public String getChangeStatus() { + return this.changeStatus; + } + + public void setChangeStatus(String newChangeStatus) { + this.changeStatus = newChangeStatus; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEncashedAmount() { + return this.encashedAmount; + } + + public void setEncashedAmount(String newEncashedAmount) { + this.encashedAmount = newEncashedAmount; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getTotalEncashLimit() { + return this.totalEncashLimit; + } + + public void setTotalEncashLimit(String newTotalEncashLimit) { + this.totalEncashLimit = newTotalEncashLimit; + } + + public String getTotalDaysEncashed() { + return this.totalDaysEncashed; + } + + public void setTotalDaysEncashed(String newTotalDaysEncashed) { + this.totalDaysEncashed = newTotalDaysEncashed; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getTaxAmount() { + return this.taxAmount; + } + + public void setTaxAmount(String newTaxAmount) { + this.taxAmount = newTaxAmount; + } + + public String getPfDeduction() { + return this.pfDeduction; + } + + public void setPfDeduction(String newPfDeduction) { + this.pfDeduction = newPfDeduction; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } + + public String getLvTxnId() { + return this.lvTxnId; + } + + public void setLvTxnId(String newLvTxnId) { + this.lvTxnId = newLvTxnId; + } + + public String getLvApplnFromDate() { + return this.lvApplnFromDate; + } + + public void setLvApplnFromDate(String newLvApplnFromDate) { + this.lvApplnFromDate = newLvApplnFromDate; + } + + public String getLvApplnToDate() { + return this.lvApplnToDate; + } + + public void setLvApplnToDate(String newLvApplnToDate) { + this.lvApplnToDate = newLvApplnToDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java new file mode 100644 index 0000000..992500d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java @@ -0,0 +1,96 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvLedgerDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpNo; + + private String txtleaveTypes; + + private String txtCreditDate; + + private String txtOpeningBalance; + + private String txtLeavesCredited; + + private String txtLeavesTaken; + + private String txtLeavesEncashed; + + private String txtLeavesPending; + + private String txtLeaveBalance; + + public String getTxtCreditDate() { + return this.txtCreditDate; + } + + public void setTxtCreditDate(String newTxtCreditDate) { + this.txtCreditDate = newTxtCreditDate; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtLeaveBalance() { + return this.txtLeaveBalance; + } + + public void setTxtLeaveBalance(String newTxtLeaveBalance) { + this.txtLeaveBalance = newTxtLeaveBalance; + } + + public String getTxtLeavesCredited() { + return this.txtLeavesCredited; + } + + public void setTxtLeavesCredited(String newTxtLeavesCredited) { + this.txtLeavesCredited = newTxtLeavesCredited; + } + + public String getTxtLeavesEncashed() { + return this.txtLeavesEncashed; + } + + public void setTxtLeavesEncashed(String newTxtLeavesEncashed) { + this.txtLeavesEncashed = newTxtLeavesEncashed; + } + + public String getTxtLeavesTaken() { + return this.txtLeavesTaken; + } + + public void setTxtLeavesTaken(String newTxtLeavesTaken) { + this.txtLeavesTaken = newTxtLeavesTaken; + } + + public String getTxtOpeningBalance() { + return this.txtOpeningBalance; + } + + public void setTxtOpeningBalance(String newTxtOpeningBalance) { + this.txtOpeningBalance = newTxtOpeningBalance; + } + + public String getTxtleaveTypes() { + return this.txtleaveTypes; + } + + public void setTxtleaveTypes(String newTxtleaveTypes) { + this.txtleaveTypes = newTxtleaveTypes; + } + + public String getTxtLeavesPending() { + return this.txtLeavesPending; + } + + public void setTxtLeavesPending(String newTxtLeavesPending) { + this.txtLeavesPending = newTxtLeavesPending; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java new file mode 100644 index 0000000..8073397 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvLedgerHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String employeeName; + + private String leaveType; + + private String leaveDescription; + + private String employeeNoId; + + private String leaveTypeId; + + private String groupId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getGroupId() { + return this.groupId; + } + + public void setGroupId(String newGroupId) { + this.groupId = newGroupId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java new file mode 100644 index 0000000..233965e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvLedgerTransDtlBean extends BaseDetailBean implements Serializable { + private String txtApplicationDate; + + private String txtAction; + + private String txtFromDate; + + private String txtNoOfDays; + + private String txtToDate; + + private String txtPayrollMonth; + + public String getTxtAction() { + return this.txtAction; + } + + public void setTxtAction(String newTxtAction) { + this.txtAction = newTxtAction; + } + + public String getTxtApplicationDate() { + return this.txtApplicationDate; + } + + public void setTxtApplicationDate(String newTxtApplicationDate) { + this.txtApplicationDate = newTxtApplicationDate; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public void setTxtNoOfDays(String newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } + + public String getTxtPayrollMonth() { + return this.txtPayrollMonth; + } + + public void setTxtPayrollMonth(String newTxtPayrollMonth) { + this.txtPayrollMonth = newTxtPayrollMonth; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvMstDtlBean.java new file mode 100644 index 0000000..fe7bdcb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvMstDtlBean.java @@ -0,0 +1,216 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvMstDtlBean extends BaseDetailBean implements Serializable { + private String txtLeaveDescription; + + private String txtEffectiveFrom; + + private String txtEffectiveTo; + + private String txtMinimumServicePeriod; + + private String txtMaximumAccumulationLimit; + + private String txtTotalAvailableLimit; + + private String txtAdvanceLimit; + + private String txtMaxTxn; + + private String txtMinLeavePerTxn; + + private String txtDependantOnWorkingDays; + + private String txtUnit; + + private String txtCreditFrequency; + + private String txtMaxCreditLimit; + + private String txtLeavesCredited; + + private String txtApplicableToAll; + + private String txtLapsable; + + private String txtApplicableFor; + + private String txtState; + + private String txtStateCode; + + private String txtStateId; + + private String disabbutState; + + public String getTxtAdvanceLimit() { + return this.txtAdvanceLimit; + } + + public void setTxtAdvanceLimit(String newTxtAdvanceLimit) { + this.txtAdvanceLimit = newTxtAdvanceLimit; + } + + public String getTxtApplicableToAll() { + return this.txtApplicableToAll; + } + + public void setTxtApplicableToAll(String newTxtApplicableToAll) { + this.txtApplicableToAll = newTxtApplicableToAll; + } + + public String getTxtCreditFrequency() { + return this.txtCreditFrequency; + } + + public void setTxtCreditFrequency(String newTxtCreditFrequency) { + this.txtCreditFrequency = newTxtCreditFrequency; + } + + public String getTxtDependantOnWorkingDays() { + return this.txtDependantOnWorkingDays; + } + + public void setTxtDependantOnWorkingDays(String newTxtDependantOnWorkingDays) { + this.txtDependantOnWorkingDays = newTxtDependantOnWorkingDays; + } + + public String getTxtEffectiveFrom() { + return this.txtEffectiveFrom; + } + + public void setTxtEffectiveFrom(String newTxtEffectiveFrom) { + this.txtEffectiveFrom = newTxtEffectiveFrom; + } + + public String getTxtEffectiveTo() { + return this.txtEffectiveTo; + } + + public void setTxtEffectiveTo(String newTxtEffectiveTo) { + this.txtEffectiveTo = newTxtEffectiveTo; + } + + public String getTxtLapsable() { + return this.txtLapsable; + } + + public void setTxtLapsable(String newTxtLapsable) { + this.txtLapsable = newTxtLapsable; + } + + public String getTxtLeaveDescription() { + return this.txtLeaveDescription; + } + + public void setTxtLeaveDescription(String newTxtLeaveDescription) { + this.txtLeaveDescription = newTxtLeaveDescription; + } + + public String getTxtLeavesCredited() { + return this.txtLeavesCredited; + } + + public void setTxtLeavesCredited(String newTxtLeavesCredited) { + this.txtLeavesCredited = newTxtLeavesCredited; + } + + public String getTxtMaxCreditLimit() { + return this.txtMaxCreditLimit; + } + + public void setTxtMaxCreditLimit(String newTxtMaxCreditLimit) { + this.txtMaxCreditLimit = newTxtMaxCreditLimit; + } + + public String getTxtMaxTxn() { + return this.txtMaxTxn; + } + + public void setTxtMaxTxn(String newTxtMaxTxn) { + this.txtMaxTxn = newTxtMaxTxn; + } + + public String getTxtMaximumAccumulationLimit() { + return this.txtMaximumAccumulationLimit; + } + + public void setTxtMaximumAccumulationLimit(String newTxtMaximumAccumulationLimit) { + this.txtMaximumAccumulationLimit = newTxtMaximumAccumulationLimit; + } + + public String getTxtMinLeavePerTxn() { + return this.txtMinLeavePerTxn; + } + + public void setTxtMinLeavePerTxn(String newTxtMinLeavePerTxn) { + this.txtMinLeavePerTxn = newTxtMinLeavePerTxn; + } + + public String getTxtMinimumServicePeriod() { + return this.txtMinimumServicePeriod; + } + + public void setTxtMinimumServicePeriod(String newTxtMinimumServicePeriod) { + this.txtMinimumServicePeriod = newTxtMinimumServicePeriod; + } + + public String getTxtTotalAvailableLimit() { + return this.txtTotalAvailableLimit; + } + + public void setTxtTotalAvailableLimit(String newTxtTotalAvailableLimit) { + this.txtTotalAvailableLimit = newTxtTotalAvailableLimit; + } + + public String getTxtUnit() { + return this.txtUnit; + } + + public void setTxtUnit(String newTxtUnit) { + this.txtUnit = newTxtUnit; + } + + public String getTxtApplicableFor() { + return this.txtApplicableFor; + } + + public void setTxtApplicableFor(String newTxtApplicableFor) { + this.txtApplicableFor = newTxtApplicableFor; + } + + public String getTxtState() { + return this.txtState; + } + + public void setTxtState(String newTxtState) { + this.txtState = newTxtState; + } + + public String getTxtStateCode() { + return this.txtStateCode; + } + + public void setTxtStateCode(String newTxtStateCode) { + this.txtStateCode = newTxtStateCode; + } + + public String getTxtStateId() { + return this.txtStateId; + } + + public void setTxtStateId(String newTxtStateId) { + this.txtStateId = newTxtStateId; + } + + public String getDisabbutState() { + return this.disabbutState; + } + + public void setDisabbutState(String newDisabbutState) { + this.disabbutState = newDisabbutState; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmLvMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmLvMstHdrBean.java new file mode 100644 index 0000000..eb4e3fd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmLvMstHdrBean.java @@ -0,0 +1,166 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvMstHdrBean extends BaseHeaderBean implements Serializable { + private String leaveCode; + + private String description; + + private String evidenceRequired; + + private String evidenceDescription; + + private String prefixSuffix; + + private String intermediateHoliday; + + private String leaveObsolete; + + private String encashable; + + private String encashableLimit; + + private String periodicity; + + private String calendar; + + private String applicableTo; + + private String calendarTypeId; + + private String leaveCodeId; + + private String suffix; + + private String minLeave; + + public String getApplicableTo() { + return this.applicableTo; + } + + public void setApplicableTo(String newApplicableTo) { + this.applicableTo = newApplicableTo; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getEncashable() { + return this.encashable; + } + + public void setEncashable(String newEncashable) { + this.encashable = newEncashable; + } + + public String getEncashableLimit() { + return this.encashableLimit; + } + + public void setEncashableLimit(String newEncashableLimit) { + this.encashableLimit = newEncashableLimit; + } + + public String getEvidenceDescription() { + return this.evidenceDescription; + } + + public void setEvidenceDescription(String newEvidenceDescription) { + this.evidenceDescription = newEvidenceDescription; + } + + public String getEvidenceRequired() { + return this.evidenceRequired; + } + + public void setEvidenceRequired(String newEvidenceRequired) { + this.evidenceRequired = newEvidenceRequired; + } + + public String getIntermediateHoliday() { + return this.intermediateHoliday; + } + + public void setIntermediateHoliday(String newIntermediateHoliday) { + this.intermediateHoliday = newIntermediateHoliday; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveObsolete() { + return this.leaveObsolete; + } + + public void setLeaveObsolete(String newLeaveObsolete) { + this.leaveObsolete = newLeaveObsolete; + } + + public String getPeriodicity() { + return this.periodicity; + } + + public void setPeriodicity(String newPeriodicity) { + this.periodicity = newPeriodicity; + } + + public String getPrefixSuffix() { + return this.prefixSuffix; + } + + public void setPrefixSuffix(String newPrefixSuffix) { + this.prefixSuffix = newPrefixSuffix; + } + + public String getCalendarTypeId() { + return this.calendarTypeId; + } + + public void setCalendarTypeId(String newCalendarTypeId) { + this.calendarTypeId = newCalendarTypeId; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getSuffix() { + return this.suffix; + } + + public void setSuffix(String newSuffix) { + this.suffix = newSuffix; + } + + public String getMinLeave() { + return this.minLeave; + } + + public void setMinLeave(String newMinLeave) { + this.minLeave = newMinLeave; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java new file mode 100644 index 0000000..a5e275e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmMediclaimMasterDtlBean extends BaseDetailBean implements Serializable { + private String coverName; + + private String sumInsured; + + private String salaryUnit; + + private String premium; + + private String ageFrom; + + private String ageTo; + + private String aicContribution; + + private String documentRequired; + + public String getSalaryUnit() { + return this.salaryUnit; + } + + public void setSalaryUnit(String salaryUnit) { + this.salaryUnit = salaryUnit; + } + + public String getPremium() { + return this.premium; + } + + public void setPremium(String premium) { + this.premium = premium; + } + + public String getAgeFrom() { + return this.ageFrom; + } + + public void setAgeFrom(String ageFrom) { + this.ageFrom = ageFrom; + } + + public String getAgeTo() { + return this.ageTo; + } + + public void setAgeTo(String ageTo) { + this.ageTo = ageTo; + } + + public String getAicContribution() { + return this.aicContribution; + } + + public void setAicContribution(String aicContribution) { + this.aicContribution = aicContribution; + } + + public String getDocumentRequired() { + return this.documentRequired; + } + + public void setDocumentRequired(String documentRequired) { + this.documentRequired = documentRequired; + } + + public String getCoverName() { + return this.coverName; + } + + public void setCoverName(String coverName) { + this.coverName = coverName; + } + + public String getSumInsured() { + return this.sumInsured; + } + + public void setSumInsured(String sumInsured) { + this.sumInsured = sumInsured; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java new file mode 100644 index 0000000..5b7c2a8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmMediclaimMasterHdrBean extends BaseHeaderBean implements Serializable { + private String claimCode; + + private String txtClass; + + private String cadre; + + private boolean allEmp; + + private String dependents; + + private String txtClassId; + + private String txtCadreId; + + private String allEmployeeApplicable; + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String claimCode) { + this.claimCode = claimCode; + } + + public String getTxtClass() { + return this.txtClass; + } + + public void setTxtClass(String txtClass) { + this.txtClass = txtClass; + } + + public String getCadre() { + return this.cadre; + } + + public void setCadre(String cadre) { + this.cadre = cadre; + } + + public boolean getAllEmp() { + return this.allEmp; + } + + public void setAllEmp(boolean allEmp) { + this.allEmp = allEmp; + } + + public String getDependents() { + return this.dependents; + } + + public void setDependents(String dependents) { + this.dependents = dependents; + } + + public String getTxtClassId() { + return this.txtClassId; + } + + public void setTxtClassId(String txtClassId) { + this.txtClassId = txtClassId; + } + + public String getTxtCadreId() { + return this.txtCadreId; + } + + public void setTxtCadreId(String txtCadreId) { + this.txtCadreId = txtCadreId; + } + + public String getAllEmployeeApplicable() { + return this.allEmployeeApplicable; + } + + public void setAllEmployeeApplicable(String newAllEmployeeApplicable) { + this.allEmployeeApplicable = newAllEmployeeApplicable; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmMisReportDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmMisReportDtlBean.java new file mode 100644 index 0000000..c138b9b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmMisReportDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmMisReportDtlBean extends BaseDetailBean implements Serializable { + private String txtPosition; + + private String txtDesiredStrength; + + private String disabbutPosition; + + private String txtPositionId; + + public String getTxtPosition() { + return this.txtPosition; + } + + public void setTxtPosition(String newTxtPosition) { + this.txtPosition = newTxtPosition; + } + + public String getTxtDesiredStrength() { + return this.txtDesiredStrength; + } + + public void setTxtDesiredStrength(String newTxtDesiredStrength) { + this.txtDesiredStrength = newTxtDesiredStrength; + } + + public String getDisabbutPosition() { + return this.disabbutPosition; + } + + public void setDisabbutPosition(String newDisabbutPosition) { + this.disabbutPosition = newDisabbutPosition; + } + + public String getTxtPositionId() { + return this.txtPositionId; + } + + public void setTxtPositionId(String newTxtPositionId) { + this.txtPositionId = newTxtPositionId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmMisReportHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmMisReportHdrBean.java new file mode 100644 index 0000000..b8f536c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmMisReportHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmMisReportHdrBean extends BaseHeaderBean implements Serializable { + private String optSelect; + + private String locationCode; + + private String txtYearMonth; + + public String getOptSelect() { + return this.optSelect; + } + + public void setOptSelect(String newOptSelect) { + this.optSelect = newOptSelect; + } + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } + + public String getTxtYearMonth() { + return this.txtYearMonth; + } + + public void setTxtYearMonth(String newTxtYearMonth) { + this.txtYearMonth = newTxtYearMonth; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java new file mode 100644 index 0000000..a5ff22c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmMyWorkflowDtlBean extends BaseDetailBean implements Serializable { + private String approver; + + private String level; + + private String requestId; + + private String requestor; + + private String requestorName; + + private String approverName; + + private String docDtlId; + + public String getApprover() { + return this.approver; + } + + public void setApprover(String newApprover) { + this.approver = newApprover; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } + + public String getRequestId() { + return this.requestId; + } + + public void setRequestId(String newRequestId) { + this.requestId = newRequestId; + } + + public String getRequestor() { + return this.requestor; + } + + public void setRequestor(String newRequestor) { + this.requestor = newRequestor; + } + + public String getRequestorName() { + return this.requestorName; + } + + public void setRequestorName(String newRequestorName) { + this.requestorName = newRequestorName; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getDocDtlId() { + return this.docDtlId; + } + + public void setDocDtlId(String docDtlId) { + this.docDtlId = docDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java new file mode 100644 index 0000000..93e5d8e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmMyWorkflowHdrBean extends BaseHeaderBean implements Serializable { + private String workflowType; + + private String txtStatus; + + private String id; + + private String requestType; + + private String employeeNoId; + + private String butAct; + + private String disabbutAct; + + public String getWorkflowType() { + return this.workflowType; + } + + public void setWorkflowType(String newWorkflowType) { + this.workflowType = newWorkflowType; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getRequestType() { + return this.requestType; + } + + public void setRequestType(String newRequestType) { + this.requestType = newRequestType; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getButAct() { + return this.butAct; + } + + public void setButAct(String butAct) { + this.butAct = butAct; + } + + public String getDisabbutAct() { + return this.disabbutAct; + } + + public void setDisabbutAct(String disabbutAct) { + this.disabbutAct = disabbutAct; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java new file mode 100644 index 0000000..5639b7f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgCalMstDtlBean extends BaseDetailBean implements Serializable { + private String txtSiteId; + + private String txtSlabNumber; + + private String txtSlabBeginMonth; + + private String txtDuration; + + public String getTxtSiteId() { + return this.txtSiteId; + } + + public void setTxtSiteId(String newTxtSiteId) { + this.txtSiteId = newTxtSiteId; + } + + public String getTxtSlabNumber() { + return this.txtSlabNumber; + } + + public void setTxtSlabNumber(String newTxtSlabNumber) { + this.txtSlabNumber = newTxtSlabNumber; + } + + public String getTxtSlabBeginMonth() { + return this.txtSlabBeginMonth; + } + + public void setTxtSlabBeginMonth(String newTxtSlabBeginMonth) { + this.txtSlabBeginMonth = newTxtSlabBeginMonth; + } + + public String getTxtDuration() { + return this.txtDuration; + } + + public void setTxtDuration(String newTxtDuration) { + this.txtDuration = newTxtDuration; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java new file mode 100644 index 0000000..9f07059 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgCalMstHdrBean extends BaseHeaderBean implements Serializable { + private String calendarType; + + private String startMonth; + + private String duration; + + private String siteId; + + String calendarTypeId; + + public String getCalendarType() { + return this.calendarType; + } + + public void setCalendarType(String newCalendarType) { + this.calendarType = newCalendarType; + } + + public String getStartMonth() { + return this.startMonth; + } + + public void setStartMonth(String newStartMonth) { + this.startMonth = newStartMonth; + } + + public String getDuration() { + return this.duration; + } + + public void setDuration(String newDuration) { + this.duration = newDuration; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getCalendarTypeId() { + return this.calendarTypeId; + } + + public void setCalendarTypeId(String newCalendarTypeId) { + this.calendarTypeId = newCalendarTypeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgClassDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgClassDtlBean.java new file mode 100644 index 0000000..8c7eeb3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgClassDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgClassDtlBean extends BaseDetailBean implements Serializable { + private String txtClassificationCode; + + private String txtDescription; + + private String txtHierarchy; + + private String txtParentCode; + + private String txtParentCodeId; + + private String txtTypeCode; + + public String getTxtClassificationCode() { + return this.txtClassificationCode; + } + + public void setTxtClassificationCode(String newTxtClassificationCode) { + this.txtClassificationCode = newTxtClassificationCode; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getTxtHierarchy() { + return this.txtHierarchy; + } + + public void setTxtHierarchy(String newTxtHierarchy) { + this.txtHierarchy = newTxtHierarchy; + } + + public String getTxtParentCode() { + return this.txtParentCode; + } + + public void setTxtParentCode(String newTxtParentCode) { + this.txtParentCode = newTxtParentCode; + } + + public String getTxtParentCodeId() { + return this.txtParentCodeId; + } + + public void setTxtParentCodeId(String newTxtParentCodeId) { + this.txtParentCodeId = newTxtParentCodeId; + } + + public String getTxtTypeCode() { + return this.txtTypeCode; + } + + public void setTxtTypeCode(String newTxtTypeCode) { + this.txtTypeCode = newTxtTypeCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgClassHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgClassHdrBean.java new file mode 100644 index 0000000..1934fb6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgClassHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgClassHdrBean extends BaseHeaderBean implements Serializable { + private String code; + + private String classificationType; + + private String scaleId; + + private String desigId; + + String orgCodeId; + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getClassificationType() { + return this.classificationType; + } + + public void setClassificationType(String newClassificationType) { + this.classificationType = newClassificationType; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } + + public String getOrgCodeId() { + return this.orgCodeId; + } + + public void setOrgCodeId(String newOrgCodeId) { + this.orgCodeId = newOrgCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java new file mode 100644 index 0000000..180e8fc --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgCntryMstDtlBean extends BaseDetailBean implements Serializable { + String txtCityCode; + + String txtCityName; + + public String getTxtCityCode() { + return this.txtCityCode; + } + + public void setTxtCityCode(String newTxtCityCode) { + this.txtCityCode = newTxtCityCode; + } + + public String getTxtCityName() { + return this.txtCityName; + } + + public void setTxtCityName(String newTxtCityName) { + this.txtCityName = newTxtCityName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java new file mode 100644 index 0000000..b540450 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgCntryMstHdrBean extends BaseHeaderBean implements Serializable { + String countryCode; + + String countryName; + + String countryCodeId; + + public String getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String newCountryCode) { + this.countryCode = newCountryCode; + } + + public String getCountryName() { + return this.countryName; + } + + public void setCountryName(String newCountryName) { + this.countryName = newCountryName; + } + + public String getCountryCodeId() { + return this.countryCodeId; + } + + public void setCountryCodeId(String newCountryCodeId) { + this.countryCodeId = newCountryCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java new file mode 100644 index 0000000..5dcc4fe --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgDistrictMstDtlBean extends BaseDetailBean implements Serializable { + private String txtDistrictCode; + + private String txtDistrictName; + + public String getTxtDistrictCode() { + return this.txtDistrictCode; + } + + public void setTxtDistrictCode(String newTxtDistrictCode) { + this.txtDistrictCode = newTxtDistrictCode; + } + + public String getTxtDistrictName() { + return this.txtDistrictName; + } + + public void setTxtDistrictName(String newTxtDistrictName) { + this.txtDistrictName = newTxtDistrictName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java new file mode 100644 index 0000000..39392d1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgHolCalDtlBean extends BaseDetailBean implements Serializable { + private String txtHolidayDate; + + private String txtHolidayName; + + private String txtHolidayType; + + private String txtHolTypeId; + + private String txtDay; + + public String getTxtHolidayDate() { + return this.txtHolidayDate; + } + + public void setTxtHolidayDate(String newTxtHolidayDate) { + this.txtHolidayDate = newTxtHolidayDate; + } + + public String getTxtHolidayName() { + return this.txtHolidayName; + } + + public void setTxtHolidayName(String newTxtHolidayName) { + this.txtHolidayName = newTxtHolidayName; + } + + public String getTxtHolidayType() { + return this.txtHolidayType; + } + + public void setTxtHolidayType(String newTxtHolidayType) { + this.txtHolidayType = newTxtHolidayType; + } + + public String getTxtHolTypeId() { + return this.txtHolTypeId; + } + + public void setTxtHolTypeId(String newTxtHolTypeId) { + this.txtHolTypeId = newTxtHolTypeId; + } + + public String getTxtDay() { + return this.txtDay; + } + + public void setTxtDay(String newTxtDay) { + this.txtDay = newTxtDay; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java new file mode 100644 index 0000000..a943ae8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgHolCalHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String description; + + private String calendarYear; + + private String fromDate; + + private String toDate; + + private String siteCode; + + private String siteId; + + private String state; + + private String stateId; + + private String stateCode; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getCalendarYear() { + return this.calendarYear; + } + + public void setCalendarYear(String newCalendarYear) { + this.calendarYear = newCalendarYear; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getStateId() { + return this.stateId; + } + + public void setStateId(String newStateId) { + this.stateId = newStateId; + } + + public String getStateCode() { + return this.stateCode; + } + + public void setStateCode(String newStateCode) { + this.stateCode = newStateCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java new file mode 100644 index 0000000..e7dde43 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgHolTypeMstHdrBean extends BaseHeaderBean implements Serializable { + private String holidayType; + + private String yearlyLimit; + + private String compensatoryLeave; + + private String rewardPercentageOfBasic; + + private String mandatory; + + String holidayTypeId; + + public String getHolidayType() { + return this.holidayType; + } + + public void setHolidayType(String newHolidayType) { + this.holidayType = newHolidayType; + } + + public String getYearlyLimit() { + return this.yearlyLimit; + } + + public void setYearlyLimit(String newYearlyLimit) { + this.yearlyLimit = newYearlyLimit; + } + + public String getCompensatoryLeave() { + return this.compensatoryLeave; + } + + public void setCompensatoryLeave(String newCompensatoryLeave) { + this.compensatoryLeave = newCompensatoryLeave; + } + + public String getRewardPercentageOfBasic() { + return this.rewardPercentageOfBasic; + } + + public void setRewardPercentageOfBasic(String newRewardPercentageOfBasic) { + this.rewardPercentageOfBasic = newRewardPercentageOfBasic; + } + + public String getMandatory() { + return this.mandatory; + } + + public void setMandatory(String newMandatory) { + this.mandatory = newMandatory; + } + + public String getHolidayTypeId() { + return this.holidayTypeId; + } + + public void setHolidayTypeId(String newHolidayTypeId) { + this.holidayTypeId = newHolidayTypeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java new file mode 100644 index 0000000..7712b1a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgIncrementDtlBean extends BaseDetailBean implements Serializable { + private String txtRatingFrom; + + private String txtRatingTo; + + private String txtRatingGrade; + + private String txtRatingDescription; + + private String txtIncrement; + + private String disabtxtIncrement; + + private String ratingDtlId; + + public String getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String getTxtRatingGrade() { + return this.txtRatingGrade; + } + + public void setTxtRatingGrade(String newTxtRatingGrade) { + this.txtRatingGrade = newTxtRatingGrade; + } + + public String getTxtRatingDescription() { + return this.txtRatingDescription; + } + + public void setTxtRatingDescription(String newTxtRatingDescription) { + this.txtRatingDescription = newTxtRatingDescription; + } + + public String getTxtIncrement() { + return this.txtIncrement; + } + + public void setTxtIncrement(String newTxtIncrement) { + this.txtIncrement = newTxtIncrement; + } + + public String getDisabtxtIncrement() { + return this.disabtxtIncrement; + } + + public void setDisabtxtIncrement(String newDisabtxtIncrement) { + this.disabtxtIncrement = newDisabtxtIncrement; + } + + public String getRatingDtlId() { + return this.ratingDtlId; + } + + public void setRatingDtlId(String newRatingDtlId) { + this.ratingDtlId = newRatingDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java new file mode 100644 index 0000000..9432ea0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgIncrementHdrBean extends BaseHeaderBean implements Serializable { + private String startDate; + + private String endDate; + + private String clsHdr; + + private String clsHdrDesc; + + private String clsDtl; + + private String clsDtlDesc; + + private String ratingCode; + + private String ratingHdrId; + + private String clsHdrId; + + private String clsDtlId; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getClsHdr() { + return this.clsHdr; + } + + public void setClsHdr(String newClsHdr) { + this.clsHdr = newClsHdr; + } + + public String getClsHdrDesc() { + return this.clsHdrDesc; + } + + public void setClsHdrDesc(String newClsHdrDesc) { + this.clsHdrDesc = newClsHdrDesc; + } + + public String getClsDtl() { + return this.clsDtl; + } + + public void setClsDtl(String newClsDtl) { + this.clsDtl = newClsDtl; + } + + public String getClsDtlDesc() { + return this.clsDtlDesc; + } + + public void setClsDtlDesc(String newClsDtlDesc) { + this.clsDtlDesc = newClsDtlDesc; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getRatingHdrId() { + return this.ratingHdrId; + } + + public void setRatingHdrId(String newRatingHdrId) { + this.ratingHdrId = newRatingHdrId; + } + + public String getClsHdrId() { + return this.clsHdrId; + } + + public void setClsHdrId(String newClsHdrId) { + this.clsHdrId = newClsHdrId; + } + + public String getClsDtlId() { + return this.clsDtlId; + } + + public void setClsDtlId(String newClsDtlId) { + this.clsDtlId = newClsDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java new file mode 100644 index 0000000..d633f17 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgLangMstDtlBean extends BaseDetailBean implements Serializable { + private String txtCode; + + private String txtDescription; + + private String txtLanguageType; + + public String getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String newTxtCode) { + this.txtCode = newTxtCode; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getTxtLanguageType() { + return this.txtLanguageType; + } + + public void setTxtLanguageType(String newTxtLanguageType) { + this.txtLanguageType = newTxtLanguageType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java new file mode 100644 index 0000000..7869b9c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgQualMstDtlBean extends BaseDetailBean implements Serializable { + private String txtQualification; + + private String txtCode; + + private String txtNoOfYears; + + private String txtApprovingAuthority; + + public String getTxtQualification() { + return this.txtQualification; + } + + public void setTxtQualification(String newTxtQualification) { + this.txtQualification = newTxtQualification; + } + + public String getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String newTxtCode) { + this.txtCode = newTxtCode; + } + + public String getTxtNoOfYears() { + return this.txtNoOfYears; + } + + public void setTxtNoOfYears(String newTxtNoOfYears) { + this.txtNoOfYears = newTxtNoOfYears; + } + + public String getTxtApprovingAuthority() { + return this.txtApprovingAuthority; + } + + public void setTxtApprovingAuthority(String newTxtApprovingAuthority) { + this.txtApprovingAuthority = newTxtApprovingAuthority; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java new file mode 100644 index 0000000..37f016f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgRatingMstDtlBean extends BaseDetailBean implements Serializable { + String txtRatingFrom; + + String txtRatingTo; + + String txtRatingGrade; + + String txtDescription; + + public String getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String getTxtRatingGrade() { + return this.txtRatingGrade; + } + + public void setTxtRatingGrade(String newTxtRatingGrade) { + this.txtRatingGrade = newTxtRatingGrade; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java new file mode 100644 index 0000000..7b43f42 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgRatingMstHdrBean extends BaseHeaderBean implements Serializable { + String maximumRating; + + String qualifyingRating; + + String minimumRating; + + String ratingHeaderCode; + + String ratingCodeId; + + public String getMaximumRating() { + return this.maximumRating; + } + + public void setMaximumRating(String newMaximumRating) { + this.maximumRating = newMaximumRating; + } + + public String getQualifyingRating() { + return this.qualifyingRating; + } + + public void setQualifyingRating(String newQualifyingRating) { + this.qualifyingRating = newQualifyingRating; + } + + public String getMinimumRating() { + return this.minimumRating; + } + + public void setMinimumRating(String newMinimumRating) { + this.minimumRating = newMinimumRating; + } + + public String getRatingHeaderCode() { + return this.ratingHeaderCode; + } + + public void setRatingHeaderCode(String newRatingHeaderCode) { + this.ratingHeaderCode = newRatingHeaderCode; + } + + public String getRatingCodeId() { + return this.ratingCodeId; + } + + public void setRatingCodeId(String newRatingCodeId) { + this.ratingCodeId = newRatingCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java new file mode 100644 index 0000000..303c642 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgRelationMstDtlBean extends BaseDetailBean implements Serializable { + private String txtRelationCode; + + private String txtRelationName; + + String txtOccurence; + + public String getTxtRelationCode() { + return this.txtRelationCode; + } + + public void setTxtRelationCode(String newTxtRelationCode) { + this.txtRelationCode = newTxtRelationCode; + } + + public String getTxtOccurence() { + return this.txtOccurence; + } + + public void setTxtOccurence(String newTxtOccurence) { + this.txtOccurence = newTxtOccurence; + } + + public String getTxtRelationName() { + return this.txtRelationName; + } + + public void setTxtRelationName(String newTxtRelationName) { + this.txtRelationName = newTxtRelationName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java new file mode 100644 index 0000000..2ee584f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgReligionMstDtlBean extends BaseDetailBean implements Serializable { + private String txtReligionName; + + public String getTxtReligionName() { + return this.txtReligionName; + } + + public void setTxtReligionName(String newTxtReligionName) { + this.txtReligionName = newTxtReligionName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java new file mode 100644 index 0000000..ee5dc0b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgScaleMstDtlBean extends BaseDetailBean implements Serializable { + private String txtStartBasic; + + private String txtIncrement; + + private String txtEndBasic; + + public String getTxtStartBasic() { + return this.txtStartBasic; + } + + public void setTxtStartBasic(String newTxtStartBasic) { + this.txtStartBasic = newTxtStartBasic; + } + + public String getTxtIncrement() { + return this.txtIncrement; + } + + public void setTxtIncrement(String newTxtIncrement) { + this.txtIncrement = newTxtIncrement; + } + + public String getTxtEndBasic() { + return this.txtEndBasic; + } + + public void setTxtEndBasic(String newTxtEndBasic) { + this.txtEndBasic = newTxtEndBasic; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java new file mode 100644 index 0000000..27fb838 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgScaleMstHdrBean extends BaseHeaderBean implements Serializable { + private String scaleCode; + + private String desc; + + private String hierarchyLevel; + + private String parentId; + + private String gradeId; + + private String revision; + + private String grade; + + private String scaleId; + + public String getScaleCode() { + return this.scaleCode; + } + + public void setScaleCode(String newScaleCode) { + this.scaleCode = newScaleCode; + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public String getHierarchyLevel() { + return this.hierarchyLevel; + } + + public void setHierarchyLevel(String newHierarchyLevel) { + this.hierarchyLevel = newHierarchyLevel; + } + + public String getParentId() { + return this.parentId; + } + + public void setParentId(String newParentId) { + this.parentId = newParentId; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getRevision() { + return this.revision; + } + + public void setRevision(String newRevision) { + this.revision = newRevision; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java new file mode 100644 index 0000000..023f1ae --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgSkillMstDtlBean extends BaseDetailBean implements Serializable { + String txtSkillCode; + + String txtSkillName; + + String txtHourlyRate; + + String txtOtRate; + + public String getTxtSkillCode() { + return this.txtSkillCode; + } + + public void setTxtSkillCode(String newTxtSkillCode) { + this.txtSkillCode = newTxtSkillCode; + } + + public String getTxtSkillName() { + return this.txtSkillName; + } + + public void setTxtSkillName(String newTxtSkillName) { + this.txtSkillName = newTxtSkillName; + } + + public String getTxtHourlyRate() { + return this.txtHourlyRate; + } + + public void setTxtHourlyRate(String newTxtHourlyRate) { + this.txtHourlyRate = newTxtHourlyRate; + } + + public String getTxtOtRate() { + return this.txtOtRate; + } + + public void setTxtOtRate(String newTxtOtRate) { + this.txtOtRate = newTxtOtRate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java new file mode 100644 index 0000000..1fcb5f3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgSkillMstHdrBean extends BaseHeaderBean implements Serializable { + String skillTypeCode; + + String skillTypeName; + + String skillCodeID; + + public String getSkillTypeCode() { + return this.skillTypeCode; + } + + public void setSkillTypeCode(String newSkillTypeCode) { + this.skillTypeCode = newSkillTypeCode; + } + + public String getSkillTypeName() { + return this.skillTypeName; + } + + public void setSkillTypeName(String newSkillTypeName) { + this.skillTypeName = newSkillTypeName; + } + + public String getSkillCodeID() { + return this.skillCodeID; + } + + public void setSkillCodeID(String newSkillCodeID) { + this.skillCodeID = newSkillCodeID; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java new file mode 100644 index 0000000..63aec2a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgTehsilMstDtlBean extends BaseDetailBean implements Serializable { + private String txtTehsilCode; + + private String txtTehsilName; + + public String getTxtTehsilCode() { + return this.txtTehsilCode; + } + + public void setTxtTehsilCode(String newTxtTehsilCode) { + this.txtTehsilCode = newTxtTehsilCode; + } + + public String getTxtTehsilName() { + return this.txtTehsilName; + } + + public void setTxtTehsilName(String newTxtTehsilName) { + this.txtTehsilName = newTxtTehsilName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java new file mode 100644 index 0000000..fd04990 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgWorkGroupMstDtlBean extends BaseDetailBean implements Serializable { + private String id; + + private String name; + + private String reportingEmpId; + + private String empNo; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java new file mode 100644 index 0000000..0ef0c65 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java @@ -0,0 +1,316 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgWorkGroupMstHdrBean extends BaseHeaderBean implements Serializable { + private String code; + + private String owingSite; + + private String name; + + private String profitCentre; + + private String deptFlag; + + private String temporaryFlag; + + private String costCentre; + + private String budgetCode; + + private String contactEmployeeNo; + + private String phone; + + private String eMail; + + private String fax; + + private String contactAddress; + + private String refDocNo; + + private String creationDate; + + private String documentDate; + + private String endDate; + + private String specialRemarks; + + private String hierarchyLevel; + + private String parentGroupCode; + + private String contactEmployeeId; + + private String parentGroupCodeId; + + private String profitCentreId; + + private String budgetCodeName; + + private String workGroupCodeId; + + private String siteId; + + private String owingSiteCode; + + private String costId; + + private String costCode; + + private String budgetId; + + private String parentHierarchyLevel; + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getOwingSite() { + return this.owingSite; + } + + public void setOwingSite(String newOwingSite) { + this.owingSite = newOwingSite; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getProfitCentre() { + return this.profitCentre; + } + + public void setProfitCentre(String newProfitCentre) { + this.profitCentre = newProfitCentre; + } + + public String getDeptFlag() { + return this.deptFlag; + } + + public void setDeptFlag(String newDeptFlag) { + this.deptFlag = newDeptFlag; + } + + public String getTemporaryFlag() { + return this.temporaryFlag; + } + + public void setTemporaryFlag(String newTemporaryFlag) { + this.temporaryFlag = newTemporaryFlag; + } + + public String getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String newCostCentre) { + this.costCentre = newCostCentre; + } + + public String getBudgetCode() { + return this.budgetCode; + } + + public void setBudgetCode(String newBudgetCode) { + this.budgetCode = newBudgetCode; + } + + public String getContactEmployeeNo() { + return this.contactEmployeeNo; + } + + public void setContactEmployeeNo(String newContactEmployeeNo) { + this.contactEmployeeNo = newContactEmployeeNo; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getEMail() { + return this.eMail; + } + + public void setEMail(String newEMail) { + this.eMail = newEMail; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getContactAddress() { + return this.contactAddress; + } + + public void setContactAddress(String newContactAddress) { + this.contactAddress = newContactAddress; + } + + public String getRefDocNo() { + return this.refDocNo; + } + + public void setRefDocNo(String newRefDocNo) { + this.refDocNo = newRefDocNo; + } + + public String getCreationDate() { + return this.creationDate; + } + + public void setCreationDate(String newCreationDate) { + this.creationDate = newCreationDate; + } + + public String getDocumentDate() { + return this.documentDate; + } + + public void setDocumentDate(String newDocumentDate) { + this.documentDate = newDocumentDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSpecialRemarks() { + return this.specialRemarks; + } + + public void setSpecialRemarks(String newSpecialRemarks) { + this.specialRemarks = newSpecialRemarks; + } + + public String getHierarchyLevel() { + return this.hierarchyLevel; + } + + public void setHierarchyLevel(String newHierarchyLevel) { + this.hierarchyLevel = newHierarchyLevel; + } + + public String getParentGroupCode() { + return this.parentGroupCode; + } + + public void setParentGroupCode(String newParentGroupCode) { + this.parentGroupCode = newParentGroupCode; + } + + public String getContactEmployeeId() { + return this.contactEmployeeId; + } + + public void setContactEmployeeId(String newContactEmployeeId) { + this.contactEmployeeId = newContactEmployeeId; + } + + public String getParentGroupCodeId() { + return this.parentGroupCodeId; + } + + public void setParentGroupCodeId(String newParentGroupCodeId) { + this.parentGroupCodeId = newParentGroupCodeId; + } + + public String getProfitCentreId() { + return this.profitCentreId; + } + + public void setProfitCentreId(String newProfitCentreId) { + this.profitCentreId = newProfitCentreId; + } + + public String getBudgetCodeName() { + return this.budgetCodeName; + } + + public void setBudgetCodeName(String newBudgetCodeName) { + this.budgetCodeName = newBudgetCodeName; + } + + public String getWorkGroupCodeId() { + return this.workGroupCodeId; + } + + public void setWorkGroupCodeId(String newWorkGroupCodeId) { + this.workGroupCodeId = newWorkGroupCodeId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getOwingSiteCode() { + return this.owingSiteCode; + } + + public void setOwingSiteCode(String newOwingSiteCode) { + this.owingSiteCode = newOwingSiteCode; + } + + public String getCostId() { + return this.costId; + } + + public void setCostId(String newCostId) { + this.costId = newCostId; + } + + public String getCostCode() { + return this.costCode; + } + + public void setCostCode(String newCostCode) { + this.costCode = newCostCode; + } + + public String getBudgetId() { + return this.budgetId; + } + + public void setBudgetId(String newBudgetId) { + this.budgetId = newBudgetId; + } + + public String getParentHierarchyLevel() { + return this.parentHierarchyLevel; + } + + public void setParentHierarchyLevel(String newParentHierarchyLevel) { + this.parentHierarchyLevel = newParentHierarchyLevel; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java new file mode 100644 index 0000000..0a4e8c4 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmCriteriaDtlBean extends BaseDetailBean implements Serializable { + private String txtDescription; + + private String txtCriteriaStartDate; + + private String txtCriteriaEndDate; + + private String txtMinServicePeriod; + + private String txtReqYears; + + private String txtYearAPAR; + + private String disabbutCriteriaEndDate; + + private String disabbutCriteriaStartDate; + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getTxtCriteriaStartDate() { + return this.txtCriteriaStartDate; + } + + public void setTxtCriteriaStartDate(String newTxtCriteriaStartDate) { + this.txtCriteriaStartDate = newTxtCriteriaStartDate; + } + + public String getTxtCriteriaEndDate() { + return this.txtCriteriaEndDate; + } + + public void setTxtCriteriaEndDate(String newTxtCriteriaEndDate) { + this.txtCriteriaEndDate = newTxtCriteriaEndDate; + } + + public String getTxtMinServicePeriod() { + return this.txtMinServicePeriod; + } + + public void setTxtMinServicePeriod(String newTxtMinServicePeriod) { + this.txtMinServicePeriod = newTxtMinServicePeriod; + } + + public String getTxtReqYears() { + return this.txtReqYears; + } + + public void setTxtReqYears(String newTxtReqYears) { + this.txtReqYears = newTxtReqYears; + } + + public String getTxtYearAPAR() { + return this.txtYearAPAR; + } + + public void setTxtYearAPAR(String newTxtYearAPAR) { + this.txtYearAPAR = newTxtYearAPAR; + } + + public String getDisabbutCriteriaEndDate() { + return this.disabbutCriteriaEndDate; + } + + public void setDisabbutCriteriaEndDate(String newDisabbutCriteriaEndDate) { + this.disabbutCriteriaEndDate = newDisabbutCriteriaEndDate; + } + + public String getDisabbutCriteriaStartDate() { + return this.disabbutCriteriaStartDate; + } + + public void setDisabbutCriteriaStartDate(String newDisabbutCriteriaStartDate) { + this.disabbutCriteriaStartDate = newDisabbutCriteriaStartDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java new file mode 100644 index 0000000..74f395b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java @@ -0,0 +1,136 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmCriteriaHdrBean extends BaseHeaderBean implements Serializable { + private String toGradeCode; + + private String toGradeDesc; + + private String toDesigCode; + + private String toDesigDesc; + + private String fromGradeCode; + + private String fromGradeDesc; + + private String fromDesigCode; + + private String fromDesigDesc; + + private String toGradeId; + + private String fromDesigId; + + private String toDesigId; + + private String gradeSeq; + + private String desigSeq; + + public String getToGradeCode() { + return this.toGradeCode; + } + + public void setToGradeCode(String newToGradeCode) { + this.toGradeCode = newToGradeCode; + } + + public String getToGradeDesc() { + return this.toGradeDesc; + } + + public void setToGradeDesc(String newToGradeDesc) { + this.toGradeDesc = newToGradeDesc; + } + + public String getToDesigCode() { + return this.toDesigCode; + } + + public void setToDesigCode(String newToDesigCode) { + this.toDesigCode = newToDesigCode; + } + + public String getToDesigDesc() { + return this.toDesigDesc; + } + + public void setToDesigDesc(String newToDesigDesc) { + this.toDesigDesc = newToDesigDesc; + } + + public String getFromGradeCode() { + return this.fromGradeCode; + } + + public void setFromGradeCode(String newFromGradeCode) { + this.fromGradeCode = newFromGradeCode; + } + + public String getFromGradeDesc() { + return this.fromGradeDesc; + } + + public void setFromGradeDesc(String newFromGradeDesc) { + this.fromGradeDesc = newFromGradeDesc; + } + + public String getFromDesigCode() { + return this.fromDesigCode; + } + + public void setFromDesigCode(String newFromDesigCode) { + this.fromDesigCode = newFromDesigCode; + } + + public String getFromDesigDesc() { + return this.fromDesigDesc; + } + + public void setFromDesigDesc(String newFromDesigDesc) { + this.fromDesigDesc = newFromDesigDesc; + } + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getGradeSeq() { + return this.gradeSeq; + } + + public void setGradeSeq(String newGradeSeq) { + this.gradeSeq = newGradeSeq; + } + + public String getDesigSeq() { + return this.desigSeq; + } + + public void setDesigSeq(String newDesigSeq) { + this.desigSeq = newDesigSeq; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java new file mode 100644 index 0000000..bf79cab --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmExperienceDtlBean extends BaseDetailBean implements Serializable { + String startField; + + String endField; + + String txtAccBasis; + + String txtMonthsExp; + + String txtPointsAwarded; + + public String getStartField() { + return this.startField; + } + + public void setStartField(String newStartField) { + this.startField = newStartField; + } + + public String getEndField() { + return this.endField; + } + + public void setEndField(String newEndField) { + this.endField = newEndField; + } + + public String getTxtAccBasis() { + return this.txtAccBasis; + } + + public void setTxtAccBasis(String newTxtAccBasis) { + this.txtAccBasis = newTxtAccBasis; + } + + public String getTxtMonthsExp() { + return this.txtMonthsExp; + } + + public void setTxtMonthsExp(String newTxtMonthsExp) { + this.txtMonthsExp = newTxtMonthsExp; + } + + public String getTxtPointsAwarded() { + return this.txtPointsAwarded; + } + + public void setTxtPointsAwarded(String newTxtPointsAwarded) { + this.txtPointsAwarded = newTxtPointsAwarded; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java new file mode 100644 index 0000000..236a22e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmExperienceHdrBean extends BaseHeaderBean implements Serializable { + private String gradeCode; + + private String gradeDesc; + + private String desigCode; + + private String desigDesc; + + private String designationId; + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java new file mode 100644 index 0000000..31428af --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmGenAssDtlBean extends BaseDetailBean implements Serializable { + private String empId; + + private String companyExp; + + private String postExp; + + private String posInfHdrId; + + private String expPoints; + + private String ratingPoints; + + private String category; + + private String scaleId; + + private String desigId; + + private String rating; + + private String fromPost; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getCompanyExp() { + return this.companyExp; + } + + public void setCompanyExp(String newCompanyExp) { + this.companyExp = newCompanyExp; + } + + public String getPostExp() { + return this.postExp; + } + + public void setPostExp(String newPostExp) { + this.postExp = newPostExp; + } + + public String getPosInfHdrId() { + return this.posInfHdrId; + } + + public void setPosInfHdrId(String newPosInfHdrId) { + this.posInfHdrId = newPosInfHdrId; + } + + public String getExpPoints() { + return this.expPoints; + } + + public void setExpPoints(String newExpPoints) { + this.expPoints = newExpPoints; + } + + public String getRatingPoints() { + return this.ratingPoints; + } + + public void setRatingPoints(String newRatingPoints) { + this.ratingPoints = newRatingPoints; + } + + public String getCategory() { + return this.category; + } + + public void setCategory(String newCategory) { + this.category = newCategory; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } + + public String getRating() { + return this.rating; + } + + public void setRating(String newRating) { + this.rating = newRating; + } + + public String getFromPost() { + return this.fromPost; + } + + public void setFromPost(String newFromPost) { + this.fromPost = newFromPost; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java new file mode 100644 index 0000000..9d6bf25 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmGenAssHdrBean extends BaseHeaderBean implements Serializable { + private String siteCode; + + private String prmNo; + + private String postFrom; + + private String postTo; + + private String posInfHdrId; + + private String siteId; + + private String prmId; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getPostFrom() { + return this.postFrom; + } + + public void setPostFrom(String newPostFrom) { + this.postFrom = newPostFrom; + } + + public String getPostTo() { + return this.postTo; + } + + public void setPostTo(String newPostTo) { + this.postTo = newPostTo; + } + + public String getPosInfHdrId() { + return this.posInfHdrId; + } + + public void setPosInfHdrId(String newPosInfHdrId) { + this.posInfHdrId = newPosInfHdrId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getPrmId() { + return this.prmId; + } + + public void setPrmId(String newPrmId) { + this.prmId = newPrmId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java new file mode 100644 index 0000000..5bca0b1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmKPAFinalDtlBean extends BaseDetailBean implements Serializable { + String startField; + + String endField; + + String txtPoints; + + private String txtPromKPARatingHdrFId; + + public String getStartField() { + return this.startField; + } + + public void setStartField(String newStartField) { + this.startField = newStartField; + } + + public String getEndField() { + return this.endField; + } + + public void setEndField(String newEndField) { + this.endField = newEndField; + } + + public String getTxtPoints() { + return this.txtPoints; + } + + public void setTxtPoints(String newTxtPoints) { + this.txtPoints = newTxtPoints; + } + + public String getTxtPromKPARatingHdrFId() { + return this.txtPromKPARatingHdrFId; + } + + public void setTxtPromKPARatingHdrFId(String newTxtPromKPARatingHdrFId) { + this.txtPromKPARatingHdrFId = newTxtPromKPARatingHdrFId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java new file mode 100644 index 0000000..8d421c0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmKPAPoswiseDtlBean extends BaseDetailBean implements Serializable { + String txtKPAGroupId; + + String txtKPAGroupCode; + + String txtKPAGroupDesc; + + String txtReqAvgRating; + + private String txtPromKPARatingHdrId; + + private String disabbutForPos; + + public String getTxtKPAGroupId() { + return this.txtKPAGroupId; + } + + public void setTxtKPAGroupId(String newTxtKPAGroupId) { + this.txtKPAGroupId = newTxtKPAGroupId; + } + + public String getTxtKPAGroupCode() { + return this.txtKPAGroupCode; + } + + public void setTxtKPAGroupCode(String newTxtKPAGroupCode) { + this.txtKPAGroupCode = newTxtKPAGroupCode; + } + + public String getTxtKPAGroupDesc() { + return this.txtKPAGroupDesc; + } + + public void setTxtKPAGroupDesc(String newTxtKPAGroupDesc) { + this.txtKPAGroupDesc = newTxtKPAGroupDesc; + } + + public String getTxtReqAvgRating() { + return this.txtReqAvgRating; + } + + public void setTxtReqAvgRating(String newTxtReqAvgRating) { + this.txtReqAvgRating = newTxtReqAvgRating; + } + + public String getTxtPromKPARatingHdrId() { + return this.txtPromKPARatingHdrId; + } + + public void setTxtPromKPARatingHdrId(String newTxtPromKPARatingHdrId) { + this.txtPromKPARatingHdrId = newTxtPromKPARatingHdrId; + } + + public String getDisabbutForPos() { + return this.disabbutForPos; + } + + public void setDisabbutForPos(String newDisabbutForPos) { + this.disabbutForPos = newDisabbutForPos; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java new file mode 100644 index 0000000..efa77d3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmKPARatingHdrBean extends BaseHeaderBean implements Serializable { + String ratingId; + + String ratingNo; + + String maxRating; + + String minRating; + + private String gradeCode; + + private String gradeDesc; + + private String desigCode; + + private String desigDesc; + + private String gradeId; + + private String desigId; + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String getRatingNo() { + return this.ratingNo; + } + + public void setRatingNo(String newRatingNo) { + this.ratingNo = newRatingNo; + } + + public String getMaxRating() { + return this.maxRating; + } + + public void setMaxRating(String newMaxRating) { + this.maxRating = newMaxRating; + } + + public String getMinRating() { + return this.minRating; + } + + public void setMinRating(String newMinRating) { + this.minRating = newMinRating; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java new file mode 100644 index 0000000..697e644 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmNoticeDtlDtlBean extends BaseDetailBean implements Serializable { + String txtDesignation; + + String txtVacancies; + + String txtExamDate; + + private String txtGradeId; + + private String txtDesigId; + + private String txtGrade; + + private String disabbutGrade; + + private String disabbutDesig; + + public String getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String getTxtVacancies() { + return this.txtVacancies; + } + + public void setTxtVacancies(String newTxtVacancies) { + this.txtVacancies = newTxtVacancies; + } + + public String getTxtExamDate() { + return this.txtExamDate; + } + + public void setTxtExamDate(String newTxtExamDate) { + this.txtExamDate = newTxtExamDate; + } + + public String getTxtGradeId() { + return this.txtGradeId; + } + + public void setTxtGradeId(String newTxtGradeId) { + this.txtGradeId = newTxtGradeId; + } + + public String getTxtDesigId() { + return this.txtDesigId; + } + + public void setTxtDesigId(String newTxtDesigId) { + this.txtDesigId = newTxtDesigId; + } + + public String getTxtGrade() { + return this.txtGrade; + } + + public void setTxtGrade(String newTxtGrade) { + this.txtGrade = newTxtGrade; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getDisabbutDesig() { + return this.disabbutDesig; + } + + public void setDisabbutDesig(String newDisabbutDesig) { + this.disabbutDesig = newDisabbutDesig; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java new file mode 100644 index 0000000..7e38ae1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmNoticeDtlHdrBean extends BaseHeaderBean implements Serializable { + String noticeId; + + String noticeNo; + + String noticeDate; + + String desc; + + public String getNoticeId() { + return this.noticeId; + } + + public void setNoticeId(String newNoticeId) { + this.noticeId = newNoticeId; + } + + public String getNoticeNo() { + return this.noticeNo; + } + + public void setNoticeNo(String newNoticeNo) { + this.noticeNo = newNoticeNo; + } + + public String getNoticeDate() { + return this.noticeDate; + } + + public void setNoticeDate(String newNoticeDate) { + this.noticeDate = newNoticeDate; + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java new file mode 100644 index 0000000..38625cb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java @@ -0,0 +1,226 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmOrderHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String firstName; + + private String middleName; + + private String lastName; + + private String grade; + + private String designation; + + private String location; + + private String pastExp; + + private String presExp; + + private String orderNo; + + private String toGrade; + + private String toDesig; + + private String effecDate; + + private String approvedBy; + + private String remarks; + + private String orderNoId; + + private String empId; + + private String approverId; + + private String toGradeId; + + private String toDesigId; + + private String gradeSeq; + + private String desigSeq; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getPastExp() { + return this.pastExp; + } + + public void setPastExp(String newPastExp) { + this.pastExp = newPastExp; + } + + public String getPresExp() { + return this.presExp; + } + + public void setPresExp(String newPresExp) { + this.presExp = newPresExp; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getToGrade() { + return this.toGrade; + } + + public void setToGrade(String newToGrade) { + this.toGrade = newToGrade; + } + + public String getToDesig() { + return this.toDesig; + } + + public void setToDesig(String newToDesig) { + this.toDesig = newToDesig; + } + + public String getEffecDate() { + return this.effecDate; + } + + public void setEffecDate(String newEffecDate) { + this.effecDate = newEffecDate; + } + + public String getApprovedBy() { + return this.approvedBy; + } + + public void setApprovedBy(String newApprovedBy) { + this.approvedBy = newApprovedBy; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getApproverId() { + return this.approverId; + } + + public void setApproverId(String newApproverId) { + this.approverId = newApproverId; + } + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getGradeSeq() { + return this.gradeSeq; + } + + public void setGradeSeq(String newGradeSeq) { + this.gradeSeq = newGradeSeq; + } + + public String getDesigSeq() { + return this.desigSeq; + } + + public void setDesigSeq(String newDesigSeq) { + this.desigSeq = newDesigSeq; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java new file mode 100644 index 0000000..9e298c5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmQualCriteriaDtlBean extends BaseDetailBean implements Serializable { + private String txtQualCode; + + private String txtQualDesc; + + private String txtMinPercentage; + + private String hdnQualificationId; + + private String hdnPrevDtlId; + + public String getTxtQualCode() { + return this.txtQualCode; + } + + public void setTxtQualCode(String newTxtQualCode) { + this.txtQualCode = newTxtQualCode; + } + + public String getTxtQualDesc() { + return this.txtQualDesc; + } + + public void setTxtQualDesc(String newTxtQualDesc) { + this.txtQualDesc = newTxtQualDesc; + } + + public String getTxtMinPercentage() { + return this.txtMinPercentage; + } + + public void setTxtMinPercentage(String newTxtMinPercentage) { + this.txtMinPercentage = newTxtMinPercentage; + } + + public String getHdnQualificationId() { + return this.hdnQualificationId; + } + + public void setHdnQualificationId(String newHdnQualificationId) { + this.hdnQualificationId = newHdnQualificationId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java new file mode 100644 index 0000000..6d4449a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmQualCriteriaHdrBean extends BaseHeaderBean implements Serializable { + private String gradeCode; + + private String gradeDesc; + + private String desigDesc; + + private String desigCode; + + private String designationId; + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java new file mode 100644 index 0000000..22db140 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmTestScoreDtlBean extends BaseDetailBean implements Serializable { + String endField; + + String startField; + + String txtPoints; + + public String getEndField() { + return this.endField; + } + + public void setEndField(String newEndField) { + this.endField = newEndField; + } + + public String getStartField() { + return this.startField; + } + + public void setStartField(String newStartField) { + this.startField = newStartField; + } + + public String getTxtPoints() { + return this.txtPoints; + } + + public void setTxtPoints(String newTxtPoints) { + this.txtPoints = newTxtPoints; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java new file mode 100644 index 0000000..7958d47 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmTestScoreHdrBean extends BaseHeaderBean implements Serializable { + String desc; + + String examType; + + String maxScore; + + String maxPoints; + + String examDesc; + + String designationId; + + private String gradeCode; + + private String gradeDesc; + + private String desigDesc; + + private String desigCode; + + private String gradeId; + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public String getExamType() { + return this.examType; + } + + public void setExamType(String newExamType) { + this.examType = newExamType; + } + + public String getMaxScore() { + return this.maxScore; + } + + public void setMaxScore(String newMaxScore) { + this.maxScore = newMaxScore; + } + + public String getMaxPoints() { + return this.maxPoints; + } + + public void setMaxPoints(String newMaxPoints) { + this.maxPoints = newMaxPoints; + } + + public String getExamDesc() { + return this.examDesc; + } + + public void setExamDesc(String newExamDesc) { + this.examDesc = newExamDesc; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java new file mode 100644 index 0000000..9b21ee6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java @@ -0,0 +1,236 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmViewAssDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpNo; + + private String txtEmpName; + + private String txtFromPosCode; + + private String txtScale; + + private String txtSrvYrs; + + private String txtCurrSrvYrs; + + private String txtSrvYrsPoints; + + private String txtAvgAparPts; + + private String txtWrittenTestMarks; + + private String txtWrittenTestPts; + + private String txtGDMarks; + + private String txtGDPts; + + private String txtInterviewMarks; + + private String txtInterviewPts; + + private String txtTotalPtsAwarded; + + private boolean txtEligProm; + + String employeeId; + + String hdnPrevDtlId; + + private String txtAparPts; + + private String hdnPromEligibility; + + private String positionId; + + private String scaleId; + + String headerPositionId; + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtFromPosCode() { + return this.txtFromPosCode; + } + + public void setTxtFromPosCode(String newTxtFromPosCode) { + this.txtFromPosCode = newTxtFromPosCode; + } + + public String getTxtScale() { + return this.txtScale; + } + + public void setTxtScale(String newTxtScale) { + this.txtScale = newTxtScale; + } + + public String getTxtSrvYrs() { + return this.txtSrvYrs; + } + + public void setTxtSrvYrs(String newTxtSrvYrs) { + this.txtSrvYrs = newTxtSrvYrs; + } + + public String getTxtCurrSrvYrs() { + return this.txtCurrSrvYrs; + } + + public void setTxtCurrSrvYrs(String newTxtCurrSrvYrs) { + this.txtCurrSrvYrs = newTxtCurrSrvYrs; + } + + public String getTxtSrvYrsPoints() { + return this.txtSrvYrsPoints; + } + + public void setTxtSrvYrsPoints(String newTxtSrvYrsPoints) { + this.txtSrvYrsPoints = newTxtSrvYrsPoints; + } + + public String getTxtAvgAparPts() { + return this.txtAvgAparPts; + } + + public void setTxtAvgAparPts(String newTxtAvgAparPts) { + this.txtAvgAparPts = newTxtAvgAparPts; + } + + public String getTxtWrittenTestMarks() { + return this.txtWrittenTestMarks; + } + + public void setTxtWrittenTestMarks(String newTxtWrittenTestMarks) { + this.txtWrittenTestMarks = newTxtWrittenTestMarks; + } + + public String getTxtWrittenTestPts() { + return this.txtWrittenTestPts; + } + + public void setTxtWrittenTestPts(String newTxtWrittenTestPts) { + this.txtWrittenTestPts = newTxtWrittenTestPts; + } + + public String getTxtGDMarks() { + return this.txtGDMarks; + } + + public void setTxtGDMarks(String newTxtGDMarks) { + this.txtGDMarks = newTxtGDMarks; + } + + public String getTxtGDPts() { + return this.txtGDPts; + } + + public void setTxtGDPts(String newTxtGDPts) { + this.txtGDPts = newTxtGDPts; + } + + public String getTxtInterviewMarks() { + return this.txtInterviewMarks; + } + + public void setTxtInterviewMarks(String newTxtInterviewMarks) { + this.txtInterviewMarks = newTxtInterviewMarks; + } + + public String getTxtInterviewPts() { + return this.txtInterviewPts; + } + + public void setTxtInterviewPts(String newTxtInterviewPts) { + this.txtInterviewPts = newTxtInterviewPts; + } + + public String getTxtTotalPtsAwarded() { + return this.txtTotalPtsAwarded; + } + + public void setTxtTotalPtsAwarded(String newTxtTotalPtsAwarded) { + this.txtTotalPtsAwarded = newTxtTotalPtsAwarded; + } + + public boolean getTxtEligProm() { + return this.txtEligProm; + } + + public void setTxtEligProm(boolean newTxtEligProm) { + this.txtEligProm = newTxtEligProm; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtAparPts() { + return this.txtAparPts; + } + + public void setTxtAparPts(String newTxtAparPts) { + this.txtAparPts = newTxtAparPts; + } + + public String getHdnPromEligibility() { + return this.hdnPromEligibility; + } + + public void setHdnPromEligibility(String newHdnPromEligibility) { + this.hdnPromEligibility = newHdnPromEligibility; + } + + public String getPositionId() { + return this.positionId; + } + + public void setPositionId(String newPositionId) { + this.positionId = newPositionId; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } + + public String getHeaderPositionId() { + return this.headerPositionId; + } + + public void setHeaderPositionId(String newHeaderPositionId) { + this.headerPositionId = newHeaderPositionId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java new file mode 100644 index 0000000..13d809b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmViewAssHdrBean extends BaseHeaderBean implements Serializable { + private String siteCode; + + private String prmNo; + + private String toPosition; + + String changeEnb = "S"; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getToPosition() { + return this.toPosition; + } + + public void setToPosition(String newToPosition) { + this.toPosition = newToPosition; + } + + public String getChangeEnb() { + return this.changeEnb; + } + + public void setChangeEnb(String newChangeEnb) { + this.changeEnb = newChangeEnb; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java new file mode 100644 index 0000000..d2069b2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecAdvAttrHdrBean extends BaseHeaderBean implements Serializable { + private String changeEnb = "S"; + + String refNo; + + private String category; + + private String desgn; + + public String getChangeEnb() { + return this.changeEnb; + } + + public void setChangeEnb(String newChangeEnb) { + this.changeEnb = newChangeEnb; + } + + public String getRefNo() { + return this.refNo; + } + + public void setRefNo(String newRefNo) { + this.refNo = newRefNo; + } + + public String getCategory() { + return this.category; + } + + public void setCategory(String newCategory) { + this.category = newCategory; + } + + public String getDesgn() { + return this.desgn; + } + + public void setDesgn(String newDesgn) { + this.desgn = newDesgn; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java new file mode 100644 index 0000000..ddb9e14 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrJobDescDtlBean extends BaseDetailBean implements Serializable { + private String txtJobDesc; + + private String txtSrlNo; + + private String hdnPrevDtlId; + + public String getTxtJobDesc() { + return this.txtJobDesc; + } + + public void setTxtJobDesc(String newTxtJobDesc) { + this.txtJobDesc = newTxtJobDesc; + } + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java new file mode 100644 index 0000000..0e184ea --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrLngReqDtlBean extends BaseDetailBean implements Serializable { + private String txtLangCode; + + private String txtReqType; + + private String hdnLanguageId; + + private String hdnPrevDtlId; + + private String txtLangDesc; + + public String getTxtLangCode() { + return this.txtLangCode; + } + + public void setTxtLangCode(String newTxtLangCode) { + this.txtLangCode = newTxtLangCode; + } + + public String getTxtReqType() { + return this.txtReqType; + } + + public void setTxtReqType(String newTxtReqType) { + this.txtReqType = newTxtReqType; + } + + public String getHdnLanguageId() { + return this.hdnLanguageId; + } + + public void setHdnLanguageId(String newHdnLanguageId) { + this.hdnLanguageId = newHdnLanguageId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtLangDesc() { + return this.txtLangDesc; + } + + public void setTxtLangDesc(String newTxtLangDesc) { + this.txtLangDesc = newTxtLangDesc; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java new file mode 100644 index 0000000..1d90ae1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java @@ -0,0 +1,96 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrLocVacencyDtlBean extends BaseDetailBean implements Serializable { + private String txtLocCode; + + private String txtNoOfVacancy; + + private String hdnLocationId; + + private String hdnPrevDtlId; + + private String txtLocDesc; + + private String txtState; + + private String txtStateId; + + private String txtStateCode; + + private String txtCity; + + public String getTxtLocCode() { + return this.txtLocCode; + } + + public void setTxtLocCode(String newTxtLocCode) { + this.txtLocCode = newTxtLocCode; + } + + public String getTxtNoOfVacancy() { + return this.txtNoOfVacancy; + } + + public void setTxtNoOfVacancy(String newTxtNoOfVacancy) { + this.txtNoOfVacancy = newTxtNoOfVacancy; + } + + public String getHdnLocationId() { + return this.hdnLocationId; + } + + public void setHdnLocationId(String newHdnLocationId) { + this.hdnLocationId = newHdnLocationId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtLocDesc() { + return this.txtLocDesc; + } + + public void setTxtLocDesc(String newTxtLocDesc) { + this.txtLocDesc = newTxtLocDesc; + } + + public String getTxtState() { + return this.txtState; + } + + public void setTxtState(String newTxtState) { + this.txtState = newTxtState; + } + + public String getTxtStateId() { + return this.txtStateId; + } + + public void setTxtStateId(String newTxtStateId) { + this.txtStateId = newTxtStateId; + } + + public String getTxtStateCode() { + return this.txtStateCode; + } + + public void setTxtStateCode(String newTxtStateCode) { + this.txtStateCode = newTxtStateCode; + } + + public String getTxtCity() { + return this.txtCity; + } + + public void setTxtCity(String newTxtCity) { + this.txtCity = newTxtCity; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java new file mode 100644 index 0000000..8eff6c1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrQualReqDtlBean extends BaseDetailBean implements Serializable { + private String txtQualCode; + + private String txtMandatoryFlag; + + private String txtMaxmQualFlag; + + private String hdnQualificationId; + + private String hdnPrevDtlId; + + private String txtQualDesc; + + private String txtSpecialisation; + + private String txtExposureIn; + + public String getTxtQualCode() { + return this.txtQualCode; + } + + public void setTxtQualCode(String newTxtQualCode) { + this.txtQualCode = newTxtQualCode; + } + + public String getTxtMandatoryFlag() { + return this.txtMandatoryFlag; + } + + public void setTxtMandatoryFlag(String newTxtMandatoryFlag) { + this.txtMandatoryFlag = newTxtMandatoryFlag; + } + + public String getTxtMaxmQualFlag() { + return this.txtMaxmQualFlag; + } + + public void setTxtMaxmQualFlag(String newTxtMaxmQualFlag) { + this.txtMaxmQualFlag = newTxtMaxmQualFlag; + } + + public String getHdnQualificationId() { + return this.hdnQualificationId; + } + + public void setHdnQualificationId(String newHdnQualificationId) { + this.hdnQualificationId = newHdnQualificationId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtQualDesc() { + return this.txtQualDesc; + } + + public void setTxtQualDesc(String newTxtQualDesc) { + this.txtQualDesc = newTxtQualDesc; + } + + public String getTxtSpecialisation() { + return this.txtSpecialisation; + } + + public void setTxtSpecialisation(String newTxtSpecialisation) { + this.txtSpecialisation = newTxtSpecialisation; + } + + public String getTxtExposureIn() { + return this.txtExposureIn; + } + + public void setTxtExposureIn(String newTxtExposureIn) { + this.txtExposureIn = newTxtExposureIn; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java new file mode 100644 index 0000000..8e6fdc3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrSkillReqDtlBean extends BaseDetailBean implements Serializable { + private String txtSkillCode; + + private String txtSkillDesc; + + private String hdnSkillId; + + private String hdnPrevDtlId; + + private String txtSkill; + + private String txtRemarks; + + public String getTxtSkillCode() { + return this.txtSkillCode; + } + + public void setTxtSkillCode(String newTxtSkillCode) { + this.txtSkillCode = newTxtSkillCode; + } + + public String getTxtSkillDesc() { + return this.txtSkillDesc; + } + + public void setTxtSkillDesc(String newTxtSkillDesc) { + this.txtSkillDesc = newTxtSkillDesc; + } + + public String getHdnSkillId() { + return this.hdnSkillId; + } + + public void setHdnSkillId(String newHdnSkillId) { + this.hdnSkillId = newHdnSkillId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtSkill() { + return this.txtSkill; + } + + public void setTxtSkill(String newTxtSkill) { + this.txtSkill = newTxtSkill; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java new file mode 100644 index 0000000..5ab1131 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrWorkExpDtlBean extends BaseDetailBean implements Serializable { + private String txtReqExp; + + private String txtMinWrkExp; + + private String txtMaxWrkExp; + + private String workId; + + private String hdnPrevDtlId; + + private String txtWorkDesc; + + private String txtExpArea; + + private String txtExpIn; + + public String getTxtReqExp() { + return this.txtReqExp; + } + + public void setTxtReqExp(String newTxtReqExp) { + this.txtReqExp = newTxtReqExp; + } + + public String getTxtMinWrkExp() { + return this.txtMinWrkExp; + } + + public void setTxtMinWrkExp(String newTxtMinWrkExp) { + this.txtMinWrkExp = newTxtMinWrkExp; + } + + public String getTxtMaxWrkExp() { + return this.txtMaxWrkExp; + } + + public void setTxtMaxWrkExp(String newTxtMaxWrkExp) { + this.txtMaxWrkExp = newTxtMaxWrkExp; + } + + public String getWorkId() { + return this.workId; + } + + public void setWorkId(String newWorkId) { + this.workId = newWorkId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtWorkDesc() { + return this.txtWorkDesc; + } + + public void setTxtWorkDesc(String newTxtWorkDesc) { + this.txtWorkDesc = newTxtWorkDesc; + } + + public String getTxtExpArea() { + return this.txtExpArea; + } + + public void setTxtExpArea(String newTxtExpArea) { + this.txtExpArea = newTxtExpArea; + } + + public String getTxtExpIn() { + return this.txtExpIn; + } + + public void setTxtExpIn(String newTxtExpIn) { + this.txtExpIn = newTxtExpIn; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java new file mode 100644 index 0000000..327611b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java @@ -0,0 +1,166 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvtMtnDtlBean extends BaseDetailBean implements Serializable { + String txtAmount; + + String txtApplicantCategory; + + String txtApplicantCategoryId; + + String txtDesignation; + + String txtDesignationId; + + String txtMaxAgeOnDate; + + String txtMaximumAge; + + String txtMinimumAge; + + String txtReservationCategory; + + String txtReservationCategoryId; + + String txtSex; + + String txtTotalVacancy; + + private String txtGrade; + + private String txtGradeId; + + private String txtLevel; + + private String txtGradeCode; + + public String getTxtAmount() { + return this.txtAmount; + } + + public void setTxtAmount(String newTxtAmount) { + this.txtAmount = newTxtAmount; + } + + public String getTxtApplicantCategory() { + return this.txtApplicantCategory; + } + + public void setTxtApplicantCategory(String newTxtApplicantCategory) { + this.txtApplicantCategory = newTxtApplicantCategory; + } + + public String getTxtApplicantCategoryId() { + return this.txtApplicantCategoryId; + } + + public void setTxtApplicantCategoryId(String newTxtApplicantCategoryId) { + this.txtApplicantCategoryId = newTxtApplicantCategoryId; + } + + public String getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String getTxtDesignationId() { + return this.txtDesignationId; + } + + public void setTxtDesignationId(String newTxtDesignationId) { + this.txtDesignationId = newTxtDesignationId; + } + + public String getTxtMaxAgeOnDate() { + return this.txtMaxAgeOnDate; + } + + public void setTxtMaxAgeOnDate(String newTxtMaxAgeOnDate) { + this.txtMaxAgeOnDate = newTxtMaxAgeOnDate; + } + + public String getTxtMaximumAge() { + return this.txtMaximumAge; + } + + public void setTxtMaximumAge(String newTxtMaximumAge) { + this.txtMaximumAge = newTxtMaximumAge; + } + + public String getTxtMinimumAge() { + return this.txtMinimumAge; + } + + public void setTxtMinimumAge(String newTxtMinimumAge) { + this.txtMinimumAge = newTxtMinimumAge; + } + + public String getTxtReservationCategory() { + return this.txtReservationCategory; + } + + public void setTxtReservationCategory(String newTxtReservationCategory) { + this.txtReservationCategory = newTxtReservationCategory; + } + + public String getTxtReservationCategoryId() { + return this.txtReservationCategoryId; + } + + public void setTxtReservationCategoryId(String newTxtReservationCategoryId) { + this.txtReservationCategoryId = newTxtReservationCategoryId; + } + + public String getTxtSex() { + return this.txtSex; + } + + public void setTxtSex(String newTxtSex) { + this.txtSex = newTxtSex; + } + + public String getTxtTotalVacancy() { + return this.txtTotalVacancy; + } + + public void setTxtTotalVacancy(String newTxtTotalVacancy) { + this.txtTotalVacancy = newTxtTotalVacancy; + } + + public String getTxtGrade() { + return this.txtGrade; + } + + public void setTxtGrade(String newTxtGrade) { + this.txtGrade = newTxtGrade; + } + + public String getTxtGradeId() { + return this.txtGradeId; + } + + public void setTxtGradeId(String newTxtGradeId) { + this.txtGradeId = newTxtGradeId; + } + + public String getTxtLevel() { + return this.txtLevel; + } + + public void setTxtLevel(String newTxtLevel) { + this.txtLevel = newTxtLevel; + } + + public String getTxtGradeCode() { + return this.txtGradeCode; + } + + public void setTxtGradeCode(String newTxtGradeCode) { + this.txtGradeCode = newTxtGradeCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java new file mode 100644 index 0000000..1b567e3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecAdvtMtnHdrBean extends BaseHeaderBean implements Serializable { + String description; + + String entryMode; + + String entryModeId; + + String lastDate; + + String mediaName; + + String mediaType; + + String minInterviewScore; + + String minTotalScore; + + String minWrittenScoreA; + + String minWrittenScoreB; + + String referenceDate; + + String referenceNo; + + String referenceNoId; + + private String minInterviewScore2; + + private String minInterviewScore3; + + private String venue; + + private String date; + + private String time; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String getLastDate() { + return this.lastDate; + } + + public void setLastDate(String newLastDate) { + this.lastDate = newLastDate; + } + + public String getMediaName() { + return this.mediaName; + } + + public void setMediaName(String newMediaName) { + this.mediaName = newMediaName; + } + + public String getMediaType() { + return this.mediaType; + } + + public void setMediaType(String newMediaType) { + this.mediaType = newMediaType; + } + + public String getMinInterviewScore() { + return this.minInterviewScore; + } + + public void setMinInterviewScore(String newMinInterviewScore) { + this.minInterviewScore = newMinInterviewScore; + } + + public String getMinTotalScore() { + return this.minTotalScore; + } + + public void setMinTotalScore(String newMinTotalScore) { + this.minTotalScore = newMinTotalScore; + } + + public String getMinWrittenScoreA() { + return this.minWrittenScoreA; + } + + public void setMinWrittenScoreA(String newMinWrittenScoreA) { + this.minWrittenScoreA = newMinWrittenScoreA; + } + + public String getMinWrittenScoreB() { + return this.minWrittenScoreB; + } + + public void setMinWrittenScoreB(String newMinWrittenScoreB) { + this.minWrittenScoreB = newMinWrittenScoreB; + } + + public String getReferenceDate() { + return this.referenceDate; + } + + public void setReferenceDate(String newReferenceDate) { + this.referenceDate = newReferenceDate; + } + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getReferenceNoId() { + return this.referenceNoId; + } + + public void setReferenceNoId(String newReferenceNoId) { + this.referenceNoId = newReferenceNoId; + } + + public String getMinInterviewScore2() { + return this.minInterviewScore2; + } + + public void setMinInterviewScore2(String newMinInterviewScore2) { + this.minInterviewScore2 = newMinInterviewScore2; + } + + public String getMinInterviewScore3() { + return this.minInterviewScore3; + } + + public void setMinInterviewScore3(String newMinInterviewScore3) { + this.minInterviewScore3 = newMinInterviewScore3; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getTime() { + return this.time; + } + + public void setTime(String newTime) { + this.time = newTime; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java new file mode 100644 index 0000000..6f9b316 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java @@ -0,0 +1,586 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnAddDtlBean extends BaseDetailBean implements Serializable { + private String permPhone; + + private String permPin; + + private String permAddress; + + private String permCity; + + private String permState; + + private String permCountry; + + private String presPhone; + + private String presPin; + + private String presAddress; + + private String presCity; + + private String presState; + + private String presCountry; + + private String permStateId; + + private String presStateId; + + private String presCountryId; + + private String permCountryId; + + private String motherToungueId; + + private String nationalityId; + + private String maritalStatusId; + + private String reservationCategoryId; + + private String guardianName; + + private String motherTongue; + + private String dateOfBirth; + + private String nationality; + + private String maritalStatus; + + private String sex; + + private String mail; + + private String reservationCategory; + + private String appliedEarlier; + + private String handicappedFlag; + + private String motherToungueCode; + + private String nationalityCode; + + private String passportNo; + + private String placeOfIssue; + + private String expiryDate; + + private String issueDate; + + private String chequeNo; + + private String submittedAmount; + + private String submissionDate; + + private String arrestedBefore; + + private String imprisonedBefore; + + private String prosecutedBefore; + + private String finedByCourt; + + private String placeOfBirth; + + private String maritalStatusDesc; + + private String relatedEmpId; + + private String relatedToEmp; + + private String relatedEmpName; + + private String healthRecord; + + private String religion; + + private String religionId; + + private String bloodGroup; + + private String prevEmpFlag; + + private String prevEmpDtls; + + private String hobbies; + + private String grossExpected; + + private String addlInfo; + + private String reasons; + + public String getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String newPassportNo) { + this.passportNo = newPassportNo; + } + + public String getPlaceOfIssue() { + return this.placeOfIssue; + } + + public void setPlaceOfIssue(String newPlaceOfIssue) { + this.placeOfIssue = newPlaceOfIssue; + } + + public String getExpiryDate() { + return this.expiryDate; + } + + public void setExpiryDate(String newExpiryDate) { + this.expiryDate = newExpiryDate; + } + + public String getIssueDate() { + return this.issueDate; + } + + public void setIssueDate(String newIssueDate) { + this.issueDate = newIssueDate; + } + + public String getChequeNo() { + return this.chequeNo; + } + + public void setChequeNo(String newChequeNo) { + this.chequeNo = newChequeNo; + } + + public String getSubmittedAmount() { + return this.submittedAmount; + } + + public void setSubmittedAmount(String newSubmittedAmount) { + this.submittedAmount = newSubmittedAmount; + } + + public String getSubmissionDate() { + return this.submissionDate; + } + + public void setSubmissionDate(String newSubmissionDate) { + this.submissionDate = newSubmissionDate; + } + + public String getArrestedBefore() { + return this.arrestedBefore; + } + + public void setArrestedBefore(String newArrestedBefore) { + this.arrestedBefore = newArrestedBefore; + } + + public String getImprisonedBefore() { + return this.imprisonedBefore; + } + + public void setImprisonedBefore(String newImprisonedBefore) { + this.imprisonedBefore = newImprisonedBefore; + } + + public String getProsecutedBefore() { + return this.prosecutedBefore; + } + + public void setProsecutedBefore(String newProsecutedBefore) { + this.prosecutedBefore = newProsecutedBefore; + } + + public String getFinedByCourt() { + return this.finedByCourt; + } + + public void setFinedByCourt(String newFinedByCourt) { + this.finedByCourt = newFinedByCourt; + } + + public String getMotherToungueId() { + return this.motherToungueId; + } + + public void setMotherToungueId(String newMotherToungueId) { + this.motherToungueId = newMotherToungueId; + } + + public String getNationalityId() { + return this.nationalityId; + } + + public void setNationalityId(String newNationalityId) { + this.nationalityId = newNationalityId; + } + + public String getMaritalStatusId() { + return this.maritalStatusId; + } + + public void setMaritalStatusId(String newMaritalStatusId) { + this.maritalStatusId = newMaritalStatusId; + } + + public String getReservationCategoryId() { + return this.reservationCategoryId; + } + + public void setReservationCategoryId(String newReservationCategoryId) { + this.reservationCategoryId = newReservationCategoryId; + } + + public String getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String newGuardianName) { + this.guardianName = newGuardianName; + } + + public String getMotherTongue() { + return this.motherTongue; + } + + public void setMotherTongue(String newMotherTongue) { + this.motherTongue = newMotherTongue; + } + + public String getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String getNationality() { + return this.nationality; + } + + public void setNationality(String newNationality) { + this.nationality = newNationality; + } + + public String getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getMail() { + return this.mail; + } + + public void setMail(String newMail) { + this.mail = newMail; + } + + public String getReservationCategory() { + return this.reservationCategory; + } + + public void setReservationCategory(String newReservationCategory) { + this.reservationCategory = newReservationCategory; + } + + public String getAppliedEarlier() { + return this.appliedEarlier; + } + + public void setAppliedEarlier(String newAppliedEarlier) { + this.appliedEarlier = newAppliedEarlier; + } + + public String getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getMotherToungueCode() { + return this.motherToungueCode; + } + + public void setMotherToungueCode(String newMotherToungueCode) { + this.motherToungueCode = newMotherToungueCode; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getPermPhone() { + return this.permPhone; + } + + public void setPermPhone(String newPermPhone) { + this.permPhone = newPermPhone; + } + + public String getPermPin() { + return this.permPin; + } + + public void setPermPin(String newPermPin) { + this.permPin = newPermPin; + } + + public String getPermAddress() { + return this.permAddress; + } + + public void setPermAddress(String newPermAddress) { + this.permAddress = newPermAddress; + } + + public String getPermCity() { + return this.permCity; + } + + public void setPermCity(String newPermCity) { + this.permCity = newPermCity; + } + + public String getPermState() { + return this.permState; + } + + public void setPermState(String newPermState) { + this.permState = newPermState; + } + + public String getPermCountry() { + return this.permCountry; + } + + public void setPermCountry(String newPermCountry) { + this.permCountry = newPermCountry; + } + + public String getPresPhone() { + return this.presPhone; + } + + public void setPresPhone(String newPresPhone) { + this.presPhone = newPresPhone; + } + + public String getPresPin() { + return this.presPin; + } + + public void setPresPin(String newPresPin) { + this.presPin = newPresPin; + } + + public String getPresAddress() { + return this.presAddress; + } + + public void setPresAddress(String newPresAddress) { + this.presAddress = newPresAddress; + } + + public String getPresCity() { + return this.presCity; + } + + public void setPresCity(String newPresCity) { + this.presCity = newPresCity; + } + + public String getPresState() { + return this.presState; + } + + public void setPresState(String newPresState) { + this.presState = newPresState; + } + + public String getPresCountry() { + return this.presCountry; + } + + public void setPresCountry(String newPresCountry) { + this.presCountry = newPresCountry; + } + + public String getPermStateId() { + return this.permStateId; + } + + public void setPermStateId(String newPermStateId) { + this.permStateId = newPermStateId; + } + + public String getPresStateId() { + return this.presStateId; + } + + public void setPresStateId(String newPresStateId) { + this.presStateId = newPresStateId; + } + + public String getPresCountryId() { + return this.presCountryId; + } + + public void setPresCountryId(String newPresCountryId) { + this.presCountryId = newPresCountryId; + } + + public String getPermCountryId() { + return this.permCountryId; + } + + public void setPermCountryId(String newPermCountryId) { + this.permCountryId = newPermCountryId; + } + + public String getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getMaritalStatusDesc() { + return this.maritalStatusDesc; + } + + public void setMaritalStatusDesc(String newMaritalStatusDesc) { + this.maritalStatusDesc = newMaritalStatusDesc; + } + + public String getRelatedEmpId() { + return this.relatedEmpId; + } + + public void setRelatedEmpId(String newRelatedEmpId) { + this.relatedEmpId = newRelatedEmpId; + } + + public String getRelatedToEmp() { + return this.relatedToEmp; + } + + public void setRelatedToEmp(String newRelatedToEmp) { + this.relatedToEmp = newRelatedToEmp; + } + + public String getRelatedEmpName() { + return this.relatedEmpName; + } + + public void setRelatedEmpName(String newRelatedEmpName) { + this.relatedEmpName = newRelatedEmpName; + } + + public String getHealthRecord() { + return this.healthRecord; + } + + public void setHealthRecord(String newHealthRecord) { + this.healthRecord = newHealthRecord; + } + + public String getReligion() { + return this.religion; + } + + public void setReligion(String newReligion) { + this.religion = newReligion; + } + + public String getReligionId() { + return this.religionId; + } + + public void setReligionId(String newReligionId) { + this.religionId = newReligionId; + } + + public String getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getPrevEmpFlag() { + return this.prevEmpFlag; + } + + public void setPrevEmpFlag(String newPrevEmpFlag) { + this.prevEmpFlag = newPrevEmpFlag; + } + + public String getPrevEmpDtls() { + return this.prevEmpDtls; + } + + public void setPrevEmpDtls(String newPrevEmpDtls) { + this.prevEmpDtls = newPrevEmpDtls; + } + + public String getHobbies() { + return this.hobbies; + } + + public void setHobbies(String newHobbies) { + this.hobbies = newHobbies; + } + + public String getGrossExpected() { + return this.grossExpected; + } + + public void setGrossExpected(String newGrossExpected) { + this.grossExpected = newGrossExpected; + } + + public String getAddlInfo() { + return this.addlInfo; + } + + public void setAddlInfo(String newAddlInfo) { + this.addlInfo = newAddlInfo; + } + + public String getReasons() { + return this.reasons; + } + + public void setReasons(String newReasons) { + this.reasons = newReasons; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java new file mode 100644 index 0000000..eaaee3e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnEduDtlBean extends BaseDetailBean implements Serializable { + private String txtInstCode; + + private String txtQualification; + + private String txtPassYear; + + private String txtPercentageMarks; + + private String qualificationId; + + private String txtOtherProfQuali; + + private String txtSpeecialisation; + + private String txtSpeecialCourses; + + private String txtMajorSub; + + private String txtQualificationCode; + + public String getTxtInstCode() { + return this.txtInstCode; + } + + public void setTxtInstCode(String newTxtInstCode) { + this.txtInstCode = newTxtInstCode; + } + + public String getTxtQualification() { + return this.txtQualification; + } + + public void setTxtQualification(String newTxtQualification) { + this.txtQualification = newTxtQualification; + } + + public String getTxtPassYear() { + return this.txtPassYear; + } + + public void setTxtPassYear(String newTxtPassYear) { + this.txtPassYear = newTxtPassYear; + } + + public String getTxtPercentageMarks() { + return this.txtPercentageMarks; + } + + public void setTxtPercentageMarks(String newTxtPercentageMarks) { + this.txtPercentageMarks = newTxtPercentageMarks; + } + + public String getQualificationId() { + return this.qualificationId; + } + + public void setQualificationId(String newQualificationId) { + this.qualificationId = newQualificationId; + } + + public String getTxtOtherProfQuali() { + return this.txtOtherProfQuali; + } + + public void setTxtOtherProfQuali(String newTxtOtherProfQuali) { + this.txtOtherProfQuali = newTxtOtherProfQuali; + } + + public String getTxtSpeecialisation() { + return this.txtSpeecialisation; + } + + public void setTxtSpeecialisation(String newTxtSpeecialisation) { + this.txtSpeecialisation = newTxtSpeecialisation; + } + + public String getTxtSpeecialCourses() { + return this.txtSpeecialCourses; + } + + public void setTxtSpeecialCourses(String newTxtSpeecialCourses) { + this.txtSpeecialCourses = newTxtSpeecialCourses; + } + + public String getTxtMajorSub() { + return this.txtMajorSub; + } + + public void setTxtMajorSub(String newTxtMajorSub) { + this.txtMajorSub = newTxtMajorSub; + } + + public String getTxtQualificationCode() { + return this.txtQualificationCode; + } + + public void setTxtQualificationCode(String newTxtQualificationCode) { + this.txtQualificationCode = newTxtQualificationCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java new file mode 100644 index 0000000..4abfbdf --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnExpDtlBean extends BaseDetailBean implements Serializable { + private String txtPeriodFrom; + + private String txtPeriodTo; + + private String txtOrganisation; + + private String txtLocation; + + private String txtDesignationCode; + + private String txtWorkDesc; + + private String txtBasic; + + private String txtDA; + + private String txtOtherAllowances; + + private String txtBonus; + + private String txtIncentives; + + private String txtConv; + + private String txtHRA; + + private String txtLeavingSal; + + private String txtStartingSal; + + private String txtNoPersonSupervised; + + private String txtReportTo; + + private String txtWorkExp; + + public String getTxtPeriodFrom() { + return this.txtPeriodFrom; + } + + public void setTxtPeriodFrom(String newTxtPeriodFrom) { + this.txtPeriodFrom = newTxtPeriodFrom; + } + + public String getTxtPeriodTo() { + return this.txtPeriodTo; + } + + public void setTxtPeriodTo(String newTxtPeriodTo) { + this.txtPeriodTo = newTxtPeriodTo; + } + + public String getTxtOrganisation() { + return this.txtOrganisation; + } + + public void setTxtOrganisation(String newTxtOrganisation) { + this.txtOrganisation = newTxtOrganisation; + } + + public String getTxtLocation() { + return this.txtLocation; + } + + public void setTxtLocation(String newTxtLocation) { + this.txtLocation = newTxtLocation; + } + + public String getTxtDesignationCode() { + return this.txtDesignationCode; + } + + public void setTxtDesignationCode(String newTxtDesignationCode) { + this.txtDesignationCode = newTxtDesignationCode; + } + + public String getTxtWorkDesc() { + return this.txtWorkDesc; + } + + public void setTxtWorkDesc(String newTxtWorkDesc) { + this.txtWorkDesc = newTxtWorkDesc; + } + + public String getTxtBasic() { + return this.txtBasic; + } + + public void setTxtBasic(String newTxtBasic) { + this.txtBasic = newTxtBasic; + } + + public String getTxtDA() { + return this.txtDA; + } + + public void setTxtDA(String newTxtDA) { + this.txtDA = newTxtDA; + } + + public String getTxtOtherAllowances() { + return this.txtOtherAllowances; + } + + public void setTxtOtherAllowances(String newTxtOtherAllowances) { + this.txtOtherAllowances = newTxtOtherAllowances; + } + + public String getTxtBonus() { + return this.txtBonus; + } + + public void setTxtBonus(String newTxtBonus) { + this.txtBonus = newTxtBonus; + } + + public String getTxtIncentives() { + return this.txtIncentives; + } + + public void setTxtIncentives(String newTxtIncentives) { + this.txtIncentives = newTxtIncentives; + } + + public String getTxtConv() { + return this.txtConv; + } + + public void setTxtConv(String newTxtConv) { + this.txtConv = newTxtConv; + } + + public String getTxtHRA() { + return this.txtHRA; + } + + public void setTxtHRA(String newTxtHRA) { + this.txtHRA = newTxtHRA; + } + + public String getTxtLeavingSal() { + return this.txtLeavingSal; + } + + public void setTxtLeavingSal(String newTxtLeavingSal) { + this.txtLeavingSal = newTxtLeavingSal; + } + + public String getTxtStartingSal() { + return this.txtStartingSal; + } + + public void setTxtStartingSal(String newTxtStartingSal) { + this.txtStartingSal = newTxtStartingSal; + } + + public String getTxtNoPersonSupervised() { + return this.txtNoPersonSupervised; + } + + public void setTxtNoPersonSupervised(String newTxtNoPersonSupervised) { + this.txtNoPersonSupervised = newTxtNoPersonSupervised; + } + + public String getTxtReportTo() { + return this.txtReportTo; + } + + public void setTxtReportTo(String newTxtReportTo) { + this.txtReportTo = newTxtReportTo; + } + + public String getTxtWorkExp() { + return this.txtWorkExp; + } + + public void setTxtWorkExp(String newTxtWorkExp) { + this.txtWorkExp = newTxtWorkExp; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java new file mode 100644 index 0000000..4e02873 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java @@ -0,0 +1,166 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecApplnMtnHdrBean extends BaseHeaderBean implements Serializable { + private String applnNoId; + + private String designationId; + + private String referenceId; + + private String referenceNo; + + private String applForDesignation; + + private String picturePath; + + private String applicationNo; + + private String applicationDate; + + private String applicantFirstName; + + private String applicantMiddleName; + + private String applicantLastName; + + private String entryMode; + + private String rollNo; + + private String employeeStatus; + + private String nationalityCode; + + private String applForGrade; + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getReferenceId() { + return this.referenceId; + } + + public void setReferenceId(String newReferenceId) { + this.referenceId = newReferenceId; + } + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getPicturePath() { + return this.picturePath; + } + + public void setPicturePath(String newPicturePath) { + this.picturePath = newPicturePath; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getApplicantFirstName() { + return this.applicantFirstName; + } + + public void setApplicantFirstName(String newApplicantFirstName) { + this.applicantFirstName = newApplicantFirstName; + } + + public String getApplicantMiddleName() { + return this.applicantMiddleName; + } + + public void setApplicantMiddleName(String newApplicantMiddleName) { + this.applicantMiddleName = newApplicantMiddleName; + } + + public String getApplicantLastName() { + return this.applicantLastName; + } + + public void setApplicantLastName(String newApplicantLastName) { + this.applicantLastName = newApplicantLastName; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRollNo() { + return this.rollNo; + } + + public void setRollNo(String newRollNo) { + this.rollNo = newRollNo; + } + + public String getEmployeeStatus() { + return this.employeeStatus; + } + + public void setEmployeeStatus(String newEmployeeStatus) { + this.employeeStatus = newEmployeeStatus; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getApplForGrade() { + return this.applForGrade; + } + + public void setApplForGrade(String newApplForGrade) { + this.applForGrade = newApplForGrade; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java new file mode 100644 index 0000000..7e84d92 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnLangDtlBean extends BaseDetailBean implements Serializable { + private String txtLanguageCode; + + private String txtKnowledgeLevel; + + private String knowledgeId; + + private String langId; + + public String getTxtLanguageCode() { + return this.txtLanguageCode; + } + + public void setTxtLanguageCode(String newTxtLanguageCode) { + this.txtLanguageCode = newTxtLanguageCode; + } + + public String getTxtKnowledgeLevel() { + return this.txtKnowledgeLevel; + } + + public void setTxtKnowledgeLevel(String newTxtKnowledgeLevel) { + this.txtKnowledgeLevel = newTxtKnowledgeLevel; + } + + public String getKnowledgeId() { + return this.knowledgeId; + } + + public void setKnowledgeId(String newKnowledgeId) { + this.knowledgeId = newKnowledgeId; + } + + public String getLangId() { + return this.langId; + } + + public void setLangId(String newLangId) { + this.langId = newLangId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java new file mode 100644 index 0000000..ce9ffde --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java @@ -0,0 +1,176 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnOtherDtlBean extends BaseDetailBean implements Serializable { + private String testCentreId = "0"; + + private String testCenter; + + private String writtenScoreA; + + private String writtenScoreB; + + private String interviewScore; + + private String failedWrittenA; + + private String failedWrittenB; + + private String qualInterview; + + private String medicalCleared; + + private String disqualified; + + private String appointedFlag; + + private String joinedOrganisation; + + private String qualInterview2; + + private String qualInterview3; + + private String interviewScore2; + + private String interviewScore3; + + private String rating; + + public String getTestCentreId() { + return this.testCentreId; + } + + public void setTestCentreId(String newTestCentreId) { + this.testCentreId = newTestCentreId; + } + + public String getTestCenter() { + return this.testCenter; + } + + public void setTestCenter(String newTestCenter) { + this.testCenter = newTestCenter; + } + + public String getWrittenScoreA() { + return this.writtenScoreA; + } + + public void setWrittenScoreA(String newWrittenScoreA) { + this.writtenScoreA = newWrittenScoreA; + } + + public String getWrittenScoreB() { + return this.writtenScoreB; + } + + public void setWrittenScoreB(String newWrittenScoreB) { + this.writtenScoreB = newWrittenScoreB; + } + + public String getInterviewScore() { + return this.interviewScore; + } + + public void setInterviewScore(String newInterviewScore) { + this.interviewScore = newInterviewScore; + } + + public String getFailedWrittenA() { + return this.failedWrittenA; + } + + public void setFailedWrittenA(String newFailedWrittenA) { + this.failedWrittenA = newFailedWrittenA; + } + + public String getFailedWrittenB() { + return this.failedWrittenB; + } + + public void setFailedWrittenB(String newFailedWrittenB) { + this.failedWrittenB = newFailedWrittenB; + } + + public String getQualInterview() { + return this.qualInterview; + } + + public void setQualInterview(String newQualInterview) { + this.qualInterview = newQualInterview; + } + + public String getMedicalCleared() { + return this.medicalCleared; + } + + public void setMedicalCleared(String newMedicalCleared) { + this.medicalCleared = newMedicalCleared; + } + + public String getDisqualified() { + return this.disqualified; + } + + public void setDisqualified(String newDisqualified) { + this.disqualified = newDisqualified; + } + + public String getAppointedFlag() { + return this.appointedFlag; + } + + public void setAppointedFlag(String newAppointedFlag) { + this.appointedFlag = newAppointedFlag; + } + + public String getJoinedOrganisation() { + return this.joinedOrganisation; + } + + public void setJoinedOrganisation(String newJoinedOrganisation) { + this.joinedOrganisation = newJoinedOrganisation; + } + + public String getQualInterview2() { + return this.qualInterview2; + } + + public void setQualInterview2(String newQualInterview2) { + this.qualInterview2 = newQualInterview2; + } + + public String getQualInterview3() { + return this.qualInterview3; + } + + public void setQualInterview3(String newQualInterview3) { + this.qualInterview3 = newQualInterview3; + } + + public String getInterviewScore2() { + return this.interviewScore2; + } + + public void setInterviewScore2(String newInterviewScore2) { + this.interviewScore2 = newInterviewScore2; + } + + public String getInterviewScore3() { + return this.interviewScore3; + } + + public void setInterviewScore3(String newInterviewScore3) { + this.interviewScore3 = newInterviewScore3; + } + + public String getRating() { + return this.rating; + } + + public void setRating(String newRating) { + this.rating = newRating; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java new file mode 100644 index 0000000..38c6708 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnRefDtlBean extends BaseDetailBean implements Serializable { + private String txtName; + + private String txtAddress; + + private String txtPhone; + + private String txtPosition; + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String getTxtPhone() { + return this.txtPhone; + } + + public void setTxtPhone(String newTxtPhone) { + this.txtPhone = newTxtPhone; + } + + public String getTxtPosition() { + return this.txtPosition; + } + + public void setTxtPosition(String newTxtPosition) { + this.txtPosition = newTxtPosition; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java new file mode 100644 index 0000000..8c9a33b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnResultDtlBean extends BaseDetailBean implements Serializable { + private String testCentreId; + + private String testCenter; + + private String writtenScoreA; + + private String writtenScoreB; + + private String interviewScore; + + private String failedWrittenA; + + private String failedWrittenB; + + private String failedInterview; + + private String medicalCleared; + + private String disqualified; + + private String panelRanking; + + public String getTestCentreId() { + return this.testCentreId; + } + + public void setTestCentreId(String newTestCentreId) { + this.testCentreId = newTestCentreId; + } + + public String getTestCenter() { + return this.testCenter; + } + + public void setTestCenter(String newTestCenter) { + this.testCenter = newTestCenter; + } + + public String getWrittenScoreA() { + return this.writtenScoreA; + } + + public void setWrittenScoreA(String newWrittenScoreA) { + this.writtenScoreA = newWrittenScoreA; + } + + public String getWrittenScoreB() { + return this.writtenScoreB; + } + + public void setWrittenScoreB(String newWrittenScoreB) { + this.writtenScoreB = newWrittenScoreB; + } + + public String getInterviewScore() { + return this.interviewScore; + } + + public void setInterviewScore(String newInterviewScore) { + this.interviewScore = newInterviewScore; + } + + public String getFailedWrittenA() { + return this.failedWrittenA; + } + + public void setFailedWrittenA(String newFailedWrittenA) { + this.failedWrittenA = newFailedWrittenA; + } + + public String getFailedWrittenB() { + return this.failedWrittenB; + } + + public void setFailedWrittenB(String newFailedWrittenB) { + this.failedWrittenB = newFailedWrittenB; + } + + public String getFailedInterview() { + return this.failedInterview; + } + + public void setFailedInterview(String newFailedInterview) { + this.failedInterview = newFailedInterview; + } + + public String getMedicalCleared() { + return this.medicalCleared; + } + + public void setMedicalCleared(String newMedicalCleared) { + this.medicalCleared = newMedicalCleared; + } + + public String getDisqualified() { + return this.disqualified; + } + + public void setDisqualified(String newDisqualified) { + this.disqualified = newDisqualified; + } + + public String getPanelRanking() { + return this.panelRanking; + } + + public void setPanelRanking(String newPanelRanking) { + this.panelRanking = newPanelRanking; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java new file mode 100644 index 0000000..dd06210 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnTrngDtlBean extends BaseDetailBean implements Serializable { + private String txtCourse; + + private String txtFromDate; + + private String txtToDate; + + private String txtInstitute; + + private String txtSubject; + + public String getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtInstitute() { + return this.txtInstitute; + } + + public void setTxtInstitute(String newTxtInstitute) { + this.txtInstitute = newTxtInstitute; + } + + public String getTxtSubject() { + return this.txtSubject; + } + + public void setTxtSubject(String newTxtSubject) { + this.txtSubject = newTxtSubject; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java new file mode 100644 index 0000000..459e095 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java @@ -0,0 +1,756 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecEmpRecCreationHdrBean extends BaseHeaderBean implements Serializable { + String applicationNo; + + String advNo; + + String newEmpNo; + + String employeeFirstName; + + String employeeMiddleName; + + String employeeLastName; + + String entryMode; + + String rollNo; + + String guardianName; + + String motherToungue; + + String dateOfBirth; + + String nationality; + + String bloodGroup; + + private String maritalStatus; + + String sex; + + String reservationCategory; + + String religion; + + String email; + + String arrested; + + String fined; + + String imprisoned; + + String proscecuted; + + String handicappedFlag; + + String placeOfissue; + + String passportNo; + + String expiryDate; + + String issueDate; + + String presentAddress; + + String countryPresentAddress; + + String statePresentAddress; + + String cityPresentAddress; + + String phonePresentAddress; + + String pinCodePresentAddress; + + String officeAddress; + + String countryOfficeAddress; + + String stateOfficeAddress; + + String cityOfficeAddress; + + String phoneOfficeAddress; + + String pinCodeOfficeAddress; + + String permanentAddress; + + String countryPermanentAddress; + + String statePermanentAddress; + + String cityPermanentAddress; + + String phonePermanentAddresss; + + String pinCodePermanentAddress; + + String appointmentOrder; + + String appointmentOrderDate; + + String companyJoiningDate; + + String locationJoiningDate; + + String tentativeConfirmDate; + + String retirementDate; + + String baseSite; + + String designation; + + String grade; + + String bankSalAcc; + + String costCentre; + + String accountNo; + + String employeeType; + + String joiningGroup; + + String gradeId; + + String desgnId; + + String baseSiteId; + + String joiningId; + + String applnId; + + private String placeOfBirth; + + private String relatedEmployee; + + private String applForDesignation; + + private String applForGrade; + + private String entryModeId; + + private String entryModeCode; + + private String motherToungueCode; + + private String nationalityCode; + + private String maritalStatusCode; + + private String relatedEmployeeId; + + private String religionId; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getAdvNo() { + return this.advNo; + } + + public void setAdvNo(String newAdvNo) { + this.advNo = newAdvNo; + } + + public String getNewEmpNo() { + return this.newEmpNo; + } + + public void setNewEmpNo(String newNewEmpNo) { + this.newEmpNo = newNewEmpNo; + } + + public String getEmployeeFirstName() { + return this.employeeFirstName; + } + + public void setEmployeeFirstName(String newEmployeeFirstName) { + this.employeeFirstName = newEmployeeFirstName; + } + + public String getEmployeeMiddleName() { + return this.employeeMiddleName; + } + + public void setEmployeeMiddleName(String newEmployeeMiddleName) { + this.employeeMiddleName = newEmployeeMiddleName; + } + + public String getEmployeeLastName() { + return this.employeeLastName; + } + + public void setEmployeeLastName(String newEmployeeLastName) { + this.employeeLastName = newEmployeeLastName; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRollNo() { + return this.rollNo; + } + + public void setRollNo(String newRollNo) { + this.rollNo = newRollNo; + } + + public String getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String newGuardianName) { + this.guardianName = newGuardianName; + } + + public String getMotherToungue() { + return this.motherToungue; + } + + public void setMotherToungue(String newMotherToungue) { + this.motherToungue = newMotherToungue; + } + + public String getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String getNationality() { + return this.nationality; + } + + public void setNationality(String newNationality) { + this.nationality = newNationality; + } + + public String getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getReservationCategory() { + return this.reservationCategory; + } + + public void setReservationCategory(String newReservationCategory) { + this.reservationCategory = newReservationCategory; + } + + public String getReligion() { + return this.religion; + } + + public void setReligion(String newReligion) { + this.religion = newReligion; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getArrested() { + return this.arrested; + } + + public void setArrested(String newArrested) { + this.arrested = newArrested; + } + + public String getFined() { + return this.fined; + } + + public void setFined(String newFined) { + this.fined = newFined; + } + + public String getImprisoned() { + return this.imprisoned; + } + + public void setImprisoned(String newImprisoned) { + this.imprisoned = newImprisoned; + } + + public String getProscecuted() { + return this.proscecuted; + } + + public void setProscecuted(String newProscecuted) { + this.proscecuted = newProscecuted; + } + + public String getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getPlaceOfissue() { + return this.placeOfissue; + } + + public void setPlaceOfissue(String newPlaceOfissue) { + this.placeOfissue = newPlaceOfissue; + } + + public String getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String newPassportNo) { + this.passportNo = newPassportNo; + } + + public String getExpiryDate() { + return this.expiryDate; + } + + public void setExpiryDate(String newExpiryDate) { + this.expiryDate = newExpiryDate; + } + + public String getIssueDate() { + return this.issueDate; + } + + public void setIssueDate(String newIssueDate) { + this.issueDate = newIssueDate; + } + + public String getPresentAddress() { + return this.presentAddress; + } + + public void setPresentAddress(String newPresentAddress) { + this.presentAddress = newPresentAddress; + } + + public String getCountryPresentAddress() { + return this.countryPresentAddress; + } + + public void setCountryPresentAddress(String newCountryPresentAddress) { + this.countryPresentAddress = newCountryPresentAddress; + } + + public String getStatePresentAddress() { + return this.statePresentAddress; + } + + public void setStatePresentAddress(String newStatePresentAddress) { + this.statePresentAddress = newStatePresentAddress; + } + + public String getCityPresentAddress() { + return this.cityPresentAddress; + } + + public void setCityPresentAddress(String newCityPresentAddress) { + this.cityPresentAddress = newCityPresentAddress; + } + + public String getPhonePresentAddress() { + return this.phonePresentAddress; + } + + public void setPhonePresentAddress(String newPhonePresentAddress) { + this.phonePresentAddress = newPhonePresentAddress; + } + + public String getPinCodePresentAddress() { + return this.pinCodePresentAddress; + } + + public void setPinCodePresentAddress(String newPinCodePresentAddress) { + this.pinCodePresentAddress = newPinCodePresentAddress; + } + + public String getOfficeAddress() { + return this.officeAddress; + } + + public void setOfficeAddress(String newOfficeAddress) { + this.officeAddress = newOfficeAddress; + } + + public String getCountryOfficeAddress() { + return this.countryOfficeAddress; + } + + public void setCountryOfficeAddress(String newCountryOfficeAddress) { + this.countryOfficeAddress = newCountryOfficeAddress; + } + + public String getStateOfficeAddress() { + return this.stateOfficeAddress; + } + + public void setStateOfficeAddress(String newStateOfficeAddress) { + this.stateOfficeAddress = newStateOfficeAddress; + } + + public String getCityOfficeAddress() { + return this.cityOfficeAddress; + } + + public void setCityOfficeAddress(String newCityOfficeAddress) { + this.cityOfficeAddress = newCityOfficeAddress; + } + + public String getPhoneOfficeAddress() { + return this.phoneOfficeAddress; + } + + public void setPhoneOfficeAddress(String newPhoneOfficeAddress) { + this.phoneOfficeAddress = newPhoneOfficeAddress; + } + + public String getPinCodeOfficeAddress() { + return this.pinCodeOfficeAddress; + } + + public void setPinCodeOfficeAddress(String newPinCodeOfficeAddress) { + this.pinCodeOfficeAddress = newPinCodeOfficeAddress; + } + + public String getPermanentAddress() { + return this.permanentAddress; + } + + public void setPermanentAddress(String newPermanentAddress) { + this.permanentAddress = newPermanentAddress; + } + + public String getCountryPermanentAddress() { + return this.countryPermanentAddress; + } + + public void setCountryPermanentAddress(String newCountryPermanentAddress) { + this.countryPermanentAddress = newCountryPermanentAddress; + } + + public String getStatePermanentAddress() { + return this.statePermanentAddress; + } + + public void setStatePermanentAddress(String newStatePermanentAddress) { + this.statePermanentAddress = newStatePermanentAddress; + } + + public String getCityPermanentAddress() { + return this.cityPermanentAddress; + } + + public void setCityPermanentAddress(String newCityPermanentAddress) { + this.cityPermanentAddress = newCityPermanentAddress; + } + + public String getPhonePermanentAddresss() { + return this.phonePermanentAddresss; + } + + public void setPhonePermanentAddresss(String newPhonePermanentAddresss) { + this.phonePermanentAddresss = newPhonePermanentAddresss; + } + + public String getPinCodePermanentAddress() { + return this.pinCodePermanentAddress; + } + + public void setPinCodePermanentAddress(String newPinCodePermanentAddress) { + this.pinCodePermanentAddress = newPinCodePermanentAddress; + } + + public String getAppointmentOrder() { + return this.appointmentOrder; + } + + public void setAppointmentOrder(String newAppointmentOrder) { + this.appointmentOrder = newAppointmentOrder; + } + + public String getAppointmentOrderDate() { + return this.appointmentOrderDate; + } + + public void setAppointmentOrderDate(String newAppointmentOrderDate) { + this.appointmentOrderDate = newAppointmentOrderDate; + } + + public String getCompanyJoiningDate() { + return this.companyJoiningDate; + } + + public void setCompanyJoiningDate(String newCompanyJoiningDate) { + this.companyJoiningDate = newCompanyJoiningDate; + } + + public String getLocationJoiningDate() { + return this.locationJoiningDate; + } + + public void setLocationJoiningDate(String newLocationJoiningDate) { + this.locationJoiningDate = newLocationJoiningDate; + } + + public String getTentativeConfirmDate() { + return this.tentativeConfirmDate; + } + + public void setTentativeConfirmDate(String newTentativeConfirmDate) { + this.tentativeConfirmDate = newTentativeConfirmDate; + } + + public String getRetirementDate() { + return this.retirementDate; + } + + public void setRetirementDate(String newRetirementDate) { + this.retirementDate = newRetirementDate; + } + + public String getBaseSite() { + return this.baseSite; + } + + public void setBaseSite(String newBaseSite) { + this.baseSite = newBaseSite; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getBankSalAcc() { + return this.bankSalAcc; + } + + public void setBankSalAcc(String newBankSalAcc) { + this.bankSalAcc = newBankSalAcc; + } + + public String getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String newCostCentre) { + this.costCentre = newCostCentre; + } + + public String getAccountNo() { + return this.accountNo; + } + + public void setAccountNo(String newAccountNo) { + this.accountNo = newAccountNo; + } + + public String getEmployeeType() { + return this.employeeType; + } + + public void setEmployeeType(String newEmployeeType) { + this.employeeType = newEmployeeType; + } + + public String getJoiningGroup() { + return this.joiningGroup; + } + + public void setJoiningGroup(String newJoiningGroup) { + this.joiningGroup = newJoiningGroup; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getDesgnId() { + return this.desgnId; + } + + public void setDesgnId(String newDesgnId) { + this.desgnId = newDesgnId; + } + + public String getBaseSiteId() { + return this.baseSiteId; + } + + public void setBaseSiteId(String newBaseSiteId) { + this.baseSiteId = newBaseSiteId; + } + + public String getJoiningId() { + return this.joiningId; + } + + public void setJoiningId(String newJoiningId) { + this.joiningId = newJoiningId; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getRelatedEmployee() { + return this.relatedEmployee; + } + + public void setRelatedEmployee(String newRelatedEmployee) { + this.relatedEmployee = newRelatedEmployee; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getApplForGrade() { + return this.applForGrade; + } + + public void setApplForGrade(String newApplForGrade) { + this.applForGrade = newApplForGrade; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String getEntryModeCode() { + return this.entryModeCode; + } + + public void setEntryModeCode(String newEntryModeCode) { + this.entryModeCode = newEntryModeCode; + } + + public String getMotherToungueCode() { + return this.motherToungueCode; + } + + public void setMotherToungueCode(String newMotherToungueCode) { + this.motherToungueCode = newMotherToungueCode; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getMaritalStatusCode() { + return this.maritalStatusCode; + } + + public void setMaritalStatusCode(String newMaritalStatusCode) { + this.maritalStatusCode = newMaritalStatusCode; + } + + public String getRelatedEmployeeId() { + return this.relatedEmployeeId; + } + + public void setRelatedEmployeeId(String newRelatedEmployeeId) { + this.relatedEmployeeId = newRelatedEmployeeId; + } + + public String getReligionId() { + return this.religionId; + } + + public void setReligionId(String newReligionId) { + this.religionId = newReligionId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java new file mode 100644 index 0000000..ec93d8d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java @@ -0,0 +1,126 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecScrutAppMtnDtlBean extends BaseDetailBean implements Serializable { + String txtRank; + + String txtApplicantNo; + + String txtApplicantName; + + String txtWrittemMarksA; + + String txtWrittemMarksB; + + String txtInterviewMarks; + + String txtTotalScore; + + String txtExpYrs; + + String txtEligibility; + + String txtTestCenter; + + String txtApplicantId; + + String txtStageId; + + public String getTxtRank() { + return this.txtRank; + } + + public void setTxtRank(String newTxtRank) { + this.txtRank = newTxtRank; + } + + public String getTxtApplicantNo() { + return this.txtApplicantNo; + } + + public void setTxtApplicantNo(String newTxtApplicantNo) { + this.txtApplicantNo = newTxtApplicantNo; + } + + public String getTxtApplicantName() { + return this.txtApplicantName; + } + + public void setTxtApplicantName(String newTxtApplicantName) { + this.txtApplicantName = newTxtApplicantName; + } + + public String getTxtWrittemMarksA() { + return this.txtWrittemMarksA; + } + + public void setTxtWrittemMarksA(String newTxtWrittemMarksA) { + this.txtWrittemMarksA = newTxtWrittemMarksA; + } + + public String getTxtWrittemMarksB() { + return this.txtWrittemMarksB; + } + + public void setTxtWrittemMarksB(String newTxtWrittemMarksB) { + this.txtWrittemMarksB = newTxtWrittemMarksB; + } + + public String getTxtInterviewMarks() { + return this.txtInterviewMarks; + } + + public void setTxtInterviewMarks(String newTxtInterviewMarks) { + this.txtInterviewMarks = newTxtInterviewMarks; + } + + public String getTxtTotalScore() { + return this.txtTotalScore; + } + + public void setTxtTotalScore(String newTxtTotalScore) { + this.txtTotalScore = newTxtTotalScore; + } + + public String getTxtExpYrs() { + return this.txtExpYrs; + } + + public void setTxtExpYrs(String newTxtExpYrs) { + this.txtExpYrs = newTxtExpYrs; + } + + public String getTxtEligibility() { + return this.txtEligibility; + } + + public void setTxtEligibility(String newTxtEligibility) { + this.txtEligibility = newTxtEligibility; + } + + public String getTxtTestCenter() { + return this.txtTestCenter; + } + + public void setTxtTestCenter(String newTxtTestCenter) { + this.txtTestCenter = newTxtTestCenter; + } + + public String getTxtApplicantId() { + return this.txtApplicantId; + } + + public void setTxtApplicantId(String newTxtApplicantId) { + this.txtApplicantId = newTxtApplicantId; + } + + public String getTxtStageId() { + return this.txtStageId; + } + + public void setTxtStageId(String newTxtStageId) { + this.txtStageId = newTxtStageId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java new file mode 100644 index 0000000..03cdafc --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecScrutAppMtnHdrBean extends BaseHeaderBean implements Serializable { + String referenceNo; + + String adForDesignation; + + String stage; + + String referenceNoId; + + String adForDesignationId; + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getAdForDesignation() { + return this.adForDesignation; + } + + public void setAdForDesignation(String newAdForDesignation) { + this.adForDesignation = newAdForDesignation; + } + + public String getStage() { + return this.stage; + } + + public void setStage(String newStage) { + this.stage = newStage; + } + + public String getReferenceNoId() { + return this.referenceNoId; + } + + public void setReferenceNoId(String newReferenceNoId) { + this.referenceNoId = newReferenceNoId; + } + + public String getAdForDesignationId() { + return this.adForDesignationId; + } + + public void setAdForDesignationId(String newAdForDesignationId) { + this.adForDesignationId = newAdForDesignationId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java new file mode 100644 index 0000000..abd04f6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecTestCentreMstHdrBean extends BaseHeaderBean implements Serializable { + String testCentreCodeId; + + String address; + + String fax; + + String phone; + + String testCentreCode; + + String testCentreName; + + public String getTestCentreCodeId() { + return this.testCentreCodeId; + } + + public void setTestCentreCodeId(String newTestCentreCodeId) { + this.testCentreCodeId = newTestCentreCodeId; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getTestCentreCode() { + return this.testCentreCode; + } + + public void setTestCentreCode(String newTestCentreCode) { + this.testCentreCode = newTestCentreCode; + } + + public String getTestCentreName() { + return this.testCentreName; + } + + public void setTestCentreName(String newTestCentreName) { + this.testCentreName = newTestCentreName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmReportBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmReportBean.java new file mode 100644 index 0000000..43b1d64 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmReportBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmReportBean extends BaseHeaderBean implements Serializable { + private String txtYear; + + private String txtMonth; + + private String disabtxtMonth; + + public String getTxtYear() { + return this.txtYear; + } + + public void setTxtYear(String newTxtYear) { + this.txtYear = newTxtYear; + } + + public String getTxtMonth() { + return this.txtMonth; + } + + public void setTxtMonth(String newTxtMonth) { + this.txtMonth = newTxtMonth; + } + + public String getDisabtxtMonth() { + return this.disabtxtMonth; + } + + public void setDisabtxtMonth(String newDisabtxtMonth) { + this.disabtxtMonth = newDisabtxtMonth; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java new file mode 100644 index 0000000..94a9af7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRetireForecastHdrBean extends BaseHeaderBean implements Serializable { + private String fromDate; + + private String toDate; + + private String flag1; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getFlag1() { + return this.flag1; + } + + public void setFlag1(String newFlag1) { + this.flag1 = newFlag1; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java new file mode 100644 index 0000000..7005216 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRoasterEntryDtlBean extends BaseDetailBean implements Serializable { + private String txtRoasterPoint; + + private String txtCategoryAsPerRoaster; + + private String socialStatus; + + private String empNoId; + + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtAppointmentDate; + + private String txtDob; + + private String txtCategory; + + private String txtCategoryId; + + private String entryMode; + + public String getTxtRoasterPoint() { + return this.txtRoasterPoint; + } + + public void setTxtRoasterPoint(String txtRoasterPoint) { + this.txtRoasterPoint = txtRoasterPoint; + } + + public String getTxtCategoryAsPerRoaster() { + return this.txtCategoryAsPerRoaster; + } + + public void setTxtCategoryAsPerRoaster(String txtCategoryAsPerRoaster) { + this.txtCategoryAsPerRoaster = txtCategoryAsPerRoaster; + } + + public String getSocialStatus() { + return this.socialStatus; + } + + public void setSocialStatus(String socialStatus) { + this.socialStatus = socialStatus; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String empNoId) { + this.empNoId = empNoId; + } + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String txtEmployeeNo) { + this.txtEmployeeNo = txtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String txtEmployeeName) { + this.txtEmployeeName = txtEmployeeName; + } + + public String getTxtAppointmentDate() { + return this.txtAppointmentDate; + } + + public void setTxtAppointmentDate(String txtAppointmentDate) { + this.txtAppointmentDate = txtAppointmentDate; + } + + public String getTxtDob() { + return this.txtDob; + } + + public void setTxtDob(String txtDob) { + this.txtDob = txtDob; + } + + public String getTxtCategory() { + return this.txtCategory; + } + + public void setTxtCategory(String txtCategory) { + this.txtCategory = txtCategory; + } + + public String getTxtCategoryId() { + return this.txtCategoryId; + } + + public void setTxtCategoryId(String txtCategoryId) { + this.txtCategoryId = txtCategoryId; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String entryMode) { + this.entryMode = entryMode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java new file mode 100644 index 0000000..1468581 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRoasterEntryHdrBean extends BaseHeaderBean implements Serializable { + private String txtRoasterCode; + + private String txtRoasterDescription; + + private String roasterCodeId; + + public String getTxtRoasterCode() { + return this.txtRoasterCode; + } + + public void setTxtRoasterCode(String newTxtRoasterCode) { + this.txtRoasterCode = newTxtRoasterCode; + } + + public String getTxtRoasterDescription() { + return this.txtRoasterDescription; + } + + public void setTxtRoasterDescription(String newTxtRoasterDescription) { + this.txtRoasterDescription = newTxtRoasterDescription; + } + + public String getRoasterCodeId() { + return this.roasterCodeId; + } + + public void setRoasterCodeId(String newRoasterCodeId) { + this.roasterCodeId = newRoasterCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepApplnDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepApplnDtlBean.java new file mode 100644 index 0000000..253900f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepApplnDtlBean.java @@ -0,0 +1,136 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepApplnDtlBean extends BaseDetailBean implements Serializable { + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtSeparationCategory; + + private String txtImmediateEffect; + + private String txtRequestedSepDate; + + private String txtActualSepDate; + + private String txtReason; + + private String txtRejectionRemarks; + + private String txtApprovedFlag; + + private String txtWithdrawalFlag; + + private String txtEmpId; + + private String txtSepId; + + private String txtSepCode; + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtSeparationCategory() { + return this.txtSeparationCategory; + } + + public void setTxtSeparationCategory(String newTxtSeparationCategory) { + this.txtSeparationCategory = newTxtSeparationCategory; + } + + public String getTxtImmediateEffect() { + return this.txtImmediateEffect; + } + + public void setTxtImmediateEffect(String newTxtImmediateEffect) { + this.txtImmediateEffect = newTxtImmediateEffect; + } + + public String getTxtRequestedSepDate() { + return this.txtRequestedSepDate; + } + + public void setTxtRequestedSepDate(String newTxtRequestedSepDate) { + this.txtRequestedSepDate = newTxtRequestedSepDate; + } + + public String getTxtActualSepDate() { + return this.txtActualSepDate; + } + + public void setTxtActualSepDate(String newTxtActualSepDate) { + this.txtActualSepDate = newTxtActualSepDate; + } + + public String getTxtReason() { + return this.txtReason; + } + + public void setTxtReason(String newTxtReason) { + this.txtReason = newTxtReason; + } + + public String getTxtRejectionRemarks() { + return this.txtRejectionRemarks; + } + + public void setTxtRejectionRemarks(String newTxtRejectionRemarks) { + this.txtRejectionRemarks = newTxtRejectionRemarks; + } + + public String getTxtApprovedFlag() { + return this.txtApprovedFlag; + } + + public void setTxtApprovedFlag(String newTxtApprovedFlag) { + this.txtApprovedFlag = newTxtApprovedFlag; + } + + public String getTxtWithdrawalFlag() { + return this.txtWithdrawalFlag; + } + + public void setTxtWithdrawalFlag(String newTxtWithdrawalFlag) { + this.txtWithdrawalFlag = newTxtWithdrawalFlag; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtSepId() { + return this.txtSepId; + } + + public void setTxtSepId(String newTxtSepId) { + this.txtSepId = newTxtSepId; + } + + public String getTxtSepCode() { + return this.txtSepCode; + } + + public void setTxtSepCode(String newTxtSepCode) { + this.txtSepCode = newTxtSepCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepApplnHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepApplnHdrBean.java new file mode 100644 index 0000000..b76b38d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepApplnHdrBean.java @@ -0,0 +1,196 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepApplnHdrBean extends BaseHeaderBean implements Serializable { + private String applicationNo; + + private String dateApplied; + + private String initiatedBy; + + private String applnId; + + private String employeeNo; + + private String firstName; + + private String middleName; + + private String lastName; + + private String grade; + + private String designation; + + private String location; + + private String sepCat; + + private String imEffect; + + private String withFlag; + + private String reqSepDate; + + private String actSepDate; + + private String reason; + + private String empId; + + private String sepCatId; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getSepCat() { + return this.sepCat; + } + + public void setSepCat(String newSepCat) { + this.sepCat = newSepCat; + } + + public String getImEffect() { + return this.imEffect; + } + + public void setImEffect(String newImEffect) { + this.imEffect = newImEffect; + } + + public String getWithFlag() { + return this.withFlag; + } + + public void setWithFlag(String newWithFlag) { + this.withFlag = newWithFlag; + } + + public String getReqSepDate() { + return this.reqSepDate; + } + + public void setReqSepDate(String newReqSepDate) { + this.reqSepDate = newReqSepDate; + } + + public String getActSepDate() { + return this.actSepDate; + } + + public void setActSepDate(String newActSepDate) { + this.actSepDate = newActSepDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getSepCatId() { + return this.sepCatId; + } + + public void setSepCatId(String newSepCatId) { + this.sepCatId = newSepCatId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java new file mode 100644 index 0000000..c1d2db7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java @@ -0,0 +1,3 @@ +package wenrgise.hrms.bean; + +public class HrmSepCatMstDtlBean {} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java new file mode 100644 index 0000000..2193664 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java @@ -0,0 +1,68 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepCatMstHdrBean extends BaseHeaderBean implements Serializable { + private String separationCode; + + private String separationCodeId; + + private String description; + + private String noticePeriod; + + private String remarks; + + String separationType; + + String disabseparationType; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getNoticePeriod() { + return this.noticePeriod; + } + + public void setNoticePeriod(String newNoticePeriod) { + this.noticePeriod = newNoticePeriod; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } + + public String getSeparationType() { + return this.separationType; + } + + public void setSeparationType(String newSeparationType) { + this.separationType = newSeparationType; + } + + public String getDisabseparationType() { + return this.disabseparationType; + } + + public void setDisabseparationType(String newDisabseparationType) { + this.disabseparationType = newDisabseparationType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java new file mode 100644 index 0000000..7cc7be3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java @@ -0,0 +1,48 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepCatMstrHdrBean extends BaseHeaderBean implements Serializable { + private String separationCode; + + private String separationCodeId; + + private String description; + + private String noticePeriod; + + private String remarks; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getNoticePeriod() { + return this.noticePeriod; + } + + public void setNoticePeriod(String newNoticePeriod) { + this.noticePeriod = newNoticePeriod; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java new file mode 100644 index 0000000..b2e9d90 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java @@ -0,0 +1,45 @@ +package wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepClrEmpDtlBean extends BaseDetailBean { + private String txtClrDesc; + + private String txtClrDescId; + + private String txtCheckFlag; + + private String txtComment; + + public String getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } + + public String getTxtCheckFlag() { + return this.txtCheckFlag; + } + + public void setTxtCheckFlag(String newTxtCheckFlag) { + this.txtCheckFlag = newTxtCheckFlag; + } + + public String getTxtComment() { + return this.txtComment; + } + + public void setTxtComment(String newTxtComment) { + this.txtComment = newTxtComment; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java new file mode 100644 index 0000000..02e200e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java @@ -0,0 +1,45 @@ +package wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepClrEmpHdrBean extends BaseHeaderBean { + private String empNoId; + + private String tmplDescId; + + private String tmplDesc; + + private String empNo; + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getTmplDesc() { + return this.tmplDesc; + } + + public void setTmplDesc(String newTmplDesc) { + this.tmplDesc = newTmplDesc; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java new file mode 100644 index 0000000..ee3724a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepClrLstDtlBean extends BaseDetailBean implements Serializable { + String description; + + String type; + + String disabdescription; + + String disabexternalInternalFlag; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getType() { + return this.type; + } + + public void setType(String newExternalInternalFlag) { + this.type = newExternalInternalFlag; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabexternalInternalFlag() { + return this.disabexternalInternalFlag; + } + + public void setDisabexternalInternalFlag(String newDisabexternalInternalFlag) { + this.disabexternalInternalFlag = newDisabexternalInternalFlag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java new file mode 100644 index 0000000..ca7bab1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java @@ -0,0 +1,23 @@ +package wenrgise.hrms.bean; + +public class HrmSepClrTmpMstDtlBean { + String txtClrDesc; + + String txtClrDescId; + + public String getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java new file mode 100644 index 0000000..362d105 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java @@ -0,0 +1,35 @@ +package wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepClrTmplMstDtlBean extends BaseDetailBean { + private String txtClrDescId; + + private String txtClrDesc; + + private String disabtxtClrDesc; + + public String getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } + + public String getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String getDisabtxtClrDesc() { + return this.disabtxtClrDesc; + } + + public void setDisabtxtClrDesc(String newDisabtxtClrDesc) { + this.disabtxtClrDesc = newDisabtxtClrDesc; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java new file mode 100644 index 0000000..d853afc --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java @@ -0,0 +1,45 @@ +package wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepClrTmplMstHdrBean extends BaseHeaderBean { + private String tmplDesc; + + private String tmplDescId; + + private String obsoleteFlag; + + private String butTmplDesc; + + public String getTmplDesc() { + return this.tmplDesc; + } + + public void setTmplDesc(String newTmplDesc) { + this.tmplDesc = newTmplDesc; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getObsoleteFlag() { + return this.obsoleteFlag; + } + + public void setObsoleteFlag(String newObsoleteFlag) { + this.obsoleteFlag = newObsoleteFlag; + } + + public String getButTmplDesc() { + return this.butTmplDesc; + } + + public void setButTmplDesc(String newButTmplDesc) { + this.butTmplDesc = newButTmplDesc; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepOrderDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepOrderDtlBean.java new file mode 100644 index 0000000..5e4c811 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepOrderDtlBean.java @@ -0,0 +1,176 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepOrderDtlBean extends BaseDetailBean implements Serializable { + private String txtSepDtlId; + + private String txtApplnNo; + + private String txtEmpId; + + private String txtApprovedFlag; + + private String txtRejectionRemarks; + + private String txtReason; + + private String txtActualSepDate; + + private String txtRequestedSepDate; + + private String txtSeparationCategory; + + private String txtEmployeeName; + + private String txtApplnId; + + private String txtApplnDate; + + private String disabbutApplnNo; + + private String disabbutActualSepDate; + + private String disabtxtReason; + + private String disabtxtRejectionRemarks; + + private String hdnTempFlag; + + public String getTxtSepDtlId() { + return this.txtSepDtlId; + } + + public void setTxtSepDtlId(String newTxtSepDtlId) { + this.txtSepDtlId = newTxtSepDtlId; + } + + public String getTxtApplnNo() { + return this.txtApplnNo; + } + + public void setTxtApplnNo(String newTxtApplnNo) { + this.txtApplnNo = newTxtApplnNo; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtApprovedFlag() { + return this.txtApprovedFlag; + } + + public void setTxtApprovedFlag(String newTxtApprovedFlag) { + this.txtApprovedFlag = newTxtApprovedFlag; + } + + public String getTxtRejectionRemarks() { + return this.txtRejectionRemarks; + } + + public void setTxtRejectionRemarks(String newTxtRejectionRemarks) { + this.txtRejectionRemarks = newTxtRejectionRemarks; + } + + public String getTxtReason() { + return this.txtReason; + } + + public void setTxtReason(String newTxtReason) { + this.txtReason = newTxtReason; + } + + public String getTxtActualSepDate() { + return this.txtActualSepDate; + } + + public void setTxtActualSepDate(String newTxtActualSepDate) { + this.txtActualSepDate = newTxtActualSepDate; + } + + public String getTxtRequestedSepDate() { + return this.txtRequestedSepDate; + } + + public void setTxtRequestedSepDate(String newTxtRequestedSepDate) { + this.txtRequestedSepDate = newTxtRequestedSepDate; + } + + public String getTxtSeparationCategory() { + return this.txtSeparationCategory; + } + + public void setTxtSeparationCategory(String newTxtSeparationCategory) { + this.txtSeparationCategory = newTxtSeparationCategory; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtApplnId() { + return this.txtApplnId; + } + + public void setTxtApplnId(String newTxtApplnId) { + this.txtApplnId = newTxtApplnId; + } + + public String getTxtApplnDate() { + return this.txtApplnDate; + } + + public void setTxtApplnDate(String newTxtApplnDate) { + this.txtApplnDate = newTxtApplnDate; + } + + public String getDisabbutApplnNo() { + return this.disabbutApplnNo; + } + + public void setDisabbutApplnNo(String newDisabbutApplnNo) { + this.disabbutApplnNo = newDisabbutApplnNo; + } + + public String getDisabbutActualSepDate() { + return this.disabbutActualSepDate; + } + + public void setDisabbutActualSepDate(String newDisabbutActualSepDate) { + this.disabbutActualSepDate = newDisabbutActualSepDate; + } + + public String getDisabtxtReason() { + return this.disabtxtReason; + } + + public void setDisabtxtReason(String newDisabtxtReason) { + this.disabtxtReason = newDisabtxtReason; + } + + public String getDisabtxtRejectionRemarks() { + return this.disabtxtRejectionRemarks; + } + + public void setDisabtxtRejectionRemarks(String newDisabtxtRejectionRemarks) { + this.disabtxtRejectionRemarks = newDisabtxtRejectionRemarks; + } + + public String getHdnTempFlag() { + return this.hdnTempFlag; + } + + public void setHdnTempFlag(String newHdnTempFlag) { + this.hdnTempFlag = newHdnTempFlag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepOrderHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepOrderHdrBean.java new file mode 100644 index 0000000..768d2dd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepOrderHdrBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepOrderHdrBean extends BaseHeaderBean implements Serializable { + private String orderNo; + + private String orderDate; + + private String orderNoId; + + private String applicationNo; + + private String dateApplied; + + private String initiatedBy; + + private String employeeNo; + + private String employeeName; + + private String sepCat; + + private String reqSepDate; + + private String reason; + + private String actSepDate; + + private String approvedBy; + + private String remarks; + + private String applnId; + + private String approverId; + + private String empId; + + private String sepCatId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getSepCat() { + return this.sepCat; + } + + public void setSepCat(String newSepCat) { + this.sepCat = newSepCat; + } + + public String getReqSepDate() { + return this.reqSepDate; + } + + public void setReqSepDate(String newReqSepDate) { + this.reqSepDate = newReqSepDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getActSepDate() { + return this.actSepDate; + } + + public void setActSepDate(String newActSepDate) { + this.actSepDate = newActSepDate; + } + + public String getApprovedBy() { + return this.approvedBy; + } + + public void setApprovedBy(String newApprovedBy) { + this.approvedBy = newApprovedBy; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getApproverId() { + return this.approverId; + } + + public void setApproverId(String newApproverId) { + this.approverId = newApproverId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getSepCatId() { + return this.sepCatId; + } + + public void setSepCatId(String newSepCatId) { + this.sepCatId = newSepCatId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java new file mode 100644 index 0000000..0b427aa --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java @@ -0,0 +1,3 @@ +package wenrgise.hrms.bean; + +public class HrmSepTmplMstDtlBean {} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSettleDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSettleDtlBean.java new file mode 100644 index 0000000..1f2d24e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSettleDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSettleDtlBean extends BaseDetailBean implements Serializable { + private String txtHeadName; + + private String txtMaxLimit; + + public String getTxtHeadName() { + return this.txtHeadName; + } + + public void setTxtHeadName(String newTxtHeadName) { + this.txtHeadName = newTxtHeadName; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmSettleHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmSettleHdrBean.java new file mode 100644 index 0000000..5f05796 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmSettleHdrBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSettleHdrBean extends BaseHeaderBean implements Serializable { + private String advanceDescription; + + String advCodeId; + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getAdvCodeId() { + return this.advCodeId; + } + + public void setAdvCodeId(String newAdvCodeId) { + this.advCodeId = newAdvCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java new file mode 100644 index 0000000..f6312c8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTransCnclOrderSingEmpDtlBean extends BaseDetailBean implements Serializable { + String defPeriod; + + String defDate; + + public String getDefPeriod() { + return this.defPeriod; + } + + public void setDefPeriod(String newDefPeriod) { + this.defPeriod = newDefPeriod; + } + + public String getDefDate() { + return this.defDate; + } + + public void setDefDate(String newDefDate) { + this.defDate = newDefDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java new file mode 100644 index 0000000..fcac505 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTransCnclOrderSingEmpHdrBean extends BaseHeaderBean implements Serializable { + String orderNo; + + String orderDate; + + String generatedBy; + + String cancDefFlag; + + String cancStatus; + + String defDate; + + String defPeriod; + + String appNo; + + String appDate; + + private String appNoId; + + String headerPrimaryKey1; + + String employeeName; + + String transOrderNo; + + String transOrderDate; + + String transEffectDate; + + private String employeeId; + + private String approverNoId; + + private String approverName; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getGeneratedBy() { + return this.generatedBy; + } + + public void setGeneratedBy(String newGeneratedBy) { + this.generatedBy = newGeneratedBy; + } + + public String getCancDefFlag() { + return this.cancDefFlag; + } + + public void setCancDefFlag(String newCancDefFlag) { + this.cancDefFlag = newCancDefFlag; + } + + public String getCancStatus() { + return this.cancStatus; + } + + public void setCancStatus(String newCancStatus) { + this.cancStatus = newCancStatus; + } + + public String getDefDate() { + return this.defDate; + } + + public void setDefDate(String newDefDate) { + this.defDate = newDefDate; + } + + public String getDefPeriod() { + return this.defPeriod; + } + + public void setDefPeriod(String newDefPeriod) { + this.defPeriod = newDefPeriod; + } + + public String getAppNo() { + return this.appNo; + } + + public void setAppNo(String newAppNo) { + this.appNo = newAppNo; + } + + public String getAppDate() { + return this.appDate; + } + + public void setAppDate(String newAppDate) { + this.appDate = newAppDate; + } + + public String getAppNoId() { + return this.appNoId; + } + + public void setAppNoId(String newAppNoId) { + this.appNoId = newAppNoId; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getTransOrderNo() { + return this.transOrderNo; + } + + public void setTransOrderNo(String newTransOrderNo) { + this.transOrderNo = newTransOrderNo; + } + + public String getTransOrderDate() { + return this.transOrderDate; + } + + public void setTransOrderDate(String newTransOrderDate) { + this.transOrderDate = newTransOrderDate; + } + + public String getTransEffectDate() { + return this.transEffectDate; + } + + public void setTransEffectDate(String newTransEffectDate) { + this.transEffectDate = newTransEffectDate; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java new file mode 100644 index 0000000..93a9521 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTransOrderSingEmpDtlBean extends BaseDetailBean implements Serializable { + private String applnNo; + + private String selfOfcFlag; + + private String empName; + + private String fromSite; + + private String toSite; + + private String reportingEmpId; + + private String trnsfrEffectDate; + + private String reportingDate; + + private String noOfDays; + + private String taFlag; + + private String daFlag; + + private String remarks; + + private String toWorkGroupID; + + private String fromWorkGroupID; + + private String applicationDate; + + private String empID; + + private String toSiteID; + + private String applnNoID; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getSelfOfcFlag() { + return this.selfOfcFlag; + } + + public void setSelfOfcFlag(String newSelfOfcFlag) { + this.selfOfcFlag = newSelfOfcFlag; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getTrnsfrEffectDate() { + return this.trnsfrEffectDate; + } + + public void setTrnsfrEffectDate(String newTrnsfrEffectDate) { + this.trnsfrEffectDate = newTrnsfrEffectDate; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getNoOfDays() { + return this.noOfDays; + } + + public void setNoOfDays(String newNoOfDays) { + this.noOfDays = newNoOfDays; + } + + public String getTaFlag() { + return this.taFlag; + } + + public void setTaFlag(String newTaFlag) { + this.taFlag = newTaFlag; + } + + public String getDaFlag() { + return this.daFlag; + } + + public void setDaFlag(String newDaFlag) { + this.daFlag = newDaFlag; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getToWorkGroupID() { + return this.toWorkGroupID; + } + + public void setToWorkGroupID(String newToWorkGroupID) { + this.toWorkGroupID = newToWorkGroupID; + } + + public String getFromWorkGroupID() { + return this.fromWorkGroupID; + } + + public void setFromWorkGroupID(String newFromWorkGroupID) { + this.fromWorkGroupID = newFromWorkGroupID; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getEmpID() { + return this.empID; + } + + public void setEmpID(String newEmpID) { + this.empID = newEmpID; + } + + public String getToSiteID() { + return this.toSiteID; + } + + public void setToSiteID(String newToSiteID) { + this.toSiteID = newToSiteID; + } + + public String getApplnNoID() { + return this.applnNoID; + } + + public void setApplnNoID(String newApplnNoID) { + this.applnNoID = newApplnNoID; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java new file mode 100644 index 0000000..b4dcc84 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java @@ -0,0 +1,346 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTransferApplicationHdrBean extends BaseHeaderBean implements Serializable { + private String applnNo; + + private String employeeNo; + + private String ofcNoteNo; + + private String ofcNoteDate; + + private String site1; + + private String site2; + + private String site3; + + private String reason; + + private String applnDate; + + private String applnNoId; + + private String fromSite; + + private String applnType; + + private String employeeNoId; + + private String siteId; + + private String siteCode; + + private String site1Id; + + private String site2Id; + + private String site3Id; + + private String trnsStatus; + + private String empName; + + private String siteCode1; + + private String siteCode2; + + private String siteCode3; + + private String fromDesignation; + + private String fromDesignationId; + + private String toDesignation; + + private String toDesignationId; + + private String fromWorkGroup; + + private String fromWorkGroupId; + + private String toWorkGroupCode; + + private String toWorkGroup; + + private String toWorkGroupId; + + private String selfOffice; + + private String disabSelfOffice; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getOfcNoteNo() { + return this.ofcNoteNo; + } + + public void setOfcNoteNo(String newOfcNoteNo) { + this.ofcNoteNo = newOfcNoteNo; + } + + public String getOfcNoteDate() { + return this.ofcNoteDate; + } + + public void setOfcNoteDate(String newOfcNoteDate) { + this.ofcNoteDate = newOfcNoteDate; + } + + public String getSite1() { + return this.site1; + } + + public void setSite1(String newSite1) { + this.site1 = newSite1; + } + + public String getSite2() { + return this.site2; + } + + public void setSite2(String newSite2) { + this.site2 = newSite2; + } + + public String getSite3() { + return this.site3; + } + + public void setSite3(String newSite3) { + this.site3 = newSite3; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getApplnDate() { + return this.applnDate; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getFromWorkGroupId() { + return this.fromWorkGroupId; + } + + public void setFromWorkGroupId(String newFromWorkGroupId) { + this.fromWorkGroupId = newFromWorkGroupId; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getToWorkGroupId() { + return this.toWorkGroupId; + } + + public void setToWorkGroupId(String newToWorkGroupId) { + this.toWorkGroupId = newToWorkGroupId; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getApplnType() { + return this.applnType; + } + + public void setApplnType(String newApplnType) { + this.applnType = newApplnType; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSite1Id() { + return this.site1Id; + } + + public void setSite1Id(String newSite1Id) { + this.site1Id = newSite1Id; + } + + public String getSite2Id() { + return this.site2Id; + } + + public void setSite2Id(String newSite2Id) { + this.site2Id = newSite2Id; + } + + public String getSite3Id() { + return this.site3Id; + } + + public void setSite3Id(String newSite3Id) { + this.site3Id = newSite3Id; + } + + public String getTrnsStatus() { + return this.trnsStatus; + } + + public void setTrnsStatus(String newTrnsStatus) { + this.trnsStatus = newTrnsStatus; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getSiteCode1() { + return this.siteCode1; + } + + public void setSiteCode1(String newSiteCode1) { + this.siteCode1 = newSiteCode1; + } + + public String getSiteCode2() { + return this.siteCode2; + } + + public void setSiteCode2(String newSiteCode2) { + this.siteCode2 = newSiteCode2; + } + + public String getSiteCode3() { + return this.siteCode3; + } + + public void setSiteCode3(String newSiteCode3) { + this.siteCode3 = newSiteCode3; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getFromDesignationId() { + return this.fromDesignationId; + } + + public void setFromDesignationId(String newFromDesignationId) { + this.fromDesignationId = newFromDesignationId; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getToDesignationId() { + return this.toDesignationId; + } + + public void setToDesignationId(String newToDesignationId) { + this.toDesignationId = newToDesignationId; + } + + public String getSelfOffice() { + return this.selfOffice; + } + + public void setSelfOffice(String newSelfOffice) { + this.selfOffice = newSelfOffice; + } + + public String getDisabSelfOffice() { + return this.disabSelfOffice; + } + + public void setDisabSelfOffice(String newDisabSelfOffice) { + this.disabSelfOffice = newDisabSelfOffice; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java new file mode 100644 index 0000000..5da0135 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCalCloseHdrBean extends BaseHeaderBean implements Serializable { + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String calDtlId; + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getCalDtlId() { + return this.calDtlId; + } + + public void setCalDtlId(String newCalDtlId) { + this.calDtlId = newCalDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalDtlBean.java new file mode 100644 index 0000000..35efc58 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalDtlBean.java @@ -0,0 +1,306 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngCalDtlBean extends BaseDetailBean implements Serializable { + private String txtType; + + private String txtStartDate; + + private String txtEndDate; + + private String txtStrength; + + private String txtFee; + + private String txtStatus; + + private String txtInstituteName; + + private String txtCourseCode; + + private String txtRatingScheme; + + private String txtInsCode; + + private String txtCourseId; + + private String txtInstId; + + private String ratingId; + + private String disabtxtType; + + private String disabtxtStartDate; + + private String disabtxtEndDate; + + private String disabtxtStrength; + + private String disabtxtFee; + + private String disabtxtStatus; + + private String disabtxtInstituteName; + + private String disabtxtCourseCode; + + private String disabtxtRatingScheme; + + private String disabtxtInsCode; + + String disabbutTxtStartDate; + + String disabbutTxtEndDate; + + String disabTxtInstituteName; + + String disabTxtCourseCode; + + private String txtCourseName; + + private String txtVenue; + + private String txtDuration; + + public String getTxtType() { + return this.txtType; + } + + public void setTxtType(String newTxtType) { + this.txtType = newTxtType; + } + + public String getTxtStartDate() { + return this.txtStartDate; + } + + public void setTxtStartDate(String newTxtStartDate) { + this.txtStartDate = newTxtStartDate; + } + + public String getTxtEndDate() { + return this.txtEndDate; + } + + public void setTxtEndDate(String newTxtEndDate) { + this.txtEndDate = newTxtEndDate; + } + + public String getTxtStrength() { + return this.txtStrength; + } + + public void setTxtStrength(String newTxtStrength) { + this.txtStrength = newTxtStrength; + } + + public String getTxtFee() { + return this.txtFee; + } + + public void setTxtFee(String newTxtFee) { + this.txtFee = newTxtFee; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getTxtInstituteName() { + return this.txtInstituteName; + } + + public void setTxtInstituteName(String newTxtInstituteName) { + this.txtInstituteName = newTxtInstituteName; + } + + public String getTxtCourseCode() { + return this.txtCourseCode; + } + + public void setTxtCourseCode(String newTxtCourseCode) { + this.txtCourseCode = newTxtCourseCode; + } + + public String getTxtRatingScheme() { + return this.txtRatingScheme; + } + + public void setTxtRatingScheme(String newTxtRatingScheme) { + this.txtRatingScheme = newTxtRatingScheme; + } + + public String getTxtInsCode() { + return this.txtInsCode; + } + + public void setTxtInsCode(String newTxtInsCode) { + this.txtInsCode = newTxtInsCode; + } + + public String getTxtCourseId() { + return this.txtCourseId; + } + + public void setTxtCourseId(String newTxtCourseId) { + this.txtCourseId = newTxtCourseId; + } + + public String getTxtInstId() { + return this.txtInstId; + } + + public void setTxtInstId(String newTxtInstId) { + this.txtInstId = newTxtInstId; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String getDisabtxtType() { + return this.disabtxtType; + } + + public void setDisabtxtType(String newDisabtxtType) { + this.disabtxtType = newDisabtxtType; + } + + public String getDisabtxtStartDate() { + return this.disabtxtStartDate; + } + + public void setDisabtxtStartDate(String newDisabtxtStartDate) { + this.disabtxtStartDate = newDisabtxtStartDate; + } + + public String getDisabtxtEndDate() { + return this.disabtxtEndDate; + } + + public void setDisabtxtEndDate(String newDisabtxtEndDate) { + this.disabtxtEndDate = newDisabtxtEndDate; + } + + public String getDisabtxtStrength() { + return this.disabtxtStrength; + } + + public void setDisabtxtStrength(String newDisabtxtStrength) { + this.disabtxtStrength = newDisabtxtStrength; + } + + public String getDisabtxtFee() { + return this.disabtxtFee; + } + + public void setDisabtxtFee(String newDisabtxtFee) { + this.disabtxtFee = newDisabtxtFee; + } + + public String getDisabtxtStatus() { + return this.disabtxtStatus; + } + + public void setDisabtxtStatus(String newDisabtxtStatus) { + this.disabtxtStatus = newDisabtxtStatus; + } + + public String getDisabtxtInstituteName() { + return this.disabtxtInstituteName; + } + + public void setDisabtxtInstituteName(String newDisabtxtInstituteName) { + this.disabtxtInstituteName = newDisabtxtInstituteName; + } + + public String getDisabtxtCourseCode() { + return this.disabtxtCourseCode; + } + + public void setDisabtxtCourseCode(String newDisabtxtCourseCode) { + this.disabtxtCourseCode = newDisabtxtCourseCode; + } + + public String getDisabtxtRatingScheme() { + return this.disabtxtRatingScheme; + } + + public void setDisabtxtRatingScheme(String newDisabtxtRatingScheme) { + this.disabtxtRatingScheme = newDisabtxtRatingScheme; + } + + public String getDisabtxtInsCode() { + return this.disabtxtInsCode; + } + + public void setDisabtxtInsCode(String newDisabtxtInsCode) { + this.disabtxtInsCode = newDisabtxtInsCode; + } + + public String getDisabbutTxtStartDate() { + return this.disabbutTxtStartDate; + } + + public void setDisabbutTxtStartDate(String newDisabbutTxtStartDate) { + this.disabbutTxtStartDate = newDisabbutTxtStartDate; + } + + public String getDisabbutTxtEndDate() { + return this.disabbutTxtEndDate; + } + + public void setDisabbutTxtEndDate(String newDisabbutTxtEndDate) { + this.disabbutTxtEndDate = newDisabbutTxtEndDate; + } + + public String getDisabTxtInstituteName() { + return this.disabTxtInstituteName; + } + + public void setDisabTxtInstituteName(String newDisabTxtInstituteName) { + this.disabTxtInstituteName = newDisabTxtInstituteName; + } + + public String getDisabTxtCourseCode() { + return this.disabTxtCourseCode; + } + + public void setDisabTxtCourseCode(String newDisabTxtCourseCode) { + this.disabTxtCourseCode = newDisabTxtCourseCode; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getTxtVenue() { + return this.txtVenue; + } + + public void setTxtVenue(String newTxtVenue) { + this.txtVenue = newTxtVenue; + } + + public String getTxtDuration() { + return this.txtDuration; + } + + public void setTxtDuration(String newTxtDuration) { + this.txtDuration = newTxtDuration; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalHdrBean.java new file mode 100644 index 0000000..306c56a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCalHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCalHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String site; + + private String startDate; + + private String endDate; + + private String siteName; + + private String siteId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java new file mode 100644 index 0000000..94c8c4e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngCrsBudDtlBean extends BaseDetailBean implements Serializable { + private String txtFromDate; + + private String txtToDate; + + private String txtCourseName; + + private String disabtxtFood; + + private String disabtxtFees; + + private String disabtxtDailyAllowances; + + private String disabtxtMisc; + + private String disabtxtAccomodation; + + private String disabtxtTravel; + + private String disabbutTxtCourseName; + + private String txtTravel; + + private String txtAccomodation; + + private String txtDailyAllowances; + + private String txtFood; + + private String txtFees; + + private String txtMisc; + + private String txtTotal; + + private String txtCourseId; + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getDisabtxtFood() { + return this.disabtxtFood; + } + + public void setDisabtxtFood(String newDisabtxtFood) { + this.disabtxtFood = newDisabtxtFood; + } + + public String getDisabtxtFees() { + return this.disabtxtFees; + } + + public void setDisabtxtFees(String newDisabtxtFees) { + this.disabtxtFees = newDisabtxtFees; + } + + public String getDisabtxtDailyAllowances() { + return this.disabtxtDailyAllowances; + } + + public void setDisabtxtDailyAllowances(String newDisabtxtDailyAllowances) { + this.disabtxtDailyAllowances = newDisabtxtDailyAllowances; + } + + public String getDisabtxtMisc() { + return this.disabtxtMisc; + } + + public void setDisabtxtMisc(String newDisabtxtMisc) { + this.disabtxtMisc = newDisabtxtMisc; + } + + public String getDisabtxtAccomodation() { + return this.disabtxtAccomodation; + } + + public void setDisabtxtAccomodation(String newDisabtxtAccomodation) { + this.disabtxtAccomodation = newDisabtxtAccomodation; + } + + public String getDisabtxtTravel() { + return this.disabtxtTravel; + } + + public void setDisabtxtTravel(String newDisabtxtTravel) { + this.disabtxtTravel = newDisabtxtTravel; + } + + public String getDisabbutTxtCourseName() { + return this.disabbutTxtCourseName; + } + + public void setDisabbutTxtCourseName(String newDisabbutTxtCourseName) { + this.disabbutTxtCourseName = newDisabbutTxtCourseName; + } + + public String getTxtTravel() { + return this.txtTravel; + } + + public void setTxtTravel(String newTxtTravel) { + this.txtTravel = newTxtTravel; + } + + public String getTxtAccomodation() { + return this.txtAccomodation; + } + + public void setTxtAccomodation(String newTxtAccomodation) { + this.txtAccomodation = newTxtAccomodation; + } + + public String getTxtDailyAllowances() { + return this.txtDailyAllowances; + } + + public void setTxtDailyAllowances(String newTxtDailyAllowances) { + this.txtDailyAllowances = newTxtDailyAllowances; + } + + public String getTxtFood() { + return this.txtFood; + } + + public void setTxtFood(String newTxtFood) { + this.txtFood = newTxtFood; + } + + public String getTxtFees() { + return this.txtFees; + } + + public void setTxtFees(String newTxtFees) { + this.txtFees = newTxtFees; + } + + public String getTxtMisc() { + return this.txtMisc; + } + + public void setTxtMisc(String newTxtMisc) { + this.txtMisc = newTxtMisc; + } + + public String getTxtTotal() { + return this.txtTotal; + } + + public void setTxtTotal(String newTxtTotal) { + this.txtTotal = newTxtTotal; + } + + public String getTxtCourseId() { + return this.txtCourseId; + } + + public void setTxtCourseId(String newTxtCourseId) { + this.txtCourseId = newTxtCourseId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java new file mode 100644 index 0000000..69e65c5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCrsBudHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String calendarId; + + private String description; + + private String approvedBudget; + + private String spentTillDate; + + private String availableBudget; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getApprovedBudget() { + return this.approvedBudget; + } + + public void setApprovedBudget(String newApprovedBudget) { + this.approvedBudget = newApprovedBudget; + } + + public String getSpentTillDate() { + return this.spentTillDate; + } + + public void setSpentTillDate(String newSpentTillDate) { + this.spentTillDate = newSpentTillDate; + } + + public String getAvailableBudget() { + return this.availableBudget; + } + + public void setAvailableBudget(String newAvailableBudget) { + this.availableBudget = newAvailableBudget; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java new file mode 100644 index 0000000..47b4dcd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngCrsMstDtlBean extends BaseDetailBean implements Serializable { + private String txtCourse; + + private String txtName; + + private String txtMaxAttend; + + private String txtMinAttend; + + private String disabtxtCourse; + + private String disabtxtName; + + private String disabtxtMaxAttend; + + private String disabtxtMinAttend; + + public String getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getDisabtxtCourse() { + return this.disabtxtCourse; + } + + public void setDisabtxtCourse(String newDisabtxtCourse) { + this.disabtxtCourse = newDisabtxtCourse; + } + + public String getDisabtxtName() { + return this.disabtxtName; + } + + public void setDisabtxtName(String newDisabtxtName) { + this.disabtxtName = newDisabtxtName; + } + + public String getDisabtxtMaxAttend() { + return this.disabtxtMaxAttend; + } + + public void setDisabtxtMaxAttend(String newDisabtxtMaxAttend) { + this.disabtxtMaxAttend = newDisabtxtMaxAttend; + } + + public String getTxtMaxAttend() { + return this.txtMaxAttend; + } + + public void setTxtMaxAttend(String newTxtMaxAttend) { + this.txtMaxAttend = newTxtMaxAttend; + } + + public String getTxtMinAttend() { + return this.txtMinAttend; + } + + public void setTxtMinAttend(String newTxtMinAttend) { + this.txtMinAttend = newTxtMinAttend; + } + + public String getDisabtxtMinAttend() { + return this.disabtxtMinAttend; + } + + public void setDisabtxtMinAttend(String newDisabtxtMinAttend) { + this.disabtxtMinAttend = newDisabtxtMinAttend; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java new file mode 100644 index 0000000..866c9c6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCrsMstHdrBean extends BaseHeaderBean implements Serializable { + private String trainingBranch; + + private String branchName; + + private String trgMstBranchId; + + public String getTrainingBranch() { + return this.trainingBranch; + } + + public void setTrainingBranch(String newTrainingBranch) { + this.trainingBranch = newTrainingBranch; + } + + public String getBranchName() { + return this.branchName; + } + + public void setBranchName(String newBranchName) { + this.branchName = newBranchName; + } + + public String getTrgMstBranchId() { + return this.trgMstBranchId; + } + + public void setTrgMstBranchId(String newTrgMstBranchId) { + this.trgMstBranchId = newTrgMstBranchId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java new file mode 100644 index 0000000..03791a3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpAttDtlBean extends BaseDetailBean implements Serializable { + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtTrainingDate; + + private String txtAttendance; + + private String txtReasonForAbsence; + + private String disabtxtAttendance; + + private String disabtxtEmployeeName; + + private String disabtxtEmployeeNo; + + private String disabtxtReasonForAbsence; + + private String disabtxtTrainingDate; + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtTrainingDate() { + return this.txtTrainingDate; + } + + public void setTxtTrainingDate(String newTxtTrainingDate) { + this.txtTrainingDate = newTxtTrainingDate; + } + + public String getTxtAttendance() { + return this.txtAttendance; + } + + public void setTxtAttendance(String newTxtAttendance) { + this.txtAttendance = newTxtAttendance; + } + + public String getTxtReasonForAbsence() { + return this.txtReasonForAbsence; + } + + public void setTxtReasonForAbsence(String newTxtReasonForAbsence) { + this.txtReasonForAbsence = newTxtReasonForAbsence; + } + + public String getDisabtxtAttendance() { + return this.disabtxtAttendance; + } + + public void setDisabtxtAttendance(String newDisabtxtAttendance) { + this.disabtxtAttendance = newDisabtxtAttendance; + } + + public String getDisabtxtEmployeeName() { + return this.disabtxtEmployeeName; + } + + public void setDisabtxtEmployeeName(String newDisabtxtEmployeeName) { + this.disabtxtEmployeeName = newDisabtxtEmployeeName; + } + + public String getDisabtxtEmployeeNo() { + return this.disabtxtEmployeeNo; + } + + public void setDisabtxtEmployeeNo(String newDisabtxtEmployeeNo) { + this.disabtxtEmployeeNo = newDisabtxtEmployeeNo; + } + + public String getDisabtxtReasonForAbsence() { + return this.disabtxtReasonForAbsence; + } + + public void setDisabtxtReasonForAbsence(String newDisabtxtReasonForAbsence) { + this.disabtxtReasonForAbsence = newDisabtxtReasonForAbsence; + } + + public String getDisabtxtTrainingDate() { + return this.disabtxtTrainingDate; + } + + public void setDisabtxtTrainingDate(String newDisabtxtTrainingDate) { + this.disabtxtTrainingDate = newDisabtxtTrainingDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java new file mode 100644 index 0000000..45ad111 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpAttHdrBean extends BaseHeaderBean implements Serializable { + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java new file mode 100644 index 0000000..5fda29b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java @@ -0,0 +1,286 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpFeedBackDtlBean extends BaseDetailBean implements Serializable { + private String txtFacultyName; + + private String txtEmpNo; + + private String txtEmpName; + + private String txtDeliveryClarity; + + private String txtPresentation; + + private String txtInteraction; + + private String txtCourseMaterial; + + private String txtCourseObjective; + + private String txtFacId; + + private String txtTrnHdrId; + + private String disabtxtFacultyName; + + private String disabtxtEmpNo; + + private String disabtxtEmpName; + + private String disabtxtDeliveryClarity; + + private String disabtxtPresentation; + + private String disabtxtInteraction; + + private String disabtxtCourseMaterial; + + private String disabtxtCourseObjective; + + private String disabtxtFacId; + + private String disabtxtTrnHdrId; + + private String txtCourseDuration; + + private String txtTrainingAids; + + private String txtTrainingArrangements; + + private String txtOverallRating; + + private String txtTopicsRelevant; + + private String txtTopicsIrrelevant; + + private String txtSuggestions; + + private String txtSkillArea; + + public String getTxtFacultyName() { + return this.txtFacultyName; + } + + public void setTxtFacultyName(String newTxtFacultyName) { + this.txtFacultyName = newTxtFacultyName; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtDeliveryClarity() { + return this.txtDeliveryClarity; + } + + public void setTxtDeliveryClarity(String newTxtDeliveryClarity) { + this.txtDeliveryClarity = newTxtDeliveryClarity; + } + + public String getTxtPresentation() { + return this.txtPresentation; + } + + public void setTxtPresentation(String newTxtPresentation) { + this.txtPresentation = newTxtPresentation; + } + + public String getTxtInteraction() { + return this.txtInteraction; + } + + public void setTxtInteraction(String newTxtInteraction) { + this.txtInteraction = newTxtInteraction; + } + + public String getTxtCourseMaterial() { + return this.txtCourseMaterial; + } + + public void setTxtCourseMaterial(String newTxtCourseMaterial) { + this.txtCourseMaterial = newTxtCourseMaterial; + } + + public String getTxtCourseObjective() { + return this.txtCourseObjective; + } + + public void setTxtCourseObjective(String newTxtCourseObjective) { + this.txtCourseObjective = newTxtCourseObjective; + } + + public String getTxtFacId() { + return this.txtFacId; + } + + public void setTxtFacId(String newTxtFacId) { + this.txtFacId = newTxtFacId; + } + + public String getTxtTrnHdrId() { + return this.txtTrnHdrId; + } + + public void setTxtTrnHdrId(String newTxtTrnHdrId) { + this.txtTrnHdrId = newTxtTrnHdrId; + } + + public String getDisabtxtFacultyName() { + return this.disabtxtFacultyName; + } + + public void setDisabtxtFacultyName(String newDisabtxtFacultyName) { + this.disabtxtFacultyName = newDisabtxtFacultyName; + } + + public String getDisabtxtEmpNo() { + return this.disabtxtEmpNo; + } + + public void setDisabtxtEmpNo(String newDisabtxtEmpNo) { + this.disabtxtEmpNo = newDisabtxtEmpNo; + } + + public String getDisabtxtEmpName() { + return this.disabtxtEmpName; + } + + public void setDisabtxtEmpName(String newDisabtxtEmpName) { + this.disabtxtEmpName = newDisabtxtEmpName; + } + + public String getDisabtxtDeliveryClarity() { + return this.disabtxtDeliveryClarity; + } + + public void setDisabtxtDeliveryClarity(String newDisabtxtDeliveryClarity) { + this.disabtxtDeliveryClarity = newDisabtxtDeliveryClarity; + } + + public String getDisabtxtPresentation() { + return this.disabtxtPresentation; + } + + public void setDisabtxtPresentation(String newDisabtxtPresentation) { + this.disabtxtPresentation = newDisabtxtPresentation; + } + + public String getDisabtxtInteraction() { + return this.disabtxtInteraction; + } + + public void setDisabtxtInteraction(String newDisabtxtInteraction) { + this.disabtxtInteraction = newDisabtxtInteraction; + } + + public String getDisabtxtCourseMaterial() { + return this.disabtxtCourseMaterial; + } + + public void setDisabtxtCourseMaterial(String newDisabtxtCourseMaterial) { + this.disabtxtCourseMaterial = newDisabtxtCourseMaterial; + } + + public String getDisabtxtCourseObjective() { + return this.disabtxtCourseObjective; + } + + public void setDisabtxtCourseObjective(String newDisabtxtCourseObjective) { + this.disabtxtCourseObjective = newDisabtxtCourseObjective; + } + + public String getDisabtxtFacId() { + return this.disabtxtFacId; + } + + public void setDisabtxtFacId(String newDisabtxtFacId) { + this.disabtxtFacId = newDisabtxtFacId; + } + + public String getDisabtxtTrnHdrId() { + return this.disabtxtTrnHdrId; + } + + public void setDisabtxtTrnHdrId(String newDisabtxtTrnHdrId) { + this.disabtxtTrnHdrId = newDisabtxtTrnHdrId; + } + + public String getTxtCourseDuration() { + return this.txtCourseDuration; + } + + public void setTxtCourseDuration(String newTxtCourseDuration) { + this.txtCourseDuration = newTxtCourseDuration; + } + + public String getTxtTrainingAids() { + return this.txtTrainingAids; + } + + public void setTxtTrainingAids(String newTxtTrainingAids) { + this.txtTrainingAids = newTxtTrainingAids; + } + + public String getTxtTrainingArrangements() { + return this.txtTrainingArrangements; + } + + public void setTxtTrainingArrangements(String newTxtTrainingArrangements) { + this.txtTrainingArrangements = newTxtTrainingArrangements; + } + + public String getTxtOverallRating() { + return this.txtOverallRating; + } + + public void setTxtOverallRating(String newTxtOverallRating) { + this.txtOverallRating = newTxtOverallRating; + } + + public String getTxtTopicsRelevant() { + return this.txtTopicsRelevant; + } + + public void setTxtTopicsRelevant(String newTxtTopicsRelevant) { + this.txtTopicsRelevant = newTxtTopicsRelevant; + } + + public String getTxtTopicsIrrelevant() { + return this.txtTopicsIrrelevant; + } + + public void setTxtTopicsIrrelevant(String newTxtTopicsIrrelevant) { + this.txtTopicsIrrelevant = newTxtTopicsIrrelevant; + } + + public String getTxtSuggestions() { + return this.txtSuggestions; + } + + public void setTxtSuggestions(String newTxtSuggestions) { + this.txtSuggestions = newTxtSuggestions; + } + + public String getTxtSkillArea() { + return this.txtSkillArea; + } + + public void setTxtSkillArea(String newTxtSkillArea) { + this.txtSkillArea = newTxtSkillArea; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java new file mode 100644 index 0000000..516c770 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java @@ -0,0 +1,116 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpFeedBackHdrBean extends BaseHeaderBean implements Serializable { + private String endDate; + + private String startDate; + + private String maxRating; + + private String minRating; + + private String ratingScheme; + + private String institutionName; + + private String courseName; + + private String instId; + + private String courseId; + + private String statusFlag; + + private String venue; + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getMaxRating() { + return this.maxRating; + } + + public void setMaxRating(String newMaxRating) { + this.maxRating = newMaxRating; + } + + public String getMinRating() { + return this.minRating; + } + + public void setMinRating(String newMinRating) { + this.minRating = newMinRating; + } + + public String getRatingScheme() { + return this.ratingScheme; + } + + public void setRatingScheme(String newRatingScheme) { + this.ratingScheme = newRatingScheme; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstId() { + return this.instId; + } + + public void setInstId(String newInstId) { + this.instId = newInstId; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getStatusFlag() { + return this.statusFlag; + } + + public void setStatusFlag(String newStatusFlag) { + this.statusFlag = newStatusFlag; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java new file mode 100644 index 0000000..2976ee2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java @@ -0,0 +1,146 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpHistDtlBean extends BaseDetailBean implements Serializable { + private String txtEmployeeNo; + + private String txtName; + + private String txtParticipation; + + private String txtReasonForNonParticipation; + + private String txtRating; + + private String txtTrainingAttendanceDetail; + + private String empId; + + private String calId; + + private String disabtxtEmployeeNo; + + private String disabtxtName; + + private String disabtxtParticipation; + + private String disabtxtReasonForNonParticipation; + + private String disabtxtRating; + + private String disabtxtTrainingAttendanceDetail; + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getTxtParticipation() { + return this.txtParticipation; + } + + public void setTxtParticipation(String newTxtParticipation) { + this.txtParticipation = newTxtParticipation; + } + + public String getTxtReasonForNonParticipation() { + return this.txtReasonForNonParticipation; + } + + public void setTxtReasonForNonParticipation(String newTxtReasonForNonParticipation) { + this.txtReasonForNonParticipation = newTxtReasonForNonParticipation; + } + + public String getTxtRating() { + return this.txtRating; + } + + public void setTxtRating(String newTxtRating) { + this.txtRating = newTxtRating; + } + + public String getTxtTrainingAttendanceDetail() { + return this.txtTrainingAttendanceDetail; + } + + public void setTxtTrainingAttendanceDetail(String newTxtTrainingAttendanceDetail) { + this.txtTrainingAttendanceDetail = newTxtTrainingAttendanceDetail; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getDisabtxtEmployeeNo() { + return this.disabtxtEmployeeNo; + } + + public void setDisabtxtEmployeeNo(String newDisabtxtEmployeeNo) { + this.disabtxtEmployeeNo = newDisabtxtEmployeeNo; + } + + public String getDisabtxtName() { + return this.disabtxtName; + } + + public void setDisabtxtName(String newDisabtxtName) { + this.disabtxtName = newDisabtxtName; + } + + public String getDisabtxtParticipation() { + return this.disabtxtParticipation; + } + + public void setDisabtxtParticipation(String newDisabtxtParticipation) { + this.disabtxtParticipation = newDisabtxtParticipation; + } + + public String getDisabtxtReasonForNonParticipation() { + return this.disabtxtReasonForNonParticipation; + } + + public void setDisabtxtReasonForNonParticipation(String newDisabtxtReasonForNonParticipation) { + this.disabtxtReasonForNonParticipation = newDisabtxtReasonForNonParticipation; + } + + public String getDisabtxtRating() { + return this.disabtxtRating; + } + + public void setDisabtxtRating(String newDisabtxtRating) { + this.disabtxtRating = newDisabtxtRating; + } + + public String getDisabtxtTrainingAttendanceDetail() { + return this.disabtxtTrainingAttendanceDetail; + } + + public void setDisabtxtTrainingAttendanceDetail(String newDisabtxtTrainingAttendanceDetail) { + this.disabtxtTrainingAttendanceDetail = newDisabtxtTrainingAttendanceDetail; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java new file mode 100644 index 0000000..592cbe8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java @@ -0,0 +1,96 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpHistHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String course; + + private String institutionName; + + private String fromDate; + + private String toDate; + + private String empNo; + + private String calId; + + private String empNoId; + + private String calDtlId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCourse() { + return this.course; + } + + public void setCourse(String newCourse) { + this.course = newCourse; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getCalDtlId() { + return this.calDtlId; + } + + public void setCalDtlId(String newCalDtlId) { + this.calDtlId = newCalDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java new file mode 100644 index 0000000..a0d46a0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpReqDtlBean extends BaseDetailBean implements Serializable { + private String date; + + private String participation; + + private String disabparticipation; + + private String disabdate; + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getParticipation() { + return this.participation; + } + + public void setParticipation(String newParticipation) { + this.participation = newParticipation; + } + + public String getDisabparticipation() { + return this.disabparticipation; + } + + public void setDisabparticipation(String newDisabparticipation) { + this.disabparticipation = newDisabparticipation; + } + + public String getDisabdate() { + return this.disabdate; + } + + public void setDisabdate(String newDisabdate) { + this.disabdate = newDisabdate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java new file mode 100644 index 0000000..2b6df87 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java @@ -0,0 +1,256 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpReqHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String middleName; + + private String lastName; + + private String dateSubmitted; + + private String trainingCalendar; + + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String nature; + + private String purpose; + + private String approvalStatus; + + private String rejectionRemarks; + + private String fullPart; + + private String recommender; + + private String courseId; + + private String calId; + + private String empId; + + private String recommenderId; + + private String designation; + + private String scaleOfPay; + + private String grade; + + private String desig; + + private String location; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDateSubmitted() { + return this.dateSubmitted; + } + + public void setDateSubmitted(String newDateSubmitted) { + this.dateSubmitted = newDateSubmitted; + } + + public String getTrainingCalendar() { + return this.trainingCalendar; + } + + public void setTrainingCalendar(String newTrainingCalendar) { + this.trainingCalendar = newTrainingCalendar; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getNature() { + return this.nature; + } + + public void setNature(String newNature) { + this.nature = newNature; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getApprovalStatus() { + return this.approvalStatus; + } + + public void setApprovalStatus(String newApprovalStatus) { + this.approvalStatus = newApprovalStatus; + } + + public String getRejectionRemarks() { + return this.rejectionRemarks; + } + + public void setRejectionRemarks(String newRejectionRemarks) { + this.rejectionRemarks = newRejectionRemarks; + } + + public String getFullPart() { + return this.fullPart; + } + + public void setFullPart(String newFullPart) { + this.fullPart = newFullPart; + } + + public String getRecommender() { + return this.recommender; + } + + public void setRecommender(String newRecommender) { + this.recommender = newRecommender; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getRecommenderId() { + return this.recommenderId; + } + + public void setRecommenderId(String newRecommenderId) { + this.recommenderId = newRecommenderId; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesig() { + return this.desig; + } + + public void setDesig(String newDesig) { + this.desig = newDesig; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacBean.java new file mode 100644 index 0000000..b6e1b4e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacBean.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngFacBean extends BaseHeaderBean implements Serializable { + private String facultyType; + + private String employeeNo; + + private String baseInstitution; + + private String firstName; + + private String middleName; + + private String lastName; + + private String experience; + + private String institutionName; + + private String trgFacMstEmpId; + + private String trgFacMstInstCode; + + public String getFacultyType() { + return this.facultyType; + } + + public void setFacultyType(String newFacultyType) { + this.facultyType = newFacultyType; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getBaseInstitution() { + return this.baseInstitution; + } + + public void setBaseInstitution(String newBaseInstitution) { + this.baseInstitution = newBaseInstitution; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getExperience() { + return this.experience; + } + + public void setExperience(String newExperience) { + this.experience = newExperience; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getTrgFacMstEmpId() { + return this.trgFacMstEmpId; + } + + public void setTrgFacMstEmpId(String newTrgFacMstEmpId) { + this.trgFacMstEmpId = newTrgFacMstEmpId; + } + + public String getTrgFacMstInstCode() { + return this.trgFacMstInstCode; + } + + public void setTrgFacMstInstCode(String newTrgFacMstInstCode) { + this.trgFacMstInstCode = newTrgFacMstInstCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java new file mode 100644 index 0000000..8848ae2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngFacFdbkDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpNo; + + private String txtEmpName; + + private String txtRating; + + private String txtRemarks; + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtRating() { + return this.txtRating; + } + + public void setTxtRating(String newTxtRating) { + this.txtRating = newTxtRating; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java new file mode 100644 index 0000000..0b4d2f3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java @@ -0,0 +1,186 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngFacTrngDtlBean extends BaseDetailBean implements Serializable { + private String txtFromDate; + + private String txtToDate; + + private String txtStartTime; + + private String txtEndTime; + + private String txtAverageRating; + + private String txtNameOfFaculty; + + private String facultyId; + + private String disabtxtAverageRating; + + private String disabtxtEndTime; + + private String disabtxtFromDate; + + private String disabtxtNameOfFaculty; + + private String disabtxtStartTime; + + private String disabtxtToDate; + + private String disabbutTxtFromDate; + + private String disabbutTxtToDate; + + private String disabbutFaculty; + + private String txtSkillArea; + + private String disabtxtSkillArea; + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtStartTime() { + return this.txtStartTime; + } + + public void setTxtStartTime(String newTxtStartTime) { + this.txtStartTime = newTxtStartTime; + } + + public String getTxtEndTime() { + return this.txtEndTime; + } + + public void setTxtEndTime(String newTxtEndTime) { + this.txtEndTime = newTxtEndTime; + } + + public String getTxtAverageRating() { + return this.txtAverageRating; + } + + public void setTxtAverageRating(String newTxtAverageRating) { + this.txtAverageRating = newTxtAverageRating; + } + + public String getTxtNameOfFaculty() { + return this.txtNameOfFaculty; + } + + public void setTxtNameOfFaculty(String newTxtNameOfFaculty) { + this.txtNameOfFaculty = newTxtNameOfFaculty; + } + + public String getFacultyId() { + return this.facultyId; + } + + public void setFacultyId(String newFacultyId) { + this.facultyId = newFacultyId; + } + + public String getDisabtxtAverageRating() { + return this.disabtxtAverageRating; + } + + public void setDisabtxtAverageRating(String newDisabtxtAverageRating) { + this.disabtxtAverageRating = newDisabtxtAverageRating; + } + + public String getDisabtxtEndTime() { + return this.disabtxtEndTime; + } + + public void setDisabtxtEndTime(String newDisabtxtEndTime) { + this.disabtxtEndTime = newDisabtxtEndTime; + } + + public String getDisabtxtFromDate() { + return this.disabtxtFromDate; + } + + public void setDisabtxtFromDate(String newDisabtxtFromDate) { + this.disabtxtFromDate = newDisabtxtFromDate; + } + + public String getDisabtxtNameOfFaculty() { + return this.disabtxtNameOfFaculty; + } + + public void setDisabtxtNameOfFaculty(String newDisabtxtNameOfFaculty) { + this.disabtxtNameOfFaculty = newDisabtxtNameOfFaculty; + } + + public String getDisabtxtStartTime() { + return this.disabtxtStartTime; + } + + public void setDisabtxtStartTime(String newDisabtxtStartTime) { + this.disabtxtStartTime = newDisabtxtStartTime; + } + + public String getDisabtxtToDate() { + return this.disabtxtToDate; + } + + public void setDisabtxtToDate(String newDisabtxtToDate) { + this.disabtxtToDate = newDisabtxtToDate; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getDisabbutTxtToDate() { + return this.disabbutTxtToDate; + } + + public void setDisabbutTxtToDate(String newDisabbutTxtToDate) { + this.disabbutTxtToDate = newDisabbutTxtToDate; + } + + public String getDisabbutFaculty() { + return this.disabbutFaculty; + } + + public void setDisabbutFaculty(String newDisabbutFaculty) { + this.disabbutFaculty = newDisabbutFaculty; + } + + public String getTxtSkillArea() { + return this.txtSkillArea; + } + + public void setTxtSkillArea(String newTxtSkillArea) { + this.txtSkillArea = newTxtSkillArea; + } + + public String getDisabtxtSkillArea() { + return this.disabtxtSkillArea; + } + + public void setDisabtxtSkillArea(String newDisabtxtSkillArea) { + this.disabtxtSkillArea = newDisabtxtSkillArea; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java new file mode 100644 index 0000000..08e0df8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java @@ -0,0 +1,136 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngFacTrngHdrBean extends BaseHeaderBean implements Serializable { + private String startDate; + + private String endDate; + + private String institutionName; + + private String courseName; + + private String calendarName; + + private String site; + + private String siteName; + + private String courseStatus; + + private String siteId; + + private String calId; + + private String courseId; + + private String instId; + + private String venue; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getCourseStatus() { + return this.courseStatus; + } + + public void setCourseStatus(String newCourseStatus) { + this.courseStatus = newCourseStatus; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getInstId() { + return this.instId; + } + + public void setInstId(String newInstId) { + this.instId = newInstId; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java new file mode 100644 index 0000000..b010c00 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngInsCrsDtlbean extends BaseDetailBean implements Serializable { + private String txtCourse; + + private String txtCourseName; + + private String courseId; + + private String disabtxtCourse; + + private String disabtxtCourseName; + + public String getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getDisabtxtCourse() { + return this.disabtxtCourse; + } + + public void setDisabtxtCourse(String newDisabtxtCourse) { + this.disabtxtCourse = newDisabtxtCourse; + } + + public String getDisabtxtCourseName() { + return this.disabtxtCourseName; + } + + public void setDisabtxtCourseName(String newDisabtxtCourseName) { + this.disabtxtCourseName = newDisabtxtCourseName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java b/hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java new file mode 100644 index 0000000..e593150 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java @@ -0,0 +1,156 @@ +package wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngInsCrsHdrBean extends BaseHeaderBean implements Serializable { + private String instituteCode; + + private String instituteName; + + private String type; + + private String inCharge; + + private String address; + + private String pin; + + private String country; + + private String city; + + private String state; + + private String phone; + + private String fax; + + private String email; + + private String trgInstId; + + private String trgInstCountryId; + + private String trgInstCityId; + + public String getInstituteCode() { + return this.instituteCode; + } + + public void setInstituteCode(String newInstituteCode) { + this.instituteCode = newInstituteCode; + } + + public String getInstituteName() { + return this.instituteName; + } + + public void setInstituteName(String newInstituteName) { + this.instituteName = newInstituteName; + } + + public String getType() { + return this.type; + } + + public void setType(String newType) { + this.type = newType; + } + + public String getInCharge() { + return this.inCharge; + } + + public void setInCharge(String newInCharge) { + this.inCharge = newInCharge; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPin() { + return this.pin; + } + + public void setPin(String newPin) { + this.pin = newPin; + } + + public String getCountry() { + return this.country; + } + + public void setCountry(String newCountry) { + this.country = newCountry; + } + + public String getCity() { + return this.city; + } + + public void setCity(String newCity) { + this.city = newCity; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getTrgInstId() { + return this.trgInstId; + } + + public void setTrgInstId(String newTrgInstId) { + this.trgInstId = newTrgInstId; + } + + public String getTrgInstCountryId() { + return this.trgInstCountryId; + } + + public void setTrgInstCountryId(String newTrgInstCountryId) { + this.trgInstCountryId = newTrgInstCountryId; + } + + public String getTrgInstCityId() { + return this.trgInstCityId; + } + + public void setTrgInstCityId(String newTrgInstCityId) { + this.trgInstCityId = newTrgInstCityId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java new file mode 100644 index 0000000..7d91d0e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java @@ -0,0 +1,191 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; + +public class HrmATDDptnApplBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpDeputAppHdrMetaInfo((HrmATDDptnApplQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpDeputAppHeaderInfo((HrmATDDptnApplQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmDeputationApplicationHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean = (HrmDeputationApplicationHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmDeputationApplicationHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("A")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("P")) { + arylstEnableList.add("butApprove"); + arylstEnableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getDeputType())) + if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("W")) { + arylstDisableList.add("postCode"); + arylstDisableList.add("postName"); + arylstDisableList.add("orgName"); + arylstEnableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("F")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("O")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getAdvtNo())) + if (oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstDisableList.add("advtDate"); + arylstDisableList.add("butAdvtDate"); + } else if (!oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstEnableList.add("advtDate"); + arylstEnableList.add("butAdvtDate"); + } + } else if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getDeputStatus())) { + if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("P") || oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("A") || oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("applnNo"); + arylstDisableList.add("applnDate"); + arylstDisableList.add("deputType"); + arylstDisableList.add("butEmployeeNo"); + arylstDisableList.add("employeeNo"); + arylstDisableList.add("empName"); + arylstDisableList.add("deputStatus"); + arylstDisableList.add("butApplnNo"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("advtNo"); + arylstDisableList.add("advtDate"); + arylstDisableList.add("orgName"); + arylstDisableList.add("postCode"); + arylstDisableList.add("postName"); + arylstDisableList.add("reason"); + arylstDisableList.add("butPostName"); + arylstDisableList.add("butAdvtDate"); + arylstDisableList.add("butAdvtNo"); + } else { + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getDeputType())) + if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("W")) { + arylstDisableList.add("postCode"); + arylstDisableList.add("postName"); + arylstDisableList.add("orgName"); + arylstEnableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("F")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("O")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getAdvtNo())) + if (oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstDisableList.add("advtDate"); + arylstDisableList.add("butAdvtDate"); + } else if (!oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstEnableList.add("advtDate"); + arylstEnableList.add("butAdvtDate"); + } + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java new file mode 100644 index 0000000..cddd53d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java @@ -0,0 +1,138 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; + +public class HrmATDDptnChrgRptBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmDeputChargeRepHdrMetaInfo((HrmATDDptnChrgRptQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmDeputChargeRepHeaderInfo((HrmATDDptnChrgRptQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmATDDeputChrgRptHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmATDDeputChrgRptHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("A")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("P")) { + arylstEnableList.add("butApprove"); + arylstEnableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getChargeType())) + arylstDisableList.add("butChargeCode"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + if (EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getChargeType())) { + arylstEnableList.add("butChargeCode"); + } else { + arylstDisableList.add("butChargeCode"); + } + } else if (EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getChargeStatus())) { + System.out.println(oHrmATDDeputChrgRptHdrBean.getChargeStatus()); + if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("P") || oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("A") || oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("dptOrderNo"); + arylstDisableList.add("chargeCode"); + arylstDisableList.add("chargeType"); + arylstDisableList.add("butChargeCode"); + arylstDisableList.add("noonFlag"); + arylstDisableList.add("butHandOverDate"); + arylstDisableList.add("butDptOrderNo"); + arylstDisableList.add("remarks"); + } else { + arylstDisableList.add("butChargeCode"); + } + } + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmATDDeputChrgRptHdrBean); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java new file mode 100644 index 0000000..c90510c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java @@ -0,0 +1,104 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; + +public class HrmATDDptnOrderForSingleEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmDeputOrderSngEmpHdrMetaInfo((HrmATDDptnOrderSingleEmpQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmDeputOrderSngEmpHeaderInfo((HrmATDDptnOrderSingleEmpQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmATDDeputOrderSngEmpHdrBean.equals(null)); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java new file mode 100644 index 0000000..e3dd9ff --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java @@ -0,0 +1,172 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransApplQVO; + +public class HrmATDTransApplBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpTransAppHeaderMetaInfo((HrmATDTransApplQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpTransAppHeader((HrmATDTransApplQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmTransAppl((HrmTransferApplicationHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnabledList = new ArrayList(); + ArrayList arylstDisabledList = new ArrayList(); + HrmTransferApplicationHdrBean oHrmTransferApplicationHdrBean = (HrmTransferApplicationHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisabledList.add("butToDesignation"); + arylstDisabledList.add("butToWorkGroup"); + arylstEnabledList.add("butEmployeeNo"); + } + if (!oHrmTransferApplicationHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnabledList.add("ofcNoteNo"); + arylstEnabledList.add("butOfcNoteNo"); + arylstEnabledList.add("ofcNoteDate"); + arylstEnabledList.add("butOfcNoteDate"); + arylstEnabledList.add("butEmployeeNo"); + arylstEnabledList.add("butToDesignation"); + arylstEnabledList.add("butToWorkGroup"); + if (EnrgiseUtil.checkString(oHrmTransferApplicationHdrBean.getApplnType())) + if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("S")) { + oHrmTransferApplicationHdrBean.setSite1(""); + oHrmTransferApplicationHdrBean.setSite2(""); + oHrmTransferApplicationHdrBean.setSite3(""); + oHrmTransferApplicationHdrBean.setSiteCode1(""); + oHrmTransferApplicationHdrBean.setSiteCode2(""); + oHrmTransferApplicationHdrBean.setSiteCode3(""); + arylstDisabledList.add("siteCode1"); + arylstDisabledList.add("siteCode2"); + arylstDisabledList.add("siteCode3"); + arylstDisabledList.add("site1"); + arylstDisabledList.add("site2"); + arylstDisabledList.add("site3"); + arylstDisabledList.add("butSite1"); + arylstDisabledList.add("butSite2"); + arylstDisabledList.add("butSite3"); + } else if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("L")) { + arylstEnabledList.add("siteCode1"); + arylstEnabledList.add("siteCode2"); + arylstEnabledList.add("siteCode3"); + arylstEnabledList.add("site1"); + arylstEnabledList.add("site2"); + arylstEnabledList.add("site3"); + arylstEnabledList.add("butSite1"); + arylstEnabledList.add("butSite2"); + arylstEnabledList.add("butSite3"); + } + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnabledList.add("ofcNoteNo"); + arylstEnabledList.add("butOfcNoteNo"); + arylstEnabledList.add("ofcNoteDate"); + arylstEnabledList.add("butOfcNoteDate"); + arylstEnabledList.add("butEmployeeNo"); + arylstEnabledList.add("butToDesignation"); + arylstEnabledList.add("butToWorkGroup"); + if (EnrgiseUtil.checkString(oHrmTransferApplicationHdrBean.getApplnType())) + if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("S")) { + oHrmTransferApplicationHdrBean.setSite1(""); + oHrmTransferApplicationHdrBean.setSite2(""); + oHrmTransferApplicationHdrBean.setSite3(""); + oHrmTransferApplicationHdrBean.setSiteCode1(""); + oHrmTransferApplicationHdrBean.setSiteCode2(""); + oHrmTransferApplicationHdrBean.setSiteCode3(""); + arylstDisabledList.add("siteCode1"); + arylstDisabledList.add("siteCode2"); + arylstDisabledList.add("siteCode3"); + arylstDisabledList.add("site1"); + arylstDisabledList.add("site2"); + arylstDisabledList.add("site3"); + arylstDisabledList.add("butSite1"); + arylstDisabledList.add("butSite2"); + arylstDisabledList.add("butSite3"); + } else if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("L")) { + arylstEnabledList.add("siteCode1"); + arylstEnabledList.add("siteCode2"); + arylstEnabledList.add("siteCode3"); + arylstEnabledList.add("site1"); + arylstEnabledList.add("site2"); + arylstEnabledList.add("site3"); + arylstEnabledList.add("butSite1"); + arylstEnabledList.add("butSite2"); + arylstEnabledList.add("butSite3"); + } + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmTransferApplicationHdrBean); + oHashMap.put("D", arylstDisabledList); + oHashMap.put("E", arylstEnabledList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java new file mode 100644 index 0000000..64f7b90 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java @@ -0,0 +1,143 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; + +public class HrmATDTransChrgRptBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmChargeRepHeaderMetaInfo((HrmATDTransChrgRptQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmChargeRepHeader((HrmATDTransChrgRptQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmChargeReportHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butTrnOrderNo"); + } else { + arylstDisableList.add("butTrnOrderNo"); + } + arylstDisableList.add("butEmployee"); + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getTrnOrderNoId())) { + arylstEnableList.add("butExecute"); + } else { + arylstDisableList.add("butExecute"); + } + } + if (!oHrmChargeReportHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butTrnOrderNo"); + } else { + arylstDisableList.add("butTrnOrderNo"); + } + arylstEnableList.add("butEmployee"); + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) + arylstDisableList.add("butChargeCode"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butTrnOrderNo"); + } else { + arylstDisableList.add("butTrnOrderNo"); + } + arylstDisableList.add("butEmployee"); + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butChargeCode"); + } else { + arylstDisableList.add("butChargeCode"); + } + } else if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeStatus())) { + if (oHrmChargeReportHdrBean.getChargeStatus().equalsIgnoreCase("P") || oHrmChargeReportHdrBean.getChargeStatus().equalsIgnoreCase("A") || oHrmChargeReportHdrBean.getChargeStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("trnOrderNo"); + arylstDisableList.add("butTrnOrderNo"); + arylstDisableList.add("chargeCode"); + arylstDisableList.add("butChargeCode"); + arylstDisableList.add("chargeType"); + arylstDisableList.add("butHandOverDate"); + arylstDisableList.add("noonFlag"); + arylstDisableList.add("remarks"); + arylstDisableList.add("butEmployee"); + } else { + arylstDisableList.add("butChargeCode"); + } + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmChargeReportHdrBean); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java new file mode 100644 index 0000000..a30ccf6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java @@ -0,0 +1,152 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; + +public class HrmATDTransCnclApplBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpTransCnclHeaderMetaInfo((HrmATDTransCnclApplQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpTransCnclHeader((HrmATDTransCnclApplQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmTransCnclAppl((HrmEmpTransCnclApplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstEnableList.add("butEmpNo"); + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + if (!oHrmEmpTransCnclApplHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butEmpNo"); + arylstEnableList.add("ofcNoteNo"); + arylstDisableList.add("butOfcNoteNo"); + arylstDisableList.add("ofcNoteDate"); + arylstEnableList.add("butOfcNoteDate"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDeferredStatus())) { + System.out.println(oHrmEmpTransCnclApplHdrBean.getDeferredStatus()); + if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("P") || oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("A") || oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("empNo"); + arylstDisableList.add("empName"); + arylstDisableList.add("butEmpNo"); + arylstDisableList.add("butApplnNo"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("applnNo"); + arylstDisableList.add("applnDate"); + arylstDisableList.add("generatedBy"); + arylstDisableList.add("ofcNoteNo"); + arylstDisableList.add("butOfcNoteNo"); + arylstDisableList.add("ofcNoteDate"); + arylstDisableList.add("butOfcNoteDate"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("cancelDeferFlag"); + arylstDisableList.add("defermentPeriod"); + arylstDisableList.add("deferredDate"); + arylstDisableList.add("butDeferredDate"); + arylstDisableList.add("reason"); + } else { + arylstDisableList.add("ofcNoteNo"); + arylstDisableList.add("butOfcNoteNo"); + arylstDisableList.add("ofcNoteDate"); + arylstEnableList.add("butOfcNoteDate"); + } + if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("A")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("P")) { + arylstDisableList.add("butSubmit"); + arylstEnableList.add("butApprove"); + arylstEnableList.add("butReject"); + } else if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java new file mode 100644 index 0000000..1847244 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java @@ -0,0 +1,115 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; + +public class HrmATDTransCnclOrderForSingleEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpTrnsCnclOrderHdrMetaInfo((HrmATDTransCnclOrderSingleEmpQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpTrnsCnclOrderHeaderInfo((HrmATDTransCnclOrderSingleEmpQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butApproverNo"); + arylstDisableList.add("orderNo"); + } + if (!oHrmTransCnclOrderSingEmpHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butApproverNo"); + arylstEnableList.add("orderNo"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstDisableList.add("butApproverNo"); + arylstDisableList.add("orderNo"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java new file mode 100644 index 0000000..125522f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java @@ -0,0 +1,131 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; + +public class HrmATDTransOrderForSingleEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmTransSingleEmpRecordMetaInfo((HrmATDTransSingleEmpQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmTransSingleEmpHeaderInfo((HrmATDTransSingleEmpQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + arylstDisableList.add("butApproverNo"); + if (!oHrmATDTransOrderForSingleEmpBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butApproverNo"); + if (EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderType())) + if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("S")) { + arylstDisableList.add("butToSite"); + } else if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("L")) { + arylstEnableList.add("butToSite"); + } + if (!EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getToSiteID())) { + arylstDisableList.add("butReportingEmpId"); + } else { + arylstEnableList.add("butReportingEmpId"); + } + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + if (!EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getToSiteID())) { + arylstDisableList.add("butReportingEmpId"); + } else { + arylstEnableList.add("butReportingEmpId"); + } + arylstEnableList.add("butApproverNo"); + if (EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderType())) + if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("S")) { + arylstDisableList.add("butToSite"); + } else if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("L")) { + arylstEnableList.add("butToSite"); + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = null; + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butCancelTransfer")) + sHeaderPrimaryKey = oFacade.cancelTransfer((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + return sHeaderPrimaryKey; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java new file mode 100644 index 0000000..f695463 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java @@ -0,0 +1,112 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAdhocReportQVO; + +public class HrmAdhocReportBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmAdhocReportHdrMetaInfo((HrmAdhocReportQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmAdhocReportHeaderInfo((HrmAdhocReportQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAdhocReport((HrmAdhocReportHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oDisableList = new ArrayList(); + ArrayList oEnableList = new ArrayList(); + HrmAdhocReportHdrBean oHrmAdhocReportHdrBean = (HrmAdhocReportHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butQueryCode"); + } else { + oDisableList.add("butQueryCode"); + } + if (null != oHrmAdhocReportHdrBean.getId()) { + oEnableList.add("butDownload"); + } else { + oDisableList.add("butDownload"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java new file mode 100644 index 0000000..3ef0602 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java @@ -0,0 +1,97 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; + +public class HrmAdvMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvMasterHdrMetaInfo((HrmAdvMstQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmAdvMasterHeaderInfo((HrmAdvMstQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvMasterDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvMasterDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmAdvanceMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java new file mode 100644 index 0000000..c02bf5e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java @@ -0,0 +1,98 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmAdvSettleQVO; + +public class HrmAdvSettleBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSettlementHdrMetaInfo((HrmAdvSettleQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmAdvSettlementHeader((HrmAdvSettleQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmAdvSettleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = null; + return sHeaderPrimaryKey; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmAdvSettleHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U") || oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + if (EnrgiseUtil.checkString(oHrmAdvSettleHdrBean.getEmployeeId())) { + arylstEnableList.add("butAdvanceCode"); + } else { + arylstDisableList.add("butAdvanceCode"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java new file mode 100644 index 0000000..5331bff --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java @@ -0,0 +1,107 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdvSettleHeadsDtlBean; +import wenrgise.hrms.bean.HrmAdvSettleHeadsHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; + +public class HrmAdvSettleHeadsBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacade oHrmFacade = (HrmFacade)getModuleFacade(); + return oHrmFacade.getHrAdvSettleHeadsDetailMetaInfo((HrmAdvSettleHeadsQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacade oHrmFacade = (HrmFacade)getModuleFacade(); + return oHrmFacade.getHrAdvSettleHeadsDetail((HrmAdvSettleHeadsQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + HrmAdvSettleHeadsHdrBean oHrmAdvSettleHeadsHdrBean = (HrmAdvSettleHeadsHdrBean)oThisPageVO.getOHeaderBean(); + Iterator oIt = oList.iterator(); + HrmAdvSettleHeadsDtlBean oHrmAdvSettleHeadsDtlBean = null; + while (oIt.hasNext()) { + oHrmAdvSettleHeadsDtlBean = oIt.next(); + if (oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus() == null || oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("txtAmount"); + continue; + } + if (oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("A") || oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("P") || oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("R")) + arylstDisableList.add("txtAmount"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmAdvSettleHds(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java new file mode 100644 index 0000000..e5ea06a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java @@ -0,0 +1,83 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmAgeAnalysisBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oEnableList.add("butQuery"); + oDisableList.add("butSave"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butHelp"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.InsertDataAgeAnalysis(oBaseHeaderBean); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAppTempBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAppTempBD.java new file mode 100644 index 0000000..aea3eb6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAppTempBD.java @@ -0,0 +1,194 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalTemplateKpaDtlBean; +import wenrgise.hrms.bean.HrmAppraisalTemplateSecDtlBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAppTempQueryVO; + +public class HrmAppTempBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmAppTemplateHdrMetaInfo((HrmAppTempQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAppTemplateHeaderInfo((HrmAppTempQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateSection")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAppTempSecDtlMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAppTempSecKPADtlMetaInfo(lPrimaryKey); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateSection")) { + arylstRet = oHrmThirdFacade.getHrmAppTempSecDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + arylstRet = oHrmThirdFacade.getHrmAppTempSecKPADetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return arylstRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmAprslTmplSec((HrmAppTempHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butDelete"); + arylstDisableList.add("butDelRow"); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmAppTempHdrBean oHrmAppTempHdrBean = (HrmAppTempHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAppTempHdrBean.getHeaderFlag())) + if (oHrmAppTempHdrBean.getHeaderFlag().equalsIgnoreCase("A")) { + arylstDisableList.add("butAddRow"); + arylstDisableList.add("butRatingCode"); + arylstDisableList.add("obsolete"); + arylstDisableList.add("applicableToAll"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("templateName"); + arylstDisableList.add("ratingCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstDisableList.add("butTemplateName"); + arylstDisableList.add("ratingCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + arylstDisableList.add("templateName"); + if (oDetailList == null) + arylstDisableList.add("butApprove"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + arylstDisableList.add("butRatingCode"); + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAppraisalTemplateSection")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean = oIt.next(); + if (!oHrmAppraisalTemplateSecDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmAppraisalTemplateSecDtlBean.setDisabtxtSrlNo("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtSectionCode("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabbutParentSecCode("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtParentSection("true"); + if (EnrgiseUtil.checkString(oHrmAppTempHdrBean.getHeaderFlag())) + if (oHrmAppTempHdrBean.getHeaderFlag().equalsIgnoreCase("A")) { + oHrmAppraisalTemplateSecDtlBean.setDisabtxtAppraiserType("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtRatingReqd("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtSectionWeightage("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtTemplateRemarks("true"); + } + } + if (oHrmAppraisalTemplateSecDtlBean.getStatus().equalsIgnoreCase("N")) + oHrmAppraisalTemplateSecDtlBean.setDisabtxtParentSection("true"); + } + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateKpaDtlBean oHrmAppraisalTemplateKpaDtlBean = oIt.next(); + if (!oHrmAppraisalTemplateKpaDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtKpaGroupCode("true"); + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtApprKpa("true"); + if (EnrgiseUtil.checkString(oHrmAppTempHdrBean.getHeaderFlag())) + if (oHrmAppTempHdrBean.getHeaderFlag().equalsIgnoreCase("A")) { + oHrmAppraisalTemplateKpaDtlBean.setDisabbutKPAGroupCode("true"); + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtWeightage("true"); + } + } + if (oHrmAppraisalTemplateKpaDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtKpaGroupCode("true"); + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtApprKpa("true"); + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmThirdFacade.approveHrmAprslTmplMst((HrmAppTempHdrBean)oBaseHeaderBean, sScreenName); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java new file mode 100644 index 0000000..459f301 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java @@ -0,0 +1,189 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAppraisalKPADtlBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; + +public class HrmApprisalKPABD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + if (sScreenName.equals("HrmAppraisalKPA")) + return oHrmAppKPAFacade.getHrmAppRaisalKpaDetailMetaInfo(sPrimaryKey); + return null; + } catch (RemoteException oRe) { + System.out.println(oRe.getMessage()); + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + System.out.println(oCrt.getMessage()); + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + if (sScreenName.equals("HrmAppraisalKPA")) + return oHrmAppKPAFacade.getHrmAppRaisalKpaDetail(sPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + System.out.println(oRe.getMessage()); + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + System.out.println(oCrt.getMessage()); + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + return oHrmAppKPAFacade.saveHrmAppRaisalKpa((HrmAppraisalKPAHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + return oHrmAppKPAFacade.getHrmAppRaisalKpaHeaderMetaInfo((HrmAppraisalKPAQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + ArrayList oHeaderList = oHrmAppKPAFacade.getHrmAppRaisalKpaHeader((HrmAppraisalKPAQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (bHeaderDataChanged || bDetailDataChanged) { + MessageKey oMessageKey = new MessageKey("save.before.freeze"); + ArrayList oParams = new ArrayList(); + throw new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E"); + } + if (sButtonName.equalsIgnoreCase("butFreeze")) + sHeaderPrimaryKey = oHrmThirdFacade.getHrmAppRaisalKpaExactWeightage(oBaseHeaderBean.getHeaderPrimaryKey()); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butDelete"); + arylstDisableList.add("butDelRow"); + ArrayList oEnableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmAppraisalKPAHdrBean objHdrBean = (HrmAppraisalKPAHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + arylstDisableList.add("butKpaGroupCode"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("kpaGroupCode"); + arylstDisableList.add("description"); + arylstDisableList.add("ratingRequired"); + arylstDisableList.add("txtAppraiserType"); + } + ArrayList arylstList = new ArrayList(); + if (EnrgiseUtil.checkString(objHdrBean.getStatusOfHeader())) { + if (oDetailList != null && objHdrBean.getStatusOfHeader().equalsIgnoreCase("Freezed")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = oIt.next(); + oHrmAppraisalKPADtlBean.setDisabmandatoryFlag("true"); + oHrmAppraisalKPADtlBean.setDisabtxtDescription("true"); + oHrmAppraisalKPADtlBean.setDisabtxtKpaCode("true"); + oHrmAppraisalKPADtlBean.setDisabtxtSrlNo("true"); + oHrmAppraisalKPADtlBean.setDisabtxtWeightage("true"); + arylstList.add(oHrmAppraisalKPADtlBean); + } + oThisPageVO.setODetailList(arylstList); + } + } else { + ArrayList arylstDisabList = new ArrayList(); + if (oDetailList != null) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = oIt.next(); + if (oHrmAppraisalKPADtlBean.getStatus().equalsIgnoreCase("Q")) { + oHrmAppraisalKPADtlBean.setDisabtxtKpaCode("true"); + oHrmAppraisalKPADtlBean.setDisabtxtSrlNo("true"); + } + arylstDisabList.add(oHrmAppraisalKPADtlBean); + } + } + oThisPageVO.setODetailList(arylstDisabList); + } + if (oDetailList == null) { + arylstDisableList.add("butFreeze"); + } else if (oDetailList != null) { + arylstEnableList.add("butFreeze"); + } + if (EnrgiseUtil.checkString(objHdrBean.getStatusOfHeader())) { + arylstDisableList.add("butFreeze"); + arylstDisableList.add("kpaGroupCode"); + arylstDisableList.add("butKpaGroupCode"); + arylstDisableList.add("description"); + arylstDisableList.add("ratingRequired"); + arylstDisableList.add("statusOfHeader"); + arylstDisableList.add("txtAppraiserType"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslBD.java new file mode 100644 index 0000000..8323e9a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslBD.java @@ -0,0 +1,683 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslGoalsDtlBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslKPADtlBean; +import wenrgise.hrms.bean.HrmAprslTrngReqDtlBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public class HrmAprslBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmEmpAprsl((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAprslKPA")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmEmpAprslKPADetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAprslGoals")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmEmpAprslGoalsDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAprslTrngReq")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslTrngReqDtlMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmpDtls")) { + oRecordMetaInfo.setRecordCount(1L); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmployee")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslEmpDtlMetaInfo(lPrimaryKey); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAprslKPA")) { + arylstRet = oHrmThirdFacade.getHrmEmpAprslKPADetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslGoals")) { + arylstRet = oHrmThirdFacade.getHrmEmpAprslGoalsDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslTrngReq")) { + arylstRet = oHrmThirdFacade.getHrAprslTrngReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmpDtls")) { + arylstRet = oHrmThirdFacade.getHrAprslEmpPerDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmployee")) { + arylstRet = oHrmThirdFacade.getHrAprslEmpPerDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return arylstRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpAprslHdrMetaInfo((HrmAprslQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpAprslHdrInfo((HrmAprslQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butDelRow"); + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAprslLevel())) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) + arylstDisableList.add("finalRating"); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R")) + arylstDisableList.add("finalRating"); + } else { + arylstDisableList.add("finalRating"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butGetDetail"); + arylstDisableList.add("butStOrder"); + } + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAprslLevel())) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) { + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getCalFlag())) + if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("C")) { + arylstDisableList.add("butDone"); + arylstDisableList.add("butReject"); + } else if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("D")) { + arylstDisableList.add("butCalculate"); + arylstDisableList.add("butReject"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getDoneFlag())) + if (oHrmAprslHdrBean.getDoneFlag().equalsIgnoreCase("true")) + arylstDisableList.add("butDone"); + } + } else if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getCalFlag())) + if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("C")) { + arylstDisableList.add("butDone"); + } else if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("D")) { + arylstDisableList.add("butCalculate"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getDoneFlag())) + if (oHrmAprslHdrBean.getDoneFlag().equalsIgnoreCase("true")) { + arylstDisableList.add("butDone"); + arylstDisableList.add("butReject"); + } + } + } + } else { + arylstDisableList.add("butDone"); + arylstDisableList.add("butReject"); + arylstDisableList.add("butCalculate"); + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAprslKPA")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAprslKPADtlBean oHrmAprslKPADtlBean = oIt.next(); + if (!oHrmAprslKPADtlBean.getStatus().equalsIgnoreCase("N")) { + if (oHrmAprslKPADtlBean.getTxtKpaRatingReq().equalsIgnoreCase("N")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (oHrmAprslKPADtlBean.getTxtKpaAprslType().equalsIgnoreCase("0")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (oHrmAprslKPADtlBean.getTxtKpaAprslType().equalsIgnoreCase("1")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (oHrmAprslKPADtlBean.getTxtKpaAprslType().equalsIgnoreCase("2")); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating0())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating1())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating2())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating3())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating4())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating5())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + } + } + } + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAprslGoals")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAprslGoalsDtlBean oHrmAprslGoalsDtlBean = oIt.next(); + if (!oHrmAprslGoalsDtlBean.getStatus().equalsIgnoreCase("N")) { + if (oHrmAprslGoalsDtlBean.getTxtSecRatingReq().equalsIgnoreCase("N")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (oHrmAprslGoalsDtlBean.getTxtSecAprslType().equalsIgnoreCase("0")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (oHrmAprslGoalsDtlBean.getTxtSecAprslType().equalsIgnoreCase("1")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (oHrmAprslGoalsDtlBean.getTxtSecAprslType().equalsIgnoreCase("2")); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating0())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating1())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating2())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating3())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating4())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating5())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + } + } + } + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAprslTrngReq")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAprslTrngReqDtlBean oHrmAprslTrngReqDtlBean = oIt.next(); + if (oHrmAprslTrngReqDtlBean.getStatus().equalsIgnoreCase("Q")) { + oHrmAprslTrngReqDtlBean.setDisabbutCourseLOV("true"); + oHrmAprslTrngReqDtlBean.setDisabbutRecLOV("true"); + oHrmAprslTrngReqDtlBean.setDisabbutTrngCalLOV("true"); + oHrmAprslTrngReqDtlBean.setDisabtxtPurpose("true"); + oHrmAprslTrngReqDtlBean.setDisabtxtRemarks("true"); + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butCalculate")) + sHeaderPrimaryKey = oHrmThirdFacade.calEmpFinRating((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + if (sButtonName.equalsIgnoreCase("butDone")) + sHeaderPrimaryKey = oHrmThirdFacade.approveEmpAprsl((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmThirdFacade.rejectEmpAprsl((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10) { + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oThisPageVO.getOHeaderBean(); + if (!EnrgiseUtil.checkString(oHrmAprslHdrBean.getWorkListId())); + } + if (oThisPageVO.getActionName() == 13) { + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getWorkListId())) { + WflWorkListInfoBean oWflWorkListInfoBean = new WflWorkListInfoBean(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + oWflWorkListInfoBean = oHrmThirdFacade.getWorkListInfo(oHrmAprslHdrBean.getWorkListId()); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRt) { + throw new EnrgiseSystemException(oRt); + } + oHrmAprslHdrBean.setEmpId(oWflWorkListInfoBean.getCreatorempId()); + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java new file mode 100644 index 0000000..19e18c6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java @@ -0,0 +1,164 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; + +public class HrmAprslSpcTmplBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + return oHrmThirdFacade.saveHrmAprslSpcTmp((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equals("HrmAprslSpcTmpl")) + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslSpcTmpKPADtlMetaInfo(lPrimaryKey); + if (sScreenName.equals("HrmAprslSpcTmplGoals")) + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslSpcTmpGoalsDtlMetaInfo(lPrimaryKey); + if (sScreenName.equals("HrmAprslSpcTmplEmpElig")) + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslSpcTmpEligDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equals("HrmAprslSpcTmpl")) + arylstRet = oHrmThirdFacade.getHrmAprslSpcTmpKPADetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equals("HrmAprslSpcTmplGoals")) + arylstRet = oHrmThirdFacade.getHrmAprslSpcTmpGoalsDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equals("HrmAprslSpcTmplEmpElig")) + arylstRet = oHrmThirdFacade.getHrmAprslSpcTmpEligDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return arylstRet; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmAprslSpcTmpHdrMetaInfo((HrmAprslSpcTmplQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAprslSpcTmpHeaderInfo((HrmAprslSpcTmplQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butTemplateName"); + oDisableList.add("butClassHdr"); + oDisableList.add("butClassDtl"); + oDisableList.add("butSiteCode"); + oDisableList.add("butDeptCode"); + oDisableList.add("butEmpNo"); + oDisableList.add("butStOrderNo"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oDisableList.add("splTemplateName"); + oDisableList.add("butSplTemplateName"); + oEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butClassHdr"); + oDisableList.add("butClassDtl"); + oDisableList.add("butSiteCode"); + oDisableList.add("butDeptCode"); + oDisableList.add("butEmpNo"); + oDisableList.add("butStOrderNo"); + oDisableList.add("butTemplateName"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butSplTemplateName"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmThirdFacade.approveHrmAprslSpcTmp((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmThirdFacade.rejectHrmAprslSpcTmp((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 13 || oThisPageVO.getActionName() == 10) { + HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean = (HrmAprslSpcTmplHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAprslSpcTmplHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmAprslSpcTmplHdrBean.setEmpLoyeeNumber(this.oUserInfo.getUserId()); + oHrmAprslSpcTmplHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java new file mode 100644 index 0000000..0966079 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java @@ -0,0 +1,100 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; + +public class HrmAprslStartOrderBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + return oHrmThirdFacade.getHrmAprslStOrderMetaInfo((HrmAprslStartOrderQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAprslStOrderInfo((HrmAprslStartOrderQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmThirdFacade.saveHrmAprslStOrder((HrmAprslStartOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean = (HrmAprslStartOrderHdrBean)oBaseHeaderBean; + if (!oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butStOrderNo"); + oEnableList.add("butAprslStDate"); + oEnableList.add("butAprslEndDate"); + oEnableList.add("butPeriodEndDate"); + oEnableList.add("butPeriodStDate"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butStOrderNo"); + oDisableList.add("butAprslStDate"); + oDisableList.add("butAprslEndDate"); + oDisableList.add("butPeriodEndDate"); + oDisableList.add("butPeriodStDate"); + } + oHashMap.put("D", oDisableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java new file mode 100644 index 0000000..7371c8f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java @@ -0,0 +1,115 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; + +public class HrmAprslStartRuleBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + return oHrmThirdFacade.saveHrmAprslStRule((HrmAprslStartRuleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslStRuleDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + arylstRet = oHrmThirdFacade.getHrmAprslStRuleDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return arylstRet; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmAprslStRuleHdrMetaInfo((HrmAprslStartRuleQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAprslStRuleHeader((HrmAprslStartRuleQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + HrmAprslStartRuleHdrBean oHrmAprslStartRuleHdrBean = (HrmAprslStartRuleHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butTxtAprslStOrdNo"); + oDisableList.add("butTxtEmpNum"); + oDisableList.add("butTxtWrkGrpCode"); + oDisableList.add("butTxtSiteCode"); + oDisableList.add("butTxtClsHdr"); + oDisableList.add("butTxtClsDtl"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java new file mode 100644 index 0000000..4d9584a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java @@ -0,0 +1,114 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseDetailInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; + +public class HrmAttEmpAttOutBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, HrmAttEmpAttOutQVO objHrmAttEmpAttOutQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public BaseDetailVO getDetailRecord(String sFormName, String sScreenName, String sPrimaryKey, long lPageRequested, DetailSizeValues oDetailSizeValues, BaseDetailVO oBaseDetailVO, UserSession oUser, BaseDetailInfo oBaseDetailInfo, boolean bForce) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 21 || oThisPageVO.getActionName() == 13) { + HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean = (HrmAttEmpAttOutHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttOutHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmAttEmpAttOutHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmAttEmpAttOutHdrBean.setFirstName(oName[0]); + oHrmAttEmpAttOutHdrBean.setMiddleName(oName[1]); + oHrmAttEmpAttOutHdrBean.setLastName(oName[2]); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmAttOutHdrMetaInfo((HrmAttEmpAttOutQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmAttOutHeaderInfo((HrmAttEmpAttOutQVO)oQueryVO, lStartPosition, lLastPosition); + System.out.println(oHeaderList.size()); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttEmpOut((HrmAttEmpAttOutHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butInsert"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java new file mode 100644 index 0000000..a92612b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java @@ -0,0 +1,124 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpAttQueryDtlBean; +import wenrgise.hrms.bean.HrmAttEmpAttQueryHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; + +public class HrmAttEmpAttQueryBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getEmpAttQueryHdrMetaInfo((HrmAttEmpAttQueryQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getEmpAttQueryHeader((HrmAttEmpAttQueryQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getEmpAttQueryDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getEmpAttQueryDtlInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.saveHrmAttEmpQuery(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + if (oThisPageVO.getActionName() == 10) { + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttQueryHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + } else if (oThisPageVO.getActionName() == 13) { + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttQueryHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + } else if (oThisPageVO.getActionName() == 19) { + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttQueryHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + HrmAttEmpAttQueryHdrBean oHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + HrmAttEmpAttQueryDtlBean objHrmAttEmpAttQueryDtlBean = new HrmAttEmpAttQueryDtlBean(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butDelRow"); + oDisableList.add("butAddRow"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oEnableList.add("butInsert"); + oDisableList.add("butPeriodStartDt"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + oEnableList.add("butPeriodStartDt"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java new file mode 100644 index 0000000..e31e1c6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java @@ -0,0 +1,115 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpDayOffHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; + +public class HrmAttEmpDayOffBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttEmpDayoffDtlMetaInfo((HrmAttEmpDayOffQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttEmpDayOff")) + return oHrmSecondFacade.getHrmAttEmpDayoffDetailInfo((HrmAttEmpDayOffQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttEmpDayoffData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttEmpDayOffHdrBean oHrmAttEmpDayOffHdrBean = (HrmAttEmpDayOffHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffHdrBean.getEmployeeNo())) + arylstEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butSave"); + arylstDisableList.add("butEmpNo"); + arylstDisableList.add("butPrdStDt"); + arylstDisableList.add("butPrdEndDt"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisableList.add("butPrdStDt"); + arylstDisableList.add("butPrdEndDt"); + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffHdrBean.getEmployeeNo())) + arylstEnableList.add("butAddRow"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java new file mode 100644 index 0000000..31f0686 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java @@ -0,0 +1,138 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseDetailInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; + +public class HrmAttEmpInBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, HrmAttEmpAttInQVO objHrmAttEmpAttInQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public BaseDetailVO getDetailRecord(String sFormName, String sScreenName, String sPrimaryKey, long lPageRequested, DetailSizeValues oDetailSizeValues, BaseDetailVO oBaseDetailVO, UserSession oUser, BaseDetailInfo oBaseDetailInfo, boolean bForce) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + if (oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 21 || oThisPageVO.getActionName() == 13) { + HrmAttEmpAttInHdrBean hrmAttEmpAttInHdrBean = (HrmAttEmpAttInHdrBean)oThisPageVO.getOHeaderBean(); + hrmAttEmpAttInHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + hrmAttEmpAttInHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + hrmAttEmpAttInHdrBean.setFirstName(oName[0]); + hrmAttEmpAttInHdrBean.setMiddleName(oName[1]); + hrmAttEmpAttInHdrBean.setLastName(oName[2]); + } + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean1 = (HrmAttEmpAttInHdrBean)oThisPageVO.getOHeaderBean(); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean = oHrmSecondFacade.getOnLoadSysDtTime(oHrmAttEmpAttInHdrBean1); + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmAttEmpAttInHdrBean); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmAttHdrMetaInfo((HrmAttEmpAttInQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmAttHeaderInfo((HrmAttEmpAttInQVO)oQueryVO, lStartPosition, lLastPosition); + System.out.println(oHeaderList.size()); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttEmpIn((HrmAttEmpAttInHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean = (HrmAttEmpAttInHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oEnableList.add("butSave"); + if (!oHrmAttEmpAttInHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmAttEmpAttInHdrBean.getAttndStatus())) { + String sAttStatus = oHrmAttEmpAttInHdrBean.getAttndStatus(); + if (String.valueOf(sAttStatus).equalsIgnoreCase("L")) { + oEnableList.add("reasons"); + } else if (String.valueOf(sAttStatus).equalsIgnoreCase("T")) { + oDisableList.add("reasons"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java new file mode 100644 index 0000000..4b59b6b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java @@ -0,0 +1,117 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpShiftHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; + +public class HrmAttEmpShiftBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttEmpShiftDtlMetaInfo((HrmAttEmpShiftQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttEmpShift")) + return oHrmSecondFacade.getHrmAttEmpShiftDtlInfo((HrmAttEmpShiftQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveEmpShift(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttEmpShiftHdrBean oHrmAttEmpShiftHdrBean = (HrmAttEmpShiftHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttEmpShiftHdrBean.getEmployeeNo())) + arylstEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butGetDetail"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttEmpShiftHdrBean.getEmployeeNo())) { + arylstEnableList.add("butAddRow"); + arylstEnableList.add("butDelRow"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butSave"); + arylstDisableList.add("butDelete"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java new file mode 100644 index 0000000..febc0f2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java @@ -0,0 +1,109 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; + +public class HrmAttEmployeeShiftRosterBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oEmpShiftRosterFacade = oHome.create(); + return oEmpShiftRosterFacade.getAttEmpshiftRosterDetailMetaInfo((HrmAttEmpShiftRosterQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + System.out.println(oRe.getMessage()); + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + System.out.println(oCrt.getMessage()); + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttEmpShiftRoster")) + return oHrmSecondFacade.getAttEmpshiftRosterDetail((HrmAttEmpShiftRosterQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return new RecordMetaInfo(); + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butExecute"); + oDisableList.add("butDelete"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butSave"); + oDisableList.add("butInsert"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butWorkGrpCode"); + oDisableList.add("butEmpNo"); + oDisableList.add("butSiteId"); + oDisableList.add("butperiodStartDate"); + oDisableList.add("butperiodEndDate"); + oEnableList.add("butQuery"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java new file mode 100644 index 0000000..daee79b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java @@ -0,0 +1,123 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; + +public class HrmAttShiftMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftAttMstFacade = oHome.create(); + return oShiftAttMstFacade.saveAttShiftMstData((HrmAttShiftMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftAttMstFacade = oHome.create(); + return oShiftAttMstFacade.getAttShiftMstHeaderMetaInfo((HrmAttShiftMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftAttMstFacade = oHome.create(); + ArrayList oHeaderList = oShiftAttMstFacade.getAttShiftMstHeader((HrmAttShiftMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("Q")) { + oEnableList.add("butShiftCode"); + oDisableList.add("shiftCode"); + oDisableList.add("startTime"); + oDisableList.add("endTime"); + oDisableList.add("relaxationTime"); + oDisableList.add("startTolerenceTime"); + oDisableList.add("endTolerenceTime"); + oDisableList.add("overlapTime"); + oDisableList.add("txtDayOverlapFlag"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butRefresh"); + oEnableList.add("butSave"); + oDisableList.add("butShiftCode"); + oDisableList.add("startTime"); + oDisableList.add("endTime"); + oDisableList.add("shiftCode"); + oEnableList.add("relaxationTime"); + oEnableList.add("startTolerenceTime"); + oEnableList.add("endTolerenceTime"); + oEnableList.add("overlapTime"); + oEnableList.add("txtDayOverlapFlag"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + oDisableList.add("butShiftCode"); + oEnableList.add("shiftCode"); + oEnableList.add("startTime"); + oEnableList.add("endTime"); + oEnableList.add("relaxationTime"); + oEnableList.add("startTolTime"); + oEnableList.add("endTolTime"); + oEnableList.add("overlapTime"); + oEnableList.add("overlapDayFlag"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java new file mode 100644 index 0000000..c23afdd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java @@ -0,0 +1,80 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmAttShiftRosterGenBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butExecute"); + HrmAttShiftRosterGenHdrBean oHrmAttShiftRosterGenHdrBean = (HrmAttShiftRosterGenHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAttShiftRosterGenHdrBean.getSite())) { + arylstEnableList.add("butWrkGrpCode"); + arylstDisableList.add("butSiteCode"); + } else { + arylstEnableList.add("butSiteCode"); + arylstDisableList.add("butWrkGrpCode"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftRosterGenFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butGenerate")) + sHeaderPrimaryKey = oShiftRosterGenFacade.saveShiftRosterGenData((HrmAttShiftRosterGenHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java new file mode 100644 index 0000000..0f4c187 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java @@ -0,0 +1,114 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttWorkGroupDayOffHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; + +public class HrmAttWorkGroupDayOffBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttWorkGroupDayOffDtlMetaInfo((HrmAttWorkGroupDayOffQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupDayOff")) + return oHrmSecondFacade.getHrmAttWorkGroupDayOffDetailInfo((HrmAttWorkGroupDayOffQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttWorkGroupDayOffData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttWorkGroupDayOffHdrBean oHrmAttWorkGroupDayOffHdrBean = (HrmAttWorkGroupDayOffHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getSiteCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getWorkGroupCode())) + arylstEnableList.add("butGetDetail"); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getSiteCode())) { + arylstEnableList.add("butWrkGrpCode"); + arylstDisableList.add("butSiteCode"); + } else { + arylstDisableList.add("butWrkGrpCode"); + } + if (oThisPageVO.getScreenMode().equals("N")) + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getSiteCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getWorkGroupCode())) + arylstEnableList.add("butAddRow"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + arylstEnableList.add("butSave"); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java new file mode 100644 index 0000000..f659924 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java @@ -0,0 +1,130 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttWorkGroupShiftHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; + +public class HrmAttWorkGroupShiftBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttWGShiftDtlMetaInfo((HrmAttWorkGroupShiftQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupShift")) + return oHrmSecondFacade.getHrmAttWGShiftDtlInfo((HrmAttWorkGroupShiftQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveWGS(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttWorkGroupShiftHdrBean oHrmAttWorkGroupShiftHdrBean = (HrmAttWorkGroupShiftHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getWorkGroupCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode())) + arylstEnableList.add("butGetDetail"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode())) { + arylstEnableList.add("butWrkGrpCode"); + arylstDisableList.add("butSiteCode"); + } else { + arylstDisableList.add("butWrkGrpCode"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butGetDetail"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getWorkGroupCode())) { + arylstEnableList.add("butAddRow"); + arylstEnableList.add("butDelRow"); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode())) { + arylstEnableList.add("butWrkGrpCode"); + arylstEnableList.add("butSiteCode"); + } else { + arylstDisableList.add("butWrkGrpCode"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butSave"); + arylstDisableList.add("butDelete"); + arylstEnableList.add("butQuery"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmBaseBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmBaseBD.java new file mode 100644 index 0000000..5c5ffed --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmBaseBD.java @@ -0,0 +1,5 @@ +package wenrgise.hrms.businessdelegate; + +import wenrgise.common.businessdelegate.BaseBD; + +public abstract class HrmBaseBD extends BaseBD {} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java new file mode 100644 index 0000000..ab76e40 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java @@ -0,0 +1,127 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmClaimMstQVO; + +public class HrmClaimMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClaimMstHdrMetaInfo((HrmClaimMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmClaimMstHdrInfo((HrmClaimMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClaimMstDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClaimMstDtlInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmClaimMstHdrBean oHrmClaimMstHdrBean = (HrmClaimMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmClaimMstHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butClaimCode"); + oDisableList.add("claimCode"); + oDisableList.add("claimName"); + oDisableList.add("docReqFlag"); + oDisableList.add("butCalendarCode"); + oDisableList.add("payrollFlag"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butClaimCode"); + oEnableList.add("claimCode"); + oEnableList.add("claimName"); + oEnableList.add("docReqFlag"); + oEnableList.add("butCalendarCode"); + oEnableList.add("payrollFlag"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butClaimCode"); + oEnableList.add("claimCode"); + oEnableList.add("claimName"); + oEnableList.add("docReqFlag"); + oEnableList.add("butCalendarCode"); + oEnableList.add("payrollFlag"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmFacade.saveHrmClaimMst((HrmClaimMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java new file mode 100644 index 0000000..d766f1f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java @@ -0,0 +1,183 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; + +public class HrmEmpAdvAppBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpAdvAppHdrMetaInfo((HrmEmpAdvAppQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpAdvAppHeaderInfo((HrmEmpAdvAppQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmEmpAdvAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butBulkSettlement")) + sHeaderPrimaryKey = oHrmFacade.advAppBulkSettlePayment((HrmEmpAdvAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean = (HrmEmpAdvAppHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmEmpAdvAppHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getEmployeeId())) { + oEnableList.add("butAdvanceCode"); + } else { + oDisableList.add("butAdvanceCode"); + } + oEnableList.add("butFromDate"); + oEnableList.add("butToDate"); + oDisableList.add("butDateApplied"); + oDisableList.add("amountApplied"); + oDisableList.add("sanctionedAmount"); + oDisableList.add("butSanctionDate"); + oDisableList.add("reason"); + oDisableList.add("butApproverNo"); + oDisableList.add("remarks"); + oDisableList.add("payrollMonth"); + oDisableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butEmployeeNo"); + oDisableList.add("butAdvanceCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oEnableList.add("butDateApplied"); + oEnableList.add("amountApplied"); + oEnableList.add("sanctionedAmount"); + oEnableList.add("butSanctionDate"); + oEnableList.add("reason"); + oEnableList.add("butApproverNo"); + oEnableList.add("remarks"); + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getPaidInstallments())) { + if (Integer.parseInt(oHrmEmpAdvAppHdrBean.getPaidInstallments()) > 0) { + oDisableList.add("payrollMonth"); + } else { + oEnableList.add("payrollMonth"); + } + } else { + oEnableList.add("payrollMonth"); + } + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getBalance())) + if (Float.parseFloat(oHrmEmpAdvAppHdrBean.getBalance()) == false) { + oDisableList.add("bulkSettleAmount"); + oDisableList.add("butBulkSettlement"); + oHrmEmpAdvAppHdrBean.setMode("M"); + } + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getMode())) { + if (oHrmEmpAdvAppHdrBean.getMode().equalsIgnoreCase("B")) { + oDisableList.add("butBulkSettlement"); + oEnableList.add("bulkSettleAmount"); + } else if (oHrmEmpAdvAppHdrBean.getMode().equalsIgnoreCase("M")) { + oDisableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } else { + oEnableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } + } else { + oEnableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("bulkSettleAmount"); + oDisableList.add("butBulkSettlement"); + oEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getEmployeeId())) { + oEnableList.add("butAdvanceCode"); + } else { + oDisableList.add("butAdvanceCode"); + } + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oEnableList.add("butDateApplied"); + oEnableList.add("amountApplied"); + oEnableList.add("sanctionedAmount"); + oEnableList.add("butSanctionDate"); + oEnableList.add("reason"); + oEnableList.add("butApproverNo"); + oEnableList.add("remarks"); + oEnableList.add("payrollMonth"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java new file mode 100644 index 0000000..c9a37c6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java @@ -0,0 +1,152 @@ +package wenrgise.hrms.businessdelegate; + +import java.lang.reflect.InvocationTargetException; +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import org.apache.commons.beanutils.BeanUtils; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpClaimDtlBean; +import wenrgise.hrms.bean.HrmEmpClaimHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpClaimQVO; + +public class HrmEmpClaimBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oInfo = new RecordMetaInfo(); + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + oInfo.setRecordCount(1L); + oInfo.setOWhenPicked(null); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + ArrayList oHeaderList = null; + HrmEmpClaimQVO oVo = (HrmEmpClaimQVO)oQueryVO; + HrmEmpClaimHdrBean oBean = new HrmEmpClaimHdrBean(); + BeanUtils.copyProperties(oBean, oVo); + oHeaderList.add(oBean); + return oHeaderList; + } catch (InvocationTargetException oEx) { + throw new EnrgiseSystemException(oEx); + } catch (IllegalAccessException oEx) { + throw new EnrgiseSystemException(oEx); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpClaimDetailMetaInfo((HrmEmpClaimQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpClaimDetailInfo((HrmEmpClaimQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmEmpClaim(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmEmpClaimHdrBean oHrmEmpClaimHdrBean = (HrmEmpClaimHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oList = oThisPageVO.getODetailList(); + arylstEnab.add("butSave"); + arylstEnab.add("butQuery"); + arylstDisab.add("butExecute"); + arylstDisab.add("butDelete"); + arylstDisab.add("butInsert"); + arylstDisab.add("butDelRow"); + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("butGetDetail"); + arylstDisab.add("butStartDate"); + arylstDisab.add("butEndDate"); + arylstDisab.add("butClaimNo"); + arylstDisab.add("butEmpNo"); + arylstDisab.add("butClaimCode"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + if (EnrgiseUtil.checkString(oHrmEmpClaimHdrBean.getPeriod())) { + arylstEnab.add("butGetDetail"); + } else { + arylstDisab.add("butGetDetail"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + ArrayList oList = oThisPageVO.getODetailList(); + if (oList != null) { + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + HrmEmpClaimDtlBean oHrmEmpClaimDtlBean = oIt.next(); + oHrmEmpClaimDtlBean.setTxtRemarks(oHrmEmpClaimDtlBean.getTxtNewRemarks()); + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java new file mode 100644 index 0000000..c458b47 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java @@ -0,0 +1,102 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; + +public class HrmEmpDepDtlBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDepDtlHdrMetaInfo((HrmEmpDepDtlQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpDepDtlHdrInfo((HrmEmpDepDtlQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDepDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDepDtlInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmEmpDepDtl((HrmEmpDepHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstDisab.add("butDelete"); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java new file mode 100644 index 0000000..82aac81 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java @@ -0,0 +1,105 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; + +public class HrmEmpDiscActionBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDiscActionHdrMetaInfo((HrmEmpDiscActionQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpDiscActionHdrInfo((HrmEmpDiscActionQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDiscActionMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDiscActionInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmEmpDiscAction((HrmEmpDiscActionHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisabledFields = new ArrayList(); + arylstDisabledFields.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("U")) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmEmpDiscAction")) + arylstDisabledFields.add("butEmpNo"); + oHashMap.put("D", arylstDisabledFields); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java new file mode 100644 index 0000000..522d87b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java @@ -0,0 +1,421 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpPersDtlsBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmEmpPersQVO; + +public class HrmEmpPersBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpPersHdrMetaInfo((HrmEmpPersQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpPersHdrInfo((HrmEmpPersQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oSecHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) + return oHrmFacade.getHrmEmpPersDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) + return oHrmFacade.getHrmEmpPersAddDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) + return oHrmFacade.getHrmEmpPersJoinInfMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) + return oHrmFacade.getHrmEmpPersEduDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) + return oHrmFacade.getHrmEmpPersPriorExpMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) + return oHrmFacade.getHrmEmpPersPFDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEmpHst")) + return oHrmFacade.getHrmEmpPersEmpHistMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersTrngDtls")) + return oHrmFacade.getHrmEmpPersTrngDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAward")) + return oHrmFacade.getHrmEmpPersAwardMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersIns")) + return oHrmFacade.getHrmEmpPersInsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersHealth")) + return oHrmFacade.getHrmEmpPersHealthMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersLng")) + return oHrmFacade.getHrmEmpPersLngMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) + return oHrmFacade.getHrmEmpPersRefMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAsset")) + return oHrmSecondFacade.getHrmEmpPersAssetMetaInfo(lPrimaryKey); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oSecHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) + return oHrmFacade.getHrmEmpPersDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) + return oHrmFacade.getHrmPersAddDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) + return oHrmFacade.getHrmEmpPersJoinInfInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) + return oHrmFacade.getHrmEmpPersEduDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) + return oHrmFacade.getHrmEmpPersPriorExpInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) + return oHrmFacade.getHrmEmpPersPFDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEmpHst")) + return oHrmFacade.getHrmEmpPersEmpHistInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersTrngDtls")) + return oHrmFacade.getHrmEmpPersTrngDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAward")) + return oHrmFacade.getHrmEmpPersAwardInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersIns")) + return oHrmFacade.getHrmEmpPersInsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersHealth")) + return oHrmFacade.getHrmEmpPersHealthInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersLng")) + return oHrmFacade.getHrmEmpPersLngInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) + return oHrmFacade.getHrmEmpPersRefInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAsset")) + return oHrmSecondFacade.getHrmEmpPersAssetInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + oWhenPicked = oDetailPicked; + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oSecHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) + return oHrmFacade.saveHrmEmpPersDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) + return oHrmFacade.saveHrmEmpPersAddDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) + return oHrmFacade.saveHrmEmpPersJoinInf((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEmpHst")) + return oHrmFacade.saveHrmEmpPersEmpHist((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) + return oHrmFacade.saveHrmEmpPersPFDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) + return oHrmFacade.saveHrmEmpPersEduDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) + return oHrmFacade.saveHrmEmpPersPriorExp((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersTrngDtls")) + return oHrmFacade.saveHrmEmpPersTrngDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAward")) + return oHrmFacade.saveHrmEmpPersAward((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersIns")) + return oHrmFacade.saveHrmEmpPersIns((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersHealth")) + return oHrmFacade.saveHrmEmpPersHealth((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersLng")) + return oHrmFacade.saveHrmEmpPersLng((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) + return oHrmFacade.saveHrmEmpPersRef((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAsset")) + return oHrmSecondFacade.saveHrmEmpPersAsset((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmEmpPersHdrBean oHrmEmpPersHdrBean = (HrmEmpPersHdrBean)oThisPageVO.getOHeaderBean(); + arylstDisab.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("Q")) + if (oThisPageVO.getScreenName().equals("HrmEmpPersDtls")) { + arylstDisab.add("sex"); + arylstDisab.add("guardianName"); + arylstDisab.add("mobile"); + arylstDisab.add("personalEmail"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("idMark"); + arylstDisab.add("dependants"); + arylstDisab.add("panNumber"); + arylstDisab.add("pfNumber"); + arylstDisab.add("girNumber"); + arylstDisab.add("passportNo"); + arylstDisab.add("drivingLicenseNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("validUpto"); + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + arylstDisab.add("relatedToEmployee"); + arylstDisab.add("flat"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("butNationality"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("butLocJoiningDate"); + arylstDisab.add("butLocation"); + arylstDisab.add("butDepartment"); + arylstDisab.add("butDesignation"); + arylstDisab.add("butReligion"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butReportingEmployee"); + arylstDisab.add("butLastPromotionDate"); + arylstDisab.add("butRsvCtg"); + arylstDisab.add("butPassportIssueDate"); + arylstDisab.add("butPassportExpDate"); + arylstDisab.add("butValidUpto"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("butRelatedEmployee"); + arylstDisab.add("butGrade"); + arylstDisab.add("butDraftSave"); + arylstDisab.add("butAnniversaryDate"); + arylstDisab.add("motherName"); + arylstDisab.add("tabAddDtls"); + arylstDisab.add("tabJoiningInfo"); + arylstDisab.add("tabEmpHist"); + arylstDisab.add("tabPriorExp"); + arylstDisab.add("tabEduDtls"); + arylstDisab.add("tabPFDtls"); + arylstDisab.add("tabTrngDtls"); + arylstDisab.add("tabAwardDtls"); + arylstDisab.add("tabInsDtls"); + arylstDisab.add("tabHealth"); + arylstDisab.add("tabLng"); + arylstDisab.add("tabRef"); + } + if (oThisPageVO.getScreenMode().equals("N")) + if (oThisPageVO.getScreenName().equals("HrmEmpPersDtls")) { + arylstDisab.add("sex"); + arylstDisab.add("guardianName"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("mobile"); + arylstDisab.add("personalEmail"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("idMark"); + arylstDisab.add("dependants"); + arylstDisab.add("panNumber"); + arylstDisab.add("pfNumber"); + arylstDisab.add("girNumber"); + arylstDisab.add("passportNo"); + arylstDisab.add("drivingLicenseNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("validUpto"); + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + arylstDisab.add("relatedToEmployee"); + arylstDisab.add("flat"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("butNationality"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("butLocJoiningDate"); + arylstDisab.add("butLocation"); + arylstDisab.add("butDepartment"); + arylstDisab.add("butDesignation"); + arylstDisab.add("butGrade"); + arylstDisab.add("butReligion"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butReportingEmployee"); + arylstDisab.add("butLastPromotionDate"); + arylstDisab.add("butRsvCtg"); + arylstDisab.add("butPassportIssueDate"); + arylstDisab.add("butPassportExpDate"); + arylstDisab.add("butValidUpto"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("butRelatedEmployee"); + arylstDisab.add("butDraftSave"); + arylstDisab.add("butAnniversaryDate"); + arylstDisab.add("motherName"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + if (oThisPageVO.getScreenName().equals("HrmEmpPersAddDtls")) { + arylstDisab.add("butJumpDetail"); + arylstDisab.add("newPageRequested"); + arylstDisab.add("butNextDetail"); + arylstDisab.add("butPrevDetail"); + } + if (oThisPageVO.getScreenName().equals("HrmEmpPersDtls")) + if (oThisPageVO.getODetailList() != null) { + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = oThisPageVO.getODetailList().get(0); + arylstEnab.add("sex"); + arylstEnab.add("guardianName"); + arylstEnab.add("mobile"); + arylstEnab.add("personalEmail"); + arylstEnab.add("placeOfBirth"); + arylstEnab.add("bloodGroup"); + arylstEnab.add("idMark"); + arylstEnab.add("dependants"); + arylstEnab.add("panNumber"); + arylstEnab.add("pfNumber"); + arylstEnab.add("girNumber"); + arylstEnab.add("passportNo"); + arylstEnab.add("drivingLicenseNo"); + arylstEnab.add("placeOfIssue"); + arylstEnab.add("validUpto"); + arylstEnab.add("flat"); + arylstEnab.add("tabAddDtls"); + arylstEnab.add("tabJoiningInfo"); + arylstEnab.add("tabEmpHist"); + arylstEnab.add("tabPriorExp"); + arylstEnab.add("tabEduDtls"); + arylstEnab.add("tabPFDtls"); + arylstEnab.add("tabTrngDtls"); + arylstDisab.add("tabAwardDtls"); + arylstDisab.add("tabInsDtls"); + arylstDisab.add("tabHealth"); + arylstDisab.add("tabLng"); + arylstEnab.add("tabRef"); + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getMaritalStatus())) { + if (oHrmEmpPersDtlsBean.getMaritalCode().equalsIgnoreCase("M")) { + arylstEnab.add("spouseName"); + arylstEnab.add("spouseOccupation"); + } else { + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + } + } else { + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + } + arylstEnab.add("relatedToEmployee"); + arylstEnab.add("handicappedFlag"); + arylstEnab.add("butNationality"); + arylstEnab.add("butGrade"); + arylstEnab.add("butDateOfBirth"); + arylstEnab.add("butLocJoiningDate"); + arylstEnab.add("butLocation"); + arylstEnab.add("butDepartment"); + arylstEnab.add("butDesignation"); + arylstEnab.add("butReligion"); + arylstEnab.add("butMotherTongue"); + arylstEnab.add("butReportingEmployee"); + arylstEnab.add("butLastPromotionDate"); + arylstEnab.add("butRsvCtg"); + arylstEnab.add("butPassportIssueDate"); + arylstEnab.add("butPassportExpDate"); + arylstEnab.add("butValidUpto"); + arylstEnab.add("butMaritalStatus"); + arylstEnab.add("butRelatedEmployee"); + arylstEnab.add("butAnniversaryDate"); + } else { + arylstDisab.add("sex"); + arylstDisab.add("guardianName"); + arylstDisab.add("mobile"); + arylstDisab.add("personalEmail"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("idMark"); + arylstDisab.add("dependants"); + arylstDisab.add("panNumber"); + arylstDisab.add("pfNumber"); + arylstDisab.add("girNumber"); + arylstDisab.add("passportNo"); + arylstDisab.add("drivingLicenseNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("validUpto"); + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + arylstDisab.add("relatedToEmployee"); + arylstDisab.add("flat"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("butNationality"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("butLocJoiningDate"); + arylstDisab.add("butLocation"); + arylstDisab.add("butDepartment"); + arylstDisab.add("butDesignation"); + arylstDisab.add("butGrade"); + arylstDisab.add("butReligion"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butReportingEmployee"); + arylstDisab.add("butLastPromotionDate"); + arylstDisab.add("butRsvCtg"); + arylstDisab.add("butPassportIssueDate"); + arylstDisab.add("butPassportExpDate"); + arylstDisab.add("butValidUpto"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("butRelatedEmployee"); + arylstDisab.add("butAnniversaryDate"); + arylstDisab.add("tabAddDtls"); + arylstDisab.add("tabJoiningInfo"); + arylstDisab.add("tabEmpHist"); + arylstDisab.add("tabPriorExp"); + arylstDisab.add("tabEduDtls"); + arylstDisab.add("tabPFDtls"); + arylstDisab.add("tabTrngDtls"); + arylstDisab.add("tabAwardDtls"); + arylstDisab.add("tabInsDtls"); + arylstDisab.add("tabHealth"); + arylstDisab.add("tabLng"); + arylstDisab.add("tabRef"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java new file mode 100644 index 0000000..c8a9cb2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java @@ -0,0 +1,125 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmGenEligRuleBD extends HrmBaseBD { + ArrayList arylstHdr; + + public HashMap getEligClassInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getEligClassInfo(); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + String s = oHrmSecondFacade.saveData((HrmGenEligRuleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return s; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecInfo = new RecordMetaInfo(); + oRecInfo.setRecordCount(1L); + oRecInfo.setOWhenPicked(null); + return oRecInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstDummy = new ArrayList(); + arylstDummy.add(new HrmOrgCntryMstHdrBean()); + return arylstDummy; + } + + public static void main(String[] ss) throws EnrgiseSystemException, EnrgiseApplicationException { + HrmGenEligRuleBD o = new HrmGenEligRuleBD(); + System.out.println(o.getEligClassInfo()); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstDisab.add("butPrevHeader"); + arylstDisab.add("butNextHeader"); + HrmGenEligRuleHdrBean oHdrBean = (HrmGenEligRuleHdrBean)oThisPageVO.getOHeaderBean(); + if (oHdrBean.getDocumentType().equals("")) { + arylstDisab.add("butDocumentCode"); + oHdrBean.setDocumentCode(""); + oHdrBean.setHidDocumentCodeId(""); + } else { + arylstEnab.add("butDocumentCode"); + } + if (oHdrBean.getHidAction().equals("Refresh")) { + arylstEnab.add("operator"); + arylstEnab.add("butValues"); + arylstEnab.add("documentType"); + arylstEnab.add("butDocumentCode"); + arylstEnab.add("butAnd"); + arylstEnab.add("butOr"); + arylstEnab.add("butShowFormula"); + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHdrBean); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + HrmGenEligRuleHdrBean oHdrBean = (HrmGenEligRuleHdrBean)oThisPageVO.getOHeaderBean(); + if (oHdrBean.getHidAction().equals("Refresh")) { + oHdrBean.setDocumentCode(""); + oHdrBean.setHidDocumentCodeId(""); + oHdrBean.setDocumentType(""); + oHdrBean.setFormula(""); + oHdrBean.setEligSql(""); + oHdrBean.setHidAction(""); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java new file mode 100644 index 0000000..600bc11 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java @@ -0,0 +1,122 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; + +public class HrmGenEligRuleQueryBD extends HrmBaseBD { + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmGenEligRuleQuery((HrmGenEligRuleQueryHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(HrmGenEligRuleQueryQVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmGenEligRuleQueryDetail((HrmGenEligRuleQueryQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String sHeaderPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String headerPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmGenEligRuleQueryDetailMetaInfo((HrmGenEligRuleQueryQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(HrmGenEligRuleQueryQVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(HrmGenEligRuleQueryQVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstEnab.add("butQuery"); + arylstDisab.add("butInsert"); + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("docType"); + arylstEnab.add("butSave"); + } else { + arylstEnab.add("docType"); + } + HrmGenEligRuleQueryHdrBean oHdrBean = (HrmGenEligRuleQueryHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHdrBean.getDocType())) { + arylstEnab.add("butGetDetail"); + } else { + arylstDisab.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equals("Q")); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java new file mode 100644 index 0000000..a3093ff --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java @@ -0,0 +1,73 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmGenGenerateFormulaBD extends HrmBaseBD { + public ArrayList getParameterInfo() throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return new ArrayList(); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmGenEligRuleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnAppBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnAppBD.java new file mode 100644 index 0000000..8bdd6e0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnAppBD.java @@ -0,0 +1,347 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLnAppQVO; + +public class HrmLnAppBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanAppHdrMetaInfo((HrmLnAppQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmLoanAppHdrInfo((HrmLnAppQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + return oHrmFacade.getHrmLnDisDtlMetaInfo(lPrimaryKey, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnDisDtl")) + return oHrmFacade.getHrmLnDisDtlMetaInfo(lPrimaryKey, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + return oHrmFacade.getHrmLnHblIntRateMetaInfo(lPrimaryKey, this.oUserInfo); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + return oHrmFacade.getHrmLnDisDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnDisDtl")) + return oHrmFacade.getHrmLnDisDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + return oHrmFacade.getHrmLnHblIntRateDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + return oHrmFacade.saveHrmLnDisDtl((HrmLnAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + return oHrmFacade.saveHrmLnHblIntRateDtl((HrmLnAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + ArrayList test = new ArrayList(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getEmpId())) { + arylstEnableList.add("butLoanCode"); + } else { + arylstDisableList.add("butLoanCode"); + } + arylstDisableList.add("butApproverNo"); + arylstDisableList.add("remarks"); + arylstDisableList.add("instAmount"); + arylstDisableList.add("totalInterestInst"); + arylstDisableList.add("totalPrincipalInst"); + arylstDisableList.add("totalInst"); + arylstDisableList.add("payrollMonth"); + arylstDisableList.add("appliedAmount"); + arylstDisableList.add("loanDetails"); + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + arylstDisableList.add("sanctionedAmount"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("butSanctionDate"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPayment"); + arylstDisableList.add("butBulkPaymentDate"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getEmpId())) { + arylstEnableList.add("butLoanCode"); + } else { + arylstDisableList.add("butLoanCode"); + } + arylstEnableList.add("butApproverNo"); + arylstEnableList.add("sanctionedAmount"); + arylstEnableList.add("remarks"); + arylstEnableList.add("instAmount"); + arylstEnableList.add("totalInterestInst"); + arylstEnableList.add("totalPrincipalInst"); + arylstEnableList.add("totalInst"); + arylstEnableList.add("payrollMonth"); + arylstEnableList.add("appliedAmount"); + arylstEnableList.add("loanDetails"); + arylstEnableList.add("butApplnDate"); + arylstEnableList.add("butSanctionDate"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPayment"); + arylstDisableList.add("butBulkPaymentDate"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getLoanCode())) { + if (oHrmLnAppHdrBean.getLoanCode().equalsIgnoreCase("99")) { + arylstEnableList.add("hblAppliedFor"); + arylstEnableList.add("hblBranhConst"); + arylstEnableList.add("hblDocSubmitted"); + arylstEnableList.add("hblCity"); + arylstEnableList.add("hblPO"); + arylstEnableList.add("hblDistrict"); + arylstEnableList.add("hblMouza"); + arylstEnableList.add("hblKhatian"); + arylstEnableList.add("hblDag"); + arylstEnableList.add("hblNoOfDeed"); + arylstEnableList.add("hblParentDeed"); + arylstEnableList.add("hblVolOfDeed"); + arylstEnableList.add("hblBookNo"); + arylstEnableList.add("hblPageNo"); + arylstEnableList.add("hblRegisteredAt"); + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + } + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + } + } + if (oThisPageVO.getScreenMode().equals("U")) { + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getFullyRepaid())) + if (String.valueOf(oHrmLnAppHdrBean.getFullyRepaid()).equalsIgnoreCase("on")) { + arylstDisableList.add("butBulkPayment"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPaymentDate"); + } else if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getMode())) { + if (oHrmLnAppHdrBean.getMode().equalsIgnoreCase("B")) { + arylstDisableList.add("butBulkPayment"); + arylstEnableList.add("bulkAmount"); + arylstEnableList.add("butBulkPaymentDate"); + } else { + arylstEnableList.add("butBulkPayment"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPaymentDate"); + } + } else { + arylstEnableList.add("butBulkPayment"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPaymentDate"); + } + arylstDisableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getEmpId())) { + arylstEnableList.add("butLoanCode"); + } else { + arylstDisableList.add("butLoanCode"); + } + arylstEnableList.add("butApproverNo"); + arylstEnableList.add("remarks"); + arylstEnableList.add("instAmount"); + arylstEnableList.add("totalInterestInst"); + arylstEnableList.add("totalPrincipalInst"); + arylstEnableList.add("totalInst"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getNoOfInstPaid())) { + if (Integer.parseInt(oHrmLnAppHdrBean.getNoOfInstPaid()) > 0) { + arylstDisableList.add("payrollMonth"); + } else { + arylstEnableList.add("payrollMonth"); + } + } else { + arylstEnableList.add("payrollMonth"); + } + arylstEnableList.add("appliedAmount"); + arylstEnableList.add("loanDetails"); + arylstEnableList.add("butApplnDate"); + arylstEnableList.add("butSanctionDate"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getLoanCode())) { + if (oHrmLnAppHdrBean.getLoanCode().equalsIgnoreCase("99")) { + arylstEnableList.add("hblAppliedFor"); + arylstEnableList.add("hblBranhConst"); + arylstEnableList.add("hblDocSubmitted"); + arylstEnableList.add("hblCity"); + arylstEnableList.add("hblPO"); + arylstEnableList.add("hblDistrict"); + arylstEnableList.add("hblMouza"); + arylstEnableList.add("hblKhatian"); + arylstEnableList.add("hblDag"); + arylstEnableList.add("hblNoOfDeed"); + arylstEnableList.add("hblParentDeed"); + arylstEnableList.add("hblVolOfDeed"); + arylstEnableList.add("hblBookNo"); + arylstEnableList.add("hblPageNo"); + arylstEnableList.add("hblRegisteredAt"); + arylstDisableList.add("disabtabHblIntRate"); + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + arylstEnableList.add("disabtabHblIntRate"); + } + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + arylstEnableList.add("disabtabHblIntRate"); + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butBulkPayment")) + sHeaderPrimaryKey = oHrmFacade.loanAppBulkPayment((HrmLnAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnChartBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnChartBD.java new file mode 100644 index 0000000..351a1eb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnChartBD.java @@ -0,0 +1,97 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLnChartQVO; + +public class HrmLnChartBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanChartHdrMetaInfo((HrmLnChartQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmLoanChartHdrInfo((HrmLnChartQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanChartDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanChartDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmLoanChart((HrmLnChartHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnMstBD.java new file mode 100644 index 0000000..cf5a8c9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLnMstBD.java @@ -0,0 +1,114 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLnMstQVO; + +public class HrmLnMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanMstHeaderMetaInfo((HrmLnMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmLoanMstHeaderInfo((HrmLnMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanMstDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanMstDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmFacade.saveHrmLoanMst((HrmLnMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmLnMstHdrBean oHrmLnMstHdrBean = (HrmLnMstHdrBean)oBaseHeaderBean; + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("typeOfInterest"); + oDisableList.add("natureOfPayment"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butLoanCode"); + oDisableList.add("butChartName"); + oDisableList.add("loanCode"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java new file mode 100644 index 0000000..32e4393 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java @@ -0,0 +1,432 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvApplnDtlBean; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvApplnQVO; + +public class HrmLvApplnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveAppQueryScreenDtlMetaInfo((HrmLvApplnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpLeaveAppQueryScreenDtlInfo((HrmLvApplnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = null; + oDisableList.add("butDelete"); + oDisableList.add("butApply"); + if (oHrmLvApplnHdrBean != null) + if (oHrmLvApplnHdrBean.getDetailArray().size() != 0) { + oThisPageVO.setODetailList(oHrmLvApplnHdrBean.getDetailArray()); + oDetailList = oThisPageVO.getODetailList(); + } + if (oThisPageVO.getScreenMode().equals("N")) { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("medFlag"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + if (oHrmLvApplnHdrBean.getStatusOfLeaves() == null) { + oHrmLvApplnHdrBean.setStatusOfLeaves("N"); + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmLvApplnHdrBean); + } + if (oDetailList != null) + if (oDetailList.size() != 0) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmLvApplnDtlBean oDtlBean = oIt.next(); + if (oDtlBean.getTxtHalfDayFlag().equals("1")) { + oDtlBean.setTxtHalfDayFlag("1"); + oDtlBean.setDisabtxtHalfDayFlag("true"); + } + if (oDtlBean.getTxtHalfDayFlag().equals("2")) + oDtlBean.setTxtHalfDayFlag("2"); + } + oHrmLvApplnHdrBean.setDays(getHolidayCount(oDetailList)); + oThisPageVO.setODetailList(oDetailList); + oHrmLvApplnHdrBean.setDetailArray(oDetailList); + } + oEnableList.add("butApply"); + oEnableList.add("butGetDetail"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equals("U")) + if (getNextLevelUserId(oHrmLvApplnHdrBean.getHeaderPrimaryKey()).equalsIgnoreCase(this.oUserInfo.getUserTypeId())) { + String s2 = oHrmLvApplnHdrBean.getHeaderPrimaryKey(); + String s = getNextLevelUserId(oHrmLvApplnHdrBean.getHeaderPrimaryKey()); + oEnableList.add("butApprove"); + oEnableList.add("butLedger"); + oEnableList.add("butReject"); + } else { + oEnableList.add("butGetDetail"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + if (oHrmLvApplnHdrBean != null) { + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getStatusOfLeaves())) + if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("N")) { + oDisableList.add("leaveCodes"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oEnableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oEnableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oEnableList.add("butToAppDate"); + oDisableList.add("days"); + oEnableList.add("address"); + oEnableList.add("phone"); + oEnableList.add("purpose"); + oEnableList.add("remarks"); + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getLeaveCodes())) { + if (oHrmLvApplnHdrBean.getLeaveCodes().equalsIgnoreCase("EL")) { + oEnableList.add("ltaFlag"); + oEnableList.add("optedFor"); + oEnableList.add("itPercentage"); + oEnableList.add("fromYear"); + oDisableList.add("medFlag"); + } else { + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oEnableList.add("medFlag"); + } + } else { + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("medFlag"); + } + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oEnableList.add("butGetDetail"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("A")) { + oDisableList.add("leaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("days"); + oDisableList.add("butSave"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("butFromAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("butGetDetail"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("medFlag"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oDisableList.add("butDelete"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("R")) { + oDisableList.add("leaveCodes"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("days"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("")) { + oDisableList.add("leaveCodes"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("days"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("P")) { + oDisableList.add("leaveCodes"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("days"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("statusOfLeaves"); + if (oHrmLvApplnHdrBean.getWorkListId() == null) { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + } else { + oEnableList.add("butApprove"); + oEnableList.add("butLedger"); + oEnableList.add("butReject"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + } + } + } else { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmLvApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) { + ((HrmLvApplnHdrBean)oBaseHeaderBean).setButtonName("A"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveAppln((HrmLvApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + if (sButtonName.equalsIgnoreCase("butReject")) { + ((HrmLvApplnHdrBean)oBaseHeaderBean).setButtonName("R"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveAppln((HrmLvApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + if (oThisPageVO.getActionName() == 10) { + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvApplnHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvApplnHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvApplnHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvApplnHdrBean.setMiddleName(oName[1]); + oHrmLvApplnHdrBean.setLastName(oName[2]); + } else { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(" "); + } + oHrmLvApplnHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvApplnHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvApplnHdrBean.setDesignation(this.oUserInfo.getDesignation()); + oHrmLvApplnHdrBean.setSiteId(this.oUserInfo.getSiteId()); + } else if (oThisPageVO.getActionName() == 13) { + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvApplnHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvApplnHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvApplnHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvApplnHdrBean.setMiddleName(oName[1]); + oHrmLvApplnHdrBean.setLastName(oName[2]); + } else { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(" "); + } + oHrmLvApplnHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvApplnHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvApplnHdrBean.setDesignation(this.oUserInfo.getDesignation()); + oHrmLvApplnHdrBean.setSiteId(this.oUserInfo.getSiteId()); + } else if (oThisPageVO.getActionName() == 19) { + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvApplnHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvApplnHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvApplnHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvApplnHdrBean.setMiddleName(oName[1]); + oHrmLvApplnHdrBean.setLastName(oName[2]); + } else { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(" "); + } + oHrmLvApplnHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvApplnHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvApplnHdrBean.setDesignation(this.oUserInfo.getDesignation()); + oHrmLvApplnHdrBean.setSiteId(this.oUserInfo.getSiteId()); + } + } + + private String getHolidayCount(ArrayList arylstDtl) { + double dHolidayCount = 0.0D; + if (arylstDtl != null) { + Iterator itrDtlList = arylstDtl.iterator(); + while (itrDtlList.hasNext()) { + HrmLvApplnDtlBean oDtlBean = itrDtlList.next(); + if (!oDtlBean.getTxtHolidayFlag().equalsIgnoreCase("H")) { + if (!oDtlBean.getTxtHalfDayFlag().equalsIgnoreCase("3")) { + dHolidayCount += 0.5D; + continue; + } + dHolidayCount++; + } + } + } + return Double.toString(dHolidayCount); + } + + public ArrayList getLeaveBreakup(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList arylstDtl = oHrmSecondFacade.getLeaveDates((HrmLvApplnHdrBean)oBaseHeaderBean); + return arylstDtl; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + private String getNextLevelUserId(String headerPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + String NextLevelUserId = new String(); + String sQuery = String.valueOf(" select t.delegator_emp_id from workflow_tasklist t where t.status = 'P' and t.doc_dtl_id = ").concat(String.valueOf(headerPrimaryKey)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + NextLevelUserId = oRow.get("delegator_emp_id").getString(); + } + } + return NextLevelUserId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java new file mode 100644 index 0000000..f9bb36d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java @@ -0,0 +1,140 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvApplnQueryHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; + +public class HrmLvApplnQueryBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveAppQueryDtlMetaInfo((HrmLvApplnQueryQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLeaveAppQuery")) + return oHrmSecondFacade.getHrmEmpLeaveAppQueryDtlInfo((HrmLvApplnQueryQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "no Save"; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvApplnQueryHdrBean oHrmLvApplnQueryHdrBean = (HrmLvApplnQueryHdrBean)oThisPageVO.getOHeaderBean(); + if (!oHrmLvApplnQueryHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getEmployeeNo())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getEmployeeNo()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getLeaveCode())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getLeaveCode()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getFromDate())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getFromDate()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getToDate())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getToDate()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getStatusOfLeave())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getStatusOfLeave()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butLeaveCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oDisableList.add("statusOfLeave"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancBD.java new file mode 100644 index 0000000..7aa923e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancBD.java @@ -0,0 +1,258 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvCancQVO; + +public class HrmLvCancBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveCanQueryScreenDtlMetaInfo((HrmLvCancQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpLeaveCanQueryScreenDtlInfo((HrmLvCancQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmLvCancHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + if (oThisPageVO.getActionName() == 10) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 10) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 13) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 19) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oHrmLvCancHdrBean.getCancelStatus() == null) { + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } + if (oHrmLvCancHdrBean.getCancSide() != null) { + if (oHrmLvCancHdrBean.getCancSide().equals("L")) { + oHrmLvCancHdrBean.setFromCancelDate(oHrmLvCancHdrBean.getFromDate()); + oDisableList.add("butFromCancelDate"); + } + if (oHrmLvCancHdrBean.getCancSide().equals("R")) { + oHrmLvCancHdrBean.setToCancelDate(oHrmLvCancHdrBean.getToDate()); + oDisableList.add("butToCancelDate"); + } + if (oHrmLvCancHdrBean.getCancSide().equals("F")) { + oHrmLvCancHdrBean.setFromCancelDate(oHrmLvCancHdrBean.getFromDate()); + oHrmLvCancHdrBean.setToCancelDate(oHrmLvCancHdrBean.getToDate()); + oDisableList.add("butFromCancelDate"); + oDisableList.add("butToCancelDate"); + } + } + if (!oHrmLvCancHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmLvCancHdrBean.getCancelStatus())) + if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("N")) { + oDisableList.add("fromCancelDate"); + oEnableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oEnableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oEnableList.add("butCancelDateApplied"); + oEnableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + } else if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("A")) { + oDisableList.add("fromCancelDate"); + oDisableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oDisableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oDisableList.add("butCancelDateApplied"); + oDisableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } else if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("R")) { + oDisableList.add("fromCancelDate"); + oDisableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oDisableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oDisableList.add("butCancelDateApplied"); + oDisableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } else if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("P")) { + oDisableList.add("fromCancelDate"); + oDisableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oDisableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oDisableList.add("butCancelDateApplied"); + oDisableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) { + ((HrmLvCancHdrBean)oBaseHeaderBean).setButtonName("A"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveCanc((HrmLvCancHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + if (sButtonName.equalsIgnoreCase("butReject")) { + ((HrmLvCancHdrBean)oBaseHeaderBean).setButtonName("R"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveCanc((HrmLvCancHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java new file mode 100644 index 0000000..eaba8da --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java @@ -0,0 +1,110 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvCancQueryHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; + +public class HrmLvCancQueryBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveCanQueryDtlMetaInfo((HrmLvCancQueryQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmployeeLeaveCancellationQueryScreen")) + return oHrmSecondFacade.getHrmLeaveCanQueryDetailInfo((HrmLvCancQueryQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "no Save"; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvCancQueryHdrBean oHrmLvCancQueryHdrBean = (HrmLvCancQueryHdrBean)oThisPageVO.getOHeaderBean(); + if (!oHrmLvCancQueryHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmLvCancQueryHdrBean.getEmployeeNumber())) + if (!String.valueOf(oHrmLvCancQueryHdrBean.getEmployeeNumber()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java new file mode 100644 index 0000000..587d677 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmLvCreditBD extends HrmBaseBD { + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butCreditLeaves")) + sHeaderPrimaryKey = oFacade.creditLeaves((HrmLvCreditHdrBean)oBaseHeaderBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + return sHeaderPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oDisableList = new ArrayList(); + ArrayList oEnableList = new ArrayList(); + oDisableList.add("butDelete"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butSave"); + oDisableList.add("butRefresh"); + oDisableList.add("butPrint"); + oDisableList.add("buttxtRegion"); + oDisableList.add("butCreditLeaves"); + HrmLvCreditHdrBean oHrmLvCreditHdrBean = (HrmLvCreditHdrBean)oThisPageVO.getOHeaderBean(); + if (null != oHrmLvCreditHdrBean.getEmployeeNoId() && null != oHrmLvCreditHdrBean.getLeaveTypeId() && null != oHrmLvCreditHdrBean.getTxtNoOfDays()) { + oEnableList.add("butCreditLeaves"); + oEnableList.add("butQuery"); + } else { + oDisableList.add("butCreditLeaves"); + oDisableList.add("butQuery"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java new file mode 100644 index 0000000..402323e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java @@ -0,0 +1,334 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvEncashQVO; + +public class HrmLvEncashBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveEncashHdrMetaInfo((HrmLvEncashQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpLeaveEncashHdrInfo((HrmLvEncashQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + oDisableList.add("butDelete"); + if (!oHrmLvEncashHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("taxPercentage"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butSubmit"); + oEnableList.add("butEmpNo"); + oEnableList.add("butExecute"); + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getLevel())) { + if (oHrmLvEncashHdrBean.getLevel().equalsIgnoreCase("0")) { + oDisableList.add("taxPercentage"); + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + } else { + oEnableList.add("taxPercentage"); + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + } + } else { + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + } + oDisableList.add("butSubmit"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + oEnableList.add("butEmpNo"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butEmpNo"); + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getLevel())) { + if (oHrmLvEncashHdrBean.getLevel().equalsIgnoreCase("0")) { + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getChangeStatus())) + if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("N")) { + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oEnableList.add("butSubmit"); + oEnableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("A")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("taxPercentage"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("R")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("taxPercentage"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("P")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxPercentage"); + oDisableList.add("taxAmount"); + } + } else if (!oHrmLvEncashHdrBean.getLevel().equalsIgnoreCase("0")) { + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getChangeStatus())) + if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("N")) { + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("taxPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oEnableList.add("butSubmit"); + oEnableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("A")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("taxPercentage"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("R")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("taxPercentage"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("P")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + oDisableList.add("butSubmit"); + oEnableList.add("taxPercentage"); + oDisableList.add("taxAmount"); + } + } + } else { + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getChangeStatus())) + if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("N")) { + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("taxPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oEnableList.add("butSubmit"); + oEnableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("A")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("taxPercentage"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("R")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("taxPercentage"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("P")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } + oDisableList.add("taxPercentage"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveEncash((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmSecondFacade.rejectLvEncash((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butSubmit")) + sHeaderPrimaryKey = oHrmSecondFacade.submitLvEncash((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10) { + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvEncashHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvEncashHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvEncashHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvEncashHdrBean.setMiddleName(oName[1]); + oHrmLvEncashHdrBean.setLastName(oName[2]); + } else { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(" "); + } + oHrmLvEncashHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvEncashHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvEncashHdrBean.setDesignation(this.oUserInfo.getDesignation()); + } + if (oThisPageVO.getActionName() == 13) { + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvEncashHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvEncashHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvEncashHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvEncashHdrBean.setMiddleName(oName[1]); + oHrmLvEncashHdrBean.setLastName(oName[2]); + } else { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(" "); + } + oHrmLvEncashHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvEncashHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvEncashHdrBean.setDesignation(this.oUserInfo.getDesignation()); + } + if (oThisPageVO.getActionName() == 19) { + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvEncashHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvEncashHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvEncashHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvEncashHdrBean.setMiddleName(oName[1]); + oHrmLvEncashHdrBean.setLastName(oName[2]); + } else { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(" "); + } + oHrmLvEncashHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvEncashHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvEncashHdrBean.setDesignation(this.oUserInfo.getDesignation()); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java new file mode 100644 index 0000000..93a48b8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java @@ -0,0 +1,147 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvLedgerQVO; + +public class HrmLvLedgerBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmployeeLeaveLedger")) + return oHrmSecondFacade.getHrmLeaveLedgerDtlMetaInfo((HrmLvLedgerQVO)oBaseQueryVO); + return oHrmSecondFacade.getHrmLeaveLedgerTxnDtlMetaInfo((HrmLvLedgerQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmployeeLeaveLedger")) + return oHrmSecondFacade.getHrmLeaveLedgerDetailInfo((HrmLvLedgerQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return oHrmSecondFacade.getHrmLeaveLedgerTxnDetailInfo((HrmLvLedgerQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveLeaveLedger((HrmLvLedgerHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String groupStatus; + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butInsert"); + oDisableList.add("butSave"); + oDisableList.add("butDelete"); + oDisableList.add("butPrint"); + oDisableList.add("butHelp"); + HrmLvLedgerHdrBean oHrmLvLedgerHdrBean = (HrmLvLedgerHdrBean)oThisPageVO.getOHeaderBean(); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + groupStatus = oHrmSecondFacade.getGroupInfo(this.oUserInfo.getUserTypeId()); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRmtExcep) { + throw new EnrgiseSystemException(oRmtExcep); + } + if (EnrgiseUtil.checkString(groupStatus)) + if (groupStatus.equalsIgnoreCase("S")) { + oEnableList.add("butEmpCode"); + } else { + oDisableList.add("butEmpCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("butGetDtl2"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butExecute"); + oEnableList.add("butGetDtl2"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerHdrBean oHrmLvLedgerHdrBean = (HrmLvLedgerHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getActionName() == 10) { + oHrmLvLedgerHdrBean.setEmployeeNoId(this.oUserInfo.getUserTypeId()); + oHrmLvLedgerHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + oHrmLvLedgerHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } else if (oThisPageVO.getActionName() == 13) { + oHrmLvLedgerHdrBean.setEmployeeNoId(this.oUserInfo.getUserTypeId()); + oHrmLvLedgerHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + oHrmLvLedgerHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } else if (oThisPageVO.getActionName() == 19) { + oHrmLvLedgerHdrBean.setEmployeeNoId(this.oUserInfo.getUserTypeId()); + oHrmLvLedgerHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + oHrmLvLedgerHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvMstBD.java new file mode 100644 index 0000000..a3b5d59 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmLvMstBD.java @@ -0,0 +1,139 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvMstQVO; + +public class HrmLvMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveMasterHdrMetaInfo((HrmLvMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmLeaveMasterHeaderInfo((HrmLvMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveMasterDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveMasterDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmLeaveMst((HrmLvMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvMstHdrBean oHrmLvMstHdrBean = (HrmLvMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + oDisableList.add("butLeaveCode"); + if (!oHrmLvMstHdrBean.equals(null)) { + if (EnrgiseUtil.checkString(oHrmLvMstHdrBean.getEvidenceRequired())) + if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("on")) { + oEnableList.add("evidenceDescription"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("off")) { + oDisableList.add("evidenceDescription"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("")) { + oDisableList.add("evidenceDescription"); + } + if (EnrgiseUtil.checkString(oHrmLvMstHdrBean.getEncashable())) + if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("on")) { + oEnableList.add("encashableLimit"); + oEnableList.add("periodicity"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("off")) { + oDisableList.add("encashableLimit"); + oDisableList.add("periodicity"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("")) { + oDisableList.add("encashableLimit"); + oDisableList.add("periodicity"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + HrmLvMstHdrBean oHrmLvMstHdrBean = (HrmLvMstHdrBean)oThisPageVO.getOHeaderBean(); + if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("off")) + oHrmLvMstHdrBean.setEvidenceDescription(""); + if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("off")) { + oHrmLvMstHdrBean.setEncashableLimit(""); + oHrmLvMstHdrBean.setPeriodicity(""); + } + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java new file mode 100644 index 0000000..d5418d5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java @@ -0,0 +1,96 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; + +public class HrmMediclaimMasterBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMediclaimMasterHeaderMetaInfo((HrmMediclaimMasterQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmMediclaimMasterHeaderInfo((HrmMediclaimMasterQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMediclaimMasterDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMediclaimMasterDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmFacade.saveHrmMediclaimMaster((HrmMediclaimMasterHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMisReportBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMisReportBD.java new file mode 100644 index 0000000..c7c967f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMisReportBD.java @@ -0,0 +1,131 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmMisreportQVO; + +public class HrmMisReportBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getMisDataCount((HrmMisreportQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getMisDataInfo((HrmMisreportQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmMisData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmMisReportHdrBean oHrmMisReportHdrBean = (HrmMisReportHdrBean)oThisPageVO.getOHeaderBean(); + oEnableList.add("butQuery"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butHelp"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + if (EnrgiseUtil.checkString(oHrmMisReportHdrBean.getLocationCode())) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butGenRep")) + sHeaderPrimaryKey = String.valueOf(oHrmFacade.InsertData((HrmMisReportHdrBean)oBaseHeaderBean, oDetailBeanArray)); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMisReportHdrBean oHrmMisReportHdrBean = (HrmMisReportHdrBean)oThisPageVO.getOHeaderBean(); + String yearmonth = new String(); + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + yearmonth = oHrmFacade.getYearMonth(); + oHrmMisReportHdrBean.setTxtYearMonth(yearmonth); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRmtExcep) { + throw new EnrgiseSystemException(oRmtExcep); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java new file mode 100644 index 0000000..83de86a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java @@ -0,0 +1,136 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmMyWorkflowDtlBean; +import wenrgise.hrms.bean.HrmMyWorkflowHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; + +public class HrmMyWorkflowBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMyWorkflowHdrMetaInfo((HrmMyWorkflowQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmMyWorkflowHdrInfo((HrmMyWorkflowQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmMyWorkflow")) + return oHrmFacade.getHrmMyWorkflowDetailInfo(oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmMyWorkflow")) + return oHrmFacade.getHrmMyWorkflowDetailMetaInfo(oBaseQueryVO); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmMyWorkflowHdrBean oHrmMyWorkflowHdrBean = (HrmMyWorkflowHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + arylstDisab.add("butDelete"); + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelRow"); + arylstDisab.add("butAct"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + if (EnrgiseUtil.checkString(oHrmMyWorkflowHdrBean.getWorkflowType())) + if (oHrmMyWorkflowHdrBean.getWorkflowType().equalsIgnoreCase("W") && oHrmMyWorkflowHdrBean.getTxtStatus().equalsIgnoreCase("P")) { + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmMyWorkflow")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmMyWorkflowDtlBean oHrmMyWorkflowDtlBean = oIt.next(); + if (!oHrmMyWorkflowDtlBean.getStatus().equalsIgnoreCase("N")) + arylstEnab.add("butAct"); + } + } + } else { + arylstDisab.add("butAct"); + } + if (!oHrmMyWorkflowHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstDisab.add("butSave"); + arylstDisab.add("butId"); + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java new file mode 100644 index 0000000..441caad --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java @@ -0,0 +1,117 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; + +public class HrmOrgCalMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCalHeaderMetaInfo((HrmOrgCalMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmCalHeader((HrmOrgCalMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmCalendar((HrmOrgCalMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean = (HrmOrgCalMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmOrgCalMstHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("startMonth"); + oDisableList.add("duration"); + oDisableList.add("butDelete"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("startMonth"); + oEnableList.add("duration"); + oDisableList.add("butDelete"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java new file mode 100644 index 0000000..fbf6638 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java @@ -0,0 +1,104 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; + +public class HrmOrgClassDtlBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClassHeaderMetaInfo((HrmOrgClassDtlQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmClassHeader((HrmOrgClassDtlQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClassDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClassDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmOrgClassDtl((HrmOrgClassHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butDelete"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java new file mode 100644 index 0000000..40ff02e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java @@ -0,0 +1,126 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; + +public class HrmOrgCntryMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCountryHeaderMetaInfo((HrmOrgCntryMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmCountryHeader((HrmOrgCntryMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCountryDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCountryDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmCountry((HrmOrgCntryMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmOrgCntryMstHdrBean oHrmOrgCntryMstHdrBean = (HrmOrgCntryMstHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("butCountryCode"); + oDisableList.add("butDelete"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butCountryCode"); + oDisableList.add("butDelete"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butDelete"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java new file mode 100644 index 0000000..12121e9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java @@ -0,0 +1,104 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgDistMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmDistrictDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmDistrictDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmDistrict(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java new file mode 100644 index 0000000..53d9fb4 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java @@ -0,0 +1,129 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; + +public class HrmOrgHolCalBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolCalHeaderMetaInfo((HrmOrgHolCalQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmHolCalHeader((HrmOrgHolCalQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmHolCal((HrmOrgHolCalHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean = (HrmOrgHolCalHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getState())) { + oEnableList.add("butState"); + oEnableList.add("butSiteCode"); + } else { + oDisableList.add("butSiteCode"); + } + oDisableList.add("butCalName"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butState"); + oDisableList.add("butSiteCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oDisableList.add("butCalName"); + oEnableList.add("description"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butState"); + oDisableList.add("butSiteCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oEnableList.add("butCalName"); + oDisableList.add("description"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java new file mode 100644 index 0000000..0782620 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java @@ -0,0 +1,146 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; + +public class HrmOrgHolTypeMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolTypeHeaderMetaInfo((HrmOrgHolTypeMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmHolTypeHeader((HrmOrgHolTypeMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHolidayType((HrmOrgHolTypeMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean = (HrmOrgHolTypeMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmOrgHolTypeMstHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getMandatory())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("Y")) { + oEnableList.add("compensatoryLeave"); + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("N")) { + oEnableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("Y")) { + oDisableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("")) { + oDisableList.add("rewardPercentageOfBasic"); + } + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("N")) { + oDisableList.add("compensatoryLeave"); + oDisableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("")) { + oDisableList.add("compensatoryLeave"); + oDisableList.add("rewardPercentageOfBasic"); + } + oDisableList.add("butDelete"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getMandatory())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("Y")) { + oEnableList.add("compensatoryLeave"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("N")) { + oDisableList.add("compensatoryLeave"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("")) { + oDisableList.add("compensatoryLeave"); + } + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("N")) { + oEnableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("Y")) { + oDisableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("")) { + oDisableList.add("rewardPercentageOfBasic"); + } + oDisableList.add("butDelete"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean = (HrmOrgHolTypeMstHdrBean)oThisPageVO.getOHeaderBean(); + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("N")) { + oHrmOrgHolTypeMstHdrBean.setCompensatoryLeave("N"); + oHrmOrgHolTypeMstHdrBean.setRewardPercentageOfBasic(""); + } + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("Y")) + oHrmOrgHolTypeMstHdrBean.setRewardPercentageOfBasic(""); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java new file mode 100644 index 0000000..73a5a11 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java @@ -0,0 +1,139 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgIncrementDtlBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; + +public class HrmOrgIncrementBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmIncrHdrMetaInfo((HrmOrgIncrementQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmIncrHeaderInfo((HrmOrgIncrementQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmIncrDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmIncrDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmIncrement((HrmOrgIncrementHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean = (HrmOrgIncrementHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + oDisableList.add("butDelete"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butClsHdr"); + oDisableList.add("butClsDtl"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butClsHdr"); + oDisableList.add("butClsDtl"); + oDisableList.add("butStartDate"); + oDisableList.add("butRatingCode"); + if (EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getEndDate())) + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmOrgIncrement")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean = oIt.next(); + if (!oHrmOrgIncrementDtlBean.getStatus().equalsIgnoreCase("N")) + oHrmOrgIncrementDtlBean.setDisabtxtIncrement("true"); + } + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + if (EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getClsHdrId())) { + oDisableList.add("butClsHdr"); + oEnableList.add("butClsDtl"); + } else { + oEnableList.add("butClsHdr"); + oDisableList.add("butClsDtl"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java new file mode 100644 index 0000000..99b6286 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java @@ -0,0 +1,104 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgLangMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLanguageDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLanguageDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmLanguage(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java new file mode 100644 index 0000000..24354ad --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java @@ -0,0 +1,92 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgQualMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmQualificationDetailMetaInfo(); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmQualificationDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmQualification(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java new file mode 100644 index 0000000..26958e7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; + +public class HrmOrgRatingMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRatingHeaderMetaInfo((HrmOrgRatingMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmRatingHeader((HrmOrgRatingMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRatingDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRatingDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmRating((HrmOrgRatingMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butRatingHeaderCode"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java new file mode 100644 index 0000000..337818f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java @@ -0,0 +1,92 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgRelationMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRelationDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRelationDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmRelation(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java new file mode 100644 index 0000000..1ddf9af --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java @@ -0,0 +1,92 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgReligionMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRelDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmReligionDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmReligion(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java new file mode 100644 index 0000000..5153d43 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java @@ -0,0 +1,97 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; + +public class HrmOrgScaleMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmScaleHeaderMetaInfo((HrmOrgScaleMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmScaleHeader((HrmOrgScaleMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmScaleDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmScaleDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmScaleMst((HrmOrgScaleMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java new file mode 100644 index 0000000..49d9f2b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java @@ -0,0 +1,104 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; + +public class HrmOrgSkillMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSkillHeaderMetaInfo((HrmOrgSkillMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSkillHeader((HrmOrgSkillMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSkillDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSkillDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSkill((HrmOrgSkillMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butDelete"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java new file mode 100644 index 0000000..8d980f7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java @@ -0,0 +1,104 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgTehMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmTehsilDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmTehsilDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmTehsil(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java new file mode 100644 index 0000000..9b089fb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java @@ -0,0 +1,151 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; + +public class HrmOrgWorkGroupMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmOrgWorkGroupMstHeaderMetaInfo((HrmOrgWorkGroupMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmOrgWorkGroupMstHeader((HrmOrgWorkGroupMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmOrgWorkGroupMst((HrmOrgWorkGroupMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean = (HrmOrgWorkGroupMstHdrBean)oThisPageVO.getOHeaderBean(); + if (!oHrmOrgWorkGroupMstHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butDelete"); + oDisableList.add("code"); + oEnableList.add("butWorkGroupCode"); + oDisableList.add("name"); + oDisableList.add("butSiteCode"); + oDisableList.add("deptFlag"); + oDisableList.add("temporaryFlag"); + oDisableList.add("butCostCode"); + oDisableList.add("butContactEmployeeNo"); + oDisableList.add("phone"); + oDisableList.add("EMail"); + oDisableList.add("fax"); + oDisableList.add("textarea"); + oDisableList.add("refDocNo"); + oDisableList.add("butCreationDate"); + oDisableList.add("butDocumentDate"); + oDisableList.add("butEndDate"); + oDisableList.add("specialRemarks"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butDelete"); + oDisableList.add("code"); + oDisableList.add("butWorkGroupCode"); + oEnableList.add("name"); + oEnableList.add("butSiteCode"); + oEnableList.add("deptFlag"); + oEnableList.add("temporaryFlag"); + oEnableList.add("butCostCode"); + oEnableList.add("butContactEmployeeNo"); + oEnableList.add("phone"); + oEnableList.add("EMail"); + oEnableList.add("fax"); + oEnableList.add("textarea"); + oEnableList.add("refDocNo"); + oEnableList.add("butCreationDate"); + oEnableList.add("butDocumentDate"); + oEnableList.add("butEndDate"); + oEnableList.add("specialRemarks"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butDelete"); + oEnableList.add("code"); + oEnableList.add("name"); + oDisableList.add("butWorkGroupCode"); + oEnableList.add("butSiteCode"); + oEnableList.add("deptFlag"); + oEnableList.add("temporaryFlag"); + oEnableList.add("butCostCode"); + oEnableList.add("butContactEmployeeNo"); + oEnableList.add("phone"); + oEnableList.add("EMail"); + oEnableList.add("fax"); + oEnableList.add("textarea"); + oEnableList.add("refDocNo"); + oEnableList.add("butCreationDate"); + oEnableList.add("butDocumentDate"); + oEnableList.add("butEndDate"); + oEnableList.add("specialRemarks"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java new file mode 100644 index 0000000..e4f3941 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java @@ -0,0 +1,141 @@ +package wenrgise.hrms.businessdelegate; + +import java.lang.reflect.InvocationTargetException; +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import org.apache.commons.beanutils.BeanUtils; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; + +public class HrmPrmCriteriaBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oInfo = new RecordMetaInfo(); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + oInfo.setRecordCount(1L); + oInfo.setOWhenPicked(null); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + ArrayList oHeaderList = null; + HrmPrmCriteriaQVO oVo = (HrmPrmCriteriaQVO)oQueryVO; + HrmPrmCriteriaHdrBean oBean = new HrmPrmCriteriaHdrBean(); + BeanUtils.copyProperties(oBean, oVo); + oHeaderList.add(oBean); + return oHeaderList; + } catch (InvocationTargetException oEx) { + throw new EnrgiseSystemException(oEx); + } catch (IllegalAccessException oEx) { + throw new EnrgiseSystemException(oEx); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmCriteriaDetailMetaInfo((HrmPrmCriteriaQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmCriteriaDetailInfo((HrmPrmCriteriaQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmPrmCriteriaHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public void onLoadAction(ThisPageVO oThisPageVO) {} + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmPrmCriteriaHdrBean oHdrBean = (HrmPrmCriteriaHdrBean)oThisPageVO.getOHeaderBean(); + arylstEnab.add("butQuery"); + arylstDisab.add("butExecute"); + arylstDisab.add("butDelete"); + arylstDisab.add("butInsert"); + if (oThisPageVO.getScreenMode().equals("Q")) { + if (EnrgiseUtil.checkString(oHdrBean.getHeaderPrimaryKey())) { + arylstEnab.add("butToGrade"); + if (EnrgiseUtil.checkString(oHdrBean.getToGradeId()) && EnrgiseUtil.checkString(oHdrBean.getToDesigId())) { + arylstEnab.add("butGetDetail"); + } else { + arylstDisab.add("butGetDetail"); + } + } else { + arylstDisab.add("butToGrade"); + } + if (EnrgiseUtil.checkString(oHdrBean.getFromDesigId())) { + arylstEnab.add("butToDesig"); + } else { + arylstDisab.add("butToDesig"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java new file mode 100644 index 0000000..5cfa40c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java @@ -0,0 +1,107 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmExperienceHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; + +public class HrmPrmExperienceScoreBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return new RecordMetaInfo(); + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmPrmESData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oEnableList.add("butQuery"); + HrmPrmExperienceHdrBean oHdrBean = (HrmPrmExperienceHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") && EnrgiseUtil.checkString(oHdrBean.getGradeCode()) && EnrgiseUtil.checkString(oHdrBean.getDesigCode())) + oEnableList.add("butGetDetail"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + oEnableList.add("butSave"); + } + oDisableList.add("butExecute"); + oDisableList.add("butDelete"); + oDisableList.add("butInsert"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = oHrmSecondFacade.getHrmPrmESDtlMetaInfo((HrmPrmExperienceScoreQVO)oBaseQueryVO); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = oHrmSecondFacade.getHrmPrmESDtlInfo((HrmPrmExperienceScoreQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java new file mode 100644 index 0000000..7dc228b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java @@ -0,0 +1,73 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmPrmGenAssBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstEnab.add("butPrmID"); + arylstEnab.add("butSiteID"); + arylstDisab.add("butGenerate"); + arylstDisab.add("butInsert"); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + System.out.println("Data Save Successfully"); + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacadeLocal = oHome.create(); + sHeaderPrimaryKey = oHrmSecondFacadeLocal.savePrmGenAss(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java new file mode 100644 index 0000000..1daa4ce --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java @@ -0,0 +1,137 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmKPAPoswiseDtlBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; + +public class HrmPrmKPARatingBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getKPARatingHeaderMetaInfo((HrmPrmKPARatingQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getKPARatingHeaderInfo((HrmPrmKPARatingQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + if (sScreenName.equalsIgnoreCase("HrmPrmKPARating")) { + oRecordMetaInfo = oHrmSecondFacade.getPrmKPARatingPosDetailMetaInfo(lPrimaryKey); + } else { + oRecordMetaInfo = oHrmSecondFacade.getPrmKPARatingFinDetailMetaInfo(lPrimaryKey); + } + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = new ArrayList(); + if (sScreenName.equalsIgnoreCase("HrmPrmKPARating")) { + oDetailList = oHrmSecondFacade.getPrmKPARatingPosDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else { + oDetailList = oHrmSecondFacade.getPrmKPARatingFinDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmPrmKPARatingHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + int sCount = 0; + ArrayList oDetailList = new ArrayList(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + oDisableList.add("butRatingNo"); + if (oList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmPrmKPARating")) { + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean = oIt.next(); + if (!oHrmPrmKPAPoswiseDtlBean.getStatus().equalsIgnoreCase("N")) + oHrmPrmKPAPoswiseDtlBean.setDisabbutForPos("true"); + } + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java new file mode 100644 index 0000000..d96366b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java @@ -0,0 +1,135 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmNoticeDtlDtlBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; + +public class HrmPrmNoticeDtlBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmNoticeDtlHdrMetaInfo((HrmPrmNoticeDtlQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmPrmNoticeDtlHdrInfo((HrmPrmNoticeDtlQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + oRecordMetaInfo = oHrmSecondFacade.getNoticeDetailMetaInfo(lPrimaryKey); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = new ArrayList(); + oDetailList = oHrmSecondFacade.getPrmNoticeDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveNoticeDtlData((HrmPrmNoticeDtlHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + int sCount = 0; + if (oThisPageVO.getScreenMode().equals("N")) { + oEnableList.add("noticeNo"); + oEnableList.add("desc"); + oDisableList.add("butNoticeNo"); + } else if (oThisPageVO.getScreenMode().equals("U")) { + oDisableList.add("butNoticeNo"); + oDisableList.add("noticeNo"); + oEnableList.add("desc"); + oDisableList.add("butNoticeDate"); + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmPrmNoticeDtl")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = oIt.next(); + if (!oHrmPrmNoticeDtlDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmPrmNoticeDtlDtlBean.setDisabbutGrade("true"); + oHrmPrmNoticeDtlDtlBean.setDisabbutDesig("true"); + } + } + } + } else { + oDisableList.add("noticeNo"); + oDisableList.add("desc"); + oEnableList.add("butNoticeNo"); + oDisableList.add("butNoticeDate"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java new file mode 100644 index 0000000..b6824f7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java @@ -0,0 +1,115 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmOrderQVO; + +public class HrmPrmOrderBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPromOrderHdrMetaInfo((HrmPrmOrderQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmPromOrderHdr((HrmPrmOrderQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePromOrder((HrmPrmOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmPrmOrderHdrBean oHrmPrmOrderHdrBean = (HrmPrmOrderHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butToGrade"); + oDisableList.add("butToDesig"); + oDisableList.add("butEffecDate"); + oDisableList.add("butApprovedBy"); + oDisableList.add("remarks"); + oDisableList.add("orderNo"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butToGrade"); + oDisableList.add("butToDesig"); + oDisableList.add("butEffecDate"); + oDisableList.add("butApprovedBy"); + oDisableList.add("butOrderNo"); + oDisableList.add("butEmpNo"); + oDisableList.add("orderNo"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butOrderNo"); + if (EnrgiseUtil.checkString(oHrmPrmOrderHdrBean.getEmpId())) { + oEnableList.add("butToGrade"); + oEnableList.add("butToDesig"); + } else { + oDisableList.add("butToGrade"); + oDisableList.add("butToDesig"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java new file mode 100644 index 0000000..fd6fd94 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java @@ -0,0 +1,109 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmQualCriteriaHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; + +public class HrmPrmQualCriteriaBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePrmQualCriteriaDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oEnableList.add("butQuery"); + HrmPrmQualCriteriaHdrBean oHdrBean = (HrmPrmQualCriteriaHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") && EnrgiseUtil.checkString(oHdrBean.getGradeCode()) && EnrgiseUtil.checkString(oHdrBean.getDesigCode())) + oEnableList.add("butGetDetail"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + oEnableList.add("butSave"); + } + oDisableList.add("butExecute"); + oDisableList.add("butDelete"); + oDisableList.add("butInsert"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oRecordMetaInfo = oHrmSecondFacade.getPrmQualCriteriaDetailMetaInfo((HrmPrmQualCriteriaQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oAdvAttrDtl = new ArrayList(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oAdvAttrDtl = oHrmSecondFacade.getPrmQualCriteriaDetail((HrmPrmQualCriteriaQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return oAdvAttrDtl; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java new file mode 100644 index 0000000..12d5acb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java @@ -0,0 +1,122 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; + +public class HrmPrmTestScoreBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmTCHdrMetaInfo((HrmPrmTestScoreQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmPrmTCHdrInfo((HrmPrmTestScoreQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = oHrmSecondFacade.getHrmPrmTCDtlMetaInfo(lPrimaryKey); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = oHrmSecondFacade.getHrmPrmTCDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePrmTCData((HrmPrmTestScoreHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")); + if (sButtonName.equalsIgnoreCase("butReject")); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java new file mode 100644 index 0000000..9e4953e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java @@ -0,0 +1,131 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmViewAssHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmPrmViewAssBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oRecordMetaInfo = oHrmSecondFacade.getPrmViewAssDetailMetaInfo(lPrimaryKey, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oAdvAttrDtl = new ArrayList(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oAdvAttrDtl = oHrmSecondFacade.getPrmViewAssDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + return oAdvAttrDtl; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePrmViewAssDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmPrmViewAssHdrBean oHrmPrmViewAssHdrBean = (HrmPrmViewAssHdrBean)oBaseHeaderBean; + if (!EnrgiseUtil.checkString(oHrmPrmViewAssHdrBean.getPrmNo())) { + oDisableList.add("buttoPositionID"); + } else if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("S")) { + oEnableList.add("buttoPositionID"); + } + if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("S") && oThisPageVO.getODetailList() == null) + if (!EnrgiseUtil.checkString(oHrmPrmViewAssHdrBean.getToPosition())) { + oDisableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + } else { + oDisableList.add("butAddRow"); + oEnableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + oDisableList.add("butprmID"); + } + if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList().size() == 0) { + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("buttoPositionID"); + oDisableList.add("butprmID"); + oEnableList.add("butQuery"); + } + if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList().size() != 0) { + oDisableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oEnableList.add("butSave"); + oDisableList.add("butDelRow"); + oDisableList.add("buttoPositionID"); + oDisableList.add("butprmID"); + oEnableList.add("butQuery"); + } + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + oDisableList.add("butPrevHeader"); + oDisableList.add("butNextHeader"); + oDisableList.add("newPositionRequested"); + oDisableList.add("butJumpHeader"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java new file mode 100644 index 0000000..c6f580a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java @@ -0,0 +1,154 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecAdvAttrHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmRecAdvAttrBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLocVacencyDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecLocVacencyDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLngReqDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecLngReqDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrQualReqDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecQualReqDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrSkillReqDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecSkillReqDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrWorkExpDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecWorkExpDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrJobDesc")) { + oRecordMetaInfo = oHrmSecondFacade.getRecJobDescDetailMetaInfo(lPrimaryKey); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oAdvAttrDtl = new ArrayList(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLocVacencyDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecLocVacencyDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLngReqDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecLngReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrQualReqDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecQualReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrSkillReqDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecSkillReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrWorkExpDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecWorkExpDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrJobDesc")) { + oAdvAttrDtl = oHrmSecondFacade.getRecJobDescDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + return oAdvAttrDtl; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmRecAdvAttrDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmRecAdvAttrHdrBean oHrmRecAdvAttrHdrBean = (HrmRecAdvAttrHdrBean)oBaseHeaderBean; + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrHdrBean.getRefNo())) { + oDisableList.add("butPosition"); + } else if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("S")) { + oEnableList.add("butPosition"); + } + if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("S") && oThisPageVO.getODetailList() == null) + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrHdrBean.getDesgn())) { + oDisableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + } else { + oDisableList.add("butAddRow"); + oEnableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + } + if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList() == null) { + oEnableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("butrefNo"); + oDisableList.add("butPosition"); + oEnableList.add("butQuery"); + } + if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList() != null) { + oEnableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oEnableList.add("butSave"); + oEnableList.add("butDelRow"); + oDisableList.add("butrefNo"); + oDisableList.add("butPosition"); + oEnableList.add("butQuery"); + } + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + oDisableList.add("butPrevHeader"); + oDisableList.add("butNextHeader"); + oDisableList.add("newPositionRequested"); + oDisableList.add("butJumpHeader"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java new file mode 100644 index 0000000..1039f82 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java @@ -0,0 +1,132 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; + +public class HrmRecAdvtMtnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmRecAdvtHdrMetaInfo((HrmRecAdvtMtnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmRecAdvtHdrInfo((HrmRecAdvtMtnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = oHrmSecondFacade.getHrmRecAdvtDtlMetaInfo(lPrimaryKey); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = oHrmSecondFacade.getHrmRecAdvtDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveAdvtData((HrmRecAdvtMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean = (HrmRecAdvtMtnHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmRecAdvtMtnHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("minInterviewScore2"); + oDisableList.add("minInterviewScore3"); + oDisableList.add("venue"); + oDisableList.add("time"); + oDisableList.add("butDateWalkin"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + oEnableList.add("minInterviewScore2"); + oEnableList.add("minInterviewScore3"); + oEnableList.add("venue"); + oEnableList.add("time"); + oEnableList.add("butDateWalkin"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")); + if (sButtonName.equalsIgnoreCase("butReject")); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java new file mode 100644 index 0000000..b5b3c3c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java @@ -0,0 +1,391 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; + +public class HrmRecApplnMtnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmRecApplnMtnHdrMetaInfo((HrmRecApplnMtnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmRecApplnMtnHeaderInfo((HrmRecApplnMtnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) + return oHrmSecondFacade.getHrmRecApplnAddDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) + return oHrmSecondFacade.getHrmRecApplnLangDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) + return oHrmSecondFacade.getHrmRecApplnEduDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) + return oHrmSecondFacade.getHrmRecApplnExpDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) + return oHrmSecondFacade.getHrmRecApplnResultDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) + return oHrmSecondFacade.getHrmRecApplnOtherDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) + return oHrmSecondFacade.getHrmRecApplnRefMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) + return oHrmSecondFacade.getHrmRecApplnTrngDtlsMetaInfo(lPrimaryKey); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) + return oHrmSecondFacade.getHrmRecApplnAddDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) + return oHrmSecondFacade.getHrmRecApplnLangDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) + return oHrmSecondFacade.getHrmRecApplnEduDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) + return oHrmSecondFacade.getHrmRecApplnExpDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) + return oHrmSecondFacade.getHrmRecApplnResultDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) + return oHrmSecondFacade.getHrmRecApplnOtherDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) + return oHrmSecondFacade.getHrmRecApplnRef(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) + return oHrmSecondFacade.getHrmRecApplnTrngDtls(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + System.out.println(String.valueOf("header when picked=").concat(String.valueOf(oWhenPicked))); + System.out.println(String.valueOf("Detail when picked=").concat(String.valueOf(oDetailPicked))); + oWhenPicked = oDetailPicked; + System.out.println(oWhenPicked); + System.out.println(oDetailPicked); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) + return oHrmSecondFacade.saveHrmRecApplnAddDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) + return oHrmSecondFacade.saveHrmRecApplnExpDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) + return oHrmSecondFacade.saveHrmRecApplnEduDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) + return oHrmSecondFacade.saveHrmRecApplnLangDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) + return oHrmSecondFacade.saveHrmRecApplnOtherDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) + return oHrmSecondFacade.saveHrmRecApplnResultDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) + return oHrmSecondFacade.saveHrmRecApplnRef((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) + return oHrmSecondFacade.saveHrmRecApplnTrngDtls((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean = (HrmRecApplnMtnHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstDisab.add("applicationNo"); + arylstDisab.add("butApplicationDate"); + arylstDisab.add("butApplicationDate"); + arylstDisab.add("butReferenceNo"); + arylstDisab.add("applicantFirstName"); + arylstDisab.add("applicantMiddleName"); + arylstDisab.add("applicantLastName"); + arylstDisab.add("butApplForDesignation"); + arylstDisab.add("rollNo"); + if (oThisPageVO.getScreenName().equals("HrmRecApplnMtnAddDtl")) { + arylstDisab.add("guardianName"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("butNationality"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("sex"); + arylstDisab.add("relatedToEmp"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butRelatedEmp"); + arylstDisab.add("butReligion"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("healthRecord"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("appliedEarlier"); + arylstDisab.add("mail"); + arylstDisab.add("butReservationCategory"); + arylstDisab.add("prevEmpFlag"); + arylstDisab.add("prevEmpDtls"); + arylstDisab.add("hobbies"); + arylstDisab.add("grossExpected"); + arylstDisab.add("addlInfo"); + arylstDisab.add("butPresCountry"); + arylstDisab.add("butPresState"); + arylstDisab.add("presCity"); + arylstDisab.add("presAddress"); + arylstDisab.add("presPin"); + arylstDisab.add("presPhone"); + arylstDisab.add("butPermCountry"); + arylstDisab.add("butPermState"); + arylstDisab.add("permAddress"); + arylstDisab.add("permCity"); + arylstDisab.add("permAddress"); + arylstDisab.add("permPin"); + arylstDisab.add("permPhone"); + arylstDisab.add("passportNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("butExpiryDate"); + arylstDisab.add("butIssueDate"); + arylstDisab.add("butSubmissionDate"); + arylstDisab.add("chequeNo"); + arylstDisab.add("submittedAmount"); + arylstDisab.add("submissionDate"); + arylstDisab.add("arrestedBefore"); + arylstDisab.add("imprisonedBefore"); + arylstDisab.add("reasons"); + arylstDisab.add("prosecutedBefore"); + arylstDisab.add("finedByCourt"); + } + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstEnab.add("applicationNo"); + arylstDisab.add("butApplicationNo"); + arylstEnab.add("butApplicationDate"); + arylstEnab.add("butReferenceNo"); + arylstEnab.add("applicantFirstName"); + arylstEnab.add("applicantMiddleName"); + arylstEnab.add("applicantLastName"); + arylstDisab.add("rollNo"); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnHdrBean.getReferenceNo())) { + arylstDisab.add("butApplForDesignation"); + } else { + arylstEnab.add("butApplForDesignation"); + } + if (oThisPageVO.getScreenName().equals("HrmRecApplnMtnAddDtl")) { + arylstEnab.add("guardianName"); + arylstEnab.add("butDateOfBirth"); + arylstEnab.add("placeOfBirth"); + arylstEnab.add("butNationality"); + arylstEnab.add("butMaritalStatus"); + arylstEnab.add("sex"); + arylstEnab.add("relatedToEmp"); + arylstEnab.add("butMotherTongue"); + arylstEnab.add("butRelatedEmp"); + arylstEnab.add("butReligion"); + arylstEnab.add("handicappedFlag"); + arylstEnab.add("healthRecord"); + arylstEnab.add("bloodGroup"); + arylstEnab.add("appliedEarlier"); + arylstEnab.add("mail"); + arylstEnab.add("butReservationCategory"); + arylstEnab.add("prevEmpFlag"); + arylstEnab.add("prevEmpDtls"); + arylstEnab.add("hobbies"); + arylstEnab.add("grossExpected"); + arylstEnab.add("addlInfo"); + arylstEnab.add("butPresCountry"); + arylstEnab.add("butPresState"); + arylstEnab.add("presCity"); + arylstEnab.add("presAddress"); + arylstEnab.add("presPin"); + arylstEnab.add("presPhone"); + arylstEnab.add("butPermCountry"); + arylstEnab.add("butPermState"); + arylstEnab.add("permAddress"); + arylstEnab.add("permCity"); + arylstEnab.add("permAddress"); + arylstEnab.add("permPin"); + arylstEnab.add("permPhone"); + arylstEnab.add("passportNo"); + arylstEnab.add("placeOfIssue"); + arylstEnab.add("butExpiryDate"); + arylstEnab.add("butIssueDate"); + arylstEnab.add("butSubmissionDate"); + arylstEnab.add("chequeNo"); + arylstEnab.add("submittedAmount"); + arylstEnab.add("submissionDate"); + arylstEnab.add("arrestedBefore"); + arylstEnab.add("imprisonedBefore"); + arylstEnab.add("reasons"); + arylstEnab.add("prosecutedBefore"); + arylstEnab.add("finedByCourt"); + } + } + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("applicationNo"); + arylstDisab.add("butApplicationNo"); + arylstDisab.add("butApplicationDate"); + arylstDisab.add("butReferenceNo"); + arylstEnab.add("applicantFirstName"); + arylstEnab.add("applicantMiddleName"); + arylstEnab.add("applicantLastName"); + arylstDisab.add("rollNo"); + arylstDisab.add("butApplForDesignation"); + if (oThisPageVO.getScreenName().equals("HrmRecApplnMtnAddDtl")) + if (oThisPageVO.getODetailList() != null) { + arylstEnab.add("guardianName"); + arylstEnab.add("butDateOfBirth"); + arylstEnab.add("placeOfBirth"); + arylstEnab.add("butNationality"); + arylstEnab.add("butMaritalStatus"); + arylstEnab.add("sex"); + arylstEnab.add("relatedToEmp"); + arylstEnab.add("butMotherTongue"); + arylstEnab.add("butRelatedEmp"); + arylstEnab.add("butReligion"); + arylstEnab.add("handicappedFlag"); + arylstEnab.add("healthRecord"); + arylstEnab.add("bloodGroup"); + arylstEnab.add("appliedEarlier"); + arylstEnab.add("mail"); + arylstEnab.add("butReservationCategory"); + arylstEnab.add("prevEmpFlag"); + arylstEnab.add("prevEmpDtls"); + arylstEnab.add("hobbies"); + arylstEnab.add("grossExpected"); + arylstEnab.add("addlInfo"); + arylstEnab.add("butPresCountry"); + arylstEnab.add("butPresState"); + arylstEnab.add("presCity"); + arylstEnab.add("presAddress"); + arylstEnab.add("presPin"); + arylstEnab.add("presPhone"); + arylstEnab.add("butPermCountry"); + arylstEnab.add("butPermState"); + arylstEnab.add("permAddress"); + arylstEnab.add("permCity"); + arylstEnab.add("permAddress"); + arylstEnab.add("permPin"); + arylstEnab.add("permPhone"); + arylstEnab.add("passportNo"); + arylstEnab.add("placeOfIssue"); + arylstEnab.add("butExpiryDate"); + arylstEnab.add("butIssueDate"); + arylstEnab.add("butSubmissionDate"); + arylstEnab.add("chequeNo"); + arylstEnab.add("submittedAmount"); + arylstEnab.add("submissionDate"); + arylstEnab.add("arrestedBefore"); + arylstEnab.add("imprisonedBefore"); + arylstEnab.add("reasons"); + arylstEnab.add("prosecutedBefore"); + arylstEnab.add("finedByCourt"); + } else { + arylstDisab.add("guardianName"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("butNationality"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("sex"); + arylstDisab.add("relatedToEmp"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butRelatedEmp"); + arylstDisab.add("butReligion"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("healthRecord"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("appliedEarlier"); + arylstDisab.add("mail"); + arylstDisab.add("butReservationCategory"); + arylstDisab.add("prevEmpFlag"); + arylstDisab.add("prevEmpDtls"); + arylstDisab.add("hobbies"); + arylstDisab.add("grossExpected"); + arylstDisab.add("addlInfo"); + arylstDisab.add("butPresCountry"); + arylstDisab.add("butPresState"); + arylstDisab.add("presCity"); + arylstDisab.add("presAddress"); + arylstDisab.add("presPin"); + arylstDisab.add("presPhone"); + arylstDisab.add("butPermCountry"); + arylstDisab.add("butPermState"); + arylstDisab.add("permAddress"); + arylstDisab.add("permCity"); + arylstDisab.add("permAddress"); + arylstDisab.add("permPin"); + arylstDisab.add("permPhone"); + arylstDisab.add("passportNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("butExpiryDate"); + arylstDisab.add("butIssueDate"); + arylstDisab.add("butSubmissionDate"); + arylstDisab.add("chequeNo"); + arylstDisab.add("submittedAmount"); + arylstDisab.add("submissionDate"); + arylstDisab.add("arrestedBefore"); + arylstDisab.add("imprisonedBefore"); + arylstDisab.add("reasons"); + arylstDisab.add("prosecutedBefore"); + arylstDisab.add("finedByCourt"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java new file mode 100644 index 0000000..29da46d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java @@ -0,0 +1,146 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; + +public class HrmRecEmpRecCreationBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpRecCrtnHdrMetaInfo((HrmRecEmpRecCreationQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpRecCrtnHeaderInfo((HrmRecEmpRecCreationQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmRecEmpRecCreationHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstEnableList.add("butApplicationNo"); + arylstDisableList.add("butCountryOfficeAddress"); + arylstDisableList.add("butStateOfficeAddress"); + arylstDisableList.add("butAppointmentOrderDate"); + arylstDisableList.add("butCompanyJoiningDate"); + arylstDisableList.add("butLocationJoiningDate"); + arylstDisableList.add("butTentativeConfirmDate"); + arylstDisableList.add("butBaseSite"); + arylstDisableList.add("butGrade"); + arylstDisableList.add("butDesignation"); + arylstDisableList.add("butJoiningGroup"); + arylstDisableList.add("officeAddress"); + arylstDisableList.add("cityOfficeAddress"); + arylstDisableList.add("pinCodeOfficeAddress"); + arylstDisableList.add("appointmentOrder"); + arylstDisableList.add("phoneOfficeAddress"); + arylstDisableList.add("employeeType"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisableList.add("butApplicationNo"); + arylstEnableList.add("butCountryOfficeAddress"); + arylstEnableList.add("butStateOfficeAddress"); + arylstEnableList.add("butAppointmentOrderDate"); + arylstEnableList.add("butCompanyJoiningDate"); + arylstEnableList.add("butLocationJoiningDate"); + arylstEnableList.add("butTentativeConfirmDate"); + arylstEnableList.add("butBaseSite"); + arylstEnableList.add("butGrade"); + arylstEnableList.add("butDesignation"); + arylstEnableList.add("butJoiningGroup"); + arylstEnableList.add("officeAddress"); + arylstEnableList.add("cityOfficeAddress"); + arylstEnableList.add("pinCodeOfficeAddress"); + arylstEnableList.add("appointmentOrder"); + arylstEnableList.add("phoneOfficeAddress"); + arylstEnableList.add("employeeType"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisableList.add("butApplicationNo"); + arylstDisableList.add("butCountryOfficeAddress"); + arylstDisableList.add("butStateOfficeAddress"); + arylstDisableList.add("butAppointmentOrderDate"); + arylstDisableList.add("butCompanyJoiningDate"); + arylstDisableList.add("butLocationJoiningDate"); + arylstDisableList.add("butTentativeConfirmDate"); + arylstDisableList.add("butBaseSite"); + arylstDisableList.add("butGrade"); + arylstDisableList.add("butDesignation"); + arylstDisableList.add("butJoiningGroup"); + arylstDisableList.add("officeAddress"); + arylstDisableList.add("cityOfficeAddress"); + arylstDisableList.add("pinCodeOfficeAddress"); + arylstDisableList.add("appointmentOrder"); + arylstDisableList.add("phoneOfficeAddress"); + arylstDisableList.add("employeeType"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java new file mode 100644 index 0000000..e747153 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java @@ -0,0 +1,96 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; + +public class HrmRecScrutAppMntBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return new RecordMetaInfo(); + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.saveHrmRecScrutAppDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + int sCount = 0; + ArrayList oDetailList = new ArrayList(); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + oDisableList.add("butExecute"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmScrutAppMntnDetailMetaInfo((HrmRecScrutAppMntQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmScrutAppMntnDetailInfo((HrmRecScrutAppMntQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java new file mode 100644 index 0000000..2c989d5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java @@ -0,0 +1,115 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; + +public class HrmRecTestCentreMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTCMstHeaderMetaInfo((HrmRecTestCentreMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTCMstHeader((HrmRecTestCentreMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTCMst((HrmRecTestCentreMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + int sCount = 0; + ArrayList oDetailList = new ArrayList(); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butInsert"); + oDisableList.add("butSave"); + oDisableList.add("testCentreCode"); + oDisableList.add("testCentreName"); + oDisableList.add("phone"); + oDisableList.add("fax"); + oDisableList.add("address"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butExecute"); + oDisableList.add("butQuery"); + oEnableList.add("butInsert"); + oEnableList.add("butSave"); + oDisableList.add("testCentreCode"); + oDisableList.add("testCentreName"); + oDisableList.add("butTestCentreCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("butExecute"); + oEnableList.add("butQuery"); + oDisableList.add("butTestCentreCode"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java new file mode 100644 index 0000000..f606d66 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java @@ -0,0 +1,117 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRetireForecastHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmRetireForecastQVO; + +public class HrmRetireForecastBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.procGetRetireDataCount((HrmRetireForecastQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.procGetRetireDataInfo((HrmRetireForecastQVO)oQueryVO, lStartPosition, lLastPosition); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmRetireForecastData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmRetireForecastHdrBean oHrmRetireForecastHdrBean = (HrmRetireForecastHdrBean)oThisPageVO.getOHeaderBean(); + oEnableList.add("butQuery"); + oDisableList.add("butSave"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butHelp"); + if (!EnrgiseUtil.checkString(oHrmRetireForecastHdrBean.getFlag1())); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butInsertData"); + oDisableList.add("butViewReport"); + } else { + oDisableList.add("butInsertData"); + oEnableList.add("butViewReport"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.InsertData(oBaseHeaderBean); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java new file mode 100644 index 0000000..f9950c2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java @@ -0,0 +1,129 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; + +public class HrmRoasterEntryBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmRoasterHdrMetaInfo((HrmRoasterEntryQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmRoasterHdrInfo((HrmRoasterEntryQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRoasterEntry")) + return oHrmSecondFacade.getHrmRoasterEntryDetailMetaInfo(lPrimaryKey); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRoasterEntry")) + return oHrmSecondFacade.getHrmRoasterEntryDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + oWhenPicked = oDetailPicked; + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRoasterEntry")) + return oHrmSecondFacade.saveRoasterHdr((HrmRoasterEntryHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmRoasterEntryHdrBean oHrmRoasterEntryHdrBean = (HrmRoasterEntryHdrBean)oBaseHeaderBean; + if (!oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("txtRoasterDescription"); + oDisableList.add("txtRoasterCode"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java new file mode 100644 index 0000000..bd2ae6a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java @@ -0,0 +1,147 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepApplnQVO; + +public class HrmSepApplnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepApplnHdrMetaInfo((HrmSepApplnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepApplnHeaderInfo((HrmSepApplnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepApplnDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepApplnDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepAppln((HrmSepApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmSepApplnHdrBean oHrmSepApplnHdrBean = (HrmSepApplnHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butDateApplied"); + oDisableList.add("initiatedBy"); + oDisableList.add("butSepCat"); + oDisableList.add("butReqSepDate"); + oDisableList.add("imEffect"); + oDisableList.add("withFlag"); + oDisableList.add("reason"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butDateApplied"); + oDisableList.add("initiatedBy"); + oDisableList.add("butSepCat"); + oDisableList.add("butReqSepDate"); + oDisableList.add("butApplicationNo"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("employeeNo"); + oDisableList.add("withFlag"); + oDisableList.add("reason"); + oDisableList.add("imEffect"); + oDisableList.add("applicationNo"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butApplicationNo"); + if (EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getInitiatedBy())) { + oEnableList.add("butSepCat"); + } else { + oDisableList.add("butSepCat"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmFacade.approveSepAppln((HrmSepApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmFacade.rejectSepAppln((HrmSepApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java new file mode 100644 index 0000000..25f395d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java @@ -0,0 +1,83 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepCatMstQVO; + +public class HrmSepCatMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepCatMasterHdrMetaInfo((HrmSepCatMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepCatMasterHeaderInfo((HrmSepCatMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepCat((HrmSepCatMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java new file mode 100644 index 0000000..1a7c43a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java @@ -0,0 +1,123 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; + +public class HrmSepClrEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrEmpHdrMetaInfo((HrmSepClrEmpQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepClrEmpHdr((HrmSepClrEmpQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrEmpDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrEmpDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmSepClrEmpHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelRow"); + arylstDisab.add("butDelete"); + HrmSepClrEmpHdrBean oHdrBean = (HrmSepClrEmpHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("Q")) + arylstDisab.add("butTmplDesc"); + if (oThisPageVO.getScreenMode().equals("N")) { + if (oHdrBean.getEmpNo() == null) { + arylstDisab.add("butTmplDesc"); + } else { + arylstEnab.add("butTmplDesc"); + } + if (oHdrBean.getTmplDesc() != null) { + arylstDisab.add("butEmpNo"); + } else { + arylstEnab.add("butEmpNo"); + } + } + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("butTmplDesc"); + arylstDisab.add("butEmpNo"); + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java new file mode 100644 index 0000000..6dcf83c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java @@ -0,0 +1,99 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmSepClrLstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrLstDtlMetaInfo(); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrLstDetailInfo(lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepClrLstDetail(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + oEnableList.add("butGetDetail"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } + if (oThisPageVO.getScreenMode().equals("U") && oThisPageVO.getODetailList().size() == 0) { + oEnableList.add("butGetDetail"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } else if (oThisPageVO.getScreenMode().equals("U") && oThisPageVO.getODetailList().size() > 0) { + oDisableList.add("butGetDetail"); + oEnableList.add("butAddRow"); + oEnableList.add("butDelRow"); + oEnableList.add("butSave"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java new file mode 100644 index 0000000..72d8e20 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java @@ -0,0 +1,97 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; + +public class HrmSepClrTmplMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrTmplMstHdrMetaInfo((HrmSepClrTmplMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepClrTmplMstHdr((HrmSepClrTmplMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrTmplMstDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrTmplMstDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmSepClrTmplMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java new file mode 100644 index 0000000..b1cbec0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java @@ -0,0 +1,130 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepOrderDtlBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepOrderQVO; + +public class HrmSepOrderBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepOrderHdrMetaInfo((HrmSepOrderQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepOrderHdr((HrmSepOrderQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepOrderDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepOrderDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepOrder((HrmSepOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmSepOrderHdrBean oHrmSepOrderHdrBean = (HrmSepOrderHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butApprovedBy"); + oDisableList.add("remarks"); + oDisableList.add("butActSepDate"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butActSepDate"); + oDisableList.add("butApprovedBy"); + oDisableList.add("butApplicationNo"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + Iterator itrBean1 = oDetailBeanArray.iterator(); + HrmSepOrderDtlBean oHrmSepOrderDtlBean = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmFacade.approveSepOrder((HrmSepOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmFacade.rejectSepOrder((HrmSepOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSettleBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSettleBD.java new file mode 100644 index 0000000..7223998 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmSettleBD.java @@ -0,0 +1,94 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSettleQueryVO; + +public class HrmSettleBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSetHdrMetaInfo((HrmSettleQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmAdvSetHeaderInfo((HrmSettleQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSettleDetail(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSetDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSetDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java new file mode 100644 index 0000000..a22bc16 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java @@ -0,0 +1,97 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCalQVO; + +public class HrmTrngCalBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalHeaderMetaInfo((HrmTrngCalQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCalHeader((HrmTrngCalQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngCal((HrmTrngCalHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java new file mode 100644 index 0000000..d001996 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCalQVO; + +public class HrmTrngCalCloseBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalHeaderMetaInfo((HrmTrngCalQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCalHeader((HrmTrngCalQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butHelp"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public void calClose(String sButtonName, String sCalId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (sButtonName.equals("CalClose")) + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + oHrmSecondFacade.calendarClose(sCalId); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java new file mode 100644 index 0000000..dfdf858 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java @@ -0,0 +1,109 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; + +public class HrmTrngCrsBudBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsBudHeaderMetaInfo((HrmTrngCrsBudQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCrsBudHeader((HrmTrngCrsBudQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsBudDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsBudDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngCrsBud((HrmTrngCrsBudHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean = (HrmTrngCrsBudHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("approvedBudget"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oEnableList.add("approvedBudget"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + oEnableList.add("approvedBudget"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java new file mode 100644 index 0000000..5ba83c7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java @@ -0,0 +1,97 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; + +public class HrmTrngCrsMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsHeaderMetaInfo((HrmTrngCrsMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCrsHeader((HrmTrngCrsMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngcrsDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngCrs((HrmTrngCrsMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java new file mode 100644 index 0000000..59f1349 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java @@ -0,0 +1,117 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpAttDtlBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; + +public class HrmTrngEmpAttBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpAttHeaderMetaInfo((HrmTrngEmpAttQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngEmpAttHeader((HrmTrngEmpAttQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpAttDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpAttDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngEmpAtt((HrmTrngEmpAttHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oMap = new HashMap(); + ArrayList arylstDisbledFields = new ArrayList(); + ArrayList arylstEnabledFields = new ArrayList(); + arylstDisbledFields.add("butInsert"); + arylstDisbledFields.add("butAddRow"); + if (oThisPageVO.getODetailList() != null) { + Iterator oIt = oThisPageVO.getODetailList().iterator(); + while (oIt.hasNext()) { + HrmTrngEmpAttDtlBean oDtlBean = oIt.next(); + if (oDtlBean.getTxtAttendance().equals("Y")) { + oDtlBean.setDisabtxtReasonForAbsence("true"); + oDtlBean.setTxtReasonForAbsence(""); + continue; + } + oDtlBean.setDisabtxtReasonForAbsence("false"); + } + } + oMap.put("D", arylstDisbledFields); + oMap.put("E", arylstEnabledFields); + return oMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java new file mode 100644 index 0000000..06d13de --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java @@ -0,0 +1,123 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpFeedBackHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; + +public class HrmTrngEmpFeedBackBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpFbkHeaderMetaInfo((HrmTrngEmpFbkQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngEmpFbkHeader((HrmTrngEmpFbkQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpFdBkDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpFdBkDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmEmpFeedback(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmTrngEmpFeedBackHdrBean oHrmTrngEmpFeedBackHdrBean = (HrmTrngEmpFeedBackHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmTrngEmpFeedBackHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmTrngEmpFeedBackHdrBean.getStatusFlag())) { + System.out.println(oHrmTrngEmpFeedBackHdrBean.getStatusFlag()); + if (oHrmTrngEmpFeedBackHdrBean.getStatusFlag().equalsIgnoreCase("C")) { + arylstDisableList.add("txtCourseObjective"); + arylstDisableList.add("txtCourseDuration"); + arylstDisableList.add("txtCourseMaterial"); + arylstDisableList.add("txtSkillArea"); + arylstDisableList.add("txtInteraction"); + arylstDisableList.add("txtPresentation"); + arylstDisableList.add("txtDeliveryClarity"); + arylstDisableList.add("txtTrainingAids"); + arylstDisableList.add("txtTrainingArrangements"); + arylstDisableList.add("txtOverallRating"); + arylstDisableList.add("txtTopicsRelevant"); + arylstDisableList.add("txtTopicsIrrelevant"); + arylstDisableList.add("txtSuggestions"); + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java new file mode 100644 index 0000000..4147760 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpHistHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; + +public class HrmTrngEmpHistBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpHistHeaderMetaInfo((HrmTrngEmpHistQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngEmpHistHeader((HrmTrngEmpHistQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpHistDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpHistDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "no Save"; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oMap = new HashMap(); + ArrayList arylstDisbledFields = new ArrayList(); + ArrayList arylstEnabledFields = new ArrayList(); + arylstDisbledFields.add("butInsert"); + HrmTrngEmpHistHdrBean oHrmTrngEmpHistHdrBean = (HrmTrngEmpHistHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("Q")) + if (!EnrgiseUtil.checkString(oHrmTrngEmpHistHdrBean.getCalendarName())) { + arylstDisbledFields.add("butCourse"); + arylstDisbledFields.add("butEmpNo"); + } else { + arylstEnabledFields.add("butCourse"); + arylstEnabledFields.add("butEmpNo"); + } + oMap.put("D", arylstDisbledFields); + oMap.put("E", arylstEnabledFields); + return oMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java new file mode 100644 index 0000000..16f6a2f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java @@ -0,0 +1,275 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; + +public class HrmTrngEmpReqBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpTrngReqHeaderMetaInfo((HrmTrngEmpReqQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpTrngReqHeader((HrmTrngEmpReqQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpReqDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oMap = new HashMap(); + ArrayList arylstDisbledFields = new ArrayList(); + ArrayList arylstEnabledFields = new ArrayList(); + String groupStatus = new String(); + arylstDisbledFields.add("butAddRow"); + arylstDisbledFields.add("butDelRow"); + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + String sUserTypeId = this.oUserInfo.getUserTypeId(); + groupStatus = oHrmSecondFacade.getGroupInformation(sUserTypeId); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRmtExcep) { + throw new EnrgiseSystemException(oRmtExcep); + } + if (EnrgiseUtil.checkString(groupStatus)) + if (groupStatus.equalsIgnoreCase("S")) { + arylstEnabledFields.add("butEmployeeName"); + } else { + arylstDisbledFields.add("butEmployeeName"); + } + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstEnabledFields.add("nature"); + arylstEnabledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstEnabledFields.add("fullPart"); + arylstEnabledFields.add("butRecommender"); + arylstEnabledFields.add("butStartDate"); + arylstEnabledFields.add("butEndDate"); + arylstEnabledFields.add("butCourseName"); + if (EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getCourseId())) { + arylstEnabledFields.add("butTrainingCalendar"); + } else { + arylstDisbledFields.add("butTrainingCalendar"); + } + arylstEnabledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstEnabledFields.add("participation"); + } else if (oThisPageVO.getScreenMode().equals("U")) { + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("N")) { + arylstEnabledFields.add("nature"); + arylstEnabledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstEnabledFields.add("fullPart"); + arylstEnabledFields.add("butRecommender"); + arylstEnabledFields.add("butStartDate"); + arylstEnabledFields.add("butEndDate"); + arylstEnabledFields.add("butTrainingCalendar"); + arylstEnabledFields.add("butCourseName"); + arylstEnabledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstEnabledFields.add("participation"); + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstEnabledFields.add("butGetDetail"); + if (oThisPageVO.getODetailList() != null) { + arylstEnabledFields.add("butSubmit"); + } else { + arylstDisbledFields.add("butSubmit"); + } + } + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("A")) { + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("nature"); + arylstDisbledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstDisbledFields.add("fullPart"); + arylstDisbledFields.add("butRecommender"); + arylstDisbledFields.add("butStartDate"); + arylstDisbledFields.add("butEndDate"); + arylstDisbledFields.add("butTrainingCalendar"); + arylstDisbledFields.add("butCourseName"); + arylstDisbledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstDisbledFields.add("participation"); + } + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("P")) { + arylstEnabledFields.add("butApprove"); + arylstEnabledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("nature"); + arylstDisbledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstDisbledFields.add("fullPart"); + arylstDisbledFields.add("butRecommender"); + arylstDisbledFields.add("butStartDate"); + arylstDisbledFields.add("butEndDate"); + arylstDisbledFields.add("butTrainingCalendar"); + arylstDisbledFields.add("butCourseName"); + arylstDisbledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstDisbledFields.add("participation"); + } + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("R")) { + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("nature"); + arylstDisbledFields.add("purpose"); + arylstEnabledFields.add("rejectionRemarks"); + arylstDisbledFields.add("fullPart"); + arylstDisbledFields.add("butRecommender"); + arylstDisbledFields.add("butStartDate"); + arylstDisbledFields.add("butEndDate"); + arylstDisbledFields.add("butTrainingCalendar"); + arylstDisbledFields.add("butCourseName"); + arylstDisbledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstDisbledFields.add("participation"); + } + } + oMap.put("D", arylstDisbledFields); + oMap.put("E", arylstEnabledFields); + return oMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butSubmit")) + sHeaderPrimaryKey = oHrmSecondFacade.submitEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmSecondFacade.approveEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmSecondFacade.rejectEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10) { + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + oHrmTrngEmpReqHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmTrngEmpReqHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmTrngEmpReqHdrBean.setFirstName(oName[0]); + oHrmTrngEmpReqHdrBean.setMiddleName(oName[1]); + oHrmTrngEmpReqHdrBean.setLastName(oName[2]); + oHrmTrngEmpReqHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmTrngEmpReqHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmTrngEmpReqHdrBean.setLocation(this.oUserInfo.getSiteName()); + } + if (oThisPageVO.getActionName() == 13) { + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + oHrmTrngEmpReqHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmTrngEmpReqHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmTrngEmpReqHdrBean.setFirstName(oName[0]); + oHrmTrngEmpReqHdrBean.setMiddleName(oName[1]); + oHrmTrngEmpReqHdrBean.setLastName(oName[2]); + oHrmTrngEmpReqHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmTrngEmpReqHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmTrngEmpReqHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 19) { + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + oHrmTrngEmpReqHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmTrngEmpReqHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmTrngEmpReqHdrBean.setFirstName(oName[0]); + oHrmTrngEmpReqHdrBean.setMiddleName(oName[1]); + oHrmTrngEmpReqHdrBean.setLastName(oName[2]); + oHrmTrngEmpReqHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmTrngEmpReqHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmTrngEmpReqHdrBean.setLocation(this.oUserInfo.getSiteName()); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java new file mode 100644 index 0000000..e60f540 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java @@ -0,0 +1,140 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngFacQVO; + +public class HrmTrngFacBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacHeaderMetaInfo((HrmTrngFacQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmFacHeader((HrmTrngFacQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmFacMast((HrmTrngFacBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmTrngFacBean oHrmTrngFacBean = (HrmTrngFacBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oDisableList.add("experience"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + if (EnrgiseUtil.checkString(oHrmTrngFacBean.getFacultyType())) { + if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("I")) { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oEnableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oEnableList.add("experience"); + } else if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("E")) { + oEnableList.add("firstName"); + oEnableList.add("middleName"); + oEnableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oEnableList.add("butBaseInstitution"); + oEnableList.add("experience"); + } + } else { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oDisableList.add("experience"); + } + } else if (oThisPageVO.getScreenMode().equals("U")) { + if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("I")) { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oEnableList.add("experience"); + } else if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("E")) { + oEnableList.add("firstName"); + oEnableList.add("middleName"); + oEnableList.add("lastName"); + oEnableList.add("experience"); + oDisableList.add("butEmployeeNo"); + oEnableList.add("butBaseInstitution"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java new file mode 100644 index 0000000..ce19dd7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java @@ -0,0 +1,127 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngFacTrngDtlBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; + +public class HrmTrngFacTrngBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacTrngHeaderMetaInfo((HrmTrngFacTrngQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmFacTrngHeader((HrmTrngFacTrngQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacTrngDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacTrngCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmFacTrng((HrmTrngFacTrngHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstDisab = new ArrayList(); + ArrayList arylstDtlList = new ArrayList(); + arylstDisab.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + HrmTrngFacTrngHdrBean oHdrBean = (HrmTrngFacTrngHdrBean)oThisPageVO.getOHeaderBean(); + if (oHdrBean.getCourseStatus().equalsIgnoreCase("C")) { + arylstDtlList = oThisPageVO.getODetailList(); + if (arylstDtlList != null) { + Iterator itrDtlList = arylstDtlList.iterator(); + while (itrDtlList.hasNext()) { + HrmTrngFacTrngDtlBean oDtlBean = itrDtlList.next(); + oDtlBean.setDisabtxtAverageRating("true"); + oDtlBean.setDisabbutTxtFromDate("true"); + oDtlBean.setDisabbutTxtToDate("true"); + oDtlBean.setDisabtxtEndTime("true"); + oDtlBean.setDisabtxtFromDate("true"); + oDtlBean.setDisabtxtNameOfFaculty("true"); + oDtlBean.setDisabbutFaculty("true"); + oDtlBean.setDisabtxtStartTime("true"); + oDtlBean.setDisabtxtToDate("true"); + oDtlBean.setDisabtxtSkillArea("true"); + } + } + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelRow"); + } + } + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java new file mode 100644 index 0000000..4f9f8eb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java @@ -0,0 +1,107 @@ +package wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public class HrmTrngInsCrsBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngInsCrsHeaderMetaInfo((HrmTrngInsCrsQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngInsCrsHeader((HrmTrngInsCrsQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngInsCrsDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngInsCrsDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngInsCrs((HrmTrngInsCrsHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmTrngInsCrsHdrBean oHdrBean = (HrmTrngInsCrsHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("U") || oThisPageVO.getScreenMode().equals("N")) { + arylstEnab.add("city"); + } else { + arylstDisab.add("city"); + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnApplBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnApplBO.java new file mode 100644 index 0000000..fe596fd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnApplBO.java @@ -0,0 +1,650 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmATDDptnApplBO extends HrmBaseBO { + public HrmATDDptnApplBO() {} + + public HrmATDDptnApplBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpDeputAppHdrMetaInfo(HrmATDDptnApplQVO oHrmATDDptnApplQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDDptnApplQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDDptnApplQVO.getEmployeeNo())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDptnApplQVO.getApplnNo())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.proc_GetHrEmpDeputAppHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpDeputAppHeaderInfo(HrmATDDptnApplQVO oHrmATDDptnApplQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmATDDptnApplQVO == null) + oHrmATDDptnApplQVO = new HrmATDDptnApplQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDptnApplQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDDptnApplQVO.getEmployeeNo())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDDptnApplQVO.getApplnNo())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.proc_GetHrEmpDeputAppHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmDeputationApplicationHdrBean oDeputApplnHeader = new HrmDeputationApplicationHdrBean(); + oDeputApplnHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oDeputApplnHeader.setApplnNo(oRow.get("APPLICATION_NO").getString()); + oDeputApplnHeader.setDeputType(oRow.get("DEPUT_TYPE").getString()); + oDeputApplnHeader.setEmployeeNo(oRow.get("EMP_NO").getString()); + oDeputApplnHeader.setEmployeeNoId(oRow.get("E_PER_DTL_ID").getString()); + oDeputApplnHeader.setEmpName(oRow.get("EMPNAME").getString()); + oDeputApplnHeader.setAdvtNo(oRow.get("ADVT_NO").getString()); + oDeputApplnHeader.setSelfOfficeFlag(oRow.get("SELF_OFFICE_FLAG").getString()); + oDeputApplnHeader.setApplnDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oDeputApplnHeader.setAdvtDate(EnrgiseUtil.convertToString(oRow.get("ADVT_DATE").getDate())); + oDeputApplnHeader.setOrgName(oRow.get("ORG_NAME").getString()); + oDeputApplnHeader.setPostId(oRow.get("DEPUT_POST_ID").getString()); + oDeputApplnHeader.setPostCode(oRow.get("POST_CODE").getString()); + oDeputApplnHeader.setPostName(oRow.get("POST_NAME").getString()); + oDeputApplnHeader.setReason(oRow.get("REASON").getString()); + oDeputApplnHeader.setDeputStatus(oRow.get("APPROVED_FLAG").getString()); + arylstHeaderList.add(oDeputApplnHeader); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_DEPUT_APPL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmDeputApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.applnNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String sQuerySearch2 = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputApplnLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDeputEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.employeeNo"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.empName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputEmpNoILOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDeputEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.employeeNo"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.empName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputEmpNoQLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDeputAdvtNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.advtNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputAdvtLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("ADVT_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDeputPostNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.postCode"); + arylstHeaderList.add("hrm.HrmDeputationApplicn.postName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputPostLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmDeputationApplicationHdrBean oHrmDeputApplnHdrBean = (HrmDeputationApplicationHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmDeputApplnHdrBean.getEmployeeNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmDeputApplnHdrBean.getApplnNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmDeputApplnHdrBean.getApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmDeputApplnHdrBean.getDeputType())); + arylstParameters.add(new DBObject(6, 1, 12, "A")); + arylstParameters.add(new DBObject(7, 1, 12, oHrmDeputApplnHdrBean.getAdvtNo())); + arylstParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmDeputApplnHdrBean.getAdvtDate()))); + arylstParameters.add(new DBObject(9, 1, 12, oHrmDeputApplnHdrBean.getOrgName())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmDeputApplnHdrBean.getPostCode())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmDeputApplnHdrBean.getPostName())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmDeputApplnHdrBean.getReason())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(15, 1, 12, null)); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.proc_UpsertHrDeputAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmDeputApplnHdrBean.getEmployeeNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmDeputApplnHdrBean.getApplnNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmDeputApplnHdrBean.getApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmDeputApplnHdrBean.getDeputType())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmDeputApplnHdrBean.getDeputStatus())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmDeputApplnHdrBean.getAdvtNo())); + arylstParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmDeputApplnHdrBean.getAdvtDate()))); + arylstParameters.add(new DBObject(9, 1, 12, oHrmDeputApplnHdrBean.getOrgName())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmDeputApplnHdrBean.getPostCode())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmDeputApplnHdrBean.getPostName())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmDeputApplnHdrBean.getReason())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmDeputApplnHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.proc_UpsertHrDeputAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParameters.add(new DBObject(1, 1, 12, oHrmDeputApplnHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.proc_DeleteHrmEmpDeputAppHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmDeputationApplicationHdrBean oHrmDeputApplnHdrBean = (HrmDeputationApplicationHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkMandatoryHeader((HrmDeputationApplicationHdrBean)oBaseHeaderBean); + checkHeaderFields((HrmDeputationApplicationHdrBean)oBaseHeaderBean); + if (sScreenMode.equalsIgnoreCase("N")); + } + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sRefId = oCommonBO.getRefList("HRM_EMP_DEPUT_ORDER_DTL", "DEPUT_APPL_ID ", oHrmDeputApplnHdrBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId)) + oErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + if (!oHrmDeputApplnHdrBean.getDeputStatus().equalsIgnoreCase("N")) + if (oErrorList.isEmpty()) + oErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getApplnNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationApplicn.applnNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getApplnDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationApplicn.applnDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getDeputType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationApplicn.deputType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getReason())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationApplicn.reason"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getEmployeeNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationApplicn.employeeNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("F") || oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("O")) + if (!EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getOrgName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationApplicn.orgName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase(null)) + if (!EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getAdvtDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationApplicn.advtDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkHeaderFields(HrmDeputationApplicationHdrBean oHrmDeputApplnHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstList1 = new ArrayList(); + if (!oHrmDeputApplnHdrBean.getDeputType().equalsIgnoreCase("W")) + if (!EnrgiseUtil.checkString(oHrmDeputApplnHdrBean.getOrgName())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.common.header.mandatoryfieldmissing")); + reportError(arylstList1); + if (EnrgiseUtil.checkString(oHrmDeputApplnHdrBean.getAdvtNo())) + if (!EnrgiseUtil.checkString(oHrmDeputApplnHdrBean.getAdvtDate())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.common.header.mandatoryfieldmissing")); + reportError(arylstList1); + } + + public String submitDeputAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean = (HrmDeputationApplicationHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.procSubmitDeputAppln(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String approveDeputAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean = (HrmDeputationApplicationHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.procApproveDeputAppln(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectDeputAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean = (HrmDeputationApplicationHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPDEPUTAPP.procRejectDeputAppln(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean = (HrmDeputationApplicationHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmDeputationApplicationHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Deputation"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("DeputationAppln"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Deputation Application No:").concat(String.valueOf(oHrmDeputationApplicationHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmDeputationApplicationHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Deputation Application No:").concat(String.valueOf(oHrmDeputationApplicationHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Deputation Application No:").concat(String.valueOf(oHrmDeputationApplicationHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnChrgRptBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnChrgRptBO.java new file mode 100644 index 0000000..a87c487 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnChrgRptBO.java @@ -0,0 +1,681 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmATDDptnChrgRptBO extends HrmBaseBO { + public HrmATDDptnChrgRptBO() {} + + public HrmATDDptnChrgRptBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmDeputChargeRepHdrMetaInfo(HrmATDDptnChrgRptQVO oHrmATDDptnChrgRptQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDDptnChrgRptQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDDptnChrgRptQVO.getDptOrderNo())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDptnChrgRptQVO.getEmpId())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNCHARGEREPORT.proc_HrmDeputChargeRepHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmDeputChargeRepHeaderInfo(HrmATDDptnChrgRptQVO oHrmATDDptnChrgRptQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmATDDptnChrgRptQVO == null) + oHrmATDDptnChrgRptQVO = new HrmATDDptnChrgRptQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDptnChrgRptQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDDptnChrgRptQVO.getDptOrderNo())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDDptnChrgRptQVO.getEmpId())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNCHARGEREPORT.proc_HrmDeputChargeRepHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmATDDeputChrgRptHdrBean oDeputChargeRepHeader = new HrmATDDeputChrgRptHdrBean(); + oDeputChargeRepHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oDeputChargeRepHeader.setDptOrderNoId(oRow.get("DEPUT_HDR_ID").getString()); + oDeputChargeRepHeader.setChargeType(oRow.get("CHARGE_TYPE").getString()); + oDeputChargeRepHeader.setChargeCode(oRow.get("CHARGE_CODE").getString()); + oDeputChargeRepHeader.setNoonFlag(oRow.get("FNOON_ANOON_FLAG").getString()); + oDeputChargeRepHeader.setRemarks(oRow.get("HANDOVER_REMARKS").getString()); + oDeputChargeRepHeader.setChargeStatus(oRow.get("APPROVAL_FLAG").getString()); + oDeputChargeRepHeader.setHandOverDate(EnrgiseUtil.convertToString(oRow.get("HANDOVER_DATE").getDate())); + oDeputChargeRepHeader.setDeputationDate(EnrgiseUtil.convertToString(oRow.get("DEPUTN_ORDER_DATE").getDate())); + oDeputChargeRepHeader.setEmpName(oRow.get("EMPNAME").getString()); + oDeputChargeRepHeader.setEmpId(oRow.get("E_PER_DTL_ID").getString()); + oDeputChargeRepHeader.setDptOrderNo(oRow.get("DEPUTN_ORDER_NO").getString()); + oDeputChargeRepHeader.setFromSiteCode(oRow.get("FROM_SITE_NAME").getString()); + oDeputChargeRepHeader.setFromWorkGroupCode(oRow.get("FROM_WRKGRP_NAME").getString()); + oDeputChargeRepHeader.setToSiteCode(oRow.get("TO_SITE_NAME").getString()); + oDeputChargeRepHeader.setToWorkGroupCode(oRow.get("TO_WRKGRP_NAME").getString()); + oDeputChargeRepHeader.setFromSiteId(oRow.get("FROM_SITE_ID").getString()); + oDeputChargeRepHeader.setFromWrkGrpId(oRow.get("FROM_WRKGRP_ID").getString()); + oDeputChargeRepHeader.setToSiteId(oRow.get("TO_SITE_ID").getString()); + oDeputChargeRepHeader.setToWrkGrpId(oRow.get("TO_WRKGRP_ID").getString()); + oDeputChargeRepHeader.setDepOrdrDtlId(oRow.get("DEPUT_ORDER_DTL_ID").getString()); + arylstHeaderList.add(oDeputChargeRepHeader); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_CHARGE_REPORT"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public LovVO getHrmDepChrgOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.dptOrderNo"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.empName"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.chargeType"); + arylstHeaderList.add("hrm.HrmChargeReport.fromWorkGroupCode"); + arylstHeaderList.add("hrm.HrmChargeReport.toWorkGroupCode"); + arylstHeaderList.add("hrm.HrmChargeReport.fromSiteCode"); + arylstHeaderList.add("hrm.HrmChargeReport.toSiteCode"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.deputationDate"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.depOrdrDtlId"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("empId") != null) { + empId = oLovQueryVO.getProperty("empId"); + System.out.println(empId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, empId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNCHARGELOV.proc_GetHrmChrgDeputNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DEPUTN_ORDER_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + if (String.valueOf(oRow.get("CHARGE_TYPE").getString()).equalsIgnoreCase("H")) { + oLOVBean.setDetailField4("T"); + } else if (String.valueOf(oRow.get("CHARGE_TYPE").getString()).equalsIgnoreCase("null")) { + oLOVBean.setDetailField4("H"); + } else if (String.valueOf(oRow.get("CHARGE_TYPE").getString()).equalsIgnoreCase("T")) { + oLOVBean.setDetailField4("H"); + } + oLOVBean.setDetailField5(oRow.get("FROM_WRKGRP_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("TO_WRKGRP_NAME").getString()); + oLOVBean.setDetailField7(oRow.get("FROM_SITE_NAME").getString()); + oLOVBean.setDetailField8(oRow.get("TO_SITE_NAME").getString()); + oLOVBean.setDetailField9(EnrgiseUtil.convertToString(oRow.get("DEPUTN_ORDER_DATE").getDate())); + oLOVBean.setDetailField10(oRow.get("DEPUT_DTL_ID").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDepChrgOrderNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Id"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.dptOrderNo"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.empName"); + arylstHeaderList.add("chargeType"); + arylstHeaderList.add("hrm.HrmChargeReport.fromWorkGroupCode"); + arylstHeaderList.add("hrm.HrmChargeReport.toWorkGroupCode"); + arylstHeaderList.add("hrm.HrmChargeReport.fromSiteCode"); + arylstHeaderList.add("hrm.HrmChargeReport.toSiteCode"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.deputationDate"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.depOrdrDtlId"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("empId") != null) { + empId = oLovQueryVO.getProperty("empId"); + System.out.println(empId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, empId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNCHARGELOV.proc_GetHrmChrgDeputNoQLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DEPUTN_ORDER_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(oRow.get("CHARGE_TYPE").getString()); + oLOVBean.setDetailField5(oRow.get("FROM_WRKGRP_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("TO_WRKGRP_NAME").getString()); + oLOVBean.setDetailField7(oRow.get("FROM_SITE_NAME").getString()); + oLOVBean.setDetailField8(oRow.get("TO_SITE_NAME").getString()); + oLOVBean.setDetailField9(EnrgiseUtil.convertToString(oRow.get("DEPUTN_ORDER_DATE").getDate())); + oLOVBean.setDetailField10(oRow.get("DEPUT_DTL_ID").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDepChrgCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputChargeReport.chargeCode"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String dptOrderNoId = null; + String chargeType = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNCHARGELOV.proc_GetHrmDeputChrgCdLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CHARGE_CODE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String sSiteId = new String(); + String sWorkGroupId = new String(); + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDDeputChrgRptHdrBean.getDepOrdrDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDeputChrgRptHdrBean.getChargeType())); + System.out.println(oHrmATDDeputChrgRptHdrBean.getChargeType()); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDDeputChrgRptHdrBean.getChargeCode())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputChrgRptHdrBean.getHandOverDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmATDDeputChrgRptHdrBean.getNoonFlag())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmATDDeputChrgRptHdrBean.getRemarks())); + if (oHrmATDDeputChrgRptHdrBean.getChargeType().equalsIgnoreCase("H")) { + sSiteId = oHrmATDDeputChrgRptHdrBean.getFromSiteId(); + sWorkGroupId = oHrmATDDeputChrgRptHdrBean.getFromWrkGrpId(); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeType().equalsIgnoreCase("T")) { + sSiteId = oHrmATDDeputChrgRptHdrBean.getToSiteId(); + sWorkGroupId = oHrmATDDeputChrgRptHdrBean.getToWrkGrpId(); + } + arylstParameters.add(new DBObject(8, 1, 12, sWorkGroupId)); + arylstParameters.add(new DBObject(9, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(10, 1, 12, "A")); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(13, 1, 12, null)); + arylstParameters.add(new DBObject(14, 2, 12)); + arylstParameters.add(new DBObject(15, 2, 12)); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNCHARGEREPORT.proc_UpsertHrDeputChrgRptHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDDeputChrgRptHdrBean.getDepOrdrDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDeputChrgRptHdrBean.getChargeType())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDDeputChrgRptHdrBean.getChargeCode())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputChrgRptHdrBean.getHandOverDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmATDDeputChrgRptHdrBean.getNoonFlag())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmATDDeputChrgRptHdrBean.getRemarks())); + if (oHrmATDDeputChrgRptHdrBean.getChargeType().equalsIgnoreCase("H")) { + sSiteId = oHrmATDDeputChrgRptHdrBean.getFromSiteId(); + sWorkGroupId = oHrmATDDeputChrgRptHdrBean.getFromWrkGrpId(); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeType().equalsIgnoreCase("T")) { + sSiteId = oHrmATDDeputChrgRptHdrBean.getToSiteId(); + sWorkGroupId = oHrmATDDeputChrgRptHdrBean.getToWrkGrpId(); + } + arylstParameters.add(new DBObject(8, 1, 12, sWorkGroupId)); + arylstParameters.add(new DBObject(9, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(10, 1, 12, oHrmATDDeputChrgRptHdrBean.getChargeStatus())); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmATDDeputChrgRptHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(14, 2, 12)); + arylstParameters.add(new DBObject(15, 2, 12)); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNCHARGEREPORT.proc_UpsertHrDeputChrgRptHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + + } + updateTables((HrmATDDeputChrgRptHdrBean)oBaseHeaderBean); + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmATDDeputChrgRptHdrBean)oBaseHeaderBean); + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getDptOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputChargeReport.dptOrderNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getChargeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputChargeReport.chargeCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + private void checkDatesConstraint(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getHandOverDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmATDDeputChrgRptHdrBean.getHandOverDate(), oHrmATDDeputChrgRptHdrBean.getDeputationDate()); + if (iDateFlag == -1 && iDateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) + checkDatesConstraint((HrmATDDeputChrgRptHdrBean)oBaseHeaderBean, oErrorList); + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + if (!oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("N")) + if (oErrorList.isEmpty()) + oErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + } + reportError(oErrorList); + } + + public String approveDeputChrgRpt(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oBaseHeaderBean; + updateTables((HrmATDDeputChrgRptHdrBean)oBaseHeaderBean); + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMDEPTNCHARGEREPORT.procApproveDeputChrgRpt(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String submitDeputChrgRpt(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMDEPTNCHARGEREPORT.procSubmitDeputChrgRpt(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectDeputChrgRpt(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMDEPTNCHARGEREPORT.procRejectDeputChrgRpt(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + private void updateTables(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean) throws EnrgiseSystemException { + String sEmpId = oHrmATDDeputChrgRptHdrBean.getEmpId(); + String sFromSiteId = oHrmATDDeputChrgRptHdrBean.getFromSiteId(); + String sBaseSiteId = oHrmATDDeputChrgRptHdrBean.getToSiteId(); + String sTransferDate = oHrmATDDeputChrgRptHdrBean.getDeputationDate(); + String sHandOverDate = oHrmATDDeputChrgRptHdrBean.getHandOverDate(); + String sFromWrkGrpId = oHrmATDDeputChrgRptHdrBean.getFromWrkGrpId(); + String sToWrkGrpId = oHrmATDDeputChrgRptHdrBean.getToWrkGrpId(); + if (oHrmATDDeputChrgRptHdrBean.getDeputType().equalsIgnoreCase("W")) + if (oHrmATDDeputChrgRptHdrBean.getChargeType().equalsIgnoreCase("H")) { + DBUtilitiesBean oBean1 = null; + oBean1 = new DBUtilitiesBean(); + ArrayList arylstParameters1 = new ArrayList(); + arylstParameters1 = new ArrayList(); + arylstParameters1.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters1.add(new DBObject(2, 1, 12, sBaseSiteId)); + arylstParameters1.add(new DBObject(3, 2, 12)); + arylstParameters1.add(new DBObject(4, 2, 12)); + arylstParameters1.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray1 = oBean1.callProc(arylstParameters1, "HRMCHARGEREPORT.procUpdateHrmEmpPers(?,?,?,?,?)"); + DBUtilitiesBean oBean2 = null; + oBean2 = new DBUtilitiesBean(); + String sWrkGrpId = new String(); + if (sToWrkGrpId != null) { + sWrkGrpId = sToWrkGrpId; + } else { + sWrkGrpId = sFromWrkGrpId; + } + ArrayList arylstParameters2 = new ArrayList(); + arylstParameters2 = new ArrayList(); + arylstParameters2.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters2.add(new DBObject(2, 1, 12, sBaseSiteId)); + arylstParameters2.add(new DBObject(3, 1, 12, sHandOverDate)); + arylstParameters2.add(new DBObject(4, 1, 12, sWrkGrpId)); + arylstParameters2.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters2.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters2.add(new DBObject(7, 2, 12)); + arylstParameters2.add(new DBObject(8, 2, 12)); + arylstParameters2.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray2 = oBean2.callProc(arylstParameters2, "HRMCHARGEREPORT.procUpsertHrmWrkGrpDtl(?,?,?,?,?,?,?,?,?)"); + DBUtilitiesBean oBean3 = null; + oBean3 = new DBUtilitiesBean(); + ArrayList arylstParameters3 = new ArrayList(); + arylstParameters3.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters3.add(new DBObject(2, 1, 12, sFromSiteId)); + arylstParameters3.add(new DBObject(3, 1, 12, sBaseSiteId)); + arylstParameters3.add(new DBObject(4, 1, 12, sTransferDate)); + arylstParameters3.add(new DBObject(5, 1, 12, sHandOverDate)); + arylstParameters3.add(new DBObject(6, 1, 12, sFromWrkGrpId)); + arylstParameters3.add(new DBObject(7, 1, 12, sToWrkGrpId)); + arylstParameters3.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters3.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters3.add(new DBObject(10, 2, 12)); + arylstParameters3.add(new DBObject(11, 2, 12)); + arylstParameters3.add(new DBObject(12, 2, 4)); + ArrayList arrayList1 = oBean3.callProc(arylstParameters3, "HRMCHARGEREPORT.procUpsertHrmEmpIncr(?,?,?,?,?,?,?,?,?,?,?,?)"); + } + if (!oHrmATDDeputChrgRptHdrBean.getDeputType().equalsIgnoreCase("W")) { + DBUtilitiesBean oBean5 = null; + oBean5 = new DBUtilitiesBean(); + String sWrkGrpId = new String(); + if (sToWrkGrpId != null) { + sWrkGrpId = sToWrkGrpId; + } else { + sWrkGrpId = sFromWrkGrpId; + } + ArrayList arylstParameters5 = new ArrayList(); + arylstParameters5 = new ArrayList(); + arylstParameters5.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters5.add(new DBObject(2, 1, 12, sBaseSiteId)); + arylstParameters5.add(new DBObject(3, 1, 12, sHandOverDate)); + arylstParameters5.add(new DBObject(4, 1, 12, sWrkGrpId)); + arylstParameters5.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters5.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters5.add(new DBObject(7, 2, 12)); + arylstParameters5.add(new DBObject(8, 2, 12)); + arylstParameters5.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray5 = oBean5.callProc(arylstParameters5, "HRMDEPTNCHARGEREPORT.procUpsertHrmWrkGrpDtl(?,?,?,?,?,?,?,?,?)"); + DBUtilitiesBean oBean7 = null; + oBean7 = new DBUtilitiesBean(); + ArrayList arylstParameters7 = new ArrayList(); + arylstParameters7 = new ArrayList(); + arylstParameters7.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters7.add(new DBObject(2, 1, 12, sBaseSiteId)); + arylstParameters7.add(new DBObject(3, 2, 12)); + arylstParameters7.add(new DBObject(4, 2, 12)); + arylstParameters7.add(new DBObject(5, 2, 4)); + ArrayList arrayList1 = oBean7.callProc(arylstParameters7, "HRMDEPTNCHARGEREPORT.procUpdateEmpTypeHrmEmpPers(?,?,?,?,?)"); + } + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmATDDeputChrgRptHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Deputation"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("DeputChrgRpt"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Deputation Charge Report No:").concat(String.valueOf(oHrmATDDeputChrgRptHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmATDDeputChrgRptHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Deputation Charge Report No:").concat(String.valueOf(oHrmATDDeputChrgRptHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Deputation Application No:").concat(String.valueOf(oHrmATDDeputChrgRptHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnOrderForSingleEmpBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnOrderForSingleEmpBO.java new file mode 100644 index 0000000..7223100 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDDptnOrderForSingleEmpBO.java @@ -0,0 +1,634 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmATDDptnOrderForSingleEmpBO extends HrmBaseBO { + public HrmATDDptnOrderForSingleEmpBO() {} + + public HrmATDDptnOrderForSingleEmpBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_DEPUT_ORDER_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList arylstParam6, boolean param7, Timestamp param8) {} + + private void checkHeaderFields(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException {} + + public RecordMetaInfo getHrmDeputOrderSngEmpHdrMetaInfo(HrmATDDptnOrderSingleEmpQVO oHrmATDDptnOrderSingleEmpQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + if (EnrgiseUtil.checkString(oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey().split(","); + oHrmATDDptnOrderSingleEmpQVO.setHeaderPrimaryKey(sPrimaryKey[0]); + oHrmATDDptnOrderSingleEmpQVO.setHeaderPrimaryKey1(sPrimaryKey[1]); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getOrderNo())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getApplnNo())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getEmployeeNoId())); + arylstParameters.add(new DBObject(6, 2, -5)); + arylstParameters.add(new DBObject(7, 2, 93)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.proc_HrmEmpDeptnOrdHdrCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmDeputOrderSngEmpHeaderInfo(HrmATDDptnOrderSingleEmpQVO oHrmATDDptnOrderSingleEmpQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmATDDptnOrderSingleEmpQVO == null) + oHrmATDDptnOrderSingleEmpQVO = new HrmATDDptnOrderSingleEmpQVO(); + if (EnrgiseUtil.checkString(oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey().split(","); + oHrmATDDptnOrderSingleEmpQVO.setHeaderPrimaryKey(sPrimaryKey[0]); + oHrmATDDptnOrderSingleEmpQVO.setHeaderPrimaryKey1(sPrimaryKey[1]); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getOrderNo())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getApplnNo())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmATDDptnOrderSingleEmpQVO.getEmployeeNoId())); + arylstParameters.add(new DBObject(8, 2, -10)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.proc_HrmEmpDeptnOrdSngEmpHdr(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = new HrmATDDeputOrderSngEmpHdrBean(); + oHrmATDDeputOrderSngEmpHdrBean.setApplnNoId(oRow.get("APP_ID").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setApplnNo(oRow.get("APPLICATION_NO").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setApplicationDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmATDDeputOrderSngEmpHdrBean.setEmployeeName(oRow.get("EMPNAME").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setToOrg(oRow.get("ORG_NAME").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setToPost(oRow.get("POST_NAME").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setOrderNo(oRow.get("DEPUTN_ORDER_NO").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setOrderDate(EnrgiseUtil.convertToString(oRow.get("DEPUTN_ORDER_DATE").getDate())); + oHrmATDDeputOrderSngEmpHdrBean.setHeaderPrimaryKey(oRow.get("DEPUT_ORDER_HDR_ID").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setDeputType(oRow.get("DEPUTN_ORDER_TYPE").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setOrderStatus(oRow.get("APPROVED_FLAG").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setDeptnEffectDate(EnrgiseUtil.convertToString(oRow.get("DEPUTN_EFFECT_DATE").getDate())); + oHrmATDDeputOrderSngEmpHdrBean.setReportingDate(EnrgiseUtil.convertToString(oRow.get("REPORTING_DATE").getDate())); + oHrmATDDeputOrderSngEmpHdrBean.setRemarks(oRow.get("REMARKS").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setHeaderPrimaryKey1(oRow.get("DEPUT_ORDER_DTL_ID").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setPhone(oRow.get("PHONE").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setMobilePhone(oRow.get("MOBILE_PHONE").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setFax(oRow.get("FAX").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setEmail(oRow.get("EMAIL").getString()); + oHrmATDDeputOrderSngEmpHdrBean.setReptBackDate(EnrgiseUtil.convertToString(oRow.get("REPORTING_BACK_DATE").getDate())); + arylstHeaderList.add(oHrmATDDeputOrderSngEmpHdrBean); + } + return arylstHeaderList; + } + + public LovVO getHrmDeputationOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationOrder.orderNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputNoLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DEPUTN_ORDER_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDeputApplcnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationOrder.applnNo"); + arylstHeaderList.add("hrm.HrmDeputationOrder.employeeName"); + arylstHeaderList.add("hrm.HrmDeputationOrder.applicationDate"); + arylstHeaderList.add("hrm.HrmDeputationOrder.toOrg"); + arylstHeaderList.add("hrm.HrmDeputationOrder.toPost"); + arylstHeaderList.add("hrm.HrmDeputationOrder.deputType"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputApplnNoLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oLOVBean.setDetailField5(oRow.get("ORG_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("POST_NAME").getString()); + oLOVBean.setDetailField7(oRow.get("DEPUT_TYPE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmDeputApplcnNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmDeputationOrder.applnNo"); + arylstHeaderList.add("hrm.HrmDeputationOrder.employeeName"); + arylstHeaderList.add("hrm.HrmDeputationOrder.applicationDate"); + arylstHeaderList.add("hrm.HrmDeputationOrder.toOrg"); + arylstHeaderList.add("hrm.HrmDeputationOrder.toPost"); + arylstHeaderList.add("hrm.HrmDeputationOrder.deputType"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String sQuerySearch2 = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNLOV.proc_GetHrmDeputApplnQLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oLOVBean.setDetailField5(oRow.get("ORG_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("POST_NAME").getString()); + oLOVBean.setDetailField7(oRow.get("DEPUT_TYPE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getApplnNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getOrderNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getOrderDate()))); + arylstParameters.add(new DBObject(5, 1, 12, "A")); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getDeptnEffectDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getReportingDate()))); + arylstParameters.add(new DBObject(8, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getRemarks())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getPhone())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getMobilePhone())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getFax())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getEmail())); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getReptBackDate()))); + arylstParameters.add(new DBObject(14, 1, 12, null)); + arylstParameters.add(new DBObject(15, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getDeputType())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(18, 1, 12, null)); + arylstParameters.add(new DBObject(19, 1, 12, null)); + arylstParameters.add(new DBObject(20, 2, 12)); + arylstParameters.add(new DBObject(21, 2, 12)); + arylstParameters.add(new DBObject(22, 2, 12)); + arylstParameters.add(new DBObject(23, 2, 12)); + arylstParameters.add(new DBObject(24, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.proc_UpsertHrDeputOrderSngEmp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String String1 = (String)oOutObject.getObject(); + System.out.println(String1); + DBObject oOutObject1 = arylstOutArray.get(1); + String String2 = (String)oOutObject1.getObject(); + System.out.println(String2); + returnString = String.valueOf(String.valueOf(String1).concat(String.valueOf(","))).concat(String.valueOf(String2)); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getApplnNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getOrderNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getOrderDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getOrderStatus())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getDeptnEffectDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getReportingDate()))); + arylstParameters.add(new DBObject(8, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getRemarks())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getPhone())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getMobilePhone())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getFax())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getEmail())); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDDeputOrderSngEmpHdrBean.getReptBackDate()))); + arylstParameters.add(new DBObject(14, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getDeputType())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(18, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(19, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(20, 2, 12)); + arylstParameters.add(new DBObject(21, 2, 12)); + arylstParameters.add(new DBObject(22, 2, 12)); + arylstParameters.add(new DBObject(23, 2, 12)); + arylstParameters.add(new DBObject(24, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.proc_UpsertHrDeputOrderSngEmp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String String1 = (String)oOutObject.getObject(); + System.out.println(String1); + DBObject oOutObject1 = arylstOutArray.get(1); + String String2 = (String)oOutObject1.getObject(); + System.out.println(String2); + returnString = String.valueOf(String.valueOf(String1).concat(String.valueOf(","))).concat(String.valueOf(String2)); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + System.out.println(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()); + oCommonBO.deleteChildDetailRec("HRM_EMP_DEPUT_ORDER_DTL", "DEPUT_ORDER_HDR_ID", oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey(), null); + System.out.println(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.proc_DelHrDeputOrdHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getApplnNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationOrder.applnNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationOrder.orderNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getDeptnEffectDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationOrder.deptnEffectDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getReportingDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationOrder.reportingDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getOrderDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDeputationOrder.orderDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean, arylstErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + if (!oHrmATDDeputOrderSngEmpHdrBean.getOrderStatus().equalsIgnoreCase("N")) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + } + reportError(arylstErrorList); + } + + private void checkDatesConstraint(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getOrderDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmATDDeputOrderSngEmpHdrBean.getOrderDate(), oHrmATDDeputOrderSngEmpHdrBean.getApplicationDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getDeptnEffectDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmATDDeputOrderSngEmpHdrBean.getDeptnEffectDate(), oHrmATDDeputOrderSngEmpHdrBean.getOrderDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmATDDeputOrderSngEmpHdrBean.getReportingDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmATDDeputOrderSngEmpHdrBean.getReportingDate(), oHrmATDDeputOrderSngEmpHdrBean.getDeptnEffectDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + } + + private void checkUniqueHeader(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_EMP_DEPUT_ORDER_HDR where DEPUTN_ORDER_NO= '").concat(String.valueOf(oHrmATDDeputOrderSngEmpHdrBean.getOrderNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + System.out.println(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator oIt = arylstList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.header.uniqueConstraintViolated", "M"); + } + } + + public String submitDeputOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.procSubmitDeputOrder(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String approveDeputOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.procApproveDeputOrder(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectDeputOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMDEPTNORDERSNGEMP.procRejectDeputOrder(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Deputation"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("DeputOrderSngEmp"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Deputation Order No:").concat(String.valueOf(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Deputation Order No:").concat(String.valueOf(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Deputation Application No:").concat(String.valueOf(oHrmATDDeputOrderSngEmpHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransApplBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransApplBO.java new file mode 100644 index 0000000..c936c56 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransApplBO.java @@ -0,0 +1,947 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.vo.HrmATDTransApplQVO; + +public class HrmATDTransApplBO extends HrmBaseBO { + public HrmATDTransApplBO() {} + + public HrmATDTransApplBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpTransAppHdrMetaInfo(HrmATDTransApplQVO oHrmATDTransApplQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDTransApplQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDTransApplQVO.getEmployeeNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransApplQVO.getApplnNo())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSAPP.proc_GetHrEmpTransAppHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpTransAppHeaderInfo(HrmATDTransApplQVO oHrmATDTransApplQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmATDTransApplQVO == null) + oHrmATDTransApplQVO = new HrmATDTransApplQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransApplQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransApplQVO.getEmployeeNoId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDTransApplQVO.getApplnNo())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSAPP.proc_GetHrEmpTransAppHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTransferApplicationHdrBean oTransAppHeader = new HrmTransferApplicationHdrBean(); + oTransAppHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTransAppHeader.setApplnNo(oRow.get("APPLICATION_NO").getString()); + oTransAppHeader.setSelfOffice(oRow.get("SELF_OFFICE_FLAG").getString()); + oTransAppHeader.setEmployeeNo(oRow.get("EMP_NO").getString()); + oTransAppHeader.setOfcNoteNo(oRow.get("OFFICE_NOTE_NO").getString()); + oTransAppHeader.setApplnDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oTransAppHeader.setOfcNoteDate(EnrgiseUtil.convertToString(oRow.get("OFFICE_ORDER_DATE").getDate())); + oTransAppHeader.setSite1(oRow.get("NAME1").getString()); + oTransAppHeader.setSite2(oRow.get("NAME2").getString()); + oTransAppHeader.setSite3(oRow.get("NAME3").getString()); + oTransAppHeader.setReason(oRow.get("REASON").getString()); + oTransAppHeader.setEmpName(oRow.get("EMPNAME").getString()); + oTransAppHeader.setEmployeeNoId(oRow.get("EMP_ID").getString()); + oTransAppHeader.setSiteId(oRow.get("SITEID").getString()); + oTransAppHeader.setSite1Id(oRow.get("SITE1ID").getString()); + oTransAppHeader.setSite2Id(oRow.get("SITE2ID").getString()); + oTransAppHeader.setSite3Id(oRow.get("SITE3ID").getString()); + oTransAppHeader.setFromWorkGroup(oRow.get("FROM_WRKGRP_NAME").getString()); + oTransAppHeader.setToWorkGroupCode(oRow.get("TO_WRKGRP_CODE").getString()); + oTransAppHeader.setToWorkGroup(oRow.get("TO_WRKGRP_NAME").getString()); + oTransAppHeader.setApplnType(oRow.get("TRANS_APP_TYPE").getString()); + oTransAppHeader.setFromSite(oRow.get("FROM_SITE_NAME").getString()); + oTransAppHeader.setFromDesignation(oRow.get("FROM_DESIG").getString()); + oTransAppHeader.setToDesignationId(oRow.get("TO_DESIG_ID").getString()); + oTransAppHeader.setToDesignation(oRow.get("TO_DESIGNATION").getString()); + oTransAppHeader.setSiteCode1(oRow.get("CODE1").getString()); + oTransAppHeader.setSiteCode2(oRow.get("CODE2").getString()); + oTransAppHeader.setSiteCode3(oRow.get("CODE3").getString()); + oHeaderList.add(oTransAppHeader); + } + return oHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRANS_APPL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmTrnApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmTransferApplcn.applnNo"); + oHeaderList.add("hrm.HrmTransferApplcn.employeeNo"); + oHeaderList.add("hrm.HrmTransferApplcn.employeeName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String sQuerySearch2 = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrApplnLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField4(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnOfcNoteNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmTransferApplcn.ofcNoteNo"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrOfcLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("OFFICE_NOTE_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnDesignationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmTransferApplcn.toDesignation"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + ArrayList arylstList = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String transType = null; + String wrkGrp = null; + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsDesigLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnWorkgroupLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmTransferApplcn.toWorkGroupCode"); + oHeaderList.add("hrm.HrmTransferApplcn.toWorkGroup"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + ArrayList arylstList = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String transType = null; + String wrkGrp = null; + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, wrkGrp)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_gethrmtrnsworkgrplov1data(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmTransferApplcn.employeeNo"); + oHeaderList.add("hrm.HrmTransferApplcn.employeeName"); + oHeaderList.add("hrm.HrmTransferApplcn.fromDesignation"); + oHeaderList.add("hrm.HrmTransferApplcn.siteName"); + oHeaderList.add("siteId"); + oHeaderList.add("fromDesignationId"); + oHeaderList.add("hrm.HrmTransferApplcn.fromWorkGroup"); + oHeaderList.add("fromWorkGroupId"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsEmpNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(oRow.get("FROM_DESIGNATION").getString()); + oLOVBean.setDetailField5(oRow.get("FROM_SITE_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("FROM_SITE_ID").getString()); + oLOVBean.setDetailField7(oRow.get("FROM_DESIG_ID").getString()); + oLOVBean.setDetailField8(oRow.get("FROM_WorkGrp").getString()); + oLOVBean.setDetailField9(oRow.get("FROM_WorkGrp_id").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnEmpNoInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmTransferApplcn.employeeNo"); + oHeaderList.add("hrm.HrmTransferApplcn.employeeName"); + oHeaderList.add("hrm.HrmTransferApplcn.fromDesignation"); + oHeaderList.add("hrm.HrmTransferApplcn.siteName"); + oHeaderList.add("siteId"); + oHeaderList.add("fromDesignationId"); + oHeaderList.add("hrm.HrmTransferApplcn.fromWorkGroup"); + oHeaderList.add("fromWorkGroupId"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsEmpNoInsLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(oRow.get("FROM_DESIGNATION").getString()); + oLOVBean.setDetailField5(oRow.get("FROM_SITE_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("FROM_SITE_ID").getString()); + oLOVBean.setDetailField7(oRow.get("FROM_DESIG_ID").getString()); + oLOVBean.setDetailField8(oRow.get("FROM_WorkGrp").getString()); + oLOVBean.setDetailField9(oRow.get("FROM_WorkGrp_id").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnSite1LOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("site1 Id"); + oHeaderList.add("hrm.HrmTransferApplcn.siteCode"); + oHeaderList.add("hrm.HrmTransferApplcn.siteName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("siteId") != null) { + siteId = oLovQueryVO.getProperty("siteId"); + System.out.println(siteId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, siteId)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrSite1LOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnSite2LOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("site2 Id"); + oHeaderList.add("hrm.HrmTransferApplcn.siteCode"); + oHeaderList.add("hrm.HrmTransferApplcn.siteName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + String site1Id = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("siteId") != null) { + siteId = oLovQueryVO.getProperty("siteId"); + System.out.println(siteId); + } + if (oLovQueryVO.getProperty("site1Id") != null) { + site1Id = oLovQueryVO.getProperty("site1Id"); + System.out.println(site1Id); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, siteId)); + arylstParameters.add(new DBObject(4, 1, 12, site1Id)); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrSite2LOVdata(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnSite3LOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("site3 Id"); + oHeaderList.add("hrm.HrmTransferApplcn.siteCode"); + oHeaderList.add("hrm.HrmTransferApplcn.siteName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + String site1Id = null; + String site2Id = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("siteId") != null) { + siteId = oLovQueryVO.getProperty("siteId"); + System.out.println(siteId); + } + if (oLovQueryVO.getProperty("site1Id") != null) { + site1Id = oLovQueryVO.getProperty("site1Id"); + System.out.println(site1Id); + } + if (oLovQueryVO.getProperty("site2Id") != null) { + site2Id = oLovQueryVO.getProperty("site2Id"); + System.out.println(site2Id); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, siteId)); + arylstParameters.add(new DBObject(4, 1, 12, site1Id)); + arylstParameters.add(new DBObject(5, 1, 12, site2Id)); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrSite3LOVdata(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmCommonBO oBO = new HrmCommonBO(); + HrmTransferApplicationHdrBean oHrmTransApplHdrBean = (HrmTransferApplicationHdrBean)oBaseHeaderBean; + if (EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSiteCode1())) { + String site1Id = oBO.getRefList1("GEN_SITE_MST", "CODE", oHrmTransApplHdrBean.getSiteCode1(), "ID"); + oHrmTransApplHdrBean.setSite1Id(site1Id); + } + if (EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSiteCode2())) { + String site2Id = oBO.getRefList1("GEN_SITE_MST", "CODE", oHrmTransApplHdrBean.getSiteCode2(), "ID"); + oHrmTransApplHdrBean.setSite2Id(site2Id); + } + if (EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSiteCode3())) { + String site3Id = oBO.getRefList1("GEN_SITE_MST", "CODE", oHrmTransApplHdrBean.getSiteCode3(), "ID"); + oHrmTransApplHdrBean.setSite3Id(site3Id); + } + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTransApplHdrBean.getEmployeeNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTransApplHdrBean.getApplnNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransApplHdrBean.getApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTransApplHdrBean.getOfcNoteNo())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTransApplHdrBean.getSite1Id())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTransApplHdrBean.getSite2Id())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTransApplHdrBean.getSite3Id())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTransApplHdrBean.getReason())); + arylstParameters.add(new DBObject(10, 1, 12, "A")); + arylstParameters.add(new DBObject(11, 1, 12, oHrmTransApplHdrBean.getApplnType())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTransApplHdrBean.getSiteId())); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransApplHdrBean.getOfcNoteDate()))); + arylstParameters.add(new DBObject(14, 1, 12, oHrmTransApplHdrBean.getToDesignationId())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmTransApplHdrBean.getFromDesignationId())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(18, 1, 12, null)); + arylstParameters.add(new DBObject(19, 1, 12, oHrmTransApplHdrBean.getSelfOffice())); + arylstParameters.add(new DBObject(20, 1, 12, oHrmTransApplHdrBean.getFromWorkGroupId())); + arylstParameters.add(new DBObject(21, 1, 12, oHrmTransApplHdrBean.getToWorkGroupId())); + arylstParameters.add(new DBObject(22, 2, 12)); + arylstParameters.add(new DBObject(23, 2, 12)); + arylstParameters.add(new DBObject(24, 2, 12)); + arylstParameters.add(new DBObject(25, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSAPP.proc_UpsertHrEmpTransAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTransApplHdrBean.getEmployeeNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTransApplHdrBean.getApplnNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransApplHdrBean.getApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTransApplHdrBean.getOfcNoteNo())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTransApplHdrBean.getSite1Id())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTransApplHdrBean.getSite2Id())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTransApplHdrBean.getSite3Id())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTransApplHdrBean.getReason())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmTransApplHdrBean.getTrnsStatus())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmTransApplHdrBean.getApplnType())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTransApplHdrBean.getSiteId())); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransApplHdrBean.getOfcNoteDate()))); + arylstParameters.add(new DBObject(14, 1, 12, oHrmTransApplHdrBean.getToDesignationId())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmTransApplHdrBean.getFromDesignationId())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(18, 1, 12, null)); + arylstParameters.add(new DBObject(19, 1, 12, oHrmTransApplHdrBean.getSelfOffice())); + arylstParameters.add(new DBObject(20, 1, 12, oHrmTransApplHdrBean.getFromWorkGroupId())); + arylstParameters.add(new DBObject(21, 1, 12, oHrmTransApplHdrBean.getToWorkGroupId())); + arylstParameters.add(new DBObject(22, 2, 12)); + arylstParameters.add(new DBObject(23, 2, 12)); + arylstParameters.add(new DBObject(24, 2, 12)); + arylstParameters.add(new DBObject(25, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSAPP.proc_UpsertHrEmpTransAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParameters.add(new DBObject(1, 1, 12, oHrmTransApplHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSAPP.proc_DeleteHrmEmpTransApplHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkMandatoryHeader((HrmTransferApplicationHdrBean)oBaseHeaderBean); + checkHeaderFields((HrmTransferApplicationHdrBean)oBaseHeaderBean); + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmTransferApplicationHdrBean oHrmTransApplHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTransApplHdrBean.getApplnNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransferApplcn.applnNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTransApplHdrBean.getApplnDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransferApplcn.applnDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTransApplHdrBean.getApplnType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransferApplcn.applnType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTransApplHdrBean.getReason())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransferApplcn.reason"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTransApplHdrBean.getEmployeeNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransferApplcn.employeeNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkHeaderFields(HrmTransferApplicationHdrBean oHrmTransApplHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstList1 = new ArrayList(); + if (oHrmTransApplHdrBean.getApplnType().equalsIgnoreCase("S")) { + if (EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSite1Id()) || EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSite2Id()) || EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSite3Id())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransApp.sectional.value")); + if (oHrmTransApplHdrBean.getFromDesignation().equals(oHrmTransApplHdrBean.getToDesignation())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransApp.designation.value")); + } + if (oHrmTransApplHdrBean.getApplnType().equalsIgnoreCase("L")) { + if (!EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSiteId()) || !EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSiteCode1())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransApp.site.value")); + if (oHrmTransApplHdrBean.getSiteId().equals(oHrmTransApplHdrBean.getSite1Id()) || oHrmTransApplHdrBean.getSite1Id().equals(oHrmTransApplHdrBean.getSite2Id()) || oHrmTransApplHdrBean.getSiteId().equals(oHrmTransApplHdrBean.getSite3Id())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransApp.fromSite.value")); + if (EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSiteCode2())) + if (oHrmTransApplHdrBean.getSiteCode1().equals(oHrmTransApplHdrBean.getSiteCode2()) || oHrmTransApplHdrBean.getSiteCode2().equals(oHrmTransApplHdrBean.getSiteCode3())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransApp.toSite.value")); + if (EnrgiseUtil.checkString(oHrmTransApplHdrBean.getSiteCode3())) + if (oHrmTransApplHdrBean.getSiteCode1().equals(oHrmTransApplHdrBean.getSiteCode3()) || oHrmTransApplHdrBean.getSiteCode2().equals(oHrmTransApplHdrBean.getSiteCode3())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransApp.toSite.value")); + } + reportError(arylstList1); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmTransferApplicationHdrBean oHrmTransferApplicationHdrBean = (HrmTransferApplicationHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmTransferApplicationHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmTransferApplicationHdrBean)oBaseHeaderBean, oErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sRefId = oCommonBO.getRefList("HRM_EMP_TRANS_ORDER_DTL", "TRANS_APPL_ID ", oHrmTransferApplicationHdrBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId)) + oErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + if (!oHrmTransferApplicationHdrBean.getTrnsStatus().equalsIgnoreCase("N")) + if (oErrorList.isEmpty()) + oErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmTransferApplicationHdrBean oHrmTransApplHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from hrm_emp_trans_appl where application_no= '").concat(String.valueOf(oHrmTransApplHdrBean.getApplnNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + ArrayList arylstParam = new ArrayList(); + Iterator oIt = arylstList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmTransApplHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.header.uniqueConstraintViolated", "M"); + } + } + + private void checkDatesConstraint(HrmTransferApplicationHdrBean oHrmTransferApplicationHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmTransferApplicationHdrBean.getOfcNoteDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTransferApplicationHdrBean.getOfcNoteDate(), oHrmTransferApplicationHdrBean.getApplnDate()); + if (dateFlag == -1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.empTransApp.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmTransferApplicationHdrBean.getApplnDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmTransferApplicationHdrBean.getApplnDate()); + if (dateFlag1 == -1 && dateFlag1 != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.empTransApp.dateConstraintViolated3")); + } + if (EnrgiseUtil.checkString(oHrmTransferApplicationHdrBean.getOfcNoteDate())) { + int dateFlag2 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmTransferApplicationHdrBean.getOfcNoteDate()); + if (dateFlag2 == -1 && dateFlag2 != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.empTransApp.dateConstraintViolated2")); + } + } + + public String getHrEmpInfo(String sEmpId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sStatus = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrAppEmpdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + sStatus = oRow.get("APPROVED_FLAG").getString(); + } + return sStatus; + } + + public String getHrEmpOrderInfo(String sEmpId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sStatus = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrAppEmpOrddata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + sStatus = oRow.get("APPROVED_FLAG").getString(); + } + return sStatus; + } + + public String getHrEmpOrderChInfo(String sEmpId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sStatus = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmEmpOrdChdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + sStatus = oRow.get("ID").getString(); + } + return sStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransChrgRptBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransChrgRptBO.java new file mode 100644 index 0000000..3a68ff3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransChrgRptBO.java @@ -0,0 +1,862 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmATDTransChrgRptBO extends HrmBaseBO { + public HrmATDTransChrgRptBO() {} + + public HrmATDTransChrgRptBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmChargeRepHdrMetaInfo(HrmATDTransChrgRptQVO oHrmATDTransChrgRptQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDTransChrgRptQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDTransChrgRptQVO.getTrnOrderNo())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransChrgRptQVO.getChargeType())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransChrgRptQVO.getEmpNameId())); + arylstParameters.add(new DBObject(5, 2, -5)); + arylstParameters.add(new DBObject(6, 2, 93)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMCHARGEREPORT.proc_HrChargeRepHdrCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmChargeRepHeaderInfo(HrmATDTransChrgRptQVO oHrmATDTransChrgRptQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmATDTransChrgRptQVO == null) + oHrmATDTransChrgRptQVO = new HrmATDTransChrgRptQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransChrgRptQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransChrgRptQVO.getTrnOrderNo())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDTransChrgRptQVO.getChargeType())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmATDTransChrgRptQVO.getEmpNameId())); + arylstParameters.add(new DBObject(7, 2, -10)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMCHARGEREPORT.proc_HrChargeRepHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmChargeReportHdrBean oChargeRepHeader = new HrmChargeReportHdrBean(); + oChargeRepHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oChargeRepHeader.setChargeType(oRow.get("CHARGE_TYPE").getString()); + oChargeRepHeader.setTrnOrderNoId(oRow.get("TRANS_ORDER_NO_ID").getString()); + oChargeRepHeader.setTrnOrdrDtlId(oRow.get("TRANS_ORDER_DTL_ID").getString()); + oChargeRepHeader.setChargeCode(oRow.get("CHARGE_CODE").getString()); + oChargeRepHeader.setNoonFlag(oRow.get("FNOON_ANOON_FLAG").getString()); + oChargeRepHeader.setRemarks(oRow.get("HANDOVER_REMARKS").getString()); + oChargeRepHeader.setHandOverDate(EnrgiseUtil.convertToString(oRow.get("HANDOVER_DATE").getDate())); + oChargeRepHeader.setTransferDate(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oChargeRepHeader.setEmpName(oRow.get("EMPNAME").getString()); + oChargeRepHeader.setEmpNameId(oRow.get("E_PER_DTL_ID").getString()); + oChargeRepHeader.setTrnOrderNo(oRow.get("TRANSFER_ORDER_NO").getString()); + oChargeRepHeader.setFromDesignation(oRow.get("FROM_DESIGNATION").getString()); + oChargeRepHeader.setFromDesigId(oRow.get("FROM_DESIGNATION_ID").getString()); + oChargeRepHeader.setToDesignation(oRow.get("TO_DESIGNATION").getString()); + oChargeRepHeader.setToDesigId(oRow.get("TO_DESIGNATION_ID").getString()); + oChargeRepHeader.setFromSiteCode(oRow.get("FROM_SITE_NAME").getString()); + oChargeRepHeader.setFromSiteId(oRow.get("FROM_SITE_ID").getString()); + oChargeRepHeader.setToSiteCode(oRow.get("TO_SITE_NAME").getString()); + oChargeRepHeader.setToSiteId(oRow.get("TO_SITE_ID").getString()); + oChargeRepHeader.setChargeStatus(oRow.get("APPROVAL_FLAG").getString()); + oChargeRepHeader.setOrderType(oRow.get("TRANSFER_ORDER_TYPE").getString()); + oChargeRepHeader.setHandoverTakeoverId(oRow.get("CHARGE_EMP_ID").getString()); + oChargeRepHeader.setHandTakeEmpNo(oRow.get("CHARGE_EMP_NO").getString()); + oChargeRepHeader.setHandoverTakeover(oRow.get("CHARGE_EMP_NAME").getString()); + oChargeRepHeader.setFromWorkGroup(oRow.get("FROM_WORKGROUP").getString()); + oChargeRepHeader.setToWorkGroup(oRow.get("TO_WORKGROUP").getString()); + arylstHeaderList.add(oChargeRepHeader); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_CHARGE_REPORT"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + String sSiteId = new String(); + String sWorkGroupId = new String(); + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmChargeReportHdrBean.getTrnOrdrDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmChargeReportHdrBean.getChargeType())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmChargeReportHdrBean.getChargeCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmChargeReportHdrBean.getHandOverDate())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmChargeReportHdrBean.getNoonFlag())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmChargeReportHdrBean.getRemarks())); + if (oHrmChargeReportHdrBean.getChargeType().equalsIgnoreCase("H")) { + sSiteId = oHrmChargeReportHdrBean.getFromSiteId(); + } else if (oHrmChargeReportHdrBean.getChargeType().equalsIgnoreCase("T")) { + sSiteId = oHrmChargeReportHdrBean.getToSiteId(); + } + arylstParameters.add(new DBObject(8, 1, 12, null)); + arylstParameters.add(new DBObject(9, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(10, 1, 12, "A")); + arylstParameters.add(new DBObject(11, 1, 12, oHrmChargeReportHdrBean.getHandoverTakeoverId())); + arylstParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(14, 1, 12, null)); + arylstParameters.add(new DBObject(15, 2, 12)); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMCHARGEREPORT.proc_UpsertHrChrgRptHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + updateCLBalance(oHrmChargeReportHdrBean.getEmpNameId(), oHrmChargeReportHdrBean.getHandOverDate(), oHrmChargeReportHdrBean.getToSiteId()); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmChargeReportHdrBean.getTrnOrdrDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmChargeReportHdrBean.getChargeType())); + System.out.println(oHrmChargeReportHdrBean.getChargeType()); + arylstParameters.add(new DBObject(4, 1, 12, oHrmChargeReportHdrBean.getChargeCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmChargeReportHdrBean.getHandOverDate())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmChargeReportHdrBean.getNoonFlag())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmChargeReportHdrBean.getRemarks())); + if (oHrmChargeReportHdrBean.getChargeType().equalsIgnoreCase("H")) { + sSiteId = oHrmChargeReportHdrBean.getFromSiteId(); + } else if (oHrmChargeReportHdrBean.getChargeType().equalsIgnoreCase("T")) { + sSiteId = oHrmChargeReportHdrBean.getToSiteId(); + } + arylstParameters.add(new DBObject(8, 1, 12, null)); + arylstParameters.add(new DBObject(9, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(10, 1, 12, oHrmChargeReportHdrBean.getChargeStatus())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmChargeReportHdrBean.getHandoverTakeoverId())); + arylstParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmChargeReportHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(15, 2, 12)); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMCHARGEREPORT.proc_UpsertHrChrgRptHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + + } + updateTables((HrmChargeReportHdrBean)oBaseHeaderBean); + return returnString; + } + + public LovVO getHrmChrgOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmChargeReport.trnOrderNo"); + arylstHeaderList.add("DTLID"); + arylstHeaderList.add("hrm.HrmChargeReport.empName"); + arylstHeaderList.add("hrm.HrmChargeReport.transferDate"); + arylstHeaderList.add("hrm.HrmChargeReport.fromSiteId"); + arylstHeaderList.add("hrm.HrmChargeReport.fromSiteCode"); + arylstHeaderList.add("hrm.HrmChargeReport.toSiteId"); + arylstHeaderList.add("hrm.HrmChargeReport.toSiteCode"); + arylstHeaderList.add("empId"); + arylstHeaderList.add("hrm.HrmChargeReport.orderType"); + arylstHeaderList.add("hrm.HrmChargeReport.fromDesignation"); + arylstHeaderList.add("hrm.HrmChargeReport.toDesignation"); + arylstHeaderList.add("hrm.HrmChargeReport.fromWorkGroup"); + arylstHeaderList.add("hrm.HrmChargeReport.toWorkGroup"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empNameId = null; + String chargeType = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("empNameId") != null) + empNameId = oLovQueryVO.getProperty("empNameId"); + if (oLovQueryVO.getProperty("chargeType") != null) + chargeType = oLovQueryVO.getProperty("chargeType"); + String sSiteId = oLovQueryVO.getProperty("ListSiteId"); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, empNameId)); + arylstParameters.add(new DBObject(3, 1, 12, chargeType)); + arylstParameters.add(new DBObject(4, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmChrgTrnNoLOVdata(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TRANSFER_ORDER_NO").getString()); + oLOVBean.setDetailField3(oRow.get("TRANS_DTL_ID").getString()); + oLOVBean.setDetailField4(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oLOVBean.setDetailField6(oRow.get("FROM_SITE_ID").getString()); + oLOVBean.setDetailField7(oRow.get("FROM_SITE_NAME").getString()); + oLOVBean.setDetailField8(oRow.get("TO_SITE_ID").getString()); + oLOVBean.setDetailField9(oRow.get("TO_SITE_NAME").getString()); + oLOVBean.setDetailField10(oRow.get("E_PER_DTL_ID").getString()); + oLOVBean.setDetailField11(oRow.get("ORDER_TYPE").getString()); + oLOVBean.setDetailField12(oRow.get("FROM_DESIGNATION").getString()); + oLOVBean.setDetailField13(oRow.get("TO_DESIGNATION").getString()); + oLOVBean.setDetailField14(oRow.get("FROM_WORKGROUP").getString()); + oLOVBean.setDetailField15(oRow.get("TO_WORKGROUP").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmChrgOrderNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmChargeReport.trnOrderNo"); + arylstHeaderList.add("hrm.HrmChargeReport.dtlId"); + arylstHeaderList.add("hrm.HrmChargeReport.empName"); + arylstHeaderList.add("hrm.HrmChargeReport.transferDate"); + arylstHeaderList.add("hrm.HrmChargeReport.fromSiteId"); + arylstHeaderList.add("hrm.HrmChargeReport.fromSiteCode"); + arylstHeaderList.add("hrm.HrmChargeReport.toSiteId"); + arylstHeaderList.add("hrm.HrmChargeReport.toSiteCode"); + arylstHeaderList.add("empId"); + arylstHeaderList.add("hrm.HrmChargeReport.orderType"); + arylstHeaderList.add("hrm.HrmChargeReport.fromDesignation"); + arylstHeaderList.add("hrm.HrmChargeReport.toDesignation"); + arylstHeaderList.add("hrm.HrmChargeReport.fromWorkGroup"); + arylstHeaderList.add("hrm.HrmChargeReport.toWorkGroup"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empNameId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("empNameId") != null) + empNameId = oLovQueryVO.getProperty("empNameId"); + String sSiteId = oLovQueryVO.getProperty("ListSiteId"); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, empNameId)); + arylstParameters.add(new DBObject(3, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmChrgTrnNoQLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TRANSFER_ORDER_NO").getString()); + oLOVBean.setDetailField3(oRow.get("TRANS_DTL_ID").getString()); + oLOVBean.setDetailField4(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oLOVBean.setDetailField6(oRow.get("FROM_SITE_ID").getString()); + oLOVBean.setDetailField7(oRow.get("SITE_NAME").getString()); + oLOVBean.setDetailField8(oRow.get("TO_SITE_ID").getString()); + oLOVBean.setDetailField9(oRow.get("TO_SITE_NAME").getString()); + oLOVBean.setDetailField10(oRow.get("E_PER_DTL_ID").getString()); + oLOVBean.setDetailField11(oRow.get("ORDER_TYPE").getString()); + oLOVBean.setDetailField12(oRow.get("FROM_DESIGNATION").getString()); + oLOVBean.setDetailField13(oRow.get("TO_DESIGNATION").getString()); + oLOVBean.setDetailField14(oRow.get("FROM_WORKGROUP").getString()); + oLOVBean.setDetailField15(oRow.get("TO_WORKGROUP").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmChrgCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmChargeReport.chargeCode"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String trnOrderNoId = null; + String chargeType = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("trnOrderNoId") != null) { + trnOrderNoId = oLovQueryVO.getProperty("trnOrderNoId"); + System.out.println(trnOrderNoId); + } + if (oLovQueryVO.getProperty("chargeType") != null) { + chargeType = oLovQueryVO.getProperty("chargeType"); + System.out.println(chargeType); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrChrgCdLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CHARGE_CODE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmChargeReportHdrBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmChargeReportHdrBean oHrmChargeReportHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstErrorList = new ArrayList(); + ArrayList arylstParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getTrnOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmChargeReport.trnOrderNo"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmChargeReport.chargeCode"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getHandOverDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmChargeReport.handOverDate"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmChargeReport.chargeType"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList arylstParam6, boolean param7, Timestamp param8) {} + + private void checkDatesConstraint(HrmChargeReportHdrBean oHrmChargeReportHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getHandOverDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmChargeReportHdrBean.getHandOverDate(), oHrmChargeReportHdrBean.getTransferDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmChargeReportHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmChargeReportHdrBean)oBaseHeaderBean, arylstErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmChargeReportHdrBean oHrmChargeReportHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from HRM_EMP_CHARGE_REPORT where TRANS_ORDER_DTL_ID='").concat(String.valueOf(oHrmChargeReportHdrBean.getTrnOrdrDtlId()))).concat(String.valueOf("' And CHARGE_TYPE='"))).concat(String.valueOf(oHrmChargeReportHdrBean.getChargeType()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmChargeReportHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstErrorList); + } + + public String approveTranChrgRpt(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oBaseHeaderBean; + updateTables((HrmChargeReportHdrBean)oBaseHeaderBean); + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMCHARGEREPORT.procApproveTransChrgRpt(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectTranChrgRpt(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMCHARGEREPORT.procRejectTransChrgRpt(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String submitTranChrgRpt(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMCHARGEREPORT.procSubmitTransChrgRpt(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + private void updateTables(HrmChargeReportHdrBean oHrmChargeReportHdrBean) throws EnrgiseSystemException { + String sEmpId = oHrmChargeReportHdrBean.getEmpNameId(); + String sFromSiteId = oHrmChargeReportHdrBean.getFromSiteId(); + String sBaseSiteId = oHrmChargeReportHdrBean.getToSiteId(); + String sTransferDate = oHrmChargeReportHdrBean.getTransferDate(); + String sHandOverDate = oHrmChargeReportHdrBean.getHandOverDate(); + String sFromDesigId = oHrmChargeReportHdrBean.getFromDesigId(); + String sToDesigId = oHrmChargeReportHdrBean.getToDesigId(); + if (oHrmChargeReportHdrBean.getChargeType().equalsIgnoreCase("T")) { + DBUtilitiesBean oBean4 = null; + oBean4 = new DBUtilitiesBean(); + ArrayList arylstParameters4 = new ArrayList(); + arylstParameters4 = new ArrayList(); + arylstParameters4.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters4.add(new DBObject(2, 1, 12, sHandOverDate)); + arylstParameters4.add(new DBObject(3, 2, 12)); + arylstParameters4.add(new DBObject(4, 2, 12)); + arylstParameters4.add(new DBObject(5, 2, 4)); + ArrayList arrayList = oBean4.callProc(arylstParameters4, "HRMCHARGEREPORT.procUpdateHrmEmpPersTakeOver(?,?,?,?,?)"); + } else if (oHrmChargeReportHdrBean.getChargeType().equalsIgnoreCase("H")) { + DBUtilitiesBean oBean1 = null; + oBean1 = new DBUtilitiesBean(); + ArrayList arylstParameters1 = new ArrayList(); + arylstParameters1 = new ArrayList(); + arylstParameters1.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters1.add(new DBObject(2, 1, 12, sBaseSiteId)); + arylstParameters1.add(new DBObject(3, 2, 12)); + arylstParameters1.add(new DBObject(4, 2, 12)); + arylstParameters1.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray1 = oBean1.callProc(arylstParameters1, "HRMCHARGEREPORT.procUpdateHrmEmpPers(?,?,?,?,?)"); + DBUtilitiesBean oBean2 = null; + oBean2 = new DBUtilitiesBean(); + String sDesigId = new String(); + if (sToDesigId != null) { + sDesigId = sToDesigId; + } else { + sDesigId = sFromDesigId; + } + ArrayList arylstParameters2 = new ArrayList(); + arylstParameters2 = new ArrayList(); + arylstParameters2.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters2.add(new DBObject(2, 1, 12, sDesigId)); + arylstParameters2.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters2.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters2.add(new DBObject(5, 2, 12)); + arylstParameters2.add(new DBObject(6, 2, 12)); + arylstParameters2.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray2 = oBean2.callProc(arylstParameters2, "HRMCHARGEREPORT.procUpsertHrmDesignation(?,?,?,?,?,?,?)"); + DBUtilitiesBean oBean3 = null; + oBean3 = new DBUtilitiesBean(); + ArrayList arylstParameters3 = new ArrayList(); + arylstParameters3.add(new DBObject(1, 1, 12, sEmpId)); + arylstParameters3.add(new DBObject(2, 1, 12, sFromSiteId)); + arylstParameters3.add(new DBObject(3, 1, 12, sBaseSiteId)); + arylstParameters3.add(new DBObject(4, 1, 12, sTransferDate)); + arylstParameters3.add(new DBObject(5, 1, 12, sHandOverDate)); + arylstParameters3.add(new DBObject(6, 1, 12, sFromDesigId)); + arylstParameters3.add(new DBObject(7, 1, 12, sToDesigId)); + arylstParameters3.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters3.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters3.add(new DBObject(10, 2, 12)); + arylstParameters3.add(new DBObject(11, 2, 12)); + arylstParameters3.add(new DBObject(12, 2, 4)); + ArrayList arrayList1 = oBean3.callProc(arylstParameters3, "HRMCHARGEREPORT.procUpsertHrmEmpIncr(?,?,?,?,?,?,?,?,?,?,?,?)"); + } + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmChargeReportHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Transfer"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("TransChrgRpt"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Charge Report No:").concat(String.valueOf(oHrmChargeReportHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmChargeReportHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Charge Report No:").concat(String.valueOf(oHrmChargeReportHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Deputation Application No:").concat(String.valueOf(oHrmChargeReportHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } + + private String updateCLBalance(String sEmp, String sEffectDate, String sSite) throws EnrgiseSystemException { + String sNoOfCLPrior = null; + String sOutStandingLeaves = null; + String sAvailedLeaves = null; + String sProRataCL = null; + String sNewCLBalance = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmp)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCREDIT.procGetLvInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + if (arylstList.size() > 0) { + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sNoOfCLPrior = oRow.get("NO_OF_CL").getString(); + sOutStandingLeaves = oRow.get("OUTSTANDING_LV").getString(); + sAvailedLeaves = oRow.get("lv_availed").getString(); + } + ArrayList arylstParam1 = new ArrayList(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList arylstOutArray1 = new ArrayList(); + String sNoOfCLAfter = null; + arylstParam1.add(new DBObject(1, 1, 12, sSite)); + arylstParam1.add(new DBObject(2, 2, 12)); + arylstParam1.add(new DBObject(3, 2, 12)); + arylstParam1.add(new DBObject(4, 2, 12)); + arylstParam1.add(new DBObject(5, 2, 4)); + arylstOutArray1 = oBean1.callProc(arylstParam1, "HRMLVCREDIT.procGetLvInfoN(?,?,?,?,?)"); + DBObject oOutObject1 = arylstOutArray1.get(0); + sNoOfCLAfter = ((String)oOutObject1.getObject()).toString(); + Calendar cal = Calendar.getInstance(); + int iThisMonth = cal.get(2) + 1; + int iThisYear = cal.get(1); + cal = null; + int iNextMonthOffset = 12; + HrmCommonBO oBO = new HrmCommonBO(); + sEffectDate = oBO.getddmmyyyyDateFormat(sEffectDate); + String sYYYY = sEffectDate.substring(6, 10); + String sMM = sEffectDate.substring(3, 5); + int iMonth = Integer.parseInt(sMM); + int iYear = Integer.parseInt(sYYYY); + int iMonthDiff = iNextMonthOffset - iMonth; + double dProRataLv = Double.parseDouble(sNoOfCLAfter) * iMonthDiff / iNextMonthOffset; + sProRataCL = String.valueOf(dProRataLv); + if (Integer.parseInt(sNoOfCLPrior) < Integer.parseInt(sNoOfCLAfter)) { + double dProRataLv1 = Double.parseDouble(String.valueOf(Integer.parseInt(sNoOfCLAfter) - Integer.parseInt(sNoOfCLPrior))) * iMonthDiff / iNextMonthOffset; + sNewCLBalance = String.valueOf(Double.parseDouble(sOutStandingLeaves) + dProRataLv1); + } else if (Integer.parseInt(sNoOfCLPrior) > Integer.parseInt(sNoOfCLAfter)) { + if (Integer.parseInt(sNoOfCLAfter) <= Integer.parseInt(sAvailedLeaves)) { + sNewCLBalance = "0"; + } else if (Integer.parseInt(sNoOfCLAfter) > Integer.parseInt(sAvailedLeaves)) { + sNewCLBalance = sProRataCL; + } + } else if (Integer.parseInt(sNoOfCLPrior) == Integer.parseInt(sNoOfCLAfter)) { + sNewCLBalance = sOutStandingLeaves; + } + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean2 = new DBUtilitiesBean(); + arylstParameters.add(new DBObject(1, 1, 12, sEmp)); + arylstParameters.add(new DBObject(2, 1, 12, sNewCLBalance)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray2 = oBean2.callProc(arylstParameters, "HRMLVCREDIT.procUpdateLvTransfer(?,?,?,?,?)"); + return sProRataCL; + } + return null; + } + + public LovVO getHrmChgRepEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmTransferOrder.empNo"); + arylstHeaderList.add("hrm.HrmTransferOrder.empName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sSiteId = oLovQueryVO.getProperty("ListSiteId"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.procGetTransRptChgEmpNoLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMPID").getString()); + oLOVBean.setDetailField2(oRow.get("EMPNO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclApplBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclApplBO.java new file mode 100644 index 0000000..fbbb7d9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclApplBO.java @@ -0,0 +1,752 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmATDTransCnclApplBO extends HrmBaseBO { + public HrmATDTransCnclApplBO() {} + + public HrmATDTransCnclApplBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpTransCnclAppHdrMetaInfo(HrmATDTransCnclApplQVO oHrmATDTransCnclApplQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDTransCnclApplQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDTransCnclApplQVO.getEmpId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransCnclApplQVO.getApplnNo())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.proc_GetHrEmpTransCnclHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpTransCnclAppHeaderInfo(HrmATDTransCnclApplQVO oHrmATDTransCnclApplQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmATDTransCnclApplQVO == null) + oHrmATDTransCnclApplQVO = new HrmATDTransCnclApplQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransCnclApplQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransCnclApplQVO.getEmpId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDTransCnclApplQVO.getApplnNo())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.proc_GetHrEmpTransCnclHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmEmpTransCnclApplHdrBean oTransCnclAppHeader = new HrmEmpTransCnclApplHdrBean(); + oTransCnclAppHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTransCnclAppHeader.setApplnNo(oRow.get("APPLICATION_NO").getString()); + oTransCnclAppHeader.setGeneratedBy(oRow.get("SELF_OFFICE_FLAG").getString()); + oTransCnclAppHeader.setEmpNo(oRow.get("EMP_NO").getString()); + oTransCnclAppHeader.setEmpName(oRow.get("EMPNAME").getString()); + oTransCnclAppHeader.setEmpId(oRow.get("EMP_ID").getString()); + oTransCnclAppHeader.setOfcNoteNo(oRow.get("OFFICE_NOTE_NO").getString()); + oTransCnclAppHeader.setOrderDtlId(oRow.get("ORDER_DTL_ID").getString()); + oTransCnclAppHeader.setApplnDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oTransCnclAppHeader.setOfcNoteDate(EnrgiseUtil.convertToString(oRow.get("OFFICE_ORDER_DATE").getDate())); + oTransCnclAppHeader.setDeferredDate(EnrgiseUtil.convertToString(oRow.get("DEFER_DATE").getDate())); + oTransCnclAppHeader.setEffectDate(EnrgiseUtil.convertToString(oRow.get("TRANSFER_EFFECT_DATE").getDate())); + oTransCnclAppHeader.setOrderDate(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oTransCnclAppHeader.setCancelDeferFlag(oRow.get("CNCL_DEFR_FLAG").getString()); + oTransCnclAppHeader.setDefermentPeriod(oRow.get("DEFER_PERIOD").getString()); + oTransCnclAppHeader.setDeferredStatus(oRow.get("APPROVED_FLAG").getString()); + oTransCnclAppHeader.setReason(oRow.get("REASON").getString()); + oTransCnclAppHeader.setOrderNo(oRow.get("TRANSFER_ORDER_NO").getString()); + if (oRow.get("TRANS_APP_TYPE").getString().equalsIgnoreCase("L")) { + oTransCnclAppHeader.setTrnOrderType("Locational"); + } else { + oTransCnclAppHeader.setTrnOrderType("Sectional"); + } + oTransCnclAppHeader.setFromSite(oRow.get("FROM_SITE_NAME").getString()); + oTransCnclAppHeader.setToSite(oRow.get("TO_SITE_NAME").getString()); + oTransCnclAppHeader.setFromDesignation(oRow.get("FROM_DESIGNATION").getString()); + oTransCnclAppHeader.setToDesignation(oRow.get("TO_DESIGNATION").getString()); + oTransCnclAppHeader.setFromWorkGroup(oRow.get("FROM_WORKGROUP").getString()); + oTransCnclAppHeader.setToWorkGroup(oRow.get("TO_WORKGROUP").getString()); + arylstHeaderList.add(oTransCnclAppHeader); + } + return arylstHeaderList; + } + + public LovVO getHrmTrnApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("applnNoId"); + arylstHeaderList.add("hrm.HrmCancApplcn.applnNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("empId") != null) { + empId = oLovQueryVO.getProperty("empId"); + System.out.println(empId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, empId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrApplnLOV1data(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnCnclOfcNoteNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ofcNoteId"); + arylstHeaderList.add("hrm.HrmCancApplcn.ofcNoteNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsfrOfcLOV1data(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("OFFICE_NOTE_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnCnclEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("orderDtlId"); + arylstHeaderList.add("hrm.HrmCancApplcn.empNo"); + arylstHeaderList.add("hrm.HrmCancApplcn.empName"); + arylstHeaderList.add("empId"); + arylstHeaderList.add("hrm.HrmCancApplcn.orderNo"); + arylstHeaderList.add("hrm.HrmCancApplcn.orderDate"); + arylstHeaderList.add("hrm.HrmCancApplcn.fromWorkgroup"); + arylstHeaderList.add("hrm.HrmCancApplcn.toWorkgroup"); + arylstHeaderList.add("hrm.HrmCancApplcn.fromDesignation"); + arylstHeaderList.add("hrm.HrmCancApplcn.toDesignation"); + arylstHeaderList.add("hrm.HrmCancApplcn.trnOrderType"); + arylstHeaderList.add("hrm.HrmCancApplcn.fromSite"); + arylstHeaderList.add("hrm.HrmCancApplcn.toSite"); + arylstHeaderList.add("hrm.HrmCancApplcn.effectDate"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsEmpNoLOV1data(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(oRow.get("EMP_ID").getString()); + oLOVBean.setDetailField5(oRow.get("TRANSFER_ORDER_NO").getString()); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oLOVBean.setDetailField7(oRow.get("FROM_WORKGROUP").getString()); + oLOVBean.setDetailField8(oRow.get("TO_WORKGROUP").getString()); + oLOVBean.setDetailField9(oRow.get("FROM_DESIGNATION").getString()); + oLOVBean.setDetailField10(oRow.get("TO_DESIGNATION").getString()); + oLOVBean.setDetailField11(oRow.get("TRANSFER_ORDER_TYPE").getString()); + oLOVBean.setDetailField12(oRow.get("FROM_SITE_NAME").getString()); + oLOVBean.setDetailField13(oRow.get("TO_SITE_NAME").getString()); + oLOVBean.setDetailField14(EnrgiseUtil.convertToString(oRow.get("TRANSFER_EFFECT_DATE").getDate())); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnCnclEmpNoInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("orderDtlId"); + arylstHeaderList.add("hrm.HrmCancApplcn.empNo"); + arylstHeaderList.add("hrm.HrmCancApplcn.empName"); + arylstHeaderList.add("empId"); + arylstHeaderList.add("hrm.HrmCancApplcn.orderNo"); + arylstHeaderList.add("hrm.HrmCancApplcn.orderDate"); + arylstHeaderList.add("hrm.HrmCancApplcn.fromWorkgroup"); + arylstHeaderList.add("hrm.HrmCancApplcn.toWorkgroup"); + arylstHeaderList.add("hrm.HrmCancApplcn.fromDesignation"); + arylstHeaderList.add("hrm.HrmCancApplcn.toDesignation"); + arylstHeaderList.add("hrm.HrmCancApplcn.trnOrderType"); + arylstHeaderList.add("hrm.HrmCancApplcn.fromSite"); + arylstHeaderList.add("hrm.HrmCancApplcn.toSite"); + arylstHeaderList.add("hrm.HrmCancApplcn.effectDate"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + if (oLovQueryVO.getProperty("empId") != null) { + empId = oLovQueryVO.getProperty("empId"); + System.out.println(empId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, empId)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsEmpInsLOV1data(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(oRow.get("EMP_ID").getString()); + oLOVBean.setDetailField5(oRow.get("TRANSFER_ORDER_NO").getString()); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oLOVBean.setDetailField7(oRow.get("FROM_WORKGROUP").getString()); + oLOVBean.setDetailField8(oRow.get("TO_WORKGROUP").getString()); + oLOVBean.setDetailField9(oRow.get("FROM_DESIGNATION").getString()); + oLOVBean.setDetailField10(oRow.get("TO_DESIGNATION").getString()); + oLOVBean.setDetailField11(oRow.get("TRANSFER_ORDER_TYPE").getString()); + oLOVBean.setDetailField12(oRow.get("FROM_SITE_NAME").getString()); + oLOVBean.setDetailField13(oRow.get("TO_SITE_NAME").getString()); + oLOVBean.setDetailField14(EnrgiseUtil.convertToString(oRow.get("TRANSFER_EFFECT_DATE").getDate())); + arylstList.add(oLOVBean); + } + arylstList = checkLOVConstraint(arylstList); + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRANS_CNCL_APPL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "No Save"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmEmpTransCnclApplHdrBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getApplnNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCancApplcn.applnNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getApplnDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCancApplcn.applnDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getReason())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCancApplcn.reason"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getEmpNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCancApplcn.employeeNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkHeaderFields(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstList1 = new ArrayList(); + if (oHrmEmpTransCnclApplHdrBean.getGeneratedBy().equalsIgnoreCase("O")) + if (!EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getOfcNoteDate()) || !EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getOfcNoteNo())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransCncl.office.value")); + if (oHrmEmpTransCnclApplHdrBean.getGeneratedBy().equalsIgnoreCase("S")) + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getOfcNoteDate()) || EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getOfcNoteNo())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.common.header.value")); + if (oHrmEmpTransCnclApplHdrBean.getCancelDeferFlag().equalsIgnoreCase("C")) + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDefermentPeriod()) || EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDeferredDate())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.common.header.value")); + if (oHrmEmpTransCnclApplHdrBean.getCancelDeferFlag().equalsIgnoreCase("C")) + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDefermentPeriod()) || EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDeferredDate())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.common.header.value")); + if (oHrmEmpTransCnclApplHdrBean.getCancelDeferFlag().equalsIgnoreCase("D")) + if (!EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDeferredDate())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransCncl.defer.value")); + reportError(arylstList1); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList arylstParam6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmEmpTransCnclApplHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmEmpTransCnclApplHdrBean)oBaseHeaderBean, arylstErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) + if (!oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("N")) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from hrm_emp_trans_cncl_appl where application_no= '").concat(String.valueOf(oHrmEmpTransCnclApplHdrBean.getApplnNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator oIt = arylstList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.header.uniqueConstraintViolated", "M"); + } + } + + private void checkDatesConstraint(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getOfcNoteDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpTransCnclApplHdrBean.getOfcNoteDate(), oHrmEmpTransCnclApplHdrBean.getApplnDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.empTransCncl.officedateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getApplnDate())) { + int iDateFlag1 = EnrgiseUtil.compareDates(dateFormat, oHrmEmpTransCnclApplHdrBean.getApplnDate(), oHrmEmpTransCnclApplHdrBean.getOrderDate()); + if (iDateFlag1 == -1 && iDateFlag1 != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.empTransCncl.appdateConstraintViolated")); + } + } + + public String getHrOrderInfo(String sOrdDtlId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int iCount = 0; + String sStatus = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sOrdDtlId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnCnlAppEmpdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + sStatus = oRow.get("APPROVED_FLAG").getString(); + } + return sStatus; + } + + private ArrayList checkLOVConstraint(ArrayList arylstList) throws EnrgiseSystemException { + LOVBean def = null; + ArrayList arylstNewList = new ArrayList(); + Iterator oit = arylstList.iterator(); + while (oit.hasNext()) { + def = oit.next(); + String Id = def.getDetailField1(); + String sFlag = getHrOrderInfo(Id); + if (sFlag == null) + arylstNewList.add(def); + if (sFlag != null) + if (!sFlag.equalsIgnoreCase("P") && !sFlag.equalsIgnoreCase("N") && !sFlag.equalsIgnoreCase("A")) + arylstNewList.add(def); + } + return arylstNewList; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String defPeriod = null; + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDeferredDate())) + oHrmEmpTransCnclApplHdrBean.setDefermentPeriod(defPeriod); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmEmpTransCnclApplHdrBean.getOrderDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmEmpTransCnclApplHdrBean.getApplnNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmEmpTransCnclApplHdrBean.getGeneratedBy())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmEmpTransCnclApplHdrBean.getOfcNoteNo())); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getOfcNoteDate()))); + arylstParameters.add(new DBObject(8, 1, 12, oHrmEmpTransCnclApplHdrBean.getCancelDeferFlag())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmEmpTransCnclApplHdrBean.getDefermentPeriod())); + arylstParameters.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getDeferredDate()))); + arylstParameters.add(new DBObject(11, 1, 12, oHrmEmpTransCnclApplHdrBean.getReason())); + arylstParameters.add(new DBObject(12, 1, 12, "A")); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getEffectDate()))); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(16, 1, 12, null)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.proc_UpsertHrEmpTrnsCnclApp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmEmpTransCnclApplHdrBean.getOrderDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmEmpTransCnclApplHdrBean.getApplnNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmEmpTransCnclApplHdrBean.getGeneratedBy())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmEmpTransCnclApplHdrBean.getOfcNoteNo())); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getOfcNoteDate()))); + arylstParameters.add(new DBObject(8, 1, 12, oHrmEmpTransCnclApplHdrBean.getCancelDeferFlag())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmEmpTransCnclApplHdrBean.getDefermentPeriod())); + arylstParameters.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getDeferredDate()))); + arylstParameters.add(new DBObject(11, 1, 12, oHrmEmpTransCnclApplHdrBean.getReason())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmEmpTransCnclApplHdrBean.getDeferredStatus())); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpTransCnclApplHdrBean.getEffectDate()))); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(16, 1, 12, oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.proc_UpsertHrEmpTrnsCnclApp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParameters.add(new DBObject(1, 1, 12, oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.proc_DelHrmEmpTransCnclApplHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public String submitTransferCnclAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.procSubmitTransferCnclAppl(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String approveTransferCnclAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.procApproveTransferCnclAppl(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectTransferCnclAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCL.procRejectTransferCnclAppl(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Transfer"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("TransCncl"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Cancellation Application No:").concat(String.valueOf(oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Cancellation Application No:").concat(String.valueOf(oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Deputation Application No:").concat(String.valueOf(oHrmEmpTransCnclApplHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclOrderForSingleEmpBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclOrderForSingleEmpBO.java new file mode 100644 index 0000000..e5b8b47 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransCnclOrderForSingleEmpBO.java @@ -0,0 +1,673 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmATDTransCnclOrderForSingleEmpBO extends HrmBaseBO { + public HrmATDTransCnclOrderForSingleEmpBO() {} + + public HrmATDTransCnclOrderForSingleEmpBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public LovVO getHrmTrnCnclOrderApplnNoLOVQdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("appNoId"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.appNo"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.appDate"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.employeeName"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.transOrderNo"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.transOrderDate"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.transEffectDate"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String employeeId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("employeeId") != null) { + employeeId = oLovQueryVO.getProperty("employeeId"); + System.out.println(employeeId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, employeeId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetTrnsCnOrdAppLOVQdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oLOVBean.setDetailField4(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField5(oRow.get("TRANSFER_ORDER_NO").getString()); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oLOVBean.setDetailField7(EnrgiseUtil.convertToString(oRow.get("TRANSFER_EFFECT_DATE").getDate())); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnCnclOrderApplnNoLOVIdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("appNoId"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.appNo"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.appDate"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.employeeName"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.transOrderNo"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.transOrderDate"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.transEffectDate"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String employeeId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("employeeId") != null) { + employeeId = oLovQueryVO.getProperty("employeeId"); + System.out.println(employeeId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, employeeId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetTrnsCnOrdAppLOVIdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oLOVBean.setDetailField4(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField5(oRow.get("TRANSFER_ORDER_NO").getString()); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oLOVBean.setDetailField7(EnrgiseUtil.convertToString(oRow.get("TRANSFER_EFFECT_DATE").getDate())); + arylstList.add(oLOVBean); + } + arylstList = checkLOVConstraint(arylstList); + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrnCnclOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("orderId"); + arylstHeaderList.add("hrm.HrmATDTransCnclOrderForSingleEmp.orderNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnsCnclOrdLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("ORDER_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpTransCnclOrderHdrMetaInfo(HrmATDTransCnclOrderSingleEmpQVO oHrmATDTransCnclOrderSingleEmpQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + if (EnrgiseUtil.checkString(oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmATDTransCnclOrderSingleEmpQVO.setHeaderPrimaryKey(sPrimaryKey[0]); + oHrmATDTransCnclOrderSingleEmpQVO.setHeaderPrimaryKey1(sPrimaryKey[1]); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getOrderNo())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getAppNo())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getEmployeeId())); + arylstParameters.add(new DBObject(6, 2, -5)); + arylstParameters.add(new DBObject(7, 2, 93)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.proc_HrEmpTransCnclOrdHdrCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpTransCnclOrderHeaderInfo(HrmATDTransCnclOrderSingleEmpQVO oHrmATDTransCnclOrderSingleEmpQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmATDTransCnclOrderSingleEmpQVO == null) + oHrmATDTransCnclOrderSingleEmpQVO = new HrmATDTransCnclOrderSingleEmpQVO(); + if (EnrgiseUtil.checkString(oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmATDTransCnclOrderSingleEmpQVO.setHeaderPrimaryKey(sPrimaryKey[0]); + oHrmATDTransCnclOrderSingleEmpQVO.setHeaderPrimaryKey1(sPrimaryKey[1]); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getOrderNo())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getAppNo())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmATDTransCnclOrderSingleEmpQVO.getEmployeeId())); + arylstParameters.add(new DBObject(8, 2, -10)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.proc_GetHrEmpTransCnclOrderHdr(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = new HrmTransCnclOrderSingEmpHdrBean(); + oHrmTransCnclOrderSingEmpHdrBean.setAppNoId(oRow.get("APP_ID").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setAppNo(oRow.get("APPLICATION_NO").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setAppDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmTransCnclOrderSingEmpHdrBean.setOrderNo(oRow.get("ORDER_NO").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setOrderDate(EnrgiseUtil.convertToString(oRow.get("ORDER_DATE").getDate())); + oHrmTransCnclOrderSingEmpHdrBean.setHeaderPrimaryKey(oRow.get("CNCL_ORDER_HDR_ID").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setGeneratedBy(oRow.get("SELF_OFFICE_FLAG").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setCancDefFlag(oRow.get("CANCEL_DEFER_FLAG").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setCancStatus(oRow.get("APPROVED_FLAG").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setDefDate(EnrgiseUtil.convertToString(oRow.get("DEFER_DATE").getDate())); + oHrmTransCnclOrderSingEmpHdrBean.setHeaderPrimaryKey1(oRow.get("CNCL_ORDER_DTL_ID").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setDefPeriod(oRow.get("DEFER_PERIOD").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setEmployeeName(oRow.get("EMPNAME").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setTransOrderNo(oRow.get("TRANSFER_ORDER_NO").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setTransOrderDate(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oHrmTransCnclOrderSingEmpHdrBean.setTransEffectDate(EnrgiseUtil.convertToString(oRow.get("TRANSFER_EFFECT_DATE").getDate())); + oHrmTransCnclOrderSingEmpHdrBean.setApproverNoId(oRow.get("APPROVER_ID").getString()); + oHrmTransCnclOrderSingEmpHdrBean.setApproverName(oRow.get("APPROVER_NAME").getString()); + arylstHeaderList.add(oHrmTransCnclOrderSingEmpHdrBean); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRANS_ORDER_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String defPeriod = null; + String defDate = null; + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getDefDate())) + oHrmTransCnclOrderSingEmpHdrBean.setDefPeriod(defPeriod); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getOrderNo())); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransCnclOrderSingEmpHdrBean.getOrderDate()))); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getGeneratedBy())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getCancDefFlag())); + arylstParameters.add(new DBObject(6, 1, 12, "A")); + arylstParameters.add(new DBObject(7, 1, 12, null)); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getAppNoId())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getDefPeriod())); + arylstParameters.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransCnclOrderSingEmpHdrBean.getDefDate()))); + arylstParameters.add(new DBObject(11, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransCnclOrderSingEmpHdrBean.getTransEffectDate()))); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getApproverNoId())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(15, 1, 12, null)); + arylstParameters.add(new DBObject(16, 1, 12, null)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 12)); + arylstParameters.add(new DBObject(21, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.proc_UpsertHrEmpTrnsCnclorder(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String String1 = (String)oOutObject.getObject(); + System.out.println(String1); + DBObject oOutObject1 = arylstOutArray.get(1); + String String2 = (String)oOutObject1.getObject(); + System.out.println(String2); + returnString = String.valueOf(String.valueOf(String1).concat(String.valueOf(","))).concat(String.valueOf(String2)); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getOrderNo())); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransCnclOrderSingEmpHdrBean.getOrderDate()))); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getGeneratedBy())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getCancDefFlag())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getCancStatus())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getAppNoId())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getDefPeriod())); + arylstParameters.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransCnclOrderSingEmpHdrBean.getDefDate()))); + arylstParameters.add(new DBObject(11, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTransCnclOrderSingEmpHdrBean.getTransEffectDate()))); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getApproverNoId())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(16, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 12)); + arylstParameters.add(new DBObject(21, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.proc_UpsertHrEmpTrnsCnclorder(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String String1 = (String)oOutObject.getObject(); + System.out.println(String1); + DBObject oOutObject1 = arylstOutArray.get(1); + String String2 = (String)oOutObject1.getObject(); + System.out.println(String2); + returnString = String.valueOf(String.valueOf(String1).concat(String.valueOf(","))).concat(String.valueOf(String2)); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + oCommonBO.deleteChildDetailRec("HRM_EMP_TRNS_CNCL_ODR_DTL", "TRANS_CNCL_ORDER_HDR_ID", oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey(), null); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.proc_DelHrTrnsCnclOrdHdr(?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getAppNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransCnclOrder.appNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransCnclOrder.orderNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getOrderDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTransCnclOrder.orderDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getApproverNoId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmATDTransOrderForSingleEmp.approvedBy"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkHeaderFields(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstList1 = new ArrayList(); + if (oHrmTransCnclOrderSingEmpHdrBean.getCancDefFlag().equalsIgnoreCase("D")) + if (!EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getDefDate())) + arylstList1.add(new EnrgiseApplicationException("wenrgise.empTransCnclOrder.defer.value")); + reportError(arylstList1); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList arylstParam6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean, arylstErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + if (!oHrmTransCnclOrderSingEmpHdrBean.getCancStatus().equalsIgnoreCase("N")) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_EMP_TRNS_CNCL_ODR_HDR where ORDER_NO= '").concat(String.valueOf(oHrmTransCnclOrderSingEmpHdrBean.getOrderNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + System.out.println(oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey()); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator oIt = arylstList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.header.uniqueConstraintViolated", "M"); + } + } + + private void checkDatesConstraint(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getOrderDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTransCnclOrderSingEmpHdrBean.getOrderDate(), oHrmTransCnclOrderSingEmpHdrBean.getAppDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.empTransCnclOrder.orderdateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmTransCnclOrderSingEmpHdrBean.getDefDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTransCnclOrderSingEmpHdrBean.getDefDate(), oHrmTransCnclOrderSingEmpHdrBean.getTransEffectDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.empTransCnclOrder.defdateConstraintViolated")); + } + } + + public String getHrAppInfo(String sAppId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int iCount = 0; + String sStatus = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sAppId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetHrmTrnCnlOrddata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + sStatus = oRow.get("APPROVED_FLAG").getString(); + } + return sStatus; + } + + private ArrayList checkLOVConstraint(ArrayList arylstList) throws EnrgiseSystemException { + LOVBean def = null; + ArrayList arylstNewList = new ArrayList(); + Iterator oit = arylstList.iterator(); + while (oit.hasNext()) { + def = oit.next(); + String Id = def.getDetailField1(); + String sFlag = getHrAppInfo(Id); + if (sFlag == null) + arylstNewList.add(def); + if (sFlag != null) + if (!sFlag.equalsIgnoreCase("P") && !sFlag.equalsIgnoreCase("N") && !sFlag.equalsIgnoreCase("A")) + arylstNewList.add(def); + } + return arylstNewList; + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "To Be Done"; + } + + public String submitTranCnclOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.procSubmitTranCnclOrder(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String approveTranCnclOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.procApproveTranCnclOrder(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectTranCnclOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMEMPTRANSCNCLORDER.procRejectTranCnclOrder(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Transfer"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("TransCnclOrder"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Cancellation Order No:").concat(String.valueOf(oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Cancellation Order No:").concat(String.valueOf(oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Deputation Application No:").concat(String.valueOf(oHrmTransCnclOrderSingEmpHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransOrderForSingleEmpBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransOrderForSingleEmpBO.java new file mode 100644 index 0000000..89fea3d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmATDTransOrderForSingleEmpBO.java @@ -0,0 +1,838 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmATDTransOrderForSingleEmpBO extends HrmBaseBO { + public HrmATDTransOrderForSingleEmpBO() {} + + public HrmATDTransOrderForSingleEmpBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTransSingleEmpRecordMetaInfo(HrmATDTransSingleEmpQVO oHrmATDTransSingleEmpQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + if (EnrgiseUtil.checkString(oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmATDTransSingleEmpQVO.setHeaderPrimaryKey(sPrimaryKey[0]); + oHrmATDTransSingleEmpQVO.setHeaderPrimaryKey1(sPrimaryKey[1]); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransSingleEmpQVO.getOrderNo())); + arylstParameters.add(new DBObject(4, 1, 12, null)); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDTransSingleEmpQVO.getApplnNo())); + arylstParameters.add(new DBObject(6, 2, -5)); + arylstParameters.add(new DBObject(7, 2, 93)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + System.out.println(String.valueOf("transfer status :-").concat(String.valueOf(oHrmATDTransSingleEmpQVO.getOrderStatus()))); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSSINGLEEMP.proc_HrTransSingleEmpHdrCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTransSingleEmpHeaderInfo(HrmATDTransSingleEmpQVO oHrmATDTransSingleEmpQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + ArrayList arylstHeaderList = null; + if (oHrmATDTransSingleEmpQVO == null) + oHrmATDTransSingleEmpQVO = new HrmATDTransSingleEmpQVO(); + if (EnrgiseUtil.checkString(oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey().split(","); + oHrmATDTransSingleEmpQVO.setHeaderPrimaryKey(sPrimaryKey[0]); + oHrmATDTransSingleEmpQVO.setHeaderPrimaryKey1(sPrimaryKey[1]); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransSingleEmpQVO.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmATDTransSingleEmpQVO.getOrderNo())); + arylstParameters.add(new DBObject(6, 1, 12, null)); + arylstParameters.add(new DBObject(7, 1, 12, oHrmATDTransSingleEmpQVO.getApplnNo())); + arylstParameters.add(new DBObject(8, 2, -10)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSSINGLEEMP.proc_HrTransSingleEmpHdr(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmATDTransOrderForSingleEmpBean oSingleEmpHeader = new HrmATDTransOrderForSingleEmpBean(); + oSingleEmpHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oSingleEmpHeader.setHeaderPrimaryKey1(oRow.get("trans_dtl_id").getString()); + oSingleEmpHeader.setOrderNo(oRow.get("transfer_order_no").getString()); + oSingleEmpHeader.setOrderDate(EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate())); + oSingleEmpHeader.setOrderType(oRow.get("TRANSFER_ORDER_TYPE").getString()); + oSingleEmpHeader.setOrderStatus(oRow.get("APPROVED_FLAG").getString()); + oSingleEmpHeader.setEmpID(oRow.get("e_per_dtl_id").getString()); + oSingleEmpHeader.setEmpName(oRow.get("emp_name").getString()); + oSingleEmpHeader.setFromSite(oRow.get("from_loc").getString()); + oSingleEmpHeader.setToSite(oRow.get("to_loc").getString()); + oSingleEmpHeader.setFromSiteID(oRow.get("FROM_SITE_ID").getString()); + oSingleEmpHeader.setToSiteID(oRow.get("TO_SITE_ID").getString()); + oSingleEmpHeader.setReportingEmpId(oRow.get("rep_emp_name").getString()); + oSingleEmpHeader.setReptEmpID(oRow.get("rep_emp_id").getString()); + oSingleEmpHeader.setReportingDate(EnrgiseUtil.convertToString(oRow.get("REPORTING_DATE").getDate())); + oSingleEmpHeader.setRemarks(oRow.get("REMARKS").getString()); + arylstHeaderList.add(oSingleEmpHeader); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRANS_ORDER_HDR"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String sToSiteId = new String(); + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDTransOrderForSingleEmpBean.getOrderNo())); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDTransOrderForSingleEmpBean.getOrderDate()))); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransOrderForSingleEmpBean.getOrderType())); + arylstParameters.add(new DBObject(5, 1, 12, "A")); + arylstParameters.add(new DBObject(6, 1, 12, oHrmATDTransOrderForSingleEmpBean.getEmpID())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmATDTransOrderForSingleEmpBean.getFromSiteID())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmATDTransOrderForSingleEmpBean.getToSiteID())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmATDTransOrderForSingleEmpBean.getReptEmpID())); + arylstParameters.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDTransOrderForSingleEmpBean.getReportingDate()))); + arylstParameters.add(new DBObject(11, 1, 12, oHrmATDTransOrderForSingleEmpBean.getRemarks())); + arylstParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(14, 1, 12, null)); + arylstParameters.add(new DBObject(15, 1, 12, null)); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + String str = oHrmATDTransOrderForSingleEmpBean.getReptEmpID(); + String str2 = oHrmATDTransOrderForSingleEmpBean.getToSiteID(); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSSINGLEEMP.proc_UpsertHrTransSingleEmp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String String1 = (String)oOutObject.getObject(); + DBObject oOutObject1 = arylstOutArray.get(1); + String String2 = (String)oOutObject1.getObject(); + returnString = String.valueOf(String.valueOf(String1).concat(String.valueOf(","))).concat(String.valueOf(String2)); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmATDTransOrderForSingleEmpBean.getOrderNo())); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDTransOrderForSingleEmpBean.getOrderDate()))); + arylstParameters.add(new DBObject(4, 1, 12, oHrmATDTransOrderForSingleEmpBean.getOrderType())); + arylstParameters.add(new DBObject(5, 1, 12, "A")); + arylstParameters.add(new DBObject(6, 1, 12, oHrmATDTransOrderForSingleEmpBean.getEmpID())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmATDTransOrderForSingleEmpBean.getFromSiteID())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmATDTransOrderForSingleEmpBean.getToSiteID())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmATDTransOrderForSingleEmpBean.getReportingEmpId())); + arylstParameters.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmATDTransOrderForSingleEmpBean.getReportingDate()))); + arylstParameters.add(new DBObject(11, 1, 12, oHrmATDTransOrderForSingleEmpBean.getRemarks())); + arylstParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmATDTransOrderForSingleEmpBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmATDTransOrderForSingleEmpBean.getHeaderPrimaryKey1())); + arylstParameters.add(new DBObject(16, 2, 12)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSSINGLEEMP.proc_UpsertHrTransSingleEmp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String String1 = (String)oOutObject.getObject(); + DBObject oOutObject1 = arylstOutArray.get(1); + String String2 = (String)oOutObject1.getObject(); + returnString = String.valueOf(String.valueOf(String1).concat(String.valueOf(","))).concat(String.valueOf(String2)); + } else if (ScreenMode.equalsIgnoreCase("D")) { + + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public LovVO getHrmTransOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmATDTransOrderForSingleEmp.orderNo"); + arylstHeaderList.add("hrm.HrmATDTransOrderForSingleEmp.orderDate"); + arylstHeaderList.add("hrm.HrmATDTransOrderForSingleEmp.orderStatus"); + arylstHeaderList.add("hrm.HrmATDTransOrderForSingleEmp.orderType"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetTransOrderNoLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TRANSFER_ORDER_NO").getString()); + String orderDate = null; + if (String.valueOf(oRow.get("TRANSFER_ORDER_DATE")).equalsIgnoreCase("null")) { + orderDate = ""; + } else { + orderDate = formatter.format(oRow.get("TRANSFER_ORDER_DATE").getDate()); + } + oLOVBean.setDetailField3(orderDate); + oLOVBean.setDetailField4(oRow.get("TRANSFER_ORDER_TYPE").getString()); + oLOVBean.setDetailField5(oRow.get("APPROVED_FLAG").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmToSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmTransferOrder.SiteCode"); + arylstHeaderList.add("hrm.HrmTransferOrder.SiteName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String applId = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, applId)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetTransferToSiteLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(oRow.get("CODE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTransAplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmTransferOrder.empNo"); + arylstHeaderList.add("hrm.HrmTransferApplcn.employeeName"); + arylstHeaderList.add("hrm.HrmATDTransOrderForSingleEmp.fromSite"); + arylstHeaderList.add("fromSiteID"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empID = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_getTrnsOrderEmpNoLov(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NAME").getString()); + oLOVBean.setDetailField3(oRow.get("FROM_LOC").getString()); + oLOVBean.setDetailField4(oRow.get("from_loc_id").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTransAplnNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmTransferOrder.empNo"); + arylstHeaderList.add("hrm.HrmTransferApplcn.employeeName"); + arylstHeaderList.add("hrm.HrmATDTransOrderForSingleEmp.fromSite"); + arylstHeaderList.add("fromSiteID"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + String empID = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_getTrnsOrderEmpNoLov(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NAME").getString()); + oLOVBean.setDetailField3(oRow.get("FROM_LOC").getString()); + oLOVBean.setDetailField4(oRow.get("from_loc_id").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTransReptEmpNoLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmTransferOrder.empName"); + arylstHeaderList.add("hrm.HrmTransferOrder.RepEmpGrade"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String toSiteID = null; + if (oLovQueryVO.getProperty("toSiteID") != null) + toSiteID = oLovQueryVO.getProperty("toSiteID"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, toSiteID)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNSFRLOV.proc_GetTransRptEmpNoLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMPID").getString()); + oLOVBean.setDetailField2(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField3(oRow.get("empGrade").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList arylstParam6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean); + checkDatesConstraintHdr((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean, arylstErrorList); + checkNextDatesConstraintHdr((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean, arylstErrorList); + checkReportingDatesConstraintHdr((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean, arylstErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sRefId = oCommonBO.getRefList("HRM_EMP_TRANS_ORDER_DTL", "TRANS_ORDER_HDR_ID ", oHrmATDTransOrderForSingleEmpBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId)) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + if (!oHrmATDTransOrderForSingleEmpBean.getOrderStatus().equalsIgnoreCase("N")) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + } + reportError(arylstErrorList); + } + + private ArrayList checkLOVConstraint(ArrayList arylstList) throws EnrgiseSystemException { + LOVBean def = null; + HrmATDTransOrderForSingleEmpBean abc = null; + ArrayList arylstNewList = new ArrayList(); + Iterator oit = arylstList.iterator(); + while (oit.hasNext()) { + def = oit.next(); + String Id = def.getDetailField1(); + ArrayList transAppList = getHrTransAppDtlInfo(Id); + if (transAppList.size() == 0) { + arylstNewList.add(def); + continue; + } + Iterator oit1 = transAppList.iterator(); + while (oit1.hasNext()) { + abc = oit1.next(); + String sAppDtlId = abc.getHeaderPrimaryKey1(); + String sFlag = getHrStatusInfo(sAppDtlId); + if (sFlag == null) + arylstNewList.add(def); + if (sFlag != null) + if (!sFlag.equalsIgnoreCase("P") && !sFlag.equalsIgnoreCase("N") && !sFlag.equalsIgnoreCase("A")) + arylstNewList.add(def); + } + } + return arylstNewList; + } + + public ArrayList getHrTransAppDtlInfo(String sAppDtlId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int iCount = 0; + ArrayList arylstHrDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sAppDtlId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSORDER.proc_GetHrmApplDataById(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + arylstHrDetail = new ArrayList(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHrDetail = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = new HrmATDTransOrderForSingleEmpBean(); + oHrmATDTransOrderForSingleEmpBean.setHeaderPrimaryKey1(oRow.get("ID").getString()); + arylstHrDetail.add(oHrmATDTransOrderForSingleEmpBean); + } + return arylstHrDetail; + } + + public String getHrStatusInfo(String sAppDtlId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int iCount = 0; + String sStatus = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sAppDtlId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRANSORDER.proc_GetHrmApplData(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + sStatus = oRow.get("APPROVED_FLAG").getString(); + } + return sStatus; + } + + public String getMaxTransOrderDate() throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int iCount = 0; + String sMaxTransOrderdate = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -10)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMRLSEORDERLOV.proc_GetMaxTransOrderDate(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + sMaxTransOrderdate = EnrgiseUtil.convertToString(oRow.get("TRANSFER_ORDER_DATE").getDate()); + } + return sMaxTransOrderdate; + } + + private void checkDatesConstraintHdr(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderDate())) { + String sMaxTrnsOrdDate = getMaxTransOrderDate(); + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmATDTransOrderForSingleEmpBean.getOrderDate(), sMaxTrnsOrdDate); + if (iDateFlag == -1 && iDateFlag != -2) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.HrmTransferOrder.transferOrderDateConstraintViolated")); + } + } + + private void checkNextDatesConstraintHdr(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderDate())) { + String sMaxTrnsOrdDate = getMaxTransOrderDate(); + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmATDTransOrderForSingleEmpBean.getTrnsfrEffectDate(), oHrmATDTransOrderForSingleEmpBean.getOrderDate()); + if (iDateFlag == -1 && iDateFlag != -2) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.HrmTransferOrder.transdateConstraintViolated")); + } + } + + private void checkReportingDatesConstraintHdr(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getTrnsfrEffectDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmATDTransOrderForSingleEmpBean.getReportingDate(), oHrmATDTransOrderForSingleEmpBean.getTrnsfrEffectDate()); + if (iDateFlag == -1 && iDateFlag != -2) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.HrmTransferOrder.transReportingDateConstraintViolated")); + } + } + + private void checkMandatoryHeader(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmATDTransOrderForSingleEmp.orderNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmATDTransOrderForSingleEmp.orderDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from hrm_emp_trans_order_hdr where TRANSFER_ORDER_NO= '").concat(String.valueOf(oHrmATDTransOrderForSingleEmpBean.getOrderNo()))).concat(String.valueOf("'")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator oIt = arylstList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmATDTransOrderForSingleEmpBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.header.uniqueConstraintViolated", "M"); + } + } + + public String approveTranOrderSingleEmp(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMTRANSSINGLEEMP.procApproveTranOrderSingleEmp(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectTranOrderSingleEmp(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMTRANSSINGLEEMP.procRejectTranOrderSingleEmp(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String submitTranOrderSingleEmp(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMTRANSSINGLEEMP.procSubmitTranOrderSingleEmp(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String cancelTransfer(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList arylstDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean; + String returnString = null; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + String sHeaderPrimaryKey1 = (null != oHrmATDTransOrderForSingleEmpBean) ? oHrmATDTransOrderForSingleEmpBean.getHeaderPrimaryKey1() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "hrmtranssingleemp.proccanceltranordersingleemp(?,?,?,?)"); + returnString = String.valueOf(String.valueOf(sHeaderPrimaryKey).concat(String.valueOf(","))).concat(String.valueOf(sHeaderPrimaryKey1)); + return returnString; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmTransferApplicationHdrBean oHrmTransferApplicationHdrBean = (HrmTransferApplicationHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmTransferApplicationHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Training"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("TransOrder"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Order No:").concat(String.valueOf(oHrmTransferApplicationHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmTransferApplicationHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Transfer Order No:").concat(String.valueOf(oHrmTransferApplicationHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Deputation Application No:").concat(String.valueOf(oHrmTransferApplicationHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdhocReportBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdhocReportBO.java new file mode 100644 index 0000000..5c0b286 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdhocReportBO.java @@ -0,0 +1,340 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.Statement; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.sql.DataSource; +import jxl.format.CellFormat; +import jxl.write.Label; +import jxl.write.WritableCell; +import jxl.write.WritableCellFormat; +import jxl.write.WritableFont; +import jxl.write.WritableSheet; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.bean.HrmLvMstDtlBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.vo.HrmAdhocReportQVO; + +public class HrmAdhocReportBO extends HrmBaseBO { + public HrmAdhocReportBO() {} + + public HrmAdhocReportBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAdhocReportHdrMetaInfo(HrmAdhocReportQVO oHrmAdhocReportQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAdhocReportQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAdhocReportQVO.getCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAdhocReportQVO.getCategory_tag())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmadhocreport.proc_hrmadhocreportCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAdhocReportHeaderInfo(HrmAdhocReportQVO oHrmAdhocReportQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmAdhocReportQVO == null) + oHrmAdhocReportQVO = new HrmAdhocReportQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAdhocReportQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAdhocReportQVO.getCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAdhocReportQVO.getCategory_tag())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmadhocreport.proc_hrmadhocreportDtl(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmAdhocReportHdrBean oReportHeader = new HrmAdhocReportHdrBean(); + oReportHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oReportHeader.setId(oRow.get("ID").getString()); + oReportHeader.setCode(oRow.get("CODE").getString()); + oReportHeader.setQuery_desc(oRow.get("query_desc").getString()); + oReportHeader.setCategory_tag(oRow.get("category_tag").getString()); + oReportHeader.setQuery(oRow.get("query_dtl").getString()); + oReportHeader.setParam1(oRow.get("param1").getString()); + oReportHeader.setParam2(oRow.get("param2").getString()); + oReportHeader.setParam3(oRow.get("param3").getString()); + oReportHeader.setParam4(oRow.get("param4").getString()); + oReportHeader.setParam5(oRow.get("param5").getString()); + oReportHeader.setParam6(oRow.get("param6").getString()); + oReportHeader.setParam7(oRow.get("param7").getString()); + oReportHeader.setParam8(oRow.get("param8").getString()); + oReportHeader.setParam9(oRow.get("param9").getString()); + oReportHeader.setParam10(oRow.get("param10").getString()); + arylstHeaderList.add(oReportHeader); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_LEAVE_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAdhocReportHdrBean oHrmAdhocReportHdrBean = (HrmAdhocReportHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAdhocReportHdrBean.getId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAdhocReportHdrBean.getCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAdhocReportHdrBean.getQuery_desc())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAdhocReportHdrBean.getCategory_tag())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAdhocReportHdrBean.getQuery())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAdhocReportHdrBean.getParam1())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAdhocReportHdrBean.getParam2())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAdhocReportHdrBean.getParam3())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAdhocReportHdrBean.getParam4())); + arylstParam.add(new DBObject(11, 1, 12, oHrmAdhocReportHdrBean.getParam5())); + arylstParam.add(new DBObject(12, 1, 12, oHrmAdhocReportHdrBean.getParam6())); + arylstParam.add(new DBObject(13, 1, 12, oHrmAdhocReportHdrBean.getParam7())); + arylstParam.add(new DBObject(14, 1, 12, oHrmAdhocReportHdrBean.getParam8())); + arylstParam.add(new DBObject(15, 1, 12, oHrmAdhocReportHdrBean.getParam9())); + arylstParam.add(new DBObject(16, 1, 12, oHrmAdhocReportHdrBean.getParam10())); + arylstParam.add(new DBObject(17, 2, 12)); + arylstParam.add(new DBObject(18, 2, 12)); + arylstParam.add(new DBObject(19, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmadhocreport.proc_Upserthrmadhocreport(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAdhocReportHdrBean.getId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAdhocReportHdrBean.getCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAdhocReportHdrBean.getQuery_desc())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAdhocReportHdrBean.getCategory_tag())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAdhocReportHdrBean.getQuery())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAdhocReportHdrBean.getParam1())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAdhocReportHdrBean.getParam2())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAdhocReportHdrBean.getParam3())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAdhocReportHdrBean.getParam4())); + arylstParam.add(new DBObject(11, 1, 12, oHrmAdhocReportHdrBean.getParam5())); + arylstParam.add(new DBObject(12, 1, 12, oHrmAdhocReportHdrBean.getParam6())); + arylstParam.add(new DBObject(13, 1, 12, oHrmAdhocReportHdrBean.getParam7())); + arylstParam.add(new DBObject(14, 1, 12, oHrmAdhocReportHdrBean.getParam8())); + arylstParam.add(new DBObject(15, 1, 12, oHrmAdhocReportHdrBean.getParam9())); + arylstParam.add(new DBObject(16, 1, 12, oHrmAdhocReportHdrBean.getParam10())); + arylstParam.add(new DBObject(17, 2, 12)); + arylstParam.add(new DBObject(18, 2, 12)); + arylstParam.add(new DBObject(19, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmadhocreport.proc_Upserthrmadhocreport(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmAdhocReportHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmadhocreport.proc_Deletehrmadhocreport(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getQueryLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdhocReport.id"); + arylstHeaderList.add("hrm.HrmAdhocReport.code"); + arylstHeaderList.add("hrm.HrmAdhocReport.tag"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmadhocreport.proc_GetQueryCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("CATEGORY_TAG").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmLvMstHdrBean oHrmLvMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException {} + + private void checkMandatory(HrmLvMstDtlBean oHrmLvMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + public void downloadAdhocReport(HrmAdhocReportHdrBean oHrmAdhocReportHdrBean, WritableSheet s) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAdhocReportHdrBean.getId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAdhocReportHdrBean.getParamval1())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAdhocReportHdrBean.getParamval2())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAdhocReportHdrBean.getParamval3())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAdhocReportHdrBean.getParamval4())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAdhocReportHdrBean.getParamval5())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAdhocReportHdrBean.getParamval6())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAdhocReportHdrBean.getParamval7())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAdhocReportHdrBean.getParamval8())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAdhocReportHdrBean.getParamval9())); + arylstParam.add(new DBObject(11, 1, 12, oHrmAdhocReportHdrBean.getParamval10())); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 12)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmadhocreport.proc_Executehrmadhocreport(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject outObject = arylstOutArray.get(0); + String query = (String)outObject.getObject(); + DataSource oDataSource = null; + Statement stmt = null; + Connection conn = null; + ResultSet rs = null; + try { + oDataSource = (DataSource)ServiceLocator.getLocator().getService("jdbc/conDS"); + conn = oDataSource.getConnection(); + stmt = conn.createStatement(); + rs = stmt.executeQuery(query); + ResultSetMetaData rsmd = rs.getMetaData(); + int numColumns = rsmd.getColumnCount(); + int rowPos = 0; + WritableFont wf = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); + WritableCellFormat cf = new WritableCellFormat(wf); + cf.setWrap(false); + ArrayList heading = new ArrayList(numColumns); + for (int i = 1; i < numColumns + 1; i++) { + String columnName = rsmd.getColumnName(i); + s.addCell((WritableCell)new Label(i - 1, rowPos, columnName, (CellFormat)cf)); + heading.add(i - 1, columnName); + } + wf = new WritableFont(WritableFont.ARIAL, 8, WritableFont.NO_BOLD); + while (rs.next()) { + rowPos++; + int colPos = -1; + Iterator itrHeading = heading.iterator(); + while (colPos + 1 < heading.size()) { + colPos++; + String sHeading = heading.get(colPos).toString(); + cf = new WritableCellFormat(wf); + cf.setWrap(false); + s.addCell((WritableCell)new Label(colPos, rowPos, rs.getString(sHeading), (CellFormat)cf)); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + if (stmt != null) + stmt.close(); + if (rs != null) + rs.close(); + if (conn != null) + conn.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvApplnBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvApplnBO.java new file mode 100644 index 0000000..1ebc1ed --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvApplnBO.java @@ -0,0 +1,843 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; + +public class HrmAdvApplnBO extends HrmBaseBO { + public HrmAdvApplnBO() {} + + public HrmAdvApplnBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getEmpAdvAppHdrMetaInfo(HrmEmpAdvAppQueryVO oHrmEmpAdvAppQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sEmpId = oHrmEmpAdvAppQueryVO.getEmpId(); + String sEmpNo = oHrmEmpAdvAppQueryVO.getEmployeeId(); + String sCode = oHrmEmpAdvAppQueryVO.getAdvanceCode(); + String sStatus = oHrmEmpAdvAppQueryVO.getAdvanceStatus(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmEmpAdvAppQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, sEmpNo)); + oParameters.add(new DBObject(3, 1, 12, sEmpId)); + oParameters.add(new DBObject(4, 1, 12, sCode)); + oParameters.add(new DBObject(5, 1, 12, sStatus)); + oParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppQueryVO.getFromDate()))); + oParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppQueryVO.getToDate()))); + oParameters.add(new DBObject(8, 2, -5)); + oParameters.add(new DBObject(9, 2, 93)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_HrEmpAdvApplHdrCount(?,?,?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getEmpAdvAppHeader(HrmEmpAdvAppQueryVO oHrmEmpAdvAppQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sEmpNo = oHrmEmpAdvAppQueryVO.getEmployeeId(); + String sCode = oHrmEmpAdvAppQueryVO.getAdvanceCode(); + String sStatus = oHrmEmpAdvAppQueryVO.getAdvanceStatus(); + String sEmpId = oHrmEmpAdvAppQueryVO.getEmpId(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oEmpAdvAppDetail = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmEmpAdvAppQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, sEmpNo)); + oParameters.add(new DBObject(5, 1, 12, sEmpId)); + oParameters.add(new DBObject(6, 1, 12, sCode)); + oParameters.add(new DBObject(7, 1, 12, sStatus)); + oParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppQueryVO.getFromDate()))); + oParameters.add(new DBObject(9, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppQueryVO.getToDate()))); + oParameters.add(new DBObject(10, 2, -10)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_HrEmpAdvApplHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = oList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + count++; + oRow = oIt.next(); + HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean = new HrmEmpAdvAppHdrBean(); + oHrmEmpAdvAppHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmEmpAdvAppHdrBean.setEmployeeNumber(oRow.get("EMP_NO").getString()); + oHrmEmpAdvAppHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmEmpAdvAppHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmEmpAdvAppHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmEmpAdvAppHdrBean.setGrade(oRow.get("GRADE").getString()); + oHrmEmpAdvAppHdrBean.setDesignation(oRow.get("DESIGNATION").getString()); + oHrmEmpAdvAppHdrBean.setLocation(oRow.get("LOCATION").getString()); + oHrmEmpAdvAppHdrBean.setEmployeeId(oRow.get("E_PER_DTL_ID").getString()); + oHrmEmpAdvAppHdrBean.setAdvanceCodeId(oRow.get("ADV_CODE").getString()); + oHrmEmpAdvAppHdrBean.setAdvanceCode(oRow.get("NAME").getString()); + oHrmEmpAdvAppHdrBean.setDateApplied(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmEmpAdvAppHdrBean.setAmountApplied(oRow.get("APPLIED_AMT").getString()); + oHrmEmpAdvAppHdrBean.setEligibleAmount(oRow.get("ELIG_AMOUNT").getString()); + oHrmEmpAdvAppHdrBean.setSanctionedAmount(oRow.get("SANCTIONED_AMT").getString()); + oHrmEmpAdvAppHdrBean.setSanctionDate(EnrgiseUtil.convertToString(oRow.get("SANCTION_DATE").getDate())); + oHrmEmpAdvAppHdrBean.setReason(oRow.get("REASON").getString()); + oHrmEmpAdvAppHdrBean.setApproverNoId(oRow.get("APPROVER_ID").getString()); + oHrmEmpAdvAppHdrBean.setApproverName(oRow.get("APPROVER_NAME").getString()); + oHrmEmpAdvAppHdrBean.setRemarks(oRow.get("REMARKS").getString()); + oHrmEmpAdvAppHdrBean.setPayrollMonth(oRow.get("RECOVERY_YYYYMM").getString()); + oHrmEmpAdvAppHdrBean.setNoOfInst(oRow.get("NO_OF_INSTALLMENT").getString()); + oHrmEmpAdvAppHdrBean.setMonthlyInstallment(oRow.get("MTH_INST_AMOUNT").getString()); + oHrmEmpAdvAppHdrBean.setSettledAmount(oRow.get("SETL_AMOUNT").getString()); + oHrmEmpAdvAppHdrBean.setBalance(oRow.get("BALANCE").getString()); + oHrmEmpAdvAppHdrBean.setPaidInstallments(oRow.get("PAID_INSTALLMENTS").getString()); + oEmpAdvAppDetail.add(oHrmEmpAdvAppHdrBean); + } + return oEmpAdvAppDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_ADV_TXN"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmAdvAppAdvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmEmpAdvance.advanceName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String employeeId = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("employeeId") != null) + employeeId = oLovQueryVO.getProperty("employeeId"); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, employeeId)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_GetHrmAdvAppAdvCdLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAdvAppAdvCdInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmEmpAdvance.advanceName"); + oHeaderList.add("hrm.HrmEmpAdvance.noOfInst"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_GetHrmAdvAppCdInsLOVdata(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(oRow.get("SETTLEMENT_PERIOD").getString()); + oList.add(oLOVBean); + } + oList = checkLOVConstraint(oList, oLovQueryVO); + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAdvAppAdvEligLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmEmpAdvance.advanceName"); + oHeaderList.add("hrm.HrmEmpAdvance.effectiveFrom"); + oHeaderList.add("hrm.HrmEmpAdvance.effectiveTo"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_GetHrmAdvAppEligLOVdata(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_FROM").getDate())); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_TO").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean = (HrmEmpAdvAppHdrBean)oBaseHeaderBean; + double iMonthlyInst = 0.0D; + double iSanctionAmt = 0.0D; + int iNoOfInst = 0; + iNoOfInst = Integer.parseInt(oHrmEmpAdvAppHdrBean.getNoOfInst()); + iSanctionAmt = Double.parseDouble(oHrmEmpAdvAppHdrBean.getSanctionedAmount()); + iMonthlyInst = iSanctionAmt / iNoOfInst; + String sEligibleAmount = calculateEligibleAmount((HrmEmpAdvAppHdrBean)oBaseHeaderBean); + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHrmEmpAdvAppHdrBean.getEmployeeId())); + oParameters.add(new DBObject(3, 1, 12, oHrmEmpAdvAppHdrBean.getAdvanceCodeId())); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppHdrBean.getDateApplied()))); + oParameters.add(new DBObject(5, 1, 12, oHrmEmpAdvAppHdrBean.getAmountApplied())); + oParameters.add(new DBObject(6, 1, 12, sEligibleAmount)); + oParameters.add(new DBObject(7, 1, 12, oHrmEmpAdvAppHdrBean.getSanctionedAmount())); + oParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppHdrBean.getSanctionDate()))); + oParameters.add(new DBObject(9, 1, 12, oHrmEmpAdvAppHdrBean.getApproverNoId())); + oParameters.add(new DBObject(10, 1, 12, oHrmEmpAdvAppHdrBean.getRemarks())); + oParameters.add(new DBObject(11, 1, 12, oHrmEmpAdvAppHdrBean.getPayrollMonth())); + oParameters.add(new DBObject(12, 1, 12, oHrmEmpAdvAppHdrBean.getNoOfInst())); + oParameters.add(new DBObject(13, 1, 12, String.valueOf(iMonthlyInst))); + oParameters.add(new DBObject(14, 1, 12, oHrmEmpAdvAppHdrBean.getReason())); + oParameters.add(new DBObject(15, 1, 12, oHrmEmpAdvAppHdrBean.getAmountSettled())); + oParameters.add(new DBObject(16, 1, 12, oHrmEmpAdvAppHdrBean.getBalance())); + oParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(19, 1, 12, oHrmEmpAdvAppHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(20, 2, 12)); + oParameters.add(new DBObject(21, 2, 12)); + oParameters.add(new DBObject(22, 2, 12)); + oParameters.add(new DBObject(23, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_UpsertHrEmpAdvAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getBulkSettleAmount())) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmEmpAdvAppHdrBean.getEmployeeId())); + oParameters.add(new DBObject(3, 1, 12, oHrmEmpAdvAppHdrBean.getAdvanceCodeId())); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppHdrBean.getDateApplied()))); + oParameters.add(new DBObject(5, 1, 12, oHrmEmpAdvAppHdrBean.getAmountApplied())); + oParameters.add(new DBObject(6, 1, 12, sEligibleAmount)); + oParameters.add(new DBObject(7, 1, 12, oHrmEmpAdvAppHdrBean.getSanctionedAmount())); + oParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppHdrBean.getSanctionDate()))); + oParameters.add(new DBObject(9, 1, 12, oHrmEmpAdvAppHdrBean.getApproverNoId())); + oParameters.add(new DBObject(10, 1, 12, oHrmEmpAdvAppHdrBean.getRemarks())); + oParameters.add(new DBObject(11, 1, 12, oHrmEmpAdvAppHdrBean.getPayrollMonth())); + oParameters.add(new DBObject(12, 1, 12, oHrmEmpAdvAppHdrBean.getNoOfInst())); + oParameters.add(new DBObject(13, 1, 12, String.valueOf(iMonthlyInst))); + oParameters.add(new DBObject(14, 1, 12, oHrmEmpAdvAppHdrBean.getReason())); + oParameters.add(new DBObject(15, 1, 12, oHrmEmpAdvAppHdrBean.getAmountSettled())); + oParameters.add(new DBObject(16, 1, 12, oHrmEmpAdvAppHdrBean.getBalance())); + oParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(19, 1, 12, oHrmEmpAdvAppHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(20, 2, 12)); + oParameters.add(new DBObject(21, 2, 12)); + oParameters.add(new DBObject(22, 2, 12)); + oParameters.add(new DBObject(23, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_UpsertHrEmpAdvAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else { + double iAmountSettled = 0.0D; + double iBalance = 0.0D; + double bulk = Double.parseDouble(oHrmEmpAdvAppHdrBean.getBulkSettleAmount()); + if (bulk < Double.parseDouble(oHrmEmpAdvAppHdrBean.getBalance())) { + iAmountSettled = Double.parseDouble(oHrmEmpAdvAppHdrBean.getSettledAmount()) + bulk; + iBalance = Double.parseDouble(oHrmEmpAdvAppHdrBean.getBalance()) - bulk; + } else if (bulk >= Double.parseDouble(oHrmEmpAdvAppHdrBean.getBalance())) { + iAmountSettled = Double.parseDouble(oHrmEmpAdvAppHdrBean.getSettledAmount()) + bulk; + iBalance = 0.0D; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmEmpAdvAppHdrBean.getEmployeeId())); + oParameters.add(new DBObject(3, 1, 12, oHrmEmpAdvAppHdrBean.getAdvanceCodeId())); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppHdrBean.getDateApplied()))); + oParameters.add(new DBObject(5, 1, 12, oHrmEmpAdvAppHdrBean.getAmountApplied())); + oParameters.add(new DBObject(6, 1, 12, sEligibleAmount)); + oParameters.add(new DBObject(7, 1, 12, oHrmEmpAdvAppHdrBean.getSanctionedAmount())); + oParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppHdrBean.getSanctionDate()))); + oParameters.add(new DBObject(9, 1, 12, oHrmEmpAdvAppHdrBean.getApproverNoId())); + oParameters.add(new DBObject(10, 1, 12, oHrmEmpAdvAppHdrBean.getRemarks())); + oParameters.add(new DBObject(11, 1, 12, oHrmEmpAdvAppHdrBean.getPayrollMonth())); + oParameters.add(new DBObject(12, 1, 12, oHrmEmpAdvAppHdrBean.getNoOfInst())); + oParameters.add(new DBObject(13, 1, 12, String.valueOf(iMonthlyInst))); + oParameters.add(new DBObject(14, 1, 12, oHrmEmpAdvAppHdrBean.getReason())); + oParameters.add(new DBObject(15, 1, 12, String.valueOf(iAmountSettled))); + oParameters.add(new DBObject(16, 1, 12, String.valueOf(iBalance))); + oParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(19, 1, 12, oHrmEmpAdvAppHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(20, 2, 12)); + oParameters.add(new DBObject(21, 2, 12)); + oParameters.add(new DBObject(22, 2, 12)); + oParameters.add(new DBObject(23, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_UpsertHrEmpAdvAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oHrmEmpAdvAppHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.proc_DelHrEmpAdvApplHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean = (HrmEmpAdvAppHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getPayrollMonth())) + checkRecoveryYearMonth((HrmEmpAdvAppHdrBean)oBaseHeaderBean, sScreenMode); + checkUniqueHeader((HrmEmpAdvAppHdrBean)oBaseHeaderBean); + } + if (sScreenMode.equalsIgnoreCase("N")) + checkSanctionedAmount((HrmEmpAdvAppHdrBean)oBaseHeaderBean); + if (sScreenMode.equalsIgnoreCase("U")) + checkBulkAmount((HrmEmpAdvAppHdrBean)oBaseHeaderBean); + } + reportError(oErrorList); + } + + private void checkRecoveryYearMonth(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean, String sScreenMode) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + String sPayrollMonth = new String(); + String sMonth = new String(); + sPayrollMonth = oHrmEmpAdvAppHdrBean.getPayrollMonth(); + if (Integer.parseInt(sPayrollMonth.substring(4, 6)) < 1 || Integer.parseInt(sPayrollMonth.substring(4, 6)) > 12) { + arylstParam.add("Advance Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth", arylstParam)); + } + if (Integer.parseInt(sPayrollMonth.substring(0, 1)) == 0) { + arylstParam.add("Advance Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollYear", arylstParam)); + } + HrmCommonBO oBO = new HrmCommonBO(); + String sysDate = oBO.getSysDate(); + String sYYYYMM = String.valueOf(sysDate.substring(6, sysDate.length())).concat(String.valueOf(sysDate.substring(3, 5))); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam1 = new ArrayList(); + arylstParam1.add(new DBObject(1, 1, 12, oHrmEmpAdvAppHdrBean.getHeaderPrimaryKey())); + arylstParam1.add(new DBObject(2, 2, 4)); + arylstParam1.add(new DBObject(3, 2, 4)); + arylstParam1.add(new DBObject(4, 2, 12)); + arylstParam1.add(new DBObject(5, 2, 12)); + arylstParam1.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam1, "hrmadvappl.procgetpayrollinfo(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + DBObject oOutObject1 = arylstOutArray.get(1); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + int yearMonth = ((Integer)oOutObject1.getObject()).intValue(); + int year = Integer.parseInt(String.valueOf(yearMonth).substring(0, 4)); + int month = Integer.parseInt(String.valueOf(yearMonth).substring(4, 6)); + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getBulkSettleAmount())) { + if (year > Integer.parseInt(sPayrollMonth.substring(0, 4))) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth1", arylstParam)); + } + if (year == Integer.parseInt(sPayrollMonth.substring(0, 4))) + if (month > Integer.parseInt(sPayrollMonth.substring(4, 6))) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth1", arylstParam)); + } + } + if (iVal != 1) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth2", arylstParam)); + } + reportError(arylstErrorList); + } + + private void checkBulkAmount(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getBulkSettleAmount())) + if (Double.parseDouble(oHrmEmpAdvAppHdrBean.getBulkSettleAmount()) > Double.parseDouble(oHrmEmpAdvAppHdrBean.getBalance())) { + arylstParam.add("Bulk Settlement Amount : "); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpAdvance.bulkSettleAmountError", arylstParam)); + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkSanctionedAmount(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + double iSanctionedAmt = Double.parseDouble(oHrmEmpAdvAppHdrBean.getSanctionedAmount()); + String sEligibleAmount = calculateEligibleAmount(oHrmEmpAdvAppHdrBean); + if (Double.parseDouble(sEligibleAmount) == 0.0D) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmEmpAdvance.checkEligAmt", arylstParam)); + } else { + double iEligibleAmount = Double.parseDouble(sEligibleAmount); + if (iSanctionedAmt > iEligibleAmount) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmEmpAdvance.checkAmount", arylstParam)); + } + } + reportError(arylstList); + } + + private void checkMandatoryHeader(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getAdvanceCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpAdvance.advanceCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getDateApplied())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpAdvance.dateApplied"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getAmountApplied())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpAdvance.amountApplied"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getNoOfInst())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpAdvance.noOfInst"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getPayrollMonth())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpAdvance.payrollMonth"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getApproverNoId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpAdvance.approverName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getSanctionDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.sanctionDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getSanctionedAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.sanctionedAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmEmpAdvAppHdrBean)oBaseHeaderBean); + reportError(oErrorList); + } + + private ArrayList checkLOVConstraint(ArrayList oList, LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LOVBean oLOVBean = null; + ArrayList arylstNewList = new ArrayList(); + Iterator itrBean = oList.iterator(); + while (itrBean.hasNext()) { + oLOVBean = itrBean.next(); + String sId = oLOVBean.getDetailField1(); + String sAllFlag = getAllFlagInfo(sId); + if (sAllFlag.equalsIgnoreCase("Y")) { + arylstNewList.add(oLOVBean); + continue; + } + String sAttrId = oLOVBean.getDetailField1(); + String sQuery = String.valueOf(" Select ELIG_SQL as ELIG_SQL from HRM_ADV_DTL where ID= ").concat(String.valueOf(sAttrId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList1 = oBean.executeQuery(sQuery); + Iterator itrBean1 = arylstList1.iterator(); + if (itrBean1.hasNext()) { + QueryRow oRow = itrBean1.next(); + String sSql = oRow.get("ELIG_SQL").getString(); + if (EnrgiseUtil.checkString(sSql)) { + String sEmpId = oLovQueryVO.getProperty("employeeId"); + StringBuffer s = new StringBuffer(sSql); + s.replace(s.lastIndexOf("?"), s.lastIndexOf("?") + 1, sEmpId); + ArrayList arylstList2 = oBean.executeQuery(s.toString()); + if (arylstList2.size() != 0) + arylstNewList.add(oLOVBean); + } + } + } + return arylstNewList; + } + + public String getAllFlagInfo(String sAttrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sAllFlag = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sAttrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMADVAPPL.proc_GetAllFlag(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = oList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sAllFlag = oRow.get("ALL_FLAG").getString(); + } + return sAllFlag; + } + + private String calculateEligibleAmount(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + ArrayList oList1 = new ArrayList(); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oParameters1 = new ArrayList(); + ArrayList oOutArray = new ArrayList(); + ArrayList oOutArray1 = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + QueryRow oRow = null; + QueryRow oRow1 = null; + String sEligAmount = new String(); + String sEligFactor = new String(); + String sFlatAmt = new String(); + String sNoOfMnthSal = new String(); + String sSalary = new String(); + String sBasic = new String(); + String sFA = new String(); + String sDA = new String(); + int count1 = 0; + int count2 = 0; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmEmpAdvAppHdrBean.getAdvanceCodeId())); + oParameters.add(new DBObject(2, 1, 12, oHrmEmpAdvAppHdrBean.getEmployeeId())); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMADVAPPL.procCalculateEligibleAmount(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + count1 = 0; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count1++; + oRow = oIt.next(); + sEligFactor = oRow.get("GREATER_LESSER_FLAG").getString(); + sFlatAmt = oRow.get("FLAT_AMOUNT").getString(); + sNoOfMnthSal = oRow.get("NO_OF_MONTHS_SAL").getString(); + } + oParameters1 = new ArrayList(); + oParameters1.add(new DBObject(1, 1, 12, oHrmEmpAdvAppHdrBean.getEmployeeId())); + oParameters1.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpAdvAppHdrBean.getSanctionDate()))); + oParameters1.add(new DBObject(3, 2, -10)); + oParameters1.add(new DBObject(4, 2, 12)); + oParameters1.add(new DBObject(5, 2, 12)); + oParameters1.add(new DBObject(6, 2, 4)); + oOutArray1 = oBean1.callProc(oParameters1, "HRMADVAPPL.procCalculateSalary(?,?,?,?,?,?)"); + oList1 = (ArrayList)((DBObject)oOutArray1.get(0)).getObject(); + if (oList1.size() == 0) + return "0"; + count2 = 0; + Iterator oIt1 = oList1.iterator(); + while (oIt1.hasNext()) { + count2++; + oRow1 = oIt1.next(); + sFA = oRow1.get("FIXED_ALLOW").getString(); + sDA = oRow1.get("DA_AMOUNT").getString(); + sBasic = oRow1.get("BASIC").getString(); + if (Double.parseDouble(sDA) == 0.0D) { + sSalary = String.valueOf(Double.parseDouble(sBasic) + Double.parseDouble(sFA)); + continue; + } + sSalary = String.valueOf(Double.parseDouble(sBasic) + Double.parseDouble(sDA)); + } + if (String.valueOf(oRow.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("F")) + sEligAmount = sFlatAmt; + if (String.valueOf(oRow.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("S")) { + long lEligAmt = Math.round(Double.parseDouble(sNoOfMnthSal) * Double.parseDouble(sSalary)); + sEligAmount = String.valueOf(lEligAmt); + } + if (String.valueOf(oRow.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("")) + sEligAmount = sFlatAmt; + return sEligAmount; + } + + public LovVO getHrmAdvAppEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sEmpId = new String(); + if (oLovQueryVO.getProperty("SelUser") != null) + sEmpId = oLovQueryVO.getProperty("SelUser"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMADVAPPL.procgetemplovqdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmAdvAppInsEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sEmpId = new String(); + if (oLovQueryVO.getProperty("SelUser") != null) + sEmpId = oLovQueryVO.getProperty("SelUser"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMADVAPPL.procGetEmpInsLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvMstBO.java new file mode 100644 index 0000000..87aa36b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvMstBO.java @@ -0,0 +1,696 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAdvanceMstDtlBean; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; + +public class HrmAdvMstBO extends HrmBaseBO { + public HrmAdvMstBO() {} + + public HrmAdvMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAdvanceMstHdrMetaInfo(HrmAdvMstQueryVO oHrmAdvMstQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAdvMstQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmAdvMstQueryVO.getAdvanceCode())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_HrAdvMstHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAdvanceMstHdrInfo(HrmAdvMstQueryVO oHrmAdvMstQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmAdvMstQueryVO == null) + oHrmAdvMstQueryVO = new HrmAdvMstQueryVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmAdvMstQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmAdvMstQueryVO.getAdvanceCode())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_GetHrAdvMstHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAdvanceMstHdrBean oHrmAdvanceMstHdrBean = new HrmAdvanceMstHdrBean(); + oHrmAdvanceMstHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAdvanceMstHdrBean.setAdvanceCode(oRow.get("CODE").getString()); + oHrmAdvanceMstHdrBean.setDescription(oRow.get("NAME").getString()); + oHrmAdvanceMstHdrBean.setCalendar(oRow.get("CALENDAR_TYPE").getString()); + oHeaderList.add(oHrmAdvanceMstHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmAdvanceMstDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_HrAdvMstDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAdvanceMstDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmAdvanceMstDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_GetHrAdvMstDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (count == 0) + oHrmAdvanceMstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean = new HrmAdvanceMstDtlBean(); + oHrmAdvanceMstDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAdvanceMstDtlBean.setTxtAdvanceDescription(oRow.get("NAME").getString()); + oHrmAdvanceMstDtlBean.setTxtEffectiveFromDate(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_FROM").getDate())); + oHrmAdvanceMstDtlBean.setTxtEffectiveToDate(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_TO").getDate())); + oHrmAdvanceMstDtlBean.setTxtMaxCalLimit(oRow.get("MAX_YEARLY_LIMIT").getString()); + oHrmAdvanceMstDtlBean.setTxtNoOfTXN(oRow.get("TXN_PER_PERIOD").getString()); + oHrmAdvanceMstDtlBean.setTxtMaxLimitPerTXN(oRow.get("MAX_LIMIT_PER_TXN").getString()); + oHrmAdvanceMstDtlBean.setTxtEligibilityFactor(oRow.get("GREATER_LESSER_FLAG").getString()); + oHrmAdvanceMstDtlBean.setTxtFlatAmount(oRow.get("FLAT_AMOUNT").getString()); + oHrmAdvanceMstDtlBean.setTxtNoOfMonSal(oRow.get("NO_OF_MONTHS_SAL").getString()); + oHrmAdvanceMstDtlBean.setTxtSettlementUnit(oRow.get("SETTLEMENT_UNIT").getString()); + oHrmAdvanceMstDtlBean.setTxtSettlementPeriod(oRow.get("SETTLEMENT_PERIOD").getString()); + oHrmAdvanceMstDtlBean.setTxtMoratoriumInMonths(oRow.get("MORATORIUM_MONTHS").getString()); + oHrmAdvanceMstDtlBean.setTxtSettleThroughPayroll(oRow.get("PAYROLL_SETTLE_FLAG").getString()); + oHrmAdvanceMstDtlBean.setTxtApplicableToAll(oRow.get("ALL_FLAG").getString()); + oHrmAdvanceMstDetail.add(oHrmAdvanceMstDtlBean); + } + return oHrmAdvanceMstDetail; + } + + public ArrayList getHrmCurAdvMstDetailInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmCurAdvMstDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 2, -10)); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_GetHrCurAdvInfo(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmCurAdvMstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean = new HrmAdvanceMstDtlBean(); + oHrmAdvanceMstDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAdvanceMstDtlBean.setTxtAdvanceDescription(oRow.get("NAME").getString()); + oHrmCurAdvMstDetail.add(oHrmAdvanceMstDtlBean); + } + return oHrmCurAdvMstDetail; + } + + public void updateAdvanceMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sSql)); + oParameters.add(new DBObject(2, 1, 12, sId)); + oParameters.add(new DBObject(3, 1, 12, sUserId)); + oParameters.add(new DBObject(4, 1, 12, sUserSiteId)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_UpdateHrAdvDtl(?,?,?,?,?,?,?)"); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_ADV_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + saveHrmAdvDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl!"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmAdvMstCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmAdvMst.advanceCode"); + oHeaderList.add("hrm.HrmAdvMst.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_GetAdvMstCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAdvMstCodeInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("GlobalCodeType"); + oHeaderList.add("hrm.HrmAdvMst.advanceCode"); + oHeaderList.add("hrm.HrmAdvMst.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_GetAdvMstCodeInsLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAdvMstCalendarCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmAdvMst.calendarType"); + oHeaderList.add("hrm.HrmAdvMst.beginMonth"); + oHeaderList.add("hrm.HrmAdvMst.durationMonth"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_GetAdvMstCalendarCodeLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CALENDAR_TYPE").getString()); + oLOVBean.setDetailField3(oRow.get("BEGIN_MONTH").getString()); + oLOVBean.setDetailField4(oRow.get("DURATION_MONTH").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAdvanceMstHdrBean oHrmAdvanceMstHdrBean = (HrmAdvanceMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHrmAdvanceMstHdrBean.getAdvanceCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmAdvanceMstHdrBean.getDescription())); + oParameters.add(new DBObject(4, 1, 12, oHrmAdvanceMstHdrBean.getCalendarId())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, null)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_UpsertHrAdvMstHdr(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmAdvanceMstHdrBean.getAdvanceCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmAdvanceMstHdrBean.getDescription())); + oParameters.add(new DBObject(4, 1, 12, oHrmAdvanceMstHdrBean.getCalendarId())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, oHrmAdvanceMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_UpsertHrAdvMstHdr(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + private void saveHrmAdvDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean = itrBean.next(); + if (oHrmAdvanceMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMADVMST.proc_UpsertHrAdvMstDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmAdvanceMstDtlBean.getTxtAdvanceDescription())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvanceMstDtlBean.getTxtEffectiveFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvanceMstDtlBean.getTxtEffectiveToDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmAdvanceMstDtlBean.getTxtMaxCalLimit())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAdvanceMstDtlBean.getTxtNoOfTXN())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAdvanceMstDtlBean.getTxtMaxLimitPerTXN())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAdvanceMstDtlBean.getTxtEligibilityFactor())); + arylstParam.add(new DBObject(11, 1, 12, oHrmAdvanceMstDtlBean.getTxtFlatAmount())); + arylstParam.add(new DBObject(12, 1, 12, oHrmAdvanceMstDtlBean.getTxtNoOfMonSal())); + arylstParam.add(new DBObject(13, 1, 12, oHrmAdvanceMstDtlBean.getTxtSettlementUnit())); + arylstParam.add(new DBObject(14, 1, 12, oHrmAdvanceMstDtlBean.getTxtSettlementPeriod())); + arylstParam.add(new DBObject(15, 1, 12, oHrmAdvanceMstDtlBean.getTxtMoratoriumInMonths())); + arylstParam.add(new DBObject(16, 1, 12, oHrmAdvanceMstDtlBean.getTxtSettleThroughPayroll())); + arylstParam.add(new DBObject(17, 1, 12, oHrmAdvanceMstDtlBean.getTxtApplicableToAll())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(19, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmAdvanceMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMADVMST.proc_UpsertHrAdvMstDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAdvanceMstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmAdvanceMstDtlBean.getTxtAdvanceDescription())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvanceMstDtlBean.getTxtEffectiveFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvanceMstDtlBean.getTxtEffectiveToDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmAdvanceMstDtlBean.getTxtMaxCalLimit())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAdvanceMstDtlBean.getTxtNoOfTXN())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAdvanceMstDtlBean.getTxtMaxLimitPerTXN())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAdvanceMstDtlBean.getTxtEligibilityFactor())); + arylstParam.add(new DBObject(11, 1, 12, oHrmAdvanceMstDtlBean.getTxtFlatAmount())); + arylstParam.add(new DBObject(12, 1, 12, oHrmAdvanceMstDtlBean.getTxtNoOfMonSal())); + arylstParam.add(new DBObject(13, 1, 12, oHrmAdvanceMstDtlBean.getTxtSettlementUnit())); + arylstParam.add(new DBObject(14, 1, 12, oHrmAdvanceMstDtlBean.getTxtSettlementPeriod())); + arylstParam.add(new DBObject(15, 1, 12, oHrmAdvanceMstDtlBean.getTxtMoratoriumInMonths())); + arylstParam.add(new DBObject(16, 1, 12, oHrmAdvanceMstDtlBean.getTxtSettleThroughPayroll())); + arylstParam.add(new DBObject(17, 1, 12, oHrmAdvanceMstDtlBean.getTxtApplicableToAll())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(19, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmAdvanceMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMADVMST.proc_DeleteHrAdvMstDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAdvanceMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmAdvanceMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAdvanceMaster")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean = itrBean1.next(); + if (!oHrmAdvanceMstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatory(oHrmAdvanceMstDtlBean, iCount, arylstErrorList); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtAdvanceDescription", "hrm.HrmAdvMst.advanceDescription", arylstErrorList, true); + } + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmAdvanceMstHdrBean oHrmAdvanceMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmAdvanceMstHdrBean.getAdvanceCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.advanceCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatory(HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtAdvanceDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.advanceDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtEffectiveFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.effectiveFromDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtApplicableToAll())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.applicableToAll"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtSettlementPeriod())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.settlementPeriod"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtEligibilityFactor())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.eligibility"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtEligibilityFactor())) { + if (oHrmAdvanceMstDtlBean.getTxtEligibilityFactor().equalsIgnoreCase("F")) + if (!EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtFlatAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.flatAmount"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmAdvanceMstDtlBean.getTxtEligibilityFactor().equalsIgnoreCase("S")) + if (!EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtNoOfMonSal())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvMst.salary"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmAdvanceMstHdrBean oHrmAdvanceMstHdrBean = (HrmAdvanceMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmAdvanceMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAdvanceMaster")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean = oIt1.next(); + if (!oHrmAdvanceMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkDatesConstraint(oHrmAdvanceMstDtlBean, arylstErrorList); + } + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmAdvanceMstHdrBean oHrmAdvanceMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_ADV_MST where CODE='").concat(String.valueOf(oHrmAdvanceMstHdrBean.getAdvanceCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmAdvanceMstHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated", "M"); + } + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean = itrBean1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from HRM_ADV_DTL where NAME= ").concat(String.valueOf(oHrmAdvanceMstDtlBean.getTxtAdvanceDescription()))).concat(String.valueOf(" and ADV_MST_ID="))).concat(String.valueOf(sHeaderPrimaryKey)); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmAdvanceMstDtlBean.getDetailId())) + throw new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated", "M"); + } + } + } + + public LovVO getHrmSettleHeadsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmAdvMst.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_GetSetHeadsLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkDatesConstraint(HrmAdvanceMstDtlBean oHrmAdvanceMstDtlBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmAdvanceMstDtlBean.getTxtEffectiveToDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAdvanceMstDtlBean.getTxtEffectiveToDate(), oHrmAdvanceMstDtlBean.getTxtEffectiveFromDate()); + if (dateFlag == -1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.FromTodateConstraintViolated")); + } + reportError(arylstErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleBO.java new file mode 100644 index 0000000..7c144be --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleBO.java @@ -0,0 +1,241 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmSettleDtlBean; +import wenrgise.hrms.bean.HrmSettleHdrBean; +import wenrgise.hrms.vo.HrmSettleQueryVO; + +public class HrmAdvSettleBO extends HrmBaseBO { + public HrmAdvSettleBO() {} + + public HrmAdvSettleBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public ArrayList getHrmAdvanceSetDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmAdvanceSetDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_HrAdvSetDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmAdvanceSetDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmSettleDtlBean oHrmSettleDtlBean = new HrmSettleDtlBean(); + oHrmSettleDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmSettleDtlBean.setTxtHeadName(oRow.get("HEAD_NAME").getString()); + oHrmSettleDtlBean.setTxtMaxLimit(oRow.get("MAX_LIMIT").getString()); + oHrmAdvanceSetDetail.add(oHrmSettleDtlBean); + } + return oHrmAdvanceSetDetail; + } + + public ArrayList getHrmAdvanceSetHdrInfo(HrmSettleQueryVO oHrmSettleQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + String sSettleHeads = oHrmSettleQueryVO.getAdvCodeId(); + System.out.println(sSettleHeads); + if (oHrmSettleQueryVO == null) + oHrmSettleQueryVO = new HrmSettleQueryVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmSettleQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, sSettleHeads)); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_HrAdvSetHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmSettleHdrBean oHrmSettleHdrBean = new HrmSettleHdrBean(); + oHrmSettleHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmSettleHdrBean.setAdvanceDescription(oRow.get("NAME").getString()); + oHeaderList.add(oHrmSettleHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmAdvanceSetDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_HrAdvSetDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmAdvanceSetHdrMetaInfo(HrmSettleQueryVO oHrmSettleQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String sSettleHeads = oHrmSettleQueryVO.getAdvCodeId(); + System.out.println(sSettleHeads); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmSettleQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, sSettleHeads)); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVMST.proc_HrAdvSetHdrCnt(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + saveHrmSettleDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmSettleDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmSettleDtlBean oHrmSettleDtlBean = itrBean.next(); + if (oHrmSettleDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMADVMST.proc_UpsertHrSettleHeadsDtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmSettleDtlBean.getTxtHeadName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmSettleDtlBean.getTxtMaxLimit())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmSettleDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMADVMST.proc_UpsertHrSettleHeadsDtl(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmSettleDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmSettleDtlBean.getTxtHeadName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmSettleDtlBean.getTxtMaxLimit())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmSettleDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMADVMST.proc_DeleteHrSettleHeadsDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmSettleDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void initializeBOImpl() { + this.headerTable = "PUM_COMM_TRMS_MST"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleHeadsBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleHeadsBO.java new file mode 100644 index 0000000..cca3c1e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettleHeadsBO.java @@ -0,0 +1,217 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAdvSettleHeadsDtlBean; +import wenrgise.hrms.bean.HrmAdvSettleHeadsHdrBean; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; + +public class HrmAdvSettleHeadsBO extends HrmBaseBO { + public HrmAdvSettleHeadsBO() {} + + public HrmAdvSettleHeadsBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrAdvSettleHeadsDetailMetaInfo(HrmAdvSettleHeadsQVO oHrmAdvSettleHeadsQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + if (EnrgiseUtil.checkString(oHrmAdvSettleHeadsQVO.getHeaderPrimaryKey())) { + String sPrimaryKey = oHrmAdvSettleHeadsQVO.getHeaderPrimaryKey(); + oHrmAdvSettleHeadsQVO.setSettleId(sPrimaryKey); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAdvSettleHeadsQVO.getSettleId())); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMADVSETTLEHEADS.proc_HrEmpAdvSettleDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAdvSettleHeadsDetail(HrmAdvSettleHeadsQVO oHrmAdvSettleHeadsQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (EnrgiseUtil.checkString(oHrmAdvSettleHeadsQVO.getHeaderPrimaryKey())) { + String sPrimaryKey = oHrmAdvSettleHeadsQVO.getHeaderPrimaryKey(); + oHrmAdvSettleHeadsQVO.setSettleId(sPrimaryKey); + } + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstSettleHeads = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAdvSettleHeadsQVO.getSettleId())); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMADVSETTLEHEADS.proc_HrEmpAdvSettleDtl(?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstSettleHeads = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmAdvSettleHeadsDtlBean oHrmAdvSettleHeadsDtlBean = new HrmAdvSettleHeadsDtlBean(); + oHrmAdvSettleHeadsDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAdvSettleHeadsDtlBean.setTxtHeadName(oRow.get("HEAD_NAME").getString()); + oHrmAdvSettleHeadsDtlBean.setTxtMaxLimit(oRow.get("MAX_LIMIT").getString()); + oHrmAdvSettleHeadsDtlBean.setTxtAmount(oRow.get("SETL_AMOUNT").getString()); + oHrmAdvSettleHeadsDtlBean.setTxtSettleHeadId(oRow.get("SETL_ID").getString()); + oHrmAdvSettleHeadsDtlBean.setTxtAdvancesId(oRow.get("ADVNC_ID").getString()); + oHrmAdvSettleHeadsDtlBean.setTxtSettleStatus(oRow.get("SETL_APPROVED_FLAG").getString()); + arylstSettleHeads.add(oHrmAdvSettleHeadsDtlBean); + } + return arylstSettleHeads; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_SETL_HEAD"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkMandatoryDtls(HrmAdvSettleHeadsDtlBean oHrmAdvSettleHeadsDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void saveDetailImpl(String param1, String param2, ArrayList param3) {} + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAdvSettlementHeads")) + saveHrmAdvSettleHdsDetail(oBaseHeaderBean, oDetailBeanArray); + } + + public String saveHrmAdvSettleHdsDetail(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean1 = null; + DBUtilitiesBean oBean2 = null; + DBUtilitiesBean oBean3 = null; + HrmAdvSettleHeadsHdrBean oHrmAdvSettleHeadsHdrBean = (HrmAdvSettleHeadsHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmAdvSettleHeadsDtlBean oHrmAdvSettleHeadsDtlBean = itrBean.next(); + if (oHrmAdvSettleHeadsDtlBean.getDetailId().equals("")) { + if (!bInsert) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMADVSETTLEHEADS.proc_UpsertHrAdvSetHdsDtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAdvSettleHeadsDtlBean.getTxtAdvancesId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAdvSettleHeadsDtlBean.getTxtSettleHeadId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmAdvSettleHeadsDtlBean.getTxtAmount())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean1.addToBatch(arylstParameters); + continue; + } + if (oHrmAdvSettleHeadsDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean2 = new DBUtilitiesBean(); + oBean2.createBatch("HRMADVSETTLEHEADS.proc_UpsertHrAdvSetHdsDtl(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAdvSettleHeadsDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAdvSettleHeadsDtlBean.getTxtAdvancesId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAdvSettleHeadsDtlBean.getTxtSettleHeadId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmAdvSettleHeadsDtlBean.getTxtAmount())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean2.addToBatch(arylstParameters); + continue; + } + if (oHrmAdvSettleHeadsDtlBean.getStatus().equals("D")) { + if (!bDelete); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmAdvSettleHeadsDtlBean.getDetailId())); + oBean3.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean1.executeBatch(); + if (bUpdate) + oBean2.executeBatch(); + if (bDelete) + oBean3.executeBatch(); + return oHrmAdvSettleHeadsHdrBean.getSettleId(); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmAdvSettleHeadsHdrBean oHrmAdvSettleHeadsHdrBean = (HrmAdvSettleHeadsHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAdvSettlementHeads")) + checkSettleAmount(arylstDetailBeanArray); + reportError(arylstErrorList); + } + + private void checkSettleAmount(ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAdvSettleHeadsDtlBean oHrmAdvSettleHeadsDtlBean = itrBean1.next(); + if (!oHrmAdvSettleHeadsDtlBean.getStatus().equalsIgnoreCase("D")) { + String sMaxLimit = oHrmAdvSettleHeadsDtlBean.getTxtMaxLimit(); + System.out.println(sMaxLimit); + String sAmount = oHrmAdvSettleHeadsDtlBean.getTxtAmount(); + System.out.println(sAmount); + int iMaxLimit = Integer.parseInt(sMaxLimit); + System.out.println(iMaxLimit); + int iAmount = Integer.parseInt(sAmount); + System.out.println(iAmount); + if (iMaxLimit < iAmount) + throw new EnrgiseApplicationException("wenrgise.hrms.settleHeads.amount", "M"); + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettlementBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettlementBO.java new file mode 100644 index 0000000..53cd625 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAdvSettlementBO.java @@ -0,0 +1,384 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.vo.HrmAdvSettleQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmAdvSettlementBO extends HrmBaseBO { + public HrmAdvSettlementBO() {} + + public HrmAdvSettlementBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAdvSettlementHdrMetaInfo(HrmAdvSettleQVO oHrmAdvSettleQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sEmpNo = oHrmAdvSettleQVO.getEmployeeNumber(); + String sCode = oHrmAdvSettleQVO.getAdvanceCodeId(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAdvSettleQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, sEmpNo)); + oParameters.add(new DBObject(3, 1, 12, sCode)); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvSettleQVO.getFromDate()))); + oParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvSettleQVO.getToDate()))); + oParameters.add(new DBObject(6, 2, -5)); + oParameters.add(new DBObject(7, 2, 93)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVSETTLE.proc_HrEmpAdvApplHdrCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAdvSettlementHeader(HrmAdvSettleQVO oHrmAdvSettleQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sEmpNo = oHrmAdvSettleQVO.getEmployeeNumber(); + String sCode = oHrmAdvSettleQVO.getAdvanceCodeId(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oEmpAdvAppDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmAdvSettleQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, sEmpNo)); + oParameters.add(new DBObject(5, 1, 12, sCode)); + oParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvSettleQVO.getFromDate()))); + oParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAdvSettleQVO.getToDate()))); + oParameters.add(new DBObject(8, 2, -10)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVSETTLE.proc_HrEmpAdvApplHdr(?,?,?,?,?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = oList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (count == 0) + oEmpAdvAppDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = new HrmAdvSettleHdrBean(); + oHrmAdvSettleHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAdvSettleHdrBean.setEmployeeNumber(oRow.get("EMP_NO").getString()); + oHrmAdvSettleHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmAdvSettleHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmAdvSettleHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmAdvSettleHdrBean.setEmployeeId(oRow.get("E_PER_DTL_ID").getString()); + oHrmAdvSettleHdrBean.setAdvanceCodeId(oRow.get("ID").getString()); + oHrmAdvSettleHdrBean.setAdvanceCode(oRow.get("NAME").getString()); + oHrmAdvSettleHdrBean.setDateApplied(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmAdvSettleHdrBean.setAmountApplied(oRow.get("SANCTIONED_AMT").getString()); + oHrmAdvSettleHdrBean.setSettleId(oRow.get("ID").getString()); + oHrmAdvSettleHdrBean.setReason(oRow.get("SETL_REJECTION_REMARK").getString()); + oHrmAdvSettleHdrBean.setNoOfIns(oRow.get("SETL_PERIOD").getString()); + oHrmAdvSettleHdrBean.setSettleAmount(oRow.get("SETL_AMOUNT").getString()); + oEmpAdvAppDetail.add(oHrmAdvSettleHdrBean); + } + return oEmpAdvAppDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_ADV_TXN"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + System.out.println("Save Ille!"); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + private void checkUniqueHeader(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String payrollFlag = null; + DateUtility d = new DateUtility(); + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(3, 1, 12, oHrmAdvSettleHdrBean.getNoOfIns())); + oParameters.add(new DBObject(4, 1, 12, oHrmAdvSettleHdrBean.getReason())); + oParameters.add(new DBObject(5, 1, 12, oHrmAdvSettleHdrBean.getSettleAmount())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, oHrmAdvSettleHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVSETTLE.proc_UpsertHrAdvanceSettleHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + returnString = null; + } + return returnString; + } + + public LovVO getHrmAdvSettleAdvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmAdvSettle.advanceCode"); + oHeaderList.add("hrm.HrmAdvSettle.dateApplied"); + oHeaderList.add("hrm.HrmAdvSettle.amountApplied"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String employeeId = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("employeeId") != null) { + employeeId = oLovQueryVO.getProperty("employeeId"); + System.out.println(employeeId); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, employeeId)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMADVSETTLE.proc_GetHrmAdvSettleCdLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oLOVBean.setDetailField4(oRow.get("SANCTIONED_AMT").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmAdvSettleHdrBean)oBaseHeaderBean); + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmAdvSettleHdrBean.getAdvanceCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvSettle.advanceCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public String approveAdvSettlement(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMADVSETTLE.procApproveAdvSettle(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectAdvSettlement(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMADVSETTLE.procRejectAdvSettle(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String submitAdvSettlement(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMADVSETTLE.procSubmitAdvSettle(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")); + reportError(arylstErrorList); + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmAdvSettleHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Advance"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("AdvanceSettle"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Advance Settlement No: ").concat(String.valueOf(oHrmAdvSettleHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval: Advance Settlement No:").concat(String.valueOf(oHrmAdvSettleHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Advance Settlement No: ").concat(String.valueOf(oHrmAdvSettleHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection: Advance Settlement No:").concat(String.valueOf(oHrmAdvSettleHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + String sAdvAmt = oHrmAdvSettleHdrBean.getAmountApplied(); + HashMap oProp = new HashMap(); + oProp.put("Advance_Amt", sAdvAmt); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAgeAnalysisBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAgeAnalysisBO.java new file mode 100644 index 0000000..f70b3b6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAgeAnalysisBO.java @@ -0,0 +1,72 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.vo.HrmRetireForecastQVO; + +public class HrmAgeAnalysisBO extends HrmBaseBO { + public HrmAgeAnalysisBO() {} + + public HrmAgeAnalysisBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo procGetRetireDataCount(HrmRetireForecastQVO oHrmRetireForecastQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList procGetRetireDataInfo(HrmRetireForecastQVO oHrmRetireForecastQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void initializeBOImpl() {} + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return null; + } + + public String InsertDataAgeAnalysis(BaseHeaderBean oBaseHeaderBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, 12)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 4)); + oBean.callProc(arylstParam, "HRMAGEANALYSISREP.insertData(?,?,?)"); + return null; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAppTempBusinessObject.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAppTempBusinessObject.java new file mode 100644 index 0000000..5433795 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAppTempBusinessObject.java @@ -0,0 +1,1204 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalTemplateKpaDtlBean; +import wenrgise.hrms.bean.HrmAppraisalTemplateSecDtlBean; +import wenrgise.hrms.vo.HrmAppTempQueryVO; + +public class HrmAppTempBusinessObject extends HrmBaseBO { + public HrmAppTempBusinessObject() {} + + public HrmAppTempBusinessObject(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAppTemplateHdrMetaInfo(HrmAppTempQueryVO oHrmAppTempQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAppTempQueryVO.getRatingCode())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAppTempQueryVO.getTemplateName())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAppTempQueryVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAppTempHeaderInfo(HrmAppTempQueryVO oHrmAppTempQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmAppTempQueryVO == null) + oHrmAppTempQueryVO = new HrmAppTempQueryVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAppTempQueryVO.getRatingCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAppTempQueryVO.getTemplateName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAppTempQueryVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAppTempHdrBean oHrmAppTempHdrBean = new HrmAppTempHdrBean(); + oHrmAppTempHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAppTempHdrBean.setTemplateName(oRow.get("TEMPLATE_NAME").getString()); + oHrmAppTempHdrBean.setRatingCode(oRow.get("CODE").getString()); + oHrmAppTempHdrBean.setRatingId(oRow.get("RATE_HD_ID").getString()); + if (EnrgiseUtil.checkString(oRow.get("TMPL_APP_FLAG").getString())) + if (oRow.get("TMPL_APP_FLAG").getString().equalsIgnoreCase("Y")) { + oHrmAppTempHdrBean.setHeaderFlag("A"); + oHrmAppTempHdrBean.setStatusOfHeader("Approved"); + } + oHrmAppTempHdrBean.setObsolete(String.valueOf(oRow.get("OBSOLETE_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmAppTempHdrBean.setApplicableToAll(String.valueOf(oRow.get("ALL_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + arylstHeaderList.add(oHrmAppTempHdrBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmAppTempSecDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAppTempSecDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTempSecDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmTempSecDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAppraisalTemplateSecDtlBean oSecDtlBean = new HrmAppraisalTemplateSecDtlBean(); + oSecDtlBean.setDetailId(oRow.get("ID").getString()); + oSecDtlBean.setTxtSrlNo(oRow.get("SRL_NO").getString()); + oSecDtlBean.setTxtSectionCode(oRow.get("SEC_CODE").getString()); + oSecDtlBean.setTxtAppraiserType(oRow.get("APPRAISER_TYP_FLAG").getString()); + oSecDtlBean.setTxtTemplateRemarks(oRow.get("TMPL_SEC_REMARK").getString()); + oSecDtlBean.setTxtSectionWeightage(oRow.get("SEC_WEIGHTAGE").getString()); + oSecDtlBean.setTxtParentSection(oRow.get("PARENTCODE").getString()); + oSecDtlBean.setTxtParentSecId(oRow.get("PARENT_SEC_ID").getString()); + oSecDtlBean.setTxtRatingReqd(String.valueOf(oRow.get("rating_required").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + arylstHrmTempSecDetail.add(oSecDtlBean); + } + return arylstHrmTempSecDetail; + } + + public RecordMetaInfo getAppTempSecKPADetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplKPADtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAppTempSecKPADetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstAppTempKPADetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplKPADtl(?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstAppTempKPADetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAppraisalTemplateKpaDtlBean oAppTempSecKPADtlBean = new HrmAppraisalTemplateKpaDtlBean(); + oAppTempSecKPADtlBean.setDetailId(oRow.get("ID").getString()); + oAppTempSecKPADtlBean.setTxtKpaGroupCode(oRow.get("CODE").getString()); + oAppTempSecKPADtlBean.setTxtApprKpa(oRow.get("DESCRIPTION").getString()); + oAppTempSecKPADtlBean.setTxtWeightage(oRow.get("WEIGHTAGE").getString()); + oAppTempSecKPADtlBean.setTxtKpaId(oRow.get("APRSL_KPA_GRP_ID").getString()); + arylstAppTempKPADetail.add(oAppTempSecKPADtlBean); + } + return arylstAppTempKPADetail; + } + + public boolean chkHrmAppTempHdrByRatingIdCount(String sRatingId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + boolean flag = true; + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sRatingId)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSAPPTEMP.proc_HrAppTempHdrCount(?,?,?,?)"); + DBObject oTotalRecord = arylstOutArray.get(0); + long count1 = ((Long)oTotalRecord.getObject()).longValue(); + System.out.println(count1); + if (count1 == 0L) + flag = false; + return flag; + } + + public void updateAppTempHdrMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSql)); + arylstParam.add(new DBObject(2, 1, 12, sId)); + arylstParam.add(new DBObject(3, 1, 12, sUserId)); + arylstParam.add(new DBObject(4, 1, 12, sUserSiteId)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSAPPTEMP.proc_UpdateHrAppTempHdr(?,?,?,?,?)"); + } + + public LovVO getHrmAprslTmplNameLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("hrm.HrmAppraisalTemplate.templateName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplCodeQLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("TEMPLATE_NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslSecCodeLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("hrm.HrmAppraisalTemplate.sectionCode"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplSecCodeLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("SEC_CODE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslKPALOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("txtKpaId"); + arylstHeaderNames.add("hrm.HrmAppraisalTemplateKpa.kpaGroupCode"); + arylstHeaderNames.add("hrm.HrmAppraisalTemplateKpa.apprKpa"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + arylstParam.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField2())); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslTmplKPALOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslParentCodeLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("txtParentSecId"); + arylstHeaderNames.add("hrm.HrmAppraisalTemplate.parentSection"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + System.out.println(oLovQueryVO.getProperty("txtSectionCode")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oLovQueryVO.getProperty("txtSectionCode"))); + arylstParam.add(new DBObject(2, 1, 12, oLovQueryVO.getProperty("txtHdrId"))); + arylstParam.add(new DBObject(3, 1, 12, oLovQueryVO.getSearchField1())); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetHrmAprslParentCodeLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("PARENT_ID").getString()); + oLOVBean.setDetailField2(oRow.get("SEC_CODE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_APRSL_TMPL_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateSection")) { + saveHrmAprslTmplSecDetail(sHeaderPrimaryKey, oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + saveHrmAprslTmplKPADetail(sHeaderPrimaryKey, oDetailBeanArray); + } + } + + private void saveHrmAprslTmplSecDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean = oIt.next(); + String sRatingReqd = String.valueOf(oHrmAppraisalTemplateSecDtlBean.getTxtRatingReqd()).equalsIgnoreCase("on") ? "Y" : "N"; + if (oHrmAppraisalTemplateSecDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSLTMPLMST.procUpsertHrmAprslTmplSecDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtSectionCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtSrlNo())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtAppraiserType())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtTemplateRemarks())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId())); + arylstParam.add(new DBObject(9, 1, 12, sRatingReqd)); + arylstParam.add(new DBObject(10, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmAppraisalTemplateSecDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSLTMPLMST.procUpsertHrmAprslTmplSecDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAppraisalTemplateSecDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtSectionCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtSrlNo())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtAppraiserType())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtTemplateRemarks())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId())); + arylstParam.add(new DBObject(9, 1, 12, sRatingReqd)); + arylstParam.add(new DBObject(10, 1, 12, oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmAppraisalTemplateSecDtlBean.getStatus().equals("D")); + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmAprslTmplKPADetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateKpaDtlBean oHrmAppraisalTemplateKpaDtlBean = oIt.next(); + if (oHrmAppraisalTemplateKpaDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSLTMPLMST.procUpsertHrmAprslTmplKPADtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmAppraisalTemplateKpaDtlBean.getTxtKpaId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAppraisalTemplateKpaDtlBean.getTxtWeightage())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmAppraisalTemplateKpaDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSLTMPLMST.procUpsertHrmAprslTmplKPADtl(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAppraisalTemplateKpaDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmAppraisalTemplateKpaDtlBean.getTxtKpaId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAppraisalTemplateKpaDtlBean.getTxtWeightage())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmAppraisalTemplateKpaDtlBean.getStatus().equals("D")); + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + checkMandatoryHdr((HrmAppTempHdrBean)oBaseHeaderBean, arylstErrorList); + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateSection")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean = itrBean1.next(); + if (!oHrmAppraisalTemplateSecDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmAppraisalTemplateSecDtlBean, iCount, arylstErrorList); + iCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAppraisalTemplateKpaDtlBean oHrmAppraisalTemplateKpaDtlBean = itrBean1.next(); + if (!oHrmAppraisalTemplateKpaDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryKPA(oHrmAppraisalTemplateKpaDtlBean, iCount, arylstErrorList); + iCount++; + } + } + } + reportError(arylstErrorList); + } + + private void checkMandatoryHdr(HrmAppTempHdrBean oHrmAppTempHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAppTempHdrBean.getRatingCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAppraisalTemplateKpa.ratingCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAppTempHdrBean.getTemplateName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAppraisalTemplateKpa.templateName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatory(HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtSrlNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAppraisalTemplate.srlNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtSectionCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAppraisalTemplate.sectionCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtAppraiserType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAppraisalTemplate.appraiserType"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryKPA(HrmAppraisalTemplateKpaDtlBean oHrmAppraisalTemplateKpaDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAppraisalTemplateKpaDtlBean.getTxtKpaGroupCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAppraisalTemplateKpa.kpaGroupCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAppTempHdrBean oHrmAppTempHdrBean = (HrmAppTempHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + String sAllFlag = String.valueOf(oHrmAppTempHdrBean.getApplicableToAll()).equalsIgnoreCase("on") ? "Y" : "N"; + String sObsoleteFlag = String.valueOf(oHrmAppTempHdrBean.getObsolete()).equalsIgnoreCase("on") ? "Y" : "N"; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAppTempHdrBean.getRatingId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAppTempHdrBean.getTemplateName())); + arylstParam.add(new DBObject(4, 1, 12, sAllFlag)); + arylstParam.add(new DBObject(5, 1, 12, sObsoleteFlag)); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(8, 1, 12, null)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procUpsertHrmAprslTmplHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + String sAllFlag = String.valueOf(oHrmAppTempHdrBean.getApplicableToAll()).equalsIgnoreCase("on") ? "Y" : "N"; + String sObsoleteFlag = String.valueOf(oHrmAppTempHdrBean.getObsolete()).equalsIgnoreCase("on") ? "Y" : "N"; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAppTempHdrBean.getRatingId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAppTempHdrBean.getTemplateName())); + arylstParam.add(new DBObject(4, 1, 12, sAllFlag)); + arylstParam.add(new DBObject(5, 1, 12, sObsoleteFlag)); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAppTempHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procUpsertHrmAprslTmplHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public String getSumWt(String sTmplHdrId, String sTab, String sParentId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sSumSecWt = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTmplHdrId)); + arylstParam.add(new DBObject(2, 1, 12, sTab)); + arylstParam.add(new DBObject(3, 1, 12, sParentId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetSumWt(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sSumSecWt = oRow.get("SUM").getString(); + } + return sSumSecWt; + } + + public String getWtValInfo(String sTmplHdrId, String sDetailId, String sTab, String sParentId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sSecWt = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTmplHdrId)); + arylstParam.add(new DBObject(2, 1, 12, sDetailId)); + arylstParam.add(new DBObject(3, 1, 12, sTab)); + arylstParam.add(new DBObject(4, 1, 12, sParentId)); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetWtInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sSecWt = oRow.get("WEIGHTAGE").getString(); + } + return sSecWt; + } + + public void updateSecWt(String sParentId, String sValue, String sHdrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sParentId)); + arylstParam.add(new DBObject(2, 1, 12, sValue)); + arylstParam.add(new DBObject(3, 1, 12, sHdrId)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.upSecWt(?,?,?,?,?,?)"); + } + + public void updateKPAWt(String sTmplHdrId, String sValue) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTmplHdrId)); + arylstParam.add(new DBObject(2, 1, 12, sValue)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.upKPAWt(?,?,?,?,?)"); + } + + public ArrayList getParentSecIdInfo() throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstParentSecId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, -10)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procGetParentSecIdInfo(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstParentSecId = new ArrayList(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstParentSecId = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean = new HrmAppraisalTemplateSecDtlBean(); + oHrmAppraisalTemplateSecDtlBean.setTxtParentSecId(oRow.get("PARENT_SEC_ID").getString()); + arylstParentSecId.add(oHrmAppraisalTemplateSecDtlBean); + } + return arylstParentSecId; + } + + public RecordMetaInfo getParentIdDetailMetaInfo(String sParentId, String shdrId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sParentId)); + arylstParam.add(new DBObject(2, 1, 12, shdrId)); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.procParentIdDtlCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sSecSum = null; + float secSum = 0.0F; + float kpaSum = 0.0F; + float secParentSum = 0.0F; + String sSecSumVal = null; + float secSumVal = 0.0F; + float kpaSumVal = 0.0F; + float secParentSumVal = 0.0F; + float upCount = 0.0F; + String sFlag = null; + String sFlag1 = null; + String sUpvalue = null; + int count = 0; + ArrayList oList = new ArrayList(); + HrmAppTempHdrBean oHrmAppTempHdrBean = (HrmAppTempHdrBean)oBaseHeaderBean; + if (sScreenMode.equalsIgnoreCase("N")) + checkUniqueTemp(oHrmAppTempHdrBean, oList); + String sum1 = getSumWt(oHrmAppTempHdrBean.getHeaderPrimaryKey(), "S", ""); + if (!EnrgiseUtil.checkString(sum1)) { + secSum = 0.0F; + } else { + secSum = Float.parseFloat(sum1); + } + String sum2 = getSumWt(oHrmAppTempHdrBean.getHeaderPrimaryKey(), "K", ""); + if (!EnrgiseUtil.checkString(sum2)) { + kpaSum = 0.0F; + } else { + kpaSum = Float.parseFloat(sum2); + } + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateSection")) { + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtSrlNo", "hrm.HrmAppraisalTemplate.srlNo", oList, true); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtSectionCode", "hrm.HrmAppraisalTemplate.sectionCode", oList, true); + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean = oIt.next(); + System.out.println(oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId()); + if (oHrmAppraisalTemplateSecDtlBean.getStatus().equalsIgnoreCase("U")) + if (!EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId())) { + String sWt1 = getWtValInfo(oHrmAppTempHdrBean.getHeaderPrimaryKey(), oHrmAppraisalTemplateSecDtlBean.getDetailId(), "S", ""); + if (EnrgiseUtil.checkString(sWt1)) + secSumVal = Float.parseFloat(sWt1); + if (EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage())) { + secSum = secSum - secSumVal + Float.parseFloat(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage()); + } else { + secSum -= secSumVal; + sFlag = "true"; + } + if (secSum == false || secSum < false) { + RecordMetaInfo oRecordMetaInfo = getParentIdDetailMetaInfo("", oHrmAppTempHdrBean.getHeaderPrimaryKey()); + upCount = Float.parseFloat(String.valueOf(oRecordMetaInfo.getRecordCount())); + sUpvalue = String.valueOf(100 / upCount); + updateSecWt("", sUpvalue, oHrmAppTempHdrBean.getHeaderPrimaryKey()); + sFlag = "false"; + } + } else { + if (count == 0) + secParentSum = Float.parseFloat(getSumWt(oHrmAppTempHdrBean.getHeaderPrimaryKey(), "SP", oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId())); + ArrayList arylstParentId = getParentSecIdInfo(); + Iterator oIt1 = arylstParentId.iterator(); + while (oIt1.hasNext()) { + HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean1 = oIt1.next(); + System.out.println(oHrmAppraisalTemplateSecDtlBean1.getTxtParentSecId()); + if (oHrmAppraisalTemplateSecDtlBean1.getTxtParentSecId().equals(oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId())) { + secParentSumVal = Float.parseFloat(getWtValInfo(oHrmAppTempHdrBean.getHeaderPrimaryKey(), oHrmAppraisalTemplateSecDtlBean.getDetailId(), "SP", oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId())); + if (EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage())) { + secParentSum = secParentSum - secParentSumVal + Float.parseFloat(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage()); + } else { + secParentSum -= secParentSumVal; + sFlag = "true"; + count++; + } + if (secParentSum == false || secParentSum < false) { + RecordMetaInfo oRecordMetaInfo = getParentIdDetailMetaInfo(oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId(), oHrmAppTempHdrBean.getHeaderPrimaryKey()); + upCount = Float.parseFloat(String.valueOf(oRecordMetaInfo.getRecordCount())); + System.out.println(upCount); + sUpvalue = String.valueOf(100 / upCount); + updateSecWt(oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId(), sUpvalue, oHrmAppTempHdrBean.getHeaderPrimaryKey()); + sFlag = "false"; + } + } + } + } + if (oHrmAppraisalTemplateSecDtlBean.getStatus().equalsIgnoreCase("N")) { + if (!EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId())) { + if (EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage())) { + secSum += Float.parseFloat(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage()); + if (secSum > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + continue; + } + if (secSum > false) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.enter")); + continue; + } + String sSum = getSumWt(oHrmAppTempHdrBean.getHeaderPrimaryKey(), "SP", oHrmAppraisalTemplateSecDtlBean.getTxtParentSecId()); + if (!EnrgiseUtil.checkString(sSum)) { + secParentSum = 0.0F; + } else { + secParentSum = Float.parseFloat(sSum); + } + if (EnrgiseUtil.checkString(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage())) { + secParentSum += Float.parseFloat(oHrmAppraisalTemplateSecDtlBean.getTxtSectionWeightage()); + if (secParentSum > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + continue; + } + if (secParentSum > false) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.enter")); + } + } + if (EnrgiseUtil.checkString(sFlag)) + if (sFlag.equalsIgnoreCase("true")) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.enter")); + if (secSum > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + if (secParentSum > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + } + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtKpaGroupCode", "hrm.HrmAppraisalTemplateKpa.kpaGroupCode", oList, true); + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateKpaDtlBean oHrmAppraisalTemplateKpaDtlBean = oIt.next(); + if (oHrmAppraisalTemplateKpaDtlBean.getStatus().equalsIgnoreCase("U")) { + kpaSumVal = Float.parseFloat(getWtValInfo(oHrmAppTempHdrBean.getHeaderPrimaryKey(), oHrmAppraisalTemplateKpaDtlBean.getDetailId(), "K", "")); + if (EnrgiseUtil.checkString(oHrmAppraisalTemplateKpaDtlBean.getTxtWeightage())) { + kpaSum = kpaSum - kpaSumVal + Float.parseFloat(oHrmAppraisalTemplateKpaDtlBean.getTxtWeightage()); + } else { + kpaSum -= kpaSumVal; + sFlag1 = "true"; + } + if (kpaSum == false || kpaSum < false) { + RecordMetaInfo oRecordMetaInfo = getAppTempSecKPADetailMetaInfo(oHrmAppTempHdrBean.getHeaderPrimaryKey()); + upCount = Float.parseFloat(String.valueOf(oRecordMetaInfo.getRecordCount())); + sUpvalue = String.valueOf(100 / upCount); + updateKPAWt(oHrmAppTempHdrBean.getHeaderPrimaryKey(), sUpvalue); + sFlag1 = "false"; + } + } + if (oHrmAppraisalTemplateKpaDtlBean.getStatus().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmAppraisalTemplateKpaDtlBean.getTxtWeightage())) { + kpaSum += Float.parseFloat(oHrmAppraisalTemplateKpaDtlBean.getTxtWeightage()); + if (kpaSum > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + continue; + } + if (kpaSum > false) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.enter")); + } + } + if (EnrgiseUtil.checkString(sFlag1)) + if (sFlag1.equalsIgnoreCase("true")) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.enter")); + if (kpaSum > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + } + } + reportError(oList); + } + + private void checkUniqueTemp(HrmAppTempHdrBean oHrmAppTempHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + long lNoTmpl = 0L; + oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAppTempHdrBean.getTemplateName())); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLTMPLMST.procGetTempNameCount(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + lNoTmpl = ((Long)oOutObject.getObject()).longValue(); + if (lNoTmpl > 0L) { + ArrayList oParams = new ArrayList(); + oErrorList.add(new EnrgiseMessageKeyException("hrm.Temp.Unique.Data", oParams, "E")); + } + } + + public String approveHrmAprslTmpMst(BaseHeaderBean oBaseHeaderBean, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + String sFlagSec = null; + String sFlagKpa = null; + ArrayList oErrorList = new ArrayList(); + sFlagSec = checkSecWeightageValidation(oBaseHeaderBean.getHeaderPrimaryKey(), oErrorList); + sFlagKpa = checkKpaWeightageValidation(oBaseHeaderBean.getHeaderPrimaryKey(), oErrorList); + reportError(oErrorList); + if (EnrgiseUtil.checkString(sFlagSec) && EnrgiseUtil.checkString(sFlagKpa)) + if (sFlagSec.equalsIgnoreCase("1") || sFlagKpa.equalsIgnoreCase("1")) + updateTemFlag(oBaseHeaderBean.getHeaderPrimaryKey()); + return oBaseHeaderBean.getHeaderPrimaryKey(); + } + + public RecordMetaInfo getHrmAprslTmpMstSecCount(String sParentId, String sHdrId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sParentId)); + arylstParam.add(new DBObject(2, 1, 12, sHdrId)); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.proc_UpProperWtg(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public String checkSecWeightageValidation(String sHeaderPrimKey, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 0; + long lWeightage = 0L; + String sParentId = null; + String sWtg = null; + String sSecFlag = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimKey)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLTMPLMST.proc_ProperWtg(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + if (oList.size() != 0) { + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + sParentId = oRow.get("parent_sec_id").getString(); + sWtg = oRow.get("totWtg").getString(); + if (EnrgiseUtil.checkString(sWtg)) { + lWeightage = Long.parseLong(sWtg); + if (lWeightage != 100L && lWeightage > 0L) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.sec.wt.exact.value")); + if (lWeightage == 0L) { + RecordMetaInfo oRecordMetaInfo = getHrmAprslTmpMstSecCount(sParentId, sHeaderPrimKey); + float upCount = Float.parseFloat(String.valueOf(oRecordMetaInfo.getRecordCount())); + String sUpvalue = String.valueOf(100 / upCount); + updateSecWt(sParentId, sUpvalue, sHeaderPrimKey); + } + } + } + } + if (oErrorList.size() == 0) { + sSecFlag = "1"; + } else { + sSecFlag = "0"; + } + return sSecFlag; + } + + public String checkKpaWeightageValidation(String sHeaderPrimKey, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 0; + long lWeightage = 0L; + String sWtg = null; + String sKpaFlag = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimKey)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLTMPLMST.proc_ProperWtgKPA(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + if (oList.size() != 0) { + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + sWtg = oRow.get("totWtg").getString(); + if (EnrgiseUtil.checkString(sWtg)) { + lWeightage = Long.parseLong(sWtg); + if (lWeightage != 100L && lWeightage > 0L) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.kpa.wt.exact.value")); + if (lWeightage == 0L) { + RecordMetaInfo oRecordMetaInfo = getAppTempSecKPADetailMetaInfo(sHeaderPrimKey); + float upCount = Float.parseFloat(String.valueOf(oRecordMetaInfo.getRecordCount())); + String sUpvalue = String.valueOf(100 / upCount); + updateKPAWt(sHeaderPrimKey, sUpvalue); + } + } + } + } + if (oErrorList.size() == 0) { + sKpaFlag = "1"; + } else { + sKpaFlag = "0"; + } + return sKpaFlag; + } + + public LovVO getHrmAprslTempNameQLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("hrm.HrmAppraisalTemplateKpa.templateCode"); + arylstHeaderNames.add("hrm.HrmAppraisalTemplateKpa.templateName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLLOV.proc_GetAprslTempNameQLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("Code").getString()); + oLOVBean.setDetailField2(oRow.get("TempName").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getAprslTmplRatingCodeQLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmAppraisalTemplateKpa.ratingCode"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sID = oLovQueryVO.getProperty("TmplId"); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 1, 12, sID)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLLOV.proc_GetAprslTempRatCodeQLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("Id").getString()); + oLOVBean.setDetailField2(oRow.get("Code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void updateTemFlag(String sHdrId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sHdrId)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLTMPLMST.upTmplFlag(?,?,?,?)"); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmApprisalKPABO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmApprisalKPABO.java new file mode 100644 index 0000000..ba4497c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmApprisalKPABO.java @@ -0,0 +1,521 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAppraisalKPADtlBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; + +public class HrmApprisalKPABO extends HrmBaseBO { + public HrmApprisalKPABO() {} + + public void initializeBOImpl() { + this.headerTable = "HRM_APRSL_KPA_HDR"; + } + + public HrmApprisalKPABO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equals("HrmAppraisalKPA")) + ApprisalKpaDetails(sHeaderPrimaryKey, oDetailBeanArray); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHrmAppRaisalKpaHeaderMetaInfo(HrmAppraisalKPAQVO oHrmAppraisalKPAQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAppraisalKPAQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmAppraisalKPAQVO.getKpaGroupCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmAppraisalKPAQVO.getDescription())); + oParameters.add(new DBObject(4, 2, -5)); + oParameters.add(new DBObject(5, 2, 93)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_HrPerAppKPAHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAppRaisalKpaHeader(HrmAppraisalKPAQVO oHrmAppraisalKPAQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (oHrmAppraisalKPAQVO == null) + oHrmAppraisalKPAQVO = new HrmAppraisalKPAQVO(); + ArrayList oHeaderList = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmAppraisalKPAQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmAppraisalKPAQVO.getKpaGroupCode())); + oParameters.add(new DBObject(5, 1, 12, oHrmAppraisalKPAQVO.getDescription())); + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_GetHrPerAppKPAHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + count = 0; + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAppraisalKPAHdrBean oHrmAppraisalKPAHdrBean = new HrmAppraisalKPAHdrBean(); + oHrmAppraisalKPAHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAppraisalKPAHdrBean.setKpaGroupCode(oRow.get("CODE").getString()); + oHrmAppraisalKPAHdrBean.setDescription(oRow.get("DESCRIPTION").getString()); + if (EnrgiseUtil.checkString(oRow.get("HEADER_FLAG").getString())) + if (oRow.get("HEADER_FLAG").getString().equalsIgnoreCase("F")) + oHrmAppraisalKPAHdrBean.setStatusOfHeader("Freezed"); + oHrmAppraisalKPAHdrBean.setRatingRequired(String.valueOf(oRow.get("RATING_REQUIRED").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmAppraisalKPAHdrBean.setTxtAppraiserType(oRow.get("APPRAISER_TYPE").getString()); + oHeaderList.add(oHrmAppraisalKPAHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmAppRaisalKpaDetailMetaInfo(String sPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_HrPerAppKPADtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getHrmAppRaisalKpaDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oAppKpaDetail = null; + int count = 0; + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_GetHrPerAppKPADtl(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oAppKpaDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = new HrmAppraisalKPADtlBean(); + oHrmAppraisalKPADtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAppraisalKPADtlBean.setTxtSrlNo(oRow.get("SRL_NO").getString()); + oHrmAppraisalKPADtlBean.setTxtKpaCode(oRow.get("CODE").getString()); + oHrmAppraisalKPADtlBean.setTxtDescription(oRow.get("DESCRIPTION").getString()); + oHrmAppraisalKPADtlBean.setMandatoryFlag(String.valueOf(oRow.get("MANDATORY_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmAppraisalKPADtlBean.setTxtWeightage(oRow.get("WEIGHTAGE").getString()); + oHrmAppraisalKPADtlBean.setStatus("Q"); + oAppKpaDetail.add(oHrmAppraisalKPADtlBean); + } + return oAppKpaDetail; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseSystemException { + String returnString = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oParameters = new ArrayList(); + HrmAppraisalKPAHdrBean oHrmAppraisalKPAHdrBean = (HrmAppraisalKPAHdrBean)oBaseHeaderBean; + String sRatingRequired = String.valueOf(oHrmAppraisalKPAHdrBean.getRatingRequired()).equalsIgnoreCase("on") ? "Y" : "N"; + if (sScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, new String(oHrmAppraisalKPAHdrBean.getKpaGroupCode()))); + oParameters.add(new DBObject(4, 1, 12, new String(oHrmAppraisalKPAHdrBean.getDescription()))); + oParameters.add(new DBObject(5, 1, 12, new String(oHrmAppraisalKPAHdrBean.getTxtAppraiserType()))); + oParameters.add(new DBObject(6, 1, 12, sRatingRequired)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12, oHrmAppraisalKPAHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_UpsertHrAppKPAHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (sScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmAppraisalKPAHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, new String(oHrmAppraisalKPAHdrBean.getKpaGroupCode()))); + oParameters.add(new DBObject(4, 1, 12, new String(oHrmAppraisalKPAHdrBean.getDescription()))); + oParameters.add(new DBObject(5, 1, 12, new String(oHrmAppraisalKPAHdrBean.getTxtAppraiserType()))); + oParameters.add(new DBObject(6, 1, 12, sRatingRequired)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12, oHrmAppraisalKPAHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_UpsertHrAppKPAHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (sScreenMode.equalsIgnoreCase("D")) { + + } + return returnString; + } + + private void ApprisalKpaDetails(String sPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + boolean bUpdate = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = oIt.next(); + String sMandatoryFlag = String.valueOf(oHrmAppraisalKPADtlBean.getMandatoryFlag()).equalsIgnoreCase("on") ? "Y" : "N"; + if (oHrmAppraisalKPADtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPPRISALKPA.proc_UpsertHrAppKPADtl(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmAppraisalKPADtlBean.getTxtKpaCode())); + oParameters.add(new DBObject(5, 1, 12, oHrmAppraisalKPADtlBean.getTxtDescription())); + oParameters.add(new DBObject(6, 1, 12, oHrmAppraisalKPADtlBean.getTxtSrlNo())); + oParameters.add(new DBObject(7, 1, 12, sMandatoryFlag)); + oParameters.add(new DBObject(8, 1, 12, oHrmAppraisalKPADtlBean.getTxtWeightage())); + oParameters.add(new DBObject(9, 1, 12, "200")); + oParameters.add(new DBObject(10, 1, 12, "200")); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmAppraisalKPADtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPPRISALKPA.proc_UpsertHrAppKPADtl(?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmAppraisalKPADtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmAppraisalKPADtlBean.getTxtKpaCode())); + oParameters.add(new DBObject(5, 1, 12, oHrmAppraisalKPADtlBean.getTxtDescription())); + oParameters.add(new DBObject(6, 1, 12, oHrmAppraisalKPADtlBean.getTxtSrlNo())); + oParameters.add(new DBObject(7, 1, 12, sMandatoryFlag)); + oParameters.add(new DBObject(8, 1, 12, oHrmAppraisalKPADtlBean.getTxtWeightage())); + oParameters.add(new DBObject(9, 1, 12, "200")); + oParameters.add(new DBObject(10, 1, 12, "200")); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmAppraisalKPADtlBean.getStatus().equals("D")); + } + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + if (bInsert) + oBean.executeBatch(); + } + + public LovVO getQueryAppraisalWorkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("kpaGrpId"); + arylstHeaderNames.add("hrm.HrmHrmAppraisalKPA.kpaGroupCode"); + arylstHeaderNames.add("hrm.HrmHrmAppraisalKPA.description"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField2())); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLLOV.proc_GetApprKPAGrpCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String checkWeightageValidation(String sHeaderPrimKey) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 0; + String sId = ""; + String sWtg = ""; + String sNWtg = ""; + String sCnt = ""; + String sCode = ""; + long lWeightage = 0L; + long lCount = 0L; + boolean flag = true; + ArrayList oErrorList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimKey)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_ProperWtg(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + sWtg = oRow.get("totWtg").getString(); + sCnt = oRow.get("totCnt").getString(); + lWeightage = Long.parseLong(sWtg); + lCount = Long.parseLong(sCnt); + ArrayList arylstDetailList = new ArrayList(); + arylstDetailList = getHrmAppRaisalKpaDetail(sHeaderPrimKey, 1L, getHrmAppRaisalKpaDetailMetaInfo(sHeaderPrimKey).getRecordCount()); + if (lWeightage != 0L) + if (checkifEmpty(arylstDetailList) && checkTotalSum(arylstDetailList)) { + flag = true; + } else { + flag = false; + } + if (lWeightage == 0L) { + lWeightage = 100L / lCount; + sWtg = String.valueOf(lWeightage); + oParameters = new ArrayList(); + oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sWtg)); + oParameters.add(new DBObject(2, 1, 12, sHeaderPrimKey)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_UpdateWtg(?,?,?,?,?)"); + } + if (flag) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimKey)); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMAPPRISALKPA.proc_updateStatus(?,?,?,?)"); + } + } + return sHeaderPrimKey; + } + + private boolean checkTotalSum(ArrayList oDetailList) throws EnrgiseSystemException, EnrgiseApplicationException { + boolean flag = true; + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = null; + int iKpa = 0; + Iterator oIt1 = oDetailList.iterator(); + ArrayList oErrorList = new ArrayList(); + while (oIt1.hasNext()) { + oHrmAppraisalKPADtlBean = oIt1.next(); + if (!oHrmAppraisalKPADtlBean.getStatus().equalsIgnoreCase("N")) + if (EnrgiseUtil.checkString(oHrmAppraisalKPADtlBean.getTxtWeightage())) + iKpa += Integer.parseInt(oHrmAppraisalKPADtlBean.getTxtWeightage()); + } + if (iKpa != 100) { + flag = false; + ArrayList oParams = new ArrayList(); + oParams.add(""); + oParams.add(new Integer(0)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.aprsl.wt.value", oParams)); + } + reportError(oErrorList); + return flag; + } + + private boolean checkifEmpty(ArrayList oDetailList) throws EnrgiseSystemException, EnrgiseApplicationException { + boolean flag = true; + Iterator itiDetailList = oDetailList.iterator(); + ArrayList oErrorList = new ArrayList(); + int rowCount = 1; + while (itiDetailList.hasNext()) { + HrmAppraisalKPADtlBean oBean = itiDetailList.next(); + if (!EnrgiseUtil.checkString(oBean.getTxtWeightage())) { + flag = false; + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("hrms.hrmapp.kpa.wt", oParams, "E")); + } + rowCount++; + } + reportError(oErrorList); + return flag; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + checkMandatoryHdr((HrmAppraisalKPAHdrBean)oBaseHeaderBean, arylstErrorList); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAppraisalKPA")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = itrBean1.next(); + if (!oHrmAppraisalKPADtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtl(oHrmAppraisalKPADtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + int iKPAWt = 0; + ArrayList oList = new ArrayList(); + if (bDetailDataChanged); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAppraisalKPA")) { + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtSrlNo", "hrm.HrmAppraisalKPA.srlNo", oList, true); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtKpaCode", "hrm.HrmAppraisalKPA.sectionCode", oList, true); + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = null; + float iKpa = 0.0F; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + oHrmAppraisalKPADtlBean = oIt1.next(); + if (!oHrmAppraisalKPADtlBean.getStatus().equalsIgnoreCase("N")) + if (EnrgiseUtil.checkString(oHrmAppraisalKPADtlBean.getTxtWeightage())) { + iKpa += Float.parseFloat(oHrmAppraisalKPADtlBean.getTxtWeightage()); + if (iKpa > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + } + if (oHrmAppraisalKPADtlBean.getStatus().equalsIgnoreCase("N")) + if (EnrgiseUtil.checkString(oHrmAppraisalKPADtlBean.getTxtWeightage())) { + iKpa += Float.parseFloat(oHrmAppraisalKPADtlBean.getTxtWeightage()); + if (iKpa > 100) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.wt.value")); + } + } + } + reportError(oList); + } + + private void checkMandatoryHdr(HrmAppraisalKPAHdrBean oHrmAppraisalKPAHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAppraisalKPAHdrBean.getKpaGroupCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHrmAppraisalKPA.kpaGroupCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAppraisalKPAHdrBean.getTxtAppraiserType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHrmAppraisalKPA.txtAppraiserType"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtl(HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAppraisalKPADtlBean.getTxtSrlNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHrmAppraisalKPA.txtSrlNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAppraisalKPADtlBean.getTxtKpaCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHrmAppraisalKPA.txtKpaCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAppraisalKPADtlBean.getTxtDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHrmAppraisalKPA.txtDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslBO.java new file mode 100644 index 0000000..1c197da --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslBO.java @@ -0,0 +1,1875 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAprslEmpDtlsBean; +import wenrgise.hrms.bean.HrmAprslEmployeeBean; +import wenrgise.hrms.bean.HrmAprslGoalsDtlBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslKPADtlBean; +import wenrgise.hrms.bean.HrmAprslTrngReqDtlBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.bean.WflWorkListInfoBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmAprslBO extends HrmBaseBO { + public HrmAprslBO() {} + + public HrmAprslBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public WflWorkListInfoBean getLevel(String sWorkListId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getWorkListInfo(sWorkListId); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRemExcep) { + throw new EnrgiseSystemException(oRemExcep); + } + } + + public RecordMetaInfo getHrmAprslKPADtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.proc_GetHrEmpAprslKPADtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAprslKPADetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstAprslKPADetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslKPADtlInfo(?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstAprslKPADetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslKPADtlBean oHrmAprslKPADtlBean = new HrmAprslKPADtlBean(); + oHrmAprslKPADtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAprslKPADtlBean.setTxtKPADesc(oRow.get("KPA_DESC").getString()); + oHrmAprslKPADtlBean.setTxtKPACode(oRow.get("KPA_GROUP_DESC").getString()); + oHrmAprslKPADtlBean.setTxtTmplKPADtlId(oRow.get("TMPL_KPA_DTL_ID").getString()); + oHrmAprslKPADtlBean.setTxtKPADtlId(oRow.get("KPA_DTL_ID").getString()); + oHrmAprslKPADtlBean.setTxtKpaRatingReq(oRow.get("rating_required").getString()); + oHrmAprslKPADtlBean.setTxtKpaAprslType(oRow.get("appraiser_type").getString()); + oHrmAprslKPADtlBean.setTxtLevelAprl0(oRow.get("aprsl_lvl0").getString()); + oHrmAprslKPADtlBean.setTxtLevelAprl1(oRow.get("aprsl_lvl1").getString()); + oHrmAprslKPADtlBean.setTxtLevelAprl2(oRow.get("aprsl_lvl2").getString()); + oHrmAprslKPADtlBean.setTxtLevelAprl3(oRow.get("aprsl_lvl3").getString()); + oHrmAprslKPADtlBean.setTxtLevelAprl4(oRow.get("aprsl_lvl4").getString()); + oHrmAprslKPADtlBean.setTxtLevelAprl5(oRow.get("aprsl_lvl5").getString()); + oHrmAprslKPADtlBean.setTxtLevelRating0(oRow.get("rating_lvl0").getString()); + oHrmAprslKPADtlBean.setTxtLevelRating1(oRow.get("rating_lvl1").getString()); + oHrmAprslKPADtlBean.setTxtLevelRating2(oRow.get("rating_lvl2").getString()); + oHrmAprslKPADtlBean.setTxtLevelRating3(oRow.get("rating_lvl3").getString()); + oHrmAprslKPADtlBean.setTxtLevelRating4(oRow.get("rating_lvl4").getString()); + oHrmAprslKPADtlBean.setTxtLevelRating5(oRow.get("rating_lvl5").getString()); + oHrmAprslKPADtlBean.setTxtEmpAprsKPAlHdrId(oRow.get("emp_aprsl_id").getString()); + arylstAprslKPADetail.add(oHrmAprslKPADtlBean); + } + return arylstAprslKPADetail; + } + + public RecordMetaInfo getHrmAprslGoalsDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.proc_GetHrEmpAprslGoalDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAprslGoalsDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstAprslGoalsDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslGoalDtlInfo(?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstAprslGoalsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslGoalsDtlBean oHrmAprslGoalsDtlBean = new HrmAprslGoalsDtlBean(); + oHrmAprslGoalsDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAprslGoalsDtlBean.setTxtTmplGoalId(oRow.get("TMPL_GOAL_ID").getString()); + oHrmAprslGoalsDtlBean.setTxtTmplSecId(oRow.get("tmpl_sec_id").getString()); + oHrmAprslGoalsDtlBean.setTxtParentSecId(oRow.get("parent_sec_id").getString()); + oHrmAprslGoalsDtlBean.setTxtGoalDesc(oRow.get("goal_desc").getString()); + oHrmAprslGoalsDtlBean.setTxtSection(oRow.get("sec_code").getString()); + oHrmAprslGoalsDtlBean.setTxtParentSec(oRow.get("PARENT_SEC_CODE").getString()); + oHrmAprslGoalsDtlBean.setTxtSecRatingReq(oRow.get("rating_required").getString()); + oHrmAprslGoalsDtlBean.setTxtSecAprslType(oRow.get("appraiser_typ_flag").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelAprl0g(oRow.get("aprsl_lvl0").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelAprl1g(oRow.get("aprsl_lvl1").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelAprl2g(oRow.get("aprsl_lvl2").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelAprl3g(oRow.get("aprsl_lvl3").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelAprl4g(oRow.get("aprsl_lvl4").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelAprl5g(oRow.get("aprsl_lvl5").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelRating0g(oRow.get("rating_lvl0").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelRating1g(oRow.get("rating_lvl1").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelRating2g(oRow.get("rating_lvl2").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelRating3g(oRow.get("rating_lvl3").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelRating4g(oRow.get("rating_lvl4").getString()); + oHrmAprslGoalsDtlBean.setTxtLevelRating5g(oRow.get("rating_lvl5").getString()); + oHrmAprslGoalsDtlBean.setTxtEmpAprslHdrId(oRow.get("emp_aprsl_id").getString()); + arylstAprslGoalsDetail.add(oHrmAprslGoalsDtlBean); + } + return arylstAprslGoalsDetail; + } + + public RecordMetaInfo getHrmAprslTrngReqDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslTrngReqDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAprslTrngReqDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstAprslTrngReqDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslTrngReqDtlInfo(?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstAprslTrngReqDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslTrngReqDtlBean oHrmAprslTrngReqDtlBean = new HrmAprslTrngReqDtlBean(); + oHrmAprslTrngReqDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAprslTrngReqDtlBean.setTxtDateSubmitted(EnrgiseUtil.convertToString(oRow.get("date_submitted").getDate())); + oHrmAprslTrngReqDtlBean.setTxtCourseName(oRow.get("CRS_NAME").getString()); + oHrmAprslTrngReqDtlBean.setTxtTrngCal(oRow.get("CAL_NAME").getString()); + oHrmAprslTrngReqDtlBean.setTxtInstName(oRow.get("inst_name").getString()); + oHrmAprslTrngReqDtlBean.setTxtStartDate(EnrgiseUtil.convertToString(oRow.get("start_date").getDate())); + oHrmAprslTrngReqDtlBean.setTxtEndDate(EnrgiseUtil.convertToString(oRow.get("end_date").getDate())); + oHrmAprslTrngReqDtlBean.setTxtNature(oRow.get("nature").getString()); + oHrmAprslTrngReqDtlBean.setTxtPurpose(oRow.get("purpose").getString()); + oHrmAprslTrngReqDtlBean.setTxtRecommender(oRow.get("REC_NAME").getString()); + oHrmAprslTrngReqDtlBean.setTxtAppStatus(oRow.get("approved_flag").getString()); + oHrmAprslTrngReqDtlBean.setTxtRemarks(oRow.get("rejection_remark").getString()); + arylstAprslTrngReqDetail.add(oHrmAprslTrngReqDtlBean); + } + return arylstAprslTrngReqDetail; + } + + public String getSpcTmplInfo(String sEmpId, String sStartOrderId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sSpcTmplId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sStartOrderId)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procGetHrEmpAprslSpcTmplInfo(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sSpcTmplId = oRow.get("SP_TMPL_ID").getString(); + } + return sSpcTmplId; + } + + public ArrayList getHrAprslKPADtlIdInfo(String sEmpAprslHdrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstTmplKPADtlId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpAprslHdrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procGetHrEmpAprslKPADtlInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstTmplKPADtlId = new ArrayList(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstTmplKPADtlId = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmAprslKPADtlBean oHrmAprslKPADtlBean = new HrmAprslKPADtlBean(); + oHrmAprslKPADtlBean.setTxtTmplKPADtlId(oRow.get("TMPL_KPA_DTL_ID").getString()); + arylstTmplKPADtlId.add(oHrmAprslKPADtlBean); + } + return arylstTmplKPADtlId; + } + + public ArrayList getHrAprslGoalsDtlIdInfo(String sEmpAprslHdrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstTmplGoalsDtlId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpAprslHdrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procGetHrEmpAprslGoalDtlInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstTmplGoalsDtlId = new ArrayList(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstTmplGoalsDtlId = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmAprslGoalsDtlBean oHrmAprslGoalsDtlBean = new HrmAprslGoalsDtlBean(); + oHrmAprslGoalsDtlBean.setTxtTmplGoalId(oRow.get("TMPL_GOAL_ID").getString()); + arylstTmplGoalsDtlId.add(oHrmAprslGoalsDtlBean); + } + return arylstTmplGoalsDtlId; + } + + public void insertEmpAprslKPA(String sEmpAprslHdrId) throws EnrgiseSystemException { + boolean bInsert = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList oDetailBeanArray = getHrAprslKPADtlIdInfo(sEmpAprslHdrId); + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslKPADtlBean oHrmAprslKPADtlBean = oIt.next(); + String sTmplKPADtlId = oHrmAprslKPADtlBean.getTxtTmplKPADtlId(); + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSL.procUpsertHrEmpAprslKPADtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sEmpAprslHdrId)); + arylstParam.add(new DBObject(4, 1, 12, sTmplKPADtlId)); + arylstParam.add(new DBObject(5, 1, 12, null)); + arylstParam.add(new DBObject(6, 1, 12, null)); + arylstParam.add(new DBObject(7, 1, 12, null)); + arylstParam.add(new DBObject(8, 1, 12, null)); + arylstParam.add(new DBObject(9, 1, 12, null)); + arylstParam.add(new DBObject(10, 1, 12, null)); + arylstParam.add(new DBObject(11, 1, 12, null)); + arylstParam.add(new DBObject(12, 1, 12, null)); + arylstParam.add(new DBObject(13, 1, 12, null)); + arylstParam.add(new DBObject(14, 1, 12, null)); + arylstParam.add(new DBObject(15, 1, 12, null)); + arylstParam.add(new DBObject(16, 1, 12, null)); + arylstParam.add(new DBObject(17, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + if (bInsert) + oBean.executeBatch(); + } + + public void insertEmpAprslGoals(String sEmpAprslHdrId) throws EnrgiseSystemException { + boolean bInsert = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList oDetailBeanArray = getHrAprslGoalsDtlIdInfo(sEmpAprslHdrId); + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslGoalsDtlBean oHrmAprslGoalsDtlBean = oIt.next(); + String sTmplGoalsDtlId = oHrmAprslGoalsDtlBean.getTxtTmplGoalId(); + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSL.procUpsertHrEmpAprslGoalDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sEmpAprslHdrId)); + arylstParam.add(new DBObject(4, 1, 12, sTmplGoalsDtlId)); + arylstParam.add(new DBObject(5, 1, 12, null)); + arylstParam.add(new DBObject(6, 1, 12, null)); + arylstParam.add(new DBObject(7, 1, 12, null)); + arylstParam.add(new DBObject(8, 1, 12, null)); + arylstParam.add(new DBObject(9, 1, 12, null)); + arylstParam.add(new DBObject(10, 1, 12, null)); + arylstParam.add(new DBObject(11, 1, 12, null)); + arylstParam.add(new DBObject(12, 1, 12, null)); + arylstParam.add(new DBObject(13, 1, 12, null)); + arylstParam.add(new DBObject(14, 1, 12, null)); + arylstParam.add(new DBObject(15, 1, 12, null)); + arylstParam.add(new DBObject(16, 1, 12, null)); + arylstParam.add(new DBObject(17, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + if (bInsert) + oBean.executeBatch(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String SAppraiserType = null; + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oBaseHeaderBean; + String sSpcTmplId = getSpcTmplInfo(oHrmAprslHdrBean.getEmpId(), oHrmAprslHdrBean.getStartOrderId()); + if (ScreenMode.equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAprslLevel())) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) + SAppraiserType = "0"; + } else { + SAppraiserType = "0"; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslHdrBean.getEmpId())); + arylstParam.add(new DBObject(3, 1, 12, sSpcTmplId)); + arylstParam.add(new DBObject(4, 1, 12, SAppraiserType)); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslHdrBean.getRating0())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslHdrBean.getRating1())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslHdrBean.getRating2())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslHdrBean.getRating3())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslHdrBean.getRating4())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAprslHdrBean.getRating5())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(13, 1, 12, null)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procUpsertHrEmpAprslHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + insertEmpAprslKPA(returnString); + insertEmpAprslGoals(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslHdrBean.getEmpId())); + arylstParam.add(new DBObject(3, 1, 12, sSpcTmplId)); + arylstParam.add(new DBObject(4, 1, 12, SAppraiserType)); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslHdrBean.getRating0())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslHdrBean.getRating1())); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2")) { + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslHdrBean.getFinalRating())); + } else { + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslHdrBean.getRating2())); + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3")) { + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslHdrBean.getFinalRating())); + } else { + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslHdrBean.getRating3())); + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4")) { + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslHdrBean.getFinalRating())); + } else { + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslHdrBean.getRating4())); + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + arylstParam.add(new DBObject(10, 1, 12, oHrmAprslHdrBean.getFinalRating())); + } else { + arylstParam.add(new DBObject(10, 1, 12, oHrmAprslHdrBean.getRating5())); + } + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(13, 1, 12, oHrmAprslHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procUpsertHrEmpAprslHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAprslKPA")) { + saveHrmEmpAprslKPA(sHeaderPrimaryKey, oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmAprslGoals")) { + saveHrmEmpAprslGoals(sHeaderPrimaryKey, oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmAprslTrngReq")) { + saveHrmEmpAprslTrngReq(sHeaderPrimaryKey, oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmployee")) { + saveHrmEmpAprslDtl(sHeaderPrimaryKey, oDetailBeanArray); + } + } + + private void saveHrmEmpAprslKPA(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bUpdate = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslKPADtlBean oHrmAprslKPADtlBean = oIt.next(); + if (oHrmAprslKPADtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSL.procUpsertHrEmpAprslKPADtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslKPADtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslKPADtlBean.getTxtEmpAprsKPAlHdrId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslKPADtlBean.getTxtTmplKPADtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslKPADtlBean.getTxtLevelRating0())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslKPADtlBean.getTxtLevelRating1())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslKPADtlBean.getTxtLevelRating2())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslKPADtlBean.getTxtLevelRating3())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslKPADtlBean.getTxtLevelRating4())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAprslKPADtlBean.getTxtLevelRating5())); + arylstParam.add(new DBObject(11, 1, 12, oHrmAprslKPADtlBean.getTxtLevelAprl0())); + arylstParam.add(new DBObject(12, 1, 12, oHrmAprslKPADtlBean.getTxtLevelAprl1())); + arylstParam.add(new DBObject(13, 1, 12, oHrmAprslKPADtlBean.getTxtLevelAprl2())); + arylstParam.add(new DBObject(14, 1, 12, oHrmAprslKPADtlBean.getTxtLevelAprl3())); + arylstParam.add(new DBObject(15, 1, 12, oHrmAprslKPADtlBean.getTxtLevelAprl4())); + arylstParam.add(new DBObject(16, 1, 12, oHrmAprslKPADtlBean.getTxtLevelAprl5())); + arylstParam.add(new DBObject(17, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmEmpAprslGoals(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bUpdate = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslGoalsDtlBean oHrmAprslGoalsDtlBean = oIt.next(); + if (oHrmAprslGoalsDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSL.procUpsertHrEmpAprslGoalDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslGoalsDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslGoalsDtlBean.getTxtEmpAprslHdrId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslGoalsDtlBean.getTxtTmplGoalId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelRating0g())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelRating1g())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelRating2g())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelRating3g())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelRating4g())); + arylstParam.add(new DBObject(10, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelRating5g())); + arylstParam.add(new DBObject(11, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelAprl0g())); + arylstParam.add(new DBObject(12, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelAprl1g())); + arylstParam.add(new DBObject(13, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelAprl2g())); + arylstParam.add(new DBObject(14, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelAprl3g())); + arylstParam.add(new DBObject(15, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelAprl4g())); + arylstParam.add(new DBObject(16, 1, 12, oHrmAprslGoalsDtlBean.getTxtLevelAprl5g())); + arylstParam.add(new DBObject(17, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmEmpAprslTrngReq(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslTrngReqDtlBean oHrmAprslTrngReqDtlBean = oIt.next(); + if (oHrmAprslTrngReqDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSL.procUpsertHrTrngReq(?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslTrngReqDtlBean.getTxtNature())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslTrngReqDtlBean.getTxtPurpose())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslTrngReqDtlBean.getTxtRecId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslTrngReqDtlBean.getTxtRemarks())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslTrngReqDtlBean.getTxtLevel().equalsIgnoreCase("0") ? "N" : "A")); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslTrngReqDtlBean.getTxtEmpId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslTrngReqDtlBean.getTxtCalId())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslTrngReqDtlBean.getTxtCrsId())); + arylstParam.add(new DBObject(10, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + } + + public LovVO getHrmAprslStartOrderLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("startOrderId"); + oHeaderList.add("hrm.EmpAprsl.stOrderNo"); + oHeaderList.add("hrm.EmpAprsl.fromDate"); + oHeaderList.add("hrm.EmpAprsl.toDate"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSLLOV.proc_GetAprslStartOrderLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("START_ORDER_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("PERIOD_START_DATE").getDate())); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("PERIOD_END_DATE").getDate())); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslRatingLevel0LOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.EmpAprsl.RatingFrom"); + oHeaderList.add("hrm.EmpAprsl.RatingTo"); + oHeaderList.add("hrm.EmpAprsl.RatingDesc"); + oHeaderList.add("hrm.EmpAprsl.levelRating0"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + System.out.println(oLovQueryVO.getProperty("headerPrimaryKey")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getProperty("headerPrimaryKey"))); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSL.proc_HrRatingHelpLov(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("RATING_FROM").getString()); + oLOVBean.setDetailField2(oRow.get("RATING_TO").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField4(oRow.get("NUMERIC_EQ").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslRatingLevel1LOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.EmpAprsl.RatingFrom"); + oHeaderList.add("hrm.EmpAprsl.RatingTo"); + oHeaderList.add("hrm.EmpAprsl.RatingDesc"); + oHeaderList.add("hrm.EmpAprsl.levelRating1"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getProperty("headerPrimaryKey"))); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSL.proc_HrRatingHelpLov(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("RATING_FROM").getString()); + oLOVBean.setDetailField2(oRow.get("RATING_TO").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField4(oRow.get("NUMERIC_EQ").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslRatingLevel2LOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.EmpAprsl.RatingFrom"); + oHeaderList.add("hrm.EmpAprsl.RatingTo"); + oHeaderList.add("hrm.EmpAprsl.RatingDesc"); + oHeaderList.add("hrm.EmpAprsl.levelRating2"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getProperty("headerPrimaryKey"))); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSL.proc_HrRatingHelpLov(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("RATING_FROM").getString()); + oLOVBean.setDetailField2(oRow.get("RATING_TO").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField4(oRow.get("NUMERIC_EQ").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslRatingLevel3LOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.EmpAprsl.RatingFrom"); + oHeaderList.add("hrm.EmpAprsl.RatingTo"); + oHeaderList.add("hrm.EmpAprsl.RatingDesc"); + oHeaderList.add("hrm.EmpAprsl.levelRating3"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getProperty("headerPrimaryKey"))); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSL.proc_HrRatingHelpLov(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("RATING_FROM").getString()); + oLOVBean.setDetailField2(oRow.get("RATING_TO").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField4(oRow.get("NUMERIC_EQ").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslRatingLevel4LOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.EmpAprsl.RatingFrom"); + oHeaderList.add("hrm.EmpAprsl.RatingTo"); + oHeaderList.add("hrm.EmpAprsl.RatingDesc"); + oHeaderList.add("hrm.EmpAprsl.levelRating4"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getProperty("headerPrimaryKey"))); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSL.proc_HrRatingHelpLov(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("RATING_FROM").getString()); + oLOVBean.setDetailField2(oRow.get("RATING_TO").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField4(oRow.get("NUMERIC_EQ").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAprslRatingLevel5LOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.EmpAprsl.RatingFrom"); + oHeaderList.add("hrm.EmpAprsl.RatingTo"); + oHeaderList.add("hrm.EmpAprsl.RatingDesc"); + oHeaderList.add("hrm.EmpAprsl.levelRating5"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getProperty("headerPrimaryKey"))); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSL.proc_HrRatingHelpLov(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("RATING_FROM").getString()); + oLOVBean.setDetailField2(oRow.get("RATING_TO").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField4(oRow.get("NUMERIC_EQ").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_APRSL_HDR"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oBaseHeaderBean; + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmAprslKPA")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAprslKPADtlBean oHrmAprslKPADtlBean = itrBean1.next(); + if (!oHrmAprslKPADtlBean.getStatus().equalsIgnoreCase("D")) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) + if (!EnrgiseUtil.checkString(oHrmAprslKPADtlBean.getTxtLevelRating0())) { + MessageKey oMessageKey = new MessageKey("hrm.EmpAprsl.levelRating0"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) + if (!EnrgiseUtil.checkString(oHrmAprslKPADtlBean.getTxtLevelRating1())) { + MessageKey oMessageKey = new MessageKey("hrm.EmpAprsl.levelRating1"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + iCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmAprslGoals")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAprslGoalsDtlBean oHrmAprslGoalsDtlBean = itrBean1.next(); + if (!oHrmAprslGoalsDtlBean.getStatus().equalsIgnoreCase("D")) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) + if (!EnrgiseUtil.checkString(oHrmAprslGoalsDtlBean.getTxtLevelRating0g())) { + MessageKey oMessageKey = new MessageKey("hrm.EmpAprsl.levelRating0"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) + if (!EnrgiseUtil.checkString(oHrmAprslGoalsDtlBean.getTxtLevelRating1g())) { + MessageKey oMessageKey = new MessageKey("hrm.EmpAprsl.levelRating1"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + iCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmAprslTrngReq")) { + Iterator itrBean2 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean2.hasNext()) { + HrmAprslTrngReqDtlBean oHrmAprslTrngReqDtlBean = itrBean2.next(); + if (!oHrmAprslTrngReqDtlBean.getStatus().equalsIgnoreCase("D")); + } + } + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getEmpAprslStOrderLOVQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("startOrderId"); + arylstHeaderNames.add("hrm.HrmAprslForm.stOrderNo"); + arylstHeaderNames.add("hrm.EmpAprsl.toDate"); + arylstHeaderNames.add("hrm.EmpAprsl.fromDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sID = oLovQueryVO.getProperty("EmpStOrder"); + System.out.println(sID); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sID)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLLOV.proc_GetEMPAprslStOrderQLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("StartOrder").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("StDate").getDate())); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("EndDate").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getEmpAprslStOrderLOVI(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("startOrderId"); + arylstHeaderNames.add("hrm.HrmAprslForm.stOrderNo"); + arylstHeaderNames.add("hrm.EmpAprsl.toDate"); + arylstHeaderNames.add("hrm.EmpAprsl.fromDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sID = oLovQueryVO.getProperty("EmpStOrder"); + System.out.println(sID); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sID)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLLOV.proc_GetEMPAprslStOrderILOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("StartOrder").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("StDate").getDate())); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("EndDate").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String calKpaRating(String sEmpId, String sLevel) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sRating = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLevel)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procGetKPARatingInfo(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + sRating = oOutObject.getObject().toString(); + return sRating; + } + + public String calGoalRating(String sEmpId, String sLevel) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sRating = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLevel)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procGetGoalRatingInfo(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + sRating = oOutObject.getObject().toString(); + return sRating; + } + + public String calFinalRating(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oBaseHeaderBean; + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAprslLevel())) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) { + checkRatingValue(oBaseHeaderBean, sScreenName); + float kpaRating = Float.parseFloat(calKpaRating(oHrmAprslHdrBean.getEmpId(), oHrmAprslHdrBean.getAprslLevel())); + float goalRating = Float.parseFloat(calGoalRating(oHrmAprslHdrBean.getEmpId(), oHrmAprslHdrBean.getAprslLevel())); + String finalRating = String.valueOf((kpaRating + goalRating) / 2); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAprslHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslHdrBean.getAprslLevel())); + arylstParam.add(new DBObject(3, 1, 12, finalRating)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.upEmpAprslHdr(?,?,?,?,?,?)"); + DBObject dBObject = arylstOutArray.get(0); + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + ArrayList arylstList = new ArrayList(); + arylstList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.reviewer.rating.value")); + reportError(arylstList); + } + } + return oHrmAprslHdrBean.getHeaderPrimaryKey(); + } + + public void checkRatingValue(BaseHeaderBean oBaseHeaderBean, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oBaseHeaderBean; + ArrayList oErrorList = new ArrayList(); + String sRatingVal = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAprslHdrBean.getEmpId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslHdrBean.getAprslLevel())); + arylstParam.add(new DBObject(3, 1, 12, "K")); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.checkRatingVal(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + int count = 0; + while (itrBean.hasNext()) { + if (count == 0); + count++; + oRow = (QueryRow)itrBean.next(); + String sRatingReq = oRow.get("Rating_Required").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) + sRatingVal = oRow.get("rating_lvl0").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) + sRatingVal = oRow.get("rating_lvl1").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2")) + sRatingVal = oRow.get("rating_lvl2").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3")) + sRatingVal = oRow.get("rating_lvl3").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4")) + sRatingVal = oRow.get("rating_lvl4").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) + sRatingVal = oRow.get("rating_lvl5").getString(); + if (sRatingReq.equalsIgnoreCase("Y")) + if (!EnrgiseUtil.checkString(sRatingVal)) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.kpa.rating.value")); + } + ArrayList arylstParam1 = new ArrayList(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + arylstParam1 = new ArrayList(); + arylstParam1.add(new DBObject(1, 1, 12, oHrmAprslHdrBean.getEmpId())); + arylstParam1.add(new DBObject(2, 1, 12, oHrmAprslHdrBean.getAprslLevel())); + arylstParam1.add(new DBObject(3, 1, 12, "G")); + arylstParam1.add(new DBObject(4, 2, -10)); + arylstParam1.add(new DBObject(5, 2, 12)); + arylstParam1.add(new DBObject(6, 2, 12)); + arylstParam1.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray1 = oBean1.callProc(arylstParam1, "HRMAPRSL.checkRatingVal(?,?,?,?,?,?,?)"); + DBObject oOutObject1 = arylstOutArray1.get(0); + arylstParam1 = (ArrayList)oOutObject1.getObject(); + if (arylstParam1.size() == 0); + QueryRow oRow1 = null; + QueryValue oValue1 = null; + HashMap oColumns1 = null; + Iterator itrBean1 = arylstParam1.iterator(); + int count1 = 0; + while (itrBean1.hasNext()) { + if (count1 == 0); + count1++; + oRow1 = (QueryRow)itrBean1.next(); + String sRatingReq = oRow1.get("Rating_Required").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) + sRatingVal = oRow1.get("rating_lvl0").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) + sRatingVal = oRow1.get("rating_lvl1").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2")) + sRatingVal = oRow1.get("rating_lvl2").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3")) + sRatingVal = oRow1.get("rating_lvl3").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4")) + sRatingVal = oRow1.get("rating_lvl4").getString(); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) + sRatingVal = oRow1.get("rating_lvl5").getString(); + if (sRatingReq.equalsIgnoreCase("Y")) + if (!EnrgiseUtil.checkString(sRatingVal)) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrms.aprsl.goals.rating.value")); + } + reportError(oErrorList); + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmAprslHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Appraisal"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("Appraisal"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Appraisal No: ").concat(String.valueOf(oHrmAprslHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval: Appraisal No:").concat(String.valueOf(oHrmAprslHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Appraisal No : ").concat(String.valueOf(oHrmAprslHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Appraisal No:").concat(String.valueOf(oHrmAprslHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } + + private void approveEmpAprsl(BaseHeaderBean oBaseHeaderBean, String sFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, sFlag)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstPK = oBean.callProc(arylstParameters, "HRMAPRSL.proc_UpsertApproveEmpAprsl(?,?,?,?,?)"); + } + + public String rejectEmpAprsl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + if (status.getStatus().equalsIgnoreCase("Rejected")) + approveEmpAprsl(oBaseHeaderBean, "R"); + return sHeaderPrimaryKey; + } + + public String approveEmpAprsl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) + approveEmpAprsl(oBaseHeaderBean, "A"); + return oBaseHeaderBean.getHeaderPrimaryKey(); + } + + public String getStaffJoiningDateInfo(String sPrimKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sStaffJoinDate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sPrimKey)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procGetStaffJoiningDate(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sStaffJoinDate = EnrgiseUtil.convertToString(oRow.get("staff_join_date").getDate()); + } + return sStaffJoinDate; + } + + public String getOfficerJoiningDateInfo(String sPrimKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sOfficerJoinDate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sPrimKey)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procGetOfficerJoiningDate(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sOfficerJoinDate = EnrgiseUtil.convertToString(oRow.get("officer_join_date").getDate()); + } + return sOfficerJoinDate; + } + + public String getPromotedOfficerJoiningDateInfo(String sPrimKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sPromotedOfficerJoinDate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sPrimKey)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procPromotedOfficerJoiningDate(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sPromotedOfficerJoinDate = EnrgiseUtil.convertToString(oRow.get("prom_officer_join_date").getDate()); + } + return sPromotedOfficerJoinDate; + } + + public ArrayList getEmpPresentDetail(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstEmpPresentDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procEmpPresDtls(?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstEmpPresentDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslEmpDtlsBean oHrmAprslEmpDtlsBean = new HrmAprslEmpDtlsBean(); + oHrmAprslEmpDtlsBean.setGrade(oRow.get("present_grade").getString()); + oHrmAprslEmpDtlsBean.setDateofBirth(EnrgiseUtil.convertToString(oRow.get("dob").getDate())); + oHrmAprslEmpDtlsBean.setDesignation(oRow.get("present_designation").getString()); + oHrmAprslEmpDtlsBean.setPresLoc(oRow.get("present_site_name").getString()); + arylstEmpPresentDetail.add(oHrmAprslEmpDtlsBean); + } + return arylstEmpPresentDetail; + } + + public String getLastPromotionDateInfo(String sPrimKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sLastPromotionDate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sPrimKey)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procLastPromotionDate(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sLastPromotionDate = EnrgiseUtil.convertToString(oRow.get("last_prom_date").getDate()); + } + return sLastPromotionDate; + } + + public String getLastPayInfo(String sPrimKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sLastPay = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sPrimKey)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procLastPayOnMarch(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sLastPay = oRow.get("net_earning").getString(); + } + return sLastPay; + } + + public String getEmpPastRating(String sEmpId, String sPrdStDate, String sPrdEndDate) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sEmpPastRating = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sPrdStDate))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sPrdEndDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procPastRating(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sEmpPastRating = oRow.get("RATING_LVL5").getString(); + } + return sEmpPastRating; + } + + public String getEmpQual(String sPrimKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + BaseDetailVO oBaseDetailVO = null; + String sEmpQual = new String(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sPrimKey)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procEmpQual(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + int count = 0; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sEmpQual = String.valueOf(sEmpQual).concat(String.valueOf(oRow.get("name").getString())); + if (count != arylstParam.size() - 1) + sEmpQual = String.valueOf(sEmpQual).concat(String.valueOf(", ")); + count++; + } + return sEmpQual; + } + + public String getEmpPastTotal(String sPrimKey, String sYYYYMM) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sEmpPastTotal = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sPrimKey)); + arylstParam.add(new DBObject(2, 1, 12, sYYYYMM)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procBasicFixedAllowIncrTotal(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sEmpPastTotal = oRow.get("total").getString(); + } + return sEmpPastTotal; + } + + public LovVO getHrmAprslEmpNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("Id"); + oHeaderList.add("hrm.EmpAprsl.empCode"); + oHeaderList.add("hrm.EmpAprsl.empName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSLLOV.proc_GetApprEmpLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public RecordMetaInfo getHrmAprslEmpDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAprslEmpPerDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String empId = null; + String aprslYear = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arrHrmEmpDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, empId)); + arylstParam.add(new DBObject(5, 1, 12, aprslYear)); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslDtl(?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arrHrmEmpDtl = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslEmployeeBean oHrmAprslEmployeeBean = new HrmAprslEmployeeBean(); + oHrmAprslEmployeeBean.setDetailId(oRow.get("ID").getString()); + oHrmAprslEmployeeBean.setEmpIdDtl(oRow.get("E_PER_DTL_ID").getString()); + oHrmAprslEmployeeBean.setEmpNoDtl(oRow.get("E_PER_DTL_ID").getString()); + oHrmAprslEmployeeBean.setEmpNameDtl(oRow.get("EMPNAME").getString()); + oHrmAprslEmployeeBean.setAprslYearDtl(oRow.get("Aprsl_Year").getString()); + oHrmAprslEmployeeBean.setFinalRatingDtl(oRow.get("final_rating").getString()); + arrHrmEmpDtl.add(oHrmAprslEmployeeBean); + } + return arrHrmEmpDtl; + } + + public RecordMetaInfo getHrmAprslHdrMetaInfo(HrmAprslQVO oHrmAprslQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAprslQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslQVO.getEmployeeId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslQVO.getAprslYear())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslHeaderCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslHeaderInfo(HrmAprslQVO oHrmAprslQVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmAprslQVO == null) + oHrmAprslQVO = new HrmAprslQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslQVO.getEmployeeId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslQVO.getAprslYear())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSL.procHrEmpAprslHeader(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + String sLevel = null; + while (oIt.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslHdrBean oHrmAprslHdrBean = new HrmAprslHdrBean(); + oHrmAprslHdrBean.setHeaderPrimaryKey(oRow.get("E_PER_DTL_ID").getString()); + oHrmAprslHdrBean.setEmpId(oRow.get("E_PER_DTL_ID").getString()); + oHrmAprslHdrBean.setEmpNo(oRow.get("E_PER_DTL_ID").getString()); + oHrmAprslHdrBean.setEmpName(oRow.get("EMPNAME").getString()); + arylstHeaderList.add(oHrmAprslHdrBean); + } + return arylstHeaderList; + } + + private void saveHrmEmpAprslDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslEmployeeBean oHrmAprslEmployeeBean = oIt.next(); + if (oHrmAprslEmployeeBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSL.procUpsertHrEmpAprsl(?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslEmployeeBean.getEmpIdDtl())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslEmployeeBean.getAprslYearDtl())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslEmployeeBean.getFinalRatingDtl())); + oBean.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslEmployeeBean oHrmAprslEmployeeBean = oIt.next(); + if (oHrmAprslEmployeeBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSL.procUpsertHrEmpAprsl(?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslEmployeeBean.getEmpIdDtl())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslEmployeeBean.getAprslYearDtl())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslEmployeeBean.getFinalRatingDtl())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslSpcTmplBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslSpcTmplBO.java new file mode 100644 index 0000000..9107b6a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslSpcTmplBO.java @@ -0,0 +1,1366 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplDtlBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplEmpEligDtlBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplGoalDtlBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmAprslSpcTmplBO extends HrmBaseBO { + public HrmAprslSpcTmplBO() {} + + public HrmAprslSpcTmplBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_APRSL_SPECIFIC_TMPL"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return ""; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equals("HrmAprslSpcTmplGoals")) + saveGoalDetailData(sHeaderPrimaryKey, oDetailBeanArray); + if (sScreenName.equals("HrmAprslSpcTmpl")) + saveKPADetailData(sHeaderPrimaryKey, oDetailBeanArray); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean = (HrmAprslSpcTmplHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslSpcTmplHdrBean.getTemplateNameId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslSpcTmplHdrBean.getSplTemplateName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslSpcTmplHdrBean.getSiteId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslSpcTmplHdrBean.getDeptId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslSpcTmplHdrBean.getClassHdrId())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslSpcTmplHdrBean.getClassDtlId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslSpcTmplHdrBean.getEmpId())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslSpcTmplHdrBean.getStOrderId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 12)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.procUpsertHrAprslSpcTmplHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + + } + saveKPADetailPart(returnString); + saveEmpEligDetailPart(returnString); + return returnString; + } + + public void saveKPADetailPart(String sHeaderPrimaryKey) throws EnrgiseSystemException { + ArrayList oDetailBeanArray = new ArrayList(); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(2, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.procGetHrAprslSpcTmplKPAInfo(?,?,?,?,?,?)"); + } + + public void saveEmpEligDetailPart(String sHeaderPrimaryKey) throws EnrgiseSystemException { + ArrayList oDetailBeanArray = new ArrayList(); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(2, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.procSaveSpcTmplEmpEligInfo(?,?,?,?,?,?)"); + } + + public void saveGoalDetailData(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBeanInsert = null; + DBUtilitiesBean oBeanDelete = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslSpcTmplGoalDtlBean oHrmAprslSpcTmplGoalDtlBean = oIt.next(); + if (oHrmAprslSpcTmplGoalDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBeanInsert = new DBUtilitiesBean(); + oBeanInsert.createBatch("HRMAPRSLSPCTMPL.procUpsertHrTmplAprslGoal(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String("N"))); + oParameters.add(new DBObject(2, 1, 12, new String("888"))); + oParameters.add(new DBObject(3, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtSrlNo()))); + oParameters.add(new DBObject(4, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtSectionId()))); + oParameters.add(new DBObject(5, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(6, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtMesr()))); + oParameters.add(new DBObject(7, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtGoalsDesc()))); + oParameters.add(new DBObject(8, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtWtg()))); + oParameters.add(new DBObject(9, 1, 12, new String(this.oUserInfo.getUserId()))); + oParameters.add(new DBObject(10, 1, 12, new String(this.oUserInfo.getSiteId()))); + oBeanInsert.addToBatch(oParameters); + continue; + } + if (oHrmAprslSpcTmplGoalDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSLSPCTMPL.procUpsertHrTmplAprslGoal(?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String("U"))); + oParameters.add(new DBObject(2, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getDetailId()))); + oParameters.add(new DBObject(3, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtSrlNo()))); + oParameters.add(new DBObject(4, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtSectionId()))); + oParameters.add(new DBObject(5, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(6, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtMesr()))); + oParameters.add(new DBObject(7, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtGoalsDesc()))); + oParameters.add(new DBObject(8, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getTxtWtg()))); + oParameters.add(new DBObject(9, 1, 12, new String(this.oUserInfo.getUserId()))); + oParameters.add(new DBObject(10, 1, 12, new String(this.oUserInfo.getSiteId()))); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmAprslSpcTmplGoalDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBeanDelete = new DBUtilitiesBean(); + oBeanDelete.createBatch("HRMAPRSLSPCTMPL.proc_DeleteAprslTmplGoal(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oHrmAprslSpcTmplGoalDtlBean.getDetailId()))); + oBeanDelete.addToBatch(oParameters); + } + } + try { + if (bInsert) + oBeanInsert.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBeanDelete.executeBatch(); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + + public void saveKPADetailData(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBeanDelete = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslSpcTmplDtlBean oHrmAprslSpcTmplDtlBean = oIt.next(); + if (oHrmAprslSpcTmplDtlBean.getStatus().equals("D") && oHrmAprslSpcTmplDtlBean.getTxtFlag().equalsIgnoreCase("off")) { + if (!bDelete) { + oBeanDelete = new DBUtilitiesBean(); + oBeanDelete.createBatch("HRMAPRSLSPCTMPL.proc_DeleteAprslTmplKPADtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oHrmAprslSpcTmplDtlBean.getDetailId()))); + oBeanDelete.addToBatch(oParameters); + } + } + try { + if (bDelete) + oBeanDelete.executeBatch(); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + + public RecordMetaInfo getHrmAprslSpcTmpHdrMetaInfo(HrmAprslSpcTmplQVO oHrmAprslSpcTmplQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAprslSpcTmplQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslSpcTmplQVO.getTemplateNameId())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.procHrAprslSpcTmplHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslSpcTmpHeaderInfo(HrmAprslSpcTmplQVO oHrmAprslSpcTmplQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmAprslSpcTmplQVO == null) + oHrmAprslSpcTmplQVO = new HrmAprslSpcTmplQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslSpcTmplQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslSpcTmplQVO.getTemplateNameId())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.procHrAprslSpcTmplHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean = new HrmAprslSpcTmplHdrBean(); + oHrmAprslSpcTmplHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAprslSpcTmplHdrBean.setSplTemplateName(oRow.get("SPECIFIC_TEMPLATE_NAME").getString()); + oHrmAprslSpcTmplHdrBean.setTemplateName(oRow.get("TEMPLATE_NAME").getString()); + oHrmAprslSpcTmplHdrBean.setTemplateNameId(oRow.get("TMPL_HDR_ID").getString()); + oHrmAprslSpcTmplHdrBean.setStOrderId(oRow.get("APRSL_START_ORDER_ID").getString()); + oHrmAprslSpcTmplHdrBean.setStOrderNo(oRow.get("START_ORDER_NO").getString()); + oHrmAprslSpcTmplHdrBean.setDeptId(oRow.get("WRKGRP_ID").getString()); + oHrmAprslSpcTmplHdrBean.setDeptCode(oRow.get("DEPT_CODE").getString()); + oHrmAprslSpcTmplHdrBean.setDeptDesc(oRow.get("DEPT_NAME").getString()); + oHrmAprslSpcTmplHdrBean.setEmpId(oRow.get("E_PER_DTL_ID").getString()); + oHrmAprslSpcTmplHdrBean.setEmpNo(oRow.get("EMP_NO").getString()); + oHrmAprslSpcTmplHdrBean.setEmpName(oRow.get("EMPNAME").getString()); + oHrmAprslSpcTmplHdrBean.setFromDate(EnrgiseUtil.convertToString(oRow.get("PERIOD_START_DATE").getDate())); + oHrmAprslSpcTmplHdrBean.setToDate(EnrgiseUtil.convertToString(oRow.get("PERIOD_END_DATE").getDate())); + oHrmAprslSpcTmplHdrBean.setSiteId(oRow.get("SITE_ID").getString()); + oHrmAprslSpcTmplHdrBean.setSiteCode(oRow.get("SITE_CODE").getString()); + oHrmAprslSpcTmplHdrBean.setSiteDesc(oRow.get("SITE_NAME").getString()); + oHrmAprslSpcTmplHdrBean.setClassHdrId(oRow.get("CLS_HDR_ID").getString()); + oHrmAprslSpcTmplHdrBean.setClassHdr(oRow.get("CLS_HDR_CODE").getString()); + oHrmAprslSpcTmplHdrBean.setClassHdrDesc(oRow.get("CLS_HDR_NAME").getString()); + oHrmAprslSpcTmplHdrBean.setClassDtlId(oRow.get("CLS_DTL_ID").getString()); + oHrmAprslSpcTmplHdrBean.setClassDtl(oRow.get("CLS_DTL_CODE").getString()); + oHrmAprslSpcTmplHdrBean.setClassDtlDesc(oRow.get("CLS_DTL_NAME").getString()); + arylstHeaderList.add(oHrmAprslSpcTmplHdrBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmAprslSpcTmpKPADtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.proc_GetHrAprslSpcTmplKPACount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslSpcTmpKPADetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTempSecDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.procHrAprslSpcTmplKPADtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmTempSecDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslSpcTmplDtlBean oHrmAprslSpcTmplDtlBean = new HrmAprslSpcTmplDtlBean(); + oHrmAprslSpcTmplDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAprslSpcTmplDtlBean.setTxtKPAGrId(oRow.get("APRSL_KPA_GRP_ID").getString()); + oHrmAprslSpcTmplDtlBean.setTxtKpaGrCode(oRow.get("KPA_GRP_CODE").getString()); + oHrmAprslSpcTmplDtlBean.setTxtKpaGrDesc(oRow.get("KPA_GRP_DESC").getString()); + oHrmAprslSpcTmplDtlBean.setTxtKPAId(oRow.get("kpa_dtl_id").getString()); + oHrmAprslSpcTmplDtlBean.setTxtKpaCode(oRow.get("KPA_CODE").getString()); + oHrmAprslSpcTmplDtlBean.setTxtKpaDesc(oRow.get("KPA_DESC").getString()); + String selectFlag = oRow.get("mandatory_flag").getString(); + if (selectFlag.equalsIgnoreCase("null")) { + selectFlag = "off"; + } else { + if (selectFlag.equalsIgnoreCase("Y")) + selectFlag = "on"; + if (selectFlag.equalsIgnoreCase("N")) + selectFlag = "off"; + } + oHrmAprslSpcTmplDtlBean.setTxtFlag(selectFlag); + arylstHrmTempSecDetail.add(oHrmAprslSpcTmplDtlBean); + } + return arylstHrmTempSecDetail; + } + + public RecordMetaInfo getHrmAprslSpcTmpGoalsDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.proc_GetHrAprslTmplGoalCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslSpcTmpGoalsDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTempSecDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.procHrAprslTmplGoalDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmTempSecDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslSpcTmplGoalDtlBean oHrmAprslSpcTmplGoalDtlBean = new HrmAprslSpcTmplGoalDtlBean(); + oHrmAprslSpcTmplGoalDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAprslSpcTmplGoalDtlBean.setTxtSrlNo(oRow.get("srl_no").getString()); + oHrmAprslSpcTmplGoalDtlBean.setTxtSection(oRow.get("sec_code").getString()); + oHrmAprslSpcTmplGoalDtlBean.setTxtSectionId(oRow.get("tmpl_sec_id").getString()); + oHrmAprslSpcTmplGoalDtlBean.setTxtParentSection(oRow.get("PARENT_SEC_CODE").getString()); + oHrmAprslSpcTmplGoalDtlBean.setTxtGoalsDesc(oRow.get("goal_desc").getString()); + oHrmAprslSpcTmplGoalDtlBean.setTxtMesr(oRow.get("measure").getString()); + oHrmAprslSpcTmplGoalDtlBean.setTxtWtg(oRow.get("weightage").getString()); + oHrmAprslSpcTmplGoalDtlBean.setDisabtxtGoalsDesc("true"); + oHrmAprslSpcTmplGoalDtlBean.setDisabtxtSection("true"); + oHrmAprslSpcTmplGoalDtlBean.setDisabtxtMesr("true"); + arylstHrmTempSecDetail.add(oHrmAprslSpcTmplGoalDtlBean); + } + return arylstHrmTempSecDetail; + } + + public RecordMetaInfo getHrmAprslSpcTmpEligDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.procGetAprslSpcTmplEligConut(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslSpcTmpEligDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTempSecDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSPCTMPL.procGetAprslSpcTmplEmpEligInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmTempSecDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslSpcTmplEmpEligDtlBean oHrmAprslSpcTmplEmpEligDtlBean = new HrmAprslSpcTmplEmpEligDtlBean(); + oHrmAprslSpcTmplEmpEligDtlBean.setDetailId(oRow.get("SPC_TMPL_ID").getString()); + oHrmAprslSpcTmplEmpEligDtlBean.setTxtEmpNo(oRow.get("emp_no").getString()); + oHrmAprslSpcTmplEmpEligDtlBean.setTxtEmpName(oRow.get("name").getString()); + oHrmAprslSpcTmplEmpEligDtlBean.setTxtEmpId(oRow.get("E_PER_DTL_ID").getString()); + arylstHrmTempSecDetail.add(oHrmAprslSpcTmplEmpEligDtlBean); + } + return arylstHrmTempSecDetail; + } + + public LovVO getTemplateData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectID"); + arylstHeaderNames.add("hrm.ApprslSpcTemp.templateName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_TemplateLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TEMPLATE_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQueryTemplateData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectID"); + arylstHeaderNames.add("hrm.ApprslSpcTemp.templateName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_TemplateLOVQ(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TEMPLATE_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQuerySpcTemplateData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectID"); + arylstHeaderNames.add("hrm.ApprslSpcTemp.splTemplateName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_TemplateLOVQ(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TEMPLATE_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getTempSectionData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectID"); + arylstHeaderNames.add("hrm.ApprslSpcTemp.Section"); + arylstHeaderNames.add("hrm.ApprslSpcTemp.parentSection"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_TempSectionLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("SEC_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("PARENTCODE").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClsMstData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectOptionID"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classHeaderCode"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classHeaderDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsMstLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClsDtlData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("OptionDetailID"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classDetailCode"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classDetailDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sID = oLovQueryVO.getProperty("SelOpt"); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sID)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsDtlLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClsMstDataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectOptionID"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classHeaderCode"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classHeaderDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsMstLOVQ(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClsDtlDataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("OptionDetailID"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classDetailCode"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.classDetailDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sID = oLovQueryVO.getProperty("SelOpt"); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sID)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsDtlLOVQ(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getSpcEmployeeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("empId"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeNo"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_EmployeeLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("Name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQueryEmployeeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("empId"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeNo"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_QueryEmployeeLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("Name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQueryStOrdLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("codeID"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.aprslStartOrderNo"); + arylstHeaderNames.add("hrm.ApprslSpcTemp.fromDate"); + arylstHeaderNames.add("hrm.ApprslSpcTemp.toDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_QueryStOrdLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("START_ORDER_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("PERIOD_START_DATE").getDate())); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("PERIOD_END_DATE").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQueryWrkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField2())); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_QueryWrkGrpLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQuerySiteCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField2())); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_QuerySiteIDLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String rejectHrmAprslSpcTmp(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean = (HrmAprslSpcTmplHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + if (status.getStatus().equalsIgnoreCase("Rejected")) + approveSpcTmpl(oBaseHeaderBean, "R"); + return oBaseHeaderBean.getHeaderPrimaryKey(); + } + + public String approveHrmAprslSpcTmp(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equals("HrmAprslSpcTmplGoals")) { + ArrayList oErrorList = new ArrayList(); + checkWeightageValidation(oBaseHeaderBean.getHeaderPrimaryKey(), oErrorList); + reportError(oErrorList); + } + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) + approveSpcTmpl(oBaseHeaderBean, "A"); + return oBaseHeaderBean.getHeaderPrimaryKey(); + } + + private void checkWeightageValidation(String sHeaderPrimKey, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 0; + String sSecCode = ""; + String sWtg = ""; + String sCnt = ""; + long lWeightage = 0L; + long lCount = 0L; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimKey)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_ProperWtg(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + sSecCode = oRow.get("sec_code").getString(); + sWtg = oRow.get("totWtg").getString(); + sCnt = oRow.get("totCnt").getString(); + lWeightage = Long.parseLong(sWtg); + lCount = Long.parseLong(sCnt); + if (lWeightage == 0L) { + lWeightage = 100L / lCount; + sWtg = String.valueOf(lWeightage); + oParameters = new ArrayList(); + oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sWtg)); + oParameters.add(new DBObject(2, 1, 12, sSecCode)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_UpdateWtg(?,?,?,?,?)"); + } + oParameters = new ArrayList(); + long lNoNull = 0L; + oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sSecCode)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_getNullCount(?,?,?,?,?)"); + oOutObject = oOutArray.get(0); + lNoNull = ((Long)oOutObject.getObject()).longValue(); + if (lNoNull > 0L) { + ArrayList oParams = new ArrayList(); + oParams.add(new String(sSecCode)); + oErrorList.add(new EnrgiseMessageKeyException("hrms.spcaprsl.wt.null", oParams, "E")); + } + if (lWeightage < 100L && lWeightage > 0L) { + ArrayList oParams = new ArrayList(); + oParams.add(new String(sSecCode)); + oErrorList.add(new EnrgiseMessageKeyException("hrms.spcaprsl.wt.less", oParams, "E")); + } + if (lWeightage > 100L) { + ArrayList oParams = new ArrayList(); + oParams.add(new String(sSecCode)); + oErrorList.add(new EnrgiseMessageKeyException("hrms.spcaprsl.wt.greater", oParams, "E")); + } + } + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + checkMandatoryHdr((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oList); + if (sScreenName.equals("HrmAprslSpcTmplGoals")) + if (bDetailDataChanged) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmAprslSpcTmplGoalDtlBean oHrmAprslSpcTmplGoalDtlBean = oIt1.next(); + if (!oHrmAprslSpcTmplGoalDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmAprslSpcTmplGoalDtlBean, rowCount, oList); + rowCount++; + } + } + reportError(oList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (sScreenMode.equalsIgnoreCase("N")) + checkUniqueTemp((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oList); + if (sScreenName.equals("HrmAprslSpcTmpl")) + if (bDetailDataChanged) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmAprslSpcTmplDtlBean oHrmAprslSpcTmplDtlBean = oIt1.next(); + if (oHrmAprslSpcTmplDtlBean.getStatus().equalsIgnoreCase("D")) + if (oHrmAprslSpcTmplDtlBean.getTxtFlag().equalsIgnoreCase("on")) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(rowCount)); + oList.add(new EnrgiseMessageKeyException("hrms.spcaprsl.kpa.special", oParams, "E")); + } + rowCount++; + } + } + reportError(oList); + } + + private void checkMandatoryHdr(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getStOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.ApprslSpcTemp.stOrderNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getSplTemplateName())) { + MessageKey oMessageKey = new MessageKey("hrm.ApprslSpcTemp.splTemplateName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getTemplateName())) { + MessageKey oMessageKey = new MessageKey("hrm.ApprslSpcTemp.templateName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getEmpNo())) + if (EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getDeptCode()) || EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getSiteCode()) || EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getClassHdr()) || EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getClassDtl())) { + MessageKey eMessageKey = new MessageKey("hrm.HrmAprslStartRule.employeeNo"); + MessageKey wMessageKey = new MessageKey("hrm.ApprslSpcTemp.deptCode"); + MessageKey sMessageKey = new MessageKey("hrm.HrmAprslStartRule.siteCode"); + MessageKey chMessageKey = new MessageKey("hrm.HrmAprslStartRule.classHeaderCode"); + MessageKey cdMessageKey = new MessageKey("hrm.HrmAprslStartRule.classDetailCode"); + ArrayList oParams = new ArrayList(); + oParams.add(eMessageKey); + oParams.add(wMessageKey); + oParams.add(sMessageKey); + oParams.add(chMessageKey); + oParams.add(cdMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.aprsl.rule.header.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getDeptCode())) + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getSiteCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAprslStartRule.siteCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.StRule.SiteCode.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getEmpNo()) && !EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getDeptCode()) && !EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getSiteCode()) && !EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getClassHdr()) && !EnrgiseUtil.checkString(oHrmAprslSpcTmplHdrBean.getClassDtl())) { + MessageKey eMessageKey = new MessageKey("hrm.HrmAprslStartRule.employeeNo"); + MessageKey wMessageKey = new MessageKey("hrm.ApprslSpcTemp.deptCode"); + MessageKey sMessageKey = new MessageKey("hrm.HrmAprslStartRule.siteCode"); + MessageKey chMessageKey = new MessageKey("hrm.HrmAprslStartRule.classHeaderCode"); + MessageKey cdMessageKey = new MessageKey("hrm.HrmAprslStartRule.classDetailCode"); + ArrayList oParams = new ArrayList(); + oParams.add(eMessageKey); + oParams.add(wMessageKey); + oParams.add(sMessageKey); + oParams.add(chMessageKey); + oParams.add(cdMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.aprsl.StRule.all.header.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryDtls(HrmAprslSpcTmplGoalDtlBean oHrmAprslSpcTmplGoalDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplGoalDtlBean.getTxtSrlNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHrmAppraisalKPA.txtSrlNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplGoalDtlBean.getTxtSection())) { + MessageKey oMessageKey = new MessageKey("hrm.ApprslSpcTemp.Section"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplGoalDtlBean.getTxtGoalsDesc())) { + MessageKey oMessageKey = new MessageKey("hrm.ApprslSpcTemp.goalsDesc"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslSpcTmplGoalDtlBean.getTxtMesr())) { + MessageKey oMessageKey = new MessageKey("hrm.ApprslSpcTemp.txtMesr"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkUniqueTemp(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + long lNoTmpl = 0L; + oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAprslSpcTmplHdrBean.getSplTemplateName())); + oParameters.add(new DBObject(2, 1, 12, oHrmAprslSpcTmplHdrBean.getStOrderId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSPCTMPL.proc_getTempNameCount(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + lNoTmpl = ((Long)oOutObject.getObject()).longValue(); + if (lNoTmpl > 0L) { + ArrayList oParams = new ArrayList(); + oErrorList.add(new EnrgiseMessageKeyException("hrm.SpcTemp.Unique.Data", oParams, "E")); + } + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean = (HrmAprslSpcTmplHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmAprslSpcTmplHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Appraisal"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("AppraisalSpcTmpl"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Spec Temp Appraisal No : ").concat(String.valueOf(oHrmAprslSpcTmplHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval: Spec Temp Appraisal No:").concat(String.valueOf(oHrmAprslSpcTmplHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Spec Temp Appraisal No : ").concat(String.valueOf(oHrmAprslSpcTmplHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Spec Temp Appraisal No:").concat(String.valueOf(oHrmAprslSpcTmplHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } + + private void approveSpcTmpl(BaseHeaderBean oBaseHeaderBean, String sFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean = (HrmAprslSpcTmplHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, sFlag)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstPK = oBean.callProc(arylstParameters, "HRMAPRSLSPCTMPL.proc_UpsertApproveSpcTmpl(?,?,?,?,?)"); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartOrderBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartOrderBO.java new file mode 100644 index 0000000..111bec5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartOrderBO.java @@ -0,0 +1,276 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; + +public class HrmAprslStartOrderBO extends HrmBaseBO { + public HrmAprslStartOrderBO() {} + + public HrmAprslStartOrderBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAprslStOrderMetaInfo(HrmAprslStartOrderQVO oHrmAprslStartOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmAprslStartOrderQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAprslStartOrderQVO.getStOrderNo())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSLSTORDER.procAprslStOrderCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslStOrderInfo(HrmAprslStartOrderQVO oHrmAprslStartOrderQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int iCount = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmAprslStartOrderQVO == null) + oHrmAprslStartOrderQVO = new HrmAprslStartOrderQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAprslStartOrderQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAprslStartOrderQVO.getStOrderNo())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSLSTORDER.procAprslStOrderInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHeaderList = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmAprslStartOrderHdrBean oAprslStartOrderHdr = new HrmAprslStartOrderHdrBean(); + oAprslStartOrderHdr.setStOrderId(oRow.get("id").getString()); + oAprslStartOrderHdr.setStOrderNo(oRow.get("StOrderNo").getString()); + oAprslStartOrderHdr.setPeriodStDate(EnrgiseUtil.convertToString(oRow.get("PStDate").getDate())); + oAprslStartOrderHdr.setPeriodEndDate(EnrgiseUtil.convertToString(oRow.get("PEndDate").getDate())); + oAprslStartOrderHdr.setAprslStDate(EnrgiseUtil.convertToString(oRow.get("ApStDate").getDate())); + oAprslStartOrderHdr.setAprslEndDate(EnrgiseUtil.convertToString(oRow.get("ApEndDate").getDate())); + arylstHeaderList.add(oAprslStartOrderHdr); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_APRSL_START_ORDER"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean = (HrmAprslStartOrderHdrBean)oBaseHeaderBean; + if (sScreenMode.equalsIgnoreCase("D")) + ArrayList arrayList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkDatesConstraint(oHrmAprslStartOrderHdrBean, oErrorList); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean = (HrmAprslStartOrderHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAprslStartOrderHdrBean.getStOrderId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAprslStartOrderHdrBean.getStOrderNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getPeriodStDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getPeriodEndDate()))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getAprslStDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getAprslEndDate()))); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 12)); + arylstParameters.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSLSTORDER.procUpsertAprslStOrder(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAprslStartOrderHdrBean.getStOrderId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAprslStartOrderHdrBean.getStOrderNo())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getPeriodStDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getPeriodEndDate()))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getAprslStDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAprslStartOrderHdrBean.getAprslEndDate()))); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 12)); + arylstParameters.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSLSTORDER.procUpsertAprslStOrder(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmAprslStartOrderHdrBean oHrmDeputApplnHdrBean = (HrmAprslStartOrderHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmAprslStartOrderHdrBean)oBaseHeaderBean); + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmAprslStartOrderHdrBean.getStOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.AprslStartOrder.stOrderNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslStartOrderHdrBean.getPeriodStDate())) { + MessageKey oMessageKey = new MessageKey("hrm.AprslStartOrder.periodStDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslStartOrderHdrBean.getPeriodEndDate())) { + MessageKey oMessageKey = new MessageKey("hrm.AprslStartOrder.periodEndDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslStartOrderHdrBean.getAprslStDate())) { + MessageKey oMessageKey = new MessageKey("hrm.AprslStartOrder.aprslStDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslStartOrderHdrBean.getAprslEndDate())) { + MessageKey oMessageKey = new MessageKey("hrm.AprslStartOrder.aprslEndDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public LovVO getHrmAprslStOrderNoLOVQrydata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.AprslStartOrder.stOrderNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMAPRSLSTORDER.proc_GetHrmAprslStOrderLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("StOrderNo").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + private void checkDatesConstraint(HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmAprslStartOrderHdrBean.getPeriodStDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAprslStartOrderHdrBean.getPeriodEndDate(), oHrmAprslStartOrderHdrBean.getPeriodStDate()); + if (dateFlag == -1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrm.startOrder.pDateError")); + } + if (EnrgiseUtil.checkString(oHrmAprslStartOrderHdrBean.getAprslStDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, oHrmAprslStartOrderHdrBean.getAprslEndDate(), oHrmAprslStartOrderHdrBean.getAprslStDate()); + if (dateFlag1 == -1 && dateFlag1 != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrm.startOrder.apDateError")); + } + reportError(oErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartRuleBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartRuleBO.java new file mode 100644 index 0000000..4573b0b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAprslStartRuleBO.java @@ -0,0 +1,800 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAprslStartRuleDtlBean; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; + +public class HrmAprslStartRuleBO extends HrmBaseBO { + public HrmAprslStartRuleBO() {} + + public HrmAprslStartRuleBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_APRSL_START_ORDER_RULE_HDR"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return ""; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAprslStartRuleHdrBean oHrmAprslStartRuleHdrBean = (HrmAprslStartRuleHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, "")); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslStartRuleHdrBean.getHdnAprslStOrdNo())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslStartRuleHdrBean.getHdnSiteCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslStartRuleHdrBean.getHdnWrkGrpCode())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslStartRuleHdrBean.getHdnClsHdrID())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslStartRuleHdrBean.getHdnClsDtlID())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslStartRuleHdrBean.getHdnEmpNum())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 12)); + arylstParam.add(new DBObject(14, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSTRULE.proc_UpsertHrmAprslStRuleHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + + } + saveDetailPart(returnString); + return returnString; + } + + public void saveDetailPart(String sHeaderPrimaryKey) throws EnrgiseSystemException { + ArrayList oDetailBeanArray = new ArrayList(); + HrmAprslStartRuleDtlBean oHrmAprslStartRuleDtlBean = new HrmAprslStartRuleDtlBean(); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_DetailEmployee(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + oHrmAprslStartRuleDtlBean = new HrmAprslStartRuleDtlBean(); + oHrmAprslStartRuleDtlBean.setDtlEmplNo(oRow.get("EmpID").getString()); + oHrmAprslStartRuleDtlBean.setStatus("N"); + oList.add(oHrmAprslStartRuleDtlBean); + } + saveDetailData(sHeaderPrimaryKey, oList); + } + + public void saveDetailData(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBeanInsert = null; + DBUtilitiesBean oBeanDelete = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmAprslStartRuleDtlBean oHrmAprslStartRuleDtlBean = oIt.next(); + if (oHrmAprslStartRuleDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBeanInsert = new DBUtilitiesBean(); + oBeanInsert.createBatch("HRMAPRSLSTRULE.proc_UpsertHrmAprslStRuleDtl(?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String("N"))); + oParameters.add(new DBObject(2, 1, 12, new String(""))); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, new String(oHrmAprslStartRuleDtlBean.getDtlEmplNo()))); + oParameters.add(new DBObject(5, 1, 12, new String(this.oUserInfo.getUserId()))); + oParameters.add(new DBObject(6, 1, 12, new String(this.oUserInfo.getSiteId()))); + oBeanInsert.addToBatch(oParameters); + continue; + } + if (oHrmAprslStartRuleDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMAPRSLSTRULE.proc_UpsertHrmAprslStRuleDtl(?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String("U"))); + oParameters.add(new DBObject(2, 1, 12, new String(oHrmAprslStartRuleDtlBean.getDetailId()))); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, new String(oHrmAprslStartRuleDtlBean.getDtlEmplNo()))); + oParameters.add(new DBObject(5, 1, 12, new String(this.oUserInfo.getUserId()))); + oParameters.add(new DBObject(6, 1, 12, new String(this.oUserInfo.getSiteId()))); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmAprslStartRuleDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBeanDelete = new DBUtilitiesBean(); + oBeanDelete.createBatch("HRMAPRSLSTRULE.proc_DeletePFDetail(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oHrmAprslStartRuleDtlBean.getDetailId()))); + oBeanDelete.addToBatch(oParameters); + } + } + try { + if (bInsert) + oBeanInsert.executeBatch(); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + + public RecordMetaInfo getHrmAprslRuleHdrMetaInfo(HrmAprslStartRuleQVO oHrmAprslStartRuleQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAprslStartRuleQVO.getHdnAprslStOrdNo())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslStartRuleQVO.getHdnSiteCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslStartRuleQVO.getHdnWrkGrpCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslStartRuleQVO.getHdnEmpNum())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslStartRuleQVO.getHdnClsHdrID())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslStartRuleQVO.getHdnClsDtlID())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslStartRuleQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(8, 2, -5)); + arylstParam.add(new DBObject(9, 2, 93)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSTRULE.procStOrderAppslHdrCount(?,?,?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslRuleHeaderInfo(HrmAprslStartRuleQVO oHrmAprslStartRuleQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmAprslStartRuleQVO == null) + oHrmAprslStartRuleQVO = new HrmAprslStartRuleQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslStartRuleQVO.getHdnAprslStOrdNo())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslStartRuleQVO.getHdnSiteCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAprslStartRuleQVO.getHdnWrkGrpCode())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAprslStartRuleQVO.getHdnEmpNum())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAprslStartRuleQVO.getHdnClsHdrID())); + arylstParam.add(new DBObject(8, 1, 12, oHrmAprslStartRuleQVO.getHdnClsDtlID())); + arylstParam.add(new DBObject(9, 1, 12, oHrmAprslStartRuleQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(10, 2, -10)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSTRULE.procStOrderAppslHeader(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslStartRuleHdrBean oHrmAprslStartRuleHdrBean = new HrmAprslStartRuleHdrBean(); + oHrmAprslStartRuleHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAprslStartRuleHdrBean.setHdnAprslStOrdNo(oRow.get("APRSL_START_ORDER_ID").getString()); + oHrmAprslStartRuleHdrBean.setTxtAprslStOrdNo(oRow.get("START_ORDER_NO").getString()); + oHrmAprslStartRuleHdrBean.setHdnEmpNum(oRow.get("E_PER_DTL_ID").getString()); + oHrmAprslStartRuleHdrBean.setTxtEmpNum(oRow.get("EMP_NO").getString()); + oHrmAprslStartRuleHdrBean.setTxtEmpName(oRow.get("NAME").getString()); + oHrmAprslStartRuleHdrBean.setHdnWrkGrpCode(oRow.get("WRKGRP_ID").getString()); + oHrmAprslStartRuleHdrBean.setTxtWrkGrpCode(oRow.get("WRKGRPCODE").getString()); + oHrmAprslStartRuleHdrBean.setTxtWrkGrpDesc(oRow.get("WRKGRPNAME").getString()); + oHrmAprslStartRuleHdrBean.setHdnSiteCode(oRow.get("SITE_ID").getString()); + oHrmAprslStartRuleHdrBean.setTxtSiteCode(oRow.get("SITECODE").getString()); + oHrmAprslStartRuleHdrBean.setTxtSiteDesc(oRow.get("SITENAME").getString()); + oHrmAprslStartRuleHdrBean.setHdnClsHdrID(oRow.get("CLS_MST_ID").getString()); + oHrmAprslStartRuleHdrBean.setTxtClsHdr(oRow.get("MSTCODDE").getString()); + oHrmAprslStartRuleHdrBean.setTxtClsHdrDesc(oRow.get("MSTNAME").getString()); + oHrmAprslStartRuleHdrBean.setHdnClsDtlID(oRow.get("CLS_DT_ID").getString()); + oHrmAprslStartRuleHdrBean.setTxtClsDtl(oRow.get("DTLCODE").getString()); + oHrmAprslStartRuleHdrBean.setTxtClsDtlDesc(oRow.get("DTLNAME").getString()); + arylstHeaderList.add(oHrmAprslStartRuleHdrBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmAprslRuleDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSTRULE.procStOrderAppslDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAprslRuleDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTempSecDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMAPRSLSTRULE.procStOrderAppslDetail(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmTempSecDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslStartRuleDtlBean oHrmAprslStartRuleDtlBean = new HrmAprslStartRuleDtlBean(); + oHrmAprslStartRuleDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAprslStartRuleDtlBean.setTxtEmplNo(oRow.get("EMP_NO").getString()); + oHrmAprslStartRuleDtlBean.setTxtEmplName(oRow.get("NAME").getString()); + oHrmAprslStartRuleDtlBean.setDtlEmplNo(oRow.get("E_PER_DTL_ID").getString()); + arylstHrmTempSecDetail.add(oHrmAprslStartRuleDtlBean); + } + return arylstHrmTempSecDetail; + } + + public LovVO getClsMstData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectOptionID"); + arylstHeaderNames.add("hrm.HrmOrgIncrement.classHeaderCode"); + arylstHeaderNames.add("hrm.HrmOrgIncrement.classHeaderDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsMstLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClsDtlData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("OptionDetailID"); + arylstHeaderNames.add("hrm.HrmOrgIncrement.classDetailCode"); + arylstHeaderNames.add("hrm.HrmOrgIncrement.classDetailDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sID = null; + if (EnrgiseUtil.checkString(oLovQueryVO.getProperty("SelOpt"))) + sID = oLovQueryVO.getProperty("SelOpt"); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sID)); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsDtlLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClsMstDataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("SelectOptionID"); + arylstHeaderNames.add("hrm.HrmWorkGroup.code"); + arylstHeaderNames.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(oLovQueryVO.getSearchField1()))); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsMstLOVQ(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClsDtlDataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("OptionDetailID"); + arylstHeaderNames.add("hrm.HrmWorkGroup.code"); + arylstHeaderNames.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sID = null; + if (EnrgiseUtil.checkString(oLovQueryVO.getProperty("SelOpt"))) + sID = oLovQueryVO.getProperty("SelOpt"); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sID)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_ClsDtlLOVQ(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getEmployeeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("empId"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeNo"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_EmployeeLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("Name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQueryEmployeeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("empId"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeNo"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.employeeName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_QueryEmployeeLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("Name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQueryStOrdLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("codeID"); + arylstHeaderNames.add("hrm.HrmAprslStartRule.aprslStartOrderNo"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_QueryStOrdLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("START_ORDER_NO").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWrkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sID = null; + if (EnrgiseUtil.checkString(oLovQueryVO.getProperty("SelOpt"))) + sID = oLovQueryVO.getProperty("SelOpt"); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sID)); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(3, 1, 12, oLovQueryVO.getSearchField2())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_WrkGrpLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQueryWrkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sID = null; + if (EnrgiseUtil.checkString(oLovQueryVO.getProperty("SelOpt"))) + sID = oLovQueryVO.getProperty("SelOpt"); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sID)); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(3, 1, 12, oLovQueryVO.getSearchField2())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_QueryWrkGrpLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getQuerySiteCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField2())); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMAPRSLSTRULE.proc_QuerySiteIDLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + checkMandatoryHdr((HrmAprslStartRuleHdrBean)oBaseHeaderBean, oList); + reportError(oList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkMandatoryHdr(HrmAprslStartRuleHdrBean oHrmAprslStartRuleHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtAprslStOrdNo())) { + MessageKey oMessageKey = new MessageKey("hrm.ApprslSpcTemp.stOrderNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtEmpNum())) + if (EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtWrkGrpCode()) || EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtSiteCode()) || EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtClsHdr()) || EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtClsDtl())) { + MessageKey eMessageKey = new MessageKey("hrm.HrmAprslStartRule.employeeNo"); + MessageKey wMessageKey = new MessageKey("hrm.HrmAprslStartRule.workGroupCode"); + MessageKey sMessageKey = new MessageKey("hrm.HrmAprslStartRule.siteCode"); + MessageKey chMessageKey = new MessageKey("hrm.HrmAprslStartRule.classHeaderCode"); + MessageKey cdMessageKey = new MessageKey("hrm.HrmAprslStartRule.classDetailCode"); + ArrayList oParams = new ArrayList(); + oParams.add(eMessageKey); + oParams.add(wMessageKey); + oParams.add(sMessageKey); + oParams.add(chMessageKey); + oParams.add(cdMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.aprsl.rule.header.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtWrkGrpCode())) + if (!EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtSiteCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAprslStartRule.siteCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.StRule.SiteCode.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtEmpNum()) && !EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtWrkGrpCode()) && !EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtSiteCode()) && !EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtClsHdr()) && !EnrgiseUtil.checkString(oHrmAprslStartRuleHdrBean.getTxtClsDtl())) { + MessageKey eMessageKey = new MessageKey("hrm.HrmAprslStartRule.employeeNo"); + MessageKey wMessageKey = new MessageKey("hrm.HrmAprslStartRule.workGroupCode"); + MessageKey sMessageKey = new MessageKey("hrm.HrmAprslStartRule.siteCode"); + MessageKey chMessageKey = new MessageKey("hrm.HrmAprslStartRule.classHeaderCode"); + MessageKey cdMessageKey = new MessageKey("hrm.HrmAprslStartRule.classDetailCode"); + ArrayList oParams = new ArrayList(); + oParams.add(eMessageKey); + oParams.add(wMessageKey); + oParams.add(sMessageKey); + oParams.add(chMessageKey); + oParams.add(cdMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.aprsl.StRule.all.header.mandatoryFieldMissing", oParams, "E")); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttInBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttInBO.java new file mode 100644 index 0000000..86f2836 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttInBO.java @@ -0,0 +1,299 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; + +public class HrmAttEmpAttInBO extends HrmBaseBO { + public HrmAttEmpAttInBO() {} + + public HrmAttEmpAttInBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAttHdrMetaInfo(HrmAttEmpAttInQVO oHrmAttEmpAttInQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAttEmpAttInQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmAttEmpAttInQVO.getEmpId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_getAttCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAttHeaderInfo(HrmAttEmpAttInQVO oHrmAttEmpAttInQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmAttEmpAttInQVO == null) + oHrmAttEmpAttInQVO = new HrmAttEmpAttInQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmAttEmpAttInQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmAttEmpAttInQVO.getEmpId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_getEmpAttInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean = new HrmAttEmpAttInHdrBean(); + oHrmAttEmpAttInHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAttEmpAttInHdrBean.setEmployeeNo(oRow.get("EMPNO").getString()); + oHrmAttEmpAttInHdrBean.setFirstName(oRow.get("FIRSTNAME").getString()); + oHrmAttEmpAttInHdrBean.setMiddleName(oRow.get("MIDDLENAME").getString()); + oHrmAttEmpAttInHdrBean.setLastName(oRow.get("LASTNAME").getString()); + oHrmAttEmpAttInHdrBean.setDate(oRow.get("CHKINDATE").getString()); + oHrmAttEmpAttInHdrBean.setTimeIn(oRow.get("CHKINTIME").getString()); + oHrmAttEmpAttInHdrBean.setShiftCode(oRow.get("SHIFTCODE").getString()); + oHrmAttEmpAttInHdrBean.setShiftId(oRow.get("SHIFTID").getString()); + oHrmAttEmpAttInHdrBean.setAttndStatus(oRow.get("ATTSTATUS").getString()); + oHrmAttEmpAttInHdrBean.setReasons(oRow.get("REASONS").getString()); + oHeaderList.add(oHrmAttEmpAttInHdrBean); + } + return oHeaderList; + } + + public HrmAttEmpAttInHdrBean getOnLoadSysDtTime(HrmAttEmpAttInHdrBean objHrmAttEmpAttInHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstAttndDateTime = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -10)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMATTEMPATTQRY.proc_getOnLoadDateTime(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstAttndDateTime = new ArrayList(); + count++; + oRow = itrBean.next(); + objHrmAttEmpAttInHdrBean.setDate(oRow.get("ATNDDT").getString()); + objHrmAttEmpAttInHdrBean.setTimeIn(oRow.get("ATNDTM").getString()); + } + return objHrmAttEmpAttInHdrBean; + } + + public LovVO getHrmAttEmpShftCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("Code ID"); + oHeaderList.add("hrm.HrmAttEmpAttQuery.shiftCode"); + oHeaderList.add("Code ID"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_GetShiftCodeLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + String sShiftTime = oRow.get("NEWTIME").getString(); + String sSysTime = null; + if (oLovQueryVO.getProperty("timeIn") != null) + sSysTime = oLovQueryVO.getProperty("timeIn"); + if (doTimeComparision(sSysTime, sShiftTime) == true) { + oLOVBean.setDetailField3("T"); + } else { + oLOVBean.setDetailField3("L"); + } + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private boolean doTimeComparision(String sSysTime, String sShiftTime) throws EnrgiseApplicationException, EnrgiseSystemException { + String sSysHr = sSysTime.substring(0, 2); + String sSysMin = sSysTime.substring(3, 5); + int iConSysTime = Integer.parseInt(String.valueOf(sSysHr).concat(String.valueOf(sSysMin))); + String sShftHr = sShiftTime.substring(0, 2); + String sShftMin = sShiftTime.substring(3, 5); + int iConShftTime = Integer.parseInt(String.valueOf(sShftHr).concat(String.valueOf(sShftMin))); + if (iConSysTime <= iConShftTime) + return true; + return false; + } + + public void initializeBOImpl() { + this.headerTable = "Hrm_Emp_Attnd_Dtl"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean = (HrmAttEmpAttInHdrBean)oBaseHeaderBean; + String sEmpId = oHrmAttEmpAttInHdrBean.getEmpId(); + String sAttDt = oHrmAttEmpAttInHdrBean.getDate(); + String sAttTime = oHrmAttEmpAttInHdrBean.getTimeIn(); + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sAttDt))); + arylstParam.add(new DBObject(3, 1, 12, sAttTime)); + arylstParam.add(new DBObject(4, 1, 12, oHrmAttEmpAttInHdrBean.getEmpId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAttEmpAttInHdrBean.getShiftId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAttEmpAttInHdrBean.getAttndStatus())); + arylstParam.add(new DBObject(7, 1, 12, oHrmAttEmpAttInHdrBean.getReasons())); + arylstParam.add(new DBObject(8, 1, 12, "420")); + arylstParam.add(new DBObject(9, 1, 12, "100")); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMATTEMPATTQRY.proc_UpsertHrmEmpAtt(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean objBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean objBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean = (HrmAttEmpAttInHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkMandatoryHeader((HrmAttEmpAttInHdrBean)oBaseHeaderBean); + multipleAttendance((HrmAttEmpAttInHdrBean)oBaseHeaderBean, oErrorList); + } + reportError(oErrorList); + } + + private void multipleAttendance(HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String sEmpId = oHrmAttEmpAttInHdrBean.getEmpId(); + String sAttDt = oHrmAttEmpAttInHdrBean.getDate(); + String sAttId = String.valueOf(String.valueOf(String.valueOf(String.valueOf("SELECT distinct ID from Hrm_Emp_Attnd_Dtl HEAD WHERE HEAD.E_PER_DTL_ID in ").concat(String.valueOf(sEmpId))).concat(String.valueOf(" AND to_char(HEAD.ATND_IN_DATE, 'dd-Mon-yyyy') in '"))).concat(String.valueOf(sAttDt))).concat(String.valueOf("' ")); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList oList1 = oBean1.executeQuery(sAttId); + Iterator oIt = oList1.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ID").getString() != null) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttIn.attndStatus"); + oParam.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.header1.multipleAttendance", oParam)); + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + String sAttStatus = oHrmAttEmpAttInHdrBean.getAttndStatus(); + if (sAttStatus.equalsIgnoreCase("L")) + if (!EnrgiseUtil.checkString(oHrmAttEmpAttInHdrBean.getReasons())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttIn.reasons"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttEmpAttInHdrBean.getShiftCode())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttIn.shiftCode"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttOutBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttOutBO.java new file mode 100644 index 0000000..0b901b0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttOutBO.java @@ -0,0 +1,168 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; + +public class HrmAttEmpAttOutBO extends HrmBaseBO { + public HrmAttEmpAttOutBO() {} + + public HrmAttEmpAttOutBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAttOutHdrMetaInfo(HrmAttEmpAttOutQVO oHrmAttEmpAttOutQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAttEmpAttOutQVO.getEmpId())); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_getEmpAttOutCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAttOutHeaderInfo(HrmAttEmpAttOutQVO oHrmAttEmpAttOutQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmAttEmpAttOutQVO == null) + oHrmAttEmpAttOutQVO = new HrmAttEmpAttOutQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAttEmpAttOutQVO.getEmpId())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_getEmpAttOutInfo(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean = new HrmAttEmpAttOutHdrBean(); + oHrmAttEmpAttOutHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmAttEmpAttOutHdrBean.setEmpId(oRow.get("E_PER_DTL_ID").getString()); + oHrmAttEmpAttOutHdrBean.setEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmAttEmpAttOutHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmAttEmpAttOutHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmAttEmpAttOutHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmAttEmpAttOutHdrBean.setDate(EnrgiseUtil.convertToString(oRow.get("INDATE").getDate())); + oHrmAttEmpAttOutHdrBean.setTimeIn(oRow.get("INTIME").getString()); + oHrmAttEmpAttOutHdrBean.setShiftCode(oRow.get("SHIFTCODE").getString()); + oHrmAttEmpAttOutHdrBean.setShiftId(oRow.get("SHFT_MST_ID").getString()); + oHrmAttEmpAttOutHdrBean.setAttndStatus(oRow.get("ATTND_STATUS").getString()); + oHrmAttEmpAttOutHdrBean.setOutDate(EnrgiseUtil.convertToString(oRow.get("OUTDATE").getDate())); + oHrmAttEmpAttOutHdrBean.setTimeOut(oRow.get("OUTTIME").getString()); + oHeaderList.add(oHrmAttEmpAttOutHdrBean); + } + return oHeaderList; + } + + public HrmAttEmpAttOutHdrBean getOnLoadSysDtTimeOut(HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public void initializeBOImpl() { + this.headerTable = "Hrm_Emp_Attnd_Dtl"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean = (HrmAttEmpAttOutHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmAttEmpAttOutHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMATTEMPATTQRY.proc_UpdHrmEmpAttOut(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean objBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean objBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean = (HrmAttEmpAttOutHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (sScreenMode.equalsIgnoreCase("U")) + multipleAttendance((HrmAttEmpAttOutHdrBean)oBaseHeaderBean, oErrorList); + reportError(oErrorList); + } + + private void multipleAttendance(HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String sEmpId = oHrmAttEmpAttOutHdrBean.getEmpId(); + String sAttInDt = oHrmAttEmpAttOutHdrBean.getDate(); + String sAttOutDt = oHrmAttEmpAttOutHdrBean.getOutDate(); + String sAttId = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("SELECT distinct ID from Hrm_Emp_Attnd_Dtl HEAD WHERE HEAD.E_PER_DTL_ID in ").concat(String.valueOf(sEmpId))).concat(String.valueOf(" AND to_char(HEAD.ATND_IN_DATE, 'dd-Mon-yyyy') in '"))).concat(String.valueOf(sAttInDt))).concat(String.valueOf("' AND to_char(HEAD.ATND_OUT_DATE, 'dd-Mon-yyyy') in '"))).concat(String.valueOf(sAttOutDt))).concat(String.valueOf("' ")); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList oList1 = oBean1.executeQuery(sAttId); + Iterator oIt = oList1.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ID").getString() != null) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttOut.attndStatus"); + oParam.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.header1.multipleAttendance", oParam)); + } + } + reportError(oErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttQueryBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttQueryBO.java new file mode 100644 index 0000000..362edd6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpAttQueryBO.java @@ -0,0 +1,630 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttEmpAttQueryDtlBean; +import wenrgise.hrms.bean.HrmAttEmpAttQueryHdrBean; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; + +public class HrmAttEmpAttQueryBO extends HrmBaseBO { + public HrmAttEmpAttQueryBO() {} + + public HrmAttEmpAttQueryBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getEmpAttQueryHdrMetaInfo(HrmAttEmpAttQueryQVO oHrmAttEmpAttQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sEmpId = oHrmAttEmpAttQueryQVO.getEmpId(); + String sLocId = null; + String sStartDate = oHrmAttEmpAttQueryQVO.getPeriodStartDt(); + String sEndDate = null; + if (EnrgiseUtil.checkString(oHrmAttEmpAttQueryQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttEmpAttQueryQVO.getHeaderPrimaryKey().split(","); + sLocId = sPrimaryKey[0]; + sStartDate = sPrimaryKey[1]; + } + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLocId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMATTEMPATTQRY.procgetEmpAttHdrcount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oErrorCode = oOutArray.get(2); + String sErr = oErrorCode.getObject().toString(); + if (sErr.equalsIgnoreCase("Y")) + throw new EnrgiseMessageKeyException("hrm.HrmAttEmpAttQuery.DeptError", null, "E"); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getEmpAttQueryHeader(HrmAttEmpAttQueryQVO oHrmAttEmpAttQueryQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + String sEmpId = oHrmAttEmpAttQueryQVO.getEmpId(); + String sLocId = null; + String sStartDate = oHrmAttEmpAttQueryQVO.getPeriodStartDt(); + String sEndDate = null; + if (EnrgiseUtil.checkString(oHrmAttEmpAttQueryQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttEmpAttQueryQVO.getHeaderPrimaryKey().split(","); + sLocId = sPrimaryKey[0]; + sStartDate = sPrimaryKey[1]; + } + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmAttEmpAttQueryQVO == null) + oHrmAttEmpAttQueryQVO = new HrmAttEmpAttQueryQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 1, 12, sLocId)); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMATTEMPATTQRY.procgetEmpAttHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = new HrmAttEmpAttQueryHdrBean(); + String sHdrPrimaryKey = String.valueOf(String.valueOf(String.valueOf(String.valueOf(oRow.get("LOC_ID").getString()).concat(String.valueOf(","))).concat(String.valueOf(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())))).concat(String.valueOf(","))).concat(String.valueOf(oRow.get("EMP_ID").getString())); + oHrmAttEmpAttQueryHdrBean.setHeaderPrimaryKey(sHdrPrimaryKey); + oHrmAttEmpAttQueryHdrBean.setPeriodStartDt(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmAttEmpAttQueryHdrBean.setEmpId(sEmpId); + oHeaderList.add(oHrmAttEmpAttQueryHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getEmpAttQueryDtlMetaInfo(String sKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean objBean = new DBUtilitiesBean(); + String sLocId = null; + String sStartDate = null; + String sEmpId = null; + if (EnrgiseUtil.checkString(sKey)) { + String[] sPrimaryKey = sKey.split(","); + sLocId = sPrimaryKey[0]; + sStartDate = sPrimaryKey[1]; + sEmpId = sPrimaryKey[2]; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sLocId)); + arylstParameters.add(new DBObject(2, 1, 12, sEmpId)); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = objBean.callProc(arylstParameters, "HRMATTEMPATTQRY.procgetEmpAttentrycount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo objRecordMetaInfo = new RecordMetaInfo(); + DBObject objTotalRecord = arylstOutArray.get(0); + objRecordMetaInfo.setRecordCount(((Long)objTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + objRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return objRecordMetaInfo; + } + + public ArrayList getEmpAttQueryDtlInfo(String sKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean objBean = new DBUtilitiesBean(); + String sLocId = null; + String sStartDate = null; + String sEmpId = null; + if (EnrgiseUtil.checkString(sKey)) { + String[] sPrimaryKey = sKey.split(","); + sLocId = sPrimaryKey[0]; + sStartDate = sPrimaryKey[1]; + sEmpId = sPrimaryKey[2]; + } + Timestamp tmstWhenPicked = null; + int count = 0; + ArrayList arylstDetailList = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, sLocId)); + arylstParameters.add(new DBObject(4, 1, 12, sEmpId)); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = objBean.callProc(arylstParameters, "HRMATTEMPATTQRY.procgetEmpAttentryDtlInfo(?,?,?,?,?,?,?,?,?)"); + DBObject objOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)objOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + QueryRow objRow = null; + QueryValue objValue = null; + HashMap objColumns = null; + Iterator itrIt = arylstList.iterator(); + while (itrIt.hasNext()) { + if (count == 0) + arylstDetailList = new ArrayList(); + count++; + objRow = itrIt.next(); + HrmAttEmpAttQueryDtlBean objHrmAttEmpAttQueryDtlBean = new HrmAttEmpAttQueryDtlBean(); + objHrmAttEmpAttQueryDtlBean.setDetailId(objRow.get("ID").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtEmpId(objRow.get("EMPID").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtEmpNo(objRow.get("EMPNO").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtEmpName(objRow.get("EMPNAME").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtShiftMstId(objRow.get("SHIFTID").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtShiftCode(objRow.get("SHIFTCODE").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtChkInDate(EnrgiseUtil.convertToString(objRow.get("CHKINDATE").getDate())); + objHrmAttEmpAttQueryDtlBean.setTxtCheckInTime(objRow.get("CHKINTIME").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtCheckInTimeMin(objRow.get("CHKINTIMEMIN").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtCheckOutTime(objRow.get("CHKOUTTIME").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtCheckOutTimeMin(objRow.get("CHKOUTTIMEMIN").getString()); + objHrmAttEmpAttQueryDtlBean.setTxtAttStatus(objRow.get("ATTSTATUS").getString()); + String sReasons = objRow.get("REASONS").getString(); + objHrmAttEmpAttQueryDtlBean.setTxtReason(sReasons); + arylstDetailList.add(objHrmAttEmpAttQueryDtlBean); + } + return arylstDetailList; + } + + public LovVO getHrmAttQueryLocationLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("Code ID"); + oHeaderList.add("hrm.HrmAttEmpAttQuery.locationCode"); + oHeaderList.add("hrm.HrmEmpPersonalDetails.location"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_GetLocationLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttEmployeeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("Code ID"); + oHeaderList.add("hrm.HrmAttEmpAttQuery.employeeNo"); + oHeaderList.add("hrm.HrmAttEmpAttQuery.firstName"); + oHeaderList.add("hrm.HrmAttEmpAttQuery.middleName"); + oHeaderList.add("hrm.HrmAttEmpAttQuery.lastName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_GetEmployeeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttEmpShftCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("Code ID"); + oHeaderList.add("hrm.HrmAttEmpAttQuery.shiftCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.proc_GetShiftCodeLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttQueryDtlEmpLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmAttEmpAttQueryDtl.txtEmployeeNo"); + oHeaderList.add("hrm.HrmAttEmpAttQueryDtl.txtEmployeeName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + String sSiteId = new String(); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + sSiteId = oLovQueryVO.getProperty("ListSiteId"); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 1, 12, sSiteId)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.procGetDtlEmpLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMP_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "Hrm_Emp_Attnd_Dtl"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpAttQueryHdrBean.getPeriodStartDt()))); + oParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPATTQRY.procUpsertAttendanceHeader(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return String.valueOf(String.valueOf(String.valueOf(String.valueOf(this.oUserInfo.getSiteId()).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttEmpAttQueryHdrBean.getPeriodStartDt()))).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttEmpAttQueryHdrBean.getEmpId())); + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAttEmpAttQuery")) + saveHrmAttDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + public void saveHrmAttDetail(String sPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBeanInsert = null; + DBUtilitiesBean oBeanDelete = null; + Iterator itrBean = oDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmAttEmpAttQueryDtlBean oHrmAttEmpAttQueryDtlBean = itrBean.next(); + if (oHrmAttEmpAttQueryDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBeanInsert = new DBUtilitiesBean(); + oBeanInsert.createBatch("HRMATTEMPATTQRY.procUpsertAttendanceDetail(?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtEmpId())); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpAttQueryDtlBean.getTxtChkInDate()))); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckInTime())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckInTimeMin())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckOutTime())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckOutTimeMin())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtAttStatus())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtReason())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBeanInsert.addToBatch(arylstParameters); + continue; + } + if (oHrmAttEmpAttQueryDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMATTEMPATTQRY.procUpsertAttendanceDetail(?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtEmpId())); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpAttQueryDtlBean.getTxtChkInDate()))); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckInTime())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckInTimeMin())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckOutTime())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtCheckOutTimeMin())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtAttStatus())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmAttEmpAttQueryDtlBean.getTxtReason())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + } + } + if (bInsert) + oBeanInsert.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean objBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean objBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttEmpAttQuery")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmAttEmpAttQueryDtlBean oHrmAttEmpAttQueryDtlBean = itrBean1.next(); + if (!oHrmAttEmpAttQueryDtlBean.getStatus().equalsIgnoreCase("D")); + iCount++; + } + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + String sQuery = new String(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList oList1 = new ArrayList(); + String sDeptId = new String(); + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + checkDept(oHrmAttEmpAttQueryHdrBean, arylstErrorList); + if (arylstErrorList.size() == 0) { + checkUniqueHeader(oHrmAttEmpAttQueryHdrBean, arylstErrorList); + checkDatesConstraint(oHrmAttEmpAttQueryHdrBean, arylstErrorList); + } + } + reportError(arylstErrorList); + } + + private void checkDept(HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttEmpAttQueryHdrBean.getEmpId())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPATTQRY.proccheckDept(?,?,?,?,?)"); + DBObject oErr = arylstOutArray.get(0); + String sErr = ((String)oErr.getObject()).toString(); + if (Integer.parseInt(sErr) == 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttQuery.DeptError"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmAttEmpAttQuery.DeptError", oParams, "E")); + } + } + + private void checkUniqueHeader(HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttEmpAttQueryHdrBean.getEmpId())); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpAttQueryHdrBean.getPeriodStartDt()))); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPATTQRY.proccheckuniqueheader(?,?,?,?,?,?)"); + DBObject oErr = arylstOutArray.get(0); + String sErr = ((String)oErr.getObject()).toString(); + if (Integer.parseInt(sErr) == 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttQuery.uniqueHeader1"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmAttEmpAttQuery.uniqueHeader", oParams, "E")); + } + } + + private void checkDatesConstraint(HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmAttEmpAttQueryHdrBean.getPeriodStartDt())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmAttEmpAttQueryHdrBean.getPeriodStartDt()); + if (dateFlag1 == -1 && dateFlag1 != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmAttEmpAttQueryDtl.inDateFuture", arylstParam)); + } + } + } + + private void checkMandatoryDetail(HrmAttEmpAttQueryDtlBean oHrmAttEmpAttQueryDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAttEmpAttQueryDtlBean.getTxtEmpId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttQueryDtl.txtEmployeeNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttEmpAttQueryDtlBean.getTxtShiftCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttQuery.shiftCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttEmpAttQueryDtlBean.getTxtChkInDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttQuery.chkInDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmAttEmpAttQueryQVO oHrmAttEmpAttQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmAttEmpAttQueryQVO.getPeriodStartDt())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpAttQuery.periodStartDt"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpDayOffBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpDayOffBO.java new file mode 100644 index 0000000..9c80794 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpDayOffBO.java @@ -0,0 +1,457 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttEmpDayOffDtlBean; +import wenrgise.hrms.bean.HrmAttEmpDayOffHdrBean; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; + +public class HrmAttEmpDayOffBO extends HrmBaseBO { + public HrmAttEmpDayOffBO() {} + + public HrmAttEmpDayOffBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrAttEmployeeDayoffDetailMetaInfo(HrmAttEmpDayOffQVO oHrmAttEmpDayOffQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttEmpDayOffQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttEmpDayOffQVO.setEmpId(sPrimaryKey[0]); + oHrmAttEmpDayOffQVO.setEmployeeNo(sPrimaryKey[1]); + oHrmAttEmpDayOffQVO.setEmployeeName(sPrimaryKey[2]); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttEmpDayOffQVO.getEmpId())); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffQVO.getPeriodStartDate()))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffQVO.getPeriodEndDate()))); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPDAYOFF.procHrAttEmpDayOffDtlCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAttEmployeeDayoffDetail(HrmAttEmpDayOffQVO oHrmAttEmpDayOffQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttEmpDayOffQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttEmpDayOffQVO.setEmpId(sPrimaryKey[0]); + oHrmAttEmpDayOffQVO.setEmployeeNo(sPrimaryKey[1]); + oHrmAttEmpDayOffQVO.setEmployeeName(sPrimaryKey[2]); + } + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstAttEmpDayoffDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAttEmpDayOffQVO.getEmpId())); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffQVO.getPeriodStartDate()))); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffQVO.getPeriodEndDate()))); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPDAYOFF.procHrAttEmpDayOffDtl(?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstAttEmpDayoffDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmAttEmpDayOffDtlBean oHrmAttEmpDayOffDtlBean = new HrmAttEmpDayOffDtlBean(); + oHrmAttEmpDayOffDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAttEmpDayOffDtlBean.setTxtStartWeekDate(EnrgiseUtil.convertToString(oRow.get("START_EFFECT_DATE").getDate())); + oHrmAttEmpDayOffDtlBean.setTxtEndWeekDate(EnrgiseUtil.convertToString(oRow.get("END_EFFECT_DATE").getDate())); + oHrmAttEmpDayOffDtlBean.setTxtFirstRestDay(oRow.get("REST_DAY1").getString()); + oHrmAttEmpDayOffDtlBean.setTxtSecondRestDay(oRow.get("REST_DAY2").getString()); + oHrmAttEmpDayOffDtlBean.setTxtHalfDay1(oRow.get("HALF_DAY1").getString()); + oHrmAttEmpDayOffDtlBean.setTxtHalfDay2(oRow.get("HALF_DAY2").getString()); + oHrmAttEmpDayOffDtlBean.setTxtRestWeek1(oRow.get("REST_WEEK1").getString()); + oHrmAttEmpDayOffDtlBean.setTxtRestWeek2(oRow.get("REST_WEEK2").getString()); + oHrmAttEmpDayOffDtlBean.setTxtRestWeekDay1(oRow.get("REST_WEEK_DAY1").getString()); + oHrmAttEmpDayOffDtlBean.setTxtRestWeekDay2(oRow.get("REST_WEEK_DAY2").getString()); + arylstAttEmpDayoffDetail.add(oHrmAttEmpDayOffDtlBean); + } + return arylstAttEmpDayoffDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_DAY_OFFS"; + } + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAttEmpDayOff")) + saveHrmAttEmpDayoffDetail(oBaseHeaderBean, oDetailBeanArray); + } + + public String saveHrmAttEmpDayoffDetail(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean1 = null; + DBUtilitiesBean oBean2 = null; + DBUtilitiesBean oBean3 = null; + HrmAttEmpDayOffHdrBean oHrmAttEmpDayOffHdrBean = (HrmAttEmpDayOffHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmAttEmpDayOffDtlBean oHrmAttEmpDayOffDtlBean = itrBean.next(); + if (oHrmAttEmpDayOffDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMATTEMPDAYOFF.procUpsertAttEmpDayOffDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttEmpDayOffHdrBean.getEmpId())); + arylstParameters.add(new DBObject(3, 1, 12, null)); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffDtlBean.getTxtStartWeekDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffDtlBean.getTxtEndWeekDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtFirstRestDay())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtSecondRestDay())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtHalfDay1())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtHalfDay2())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeek1())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeek2())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay1())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay2())); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oBean1.addToBatch(arylstParameters); + continue; + } + if (oHrmAttEmpDayOffDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean2 = new DBUtilitiesBean(); + oBean2.createBatch("HRMATTEMPDAYOFF.procUpsertAttEmpDayOffDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttEmpDayOffHdrBean.getEmpId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAttEmpDayOffDtlBean.getDetailId())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffDtlBean.getTxtStartWeekDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffDtlBean.getTxtEndWeekDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtFirstRestDay())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtSecondRestDay())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtHalfDay1())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtHalfDay2())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeek1())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeek2())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay1())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay2())); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oBean2.addToBatch(arylstParameters); + continue; + } + if (oHrmAttEmpDayOffDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean3 = new DBUtilitiesBean(); + oBean3.createBatch("HRMATTEMPDAYOFF.procDelEmpDayOff(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmAttEmpDayOffDtlBean.getDetailId())); + oBean3.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean1.executeBatch(); + if (bUpdate) + oBean2.executeBatch(); + if (bDelete) + oBean3.executeBatch(); + return String.valueOf(String.valueOf(String.valueOf(String.valueOf(oHrmAttEmpDayOffHdrBean.getEmpId()).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttEmpDayOffHdrBean.getEmployeeNo()))).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttEmpDayOffHdrBean.getEmployeeName())); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttEmpDayOff")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmAttEmpDayOffDtlBean oHrmAttEmpDayOffDtlBean = oIt1.next(); + if (!oHrmAttEmpDayOffDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmAttEmpDayOffDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmAttEmpDayOffDtlBean oHrmAttEmpDayOffDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtFirstRestDay())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmployeeDayOff.fstRstDay"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtStartWeekDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmployeeDayOff.startWeekDt"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeek1())) + if (!EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay1())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmployeeDayOff.restWeekDay1"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeek2())) + if (!EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay2())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmployeeDayOff.restWeekDay2"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay1())) + if (!EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeek1())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmployeeDayOff.restWeek1"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeekDay2())) + if (!EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtRestWeek2())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmployeeDayOff.restWeek2"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void saveDetailImpl(String param1, String param2, ArrayList param3) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttEmpDayOff")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + int rowCount = 0; + while (oIt1.hasNext()) { + System.out.println(rowCount); + HrmAttEmpDayOffDtlBean oHrmAttEmpDayOffDtlBean = oIt1.next(); + if (!oHrmAttEmpDayOffDtlBean.getStatus().equalsIgnoreCase("D")) { + checkDays(oHrmAttEmpDayOffDtlBean, oList); + if (!EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtEndWeekDate())) + if (rowCount < n - 1) { + HrmAttEmpDayOffDtlBean oHrmAttEmpDayOffDtlBean1 = oDetailBeanArray.get(rowCount + 1); + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean1.getTxtStartWeekDate())) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.period.value")); + } + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtStartWeekDate())) + if (rowCount > 0 && rowCount < n) { + HrmAttEmpDayOffDtlBean oHrmAttEmpDayOffDtlBean1 = oDetailBeanArray.get(rowCount - 1); + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean1.getTxtEndWeekDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttEmpDayOffDtlBean.getTxtStartWeekDate(), oHrmAttEmpDayOffDtlBean1.getTxtEndWeekDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.date.value")); + } + } + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffDtlBean.getTxtEndWeekDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttEmpDayOffDtlBean.getTxtEndWeekDate(), oHrmAttEmpDayOffDtlBean.getTxtStartWeekDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.corresdate.value")); + } + } else if (oHrmAttEmpDayOffDtlBean.getStatus().equalsIgnoreCase("D")) { + HrmAttEmpDayOffHdrBean oHrmAttEmpDayOffHdrBean = (HrmAttEmpDayOffHdrBean)oBaseHeaderBean; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttEmpDayOffHdrBean.getEmpId())); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpDayOffDtlBean.getTxtStartWeekDate()))); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPDAYOFF.procGetShiftRstInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + if (oRecordMetaInfo.getRecordCount() > 0L) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.rst.value")); + } + rowCount++; + } + reportError(oList); + } + } + + public void checkDays(HrmAttEmpDayOffDtlBean oDtlBean, ArrayList arylstList) throws EnrgiseSystemException, EnrgiseApplicationException { + String[] dayTypes = { oDtlBean.getTxtFirstRestDay(), oDtlBean.getTxtSecondRestDay(), oDtlBean.getTxtHalfDay1(), oDtlBean.getTxtHalfDay2(), oDtlBean.getTxtRestWeekDay1(), oDtlBean.getTxtRestWeekDay2() }; + System.out.println(dayTypes.length); + int count = 0; + for (int i = 0; i < dayTypes.length; i++) { + count++; + if (count <= dayTypes.length) + for (int j = count + 1; j <= dayTypes.length; j++) { + if (EnrgiseUtil.checkString(dayTypes[count - 1]) && EnrgiseUtil.checkString(dayTypes[j - 1])) + if (dayTypes[count - 1].equalsIgnoreCase(dayTypes[j - 1])) + arylstList.add(new EnrgiseApplicationException("wenrgise.hrms.att.holDayType.value")); + } + } + } + + public LovVO getHrmAttEmpNoQueryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("empId"); + oHeaderList.add("hrm.HrmAttEmployeeDayOff.empNo"); + oHeaderList.add("hrm.HrmAttEmployeeDayOff.empName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMATTEMPDAYOFF.procGetHrmAttEmpNoQLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAttEmpNoInsertLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("empId"); + oHeaderList.add("hrm.HrmAttEmployeeDayOff.empNo"); + oHeaderList.add("hrm.HrmAttEmployeeDayOff.empName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMATTEMPDAYOFF.procGetHrmAttEmpNoILOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpShiftBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpShiftBO.java new file mode 100644 index 0000000..0fe6f6d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmpShiftBO.java @@ -0,0 +1,469 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttEmpShiftDtlBean; +import wenrgise.hrms.bean.HrmAttEmpShiftHdrBean; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; + +public class HrmAttEmpShiftBO extends HrmBaseBO { + public HrmAttEmpShiftBO() {} + + public HrmAttEmpShiftBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrAttEmpShiftDetailMetaInfo(HrmAttEmpShiftQVO oHrmAttEmpShiftQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + if (EnrgiseUtil.checkString(oHrmAttEmpShiftQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttEmpShiftQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttEmpShiftQVO.setEmployeeNo(sPrimaryKey[0]); + oHrmAttEmpShiftQVO.setEmployeeName(sPrimaryKey[1]); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttEmpShiftQVO.getEmployeeNo())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAttEmpShiftQVO.getStartDate())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAttEmpShiftQVO.getEndDate())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPSHIFT.proc_HrAttEmpShiftDtlCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAttEmpShiftDetail(HrmAttEmpShiftQVO oHrmAttEmpShiftQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (EnrgiseUtil.checkString(oHrmAttEmpShiftQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttEmpShiftQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttEmpShiftQVO.setEmployeeNo(sPrimaryKey[0]); + oHrmAttEmpShiftQVO.setEmployeeName(sPrimaryKey[1]); + } + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstAttWorkGroupDayoffDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAttEmpShiftQVO.getEmployeeNo())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAttEmpShiftQVO.getStartDate())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAttEmpShiftQVO.getEndDate())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPSHIFT.proc_HrAttEmpShiftDtl(?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstAttWorkGroupDayoffDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean = new HrmAttEmpShiftDtlBean(); + oHrmAttEmpShiftDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAttEmpShiftDtlBean.setShiftBeginDate(EnrgiseUtil.convertToString(oRow.get("SHIFT_START_DATE").getDate())); + oHrmAttEmpShiftDtlBean.setShiftEndDate(EnrgiseUtil.convertToString(oRow.get("SHIFT_END_DATE").getDate())); + oHrmAttEmpShiftDtlBean.setShiftCode(oRow.get("CODE").getString()); + oHrmAttEmpShiftDtlBean.setShiftId(oRow.get("SHFT_MST_ID").getString()); + arylstAttWorkGroupDayoffDetail.add(oHrmAttEmpShiftDtlBean); + } + return arylstAttWorkGroupDayoffDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_SHIFT_DTL"; + } + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAttEmpShift")) + saveHrmAttEmpShiftDetail(oBaseHeaderBean, oDetailBeanArray); + } + + public String saveHrmAttEmpShiftDetail(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + HrmAttEmpShiftHdrBean oHrmAttEmpShiftHdrBean = (HrmAttEmpShiftHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean = itrBean.next(); + if (oHrmAttEmpShiftDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMATTEMPSHIFT.proc_UpsertAttEmpShiftDtl(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttEmpShiftHdrBean.getEmpNoId())); + arylstParameters.add(new DBObject(3, 1, 12, null)); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftDtlBean.getShiftBeginDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftDtlBean.getShiftEndDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmAttEmpShiftDtlBean.getShiftId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmAttEmpShiftDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMATTEMPSHIFT.proc_UpsertAttEmpShiftDtl(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttEmpShiftHdrBean.getEmpNoId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAttEmpShiftDtlBean.getDetailId())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftDtlBean.getShiftBeginDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftDtlBean.getShiftEndDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmAttEmpShiftDtlBean.getShiftId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmAttEmpShiftDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMATTEMPSHIFT.proc_DelEmpShift(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmAttEmpShiftDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + return String.valueOf(String.valueOf(oHrmAttEmpShiftHdrBean.getEmployeeNo()).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttEmpShiftHdrBean.getEmployeeName())); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void saveDetailImpl(String param1, String param2, ArrayList param3) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) { + HrmAttEmpShiftHdrBean oHrmAttEmpShiftHdrBean = (HrmAttEmpShiftHdrBean)oBaseHeaderBean; + checkMandatoryHeader(oHrmAttEmpShiftHdrBean, oErrorList); + } + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttEmpShift")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean = oIt1.next(); + if (!oHrmAttEmpShiftDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmAttEmpShiftDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmAttEmpShiftHdrBean oHrmAttEmpShiftHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + if (!EnrgiseUtil.checkString(oHrmAttEmpShiftHdrBean.getEmployeeNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpShift.employeeNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryDtls(HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean.getShiftBeginDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpShift.shiftBeginDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean.getShiftCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpShift.shiftCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatory(HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean, int iCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean.getShiftBeginDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpShift.shiftBeginDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean.getShiftCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttEmpShift.shiftCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttEmpShift")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + int rowCount = 0; + while (oIt1.hasNext()) { + System.out.println(rowCount); + HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean = oIt1.next(); + if (!oHrmAttEmpShiftDtlBean.getStatus().equalsIgnoreCase("D")) { + if (!EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean.getShiftEndDate())) + if (rowCount < n - 1) { + HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean1 = oDetailBeanArray.get(rowCount + 1); + if (EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean1.getShiftBeginDate())) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.Enddate.value")); + } + if (EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean.getShiftBeginDate())) + if (rowCount > 0 && rowCount < n) { + HrmAttEmpShiftDtlBean oHrmAttEmpShiftDtlBean1 = oDetailBeanArray.get(rowCount - 1); + if (EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean1.getShiftEndDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttEmpShiftDtlBean.getShiftBeginDate(), oHrmAttEmpShiftDtlBean1.getShiftEndDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.BeginDate.value")); + } + } + if (EnrgiseUtil.checkString(oHrmAttEmpShiftDtlBean.getShiftEndDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttEmpShiftDtlBean.getShiftEndDate(), oHrmAttEmpShiftDtlBean.getShiftBeginDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.attEmp.corresdate.value")); + } + rowCount++; + continue; + } + if (oHrmAttEmpShiftDtlBean.getStatus().equalsIgnoreCase("D")) { + HrmAttEmpShiftHdrBean oHrmAttEmpShiftHdrBean = (HrmAttEmpShiftHdrBean)oBaseHeaderBean; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttEmpShiftHdrBean.getEmpNoId())); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftDtlBean.getShiftBeginDate()))); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTEMPSHIFT.procGetShiftRstInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + if (oRecordMetaInfo.getRecordCount() > 0L) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.rst.value")); + } + } + reportError(oList); + } + } + + public LovVO getHrmAttESEmpNoLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("empNoId"); + oHeaderList.add("hrm.HrmAttEmpShift.employeeNo"); + oHeaderList.add("hrm.HrmAttEmpShift.employeeName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPSHIFT.proc_GetAttEmpNoLovNmode(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttESEmpNoLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("empNoId"); + oHeaderList.add("hrm.HrmAttEmpShift.employeeNo"); + oHeaderList.add("hrm.HrmAttEmpShift.employeeName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPSHIFT.proc_GetAttEmpNoLovQmode(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttESShiftCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("shiftId"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.shiftCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTEMPSHIFT.proc_GetShiftCodeLovN(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmployeeShiftRosterBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmployeeShiftRosterBO.java new file mode 100644 index 0000000..7806869 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttEmployeeShiftRosterBO.java @@ -0,0 +1,118 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttEmpShiftRosterDtlBean; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; + +public class HrmAttEmployeeShiftRosterBO extends HrmBaseBO { + public HrmAttEmployeeShiftRosterBO() {} + + public HrmAttEmployeeShiftRosterBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getAttEmpshiftRosterDetailMetaInfo(HrmAttEmpShiftRosterQVO oHrmAttEmpShiftRosterQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAttEmpShiftRosterQVO.getHdnWorkId())); + oParameters.add(new DBObject(2, 1, 12, oHrmAttEmpShiftRosterQVO.getHdnEmpId())); + oParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftRosterQVO.getPeriodStartDate()))); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftRosterQVO.getPeriodEndDate()))); + oParameters.add(new DBObject(5, 1, 12, oHrmAttEmpShiftRosterQVO.getHdnSiteId())); + oParameters.add(new DBObject(6, 2, -5)); + oParameters.add(new DBObject(7, 2, 93)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.proc_getDetailSftRosterCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getAttEmpshiftRosterDetail(HrmAttEmpShiftRosterQVO oHrmAttEmpShiftRosterQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oHrmAttEmpShiftRosterDtl = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmAttEmpShiftRosterQVO.getHdnWorkId())); + oParameters.add(new DBObject(4, 1, 12, oHrmAttEmpShiftRosterQVO.getHdnEmpId())); + oParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftRosterQVO.getPeriodStartDate()))); + oParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttEmpShiftRosterQVO.getPeriodEndDate()))); + oParameters.add(new DBObject(7, 1, 12, oHrmAttEmpShiftRosterQVO.getHdnSiteId())); + oParameters.add(new DBObject(8, 2, -10)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.proc_GetSftRosterHdr(?,?,?,?,?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmAttEmpShiftRosterDtl = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAttEmpShiftRosterDtlBean oHrmAttEmpShiftRosterDtlBean = new HrmAttEmpShiftRosterDtlBean(); + oHrmAttEmpShiftRosterDtlBean.setDetailId(oRow.get("id").getString()); + oHrmAttEmpShiftRosterDtlBean.setTxtWorkDate(EnrgiseUtil.convertToString(oRow.get("Wdate").getDate())); + oHrmAttEmpShiftRosterDtlBean.setTxtEmpNo(oRow.get("emp_no").getString()); + oHrmAttEmpShiftRosterDtlBean.setTxtMandatoryHoliady(oRow.get("MENDATORY").getString()); + oHrmAttEmpShiftRosterDtlBean.setTxtAvailability(oRow.get("AVAILIBILITY").getString()); + oHrmAttEmpShiftRosterDtlBean.setTxtShiftCode(oRow.get("SHIFTCODE").getString()); + oHrmAttEmpShiftRosterDtlBean.setDetailId(oRow.get("id").getString()); + oHrmAttEmpShiftRosterDtlBean.setStatus("Q"); + oHrmAttEmpShiftRosterDtl.add(oHrmAttEmpShiftRosterDtlBean); + } + return oHrmAttEmpShiftRosterDtl; + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return null; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public void saveDetailImpl(String sHeaderPrimaryKey, BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void initializeBOImpl() { + this.headerTable = "PAY_FIXED_PROFTAX_RATES"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftMstBO.java new file mode 100644 index 0000000..5814808 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftMstBO.java @@ -0,0 +1,345 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; + +public class HrmAttShiftMstBO extends BaseBO { + public HrmAttShiftMstBO() {} + + public HrmAttShiftMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void initializeBOImpl() { + this.headerTable = "hrm_shift_mst"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseSystemException { + String returnString = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oParameters = new ArrayList(); + HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean = (HrmAttShiftMstHdrBean)oBaseHeaderBean; + if (sScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmAttShiftMstHdrBean.getShiftCode())); + oParameters.add(new DBObject(4, 1, 12, oHrmAttShiftMstHdrBean.getShiftDescription())); + oParameters.add(new DBObject(5, 1, 12, oHrmAttShiftMstHdrBean.getStartTime())); + oParameters.add(new DBObject(6, 1, 12, oHrmAttShiftMstHdrBean.getEndTime())); + oParameters.add(new DBObject(7, 1, 12, oHrmAttShiftMstHdrBean.getRelaxationTime())); + oParameters.add(new DBObject(9, 1, 12, oHrmAttShiftMstHdrBean.getStartTolerenceTime())); + oParameters.add(new DBObject(10, 1, 12, oHrmAttShiftMstHdrBean.getEndTolerenceTime())); + oParameters.add(new DBObject(8, 1, 12, oHrmAttShiftMstHdrBean.getOverlapTime())); + oParameters.add(new DBObject(11, 1, 12, oHrmAttShiftMstHdrBean.getTxtDayOverlapFlag())); + oParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 12)); + oParameters.add(new DBObject(16, 2, 12)); + oParameters.add(new DBObject(17, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.PROC_UPSERTHRMATTSFTMST(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (sScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmAttShiftMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHrmAttShiftMstHdrBean.getShiftCode())); + oParameters.add(new DBObject(4, 1, 12, oHrmAttShiftMstHdrBean.getShiftDescription())); + oParameters.add(new DBObject(5, 1, 12, oHrmAttShiftMstHdrBean.getStartTime())); + oParameters.add(new DBObject(6, 1, 12, oHrmAttShiftMstHdrBean.getEndTime())); + oParameters.add(new DBObject(7, 1, 12, oHrmAttShiftMstHdrBean.getRelaxationTime())); + oParameters.add(new DBObject(8, 1, 12, oHrmAttShiftMstHdrBean.getStartTolerenceTime())); + oParameters.add(new DBObject(9, 1, 12, oHrmAttShiftMstHdrBean.getEndTolerenceTime())); + oParameters.add(new DBObject(10, 1, 12, oHrmAttShiftMstHdrBean.getOverlapTime())); + oParameters.add(new DBObject(11, 1, 12, oHrmAttShiftMstHdrBean.getTxtDayOverlapFlag())); + oParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 12)); + oParameters.add(new DBObject(16, 2, 12)); + oParameters.add(new DBObject(17, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.PROC_UPSERTHRMATTSFTMST(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (sScreenMode.equalsIgnoreCase("D")) { + + } + return returnString; + } + + public RecordMetaInfo getAttShiftMstHeaderMetaInfo(HrmAttShiftMstQVO oHrmAttShiftMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmAttShiftMstQVO.getShiftCode())); + oParameters.add(new DBObject(2, 1, 12, oHrmAttShiftMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.PROC_GETATTSFTMSTHDRCOUNT(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getAttShiftMstHeader(HrmAttShiftMstQVO oHrmAttShiftMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (oHrmAttShiftMstQVO == null) + oHrmAttShiftMstQVO = new HrmAttShiftMstQVO(); + ArrayList oHeaderList = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmAttShiftMstQVO.getShiftCode())); + oParameters.add(new DBObject(4, 1, 12, oHrmAttShiftMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.PROC_ATTSFTMSTHEADER(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + count = 0; + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean = new HrmAttShiftMstHdrBean(); + oHrmAttShiftMstHdrBean.setHeaderPrimaryKey(oRow.get("id").getString()); + oHrmAttShiftMstHdrBean.setShiftCode(oRow.get("CODE").getString()); + oHrmAttShiftMstHdrBean.setShiftDescription(oRow.get("DESCRIPTION").getString()); + oHrmAttShiftMstHdrBean.setStartTime(oRow.get("START_TIME").getString()); + oHrmAttShiftMstHdrBean.setEndTime(oRow.get("END_TIME").getString()); + oHrmAttShiftMstHdrBean.setRelaxationTime(oRow.get("RELAXATION_TIME").getString()); + oHrmAttShiftMstHdrBean.setStartTolerenceTime(oRow.get("START_TOLERANCE_TIME").getString()); + oHrmAttShiftMstHdrBean.setEndTolerenceTime(oRow.get("END_TOLERANCE_TIME").getString()); + oHrmAttShiftMstHdrBean.setOverlapTime(oRow.get("OVERLAP_TIME").getString()); + oHrmAttShiftMstHdrBean.setTxtDayOverlapFlag(oRow.get("DAY_OVERLAP_FLAG").getString()); + oHeaderList.add(oHrmAttShiftMstHdrBean); + } + return oHeaderList; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public LovVO getShiftCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("headerPrimaryKey"); + arylstHeaderNames.add("hrm.HrmAttShiftMaster.shiftCode"); + arylstHeaderNames.add("hrm.HrmAttShiftMaster.desc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.proc_ShiftCodeLov(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean = (HrmAttShiftMstHdrBean)oBaseHeaderBean; + checkMandatoryHdr(oHrmAttShiftMstHdrBean, oErrorList); + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean = (HrmAttShiftMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + checkShiftUnique(oHrmAttShiftMstHdrBean.getShiftCode(), sScreenMode, oList); + String sStHour = convertHour(oHrmAttShiftMstHdrBean.getStartTime()); + String sStMin = convertTime(oHrmAttShiftMstHdrBean.getStartTime()); + String sEndHour = convertHour(oHrmAttShiftMstHdrBean.getEndTime()); + String sEndMin = convertTime(oHrmAttShiftMstHdrBean.getEndTime()); + int stHour = Integer.parseInt(sStHour); + int edHour = Integer.parseInt(sEndHour); + int stMin = Integer.parseInt(sStMin); + int edMin = Integer.parseInt(sEndMin); + checkField(oList, (BaseHeaderBean)oHrmAttShiftMstHdrBean); + if (stHour >= 24) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.startTime"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.Hrm.EmpShiftMaster.StartHour", oParams, "E")); + } + if (edHour >= 24) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.endTime"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.Hrm.EmpShiftMaster.EndHour", oParams, "E")); + } + if (stMin >= 60) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.startTime"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.Hrm.EmpShiftMaster.StartMin", oParams, "E")); + } + if (edMin >= 60) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.endTime"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.Hrm.EmpShiftMaster.EndMin", oParams, "E")); + } + reportError(oList); + } + } + + public void checkField(ArrayList oList, BaseHeaderBean oBaseHeaderBean) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean = (HrmAttShiftMstHdrBean)oBaseHeaderBean; + String StHour = convertHour(oHrmAttShiftMstHdrBean.getStartTime()); + String EndHour = convertHour(oHrmAttShiftMstHdrBean.getEndTime()); + int stField = Integer.parseInt(StHour); + int edField = Integer.parseInt(EndHour); + if (oHrmAttShiftMstHdrBean.getTxtDayOverlapFlag().equalsIgnoreCase("N")) + if (stField > edField) { + ArrayList oParams = new ArrayList(); + oList.add(new EnrgiseMessageKeyException("hrm.HrmAttShiftMaster.RelationCheck", oParams, "E")); + } + if (oHrmAttShiftMstHdrBean.getTxtDayOverlapFlag().equalsIgnoreCase("Y")) + if (edField > stField) { + ArrayList oParams = new ArrayList(); + oList.add(new EnrgiseMessageKeyException("hrm.HrmAttShiftMaster.RelationCheck1", oParams, "E")); + } + } + + private void checkMandatoryHdr(HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAttShiftMstHdrBean.getStartTime())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.startTime"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttShiftMstHdrBean.getEndTime())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.endTime"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttShiftMstHdrBean.getShiftCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.shiftCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttShiftMstHdrBean.getShiftDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.desc"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttShiftMstHdrBean.getTxtDayOverlapFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttShiftMaster.txtDayOverlapFlag"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public String convertTime(String sTime) { + String sMin = sTime.substring(3, 5); + return sMin; + } + + public String convertHour(String sTHour) { + String sHour = sTHour.substring(0, 2); + return sHour; + } + + private void checkShiftUnique(String PrimKey, String sScreenMode, ArrayList oList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oRetList = null; + if (sScreenMode.equals("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, PrimKey)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTENDENCE.proc_ShiftCodeCheck(?,?,?,?,?)"); + oRetList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oRetList.size() > 0) { + ArrayList oArguments = new ArrayList(); + oArguments.add(new Integer(1)); + oArguments.add(new Integer(count)); + oList.add(new EnrgiseApplicationException("Hrm.AttShiftMast.Code")); + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftRosterGenBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftRosterGenBO.java new file mode 100644 index 0000000..12f0fc7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttShiftRosterGenBO.java @@ -0,0 +1,420 @@ +package wenrgise.hrms.ejb.business; + +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.StringTokenizer; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; + +public class HrmAttShiftRosterGenBO extends HrmBaseBO { + public HrmAttShiftRosterGenBO() {} + + public HrmAttShiftRosterGenBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void generateRoster(ArrayList arylstWrkgrp, String sSiteId, String sFromDate, String sToDate, UserInfo oUsr) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + DateUtility oDateUtil = new DateUtility(); + DBUtilitiesBean oBean = null; + String sHdrPK = null; + String sNextDt = sFromDate; + boolean bOffHolFlag = false; + int iDateDiff = oDateUtil.dateDiff(oBO.getddmmyyyyDateFormat(sFromDate), oBO.getddmmyyyyDateFormat(sToDate)); + if (sFromDate.equals(sToDate)) + iDateDiff = 0; + if (EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), sToDate, sFromDate) < 0) { + ArrayList arylstParams = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + arylstParams.add(new MessageKey("hrm.HrmAttShiftRosterGen.fromDate")); + arylstParams.add(new MessageKey("hrm.HrmAttShiftRosterGen.toDate")); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmAttAbsentListGen.error.invalidDate", arylstParams, "E")); + reportError(arylstErrorList); + } + Iterator itrWrkgrp = arylstWrkgrp.iterator(); + while (itrWrkgrp.hasNext()) { + String sWrkgrpId = itrWrkgrp.next(); + while (iDateDiff-- >= 0) { + bOffHolFlag = false; + if (isCalendarHoliday(sSiteId, sNextDt)) { + sHdrPK = insertHeader(sSiteId, sWrkgrpId, sNextDt, "H", oUsr.getUserId(), oUsr.getSiteId()); + continue; + } + int iWrkFlag = isWorkgroupHoliday(sWrkgrpId, sSiteId, sNextDt); + if (iWrkFlag != 3) { + sHdrPK = insertHeader(sSiteId, sWrkgrpId, sNextDt, "W", oUsr.getUserId(), oUsr.getSiteId()); + } else { + bOffHolFlag = true; + sHdrPK = insertHeader(sSiteId, sWrkgrpId, sNextDt, "H", oUsr.getUserId(), oUsr.getSiteId()); + } + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMATTSHIFTROSTERGEN.proc_InsertDetail(?,?,?,?,?,?,?)"); + ArrayList arylstEmp = getEmpList(sSiteId, sWrkgrpId, sNextDt); + Iterator itrEmp = arylstEmp.iterator(); + while (itrEmp.hasNext()) { + String sEmpId = itrEmp.next(); + String sShiftMstId = getEmpShift(sSiteId, sWrkgrpId, sEmpId, sNextDt); + if (sShiftMstId.equals("0")); + int iEmpLv = isEmpLeaveDay(sEmpId, sNextDt); + if (iEmpLv != 3) { + if (isEmpDayOffPresent(sEmpId, sNextDt)) { + int iEmpHol = isEmployeeHoliday(sEmpId, sNextDt); + if (iEmpHol != 3) + appendToBatch(oBean, sHdrPK, sEmpId, Integer.toString(iEmpHol), sShiftMstId, "", oUsr.getUserId(), oUsr.getSiteId()); + continue; + } + if (!bOffHolFlag) + appendToBatch(oBean, sHdrPK, sEmpId, Integer.toString(iWrkFlag), sShiftMstId, "", oUsr.getUserId(), oUsr.getSiteId()); + } + } + oBean.executeBatch(); + Date dDate = oBO.getNextDay(sNextDt, 1); + sNextDt = EnrgiseUtil.convertToString(dDate); + } + } + } + + private int isHoliday(String sEmpId, String sWrkgrpId, String sSiteId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + if (isCalendarHoliday(sSiteId, sDate)) + return 3; + int iEmpHolType = isEmployeeHoliday(sEmpId, sDate); + if (iEmpHolType == 0) + return isWorkgroupHoliday(sWrkgrpId, sSiteId, sDate); + return iEmpHolType; + } + + private boolean isCalendarHoliday(String sSiteId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSiteId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(3, 2, 4)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetCalHol(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iCount = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = !(iCount == 0); + return sReturnValue; + } + + private int isEmployeeHoliday(String sEmpId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetEmpHol(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList == null); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + HrmCommonBO oComBO = new HrmCommonBO(); + int iDayOfWeek = oComBO.getDayOfWeek(sDate); + int iWeekOfMonth = oComBO.getWeekOfMonth(sDate); + System.out.println(iDayOfWeek); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + System.out.println(oRow.get("rest_day1").getString()); + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_day1").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_day2").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("half_day1").getString())) + return 1; + if (iDayOfWeek == Integer.parseInt(oRow.get("half_day2").getString())) + return 1; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_week_day1").getString()) && iWeekOfMonth == Integer.parseInt(oRow.get("rest_week1").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_week_day2").getString()) && iWeekOfMonth == Integer.parseInt(oRow.get("rest_week2").getString())) + return 3; + } + return 0; + } + + private int isWorkgroupHoliday(String sWrkgrpId, String sSiteId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sWrkgrpId)); + arylstParam.add(new DBObject(2, 1, 12, sSiteId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetWrkgrpHol(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList == null); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + HrmCommonBO oComBO = new HrmCommonBO(); + int iDayOfWeek = oComBO.getDayOfWeek(sDate); + int iWeekOfMonth = oComBO.getWeekOfMonth(sDate); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_day1").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_day2").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("half_day1").getString())) + return 1; + if (iDayOfWeek == Integer.parseInt(oRow.get("half_day2").getString())) + return 1; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_week_day1").getString()) && iWeekOfMonth == Integer.parseInt(oRow.get("rest_week1").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_week_day2").getString()) && iWeekOfMonth == Integer.parseInt(oRow.get("rest_week2").getString())) + return 3; + } + return 0; + } + + private int isEmpLeaveDay(String sEmpId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(3, 2, 4)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetEmpLeave(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + return iVal; + } + + private ArrayList getEmpList(String sSiteId, String sWrkgrpId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSiteId)); + arylstParam.add(new DBObject(2, 1, 12, sWrkgrpId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetWrkgrpEmps(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList == null); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + ArrayList arylstEmp = new ArrayList(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + arylstEmp.add(oRow.get("e_per_dtl_id").getString()); + } + return arylstEmp; + } + + private void appendToBatch(DBUtilitiesBean oBean, String sHdrPK, String sEmpId, String iWrk, String sShiftMstId, String sSpecialInst, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sHdrPK)); + arylstParam.add(new DBObject(2, 1, 12, sEmpId)); + arylstParam.add(new DBObject(3, 1, 12, iWrk)); + arylstParam.add(new DBObject(4, 1, 12, sShiftMstId)); + arylstParam.add(new DBObject(5, 1, 12, sSpecialInst)); + arylstParam.add(new DBObject(6, 1, 12, sUserId)); + arylstParam.add(new DBObject(7, 1, 12, sUserSiteId)); + oBean.addToBatch(arylstParam); + } + + private String insertHeader(String sSiteId, String sWrkgrpId, String sDate, String sHolFlag, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSiteId)); + arylstParam.add(new DBObject(2, 1, 12, sWrkgrpId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(4, 1, 12, sHolFlag)); + arylstParam.add(new DBObject(5, 1, 12, sUserId)); + arylstParam.add(new DBObject(6, 1, 12, sUserSiteId)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_InsertHeader(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String sPK = ((String)oOutObject.getObject()).toString(); + return sPK; + } + + private String getEmpShift(String sSiteId, String sWrkgrpId, String sEmpId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSiteId)); + arylstParam.add(new DBObject(2, 1, 12, sWrkgrpId)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetEmpShift(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String sEmpShift = ((String)oOutObject.getObject()).toString(); + return sEmpShift; + } + + private boolean isEmpDayOffPresent(String sEmpId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(3, 2, 4)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetEmpDayOffPresent(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iCount = ((Integer)oOutObject.getObject()).intValue(); + boolean bCount = !(iCount == 0); + return bCount; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_DAY_OFFS"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return null; + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseSystemException { + HrmAttShiftRosterGenHdrBean oHrmAttShiftRosterGenHdrBean = (HrmAttShiftRosterGenHdrBean)oBaseHeaderBean; + String generate = saveRosterGeneartor((BaseHeaderBean)oHrmAttShiftRosterGenHdrBean); + return generate; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + private ArrayList getSiteWrkgrps(String sSiteId) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + ArrayList oList = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSiteId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMATTSHIFTROSTERGEN.proc_GetSiteWrkgrps(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList == null); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + ArrayList arylstEmp = new ArrayList(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + arylstEmp.add(oRow.get("WRKGRP_ID").getString()); + } + return arylstEmp; + } + + public String saveRosterGeneartor(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + String returnString = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oParameters = new ArrayList(); + HrmAttShiftRosterGenHdrBean oHrmAttShiftRosterGenHdrBean = (HrmAttShiftRosterGenHdrBean)oBaseHeaderBean; + ArrayList arylstWrkgrp = new ArrayList(); + StringTokenizer stWrkgrp = new StringTokenizer(oHrmAttShiftRosterGenHdrBean.getWorkGroupId(), ","); + while (stWrkgrp.hasMoreTokens()) { + String sWrkgrpId = stWrkgrp.nextToken(); + arylstWrkgrp.add(sWrkgrpId); + } + try { + generateRoster(arylstWrkgrp, oHrmAttShiftRosterGenHdrBean.getSiteId(), oHrmAttShiftRosterGenHdrBean.getFromDate(), oHrmAttShiftRosterGenHdrBean.getToDate(), this.oUserInfo); + } catch (EnrgiseApplicationException oApp) { + throw new EnrgiseSystemException(oApp); + } + return returnString; + } + + public LovVO getShiftRosterGenWorkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("workGroupId"); + arylstHeaderNames.add("hrm.HrmAttShiftRosterGen.wrkGrpName"); + arylstHeaderNames.add("hrm.HrmAttShiftRosterGen.wrkGrpCode"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + if (oLovQueryVO.getProperty("site") != null) { + siteId = oLovQueryVO.getProperty("site"); + System.out.println(siteId); + } + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, siteId)); + oParameters.add(new DBObject(2, 1, 12, oLovQueryVO.getSearchField1())); + oParameters.add(new DBObject(3, 1, 12, oLovQueryVO.getSearchField2())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTSHIFTROSTERGEN.proc_GetWorkGroupCodeLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(oRow.get("CODE").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupDayOffBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupDayOffBO.java new file mode 100644 index 0000000..c199c79 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupDayOffBO.java @@ -0,0 +1,553 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttWorkGroupDayOffDtlBean; +import wenrgise.hrms.bean.HrmAttWorkGroupDayOffHdrBean; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; + +public class HrmAttWorkGroupDayOffBO extends HrmBaseBO { + public HrmAttWorkGroupDayOffBO() {} + + public HrmAttWorkGroupDayOffBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrAttWorkGroupDayOffDetailMetaInfo(HrmAttWorkGroupDayOffQVO oHrmAttWorkGroupDayOffQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttWorkGroupDayOffQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttWorkGroupDayOffQVO.setWorkGroupCode(sPrimaryKey[0]); + oHrmAttWorkGroupDayOffQVO.setSiteCode(sPrimaryKey[1]); + oHrmAttWorkGroupDayOffQVO.setWorkGroupDescription(sPrimaryKey[2]); + oHrmAttWorkGroupDayOffQVO.setSiteDescription(sPrimaryKey[3]); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttWorkGroupDayOffQVO.getWorkGroupCode())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAttWorkGroupDayOffQVO.getSiteCode())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTWORKGROUPDAYOFF.procHrAttWrkGrpDayOffDtlCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrAttWorkGroupDayOffDetail(HrmAttWorkGroupDayOffQVO oHrmAttWorkGroupDayOffQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttWorkGroupDayOffQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttWorkGroupDayOffQVO.setWorkGroupCode(sPrimaryKey[0]); + oHrmAttWorkGroupDayOffQVO.setSiteCode(sPrimaryKey[1]); + oHrmAttWorkGroupDayOffQVO.setWorkGroupDescription(sPrimaryKey[2]); + oHrmAttWorkGroupDayOffQVO.setSiteDescription(sPrimaryKey[3]); + } + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstAttWorkGroupDayoffDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAttWorkGroupDayOffQVO.getWorkGroupCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAttWorkGroupDayOffQVO.getSiteCode())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTWORKGROUPDAYOFF.procHrAttWrkGrpDayOffDtl(?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstAttWorkGroupDayoffDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmAttWorkGroupDayOffDtlBean oHrmAttWorkGroupDayOffDtlBean = new HrmAttWorkGroupDayOffDtlBean(); + oHrmAttWorkGroupDayOffDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtStartWeekDate(EnrgiseUtil.convertToString(oRow.get("START_EFFECT_DATE").getDate())); + oHrmAttWorkGroupDayOffDtlBean.setTxtEndWeekDate(EnrgiseUtil.convertToString(oRow.get("END_EFFECT_DATE").getDate())); + oHrmAttWorkGroupDayOffDtlBean.setTxtFirstRestDay(oRow.get("REST_DAY1").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtSecondRestDay(oRow.get("REST_DAY2").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtHalfDay1(oRow.get("HALF_DAY1").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtHalfDay2(oRow.get("HALF_DAY2").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtRestWeek1(oRow.get("REST_WEEK1").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtRestWeek2(oRow.get("REST_WEEK2").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtRestWeekDay1(oRow.get("REST_WEEK_DAY1").getString()); + oHrmAttWorkGroupDayOffDtlBean.setTxtRestWeekDay2(oRow.get("REST_WEEK_DAY2").getString()); + arylstAttWorkGroupDayoffDetail.add(oHrmAttWorkGroupDayOffDtlBean); + } + return arylstAttWorkGroupDayoffDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_WRKGRP_DAY_OFFS"; + } + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupDayOff")) + saveHrmAttWorkGroupDayOffDetail(oBaseHeaderBean, oDetailBeanArray); + } + + public String saveHrmAttWorkGroupDayOffDetail(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean1 = null; + DBUtilitiesBean oBean2 = null; + DBUtilitiesBean oBean3 = null; + HrmAttWorkGroupDayOffHdrBean oHrmAttWorkGroupDayOffHdrBean = (HrmAttWorkGroupDayOffHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmAttWorkGroupDayOffDtlBean oHrmAttWorkGroupDayOffDtlBean = itrBean.next(); + if (oHrmAttWorkGroupDayOffDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMATTWORKGROUPDAYOFF.procUpsertAttWrkGrpDayOffDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttWorkGroupDayOffHdrBean.getSiteId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAttWorkGroupDayOffHdrBean.getWorkGroupId())); + arylstParameters.add(new DBObject(4, 1, 12, null)); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupDayOffDtlBean.getTxtStartWeekDate()))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupDayOffDtlBean.getTxtEndWeekDate()))); + arylstParameters.add(new DBObject(7, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtFirstRestDay())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtSecondRestDay())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtHalfDay1())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtHalfDay2())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek1())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek2())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay1())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay2())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean1.addToBatch(arylstParameters); + continue; + } + if (oHrmAttWorkGroupDayOffDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean2 = new DBUtilitiesBean(); + oBean2.createBatch("HRMATTWORKGROUPDAYOFF.procUpsertAttWrkGrpDayOffDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttWorkGroupDayOffHdrBean.getSiteId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAttWorkGroupDayOffHdrBean.getWorkGroupId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getDetailId())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupDayOffDtlBean.getTxtStartWeekDate()))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupDayOffDtlBean.getTxtEndWeekDate()))); + arylstParameters.add(new DBObject(7, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtFirstRestDay())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtSecondRestDay())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtHalfDay1())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtHalfDay2())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek1())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek2())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay1())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay2())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean2.addToBatch(arylstParameters); + continue; + } + if (oHrmAttWorkGroupDayOffDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean3 = new DBUtilitiesBean(); + oBean3.createBatch("HRMATTWORKGROUPDAYOFF.procDelWrkGrpDayOff(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmAttWorkGroupDayOffDtlBean.getDetailId())); + oBean3.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean1.executeBatch(); + if (bUpdate) + oBean2.executeBatch(); + if (bDelete) + oBean3.executeBatch(); + return String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(oHrmAttWorkGroupDayOffHdrBean.getWorkGroupCode()).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttWorkGroupDayOffHdrBean.getSiteCode()))).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttWorkGroupDayOffHdrBean.getWorkGroupDescription()))).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttWorkGroupDayOffHdrBean.getSiteDescription())); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) { + HrmAttWorkGroupDayOffHdrBean oHrmAttWorkGroupDayOffHdrBean = (HrmAttWorkGroupDayOffHdrBean)oBaseHeaderBean; + checkMandatoryHeader(oHrmAttWorkGroupDayOffHdrBean, oErrorList); + } + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupDayOff")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmAttWorkGroupDayOffDtlBean oHrmAttWorkGroupDayOffDtlBean = oIt1.next(); + if (!oHrmAttWorkGroupDayOffDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmAttWorkGroupDayOffDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmAttWorkGroupDayOffHdrBean oHrmAttWorkGroupDayOffHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getWorkGroupCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWrkGrpDayOff.wrkGrpCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getSiteCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWrkGrpDayOff.siteCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryDtls(HrmAttWorkGroupDayOffDtlBean oHrmAttWorkGroupDayOffDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtFirstRestDay())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupDayOff.fstRstDay"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtStartWeekDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupDayOff.startWeekDt"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek1())) + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay1())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupDayOff.restWeekDay1"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek2())) + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay2())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupDayOff.restWeekDay2"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay1())) + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek1())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupDayOff.restWeek1"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeekDay2())) + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtRestWeek2())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupDayOff.restWeek2"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void saveDetailImpl(String param1, String param2, ArrayList param3) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupDayOff")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + int rowCount = 0; + while (oIt1.hasNext()) { + System.out.println(rowCount); + HrmAttWorkGroupDayOffDtlBean oHrmAttWorkGroupDayOffDtlBean = oIt1.next(); + if (!oHrmAttWorkGroupDayOffDtlBean.getStatus().equalsIgnoreCase("D")) { + checkDays(oHrmAttWorkGroupDayOffDtlBean, oList); + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtEndWeekDate())) + if (rowCount < n - 1) { + HrmAttWorkGroupDayOffDtlBean oHrmAttWorkGroupDayOffDtlBean1 = oDetailBeanArray.get(rowCount + 1); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean1.getTxtStartWeekDate())) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.period.value")); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtStartWeekDate())) + if (rowCount > 0 && rowCount < n) { + HrmAttWorkGroupDayOffDtlBean oHrmAttWorkGroupDayOffDtlBean1 = oDetailBeanArray.get(rowCount - 1); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean1.getTxtEndWeekDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttWorkGroupDayOffDtlBean.getTxtStartWeekDate(), oHrmAttWorkGroupDayOffDtlBean1.getTxtEndWeekDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.date.value")); + } + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffDtlBean.getTxtEndWeekDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttWorkGroupDayOffDtlBean.getTxtEndWeekDate(), oHrmAttWorkGroupDayOffDtlBean.getTxtStartWeekDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.corresdate.value")); + } + } else if (oHrmAttWorkGroupDayOffDtlBean.getStatus().equalsIgnoreCase("D")) { + HrmAttWorkGroupDayOffHdrBean oHrmAttWorkGroupDayOffHdrBean = (HrmAttWorkGroupDayOffHdrBean)oBaseHeaderBean; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttWorkGroupDayOffHdrBean.getWorkGroupId())); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupDayOffDtlBean.getTxtStartWeekDate()))); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTWORKGROUPDAYOFF.procGetShiftRstInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + if (oRecordMetaInfo.getRecordCount() > 0L) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.rst.value")); + } + rowCount++; + } + reportError(oList); + } + } + + public void checkDays(HrmAttWorkGroupDayOffDtlBean oDtlBean, ArrayList arylstList) throws EnrgiseSystemException, EnrgiseApplicationException { + String[] dayTypes = { oDtlBean.getTxtFirstRestDay(), oDtlBean.getTxtSecondRestDay(), oDtlBean.getTxtHalfDay1(), oDtlBean.getTxtHalfDay2(), oDtlBean.getTxtRestWeekDay1(), oDtlBean.getTxtRestWeekDay2() }; + System.out.println(dayTypes.length); + int count = 0; + for (int i = 0; i < dayTypes.length; i++) { + count++; + if (count <= dayTypes.length) + for (int j = count + 1; j <= dayTypes.length; j++) { + System.out.println(j); + System.out.println(count); + if (EnrgiseUtil.checkString(dayTypes[count - 1]) && EnrgiseUtil.checkString(dayTypes[j - 1])) + if (dayTypes[count - 1].equalsIgnoreCase(dayTypes[j - 1])) + arylstList.add(new EnrgiseApplicationException("wenrgise.hrms.att.holDayType.value")); + } + } + } + + public LovVO getHrmAttWorkGroupInsertLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("workGroupId"); + oHeaderList.add("hrm.HrmAttWrkGrpDayOff.wrkGrpCode"); + oHeaderList.add("hrm.HrmAttWrkGrpDayOff.wrkGrpDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("siteId") != null) { + siteId = oLovQueryVO.getProperty("siteId"); + System.out.println(siteId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, siteId)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(3, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMATTWORKGROUPDAYOFF.procGetAttWGDayOffILOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAttWorkGroupQueryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("workGroupId"); + oHeaderList.add("hrm.HrmAttWrkGrpDayOff.wrkGrpCode"); + oHeaderList.add("hrm.HrmAttWrkGrpDayOff.wrkGrpDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("siteId") != null) { + siteId = oLovQueryVO.getProperty("siteId"); + System.out.println(siteId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, siteId)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(3, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMATTWORKGROUPDAYOFF.procGetAttWGDayOffQLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmAttSiteQueryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("siteId"); + oHeaderList.add("hrm.HrmAttWrkGrpDayOff.siteCode"); + oHeaderList.add("hrm.HrmAttWrkGrpDayOff.siteDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMATTWORKGROUPDAYOFF.procGetAttSiteWGDayOffQLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupShiftBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupShiftBO.java new file mode 100644 index 0000000..ade230d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmAttWorkGroupShiftBO.java @@ -0,0 +1,585 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAttWorkGroupShiftDtlBean; +import wenrgise.hrms.bean.HrmAttWorkGroupShiftHdrBean; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; + +public class HrmAttWorkGroupShiftBO extends HrmBaseBO { + public HrmAttWorkGroupShiftBO() {} + + public HrmAttWorkGroupShiftBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmAttWGShiftDtlMetaInfo(HrmAttWorkGroupShiftQVO oHrmAttWorkGroupShiftQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttWorkGroupShiftQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttWorkGroupShiftQVO.setWrkGrpCode(sPrimaryKey[0]); + oHrmAttWorkGroupShiftQVO.setSiteCode(sPrimaryKey[1]); + oHrmAttWorkGroupShiftQVO.setWorkGroupDescription(sPrimaryKey[2]); + oHrmAttWorkGroupShiftQVO.setSiteDescription(sPrimaryKey[3]); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttWorkGroupShiftQVO.getWorkGroupId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmAttWorkGroupShiftQVO.getSiteId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAttWorkGroupShiftQVO.getStartDate())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAttWorkGroupShiftQVO.getEndDate())); + arylstParam.add(new DBObject(5, 2, -5)); + arylstParam.add(new DBObject(6, 2, 93)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTWRKGRPSHIFT.proc_HrAttWGSDtlCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmAttWGShiftDtlInfo(HrmAttWorkGroupShiftQVO oHrmAttWorkGroupShiftQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmAttWorkGroupShiftQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmAttWorkGroupShiftQVO.setWrkGrpCode(sPrimaryKey[0]); + oHrmAttWorkGroupShiftQVO.setSiteCode(sPrimaryKey[1]); + oHrmAttWorkGroupShiftQVO.setWorkGroupDescription(sPrimaryKey[2]); + oHrmAttWorkGroupShiftQVO.setSiteDescription(sPrimaryKey[3]); + } + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstAttWorkGroupDayoffDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmAttWorkGroupShiftQVO.getWorkGroupId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAttWorkGroupShiftQVO.getSiteId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmAttWorkGroupShiftQVO.getStartDate())); + arylstParam.add(new DBObject(6, 1, 12, oHrmAttWorkGroupShiftQVO.getEndDate())); + arylstParam.add(new DBObject(7, 2, -10)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTWRKGRPSHIFT.proc_HrAttWGSDtl(?,?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstAttWorkGroupDayoffDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmAttWorkGroupShiftDtlBean oHrmAttWorkGroupShiftDtlBean = new HrmAttWorkGroupShiftDtlBean(); + oHrmAttWorkGroupShiftDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmAttWorkGroupShiftDtlBean.setShiftCode(oRow.get("CODE").getString()); + oHrmAttWorkGroupShiftDtlBean.setShiftId(oRow.get("SHFT_MST_ID").getString()); + oHrmAttWorkGroupShiftDtlBean.setShiftBeginDate(EnrgiseUtil.convertToString(oRow.get("SHIFT_BEGIN_DATE").getDate())); + oHrmAttWorkGroupShiftDtlBean.setShiftEndDate(EnrgiseUtil.convertToString(oRow.get("SHIFT_END_DATE").getDate())); + arylstAttWorkGroupDayoffDetail.add(oHrmAttWorkGroupShiftDtlBean); + } + return arylstAttWorkGroupDayoffDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_WRKGRP_SHFT_DTL"; + } + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupShift")) + saveWGSImpl(oBaseHeaderBean, oDetailBeanArray); + } + + public String saveWGSImpl(BaseHeaderBean oBaseHeaderBean, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + HrmAttWorkGroupShiftHdrBean oHrmAttWorkGroupShiftHdrBean = (HrmAttWorkGroupShiftHdrBean)oBaseHeaderBean; + Iterator itrBean = oDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmAttWorkGroupShiftDtlBean oHrmAttWorkGroupShiftDtlBean = itrBean.next(); + if (oHrmAttWorkGroupShiftDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMATTWRKGRPSHIFT.proc_UpsertHrAttEmpShiftDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAttWorkGroupShiftHdrBean.getWorkGroupId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAttWorkGroupShiftHdrBean.getSiteId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmAttWorkGroupShiftDtlBean.getShiftId())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupShiftDtlBean.getShiftBeginDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupShiftDtlBean.getShiftEndDate()))); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmAttWorkGroupShiftDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMATTWRKGRPSHIFT.proc_UpsertHrAttEmpShiftDtl(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmAttWorkGroupShiftDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmAttWorkGroupShiftHdrBean.getWorkGroupId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmAttWorkGroupShiftHdrBean.getSiteId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmAttWorkGroupShiftDtlBean.getShiftId())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupShiftDtlBean.getShiftBeginDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupShiftDtlBean.getShiftEndDate()))); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmAttWorkGroupShiftDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMATTWRKGRPSHIFT.proc_DelWrkGrpShift(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmAttWorkGroupShiftDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + return String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(oHrmAttWorkGroupShiftHdrBean.getWorkGroupCode()).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttWorkGroupShiftHdrBean.getSiteCode()))).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttWorkGroupShiftHdrBean.getWorkGroupDescription()))).concat(String.valueOf(","))).concat(String.valueOf(oHrmAttWorkGroupShiftHdrBean.getSiteDescription())); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmAttWorkGroupShiftHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupShift")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmAttWorkGroupShiftDtlBean oHrmAttWorkGroupShiftDtlBean = oIt1.next(); + if (!oHrmAttWorkGroupShiftDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmAttWorkGroupShiftDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmAttWorkGroupShiftHdrBean oHrmAttWorkGroupShiftHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getWorkGroupCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupShift.workGroupCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupShift.siteCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmAttWorkGroupShiftDtlBean oHrmAttWorkGroupShiftDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupShiftDtlBean.getShiftBeginDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupShift.shiftBeginDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupShiftDtlBean.getShiftCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAttWorkGroupShift.shiftCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupShift")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + int rowCount = 0; + while (oIt1.hasNext()) { + System.out.println(rowCount); + HrmAttWorkGroupShiftDtlBean oHrmAttWorkGroupShiftDtlBean = oIt1.next(); + if (!oHrmAttWorkGroupShiftDtlBean.getStatus().equalsIgnoreCase("D")) { + if (!EnrgiseUtil.checkString(oHrmAttWorkGroupShiftDtlBean.getShiftEndDate())) + if (rowCount < n - 1) { + HrmAttWorkGroupShiftDtlBean oHrmAttWorkGroupShiftDtlBean1 = oDetailBeanArray.get(rowCount + 1); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftDtlBean1.getShiftBeginDate())) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.Enddate.value")); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftDtlBean.getShiftBeginDate())) + if (rowCount > 0 && rowCount < n) { + HrmAttWorkGroupShiftDtlBean oHrmAttWorkGroupShiftDtlBean1 = oDetailBeanArray.get(rowCount - 1); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftDtlBean1.getShiftEndDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttWorkGroupShiftDtlBean.getShiftBeginDate(), oHrmAttWorkGroupShiftDtlBean1.getShiftEndDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.BeginDate.value")); + } + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftDtlBean.getShiftEndDate())) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmAttWorkGroupShiftDtlBean.getShiftEndDate(), oHrmAttWorkGroupShiftDtlBean.getShiftBeginDate()); + if (dateFlag == -1 && dateFlag != -2) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.attEmp.corresdate.value")); + } + rowCount++; + continue; + } + if (oHrmAttWorkGroupShiftDtlBean.getStatus().equalsIgnoreCase("D")) { + HrmAttWorkGroupShiftHdrBean oHrmAttWorkGroupShiftHdrBean = (HrmAttWorkGroupShiftHdrBean)oBaseHeaderBean; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmAttWorkGroupShiftHdrBean.getWorkGroupId())); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmAttWorkGroupShiftDtlBean.getShiftBeginDate()))); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMATTWRKGRPSHIFT.proc_GetShiftRstInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + if (oRecordMetaInfo.getRecordCount() > 0L) + oList.add(new EnrgiseApplicationException("wenrgise.hrms.att.rst.value")); + } + } + reportError(oList); + } + } + + public void saveDetailImpl(String param1, String param2, ArrayList param3) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmAttWorkGrpCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("workGroupId"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.wrkGrpCode"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.workGroupDescription"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("siteId") != null) { + siteId = oLovQueryVO.getProperty("siteId"); + System.out.println(siteId); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, siteId)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(3, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTWRKGRPSHIFT.proc_GetAttWrkGrpCodeLovQmode(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("workGroupId"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.wrkGrpCode"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.workGroupDescription"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String siteId = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("siteId") != null) { + siteId = oLovQueryVO.getProperty("siteId"); + System.out.println(siteId); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, siteId)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(3, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTWRKGRPSHIFT.proc_GetAttWrkGrpCodeLovNmode(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpSiteCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("siteId"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.siteCode"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.siteDescription"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTWRKGRPSHIFT.proc_GetWrkGrpSiteCodeLovQmode(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpSiteCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("siteId"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.siteCode"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.siteDescription"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTWRKGRPSHIFT.proc_GetWrkGrpSiteCodeLovNmode(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpShiftCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("shiftId"); + oHeaderList.add("hrm.HrmAttWorkGroupShift.shiftCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMATTWRKGRPSHIFT.proc_GetWrkGrpShiftCodeLovN(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmBaseBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmBaseBO.java new file mode 100644 index 0000000..6d5e5b9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmBaseBO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.ejb.business; + +import java.util.ArrayList; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.business.BaseBO; + +public abstract class HrmBaseBO extends BaseBO { + public HrmBaseBO() {} + + public HrmBaseBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public abstract String saveNewHeaderImpl(BaseHeaderBean paramBaseHeaderBean) throws EnrgiseSystemException; + + public abstract void updateHeaderImpl(BaseHeaderBean paramBaseHeaderBean) throws EnrgiseSystemException; + + public abstract String saveHeaderImpl(BaseHeaderBean paramBaseHeaderBean, String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + public abstract void saveDetailImpl(String paramString1, String paramString2, ArrayList paramArrayList) throws EnrgiseSystemException; + + public abstract void initializeBOImpl(); +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmClaimMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmClaimMstBO.java new file mode 100644 index 0000000..a954638 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmClaimMstBO.java @@ -0,0 +1,618 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmClaimMstDtlBean; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.vo.HrmClaimMstQVO; + +public class HrmClaimMstBO extends HrmBaseBO { + public HrmClaimMstBO() {} + + public HrmClaimMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmClaimMstHdrMetaInfo(HrmClaimMstQVO oHrmClaimMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmClaimMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmClaimMstQVO.getClaimCodeId())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procHrmClaimMstHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmClaimMstHdrInfo(HrmClaimMstQVO oHrmClaimMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmClaimMstQVO == null) + oHrmClaimMstQVO = new HrmClaimMstQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmClaimMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmClaimMstQVO.getClaimCodeId())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procGetHrmClaimMstHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmClaimMstHdrBean oHrmClaimMstHdrBean = new HrmClaimMstHdrBean(); + oHrmClaimMstHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmClaimMstHdrBean.setClaimCode(oRow.get("CODE").getString()); + oHrmClaimMstHdrBean.setClaimName(oRow.get("NAME").getString()); + oHrmClaimMstHdrBean.setClaimCodeId(oRow.get("ID").getString()); + oHrmClaimMstHdrBean.setCalendarId(oRow.get("CAL_ID").getString()); + oHrmClaimMstHdrBean.setCalendarName(oRow.get("CALENDAR_TYPE").getString()); + oHrmClaimMstHdrBean.setDocReqFlag(String.valueOf(oRow.get("DOC_REQUIRED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmClaimMstHdrBean.setPayrollFlag(oRow.get("PAYROLL_FLAG").getString()); + oHeaderList.add(oHrmClaimMstHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmClaimMstDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procHrmClaimMstDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmClaimMstDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmClaimMstDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procGetHrmClaimMstDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmClaimMstDtl = new ArrayList(); + count++; + oRow = oIt.next(); + HrmClaimMstDtlBean oHrmClaimMstDtlBean = new HrmClaimMstDtlBean(); + oHrmClaimMstDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmClaimMstDtlBean.setTxtClaimDetailCode(oRow.get("DESCRIPTION").getString()); + oHrmClaimMstDtlBean.setTxtMaxCalLimit(oRow.get("MAX_CAL_LIMIT").getString()); + oHrmClaimMstDtlBean.setTxtGreaterLesserFlag(oRow.get("GREATER_LESSER_FLAG").getString()); + oHrmClaimMstDtlBean.setTxtMaxLimit(oRow.get("MAX_LIMIT").getString()); + oHrmClaimMstDtlBean.setTxtFlatAmount(oRow.get("FLAT_AMOUNT").getString()); + oHrmClaimMstDtlBean.setTxtEffectFromDate(EnrgiseUtil.convertToString(oRow.get("EFFECT_DATE").getDate())); + oHrmClaimMstDtlBean.setTxtEffectToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + oHrmClaimMstDtlBean.setTxtAppliedToAll(String.valueOf(oRow.get("ALL_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmClaimMstDtl.add(oHrmClaimMstDtlBean); + } + return oHrmClaimMstDtl; + } + + public LovVO getHrmClaimCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmClaimMst.claimCode"); + oHeaderList.add("hrm.HrmClaimMst.claimName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procGetClaimCodeLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void updateClaimMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSql)); + arylstParam.add(new DBObject(2, 1, 12, sId)); + arylstParam.add(new DBObject(3, 1, 12, sUserId)); + arylstParam.add(new DBObject(4, 1, 12, sUserSiteId)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procUpdateHrmClaimDtl(?,?,?,?,?,?,?)"); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_CLAIM_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmClaimMstHdrBean oHrmClaimMstHdrBean = (HrmClaimMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmClaimMstHdrBean.getClaimCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmClaimMstHdrBean.getClaimName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmClaimMstHdrBean.getCalendarId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmClaimMstHdrBean.getPayrollFlag())); + arylstParam.add(new DBObject(6, 1, 12, String.valueOf(oHrmClaimMstHdrBean.getDocReqFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, null)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procUpsertHrmClaimMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmClaimMstHdrBean.getClaimCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmClaimMstHdrBean.getClaimName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmClaimMstHdrBean.getCalendarId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmClaimMstHdrBean.getPayrollFlag())); + arylstParam.add(new DBObject(6, 1, 12, String.valueOf(oHrmClaimMstHdrBean.getDocReqFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, oHrmClaimMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST.procUpsertHrmClaimMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmClaimMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMCLAIMMST. (?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmClaimMst")) + saveHrmClaimMstDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmClaimMstDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + String applToEmp = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmClaimMstDtlBean oHrmClaimMstDtlBean = oIt.next(); + if (oHrmClaimMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMCLAIMMST.procUpsertHrmClaimDetail(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, String.valueOf(oHrmClaimMstDtlBean.getTxtAppliedToAll()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmClaimMstDtlBean.getTxtEffectFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmClaimMstDtlBean.getTxtEffectToDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmClaimMstDtlBean.getTxtGreaterLesserFlag())); + arylstParam.add(new DBObject(8, 1, 12, oHrmClaimMstDtlBean.getTxtClaimDetailCode())); + arylstParam.add(new DBObject(9, 1, 12, oHrmClaimMstDtlBean.getTxtMaxCalLimit())); + arylstParam.add(new DBObject(10, 1, 12, oHrmClaimMstDtlBean.getTxtMaxLimit())); + arylstParam.add(new DBObject(11, 1, 12, oHrmClaimMstDtlBean.getTxtFlatAmount())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmClaimMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMCLAIMMST.procUpsertHrmClaimDetail(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmClaimMstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, String.valueOf(oHrmClaimMstDtlBean.getTxtAppliedToAll()).equalsIgnoreCase("Y") ? "Y" : "N")); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmClaimMstDtlBean.getTxtEffectFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmClaimMstDtlBean.getTxtEffectToDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmClaimMstDtlBean.getTxtGreaterLesserFlag())); + arylstParam.add(new DBObject(8, 1, 12, oHrmClaimMstDtlBean.getTxtClaimDetailCode())); + arylstParam.add(new DBObject(9, 1, 12, oHrmClaimMstDtlBean.getTxtMaxCalLimit())); + arylstParam.add(new DBObject(10, 1, 12, oHrmClaimMstDtlBean.getTxtMaxLimit())); + arylstParam.add(new DBObject(11, 1, 12, oHrmClaimMstDtlBean.getTxtFlatAmount())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmClaimMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMCLAIMMST.procDeleteClaimMstDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmClaimMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmClaimMstHdrBean oHrmClaimMstHdrBean = (HrmClaimMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmClaimMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmClaimMst")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmClaimMstDtlBean oHrmClaimMstDtlBean = oIt1.next(); + if (!oHrmClaimMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmClaimMstDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmClaimMstHdrBean oHrmClaimMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmClaimMstHdrBean.getClaimCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.claimCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmClaimMstHdrBean.getPayrollFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.payrollFlag"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmClaimMstDtlBean oHrmClaimMstDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtClaimDetailCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.claimDetailCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtGreaterLesserFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.greaterLesserFlag"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmClaimMstDtlBean.getTxtGreaterLesserFlag().equalsIgnoreCase("G") || oHrmClaimMstDtlBean.getTxtGreaterLesserFlag().equalsIgnoreCase("L")) { + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtMaxLimit())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.maxLimit"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtFlatAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.amount"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtEffectFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.effectFromDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmClaimMstDtlBean.getTxtGreaterLesserFlag().equalsIgnoreCase("F")) + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtFlatAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.amount"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + private void checkDatesConstraint(HrmClaimMstDtlBean oHrmClaimMstDtlBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtEffectToDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmClaimMstDtlBean.getTxtEffectToDate(), oHrmClaimMstDtlBean.getTxtEffectFromDate()); + if (dateFlag == -1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("hrm.HrmClaimMst.dateError")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmClaimMstHdrBean oHrmClaimMstHdrBean = (HrmClaimMstHdrBean)oBaseHeaderBean; + if (sScreenMode.equalsIgnoreCase("D")) + ArrayList arrayList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmClaimMstHdrBean)oBaseHeaderBean); + } else { + checkIfDetailExist((HrmClaimMstHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmClaimMst")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmClaimMstDtlBean oHrmClaimMstDtlBean = oIt1.next(); + if (!oHrmClaimMstDtlBean.getStatus().equalsIgnoreCase("D")) { + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtClaimDetailCode", "hrm.HrmClaimMst.claimDetailCode", oErrorList, true); + checkUniqueDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + checkMaxLimit(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + checkDatesConstraint(oHrmClaimMstDtlBean, oErrorList); + checkAllEmployee(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + checkNumericDtlFields(oDetailBeanArray, oErrorList); + continue; + } + checkDetailChildRecord(oHrmClaimMstDtlBean); + } + reportError(oErrorList); + } + } + + private void checkAllEmployee(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + int allEmp = 1; + while (oIt1.hasNext()) { + HrmClaimMstDtlBean oHrmClaimMstDtlBean = oIt1.next(); + if (oHrmClaimMstDtlBean.getTxtAppliedToAll().equalsIgnoreCase("Y")) + allEmp++; + if (allEmp > 1 && rowCount > 1) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.loan.detail.allemployeeerror", oParam, "E"); + } + rowCount++; + } + reportError(oErrorList); + } + + private void checkNumericDtlFields(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmClaimMstDtlBean oHrmClaimMstDtlBean = oIt1.next(); + if (EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtMaxLimit())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.maxLimit"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmClaimMstDtlBean.getTxtMaxLimit(), 8, 9, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmClaimMstDtlBean.getTxtMaxLimit()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + count++; + } + reportError(oErrorList); + } + + private void checkDetailChildRecord(HrmClaimMstDtlBean oHrmClaimMstDtlBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkUniqueHeader(HrmClaimMstHdrBean oHrmClaimMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from hrm_claim_mst where code= '").concat(String.valueOf(oHrmClaimMstHdrBean.getClaimCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmClaimMstHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.claimCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.common.header.uniqueConstraintViolated", oParams, "E"); + } + } + } + + private void checkIfDetailExist(HrmClaimMstHdrBean oHrmClaimMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" Select claim_mst_id as ID from hrm_claim_dtl where claim_mst_id= ").concat(String.valueOf(oHrmClaimMstHdrBean.getHeaderPrimaryKey())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() > 0) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.loan.hdr.detailFound", oParam, "E"); + } + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmClaimMstDtlBean oHrmClaimMstDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getDetailId())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select id as ID from hrm_claim_dtl where description= '").concat(String.valueOf(oHrmClaimMstDtlBean.getTxtClaimDetailCode()))).concat(String.valueOf("' and claim_mst_id="))).concat(String.valueOf(sHeaderPrimaryKey)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.loanDetailCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams)); + } + } + rowCount++; + } + } + + private void checkMaxLimit(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + int iMaxLimit = 0; + int iFlatAmount = 0; + while (oIt1.hasNext()) { + HrmClaimMstDtlBean oHrmClaimMstDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oHrmClaimMstDtlBean.getTxtFlatAmount())) { + iMaxLimit = Integer.parseInt(oHrmClaimMstDtlBean.getTxtMaxCalLimit()); + iFlatAmount = Integer.parseInt(oHrmClaimMstDtlBean.getTxtFlatAmount()); + if (iMaxLimit < iFlatAmount) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmClaimMst.maxCalLimit"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmClaimMst.amountError", oParams)); + } + } + rowCount++; + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpClaimBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpClaimBO.java new file mode 100644 index 0000000..7032d21 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpClaimBO.java @@ -0,0 +1,697 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmEmpClaimDtlBean; +import wenrgise.hrms.bean.HrmEmpClaimHdrBean; +import wenrgise.hrms.vo.HrmEmpClaimQVO; + +public class HrmEmpClaimBO extends HrmBaseBO { + public HrmEmpClaimBO() {} + + public HrmEmpClaimBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpClaimDetailMetaInfo(HrmEmpClaimQVO oHrmEmpClaimQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + if (EnrgiseUtil.checkString(oHrmEmpClaimQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmEmpClaimQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmEmpClaimQVO.setClaimCodeId(sPrimaryKey[0]); + oHrmEmpClaimQVO.setStartDate(sPrimaryKey[1]); + oHrmEmpClaimQVO.setEndDate(sPrimaryKey[2]); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpClaimQVO.getEmpId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpClaimQVO.getClaimCodeId())); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimQVO.getStartDate()))); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimQVO.getEndDate()))); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpClaimQVO.getClaimNo())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpClaimQVO.getPeriod())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpClaimQVO.getEmpDtlId())); + arylstParam.add(new DBObject(8, 2, -5)); + arylstParam.add(new DBObject(9, 2, 93)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.procHrmEmpClaimDtlCount(?,?,?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpClaimDetail(HrmEmpClaimQVO oHrmEmpClaimQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + if (EnrgiseUtil.checkString(oHrmEmpClaimQVO.getHeaderPrimaryKey())) { + String[] sPrimaryKey = oHrmEmpClaimQVO.getHeaderPrimaryKey().split(","); + System.out.println(sPrimaryKey[0]); + System.out.println(sPrimaryKey[1]); + oHrmEmpClaimQVO.setClaimCodeId(sPrimaryKey[0]); + oHrmEmpClaimQVO.setStartDate(sPrimaryKey[1]); + oHrmEmpClaimQVO.setEndDate(sPrimaryKey[2]); + } + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstHrmEmpClaim = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpClaimQVO.getEmpId())); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(3, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpClaimQVO.getClaimCodeId())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimQVO.getStartDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimQVO.getEndDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpClaimQVO.getClaimNo())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpClaimQVO.getPeriod())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpClaimQVO.getEmpDtlId())); + arylstParam.add(new DBObject(10, 2, -10)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.prochrmempclaimdetail(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmEmpClaim = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmEmpClaimDtlBean oHrmEmpClaimDtlBean = new HrmEmpClaimDtlBean(); + oHrmEmpClaimDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpClaimDtlBean.setTxtApplnDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmEmpClaimDtlBean.setTxtApprovalDate(EnrgiseUtil.convertToString(oRow.get("SANCTION_DATE").getDate())); + oHrmEmpClaimDtlBean.setTxtAppliedAmount(oRow.get("APPLIED_AMOUNT").getString()); + oHrmEmpClaimDtlBean.setTxtApprovedAmount(oRow.get("SANCTIONED_AMOUNT").getString()); + oHrmEmpClaimDtlBean.setTxtApproverId(oRow.get("APPROVED_BY").getString()); + oHrmEmpClaimDtlBean.setTxtApprovedBy(oRow.get("APPROVER_NAME").getString()); + oHrmEmpClaimDtlBean.setTxtEligibleAmount(oRow.get("ELIG_AMT").getString()); + oHrmEmpClaimDtlBean.setTxtEmpId(oRow.get("E_PER_DTL_ID").getString()); + oHrmEmpClaimDtlBean.setTxtEmployeeName(oRow.get("EMPNAME").getString()); + oHrmEmpClaimDtlBean.setTxtEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmEmpClaimDtlBean.setTxtPayrollFlag(oRow.get("PAYROLL_FLAG").getString()); + oHrmEmpClaimDtlBean.setTxtReimbursementTillDate(oRow.get("REIMBURSED_TILL_DATE").getString()); + oHrmEmpClaimDtlBean.setTxtClaimDtlId(oRow.get("CLAIM_DTL_ID").getString()); + oHrmEmpClaimDtlBean.setTxtClaimCode(oRow.get("DESCRIPTION").getString()); + oHrmEmpClaimDtlBean.setTxtClaimNo(oRow.get("CLAIM_NO").getString()); + oHrmEmpClaimDtlBean.setTxtNewRemarks(oRow.get("APPROVER_REMARKS").getString()); + arylstHrmEmpClaim.add(oHrmEmpClaimDtlBean); + } + return arylstHrmEmpClaim; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_CLAIM_DTL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmEmpClaim")) + saveHrmEmpClaimDetail(oBaseHeaderBean, oDetailBeanArray); + } + + public String saveHrmEmpClaimDetail(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean1 = null; + DBUtilitiesBean oBean2 = null; + DBUtilitiesBean oBean3 = null; + HrmEmpClaimHdrBean oHrmEmpClaimHdrBean = (HrmEmpClaimHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpClaimDtlBean oHrmEmpClaimDtlBean = itrBean.next(); + String sEligibleAmount = calculateEligibleAmount(oHrmEmpClaimDtlBean); + String sReimbursedAmount = calculateReimbursedAmount(oHrmEmpClaimHdrBean.getPeriod(), oHrmEmpClaimDtlBean); + if (oHrmEmpClaimDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HrmEmpClaim.procupserthrmempclaimdtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmEmpClaimDtlBean.getTxtClaimDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, null)); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimDtlBean.getTxtApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimDtlBean.getTxtApprovalDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmEmpClaimDtlBean.getTxtAppliedAmount())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmEmpClaimDtlBean.getTxtApprovedAmount())); + arylstParameters.add(new DBObject(8, 1, 12, sEligibleAmount)); + arylstParameters.add(new DBObject(9, 1, 12, oHrmEmpClaimDtlBean.getTxtApproverId())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmEmpClaimDtlBean.getTxtEmpId())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmEmpClaimDtlBean.getTxtPayrollFlag())); + arylstParameters.add(new DBObject(12, 1, 12, sReimbursedAmount)); + arylstParameters.add(new DBObject(13, 1, 12, oHrmEmpClaimDtlBean.getTxtNewRemarks())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmEmpClaimHdrBean.getPeriod())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean1.addToBatch(arylstParameters); + continue; + } + if (oHrmEmpClaimDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean2 = new DBUtilitiesBean(); + oBean2.createBatch("HrmEmpClaim.procupserthrmempclaimdtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmEmpClaimDtlBean.getTxtClaimDtlId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmEmpClaimDtlBean.getDetailId())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimDtlBean.getTxtApplnDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimDtlBean.getTxtApprovalDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmEmpClaimDtlBean.getTxtAppliedAmount())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmEmpClaimDtlBean.getTxtApprovedAmount())); + arylstParameters.add(new DBObject(8, 1, 12, sEligibleAmount)); + arylstParameters.add(new DBObject(9, 1, 12, oHrmEmpClaimDtlBean.getTxtApproverId())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmEmpClaimDtlBean.getTxtEmpId())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmEmpClaimDtlBean.getTxtPayrollFlag())); + arylstParameters.add(new DBObject(12, 1, 12, sReimbursedAmount)); + arylstParameters.add(new DBObject(13, 1, 12, oHrmEmpClaimDtlBean.getTxtNewRemarks())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmEmpClaimHdrBean.getPeriod())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean2.addToBatch(arylstParameters); + continue; + } + if (oHrmEmpClaimDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean3 = new DBUtilitiesBean(); + oBean3.createBatch("HrmEmpClaim.procdeletehrmempclaimdtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmEmpClaimDtlBean.getDetailId())); + oBean3.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean1.executeBatch(); + if (bUpdate) + oBean2.executeBatch(); + if (bDelete) + oBean3.executeBatch(); + return String.valueOf(String.valueOf(String.valueOf(String.valueOf(oHrmEmpClaimHdrBean.getClaimCodeId()).concat(String.valueOf(","))).concat(String.valueOf(oHrmEmpClaimHdrBean.getStartDate()))).concat(String.valueOf(","))).concat(String.valueOf(oHrmEmpClaimHdrBean.getEndDate())); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmEmpClaim")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmEmpClaimDtlBean oHrmEmpClaimDtlBean = oIt1.next(); + if (!oHrmEmpClaimDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmEmpClaimDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmEmpClaimDtlBean oHrmEmpClaimDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtAppliedAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.txtAppliedAmount"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtApplnDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.txtApplnDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtApprovedAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.txtApprovedAmount"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtApprovalDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.txtApprovalDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtApproverId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.txtApprovedBy"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtPayrollFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.txtPayrollFlag"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtEmployeeNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.txtEmployeeNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtClaimDtlId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpClaim.claimCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + HrmEmpClaimHdrBean oHrmEmpClaimHdrBean = (HrmEmpClaimHdrBean)oBaseHeaderBean; + if (bDetailDataChanged) { + if (!isCheckDate(oHrmEmpClaimHdrBean.getPeriod())) { + ArrayList arylstParams = new ArrayList(); + oList.add(new EnrgiseMessageKeyException("hrm.HrmEmpClaim.notAllowed", arylstParams, "E")); + } + if (sScreenName.equalsIgnoreCase("HrmEmpClaim")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmEmpClaimDtlBean oHrmEmpClaimDtlBean = oIt1.next(); + if (oHrmEmpClaimDtlBean.getStatus().equalsIgnoreCase("N")) { + String sElig = calculateEligibleAmount(oHrmEmpClaimDtlBean); + String sReim = calculateReimbursedAmount(oHrmEmpClaimHdrBean.getPeriod(), oHrmEmpClaimDtlBean); + String sApp = oHrmEmpClaimDtlBean.getTxtAppliedAmount(); + String sSanc = oHrmEmpClaimDtlBean.getTxtApprovedAmount(); + double reimbTillDate = Double.parseDouble(sReim) - Double.parseDouble(sSanc); + if (Double.parseDouble(sElig) < Double.parseDouble(sReim)) { + MessageKey oMessageKey = new MessageKey(); + ArrayList oParams = new ArrayList(); + ArrayList oParams1 = new ArrayList(); + oParams.add(String.valueOf(rowCount)); + oParams1.add(String.valueOf(sElig)); + oParams1.add(String.valueOf(reimbTillDate)); + oList.add(new EnrgiseMessageKeyException("hrm.HrmEmpClaim.validate", oParams, "E")); + oList.add(new EnrgiseMessageKeyException("hrm.HrmEmpClaim.validate2", oParams1, "E")); + } + if (Double.parseDouble(sSanc) > Double.parseDouble(sApp)) { + MessageKey oMessageKey = new MessageKey(); + ArrayList oParams = new ArrayList(); + oParams.add(String.valueOf(rowCount)); + oList.add(new EnrgiseMessageKeyException("hrm.HrmEmpClaim.validate1", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpClaimDtlBean.getTxtApprovalDate())) + if (rowCount < n - 1) { + HrmEmpClaimDtlBean oHrmEmpClaimDtlBean1 = oDetailBeanArray.get(rowCount + 1); + if (EnrgiseUtil.checkString(oHrmEmpClaimDtlBean1.getTxtApplnDate())) + oList.add(new EnrgiseApplicationException("hrm.HrmEmpClaim.date.value")); + } + } + rowCount++; + } + reportError(oList); + } + } + } + + private boolean isCheckDate(String period) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBo = new HrmCommonBO(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, period)); + arylstParam.add(new DBObject(2, 2, 4)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.procCheckDate(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = !(iVal == 0); + return sReturnValue; + } + + public LovVO getHrmEmpClaimDtlCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpClaim.claimCode"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.procGetClaimCodeLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CLAIM_CODE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpClaimEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpClaim.txtEmployeeNo"); + arylstHeaderList.add("hrm.HrmEmpClaim.txtEmployeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sEmpId = new String(); + if (oLovQueryVO.getProperty("SelUser") != null) + sEmpId = oLovQueryVO.getProperty("SelUser"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.procGetEmpLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + private ArrayList checkLOVConstraint(ArrayList arylstList, LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LOVBean oLOVBean = null; + ArrayList arylstNewList = new ArrayList(); + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oLOVBean = itrBean.next(); + String sId = oLOVBean.getDetailField1(); + String sAllFlag = getAllFlagInfo(sId); + System.out.println(sAllFlag); + if (sAllFlag.equalsIgnoreCase("Y")) { + arylstNewList.add(oLOVBean); + continue; + } + String sClaimId = oLOVBean.getDetailField1(); + String sQuery = String.valueOf(" Select ELIG_SQL as ELIG_SQL from HRM_CLAIM_DTL where ID= ").concat(String.valueOf(sClaimId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList1 = oBean.executeQuery(sQuery); + Iterator itrBean1 = arylstList1.iterator(); + if (itrBean1.hasNext()) { + QueryRow oRow = itrBean1.next(); + String sSql = oRow.get("ELIG_SQL").getString(); + if (EnrgiseUtil.checkString(sSql)) { + String sEmpId = oLovQueryVO.getProperty("txtEmpId"); + StringBuffer s = new StringBuffer(sSql); + s.replace(s.lastIndexOf("?"), s.lastIndexOf("?") + 1, sEmpId); + System.out.println(s); + ArrayList arylstList2 = oBean.executeQuery(s.toString()); + if (arylstList2.size() != 0) + arylstNewList.add(oLOVBean); + } + } + } + return arylstNewList; + } + + public String getAllFlagInfo(String sAttrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sAllFlag = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sAttrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.proc_GetAllFlag(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = oList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sAllFlag = oRow.get("ALL_FLAG").getString(); + } + return sAllFlag; + } + + public LovVO getHrmEmpClaimCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpClaim.claimCode"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.procGetClaimCodeLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CLAIM_CODE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpClaimNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmEmpClaim.txtClaimNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPCLAIM.procGetClaimNoLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("CLAIM_NO").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + private String calculateEligibleAmount(HrmEmpClaimDtlBean oHrmEmpClaimDtlBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + ArrayList oList1 = new ArrayList(); + ArrayList oParameters1 = new ArrayList(); + ArrayList oOutArray1 = new ArrayList(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + QueryRow oRow1 = null; + String sEligAmount = new String(); + String sEligFactor = new String(); + String sFlatAmt = new String(); + String sMaxAmt = new String(); + String sClaimCodeId = oHrmEmpClaimDtlBean.getTxtClaimDtlId(); + int count2 = 0; + oParameters1 = new ArrayList(); + oParameters1.add(new DBObject(1, 1, 12, oHrmEmpClaimDtlBean.getTxtEmpId())); + oParameters1.add(new DBObject(2, 1, 12, sClaimCodeId)); + oParameters1.add(new DBObject(3, 2, -10)); + oParameters1.add(new DBObject(4, 2, 12)); + oParameters1.add(new DBObject(5, 2, 12)); + oParameters1.add(new DBObject(6, 2, 4)); + oOutArray1 = oBean1.callProc(oParameters1, "HRMEMPCLAIM.procCalculateEligAmt(?,?,?,?,?,?)"); + oList1 = (ArrayList)((DBObject)oOutArray1.get(0)).getObject(); + if (oList1.size() == 0) + return "0"; + count2 = 0; + Iterator oIt1 = oList1.iterator(); + while (oIt1.hasNext()) { + count2++; + oRow1 = oIt1.next(); + sEligFactor = oRow1.get("GREATER_LESSER_FLAG").getString(); + sFlatAmt = oRow1.get("FLAT_AMOUNT").getString(); + sMaxAmt = oRow1.get("MAX_AMT").getString(); + } + if (String.valueOf(oRow1.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("F")) + sEligAmount = sFlatAmt; + if (String.valueOf(oRow1.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("G")) + if (Integer.parseInt(sFlatAmt) > Integer.parseInt(sMaxAmt)) { + sEligAmount = sFlatAmt; + } else { + sEligAmount = sMaxAmt; + } + if (String.valueOf(oRow1.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("L")) + if (Integer.parseInt(sFlatAmt) < Integer.parseInt(sMaxAmt)) { + sEligAmount = sFlatAmt; + } else { + sEligAmount = sMaxAmt; + } + return sEligAmount; + } + + private String calculateReimbursedAmount(String period, HrmEmpClaimDtlBean oHrmEmpClaimDtlBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + ArrayList oList1 = new ArrayList(); + ArrayList oParameters1 = new ArrayList(); + ArrayList oOutArray1 = new ArrayList(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + QueryRow oRow1 = null; + String sReimAmount = new String(); + String sClaimCodeId = oHrmEmpClaimDtlBean.getTxtClaimDtlId(); + oParameters1 = new ArrayList(); + oParameters1.add(new DBObject(1, 1, 12, oHrmEmpClaimDtlBean.getTxtEmpId())); + oParameters1.add(new DBObject(2, 1, 12, sClaimCodeId)); + oParameters1.add(new DBObject(3, 1, 12, oHrmEmpClaimDtlBean.getTxtApprovedAmount())); + oParameters1.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpClaimDtlBean.getTxtApplnDate()))); + oParameters1.add(new DBObject(5, 1, 12, oHrmEmpClaimDtlBean.getDetailId())); + oParameters1.add(new DBObject(6, 1, 12, period)); + oParameters1.add(new DBObject(7, 2, 12)); + oParameters1.add(new DBObject(8, 2, 12)); + oParameters1.add(new DBObject(9, 2, 12)); + oParameters1.add(new DBObject(10, 2, 4)); + oOutArray1 = oBean1.callProc(oParameters1, "HRMEMPCLAIM.procCalculateReimbursedAmt(?,?,?,?,?,?,?,?,?,?)"); + DBObject oObj = oOutArray1.get(0); + sReimAmount = oObj.getObject().toString(); + return sReimAmount; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDepDtlBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDepDtlBO.java new file mode 100644 index 0000000..777725c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDepDtlBO.java @@ -0,0 +1,451 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmEmpDepDtlBean; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; + +public class HrmEmpDepDtlBO extends HrmBaseBO { + public HrmEmpDepDtlBO() {} + + public HrmEmpDepDtlBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpDepDtlHdrMetaInfo(HrmEmpDepDtlQVO oHrmEmpDepDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpDepDtlQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpDepDtlQVO.getEmployeeNo())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDEPDTL.proc_EmpDepHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpDepDtlHdrInfo(HrmEmpDepDtlQVO oHrmEmpDepDtlQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmEmpDepDtlQVO == null) + oHrmEmpDepDtlQVO = new HrmEmpDepDtlQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmEmpDepDtlQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpDepDtlQVO.getEmployeeNo())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDEPDTL.proc_GetEmpDepHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpDepHdrBean oEmployeeDependantDetailsHeader = new HrmEmpDepHdrBean(); + oEmployeeDependantDetailsHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oEmployeeDependantDetailsHeader.setEmployeeNo(oRow.get("EMP_NO").getString()); + oEmployeeDependantDetailsHeader.setEmployeeName(oRow.get("EMPNAME").getString()); + oHeaderList.add(oEmployeeDependantDetailsHeader); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmEmpDepDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDEPDTL.proc_EmpDepDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpDepDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmpDepDtlsDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDEPDTL.proc_GetEmpDepDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmEmpDepDtlsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpDepDtlBean oEmployeeDependantDetailsDtlBean = new HrmEmpDepDtlBean(); + oEmployeeDependantDetailsDtlBean.setDetailId(oRow.get("ID").getString()); + oEmployeeDependantDetailsDtlBean.setTxtRelationTypeId(oRow.get("reltn_mst_id").getString()); + oEmployeeDependantDetailsDtlBean.setTxtRelationType(oRow.get("NAME").getString()); + oEmployeeDependantDetailsDtlBean.setTxtDepName(oRow.get("DEPD_NAME").getString()); + oEmployeeDependantDetailsDtlBean.setTxtSex(oRow.get("SEX").getString()); + oEmployeeDependantDetailsDtlBean.setTxtDOB(EnrgiseUtil.convertToString(oRow.get("DOB").getDate())); + oEmployeeDependantDetailsDtlBean.setTxtOrgName(oRow.get("ORGANISATION_NAME").getString()); + oEmployeeDependantDetailsDtlBean.setTxtIncomeAmount(oRow.get("INCOME_AMOUNT").getString()); + oHrmEmpDepDtlsDetail.add(oEmployeeDependantDetailsDtlBean); + } + return oHrmEmpDepDtlsDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_PERS"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmEmpDepDtl")) + saveHrmEmpDependantDtl(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmEmpDependantDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmEmpDepDtlBean oHrmEmpDepDtlBean = oIt.next(); + if (oHrmEmpDepDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPDEPDTL.proc_UpsertHrEmpDepDtl(?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpDepDtlBean.getTxtRelationTypeId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpDepDtlBean.getTxtDepName())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDepDtlBean.getTxtDOB()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpDepDtlBean.getTxtSex())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpDepDtlBean.getTxtOrgName())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpDepDtlBean.getTxtIncomeAmount())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpDepDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPDEPDTL.proc_UpsertHrEmpDepDtl(?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpDepDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpDepDtlBean.getTxtRelationTypeId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpDepDtlBean.getTxtDepName())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDepDtlBean.getTxtDOB()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpDepDtlBean.getTxtSex())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpDepDtlBean.getTxtOrgName())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpDepDtlBean.getTxtIncomeAmount())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpDepDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPDEPDTL.proc_DeleteEmpDepDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpDepDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmEmpDepDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmEmpDepDtlBean oHrmEmpDepDtlBean = oIt1.next(); + if (!oHrmEmpDepDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDepDtlsDtls(oHrmEmpDepDtlBean, rowCount, arylstErrorList); + rowCount++; + } + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDepHdrBean oHrmEmpDepHdrBean = (HrmEmpDepHdrBean)oBaseHeaderBean; + ArrayList oList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmEmpDepDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int count = 0; + int countF = 0; + int countM = 0; + int countW = 0; + int countH = 0; + while (oIt1.hasNext()) { + HrmEmpDepDtlBean oHrmEmpDepDtlBean = oIt1.next(); + if (!oHrmEmpDepDtlBean.getStatus().equalsIgnoreCase("D")) { + String sRelType = oHrmEmpDepDtlBean.getTxtRelationType(); + if (sRelType.equalsIgnoreCase("FATHER")) { + countF++; + if (countF >= 2) + oList.add(new EnrgiseApplicationException("wenrgise.empDepDtl.father")); + continue; + } + if (sRelType.equalsIgnoreCase("MOTHER")) { + countM++; + if (countM >= 2) + oList.add(new EnrgiseApplicationException("wenrgise.empDepDtl.mother")); + continue; + } + if (sRelType.equalsIgnoreCase("WIFE")) { + countW++; + if (countW >= 2) + oList.add(new EnrgiseApplicationException("wenrgise.empDepDtl.wife")); + continue; + } + if (sRelType.equalsIgnoreCase("HUSBAND")) { + countH++; + if (countH >= 2) + oList.add(new EnrgiseApplicationException("wenrgise.empDepDtl.husband")); + } + } + } + } + reportError(oList); + } + + private void checkMandatoryDepDtlsDtls(HrmEmpDepDtlBean oHrmEmpDepDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmEmpDepDtlBean.getTxtRelationType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmployeeDependantDetails.relationType"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpDepDtlBean.getTxtDepName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmployeeDependantDetails.depName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpDepDtlBean.getTxtSex())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmployeeDependantDetails.sex"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpDepDtlBean.getTxtDOB())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmployeeDependantDetails.DOB"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + DateUtility d = new DateUtility(); + System.out.println(d.getSysDate()); + HrmCommonBO oBO = new HrmCommonBO(); + String sysDate = oBO.getddmmmyyyyDateFormat(d.getSysDate()); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpDepDtlBean.getTxtDOB(), sysDate); + if (dateFlag == 1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.dateOfBirth.dateConstraintViolated")); + reportError(arylstErrorList); + } + + public LovVO getHrmEmpDepDtlEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmployeeDependantDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmployeeDependantDetails.employeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPDEPDTL.procGetDepDtlsEmpLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmEmpDepDtlRelTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmEmployeeDependantDetails.code"); + oHeaderList.add("hrm.HrmEmployeeDependantDetails.relationType"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDEPDTL.proc_GetHrmRelationTypeLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDiscActionBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDiscActionBO.java new file mode 100644 index 0000000..8b2ae40 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpDiscActionBO.java @@ -0,0 +1,390 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmEmpDiscActionDtlBean; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; + +public class HrmEmpDiscActionBO extends HrmBaseBO { + public HrmEmpDiscActionBO() {} + + public HrmEmpDiscActionBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpDiscActionHdrMetaInfo(HrmEmpDiscActionQVO oHrmEmpDiscActionQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpDiscActionQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpDiscActionQVO.getEmployeeNo())); + arylstParam.add(new DBObject(3, 1, 12, oHrmEmpDiscActionQVO.getCaseFlag())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDISCACTION.procGetEmpDiscActionHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpDiscActionHdrInfo(HrmEmpDiscActionQVO oHrmEmpDiscActionQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmEmpDiscActionQVO == null) + oHrmEmpDiscActionQVO = new HrmEmpDiscActionQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmEmpDiscActionQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpDiscActionQVO.getEmployeeNo())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpDiscActionQVO.getCaseFlag())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDISCACTION.procGetEmpDiscActionHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpDiscActionHdrBean oEmployeeDependantDetailsHeader = new HrmEmpDiscActionHdrBean(); + oEmployeeDependantDetailsHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oEmployeeDependantDetailsHeader.setEmployeeNo(oRow.get("EMP_NO").getString()); + oEmployeeDependantDetailsHeader.setEmployeeName(oRow.get("EMPNAME").getString()); + oHeaderList.add(oEmployeeDependantDetailsHeader); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmEmpDiscActionMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDISCACTION.procHrmEmpDiscActionCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpDiscActionInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmpDiscActionsDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDISCACTION.procGetHrmEmpDiscActionDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmEmpDiscActionsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpDiscActionDtlBean oEmployeeDependantDetailsDtlBean = new HrmEmpDiscActionDtlBean(); + oEmployeeDependantDetailsDtlBean.setDetailId(oRow.get("ID").getString()); + oEmployeeDependantDetailsDtlBean.setTxtLocationId(oRow.get("SITE_ID").getString()); + oEmployeeDependantDetailsDtlBean.setTxtLocation(oRow.get("NAME").getString()); + oEmployeeDependantDetailsDtlBean.setTxtMisconduct(oRow.get("MISCONDUCT").getString()); + oEmployeeDependantDetailsDtlBean.setTxtFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oEmployeeDependantDetailsDtlBean.setTxtChrgShtDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + oEmployeeDependantDetailsDtlBean.setTxtActionTaken(oRow.get("ACTION_TAKEN").getString()); + oEmployeeDependantDetailsDtlBean.setTxtStatus(oRow.get("STATUS").getString()); + oEmployeeDependantDetailsDtlBean.setTxtStatusEffectDate(EnrgiseUtil.convertToString(oRow.get("STATUS_EFFECT_DATE").getDate())); + oEmployeeDependantDetailsDtlBean.setTxtRemarks(oRow.get("REMARKS").getString()); + oEmployeeDependantDetailsDtlBean.setTxtInqDate(EnrgiseUtil.convertToString(oRow.get("inquiry_date").getDate())); + oEmployeeDependantDetailsDtlBean.setTxtInqOfficer(oRow.get("inquiry_officer").getString()); + oEmployeeDependantDetailsDtlBean.setTxtActionOfficer(oRow.get("action_auth").getString()); + oEmployeeDependantDetailsDtlBean.setTxtAppealDate(EnrgiseUtil.convertToString(oRow.get("appeal_date").getDate())); + oHrmEmpDiscActionsDetail.add(oEmployeeDependantDetailsDtlBean); + } + return oHrmEmpDiscActionsDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_PERS"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmEmpDiscAction")) + saveHrmEmpDiscAction(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmEmpDiscAction(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmEmpDiscActionDtlBean oHrmEmpDiscActionDtlBean = oIt.next(); + if (oHrmEmpDiscActionDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPDISCACTION.procUpsertHrmEmpDiscAction(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpDiscActionDtlBean.getTxtLocationId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpDiscActionDtlBean.getTxtMisconduct())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtFromDate()))); + arylstParam.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtChrgShtDate()))); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpDiscActionDtlBean.getTxtActionTaken())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpDiscActionDtlBean.getTxtStatus())); + arylstParam.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtStatusEffectDate()))); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpDiscActionDtlBean.getTxtRemarks())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(14, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtInqDate()))); + arylstParam.add(new DBObject(15, 1, 12, oHrmEmpDiscActionDtlBean.getTxtInqOfficer())); + arylstParam.add(new DBObject(16, 1, 12, oHrmEmpDiscActionDtlBean.getTxtActionOfficer())); + arylstParam.add(new DBObject(17, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtAppealDate()))); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpDiscActionDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPDISCACTION.procUpsertHrmEmpDiscAction(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpDiscActionDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpDiscActionDtlBean.getTxtLocationId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpDiscActionDtlBean.getTxtMisconduct())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtFromDate()))); + arylstParam.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtChrgShtDate()))); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpDiscActionDtlBean.getTxtActionTaken())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpDiscActionDtlBean.getTxtStatus())); + arylstParam.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtStatusEffectDate()))); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpDiscActionDtlBean.getTxtRemarks())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(14, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtInqDate()))); + arylstParam.add(new DBObject(15, 1, 12, oHrmEmpDiscActionDtlBean.getTxtInqOfficer())); + arylstParam.add(new DBObject(16, 1, 12, oHrmEmpDiscActionDtlBean.getTxtActionOfficer())); + arylstParam.add(new DBObject(17, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpDiscActionDtlBean.getTxtAppealDate()))); + oBean.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmEmpDiscAction")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmEmpDiscActionDtlBean oHrmEmpDiscActionDtlBean = oIt1.next(); + if (!oHrmEmpDiscActionDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDiscDtl(oHrmEmpDiscActionDtlBean, rowCount, arylstErrorList); + rowCount++; + } + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDiscActionHdrBean oHrmEmpDiscActionHdrBean = (HrmEmpDiscActionHdrBean)oBaseHeaderBean; + ArrayList oList = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmEmpDiscAction")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmEmpDiscActionDtlBean oHrmEmpDiscActionDtlBean = oIt1.next(); + if (!oHrmEmpDiscActionDtlBean.getStatus().equalsIgnoreCase("D")) + checkDatesConstraintForDtl(oDetailBeanArray, arylstErrorList); + } + } + reportError(oList); + } + + private void checkDatesConstraintForDtl(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int n = arylstDetailBeanArray.size(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 0; + while (itrBean1.hasNext()) { + HrmEmpDiscActionDtlBean oHrmEmpDiscActionDtlBean = itrBean1.next(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpDiscActionDtlBean.getTxtFromDate(), oHrmEmpDiscActionDtlBean.getTxtToDate()); + if (dateFlag == 1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("hrm.startEndDate.dateConstraintViolated")); + } + reportError(arylstErrorList); + } + + private void checkMandatoryDiscDtl(HrmEmpDiscActionDtlBean oHrmEmpDiscActionDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmEmpDiscActionDtlBean.getTxtLocationId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpDiscAction.txtLocation"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpDiscActionDtlBean.getTxtFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpDiscAction.txtFromDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpDiscActionDtlBean.getTxtStatus())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpDiscAction.txtStatus"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + DateUtility d = new DateUtility(); + System.out.println(d.getSysDate()); + HrmCommonBO oBO = new HrmCommonBO(); + String sysDate = oBO.getddmmmyyyyDateFormat(d.getSysDate()); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpDiscActionDtlBean.getTxtFromDate(), sysDate); + if (dateFlag == 1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.dateOfMisconduct.dateConstraintViolated")); + reportError(arylstErrorList); + } + + public LovVO getHrmEmpDiscActionEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + return null; + } + + public LovVO getHrmEmpDiscActionSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmEmpDiscAction.txtLocation"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMEMPDISCACTION.procGetHrmEmpDiscSiteLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpPersBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpPersBO.java new file mode 100644 index 0000000..004127e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmEmpPersBO.java @@ -0,0 +1,4713 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmEmpPersAddDtlBean; +import wenrgise.hrms.bean.HrmEmpPersAssetDtlBean; +import wenrgise.hrms.bean.HrmEmpPersAwardDtlBean; +import wenrgise.hrms.bean.HrmEmpPersDtlsBean; +import wenrgise.hrms.bean.HrmEmpPersEduDtlBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHealthBean; +import wenrgise.hrms.bean.HrmEmpPersHstDtlBean; +import wenrgise.hrms.bean.HrmEmpPersInsDtlBean; +import wenrgise.hrms.bean.HrmEmpPersJoinInfDtlBean; +import wenrgise.hrms.bean.HrmEmpPersLngDtlBean; +import wenrgise.hrms.bean.HrmEmpPersPFDtlBean; +import wenrgise.hrms.bean.HrmEmpPersPriorExpDtlBean; +import wenrgise.hrms.bean.HrmEmpPersRefDtlBean; +import wenrgise.hrms.bean.HrmEmpPersTrngDtlsDtlBean; +import wenrgise.hrms.bean.HrmEmpWrkgrpDtlBean; +import wenrgise.hrms.bean.HrmOrgClassDtlBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.vo.HrmEmpPersQVO; + +public class HrmEmpPersBO extends HrmBaseBO { + public HrmEmpPersBO() {} + + public HrmEmpPersBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersHdrMetaInfo(HrmEmpPersQVO oHrmEmpPersQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersQVO.getEmpId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(3, 1, 12, oHrmEmpPersQVO.getEmployeeNo())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersHdrInfo(HrmEmpPersQVO oHrmEmpPersQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmEmpPersQVO == null) + oHrmEmpPersQVO = new HrmEmpPersQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmEmpPersQVO.getEmpId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersQVO.getEmployeeNo())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersHdrInfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + String draft = null; + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpPersHdrBean oHrmEmpPersHdrBean = new HrmEmpPersHdrBean(); + oHrmEmpPersHdrBean.setHeaderPrimaryKey(oRow.get("EMP_ID").getString()); + oHrmEmpPersHdrBean.setEmpNumberId(oRow.get("EMP_ID").getString()); + oHrmEmpPersHdrBean.setEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmEmpPersHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmEmpPersHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmEmpPersHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmEmpPersHdrBean.setPicturePath(oRow.get("PICTURE_PATH").getString()); + draft = oRow.get("DRAFT_FLAG").getString(); + if (draft.equalsIgnoreCase("Y")) { + oHrmEmpPersHdrBean.setDraftFlag("On"); + } else { + oHrmEmpPersHdrBean.setDraftFlag("Off"); + } + arylstHeaderList.add(oHrmEmpPersHdrBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmEmpPersDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersDtlsCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstEmpPerDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersDtlsInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpPerDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = new HrmEmpPersDtlsBean(); + oHrmEmpPersDtlsBean.setDetailId(oRow.get("EMP_ID").getString()); + oHrmEmpPersDtlsBean.setLocationId(oRow.get("LOCATION_ID").getString()); + oHrmEmpPersDtlsBean.setLocation(oRow.get("LOCATION").getString()); + oHrmEmpPersDtlsBean.setLocJoiningDate(EnrgiseUtil.convertToString(oRow.get("LOC_JOIN_DATE").getDate())); + oHrmEmpPersDtlsBean.setSex(oRow.get("SEX").getString()); + oHrmEmpPersDtlsBean.setGuardianName(oRow.get("GUARDIAN_NAME").getString()); + oHrmEmpPersDtlsBean.setDateOfBirth(EnrgiseUtil.convertToString(oRow.get("DOB").getDate())); + oHrmEmpPersDtlsBean.setPlaceOfBirth(oRow.get("PLACE_OF_BIRTH").getString()); + oHrmEmpPersDtlsBean.setBloodGroup(oRow.get("BLOOD_GROUP").getString()); + oHrmEmpPersDtlsBean.setIdMark(oRow.get("ID_MARKS").getString()); + oHrmEmpPersDtlsBean.setMobile(oRow.get("MOBILE").getString()); + oHrmEmpPersDtlsBean.setPersonalEmail(oRow.get("EMAIL").getString()); + String sMthTng = oRow.get("MOTHER_TONGUE").getString(); + if (sMthTng == null) { + oHrmEmpPersDtlsBean.setMotherTongue(""); + oHrmEmpPersDtlsBean.setMotherTongueCode(""); + } else { + String sLanguage = getLangInfo(sMthTng); + oHrmEmpPersDtlsBean.setMotherTongue(sLanguage); + oHrmEmpPersDtlsBean.setMotherTongueCode(sMthTng); + } + String sNat = oRow.get("NATIONALITY").getString(); + oHrmEmpPersDtlsBean.setNationalityCode(sNat); + if (sNat == null) { + oHrmEmpPersDtlsBean.setNationality(""); + } else { + String sNationality = getGlobalCodesInfo(sNat, "104"); + oHrmEmpPersDtlsBean.setNationality(sNationality); + } + String sMas = oRow.get("MARITAL_STATUS").getString(); + String sMaritalStatus = getGlobalCodesInfo(sMas, "25"); + if (sMas == null) { + oHrmEmpPersDtlsBean.setMaritalStatus(""); + } else { + oHrmEmpPersDtlsBean.setMaritalCode(sMas); + oHrmEmpPersDtlsBean.setMaritalStatus(sMaritalStatus); + } + String sQuery = String.valueOf("select count(*) as checkExist from HRM_EMP_DEPENDENTS where e_per_dtl_id= ").concat(String.valueOf(oHrmEmpPersDtlsBean.getDetailId())); + DBUtilitiesBean oBean3 = new DBUtilitiesBean(); + ArrayList arylstList11 = oBean3.executeQuery(sQuery); + Iterator itrBean11 = arylstList11.iterator(); + String chExist = null; + if (itrBean11.hasNext()) { + QueryRow oRow2 = itrBean11.next(); + chExist = oRow2.get("checkExist").getString(); + } + oHrmEmpPersDtlsBean.setDependants(chExist); + oHrmEmpPersDtlsBean.setReligionId(oRow.get("RLGN_MST_ID").getString()); + oHrmEmpPersDtlsBean.setReligion(oRow.get("REL_DESC").getString()); + oHrmEmpPersDtlsBean.setHandicappedFlag(oRow.get("HANDICAPPED_FLAG").getString()); + oHrmEmpPersDtlsBean.setPanNumber(oRow.get("PAN_NUMBER").getString()); + oHrmEmpPersDtlsBean.setGirNumber(oRow.get("GRATUITY_NUMBER").getString()); + oHrmEmpPersDtlsBean.setPfNumber(oRow.get("PF_NUMBER").getString()); + oHrmEmpPersDtlsBean.setSpouseName(oRow.get("SPOUSE_NAME").getString()); + oHrmEmpPersDtlsBean.setSpouseOccupation(oRow.get("SPOUSE_OCCUPATION").getString()); + oHrmEmpPersDtlsBean.setDrivingLicenseNo(oRow.get("DRIVING_LICENSE").getString()); + oHrmEmpPersDtlsBean.setValidUpto(EnrgiseUtil.convertToString(oRow.get("VALID_UPTO").getDate())); + oHrmEmpPersDtlsBean.setPassportNo(oRow.get("PASSPORT_NO").getString()); + oHrmEmpPersDtlsBean.setPlaceOfIssue(oRow.get("PLACE_ISSUE").getString()); + oHrmEmpPersDtlsBean.setPassportIssueDate(EnrgiseUtil.convertToString(oRow.get("PASSPORT_ISSUE_DATE").getDate())); + oHrmEmpPersDtlsBean.setPassportExpDate(EnrgiseUtil.convertToString(oRow.get("PASSPORT_EXPIRY_DATE").getDate())); + oHrmEmpPersDtlsBean.setRelatedEmpId(oRow.get("RELATED_EMPLOYEE_ID").getString()); + oHrmEmpPersDtlsBean.setRelatedEmployee(oRow.get("RELATED_EMPLOYEE").getString()); + oHrmEmpPersDtlsBean.setRelatedToEmployee(String.valueOf(oRow.get("RELATED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmEmpPersDtlsBean.setFlat(String.valueOf(oRow.get("FLAT_GIVEN").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmEmpPersDtlsBean.setAnniversaryDate(EnrgiseUtil.convertToString(oRow.get("anniversary_date").getDate())); + oHrmEmpPersDtlsBean.setMotherName(oRow.get("mother_name").getString()); + oHrmEmpPersDtlsBean.setScsmemershipNo(oRow.get("scsmemershipNo").getString()); + oHrmEmpPersDtlsBean.setGunLicenseNo(oRow.get("gun_license_no").getString()); + oHrmEmpPersDtlsBean.setGunLicenseRenDate(EnrgiseUtil.convertToString(oRow.get("gun_license_ren_date").getDate())); + oHrmEmpPersDtlsBean.setSpouseOrganization(oRow.get("Spouse_Organization").getString()); + oHrmEmpPersDtlsBean.setSpOrgType(oRow.get("Spouse_Organization_type").getString()); + oHrmEmpPersDtlsBean.setSpTransferable(oRow.get("SPOUSE_TRANSFERABLE").getString()); + oHrmEmpPersDtlsBean.setClubMembership(oRow.get("club_membership").getString()); + oHrmEmpPersDtlsBean.setUnionInfo(oRow.get("union_info").getString()); + oHrmEmpPersDtlsBean.setUanInfo(oRow.get("UAN_Details").getString()); + oHrmEmpPersDtlsBean.setAadharInfo(oRow.get("aadhar_No").getString()); + String incrDate = String.valueOf(oRow.get("INCR_EFFECT_DATE").getDate()); + if (incrDate.equalsIgnoreCase("null")) { + oHrmEmpPersDtlsBean.setLastPromotionDate(""); + } else { + oHrmEmpPersDtlsBean.setLastPromotionDate(EnrgiseUtil.convertToString(oRow.get("INCR_EFFECT_DATE").getDate())); + } + String sEmpid = oRow.get("EMP_ID").getString(); + ArrayList arylstClass = null; + String sScale = null; + String sGrade = null; + String sDesignation = null; + HrmOrgClassDtlBean def = null; + arylstClass = getHrEmpInfoByclass(sEmpid, "15"); + Iterator itrBean7 = arylstClass.iterator(); + while (itrBean7.hasNext()) { + def = itrBean7.next(); + sScale = def.getTxtDescription(); + } + arylstClass = getHrEmpInfoByclass(sEmpid, "10"); + Iterator itrBean2 = arylstClass.iterator(); + while (itrBean2.hasNext()) { + def = itrBean2.next(); + sDesignation = def.getTxtDescription(); + oHrmEmpPersDtlsBean.setDesignationId(def.getDetailId()); + oHrmEmpPersDtlsBean.setDesignation(sDesignation); + } + arylstClass = getHrEmpInfoByclass(sEmpid, "20"); + Iterator itrBean1 = arylstClass.iterator(); + while (itrBean1.hasNext()) { + def = itrBean1.next(); + sGrade = def.getTxtDescription(); + oHrmEmpPersDtlsBean.setGradeId(def.getDetailId()); + oHrmEmpPersDtlsBean.setGrade(sGrade); + } + arylstClass = getHrEmpInfoByclass(sEmpid, "40"); + Iterator itrBean5 = arylstClass.iterator(); + while (itrBean5.hasNext()) { + def = itrBean5.next(); + oHrmEmpPersDtlsBean.setSocialStatusId(def.getDetailId()); + oHrmEmpPersDtlsBean.setRsvCtg(def.getTxtDescription()); + } + HrmEmpWrkgrpDtlBean abc = null; + String sDepName = null; + String sRepEmpNo = null; + String sDeptid = null; + String sEmpId = null; + arylstClass = getHrEmpInfoByWrkGrp(sEmpid); + Iterator itrBean3 = arylstClass.iterator(); + while (itrBean3.hasNext()) { + abc = itrBean3.next(); + sDepName = abc.getName(); + sRepEmpNo = abc.getEmpNo(); + sDeptid = abc.getDetailId(); + sEmpId = abc.getReportingEmpId(); + } + if (arylstClass.size() != 0) { + oHrmEmpPersDtlsBean.setDepartmentId(sDeptid); + oHrmEmpPersDtlsBean.setDepartment(sDepName); + oHrmEmpPersDtlsBean.setReportingEmpId(sEmpId); + oHrmEmpPersDtlsBean.setReportingEmployee(sRepEmpNo); + } else { + oHrmEmpPersDtlsBean.setDepartmentId(""); + oHrmEmpPersDtlsBean.setDepartment(""); + oHrmEmpPersDtlsBean.setReportingEmpId(""); + oHrmEmpPersDtlsBean.setReportingEmployee(""); + } + arylstEmpPerDetail.add(oHrmEmpPersDtlsBean); + } + return arylstEmpPerDetail; + } + + public ArrayList getHrEmpInfoByclass(String sEmpId, String sClassType) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrClassDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sClassType)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procgetEmpInfoByClass(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstHrClassDetail = new ArrayList(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrClassDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmOrgClassDtlBean oClassDetailBean = new HrmOrgClassDtlBean(); + oClassDetailBean.setDetailId(oRow.get("ID").getString()); + oClassDetailBean.setTxtClassificationCode(oRow.get("CODE").getString()); + oClassDetailBean.setTxtDescription(oRow.get("NAME").getString()); + oClassDetailBean.setTxtHierarchy(oRow.get("HIERARCHY").getString()); + arylstHrClassDetail.add(oClassDetailBean); + } + return arylstHrClassDetail; + } + + public ArrayList getHrEmpInfoByWrkGrp(String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrWrkGrpDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.proc_GetWrkGrpByEmpId(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstHrWrkGrpDetail = new ArrayList(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrWrkGrpDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpWrkgrpDtlBean oHrmEmpWrkgrpDtlBean = new HrmEmpWrkgrpDtlBean(); + oHrmEmpWrkgrpDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpWrkgrpDtlBean.setReportingEmpId(oRow.get("REPORTING_EMP_ID").getString()); + oHrmEmpWrkgrpDtlBean.setName(oRow.get("NAME").getString()); + oHrmEmpWrkgrpDtlBean.setEmpNo(oRow.get("empname").getString()); + arylstHrWrkGrpDetail.add(oHrmEmpWrkgrpDtlBean); + } + return arylstHrWrkGrpDetail; + } + + public String getLangInfo(String sCode) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sLang = null; + ArrayList arylstLangDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sCode)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procGetMthTngInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstLangDetail = new ArrayList(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sLang = oRow.get("DESCRIPTION").getString(); + } + return sLang; + } + + public String getGlobalCodesInfo(String sCode, String sType) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sNat = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sCode)); + arylstParam.add(new DBObject(2, 1, 12, sType)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.proc_GetNatInfo(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sNat = oRow.get("GLOBAL_CODE_DESC").getString(); + } + return sNat; + } + + public RecordMetaInfo getHrmEmpPersAddDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersAddDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + Long count = new Long(((Long)oTotalRecord.getObject()).longValue()); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmPersAddDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstEmpPerAddDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(4L))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersAddDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + HrmEmpPersAddDtlBean oHrmEmployeePDDtlAddBean = new HrmEmpPersAddDtlBean(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpPerAddDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + String addressType = oRow.get("ADDRESS_TYPE").getString(); + oHrmEmployeePDDtlAddBean.setDetailId(oRow.get("EMP_ID").getString()); + if (addressType.equalsIgnoreCase("O")) { + oHrmEmployeePDDtlAddBean.setAddress(oRow.get("ADDRESS").getString()); + oHrmEmployeePDDtlAddBean.setCity(oRow.get("CITY").getString()); + oHrmEmployeePDDtlAddBean.setCountry(oRow.get("COUNTRY").getString()); + oHrmEmployeePDDtlAddBean.setEmail(oRow.get("EMAIL").getString()); + oHrmEmployeePDDtlAddBean.setExtension(oRow.get("PRI_EXTN").getString()); + oHrmEmployeePDDtlAddBean.setFax(oRow.get("FAX").getString()); + oHrmEmployeePDDtlAddBean.setMobileNo(oRow.get("MOBILE").getString()); + oHrmEmployeePDDtlAddBean.setPhone(oRow.get("PRI_PHONE").getString()); + oHrmEmployeePDDtlAddBean.setPinCode(oRow.get("PIN").getString()); + oHrmEmployeePDDtlAddBean.setState(oRow.get("STATE").getString()); + oHrmEmployeePDDtlAddBean.setSecPhone(oRow.get("SEC_PHONE").getString()); + oHrmEmployeePDDtlAddBean.setSecExtension(oRow.get("SEC_EXTN").getString()); + oHrmEmployeePDDtlAddBean.setDistrict(oRow.get("DISTRICT").getString()); + oHrmEmployeePDDtlAddBean.setTehsil(oRow.get("TEHSIL").getString()); + continue; + } + if (addressType.equalsIgnoreCase("P")) { + oHrmEmployeePDDtlAddBean.setPrAddress(oRow.get("ADDRESS").getString()); + oHrmEmployeePDDtlAddBean.setPrCity(oRow.get("CITY").getString()); + oHrmEmployeePDDtlAddBean.setPrCountry(oRow.get("COUNTRY").getString()); + oHrmEmployeePDDtlAddBean.setPrPhone(oRow.get("PRI_PHONE").getString()); + oHrmEmployeePDDtlAddBean.setPrPinCode(oRow.get("PIN").getString()); + oHrmEmployeePDDtlAddBean.setPrState(oRow.get("STATE").getString()); + oHrmEmployeePDDtlAddBean.setPrDistrict(oRow.get("DISTRICT").getString()); + oHrmEmployeePDDtlAddBean.setPrTehsil(oRow.get("TEHSIL").getString()); + continue; + } + if (addressType.equalsIgnoreCase("R")) { + oHrmEmployeePDDtlAddBean.setPeAddress(oRow.get("ADDRESS").getString()); + oHrmEmployeePDDtlAddBean.setPeCity(oRow.get("CITY").getString()); + oHrmEmployeePDDtlAddBean.setPeCountry(oRow.get("COUNTRY").getString()); + oHrmEmployeePDDtlAddBean.setPePhone(oRow.get("PRI_PHONE").getString()); + oHrmEmployeePDDtlAddBean.setPePinCode(oRow.get("PIN").getString()); + oHrmEmployeePDDtlAddBean.setPeState(oRow.get("STATE").getString()); + oHrmEmployeePDDtlAddBean.setPeDistrict(oRow.get("DISTRICT").getString()); + oHrmEmployeePDDtlAddBean.setPeTehsil(oRow.get("TEHSIL").getString()); + continue; + } + if (addressType.equalsIgnoreCase("H")) { + oHrmEmployeePDDtlAddBean.setHtAddress(oRow.get("ADDRESS").getString()); + oHrmEmployeePDDtlAddBean.setHtCity(oRow.get("CITY").getString()); + oHrmEmployeePDDtlAddBean.setHtCountry(oRow.get("COUNTRY").getString()); + oHrmEmployeePDDtlAddBean.setHtPhone(oRow.get("PRI_PHONE").getString()); + oHrmEmployeePDDtlAddBean.setHtPinCode(oRow.get("PIN").getString()); + oHrmEmployeePDDtlAddBean.setHtState(oRow.get("STATE").getString()); + oHrmEmployeePDDtlAddBean.setHtDistrict(oRow.get("DISTRICT").getString()); + oHrmEmployeePDDtlAddBean.setHtTehsil(oRow.get("TEHSIL").getString()); + } + } + arylstEmpPerAddDetail.add(oHrmEmployeePDDtlAddBean); + return arylstEmpPerAddDetail; + } + + public RecordMetaInfo getHrmEmpPersJoinInfMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersJoinInfoCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + Long count = new Long(((Long)oTotalRecord.getObject()).longValue()); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersJoinInfInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstEmpPerJoinInfoDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersJoinInfDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpPerJoinInfoDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpPersJoinInfDtlBean oHrmEmpPersJoinInfDtlBean = new HrmEmpPersJoinInfDtlBean(); + oHrmEmpPersJoinInfDtlBean.setDetailId(oRow.get("EMP_ID").getString()); + String comJoinDate = String.valueOf(oRow.get("COMP_JOIN_DATE").getDate()); + if (comJoinDate.equalsIgnoreCase("null")) { + oHrmEmpPersJoinInfDtlBean.setCompJoiningDate(""); + } else { + oHrmEmpPersJoinInfDtlBean.setCompJoiningDate(EnrgiseUtil.convertToString(oRow.get("COMP_JOIN_DATE").getDate())); + } + String tenConfDate = String.valueOf(oRow.get("TENTATIVE_CONF_DATE").getDate()); + if (tenConfDate.equalsIgnoreCase("null")) { + oHrmEmpPersJoinInfDtlBean.setTentativeConfDate(""); + } else { + oHrmEmpPersJoinInfDtlBean.setTentativeConfDate(EnrgiseUtil.convertToString(oRow.get("TENTATIVE_CONF_DATE").getDate())); + } + oHrmEmpPersJoinInfDtlBean.setBaseSiteId(oRow.get("BASE_SITE_ID").getString()); + oHrmEmpPersJoinInfDtlBean.setPlaceOfInitialPosting(oRow.get("SITE_NAME").getString()); + String sEntry = oRow.get("ENTRY_MODE").getString(); + if (sEntry == null) { + oHrmEmpPersJoinInfDtlBean.setEntryMode(""); + oHrmEmpPersJoinInfDtlBean.setEntryModeCode(sEntry); + } else { + String sEntryMode = getGlobalCodesInfo(sEntry, "103"); + oHrmEmpPersJoinInfDtlBean.setEntryMode(sEntryMode); + oHrmEmpPersJoinInfDtlBean.setEntryModeCode(sEntry); + } + oHrmEmpPersJoinInfDtlBean.setAccountingSite(oRow.get("ACCT_SITE_NAME").getString()); + oHrmEmpPersJoinInfDtlBean.setAccSiteId(oRow.get("ACC_SITE_ID").getString()); + String status = oRow.get("EMPLOYEE_TYPE").getString(); + if (status == null) { + oHrmEmpPersJoinInfDtlBean.setEmployeeStatusCode(""); + oHrmEmpPersJoinInfDtlBean.setEmployeeStatus(""); + } else { + oHrmEmpPersJoinInfDtlBean.setEmployeeStatusCode(status); + String statusDesc = getGlobalCodesInfo(status, "102"); + oHrmEmpPersJoinInfDtlBean.setEmployeeStatus(statusDesc); + } + oHrmEmpPersJoinInfDtlBean.setSeparationId(oRow.get("TYPE_OF_SEPERATION").getString()); + oHrmEmpPersJoinInfDtlBean.setSeparationType(oRow.get("sepdesc").getString()); + oHrmEmpPersJoinInfDtlBean.setBankCode(oRow.get("BANK_CODE").getString()); + oHrmEmpPersJoinInfDtlBean.setBankName(oRow.get("BANK_NAME").getString()); + oHrmEmpPersJoinInfDtlBean.setBranchName(oRow.get("BRANCH_NAME").getString()); + oHrmEmpPersJoinInfDtlBean.setBankId(oRow.get("BANK_ID").getString()); + oHrmEmpPersJoinInfDtlBean.setAccountNumber(oRow.get("ACCT_NO").getString()); + oHrmEmpPersJoinInfDtlBean.setCostId(oRow.get("COST_CENTER_ID").getString()); + oHrmEmpPersJoinInfDtlBean.setCostCentre(oRow.get("costcentre").getString()); + oHrmEmpPersJoinInfDtlBean.setJobRespId(oRow.get("jobRespCode").getString()); + oHrmEmpPersJoinInfDtlBean.setJobResp(oRow.get("jobResp").getString()); + oHrmEmpPersJoinInfDtlBean.setRefNo(oRow.get("REF_NO").getString()); + oHrmEmpPersJoinInfDtlBean.setOrderNo(oRow.get("ORDER_NO").getString()); + oHrmEmpPersJoinInfDtlBean.setOrderDate(EnrgiseUtil.convertToString(oRow.get("ORDER_DATE").getDate())); + String cheq = String.valueOf(oRow.get("CHEQUE_PAYMENT").getString()); + System.out.println(cheq); + if (cheq.equalsIgnoreCase("null")) + cheq = ""; + oHrmEmpPersJoinInfDtlBean.setPaymentType(cheq); + String retDate = String.valueOf(oRow.get("RETIREMENT_DATE").getDate()); + if (retDate.equalsIgnoreCase("null")) { + oHrmEmpPersJoinInfDtlBean.setRetirementDate(""); + } else { + oHrmEmpPersJoinInfDtlBean.setRetirementDate(EnrgiseUtil.convertToString(oRow.get("RETIREMENT_DATE").getDate())); + } + String statusDate = String.valueOf(oRow.get("STATUS_EFFECT_DATE").getDate()); + if (statusDate.equalsIgnoreCase("null")) { + oHrmEmpPersJoinInfDtlBean.setStatusEffectDate(""); + } else { + oHrmEmpPersJoinInfDtlBean.setStatusEffectDate(EnrgiseUtil.convertToString(oRow.get("STATUS_EFFECT_DATE").getDate())); + } + arylstEmpPerJoinInfoDetail.add(oHrmEmpPersJoinInfDtlBean); + } + return arylstEmpPerJoinInfoDetail; + } + + public RecordMetaInfo getHrmEmpPersEduDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersEduCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersEduDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstEmpPerEduDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPerDetEduDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpPerEduDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpPersEduDtlBean oHrmEmployePDEduDtlBean = new HrmEmpPersEduDtlBean(); + oHrmEmployePDEduDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmployePDEduDtlBean.setTxtSrlNo(oRow.get("SRL_NO").getString()); + oHrmEmployePDEduDtlBean.setTxtSchoolColInst(oRow.get("INST_CODE").getString()); + oHrmEmployePDEduDtlBean.setTxtQualificationId(oRow.get("QUAL_MST_ID").getString()); + oHrmEmployePDEduDtlBean.setTxtQualificationCode(oRow.get("QUAL_CODE").getString()); + oHrmEmployePDEduDtlBean.setTxtExamDegreePassed(oRow.get("NAME").getString()); + oHrmEmployePDEduDtlBean.setTxtPercentageDivision(oRow.get("PERC_MARKS").getString()); + oHrmEmployePDEduDtlBean.setTxtPassYear(oRow.get("PASS_YEAR").getString()); + oHrmEmployePDEduDtlBean.setTxtMajorSubjects(oRow.get("MAJOR_SUBJECTS").getString()); + oHrmEmployePDEduDtlBean.setTxtSpecialisation(oRow.get("SPECIALIZATION").getString()); + oHrmEmployePDEduDtlBean.setTxtOtherProfQualification(oRow.get("OTHER_QUAL").getString()); + oHrmEmployePDEduDtlBean.setTxtSpecialisedCourses(oRow.get("SPECIAL_COURSES_ATTENDED").getString()); + arylstEmpPerEduDetail.add(oHrmEmployePDEduDtlBean); + } + return arylstEmpPerEduDetail; + } + + public RecordMetaInfo getHrmEmpPersPriorExpMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersPriorExpCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersPriorExpInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstEmpPerPriorExpDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersPriorExpInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpPerPriorExpDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean = new HrmEmpPersPriorExpDtlBean(); + oHrmEmpPersPriorExpDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtOrgName(oRow.get("ORG_NAME").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtOrgAdd(oRow.get("LOCATION").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtFromDate(oRow.get("FROM_MMYYYY").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtToDate(oRow.get("TO_MMYYYY").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtWorkExp(oRow.get("WORK_EXPERIENCE").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtDesignation(oRow.get("DESIGNATION").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtReportTo(oRow.get("REPORT_TO").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtJobDesc(oRow.get("JOB_DESC").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtPersonnelSupervised(oRow.get("PERSONNEL_SUPERVISED").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtSalStarting(oRow.get("STARTING_SALARY").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtSalLeaving(oRow.get("LEAVING_SALARY").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtBasic(oRow.get("BASIC").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtDa(oRow.get("DA").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtHra(oRow.get("HRA").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtConveyance(oRow.get("CONV_ALLOWANCE").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtOtherAllowance(oRow.get("OTHERS_ALLOWANCES").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtIncentives(oRow.get("INCENTIVES").getString()); + oHrmEmpPersPriorExpDtlBean.setTxtBonus(oRow.get("BONUS").getString()); + arylstEmpPerPriorExpDetail.add(oHrmEmpPersPriorExpDtlBean); + } + return arylstEmpPerPriorExpDetail; + } + + public RecordMetaInfo getHrmEmpPerPFDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersPFCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersPFDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstEmpPerPFDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersPFInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpPerPFDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpPersPFDtlBean oHrmEmpPersPFDtlBean = new HrmEmpPersPFDtlBean(); + oHrmEmpPersPFDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersPFDtlBean.setTxtRelationId(oRow.get("RELA_ID").getString()); + oHrmEmpPersPFDtlBean.setTxtNomineeName(oRow.get("DEPD_NAME").getString()); + oHrmEmpPersPFDtlBean.setTxtNomineeId(oRow.get("RELA_ID").getString()); + oHrmEmpPersPFDtlBean.setTxtRelation(oRow.get("NAME").getString()); + oHrmEmpPersPFDtlBean.setTxtTotalAmount(oRow.get("TOTAL_FLAG").getString()); + oHrmEmpPersPFDtlBean.setTxtMinorDetails(oRow.get("MINOR_DETAILS").getString()); + oHrmEmpPersPFDtlBean.setTxtPercentage(oRow.get("PF_PER").getString()); + oHrmEmpPersPFDtlBean.setTxtDob(EnrgiseUtil.convertToString(oRow.get("DOB").getDate())); + oHrmEmpPersPFDtlBean.setTxtAddress(oRow.get("ADDRESS").getString()); + arylstEmpPerPFDetail.add(oHrmEmpPersPFDtlBean); + } + return arylstEmpPerPFDetail; + } + + public ArrayList getHrEmpScaleDesigId() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrClassHeader = null; + ArrayList arylstClassHeaderBean = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, -10)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procGetScaleDesigId(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstHrClassHeader = new ArrayList(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrClassHeader = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmOrgClassHdrBean oClassHeaderBean = new HrmOrgClassHdrBean(); + oClassHeaderBean.setDesigId(oRow.get("DSGN_MST_ID").getString()); + oClassHeaderBean.setScaleId(oRow.get("SCALE_MST_ID").getString()); + arylstHrClassHeader.add(oClassHeaderBean); + } + return arylstHrClassHeader; + } + + public RecordMetaInfo getHrmEmpPersEmpHistMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstClass = null; + String sScaleId = null; + String sDesignationId = null; + HrmOrgClassHdrBean def = null; + arylstClass = getHrEmpScaleDesigId(); + Iterator itrBean = arylstClass.iterator(); + while (itrBean.hasNext()) { + def = itrBean.next(); + sScaleId = def.getScaleId(); + sDesignationId = def.getDesigId(); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 1, 12, sDesignationId)); + arylstParam.add(new DBObject(3, 1, 12, sScaleId)); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersEmpHistCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersEmpHistInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstEmpPerHisDetail = null; + ArrayList arylstClass = null; + String sScaleId = null; + String sDesignationId = null; + HrmOrgClassHdrBean def = null; + arylstClass = getHrEmpScaleDesigId(); + Iterator itrBean = arylstClass.iterator(); + while (itrBean.hasNext()) { + def = itrBean.next(); + sScaleId = def.getScaleId(); + sDesignationId = def.getDesigId(); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, sDesignationId)); + arylstParam.add(new DBObject(5, 1, 12, sScaleId)); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersEmpHistInfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean4 = arylstParam.iterator(); + while (itrBean4.hasNext()) { + if (count == 0) + arylstEmpPerHisDetail = new ArrayList(); + count++; + oRow = (QueryRow)itrBean4.next(); + HrmEmpPersHstDtlBean oHrmEmpPersHstDtlBean = new HrmEmpPersHstDtlBean(); + oHrmEmpPersHstDtlBean.setDetailId(oRow.get("SRL_NO").getString()); + String effecDate = String.valueOf(oRow.get("EFFECTIVE_DATE").getDate()); + System.out.println(effecDate); + if (effecDate.equalsIgnoreCase("null")) { + oHrmEmpPersHstDtlBean.setTxtEffectiveDate(""); + } else { + oHrmEmpPersHstDtlBean.setTxtEffectiveDate(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_DATE").getDate())); + } + oHrmEmpPersHstDtlBean.setTxtFromDesig(oRow.get("FROM_DSGN").getString()); + oHrmEmpPersHstDtlBean.setTxtFromDesigId(oRow.get("FROM_DSGN_ID").getString()); + oHrmEmpPersHstDtlBean.setTxtToDesigId(oRow.get("TO_DSGN_ID").getString()); + oHrmEmpPersHstDtlBean.setTxtToDesig(oRow.get("TO_DSGN").getString()); + oHrmEmpPersHstDtlBean.setTxtFromGrade(oRow.get("FROM_GRADE").getString()); + oHrmEmpPersHstDtlBean.setTxtToGrade(oRow.get("TO_GRADE").getString()); + oHrmEmpPersHstDtlBean.setTxtFromLocation(oRow.get("FR_SITE").getString()); + oHrmEmpPersHstDtlBean.setTxtToLocation(oRow.get("TO_SITE").getString()); + oHrmEmpPersHstDtlBean.setTxtFromDepartment(oRow.get("FR_DEPT").getString()); + oHrmEmpPersHstDtlBean.setTxtToDepartment(oRow.get("TO_DEPT").getString()); + oHrmEmpPersHstDtlBean.setTxtFromBasic(oRow.get("BASIC").getString()); + oHrmEmpPersHstDtlBean.setTxtToBasic(oRow.get("TO_BASIC").getString()); + String prmFlag = String.valueOf(oRow.get("PROMOTION_FLAG").getString()); + if (prmFlag.equalsIgnoreCase("P")) { + oHrmEmpPersHstDtlBean.setTxtActivity("PROMOTION"); + } else if (prmFlag.equalsIgnoreCase("T")) { + oHrmEmpPersHstDtlBean.setTxtActivity("TRANSFER"); + } else if (prmFlag.equalsIgnoreCase("I")) { + oHrmEmpPersHstDtlBean.setTxtActivity("INCREMENT"); + } else if (prmFlag.equalsIgnoreCase("S")) { + oHrmEmpPersHstDtlBean.setTxtActivity("SEPARATION"); + } else if (prmFlag.equalsIgnoreCase("D")) { + oHrmEmpPersHstDtlBean.setTxtActivity("DEPUTATION"); + } + arylstEmpPerHisDetail.add(oHrmEmpPersHstDtlBean); + } + return arylstEmpPerHisDetail; + } + + public RecordMetaInfo getHrmEmpPersTrngDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersTrngDtlsCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersTrngDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmployeeTrng = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPPERDTL.procHrmEmpPersTrngDtlsInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + String temp = null; + while (oIt.hasNext()) { + if (count == 0) + oHrmEmployeeTrng = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpPersTrngDtlsDtlBean oHrmEmpPersTrngDtlBean = new HrmEmpPersTrngDtlsDtlBean(); + oHrmEmpPersTrngDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersTrngDtlBean.setTxtNameOfInst(oRow.get("INST_NAME").getString()); + oHrmEmpPersTrngDtlBean.setTxtCourseName(oRow.get("CourseName").getString()); + oHrmEmpPersTrngDtlBean.setTxtFromDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmEmpPersTrngDtlBean.setTxtToDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHrmEmpPersTrngDtlBean.setTxtCalendarName(oRow.get("CalName").getString()); + if (oRow.get("EMPLOYEE_RATING").getString() != null) { + oHrmEmpPersTrngDtlBean.setTxtRating(oRow.get("EMPLOYEE_RATING").getString()); + } else { + oHrmEmpPersTrngDtlBean.setTxtRating(""); + } + temp = oRow.get("NONPART_FLAG").getString(); + if (temp == null) { + oHrmEmpPersTrngDtlBean.setTxtParticipation("Off"); + } else if (temp.equalsIgnoreCase("N")) { + oHrmEmpPersTrngDtlBean.setTxtParticipation("Off"); + } else { + oHrmEmpPersTrngDtlBean.setTxtParticipation("On"); + } + if (oRow.get("NONPART_REASON").getString() != null) { + oHrmEmpPersTrngDtlBean.setTxtNonPart(oRow.get("NONPART_REASON").getString()); + } else { + oHrmEmpPersTrngDtlBean.setTxtNonPart(""); + } + oHrmEmployeeTrng.add(oHrmEmpPersTrngDtlBean); + } + return oHrmEmployeeTrng; + } + + public RecordMetaInfo getHrmEmpPersAwardMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersAwardDtlsCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersAwardInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmployeeAwd = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPPERDTL.procHrmEmpPersAwardInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + String temp = null; + while (oIt.hasNext()) { + if (count == 0) + oHrmEmployeeAwd = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpPersAwardDtlBean oHrmEmpPersAwardDtlBean = new HrmEmpPersAwardDtlBean(); + oHrmEmpPersAwardDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersAwardDtlBean.setTxtAwdName(oRow.get("AWARD_NAME").getString()); + oHrmEmpPersAwardDtlBean.setTxtAwdYear(oRow.get("AWARD_YEAR").getString()); + oHrmEmpPersAwardDtlBean.setTxtAwdField(oRow.get("AWARD_FIELD").getString()); + oHrmEmpPersAwardDtlBean.setTxtAwdDate(EnrgiseUtil.convertToString(oRow.get("AWARD_DATE").getDate())); + oHrmEmployeeAwd.add(oHrmEmpPersAwardDtlBean); + } + return oHrmEmployeeAwd; + } + + public RecordMetaInfo getHrmEmpPersInsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersInsDtlsCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersInsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmployeeIns = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPPERDTL.procHrmEmpPersInsInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + String temp = null; + while (oIt.hasNext()) { + if (count == 0) + oHrmEmployeeIns = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpPersInsDtlBean oHrmEmpPersInsDtlBean = new HrmEmpPersInsDtlBean(); + oHrmEmpPersInsDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersInsDtlBean.setInvDtls(oRow.get("INVESTMENT_DETAILS").getString()); + oHrmEmpPersInsDtlBean.setInvAmount(oRow.get("INVESTMENT_AMOUNT").getString()); + oHrmEmpPersInsDtlBean.setInvPolicyNo(oRow.get("POLICY_NO").getString()); + oHrmEmpPersInsDtlBean.setInvDate(EnrgiseUtil.convertToString(oRow.get("INVESTMENT_DATE").getDate())); + oHrmEmployeeIns.add(oHrmEmpPersInsDtlBean); + } + return oHrmEmployeeIns; + } + + public RecordMetaInfo getHrmEmpPersHealthMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersHealthCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersHealthInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmployeeHealth = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPPERDTL.procHrmEmpPersHealthInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + String temp = null; + while (oIt.hasNext()) { + if (count == 0) + oHrmEmployeeHealth = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpPersHealthBean oHrmEmpPersHealthBean = new HrmEmpPersHealthBean(); + oHrmEmpPersHealthBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersHealthBean.setHealthDtls(oRow.get("problem_details").getString()); + oHrmEmpPersHealthBean.setHealthStartDate(EnrgiseUtil.convertToString(oRow.get("start_date").getDate())); + oHrmEmpPersHealthBean.setHealthEndDate(EnrgiseUtil.convertToString(oRow.get("end_date").getDate())); + oHrmEmployeeHealth.add(oHrmEmpPersHealthBean); + } + return oHrmEmployeeHealth; + } + + public RecordMetaInfo getHrmEmpPersLngMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersLngCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersLngInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmployeeLng = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPPERDTL.procHrmEmpPersLngInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + String temp = null; + while (oIt.hasNext()) { + if (count == 0) + oHrmEmployeeLng = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpPersLngDtlBean oHrmEmpPersLngDtlBean = new HrmEmpPersLngDtlBean(); + oHrmEmpPersLngDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersLngDtlBean.setLngName(oRow.get("language_name").getString()); + oHrmEmpPersLngDtlBean.setLngSpeak(oRow.get("language_speak").getString()); + oHrmEmpPersLngDtlBean.setLngRead(oRow.get("language_read").getString()); + oHrmEmpPersLngDtlBean.setLngWrite(oRow.get("language_write").getString()); + oHrmEmployeeLng.add(oHrmEmpPersLngDtlBean); + } + return oHrmEmployeeLng; + } + + public RecordMetaInfo getHrmEmpPersRefMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersRefDtlsCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersRefInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmEmployeeRef = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPPERDTL.procHrmEmpPersRefInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + String temp = null; + while (oIt.hasNext()) { + if (count == 0) + oHrmEmployeeRef = new ArrayList(); + count++; + oRow = oIt.next(); + HrmEmpPersRefDtlBean oHrmEmpPersRefDtlBean = new HrmEmpPersRefDtlBean(); + oHrmEmpPersRefDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersRefDtlBean.setTxtName(oRow.get("REF_NAME").getString()); + oHrmEmpPersRefDtlBean.setTxtAddress(oRow.get("ADDRESS").getString()); + oHrmEmpPersRefDtlBean.setTxtPositionOccupation(oRow.get("POS_OCCUPATION").getString()); + oHrmEmpPersRefDtlBean.setTxtTelephoneNo(oRow.get("PHONE").getString()); + oHrmEmployeeRef.add(oHrmEmpPersRefDtlBean); + } + return oHrmEmployeeRef; + } + + public RecordMetaInfo getHrmEmpPersAssetMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersAssetDtlsCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpPersAssetInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arrEmpPersDtlAsset = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procHrmEmpPersAssetInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arrEmpPersDtlAsset = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmEmpPersAssetDtlBean oHrmEmpPersAssetDtlBean = new HrmEmpPersAssetDtlBean(); + oHrmEmpPersAssetDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmEmpPersAssetDtlBean.setFullAddress(oRow.get("FULL_ADDR").getString()); + oHrmEmpPersAssetDtlBean.setDetailOfProperty(oRow.get("PROP_DTL").getString()); + oHrmEmpPersAssetDtlBean.setCostOfConstruction(oRow.get("CONSTRUCTION_COST").getString()); + oHrmEmpPersAssetDtlBean.setYearOfPurchase(oRow.get("YEAR_OF_PURCHASE").getString()); + oHrmEmpPersAssetDtlBean.setPresentValue(oRow.get("PRESENT_VALUE").getString()); + oHrmEmpPersAssetDtlBean.setNameHeld(oRow.get("NAME_HELD").getString()); + oHrmEmpPersAssetDtlBean.setHowAquired(oRow.get("HOW_ACQUIRED").getString()); + oHrmEmpPersAssetDtlBean.setDetailOfPerson(oRow.get("DTL_PERSON_ACQUIRED").getString()); + oHrmEmpPersAssetDtlBean.setTotalIncome(oRow.get("TOTAL_INCOME").getString()); + oHrmEmpPersAssetDtlBean.setRemarks(oRow.get("REMARKS").getString()); + arrEmpPersDtlAsset.add(oHrmEmpPersAssetDtlBean); + } + return arrEmpPersDtlAsset; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_PERS"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmEmpPersHdrBean oHrmEmpPersHdrBean = (HrmEmpPersHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersHdrBean.getFirstName())); + arylstParam.add(new DBObject(3, 1, 12, oHrmEmpPersHdrBean.getMiddleName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersHdrBean.getLastName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersHdrBean.getEmployeeNo())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(8, 1, 12, null)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procUpsertHrmEmpPersHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersHdrBean.getFirstName())); + arylstParam.add(new DBObject(3, 1, 12, oHrmEmpPersHdrBean.getMiddleName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersHdrBean.getLastName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersHdrBean.getEmployeeNo())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procUpsertHrmEmpPersHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) { + saveHrmEmpPDAddDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) { + saveHrmEmpPDJoinDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersEmpHst")) { + saveHrmEmpPDEmpHist(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) { + saveHrmEmpPDEmpPF(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) { + saveHrmEmpPDEmpEdu(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) { + saveHrmEmpPDEmpPriorExp(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersAward")) { + saveHrmEmpPDAwdDtls(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersIns")) { + saveHrmEmpPDInsDtls(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersHealth")) { + saveHrmEmpPDHealth(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersLng")) { + saveHrmEmpPDLng(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) { + saveHrmEmpPDRefDtls(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) { + saveHrmEmpPerDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmEmpPersAsset")) { + saveHrmEmpAssetDtls(sHeaderPrimaryKey, arylstDetailBeanArray); + } + } + + private void saveHrmEmpPDAddDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + String metro = null; + while (itrBean.hasNext()) { + HrmEmpPersAddDtlBean oHrmEmpPersAddDtlBean = itrBean.next(); + if (oHrmEmpPersAddDtlBean.getStatus().equals("U") || oHrmEmpPersAddDtlBean.getStatus().equals("N") || oHrmEmpPersAddDtlBean.getStatus().equals("Q")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrEmpPersAdd(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersAddDtlBean.getAddress())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersAddDtlBean.getCity())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersAddDtlBean.getState())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersAddDtlBean.getCountry())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersAddDtlBean.getPinCode())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersAddDtlBean.getPhone())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersAddDtlBean.getExtension())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersAddDtlBean.getSecPhone())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersAddDtlBean.getSecExtension())); + arylstParam.add(new DBObject(13, 1, 12, oHrmEmpPersAddDtlBean.getMobileNo())); + arylstParam.add(new DBObject(14, 1, 12, oHrmEmpPersAddDtlBean.getEmail())); + arylstParam.add(new DBObject(15, 1, 12, oHrmEmpPersAddDtlBean.getFax())); + arylstParam.add(new DBObject(16, 1, 12, oHrmEmpPersAddDtlBean.getPrAddress())); + arylstParam.add(new DBObject(17, 1, 12, oHrmEmpPersAddDtlBean.getPrCity())); + arylstParam.add(new DBObject(18, 1, 12, oHrmEmpPersAddDtlBean.getPrState())); + arylstParam.add(new DBObject(19, 1, 12, oHrmEmpPersAddDtlBean.getPrCountry())); + arylstParam.add(new DBObject(20, 1, 12, oHrmEmpPersAddDtlBean.getPrPinCode())); + arylstParam.add(new DBObject(21, 1, 12, oHrmEmpPersAddDtlBean.getPrPhone())); + arylstParam.add(new DBObject(22, 1, 12, oHrmEmpPersAddDtlBean.getPeAddress())); + arylstParam.add(new DBObject(23, 1, 12, oHrmEmpPersAddDtlBean.getPeCity())); + arylstParam.add(new DBObject(24, 1, 12, oHrmEmpPersAddDtlBean.getPeState())); + arylstParam.add(new DBObject(25, 1, 12, oHrmEmpPersAddDtlBean.getPeCountry())); + arylstParam.add(new DBObject(26, 1, 12, oHrmEmpPersAddDtlBean.getPePinCode())); + arylstParam.add(new DBObject(27, 1, 12, oHrmEmpPersAddDtlBean.getPePhone())); + arylstParam.add(new DBObject(28, 1, 12, oHrmEmpPersAddDtlBean.getHtAddress())); + arylstParam.add(new DBObject(29, 1, 12, oHrmEmpPersAddDtlBean.getHtCity())); + arylstParam.add(new DBObject(30, 1, 12, oHrmEmpPersAddDtlBean.getHtState())); + arylstParam.add(new DBObject(31, 1, 12, oHrmEmpPersAddDtlBean.getHtCountry())); + arylstParam.add(new DBObject(32, 1, 12, oHrmEmpPersAddDtlBean.getHtPinCode())); + arylstParam.add(new DBObject(33, 1, 12, oHrmEmpPersAddDtlBean.getHtPhone())); + arylstParam.add(new DBObject(34, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(35, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(36, 1, 12, oHrmEmpPersAddDtlBean.getDistrict())); + arylstParam.add(new DBObject(37, 1, 12, oHrmEmpPersAddDtlBean.getTehsil())); + arylstParam.add(new DBObject(38, 1, 12, oHrmEmpPersAddDtlBean.getPrDistrict())); + arylstParam.add(new DBObject(39, 1, 12, oHrmEmpPersAddDtlBean.getPrTehsil())); + arylstParam.add(new DBObject(40, 1, 12, oHrmEmpPersAddDtlBean.getPeDistrict())); + arylstParam.add(new DBObject(41, 1, 12, oHrmEmpPersAddDtlBean.getPeTehsil())); + arylstParam.add(new DBObject(42, 1, 12, oHrmEmpPersAddDtlBean.getHtDistrict())); + arylstParam.add(new DBObject(43, 1, 12, oHrmEmpPersAddDtlBean.getHtTehsil())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmEmpPDJoinDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersJoinInfDtlBean oHrmEmpPersJoinInfDtlBean = itrBean.next(); + if (oHrmEmpPersJoinInfDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersJoinInf(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersJoinInfDtlBean.getCompJoiningDate()))); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersJoinInfDtlBean.getTentativeConfDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersJoinInfDtlBean.getRetirementDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersJoinInfDtlBean.getBaseSiteId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersJoinInfDtlBean.getBankCode())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersJoinInfDtlBean.getEntryModeCode())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersJoinInfDtlBean.getAccountNumber())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersJoinInfDtlBean.getEmployeeStatusCode())); + arylstParam.add(new DBObject(12, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersJoinInfDtlBean.getStatusEffectDate()))); + arylstParam.add(new DBObject(13, 1, 12, oHrmEmpPersJoinInfDtlBean.getSeparationId())); + arylstParam.add(new DBObject(14, 1, 12, oHrmEmpPersJoinInfDtlBean.getBranchName())); + arylstParam.add(new DBObject(15, 1, 12, oHrmEmpPersJoinInfDtlBean.getBankId())); + arylstParam.add(new DBObject(16, 1, 12, oHrmEmpPersJoinInfDtlBean.getCostId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmEmpPersJoinInfDtlBean.getAccSiteId())); + arylstParam.add(new DBObject(18, 1, 12, oHrmEmpPersJoinInfDtlBean.getPaymentType())); + arylstParam.add(new DBObject(19, 1, 12, oHrmEmpPersJoinInfDtlBean.getJobRespId())); + arylstParam.add(new DBObject(20, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(21, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmEmpPDEmpHist(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + private void saveHrmEmpPDEmpPF(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersPFDtlBean oHrmEmpPersPFDtlBean = itrBean.next(); + if (oHrmEmpPersPFDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersPF(?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersPFDtlBean.getTxtRelationId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersPFDtlBean.getTxtDob())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersPFDtlBean.getTxtAddress())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersPFDtlBean.getTxtPercentage())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersPFDtlBean.getTxtTotalAmount())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersPFDtlBean.getTxtMinorDetails())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersPFDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersPF(?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersPFDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersPFDtlBean.getTxtRelationId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersPFDtlBean.getTxtDob())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersPFDtlBean.getTxtAddress())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersPFDtlBean.getTxtPercentage())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersPFDtlBean.getTxtTotalAmount())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersPFDtlBean.getTxtMinorDetails())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersPFDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersPF(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersPFDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmEmpPDEmpEdu(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersEduDtlBean oHrmEmpPersEduDtlBean = itrBean.next(); + if (oHrmEmpPersEduDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersEdu(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersEduDtlBean.getTxtSrlNo())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersEduDtlBean.getTxtSchoolColInst())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersEduDtlBean.getTxtQualificationId())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersEduDtlBean.getTxtPercentageDivision())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersEduDtlBean.getTxtPassYear())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersEduDtlBean.getTxtMajorSubjects())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersEduDtlBean.getTxtSpecialisation())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersEduDtlBean.getTxtOtherProfQualification())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersEduDtlBean.getTxtSpecialisedCourses())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersEduDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersEdu(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersEduDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersEduDtlBean.getTxtSrlNo())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersEduDtlBean.getTxtSchoolColInst())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersEduDtlBean.getTxtQualificationId())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersEduDtlBean.getTxtPercentageDivision())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersEduDtlBean.getTxtPassYear())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersEduDtlBean.getTxtMajorSubjects())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersEduDtlBean.getTxtSpecialisation())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersEduDtlBean.getTxtOtherProfQualification())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersEduDtlBean.getTxtSpecialisedCourses())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmEmpPDEmpPriorExp(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + String sWorkExp = new String(); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean = itrBean.next(); + sWorkExp = CalculateWorkExp(oHrmEmpPersPriorExpDtlBean); + if (oHrmEmpPersPriorExpDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersPriorExp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtFromDate())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtToDate())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtOrgName())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtOrgAdd())); + arylstParam.add(new DBObject(8, 1, 12, sWorkExp)); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtDesignation())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtReportTo())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtJobDesc())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtPersonnelSupervised())); + arylstParam.add(new DBObject(13, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtSalStarting())); + arylstParam.add(new DBObject(14, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtSalLeaving())); + arylstParam.add(new DBObject(15, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtBasic())); + arylstParam.add(new DBObject(16, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtDa())); + arylstParam.add(new DBObject(17, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtHra())); + arylstParam.add(new DBObject(18, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtConveyance())); + arylstParam.add(new DBObject(19, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtOtherAllowance())); + arylstParam.add(new DBObject(20, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtIncentives())); + arylstParam.add(new DBObject(21, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtBonus())); + arylstParam.add(new DBObject(22, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(23, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersPriorExpDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersPriorExp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersPriorExpDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtFromDate())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtToDate())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtOrgName())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtOrgAdd())); + arylstParam.add(new DBObject(8, 1, 12, sWorkExp)); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtDesignation())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtReportTo())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtJobDesc())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtPersonnelSupervised())); + arylstParam.add(new DBObject(13, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtSalStarting())); + arylstParam.add(new DBObject(14, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtSalLeaving())); + arylstParam.add(new DBObject(15, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtBasic())); + arylstParam.add(new DBObject(16, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtDa())); + arylstParam.add(new DBObject(17, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtHra())); + arylstParam.add(new DBObject(18, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtConveyance())); + arylstParam.add(new DBObject(19, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtOtherAllowance())); + arylstParam.add(new DBObject(20, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtIncentives())); + arylstParam.add(new DBObject(21, 1, 12, oHrmEmpPersPriorExpDtlBean.getTxtBonus())); + arylstParam.add(new DBObject(22, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(23, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersPriorExpDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersPriorExp(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersPriorExpDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private String CalculateWorkExp(HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + int iFromDate = 0; + int iFromYear = 0; + int iToDate = 0; + int iToYear = 0; + int iExp = 0; + int iNewToDate = 0; + if (EnrgiseUtil.checkString(oHrmEmpPersPriorExpDtlBean.getTxtFromDate())) { + iFromDate = Integer.parseInt(oHrmEmpPersPriorExpDtlBean.getTxtFromDate().substring(0, 2)); + iFromYear = Integer.parseInt(oHrmEmpPersPriorExpDtlBean.getTxtFromDate().substring(2, 6)); + } + if (EnrgiseUtil.checkString(oHrmEmpPersPriorExpDtlBean.getTxtToDate())) { + iToDate = Integer.parseInt(oHrmEmpPersPriorExpDtlBean.getTxtToDate().substring(0, 2)); + iToYear = Integer.parseInt(oHrmEmpPersPriorExpDtlBean.getTxtToDate().substring(2, 6)); + } + if (iToDate < iFromDate) { + iNewToDate = iToDate + 12; + if (iToYear > iFromYear) { + iExp = (iToYear - iFromYear) * 12 + iNewToDate - iFromDate - 12; + } else if (iToYear == iFromYear) { + iExp = iNewToDate - iFromDate; + } + } else if (iToDate > iFromDate) { + if (iToYear > iFromYear) { + iExp = (iToYear - iFromYear) * 12 + iToDate - iFromDate; + } else if (iToYear == iFromYear) { + iExp = iToDate - iFromDate; + } + } else if (iFromDate == iToDate) { + if (iToYear > iFromYear) { + iExp = (iToYear - iFromYear) * 12; + } else if (iToYear == iFromYear) { + iExp = iFromDate - iToDate; + } + } + return String.valueOf(iExp); + } + + private void saveHrmEmpPDAwdDtls(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersAwardDtlBean oHrmEmpPersAwardDtlBean = itrBean.next(); + if (oHrmEmpPersAwardDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersAwd(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdYear())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdField())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdDate())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersAwardDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersAwd(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersAwardDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdYear())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdField())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersAwardDtlBean.getTxtAwdDate())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersAwardDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersAwd(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersAwardDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmEmpPDInsDtls(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersInsDtlBean oHrmEmpPersInsDtlBean = itrBean.next(); + if (oHrmEmpPersInsDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersIns(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersInsDtlBean.getInvDtls())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersInsDtlBean.getInvAmount())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersInsDtlBean.getInvPolicyNo())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersInsDtlBean.getInvDate())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersInsDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersIns(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersInsDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersInsDtlBean.getInvDtls())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersInsDtlBean.getInvAmount())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersInsDtlBean.getInvPolicyNo())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersInsDtlBean.getInvDate())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersInsDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersIns(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersInsDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmEmpPDHealth(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersHealthBean oHrmEmpPersHealthBean = itrBean.next(); + if (oHrmEmpPersHealthBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersHealth(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersHealthBean.getHealthDtls())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersHealthBean.getHealthStartDate())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersHealthBean.getHealthEndDate())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersHealthBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersHealth(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersHealthBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersHealthBean.getHealthDtls())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersHealthBean.getHealthStartDate())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersHealthBean.getHealthEndDate())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersHealthBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersHealth(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersHealthBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmEmpPDLng(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersLngDtlBean oHrmEmpPersLngDtlBean = itrBean.next(); + if (oHrmEmpPersLngDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersLng(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersLngDtlBean.getLngName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersLngDtlBean.getLngSpeak())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersLngDtlBean.getLngRead())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersLngDtlBean.getLngWrite())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersLngDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersLng(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersLngDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersLngDtlBean.getLngName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersLngDtlBean.getLngSpeak())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersLngDtlBean.getLngRead())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersLngDtlBean.getLngWrite())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersLngDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersLng(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersLngDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmEmpPDRefDtls(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersRefDtlBean oHrmEmpPersRefDtlBean = itrBean.next(); + if (oHrmEmpPersRefDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersRef(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersRefDtlBean.getTxtName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersRefDtlBean.getTxtAddress())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersRefDtlBean.getTxtPositionOccupation())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersRefDtlBean.getTxtTelephoneNo())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersRefDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersRef(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersRefDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersRefDtlBean.getTxtName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersRefDtlBean.getTxtAddress())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersRefDtlBean.getTxtPositionOccupation())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersRefDtlBean.getTxtTelephoneNo())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersRefDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersRef(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersRefDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmEmpAssetDtls(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersAssetDtlBean oHrmEmpPersAssetDtlBean = itrBean.next(); + if (oHrmEmpPersAssetDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersAsset(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersAssetDtlBean.getFullAddress())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersAssetDtlBean.getDetailOfProperty())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersAssetDtlBean.getCostOfConstruction())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersAssetDtlBean.getYearOfPurchase())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersAssetDtlBean.getPresentValue())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersAssetDtlBean.getNameHeld())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersAssetDtlBean.getHowAquired())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersAssetDtlBean.getDetailOfPerson())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersAssetDtlBean.getTotalIncome())); + arylstParam.add(new DBObject(13, 1, 12, oHrmEmpPersAssetDtlBean.getRemarks())); + arylstParam.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersAssetDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersAsset(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEmpPersAssetDtlBean.getDetailId())); + String S = oHrmEmpPersAssetDtlBean.getDetailId(); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersAssetDtlBean.getFullAddress())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersAssetDtlBean.getDetailOfProperty())); + arylstParam.add(new DBObject(6, 1, 12, oHrmEmpPersAssetDtlBean.getCostOfConstruction())); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersAssetDtlBean.getYearOfPurchase())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersAssetDtlBean.getPresentValue())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersAssetDtlBean.getNameHeld())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersAssetDtlBean.getHowAquired())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersAssetDtlBean.getDetailOfPerson())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersAssetDtlBean.getTotalIncome())); + arylstParam.add(new DBObject(13, 1, 12, oHrmEmpPersAssetDtlBean.getRemarks())); + arylstParam.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmEmpPersAssetDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMEMPPERDTL.procDeleteHrmEmpPersAsset(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersAssetDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmEmpPerDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + String sScale = new String(); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = itrBean.next(); + if (oHrmEmpPersDtlsBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPPERDTL.procUpsertHrmEmpPersDtls(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmEmpPersDtlsBean.getGuardianName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmEmpPersDtlsBean.getMotherTongueCode())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersDtlsBean.getDateOfBirth()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmEmpPersDtlsBean.getNationalityCode())); + arylstParam.add(new DBObject(8, 1, 12, oHrmEmpPersDtlsBean.getBloodGroup())); + arylstParam.add(new DBObject(9, 1, 12, oHrmEmpPersDtlsBean.getSex())); + arylstParam.add(new DBObject(10, 1, 12, oHrmEmpPersDtlsBean.getMaritalCode())); + arylstParam.add(new DBObject(11, 1, 12, oHrmEmpPersDtlsBean.getDependants())); + arylstParam.add(new DBObject(12, 1, 12, oHrmEmpPersDtlsBean.getDepartmentId())); + arylstParam.add(new DBObject(13, 1, 12, oHrmEmpPersDtlsBean.getDesignationId())); + arylstParam.add(new DBObject(14, 1, 12, oHrmEmpPersDtlsBean.getSocialStatusId())); + arylstParam.add(new DBObject(15, 1, 12, oHrmEmpPersDtlsBean.getReligionId())); + arylstParam.add(new DBObject(16, 1, 12, oHrmEmpPersDtlsBean.getGradeId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmEmpPersDtlsBean.getHandicappedFlag())); + arylstParam.add(new DBObject(18, 1, 12, null)); + arylstParam.add(new DBObject(19, 1, 12, oHrmEmpPersDtlsBean.getPanNumber())); + arylstParam.add(new DBObject(20, 1, 12, oHrmEmpPersDtlsBean.getGirNumber())); + arylstParam.add(new DBObject(21, 1, 12, oHrmEmpPersDtlsBean.getPfNumber())); + arylstParam.add(new DBObject(22, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersDtlsBean.getLastPromotionDate()))); + arylstParam.add(new DBObject(23, 1, 12, oHrmEmpPersDtlsBean.getReportingEmpId())); + arylstParam.add(new DBObject(24, 1, 12, oHrmEmpPersDtlsBean.getPassportNo())); + arylstParam.add(new DBObject(25, 1, 12, oHrmEmpPersDtlsBean.getPlaceOfIssue())); + arylstParam.add(new DBObject(26, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersDtlsBean.getPassportExpDate()))); + arylstParam.add(new DBObject(27, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersDtlsBean.getPassportIssueDate()))); + arylstParam.add(new DBObject(28, 1, 12, String.valueOf(oHrmEmpPersDtlsBean.getRelatedToEmployee()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(29, 1, 12, oHrmEmpPersDtlsBean.getRelatedEmpId())); + arylstParam.add(new DBObject(30, 1, 12, oHrmEmpPersDtlsBean.getSpouseName())); + arylstParam.add(new DBObject(31, 1, 12, oHrmEmpPersDtlsBean.getSpouseOccupation())); + arylstParam.add(new DBObject(32, 1, 12, oHrmEmpPersDtlsBean.getDrivingLicenseNo())); + arylstParam.add(new DBObject(33, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersDtlsBean.getValidUpto()))); + arylstParam.add(new DBObject(34, 1, 12, oHrmEmpPersDtlsBean.getIdMark())); + arylstParam.add(new DBObject(35, 1, 12, oHrmEmpPersDtlsBean.getPlaceOfBirth())); + arylstParam.add(new DBObject(36, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersDtlsBean.getLocJoiningDate()))); + arylstParam.add(new DBObject(37, 1, 12, oHrmEmpPersDtlsBean.getLocationId())); + arylstParam.add(new DBObject(38, 1, 12, oHrmEmpPersDtlsBean.getMobile())); + arylstParam.add(new DBObject(39, 1, 12, oHrmEmpPersDtlsBean.getPersonalEmail())); + arylstParam.add(new DBObject(40, 1, 12, String.valueOf(oHrmEmpPersDtlsBean.getFlat()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(41, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmEmpPersDtlsBean.getAnniversaryDate()))); + arylstParam.add(new DBObject(42, 1, 12, oHrmEmpPersDtlsBean.getMotherName())); + arylstParam.add(new DBObject(43, 1, 12, oHrmEmpPersDtlsBean.getScsmemershipNo())); + arylstParam.add(new DBObject(44, 1, 12, oHrmEmpPersDtlsBean.getGunLicenseNo())); + arylstParam.add(new DBObject(45, 1, 12, oHrmEmpPersDtlsBean.getGunLicenseRenDate())); + arylstParam.add(new DBObject(46, 1, 12, oHrmEmpPersDtlsBean.getSpouseOrganization())); + arylstParam.add(new DBObject(47, 1, 12, oHrmEmpPersDtlsBean.getSpOrgType())); + arylstParam.add(new DBObject(48, 1, 12, oHrmEmpPersDtlsBean.getSpTransferable())); + arylstParam.add(new DBObject(49, 1, 12, oHrmEmpPersDtlsBean.getClubMembership())); + arylstParam.add(new DBObject(50, 1, 12, oHrmEmpPersDtlsBean.getUnionInfo())); + arylstParam.add(new DBObject(51, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(52, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(53, 1, 12, oHrmEmpPersDtlsBean.getAadharInfo())); + arylstParam.add(new DBObject(54, 1, 12, oHrmEmpPersDtlsBean.getUanInfo())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + HrmEmpPersHdrBean oHrmEmpPersHdrBean = (HrmEmpPersHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = itrBean1.next(); + if (!oHrmEmpPersDtlsBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryPersDtls(oHrmEmpPersDtlsBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersAddDtlBean oHrmEmpPersAddDtlBean = itrBean1.next(); + if (!oHrmEmpPersAddDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryAddrDtls(oHrmEmpPersAddDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersJoinInfDtlBean oHrmEmpPersJoinInfDtlBean = itrBean1.next(); + if (!oHrmEmpPersJoinInfDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryJoinInfDtls(oHrmEmpPersJoinInfDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersEduDtlBean oHrmEmpPersEduDtlBean = itrBean1.next(); + if (!oHrmEmpPersEduDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryEduDtls(oHrmEmpPersEduDtlBean, rowCount); + } + rowCount++; + } + int percentPF = 0; + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersPFDtlBean oHrmEmpPersPFDtlBean = itrBean1.next(); + if (!oHrmEmpPersPFDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryPFDtls(oHrmEmpPersPFDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersTrngDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersTrngDtlsDtlBean oHrmEmpPersTrngDtlsDtlBean = itrBean1.next(); + if (!oHrmEmpPersTrngDtlsDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryTrngDtls(oHrmEmpPersTrngDtlsDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean = itrBean1.next(); + if (!oHrmEmpPersPriorExpDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryPriExpDtls(oHrmEmpPersPriorExpDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersRefDtlBean oHrmEmpPersRefDtlBean = itrBean1.next(); + if (!oHrmEmpPersRefDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryRefDtls(oHrmEmpPersRefDtlBean, rowCount); + } + rowCount++; + } + } + } + + private void checkMandatoryHeader(HrmEmpPersHdrBean oHrmEmpPersHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersHdrBean.getEmployeeNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.employeeNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersHdrBean.getFirstName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.firstName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersHdrBean.getLastName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.lastName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryPersDtls(HrmEmpPersDtlsBean oHrmEmpPersDtlsBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getMotherTongue())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.motherTongue"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getDateOfBirth())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.dateOfBirth"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getNationality())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.nationality"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getSex())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.sex"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getMaritalStatus())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.maritalStatus"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getReligion())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.religion"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getGrade())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.grade"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getReportingEmployee())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.reportingEmployee"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + DateUtility d = new DateUtility(); + System.out.println(d.getSysDate()); + HrmCommonBO oBO = new HrmCommonBO(); + String sysDate = oBO.getddmmmyyyyDateFormat(d.getSysDate()); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpPersDtlsBean.getDateOfBirth(), sysDate); + if (dateFlag == 1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.dateOfBirth.dateConstraintViolated")); + reportError(oErrorList); + } + + private void checkMandatoryAddrDtls(HrmEmpPersAddDtlBean oHrmEmpPersAddDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getCity())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.city"); + oParams = new ArrayList(); + oParams.add("Office Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.address"); + oParams = new ArrayList(); + oParams.add("Office Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getState())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.state"); + oParams = new ArrayList(); + oParams.add("Office Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getCountry())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.country"); + oParams = new ArrayList(); + oParams.add("Office Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPrAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.prAddress"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPrCity())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.prCity"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPrState())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.prState"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPrCountry())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.prCountry"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPeAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.peAddress"); + oParams = new ArrayList(); + oParams.add("Permanent Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPeCity())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.peCity"); + oParams = new ArrayList(); + oParams.add("Permanent Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPeState())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.peState"); + oParams = new ArrayList(); + oParams.add("Permanent Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersAddDtlBean.getPeCountry())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.peCountry"); + oParams = new ArrayList(); + oParams.add("Home Town Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryJoinInfDtls(HrmEmpPersJoinInfDtlBean oHrmEmpPersJoinInfDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersJoinInfDtlBean.getCompJoiningDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsJoinInf.compJoiningDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersJoinInfDtlBean.getEmployeeStatus())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsJoinInf.employeeStatus"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersJoinInfDtlBean.getPlaceOfInitialPosting())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsJoinInf.placeOfInitialPosting"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpPersJoinInfDtlBean.getCompJoiningDate(), oHrmEmpPersJoinInfDtlBean.getRetirementDate()); + if (dateFlag == 1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.retirementDate.dateConstraintViolated")); + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpPersJoinInfDtlBean.getCompJoiningDate(), oHrmEmpPersJoinInfDtlBean.getTentativeConfDate()); + if (dateFlag == 1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.confDate.dateConstraintViolated")); + reportError(oErrorList); + } + + private void checkMandatoryEduDtls(HrmEmpPersEduDtlBean oHrmEmpPersEduDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersEduDtlBean.getTxtSchoolColInst())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsEdu.schoolColInst"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersEduDtlBean.getTxtExamDegreePassed())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsEdu.examDegreePassed"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersEduDtlBean.getTxtPercentageDivision())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsEdu.percentageDivision"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersEduDtlBean.getTxtPassYear())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsEdu.passYear"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryPFDtls(HrmEmpPersPFDtlBean oHrmEmpPersPFDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersPFDtlBean.getTxtNomineeName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsPF.nomineeName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersPFDtlBean.getTxtDob())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsPF.dob"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersPFDtlBean.getTxtPercentage())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsPF.percentage"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryTrngDtls(HrmEmpPersTrngDtlsDtlBean oHrmEmpPersTrngDtlsDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstErrorList = new ArrayList(); + } + + private void checkMandatoryPriExpDtls(HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersPriorExpDtlBean.getTxtOrgName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsPriorExp.orgName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersPriorExpDtlBean.getTxtOrgAdd())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsPriorExp.orgAdd"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersPriorExpDtlBean.getTxtFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsPriorExp.fromDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersPriorExpDtlBean.getTxtToDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsPriorExp.toDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryRefDtls(HrmEmpPersRefDtlBean oHrmEmpPersRefDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmEmpPersRefDtlBean.getTxtName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsRef.name"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmEmpPersRefDtlBean.getTxtAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsRef.address"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + additionalFieldValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + HrmEmpPersHdrBean oHrmEmpPersHdrBean = (HrmEmpPersHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmEmpPersHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) { + int percentPF = 0; + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersPFDtlBean oHrmEmpPersPFDtlBean = itrBean1.next(); + if (!oHrmEmpPersPFDtlBean.getStatus().equals("D")) { + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtRelationId", "hrm.HrmEmpPersonalDetailsPF.nomineeName", arylstErrorList, true); + percentPF += Integer.parseInt(oHrmEmpPersPFDtlBean.getTxtPercentage()); + } + } + if (percentPF > 100) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.hrmEmpPers.error.PFpercent")); + if (percentPF < 100) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.hrmEmpPers.error.PFpercent")); + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersEduDtlBean oHrmEmpPersEduDtlBean = itrBean1.next(); + if (!oHrmEmpPersEduDtlBean.getStatus().equals("D")) { + checkPercentage(arylstDetailBeanArray); + getyyyyDateFormat(arylstDetailBeanArray); + } + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean = itrBean1.next(); + if (!oHrmEmpPersPriorExpDtlBean.getStatus().equals("D")) + checkDateValidation(arylstDetailBeanArray, arylstErrorList); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersJoinInfDtlBean oHrmEmpPersJoinInfoDtlBean = itrBean1.next(); + if (!oHrmEmpPersJoinInfoDtlBean.getStatus().equals("D")) { + checkDateValidationJoin(arylstDetailBeanArray, arylstErrorList); + checkBaseSiteId(oHrmEmpPersHdrBean, arylstErrorList); + } + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = itrBean1.next(); + if (!oHrmEmpPersDtlsBean.getStatus().equals("D")) { + checkDateValidationPers(arylstDetailBeanArray, arylstErrorList); + checkAadharUanValidationPers(arylstDetailBeanArray, arylstErrorList); + } + } + rowCount++; + } + } + if (!oHrmEmpPersHdrBean.getDraftSave().equalsIgnoreCase("true")) + finalSave(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + reportError(arylstErrorList); + } + + private void checkPercentage(ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator itrBean = arylstDetailBeanArray.iterator(); + int totalDuration = 0; + while (itrBean.hasNext()) { + HrmEmpPersEduDtlBean oHrmEmpPersEduDtlBean = arylstDetailBeanArray.get(count); + if (EnrgiseUtil.checkString(oHrmEmpPersEduDtlBean.getTxtPercentageDivision())) { + float fPercent = Float.parseFloat(oHrmEmpPersEduDtlBean.getTxtPercentageDivision()); + if (fPercent > 100) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetailsEdu.checkPercent", arylstParam)); + } + } + count++; + itrBean.next(); + } + reportError(arylstList); + } + + private void checkUniqueHeader(HrmEmpPersHdrBean oHrmEmpPersHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_EMP_PERS where EMP_NO='").concat(String.valueOf(oHrmEmpPersHdrBean.getEmployeeNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmEmpPersHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + public LovVO getHrmEmpPersDtlsEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + String sEmpId = null; + if (oLovQueryVO.getProperty("employeeId") != null) + sEmpId = oLovQueryVO.getProperty("employeeId"); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMaintEmpLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsGradeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.desc"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.level"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntGrdLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY_LEVEL").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsDesigLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("DESGN_ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.desc"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.level"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntDsgnLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("DESGN_ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY_LEVEL").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsDeptLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.desc"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.level"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntDeptLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HEIRARCHY_LEVEL").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsNationalityLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("GLOBAL_CODE_TYPE"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntNatLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsReligionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.religion"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntRelLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsMotTngLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntLngLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsMaritalStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("GLOBAL_CODE_TYPE"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntMarLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsSocialStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.desc"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.level"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntRsvLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY_LEVEL").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsRepEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + String empId = null; + String sLevel = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getProperty("empNumberId") != null) + empId = oLovQueryVO.getProperty("empNumberId"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, empId)); + arylstParam.add(new DBObject(3, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetRptEmpNoLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMPID").getString()); + oLOVBean.setDetailField2(oRow.get("EMPNAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsRelatedEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + String empId = null; + String sLevel = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetRelatedEmpNoLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMPID").getString()); + oLOVBean.setDetailField2(oRow.get("EMPNAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersAddDtlsStateLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("GLOBAL_CODE_TYPE"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntStateLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersAddDtlsCountryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("COUNTRY_ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntCntryLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("COUNTRY_ID").getString()); + oLOVBean.setDetailField2(oRow.get("COUNTRY_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersAddDtlsDistrictLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("DISTRICT_ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntDistLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("DISTRICT_ID").getString()); + oLOVBean.setDetailField2(oRow.get("DISTRICT_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersAddDtlsTehsilLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("TEHSIL_ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsAddress.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntTehLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("TEHSIL_ID").getString()); + oLOVBean.setDetailField2(oRow.get("TEHSIL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfBaseSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.siteCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.siteName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmBaseSiteLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfEntryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("GLOBAL_CODE_TYPE"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.description"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntEntryLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("GLOBAL_CODE_TYPE"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.code"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.description"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntStatusLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfSepTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("SRL_NO"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.separationCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.description"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.proc_GetHrmEmpMntSepLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("SEPARATION_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfCostCentreLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("COST_ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.costCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.description"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpMntCostLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("COST_ID").getString()); + oLOVBean.setDetailField2(oRow.get("COST_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("COST_DESC").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfBankLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("COST_ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.bankCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.bank"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.branchName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetEmpPersJoinBankLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("BANK").getString()); + oLOVBean.setDetailField4(oRow.get("BRANCH").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfJobRespLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("JOB_RESP_ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsJoinInf.responsibility"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetEmpPersJoinJobRespLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("CODE").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersPriorExpSkillLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("SRL_NO"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsPriorExp.skillCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsPriorExp.skillDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpPExpSkillLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("SRL_NO").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersPriorExpDesigLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("DESG ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsPriorExp.desgCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsPriorExp.desgDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpPExpDesgLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersEduDtlsInstLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("INST ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsEdu.instCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsEdu.instName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpEduInstLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmEmpPersEduDtlsQualLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("QUALIFICATION ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsEdu.qualificationCode"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsEdu.qualificationName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmEmpEduQualLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRelationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsPF.nomineeName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsPF.relation"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetailsPF.dob"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String vEmpId = null; + if (oLovQueryVO.getProperty("employeeNo") != null) { + vEmpId = oLovQueryVO.getProperty("employeeNo"); + System.out.println(String.valueOf("emp no=").concat(String.valueOf(vEmpId))); + } + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, vEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPMAINTLOV.procGetHrmRelationLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("Nominee").getString()); + oLOVBean.setDetailField3(oRow.get("relation").getString()); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("dob").getDate())); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public void finalSave(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmEmpPersHdrBean oHrmEmpPersHdrBean = (HrmEmpPersHdrBean)oBaseHeaderBean; + String empId = ""; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmEmployeeTrng = null; + ArrayList arylstParam = new ArrayList(); + if (String.valueOf(oHrmEmpPersHdrBean.getDraftFlag()).equalsIgnoreCase("On")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.procvalidationFinalSave(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String validation = oOutObject.getObject().toString(); + if (validation.equals("5")) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.draftSave", arylstParam)); + reportError(arylstErrorList); + return; + } + if (validation.equals("0")) { + DBUtilitiesBean oBean3 = new DBUtilitiesBean(); + String sQuery = String.valueOf("update hrm_emp_pers t set t.draft_flag = 'N' where t.id=").concat(String.valueOf(oHrmEmpPersHdrBean.getHeaderPrimaryKey())); + System.out.println(sQuery); + int i = oBean3.executeUpsert(sQuery); + } else if (validation.equals("2")) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.deputation", arylstParam)); + } else if (validation.equals("4")) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.address", arylstParam)); + } + DBObject oOutObject1 = arylstOutArray.get(1); + ArrayList arylstParam1 = (ArrayList)oOutObject1.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam1.iterator(); + String apprType = null; + while (itrBean.hasNext()) { + oRow = itrBean.next(); + if (oRow.get("nationality").getString() == null || oRow.get("nationality").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Personal Details : Nationality"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("mother_tongue").getString() == null || oRow.get("mother_tongue").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Personal Details : Mother Tongue"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("dob").getString() == null || oRow.get("dob").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Personal Details : Date Of birth"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("sex").getString() == null || oRow.get("sex").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Personal Details : Sex"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("marital_status").getString() == null || oRow.get("marital_status").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Personal Details : Marital Status"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("rlgn_mst_id").getString() == null || oRow.get("rlgn_mst_id").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Personal Details : Religion"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("comp_join_date").getString() == null || oRow.get("comp_join_date").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Joining Info : Company Joining Date"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("retirement_date").getString() == null || oRow.get("retirement_date").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Joining Info : Retirement Date"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + if (oRow.get("base_site_id").getString() == null || oRow.get("base_site_id").getString().equals("")) { + arylstParam = new ArrayList(); + arylstParam.add("Personal Details : Base Site"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.error.incomplete", arylstParam)); + } + } + } + reportError(arylstErrorList); + } + + private void checkDateValidationPers(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = itrBean1.next(); + if (!oHrmEmpPersDtlsBean.getStatus().equalsIgnoreCase("D")) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getLastPromotionDate()) && EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getDateOfBirth())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpPersDtlsBean.getLastPromotionDate(), oHrmEmpPersDtlsBean.getDateOfBirth()); + if (dateFlag == -1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkPersDateValidation1", arylstParam)); + } + } + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getLocJoiningDate()) && EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getDateOfBirth())) { + int dateFlag3 = EnrgiseUtil.compareDates(dateFormat, oHrmEmpPersDtlsBean.getLocJoiningDate(), oHrmEmpPersDtlsBean.getDateOfBirth()); + if (dateFlag3 == -1 && dateFlag3 != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkPersDateValidation", arylstParam)); + } + } + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getPassportExpDate()) && EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getPassportIssueDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, oHrmEmpPersDtlsBean.getPassportExpDate(), oHrmEmpPersDtlsBean.getPassportIssueDate()); + if (dateFlag1 == -1 && dateFlag1 != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkPersDateValidation2", arylstParam)); + } + } + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getDateOfBirth())) { + int dateFlag2 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmEmpPersDtlsBean.getDateOfBirth()); + if (dateFlag2 == -1 && dateFlag2 != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkJoinDateValidation3", arylstParam)); + } + } + } + } + } + + private void checkDateValidationJoin(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersJoinInfDtlBean oHrmEmpPersJoinInfDtlBean = itrBean1.next(); + if (!oHrmEmpPersJoinInfDtlBean.getStatus().equalsIgnoreCase("D")) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmEmpPersJoinInfDtlBean.getStatusEffectDate()) && EnrgiseUtil.checkString(oHrmEmpPersJoinInfDtlBean.getCompJoiningDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmEmpPersJoinInfDtlBean.getStatusEffectDate(), oHrmEmpPersJoinInfDtlBean.getCompJoiningDate()); + if (dateFlag == -1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkJoinDateValidation1", arylstParam)); + } + } + if (EnrgiseUtil.checkString(oHrmEmpPersJoinInfDtlBean.getCompJoiningDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmEmpPersJoinInfDtlBean.getCompJoiningDate()); + if (dateFlag1 == -1 && dateFlag1 != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkJoinDateValidation2", arylstParam)); + } + } + } + } + } + + private void checkBaseSiteId(HrmEmpPersHdrBean oHrmEmpPersHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sSiteId = null; + ArrayList arylstBaseSiteId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEmpPersHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.proc_GetBaseSiteId(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstBaseSiteId = new ArrayList(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sSiteId = oRow.get("Site_Id").getString(); + } + if (sSiteId == null) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkBaseSiteId", arylstParam)); + } + } + + public String getLastPromoInfo(String EmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sLastPromo = ""; + ArrayList arylstLastpromoDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, EmpId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMEMPPERDTL.proc_GetLastPromoInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstLastpromoDetail = new ArrayList(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sLastPromo = EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_DATE").getDate()); + } + return sLastPromo; + } + + private void checkFromDateExperience(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean = itrBean1.next(); + if (!oHrmEmpPersPriorExpDtlBean.getStatus().equalsIgnoreCase("D")) { + String sEffectFrom = oHrmEmpPersPriorExpDtlBean.getTxtFromDate(); + String sMMEffectFrom = sEffectFrom.substring(0, 2); + String sYYEffectFrom = sEffectFrom.substring(2, 6); + if (Integer.parseInt(sMMEffectFrom) > 12) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.fromExpLessThan12", arylstParam)); + } + String sFromYYYYMM = String.valueOf(sYYEffectFrom).concat(String.valueOf(sMMEffectFrom)); + int iFromYYYYMM = Integer.parseInt(sFromYYYYMM); + String sEffectTo = oHrmEmpPersPriorExpDtlBean.getTxtToDate(); + String sMMEffectTo = sEffectTo.substring(0, 2); + String sYYEffectTo = sEffectTo.substring(2, 6); + if (Integer.parseInt(sMMEffectTo) > 12) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.toExpLessThan12", arylstParam)); + } + String sToYYYYMM = String.valueOf(sYYEffectTo).concat(String.valueOf(sMMEffectTo)); + int iToYYYYMM = Integer.parseInt(sToYYYYMM); + if (iToYYYYMM < iFromYYYYMM) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrms.HrmEmpPersonalDetails.exp", arylstParam)); + } + } + } + } + + private void getyyyyDateFormat(ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersEduDtlBean oHrmEmpPersEduDtlBean = itrBean1.next(); + if (!oHrmEmpPersEduDtlBean.getStatus().equalsIgnoreCase("D")) { + String sEffectFrom = oHrmEmpPersEduDtlBean.getTxtPassYear(); + System.out.println(sEffectFrom); + int iMMEffectFrom = Integer.parseInt(sEffectFrom); + System.out.println(iMMEffectFrom); + if (iMMEffectFrom <= 1900) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Educational Details"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.empPers.detail.dateConstraintViolated", arylstParam)); + continue; + } + if (iMMEffectFrom > 2100) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Educational Details"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.empPers.detail.dateConstraintViolated", arylstParam)); + } + } + } + reportError(arylstErrorList); + } + + private void checkDateValidation(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersPriorExpDtlBean oHrmEmpPersPriorExpDtlBean = itrBean1.next(); + if (!oHrmEmpPersPriorExpDtlBean.getStatus().equalsIgnoreCase("D")) { + String sEffectFrom = oHrmEmpPersPriorExpDtlBean.getTxtFromDate(); + String sEffectTo = oHrmEmpPersPriorExpDtlBean.getTxtToDate(); + HrmCommonBO oBO = new HrmCommonBO(); + String sysDate = oBO.getSysDate(); + int year = Integer.parseInt(sysDate.substring(6, sysDate.length())); + int month = Integer.parseInt(sysDate.substring(3, 5)); + if (sEffectFrom.length() < 6) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkExpFromLength", arylstParam)); + } + if (sEffectTo.length() < 6) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkExpToLength", arylstParam)); + } + if (sEffectFrom.length() == 6 && sEffectTo.length() == 6) { + if (year < Integer.parseInt(sEffectTo.substring(2, 6))) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkExpTo", arylstParam)); + } + if (year == Integer.parseInt(sEffectTo.substring(2, 6))) + if (month < Integer.parseInt(sEffectTo.substring(0, 2))) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkExpTo", arylstParam)); + } + if (Integer.parseInt(sEffectFrom.substring(0, 2)) < 1 || Integer.parseInt(sEffectFrom.substring(0, 2)) > 12) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.month", arylstParam)); + } + if (Integer.parseInt(sEffectFrom.substring(2, 3)) == 0) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.year", arylstParam)); + } + if (Integer.parseInt(sEffectTo.substring(0, 2)) < 1 || Integer.parseInt(sEffectTo.substring(0, 2)) > 12) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.month", arylstParam)); + } + if (Integer.parseInt(sEffectTo.substring(2, 3)) == 0) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.year", arylstParam)); + } + int iFromMonth = Integer.parseInt(sEffectFrom.substring(0, 2)); + int iFromYear = Integer.parseInt(sEffectFrom.substring(2, 6)); + int iToMonth = Integer.parseInt(sEffectTo.substring(0, 2)); + int iToYear = Integer.parseInt(sEffectTo.substring(2, 6)); + if (iFromYear > iToYear) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkExp", arylstParam)); + } + if (iFromYear == iToYear) + if (iFromMonth >= iToMonth) { + arylstParam = new ArrayList(); + arylstParam.add("Prior Experience : Experience Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkExp", arylstParam)); + } + } + } + } + } + + private void checkAadharUanValidationPers(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = itrBean1.next(); + if (!oHrmEmpPersDtlsBean.getStatus().equalsIgnoreCase("D")) { + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getAadharInfo())) + if (oHrmEmpPersDtlsBean.getAadharInfo().length() != 12) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkAddharValidation", arylstParam)); + } + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getUanInfo())) + if (oHrmEmpPersDtlsBean.getUanInfo().length() != 12) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetails.checkUanValidation", arylstParam)); + } + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleBO.java new file mode 100644 index 0000000..d8df5ed --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleBO.java @@ -0,0 +1,173 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.vo.HrmGenEligRuleQVO; + +public class HrmGenEligRuleBO extends HrmBaseBO { + public HrmGenEligRuleBO() {} + + public HrmGenEligRuleBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public HashMap getEligClassInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HashMap mapEligList = null; + arylstParam.add(new DBObject(1, 2, -10)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_GetEligClass(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + mapEligList = new HashMap(); + count++; + oRow = itrBean.next(); + mapEligList.put(oRow.get("ID").getString(), oRow.get("NAME").getString().trim()); + } + return mapEligList; + } + + public RecordMetaInfo getHrmGenEligRuleHdrMetaInfo(HrmGenEligRuleQVO oHrmGenEligRuleQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + return oRecordMetaInfo; + } + + public ArrayList getHrmGenEligRuleHeaderInfo(HrmGenEligRuleQVO oHrmGenEligRuleQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + int count = 0; + ArrayList arylstHeaderList = null; + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmGenEligRuleHdrBean oEligHeader = new HrmGenEligRuleHdrBean(); + if (oHrmGenEligRuleQVO.getDocumentType().equalsIgnoreCase("V")) { + oEligHeader.setHeaderPrimaryKey("V"); + oEligHeader.setDocumentType("V"); + } else if (oHrmGenEligRuleQVO.getDocumentType().equalsIgnoreCase("L")) { + oEligHeader.setHeaderPrimaryKey("L"); + oEligHeader.setDocumentType("L"); + } else if (oHrmGenEligRuleQVO.getDocumentType().equalsIgnoreCase("A")) { + oEligHeader.setHeaderPrimaryKey("A"); + oEligHeader.setDocumentType("A"); + } else if (oHrmGenEligRuleQVO.getDocumentType().equalsIgnoreCase("C")) { + oEligHeader.setHeaderPrimaryKey("C"); + oEligHeader.setDocumentType("C"); + } else { + oEligHeader.setHeaderPrimaryKey("E"); + oEligHeader.setDocumentType("E"); + } + arylstHeaderList.add(oEligHeader); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "PUM_PO_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return " "; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + String sProcedure = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmGenEligRuleHdrBean oHrmEligBean = (HrmGenEligRuleHdrBean)oBaseHeaderBean; + updateTables(oHrmEligBean); + ArrayList arylstParam = new ArrayList(); + ArrayList arylstOutArray = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmEligBean.getDocumentType())); + arylstParam.add(new DBObject(3, 1, 12, oHrmEligBean.getHidDocumentCodeId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmEligBean.getFormula())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(7, 1, 12, null)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 4)); + arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_UpsertHrEligRule(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + private void updateTables(HrmGenEligRuleHdrBean oHrmEligBean) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + ArrayList arylstParam = new ArrayList(); + ArrayList arylstOutArray = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmEligBean.getEligSql())); + arylstParam.add(new DBObject(2, 1, 12, oHrmEligBean.getHidDocumentCodeId())); + arylstParam.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + if (oHrmEligBean.getDocumentType().equals("V")) + arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_UpdateLvAttrDtlElig(?,?,?,?,?,?,?)"); + if (oHrmEligBean.getDocumentType().equals("L")) + arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_UpdateLoanDtlElig(?,?,?,?,?,?,?)"); + if (oHrmEligBean.getDocumentType().equals("A")) + arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_UpdateAdvDtlElig(?,?,?,?,?,?,?)"); + if (oHrmEligBean.getDocumentType().equals("C")) + arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_UpdateClaimDtlElig(?,?,?,?,?,?,?)"); + if (oHrmEligBean.getDocumentType().equals("E")) + arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_UpdateErngDtlElig(?,?,?,?,?,?,?)"); + if (oHrmEligBean.getDocumentType().equals("S")) + arylstOutArray = oBean.callProc(arylstParam, "HRMELIGRULE.proc_UpdateSepDtlElig(?,?,?,?,?,?,?)"); + } + + private void updateLeave(HrmGenEligRuleHdrBean oHrmEligBean) throws EnrgiseSystemException {} + + private void updateLoan(HrmGenEligRuleHdrBean oHrmEligBean) throws EnrgiseSystemException {} + + private void updateClaim(HrmGenEligRuleHdrBean oHrmEligBean) throws EnrgiseSystemException {} + + private void updateAdvance(HrmGenEligRuleHdrBean oHrmEligBean) throws EnrgiseSystemException {} + + private void updateSeparation(HrmGenEligRuleHdrBean oHrmEligBean) throws EnrgiseSystemException {} + + private void updateEarning(HrmGenEligRuleHdrBean oHrmEligBean) throws EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleQueryBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleQueryBO.java new file mode 100644 index 0000000..dbefb55 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmGenEligRuleQueryBO.java @@ -0,0 +1,224 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmGenEligRuleQueryDtlBean; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; + +public class HrmGenEligRuleQueryBO extends HrmBaseBO { + public HrmGenEligRuleQueryBO() {} + + public HrmGenEligRuleQueryBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_LEAVE_ATTR_DTL"; + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHdrBean) throws EnrgiseSystemException { + return null; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHdrBean, String ScreenMode) throws EnrgiseSystemException { + return null; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHdrBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public RecordMetaInfo getHrmGenEligRuleQueryDetailMetaInfo(BaseQueryVO oBaseQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oOutArray = null; + HrmGenEligRuleQueryQVO oQVO = (HrmGenEligRuleQueryQVO)oBaseQVO; + if (oQVO.getDocType().equals("V")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 2, -5)); + oParameters.add(new DBObject(2, 2, 93)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_LeaveQueryDtlCount(?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("L")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 2, -5)); + oParameters.add(new DBObject(2, 2, 93)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_LoanQueryDtlCount(?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("A")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 2, -5)); + oParameters.add(new DBObject(2, 2, 93)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_AdvanceQueryDtlCount(?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("S")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 2, -5)); + oParameters.add(new DBObject(2, 2, 93)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_SeparationQueryDtlCount(?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("C")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 2, -5)); + oParameters.add(new DBObject(2, 2, 93)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_ClaimQueryDtlCount(?,?,?,?,?)"); + } + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmGenEligRuleQueryDetail(BaseQueryVO oBaseQVO, long lAbsoluteStart, long lAbsoluteEnd) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + HrmGenEligRuleQueryQVO oQVO = (HrmGenEligRuleQueryQVO)oBaseQVO; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList oOutArray = null; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstDetail = null; + if (oQVO.getDocType().equals("V")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lAbsoluteStart))); + oParameters.add(new DBObject(2, 1, -5, new Long(lAbsoluteEnd))); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_LeaveQueryDtlInfo(?,?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("L")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lAbsoluteStart))); + oParameters.add(new DBObject(2, 1, -5, new Long(lAbsoluteEnd))); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_LoanQueryDtlInfo(?,?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("A")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lAbsoluteStart))); + oParameters.add(new DBObject(2, 1, -5, new Long(lAbsoluteEnd))); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_AdvanceQueryDtlInfo(?,?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("S")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lAbsoluteStart))); + oParameters.add(new DBObject(2, 1, -5, new Long(lAbsoluteEnd))); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_SeparationQueryDtlInfo(?,?,?,?,?,?)"); + } + if (oQVO.getDocType().equals("C")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lAbsoluteStart))); + oParameters.add(new DBObject(2, 1, -5, new Long(lAbsoluteEnd))); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMELIGRULEQUERY.proc_ClaimQueryDtlInfo(?,?,?,?,?,?)"); + } + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmGenEligRuleQueryDtlBean oDtlBean = new HrmGenEligRuleQueryDtlBean(); + oDtlBean.setDetailId(oRow.get("ID").getString()); + oDtlBean.setTxtdocCode(oRow.get("description").getString()); + String sElig = oRow.get("ELIG_SQL").getString(); + if (sElig.equalsIgnoreCase("Y")) { + sElig = "Applicable for All"; + } else { + sElig = oRow.get("eligibility").getString(); + } + oDtlBean.setTxteligSql(sElig); + arylstDetail.add(oDtlBean); + } + return arylstDetail; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHdrBean, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + HrmGenEligRuleQueryHdrBean oHrmGenEligRuleQueryHdrBean = (HrmGenEligRuleQueryHdrBean)oBaseHdrBean; + oBean1 = new DBUtilitiesBean(); + if (oHrmGenEligRuleQueryHdrBean.getDocType().equalsIgnoreCase("V")) + oBean1.createBatch("HRMELIGRULEQUERY.proc_DeleteLeaveEligQuery(?)"); + if (oHrmGenEligRuleQueryHdrBean.getDocType().equalsIgnoreCase("L")) + oBean1.createBatch("HRMELIGRULEQUERY.proc_DeleteLoanEligQuery(?)"); + if (oHrmGenEligRuleQueryHdrBean.getDocType().equalsIgnoreCase("A")) + oBean1.createBatch("HRMELIGRULEQUERY.proc_DeleteAdvanceEligQuery(?)"); + if (oHrmGenEligRuleQueryHdrBean.getDocType().equalsIgnoreCase("S")) + oBean1.createBatch("HRMELIGRULEQUERY.proc_DeleteSeparationEligQuery(?)"); + if (oHrmGenEligRuleQueryHdrBean.getDocType().equalsIgnoreCase("C")) + oBean1.createBatch("HRMELIGRULEQUERY.proc_DeleteClaimEligQuery(?)"); + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmGenEligRuleQueryDtlBean oHrmGenEligRuleQueryDtlBean = itrBean.next(); + if (oHrmGenEligRuleQueryDtlBean.getStatus().equals("D")) { + arylstParameters.add(new DBObject(1, 1, 12, oHrmGenEligRuleQueryDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnAppBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnAppBO.java new file mode 100644 index 0000000..2168541 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnAppBO.java @@ -0,0 +1,1751 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLnAppDtlBean; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.bean.HrmLnDisDtlBean; +import wenrgise.hrms.bean.HrmLnHblIntDtlBean; +import wenrgise.hrms.vo.HrmLnAppQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmLnAppBO extends HrmBaseBO { + public HrmLnAppBO() {} + + public HrmLnAppBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrEmpLoanAppHdrMetaInfo(HrmLnAppQVO oHrmLnAppQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmLnAppQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmLnAppQVO.getEmployeeNumber())); + oParameters.add(new DBObject(3, 1, 12, oHrmLnAppQVO.getLoanCode())); + oParameters.add(new DBObject(4, 2, -5)); + oParameters.add(new DBObject(5, 2, 93)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNAPPL.procHrmLnAppHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrEmpLoanAppHeader(HrmLnAppQVO oHrmLnAppQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oEmpLoanAppDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmLnAppQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmLnAppQVO.getEmployeeNumber())); + oParameters.add(new DBObject(5, 1, 12, oHrmLnAppQVO.getLoanCode())); + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNAPPL.procHrmLnAppHdr(?,?,?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oEmpLoanAppDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmLnAppHdrBean oHrmLnAppHdrBean = new HrmLnAppHdrBean(); + oHrmLnAppHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmLnAppHdrBean.setEmpId(oRow.get("EMP_ID").getString()); + oHrmLnAppHdrBean.setEmployeeNumber(oRow.get("EMP_NO").getString()); + oHrmLnAppHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmLnAppHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmLnAppHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmLnAppHdrBean.setGrade(oRow.get("GRADE").getString()); + oHrmLnAppHdrBean.setDesignation(oRow.get("DESIGNATION").getString()); + oHrmLnAppHdrBean.setLocation(oRow.get("LOCATION").getString()); + oHrmLnAppHdrBean.setLoanCode(oRow.get("LOAN_CODE").getString()); + oHrmLnAppHdrBean.setLoanDesc(oRow.get("LOAN_NAME").getString()); + oHrmLnAppHdrBean.setLoanCodeId(oRow.get("LOAN_ID").getString()); + oHrmLnAppHdrBean.setAppliedAmount(oRow.get("APPLIED_AMOUNT").getString()); + oHrmLnAppHdrBean.setApplnDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmLnAppHdrBean.setEligibleAmount(oRow.get("ELIG_LOAN_AMT").getString()); + oHrmLnAppHdrBean.setFullyRepaid(String.valueOf(oRow.get("FULLY_REPAID_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmLnAppHdrBean.setLoanDetails(oRow.get("LOAN_DETAILS").getString()); + oHrmLnAppHdrBean.setApproverNoId(oRow.get("APPROVER_ID").getString()); + oHrmLnAppHdrBean.setApproverName(oRow.get("APPROVER_NAME").getString()); + oHrmLnAppHdrBean.setSanctionedAmount(oRow.get("LOAN_AMOUNT").getString()); + oHrmLnAppHdrBean.setSanctionDate(EnrgiseUtil.convertToString(oRow.get("SANCTION_DATE").getDate())); + oHrmLnAppHdrBean.setRemarks(oRow.get("APPROVER_REMARKS").getString()); + oHrmLnAppHdrBean.setTotalInst(oRow.get("NO_OF_INSTALMENTS").getString()); + oHrmLnAppHdrBean.setTotalPrincipalInst(oRow.get("NO_OF_INST_PRINCIPAL").getString()); + oHrmLnAppHdrBean.setTotalInterestInst(oRow.get("NO_OF_INST_INTEREST").getString()); + oHrmLnAppHdrBean.setInstAmount(oRow.get("INSTALLMENT_AMOUNT").getString()); + oHrmLnAppHdrBean.setPayrollMonth(oRow.get("RECOVERY_YYYYMM").getString()); + oHrmLnAppHdrBean.setNoOfInstPaid(oRow.get("NO_OF_INST_PAID").getString()); + oHrmLnAppHdrBean.setNoOfInstPrincipalPaid(oRow.get("NO_OF_INST_PAID_PRINCIPAL").getString()); + oHrmLnAppHdrBean.setNoOfInstInterestPaid(oRow.get("NO_OF_INST_PAID_INTEREST").getString()); + oHrmLnAppHdrBean.setTotalAmountPaid(oRow.get("TOTAL_AMOUNT_PAID").getString()); + oHrmLnAppHdrBean.setPrincipalPaid(oRow.get("TOTAL_PRINCIPAL_PAID").getString()); + oHrmLnAppHdrBean.setInterestPaid(oRow.get("TOTAL_INTEREST_PAID").getString()); + oHrmLnAppHdrBean.setTotalBalance(oRow.get("TOTAL_OUTSTG_BAL").getString()); + oHrmLnAppHdrBean.setPrincipalBalance(oRow.get("OUTSTG_BAL_PRINCIPAL").getString()); + oHrmLnAppHdrBean.setInterestBalance(oRow.get("OUTSTG_BAL_INTEREST").getString()); + oHrmLnAppHdrBean.setHblAppliedFor(oRow.get("HBL_APPLIED_FOR").getString()); + oHrmLnAppHdrBean.setHblBookNo(oRow.get("HBL_BOOK_NO").getString()); + oHrmLnAppHdrBean.setHblBranhConst(oRow.get("HBL_NEAREST_BRANCH").getString()); + oHrmLnAppHdrBean.setHblCity(oRow.get("HBL_CITY").getString()); + oHrmLnAppHdrBean.setHblDag(oRow.get("HBL_DAG_CSPLOT").getString()); + oHrmLnAppHdrBean.setHblDistrict(oRow.get("HBL_DIST").getString()); + oHrmLnAppHdrBean.setHblDocSubmitted(String.valueOf(oRow.get("HBL_DOC_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmLnAppHdrBean.setHblKhatian(oRow.get("HBL_KHATIAN").getString()); + oHrmLnAppHdrBean.setHblMouza(oRow.get("HBL_MOUZA").getString()); + oHrmLnAppHdrBean.setHblNoOfDeed(oRow.get("HBL_DEED_NO").getString()); + oHrmLnAppHdrBean.setHblPageNo(oRow.get("HBL_PAGE_NO").getString()); + oHrmLnAppHdrBean.setHblParentDeed(oRow.get("HBL_PARENT_DEED_NO").getString()); + oHrmLnAppHdrBean.setHblPO(oRow.get("HBL_PO").getString()); + oHrmLnAppHdrBean.setHblRegisteredAt(oRow.get("HBL_REGISTER_ADD").getString()); + oHrmLnAppHdrBean.setHblVolOfDeed(oRow.get("HBL_DEED_VOL").getString()); + oEmpLoanAppDetail.add(oHrmLnAppHdrBean); + } + return oEmpLoanAppDetail; + } + + public RecordMetaInfo getHrmLnAppDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procHrLnAppDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLnAppDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arrLoanApp = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procHrLnAppDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + HrmLnAppDtlBean oHrmLnAppDtlBean = new HrmLnAppDtlBean(); + while (itrBean.hasNext()) { + if (count == 0) + arrLoanApp = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + oHrmLnAppDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmLnAppDtlBean.setAppliedAmount(oRow.get("APPLIED_AMOUNT").getString()); + oHrmLnAppDtlBean.setApplnDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmLnAppDtlBean.setApprovedFlag(oRow.get("APPROVED_FLAG").getString()); + oHrmLnAppDtlBean.setEligibleAmount(oRow.get("ELIG_LOAN_AMT").getString()); + oHrmLnAppDtlBean.setFirstInstDate(EnrgiseUtil.convertToString(oRow.get("FIRST_INSTAL_PAY_DATE").getDate())); + oHrmLnAppDtlBean.setFullyRepaid(String.valueOf(oRow.get("FULLY_REPAID_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmLnAppDtlBean.setNoOfInstallment(oRow.get("NO_OF_INSTALMENTS").getString()); + oHrmLnAppDtlBean.setPercProperty(oRow.get("PERC_PROPERTY").getString()); + oHrmLnAppDtlBean.setPropertyPrice(oRow.get("PROPERTY_PRICE").getString()); + oHrmLnAppDtlBean.setReason(oRow.get("REASON").getString()); + oHrmLnAppDtlBean.setRemarks(oRow.get("REJECTION_REMARK").getString()); + oHrmLnAppDtlBean.setSanctionedAmount(oRow.get("LOAN_AMOUNT").getString()); + oHrmLnAppDtlBean.setSanctionDate(EnrgiseUtil.convertToString(oRow.get("SANCTION_DATE").getDate())); + arrLoanApp.add(oHrmLnAppDtlBean); + } + return arrLoanApp; + } + + public RecordMetaInfo getHrmLnDisDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procHrLnDisDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLnDisDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arrLoanDisburse = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procHrLnDisDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arrLoanDisburse = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmLnDisDtlBean oHrmLnDisDtlBean = new HrmLnDisDtlBean(); + oHrmLnDisDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmLnDisDtlBean.setTentativeDisDate(EnrgiseUtil.convertToString(oRow.get("TENTATIVE_DATE").getDate())); + oHrmLnDisDtlBean.setTentativeAmt(oRow.get("TENTATIVE_AMOUNT").getString()); + oHrmLnDisDtlBean.setActDisDate(EnrgiseUtil.convertToString(oRow.get("ACTUAL_DATE").getDate())); + oHrmLnDisDtlBean.setActDisAmt(oRow.get("ACTUAL_AMOUNT").getString()); + arrLoanDisburse.add(oHrmLnDisDtlBean); + } + return arrLoanDisburse; + } + + public RecordMetaInfo getHrmLnHblIntRateMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.prochrlnHblIntcount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLnHblIntRateDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arrHblIntRate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.prochrlnHblInt(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arrHblIntRate = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmLnHblIntDtlBean oHrmLnHblIntDtlBean = new HrmLnHblIntDtlBean(); + oHrmLnHblIntDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmLnHblIntDtlBean.setTxtFromAmount(oRow.get("amount_from").getString()); + oHrmLnHblIntDtlBean.setTxtToAmount(oRow.get("amount_to").getString()); + oHrmLnHblIntDtlBean.setTxtPercentage(oRow.get("int_perc").getString()); + arrHblIntRate.add(oHrmLnHblIntDtlBean); + } + return arrHblIntRate; + } + + public LovVO getHrmLnAppEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procGetEmpQLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmLnAppEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procGetEmpLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmLnAppLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.loanCode"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.loanDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sEmpId = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + if (oLovQueryVO.getProperty("empId") != null) + sEmpId = oLovQueryVO.getProperty("empId"); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procGetHrmLnAppLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("LOAN_ID").getString()); + oLOVBean.setDetailField2(oRow.get("LOAN_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("LOAN_NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmLnAppInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sEmpId = oLovQueryVO.getProperty("empId"); + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.loanCode"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.loanDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procGetHrmLnAppInsLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("LOAN_ID").getString()); + oLOVBean.setDetailField2(oRow.get("LOAN_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("LOAN_NAME").getString()); + arylstList.add(oLOVBean); + } + arylstList = checkLOVConstraint(arylstList, oLovQueryVO); + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + private ArrayList checkLOVConstraint(ArrayList arylstList, LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LOVBean oLOVBean = null; + ArrayList arylstNewList = new ArrayList(); + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oLOVBean = itrBean.next(); + String sId = oLOVBean.getDetailField1(); + String sAllFlag = getAllFlagInfo(sId); + System.out.println(sAllFlag); + if (sAllFlag.equalsIgnoreCase("Y")) { + arylstNewList.add(oLOVBean); + continue; + } + String sLoanId = oLOVBean.getDetailField1(); + String sQuery = String.valueOf(" Select ELIG_SQL as ELIG_SQL from HRM_LOAN_DTL where ID= ").concat(String.valueOf(sLoanId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList1 = oBean.executeQuery(sQuery); + Iterator itrBean1 = arylstList1.iterator(); + if (itrBean1.hasNext()) { + QueryRow oRow = itrBean1.next(); + String sSql = oRow.get("ELIG_SQL").getString(); + if (EnrgiseUtil.checkString(sSql)) { + String sEmpId = oLovQueryVO.getProperty("empId"); + StringBuffer s = new StringBuffer(sSql); + s.replace(s.lastIndexOf("?"), s.lastIndexOf("?") + 1, sEmpId); + System.out.println(s); + ArrayList arylstList2 = oBean.executeQuery(s.toString()); + if (arylstList2.size() != 0) + arylstNewList.add(oLOVBean); + } + } + } + return arylstNewList; + } + + public String getAllFlagInfo(String sLoanId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sAllFlag = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sLoanId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procGetAllFlag(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sAllFlag = oRow.get("ALL_FLAG").getString(); + } + return sAllFlag; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_LOAN"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + saveHrmLnDisDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + saveHrmLnHblIntRate(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmLnDisDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmLnDisDtlBean oHrmLnDisDtlBean = itrBean.next(); + if (oHrmLnDisDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLNAPPL.procUpsertHrmLnDisDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnDisDtlBean.getTentativeDisDate()))); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnDisDtlBean.getTentativeAmt())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnDisDtlBean.getActDisDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLnDisDtlBean.getActDisAmt())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmLnDisDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLNAPPL.procUpsertHrmLnDisDtl(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnDisDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnDisDtlBean.getTentativeDisDate()))); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnDisDtlBean.getTentativeAmt())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnDisDtlBean.getActDisDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLnDisDtlBean.getActDisAmt())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmLnDisDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMLNAPPL.procDeleteHrmLnDisDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLnDisDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmLnHblIntRate(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + DBUtilitiesBean oBean2 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmLnHblIntDtlBean oHrmLnHblIntDtlBean = itrBean.next(); + if (oHrmLnHblIntDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLNAPPL.procupserthrmHblInt(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmLnHblIntDtlBean.getTxtFromAmount())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnHblIntDtlBean.getTxtToAmount())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLnHblIntDtlBean.getTxtPercentage())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmLnHblIntDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean2 = new DBUtilitiesBean(); + oBean2.createBatch("HRMLNAPPL.procupserthrmHblInt(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnHblIntDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmLnHblIntDtlBean.getTxtFromAmount())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnHblIntDtlBean.getTxtToAmount())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLnHblIntDtlBean.getTxtPercentage())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean2.addToBatch(arylstParam); + continue; + } + if (oHrmLnHblIntDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMLNAPPL.procdeleteLoanIntRate(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLnHblIntDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean2.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sEligAmount = calculateEligibleAmount((HrmLnAppHdrBean)oBaseHeaderBean); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnAppHdrBean.getEmpId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLnAppHdrBean.getLoanCodeId())); + arylstParam.add(new DBObject(4, 1, 12, sEligAmount)); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnAppHdrBean.getAppliedAmount())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getApplnDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLnAppHdrBean.getLoanDetails())); + arylstParam.add(new DBObject(8, 1, 12, String.valueOf(oHrmLnAppHdrBean.getFullyRepaid()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(9, 1, 12, oHrmLnAppHdrBean.getSanctionedAmount())); + arylstParam.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getSanctionDate()))); + arylstParam.add(new DBObject(11, 1, 12, oHrmLnAppHdrBean.getPayrollMonth())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLnAppHdrBean.getTotalInst())); + arylstParam.add(new DBObject(13, 1, 12, oHrmLnAppHdrBean.getTotalPrincipalInst())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLnAppHdrBean.getTotalInterestInst())); + arylstParam.add(new DBObject(15, 1, 12, oHrmLnAppHdrBean.getInstAmount())); + arylstParam.add(new DBObject(16, 1, 12, oHrmLnAppHdrBean.getApproverNoId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmLnAppHdrBean.getRemarks())); + arylstParam.add(new DBObject(18, 1, 12, oHrmLnAppHdrBean.getHblAppliedFor())); + arylstParam.add(new DBObject(19, 1, 12, oHrmLnAppHdrBean.getHblBookNo())); + arylstParam.add(new DBObject(20, 1, 12, oHrmLnAppHdrBean.getHblBranhConst())); + arylstParam.add(new DBObject(21, 1, 12, oHrmLnAppHdrBean.getHblCity())); + arylstParam.add(new DBObject(22, 1, 12, oHrmLnAppHdrBean.getHblDag())); + arylstParam.add(new DBObject(23, 1, 12, oHrmLnAppHdrBean.getHblDistrict())); + arylstParam.add(new DBObject(24, 1, 12, String.valueOf(oHrmLnAppHdrBean.getHblDocSubmitted()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(25, 1, 12, oHrmLnAppHdrBean.getHblKhatian())); + arylstParam.add(new DBObject(26, 1, 12, oHrmLnAppHdrBean.getHblMouza())); + arylstParam.add(new DBObject(27, 1, 12, oHrmLnAppHdrBean.getHblNoOfDeed())); + arylstParam.add(new DBObject(28, 1, 12, oHrmLnAppHdrBean.getHblPageNo())); + arylstParam.add(new DBObject(29, 1, 12, oHrmLnAppHdrBean.getHblParentDeed())); + arylstParam.add(new DBObject(30, 1, 12, oHrmLnAppHdrBean.getHblPO())); + arylstParam.add(new DBObject(31, 1, 12, oHrmLnAppHdrBean.getHblRegisteredAt())); + arylstParam.add(new DBObject(32, 1, 12, oHrmLnAppHdrBean.getHblVolOfDeed())); + arylstParam.add(new DBObject(33, 1, 12, null)); + arylstParam.add(new DBObject(34, 1, 12, null)); + arylstParam.add(new DBObject(35, 1, 12, null)); + arylstParam.add(new DBObject(36, 1, 12, null)); + arylstParam.add(new DBObject(37, 1, 12, null)); + arylstParam.add(new DBObject(38, 1, 12, null)); + arylstParam.add(new DBObject(39, 1, 12, null)); + arylstParam.add(new DBObject(40, 1, 12, null)); + arylstParam.add(new DBObject(41, 1, 93, null)); + arylstParam.add(new DBObject(42, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(43, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(44, 1, 12, null)); + arylstParam.add(new DBObject(45, 2, 12)); + arylstParam.add(new DBObject(46, 2, 12)); + arylstParam.add(new DBObject(47, 2, 12)); + arylstParam.add(new DBObject(48, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procUpsertHrmLnAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + String sFullyRepaid = new String(); + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getBulkAmount())) { + oHrmLnAppHdrBean.setBulkFlag("N"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getTotalBalance())) + if (Float.parseFloat(oHrmLnAppHdrBean.getTotalBalance()) == 0.0D) { + sFullyRepaid = "Y"; + } else { + sFullyRepaid = "N"; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnAppHdrBean.getEmpId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLnAppHdrBean.getLoanCodeId())); + arylstParam.add(new DBObject(4, 1, 12, sEligAmount)); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnAppHdrBean.getAppliedAmount())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getApplnDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLnAppHdrBean.getLoanDetails())); + arylstParam.add(new DBObject(8, 1, 12, sFullyRepaid)); + arylstParam.add(new DBObject(9, 1, 12, oHrmLnAppHdrBean.getSanctionedAmount())); + arylstParam.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getSanctionDate()))); + arylstParam.add(new DBObject(11, 1, 12, oHrmLnAppHdrBean.getPayrollMonth())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLnAppHdrBean.getTotalInst())); + arylstParam.add(new DBObject(13, 1, 12, oHrmLnAppHdrBean.getTotalPrincipalInst())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLnAppHdrBean.getTotalInterestInst())); + arylstParam.add(new DBObject(15, 1, 12, oHrmLnAppHdrBean.getInstAmount())); + arylstParam.add(new DBObject(16, 1, 12, oHrmLnAppHdrBean.getApproverNoId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmLnAppHdrBean.getRemarks())); + arylstParam.add(new DBObject(18, 1, 12, oHrmLnAppHdrBean.getHblAppliedFor())); + arylstParam.add(new DBObject(19, 1, 12, oHrmLnAppHdrBean.getHblBookNo())); + arylstParam.add(new DBObject(20, 1, 12, oHrmLnAppHdrBean.getHblBranhConst())); + arylstParam.add(new DBObject(21, 1, 12, oHrmLnAppHdrBean.getHblCity())); + arylstParam.add(new DBObject(22, 1, 12, oHrmLnAppHdrBean.getHblDag())); + arylstParam.add(new DBObject(23, 1, 12, oHrmLnAppHdrBean.getHblDistrict())); + arylstParam.add(new DBObject(24, 1, 12, String.valueOf(oHrmLnAppHdrBean.getHblDocSubmitted()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(25, 1, 12, oHrmLnAppHdrBean.getHblKhatian())); + arylstParam.add(new DBObject(26, 1, 12, oHrmLnAppHdrBean.getHblMouza())); + arylstParam.add(new DBObject(27, 1, 12, oHrmLnAppHdrBean.getHblNoOfDeed())); + arylstParam.add(new DBObject(28, 1, 12, oHrmLnAppHdrBean.getHblPageNo())); + arylstParam.add(new DBObject(29, 1, 12, oHrmLnAppHdrBean.getHblParentDeed())); + arylstParam.add(new DBObject(30, 1, 12, oHrmLnAppHdrBean.getHblPO())); + arylstParam.add(new DBObject(31, 1, 12, oHrmLnAppHdrBean.getHblRegisteredAt())); + arylstParam.add(new DBObject(32, 1, 12, oHrmLnAppHdrBean.getHblVolOfDeed())); + arylstParam.add(new DBObject(33, 1, 12, oHrmLnAppHdrBean.getTotalAmountPaid())); + arylstParam.add(new DBObject(34, 1, 12, oHrmLnAppHdrBean.getPrincipalPaid())); + arylstParam.add(new DBObject(35, 1, 12, oHrmLnAppHdrBean.getTotalBalance())); + arylstParam.add(new DBObject(36, 1, 12, oHrmLnAppHdrBean.getPrincipalBalance())); + arylstParam.add(new DBObject(37, 1, 12, oHrmLnAppHdrBean.getInterestBalance())); + arylstParam.add(new DBObject(38, 1, 12, oHrmLnAppHdrBean.getInterestPaid())); + arylstParam.add(new DBObject(39, 1, 12, null)); + arylstParam.add(new DBObject(40, 1, 12, oHrmLnAppHdrBean.getBulkFlag())); + arylstParam.add(new DBObject(41, 1, 93, null)); + arylstParam.add(new DBObject(42, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(43, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(44, 1, 12, oHrmLnAppHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(45, 2, 12)); + arylstParam.add(new DBObject(46, 2, 12)); + arylstParam.add(new DBObject(47, 2, 12)); + arylstParam.add(new DBObject(48, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procUpsertHrmLnAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getBulkAmount())) { + oHrmLnAppHdrBean.setBulkFlag("Y"); + if (Double.parseDouble(oHrmLnAppHdrBean.getTotalBalance()) == Double.parseDouble(oHrmLnAppHdrBean.getBulkAmount())) { + sFullyRepaid = "Y"; + } else { + sFullyRepaid = "N"; + } + double iTotalPaid = 0.0D; + double iPrincipalPaid = 0.0D; + double iTotalBalance = 0.0D; + double iPrincipalBalance = 0.0D; + double iIntBalance = 0.0D; + double iInterestPaid = 0.0D; + double bulk = Double.parseDouble(oHrmLnAppHdrBean.getBulkAmount()); + if (bulk < Float.parseFloat(oHrmLnAppHdrBean.getPrincipalBalance())) { + iTotalPaid = Float.parseFloat(oHrmLnAppHdrBean.getTotalAmountPaid()) + bulk; + iPrincipalPaid = Float.parseFloat(oHrmLnAppHdrBean.getPrincipalPaid()) + bulk; + iTotalBalance = Float.parseFloat(oHrmLnAppHdrBean.getTotalBalance()) - bulk; + iPrincipalBalance = Float.parseFloat(oHrmLnAppHdrBean.getPrincipalBalance()) - bulk; + iIntBalance = Float.parseFloat(oHrmLnAppHdrBean.getInterestBalance()); + iInterestPaid = Float.parseFloat(oHrmLnAppHdrBean.getInterestPaid()); + } else if (bulk >= Float.parseFloat(oHrmLnAppHdrBean.getPrincipalBalance())) { + iTotalPaid = Float.parseFloat(oHrmLnAppHdrBean.getTotalAmountPaid()) + bulk; + iPrincipalPaid = (Float.parseFloat(oHrmLnAppHdrBean.getPrincipalPaid()) + Float.parseFloat(oHrmLnAppHdrBean.getPrincipalBalance())); + iTotalBalance = Float.parseFloat(oHrmLnAppHdrBean.getTotalBalance()) - bulk; + iPrincipalBalance = 0.0D; + iIntBalance = iTotalBalance; + iInterestPaid = iTotalPaid - iPrincipalPaid; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnAppHdrBean.getEmpId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLnAppHdrBean.getLoanCodeId())); + arylstParam.add(new DBObject(4, 1, 12, sEligAmount)); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnAppHdrBean.getAppliedAmount())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getApplnDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLnAppHdrBean.getLoanDetails())); + arylstParam.add(new DBObject(8, 1, 12, sFullyRepaid)); + arylstParam.add(new DBObject(9, 1, 12, oHrmLnAppHdrBean.getSanctionedAmount())); + arylstParam.add(new DBObject(10, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getSanctionDate()))); + arylstParam.add(new DBObject(11, 1, 12, oHrmLnAppHdrBean.getPayrollMonth())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLnAppHdrBean.getTotalInst())); + arylstParam.add(new DBObject(13, 1, 12, oHrmLnAppHdrBean.getTotalPrincipalInst())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLnAppHdrBean.getTotalInterestInst())); + arylstParam.add(new DBObject(15, 1, 12, oHrmLnAppHdrBean.getInstAmount())); + arylstParam.add(new DBObject(16, 1, 12, oHrmLnAppHdrBean.getApproverNoId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmLnAppHdrBean.getRemarks())); + arylstParam.add(new DBObject(18, 1, 12, oHrmLnAppHdrBean.getHblAppliedFor())); + arylstParam.add(new DBObject(19, 1, 12, oHrmLnAppHdrBean.getHblBookNo())); + arylstParam.add(new DBObject(20, 1, 12, oHrmLnAppHdrBean.getHblBranhConst())); + arylstParam.add(new DBObject(21, 1, 12, oHrmLnAppHdrBean.getHblCity())); + arylstParam.add(new DBObject(22, 1, 12, oHrmLnAppHdrBean.getHblDag())); + arylstParam.add(new DBObject(23, 1, 12, oHrmLnAppHdrBean.getHblDistrict())); + arylstParam.add(new DBObject(24, 1, 12, String.valueOf(oHrmLnAppHdrBean.getHblDocSubmitted()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(25, 1, 12, oHrmLnAppHdrBean.getHblKhatian())); + arylstParam.add(new DBObject(26, 1, 12, oHrmLnAppHdrBean.getHblMouza())); + arylstParam.add(new DBObject(27, 1, 12, oHrmLnAppHdrBean.getHblNoOfDeed())); + arylstParam.add(new DBObject(28, 1, 12, oHrmLnAppHdrBean.getHblPageNo())); + arylstParam.add(new DBObject(29, 1, 12, oHrmLnAppHdrBean.getHblParentDeed())); + arylstParam.add(new DBObject(30, 1, 12, oHrmLnAppHdrBean.getHblPO())); + arylstParam.add(new DBObject(31, 1, 12, oHrmLnAppHdrBean.getHblRegisteredAt())); + arylstParam.add(new DBObject(32, 1, 12, oHrmLnAppHdrBean.getHblVolOfDeed())); + arylstParam.add(new DBObject(33, 1, 12, String.valueOf(iTotalPaid))); + arylstParam.add(new DBObject(34, 1, 12, String.valueOf(iPrincipalPaid))); + arylstParam.add(new DBObject(35, 1, 12, String.valueOf(iTotalBalance))); + arylstParam.add(new DBObject(36, 1, 12, String.valueOf(iPrincipalBalance))); + arylstParam.add(new DBObject(37, 1, 12, String.valueOf(iIntBalance))); + arylstParam.add(new DBObject(38, 1, 12, String.valueOf(iInterestPaid))); + arylstParam.add(new DBObject(39, 1, 12, String.valueOf(bulk))); + arylstParam.add(new DBObject(40, 1, 12, oHrmLnAppHdrBean.getBulkFlag())); + arylstParam.add(new DBObject(41, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getBulkPaymentDate()))); + arylstParam.add(new DBObject(42, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(43, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(44, 1, 12, oHrmLnAppHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(45, 2, 12)); + arylstParam.add(new DBObject(46, 2, 12)); + arylstParam.add(new DBObject(47, 2, 12)); + arylstParam.add(new DBObject(48, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLNAPPL.procUpsertHrmLnAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + } + return returnString; + } + + private String calculateEligibleAmount(HrmLnAppHdrBean oHrmLnAppHdrBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oOutArray = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + String sEligAmount = new String(); + String sGrLsFlag = new String(); + String sFlatAmt = new String(); + String sMaxLnPerc = new String(); + String sNoOfMnthSal = new String(); + String sPeriodLeft = new String(); + String sPeriodCompleted = new String(); + String sSalary = new String(); + String sBasic = new String(); + int count1 = 0; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmLnAppHdrBean.getLoanCodeId())); + oParameters.add(new DBObject(2, 1, 12, oHrmLnAppHdrBean.getEmpId())); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMLNAPPL.procCalculateEligibleAmount(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + count1 = 0; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count1++; + oRow = oIt.next(); + sGrLsFlag = oRow.get("GREATER_LESSER_FLAG").getString(); + sFlatAmt = oRow.get("FLAT_AMOUNT").getString(); + sMaxLnPerc = oRow.get("MAX_LOAN_PERC").getString(); + sNoOfMnthSal = oRow.get("NO_OF_MTHS_SALARY").getString(); + sPeriodLeft = oRow.get("MIN_YR_SERVICE_LEFT").getString(); + sPeriodCompleted = oRow.get("MIN_YEAR_IN_SERVICE").getString(); + sBasic = oRow.get("BASIC").getString(); + } + if (String.valueOf(oRow.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("G")) { + sSalary = String.valueOf(Float.parseFloat(sNoOfMnthSal) * Float.parseFloat(sBasic) * Float.parseFloat(sMaxLnPerc) / 100); + if (Float.parseFloat(sSalary) - Float.parseFloat(sFlatAmt) > false) { + sEligAmount = String.valueOf(sSalary); + } else if (Float.parseFloat(sFlatAmt) - Float.parseFloat(sSalary) > false) { + sEligAmount = String.valueOf(sFlatAmt); + } else { + sEligAmount = String.valueOf(sFlatAmt); + } + } + if (String.valueOf(oRow.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("L")) { + sSalary = String.valueOf(Float.parseFloat(sNoOfMnthSal) * Float.parseFloat(sBasic) * Float.parseFloat(sMaxLnPerc) / 100); + if (Float.parseFloat(sSalary) - Float.parseFloat(sFlatAmt) > false) { + sEligAmount = String.valueOf(sFlatAmt); + } else if (Float.parseFloat(sFlatAmt) - Float.parseFloat(sSalary) > false) { + sEligAmount = String.valueOf(sSalary); + } else { + sEligAmount = String.valueOf(sFlatAmt); + } + } + if (String.valueOf(oRow.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("F")) + sEligAmount = sFlatAmt; + if (String.valueOf(oRow.get("GREATER_LESSER_FLAG").getString()).equalsIgnoreCase("S")) + sEligAmount = String.valueOf(Float.parseFloat(sNoOfMnthSal) * Float.parseFloat(sBasic) * Float.parseFloat(sMaxLnPerc) / 100); + return sEligAmount; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("To Be Done"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmLnAppHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + if (arylstDetailBeanArray.size() != 0) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmLnDisDtlBean oHrmLnDisDtlBean = itrBean1.next(); + if (!oHrmLnDisDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDisDtl(oHrmLnDisDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmLnDisDtl")) + if (arylstDetailBeanArray.size() != 0) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 0; + while (itrBean1.hasNext()) { + HrmLnDisDtlBean oHrmLnDisDtlBean = itrBean1.next(); + if (!oHrmLnDisDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDisDtl(oHrmLnDisDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + if (arylstDetailBeanArray.size() != 0) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 0; + while (itrBean1.hasNext()) { + HrmLnHblIntDtlBean oHrmLnHblIntDtlBean = itrBean1.next(); + if (!oHrmLnHblIntDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryHblIntDtl(oHrmLnHblIntDtlBean, rowCount); + checkNumericFields(oHrmLnHblIntDtlBean, rowCount); + } + rowCount++; + } + } + } + } + + private void checkMandatoryHeader(HrmLnAppHdrBean oHrmLnAppHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getEmployeeNumber())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.employeeNumber"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getLoanCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.loanCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getAppliedAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.appliedAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getApplnDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.applnDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getSanctionedAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.sanctionedAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getSanctionDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.sanctionDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getTotalInst())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.noOfInstallment"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getTotalInterestInst())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.totalInterestInst"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getTotalPrincipalInst())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.totalPrincipalInst"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getInstAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.instAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getMode())) + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getBulkAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppln.bulkAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDisDtl(HrmLnDisDtlBean oHrmLnDisDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + rowCount++; + if (!EnrgiseUtil.checkString(oHrmLnDisDtlBean.getActDisAmt())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppDisbur.actDisAmt"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnDisDtlBean.getActDisDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppDisbur.actDisDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryHblIntDtl(HrmLnHblIntDtlBean oHrmLnHblIntDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + rowCount++; + if (!EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtFromAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppHblIntRate.fromAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtToAmount())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppHblIntRate.toAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtPercentage())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppHblIntRate.percentage"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkNumericFields(HrmLnHblIntDtlBean oHrmLnHblIntDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + rowCount++; + if (EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtFromAmount())) + if (!EnrgiseUtil.checkNumber(oHrmLnHblIntDtlBean.getTxtFromAmount(), 15, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppHblIntRate.fromAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtToAmount())) + if (!EnrgiseUtil.checkNumber(oHrmLnHblIntDtlBean.getTxtFromAmount(), 15, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppHblIntRate.toAmount"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtPercentage())) + if (!EnrgiseUtil.checkNumber(oHrmLnHblIntDtlBean.getTxtFromAmount(), 15, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpLoanAppHblIntRate.percentage"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + if (!sScreenMode.equalsIgnoreCase("U")) + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getPayrollMonth())) + checkRecoveryYearMonth((HrmLnAppHdrBean)oBaseHeaderBean, sScreenMode); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getBulkAmount())) + checkBulkAmount((HrmLnAppHdrBean)oBaseHeaderBean); + checkNoOfInstallment((HrmLnAppHdrBean)oBaseHeaderBean); + checkServicePeriod((HrmLnAppHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmLnApp")) { + if (oHrmLnAppHdrBean.getLoanCode().equalsIgnoreCase("99")) { + String sQuery = String.valueOf("Select id from hrm_loan_int_rate m where m.emp_loan_id = ").concat(String.valueOf(oHrmLnAppHdrBean.getHeaderPrimaryKey())); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + if (arylstList.size() == 0) { + ArrayList arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.DisbSaveError", arylstParam)); + } + } + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmLnDisDtlBean oHrmLnDisDtlBean = itrBean1.next(); + if (!oHrmLnDisDtlBean.getStatus().equals("D")) { + compareLoanAmount(oHrmLnAppHdrBean, arylstDetailBeanArray); + checkDatesConstraint(oHrmLnAppHdrBean, arylstDetailBeanArray, arylstErrorList); + } + if (oHrmLnDisDtlBean.getStatus().equals("D")) + checkPayrollFlag(oHrmLnAppHdrBean, arylstDetailBeanArray, arylstErrorList); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) { + Iterator itrBean2 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean2.hasNext()) { + HrmLnHblIntDtlBean oHrmLnHblIntDtlBean = itrBean2.next(); + if (!oHrmLnHblIntDtlBean.getStatus().equals("D")) { + checkFromNToAmount(oHrmLnHblIntDtlBean, rowCount, arylstErrorList); + checkPercentage(oHrmLnHblIntDtlBean, rowCount, arylstErrorList); + } + rowCount++; + } + } + } + reportError(arylstErrorList); + } + + private void checkFromNToAmount(HrmLnHblIntDtlBean oHrmLnHblIntDtlBean, int rowCount, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParams = new ArrayList(); + if (EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtFromAmount())) + if (EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtToAmount())) + if (Long.parseLong(oHrmLnHblIntDtlBean.getTxtFromAmount()) > Long.parseLong(oHrmLnHblIntDtlBean.getTxtToAmount())) { + oParams = new ArrayList(); + oParams.add(String.valueOf(rowCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppHblIntRate.AmountError", oParams, "E")); + } + } + + private void checkPercentage(HrmLnHblIntDtlBean oHrmLnHblIntDtlBean, int rowCount, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParams = new ArrayList(); + if (EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtFromAmount())) + if (EnrgiseUtil.checkString(oHrmLnHblIntDtlBean.getTxtToAmount())) + if (Double.parseDouble(oHrmLnHblIntDtlBean.getTxtPercentage()) >= 100) { + oParams = new ArrayList(); + oParams.add(String.valueOf(rowCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppHblIntRate.PercentError", oParams, "E")); + } + } + + private void checkPayrollFlag(HrmLnAppHdrBean oHrmLnAppHdrBean, ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmLnDisDtlBean oHrmLnDisDtlBean = itrBean1.next(); + String sQuery = String.valueOf(" Select ID as ID from HRM_LOAN_DISB_DTL where PAYROLL_YYYYMM is null and ID=").concat(String.valueOf(oHrmLnDisDtlBean.getDetailId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + if (arylstList.size() == 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppDisbur.deleteNotPossible", arylstParam)); + } + reportError(arylstErrorList); + } + } + + private void checkDatesConstraint(HrmLnAppHdrBean oHrmLnAppHdrBean, ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + int n = arylstDetailBeanArray.size(); + HrmLnDisDtlBean oHrmLnDisDtlBean = arylstDetailBeanArray.get(n - 1); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmLnDisDtlBean.getActDisDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmLnDisDtlBean.getActDisDate(), oHrmLnAppHdrBean.getSanctionDate()); + if (dateFlag == -1 && dateFlag != -2) + if (arylstErrorList.isEmpty()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppDisbur.disDateValidation", arylstParam)); + } + } + } + + private void checkNoOfInstallment(HrmLnAppHdrBean oHrmLnAppHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + String sNoOfInstallments = new String(); + String sPrincipalInstallments = new String(); + String sInterestInstallments = new String(); + String sNoOfMonths = new String(); + ArrayList oParameters = new ArrayList(); + ArrayList oOutArray = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + int count1 = 0; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmLnAppHdrBean.getEmpId())); + oParameters.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getApplnDate()))); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMLNAPPL.procGetMonthsRemaining(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + count1 = 0; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count1++; + oRow = oIt.next(); + sNoOfMonths = oRow.get("NO_OF_MONTHS").getString(); + } + sNoOfInstallments = oHrmLnAppHdrBean.getTotalInst(); + sPrincipalInstallments = oHrmLnAppHdrBean.getTotalInterestInst(); + sInterestInstallments = oHrmLnAppHdrBean.getTotalPrincipalInst(); + if (Float.parseFloat(sNoOfInstallments) > Float.parseFloat(sPrincipalInstallments) + Float.parseFloat(sInterestInstallments) || Float.parseFloat(sNoOfInstallments) < Float.parseFloat(sPrincipalInstallments) + Float.parseFloat(sInterestInstallments)) { + arylstParam = new ArrayList(); + arylstParam.add("Loan Application: No Of Installment"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkNoOfInst", arylstParam)); + } + if (Float.parseFloat(sNoOfInstallments) > Float.parseFloat(sNoOfMonths)) { + arylstParam = new ArrayList(); + arylstParam.add("Loan Application: No Of Installment"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.noOfInstError", arylstParam)); + } + reportError(arylstErrorList); + } + + private void checkRecoveryYearMonth(HrmLnAppHdrBean oHrmLnAppHdrBean, String sScreenMode) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + String sPayrollMonth = new String(); + String sMonth = new String(); + sPayrollMonth = oHrmLnAppHdrBean.getPayrollMonth(); + if (Float.parseFloat(sPayrollMonth.substring(4, 6)) < true || Float.parseFloat(sPayrollMonth.substring(4, 6)) > 12) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth", arylstParam)); + } + if (Float.parseFloat(sPayrollMonth.substring(0, 1)) == false) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollYear", arylstParam)); + } + HrmCommonBO oBO = new HrmCommonBO(); + String sysDate = oBO.getSysDate(); + String sYYYYMM = String.valueOf(sysDate.substring(6, sysDate.length())).concat(String.valueOf(sysDate.substring(3, 5))); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam1 = new ArrayList(); + arylstParam1.add(new DBObject(1, 1, 12, oHrmLnAppHdrBean.getHeaderPrimaryKey())); + arylstParam1.add(new DBObject(2, 2, 4)); + arylstParam1.add(new DBObject(3, 2, 4)); + arylstParam1.add(new DBObject(4, 2, 12)); + arylstParam1.add(new DBObject(5, 2, 12)); + arylstParam1.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam1, "hrmlnappl.procgetpayrollinfo(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + DBObject oOutObject1 = arylstOutArray.get(1); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + int yearMonth = ((Integer)oOutObject1.getObject()).intValue(); + int year = Integer.parseInt(String.valueOf(yearMonth).substring(0, 4)); + int month = Integer.parseInt(String.valueOf(yearMonth).substring(4, 6)); + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getBulkAmount())) { + if (year > Integer.parseInt(sPayrollMonth.substring(0, 4))) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth1", arylstParam)); + } + if (year == Integer.parseInt(sPayrollMonth.substring(0, 4))) + if (month > Integer.parseInt(sPayrollMonth.substring(4, 6))) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth1", arylstParam)); + } + } + if (iVal != 1) { + arylstParam.add("Loan Application: Year Month"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkPayrollMonth2", arylstParam)); + } + reportError(arylstErrorList); + } + + private void checkBulkAmount(HrmLnAppHdrBean oHrmLnAppHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmLnAppHdrBean.getTotalBalance())) { + arylstParam.add("Loan Application: Bulk Amount"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkBulk", arylstParam)); + } else { + if (Double.parseDouble(oHrmLnAppHdrBean.getBulkAmount()) == 0.0D) { + arylstParam.add("Loan Application: Bulk Amount"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkBulkAmount", arylstParam)); + } + if (Double.parseDouble(oHrmLnAppHdrBean.getBulkAmount()) > Double.parseDouble(oHrmLnAppHdrBean.getTotalBalance())) { + arylstParam.add("Loan Application: Bulk Amount"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.checkBulkAmount1", arylstParam)); + } + } + reportError(arylstErrorList); + } + + private void checkServicePeriod(HrmLnAppHdrBean oHrmLnAppHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + String sMinSerPeriod = new String(); + String sRemainingSerPeriod = new String(); + String sNoOfMonthsInService = new String(); + String sNoOfMonthsRemaining = new String(); + ArrayList oParameters = new ArrayList(); + ArrayList oOutArray = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + int count1 = 0; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmLnAppHdrBean.getEmpId())); + oParameters.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnAppHdrBean.getApplnDate()))); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMLNAPPL.procGetServicePeriod(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + count1 = 0; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count1++; + oRow = oIt.next(); + sNoOfMonthsInService = oRow.get("NO_OF_MONTHS").getString(); + sNoOfMonthsRemaining = oRow.get("REMAINING_MONTHS").getString(); + } + ArrayList oParameters1 = new ArrayList(); + ArrayList oOutArray1 = new ArrayList(); + ArrayList oList1 = new ArrayList(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + QueryRow oRow1 = null; + int count2 = 0; + oParameters1 = new ArrayList(); + oParameters1.add(new DBObject(1, 1, 12, oHrmLnAppHdrBean.getLoanCodeId())); + oParameters1.add(new DBObject(2, 1, 12, oHrmLnAppHdrBean.getEmpId())); + oParameters1.add(new DBObject(3, 2, -10)); + oParameters1.add(new DBObject(4, 2, 12)); + oParameters1.add(new DBObject(5, 2, 12)); + oParameters1.add(new DBObject(6, 2, 4)); + oOutArray1 = oBean1.callProc(oParameters1, "HRMLNAPPL.procCalculateEligibleAmount(?,?,?,?,?,?)"); + oList1 = (ArrayList)((DBObject)oOutArray1.get(0)).getObject(); + count2 = 0; + Iterator oIt1 = oList1.iterator(); + while (oIt1.hasNext()) { + count2++; + oRow1 = oIt1.next(); + sMinSerPeriod = oRow1.get("MIN_YEAR_IN_SERVICE").getString(); + sRemainingSerPeriod = oRow1.get("MIN_YR_SERVICE_LEFT").getString(); + } + if (EnrgiseUtil.checkString(sMinSerPeriod) && EnrgiseUtil.checkString(sRemainingSerPeriod)) { + if (Float.parseFloat(sMinSerPeriod) * 12 > Float.parseFloat(sNoOfMonthsInService)) { + arylstParam = new ArrayList(); + arylstParam.add("Loan Application: Service Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.minServicePeriodError", arylstParam)); + } + if (Float.parseFloat(sRemainingSerPeriod) * 12 > Float.parseFloat(sNoOfMonthsRemaining)) { + arylstParam = new ArrayList(); + arylstParam.add("Loan Application: Service Period"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.maxServicePeriodError", arylstParam)); + } + } + reportError(arylstErrorList); + } + + private void compareLoanAmount(HrmLnAppHdrBean oHrmLnAppHdrBean, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + int count = 0; + Iterator itrBean = arylstDetailBeanArray.iterator(); + double totalAmount = 0.0D; + double amount = 0.0D; + while (itrBean.hasNext()) { + HrmLnDisDtlBean oHrmLnDisDtlBean = arylstDetailBeanArray.get(count); + if (EnrgiseUtil.checkString(oHrmLnDisDtlBean.getActDisAmt())) + amount = Float.parseFloat(oHrmLnDisDtlBean.getActDisAmt()); + totalAmount += amount; + count++; + itrBean.next(); + } + ArrayList oParameters1 = new ArrayList(); + ArrayList oOutArray1 = new ArrayList(); + ArrayList oList1 = new ArrayList(); + Iterator oIt1 = arylstDetailBeanArray.iterator(); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + QueryRow oRow1 = null; + String sEligAmount = null; + int count2 = 0; + oParameters1 = new ArrayList(); + oParameters1.add(new DBObject(1, 1, 12, oHrmLnAppHdrBean.getHeaderPrimaryKey())); + oParameters1.add(new DBObject(2, 2, -10)); + oParameters1.add(new DBObject(3, 2, 12)); + oParameters1.add(new DBObject(4, 2, 12)); + oParameters1.add(new DBObject(5, 2, 4)); + oOutArray1 = oBean1.callProc(oParameters1, "HRMLNAPPL.procGetLoanAmount(?,?,?,?,?)"); + oList1 = (ArrayList)((DBObject)oOutArray1.get(0)).getObject(); + count2 = 0; + oIt1 = oList1.iterator(); + while (oIt1.hasNext()) { + count2++; + oRow1 = (QueryRow)oIt1.next(); + sEligAmount = oRow1.get("LOAN_AMOUNT").getString(); + } + if (totalAmount > Float.parseFloat(sEligAmount)) { + arylstParam = new ArrayList(); + arylstParam.add("Loan Disbursement: Disbursed Amount"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpLoanAppln.disDtlTenAmt", arylstParam)); + } + reportError(arylstErrorList); + } + + public String submitLnAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + if (status.getStatus().equalsIgnoreCase("Pending")) { + String sAppliedAmount = null; + String sEligAmount = null; + String sAmount = null; + oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + sAppliedAmount = oHrmLnAppHdrBean.getAppliedAmount(); + sEligAmount = oHrmLnAppHdrBean.getEligibleAmount(); + if (Float.parseFloat(sAppliedAmount) >= Float.parseFloat(sEligAmount)) { + sAmount = sEligAmount; + } else if (Float.parseFloat(sAppliedAmount) < Float.parseFloat(sEligAmount)) { + sAmount = sAppliedAmount; + } + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, sAmount)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMLNAPPL.procSubmitLnAppln(?,?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String approveLnAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMLNAPPL.procApproveLnAppln(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String rejectLnAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMLNAPPL.procRejectLnAppln(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmLnAppHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Loan"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("LoanAppln"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Loan Application No:").concat(String.valueOf(oHrmLnAppHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Loan Application No:").concat(String.valueOf(oHrmLnAppHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Loan Application No:").concat(String.valueOf(oHrmLnAppHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Loan Application No:").concat(String.valueOf(oHrmLnAppHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + String sLoanAmt = oHrmLnAppHdrBean.getAppliedAmount(); + HashMap oProp = new HashMap(); + oProp.put("Loan_Amt", sLoanAmt); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnChartBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnChartBO.java new file mode 100644 index 0000000..02824a9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnChartBO.java @@ -0,0 +1,480 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLnChartDtlBean; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.vo.HrmLnChartQVO; + +public class HrmLnChartBO extends HrmBaseBO { + public HrmLnChartBO() {} + + public HrmLnChartBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmLoanChartHdrMetaInfo(HrmLnChartQVO oHrmLnChartQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmLnChartQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmLnChartQVO.getChartName())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNCHART.proc_HrLoanChartHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLoanChartHdrInfo(HrmLnChartQVO oHrmLnChartQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmLnChartQVO == null) + oHrmLnChartQVO = new HrmLnChartQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmLnChartQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmLnChartQVO.getChartName())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNCHART.proc_HrLoanChartHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmLnChartHdrBean oLoanChartHeader = new HrmLnChartHdrBean(); + oLoanChartHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oLoanChartHeader.setChartName(oRow.get("CHART_NAME").getString()); + oLoanChartHeader.setInterestRate(oRow.get("INTEREST_RATE").getString()); + oLoanChartHeader.setEffectiveFromDate(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_FROM").getDate())); + oLoanChartHeader.setEffectiveToDate(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_TO").getDate())); + oHeaderList.add(oLoanChartHeader); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmLoanChartDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNCHART.proc_HrLoanChartDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLoanChartDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmLoanChartDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNCHART.proc_HrLoanChartDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmLoanChartDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmLnChartDtlBean oLoanChartDetailBean = new HrmLnChartDtlBean(); + oLoanChartDetailBean.setDetailId(oRow.get("ID").getString()); + oLoanChartDetailBean.setTxtLoanAmt(oRow.get("LOAN_AMOUNT").getString()); + oLoanChartDetailBean.setTxtNumberOfInstallments(oRow.get("NO_OF_INSTALMENTS").getString()); + oLoanChartDetailBean.setTxtPrincipal(oRow.get("PRINCIPAL").getString()); + oLoanChartDetailBean.setTxtInterest(oRow.get("INTEREST").getString()); + oLoanChartDetailBean.setTxtEqualMonthlyInstallment(oRow.get("EMI").getString()); + oHrmLoanChartDetail.add(oLoanChartDetailBean); + } + return oHrmLoanChartDetail; + } + + public LovVO getHrmLoanChartNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Id"); + arylstHeaderNames.add("hrm.HrmLC.chartName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + LOVBean oLOVBean = new LOVBean(); + String sTest = new String(); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + if (oLovQueryVO.getSearchField1() != null) + sTest = oLovQueryVO.getSearchField1(); + oParameters.add(new DBObject(1, 1, 12, sTest)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNLOV.proc_GetLoanChartNameLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CHART_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_LOAN_CHART_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmLnChart")) + saveHrmLoanChartDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmLoanChartDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmLnChartDtlBean oHrmLnChartDtlBean = oIt.next(); + if (oHrmLnChartDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLNCHART.proc_UpsertHrLoanChartDtl(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "I")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmLnChartDtlBean.getTxtLoanAmt())); + oParameters.add(new DBObject(5, 1, 12, oHrmLnChartDtlBean.getTxtNumberOfInstallments())); + oParameters.add(new DBObject(6, 1, 12, oHrmLnChartDtlBean.getTxtPrincipal())); + oParameters.add(new DBObject(7, 1, 12, oHrmLnChartDtlBean.getTxtInterest())); + int iPrincipal = Integer.parseInt(oHrmLnChartDtlBean.getTxtPrincipal()); + int iInterest = Integer.parseInt(oHrmLnChartDtlBean.getTxtInterest()); + int iEMI = iPrincipal + iInterest; + System.out.println(iEMI); + oParameters.add(new DBObject(8, 1, 12, String.valueOf(iEMI))); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmLnChartDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLNCHART.proc_UpsertHrLoanChartDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmLnChartDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmLnChartDtlBean.getTxtLoanAmt())); + oParameters.add(new DBObject(5, 1, 12, oHrmLnChartDtlBean.getTxtNumberOfInstallments())); + oParameters.add(new DBObject(6, 1, 12, oHrmLnChartDtlBean.getTxtPrincipal())); + oParameters.add(new DBObject(7, 1, 12, oHrmLnChartDtlBean.getTxtInterest())); + int iPrincipal = Integer.parseInt(oHrmLnChartDtlBean.getTxtPrincipal()); + int iInterest = Integer.parseInt(oHrmLnChartDtlBean.getTxtInterest()); + int iEMI = iPrincipal + iInterest; + System.out.println(iEMI); + oParameters.add(new DBObject(8, 1, 12, String.valueOf(iEMI))); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmLnChartDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMLNCHART.proc_DeleteLoanChartDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + System.out.println(oHrmLnChartDtlBean.getDetailId()); + oParameters.add(new DBObject(1, 1, 12, oHrmLnChartDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmLnChartHdrBean oHrmLnChartHdrBean = (HrmLnChartHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "i")); + oParameters.add(new DBObject(2, 1, 12, oHrmLnChartHdrBean.getChartName())); + oParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnChartHdrBean.getEffectiveFromDate()))); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnChartHdrBean.getEffectiveToDate()))); + oParameters.add(new DBObject(5, 1, 12, oHrmLnChartHdrBean.getInterestRate())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, null)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNCHART.proc_UpsertHrLoanChartHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "u")); + oParameters.add(new DBObject(2, 1, 12, oHrmLnChartHdrBean.getChartName())); + oParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnChartHdrBean.getEffectiveFromDate()))); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnChartHdrBean.getEffectiveToDate()))); + oParameters.add(new DBObject(5, 1, 12, oHrmLnChartHdrBean.getInterestRate())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, oHrmLnChartHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMLNCHART.proc_UpsertHrLoanChartHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmLnChartHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmLnChart")) { + Iterator itrBean1 = oDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmLnChartDtlBean oHrmLnChartDtlBean = itrBean1.next(); + if (!oHrmLnChartDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryLnChartDtl(oHrmLnChartDtlBean, iCount, oErrorList); + iCount++; + } + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + ArrayList oList = new ArrayList(); + HrmLnChartHdrBean oHrmLnChartHdrBean = (HrmLnChartHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmLnChartHdrBean)oBaseHeaderBean); + checkDatesConstraintHdr((HrmLnChartHdrBean)oBaseHeaderBean, oErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sRefId = oCommonBO.getRefList("hrm_loan_chart_dtl", "lon_chrthd_id ", oHrmLnChartHdrBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId)) + if (oList.isEmpty()) + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmLnChartHdrBean oHrmLnChartHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmLnChartHdrBean.getChartName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLC.chartName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnChartHdrBean.getEffectiveFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLC.effectiveFromDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryLnChartDtl(HrmLnChartDtlBean oHrmLnChartDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmLnChartDtlBean.getTxtNumberOfInstallments())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLC.txtNumberOfInstallments"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnChartDtlBean.getTxtLoanAmt())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLC.txtLoanAmt"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnChartDtlBean.getTxtPrincipal())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLC.txtPrincipal"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnChartDtlBean.getTxtInterest())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLC.txtInterest"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void checkDatesConstraintHdr(HrmLnChartHdrBean oHrmLnChartHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmLnChartHdrBean.getEffectiveToDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmLnChartHdrBean.getEffectiveFromDate(), oHrmLnChartHdrBean.getEffectiveToDate()); + if (dateFlag == 1 && dateFlag != -2) + if (oErrorList.isEmpty()) + oErrorList.add(new EnrgiseApplicationException("wenrgise.LoanChart.LoanChartDateConstraintViolated")); + } + } + + private void checkInterest(HrmLnChartHdrBean oHrmLnChartHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + if (EnrgiseUtil.checkString(oHrmLnChartHdrBean.getInterestRate())) + if (Float.parseFloat(oHrmLnChartHdrBean.getInterestRate()) > 100.0D) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("hrm.HrmLC.checkInterest", arylstParam)); + } + reportError(arylstList1); + } + + private void checkUniqueHeader(HrmLnChartHdrBean oHrmLnChartHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_LOAN_CHART_HDR where CHART_NAME='").concat(String.valueOf(oHrmLnChartHdrBean.getChartName()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmLnChartHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnMstBO.java new file mode 100644 index 0000000..5687b2a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLnMstBO.java @@ -0,0 +1,907 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLnMstDtlBean; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.vo.HrmLnMstQVO; + +public class HrmLnMstBO extends HrmBaseBO { + public HrmLnMstBO() {} + + public HrmLnMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmLoanMstHdrMetaInfo(HrmLnMstQVO oHrmLoanMstQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLoanMstQueryVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmLoanMstQueryVO.getChartNameId())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.procHrLoanMstHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLoanMstHeaderInfo(HrmLnMstQVO oHrmLoanMstQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmLoanMstQueryVO == null) + oHrmLoanMstQueryVO = new HrmLnMstQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmLoanMstQueryVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLoanMstQueryVO.getChartNameId())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.procGetHrLoanMstHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmLnMstHdrBean oLoanMstHeader = new HrmLnMstHdrBean(); + oLoanMstHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oLoanMstHeader.setLoanCode(oRow.get("CODE").getString()); + oLoanMstHeader.setLoanName(oRow.get("NAME").getString()); + oLoanMstHeader.setChartNameId(oRow.get("chart_hdr_id").getString()); + oLoanMstHeader.setChartName(oRow.get("CHART_NAME").getString()); + oLoanMstHeader.setTypeOfInterest(oRow.get("INT_TYPE").getString()); + oLoanMstHeader.setNatureOfPayment(oRow.get("FIRST_PAYMENT_FLAG").getString()); + oHeaderList.add(oLoanMstHeader); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmLoanMstDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.procHrLoanMstDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLoanMstDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmLoanMstDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.procGetHrLoanMstDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + boolean all; + if (count == 0) + oHrmLoanMstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmLnMstDtlBean oLoanMstDetailBean = new HrmLnMstDtlBean(); + oLoanMstDetailBean.setDetailId(oRow.get("ID").getString()); + oLoanMstDetailBean.setTxtLoanDetailCode(oRow.get("NAME").getString()); + oLoanMstDetailBean.setTxtGreaterLessNotApplicable(oRow.get("GREATER_LESSER_FLAG").getString()); + oLoanMstDetailBean.setTxtMaxLimit(oRow.get("FLAT_AMOUNT").getString()); + oLoanMstDetailBean.setTxtMaximumLoanPerc(oRow.get("MAX_LOAN_PERC").getString()); + oLoanMstDetailBean.setTxtNoOfMonthsSalary(oRow.get("NO_OF_MTHS_SALARY").getString()); + oLoanMstDetailBean.setTxtMinYrsOfRemainingService(oRow.get("MIN_YR_SERVICE_LEFT").getString()); + oLoanMstDetailBean.setTxtMinYrsOfServiceToBeCompleted(oRow.get("MIN_YEAR_IN_SERVICE").getString()); + String effecDate = String.valueOf(oRow.get("EFFECT_DATE").getDate()); + System.out.println(effecDate); + if (effecDate.equalsIgnoreCase("null")) { + oLoanMstDetailBean.setTxtCompanyPolicyStDate(""); + } else { + oLoanMstDetailBean.setTxtCompanyPolicyStDate(EnrgiseUtil.convertToString(oRow.get("EFFECT_DATE").getDate())); + } + String toDate = String.valueOf(oRow.get("TO_DATE").getDate()); + System.out.println(toDate); + if (toDate.equalsIgnoreCase("null")) { + oLoanMstDetailBean.setTxtCompanyPolicyToDate(""); + } else { + oLoanMstDetailBean.setTxtCompanyPolicyToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + } + String allFlag = oRow.get("ALL_FLAG").getString(); + allFlag = allFlag.trim(); + if (allFlag.equalsIgnoreCase("Y")) { + all = true; + } else { + all = false; + } + oLoanMstDetailBean.setTxtAppliedToAllEmployee(all); + oHrmLoanMstDetail.add(oLoanMstDetailBean); + } + return oHrmLoanMstDetail; + } + + public LovVO getHrmLoanCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + oHeaderList.add("hrm.HrmLoanMst.loanCode"); + oHeaderList.add("hrm.HrmLoanMst.loanName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNLOV.proc_GetLoanCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmChartNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + oHeaderList.add("hrm.HrmLoanMst.chartName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNLOV.proc_GetLoanChartNameLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("chart_hdr_id").getString()); + oLOVBean.setDetailField2(oRow.get("CHART_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmLoanCodeLOVdataNew(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + oHeaderList.add("hrm.HrmLoanMst.loanCode"); + oHeaderList.add("hrm.HrmLoanMst.loanName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNLOV.proc_GetLoanCodeLOVNew(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("global_code").getString()); + oLOVBean.setDetailField3(oRow.get("global_code_desc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmChartNameLOVdataNew(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + oHeaderList.add("hrm.HrmLoanMst.chartName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNLOV.proc_GetLoanChartNameLOVNew(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CHART_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public ArrayList getHrmCurLoanMstDetailInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmCurLoanMstDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, -10)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.proc_GetHrCurLoanInfo(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmCurLoanMstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmLnMstDtlBean oLoanMstDetailBean = new HrmLnMstDtlBean(); + oLoanMstDetailBean.setTxtLoanDetailCode(oRow.get("NAME").getString()); + oLoanMstDetailBean.setDetailId(oRow.get("ID").getString()); + oHrmCurLoanMstDetail.add(oLoanMstDetailBean); + } + return oHrmCurLoanMstDetail; + } + + public LovVO getHrmLoanDetailLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ID"); + arylstHeaderNames.add("hrm.HrmLoanMst.loanName"); + arylstHeaderNames.add("hrm.HrmLoanMst.effectiveDate"); + arylstHeaderNames.add("hrm.HrmLoanMst.toDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, -10)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.proc_GetHrCurLoanInfo(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + String datenewformat1, datenewformat2; + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + String effecDate = String.valueOf(oRow.get("EFFECT_DATE").getDate()); + System.out.println(effecDate); + if (effecDate.equalsIgnoreCase("null")) { + datenewformat1 = ""; + } else { + datenewformat1 = formatter.format(oRow.get("EFFECT_DATE").getDate()); + } + String toDate = String.valueOf(oRow.get("TO_DATE").getDate()); + System.out.println(toDate); + if (toDate.equalsIgnoreCase("null")) { + datenewformat2 = ""; + } else { + datenewformat2 = formatter.format(oRow.get("TO_DATE").getDate()); + } + oLOVBean.setDetailField3(datenewformat1); + oLOVBean.setDetailField4(datenewformat2); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void updateLoanMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSql)); + arylstParam.add(new DBObject(2, 1, 12, sId)); + arylstParam.add(new DBObject(3, 1, 12, sUserId)); + arylstParam.add(new DBObject(4, 1, 12, sUserSiteId)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.proc_UpdateHrLoanDtl(?,?,?,?,?,?,?)"); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_LOAN_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmLnMstHdrBean oHrmLnMstHdrBean = (HrmLnMstHdrBean)oBaseHeaderBean; + String taxReb = null; + String priTaxReb = null; + String settAuto = null; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnMstHdrBean.getLoanCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLnMstHdrBean.getLoanName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLnMstHdrBean.getChartNameId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnMstHdrBean.getTypeOfInterest())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLnMstHdrBean.getNatureOfPayment())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, null)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.procUpsertHrLoanMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnMstHdrBean.getLoanCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLnMstHdrBean.getLoanName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLnMstHdrBean.getChartNameId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnMstHdrBean.getTypeOfInterest())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLnMstHdrBean.getNatureOfPayment())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, oHrmLnMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.procUpsertHrLoanMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmLnMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.procDeleteHrmLoanMstHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmLnMst")) + saveHrmLoanMstDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmLoanMstDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + String applToEmp = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmLnMstDtlBean oHrmLnMstDtlBean = oIt.next(); + if (oHrmLnMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLNMST.procUpsertHrLoanMstDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, "200")); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnMstDtlBean.getAllEmployeeApplicable())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnMstDtlBean.getTxtCompanyPolicyStDate()))); + arylstParam.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnMstDtlBean.getTxtCompanyPolicyToDate()))); + arylstParam.add(new DBObject(8, 1, 12, oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable())); + arylstParam.add(new DBObject(9, 1, 12, oHrmLnMstDtlBean.getTxtLoanDetailCode())); + arylstParam.add(new DBObject(10, 1, 12, oHrmLnMstDtlBean.getTxtMaximumLoanPerc())); + arylstParam.add(new DBObject(11, 1, 12, oHrmLnMstDtlBean.getTxtMaxLimit())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLnMstDtlBean.getTxtNoOfMonthsSalary())); + arylstParam.add(new DBObject(13, 1, 12, oHrmLnMstDtlBean.getTxtMinYrsOfRemainingService())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLnMstDtlBean.getTxtMinYrsOfServiceToBeCompleted())); + arylstParam.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmLnMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLNMST.procUpsertHrLoanMstDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLnMstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, "200")); + arylstParam.add(new DBObject(5, 1, 12, oHrmLnMstDtlBean.getAllEmployeeApplicable())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnMstDtlBean.getTxtCompanyPolicyStDate()))); + arylstParam.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLnMstDtlBean.getTxtCompanyPolicyToDate()))); + arylstParam.add(new DBObject(8, 1, 12, oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable())); + arylstParam.add(new DBObject(9, 1, 12, oHrmLnMstDtlBean.getTxtLoanDetailCode())); + arylstParam.add(new DBObject(10, 1, 12, oHrmLnMstDtlBean.getTxtMaximumLoanPerc())); + arylstParam.add(new DBObject(11, 1, 12, oHrmLnMstDtlBean.getTxtMaxLimit())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLnMstDtlBean.getTxtNoOfMonthsSalary())); + arylstParam.add(new DBObject(13, 1, 12, oHrmLnMstDtlBean.getTxtMinYrsOfRemainingService())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLnMstDtlBean.getTxtMinYrsOfServiceToBeCompleted())); + arylstParam.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmLnMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMLNMST.procDeleteLoanMstDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLnMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public String getChartId(String chartName) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + String chartId = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, chartName)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMLNMST.proc_GetChartIdByName(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + chartId = oRow.get("ID").getString(); + } + return chartId; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmLnMstHdrBean oHrmLnMstHdrBean = (HrmLnMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmLnMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmLnMst")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmLnMstDtlBean oHrmLnMstDtlBean = oIt1.next(); + if (!oHrmLnMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmLnMstDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmLnMstHdrBean oHrmLnMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmLnMstHdrBean.getLoanCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.loanCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnMstHdrBean.getTypeOfInterest())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.typeOfInterest"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnMstHdrBean.getNatureOfPayment())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.natureOfPayment"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } else if (oHrmLnMstHdrBean.getTypeOfInterest().equalsIgnoreCase("A")) { + if (!EnrgiseUtil.checkString(oHrmLnMstHdrBean.getChartName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.chartName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmLnMstDtlBean oHrmLnMstDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtLoanDetailCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.loanDetailCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.greaterLessNotApplicable"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable().equalsIgnoreCase("G") || oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable().equalsIgnoreCase("L") || oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable().equalsIgnoreCase("F")) + if (!EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtMaxLimit())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.maxLimit"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtCompanyPolicyStDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.companyPolicyStDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable().equalsIgnoreCase("G") || oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable().equalsIgnoreCase("L") || oHrmLnMstDtlBean.getTxtGreaterLessNotApplicable().equalsIgnoreCase("S")) { + if (!EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtMaximumLoanPerc())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.maximumLoanPerc"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtNoOfMonthsSalary())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.noOfMonthsSalary"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + private void checkDatesConstraint(HrmLnMstDtlBean oHrmLnMstDtlBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtCompanyPolicyToDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmLnMstDtlBean.getTxtCompanyPolicyToDate(), oHrmLnMstDtlBean.getTxtCompanyPolicyStDate()); + if (dateFlag == -1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrm.loanMst.dateError")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmLnMstHdrBean oHrmLnMstHdrBean = (HrmLnMstHdrBean)oBaseHeaderBean; + if (sScreenMode.equalsIgnoreCase("D")) + ArrayList arrayList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmLnMstHdrBean)oBaseHeaderBean); + } else { + checkIfDetailExist((HrmLnMstHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmLnMst")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmLnMstDtlBean oHrmLnMstDtlBean = oIt1.next(); + if (!oHrmLnMstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkUniqueDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + checkDatesConstraint(oHrmLnMstDtlBean, oErrorList); + checkAllEmployee(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + checkNumericLocationDtl(oDetailBeanArray, oErrorList); + continue; + } + checkDetailChildRecord(oHrmLnMstDtlBean); + } + reportError(oErrorList); + } + } + + private void checkNumericLocationDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmLnMstDtlBean oHrmLnMstDtlBean = oIt1.next(); + if (EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtMaximumLoanPerc())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.maximumLoanPerc"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmLnMstDtlBean.getTxtMaximumLoanPerc(), 2, 4, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmLnMstDtlBean.getTxtMaximumLoanPerc()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + if (EnrgiseUtil.checkString(oHrmLnMstDtlBean.getTxtMaxLimit())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.maxLimit"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmLnMstDtlBean.getTxtMaxLimit(), 8, 9, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmLnMstDtlBean.getTxtMaxLimit()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + count++; + } + reportError(oErrorList); + } + + private void checkDetailChildRecord(HrmLnMstDtlBean oHrmLnMstDtlBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" select lon_dtl_ID as ID from hrm_emp_loan where lon_dtl_ID=").concat(String.valueOf(oHrmLnMstDtlBean.getDetailId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() > 0) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.loan.detail.detailFound", oParam, "E"); + } + } + + private void checkAllEmployee(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + int allEmp = 1; + while (oIt1.hasNext()) { + HrmLnMstDtlBean oHrmLnMstDtlBean = oIt1.next(); + if (oHrmLnMstDtlBean.getAllEmployeeApplicable().equalsIgnoreCase("Y")) + allEmp++; + if (allEmp > 1 && rowCount > 1) { + System.out.println(allEmp); + System.out.println(rowCount); + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.loan.detail.allemployeeerror", oParam, "E"); + } + rowCount++; + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmLnMstHdrBean oHrmLnMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from hrm_loan_mst where code= '").concat(String.valueOf(oHrmLnMstHdrBean.getLoanCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmLnMstHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.loanCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.common.header.uniqueConstraintViolated", oParams, "E"); + } + } + } + + private void checkIfDetailExist(HrmLnMstHdrBean oHrmLnMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" Select loan_mst_id as ID from hrm_loan_dtl where loan_mst_id= ").concat(String.valueOf(oHrmLnMstHdrBean.getHeaderPrimaryKey())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() > 0) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.loan.hdr.detailFound", oParam, "E"); + } + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmLnMstDtlBean oHrmLnMstDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oHrmLnMstDtlBean.getDetailId())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from hrm_loan_dtl where name= '").concat(String.valueOf(oHrmLnMstDtlBean.getTxtLoanDetailCode()))).concat(String.valueOf("' and loan_mst_id="))).concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf(" and EFFECT_DATE=to_date('"))).concat(String.valueOf(oHrmLnMstDtlBean.getTxtCompanyPolicyStDate()))).concat(String.valueOf("','DD-MON-YYYY')")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + System.out.println(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmLoanMst.loanDetailCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams)); + } + } + rowCount++; + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLoginBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLoginBO.java new file mode 100644 index 0000000..bc25239 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLoginBO.java @@ -0,0 +1,83 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; + +public class HrmLoginBO extends BaseBO { + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) { + return new String(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String screenMode) { + return new String(); + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) {} + + public void initializeBOImpl() {} + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public UserInfo getLoginUserInfo(String sEmpNo, String sSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList arylstOutArray = new ArrayList(); + UserInfo oUserInfo = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpNo)); + arylstParameters.add(new DBObject(2, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + arylstOutArray = oBean.callProc(arylstParameters, "HRMUSERINFO.procGetUserInfo(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + oUserInfo = new UserInfo(); + System.out.println(oRow.get("CURRENT_YEAR").getString()); + oUserInfo.setCurrentYear(oRow.get("CURRENT_YEAR").getString()); + System.out.println(oRow.get("SITE_ID").getString()); + oUserInfo.setSiteId(oRow.get("SITE_ID").getString()); + oUserInfo.setSiteCode(oRow.get("SITE_CODE").getString()); + oUserInfo.setSiteName(oRow.get("SITE_NAME").getString()); + oUserInfo.setUserActiveFlag(oRow.get("USER_ACTIVE_FLAG").getString()); + oUserInfo.setUserId(oRow.get("USER_ID").getString()); + oUserInfo.setUserLocked(oRow.get("USER_LOCKED").getString()); + oUserInfo.setUserName(oRow.get("USER_NAME").getString()); + oUserInfo.setUserSystemId(oRow.get("USER_SYSTEM_ID").getString()); + oUserInfo.setUserType(oRow.get("USER_TYPE").getString()); + oUserInfo.setUserTypeId(oRow.get("USER_TYPE_ID").getString()); + oUserInfo.setGradeId(oRow.get("GRADE_ID").getString()); + oUserInfo.setGrade(oRow.get("GRADE").getString()); + oUserInfo.setDesignation(oRow.get("DESIGNATION").getString()); + oUserInfo.setDesigId(oRow.get("DESIG_ID").getString()); + } + return oUserInfo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnBO.java new file mode 100644 index 0000000..c450038 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnBO.java @@ -0,0 +1,1776 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator2; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLvApplnDtlBean; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.bean.HrmLvApplnQueryDtlBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.vo.HrmLvApplnQVO; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade2; +import wenrgise.workflow.ejb.facade.WorkFlowFacade2Home; + +public class HrmLvApplnBO extends HrmBaseBO { + private ArrayList arylstDtlBean; + + private boolean bNoDetailView = false; + + public HrmLvApplnBO() {} + + public HrmLvApplnBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getEmpLeaveApplicationQueryDetailMetaInfo(HrmLvApplnQueryQVO oHrmLvApplnQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String lvType = oHrmLvApplnQueryQVO.getLeaveCode(); + String empNo = oHrmLvApplnQueryQVO.getEmployeeNo(); + String status = oHrmLvApplnQueryQVO.getStatusOfLeave(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, empNo)); + arylstParam.add(new DBObject(2, 1, 12, lvType)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQueryQVO.getFromDate()))); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQueryQVO.getToDate()))); + arylstParam.add(new DBObject(5, 1, 12, status)); + arylstParam.add(new DBObject(6, 2, -5)); + arylstParam.add(new DBObject(7, 2, 93)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_HrLeaveAppQueryDtlCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrEmpLeaveApplicationQueryDetail(HrmLvApplnQueryQVO oHrmLvApplnQueryQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String lvType = oHrmLvApplnQueryQVO.getLeaveCode(); + String empNo = oHrmLvApplnQueryQVO.getEmployeeNo(); + String status = oHrmLvApplnQueryQVO.getStatusOfLeave(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstEmpLeaveApplQueryDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, empNo)); + arylstParam.add(new DBObject(4, 1, 12, lvType)); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQueryQVO.getFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQueryQVO.getToDate()))); + arylstParam.add(new DBObject(7, 1, 12, status)); + arylstParam.add(new DBObject(8, 2, -10)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_HrLeaveAppQueryDtl(?,?,?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpLeaveApplQueryDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvApplnQueryDtlBean oHrmLvApplnQueryDtlBean = new HrmLvApplnQueryDtlBean(); + oHrmLvApplnQueryDtlBean.setTxtTransId(oRow.get("ID").getString()); + oHrmLvApplnQueryDtlBean.setTxtLeaveCodes(oRow.get("LEAVE_DESCRIPTION").getString()); + oHrmLvApplnQueryDtlBean.setTxtLeaveStatus(oRow.get("APPROVED_FLAG").getString()); + oHrmLvApplnQueryDtlBean.setTxtAppliedLeaveDate(EnrgiseUtil.convertToString(oRow.get("DATE_APPLIED").getDate())); + arylstEmpLeaveApplQueryDetail.add(oHrmLvApplnQueryDtlBean); + } + return arylstEmpLeaveApplQueryDetail; + } + + public RecordMetaInfo getEmpLeaveApplicationQueryScreenDetailMetaInfo(HrmLvApplnQVO oHrmLvApplnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sTransId = oHrmLvApplnQVO.getTransId(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvApplnQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, sTransId)); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvApplnQVO.getLeaveCodes())); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQVO.getFromAppDate()))); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQVO.getToAppDate()))); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvApplnQVO.getEmployeeNumber())); + arylstParam.add(new DBObject(7, 2, -5)); + arylstParam.add(new DBObject(8, 2, 93)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_HrLeaveAppQryScreenDtlCnt(?,?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrEmpLeaveApplicationQueryScreenDetail(HrmLvApplnQVO oHrmLvApplnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sTransId = oHrmLvApplnQVO.getTransId(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstEmpLeaveApplQueryScreenDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvApplnQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, sTransId)); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvApplnQVO.getLeaveCodes())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQVO.getFromAppDate()))); + arylstParam.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnQVO.getToAppDate()))); + arylstParam.add(new DBObject(8, 1, 12, oHrmLvApplnQVO.getEmployeeNumber())); + arylstParam.add(new DBObject(9, 2, -10)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_HrLeaveAppQueryScreenDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpLeaveApplQueryScreenDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvApplnHdrBean oHrmLvApplnHdrBean = new HrmLvApplnHdrBean(); + oHrmLvApplnHdrBean.setEmployeeNumber(oRow.get("EMP_NO").getString()); + oHrmLvApplnHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmLvApplnHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmLvApplnHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmLvApplnHdrBean.setGrade(oRow.get("GRADE").getString()); + oHrmLvApplnHdrBean.setLocation(oRow.get("LOCATION").getString()); + oHrmLvApplnHdrBean.setDesignation(oRow.get("DESIGNATION").getString()); + oHrmLvApplnHdrBean.setSiteId(oRow.get("SITE_ID").getString()); + oHrmLvApplnHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmLvApplnHdrBean.setTransacId(oRow.get("ID").getString()); + oHrmLvApplnHdrBean.setLeaveCodes(oRow.get("LEAVE_DESCRIPTION").getString()); + oHrmLvApplnHdrBean.setLeaveTypeId(oRow.get("lv_attr_id").getString()); + oHrmLvApplnHdrBean.setDescription(oRow.get("NAME").getString()); + oHrmLvApplnHdrBean.setEligAmount(oRow.get("ELIG_AMT").getString()); + oHrmLvApplnHdrBean.setDateApplied(EnrgiseUtil.convertToString(oRow.get("DATE_APPLIED").getDate())); + oHrmLvApplnHdrBean.setFromAppDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oHrmLvApplnHdrBean.setToAppDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + double dDays = Double.parseDouble(oRow.get("NO_OF_DAYS").getString()); + oHrmLvApplnHdrBean.setDays(String.valueOf(dDays)); + oHrmLvApplnHdrBean.setEmployeeId(oRow.get("E_PER_DTL_ID").getString()); + oHrmLvApplnHdrBean.setPurpose(oRow.get("PURPOSE").getString()); + oHrmLvApplnHdrBean.setStatusOfLeaves(oRow.get("APPROVED_FLAG").getString()); + oHrmLvApplnHdrBean.setRemarks(oRow.get("REJECTION_REMARK").getString()); + oHrmLvApplnHdrBean.setAddress(oRow.get("ADDRESS_FOR_COMM").getString()); + oHrmLvApplnHdrBean.setPhone(oRow.get("PHONE").getString()); + oHrmLvApplnHdrBean.setLtaFlag(String.valueOf(oRow.get("LTA_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmLvApplnHdrBean.setLtaAmount(oRow.get("LTA_AMT").getString()); + oHrmLvApplnHdrBean.setItPercentage(oRow.get("IT_PERC").getString()); + oHrmLvApplnHdrBean.setOptedFor(oRow.get("OPTED_FOR").getString()); + oHrmLvApplnHdrBean.setFromYear(oRow.get("LTA_FROM_YEAR").getString()); + oHrmLvApplnHdrBean.setMedFlag(String.valueOf(oRow.get("MED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + arylstEmpLeaveApplQueryScreenDetail.add(oHrmLvApplnHdrBean); + } + return arylstEmpLeaveApplQueryScreenDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_LEAVE_TXN"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + ArrayList oParameters = null; + DBUtilitiesBean oBean = null; + Iterator oIt = arylstDetailBeanArray.iterator(); + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLVAPPLN.proc_InsertLvApplnBreakup(?,?,?,?,?,?)"); + while (oIt.hasNext()) { + HrmLvApplnDtlBean oDtlBean = oIt.next(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oDtlBean.getTxtDate()))); + oParameters.add(new DBObject(3, 1, 12, oDtlBean.getTxtHolidayFlag())); + oParameters.add(new DBObject(4, 1, 4, oDtlBean.getTxtHalfDayFlag())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + } + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + this.arylstDtlBean = oHrmLvApplnHdrBean.getDetailArray(); + if (this.arylstDtlBean.size() == 0) { + arylstErrorList.add(new EnrgiseApplicationException("hrm.HrmLvAppln.checkBreakUp")); + } else { + processSaveValidation(arylstErrorList, oHrmLvApplnHdrBean.getEmployeeId(), oHrmLvApplnHdrBean.getLeaveTypeId(), oHrmLvApplnHdrBean.getDays(), oHrmLvApplnHdrBean); + } + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmLvApplnHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmLvApplnHdrBean)oBaseHeaderBean, arylstErrorList); + checkHeaderConstraint((HrmLvApplnHdrBean)oBaseHeaderBean, arylstErrorList); + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getLtaFlag())) + if (String.valueOf(oHrmLvApplnHdrBean.getLtaFlag()).equalsIgnoreCase("on")) + checkLtaEligibility((HrmLvApplnHdrBean)oBaseHeaderBean, arylstErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")) + if (!oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("N")) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmLvApplnHdrBean oHrmLvApplnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public LovVO getHrmLvAppQryEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.employeeNo"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.employeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLvAppQryEmpLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmLvAppQryLvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.leaveDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLvAppQryLeaveCdLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("LEAVE_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmEmpLvAppLvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.leaveDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String employeeNumber = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + if (oLovQueryVO.getProperty("empId") != null) + employeeNumber = oLovQueryVO.getProperty("empId"); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, employeeNumber)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetEmpLvAppLeaveCdLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("LEAVE_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String getGenderInfo(String sEmpNo) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sGender = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetGenderInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sGender = oRow.get("SEX").getString(); + } + return sGender; + } + + public LovVO getHrmEmpLvAppLvCdInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sEmpNo = oLovQueryVO.getProperty("empId"); + String sSex = getGenderInfo(sEmpNo); + DateUtility d = new DateUtility(); + String str = d.getSysDate(); + String monOfSysDate = str.substring(3, 5); + String yearOfSysDate = str.substring(6, 10); + String yyyymm = String.valueOf(yearOfSysDate).concat(String.valueOf(monOfSysDate)); + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveApplicationQuery.leaveDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String employeeNumber = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sSex)); + arylstParam.add(new DBObject(4, 1, 12, yyyymm)); + arylstParam.add(new DBObject(5, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLvAppQryLeaveCdInsLOV(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + arylstList = checkLOVConstraint(arylstList, oLovQueryVO); + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseApplicationException, EnrgiseSystemException { + String returnString = null; + String errorMsgFromDB = null; + String sNetAmount = new String(); + String sLTAAmount = new String(); + ArrayList arylstErrorList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + if (String.valueOf(oHrmLvApplnHdrBean.getLtaFlag()).equalsIgnoreCase("on")) { + sLTAAmount = calculateLTA(oHrmLvApplnHdrBean); + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getItPercentage())) { + String sIT = oHrmLvApplnHdrBean.getItPercentage(); + sNetAmount = String.valueOf(Double.parseDouble(sLTAAmount) - Double.parseDouble(sIT)); + } else { + sNetAmount = String.valueOf(Double.parseDouble(sLTAAmount)); + } + } + ArrayList arylstDetailArray = oHrmLvApplnHdrBean.getDetailArray(); + if (arylstDetailArray.size() == 0) + try { + arylstDetailArray = getLeaveDates(oHrmLvApplnHdrBean); + oHrmLvApplnHdrBean.setDays(getHolidayCount(arylstDetailArray)); + this.bNoDetailView = true; + } catch (EnrgiseApplicationException enrgiseApplicationException) {} + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvApplnHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvApplnHdrBean.getLeaveTypeId())); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnHdrBean.getDateApplied()))); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnHdrBean.getFromAppDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnHdrBean.getToAppDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvApplnHdrBean.getDays())); + arylstParam.add(new DBObject(8, 1, 12, oHrmLvApplnHdrBean.getAddress())); + arylstParam.add(new DBObject(9, 1, 12, oHrmLvApplnHdrBean.getPhone())); + arylstParam.add(new DBObject(10, 1, 12, oHrmLvApplnHdrBean.getPurpose())); + arylstParam.add(new DBObject(11, 1, 12, oHrmLvApplnHdrBean.getRemarks())); + arylstParam.add(new DBObject(12, 1, 12, String.valueOf(oHrmLvApplnHdrBean.getLtaFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(13, 1, 12, oHrmLvApplnHdrBean.getOptedFor())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLvApplnHdrBean.getFromYear())); + arylstParam.add(new DBObject(15, 1, 12, oHrmLvApplnHdrBean.getItPercentage())); + arylstParam.add(new DBObject(16, 1, 12, sNetAmount)); + arylstParam.add(new DBObject(17, 1, 12, sLTAAmount)); + arylstParam.add(new DBObject(18, 1, 12, String.valueOf(oHrmLvApplnHdrBean.getMedFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(19, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(20, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(21, 1, 12, null)); + arylstParam.add(new DBObject(22, 2, 12)); + arylstParam.add(new DBObject(23, 2, 12)); + arylstParam.add(new DBObject(24, 2, 12)); + arylstParam.add(new DBObject(25, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_UpsertHrEmpLeaveAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + errorMsgFromDB = (String)((DBObject)arylstOutArray.get(2)).getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvApplnHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvApplnHdrBean.getLeaveTypeId())); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnHdrBean.getDateApplied()))); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnHdrBean.getFromAppDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnHdrBean.getToAppDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvApplnHdrBean.getDays())); + arylstParam.add(new DBObject(8, 1, 12, oHrmLvApplnHdrBean.getAddress())); + arylstParam.add(new DBObject(9, 1, 12, oHrmLvApplnHdrBean.getPhone())); + arylstParam.add(new DBObject(10, 1, 12, oHrmLvApplnHdrBean.getPurpose())); + arylstParam.add(new DBObject(11, 1, 12, oHrmLvApplnHdrBean.getRemarks())); + arylstParam.add(new DBObject(12, 1, 12, String.valueOf(oHrmLvApplnHdrBean.getLtaFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(13, 1, 12, oHrmLvApplnHdrBean.getOptedFor())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLvApplnHdrBean.getFromYear())); + arylstParam.add(new DBObject(15, 1, 12, oHrmLvApplnHdrBean.getItPercentage())); + arylstParam.add(new DBObject(16, 1, 12, sNetAmount)); + arylstParam.add(new DBObject(17, 1, 12, sLTAAmount)); + arylstParam.add(new DBObject(18, 1, 12, String.valueOf(oHrmLvApplnHdrBean.getMedFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(19, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(20, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(21, 1, 12, null)); + arylstParam.add(new DBObject(22, 2, 12)); + arylstParam.add(new DBObject(23, 2, 12)); + arylstParam.add(new DBObject(24, 2, 12)); + arylstParam.add(new DBObject(25, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_UpsertHrEmpLeaveAppHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + errorMsgFromDB = (String)((DBObject)arylstOutArray.get(2)).getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmLvApplnHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_DelHrEmpLeaveAppHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + System.out.println(String.valueOf("value of error msg from database :").concat(String.valueOf(errorMsgFromDB))); + if (errorMsgFromDB != null && errorMsgFromDB.equalsIgnoreCase("NtElgLTA")) { + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLeaveApplication.notEligibleLTA", null, "E")); + } else if (errorMsgFromDB != null && errorMsgFromDB.equalsIgnoreCase("NtElig2YrLTA")) { + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLeaveApplication.notEligible2YearLTA", null, "E")); + } else if (errorMsgFromDB != null && errorMsgFromDB.equalsIgnoreCase("DupLTA")) { + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLeaveApplication.duplicateLTA", null, "E")); + } else { + oBaseHeaderBean.setHeaderPrimaryKey(returnString); + saveDetailImpl(returnString, (String)null, arylstDetailArray); + } + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + return returnString; + } + + private String calculateLTA(HrmLvApplnHdrBean oHrmLvApplnHdrBean) throws EnrgiseSystemException { + String sLtaAmount = new String(); + String sGrossLtaAmount = new String(); + int iTotal = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvApplnHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvApplnHdrBean.getOptedFor())); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proccalculateltaamount(?,?,?,?,?,?)"); + DBObject oLta = arylstOutArray.get(0); + sLtaAmount = ((String)oLta.getObject()).toString(); + return sLtaAmount; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + checkMandatoryHeader((HrmLvApplnHdrBean)oBaseHeaderBean); + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmLvApplnHdrBean oHrmLvApplnHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstErrorList = new ArrayList(); + ArrayList arylstParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getLeaveCodes())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.leaveCodes"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getDateApplied())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.dateApplied"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getFromAppDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.fromAppDate"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getToAppDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.toAppDate"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getLtaFlag())) + if (oHrmLvApplnHdrBean.getLtaFlag().equalsIgnoreCase("on")) { + if (!EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getOptedFor())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.optedFor"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + String dateAppliedYear = oHrmLvApplnHdrBean.getDateApplied().substring(7, 11); + int prevYear = Integer.valueOf(dateAppliedYear).intValue() - 1; + String fromYear = oHrmLvApplnHdrBean.getFromYear(); + String optedFor = oHrmLvApplnHdrBean.getOptedFor(); + if (fromYear.equals(dateAppliedYear) && optedFor.equals("2")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.dateApplied"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstParams.add(new MessageKey("hrm.HrmLvAppln.fromYear")); + arylstParams.add(new MessageKey("hrm.HrmLvAppln.optedFor")); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLeaveApplication.fromYear.optedFor.validation", arylstParams, "E")); + } + if (!fromYear.equalsIgnoreCase(dateAppliedYear) && !fromYear.equalsIgnoreCase(String.valueOf(prevYear))) { + arylstParams = new ArrayList(); + arylstParams.add(new MessageKey("hrm.HrmLvAppln.fromYear")); + arylstParams.add(String.valueOf(prevYear)); + arylstParams.add(dateAppliedYear); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLeaveApplication.fromYear.prevYear.validation", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getFromYear())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.fromYear"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + } + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + } + + private void checkLtaEligibility(HrmLvApplnHdrBean oHrmLvApplnHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + if (Float.parseFloat(oHrmLvApplnHdrBean.getDays()) < 5.0D) + arylstErrorList.add(new EnrgiseApplicationException("hrm.HrmLvAppln.ltaElig")); + } + + private void checkDatesConstraint(HrmLvApplnHdrBean oHrmLvApplnHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + String sAttrId = oHrmLvApplnHdrBean.getLeaveTypeId(); + String sCalId = getCalId(sAttrId); + HrmCommonBO oBO = new HrmCommonBO(); + String sStartDate = oBO.getStartDate(sCalId, oHrmLvApplnHdrBean.getDateApplied()); + String sEndDate = oBO.getEndDate(sCalId, oHrmLvApplnHdrBean.getDateApplied()); + if (!oHrmLvApplnHdrBean.getDateApplied().equals(sStartDate)) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmLvApplnHdrBean.getDateApplied(), sStartDate); + if (dateFlag == -1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.dateApplied.dateConstraintViolated")); + if (!oHrmLvApplnHdrBean.getDateApplied().equals(sEndDate)) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, sEndDate, oHrmLvApplnHdrBean.getDateApplied()); + if (dateFlag1 == -1 && dateFlag1 != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.dateApplied.dateConstraintViolated")); + } + } + if (!oHrmLvApplnHdrBean.getToAppDate().equals(oHrmLvApplnHdrBean.getFromAppDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmLvApplnHdrBean.getToAppDate(), oHrmLvApplnHdrBean.getFromAppDate()); + if (dateFlag == -1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getDateApplied())) { + int dateFlag2 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmLvApplnHdrBean.getDateApplied()); + if (dateFlag2 == -1 && dateFlag2 != -2) + arylstErrorList.add(new EnrgiseApplicationException("hrm.HrmEmpEncash.dateConstraintViolated2")); + } + } + + public String getAllFlagInfo(String sAttrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sAllFlag = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sAttrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetAllFlag(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sAllFlag = oRow.get("ALL_FLAG").getString(); + } + return sAllFlag; + } + + private String getCalId(String sAttrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sCalId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sAttrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetCalId(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sCalId = oRow.get("CAL_MST_ID").getString(); + } + return sCalId; + } + + private ArrayList checkLOVConstraint(ArrayList arylstList, LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LOVBean oLOVBean = null; + ArrayList arylstNewList = new ArrayList(); + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oLOVBean = itrBean.next(); + String sId = oLOVBean.getDetailField1(); + String sCode = oLOVBean.getDetailField2(); + String sAllFlag = getAllFlagInfo(sId); + if (sAllFlag.equalsIgnoreCase("Y")) { + arylstNewList.add(oLOVBean); + continue; + } + if (sCode.equalsIgnoreCase("CL")) { + arylstNewList.add(oLOVBean); + continue; + } + String sAttrId = oLOVBean.getDetailField1(); + String sQuery = String.valueOf(" Select ELIG_SQL as ELIG_SQL from HRM_LEAVE_ATTR_DTL where ID= ").concat(String.valueOf(sAttrId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList1 = oBean.executeQuery(sQuery); + Iterator itrBean1 = arylstList1.iterator(); + if (itrBean1.hasNext()) { + QueryRow oRow = itrBean1.next(); + String sSql = oRow.get("ELIG_SQL").getString(); + if (EnrgiseUtil.checkString(sSql)) { + String sEmpNo = oLovQueryVO.getProperty("employeeNumber"); + HrmCommonBO oBO = new HrmCommonBO(); + String sEmpId = oBO.getRefList1("HRM_EMP_PERS", "EMP_NO", sEmpNo, "ID"); + StringBuffer s = new StringBuffer(sSql); + s.replace(s.lastIndexOf("?"), s.lastIndexOf("?") + 1, sEmpId); + ArrayList arylstList2 = oBean.executeQuery(s.toString()); + if (arylstList2.size() != 0) + arylstNewList.add(oLOVBean); + } + } + } + return arylstNewList; + } + + public ArrayList getHrLeaveFlagInfo(String sAttrId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstFlagDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sAttrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetPreSufIntFlag(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + arylstFlagDetail = new ArrayList(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstFlagDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvMstHdrBean oHrmLvMstHdrBean = new HrmLvMstHdrBean(); + oHrmLvMstHdrBean.setIntermediateHoliday(oRow.get("intrmdt_hldy_allwd").getString()); + oHrmLvMstHdrBean.setPrefixSuffix(oRow.get("prefix_flag").getString()); + oHrmLvMstHdrBean.setSuffix(oRow.get("suffix_flag").getString()); + oHrmLvMstHdrBean.setMinLeave(oRow.get("min_leave").getString()); + arylstFlagDetail.add(oHrmLvMstHdrBean); + } + return arylstFlagDetail; + } + + private ArrayList getPrefixDates(String sEmpId, String sWrkgrpId, String sSiteId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBo = new HrmCommonBO(); + ArrayList arylstPrefixList = new ArrayList(); + String sPrefixDt = sDate; + Date dDate = oBo.getPreviousDay(sPrefixDt, 1); + sPrefixDt = EnrgiseUtil.convertToString(dDate); + int iHolidayType = 0; + while ((iHolidayType = isHoliday(sEmpId, sWrkgrpId, sSiteId, sPrefixDt)) != 0) { + HrmLvApplnDtlBean oDtlBean = new HrmLvApplnDtlBean(); + oDtlBean.setTxtDate(sPrefixDt); + oDtlBean.setDisabtxtDate("true"); + String sHolType = Integer.toString(iHolidayType); + oDtlBean.setTxtHalfDayFlag(sHolType); + oDtlBean.setDisabtxtHalfDayFlag("true"); + oDtlBean.setTxtHolidayFlag("P"); + oDtlBean.setDisabtxtHolidayFlag("true"); + oDtlBean.setStatus("N"); + arylstPrefixList.add(oDtlBean); + dDate = oBo.getPreviousDay(sPrefixDt, 1); + sPrefixDt = EnrgiseUtil.convertToString(dDate); + } + return arylstPrefixList; + } + + private ArrayList getSuffixDates(String sEmpId, String sWrkgrpId, String sSiteId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBo = new HrmCommonBO(); + ArrayList arylstSuffixList = new ArrayList(); + String sSuffixDt = sDate; + Date dDate = oBo.getNextDay(sSuffixDt, 1); + sSuffixDt = EnrgiseUtil.convertToString(dDate); + int iHolidayType = 0; + while ((iHolidayType = isHoliday(sEmpId, sWrkgrpId, sSiteId, sSuffixDt)) != 0) { + HrmLvApplnDtlBean oDtlBean = new HrmLvApplnDtlBean(); + oDtlBean.setTxtDate(sSuffixDt); + oDtlBean.setDisabtxtDate("true"); + String sHolType = Integer.toString(iHolidayType); + oDtlBean.setTxtHalfDayFlag(sHolType); + oDtlBean.setDisabtxtHalfDayFlag("true"); + oDtlBean.setTxtHolidayFlag("S"); + oDtlBean.setDisabtxtHolidayFlag("true"); + oDtlBean.setStatus("N"); + arylstSuffixList.add(oDtlBean); + dDate = oBo.getNextDay(sSuffixDt, 1); + sSuffixDt = EnrgiseUtil.convertToString(dDate); + } + return arylstSuffixList; + } + + private ArrayList getInterDates(String sEmpId, String sWrkgrpId, String sSiteId, String sDate, int iDateDiff, double dMinLeave, String sInterFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + ArrayList arylstInterDtlList = new ArrayList(); + DateUtility oDateUtil = new DateUtility(); + String sInterDate = sDate; + Date dDate = oBO.getNextDay(sInterDate, 0); + while (iDateDiff-- >= 0) { + int iHolidayType = isHoliday(sEmpId, sWrkgrpId, sSiteId, sInterDate); + if (iHolidayType != 0) { + HrmLvApplnDtlBean oDtlBean = new HrmLvApplnDtlBean(); + sInterDate = EnrgiseUtil.convertToString(dDate); + if (sInterFlag.equalsIgnoreCase("Y")) { + oDtlBean.setTxtDate(sInterDate); + oDtlBean.setDisabtxtDate("true"); + oDtlBean.setTxtHalfDayFlag(Integer.toString(iHolidayType)); + if (dMinLeave < 1.0D) { + oDtlBean.setDisabtxtHalfDayFlag("true"); + } else { + oDtlBean.setDisabtxtHalfDayFlag("true"); + } + oDtlBean.setDisabtxtHalfDayFlag("true"); + oDtlBean.setTxtHolidayFlag("I"); + oDtlBean.setDisabtxtHolidayFlag("true"); + oDtlBean.setStatus("N"); + } else { + oDtlBean.setTxtDate(sInterDate); + oDtlBean.setDisabtxtDate("true"); + oDtlBean.setTxtHalfDayFlag("3"); + oDtlBean.setDisabtxtHalfDayFlag("true"); + oDtlBean.setTxtHolidayFlag("H"); + oDtlBean.setDisabtxtHolidayFlag("true"); + oDtlBean.setStatus("N"); + } + arylstInterDtlList.add(oDtlBean); + } else { + HrmLvApplnDtlBean oDtlBean = new HrmLvApplnDtlBean(); + sInterDate = EnrgiseUtil.convertToString(dDate); + oDtlBean.setTxtDate(sInterDate); + oDtlBean.setTxtHalfDayFlag("3"); + oDtlBean.setTxtHolidayFlag("W"); + oDtlBean.setStatus("N"); + arylstInterDtlList.add(oDtlBean); + } + dDate = oBO.getNextDay(sInterDate, 1); + sInterDate = EnrgiseUtil.convertToString(dDate); + } + return arylstInterDtlList; + } + + public String getHolCalMstId(String sSiteId, String sFromDate, String sToDate) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sHolCalMstId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSiteId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sFromDate))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sToDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetHolCalId(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sHolCalMstId = oRow.get("ID").getString(); + } + return sHolCalMstId; + } + + public String getBetHolCount(String sHolCalId, String sFromDate, String sToDate) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sCount = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sHolCalId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sFromDate))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sToDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetBetHolCount(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sCount = oRow.get("COUNT").getString(); + } + return sCount; + } + + public String getOutStandingLeaves(String sEmpId, String sLeaveId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sCount = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLeaveId)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.procgetempleaves(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + if (arylstList.size() == 0) { + sCount = "0"; + } else { + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sCount = oRow.get("COUNT").getString(); + } + } + return sCount; + } + + private void checkHeaderConstraint(HrmLvApplnHdrBean oHrmLvApplnHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public String approveLeaveAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sLeaveAppl = null; + String sStatus = null; + ArrayList arylstErrorList = new ArrayList(); + ArrayList arylstParameters = new ArrayList(); + HrmLvApplnHdrBean oHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters.add(new DBObject(1, 1, 12, oBaseHeaderBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHdrBean.getButtonName())); + arylstParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstPK = oBean.callProc(arylstParameters, "HRMLVAPPLN.proc_ApproveEmpLeave(?,?,?,?,?,?,?)"); + sLeaveAppl = oBaseHeaderBean.getHeaderPrimaryKey(); + return sLeaveAppl; + } + + private void processApproveValidation(ArrayList arylstErrorList, String sEmpId, String sLeaveAttrId, String sDays) throws EnrgiseApplicationException, EnrgiseSystemException { + String sStartDate = ((HrmLvApplnDtlBean)this.arylstDtlBean.get(0)).getTxtDate(); + String sEndDate = ((HrmLvApplnDtlBean)this.arylstDtlBean.get(this.arylstDtlBean.size() - 1)).getTxtDate(); + if (isLeaveOverlappingApprove(sEmpId, sStartDate, sEndDate)) { + ArrayList arylstParams = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.overlappingLeave", arylstParams, "E")); + } + } + + public String cancelLeaveAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sLeaveAppl = null; + String sStatus = null; + HrmLvApplnHdrBean oHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + if (oHdrBean.getButtonName().equalsIgnoreCase("R")) { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oErrorList = new ArrayList(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proccheckcancellation(?,?,?,?,?)"); + DBObject oErr = arylstOutArray.get(0); + String sErr = ((String)oErr.getObject()).toString(); + if (Integer.parseInt(sErr) == 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.daysEncashed"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.cancellationError", oParams, "E")); + reportError(oErrorList); + } else { + sLeaveAppl = cancelLeaveApplnTxn(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + } + return sLeaveAppl; + } + + private String cancelLeaveApplnTxn(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, oHrmLvApplnHdrBean.getEmployeeId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmLvApplnHdrBean.getLeaveTypeId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmLvApplnHdrBean.getDays())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvApplnHdrBean.getDateApplied()))); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMLVAPPLN.cancelLeave(?,?,?,?,?,?,?,?)"); + return sHeaderPrimaryKey; + } + + private String approveLeaveApplHdr(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, oHrmLvApplnHdrBean.getEmployeeId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmLvApplnHdrBean.getLeaveTypeId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmLvApplnHdrBean.getDays())); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMLVAPPLN.proc_UpsertApproveLvApplnHdr(?,?,?,?,?,?,?)"); + return sHeaderPrimaryKey; + } + + private void approveLeaveApplTxn(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + String sFlag = oHrmLvApplnHdrBean.getButtonName(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, oHrmLvApplnHdrBean.getEmployeeId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmLvApplnHdrBean.getLeaveTypeId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmLvApplnHdrBean.getButtonName())); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstPK = oBean.callProc(arylstParameters, "HRMLVAPPLN.proc_UpsertApproveLvApplnTxn(?,?,?,?,?,?,?)"); + } + + public ArrayList getLeaveDates(HrmLvApplnHdrBean oHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oHdrBean.getStatusOfLeaves() != null) + if (!oHdrBean.getStatusOfLeaves().equals("N")) + return getAppliedLeaves(oHdrBean.getHeaderPrimaryKey()); + HrmCommonBO oBO = new HrmCommonBO(); + ArrayList arylstPrefixDtlBean = new ArrayList(); + ArrayList arylstIntDtlBean = new ArrayList(); + ArrayList arylstSuffixDtlBean = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + ArrayList arylstParams = new ArrayList(); + String sFromDate = oHdrBean.getFromAppDate(); + String sToDate = oHdrBean.getToAppDate(); + String sWrkgrpId = oHdrBean.getDepartment(); + String sLeaveAttrId = oHdrBean.getLeaveTypeId(); + String sLeaveCode = oHdrBean.getLeaveCodes(); + String sCalId = getCalId(sLeaveAttrId); + String sEmpId = oHdrBean.getEmployeeId(); + String sSiteId = oHdrBean.getSiteId(); + DateUtility oDateUtil = new DateUtility(); + int iDateDiff = oDateUtil.dateDiff(oBO.getddmmyyyyDateFormat(sFromDate), oBO.getddmmyyyyDateFormat(sToDate)); + if (sFromDate.equals(sToDate)) + iDateDiff = 0; + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + ArrayList arylstFlags = getHrLeaveFlagInfo(sLeaveAttrId); + if (arylstFlags != null) { + HrmLvMstHdrBean oHrmLvMstHdrBean = arylstFlags.get(0); + if (oHrmLvMstHdrBean != null) { + double dMinLeave = Double.parseDouble((oHrmLvMstHdrBean.getMinLeave() == null) ? "0" : oHrmLvMstHdrBean.getMinLeave()); + if (oHrmLvMstHdrBean.getPrefixSuffix().equals("Y")) + arylstPrefixDtlBean = getPrefixDates(sEmpId, sWrkgrpId, sSiteId, sFromDate); + if (oHrmLvMstHdrBean.getSuffix().equals("Y")) + arylstSuffixDtlBean = getSuffixDates(sEmpId, sWrkgrpId, sSiteId, sToDate); + String sInterFlag = oHrmLvMstHdrBean.getIntermediateHoliday(); + arylstIntDtlBean = getInterDates(sEmpId, sWrkgrpId, sSiteId, sFromDate, iDateDiff, dMinLeave, sInterFlag); + } + } + this.arylstDtlBean = new ArrayList(); + for (int iIndex = arylstPrefixDtlBean.size() - 1; iIndex >= 0; iIndex--) + this.arylstDtlBean.add(arylstPrefixDtlBean.get(iIndex)); + this.arylstDtlBean.addAll(arylstIntDtlBean); + this.arylstDtlBean.addAll(arylstSuffixDtlBean); + return this.arylstDtlBean; + } + + private int isHoliday(String sEmpId, String sWrkgrpId, String sSiteId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + if (isCalendarHoliday(sEmpId, sDate)) + return 3; + return isEmployeeHoliday(sEmpId, sDate); + } + + private boolean isCalendarHoliday(String sEmpId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(3, 2, 4)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_getcalhol(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iHolCount = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = !(iHolCount == 0); + return sReturnValue; + } + + private int isEmployeeHoliday(String sEmpId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetEmpHol(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList == null); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + HrmCommonBO oComBO = new HrmCommonBO(); + int iDayOfWeek = oComBO.getDayOfWeek(sDate); + int iWeekOfMonth = oComBO.getWeekOfMonth(sDate); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_day1").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_day2").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("half_day1").getString())) + return 2; + if (iDayOfWeek == Integer.parseInt(oRow.get("half_day2").getString())) + return 2; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_week_day1").getString()) && iWeekOfMonth == Integer.parseInt(oRow.get("rest_week1").getString())) + return 3; + if (iDayOfWeek == Integer.parseInt(oRow.get("rest_week_day2").getString()) && iWeekOfMonth == Integer.parseInt(oRow.get("rest_week2").getString())) + return 3; + } + return 0; + } + + private int isWorkgroupHoliday(String sWrkgrpId, String sSiteId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sWrkgrpId)); + arylstParam.add(new DBObject(2, 1, 12, sSiteId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetWrkgrpHol(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList == null); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + HrmCommonBO oComBO = new HrmCommonBO(); + int iDayOfWeek = oComBO.getDayOfWeek(sDate); + int iWeekOfMonth = oComBO.getWeekOfMonth(sDate); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + if (iDayOfWeek == oRow.get("rest_day1").getInt()) + return 3; + if (iDayOfWeek == oRow.get("rest_day2").getInt()) + return 3; + if (iDayOfWeek == oRow.get("half_day1").getInt()) + return 2; + if (iDayOfWeek == oRow.get("half_day2").getInt()) + return 2; + if (iDayOfWeek == oRow.get("rest_week_day1").getInt() && iWeekOfMonth == oRow.get("rest_week1").getInt()) + return 3; + if (iDayOfWeek == oRow.get("rest_week_day2").getInt() && iWeekOfMonth == oRow.get("rest_week2").getInt()) + return 3; + } + return 0; + } + + private void processSaveValidation(ArrayList arylstErrorList, String sEmpId, String sLeaveAttrId, String sDays, HrmLvApplnHdrBean oHrmLvApplnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + if (this.arylstDtlBean == null) + return; + if (this.arylstDtlBean.size() == 0) + return; + if (sLeaveAttrId.equalsIgnoreCase("100200500000662") || sLeaveAttrId.equalsIgnoreCase("200608000000682") || sLeaveAttrId.equalsIgnoreCase("200609000000705")) + if (Float.parseFloat(getOutStandingLeaves(sEmpId, sLeaveAttrId)) < Float.parseFloat(sDays)) { + ArrayList arrayList = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.leaveBalance", arrayList, "E")); + } + if (sLeaveAttrId.equalsIgnoreCase("100200500000662")) + if (Float.parseFloat(sDays) > 4.0D) { + ArrayList arrayList = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.clError", arrayList, "E")); + } + if (sLeaveAttrId.equalsIgnoreCase("200609000000705")) + if (Float.parseFloat(sDays) > 3.0D) + if (!EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getMedFlag()) || !oHrmLvApplnHdrBean.getMedFlag().equalsIgnoreCase("on")) { + ArrayList arrayList = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.slMedError", arrayList, "E")); + } + String sStartDate = ((HrmLvApplnDtlBean)this.arylstDtlBean.get(0)).getTxtDate(); + String sEndDate = ((HrmLvApplnDtlBean)this.arylstDtlBean.get(this.arylstDtlBean.size() - 1)).getTxtDate(); + if (isLeaveOverlapping(sEmpId, sStartDate, sEndDate)) { + ArrayList arrayList = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.overlappingLeave", arrayList, "E")); + } + if (!isPrefixAssociated(arylstErrorList, sEmpId, sStartDate, sLeaveAttrId, sDays, oHrmLvApplnHdrBean)) { + ArrayList arrayList = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.prefixAssocNotAllowed", arrayList, "E")); + } + if (!isSuffixAssociated(arylstErrorList, sEmpId, sEndDate, sLeaveAttrId, sDays, oHrmLvApplnHdrBean)) { + ArrayList arrayList = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.suffixAssocNotAllowed", arrayList, "E")); + } + String sFromDate = oHrmLvApplnHdrBean.getFromAppDate(); + String sToDate = oHrmLvApplnHdrBean.getToAppDate(); + String sWrkgrpId = oHrmLvApplnHdrBean.getDepartment(); + String sCalId = getCalId(sLeaveAttrId); + String sSiteId = oHrmLvApplnHdrBean.getSiteId(); + ArrayList arylstParams = new ArrayList(); + HrmCommonBO oBO = new HrmCommonBO(); + if (EnrgiseUtil.checkString(sDays)) + if (Double.parseDouble(sDays) <= 4) { + if (EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), sToDate, sFromDate) < 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.fromAppDate"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.header.dateValidation", arylstParams, "E")); + } + String sCalStartDtForFromDate = oBO.getStartDate(sCalId, sFromDate); + String sCalStartDtForToDate = oBO.getStartDate(sCalId, sToDate); + if (isHoliday(sEmpId, sWrkgrpId, sSiteId, sFromDate) != 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.fromAppDate"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.header.startDateHoliday", arylstParams, "E")); + } + if (isHoliday(sEmpId, sWrkgrpId, sSiteId, sToDate) != 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvAppln.fromAppDate"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.header.endDateHoliday", arylstParams, "E")); + } + } + if (isApproverAbsent(sEmpId)) + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.approverNotFound", arylstParams, "E")); + if (isNotEligible(sEmpId, sStartDate, sLeaveAttrId)) + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.notEligible", arylstParams, "E")); + Iterator itrDtlArray = this.arylstDtlBean.iterator(); + while (itrDtlArray.hasNext()) { + HrmLvApplnDtlBean oDtlBean = itrDtlArray.next(); + oDtlBean.getTxtDate(); + } + } + + private boolean isNotEligible(String sEmpId, String sStartDate, String sLeaveAttrId) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParam.add(new DBObject(3, 1, 12, sLeaveAttrId)); + arylstParam.add(new DBObject(4, 2, 4)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.procGetEligibility(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = (iVal == 0); + return sReturnValue; + } + + private boolean isApproverAbsent(String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 2, 4)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetApproverId(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = (iVal == 0); + return sReturnValue; + } + + private boolean isLeaveOverlappingApprove(String sEmpId, String sStartDate, String sEndDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sEndDate))); + arylstParam.add(new DBObject(4, 2, 4)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetOverlappingHolApprove(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = !(iVal == 0); + return sReturnValue; + } + + private boolean isLeaveOverlapping(String sEmpId, String sStartDate, String sEndDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sEndDate))); + arylstParam.add(new DBObject(4, 2, 4)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetOverlappingHol(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = !(iVal == 0); + return sReturnValue; + } + + private boolean isPrefixAssociated(ArrayList arylstErrorList, String sEmpId, String sStartDate, String sLeaveAttrId, String sDays, HrmLvApplnHdrBean oHrmLvApplnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBo = new HrmCommonBO(); + Date dDate = oBo.getPreviousDay(sStartDate, 1); + String sDate = EnrgiseUtil.convertToString(dDate); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLeaveAttrId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(4, 1, 12, sDays)); + arylstParam.add(new DBObject(5, 1, 12, String.valueOf(oHrmLvApplnHdrBean.getMedFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(6, 2, 4)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_getassociatedholPref(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = !(iVal == 0); + if (iVal == 2) { + ArrayList arylstParams = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.prefixAssocNotAllowedCL", arylstParams, "E")); + } + if (iVal == 3) { + ArrayList arylstParams = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.MedicalErr", arylstParams, "E")); + } + return sReturnValue; + } + + private boolean isSuffixAssociated(ArrayList arylstErrorList, String sEmpId, String sEndDate, String sLeaveAttrId, String sDays, HrmLvApplnHdrBean oHrmLvApplnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmCommonBO oBo = new HrmCommonBO(); + Date dDate = oBo.getNextDay(sEndDate, 1); + String sDate = EnrgiseUtil.convertToString(dDate); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLeaveAttrId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(4, 1, 12, sDays)); + arylstParam.add(new DBObject(5, 1, 12, String.valueOf(oHrmLvApplnHdrBean.getMedFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(6, 2, 4)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_getassociatedholSuf(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + boolean sReturnValue = !(iVal == 0); + if (iVal == 2) { + ArrayList arylstParams = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.suffixAssocNotAllowedCL", arylstParams, "E")); + } + if (iVal == 3) { + ArrayList arylstParams = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.MedicalErr", arylstParams, "E")); + } + if (iVal == 4) { + ArrayList arylstParams = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvAppln.onlysicklvallowed", arylstParams, "E")); + } + return sReturnValue; + } + + public ArrayList getAppliedLeaves(String sHdrPK) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sHdrPK)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetAppliedLeaves(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + ArrayList arylstDtlBean = new ArrayList(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + HrmLvApplnDtlBean oDtlBean = new HrmLvApplnDtlBean(); + oDtlBean.setDisabtxtDate("true"); + oDtlBean.setDisabtxtHolidayFlag("true"); + oDtlBean.setDisabtxtHalfDayFlag("true"); + oDtlBean.setDetailId(oRow.get("ID").getString()); + oDtlBean.setTxtDate(EnrgiseUtil.convertToString(oRow.get("EFFECT_DATE").getDate())); + oDtlBean.setTxtHolidayFlag(oRow.get("WORK_DAY_FLAG").getString()); + oDtlBean.setTxtHalfDayFlag(oRow.get("PART_FLAG").getString()); + arylstDtlBean.add(oDtlBean); + } + return arylstDtlBean; + } + + private String getHolidayCount(ArrayList arylstDtl) { + double dHolidayCount = 0.0D; + if (arylstDtl != null) { + Iterator itrDtlList = arylstDtl.iterator(); + while (itrDtlList.hasNext()) { + HrmLvApplnDtlBean oDtlBean = itrDtlList.next(); + if (!oDtlBean.getTxtHolidayFlag().equalsIgnoreCase("H")) { + if (!oDtlBean.getTxtHalfDayFlag().equalsIgnoreCase("3")) { + dHolidayCount += 0.5D; + continue; + } + dHolidayCount++; + } + } + } + return Double.toString(dHolidayCount); + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacade2Home oHome = (WorkFlowFacade2Home)WorkFlowServiceLocator2.getLocator().getService("WorkFlowFacade2"); + WorkFlowFacade2 workFlowFacade = oHome.create(); + HrmLvApplnHdrBean oHdrBean = (HrmLvApplnHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Leave"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("Leave"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Leave Application For: ").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf(" is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval: Leave Application For:").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Leave Application For: ").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf(" is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection: Leave Application For:").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("Leave", oHdrBean.getLeaveTypeId()); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The prblem is ").concat(String.valueOf(oRtEx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oRtEx.getClass().getName()))); + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The prblem is ").concat(String.valueOf(oCx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oCx.getClass().getName()))); + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The prblem is ").concat(String.valueOf(oRx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oRx.getClass().getName()))); + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } catch (Exception oEx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The prblem is ").concat(String.valueOf(oEx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oEx.getClass().getName()))); + throw new EnrgiseSystemException("wenrgise.workflow.connect", oEx); + } + } + + public LovVO getHrmLvApplnEmpNoNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + String sSiteId = oLovQueryVO.getProperty("ListSiteId"); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 1, 12, sSiteId)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "hrmlvappln.procGetEmpLOVN(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmLvApplnEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sSiteId = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + sSiteId = oLovQueryVO.getProperty("ListSiteId"); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 1, 12, sSiteId)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "hrmlvappln.procGetEmpLOVQ(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnValidationBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnValidationBO.java new file mode 100644 index 0000000..bc6101b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvApplnValidationBO.java @@ -0,0 +1,166 @@ +package wenrgise.hrms.ejb.business; + +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; + +public class HrmLvApplnValidationBO { + private double dYearsOfService; + + private double dEmpYearsOfService; + + private double dTimesInService; + + private double dEmpTimesInSevice; + + private double dDaysInService; + + private double dEmpDaysInService; + + private double dTimesInPeriod; + + private double dMaxDaysPerTransaction; + + private double dMinDaysPerTransaction; + + private double dMaxLeaveInPeriod; + + private double dEmpDaysInPeriod; + + private double dEmpTimesInPeriod; + + public void getLeaveAvaliabilityDetails(String sLeaveAttrId) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sLeaveAttrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLN.proc_GetLeaveInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + this.dYearsOfService = Double.parseDouble(oRow.get("YEARS_OF_SERVICE").getString()); + this.dDaysInService = Double.parseDouble(oRow.get("MAX_AVAIL_SVC_PRD").getString()); + this.dTimesInService = Double.parseDouble(oRow.get("txn_per_srv_prd").getString()); + this.dMaxLeaveInPeriod = Double.parseDouble(oRow.get("max_avail_cycle").getString()); + this.dTimesInPeriod = Double.parseDouble(oRow.get("txn_per_period").getString()); + this.dMaxDaysPerTransaction = Double.parseDouble(oRow.get("min_leave_per_txn").getString()); + this.dMinDaysPerTransaction = Double.parseDouble(oRow.get("max_leave_per_txn").getString()); + } + } + + public void getEmpLeaveAvailedDetails(String sEmpId, String sLeaveAttrId, String sStartDate) throws EnrgiseApplicationException, EnrgiseSystemException { + getEmpSrvLeaveAvailedDetails(sEmpId, sLeaveAttrId, sStartDate); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HrmCommonBO oBO = new HrmCommonBO(); + this.dEmpYearsOfService = Double.parseDouble(oBO.getRefList1("HRM_EMP_PERS", "ID", sEmpId, String.valueOf(String.valueOf("round(months_between('").concat(String.valueOf(sStartDate))).concat(String.valueOf("',comp_join_date ) /12 ,1)")))); + getEmpPeriodLeaveAvailedDetails(sEmpId, sLeaveAttrId, sStartDate); + } + + private void getEmpSrvLeaveAvailedDetails(String sEmpId, String sLeaveAttrId, String sStartDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLeaveAttrId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLNQUERY.proc_GetEmpSrvLeaveInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList != null) { + QueryRow oRow = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + this.dEmpDaysInService = Double.parseDouble(oRow.get("days_srv").getString()); + this.dEmpTimesInSevice = Double.parseDouble(oRow.get("times_srv").getString()); + } + } + } + + private void getEmpPeriodLeaveAvailedDetails(String sEmpId, String sLeaveAttrId, String sStartDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLeaveAttrId)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(sStartDate))); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVAPPLNQUERY.proc_GetEmpPeriodLeaveInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList != null) { + QueryRow oRow = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + this.dEmpTimesInPeriod = Double.parseDouble(oRow.get("times_period").getString()); + this.dEmpDaysInPeriod = Double.parseDouble(oRow.get("days_period").getString()); + } + } + } + + public double getDaysInService() { + return this.dDaysInService; + } + + public double getEmpDaysInService() { + return this.dEmpDaysInService; + } + + public double getEmpTimesInSevice() { + return this.dEmpTimesInSevice; + } + + public double getEmpYearsOfService() { + return this.dEmpYearsOfService; + } + + public double getTimesInService() { + return this.dTimesInService; + } + + public double getYearsOfService() { + return this.dYearsOfService; + } + + public double getMaxDaysPerTransaction() { + return this.dMaxDaysPerTransaction; + } + + public double getMinDaysPerTransaction() { + return this.dMinDaysPerTransaction; + } + + public double getEmpDaysInPeriod() { + return this.dEmpDaysInPeriod; + } + + public double getEmpTimesInPeriod() { + return this.dEmpTimesInPeriod; + } + + public double getMaxLeaveInPeriod() { + return this.dMaxLeaveInPeriod; + } + + public double getTimesInPeriod() { + return this.dTimesInPeriod; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCancQueryBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCancQueryBO.java new file mode 100644 index 0000000..ab4110d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCancQueryBO.java @@ -0,0 +1,991 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.bean.HrmLvCancQueryDtlBean; +import wenrgise.hrms.vo.HrmLvCancQVO; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmLvCancQueryBO extends HrmBaseBO { + public HrmLvCancQueryBO() {} + + public HrmLvCancQueryBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getLeaveCanQueryDetailMetaInfo(HrmLvCancQueryQVO oHrmLvCancQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String lvType = oHrmLvCancQueryQVO.getLeaveType(); + String empNo = oHrmLvCancQueryQVO.getEmployeeNumber(); + String status = oHrmLvCancQueryQVO.getCancellationStatus(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, empNo)); + arylstParam.add(new DBObject(2, 1, 12, lvType)); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancQueryQVO.getCancelFromDate()))); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancQueryQVO.getCancelToDate()))); + arylstParam.add(new DBObject(5, 1, 12, status)); + arylstParam.add(new DBObject(6, 2, -5)); + arylstParam.add(new DBObject(7, 2, 93)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_HrLeaveCanQueryDtlCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrLeaveCanQueryDetail(HrmLvCancQueryQVO oHrmLvCancQueryQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String lvType = oHrmLvCancQueryQVO.getLeaveType(); + String empNo = oHrmLvCancQueryQVO.getEmployeeNumber(); + String status = oHrmLvCancQueryQVO.getCancellationStatus(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstLeaveCanQueryDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, empNo)); + arylstParam.add(new DBObject(4, 1, 12, lvType)); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancQueryQVO.getCancelFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancQueryQVO.getCancelToDate()))); + arylstParam.add(new DBObject(7, 1, 12, status)); + arylstParam.add(new DBObject(8, 2, -10)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_HrLeaveCanQueryDtl(?,?,?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstLeaveCanQueryDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvCancQueryDtlBean oHrmLvCancQueryDtlBean = new HrmLvCancQueryDtlBean(); + oHrmLvCancQueryDtlBean.setTxtTransId(oRow.get("ID").getString()); + oHrmLvCancQueryDtlBean.setTxtLeaveCodes(oRow.get("LEAVE_DESCRIPTION").getString()); + oHrmLvCancQueryDtlBean.setTxtAppliedLeaveDate(EnrgiseUtil.convertToString(oRow.get("APPLEAVEDATE").getDate())); + oHrmLvCancQueryDtlBean.setTxtCancellationDate(EnrgiseUtil.convertToString(oRow.get("DATE_APPLIED").getDate())); + oHrmLvCancQueryDtlBean.setTxtCancellationType(oRow.get("FULL_CNCL_FLAG").getString()); + oHrmLvCancQueryDtlBean.setTxtCancelStatus(oRow.get("APPROVAL_FLAG").getString()); + arylstLeaveCanQueryDetail.add(oHrmLvCancQueryDtlBean); + } + return arylstLeaveCanQueryDetail; + } + + public RecordMetaInfo getEmpLeaveCancellationQueryScreenDetailMetaInfo(HrmLvCancQVO oHrmLvCancQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sTransId = oHrmLvCancQVO.getTransId(); + System.out.println(sTransId); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTransId)); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvCancQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvCancQVO.getEmployeeNo())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvCancQVO.getLeaveCodeId())); + arylstParam.add(new DBObject(5, 2, -5)); + arylstParam.add(new DBObject(6, 2, 93)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_HrLeaveCanQryScreenDtlCnt(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrEmpLeaveCancellationQueryScreenDetail(HrmLvCancQVO oHrmLvCancQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sTransId = oHrmLvCancQVO.getTransId(); + System.out.println(sTransId); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstEmpLeaveCanQueryScreenDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, sTransId)); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvCancQVO.getEmployeeNo())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvCancQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvCancQVO.getLeaveCodeId())); + arylstParam.add(new DBObject(7, 2, -10)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_HrLeaveCanQueryScreenDtl(?,?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpLeaveCanQueryScreenDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvCancHdrBean oHrmLvCancHdrBean = new HrmLvCancHdrBean(); + oHrmLvCancHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmLvCancHdrBean.setEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmLvCancHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmLvCancHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmLvCancHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmLvCancHdrBean.setLeaveCode(oRow.get("LEAVE_DESCRIPTION").getString()); + oHrmLvCancHdrBean.setLeaveDescription(oRow.get("NAME").getString()); + oHrmLvCancHdrBean.setLeaveCodeId(oRow.get("LEAVE_CODE_ID").getString()); + oHrmLvCancHdrBean.setDateApplied(EnrgiseUtil.convertToString(oRow.get("DATE_APPLIED").getDate())); + oHrmLvCancHdrBean.setFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oHrmLvCancHdrBean.setToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + oHrmLvCancHdrBean.setDays(oRow.get("NO_OF_DAYS").getString()); + oHrmLvCancHdrBean.setAddress(oRow.get("ADDRESS_FOR_COMM").getString()); + oHrmLvCancHdrBean.setPhoneNo(oRow.get("PHONE").getString()); + oHrmLvCancHdrBean.setCancelStatus(oRow.get("APPROVAL_FLAG").getString()); + oHrmLvCancHdrBean.setStatusOfLeave(oRow.get("LV_CNCL_FLAG").getString()); + System.out.println(oRow.get("LV_CNCL_FLAG").getString()); + oHrmLvCancHdrBean.setPurpose(oRow.get("PURPOSE").getString()); + oHrmLvCancHdrBean.setFromCancelDate(EnrgiseUtil.convertToString(oRow.get("CANFROMDATE").getDate())); + oHrmLvCancHdrBean.setToCancelDate(EnrgiseUtil.convertToString(oRow.get("CANTODATE").getDate())); + oHrmLvCancHdrBean.setCancelDays(oRow.get("CANNOOFDAYS").getString()); + oHrmLvCancHdrBean.setCancelDateApplied(EnrgiseUtil.convertToString(oRow.get("CANDATEAPP").getDate())); + oHrmLvCancHdrBean.setCancellationType(oRow.get("FULL_CNCL_FLAG").getString()); + oHrmLvCancHdrBean.setCancelRemarks(oRow.get("REMARKS").getString()); + arylstEmpLeaveCanQueryScreenDetail.add(oHrmLvCancHdrBean); + } + return arylstEmpLeaveCanQueryScreenDetail; + } + + public LovVO getHrmCnclLeaveEmpLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("empId"); + arylstHeaderList.add("hrm.HrmLeaveCancellationQuery.employeeNumber"); + arylstHeaderList.add("hrm.HrmLeaveCancellationQuery.empName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetHrmCnclLeaveEmpLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmCnclLeaveTypeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("leaveTypeId"); + arylstHeaderList.add("hrm.HrmLeaveCancellationQuery.leaveType"); + arylstHeaderList.add("hrm.HrmLeaveCancellationQuery.leaveDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetHrmCnclLeaveTypeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("LEAVE_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "hrm_emp_leave_txn"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmEmpLvCanLvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.leaveDescription"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.dateApplied"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.fromDate"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.toDate"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.days"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.purpose"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.statusOfLeave"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String sEmpNo = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getProperty("employeeNo") != null) + sEmpNo = oLovQueryVO.getProperty("employeeNo"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_GetEmpLvCanLeaveCdLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("leave_description").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("date_applied").getDate())); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("from_date").getDate())); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("to_date").getDate())); + oLOVBean.setDetailField7(oRow.get("no_of_days").getString()); + oLOVBean.setDetailField8(oRow.get("purpose").getString()); + String sFullCancel = oRow.get("FULL_CNCL_FLAG").getString(); + String sPartCancel = oRow.get("lv_cncl_flag").getString(); + if (sPartCancel.equals("N") && sFullCancel.equals("N")) + oLOVBean.setDetailField9("NC"); + if (sPartCancel.equals("Y") && sFullCancel.equals("N")) + oLOVBean.setDetailField9("N"); + if (sFullCancel.equals("Y")) + oLOVBean.setDetailField9("Y"); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmEmpLvCanLvCdInsertLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.leaveDescription"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.dateApplied"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.fromDate"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.toDate"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.days"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.purpose"); + arylstHeaderList.add("hrm.HrmLeaveCancellation.statusOfLeave"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String sEmpNo = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getProperty("employeeNo") != null) + sEmpNo = oLovQueryVO.getProperty("employeeNo"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_GetLvCodeLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("leave_description").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("date_applied").getDate())); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("from_date").getDate())); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("to_date").getDate())); + oLOVBean.setDetailField7(oRow.get("no_of_days").getString()); + oLOVBean.setDetailField8(oRow.get("purpose").getString()); + String sFullCancel = oRow.get("FULL_CNCL_FLAG").getString(); + String sPartCancel = oRow.get("lv_cncl_flag").getString(); + if (sPartCancel.equals("N") && sFullCancel.equals("N")) + oLOVBean.setDetailField9("NC"); + if (sPartCancel.equals("Y") && sFullCancel.equals("N")) + oLOVBean.setDetailField9("N"); + if (sFullCancel.equals("Y")) + oLOVBean.setDetailField9("Y"); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String getChngStatusInfo(String sTxnId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sStatus = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTxnId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLvTxnIdInChng(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sStatus = oRow.get("APPROVAL_FLAG").getString(); + } + return sStatus; + } + + public String getCnclStatusInfo(String sTxnId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sStatus = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTxnId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLvTxnIdInCncl(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sStatus = oRow.get("APPROVAL_FLAG").getString(); + } + return sStatus; + } + + private ArrayList checkLOVConstraint(ArrayList arylstList) throws EnrgiseSystemException { + LOVBean def = null; + ArrayList arylstNewList = new ArrayList(); + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + def = itrBean.next(); + String sTxnId = def.getDetailField1(); + String sChngFlag = getChngStatusInfo(sTxnId); + if (sChngFlag != null) { + if (sChngFlag.equalsIgnoreCase("R")) + arylstNewList.add(def); + continue; + } + String sCnclFlag = getCnclStatusInfo(sTxnId); + if (sCnclFlag == null) { + arylstNewList.add(def); + continue; + } + if (sCnclFlag.equalsIgnoreCase("R") || sCnclFlag.equalsIgnoreCase("A")) + arylstNewList.add(def); + } + return arylstNewList; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + if (sScreenMode.equalsIgnoreCase("N")) + checkHeaderConstraint((HrmLvCancHdrBean)oBaseHeaderBean); + if (sScreenMode.equalsIgnoreCase("U")) + if (oHrmLvCancHdrBean.getCancelStatus() == null) { + checkHeaderConstraint((HrmLvCancHdrBean)oBaseHeaderBean); + } else if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("N")) { + checkHeaderConstraint((HrmLvCancHdrBean)oBaseHeaderBean); + } else { + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.updation.mode")); + } + } + if (sScreenMode.equalsIgnoreCase("D")) + if (!oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("N")) { + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } else if (oHrmLvCancHdrBean.getStatusOfLeave().equalsIgnoreCase("Y")) { + updateTxnCnclStatus(oHrmLvCancHdrBean.getLeaveCodeId(), "N"); + } + } + reportError(arylstErrorList); + } + + private void checkHeaderConstraint(HrmLvCancHdrBean oHrmLvCancHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + String sTxnId = oHrmLvCancHdrBean.getLeaveCodeId(); + HrmCommonBO oBO = new HrmCommonBO(); + String sCnclId = oBO.getRefList("hrm_emp_leave_cncl_txn", "lv_txn_id", sTxnId, "ID"); + if (!EnrgiseUtil.checkString(sCnclId)) { + if (!oHrmLvCancHdrBean.getFromCancelDate().equals(oHrmLvCancHdrBean.getFromDate()) && !oHrmLvCancHdrBean.getToCancelDate().equals(oHrmLvCancHdrBean.getToDate())) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.lvCncl.value")); + } else { + ArrayList arylstFromTarylstList = getCancelFromDateTarylstDateDetail(sTxnId); + HrmLvCancHdrBean oHdrBean = null; + Iterator itrBean = arylstFromTarylstList.iterator(); + while (itrBean.hasNext()) { + oHdrBean = itrBean.next(); + String sCnclfromDate = oHdrBean.getFromCancelDate(); + System.out.println(sCnclfromDate); + String sCnclToDate = oHdrBean.getToCancelDate(); + System.out.println(sCnclToDate); + HrmCommonBO b = new HrmCommonBO(); + if (EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), oHdrBean.getFromCancelDate(), sCnclfromDate) > 0) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.lvCncl.value")); + if (EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), oHdrBean.getToCancelDate(), sCnclToDate) > 0) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.lvCncl.value")); + if (!oHrmLvCancHdrBean.getFromCancelDate().equals(sCnclfromDate) && !oHrmLvCancHdrBean.getToCancelDate().equals(sCnclToDate)) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.lvCncl.value")); + if (oHrmLvCancHdrBean.getFromCancelDate().equals(sCnclfromDate) && oHrmLvCancHdrBean.getToCancelDate().equals(sCnclToDate)) + updateTxnCnclStatus(oHrmLvCancHdrBean.getLeaveCodeId(), "Y"); + } + } + reportError(arylstErrorList); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmLvCancHdrBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmLvCancHdrBean oHrmLvCancHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmLvCancHdrBean.getFromCancelDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveCancellation.fromCancelDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvCancHdrBean.getToCancelDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveCancellation.toCancelDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvCancHdrBean.getCancelDateApplied())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveCancellation.cancelDateApplied"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String sCancelDays = null; + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oBaseHeaderBean; + try { + sCancelDays = getCancelDayCount(oHrmLvCancHdrBean.getLeaveCodeId(), oHrmLvCancHdrBean.getToCancelDate()); + } catch (EnrgiseApplicationException oEx) { + throw new EnrgiseSystemException(oEx); + } + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvCancHdrBean.getLeaveCodeId())); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancHdrBean.getFromCancelDate()))); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancHdrBean.getToCancelDate()))); + arylstParam.add(new DBObject(5, 1, 12, sCancelDays)); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvCancHdrBean.getCancellationType())); + arylstParam.add(new DBObject(7, 1, 12, "P")); + arylstParam.add(new DBObject(8, 1, 12, oHrmLvCancHdrBean.getCancelRemarks())); + arylstParam.add(new DBObject(9, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancHdrBean.getCancelDateApplied()))); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(12, 1, 12, null)); + arylstParam.add(new DBObject(13, 2, 12)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_UpsertLeaveCncl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + oBaseHeaderBean.setHeaderPrimaryKey(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + if (oHrmLvCancHdrBean.getCancelStatus() != null) + if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("R")) + if (oHrmLvCancHdrBean.getStatusOfLeave().equalsIgnoreCase("Y")) + updateTxnCnclStatus(oHrmLvCancHdrBean.getLeaveCodeId(), "N"); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvCancHdrBean.getLeaveCodeId())); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancHdrBean.getFromCancelDate()))); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancHdrBean.getToCancelDate()))); + arylstParam.add(new DBObject(5, 1, 12, sCancelDays)); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvCancHdrBean.getCancellationType())); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvCancHdrBean.getCancelStatus())); + arylstParam.add(new DBObject(8, 1, 12, oHrmLvCancHdrBean.getCancelRemarks())); + arylstParam.add(new DBObject(9, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvCancHdrBean.getCancelDateApplied()))); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLvCancHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(13, 2, 12)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_UpsertLeaveCncl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmLvCancHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_DeleteHrLvCnclDtl(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public String getNextCnclDtlToDate(String sDate, String sTxnId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sNextDate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(2, 1, 12, sTxnId)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_GetNextCnclDtlToDate(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sNextDate = EnrgiseUtil.convertToString(oRow.get("NEXTCNCLDTLTODATE").getDate()); + System.out.println(sNextDate); + } + return sNextDate; + } + + public String getPrevCnclDtlFromDate(String sDate, String sTxnId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sPrevDate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 93, EnrgiseUtil.convertToSqlDate(sDate))); + arylstParam.add(new DBObject(2, 1, 12, sTxnId)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_GetPrevCnclDtlFromDate(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sPrevDate = EnrgiseUtil.convertToString(oRow.get("PREVCNCLDTLTODATE").getDate()); + System.out.println(sPrevDate); + } + return sPrevDate; + } + + public void updateTxnCnclStatus(String sTxnId, String sValue) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTxnId)); + arylstParam.add(new DBObject(2, 1, 12, sValue)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCANCQUERY.proc_updateTxnStatus(?,?,?,?,?)"); + } + + public ArrayList getCancelFromDateTarylstDateDetail(String sTxnId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstDateDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sTxnId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetCnclFromToDateInCncl(?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + count = 0; + itrBean = arylstList.iterator(); + String cnclToDate = null; + String cnclFromDate = null; + String txnFromDate = null; + String txnToDate = null; + HrmLvCancHdrBean oHrmLvCancHdrBean = new HrmLvCancHdrBean(); + while (itrBean.hasNext()) { + if (count == 0) + arylstDateDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + if (count == 1) { + txnFromDate = EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate()); + txnToDate = EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate()); + } + String cnclDtlFromDate = EnrgiseUtil.convertToString(oRow.get("CANFROM").getDate()); + String cnclDtlToDate = EnrgiseUtil.convertToString(oRow.get("CANTO").getDate()); + System.out.println(cnclDtlToDate); + if (txnFromDate.equals(cnclDtlFromDate)) { + cnclFromDate = getNextCnclDtlToDate(cnclDtlToDate, sTxnId); + System.out.println(cnclFromDate); + cnclToDate = txnToDate; + System.out.println(cnclToDate); + txnFromDate = cnclFromDate; + txnToDate = cnclToDate; + continue; + } + cnclFromDate = txnFromDate; + System.out.println(cnclFromDate); + cnclToDate = getPrevCnclDtlFromDate(cnclDtlFromDate, sTxnId); + txnFromDate = cnclFromDate; + txnToDate = cnclToDate; + } + System.out.println(cnclFromDate); + System.out.println(cnclToDate); + oHrmLvCancHdrBean.setFromCancelDate(cnclFromDate); + oHrmLvCancHdrBean.setToCancelDate(cnclToDate); + arylstDateDetail.add(oHrmLvCancHdrBean); + return arylstDateDetail; + } + + public String approveLeaveCanc(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sLeaveCanc = null; + String sStatus = null; + HrmLvCancHdrBean oHdrBean = (HrmLvCancHdrBean)oBaseHeaderBean; + if (oHdrBean.getButtonName().equalsIgnoreCase("A")) { + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + sLeaveCanc = approveLeaveCancHdr(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + approveLeaveCancTxn(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + } else { + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + sLeaveCanc = approveLeaveCancHdr(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + approveLeaveCancTxn(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + } + return sLeaveCanc; + } + + private String approveLeaveCancHdr(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, oHrmLvCancHdrBean.getEmployeeId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmLvCancHdrBean.getLeaveCodeId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmLvCancHdrBean.getCancelDays())); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + if (oHrmLvCancHdrBean.getButtonName().equalsIgnoreCase("A")) + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMLVCANCQUERY.proc_UpsertApproveLvCancHdr(?,?,?,?,?,?,?)"); + return sHeaderPrimaryKey; + } + + private void approveLeaveCancTxn(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, oHrmLvCancHdrBean.getEmployeeId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmLvCancHdrBean.getLeaveCodeId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmLvCancHdrBean.getButtonName())); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstPK = oBean.callProc(arylstParameters, "HRMLVCANCQUERY.proc_UpsertApproveLvCancTxn(?,?,?,?,?,?,?)"); + } + + private String getCancelDayCount(String sTxnId, String sToDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sTxnId)); + arylstParameters.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sToDate))); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMLVCANCQUERY.proc_GetCancelLeaveCount(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + double dFlag = 0.0D; + while (itrBean.hasNext()) { + oRow = itrBean.next(); + int iFlag = Integer.parseInt(oRow.get("part_flag").getString()); + dFlag += (iFlag == 3) ? 1.0D : 0.5D; + } + String sCount = String.valueOf(dFlag); + return sCount; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmLvCancHdrBean oHdrBean = (HrmLvCancHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Leave"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("LvCncl"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Leave Cancellation No: ").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval: Leave Cancellation No:").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Leave Cancellation No: ").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection: Leave Cancellation No:").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCreditBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCreditBO.java new file mode 100644 index 0000000..9f0db7b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvCreditBO.java @@ -0,0 +1,327 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLvCreditDtlBean; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; + +public class HrmLvCreditBO extends HrmBaseBO { + private int iThisMonth; + + private int iThisYear; + + public HrmLvCreditBO() { + Calendar cal = Calendar.getInstance(); + this.iThisMonth = cal.get(2) + 1; + this.iThisYear = cal.get(1); + cal = null; + } + + public HrmLvCreditBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public String creditLvRegion(HrmLvCreditHdrBean oHrmLvCreditHdrBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstEmpList = null; + ArrayList arylstErrorList = new ArrayList(); + String sRegionId = oHrmLvCreditHdrBean.getHdrRegionId(); + checkCreditMonth(oHrmLvCreditHdrBean, arylstErrorList); + creditLvRegion(sRegionId, arylstErrorList); + reportError(arylstErrorList); + return null; + } + + public String creditLv(HrmLvCreditHdrBean oHrmLvCreditHdrBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstEmpList = null; + ArrayList arylstErrorList = new ArrayList(); + String sEmpId = oHrmLvCreditHdrBean.getEmployeeNoId(); + String sLeaveId = oHrmLvCreditHdrBean.getLeaveTypeId(); + String sNoOfDay = oHrmLvCreditHdrBean.getTxtNoOfDays(); + creditLv(sEmpId, sLeaveId, sNoOfDay, arylstErrorList); + reportError(arylstErrorList); + return null; + } + + public void checkCreditMonth(HrmLvCreditHdrBean oHrmLvCreditHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstEmpList = null; + String sRegionId = oHrmLvCreditHdrBean.getHdrRegionId(); + ArrayList arylstLvList = getLvList(sRegionId); + Iterator itrLvList = arylstLvList.iterator(); + while (itrLvList.hasNext()) { + HrmLvCreditDtlBean oLvBean = itrLvList.next(); + String sLvAttrId = oLvBean.getDetailId(); + String sLeaveName = oLvBean.getName(); + int iCreditFreq = Integer.parseInt(oLvBean.getTxtCreditFrequency()); + int iNextMonthOffset = 12 / iCreditFreq; + String sCurrentCreditMonth = oLvBean.getNextCreditYYMM(); + String sCalBeginMonth = oLvBean.getCalBeginMonth(); + String sLastCreditDay = getFirstDayOfMonth(sCurrentCreditMonth); + HrmCommonBO oBo = new HrmCommonBO(); + sLastCreditDay = EnrgiseUtil.convertToString(oBo.getPreviousDay(sLastCreditDay, 1)); + String sNextCreditMonth = getNextCreditMonth(sCurrentCreditMonth, this.iThisYear, this.iThisMonth, iNextMonthOffset); + if (sNextCreditMonth == null) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvCredit.leave"); + ArrayList oParams = new ArrayList(); + oParams.add(sLeaveName); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvCredit.failure", oParams, "E")); + } + } + } + + private void creditLvRegion(String sRegionId, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + String sLv = new String(); + String sLv1 = new String(); + String sLv2 = new String(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sRegionId)); + arylstParam.add(new DBObject(2, 1, 12, "100533")); + arylstParam.add(new DBObject(3, 1, 12, "100200500000054")); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCREDIT.procLvCredit(?,?,?,?,?,?,?,?,?,?)"); + DBObject oErrorCode = arylstOutArray.get(1); + DBObject oErrorCode1 = arylstOutArray.get(2); + DBObject oErrorCode2 = arylstOutArray.get(3); + sLv = (String)oErrorCode.getObject(); + sLv1 = (String)oErrorCode1.getObject(); + sLv2 = (String)oErrorCode2.getObject(); + if (EnrgiseUtil.checkString(sLv)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvCredit"); + ArrayList oParams = new ArrayList(); + oParams.add(sLv); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvCredit.success", oParams, "E")); + } + if (EnrgiseUtil.checkString(sLv1)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvCredit"); + ArrayList oParams = new ArrayList(); + oParams.add(sLv1); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvCredit.success", oParams, "E")); + } + if (EnrgiseUtil.checkString(sLv2)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvCredit"); + ArrayList oParams = new ArrayList(); + oParams.add(sLv2); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvCredit.success", oParams, "E")); + } + } + + private void creditLv(String sEmpId, String sLeaveId, String sNoOfDay, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + String sLv = new String(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLeaveId)); + arylstParam.add(new DBObject(3, 1, 12, sNoOfDay)); + arylstParam.add(new DBObject(4, 1, 12, "1")); + arylstParam.add(new DBObject(5, 1, 12, "1")); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCREDIT.procLvCredit(?,?,?,?,?,?,?,?,?,?)"); + DBObject oErrorCode = arylstOutArray.get(1); + sLv = (String)oErrorCode.getObject(); + if (EnrgiseUtil.checkString(sLv)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLvCredit"); + ArrayList oParams = new ArrayList(); + oParams.add(sLv); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvCredit.success", oParams, "E")); + } + } + + private ArrayList getLvList(String sRegionId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sCalId = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sRegionId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCREDIT.proc_GetLvList(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + HrmLvCreditDtlBean oCreditBean = null; + ArrayList arylstLvList = new ArrayList(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + oCreditBean = new HrmLvCreditDtlBean(); + oCreditBean.setDetailId(oRow.get("ID").getString()); + oCreditBean.setLvAttrId(oRow.get("ID").getString()); + oCreditBean.setName(oRow.get("NAME").getString()); + oCreditBean.setNextCreditYYMM(oRow.get("next_credit_yymm").getString()); + oCreditBean.setTxtCreditFrequency(oRow.get("credit_frequency").getString()); + oCreditBean.setCalBeginMonth(oRow.get("begin_month").getString()); + arylstLvList.add(oCreditBean); + } + return arylstLvList; + } + + public String getNextCreditMonth(String sCurrentCreditMonth, int iThisYear, int iThisMonth, int iNextMonthOffset) throws EnrgiseSystemException { + String sYYYYMM = null; + String sYYYY = sCurrentCreditMonth.substring(0, 4); + String sMM = sCurrentCreditMonth.substring(4); + int iYYYY = Integer.parseInt(sYYYY); + int iMM = Integer.parseInt(sMM); + if (iYYYY != iThisYear) + return null; + if (iMM == iThisMonth) { + iMM += iNextMonthOffset; + if (iMM > 12) { + iYYYY++; + iMM %= 12; + } + sMM = Integer.toString(iMM); + if (sMM.length() == 1) + sMM = String.valueOf("0").concat(String.valueOf(sMM)); + sYYYYMM = String.valueOf(String.valueOf(iYYYY)).concat(String.valueOf(sMM)); + } + return sYYYYMM; + } + + private String getFirstDayOfMonth(String sYYYYMM) { + int iDay = 1; + String sYYYY = sYYYYMM.substring(0, 4); + String sMM = sYYYYMM.substring(4); + int iMonth = Integer.parseInt(sMM); + int iYear = Integer.parseInt(sYYYY); + iMonth--; + GregorianCalendar c = new GregorianCalendar(iYear, iMonth, iDay); + Date dFirstDay = c.getTime(); + String sFirstDay = EnrgiseUtil.convertToString(dFirstDay); + return sFirstDay; + } + + private String getLastDayOfMonth(String sYYYYMM) throws EnrgiseSystemException { + int iDay = 1; + String sYYYY = sYYYYMM.substring(0, 4); + String sMM = sYYYYMM.substring(4); + int iMonth = Integer.parseInt(sMM); + int iYear = Integer.parseInt(sYYYY); + iMonth--; + GregorianCalendar gcCal = new GregorianCalendar(iYear, iMonth, iDay); + Date dFirstDay = gcCal.getTime(); + HrmCommonBO oBo = new HrmCommonBO(); + dFirstDay = oBo.getPreviousDay(EnrgiseUtil.convertToString(dFirstDay), 1); + String sFirstDay = EnrgiseUtil.convertToString(dFirstDay); + return sFirstDay; + } + + private String getCalStartDate(String sCalBeginMonth) throws EnrgiseSystemException { + HrmCommonBO oBO = new HrmCommonBO(); + String sYYYY = String.valueOf(this.iThisYear); + String sMM = sCalBeginMonth; + if (sCalBeginMonth.length() == 1) + sMM = String.valueOf("0").concat(String.valueOf(sMM)); + String sYYYYMM = String.valueOf(sYYYY).concat(String.valueOf(sMM)); + String sCalStartDate = getFirstDayOfMonth(sYYYYMM); + return sCalStartDate; + } + + public void initializeBOImpl() { + this.headerTable = "hrm_leave_mst"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseSystemException { + return new String(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public LovVO getHrmLvCreditRegionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeNo"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVCREDIT.getEmpCode(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvEncashBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvEncashBO.java new file mode 100644 index 0000000..880437e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvEncashBO.java @@ -0,0 +1,1002 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator2; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLvEncashQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.bean.WflWorkListInfoBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade2; +import wenrgise.workflow.ejb.facade.WorkFlowFacade2Home; + +public class HrmLvEncashBO extends HrmBaseBO { + public HrmLvEncashBO() {} + + public HrmLvEncashBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getEmpLeaveEncashHdrMetaInfo(HrmLvEncashQVO oHrmLvEncashQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvEncashQVO.getEmployeeNumber())); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvEncashQVO.getFromDate()))); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvEncashQVO.getToDate()))); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvEncashQVO.getChangeStatus())); + arylstParam.add(new DBObject(6, 2, -5)); + arylstParam.add(new DBObject(7, 2, 93)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_HrEmpLeaveEncshDtlCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getEmpLeaveEncashHeader(HrmLvEncashQVO oHrmLvEncashQVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + String sLevel = null; + ArrayList arylstEmpLeaveEncashDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvEncashQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvEncashQVO.getEmployeeNumber())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvEncashQVO.getFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvEncashQVO.getToDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvEncashQVO.getChangeStatus())); + arylstParam.add(new DBObject(8, 2, -10)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_HrEmpLeaveEncashDtl(?,?,?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpLeaveEncashDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvEncashHdrBean oHrmLvEncashHdrBean = new HrmLvEncashHdrBean(); + if (EnrgiseUtil.checkString(oHrmLvEncashQVO.getWorkListId())) { + WflWorkListInfoBean oInfoBean = new WflWorkListInfoBean(); + oInfoBean = getLevel(oHrmLvEncashQVO.getWorkListId()); + sLevel = oInfoBean.getONode().getLevel(); + oHrmLvEncashHdrBean.setLevel(sLevel); + } else { + sLevel = "0"; + oHrmLvEncashHdrBean.setLevel("0"); + } + oHrmLvEncashHdrBean.setEmployeeNumber(oRow.get("EMP_NO").getString()); + oHrmLvEncashHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmLvEncashHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmLvEncashHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmLvEncashHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmLvEncashHdrBean.setEmployeeId(oRow.get("E_PER_DTL_ID").getString()); + oHrmLvEncashHdrBean.setLeaveCodeId(oRow.get("LEAVE_ATTR_DT_ID").getString()); + oHrmLvEncashHdrBean.setLeaveCodes(oRow.get("LEAVE_DESCRIPTION").getString()); + oHrmLvEncashHdrBean.setDescription(oRow.get("NAME").getString()); + oHrmLvEncashHdrBean.setGrade(oRow.get("GRADE").getString()); + oHrmLvEncashHdrBean.setDesignation(oRow.get("DESIGNATION").getString()); + oHrmLvEncashHdrBean.setLocation(oRow.get("LOCATION").getString()); + oHrmLvEncashHdrBean.setEncashedAmount(oRow.get("encashment_amt").getString()); + oHrmLvEncashHdrBean.setPfDeduction(oRow.get("PF_DEDN_AMOUNT").getString()); + oHrmLvEncashHdrBean.setTaxAmount(oRow.get("IT_AMOUNT").getString()); + oHrmLvEncashHdrBean.setDateApplied(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmLvEncashHdrBean.setDaysEncashed(oRow.get("DAYS_ENCASHED").getString()); + oHrmLvEncashHdrBean.setChangeStatus(oRow.get("APPROVED_FLAG").getString()); + oHrmLvEncashHdrBean.setEligibleAmount(oRow.get("ELIG_AMOUNT").getString()); + oHrmLvEncashHdrBean.setLvTxnId(oRow.get("TXN_ID").getString()); + oHrmLvEncashHdrBean.setLvApplnFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oHrmLvEncashHdrBean.setLvApplnToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + arylstEmpLeaveEncashDetail.add(oHrmLvEncashHdrBean); + } + return arylstEmpLeaveEncashDetail; + } + + public WflWorkListInfoBean getLevel(String sWorkListId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getWorkListInfo(sWorkListId); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRemExcep) { + throw new EnrgiseSystemException(oRemExcep); + } + } + + public void initializeBOImpl() { + this.headerTable = "HRM_LEAVE_ENCASH"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmEncshLvCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveEncashment.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveEncashment.description"); + arylstHeaderList.add("hrm.HrmLeaveEncashment.leavePeriodicity"); + arylstHeaderList.add("hrm.HrmLeaveEncashment.leaveLimit"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetHrmEncLvCdLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("LEAVE_DESCRIPTION").getString()); + oLOVBean.setDetailField4(oRow.get("PERIODICITY").getString()); + oLOVBean.setDetailField5(oRow.get("ENCASHABLE_LIMIT").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String sItAmount = new String(); + String sPfAmount = new String(); + String sNetAmount = new String(); + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oBaseHeaderBean; + String sGross = calculateGrossEncash(oHrmLvEncashHdrBean); + sNetAmount = calculateNetEncashAmount(oHrmLvEncashHdrBean); + sItAmount = calculateITAmount(oHrmLvEncashHdrBean); + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvEncashHdrBean.getLeaveCodeId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvEncashHdrBean.getLeaveCodes())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvEncashHdrBean.getDateApplied()))); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvEncashHdrBean.getDaysEncashed())); + arylstParam.add(new DBObject(7, 1, 12, sGross)); + arylstParam.add(new DBObject(8, 1, 12, sPfAmount)); + arylstParam.add(new DBObject(9, 1, 12, sItAmount)); + arylstParam.add(new DBObject(10, 1, 12, sNetAmount)); + arylstParam.add(new DBObject(11, 1, 12, oHrmLvEncashHdrBean.getLvTxnId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(14, 1, 12, null)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 12)); + arylstParam.add(new DBObject(18, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_UpsertHrEmpLeaveEncashHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvEncashHdrBean.getLeaveCodeId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvEncashHdrBean.getLeaveCodes())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvEncashHdrBean.getDateApplied())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvEncashHdrBean.getDaysEncashed())); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvEncashHdrBean.getEligibleAmount())); + arylstParam.add(new DBObject(8, 1, 12, sPfAmount)); + arylstParam.add(new DBObject(9, 1, 12, sItAmount)); + arylstParam.add(new DBObject(10, 1, 12, sNetAmount)); + arylstParam.add(new DBObject(11, 1, 12, oHrmLvEncashHdrBean.getLvTxnId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLvEncashHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 12)); + arylstParam.add(new DBObject(18, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_UpsertHrEmpLeaveEncashHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_DelHrEmpLeaveEncashHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + private void checkValidTaxAmount(String sGross, String sPfAmount, String sItAmount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (Double.parseDouble(sItAmount) > Double.parseDouble(sGross)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.taxAmount"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpEncash.taxAmountError", oParams, "E")); + } + reportError(oErrorList); + } + + private String calculateNetEncashAmount(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseSystemException { + String sIT = calculateITAmount(oHrmLvEncashHdrBean); + String sGross = calculateGrossEncash(oHrmLvEncashHdrBean); + double dNet = Double.parseDouble(sGross) - Double.parseDouble(sIT); + return String.valueOf(dNet); + } + + private String calculateITAmount(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseSystemException { + double dTaxAmt = 0.0D; + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getTaxAmount())) + dTaxAmt = Double.parseDouble(oHrmLvEncashHdrBean.getTaxAmount()); + return String.valueOf(dTaxAmt); + } + + private String calculatePFAmount(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + String sBasic = new String(); + String sDA = new String(); + double dPFAmount = 0.0D; + double dBasic = 0.0D; + double dDA = 0.0D; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.procCalculateEncashAmount(?,?,?,?,?,?,?,?)"); + DBObject oBasic = arylstOutArray.get(0); + DBObject oDA = arylstOutArray.get(3); + sBasic = ((String)oBasic.getObject()).toString(); + sDA = ((String)oDA.getObject()).toString(); + dBasic = Double.parseDouble(sBasic); + dDA = Double.parseDouble(sDA); + dPFAmount = (dBasic + dDA) * 12 / 100; + return String.valueOf(dPFAmount * Double.parseDouble(oHrmLvEncashHdrBean.getDaysEncashed()) / 30); + } + + private String calculateGrossEncash(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseSystemException { + String sGrossAmount = new String(); + String sBasic = new String(); + String sDA = new String(); + String sHRA = new String(); + String sMedical = new String(); + double dTotal = 0.0D; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.procCalculateEncashAmount(?,?,?,?,?,?,?,?)"); + DBObject oBasic = arylstOutArray.get(0); + DBObject oDA = arylstOutArray.get(3); + DBObject oHRA = arylstOutArray.get(1); + DBObject oMedical = arylstOutArray.get(2); + sBasic = ((String)oBasic.getObject()).toString(); + sDA = ((String)oDA.getObject()).toString(); + sHRA = ((String)oHRA.getObject()).toString(); + sMedical = ((String)oMedical.getObject()).toString(); + dTotal = Double.parseDouble(sBasic) + Double.parseDouble(sHRA) + Double.parseDouble(sMedical) + Double.parseDouble(sDA); + sGrossAmount = String.valueOf(dTotal * Double.parseDouble(oHrmLvEncashHdrBean.getDaysEncashed()) / 30); + return sGrossAmount; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkMandatoryHeader((HrmLvEncashHdrBean)oBaseHeaderBean); + checkHeaderFields((HrmLvEncashHdrBean)oBaseHeaderBean); + } + reportError(arylstErrorList); + } + + public String getEmpGrade(String sEmpId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sAllFlag = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmlvencash.procGetEmpGrade(?,?,?,?,?)"); + DBObject oErr = arylstOutArray.get(0); + String sGrade = ((String)oErr.getObject()).toString(); + return sGrade; + } + + private void checkMandatoryHeader(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + String sGrade = getEmpGrade(oHrmLvEncashHdrBean.getEmployeeId()); + if (sGrade.equalsIgnoreCase("O")) + if (!EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getLeaveCodes())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.leaveCodes"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getDateApplied())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.dateApplied"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getDaysEncashed())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.daysEncashed"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmLvEncashHdrBean)oBaseHeaderBean, arylstErrorList); + checkDatesConstraint((HrmLvEncashHdrBean)oBaseHeaderBean, arylstErrorList); + String sGross = calculateGrossEncash(oHrmLvEncashHdrBean); + String sPfAmount = null; + String sItAmount = calculateITAmount(oHrmLvEncashHdrBean); + checkValidTaxAmount(sGross, sPfAmount, sItAmount); + checkDaysEncashed(oHrmLvEncashHdrBean); + checkMonthlyEncashment(oHrmLvEncashHdrBean); + } + if (sScreenMode.equalsIgnoreCase("D")) + if (!oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("N")) + if (arylstErrorList.isEmpty()) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.deletion.rejected")); + } + reportError(arylstErrorList); + } + + private void checkDaysEncashed(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oErrorList = new ArrayList(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvEncashHdrBean.getDaysEncashed())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvEncashHdrBean.getLeaveCodeId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvEncashHdrBean.getLvApplnFromDate())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvEncashHdrBean.getLvApplnToDate())); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proccheckencashdays(?,?,?,?,?,?,?,?,?)"); + DBObject oErr = arylstOutArray.get(0); + String sErr = ((String)oErr.getObject()).toString(); + if (Integer.parseInt(sErr) == 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.daysEncashed"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpEncash.daysEncashedError", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMonthlyEncashment(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oErrorList = new ArrayList(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proccheckmonthlyencashment(?,?,?,?,?)"); + DBObject oErr = arylstOutArray.get(0); + String sErr = ((String)oErr.getObject()).toString(); + if (Integer.parseInt(sErr) == 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.daysEncashed"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpEncash.daysEncashedError2", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmLvEncashHdrBean oHrmLvEncashHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmLvEncashHdrBean.getDateApplied()))); + arylstParam.add(new DBObject(3, 2, 4)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_Lv_encash_chk(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + int iVal = ((Integer)oOutObject.getObject()).intValue(); + if (iVal > 0) { + ArrayList arylstParams = new ArrayList(); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmLvEncash.EncashDispute", arylstParams, "E")); + } + } + + private void checkDatesConstraint(HrmLvEncashHdrBean oHrmLvEncashHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getDateApplied())) { + int dateFlag2 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmLvEncashHdrBean.getDateApplied()); + if (dateFlag2 == -1 && dateFlag2 != -2) + arylstErrorList.add(new EnrgiseApplicationException("hrm.HrmEmpEncash.dateConstraintViolated2")); + } + } + + public String getGenderInfo(String sEmpNo) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sGender = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_GetGenderInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + sGender = oRow.get("SEX").getString(); + } + return sGender; + } + + public LovVO getHrmLeaveTypesLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sEmpNo = oLovQueryVO.getProperty("employeeNumber"); + DateUtility d = new DateUtility(); + String str = d.getSysDate(); + String monOfSysDate = str.substring(3, 5); + String yearOfSysDate = str.substring(6, 10); + String yyyymm = String.valueOf(yearOfSysDate).concat(String.valueOf(monOfSysDate)); + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpEncash.leaveCodes"); + arylstHeaderList.add("hrm.HrmEmpEncash.description"); + arylstHeaderList.add("allFlag"); + arylstHeaderList.add("totalEncashLimit"); + arylstHeaderList.add("txnId"); + arylstHeaderList.add("hrm.HrmLeaveApplication.fromDate"); + arylstHeaderList.add("hrm.HrmLeaveApplication.toDate"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_GetHrmLeaveTypesLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("LEAVE_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("ALL_FLAG").getString()); + oLOVBean.setDetailField5(oRow.get("ENCASH_LIMIT_SRVC_PRD").getString()); + oLOVBean.setDetailField6(oRow.get("TXN_ID").getString()); + oLOVBean.setDetailField7(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oLOVBean.setDetailField8(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + arylstList.add(oLOVBean); + } + arylstList = checkLOVConstraint(arylstList, oLovQueryVO); + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + private ArrayList checkLOVConstraint(ArrayList arylstList, LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LOVBean oLOVBean = null; + ArrayList arylstNewList = new ArrayList(); + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oLOVBean = itrBean.next(); + String sAllFlag = oLOVBean.getDetailField4(); + if (sAllFlag.equalsIgnoreCase("Y")) { + arylstNewList.add(oLOVBean); + continue; + } + String sAttrId = oLOVBean.getDetailField1(); + String sQuery = String.valueOf(" Select ELIG_SQL as ELIG_SQL from HRM_LEAVE_ATTR_DTL where ID= ").concat(String.valueOf(sAttrId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList1 = oBean.executeQuery(sQuery); + Iterator itrBean1 = arylstList1.iterator(); + if (itrBean1.hasNext()) { + QueryRow oRow = itrBean1.next(); + String sSql = oRow.get("ELIG_SQL").getString(); + if (EnrgiseUtil.checkString(sSql)) { + String sEmpNo = oLovQueryVO.getProperty("employeeNumber"); + HrmCommonBO oBO = new HrmCommonBO(); + String sEmpId = oBO.getRefList1("HRM_EMP_PERS", "EMP_NO", sEmpNo, "ID"); + StringBuffer s = new StringBuffer(sSql); + s.replace(s.lastIndexOf("?"), s.lastIndexOf("?") + 1, sEmpId); + ArrayList arylstList2 = oBean.executeQuery(s.toString()); + if (arylstList2.size() != 0) + arylstNewList.add(oLOVBean); + } + } + } + return arylstNewList; + } + + public ArrayList getHrEmpEncashDaysEncashed(String sLeaveId, String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList arylstEmpLeaveEncash = null; + Iterator itrBean = null; + QueryRow oRow = null; + QueryValue oValue = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sLeaveId)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVENCASH.proc_GetHrmDaysEncashedData(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstEmpLeaveEncash = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvEncashHdrBean oHrmLvEncashHdrBean = new HrmLvEncashHdrBean(); + oHrmLvEncashHdrBean.setTotalDaysEncashed(oRow.get("total_days_encashed").getString()); + arylstEmpLeaveEncash.add(oHrmLvEncashHdrBean); + } + return arylstEmpLeaveEncash; + } + + private void checkHeaderFields(HrmLvEncashHdrBean oHrmLvEncashHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException {} + + public String approveLeaveEncash(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sLeaveEncash = null; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + sLeaveEncash = approveLeaveEncashHdr(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + approveLeaveEncashTxn(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + return sLeaveEncash; + } + + private String approveLeaveEncashHdr(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmLvEncashHdrBean.getLeaveCodeId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmLvEncashHdrBean.getDaysEncashed())); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMLVENCASH.proc_UpsertApproveLvEncashHdr(?,?,?,?,?,?,?)"); + return sHeaderPrimaryKey; + } + + private void approveLeaveEncashTxn(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, oHrmLvEncashHdrBean.getEmployeeId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmLvEncashHdrBean.getLvTxnId())); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstPK = oBean.callProc(arylstParameters, "HRMLVENCASH.proc_UpsertApproveLvEncashTxn(?,?,?,?,?,?)"); + } + + public String rejectLvEncash(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMLVENCASH.procRejectLvEncash(?,?,?,?)"); + } + return sHeaderPrimaryKey; + } + + public String submitLvEncash(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sLeaveEncash = null; + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("Pending")) { + oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParameters, "HRMLVENCASH.procSubmitLvEncash(?,?,?,?)"); + } + ArrayList arylstParam = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvEncashHdrBean.getLvTxnId())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmlvencash.procchecksubmit(?,?,?,?,?)"); + DBObject oErr = arylstOutArray.get(0); + String sErr = ((String)oErr.getObject()).toString(); + if (Integer.parseInt(sErr) == 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpEncash.daysEncashed"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpEncash.submitError", oParams, "E")); + reportError(oErrorList); + } + return oBaseHeaderBean.getHeaderPrimaryKey(); + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacade2Home oHome = (WorkFlowFacade2Home)WorkFlowServiceLocator2.getLocator().getService("WorkFlowFacade2"); + WorkFlowFacade2 workFlowFacade = oHome.create(); + HrmLvEncashHdrBean oHdrBean = (HrmLvEncashHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Leave"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("LvEncash"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Leave Encashment No: ").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval: Leave Encashment No:").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Leave Encashment No: ").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection: Leave Encashment No:").concat(String.valueOf(oHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("LvEncash", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } + + public LovVO getHrmLvEncashEmpNoNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + String sSiteId = oLovQueryVO.getProperty("ListSiteId"); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 1, 12, sSiteId)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "hrmlvencash.procGetEmpLOVN(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmLvEncashEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.firstName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.middleName"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.lastName"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.grade"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.designation"); + arylstHeaderList.add("hrm.HrmEmpLoanAppln.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sSiteId = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + sSiteId = oLovQueryVO.getProperty("ListSiteId"); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 1, 12, sSiteId)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "hrmlvencash.procGetEmpLOVQ(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("GRADE").getString()); + oLOVBean.setDetailField7(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField8(oRow.get("LOCATION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvLedgerBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvLedgerBO.java new file mode 100644 index 0000000..2201a7c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvLedgerBO.java @@ -0,0 +1,514 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Date; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLvLedgerDtlBean; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.bean.HrmLvLedgerTransDtlBean; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLvLedgerQVO; + +public class HrmLvLedgerBO extends HrmBaseBO { + public HrmLvLedgerBO() {} + + public HrmLvLedgerBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getEmpLeaveLedgerDetailMetaInfo(HrmLvLedgerQVO oHrmLvLedgerQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String lvType = oHrmLvLedgerQVO.getLeaveCode(); + String empNo = oHrmLvLedgerQVO.getEmployeeNo(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, empNo)); + arylstParam.add(new DBObject(2, 1, 12, lvType)); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_HrLeaveLedgerDtlCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrEmpLeaveLedgerDetail(HrmLvLedgerQVO oHrmLvLedgerQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String lvType = oHrmLvLedgerQVO.getLeaveCode(); + String empNo = oHrmLvLedgerQVO.getEmployeeNo(); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList oEmpLeaveLedgerDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, empNo)); + arylstParam.add(new DBObject(4, 1, 12, lvType)); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_HrLeaveLedgerDtl(?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + oEmpLeaveLedgerDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvLedgerDtlBean oHrmLvLedgerDtlBean = new HrmLvLedgerDtlBean(); + oHrmLvLedgerDtlBean.setTxtEmpNo(oRow.get("EMP_NO").getString()); + oHrmLvLedgerDtlBean.setTxtleaveTypes(oRow.get("LEAVE_TYPE").getString()); + oHrmLvLedgerDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmLvLedgerDtlBean.setTxtCreditDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oHrmLvLedgerDtlBean.setTxtOpeningBalance(oRow.get("OPENING_BAL").getString()); + oHrmLvLedgerDtlBean.setTxtLeavesCredited(oRow.get("LEAVES_CREDITED").getString()); + oHrmLvLedgerDtlBean.setTxtLeavesTaken(oRow.get("LEAVES_TAKEN").getString()); + oHrmLvLedgerDtlBean.setTxtLeavesEncashed(oRow.get("LEAVES_ENCASHED").getString()); + oHrmLvLedgerDtlBean.setTxtLeaveBalance(oRow.get("LEAVE_BALANCE").getString()); + oHrmLvLedgerDtlBean.setTxtLeavesPending(oRow.get("lvPending").getString()); + oEmpLeaveLedgerDetail.add(oHrmLvLedgerDtlBean); + } + return oEmpLeaveLedgerDetail; + } + + public String getHrEmpLeaveLedgerTxnDetail(String sDtlId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String fromDate = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList oEmpLeaveLedgerTxnDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sDtlId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_HrLeaveLedgerTxnDateDtl(?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + oRow = itrBean.next(); + String calId = oRow.get("CAL_ID").getString(); + String cdDate = formatter.format(oRow.get("CREDITDATE").getDate()); + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + fromDate = oHrmFacade.getHrmCalStartDate(calId, cdDate); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return fromDate; + } + + public ArrayList getHrEmpLeaveLedgerTxnDetail(HrmLvLedgerQVO oHrmLvLedgerQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oEmpLeaveLedgerTxnDetail = null; + String sId = oHrmLvLedgerQVO.getHdnDetailId(); + HrmLvLedgerBO oHrmLvLedgerBO = new HrmLvLedgerBO(); + String sFromDate = oHrmLvLedgerBO.getHrEmpLeaveLedgerTxnDetail(sId); + DateUtility d = new DateUtility(); + Date d1 = new Date(d.getDateLong(sFromDate)); + String sLvTaken = oHrmLvLedgerQVO.getLeavesTaken(); + String sLvEncashed = oHrmLvLedgerQVO.getLeavesEncashed(); + String sLvType = oHrmLvLedgerQVO.getLeavesType(); + String sEmpNo = oHrmLvLedgerQVO.getEmployeeNo(); + if (EnrgiseUtil.checkString(sLvTaken)) + if (Integer.parseInt(sLvTaken) > 0) { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(4, 1, 12, sLvType)); + arylstParam.add(new DBObject(5, 1, 91, d1)); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_HrLedgerTxnLvTakenDtl(?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + oEmpLeaveLedgerTxnDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvLedgerTransDtlBean oTrnsDtlBean = new HrmLvLedgerTransDtlBean(); + oTrnsDtlBean.setTxtNoOfDays(oRow.get("NO_OF_DAYS").getString()); + oTrnsDtlBean.setTxtFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oTrnsDtlBean.setTxtToDate(EnrgiseUtil.convertToString(oRow.get("to_date").getDate())); + oTrnsDtlBean.setTxtApplicationDate(EnrgiseUtil.convertToString(oRow.get("DATE_APPLIED").getDate())); + oTrnsDtlBean.setTxtAction(oRow.get("LEAVESTAKEN").getString()); + oEmpLeaveLedgerTxnDetail.add(oTrnsDtlBean); + } + } + if (EnrgiseUtil.checkString(sLvEncashed)) + if (Integer.parseInt(sLvEncashed) > 0) { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(4, 1, 12, sLvType)); + arylstParam.add(new DBObject(5, 1, 91, d1)); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_HrLedgerTxnLvEncashedDtl(?,?,?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + oEmpLeaveLedgerTxnDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvLedgerTransDtlBean oTrnsDtlBean = new HrmLvLedgerTransDtlBean(); + String datenewformat = formatter.format(oRow.get("APPLICATION_DATE").getDate()); + oTrnsDtlBean.setTxtApplicationDate(datenewformat); + oTrnsDtlBean.setTxtPayrollMonth(oRow.get("PAYROLL_YYYYMM").getString()); + oTrnsDtlBean.setTxtNoOfDays(oRow.get("DAYS_ENCASHED").getString()); + oTrnsDtlBean.setTxtAction(oRow.get("LEAVESENCASHED").getString()); + oEmpLeaveLedgerTxnDetail.add(oTrnsDtlBean); + } + } + return oEmpLeaveLedgerTxnDetail; + } + + public RecordMetaInfo getHrEmpLeaveLedgerTxnDetail(HrmLvLedgerQVO oHrmLvLedgerQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + String sId = oHrmLvLedgerQVO.getHdnDetailId(); + HrmLvLedgerBO oHrmLvLedgerBO = new HrmLvLedgerBO(); + String sFromDate = oHrmLvLedgerBO.getHrEmpLeaveLedgerTxnDetail(sId); + DateUtility d = new DateUtility(); + Date d1 = new Date(d.getDateLong(sFromDate)); + String sLvTaken = oHrmLvLedgerQVO.getLeavesTaken(); + String sLvEncashed = oHrmLvLedgerQVO.getLeavesEncashed(); + String sLvType = oHrmLvLedgerQVO.getLeavesType(); + String sEmpNo = oHrmLvLedgerQVO.getEmployeeNo(); + if (EnrgiseUtil.checkString(sLvTaken)) + if (Integer.parseInt(sLvTaken) >= 0) { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(2, 1, 12, sLvType)); + arylstParam.add(new DBObject(3, 1, 91, d1)); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_HrLdgrTxnLvTakenDtlCount(?,?,?,?,?,?,?,?)"); + oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + } + if (EnrgiseUtil.checkString(sLvEncashed)) + if (Integer.parseInt(sLvEncashed) > 0) { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpNo)); + arylstParam.add(new DBObject(2, 1, 12, sLvType)); + arylstParam.add(new DBObject(3, 1, 91, d1)); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_HrLdgrTxnLvEncshDtlCount(?,?,?,?,?,?,?,?)"); + oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + } + return oRecordMetaInfo; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_PERS"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmLvLedgerHdrBean oHrmLvLedgerHdrBean = (HrmLvLedgerHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvLedgerHdrBean.getEmployeeNo())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvLedgerHdrBean.getEmployeeName())); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(6, 1, 12, null)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_UpsertHrLvLdgrHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvLedgerHdrBean.getEmployeeNo())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvLedgerHdrBean.getEmployeeName())); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvLedgerHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.proc_UpsertHrLvLdgrHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmEmployeeNumberLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeNo"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetHrmEmployeeNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmLeaveCodesLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveLedger.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveLedger.leaveDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetHrmLeaveCodesLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("LEAVE_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getEmpCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeNo"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sEmpId = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + if (oLovQueryVO.getProperty("empId") != null) + sEmpId = oLovQueryVO.getProperty("empId"); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.getEmpCode(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("empNo").getString()); + oLOVBean.setDetailField3(oRow.get("empName").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String getGroupInfo(String oUserTypeId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + int count = 0; + String groupStatus = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oUserTypeId)); + arylstParam.add(new DBObject(2, 2, 12)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLEDGER.getGroupId(?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + groupStatus = (String)oOutObject.getObject(); + QueryRow oRow = null; + return groupStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvMstBO.java new file mode 100644 index 0000000..f92aae0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmLvMstBO.java @@ -0,0 +1,1038 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmLvMstDtlBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.vo.HrmLvMstQVO; + +public class HrmLvMstBO extends HrmBaseBO { + public HrmLvMstBO() {} + + public HrmLvMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmLeaveMasterHdrMetaInfo(HrmLvMstQVO oHrmLvMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvMstQVO.getLeaveCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvMstQVO.getCalendar())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_HrLeaveMstHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLeaveMasterHeaderInfo(HrmLvMstQVO oHrmLvMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmLvMstQVO == null) + oHrmLvMstQVO = new HrmLvMstQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmLvMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvMstQVO.getLeaveCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvMstQVO.getCalendar())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_GetHrLeaveMstHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + String Eve, EnFlg, PreSufFlg, sufFlg, IntrHolFlg, LvObsFlg; + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvMstHdrBean oLeaveHeader = new HrmLvMstHdrBean(); + oLeaveHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oLeaveHeader.setLeaveCode(oRow.get("CODE").getString()); + oLeaveHeader.setDescription(oRow.get("NAME").getString()); + oLeaveHeader.setEvidenceDescription(oRow.get("EVIDENCE_DESCRIPTION").getString()); + oLeaveHeader.setPeriodicity(oRow.get("PERIODICITY").getString()); + oLeaveHeader.setEncashableLimit(oRow.get("ENCASHABLE_LIMIT").getString()); + oLeaveHeader.setCalendar(oRow.get("CALENDAR_TYPE").getString()); + oLeaveHeader.setApplicableTo(oRow.get("SEX").getString()); + String EveReq = oRow.get("EVIDENCE_REQUIRED").getString(); + if (EveReq.equalsIgnoreCase("Y")) { + Eve = "on"; + } else { + Eve = "off"; + } + oLeaveHeader.setEvidenceRequired(Eve); + String Encash = oRow.get("ENCASHABLE_FLAG").getString(); + if (Encash.equalsIgnoreCase("Y")) { + EnFlg = "on"; + } else { + EnFlg = "off"; + } + oLeaveHeader.setEncashable(EnFlg); + String PreSuf = oRow.get("PREFIX_FLAG").getString(); + if (PreSuf.equalsIgnoreCase("Y")) { + PreSufFlg = "on"; + } else { + PreSufFlg = "off"; + } + oLeaveHeader.setPrefixSuffix(PreSufFlg); + String suf = oRow.get("SUFFIX_FLAG").getString(); + if (suf.equalsIgnoreCase("Y")) { + sufFlg = "on"; + } else { + sufFlg = "off"; + } + oLeaveHeader.setSuffix(sufFlg); + String IntrHol = oRow.get("INTRMDT_HLDY_ALLWD").getString(); + if (IntrHol.equalsIgnoreCase("Y")) { + IntrHolFlg = "on"; + } else { + IntrHolFlg = "off"; + } + oLeaveHeader.setIntermediateHoliday(IntrHolFlg); + String LvObs = oRow.get("LEAVE_OBSOLETE").getString(); + if (LvObs.equalsIgnoreCase("Y")) { + LvObsFlg = "on"; + } else { + LvObsFlg = "off"; + } + oLeaveHeader.setLeaveObsolete(LvObsFlg); + arylstHeaderList.add(oLeaveHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmLeaveMasterDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_HrLeaveMstDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLeaveMasterDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmLeaveMasterDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_GetHrLeaveMstDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmLeaveMasterDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvMstDtlBean oLeaveMasterDetailBean = new HrmLvMstDtlBean(); + oLeaveMasterDetailBean.setDetailId(oRow.get("ID").getString()); + oLeaveMasterDetailBean.setTxtLeaveDescription(oRow.get("LEAVE_DESCRIPTION").getString()); + oLeaveMasterDetailBean.setTxtApplicableFor(oRow.get("APPLICABLE_FOR").getString()); + oLeaveMasterDetailBean.setTxtStateCode(oRow.get("STATE_CODE").getString()); + oLeaveMasterDetailBean.setTxtState(oRow.get("GLOBAL_CODE_DESC").getString()); + oLeaveMasterDetailBean.setTxtMinimumServicePeriod(oRow.get("YEARS_OF_SERVICE").getString()); + oLeaveMasterDetailBean.setTxtMaximumAccumulationLimit(oRow.get("ACCUMULATION_LIMIT").getString()); + oLeaveMasterDetailBean.setTxtTotalAvailableLimit(oRow.get("MAX_AVAIL_SVC_PRD").getString()); + oLeaveMasterDetailBean.setTxtAdvanceLimit(oRow.get("ADVANCE_LIMIT").getString()); + oLeaveMasterDetailBean.setTxtCreditFrequency(oRow.get("CREDIT_FREQUENCY").getString()); + oLeaveMasterDetailBean.setTxtLeavesCredited(oRow.get("MIN_CREDIT_LIMIT").getString()); + oLeaveMasterDetailBean.setTxtMaxCreditLimit(oRow.get("MAX_CREDIT_LIMIT").getString()); + String wrkFlag = oRow.get("WORKING_DAYS_FLAG").getString(); + if (wrkFlag.equalsIgnoreCase("null")) { + wrkFlag = "off"; + } else { + if (wrkFlag.equalsIgnoreCase("Y")) + wrkFlag = "on"; + if (wrkFlag.equalsIgnoreCase("N")) + wrkFlag = "off"; + } + oLeaveMasterDetailBean.setTxtDependantOnWorkingDays(wrkFlag); + oLeaveMasterDetailBean.setTxtUnit(oRow.get("DAYS_WORKED").getString()); + String allFlag = oRow.get("ALL_FLAG").getString(); + if (allFlag.equalsIgnoreCase("null")) { + allFlag = "off"; + } else { + if (allFlag.equalsIgnoreCase("Y")) + allFlag = "on"; + if (allFlag.equalsIgnoreCase("N")) + allFlag = "off"; + } + oLeaveMasterDetailBean.setTxtApplicableToAll(allFlag); + oLeaveMasterDetailBean.setTxtEffectiveFrom(oRow.get("EFFECT_FROM").getString()); + oLeaveMasterDetailBean.setTxtEffectiveTo(oRow.get("EFFECT_TO").getString()); + oLeaveMasterDetailBean.setTxtMaxTxn(oRow.get("TXN_PER_SRV_PRD").getString()); + oLeaveMasterDetailBean.setTxtMinLeavePerTxn(oRow.get("MIN_LEAVE_PER_TXN").getString()); + String lapseFlag = oRow.get("LAPSE_FLAG").getString(); + if (lapseFlag.equalsIgnoreCase("null")) { + lapseFlag = ""; + } else { + if (lapseFlag.equalsIgnoreCase("Y")) + lapseFlag = "on"; + if (lapseFlag.equalsIgnoreCase("N")) + lapseFlag = ""; + } + oLeaveMasterDetailBean.setTxtLapsable(lapseFlag); + arylstHrmLeaveMasterDetail.add(oLeaveMasterDetailBean); + } + return arylstHrmLeaveMasterDetail; + } + + public ArrayList getHrmCurLeaveMasterDetailInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmCurLeaveMasterDetail = null; + DateUtility d = new DateUtility(); + String str = d.getSysDate(); + String monOfSysDate = str.substring(3, 5); + String yearOfSysDate = str.substring(6, 10); + String yyyymm = String.valueOf(yearOfSysDate).concat(String.valueOf(monOfSysDate)); + System.out.println(yyyymm); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, yyyymm)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_GetHrCurLeaveInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmCurLeaveMasterDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmLvMstDtlBean oLeaveMasterDetailBean = new HrmLvMstDtlBean(); + oLeaveMasterDetailBean.setDetailId(oRow.get("ID").getString()); + oLeaveMasterDetailBean.setTxtLeaveDescription(oRow.get("LEAVE_DESCRIPTION").getString()); + arylstHrmCurLeaveMasterDetail.add(oLeaveMasterDetailBean); + } + return arylstHrmCurLeaveMasterDetail; + } + + public LovVO getHrmLeaveDetailLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ID"); + arylstHeaderNames.add("hrm.HrmLeaveMaster.leaveDescription"); + arylstHeaderNames.add("hrm.HrmLeaveMaster.effectiveFrom"); + arylstHeaderNames.add("hrm.HrmLeaveMaster.effectiveTo"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + DateUtility d = new DateUtility(); + String str = d.getSysDate(); + String monOfSysDate = str.substring(3, 5); + String yearOfSysDate = str.substring(6, 10); + String yyyymm = String.valueOf(yearOfSysDate).concat(String.valueOf(monOfSysDate)); + System.out.println(yyyymm); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, yyyymm)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_GetHrCurLeaveInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("LEAVE_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("EFFECT_FROM").getString()); + oLOVBean.setDetailField4(oRow.get("EFFECT_TO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void updateLeaveMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSql)); + arylstParam.add(new DBObject(2, 1, 12, sId)); + arylstParam.add(new DBObject(3, 1, 12, sUserId)); + arylstParam.add(new DBObject(4, 1, 12, sUserSiteId)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_UpdateHrLvAttrDtl(?,?,?,?,?,?,?)"); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_LEAVE_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmLeaveMaster")) + saveHrmLeaveDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmLvMstHdrBean oHrmLvMstHdrBean = (HrmLvMstHdrBean)oBaseHeaderBean; + String encashable = null; + String leaveObsolete = null; + String intermediateHoliday = null; + String prefixSuffix = null; + String suffix = null; + String eviReq = null; + String calId = getCalIdByType(oHrmLvMstHdrBean.getCalendar()); + if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("on")) { + encashable = "Y"; + } else { + encashable = "N"; + } + if (String.valueOf(oHrmLvMstHdrBean.getLeaveObsolete()).equalsIgnoreCase("on")) { + leaveObsolete = "Y"; + } else { + leaveObsolete = "N"; + } + if (String.valueOf(oHrmLvMstHdrBean.getIntermediateHoliday()).equalsIgnoreCase("on")) { + intermediateHoliday = "Y"; + } else { + intermediateHoliday = "N"; + } + if (String.valueOf(oHrmLvMstHdrBean.getPrefixSuffix()).equalsIgnoreCase("on")) { + prefixSuffix = "Y"; + } else { + prefixSuffix = "N"; + } + if (String.valueOf(oHrmLvMstHdrBean.getSuffix()).equalsIgnoreCase("on")) { + suffix = "Y"; + } else { + suffix = "N"; + } + if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("on")) { + eviReq = "Y"; + } else { + eviReq = "N"; + } + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvMstHdrBean.getApplicableTo())); + arylstParam.add(new DBObject(3, 1, 12, calId)); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvMstHdrBean.getDescription())); + arylstParam.add(new DBObject(5, 1, 12, encashable)); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvMstHdrBean.getEncashableLimit())); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvMstHdrBean.getEvidenceDescription())); + arylstParam.add(new DBObject(8, 1, 12, eviReq)); + arylstParam.add(new DBObject(9, 1, 12, intermediateHoliday)); + arylstParam.add(new DBObject(10, 1, 12, oHrmLvMstHdrBean.getLeaveCode())); + arylstParam.add(new DBObject(11, 1, 12, leaveObsolete)); + arylstParam.add(new DBObject(12, 1, 12, oHrmLvMstHdrBean.getPeriodicity())); + arylstParam.add(new DBObject(13, 1, 12, prefixSuffix)); + arylstParam.add(new DBObject(14, 1, 12, suffix)); + arylstParam.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(17, 1, 12, null)); + arylstParam.add(new DBObject(18, 2, 12)); + arylstParam.add(new DBObject(19, 2, 12)); + arylstParam.add(new DBObject(20, 2, 12)); + arylstParam.add(new DBObject(21, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_UpsertHrLeaveMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvMstHdrBean.getApplicableTo())); + arylstParam.add(new DBObject(3, 1, 12, calId)); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvMstHdrBean.getDescription())); + arylstParam.add(new DBObject(5, 1, 12, encashable)); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvMstHdrBean.getEncashableLimit())); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvMstHdrBean.getEvidenceDescription())); + arylstParam.add(new DBObject(8, 1, 12, eviReq)); + arylstParam.add(new DBObject(9, 1, 12, intermediateHoliday)); + arylstParam.add(new DBObject(10, 1, 12, oHrmLvMstHdrBean.getLeaveCode())); + arylstParam.add(new DBObject(11, 1, 12, leaveObsolete)); + arylstParam.add(new DBObject(12, 1, 12, oHrmLvMstHdrBean.getPeriodicity())); + arylstParam.add(new DBObject(13, 1, 12, prefixSuffix)); + arylstParam.add(new DBObject(14, 1, 12, suffix)); + arylstParam.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmLvMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(18, 2, 12)); + arylstParam.add(new DBObject(19, 2, 12)); + arylstParam.add(new DBObject(20, 2, 12)); + arylstParam.add(new DBObject(21, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_UpsertHrLeaveMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmLvMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_DelHrLeaveMstHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + private void saveHrmLeaveDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmLvMstDtlBean oHrmLvMstDtlBean = itrBean.next(); + if (oHrmLvMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLVMST.proc_UpsertHrLeaveMstDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvMstDtlBean.getTxtLeaveDescription())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvMstDtlBean.getTxtApplicableFor())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvMstDtlBean.getTxtStateCode())); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvMstDtlBean.getTxtEffectiveFrom())); + arylstParam.add(new DBObject(8, 1, 12, oHrmLvMstDtlBean.getTxtEffectiveTo())); + arylstParam.add(new DBObject(9, 1, 12, oHrmLvMstDtlBean.getTxtMinimumServicePeriod())); + arylstParam.add(new DBObject(10, 1, 12, oHrmLvMstDtlBean.getTxtMaximumAccumulationLimit())); + arylstParam.add(new DBObject(11, 1, 12, oHrmLvMstDtlBean.getTxtTotalAvailableLimit())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLvMstDtlBean.getTxtAdvanceLimit())); + arylstParam.add(new DBObject(13, 1, 12, oHrmLvMstDtlBean.getTxtMaxTxn())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLvMstDtlBean.getTxtMinLeavePerTxn())); + String depWrkDays = String.valueOf(oHrmLvMstDtlBean.getTxtDependantOnWorkingDays()); + if (depWrkDays.equalsIgnoreCase("on")) { + depWrkDays = "Y"; + } else { + depWrkDays = "N"; + } + arylstParam.add(new DBObject(15, 1, 12, depWrkDays)); + arylstParam.add(new DBObject(16, 1, 12, oHrmLvMstDtlBean.getTxtUnit())); + arylstParam.add(new DBObject(17, 1, 12, oHrmLvMstDtlBean.getTxtCreditFrequency())); + arylstParam.add(new DBObject(18, 1, 12, oHrmLvMstDtlBean.getTxtMaxCreditLimit())); + arylstParam.add(new DBObject(19, 1, 12, oHrmLvMstDtlBean.getTxtLeavesCredited())); + String applicable = String.valueOf(oHrmLvMstDtlBean.getTxtApplicableToAll()); + if (applicable.equalsIgnoreCase("on")) { + applicable = "Y"; + } else { + applicable = "N"; + } + arylstParam.add(new DBObject(20, 1, 12, applicable)); + String lapsable = String.valueOf(oHrmLvMstDtlBean.getTxtLapsable()); + if (lapsable.equalsIgnoreCase("on")) { + lapsable = "Y"; + } else { + lapsable = "N"; + } + arylstParam.add(new DBObject(21, 1, 12, lapsable)); + arylstParam.add(new DBObject(22, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(23, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmLvMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMLVMST.proc_UpsertHrLeaveMstDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmLvMstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmLvMstDtlBean.getTxtLeaveDescription())); + arylstParam.add(new DBObject(5, 1, 12, oHrmLvMstDtlBean.getTxtApplicableFor())); + arylstParam.add(new DBObject(6, 1, 12, oHrmLvMstDtlBean.getTxtStateCode())); + arylstParam.add(new DBObject(7, 1, 12, oHrmLvMstDtlBean.getTxtEffectiveFrom())); + arylstParam.add(new DBObject(8, 1, 12, oHrmLvMstDtlBean.getTxtEffectiveTo())); + arylstParam.add(new DBObject(9, 1, 12, oHrmLvMstDtlBean.getTxtMinimumServicePeriod())); + arylstParam.add(new DBObject(10, 1, 12, oHrmLvMstDtlBean.getTxtMaximumAccumulationLimit())); + arylstParam.add(new DBObject(11, 1, 12, oHrmLvMstDtlBean.getTxtTotalAvailableLimit())); + arylstParam.add(new DBObject(12, 1, 12, oHrmLvMstDtlBean.getTxtAdvanceLimit())); + arylstParam.add(new DBObject(13, 1, 12, oHrmLvMstDtlBean.getTxtMaxTxn())); + arylstParam.add(new DBObject(14, 1, 12, oHrmLvMstDtlBean.getTxtMinLeavePerTxn())); + String depWrkDays = String.valueOf(oHrmLvMstDtlBean.getTxtDependantOnWorkingDays()); + if (depWrkDays.equalsIgnoreCase("on")) { + depWrkDays = "Y"; + } else { + depWrkDays = "N"; + } + arylstParam.add(new DBObject(15, 1, 12, depWrkDays)); + arylstParam.add(new DBObject(16, 1, 12, oHrmLvMstDtlBean.getTxtUnit())); + arylstParam.add(new DBObject(17, 1, 12, oHrmLvMstDtlBean.getTxtCreditFrequency())); + arylstParam.add(new DBObject(18, 1, 12, oHrmLvMstDtlBean.getTxtMaxCreditLimit())); + arylstParam.add(new DBObject(19, 1, 12, oHrmLvMstDtlBean.getTxtLeavesCredited())); + String applicable = String.valueOf(oHrmLvMstDtlBean.getTxtApplicableToAll()); + if (applicable.equalsIgnoreCase("on")) { + applicable = "Y"; + } else { + applicable = "N"; + } + arylstParam.add(new DBObject(20, 1, 12, applicable)); + String lapsable = String.valueOf(oHrmLvMstDtlBean.getTxtLapsable()); + if (lapsable.equalsIgnoreCase("on")) { + lapsable = "Y"; + } else { + lapsable = "N"; + } + arylstParam.add(new DBObject(21, 1, 12, lapsable)); + arylstParam.add(new DBObject(22, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(23, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmLvMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMLVMST.proc_DeleteHrLeaveMstDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmLvMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public String getCalIdByType(String calType) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + String calId = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, calType)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVMST.proc_GetCalIdByType(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + calId = oRow.get("ID").getString(); + } + return calId; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmLeaveMasterLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveMaster.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveMaster.description"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLeaveCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmLvMstStateLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveMaster.stateCode"); + arylstHeaderList.add("hrm.HrmLeaveMaster.state"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLvMstStateLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmLeaveCodeInsertLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveMaster.leaveCode"); + arylstHeaderList.add("hrm.HrmLeaveMaster.description"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLeaveCodeInsertLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmLeaveMasterCalLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveMaster.calendarType"); + arylstHeaderList.add("hrm.HrmLeaveMaster.beginMonth"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMLVLOV.proc_GetLeaveCalendarTypeLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CALENDAR_TYPE").getString()); + oLOVBean.setDetailField3(oRow.get("BEGIN_MONTH").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmLvMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmLeaveMaster")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmLvMstDtlBean oHrmLvMstDtlBean = itrBean1.next(); + if (!oHrmLvMstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatory(oHrmLvMstDtlBean, iCount, arylstErrorList); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtLeaveDescription", "hrm.HrmLeaveMaster.leaveDescription", arylstErrorList, true); + } + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmLvMstHdrBean oHrmLvMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmLvMstHdrBean.getLeaveCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.leaveCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvMstHdrBean.getCalendar())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.calendar"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvMstHdrBean.getApplicableTo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.applicableTo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmLvMstHdrBean.getEncashable().equalsIgnoreCase("on")) { + if (!EnrgiseUtil.checkString(oHrmLvMstHdrBean.getEncashableLimit())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.encashableLimit"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvMstHdrBean.getPeriodicity())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.periodicity"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + } + if (oHrmLvMstHdrBean.getEvidenceRequired().equalsIgnoreCase("on")) + if (!EnrgiseUtil.checkString(oHrmLvMstHdrBean.getEvidenceDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.evbidenceDescription"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatory(HrmLvMstDtlBean oHrmLvMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmLvMstDtlBean.getTxtLeaveDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.leaveDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvMstDtlBean.getTxtEffectiveFrom())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.effectiveFrom"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvMstDtlBean.getTxtEffectiveTo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.effectiveTo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmLvMstDtlBean.getTxtApplicableFor())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.applicableFor"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (oHrmLvMstDtlBean.getTxtApplicableFor().equalsIgnoreCase("S")) + if (!EnrgiseUtil.checkString(oHrmLvMstDtlBean.getTxtState())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLeaveMaster.state"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmLvMstHdrBean oHrmLvMstHdrBean = (HrmLvMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmLvMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmLeaveMaster")) + getyyyymmDateFormat(arylstDetailBeanArray); + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmLvMstHdrBean oHrmLvMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_LEAVE_MST where CODE='").concat(String.valueOf(oHrmLvMstHdrBean.getLeaveCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmLvMstHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated", "M"); + } + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmLvMstDtlBean oHrmLvMstDtlBean = itrBean1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from HRM_LEAVE_ATTR_DTL where LEAVE_DESCRIPTION= ").concat(String.valueOf(oHrmLvMstDtlBean.getTxtLeaveDescription()))).concat(String.valueOf(" and LEAVE_MST_ID="))).concat(String.valueOf(sHeaderPrimaryKey)); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmLvMstDtlBean.getDetailId())) + throw new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated", "M"); + } + } + } + + private void getyyyymmDateFormat(ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmLvMstDtlBean oHrmLvMstDtlBean = itrBean1.next(); + if (!oHrmLvMstDtlBean.getStatus().equalsIgnoreCase("D")) { + String sEffectFrom = oHrmLvMstDtlBean.getTxtEffectiveFrom(); + String sEffectTo = oHrmLvMstDtlBean.getTxtEffectiveTo(); + if (sEffectFrom.length() < 6) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.fromLength", arylstParam)); + } + if (sEffectFrom.length() == 6) { + if (Integer.parseInt(sEffectFrom.substring(0, 4)) < 1900 || Integer.parseInt(sEffectFrom.substring(0, 4)) > 2100) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.year", arylstParam)); + } + if (Integer.parseInt(sEffectFrom.substring(4, 6)) < 1 || Integer.parseInt(sEffectFrom.substring(4, 6)) > 12) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.month", arylstParam)); + } + } + if (sEffectTo.length() < 6) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.toLength", arylstParam)); + } + if (sEffectTo.length() == 6) { + if (Integer.parseInt(sEffectTo.substring(0, 4)) < 1900 || Integer.parseInt(sEffectTo.substring(0, 4)) > 2100) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.year", arylstParam)); + } + if (Integer.parseInt(sEffectTo.substring(4, 6)) < 1 || Integer.parseInt(sEffectTo.substring(4, 6)) > 12) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.month", arylstParam)); + } + } + if (sEffectTo.length() == 6 && sEffectFrom.length() == 6) + if (Integer.parseInt(sEffectTo) < Integer.parseInt(sEffectFrom)) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.dateValidation.new", arylstParam)); + } + } + } + reportError(arylstErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmMediclaimMasterBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmMediclaimMasterBO.java new file mode 100644 index 0000000..cd5f4f8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmMediclaimMasterBO.java @@ -0,0 +1,547 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmMediclaimMasterDtlBean; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; + +public class HrmMediclaimMasterBO extends HrmBaseBO { + public HrmMediclaimMasterBO() {} + + public HrmMediclaimMasterBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmMediclaimMasterHeaderMetaInfo(HrmMediclaimMasterQVO oHrmMediclaimMasterQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String pKey = oHrmMediclaimMasterQVO.getHeaderPrimaryKey(); + String cadreId = oHrmMediclaimMasterQVO.getTxtCadreId(); + String classID = oHrmMediclaimMasterQVO.getTxtClassId(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmMediclaimMasterQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmMediclaimMasterQVO.getTxtClassId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmMediclaimMasterQVO.getTxtCadreId())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMMEDIMST.prochrmedimsthdrcount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmMediclaimMasterHeaderInfo(HrmMediclaimMasterQVO oHrmMediclaimMasterQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String pKey = oHrmMediclaimMasterQVO.getHeaderPrimaryKey(); + String cadreId = oHrmMediclaimMasterQVO.getTxtCadreId(); + String classID = oHrmMediclaimMasterQVO.getTxtClassId(); + ArrayList oHeaderList = null; + if (oHrmMediclaimMasterQVO == null) + oHrmMediclaimMasterQVO = new HrmMediclaimMasterQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmMediclaimMasterQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmMediclaimMasterQVO.getTxtCadreId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmMediclaimMasterQVO.getTxtClassId())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMMEDIMST.procgethrmedimsthdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + boolean all; + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmMediclaimMasterHdrBean oHrmMediclaimMasterHdrBean = new HrmMediclaimMasterHdrBean(); + oHrmMediclaimMasterHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmMediclaimMasterHdrBean.setClaimCode(oRow.get("CLAIM_CODE").getString()); + oHrmMediclaimMasterHdrBean.setTxtClassId(oRow.get("CLASS_ID").getString()); + oHrmMediclaimMasterHdrBean.setTxtCadreId(oRow.get("CADRE_ID").getString()); + oHrmMediclaimMasterHdrBean.setTxtClass(oRow.get("CLASS").getString()); + oHrmMediclaimMasterHdrBean.setCadre(oRow.get("CADRE").getString()); + oHrmMediclaimMasterHdrBean.setAllEmployeeApplicable(oRow.get("ALL_FLAG").getString()); + String allFlag = oRow.get("ALL_FLAG").getString(); + allFlag = allFlag.trim(); + if (allFlag.equalsIgnoreCase("on")) { + all = true; + } else { + all = false; + } + oHrmMediclaimMasterHdrBean.setAllEmp(all); + oHrmMediclaimMasterHdrBean.setDependents(oRow.get("DEPENDENTS").getString()); + oHeaderList.add(oHrmMediclaimMasterHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmMediclaimMasterDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMMEDIMST.prochrmedimstdtlcount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmMediclaimMasterDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmMediMstDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMMEDIMST.procgethrmedimstdtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmMediMstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmMediclaimMasterDtlBean oHrmMediclaimMasterDtlBean = new HrmMediclaimMasterDtlBean(); + oHrmMediclaimMasterDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmMediclaimMasterDtlBean.setCoverName(oRow.get("COVER_NAME").getString()); + oHrmMediclaimMasterDtlBean.setSumInsured(oRow.get("SUM_INSURED").getString()); + oHrmMediclaimMasterDtlBean.setSalaryUnit(oRow.get("SAL_LIMIT").getString()); + oHrmMediclaimMasterDtlBean.setPremium(oRow.get("PREMIUM").getString()); + oHrmMediclaimMasterDtlBean.setAgeFrom(oRow.get("AGE_FROM").getString()); + oHrmMediclaimMasterDtlBean.setAgeTo(oRow.get("AGE_TO").getString()); + oHrmMediclaimMasterDtlBean.setAicContribution(oRow.get("AIC_CONTR").getString()); + oHrmMediclaimMasterDtlBean.setDocumentRequired(oRow.get("DOC_REQ").getString()); + oHrmMediMstDetail.add(oHrmMediclaimMasterDtlBean); + } + return oHrmMediMstDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_MDCLAIM_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmMediclaimMasterHdrBean oHrmMediclaimMasterHdrBean = (HrmMediclaimMasterHdrBean)oBaseHeaderBean; + String taxReb = null; + String priTaxReb = null; + String settAuto = null; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, oHrmMediclaimMasterHdrBean.getClaimCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmMediclaimMasterHdrBean.getTxtClassId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmMediclaimMasterHdrBean.getTxtCadreId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmMediclaimMasterHdrBean.getAllEmployeeApplicable())); + arylstParam.add(new DBObject(6, 1, 12, oHrmMediclaimMasterHdrBean.getDependents())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, null)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMMEDIMST.procupserthrmedimsthdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmMediclaimMasterHdrBean.getClaimCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmMediclaimMasterHdrBean.getTxtClassId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmMediclaimMasterHdrBean.getTxtCadreId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmMediclaimMasterHdrBean.getAllEmployeeApplicable())); + arylstParam.add(new DBObject(6, 1, 12, oHrmMediclaimMasterHdrBean.getDependents())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, oHrmMediclaimMasterHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMMEDIMST.procupserthrmedimsthdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmMediclaimMasterHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "HRMMEDIMST.procdeletehrmmedimsthdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmMediclaimMaster")) + saveHrmMediMstDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmMediMstDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + String applToEmp = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmMediclaimMasterDtlBean oHrmMediclaimMasterDtlBean = oIt.next(); + if (oHrmMediclaimMasterDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMMEDIMST.procupserthrmedimstdtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, "200")); + arylstParam.add(new DBObject(5, 1, 12, oHrmMediclaimMasterDtlBean.getCoverName())); + arylstParam.add(new DBObject(6, 1, 12, oHrmMediclaimMasterDtlBean.getSumInsured())); + arylstParam.add(new DBObject(7, 1, 12, oHrmMediclaimMasterDtlBean.getSalaryUnit())); + arylstParam.add(new DBObject(8, 1, 12, oHrmMediclaimMasterDtlBean.getPremium())); + arylstParam.add(new DBObject(9, 1, 12, oHrmMediclaimMasterDtlBean.getAgeFrom())); + arylstParam.add(new DBObject(10, 1, 12, oHrmMediclaimMasterDtlBean.getAgeTo())); + arylstParam.add(new DBObject(11, 1, 12, oHrmMediclaimMasterDtlBean.getAicContribution())); + arylstParam.add(new DBObject(12, 1, 12, oHrmMediclaimMasterDtlBean.getDocumentRequired())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmMediclaimMasterDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMMEDIMST.procupserthrmedimstdtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmMediclaimMasterDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, "200")); + arylstParam.add(new DBObject(5, 1, 12, oHrmMediclaimMasterDtlBean.getCoverName())); + arylstParam.add(new DBObject(6, 1, 12, oHrmMediclaimMasterDtlBean.getSumInsured())); + arylstParam.add(new DBObject(7, 1, 12, oHrmMediclaimMasterDtlBean.getSalaryUnit())); + arylstParam.add(new DBObject(8, 1, 12, oHrmMediclaimMasterDtlBean.getPremium())); + arylstParam.add(new DBObject(9, 1, 12, oHrmMediclaimMasterDtlBean.getAgeFrom())); + arylstParam.add(new DBObject(10, 1, 12, oHrmMediclaimMasterDtlBean.getAgeTo())); + arylstParam.add(new DBObject(11, 1, 12, oHrmMediclaimMasterDtlBean.getAicContribution())); + arylstParam.add(new DBObject(12, 1, 12, oHrmMediclaimMasterDtlBean.getDocumentRequired())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmMediclaimMasterDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMMEDIMST.procdeletemedimstdtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmMediclaimMasterDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmMediclaimMasterHdrBean oHrmMediclaimMasterHdrBean = (HrmMediclaimMasterHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmMediclaimMasterHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmMediclaimMaster")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmMediclaimMasterDtlBean oHrmMediclaimMasterDtlBean = oIt1.next(); + if (!oHrmMediclaimMasterDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmMediclaimMasterDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmMediclaimMasterHdrBean oHrmMediclaimMasterHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterHdrBean.getClaimCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.claimCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterHdrBean.getTxtClass())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.txtClass"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterHdrBean.getCadre())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.cadre"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterHdrBean.getDependents())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.dependents"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmMediclaimMasterDtlBean oHrmMediclaimMasterDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getCoverName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.coverName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getSumInsured())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.sumInsured"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getSumInsured())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.sumInsured"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getSalaryUnit())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.salaryUnit"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getPremium())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.premium"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getAgeFrom())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.ageFrom"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getAgeTo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.ageTo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getAicContribution())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.aicContribution"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmMediclaimMasterDtlBean.getDocumentRequired())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmMediclaimMaster.documentRequired"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public LovVO getHrmMediClassLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("txtClassId"); + arylstHeaderList.add("hrm.HrmMediclaimMaster.txtClass"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMADVMST.proc_getClassLovData(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmMediCadreLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("txtClassId"); + arylstHeaderList.add("hrm.HrmMediclaimMaster.txtClass"); + arylstHeaderList.add("hrm.HrmMediclaimMaster.cadre"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMADVMST.proc_getCadreLovData(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(oRow.get("CODE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmMisReportBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmMisReportBO.java new file mode 100644 index 0000000..d20fe3c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmMisReportBO.java @@ -0,0 +1,296 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmMisReportDtlBean; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.vo.HrmMisreportQVO; + +public class HrmMisReportBO extends HrmBaseBO { + public HrmMisReportBO() {} + + public HrmMisReportBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getMisDataCount(HrmMisreportQVO oHrmMisreportQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmMisreportQVO.getLocationCode())); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMMISREP.procGetMisDataCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getMisDataInfo(HrmMisreportQVO oHrmMisreportQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList arylstMisReport = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmMisreportQVO.getLocationCode())); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMMISREP.procGetMisDataInfo(?,?,?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstMisReport = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmMisReportDtlBean oHrmMisReportDtlBean = new HrmMisReportDtlBean(); + oHrmMisReportDtlBean.setTxtPositionId(oRow.get("desigId").getString()); + oHrmMisReportDtlBean.setTxtPosition(oRow.get("Desig").getString()); + oHrmMisReportDtlBean.setTxtDesiredStrength(oRow.get("Strength").getString()); + arylstMisReport.add(oHrmMisReportDtlBean); + } + return arylstMisReport; + } + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmMisReport")) + saveHrmMisDetail(oBaseHeaderBean, oDetailBeanArray); + } + + public String saveHrmMisDetail(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean1 = null; + DBUtilitiesBean oBean2 = null; + DBUtilitiesBean oBean3 = null; + HrmMisReportHdrBean oHrmMisReportHdrBean = (HrmMisReportHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmMisReportDtlBean oHrmMisReportDtlBean = itrBean.next(); + if (oHrmMisReportDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMMISREP.proc_insertdata(?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmMisReportHdrBean.getLocationCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmMisReportDtlBean.getTxtPositionId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmMisReportDtlBean.getTxtDesiredStrength())); + oBean1.addToBatch(arylstParameters); + continue; + } + if (oHrmMisReportDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean2 = new DBUtilitiesBean(); + oBean2.createBatch("HRMMISREP.proc_insertdata(?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmMisReportHdrBean.getLocationCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmMisReportDtlBean.getTxtPositionId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmMisReportDtlBean.getTxtDesiredStrength())); + oBean2.addToBatch(arylstParameters); + continue; + } + if (oHrmMisReportDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean3 = new DBUtilitiesBean(); + oBean3.createBatch("HRMMISREP.procDelHrmMisData(?,?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmMisReportHdrBean.getLocationCode())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmMisReportDtlBean.getTxtPositionId())); + oBean3.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean1.executeBatch(); + if (bUpdate) + oBean2.executeBatch(); + if (bDelete) + oBean3.executeBatch(); + return oHrmMisReportHdrBean.getLocationCode(); + } + + public void initializeBOImpl() { + this.headerTable = "hrm_temp_mis_tab"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return new String(); + } + + public LovVO getMisPositionLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmMisReport.Position"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sLocation = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + sLocation = oLovQueryVO.getProperty("location"); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sLocation)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMMISREP.procGetPosition(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("POSITION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String InsertData(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HrmMisReportHdrBean oHrmMisReportHdrBean = (HrmMisReportHdrBean)oBaseHeaderBean; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmMisReportHdrBean.getLocationCode())); + arylstParam.add(new DBObject(2, 1, -10, arylstDetailBeanArray)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + oBean.callProc(arylstParam, "HRMMISREP.proc_insertdata(?,?,?,?,?)"); + return oHrmMisReportHdrBean.getLocationCode(); + } + + public LovVO getMisYearMonthLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmMisReport.yearmonth"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + ArrayList oList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sLocation = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMMISREP.procGetYearMonth(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("YEARMONTH").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String getYearMonth() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String yearmonth = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, 12)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMMISREP.procGetCurrentYearMonth(?)"); + yearmonth = (String)((DBObject)arylstOutArray.get(0)).getObject(); + return yearmonth; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmMyWorkflowBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmMyWorkflowBO.java new file mode 100644 index 0000000..f36ffeb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmMyWorkflowBO.java @@ -0,0 +1,241 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmMyWorkflowDtlBean; +import wenrgise.hrms.bean.HrmMyWorkflowHdrBean; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; + +public class HrmMyWorkflowBO extends HrmBaseBO { + public HrmMyWorkflowBO() {} + + public HrmMyWorkflowBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_CLAIM_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + return null; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public RecordMetaInfo getHrmMyWorkflowHdrMetaInfo(HrmMyWorkflowQVO oHrmMyWorkflowQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String empId = oHrmMyWorkflowQVO.getEmpId(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmMyWorkflowQVO.getId())); + arylstParam.add(new DBObject(2, 1, 12, oHrmMyWorkflowQVO.getEmpId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmMyWorkflowQVO.getTxtStatus())); + arylstParam.add(new DBObject(4, 1, 12, oHrmMyWorkflowQVO.getWorkflowType())); + arylstParam.add(new DBObject(5, 2, -5)); + arylstParam.add(new DBObject(6, 2, 93)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "WORKFLOW.proc_myWorkListcount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmMyWorkflowHdrInfo(HrmMyWorkflowQVO oHrmMyWorkflowQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String empId = oHrmMyWorkflowQVO.getEmpId(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmMyWorkflowQVO == null) + oHrmMyWorkflowQVO = new HrmMyWorkflowQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmMyWorkflowQVO.getId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmMyWorkflowQVO.getEmpId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmMyWorkflowQVO.getTxtStatus())); + arylstParam.add(new DBObject(6, 1, 12, oHrmMyWorkflowQVO.getWorkflowType())); + arylstParam.add(new DBObject(7, 2, -10)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(arylstParam, "WORKFLOW.proc_myWorkListinfo(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmMyWorkflowHdrBean oHrmMyWorkflowHeader = new HrmMyWorkflowHdrBean(); + oHrmMyWorkflowHeader.setId(oRow.get("id").getString()); + oHrmMyWorkflowHeader.setRequestType(oRow.get("requestType").getString()); + oHrmMyWorkflowHeader.setTxtStatus(oRow.get("status").getString()); + oHrmMyWorkflowHeader.setWorkflowType(oRow.get("workFlowType").getString()); + oHeaderList.add(oHrmMyWorkflowHeader); + } + return oHeaderList; + } + + public LovVO getWorkIdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmMyWorkflow.id"); + arylstHeaderList.add("hrm.HrmMyWorkflow.requestType"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "WORKFLOW.procGetHrmMyWorkflowIdLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("ID").getString()); + oLOVBean.setDetailField3(oRow.get("doc_type_desc").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public RecordMetaInfo getHrmMyWorkflowDetailMetaInfo(BaseQueryVO oBaseQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HrmMyWorkflowQVO oHrmMyWorkflowQVO = (HrmMyWorkflowQVO)oBaseQueryVO; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmMyWorkflowQVO.getEmpId())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmMyWorkflowQVO.getId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmMyWorkflowQVO.getTxtStatus())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmMyWorkflowQVO.getWorkflowType())); + arylstParameters.add(new DBObject(5, 2, -5)); + arylstParameters.add(new DBObject(6, 2, 93)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "WORKFLOW.proc_HrmWorkFlowDtlCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmMyWorkflowDetailInfo(BaseQueryVO oBaseQueryVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + HrmMyWorkflowQVO oHrmMyWorkflowQVO = (HrmMyWorkflowQVO)oBaseQueryVO; + BaseDetailVO oBaseDetailVO = null; + ArrayList arrHrmMyWorkflowDtl = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmMyWorkflowQVO.getEmpId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmMyWorkflowQVO.getId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmMyWorkflowQVO.getTxtStatus())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmMyWorkflowQVO.getWorkflowType())); + arylstParameters.add(new DBObject(7, 2, -10)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "WORKFLOW.proc_HrmWorkFlowDtlInfo(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arrHrmMyWorkflowDtl = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmMyWorkflowDtlBean oWorkflowBean = new HrmMyWorkflowDtlBean(); + oWorkflowBean.setDetailId(oRow.get("ID").getString()); + oWorkflowBean.setDocDtlId(oRow.get("doc_dtl_id").getString()); + oWorkflowBean.setRequestId(oRow.get("id").getString()); + oWorkflowBean.setRequestor(oRow.get("delegator_emp_id").getString()); + oWorkflowBean.setRequestorName(oRow.get("delegator_emp_name").getString()); + oWorkflowBean.setApprover(oRow.get("delegated_emp_id").getString()); + oWorkflowBean.setApproverName(oRow.get("delegated_emp_name").getString()); + oWorkflowBean.setLevel(oRow.get("level_no").getString()); + arrHrmMyWorkflowDtl.add(oWorkflowBean); + } + return arrHrmMyWorkflowDtl; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCalMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCalMstBO.java new file mode 100644 index 0000000..6e60e8e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCalMstBO.java @@ -0,0 +1,649 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgCalMstDtlBean; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; + +public class HrmOrgCalMstBO extends HrmBaseBO { + public HrmOrgCalMstBO() {} + + public HrmOrgCalMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmCalHdrMetaInfo(HrmOrgCalMstQVO oHrmOrgCalMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmOrgCalMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgCalMstQVO.getCalendarType())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_HrCalCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmCalHeaderInfo(HrmOrgCalMstQVO oHrmOrgCalMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgCalMstQVO == null) + oHrmOrgCalMstQVO = new HrmOrgCalMstQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgCalMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgCalMstQVO.getCalendarType())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_GetHrCalHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgCalMstHdrBean oCalHeader = new HrmOrgCalMstHdrBean(); + oCalHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oCalHeader.setCalendarType(oRow.get("CALENDAR_TYPE").getString()); + oCalHeader.setStartMonth(oRow.get("BEGIN_MONTH").getString()); + oCalHeader.setDuration(oRow.get("DURATION_MONTH").getString()); + arylstHeaderList.add(oCalHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmCalDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_HrCalDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmCalDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmCalDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_GetHrCalDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmCalDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgCalMstDtlBean oCalDetailBean = new HrmOrgCalMstDtlBean(); + oCalDetailBean.setDetailId(oRow.get("ID").getString()); + oCalDetailBean.setTxtSlabNumber(oRow.get("SLAB_NO").getString()); + oCalDetailBean.setTxtSlabBeginMonth(oRow.get("SLAB_BEGIN_MONTH").getString()); + oCalDetailBean.setTxtDuration(oRow.get("SLAB_DURATION_MONTH").getString()); + arylstHrmCalDetail.add(oCalDetailBean); + } + return arylstHrmCalDetail; + } + + public ArrayList getHrmCalHeaderInfoById(String sId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_GetHrCalHdrInfoById(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgCalMstHdrBean oCalHeader = new HrmOrgCalMstHdrBean(); + oCalHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oCalHeader.setCalendarType(oRow.get("CALENDAR_TYPE").getString()); + oCalHeader.setStartMonth(oRow.get("BEGIN_MONTH").getString()); + oCalHeader.setDuration(oRow.get("DURATION_MONTH").getString()); + arylstHeaderList.add(oCalHeader); + } + return arylstHeaderList; + } + + public ArrayList getHrmCalHeaderInfoBySiteId(String sSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSiteId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_GetHrCalHdrInfoBySiteId(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgCalMstHdrBean oCalHeader = new HrmOrgCalMstHdrBean(); + oCalHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oCalHeader.setCalendarType(oRow.get("CALENDAR_TYPE").getString()); + oCalHeader.setStartMonth(oRow.get("BEGIN_MONTH").getString()); + oCalHeader.setDuration(oRow.get("DURATION_MONTH").getString()); + arylstHeaderList.add(oCalHeader); + } + return arylstHeaderList; + } + + public String getStartDate(String sCalId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + DateUtility d = new DateUtility(); + ArrayList arylstParam = new ArrayList(); + String startDate = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sCalId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_GetHrCalHdrInfoById(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + String beginMonth = oRow.get("BEGIN_MONTH").getString(); + String durationMonth = oRow.get("DURATION_MONTH").getString(); + int beMon = Integer.parseInt(beginMonth); + String monOfDate = sDate.substring(3, 5); + String yearOfDate = sDate.substring(6, 10); + int monDate = Integer.parseInt(monOfDate); + int yrDate = Integer.parseInt(yearOfDate); + if (beMon <= monDate) { + if (beMon < 10) + beginMonth = String.valueOf("0").concat(String.valueOf(beginMonth)); + startDate = String.valueOf(String.valueOf(String.valueOf("01/").concat(String.valueOf(beginMonth))).concat(String.valueOf("/"))).concat(String.valueOf(yearOfDate)); + continue; + } + if (beMon > monDate) { + if (beMon < 10) + beginMonth = String.valueOf("0").concat(String.valueOf(beginMonth)); + startDate = String.valueOf(String.valueOf(String.valueOf("01/").concat(String.valueOf(beginMonth))).concat(String.valueOf("/"))).concat(String.valueOf(yrDate - 1)); + } + } + return startDate; + } + + public LovVO getHrmCalendarTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ID"); + arylstHeaderNames.add("hrm.HrmCalendarMaster.calendarType"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGSETUPLOV.proc_GetCalendarTypeLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CALENDAR_TYPE").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgCalMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgCalMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean = itrBean1.next(); + if (!oHrmOrgCalMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgCalMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean = (HrmOrgCalMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmOrgCalMstHdrBean)oBaseHeaderBean); + checkZeroDuration((HrmOrgCalMstHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmOrgCalMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean = itrBean1.next(); + if (!oHrmOrgCalMstDtlBean.getStatus().equalsIgnoreCase("D")) { + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtSlabNumber", "hrm.HrmCalendarMaster.txtSlabNumber", arylstErrorList, true); + checkDuration((HrmOrgCalMstHdrBean)oBaseHeaderBean, arylstDetailBeanArray); + compareDuration((HrmOrgCalMstHdrBean)oBaseHeaderBean, arylstDetailBeanArray); + checkStartMonth((HrmOrgCalMstHdrBean)oBaseHeaderBean, arylstDetailBeanArray); + } + } + rowCount++; + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_CALENDAR_MST where calendar_type='").concat(String.valueOf(oHrmOrgCalMstHdrBean.getCalendarType()))).concat(String.valueOf("'")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgCalMstHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + private void checkZeroDuration(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + if (Integer.parseInt(oHrmOrgCalMstHdrBean.getDuration()) == 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("hrm.HrmCalendarMaster.zeroDuration", arylstParam)); + } + reportError(arylstList1); + } + + private void checkMandatoryHeader(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgCalMstHdrBean.getCalendarType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCalendarMaster.calendarType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgCalMstHdrBean.getStartMonth())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCalendarMaster.startMonth"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgCalMstHdrBean.getDuration())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCalendarMaster.duration"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatory(HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgCalMstDtlBean.getTxtDuration())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCalendarMaster.txtDuration"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgCalMstDtlBean.getTxtSlabBeginMonth())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCalendarMaster.txtSlabBeginMonth"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void compareDuration(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator itrBean = arylstDetailBeanArray.iterator(); + int totalDuration = 0; + while (itrBean.hasNext()) { + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean = arylstDetailBeanArray.get(count); + int duration = Integer.parseInt(oHrmOrgCalMstDtlBean.getTxtDuration()); + totalDuration += duration; + count++; + itrBean.next(); + } + if (totalDuration != Integer.parseInt(oHrmOrgCalMstHdrBean.getDuration())) + if (arylstList.isEmpty()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmCalendarMaster.durationValidation", arylstParam)); + } + reportError(arylstList); + } + + private void checkDuration(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator itrBean = arylstDetailBeanArray.iterator(); + int totalDuration = 0; + while (itrBean.hasNext()) { + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean = arylstDetailBeanArray.get(count); + int duration = Integer.parseInt(oHrmOrgCalMstDtlBean.getTxtDuration()); + if (duration == 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(count)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmCalendarMaster.zeroDuration", arylstParam)); + } + count++; + itrBean.next(); + } + reportError(arylstList); + } + + private void checkStartMonth(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator itrBean = arylstDetailBeanArray.iterator(); + int newStartMonth = 0; + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean2 = arylstDetailBeanArray.get(0); + if (EnrgiseUtil.checkString(oHrmOrgCalMstDtlBean2.getTxtSlabBeginMonth())) + if (Integer.parseInt(oHrmOrgCalMstDtlBean2.getTxtSlabBeginMonth()) != Integer.parseInt(oHrmOrgCalMstHdrBean.getStartMonth())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(1)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmCalendarMaster.slabBeginMonthValidation1", arylstParam)); + } + while (itrBean.hasNext()) { + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean = arylstDetailBeanArray.get(count); + int duration = Integer.parseInt(oHrmOrgCalMstDtlBean.getTxtDuration()); + int startMonth = Integer.parseInt(oHrmOrgCalMstDtlBean.getTxtSlabBeginMonth()); + newStartMonth = startMonth + duration; + if (newStartMonth > 12) + newStartMonth -= 12; + if (count < arylstDetailBeanArray.size() - 1) { + count++; + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean1 = arylstDetailBeanArray.get(count); + if (newStartMonth != Integer.parseInt(oHrmOrgCalMstDtlBean1.getTxtSlabBeginMonth())) + if (arylstList.isEmpty()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(count)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmCalendarMaster.slabBeginMonthValidation", arylstParam)); + } + } else { + reportError(arylstList); + } + itrBean.next(); + } + reportError(arylstList); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_CALENDAR_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean = (HrmOrgCalMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgCalMstHdrBean.getCalendarType())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgCalMstHdrBean.getStartMonth())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgCalMstHdrBean.getDuration())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(8, 1, 12, null)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_UpsertHrCalendarHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgCalMstHdrBean.getCalendarType())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgCalMstHdrBean.getStartMonth())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgCalMstHdrBean.getDuration())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmOrgCalMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGCALENDARMST.proc_UpsertHrCalendarHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgCalMst")) + saveHrmCalendarDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmCalendarDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgCalMstDtlBean oHrmOrgCalMstDtlBean = itrBean.next(); + System.out.println(oHrmOrgCalMstDtlBean.getStatus()); + if (oHrmOrgCalMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGCALENDARMST.proc_UpsertHrCalendarDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, "200")); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgCalMstDtlBean.getTxtSlabNumber())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgCalMstDtlBean.getTxtSlabBeginMonth())); + arylstParam.add(new DBObject(7, 1, 12, oHrmOrgCalMstDtlBean.getTxtDuration())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmOrgCalMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGCALENDARMST.proc_UpsertHrCalendarDtl(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgCalMstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, "200")); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgCalMstDtlBean.getTxtSlabNumber())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgCalMstDtlBean.getTxtSlabBeginMonth())); + arylstParam.add(new DBObject(7, 1, 12, oHrmOrgCalMstDtlBean.getTxtDuration())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmOrgCalMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGCALENDARMST.proc_DeleteCalMstDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmOrgCalMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgClassDtlBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgClassDtlBO.java new file mode 100644 index 0000000..0c84c88 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgClassDtlBO.java @@ -0,0 +1,653 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgClassDtlBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; + +public class HrmOrgClassDtlBO extends HrmBaseBO { + public HrmOrgClassDtlBO() {} + + public HrmOrgClassDtlBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmClassHdrMetaInfo(HrmOrgClassDtlQVO oHrmOrgClassDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgClassDtlQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgClassDtlQVO.getCode())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCLASSDTL.proc_ClassHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmClassHeaderInfo(HrmOrgClassDtlQVO oHrmOrgClassDtlQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgClassDtlQVO == null) + oHrmOrgClassDtlQVO = new HrmOrgClassDtlQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgClassDtlQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgClassDtlQVO.getCode())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCLASSDTL.proc_GetClassHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgClassHdrBean oClassHeader = new HrmOrgClassHdrBean(); + oClassHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oClassHeader.setCode(oRow.get("CODE").getString()); + oClassHeader.setClassificationType(oRow.get("NAME").getString()); + arylstHeaderList.add(oClassHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmClassDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCLASSDTL.proc_ClassDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmClassDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmClassDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCLASSDTL.proc_GetClassDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmClassDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgClassDtlBean oClassDetailBean = new HrmOrgClassDtlBean(); + oClassDetailBean.setDetailId(oRow.get("ID").getString()); + oClassDetailBean.setTxtClassificationCode(oRow.get("CODE").getString()); + oClassDetailBean.setTxtDescription(oRow.get("NAME").getString()); + oClassDetailBean.setTxtHierarchy(oRow.get("HIERARCHY_LEVEL").getString()); + oClassDetailBean.setTxtTypeCode(oRow.get("PARENTCODE").getString()); + oClassDetailBean.setTxtParentCode(oRow.get("PARENTNAME").getString()); + arylstHrmClassDetail.add(oClassDetailBean); + } + return arylstHrmClassDetail; + } + + public ArrayList getHrClassHeaderInfoByHdrId(String sId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCLASSDTL.proc_GetClassHdrById(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgClassHdrBean oClassHeader = new HrmOrgClassHdrBean(); + oClassHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oClassHeader.setCode(oRow.get("CODE").getString()); + oClassHeader.setClassificationType(oRow.get("NAME").getString()); + arylstHeaderList.add(oClassHeader); + } + return arylstHeaderList; + } + + public ArrayList getHrClassDetailByDtlId(String sId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrClassDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCLASSDTL.proc_GetClassDtlById(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrClassDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgClassDtlBean oClassDetailBean = new HrmOrgClassDtlBean(); + oClassDetailBean.setDetailId(oRow.get("ID").getString()); + oClassDetailBean.setTxtClassificationCode(oRow.get("CODE").getString()); + oClassDetailBean.setTxtDescription(oRow.get("NAME").getString()); + oClassDetailBean.setTxtHierarchy(oRow.get("HIERARCHY_LEVEL").getString()); + oClassDetailBean.setTxtParentCode(oRow.get("PARENT_ID").getString()); + arylstHrClassDetail.add(oClassDetailBean); + } + return arylstHrClassDetail; + } + + public ArrayList getHrClassDetailByHdrIdDtlCd(String sId, String sCode) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrClassDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 1, 12, sCode)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCLASSDTL.proc_GetClassDtlByCd(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrClassDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgClassDtlBean oClassDetailBean = new HrmOrgClassDtlBean(); + oClassDetailBean.setDetailId(oRow.get("ID").getString()); + oClassDetailBean.setTxtClassificationCode(oRow.get("CODE").getString()); + oClassDetailBean.setTxtDescription(oRow.get("NAME").getString()); + oClassDetailBean.setTxtHierarchy(oRow.get("HIERARCHY_LEVEL").getString()); + oClassDetailBean.setTxtParentCode(oRow.get("PARENT_ID").getString()); + arylstHrClassDetail.add(oClassDetailBean); + } + return arylstHrClassDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_CALENDAR_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgClassHdrBean oHrmOrgClassHdrBean = (HrmOrgClassHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "i")); + oParameters.add(new DBObject(2, 1, 12, oHrmOrgClassHdrBean.getCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmOrgClassHdrBean.getClassificationType())); + oParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(6, 1, 12, null)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMORGCLASSDTL.proc_UpsertHrmOrngClassHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "u")); + oParameters.add(new DBObject(2, 1, 12, oHrmOrgClassHdrBean.getCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmOrgClassHdrBean.getClassificationType())); + oParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(6, 1, 12, oHrmOrgClassHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMORGCLASSDTL.proc_UpsertHrmOrngClassHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgClassDtl")) + saveHrmOrgClassDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmOrgClassDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmOrgClassDtlBean oHrmOrgClassDtlBean = oIt.next(); + if (oHrmOrgClassDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGCLASSDTL.proc_UpsertHrClassDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "I")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmOrgClassDtlBean.getTxtClassificationCode())); + oParameters.add(new DBObject(5, 1, 12, oHrmOrgClassDtlBean.getTxtDescription())); + oParameters.add(new DBObject(6, 1, 12, oHrmOrgClassDtlBean.getTxtHierarchy())); + oParameters.add(new DBObject(7, 1, 12, oHrmOrgClassDtlBean.getTxtParentCodeId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmOrgClassDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGCLASSDTL.proc_UpsertHrClassDtl(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmOrgClassDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmOrgClassDtlBean.getTxtClassificationCode())); + oParameters.add(new DBObject(5, 1, 12, oHrmOrgClassDtlBean.getTxtDescription())); + oParameters.add(new DBObject(6, 1, 12, oHrmOrgClassDtlBean.getTxtHierarchy())); + oParameters.add(new DBObject(7, 1, 12, oHrmOrgClassDtlBean.getTxtParentCodeId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmOrgClassDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGCLASSDTL.proc_HrOrgClassDelete(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmOrgClassDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public LovVO getHrmClassDtlLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ID"); + arylstHeaderNames.add("hrm.HrmClassificationDtls.code"); + arylstHeaderNames.add("hrm.HrmTrainingCourseMst.name"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String sHierarchy = null; + String sCode = null; + if (oLovQueryVO.getProperty("txtHierarchy") != null) { + sHierarchy = oLovQueryVO.getProperty("txtHierarchy"); + System.out.println(sHierarchy); + } + if (oLovQueryVO.getProperty("code") != null) { + sCode = oLovQueryVO.getProperty("code"); + System.out.println(sCode); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sHierarchy)); + arylstParameters.add(new DBObject(2, 1, 12, sCode)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetClassDtlLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmClassTypeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ID"); + arylstHeaderNames.add("hrm.HrmClassificationDtls.code"); + arylstHeaderNames.add("hrm.HrmClassificationDtls.classificationType"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String sSearchField1 = null; + String sSearchField2 = null; + if (oLovQueryVO.getSearchField1() != null) + sSearchField1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sSearchField2 = oLovQueryVO.getSearchField2(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sSearchField1)); + arylstParameters.add(new DBObject(2, 1, 12, sSearchField2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetClassDtlTypeCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmClassDetailLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ID"); + arylstHeaderNames.add("hrm.HrmClassificationDtls.name"); + arylstHeaderNames.add("hrm.HrmClassificationDtls.code"); + arylstHeaderNames.add("hrm.HrmClassificationDtls.txtHierarchy"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + HrmOrgClassDtlBean oRow = null; + ArrayList arylstDetailList = getHrmClassDetailInfo(oLovQueryVO.getProperty("eligibilityClass"), 1L, 999999L); + Iterator iterDetailList = arylstDetailList.iterator(); + ArrayList arylstBeanList = null; + while (iterDetailList.hasNext()) { + if (count == 0) + arylstBeanList = new ArrayList(); + count++; + oRow = iterDetailList.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.getDetailId()); + oLOVBean.setDetailField2(oRow.getTxtDescription()); + oLOVBean.setDetailField3(oRow.getTxtClassificationCode()); + oLOVBean.setDetailField4(oRow.getTxtHierarchy()); + arylstBeanList.add(oLOVBean); + } + System.out.println(arylstBeanList); + oLovVO.setDetailList(arylstBeanList); + return oLovVO; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgClassHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgClassDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgClassDtlBean oHrmOrgClassDtlBean = itrBean1.next(); + if (!oHrmOrgClassDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgClassDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgClassDtlBean oHrmOrgClassDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgClassDtlBean.getTxtClassificationCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClassificationDtls.txtClassificationCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgClassDtlBean.getTxtDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClassificationDtls.txtDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgClassHdrBean oHrmOrgClassHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgClassHdrBean.getCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClassificationDtls.code"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgClassHdrBean.getClassificationType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClassificationDtls.classificationType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgClassHdrBean oHrmOrgClassHdrBean = (HrmOrgClassHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmOrgClassHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmOrgClassDtl")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmOrgClassDtlBean oHrmOrgClassDtlBean = oIt1.next(); + if (!oHrmOrgClassDtlBean.getStatus().equalsIgnoreCase("D")) { + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtClassificationCode", "hrm.HrmClassificationDtls.txtClassificationCode", arylstErrorList, true); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtDescription", "hrm.HrmClassificationDtls.txtDescription", arylstErrorList, true); + checkUniqueClassDtl(oBaseHeaderBean.getHeaderPrimaryKey(), arylstDetailBeanArray); + } + } + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmOrgClassHdrBean oHrmOrgClassHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_CLASS_MST where CODE='").concat(String.valueOf(oHrmOrgClassHdrBean.getCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgClassHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + private void checkUniqueClassDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + int count = 0; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmOrgClassDtlBean oHrmOrgClassDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select ID from HRM_CLASS_DTL where CODE='").concat(String.valueOf(oHrmOrgClassDtlBean.getTxtClassificationCode()))).concat(String.valueOf("'"))).concat(String.valueOf(" and CLS_MST_ID='"))).concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgClassDtlBean.getDetailId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmClassificationDtls.classificationType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", oParams, "E")); + } + } + } + reportError(oErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCntryMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCntryMstBO.java new file mode 100644 index 0000000..cc81546 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgCntryMstBO.java @@ -0,0 +1,446 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgCntryMstDtlBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; + +public class HrmOrgCntryMstBO extends HrmBaseBO { + public HrmOrgCntryMstBO() {} + + public HrmOrgCntryMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmCountryHdrMetaInfo(HrmOrgCntryMstQVO oHrmOrgCntryMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgCntryMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgCntryMstQVO.getCountryCode())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCOUNTRYMST.proc_HrCountryHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmCountryHeaderInfo(HrmOrgCntryMstQVO oHrmOrgCntryMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgCntryMstQVO == null) + oHrmOrgCntryMstQVO = new HrmOrgCntryMstQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgCntryMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgCntryMstQVO.getCountryCode())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCOUNTRYMST.proc_HrCountryHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgCntryMstHdrBean oCountryHeader = new HrmOrgCntryMstHdrBean(); + oCountryHeader.setCountryCode(oRow.get("COUNTRY_CODE").getString()); + oCountryHeader.setHeaderPrimaryKey(oRow.get("COUNTRY_ID").getString()); + oCountryHeader.setCountryName(oRow.get("NAME").getString()); + arylstHeaderList.add(oCountryHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmCountryDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCOUNTRYMST.proc_HrCountryDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmCountryDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmCountryDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCOUNTRYMST.proc_HrCountryDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmCountryDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgCntryMstDtlBean oCountryDetailBean = new HrmOrgCntryMstDtlBean(); + oCountryDetailBean.setDetailId(oRow.get("CITY_ID").getString()); + oCountryDetailBean.setTxtCityCode(oRow.get("CITY_CODE").getString()); + oCountryDetailBean.setTxtCityName(oRow.get("NAME").getString()); + arylstHrmCountryDetail.add(oCountryDetailBean); + } + return arylstHrmCountryDetail; + } + + public void initializeBOImpl() { + this.headerTable = "GEN_COUNTRY_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgCntryMstHdrBean oHrmCountryHdrBean = (HrmOrgCntryMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmCountryHdrBean.getCountryCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmCountryHdrBean.getCountryName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, null)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCOUNTRYMST.proc_UpsertHrCountryHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmCountryHdrBean.getCountryCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmCountryHdrBean.getCountryName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmCountryHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGCOUNTRYMST.proc_UpsertHrCountryHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgCntryMst")) + saveHrmCountryDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + private void saveHrmCountryDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgCntryMstDtlBean oHrmCountryDtlBean = itrBean.next(); + if (oHrmCountryDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGCOUNTRYMST.proc_UpsertHrCountryMst(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmCountryDtlBean.getTxtCityCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmCountryDtlBean.getTxtCityName())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmCountryDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGCOUNTRYMST.proc_UpsertHrCountryMst(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmCountryDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmCountryDtlBean.getTxtCityCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmCountryDtlBean.getTxtCityName())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmCountryDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGCOUNTRYMST.proc_DeleteHrCountryMst(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmCountryDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public LovVO getHrmCountryCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmCountryMaster.countryCode"); + arylstHeaderList.add("hrm.HrmCountryMaster.countryName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetCountryCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("COUNTRY_ID").getString()); + oLOVBean.setDetailField2(oRow.get("COUNTRY_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgCntryMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgCntryMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgCntryMstDtlBean oHrmOrgCntryMstDtlBean = itrBean1.next(); + if (!oHrmOrgCntryMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgCntryMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgCntryMstDtlBean oHrmOrgCntryMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgCntryMstDtlBean.getTxtCityCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCountryMaster.txtCityCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgCntryMstDtlBean.getTxtCityName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCountryMaster.txtCityName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgCntryMstHdrBean oHrmOrgCntryMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgCntryMstHdrBean.getCountryCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCountryMaster.countryCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgCntryMstHdrBean.getCountryName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCountryMaster.countryName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgCntryMstHdrBean oHrmOrgCntryMstHdrBean = (HrmOrgCntryMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmOrgCntryMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmOrgCntryMst")) { + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtCityCode", "hrm.HrmCountryMaster.txtCityCode", arylstErrorList, true); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtCityName", "hrm.HrmCountryMaster.txtCityName", arylstErrorList, true); + checkUniqueDtl(oBaseHeaderBean.getHeaderPrimaryKey(), arylstDetailBeanArray); + } + reportError(arylstErrorList); + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + int count = 0; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmOrgCntryMstDtlBean oHrmOrgCntryMstDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select CITY_ID as ID from GEN_CITY_MST where CITY_CODE='").concat(String.valueOf(oHrmOrgCntryMstDtlBean.getTxtCityCode()))).concat(String.valueOf("'"))).concat(String.valueOf(" and CNTRY_ID='"))).concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgCntryMstDtlBean.getDetailId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmCountryMaster.txtCityCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", oParams, "E")); + } + } + } + reportError(oErrorList); + } + + public void checkRefferenceKey(String sSkillHeaderId) throws EnrgiseApplicationException, EnrgiseSystemException { + System.out.println("To be added"); + } + + private void checkUniqueHeader(HrmOrgCntryMstHdrBean oHrmOrgCntryMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select COUNTRY_ID as ID from GEN_COUNTRY_MST where COUNTRY_CODE='").concat(String.valueOf(oHrmOrgCntryMstHdrBean.getCountryCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgCntryMstHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgDistMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgDistMstBO.java new file mode 100644 index 0000000..80ad58c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgDistMstBO.java @@ -0,0 +1,214 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgDistrictMstDtlBean; + +public class HrmOrgDistMstBO extends HrmBaseBO { + public HrmOrgDistMstBO() {} + + public HrmOrgDistMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmDistrictDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -5)); + arylstParameters.add(new DBObject(2, 2, 93)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGDISTRICTMST.proc_HrDistrictDtlCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmDistrictDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmDistrictDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGDISTRICTMST.proc_GetDistrictDtl(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmDistrictDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgDistrictMstDtlBean oDistrictBean = new HrmOrgDistrictMstDtlBean(); + oDistrictBean.setDetailId(oRow.get("ID").getString()); + oDistrictBean.setTxtDistrictCode(oRow.get("CODE").getString()); + oDistrictBean.setTxtDistrictName(oRow.get("DESCRIPTION").getString()); + arylstHrmDistrictDetail.add(oDistrictBean); + } + return arylstHrmDistrictDetail; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "true"; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_DISTRICT_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgDistMst")) + saveHrmDistrictDetail(arylstDetailBeanArray); + } + + private void saveHrmDistrictDetail(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgDistrictMstDtlBean oHrmOrgDistMstDtlBean = itrBean.next(); + if (oHrmOrgDistMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGDISTRICTMST.proc_UpsertHrDistrictMst(?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgDistMstDtlBean.getTxtDistrictCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgDistMstDtlBean.getTxtDistrictName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, null)); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgDistMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGDISTRICTMST.proc_UpsertHrDistrictMst(?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgDistMstDtlBean.getTxtDistrictCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgDistMstDtlBean.getTxtDistrictName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgDistMstDtlBean.getDetailId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgDistMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGDISTRICTMST.proc_DeleteDistMst(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgDistMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgDistMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgDistrictMstDtlBean oHrmOrgDistMstDtlBean = itrBean1.next(); + if (!oHrmOrgDistMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgDistMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgDistrictMstDtlBean oHrmOrgDistMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgDistMstDtlBean.getTxtDistrictCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDistrictMaster.txtCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgDistMstDtlBean.getTxtDistrictName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmDistrictMaster.txtDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgDistMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgDistrictMstDtlBean oHrmOrgDistMstDtlBean = itrBean1.next(); + if (!oHrmOrgDistMstDtlBean.getStatus().equalsIgnoreCase("D")) + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtDistrictCode", "hrm.HrmDistrictMaster.txtCode", arylstErrorList, true); + } + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolCalBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolCalBO.java new file mode 100644 index 0000000..cecade2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolCalBO.java @@ -0,0 +1,714 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgHolCalDtlBean; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; + +public class HrmOrgHolCalBO extends HrmBaseBO { + public HrmOrgHolCalBO() {} + + public HrmOrgHolCalBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmHolCalHdrMetaInfo(HrmOrgHolCalQVO oHrmOrgHolCalQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgHolCalQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgHolCalQVO.getCalendarName())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgHolCalQVO.getSiteId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgHolCalQVO.getStateCode())); + arylstParameters.add(new DBObject(5, 2, -5)); + arylstParameters.add(new DBObject(6, 2, 93)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLCALMST.proc_HrHolCalCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmHolCalHeaderInfo(HrmOrgHolCalQVO oHrmOrgHolCalQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgHolCalQVO == null) + oHrmOrgHolCalQVO = new HrmOrgHolCalQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgHolCalQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgHolCalQVO.getCalendarName())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgHolCalQVO.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgHolCalQVO.getStateCode())); + arylstParameters.add(new DBObject(7, 2, -10)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLCALMST.proc_GetHrHolCal(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgHolCalHdrBean oHolCalHeader = new HrmOrgHolCalHdrBean(); + oHolCalHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHolCalHeader.setCalendarName(oRow.get("CAL_CODE").getString()); + oHolCalHeader.setDescription(oRow.get("DESCRIPTION").getString()); + oHolCalHeader.setFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oHolCalHeader.setToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + oHolCalHeader.setSiteCode(oRow.get("NAME").getString()); + oHolCalHeader.setStateCode(oRow.get("state_code").getString()); + oHolCalHeader.setState(oRow.get("GLOBAL_CODE_DESC").getString()); + oHolCalHeader.setSiteId(oRow.get("SITE_ID").getString()); + arylstHeaderList.add(oHolCalHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmHolCalDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLCALMST.proc_HrHolCalDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmHolCalDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmHolCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLCALMST.proc_GetHrHolCalDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmHolCalDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgHolCalDtlBean oHrHolCalDtlBean = new HrmOrgHolCalDtlBean(); + oHrHolCalDtlBean.setDetailId(oRow.get("ID").getString()); + oHrHolCalDtlBean.setTxtHolidayDate(EnrgiseUtil.convertToString(oRow.get("HOLIDAY_DATE").getDate())); + oHrHolCalDtlBean.setTxtHolidayName(oRow.get("NAME").getString()); + oHrHolCalDtlBean.setTxtHolTypeId(oRow.get("HOL_TYPMST_ID").getString()); + oHrHolCalDtlBean.setTxtHolidayType(oRow.get("description").getString()); + oHrHolCalDtlBean.setTxtDay(oRow.get("day").getString()); + System.out.println(oRow.get("day").getString()); + arylstHrmHolCalDetail.add(oHrHolCalDtlBean); + } + return arylstHrmHolCalDetail; + } + + public LovVO getHrmCalNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Calendar Id"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.calendarName"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.description"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.fromDate"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.toDate"); + arylstHeaderNames.add("siteId"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.siteCode"); + String frmDate = null; + String toDate = null; + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetHolCalNameLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + frmDate = formatter.format(oRow.get("FROM_DATE").getDate()); + toDate = formatter.format(oRow.get("TO_DATE").getDate()); + oLOVBean.setDetailField4(frmDate); + oLOVBean.setDetailField5(toDate); + oLOVBean.setDetailField6(oRow.get("gen_site_id").getString()); + oLOVBean.setDetailField7(oRow.get("code").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Site Id"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.siteCode"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.siteDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String stateCode = null; + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("stateCode") != null) { + stateCode = oLovQueryVO.getProperty("stateCode"); + System.out.println(stateCode); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, stateCode)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetHolSiteCodeLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmStateCodeInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Site Id"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.stateCode"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.stateDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetHolCalStateLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmStateCodeQueryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Site Id"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.stateCode"); + arylstHeaderNames.add("hrm.HrmHolidayCalendar.stateDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetHolCalStateQLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "GEN_HOL_CAL_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgHolCal")) + saveHrmHolCalDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmHolCalDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgHolCalDtlBean oHrmOrgHolCalDtlBean = itrBean.next(); + if (oHrmOrgHolCalDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGHOLCALMST.proc_UpsertHrHolCalDtl(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgHolCalDtlBean.getTxtHolidayDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgHolCalDtlBean.getTxtHolidayName())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgHolCalDtlBean.getTxtHolTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgHolCalDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGHOLCALMST.proc_UpsertHrHolCalDtl(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgHolCalDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgHolCalDtlBean.getTxtHolidayDate()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgHolCalDtlBean.getTxtHolidayName())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgHolCalDtlBean.getTxtHolTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgHolCalDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGHOLCALMST.proc_DeleteHolCalDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgHolCalDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean = (HrmOrgHolCalHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgHolCalHdrBean.getCalendarName())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgHolCalHdrBean.getDescription())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgHolCalHdrBean.getFromDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgHolCalHdrBean.getToDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgHolCalHdrBean.getSiteId())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmOrgHolCalHdrBean.getStateCode())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmOrgHolCalHdrBean.getCalendarYear())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(11, 1, 12, null)); + arylstParameters.add(new DBObject(12, 2, 12)); + arylstParameters.add(new DBObject(13, 2, 12)); + arylstParameters.add(new DBObject(14, 2, 4)); + arylstParameters.add(new DBObject(15, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLCALMST.proc_UpsertHrHolCalHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgHolCalHdrBean.getCalendarName())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgHolCalHdrBean.getDescription())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgHolCalHdrBean.getFromDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgHolCalHdrBean.getToDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgHolCalHdrBean.getSiteId())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmOrgHolCalHdrBean.getStateCode())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmOrgHolCalHdrBean.getCalendarYear())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmOrgHolCalHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(12, 2, 12)); + arylstParameters.add(new DBObject(13, 2, 12)); + arylstParameters.add(new DBObject(14, 2, 4)); + arylstParameters.add(new DBObject(15, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLCALMST.proc_UpsertHrHolCalHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean = (HrmOrgHolCalHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmOrgHolCalHdrBean)oBaseHeaderBean); + checkHeaderDates(oHrmOrgHolCalHdrBean, arylstErrorList); + } + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmOrgHolCal")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtHolidayName", "hrm.HrmHolidayCalendar.txtHolidayName", arylstErrorList, true); + checkDatesConstraint(oHrmOrgHolCalHdrBean, arylstDetailBeanArray, arylstErrorList); + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from GEN_HOL_CAL_MST where CAL_CODE='").concat(String.valueOf(oHrmOrgHolCalHdrBean.getCalendarName()))).concat(String.valueOf("'")); + System.out.println(sQuery); + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgHolCalHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgHolCalDtlBean oHrmOrgHolCalDtlBean = itrBean1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from GEN_HOL_CAL_DTL where NAME= '").concat(String.valueOf(oHrmOrgHolCalDtlBean.getTxtHolidayName()))).concat(String.valueOf("' and GEN_HOLC_MST_ID="))).concat(String.valueOf(sHeaderPrimaryKey)); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgHolCalDtlBean.getDetailId())) + throw new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated", "M"); + } + } + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgHolCalHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgHolCal")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgHolCalDtlBean oHrmOrgHolCalDtlBean = itrBean1.next(); + if (!oHrmOrgHolCalDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgHolCalDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgHolCalDtlBean oHrmOrgHolCalDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgHolCalDtlBean.getTxtHolidayName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidayCalendar.txtHolidayName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgHolCalDtlBean.getTxtHolidayDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidayCalendar.txtHolidayDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgHolCalDtlBean.getTxtHolidayType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidayCalendar.txtHolidayType"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getCalendarName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidayCalendar.calendarName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidayCalendar.fromDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getToDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidayCalendar.toDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getState())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidayCalendar.state"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkDatesConstraint(HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean, ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + int n = arylstDetailBeanArray.size(); + HrmOrgHolCalDtlBean oHrmOrgHolCalDtlBean = arylstDetailBeanArray.get(n - 1); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmOrgHolCalDtlBean.getTxtHolidayDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmOrgHolCalHdrBean.getToDate(), oHrmOrgHolCalDtlBean.getTxtHolidayDate()); + if (dateFlag == -1 && dateFlag != -2) + if (arylstErrorList.isEmpty()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmHolidayCalendar.holidayDateValidation", arylstParam)); + } + } + if (EnrgiseUtil.checkString(oHrmOrgHolCalDtlBean.getTxtHolidayDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmOrgHolCalHdrBean.getFromDate(), oHrmOrgHolCalDtlBean.getTxtHolidayDate()); + if (dateFlag == 1 && dateFlag != -2) + if (arylstErrorList.isEmpty()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmHolidayCalendar.holidayDateValidation", arylstParam)); + } + } + } + + private void checkHeaderDates(HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + System.out.println(oHrmOrgHolCalHdrBean.getFromDate()); + System.out.println(oHrmOrgHolCalHdrBean.getToDate()); + if (EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getFromDate()) || EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getToDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmOrgHolCalHdrBean.getToDate(), oHrmOrgHolCalHdrBean.getFromDate()); + if ((dateFlag == -1 && dateFlag != -2) || (dateFlag == 0 && dateFlag != -2)) + if (arylstErrorList.isEmpty()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmHolidayCalendar.headerDateValidation", arylstParam)); + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolTypeMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolTypeMstBO.java new file mode 100644 index 0000000..b238857 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgHolTypeMstBO.java @@ -0,0 +1,316 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; + +public class HrmOrgHolTypeMstBO extends HrmBaseBO { + public HrmOrgHolTypeMstBO() {} + + public HrmOrgHolTypeMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmHolTypeHdrMetaInfo(HrmOrgHolTypeMstQVO oHrmOrgHolTypeMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgHolTypeMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgHolTypeMstQVO.getHolidayType())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLTYPEMST.proc_HrHolTypCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmHolTypeHeaderInfo(HrmOrgHolTypeMstQVO oHrmOrgHolTypeMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgHolTypeMstQVO == null) + oHrmOrgHolTypeMstQVO = new HrmOrgHolTypeMstQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgHolTypeMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgHolTypeMstQVO.getHolidayType())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLTYPEMST.proc_GetHrHolTypInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgHolTypeMstHdrBean oHolTypeHeader = new HrmOrgHolTypeMstHdrBean(); + oHolTypeHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHolTypeHeader.setHolidayType(oRow.get("DESCRIPTION").getString()); + oHolTypeHeader.setMandatory(oRow.get("LEAVE_MANDATORY_FLG").getString()); + oHolTypeHeader.setYearlyLimit(oRow.get("Yearly_LIMIT").getString()); + oHolTypeHeader.setCompensatoryLeave(oRow.get("COMPENSATORY_LEAVE").getString()); + oHolTypeHeader.setRewardPercentageOfBasic(oRow.get("REWARD_PERC").getString()); + arylstHeaderList.add(oHolTypeHeader); + } + return arylstHeaderList; + } + + public ArrayList getHrmHolTypeHeaderInfoByFlag(String sleaveManFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sleaveManFlag)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLTYPEMST.proc_GetHrHolTypInfoByFlag(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgHolTypeMstHdrBean oHolTypeHeader = new HrmOrgHolTypeMstHdrBean(); + oHolTypeHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHolTypeHeader.setHolidayType(oRow.get("DESCRIPTION").getString()); + oHolTypeHeader.setMandatory(oRow.get("LEAVE_MANDATORY_FLAG").getString()); + oHolTypeHeader.setYearlyLimit(oRow.get("YEARLY_LIMIT").getString()); + oHolTypeHeader.setCompensatoryLeave(oRow.get("COMPENSATORY_LEAVE").getString()); + oHolTypeHeader.setRewardPercentageOfBasic(oRow.get("REWARD_PERC").getString()); + arylstHeaderList.add(oHolTypeHeader); + } + return arylstHeaderList; + } + + public LovVO getHrmHolidayTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmCoreCompetency.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetHolidayTypeLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_HOL_TYPE_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean = (HrmOrgHolTypeMstHdrBean)oBaseHeaderBean; + System.out.println(ScreenMode); + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgHolTypeMstHdrBean.getHolidayType())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgHolTypeMstHdrBean.getYearlyLimit())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgHolTypeMstHdrBean.getMandatory())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgHolTypeMstHdrBean.getRewardPercentageOfBasic())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(9, 1, 12, null)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 12)); + arylstParameters.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLTYPEMST.proc_UpsertHrHolType(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgHolTypeMstHdrBean.getHolidayType())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgHolTypeMstHdrBean.getYearlyLimit())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgHolTypeMstHdrBean.getMandatory())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgHolTypeMstHdrBean.getRewardPercentageOfBasic())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmOrgHolTypeMstHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 12)); + arylstParameters.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGHOLTYPEMST.proc_UpsertHrHolType(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + System.out.println("No Detail"); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgHolTypeMstHdrBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getHolidayType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidaytypeMst.holidayType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getMandatory())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmHolidaytypeMst.mandatory"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean = (HrmOrgHolTypeMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmOrgHolTypeMstHdrBean)oBaseHeaderBean); + checkYearlyLimit((HrmOrgHolTypeMstHdrBean)oBaseHeaderBean); + } + } + + private void checkYearlyLimit(HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + String sYearlyLimit = new String(); + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getYearlyLimit())) { + sYearlyLimit = oHrmOrgHolTypeMstHdrBean.getYearlyLimit(); + if (Integer.parseInt(sYearlyLimit) == 0) { + arylstParam = new ArrayList(); + arylstParam.add("Holiday Tyme Master : Yearly limit"); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmHolidaytypeMst.checkYearlyLimit", arylstParam)); + } + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_HOL_TYPE_MST where DESCRIPTION='").concat(String.valueOf(oHrmOrgHolTypeMstHdrBean.getHolidayType()))).concat(String.valueOf("'")); + System.out.println(sQuery); + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgHolTypeMstHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgIncrementBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgIncrementBO.java new file mode 100644 index 0000000..10cc47d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgIncrementBO.java @@ -0,0 +1,530 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgIncrementDtlBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; + +public class HrmOrgIncrementBO extends HrmBaseBO { + public HrmOrgIncrementBO() {} + + public HrmOrgIncrementBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmIncrHdrMetaInfo(HrmOrgIncrementQVO oHrmOrgIncrementQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgIncrementQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgIncrementQVO.getRatingHdrId())); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementQVO.getStartDate()))); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementQVO.getEndDate()))); + arylstParameters.add(new DBObject(5, 2, -5)); + arylstParameters.add(new DBObject(6, 2, 93)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGINCRMST.proc_HrIncrHdrCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmIncrHeaderInfo(HrmOrgIncrementQVO oHrmOrgIncrementQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgIncrementQVO == null) + oHrmOrgIncrementQVO = new HrmOrgIncrementQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgIncrementQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgIncrementQVO.getRatingHdrId())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementQVO.getStartDate()))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementQVO.getEndDate()))); + arylstParameters.add(new DBObject(7, 2, -10)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGINCRMST.proc_GetHrIncrHdrInfo(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean = new HrmOrgIncrementHdrBean(); + oHrmOrgIncrementHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmOrgIncrementHdrBean.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmOrgIncrementHdrBean.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHrmOrgIncrementHdrBean.setClsHdrId(oRow.get("clsMstId").getString()); + oHrmOrgIncrementHdrBean.setClsHdr(oRow.get("clsMstCode").getString()); + oHrmOrgIncrementHdrBean.setClsHdrDesc(oRow.get("clsMstDesc").getString()); + oHrmOrgIncrementHdrBean.setClsDtlId(oRow.get("clsDtlId").getString()); + oHrmOrgIncrementHdrBean.setClsDtl(oRow.get("clsDtlCode").getString()); + oHrmOrgIncrementHdrBean.setClsDtlDesc(oRow.get("clsDtlDesc").getString()); + oHrmOrgIncrementHdrBean.setRatingHdrId(oRow.get("ratingHdrId").getString()); + oHrmOrgIncrementHdrBean.setRatingCode(oRow.get("ratingHdrCode").getString()); + arylstHeaderList.add(oHrmOrgIncrementHdrBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmIncrDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGINCRMST.proc_HrIncrDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmIncrDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmIncrDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGINCRMST.proc_GetHrIncrDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmIncrDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean = new HrmOrgIncrementDtlBean(); + oHrmOrgIncrementDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmOrgIncrementDtlBean.setRatingDtlId(oRow.get("RATING_DTL_ID").getString()); + oHrmOrgIncrementDtlBean.setTxtIncrement(oRow.get("INCR_PERC").getString()); + oHrmOrgIncrementDtlBean.setTxtRatingFrom(oRow.get("rating_from").getString()); + oHrmOrgIncrementDtlBean.setTxtRatingTo(oRow.get("rating_to").getString()); + oHrmOrgIncrementDtlBean.setTxtRatingGrade(oRow.get("grade").getString()); + oHrmOrgIncrementDtlBean.setTxtRatingDescription(oRow.get("description").getString()); + arylstHrmIncrDetail.add(oHrmOrgIncrementDtlBean); + } + return arylstHrmIncrDetail; + } + + public ArrayList getRatingDetail(String sRatingHdrId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstRatingDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sRatingHdrId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGINCRMST.procRatingDtlInfo(?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstRatingDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean = new HrmOrgIncrementDtlBean(); + oHrmOrgIncrementDtlBean.setRatingDtlId(oRow.get("id").getString()); + arylstRatingDetail.add(oHrmOrgIncrementDtlBean); + } + return arylstRatingDetail; + } + + public void insertIncrementDetail(String sRatingHdrId, String sHdrId) throws EnrgiseSystemException { + boolean bInsert = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList oDetailBeanArray = getRatingDetail(sRatingHdrId); + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean = oIt.next(); + String sRatingDtlId = oHrmOrgIncrementDtlBean.getRatingDtlId(); + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGINCRMST.proc_UpsertHrIncrDtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHdrId)); + arylstParam.add(new DBObject(4, 1, 12, sRatingDtlId)); + arylstParam.add(new DBObject(5, 1, 12, null)); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + if (bInsert) + oBean.executeBatch(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean = (HrmOrgIncrementHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementHdrBean.getStartDate()))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementHdrBean.getEndDate()))); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgIncrementHdrBean.getClsHdrId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgIncrementHdrBean.getClsDtlId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgIncrementHdrBean.getRatingHdrId())); + arylstParam.add(new DBObject(7, 1, 12, null)); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGINCRMST.proc_UpsertHrIncrHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + insertIncrementDetail(oHrmOrgIncrementHdrBean.getRatingHdrId(), returnString); + } + if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementHdrBean.getStartDate()))); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgIncrementHdrBean.getEndDate()))); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgIncrementHdrBean.getClsHdrId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgIncrementHdrBean.getClsDtlId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgIncrementHdrBean.getRatingHdrId())); + arylstParam.add(new DBObject(7, 1, 12, oHrmOrgIncrementHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGINCRMST.proc_UpsertHrIncrHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgIncrement")) + saveIncrementDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveIncrementDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bUpdate = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean = oIt.next(); + if (oHrmOrgIncrementDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGINCRMST.proc_UpsertHrIncrDtl(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgIncrementDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgIncrementDtlBean.getRatingDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgIncrementDtlBean.getTxtIncrement())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_INCREMENT_MST"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgIncrementHdrBean)oBaseHeaderBean, arylstErrorList); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgIncrement")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean = itrBean1.next(); + if (!oHrmOrgIncrementDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatory(oHrmOrgIncrementDtlBean, iCount, arylstErrorList); + checkNumericFields(oHrmOrgIncrementDtlBean, iCount, arylstErrorList); + } + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getStartDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmOrgIncrement.startDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getClsHdr())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmOrgIncrement.classHeaderCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getClsDtl())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmOrgIncrement.classDetailCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getRatingCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmOrgIncrement.ratingCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatory(HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgIncrementDtlBean.getTxtIncrement())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmOrgIncrement.increment"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkNumericFields(HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oHrmOrgIncrementDtlBean.getTxtIncrement(), 3, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmOrgIncrement.increment"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParams)); + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean = (HrmOrgIncrementHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + if (sScreenMode.equalsIgnoreCase("N")) + getLastEndDate(oHrmOrgIncrementHdrBean.getRatingHdrId(), oErrorList, oHrmOrgIncrementHdrBean); + checkEndDate((HrmOrgIncrementHdrBean)oBaseHeaderBean, oErrorList); + } + reportError(oErrorList); + } + + public LovVO getIncrRatingLOVNData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select hrh.id,hrh.CODE,hrh.MIN_RATING,hrh.MAX_RATING,hrh.QUALIFYING_RATING from hrm_rating_hdr hrh "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where 1=1 ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hrh.CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("ratingId"); + oHeaderList.add("hrm.HrmOrgIncrement.ratingCode"); + oHeaderList.add("hrm.HrmRatingMaster.minimumRating"); + oHeaderList.add("hrm.HrmRatingMaster.maximumRating"); + oHeaderList.add("hrm.HrmRatingMaster.qualifyingRating"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("MIN_RATING").getString()); + oLOVBean.setDetailField4(oRow.get("MAX_RATING").getString()); + oLOVBean.setDetailField5(oRow.get("QUALIFYING_RATING").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getIncrRatingLOVQData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hrh.id,hrh.CODE,hrh.MIN_RATING,hrh.MAX_RATING,hrh.QUALIFYING_RATING from hrm_rating_hdr hrh,hrm_increment_mst him "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where him.RATING_HDR_ID=hrh.id ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hrh.CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("ratingId"); + oHeaderList.add("hrm.HrmOrgIncrement.ratingCode"); + oHeaderList.add("hrm.HrmRatingMaster.minimumRating"); + oHeaderList.add("hrm.HrmRatingMaster.maximumRating"); + oHeaderList.add("hrm.HrmRatingMaster.qualifyingRating"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("MIN_RATING").getString()); + oLOVBean.setDetailField4(oRow.get("MAX_RATING").getString()); + oLOVBean.setDetailField5(oRow.get("QUALIFYING_RATING").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void getLastEndDate(String sRatingHdrId, ArrayList oErrorList, HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sLastEndDate = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sRatingHdrId)); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgIncrementHdrBean.getClsHdrId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgIncrementHdrBean.getClsDtlId())); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGINCRMST.procLastEndDate(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + String sArylstParam = (String)oOutObject.getObject(); + if (!EnrgiseUtil.checkString(sArylstParam)) { + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrms.incr.enddate.value")); + } else { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmOrgIncrementHdrBean.getStartDate(), sLastEndDate); + if (dateFlag == -1 && dateFlag != -2) { + ArrayList oParams = new ArrayList(); + oParams.add(sLastEndDate); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.stdateConstraintViolated", oParams)); + } + } + } + + private void checkEndDate(HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getEndDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmOrgIncrementHdrBean.getEndDate(), oHrmOrgIncrementHdrBean.getStartDate()); + if (dateFlag == -1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.hrms.endDateConstraintViolated")); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgLangMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgLangMstBO.java new file mode 100644 index 0000000..202a60c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgLangMstBO.java @@ -0,0 +1,217 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgLangMstDtlBean; + +public class HrmOrgLangMstBO extends HrmBaseBO { + public HrmOrgLangMstBO() {} + + public HrmOrgLangMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmLanguageDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -5)); + arylstParameters.add(new DBObject(2, 2, 93)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGLANGUAGEMST.proc_HrLanguageDtlCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmLanguageDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmLanguageDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGLANGUAGEMST.proc_GetLanguageDtl(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmLanguageDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgLangMstDtlBean oLanguageBean = new HrmOrgLangMstDtlBean(); + oLanguageBean.setDetailId(oRow.get("ID").getString()); + oLanguageBean.setTxtCode(oRow.get("CODE").getString()); + oLanguageBean.setTxtDescription(oRow.get("DESCRIPTION").getString()); + oLanguageBean.setTxtLanguageType(oRow.get("LANGUAGE_TYPE").getString()); + arylstHrmLanguageDetail.add(oLanguageBean); + } + return arylstHrmLanguageDetail; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "true"; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_lANGUAGE_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgLangMst")) + saveHrmLanguageDetail(arylstDetailBeanArray); + } + + private void saveHrmLanguageDetail(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgLangMstDtlBean oHrmOrgLangMstDtlBean = itrBean.next(); + if (oHrmOrgLangMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGLANGUAGEMST.proc_UpsertHrLanguageMst(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgLangMstDtlBean.getTxtCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgLangMstDtlBean.getTxtDescription())); + arylstParameters.add(new DBObject(4, 1, 12, "N")); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(7, 1, 12, null)); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgLangMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGLANGUAGEMST.proc_UpsertHrLanguageMst(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgLangMstDtlBean.getTxtCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgLangMstDtlBean.getTxtDescription())); + arylstParameters.add(new DBObject(4, 1, 12, "N")); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmOrgLangMstDtlBean.getDetailId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgLangMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGLANGUAGEMST.proc_DeleteLangMst(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgLangMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgLangMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgLangMstDtlBean oHrmOrgLangMstDtlBean = itrBean1.next(); + if (!oHrmOrgLangMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgLangMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgLangMstDtlBean oHrmOrgLangMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgLangMstDtlBean.getTxtCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLanguageMaster.txtCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgLangMstDtlBean.getTxtDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmLanguageMaster.txtDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgLangMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgLangMstDtlBean oHrmOrgLangMstDtlBean = itrBean1.next(); + if (!oHrmOrgLangMstDtlBean.getStatus().equalsIgnoreCase("D")) + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtCode", "hrm.HrmLanguageMaster.txtCode", arylstErrorList, true); + } + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgQualMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgQualMstBO.java new file mode 100644 index 0000000..e38478a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgQualMstBO.java @@ -0,0 +1,220 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgQualMstDtlBean; + +public class HrmOrgQualMstBO extends HrmBaseBO { + public HrmOrgQualMstBO() {} + + public HrmOrgQualMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmQualificationDtlMetaInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, -5)); + arylstParam.add(new DBObject(2, 2, 93)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGQUALIFICATIONMST.proc_HrQualificationDtlCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmQualificationDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmQualDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGQUALIFICATIONMST.proc_GetQualificationDtl(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmQualDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgQualMstDtlBean oQualificationBean = new HrmOrgQualMstDtlBean(); + oQualificationBean.setDetailId(oRow.get("ID").getString()); + oQualificationBean.setTxtApprovingAuthority(oRow.get("APPROVAL_BODY").getString()); + oQualificationBean.setTxtCode(oRow.get("CODE").getString()); + oQualificationBean.setTxtNoOfYears(oRow.get("DURATION_YEARS").getString()); + oQualificationBean.setTxtQualification(oRow.get("NAME").getString()); + arylstHrmQualDetail.add(oQualificationBean); + } + return arylstHrmQualDetail; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "true"; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_QUAL_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgQualMst")) + saveHrmQualificationDetail(arylstDetailBeanArray); + } + + private void saveHrmQualificationDetail(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgQualMstDtlBean oHrmOrgQualMstDtlBean = itrBean.next(); + if (oHrmOrgQualMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGQUALIFICATIONMST.proc_UpsertHrQualificationMst(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgQualMstDtlBean.getTxtCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgQualMstDtlBean.getTxtQualification())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgQualMstDtlBean.getTxtNoOfYears())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgQualMstDtlBean.getTxtApprovingAuthority())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmOrgQualMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGQUALIFICATIONMST.proc_UpsertHrQualificationMst(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgQualMstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgQualMstDtlBean.getTxtCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgQualMstDtlBean.getTxtQualification())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgQualMstDtlBean.getTxtNoOfYears())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgQualMstDtlBean.getTxtApprovingAuthority())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmOrgQualMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGQUALIFICATIONMST.proc_DeleteQualMstDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmOrgQualMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgQualMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgQualMstDtlBean oHrmOrgQualMstDtlBean = itrBean1.next(); + if (!oHrmOrgQualMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgQualMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgQualMstDtlBean oHrmOrgQualMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgQualMstDtlBean.getTxtQualification())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmQualificationMaster.txtQualification"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgQualMstDtlBean.getTxtCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmQualificationMaster.txtCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgQualMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgQualMstDtlBean oHrmOrgQualMstDtlBean = itrBean1.next(); + if (!oHrmOrgQualMstDtlBean.getStatus().equalsIgnoreCase("D")) + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtCode", "hrm.HrmQualificationMaster.txtCode", arylstErrorList, true); + } + } + reportError(arylstErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRatingMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRatingMstBO.java new file mode 100644 index 0000000..a02b17d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRatingMstBO.java @@ -0,0 +1,543 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgRatingMstDtlBean; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; + +public class HrmOrgRatingMstBO extends HrmBaseBO { + public HrmOrgRatingMstBO() {} + + public HrmOrgRatingMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmRatingHdrMetaInfo(HrmOrgRatingMstQVO oHrmOrgRatingMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmOrgRatingMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgRatingMstQVO.getRatingHeaderCode())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGRATING.proc_HrRatingCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRatingHeaderInfo(HrmOrgRatingMstQVO oHrmOrgRatingMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgRatingMstQVO == null) + oHrmOrgRatingMstQVO = new HrmOrgRatingMstQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgRatingMstQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgRatingMstQVO.getRatingHeaderCode())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGRATING.proc_GetHrRatingHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgRatingMstHdrBean oRatingHeader = new HrmOrgRatingMstHdrBean(); + oRatingHeader.setRatingHeaderCode(oRow.get("CODE").getString()); + oRatingHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oRatingHeader.setMaximumRating(oRow.get("MAX_RATING").getString()); + oRatingHeader.setMinimumRating(oRow.get("MIN_RATING").getString()); + oRatingHeader.setQualifyingRating(oRow.get("QUALIFYING_RATING").getString()); + arylstHeaderList.add(oRatingHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmRatingDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGRATING.proc_HrRatingDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRatingDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRatingDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGRATING.proc_GetHrRatingDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRatingDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgRatingMstDtlBean oRatingDetailBean = new HrmOrgRatingMstDtlBean(); + oRatingDetailBean.setDetailId(oRow.get("ID").getString()); + oRatingDetailBean.setTxtDescription(oRow.get("DESCRIPTION").getString()); + oRatingDetailBean.setTxtRatingFrom(oRow.get("RATING_FROM").getString()); + oRatingDetailBean.setTxtRatingGrade(oRow.get("GRADE").getString()); + oRatingDetailBean.setTxtRatingTo(oRow.get("RATING_TO").getString()); + arylstHrmRatingDetail.add(oRatingDetailBean); + } + return arylstHrmRatingDetail; + } + + public LovVO getHrmRatingCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmRatingMaster.ratingHeaderCode"); + arylstHeaderList.add("hrm.HrmRatingMaster.minimumRating"); + arylstHeaderList.add("hrm.HrmRatingMaster.qualifyingRating"); + arylstHeaderList.add("hrm.HrmRatingMaster.maximumRating"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGSETUPLOV.proc_GetRatingCodeLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("MIN_RATING").getString()); + oLOVBean.setDetailField4(oRow.get("QUALIFYING_RATING").getString()); + oLOVBean.setDetailField5(oRow.get("MAX_RATING").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_RATING_HDR"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgRatingMstHdrBean oHrmOrgRatingMstHdrBean = (HrmOrgRatingMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgRatingMstHdrBean.getRatingHeaderCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgRatingMstHdrBean.getMinimumRating())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgRatingMstHdrBean.getMaximumRating())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgRatingMstHdrBean.getQualifyingRating())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, null)); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGRATING.proc_UpsertHrratingHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgRatingMstHdrBean.getRatingHeaderCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgRatingMstHdrBean.getMinimumRating())); + arylstParam.add(new DBObject(4, 1, 12, oHrmOrgRatingMstHdrBean.getMaximumRating())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgRatingMstHdrBean.getQualifyingRating())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(9, 1, 12, oHrmOrgRatingMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 12)); + arylstParam.add(new DBObject(13, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGRATING.proc_UpsertHrratingHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgRatingMst")) + saveHrmRatingDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmRatingDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + String sNumericEq = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgRatingMstDtlBean oHrmOrgRatingMstDtlBean = itrBean.next(); + if (oHrmOrgRatingMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGRATING.proc_UpsertHrRatingDtl(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgRatingMstDtlBean.getTxtRatingFrom())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgRatingMstDtlBean.getTxtRatingTo())); + arylstParam.add(new DBObject(7, 1, 12, oHrmOrgRatingMstDtlBean.getTxtRatingGrade())); + arylstParam.add(new DBObject(8, 1, 12, oHrmOrgRatingMstDtlBean.getTxtDescription())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmOrgRatingMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGRATING.proc_UpsertHrRatingDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgRatingMstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmOrgRatingMstDtlBean.getTxtRatingFrom())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgRatingMstDtlBean.getTxtRatingTo())); + arylstParam.add(new DBObject(7, 1, 12, oHrmOrgRatingMstDtlBean.getTxtRatingGrade())); + arylstParam.add(new DBObject(8, 1, 12, oHrmOrgRatingMstDtlBean.getTxtDescription())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmOrgRatingMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGRATING.proc_DeleteRatingDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmOrgRatingMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgRatingMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgRatingMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgRatingMstDtlBean oHrmOrgRatingMstDtlBean = itrBean1.next(); + if (!oHrmOrgRatingMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgRatingMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgRatingMstDtlBean oHrmOrgRatingMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstDtlBean.getTxtRatingFrom())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.txtRatingFrom"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstDtlBean.getTxtRatingTo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.txtRatingTo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstDtlBean.getTxtDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.txtDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstDtlBean.getTxtRatingGrade())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.txtRatingGrade"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgRatingMstHdrBean oHrmOrgRatingMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstHdrBean.getRatingHeaderCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.ratingHeaderCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstHdrBean.getMinimumRating())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.minimumRating"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstHdrBean.getMaximumRating())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.maximumRating"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRatingMstHdrBean.getQualifyingRating())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRatingMaster.qualifyingRating"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgRatingMstHdrBean oHrmOrgRatingMstHdrBean = (HrmOrgRatingMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmOrgRatingMstHdrBean)oBaseHeaderBean); + checkHeaderFields((HrmOrgRatingMstHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmOrgRatingMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgRatingMstDtlBean oHrmOrgRatingMstDtlBean = itrBean1.next(); + if (!oHrmOrgRatingMstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkRatingTo(arylstDetailBeanArray); + checkDtlFieldsConsistency(arylstDetailBeanArray); + } + } + } + reportError(arylstErrorList); + } + + private void checkHeaderFields(HrmOrgRatingMstHdrBean oHrmOrgRatingMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int maxRating = Integer.parseInt(oHrmOrgRatingMstHdrBean.getMaximumRating()); + int minRating = Integer.parseInt(oHrmOrgRatingMstHdrBean.getMinimumRating()); + int qualRating = Integer.parseInt(oHrmOrgRatingMstHdrBean.getQualifyingRating()); + if (maxRating < qualRating) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("hrm.HrmRatingMaster.header.maxRating", arylstParam)); + } + if (qualRating < minRating) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("hrm.HrmRatingMaster.header.qualRating", arylstParam)); + } + if (maxRating < minRating) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("hrm.HrmRatingMaster.header.minRating", arylstParam)); + } + reportError(arylstList1); + } + + private void checkDtlFieldsConsistency(ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator oIt = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + if (n > 1) + while (oIt.hasNext()) { + oIt.next(); + HrmOrgRatingMstDtlBean oHrmOrgRatingMstDtlBean = oDetailBeanArray.get(count); + Float fRatingTo = Float.valueOf(oHrmOrgRatingMstDtlBean.getTxtRatingTo()); + if (count < n - 1) { + count++; + HrmOrgRatingMstDtlBean oHrmOrgRatingMstDtlBean1 = oDetailBeanArray.get(count); + Float fNextRatingFrom = Float.valueOf(oHrmOrgRatingMstDtlBean1.getTxtRatingFrom()); + if (fNextRatingFrom.floatValue() != fRatingTo.floatValue() + (new Float("0.01")).floatValue()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmRatingMaster.detail.ratingFromValidation", arylstParam)); + } + } + } + reportError(arylstList); + } + + private void checkRatingTo(ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator oIt = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + while (oIt.hasNext()) { + oIt.next(); + HrmOrgRatingMstDtlBean oHrmOrgRatingMstDtlBean = oDetailBeanArray.get(count); + Float fRatingTo = Float.valueOf(oHrmOrgRatingMstDtlBean.getTxtRatingTo()); + Float fRatingFrom = Float.valueOf(oHrmOrgRatingMstDtlBean.getTxtRatingFrom()); + if (fRatingFrom.floatValue() >= fRatingTo.floatValue()) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(count)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmRatingMaster.detail.ratingToValidation", arylstParam)); + } + count++; + } + reportError(arylstList); + } + + private void checkUniqueHeader(HrmOrgRatingMstHdrBean oHrmOrgRatingMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_RATING_HDR where CODE='").concat(String.valueOf(oHrmOrgRatingMstHdrBean.getRatingHeaderCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgRatingMstHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRelationMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRelationMstBO.java new file mode 100644 index 0000000..1f3d382 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgRelationMstBO.java @@ -0,0 +1,253 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgRelationMstDtlBean; + +public class HrmOrgRelationMstBO extends HrmBaseBO { + public HrmOrgRelationMstBO() {} + + public HrmOrgRelationMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmRelationDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -5)); + arylstParameters.add(new DBObject(2, 2, 93)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGRELATIONMST.proc_HrRelationDtlCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRelationDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRelationDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGRELATIONMST.proc_GetRelationDtl(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRelationDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgRelationMstDtlBean oRelationBean = new HrmOrgRelationMstDtlBean(); + oRelationBean.setDetailId(oRow.get("ID").getString()); + oRelationBean.setTxtRelationCode(oRow.get("CODE").getString()); + oRelationBean.setTxtRelationName(oRow.get("NAME").getString()); + oRelationBean.setTxtOccurence(oRow.get("OCCURANCE").getString()); + arylstHrmRelationDetail.add(oRelationBean); + } + return arylstHrmRelationDetail; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "true"; + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_RELA_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgRelationMst")) + saveHrmRelationDetail(arylstDetailBeanArray); + } + + private void saveHrmRelationDetail(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgRelationMstDtlBean oHrmOrgRelationMstDtlBean = itrBean.next(); + if (oHrmOrgRelationMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGRELATIONMST.proc_UpsertHrRelationMst(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgRelationMstDtlBean.getTxtRelationCode())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgRelationMstDtlBean.getTxtRelationName())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgRelationMstDtlBean.getTxtOccurence())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgRelationMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGRELATIONMST.proc_UpsertHrRelationMst(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgRelationMstDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgRelationMstDtlBean.getTxtRelationCode())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgRelationMstDtlBean.getTxtRelationName())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgRelationMstDtlBean.getTxtOccurence())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgRelationMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGRELATIONMST.proc_DeleteRelaMst(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgRelationMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgRelationMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgRelationMstDtlBean oHrmOrgRelationMstDtlBean = itrBean1.next(); + if (!oHrmOrgRelationMstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatory(oHrmOrgRelationMstDtlBean, iCount, arylstErrorList); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtRelationCode", "hrm.HrmRelationMaster.txtRelationCode", arylstErrorList, true); + } + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgRelationMstDtlBean oHrmOrgRelationMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgRelationMstDtlBean.getTxtRelationCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRelationMaster.txtRelationCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRelationMstDtlBean.getTxtRelationName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRelationMaster.txtRelationName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgRelationMstDtlBean.getTxtOccurence())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRelationMaster.txtOccurence"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgRelationMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgRelationMstDtlBean oHrmOrgRelationMstDtlBean = itrBean1.next(); + if (!oHrmOrgRelationMstDtlBean.getStatus().equalsIgnoreCase("D")) { + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtRelationCode", "hrm.HrmRelationMaster.txtRelationCode", arylstErrorList, true); + checkUniqueDtl(oBaseHeaderBean.getHeaderPrimaryKey(), arylstDetailBeanArray); + } + } + } + reportError(arylstErrorList); + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + int count = 0; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmOrgRelationMstDtlBean oHrmOrgRelationMstDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(" Select ID from HRM_RELA_MST where CODE='").concat(String.valueOf(oHrmOrgRelationMstDtlBean.getTxtRelationCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgRelationMstDtlBean.getDetailId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRelationMaster.txtRelationCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", oParams, "E")); + } + } + } + reportError(oErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgReligionMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgReligionMstBO.java new file mode 100644 index 0000000..da790a7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgReligionMstBO.java @@ -0,0 +1,204 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgReligionMstDtlBean; + +public class HrmOrgReligionMstBO extends HrmBaseBO { + public HrmOrgReligionMstBO() {} + + public HrmOrgReligionMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmRelDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -5)); + arylstParameters.add(new DBObject(2, 2, 93)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGRELIGIONMST.proc_HrRelDtlCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmReligionDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRelDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGRELIGIONMST.proc_GetReligionDtl(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRelDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgReligionMstDtlBean oReligionBean = new HrmOrgReligionMstDtlBean(); + oReligionBean.setDetailId(oRow.get("ID").getString()); + oReligionBean.setTxtReligionName(oRow.get("DESCRIPTION").getString()); + arylstHrmRelDetail.add(oReligionBean); + } + return arylstHrmRelDetail; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "true"; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_RELIGION_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgReligionMst")) + saveHrmReligionDetail(arylstDetailBeanArray); + } + + private void saveHrmReligionDetail(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgReligionMstDtlBean oHrmOrgReligionMstDtlBean = itrBean.next(); + if (oHrmOrgReligionMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGRELIGIONMST.proc_UpsertHrReligionMst(?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgReligionMstDtlBean.getTxtReligionName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgReligionMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGRELIGIONMST.proc_UpsertHrReligionMst(?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgReligionMstDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgReligionMstDtlBean.getTxtReligionName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgReligionMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGRELIGIONMST.proc_DeleteRelMst(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgReligionMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgReligionMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgReligionMstDtlBean oHrmOrgReligionMstDtlBean = itrBean1.next(); + if (!oHrmOrgReligionMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgReligionMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgReligionMstDtlBean oHrmOrgReligionMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgReligionMstDtlBean.getTxtReligionName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmReligionMaster.txtReligionName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgReligionMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgReligionMstDtlBean oHrmOrgReligionMstDtlBean = itrBean1.next(); + if (!oHrmOrgReligionMstDtlBean.getStatus().equalsIgnoreCase("D")) + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtReligionName", "hrm.HrmReligionMaster.txtReligionName", arylstErrorList, true); + } + } + reportError(arylstErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgScaleMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgScaleMstBO.java new file mode 100644 index 0000000..c80c483 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgScaleMstBO.java @@ -0,0 +1,596 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgScaleMstDtlBean; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; + +public class HrmOrgScaleMstBO extends HrmBaseBO { + public HrmOrgScaleMstBO() {} + + public HrmOrgScaleMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmScaleHdrMetaInfo(HrmOrgScaleMstQVO oHrmOrgScaleMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgScaleMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgScaleMstQVO.getScaleCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgScaleMstQVO.getRevision())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSCALEMST.proc_HrScaleCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmScaleHeaderInfo(HrmOrgScaleMstQVO oHrmOrgScaleMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgScaleMstQVO == null) + oHrmOrgScaleMstQVO = new HrmOrgScaleMstQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgScaleMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgScaleMstQVO.getScaleCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgScaleMstQVO.getRevision())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSCALEMST.proc_GetScaleHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgScaleMstHdrBean oScaleHeader = new HrmOrgScaleMstHdrBean(); + oScaleHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oScaleHeader.setScaleCode(oRow.get("CODE").getString()); + oScaleHeader.setDesc(oRow.get("NAME").getString()); + oScaleHeader.setScaleId(oRow.get("SCALE_ID").getString()); + oScaleHeader.setHierarchyLevel(oRow.get("HIERARCHY_LEVEL").getString()); + oScaleHeader.setParentId(oRow.get("PARENT_ID").getString()); + oScaleHeader.setRevision(oRow.get("REV_YYYYMM").getString()); + arylstHeaderList.add(oScaleHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmScaleDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSCALEMST.proc_HrScaleDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmScaleDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmScaleDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSCALEMST.proc_GetScaleDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmScaleDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgScaleMstDtlBean oScaleDetailBean = new HrmOrgScaleMstDtlBean(); + oScaleDetailBean.setDetailId(oRow.get("ID").getString()); + oScaleDetailBean.setTxtStartBasic(oRow.get("START_BASIC").getString()); + oScaleDetailBean.setTxtIncrement(oRow.get("INCREMENT_INCREMENT").getString()); + oScaleDetailBean.setTxtEndBasic(oRow.get("FINAL_BASIC").getString()); + arylstHrmScaleDetail.add(oScaleDetailBean); + } + return arylstHrmScaleDetail; + } + + public LovVO getHrmScaleMstScaleCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Scale ID"); + arylstHeaderList.add("hrm.HrmPositionMaster.scaleCode"); + arylstHeaderList.add("hrm.HrmPositionMaster.scale"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGSETUPLOV.procScaleMstScaleCodeLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmOrgScaleGradeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Scale ID"); + arylstHeaderList.add("hrm.HrmScaleMaster.grade"); + arylstHeaderList.add("hrm.HrmScaleMaster.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGSETUPLOV.procscalemstgradecodelov(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_SCALE_HDR"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgScaleMstHdrBean oHrmOrgScaleMstHdrBean = (HrmOrgScaleMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgScaleMstHdrBean.getScaleId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgScaleMstHdrBean.getRevision())); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(6, 1, 12, null)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGSCALEMST.proc_UpsertHrScaleHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmOrgScaleMstHdrBean.getScaleId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmOrgScaleMstHdrBean.getRevision())); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmOrgScaleMstHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGSCALEMST.proc_UpsertHrScaleHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgScaleMst")) + saveHrmScaleMstDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmScaleMstDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean = itrBean.next(); + if (oHrmOrgScaleMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGSCALEMST.proc_UpsertHrScaleMstDtl(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgScaleMstDtlBean.getTxtStartBasic())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgScaleMstDtlBean.getTxtIncrement())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgScaleMstDtlBean.getTxtEndBasic())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgScaleMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGSCALEMST.proc_UpsertHrScaleMstDtl(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgScaleMstDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgScaleMstDtlBean.getTxtStartBasic())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgScaleMstDtlBean.getTxtIncrement())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgScaleMstDtlBean.getTxtEndBasic())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgScaleMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGSCALEMST.proc_DeleteScaleMstDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgScaleMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgScaleMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean = itrBean1.next(); + if (!oHrmOrgScaleMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgScaleMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgScaleMstDtlBean.getTxtStartBasic())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmScaleMaster.txtStartBasic"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgScaleMstDtlBean.getTxtEndBasic())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmScaleMaster.txtEndBasic"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgScaleMstDtlBean.getTxtIncrement())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmScaleMaster.txtIncrement"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgScaleMstHdrBean oHrmOrgScaleMstHdrBean = (HrmOrgScaleMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmOrgScaleMstHdrBean)oBaseHeaderBean); + checkYearMonth((HrmOrgScaleMstHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmOrgScaleMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean = itrBean1.next(); + if (!oHrmOrgScaleMstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkZeroIncrement(arylstDetailBeanArray); + checkDtlFields(arylstDetailBeanArray); + } + if (!oHrmOrgScaleMstDtlBean.getStatus().equalsIgnoreCase("N")) + checkStartEndBasic(arylstDetailBeanArray); + } + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmOrgScaleMstHdrBean oHrmOrgScaleMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from HRM_SCALE_HDR where SCALE_ID=").concat(String.valueOf(oHrmOrgScaleMstHdrBean.getScaleId()))).concat(String.valueOf(" and REV_YYYYMM="))).concat(String.valueOf(oHrmOrgScaleMstHdrBean.getRevision())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgScaleMstHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("hrms.scale.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + public void checkYearMonth(HrmOrgScaleMstHdrBean oHrmOrgScaleMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String yymm = oHrmOrgScaleMstHdrBean.getRevision(); + ArrayList oErrorList = new ArrayList(); + if (yymm.length() != 6) { + oErrorList.add(new EnrgiseApplicationException("hrms.common.yyyymm")); + return; + } + if (yymm.substring(0, 1).equals("0")) { + oErrorList.add(new EnrgiseApplicationException("hrms.common.yyyymm")); + return; + } + int mon = Integer.parseInt(yymm.substring(4, 6)); + if (mon > 12 || mon < 1) { + oErrorList.add(new EnrgiseApplicationException("hrms.common.yyyymm")); + return; + } + reportError(oErrorList); + } + + private void checkZeroIncrement(ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator oIt = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + while (oIt.hasNext()) { + oIt.next(); + HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean = oDetailBeanArray.get(count); + int iIncrement = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtIncrement()); + if (count < n) { + count++; + if (iIncrement == 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmScaleMaster.detail.zeroIncrement", arylstParam)); + continue; + } + checkIncrement(oHrmOrgScaleMstDtlBean); + } + } + reportError(arylstList); + } + + private void checkStartEndBasic(ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator oIt = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + while (oIt.hasNext()) { + oIt.next(); + HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean = oDetailBeanArray.get(count); + int iEndBasic = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtEndBasic()); + System.out.println(iEndBasic); + if (count < n - 1) { + count++; + HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean1 = oDetailBeanArray.get(count); + int iNextStartBasic = Integer.parseInt(oHrmOrgScaleMstDtlBean1.getTxtStartBasic()); + System.out.println(iNextStartBasic); + if (iNextStartBasic != iEndBasic) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmScaleMaster.detail.checkBasic", arylstParam)); + } + } + } + reportError(arylstList); + } + + private void checkIncrement(HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int iEndBasic = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtEndBasic()); + int iStartBasic = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtStartBasic()); + int iIncrement = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtIncrement()); + int iDiff = iEndBasic - iStartBasic; + int iReminder = iDiff % iIncrement; + if (iReminder != 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmScaleMaster.detail.increment", arylstParam)); + } + reportError(arylstList); + } + + private void checkDtlFields(ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator oIt = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + while (oIt.hasNext()) { + oIt.next(); + HrmOrgScaleMstDtlBean oHrmOrgScaleMstDtlBean = oDetailBeanArray.get(count); + int iEndBasic = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtEndBasic()); + int iStartBasic = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtStartBasic()); + int iIncrement = Integer.parseInt(oHrmOrgScaleMstDtlBean.getTxtIncrement()); + System.out.println(iEndBasic); + System.out.println(iStartBasic); + System.out.println(iIncrement); + if (count < n) { + count++; + int iDiff = iEndBasic - iStartBasic; + int iDiff1 = iEndBasic - iIncrement; + int iDiff2 = iStartBasic - iIncrement; + if (iDiff < 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmScaleMaster.detail.checkEndBasic", arylstParam)); + } + if (iDiff1 < 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmScaleMaster.detail.checkIncrement", arylstParam)); + } + if (iDiff2 < 0) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmScaleMaster.detail.checkIncrement", arylstParam)); + } + } + } + reportError(arylstList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgSkillMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgSkillMstBO.java new file mode 100644 index 0000000..2cb833d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgSkillMstBO.java @@ -0,0 +1,427 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgSkillMstDtlBean; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; + +public class HrmOrgSkillMstBO extends HrmBaseBO { + public HrmOrgSkillMstBO() {} + + public HrmOrgSkillMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmSkillHdrMetaInfo(HrmOrgSkillMstQVO oHrmOrgSkillMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgSkillMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgSkillMstQVO.getSkillTypeCode())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSKILLMST.proc_HrSkillHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSkillHeaderInfo(HrmOrgSkillMstQVO oHrmOrgSkillMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgSkillMstQVO == null) + oHrmOrgSkillMstQVO = new HrmOrgSkillMstQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgSkillMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgSkillMstQVO.getSkillTypeCode())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSKILLMST.proc_GetHrSkillHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgSkillMstHdrBean oSkillHeader = new HrmOrgSkillMstHdrBean(); + oSkillHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oSkillHeader.setSkillTypeCode(oRow.get("CODE").getString()); + oSkillHeader.setSkillTypeName(oRow.get("NAME").getString()); + arylstHeaderList.add(oSkillHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmSkillDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSKILLMST.proc_HrSkillDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSkillDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmSkillDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSKILLMST.proc_GetHrSkillDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmSkillDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgSkillMstDtlBean oSkillDetailBean = new HrmOrgSkillMstDtlBean(); + oSkillDetailBean.setDetailId(oRow.get("ID").getString()); + oSkillDetailBean.setTxtSkillCode(oRow.get("CODE").getString()); + oSkillDetailBean.setTxtSkillName(oRow.get("NAME").getString()); + oSkillDetailBean.setTxtHourlyRate(oRow.get("HOURLY_RATE").getString()); + oSkillDetailBean.setTxtOtRate(oRow.get("OT_RATE").getString()); + arylstHrmSkillDetail.add(oSkillDetailBean); + } + return arylstHrmSkillDetail; + } + + public LovVO getHrmSkillCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmSkillMaster.skillTypeCode"); + arylstHeaderList.add("hrm.HrmSkillMaster.skillTypeName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetSkillCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "GEN_SKILL_TYPE_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgSkillMstHdrBean oHrmOrgSkillMstHdrBean = (HrmOrgSkillMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgSkillMstHdrBean.getSkillTypeCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgSkillMstHdrBean.getSkillTypeName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, null)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSKILLMST.proc_UpsertHrSkillHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgSkillMstHdrBean.getSkillTypeCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgSkillMstHdrBean.getSkillTypeName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgSkillMstHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSKILLMST.proc_UpsertHrSkillHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgSkillMst")) + saveHrmSkillDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmSkillDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgSkillMstDtlBean oHrmOrgSkillMstDtlBean = itrBean.next(); + System.out.println(oHrmOrgSkillMstDtlBean.getStatus()); + if (oHrmOrgSkillMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGSKILLMST.proc_UpsertHrSkillDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgSkillMstDtlBean.getTxtSkillCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgSkillMstDtlBean.getTxtSkillName())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgSkillMstDtlBean.getTxtHourlyRate())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmOrgSkillMstDtlBean.getTxtOtRate())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgSkillMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGSKILLMST.proc_UpsertHrSkillDtl(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgSkillMstDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgSkillMstDtlBean.getTxtSkillCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgSkillMstDtlBean.getTxtSkillName())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgSkillMstDtlBean.getTxtHourlyRate())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmOrgSkillMstDtlBean.getTxtOtRate())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgSkillMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGSKILLMST.proc_DeleteSkillMstCalDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgSkillMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgSkillMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgSkillMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgSkillMstDtlBean oHrmOrgSkillMstDtlBean = itrBean1.next(); + if (!oHrmOrgSkillMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgSkillMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgSkillMstDtlBean oHrmOrgSkillMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgSkillMstDtlBean.getTxtSkillCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSkillMaster.txtSkillCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgSkillMstDtlBean.getTxtSkillName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSkillMaster.txtSkillName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgSkillMstHdrBean oHrmOrgSkillMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgSkillMstHdrBean.getSkillTypeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSkillMaster.skillTypeCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgSkillMstHdrBean.getSkillTypeName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSkillMaster.skillTypeName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgSkillMstHdrBean oHrmOrgSkillMstHdrBean = (HrmOrgSkillMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmOrgSkillMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmOrgSkillMst")) { + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtSkillCode", "hrm.HrmSkillMaster.txtSkillCode", arylstErrorList, true); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtSkillName", "hrm.HrmSkillMaster.txtSkillName", arylstErrorList, true); + } + reportError(arylstErrorList); + } + + public void checkRefferenceKey(String sSkillHeaderId) throws EnrgiseApplicationException, EnrgiseSystemException { + System.out.println("To be added"); + } + + private void checkUniqueHeader(HrmOrgSkillMstHdrBean oHrmOrgSkillMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from GEN_SKILL_TYPE_MST where CODE='").concat(String.valueOf(oHrmOrgSkillMstHdrBean.getSkillTypeCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgSkillMstHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgTehMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgTehMstBO.java new file mode 100644 index 0000000..3142912 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgTehMstBO.java @@ -0,0 +1,214 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgTehsilMstDtlBean; + +public class HrmOrgTehMstBO extends HrmBaseBO { + public HrmOrgTehMstBO() {} + + public HrmOrgTehMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTehsilDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -5)); + arylstParameters.add(new DBObject(2, 2, 93)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGTEHSILMST.proc_HrTehsilDtlCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTehsilDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTehsilDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGTEHSILMST.proc_GetTehsilDtl(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmTehsilDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgTehsilMstDtlBean oTehsilBean = new HrmOrgTehsilMstDtlBean(); + oTehsilBean.setDetailId(oRow.get("ID").getString()); + oTehsilBean.setTxtTehsilCode(oRow.get("CODE").getString()); + oTehsilBean.setTxtTehsilName(oRow.get("DESCRIPTION").getString()); + arylstHrmTehsilDetail.add(oTehsilBean); + } + return arylstHrmTehsilDetail; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "true"; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TEHSIL_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgTehMst")) + saveHrmTehsilDetail(arylstDetailBeanArray); + } + + private void saveHrmTehsilDetail(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmOrgTehsilMstDtlBean oHrmOrgTehMstDtlBean = itrBean.next(); + if (oHrmOrgTehMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGTEHSILMST.proc_UpsertHrTehsilMst(?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgTehMstDtlBean.getTxtTehsilCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgTehMstDtlBean.getTxtTehsilName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, null)); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgTehMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMORGTEHSILMST.proc_UpsertHrTehsilMst(?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgTehMstDtlBean.getTxtTehsilCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgTehMstDtlBean.getTxtTehsilName())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgTehMstDtlBean.getDetailId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmOrgTehMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMORGTEHSILMST.proc_DeleteTehMst(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgTehMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgTehMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmOrgTehsilMstDtlBean oHrmOrgTehMstDtlBean = itrBean1.next(); + if (!oHrmOrgTehMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmOrgTehMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmOrgTehsilMstDtlBean oHrmOrgTehMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmOrgTehMstDtlBean.getTxtTehsilCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTehsilMaster.txtCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgTehMstDtlBean.getTxtTehsilName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTehsilMaster.txtDescription"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmOrgTehMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmOrgTehsilMstDtlBean oHrmOrgTehMstDtlBean = itrBean1.next(); + if (!oHrmOrgTehMstDtlBean.getStatus().equalsIgnoreCase("D")) + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtTehsilCode", "hrm.HrmTehsilMaster.txtCode", arylstErrorList, true); + } + } + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgWorkGroupMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgWorkGroupMstBO.java new file mode 100644 index 0000000..6a64668 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmOrgWorkGroupMstBO.java @@ -0,0 +1,585 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; + +public class HrmOrgWorkGroupMstBO extends HrmBaseBO { + public HrmOrgWorkGroupMstBO() {} + + public HrmOrgWorkGroupMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmOrgWorkGroupMstHeaderMetaInfo(HrmOrgWorkGroupMstQVO oHrmOrgWorkGroupMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmOrgWorkGroupMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgWorkGroupMstQVO.getCode())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGWORKGROUPMST.proc_HrWorkGroupHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmOrgWorkGroupMstHeader(HrmOrgWorkGroupMstQVO oHrmOrgWorkGroupMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmOrgWorkGroupMstQVO == null) + oHrmOrgWorkGroupMstQVO = new HrmOrgWorkGroupMstQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgWorkGroupMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgWorkGroupMstQVO.getCode())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGWORKGROUPMST.proc_GetHrWorkGroupMstHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdr = new HrmOrgWorkGroupMstHdrBean(); + oHrmOrgWorkGroupMstHdr.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmOrgWorkGroupMstHdr.setBudgetCode(oRow.get("BUDGET_CODE").getString()); + oHrmOrgWorkGroupMstHdr.setBudgetId(oRow.get("PROFIT_CENTRE_ID").getString()); + oHrmOrgWorkGroupMstHdr.setWorkGroupCodeId(oRow.get("ID").getString()); + oHrmOrgWorkGroupMstHdr.setCode(oRow.get("CODE").getString()); + oHrmOrgWorkGroupMstHdr.setContactAddress(oRow.get("CONTACT_ADDR").getString()); + oHrmOrgWorkGroupMstHdr.setContactEmployeeNo(oRow.get("CONTACT_PERSON_NAME").getString()); + oHrmOrgWorkGroupMstHdr.setContactEmployeeId(oRow.get("CONTACT_PERSON_ID").getString()); + oHrmOrgWorkGroupMstHdr.setCostId(oRow.get("COST_ID").getString()); + oHrmOrgWorkGroupMstHdr.setCostCentre(oRow.get("COST_DESC").getString()); + oHrmOrgWorkGroupMstHdr.setCreationDate(EnrgiseUtil.convertToString(oRow.get("CREATION_DATE").getDate())); + oHrmOrgWorkGroupMstHdr.setDeptFlag(oRow.get("DEPT_WG_FLAG").getString()); + oHrmOrgWorkGroupMstHdr.setDocumentDate(EnrgiseUtil.convertToString(oRow.get("DOCUMENT_DATE").getDate())); + oHrmOrgWorkGroupMstHdr.setEMail(oRow.get("EMAIL").getString()); + oHrmOrgWorkGroupMstHdr.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHrmOrgWorkGroupMstHdr.setFax(oRow.get("FAX").getString()); + oHrmOrgWorkGroupMstHdr.setHierarchyLevel(oRow.get("HEIRARCHY_LEVEL").getString()); + oHrmOrgWorkGroupMstHdr.setName(oRow.get("NAME").getString()); + oHrmOrgWorkGroupMstHdr.setSiteId(oRow.get("SITE_ID").getString()); + oHrmOrgWorkGroupMstHdr.setOwingSite(oRow.get("SITENAME").getString()); + oHrmOrgWorkGroupMstHdr.setParentGroupCode(oRow.get("PARENTWRKGRPNAME").getString()); + oHrmOrgWorkGroupMstHdr.setParentGroupCodeId(oRow.get("PARENT_WRKGRP_ID").getString()); + oHrmOrgWorkGroupMstHdr.setPhone(oRow.get("PHONE").getString()); + oHrmOrgWorkGroupMstHdr.setRefDocNo(oRow.get("DOCUMENT_REF_NO").getString()); + oHrmOrgWorkGroupMstHdr.setSpecialRemarks(oRow.get("SPECIAL_REMARKS").getString()); + oHrmOrgWorkGroupMstHdr.setTemporaryFlag(oRow.get("TEMPORARY_FLAG").getString()); + arylstHeaderList.add(oHrmOrgWorkGroupMstHdr); + } + return arylstHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "GEN_WRKGRP_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean = (HrmOrgWorkGroupMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgWorkGroupMstHdrBean.getCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgWorkGroupMstHdrBean.getName())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgWorkGroupMstHdrBean.getDeptFlag())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgWorkGroupMstHdrBean.getContactEmployeeId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgWorkGroupMstHdrBean.getContactAddress())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmOrgWorkGroupMstHdrBean.getFax())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmOrgWorkGroupMstHdrBean.getPhone())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmOrgWorkGroupMstHdrBean.getEMail())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmOrgWorkGroupMstHdrBean.getHierarchyLevel())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmOrgWorkGroupMstHdrBean.getTemporaryFlag())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmOrgWorkGroupMstHdrBean.getRefDocNo())); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgWorkGroupMstHdrBean.getDocumentDate()))); + arylstParameters.add(new DBObject(14, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgWorkGroupMstHdrBean.getCreationDate()))); + arylstParameters.add(new DBObject(15, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgWorkGroupMstHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(16, 1, 12, oHrmOrgWorkGroupMstHdrBean.getSpecialRemarks())); + arylstParameters.add(new DBObject(17, 1, 12, oHrmOrgWorkGroupMstHdrBean.getProfitCentreId())); + arylstParameters.add(new DBObject(18, 1, 12, oHrmOrgWorkGroupMstHdrBean.getCostId())); + arylstParameters.add(new DBObject(19, 1, 12, oHrmOrgWorkGroupMstHdrBean.getSiteId())); + arylstParameters.add(new DBObject(20, 1, 12, oHrmOrgWorkGroupMstHdrBean.getParentGroupCodeId())); + arylstParameters.add(new DBObject(21, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(22, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(23, 1, 12, null)); + arylstParameters.add(new DBObject(24, 2, 12)); + arylstParameters.add(new DBObject(25, 2, 12)); + arylstParameters.add(new DBObject(26, 2, 12)); + arylstParameters.add(new DBObject(27, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGWORKGROUPMST.proc_UpsertHrWorkGroupMst(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmOrgWorkGroupMstHdrBean.getCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmOrgWorkGroupMstHdrBean.getName())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmOrgWorkGroupMstHdrBean.getDeptFlag())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmOrgWorkGroupMstHdrBean.getContactEmployeeId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmOrgWorkGroupMstHdrBean.getContactAddress())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmOrgWorkGroupMstHdrBean.getFax())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmOrgWorkGroupMstHdrBean.getPhone())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmOrgWorkGroupMstHdrBean.getEMail())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmOrgWorkGroupMstHdrBean.getHierarchyLevel())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmOrgWorkGroupMstHdrBean.getTemporaryFlag())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmOrgWorkGroupMstHdrBean.getRefDocNo())); + arylstParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgWorkGroupMstHdrBean.getDocumentDate()))); + arylstParameters.add(new DBObject(14, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgWorkGroupMstHdrBean.getCreationDate()))); + arylstParameters.add(new DBObject(15, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmOrgWorkGroupMstHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(16, 1, 12, oHrmOrgWorkGroupMstHdrBean.getSpecialRemarks())); + arylstParameters.add(new DBObject(17, 1, 12, oHrmOrgWorkGroupMstHdrBean.getProfitCentreId())); + arylstParameters.add(new DBObject(18, 1, 12, oHrmOrgWorkGroupMstHdrBean.getCostId())); + arylstParameters.add(new DBObject(19, 1, 12, oHrmOrgWorkGroupMstHdrBean.getSiteId())); + arylstParameters.add(new DBObject(20, 1, 12, oHrmOrgWorkGroupMstHdrBean.getParentGroupCodeId())); + arylstParameters.add(new DBObject(21, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(22, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(23, 1, 12, oHrmOrgWorkGroupMstHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(24, 2, 12)); + arylstParameters.add(new DBObject(25, 2, 12)); + arylstParameters.add(new DBObject(26, 2, 12)); + arylstParameters.add(new DBObject(27, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGWORKGROUPMST.proc_UpsertHrWorkGroupMst(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + System.out.println("Save Ille!"); + } + + public LovVO getHrmWorkGroupCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetWorkGroupCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetSiteCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmCostCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetCostCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmBudgetCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetBudgetCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmWorkParentCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + arylstHeaderList.add("hrm.HrmWorkGroup.hierarchyLevel"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getProperty("hierarchyLevel") != null) + sQuerySearch1 = oLovQueryVO.getProperty("hierarchyLevel"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetWorkParentCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HEIRARCHY_LEVEL").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmWorkEmpNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmWorkGroup.code"); + arylstHeaderList.add("hrm.HrmWorkGroup.name"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMORGSETUPLOV.proc_GetWorkEmpCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmOrgWorkGroupMstHdrBean)oBaseHeaderBean); + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmOrgWorkGroupMstHdrBean.getCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmWorkGroup.code"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgWorkGroupMstHdrBean.getName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmWorkGroup.name"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgWorkGroupMstHdrBean.getDeptFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmWorkGroup.deptFlag"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmOrgWorkGroupMstHdrBean.getTemporaryFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmWorkGroup.temporaryFlag"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean = (HrmOrgWorkGroupMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmOrgWorkGroupMstHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmOrgWorkGroupMstHdrBean)oBaseHeaderBean, arylstErrorList); + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from GEN_WRKGRP_MST where CODE='").concat(String.valueOf(oHrmOrgWorkGroupMstHdrBean.getCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmOrgWorkGroupMstHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + private void checkDatesConstraint(HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmOrgWorkGroupMstHdrBean.getEndDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmOrgWorkGroupMstHdrBean.getEndDate(), oHrmOrgWorkGroupMstHdrBean.getCreationDate()); + if (dateFlag == -1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.workGroup.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmOrgWorkGroupMstHdrBean.getCreationDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmOrgWorkGroupMstHdrBean.getCreationDate()); + if (dateFlag1 == -1 && dateFlag1 != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.workGroup.dateConstraintViolated1")); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmCriteriaBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmCriteriaBO.java new file mode 100644 index 0000000..2d584a2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmCriteriaBO.java @@ -0,0 +1,595 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmCriteriaDtlBean; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; + +public class HrmPrmCriteriaBO extends HrmBaseBO { + public HrmPrmCriteriaBO() {} + + public HrmPrmCriteriaBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngEmpAttHdrMetaInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String sId = oHrmTrngEmpAttQueryVO.getCourseNameId(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sId)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_HrEmpTrngAttHdrCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngEmpAttHeaderInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngEmpAttQueryVO == null) + oHrmTrngEmpAttQueryVO = new HrmTrngEmpAttQVO(); + String sId = oHrmTrngEmpAttQueryVO.getCourseNameId(); + String sPK = oHrmTrngEmpAttQueryVO.getHeaderPrimaryKey(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, sId)); + oParameters.add(new DBObject(4, 1, 12, sPK)); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_HrEmpTrngAttHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpAttHdrBean oHrmTrngEmpAttHdrBean = new HrmTrngEmpAttHdrBean(); + oHrmTrngEmpAttHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmTrngEmpAttHdrBean.setCourseName(oRow.get("CRS_NAME").getString()); + oHrmTrngEmpAttHdrBean.setInstitutionName(oRow.get("INST_NAME").getString()); + oHrmTrngEmpAttHdrBean.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmTrngEmpAttHdrBean.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHeaderList.add(oHrmTrngEmpAttHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmPrmCriteriaDetailMetaInfo(BaseQueryVO oBaseQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HrmPrmCriteriaQVO oQVO = (HrmPrmCriteriaQVO)oBaseQVO; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oQVO.getToGradeId())); + oParameters.add(new DBObject(3, 1, 12, oQVO.getFromDesigId())); + oParameters.add(new DBObject(4, 1, 12, oQVO.getToDesigId())); + oParameters.add(new DBObject(5, 2, -5)); + oParameters.add(new DBObject(6, 2, 93)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_PrmCriteriaDtlCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmPrmCriteriaDetailInfo(BaseQueryVO oBaseQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + HrmPrmCriteriaQVO oQVO = (HrmPrmCriteriaQVO)oBaseQVO; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oQVO.getToGradeId())); + oParameters.add(new DBObject(5, 1, 12, oQVO.getFromDesigId())); + oParameters.add(new DBObject(6, 1, 12, oQVO.getToDesigId())); + oParameters.add(new DBObject(7, 2, -10)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_PrmCriteriaDtl(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmCriteriaDtlBean oDtlBean = new HrmPrmCriteriaDtlBean(); + oDtlBean.setDetailId(oRow.get("ID").getString()); + oDtlBean.setTxtDescription(oRow.get("description").getString()); + oDtlBean.setTxtCriteriaStartDate(EnrgiseUtil.convertToString(oRow.get("criteria_fr_dt").getDate())); + oDtlBean.setDisabbutCriteriaEndDate("true"); + oDtlBean.setDisabbutCriteriaStartDate("true"); + oDtlBean.setTxtCriteriaEndDate(EnrgiseUtil.convertToString(oRow.get("criteria_to_dt").getDate())); + oDtlBean.setTxtMinServicePeriod(oRow.get("min_service_period").getString()); + oDtlBean.setTxtReqYears(oRow.get("years_in_current_post").getString()); + oDtlBean.setTxtYearAPAR(oRow.get("no_of_years_apar").getString()); + arylstDetail.add(oDtlBean); + } + return arylstDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRNG_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHdrBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + HrmPrmCriteriaHdrBean oHdrBean = (HrmPrmCriteriaHdrBean)oBaseHdrBean; + while (oIt.hasNext()) { + HrmPrmCriteriaDtlBean oDtlBean = oIt.next(); + if (oDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMCRITERIA.proc_UpsertPrmCriteriaDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHdrBean.getToGradeId())); + oParameters.add(new DBObject(4, 1, 12, oHdrBean.getFromDesigId())); + oParameters.add(new DBObject(5, 1, 12, oHdrBean.getToDesigId())); + oParameters.add(new DBObject(6, 1, 12, oDtlBean.getTxtDescription())); + oParameters.add(new DBObject(7, 1, 12, oDtlBean.getTxtCriteriaStartDate())); + oParameters.add(new DBObject(8, 1, 12, oDtlBean.getTxtCriteriaEndDate())); + oParameters.add(new DBObject(9, 1, 12, oDtlBean.getTxtMinServicePeriod())); + oParameters.add(new DBObject(10, 1, 12, oDtlBean.getTxtReqYears())); + oParameters.add(new DBObject(11, 1, 12, oDtlBean.getTxtYearAPAR())); + oParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(14, 1, 12, null)); + oBean.addToBatch(oParameters); + } + if (oDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMCRITERIA.proc_UpsertPrmCriteriaDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHdrBean.getToGradeId())); + oParameters.add(new DBObject(4, 1, 12, oHdrBean.getFromDesigId())); + oParameters.add(new DBObject(5, 1, 12, oHdrBean.getToDesigId())); + oParameters.add(new DBObject(6, 1, 12, oDtlBean.getTxtDescription())); + oParameters.add(new DBObject(7, 1, 12, oDtlBean.getTxtCriteriaStartDate())); + oParameters.add(new DBObject(8, 1, 12, oDtlBean.getTxtCriteriaEndDate())); + oParameters.add(new DBObject(9, 1, 12, oDtlBean.getTxtMinServicePeriod())); + oParameters.add(new DBObject(10, 1, 12, oDtlBean.getTxtReqYears())); + oParameters.add(new DBObject(11, 1, 12, oDtlBean.getTxtYearAPAR())); + oParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(14, 1, 12, oDtlBean.getDetailId())); + oBean.addToBatch(oParameters); + } + if (oDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMCRITERIA.proc_DeletePrmCriteriaDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oDtlBean.getDetailId())); + oBean.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp param2, String param3, String param4, boolean param5, ArrayList oDtlBeanArray, boolean param7, Timestamp param8) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstErrorList = new ArrayList(); + int iCount = 0; + checkMandatoryHeader((HrmPrmCriteriaHdrBean)oBaseHeaderBean, arylstErrorList); + Iterator itrDtlBean = oDtlBeanArray.iterator(); + while (itrDtlBean.hasNext()) { + iCount++; + HrmPrmCriteriaDtlBean oDtlBean = itrDtlBean.next(); + if (!oDtlBean.getStatus().equals("D")) { + if (!EnrgiseUtil.checkString(oDtlBean.getTxtCriteriaStartDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtCriteriaStartDate"); + ArrayList arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oDtlBean.getTxtReqYears())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtReqYears"); + ArrayList arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oDtlBean.getTxtYearAPAR())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtYearAPAR"); + ArrayList arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oDtlBean.getTxtDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtDescription"); + ArrayList arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", arylstParams, "E")); + } + } + } + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmPrmCriteriaHdrBean oHdrBean, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHdrBean.getFromGradeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.fromGradeCode"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHdrBean.getToGradeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.toGradeCode"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList oDtlBeanArray, boolean param7, Timestamp param8) throws EnrgiseApplicationException, EnrgiseSystemException { + int iCount = 0; + Iterator itrDtlBean = oDtlBeanArray.iterator(); + ArrayList arylstErrorList = new ArrayList(); + String sPrevStartDt = null; + String sPrevEndDt = null; + while (itrDtlBean.hasNext()) { + iCount++; + HrmPrmCriteriaDtlBean oDtlBean = itrDtlBean.next(); + if (!oDtlBean.getStatus().equals("D")) { + if (EnrgiseUtil.checkString(oDtlBean.getTxtCriteriaEndDate())) + if (EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), oDtlBean.getTxtCriteriaEndDate(), oDtlBean.getTxtCriteriaStartDate()) < 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtCriteriaStartDate"); + ArrayList arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtCriteriaEndDate"); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmPrmCriteria.error.dateRangeInvalid", arylstParams, "E")); + } + if (iCount > 1) + if (EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), oDtlBean.getTxtCriteriaStartDate(), sPrevStartDt) < 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtCriteriaStartDate"); + ArrayList arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount)); + oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtCriteriaStartDate"); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount - 1)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmPrmCriteria.error.dateOverlapping", arylstParams, "E")); + } + if (EnrgiseUtil.checkString(sPrevEndDt)) + if (EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), oDtlBean.getTxtCriteriaStartDate(), sPrevEndDt) < 0) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtCriteriaStartDate"); + ArrayList arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount)); + oMessageKey = new MessageKey("hrm.HrmPrmCriteria.txtCriteriaEndDate"); + arylstParams.add(oMessageKey); + arylstParams.add(new Integer(iCount - 1)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmPrmCriteria.error.dateOverlapping", arylstParams, "E")); + } + } + sPrevStartDt = oDtlBean.getTxtCriteriaStartDate(); + sPrevEndDt = oDtlBean.getTxtCriteriaEndDate(); + } + if (arylstErrorList.size() != 0) + reportError(arylstErrorList); + } + + public LovVO getPostLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + ArrayList arylstOutArray; + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.id"); + oHeaderList.add("hrm.HrmPrmCriteria.code"); + oHeaderList.add("hrm.HrmPrmCriteria.description"); + oHeaderList.add("hrm.HrmPrmCriteria.hierarchy"); + oHeaderList.add("hrm.HrmPrmCriteria.designation"); + oHeaderList.add("hrm.HrmPrmCriteria.scale"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sHierarchy = null; + if (oLovQueryVO.getProperty("hierarchy") != null) + sHierarchy = oLovQueryVO.getProperty("hierarchy").trim(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, sHierarchy)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + String sDirection = oLovQueryVO.getProperty("direction"); + if (sDirection.equalsIgnoreCase("to")) { + arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMCRITERIA.proc_GetToPostLOV(?,?,?,?,?,?,?)"); + } else { + arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMCRITERIA.proc_GetFromPostLOV(?,?,?,?,?,?,?)"); + } + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("description").getString()); + oLOVBean.setDetailField4(oRow.get("hierarchy").getString()); + oLOVBean.setDetailField5(oRow.get("Designation").getString()); + oLOVBean.setDetailField6(oRow.get("Scale").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getPromKPARatingFromGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name,hcd.HIERARCHY_LEVEL as gradeSeq from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='20' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.gradeCode"); + oHeaderList.add("hrm.HrmPrmOrder.gradeName"); + oHeaderList.add("gradeSeq"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oLOVBean.setDetailField4(oRow.get("gradeSeq").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPromKPARatingFromDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name,hcd.HIERARCHY_LEVEL as desigSeq from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='10' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("desigId"); + oHeaderList.add("hrm.HrmPrmOrder.desigCode"); + oHeaderList.add("hrm.HrmPrmOrder.desigName"); + oHeaderList.add("desigSeq"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oLOVBean.setDetailField4(oRow.get("desigSeq").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPromKPARatingToGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='20' and hcd.HIERARCHY_LEVEL < '"))).concat(String.valueOf(oLovQueryVO.getProperty("gradeSeq")))).concat(String.valueOf("' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.gradeCode"); + oHeaderList.add("hrm.HrmPrmOrder.gradeName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPromKPARatingToDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name,hcd.HIERARCHY_LEVEL as desigSeq from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='10' and hcd.HIERARCHY_LEVEL < '"))).concat(String.valueOf(oLovQueryVO.getProperty("desigSeq")))).concat(String.valueOf("' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("desigId"); + oHeaderList.add("hrm.HrmPrmOrder.desigCode"); + oHeaderList.add("hrm.HrmPrmOrder.desigName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmExperienceScoreBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmExperienceScoreBO.java new file mode 100644 index 0000000..46b30b7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmExperienceScoreBO.java @@ -0,0 +1,573 @@ +package wenrgise.hrms.ejb.business; + +import java.lang.reflect.Array; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmExperienceDtlBean; +import wenrgise.hrms.bean.HrmPrmExperienceHdrBean; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; + +public class HrmPrmExperienceScoreBO extends HrmBaseBO { + public HrmPrmExperienceScoreBO() {} + + public HrmPrmExperienceScoreBO(UserInfo oUserinfo) { + super(oUserinfo); + } + + public RecordMetaInfo getHrmPrmESDtlMetaInfo(HrmPrmExperienceScoreQVO oHrmPrmExperienceScoreQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmExperienceScoreQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmExperienceScoreQVO.getDesignationId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMMONEXP.proc_GetHrmPrmMonExpCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmPrmESDtlInfo(HrmPrmExperienceScoreQVO oHrmPrmExperienceScoreQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmPosKPAPtsDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmExperienceScoreQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmExperienceScoreQVO.getDesignationId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMMONEXP.proc_GetHrmPrmMonExpDtls(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmPosKPAPtsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean = new HrmPrmExperienceDtlBean(); + oHrmPrmExperienceDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmPrmExperienceDtlBean.setStartField(oRow.get("MIN_EXPERIENCE").getString()); + oHrmPrmExperienceDtlBean.setEndField(oRow.get("MAX_EXPERIENCE").getString()); + oHrmPrmExperienceDtlBean.setTxtAccBasis(oRow.get("FLAT_MONTH_FLAG").getString()); + oHrmPrmExperienceDtlBean.setTxtMonthsExp(oRow.get("MONTHS_EXPERIENCE").getString()); + oHrmPrmExperienceDtlBean.setTxtPointsAwarded(oRow.get("POINTS_ACCUMULATED").getString()); + oHrmPosKPAPtsDetail.add(oHrmPrmExperienceDtlBean); + } + return oHrmPosKPAPtsDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_POS_MTH_EXP_DTL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmPrmExperienceScore")) + saveHrmESDtl(oBaseHeaderBean, oDetailBeanArray); + } + + private void saveHrmESDtl(BaseHeaderBean oBaseHeaderBean, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + HrmPrmExperienceHdrBean oHrmPrmExperienceHdrBean = (HrmPrmExperienceHdrBean)oBaseHeaderBean; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean = oIt.next(); + if (oHrmPrmExperienceDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMMONEXP.proc_UpsertHrmPrmMonExpDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmExperienceDtlBean.getStartField())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmExperienceDtlBean.getEndField())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmExperienceDtlBean.getTxtAccBasis())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmExperienceDtlBean.getTxtPointsAwarded())); + oParameters.add(new DBObject(7, 1, 12, oHrmPrmExperienceDtlBean.getTxtMonthsExp())); + oParameters.add(new DBObject(8, 1, 12, oHrmPrmExperienceHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(9, 1, 12, oHrmPrmExperienceHdrBean.getDesignationId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmExperienceDtlBean.getStatus().equals("U")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMMONEXP.proc_UpsertHrmPrmMonExpDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmExperienceDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmExperienceDtlBean.getStartField())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmExperienceDtlBean.getEndField())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmExperienceDtlBean.getTxtAccBasis())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmExperienceDtlBean.getTxtPointsAwarded())); + oParameters.add(new DBObject(7, 1, 12, oHrmPrmExperienceDtlBean.getTxtMonthsExp())); + oParameters.add(new DBObject(8, 1, 12, oHrmPrmExperienceHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(9, 1, 12, oHrmPrmExperienceHdrBean.getDesignationId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmExperienceDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMPRMMONEXP.proc_DeleteHrmPrmMonExpDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmExperienceDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmPrmExperienceScore")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean = oIt1.next(); + if (!oHrmPrmExperienceDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryDtls(oHrmPrmExperienceDtlBean, rowCount); + checkforNumericfields(oHrmPrmExperienceDtlBean, rowCount); + rowCount++; + } + } + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + return null; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged); + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmPrmExperienceScore")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + exclusiveItemMatGrp(oDetailBeanArray, oErrorList); + checkPointOrder(oDetailBeanArray, oErrorList); + int rowcount = 1; + while (oIt1.hasNext()) { + HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean = oIt1.next(); + if (!oHrmPrmExperienceDtlBean.getStatus().equalsIgnoreCase("D")) { + if (EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getTxtMonthsExp())) + checkMonExp(oHrmPrmExperienceDtlBean, rowcount); + checkScoreValue(oHrmPrmExperienceDtlBean, rowcount); + } + rowcount++; + } + } + reportError(oErrorList); + } + } + + public LovVO getClassDataLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String code = oLovQueryVO.getProperty("code"); + String sQuery = "Select clsd.ID, clsd.NAME from HRM_CLASS_DTL clsd, HRM_CLASS_MST clsm where clsd.CLS_MST_ID = clsm.ID and clsm.CODE ="; + sQuery = String.valueOf(sQuery).concat(String.valueOf(code)); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" And upper(clsd.NAME) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getRefNoLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "select distinct advh.id,advh.ref_no from hrm_advt_hdr advh where 1=1"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(advh.ref_no) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.referenceNo"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("ref_no").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPositionCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "SELECT A.ID, A.DESCRIPTION, B.ID as desigid, B.name as PositionDesc FROM HRM_POS_INF_HDR A, HRM_CLASS_DTL B WHERE A.DESIGNATION_ID=B.ID(+)"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(DESCRIPTION) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.forPosition"); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("desigid").getString()); + oLOVBean.setDetailField4(oRow.get("PositionDesc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkMandatoryHeader(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkMandatoryDtls(HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getTxtAccBasis())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtAccBasis"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getStartField())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtMinExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getEndField())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtMaxExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getTxtMonthsExp()) && oHrmPrmExperienceDtlBean.getTxtAccBasis().equalsIgnoreCase("M")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtMonthsExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getTxtPointsAwarded())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtPointsAwarded"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void exclusiveItemMatGrp(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String[] sArgs = (String[])Array.newInstance(Class.forName("java.lang.String"), 2); + sArgs[0] = "startField"; + sArgs[1] = "endField"; + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, sArgs, "hrm.HrmExperienceScore.detail.exclusive", oErrorList); + } + + private void checkMonExp(HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + if (Double.parseDouble(oHrmPrmExperienceDtlBean.getEndField()) < Double.parseDouble(oHrmPrmExperienceDtlBean.getTxtMonthsExp()) || Double.parseDouble(oHrmPrmExperienceDtlBean.getStartField()) > Double.parseDouble(oHrmPrmExperienceDtlBean.getTxtMonthsExp())) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.HrmExperienceScore.errorinmonths", oParam, "E"); + } + } + + public LovVO getESPositionCodeLOVQuery(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "Select distinct a.ID, a.CODE, a.Description, b.NAME as designation, c.NAME as scale From HRM_POS_INF_HDR a, HRM_CLASS_DTL b, HRM_CLASS_DTL c, HRM_POS_MTH_EXP_DTL d "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" WHERE a.DESIGNATION_ID = b.ID(+) and a.SCALE_ID = c.id(+) And d.POS_INF_HDr_ID = a.ID ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(a.CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(a.Description) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestScore.positionCode"); + oHeaderList.add("hrm.HrmTestScore.desc"); + oHeaderList.add("hrm.HrmTestScore.designation"); + oHeaderList.add("hrm.HrmTestScore.scale"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("Description").getString()); + oLOVBean.setDetailField4(oRow.get("designation").getString()); + oLOVBean.setDetailField5(oRow.get("scale").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getESPositionCodeLOVNew(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "Select distinct posHdr.ID,posHdr.CODE, posHdr.Description,desigDtl.NAME as designation,scaleDtl.NAME as scale from HRM_POS_INF_HDR posHdr, HRM_CLASS_DTL desigDtl, HRM_CLASS_DTL scaleDtl "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" WHERE posHdr.DESIGNATION_ID = desigDtl.ID(+) and posHdr.scale_id = scaleDtl.id(+) and posHdr.id not in(select distinct pos_inf_hdr_id from HRM_POS_MTH_EXP_DTL) ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(a.CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(a.Description) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmExperienceScore.positionCode"); + oHeaderList.add("hrm.HrmExperienceScore.desc"); + oHeaderList.add("hrm.HrmExperienceScore.designation"); + oHeaderList.add("hrm.HrmExperienceScore.scale"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("Description").getString()); + oLOVBean.setDetailField4(oRow.get("designation").getString()); + oLOVBean.setDetailField5(oRow.get("scale").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkforNumericfields(HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oHrmPrmExperienceDtlBean.getStartField(), 3, 0, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtMinExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmExperienceDtlBean.getEndField(), 3, 0, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtMaxExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmExperienceDtlBean.getTxtMonthsExp(), 3, 0, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtMonthsExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmExperienceDtlBean.getTxtPointsAwarded(), 3, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtPointsAwarded"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.detail.nonnumeric", oParam)); + } + reportError(oErrList); + } + + private void checkScoreValue(HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getStartField()) && EnrgiseUtil.checkString(oHrmPrmExperienceDtlBean.getEndField())) + if (Double.parseDouble(oHrmPrmExperienceDtlBean.getStartField()) >= Double.parseDouble(oHrmPrmExperienceDtlBean.getEndField())) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.HrmExperienceScore.errorinscore", oParam, "E"); + } + reportError(oErrList); + } + + private void checkPointOrder(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt = oDetailBeanArray.iterator(); + int i = 1; + while (oIt.hasNext()) { + int rowCount = 1; + HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean = oIt.next(); + if (i != 1) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmExperienceDtlBean oHrmPrmExperienceDtlBean1 = oIt1.next(); + if (Double.parseDouble(oHrmPrmExperienceDtlBean.getStartField()) > Double.parseDouble(oHrmPrmExperienceDtlBean1.getStartField()) && Double.parseDouble(oHrmPrmExperienceDtlBean.getTxtPointsAwarded()) < Double.parseDouble(oHrmPrmExperienceDtlBean1.getTxtPointsAwarded())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmExperienceScore.txtPointsAwarded"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(i)); + throw new EnrgiseApplicationException("hrm.HrmExperienceScore.errorinPoints", oParam, "E"); + } + rowCount++; + } + } + i++; + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmGenAssBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmGenAssBO.java new file mode 100644 index 0000000..540364f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmGenAssBO.java @@ -0,0 +1,733 @@ +package wenrgise.hrms.ejb.business; + +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 wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmCriteriaDtlBean; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.bean.HrmPrmExperienceDtlBean; +import wenrgise.hrms.bean.HrmPrmGenAssDtlBean; +import wenrgise.hrms.bean.HrmPrmGenAssHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; + +public class HrmPrmGenAssBO extends HrmBaseBO { + public HrmPrmGenAssBO() {} + + public HrmPrmGenAssBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngEmpAttHdrMetaInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String sId = oHrmTrngEmpAttQueryVO.getCourseNameId(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sId)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_HrEmpTrngAttHdrCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngEmpAttHeaderInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngEmpAttQueryVO == null) + oHrmTrngEmpAttQueryVO = new HrmTrngEmpAttQVO(); + String sId = oHrmTrngEmpAttQueryVO.getCourseNameId(); + String sPK = oHrmTrngEmpAttQueryVO.getHeaderPrimaryKey(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, sId)); + oParameters.add(new DBObject(4, 1, 12, sPK)); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_HrEmpTrngAttHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpAttHdrBean oHrmTrngEmpAttHdrBean = new HrmTrngEmpAttHdrBean(); + oHrmTrngEmpAttHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmTrngEmpAttHdrBean.setCourseName(oRow.get("CRS_NAME").getString()); + oHrmTrngEmpAttHdrBean.setInstitutionName(oRow.get("INST_NAME").getString()); + oHrmTrngEmpAttHdrBean.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmTrngEmpAttHdrBean.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHeaderList.add(oHrmTrngEmpAttHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmPrmCriteriaDetailMetaInfo(BaseQueryVO oBaseQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HrmPrmCriteriaQVO oQVO = (HrmPrmCriteriaQVO)oBaseQVO; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oQVO.getToGradeId())); + oParameters.add(new DBObject(2, 1, 12, oQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_PrmCriteriaDtlCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmPrmCriteriaDetailInfo(BaseQueryVO oBaseQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + HrmPrmCriteriaQVO oQVO = (HrmPrmCriteriaQVO)oBaseQVO; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oQVO.getToGradeId())); + oParameters.add(new DBObject(4, 1, 12, oQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMCRITERIA.proc_PrmCriteriaDtl(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmCriteriaDtlBean oDtlBean = new HrmPrmCriteriaDtlBean(); + oDtlBean.setDetailId(oRow.get("ID").getString()); + oDtlBean.setTxtDescription(oRow.get("description").getString()); + oDtlBean.setTxtCriteriaStartDate(EnrgiseUtil.convertToString(oRow.get("criteria_fr_dt").getDate())); + oDtlBean.setDisabbutCriteriaEndDate("true"); + oDtlBean.setDisabbutCriteriaStartDate("true"); + oDtlBean.setTxtCriteriaEndDate(EnrgiseUtil.convertToString(oRow.get("criteria_to_dt").getDate())); + oDtlBean.setTxtMinServicePeriod(oRow.get("min_service_period").getString()); + oDtlBean.setTxtReqYears(oRow.get("years_in_current_post").getString()); + oDtlBean.setTxtYearAPAR(oRow.get("no_of_years_apar").getString()); + arylstDetail.add(oDtlBean); + } + return arylstDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRNG_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHdrBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + HrmPrmCriteriaHdrBean oHdrBean = (HrmPrmCriteriaHdrBean)oBaseHdrBean; + while (oIt.hasNext()) { + HrmPrmCriteriaDtlBean oDtlBean = oIt.next(); + if (oDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMCRITERIA.proc_UpsertPrmCriteriaDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHdrBean.getToGradeId())); + oParameters.add(new DBObject(4, 1, 12, oDtlBean.getTxtDescription())); + oParameters.add(new DBObject(5, 1, 12, oDtlBean.getTxtCriteriaStartDate())); + oParameters.add(new DBObject(6, 1, 12, oDtlBean.getTxtCriteriaEndDate())); + oParameters.add(new DBObject(7, 1, 12, oDtlBean.getTxtMinServicePeriod())); + oParameters.add(new DBObject(8, 1, 12, oDtlBean.getTxtReqYears())); + oParameters.add(new DBObject(9, 1, 12, oDtlBean.getTxtYearAPAR())); + oParameters.add(new DBObject(10, 1, 12, "200")); + oParameters.add(new DBObject(11, 1, 12, "200")); + oParameters.add(new DBObject(12, 1, 12, oDtlBean.getDetailId())); + oBean.addToBatch(oParameters); + } + if (oDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMCRITERIA.proc_UpsertPrmCriteriaDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oDtlBean.getTxtDescription())); + oParameters.add(new DBObject(5, 1, 12, oDtlBean.getTxtCriteriaStartDate())); + oParameters.add(new DBObject(6, 1, 12, oDtlBean.getTxtCriteriaEndDate())); + oParameters.add(new DBObject(7, 1, 12, oDtlBean.getTxtMinServicePeriod())); + oParameters.add(new DBObject(8, 1, 12, oDtlBean.getTxtReqYears())); + oParameters.add(new DBObject(9, 1, 12, oDtlBean.getTxtYearAPAR())); + oParameters.add(new DBObject(10, 1, 12, "200")); + oParameters.add(new DBObject(11, 1, 12, "200")); + oParameters.add(new DBObject(12, 1, 12, oDtlBean.getDetailId())); + oBean.addToBatch(oParameters); + } + if (oDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMCRITERIA.proc_DeletePrmCriteriaDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oDtlBean.getDetailId())); + oBean.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp param2, String param3, String param4, boolean param5, ArrayList oDtlBeanArray, boolean param7, Timestamp param8) throws EnrgiseSystemException, EnrgiseApplicationException {} + + private void checkMandatoryHeader(HrmPrmCriteriaHdrBean oHdrBean, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.fromPost"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + if (!EnrgiseUtil.checkString(oHdrBean.getToGradeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmCriteria.toPost"); + arylstParams = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + HrmPrmGenAssHdrBean oHdrBean = (HrmPrmGenAssHdrBean)oBaseHeaderBean; + return "saveHeaderImpl toBeDone"; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList oDtlBeanArray, boolean param7, Timestamp param8) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public LovVO getPrmNoLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.id"); + oHeaderList.add("hrm.HrmPrmGenAss.prmNo"); + oHeaderList.add("hrm.HrmPrmGenAss.description"); + oHeaderList.add("hrm.id"); + oHeaderList.add("hrm.id"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sHierarchy = null; + if (oLovQueryVO.getProperty("hierarchy") != null) + sHierarchy = oLovQueryVO.getProperty("hierarchy").trim(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetPrmNoticeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("notice_no").getString()); + oLOVBean.setDetailField3(oRow.get("description").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String generateAssessment(HrmPrmGenAssHdrBean oHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sPrmId = oHdrBean.getPrmId(); + if (!EnrgiseUtil.checkString(sPrmId)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmGenAss.prmNo"); + ArrayList arylstParams = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + reportError(arylstErrorList); + } + if (!EnrgiseUtil.checkString(oHdrBean.getSiteId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmGenAss.siteCode"); + ArrayList arylstParams = new ArrayList(); + ArrayList arylstErrorList = new ArrayList(); + arylstParams.add(oMessageKey); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParams, "E")); + reportError(arylstErrorList); + } + ArrayList arylstNtcDtlId = getToPositions(sPrmId); + Iterator itrNtcDtlId = arylstNtcDtlId.iterator(); + while (itrNtcDtlId.hasNext()) { + String sFromPost = null; + String sNtcDtlId = itrNtcDtlId.next(); + ArrayList arylstEmpList = getEmpList(sNtcDtlId); + if (arylstEmpList.size() == 0) + continue; + getPostExpList(arylstEmpList); + ArrayList arylstExpTable = getExpTable(sNtcDtlId); + Iterator itrEmpList = arylstEmpList.iterator(); + while (itrEmpList.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmpList.next(); + int iExp = Integer.parseInt(oDtlBean.getCompanyExp()); + sFromPost = oDtlBean.getFromPost(); + oDtlBean.setExpPoints(getExpPoints(iExp, arylstExpTable)); + } + getRatingPointsList(sFromPost, arylstEmpList); + ArrayList arylstCriteria = getCriteriaTable(sFromPost, sNtcDtlId); + itrEmpList = arylstEmpList.iterator(); + ArrayList arylstFilteredEmpList = new ArrayList(); + while (itrEmpList.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmpList.next(); + int iEmpMinSrv = (oDtlBean.getCompanyExp() == null) ? 0 : Integer.parseInt(oDtlBean.getCompanyExp()); + int iEmpReqYrs = (oDtlBean.getPostExp() == null) ? 0 : Integer.parseInt(oDtlBean.getPostExp()); + Date dToday = new Date(); + String sDate = EnrgiseUtil.convertToString(dToday); + if (isInCriteria(sDate, iEmpMinSrv, iEmpReqYrs, 1, arylstCriteria)) + arylstFilteredEmpList.add(oDtlBean); + } + insertData(oHdrBean.getSiteId(), sNtcDtlId, arylstFilteredEmpList); + } + return "ok"; + } + + private ArrayList getEmpList(String sPromNo) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sPromNo)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetEmpList(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + while (iter.hasNext()) { + oRow = iter.next(); + HrmPrmGenAssDtlBean oDtlBean = new HrmPrmGenAssDtlBean(); + oDtlBean.setEmpId(oRow.get("ID").getString()); + oDtlBean.setCompanyExp(oRow.get("comp_exp").getString()); + oDtlBean.setFromPost(oRow.get("from_post").getString()); + oDtlBean.setDesigId(oRow.get("designation_id").getString()); + oDtlBean.setScaleId(oRow.get("scale_id").getString()); + arylstList.add(oDtlBean); + } + return arylstList; + } + + private void getRatingPointsList(String sPosHdrId, ArrayList arylstEmpList) throws EnrgiseSystemException { + Iterator itrEmp = arylstEmpList.iterator(); + StringBuffer sbEmpIds = new StringBuffer(); + while (itrEmp.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmp.next(); + sbEmpIds.append(oDtlBean.getEmpId()); + sbEmpIds.append(","); + } + sbEmpIds.setLength(sbEmpIds.length() - 1); + String sEmpIds = sbEmpIds.toString(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpIds)); + arylstParameters.add(new DBObject(2, 1, 12, sPosHdrId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetRatingPointsList(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + HashMap mapEmpRating = new HashMap(); + while (iter.hasNext()) { + oRow = iter.next(); + mapEmpRating.put(oRow.get("ID").getString(), String.valueOf(String.valueOf(oRow.get("rating").getString()).concat(String.valueOf(":"))).concat(String.valueOf(oRow.get("rating_point").getString()))); + } + Iterator itrEmpList = arylstEmpList.iterator(); + while (itrEmpList.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmpList.next(); + String sRating = (String)mapEmpRating.get(oDtlBean.getEmpId()); + String[] sRatingArr = sRating.split(":"); + oDtlBean.setRating(sRatingArr[0]); + oDtlBean.setRatingPoints(sRatingArr[1]); + } + } + + private void getTestPointsList(String sPosHdrId, ArrayList arylstEmpList) throws EnrgiseSystemException { + Iterator itrEmp = arylstEmpList.iterator(); + StringBuffer sbEmpIds = new StringBuffer(); + while (itrEmp.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmp.next(); + sbEmpIds.append(oDtlBean.getEmpId()); + sbEmpIds.append(","); + } + sbEmpIds.setLength(sbEmpIds.length() - 1); + String sEmpIds = sbEmpIds.toString(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpIds)); + arylstParameters.add(new DBObject(2, 1, 12, sPosHdrId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetRatingPointsList(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + HashMap mapEmpRating = new HashMap(); + while (iter.hasNext()) { + oRow = iter.next(); + mapEmpRating.put(oRow.get("ID").getString(), oRow.get("rating").getString()); + } + Iterator itrEmpList = arylstEmpList.iterator(); + while (itrEmpList.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmpList.next(); + oDtlBean.setRatingPoints((String)mapEmpRating.get(oDtlBean.getEmpId())); + } + } + + private void getPostExpList(ArrayList arylstEmpList) throws EnrgiseSystemException { + if (arylstEmpList.size() == 0) + return; + Iterator itrEmp = arylstEmpList.iterator(); + StringBuffer sbEmpIds = new StringBuffer(); + while (itrEmp.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmp.next(); + sbEmpIds.append(oDtlBean.getEmpId()); + sbEmpIds.append(","); + } + sbEmpIds.setLength(sbEmpIds.length() - 1); + String sEmpIds = sbEmpIds.toString(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpIds)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetPostExpList(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + HashMap mapEmpPostExp = new HashMap(); + while (iter.hasNext()) { + oRow = iter.next(); + mapEmpPostExp.put(oRow.get("ID").getString(), oRow.get("post_exp").getString()); + } + Iterator itrEmpList = arylstEmpList.iterator(); + while (itrEmpList.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmpList.next(); + oDtlBean.setPostExp((String)mapEmpPostExp.get(oDtlBean.getEmpId())); + } + } + + private void getEmpCategoryList(ArrayList arylstEmpList) throws EnrgiseSystemException { + Iterator itrEmp = arylstEmpList.iterator(); + StringBuffer sbEmpIds = new StringBuffer(); + while (itrEmp.hasNext()) { + sbEmpIds.append(itrEmp.next()); + sbEmpIds.append(","); + } + sbEmpIds.setLength(sbEmpIds.length() - 1); + String sEmpIds = sbEmpIds.toString(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpIds)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetEmpCategory(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + HashMap mapEmpCategory = new HashMap(); + while (iter.hasNext()) { + oRow = iter.next(); + mapEmpCategory.put(oRow.get("ID").getString(), oRow.get("category").getString()); + } + Iterator itrEmpList = arylstList.iterator(); + while (itrEmpList.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmpList.next(); + oDtlBean.setCategory((String)mapEmpCategory.get(oDtlBean.getEmpId())); + } + } + + public static void main(String[] s) { + try { + HrmPrmGenAssBO o = new HrmPrmGenAssBO(); + HrmPrmGenAssHdrBean oh = new HrmPrmGenAssHdrBean(); + oh.setPosInfHdrId("100029"); + oh.setPrmNo("100001"); + oh.setSiteId("100"); + o.generateAssessment(oh); + } catch (Exception exception) {} + } + + private ArrayList getExpTable(String sNtcDtlId) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sNtcDtlId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetMonExpDtls(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + while (iter.hasNext()) { + oRow = iter.next(); + HrmPrmExperienceDtlBean oDtlBean = new HrmPrmExperienceDtlBean(); + oDtlBean.setStartField(oRow.get("MIN_EXPERIENCE").getString()); + oDtlBean.setEndField(oRow.get("MAX_EXPERIENCE").getString()); + oDtlBean.setTxtAccBasis(oRow.get("FLAT_MONTH_FLAG").getString()); + oDtlBean.setTxtMonthsExp(oRow.get("MONTHS_EXPERIENCE").getString()); + oDtlBean.setTxtPointsAwarded(oRow.get("POINTS_ACCUMULATED").getString()); + arylstList.add(oDtlBean); + } + return arylstList; + } + + private ArrayList getCriteriaTable(String sFromPostId, String sNtcDtlId) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sNtcDtlId)); + arylstParameters.add(new DBObject(2, 1, 12, sFromPostId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_PrmCriteriaList(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + while (iter.hasNext()) { + oRow = iter.next(); + HrmPrmCriteriaDtlBean oDtlBean = new HrmPrmCriteriaDtlBean(); + oDtlBean.setTxtCriteriaStartDate(EnrgiseUtil.convertToString(oRow.get("criteria_fr_dt").getDate())); + oDtlBean.setTxtCriteriaEndDate(EnrgiseUtil.convertToString(oRow.get("criteria_to_dt").getDate())); + oDtlBean.setTxtMinServicePeriod(oRow.get("min_service_period").getString()); + oDtlBean.setTxtReqYears(oRow.get("years_in_current_post").getString()); + oDtlBean.setTxtYearAPAR(oRow.get("no_of_years_apar").getString()); + arylstList.add(oDtlBean); + } + return arylstList; + } + + private boolean isInCriteria(String sDate, int iEmpMinSvc, int iEmpReqYrs, int iEmpYrsApr, ArrayList arylstExpTable) throws EnrgiseSystemException { + int iExp = 0; + boolean returnVal = true; + Iterator itrExpTable = arylstExpTable.iterator(); + while (itrExpTable.hasNext()) { + HrmPrmCriteriaDtlBean oExpBean = itrExpTable.next(); + int iStart = EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), sDate, oExpBean.getTxtCriteriaStartDate()); + int iEnd = EnrgiseUtil.compareDates(new SimpleDateFormat("dd-MMM-yyyy"), sDate, oExpBean.getTxtCriteriaEndDate()); + if (iStart >= 0 && iEnd <= 0) { + int iMinSvc = Integer.parseInt(oExpBean.getTxtMinServicePeriod()); + int iReqYrs = Integer.parseInt(oExpBean.getTxtReqYears()); + int iYrsApr = Integer.parseInt(oExpBean.getTxtYearAPAR()); + if (iMinSvc < iEmpMinSvc) + returnVal = false; + if (iReqYrs < iEmpReqYrs) + returnVal = false; + if (iYrsApr < iEmpYrsApr) + returnVal = false; + } + } + return returnVal; + } + + private String getExpPoints(int iExp, ArrayList arylstExpTable) throws EnrgiseSystemException { + int iExpPts = 0; + Iterator itrExpTable = arylstExpTable.iterator(); + while (itrExpTable.hasNext()) { + HrmPrmExperienceDtlBean oExpBean = itrExpTable.next(); + int iStart = Integer.parseInt(oExpBean.getStartField()); + int iEnd = Integer.parseInt(oExpBean.getEndField()); + if (iExp >= iStart && iExp <= iEnd) { + if (oExpBean.getTxtAccBasis().equals("F")) { + iExpPts = Integer.parseInt(oExpBean.getTxtPointsAwarded()); + continue; + } + int iMonths = Integer.parseInt(oExpBean.getTxtMonthsExp()); + int iPts = Integer.parseInt(oExpBean.getTxtPointsAwarded()); + iExpPts = iExp * iPts / iMonths; + } + } + return String.valueOf(iExpPts); + } + + private void insertData(String sSiteId, String sPromNoticeId, ArrayList arylstEmpList) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + oBean.createBatch("HRMPRMGENASS.proc_InsertPrmAss(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + Iterator itrEmpList = arylstEmpList.iterator(); + while (itrEmpList.hasNext()) { + HrmPrmGenAssDtlBean oDtlBean = itrEmpList.next(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(2, 1, 12, oDtlBean.getCategory())); + arylstParameters.add(new DBObject(3, 1, 12, oDtlBean.getCompanyExp())); + arylstParameters.add(new DBObject(4, 1, 12, oDtlBean.getExpPoints())); + arylstParameters.add(new DBObject(5, 1, 12, oDtlBean.getRating())); + arylstParameters.add(new DBObject(6, 1, 12, oDtlBean.getRatingPoints())); + arylstParameters.add(new DBObject(7, 1, 12, null)); + arylstParameters.add(new DBObject(8, 1, 12, null)); + arylstParameters.add(new DBObject(9, 1, 12, null)); + arylstParameters.add(new DBObject(10, 1, 12, null)); + arylstParameters.add(new DBObject(11, 1, 12, null)); + arylstParameters.add(new DBObject(12, 1, 12, null)); + arylstParameters.add(new DBObject(13, 1, 12, null)); + arylstParameters.add(new DBObject(14, 1, 12, null)); + arylstParameters.add(new DBObject(15, 1, 12, oDtlBean.getEmpId())); + arylstParameters.add(new DBObject(16, 1, 12, sPromNoticeId)); + arylstParameters.add(new DBObject(17, 1, 12, oDtlBean.getPostExp())); + arylstParameters.add(new DBObject(18, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(19, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(20, 1, 12, oDtlBean.getDesigId())); + arylstParameters.add(new DBObject(21, 1, 12, oDtlBean.getScaleId())); + oBean.addToBatch(arylstParameters); + } + oBean.executeBatch(); + } + + private ArrayList getToPositions(String sPrmId) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sPrmId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPRMGENASS.proc_GetPosHdrList(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + Iterator iter = arylstList.iterator(); + QueryRow oRow = null; + arylstList = new ArrayList(); + while (iter.hasNext()) { + oRow = iter.next(); + HrmPrmExperienceDtlBean oDtlBean = new HrmPrmExperienceDtlBean(); + String sPosHdrId = oRow.get("id").getString(); + arylstList.add(sPosHdrId); + } + return arylstList; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmKPARatingBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmKPARatingBO.java new file mode 100644 index 0000000..a8b625a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmKPARatingBO.java @@ -0,0 +1,972 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmKPAFinalDtlBean; +import wenrgise.hrms.bean.HrmPrmKPAPoswiseDtlBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; + +public class HrmPrmKPARatingBO extends HrmBaseBO { + public HrmPrmKPARatingBO() {} + + public HrmPrmKPARatingBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public LovVO getPosNoLOVdataQ(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmPrmKPARating.positionCode"); + arylstHeaderList.add("hrm.HrmPrmKPARating.desc"); + arylstHeaderList.add("hrm.HrmPrmKPARating.hierarchy"); + arylstHeaderList.add("hrm.HrmPrmKPARating.designation"); + arylstHeaderList.add("hrm.HrmPrmKPARating.scale"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMKPARATING.proc_GetPositionNoLOVQuery(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("Description").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY").getString()); + oLOVBean.setDetailField5(oRow.get("DESIGNATION").getString()); + oLOVBean.setDetailField6(oRow.get("SCALE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getPosNoLOVdataN(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmPrmKPARating.positionCode"); + arylstHeaderList.add("hrm.HrmPrmKPARating.desc"); + arylstHeaderList.add("hrm.HrmPrmKPARating.hierarchy"); + arylstHeaderList.add("hrm.HrmPrmKPARating.designation"); + arylstHeaderList.add("hrm.HrmPrmKPARating.scale"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMKPARATING.proc_GetPositionNoLOVNew(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("Description").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY").getString()); + oLOVBean.setDetailField5(oRow.get("DESIGNATION_ID").getString()); + oLOVBean.setDetailField6(oRow.get("SCALE_ID").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getRatNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmPrmKPARating.rating"); + arylstHeaderList.add("hrm.HrmPrmKPARating.maxRating"); + arylstHeaderList.add("hrm.HrmPrmKPARating.minRating"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMKPARATING.proc_GetRatingNoLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("max_rating").getString()); + oLOVBean.setDetailField4(oRow.get("min_rating").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getRatNoLOVQdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmPrmKPARating.rating"); + arylstHeaderList.add("hrm.HrmPrmKPARating.maxRating"); + arylstHeaderList.add("hrm.HrmPrmKPARating.minRating"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMKPARATING.proc_GetRatingNoQLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("max_rating").getString()); + oLOVBean.setDetailField4(oRow.get("min_rating").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getKPAGrpCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmPrmKPARating.txtKPAGroupCode"); + arylstHeaderList.add("hrm.HrmPrmKPARating.txtKPAGroupDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMKPARATING.proc_GetKPAGrpCodeLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public RecordMetaInfo getPrmKPARatingHdrMetaInfo(HrmPrmKPARatingQVO oHrmPrmKPARatingQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmKPARatingQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmKPARatingQVO.getRatingId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMKPARATING.PROC_KPARATINGCOUNT(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getPrmKPARatingInfo(HrmPrmKPARatingQVO oHrmPrmKPARatingQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmPrmKPARatingQVO == null) + oHrmPrmKPARatingQVO = new HrmPrmKPARatingQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmKPARatingQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmKPARatingQVO.getRatingId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMKPARATING.proc_KPARatingHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmKPARatingHdrBean oHrmPrmKPARatingHdrBean = new HrmPrmKPARatingHdrBean(); + oHrmPrmKPARatingHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmPrmKPARatingHdrBean.setGradeId(oRow.get("GRADE_ID").getString()); + oHrmPrmKPARatingHdrBean.setGradeCode(oRow.get("gradeCode").getString()); + oHrmPrmKPARatingHdrBean.setGradeDesc(oRow.get("grade").getString()); + oHrmPrmKPARatingHdrBean.setDesigId(oRow.get("DESIGNATION_ID").getString()); + oHrmPrmKPARatingHdrBean.setDesigCode(oRow.get("designationCode").getString()); + oHrmPrmKPARatingHdrBean.setDesigDesc(oRow.get("designation").getString()); + oHrmPrmKPARatingHdrBean.setRatingId(oRow.get("Rating_Id").getString()); + oHrmPrmKPARatingHdrBean.setRatingNo(oRow.get("Rating_Code").getString()); + oHrmPrmKPARatingHdrBean.setMaxRating(oRow.get("MAX_RATING").getString()); + oHrmPrmKPARatingHdrBean.setMinRating(oRow.get("MIN_RATING").getString()); + oHeaderList.add(oHrmPrmKPARatingHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getPrmKPARatingPosDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMKPARATING.proc_KPARatingPosDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getPrmKPARatingPosDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmPrmKPAPoswiseDtl = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMKPARATING.proc_KPARatingPosDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmPrmKPAPoswiseDtl = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean = new HrmPrmKPAPoswiseDtlBean(); + oHrmPrmKPAPoswiseDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmPrmKPAPoswiseDtlBean.setTxtKPAGroupId(oRow.get("APR_KPA_HD_ID").getString()); + oHrmPrmKPAPoswiseDtlBean.setTxtPromKPARatingHdrId(oRow.get("prom_kpa_rating_hdr_id").getString()); + oHrmPrmKPAPoswiseDtlBean.setTxtKPAGroupCode(oRow.get("CODE").getString()); + oHrmPrmKPAPoswiseDtlBean.setTxtKPAGroupDesc(oRow.get("DESCRIPTION").getString()); + oHrmPrmKPAPoswiseDtlBean.setTxtReqAvgRating(oRow.get("AVG_RATING").getString()); + arylstHrmPrmKPAPoswiseDtl.add(oHrmPrmKPAPoswiseDtlBean); + } + return arylstHrmPrmKPAPoswiseDtl; + } + + public RecordMetaInfo getPrmKPARatingFinDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMKPARATING.proc_KPARatingFinDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getPrmKPARatingFinDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmPrmKPAFinalDtl = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMKPARATING.proc_KPARatingFinDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmPrmKPAFinalDtl = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean = new HrmPrmKPAFinalDtlBean(); + oHrmPrmKPAFinalDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmPrmKPAFinalDtlBean.setTxtPromKPARatingHdrFId(oRow.get("prom_kpa_rating_hdr_id").getString()); + oHrmPrmKPAFinalDtlBean.setStartField(oRow.get("FROM_RATING").getString()); + oHrmPrmKPAFinalDtlBean.setEndField(oRow.get("TO_RATING").getString()); + oHrmPrmKPAFinalDtlBean.setTxtPoints(oRow.get("POINTS").getString()); + arylstHrmPrmKPAFinalDtl.add(oHrmPrmKPAFinalDtlBean); + } + return arylstHrmPrmKPAFinalDtl; + } + + public void initializeBOImpl() { + this.headerTable = "hrm_advt_hdr"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmPrmKPARating")) { + savePoswiseDtl(sHeaderPrimaryKey, oDetailBeanArray); + } else { + saveFinalDtl(sHeaderPrimaryKey, oDetailBeanArray); + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmPrmKPARatingHdrBean oHrmPrmKPARatingHdrBean = (HrmPrmKPARatingHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmKPARatingHdrBean.getRatingId())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmKPARatingHdrBean.getGradeId())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmKPARatingHdrBean.getDesigId())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMKPARATING.proc_UpsertKPARatingHdr(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + private void savePoswiseDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean = oIt.next(); + if (oHrmPrmKPAPoswiseDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMKPARATING.proc_UpsertKPARatingPosDtl(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmKPAPoswiseDtlBean.getTxtReqAvgRating())); + oParameters.add(new DBObject(4, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmKPAPoswiseDtlBean.getTxtKPAGroupId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmKPAPoswiseDtlBean.getStatus().equals("U")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMKPARATING.proc_UpsertKPARatingPosDtl(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmKPAPoswiseDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmKPAPoswiseDtlBean.getTxtReqAvgRating())); + oParameters.add(new DBObject(4, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmKPAPoswiseDtlBean.getTxtKPAGroupId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmKPAPoswiseDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMPRMKPARATING.proc_DeleteKPARatingPosDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmKPAPoswiseDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveFinalDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean = oIt.next(); + if (oHrmPrmKPAFinalDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMKPARATING.proc_UpsertKPARatingFinDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmKPAFinalDtlBean.getStartField())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmKPAFinalDtlBean.getEndField())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmKPAFinalDtlBean.getTxtPoints())); + oParameters.add(new DBObject(6, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmKPAFinalDtlBean.getStatus().equals("U")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMKPARATING.proc_UpsertKPARatingFinDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmKPAFinalDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmKPAFinalDtlBean.getStartField())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmKPAFinalDtlBean.getEndField())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmKPAFinalDtlBean.getTxtPoints())); + oParameters.add(new DBObject(6, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmKPAFinalDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMPRMKPARATING.proc_DeleteKPARatingFinDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmKPAFinalDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmPrmKPARatingHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmPrmKPARating")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean = oIt1.next(); + if (!oHrmPrmKPAPoswiseDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryDtls(oHrmPrmKPAPoswiseDtlBean, rowCount); + checkforNumericfields(oHrmPrmKPAPoswiseDtlBean, rowCount); + rowCount++; + } + } + } + if (sScreenName.equalsIgnoreCase("HrmPrmKPARatingF")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean = oIt1.next(); + if (!oHrmPrmKPAFinalDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryDtls(oHrmPrmKPAFinalDtlBean, rowCount); + checkforNumericfields(oHrmPrmKPAFinalDtlBean, rowCount); + rowCount++; + } + } + } + } + } + + private void checkMandatoryHeader(HrmPrmKPARatingHdrBean oHrmPrmKPARatingHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmKPARatingHdrBean.getGradeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.gradeCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmKPARatingHdrBean.getRatingNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.rating"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmKPAFinalDtlBean.getStartField())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtFromRating"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmKPAFinalDtlBean.getEndField())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtToRating"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmKPAFinalDtlBean.getTxtPoints())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtPoints"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmKPAPoswiseDtlBean.getTxtKPAGroupCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtKPAGroupCode"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmKPAPoswiseDtlBean.getTxtKPAGroupDesc())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtKPAGroupDesc"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmKPAPoswiseDtlBean.getTxtReqAvgRating())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtReqAvgRating"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oErrorList); + } + + private void checkUniquePoswiseDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select ID from HRM_PROM_KPA_RATING where PROM_KPA_RATING_HDR_ID=").concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf(" and APR_KPA_HD_ID="))).concat(String.valueOf(oHrmPrmKPAPoswiseDtlBean.getTxtKPAGroupId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmPrmKPAPoswiseDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtKPAGroupCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingHdrBean oHrmPrmKPARatingHdrBean = (HrmPrmKPARatingHdrBean)oBaseHeaderBean; + String maxRating = oHrmPrmKPARatingHdrBean.getMaxRating(); + String minRating = oHrmPrmKPARatingHdrBean.getMinRating(); + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmPrmKPARatingHdrBean)oBaseHeaderBean, oErrorList); + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmPrmKPARating")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowcount = 1; + while (oIt1.hasNext()) { + HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean = oIt1.next(); + if (!oHrmPrmKPAPoswiseDtlBean.getStatus().equalsIgnoreCase("D")) + checkUniquePoswiseDtl(oHrmPrmKPARatingHdrBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + } + } + if (sScreenName.equalsIgnoreCase("HrmPrmKPARatingF")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowcount = 1; + while (oIt1.hasNext()) { + HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean = oIt1.next(); + if (!oHrmPrmKPAFinalDtlBean.getStatus().equalsIgnoreCase("D")) { + checkPointOrder(oDetailBeanArray, oErrorList); + checkMaxMinRating(oHrmPrmKPAFinalDtlBean, rowcount, maxRating, minRating); + } + } + } + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmPrmKPARatingHdrBean oHrmPrmKPARatingHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from hrm_prom_kpa_rating_hdr where GRADE_ID='").concat(String.valueOf(oHrmPrmKPARatingHdrBean.getGradeId()))).concat(String.valueOf("' and DESIGNATION_ID='"))).concat(String.valueOf(oHrmPrmKPARatingHdrBean.getDesigId()))).concat(String.valueOf("' and RATING_HDR_ID='"))).concat(String.valueOf(oHrmPrmKPARatingHdrBean.getRatingId()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmPrmKPARatingHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey1 = new MessageKey("hrm.HrmPrmKPARating.gradeCode"); + MessageKey oMessageKey2 = new MessageKey("hrm.HrmPrmKPARating.desigCode"); + MessageKey oMessageKey3 = new MessageKey("hrm.HrmPrmKPARating.rating"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey1); + oParams.add(oMessageKey2); + oParams.add(oMessageKey3); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.promKpa.uniqueConstraintViolated", oParams, "E")); + } + } + } + + private void checkforNumericfields(HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oHrmPrmKPAPoswiseDtlBean.getTxtReqAvgRating(), 5, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtReqAvgRating"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.advt.detail.nonnumeric", oParam)); + } + reportError(oErrList); + } + + private void checkforNumericfields(HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oHrmPrmKPAFinalDtlBean.getStartField(), 5, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtFromRating"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.advt.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmKPAFinalDtlBean.getEndField(), 6, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtToRating"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.advt.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmKPAFinalDtlBean.getTxtPoints(), 5, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.txtPoints"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.advt.detail.nonnumeric", oParam)); + } + reportError(oErrList); + } + + private void checkDates(HrmPrmKPARatingHdrBean oHrmPrmKPARatingHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkPointOrder(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt = oDetailBeanArray.iterator(); + int i = 1; + while (oIt.hasNext()) { + int rowCount = 1; + HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean = oIt.next(); + if (i != 1) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean1 = oIt1.next(); + if (Double.parseDouble(oHrmPrmKPAFinalDtlBean.getStartField()) > Double.parseDouble(oHrmPrmKPAFinalDtlBean1.getStartField()) && Double.parseDouble(oHrmPrmKPAFinalDtlBean.getTxtPoints()) < Double.parseDouble(oHrmPrmKPAFinalDtlBean1.getTxtPoints())) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(i)); + throw new EnrgiseApplicationException("hrm.HrmTestScore.errorinPoints", oParam, "E"); + } + rowCount++; + } + } + i++; + } + } + + private void checkMaxMinRating(HrmPrmKPAFinalDtlBean oHrmPrmKPAFinalDtlBean, int rowcount, String maxRating, String minRating) throws EnrgiseApplicationException, EnrgiseSystemException { + if (EnrgiseUtil.checkString(oHrmPrmKPAFinalDtlBean.getStartField()) && EnrgiseUtil.checkString(oHrmPrmKPAFinalDtlBean.getEndField())) + if (Double.parseDouble(oHrmPrmKPAFinalDtlBean.getStartField()) < Double.parseDouble(minRating) || Double.parseDouble(oHrmPrmKPAFinalDtlBean.getEndField()) > Double.parseDouble(maxRating)) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowcount)); + throw new EnrgiseApplicationException("hrm.HrmPrmKPARating.errorinrating", oParam, "E"); + } + } + + public LovVO getPromKPARatingGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='20' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.gradeCode"); + oHeaderList.add("hrm.HrmPrmOrder.gradeName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPromKPARatingDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='10' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.desigCode"); + oHeaderList.add("hrm.HrmPrmOrder.desigName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmNoticeDtlBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmNoticeDtlBO.java new file mode 100644 index 0000000..8013810 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmNoticeDtlBO.java @@ -0,0 +1,591 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlDtlBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; + +public class HrmPrmNoticeDtlBO extends HrmBaseBO { + public HrmPrmNoticeDtlBO() {} + + public HrmPrmNoticeDtlBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public LovVO getNoticeNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmPrmNotice.noticeNo"); + arylstHeaderList.add("hrm.HrmPrmNotice.noticeDate"); + arylstHeaderList.add("hrm.HrmPrmNotice.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMNOTICEDTL.proc_GetNoticeNoLOVQuery(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NOTICE_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("NOTICE_DATE").getDate())); + oLOVBean.setDetailField4(oRow.get("DESCRIPTION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getPositionNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmPrmNotice.txtPositionCode"); + arylstHeaderList.add("hrm.HrmPrmNotice.txtDesignation"); + arylstHeaderList.add("hrm.HrmPrmNotice.txtScale"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMNOTICEDTL.proc_GetPosNoLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("desig_name").getString()); + oLOVBean.setDetailField4(oRow.get("scale_name").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public RecordMetaInfo getHrmPrmNoticeDtlMetaInfo(HrmPrmNoticeDtlQVO oHrmPrmNoticeDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmNoticeDtlQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMNOTICEDTL.proc_PromNoticeHdrCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmPrmNoticeDtlHdrInfo(HrmPrmNoticeDtlQVO oHrmPrmNoticeDtlQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmPrmNoticeDtlQVO == null) + oHrmPrmNoticeDtlQVO = new HrmPrmNoticeDtlQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmNoticeDtlQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMNOTICEDTL.proc_PromNoticeHdrInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmNoticeDtlHdrBean oHrmPrmNoticeDtlHdrBean = new HrmPrmNoticeDtlHdrBean(); + oHrmPrmNoticeDtlHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmPrmNoticeDtlHdrBean.setNoticeId(oRow.get("ID").getString()); + oHrmPrmNoticeDtlHdrBean.setNoticeNo(oRow.get("NOTICE_NO").getString()); + oHrmPrmNoticeDtlHdrBean.setNoticeDate(EnrgiseUtil.convertToString(oRow.get("NOTICE_DATE").getDate())); + oHrmPrmNoticeDtlHdrBean.setDesc(oRow.get("DESCRIPTION").getString()); + oHeaderList.add(oHrmPrmNoticeDtlHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getPrmNoticeDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMNOTICEDTL.proc_PromNoticeDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getPrmNoticeDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmPrmNoticeDtl = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMNOTICEDTL.proc_PromNoticeDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmPrmNoticeDtl = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = new HrmPrmNoticeDtlDtlBean(); + oHrmPrmNoticeDtlDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmPrmNoticeDtlDtlBean.setTxtGradeId(oRow.get("grade_id").getString()); + oHrmPrmNoticeDtlDtlBean.setTxtGrade(oRow.get("gradeDesc").getString()); + oHrmPrmNoticeDtlDtlBean.setTxtDesigId(oRow.get("designation_id").getString()); + oHrmPrmNoticeDtlDtlBean.setTxtDesignation(oRow.get("desigDesc").getString()); + oHrmPrmNoticeDtlDtlBean.setTxtVacancies(oRow.get("no_of_vacancies").getString()); + oHrmPrmNoticeDtlDtlBean.setTxtExamDate(EnrgiseUtil.convertToString(oRow.get("interview_date").getDate())); + arylstHrmPrmNoticeDtl.add(oHrmPrmNoticeDtlDtlBean); + } + return arylstHrmPrmNoticeDtl; + } + + public void initializeBOImpl() { + this.headerTable = "hrm_advt_hdr"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + saveNoticeDtl(sHeaderPrimaryKey, oDetailBeanArray); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmPrmNoticeDtlHdrBean oHrmPrmNoticeDtlHdrBean = (HrmPrmNoticeDtlHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmNoticeDtlHdrBean.getNoticeNo())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmNoticeDtlHdrBean.getNoticeDate())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmNoticeDtlHdrBean.getDesc())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMNOTICEDTL.proc_UpsertPromNoticeHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmNoticeDtlHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmNoticeDtlHdrBean.getNoticeNo())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmNoticeDtlHdrBean.getNoticeDate())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmNoticeDtlHdrBean.getDesc())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMNOTICEDTL.proc_UpsertPromNoticeHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmNoticeDtlHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMNOTICEDTL.proc_DeletePromNoticeHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + private void saveNoticeDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = oIt.next(); + if (oHrmPrmNoticeDtlDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMNOTICEDTL.proc_UpsertPromNoticeDtl(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtGradeId())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtDesigId())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtVacancies())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtExamDate())); + oParameters.add(new DBObject(7, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmNoticeDtlDtlBean.getStatus().equals("U")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMNOTICEDTL.proc_UpsertPromNoticeDtl(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmNoticeDtlDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtGradeId())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtDesigId())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtVacancies())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmNoticeDtlDtlBean.getTxtExamDate())); + oParameters.add(new DBObject(7, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmNoticeDtlDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMPRMNOTICEDTL.proc_DeletePromNoticeDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmNoticeDtlDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmPrmNoticeDtlHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmPrmNoticeDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = oIt1.next(); + if (!oHrmPrmNoticeDtlDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryDtls(oHrmPrmNoticeDtlDtlBean, rowCount); + rowCount++; + } + } + } + } + + private void checkMandatoryHeader(HrmPrmNoticeDtlHdrBean oHrmPrmNoticeDtlHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmNoticeDtlHdrBean.getNoticeNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmNotice.noticeNo"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmNoticeDtlHdrBean.getNoticeDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmNotice.noticeDate"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + private void checkUniquePoswiseDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select ID from HRM_PROM_NTC_DTL where prom_ntchd_id='").concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf("' and grade_id='"))).concat(String.valueOf(oHrmPrmNoticeDtlDtlBean.getTxtGradeId()))).concat(String.valueOf("' and designation_id='"))).concat(String.valueOf(oHrmPrmNoticeDtlDtlBean.getTxtDesigId()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmPrmNoticeDtlDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey1 = new MessageKey("hrm.HrmPrmNotice.txtGrade"); + MessageKey oMessageKey2 = new MessageKey("hrm.HrmPrmNotice.txtDesignation"); + oParams.add(oMessageKey1); + oParams.add(oMessageKey2); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.prmnotdetail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmNoticeDtlDtlBean.getTxtGrade())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmNotice.txtGrade"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmNoticeDtlDtlBean.getTxtVacancies())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmNotice.txtVacancies"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmNoticeDtlDtlBean.getTxtExamDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmNotice.txtExamDate"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlHdrBean oHrmPrmNoticeDtlHdrBean = (HrmPrmNoticeDtlHdrBean)oBaseHeaderBean; + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmPrmNoticeDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowcount = 1; + while (oIt1.hasNext()) { + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = oIt1.next(); + if (!oHrmPrmNoticeDtlDtlBean.getStatus().equalsIgnoreCase("D")) { + checkDates(oHrmPrmNoticeDtlHdrBean, oDetailBeanArray); + checkUniqueDtl(oHrmPrmNoticeDtlHdrBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + } + } + } + reportError(oErrorList); + } + } + + private void checkDates(HrmPrmNoticeDtlHdrBean oHrmPrmNoticeDtlHdrBean, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int rowCount = 1; + Iterator oIt = oDetailBeanArray.iterator(); + if (oIt.hasNext()) { + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = oIt.next(); + DateFormat oDateFormat = null; + int i = EnrgiseUtil.compareDates(oDateFormat, oHrmPrmNoticeDtlDtlBean.getTxtExamDate(), oHrmPrmNoticeDtlHdrBean.getNoticeDate()); + System.out.println(i); + if (i < 0) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.HrmPrmNotice.detail.date", oParams, "E"); + } + rowCount++; + } + } + + public LovVO getPromNotGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='20' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.gradeName"); + oHeaderList.add("hrm.HrmPrmOrder.gradeCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("name").getString()); + oLOVBean.setDetailField3(oRow.get("code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPromNotDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='10' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.desigName"); + oHeaderList.add("hrm.HrmPrmOrder.desigCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("name").getString()); + oLOVBean.setDetailField3(oRow.get("code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmOrderBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmOrderBO.java new file mode 100644 index 0000000..0beeb82 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmOrderBO.java @@ -0,0 +1,647 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAprslEmpDtlsBean; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.vo.HrmPrmOrderQVO; + +public class HrmPrmOrderBO extends HrmBaseBO { + public HrmPrmOrderBO() {} + + public HrmPrmOrderBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public LovVO getPromOrderEmpNoNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("id"); + oHeaderList.add("hrm.HrmSepApplication.employeeNo"); + oHeaderList.add("hrm.HrmSepApplication.firstName"); + oHeaderList.add("hrm.HrmSepApplication.middleName"); + oHeaderList.add("hrm.HrmSepApplication.lastName"); + oHeaderList.add("gradeSeq"); + oHeaderList.add("hrm.HrmSepApplication.grade"); + oHeaderList.add("designationSeq"); + oHeaderList.add("hrm.HrmSepApplication.designation"); + oHeaderList.add("hrm.HrmSepApplication.location"); + oHeaderList.add("hrm.HrmSepApplication.pastExp"); + oHeaderList.add("hrm.HrmSepApplication.presExp"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPROMORDER.procGetPrmOrderEmpNoLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("first_name").getString()); + oLOVBean.setDetailField4(oRow.get("middle_name").getString()); + oLOVBean.setDetailField5(oRow.get("last_name").getString()); + oLOVBean.setDetailField6(oRow.get("gradeSeq").getString()); + oLOVBean.setDetailField7(oRow.get("grade").getString()); + oLOVBean.setDetailField8(oRow.get("designationSeq").getString()); + oLOVBean.setDetailField9(oRow.get("designation").getString()); + oLOVBean.setDetailField10(oRow.get("location").getString()); + oLOVBean.setDetailField11(oRow.get("past_exp").getString()); + oLOVBean.setDetailField12(oRow.get("pres_exp").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getPromOrderEmpNoQLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("id"); + oHeaderList.add("hrm.HrmSepApplication.employeeNo"); + oHeaderList.add("hrm.HrmSepApplication.firstName"); + oHeaderList.add("hrm.HrmSepApplication.middleName"); + oHeaderList.add("hrm.HrmSepApplication.lastName"); + oHeaderList.add("hrm.HrmSepApplication.grade"); + oHeaderList.add("hrm.HrmSepApplication.designation"); + oHeaderList.add("hrm.HrmSepApplication.location"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPROMORDER.procGetPrmOrderEmpNoQLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("first_name").getString()); + oLOVBean.setDetailField4(oRow.get("middle_name").getString()); + oLOVBean.setDetailField5(oRow.get("last_name").getString()); + oLOVBean.setDetailField6(oRow.get("grade").getString()); + oLOVBean.setDetailField7(oRow.get("designation").getString()); + oLOVBean.setDetailField8(oRow.get("location").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getPromOrderNoQLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hpo.order_no,hpo.EFFECTIVE_DATE from HRM_PROM_ORDER hpo "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where 1=1 ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hpo.order_no) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("hrm.HrmPrmOrder.orderNo"); + oHeaderList.add("hrm.HrmPrmOrder.effecDate"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("order_no").getString()); + oLOVBean.setDetailField2(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_DATE").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPromToGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='20' and hcd.HIERARCHY_LEVEL < '"))).concat(String.valueOf(oLovQueryVO.getProperty("gradeSeq")))).concat(String.valueOf("' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" order by hcd.HIERARCHY_LEVEL desc")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.gradeName"); + oHeaderList.add("hrm.HrmPrmOrder.gradeCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("name").getString()); + oLOVBean.setDetailField3(oRow.get("code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPromToDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct hcd.id,hcd.code,hcd.name from hrm_class_mst hcm,hrm_class_dtl hcd "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hcd.CLS_MST_ID=hcm.id and hcm.code='10' ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hcd.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("gradeId"); + oHeaderList.add("hrm.HrmPrmOrder.desigName"); + oHeaderList.add("hrm.HrmPrmOrder.desigCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("name").getString()); + oLOVBean.setDetailField3(oRow.get("code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public RecordMetaInfo getHrmPromOrderHdrMetaInfo(HrmPrmOrderQVO oHrmPrmOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmPrmOrderQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmPrmOrderQVO.getEmpId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmPrmOrderQVO.getOrderNo())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPROMORDER.procHrPromHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public String getEmpPastExp(String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sEmpPastTotal = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPROMORDER.procGetEmpTotalPastExp(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sEmpPastTotal = oRow.get("pastTotal").getString(); + } + return sEmpPastTotal; + } + + public String getEmpPresentExp(String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sEmpPresentTotal = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPROMORDER.procGetEmpTotalPresentExp(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sEmpPresentTotal = oRow.get("total").getString(); + } + return sEmpPresentTotal; + } + + public ArrayList getHrmPromOrderHdr(HrmPrmOrderQVO oHrmPrmOrderQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmPrmOrderQVO == null) + oHrmPrmOrderQVO = new HrmPrmOrderQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmPrmOrderQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmPrmOrderQVO.getEmpId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmPrmOrderQVO.getOrderNo())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMPROMORDER.procHrPromHdrInfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmPrmOrderHdrBean oHrmPrmOrderHdrBean = new HrmPrmOrderHdrBean(); + oHrmPrmOrderHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmPrmOrderHdrBean.setEmpId(oRow.get("emp_id").getString()); + oHrmPrmOrderHdrBean.setEmployeeNo(oRow.get("emp_no").getString()); + oHrmPrmOrderHdrBean.setFirstName(oRow.get("first_name").getString()); + oHrmPrmOrderHdrBean.setMiddleName(oRow.get("middle_name").getString()); + oHrmPrmOrderHdrBean.setLastName(oRow.get("last_name").getString()); + oHrmPrmOrderHdrBean.setGrade(oRow.get("grade").getString()); + oHrmPrmOrderHdrBean.setDesignation(oRow.get("designation").getString()); + oHrmPrmOrderHdrBean.setLocation(oRow.get("location").getString()); + oHrmPrmOrderHdrBean.setOrderNo(oRow.get("ORDER_NO").getString()); + oHrmPrmOrderHdrBean.setEffecDate(EnrgiseUtil.convertToString(oRow.get("EFFECTIVE_DATE").getDate())); + oHrmPrmOrderHdrBean.setRemarks(oRow.get("appr_remark").getString()); + oHrmPrmOrderHdrBean.setApproverId(oRow.get("appr_id").getString()); + oHrmPrmOrderHdrBean.setApprovedBy(oRow.get("appr_name").getString()); + oHrmPrmOrderHdrBean.setToGrade(oRow.get("to_grade").getString()); + oHrmPrmOrderHdrBean.setToGradeId(oRow.get("to_grade_id").getString()); + oHrmPrmOrderHdrBean.setToDesig(oRow.get("to_designation").getString()); + oHrmPrmOrderHdrBean.setToDesigId(oRow.get("to_designation_id").getString()); + String sPastTotal = getEmpPastExp(oHrmPrmOrderHdrBean.getEmpId()); + oHrmPrmOrderHdrBean.setPastExp(sPastTotal); + String sPresentTotal = getEmpPresentExp(oHrmPrmOrderHdrBean.getEmpId()); + oHrmPrmOrderHdrBean.setPresExp(sPresentTotal); + arylstHeaderList.add(oHrmPrmOrderHdrBean); + } + return arylstHeaderList; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmPrmOrderHdrBean oHrmPrmOrderHdrBean = (HrmPrmOrderHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmOrderHdrBean.getOrderNo())); + oParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmPrmOrderHdrBean.getEffecDate()))); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmOrderHdrBean.getEmpId())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmOrderHdrBean.getToGradeId())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmOrderHdrBean.getToDesigId())); + oParameters.add(new DBObject(7, 1, 12, oHrmPrmOrderHdrBean.getApproverId())); + oParameters.add(new DBObject(8, 1, 12, oHrmPrmOrderHdrBean.getRemarks())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(11, 1, 12, null)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMORDER.procUpsertHrPromOrderHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + updateEmpHistory(oHrmPrmOrderHdrBean.getEmpId(), oHrmPrmOrderHdrBean.getToDesigId(), oHrmPrmOrderHdrBean.getToGradeId(), oHrmPrmOrderHdrBean.getEffecDate()); + updateEmpPersonalDetail(oHrmPrmOrderHdrBean.getEmpId(), oHrmPrmOrderHdrBean.getToDesigId(), oHrmPrmOrderHdrBean.getToGradeId(), oHrmPrmOrderHdrBean.getEffecDate()); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "u")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmOrderHdrBean.getOrderNo())); + oParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmPrmOrderHdrBean.getEffecDate()))); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmOrderHdrBean.getEmpId())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmOrderHdrBean.getToGradeId())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmOrderHdrBean.getToDesigId())); + oParameters.add(new DBObject(7, 1, 12, oHrmPrmOrderHdrBean.getApproverId())); + oParameters.add(new DBObject(8, 1, 12, oHrmPrmOrderHdrBean.getRemarks())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(11, 1, 12, oHrmPrmOrderHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMORDER.procUpsertHrPromOrderHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void updateEmpHistory(String sEmpId, String sToDesigId, String sToGradeId, String sEffectDate) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Iterator oIt = null; + ArrayList arylstEmpPresDtls = getEmpPresentDetail(sEmpId); + oIt = arylstEmpPresDtls.iterator(); + while (oIt.hasNext()) { + HrmAprslEmpDtlsBean oHrmAprslEmpDtlsBean = oIt.next(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslEmpDtlsBean.getPresLoc())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslEmpDtlsBean.getDesignation())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslEmpDtlsBean.getGrade())); + arylstParam.add(new DBObject(5, 1, 12, sToDesigId)); + arylstParam.add(new DBObject(6, 1, 12, sToGradeId)); + arylstParam.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(sEffectDate))); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(10, 2, 12)); + arylstParam.add(new DBObject(11, 2, 12)); + arylstParam.add(new DBObject(12, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParam, "HRMPROMORDER.procUpsertHrmEmpIncr(?,?,?,?,?,?,?,?,?,?,?,?)"); + } + } + + public ArrayList getEmpPresentDetail(String sEmpId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstEmpPresentDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPORDER.procEmpPresDtls(?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstEmpPresentDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslEmpDtlsBean oHrmAprslEmpDtlsBean = new HrmAprslEmpDtlsBean(); + oHrmAprslEmpDtlsBean.setGrade(oRow.get("present_grade_id").getString()); + oHrmAprslEmpDtlsBean.setDesignation(oRow.get("present_designation_id").getString()); + oHrmAprslEmpDtlsBean.setPresLoc(oRow.get("present_site_id").getString()); + arylstEmpPresentDetail.add(oHrmAprslEmpDtlsBean); + } + return arylstEmpPresentDetail; + } + + public void updateEmpPersonalDetail(String sEmpId, String sToDesigId, String sToGradeId, String sEffectDate) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, sToDesigId)); + arylstParam.add(new DBObject(3, 1, 12, sToGradeId)); + arylstParam.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(sEffectDate))); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPROMORDER.procUpdateHrmEmpPers(?,?,?,?,?,?,?)"); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_PROM_ORDER"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmPrmOrderHdrBean)oBaseHeaderBean, oErrorList); + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmPrmOrderHdrBean oHrmPrmOrderHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmPrmOrderHdrBean.getEmpId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.employeeNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmOrderHdrBean.getOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.orderNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmOrderHdrBean.getToGrade())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.toGrade"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmOrderHdrBean.getEffecDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.effecDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmOrderHdrBean.getApproverId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.approvedBy"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmPrmOrderHdrBean)oBaseHeaderBean, arylstErrorList); + checkEffectiveDate((HrmPrmOrderHdrBean)oBaseHeaderBean, arylstErrorList); + } + reportError(arylstErrorList); + } + + private void checkEffectiveDate(HrmPrmOrderHdrBean oHrmPrmOrderHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select INCR_EFFECT_DATE,COMP_JOIN_DATE from HRM_EMP_PERS where ID='").concat(String.valueOf(oHrmPrmOrderHdrBean.getEmpId()))).concat(String.valueOf("'")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + DateFormat dateFormat1 = new SimpleDateFormat("dd-MMM-yyyy"); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + String lastPromDate = EnrgiseUtil.convertToString(oRow.get("INCR_EFFECT_DATE").getDate()); + String compJoinDate = EnrgiseUtil.convertToString(oRow.get("COMP_JOIN_DATE").getDate()); + if (EnrgiseUtil.checkString(lastPromDate)) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmPrmOrderHdrBean.getEffecDate(), lastPromDate); + if (dateFlag == -1 && dateFlag != -2) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.orderNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmPrmOrder.dateValidate", oParams, "E")); + } + } + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat1, oHrmPrmOrderHdrBean.getEffecDate(), compJoinDate); + if (dateFlag1 == -1 && dateFlag1 != -2) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.orderNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmPrmOrder.dateValidate1", oParams, "E")); + } + } + } + + private void checkUniqueHeader(HrmPrmOrderHdrBean oHrmPrmOrderHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_PROM_ORDER where ORDER_NO='").concat(String.valueOf(oHrmPrmOrderHdrBean.getOrderNo()))).concat(String.valueOf("'")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmPrmOrderHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmOrder.orderNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.sepappln.uniqueConstraintViolated", oParams, "E")); + } + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmQualCriteriaBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmQualCriteriaBO.java new file mode 100644 index 0000000..f6ec399 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmQualCriteriaBO.java @@ -0,0 +1,337 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmQualCriteriaDtlBean; +import wenrgise.hrms.bean.HrmPrmQualCriteriaHdrBean; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; + +public class HrmPrmQualCriteriaBO extends HrmBaseBO { + public HrmPrmQualCriteriaBO() {} + + public HrmPrmQualCriteriaBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getPrmQualCriteriaDetailMetaInfo(HrmPrmQualCriteriaQVO oHrmPrmQualCriteriaQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmPrmQualCriteriaQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmPrmQualCriteriaQVO.getDesignationId())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMQUALCRITERIA.proc_QualCriteriaDtlCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getPrmQualCriteriaDetail(HrmPrmQualCriteriaQVO oHrmPrmQualCriteriaQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oLocVavancyDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmQualCriteriaQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmQualCriteriaQVO.getDesignationId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMQUALCRITERIA.proc_QualCriteriaDetail(?,?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmPrmQualCriteriaDtlBean oHrmPrmQualCriteriaDtlBean = new HrmPrmQualCriteriaDtlBean(); + oHrmPrmQualCriteriaDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmPrmQualCriteriaDtlBean.setHdnQualificationId(oRow.get("QUAL_MST_ID").getString()); + oHrmPrmQualCriteriaDtlBean.setTxtQualCode(oRow.get("code").getString()); + oHrmPrmQualCriteriaDtlBean.setTxtQualDesc(oRow.get("name").getString()); + oHrmPrmQualCriteriaDtlBean.setTxtMinPercentage(oRow.get("MIN_PERC").getString()); + oHrmPrmQualCriteriaDtlBean.setStatus("Q"); + oLocVavancyDetail.add(oHrmPrmQualCriteriaDtlBean); + } + return oLocVavancyDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_PROM_QUAL_CRIT"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmPrmQualCriteria")) + saveQualCriteriaDetails(oBaseHeaderBean, oDetailBeanArray); + } + + private void saveQualCriteriaDetails(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + HrmPrmQualCriteriaHdrBean oHrmPrmQualCriteriaHdrBean = (HrmPrmQualCriteriaHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmPrmQualCriteriaDtlBean oHrmPrmQualCriteriaDtlBean = itrBean.next(); + if (oHrmPrmQualCriteriaDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMQUALCRITERIA.proc_UpsertQualCriteriaDtl(?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmPrmQualCriteriaDtlBean.getHdnQualificationId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmPrmQualCriteriaHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(5, 1, 12, oHrmPrmQualCriteriaHdrBean.getDesignationId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmPrmQualCriteriaDtlBean.getTxtMinPercentage())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmPrmQualCriteriaDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMQUALCRITERIA.proc_UpsertQualCriteriaDtl(?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmPrmQualCriteriaDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmPrmQualCriteriaDtlBean.getHdnQualificationId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmPrmQualCriteriaHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(5, 1, 12, oHrmPrmQualCriteriaHdrBean.getDesignationId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmPrmQualCriteriaDtlBean.getTxtMinPercentage())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmPrmQualCriteriaDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMPRMQUALCRITERIA.proc_DeletePrmQualCriteriaDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmPrmQualCriteriaDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public LovVO getHrmPrmQualPositionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmQualification.positionCode"); + arylstHeaderList.add("hrm.HrmQualification.desc"); + arylstHeaderList.add("hrm.HrmQualification.designation"); + arylstHeaderList.add("hrm.HrmQualification.scale"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMQUALCRITERIA.proc_GetPositionLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("Description").getString()); + oLOVBean.setDetailField4(oRow.get("Designation").getString()); + oLOVBean.setDetailField5(oRow.get("SCALE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmPrmQualificationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmQualification.txtQualificationCode"); + arylstHeaderList.add("hrm.HrmQualification.txtQualificationDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMQUALCRITERIA.proc_GetAQualificationLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmPrmQualCriteriaDtlBean oHrmPrmQualCriteriaDtlBean = oIt1.next(); + if (!oHrmPrmQualCriteriaDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryQualificationDtls(oHrmPrmQualCriteriaDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryQualificationDtls(HrmPrmQualCriteriaDtlBean oHrmPrmQualCriteriaDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmPrmQualCriteriaDtlBean.getTxtQualCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmQualification.txtQualificationCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmQualCriteriaDtlBean.getTxtMinPercentage())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmQualification.txtMinPercentage"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtQualCode", "hrm.HrmQualification.txtQualificationCode", oErrorList, true); + checkUniqueQualificationDtl(oDetailBeanArray, oErrorList); + checkNumericQualificationDtl(oDetailBeanArray, oErrorList); + } + reportError(oErrorList); + } + + private void checkUniqueQualificationDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkNumericQualificationDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmQualCriteriaDtlBean oHrmPrmQualCriteriaDtlBean = oIt1.next(); + if (!oHrmPrmQualCriteriaDtlBean.getTxtMinPercentage().equalsIgnoreCase("")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmQualification.txtMinPercentage"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmPrmQualCriteriaDtlBean.getTxtMinPercentage(), 2, 2, "P")) + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } + count++; + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmTestScoreBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmTestScoreBO.java new file mode 100644 index 0000000..fd086e0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmTestScoreBO.java @@ -0,0 +1,789 @@ +package wenrgise.hrms.ejb.business; + +import java.lang.reflect.Array; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmTestScoreDtlBean; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; + +public class HrmPrmTestScoreBO extends HrmBaseBO { + public HrmPrmTestScoreBO() {} + + public HrmPrmTestScoreBO(UserInfo oUserinfo) { + super(oUserinfo); + } + + public RecordMetaInfo getHrmPrmTCHdrMetaInfo(HrmPrmTestScoreQVO oHrmPrmTestScoreQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmTestScoreQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmTestScoreQVO.getPositionId())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmTestScoreQVO.getExamType())); + oParameters.add(new DBObject(4, 2, -5)); + oParameters.add(new DBObject(5, 2, 93)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMTESTSCORE.proc_GetHrPROMTCCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmPrmTCHdrInfo(HrmPrmTestScoreQVO oHrmPrmTestScoreQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmPrmTestScoreQVO == null) + oHrmPrmTestScoreQVO = new HrmPrmTestScoreQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmTestScoreQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmTestScoreQVO.getPositionId())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmTestScoreQVO.getExamType())); + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMTESTSCORE.proc_GetHrPROMTCHdrInfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean = new HrmPrmTestScoreHdrBean(); + oHrmPrmTestScoreHdrBean.setHeaderPrimaryKey(oRow.get("hdrid").getString()); + oHrmPrmTestScoreHdrBean.setExamDesc(oRow.get("description").getString()); + oHrmPrmTestScoreHdrBean.setExamType(oRow.get("exam_type").getString()); + oHrmPrmTestScoreHdrBean.setMaxPoints(oRow.get("max_point").getString()); + oHrmPrmTestScoreHdrBean.setMaxScore(oRow.get("max_score").getString()); + oHrmPrmTestScoreHdrBean.setGradeId(oRow.get("GRADE_ID").getString()); + oHrmPrmTestScoreHdrBean.setGradeCode(oRow.get("gradeCode").getString()); + oHrmPrmTestScoreHdrBean.setGradeDesc(oRow.get("gradeDesc").getString()); + oHrmPrmTestScoreHdrBean.setDesignationId(oRow.get("desigid").getString()); + oHrmPrmTestScoreHdrBean.setDesigCode(oRow.get("desigcode").getString()); + oHrmPrmTestScoreHdrBean.setDesigDesc(oRow.get("designation").getString()); + oHeaderList.add(oHrmPrmTestScoreHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmPrmTCDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMTESTSCORE.proc_HrAdvtDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmPrmTCDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmPosKPAPtsDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMTESTSCORE.proc_GetHrmAdvtDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmPosKPAPtsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean = new HrmPrmTestScoreDtlBean(); + oHrmPrmTestScoreDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmPrmTestScoreDtlBean.setTxtPoints(oRow.get("POINTS").getString()); + oHrmPrmTestScoreDtlBean.setStartField(oRow.get("SCORE_FROM").getString()); + oHrmPrmTestScoreDtlBean.setEndField(oRow.get("SCORE_TO").getString()); + oHrmPosKPAPtsDetail.add(oHrmPrmTestScoreDtlBean); + } + return oHrmPosKPAPtsDetail; + } + + public void initializeBOImpl() { + this.headerTable = "hrm_prom_scr_hdr"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + saveHrmTSDtl(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmTSDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean = oIt.next(); + if (oHrmPrmTestScoreDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPROMTESTSCORE.proc_UpsertHrmPrmTSDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmTestScoreDtlBean.getTxtPoints())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmTestScoreDtlBean.getStartField())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmTestScoreDtlBean.getEndField())); + oParameters.add(new DBObject(6, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmTestScoreDtlBean.getStatus().equals("U")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPROMTESTSCORE.proc_UpsertHrmPrmTSDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmTestScoreDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmTestScoreDtlBean.getTxtPoints())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmTestScoreDtlBean.getStartField())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmTestScoreDtlBean.getEndField())); + oParameters.add(new DBObject(6, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmPrmTestScoreDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMPROMTESTSCORE.proc_DeleteHrmPrmTSDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmTestScoreDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkMandatoryHeader((HrmPrmTestScoreHdrBean)oBaseHeaderBean); + checkforNumericfields((HrmPrmTestScoreHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmPrmTestScore")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean = oIt1.next(); + if (!oHrmPrmTestScoreDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryDtls(oHrmPrmTestScoreDtlBean, rowCount); + checkScoreValue(oHrmPrmTestScoreDtlBean, rowCount); + checkforNumericfields(oHrmPrmTestScoreDtlBean, rowCount); + rowCount++; + } + } + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean = (HrmPrmTestScoreHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmTestScoreHdrBean.getExamDesc())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmTestScoreHdrBean.getExamType())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmTestScoreHdrBean.getMaxPoints())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmTestScoreHdrBean.getMaxScore())); + oParameters.add(new DBObject(7, 1, 12, oHrmPrmTestScoreHdrBean.getGradeId())); + oParameters.add(new DBObject(8, 1, 12, oHrmPrmTestScoreHdrBean.getDesignationId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMTESTSCORE.proc_UpsertHrmPrmTSHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmPrmTestScoreHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHrmPrmTestScoreHdrBean.getExamDesc())); + oParameters.add(new DBObject(4, 1, 12, oHrmPrmTestScoreHdrBean.getExamType())); + oParameters.add(new DBObject(5, 1, 12, oHrmPrmTestScoreHdrBean.getMaxPoints())); + oParameters.add(new DBObject(6, 1, 12, oHrmPrmTestScoreHdrBean.getMaxScore())); + oParameters.add(new DBObject(7, 1, 12, oHrmPrmTestScoreHdrBean.getGradeId())); + oParameters.add(new DBObject(8, 1, 12, oHrmPrmTestScoreHdrBean.getDesignationId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMTESTSCORE.proc_UpsertHrmPrmTSHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oHrmCommonBO = new HrmCommonBO(); + oHrmCommonBO.deleteChildDetailRec("hrm_prom_scr_dtl", "PROM_SCRHDR_ID", oHrmPrmTestScoreHdrBean.getHeaderPrimaryKey(), null); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmPrmTestScoreHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPROMTESTSCORE.proc_DeleteHrmPrmTSHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void deleteDetailRecords(String sPrimkey) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean = (HrmPrmTestScoreHdrBean)oBaseHeaderBean; + String maxPoints = oHrmPrmTestScoreHdrBean.getMaxPoints(); + String maxScore = oHrmPrmTestScoreHdrBean.getMaxScore(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmPrmTestScoreHdrBean)oBaseHeaderBean); + checkDates((HrmPrmTestScoreHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmPrmTestScore")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + exclusiveItemMatGrp(oDetailBeanArray, oErrorList); + checkPointOrder(oDetailBeanArray, oErrorList); + checkMaxPoints(oDetailBeanArray, oErrorList, maxPoints, maxScore); + int rowcount = 1; + while (oIt1.hasNext()) { + HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean = oIt1.next(); + if (!oHrmPrmTestScoreDtlBean.getStatus().equalsIgnoreCase("D")) + continue; + findChildRecord(oHrmPrmTestScoreDtlBean, rowcount); + findLanguageChildRecord(oHrmPrmTestScoreDtlBean, rowcount); + findSkillChildRecord(oHrmPrmTestScoreDtlBean, rowcount); + findWorkChildRecord(oHrmPrmTestScoreDtlBean, rowcount); + rowcount++; + } + } + reportError(oErrorList); + } + } + + public LovVO getClassDataLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String code = oLovQueryVO.getProperty("code"); + String sQuery = "Select clsd.ID, clsd.NAME from HRM_CLASS_DTL clsd, HRM_CLASS_MST clsm where clsd.CLS_MST_ID = clsm.ID and clsm.CODE ="; + sQuery = String.valueOf(sQuery).concat(String.valueOf(code)); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" And upper(clsd.NAME) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getRefNoLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "select distinct advh.id,advh.ref_no from hrm_advt_hdr advh where 1=1"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(advh.ref_no) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.referenceNo"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("ref_no").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPositionCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "SELECT A.ID, A.DESCRIPTION, B.ID as desigid, B.name as PositionDesc FROM HRM_POS_INF_HDR A, HRM_CLASS_DTL B WHERE A.DESIGNATION_ID=B.ID(+)"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(DESCRIPTION) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.forPosition"); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("desigid").getString()); + oLOVBean.setDetailField4(oRow.get("PositionDesc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkScoreValue(HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (EnrgiseUtil.checkString(oHrmPrmTestScoreDtlBean.getStartField()) && EnrgiseUtil.checkString(oHrmPrmTestScoreDtlBean.getEndField())) + if (Double.parseDouble(oHrmPrmTestScoreDtlBean.getStartField()) >= Double.parseDouble(oHrmPrmTestScoreDtlBean.getEndField())) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.HrmTestScore.errorinscore", oParam, "E"); + } + reportError(oErrList); + } + + private void checkMandatoryHeader(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreHdrBean.getGradeCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmKPARating.gradeCode"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreHdrBean.getExamType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.examType"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreHdrBean.getExamDesc())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.examDesc"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreHdrBean.getMaxPoints())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.maxPoints"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreHdrBean.getMaxScore())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.maxScore"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + private void checkMandatoryDtls(HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreDtlBean.getTxtPoints())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.txtPoints"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreDtlBean.getStartField())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.StartField"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmPrmTestScoreDtlBean.getEndField())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.EndField"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from hrm_prom_scr_hdr where GRADE_ID='").concat(String.valueOf(oHrmPrmTestScoreHdrBean.getGradeId()))).concat(String.valueOf("' and EXAM_TYPE='"))).concat(String.valueOf(oHrmPrmTestScoreHdrBean.getExamType()))).concat(String.valueOf("' and DESIGNATION_ID='"))).concat(String.valueOf(oHrmPrmTestScoreHdrBean.getDesignationId()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmPrmTestScoreHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("hrm.HrmTestScore.uniqueConstraintViolated", "E"); + } + } + + private void checkDates(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void findChildRecord(HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void exclusiveItemMatGrp(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String[] sArgs = (String[])Array.newInstance(Class.forName("java.lang.String"), 2); + sArgs[0] = "StartField"; + sArgs[1] = "EndField"; + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, sArgs, "hrm.advt.detail.exclusive", oErrorList); + } + + private void checkPointOrder(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt = oDetailBeanArray.iterator(); + int i = 1; + while (oIt.hasNext()) { + int rowCount = 1; + HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean = oIt.next(); + if (i != 1) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean1 = oIt1.next(); + if (Double.parseDouble(oHrmPrmTestScoreDtlBean.getStartField()) > Double.parseDouble(oHrmPrmTestScoreDtlBean1.getStartField()) && Double.parseDouble(oHrmPrmTestScoreDtlBean.getTxtPoints()) < Double.parseDouble(oHrmPrmTestScoreDtlBean1.getTxtPoints())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.txtPoints"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(i)); + throw new EnrgiseApplicationException("hrm.HrmTestScore.errorinPoints", oParam, "E"); + } + rowCount++; + } + } + i++; + } + } + + private void checkMaxPoints(ArrayList oDetailBeanArray, ArrayList oErrorList, String maxPoints, String maxScore) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt.hasNext()) { + HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean = oIt.next(); + if (Double.parseDouble(oHrmPrmTestScoreDtlBean.getEndField()) > Double.parseDouble(maxScore)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.StartField"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.HrmTestScore.errorinmaxscore", oParam, "E"); + } + if (Double.parseDouble(oHrmPrmTestScoreDtlBean.getTxtPoints()) > Double.parseDouble(maxPoints)) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.EndField"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.HrmTestScore.errorinmaxscore", oParam, "E"); + } + if (Double.parseDouble(oHrmPrmTestScoreDtlBean.getTxtPoints()) > Double.parseDouble(maxPoints)) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.HrmTestScore.errorinmaxpoints", oParam, "E"); + } + rowCount++; + } + } + + private void findLanguageChildRecord(HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void findSkillChildRecord(HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void findWorkChildRecord(HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public LovVO getPositionCodeLOVNew(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "Select distinct poshdr.ID,poshdr.CODE, poshdr.Description,poshdr.DESIGNATION_ID,desigdtl.NAME as Designation,poshdr.scale_id,scaledtl.NAME as SCALE "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" from HRM_POS_INF_HDR poshdr, HRM_CLASS_DTL desigdtl, HRM_CLASS_DTL scaledtl WHERE poshdr.DESIGNATION_ID = desigdtl.ID(+) and poshdr.scale_id = scaledtl.id(+) ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(poshdr.CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(poshdr.Description) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestScore.positionCode"); + oHeaderList.add("hrm.HrmTestScore.desc"); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestScore.designation"); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestScore.scale"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("description").getString()); + oLOVBean.setDetailField4(oRow.get("DESIGNATION_ID").getString()); + oLOVBean.setDetailField5(oRow.get("Designation").getString()); + oLOVBean.setDetailField6(oRow.get("scale_id").getString()); + oLOVBean.setDetailField7(oRow.get("scale").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPositionCodeLOVQuery(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "Select distinct a.ID,a.CODE,a.Description,a.DESIGNATION_ID,b.NAME as Designation,a.scale_id, c.NAME as Scale "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" From HRM_POS_INF_HDR a, HRM_CLASS_DTL b,HRM_CLASS_DTL c,HRM_PROM_SCR_HDR d WHERE a.DESIGNATION_ID = b.ID(+) and a.SCALE_ID = c.ID(+) and d.POS_INF_HDR_ID = a.ID ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(a.CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(a.Description) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestScore.positionCode"); + oHeaderList.add("hrm.HrmTestScore.desc"); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestScore.designation"); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestScore.scale"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + oLOVBean.setDetailField3(oRow.get("description").getString()); + oLOVBean.setDetailField4(oRow.get("DESIGNATION_ID").getString()); + oLOVBean.setDetailField5(oRow.get("Designation").getString()); + oLOVBean.setDetailField6(oRow.get("scale_id").getString()); + oLOVBean.setDetailField7(oRow.get("scale").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkforNumericfields(HrmPrmTestScoreDtlBean oHrmPrmTestScoreDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oHrmPrmTestScoreDtlBean.getStartField(), 3, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.StartField"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmTestScoreDtlBean.getTxtPoints(), 3, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.txtPoints"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmTestScoreDtlBean.getEndField(), 3, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.EndField"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.detail.nonnumeric", oParam)); + } + reportError(oErrList); + } + + private void checkforNumericfields(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oHrmPrmTestScoreHdrBean.getMaxScore(), 3, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.maxScore"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.header.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oHrmPrmTestScoreHdrBean.getMaxPoints(), 3, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestScore.txtPoints"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oErrList.add(new EnrgiseMessageKeyException("hrm.HrmTestScore.header.nonnumeric", oParam)); + } + reportError(oErrList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmViewAssBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmViewAssBO.java new file mode 100644 index 0000000..6752249 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmPrmViewAssBO.java @@ -0,0 +1,721 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmPrmViewAssDtlBean; + +public class HrmPrmViewAssBO extends HrmBaseBO { + public HrmPrmViewAssBO() {} + + public HrmPrmViewAssBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getPrmViewAssDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMVIEWASS.proc_ViewAssDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getPrmViewAssDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oLocVavancyDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMPRMVIEWASS.proc_ViewAssDetail(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = new HrmPrmViewAssDtlBean(); + oHrmPrmViewAssDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmPrmViewAssDtlBean.setEmployeeId(oRow.get("empId").getString()); + oHrmPrmViewAssDtlBean.setPositionId(oRow.get("designation_id").getString()); + oHrmPrmViewAssDtlBean.setHdnPrevDtlId(oRow.get("prom_ntcdt_id").getString()); + oHrmPrmViewAssDtlBean.setHeaderPositionId(oRow.get("PosInfoHdrId").getString()); + oHrmPrmViewAssDtlBean.setTxtEmpNo(oRow.get("EMP_NO").getString()); + oHrmPrmViewAssDtlBean.setTxtEmpName(oRow.get("EMPNAME").getString()); + oHrmPrmViewAssDtlBean.setTxtFromPosCode(oRow.get("designation").getString()); + oHrmPrmViewAssDtlBean.setScaleId(oRow.get("scale_id").getString()); + oHrmPrmViewAssDtlBean.setTxtScale(oRow.get("Scale").getString()); + oHrmPrmViewAssDtlBean.setTxtSrvYrs(oRow.get("YEAR_SERVICE").getString()); + oHrmPrmViewAssDtlBean.setTxtCurrSrvYrs(oRow.get("YEAR_CUR_POST").getString()); + oHrmPrmViewAssDtlBean.setTxtSrvYrsPoints(oRow.get("YEAR_SERVICE_POINTS").getString()); + oHrmPrmViewAssDtlBean.setTxtAvgAparPts(oRow.get("AVG_APAR_RATING").getString()); + oHrmPrmViewAssDtlBean.setTxtAparPts(oRow.get("APAR_POINT").getString()); + oHrmPrmViewAssDtlBean.setTxtWrittenTestMarks(oRow.get("WRITTEN_TEST_MARKS").getString()); + oHrmPrmViewAssDtlBean.setTxtWrittenTestPts(oRow.get("WRITTEN_TEST_POINTS").getString()); + oHrmPrmViewAssDtlBean.setTxtGDMarks(oRow.get("GD_MARKS").getString()); + oHrmPrmViewAssDtlBean.setTxtGDPts(oRow.get("GD_POINTS").getString()); + oHrmPrmViewAssDtlBean.setTxtInterviewMarks(oRow.get("INTERVIEW_MARKS").getString()); + oHrmPrmViewAssDtlBean.setTxtInterviewPts(oRow.get("INTERVIEW_POINTS").getString()); + oHrmPrmViewAssDtlBean.setTxtTotalPtsAwarded(oRow.get("AVERAGE_POINTS").getString()); + String prmFlag = oRow.get("PROMOTION_FLAG").getString(); + if (EnrgiseUtil.checkString(prmFlag)) { + boolean promotion; + prmFlag = prmFlag.trim(); + if (prmFlag.equalsIgnoreCase("Y")) { + promotion = true; + } else { + promotion = false; + } + oHrmPrmViewAssDtlBean.setTxtEligProm(promotion); + } + oHrmPrmViewAssDtlBean.setStatus("Q"); + oLocVavancyDetail.add(oHrmPrmViewAssDtlBean); + } + return oLocVavancyDetail; + } + + public void initializeBOImpl() { + this.headerTable = "hrm_asst_promot"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + saveViewAssDetails(oDetailBeanArray); + } + + private void saveViewAssDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = itrBean.next(); + if (oHrmPrmViewAssDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMVIEWASS.proc_UpsertViewAssDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmPrmViewAssDtlBean.getEmployeeId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmPrmViewAssDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmPrmViewAssDtlBean.getPositionId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmPrmViewAssDtlBean.getTxtSrvYrs())); + arylstParam.add(new DBObject(7, 1, 12, oHrmPrmViewAssDtlBean.getTxtCurrSrvYrs())); + arylstParam.add(new DBObject(8, 1, 12, oHrmPrmViewAssDtlBean.getTxtSrvYrsPoints())); + arylstParam.add(new DBObject(9, 1, 12, oHrmPrmViewAssDtlBean.getTxtAvgAparPts())); + arylstParam.add(new DBObject(10, 1, 12, oHrmPrmViewAssDtlBean.getTxtAparPts())); + arylstParam.add(new DBObject(11, 1, 12, oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks())); + arylstParam.add(new DBObject(12, 1, 12, oHrmPrmViewAssDtlBean.getTxtGDMarks())); + arylstParam.add(new DBObject(13, 1, 12, oHrmPrmViewAssDtlBean.getTxtInterviewMarks())); + arylstParam.add(new DBObject(14, 1, 12, oHrmPrmViewAssDtlBean.getTxtTotalPtsAwarded())); + arylstParam.add(new DBObject(15, 1, 12, oHrmPrmViewAssDtlBean.getHdnPromEligibility())); + arylstParam.add(new DBObject(16, 1, 12, oHrmPrmViewAssDtlBean.getScaleId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmPrmViewAssDtlBean.getHeaderPositionId())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(19, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmPrmViewAssDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMPRMVIEWASS.proc_UpsertViewAssDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmPrmViewAssDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmPrmViewAssDtlBean.getEmployeeId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmPrmViewAssDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmPrmViewAssDtlBean.getPositionId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmPrmViewAssDtlBean.getTxtSrvYrs())); + arylstParam.add(new DBObject(7, 1, 12, oHrmPrmViewAssDtlBean.getTxtCurrSrvYrs())); + arylstParam.add(new DBObject(8, 1, 12, oHrmPrmViewAssDtlBean.getTxtSrvYrsPoints())); + arylstParam.add(new DBObject(9, 1, 12, oHrmPrmViewAssDtlBean.getTxtAvgAparPts())); + arylstParam.add(new DBObject(10, 1, 12, oHrmPrmViewAssDtlBean.getTxtAparPts())); + arylstParam.add(new DBObject(11, 1, 12, oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks())); + arylstParam.add(new DBObject(12, 1, 12, oHrmPrmViewAssDtlBean.getTxtGDMarks())); + arylstParam.add(new DBObject(13, 1, 12, oHrmPrmViewAssDtlBean.getTxtInterviewMarks())); + arylstParam.add(new DBObject(14, 1, 12, oHrmPrmViewAssDtlBean.getTxtTotalPtsAwarded())); + arylstParam.add(new DBObject(15, 1, 12, oHrmPrmViewAssDtlBean.getHdnPromEligibility())); + arylstParam.add(new DBObject(16, 1, 12, oHrmPrmViewAssDtlBean.getScaleId())); + arylstParam.add(new DBObject(17, 1, 12, oHrmPrmViewAssDtlBean.getHeaderPositionId())); + arylstParam.add(new DBObject(18, 1, 12, this.oUserInfo.getUserId())); + arylstParam.add(new DBObject(19, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmPrmViewAssDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMPRMVIEWASS.proc_DeletePrmViewAssDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmPrmViewAssDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public LovVO getPrmViewAssSiteCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmPrmGenAss.siteCode"); + arylstHeaderList.add("hrm.HrmPrmGenAss.siteDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMORGSETUPLOV.proc_GetSiteCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getPrmViewAssNoticeCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmPrmViewAss.prmNo"); + arylstHeaderList.add("hrm.HrmPrmViewAss.noticeDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMVIEWASS.proc_GetNoticeNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("notice_no").getString()); + oLOVBean.setDetailField3(oRow.get("description").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getPrmViewAssPromotionCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmPrmViewAss.toPosition"); + arylstHeaderList.add("hrm.HrmPrmViewAss.posDesc"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + String sNoticeNo = oLovQueryVO.getProperty("NoticeNo"); + System.out.println(sNoticeNo); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sNoticeNo)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMVIEWASS.proc_GetPromotionNoLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("NtcDtlId").getString()); + oLOVBean.setDetailField2(oRow.get("id").getString()); + oLOVBean.setDetailField3(oRow.get("CODE").getString()); + oLOVBean.setDetailField4(oRow.get("Description").getString()); + oLOVBean.setDetailField5(oRow.get("HIERARCHY").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getPrmEmployeeNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmPrmViewAss.empNo"); + arylstHeaderList.add("hrm.HrmPrmViewAss.empName"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmPrmViewAss.fromPosCode"); + arylstHeaderList.add("hrm.HrmPrmViewAss.scale"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + String sHeirarchy = oLovQueryVO.getProperty("Heirarchy"); + System.out.println(sHeirarchy); + String sntcDtlId = oLovQueryVO.getProperty("ntcDtlId"); + System.out.println(sntcDtlId); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sHeirarchy)); + arylstParam.add(new DBObject(4, 1, 12, sntcDtlId)); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMVIEWASS.proc_GetEmployeeNoLOVdata(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField4(oRow.get("desgnId").getString()); + oLOVBean.setDetailField5(oRow.get("ScaleId").getString()); + oLOVBean.setDetailField6(oRow.get("Designation").getString()); + oLOVBean.setDetailField7(oRow.get("Scale").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getPrmViewAssPosCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmPrmViewAss.fromPosCode"); + arylstHeaderList.add("hrm.HrmPrmViewAss.posDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMPRMVIEWASS.proc_GetPromotionNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("Description").getString()); + oLOVBean.setDetailField4(oRow.get("SCALE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + if (!oHrmPrmViewAssDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryAssessmentDtls(oHrmPrmViewAssDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryAssessmentDtls(HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtEmpNo", "hrm.HrmPrmViewAss.empNo", oErrorList, true); + checkToPositionTest(oDetailBeanArray, oErrorList); + checkFirstNumericAssessmentDtl(oDetailBeanArray, oErrorList); + checkNumericAssessmentDtl(oDetailBeanArray, oErrorList); + checkWrittenMarksPoints(oDetailBeanArray, oErrorList); + checkGDMarksPoints(oDetailBeanArray, oErrorList); + checkInterviewMarksPoints(oDetailBeanArray, oErrorList); + } + reportError(oErrorList); + } + + private void checkUniqueAssessmentDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from HRM_PROM_assesment where E_PER_DTL_ID= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getEmployeeId()))).concat(String.valueOf("' and prom_ntcdt_id='"))).concat(String.valueOf(oHrmPrmViewAssDtlBean.getHdnPrevDtlId()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmPrmViewAssDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmViewAss.empNo"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + } + + private void checkToPositionTest(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + if (EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtInterviewMarks()) || EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks()) || EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtGDMarks())) { + String sQuery = String.valueOf(String.valueOf(" select hpsh.id from hrm_prom_scr_hdr hpsh where hpsh.pos_inf_hdr_id= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getHeaderPositionId()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() == 0) { + ArrayList oParams = new ArrayList(); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.detail.prmViewAssToPosition", oParams, "E")); + } + } + count++; + } + } + + private void checkWrittenMarksPoints(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + if (EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" select hpsd.id from hrm_prom_scr_hdr hpsh,hrm_prom_scr_dtl hpsd where hpsh.pos_inf_hdr_id= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getHeaderPositionId()))).concat(String.valueOf("' and hpsh.exam_type='W' and hpsd.prom_scrhdr_id=hpsh.id and hpsd.score_from <= '"))).concat(String.valueOf(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks()))).concat(String.valueOf("' and hpsd.score_to >= '"))).concat(String.valueOf(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() == 0) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.detail.prmViewAssWritten", oParams, "E")); + } + } + count++; + } + } + + private void checkGDMarksPoints(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + if (EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtGDMarks())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" select hpsd.id from hrm_prom_scr_hdr hpsh,hrm_prom_scr_dtl hpsd where hpsh.pos_inf_hdr_id= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getHeaderPositionId()))).concat(String.valueOf("' and hpsh.exam_type='G' and hpsd.prom_scrhdr_id=hpsh.id and hpsd.score_from <= '"))).concat(String.valueOf(oHrmPrmViewAssDtlBean.getTxtGDMarks()))).concat(String.valueOf("' and hpsd.score_to >= '"))).concat(String.valueOf(oHrmPrmViewAssDtlBean.getTxtGDMarks()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() == 0) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.detail.prmViewAssGD", oParams, "E")); + } + } + count++; + } + } + + private void checkInterviewMarksPoints(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + if (EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtInterviewMarks())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" select hpsd.id from hrm_prom_scr_hdr hpsh,hrm_prom_scr_dtl hpsd where hpsh.pos_inf_hdr_id= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getHeaderPositionId()))).concat(String.valueOf("' and hpsh.exam_type='I' and hpsd.prom_scrhdr_id=hpsh.id and hpsd.score_from <= '"))).concat(String.valueOf(oHrmPrmViewAssDtlBean.getTxtInterviewMarks()))).concat(String.valueOf("' and hpsd.score_to >= '"))).concat(String.valueOf(oHrmPrmViewAssDtlBean.getTxtInterviewMarks()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() == 0) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.detail.prmViewAssInterview", oParams, "E")); + } + } + count++; + } + } + + private void checkNumericAssessmentDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + if (EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks())) { + String sQuery = String.valueOf(String.valueOf(" select hpsh.max_score as Maxmarks from hrm_prom_scr_hdr hpsh where hpsh.pos_inf_hdr_id= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getHeaderPositionId()))).concat(String.valueOf("' and hpsh.exam_type='W' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + oRow = oIt.next(); + String maxMarks = oRow.get("Maxmarks").getString(); + if (Double.parseDouble(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks()) > Double.parseDouble(maxMarks)) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmViewAss.writtenTestMarks"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.viewAssdetail.invalidWrittenMarks", oParams, "E")); + } + } + } + if (EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtGDMarks())) { + String sQuery = String.valueOf(String.valueOf(" select hpsh.max_score as Maxmarks from hrm_prom_scr_hdr hpsh where hpsh.pos_inf_hdr_id= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getHeaderPositionId()))).concat(String.valueOf("' and hpsh.exam_type='G' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (Double.parseDouble(oHrmPrmViewAssDtlBean.getTxtGDMarks()) > Double.parseDouble(oRow.get("Maxmarks").getString())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmViewAss.GDMarks"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.viewAssdetail.invalidGDMarks", oParams, "E")); + } + } + } + if (EnrgiseUtil.checkString(oHrmPrmViewAssDtlBean.getTxtInterviewMarks())) { + String sQuery = String.valueOf(String.valueOf(" select hpsh.max_score as Maxmarks from hrm_prom_scr_hdr hpsh where hpsh.pos_inf_hdr_id= '").concat(String.valueOf(oHrmPrmViewAssDtlBean.getHeaderPositionId()))).concat(String.valueOf("' and hpsh.exam_type='I' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (Double.parseDouble(oHrmPrmViewAssDtlBean.getTxtInterviewMarks()) > Double.parseDouble(oRow.get("Maxmarks").getString())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmViewAss.interviewMarks"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.hrms.viewAssdetail.invalidInterviewMarks", oParams, "E")); + } + } + } + count++; + } + } + + private void checkFirstNumericAssessmentDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmPrmViewAssDtlBean oHrmPrmViewAssDtlBean = oIt1.next(); + if (!oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks().equalsIgnoreCase("")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmViewAss.writtenTestMarks"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks(), 2, 2, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmPrmViewAssDtlBean.getTxtWrittenTestMarks()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + if (!oHrmPrmViewAssDtlBean.getTxtGDMarks().equalsIgnoreCase("")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmViewAss.GDMarks"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmPrmViewAssDtlBean.getTxtGDMarks(), 2, 2, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmPrmViewAssDtlBean.getTxtGDMarks()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + if (!oHrmPrmViewAssDtlBean.getTxtInterviewMarks().equalsIgnoreCase("")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmPrmViewAss.interviewMarks"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmPrmViewAssDtlBean.getTxtInterviewMarks(), 2, 2, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmPrmViewAssDtlBean.getTxtInterviewMarks()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + count++; + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvAttrBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvAttrBO.java new file mode 100644 index 0000000..e090317 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvAttrBO.java @@ -0,0 +1,1487 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmRecAdvAttrJobDescDtlBean; +import wenrgise.hrms.bean.HrmRecAdvAttrLngReqDtlBean; +import wenrgise.hrms.bean.HrmRecAdvAttrLocVacencyDtlBean; +import wenrgise.hrms.bean.HrmRecAdvAttrQualReqDtlBean; +import wenrgise.hrms.bean.HrmRecAdvAttrSkillReqDtlBean; +import wenrgise.hrms.bean.HrmRecAdvAttrWorkExpDtlBean; + +public class HrmRecAdvAttrBO extends HrmBaseBO { + public HrmRecAdvAttrBO() {} + + public HrmRecAdvAttrBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getRecLocVacencyDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_LocVacencyDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getRecLngReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_LngReqDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getRecQualReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_QualReqDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getRecSkillReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_SkillReqDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getRecWorkExpDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_WorkExpDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getRecJobDescDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_jobdescdtlcount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getRecLocVacencyDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oLocVavancyDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVATTRDTL.proc_LocVacencyDetail(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmRecAdvAttrLocVacencyDtlBean oHrmRecAdvAttrLocVacencyDtlBean = new HrmRecAdvAttrLocVacencyDtlBean(); + oHrmRecAdvAttrLocVacencyDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setHdnLocationId(oRow.get("gen_site_id").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setHdnPrevDtlId(oRow.get("adt_dt_id").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setTxtLocCode(oRow.get("code").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setTxtLocDesc(oRow.get("name").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setTxtState(oRow.get("GLOBAL_CODE_DESC").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setTxtStateCode(oRow.get("STATE_CODE").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setTxtStateId(oRow.get("GLOBAL_CODE_TYPE").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setTxtCity(oRow.get("CITY").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setTxtNoOfVacancy(oRow.get("vac_no").getString()); + oHrmRecAdvAttrLocVacencyDtlBean.setStatus("Q"); + oLocVavancyDetail.add(oHrmRecAdvAttrLocVacencyDtlBean); + } + return oLocVavancyDetail; + } + + public ArrayList getRecLngReqDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oLngReqDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVATTRDTL.proc_LngReqDetail(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmRecAdvAttrLngReqDtlBean oHrmRecAdvAttrLngReqDtlBean = new HrmRecAdvAttrLngReqDtlBean(); + oHrmRecAdvAttrLngReqDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecAdvAttrLngReqDtlBean.setHdnLanguageId(oRow.get("lang_mst_id").getString()); + oHrmRecAdvAttrLngReqDtlBean.setHdnPrevDtlId(oRow.get("adt_dt_id").getString()); + oHrmRecAdvAttrLngReqDtlBean.setTxtLangCode(oRow.get("code").getString()); + oHrmRecAdvAttrLngReqDtlBean.setTxtLangDesc(oRow.get("description").getString()); + oHrmRecAdvAttrLngReqDtlBean.setTxtReqType(oRow.get("requirement_type").getString()); + oHrmRecAdvAttrLngReqDtlBean.setStatus("Q"); + oLngReqDetail.add(oHrmRecAdvAttrLngReqDtlBean); + } + return oLngReqDetail; + } + + public ArrayList getRecQualReqDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oQuaReqDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVATTRDTL.proc_QualReqDetail(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmRecAdvAttrQualReqDtlBean oHrmRecAdvAttrQualReqDtlBean = new HrmRecAdvAttrQualReqDtlBean(); + oHrmRecAdvAttrQualReqDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecAdvAttrQualReqDtlBean.setHdnQualificationId(oRow.get("qual_mst_id").getString()); + oHrmRecAdvAttrQualReqDtlBean.setHdnPrevDtlId(oRow.get("adt_dt_id").getString()); + oHrmRecAdvAttrQualReqDtlBean.setTxtQualCode(oRow.get("code").getString()); + oHrmRecAdvAttrQualReqDtlBean.setTxtQualDesc(oRow.get("name").getString()); + oHrmRecAdvAttrQualReqDtlBean.setTxtMandatoryFlag(oRow.get("mandatory_flag").getString()); + oHrmRecAdvAttrQualReqDtlBean.setTxtMaxmQualFlag(oRow.get("max_qual_flag").getString()); + oHrmRecAdvAttrQualReqDtlBean.setTxtExposureIn(oRow.get("exposure").getString()); + oHrmRecAdvAttrQualReqDtlBean.setTxtSpecialisation(oRow.get("specilisation").getString()); + oHrmRecAdvAttrQualReqDtlBean.setStatus("Q"); + oQuaReqDetail.add(oHrmRecAdvAttrQualReqDtlBean); + } + return oQuaReqDetail; + } + + public ArrayList getRecSkillReqDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oSkillReqDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVATTRDTL.proc_SkillReqDetail(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmRecAdvAttrSkillReqDtlBean oHrmRecAdvAttrSkillReqDtlBean = new HrmRecAdvAttrSkillReqDtlBean(); + oHrmRecAdvAttrSkillReqDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecAdvAttrSkillReqDtlBean.setHdnSkillId(oRow.get("skill_mst_id").getString()); + oHrmRecAdvAttrSkillReqDtlBean.setHdnPrevDtlId(oRow.get("adt_dt_id").getString()); + oHrmRecAdvAttrSkillReqDtlBean.setTxtSkillCode(oRow.get("code").getString()); + oHrmRecAdvAttrSkillReqDtlBean.setTxtSkillDesc(oRow.get("name").getString()); + oHrmRecAdvAttrSkillReqDtlBean.setTxtSkill(oRow.get("SKILL_DESC").getString()); + oHrmRecAdvAttrSkillReqDtlBean.setTxtRemarks(oRow.get("REMARKS").getString()); + oHrmRecAdvAttrSkillReqDtlBean.setStatus("Q"); + oSkillReqDetail.add(oHrmRecAdvAttrSkillReqDtlBean); + } + return oSkillReqDetail; + } + + public ArrayList getRecWorkExpDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oWorkExpDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVATTRDTL.proc_WorkExpDetail(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmRecAdvAttrWorkExpDtlBean oHrmRecAdvAttrWorkExpDtlBean = new HrmRecAdvAttrWorkExpDtlBean(); + oHrmRecAdvAttrWorkExpDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setWorkId(oRow.get("designation_id").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setHdnPrevDtlId(oRow.get("adt_dt_id").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setTxtMaxWrkExp(oRow.get("max_work_exp").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setTxtMinWrkExp(oRow.get("min_work_exp").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setTxtReqExp(oRow.get("code").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setTxtWorkDesc(oRow.get("name").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setTxtExpArea(oRow.get("EXPERIENCE_AREA").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setTxtExpIn(oRow.get("EXPOSURE_IN").getString()); + oHrmRecAdvAttrWorkExpDtlBean.setStatus("Q"); + oWorkExpDetail.add(oHrmRecAdvAttrWorkExpDtlBean); + } + return oWorkExpDetail; + } + + public ArrayList getRecJobDescDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oWorkExpDetail = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVATTRDTL.proc_JobDescDetail(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + HrmRecAdvAttrJobDescDtlBean oHrmRecAdvAttrJobDescDtlBean = new HrmRecAdvAttrJobDescDtlBean(); + oHrmRecAdvAttrJobDescDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecAdvAttrJobDescDtlBean.setTxtSrlNo(oRow.get("SRL_NO").getString()); + oHrmRecAdvAttrJobDescDtlBean.setHdnPrevDtlId(oRow.get("adt_dt_id").getString()); + oHrmRecAdvAttrJobDescDtlBean.setTxtJobDesc(oRow.get("JOB_REQ").getString()); + oHrmRecAdvAttrJobDescDtlBean.setStatus("Q"); + oWorkExpDetail.add(oHrmRecAdvAttrJobDescDtlBean); + } + return oWorkExpDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_ADVT_DTL"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return new String(); + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLocVacencyDtl")) { + saveLocVacencyDetails(oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLngReqDtl")) { + saveLanguageReqDetails(oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrQualReqDtl")) { + saveQuaReqDetails(oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrSkillReqDtl")) { + saveSkillReqDetails(oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrJobDesc")) { + saveJobDescDetails(oDetailBeanArray); + } else { + saveWorkExpDetails(oDetailBeanArray); + } + } + + private void saveLocVacencyDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecAdvAttrLocVacencyDtlBean oHrmRecAdvAttrLocVacencyDtlBean = itrBean.next(); + if (oHrmRecAdvAttrLocVacencyDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertLocVacencyDtl(?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getHdnLocationId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getTxtStateCode())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getTxtCity())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getTxtNoOfVacancy())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrLocVacencyDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertLocVacencyDtl(?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getHdnLocationId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getTxtStateCode())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getTxtCity())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getTxtNoOfVacancy())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrLocVacencyDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECADVATTRDTL.proc_DeleteLocationDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecAdvAttrLocVacencyDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveLanguageReqDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecAdvAttrLngReqDtlBean oHrmRecAdvAttrLngReqDtlBean = itrBean.next(); + if (oHrmRecAdvAttrLngReqDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertLngReqDtl(?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getHdnLanguageId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getTxtReqType())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrLngReqDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertLngReqDtl(?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getHdnLanguageId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getTxtReqType())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrLngReqDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECADVATTRDTL.proc_DeleteLanguageDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecAdvAttrLngReqDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveQuaReqDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecAdvAttrQualReqDtlBean oHrmRecAdvAttrQualReqDtlBean = itrBean.next(); + if (oHrmRecAdvAttrQualReqDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertQuaReqDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getHdnQualificationId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtSpecialisation())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtExposureIn())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtMandatoryFlag())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtMaxmQualFlag())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrQualReqDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertQuaReqDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getHdnQualificationId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtSpecialisation())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtExposureIn())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtMandatoryFlag())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getTxtMaxmQualFlag())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrQualReqDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECADVATTRDTL.proc_DeleteQualificationDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecAdvAttrQualReqDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveSkillReqDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecAdvAttrSkillReqDtlBean oHrmRecAdvAttrSkillReqDtlBean = itrBean.next(); + if (oHrmRecAdvAttrSkillReqDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertSkillReqDtl(?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getHdnSkillId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getTxtSkill())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getTxtRemarks())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrSkillReqDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertSkillReqDtl(?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getHdnSkillId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getTxtSkill())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getTxtRemarks())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrSkillReqDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECADVATTRDTL.proc_DeleteSkillsDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecAdvAttrSkillReqDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveWorkExpDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecAdvAttrWorkExpDtlBean oHrmRecAdvAttrWorkExpDtlBean = itrBean.next(); + if (oHrmRecAdvAttrWorkExpDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertWorkExpDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getWorkId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtExpArea())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtExpIn())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrWorkExpDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_UpsertWorkExpDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getWorkId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtExpArea())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getTxtExpIn())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrWorkExpDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECADVATTRDTL.proc_DeleteWorkDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecAdvAttrWorkExpDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveJobDescDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecAdvAttrJobDescDtlBean oHrmRecAdvAttrJobDescDtlBean = itrBean.next(); + if (oHrmRecAdvAttrJobDescDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_upsertjobdescdtl(?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "N")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getTxtJobDesc())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getTxtSrlNo())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrJobDescDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVATTRDTL.proc_upsertjobdescdtl(?,?,?,?,?,?,?)"); + bUpsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getHdnPrevDtlId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getTxtJobDesc())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getTxtSrlNo())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecAdvAttrJobDescDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECADVATTRDTL.proc_deletejobdesc(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecAdvAttrJobDescDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public LovVO getHrmRecAttrLocationLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.locCode"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.locDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_GetAdvLocationLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecAttrQualificationLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.qualCode"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.qualdescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_GetQualificationLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecAttrLanguageLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.langCode"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.langDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_GetLanguageLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecAttrSkillLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.skillCode"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.skillDesc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_GetSkillLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecAttrWorkLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.reqExp"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.Desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECADVATTRDTL.proc_GetWorkExpLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLocVacencyDtl")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmRecAdvAttrLocVacencyDtlBean oHrmRecAdvAttrLocVacencyDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrLocVacencyDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryLocationDtls(oHrmRecAdvAttrLocVacencyDtlBean, rowCount, oErrorList); + rowCount++; + } + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLngReqDtl")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmRecAdvAttrLngReqDtlBean oHrmRecAdvAttrLngReqDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrLngReqDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryLanguageDtls(oHrmRecAdvAttrLngReqDtlBean, rowCount, oErrorList); + rowCount++; + } + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrQualReqDtl")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmRecAdvAttrQualReqDtlBean oHrmRecAdvAttrQualReqDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrQualReqDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryQualificationDtls(oHrmRecAdvAttrQualReqDtlBean, rowCount, oErrorList); + rowCount++; + } + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrSkillReqDtl")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmRecAdvAttrSkillReqDtlBean oHrmRecAdvAttrSkillReqDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrSkillReqDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatorySkillDtls(oHrmRecAdvAttrSkillReqDtlBean, rowCount, oErrorList); + rowCount++; + } + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrWorkExpDtl")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmRecAdvAttrWorkExpDtlBean oHrmRecAdvAttrWorkExpDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrWorkExpDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryWorkDtls(oHrmRecAdvAttrWorkExpDtlBean, rowCount, oErrorList); + rowCount++; + } + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrJobDesc")) { + Iterator oIt1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmRecAdvAttrJobDescDtlBean oHrmRecAdvAttrJobDescDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrJobDescDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryJobDesc(oHrmRecAdvAttrJobDescDtlBean, rowCount, oErrorList); + rowCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryLocationDtls(HrmRecAdvAttrLocVacencyDtlBean oHrmRecAdvAttrLocVacencyDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrLocVacencyDtlBean.getTxtLocCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.locCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrLocVacencyDtlBean.getTxtNoOfVacancy())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.noOfVacancy"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryLanguageDtls(HrmRecAdvAttrLngReqDtlBean oHrmRecAdvAttrLngReqDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrLngReqDtlBean.getTxtLangCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.langCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrLngReqDtlBean.getTxtReqType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.reqType"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryQualificationDtls(HrmRecAdvAttrQualReqDtlBean oHrmRecAdvAttrQualReqDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrQualReqDtlBean.getTxtMandatoryFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.mandatoryFlag"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrQualReqDtlBean.getTxtQualCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.qualCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrQualReqDtlBean.getTxtMaxmQualFlag())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.maxmQualFlag"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatorySkillDtls(HrmRecAdvAttrSkillReqDtlBean oHrmRecAdvAttrSkillReqDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrSkillReqDtlBean.getTxtSkillCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.skillCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryWorkDtls(HrmRecAdvAttrWorkExpDtlBean oHrmRecAdvAttrWorkExpDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrWorkExpDtlBean.getTxtReqExp())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.reqExp"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.minWrkExp"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatoryJobDesc(HrmRecAdvAttrJobDescDtlBean oHrmRecAdvAttrJobDescDtlBean, int rowCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrJobDescDtlBean.getTxtSrlNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.srlNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrJobDescDtlBean.getTxtJobDesc())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.jobDesc"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLocVacencyDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtLocCode", "hrm.HrmAdvertisementAttribute.locCode", oErrorList, true); + checkUniqueLocationDtl(oDetailBeanArray, oErrorList); + checkNumericLocationDtl(oDetailBeanArray, oErrorList); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLngReqDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtLangCode", "hrm.HrmAdvertisementAttribute.langCode", oErrorList, true); + checkUniqueLanguageDtl(oDetailBeanArray, oErrorList); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrQualReqDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtQualCode", "hrm.HrmAdvertisementAttribute.qualCode", oErrorList, true); + checkUniqueQualificationDtl(oDetailBeanArray, oErrorList); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrSkillReqDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtSkillCode", "hrm.HrmAdvertisementAttribute.skillCode", oErrorList, true); + checkUniqueSkillDtl(oDetailBeanArray, oErrorList); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrWorkExpDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtReqExp", "hrm.HrmAdvertisementAttribute.reqExp", oErrorList, true); + checkUniqueWorkDtl(oDetailBeanArray, oErrorList); + checkNumericWorkDtl(oDetailBeanArray, oErrorList); + checkExp(oDetailBeanArray); + } + reportError(oErrorList); + } + + private void checkExp(ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + float fMaxExp = 0.0F; + Iterator itrBean = oDetailBeanArray.iterator(); + int totalDuration = 0; + while (itrBean.hasNext()) { + HrmRecAdvAttrWorkExpDtlBean oHrmRecAdvAttrWorkExpDtlBean = oDetailBeanArray.get(count); + float fMinExp = Float.parseFloat(oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp()); + if (EnrgiseUtil.checkString(oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp())) + fMaxExp = Float.parseFloat(oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp()); + if (fMinExp > 30) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmAdvertisementAttribute.checkMinExp", arylstParam)); + } + if (fMaxExp > 30) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmAdvertisementAttribute.checkMaxExp", arylstParam)); + } + count++; + itrBean.next(); + } + reportError(arylstList); + } + + private void checkUniqueLocationDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRecAdvAttrLocVacencyDtlBean oHrmRecAdvAttrLocVacencyDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from HRM_ADVT_LOC_DTL where gen_site_id= '").concat(String.valueOf(oHrmRecAdvAttrLocVacencyDtlBean.getHdnLocationId()))).concat(String.valueOf("' and adt_dt_id='"))).concat(String.valueOf(oHrmRecAdvAttrLocVacencyDtlBean.getHdnPrevDtlId()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecAdvAttrLocVacencyDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.locCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + } + + private void checkUniqueLanguageDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRecAdvAttrLngReqDtlBean oHrmRecAdvAttrLngReqDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from HRM_ADVT_LANG_RQMT_DTL where lang_mst_id= '").concat(String.valueOf(oHrmRecAdvAttrLngReqDtlBean.getHdnLanguageId()))).concat(String.valueOf("' and adt_dt_id='"))).concat(String.valueOf(oHrmRecAdvAttrLngReqDtlBean.getHdnPrevDtlId()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecAdvAttrLngReqDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.langCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + } + + private void checkUniqueQualificationDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRecAdvAttrQualReqDtlBean oHrmRecAdvAttrQualReqDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from HRM_ADVT_QUAL_DTL where qual_mst_id= '").concat(String.valueOf(oHrmRecAdvAttrQualReqDtlBean.getHdnQualificationId()))).concat(String.valueOf("' and adt_dt_id='"))).concat(String.valueOf(oHrmRecAdvAttrQualReqDtlBean.getHdnPrevDtlId()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecAdvAttrQualReqDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.qualCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + } + + private void checkUniqueSkillDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRecAdvAttrSkillReqDtlBean oHrmRecAdvAttrSkillReqDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from HRM_ADVT_SKILLS where skill_mst_id= '").concat(String.valueOf(oHrmRecAdvAttrSkillReqDtlBean.getHdnSkillId()))).concat(String.valueOf("' and adt_dt_id='"))).concat(String.valueOf(oHrmRecAdvAttrSkillReqDtlBean.getHdnPrevDtlId()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecAdvAttrSkillReqDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.skillCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + } + + private void checkUniqueWorkDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRecAdvAttrWorkExpDtlBean oHrmRecAdvAttrWorkExpDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from HRM_ADVT_WORK_EXP where designation_id= '").concat(String.valueOf(oHrmRecAdvAttrWorkExpDtlBean.getWorkId()))).concat(String.valueOf("' and adt_dt_id='"))).concat(String.valueOf(oHrmRecAdvAttrWorkExpDtlBean.getHdnPrevDtlId()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecAdvAttrWorkExpDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.reqExp"); + oParams.add(oMessageKey); + oParams.add(new Integer(count)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.uniqueKeyViolated", oParams, "E")); + } + } + count++; + } + } + + private void checkNumericWorkDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRecAdvAttrWorkExpDtlBean oHrmRecAdvAttrWorkExpDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp().equalsIgnoreCase("")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.minWrkExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp(), 3, 2, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + if (!oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp().equalsIgnoreCase("")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.maxWrkExp"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp(), 3, 2, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + if (!oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp().equalsIgnoreCase("")) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(count)); + if (Double.parseDouble(oHrmRecAdvAttrWorkExpDtlBean.getTxtMinWrkExp()) > Double.parseDouble(oHrmRecAdvAttrWorkExpDtlBean.getTxtMaxWrkExp())) + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.minmaxworkexp", oParam)); + } + count++; + } + reportError(oErrorList); + } + + private void checkNumericLocationDtl(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + int count = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRecAdvAttrLocVacencyDtlBean oHrmRecAdvAttrLocVacencyDtlBean = oIt1.next(); + if (!oHrmRecAdvAttrLocVacencyDtlBean.getTxtNoOfVacancy().equalsIgnoreCase("")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertisementAttribute.noOfVacancy"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + if (!EnrgiseUtil.checkNumber(oHrmRecAdvAttrLocVacencyDtlBean.getTxtNoOfVacancy(), 4, 0, "P")) { + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParam)); + } else if (Double.parseDouble(oHrmRecAdvAttrLocVacencyDtlBean.getTxtNoOfVacancy()) <= false) { + oErrorList.add(new EnrgiseMessageKeyException("hrm.recadvattrwork.numberZero", oParam)); + } + } + count++; + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmRecAttrRefLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "SELECT distinct hah.id,hah.ref_no from hrm_advt_hdr hah "; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where upper(hah.ref_no) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + oHeaderList.add("hrm.HrmAdvertisementAttribute.refNo"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("ref_no").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmRecAttrPositionLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + oHeaderList.add("hrm.HrmAdvertisementAttribute.grade"); + oHeaderList.add("hrm.HrmAdvertisementAttribute.design"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int iCount = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String sRefNo = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + if (oLovQueryVO.getProperty("RefNo") != null) + sRefNo = oLovQueryVO.getProperty("RefNo"); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, sRefNo)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMRECADVATTRDTL.procGetGradeDesigLOV(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (iCount == 0) + arylstList = new ArrayList(); + iCount++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("acatcode").getString()); + oLOVBean.setDetailField3(oRow.get("category").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvtMtnBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvtMtnBO.java new file mode 100644 index 0000000..6381138 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecAdvtMtnBO.java @@ -0,0 +1,811 @@ +package wenrgise.hrms.ejb.business; + +import java.lang.reflect.Array; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmRecAdvtMtnDtlBean; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; + +public class HrmRecAdvtMtnBO extends HrmBaseBO { + public HrmRecAdvtMtnBO() {} + + public HrmRecAdvtMtnBO(UserInfo oUserinfo) { + super(oUserinfo); + } + + public RecordMetaInfo getHrmRecAdvtHdrMetaInfo(HrmRecAdvtMtnQVO oHrmRecAdvtMtnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmRecAdvtMtnQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVTMTN.proc_HrAdvtCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRecAdvtInfo(HrmRecAdvtMtnQVO oHrmRecAdvtMtnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmRecAdvtMtnQVO == null) + oHrmRecAdvtMtnQVO = new HrmRecAdvtMtnQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmRecAdvtMtnQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVTMTN.proc_HrAdvtHdrInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean = new HrmRecAdvtMtnHdrBean(); + oHrmRecAdvtMtnHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmRecAdvtMtnHdrBean.setReferenceNo(oRow.get("ref_no").getString()); + oHrmRecAdvtMtnHdrBean.setEntryMode(oRow.get("entry_mode").getString()); + oHrmRecAdvtMtnHdrBean.setReferenceDate(EnrgiseUtil.convertToString(oRow.get("referencedate").getDate())); + oHrmRecAdvtMtnHdrBean.setMediaType(oRow.get("media_type").getString()); + oHrmRecAdvtMtnHdrBean.setMediaName(oRow.get("media_name").getString()); + oHrmRecAdvtMtnHdrBean.setDescription(oRow.get("description").getString()); + oHrmRecAdvtMtnHdrBean.setMinWrittenScoreA(oRow.get("min_written_mrks").getString()); + oHrmRecAdvtMtnHdrBean.setMinWrittenScoreB(oRow.get("MIN_GD_MRKS").getString()); + oHrmRecAdvtMtnHdrBean.setMinInterviewScore(oRow.get("min_interview_mrks").getString()); + oHrmRecAdvtMtnHdrBean.setMinInterviewScore2(oRow.get("min_interview_marks_2").getString()); + oHrmRecAdvtMtnHdrBean.setMinInterviewScore3(oRow.get("min_interview_marks_3").getString()); + oHrmRecAdvtMtnHdrBean.setMinTotalScore(oRow.get("min_total_mrks").getString()); + oHrmRecAdvtMtnHdrBean.setVenue(oRow.get("venue").getString()); + oHrmRecAdvtMtnHdrBean.setTime(oRow.get("time").getString()); + oHrmRecAdvtMtnHdrBean.setDate(EnrgiseUtil.convertToString(oRow.get("walk_in_date").getDate())); + oHrmRecAdvtMtnHdrBean.setLastDate(EnrgiseUtil.convertToString(oRow.get("last_date").getDate())); + oHeaderList.add(oHrmRecAdvtMtnHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmRecAdvtDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVTMTN.proc_HrAdvtDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRecAdvtDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmPosKPAPtsDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVTMTN.proc_GetHrmAdvtDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmPosKPAPtsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean = new HrmRecAdvtMtnDtlBean(); + oHrmRecAdvtMtnDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecAdvtMtnDtlBean.setTxtGradeId(oRow.get("grade_id").getString()); + oHrmRecAdvtMtnDtlBean.setTxtGrade(oRow.get("grade").getString()); + oHrmRecAdvtMtnDtlBean.setTxtDesignationId(oRow.get("designation_ID").getString()); + oHrmRecAdvtMtnDtlBean.setTxtDesignation(oRow.get("designation").getString()); + oHrmRecAdvtMtnDtlBean.setTxtApplicantCategoryId(oRow.get("applicant_cat_id").getString()); + oHrmRecAdvtMtnDtlBean.setTxtApplicantCategory(oRow.get("acatcode").getString()); + oHrmRecAdvtMtnDtlBean.setTxtReservationCategoryId(oRow.get("rsvcat_type_id").getString()); + oHrmRecAdvtMtnDtlBean.setTxtReservationCategory(oRow.get("RES_CAT_CODE").getString()); + oHrmRecAdvtMtnDtlBean.setTxtTotalVacancy(oRow.get("total_vacancy").getString()); + oHrmRecAdvtMtnDtlBean.setTxtSex(oRow.get("sex_code").getString()); + oHrmRecAdvtMtnDtlBean.setTxtMinimumAge(oRow.get("min_age").getString()); + oHrmRecAdvtMtnDtlBean.setTxtMaximumAge(oRow.get("max_age").getString()); + oHrmRecAdvtMtnDtlBean.setTxtMaxAgeOnDate(EnrgiseUtil.convertToString(oRow.get("max_age_on_date").getDate())); + oHrmRecAdvtMtnDtlBean.setTxtAmount(oRow.get("app_amt").getString()); + oHrmPosKPAPtsDetail.add(oHrmRecAdvtMtnDtlBean); + } + return oHrmPosKPAPtsDetail; + } + + public void initializeBOImpl() { + this.headerTable = "hrm_advt_hdr"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + saveAdvtDtl(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveAdvtDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean = oIt.next(); + if (oHrmRecAdvtMtnDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVTMTN.proc_UpsertHrmAdvtDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtMinimumAge())); + oParameters.add(new DBObject(4, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtMaximumAge())); + oParameters.add(new DBObject(5, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtSex())); + oParameters.add(new DBObject(6, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtTotalVacancy())); + oParameters.add(new DBObject(7, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtAmount())); + oParameters.add(new DBObject(8, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtApplicantCategoryId())); + oParameters.add(new DBObject(9, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtGradeId())); + oParameters.add(new DBObject(10, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtReservationCategoryId())); + oParameters.add(new DBObject(11, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(12, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtDesignationId())); + oParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnDtlBean.getTxtMaxAgeOnDate()))); + oParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmRecAdvtMtnDtlBean.getStatus().equals("U")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECADVTMTN.proc_UpsertHrmAdvtDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmRecAdvtMtnDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtMinimumAge())); + oParameters.add(new DBObject(4, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtMaximumAge())); + oParameters.add(new DBObject(5, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtSex())); + oParameters.add(new DBObject(6, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtTotalVacancy())); + oParameters.add(new DBObject(7, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtAmount())); + oParameters.add(new DBObject(8, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtApplicantCategoryId())); + oParameters.add(new DBObject(9, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtGradeId())); + oParameters.add(new DBObject(10, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtReservationCategoryId())); + oParameters.add(new DBObject(11, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(12, 1, 12, oHrmRecAdvtMtnDtlBean.getTxtDesignationId())); + oParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnDtlBean.getTxtMaxAgeOnDate()))); + oParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmRecAdvtMtnDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECADVTMTN.proc_DeleteHrmAdvtDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmRecAdvtMtnDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmRecAdvtMtnHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmRecAdvtMtn")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean = oIt1.next(); + if (!oHrmRecAdvtMtnDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryDtls(oHrmRecAdvtMtnDtlBean, rowCount); + checkforNumericfields(oHrmRecAdvtMtnDtlBean, rowCount); + rowCount++; + } + } + } + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean = (HrmRecAdvtMtnHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oHrmRecAdvtMtnHdrBean.getReferenceNo())); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnHdrBean.getReferenceDate()))); + oParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnHdrBean.getLastDate()))); + oParameters.add(new DBObject(6, 1, 12, oHrmRecAdvtMtnHdrBean.getMediaType())); + oParameters.add(new DBObject(7, 1, 12, oHrmRecAdvtMtnHdrBean.getMediaName())); + oParameters.add(new DBObject(8, 1, 12, oHrmRecAdvtMtnHdrBean.getDescription())); + oParameters.add(new DBObject(9, 1, 12, oHrmRecAdvtMtnHdrBean.getEntryMode())); + oParameters.add(new DBObject(10, 1, 12, oHrmRecAdvtMtnHdrBean.getMinInterviewScore())); + oParameters.add(new DBObject(11, 1, 12, oHrmRecAdvtMtnHdrBean.getMinWrittenScoreA())); + oParameters.add(new DBObject(12, 1, 12, oHrmRecAdvtMtnHdrBean.getMinWrittenScoreB())); + oParameters.add(new DBObject(13, 1, 12, oHrmRecAdvtMtnHdrBean.getMinTotalScore())); + oParameters.add(new DBObject(14, 1, 12, oHrmRecAdvtMtnHdrBean.getMinInterviewScore2())); + oParameters.add(new DBObject(15, 1, 12, oHrmRecAdvtMtnHdrBean.getMinInterviewScore3())); + oParameters.add(new DBObject(16, 1, 12, oHrmRecAdvtMtnHdrBean.getVenue())); + oParameters.add(new DBObject(17, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnHdrBean.getDate()))); + oParameters.add(new DBObject(18, 1, 12, oHrmRecAdvtMtnHdrBean.getTime())); + oParameters.add(new DBObject(19, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(20, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(21, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(22, 2, 12)); + oParameters.add(new DBObject(23, 2, 12)); + oParameters.add(new DBObject(24, 2, 12)); + oParameters.add(new DBObject(25, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVTMTN.proc_UpsertHrmAdvtHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmRecAdvtMtnHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oHrmRecAdvtMtnHdrBean.getReferenceNo())); + oParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnHdrBean.getReferenceDate()))); + oParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnHdrBean.getLastDate()))); + oParameters.add(new DBObject(6, 1, 12, oHrmRecAdvtMtnHdrBean.getMediaType())); + oParameters.add(new DBObject(7, 1, 12, oHrmRecAdvtMtnHdrBean.getMediaName())); + oParameters.add(new DBObject(8, 1, 12, oHrmRecAdvtMtnHdrBean.getDescription())); + oParameters.add(new DBObject(9, 1, 12, oHrmRecAdvtMtnHdrBean.getEntryMode())); + oParameters.add(new DBObject(10, 1, 12, oHrmRecAdvtMtnHdrBean.getMinInterviewScore())); + oParameters.add(new DBObject(11, 1, 12, oHrmRecAdvtMtnHdrBean.getMinWrittenScoreA())); + oParameters.add(new DBObject(12, 1, 12, oHrmRecAdvtMtnHdrBean.getMinWrittenScoreB())); + oParameters.add(new DBObject(13, 1, 12, oHrmRecAdvtMtnHdrBean.getMinTotalScore())); + oParameters.add(new DBObject(14, 1, 12, oHrmRecAdvtMtnHdrBean.getMinInterviewScore2())); + oParameters.add(new DBObject(15, 1, 12, oHrmRecAdvtMtnHdrBean.getMinInterviewScore3())); + oParameters.add(new DBObject(16, 1, 12, oHrmRecAdvtMtnHdrBean.getVenue())); + oParameters.add(new DBObject(17, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecAdvtMtnHdrBean.getDate()))); + oParameters.add(new DBObject(18, 1, 12, oHrmRecAdvtMtnHdrBean.getTime())); + oParameters.add(new DBObject(19, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(20, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(21, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(22, 2, 12)); + oParameters.add(new DBObject(23, 2, 12)); + oParameters.add(new DBObject(24, 2, 12)); + oParameters.add(new DBObject(25, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVTMTN.proc_UpsertHrmAdvtHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmRecAdvtMtnHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECADVTMTN.proc_DeleteHrmAdvtHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void deleteDetailRecords(String sPrimkey) throws EnrgiseApplicationException, EnrgiseSystemException { + if (getHrmRecAdvtDtlMetaInfo(sPrimkey).getRecordCount() > 0L) { + ArrayList oDetailArray = getHrmRecAdvtDetailInfo(sPrimkey, 1L, getHrmRecAdvtDtlMetaInfo(sPrimkey).getRecordCount()); + if (oDetailArray.size() > 0) { + int rowCount = 0; + Iterator oIt = oDetailArray.iterator(); + while (oIt.hasNext()) { + HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean = oIt.next(); + findChildRecord(oHrmRecAdvtMtnDtlBean, rowCount); + findQualChildRecord(oHrmRecAdvtMtnDtlBean, rowCount); + findLocationChildRecord(oHrmRecAdvtMtnDtlBean, rowCount); + findLanguageChildRecord(oHrmRecAdvtMtnDtlBean, rowCount); + findSkillChildRecord(oHrmRecAdvtMtnDtlBean, rowCount); + findWorkChildRecord(oHrmRecAdvtMtnDtlBean, rowCount); + oHrmRecAdvtMtnDtlBean.setStatus("D"); + } + saveAdvtDtl(sPrimkey, oDetailArray); + } + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean = (HrmRecAdvtMtnHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmRecAdvtMtnHdrBean)oBaseHeaderBean); + checkScore((HrmRecAdvtMtnHdrBean)oBaseHeaderBean); + checkDates((HrmRecAdvtMtnHdrBean)oBaseHeaderBean); + } + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmRecAdvtMtn")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + exclusiveItemMatGrp(oDetailBeanArray, oErrorList); + int rowcount = 1; + while (oIt1.hasNext()) { + HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean = oIt1.next(); + if (!oHrmRecAdvtMtnDtlBean.getStatus().equalsIgnoreCase("D")) + continue; + findChildRecord(oHrmRecAdvtMtnDtlBean, rowcount); + findQualChildRecord(oHrmRecAdvtMtnDtlBean, rowcount); + findLocationChildRecord(oHrmRecAdvtMtnDtlBean, rowcount); + findLanguageChildRecord(oHrmRecAdvtMtnDtlBean, rowcount); + findSkillChildRecord(oHrmRecAdvtMtnDtlBean, rowcount); + findWorkChildRecord(oHrmRecAdvtMtnDtlBean, rowcount); + rowcount++; + } + } + reportError(oErrorList); + } + } + + public LovVO getClassDataLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String code = oLovQueryVO.getProperty("code"); + String sQuery = "Select clsd.ID, clsd.NAME from HRM_CLASS_DTL clsd, HRM_CLASS_MST clsm where clsd.CLS_MST_ID = clsm.ID and clsm.CODE ="; + sQuery = String.valueOf(sQuery).concat(String.valueOf(code)); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" And upper(clsd.NAME) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getRefNoLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "select distinct advh.id,advh.ref_no from hrm_advt_hdr advh where 1=1"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(advh.ref_no) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.referenceNo"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("ref_no").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getEntryModeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "Select Global_Code_Desc,Global_Code from GEN_GLOBAL_CODES Where Global_Code_type= 103"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(Global_Code_Desc) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.entryMode"); + oHeaderList.add(""); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("Global_Code_Desc").getString()); + oLOVBean.setDetailField2(oRow.get("Global_Code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getPositionCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + LovVO oLovVO = new LovVO(); + ArrayList oList = null; + Iterator oIt = null; + String sQuery = "SELECT A.ID, A.DESCRIPTION, B.ID as desigid, B.name as PositionDesc FROM HRM_POS_INF_HDR A, HRM_CLASS_DTL B WHERE A.DESIGNATION_ID=B.ID(+)"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(DESCRIPTION) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + oBean = new DBUtilitiesBean(); + oList = new ArrayList(); + oList = oBean.executeQuery(sQuery); + oIt = oList.iterator(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.forPosition"); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmAdvertiesmentMaintenance.description"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("desigid").getString()); + oLOVBean.setDetailField4(oRow.get("PositionDesc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkforNumericfields(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oHrmRecAdvtMtnDtlBean.getTxtAmount(), 14, 2, "P")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.amount"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("hrm.advt.detail.nonnumeric", oParam)); + } + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtMinimumAge()) && EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtMaximumAge())) + if (Integer.parseInt(oHrmRecAdvtMtnDtlBean.getTxtMinimumAge()) > Integer.parseInt(oHrmRecAdvtMtnDtlBean.getTxtMaximumAge())) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.advt.detail.errorinage", oParam, "E"); + } + reportError(oErrList); + } + + private void checkMandatoryHeader(HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getReferenceNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.referenceNo"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMediaType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.mediaType"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getLastDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.lastDate"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getReferenceDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.referenceDate"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + private void checkMandatoryDtls(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtGrade())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.grade"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtSex())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.sex"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtReservationCategory())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmAdvertiesmentMaintenance.reservationCategory"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtMinimumAge())) + if (Integer.parseInt(oHrmRecAdvtMtnDtlBean.getTxtMinimumAge()) < 21) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.advt.minage", oParam, "E"); + } + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtMaxAgeOnDate())) + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtMaximumAge())) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.advt.maxage", oParam, "E"); + } + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtMaximumAge())) + if (!EnrgiseUtil.checkString(oHrmRecAdvtMtnDtlBean.getTxtMaxAgeOnDate())) { + ArrayList oParam = new ArrayList(); + oParam.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.advt.maxageDate", oParam, "E"); + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select id as ID from HRM_ADVT_HDR where REF_NO='").concat(String.valueOf(oHrmRecAdvtMtnHdrBean.getReferenceNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecAdvtMtnHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("hrm.advt.header.uniqueConstraintViolated", "M"); + } + } + + private void checkDates(HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat oDateFormat = null; + int i = EnrgiseUtil.compareDates(oDateFormat, oHrmRecAdvtMtnHdrBean.getLastDate(), oHrmRecAdvtMtnHdrBean.getReferenceDate()); + System.out.println(oHrmRecAdvtMtnHdrBean.getLastDate()); + System.out.println(i); + if (i < 0) + throw new EnrgiseApplicationException("hrm.advt.header.date", "E"); + } + + private void findChildRecord(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" select id from hrm_advt_appl_dtl where ADT_DT_ID=").concat(String.valueOf(oHrmRecAdvtMtnDtlBean.getDetailId())); + System.out.println(sQuery); + int count = 1; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ID").getString().equalsIgnoreCase(oHrmRecAdvtMtnDtlBean.getDetailId())) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.advt.detail.childRecordFound", oParam, "E"); + } + } + count++; + } + + private void findQualChildRecord(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 1; + String sQuery = String.valueOf(" select ADT_DT_ID from hrm_advt_qual_dtl where ADT_DT_ID=").concat(String.valueOf(oHrmRecAdvtMtnDtlBean.getDetailId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ADT_DT_ID").getString().equalsIgnoreCase(oHrmRecAdvtMtnDtlBean.getDetailId())) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.advt.detail.attrChildRecordFound", oParam, "E"); + } + } + count++; + } + + private void findLocationChildRecord(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" select ADT_DT_ID from hrm_advt_loc_dtl where ADT_DT_ID=").concat(String.valueOf(oHrmRecAdvtMtnDtlBean.getDetailId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ADT_DT_ID").getString().equalsIgnoreCase(oHrmRecAdvtMtnDtlBean.getDetailId())) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.advt.detail.attrChildRecordFound", oParam, "E"); + } + } + } + + private void exclusiveItemMatGrp(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String[] sArgs = (String[])Array.newInstance(Class.forName("java.lang.String"), 2); + sArgs[0] = "txtDesignationId"; + sArgs[1] = "txtReservationCategoryId"; + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, sArgs, "hrm.advt.detail.exclusive", oErrorList); + } + + private void findLanguageChildRecord(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" select ADT_DT_ID from hrm_advt_lang_rqmt_dtl where ADT_DT_ID=").concat(String.valueOf(oHrmRecAdvtMtnDtlBean.getDetailId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ADT_DT_ID").getString().equalsIgnoreCase(oHrmRecAdvtMtnDtlBean.getDetailId())) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.advt.detail.attrChildRecordFound", oParam, "E"); + } + } + } + + private void findSkillChildRecord(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" select ADT_DT_ID from hrm_advt_skills where ADT_DT_ID=").concat(String.valueOf(oHrmRecAdvtMtnDtlBean.getDetailId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ADT_DT_ID").getString().equalsIgnoreCase(oHrmRecAdvtMtnDtlBean.getDetailId())) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.advt.detail.attrChildRecordFound", oParam, "E"); + } + } + } + + private void findWorkChildRecord(HrmRecAdvtMtnDtlBean oHrmRecAdvtMtnDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(" select ADT_DT_ID from hrm_advt_work_exp where ADT_DT_ID=").concat(String.valueOf(oHrmRecAdvtMtnDtlBean.getDetailId())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (oRow.get("ADT_DT_ID").getString().equalsIgnoreCase(oHrmRecAdvtMtnDtlBean.getDetailId())) { + ArrayList oParam = new ArrayList(); + throw new EnrgiseApplicationException("hrm.advt.detail.attrChildRecordFound", oParam, "E"); + } + } + } + + private void checkScore(HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + int writtenScore = 0; + int gdScore = 0; + int intScore = 0; + int totalScore = 0; + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinWrittenScoreA())) + writtenScore = Integer.parseInt(oHrmRecAdvtMtnHdrBean.getMinWrittenScoreA()); + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinWrittenScoreB())) + gdScore = Integer.parseInt(oHrmRecAdvtMtnHdrBean.getMinWrittenScoreB()); + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinInterviewScore())) + intScore = Integer.parseInt(oHrmRecAdvtMtnHdrBean.getMinInterviewScore()); + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinTotalScore())) + totalScore = Integer.parseInt(oHrmRecAdvtMtnHdrBean.getMinTotalScore()); + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinTotalScore())) + if (EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinWrittenScoreA()) || EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinWrittenScoreB()) || EnrgiseUtil.checkString(oHrmRecAdvtMtnHdrBean.getMinInterviewScore())) + if (totalScore < writtenScore + gdScore + intScore) + throw new EnrgiseApplicationException("hrm.advt.hdr.totalScore", "E"); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecApplnMtnBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecApplnMtnBO.java new file mode 100644 index 0000000..cd83147 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecApplnMtnBO.java @@ -0,0 +1,2373 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.bean.HrmRecApplnMtnAddDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnEduDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnExpDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.bean.HrmRecApplnMtnLangDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnOtherDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnRefDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnResultDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnTrngDtlBean; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; + +public class HrmRecApplnMtnBO extends HrmBaseBO { + public HrmRecApplnMtnBO() {} + + public HrmRecApplnMtnBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmRecApplnMtnHdrMetaInfo(HrmRecApplnMtnQVO oHrmRecApplnMtnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecApplnMtnQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnMtnQVO.getApplicationNo())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecApplnMtnQVO.getReferenceNo())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnQVO.getApplForDesignation())); + arylstParam.add(new DBObject(5, 2, -5)); + arylstParam.add(new DBObject(6, 2, 93)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecApplnMtnHdrCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRecApplnMtnHeaderInfo(HrmRecApplnMtnQVO oHrmRecApplnMtnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmRecApplnMtnQVO == null) + oHrmRecApplnMtnQVO = new HrmRecApplnMtnQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecApplnMtnQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnQVO.getApplicationNo())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnQVO.getReferenceNo())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnMtnQVO.getApplForDesignation())); + arylstParam.add(new DBObject(7, 2, -10)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecApplnMtnHdrInfo(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + String draft = null; + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean = new HrmRecApplnMtnHdrBean(); + oHrmRecApplnMtnHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmRecApplnMtnHdrBean.setApplicationNo(oRow.get("APPL_NO").getString()); + oHrmRecApplnMtnHdrBean.setApplnNoId(oRow.get("id").getString()); + oHrmRecApplnMtnHdrBean.setApplicationDate(EnrgiseUtil.convertToString(oRow.get("APPL_DATE").getDate())); + oHrmRecApplnMtnHdrBean.setReferenceNo(oRow.get("REF_NO").getString()); + oHrmRecApplnMtnHdrBean.setReferenceId(oRow.get("REF_ID").getString()); + oHrmRecApplnMtnHdrBean.setApplForGrade(oRow.get("GRADE").getString()); + oHrmRecApplnMtnHdrBean.setApplForDesignation(oRow.get("DESIGNATION").getString()); + oHrmRecApplnMtnHdrBean.setDesignationId(oRow.get("DESIGNATION_ID").getString()); + oHrmRecApplnMtnHdrBean.setApplicantFirstName(oRow.get("FIRST_NAME").getString()); + oHrmRecApplnMtnHdrBean.setApplicantMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmRecApplnMtnHdrBean.setApplicantLastName(oRow.get("LAST_NAME").getString()); + oHrmRecApplnMtnHdrBean.setEntryMode(oRow.get("ENTRY_MODE").getString()); + oHrmRecApplnMtnHdrBean.setRollNo(oRow.get("ROLL_NO").getString()); + oHrmRecApplnMtnHdrBean.setPicturePath(oRow.get("PICTURE_PATH").getString()); + arylstHeaderList.add(oHrmRecApplnMtnHdrBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmRecApplnPerDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnPerDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnAddDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnAddDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnLangDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnLangDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnEduDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnEduDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnExpDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnExpDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnResultDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnResDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnOtherDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnResDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnRefMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnRefCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public RecordMetaInfo getHrmRecApplnTrngDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnTrngCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRecApplnRef(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnRefDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnRefDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnRefDtl = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnRefDtlBean oHrmRecApplnMtnRefDtlBean = new HrmRecApplnMtnRefDtlBean(); + oHrmRecApplnMtnRefDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecApplnMtnRefDtlBean.setTxtName(oRow.get("NAME").getString()); + oHrmRecApplnMtnRefDtlBean.setTxtAddress(oRow.get("ADDRESS").getString()); + oHrmRecApplnMtnRefDtlBean.setTxtPhone(oRow.get("PHONE").getString()); + oHrmRecApplnMtnRefDtlBean.setTxtPosition(oRow.get("POSITION").getString()); + arylstHrmRecApplnMtnRefDtl.add(oHrmRecApplnMtnRefDtlBean); + } + return arylstHrmRecApplnMtnRefDtl; + } + + public ArrayList getHrmRecApplnTrngDtls(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnTrngDtls = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnTrngDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnTrngDtls = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnTrngDtlBean oHrmRecApplnMtnTrngDtlBean = new HrmRecApplnMtnTrngDtlBean(); + oHrmRecApplnMtnTrngDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecApplnMtnTrngDtlBean.setTxtCourse(oRow.get("COURSE").getString()); + oHrmRecApplnMtnTrngDtlBean.setTxtFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oHrmRecApplnMtnTrngDtlBean.setTxtToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + oHrmRecApplnMtnTrngDtlBean.setTxtSubject(oRow.get("SUBJECT").getString()); + oHrmRecApplnMtnTrngDtlBean.setTxtInstitute(oRow.get("INSTITUTION").getString()); + arylstHrmRecApplnMtnTrngDtls.add(oHrmRecApplnMtnTrngDtlBean); + } + return arylstHrmRecApplnMtnTrngDtls; + } + + public ArrayList getHrmRecApplnOtherDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnOtherDtl = null; + ArrayList arylstClass = null; + String sScaleId = null; + String sDesignationId = null; + HrmOrgClassHdrBean def = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnResDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnOtherDtl = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnOtherDtlBean oHrmRecApplnMtnOtherDtlBean = new HrmRecApplnMtnOtherDtlBean(); + oHrmRecApplnMtnOtherDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecApplnMtnOtherDtlBean.setDisqualified(String.valueOf(oRow.get("OFFER_ACCEPTED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setQualInterview(String.valueOf(oRow.get("INTERVIEW_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setQualInterview2(String.valueOf(oRow.get("INTERVIEW_FLAG_2").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setQualInterview3(String.valueOf(oRow.get("INTERVIEW_FLAG_3").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setFailedWrittenA(String.valueOf(oRow.get("WRITTEN_TEST_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setFailedWrittenB(String.valueOf(oRow.get("GD_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setMedicalCleared(String.valueOf(oRow.get("MEDICAL_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setInterviewScore(oRow.get("INTERVIEW_SCORE").getString()); + oHrmRecApplnMtnOtherDtlBean.setInterviewScore2(oRow.get("INTERVIEW_SCORE_2").getString()); + oHrmRecApplnMtnOtherDtlBean.setInterviewScore3(oRow.get("INTERVIEW_SCORE_3").getString()); + oHrmRecApplnMtnOtherDtlBean.setRating(oRow.get("RATING").getString()); + oHrmRecApplnMtnOtherDtlBean.setTestCenter(oRow.get("TEST_CNTR_NAME").getString()); + oHrmRecApplnMtnOtherDtlBean.setTestCentreId(oRow.get("TSTCNTR_MS_ID").getString()); + oHrmRecApplnMtnOtherDtlBean.setWrittenScoreA(oRow.get("WRTN_TEST_SCORE").getString()); + oHrmRecApplnMtnOtherDtlBean.setWrittenScoreB(oRow.get("GD_SCORE").getString()); + oHrmRecApplnMtnOtherDtlBean.setAppointedFlag(String.valueOf(oRow.get("APPOINTMENT_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnOtherDtlBean.setJoinedOrganisation(String.valueOf(oRow.get("JOINED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + arylstHrmRecApplnMtnOtherDtl.add(oHrmRecApplnMtnOtherDtlBean); + } + return arylstHrmRecApplnMtnOtherDtl; + } + + public ArrayList getHrmRecApplnAddDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnAddDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnAddDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + HrmRecApplnMtnAddDtlBean oHrmRecApplnMtnAddDtlBean = new HrmRecApplnMtnAddDtlBean(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnAddDtl = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + oHrmRecApplnMtnAddDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmRecApplnMtnAddDtlBean.setPermAddress(oRow.get("PERM_ADD").getString()); + oHrmRecApplnMtnAddDtlBean.setPermCity(oRow.get("PERM_CITY").getString()); + oHrmRecApplnMtnAddDtlBean.setPermCountry(oRow.get("PERM_COUNTRY").getString()); + oHrmRecApplnMtnAddDtlBean.setPermPhone(oRow.get("PERM_PHONE").getString()); + oHrmRecApplnMtnAddDtlBean.setPermPin(oRow.get("PERM_PIN_CODE").getString()); + oHrmRecApplnMtnAddDtlBean.setPermState(oRow.get("PERM_STATE").getString()); + oHrmRecApplnMtnAddDtlBean.setPresAddress(oRow.get("PRES_ADD").getString()); + oHrmRecApplnMtnAddDtlBean.setPresCity(oRow.get("PRES_CITY").getString()); + oHrmRecApplnMtnAddDtlBean.setPresCountry(oRow.get("PRES_COUNTRY").getString()); + oHrmRecApplnMtnAddDtlBean.setPresPhone(oRow.get("PRES_PHONE").getString()); + oHrmRecApplnMtnAddDtlBean.setPresPin(oRow.get("PRES_PIN_CODE").getString()); + oHrmRecApplnMtnAddDtlBean.setPresState(oRow.get("PRES_STATE").getString()); + oHrmRecApplnMtnAddDtlBean.setGuardianName(oRow.get("GUARDIAN_NAME").getString()); + oHrmRecApplnMtnAddDtlBean.setPlaceOfBirth(oRow.get("PLACE_OF_BIRTH").getString()); + oHrmRecApplnMtnAddDtlBean.setDateOfBirth(EnrgiseUtil.convertToString(oRow.get("DOB").getDate())); + oHrmRecApplnMtnAddDtlBean.setNationality(oRow.get("NATIONALITY").getString()); + oHrmRecApplnMtnAddDtlBean.setNationalityCode(oRow.get("NATIONALITY_CODE").getString()); + oHrmRecApplnMtnAddDtlBean.setMaritalStatusDesc(oRow.get("MARITAL_STATUS").getString()); + oHrmRecApplnMtnAddDtlBean.setMaritalStatus(oRow.get("MARITAL_STATUS_CODE").getString()); + oHrmRecApplnMtnAddDtlBean.setSex(oRow.get("SEX").getString()); + oHrmRecApplnMtnAddDtlBean.setMotherTongue(oRow.get("MOTHER_TONGUE").getString()); + oHrmRecApplnMtnAddDtlBean.setMotherToungueCode(oRow.get("MOTHER_TONGUE_CODE").getString()); + oHrmRecApplnMtnAddDtlBean.setRelatedToEmp(String.valueOf(oRow.get("RELATED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setRelatedEmpId(oRow.get("RELATED_EMP_ID").getString()); + oHrmRecApplnMtnAddDtlBean.setRelatedEmpName(oRow.get("RELATED_EMPLOYEE").getString()); + oHrmRecApplnMtnAddDtlBean.setReligionId(oRow.get("RLGN_MST_ID").getString()); + oHrmRecApplnMtnAddDtlBean.setReligion(oRow.get("RELIGION").getString()); + oHrmRecApplnMtnAddDtlBean.setHandicappedFlag(String.valueOf(oRow.get("HANDICAPPED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setHealthRecord(oRow.get("HEALTH_RECORDS").getString()); + oHrmRecApplnMtnAddDtlBean.setBloodGroup(oRow.get("BLOOD_GROUP").getString()); + oHrmRecApplnMtnAddDtlBean.setAppliedEarlier(String.valueOf(oRow.get("APPL_EARLY_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setMail(oRow.get("EMAIL").getString()); + oHrmRecApplnMtnAddDtlBean.setReservationCategoryId(oRow.get("RSVCAT_MST_ID").getString()); + oHrmRecApplnMtnAddDtlBean.setReservationCategory(oRow.get("RESV_CAT_NAME").getString()); + oHrmRecApplnMtnAddDtlBean.setPrevEmpFlag(String.valueOf(oRow.get("PREV_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setPrevEmpDtls(oRow.get("PREV_DTLS").getString()); + oHrmRecApplnMtnAddDtlBean.setHobbies(oRow.get("HOBBIES").getString()); + oHrmRecApplnMtnAddDtlBean.setGrossExpected(oRow.get("GROSS_EXP").getString()); + oHrmRecApplnMtnAddDtlBean.setAddlInfo(oRow.get("REMARKS").getString()); + oHrmRecApplnMtnAddDtlBean.setChequeNo(oRow.get("BANK_DOC_NO").getString()); + oHrmRecApplnMtnAddDtlBean.setSubmissionDate(EnrgiseUtil.convertToString(oRow.get("BANK_DOC_DATE").getDate())); + oHrmRecApplnMtnAddDtlBean.setSubmittedAmount(oRow.get("BANK_DOC_AMOUNT").getString()); + oHrmRecApplnMtnAddDtlBean.setArrestedBefore(String.valueOf(oRow.get("ARRESTED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setFinedByCourt(String.valueOf(oRow.get("FINED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setImprisonedBefore(String.valueOf(oRow.get("IMPRISONED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setProsecutedBefore(String.valueOf(oRow.get("PROSECUTED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecApplnMtnAddDtlBean.setReasons(oRow.get("REASON").getString()); + oHrmRecApplnMtnAddDtlBean.setPassportNo(oRow.get("PASSPORT_NO").getString()); + oHrmRecApplnMtnAddDtlBean.setPlaceOfIssue(oRow.get("PLACE_ISSUE").getString()); + oHrmRecApplnMtnAddDtlBean.setExpiryDate(EnrgiseUtil.convertToString(oRow.get("PASSPORT_EXPIRY_DATE").getDate())); + oHrmRecApplnMtnAddDtlBean.setIssueDate(EnrgiseUtil.convertToString(oRow.get("PASSPORT_ISSUE_DATE").getDate())); + arylstHrmRecApplnMtnAddDtl.add(oHrmRecApplnMtnAddDtlBean); + } + return arylstHrmRecApplnMtnAddDtl; + } + + public ArrayList getHrmRecApplnLangDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnLangDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnLangDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnLangDtl = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnLangDtlBean oHrmRecApplnMtnLangDtlBean = new HrmRecApplnMtnLangDtlBean(); + oHrmRecApplnMtnLangDtlBean.setDetailId(oRow.get("LANG_KNOW_ID").getString()); + oHrmRecApplnMtnLangDtlBean.setLangId(oRow.get("LANG_MST_ID").getString()); + oHrmRecApplnMtnLangDtlBean.setTxtLanguageCode(oRow.get("LANG_NAME").getString()); + oHrmRecApplnMtnLangDtlBean.setTxtKnowledgeLevel(oRow.get("KNOWLEDGE_LEVEL").getString()); + arylstHrmRecApplnMtnLangDtl.add(oHrmRecApplnMtnLangDtlBean); + } + return arylstHrmRecApplnMtnLangDtl; + } + + public ArrayList getHrmRecApplnEduDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnEduDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnEduDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnEduDtl = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnEduDtlBean oHrmEmployePDEduDtlBean = new HrmRecApplnMtnEduDtlBean(); + oHrmEmployePDEduDtlBean.setDetailId(oRow.get("EDU_ID").getString()); + oHrmEmployePDEduDtlBean.setQualificationId(oRow.get("QUAL_MST_ID").getString()); + oHrmEmployePDEduDtlBean.setTxtInstCode(oRow.get("INST_NAME").getString()); + oHrmEmployePDEduDtlBean.setTxtPercentageMarks(oRow.get("PERC_MARKS").getString()); + oHrmEmployePDEduDtlBean.setTxtPassYear(oRow.get("PASS_YEAR").getString()); + oHrmEmployePDEduDtlBean.setTxtQualification(oRow.get("QUAL_NAME").getString()); + oHrmEmployePDEduDtlBean.setTxtMajorSub(oRow.get("MAJOR_SUBJECTS").getString()); + oHrmEmployePDEduDtlBean.setTxtOtherProfQuali(oRow.get("OTHER_QUAL").getString()); + oHrmEmployePDEduDtlBean.setTxtSpeecialCourses(oRow.get("SPECIAL_COURSES_ATTENDED").getString()); + oHrmEmployePDEduDtlBean.setTxtSpeecialisation(oRow.get("SPECIALIZATION").getString()); + arylstHrmRecApplnMtnEduDtl.add(oHrmEmployePDEduDtlBean); + } + return arylstHrmRecApplnMtnEduDtl; + } + + public ArrayList getHrmRecApplnExpDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnExpDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnExpDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnExpDtl = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnExpDtlBean oHrmRecApplnMtnExpDtlBean = new HrmRecApplnMtnExpDtlBean(); + oHrmRecApplnMtnExpDtlBean.setDetailId(oRow.get("EXP_ID").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtPeriodFrom(oRow.get("FROM_MMYYYY").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtPeriodTo(oRow.get("TO_MMYYYY").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtLocation(oRow.get("LOCATION").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtOrganisation(oRow.get("ORG_NAME").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtWorkExp(oRow.get("WORK_EXPERIENCE").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtDesignationCode(oRow.get("DESIG").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtReportTo(oRow.get("REPORT_TO").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtNoPersonSupervised(oRow.get("PERSONNEL_SUPERVISED").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtStartingSal(oRow.get("STARTING_SALARY").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtLeavingSal(oRow.get("LEAVING_SALARY").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtBasic(oRow.get("BASIC").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtDA(oRow.get("DA").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtHRA(oRow.get("HRA").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtConv(oRow.get("CONV_ALLOWANCE").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtIncentives(oRow.get("INCENTIVES").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtBonus(oRow.get("BONUS").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtOtherAllowances(oRow.get("OTHERS_ALLOWANCES").getString()); + oHrmRecApplnMtnExpDtlBean.setTxtWorkDesc(oRow.get("JOB_DESC").getString()); + arylstHrmRecApplnMtnExpDtl.add(oHrmRecApplnMtnExpDtlBean); + } + return arylstHrmRecApplnMtnExpDtl; + } + + public ArrayList getHrmRecApplnResultDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecApplnMtnResultDtl = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procHrRecMtnResDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmRecApplnMtnResultDtl = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRecApplnMtnResultDtlBean oHrmRecApplnMtnResultDtlBean = new HrmRecApplnMtnResultDtlBean(); + oHrmRecApplnMtnResultDtlBean.setDetailId(oRow.get("ID").getString()); + if (oRow.get("QUALIFIED_FLAG").getString().equalsIgnoreCase("Y")) { + oHrmRecApplnMtnResultDtlBean.setDisqualified("Off"); + } else { + oHrmRecApplnMtnResultDtlBean.setDisqualified("On"); + } + if (oRow.get("INTERVIEW_FLAG").getString().equalsIgnoreCase("Y")) { + oHrmRecApplnMtnResultDtlBean.setFailedInterview("Off"); + } else { + oHrmRecApplnMtnResultDtlBean.setFailedInterview("On"); + } + if (oRow.get("WRITTEN_TEST_FLAG").getString().equalsIgnoreCase("Y")) { + oHrmRecApplnMtnResultDtlBean.setFailedWrittenA("Off"); + } else { + oHrmRecApplnMtnResultDtlBean.setFailedWrittenA("On"); + } + if (oRow.get("GD_FLAG").getString().equalsIgnoreCase("Y")) { + oHrmRecApplnMtnResultDtlBean.setFailedWrittenB("Off"); + } else { + oHrmRecApplnMtnResultDtlBean.setFailedWrittenB("On"); + } + if (oRow.get("MEDICAL_FLAG").getString().equalsIgnoreCase("Y")) { + oHrmRecApplnMtnResultDtlBean.setMedicalCleared("On"); + } else { + oHrmRecApplnMtnResultDtlBean.setMedicalCleared("Off"); + } + oHrmRecApplnMtnResultDtlBean.setInterviewScore(oRow.get("INTERVIEW_SCORE").getString()); + oHrmRecApplnMtnResultDtlBean.setPanelRanking(oRow.get("RANK").getString()); + oHrmRecApplnMtnResultDtlBean.setTestCenter(oRow.get("TEST_CNTR_NAME").getString()); + oHrmRecApplnMtnResultDtlBean.setTestCentreId(oRow.get("TSTCNTR_MS_ID").getString()); + oHrmRecApplnMtnResultDtlBean.setWrittenScoreA(oRow.get("WRTN_TEST_SCORE").getString()); + oHrmRecApplnMtnResultDtlBean.setWrittenScoreB(oRow.get("GD_SCORE").getString()); + arylstHrmRecApplnMtnResultDtl.add(oHrmRecApplnMtnResultDtlBean); + } + return arylstHrmRecApplnMtnResultDtl; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_ADVT_APPL_DTL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) { + saveHrmRecApplnAddDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) { + saveHrmRecApplnExpDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) { + saveHrmRecApplnEduDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) { + saveHrmRecApplnLangDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) { + saveHrmRecApplnOtherDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) { + saveHrmRecApplnResultDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) { + saveHrmRecApplnRef(sHeaderPrimaryKey, arylstDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) { + saveHrmRecApplnTrngDtls(sHeaderPrimaryKey, arylstDetailBeanArray); + } + } + + private void saveHrmRecApplnAddDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + String metro = null; + while (itrBean.hasNext()) { + HrmRecApplnMtnAddDtlBean oHrmRecApplnMtnAddDtlBean = itrBean.next(); + if (oHrmRecApplnMtnAddDtlBean.getDetailId() == null || oHrmRecApplnMtnAddDtlBean.getDetailId().equalsIgnoreCase("")) + oHrmRecApplnMtnAddDtlBean.setStatus("N"); + if (oHrmRecApplnMtnAddDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnAddDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnAddDtlBean.getPresAddress())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnAddDtlBean.getPresPin())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnMtnAddDtlBean.getPresCity())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnAddDtlBean.getPresState())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnAddDtlBean.getPresCountry())); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnAddDtlBean.getPresPhone())); + arylstParam.add(new DBObject(10, 1, 12, oHrmRecApplnMtnAddDtlBean.getPermAddress())); + arylstParam.add(new DBObject(11, 1, 12, oHrmRecApplnMtnAddDtlBean.getPermPin())); + arylstParam.add(new DBObject(12, 1, 12, oHrmRecApplnMtnAddDtlBean.getPermCity())); + arylstParam.add(new DBObject(13, 1, 12, oHrmRecApplnMtnAddDtlBean.getPermState())); + arylstParam.add(new DBObject(14, 1, 12, oHrmRecApplnMtnAddDtlBean.getPermCountry())); + arylstParam.add(new DBObject(15, 1, 12, oHrmRecApplnMtnAddDtlBean.getPermPhone())); + arylstParam.add(new DBObject(16, 1, 12, oHrmRecApplnMtnAddDtlBean.getGuardianName())); + arylstParam.add(new DBObject(17, 1, 12, oHrmRecApplnMtnAddDtlBean.getMotherToungueCode())); + arylstParam.add(new DBObject(18, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnAddDtlBean.getDateOfBirth()))); + arylstParam.add(new DBObject(19, 1, 12, oHrmRecApplnMtnAddDtlBean.getPlaceOfBirth())); + arylstParam.add(new DBObject(20, 1, 12, oHrmRecApplnMtnAddDtlBean.getNationalityCode())); + arylstParam.add(new DBObject(21, 1, 12, oHrmRecApplnMtnAddDtlBean.getMaritalStatus())); + arylstParam.add(new DBObject(22, 1, 12, oHrmRecApplnMtnAddDtlBean.getSex())); + arylstParam.add(new DBObject(23, 1, 12, oHrmRecApplnMtnAddDtlBean.getMail())); + arylstParam.add(new DBObject(24, 1, 12, oHrmRecApplnMtnAddDtlBean.getReservationCategoryId())); + arylstParam.add(new DBObject(25, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getAppliedEarlier()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(26, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getHandicappedFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(27, 1, 12, oHrmRecApplnMtnAddDtlBean.getReligionId())); + arylstParam.add(new DBObject(28, 1, 12, oHrmRecApplnMtnAddDtlBean.getBloodGroup())); + arylstParam.add(new DBObject(29, 1, 12, oHrmRecApplnMtnAddDtlBean.getHobbies())); + arylstParam.add(new DBObject(30, 1, 12, oHrmRecApplnMtnAddDtlBean.getAddlInfo())); + arylstParam.add(new DBObject(31, 1, 12, oHrmRecApplnMtnAddDtlBean.getPassportNo())); + arylstParam.add(new DBObject(32, 1, 12, oHrmRecApplnMtnAddDtlBean.getPlaceOfIssue())); + arylstParam.add(new DBObject(33, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnAddDtlBean.getExpiryDate()))); + arylstParam.add(new DBObject(34, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnAddDtlBean.getIssueDate()))); + arylstParam.add(new DBObject(35, 1, 12, oHrmRecApplnMtnAddDtlBean.getChequeNo())); + arylstParam.add(new DBObject(36, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnAddDtlBean.getSubmissionDate()))); + arylstParam.add(new DBObject(37, 1, 12, oHrmRecApplnMtnAddDtlBean.getSubmittedAmount())); + arylstParam.add(new DBObject(38, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getArrestedBefore()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(39, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getFinedByCourt()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(40, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getImprisonedBefore()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(41, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getProsecutedBefore()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(42, 1, 12, oHrmRecApplnMtnAddDtlBean.getReasons())); + arylstParam.add(new DBObject(43, 1, 12, oHrmRecApplnMtnAddDtlBean.getHealthRecord())); + arylstParam.add(new DBObject(44, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getRelatedToEmp()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(45, 1, 12, oHrmRecApplnMtnAddDtlBean.getRelatedEmpId())); + arylstParam.add(new DBObject(46, 1, 12, String.valueOf(oHrmRecApplnMtnAddDtlBean.getPrevEmpFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(47, 1, 12, oHrmRecApplnMtnAddDtlBean.getPrevEmpDtls())); + arylstParam.add(new DBObject(48, 1, 12, oHrmRecApplnMtnAddDtlBean.getGrossExpected())); + arylstParam.add(new DBObject(49, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(50, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmRecApplnResultDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + String metro = null; + String sMedFlag = null; + String sQualFlag = null; + String sWrAFlag = null; + String sWrBFlag = null; + String sIntFlag = null; + while (itrBean.hasNext()) { + HrmRecApplnMtnResultDtlBean oHrmRecApplnMtnResultDtlBean = itrBean.next(); + if (oHrmRecApplnMtnResultDtlBean.getDetailId() == null || oHrmRecApplnMtnResultDtlBean.getDetailId().equalsIgnoreCase("")) + oHrmRecApplnMtnResultDtlBean.setStatus("N"); + if (oHrmRecApplnMtnResultDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnResultDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + if (oHrmRecApplnMtnResultDtlBean.getFailedWrittenA().equalsIgnoreCase("on")) { + sWrAFlag = "Y"; + } else { + sWrAFlag = "N"; + } + if (oHrmRecApplnMtnResultDtlBean.getFailedWrittenB().equalsIgnoreCase("on")) { + sWrBFlag = "Y"; + } else { + sWrBFlag = "N"; + } + if (oHrmRecApplnMtnResultDtlBean.getFailedInterview().equalsIgnoreCase("on")) { + sIntFlag = "Y"; + } else { + sIntFlag = "N"; + } + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnResultDtlBean.getTestCentreId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnResultDtlBean.getInterviewScore())); + arylstParam.add(new DBObject(6, 1, 12, sIntFlag)); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnResultDtlBean.getWrittenScoreB())); + arylstParam.add(new DBObject(8, 1, 12, sWrBFlag)); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnResultDtlBean.getWrittenScoreA())); + arylstParam.add(new DBObject(10, 1, 12, sWrAFlag)); + if (oHrmRecApplnMtnResultDtlBean.getMedicalCleared().equalsIgnoreCase("on")) { + sMedFlag = "Y"; + } else { + sMedFlag = "N"; + } + if (oHrmRecApplnMtnResultDtlBean.getDisqualified().equalsIgnoreCase("on")) { + sQualFlag = "Y"; + } else { + sQualFlag = "N"; + } + arylstParam.add(new DBObject(11, 1, 12, sMedFlag)); + arylstParam.add(new DBObject(12, 1, 12, oHrmRecApplnMtnResultDtlBean.getPanelRanking())); + arylstParam.add(new DBObject(13, 1, 12, sQualFlag)); + arylstParam.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + private void saveHrmRecApplnTrngDtls(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecApplnMtnTrngDtlBean oHrmRecApplnMtnTrngDtlBean = itrBean.next(); + if (oHrmRecApplnMtnTrngDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnTrngDtl(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnTrngDtlBean.getTxtCourse())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnTrngDtlBean.getTxtFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnTrngDtlBean.getTxtToDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnTrngDtlBean.getTxtSubject())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnTrngDtlBean.getTxtInstitute())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnTrngDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnTrngDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnMtnTrngDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnTrngDtlBean.getTxtCourse())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnTrngDtlBean.getTxtFromDate()))); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnTrngDtlBean.getTxtToDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnTrngDtlBean.getTxtSubject())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnTrngDtlBean.getTxtInstitute())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnTrngDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECAPPLNMTN.procDeleteHrRecApplnTrngDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecApplnMtnTrngDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmRecApplnRef(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecApplnMtnRefDtlBean oHrmRecApplnRefDtlBean = itrBean.next(); + if (oHrmRecApplnRefDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnRefDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnRefDtlBean.getTxtName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnRefDtlBean.getTxtAddress())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnRefDtlBean.getTxtPhone())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnRefDtlBean.getTxtPosition())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnRefDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnRefDtl(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnRefDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnRefDtlBean.getTxtName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnRefDtlBean.getTxtAddress())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnRefDtlBean.getTxtPhone())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnRefDtlBean.getTxtPosition())); + arylstParam.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnRefDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECAPPLNMTN.procDeleteHrRecApplnRefDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecApplnRefDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmRecApplnLangDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecApplnMtnLangDtlBean oHrmRecApplnMtnLangDtlBean = itrBean.next(); + if (oHrmRecApplnMtnLangDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnLangDtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnLangDtlBean.getLangId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnLangDtlBean.getTxtKnowledgeLevel())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnLangDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnLangDtl(?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnMtnLangDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnLangDtlBean.getLangId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnLangDtlBean.getTxtKnowledgeLevel())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnLangDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECAPPLNMTN.procDeleteHrRecApplnLangDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecApplnMtnLangDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmRecApplnEduDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecApplnMtnEduDtlBean oHrmRecApplnMtnEduDtlBean = itrBean.next(); + if (oHrmRecApplnMtnEduDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnEduDtl(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtInstCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnEduDtlBean.getQualificationId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtPassYear())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtPercentageMarks())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtMajorSub())); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtSpeecialisation())); + arylstParam.add(new DBObject(10, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtOtherProfQuali())); + arylstParam.add(new DBObject(11, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtSpeecialCourses())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnEduDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnEduDtl(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnMtnEduDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtInstCode())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnEduDtlBean.getQualificationId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtPassYear())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtPercentageMarks())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtMajorSub())); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtSpeecialisation())); + arylstParam.add(new DBObject(10, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtOtherProfQuali())); + arylstParam.add(new DBObject(11, 1, 12, oHrmRecApplnMtnEduDtlBean.getTxtSpeecialCourses())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnEduDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECAPPLNMTN.procDeleteHrRecApplnEduDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecApplnMtnEduDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmRecApplnExpDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + String sWorkExp = new String(); + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecApplnMtnExpDtlBean oHrmRecApplnMtnExpDtlBean = itrBean.next(); + sWorkExp = CalculateWorkExp(oHrmRecApplnMtnExpDtlBean); + if (oHrmRecApplnMtnExpDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnExpDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtPeriodFrom())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtPeriodTo())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtOrganisation())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtLocation())); + arylstParam.add(new DBObject(8, 1, 12, sWorkExp)); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtDesignationCode())); + arylstParam.add(new DBObject(10, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtReportTo())); + arylstParam.add(new DBObject(11, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtWorkDesc())); + arylstParam.add(new DBObject(12, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtNoPersonSupervised())); + arylstParam.add(new DBObject(13, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtStartingSal())); + arylstParam.add(new DBObject(14, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtLeavingSal())); + arylstParam.add(new DBObject(15, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtBasic())); + arylstParam.add(new DBObject(16, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtDA())); + arylstParam.add(new DBObject(17, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtHRA())); + arylstParam.add(new DBObject(18, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtConv())); + arylstParam.add(new DBObject(19, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtOtherAllowances())); + arylstParam.add(new DBObject(20, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtIncentives())); + arylstParam.add(new DBObject(21, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtBonus())); + arylstParam.add(new DBObject(22, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(23, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnExpDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnExpDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnMtnExpDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtPeriodFrom())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtPeriodTo())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtOrganisation())); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtLocation())); + arylstParam.add(new DBObject(8, 1, 12, sWorkExp)); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtDesignationCode())); + arylstParam.add(new DBObject(10, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtReportTo())); + arylstParam.add(new DBObject(11, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtWorkDesc())); + arylstParam.add(new DBObject(12, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtNoPersonSupervised())); + arylstParam.add(new DBObject(13, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtStartingSal())); + arylstParam.add(new DBObject(14, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtLeavingSal())); + arylstParam.add(new DBObject(15, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtBasic())); + arylstParam.add(new DBObject(16, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtDA())); + arylstParam.add(new DBObject(17, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtHRA())); + arylstParam.add(new DBObject(18, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtConv())); + arylstParam.add(new DBObject(19, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtOtherAllowances())); + arylstParam.add(new DBObject(20, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtIncentives())); + arylstParam.add(new DBObject(21, 1, 12, oHrmRecApplnMtnExpDtlBean.getTxtBonus())); + arylstParam.add(new DBObject(22, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(23, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecApplnMtnExpDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMRECAPPLNMTN.procDeleteHrRecApplnExpDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecApplnMtnExpDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveHrmRecApplnOtherDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + String metro = null; + String sMedFlag = null; + String sQualFlag = null; + String sWrAFlag = null; + String sWrBFlag = null; + String sIntFlag = null; + while (itrBean.hasNext()) { + HrmRecApplnMtnOtherDtlBean oHrmRecApplnMtnOtherDtlBean = itrBean.next(); + if (oHrmRecApplnMtnOtherDtlBean.getDetailId() == null || oHrmRecApplnMtnOtherDtlBean.getDetailId().equalsIgnoreCase("")) + oHrmRecApplnMtnOtherDtlBean.setStatus("N"); + if (oHrmRecApplnMtnOtherDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECAPPLNMTN.procUpsertHrRecApplnResultDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, sHeaderPrimaryKey)); + if (oHrmRecApplnMtnOtherDtlBean.getFailedWrittenA().equalsIgnoreCase("on")) { + sWrAFlag = "Y"; + } else { + sWrAFlag = "N"; + } + if (oHrmRecApplnMtnOtherDtlBean.getFailedWrittenB().equalsIgnoreCase("on")) { + sWrBFlag = "Y"; + } else { + sWrBFlag = "N"; + } + if (oHrmRecApplnMtnOtherDtlBean.getQualInterview().equalsIgnoreCase("on")) { + sIntFlag = "Y"; + } else { + sIntFlag = "N"; + } + arylstParam.add(new DBObject(3, 1, 12, oHrmRecApplnMtnOtherDtlBean.getTestCentreId())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnOtherDtlBean.getInterviewScore())); + arylstParam.add(new DBObject(5, 1, 12, sIntFlag)); + arylstParam.add(new DBObject(6, 1, 12, oHrmRecApplnMtnOtherDtlBean.getWrittenScoreB())); + arylstParam.add(new DBObject(7, 1, 12, sWrBFlag)); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnOtherDtlBean.getWrittenScoreA())); + arylstParam.add(new DBObject(9, 1, 12, sWrAFlag)); + if (oHrmRecApplnMtnOtherDtlBean.getMedicalCleared().equalsIgnoreCase("on")) { + sMedFlag = "Y"; + } else { + sMedFlag = "N"; + } + if (oHrmRecApplnMtnOtherDtlBean.getDisqualified().equalsIgnoreCase("on")) { + sQualFlag = "Y"; + } else { + sQualFlag = "N"; + } + arylstParam.add(new DBObject(10, 1, 12, sMedFlag)); + arylstParam.add(new DBObject(11, 1, 12, String.valueOf(oHrmRecApplnMtnOtherDtlBean.getQualInterview2()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(12, 1, 12, String.valueOf(oHrmRecApplnMtnOtherDtlBean.getQualInterview3()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(13, 1, 12, oHrmRecApplnMtnOtherDtlBean.getRating())); + arylstParam.add(new DBObject(14, 1, 12, sQualFlag)); + arylstParam.add(new DBObject(15, 1, 12, String.valueOf(oHrmRecApplnMtnOtherDtlBean.getAppointedFlag()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(16, 1, 12, String.valueOf(oHrmRecApplnMtnOtherDtlBean.getJoinedOrganisation()).equalsIgnoreCase("on") ? "Y" : "N")); + arylstParam.add(new DBObject(17, 1, 12, oHrmRecApplnMtnOtherDtlBean.getInterviewScore2())); + arylstParam.add(new DBObject(18, 1, 12, oHrmRecApplnMtnOtherDtlBean.getInterviewScore3())); + arylstParam.add(new DBObject(19, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(20, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean = (HrmRecApplnMtnHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnMtnHdrBean.getApplicantFirstName())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecApplnMtnHdrBean.getApplicantMiddleName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnHdrBean.getApplicantLastName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnHdrBean.getApplicationNo())); + arylstParam.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnHdrBean.getApplicationDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnHdrBean.getDesignationId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnHdrBean.getEmployeeStatus())); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnHdrBean.getRollNo())); + arylstParam.add(new DBObject(10, 1, 12, oHrmRecApplnMtnHdrBean.getReferenceId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(13, 1, 12, null)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procUpsertHrRecApplnHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecApplnMtnHdrBean.getApplicantFirstName())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecApplnMtnHdrBean.getApplicantMiddleName())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecApplnMtnHdrBean.getApplicantLastName())); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecApplnMtnHdrBean.getApplicationNo())); + arylstParam.add(new DBObject(6, 1, 12, EnrgiseUtil.convertToSqlDate(oHrmRecApplnMtnHdrBean.getApplicationDate()))); + arylstParam.add(new DBObject(7, 1, 12, oHrmRecApplnMtnHdrBean.getDesignationId())); + arylstParam.add(new DBObject(8, 1, 12, oHrmRecApplnMtnHdrBean.getEmployeeStatus())); + arylstParam.add(new DBObject(9, 1, 12, oHrmRecApplnMtnHdrBean.getRollNo())); + arylstParam.add(new DBObject(10, 1, 12, oHrmRecApplnMtnHdrBean.getReferenceId())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(13, 1, 12, oHrmRecApplnMtnHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procUpsertHrRecApplnHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean = (HrmRecApplnMtnHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmRecApplnMtnHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnAddDtlBean oHrmRecApplnMtnAddDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnAddDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryAddDtl(oHrmRecApplnMtnAddDtlBean, rowCount); + rowCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnLangDtlBean oHrmRecApplnMtnLangDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnLangDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryLangDtl(oHrmRecApplnMtnLangDtlBean, rowCount); + rowCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnEduDtlBean oHrmRecApplnMtnEduDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnEduDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryEduDtl(oHrmRecApplnMtnEduDtlBean, rowCount); + rowCount++; + } + } + int percentPF = 0; + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnResultDtlBean oHrmRecApplnMtnResultDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnResultDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryResultDtl(oHrmRecApplnMtnResultDtlBean, rowCount); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnExpDtlBean oHrmRecApplnMtnExpDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnExpDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryExpDtl(oHrmRecApplnMtnExpDtlBean, rowCount); + rowCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnRefDtlBean oHrmRecApplnMtnRefDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnRefDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryRefDtl(oHrmRecApplnMtnRefDtlBean, rowCount); + rowCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnTrngDtlBean oHrmRecApplnMtnTrngDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnTrngDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryTrngDtl(oHrmRecApplnMtnTrngDtlBean, rowCount); + rowCount++; + } + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnOtherDtlBean oHrmRecApplnMtnOtherDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnOtherDtlBean.getStatus().equalsIgnoreCase("D")); + rowCount++; + } + } + } + } + + private void checkMandatoryHeader(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnHdrBean.getApplicationNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.applicationNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnHdrBean.getReferenceNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.referenceNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnHdrBean.getApplicantFirstName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.applicationFirstName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnHdrBean.getApplicantLastName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.applicationLastName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnHdrBean.getApplicationDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.applicationDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryAddDtl(HrmRecApplnMtnAddDtlBean oHrmRecApplnMtnAddDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getMotherTongue())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.motherTongue"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getDateOfBirth())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.DOB"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getNationality())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.nationality"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getSex())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.sex"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getMaritalStatus())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.maritalStatus"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPermCountry())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.country"); + oParams = new ArrayList(); + oParams.add("Permanent Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPresCountry())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.country"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPermCity())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.city"); + oParams = new ArrayList(); + oParams.add("Permanent Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPresCity())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.city"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPermState())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.state"); + oParams = new ArrayList(); + oParams.add("Permanent Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPresState())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.state"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPermAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.address"); + oParams = new ArrayList(); + oParams.add("Permanent Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getPresAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetailsAddress.address"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnAddDtlBean.getReligion())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpPersonalDetails.religion"); + oParams = new ArrayList(); + oParams.add("Present Address"); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.onlyDetailAdd.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryLangDtl(HrmRecApplnMtnLangDtlBean oHrmRecApplnMtnLangDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnLangDtlBean.getTxtKnowledgeLevel())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.knowledgeLevel"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnLangDtlBean.getTxtLanguageCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.languageCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryEduDtl(HrmRecApplnMtnEduDtlBean oHrmRecApplnMtnEduDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnEduDtlBean.getTxtInstCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.instCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnEduDtlBean.getTxtQualification())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.qualification"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnEduDtlBean.getTxtPercentageMarks())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.percentageMarks"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnEduDtlBean.getTxtPassYear())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.passYear"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryResultDtl(HrmRecApplnMtnResultDtlBean oHrmRecApplnMtnResultDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + rowCount++; + reportError(oErrorList); + } + + private void checkMandatoryExpDtl(HrmRecApplnMtnExpDtlBean oHrmRecApplnMtnExpDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnExpDtlBean.getTxtPeriodFrom())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.periodFrom"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnExpDtlBean.getTxtPeriodTo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.periodTo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnExpDtlBean.getTxtOrganisation())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.organisation"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnExpDtlBean.getTxtLocation())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.location"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryTrngDtl(HrmRecApplnMtnTrngDtlBean oHrmRecApplnMtnTrngDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnTrngDtlBean.getTxtCourse())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.course"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnTrngDtlBean.getTxtFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.fromDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnTrngDtlBean.getTxtToDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.toDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnTrngDtlBean.getTxtInstitute())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.institute"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryRefDtl(HrmRecApplnMtnRefDtlBean oHrmRecApplnMtnRefDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnRefDtlBean.getTxtName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.name"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnRefDtlBean.getTxtAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmApplicationMaintenance.address"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + additionalFieldValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, arylstDetailBeanArray, bDetailDataChanged, oDetailPicked); + HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean = (HrmRecApplnMtnHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmRecApplnMtnHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnEduDtlBean oHrmRecApplnMtnEduDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnEduDtlBean.getStatus().equals("D")) { + checkPercentage(arylstDetailBeanArray); + getyyyyDateFormat(arylstDetailBeanArray, arylstErrorList); + } + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnExpDtlBean oHrmRecApplnMtnExpDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnExpDtlBean.getStatus().equals("D")) + checkDateValidation(arylstDetailBeanArray, arylstErrorList); + } + rowCount++; + } + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnTrngDtlBean oHrmRecApplnMtnTrngDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnTrngDtlBean.getStatus().equals("D")) + checkTrngDateValidation(arylstDetailBeanArray, arylstErrorList); + } + rowCount++; + } + } + reportError(arylstErrorList); + } + + private void checkDateValidation(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnExpDtlBean oHrmRecApplnMtnExpDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnExpDtlBean.getStatus().equalsIgnoreCase("D")) { + String sEffectFrom = oHrmRecApplnMtnExpDtlBean.getTxtPeriodFrom(); + String sEffectTo = oHrmRecApplnMtnExpDtlBean.getTxtPeriodTo(); + HrmCommonBO oBO = new HrmCommonBO(); + String sysDate = oBO.getSysDate(); + int year = Integer.parseInt(sysDate.substring(6, sysDate.length())); + int month = Integer.parseInt(sysDate.substring(3, 5)); + if (year < Integer.parseInt(sEffectTo.substring(2, 6))) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodTo")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmRecApplnMtn.checkExpTo", arylstParam)); + } + if (year == Integer.parseInt(sEffectTo.substring(2, 6))) + if (month < Integer.parseInt(sEffectTo.substring(0, 2))) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodTo")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmRecApplnMtn.checkExpTo", arylstParam)); + } + if (Integer.parseInt(sEffectFrom.substring(0, 2)) < 1 || Integer.parseInt(sEffectFrom.substring(0, 2)) > 12) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodFrom")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrms.dateValidation.month", arylstParam)); + } + if (Integer.parseInt(sEffectFrom.substring(2, 3)) == 0) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodFrom")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrms.dateValidation.year", arylstParam)); + } + if (Integer.parseInt(sEffectTo.substring(0, 2)) < 1 || Integer.parseInt(sEffectTo.substring(0, 2)) > 12) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodTo")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrms.dateValidation.month", arylstParam)); + } + if (Integer.parseInt(sEffectTo.substring(2, 3)) == 0) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodTo")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrms.dateValidation.year", arylstParam)); + } + int iFromMonth = Integer.parseInt(sEffectFrom.substring(0, 2)); + int iFromYear = Integer.parseInt(sEffectFrom.substring(2, 6)); + int iToMonth = Integer.parseInt(sEffectTo.substring(0, 2)); + int iToYear = Integer.parseInt(sEffectTo.substring(2, 6)); + if (iFromYear > iToYear) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodFrom")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmRecApplnMtn.checkExp", arylstParam)); + } + if (iFromYear == iToYear) + if (iFromMonth >= iToMonth) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("hrm.HrmApplicationMaintenance.periodFrom")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmRecApplnMtn.checkExp", arylstParam)); + } + } + } + } + + private void checkTrngDateValidation(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnTrngDtlBean oHrmRecApplnMtnTrngDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnTrngDtlBean.getStatus().equalsIgnoreCase("D")) { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmRecApplnMtnTrngDtlBean.getTxtFromDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmRecApplnMtnTrngDtlBean.getTxtToDate(), oHrmRecApplnMtnTrngDtlBean.getTxtFromDate()); + if (dateFlag == -1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmApplicationMaintenance.dateConstraintViolated", arylstParam)); + } + } + if (EnrgiseUtil.checkString(oHrmRecApplnMtnTrngDtlBean.getTxtToDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmRecApplnMtnTrngDtlBean.getTxtToDate()); + if (dateFlag1 == -1 && dateFlag1 != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmApplicationMaintenance.dateConstraintViolated2", arylstParam)); + } + } + if (EnrgiseUtil.checkString(oHrmRecApplnMtnTrngDtlBean.getTxtFromDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, EnrgiseUtil.convertToString(EnrgiseUtil.getSysDate()), oHrmRecApplnMtnTrngDtlBean.getTxtFromDate()); + if (dateFlag1 == -1 && dateFlag1 != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("hrm.HrmApplicationMaintenance.dateConstraintViolated1", arylstParam)); + } + } + } + } + } + + private void getyyyyDateFormat(ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + HrmCommonBO oBO = new HrmCommonBO(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmRecApplnMtnEduDtlBean oHrmRecApplnMtnEduDtlBean = itrBean1.next(); + if (!oHrmRecApplnMtnEduDtlBean.getStatus().equalsIgnoreCase("D")) { + String sEffectFrom = oHrmRecApplnMtnEduDtlBean.getTxtPassYear(); + int iMMEffectFrom = Integer.parseInt(sEffectFrom); + String sysDate = oBO.getSysDate(); + if (iMMEffectFrom <= 1900) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("Pass Year")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.empPers.detail.dateConstraintViolated", arylstParam)); + continue; + } + if (iMMEffectFrom > Integer.parseInt(sysDate.substring(6, 10))) { + arylstParam = new ArrayList(); + arylstParam.add(new MessageKey("Pass Year")); + arylstParam.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.empPers.detail.dateConstraintViolated", arylstParam)); + } + } + } + } + + private void checkUniqueHeader(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_ADVT_APPL_DTL where APPL_NO='").concat(String.valueOf(oHrmRecApplnMtnHdrBean.getApplicationNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecApplnMtnHdrBean.getHeaderPrimaryKey())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } + + private void checkPercentage(ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + int count = 0; + Iterator itrBean = arylstDetailBeanArray.iterator(); + int totalDuration = 0; + while (itrBean.hasNext()) { + HrmRecApplnMtnEduDtlBean oHrmRecApplnMtnEduDtlBean = arylstDetailBeanArray.get(count); + float fPercent = Float.parseFloat(oHrmRecApplnMtnEduDtlBean.getTxtPercentageMarks()); + if (fPercent > 100) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmEmpPersonalDetailsEdu.checkPercent", arylstParam)); + } + count++; + itrBean.next(); + } + reportError(arylstList); + } + + public LovVO getHrmRecApplnRefNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.referenceNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procGetHrmRecRefNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecApplnDesigLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.applForGrade"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.applForDesignation"); + arylstHeaderList.add("hrm.HrmAdvertisementAttribute.id"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.resvCategory"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("referenceNo") != null) + sQuerySearch2 = oLovQueryVO.getProperty("referenceNo"); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procGetHrmRecDesigLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESIG_ID").getString()); + oLOVBean.setDetailField3(oRow.get("GRADE").getString()); + oLOVBean.setDetailField4(oRow.get("DESIG_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("RESERVATION_ID").getString()); + oLOVBean.setDetailField6(oRow.get("RESERVATION_NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecApplnApplnNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("id"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.applicationNo"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.applicationDate"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procGetHrmRecApplNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPL_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("APPL_DATE").getDate())); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecApplnLangCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.languageCode"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procGetHrmRecLangLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecApplnKnowCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.knowledgeLevel"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procGetHrmRecKnowCodeLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecApplnResvCatCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.resvCategory"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procGetHrmRecResCatLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getHrmRecApplnTestCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmApplicationMaintenance.testCenter"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECAPPLNMTN.procGetHrmRecTestCtrLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + private String CalculateWorkExp(HrmRecApplnMtnExpDtlBean oHrmRecApplnMtnExpDtlBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + int iFromDate = 0; + int iFromYear = 0; + int iToDate = 0; + int iToYear = 0; + int iExp = 0; + int iNewToDate = 0; + if (EnrgiseUtil.checkString(oHrmRecApplnMtnExpDtlBean.getTxtPeriodFrom())) { + iFromDate = Integer.parseInt(oHrmRecApplnMtnExpDtlBean.getTxtPeriodFrom().substring(0, 2)); + iFromYear = Integer.parseInt(oHrmRecApplnMtnExpDtlBean.getTxtPeriodFrom().substring(2, 6)); + } + if (EnrgiseUtil.checkString(oHrmRecApplnMtnExpDtlBean.getTxtPeriodTo())) { + iToDate = Integer.parseInt(oHrmRecApplnMtnExpDtlBean.getTxtPeriodTo().substring(0, 2)); + iToYear = Integer.parseInt(oHrmRecApplnMtnExpDtlBean.getTxtPeriodTo().substring(2, 6)); + } + if (iToDate < iFromDate) { + iNewToDate = iToDate + 12; + if (iToYear > iFromYear) { + iExp = (iToYear - iFromYear) * 12 + iNewToDate - iFromDate - 12; + } else if (iToYear == iFromYear) { + iExp = iNewToDate - iFromDate; + } + } else if (iToDate > iFromDate) { + if (iToYear > iFromYear) { + iExp = (iToYear - iFromYear) * 12 + iToDate - iFromDate; + } else if (iToYear == iFromYear) { + iExp = iToDate - iFromDate; + } + } else if (iFromDate == iToDate) { + if (iToYear > iFromYear) { + iExp = (iToYear - iFromYear) * 12; + } else if (iToYear == iFromYear) { + iExp = iFromDate - iToDate; + } + } + return String.valueOf(iExp); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecEmpRecCreationBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecEmpRecCreationBO.java new file mode 100644 index 0000000..824e39b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecEmpRecCreationBO.java @@ -0,0 +1,1351 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; + +public class HrmRecEmpRecCreationBO extends HrmBaseBO { + public HrmRecEmpRecCreationBO() {} + + public HrmRecEmpRecCreationBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpRecCrtnHdrMetaInfo(HrmRecEmpRecCreationQVO oHrmRecEmpRecCreationQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRecEmpRecCreationQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecEmpRecCreationQVO.getApplicationNo())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_HrmEmpRecCreationHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpRecCrtnHeaderInfo(HrmRecEmpRecCreationQVO oHrmRecEmpRecCreationQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmRecEmpRecCreationQVO == null) + oHrmRecEmpRecCreationQVO = new HrmRecEmpRecCreationQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmRecEmpRecCreationQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecEmpRecCreationQVO.getApplicationNo())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrEmpRecCreationHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = new HrmRecEmpRecCreationHdrBean(); + oHrmRecEmpRecCreationHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmRecEmpRecCreationHdrBean.setApplnId(oRow.get("ID").getString()); + oHrmRecEmpRecCreationHdrBean.setApplicationNo(oRow.get("APPL_NO").getString()); + oHrmRecEmpRecCreationHdrBean.setAdvNo(oRow.get("REF_NO").getString()); + oHrmRecEmpRecCreationHdrBean.setDesgnId(oRow.get("DESGN_ID").getString()); + oHrmRecEmpRecCreationHdrBean.setApplForDesignation(oRow.get("FOR_DESIG").getString()); + oHrmRecEmpRecCreationHdrBean.setApplForGrade(oRow.get("FOR_GRADE").getString()); + oHrmRecEmpRecCreationHdrBean.setEmployeeFirstName(oRow.get("FIRST_NAME").getString()); + oHrmRecEmpRecCreationHdrBean.setEmployeeMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmRecEmpRecCreationHdrBean.setEmployeeLastName(oRow.get("LAST_NAME").getString()); + oHrmRecEmpRecCreationHdrBean.setEntryModeCode(oRow.get("ENTRY_MODE_CODE").getString()); + oHrmRecEmpRecCreationHdrBean.setEntryMode(oRow.get("ENTRY_MODE").getString()); + oHrmRecEmpRecCreationHdrBean.setRollNo(oRow.get("ROLL_NO").getString()); + oHrmRecEmpRecCreationHdrBean.setNewEmpNo(oRow.get("EMP_NO").getString()); + oHrmRecEmpRecCreationHdrBean.setGuardianName(oRow.get("GUARDIAN_NAME").getString()); + oHrmRecEmpRecCreationHdrBean.setPlaceOfBirth(oRow.get("PLACE_OF_BIRTH").getString()); + oHrmRecEmpRecCreationHdrBean.setDateOfBirth(EnrgiseUtil.convertToString(oRow.get("DOB").getDate())); + oHrmRecEmpRecCreationHdrBean.setNationality(oRow.get("NATIONALITY").getString()); + oHrmRecEmpRecCreationHdrBean.setNationalityCode(oRow.get("NATIONALITY_CODE").getString()); + oHrmRecEmpRecCreationHdrBean.setMaritalStatus(oRow.get("MARITAL_STATUS").getString()); + oHrmRecEmpRecCreationHdrBean.setMaritalStatusCode(oRow.get("MARITAL_STATUS_CODE").getString()); + oHrmRecEmpRecCreationHdrBean.setSex(oRow.get("SEX").getString()); + oHrmRecEmpRecCreationHdrBean.setMotherToungue(oRow.get("MOTHER_TONGUE").getString()); + oHrmRecEmpRecCreationHdrBean.setMotherToungueCode(oRow.get("MOTHER_TONGUE_CODE").getString()); + oHrmRecEmpRecCreationHdrBean.setRelatedEmployee(oRow.get("RELATED_EMPLOYEE").getString()); + oHrmRecEmpRecCreationHdrBean.setRelatedEmployeeId(oRow.get("RELATED_EMP_ID").getString()); + oHrmRecEmpRecCreationHdrBean.setReligion(oRow.get("RLGN_NAME").getString()); + oHrmRecEmpRecCreationHdrBean.setReligionId(oRow.get("RLGN_MST_ID").getString()); + oHrmRecEmpRecCreationHdrBean.setBloodGroup(oRow.get("BLOOD_GROUP").getString()); + oHrmRecEmpRecCreationHdrBean.setEmail(oRow.get("EMAIL").getString()); + oHrmRecEmpRecCreationHdrBean.setArrested(oRow.get("ARRESTED_FLAG").getString()); + oHrmRecEmpRecCreationHdrBean.setProscecuted(oRow.get("PROSECUTED_FLAG").getString()); + oHrmRecEmpRecCreationHdrBean.setFined(oRow.get("FINED_FLAG").getString()); + oHrmRecEmpRecCreationHdrBean.setImprisoned(oRow.get("IMPRISONED_FLAG").getString()); + oHrmRecEmpRecCreationHdrBean.setHandicappedFlag(String.valueOf(oRow.get("HANDICAPPED_FLAG").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHrmRecEmpRecCreationHdrBean.setPassportNo(oRow.get("PASSPORT_NO").getString()); + oHrmRecEmpRecCreationHdrBean.setPlaceOfissue(oRow.get("PLACE_ISSUE").getString()); + oHrmRecEmpRecCreationHdrBean.setExpiryDate(EnrgiseUtil.convertToString(oRow.get("PASSPORT_EXPIRY_DATE").getDate())); + oHrmRecEmpRecCreationHdrBean.setIssueDate(EnrgiseUtil.convertToString(oRow.get("PASSPORT_ISSUE_DATE").getDate())); + oHrmRecEmpRecCreationHdrBean.setPresentAddress(oRow.get("PRES_ADD").getString()); + oHrmRecEmpRecCreationHdrBean.setCountryPresentAddress(oRow.get("PRES_COUNTRY").getString()); + oHrmRecEmpRecCreationHdrBean.setStatePresentAddress(oRow.get("PRES_STATE").getString()); + oHrmRecEmpRecCreationHdrBean.setCityPresentAddress(oRow.get("PRES_CITY").getString()); + oHrmRecEmpRecCreationHdrBean.setPhonePresentAddress(oRow.get("PRES_PHONE").getString()); + oHrmRecEmpRecCreationHdrBean.setPinCodePresentAddress(oRow.get("PRES_PIN_CODE").getString()); + oHrmRecEmpRecCreationHdrBean.setPermanentAddress(oRow.get("PERM_ADD").getString()); + oHrmRecEmpRecCreationHdrBean.setCountryPermanentAddress(oRow.get("PERM_COUNTRY").getString()); + oHrmRecEmpRecCreationHdrBean.setStatePermanentAddress(oRow.get("PERM_STATE").getString()); + oHrmRecEmpRecCreationHdrBean.setCityPermanentAddress(oRow.get("PERM_CITY").getString()); + oHrmRecEmpRecCreationHdrBean.setPhonePermanentAddresss(oRow.get("PERM_PHONE").getString()); + oHrmRecEmpRecCreationHdrBean.setPinCodePermanentAddress(oRow.get("PERM_PIN_CODE").getString()); + arylstHeaderList.add(oHrmRecEmpRecCreationHdrBean); + } + return arylstHeaderList; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_ADVT_APPL_DTL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public RecordMetaInfo getDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public LovVO getHrmRecCrnApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.applicationNo"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmApplnNoLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPL_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMPNAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnEntryModeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmEntryModeLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnEmployeeTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmEmployeeTypeLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnMotherTongueLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmMotherTngLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnNationalityLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmNationalityLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnMaritalStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmMaritalStatLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnReservationCtgLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.hierarchyLevel"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmRsvCtgLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY_LEVEL").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnReligionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmReligionLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnCountryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmCountryLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("COUNTRY_ID").getString()); + oLOVBean.setDetailField2(oRow.get("COUNTRY_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnStateLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmStateLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("GLOBAL_CODE_TYPE").getString()); + oLOVBean.setDetailField2(oRow.get("GLOBAL_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("GLOBAL_CODE_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnBaseSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmRecBaseSiteLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnDesignationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.hierarchyLevel"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmDesignationLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY_LEVEL").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnScaleLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.hierarchyLevel"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmScaleLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY_LEVEL").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnGradeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.hierarchyLevel"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmGradeLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("HIERARCHY_LEVEL").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnCostCentreLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmCostCenterLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("COST_ID").getString()); + oLOVBean.setDetailField2(oRow.get("COST_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("COST_DESC").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnJoiningGroupLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmWorkGroupLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmRecCrnTechNonTechLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.code"); + arylstHeaderList.add("hrm.HrmEmpRecCreation.desc"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetHrmTechLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String sSaveRecCrn = saveRecEmpInfo(oBaseHeaderBean, ScreenMode); + return sSaveRecCrn; + } + + public String saveRecEmpInfo(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oBaseHeaderBean; + String handicapped = null; + if (String.valueOf(oHrmRecEmpRecCreationHdrBean.getHandicappedFlag()).equalsIgnoreCase("on")) { + handicapped = "Y"; + } else { + handicapped = "N"; + } + if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmRecEmpRecCreationHdrBean.getApplicationNo())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmRecEmpRecCreationHdrBean.getApplnId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmRecEmpRecCreationHdrBean.getNewEmpNo())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmRecEmpRecCreationHdrBean.getEmployeeFirstName())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmRecEmpRecCreationHdrBean.getEmployeeMiddleName())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmRecEmpRecCreationHdrBean.getEmployeeLastName())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmRecEmpRecCreationHdrBean.getEntryModeCode())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmRecEmpRecCreationHdrBean.getGuardianName())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmRecEmpRecCreationHdrBean.getMotherToungueCode())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmRecEmpRecCreationHdrBean.getPlaceOfBirth())); + arylstParameters.add(new DBObject(11, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getDateOfBirth()))); + arylstParameters.add(new DBObject(12, 1, 12, oHrmRecEmpRecCreationHdrBean.getNationalityCode())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmRecEmpRecCreationHdrBean.getBloodGroup())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmRecEmpRecCreationHdrBean.getMaritalStatusCode())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmRecEmpRecCreationHdrBean.getSex())); + arylstParameters.add(new DBObject(16, 1, 12, oHrmRecEmpRecCreationHdrBean.getEmail())); + arylstParameters.add(new DBObject(17, 1, 12, handicapped)); + arylstParameters.add(new DBObject(18, 1, 12, oHrmRecEmpRecCreationHdrBean.getPassportNo())); + arylstParameters.add(new DBObject(19, 1, 12, oHrmRecEmpRecCreationHdrBean.getPlaceOfissue())); + arylstParameters.add(new DBObject(20, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getExpiryDate()))); + arylstParameters.add(new DBObject(21, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getIssueDate()))); + arylstParameters.add(new DBObject(22, 1, 12, oHrmRecEmpRecCreationHdrBean.getAppointmentOrder())); + arylstParameters.add(new DBObject(23, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getAppointmentOrderDate()))); + arylstParameters.add(new DBObject(24, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getCompanyJoiningDate()))); + arylstParameters.add(new DBObject(25, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getLocationJoiningDate()))); + arylstParameters.add(new DBObject(26, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getTentativeConfirmDate()))); + arylstParameters.add(new DBObject(27, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getRetirementDate()))); + arylstParameters.add(new DBObject(28, 1, 12, oHrmRecEmpRecCreationHdrBean.getEmployeeType())); + arylstParameters.add(new DBObject(29, 1, 12, oHrmRecEmpRecCreationHdrBean.getBaseSiteId())); + arylstParameters.add(new DBObject(30, 1, 12, oHrmRecEmpRecCreationHdrBean.getReligionId())); + arylstParameters.add(new DBObject(31, 1, 12, oHrmRecEmpRecCreationHdrBean.getRelatedEmployeeId())); + arylstParameters.add(new DBObject(32, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(33, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(34, 2, 12)); + arylstParameters.add(new DBObject(35, 2, 12)); + arylstParameters.add(new DBObject(36, 2, 12)); + arylstParameters.add(new DBObject(37, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMRECCREATION.proc_UpsertHrEmpRecCreationHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + saveRecEmpAdd(oBaseHeaderBean, ScreenMode, returnString); + saveRecJoinInf(oBaseHeaderBean, ScreenMode, returnString); + saveRecWrkGrp(oBaseHeaderBean, ScreenMode, returnString); + saveRecEmpDayOff(oBaseHeaderBean, ScreenMode, returnString); + return oHrmRecEmpRecCreationHdrBean.getApplnId(); + } + + public String saveRecEmpAdd(BaseHeaderBean oBaseHeaderBean, String ScreenMode, String empPerId) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, empPerId)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmRecEmpRecCreationHdrBean.getOfficeAddress())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmRecEmpRecCreationHdrBean.getCityOfficeAddress())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmRecEmpRecCreationHdrBean.getStateOfficeAddress())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmRecEmpRecCreationHdrBean.getCountryOfficeAddress())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmRecEmpRecCreationHdrBean.getPinCodeOfficeAddress())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmRecEmpRecCreationHdrBean.getPhoneOfficeAddress())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmRecEmpRecCreationHdrBean.getPresentAddress())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmRecEmpRecCreationHdrBean.getCityPresentAddress())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmRecEmpRecCreationHdrBean.getStatePresentAddress())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmRecEmpRecCreationHdrBean.getCountryPresentAddress())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmRecEmpRecCreationHdrBean.getPinCodePresentAddress())); + arylstParameters.add(new DBObject(14, 1, 12, oHrmRecEmpRecCreationHdrBean.getPhonePresentAddress())); + arylstParameters.add(new DBObject(15, 1, 12, oHrmRecEmpRecCreationHdrBean.getPermanentAddress())); + arylstParameters.add(new DBObject(16, 1, 12, oHrmRecEmpRecCreationHdrBean.getCityPermanentAddress())); + arylstParameters.add(new DBObject(17, 1, 12, oHrmRecEmpRecCreationHdrBean.getStatePermanentAddress())); + arylstParameters.add(new DBObject(18, 1, 12, oHrmRecEmpRecCreationHdrBean.getCountryPermanentAddress())); + arylstParameters.add(new DBObject(19, 1, 12, oHrmRecEmpRecCreationHdrBean.getPinCodePermanentAddress())); + arylstParameters.add(new DBObject(20, 1, 12, oHrmRecEmpRecCreationHdrBean.getPhonePermanentAddresss())); + arylstParameters.add(new DBObject(21, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(22, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(23, 2, 12)); + arylstParameters.add(new DBObject(24, 2, 12)); + arylstParameters.add(new DBObject(25, 2, 12)); + arylstParameters.add(new DBObject(26, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMRECCREATION.proc_UpsertHrEmpRecCreationAdd(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public String saveRecEmpDayOff(BaseHeaderBean oBaseHeaderBean, String ScreenMode, String empPerId) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, empPerId)); + arylstParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRecEmpRecCreationHdrBean.getCompanyJoiningDate()))); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMRECCREATION.procUpsertHrEmpDayOff(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + + } + return returnString; + } + + public String saveRecJoinInf(BaseHeaderBean oBaseHeaderBean, String ScreenMode, String empPerId) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, empPerId)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmRecEmpRecCreationHdrBean.getDesgnId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmRecEmpRecCreationHdrBean.getGradeId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmRecEmpRecCreationHdrBean.getReservationCategory())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmRecEmpRecCreationHdrBean.getApplicationNo())); + arylstParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMRECCREATION.proc_UpsertHrEmpRecCrnDtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + + } + return returnString; + } + + public String saveRecWrkGrp(BaseHeaderBean oBaseHeaderBean, String ScreenMode, String empPerId) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, empPerId)); + arylstParameters.add(new DBObject(2, 1, 12, "200")); + arylstParameters.add(new DBObject(3, 1, 12, oHrmRecEmpRecCreationHdrBean.getJoiningId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmRecEmpRecCreationHdrBean.getCompanyJoiningDate())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMRECCREATION.proc_UpsertHrEmpRecWrkGrpHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmRecEmpRecCreationHdrBean)oBaseHeaderBean); + } + + private void checkMandatoryHeader(HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getOfficeAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.address"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new MessageKey("hrm.HrmEmpRecCreation.office")); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpRecCreation.mandatory", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getCityOfficeAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.city"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new MessageKey("hrm.HrmEmpRecCreation.office")); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpRecCreation.mandatory", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getStateOfficeAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.state"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new MessageKey("hrm.HrmEmpRecCreation.office")); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpRecCreation.mandatory", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getCountryOfficeAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.country"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new MessageKey("hrm.HrmEmpRecCreation.office")); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpRecCreation.mandatory", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getAppointmentOrder())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.appointmentOrder"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getAppointmentOrderDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.appointmentOrderDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getCompanyJoiningDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.companyJoiningDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getGradeId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.grade"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getBaseSiteId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.baseSite"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getEmployeeType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.employeeType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmRecEmpRecCreationHdrBean)oBaseHeaderBean); + checkDatesConstraint((HrmRecEmpRecCreationHdrBean)oBaseHeaderBean, arylstErrorList); + } + if (sScreenMode.equalsIgnoreCase("D")); + } + reportError(arylstErrorList); + } + + private void checkUniqueHeader(HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select EMP_NO as EMP_NO from HRM_EMP_PERS where EMP_NO='").concat(String.valueOf(oHrmRecEmpRecCreationHdrBean.getNewEmpNo()))).concat(String.valueOf("'")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("EMP_NO").getString().equalsIgnoreCase(oHrmRecEmpRecCreationHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpRecCreation.heading"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmEmpRecCreation.uniqueHeader", oParams, "E")); + } + } + reportError(oErrorList); + } + + private void checkDatesConstraint(HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getCompanyJoiningDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmRecEmpRecCreationHdrBean.getCompanyJoiningDate(), oHrmRecEmpRecCreationHdrBean.getAppointmentOrderDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getLocationJoiningDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmRecEmpRecCreationHdrBean.getLocationJoiningDate(), oHrmRecEmpRecCreationHdrBean.getCompanyJoiningDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getTentativeConfirmDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmRecEmpRecCreationHdrBean.getTentativeConfirmDate(), oHrmRecEmpRecCreationHdrBean.getLocationJoiningDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmRecEmpRecCreationHdrBean.getRetirementDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmRecEmpRecCreationHdrBean.getRetirementDate(), oHrmRecEmpRecCreationHdrBean.getTentativeConfirmDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + } + + public String getLangInfo(String sCode) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sLang = null; + ArrayList arylstLangDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sCode)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetMotherTngInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstLangDetail = new ArrayList(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sLang = oRow.get("DESCRIPTION").getString(); + } + return sLang; + } + + public String getReligionInfo(String sId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + String sRlgn = null; + ArrayList arylstLangDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECCREATION.proc_GetReligionInfo(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + arylstLangDetail = new ArrayList(); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + while (itrBean.hasNext()) { + oRow = (QueryRow)itrBean.next(); + sRlgn = oRow.get("DESCRIPTION").getString(); + } + return sRlgn; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecRoasterEntryBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecRoasterEntryBO.java new file mode 100644 index 0000000..4426d23 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecRoasterEntryBO.java @@ -0,0 +1,482 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmRoasterEntryDtlBean; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; + +public class HrmRecRoasterEntryBO extends HrmBaseBO { + public HrmRecRoasterEntryBO() {} + + public HrmRecRoasterEntryBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmRoasterHdrMetaInfo(HrmRoasterEntryQVO oHrmRoasterEntryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRoasterEntryQVO.getTxtRoasterCode())); + arylstParam.add(new DBObject(2, 1, 12, oHrmRoasterEntryQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(3, 2, -5)); + arylstParam.add(new DBObject(4, 2, 93)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.proc_hrmrecroastercount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRoasterHdrInfo(HrmRoasterEntryQVO oHrmRoasterEntryQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmRoasterEntryQVO == null) + oHrmRoasterEntryQVO = new HrmRoasterEntryQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmRoasterEntryQVO.getTxtRoasterCode())); + arylstParam.add(new DBObject(4, 1, 12, oHrmRoasterEntryQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(5, 2, -10)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.proc_hrmrecroasterhdrinfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + if (arylstParam.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstParam.iterator(); + String draft = null; + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = (QueryRow)itrBean.next(); + HrmRoasterEntryHdrBean oHrmRoasterEntryHdrBean = new HrmRoasterEntryHdrBean(); + oHrmRoasterEntryHdrBean.setHeaderPrimaryKey(oRow.get("id").getString()); + oHrmRoasterEntryHdrBean.setTxtRoasterCode(oRow.get("roaster_code").getString()); + oHrmRoasterEntryHdrBean.setTxtRoasterDescription(oRow.get("roaster_desc").getString()); + arylstHeaderList.add(oHrmRoasterEntryHdrBean); + } + return arylstHeaderList; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRoasterEntryHdrBean oHrmRoasterEntryHdrBean = (HrmRoasterEntryHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "n")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRoasterEntryHdrBean.getTxtRoasterCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRoasterEntryHdrBean.getTxtRoasterDescription())); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(6, 1, 12, null)); + arylstParam.add(new DBObject(7, 2, 12)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.proc_upserthrmrecroasterhdr(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRoasterEntryHdrBean.getTxtRoasterCode())); + arylstParam.add(new DBObject(3, 1, 12, oHrmRoasterEntryHdrBean.getTxtRoasterDescription())); + arylstParam.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmRoasterEntryHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(7, 2, 12)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.proc_upserthrmrecroasterhdr(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRoasterEntryHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.proc_deletehrmrecroasterhdr(?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public RecordMetaInfo getHrmRoasterEntryDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "hrmrecroaster.proc_hrmrecroasterdtlcount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRoasterEntryDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arrHrmRoasterEntryDtl = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "hrmrecroaster.proc_hrmrecroasterdtlinfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arrHrmRoasterEntryDtl = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmRoasterEntryDtlBean oRoasterBean = new HrmRoasterEntryDtlBean(); + oRoasterBean.setDetailId(oRow.get("ID").getString()); + oRoasterBean.setTxtRoasterPoint(oRow.get("roaster_point").getString()); + oRoasterBean.setSocialStatus(oRow.get("CATEGORY_AS_PER_ROASTER_ID").getString()); + oRoasterBean.setTxtCategoryAsPerRoaster(oRow.get("CATEGORY_AS_PER_ROASTER").getString()); + oRoasterBean.setTxtEmployeeNo(oRow.get("emp_no").getString()); + oRoasterBean.setEmpNoId(oRow.get("E_PER_DTL_ID").getString()); + oRoasterBean.setTxtEmployeeName(oRow.get("EMPNAME").getString()); + oRoasterBean.setTxtAppointmentDate(EnrgiseUtil.convertToString(oRow.get("APPOINTMENT_DATE").getDate())); + oRoasterBean.setTxtDob(EnrgiseUtil.convertToString(oRow.get("DOB").getDate())); + oRoasterBean.setTxtCategoryId(oRow.get("CATEGORY_ID").getString()); + oRoasterBean.setTxtCategory(oRow.get("CATEGORY").getString()); + oRoasterBean.setEntryMode(oRow.get("ENTRYMODE").getString()); + arrHrmRoasterEntryDtl.add(oRoasterBean); + } + return arrHrmRoasterEntryDtl; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_RELA_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmRoasterEntry")) + saveHrmRoasterEntryDetail(arylstDetailBeanArray, sHeaderPrimaryKey); + } + + private void saveHrmRoasterEntryDetail(ArrayList arylstDetailBeanArray, String sHeaderPrimaryKey) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRoasterEntryDtlBean oHrmRoasterEntryDtlBean = itrBean.next(); + if (oHrmRoasterEntryDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("hrmrecroaster.proc_upserthrmrecroasterdtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmRoasterEntryDtlBean.getTxtRoasterPoint())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmRoasterEntryDtlBean.getSocialStatus())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmRoasterEntryDtlBean.getEmpNoId())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRoasterEntryDtlBean.getTxtAppointmentDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRoasterEntryDtlBean.getTxtDob()))); + arylstParameters.add(new DBObject(8, 1, 12, oHrmRoasterEntryDtlBean.getTxtCategoryId())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmRoasterEntryDtlBean.getEntryMode())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(12, 1, 12, null)); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmRoasterEntryDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("hrmrecroaster.proc_upserthrmrecroasterdtl(?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmRoasterEntryDtlBean.getTxtRoasterPoint())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmRoasterEntryDtlBean.getSocialStatus())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmRoasterEntryDtlBean.getEmpNoId())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRoasterEntryDtlBean.getTxtAppointmentDate()))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRoasterEntryDtlBean.getTxtDob()))); + arylstParameters.add(new DBObject(8, 1, 12, oHrmRoasterEntryDtlBean.getTxtCategoryId())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmRoasterEntryDtlBean.getEntryMode())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmRoasterEntryDtlBean.getDetailId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmRoasterEntryDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("hrmrecroaster.proc_deletehrmrecroasterdtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmRoasterEntryDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkMandatory(HrmRoasterEntryDtlBean oHrmRoasterEntryDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + int count = 0; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmRoasterEntryDtlBean oHrmRoasterEntryDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(" Select ID from HRM_STAFF_ROASTER_DTL where ROASTER='").concat(String.valueOf(oHrmRoasterEntryDtlBean.getTxtRoasterPoint()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRoasterEntryDtlBean.getDetailId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmRoasterEntry.txtRoasterPoint"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", oParams, "E")); + } + } + } + reportError(oErrorList); + } + + public LovVO getRstrSocialStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpPersonalDetails.code"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.procGetHrmRstRsvLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("code").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getRstrCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtRoasterCode"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtRoasterDescription"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.procGetHrmRoasterLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("roaster_code").getString()); + oLOVBean.setDetailField3(oRow.get("roaster_desc").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getRoasterEmpDetailsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtCategoryId"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtEmployeeNo"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtEmployeeName"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtAppointmentDate"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtDob"); + arylstHeaderList.add("hrm.HrmRoasterEntry.txtCategory"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "hrmrecroaster.procGetHrmRstEmpLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("rvsCategId").getString()); + oLOVBean.setDetailField3(oRow.get("emp_no").getString()); + oLOVBean.setDetailField4(oRow.get("empName").getString()); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("comp_join_date").getDate())); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("dob").getDate())); + oLOVBean.setDetailField7(oRow.get("rvsCateg").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecScrutAppMntBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecScrutAppMntBO.java new file mode 100644 index 0000000..ed1fff7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecScrutAppMntBO.java @@ -0,0 +1,278 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmRecScrutAppMtnDtlBean; +import wenrgise.hrms.bean.HrmRecScrutAppMtnHdrBean; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; + +public class HrmRecScrutAppMntBO extends HrmBaseBO { + String sStageFlag; + + public HrmRecScrutAppMntBO() {} + + public HrmRecScrutAppMntBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public LovVO getRefNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmScrutinizingApplicant.referenceNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECSCRUTAPPMNT.proc_GetReferenceNoLOV(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("REF_NO").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public LovVO getDesigNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sReferenceId = oLovQueryVO.getProperty("RefId"); + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(""); + arylstHeaderList.add("hrm.HrmScrutinizingApplicant.adForDesignation"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sReferenceId)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRECSCRUTAPPMNT.proc_GetAdvForDesigLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + arylstParam = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstParam.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstParam = new ArrayList(); + count++; + oRow = (QueryRow)iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("DESIGNATION_ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESIG_CODE").getString()); + arylstParam.add(oLOVBean); + } + oLovVO.setDetailList(arylstParam); + return oLovVO; + } + + public RecordMetaInfo getHrmRecScrutAppDtlMetaInfo(HrmRecScrutAppMntQVO oHrmRecScrutAppMntQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String stage = oHrmRecScrutAppMntQVO.getStage(); + this.sStageFlag = stage; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmRecScrutAppMntQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, stage)); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + System.out.println(String.valueOf(String.valueOf(String.valueOf("Before calling proc_GetSAMDetailCount --> ").concat(String.valueOf(oHrmRecScrutAppMntQVO.getHeaderPrimaryKey()))).concat(String.valueOf(" "))).concat(String.valueOf(stage))); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECSCRUTAPPMNT.proc_GetSAMDetailCount(?,?,?,?,?,?,?)"); + System.out.println("proc_GetSAMDetailCount executed successfully"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmRecScrutAppDetailInfo(HrmRecScrutAppMntQVO oHrmRecScrutAppMntQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + String stage = oHrmRecScrutAppMntQVO.getStage(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmRecScrutAppMtnDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmRecScrutAppMntQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, stage)); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + System.out.println(String.valueOf(String.valueOf(String.valueOf("Before calling proc_GetSAMDetailInfo --> ").concat(String.valueOf(oHrmRecScrutAppMntQVO.getHeaderPrimaryKey()))).concat(String.valueOf(" "))).concat(String.valueOf(stage))); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMRECSCRUTAPPMNT.proc_GetSAMDetailInfo(?,?,?,?,?,?,?,?)"); + System.out.println("proc_GetSAMDetailInfo executed successfully"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstHrmRecScrutAppMtnDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmRecScrutAppMtnDtlBean oHrmRecScrutAppMtnDtlBean = new HrmRecScrutAppMtnDtlBean(); + oHrmRecScrutAppMtnDtlBean.setDetailId(oRow.get("DTL_ID").getString()); + oHrmRecScrutAppMtnDtlBean.setTxtApplicantName(oRow.get("NAME").getString()); + oHrmRecScrutAppMtnDtlBean.setTxtApplicantNo(oRow.get("APPL_NO").getString()); + if (oHrmRecScrutAppMntQVO.getStage().equalsIgnoreCase("I")) { + oHrmRecScrutAppMtnDtlBean.setTxtEligibility("N"); + } else if (oHrmRecScrutAppMntQVO.getStage().equalsIgnoreCase("W")) { + oHrmRecScrutAppMtnDtlBean.setTxtEligibility("N"); + } else if (oHrmRecScrutAppMntQVO.getStage().equalsIgnoreCase("G")) { + oHrmRecScrutAppMtnDtlBean.setTxtEligibility("N"); + } else { + oHrmRecScrutAppMtnDtlBean.setTxtEligibility("N"); + } + oHrmRecScrutAppMtnDtlBean.setTxtWrittemMarksA(oRow.get("WRTN_TEST_SCORE").getString()); + oHrmRecScrutAppMtnDtlBean.setTxtWrittemMarksB(oRow.get("gd_score").getString()); + oHrmRecScrutAppMtnDtlBean.setTxtInterviewMarks(oRow.get("INTERVIEW_SCORE").getString()); + oHrmRecScrutAppMtnDtlBean.setTxtExpYrs(oRow.get("work_experience").getString()); + oHrmRecScrutAppMtnDtlBean.setTxtTestCenter(oRow.get("TEST_CODE").getString()); + arylstHrmRecScrutAppMtnDetail.add(oHrmRecScrutAppMtnDtlBean); + } + return arylstHrmRecScrutAppMtnDetail; + } + + private void saveScrutAppMtnDetails(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + HrmRecScrutAppMtnHdrBean oHrmRecScrutAppMtnHdrBean = new HrmRecScrutAppMtnHdrBean(); + String stageFlag = oHrmRecScrutAppMtnHdrBean.getStage(); + String desigId = oHrmRecScrutAppMtnHdrBean.getAdForDesignationId(); + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmRecScrutAppMtnDtlBean oHrmRecScrutAppMtnDtlBean = itrBean.next(); + if (oHrmRecScrutAppMtnDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECSCRUTAPPMNT.proc_UpsertScrutAppMtnDtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, "1")); + arylstParam.add(new DBObject(3, 1, 12, desigId)); + arylstParam.add(new DBObject(4, 1, 12, this.sStageFlag)); + arylstParam.add(new DBObject(5, 1, 12, oHrmRecScrutAppMtnDtlBean.getTxtEligibility())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmRecScrutAppMtnDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMRECSCRUTAPPMNT.proc_UpsertScrutAppMtnDtl(?,?,?,?,?,?)"); + bUpdate = true; + } + System.out.println(String.valueOf("Stage Flag is set to : ").concat(String.valueOf(this.sStageFlag))); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmRecScrutAppMtnDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, this.sStageFlag)); + arylstParam.add(new DBObject(4, 1, 12, oHrmRecScrutAppMtnDtlBean.getTxtEligibility())); + arylstParam.add(new DBObject(5, 1, 12, "200")); + arylstParam.add(new DBObject(6, 1, 12, "200")); + oBean.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + } + + public void initializeBOImpl() { + this.headerTable = "hrm_advt_dtl"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + saveScrutAppMtnDetails(oDetailBeanArray); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecTestCentreMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecTestCentreMstBO.java new file mode 100644 index 0000000..0cc75bb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRecTestCentreMstBO.java @@ -0,0 +1,249 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; + +public class HrmRecTestCentreMstBO extends HrmBaseBO { + public HrmRecTestCentreMstBO() {} + + public HrmRecTestCentreMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTCMstHdrMetaInfo(HrmRecTestCentreMstQVO oHrmTCMstQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmTCMstQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmTCMstQueryVO.getTestCentreCodeId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTCMST.proc_HrTCMstCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTCMstHeaderInfo(HrmRecTestCentreMstQVO oHrmTCMstQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTCMstQueryVO == null) + oHrmTCMstQueryVO = new HrmRecTestCentreMstQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmTCMstQueryVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmTCMstQueryVO.getTestCentreCodeId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTCMST.PROC_GETHRTCMSTINFO(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmRecTestCentreMstHdrBean oTCMstHeader = new HrmRecTestCentreMstHdrBean(); + oTCMstHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTCMstHeader.setTestCentreCode(oRow.get("CODE").getString()); + oTCMstHeader.setTestCentreName(oRow.get("NAME").getString()); + oTCMstHeader.setAddress(oRow.get("ADDRESS").getString()); + oTCMstHeader.setPhone(oRow.get("PHONE").getString()); + oTCMstHeader.setFax(oRow.get("FAX").getString()); + oHeaderList.add(oTCMstHeader); + } + return oHeaderList; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TST_CNTR_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmRecTestCentreMstHdrBean oHrmTestCenterMasterHdrBean = (HrmRecTestCentreMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHrmTestCenterMasterHdrBean.getTestCentreCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmTestCenterMasterHdrBean.getTestCentreName())); + oParameters.add(new DBObject(4, 1, 12, oHrmTestCenterMasterHdrBean.getAddress())); + oParameters.add(new DBObject(5, 1, 12, oHrmTestCenterMasterHdrBean.getPhone())); + oParameters.add(new DBObject(6, 1, 12, oHrmTestCenterMasterHdrBean.getFax())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, null)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTCMST.proc_UpsertHrTCMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmTestCenterMasterHdrBean.getTestCentreCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmTestCenterMasterHdrBean.getTestCentreName())); + oParameters.add(new DBObject(4, 1, 12, oHrmTestCenterMasterHdrBean.getAddress())); + oParameters.add(new DBObject(5, 1, 12, oHrmTestCenterMasterHdrBean.getPhone())); + oParameters.add(new DBObject(6, 1, 12, oHrmTestCenterMasterHdrBean.getFax())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, oHrmTestCenterMasterHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTCMST.proc_UpsertHrTCMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + System.out.println("No Detail"); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update Nischt!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl Nischt!"; + } + + public LovVO getHrmTCMstCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuery = "SELECT htcm.ID, htcm.CODE, htcm.NAME from HRM_TST_CNTR_MST htcm where 1 = 1"; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and htcm.CODE LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%' ")); + if (oLovQueryVO.getSearchField2() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and htcm.NAME LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList oList1 = oBean1.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("hrm.HrmTestCentreMaster.testCentreCode"); + oHeaderList.add("hrm.HrmTestCentreMaster.testCentreName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt1 = oList1.iterator(); + while (oIt1.hasNext()) { + if (count == 0) + oList1 = new ArrayList(); + count++; + oRow = oIt1.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList1.add(oLOVBean); + } + oLovVO.setDetailList(oList1); + return oLovVO; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + HrmRecTestCentreMstHdrBean oHrmRecTestCentreMstHdrBean = (HrmRecTestCentreMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmRecTestCentreMstHdrBean)oBaseHeaderBean); + } + + private void checkUniqueHeader(HrmRecTestCentreMstHdrBean oHrmRecTestCentreMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select id as ID from hrm_tst_cntr_mst where CODE='").concat(String.valueOf(oHrmRecTestCentreMstHdrBean.getTestCentreCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmRecTestCentreMstHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("hrm.advt.header.uniqueConstraintViolated", "M"); + } + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmRecTestCentreMstHdrBean)oBaseHeaderBean); + } + + private void checkMandatoryHeader(HrmRecTestCentreMstHdrBean oHrmRecTestCentreMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmRecTestCentreMstHdrBean.getTestCentreCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestCentreMaster.testCentreCode"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oHrmRecTestCentreMstHdrBean.getAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTestCentreMaster.address"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmReportBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmReportBO.java new file mode 100644 index 0000000..1692d4d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmReportBO.java @@ -0,0 +1,145 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; + +public class HrmReportBO extends BaseBO { + public void saveDetailImpl(String sHeaderPrimaryKey, BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void initializeBOImpl(String sScreenName) { + String sDetailTable = null; + if (sScreenName.equals("EnqPayImgScreen")) + sDetailTable = "aaa_myadd"; + initializeBO("aaa_myself", sDetailTable); + } + + public LovVO getYYMMReportLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select distinct pim.yyyymm from pay_image pim where 1=1"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and pim.yyyymm LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%' ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" ORDER BY pim.yyyymm")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("yyyymm"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("yyyymm").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getDesigIdReportLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "SELECT DISTINCT CDTL1.CODE AS DESIG_CODE, CDTL1.NAME AS DESIG_NAME"; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" FROM HRM_EMP_CLASS_MAP ECL1,HRM_CLASS_DTL CDTL1,HRM_CLASS_MST CMST1 WHERE 1=1")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" AND ECL1.CLS_DT_ID = CDTL1.ID AND CDTL1.CLS_MST_ID = CMST1.ID AND CMST1.CODE = '10'")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and CDTL1.CODE LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%' ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" ORDER BY CDTL1.CODE")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("CODE"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("CODE").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getITForecastEmp(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "SELECT distinct it.emp_num FROM npcil.pay_it_forecast it where 1=1"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and it.emp_num LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%' ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" ORDER BY it.emp_num")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("emp_num"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("emp_num").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void initializeBOImpl() {} + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + System.out.println("Save Ille!"); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + return new String(); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmRetireForecastBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRetireForecastBO.java new file mode 100644 index 0000000..3ee8ef6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmRetireForecastBO.java @@ -0,0 +1,147 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmRetireForecastHdrBean; +import wenrgise.hrms.vo.HrmRetireForecastQVO; + +public class HrmRetireForecastBO extends HrmBaseBO { + public HrmRetireForecastBO() {} + + public HrmRetireForecastBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo procGetRetireDataCount(HrmRetireForecastQVO oHrmRetireForecastQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, -5)); + arylstParam.add(new DBObject(2, 2, 93)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRTMTFORECASTREP.procGetRetireDataCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList procGetRetireDataInfo(HrmRetireForecastQVO oHrmRetireForecastQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList oList = null; + Iterator oIt = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator itrBean = null; + ArrayList oEmpRetireDetail = new ArrayList(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMRTMTFORECASTREP.procGetRetireDataInfo(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = oList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + count++; + oRow = oIt.next(); + HrmRetireForecastHdrBean oHrmRetireForecastHdrBean = new HrmRetireForecastHdrBean(); + oHrmRetireForecastHdrBean.setFromDate(oRow.get("fromDate").getString()); + oHrmRetireForecastHdrBean.setToDate(oRow.get("toDate").getString()); + oHrmRetireForecastHdrBean.setFlag1("1"); + oEmpRetireDetail.add(oHrmRetireForecastHdrBean); + } + return oEmpRetireDetail; + } + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void initializeBOImpl() {} + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + reportError(arylstErrorList); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HrmRetireForecastHdrBean oHrmRetireForecastHdrBean = (HrmRetireForecastHdrBean)oBaseHeaderBean; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmRetireForecastHdrBean.getFromDate())); + arylstParam.add(new DBObject(2, 1, 12, oHrmRetireForecastHdrBean.getToDate())); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + oBean.callProc(arylstParam, "HRMRTMTFORECASTREP.proc_insertdata(?,?,?,?,?)"); + return oHrmRetireForecastHdrBean.getFromDate(); + } + + public String InsertData(BaseHeaderBean oBaseHeaderBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + HrmRetireForecastHdrBean oHrmRetireForecastHdrBean = (HrmRetireForecastHdrBean)oBaseHeaderBean; + checkDates(oHrmRetireForecastHdrBean); + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRetireForecastHdrBean.getFromDate()))); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmRetireForecastHdrBean.getToDate()))); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + oBean.callProc(arylstParam, "HRMRTMTFORECASTREP.insertdata(?,?,?,?,?)"); + return oHrmRetireForecastHdrBean.getFromDate(); + } + + public void checkDates(HrmRetireForecastHdrBean oHrmRetireForecastHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + if (!EnrgiseUtil.checkString(oHrmRetireForecastHdrBean.getFromDate()) || !EnrgiseUtil.checkString(oHrmRetireForecastHdrBean.getToDate())) { + ArrayList oParams = new ArrayList(); + throw new EnrgiseApplicationException("hrm.HrmRetFrcst.DateException", "E"); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepApplnBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepApplnBO.java new file mode 100644 index 0000000..33a02f3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepApplnBO.java @@ -0,0 +1,798 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmSepApplnDtlBean; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.vo.HrmSepApplnQVO; + +public class HrmSepApplnBO extends HrmBaseBO { + public HrmSepApplnBO() {} + + public HrmSepApplnBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmSepApplnHdrMetaInfo(HrmSepApplnQVO oHrmSepApplnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmSepApplnQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 1, 12, oHrmSepApplnQVO.getApplicationNo())); + arylstParam.add(new DBObject(3, 1, 12, oHrmSepApplnQVO.getEmpId())); + arylstParam.add(new DBObject(4, 2, -5)); + arylstParam.add(new DBObject(5, 2, 93)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_HrSepApplnHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepApplnHeaderInfo(HrmSepApplnQVO oHrmSepApplnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmSepApplnQVO == null) + oHrmSepApplnQVO = new HrmSepApplnQVO(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, oHrmSepApplnQVO.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(4, 1, 12, oHrmSepApplnQVO.getApplicationNo())); + arylstParam.add(new DBObject(5, 1, 12, oHrmSepApplnQVO.getEmpId())); + arylstParam.add(new DBObject(6, 2, -10)); + arylstParam.add(new DBObject(7, 2, 12)); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_HrSepApplnHdr(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmSepApplnHdrBean oSepAppln = new HrmSepApplnHdrBean(); + oSepAppln.setHeaderPrimaryKey(oRow.get("ID").getString()); + oSepAppln.setApplicationNo(oRow.get("APPLICATION_NO").getString()); + oSepAppln.setDateApplied(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oSepAppln.setInitiatedBy(oRow.get("INITIATED_BY").getString()); + oSepAppln.setEmpId(oRow.get("E_PER_DTL_ID").getString()); + oSepAppln.setEmployeeNo(oRow.get("emp_no").getString()); + oSepAppln.setFirstName(oRow.get("first_name").getString()); + oSepAppln.setMiddleName(oRow.get("middle_name").getString()); + oSepAppln.setLastName(oRow.get("last_name").getString()); + oSepAppln.setLocation(oRow.get("location").getString()); + oSepAppln.setGrade(oRow.get("grade").getString()); + oSepAppln.setDesignation(oRow.get("designation").getString()); + oSepAppln.setSepCat(oRow.get("sepCat").getString()); + if (oRow.get("IMMEDIATE_EFFECT").getString().equalsIgnoreCase("Y")) { + oSepAppln.setImEffect("on"); + } else { + oSepAppln.setImEffect("off"); + } + if (oRow.get("WITHDRAW_FLAG").getString().equalsIgnoreCase("Y")) { + oSepAppln.setWithFlag("on"); + } else { + oSepAppln.setWithFlag("off"); + } + oSepAppln.setReqSepDate(EnrgiseUtil.convertToString(oRow.get("REQUESTED_SEP_DATE").getDate())); + oSepAppln.setActSepDate(EnrgiseUtil.convertToString(oRow.get("ACTUAL_SEP_DATE").getDate())); + oSepAppln.setReason(oRow.get("REASON").getString()); + arylstHeaderList.add(oSepAppln); + } + return arylstHeaderList; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public RecordMetaInfo getHrmSepApplnDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(2, 2, -5)); + arylstParam.add(new DBObject(3, 2, 93)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_HrSepApplnDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepApplnDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstSepAppln = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_GetSepApplnDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstSepAppln = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmSepApplnDtlBean oHrmSepApplnDtlBean = new HrmSepApplnDtlBean(); + oHrmSepApplnDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmSepApplnDtlBean.setTxtEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmSepApplnDtlBean.setTxtEmpId(oRow.get("EMP_ID").getString()); + oHrmSepApplnDtlBean.setTxtSepId(oRow.get("SEP_ID").getString()); + oHrmSepApplnDtlBean.setTxtEmployeeName(oRow.get("EMPNAME").getString()); + oHrmSepApplnDtlBean.setTxtSeparationCategory(oRow.get("DESCRIPTION").getString()); + String immEffectFlag = oRow.get("IMMEDIATE_EFFECT").getString(); + if (immEffectFlag.equalsIgnoreCase("null")) { + immEffectFlag = "off"; + } else { + if (immEffectFlag.equalsIgnoreCase("Y")) + immEffectFlag = "on"; + if (immEffectFlag.equalsIgnoreCase("N")) + immEffectFlag = "off"; + } + oHrmSepApplnDtlBean.setTxtImmediateEffect(immEffectFlag); + oHrmSepApplnDtlBean.setTxtRequestedSepDate(EnrgiseUtil.convertToString(oRow.get("REQUESTED_SEP_DATE").getDate())); + oHrmSepApplnDtlBean.setTxtActualSepDate(EnrgiseUtil.convertToString(oRow.get("ACTUAL_SEP_DATE").getDate())); + oHrmSepApplnDtlBean.setTxtReason(oRow.get("REASON").getString()); + oHrmSepApplnDtlBean.setTxtRejectionRemarks(oRow.get("REJECTION_REMARK").getString()); + oHrmSepApplnDtlBean.setTxtApprovedFlag(oRow.get("APPROVED_FLAG").getString()); + String withDrawFlag = oRow.get("WITHDRAW_FLAG").getString(); + if (withDrawFlag.equalsIgnoreCase("null")) { + withDrawFlag = "off"; + } else { + if (withDrawFlag.equalsIgnoreCase("Y")) + withDrawFlag = "on"; + if (withDrawFlag.equalsIgnoreCase("N")) + withDrawFlag = "off"; + } + oHrmSepApplnDtlBean.setTxtWithdrawalFlag(withDrawFlag); + arylstSepAppln.add(oHrmSepApplnDtlBean); + } + return arylstSepAppln; + } + + public LovVO getHrmSepApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmSepApplication.applicationNo"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_GetHrmSepApplnNoLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmSepCategoryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmSepApplication.sepName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String initBy = null; + if (oLovQueryVO.getProperty("initiatedBy") != null) + initBy = oLovQueryVO.getProperty("initiatedBy"); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, initBy)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_GetHrmSepCategoryLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("DESCRIPTION").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmSepApplnHdrBean oHrmSepApplnHdrBean = (HrmSepApplnHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "i")); + arylstParam.add(new DBObject(2, 1, 12, oHrmSepApplnHdrBean.getApplicationNo())); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepApplnHdrBean.getDateApplied()))); + arylstParam.add(new DBObject(4, 1, 12, oHrmSepApplnHdrBean.getInitiatedBy())); + arylstParam.add(new DBObject(5, 1, 12, oHrmSepApplnHdrBean.getEmpId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmSepApplnHdrBean.getSepCatId())); + if (String.valueOf(oHrmSepApplnHdrBean.getImEffect()).equalsIgnoreCase("on")) { + arylstParam.add(new DBObject(7, 1, 12, "Y")); + } else { + arylstParam.add(new DBObject(7, 1, 12, "N")); + } + if (String.valueOf(oHrmSepApplnHdrBean.getWithFlag()).equalsIgnoreCase("on")) { + arylstParam.add(new DBObject(8, 1, 12, "Y")); + } else { + arylstParam.add(new DBObject(8, 1, 12, "N")); + } + arylstParam.add(new DBObject(9, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepApplnHdrBean.getReqSepDate()))); + arylstParam.add(new DBObject(10, 1, 12, oHrmSepApplnHdrBean.getReason())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(13, 1, 12, null)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_UpsertHrSepApplnHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "u")); + arylstParam.add(new DBObject(2, 1, 12, oHrmSepApplnHdrBean.getApplicationNo())); + arylstParam.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepApplnHdrBean.getDateApplied()))); + arylstParam.add(new DBObject(4, 1, 12, oHrmSepApplnHdrBean.getInitiatedBy())); + arylstParam.add(new DBObject(5, 1, 12, oHrmSepApplnHdrBean.getEmpId())); + arylstParam.add(new DBObject(6, 1, 12, oHrmSepApplnHdrBean.getSepCatId())); + if (String.valueOf(oHrmSepApplnHdrBean.getImEffect()).equalsIgnoreCase("on")) { + arylstParam.add(new DBObject(7, 1, 12, "Y")); + } else { + arylstParam.add(new DBObject(7, 1, 12, "N")); + } + if (String.valueOf(oHrmSepApplnHdrBean.getWithFlag()).equalsIgnoreCase("on")) { + arylstParam.add(new DBObject(8, 1, 12, "Y")); + } else { + arylstParam.add(new DBObject(8, 1, 12, "N")); + } + arylstParam.add(new DBObject(9, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepApplnHdrBean.getReqSepDate()))); + arylstParam.add(new DBObject(10, 1, 12, oHrmSepApplnHdrBean.getReason())); + arylstParam.add(new DBObject(11, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(13, 1, 12, null)); + arylstParam.add(new DBObject(14, 2, 12)); + arylstParam.add(new DBObject(15, 2, 12)); + arylstParam.add(new DBObject(16, 2, 12)); + arylstParam.add(new DBObject(17, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_UpsertHrSepApplnHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + arylstParam.add(new DBObject(1, 1, 12, oHrmSepApplnHdrBean.getHeaderPrimaryKey())); + arylstParam.add(new DBObject(2, 2, 12)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_DelHrSepApplnHdr(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_SEP_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmSeparationAppln")) + saveHrmSepAppln(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmSepAppln(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmSepApplnDtlBean oHrmSepApplnDtlBean = itrBean.next(); + if (oHrmSepApplnDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPAPPLN.proc_UpsertHrSepApplnDtl(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmSepApplnDtlBean.getTxtEmpId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmSepApplnDtlBean.getTxtSepId())); + String immediateEffect = String.valueOf(oHrmSepApplnDtlBean.getTxtImmediateEffect()); + if (immediateEffect.equalsIgnoreCase("on")) { + immediateEffect = "Y"; + } else { + immediateEffect = "N"; + } + arylstParam.add(new DBObject(6, 1, 12, immediateEffect)); + arylstParam.add(new DBObject(7, 1, 12, oHrmSepApplnDtlBean.getTxtRequestedSepDate())); + arylstParam.add(new DBObject(8, 1, 12, oHrmSepApplnDtlBean.getTxtActualSepDate())); + arylstParam.add(new DBObject(9, 1, 12, oHrmSepApplnDtlBean.getTxtReason())); + arylstParam.add(new DBObject(10, 1, 12, oHrmSepApplnDtlBean.getTxtRejectionRemarks())); + String withdrawFlag = String.valueOf(oHrmSepApplnDtlBean.getTxtWithdrawalFlag()); + if (withdrawFlag.equalsIgnoreCase("on")) { + withdrawFlag = "Y"; + } else { + withdrawFlag = "N"; + } + arylstParam.add(new DBObject(11, 1, 12, withdrawFlag)); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmSepApplnDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPAPPLN.proc_UpsertHrSepApplnDtl(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmSepApplnDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParam.add(new DBObject(4, 1, 12, oHrmSepApplnDtlBean.getTxtEmpId())); + arylstParam.add(new DBObject(5, 1, 12, oHrmSepApplnDtlBean.getTxtSepId())); + String immediateEffect = String.valueOf(oHrmSepApplnDtlBean.getTxtImmediateEffect()); + if (immediateEffect.equalsIgnoreCase("on")) { + immediateEffect = "Y"; + } else { + immediateEffect = "N"; + } + arylstParam.add(new DBObject(6, 1, 12, immediateEffect)); + arylstParam.add(new DBObject(7, 1, 12, oHrmSepApplnDtlBean.getTxtRequestedSepDate())); + arylstParam.add(new DBObject(8, 1, 12, oHrmSepApplnDtlBean.getTxtActualSepDate())); + arylstParam.add(new DBObject(9, 1, 12, oHrmSepApplnDtlBean.getTxtReason())); + arylstParam.add(new DBObject(10, 1, 12, oHrmSepApplnDtlBean.getTxtRejectionRemarks())); + String withdrawFlag = String.valueOf(oHrmSepApplnDtlBean.getTxtWithdrawalFlag()); + if (withdrawFlag.equalsIgnoreCase("on")) { + withdrawFlag = "Y"; + } else { + withdrawFlag = "N"; + } + arylstParam.add(new DBObject(11, 1, 12, withdrawFlag)); + arylstParam.add(new DBObject(12, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(13, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmSepApplnDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMSEPAPPLN.proc_DeleteHrSepApplnDtl(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmSepApplnDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmSepApplnHdrBean)oBaseHeaderBean, arylstErrorList); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmSeparationAppln")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmSepApplnDtlBean oHrmSepApplnDtlBean = itrBean1.next(); + if (!oHrmSepApplnDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatory(oHrmSepApplnDtlBean, iCount, arylstErrorList); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtEmployeeNo", "hrm.HrmSepApplication.employeeNo", arylstErrorList, true); + } + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatoryHeader(HrmSepApplnHdrBean oHrmSepApplnHdrBean, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getApplicationNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.applicationNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getInitiatedBy())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.initiatedBy"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getEmpId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.employeeNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getSepCatId())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.sepCat"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getDateApplied())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.dateApplied"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + } + + private void checkMandatory(HrmSepApplnDtlBean oHrmSepApplnDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmSepApplnDtlBean.getTxtEmployeeNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.employeeNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepApplnDtlBean.getTxtSeparationCategory())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.separationCategory"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepApplnDtlBean.getTxtRequestedSepDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.requestedSepDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(iCount)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(arylstErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmSepApplnHdrBean oHrmSepApplnHdrBean = (HrmSepApplnHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmSepApplnHdrBean)oBaseHeaderBean, arylstErrorList); + checkDates((HrmSepApplnHdrBean)oBaseHeaderBean, arylstErrorList); + } + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmSeparationAppln")); + reportError(arylstErrorList); + } + + private void checkDates(HrmSepApplnHdrBean oHrmSepApplnHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getReqSepDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmSepApplnHdrBean.getReqSepDate(), oHrmSepApplnHdrBean.getDateApplied()); + if (dateFlag == -1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.empSepAppl.dateConstraintViolated")); + } + } + + private void checkUniqueHeader(HrmSepApplnHdrBean oHrmSepApplnHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_EMP_SEP_HDR where APPLICATION_NO='").concat(String.valueOf(oHrmSepApplnHdrBean.getApplicationNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmSepApplnHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.applicationNo"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.sepappln.uniqueConstraintViolated", oParams, "E")); + } + } + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmSepApplnDtlBean oHrmSepApplnDtlBean = itrBean1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from HRM_EMP_SEP_DTL where E_PER_DTL_ID= ").concat(String.valueOf(oHrmSepApplnDtlBean.getTxtEmpId()))).concat(String.valueOf(" and SEP_HDR_ID="))).concat(String.valueOf(sHeaderPrimaryKey)); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmSepApplnDtlBean.getDetailId())) + throw new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated", "M"); + } + } + } + + public String approveSepAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + HrmSepApplnHdrBean oHrmSepApplnHdrBean = (HrmSepApplnHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPAPPLN.procApproveSepAppln(?)"); + Iterator itrDtlBean = arylstDetailBeanArray.iterator(); + int rowCount = 0; + int n = arylstDetailBeanArray.size(); + while (itrDtlBean.hasNext()) { + HrmSepApplnDtlBean oDtlBean = itrDtlBean.next(); + System.out.println(oDtlBean.getDetailId()); + if (oDtlBean.getStatus().equalsIgnoreCase("A")) + arylstParameters.add(new DBObject(1, 1, 12, oDtlBean.getDetailId())); + if (!arylstParameters.isEmpty()) + oBean.addToBatch(arylstParameters); + if (rowCount < n) + rowCount++; + } + oBean.executeBatch(); + return sHeaderPrimaryKey; + } + + public String rejectSepAppln(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + HrmSepApplnHdrBean oHrmSepApplnHdrBean = (HrmSepApplnHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPAPPLN.procRejectSepAppln(?)"); + Iterator itrDtlBean = arylstDetailBeanArray.iterator(); + int rowCount = 1; + int n = arylstDetailBeanArray.size(); + while (itrDtlBean.hasNext()) { + HrmSepApplnDtlBean oDtlBean = itrDtlBean.next(); + System.out.println(oDtlBean.getDetailId()); + if (oDtlBean.getStatus().equalsIgnoreCase("R")) + arylstParameters.add(new DBObject(1, 1, 12, oDtlBean.getDetailId())); + oBean.addToBatch(arylstParameters); + if (rowCount < n) + rowCount++; + } + oBean.executeBatch(); + return sHeaderPrimaryKey; + } + + public LovVO getSepEmpNoQLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("id"); + oHeaderList.add("hrm.HrmSepApplication.employeeNo"); + oHeaderList.add("hrm.HrmSepApplication.firstName"); + oHeaderList.add("hrm.HrmSepApplication.middleName"); + oHeaderList.add("hrm.HrmSepApplication.lastName"); + oHeaderList.add("hrm.HrmSepApplication.grade"); + oHeaderList.add("hrm.HrmSepApplication.designation"); + oHeaderList.add("hrm.HrmSepApplication.location"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_GetHrmSepEmpNoQLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("first_name").getString()); + oLOVBean.setDetailField4(oRow.get("middle_name").getString()); + oLOVBean.setDetailField5(oRow.get("last_name").getString()); + oLOVBean.setDetailField6(oRow.get("grade").getString()); + oLOVBean.setDetailField7(oRow.get("designation").getString()); + oLOVBean.setDetailField8(oRow.get("location").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getSepEmpNoNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("id"); + oHeaderList.add("hrm.HrmSepApplication.employeeNo"); + oHeaderList.add("hrm.HrmSepApplication.firstName"); + oHeaderList.add("hrm.HrmSepApplication.middleName"); + oHeaderList.add("hrm.HrmSepApplication.lastName"); + oHeaderList.add("hrm.HrmSepApplication.grade"); + oHeaderList.add("hrm.HrmSepApplication.designation"); + oHeaderList.add("hrm.HrmSepApplication.location"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPAPPLN.proc_GetHrmSepEmpNoLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("emp_no").getString()); + oLOVBean.setDetailField3(oRow.get("first_name").getString()); + oLOVBean.setDetailField4(oRow.get("middle_name").getString()); + oLOVBean.setDetailField5(oRow.get("last_name").getString()); + oLOVBean.setDetailField6(oRow.get("grade").getString()); + oLOVBean.setDetailField7(oRow.get("designation").getString()); + oLOVBean.setDetailField8(oRow.get("location").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepCatMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepCatMstBO.java new file mode 100644 index 0000000..4b3f257 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepCatMstBO.java @@ -0,0 +1,282 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.vo.HrmSepCatMstQVO; + +public class HrmSepCatMstBO extends HrmBaseBO { + public HrmSepCatMstBO() {} + + public HrmSepCatMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmSepCatHdrMetaInfo(HrmSepCatMstQVO oHrmSepCatMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmSepCatMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmSepCatMstQVO.getSeparationCode())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPCATEGORY.proc_HrSepCatCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepCatHeaderInfo(HrmSepCatMstQVO oHrmSepCatMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmSepCatMstQVO == null) + oHrmSepCatMstQVO = new HrmSepCatMstQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmSepCatMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmSepCatMstQVO.getSeparationCode())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPCATEGORY.proc_GetHrSepCatInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmSepCatMstHdrBean oHrmSepCatHdrBean = new HrmSepCatMstHdrBean(); + oHrmSepCatHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmSepCatHdrBean.setSeparationCode(oRow.get("SEPARATION_CODE").getString()); + oHrmSepCatHdrBean.setSeparationType(oRow.get("SEPARATION_TYPE").getString()); + oHrmSepCatHdrBean.setNoticePeriod(oRow.get("NOTICE_PERIOD").getString()); + oHrmSepCatHdrBean.setRemarks(oRow.get("REMARKS").getString()); + oHrmSepCatHdrBean.setDescription(oRow.get("DESCRIPTION").getString()); + oHeaderList.add(oHrmSepCatHdrBean); + } + return oHeaderList; + } + + public LovVO getHrmSeparationCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Separation Id"); + arylstHeaderNames.add("hrm.HrmSepCatMstrForm.sepCode"); + arylstHeaderNames.add("hrm.HrmSepCatMstrForm.sepDesc"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPCATEGORY.proc_GetSeaparationCodeLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("SEPARATION_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_SEP_CAT_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + System.out.println("Save "); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update "); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmSepCatMstHdrBean oHrmSepCatMstHdrBean = (HrmSepCatMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, oHrmSepCatMstHdrBean.getSeparationCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmSepCatMstHdrBean.getDescription())); + oParameters.add(new DBObject(4, 1, 12, oHrmSepCatMstHdrBean.getNoticePeriod())); + oParameters.add(new DBObject(5, 1, 12, oHrmSepCatMstHdrBean.getRemarks())); + oParameters.add(new DBObject(6, 1, 12, oHrmSepCatMstHdrBean.getSeparationType())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, null)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPCATEGORY.proc_UpsertHrSepCatHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmSepCatMstHdrBean.getSeparationCode())); + oParameters.add(new DBObject(3, 1, 12, oHrmSepCatMstHdrBean.getDescription())); + oParameters.add(new DBObject(4, 1, 12, oHrmSepCatMstHdrBean.getNoticePeriod())); + oParameters.add(new DBObject(5, 1, 12, oHrmSepCatMstHdrBean.getRemarks())); + oParameters.add(new DBObject(6, 1, 12, oHrmSepCatMstHdrBean.getSeparationType())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, oHrmSepCatMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPCATEGORY.proc_UpsertHrSepCatHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oHrmSepCatMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPCATEGORY.proc_DeleteHrSepCatHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmSepCatMstHdrBean)oBaseHeaderBean); + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmSepCatMstHdrBean oHrmSepCatMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmSepCatMstHdrBean.getSeparationCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSeparationCategoryMaster.separationCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepCatMstHdrBean.getSeparationType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSeparationCategoryMaster.separationType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepCatMstHdrBean oHrmSepCatMstHdrBean = (HrmSepCatMstHdrBean)oBaseHeaderBean; + ArrayList oList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmSepCatMstHdrBean)oBaseHeaderBean); + } else if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sRefId = oCommonBO.getRefList("HRM_EMP_PERS", "TYPE_OF_SEPERATION ", oHrmSepCatMstHdrBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId)) + if (oList.isEmpty()) + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + } + reportError(oList); + } + + private void checkUniqueHeader(HrmSepCatMstHdrBean oHrmSepCatMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_SEP_CAT_MST where SEPARATION_CODE='").concat(String.valueOf(oHrmSepCatMstHdrBean.getSeparationCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + ArrayList oList = new ArrayList(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmSepCatMstHdrBean.getHeaderPrimaryKey())) + oList.add(new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated")); + } + reportError(oList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrEmpBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrEmpBO.java new file mode 100644 index 0000000..aefc8ec --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrEmpBO.java @@ -0,0 +1,526 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmSepClrEmpDtlBean; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; + +public class HrmSepClrEmpBO extends HrmBaseBO { + public HrmSepClrEmpBO() {} + + public HrmSepClrEmpBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmSepClrEmpHdrMetaInfo(HrmSepClrEmpQVO oHrmSepClrEmpQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmSepClrEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmSepClrEmpQVO.getEmpNoId())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetSepClrEmpHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepClrEmpHeaderInfo(HrmSepClrEmpQVO oHrmSepClrEmpQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpHdrBean oHeaderBean = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + ArrayList arylstHeaderList = new ArrayList(); + String sEmpNo = oHrmSepClrEmpQVO.getEmpNo(); + if (oHrmSepClrEmpQVO == null) + oHrmSepClrEmpQVO = new HrmSepClrEmpQVO(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmSepClrEmpQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmSepClrEmpQVO.getEmpNoId())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetSepClrEmpHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + oHeaderBean = new HrmSepClrEmpHdrBean(); + oHeaderBean.setTmplDescId(oRow.get("ID").getString()); + oHeaderBean.setTmplDesc(oRow.get("tmpl_description").getString()); + oHeaderBean.setEmpNoId(oRow.get("emp_id").getString()); + oHeaderBean.setEmpNo(oRow.get("emp_no").getString()); + oHeaderBean.setHeaderPrimaryKey(oRow.get("emp_id").getString()); + arylstHeaderList.add(oHeaderBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmSepClrEmpDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + if (lPrimaryKey == null) + return null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetSepClrEmpDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepClrEmpDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstDetailBean = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetSepClrEmpDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstDetailBean = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmSepClrEmpDtlBean oDetailBean = new HrmSepClrEmpDtlBean(); + oDetailBean.setDetailId(oRow.get("ID").getString()); + oDetailBean.setTxtClrDesc(oRow.get("clr_desc").getString()); + String sCheckFlag = oRow.get("clr_flag").getString().equals("Y") ? "on" : "off"; + oDetailBean.setTxtCheckFlag(sCheckFlag); + oDetailBean.setTxtComment(oRow.get("reason").getString()); + arylstDetailBean.add(oDetailBean); + } + return arylstDetailBean; + } + + public LovVO getTmplLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmSepClrEmp.txtClrDesc"); + arylstHeaderList.add("hrm.HrmSepClrEmp.obsoleteFlag"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + String sEmpId = oLovQueryVO.getProperty("empId"); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetTmplDescLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TMPL_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("OBSOLETE_FLAG").getString()); + oLOVBean.setDetailField4(oRow.get("ELIG_SQL").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getEmpNoLOVQ(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(" "); + arylstHeaderList.add("hrm.HrmSepClrEmp.empNo"); + arylstHeaderList.add("hrm.HrmSepClrEmp.empName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetEmpNoLOVQ(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMP_ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMP_NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getEmpNoLOVN(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(" "); + arylstHeaderList.add("hrm.HrmSepClrEmp.empNo"); + arylstHeaderList.add("hrm.HrmSepClrEmp.empName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetEmpNoLOVN(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMP_ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMP_NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_SEP_TMPL_HDR"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + HrmSepClrEmpHdrBean oHrmSepClrEmpHdrBean = (HrmSepClrEmpHdrBean)oBaseHeaderBean; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + ArrayList arylstClrList = getClrList(oHrmSepClrEmpHdrBean.getTmplDescId()); + oBean.createBatch("HRMSEPCLREMP.proc_UpsertSepClrEmpHdr(?,?,?,?)"); + Iterator itrBean = arylstClrList.iterator(); + while (itrBean.hasNext()) { + arylstParameters.add(new DBObject(1, 1, 12, oHrmSepClrEmpHdrBean.getEmpNoId())); + String sClrId = itrBean.next(); + arylstParameters.add(new DBObject(2, 1, 12, sClrId)); + arylstParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + } + oBean.executeBatch(); + HrmSepClrEmpHdrBean oHeaderBean = new HrmSepClrEmpHdrBean(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(oHrmSepClrEmpHdrBean); + return oHrmSepClrEmpHdrBean.getEmpNoId(); + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmSepClrEmp")) + saveHrmSepClrEmpDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmSepClrEmpDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DBUtilitiesBean oBean1 = null; + oBean.createBatch("HRMSEPCLREMP.proc_UpsertSepClrEmpDtl(?,?,?)"); + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmSepClrEmpDtlBean oHrmSepClrEmpDtlBean = itrBean.next(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmSepClrEmpDtlBean.getDetailId())); + String sCheckFlag = oHrmSepClrEmpDtlBean.getTxtCheckFlag().equals("on") ? "Y" : "N"; + arylstParameters.add(new DBObject(2, 1, 12, sCheckFlag)); + arylstParameters.add(new DBObject(3, 1, 12, oHrmSepClrEmpDtlBean.getTxtComment())); + oBean.addToBatch(arylstParameters); + } + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return null; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmSepClrEmpHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmSepClrEmp")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmSepClrEmpDtlBean oHrmSepClrEmpDtlBean = itrBean1.next(); + if (!oHrmSepClrEmpDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmSepClrEmpDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmSepClrEmpDtlBean oHrmSepClrEmpDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException {} + + private void checkMandatoryHeader(HrmSepClrEmpHdrBean oHrmSepClrEmpHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList arylstParam = null; + ArrayList arylstErrorList = null; + if (oHrmSepClrEmpHdrBean.getEmpNoId() == null) { + arylstParam = new ArrayList(); + arylstParam.add(new String("hrm.HrmSepClrEmp.empNo")); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", arylstParam)); + } + if (arylstErrorList != null) + reportError(arylstErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmSepClrEmpHdrBean oHrmSepClrEmpHdrBean = (HrmSepClrEmpHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((HrmSepClrEmpHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenMode.equalsIgnoreCase("N")) + if (sScreenName.equalsIgnoreCase("HrmSepClrEmp")) + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtClrDescId", "hrm.HrmSepClrEmp.txtClrDesc", arylstErrorList, true); + reportError(arylstErrorList); + } + + public void checkRefferenceKey(String sSkillHeaderId) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkUniqueHeader(HrmSepClrEmpHdrBean oHrmSepClrEmpHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private ArrayList getClrList(String sTmplId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters.add(new DBObject(1, 1, 12, sTmplId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetClrId(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0); + Iterator itrClrList = arylstList.iterator(); + ArrayList arylstClrList = new ArrayList(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + int count = 0; + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + arylstClrList.add(oRow.get("CLR_ID").getString()); + } + return arylstClrList; + } + + private ArrayList getFilteredLeaveList(ArrayList arylstList, String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstNewList = new ArrayList(); + LOVBean oNewLovBean = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Iterator itrList = arylstList.iterator(); + while (itrList.hasNext()) { + LOVBean oLovBean = itrList.next(); + String sEligSql = oLovBean.getDetailField4(); + StringBuffer sbEligSql = new StringBuffer(sEligSql); + if (sbEligSql.lastIndexOf("?") != -1) { + sbEligSql.replace(sbEligSql.lastIndexOf("?"), sbEligSql.lastIndexOf("?") + 1, sEmpId); + sEligSql = sbEligSql.toString(); + ArrayList arylstOutArray = oBean.executeQuery(sEligSql); + if (arylstOutArray.size() == 0) + continue; + oNewLovBean = new LOVBean(); + oNewLovBean.setDetailField1(oLovBean.getDetailField1()); + oNewLovBean.setDetailField2(oLovBean.getDetailField2()); + oNewLovBean.setDetailField3(oLovBean.getDetailField3()); + arylstNewList.add(oNewLovBean); + } + } + return arylstNewList; + } + + public LovVO getHrmSepEligLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add(" "); + arylstHeaderList.add("hrm.HrmSepClrEmp.tmplDesc"); + arylstHeaderList.add("hrm.HrmSepClrEmp.obsoleteFlag"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLREMP.proc_GetHrmSepEligLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("tmpl_description").getString()); + oLOVBean.setDetailField3(oRow.get("obsolete_flag").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void updateSeparationEligRule(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sSql)); + arylstParam.add(new DBObject(2, 1, 12, sId)); + arylstParam.add(new DBObject(3, 1, 12, sUserId)); + arylstParam.add(new DBObject(4, 1, 12, sUserSiteId)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPCLREMP.proc_UpdateSepTmplHdr(?,?,?,?,?,?,?)"); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrLstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrLstBO.java new file mode 100644 index 0000000..648b754 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrLstBO.java @@ -0,0 +1,226 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmSepClrLstDtlBean; + +public class HrmSepClrLstBO extends HrmBaseBO { + public HrmSepClrLstBO() {} + + public HrmSepClrLstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmSepClrLstDtlMetaInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 2, -5)); + arylstParam.add(new DBObject(2, 2, 93)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPCLRLIST.proc_HrmSepClrLstDtlCount(?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepClrLstDetailInfo(long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmSepClrLstDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParam.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParam.add(new DBObject(3, 2, -10)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPCLRLIST.proc_GetSepClrLstDtl(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmSepClrLstDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmSepClrLstDtlBean oHrmSepClrLstDtlBean = new HrmSepClrLstDtlBean(); + oHrmSepClrLstDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmSepClrLstDtlBean.setDescription(oRow.get("CLRNC_DESCRIPTION").getString()); + oHrmSepClrLstDtlBean.setType(oRow.get("EXT_INT_FLAG").getString()); + arylstHrmSepClrLstDetail.add(oHrmSepClrLstDtlBean); + } + return arylstHrmSepClrLstDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_PERS"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmSepClrLst")) + saveHrmSepClrLstDetail(arylstDetailBeanArray); + } + + private void saveHrmSepClrLstDetail(ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmSepClrLstDtlBean oHrmSepClrLstDtlBean = itrBean.next(); + if (oHrmSepClrLstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPCLRLIST.proc_UpsertHrmSepClrLstDetail(?,?,?,?,?,?)"); + bInsert = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "I")); + arylstParam.add(new DBObject(2, 1, 12, null)); + arylstParam.add(new DBObject(3, 1, 12, oHrmSepClrLstDtlBean.getDescription())); + arylstParam.add(new DBObject(4, 1, 12, oHrmSepClrLstDtlBean.getType())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmSepClrLstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPCLRLIST.proc_UpsertHrmSepClrLstDetail(?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, "U")); + arylstParam.add(new DBObject(2, 1, 12, oHrmSepClrLstDtlBean.getDetailId())); + arylstParam.add(new DBObject(3, 1, 12, oHrmSepClrLstDtlBean.getDescription())); + arylstParam.add(new DBObject(4, 1, 12, oHrmSepClrLstDtlBean.getType())); + arylstParam.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParam); + continue; + } + if (oHrmSepClrLstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMSEPCLRLIST.proc_DeleteHrmSepClrLstDetail(?)"); + bDelete = true; + } + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oHrmSepClrLstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParam); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmSepClrLst")) { + Iterator itrBean1 = oDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmSepClrLstDtlBean oHrmSepClrLstDtlBean = itrBean1.next(); + if (!oHrmSepClrLstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatory(oHrmSepClrLstDtlBean, iCount, oErrorList); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "description", "hrm.HrmSepClrLst.description", oErrorList, true); + } + iCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatory(HrmSepClrLstDtlBean oHrmSepClrLstDtlBean, int iCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmSepClrLstDtlBean.getDescription())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepClrLst.description"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepClrLstDtlBean.getType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepClrLst.externalInternalFlag"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmSepClrLst")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmSepClrLstDtlBean oHrmSepClrLstDtlBean = oIt1.next(); + if (!oHrmSepClrLstDtlBean.getStatus().equalsIgnoreCase("D")) + continue; + if (oHrmSepClrLstDtlBean.getStatus().equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sQuery = String.valueOf(String.valueOf("Select i.ID as ID from hrm_sep_tmpl_dtl i,hrm_sep_clrnc_list m where m.id=i.CLRNC_LIST_ID and m.CLRNC_DESCRIPTION='").concat(String.valueOf(oHrmSepClrLstDtlBean.getDescription()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList1 = oBean.executeQuery(sQuery); + if (oList1.size() > 0) + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + } + } + } + reportError(oList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrTmplMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrTmplMstBO.java new file mode 100644 index 0000000..c18cf5a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepClrTmplMstBO.java @@ -0,0 +1,436 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmSepClrTmplMstDtlBean; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; + +public class HrmSepClrTmplMstBO extends HrmBaseBO { + public HrmSepClrTmplMstBO() {} + + public HrmSepClrTmplMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmSepClrTmplMstHdrMetaInfo(HrmSepClrTmplMstQVO oHrmSepClrTmplMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmSepClrTmplMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmSepClrTmplMstQVO.getTmplDescId())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_GetSepClrTmplMstHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepClrTmplMstHeaderInfo(HrmSepClrTmplMstQVO oHrmSepClrTmplMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmSepClrTmplMstQVO == null) + oHrmSepClrTmplMstQVO = new HrmSepClrTmplMstQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmSepClrTmplMstQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmSepClrTmplMstQVO.getTmplDescId())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_GetSepClrTmplMstHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmSepClrTmplMstHdrBean oHeaderBean = new HrmSepClrTmplMstHdrBean(); + oHeaderBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHeaderBean.setTmplDescId(oRow.get("ID").getString()); + oHeaderBean.setTmplDesc(oRow.get("tmpl_description").getString()); + String sObsFlag = "on"; + if (oRow.get("obsolete_flag").getString().equals("N")) + sObsFlag = "off"; + oHeaderBean.setObsoleteFlag(sObsFlag); + arylstHeaderList.add(oHeaderBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmSepClrTmplMstDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_GetSepClrTmplMstDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepClrTmplMstDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstDetailBean = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_GetSepClrTmplMstDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstDetailBean = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmSepClrTmplMstDtlBean oDetailBean = new HrmSepClrTmplMstDtlBean(); + oDetailBean.setDetailId(oRow.get("ID").getString()); + oDetailBean.setTxtClrDescId(oRow.get("clr_id").getString()); + oDetailBean.setTxtClrDesc(oRow.get("clrnc_description").getString()); + arylstDetailBean.add(oDetailBean); + } + return arylstDetailBean; + } + + public LovVO getHrmSepTmplLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmSepClrTmplMst.txtClrDesc"); + arylstHeaderList.add("hrm.HrmSepClrTmplMst.obsoleteFlag"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_GetTmplDescLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("TMPL_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("OBSOLETE_FLAG").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmSepClrLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Code ID"); + arylstHeaderList.add("hrm.HrmSepClrTmplMst.txtClrDesc"); + arylstHeaderList.add("hrm.HrmSepClrTmplMst.extIntFlag"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_GetClrDescLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CLRNC_DESCRIPTION").getString()); + oLOVBean.setDetailField3(oRow.get("EXT_INT_FLAG").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_SEP_TMPL_HDR"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmSepClrTmplMstHdrBean oHrmSepClrTmplMstHdrBean = (HrmSepClrTmplMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmSepClrTmplMstHdrBean.getTmplDesc())); + String sObsFlag = "N"; + if (oHrmSepClrTmplMstHdrBean.getObsoleteFlag().equals("on")) + sObsFlag = "Y"; + arylstParameters.add(new DBObject(3, 1, 12, sObsFlag)); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, null)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_UpsertSepClrTmplMstHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmSepClrTmplMstHdrBean.getTmplDesc())); + String sObsFlag = "N"; + if (oHrmSepClrTmplMstHdrBean.getObsoleteFlag().equals("on")) + sObsFlag = "Y"; + arylstParameters.add(new DBObject(3, 1, 12, sObsFlag)); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmSepClrTmplMstHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPCLRTMPLMST.proc_UpsertSepClrTmplMstHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmSepClrTmplMst")) + saveHrmSepClrTmplMstDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmSepClrTmplMstDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmSepClrTmplMstDtlBean oHrmSepClrTmplMstDtlBean = itrBean.next(); + System.out.println(oHrmSepClrTmplMstDtlBean.getStatus()); + if (oHrmSepClrTmplMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPCLRTMPLMST.proc_UpsertSepClrTmplMstDtl(?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "N")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmSepClrTmplMstDtlBean.getTxtClrDescId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmSepClrTmplMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPCLRTMPLMST.proc_UpsertSepClrTmplMstDtl(?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmSepClrTmplMstDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmSepClrTmplMstDtlBean.getTxtClrDescId())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmSepClrTmplMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMSEPCLRTMPLMST.proc_DeleteSepClrTmplMstDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmSepClrTmplMstDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return null; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmSepClrTmplMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmSepClrTmplMst")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmSepClrTmplMstDtlBean oHrmSepClrTmplMstDtlBean = itrBean1.next(); + if (!oHrmSepClrTmplMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmSepClrTmplMstDtlBean, iCount, arylstErrorList); + iCount++; + } + } + reportError(arylstErrorList); + } + + private void checkMandatory(HrmSepClrTmplMstDtlBean oHrmSepClrTmplMstDtlBean, int iCount, ArrayList arylstErrorList) throws EnrgiseSystemException, EnrgiseApplicationException {} + + private void checkMandatoryHeader(HrmSepClrTmplMstHdrBean oHrmSepClrTmplMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmSepClrTmplMstHdrBean oHrmSepClrTmplMstHdrBean = (HrmSepClrTmplMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (sScreenMode.equalsIgnoreCase("N")) + checkUniqueHeader((HrmSepClrTmplMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmSepClrTmplMst")) + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtClrDescId", "hrm.HrmSepClrTmplMst.txtClrDesc", arylstErrorList, true); + reportError(arylstErrorList); + } + + public void checkRefferenceKey(String sSkillHeaderId) throws EnrgiseApplicationException, EnrgiseSystemException {} + + private void checkUniqueHeader(HrmSepClrTmplMstHdrBean oHrmSepClrTmplMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList1 = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + String sQuery = String.valueOf(String.valueOf(" Select TMPL_DESCRIPTION from HRM_SEP_TMPL_HDR where upper(TMPL_DESCRIPTION)='").concat(String.valueOf(oHrmSepClrTmplMstHdrBean.getTmplDesc().toUpperCase()))).concat(String.valueOf("'")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (oRow.get("TMPL_DESCRIPTION").getString().equalsIgnoreCase(oHrmSepClrTmplMstHdrBean.getTmplDesc())) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList1.add(new EnrgiseMessageKeyException("wenrgise.common.uniqueConstraintViolated", arylstParam)); + } + } + reportError(arylstList1); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepOrderBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepOrderBO.java new file mode 100644 index 0000000..4df8cf1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmSepOrderBO.java @@ -0,0 +1,802 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmAprslEmpDtlsBean; +import wenrgise.hrms.bean.HrmSepOrderDtlBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.vo.HrmSepOrderQVO; + +public class HrmSepOrderBO extends HrmBaseBO { + public HrmSepOrderBO() {} + + public HrmSepOrderBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public LovVO getHrmSepOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Id"); + arylstHeaderNames.add("hrm.HrmSepOrder.orderNo"); + arylstHeaderNames.add("hrm.HrmSepOrder.orderDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPORDER.procHrmSepOrderNoLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("ORDER_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("ORDER_DATE").getDate())); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmSepOrderApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ApplicationId"); + arylstHeaderNames.add("hrm.HrmSepOrder.applnNo"); + arylstHeaderNames.add("hrm.HrmSepOrder.applnDate"); + arylstHeaderNames.add("hrm.HrmSepApplication.initiatedBy"); + arylstHeaderNames.add("empId"); + arylstHeaderNames.add("hrm.HrmSepApplication.employeeNo"); + arylstHeaderNames.add("hrm.HrmSepOrder.employeeName"); + arylstHeaderNames.add("sepCatId"); + arylstHeaderNames.add("hrm.HrmSepOrder.separationCategory"); + arylstHeaderNames.add("hrm.HrmSepOrder.requestedSepDate"); + arylstHeaderNames.add("hrm.HrmSepApplication.reason"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPORDER.procHrmSepOrderApplnNoLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("Appln_Id").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oLOVBean.setDetailField4(oRow.get("INITIATED_BY").getString()); + oLOVBean.setDetailField5(oRow.get("E_PER_DTL_ID").getString()); + oLOVBean.setDetailField6(oRow.get("emp_no").getString()); + oLOVBean.setDetailField7(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField8(oRow.get("sep_cat_id").getString()); + oLOVBean.setDetailField9(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField10(EnrgiseUtil.convertToString(oRow.get("REQUESTED_SEP_DATE").getDate())); + oLOVBean.setDetailField11(oRow.get("REASON").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmSepOrderApplnNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("ApplicationId"); + arylstHeaderNames.add("hrm.HrmSepOrder.applnNo"); + arylstHeaderNames.add("hrm.HrmSepOrder.applnDate"); + arylstHeaderNames.add("hrm.HrmSepApplication.initiatedBy"); + arylstHeaderNames.add("empId"); + arylstHeaderNames.add("hrm.HrmSepApplication.employeeNo"); + arylstHeaderNames.add("hrm.HrmSepOrder.employeeName"); + arylstHeaderNames.add("sepCatId"); + arylstHeaderNames.add("hrm.HrmSepOrder.separationCategory"); + arylstHeaderNames.add("hrm.HrmSepOrder.requestedSepDate"); + arylstHeaderNames.add("hrm.HrmSepApplication.reason"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPORDER.procHrmSepOrderApplnNoLOVQdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("Appln_Id").getString()); + oLOVBean.setDetailField2(oRow.get("APPLICATION_NO").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oLOVBean.setDetailField4(oRow.get("INITIATED_BY").getString()); + oLOVBean.setDetailField5(oRow.get("E_PER_DTL_ID").getString()); + oLOVBean.setDetailField6(oRow.get("emp_no").getString()); + oLOVBean.setDetailField7(oRow.get("EMPNAME").getString()); + oLOVBean.setDetailField8(oRow.get("sep_cat_id").getString()); + oLOVBean.setDetailField9(oRow.get("DESCRIPTION").getString()); + oLOVBean.setDetailField10(EnrgiseUtil.convertToString(oRow.get("REQUESTED_SEP_DATE").getDate())); + oLOVBean.setDetailField11(oRow.get("REASON").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getSepApprNameLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select hep.id,(hep.first_name || ' ' || hep.middle_name || ' ' || hep.last_name) as empName from hrm_emp_pers hep "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where hep.id not in (select distinct hecm.E_PER_DTL_ID from hrm_emp_class_map hecm, hrm_class_dtl hcd, hrm_class_mst hcm where hecm.cls_dt_id = hcd.id and hcm.code = '20' and hcd.code in ('30', '31', '40', '41', '42')) ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hep.emp_no) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(hep.first_name || ' ' || hep.middle_name || ' ' || hep.last_name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oResultList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + ArrayList oList = new ArrayList(); + oHeaderList.add("id"); + oHeaderList.add("hrm.HrmSepApplication.employeeName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + QueryRow oRow = null; + Iterator oIt = oResultList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("empName").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public RecordMetaInfo getHrmSepOrderHdrMetaInfo(HrmSepOrderQVO oHrmSepOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmSepOrderQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmSepOrderQVO.getOrderNo())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmSepOrderQVO.getApplnId())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPORDER.procHrSepHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepOrderHdr(HrmSepOrderQVO oHrmSepOrderQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmSepOrderQVO == null) + oHrmSepOrderQVO = new HrmSepOrderQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmSepOrderQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmSepOrderQVO.getOrderNo())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmSepOrderQVO.getApplnId())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPORDER.procHrSepHdrInfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmSepOrderHdrBean oHrmSepOrder = new HrmSepOrderHdrBean(); + oHrmSepOrder.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmSepOrder.setOrderNo(oRow.get("ORDER_NO").getString()); + oHrmSepOrder.setOrderDate(EnrgiseUtil.convertToString(oRow.get("ORDER_DATE").getDate())); + oHrmSepOrder.setRemarks(oRow.get("appr_remark").getString()); + oHrmSepOrder.setActSepDate(EnrgiseUtil.convertToString(oRow.get("ACTUAL_SEP_DATE").getDate())); + oHrmSepOrder.setApplicationNo(oRow.get("APPLICATION_NO").getString()); + oHrmSepOrder.setDateApplied(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oHrmSepOrder.setInitiatedBy(oRow.get("INITIATED_BY").getString()); + oHrmSepOrder.setApplnId(oRow.get("appln_id").getString()); + oHrmSepOrder.setReason(oRow.get("REASON").getString()); + oHrmSepOrder.setReqSepDate(EnrgiseUtil.convertToString(oRow.get("REQUESTED_SEP_DATE").getDate())); + oHrmSepOrder.setEmpId(oRow.get("emp_id").getString()); + oHrmSepOrder.setEmployeeNo(oRow.get("emp_no").getString()); + oHrmSepOrder.setEmployeeName(oRow.get("emp_name").getString()); + oHrmSepOrder.setSepCatId(oRow.get("sep_cat_id").getString()); + oHrmSepOrder.setSepCat(oRow.get("sep_cat").getString()); + oHrmSepOrder.setApprovedBy(oRow.get("appr_name").getString()); + arylstHeaderList.add(oHrmSepOrder); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmSepOrderDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPORDER.procHrSepOrderDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmSepOrderDtl(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int iCount = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmSepOrderDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMSEPORDER.procHrSepOrderDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (iCount == 0) + arylstHrmSepOrderDetail = new ArrayList(); + iCount++; + oRow = oIt.next(); + HrmSepOrderDtlBean oSepOrderDetailBean = new HrmSepOrderDtlBean(); + oSepOrderDetailBean.setDetailId(oRow.get("ID").getString()); + oSepOrderDetailBean.setTxtActualSepDate(EnrgiseUtil.convertToString(oRow.get("ACTUAL_SEP_DATE").getDate())); + oSepOrderDetailBean.setTxtApplnDate(EnrgiseUtil.convertToString(oRow.get("APPLICATION_DATE").getDate())); + oSepOrderDetailBean.setTxtApplnId(oRow.get("SEP_HDR_ID").getString()); + oSepOrderDetailBean.setTxtApplnNo(oRow.get("APPLICATION_NO").getString()); + oSepOrderDetailBean.setTxtApprovedFlag(oRow.get("APPROVED_FLAG").getString()); + oSepOrderDetailBean.setTxtEmpId(oRow.get("E_PER_DTL_ID").getString()); + oSepOrderDetailBean.setTxtEmployeeName(oRow.get("EMPNAME").getString()); + oSepOrderDetailBean.setTxtReason(oRow.get("REASON").getString()); + oSepOrderDetailBean.setTxtRejectionRemarks(oRow.get("REJECTION_REMARK").getString()); + oSepOrderDetailBean.setTxtRequestedSepDate(EnrgiseUtil.convertToString(oRow.get("REQUESTED_SEP_DATE").getDate())); + oSepOrderDetailBean.setTxtSeparationCategory(oRow.get("DESCRIPTION").getString()); + oSepOrderDetailBean.setTxtSepDtlId(oRow.get("SEP_DTL_ID").getString()); + oSepOrderDetailBean.setHdnTempFlag(oRow.get("APPROVED_FLAG").getString()); + arylstHrmSepOrderDetail.add(oSepOrderDetailBean); + } + return arylstHrmSepOrderDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_SEP_ORDER_HDR"; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmSepOrderHdrBean oHrmSepOrderHdrBean = (HrmSepOrderHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "i")); + oParameters.add(new DBObject(2, 1, 12, oHrmSepOrderHdrBean.getOrderNo())); + oParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepOrderHdrBean.getOrderDate()))); + oParameters.add(new DBObject(4, 1, 12, oHrmSepOrderHdrBean.getApplnId())); + oParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepOrderHdrBean.getActSepDate()))); + oParameters.add(new DBObject(6, 1, 12, oHrmSepOrderHdrBean.getApproverId())); + oParameters.add(new DBObject(7, 1, 12, oHrmSepOrderHdrBean.getRemarks())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 1, 12, null)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPORDER.procUpsertHrSepOrderHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + updateEmpHistory(oHrmSepOrderHdrBean.getEmpId(), oHrmSepOrderHdrBean.getActSepDate()); + updateEmpWorkgroupDetail(oHrmSepOrderHdrBean.getEmpId(), oHrmSepOrderHdrBean.getActSepDate()); + updateEmpPersonalDetail(oHrmSepOrderHdrBean.getEmpId(), oHrmSepOrderHdrBean.getActSepDate(), oHrmSepOrderHdrBean.getSepCatId()); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "u")); + oParameters.add(new DBObject(2, 1, 12, oHrmSepOrderHdrBean.getOrderNo())); + oParameters.add(new DBObject(3, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepOrderHdrBean.getOrderDate()))); + oParameters.add(new DBObject(4, 1, 12, oHrmSepOrderHdrBean.getApplnId())); + oParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepOrderHdrBean.getActSepDate()))); + oParameters.add(new DBObject(6, 1, 12, oHrmSepOrderHdrBean.getApproverId())); + oParameters.add(new DBObject(7, 1, 12, oHrmSepOrderHdrBean.getRemarks())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 1, 12, null)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPORDER.procUpsertHrSepOrderHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + updateEmpHistory(oHrmSepOrderHdrBean.getEmpId(), oHrmSepOrderHdrBean.getActSepDate()); + updateEmpWorkgroupDetail(oHrmSepOrderHdrBean.getEmpId(), oHrmSepOrderHdrBean.getActSepDate()); + updateEmpPersonalDetail(oHrmSepOrderHdrBean.getEmpId(), oHrmSepOrderHdrBean.getActSepDate(), oHrmSepOrderHdrBean.getSepCatId()); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oHrmSepOrderHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMSEPORDER.procDeleteHrSepOrderHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmSepOrder")) + saveHrmSepOrder(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmSepOrder(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmSepOrderDtlBean oHrmSepOrderDtlBean = itrBean.next(); + if (oHrmSepOrderDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPORDER.procUpsertHrSepOrderDtl(?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmSepOrderDtlBean.getTxtApplnId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmSepOrderDtlBean.getTxtSepDtlId())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepOrderDtlBean.getTxtActualSepDate()))); + arylstParameters.add(new DBObject(7, 1, 12, oHrmSepOrderDtlBean.getTxtReason())); + arylstParameters.add(new DBObject(8, 1, 12, "N")); + arylstParameters.add(new DBObject(9, 1, 12, oHrmSepOrderDtlBean.getTxtRejectionRemarks())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmSepOrderDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPORDER.procUpsertHrSepOrderDtl(?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmSepOrderDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmSepOrderDtlBean.getTxtApplnId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmSepOrderDtlBean.getTxtSepDtlId())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmSepOrderDtlBean.getTxtActualSepDate()))); + arylstParameters.add(new DBObject(7, 1, 12, oHrmSepOrderDtlBean.getTxtReason())); + arylstParameters.add(new DBObject(8, 1, 12, "N")); + arylstParameters.add(new DBObject(9, 1, 12, oHrmSepOrderDtlBean.getTxtRejectionRemarks())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmSepOrderDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMSEPORDER.procDeleteHrSepOrderDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmSepOrderDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void checkApplication() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + ArrayList oParameters = new ArrayList(); + ArrayList oOutArray = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 2, -5)); + oParameters.add(new DBObject(2, 2, 93)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + oOutArray = oBean.callProc(oParameters, "HRMSEPORDER.procHrSepOrderApplnCount(?,?,?,?,?)"); + DBObject oTotalRecord = oOutArray.get(0); + long count1 = ((Long)oTotalRecord.getObject()).longValue(); + if (count1 == 0L) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.HrmSepOrder.noApplication", arylstParam)); + } + reportError(arylstList); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmSepOrderHdrBean)oBaseHeaderBean); + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmSepOrderHdrBean oHrmSepOrderHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmSepOrderHdrBean.getOrderNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepOrder.orderNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepOrderHdrBean.getOrderDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepOrder.orderDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepOrderHdrBean.getApplicationNo())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.applicationNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmSepOrderHdrBean.getApprovedBy())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmSepApplication.approvedBy"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderHdrBean oHrmSepOrderHdrBean = (HrmSepOrderHdrBean)oBaseHeaderBean; + ArrayList oList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmSepOrderHdrBean)oBaseHeaderBean); + checkDates((HrmSepOrderHdrBean)oBaseHeaderBean); + } + reportError(oList); + } + + private void checkDates(HrmSepOrderHdrBean oHrmSepOrderHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmSepOrderHdrBean.getOrderDate())) { + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmSepOrderHdrBean.getOrderDate(), oHrmSepOrderHdrBean.getDateApplied()); + if (dateFlag == -1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.empSepOrderDate.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmSepOrderHdrBean.getActSepDate())) { + int dateFlag1 = EnrgiseUtil.compareDates(dateFormat, oHrmSepOrderHdrBean.getActSepDate(), oHrmSepOrderHdrBean.getDateApplied()); + if (dateFlag1 == -1 && dateFlag1 != -2) + oErrorList.add(new EnrgiseApplicationException("wenrgise.empSepActDate.dateConstraintViolated")); + } + reportError(oErrorList); + } + + private void checkUniqueHeader(HrmSepOrderHdrBean oHrmSepOrderHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_SEP_ORDER_HDR where ORDER_NO='").concat(String.valueOf(oHrmSepOrderHdrBean.getOrderNo()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + ArrayList oList = new ArrayList(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmSepOrderHdrBean.getHeaderPrimaryKey())) + oList.add(new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated")); + } + reportError(oList); + } + + public void updateEmpHistory(String sEmpId, String sActSepDate) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Iterator oIt = null; + ArrayList arylstEmpPresDtls = getEmpPresentDetail(sEmpId); + oIt = arylstEmpPresDtls.iterator(); + while (oIt.hasNext()) { + HrmAprslEmpDtlsBean oHrmAprslEmpDtlsBean = oIt.next(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 12, oHrmAprslEmpDtlsBean.getPresLoc())); + arylstParam.add(new DBObject(3, 1, 12, oHrmAprslEmpDtlsBean.getDesignation())); + arylstParam.add(new DBObject(4, 1, 12, oHrmAprslEmpDtlsBean.getGrade())); + arylstParam.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(sActSepDate))); + arylstParam.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParam.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + arylstParam.add(new DBObject(8, 2, 12)); + arylstParam.add(new DBObject(9, 2, 12)); + arylstParam.add(new DBObject(10, 2, 4)); + ArrayList arrayList = oBean.callProc(arylstParam, "HRMSEPORDER.procUpsertHrmEmpIncr(?,?,?,?,?,?,?,?,?,?)"); + } + } + + public ArrayList getEmpPresentDetail(String sEmpId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList arylstList = null; + Iterator oIt = null; + ArrayList arylstEmpPresentDetail = null; + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 2, -10)); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPORDER.procEmpPresDtls(?,?,?,?,?)"); + arylstList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (arylstList.size() == 0); + count = 0; + oIt = arylstList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + arylstEmpPresentDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmAprslEmpDtlsBean oHrmAprslEmpDtlsBean = new HrmAprslEmpDtlsBean(); + oHrmAprslEmpDtlsBean.setGrade(oRow.get("present_grade_id").getString()); + oHrmAprslEmpDtlsBean.setDesignation(oRow.get("present_designation_id").getString()); + oHrmAprslEmpDtlsBean.setPresLoc(oRow.get("present_site_id").getString()); + arylstEmpPresentDetail.add(oHrmAprslEmpDtlsBean); + } + return arylstEmpPresentDetail; + } + + public void updateEmpWorkgroupDetail(String sEmpId, String sActSepDate) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sActSepDate))); + arylstParam.add(new DBObject(3, 2, 12)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPORDER.procUpdateHrmEmpWrkgrpDtl(?,?,?,?,?)"); + } + + public void updateEmpPersonalDetail(String sEmpId, String sActSepDate, String sSepCatId) throws EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sEmpId)); + arylstParam.add(new DBObject(2, 1, 93, EnrgiseUtil.convertToSqlDate(sActSepDate))); + arylstParam.add(new DBObject(3, 1, 12, sSepCatId)); + arylstParam.add(new DBObject(4, 2, 12)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMSEPORDER.procUpdateHrmEmpPers(?,?,?,?,?,?)"); + } + + public String approveSepOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + HrmSepOrderHdrBean oHrmSepOrderHdrBean = (HrmSepOrderHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPORDER.procApproveSepOrder(?)"); + Iterator itrDtlBean = arylstDetailBeanArray.iterator(); + int rowCount = 0; + int n = arylstDetailBeanArray.size(); + while (itrDtlBean.hasNext()) { + HrmSepOrderDtlBean oDtlBean = itrDtlBean.next(); + System.out.println(oDtlBean.getDetailId()); + System.out.println(oDtlBean.getTxtApprovedFlag()); + checkApproveReject(oDtlBean); + if (oDtlBean.getStatus().equalsIgnoreCase("A")) + arylstParameters.add(new DBObject(1, 1, 12, oDtlBean.getDetailId())); + if (!arylstParameters.isEmpty()) + oBean.addToBatch(arylstParameters); + if (rowCount < n) + rowCount++; + } + oBean.executeBatch(); + reportError(arylstList); + return sHeaderPrimaryKey; + } + + public String rejectSepOrder(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + HrmSepOrderHdrBean oHrmSepOrderHdrBean = (HrmSepOrderHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMSEPORDER.procRejectSepOrder(?)"); + Iterator itrDtlBean = arylstDetailBeanArray.iterator(); + int rowCount = 1; + int n = arylstDetailBeanArray.size(); + while (itrDtlBean.hasNext()) { + HrmSepOrderDtlBean oDtlBean = itrDtlBean.next(); + System.out.println(oDtlBean.getDetailId()); + checkApproveReject(oDtlBean); + if (oDtlBean.getStatus().equalsIgnoreCase("R")) + arylstParameters.add(new DBObject(1, 1, 12, oDtlBean.getDetailId())); + if (!arylstParameters.isEmpty()) + oBean.addToBatch(arylstParameters); + if (rowCount < n) + rowCount++; + } + oBean.executeBatch(); + reportError(arylstList); + return sHeaderPrimaryKey; + } + + private void checkApproveReject(HrmSepOrderDtlBean oDtlBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + ArrayList arylstParam = new ArrayList(); + System.out.println(oDtlBean.getHdnTempFlag()); + if (oDtlBean.getHdnTempFlag().equalsIgnoreCase("A") || oDtlBean.getHdnTempFlag().equalsIgnoreCase("R")) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstList.add(new EnrgiseMessageKeyException("hrm.common.approve", arylstParam)); + } + reportError(arylstList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalBO.java new file mode 100644 index 0000000..ef56ca8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalBO.java @@ -0,0 +1,901 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngCalDtlBean; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.vo.HrmTrngCalQVO; + +public class HrmTrngCalBO extends HrmBaseBO { + public HrmTrngCalBO() {} + + public HrmTrngCalBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngCalHdrMetaInfo(HrmTrngCalQVO oHrmTrngCalQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String oStr = oHrmTrngCalQVO.getStartDate(); + String oStr1 = oHrmTrngCalQVO.getEndDate(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngCalQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngCalQVO.getCalendarName())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngCalQVO.getSite())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oStr))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oStr1))); + arylstParameters.add(new DBObject(6, 2, -5)); + arylstParameters.add(new DBObject(7, 2, 93)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_HrTrngCalHdrCount(?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngCalHeaderInfo(HrmTrngCalQVO oHrmTrngCalQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmTrngCalQVO == null) + oHrmTrngCalQVO = new HrmTrngCalQVO(); + String oStr = oHrmTrngCalQVO.getStartDate(); + String oStr1 = oHrmTrngCalQVO.getEndDate(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngCalQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngCalQVO.getCalendarName())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngCalQVO.getSite())); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oStr))); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oStr1))); + arylstParameters.add(new DBObject(8, 2, -10)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_GetHrTrngCal(?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngCalHdrBean oTrngCalHeader = new HrmTrngCalHdrBean(); + oTrngCalHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTrngCalHeader.setSiteId(oRow.get("SITE_ID").getString()); + oTrngCalHeader.setCalendarName(oRow.get("NAME").getString()); + oTrngCalHeader.setSite(oRow.get("CODE").getString()); + oTrngCalHeader.setSiteName(oRow.get("SITE_NAME").getString()); + oTrngCalHeader.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oTrngCalHeader.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + arylstHeaderList.add(oTrngCalHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmTrngCalDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_HrTrngCalDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngCalDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_GetHrTrngCalDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmTrngCalDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngCalDtlBean oTrngCalDetailBean = new HrmTrngCalDtlBean(); + oTrngCalDetailBean.setDetailId(oRow.get("ID").getString()); + oTrngCalDetailBean.setTxtType(oRow.get("TYPE_TYPE").getString()); + oTrngCalDetailBean.setTxtStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oTrngCalDetailBean.setTxtEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oTrngCalDetailBean.setTxtDuration(oRow.get("DURATION").getString()); + oTrngCalDetailBean.setTxtStrength(oRow.get("STRENGTH").getString()); + oTrngCalDetailBean.setTxtFee(oRow.get("COURSE_FEE").getString()); + oTrngCalDetailBean.setTxtStatus(oRow.get("STATUS_FLAG").getString()); + oTrngCalDetailBean.setTxtInstId(oRow.get("INST_ID").getString()); + oTrngCalDetailBean.setTxtInstituteName(oRow.get("INST_NAME").getString()); + oTrngCalDetailBean.setTxtCourseId(oRow.get("COURSE_ID").getString()); + oTrngCalDetailBean.setTxtCourseCode(oRow.get("COURSE_CODE").getString()); + oTrngCalDetailBean.setTxtCourseName(oRow.get("COURSE_NAME").getString()); + oTrngCalDetailBean.setRatingId(oRow.get("RATING_HDR_ID").getString()); + oTrngCalDetailBean.setTxtRatingScheme(oRow.get("RATING_CODE").getString()); + oTrngCalDetailBean.setTxtVenue(oRow.get("VENUE").getString()); + arylstHrmTrngCalDetail.add(oTrngCalDetailBean); + } + return arylstHrmTrngCalDetail; + } + + public ArrayList getHrTrngCalDetailByHdrIdCrsId(String sId, String sCrsId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 1, 12, sCrsId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_GetTrngCalByCrs(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmTrngCalDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngCalDtlBean oTrngCalDetailBean = new HrmTrngCalDtlBean(); + oTrngCalDetailBean.setDetailId(oRow.get("ID").getString()); + oTrngCalDetailBean.setTxtType(oRow.get("TYPE_TYPE").getString()); + String datenewformat = formatter.format(oRow.get("START_DATE").getDate()); + oTrngCalDetailBean.setTxtStartDate(datenewformat); + String datenewformat1 = formatter.format(oRow.get("END_DATE").getDate()); + oTrngCalDetailBean.setTxtEndDate(datenewformat1); + oTrngCalDetailBean.setTxtDuration(oRow.get("DURATION").getString()); + oTrngCalDetailBean.setTxtStrength(oRow.get("STRENGTH").getString()); + oTrngCalDetailBean.setTxtFee(oRow.get("COURSE_FEE").getString()); + oTrngCalDetailBean.setTxtStatus(oRow.get("STATUS_FLAG").getString()); + oTrngCalDetailBean.setTxtInstituteName(oRow.get("INST_NAME").getString()); + oTrngCalDetailBean.setTxtCourseCode(oRow.get("COURSE_CODE").getString()); + oTrngCalDetailBean.setTxtCourseName(oRow.get("COURSE_NAME").getString()); + oTrngCalDetailBean.setTxtRatingScheme(oRow.get("RATING_HDR_ID").getString()); + oTrngCalDetailBean.setTxtVenue(oRow.get("VENUE").getString()); + arylstHrmTrngCalDetail.add(oTrngCalDetailBean); + } + return arylstHrmTrngCalDetail; + } + + public ArrayList getHrTrngCalDetailByHdrIdInsId(String sId, String sInsId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 1, 12, sInsId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_GetTrngCalByIns(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmTrngCalDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngCalDtlBean oTrngCalDetailBean = new HrmTrngCalDtlBean(); + oTrngCalDetailBean.setDetailId(oRow.get("ID").getString()); + oTrngCalDetailBean.setTxtType(oRow.get("TYPE_TYPE").getString()); + String datenewformat = formatter.format(oRow.get("START_DATE").getDate()); + oTrngCalDetailBean.setTxtStartDate(datenewformat); + String datenewformat1 = formatter.format(oRow.get("END_DATE").getDate()); + oTrngCalDetailBean.setTxtEndDate(datenewformat1); + oTrngCalDetailBean.setTxtDuration(oRow.get("DURATION").getString()); + oTrngCalDetailBean.setTxtStrength(oRow.get("STRENGTH").getString()); + oTrngCalDetailBean.setTxtFee(oRow.get("COURSE_FEE").getString()); + oTrngCalDetailBean.setTxtStatus(oRow.get("STATUS_FLAG").getString()); + oTrngCalDetailBean.setTxtInstituteName(oRow.get("INST_NAME").getString()); + oTrngCalDetailBean.setTxtCourseCode(oRow.get("COURSE_CODE").getString()); + oTrngCalDetailBean.setTxtCourseName(oRow.get("COURSE_NAME").getString()); + oTrngCalDetailBean.setTxtRatingScheme(oRow.get("RATING_HDR_ID").getString()); + oTrngCalDetailBean.setTxtVenue(oRow.get("VENUE").getString()); + arylstHrmTrngCalDetail.add(oTrngCalDetailBean); + } + return arylstHrmTrngCalDetail; + } + + public ArrayList getHrTrngCalDetailByHdrIdInsCrsId(String sId, String sInsId, String sCrsId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 1, 12, sInsId)); + arylstParameters.add(new DBObject(3, 1, 12, sCrsId)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_GetTrngCalByInsCrs(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmTrngCalDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngCalDtlBean oTrngCalDetailBean = new HrmTrngCalDtlBean(); + oTrngCalDetailBean.setDetailId(oRow.get("ID").getString()); + oTrngCalDetailBean.setTxtType(oRow.get("TYPE_TYPE").getString()); + String datenewformat = formatter.format(oRow.get("START_DATE").getDate()); + oTrngCalDetailBean.setTxtStartDate(datenewformat); + String datenewformat1 = formatter.format(oRow.get("END_DATE").getDate()); + oTrngCalDetailBean.setTxtEndDate(datenewformat1); + oTrngCalDetailBean.setTxtDuration(oRow.get("DURATION").getString()); + oTrngCalDetailBean.setTxtStrength(oRow.get("STRENGTH").getString()); + oTrngCalDetailBean.setTxtFee(oRow.get("COURSE_FEE").getString()); + oTrngCalDetailBean.setTxtStatus(oRow.get("STATUS_FLAG").getString()); + oTrngCalDetailBean.setTxtInstituteName(oRow.get("INST_NAME").getString()); + oTrngCalDetailBean.setTxtCourseCode(oRow.get("COURSE_CODE").getString()); + oTrngCalDetailBean.setTxtCourseName(oRow.get("COURSE_NAME").getString()); + oTrngCalDetailBean.setRatingId(oRow.get("RATING_HDR_ID").getString()); + oTrngCalDetailBean.setTxtRatingScheme(oRow.get("RATING_CODE").getString()); + oTrngCalDetailBean.setTxtVenue(oRow.get("VENUE").getString()); + arylstHrmTrngCalDetail.add(oTrngCalDetailBean); + } + return arylstHrmTrngCalDetail; + } + + public LovVO getHrmClsCalCrsLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Course Id"); + arylstHeaderNames.add("Course Code"); + arylstHeaderNames.add("Course Name"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrngCourseLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("COURSE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrngCalInstLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmTrnCal.insCode"); + arylstHeaderList.add("hrm.HrmTrnCal.txtInstituteName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetHrmTrngInsLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("INST_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("INST_NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrngRatingLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmTrnCal.txtRatingScheme"); + arylstHeaderList.add("hrm.HrmTrnCal.minRating"); + arylstHeaderList.add("hrm.HrmTrnCal.maxRating"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetHrmRatingLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("Code").getString()); + oLOVBean.setDetailField3(oRow.get("min_rating").getString()); + oLOVBean.setDetailField4(oRow.get("max_rating").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrngCalCrsCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmTrnCal.txtCourseCode"); + arylstHeaderList.add("hrm.HrmTrnCal.courseName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String instId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("txtInstId") != null) { + instId = oLovQueryVO.getProperty("txtInstId"); + System.out.println(instId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, instId)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetHrmTrngCrsCdLOVdata(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("COURSE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public boolean chkHrmTrnCalHdrByRatingIdCount(String sRatingId) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + boolean flag = true; + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sRatingId)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_HrTrnCalHdrCount(?,?,?,?)"); + DBObject oTotalRecord = arylstOutArray.get(0); + long count1 = ((Long)oTotalRecord.getObject()).longValue(); + System.out.println(count1); + if (count1 == 0L) + flag = false; + return flag; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmTrngCalHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmTrngCal")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmTrngCalDtlBean oHrmTrngCalDtlBean = itrBean1.next(); + if (!oHrmTrngCalDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmTrngCalDtlBean, rowCount); + } + rowCount++; + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + if (bDetailDataChanged) { + HrmTrngCalHdrBean oHrmTrngCalHdrBean = (HrmTrngCalHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmTrngCalDtlBean oHrmTrngCalDtlBean = itrBean.next(); + if (oHrmTrngCalDtlBean.getStatus().equals("D")) { + String sQuery = String.valueOf("select trn_calend_id as checkExist from HRM_TRNG_REQ where trn_calend_id=").concat(String.valueOf(oHrmTrngCalDtlBean.getDetailId())); + DBUtilitiesBean oBean3 = new DBUtilitiesBean(); + ArrayList arylstList1 = oBean3.executeQuery(sQuery); + Iterator itrBean1 = arylstList1.iterator(); + String chExist = null; + if (itrBean1.hasNext()) { + QueryRow oRow = itrBean1.next(); + chExist = oRow.get("checkExist").getString(); + System.out.println(); + } + if (chExist != null) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.trngCal.error.empApplied")); + } + } + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkDatesConstraint((HrmTrngCalHdrBean)oBaseHeaderBean, arylstErrorList); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkDatesConstraintForDtl(oHrmTrngCalHdrBean, arylstDetailBeanArray, arylstErrorList); + } + reportError(arylstErrorList); + } + + private void checkDatesConstraintForDtl(HrmTrngCalHdrBean oHrmTrngCalHdrBean, ArrayList arylstDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int n = arylstDetailBeanArray.size(); + ArrayList arylstParam = new ArrayList(); + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmTrngCalDtlBean oHrmTrngCalDtlBean = itrBean1.next(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngCalDtlBean.getTxtStartDate(), oHrmTrngCalHdrBean.getStartDate()); + if (dateFlag == -1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.fromCourseDate.dateConstraintViolated", arylstParam)); + } + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngCalDtlBean.getTxtStartDate(), oHrmTrngCalHdrBean.getEndDate()); + if (dateFlag == 1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.fromCourseDate.dateConstraintViolated", arylstParam)); + } + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngCalDtlBean.getTxtEndDate(), oHrmTrngCalHdrBean.getStartDate()); + if (dateFlag == -1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.toCourseDate.dateConstraintViolated", arylstParam)); + } + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngCalDtlBean.getTxtEndDate(), oHrmTrngCalHdrBean.getEndDate()); + if (dateFlag == 1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.toCourseDate.dateConstraintViolated", arylstParam)); + } + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngCalDtlBean.getTxtEndDate(), oHrmTrngCalDtlBean.getTxtStartDate()); + if (dateFlag == -1 && dateFlag != -2) { + arylstParam = new ArrayList(); + arylstParam.add(""); + arylstParam.add(new Integer(0)); + arylstErrorList.add(new EnrgiseMessageKeyException("wenrgise.toFromDate.dateConstraintViolated", arylstParam)); + } + } + reportError(arylstErrorList); + } + + private void checkDatesConstraint(HrmTrngCalHdrBean oHrmTrngCalHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmTrngCalHdrBean.getEndDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngCalHdrBean.getEndDate(), oHrmTrngCalHdrBean.getStartDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + } + + private void checkMandatoryHeader(HrmTrngCalHdrBean oHrmTrngCalHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTrngCalHdrBean.getCalendarName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.calendarName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCalHdrBean.getSite())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.site"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCalHdrBean.getStartDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.startDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCalHdrBean.getEndDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.endDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmTrngCalDtlBean oHrmTrngCalDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + rowCount++; + if (!EnrgiseUtil.checkString(oHrmTrngCalDtlBean.getTxtCourseCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.txtCourseCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCalDtlBean.getTxtInstituteName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.txtInstituteName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCalDtlBean.getTxtStartDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.txtStartDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCalDtlBean.getTxtEndDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnCal.txtEndDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TRNG_CAl_HDR"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmTrngCalHdrBean oHrmTrngCalHdrBean = (HrmTrngCalHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + System.out.println(oHrmTrngCalHdrBean.getStartDate()); + System.out.println(EnrgiseUtil.convertToSqlDate(oHrmTrngCalHdrBean.getStartDate())); + System.out.println(oHrmTrngCalHdrBean.getEndDate()); + System.out.println(EnrgiseUtil.convertToSqlDate(oHrmTrngCalHdrBean.getEndDate())); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngCalHdrBean.getCalendarName())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngCalHdrBean.getSiteId())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalHdrBean.getStartDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(6, 1, 12, "100")); + arylstParameters.add(new DBObject(7, 1, 12, "100")); + arylstParameters.add(new DBObject(8, 1, 12, null)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_UpsertHrTrngCalHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngCalHdrBean.getCalendarName())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngCalHdrBean.getSiteId())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalHdrBean.getStartDate()))); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(6, 1, 12, "100")); + arylstParameters.add(new DBObject(7, 1, 12, "100")); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTrngCalHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_UpsertHrTrngCalHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmTrngCal")) + saveHrmTrngCalDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmTrngCalDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmTrngCalDtlBean oHrmTrngCalDtlBean = itrBean.next(); + if (oHrmTrngCalDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGCAL.proc_UpsertHrTrngCalDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngCalDtlBean.getTxtInstId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngCalDtlBean.getTxtCourseId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngCalDtlBean.getTxtType())); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalDtlBean.getTxtStartDate()))); + arylstParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalDtlBean.getTxtEndDate()))); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngCalDtlBean.getTxtDuration())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmTrngCalDtlBean.getTxtVenue())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmTrngCalDtlBean.getTxtStrength())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTrngCalDtlBean.getTxtFee())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmTrngCalDtlBean.getRatingId())); + arylstParameters.add(new DBObject(14, 1, 12, "P")); + arylstParameters.add(new DBObject(15, 1, 12, "200")); + arylstParameters.add(new DBObject(16, 1, 12, "200")); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmTrngCalDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGCAL.proc_UpsertHrTrngCalDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngCalDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngCalDtlBean.getTxtInstId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngCalDtlBean.getTxtCourseId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngCalDtlBean.getTxtType())); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalDtlBean.getTxtStartDate()))); + arylstParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCalDtlBean.getTxtEndDate()))); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngCalDtlBean.getTxtDuration())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmTrngCalDtlBean.getTxtVenue())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmTrngCalDtlBean.getTxtStrength())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTrngCalDtlBean.getTxtFee())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmTrngCalDtlBean.getRatingId())); + arylstParameters.add(new DBObject(14, 1, 12, "P")); + arylstParameters.add(new DBObject(15, 1, 12, "200")); + arylstParameters.add(new DBObject(16, 1, 12, "200")); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmTrngCalDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMTRNGCAL.proc_DeleteTrngCalDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngCalDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void calendarClose(String sCalId) throws EnrgiseSystemException, EnrgiseApplicationException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + QueryRow oRow = null; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sCalId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(2, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCAL.proc_GetTrngCalForClose(?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + HashMap mapFacFdbk = new HashMap(); + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + mapFacFdbk.put(oRow.get("srl_no"), oRow.get("trn_facmst_srl_no")); + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalCloseBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalCloseBO.java new file mode 100644 index 0000000..cf4622c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCalCloseBO.java @@ -0,0 +1,261 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.vo.HrmTrngCalCloseQVO; + +public class HrmTrngCalCloseBO extends HrmBaseBO { + public HrmTrngCalCloseBO() {} + + public HrmTrngCalCloseBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void initializeBOImpl() { + this.headerTable = "PUM_PO_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + System.out.println("Save Ille!"); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public RecordMetaInfo getHrmTrngCalCloseHdrMetaInfo(HrmTrngCalCloseQVO oHrmTrngCalCloseQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHrmTrngCalCloseHdrInfo(HrmTrngCalCloseQVO oHrmTrngCalCloseQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public LovVO getHrmCalCloseCrsNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("hrm.HrmTrngCalClose.calendarCode"); + arylstHeaderList.add("hrm.HrmTrngCalClose.courseId"); + arylstHeaderList.add("hrm.HrmTrngCalClose.calendarName"); + arylstHeaderList.add("hrm.HrmTrngCalClose.courseName"); + arylstHeaderList.add("hrm.HrmTrngCalClose.institutionName"); + arylstHeaderList.add("hrm.HrmTrngCalClose.startDate"); + arylstHeaderList.add("hrm.HrmTrngCalClose.endDate"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCALCLOSE.proc_GetHrmTrngCalCloseLOVdata(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("CAL_HDR_ID").getString()); + oLOVBean.setDetailField2(oRow.get("CAL_DTL_ID").getString()); + oLOVBean.setDetailField3(oRow.get("CAL_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("CRS_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("INST_NAME").getString()); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oLOVBean.setDetailField7(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void calendarClose(String sCalId) throws EnrgiseSystemException, EnrgiseApplicationException { + processEmployeeRating(sCalId); + processFacultyRating(sCalId); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList arylstParameters1 = new ArrayList(); + arylstParameters1.add(new DBObject(1, 1, 12, "U")); + arylstParameters1.add(new DBObject(2, 1, 12, sCalId)); + arylstParameters1.add(new DBObject(3, 1, 12, "100")); + arylstParameters1.add(new DBObject(4, 1, 12, "100")); + arylstParameters1.add(new DBObject(5, 2, 12)); + arylstParameters1.add(new DBObject(6, 2, 12)); + arylstParameters1.add(new DBObject(7, 2, 4)); + oBean.callProc(arylstParameters1, "HRMTRNGCALCLOSE.proc_UpsertTrngCalClose(?,?,?,?,?,?,?)"); + } + + public void processFacultyRating(String sCalId) throws EnrgiseSystemException, EnrgiseApplicationException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + QueryRow oRow = null; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sCalId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCALCLOSE.proc_GetTrngCalCloseFacFdbk(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + HashMap mapFacRating = new HashMap(); + HashMap mapFacCount = new HashMap(); + String sRating = null; + String sCount = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + String sEmp = oRow.get("EID").getString(); + sRating = oRow.get("RATING").getString(); + if (sRating == null) + sRating = "0"; + if (mapFacRating.containsKey(sEmp)) { + String sOldRating = (String)mapFacRating.get(sEmp); + String sOldCount = (String)mapFacCount.get(sEmp); + double dRating = Double.parseDouble(sOldRating) + Double.parseDouble(sRating); + int i = Integer.parseInt(sOldCount) + 1; + mapFacRating.put(sEmp, String.valueOf(dRating)); + mapFacCount.put(sEmp, String.valueOf(i)); + continue; + } + mapFacRating.put(sEmp, sRating); + mapFacCount.put(sEmp, String.valueOf(1)); + } + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMTRNGCALCLOSE.proc_UpsertTrngCalFacFdbk(?,?,?,?,?)"); + Object[] sKey = mapFacRating.keySet().toArray(); + int iCount = 0; + while (iCount < mapFacRating.size()) { + ArrayList arylstParameters1 = new ArrayList(); + arylstParameters1.add(new DBObject(1, 1, 12, "U")); + String sId = sKey[iCount].toString(); + arylstParameters1.add(new DBObject(2, 1, 12, sId)); + String sFinalRating = (String)mapFacRating.get(sKey[iCount]); + String sFinalCount = (String)mapFacCount.get(sKey[iCount]); + double dFinalRating = Double.parseDouble(sFinalRating) / Integer.parseInt(sFinalCount); + sFinalRating = String.valueOf(dFinalRating); + System.out.println(String.valueOf(String.valueOf(String.valueOf("set ").concat(String.valueOf(sId))).concat(String.valueOf(" with rating"))).concat(String.valueOf(sFinalRating))); + arylstParameters1.add(new DBObject(3, 1, 8, sFinalRating)); + arylstParameters1.add(new DBObject(4, 1, 12, "100")); + arylstParameters1.add(new DBObject(5, 1, 12, "100")); + System.out.println(arylstParameters1); + oBean1.addToBatch(arylstParameters1); + iCount++; + } + oBean1.executeBatch(); + } + + public void processEmployeeRating(String sCalId) throws EnrgiseSystemException, EnrgiseApplicationException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstParameters = new ArrayList(); + QueryRow oRow = null; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngCalDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sCalId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGCALCLOSE.proc_GetTrngCalCloseEmpFdbk(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + HashMap mapFacRating = new HashMap(); + HashMap mapFacCount = new HashMap(); + String sRating = null; + String sCount = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + oRow = itrBean.next(); + String sFac = oRow.get("FID").getString(); + sRating = oRow.get("RATING").getString(); + if (sRating == null) + sRating = "0"; + if (mapFacRating.containsKey(sFac)) { + String sOldRating = (String)mapFacRating.get(sFac); + String sOldCount = (String)mapFacCount.get(sFac); + double dRating = Double.parseDouble(sOldRating) + Double.parseDouble(sRating); + int i = Integer.parseInt(sOldCount) + 1; + mapFacRating.put(sFac, String.valueOf(dRating)); + mapFacCount.put(sFac, String.valueOf(i)); + continue; + } + mapFacRating.put(sFac, sRating); + mapFacCount.put(sFac, String.valueOf(1)); + } + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMTRNGCALCLOSE.proc_UpsertTrngCalEmpFdbk(?,?,?,?,?)"); + Object[] sKey = mapFacRating.keySet().toArray(); + int iCount = 0; + while (iCount < mapFacRating.size()) { + ArrayList arylstParameters1 = new ArrayList(); + arylstParameters1.add(new DBObject(1, 1, 12, "U")); + String sId = sKey[iCount].toString(); + arylstParameters1.add(new DBObject(2, 1, 12, sId)); + String sFinalRating = (String)mapFacRating.get(sKey[iCount]); + String sFinalCount = (String)mapFacCount.get(sKey[iCount]); + double dFinalRating = Double.parseDouble(sFinalRating) / Integer.parseInt(sFinalCount); + sFinalRating = String.valueOf(dFinalRating); + System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("set ").concat(String.valueOf(sId))).concat(String.valueOf(" cal= "))).concat(String.valueOf(sCalId))).concat(String.valueOf(" with rating"))).concat(String.valueOf(sFinalRating))); + arylstParameters1.add(new DBObject(3, 1, 12, sFinalRating)); + arylstParameters1.add(new DBObject(4, 1, 12, "100")); + arylstParameters1.add(new DBObject(5, 1, 12, "100")); + oBean1.addToBatch(arylstParameters1); + iCount++; + } + oBean1.executeBatch(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsBudBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsBudBO.java new file mode 100644 index 0000000..3cb8f9a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsBudBO.java @@ -0,0 +1,715 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngCrsBudDtlBean; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; + +public class HrmTrngCrsBudBO extends HrmBaseBO { + public HrmTrngCrsBudBO() {} + + public HrmTrngCrsBudBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngCrsBudHdrMetaInfo(HrmTrngCrsBudQVO oHrmTrngCrsBudQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmTrngCrsBudQVO.getCalendarId())); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsBudQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_HrTrngCrsBudHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngCrsBudHeaderInfo(HrmTrngCrsBudQVO oHrmTrngCrsBudQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngCrsBudQVO == null) + oHrmTrngCrsBudQVO = new HrmTrngCrsBudQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngCrsBudQVO.getCalendarId())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsBudQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_GetHrTrngCrsBudHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngCrsBudHdrBean oTrngCrsBudHeader = new HrmTrngCrsBudHdrBean(); + oTrngCrsBudHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTrngCrsBudHeader.setCalendarId(oRow.get("TRNG_CAL_ID").getString()); + oTrngCrsBudHeader.setCalendarName(oRow.get("NAME").getString()); + oTrngCrsBudHeader.setApprovedBudget(oRow.get("APPROVED_BUDGET").getString()); + oTrngCrsBudHeader.setAvailableBudget(oRow.get("AVAILABLE_BUDGET").getString()); + oTrngCrsBudHeader.setSpentTillDate(oRow.get("SPENT_TILL_DATE").getString()); + oHeaderList.add(oTrngCrsBudHeader); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmTrngCrsBudDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_HrTrngCrsBudDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngCrsBudDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmTrngCrsBudDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_GetHrTrngCrsBudDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (count == 0) + oHrmTrngCrsBudDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngCrsBudDtlBean oTrngCrsBudDetailBean = new HrmTrngCrsBudDtlBean(); + oTrngCrsBudDetailBean.setDetailId(oRow.get("ID").getString()); + oTrngCrsBudDetailBean.setTxtCourseId(oRow.get("trn_corsms_id").getString()); + oTrngCrsBudDetailBean.setTxtCourseName(oRow.get("name").getString()); + oTrngCrsBudDetailBean.setTxtFromDate(EnrgiseUtil.convertToString(oRow.get("start_date").getDate())); + oTrngCrsBudDetailBean.setTxtToDate(EnrgiseUtil.convertToString(oRow.get("end_date").getDate())); + oTrngCrsBudDetailBean.setTxtTravel(oRow.get("travel").getString()); + oTrngCrsBudDetailBean.setTxtAccomodation(oRow.get("accomodation").getString()); + oTrngCrsBudDetailBean.setTxtDailyAllowances(oRow.get("daily_allowances").getString()); + oTrngCrsBudDetailBean.setTxtFood(oRow.get("food_expenses").getString()); + oTrngCrsBudDetailBean.setTxtFees(oRow.get("training_fees").getString()); + oTrngCrsBudDetailBean.setTxtMisc(oRow.get("misc").getString()); + oTrngCrsBudDetailBean.setTxtTotal(oRow.get("total").getString()); + oHrmTrngCrsBudDetail.add(oTrngCrsBudDetailBean); + } + return oHrmTrngCrsBudDetail; + } + + public LovVO getHrmTrngBudCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Course Id"); + arylstHeaderNames.add("hrm.HrmTrainingBudget.course"); + arylstHeaderNames.add("hrm.HrmTrainingBudget.courseName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_GetTrngCourseLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("COURSE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmTrngCalNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Id"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.calendarName"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.startDate"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.endDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_GetTrngCalNameLOV(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmTrngSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Id"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.site"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.siteName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_GetTrngSiteLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CODE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmTrngBudCalendarCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Calendar Id"); + arylstHeaderNames.add("hrm.HrmTrainingBudget.calendarName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_GetTrngCalendarLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmTrngBudCourseCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Course Id"); + arylstHeaderNames.add("hrm.HrmTrainingBudget.courseName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("calendarId") != null) + sQuerySearch2 = oLovQueryVO.getProperty("calendarId"); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_GetTrngBudCourseLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("COURSE_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + String sAvailableBudget = new String(); + String sSpentTillDate = new String(); + HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean = (HrmTrngCrsBudHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "i")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsBudHdrBean.getCalendarId())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngCrsBudHdrBean.getAvailableBudget())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsBudHdrBean.getApprovedBudget())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngCrsBudHdrBean.getSpentTillDate())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, null)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_UpsertHrTrngBudHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "u")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsBudHdrBean.getCalendarId())); + oParameters.add(new DBObject(3, 1, 12, sAvailableBudget)); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsBudHdrBean.getApprovedBudget())); + oParameters.add(new DBObject(5, 1, 12, sSpentTillDate)); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngCrsBudHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSBUD.proc_UpsertHrTrngBudHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + updateHeaderField1(oHrmTrngCrsBudHdrBean); + } + return returnString; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TRNG_BUD_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmTrngBudget")) + saveHrmTrngBudDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmTrngBudDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + String sTotal = new String(); + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmTrngCrsBudDtlBean oHrmTrngCrsBudDtlBean = oIt.next(); + sTotal = calculateTotalExp(oHrmTrngCrsBudDtlBean); + if (oHrmTrngCrsBudDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGCRSBUD.proc_UpsertHrTrngBudDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "I")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsBudDtlBean.getTxtCourseId())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngCrsBudDtlBean.getTxtTravel())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngCrsBudDtlBean.getTxtAccomodation())); + oParameters.add(new DBObject(7, 1, 12, oHrmTrngCrsBudDtlBean.getTxtDailyAllowances())); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngCrsBudDtlBean.getTxtFood())); + oParameters.add(new DBObject(9, 1, 12, oHrmTrngCrsBudDtlBean.getTxtFees())); + oParameters.add(new DBObject(10, 1, 12, oHrmTrngCrsBudDtlBean.getTxtMisc())); + oParameters.add(new DBObject(11, 1, 12, sTotal)); + oParameters.add(new DBObject(12, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCrsBudDtlBean.getTxtFromDate()))); + oParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCrsBudDtlBean.getTxtToDate()))); + oParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmTrngCrsBudDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGCRSBUD.proc_UpsertHrTrngBudDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsBudDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsBudDtlBean.getTxtCourseId())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngCrsBudDtlBean.getTxtTravel())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngCrsBudDtlBean.getTxtAccomodation())); + oParameters.add(new DBObject(7, 1, 12, oHrmTrngCrsBudDtlBean.getTxtDailyAllowances())); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngCrsBudDtlBean.getTxtFood())); + oParameters.add(new DBObject(9, 1, 12, oHrmTrngCrsBudDtlBean.getTxtFees())); + oParameters.add(new DBObject(10, 1, 12, oHrmTrngCrsBudDtlBean.getTxtMisc())); + oParameters.add(new DBObject(11, 1, 12, sTotal)); + oParameters.add(new DBObject(12, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCrsBudDtlBean.getTxtFromDate()))); + oParameters.add(new DBObject(13, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngCrsBudDtlBean.getTxtToDate()))); + oParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmTrngCrsBudDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGCRSBUD.proc_DeleteHrTrngBudDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmTrngCrsBudDtlBean.getDetailId())); + oBean.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean.executeBatch(); + updateHeaderField(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void updateHeaderField(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + ArrayList arylstOutList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sTotal = new String(); + float fSpent = 0.0F; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmTrngCrsBudDtlBean oHrmTrngCrsBudDtlBean = oIt.next(); + sTotal = calculateTotalExp(oHrmTrngCrsBudDtlBean); + fSpent += Float.valueOf(sTotal).floatValue(); + } + arylstParameters.add(new DBObject(1, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(2, 1, 12, String.valueOf(fSpent))); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + arylstOutList = oBean.callProc(arylstParameters, "HRMTRNGCRSBUD.procUpdateHeaderField(?,?,?,?,?)"); + DBObject oObj = arylstOutList.get(0); + String sErrorLOg = oObj.toString(); + } + + private void updateHeaderField1(HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean) throws EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + ArrayList arylstOutList = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sSpent = new String(); + float fSpent = Float.valueOf(oHrmTrngCrsBudHdrBean.getSpentTillDate()).floatValue(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngCrsBudHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, String.valueOf(fSpent))); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + arylstOutList = oBean.callProc(arylstParameters, "HRMTRNGCRSBUD.procUpdateHeaderField(?,?,?,?,?)"); + DBObject oObj = arylstOutList.get(0); + String sErrorLOg = oObj.toString(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmTrngCrsBudHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmTrngBudget")) { + Iterator itrBean1 = oDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmTrngCrsBudDtlBean oHrmTrngCrsBudDtlBean = itrBean1.next(); + if (!oHrmTrngCrsBudDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatory(oHrmTrngCrsBudDtlBean, iCount, oErrorList); + iCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatory(HrmTrngCrsBudDtlBean oHrmTrngCrsBudDtlBean, int iCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtCourseName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrainingBudget.courseName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrainingBudget.fromDate"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmTrngBudget")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmTrngCrsBudDtlBean oHrmTrngCrsBudDtlBean = oIt1.next(); + if (!oHrmTrngCrsBudDtlBean.getStatus().equalsIgnoreCase("D")) + compareFields(oDetailBeanArray, oBaseHeaderBean, oErrorList); + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTrngCrsBudHdrBean.getCalendarName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrainingBudget.calendarName"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngCrsBudHdrBean.getApprovedBudget())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrainingBudget.approvedBudget"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void compareFields(ArrayList oDetailBeanArray, BaseHeaderBean oBaseHeaderBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParam = null; + String sTotal = new String(); + float fSpent = 0.0F; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmTrngCrsBudDtlBean oHrmTrngCrsBudDtlBean = oIt.next(); + sTotal = calculateTotalExp(oHrmTrngCrsBudDtlBean); + fSpent += Float.valueOf(sTotal).floatValue(); + } + sTotal = String.valueOf(fSpent); + HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean = (HrmTrngCrsBudHdrBean)oBaseHeaderBean; + if (Float.valueOf(sTotal).floatValue() > Float.valueOf(oHrmTrngCrsBudHdrBean.getApprovedBudget()).floatValue()) { + arylstParam = new ArrayList(); + arylstParam.add("Training Budget: Spent Amount"); + arylstParam.add(new Integer(0)); + oErrorList.add(new EnrgiseMessageKeyException("hrm.HrmTrainingBudget.compareAmount", arylstParam)); + } + reportError(oErrorList); + } + + private void checkDtlFieldsConsistency(ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + int count = 0; + Iterator oIt = oDetailBeanArray.iterator(); + int n = oDetailBeanArray.size(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + String sOldToDate = null; + while (oIt.hasNext()) { + HrmTrngCrsBudDtlBean oBean = oIt.next(); + String sFromDate = oBean.getTxtFromDate(); + if (EnrgiseUtil.compareDates(dateFormat, sFromDate, sOldToDate) == -1) + oErrorList.add(new EnrgiseApplicationException("wenrgise.common.PrevRowdateConstraintViolated")); + sOldToDate = oBean.getTxtToDate(); + } + } + + private String calculateTotalExp(HrmTrngCrsBudDtlBean oHrmTrngCrsBudDtlBean) throws EnrgiseSystemException { + ArrayList oList = new ArrayList(); + float fTravel = 0.0F; + float fAccomodation = 0.0F; + float fDailyAllowances = 0.0F; + float fFood = 0.0F; + float fFees = 0.0F; + float fMisc = 0.0F; + if (EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtTravel())) + fTravel = Float.valueOf(oHrmTrngCrsBudDtlBean.getTxtTravel()).floatValue(); + if (EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtAccomodation())) + fAccomodation = Float.valueOf(oHrmTrngCrsBudDtlBean.getTxtAccomodation()).floatValue(); + if (EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtDailyAllowances())) + fDailyAllowances = Float.valueOf(oHrmTrngCrsBudDtlBean.getTxtDailyAllowances()).floatValue(); + if (EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtFood())) + fFood = Float.valueOf(oHrmTrngCrsBudDtlBean.getTxtFood()).floatValue(); + if (EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtFees())) + fFees = Float.valueOf(oHrmTrngCrsBudDtlBean.getTxtFees()).floatValue(); + if (EnrgiseUtil.checkString(oHrmTrngCrsBudDtlBean.getTxtMisc())) + fMisc = Float.valueOf(oHrmTrngCrsBudDtlBean.getTxtMisc()).floatValue(); + float fTotal = fMisc + fFood + fDailyAllowances + fAccomodation + fTravel + fFees; + return String.valueOf(fTotal); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsMstBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsMstBO.java new file mode 100644 index 0000000..9ea8aef --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngCrsMstBO.java @@ -0,0 +1,507 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngCrsMstDtlBean; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; + +public class HrmTrngCrsMstBO extends HrmBaseBO { + public HrmTrngCrsMstBO() {} + + public HrmTrngCrsMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngCrsHdrMetaInfo(HrmTrngCrsMstQVO oHrmTrngCrsMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmTrngCrsMstQVO.getTrainingBranch())); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_HrTrngCrsHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngCrsHeaderInfo(HrmTrngCrsMstQVO oHrmTrngCrsMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngCrsMstQVO == null) + oHrmTrngCrsMstQVO = new HrmTrngCrsMstQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngCrsMstQVO.getTrainingBranch())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_GetHrTrngCrsHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngCrsMstHdrBean oTrngCrsHeader = new HrmTrngCrsMstHdrBean(); + oTrngCrsHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTrngCrsHeader.setTrainingBranch(oRow.get("BRANCH").getString()); + oTrngCrsHeader.setBranchName(oRow.get("NAME").getString()); + oHeaderList.add(oTrngCrsHeader); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmTrngCrsDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_HrTrngCrsDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngCrsDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmTrngCrsDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_GetHrTrngCrsDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmTrngCrsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngCrsMstDtlBean oTrngCrsDetailBean = new HrmTrngCrsMstDtlBean(); + oTrngCrsDetailBean.setDetailId(oRow.get("ID").getString()); + oTrngCrsDetailBean.setTxtCourse(oRow.get("COURSE").getString()); + oTrngCrsDetailBean.setTxtName(oRow.get("NAME").getString()); + oTrngCrsDetailBean.setTxtMaxAttend(oRow.get("Max_Attend").getString()); + oTrngCrsDetailBean.setTxtMinAttend(oRow.get("Min_Attend").getString()); + oHrmTrngCrsDetail.add(oTrngCrsDetailBean); + } + return oHrmTrngCrsDetail; + } + + public ArrayList getHrmTrngCrsHeaderInfoById(String sId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_GetHrTrngCrsHdrInfoById(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngCrsMstHdrBean oTrngCrsHeader = new HrmTrngCrsMstHdrBean(); + oTrngCrsHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTrngCrsHeader.setTrainingBranch(oRow.get("BRANCH").getString()); + oTrngCrsHeader.setBranchName(oRow.get("NAME").getString()); + oHeaderList.add(oTrngCrsHeader); + } + return oHeaderList; + } + + public ArrayList getHrmTrngCrsDetailByHdrIdDtlCrs(String sId, String sCourse) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmTrngCrsDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sId)); + oParameters.add(new DBObject(2, 1, 12, sCourse)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_GetTrngCrsDtlByCrs(?,?,?,?,?.?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmTrngCrsDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngCrsMstDtlBean oTrngCrsDetailBean = new HrmTrngCrsMstDtlBean(); + oTrngCrsDetailBean.setDetailId(oRow.get("ID").getString()); + oTrngCrsDetailBean.setTxtCourse(oRow.get("COURSE").getString()); + oTrngCrsDetailBean.setTxtName(oRow.get("NAME").getString()); + oHrmTrngCrsDetail.add(oTrngCrsDetailBean); + } + return oHrmTrngCrsDetail; + } + + public LovVO getHrmTrgMstBranchCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("trgMstBranchId"); + oHeaderList.add("hrm.HrmTrainingCourseMst.trainingBranch"); + oHeaderList.add("hrm.HrmTrainingCourseMst.branchName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_GetTrngMstCodeQmode(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("BRANCH").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmTrngCrsMstHdrBean oHrmTrngCrsMstHdrBean = (HrmTrngCrsMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "i")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsMstHdrBean.getTrainingBranch())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngCrsMstHdrBean.getBranchName())); + oParameters.add(new DBObject(4, 1, 12, "100")); + oParameters.add(new DBObject(5, 1, 12, "100")); + oParameters.add(new DBObject(6, 1, 12, null)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_UpsertHrTrngCrsHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "u")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsMstHdrBean.getTrainingBranch())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngCrsMstHdrBean.getBranchName())); + oParameters.add(new DBObject(4, 1, 12, "100")); + oParameters.add(new DBObject(5, 1, 12, "100")); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngCrsMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_UpsertHrTrngCrsHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oHrmTrngCrsMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGCRSMST.proc_DeleteTrngBranchMst(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TRNG_BRANCH_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmTrngCrsMst")) + saveHrmTrngCourseDetail(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmTrngCourseDetail(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmTrngCrsMstDtlBean oHrmTrngCrsMstDtlBean = oIt.next(); + if (oHrmTrngCrsMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGCRSMST.proc_UpsertHrTrngCrsDtl(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "I")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsMstDtlBean.getTxtCourse())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngCrsMstDtlBean.getTxtName())); + oParameters.add(new DBObject(6, 1, 12, "200")); + oParameters.add(new DBObject(7, 1, 12, "200")); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngCrsMstDtlBean.getTxtMaxAttend())); + oParameters.add(new DBObject(9, 1, 12, oHrmTrngCrsMstDtlBean.getTxtMinAttend())); + System.out.println(oHrmTrngCrsMstDtlBean.getTxtName()); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmTrngCrsMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGCRSMST.proc_UpsertHrTrngCrsDtl(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngCrsMstDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngCrsMstDtlBean.getTxtCourse())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngCrsMstDtlBean.getTxtName())); + oParameters.add(new DBObject(6, 1, 12, "200")); + oParameters.add(new DBObject(7, 1, 12, "200")); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngCrsMstDtlBean.getTxtMaxAttend())); + oParameters.add(new DBObject(9, 1, 12, oHrmTrngCrsMstDtlBean.getTxtMinAttend())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmTrngCrsMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMTRNGCRSMST.proc_DeleteTrngCrsMst(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + System.out.println(oHrmTrngCrsMstDtlBean.getDetailId()); + oParameters.add(new DBObject(1, 1, 12, oHrmTrngCrsMstDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmTrngCrsMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmTrngCrsMst")) { + Iterator itrBean1 = oDetailBeanArray.iterator(); + int iCount = 1; + while (itrBean1.hasNext()) { + HrmTrngCrsMstDtlBean oHrmTrngCrsMstDtlBean = itrBean1.next(); + if (!oHrmTrngCrsMstDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatory(oHrmTrngCrsMstDtlBean, iCount, oErrorList); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtCourse", "hrm.HrmTrainingCourseMst.course", oErrorList, true); + } + iCount++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(HrmTrngCrsMstHdrBean oHrmTrngCrsMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTrngCrsMstHdrBean.getTrainingBranch())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrainingCourseMst.trainingBranch"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatory(HrmTrngCrsMstDtlBean oHrmTrngCrsMstDtlBean, int iCount, ArrayList oErrorList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (!EnrgiseUtil.checkString(oHrmTrngCrsMstDtlBean.getTxtCourse())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrainingCourseMst.course"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(new Integer(iCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsMstHdrBean oHrmTrngCrsMstHdrBean = (HrmTrngCrsMstHdrBean)oBaseHeaderBean; + ArrayList oList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkUniqueHeader((HrmTrngCrsMstHdrBean)oBaseHeaderBean); + } else if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sRefId = oCommonBO.getRefList("HRM_TRNG_CRS_MST", "BRANCH_ID ", oHrmTrngCrsMstHdrBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId)) + if (oList.isEmpty()) + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + String sRefId2 = oCommonBO.getRefList("HRM_TRNG_INST_CRS_MAP", "TRN_CORSMS_ID ", oHrmTrngCrsMstHdrBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId2)) + if (oList.isEmpty()) + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + } + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("HrmTrngCrsMst")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + HrmTrngCrsMstDtlBean oHrmTrngCrsMstDtlBean = oIt1.next(); + if (!oHrmTrngCrsMstDtlBean.getStatus().equalsIgnoreCase("D")) + continue; + if (oHrmTrngCrsMstDtlBean.getStatus().equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sQuery = String.valueOf(String.valueOf("Select i.ID as ID from HRM_TRNG_INST_CRS_MAP i,hrm_trng_crs_mst m where m.id=i.TRN_CORSMS_ID and m.COURSE='").concat(String.valueOf(oHrmTrngCrsMstDtlBean.getTxtCourse()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList1 = oBean.executeQuery(sQuery); + if (oList1.size() > 0) + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + } + } + } + reportError(oList); + } + + private void checkUniqueHeader(HrmTrngCrsMstHdrBean oHrmTrngCrsMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" Select ID as ID from HRM_TRNG_BRANCH_MST where BRANCH='").concat(String.valueOf(oHrmTrngCrsMstHdrBean.getTrainingBranch()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + ArrayList oList = new ArrayList(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmTrngCrsMstHdrBean.getHeaderPrimaryKey())) + oList.add(new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated")); + } + reportError(oList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpAttBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpAttBO.java new file mode 100644 index 0000000..22dd997 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpAttBO.java @@ -0,0 +1,286 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngEmpAttDtlBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; + +public class HrmTrngEmpAttBO extends HrmBaseBO { + public HrmTrngEmpAttBO() {} + + public HrmTrngEmpAttBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngEmpAttHdrMetaInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + String sId = oHrmTrngEmpAttQueryVO.getCourseNameId(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sId)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGATT.proc_HrEmpTrngAttHdrCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngEmpAttHeaderInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngEmpAttQueryVO == null) + oHrmTrngEmpAttQueryVO = new HrmTrngEmpAttQVO(); + String sId = oHrmTrngEmpAttQueryVO.getCourseNameId(); + String sPK = oHrmTrngEmpAttQueryVO.getHeaderPrimaryKey(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, sId)); + oParameters.add(new DBObject(4, 1, 12, sPK)); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGATT.proc_HrEmpTrngAttHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpAttHdrBean oHrmTrngEmpAttHdrBean = new HrmTrngEmpAttHdrBean(); + oHrmTrngEmpAttHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oHrmTrngEmpAttHdrBean.setCourseName(oRow.get("CRS_NAME").getString()); + oHrmTrngEmpAttHdrBean.setInstitutionName(oRow.get("INST_NAME").getString()); + oHrmTrngEmpAttHdrBean.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmTrngEmpAttHdrBean.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHeaderList.add(oHrmTrngEmpAttHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmTrngEmpAttDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGATT.proc_HrEmpTrngAttDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTRngEmpAttDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmTrngEmpAttDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGATT.proc_HrEmpTrngAttDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmTrngEmpAttDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpAttDtlBean oHrmTrngEmpAttDtlBean = new HrmTrngEmpAttDtlBean(); + if (oRow.get("status_flag").getString().equalsIgnoreCase("C")) { + oHrmTrngEmpAttDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmTrngEmpAttDtlBean.setTxtTrainingDate(EnrgiseUtil.convertToString(oRow.get("TRAIN_DATE").getDate())); + oHrmTrngEmpAttDtlBean.setDisabtxtTrainingDate("true"); + oHrmTrngEmpAttDtlBean.setTxtEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmTrngEmpAttDtlBean.setDisabtxtEmployeeNo("true"); + oHrmTrngEmpAttDtlBean.setTxtEmployeeName(oRow.get("EMPNAME").getString()); + oHrmTrngEmpAttDtlBean.setDisabtxtEmployeeName("true"); + oHrmTrngEmpAttDtlBean.setDisabtxtAttendance("true"); + oHrmTrngEmpAttDtlBean.setTxtAttendance(oRow.get("PRESENT_FLAG").getString()); + oHrmTrngEmpAttDtlBean.setDisabtxtReasonForAbsence("true"); + oHrmTrngEmpAttDtlBean.setTxtReasonForAbsence(oRow.get("NONPART_REASON").getString()); + oHrmTrngEmpAttDetail.add(oHrmTrngEmpAttDtlBean); + continue; + } + oHrmTrngEmpAttDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmTrngEmpAttDtlBean.setTxtTrainingDate(EnrgiseUtil.convertToString(oRow.get("TRAIN_DATE").getDate())); + oHrmTrngEmpAttDtlBean.setDisabtxtTrainingDate("true"); + oHrmTrngEmpAttDtlBean.setTxtEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmTrngEmpAttDtlBean.setDisabtxtEmployeeNo("true"); + oHrmTrngEmpAttDtlBean.setTxtEmployeeName(oRow.get("EMPNAME").getString()); + oHrmTrngEmpAttDtlBean.setDisabtxtEmployeeName("true"); + oHrmTrngEmpAttDtlBean.setTxtAttendance(oRow.get("PRESENT_FLAG").getString()); + if (oHrmTrngEmpAttDtlBean.getTxtAttendance().equals("Y")) { + oHrmTrngEmpAttDtlBean.setDisabtxtReasonForAbsence("true"); + } else { + oHrmTrngEmpAttDtlBean.setDisabtxtReasonForAbsence("false"); + } + oHrmTrngEmpAttDtlBean.setTxtReasonForAbsence(oRow.get("NONPART_REASON").getString()); + oHrmTrngEmpAttDetail.add(oHrmTrngEmpAttDtlBean); + } + return oHrmTrngEmpAttDetail; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRNG_HDR"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmTrngEmpAttDtlBean oDtlBean = oIt.next(); + if (oDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPTRNGATT.proc_UpsertTrngAttDtl(?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oDtlBean.getDetailId())); + oParameters.add(new DBObject(2, 1, 12, oDtlBean.getTxtAttendance())); + oParameters.add(new DBObject(3, 1, 12, oDtlBean.getTxtReasonForAbsence())); + oParameters.add(new DBObject(4, 1, 12, "100")); + oParameters.add(new DBObject(5, 1, 12, "100")); + oBean.addToBatch(oParameters); + } + } + if (bUpdate) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public LovVO getHrmTrngCourseLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Course Id"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.course"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.courseName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String countryId = null; + String calId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrgAttCourseLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("COURSE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpFdbkBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpFdbkBO.java new file mode 100644 index 0000000..a2d1cde --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpFdbkBO.java @@ -0,0 +1,401 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngEmpFeedBackDtlBean; +import wenrgise.hrms.bean.HrmTrngEmpFeedBackHdrBean; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; + +public class HrmTrngEmpFdbkBO extends HrmBaseBO { + public HrmTrngEmpFdbkBO() {} + + public HrmTrngEmpFdbkBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public LovVO getHrmTrngCourseLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmEmpFeedback.courseName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGLOV.proc_HrCalDtlLov(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("COURSE_ID").getString()); + oLOVBean.setDetailField2(oRow.get("CRS_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmTrngRatingHelpLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("hrm.HrmEmpFeedback.minRating"); + oHeaderList.add("hrm.HrmEmpFeedback.maxRating"); + oHeaderList.add("hrm.HrmCoreCompetency.desc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sRatingCode = new String(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getProperty("ratingScheme") != null) + sRatingCode = oLovQueryVO.getProperty("ratingScheme"); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sRatingCode)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGLOV.proc_HrRatingHelpLov(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("RATING_FROM").getString()); + oLOVBean.setDetailField2(oRow.get("RATING_TO").getString()); + oLOVBean.setDetailField3(oRow.get("DESCRIPTION").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmTrngFacultyLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("ID"); + oHeaderList.add("hrm.HrmEmpFeedback.facultyName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sInstId = new String(); + if (oLovQueryVO.getProperty("instId") != null) + sInstId = oLovQueryVO.getProperty("instId"); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sInstId)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGLOV.proc_HrFacNameLov(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("FACULTY_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public RecordMetaInfo getHrmTrngEmpFbkHdrMetaInfo(HrmTrngEmpFbkQVO oHrmTrngEmpFbkQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmTrngEmpFbkQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpFbkQVO.getCourseId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPFEEDBK.proc_GetHrEmpFbkHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngEmpFbkHeader(HrmTrngEmpFbkQVO oHrmTrngEmpFbkQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngEmpFbkQVO == null) + oHrmTrngEmpFbkQVO = new HrmTrngEmpFbkQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpFbkQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpFbkQVO.getCourseId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPFEEDBK.proc_GetHrEmpFbkHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpFeedBackHdrBean oHrmTrngEmpFeedBackHdrBean = new HrmTrngEmpFeedBackHdrBean(); + oHrmTrngEmpFeedBackHdrBean.setHeaderPrimaryKey(oRow.get("CAL_ID").getString()); + oHrmTrngEmpFeedBackHdrBean.setInstId(oRow.get("INST_ID").getString()); + oHrmTrngEmpFeedBackHdrBean.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHrmTrngEmpFeedBackHdrBean.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmTrngEmpFeedBackHdrBean.setMaxRating(oRow.get("MAX_RATING").getString()); + oHrmTrngEmpFeedBackHdrBean.setMinRating(oRow.get("MIN_RATING").getString()); + oHrmTrngEmpFeedBackHdrBean.setRatingScheme(oRow.get("RATINGCODE").getString()); + oHrmTrngEmpFeedBackHdrBean.setInstitutionName(oRow.get("INST_NAME").getString()); + oHrmTrngEmpFeedBackHdrBean.setCourseId(oRow.get("CAL_ID").getString()); + oHrmTrngEmpFeedBackHdrBean.setCourseName(oRow.get("CRS_NAME").getString()); + oHrmTrngEmpFeedBackHdrBean.setStatusFlag(oRow.get("STATUS_FLAG").getString()); + oHeaderList.add(oHrmTrngEmpFeedBackHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getTrngEmpFdBkDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPFEEDBK.proc_HrEmpFdBkDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getTrngEmpFdBkDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oTrngEmpFdBkDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPFEEDBK.proc_HrEmpFdBkDtlInfo(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + count = 0; + oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oTrngEmpFdBkDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpFeedBackDtlBean oHrmTrngEmpFeedBackDtlBean = new HrmTrngEmpFeedBackDtlBean(); + oHrmTrngEmpFeedBackDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtSkillArea(oRow.get("SKILL_AREA").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtFacId(oRow.get("FSRL_NO").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtFacultyName(oRow.get("FNAME").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtEmpNo(oRow.get("EMP_NO").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtEmpName(oRow.get("NAME").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtDeliveryClarity(oRow.get("FAC_DELV_CLAR").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtPresentation(oRow.get("FAC_PRESENTATION").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtInteraction(oRow.get("FAC_INTERACTION").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtCourseMaterial(oRow.get("COURSE_MATERIAL").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtCourseObjective(oRow.get("COURSE_OBJECTIVE").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtCourseDuration(oRow.get("COURSE_DURATION").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtTrainingAids(oRow.get("TRNG_AIDS").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtTrainingArrangements(oRow.get("TRNG_ARRANGEMENTS").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtOverallRating(oRow.get("OVERALL_RATING").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtTopicsRelevant(oRow.get("RELEV_TOPICS").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtTopicsIrrelevant(oRow.get("IRRELEV_TOPICS").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtSuggestions(oRow.get("SUGGESTION").getString()); + oHrmTrngEmpFeedBackDtlBean.setTxtTrnHdrId(oRow.get("EMP_TRNG_HDR_ID").getString()); + oTrngEmpFdBkDetail.add(oHrmTrngEmpFeedBackDtlBean); + } + return oTrngEmpFdBkDetail; + } + + public void additionalFieldValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void initializeBOImpl() { + this.headerTable = "HRM_EMP_TRNG_FDBK_DTL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmTrngEmpFeedBack")) + saveHrmEmpFeedBack(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveHrmEmpFeedBack(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bUpdate = false; + boolean bInsert = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + HrmTrngEmpFeedBackDtlBean oHrmTrngEmpFeedBackDtlBean = oIt.next(); + if (oHrmTrngEmpFeedBackDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPFEEDBK.proc_UpsertHrEmpFeedBackDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters.add(new DBObject(1, 1, 12, "I")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpFeedBackDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTrnHdrId())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtFacId())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtDeliveryClarity())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtPresentation())); + oParameters.add(new DBObject(7, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtInteraction())); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtCourseMaterial())); + oParameters.add(new DBObject(9, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtCourseObjective())); + oParameters.add(new DBObject(10, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtCourseDuration())); + oParameters.add(new DBObject(11, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTrainingAids())); + oParameters.add(new DBObject(12, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTrainingArrangements())); + oParameters.add(new DBObject(13, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtOverallRating())); + oParameters.add(new DBObject(14, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTopicsRelevant())); + oParameters.add(new DBObject(15, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTopicsIrrelevant())); + oParameters.add(new DBObject(16, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtSuggestions())); + oParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oHrmTrngEmpFeedBackDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMEMPFEEDBK.proc_UpsertHrEmpFeedBackDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpFeedBackDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTrnHdrId())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtFacId())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtDeliveryClarity())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtPresentation())); + oParameters.add(new DBObject(7, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtInteraction())); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtCourseMaterial())); + oParameters.add(new DBObject(9, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtCourseObjective())); + oParameters.add(new DBObject(10, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtCourseDuration())); + oParameters.add(new DBObject(11, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTrainingAids())); + oParameters.add(new DBObject(12, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTrainingArrangements())); + oParameters.add(new DBObject(13, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtOverallRating())); + oParameters.add(new DBObject(14, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTopicsRelevant())); + oParameters.add(new DBObject(15, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtTopicsIrrelevant())); + oParameters.add(new DBObject(16, 1, 12, oHrmTrngEmpFeedBackDtlBean.getTxtSuggestions())); + oParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(18, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpHistBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpHistBO.java new file mode 100644 index 0000000..a38d277 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpHistBO.java @@ -0,0 +1,435 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngEmpHistDtlBean; +import wenrgise.hrms.bean.HrmTrngEmpHistHdrBean; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; + +public class HrmTrngEmpHistBO extends HrmBaseBO { + public HrmTrngEmpHistBO() {} + + public HrmTrngEmpHistBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngEmpHistHdrMetaInfo(HrmTrngEmpHistQVO oHrmTrngEmpHistQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmTrngEmpHistQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpHistQVO.getEmpNo())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpHistQVO.getCalendarName())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpHistQVO.getCourse())); + oParameters.add(new DBObject(5, 2, -5)); + oParameters.add(new DBObject(6, 2, 93)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_HrEmpTrngHisHdrCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngEmpHistHeaderInfo(HrmTrngEmpHistQVO oHrmTrngEmpHistQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngEmpHistQVO == null) + oHrmTrngEmpHistQVO = new HrmTrngEmpHistQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpHistQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpHistQVO.getEmpNo())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngEmpHistQVO.getCalendarName())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngEmpHistQVO.getCourse())); + oParameters.add(new DBObject(7, 2, -10)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_HrEmpTrngHisHdr(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpHistHdrBean oHrmTrngEmpHistHdrBean = new HrmTrngEmpHistHdrBean(); + oHrmTrngEmpHistHdrBean.setHeaderPrimaryKey(oRow.get("CAL_DTL_ID").getString()); + oHrmTrngEmpHistHdrBean.setCalendarName(oRow.get("CAL_NAME").getString()); + oHrmTrngEmpHistHdrBean.setCourse(oRow.get("CRS_NAME").getString()); + oHrmTrngEmpHistHdrBean.setEmpNoId(oRow.get("sEmpId").getString()); + oHrmTrngEmpHistHdrBean.setCalId(oRow.get("calDtlId").getString()); + oHrmTrngEmpHistHdrBean.setInstitutionName(oRow.get("INST_NAME").getString()); + oHrmTrngEmpHistHdrBean.setFromDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmTrngEmpHistHdrBean.setToDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oHeaderList.add(oHrmTrngEmpHistHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getHrmTrngEmpHistDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_HrEmpTrngHisDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngEmpHistDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList oHrmTrngEmpHistDetail = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_HrEmpTrngHisDtlInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHrmTrngEmpHistDetail = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngEmpHistDtlBean oHrmTrngEmpHistDtlBean = new HrmTrngEmpHistDtlBean(); + oHrmTrngEmpHistDtlBean.setDetailId(oRow.get("ID").getString()); + oHrmTrngEmpHistDtlBean.setTxtEmployeeNo(oRow.get("EMP_NO").getString()); + oHrmTrngEmpHistDtlBean.setEmpId(oRow.get("sEmpId").getString()); + oHrmTrngEmpHistDtlBean.setCalId(oRow.get("calDtlId").getString()); + oHrmTrngEmpHistDtlBean.setTxtName(oRow.get("EMPNAME").getString()); + oHrmTrngEmpHistDtlBean.setTxtReasonForNonParticipation(oRow.get("NONPART_REASON").getString()); + oHrmTrngEmpHistDtlBean.setTxtRating(oRow.get("EMPLOYEE_RATING").getString()); + oHrmTrngEmpHistDtlBean.setTxtParticipation(oRow.get("NONPART_FLAG").getString()); + oHrmTrngEmpHistDetail.add(oHrmTrngEmpHistDtlBean); + } + return oHrmTrngEmpHistDetail; + } + + public LovVO getHrmEmpHistEmpLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Employee Id"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.employeeNo"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.employeeName"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_GetTrngempHistEmpLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("EMP_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmEmpHistCrsLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Calendar Id"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.calendarName"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.courseName"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.instName"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.startDate"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.endDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String loginUserId = "102313"; + String sCalName = new String(); + if (oLovQueryVO.getProperty("calendarName") != null) + sCalName = oLovQueryVO.getProperty("calendarName"); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, loginUserId)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(3, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(4, 1, 12, sCalName)); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_GetTrngempHistCrsLOV(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("cal_name").getString()); + oLOVBean.setDetailField3(oRow.get("crs_name").getString()); + oLOVBean.setDetailField4(oRow.get("inst_name").getString()); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmEmpHistCalLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Calendar Id"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.calendarName"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.startDate"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.endDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_GetTrngempHistCalLOV(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + oLOVBean.setDetailField3(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oLOVBean.setDetailField4(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmAttendanceDtlLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("hrm.HrmEmpTrngHist.empNo"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.calendarName"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.CourseCode"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.CourseName"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.InstName"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.TrainDate"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.presentlag"); + arylstHeaderNames.add("hrm.HrmEmpTrngHistForm.nonpartReason"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + String sEmpId = new String(); + String sCalDtlId = new String(); + if (oLovQueryVO.getProperty("empId") != null) + sEmpId = oLovQueryVO.getProperty("empId"); + if (oLovQueryVO.getProperty("calId") != null) + sCalDtlId = oLovQueryVO.getProperty("calId"); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sEmpId)); + oParameters.add(new DBObject(2, 1, 12, sCalDtlId)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMEMPTRNGHIS.proc_GetHrmTrngHisAttLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField2(oRow.get("CAL_NAME").getString()); + oLOVBean.setDetailField3(oRow.get("CRS_CODE").getString()); + oLOVBean.setDetailField4(oRow.get("CRS_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("INST_NAME").getString()); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("TRAIN_DATE").getDate())); + oLOVBean.setDetailField7(oRow.get("PRESENT_FLAG").getString()); + oLOVBean.setDetailField8(oRow.get("NONPART_REASON").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = ""; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + System.out.println("Save Ille!"); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String param1) throws EnrgiseSystemException { + return "saveHeaderImpl toBeDone"; + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")); + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpReqBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpReqBO.java new file mode 100644 index 0000000..1baa61f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngEmpReqBO.java @@ -0,0 +1,902 @@ +package wenrgise.hrms.ejb.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.utility.WorkFlowServiceLocator; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmOrgClassDtlBean; +import wenrgise.hrms.bean.HrmTrngEmpReqDtlBean; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.impl.WflDocumentInfoImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.core.impl.WflSiteImpl; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class HrmTrngEmpReqBO extends HrmBaseBO { + String checkFullPart = ""; + + public HrmTrngEmpReqBO() {} + + public HrmTrngEmpReqBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmEmpTrngReqHdrMetaInfo(HrmTrngEmpReqQVO oHrmTrngEmpReqQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngEmpReqQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpReqQVO.getEmpId())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGREQBAT.proc_HrTrngReqHdrCount(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpTrngReqHeaderInfo(HrmTrngEmpReqQVO oHrmTrngEmpReqQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmTrngEmpReqQVO == null) + oHrmTrngEmpReqQVO = new HrmTrngEmpReqQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpReqQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpReqQVO.getEmpId())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGREQBAT.proc_HrTrngReqHdr(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = new HrmTrngEmpReqHdrBean(); + oHrmTrngEmpReqHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + String empId = oRow.get("EMPID").getString(); + oHrmTrngEmpReqHdrBean.setEmpId(oRow.get("EMPID").getString()); + oHrmTrngEmpReqHdrBean.setEmployeeNumber(oRow.get("EMP_NO").getString()); + oHrmTrngEmpReqHdrBean.setFirstName(oRow.get("FIRST_NAME").getString()); + oHrmTrngEmpReqHdrBean.setMiddleName(oRow.get("MIDDLE_NAME").getString()); + oHrmTrngEmpReqHdrBean.setLastName(oRow.get("LAST_NAME").getString()); + oHrmTrngEmpReqHdrBean.setGrade(oRow.get("GRADE").getString()); + oHrmTrngEmpReqHdrBean.setDesig(oRow.get("DESIGNATION").getString()); + oHrmTrngEmpReqHdrBean.setLocation(oRow.get("LOCATION").getString()); + oHrmTrngEmpReqHdrBean.setCourseId(oRow.get("COURSEID").getString()); + oHrmTrngEmpReqHdrBean.setCourseName(oRow.get("CRS_NAME").getString()); + oHrmTrngEmpReqHdrBean.setCalId(oRow.get("CALID").getString()); + oHrmTrngEmpReqHdrBean.setTrainingCalendar(oRow.get("CAL_NAME").getString()); + oHrmTrngEmpReqHdrBean.setInstitutionName(oRow.get("INST_NAME").getString()); + oHrmTrngEmpReqHdrBean.setNature(oRow.get("NATURE").getString()); + oHrmTrngEmpReqHdrBean.setPurpose(oRow.get("PURPOSE").getString()); + oHrmTrngEmpReqHdrBean.setRecommenderId(oRow.get("RECOMENDER").getString()); + oHrmTrngEmpReqHdrBean.setRecommender(oRow.get("RECONAME").getString()); + oHrmTrngEmpReqHdrBean.setApprovalStatus(oRow.get("APPROVED_FLAG").getString()); + oHrmTrngEmpReqHdrBean.setRejectionRemarks(oRow.get("REJECTION_REMARK").getString()); + ArrayList empInfo = new ArrayList(); + HrmOrgClassDtlBean def = null; + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + empInfo = oHrmEmpPersBO.getHrEmpInfoByclass(empId, "10"); + Iterator itrBean10 = empInfo.iterator(); + while (itrBean10.hasNext()) { + def = itrBean10.next(); + oHrmTrngEmpReqHdrBean.setDesignation(def.getTxtDescription()); + } + empInfo = new ArrayList(); + empInfo = oHrmEmpPersBO.getHrEmpInfoByclass(empId, "15"); + Iterator itrBean2 = empInfo.iterator(); + while (itrBean2.hasNext()) { + def = itrBean2.next(); + oHrmTrngEmpReqHdrBean.setScaleOfPay(def.getTxtDescription()); + } + String fullPartFlg = oRow.get("FULL_PART").getString(); + if (fullPartFlg.equalsIgnoreCase("Y")) { + fullPartFlg = "On"; + } else { + fullPartFlg = "Off"; + } + oHrmTrngEmpReqHdrBean.setFullPart(fullPartFlg); + oHrmTrngEmpReqHdrBean.setDateSubmitted(EnrgiseUtil.convertToString(oRow.get("DATE_SUBMITTED").getDate())); + oHrmTrngEmpReqHdrBean.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oHrmTrngEmpReqHdrBean.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + arylstHeaderList.add(oHrmTrngEmpReqHdrBean); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmEmpReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGREQBAT.proc_HrEmpTrngReqDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmEmpReqDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngReqDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGREQBAT.proc_GetHrEmpTrngReqDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmTrngReqDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngEmpReqDtlBean oHrmTrngEmpReqDtlBean = new HrmTrngEmpReqDtlBean(); + oHrmTrngEmpReqDtlBean.setDetailId(oRow.get("HRM_TRNG_PART_ID").getString()); + oHrmTrngEmpReqDtlBean.setDate(EnrgiseUtil.convertToString(oRow.get("TRAINING_DATE").getDate())); + oHrmTrngEmpReqDtlBean.setParticipation(oRow.get("PARTICIPATION").getString()); + arylstHrmTrngReqDetail.add(oHrmTrngEmpReqDtlBean); + } + return arylstHrmTrngReqDetail; + } + + public LovVO getHrmTrgReqCalLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Cal Id"); + arylstHeaderNames.add("hrm.HrmEmpTrngReq.trainingCalendar"); + arylstHeaderNames.add("hrm.HrmEmpTrngReq.courseName"); + arylstHeaderNames.add("hrm.HrmEmpTrngReq.institutionName"); + arylstHeaderNames.add("hrm.HrmEmpTrngReq.startDate"); + arylstHeaderNames.add("hrm.HrmEmpTrngReq.endDate"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String courseId = null; + String startDate = null; + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + if (oLovQueryVO.getProperty("courseId") != null) + courseId = oLovQueryVO.getProperty("courseId"); + if (oLovQueryVO.getProperty("startDate") != null) + startDate = oLovQueryVO.getProperty("startDate"); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, courseId)); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(startDate))); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrngReqCalLOV(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CALNAME").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("INST_NAME").getString()); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrgReqRecoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.employeeNumber"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.recoName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetHrmTrngReqEmpLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("RECONAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrgReqCourseLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Course Id"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.course"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.courseName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String countryId = null; + String calId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrgReqCourseLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("COURSE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrgReqEmpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.employeeNumber"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.firstName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.middleName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.lastName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.courseName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetHrmTrngEmpLOVdata(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oLOVBean.setDetailField6(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TRNG_REQ"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equals("HrmTrngEmpReq")) + saveHrEmpTrngReqDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrEmpTrngReqDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmTrngEmpReqDtlBean oHrmTrngEmpReqDtlBean = itrBean.next(); + if (!oHrmTrngEmpReqDtlBean.getStatus().equals("N")) + if (oHrmTrngEmpReqDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGREQBAT.proc_UpsertHrEmpTrngReqDtl(?,?,?,?,?,?)"); + bUpdate = true; + } + if (this.checkFullPart.equalsIgnoreCase("On")) + oHrmTrngEmpReqDtlBean.setParticipation("Y"); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpReqDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpReqDtlBean.getParticipation())); + arylstParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + } else if (oHrmTrngEmpReqDtlBean.getStatus().equals("D")) { + + } + if (bUpdate) + oBean.executeBatch(); + } + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmTrngEmpReqHdrBean)oBaseHeaderBean); + } + + private void checkMandatoryHeader(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParams = new ArrayList(); + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getNature())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpTrngReq.nature"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getCourseName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpTrngReq.courseName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getDateSubmitted())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpTrngReq.dateSubmitted"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getTrainingCalendar())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmEmpTrngReq.trainingCalendar"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oBaseHeaderBean; + String fullPart = ""; + if (oHrmTrngEmpReqHdrBean.getFullPart().equalsIgnoreCase("On")) { + fullPart = "Y"; + this.checkFullPart = "Y"; + } else { + fullPart = "N"; + } + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpReqHdrBean.getCalId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpReqHdrBean.getCourseId())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getDateSubmitted()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngEmpReqHdrBean.getEmpId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngEmpReqHdrBean.getRecommenderId())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTrngEmpReqHdrBean.getNature())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTrngEmpReqHdrBean.getPurpose())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngEmpReqHdrBean.getApprovalStatus())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmTrngEmpReqHdrBean.getRejectionRemarks())); + arylstParameters.add(new DBObject(11, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getStartDate()))); + arylstParameters.add(new DBObject(12, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(13, 1, 12, fullPart)); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(16, 1, 12, null)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGREQBAT.proc_UpsertHrmEmpTrngReqHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpReqHdrBean.getCalId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngEmpReqHdrBean.getCourseId())); + arylstParameters.add(new DBObject(4, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getDateSubmitted()))); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngEmpReqHdrBean.getEmpId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngEmpReqHdrBean.getRecommenderId())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTrngEmpReqHdrBean.getNature())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTrngEmpReqHdrBean.getPurpose())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngEmpReqHdrBean.getApprovalStatus())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmTrngEmpReqHdrBean.getRejectionRemarks())); + arylstParameters.add(new DBObject(11, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getStartDate()))); + arylstParameters.add(new DBObject(12, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(13, 1, 12, fullPart)); + arylstParameters.add(new DBObject(14, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + arylstParameters.add(new DBObject(16, 1, 12, oHrmTrngEmpReqHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGREQBAT.proc_UpsertHrmEmpTrngReqHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public String approveEmpTrngReq(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + if (!EnrgiseUtil.checkString(oBaseHeaderBean.getWorkListId())) { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", "Initiated"); + } else { + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Approve", (String)null); + } + if (status.getStatus().equalsIgnoreCase("FinallyApproved")) { + Iterator itrBean = arylstDetailBeanArray.iterator(); + HrmTrngEmpReqDtlBean oHrmTrngEmpReqDtlBean = itrBean.next(); + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGREQBAT.proc_UpsertApproveDtl(?,?,?,?,?,?,?,?,?,?)"); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpReqDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpReqHdrBean.getEmpId())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqDtlBean.getDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngEmpReqHdrBean.getCalId())); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getStartDate()))); + arylstParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + oBean.executeBatch(); + } + return sHeaderPrimaryKey; + } + + public String submitEmpTrngReq(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + Iterator itrBean = arylstDetailBeanArray.iterator(); + HrmTrngEmpReqDtlBean oHrmTrngEmpReqDtlBean = itrBean.next(); + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGREQBAT.proc_UpsertApproveDtl(?,?,?,?,?,?,?,?,?,?)"); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngEmpReqDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngEmpReqHdrBean.getEmpId())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqDtlBean.getDate()))); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngEmpReqHdrBean.getCalId())); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getStartDate()))); + arylstParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngEmpReqHdrBean.getEndDate()))); + arylstParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + oBean.executeBatch(); + return sHeaderPrimaryKey; + } + + public String rejectEmpTrngReq(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = null; + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oBaseHeaderBean; + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + WflStatus status = null; + status = callWorkFlow(oBaseHeaderBean, arylstDetailBeanArray, "Reject", (String)null); + if (status.getStatus().equalsIgnoreCase("Rejected")) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGREQBAT.proc_rejectEmpReq(?,?,?,?)"); + ArrayList arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + arylstParameters.add(new DBObject(4, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(arylstParameters); + oBean.executeBatch(); + } + return sHeaderPrimaryKey; + } + + public WflStatus callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity, String initiatedFlag) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)WorkFlowServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade workFlowFacade = oHome.create(); + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oBaseHeaderBean; + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + wflResourceImpl.setEmployeeId(this.oUserInfo.getUserTypeId()); + WflSiteImpl wflSiteImpl = new WflSiteImpl(); + wflSiteImpl.setSiteId(this.oUserInfo.getSiteId()); + wflResourceImpl.setLoginSite((WflSite)wflSiteImpl); + WflDocumentInfoImpl wflDocumentInfoImpl = new WflDocumentInfoImpl(); + wflDocumentInfoImpl.setRequester((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setDocumentId(oHrmTrngEmpReqHdrBean.getHeaderPrimaryKey()); + wflDocumentInfoImpl.setDocumentType("Training"); + wflDocumentInfoImpl.setInitiatedFlag(initiatedFlag); + String documentTypeId = workFlowFacade.getDocumentTypeId("TrngReq"); + if (documentTypeId == null) + throw new EnrgiseSystemException(); + if (!EnrgiseUtil.checkString(initiatedFlag)) + wflDocumentInfoImpl.setWorkListId(oBaseHeaderBean.getWorkListId()); + String activityId = workFlowFacade.getActivityId(activity); + if (activityId == null) + throw new EnrgiseSystemException(); + wflDocumentInfoImpl.setDocumentTypeId(documentTypeId); + if (!activity.equalsIgnoreCase("Reject")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Training Requirement:").concat(String.valueOf(oHrmTrngEmpReqHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for approval"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for approval:Training Requirement:").concat(String.valueOf(oHrmTrngEmpReqHdrBean.getHeaderPrimaryKey()))); + } else if (!activity.equalsIgnoreCase("Approve")) { + wflDocumentInfoImpl.setDocumentNumber(String.valueOf(String.valueOf("Training Requirement:").concat(String.valueOf(oHrmTrngEmpReqHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf("is pending for rejection"))); + wflDocumentInfoImpl.setDocDesc(String.valueOf("The following document has been pending for rejection:Training Requirement:").concat(String.valueOf(oHrmTrngEmpReqHdrBean.getHeaderPrimaryKey()))); + } + wflDocumentInfoImpl.setModuleId("8"); + wflDocumentInfoImpl.setCreator((WflResource)wflResourceImpl); + wflDocumentInfoImpl.setRequesterAction(activityId); + HashMap oProp = new HashMap(); + oProp.put("1", "1"); + wflDocumentInfoImpl.setDocumentAttributes(oProp); + WflAuthorizationBean wflAuthBean = workFlowFacade.canDo((WflDocumentInfo)wflDocumentInfoImpl); + if (EnrgiseUtil.checkString(wflAuthBean.getErrorCode())) + throw new EnrgiseApplicationException(wflAuthBean.getErrorCode()); + if (!wflAuthBean.isAuthStatus()) + throw new EnrgiseApplicationException("wenrgise.workflow.submit.notauthorized"); + WflStatus wflStatus = workFlowFacade.process((WflDocumentInfo)wflDocumentInfoImpl); + if (wflStatus.getStatus().equals("Error")) + throw new EnrgiseSystemException(); + workFlowFacade.remove(); + return wflStatus; + } catch (RemoteException oRtEx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRtEx); + } catch (CreateException oCx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oCx); + } catch (RemoveException oRx) { + throw new EnrgiseSystemException("wenrgise.workflow.connect", oRx); + } + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkDatesConstraint((HrmTrngEmpReqHdrBean)oBaseHeaderBean, arylstErrorList); + reportError(arylstErrorList); + } + + private void checkDatesConstraint(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + if (EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getEndDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngEmpReqHdrBean.getEndDate(), oHrmTrngEmpReqHdrBean.getStartDate()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + if (EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getEndDate())) { + int iDateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngEmpReqHdrBean.getEndDate(), oHrmTrngEmpReqHdrBean.getDateSubmitted()); + if (iDateFlag == -1 && iDateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.common.dateConstraintViolated")); + } + } + + public LovVO getEmpCodeLOVdataQ(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + String sEmpId = null; + if (oLovQueryVO.getProperty("employeeId") != null) + sEmpId = oLovQueryVO.getProperty("employeeId"); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.firstName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.middleName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.lastName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.grade"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.desig"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMTRNGREQBAT.getEmpCodeQuery(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("empNo").getString()); + oLOVBean.setDetailField3(oRow.get("first_name").getString()); + oLOVBean.setDetailField4(oRow.get("middle_name").getString()); + oLOVBean.setDetailField5(oRow.get("last_name").getString()); + oLOVBean.setDetailField6(oRow.get("grade").getString()); + oLOVBean.setDetailField7(oRow.get("designation").getString()); + oLOVBean.setDetailField8(oRow.get("location").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getEmpCodeLOVdataN(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + String sEmpId = null; + if (oLovQueryVO.getProperty("employeeId") != null) + sEmpId = oLovQueryVO.getProperty("employeeId"); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("ID"); + arylstHeaderList.add("hrm.HrmLeaveLedger.employeeNo"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.firstName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.middleName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.lastName"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.grade"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.desig"); + arylstHeaderList.add("hrm.HrmEmpTrngReq.location"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParam = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParam.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParam.add(new DBObject(3, 1, 12, sEmpId)); + arylstParam.add(new DBObject(4, 2, -10)); + arylstParam.add(new DBObject(5, 2, 12)); + arylstParam.add(new DBObject(6, 2, 12)); + arylstParam.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMTRNGREQBAT.getEmpCodeNew(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("empNo").getString()); + oLOVBean.setDetailField3(oRow.get("first_name").getString()); + oLOVBean.setDetailField4(oRow.get("middle_name").getString()); + oLOVBean.setDetailField5(oRow.get("last_name").getString()); + oLOVBean.setDetailField6(oRow.get("grade").getString()); + oLOVBean.setDetailField7(oRow.get("designation").getString()); + oLOVBean.setDetailField8(oRow.get("location").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public String getGroupInfo(String oUserTypeId) throws EnrgiseSystemException { + ArrayList arylstParam = new ArrayList(); + int count = 0; + String groupStatus = null; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParam = new ArrayList(); + arylstParam.add(new DBObject(1, 1, 12, oUserTypeId)); + arylstParam.add(new DBObject(2, 2, 12)); + ArrayList arylstOutArray = oBean.callProc(arylstParam, "HRMTRNGREQBAT.getGroupId(?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + groupStatus = (String)oOutObject.getObject(); + QueryRow oRow = null; + return groupStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacBO.java new file mode 100644 index 0000000..52fbe17 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacBO.java @@ -0,0 +1,341 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.vo.HrmTrngFacQVO; + +public class HrmTrngFacBO extends HrmBaseBO { + public HrmTrngFacBO() {} + + public HrmTrngFacBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmFacHdrMetaInfo(HrmTrngFacQVO oHrmTrngFacQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oHrmTrngFacQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngFacQVO.getFacultyType())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngFacQVO.getEmployeeNo())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngFacQVO.getBaseInstitution())); + oParameters.add(new DBObject(5, 2, -5)); + oParameters.add(new DBObject(6, 2, 93)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGFACMST.proc_HrFacCount(?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmFacHeaderInfo(HrmTrngFacQVO oHrmTrngFacQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oHrmTrngFacQVO == null) + oHrmTrngFacQVO = new HrmTrngFacQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngFacQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngFacQVO.getFacultyType())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngFacQVO.getEmployeeNo())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngFacQVO.getBaseInstitution())); + oParameters.add(new DBObject(7, 2, -10)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGFACMST.proc_GetHrFac(?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + HrmTrngFacBean oFacultyHeader = new HrmTrngFacBean(); + oFacultyHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oFacultyHeader.setFacultyType(oRow.get("FACULTY_TYPE").getString()); + oFacultyHeader.setEmployeeNo(oRow.get("EMP_NO").getString()); + String empId = oRow.get("EMPID").getString(); + if (empId != null && !empId.equals("")) { + oFacultyHeader.setTrgFacMstEmpId(empId); + } else { + oFacultyHeader.setTrgFacMstEmpId(""); + } + oFacultyHeader.setBaseInstitution(oRow.get("INST_CODE").getString()); + oFacultyHeader.setInstitutionName(oRow.get("INST_NAME").getString()); + oFacultyHeader.setTrgFacMstInstCode(oRow.get("INSTID").getString()); + oFacultyHeader.setFirstName(oRow.get("FACULTY_FIRST_NAME").getString()); + oFacultyHeader.setMiddleName(oRow.get("FACULTY_MIDDLE_NAME").getString()); + oFacultyHeader.setLastName(oRow.get("FACULTY_LAST_NAME").getString()); + oFacultyHeader.setExperience(oRow.get("EXPERIENCE").getString()); + oHeaderList.add(oFacultyHeader); + } + return oHeaderList; + } + + public LovVO getHrmTrgFacMstEmpNoLOVNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("Employee Id"); + oHeaderList.add("hrm.HrmFacMst.employeeNo"); + oHeaderList.add("hrm.HrmFacMst.firstName"); + oHeaderList.add("hrm.HrmFacMst.middleName"); + oHeaderList.add("hrm.HrmFacMst.lastName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGFACMST.proc_GetTrgFacMstEmpLOVNmode(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("EMP_NO").getString()); + oLOVBean.setDetailField3(oRow.get("FIRST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("MIDDLE_NAME").getString()); + oLOVBean.setDetailField5(oRow.get("LAST_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getHrmTrgFacMstBaseInstLOVQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("Institute Id"); + oHeaderList.add("hrm.HrmFacMst.baseInstitution"); + oHeaderList.add("hrm.HrmFacMst.instituteName"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + String facType = null; + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + if (oLovQueryVO.getProperty("facultyType") != null) + facType = oLovQueryVO.getProperty("facultyType"); + if (oLovQueryVO.getSearchField2() != null) + sQuerySearch2 = oLovQueryVO.getSearchField2(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + oParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + oParameters.add(new DBObject(3, 1, 12, facType)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGFACMST.proc_GetTrgBaseInstLOVQmode(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = oList.iterator(); + while (iter.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("INST_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("INST_NAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return new String(); + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmTrngFacBean)oBaseHeaderBean); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacBean oHrmTrngFacBean = (HrmTrngFacBean)oBaseHeaderBean; + ArrayList oList = new ArrayList(); + if (bHeaderDataChanged) + if (sScreenMode.equalsIgnoreCase("D")) + if (sScreenMode.equalsIgnoreCase("D")) { + HrmCommonBO oCommonBO = new HrmCommonBO(); + String sRefId = oCommonBO.getRefList("HRM_TRNG_FAC_DTL", "HRM_FACM_ID ", oHrmTrngFacBean.getHeaderPrimaryKey(), "ID"); + if (EnrgiseUtil.checkString(sRefId)) + if (oList.isEmpty()) + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + oList.add(new EnrgiseApplicationException("wenrgise.common.deletion")); + } + reportError(oList); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TRNG_FAC_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + System.out.println(this.oUserInfo); + HrmTrngFacBean oHrmTrngFacBean = (HrmTrngFacBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "i")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngFacBean.getFacultyType())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngFacBean.getTrgFacMstEmpId())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngFacBean.getTrgFacMstInstCode())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngFacBean.getFirstName())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngFacBean.getMiddleName())); + oParameters.add(new DBObject(7, 1, 12, oHrmTrngFacBean.getLastName())); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngFacBean.getExperience())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(11, 1, 12, null)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGFACMST.proc_UpsertHrFacMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "u")); + oParameters.add(new DBObject(2, 1, 12, oHrmTrngFacBean.getFacultyType())); + oParameters.add(new DBObject(3, 1, 12, oHrmTrngFacBean.getTrgFacMstEmpId())); + oParameters.add(new DBObject(4, 1, 12, oHrmTrngFacBean.getTrgFacMstInstCode())); + oParameters.add(new DBObject(5, 1, 12, oHrmTrngFacBean.getFirstName())); + oParameters.add(new DBObject(6, 1, 12, oHrmTrngFacBean.getMiddleName())); + oParameters.add(new DBObject(7, 1, 12, oHrmTrngFacBean.getLastName())); + oParameters.add(new DBObject(8, 1, 12, oHrmTrngFacBean.getExperience())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(11, 1, 12, oHrmTrngFacBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGFACMST.proc_UpsertHrFacMstHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oHrmTrngFacBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "HRMTRNGFACMST.proc_DeleteHrFacMstHdr(?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = null; + } + return returnString; + } + + private void checkMandatoryHeader(HrmTrngFacBean oHrmTrngFacBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTrngFacBean.getFacultyType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacMst.facultyType"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngFacBean.getEmployeeNo())) + if (oHrmTrngFacBean.getFacultyType().equals("I")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacMst.employeeNo"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngFacBean.getBaseInstitution())) + if (oHrmTrngFacBean.getFacultyType().equals("E")) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacMst.baseInstitution"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacFdbkBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacFdbkBO.java new file mode 100644 index 0000000..a929c1e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacFdbkBO.java @@ -0,0 +1,3 @@ +package wenrgise.hrms.ejb.business; + +public class HrmTrngFacFdbkBO {} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacTrngBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacTrngBO.java new file mode 100644 index 0000000..7561c3e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngFacTrngBO.java @@ -0,0 +1,545 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.ejb.business.HrmCommonBO; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngFacTrngDtlBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; + +public class HrmTrngFacTrngBO extends HrmBaseBO { + public HrmTrngFacTrngBO() {} + + public HrmTrngFacTrngBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmFacTrngHdrMetaInfo(HrmTrngFacTrngQVO oHrmTrngFacTrngQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + DateUtility d = new DateUtility(); + String oStr = oHrmTrngFacTrngQVO.getStartDate(); + String oStr1 = oHrmTrngFacTrngQVO.getEndDate(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngFacTrngQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngFacTrngQVO.getCalId())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngFacTrngQVO.getCourseId())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngFacTrngQVO.getSiteId())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oStr))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oStr1))); + arylstParameters.add(new DBObject(7, 2, -5)); + arylstParameters.add(new DBObject(8, 2, 93)); + arylstParameters.add(new DBObject(9, 2, 12)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMFACTRNGDTL.proc_HrFacTrngHdrCount(?,?,?,?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmFacTrngHeaderInfo(HrmTrngFacTrngQVO oHrmTrngFacTrngQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmTrngFacTrngQVO == null) + oHrmTrngFacTrngQVO = new HrmTrngFacTrngQVO(); + DateUtility d = new DateUtility(); + String oStr = oHrmTrngFacTrngQVO.getStartDate(); + String oStr1 = oHrmTrngFacTrngQVO.getEndDate(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngFacTrngQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngFacTrngQVO.getCalId())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngFacTrngQVO.getCourseId())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngFacTrngQVO.getSiteId())); + arylstParameters.add(new DBObject(7, 1, 93, EnrgiseUtil.convertToSqlDate(oStr))); + arylstParameters.add(new DBObject(8, 1, 93, EnrgiseUtil.convertToSqlDate(oStr1))); + arylstParameters.add(new DBObject(9, 2, -10)); + arylstParameters.add(new DBObject(10, 2, 12)); + arylstParameters.add(new DBObject(11, 2, 12)); + arylstParameters.add(new DBObject(12, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMFACTRNGDTL.proc_GetHrFacTrngHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngFacTrngHdrBean oFacTrngHeader = new HrmTrngFacTrngHdrBean(); + oFacTrngHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oFacTrngHeader.setCourseStatus(oRow.get("STATUS_FLAG").getString()); + oFacTrngHeader.setStartDate(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oFacTrngHeader.setEndDate(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oFacTrngHeader.setInstId(oRow.get("INSTID").getString()); + oFacTrngHeader.setInstitutionName(oRow.get("INST_NAME").getString()); + oFacTrngHeader.setCourseId(oRow.get("COURSEID").getString()); + oFacTrngHeader.setCourseName(oRow.get("CRS_NAME").getString()); + oFacTrngHeader.setCalId(oRow.get("CALID").getString()); + oFacTrngHeader.setCalendarName(oRow.get("CAL_NAME").getString()); + oFacTrngHeader.setSiteId(oRow.get("SITE_ID").getString()); + oFacTrngHeader.setSite(oRow.get("SITE_CODE").getString()); + oFacTrngHeader.setSiteName(oRow.get("SITE_NAME").getString()); + arylstHeaderList.add(oFacTrngHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmFacTrngDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMFACTRNGDTL.proc_HrFacTrngDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmFacTrngDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmFacTrngDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMFACTRNGDTL.proc_GetHrFacTrngDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmFacTrngDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngFacTrngDtlBean oFacTrngDetailBean = new HrmTrngFacTrngDtlBean(); + oFacTrngDetailBean.setDetailId(oRow.get("SRL_NO").getString()); + oFacTrngDetailBean.setTxtFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oFacTrngDetailBean.setFacultyId(oRow.get("hrm_facm_id").getString()); + oFacTrngDetailBean.setDisabbutFaculty("false"); + oFacTrngDetailBean.setTxtToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + oFacTrngDetailBean.setDisabbutTxtFromDate("false"); + oFacTrngDetailBean.setTxtStartTime(oRow.get("START_TIME").getString()); + oFacTrngDetailBean.setDisabbutTxtToDate("false"); + oFacTrngDetailBean.setTxtEndTime(oRow.get("END_TIME").getString()); + oFacTrngDetailBean.setTxtAverageRating(oRow.get("AVERAGE_RATING").getString()); + oFacTrngDetailBean.setTxtNameOfFaculty(oRow.get("FACULTY_NAME").getString()); + oFacTrngDetailBean.setTxtSkillArea(oRow.get("SKILL_AREA").getString()); + arylstHrmFacTrngDetail.add(oFacTrngDetailBean); + } + return arylstHrmFacTrngDetail; + } + + public ArrayList getHrFacTrngDetailByFacId(String sId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmFacTrngDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMFACTRNGDTL.proc_GetFacTrngByFacId(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmFacTrngDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngFacTrngDtlBean oFacTrngDetailBean = new HrmTrngFacTrngDtlBean(); + oFacTrngDetailBean.setDetailId(oRow.get("SRL_NO").getString()); + String datenewformat = formatter.format(oRow.get("FROM_DATE").getDate()); + oFacTrngDetailBean.setTxtFromDate(datenewformat); + String datenewformat1 = formatter.format(oRow.get("TO_DATE").getDate()); + oFacTrngDetailBean.setTxtToDate(datenewformat1); + oFacTrngDetailBean.setTxtStartTime(oRow.get("START_TIME").getString()); + oFacTrngDetailBean.setTxtEndTime(oRow.get("END_TIME").getString()); + oFacTrngDetailBean.setTxtAverageRating(oRow.get("AVERAGE_RATING").getString()); + oFacTrngDetailBean.setTxtNameOfFaculty(oRow.get("FACULTY_FIRST_NAME").getString()); + oFacTrngDetailBean.setTxtSkillArea(oRow.get("SKILL_AREA").getString()); + arylstHrmFacTrngDetail.add(oFacTrngDetailBean); + } + return arylstHrmFacTrngDetail; + } + + public ArrayList getHrFacTrngDetailByFacIdCalId(String sId, String sFacId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmFacTrngDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sId)); + arylstParameters.add(new DBObject(2, 1, 12, sFacId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMFACTRNGDTL.proc_GetFacTrngByCalFacId(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmFacTrngDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngFacTrngDtlBean oFacTrngDetailBean = new HrmTrngFacTrngDtlBean(); + oFacTrngDetailBean.setDetailId(oRow.get("SRL_NO").getString()); + String datenewformat = formatter.format(oRow.get("FROM_DATE").getDate()); + oFacTrngDetailBean.setTxtFromDate(datenewformat); + String datenewformat1 = formatter.format(oRow.get("TO_DATE").getDate()); + oFacTrngDetailBean.setTxtToDate(datenewformat1); + oFacTrngDetailBean.setTxtStartTime(oRow.get("START_TIME").getString()); + oFacTrngDetailBean.setTxtEndTime(oRow.get("END_TIME").getString()); + oFacTrngDetailBean.setTxtAverageRating(oRow.get("AVERAGE_RATING").getString()); + oFacTrngDetailBean.setTxtNameOfFaculty(oRow.get("FACULTY_FIRST_NAME").getString()); + oFacTrngDetailBean.setTxtSkillArea(oRow.get("SKILL_AREA").getString()); + arylstHrmFacTrngDetail.add(oFacTrngDetailBean); + } + return arylstHrmFacTrngDetail; + } + + public LovVO getHrmTrngFacultyLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Course Id"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.nameOfFaculty"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String instId = null; + String sId = null; + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) + sQuerySearch1 = oLovQueryVO.getSearchField1(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, instId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrngFacultyLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("FACULTY_NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TRNG_FAC_DTL"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstoDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmTrngFacTrngDtl")) + saveHrmFacTrngDetail(sHeaderPrimaryKey, arylstoDetailBeanArray); + } + + private void saveHrmFacTrngDetail(String sHeaderPrimaryKey, ArrayList arylstoDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstoDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmTrngFacTrngDtlBean oHrmTrngFacTrngDtlBean = itrBean.next(); + if (oHrmTrngFacTrngDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMFACTRNGDTL.proc_UpsertHrFacTrngDtl(?,?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngFacTrngDtlBean.getFacultyId())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngFacTrngDtlBean.getTxtFromDate()))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngFacTrngDtlBean.getTxtToDate()))); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTrngFacTrngDtlBean.getTxtStartTime())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTrngFacTrngDtlBean.getTxtEndTime())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngFacTrngDtlBean.getTxtSkillArea())); + arylstParameters.add(new DBObject(10, 1, 12, "100")); + arylstParameters.add(new DBObject(11, 1, 12, "100")); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmTrngFacTrngDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMFACTRNGDTL.proc_UpsertHrFacTrngDtl(?,?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngFacTrngDtlBean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngFacTrngDtlBean.getFacultyId())); + arylstParameters.add(new DBObject(5, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngFacTrngDtlBean.getTxtFromDate()))); + arylstParameters.add(new DBObject(6, 1, 93, EnrgiseUtil.convertToSqlDate(oHrmTrngFacTrngDtlBean.getTxtToDate()))); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTrngFacTrngDtlBean.getTxtStartTime())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTrngFacTrngDtlBean.getTxtEndTime())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngFacTrngDtlBean.getTxtSkillArea())); + arylstParameters.add(new DBObject(10, 1, 12, "100")); + arylstParameters.add(new DBObject(11, 1, 12, "100")); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmTrngFacTrngDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMFACTRNGDTL.proc_DeleteFacTrngDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngFacTrngDtlBean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstoDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmTrngFacTrngDtl")) { + Iterator itrBean1 = arylstoDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmTrngFacTrngDtlBean oHrmTrngFacTrngDtlBean = itrBean1.next(); + if (!oHrmTrngFacTrngDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oHrmTrngFacTrngDtlBean, rowCount); + } + rowCount++; + } + } + + private void checkMandatoryDtls(HrmTrngFacTrngDtlBean oHrmTrngFacTrngDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTrngFacTrngDtlBean.getTxtNameOfFaculty())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacTrngDtl.nameOfFaculty"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngFacTrngDtlBean.getTxtFromDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacTrngDtl.fromDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngFacTrngDtlBean.getTxtToDate())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacTrngDtl.toDate"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngFacTrngDtlBean.getTxtStartTime())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacTrngDtl.startTime"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngFacTrngDtlBean.getTxtEndTime())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacTrngDtl.endTime"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngFacTrngDtlBean.getTxtSkillArea())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmFacTrngDtl.skillArea"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + return "save"; + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstoDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstErrorList = new ArrayList(); + HrmTrngFacTrngHdrBean oHrmTrngFacTrngHdrBean = (HrmTrngFacTrngHdrBean)oBaseHeaderBean; + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkDatesConstraintForDtl(oHrmTrngFacTrngHdrBean, arylstoDetailBeanArray, arylstErrorList); + reportError(arylstErrorList); + } + + private void checkDatesConstraintForDtl(HrmTrngFacTrngHdrBean oHrmTrngFacTrngHdrBean, ArrayList arylstoDetailBeanArray, ArrayList arylstErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int n = arylstoDetailBeanArray.size(); + Iterator itrBean1 = arylstoDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmTrngFacTrngDtlBean oHrmTrngFacTrngDtlBean = itrBean1.next(); + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + checkTime(oHrmTrngFacTrngDtlBean, rowCount); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngFacTrngDtlBean.getTxtFromDate(), oHrmTrngFacTrngHdrBean.getStartDate()); + if (dateFlag == -1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.fromCrsDate.dateConstraintViolated")); + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngFacTrngDtlBean.getTxtFromDate(), oHrmTrngFacTrngHdrBean.getEndDate()); + if (dateFlag == 1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.fromCrsDate.dateConstraintViolated")); + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngFacTrngDtlBean.getTxtToDate(), oHrmTrngFacTrngHdrBean.getStartDate()); + if (dateFlag == -1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.toCrsDate.dateConstraintViolated")); + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngFacTrngDtlBean.getTxtToDate(), oHrmTrngFacTrngHdrBean.getEndDate()); + if (dateFlag == 1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.toCrsDate.dateConstraintViolated")); + dateFlag = EnrgiseUtil.compareDates(dateFormat, oHrmTrngFacTrngDtlBean.getTxtToDate(), oHrmTrngFacTrngDtlBean.getTxtFromDate()); + if (dateFlag == -1 && dateFlag != -2) + arylstErrorList.add(new EnrgiseApplicationException("wenrgise.toFromDate.dateConstraintViolated")); + rowCount++; + } + reportError(arylstErrorList); + } + + public void checkTime(HrmTrngFacTrngDtlBean oHrmTrngFacTrngDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + HrmCommonBO oHrmCommonBO = new HrmCommonBO(); + if (!oHrmCommonBO.checkTimeFormat(oHrmTrngFacTrngDtlBean.getTxtStartTime())) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.common.incorrectTimeFormat", oParams, "E"); + } + if (!oHrmCommonBO.checkTimeFormat(oHrmTrngFacTrngDtlBean.getTxtEndTime())) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.common.incorrectTimeFormat", oParams, "E"); + } + if (!oHrmCommonBO.checkTimeValue(oHrmTrngFacTrngDtlBean.getTxtStartTime())) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.common.incorrectTimeFormatHour", oParams, "E"); + } + if (!oHrmCommonBO.checkTimeValue(oHrmTrngFacTrngDtlBean.getTxtEndTime())) { + ArrayList oParams = new ArrayList(); + oParams.add(new Integer(rowCount)); + throw new EnrgiseApplicationException("hrm.common.incorrectTimeFormatHour", oParams, "E"); + } + reportError(oList); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngInsCrsBO.java b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngInsCrsBO.java new file mode 100644 index 0000000..8b1a348 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/business/HrmTrngInsCrsBO.java @@ -0,0 +1,755 @@ +package wenrgise.hrms.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DateUtility; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.bean.HrmTrngInsCrsDtlbean; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public class HrmTrngInsCrsBO extends HrmBaseBO { + public HrmTrngInsCrsBO() {} + + public HrmTrngInsCrsBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getHrmTrngInsCrsHdrMetaInfo(HrmTrngInsCrsQVO oHrmTrngInsCrsQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngInsCrsQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngInsCrsQVO.getInstituteCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngInsCrsQVO.getType())); + arylstParameters.add(new DBObject(4, 2, -5)); + arylstParameters.add(new DBObject(5, 2, 93)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGINSCRSDTL.proc_HrTrngInsCrsHdrCount(?,?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngInsCrsHeaderInfo(HrmTrngInsCrsQVO oHrmTrngInsCrsQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList arylstHeaderList = null; + if (oHrmTrngInsCrsQVO == null) + oHrmTrngInsCrsQVO = new HrmTrngInsCrsQVO(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngInsCrsQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngInsCrsQVO.getInstituteCode())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngInsCrsQVO.getType())); + arylstParameters.add(new DBObject(6, 2, -10)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 12)); + arylstParameters.add(new DBObject(9, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGINSCRSDTL.proc_GetHrTrngInsCrs(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHeaderList = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngInsCrsHdrBean oTrngInsCrsHeader = new HrmTrngInsCrsHdrBean(); + oTrngInsCrsHeader.setHeaderPrimaryKey(oRow.get("ID").getString()); + oTrngInsCrsHeader.setInstituteCode(oRow.get("INST_CODE").getString()); + oTrngInsCrsHeader.setInstituteName(oRow.get("INST_NAME").getString()); + oTrngInsCrsHeader.setType(oRow.get("TYPE_TYPE").getString()); + oTrngInsCrsHeader.setInCharge(oRow.get("IN_CHARGE").getString()); + oTrngInsCrsHeader.setAddress(oRow.get("ADDRESS").getString()); + oTrngInsCrsHeader.setPin(oRow.get("PIN").getString()); + oTrngInsCrsHeader.setTrgInstCityId(oRow.get("CITY_ID").getString()); + oTrngInsCrsHeader.setTrgInstCountryId(oRow.get("COUNTRY_ID").getString()); + oTrngInsCrsHeader.setCountry(oRow.get("CON_NAME").getString()); + oTrngInsCrsHeader.setCity(oRow.get("CITY_NAME").getString()); + oTrngInsCrsHeader.setState(oRow.get("STATE").getString()); + oTrngInsCrsHeader.setPhone(oRow.get("PHONE").getString()); + oTrngInsCrsHeader.setFax(oRow.get("FAX").getString()); + oTrngInsCrsHeader.setEmail(oRow.get("EMAIL").getString()); + arylstHeaderList.add(oTrngInsCrsHeader); + } + return arylstHeaderList; + } + + public RecordMetaInfo getHrmTrngInsCrsDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(2, 2, -5)); + arylstParameters.add(new DBObject(3, 2, 93)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGINSCRSDTL.proc_HrTrngInsCrsDtlCount(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = arylstOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return oRecordMetaInfo; + } + + public ArrayList getHrmTrngInsCrsDetail(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseDetailVO oBaseDetailVO = null; + ArrayList arylstHrmTrngInsCrsDetail = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lDetailFirstPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGINSCRSDTL.proc_GetTrngInsCrsDtl(?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator itrBean = arylstList.iterator(); + while (itrBean.hasNext()) { + if (count == 0) + arylstHrmTrngInsCrsDetail = new ArrayList(); + count++; + oRow = itrBean.next(); + HrmTrngInsCrsDtlbean oTrngInsCrsDetailBean = new HrmTrngInsCrsDtlbean(); + oTrngInsCrsDetailBean.setDetailId(oRow.get("Id").getString()); + oTrngInsCrsDetailBean.setCourseId(oRow.get("trn_corsms_id").getString()); + oTrngInsCrsDetailBean.setTxtCourse(oRow.get("COURSE").getString()); + oTrngInsCrsDetailBean.setTxtCourseName(oRow.get("NAME").getString()); + arylstHrmTrngInsCrsDetail.add(oTrngInsCrsDetailBean); + } + return arylstHrmTrngInsCrsDetail; + } + + public LovVO getHrmTrgInstCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Institute Id"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.instituteCode"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.instituteName"); + arylstHeaderList.add("Type"); + arylstHeaderList.add("In-Charge"); + arylstHeaderList.add("Address"); + arylstHeaderList.add("PIN"); + arylstHeaderList.add("City"); + arylstHeaderList.add("State"); + arylstHeaderList.add("Country"); + arylstHeaderList.add("Phone"); + arylstHeaderList.add("Fax"); + arylstHeaderList.add("Email"); + arylstHeaderList.add("CityId"); + arylstHeaderList.add("CountryId"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetInstCodeQmode(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("INST_CODE").getString()); + oLOVBean.setDetailField3(oRow.get("INST_NAME").getString()); + oLOVBean.setDetailField4(oRow.get("TYPE_TYPE").getString()); + oLOVBean.setDetailField5(oRow.get("IN_CHARGE").getString()); + oLOVBean.setDetailField6(oRow.get("ADDRESS").getString()); + oLOVBean.setDetailField7(oRow.get("COUNTRY_NAME").getString()); + oLOVBean.setDetailField8(oRow.get("CITY_NAME").getString()); + oLOVBean.setDetailField9(oRow.get("STATE").getString()); + oLOVBean.setDetailField10(oRow.get("PIN").getString()); + oLOVBean.setDetailField11(oRow.get("PHONE").getString()); + oLOVBean.setDetailField12(oRow.get("FAX").getString()); + oLOVBean.setDetailField13(oRow.get("EMAIL").getString()); + oLOVBean.setDetailField14(oRow.get("CITY_ID").getString()); + oLOVBean.setDetailField15(oRow.get("COUNTRY_ID").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrgCountryCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Country Id"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.country"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 2, -10)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrgCountryLOVQmode(?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("COUNTRY_ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrgCityCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("City Id"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.city"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String countryId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getProperty("trgInstCountryId") != null) { + countryId = oLovQueryVO.getProperty("trgInstCountryId"); + System.out.println(countryId); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, countryId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrgCityLOVQmode(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("CITY_ID").getString()); + oLOVBean.setDetailField2(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrgCourseLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderList = new ArrayList(); + arylstHeaderList.add("Course Id"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.course"); + arylstHeaderList.add("hrm.HrmTrnInCoDtl.courseName"); + oLovVO.setHeaderList(arylstHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + String countryId = null; + String calId = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrgCourseLOV(?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("COURSE").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public LovVO getHrmTrngCrsInsNameLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + LovVO oLovVO = new LovVO(); + ArrayList arylstHeaderNames = new ArrayList(); + arylstHeaderNames.add("Course Id"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.calendarName"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.courseName"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.institutionName"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.startDate"); + arylstHeaderNames.add("hrm.HrmFacTrngDtl.endDate"); + arylstHeaderNames.add("Institute Id"); + arylstHeaderNames.add("Status Flag"); + oLovVO.setHeaderList(arylstHeaderNames); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + ArrayList arylstParameters = new ArrayList(); + String calId = null; + String sId = null; + String sQuerySearch1 = new String(); + String sQuerySearch2 = new String(); + if (oLovQueryVO.getSearchField1() != null) { + sQuerySearch1 = oLovQueryVO.getSearchField1(); + System.out.println(sQuerySearch1); + } + if (oLovQueryVO.getSearchField2() != null) { + sQuerySearch2 = oLovQueryVO.getSearchField2(); + System.out.println(sQuerySearch2); + } + if (oLovQueryVO.getProperty("calId") != null) { + calId = oLovQueryVO.getProperty("calId"); + System.out.println(calId); + } + if (oLovQueryVO.getProperty("siteId") != null) { + sId = oLovQueryVO.getProperty("siteId"); + System.out.println(sId); + } + DBUtilitiesBean oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sQuerySearch1)); + arylstParameters.add(new DBObject(2, 1, 12, sQuerySearch2)); + arylstParameters.add(new DBObject(3, 1, 12, calId)); + arylstParameters.add(new DBObject(4, 1, 12, sId)); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGLOV.proc_GetTrngCrsInsLOV(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)oOutObject.getObject(); + QueryRow oRow = null; + Iterator iter = arylstList.iterator(); + while (iter.hasNext()) { + if (count == 0) + arylstList = new ArrayList(); + count++; + oRow = iter.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("CAL_NAME").getString()); + oLOVBean.setDetailField3(oRow.get("NAME").getString()); + oLOVBean.setDetailField4(oRow.get("INST_NAME").getString()); + oLOVBean.setDetailField5(EnrgiseUtil.convertToString(oRow.get("START_DATE").getDate())); + oLOVBean.setDetailField6(EnrgiseUtil.convertToString(oRow.get("END_DATE").getDate())); + oLOVBean.setDetailField7(oRow.get("InstId").getString()); + oLOVBean.setDetailField8(oRow.get("STATUS_FLAG").getString()); + arylstList.add(oLOVBean); + } + oLovVO.setDetailList(arylstList); + return oLovVO; + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update ille!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader((HrmTrngInsCrsHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("HrmTrngInstCourseDtl")) { + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + int rowCount = 1; + while (itrBean1.hasNext()) { + HrmTrngInsCrsDtlbean oHrmTrngInsCrsDtlbean = itrBean1.next(); + if (!oHrmTrngInsCrsDtlbean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryDtls(oHrmTrngInsCrsDtlbean, rowCount); + EnrgiseUtil.checkDuplicate(arylstDetailBeanArray, "txtCourse", "hrm.HrmTrnInCoDtl.course", arylstList, true); + } + } + rowCount++; + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList arylstDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstList = new ArrayList(); + if (bDetailDataChanged) { + HrmTrngInsCrsHdrBean oHrmTrngInsCrsHdrBean = (HrmTrngInsCrsHdrBean)oBaseHeaderBean; + Iterator itrBean = arylstDetailBeanArray.iterator(); + String sHeaderPrimaryKey = oHrmTrngInsCrsHdrBean.getHeaderPrimaryKey(); + while (itrBean.hasNext()) { + HrmTrngInsCrsDtlbean oHrmTrngInsCrsDtlbean = itrBean.next(); + if (!oHrmTrngInsCrsDtlbean.getStatus().equals("D")) + checkUniqueDtl(sHeaderPrimaryKey, arylstDetailBeanArray); + if (oHrmTrngInsCrsDtlbean.getStatus().equals("D")) { + String sQuery = String.valueOf(String.valueOf(String.valueOf("select count(*) as checkExist from HRM_TRNG_CAL_DTL where trng_instms_id= ").concat(String.valueOf(oHrmTrngInsCrsHdrBean.getHeaderPrimaryKey()))).concat(String.valueOf(" and trng_corsms_id="))).concat(String.valueOf(oHrmTrngInsCrsDtlbean.getCourseId())); + DBUtilitiesBean oBean3 = new DBUtilitiesBean(); + ArrayList arylstList1 = oBean3.executeQuery(sQuery); + Iterator itrBean1 = arylstList1.iterator(); + String chExist = null; + if (itrBean1.hasNext()) { + QueryRow oRow = itrBean1.next(); + chExist = oRow.get("checkExist").getString(); + System.out.println(chExist); + } + if (!chExist.equalsIgnoreCase("0")) + arylstList.add(new EnrgiseApplicationException("wenrgise.trngCal.error.empApplied")); + } + } + } + reportError(arylstList); + } + + private void checkMandatoryHeader(HrmTrngInsCrsHdrBean oHrmTrngInsCrsHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsHdrBean.getInstituteCode())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.instituteCode"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsHdrBean.getInstituteName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.instituteName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsHdrBean.getType())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.type"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsHdrBean.getAddress())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.address"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsHdrBean.getCountry())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.country"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsHdrBean.getPin())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.pin"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryDtls(HrmTrngInsCrsDtlbean oHrmTrngInsCrsDtlbean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + ArrayList oParams = new ArrayList(); + rowCount++; + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsDtlbean.getTxtCourse())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.course"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + if (!EnrgiseUtil.checkString(oHrmTrngInsCrsDtlbean.getTxtCourseName())) { + MessageKey oMessageKey = new MessageKey("hrm.HrmTrnInCoDtl.courseName"); + oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(String.valueOf(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E")); + } + reportError(oErrorList); + } + + public void initializeBOImpl() { + this.headerTable = "HRM_TRNG_INST_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + DateUtility d = new DateUtility(); + HrmTrngInsCrsHdrBean oHrmTrngInsCrsHdrBean = (HrmTrngInsCrsHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "i")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngInsCrsHdrBean.getInstituteCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngInsCrsHdrBean.getInstituteName())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngInsCrsHdrBean.getType())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngInsCrsHdrBean.getInCharge())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngInsCrsHdrBean.getAddress())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTrngInsCrsHdrBean.getTrgInstCountryId())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTrngInsCrsHdrBean.getTrgInstCityId())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngInsCrsHdrBean.getState())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmTrngInsCrsHdrBean.getPin())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmTrngInsCrsHdrBean.getPhone())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTrngInsCrsHdrBean.getEmail())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmTrngInsCrsHdrBean.getFax())); + arylstParameters.add(new DBObject(14, 1, 12, "100")); + arylstParameters.add(new DBObject(15, 1, 12, "100")); + arylstParameters.add(new DBObject(16, 1, 12, null)); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGINSCRSDTL.proc_UpsertHrTrngInsHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } else if (ScreenMode.equalsIgnoreCase("U")) { + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "u")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngInsCrsHdrBean.getInstituteCode())); + arylstParameters.add(new DBObject(3, 1, 12, oHrmTrngInsCrsHdrBean.getInstituteName())); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngInsCrsHdrBean.getType())); + arylstParameters.add(new DBObject(5, 1, 12, oHrmTrngInsCrsHdrBean.getInCharge())); + arylstParameters.add(new DBObject(6, 1, 12, oHrmTrngInsCrsHdrBean.getAddress())); + arylstParameters.add(new DBObject(7, 1, 12, oHrmTrngInsCrsHdrBean.getTrgInstCountryId())); + arylstParameters.add(new DBObject(8, 1, 12, oHrmTrngInsCrsHdrBean.getTrgInstCityId())); + arylstParameters.add(new DBObject(9, 1, 12, oHrmTrngInsCrsHdrBean.getState())); + arylstParameters.add(new DBObject(10, 1, 12, oHrmTrngInsCrsHdrBean.getPin())); + arylstParameters.add(new DBObject(11, 1, 12, oHrmTrngInsCrsHdrBean.getPhone())); + arylstParameters.add(new DBObject(12, 1, 12, oHrmTrngInsCrsHdrBean.getEmail())); + arylstParameters.add(new DBObject(13, 1, 12, oHrmTrngInsCrsHdrBean.getFax())); + arylstParameters.add(new DBObject(14, 1, 12, "100")); + arylstParameters.add(new DBObject(15, 1, 12, "100")); + arylstParameters.add(new DBObject(16, 1, 12, oHrmTrngInsCrsHdrBean.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(17, 2, 12)); + arylstParameters.add(new DBObject(18, 2, 12)); + arylstParameters.add(new DBObject(19, 2, 12)); + arylstParameters.add(new DBObject(20, 2, 4)); + ArrayList arylstOutArray = oBean.callProc(arylstParameters, "HRMTRNGINSCRSDTL.proc_UpsertHrTrngInsHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = arylstOutArray.get(0); + returnString = (String)oOutObject.getObject(); + System.out.println(returnString); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmTrngInstCourseDtl")) + saveHrmTrngInsDetail(sHeaderPrimaryKey, arylstDetailBeanArray); + } + + private void saveHrmTrngInsDetail(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator itrBean = arylstDetailBeanArray.iterator(); + while (itrBean.hasNext()) { + HrmTrngInsCrsDtlbean oHrmTrngInsCrsDtlbean = itrBean.next(); + if (oHrmTrngInsCrsDtlbean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGINSCRSDTL.proc_UpsertHrTrngInst(?,?,?,?,?,?)"); + bInsert = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "I")); + arylstParameters.add(new DBObject(2, 1, 12, null)); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngInsCrsDtlbean.getCourseId())); + arylstParameters.add(new DBObject(5, 1, 12, "200")); + arylstParameters.add(new DBObject(6, 1, 12, "200")); + System.out.println(oHrmTrngInsCrsDtlbean.getTxtCourseName()); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmTrngInsCrsDtlbean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("HRMTRNGINSCRSDTL.proc_UpsertHrTrngInst(?,?,?,?,?,?)"); + bUpdate = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, "U")); + arylstParameters.add(new DBObject(2, 1, 12, oHrmTrngInsCrsDtlbean.getDetailId())); + arylstParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + arylstParameters.add(new DBObject(4, 1, 12, oHrmTrngInsCrsDtlbean.getCourseId())); + arylstParameters.add(new DBObject(5, 1, 12, "200")); + arylstParameters.add(new DBObject(6, 1, 12, "200")); + oBean.addToBatch(arylstParameters); + continue; + } + if (oHrmTrngInsCrsDtlbean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("HRMTRNGINSCRSDTL.proc_DeleteTrngInstDtl(?)"); + bDelete = true; + } + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oHrmTrngInsCrsDtlbean.getDetailId())); + oBean1.addToBatch(arylstParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void checkUniqueDtl(String sHeaderPrimaryKey, ArrayList arylstDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + Iterator itrBean1 = arylstDetailBeanArray.iterator(); + while (itrBean1.hasNext()) { + HrmTrngInsCrsDtlbean oHrmTrngInsCrsDtlbean = itrBean1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select a.ID as ID from HRM_TRNG_INST_CRS_MAP a,HRM_TRNG_CRS_MST b where a.trn_corsms_id=b.id and b.course= '").concat(String.valueOf(oHrmTrngInsCrsDtlbean.getTxtCourse()))).concat(String.valueOf("' and a.trn_instms_id ="))).concat(String.valueOf(sHeaderPrimaryKey)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList arylstList = oBean.executeQuery(sQuery); + Iterator itrBean = arylstList.iterator(); + if (itrBean.hasNext()) { + QueryRow oRow = itrBean.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oHrmTrngInsCrsDtlbean.getDetailId())) + throw new EnrgiseApplicationException("wenrgise.common.uniqueConstraintViolated", "M"); + } + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeBean.java new file mode 100644 index 0000000..b5d3caf --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeBean.java @@ -0,0 +1,345 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.ejb.business.HrmAdvApplnBO; +import wenrgise.hrms.ejb.business.HrmAdvMstBO; +import wenrgise.hrms.ejb.business.HrmAdvSettleBO; +import wenrgise.hrms.ejb.business.HrmAdvSettleHeadsBO; +import wenrgise.hrms.ejb.business.HrmAdvSettlementBO; +import wenrgise.hrms.ejb.business.HrmClaimMstBO; +import wenrgise.hrms.ejb.business.HrmEmpClaimBO; +import wenrgise.hrms.ejb.business.HrmReportBO; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; +import wenrgise.hrms.vo.HrmAdvSettleQVO; +import wenrgise.hrms.vo.HrmClaimMstQVO; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; +import wenrgise.hrms.vo.HrmEmpClaimQVO; +import wenrgise.hrms.vo.HrmSettleQueryVO; + +public class HrmAdvanceClaimFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmAdvMstHeaderMetaInfo(HrmAdvMstQueryVO oHrmAdvMstQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmAdvanceMstHdrMetaInfo(oHrmAdvMstQueryVO); + } + + public ArrayList getHrmAdvMstHeader(HrmAdvMstQueryVO oHrmAdvMstQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmAdvanceMstHdrInfo(oHrmAdvMstQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAdvDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmAdvanceMstDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAdvDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmAdvanceMstDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmCurAdvDetail() throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmCurAdvMstDetailInfo(); + } + + public LovVO getHrmAdvMstCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmAdvMstCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmSettleHeadsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmSettleHeadsLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvMstCodeInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmAdvMstCodeInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvMstCalendarCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + return oHrmAdvMstBO.getHrmAdvMstCalendarCodeLOVdata(oLovQueryVO); + } + + public String saveData(HrmAdvanceMstHdrBean oHrmAdvanceMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(oUserInfo); + return oHrmAdvMstBO.saveData((BaseHeaderBean)oHrmAdvanceMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String saveAdvSetData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAdvSettleBO oHrmAdvSettleBO = new HrmAdvSettleBO(oUserInfo); + return oHrmAdvSettleBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public void updateAdvanceMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvMstBO oHrmAdvMstBO = new HrmAdvMstBO(); + oHrmAdvMstBO.updateAdvanceMst(sSql, sId, sUserId, sUserSiteId); + } + + public RecordMetaInfo getHrmAdvSetHeaderMetaInfo(HrmSettleQueryVO oHrmSettleQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettleBO oHrmAdvSettleBO = new HrmAdvSettleBO(); + return oHrmAdvSettleBO.getHrmAdvanceSetHdrMetaInfo(oHrmSettleQueryVO); + } + + public ArrayList getHrmAdvSetHeader(HrmSettleQueryVO oHrmSettleQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettleBO oHrmAdvSettleBO = new HrmAdvSettleBO(); + return oHrmAdvSettleBO.getHrmAdvanceSetHdrInfo(oHrmSettleQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAdvSetDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettleBO oHrmAdvSettleBO = new HrmAdvSettleBO(); + return oHrmAdvSettleBO.getHrmAdvanceSetDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAdvSetDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettleBO oHrmAdvSettleBO = new HrmAdvSettleBO(); + return oHrmAdvSettleBO.getHrmAdvanceSetDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpAdvAppHeaderMetaInfo(HrmEmpAdvAppQueryVO oHrmEmpAdvAppQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmAdvApplnBO = new HrmAdvApplnBO(); + return oHrmAdvApplnBO.getEmpAdvAppHdrMetaInfo(oHrmEmpAdvAppQueryVO); + } + + public ArrayList getHrmEmpAdvAppHeader(HrmEmpAdvAppQueryVO oHrmEmpAdvAppQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmAdvApplnBO = new HrmAdvApplnBO(); + return oHrmAdvApplnBO.getEmpAdvAppHeader(oHrmEmpAdvAppQueryVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmAdvAppAdvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmAdvApplnBO = new HrmAdvApplnBO(); + return oHrmAdvApplnBO.getHrmAdvAppAdvCdLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvAppAdvCdInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmAdvApplnBO = new HrmAdvApplnBO(); + return oHrmAdvApplnBO.getHrmAdvAppAdvCdInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvAppAdvEligLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmAdvApplnBO = new HrmAdvApplnBO(); + return oHrmAdvApplnBO.getHrmAdvAppAdvEligLOVdata(oLovQueryVO); + } + + public String saveData(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmAdvApplnBO = new HrmAdvApplnBO(oUserInfo); + return oHrmAdvApplnBO.saveData((BaseHeaderBean)oHrmEmpAdvAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String advAppBulkSettlePayment(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmAdvApplnBO = new HrmAdvApplnBO(oUserInfo); + return oHrmEmpAdvAppHdrBean.getHeaderPrimaryKey(); + } + + public RecordMetaInfo getHrmAdvSettlementHdrMetaInfo(HrmAdvSettleQVO oHrmAdvSettleQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettlementBO oHrmAdvSettlementBO = new HrmAdvSettlementBO(); + return oHrmAdvSettlementBO.getHrmAdvSettlementHdrMetaInfo(oHrmAdvSettleQVO); + } + + public ArrayList getHrmAdvSettlementHeader(HrmAdvSettleQVO oHrmAdvSettleQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettlementBO oHrmAdvSettlementBO = new HrmAdvSettlementBO(); + return oHrmAdvSettlementBO.getHrmAdvSettlementHeader(oHrmAdvSettleQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmAdvSettleAdvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettlementBO oHrmAdvSettlementBO = new HrmAdvSettlementBO(); + return oHrmAdvSettlementBO.getHrmAdvSettleAdvCdLOVdata(oLovQueryVO); + } + + public String saveData(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettlementBO oHrmAdvSettlementBO = new HrmAdvSettlementBO(oUserInfo); + return oHrmAdvSettlementBO.saveData((BaseHeaderBean)oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String approveAdvSettlement(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAdvSettlementBO oHrmAdvSettlementBO = new HrmAdvSettlementBO(oUserInfo); + return oHrmAdvSettlementBO.approveAdvSettlement((BaseHeaderBean)oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectAdvSettlement(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAdvSettlementBO oHrmAdvSettlementBO = new HrmAdvSettlementBO(oUserInfo); + return oHrmAdvSettlementBO.rejectAdvSettlement((BaseHeaderBean)oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String submitAdvSettlement(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAdvSettlementBO oHrmAdvSettlementBO = new HrmAdvSettlementBO(oUserInfo); + return oHrmAdvSettlementBO.submitAdvSettlement((BaseHeaderBean)oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrAdvSettleHeadsDetailMetaInfo(HrmAdvSettleHeadsQVO oHrmAdvSettleHeadsQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettleHeadsBO oHrmAdvSettleHeadsBO = new HrmAdvSettleHeadsBO(); + return oHrmAdvSettleHeadsBO.getHrAdvSettleHeadsDetailMetaInfo(oHrmAdvSettleHeadsQVO); + } + + public ArrayList getHrAdvSettleHeadsDetail(HrmAdvSettleHeadsQVO oHrmAdvSettleHeadsQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettleHeadsBO oHrmAdvSettleHeadsBO = new HrmAdvSettleHeadsBO(); + return oHrmAdvSettleHeadsBO.getHrAdvSettleHeadsDetail(oHrmAdvSettleHeadsQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmAdvSettleHds(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvSettleHeadsBO oHrmAdvSettleHeadsBO = new HrmAdvSettleHeadsBO(oUserInfo); + return oHrmAdvSettleHeadsBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmClaimMstHdrMetaInfo(HrmClaimMstQVO oHrmClaimMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmClaimMstBO oHrmClaimMstBO = new HrmClaimMstBO(); + return oHrmClaimMstBO.getHrmClaimMstHdrMetaInfo(oHrmClaimMstQVO); + } + + public ArrayList getHrmClaimMstHdrInfo(HrmClaimMstQVO oHrmClaimMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmClaimMstBO oHrmClaimMstBO = new HrmClaimMstBO(); + return oHrmClaimMstBO.getHrmClaimMstHdrInfo(oHrmClaimMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmClaimMstDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmClaimMstBO oHrmClaimMstBO = new HrmClaimMstBO(); + return oHrmClaimMstBO.getHrmClaimMstDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmClaimMstDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmClaimMstBO oHrmClaimMstBO = new HrmClaimMstBO(); + return oHrmClaimMstBO.getHrmClaimMstDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmClaimMstHdrBean oHrmClaimMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmClaimMstBO oHrmClaimMstBO = new HrmClaimMstBO(oUserInfo); + return oHrmClaimMstBO.saveData((BaseHeaderBean)oHrmClaimMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmClaimCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmClaimMstBO oHrmClaimMstBO = new HrmClaimMstBO(); + return oHrmClaimMstBO.getHrmClaimCodeLOVdata(oLovQueryVO); + } + + public void updateClaimMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmClaimMstBO oHrmClaimMstBO = new HrmClaimMstBO(); + oHrmClaimMstBO.updateClaimMst(sSql, sId, sUserId, sUserSiteId); + } + + public RecordMetaInfo getHrmEmpClaimDtlMetaInfo(HrmEmpClaimQVO oHrmEmpClaimQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(); + return oHrmEmpClaimBO.getHrmEmpClaimDetailMetaInfo(oHrmEmpClaimQVO); + } + + public ArrayList getHrmEmpClaimDetailInfo(HrmEmpClaimQVO oHrmEmpClaimQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(); + return oHrmEmpClaimBO.getHrmEmpClaimDetail(oHrmEmpClaimQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmEmpClaim(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(oUserInfo); + return oHrmEmpClaimBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmEmpClaimEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(); + return oHrmEmpClaimBO.getHrmEmpClaimEmpLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpClaimCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(); + return oHrmEmpClaimBO.getHrmEmpClaimCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpClaimNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(); + return oHrmEmpClaimBO.getHrmEmpClaimNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(); + return oHrmEmpClaimBO.getHrmEmpClaimEmpLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvAppEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmLnAppBO = new HrmAdvApplnBO(); + LovVO oLovVO = oHrmLnAppBO.getHrmAdvAppEmpNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAdvAppInsEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvApplnBO oHrmLnAppBO = new HrmAdvApplnBO(); + LovVO oLovVO = oHrmLnAppBO.getHrmAdvAppInsEmpNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpClaimDtlCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpClaimBO oHrmEmpClaimBO = new HrmEmpClaimBO(); + LovVO oLovVO = oHrmEmpClaimBO.getHrmEmpClaimDtlCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getYYMMReportLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmReportBO oHrmReportBO = new HrmReportBO(); + LovVO oLovVO = oHrmReportBO.getYYMMReportLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getDesigIdReportLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmReportBO oHrmReportBO = new HrmReportBO(); + LovVO oLovVO = oHrmReportBO.getDesigIdReportLOVData(oLovQueryVO); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocal.java new file mode 100644 index 0000000..8803662 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocal.java @@ -0,0 +1,129 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; +import wenrgise.hrms.vo.HrmAdvSettleQVO; +import wenrgise.hrms.vo.HrmClaimMstQVO; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; +import wenrgise.hrms.vo.HrmEmpClaimQVO; +import wenrgise.hrms.vo.HrmSettleQueryVO; + +public interface HrmAdvanceClaimFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmAdvMstHeaderMetaInfo(HrmAdvMstQueryVO paramHrmAdvMstQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvMstHeader(HrmAdvMstQueryVO paramHrmAdvMstQueryVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurAdvDetail() throws EnrgiseApplicationException, EnrgiseSystemException; + + void updateAdvanceMst(String paramString1, String paramString2, String paramString3, String paramString4) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCalendarCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCodeInsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAdvanceMstHdrBean paramHrmAdvanceMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSettleHeadsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSetHeaderMetaInfo(HrmSettleQueryVO paramHrmSettleQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSetHeader(HrmSettleQueryVO paramHrmSettleQueryVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSetDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSetDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveAdvSetData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAdvAppHeaderMetaInfo(HrmEmpAdvAppQueryVO paramHrmEmpAdvAppQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAdvAppHeader(HrmEmpAdvAppQueryVO paramHrmEmpAdvAppQueryVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppAdvCdLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmEmpAdvAppHdrBean paramHrmEmpAdvAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppAdvCdInsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppAdvEligLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClaimMstHdrMetaInfo(HrmClaimMstQVO paramHrmClaimMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClaimMstHdrInfo(HrmClaimMstQVO paramHrmClaimMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClaimMstDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClaimMstDtlInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmClaimMstHdrBean paramHrmClaimMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + void updateClaimMst(String paramString1, String paramString2, String paramString3, String paramString4) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClaimCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSettlementHdrMetaInfo(HrmAdvSettleQVO paramHrmAdvSettleQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSettlementHeader(HrmAdvSettleQVO paramHrmAdvSettleQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvSettleAdvCdLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrAdvSettleHeadsDetailMetaInfo(HrmAdvSettleHeadsQVO paramHrmAdvSettleHeadsQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAdvSettleHeadsDetail(HrmAdvSettleHeadsQVO paramHrmAdvSettleHeadsQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAdvSettleHds(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpClaimDtlMetaInfo(HrmEmpClaimQVO paramHrmEmpClaimQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpClaimDetailInfo(HrmEmpClaimQVO paramHrmEmpClaimQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpClaim(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimEmpLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppInsEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimDtlCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String advAppBulkSettlePayment(HrmEmpAdvAppHdrBean paramHrmEmpAdvAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getYYMMReportLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getDesigIdReportLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocalHome.java new file mode 100644 index 0000000..3f0b08d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAdvanceClaimFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmAdvanceClaimFacadeLocalHome extends EJBLocalHome { + HrmAdvanceClaimFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeBean.java new file mode 100644 index 0000000..2e3d39c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeBean.java @@ -0,0 +1,639 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.ejb.business.HrmATDDptnApplBO; +import wenrgise.hrms.ejb.business.HrmATDDptnChrgRptBO; +import wenrgise.hrms.ejb.business.HrmATDDptnOrderForSingleEmpBO; +import wenrgise.hrms.ejb.business.HrmATDTransApplBO; +import wenrgise.hrms.ejb.business.HrmATDTransChrgRptBO; +import wenrgise.hrms.ejb.business.HrmATDTransCnclApplBO; +import wenrgise.hrms.ejb.business.HrmATDTransCnclOrderForSingleEmpBO; +import wenrgise.hrms.ejb.business.HrmATDTransOrderForSingleEmpBO; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransApplQVO; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; + +public class HrmAllocationTransferDeputationFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmTransSingleEmpRecordMetaInfo(HrmATDTransSingleEmpQVO oHrmATDTransSingleEmpQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransOrderForSingleEmpBO.getHrmTransSingleEmpRecordMetaInfo(oHrmATDTransSingleEmpQVO); + } + + public ArrayList getHrmTransSingleEmpHeaderInfo(HrmATDTransSingleEmpQVO oHrmATDTransSingleEmpQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransOrderForSingleEmpBO.getHrmTransSingleEmpHeaderInfo(oHrmATDTransSingleEmpQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmTransOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(); + return oHrmATDTransOrderForSingleEmpBO.getHrmTransOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTransAplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(); + return oHrmATDTransOrderForSingleEmpBO.getHrmTransAplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmToSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(); + return oHrmATDTransOrderForSingleEmpBO.getHrmToSiteCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmToWorkGroupLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(); + return oHrmATDTransOrderForSingleEmpBO.getHrmToSiteCodeLOVdata(oLovQueryVO); + } + + public String saveData(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransOrderForSingleEmpBO.saveData((BaseHeaderBean)oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String approveTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransOrderForSingleEmpBO.approveTranOrderSingleEmp((BaseHeaderBean)oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransOrderForSingleEmpBO.rejectTranOrderSingleEmp((BaseHeaderBean)oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String submitTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransOrderForSingleEmpBO.submitTranOrderSingleEmp((BaseHeaderBean)oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmTransReptEmpNoLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(); + return oHrmATDTransOrderForSingleEmpBO.getHrmTransReptEmpNoLOV(oLovQueryVO); + } + + public LovVO getHrmChgRepEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(); + return oHrmATDTransChrgRptBO.getHrmChgRepEmpLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrEmpTransAppHeaderMetaInfo(HrmATDTransApplQVO oHrmATDTransApplQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(oUserInfo); + return oHrmATDTransApplBO.getHrmEmpTransAppHdrMetaInfo(oHrmATDTransApplQVO); + } + + public ArrayList getHrEmpTransAppHeader(HrmATDTransApplQVO oHrmATDTransApplQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(oUserInfo); + return oHrmATDTransApplBO.getHrmEmpTransAppHeaderInfo(oHrmATDTransApplQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmTrnApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnOfcNoteNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnOfcNoteNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnDesignationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnDesignationLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnWorkgroupLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnWorkgroupLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnEmpNoInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnEmpNoInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnSite1LOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnSite1LOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnSite2LOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnSite2LOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnSite3LOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(); + return oHrmATDTransApplBO.getHrmTrnSite3LOVdata(oLovQueryVO); + } + + public String saveData(HrmTransferApplicationHdrBean oHrmTransferApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransApplBO oHrmATDTransApplBO = new HrmATDTransApplBO(oUserInfo); + return oHrmATDTransApplBO.saveData((BaseHeaderBean)oHrmTransferApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrChargeRepHeaderMetaInfo(HrmATDTransChrgRptQVO oHrmATDTransChrgRptQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(oUserInfo); + return oHrmATDTransChrgRptBO.getHrmChargeRepHdrMetaInfo(oHrmATDTransChrgRptQVO); + } + + public ArrayList getHrChargeRepHeader(HrmATDTransChrgRptQVO oHrmATDTransChrgRptQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(oUserInfo); + return oHrmATDTransChrgRptBO.getHrmChargeRepHeaderInfo(oHrmATDTransChrgRptQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmChrgOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(); + return oHrmATDTransChrgRptBO.getHrmChrgOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmChrgOrderNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(); + return oHrmATDTransChrgRptBO.getHrmChrgOrderNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmChrgCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(); + return oHrmATDTransChrgRptBO.getHrmChrgCodeLOVdata(oLovQueryVO); + } + + public String saveData(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(oUserInfo); + return oHrmATDTransChrgRptBO.saveData((BaseHeaderBean)oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String approveTranChrgRpt(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(oUserInfo); + return oHrmATDTransChrgRptBO.approveTranChrgRpt((BaseHeaderBean)oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectTranChrgRpt(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(oUserInfo); + return oHrmATDTransChrgRptBO.rejectTranChrgRpt((BaseHeaderBean)oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String submitTranChrgRpt(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransChrgRptBO oHrmATDTransChrgRptBO = new HrmATDTransChrgRptBO(oUserInfo); + return oHrmATDTransChrgRptBO.submitTranChrgRpt((BaseHeaderBean)oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrEmpTransCnclHeaderMetaInfo(HrmATDTransCnclApplQVO oHrmATDTransCnclApplQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(oUserInfo); + return oHrmATDTransCnclApplBO.getHrmEmpTransCnclAppHdrMetaInfo(oHrmATDTransCnclApplQVO); + } + + public ArrayList getHrEmpTransCnclHeader(HrmATDTransCnclApplQVO oHrmATDTransCnclApplQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(oUserInfo); + return oHrmATDTransCnclApplBO.getHrmEmpTransCnclAppHeaderInfo(oHrmATDTransCnclApplQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmEmpCnclApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(); + return oHrmATDTransCnclApplBO.getHrmTrnApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpNoQCnclApplnLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(); + return oHrmATDTransCnclApplBO.getHrmTrnCnclEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpNoICnclApplnLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(); + return oHrmATDTransCnclApplBO.getHrmTrnCnclEmpNoInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpCnclOfNoteNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(); + return oHrmATDTransCnclApplBO.getHrmTrnCnclOfcNoteNoLOVdata(oLovQueryVO); + } + + public String saveData(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(oUserInfo); + return oHrmATDTransCnclApplBO.saveData((BaseHeaderBean)oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String submitTransferCnclAppln(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(oUserInfo); + return oHrmATDTransCnclApplBO.submitTransferCnclAppln((BaseHeaderBean)oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveTransferCnclAppln(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(oUserInfo); + return oHrmATDTransCnclApplBO.approveTransferCnclAppln((BaseHeaderBean)oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectTransferCnclAppln(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransCnclApplBO oHrmATDTransCnclApplBO = new HrmATDTransCnclApplBO(oUserInfo); + return oHrmATDTransCnclApplBO.rejectTransferCnclAppln((BaseHeaderBean)oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String cancelTransfer(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransOrderForSingleEmpBO oHrmATDTransOrderForSingleEmpBO = new HrmATDTransOrderForSingleEmpBO(); + return oHrmATDTransOrderForSingleEmpBO.cancelTransfer((BaseHeaderBean)oHrmATDTransOrderForSingleEmpBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmEmpDeputAppHdrMetaInfo(HrmATDDptnApplQVO oHrmATDDptnApplQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(oUserInfo); + return oHrmATDDptnApplBO.getHrmEmpDeputAppHdrMetaInfo(oHrmATDDptnApplQVO); + } + + public ArrayList getHrmEmpDeputAppHeaderInfo(HrmATDDptnApplQVO oHrmATDDptnApplQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(oUserInfo); + return oHrmATDDptnApplBO.getHrmEmpDeputAppHeaderInfo(oHrmATDDptnApplQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmDeputApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(); + return oHrmATDDptnApplBO.getHrmDeputApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(); + return oHrmATDDptnApplBO.getHrmDeputEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(); + return oHrmATDDptnApplBO.getHrmDeputEmpNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputAdvtNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(); + return oHrmATDDptnApplBO.getHrmDeputAdvtNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputPostNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(); + return oHrmATDDptnApplBO.getHrmDeputPostNameLOVdata(oLovQueryVO); + } + + public String saveData(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(oUserInfo); + return oHrmATDDptnApplBO.saveData((BaseHeaderBean)oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String submitDeputAppln(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(oUserInfo); + return oHrmATDDptnApplBO.submitDeputAppln((BaseHeaderBean)oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveDeputAppln(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(oUserInfo); + return oHrmATDDptnApplBO.approveDeputAppln((BaseHeaderBean)oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectDeputAppln(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnApplBO oHrmATDDptnApplBO = new HrmATDDptnApplBO(oUserInfo); + return oHrmATDDptnApplBO.rejectDeputAppln((BaseHeaderBean)oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmTrnsCnclOrdAppNoLOVQdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(); + return oHrmATDTransCnclOrderForSingleEmpBO.getHrmTrnCnclOrderApplnNoLOVQdata(oLovQueryVO); + } + + public LovVO getHrmTrnsCnclOrdAppNoLOVIdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(); + return oHrmATDTransCnclOrderForSingleEmpBO.getHrmTrnCnclOrderApplnNoLOVIdata(oLovQueryVO); + } + + public LovVO getHrmTrnsCnclOrdNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(); + return oHrmATDTransCnclOrderForSingleEmpBO.getHrmTrnCnclOrderNoLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmEmptHrmTrnsCnclOrdHdrMetaInfo(HrmATDTransCnclOrderSingleEmpQVO oHrmATDTransCnclOrderSingleEmpQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransCnclOrderForSingleEmpBO.getHrmEmpTransCnclOrderHdrMetaInfo(oHrmATDTransCnclOrderSingleEmpQVO); + } + + public ArrayList getHrmEmptHrmTrnsCnclOrdHeaderInfo(HrmATDTransCnclOrderSingleEmpQVO oHrmATDTransCnclOrderSingleEmpQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransCnclOrderForSingleEmpBO.getHrmEmpTransCnclOrderHeaderInfo(oHrmATDTransCnclOrderSingleEmpQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransCnclOrderForSingleEmpBO.saveData((BaseHeaderBean)oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String submitTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransCnclOrderForSingleEmpBO.submitTranCnclOrder((BaseHeaderBean)oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransCnclOrderForSingleEmpBO.approveTranCnclOrder((BaseHeaderBean)oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDTransCnclOrderForSingleEmpBO oHrmATDTransCnclOrderForSingleEmpBO = new HrmATDTransCnclOrderForSingleEmpBO(oUserInfo); + return oHrmATDTransCnclOrderForSingleEmpBO.rejectTranCnclOrder((BaseHeaderBean)oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmDeputationOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(); + return oHrmATDDptnOrderForSingleEmpBO.getHrmDeputationOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputApplcnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(); + return oHrmATDDptnOrderForSingleEmpBO.getHrmDeputApplcnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputApplcnNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(); + return oHrmATDDptnOrderForSingleEmpBO.getHrmDeputApplcnNoQLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmDeputOrderSngEmpHdrMetaInfo(HrmATDDptnOrderSingleEmpQVO oHrmATDDptnOrderSingleEmpQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(oUserInfo); + return oHrmATDDptnOrderForSingleEmpBO.getHrmDeputOrderSngEmpHdrMetaInfo(oHrmATDDptnOrderSingleEmpQVO); + } + + public ArrayList getHrmDeputOrderSngEmpHeaderInfo(HrmATDDptnOrderSingleEmpQVO oHrmATDDptnOrderSingleEmpQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(oUserInfo); + return oHrmATDDptnOrderForSingleEmpBO.getHrmDeputOrderSngEmpHeaderInfo(oHrmATDDptnOrderSingleEmpQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(oUserInfo); + return oHrmATDDptnOrderForSingleEmpBO.saveData((BaseHeaderBean)oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String submitDeputOrder(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(oUserInfo); + return oHrmATDDptnOrderForSingleEmpBO.submitDeputOrder((BaseHeaderBean)oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveDeputOrder(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(oUserInfo); + return oHrmATDDptnOrderForSingleEmpBO.approveDeputOrder((BaseHeaderBean)oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectDeputOrder(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnOrderForSingleEmpBO oHrmATDDptnOrderForSingleEmpBO = new HrmATDDptnOrderForSingleEmpBO(oUserInfo); + return oHrmATDDptnOrderForSingleEmpBO.rejectDeputOrder((BaseHeaderBean)oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmDeputChargeRepHdrMetaInfo(HrmATDDptnChrgRptQVO oHrmATDDptnChrgRptQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(oUserInfo); + return oHrmATDDptnChrgRptBO.getHrmDeputChargeRepHdrMetaInfo(oHrmATDDptnChrgRptQVO); + } + + public ArrayList getHrmDeputChargeRepHeaderInfo(HrmATDDptnChrgRptQVO oHrmATDDptnChrgRptQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(oUserInfo); + return oHrmATDDptnChrgRptBO.getHrmDeputChargeRepHeaderInfo(oHrmATDDptnChrgRptQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmDepChrgOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(); + return oHrmATDDptnChrgRptBO.getHrmDepChrgOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDepChrgOrderNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(); + return oHrmATDDptnChrgRptBO.getHrmDepChrgOrderNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmDepChrgCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(); + return oHrmATDDptnChrgRptBO.getHrmDepChrgCodeLOVdata(oLovQueryVO); + } + + public String saveData(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(oUserInfo); + return oHrmATDDptnChrgRptBO.saveData((BaseHeaderBean)oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String approveDeputChrgRpt(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(oUserInfo); + return oHrmATDDptnChrgRptBO.approveDeputChrgRpt((BaseHeaderBean)oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectDeputChrgRpt(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(oUserInfo); + return oHrmATDDptnChrgRptBO.rejectDeputChrgRpt((BaseHeaderBean)oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String submitDeputChrgRpt(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmATDDptnChrgRptBO oHrmATDDptnChrgRptBO = new HrmATDDptnChrgRptBO(oUserInfo); + return oHrmATDDptnChrgRptBO.submitDeputChrgRpt((BaseHeaderBean)oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocal.java new file mode 100644 index 0000000..aa65b84 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocal.java @@ -0,0 +1,193 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransApplQVO; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; + +public interface HrmAllocationTransferDeputationFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmTransSingleEmpRecordMetaInfo(HrmATDTransSingleEmpQVO paramHrmATDTransSingleEmpQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTransSingleEmpHeaderInfo(HrmATDTransSingleEmpQVO paramHrmATDTransSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransAplnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmToSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmToWorkGroupLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransReptEmpNoLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChgRepEmpLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrEmpTransAppHeaderMetaInfo(HrmATDTransApplQVO paramHrmATDTransApplQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrEmpTransAppHeader(HrmATDTransApplQVO paramHrmATDTransApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnOfcNoteNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnDesignationLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnWorkgroupLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnEmpNoInsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite1LOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite2LOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite3LOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTransferApplicationHdrBean paramHrmTransferApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrChargeRepHeaderMetaInfo(HrmATDTransChrgRptQVO paramHrmATDTransChrgRptQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrChargeRepHeader(HrmATDTransChrgRptQVO paramHrmATDTransChrgRptQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgOrderNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrEmpTransCnclHeaderMetaInfo(HrmATDTransCnclApplQVO paramHrmATDTransCnclApplQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrEmpTransCnclHeader(HrmATDTransCnclApplQVO paramHrmATDTransCnclApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpCnclApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpNoQCnclApplnLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpNoICnclApplnLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpCnclOfNoteNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String cancelTransfer(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDeputAppHdrMetaInfo(HrmATDDptnApplQVO paramHrmATDDptnApplQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDeputAppHeaderInfo(HrmATDDptnApplQVO paramHrmATDDptnApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputAdvtNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputPostNameLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnsCnclOrdAppNoLOVQdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnsCnclOrdAppNoLOVIdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnsCnclOrdNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmptHrmTrnsCnclOrdHdrMetaInfo(HrmATDTransCnclOrderSingleEmpQVO paramHrmATDTransCnclOrderSingleEmpQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmptHrmTrnsCnclOrdHeaderInfo(HrmATDTransCnclOrderSingleEmpQVO paramHrmATDTransCnclOrderSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputationOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplcnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplcnNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDeputOrderSngEmpHdrMetaInfo(HrmATDDptnOrderSingleEmpQVO paramHrmATDDptnOrderSingleEmpQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDeputOrderSngEmpHeaderInfo(HrmATDDptnOrderSingleEmpQVO paramHrmATDDptnOrderSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDeputChargeRepHdrMetaInfo(HrmATDDptnChrgRptQVO paramHrmATDDptnChrgRptQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDeputChargeRepHeaderInfo(HrmATDDptnChrgRptQVO paramHrmATDDptnChrgRptQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgOrderNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocalHome.java new file mode 100644 index 0000000..db480a3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAllocationTransferDeputationFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmAllocationTransferDeputationFacadeLocalHome extends EJBLocalHome { + HrmAllocationTransferDeputationFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeBean.java new file mode 100644 index 0000000..f0fe02b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeBean.java @@ -0,0 +1,357 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; +import wenrgise.hrms.ejb.business.HrmAdhocReportBO; +import wenrgise.hrms.ejb.business.HrmAttEmpAttInBO; +import wenrgise.hrms.ejb.business.HrmAttEmpAttOutBO; +import wenrgise.hrms.ejb.business.HrmAttEmpAttQueryBO; +import wenrgise.hrms.ejb.business.HrmAttEmpDayOffBO; +import wenrgise.hrms.ejb.business.HrmAttEmpShiftBO; +import wenrgise.hrms.ejb.business.HrmAttEmployeeShiftRosterBO; +import wenrgise.hrms.ejb.business.HrmAttShiftMstBO; +import wenrgise.hrms.ejb.business.HrmAttShiftRosterGenBO; +import wenrgise.hrms.ejb.business.HrmAttWorkGroupDayOffBO; +import wenrgise.hrms.ejb.business.HrmAttWorkGroupShiftBO; +import wenrgise.hrms.vo.HrmAdhocReportQVO; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; + +public class HrmAttendanceFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmAttEmpDayoffDtlMetaInfo(HrmAttEmpDayOffQVO oHrmAttEmpDayOffQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpDayOffBO oHrmAttEmpDayOffBO = new HrmAttEmpDayOffBO(); + return oHrmAttEmpDayOffBO.getHrAttEmployeeDayoffDetailMetaInfo(oHrmAttEmpDayOffQVO); + } + + public ArrayList getHrmAttEmpDayoffDetailInfo(HrmAttEmpDayOffQVO oHrmAttEmpDayOffQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpDayOffBO oHrmAttEmpDayOffBO = new HrmAttEmpDayOffBO(); + return oHrmAttEmpDayOffBO.getHrAttEmployeeDayoffDetail(oHrmAttEmpDayOffQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmAttEmpDayoff(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpDayOffBO oHrmAttEmpDayOffBO = new HrmAttEmpDayOffBO(oUserInfo); + return oHrmAttEmpDayOffBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmAttEmpNoDayOffQueryLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpDayOffBO oHrmAttEmpDayOffBO = new HrmAttEmpDayOffBO(); + return oHrmAttEmpDayOffBO.getHrmAttEmpNoQueryLOVdata(oLovQueryVO); + } + + public LovVO getHrmAttEmpNoDayOffInsertLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpDayOffBO oHrmAttEmpDayOffBO = new HrmAttEmpDayOffBO(); + return oHrmAttEmpDayOffBO.getHrmAttEmpNoInsertLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmAttWorkGroupDayOffDtlMetaInfo(HrmAttWorkGroupDayOffQVO oHrmAttWorkGroupDayOffQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupDayOffBO oHrmAttWorkGroupDayOffBO = new HrmAttWorkGroupDayOffBO(); + return oHrmAttWorkGroupDayOffBO.getHrAttWorkGroupDayOffDetailMetaInfo(oHrmAttWorkGroupDayOffQVO); + } + + public ArrayList getHrmAttWorkGroupDayOffDetailInfo(HrmAttWorkGroupDayOffQVO oHrmAttWorkGroupDayOffQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupDayOffBO oHrmAttWorkGroupDayOffBO = new HrmAttWorkGroupDayOffBO(); + return oHrmAttWorkGroupDayOffBO.getHrAttWorkGroupDayOffDetail(oHrmAttWorkGroupDayOffQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmAttWorkGroupDayOff(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupDayOffBO oHrmAttWorkGroupDayOffBO = new HrmAttWorkGroupDayOffBO(oUserInfo); + return oHrmAttWorkGroupDayOffBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmAttWorkGroupInsertLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupDayOffBO oHrmAttWorkGroupDayOffBO = new HrmAttWorkGroupDayOffBO(); + return oHrmAttWorkGroupDayOffBO.getHrmAttWorkGroupInsertLOVdata(oLovQueryVO); + } + + public LovVO getHrmAttWorkGroupQueryLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupDayOffBO oHrmAttWorkGroupDayOffBO = new HrmAttWorkGroupDayOffBO(); + return oHrmAttWorkGroupDayOffBO.getHrmAttWorkGroupQueryLOVdata(oLovQueryVO); + } + + public LovVO getHrmAttWorkGroupSiteQueryLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupDayOffBO oHrmAttWorkGroupDayOffBO = new HrmAttWorkGroupDayOffBO(); + return oHrmAttWorkGroupDayOffBO.getHrmAttSiteQueryLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getEmpAttQueryHdrMetaInfo(HrmAttEmpAttQueryQVO oHrmAttEmpAttQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getEmpAttQueryHdrMetaInfo(oHrmAttEmpAttQueryQVO); + } + + public ArrayList getEmpAttQueryHeader(HrmAttEmpAttQueryQVO oHrmAttEmpAttQueryQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getEmpAttQueryHeader(oHrmAttEmpAttQueryQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getEmpAttQueryDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getEmpAttQueryDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getEmpAttQueryDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getEmpAttQueryDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(oUserInfo); + return oHrmAttEmpAttQueryBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmAttEmployeeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getHrmAttEmployeeLOV(oLovQueryVO); + } + + public LovVO getHrmAttQueryLocationLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getHrmAttQueryLocationLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmAttWGShiftDtlMetaInfo(HrmAttWorkGroupShiftQVO oHrmAttWorkGroupShiftQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(); + return oHrmAttWorkGroupShiftBO.getHrmAttWGShiftDtlMetaInfo(oHrmAttWorkGroupShiftQVO); + } + + public ArrayList getHrmAttWGShiftDtlInfo(HrmAttWorkGroupShiftQVO oHrmAttWorkGroupShiftQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(); + return oHrmAttWorkGroupShiftBO.getHrmAttWGShiftDtlInfo(oHrmAttWorkGroupShiftQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveWGSData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(oUserInfo); + return oHrmAttWorkGroupShiftBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmAttWorkGrpCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(); + LovVO oLovVO = oHrmAttWorkGroupShiftBO.getHrmAttWorkGrpCodeLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(); + LovVO oLovVO = oHrmAttWorkGroupShiftBO.getHrmAttWorkGrpCodeLOVdataNmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpSiteCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(); + LovVO oLovVO = oHrmAttWorkGroupShiftBO.getHrmAttWorkGrpSiteCodeLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpSiteCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(); + LovVO oLovVO = oHrmAttWorkGroupShiftBO.getHrmAttWorkGrpSiteCodeLOVdataNmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAttWorkGrpShiftCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttWorkGroupShiftBO oHrmAttWorkGroupShiftBO = new HrmAttWorkGroupShiftBO(); + LovVO oLovVO = oHrmAttWorkGroupShiftBO.getHrmAttWorkGrpShiftCodeLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmAttEmpShiftDtlMetaInfo(HrmAttEmpShiftQVO oHrmAttEmpShiftQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpShiftBO oHrmAttEmpShiftBO = new HrmAttEmpShiftBO(); + return oHrmAttEmpShiftBO.getHrAttEmpShiftDetailMetaInfo(oHrmAttEmpShiftQVO); + } + + public ArrayList getHrmAttEmpShiftDtlInfo(HrmAttEmpShiftQVO oHrmAttEmpShiftQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpShiftBO oHrmAttEmpShiftBO = new HrmAttEmpShiftBO(); + return oHrmAttEmpShiftBO.getHrAttEmpShiftDetail(oHrmAttEmpShiftQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveEmpShiftData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpShiftBO oHrmAttEmpShiftBO = new HrmAttEmpShiftBO(oUserInfo); + return oHrmAttEmpShiftBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmAttESEmpNoLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpShiftBO oHrmAttEmpShiftBO = new HrmAttEmpShiftBO(); + LovVO oLovVO = oHrmAttEmpShiftBO.getHrmAttESEmpNoLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAttESEmpNoLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpShiftBO oHrmAttEmpShiftBO = new HrmAttEmpShiftBO(); + LovVO oLovVO = oHrmAttEmpShiftBO.getHrmAttESEmpNoLOVdataNmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAttESShiftCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpShiftBO oHrmAttEmpShiftBO = new HrmAttEmpShiftBO(); + LovVO oLovVO = oHrmAttEmpShiftBO.getHrmAttESShiftCodeLOVdataNmode(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmAttHdrMetaInfo(HrmAttEmpAttInQVO oHrmAttEmpAttInQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttInBO oHrmAttEmpAttInBO = new HrmAttEmpAttInBO(); + return oHrmAttEmpAttInBO.getHrmAttHdrMetaInfo(oHrmAttEmpAttInQVO); + } + + public ArrayList getHrmAttHeaderInfo(HrmAttEmpAttInQVO oHrmAttEmpAttInQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttInBO oHrmAttEmpAttInBO = new HrmAttEmpAttInBO(); + return oHrmAttEmpAttInBO.getHrmAttHeaderInfo(oHrmAttEmpAttInQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAttEmpAttInBO oHrmAttEmpAttInBO = new HrmAttEmpAttInBO(oUserInfo); + return oHrmAttEmpAttInBO.saveData((BaseHeaderBean)oHrmAttEmpAttInHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public HrmAttEmpAttInHdrBean getOnLoadSysDtTime(HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttInBO oHrmAttEmpAttInBO = new HrmAttEmpAttInBO(); + return oHrmAttEmpAttInBO.getOnLoadSysDtTime(oHrmAttEmpAttInHdrBean); + } + + public LovVO getHrmAttEmpShftCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttInBO oHrmAttEmpAttInBO = new HrmAttEmpAttInBO(); + return oHrmAttEmpAttInBO.getHrmAttEmpShftCodeLOV(oLovQueryVO); + } + + public LovVO getHrmAttQueryEmpShftCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getHrmAttEmpShftCodeLOV(oLovQueryVO); + } + + public LovVO getHrmAttQueryDtlEmpLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttQueryBO oHrmAttEmpAttQueryBO = new HrmAttEmpAttQueryBO(); + return oHrmAttEmpAttQueryBO.getHrmAttQueryDtlEmpLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmAttOutHdrMetaInfo(HrmAttEmpAttOutQVO oHrmAttEmpAttOutQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttOutBO oHrmAttEmpAttOutBO = new HrmAttEmpAttOutBO(oUserInfo); + return oHrmAttEmpAttOutBO.getHrmAttOutHdrMetaInfo(oHrmAttEmpAttOutQVO); + } + + public ArrayList getHrmAttOutHeaderInfo(HrmAttEmpAttOutQVO oHrmAttEmpAttOutQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmpAttOutBO oHrmAttEmpAttOutBO = new HrmAttEmpAttOutBO(); + return oHrmAttEmpAttOutBO.getHrmAttOutHeaderInfo(oHrmAttEmpAttOutQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAttEmpAttOutBO oHrmAttEmpAttOutBO = new HrmAttEmpAttOutBO(oUserInfo); + return oHrmAttEmpAttOutBO.saveData((BaseHeaderBean)oHrmAttEmpAttOutHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getAttShiftMstHeaderMetaInfo(HrmAttShiftMstQVO oHrmAttShiftMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttShiftMstBO oHrmAttShiftMstBO = new HrmAttShiftMstBO(); + return oHrmAttShiftMstBO.getAttShiftMstHeaderMetaInfo(oHrmAttShiftMstQVO); + } + + public ArrayList getAttShiftMstHeader(HrmAttShiftMstQVO oHrmAttShiftMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttShiftMstBO oHrmAttShiftMstBO = new HrmAttShiftMstBO(); + return oHrmAttShiftMstBO.getAttShiftMstHeader(oHrmAttShiftMstQVO, lStartPosition, lLastPosition); + } + + public String saveAttShiftMstData(HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttShiftMstBO oHrmAttShiftMstBO = new HrmAttShiftMstBO(oUserInfo); + return oHrmAttShiftMstBO.saveData((BaseHeaderBean)oHrmAttShiftMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getShiftCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttShiftMstBO oHrmAttShiftMstBO = new HrmAttShiftMstBO(); + return oHrmAttShiftMstBO.getShiftCodeLOVData(oLovQueryVO); + } + + public RecordMetaInfo getAttEmpshiftRosterDetailMetaInfo(HrmAttEmpShiftRosterQVO oHrmAttEmpShiftRosterQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmployeeShiftRosterBO oHrmAttEmployeeShiftRosterBO = new HrmAttEmployeeShiftRosterBO(); + return oHrmAttEmployeeShiftRosterBO.getAttEmpshiftRosterDetailMetaInfo(oHrmAttEmpShiftRosterQVO); + } + + public ArrayList getAttEmpshiftRosterDetail(HrmAttEmpShiftRosterQVO oHrmAttEmpShiftRosterQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttEmployeeShiftRosterBO oHrmAttEmployeeShiftRosterBO = new HrmAttEmployeeShiftRosterBO(); + return oHrmAttEmployeeShiftRosterBO.getAttEmpshiftRosterDetail(oHrmAttEmpShiftRosterQVO, lStartPosition, lLastPosition); + } + + public String saveShiftRosterGenData(HrmAttShiftRosterGenHdrBean oHrmAttShiftRosterGenHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttShiftRosterGenBO oHrmAttShiftRosterGenBO = new HrmAttShiftRosterGenBO(oUserInfo); + return oHrmAttShiftRosterGenBO.saveRosterGeneartor((BaseHeaderBean)oHrmAttShiftRosterGenHdrBean); + } + + public LovVO getShiftRosterGenWorkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAttShiftRosterGenBO oHrmAttShiftRosterGenBO = new HrmAttShiftRosterGenBO(); + return oHrmAttShiftRosterGenBO.getShiftRosterGenWorkGrpLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmAdhocReportHdrMetaInfo(HrmAdhocReportQVO oHrmAdhocReportQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdhocReportBO oHrmAdhocReportBO = new HrmAdhocReportBO(); + return oHrmAdhocReportBO.getHrmAdhocReportHdrMetaInfo(oHrmAdhocReportQVO); + } + + public ArrayList getHrmAdhocReportHeaderInfo(HrmAdhocReportQVO oHrmAdhocReportQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdhocReportBO oHrmAdhocReportBO = new HrmAdhocReportBO(); + return oHrmAdhocReportBO.getHrmAdhocReportHeaderInfo(oHrmAdhocReportQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAdhocReport(HrmAdhocReportHdrBean oHrmAdhocReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdhocReportBO oHrmAdhocReportBO = new HrmAdhocReportBO(oUserInfo); + return oHrmAdhocReportBO.saveData((BaseHeaderBean)oHrmAdhocReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getQueryLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAdhocReportBO oHrmAdhocReportBO = new HrmAdhocReportBO(); + return oHrmAdhocReportBO.getQueryLOVData(oLovQueryVO); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocal.java new file mode 100644 index 0000000..f707e02 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocal.java @@ -0,0 +1,137 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; +import wenrgise.hrms.vo.HrmAdhocReportQVO; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; + +public interface HrmAttendanceFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmAttEmpDayoffDtlMetaInfo(HrmAttEmpDayOffQVO paramHrmAttEmpDayOffQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttEmpDayoffDetailInfo(HrmAttEmpDayOffQVO paramHrmAttEmpDayOffQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttEmpDayoff(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpNoDayOffQueryLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpNoDayOffInsertLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttWorkGroupDayOffDtlMetaInfo(HrmAttWorkGroupDayOffQVO paramHrmAttWorkGroupDayOffQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttWorkGroupDayOffDetailInfo(HrmAttWorkGroupDayOffQVO paramHrmAttWorkGroupDayOffQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttWorkGroupDayOff(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupInsertLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupQueryLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupSiteQueryLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttWGShiftDtlMetaInfo(HrmAttWorkGroupShiftQVO paramHrmAttWorkGroupShiftQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttWGShiftDtlInfo(HrmAttWorkGroupShiftQVO paramHrmAttWorkGroupShiftQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveWGSData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpSiteCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpSiteCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpShiftCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttEmpShiftDtlMetaInfo(HrmAttEmpShiftQVO paramHrmAttEmpShiftQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttEmpShiftDtlInfo(HrmAttEmpShiftQVO paramHrmAttEmpShiftQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveEmpShiftData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESEmpNoLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESEmpNoLOVdataNmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESShiftCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getEmpAttQueryHdrMetaInfo(HrmAttEmpAttQueryQVO paramHrmAttEmpAttQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getEmpAttQueryHeader(HrmAttEmpAttQueryQVO paramHrmAttEmpAttQueryQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getEmpAttQueryDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getEmpAttQueryDtlInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmployeeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttHdrMetaInfo(HrmAttEmpAttInQVO paramHrmAttEmpAttInQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttHeaderInfo(HrmAttEmpAttInQVO paramHrmAttEmpAttInQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAttEmpAttInHdrBean paramHrmAttEmpAttInHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + HrmAttEmpAttInHdrBean getOnLoadSysDtTime(HrmAttEmpAttInHdrBean paramHrmAttEmpAttInHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpShftCodeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryEmpShftCodeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryDtlEmpLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryLocationLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttOutHdrMetaInfo(HrmAttEmpAttOutQVO paramHrmAttEmpAttOutQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttOutHeaderInfo(HrmAttEmpAttOutQVO paramHrmAttEmpAttOutQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAttEmpAttOutHdrBean paramHrmAttEmpAttOutHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getAttShiftMstHeaderMetaInfo(HrmAttShiftMstQVO paramHrmAttShiftMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getAttShiftMstHeader(HrmAttShiftMstQVO paramHrmAttShiftMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveAttShiftMstData(HrmAttShiftMstHdrBean paramHrmAttShiftMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getShiftCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getAttEmpshiftRosterDetailMetaInfo(HrmAttEmpShiftRosterQVO paramHrmAttEmpShiftRosterQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getAttEmpshiftRosterDetail(HrmAttEmpShiftRosterQVO paramHrmAttEmpShiftRosterQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveShiftRosterGenData(HrmAttShiftRosterGenHdrBean paramHrmAttShiftRosterGenHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getShiftRosterGenWorkGrpLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdhocReportHdrMetaInfo(HrmAdhocReportQVO paramHrmAdhocReportQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdhocReportHeaderInfo(HrmAdhocReportQVO paramHrmAdhocReportQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAdhocReport(HrmAdhocReportHdrBean paramHrmAdhocReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocalHome.java new file mode 100644 index 0000000..11bd459 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmAttendanceFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmAttendanceFacadeLocalHome extends EJBLocalHome { + HrmAttendanceFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeBean.java new file mode 100644 index 0000000..497f81f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeBean.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.ejb.business.HrmGenEligRuleBO; +import wenrgise.hrms.ejb.business.HrmGenEligRuleQueryBO; +import wenrgise.hrms.vo.HrmGenEligRuleQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; + +public class HrmEligibilityFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmGenEligRuleHdrMetaInfo(HrmGenEligRuleQVO oHrmGenEligRuleQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmGenEligRuleBO oHrmGenEligRuleBO = new HrmGenEligRuleBO(); + return oHrmGenEligRuleBO.getHrmGenEligRuleHdrMetaInfo(oHrmGenEligRuleQVO); + } + + public ArrayList getHrmGenEligRuleHeaderInfo(HrmGenEligRuleQVO oHrmGenEligRuleQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmGenEligRuleBO oHrmGenEligRuleBO = new HrmGenEligRuleBO(); + return oHrmGenEligRuleBO.getHrmGenEligRuleHeaderInfo(oHrmGenEligRuleQVO, lStartPosition, lLastPosition); + } + + public HashMap getEligClassInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + HrmGenEligRuleBO oHrmGenEligRuleBO = new HrmGenEligRuleBO(); + return oHrmGenEligRuleBO.getEligClassInfo(); + } + + public String saveData(HrmGenEligRuleHdrBean oHrmEligibilityRuleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmGenEligRuleBO oHrmGenEligRuleBO = new HrmGenEligRuleBO(oUserInfo); + return oHrmGenEligRuleBO.saveData((BaseHeaderBean)oHrmEligibilityRuleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmGenEligRuleQueryDetailMetaInfo(HrmGenEligRuleQueryQVO oQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmGenEligRuleQueryBO oHrmGenEligRuleQueryBO = new HrmGenEligRuleQueryBO(); + return oHrmGenEligRuleQueryBO.getHrmGenEligRuleQueryDetailMetaInfo((BaseQueryVO)oQVO); + } + + public ArrayList getHrmGenEligRuleQueryDetail(HrmGenEligRuleQueryQVO oQVO, long lAbsoluteStart, long lAbsoluteEnd) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmGenEligRuleQueryBO oHrmGenEligRuleQueryBO = new HrmGenEligRuleQueryBO(); + return oHrmGenEligRuleQueryBO.getHrmGenEligRuleQueryDetail((BaseQueryVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } + + public String saveData(HrmGenEligRuleQueryHdrBean oHrmGenEligRuleQueryHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmGenEligRuleQueryBO oHrmGenEligRuleQueryBO = new HrmGenEligRuleQueryBO(oUserInfo); + return oHrmGenEligRuleQueryBO.saveData((BaseHeaderBean)oHrmGenEligRuleQueryHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocal.java new file mode 100644 index 0000000..8393724 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocal.java @@ -0,0 +1,30 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.EJBLocalObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.vo.HrmGenEligRuleQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; + +public interface HrmEligibilityFacadeLocal extends EJBLocalObject { + HashMap getEligClassInfo() throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmGenEligRuleHdrBean paramHrmGenEligRuleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmGenEligRuleHdrMetaInfo(HrmGenEligRuleQVO paramHrmGenEligRuleQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmGenEligRuleHeaderInfo(HrmGenEligRuleQVO paramHrmGenEligRuleQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmGenEligRuleQueryDetailMetaInfo(HrmGenEligRuleQueryQVO paramHrmGenEligRuleQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmGenEligRuleQueryDetail(HrmGenEligRuleQueryQVO paramHrmGenEligRuleQueryQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmGenEligRuleQueryHdrBean paramHrmGenEligRuleQueryHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocalHome.java new file mode 100644 index 0000000..cf3334b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEligibilityFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmEligibilityFacadeLocalHome extends EJBLocalHome { + HrmEligibilityFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeBean.java new file mode 100644 index 0000000..b6b93b0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeBean.java @@ -0,0 +1,576 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.ejb.business.HrmAgeAnalysisBO; +import wenrgise.hrms.ejb.business.HrmEmpDepDtlBO; +import wenrgise.hrms.ejb.business.HrmEmpDiscActionBO; +import wenrgise.hrms.ejb.business.HrmEmpPersBO; +import wenrgise.hrms.ejb.business.HrmMisReportBO; +import wenrgise.hrms.ejb.business.HrmMyWorkflowBO; +import wenrgise.hrms.ejb.business.HrmRetireForecastBO; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; +import wenrgise.hrms.vo.HrmEmpPersQVO; +import wenrgise.hrms.vo.HrmMisreportQVO; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; +import wenrgise.hrms.vo.HrmRetireForecastQVO; + +public class HrmEmployeeMaintenanceFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmEmpDepDtlHdrMetaInfo(HrmEmpDepDtlQVO oHrmEmpDepDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDepDtlBO oHrmEmpDepDtlBO = new HrmEmpDepDtlBO(); + return oHrmEmpDepDtlBO.getHrmEmpDepDtlHdrMetaInfo(oHrmEmpDepDtlQVO); + } + + public ArrayList getHrmEmpDepDtlHdrInfo(HrmEmpDepDtlQVO oHrmEmpDepDtlQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDepDtlBO oHrmEmpDepDtlBO = new HrmEmpDepDtlBO(); + return oHrmEmpDepDtlBO.getHrmEmpDepDtlHdrInfo(oHrmEmpDepDtlQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpDepDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDepDtlBO oHrmEmpDepDtlBO = new HrmEmpDepDtlBO(); + return oHrmEmpDepDtlBO.getHrmEmpDepDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpDepDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDepDtlBO oHrmEmpDepDtlBO = new HrmEmpDepDtlBO(); + return oHrmEmpDepDtlBO.getHrmEmpDepDtlInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveData(HrmEmpDepHdrBean oHrmEmpDepHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmEmpDepDtlBO oHrmEmpDepDtlBO = new HrmEmpDepDtlBO(oUserInfo); + return oHrmEmpDepDtlBO.saveData((BaseHeaderBean)oHrmEmpDepHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmEmpDepDtlEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDepDtlBO oBO = new HrmEmpDepDtlBO(); + LovVO oLovVO = oBO.getHrmEmpDepDtlEmpNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmplDepRelTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDepDtlBO oBO = new HrmEmpDepDtlBO(); + LovVO oLovVO = oBO.getHrmEmpDepDtlRelTypeLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpDiscActionHdrMetaInfo(HrmEmpDiscActionQVO oHrmEmpDiscActionQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDiscActionBO oHrmEmpDiscActionBO = new HrmEmpDiscActionBO(); + return oHrmEmpDiscActionBO.getHrmEmpDiscActionHdrMetaInfo(oHrmEmpDiscActionQVO); + } + + public ArrayList getHrmEmpDiscActionHdrInfo(HrmEmpDiscActionQVO oHrmEmpDiscActionQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDiscActionBO oHrmEmpDiscActionBO = new HrmEmpDiscActionBO(); + return oHrmEmpDiscActionBO.getHrmEmpDiscActionHdrInfo(oHrmEmpDiscActionQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpDiscActionMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDiscActionBO oHrmEmpDiscActionBO = new HrmEmpDiscActionBO(); + return oHrmEmpDiscActionBO.getHrmEmpDiscActionMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpDiscActionInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDiscActionBO oHrmEmpDiscActionBO = new HrmEmpDiscActionBO(); + return oHrmEmpDiscActionBO.getHrmEmpDiscActionInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveData(HrmEmpDiscActionHdrBean oHrmEmpDiscActionHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmEmpDiscActionBO oHrmEmpDiscActionBO = new HrmEmpDiscActionBO(oUserInfo); + return oHrmEmpDiscActionBO.saveData((BaseHeaderBean)oHrmEmpDiscActionHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmEmpDiscActionSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpDiscActionBO oBO = new HrmEmpDiscActionBO(); + LovVO oLovVO = oBO.getHrmEmpDiscActionSiteLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersHdrMetaInfo(HrmEmpPersQVO oHrmEmpPersQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersHdrMetaInfo(oHrmEmpPersQVO); + } + + public ArrayList getHrmEmpPersHdrInfo(HrmEmpPersQVO oHrmEmpPersQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersHdrInfo(oHrmEmpPersQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpPersDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersDtlsInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveData(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(oUserInfo); + return oHrmEmpPersBO.saveData((BaseHeaderBean)oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmEmpPersDtlsEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsEmpNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsMotTngLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsMotTngLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsNationalityLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsNationalityLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsMaritalStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsMaritalStatusLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsDeptLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsDeptLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsDesigLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsDesigLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsSocialStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsSocialStatusLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsReligionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsReligionLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsGradeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsGradeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsRepEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsRepEmpLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersDtlsRelatedEmpLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersDtlsRelatedEmpLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersAddDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersAddDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmPersAddDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmPersAddDtlsInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public LovVO getHrmEmpPersAddDtlsStateLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersAddDtlsStateLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersAddDtlsCountryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersAddDtlsCountryLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersAddDtlsDistrictLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersAddDtlsDistrictLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersAddDtlsTehsilLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersAddDtlsTehsilLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersJoinInfMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersJoinInfMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersJoinInfInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersJoinInfInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public LovVO getHrmEmpPersJoinInfBaseSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersJoinInfBaseSiteLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfEntryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersJoinInfEntryLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersJoinInfStatusLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfSepTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersJoinInfSepTypeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfCostCentreLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersJoinInfCostCentreLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfBankLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersJoinInfBankLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersJoinInfJobRespLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersJoinInfJobRespLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersPriorExpMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersPriorExpMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersPriorExpInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersPriorExpInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public LovVO getHrmEmpPersPriorExpSkillLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersPriorExpSkillLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersPriorExpDesigLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersPriorExpDesigLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersEduDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersEduDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersEduDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersEduDtlsInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public LovVO getHrmEmpPersEduDtlsInstLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersEduDtlsInstLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpPersEduDtlsQualLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmEmpPersEduDtlsQualLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersEmpHistMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersEmpHistMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersEmpHistInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersEmpHistInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmEmpPersPFDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPerPFDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersPFDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersPFDtlsInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public LovVO getHrmRelationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oPersDtl = new HrmEmpPersBO(); + LovVO oLovVO = oPersDtl.getHrmRelationLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersTrngDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersTrngDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersTrngDtlsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersTrngDtlsInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmEmpPersAwardMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersAwardMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersAwardInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersAwardInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmEmpPersInsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersInsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersInsInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersInsInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmEmpPersHealthMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersHealthMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersHealthInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersHealthInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmEmpPersLngMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersLngMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersLngInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersLngInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmEmpPersRefMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersRefMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersRefInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersRefInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public LovVO getMisPositionLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMisReportBO oHrmMisReportBO = new HrmMisReportBO(); + LovVO oLovVO = oHrmMisReportBO.getMisPositionLOVData(oLovQueryVO); + return oLovVO; + } + + public String InsertData(HrmMisReportHdrBean oHrmMisReportHdrBean, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmMisReportBO oHrmMisReportBO = new HrmMisReportBO(); + return oHrmMisReportBO.InsertData((BaseHeaderBean)oHrmMisReportHdrBean, oDetailBeanArray); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getMisDataCount(HrmMisreportQVO oHrmMisreportQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMisReportBO oHrmMisReportBO = new HrmMisReportBO(); + return oHrmMisReportBO.getMisDataCount(oHrmMisreportQVO); + } + + public ArrayList getMisDataInfo(HrmMisreportQVO oHrmMisreportQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMisReportBO oHrmMisReportBO = new HrmMisReportBO(); + return oHrmMisReportBO.getMisDataInfo(oHrmMisreportQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmMisData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMisReportBO oHrmMisReportBO = new HrmMisReportBO(oUserInfo); + return oHrmMisReportBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getMisYearMonthLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMisReportBO oHrmMisReportBO = new HrmMisReportBO(); + LovVO oLovVO = oHrmMisReportBO.getMisYearMonthLOVData(oLovQueryVO); + return oLovVO; + } + + public String getYearMonth() throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmMisReportBO oHrmMisReportBO = new HrmMisReportBO(); + return oHrmMisReportBO.getYearMonth(); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String InsertData(BaseHeaderBean oBaseHeaderBean) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmRetireForecastBO oHrmRetireForecastBO = new HrmRetireForecastBO(); + return oHrmRetireForecastBO.InsertData(oBaseHeaderBean); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo procGetRetireDataCount(HrmRetireForecastQVO oHrmRetireForecastQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRetireForecastBO oHrmRetireForecastBO = new HrmRetireForecastBO(); + return oHrmRetireForecastBO.procGetRetireDataCount(oHrmRetireForecastQVO); + } + + public ArrayList procGetRetireDataInfo(HrmRetireForecastQVO oHrmRetireForecastQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRetireForecastBO oHrmRetireForecastBO = new HrmRetireForecastBO(); + return oHrmRetireForecastBO.procGetRetireDataInfo(oHrmRetireForecastQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmRetireForecastData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRetireForecastBO oHrmRetireForecastBO = new HrmRetireForecastBO(oUserInfo); + return oHrmRetireForecastBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String InsertDataAgeAnalysis(BaseHeaderBean oBaseHeaderBean) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAgeAnalysisBO oHrmAgeAnalysisBO = new HrmAgeAnalysisBO(); + return oHrmAgeAnalysisBO.InsertDataAgeAnalysis(oBaseHeaderBean); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmMyWorkflowHdrMetaInfo(HrmMyWorkflowQVO oHrmMyWorkflowQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMyWorkflowBO oHrmMyWorkflowBO = new HrmMyWorkflowBO(); + return oHrmMyWorkflowBO.getHrmMyWorkflowHdrMetaInfo(oHrmMyWorkflowQVO); + } + + public ArrayList getHrmMyWorkflowHdrInfo(HrmMyWorkflowQVO oHrmMyWorkflowQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMyWorkflowBO oHrmMyWorkflowBO = new HrmMyWorkflowBO(); + return oHrmMyWorkflowBO.getHrmMyWorkflowHdrInfo(oHrmMyWorkflowQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmMyWorkflowDetailMetaInfo(BaseQueryVO oBaseQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMyWorkflowBO oHrmMyWorkflowBO = new HrmMyWorkflowBO(); + return oHrmMyWorkflowBO.getHrmMyWorkflowDetailMetaInfo(oBaseQueryVO); + } + + public ArrayList getHrmMyWorkflowDetailInfo(BaseQueryVO oBaseQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMyWorkflowBO oHrmMyWorkflowBO = new HrmMyWorkflowBO(); + return oHrmMyWorkflowBO.getHrmMyWorkflowDetailInfo(oBaseQueryVO, lStartPosition, lLastPosition); + } + + public LovVO getWorkIdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMyWorkflowBO oHrmMyWorkflowBO = new HrmMyWorkflowBO(); + LovVO oLovVO = oHrmMyWorkflowBO.getWorkIdLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersAssetMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersAssetMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersAssetInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmEmpPersBO oHrmEmpPersBO = new HrmEmpPersBO(); + return oHrmEmpPersBO.getHrmEmpPersAssetInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocal.java new file mode 100644 index 0000000..9b870fa --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocal.java @@ -0,0 +1,201 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; +import wenrgise.hrms.vo.HrmEmpPersQVO; +import wenrgise.hrms.vo.HrmMisreportQVO; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; +import wenrgise.hrms.vo.HrmRetireForecastQVO; + +public interface HrmEmployeeMaintenanceFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmEmpDepDtlHdrMetaInfo(HrmEmpDepDtlQVO paramHrmEmpDepDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDepDtlHdrInfo(HrmEmpDepDtlQVO paramHrmEmpDepDtlQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDepDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDepDtlInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmEmpDepHdrBean paramHrmEmpDepHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDiscActionHdrMetaInfo(HrmEmpDiscActionQVO paramHrmEmpDiscActionQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDiscActionHdrInfo(HrmEmpDiscActionQVO paramHrmEmpDiscActionQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDiscActionMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDiscActionInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDiscActionSiteLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmEmpDiscActionHdrBean paramHrmEmpDiscActionHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDepDtlEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmplDepRelTypeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersHdrMetaInfo(HrmEmpPersQVO paramHrmEmpPersQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersHdrInfo(HrmEmpPersQVO paramHrmEmpPersQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersDtlsMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersDtlsInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsMotTngLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsNationalityLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsMaritalStatusLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsDeptLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsDesigLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsSocialStatusLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsReligionLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsGradeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsRepEmpLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsRelatedEmpLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAddDtlsMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPersAddDtlsInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsStateLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsCountryLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsDistrictLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsTehsilLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersPriorExpSkillLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersPriorExpDesigLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersEduDtlsInstLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersEduDtlsQualLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersJoinInfInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersJoinInfMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfBaseSiteLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfEntryLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfStatusLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfSepTypeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfCostCentreLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfBankLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfJobRespLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersEduDtlsMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersEduDtlsInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersPriorExpMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersPriorExpInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersPFDtlsMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersPFDtlsInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRelationLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersEmpHistMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersEmpHistInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersTrngDtlsMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersTrngDtlsInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAwardMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersAwardInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersInsMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersInsInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersHealthMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersHealthInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersLngMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersLngInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersRefMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersRefInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getMisPositionLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String InsertData(HrmMisReportHdrBean paramHrmMisReportHdrBean, ArrayList paramArrayList) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getMisDataCount(HrmMisreportQVO paramHrmMisreportQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getMisDataInfo(HrmMisreportQVO paramHrmMisreportQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmMisData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getMisYearMonthLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getYearMonth() throws EnrgiseApplicationException, EnrgiseSystemException; + + String InsertData(BaseHeaderBean paramBaseHeaderBean) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo procGetRetireDataCount(HrmRetireForecastQVO paramHrmRetireForecastQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList procGetRetireDataInfo(HrmRetireForecastQVO paramHrmRetireForecastQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRetireForecastData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String InsertDataAgeAnalysis(BaseHeaderBean paramBaseHeaderBean) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMyWorkflowHdrMetaInfo(HrmMyWorkflowQVO paramHrmMyWorkflowQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMyWorkflowHdrInfo(HrmMyWorkflowQVO paramHrmMyWorkflowQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMyWorkflowDetailMetaInfo(BaseQueryVO paramBaseQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMyWorkflowDetailInfo(BaseQueryVO paramBaseQueryVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWorkIdLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAssetMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersAssetInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocalHome.java new file mode 100644 index 0000000..9169992 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmEmployeeMaintenanceFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmEmployeeMaintenanceFacadeLocalHome extends EJBLocalHome { + HrmEmployeeMaintenanceFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacade.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacade.java new file mode 100644 index 0000000..371766e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacade.java @@ -0,0 +1,730 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; +import wenrgise.hrms.vo.HrmAdvSettleQVO; +import wenrgise.hrms.vo.HrmClaimMstQVO; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; +import wenrgise.hrms.vo.HrmEmpClaimQVO; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; +import wenrgise.hrms.vo.HrmEmpPersQVO; +import wenrgise.hrms.vo.HrmLnAppQVO; +import wenrgise.hrms.vo.HrmLnChartQVO; +import wenrgise.hrms.vo.HrmLnMstQVO; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; +import wenrgise.hrms.vo.HrmMisreportQVO; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; +import wenrgise.hrms.vo.HrmRetireForecastQVO; +import wenrgise.hrms.vo.HrmSepApplnQVO; +import wenrgise.hrms.vo.HrmSepCatMstQVO; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; +import wenrgise.hrms.vo.HrmSepOrderQVO; +import wenrgise.hrms.vo.HrmSettleQueryVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public interface HrmFacade extends EJBObject { + UserInfo getLoginUserInfo(String paramString1, String paramString2) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + WflWorkListInfoBean getWorkListInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCalHeaderMetaInfo(HrmOrgCalMstQVO paramHrmOrgCalMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCalHeader(HrmOrgCalMstQVO paramHrmOrgCalMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCalDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getHrmCalStartDate(String paramString1, String paramString2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmCalendar(HrmOrgCalMstHdrBean paramHrmOrgCalMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClassHeaderMetaInfo(HrmOrgClassDtlQVO paramHrmOrgClassDtlQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClassHeader(HrmOrgClassDtlQVO paramHrmOrgClassDtlQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClassDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClassDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmOrgClassDtl(HrmOrgClassHdrBean paramHrmOrgClassHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String creditLeaves(HrmLvCreditHdrBean paramHrmLvCreditHdrBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolCalHeaderMetaInfo(HrmOrgHolCalQVO paramHrmOrgHolCalQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolCalHeader(HrmOrgHolCalQVO paramHrmOrgHolCalQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolCalDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmHolCal(HrmOrgHolCalHdrBean paramHrmOrgHolCalHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolTypeHeaderMetaInfo(HrmOrgHolTypeMstQVO paramHrmOrgHolTypeMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolTypeHeader(HrmOrgHolTypeMstQVO paramHrmOrgHolTypeMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHolidayType(HrmOrgHolTypeMstHdrBean paramHrmOrgHolTypeMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSkillHeaderMetaInfo(HrmOrgSkillMstQVO paramHrmOrgSkillMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSkillHeader(HrmOrgSkillMstQVO paramHrmOrgSkillMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSkillDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSkillDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSkill(HrmOrgSkillMstHdrBean paramHrmOrgSkillMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScaleHeaderMetaInfo(HrmOrgScaleMstQVO paramHrmOrgScaleMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScaleHeader(HrmOrgScaleMstQVO paramHrmOrgScaleMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScaleDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScaleDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmScaleMst(HrmOrgScaleMstHdrBean paramHrmOrgScaleMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmScaleMstScaleCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmOrgScaleGradeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRelDetailMetaInfo(String paramString) throws RemoteException, CreateException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmReligionDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmReligion(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmOrgWorkGroupMstHeaderMetaInfo(HrmOrgWorkGroupMstQVO paramHrmOrgWorkGroupMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmOrgWorkGroupMstHeader(HrmOrgWorkGroupMstQVO paramHrmOrgWorkGroupMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmOrgWorkGroupMst(HrmOrgWorkGroupMstHdrBean paramHrmOrgWorkGroupMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRatingHeaderMetaInfo(HrmOrgRatingMstQVO paramHrmOrgRatingMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRatingHeader(HrmOrgRatingMstQVO paramHrmOrgRatingMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRatingDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRatingDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRating(HrmOrgRatingMstHdrBean paramHrmOrgRatingMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCountryHeaderMetaInfo(HrmOrgCntryMstQVO paramHrmOrgCntryMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCountryHeader(HrmOrgCntryMstQVO paramHrmOrgCntryMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCountryDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCountryDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmCountry(HrmOrgCntryMstHdrBean paramHrmOrgCntryMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmQualificationDetailMetaInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmQualificationDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmQualification(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLanguageDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLanguage(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLanguageDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRelationDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRelationDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRelation(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDistrictDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmDistrict(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDistrictDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTehsilDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTehsil(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTehsilDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalendarTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassDtlLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassTypeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmHolidayTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSkillCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRatingCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCountryCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkGroupCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCostCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmBudgetCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkParentCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmContactEmployeeNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmIncrHdrMetaInfo(HrmOrgIncrementQVO paramHrmOrgIncrementQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmIncrHeaderInfo(HrmOrgIncrementQVO paramHrmOrgIncrementQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmIncrDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmIncrDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmIncrement(HrmOrgIncrementHdrBean paramHrmOrgIncrementHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getIncrRatingLOVNData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getIncrRatingLOVQData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmStateCodeInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmStateCodeQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDepDtlHdrMetaInfo(HrmEmpDepDtlQVO paramHrmEmpDepDtlQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDepDtlHdrInfo(HrmEmpDepDtlQVO paramHrmEmpDepDtlQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDepDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDepDtlInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpDepDtl(HrmEmpDepHdrBean paramHrmEmpDepHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDiscActionHdrMetaInfo(HrmEmpDiscActionQVO paramHrmEmpDiscActionQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDiscActionHdrInfo(HrmEmpDiscActionQVO paramHrmEmpDiscActionQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDiscActionMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDiscActionInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpDiscAction(HrmEmpDiscActionHdrBean paramHrmEmpDiscActionHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDiscActionSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersHdrMetaInfo(HrmEmpPersQVO paramHrmEmpPersQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersHdrInfo(HrmEmpPersQVO paramHrmEmpPersQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAddDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPersAddDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersAddDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersJoinInfMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersJoinInfInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersJoinInf(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersEduDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersEduDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersEduDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersPriorExpMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersPriorExpInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersPriorExp(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersPFDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersPFDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersPFDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersEmpHistMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersEmpHistInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersEmpHist(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersTrngDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersTrngDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersTrngDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAwardMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersAwardInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersAward(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersInsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersInsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersIns(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersHealthMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersHealthInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersHealth(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersLngMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersLngInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersLng(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersRefMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersRefInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersRef(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvCanLvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvCanLvCdInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDepDtlEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDepDtlRelTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsMotTngLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsNationalityLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsMaritalStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsDeptLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsDesigLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsSocialStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsReligionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsGradeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsRepEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsRelatedEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsStateLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsCountryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsDistrictLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsTehsilLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersPriorExpSkillLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersPriorExpDesigLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersEduDtlsInstLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersEduDtlsQualLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfBaseSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfEntryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfSepTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfCostCentreLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfBankLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfJobRespLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRelationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanMstHeaderMetaInfo(HrmLnMstQVO paramHrmLnMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanMstHeaderInfo(HrmLnMstQVO paramHrmLnMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanMstDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanMstDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurLoanMstDetail() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLoanMst(HrmLnMstHdrBean paramHrmLnMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanChartHdrMetaInfo(HrmLnChartQVO paramHrmLnChartQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanChartHdrInfo(HrmLnChartQVO paramHrmLnChartQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanChartDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanChartDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanAppHdrMetaInfo(HrmLnAppQVO paramHrmLnAppQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanAppHdrInfo(HrmLnAppQVO paramHrmLnAppQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnAppDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnDisDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnHblIntRateMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnAppDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnDisDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnHblIntRateDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLnAppDtl(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLnDisDtl(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLnHblIntRateDtl(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppInsEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String loanAppBulkPayment(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLoanChart(HrmLnChartHdrBean paramHrmLnChartHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChartNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanCodeLOVdataNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChartNameLOVdataNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanChartNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvMasterHdrMetaInfo(HrmAdvMstQueryVO paramHrmAdvMstQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvMasterHeaderInfo(HrmAdvMstQueryVO paramHrmAdvMstQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvMasterDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvMasterDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurAdvMasterDetailInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAdvanceMstHdrBean paramHrmAdvanceMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSettleDetail(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSetHdrMetaInfo(HrmSettleQueryVO paramHrmSettleQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSetHeaderInfo(HrmSettleQueryVO paramHrmSettleQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSetDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSetDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAdvSettleHds(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSettlementHdrMetaInfo(HrmAdvSettleQVO paramHrmAdvSettleQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSettlementHeader(HrmAdvSettleQVO paramHrmAdvSettleQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvSettleAdvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAdvAppHdrMetaInfo(HrmEmpAdvAppQueryVO paramHrmEmpAdvAppQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAdvAppHeaderInfo(HrmEmpAdvAppQueryVO paramHrmEmpAdvAppQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmEmpAdvAppHdrBean paramHrmEmpAdvAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String advAppBulkSettlePayment(HrmEmpAdvAppHdrBean paramHrmEmpAdvAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCodeInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCalendarCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSettleHeadsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrAdvSettleHeadsDetailMetaInfo(HrmAdvSettleHeadsQVO paramHrmAdvSettleHeadsQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAdvSettleHeadsDetail(HrmAdvSettleHeadsQVO paramHrmAdvSettleHeadsQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppAdvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppAdvCdInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvanceDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClaimMstHdrMetaInfo(HrmClaimMstQVO paramHrmClaimMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClaimMstHdrInfo(HrmClaimMstQVO paramHrmClaimMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClaimMstDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClaimMstDtlInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmClaimMst(HrmClaimMstHdrBean paramHrmClaimMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClaimCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpClaimDetailMetaInfo(HrmEmpClaimQVO paramHrmEmpClaimQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpClaimDetailInfo(HrmEmpClaimQVO paramHrmEmpClaimQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpClaim(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimDtlCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepEligLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepApplnHdrMetaInfo(HrmSepApplnQVO paramHrmSepApplnQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepApplnHeaderInfo(HrmSepApplnQVO paramHrmSepApplnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepApplnDtlMetaInfo(String paramString) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepApplnDetailInfo(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepCategoryLOVdata(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepEmpNoQLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepEmpNoNLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepOrderHdrMetaInfo(HrmSepOrderQVO paramHrmSepOrderQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepOrderHdr(HrmSepOrderQVO paramHrmSepOrderQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepOrderDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepOrderDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderApplnNoLOVQdata(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepApprNameLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepCatMasterHdrMetaInfo(HrmSepCatMstQVO paramHrmSepCatMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepCatMasterHeaderInfo(HrmSepCatMstQVO paramHrmSepCatMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepCat(HrmSepCatMstHdrBean paramHrmSepCatMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSeparationCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrLstDtlMetaInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrLstDetailInfo(long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepClrLstDetail(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrTmplMstHdrMetaInfo(HrmSepClrTmplMstQVO paramHrmSepClrTmplMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrTmplMstHdr(HrmSepClrTmplMstQVO paramHrmSepClrTmplMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrTmplMstDtlMetaInfo(String paramString) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrTmplMstDtl(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepClrTmplMstHdrBean paramHrmSepClrTmplMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepTmplLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrEmpHdrMetaInfo(HrmSepClrEmpQVO paramHrmSepClrEmpQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrEmpHdr(HrmSepClrEmpQVO paramHrmSepClrEmpQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrEmpDtlMetaInfo(String paramString) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrEmpDtl(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepClrEmpHdrBean paramHrmSepClrEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpTmplLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpEmpNoLOVQ(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpEmpNoLOVN(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getYYMMReportLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getDesigIdReportLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getMisPositionLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String InsertData(HrmMisReportHdrBean paramHrmMisReportHdrBean, ArrayList paramArrayList) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getMisDataCount(HrmMisreportQVO paramHrmMisreportQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getMisDataInfo(HrmMisreportQVO paramHrmMisreportQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmMisData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getMisYearMonthLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getYearMonth() throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String InsertData(BaseHeaderBean paramBaseHeaderBean) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo procGetRetireDataCount(HrmRetireForecastQVO paramHrmRetireForecastQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList procGetRetireDataInfo(HrmRetireForecastQVO paramHrmRetireForecastQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRetireForecastData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String InsertDataAgeAnalysis(BaseHeaderBean paramBaseHeaderBean) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMediclaimMasterHeaderMetaInfo(HrmMediclaimMasterQVO paramHrmMediclaimMasterQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMediclaimMasterHeaderInfo(HrmMediclaimMasterQVO paramHrmMediclaimMasterQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMediclaimMasterDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMediclaimMasterDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmMediclaimMaster(HrmMediclaimMasterHdrBean paramHrmMediclaimMasterHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmMediClassLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmMediCadreLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMyWorkflowHdrMetaInfo(HrmMyWorkflowQVO paramHrmMyWorkflowQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMyWorkflowHdrInfo(HrmMyWorkflowQVO paramHrmMyWorkflowQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMyWorkflowDetailMetaInfo(BaseQueryVO paramBaseQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMyWorkflowDetailInfo(BaseQueryVO paramBaseQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWorkIdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeBean.java new file mode 100644 index 0000000..81ec868 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeBean.java @@ -0,0 +1,2048 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.ejb.business.HrmLoginBO; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; +import wenrgise.hrms.vo.HrmAdvSettleQVO; +import wenrgise.hrms.vo.HrmClaimMstQVO; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; +import wenrgise.hrms.vo.HrmEmpClaimQVO; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; +import wenrgise.hrms.vo.HrmEmpPersQVO; +import wenrgise.hrms.vo.HrmLnAppQVO; +import wenrgise.hrms.vo.HrmLnChartQVO; +import wenrgise.hrms.vo.HrmLnMstQVO; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; +import wenrgise.hrms.vo.HrmMisreportQVO; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; +import wenrgise.hrms.vo.HrmRetireForecastQVO; +import wenrgise.hrms.vo.HrmSepApplnQVO; +import wenrgise.hrms.vo.HrmSepCatMstQVO; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; +import wenrgise.hrms.vo.HrmSepOrderQVO; +import wenrgise.hrms.vo.HrmSettleQueryVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; +import wenrgise.workflow.service.WorkFlowService; +import wenrgise.workflow.service.WorkFlowServiceFactory; + +public class HrmFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public UserInfo getLoginUserInfo(String sEmpId, String sSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLoginBO oBO = new HrmLoginBO(); + return oBO.getLoginUserInfo(sEmpId, sSiteId); + } + + public LovVO getHrmLeaveDetailLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveDetailLOVInfo(oLovQueryVO); + } + + public LovVO getHrmEmpLvCanLvCdLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmEmpLvCanLvCdLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpLvCanLvCdInsertLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmEmpLvCanLvCdInsertLOVdata(oLovQueryVO); + } + + public WflWorkListInfoBean getWorkListInfo(String sWorkListId) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowService workFlowService = WorkFlowServiceFactory.getService(); + return workFlowService.getWorkListInfo(sWorkListId); + } + + public RecordMetaInfo getHrmCalHeaderMetaInfo(HrmOrgCalMstQVO oHrmOrgCalMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCalHeaderMetaInfo(oHrmOrgCalMstQVO); + } + + public ArrayList getHrmCalHeader(HrmOrgCalMstQVO oHrmOrgCalMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCalHeader(oHrmOrgCalMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmCalDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCalDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmCalDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCalDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String getHrmCalStartDate(String sCalId, String sDate) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCalStartDate(sCalId, sDate); + } + + public String saveHrmCalendar(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgCalMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmClassHeaderMetaInfo(HrmOrgClassDtlQVO oHrmOrgClassDtlQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmClassHeaderMetaInfo(oHrmOrgClassDtlQVO); + } + + public ArrayList getHrmClassHeader(HrmOrgClassDtlQVO oHrmOrgClassDtlQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmClassHeader(oHrmOrgClassDtlQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmClassDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmClassDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmClassDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmClassDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmOrgClassDtl(HrmOrgClassHdrBean oHrmOrgClassHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgClassHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmClassDetailLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmClassDetailLOV(oLovQueryVO); + } + + public LovVO getHrmOrgScaleGradeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmOrgScaleGradeLOVData(oLovQueryVO); + } + + public LovVO getHrmClassDtlLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmClassDtlLOVData(oLovQueryVO); + } + + public LovVO getHrmClassTypeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmClassTypeLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmHolCalHeaderMetaInfo(HrmOrgHolCalQVO oHrmOrgHolCalQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmHolCalHeaderMetaInfo(oHrmOrgHolCalQVO); + } + + public ArrayList getHrmHolCalHeader(HrmOrgHolCalQVO oHrmOrgHolCalQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmHolCalHeader(oHrmOrgHolCalQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmHolCalDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmHolCalDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmHolCalDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmHolCalDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmHolCal(HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.saveData(oHrmOrgHolCalHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmHolTypeHeaderMetaInfo(HrmOrgHolTypeMstQVO oHrmOrgHolTypeMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmHolTypeHeaderMetaInfo(oHrmOrgHolTypeMstQVO); + } + + public ArrayList getHrmHolTypeHeader(HrmOrgHolTypeMstQVO oHrmOrgHolTypeMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmHolTypeHeader(oHrmOrgHolTypeMstQVO, lStartPosition, lLastPosition); + } + + public String saveHolidayType(HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgHolTypeMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmCalendarTypeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCalendarTypeLOVdata(oLovQueryVO); + } + + public LovVO getHrmHolidayTypeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmHolidayTypeLOVdata(oLovQueryVO); + } + + public LovVO getHrmCalNameLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCalNameLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmSkillHeaderMetaInfo(HrmOrgSkillMstQVO oHrmOrgSkillMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmSkillHeaderMetaInfo(oHrmOrgSkillMstQVO); + } + + public ArrayList getHrmSkillHeader(HrmOrgSkillMstQVO oHrmOrgSkillMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmSkillHeader(oHrmOrgSkillMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSkillDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmSkillDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSkillDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmSkillDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmSkill(HrmOrgSkillMstHdrBean oHrmOrgSkillMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgSkillMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmSkillCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmSkillCodeLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmScaleHeaderMetaInfo(HrmOrgScaleMstQVO oHrmOrgScaleMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmScaleHeaderMetaInfo(oHrmOrgScaleMstQVO); + } + + public ArrayList getHrmScaleHeader(HrmOrgScaleMstQVO oHrmOrgScaleMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmScaleHeader(oHrmOrgScaleMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmScaleDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmScaleDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmScaleDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmScaleDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmScaleMst(HrmOrgScaleMstHdrBean oHrmOrgScaleMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.saveData(oHrmOrgScaleMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmScaleMstScaleCodeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmScaleMstScaleCodeLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmRelDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRelDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmReligionDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmReligionDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmReligion(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmRatingHeaderMetaInfo(HrmOrgRatingMstQVO oHrmOrgRatingMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRatingHeaderMetaInfo(oHrmOrgRatingMstQVO); + } + + public ArrayList getHrmRatingHeader(HrmOrgRatingMstQVO oHrmOrgRatingMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRatingHeader(oHrmOrgRatingMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRatingDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRatingDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRatingDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRatingDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmRating(HrmOrgRatingMstHdrBean oHrmOrgRatingMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgRatingMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmRatingCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRatingCodeLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmCountryHeaderMetaInfo(HrmOrgCntryMstQVO oHrmOrgCntryMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCountryHeaderMetaInfo(oHrmOrgCntryMstQVO); + } + + public ArrayList getHrmCountryHeader(HrmOrgCntryMstQVO oHrmOrgCntryMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCountryHeader(oHrmOrgCntryMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmCountryDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCountryDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmCountryDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCountryDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmCountry(HrmOrgCntryMstHdrBean oHrmOrgCntryMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgCntryMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmStateCodeInsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmStateCodeInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmStateCodeQueryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmStateCodeQueryLOVdata(oLovQueryVO); + } + + public LovVO getHrmCountryCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCountryCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmSiteCodeLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmQualificationDetailMetaInfo() throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmQualificationDetailMetaInfo(); + } + + public ArrayList getHrmQualificationDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmQualificationDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmQualification(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmLanguageDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmLanguageDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLanguageDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmLanguageDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmLanguage(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmDistrictDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmDistrictDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmDistrictDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmDistrictDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmDistrict(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmTehsilDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmTehsilDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTehsilDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmTehsilDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmTehsil(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmRelationDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRelationDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRelationDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmRelationDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmRelation(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmOrgWorkGroupMstHeaderMetaInfo(HrmOrgWorkGroupMstQVO oHrmOrgWorkGroupMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmOrgWorkGroupMstHeaderMetaInfo(oHrmOrgWorkGroupMstQVO); + } + + public ArrayList getHrmOrgWorkGroupMstHeader(HrmOrgWorkGroupMstQVO oHrmOrgWorkGroupMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmOrgWorkGroupMstHeader(oHrmOrgWorkGroupMstQVO, lStartPosition, lLastPosition); + } + + public String saveHrmOrgWorkGroupMst(HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgWorkGroupMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmWorkGroupCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmWorkGroupCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmWorkSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmWorkSiteCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmWorkParentCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmWorkParentCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmCostCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmCostCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmBudgetCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmBudgetCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmContactEmployeeNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmContactEmployeeNoLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmIncrHdrMetaInfo(HrmOrgIncrementQVO oHrmOrgIncrementQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmIncrHdrMetaInfo(oHrmOrgIncrementQVO); + } + + public ArrayList getHrmIncrHeaderInfo(HrmOrgIncrementQVO oHrmOrgIncrementQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmIncrHeaderInfo(oHrmOrgIncrementQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmIncrDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmIncrDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmIncrDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getHrmIncrDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmIncrement(HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHrmOrganisationSetUpFacadeHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacade = oHrmOrganisationSetUpFacadeHome.create(); + return oHrmOrganisationSetUpFacade.saveData(oHrmOrgIncrementHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getIncrRatingLOVNData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getIncrRatingLOVNData(oLovQueryVO); + } + + public LovVO getIncrRatingLOVQData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmOrganisationSetUpFacadeLocalHome oHome = (HrmOrganisationSetUpFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmOrganisationSetUpFacadeLocal"); + HrmOrganisationSetUpFacadeLocal oHrmOrganisationSetUpFacadeLocal = oHome.create(); + return oHrmOrganisationSetUpFacadeLocal.getIncrRatingLOVQData(oLovQueryVO); + } + + public RecordMetaInfo getHrmEmpDepDtlHdrMetaInfo(HrmEmpDepDtlQVO oHrmEmpDepDtlQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDepDtlHdrMetaInfo(oHrmEmpDepDtlQVO); + } + + public ArrayList getHrmEmpDepDtlHdrInfo(HrmEmpDepDtlQVO oHrmEmpDepDtlQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDepDtlHdrInfo(oHrmEmpDepDtlQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpDepDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDepDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpDepDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDepDtlInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmEmpDepDtl(HrmEmpDepHdrBean oHrmEmpDepHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpDepHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersHdrMetaInfo(HrmEmpPersQVO oHrmEmpPersQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersHdrMetaInfo(oHrmEmpPersQVO); + } + + public ArrayList getHrmEmpPersHdrInfo(HrmEmpPersQVO oHrmEmpPersQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersHdrInfo(oHrmEmpPersQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpPersDtlsMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersDtlsInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersDtls(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersAddDtlsMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAddDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmPersAddDtlsInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmPersAddDtlsInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersAddDtls(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersJoinInfMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersJoinInfInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersJoinInf(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersEduDtlsMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersEduDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersEduDtlsInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersEduDtlsInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersEduDtls(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersPriorExpMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersPriorExpMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersPriorExpInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersPriorExpInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersPriorExp(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersPFDtlsMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersPFDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersPFDtlsInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersPFDtlsInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersPFDtls(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersEmpHistMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersEmpHistMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersEmpHistInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersEmpHistInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersEmpHist(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersTrngDtlsMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersTrngDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersTrngDtlsInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersTrngDtlsInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersTrngDtls(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersAwardMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAwardMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersAwardInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAwardInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersAward(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersInsMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersInsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersInsInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersInsInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersIns(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersHealthMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersHealthMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersHealthInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersHealthInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersHealth(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersLngMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersLngMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersLngInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersLngInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersLng(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpPersRefMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersRefMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersRefInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersRefInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersRef(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmEmpDepDtlEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDepDtlEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpDepDtlRelTypeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmplDepRelTypeLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsMotTngLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsMotTngLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsNationalityLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsNationalityLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsMaritalStatusLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsMaritalStatusLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsDeptLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsDeptLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsDesigLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsDesigLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsSocialStatusLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsSocialStatusLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsReligionLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsReligionLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsGradeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsGradeLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsRepEmpLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsRepEmpLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersDtlsRelatedEmpLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersDtlsRelatedEmpLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersAddDtlsStateLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAddDtlsStateLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersAddDtlsCountryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAddDtlsCountryLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersAddDtlsDistrictLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAddDtlsDistrictLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersAddDtlsTehsilLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAddDtlsTehsilLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersPriorExpSkillLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersPriorExpSkillLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersPriorExpDesigLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersPriorExpDesigLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersEduDtlsInstLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersEduDtlsInstLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersEduDtlsQualLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersEduDtlsQualLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersJoinInfBaseSiteLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfBaseSiteLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersJoinInfEntryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfEntryLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersJoinInfStatusLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfStatusLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersJoinInfSepTypeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfSepTypeLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersJoinInfCostCentreLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfCostCentreLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersJoinInfBankLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfBankLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpPersJoinInfJobRespLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersJoinInfJobRespLOVdata(oLovQueryVO); + } + + public LovVO getHrmRelationLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmRelationLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmEmpDiscActionHdrMetaInfo(HrmEmpDiscActionQVO oHrmEmpDiscActionQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDiscActionHdrMetaInfo(oHrmEmpDiscActionQVO); + } + + public ArrayList getHrmEmpDiscActionHdrInfo(HrmEmpDiscActionQVO oHrmEmpDiscActionQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDiscActionHdrInfo(oHrmEmpDiscActionQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpDiscActionMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDiscActionMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpDiscActionInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDiscActionInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveHrmEmpDiscAction(HrmEmpDiscActionHdrBean oHrmEmpDiscActionHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpDiscActionHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmEmpDiscActionSiteLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpDiscActionSiteLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmLoanMstHeaderMetaInfo(HrmLnMstQVO oHrmLoanMstQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanMstHeaderMetaInfo(oHrmLoanMstQueryVO); + } + + public ArrayList getHrmLoanMstHeaderInfo(HrmLnMstQVO oHrmLoanMstQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanMstHeaderInfo(oHrmLoanMstQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLoanMstDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanMstDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLoanMstDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanMstDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmCurLoanMstDetail() throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmCurLoanMstDetail(); + } + + public String saveHrmLoanMst(HrmLnMstHdrBean oHrmLnMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.saveData(oHrmLnMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmLoanChartHdrMetaInfo(HrmLnChartQVO oHrmLnChartQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanChartHdrMetaInfo(oHrmLnChartQVO); + } + + public ArrayList getHrmLoanChartHdrInfo(HrmLnChartQVO oHrmLnChartQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanChartHdrInfo(oHrmLnChartQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLoanChartDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanChartDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLoanChartDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanChartDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmLoanChart(HrmLnChartHdrBean oHrmLnChartHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHrmLoanFacadeHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacade = oHrmLoanFacadeHome.create(); + return oHrmLoanFacade.saveData(oHrmLnChartHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmLoanAppHdrMetaInfo(HrmLnAppQVO oHrmLnAppQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanAppHdrMetaInfo(oHrmLnAppQVO, oUserInfo); + } + + public ArrayList getHrmLoanAppHdrInfo(HrmLnAppQVO oHrmLnAppQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanAppHdrInfo(oHrmLnAppQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public RecordMetaInfo getHrmLnAppDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnAppDtlMetaInfo(lPrimaryKey, oUserInfo); + } + + public RecordMetaInfo getHrmLnDisDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnDisDtlMetaInfo(lPrimaryKey, oUserInfo); + } + + public RecordMetaInfo getHrmLnHblIntRateMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnHblIntRateMetaInfo(lPrimaryKey, oUserInfo); + } + + public ArrayList getHrmLnAppDtl(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnAppDtl(lPrimaryKey, lStartPosition, lLastPosition, oUserInfo); + } + + public ArrayList getHrmLnDisDtl(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnDisDtl(lPrimaryKey, lStartPosition, lLastPosition, oUserInfo); + } + + public ArrayList getHrmLnHblIntRateDtl(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnHblIntRateDtl(lPrimaryKey, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveHrmLnAppDtl(HrmLnAppHdrBean oHrmLnAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.saveData(oHrmLnAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmLnDisDtl(HrmLnAppHdrBean oHrmLnAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.saveData(oHrmLnAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmLnHblIntRateDtl(HrmLnAppHdrBean oHrmLnAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.saveData(oHrmLnAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmLnAppEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnAppEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvAppEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceFacadeLocal = oHome.create(); + return oHrmAdvanceFacadeLocal.getHrmAdvAppEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvAppInsEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceFacadeLocal = oHome.create(); + return oHrmAdvanceFacadeLocal.getHrmAdvAppInsEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmLnAppEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnAppEmpNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmLnAppLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnAppLOVdata(oLovQueryVO); + } + + public LovVO getHrmLnAppInsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLnAppInsLOVdata(oLovQueryVO); + } + + public String loanAppBulkPayment(HrmLnAppHdrBean oHrmLnAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.loanAppBulkPayment(oHrmLnAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmLoanDetailLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanDetailLOVInfo(oLovQueryVO); + } + + public LovVO getHrmLoanCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmChartNameLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmChartNameLOVdata(oLovQueryVO); + } + + public LovVO getHrmLoanCodeLOVdataNew(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanCodeLOVdataNew(oLovQueryVO); + } + + public LovVO getHrmChartNameLOVdataNew(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmChartNameLOVdataNew(oLovQueryVO); + } + + public LovVO getHrmLoanChartNameLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmLoanChartNameLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmAdvMasterHdrMetaInfo(HrmAdvMstQueryVO oHrmAdvMstQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvMstHeaderMetaInfo(oHrmAdvMstQueryVO); + } + + public ArrayList getHrmAdvMasterHeaderInfo(HrmAdvMstQueryVO oHrmAdvMstQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvMstHeader(oHrmAdvMstQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAdvMasterDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAdvMasterDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmCurAdvMasterDetailInfo() throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmCurAdvDetail(); + } + + public String saveData(HrmAdvanceMstHdrBean oHrmAdvanceMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.saveData(oHrmAdvanceMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmSettleDetail(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.saveAdvSetData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmAdvSetHdrMetaInfo(HrmSettleQueryVO oHrmSettleQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvSetHeaderMetaInfo(oHrmSettleQueryVO); + } + + public ArrayList getHrmAdvSetHeaderInfo(HrmSettleQueryVO oHrmSettleQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvSetHeader(oHrmSettleQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAdvSetDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvSetDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAdvSetDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvSetDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrAdvSettleHeadsDetailMetaInfo(HrmAdvSettleHeadsQVO oHrmAdvSettleHeadsQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrAdvSettleHeadsDetailMetaInfo(oHrmAdvSettleHeadsQVO); + } + + public ArrayList getHrAdvSettleHeadsDetail(HrmAdvSettleHeadsQVO oHrmAdvSettleHeadsQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrAdvSettleHeadsDetail(oHrmAdvSettleHeadsQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAdvSettleHds(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.saveHrmAdvSettleHds(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpAdvAppHdrMetaInfo(HrmEmpAdvAppQueryVO oHrmEmpAdvAppQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpAdvAppHeaderMetaInfo(oHrmEmpAdvAppQueryVO); + } + + public ArrayList getHrmEmpAdvAppHeaderInfo(HrmEmpAdvAppQueryVO oHrmEmpAdvAppQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpAdvAppHeader(oHrmEmpAdvAppQueryVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.saveData(oHrmEmpAdvAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String advAppBulkSettlePayment(HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.advAppBulkSettlePayment(oHrmEmpAdvAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmAdvSettlementHdrMetaInfo(HrmAdvSettleQVO oHrmAdvSettleQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvSettlementHdrMetaInfo(oHrmAdvSettleQVO); + } + + public ArrayList getHrmAdvSettlementHeader(HrmAdvSettleQVO oHrmAdvSettleQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvSettlementHeader(oHrmAdvSettleQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmAdvSettleAdvCdLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvSettleAdvCdLOVdata(oLovQueryVO); + } + + public String saveData(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.saveData(oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveAdvSettlement(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.approveAdvSettlement(oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String creditLeaves(HrmLvCreditHdrBean oHrmLvCreditHdrBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.creditLeaves(oHrmLvCreditHdrBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + } + + public String rejectAdvSettlement(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.rejectAdvSettlement(oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String submitAdvSettlement(HrmAdvSettleHdrBean oHrmAdvSettleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.submitAdvSettlement(oHrmAdvSettleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmAdvMstCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvMstCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvMstCodeInsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvMstCodeInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmSettleHeadsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmSettleHeadsLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvMstCalendarCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvMstCalendarCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvAppAdvCdLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvAppAdvCdLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvAppAdvCdInsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvAppAdvCdInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmAdvanceDetailLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmAdvAppAdvEligLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmClaimMstHdrMetaInfo(HrmClaimMstQVO oHrmClaimMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmClaimMstHdrMetaInfo(oHrmClaimMstQVO); + } + + public ArrayList getHrmClaimMstHdrInfo(HrmClaimMstQVO oHrmClaimMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmClaimMstHdrInfo(oHrmClaimMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmClaimMstDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmClaimMstDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmClaimMstDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmClaimMstDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmClaimMst(HrmClaimMstHdrBean oHrmClaimMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.saveData(oHrmClaimMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmClaimCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmClaimCodeLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmEmpClaimDetailMetaInfo(HrmEmpClaimQVO oHrmEmpClaimQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpClaimDtlMetaInfo(oHrmEmpClaimQVO); + } + + public ArrayList getHrmEmpClaimDetailInfo(HrmEmpClaimQVO oHrmEmpClaimQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpClaimDetailInfo(oHrmEmpClaimQVO, lStartPosition, lLastPosition); + } + + public String saveHrmEmpClaim(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.saveHrmEmpClaim(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmEmpClaimEmpLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpClaimEmpLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpClaimCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpClaimCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpClaimDtlCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpClaimDtlCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpClaimNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpClaimNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAdvanceClaimFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceClaimFacadeLocal = oHome.create(); + return oHrmAdvanceClaimFacadeLocal.getHrmEmpEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmSepEligLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepEligLOV(oLovQueryVO); + } + + public LovVO getHrmSeparationCodeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSeparationCodeLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmSepApplnHdrMetaInfo(HrmSepApplnQVO oHrmSepApplnQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepApplnHdrMetaInfo(oHrmSepApplnQVO); + } + + public ArrayList getHrmSepApplnHeaderInfo(HrmSepApplnQVO oHrmSepApplnQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepApplnHeaderInfo(oHrmSepApplnQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepApplnDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepApplnDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepApplnDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepApplnDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmSepApplnNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmSepCategoryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepCategoryLOVdata(oLovQueryVO); + } + + public String saveHrmSepAppln(HrmSepApplnHdrBean oHrmSepApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.saveData(oHrmSepApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveSepAppln(HrmSepApplnHdrBean oHrmSepApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.approveSepAppln(oHrmSepApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String rejectSepAppln(HrmSepApplnHdrBean oHrmSepApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.rejectSepAppln(oHrmSepApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getSepEmpNoQLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getSepEmpNoQLOVData(oLovQueryVO); + } + + public LovVO getSepEmpNoNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getSepEmpNoNLOVData(oLovQueryVO); + } + + public LovVO getHrmSepOrderNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmSepOrderApplnNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepOrderApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmSepOrderApplnNoLOVQdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepOrderApplnNoQLOVdata(oLovQueryVO); + } + + public LovVO getSepApprNameLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getSepApprNameLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmSepOrderHdrMetaInfo(HrmSepOrderQVO oHrmSepOrderQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepOrderHdrMetaInfo(oHrmSepOrderQVO); + } + + public ArrayList getHrmSepOrderHdr(HrmSepOrderQVO oHrmSepOrderQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepOrderHdr(oHrmSepOrderQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepOrderDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepOrderDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepOrderDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepOrderDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmSepOrder(HrmSepOrderHdrBean oHrmSepOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.saveData(oHrmSepOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveSepOrder(HrmSepOrderHdrBean oHrmSepOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.approveSepOrder(oHrmSepOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String rejectSepOrder(HrmSepOrderHdrBean oHrmSepOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.rejectSepOrder(oHrmSepOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmSepClrLstDtlMetaInfo() throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrLstDtlMetaInfo(); + } + + public ArrayList getHrmSepClrLstDetailInfo(long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrLstDetailInfo(lStartPosition, lLastPosition); + } + + public String saveHrmSepClrLstDetail(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.saveClrListData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmSepClrTmplMstHdrMetaInfo(HrmSepClrTmplMstQVO oHrmSepEmpClrQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrTmplMstHdrMetaInfo(oHrmSepEmpClrQVO); + } + + public ArrayList getHrmSepClrTmplMstHdr(HrmSepClrTmplMstQVO oHrmSepEmpClrQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrTmplMstHdr(oHrmSepEmpClrQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepClrTmplMstDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrTmplMstDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepClrTmplMstDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrTmplMstDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmSepClrTmplMstHdrBean oHrmSepEmpClrHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.saveData(oHrmSepEmpClrHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmSepClrLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrLOV(oLovQueryVO); + } + + public LovVO getHrmSepTmplLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepTmplLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmSepClrEmpHdrMetaInfo(HrmSepClrEmpQVO oHrmSepEmpClrQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrEmpHdrMetaInfo(oHrmSepEmpClrQVO); + } + + public ArrayList getHrmSepClrEmpHdr(HrmSepClrEmpQVO oHrmSepEmpClrQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrEmpHdr(oHrmSepEmpClrQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepClrEmpDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrEmpDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepClrEmpDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrEmpDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmSepClrEmpHdrBean oHrmSepEmpClrHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.saveData(oHrmSepEmpClrHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmSepClrEmpTmplLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrEmpTmplLOV(oLovQueryVO); + } + + public LovVO getHrmSepClrEmpEmpNoLOVQ(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrEmpEmpNoLOVQ(oLovQueryVO); + } + + public LovVO getHrmSepClrEmpEmpNoLOVN(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepClrEmpEmpNoLOVN(oLovQueryVO); + } + + public RecordMetaInfo getHrmSepCatMasterHdrMetaInfo(HrmSepCatMstQVO oHrmSepCatMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepCatHeaderMetaInfo(oHrmSepCatMstQVO); + } + + public ArrayList getHrmSepCatMasterHeaderInfo(HrmSepCatMstQVO oHrmSepCatMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.getHrmSepCatHeader(oHrmSepCatMstQVO, lStartPosition, lLastPosition); + } + + public String saveHrmSepCat(HrmSepCatMstHdrBean oHrmSepCatMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmSeparationFacadeLocalHome oHome = (HrmSeparationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmSeparationFacadeLocal"); + HrmSeparationFacadeLocal oHrmSeparationFacadeLocal = oHome.create(); + return oHrmSeparationFacadeLocal.saveData(oHrmSepCatMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getYYMMReportLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceFacadeLocal = oHome.create(); + return oHrmAdvanceFacadeLocal.getYYMMReportLOVData(oLovQueryVO); + } + + public LovVO getDesigIdReportLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAdvanceClaimFacadeLocalHome oHome = (HrmAdvanceClaimFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmAdvanceClaimFacadeLocal oHrmAdvanceFacadeLocal = oHome.create(); + return oHrmAdvanceFacadeLocal.getDesigIdReportLOVData(oLovQueryVO); + } + + public LovVO getMisPositionLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmEmployeeMaintenanceFacadeLocal.getMisPositionLOVData(oLovQueryVO); + return oLovVO; + } + + public String InsertData(HrmMisReportHdrBean oHrmMisReportHdrBean, ArrayList oDetailBeanArray) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.InsertData(oHrmMisReportHdrBean, oDetailBeanArray); + } + + public RecordMetaInfo getMisDataCount(HrmMisreportQVO oHrmMisreportQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getMisDataCount(oHrmMisreportQVO); + } + + public ArrayList getMisDataInfo(HrmMisreportQVO oHrmMisreportQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getMisDataInfo(oHrmMisreportQVO, lStartPosition, lLastPosition); + } + + public String saveHrmMisData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveHrmMisData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getMisYearMonthLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmEmployeeMaintenanceFacadeLocal.getMisYearMonthLOVData(oLovQueryVO); + return oLovVO; + } + + public String getYearMonth() throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getYearMonth(); + } + + public String InsertData(BaseHeaderBean oBaseHeaderBean) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.InsertData(oBaseHeaderBean); + } + + public RecordMetaInfo procGetRetireDataCount(HrmRetireForecastQVO oHrmRetireForecastQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.procGetRetireDataCount(oHrmRetireForecastQVO); + } + + public ArrayList procGetRetireDataInfo(HrmRetireForecastQVO oHrmRetireForecastQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.procGetRetireDataInfo(oHrmRetireForecastQVO, lStartPosition, lLastPosition); + } + + public String saveHrmRetireForecastData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveHrmRetireForecastData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String InsertDataAgeAnalysis(BaseHeaderBean oBaseHeaderBean) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.InsertDataAgeAnalysis(oBaseHeaderBean); + } + + public RecordMetaInfo getHrmMediclaimMasterHeaderMetaInfo(HrmMediclaimMasterQVO oHrmMediclaimMasterQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmMediclaimMasterHeaderMetaInfo(oHrmMediclaimMasterQVO); + } + + public ArrayList getHrmMediclaimMasterHeaderInfo(HrmMediclaimMasterQVO oHrmMediclaimMasterQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmMediclaimMasterHeaderInfo(oHrmMediclaimMasterQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmMediclaimMasterDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmMediclaimMasterDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmMediclaimMasterDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmMediclaimMasterDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmMediclaimMaster(HrmMediclaimMasterHdrBean oHrmMediclaimMasterHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.saveData(oHrmMediclaimMasterHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmMediCadreLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmMediCadreLOVdata(oLovQueryVO); + } + + public LovVO getHrmMediClassLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLoanFacadeLocalHome oHome = (HrmLoanFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLoanFacadeLocal"); + HrmLoanFacadeLocal oHrmLoanFacadeLocal = oHome.create(); + return oHrmLoanFacadeLocal.getHrmMediClassLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmMyWorkflowHdrMetaInfo(HrmMyWorkflowQVO oHrmMyWorkflowQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmMyWorkflowHdrMetaInfo(oHrmMyWorkflowQVO); + } + + public ArrayList getHrmMyWorkflowHdrInfo(HrmMyWorkflowQVO oHrmMyWorkflowQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmMyWorkflowHdrInfo(oHrmMyWorkflowQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmMyWorkflowDetailMetaInfo(BaseQueryVO oBaseQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmMyWorkflowDetailMetaInfo(oBaseQueryVO); + } + + public ArrayList getHrmMyWorkflowDetailInfo(BaseQueryVO oBaseQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmMyWorkflowDetailInfo(oBaseQueryVO, lStartPosition, lLastPosition); + } + + public LovVO getWorkIdLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getWorkIdLOVdata(oLovQueryVO); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeHome.java new file mode 100644 index 0000000..f125150 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmFacadeHome.java @@ -0,0 +1,9 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface HrmFacadeHome extends EJBHome { + HrmFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeBean.java new file mode 100644 index 0000000..eedbb7a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeBean.java @@ -0,0 +1,457 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.ejb.business.HrmLvApplnBO; +import wenrgise.hrms.ejb.business.HrmLvCancQueryBO; +import wenrgise.hrms.ejb.business.HrmLvCreditBO; +import wenrgise.hrms.ejb.business.HrmLvEncashBO; +import wenrgise.hrms.ejb.business.HrmLvLedgerBO; +import wenrgise.hrms.ejb.business.HrmLvMstBO; +import wenrgise.hrms.vo.HrmLvApplnQVO; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; +import wenrgise.hrms.vo.HrmLvCancQVO; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; +import wenrgise.hrms.vo.HrmLvEncashQVO; +import wenrgise.hrms.vo.HrmLvLedgerQVO; +import wenrgise.hrms.vo.HrmLvMstQVO; + +public class HrmLeaveFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmLeaveMasterHdrMetaInfo(HrmLvMstQVO oHrmLvMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(); + return oHrmLvMstBO.getHrmLeaveMasterHdrMetaInfo(oHrmLvMstQVO); + } + + public ArrayList getHrmLeaveMasterHeaderInfo(HrmLvMstQVO oHrmLvMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(); + return oHrmLvMstBO.getHrmLeaveMasterHeaderInfo(oHrmLvMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLeaveMasterDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(); + return oHrmLvMstBO.getHrmLeaveMasterDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLeaveMasterDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(); + return oHrmLvMstBO.getHrmLeaveMasterDetailInfo(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public ArrayList getHrmCurLeaveMasterDetailInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(); + return oHrmLvMstBO.getHrmCurLeaveMasterDetailInfo(); + } + + public LovVO getHrmLeaveDetailLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(); + return oHrmLvMstBO.getHrmLeaveDetailLOVInfo(oLovQueryVO); + } + + public LovVO getHrmLeaveMasterLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oLeaveMst = new HrmLvMstBO(); + LovVO oLovVO = oLeaveMst.getHrmLeaveMasterLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLvMstStateLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oLeaveMst = new HrmLvMstBO(); + LovVO oLovVO = oLeaveMst.getHrmLvMstStateLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLeaveCodeInsertLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oLeaveMst = new HrmLvMstBO(); + LovVO oLovVO = oLeaveMst.getHrmLeaveCodeInsertLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLeaveMasterCalLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvMstBO oLeaveMst = new HrmLvMstBO(); + LovVO oLovVO = oLeaveMst.getHrmLeaveMasterCalLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmLvMstHdrBean oHrmLvMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(oUserInfo); + return oHrmLvMstBO.saveData((BaseHeaderBean)oHrmLvMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public void updateLeaveMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvMstBO oHrmLvMstBO = new HrmLvMstBO(); + oHrmLvMstBO.updateLeaveMst(sSql, sId, sUserId, sUserSiteId); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmLeaveLedgerDtlMetaInfo(HrmLvLedgerQVO oHrmLvLedgerQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oHrmLvLedgerBO = new HrmLvLedgerBO(); + return oHrmLvLedgerBO.getEmpLeaveLedgerDetailMetaInfo(oHrmLvLedgerQVO); + } + + public ArrayList getHrmLeaveLedgerDetailInfo(HrmLvLedgerQVO oHrmLvLedgerQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oHrmLvLedgerBO = new HrmLvLedgerBO(); + return oHrmLvLedgerBO.getHrEmpLeaveLedgerDetail(oHrmLvLedgerQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmLeaveLedgerTxnDtlMetaInfo(HrmLvLedgerQVO oHrmLvLedgerQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oHrmLvLedgerBO = new HrmLvLedgerBO(); + return oHrmLvLedgerBO.getHrEmpLeaveLedgerTxnDetail(oHrmLvLedgerQVO); + } + + public ArrayList getHrmLeaveLedgerTxnDetailInfo(HrmLvLedgerQVO oHrmLvLedgerQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oHrmLvLedgerBO = new HrmLvLedgerBO(); + return oHrmLvLedgerBO.getHrEmpLeaveLedgerTxnDetail(oHrmLvLedgerQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public LovVO getHrmEmployeeNumberLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oLeaveLdgr = new HrmLvLedgerBO(); + LovVO oLovVO = oLeaveLdgr.getHrmEmployeeNumberLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLeaveCodesLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oLeaveLdgr = new HrmLvLedgerBO(); + LovVO oLovVO = oLeaveLdgr.getHrmLeaveCodesLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getEmpCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oLeaveLdgr = new HrmLvLedgerBO(); + LovVO oLovVO = oLeaveLdgr.getEmpCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String getGroupInfo(String oUserTypeId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerBO oLeaveLdgr = new HrmLvLedgerBO(); + String groupId = oLeaveLdgr.getGroupInfo(oUserTypeId); + return groupId; + } + + public String saveData(HrmLvLedgerHdrBean oHrmLvLedgerHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvLedgerBO oHrmLvLedgerBO = new HrmLvLedgerBO(oUserInfo); + return oHrmLvLedgerBO.saveData((BaseHeaderBean)oHrmLvLedgerHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmEmpLeaveEncashHdrMetaInfo(HrmLvEncashQVO oHrmLvEncashQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvEncashBO oHrmLvEncashBO = new HrmLvEncashBO(); + return oHrmLvEncashBO.getEmpLeaveEncashHdrMetaInfo(oHrmLvEncashQVO); + } + + public ArrayList getHrmEmpLeaveEncashHdrInfo(HrmLvEncashQVO oHrmLvEncashQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvEncashBO oHrmLvEncashBO = new HrmLvEncashBO(); + return oHrmLvEncashBO.getEmpLeaveEncashHeader(oHrmLvEncashQVO, lStartPosition, lLastPosition); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(); + } + } + + public LovVO getHrmLeaveTypesLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvEncashBO oLeaveEncsh = new HrmLvEncashBO(); + LovVO oLovVO = oLeaveEncsh.getHrmLeaveTypesLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLvEncashEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvEncashBO oLeaveEncsh = new HrmLvEncashBO(); + LovVO oLovVO = oLeaveEncsh.getHrmLvEncashEmpNoQLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLvEncashEmpNoNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvEncashBO oLeaveEncsh = new HrmLvEncashBO(); + LovVO oLovVO = oLeaveEncsh.getHrmLvEncashEmpNoNLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEncshLvCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvEncashBO oLeaveEncsh = new HrmLvEncashBO(); + LovVO oLovVO = oLeaveEncsh.getHrmEncshLvCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvEncashBO oHrmLvEncashBO = new HrmLvEncashBO(oUserInfo); + return oHrmLvEncashBO.saveData((BaseHeaderBean)oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveLeaveEncash(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvEncashBO oHrmLvEncashBO = new HrmLvEncashBO(oUserInfo); + return oHrmLvEncashBO.approveLeaveEncash((BaseHeaderBean)oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectLvEncash(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvEncashBO oHrmLvEncashBO = new HrmLvEncashBO(oUserInfo); + return oHrmLvEncashBO.rejectLvEncash((BaseHeaderBean)oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String submitLvEncash(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvEncashBO oHrmLvEncashBO = new HrmLvEncashBO(oUserInfo); + return oHrmLvEncashBO.submitLvEncash((BaseHeaderBean)oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmLvApplnEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oBO = new HrmLvApplnBO(); + LovVO oLovVO = oBO.getHrmLvApplnEmpNoQLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLvApplnEmpNoNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oBO = new HrmLvApplnBO(); + LovVO oLovVO = oBO.getHrmLvApplnEmpNoNLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpLeaveAppQueryDtlMetaInfo(HrmLvApplnQueryQVO oHrmLvApplnQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(); + return oHrmLvApplnBO.getEmpLeaveApplicationQueryDetailMetaInfo(oHrmLvApplnQueryQVO); + } + + public ArrayList getHrmEmpLeaveAppQueryDtlInfo(HrmLvApplnQueryQVO oHrmLvApplnQueryQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(); + return oHrmLvApplnBO.getHrEmpLeaveApplicationQueryDetail(oHrmLvApplnQueryQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public String saveData(HrmLvApplnHdrBean oHrmLvApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(oUserInfo); + return oHrmLvApplnBO.saveData((BaseHeaderBean)oHrmLvApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public ArrayList getLeaveDates(HrmLvApplnHdrBean oLvApplHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(); + return oHrmLvApplnBO.getLeaveDates(oLvApplHdrBean); + } + + public String approveLeaveAppln(HrmLvApplnHdrBean oHrmLvApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(oUserInfo); + return oHrmLvApplnBO.approveLeaveAppln((BaseHeaderBean)oHrmLvApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String CancelLeaveAppln(HrmLvApplnHdrBean oHrmLvApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(oUserInfo); + return oHrmLvApplnBO.cancelLeaveAppln((BaseHeaderBean)oHrmLvApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmEmpLvAppLvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oLeaveApp = new HrmLvApplnBO(); + LovVO oLovVO = oLeaveApp.getHrmEmpLvAppLvCdLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpLvAppLvCdInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oLeaveApp = new HrmLvApplnBO(); + LovVO oLovVO = oLeaveApp.getHrmEmpLvAppLvCdInsLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpLeaveAppQueryScreenDtlMetaInfo(HrmLvApplnQVO oHrmLvApplnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(); + return oHrmLvApplnBO.getEmpLeaveApplicationQueryScreenDetailMetaInfo(oHrmLvApplnQVO); + } + + public ArrayList getHrmEmpLeaveAppQueryScreenDtlInfo(HrmLvApplnQVO oHrmLvApplnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oHrmLvApplnBO = new HrmLvApplnBO(); + return oHrmLvApplnBO.getHrEmpLeaveApplicationQueryScreenDetail(oHrmLvApplnQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmLvAppQryLvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oLeaveApp = new HrmLvApplnBO(); + LovVO oLovVO = oLeaveApp.getHrmLvAppQryLvCdLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLvAppQryEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvApplnBO oLeaveApp = new HrmLvApplnBO(); + LovVO oLovVO = oLeaveApp.getHrmLvAppQryEmpNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmLeaveCanQueryDtlMetaInfo(HrmLvCancQueryQVO oHrmLvCancQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oHrmLvCancQueryBO = new HrmLvCancQueryBO(); + return oHrmLvCancQueryBO.getLeaveCanQueryDetailMetaInfo(oHrmLvCancQueryQVO); + } + + public ArrayList getHrmLeaveCanQueryDetailInfo(HrmLvCancQueryQVO oHrmLvCancQueryQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oHrmLvCancQueryBO = new HrmLvCancQueryBO(); + return oHrmLvCancQueryBO.getHrLeaveCanQueryDetail(oHrmLvCancQueryQVO, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmEmpLeaveCanQueryScreenDtlMetaInfo(HrmLvCancQVO oHrmLvCancQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oHrmLvCancQueryBO = new HrmLvCancQueryBO(); + return oHrmLvCancQueryBO.getEmpLeaveCancellationQueryScreenDetailMetaInfo(oHrmLvCancQVO); + } + + public ArrayList getHrmEmpLeaveCanQueryScreenDtlInfo(HrmLvCancQVO oHrmLvCancQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oHrmLvCancQueryBO = new HrmLvCancQueryBO(); + return oHrmLvCancQueryBO.getHrEmpLeaveCancellationQueryScreenDetail(oHrmLvCancQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmEmpLvCanLvCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oLeaveCan = new HrmLvCancQueryBO(); + LovVO oLovVO = oLeaveCan.getHrmEmpLvCanLvCdLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmEmpLvCanLvCdInsertLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oLeaveCan = new HrmLvCancQueryBO(); + LovVO oLovVO = oLeaveCan.getHrmEmpLvCanLvCdInsertLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmCnclLeaveEmpLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oLeaveCan = new HrmLvCancQueryBO(); + LovVO oLovVO = oLeaveCan.getHrmCnclLeaveEmpLOV(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmCnclLeaveTypeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCancQueryBO oLeaveCan = new HrmLvCancQueryBO(); + LovVO oLovVO = oLeaveCan.getHrmCnclLeaveTypeLOV(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmLvCancHdrBean oHrmLvCancHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvCancQueryBO oHrmLvCancQueryBO = new HrmLvCancQueryBO(oUserInfo); + return oHrmLvCancQueryBO.saveData((BaseHeaderBean)oHrmLvCancHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveLeaveCanc(HrmLvCancHdrBean oHrmLvCancHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLvCancQueryBO oHrmLvCancQueryBO = new HrmLvCancQueryBO(oUserInfo); + return oHrmLvCancQueryBO.approveLeaveCanc((BaseHeaderBean)oHrmLvCancHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmLvCreditRegionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCreditBO oHrmLvCreditBO = new HrmLvCreditBO(); + LovVO oLovVO = oHrmLvCreditBO.getHrmLvCreditRegionLOVdata(oLovQueryVO); + return oLovVO; + } + + public String creditLeaves(HrmLvCreditHdrBean oHrmLvCreditHdrBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvCreditBO oHrmLvCreditBO = new HrmLvCreditBO(); + return oHrmLvCreditBO.creditLv(oHrmLvCreditHdrBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocal.java new file mode 100644 index 0000000..f8213e1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocal.java @@ -0,0 +1,140 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.vo.HrmLvApplnQVO; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; +import wenrgise.hrms.vo.HrmLvCancQVO; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; +import wenrgise.hrms.vo.HrmLvEncashQVO; +import wenrgise.hrms.vo.HrmLvLedgerQVO; +import wenrgise.hrms.vo.HrmLvMstQVO; + +public interface HrmLeaveFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmLeaveMasterHdrMetaInfo(HrmLvMstQVO paramHrmLvMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveMasterHeaderInfo(HrmLvMstQVO paramHrmLvMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveMasterDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveMasterDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurLeaveMasterDetailInfo() throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveDetailLOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + void updateLeaveMst(String paramString1, String paramString2, String paramString3, String paramString4) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveMasterLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvMstStateLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveCodeInsertLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveMasterCalLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvMstHdrBean paramHrmLvMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveLedgerDtlMetaInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveLedgerDetailInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvLedgerHdrBean paramHrmLvLedgerHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveLedgerTxnDtlMetaInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveLedgerTxnDetailInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmployeeNumberLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveCodesLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getGroupInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveEncashHdrMetaInfo(HrmLvEncashQVO paramHrmLvEncashQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveEncashHdrInfo(HrmLvEncashQVO paramHrmLvEncashQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveTypesLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvEncashEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvEncashEmpNoNLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEncshLvCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectLvEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitLvEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveAppQueryDtlMetaInfo(HrmLvApplnQueryQVO paramHrmLvApplnQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveAppQueryDtlInfo(HrmLvApplnQueryQVO paramHrmLvApplnQueryQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvAppLvCdLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvAppLvCdInsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveAppln(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String CancelLeaveAppln(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvApplnEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvApplnEmpNoNLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveAppQueryScreenDtlMetaInfo(HrmLvApplnQVO paramHrmLvApplnQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveAppQueryScreenDtlInfo(HrmLvApplnQVO paramHrmLvApplnQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvAppQryEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvAppQryLvCdLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getLeaveDates(HrmLvApplnHdrBean paramHrmLvApplnHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveCanQueryDtlMetaInfo(HrmLvCancQueryQVO paramHrmLvCancQueryQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveCanQueryDetailInfo(HrmLvCancQueryQVO paramHrmLvCancQueryQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveCanQueryScreenDtlMetaInfo(HrmLvCancQVO paramHrmLvCancQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveCanQueryScreenDtlInfo(HrmLvCancQVO paramHrmLvCancQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvCanLvCdLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvCanLvCdInsertLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvCancHdrBean paramHrmLvCancHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveCanc(HrmLvCancHdrBean paramHrmLvCancHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclLeaveEmpLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclLeaveTypeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvCreditRegionLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String creditLeaves(HrmLvCreditHdrBean paramHrmLvCreditHdrBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocalHome.java new file mode 100644 index 0000000..0ad01a8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLeaveFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmLeaveFacadeLocalHome extends EJBLocalHome { + HrmLeaveFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeBean.java new file mode 100644 index 0000000..3daa719 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeBean.java @@ -0,0 +1,263 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.ejb.business.HrmLnAppBO; +import wenrgise.hrms.ejb.business.HrmLnChartBO; +import wenrgise.hrms.ejb.business.HrmLnMstBO; +import wenrgise.hrms.ejb.business.HrmMediclaimMasterBO; +import wenrgise.hrms.vo.HrmLnAppQVO; +import wenrgise.hrms.vo.HrmLnChartQVO; +import wenrgise.hrms.vo.HrmLnMstQVO; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; + +public class HrmLoanFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmLoanMstHeaderMetaInfo(HrmLnMstQVO oHrmLoanMstQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oHrmLoanMstBusinessObject = new HrmLnMstBO(); + return oHrmLoanMstBusinessObject.getHrmLoanMstHdrMetaInfo(oHrmLoanMstQueryVO); + } + + public ArrayList getHrmLoanMstHeaderInfo(HrmLnMstQVO oHrmLoanMstQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oHrmLoanMstBusinessObject = new HrmLnMstBO(); + return oHrmLoanMstBusinessObject.getHrmLoanMstHeaderInfo(oHrmLoanMstQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLoanMstDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oHrmLoanMstBusinessObject = new HrmLnMstBO(); + return oHrmLoanMstBusinessObject.getHrmLoanMstDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLoanMstDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oHrmLoanMstBusinessObject = new HrmLnMstBO(); + return oHrmLoanMstBusinessObject.getHrmLoanMstDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmCurLoanMstDetail() throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oHrmLoanMstBusinessObject = new HrmLnMstBO(); + return oHrmLoanMstBusinessObject.getHrmCurLoanMstDetailInfo(); + } + + public LovVO getHrmLoanDetailLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oHrmLoanMstBusinessObject = new HrmLnMstBO(); + return oHrmLoanMstBusinessObject.getHrmLoanDetailLOVInfo(oLovQueryVO); + } + + public LovVO getHrmLoanCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oLoanChart = new HrmLnMstBO(); + LovVO oLovVO = oLoanChart.getHrmLoanCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmChartNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO LoanMaster = new HrmLnMstBO(); + LovVO oLovVO = LoanMaster.getHrmChartNameLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLoanCodeLOVdataNew(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO LoanMaster = new HrmLnMstBO(); + LovVO oLovVO = LoanMaster.getHrmLoanCodeLOVdataNew(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmChartNameLOVdataNew(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO LoanMaster = new HrmLnMstBO(); + LovVO oLovVO = LoanMaster.getHrmChartNameLOVdataNew(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmLnMstHdrBean oHrmLnMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oLoanMaster = new HrmLnMstBO(oUserInfo); + return oLoanMaster.saveData((BaseHeaderBean)oHrmLnMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public void updateLoanMst(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnMstBO oLoanMasterBusinessObject = new HrmLnMstBO(); + oLoanMasterBusinessObject.updateLoanMst(sSql, sId, sUserId, sUserSiteId); + } + + public RecordMetaInfo getHrmLoanChartHdrMetaInfo(HrmLnChartQVO oHrmLnChartQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnChartBO oHrmLnChartBO = new HrmLnChartBO(); + return oHrmLnChartBO.getHrmLoanChartHdrMetaInfo(oHrmLnChartQVO); + } + + public ArrayList getHrmLoanChartHdrInfo(HrmLnChartQVO oHrmLnChartQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnChartBO oHrmLnChartBO = new HrmLnChartBO(); + return oHrmLnChartBO.getHrmLoanChartHdrInfo(oHrmLnChartQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLoanChartDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnChartBO oHrmLnChartBO = new HrmLnChartBO(); + return oHrmLnChartBO.getHrmLoanChartDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLoanChartDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnChartBO oHrmLnChartBO = new HrmLnChartBO(); + return oHrmLnChartBO.getHrmLoanChartDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmLoanChartNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnChartBO oLoanChart = new HrmLnChartBO(); + LovVO oLovVO = oLoanChart.getHrmLoanChartNameLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmLnChartHdrBean oHrmLnChartHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLnChartBO oHrmLnChartBO = new HrmLnChartBO(oUserInfo); + return oHrmLnChartBO.saveData((BaseHeaderBean)oHrmLnChartHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmLoanAppHdrMetaInfo(HrmLnAppQVO oHrmLnAppQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrEmpLoanAppHdrMetaInfo(oHrmLnAppQVO); + } + + public ArrayList getHrmLoanAppHdrInfo(HrmLnAppQVO oHrmLnAppQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrEmpLoanAppHeader(oHrmLnAppQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLnAppDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrmLnAppDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmLnDisDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrmLnDisDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmLnHblIntRateMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrmLnHblIntRateMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLnAppDtl(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrmLnAppDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmLnDisDtl(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrmLnDisDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmLnHblIntRateDtl(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.getHrmLnHblIntRateDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String loanAppBulkPayment(HrmLnAppHdrBean oHrmLnAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppHdrBean.getHeaderPrimaryKey(); + } + + public LovVO getHrmLnAppEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(); + LovVO oLovVO = oHrmLnAppBO.getHrmLnAppEmpNoQLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLnAppEmpNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(); + LovVO oLovVO = oHrmLnAppBO.getHrmLnAppEmpNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLnAppLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(); + LovVO oLovVO = oHrmLnAppBO.getHrmLnAppLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLnAppInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(); + LovVO oLovVO = oHrmLnAppBO.getHrmLnAppInsLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmLnAppHdrBean oHrmLnAppHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLnAppBO oHrmLnAppBO = new HrmLnAppBO(oUserInfo); + return oHrmLnAppBO.saveData((BaseHeaderBean)oHrmLnAppHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmMediclaimMasterHeaderMetaInfo(HrmMediclaimMasterQVO oHrmMediclaimMasterQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMediclaimMasterBO oHrmMediclaimMasterBO = new HrmMediclaimMasterBO(); + return oHrmMediclaimMasterBO.getHrmMediclaimMasterHeaderMetaInfo(oHrmMediclaimMasterQVO); + } + + public ArrayList getHrmMediclaimMasterHeaderInfo(HrmMediclaimMasterQVO oHrmMediclaimMasterQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMediclaimMasterBO oHrmMediclaimMasterBO = new HrmMediclaimMasterBO(); + return oHrmMediclaimMasterBO.getHrmMediclaimMasterHeaderInfo(oHrmMediclaimMasterQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmMediclaimMasterDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMediclaimMasterBO oHrmMediclaimMasterBO = new HrmMediclaimMasterBO(); + return oHrmMediclaimMasterBO.getHrmMediclaimMasterDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmMediclaimMasterDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMediclaimMasterBO oHrmMediclaimMasterBO = new HrmMediclaimMasterBO(); + return oHrmMediclaimMasterBO.getHrmMediclaimMasterDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmMediCadreLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMediclaimMasterBO oHrmMediclaimMasterBO = new HrmMediclaimMasterBO(); + LovVO oLovVO = oHrmMediclaimMasterBO.getHrmMediCadreLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmMediClassLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMediclaimMasterBO oHrmMediclaimMasterBO = new HrmMediclaimMasterBO(); + LovVO oLovVO = oHrmMediclaimMasterBO.getHrmMediClassLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmMediclaimMasterHdrBean oHrmMediclaimMasterHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMediclaimMasterBO oLoanMaster = new HrmMediclaimMasterBO(oUserInfo); + return oLoanMaster.saveData((BaseHeaderBean)oHrmMediclaimMasterHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocal.java new file mode 100644 index 0000000..52684c7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocal.java @@ -0,0 +1,99 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.vo.HrmLnAppQVO; +import wenrgise.hrms.vo.HrmLnChartQVO; +import wenrgise.hrms.vo.HrmLnMstQVO; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; + +public interface HrmLoanFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmLoanMstHeaderMetaInfo(HrmLnMstQVO paramHrmLnMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanMstHeaderInfo(HrmLnMstQVO paramHrmLnMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanMstDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanMstDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChartNameLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanCodeLOVdataNew(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChartNameLOVdataNew(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurLoanMstDetail() throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanDetailLOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + void updateLoanMst(String paramString1, String paramString2, String paramString3, String paramString4) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLnMstHdrBean paramHrmLnMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanChartHdrMetaInfo(HrmLnChartQVO paramHrmLnChartQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanChartHdrInfo(HrmLnChartQVO paramHrmLnChartQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanChartDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanChartDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanChartNameLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLnChartHdrBean paramHrmLnChartHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanAppHdrMetaInfo(HrmLnAppQVO paramHrmLnAppQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanAppHdrInfo(HrmLnAppQVO paramHrmLnAppQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnAppDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnDisDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnHblIntRateMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnAppDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnDisDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnHblIntRateDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppInsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String loanAppBulkPayment(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMediclaimMasterHeaderMetaInfo(HrmMediclaimMasterQVO paramHrmMediclaimMasterQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMediclaimMasterHeaderInfo(HrmMediclaimMasterQVO paramHrmMediclaimMasterQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMediclaimMasterDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMediclaimMasterDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmMediClassLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmMediCadreLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmMediclaimMasterHdrBean paramHrmMediclaimMasterHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocalHome.java new file mode 100644 index 0000000..43cf070 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmLoanFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmLoanFacadeLocalHome extends EJBLocalHome { + HrmLoanFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeBean.java new file mode 100644 index 0000000..868d6aa --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeBean.java @@ -0,0 +1,20 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; + +public class HrmManPlFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocal.java new file mode 100644 index 0000000..a021be1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocal.java @@ -0,0 +1,5 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.EJBLocalObject; + +public interface HrmManPlFacadeLocal extends EJBLocalObject {} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocalHome.java new file mode 100644 index 0000000..cd5dad6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmManPlFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmManPlFacadeLocalHome extends EJBLocalHome { + HrmManPlFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeBean.java new file mode 100644 index 0000000..52e1453 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeBean.java @@ -0,0 +1,636 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.ejb.business.HrmOrgCalMstBO; +import wenrgise.hrms.ejb.business.HrmOrgClassDtlBO; +import wenrgise.hrms.ejb.business.HrmOrgCntryMstBO; +import wenrgise.hrms.ejb.business.HrmOrgDistMstBO; +import wenrgise.hrms.ejb.business.HrmOrgHolCalBO; +import wenrgise.hrms.ejb.business.HrmOrgHolTypeMstBO; +import wenrgise.hrms.ejb.business.HrmOrgIncrementBO; +import wenrgise.hrms.ejb.business.HrmOrgLangMstBO; +import wenrgise.hrms.ejb.business.HrmOrgQualMstBO; +import wenrgise.hrms.ejb.business.HrmOrgRatingMstBO; +import wenrgise.hrms.ejb.business.HrmOrgRelationMstBO; +import wenrgise.hrms.ejb.business.HrmOrgReligionMstBO; +import wenrgise.hrms.ejb.business.HrmOrgScaleMstBO; +import wenrgise.hrms.ejb.business.HrmOrgSkillMstBO; +import wenrgise.hrms.ejb.business.HrmOrgTehMstBO; +import wenrgise.hrms.ejb.business.HrmOrgWorkGroupMstBO; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; + +public class HrmOrganisationSetUpFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmCalHeaderMetaInfo(HrmOrgCalMstQVO oHrmOrgCalMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCalMstBO oHrmOrgCalMstBO = new HrmOrgCalMstBO(); + return oHrmOrgCalMstBO.getHrmCalHdrMetaInfo(oHrmOrgCalMstQVO); + } + + public ArrayList getHrmCalHeader(HrmOrgCalMstQVO oHrmOrgCalMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCalMstBO oHrmOrgCalMstBO = new HrmOrgCalMstBO(); + return oHrmOrgCalMstBO.getHrmCalHeaderInfo(oHrmOrgCalMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmCalDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCalMstBO oHrmOrgCalMstBO = new HrmOrgCalMstBO(); + return oHrmOrgCalMstBO.getHrmCalDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmCalDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCalMstBO oHrmOrgCalMstBO = new HrmOrgCalMstBO(); + return oHrmOrgCalMstBO.getHrmCalDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String getHrmCalStartDate(String sCalId, String sDate) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCalMstBO oHrmOrgCalMstBO = new HrmOrgCalMstBO(); + return oHrmOrgCalMstBO.getStartDate(sCalId, sDate); + } + + public LovVO getHrmCalendarTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCalMstBO oHrmOrgCalMstBO = new HrmOrgCalMstBO(); + LovVO oLovVO = oHrmOrgCalMstBO.getHrmCalendarTypeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgCalMstBO oHrmOrgCalMstBO = new HrmOrgCalMstBO(oUserInfo); + return oHrmOrgCalMstBO.saveData((BaseHeaderBean)oHrmOrgCalMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmClassHeaderMetaInfo(HrmOrgClassDtlQVO oHrmOrgClassDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(); + return oHrmOrgClassDtlBO.getHrmClassHdrMetaInfo(oHrmOrgClassDtlQVO); + } + + public ArrayList getHrmClassHeader(HrmOrgClassDtlQVO oHrmOrgClassDtlQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(); + return oHrmOrgClassDtlBO.getHrmClassHeaderInfo(oHrmOrgClassDtlQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmClassDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(); + return oHrmOrgClassDtlBO.getHrmClassDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmClassDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(); + return oHrmOrgClassDtlBO.getHrmClassDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmClassDetailLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(); + return oHrmOrgClassDtlBO.getHrmClassDetailLOVInfo(oLovQueryVO); + } + + public LovVO getHrmClassDtlLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(); + return oHrmOrgClassDtlBO.getHrmClassDtlLOVData(oLovQueryVO); + } + + public LovVO getHrmOrgScaleGradeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgScaleMstBO oHrmOrgScaleMstBO = new HrmOrgScaleMstBO(); + return oHrmOrgScaleMstBO.getHrmOrgScaleGradeLOVData(oLovQueryVO); + } + + public LovVO getHrmClassTypeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(); + return oHrmOrgClassDtlBO.getHrmClassTypeLOVData(oLovQueryVO); + } + + public String saveData(HrmOrgClassHdrBean oHrmOrgClassHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgClassDtlBO oHrmOrgClassDtlBO = new HrmOrgClassDtlBO(oUserInfo); + return oHrmOrgClassDtlBO.saveData((BaseHeaderBean)oHrmOrgClassHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmHolCalHeaderMetaInfo(HrmOrgHolCalQVO oHrmOrgHolCalQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + return oHrmOrgHolCalBO.getHrmHolCalHdrMetaInfo(oHrmOrgHolCalQVO); + } + + public ArrayList getHrmHolCalHeader(HrmOrgHolCalQVO oHrmOrgHolCalQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + return oHrmOrgHolCalBO.getHrmHolCalHeaderInfo(oHrmOrgHolCalQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmHolCalDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + return oHrmOrgHolCalBO.getHrmHolCalDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmHolCalDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + return oHrmOrgHolCalBO.getHrmHolCalDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(oUserInfo); + return oHrmOrgHolCalBO.saveData((BaseHeaderBean)oHrmOrgHolCalHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmCalNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + LovVO oLovVO = oHrmOrgHolCalBO.getHrmCalNameLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + LovVO oLovVO = oHrmOrgHolCalBO.getHrmSiteCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmStateCodeInsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + LovVO oLovVO = oHrmOrgHolCalBO.getHrmStateCodeInsLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmStateCodeQueryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolCalBO oHrmOrgHolCalBO = new HrmOrgHolCalBO(); + LovVO oLovVO = oHrmOrgHolCalBO.getHrmStateCodeQueryLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmHolTypeHeaderMetaInfo(HrmOrgHolTypeMstQVO oHrmOrgHolTypeMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolTypeMstBO oHrmOrgHolTypeMstBO = new HrmOrgHolTypeMstBO(); + return oHrmOrgHolTypeMstBO.getHrmHolTypeHdrMetaInfo(oHrmOrgHolTypeMstQVO); + } + + public ArrayList getHrmHolTypeHeader(HrmOrgHolTypeMstQVO oHrmOrgHolTypeMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolTypeMstBO oHrmOrgHolTypeMstBO = new HrmOrgHolTypeMstBO(); + return oHrmOrgHolTypeMstBO.getHrmHolTypeHeaderInfo(oHrmOrgHolTypeMstQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmHolidayTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgHolTypeMstBO oHrmOrgHolTypeMstBO = new HrmOrgHolTypeMstBO(); + LovVO oLovVO = oHrmOrgHolTypeMstBO.getHrmHolidayTypeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgHolTypeMstBO oHrmOrgHolTypeMstBO = new HrmOrgHolTypeMstBO(oUserInfo); + return oHrmOrgHolTypeMstBO.saveData((BaseHeaderBean)oHrmOrgHolTypeMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmSkillHeaderMetaInfo(HrmOrgSkillMstQVO oHrmOrgSkillMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgSkillMstBO oHrmOrgSkillMstBO = new HrmOrgSkillMstBO(); + return oHrmOrgSkillMstBO.getHrmSkillHdrMetaInfo(oHrmOrgSkillMstQVO); + } + + public ArrayList getHrmSkillHeader(HrmOrgSkillMstQVO oHrmOrgSkillMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgSkillMstBO oHrmOrgSkillMstBO = new HrmOrgSkillMstBO(); + return oHrmOrgSkillMstBO.getHrmSkillHeaderInfo(oHrmOrgSkillMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSkillDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgSkillMstBO oHrmOrgSkillMstBO = new HrmOrgSkillMstBO(); + return oHrmOrgSkillMstBO.getHrmSkillDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSkillDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgSkillMstBO oHrmOrgSkillMstBO = new HrmOrgSkillMstBO(); + return oHrmOrgSkillMstBO.getHrmSkillDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmSkillCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgSkillMstBO oSkill = new HrmOrgSkillMstBO(); + LovVO oLovVO = oSkill.getHrmSkillCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmOrgSkillMstHdrBean oHrmOrgSkillMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgSkillMstBO oHrmOrgSkillMstBO = new HrmOrgSkillMstBO(oUserInfo); + return oHrmOrgSkillMstBO.saveData((BaseHeaderBean)oHrmOrgSkillMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmScaleHeaderMetaInfo(HrmOrgScaleMstQVO oHrmOrgScaleMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgScaleMstBO oHrmOrgScaleMstBO = new HrmOrgScaleMstBO(); + return oHrmOrgScaleMstBO.getHrmScaleHdrMetaInfo(oHrmOrgScaleMstQVO); + } + + public ArrayList getHrmScaleHeader(HrmOrgScaleMstQVO oHrmOrgScaleMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgScaleMstBO oHrmOrgScaleMstBO = new HrmOrgScaleMstBO(); + return oHrmOrgScaleMstBO.getHrmScaleHeaderInfo(oHrmOrgScaleMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmScaleDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgScaleMstBO oHrmOrgScaleMstBO = new HrmOrgScaleMstBO(); + return oHrmOrgScaleMstBO.getHrmScaleDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmScaleDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgScaleMstBO oHrmOrgScaleMstBO = new HrmOrgScaleMstBO(); + return oHrmOrgScaleMstBO.getHrmScaleDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmScaleMstScaleCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgScaleMstBO oHrmOrgScaleMstBO = new HrmOrgScaleMstBO(); + LovVO oLovVO = oHrmOrgScaleMstBO.getHrmScaleMstScaleCodeLOV(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmOrgScaleMstHdrBean oHrmOrgScaleMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgScaleMstBO oHrmOrgScaleMstBO = new HrmOrgScaleMstBO(oUserInfo); + return oHrmOrgScaleMstBO.saveData((BaseHeaderBean)oHrmOrgScaleMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmRelDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgReligionMstBO oHrmOrgReligionMstBO = new HrmOrgReligionMstBO(); + return oHrmOrgReligionMstBO.getHrmRelDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmReligionDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgReligionMstBO oHrmOrgReligionMstBO = new HrmOrgReligionMstBO(); + return oHrmOrgReligionMstBO.getHrmReligionDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRatingHeaderMetaInfo(HrmOrgRatingMstQVO oHrmOrgRatingMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgRatingMstBO oHrmOrgRatingMstBO = new HrmOrgRatingMstBO(); + return oHrmOrgRatingMstBO.getHrmRatingHdrMetaInfo(oHrmOrgRatingMstQVO); + } + + public ArrayList getHrmRatingHeader(HrmOrgRatingMstQVO oHrmOrgRatingMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgRatingMstBO oHrmOrgRatingMstBO = new HrmOrgRatingMstBO(); + return oHrmOrgRatingMstBO.getHrmRatingHeaderInfo(oHrmOrgRatingMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRatingDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgRatingMstBO oHrmOrgRatingMstBO = new HrmOrgRatingMstBO(); + return oHrmOrgRatingMstBO.getHrmRatingDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRatingDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgRatingMstBO oHrmOrgRatingMstBO = new HrmOrgRatingMstBO(); + return oHrmOrgRatingMstBO.getHrmRatingDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmRatingCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgRatingMstBO oHrmOrgRatingMstBO = new HrmOrgRatingMstBO(); + LovVO oLovVO = oHrmOrgRatingMstBO.getHrmRatingCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmOrgRatingMstHdrBean oHrmOrgRatingMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgRatingMstBO oHrmOrgRatingMstBO = new HrmOrgRatingMstBO(oUserInfo); + return oHrmOrgRatingMstBO.saveData((BaseHeaderBean)oHrmOrgRatingMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmCountryHeaderMetaInfo(HrmOrgCntryMstQVO oHrmOrgCntryMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCntryMstBO oHrmOrgCntryMstBO = new HrmOrgCntryMstBO(); + return oHrmOrgCntryMstBO.getHrmCountryHdrMetaInfo(oHrmOrgCntryMstQVO); + } + + public ArrayList getHrmCountryHeader(HrmOrgCntryMstQVO oHrmOrgCntryMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCntryMstBO oHrmOrgCntryMstBO = new HrmOrgCntryMstBO(); + return oHrmOrgCntryMstBO.getHrmCountryHeaderInfo(oHrmOrgCntryMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmCountryDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCntryMstBO oHrmOrgCntryMstBO = new HrmOrgCntryMstBO(); + return oHrmOrgCntryMstBO.getHrmCountryDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmCountryDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCntryMstBO oHrmOrgCntryMstBO = new HrmOrgCntryMstBO(); + return oHrmOrgCntryMstBO.getHrmCountryDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmCountryCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgCntryMstBO oCountry = new HrmOrgCntryMstBO(); + LovVO oLovVO = oCountry.getHrmCountryCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmOrgCntryMstHdrBean oHrmOrgCntryMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgCntryMstBO oHrmOrgCntryMstBO = new HrmOrgCntryMstBO(oUserInfo); + return oHrmOrgCntryMstBO.saveData((BaseHeaderBean)oHrmOrgCntryMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmQualificationDetailMetaInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgQualMstBO oHrmOrgQualMstBO = new HrmOrgQualMstBO(); + return oHrmOrgQualMstBO.getHrmQualificationDtlMetaInfo(); + } + + public ArrayList getHrmQualificationDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgQualMstBO oHrmOrgQualMstBO = new HrmOrgQualMstBO(); + return oHrmOrgQualMstBO.getHrmQualificationDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLanguageDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgLangMstBO oHrmOrgLangMstBO = new HrmOrgLangMstBO(); + return oHrmOrgLangMstBO.getHrmLanguageDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLanguageDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgLangMstBO oHrmOrgLangMstBO = new HrmOrgLangMstBO(); + return oHrmOrgLangMstBO.getHrmLanguageDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmDistrictDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgDistMstBO oHrmOrgDistMstBO = new HrmOrgDistMstBO(); + return oHrmOrgDistMstBO.getHrmDistrictDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmDistrictDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgDistMstBO oHrmOrgDistMstBO = new HrmOrgDistMstBO(); + return oHrmOrgDistMstBO.getHrmDistrictDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTehsilDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgTehMstBO oHrmOrgTehMstBO = new HrmOrgTehMstBO(); + return oHrmOrgTehMstBO.getHrmTehsilDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTehsilDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgTehMstBO oHrmOrgTehMstBO = new HrmOrgTehMstBO(); + return oHrmOrgTehMstBO.getHrmTehsilDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRelationDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgRelationMstBO oHrmOrgRelationMstBO = new HrmOrgRelationMstBO(); + return oHrmOrgRelationMstBO.getHrmRelationDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRelationDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgRelationMstBO oHrmOrgRelationMstBO = new HrmOrgRelationMstBO(); + return oHrmOrgRelationMstBO.getHrmRelationDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmOrgWorkGroupMstHeaderMetaInfo(HrmOrgWorkGroupMstQVO oHrmOrgWorkGroupMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + return oHrmOrgWorkGroupMstBO.getHrmOrgWorkGroupMstHeaderMetaInfo(oHrmOrgWorkGroupMstQVO); + } + + public ArrayList getHrmOrgWorkGroupMstHeader(HrmOrgWorkGroupMstQVO oHrmOrgWorkGroupMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + return oHrmOrgWorkGroupMstBO.getHrmOrgWorkGroupMstHeader(oHrmOrgWorkGroupMstQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(oUserInfo); + return oHrmOrgWorkGroupMstBO.saveData((BaseHeaderBean)oHrmOrgWorkGroupMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmWorkSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + LovVO oLovVO = oHrmOrgWorkGroupMstBO.getHrmSiteCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmWorkParentCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + LovVO oLovVO = oHrmOrgWorkGroupMstBO.getHrmWorkParentCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmWorkGroupCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + LovVO oLovVO = oHrmOrgWorkGroupMstBO.getHrmWorkGroupCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmCostCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + LovVO oLovVO = oHrmOrgWorkGroupMstBO.getHrmCostCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmBudgetCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + LovVO oLovVO = oHrmOrgWorkGroupMstBO.getHrmBudgetCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmContactEmployeeNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgWorkGroupMstBO oHrmOrgWorkGroupMstBO = new HrmOrgWorkGroupMstBO(); + LovVO oLovVO = oHrmOrgWorkGroupMstBO.getHrmWorkEmpNameLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmIncrHdrMetaInfo(HrmOrgIncrementQVO oHrmOrgIncrementQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgIncrementBO oHrmOrgIncrementBO = new HrmOrgIncrementBO(); + return oHrmOrgIncrementBO.getHrmIncrHdrMetaInfo(oHrmOrgIncrementQVO); + } + + public ArrayList getHrmIncrHeaderInfo(HrmOrgIncrementQVO oHrmOrgIncrementQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgIncrementBO oHrmOrgIncrementBO = new HrmOrgIncrementBO(); + return oHrmOrgIncrementBO.getHrmIncrHeaderInfo(oHrmOrgIncrementQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmIncrDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgIncrementBO oHrmOrgIncrementBO = new HrmOrgIncrementBO(); + return oHrmOrgIncrementBO.getHrmIncrDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmIncrDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgIncrementBO oHrmOrgIncrementBO = new HrmOrgIncrementBO(); + return oHrmOrgIncrementBO.getHrmIncrDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmOrgIncrementBO oHrmOrgIncrementBO = new HrmOrgIncrementBO(oUserInfo); + return oHrmOrgIncrementBO.saveData((BaseHeaderBean)oHrmOrgIncrementHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getIncrRatingLOVNData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgIncrementBO oHrmOrgIncrementBO = new HrmOrgIncrementBO(); + LovVO oLovVO = oHrmOrgIncrementBO.getIncrRatingLOVNData(oLovQueryVO); + return oLovVO; + } + + public LovVO getIncrRatingLOVQData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmOrgIncrementBO oHrmOrgIncrementBO = new HrmOrgIncrementBO(); + LovVO oLovVO = oHrmOrgIncrementBO.getIncrRatingLOVQData(oLovQueryVO); + return oLovVO; + } + + public String saveData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("HrmOrgQualMst")) + try { + HrmOrgQualMstBO oHrmOrgQualMstBO = new HrmOrgQualMstBO(oUserInfo); + return oHrmOrgQualMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + if (sScreenName.equalsIgnoreCase("HrmOrgLangMst")) + try { + HrmOrgLangMstBO oHrmOrgLangMstBO = new HrmOrgLangMstBO(oUserInfo); + return oHrmOrgLangMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + if (sScreenName.equalsIgnoreCase("HrmOrgDistMst")) + try { + HrmOrgDistMstBO oHrmOrgDistMstBO = new HrmOrgDistMstBO(oUserInfo); + return oHrmOrgDistMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + if (sScreenName.equalsIgnoreCase("HrmOrgTehMst")) + try { + HrmOrgTehMstBO oHrmOrgTehMstBO = new HrmOrgTehMstBO(oUserInfo); + return oHrmOrgTehMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + if (sScreenName.equalsIgnoreCase("HrmOrgReligionMst")) + try { + HrmOrgReligionMstBO oHrmOrgReligionMstBO = new HrmOrgReligionMstBO(oUserInfo); + return oHrmOrgReligionMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + try { + HrmOrgRelationMstBO oHrmOrgRelationMstBO = new HrmOrgRelationMstBO(oUserInfo); + return oHrmOrgRelationMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocal.java new file mode 100644 index 0000000..2c21041 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocal.java @@ -0,0 +1,198 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; + +public interface HrmOrganisationSetUpFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmCalHeaderMetaInfo(HrmOrgCalMstQVO paramHrmOrgCalMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCalHeader(HrmOrgCalMstQVO paramHrmOrgCalMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCalDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCalDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getHrmCalStartDate(String paramString1, String paramString2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgCalMstHdrBean paramHrmOrgCalMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalendarTypeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClassHeaderMetaInfo(HrmOrgClassDtlQVO paramHrmOrgClassDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClassHeader(HrmOrgClassDtlQVO paramHrmOrgClassDtlQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClassDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClassDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassDetailLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassDtlLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmOrgScaleGradeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassTypeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgClassHdrBean paramHrmOrgClassHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolCalHeaderMetaInfo(HrmOrgHolCalQVO paramHrmOrgHolCalQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolCalHeader(HrmOrgHolCalQVO paramHrmOrgHolCalQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolCalDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolCalDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgHolCalHdrBean paramHrmOrgHolCalHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalNameLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmStateCodeInsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmStateCodeQueryLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolTypeHeaderMetaInfo(HrmOrgHolTypeMstQVO paramHrmOrgHolTypeMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolTypeHeader(HrmOrgHolTypeMstQVO paramHrmOrgHolTypeMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmHolidayTypeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgHolTypeMstHdrBean paramHrmOrgHolTypeMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSkillHeaderMetaInfo(HrmOrgSkillMstQVO paramHrmOrgSkillMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSkillHeader(HrmOrgSkillMstQVO paramHrmOrgSkillMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSkillDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSkillDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSkillCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgSkillMstHdrBean paramHrmOrgSkillMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScaleHeaderMetaInfo(HrmOrgScaleMstQVO paramHrmOrgScaleMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScaleHeader(HrmOrgScaleMstQVO paramHrmOrgScaleMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScaleDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScaleDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgScaleMstHdrBean paramHrmOrgScaleMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmScaleMstScaleCodeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmReligionDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRelDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRatingHeaderMetaInfo(HrmOrgRatingMstQVO paramHrmOrgRatingMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRatingHeader(HrmOrgRatingMstQVO paramHrmOrgRatingMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRatingDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRatingDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRatingCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgRatingMstHdrBean paramHrmOrgRatingMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCountryHeaderMetaInfo(HrmOrgCntryMstQVO paramHrmOrgCntryMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCountryHeader(HrmOrgCntryMstQVO paramHrmOrgCntryMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCountryDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCountryDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCountryCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgCntryMstHdrBean paramHrmOrgCntryMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmQualificationDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmQualificationDetailMetaInfo() throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLanguageDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLanguageDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDistrictDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDistrictDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTehsilDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTehsilDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRelationDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRelationDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmOrgWorkGroupMstHeaderMetaInfo(HrmOrgWorkGroupMstQVO paramHrmOrgWorkGroupMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmOrgWorkGroupMstHeader(HrmOrgWorkGroupMstQVO paramHrmOrgWorkGroupMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkGroupCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCostCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmBudgetCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkParentCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmContactEmployeeNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgWorkGroupMstHdrBean paramHrmOrgWorkGroupMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmIncrHdrMetaInfo(HrmOrgIncrementQVO paramHrmOrgIncrementQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmIncrHeaderInfo(HrmOrgIncrementQVO paramHrmOrgIncrementQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmIncrDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmIncrDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmOrgIncrementHdrBean paramHrmOrgIncrementHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getIncrRatingLOVNData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getIncrRatingLOVQData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocalHome.java new file mode 100644 index 0000000..9a45ab4 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmOrganisationSetUpFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmOrganisationSetUpFacadeLocalHome extends EJBLocalHome { + HrmOrganisationSetUpFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeBean.java new file mode 100644 index 0000000..a8c66e1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeBean.java @@ -0,0 +1,579 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.ejb.business.HrmAppTempBusinessObject; +import wenrgise.hrms.ejb.business.HrmApprisalKPABO; +import wenrgise.hrms.ejb.business.HrmAprslBO; +import wenrgise.hrms.ejb.business.HrmAprslSpcTmplBO; +import wenrgise.hrms.ejb.business.HrmAprslStartOrderBO; +import wenrgise.hrms.ejb.business.HrmAprslStartRuleBO; +import wenrgise.hrms.vo.HrmAppTempQueryVO; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; + +public class HrmPerformanceAppraisalFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmEmpAprslHdrMetaInfo(HrmAprslQVO oHrmAprslQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslHdrMetaInfo(oHrmAprslQVO); + } + + public ArrayList getHrmEmpAprslHdrInfo(HrmAprslQVO oHrmAprslQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslHeaderInfo(oHrmAprslQVO, lStartPosition, lLastPosition); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(); + } + } + + public RecordMetaInfo getHrmEmpAprslKPADetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslKPADtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpAprslKPADetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrAprslKPADetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpAprslGoalsDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslGoalsDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpAprslGoalsDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrAprslGoalsDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslTrngReqDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslTrngReqDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrAprslTrngReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrAprslTrngReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrAprslEmpPerDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrAprslEmpPerDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(oUserInfo); + return oHrmAprslBO.saveData((BaseHeaderBean)oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmAprslStartOrderLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslStartOrderLOVData(oLovQueryVO); + } + + public LovVO getEmpAprslStOrderLOVQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getEmpAprslStOrderLOVQ(oLovQueryVO); + } + + public LovVO getEmpAprslStOrderLOVI(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getEmpAprslStOrderLOVI(oLovQueryVO); + } + + public LovVO getHrmAprslRating0LOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslRatingLevel0LOVData(oLovQueryVO); + } + + public LovVO getHrmAprslRating1LOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslRatingLevel1LOVData(oLovQueryVO); + } + + public LovVO getHrmAprslRating2LOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslRatingLevel2LOVData(oLovQueryVO); + } + + public LovVO getHrmAprslRating3LOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslRatingLevel3LOVData(oLovQueryVO); + } + + public LovVO getHrmAprslRating4LOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslRatingLevel4LOVData(oLovQueryVO); + } + + public LovVO getHrmAprslRating5LOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslRatingLevel5LOVData(oLovQueryVO); + } + + public String calEmpFinRating(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.calFinalRating((BaseHeaderBean)oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveEmpAprsl(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(oUserInfo); + return oHrmAprslBO.approveEmpAprsl((BaseHeaderBean)oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectEmpAprsl(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(oUserInfo); + return oHrmAprslBO.rejectEmpAprsl((BaseHeaderBean)oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public boolean chkHrmAppRecByRatingId(String sRatingId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.chkHrmAppTempHdrByRatingIdCount(sRatingId); + } + + public void updateAppTempHdr(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + oHrmAppTempBusinessObject.updateAppTempHdrMst(sSql, sId, sUserId, sUserSiteId); + } + + public RecordMetaInfo getHrmAppTemplateHeaderMetaInfo(HrmAppTempQueryVO oHrmAppTempQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAppTemplateHdrMetaInfo(oHrmAppTempQueryVO); + } + + public ArrayList getHrmAppTemplateHeader(HrmAppTempQueryVO oHrmAppTempQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAppTempHeaderInfo(oHrmAppTempQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAppTempSecDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAppTempSecDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAppTempSecDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAppTempSecDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmAprslTmplNameLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAprslTmplNameLOVInfo(oLovQueryVO); + } + + public LovVO getHrmAprslSecCodeLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAprslSecCodeLOVInfo(oLovQueryVO); + } + + public LovVO getHrmAprslKPALOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAprslKPALOVInfo(oLovQueryVO); + } + + public LovVO getHrmAprslParentCodeLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAprslParentCodeLOVInfo(oLovQueryVO); + } + + public String saveData(HrmAppTempHdrBean oHrmAppTempHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(oUserInfo); + return oHrmAppTempBusinessObject.saveData((BaseHeaderBean)oHrmAppTempHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmAppTempSecKPADtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getAppTempSecKPADetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAppTempSecKPADtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrAppTempSecKPADetail(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public String approveHrmAprslTmplMst(HrmAppTempHdrBean oHrmAppTempHdrBean, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.approveHrmAprslTmpMst((BaseHeaderBean)oHrmAppTempHdrBean, sScreenName); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmAppRaisalKpaHeaderMetaInfo(HrmAppraisalKPAQVO oHrmAppraisalKPAQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmApprisalKPABO oHrmApprisalKPABO = new HrmApprisalKPABO(); + return oHrmApprisalKPABO.getHrmAppRaisalKpaHeaderMetaInfo(oHrmAppraisalKPAQVO); + } + + public ArrayList getHrmAppRaisalKpaHeader(HrmAppraisalKPAQVO oHrmAppraisalKPAQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmApprisalKPABO oHrmApprisalKPABO = new HrmApprisalKPABO(); + return oHrmApprisalKPABO.getHrmAppRaisalKpaHeader(oHrmAppraisalKPAQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAppRaisalKpa(HrmAppraisalKPAHdrBean oHrmAppraisalKPAHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmApprisalKPABO oHrmApprisalKPABO = new HrmApprisalKPABO(oUserInfo); + return oHrmApprisalKPABO.saveData((BaseHeaderBean)oHrmAppraisalKPAHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmAppRaisalKpaDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmApprisalKPABO oHrmApprisalKPABO = new HrmApprisalKPABO(); + return oHrmApprisalKPABO.getHrmAppRaisalKpaDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAppRaisalKpaDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmApprisalKPABO oHrmApprisalKPABO = new HrmApprisalKPABO(); + return oHrmApprisalKPABO.getHrmAppRaisalKpaDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmAppRaisalKpaWorkGrpLOVQrydata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmApprisalKPABO oHrmApprisalKPABO = new HrmApprisalKPABO(); + return oHrmApprisalKPABO.getQueryAppraisalWorkGrpLOVData(oLovQueryVO); + } + + public String getHrmAppRaisalKpaExactWeightage(String sHeaderPrimKey) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmApprisalKPABO oHrmApprisalKPABO = new HrmApprisalKPABO(); + return oHrmApprisalKPABO.checkWeightageValidation(sHeaderPrimKey); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmAprslStOrderMetaInfo(HrmAprslStartOrderQVO oHrmAprslStartOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartOrderBO oHrmAprslStartOrderBO = new HrmAprslStartOrderBO(); + return oHrmAprslStartOrderBO.getHrmAprslStOrderMetaInfo(oHrmAprslStartOrderQVO); + } + + public ArrayList getHrmAprslStOrderInfo(HrmAprslStartOrderQVO oHrmAprslStartOrderQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartOrderBO oHrmAprslStartOrderBO = new HrmAprslStartOrderBO(); + return oHrmAprslStartOrderBO.getHrmAprslStOrderInfo(oHrmAprslStartOrderQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartOrderBO oHrmAprslStartOrderBO = new HrmAprslStartOrderBO(oUserInfo); + return oHrmAprslStartOrderBO.saveData((BaseHeaderBean)oHrmAprslStartOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmAprslStOrderNoLOVQrydata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartOrderBO oHrmAprslStartOrderBO = new HrmAprslStartOrderBO(); + return oHrmAprslStartOrderBO.getHrmAprslStOrderNoLOVQrydata(oLovQueryVO); + } + + public RecordMetaInfo getHrmAprslStRuleHdrMetaInfo(HrmAprslStartRuleQVO oHrmAprslStartRuleQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + return oHrmAprslStartRuleBO.getHrmAprslRuleHdrMetaInfo(oHrmAprslStartRuleQVO); + } + + public ArrayList getHrmAprslStRuleHeader(HrmAprslStartRuleQVO oHrmAprslStartRuleQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + return oHrmAprslStartRuleBO.getHrmAprslRuleHeaderInfo(oHrmAprslStartRuleQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslStRuleDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + return oHrmAprslStartRuleBO.getHrmAprslRuleDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslStRuleDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + return oHrmAprslStartRuleBO.getHrmAprslRuleDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmAprslStartRuleHdrBean oHrmAprslStartRuleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(oUserInfo); + return oHrmAprslStartRuleBO.saveData((BaseHeaderBean)oHrmAprslStartRuleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getClsMstData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getClsMstData(oLovQueryVO); + return oLovVO; + } + + public LovVO getClsDtlData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getClsDtlData(oLovQueryVO); + return oLovVO; + } + + public LovVO getClsMstDataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getClsMstDataQ(oLovQueryVO); + return oLovVO; + } + + public LovVO getClsDtlDataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getClsDtlDataQ(oLovQueryVO); + return oLovVO; + } + + public LovVO getEmployeeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getEmployeeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryEmployeeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getQueryEmployeeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryStOrdLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getQueryStOrdLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryWrkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getQueryWrkGrpLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQuerySiteCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getQuerySiteCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getWrkGrpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslStartRuleBO oHrmAprslStartRuleBO = new HrmAprslStartRuleBO(); + LovVO oLovVO = oHrmAprslStartRuleBO.getWrkGrpLOVData(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmAprslSpcTmpHdrMetaInfo(HrmAprslSpcTmplQVO oHrmAprslSpcTmplQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpHdrMetaInfo(oHrmAprslSpcTmplQVO); + } + + public ArrayList getHrmAprslSpcTmpHeaderInfo(HrmAprslSpcTmplQVO oHrmAprslSpcTmplQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpHeaderInfo(oHrmAprslSpcTmplQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslSpcTmpKPADtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpKPADtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslSpcTmpKPADetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpKPADetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslSpcTmpGoalsDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpGoalsDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslSpcTmpGoalsDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpGoalsDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslSpcTmpEligDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpEligDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslSpcTmpEligDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + return oHrmAprslSpcTmplBO.getHrmAprslSpcTmpEligDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(oUserInfo); + return oHrmAprslSpcTmplBO.saveData((BaseHeaderBean)oHrmAprslSpcTmplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(oUserInfo); + return oHrmAprslSpcTmplBO.approveHrmAprslSpcTmp((BaseHeaderBean)oHrmAprslSpcTmplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(oUserInfo); + return oHrmAprslSpcTmplBO.rejectHrmAprslSpcTmp((BaseHeaderBean)oHrmAprslSpcTmplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getQuerySpcTemplateData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + LovVO oLovVO = oHrmAprslSpcTmplBO.getQuerySpcTemplateData(oLovQueryVO); + return oLovVO; + } + + public LovVO getTemplateData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + LovVO oLovVO = oHrmAprslSpcTmplBO.getTemplateData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryTemplateData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + LovVO oLovVO = oHrmAprslSpcTmplBO.getQueryTemplateData(oLovQueryVO); + return oLovVO; + } + + public LovVO getTempSectionData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + LovVO oLovVO = oHrmAprslSpcTmplBO.getTempSectionData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryStartOrdLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + LovVO oLovVO = oHrmAprslSpcTmplBO.getQueryStOrdLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getSpcEmployeeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslSpcTmplBO oHrmAprslSpcTmplBO = new HrmAprslSpcTmplBO(); + LovVO oLovVO = oHrmAprslSpcTmplBO.getSpcEmployeeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmAprslTempNameQLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getHrmAprslTempNameQLOV(oLovQueryVO); + } + + public LovVO getAprslTmplRatingCodeQLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAppTempBusinessObject oHrmAppTempBusinessObject = new HrmAppTempBusinessObject(); + return oHrmAppTempBusinessObject.getAprslTmplRatingCodeQLOV(oLovQueryVO); + } + + public LovVO getHrmAprslEmpNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslEmpNoLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmAprslEmpDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmAprslBO oHrmAprslBO = new HrmAprslBO(); + return oHrmAprslBO.getHrmAprslEmpDtlMetaInfo(lPrimaryKey); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocal.java new file mode 100644 index 0000000..5b374fb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocal.java @@ -0,0 +1,191 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.vo.HrmAppTempQueryVO; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; + +public interface HrmPerformanceAppraisalFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmEmpAprslHdrMetaInfo(HrmAprslQVO paramHrmAprslQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslHdrInfo(HrmAprslQVO paramHrmAprslQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslKPADetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslKPADetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslGoalsDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslGoalsDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslTrngReqDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAprslTrngReqDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAprslEmpPerDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslStartOrderLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpAprslStOrderLOVQ(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating0LOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating1LOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating2LOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating3LOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating4LOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating5LOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String calEmpFinRating(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpAprslStOrderLOVI(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + boolean chkHrmAppRecByRatingId(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + void updateAppTempHdr(String paramString1, String paramString2, String paramString3, String paramString4) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTemplateHeaderMetaInfo(HrmAppTempQueryVO paramHrmAppTempQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTemplateHeader(HrmAppTempQueryVO paramHrmAppTempQueryVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTempSecDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTempSecDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslTmplNameLOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslSecCodeLOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAppTempHdrBean paramHrmAppTempHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslKPALOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslParentCodeLOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveHrmAprslTmplMst(HrmAppTempHdrBean paramHrmAppTempHdrBean, String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTempSecKPADtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTempSecKPADtlInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslTempNameQLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getAprslTmplRatingCodeQLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslEmpNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppRaisalKpaHeaderMetaInfo(HrmAppraisalKPAQVO paramHrmAppraisalKPAQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppRaisalKpaHeader(HrmAppraisalKPAQVO paramHrmAppraisalKPAQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAppRaisalKpa(HrmAppraisalKPAHdrBean paramHrmAppraisalKPAHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppRaisalKpaDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppRaisalKpaDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAppRaisalKpaWorkGrpLOVQrydata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getHrmAppRaisalKpaExactWeightage(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStOrderMetaInfo(HrmAprslStartOrderQVO paramHrmAprslStartOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStOrderInfo(HrmAprslStartOrderQVO paramHrmAprslStartOrderQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAprslStartOrderHdrBean paramHrmAprslStartOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslStOrderNoLOVQrydata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStRuleHdrMetaInfo(HrmAprslStartRuleQVO paramHrmAprslStartRuleQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStRuleHeader(HrmAprslStartRuleQVO paramHrmAprslStartRuleQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStRuleDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStRuleDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAprslStartRuleHdrBean paramHrmAprslStartRuleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsMstData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsDtlData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsMstDataQ(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsDtlDataQ(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryEmployeeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmployeeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryStOrdLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryWrkGrpLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQuerySiteCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWrkGrpLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpHdrMetaInfo(HrmAprslSpcTmplQVO paramHrmAprslSpcTmplQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpHeaderInfo(HrmAprslSpcTmplQVO paramHrmAprslSpcTmplQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpKPADtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpKPADetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpGoalsDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpGoalsDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpEligDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpEligDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQuerySpcTemplateData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getTemplateData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryStartOrdLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryTemplateData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getTempSectionData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSpcEmployeeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslEmpDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocalHome.java new file mode 100644 index 0000000..8db2600 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPerformanceAppraisalFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmPerformanceAppraisalFacadeLocalHome extends EJBLocalHome { + HrmPerformanceAppraisalFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeBean.java new file mode 100644 index 0000000..e171dfd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeBean.java @@ -0,0 +1,454 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.bean.HrmPrmGenAssHdrBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.ejb.business.HrmPrmCriteriaBO; +import wenrgise.hrms.ejb.business.HrmPrmExperienceScoreBO; +import wenrgise.hrms.ejb.business.HrmPrmGenAssBO; +import wenrgise.hrms.ejb.business.HrmPrmKPARatingBO; +import wenrgise.hrms.ejb.business.HrmPrmNoticeDtlBO; +import wenrgise.hrms.ejb.business.HrmPrmOrderBO; +import wenrgise.hrms.ejb.business.HrmPrmQualCriteriaBO; +import wenrgise.hrms.ejb.business.HrmPrmTestScoreBO; +import wenrgise.hrms.ejb.business.HrmPrmViewAssBO; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; +import wenrgise.hrms.vo.HrmPrmOrderQVO; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; + +public class HrmPromotionFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmPromOrderHdrMetaInfo(HrmPrmOrderQVO oHrmPrmOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(); + return oHrmPrmOrderBO.getHrmPromOrderHdrMetaInfo(oHrmPrmOrderQVO); + } + + public ArrayList getHrmPromOrderHdr(HrmPrmOrderQVO oHrmPrmOrderQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(); + return oHrmPrmOrderBO.getHrmPromOrderHdr(oHrmPrmOrderQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmPrmOrderHdrBean oHrmPrmOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(oUserInfo); + return oHrmPrmOrderBO.saveData((BaseHeaderBean)oHrmPrmOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getPromOrderEmpNoQLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(); + return oHrmPrmOrderBO.getPromOrderEmpNoQLOVData(oLovQueryVO); + } + + public LovVO getPromOrderNoQLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(); + return oHrmPrmOrderBO.getPromOrderNoQLOVData(oLovQueryVO); + } + + public LovVO getPromToGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(); + return oHrmPrmOrderBO.getPromToGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromToDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(); + return oHrmPrmOrderBO.getPromToDesignationNLOVData(oLovQueryVO); + } + + public LovVO getPositionCodeLOVDataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPosNoLOVdataQ(oLovQueryVO); + } + + public LovVO getPositionCodeLOVDataN(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPosNoLOVdataN(oLovQueryVO); + } + + public LovVO getRatingCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getRatNoLOVdata(oLovQueryVO); + } + + public LovVO getKPAGrpCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getKPAGrpCodeLOVdata(oLovQueryVO); + } + + public LovVO getPromKPARatingGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPromKPARatingGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPromKPARatingDesignationNLOVData(oLovQueryVO); + } + + public LovVO getRatNoLOVQdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getRatNoLOVQdata(oLovQueryVO); + } + + public RecordMetaInfo getKPARatingHeaderMetaInfo(HrmPrmKPARatingQVO oHrmPrmKPARatingQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPrmKPARatingHdrMetaInfo(oHrmPrmKPARatingQVO); + } + + public ArrayList getKPARatingHeaderInfo(HrmPrmKPARatingQVO oHrmPrmKPARatingQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPrmKPARatingInfo(oHrmPrmKPARatingQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getPrmKPARatingPosDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPrmKPARatingPosDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getPrmKPARatingPosDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPrmKPARatingPosDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getPrmKPARatingFinDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPrmKPARatingFinDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getPrmKPARatingFinDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(); + return oHrmPrmKPARatingBO.getPrmKPARatingFinDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmPrmKPARatingHdrBean oHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmKPARatingBO oHrmPrmKPARatingBO = new HrmPrmKPARatingBO(oUserInfo); + return oHrmPrmKPARatingBO.saveData((BaseHeaderBean)oHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmPrmTCHdrMetaInfo(HrmPrmTestScoreQVO oHrmPrmTestScoreQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmTestScoreBO oHrmPrmTestScoreBO = new HrmPrmTestScoreBO(); + return oHrmPrmTestScoreBO.getHrmPrmTCHdrMetaInfo(oHrmPrmTestScoreQVO); + } + + public ArrayList getHrmPrmTCHdrInfo(HrmPrmTestScoreQVO oHrmPrmTestScoreQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmTestScoreBO oHrmPrmTestScoreBO = new HrmPrmTestScoreBO(); + return oHrmPrmTestScoreBO.getHrmPrmTCHdrInfo(oHrmPrmTestScoreQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmPrmTCDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmTestScoreBO oHrmPrmTestScoreBO = new HrmPrmTestScoreBO(); + return oHrmPrmTestScoreBO.getHrmPrmTCDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmPrmTCDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmTestScoreBO oHrmPrmTestScoreBO = new HrmPrmTestScoreBO(); + return oHrmPrmTestScoreBO.getHrmPrmTCDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getPositionCodeLOVNew(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmTestScoreBO oHrmPrmTestScoreBO = new HrmPrmTestScoreBO(); + return oHrmPrmTestScoreBO.getPositionCodeLOVNew(oLovQueryVO); + } + + public LovVO getPositionCodeLOVQuery(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmTestScoreBO oHrmPrmTestScoreBO = new HrmPrmTestScoreBO(); + return oHrmPrmTestScoreBO.getPositionCodeLOVQuery(oLovQueryVO); + } + + public String saveData(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmTestScoreBO oHrmPrmTestScoreBO = new HrmPrmTestScoreBO(oUserInfo); + return oHrmPrmTestScoreBO.saveData((BaseHeaderBean)oHrmPrmTestScoreHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmPrmESDtlMetaInfo(HrmPrmExperienceScoreQVO oHrmPrmExperienceScoreQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmExperienceScoreBO oHrmPrmExperienceScoreBO = new HrmPrmExperienceScoreBO(); + return oHrmPrmExperienceScoreBO.getHrmPrmESDtlMetaInfo(oHrmPrmExperienceScoreQVO); + } + + public ArrayList getHrmPrmESDtlInfo(HrmPrmExperienceScoreQVO oHrmPrmExperienceScoreQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmExperienceScoreBO oHrmPrmExperienceScoreBO = new HrmPrmExperienceScoreBO(); + return oHrmPrmExperienceScoreBO.getHrmPrmESDtlInfo(oHrmPrmExperienceScoreQVO, lStartPosition, lLastPosition); + } + + public LovVO getESPositionCodeLOVQuery(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmExperienceScoreBO oHrmPrmExperienceScoreBO = new HrmPrmExperienceScoreBO(); + return oHrmPrmExperienceScoreBO.getESPositionCodeLOVQuery(oLovQueryVO); + } + + public LovVO getESPositionCodeLOVNew(LovQueryVO oLovQueryVO) throws EnrgiseSystemException, EnrgiseApplicationException { + HrmPrmExperienceScoreBO oHrmPrmExperienceScoreBO = new HrmPrmExperienceScoreBO(); + return oHrmPrmExperienceScoreBO.getESPositionCodeLOVNew(oLovQueryVO); + } + + public String saveHrmPrmESData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmExperienceScoreBO oHrmPrmExperienceScoreBO = new HrmPrmExperienceScoreBO(oUserInfo); + return oHrmPrmExperienceScoreBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getPrmQualCriteriaDetailMetaInfo(HrmPrmQualCriteriaQVO oHrmPrmQualCriteriaQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmQualCriteriaBO oHrmPrmQualCriteriaBO = new HrmPrmQualCriteriaBO(); + return oHrmPrmQualCriteriaBO.getPrmQualCriteriaDetailMetaInfo(oHrmPrmQualCriteriaQVO); + } + + public ArrayList getPrmQualCriteriaDetail(HrmPrmQualCriteriaQVO oHrmPrmQualCriteriaQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmQualCriteriaBO oHrmPrmQualCriteriaBO = new HrmPrmQualCriteriaBO(); + return oHrmPrmQualCriteriaBO.getPrmQualCriteriaDetail(oHrmPrmQualCriteriaQVO, lStartPosition, lLastPosition); + } + + public String savePrmQualCriteriaDtl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmQualCriteriaBO oHrmPrmQualCriteriaBO = new HrmPrmQualCriteriaBO(oUserInfo); + return oHrmPrmQualCriteriaBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmPrmQualPositionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmQualCriteriaBO oHrmPrmQualCriteriaBO = new HrmPrmQualCriteriaBO(); + LovVO oLovVO = oHrmPrmQualCriteriaBO.getHrmPrmQualPositionLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmPrmQualificationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmQualCriteriaBO oHrmPrmQualCriteriaBO = new HrmPrmQualCriteriaBO(); + LovVO oLovVO = oHrmPrmQualCriteriaBO.getHrmPrmQualificationLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmPrmCriteriaPostLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(); + return oBO.getPostLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmPrmCriteriaDetailMetaInfo(HrmPrmCriteriaQVO oQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(); + return oBO.getHrmPrmCriteriaDetailMetaInfo((BaseQueryVO)oQVO); + } + + public ArrayList getHrmPrmCriteriaDetailInfo(HrmPrmCriteriaQVO oQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(); + return oBO.getHrmPrmCriteriaDetailInfo((BaseQueryVO)oQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmPrmCriteriaHdrBean oHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(oUserInfo); + return oBO.saveData((BaseHeaderBean)oHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getPromKPARatingFromGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(); + return oBO.getPromKPARatingFromGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingFromDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(); + return oBO.getPromKPARatingFromDesignationNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingToGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(); + return oBO.getPromKPARatingToGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingToDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmCriteriaBO oBO = new HrmPrmCriteriaBO(); + return oBO.getPromKPARatingToDesignationNLOVData(oLovQueryVO); + } + + public RecordMetaInfo getPrmViewAssDetailMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(oUserInfo); + return oHrmPrmViewAssBO.getPrmViewAssDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getPrmViewAssDetail(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(oUserInfo); + return oHrmPrmViewAssBO.getPrmViewAssDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String savePrmViewAssDtl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(oUserInfo); + return oHrmPrmViewAssBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getPrmViewAssSiteCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(); + LovVO oLovVO = oHrmPrmViewAssBO.getPrmViewAssSiteCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getPrmViewAssNoticeCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(); + LovVO oLovVO = oHrmPrmViewAssBO.getPrmViewAssNoticeCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getPrmViewAssPromotionCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(); + LovVO oLovVO = oHrmPrmViewAssBO.getPrmViewAssPromotionCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getPrmEmployeeNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(); + LovVO oLovVO = oHrmPrmViewAssBO.getPrmEmployeeNoLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getPrmViewAssPosCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmViewAssBO oHrmPrmViewAssBO = new HrmPrmViewAssBO(); + LovVO oLovVO = oHrmPrmViewAssBO.getPrmViewAssPosCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getNoticeNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getNoticeNoLOVData(oLovQueryVO); + } + + public LovVO getPositionNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getPositionNoLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmPrmNoticeDtlHdrMetaInfo(HrmPrmNoticeDtlQVO oHrmPrmNoticeDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getHrmPrmNoticeDtlMetaInfo(oHrmPrmNoticeDtlQVO); + } + + public ArrayList getHrmPrmNoticeDtlHdrInfo(HrmPrmNoticeDtlQVO oHrmPrmNoticeDtlQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getHrmPrmNoticeDtlHdrInfo(oHrmPrmNoticeDtlQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getPrmNoticeDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getPrmNoticeDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getPrmNoticeDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getPrmNoticeDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmPrmNoticeDtlHdrBean oHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(oUserInfo); + return oHrmPrmNoticeDtlBO.saveData((BaseHeaderBean)oHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getPromNotGradeNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getPromNotGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromNotDesignationNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmNoticeDtlBO oHrmPrmNoticeDtlBO = new HrmPrmNoticeDtlBO(); + return oHrmPrmNoticeDtlBO.getPromNotDesignationNLOVData(oLovQueryVO); + } + + public LovVO getPrmGenAssPrmNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmGenAssBO oBO = new HrmPrmGenAssBO(); + LovVO oLovVO = oBO.getPrmNoLOV(oLovQueryVO); + return oLovVO; + } + + public String savePrmGenAss(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPrmGenAssBO oBO = new HrmPrmGenAssBO(oUserInfo); + return oBO.generateAssessment((HrmPrmGenAssHdrBean)oBaseHeaderBean); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getPromOrderEmpNoNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmPrmOrderBO oHrmPrmOrderBO = new HrmPrmOrderBO(); + return oHrmPrmOrderBO.getPromOrderEmpNoNLOVData(oLovQueryVO); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocal.java new file mode 100644 index 0000000..1bbdb02 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocal.java @@ -0,0 +1,158 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; +import wenrgise.hrms.vo.HrmPrmOrderQVO; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; + +public interface HrmPromotionFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmPromOrderHdrMetaInfo(HrmPrmOrderQVO paramHrmPrmOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPromOrderHdr(HrmPrmOrderQVO paramHrmPrmOrderQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmOrderHdrBean paramHrmPrmOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderEmpNoNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderEmpNoQLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderNoQLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromToGradeNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromToDesignationNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVDataQ(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVDataN(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRatingCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getKPAGrpCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingGradeNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingDesignationNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRatNoLOVQdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getKPARatingHeaderMetaInfo(HrmPrmKPARatingQVO paramHrmPrmKPARatingQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getKPARatingHeaderInfo(HrmPrmKPARatingQVO paramHrmPrmKPARatingQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmKPARatingPosDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmKPARatingPosDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmKPARatingFinDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmKPARatingFinDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmKPARatingHdrBean paramHrmPrmKPARatingHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmTCHdrMetaInfo(HrmPrmTestScoreQVO paramHrmPrmTestScoreQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmTCHdrInfo(HrmPrmTestScoreQVO paramHrmPrmTestScoreQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmTCDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmTCDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVQuery(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVNew(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmTestScoreHdrBean paramHrmPrmTestScoreHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmESDtlMetaInfo(HrmPrmExperienceScoreQVO paramHrmPrmExperienceScoreQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmESDtlInfo(HrmPrmExperienceScoreQVO paramHrmPrmExperienceScoreQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getESPositionCodeLOVQuery(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getESPositionCodeLOVNew(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmPrmESData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmQualCriteriaDetailMetaInfo(HrmPrmQualCriteriaQVO paramHrmPrmQualCriteriaQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmQualCriteriaDetail(HrmPrmQualCriteriaQVO paramHrmPrmQualCriteriaQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmQualCriteriaDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmQualPositionLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmQualificationLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmCriteriaPostLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmCriteriaDetailInfo(HrmPrmCriteriaQVO paramHrmPrmCriteriaQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmCriteriaDetailMetaInfo(HrmPrmCriteriaQVO paramHrmPrmCriteriaQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmCriteriaHdrBean paramHrmPrmCriteriaHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingFromGradeNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingFromDesignationNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingToGradeNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingToDesignationNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmViewAssDetailMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmViewAssDetail(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmViewAssDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssSiteCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssNoticeCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssPromotionCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmEmployeeNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssPosCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getNoticeNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmNoticeDtlHdrMetaInfo(HrmPrmNoticeDtlQVO paramHrmPrmNoticeDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmNoticeDtlHdrInfo(HrmPrmNoticeDtlQVO paramHrmPrmNoticeDtlQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmNoticeDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmNoticeDtlInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmNoticeDtlHdrBean paramHrmPrmNoticeDtlHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromNotGradeNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromNotDesignationNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmGenAssPrmNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmGenAss(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocalHome.java new file mode 100644 index 0000000..f6139f3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmPromotionFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmPromotionFacadeLocalHome extends EJBLocalHome { + HrmPromotionFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeBean.java new file mode 100644 index 0000000..14e5687 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeBean.java @@ -0,0 +1,571 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.ejb.business.HrmRecAdvAttrBO; +import wenrgise.hrms.ejb.business.HrmRecAdvtMtnBO; +import wenrgise.hrms.ejb.business.HrmRecApplnMtnBO; +import wenrgise.hrms.ejb.business.HrmRecEmpRecCreationBO; +import wenrgise.hrms.ejb.business.HrmRecRoasterEntryBO; +import wenrgise.hrms.ejb.business.HrmRecScrutAppMntBO; +import wenrgise.hrms.ejb.business.HrmRecTestCentreMstBO; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; + +public class HrmRecruitmentFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmTCMstHeaderMetaInfo(HrmRecTestCentreMstQVO oHrmTCMstQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecTestCentreMstBO oHrmTCMstBusinessObject = new HrmRecTestCentreMstBO(); + return oHrmTCMstBusinessObject.getHrmTCMstHdrMetaInfo(oHrmTCMstQueryVO); + } + + public ArrayList getHrmTCMstHeader(HrmRecTestCentreMstQVO oHrmTCMstQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecTestCentreMstBO oHrmTCMstBusinessObject = new HrmRecTestCentreMstBO(); + return oHrmTCMstBusinessObject.getHrmTCMstHeaderInfo(oHrmTCMstQueryVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmTCMstCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecTestCentreMstBO oTCMst = new HrmRecTestCentreMstBO(); + LovVO oLovVO = oTCMst.getHrmTCMstCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveDataTC(HrmRecTestCentreMstHdrBean oHrmTestCenterMasterHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecTestCentreMstBO oHrmTCMstBusinessObject = new HrmRecTestCentreMstBO(oUserInfo); + return oHrmTCMstBusinessObject.saveData((BaseHeaderBean)oHrmTestCenterMasterHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getRecLocVacencyDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecLocVacencyDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecLngReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecLngReqDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecQualReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecQualReqDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecSkillReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecSkillReqDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecWorkExpDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecWorkExpDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecJobDescDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecJobDescDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getRecLocVacencyDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecLocVacencyDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecLngReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecLngReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecQualReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecQualReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecSkillReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecSkillReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecWorkExpDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecWorkExpDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecJobDescDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + return oHrmRecAdvAttrBO.getRecJobDescDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmRecAttrLocationLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + LovVO oLovVO = oHrmRecAdvAttrBO.getHrmRecAttrLocationLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecAttrQualificationLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + LovVO oLovVO = oHrmRecAdvAttrBO.getHrmRecAttrQualificationLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecAttrLanguageLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + LovVO oLovVO = oHrmRecAdvAttrBO.getHrmRecAttrLanguageLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecAttrSkillLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + LovVO oLovVO = oHrmRecAdvAttrBO.getHrmRecAttrSkillLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecAttrWorkLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + LovVO oLovVO = oHrmRecAdvAttrBO.getHrmRecAttrWorkLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecAttrRefLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + LovVO oLovVO = oHrmRecAdvAttrBO.getHrmRecAttrRefLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecAttrPositionLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(); + LovVO oLovVO = oHrmRecAdvAttrBO.getHrmRecAttrPositionLOVData(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmRecApplnMtnHdrMetaInfo(HrmRecApplnMtnQVO oHrmRecApplnMtnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnMtnHdrMetaInfo(oHrmRecApplnMtnQVO); + } + + public ArrayList getHrmRecApplnMtnHeaderInfo(HrmRecApplnMtnQVO oHrmRecApplnMtnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnMtnHeaderInfo(oHrmRecApplnMtnQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRecApplnOtherDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnOtherDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnRefMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnRefMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnTrngDtlsMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnTrngDtlsMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnAddDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnAddDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnLangDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnLangDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnExpDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnExpDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnEduDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnEduDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnResultDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnResultDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRecApplnAddDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnAddDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnLangDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnLangDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnExpDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnExpDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnEduDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnEduDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnResultDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnResultDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnOtherDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnOtherDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnRef(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnRef(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnTrngDtls(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + return oHrmRecApplnMtnBO.getHrmRecApplnTrngDtls(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmRecApplnRefNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + LovVO oLovVO = oHrmRecApplnMtnBO.getHrmRecApplnRefNoLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecApplnDesigLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + LovVO oLovVO = oHrmRecApplnMtnBO.getHrmRecApplnDesigLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecApplnApplnNoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + LovVO oLovVO = oHrmRecApplnMtnBO.getHrmRecApplnApplnNoLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecApplnLangCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + LovVO oLovVO = oHrmRecApplnMtnBO.getHrmRecApplnLangCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecApplnKnowCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + LovVO oLovVO = oHrmRecApplnMtnBO.getHrmRecApplnKnowCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecApplnResvCatCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + LovVO oLovVO = oHrmRecApplnMtnBO.getHrmRecApplnResvCatCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecApplnTestCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(); + LovVO oLovVO = oHrmRecApplnMtnBO.getHrmRecApplnTestCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException { + try { + HrmRecApplnMtnBO oHrmRecApplnMtnBO = new HrmRecApplnMtnBO(oUserInfo); + return oHrmRecApplnMtnBO.saveData((BaseHeaderBean)oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmRefNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecScrutAppMntBO oHrmRecScrutAppMntBO = new HrmRecScrutAppMntBO(); + LovVO oLovVO = oHrmRecScrutAppMntBO.getRefNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmDesigNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecScrutAppMntBO oHrmRecScrutAppMntBO = new HrmRecScrutAppMntBO(); + LovVO oLovVO = oHrmRecScrutAppMntBO.getDesigNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmScrutAppMntnDetailMetaInfo(HrmRecScrutAppMntQVO oHrmRecScrutAppMntQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecScrutAppMntBO oHrmRecScrutAppMntBO = new HrmRecScrutAppMntBO(); + return oHrmRecScrutAppMntBO.getHrmRecScrutAppDtlMetaInfo(oHrmRecScrutAppMntQVO); + } + + public ArrayList getHrmScrutAppMntnDetailInfo(HrmRecScrutAppMntQVO oHrmRecScrutAppMntQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecScrutAppMntBO oHrmRecScrutAppMntBO = new HrmRecScrutAppMntBO(); + return oHrmRecScrutAppMntBO.getHrmRecScrutAppDetailInfo(oHrmRecScrutAppMntQVO, lStartPosition, lLastPosition); + } + + public String saveDataScrutApp(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecScrutAppMntBO oHrmRecScrutAppMntBO = new HrmRecScrutAppMntBO(oUserInfo); + return oHrmRecScrutAppMntBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmRecAdvtHdrMetaInfo(HrmRecAdvtMtnQVO oHrmRecAdvtMtnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + return oHrmRecAdvtMtnBO.getHrmRecAdvtHdrMetaInfo(oHrmRecAdvtMtnQVO); + } + + public ArrayList getHrmRecAdvtInfo(HrmRecAdvtMtnQVO oHrmRecAdvtMtnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + return oHrmRecAdvtMtnBO.getHrmRecAdvtInfo(oHrmRecAdvtMtnQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRecAdvtDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + return oHrmRecAdvtMtnBO.getHrmRecAdvtDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRecAdvtDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + return oHrmRecAdvtMtnBO.getHrmRecAdvtDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getClassDataLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + LovVO oLovVO = oHrmRecAdvtMtnBO.getClassDataLOV(oLovQueryVO); + return oLovVO; + } + + public LovVO getRefNoLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + LovVO oLovVO = oHrmRecAdvtMtnBO.getRefNoLOV(oLovQueryVO); + return oLovVO; + } + + public LovVO getEntryModeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + LovVO oLovVO = oHrmRecAdvtMtnBO.getEntryModeLOV(oLovQueryVO); + return oLovVO; + } + + public LovVO getPositionCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(); + LovVO oLovVO = oHrmRecAdvtMtnBO.getPositionCodeLOV(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecAdvtMtnBO oHrmRecAdvtMtnBO = new HrmRecAdvtMtnBO(oUserInfo); + return oHrmRecAdvtMtnBO.saveData((BaseHeaderBean)oHrmRecAdvtMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmEmpRecCrtnHdrMetaInfo(HrmRecEmpRecCreationQVO oHrmRecEmpRecCreationQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + return oHrmRecEmpRecCreationBO.getHrmEmpRecCrtnHdrMetaInfo(oHrmRecEmpRecCreationQVO); + } + + public ArrayList getHrmEmpRecCrtnHeaderInfo(HrmRecEmpRecCreationQVO oHrmRecEmpRecCreationQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + return oHrmRecEmpRecCreationBO.getHrmEmpRecCrtnHeaderInfo(oHrmRecEmpRecCreationQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmRecCrnApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnApplnNoLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnEntryModeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnEntryModeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnMotherTongueLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnMotherTongueLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnNationalityLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnNationalityLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnMaritalStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnMaritalStatusLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnReservationCtgLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnReservationCtgLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnReligionLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnReligionLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnCountryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnCountryLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnStateLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnStateLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnBaseSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnBaseSiteLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnDesignationLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnDesignationLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnScaleLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnScaleLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnGradeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnGradeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnCostCentreLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnCostCentreLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnJoiningGroupLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnJoiningGroupLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnTechNonTechLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnTechNonTechLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmRecCrnEmployeeTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(); + LovVO oLovVO = oHrmRecEmpRecCreationBO.getHrmRecCrnEmployeeTypeLOVdata(oLovQueryVO); + return oLovVO; + } + + public String saveData(HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecEmpRecCreationBO oHrmRecEmpRecCreationBO = new HrmRecEmpRecCreationBO(oUserInfo); + return oHrmRecEmpRecCreationBO.saveData((BaseHeaderBean)oHrmRecEmpRecCreationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String saveData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmRecAdvAttrBO oHrmRecAdvAttrBO = new HrmRecAdvAttrBO(oUserInfo); + return oHrmRecAdvAttrBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmRoasterEntryDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(); + return oHrmRecRoasterEntryBO.getHrmRoasterEntryDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRoasterEntryDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(); + return oHrmRecRoasterEntryBO.getHrmRoasterEntryDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRoasterHdrMetaInfo(HrmRoasterEntryQVO oHrmRoasterEntryQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(); + return oHrmRecRoasterEntryBO.getHrmRoasterHdrMetaInfo(oHrmRoasterEntryQVO); + } + + public ArrayList getHrmRoasterHdrInfo(HrmRoasterEntryQVO oHrmRoasterEntryQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(); + return oHrmRecRoasterEntryBO.getHrmRoasterHdrInfo(oHrmRoasterEntryQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmRoasterEntryHdrBean oHrmRoasterEntryHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(oUserInfo); + return oHrmRecRoasterEntryBO.saveData((BaseHeaderBean)oHrmRoasterEntryHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getRstrCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(); + LovVO oLovVO = oHrmRecRoasterEntryBO.getRstrCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getRstrSocialStatusLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(); + LovVO oLovVO = oHrmRecRoasterEntryBO.getRstrSocialStatusLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getRoasterEmpDetailsLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmRecRoasterEntryBO oHrmRecRoasterEntryBO = new HrmRecRoasterEntryBO(); + LovVO oLovVO = oHrmRecRoasterEntryBO.getRoasterEmpDetailsLOVdata(oLovQueryVO); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocal.java new file mode 100644 index 0000000..e53ecf5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocal.java @@ -0,0 +1,209 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; + +public interface HrmRecruitmentFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmTCMstHeaderMetaInfo(HrmRecTestCentreMstQVO paramHrmRecTestCentreMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTCMstHeader(HrmRecTestCentreMstQVO paramHrmRecTestCentreMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTCMstCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveDataTC(HrmRecTestCentreMstHdrBean paramHrmRecTestCentreMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecLocVacencyDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecLngReqDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecQualReqDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecSkillReqDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecJobDescDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecWorkExpDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecLocVacencyDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecLngReqDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecQualReqDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecSkillReqDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecWorkExpDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecJobDescDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrLocationLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrQualificationLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrLanguageLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrSkillLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrWorkLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrRefLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrPositionLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpRecCrtnHdrMetaInfo(HrmRecEmpRecCreationQVO paramHrmRecEmpRecCreationQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpRecCrtnHeaderInfo(HrmRecEmpRecCreationQVO paramHrmRecEmpRecCreationQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnEntryModeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnMotherTongueLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnNationalityLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnMaritalStatusLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnReservationCtgLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnReligionLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnCountryLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnStateLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnBaseSiteLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnDesignationLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnScaleLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnGradeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnCostCentreLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnJoiningGroupLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnTechNonTechLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnEmployeeTypeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmRecEmpRecCreationHdrBean paramHrmRecEmpRecCreationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnMtnHdrMetaInfo(HrmRecApplnMtnQVO paramHrmRecApplnMtnQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnMtnHeaderInfo(HrmRecApplnMtnQVO paramHrmRecApplnMtnQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnAddDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnResultDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnEduDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnExpDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnLangDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnOtherDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnRefMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnTrngDtlsMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnAddDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnEduDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnExpDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnLangDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnResultDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnOtherDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnRef(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnTrngDtls(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnRefNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnDesigLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnApplnNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnLangCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnKnowCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnResvCatCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnTestCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException; + + LovVO getHrmRefNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDesigNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScrutAppMntnDetailMetaInfo(HrmRecScrutAppMntQVO paramHrmRecScrutAppMntQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScrutAppMntnDetailInfo(HrmRecScrutAppMntQVO paramHrmRecScrutAppMntQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveDataScrutApp(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecAdvtHdrMetaInfo(HrmRecAdvtMtnQVO paramHrmRecAdvtMtnQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecAdvtInfo(HrmRecAdvtMtnQVO paramHrmRecAdvtMtnQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecAdvtDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecAdvtDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClassDataLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRefNoLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEntryModeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmRecAdvtMtnHdrBean paramHrmRecAdvtMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRoasterHdrMetaInfo(HrmRoasterEntryQVO paramHrmRoasterEntryQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRoasterHdrInfo(HrmRoasterEntryQVO paramHrmRoasterEntryQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmRoasterEntryHdrBean paramHrmRoasterEntryHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRoasterEntryDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRoasterEntryDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRstrCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRstrSocialStatusLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRoasterEmpDetailsLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocalHome.java new file mode 100644 index 0000000..464ad98 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmRecruitmentFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmRecruitmentFacadeLocalHome extends EJBLocalHome { + HrmRecruitmentFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeBean.java new file mode 100644 index 0000000..5eb55e8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeBean.java @@ -0,0 +1,33 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.ejb.business.HrmReportBO; + +public class HrmReportFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public LovVO getYYMMReportLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmReportBO oHrmReportBO = new HrmReportBO(); + LovVO oLovVO = oHrmReportBO.getYYMMReportLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getDesigIdReportLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmReportBO oHrmReportBO = new HrmReportBO(); + LovVO oLovVO = oHrmReportBO.getDesigIdReportLOVData(oLovQueryVO); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocal.java new file mode 100644 index 0000000..1a57cd5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocal.java @@ -0,0 +1,13 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.EJBLocalObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; + +public interface HrmReportFacadeLocal extends EJBLocalObject { + LovVO getYYMMReportLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getDesigIdReportLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocalHome.java new file mode 100644 index 0000000..64bde9f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmReportFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmReportFacadeLocalHome extends EJBLocalHome { + HrmReportFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacade.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacade.java new file mode 100644 index 0000000..b384264 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacade.java @@ -0,0 +1,837 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.vo.HrmAdhocReportQVO; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; +import wenrgise.hrms.vo.HrmLvApplnQVO; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; +import wenrgise.hrms.vo.HrmLvCancQVO; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; +import wenrgise.hrms.vo.HrmLvEncashQVO; +import wenrgise.hrms.vo.HrmLvLedgerQVO; +import wenrgise.hrms.vo.HrmLvMstQVO; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; +import wenrgise.hrms.vo.HrmPrmOrderQVO; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; +import wenrgise.hrms.vo.HrmTrngCalQVO; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; +import wenrgise.hrms.vo.HrmTrngFacFdbkQVO; +import wenrgise.hrms.vo.HrmTrngFacQVO; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public interface HrmSecondFacade extends EJBObject { + RecordMetaInfo getHrmAttEmpDayoffDtlMetaInfo(HrmAttEmpDayOffQVO paramHrmAttEmpDayOffQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttEmpDayoffDetailInfo(HrmAttEmpDayOffQVO paramHrmAttEmpDayOffQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttEmpDayoffData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpNoDayOffQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpNoDayOffInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttWGShiftDtlMetaInfo(HrmAttWorkGroupShiftQVO paramHrmAttWorkGroupShiftQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttWGShiftDtlInfo(HrmAttWorkGroupShiftQVO paramHrmAttWorkGroupShiftQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWGS(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpSiteCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpSiteCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpShiftCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttEmpShiftDtlMetaInfo(HrmAttEmpShiftQVO paramHrmAttEmpShiftQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttEmpShiftDtlInfo(HrmAttEmpShiftQVO paramHrmAttEmpShiftQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveEmpShift(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESEmpNoLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESEmpNoLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESShiftCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttHdrMetaInfo(HrmAttEmpAttInQVO paramHrmAttEmpAttInQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttHeaderInfo(HrmAttEmpAttInQVO paramHrmAttEmpAttInQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttEmpIn(HrmAttEmpAttInHdrBean paramHrmAttEmpAttInHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + HrmAttEmpAttInHdrBean getOnLoadSysDtTime(HrmAttEmpAttInHdrBean paramHrmAttEmpAttInHdrBean) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpShftCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryEmpShftCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryDtlEmpLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryLocationLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getEmpAttQueryHdrMetaInfo(HrmAttEmpAttQueryQVO paramHrmAttEmpAttQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getEmpAttQueryHeader(HrmAttEmpAttQueryQVO paramHrmAttEmpAttQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getEmpAttQueryDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getEmpAttQueryDtlInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmployeeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttOutHdrMetaInfo(HrmAttEmpAttOutQVO paramHrmAttEmpAttOutQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttOutHeaderInfo(HrmAttEmpAttOutQVO paramHrmAttEmpAttOutQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttEmpOut(HrmAttEmpAttOutHdrBean paramHrmAttEmpAttOutHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException, RemoteException; + + String saveHrmAttEmpQuery(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttWorkGroupDayOffDtlMetaInfo(HrmAttWorkGroupDayOffQVO paramHrmAttWorkGroupDayOffQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttWorkGroupDayOffDetailInfo(HrmAttWorkGroupDayOffQVO paramHrmAttWorkGroupDayOffQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttWorkGroupDayOffData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupSiteQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getAttShiftMstHeaderMetaInfo(HrmAttShiftMstQVO paramHrmAttShiftMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getAttShiftMstHeader(HrmAttShiftMstQVO paramHrmAttShiftMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveAttShiftMstData(HrmAttShiftMstHdrBean paramHrmAttShiftMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getShiftCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getAttEmpshiftRosterDetailMetaInfo(HrmAttEmpShiftRosterQVO paramHrmAttEmpShiftRosterQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getAttEmpshiftRosterDetail(HrmAttEmpShiftRosterQVO paramHrmAttEmpShiftRosterQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveShiftRosterGenData(HrmAttShiftRosterGenHdrBean paramHrmAttShiftRosterGenHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getShiftRosterGenWorkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTCMstHeaderMetaInfo(HrmRecTestCentreMstQVO paramHrmRecTestCentreMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTCMstHeader(HrmRecTestCentreMstQVO paramHrmRecTestCentreMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTCMst(HrmRecTestCentreMstHdrBean paramHrmRecTestCentreMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTCMstCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecLocVacencyDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecLngReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecQualReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecSkillReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecWorkExpDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecJobDescDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecLocVacencyDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecLngReqDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecQualReqDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecSkillReqDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecWorkExpDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecJobDescDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecAdvAttrDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrLocationLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrQualificationLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrLanguageLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrSkillLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrWorkLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrRefLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrPositionLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnMtnHdrMetaInfo(HrmRecApplnMtnQVO paramHrmRecApplnMtnQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnMtnHeaderInfo(HrmRecApplnMtnQVO paramHrmRecApplnMtnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnAddDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnEduDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnExpDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnLangDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnResultDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnOtherDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnRefMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnTrngDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnAddDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnExpDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnEduDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnLangDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnResultDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnOtherDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnRef(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnTrngDtls(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnResultDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnLangDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnEduDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnExpDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnAddDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnOtherDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnRef(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnTrngDtls(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnRefNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnDesigLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnApplnNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnLangCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnKnowCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnResvCatCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnTestCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRefNoLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getDesigNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScrutAppMntnDetailMetaInfo(HrmRecScrutAppMntQVO paramHrmRecScrutAppMntQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScrutAppMntnDetailInfo(HrmRecScrutAppMntQVO paramHrmRecScrutAppMntQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecScrutAppDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecAdvtHdrMetaInfo(HrmRecAdvtMtnQVO paramHrmRecAdvtMtnQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecAdvtHdrInfo(HrmRecAdvtMtnQVO paramHrmRecAdvtMtnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecAdvtDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecAdvtDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClassDataLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRefNoLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEntryModeLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveAdvtData(HrmRecAdvtMtnHdrBean paramHrmRecAdvtMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpRecCrtnHdrMetaInfo(HrmRecEmpRecCreationQVO paramHrmRecEmpRecCreationQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpRecCrtnHeaderInfo(HrmRecEmpRecCreationQVO paramHrmRecEmpRecCreationQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnEntryModeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnMotherTongueLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnNationalityLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnMaritalStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnReservationCtgLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnReligionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnCountryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnStateLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnBaseSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnDesignationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnScaleLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnGradeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnCostCentreLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnJoiningGroupLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnTechNonTechLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnEmployeeTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmRecEmpRecCreationHdrBean paramHrmRecEmpRecCreationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsHeaderMetaInfo(HrmTrngCrsMstQVO paramHrmTrngCrsMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsHeader(HrmTrngCrsMstQVO paramHrmTrngCrsMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngcrsDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngCrs(HrmTrngCrsMstHdrBean paramHrmTrngCrsMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngInsCrsHeaderMetaInfo(HrmTrngInsCrsQVO paramHrmTrngInsCrsQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngInsCrsHeader(HrmTrngInsCrsQVO paramHrmTrngInsCrsQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngInsCrsDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngInsCrsDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngInsCrs(HrmTrngInsCrsHdrBean paramHrmTrngInsCrsHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsBudHeaderMetaInfo(HrmTrngCrsBudQVO paramHrmTrngCrsBudQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsBudHeader(HrmTrngCrsBudQVO paramHrmTrngCrsBudQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsBudDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsBudDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngCrsBud(HrmTrngCrsBudHdrBean paramHrmTrngCrsBudHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCalHeaderMetaInfo(HrmTrngCalQVO paramHrmTrngCalQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCalHeader(HrmTrngCalQVO paramHrmTrngCalQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCalDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngCal(HrmTrngCalHdrBean paramHrmTrngCalHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacHeaderMetaInfo(HrmTrngFacQVO paramHrmTrngFacQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacHeader(HrmTrngFacQVO paramHrmTrngFacQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmFacMast(HrmTrngFacBean paramHrmTrngFacBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacTrngHeaderMetaInfo(HrmTrngFacTrngQVO paramHrmTrngFacTrngQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacTrngHeader(HrmTrngFacTrngQVO paramHrmTrngFacTrngQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacTrngDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacTrngCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmFacTrng(HrmTrngFacTrngHdrBean paramHrmTrngFacTrngHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTrngReqHeaderMetaInfo(HrmTrngEmpReqQVO paramHrmTrngEmpReqQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTrngReqHeader(HrmTrngEmpReqQVO paramHrmTrngEmpReqQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpReqDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmployeeCodeLOVdataQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmployeeCodeLOVdataN(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getGroupInformation(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpHistHeaderMetaInfo(HrmTrngEmpHistQVO paramHrmTrngEmpHistQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpHistHeader(HrmTrngEmpHistQVO paramHrmTrngEmpHistQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpHistDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpHistDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpAttHeaderMetaInfo(HrmTrngEmpAttQVO paramHrmTrngEmpAttQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpAttHeader(HrmTrngEmpAttQVO paramHrmTrngEmpAttQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpAttDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpAttDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngEmpAtt(HrmTrngEmpAttHdrBean paramHrmTrngEmpAttHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdBkDtlMetaInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdBkDetailInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdBkNextDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdBkNextDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdbkDtlHdrMetaInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdbkDtlHdr(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmFacFeedback(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpFdBkDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpFdBkDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpFbkHeaderMetaInfo(HrmTrngEmpFbkQVO paramHrmTrngEmpFbkQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpFbkHeader(HrmTrngEmpFbkQVO paramHrmTrngEmpFbkQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpFeedback(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFdbkRatingHelpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + void calendarClose(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalCloseCrsNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgMstBranchCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgInstCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCountryCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCityCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgFacMstEmpNoLOVNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgFacMstBaseInstLOVQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCalendarCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCourseCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCrsInsNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClsCalCrsLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistEmpLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistCrsLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistCalLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttendanceDtlLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalInstLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalCrsCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCourseLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqCourseLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFacultyLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngRatingLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqCalLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqRecoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqEmpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmFacNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCourseLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFacultyLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + HashMap getEligClassInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmGenEligRuleHdrBean paramHrmGenEligRuleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException, RemoteException; + + RecordMetaInfo getGenEligRuleMetaInfo(HrmGenEligRuleQVO paramHrmGenEligRuleQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getGenEligRuleHeaderInfo(HrmGenEligRuleQVO paramHrmGenEligRuleQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmGenEligRuleQuery(HrmGenEligRuleQueryHdrBean paramHrmGenEligRuleQueryHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmGenEligRuleQueryDetail(HrmGenEligRuleQueryQVO paramHrmGenEligRuleQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmGenEligRuleQueryDetailMetaInfo(HrmGenEligRuleQueryQVO paramHrmGenEligRuleQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveMasterHdrMetaInfo(HrmLvMstQVO paramHrmLvMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveMasterHeaderInfo(HrmLvMstQVO paramHrmLvMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveMasterDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveMasterDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurLeaveMasterDetailInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLeaveMst(HrmLvMstHdrBean paramHrmLvMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvMstStateLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveMasterLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveMasterCalLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveCodeInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveLedgerDtlMetaInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveLedgerDetailInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveLedgerTxnDtlMetaInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveLedgerTxnDetailInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveLeaveLedger(HrmLvLedgerHdrBean paramHrmLvLedgerHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmployeeNumberLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveCodesLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getGroupInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveEncashHdrMetaInfo(HrmLvEncashQVO paramHrmLvEncashQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveEncashHdrInfo(HrmLvEncashQVO paramHrmLvEncashQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectLvEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitLvEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveTypesLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvEncashEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvEncashEmpNoNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEncshLvCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvApplnEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvApplnEmpNoNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveAppQueryDtlMetaInfo(HrmLvApplnQueryQVO paramHrmLvApplnQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveAppQueryDtlInfo(HrmLvApplnQueryQVO paramHrmLvApplnQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveAppln(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String CancelLeaveAppln(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getLeaveDates(HrmLvApplnHdrBean paramHrmLvApplnHdrBean) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveAppQueryScreenDtlMetaInfo(HrmLvApplnQVO paramHrmLvApplnQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveAppQueryScreenDtlInfo(HrmLvApplnQVO paramHrmLvApplnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvAppQryEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvAppQryLvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvAppLvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvAppLvCdInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveCanQueryDtlMetaInfo(HrmLvCancQueryQVO paramHrmLvCancQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveCanQueryDetailInfo(HrmLvCancQueryQVO paramHrmLvCancQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveCanQueryScreenDtlMetaInfo(HrmLvCancQVO paramHrmLvCancQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveCanQueryScreenDtlInfo(HrmLvCancQVO paramHrmLvCancQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvCancHdrBean paramHrmLvCancHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveCanc(HrmLvCancHdrBean paramHrmLvCancHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclLeaveEmpLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclLeaveTypeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPromOrderHdrMetaInfo(HrmPrmOrderQVO paramHrmPrmOrderQVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPromOrderHdr(HrmPrmOrderQVO paramHrmPrmOrderQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePromOrder(HrmPrmOrderHdrBean paramHrmPrmOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderEmpNoNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderEmpNoQLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderNoQLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromToGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromToDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRatingCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getKPAGrpCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRatNoLOVQdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getKPARatingHeaderMetaInfo(HrmPrmKPARatingQVO paramHrmPrmKPARatingQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getKPARatingHeaderInfo(HrmPrmKPARatingQVO paramHrmPrmKPARatingQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmKPARatingPosDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmKPARatingPosDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmKPARatingFinDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmKPARatingFinDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmKPARatingHdrBean paramHrmPrmKPARatingHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmTCHdrMetaInfo(HrmPrmTestScoreQVO paramHrmPrmTestScoreQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmTCHdrInfo(HrmPrmTestScoreQVO paramHrmPrmTestScoreQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmTCDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmTCDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVQuery(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmTCData(HrmPrmTestScoreHdrBean paramHrmPrmTestScoreHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmESDtlMetaInfo(HrmPrmExperienceScoreQVO paramHrmPrmExperienceScoreQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmESDtlInfo(HrmPrmExperienceScoreQVO paramHrmPrmExperienceScoreQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getESPositionCodeLOVQuery(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getESPositionCodeLOVNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmPrmESData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmQualCriteriaDetailMetaInfo(HrmPrmQualCriteriaQVO paramHrmPrmQualCriteriaQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmQualCriteriaDetail(HrmPrmQualCriteriaQVO paramHrmPrmQualCriteriaQVO, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmQualCriteriaDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmQualPositionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmQualificationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmCriteriaPostLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmCriteriaDetailInfo(HrmPrmCriteriaQVO paramHrmPrmCriteriaQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmCriteriaDetailMetaInfo(HrmPrmCriteriaQVO paramHrmPrmCriteriaQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmCriteriaHdrBean paramHrmPrmCriteriaHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingFromGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingFromDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingToGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingToDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmViewAssDetailMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmViewAssDetail(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmViewAssDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssSiteCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssNoticeCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssPromotionCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmEmployeeNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssPosCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmNoticeNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmPositionNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmNoticeDtlHdrMetaInfo(HrmPrmNoticeDtlQVO paramHrmPrmNoticeDtlQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmNoticeDtlHdrInfo(HrmPrmNoticeDtlQVO paramHrmPrmNoticeDtlQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getNoticeDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmNoticeDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveNoticeDtlData(HrmPrmNoticeDtlHdrBean paramHrmPrmNoticeDtlHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromNotGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromNotDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmGenAssPrmNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException, CreateException, RemoteException; + + String savePrmGenAss(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException, CreateException, RemoteException; + + LovVO getHrmLvCreditRegionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRoasterHdrMetaInfo(HrmRoasterEntryQVO paramHrmRoasterEntryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRoasterHdrInfo(HrmRoasterEntryQVO paramHrmRoasterEntryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveRoasterHdr(HrmRoasterEntryHdrBean paramHrmRoasterEntryHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRstrCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRoasterEntryDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRoasterEntryDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRstrSocialStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRoasterEmpDetailsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdhocReportHdrMetaInfo(HrmAdhocReportQVO paramHrmAdhocReportQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdhocReportHeaderInfo(HrmAdhocReportQVO paramHrmAdhocReportQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAdhocReport(HrmAdhocReportHdrBean paramHrmAdhocReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAssetMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersAssetInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersAsset(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeBean.java new file mode 100644 index 0000000..a3a1f7e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeBean.java @@ -0,0 +1,2538 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.vo.HrmAdhocReportQVO; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; +import wenrgise.hrms.vo.HrmLvApplnQVO; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; +import wenrgise.hrms.vo.HrmLvCancQVO; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; +import wenrgise.hrms.vo.HrmLvEncashQVO; +import wenrgise.hrms.vo.HrmLvLedgerQVO; +import wenrgise.hrms.vo.HrmLvMstQVO; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; +import wenrgise.hrms.vo.HrmPrmOrderQVO; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; +import wenrgise.hrms.vo.HrmTrngCalQVO; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; +import wenrgise.hrms.vo.HrmTrngFacFdbkQVO; +import wenrgise.hrms.vo.HrmTrngFacQVO; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public class HrmSecondFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + private HrmRecruitmentFacadeLocalHome getHrmRecruitmentFacadeLocalHome() throws NamingException { + InitialContext context = new InitialContext(); + return (HrmRecruitmentFacadeLocalHome)context.lookup("ejb/HrmRecruitmentFacadeLocal"); + } + + public RecordMetaInfo getHrmTCMstHeaderMetaInfo(HrmRecTestCentreMstQVO oHrmTCMstQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmTCMstHeaderMetaInfo(oHrmTCMstQueryVO); + } + + public ArrayList getHrmTCMstHeader(HrmRecTestCentreMstQVO oHrmTCMstQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmTCMstHeader(oHrmTCMstQueryVO, lStartPosition, lLastPosition); + } + + public String saveHrmTCMst(HrmRecTestCentreMstHdrBean oHrmTestCenterMasterHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacade = oHrmRecruitmentFacadeHome.create(); + return oHrmRecruitmentFacade.saveDataTC(oHrmTestCenterMasterHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmTCMstCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmTCMstCodeLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getRecLocVacencyDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecLocVacencyDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecLngReqDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecLngReqDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecQualReqDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecQualReqDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecSkillReqDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecSkillReqDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecWorkExpDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecWorkExpDetailMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getRecJobDescDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecJobDescDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getRecLocVacencyDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecLocVacencyDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecLngReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecLngReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecQualReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecQualReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecSkillReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecSkillReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecWorkExpDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecWorkExpDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getRecJobDescDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getRecJobDescDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmRecAdvAttrDtl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmRecAttrLocationLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAttrLocationLOVData(oLovQueryVO); + } + + public LovVO getHrmRecAttrQualificationLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAttrQualificationLOVData(oLovQueryVO); + } + + public LovVO getHrmRecAttrLanguageLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAttrLanguageLOVData(oLovQueryVO); + } + + public LovVO getHrmRecAttrSkillLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAttrSkillLOVData(oLovQueryVO); + } + + public LovVO getHrmRecAttrWorkLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAttrWorkLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmRecApplnMtnHdrMetaInfo(HrmRecApplnMtnQVO oHrmRecApplnMtnQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnMtnHdrMetaInfo(oHrmRecApplnMtnQVO); + } + + public ArrayList getHrmRecApplnMtnHeaderInfo(HrmRecApplnMtnQVO oHrmRecApplnMtnQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnMtnHeaderInfo(oHrmRecApplnMtnQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRecApplnAddDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnAddDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnResultDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnResultDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnLangDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnLangDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnEduDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnEduDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnExpDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnExpDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnOtherDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnOtherDtlMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnRefMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnRefMetaInfo(lPrimaryKey); + } + + public RecordMetaInfo getHrmRecApplnTrngDtlsMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnTrngDtlsMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRecApplnAddDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnAddDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnEduDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnEduDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnExpDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnExpDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnLangDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnLangDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnResultDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnResultDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnOtherDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnOtherDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnRef(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnRef(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmRecApplnTrngDtls(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnTrngDtls(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmRecApplnPerDtl(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnAddDtl(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnLangDtl(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnEduDtl(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnExpDtl(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnOtherDtl(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnResultDtl(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnRef(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String saveHrmRecApplnTrngDtls(HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecApplnMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmRecApplnRefNoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnRefNoLOVData(oLovQueryVO); + } + + public LovVO getHrmRecApplnDesigLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnDesigLOVData(oLovQueryVO); + } + + public LovVO getHrmRecApplnApplnNoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnApplnNoLOVData(oLovQueryVO); + } + + public LovVO getHrmRecApplnLangCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnLangCodeLOVData(oLovQueryVO); + } + + public LovVO getHrmRecApplnKnowCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnKnowCodeLOVData(oLovQueryVO); + } + + public LovVO getHrmRecApplnResvCatCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnResvCatCodeLOVData(oLovQueryVO); + } + + public LovVO getHrmRecApplnTestCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecApplnTestCodeLOVData(oLovQueryVO); + } + + public LovVO getRefNoLOVdataNmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRefNoLOVdata(oLovQueryVO); + } + + public LovVO getDesigNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmDesigNoLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmScrutAppMntnDetailMetaInfo(HrmRecScrutAppMntQVO oHrmRecScrutAppMntQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmScrutAppMntnDetailMetaInfo(oHrmRecScrutAppMntQVO); + } + + public ArrayList getHrmScrutAppMntnDetailInfo(HrmRecScrutAppMntQVO oHrmRecScrutAppMntQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmScrutAppMntnDetailInfo(oHrmRecScrutAppMntQVO, lStartPosition, lLastPosition); + } + + public String saveHrmRecScrutAppDtl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.saveDataScrutApp(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmRecAdvtHdrMetaInfo(HrmRecAdvtMtnQVO oHrmRecAdvtMtnQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAdvtHdrMetaInfo(oHrmRecAdvtMtnQVO); + } + + public ArrayList getHrmRecAdvtHdrInfo(HrmRecAdvtMtnQVO oHrmRecAdvtMtnQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAdvtInfo(oHrmRecAdvtMtnQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmRecAdvtDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAdvtDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRecAdvtDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAdvtDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getClassDataLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getClassDataLOV(oLovQueryVO); + } + + public LovVO getRefNoLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getRefNoLOV(oLovQueryVO); + } + + public LovVO getEntryModeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getEntryModeLOV(oLovQueryVO); + } + + public LovVO getPositionCodeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getPositionCodeLOV(oLovQueryVO); + } + + public String saveAdvtData(HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecAdvtMtnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpRecCrtnHdrMetaInfo(HrmRecEmpRecCreationQVO oHrmRecEmpRecCreationQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmEmpRecCrtnHdrMetaInfo(oHrmRecEmpRecCreationQVO); + } + + public ArrayList getHrmEmpRecCrtnHeaderInfo(HrmRecEmpRecCreationQVO oHrmRecEmpRecCreationQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmEmpRecCrtnHeaderInfo(oHrmRecEmpRecCreationQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmRecCrnApplnNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnEntryModeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnEntryModeLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnMotherTongueLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnMotherTongueLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnNationalityLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnNationalityLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnMaritalStatusLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnMaritalStatusLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnReservationCtgLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnReservationCtgLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnReligionLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnReligionLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnCountryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnCountryLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnStateLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnStateLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnBaseSiteLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnBaseSiteLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnDesignationLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnDesignationLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnScaleLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnScaleLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnGradeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnGradeLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnCostCentreLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnCostCentreLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnJoiningGroupLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnJoiningGroupLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnTechNonTechLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnTechNonTechLOVdata(oLovQueryVO); + } + + public LovVO getHrmRecCrnEmployeeTypeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecCrnEmployeeTypeLOVdata(oLovQueryVO); + } + + public String saveData(HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRecEmpRecCreationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmRecAttrRefLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAttrRefLOVData(oLovQueryVO); + } + + public LovVO getHrmRecAttrPositionLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRecAttrPositionLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmTrngCrsHeaderMetaInfo(HrmTrngCrsMstQVO oHrmTrngCrsMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsHeaderMetaInfo(oHrmTrngCrsMstQVO); + } + + public ArrayList getHrmTrngCrsHeader(HrmTrngCrsMstQVO oHrmTrngCrsMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsHeader(oHrmTrngCrsMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngCrsDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngcrsDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmTrngCrs(HrmTrngCrsMstHdrBean oHrmTrngCrsMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oHrmTrngCrsMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmTrngInsCrsHeaderMetaInfo(HrmTrngInsCrsQVO oHrmTrngInsCrsQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngInsCrsHeaderMetaInfo(oHrmTrngInsCrsQVO); + } + + public ArrayList getHrmTrngInsCrsHeader(HrmTrngInsCrsQVO oHrmTrngInsCrsQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngInsCrsHeader(oHrmTrngInsCrsQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngInsCrsDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngInsCrsDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngInsCrsDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngInsCrsDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmTrngInsCrs(HrmTrngInsCrsHdrBean oHrmTrngInsCrsHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oHrmTrngInsCrsHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmTrngCrsBudHeaderMetaInfo(HrmTrngCrsBudQVO oHrmTrngCrsBudQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsBudHeaderMetaInfo(oHrmTrngCrsBudQVO); + } + + public ArrayList getHrmTrngCrsBudHeader(HrmTrngCrsBudQVO oHrmTrngCrsBudQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsBudHeader(oHrmTrngCrsBudQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngCrsBudDetailMetaInfo(String lPrimaryKey) throws CreateException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsBudDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngCrsBudDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsBudDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmTrngCrsBud(HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oHrmTrngCrsBudHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmTrngCalHeaderMetaInfo(HrmTrngCalQVO oHrmTrngCalQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalHeaderMetaInfo(oHrmTrngCalQVO); + } + + public ArrayList getHrmTrngCalHeader(HrmTrngCalQVO oHrmTrngCalQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalHeader(oHrmTrngCalQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngCalDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngCalDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmTrngCal(HrmTrngCalHdrBean oHrmTrngCalHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oHrmTrngCalHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmFacHeaderMetaInfo(HrmTrngFacQVO oHrmTrngFacQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmFacHeaderMetaInfo(oHrmTrngFacQVO); + } + + public ArrayList getHrmFacHeader(HrmTrngFacQVO oHrmTrngFacQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmFacHeader(oHrmTrngFacQVO, lStartPosition, lLastPosition); + } + + public String saveHrmFacMast(HrmTrngFacBean oHrmTrngFacBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oHrmTrngFacBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmFacTrngHeaderMetaInfo(HrmTrngFacTrngQVO oHrmTrngFacTrngQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmFacTrngHeaderMetaInfo(oHrmTrngFacTrngQVO); + } + + public ArrayList getHrmFacTrngHeader(HrmTrngFacTrngQVO oHrmTrngFacTrngQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmFacTrngHeader(oHrmTrngFacTrngQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmFacTrngDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmFacTrngDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmFacTrngCalDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmFacTrngDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmFacTrng(HrmTrngFacTrngHdrBean oHrmTrngFacTrngHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oHrmTrngFacTrngHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmEmpTrngReqHeaderMetaInfo(HrmTrngEmpReqQVO oHrmTrngEmpReqQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmEmpTrngReqHeaderMetaInfo(oHrmTrngEmpReqQVO); + } + + public ArrayList getHrmEmpTrngReqHeader(HrmTrngEmpReqQVO oHrmTrngEmpReqQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmEmpTrngReqHeader(oHrmTrngEmpReqQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpReqDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmEmpReqDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmEmpReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpTrngReq(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveEmpTrngReq(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrainingFacadeLocalHome oHrmTrainingFacadeLocalHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHrmTrainingFacadeLocalHome.create(); + return oHrmTrainingFacadeLocal.approveEmpTrngReq(oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectEmpTrngReq(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrainingFacadeLocalHome oHrmTrainingFacadeLocalHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHrmTrainingFacadeLocalHome.create(); + return oHrmTrainingFacadeLocal.rejectEmpTrngReq(oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitEmpTrngReq(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrainingFacadeLocalHome oHrmTrainingFacadeLocalHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHrmTrainingFacadeLocalHome.create(); + return oHrmTrainingFacadeLocal.submitEmpTrngReq(oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public LovVO getEmployeeCodeLOVdataQ(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHrmTrainingFacadeLocalHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHrmTrainingFacadeLocalHome.create(); + return oHrmTrainingFacadeLocal.getEmpCodeLOVdataQ(oLovQueryVO); + } + + public LovVO getEmployeeCodeLOVdataN(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHrmTrainingFacadeLocalHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHrmTrainingFacadeLocalHome.create(); + return oHrmTrainingFacadeLocal.getEmpCodeLOVdataN(oLovQueryVO); + } + + public String getGroupInformation(String oUserTypeId) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHrmTrainingFacadeLocalHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHrmTrainingFacadeLocalHome.create(); + return oHrmTrainingFacadeLocal.getGroupInfo(oUserTypeId); + } + + public RecordMetaInfo getHrmTrngEmpHistHeaderMetaInfo(HrmTrngEmpHistQVO oHrmTrngEmpHistQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpHistHeaderMetaInfo(oHrmTrngEmpHistQVO); + } + + public ArrayList getHrmTrngEmpHistHeader(HrmTrngEmpHistQVO oHrmTrngEmpHistQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpHistHeader(oHrmTrngEmpHistQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpHistDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpHistDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngEmpHistDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpHistDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpAttHeaderMetaInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpAttHeaderMetaInfo(oHrmTrngEmpAttQueryVO); + } + + public ArrayList getHrmTrngEmpAttHeader(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpAttHeader(oHrmTrngEmpAttQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpAttDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpAttDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngEmpAttDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpAttDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmTrngEmpAtt(HrmTrngEmpAttHdrBean oHrmTrngEmpAttHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveHrmTrngEmpAtt(oHrmTrngEmpAttHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public RecordMetaInfo getHrmTrngFacFdBkDtlMetaInfo(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacFdBkDtlMetaInfo(oHrmTrngFacFdbkQVO); + } + + public ArrayList getHrmTrngFacFdBkDetailInfo(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacFdBkDetailInfo(oHrmTrngFacFdbkQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngFacFdBkNextDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacFdBkNextDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngFacFdBkNextDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacFdBkNextDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngFacFdbkDtlHdrMetaInfo(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacFdbkDtlHdrMetaInfo(oHrmTrngFacFdbkQVO); + } + + public ArrayList getHrmTrngFacFdbkDtlHdr(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacFdbkDtlHdr(oHrmTrngFacFdbkQVO, lStartPosition, lLastPosition); + } + + public String saveHrmFacFeedback(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmTrngEmpFdBkDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpFdBkDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngEmpFdBkDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpFdBkDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpFbkHeaderMetaInfo(HrmTrngEmpFbkQVO oHrmTrngEmpFdbkQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpFbkHeaderMetaInfo(oHrmTrngEmpFdbkQVO); + } + + public ArrayList getHrmTrngEmpFbkHeader(HrmTrngEmpFbkQVO oHrmTrngEmpFdbkQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngEmpFbkHeader(oHrmTrngEmpFdbkQVO, lStartPosition, lLastPosition); + } + + public String saveHrmEmpFeedback(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmTrngFdbkRatingHelpLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFdbkRatingHelpLOVData(oLovQueryVO); + } + + public void calendarClose(String sCalId) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + oHrmTrainingFacadeLocal.calendarClose(sCalId); + } + + public LovVO getHrmTrngCalDetailLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalDetailLOVInfo(oLovQueryVO); + } + + public LovVO getHrmFacNameLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmFacNameLOVInfo(oLovQueryVO); + } + + public LovVO getHrmTrngCourseLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCourseLOV(oLovQueryVO); + } + + public LovVO getHrmTrngFacultyLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacultyLOV(oLovQueryVO); + } + + public LovVO getHrmTrgMstBranchCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgMstBranchCodeLOVdataQmode(oLovQueryVO); + } + + public LovVO getHrmTrgInstCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgInstCodeLOVdataQmode(oLovQueryVO); + } + + public LovVO getHrmTrgCourseLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgCourseLOVData(oLovQueryVO); + } + + public LovVO getHrmTrgReqCourseLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgReqCourseLOVData(oLovQueryVO); + } + + public LovVO getHrmTrgCountryCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgCountryCodeLOVdataQmode(oLovQueryVO); + } + + public LovVO getHrmTrgCityCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgCityCodeLOVdataQmode(oLovQueryVO); + } + + public LovVO getHrmTrgFacMstEmpNoLOVNmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgFacMstEmpNoLOVNmode(oLovQueryVO); + } + + public LovVO getHrmTrgFacMstBaseInstLOVQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgFacMstBaseInstLOVQmode(oLovQueryVO); + } + + public LovVO getHrmTrngBudCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngBudCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngBudCalendarCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngBudCalendarCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngBudCourseCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngBudCourseCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngCalNameLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalNameLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngCalCrsCdLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalCrsCdLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngCalInstLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCalInstLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngFacultyLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngFacultyLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngSiteLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngSiteLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngCrsInsNameLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngCrsInsNameLOV(oLovQueryVO); + } + + public LovVO getHrmClsCalCrsLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmClsCalCrsLOV(oLovQueryVO); + } + + public LovVO getHrmEmpHistEmpLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmEmpHistEmpLOV(oLovQueryVO); + } + + public LovVO getHrmEmpHistCrsLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmEmpHistCrsLOV(oLovQueryVO); + } + + public LovVO getHrmEmpHistCalLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmEmpHistCalLOV(oLovQueryVO); + } + + public LovVO getHrmAttendanceDtlLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmAttendanceDtlLOV(oLovQueryVO); + } + + public LovVO getHrmTrngRatingLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrngRatingLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrgReqCalLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgReqCalLOVData(oLovQueryVO); + } + + public LovVO getHrmTrgReqRecoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgReqRecoLOVData(oLovQueryVO); + } + + public LovVO getHrmTrgReqEmpLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmTrgReqEmpLOVData(oLovQueryVO); + } + + public LovVO getHrmCalCloseCrsNameLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmTrainingFacadeLocalHome oHome = (HrmTrainingFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmTrainingFacadeLocal"); + HrmTrainingFacadeLocal oHrmTrainingFacadeLocal = oHome.create(); + return oHrmTrainingFacadeLocal.getHrmCalCloseCrsNameLOVdata(oLovQueryVO); + } + + private HrmManPlFacadeLocalHome getHrmManPlFacadeLocalHome() throws NamingException { + InitialContext context = new InitialContext(); + return (HrmManPlFacadeLocalHome)context.lookup("ejb/HrmManPlFacadeLocal"); + } + + public HashMap getEligClassInfo() throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEligibilityFacadeLocalHome oHome = (HrmEligibilityFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEligibilityFacadeLocal"); + HrmEligibilityFacadeLocal oHrmEligibilityFacadeLocal = oHome.create(); + return oHrmEligibilityFacadeLocal.getEligClassInfo(); + } + + public RecordMetaInfo getGenEligRuleMetaInfo(HrmGenEligRuleQVO oHrmGenEligRuleQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmEligibilityFacadeLocalHome oHome = (HrmEligibilityFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEligibilityFacadeLocal"); + HrmEligibilityFacadeLocal oHrmEligibilityFacadeLocal = oHome.create(); + return oHrmEligibilityFacadeLocal.getHrmGenEligRuleHdrMetaInfo(oHrmGenEligRuleQVO); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getGenEligRuleHeaderInfo(HrmGenEligRuleQVO oHrmGenEligRuleQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmEligibilityFacadeLocalHome oHome = (HrmEligibilityFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEligibilityFacadeLocal"); + HrmEligibilityFacadeLocal oHrmEligibilityFacadeLocal = oHome.create(); + return oHrmEligibilityFacadeLocal.getHrmGenEligRuleHeaderInfo(oHrmGenEligRuleQVO, lStartPosition, lLastPosition); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveData(HrmGenEligRuleHdrBean oHrmEligibilityRuleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException { + try { + HrmEligibilityFacadeLocalHome oHome = (HrmEligibilityFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEligibilityFacadeLocal"); + HrmEligibilityFacadeLocal oFacadeLocal = oHome.create(); + oFacadeLocal.saveData(oHrmEligibilityRuleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return "1"; + } + + public RecordMetaInfo getHrmGenEligRuleQueryDetailMetaInfo(HrmGenEligRuleQueryQVO oQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEligibilityFacadeLocalHome oHome = (HrmEligibilityFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEligibilityFacadeLocal"); + HrmEligibilityFacadeLocal oHrmEligibilityFacadeLocal = oHome.create(); + return oHrmEligibilityFacadeLocal.getHrmGenEligRuleQueryDetailMetaInfo(oQVO); + } + + public ArrayList getHrmGenEligRuleQueryDetail(HrmGenEligRuleQueryQVO oQVO, long lAbsoluteStart, long lAbsoluteEnd) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEligibilityFacadeLocalHome oHome = (HrmEligibilityFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEligibilityFacadeLocal"); + HrmEligibilityFacadeLocal oHrmEligibilityFacadeLocal = oHome.create(); + return oHrmEligibilityFacadeLocal.getHrmGenEligRuleQueryDetail(oQVO, lAbsoluteStart, lAbsoluteEnd); + } + + public String saveHrmGenEligRuleQuery(HrmGenEligRuleQueryHdrBean oHrmGenEligRuleQueryHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEligibilityFacadeLocalHome oHome = (HrmEligibilityFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEligibilityFacadeLocal"); + HrmEligibilityFacadeLocal oHrmEligibilityFacadeLocal = oHome.create(); + return oHrmEligibilityFacadeLocal.saveData(oHrmGenEligRuleQueryHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmLeaveMasterHdrMetaInfo(HrmLvMstQVO oHrmLvMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveMasterFacadeLocal = oHome.create(); + return oLeaveMasterFacadeLocal.getHrmLeaveMasterHdrMetaInfo(oHrmLvMstQVO); + } + + public ArrayList getHrmLeaveMasterHeaderInfo(HrmLvMstQVO oHrmLvMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveMasterFacadeLocal = oHome.create(); + return oHrmLeaveMasterFacadeLocal.getHrmLeaveMasterHeaderInfo(oHrmLvMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLeaveMasterDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveMasterDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmLeaveMasterDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveMasterDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrmCurLeaveMasterDetailInfo() throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmCurLeaveMasterDetailInfo(); + } + + public LovVO getHrmLeaveDetailLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveDetailLOVInfo(oLovQueryVO); + } + + public LovVO getHrmLeaveMasterLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLeaveMasterLOVdata(oLovQueryVO); + } + + public LovVO getHrmLvMstStateLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvMstStateLOVdata(oLovQueryVO); + } + + public LovVO getHrmLeaveCodeInsertLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLeaveCodeInsertLOVdata(oLovQueryVO); + } + + public LovVO getHrmLeaveMasterCalLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLeaveMasterCalLOVdata(oLovQueryVO); + } + + public String saveHrmLeaveMst(HrmLvMstHdrBean oHrmLvMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacade = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacade.saveData(oHrmLvMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmLeaveLedgerDtlMetaInfo(HrmLvLedgerQVO oHrmLvLedgerQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveLedgerDtlMetaInfo(oHrmLvLedgerQVO); + } + + public ArrayList getHrmLeaveLedgerDetailInfo(HrmLvLedgerQVO oHrmLvLedgerQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveLedgerDetailInfo(oHrmLvLedgerQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmLeaveLedgerTxnDtlMetaInfo(HrmLvLedgerQVO oHrmLvLedgerQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveLedgerTxnDtlMetaInfo(oHrmLvLedgerQVO); + } + + public ArrayList getHrmLeaveLedgerTxnDetailInfo(HrmLvLedgerQVO oHrmLvLedgerQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveLedgerTxnDetailInfo(oHrmLvLedgerQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmEmployeeNumberLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmEmployeeNumberLOVdata(oLovQueryVO); + } + + public LovVO getHrmLeaveCodesLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLeaveCodesLOVdata(oLovQueryVO); + } + + public LovVO getEmpCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getEmpCodeLOVdata(oLovQueryVO); + } + + public String getGroupInfo(String oUserTypeId) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getGroupInfo(oUserTypeId); + } + + public String saveLeaveLedger(HrmLvLedgerHdrBean oHrmLvLedgerHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacade = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacade.saveData(oHrmLvLedgerHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmEmpLeaveEncashHdrMetaInfo(HrmLvEncashQVO oHrmLvEncashQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveEncashHdrMetaInfo(oHrmLvEncashQVO); + } + + public ArrayList getHrmEmpLeaveEncashHdrInfo(HrmLvEncashQVO oHrmLvEncashQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveEncashHdrInfo(oHrmLvEncashQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.saveData(oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveLeaveEncash(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.approveLeaveEncash(oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectLvEncash(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.rejectLvEncash(oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitLvEncash(HrmLvEncashHdrBean oHrmLvEncashHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.submitLvEncash(oHrmLvEncashHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public LovVO getHrmLeaveTypesLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLeaveTypesLOVdata(oLovQueryVO); + } + + public LovVO getHrmLvEncashEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvEncashEmpNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmLvEncashEmpNoNLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvEncashEmpNoNLOVdata(oLovQueryVO); + } + + public LovVO getHrmEncshLvCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmEncshLvCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmLvApplnEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvApplnEmpNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmLvApplnEmpNoNLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvApplnEmpNoNLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmEmpLeaveAppQueryDtlMetaInfo(HrmLvApplnQueryQVO oHrmLvApplnQueryQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveAppQueryDtlMetaInfo(oHrmLvApplnQueryQVO); + } + + public ArrayList getHrmEmpLeaveAppQueryDtlInfo(HrmLvApplnQueryQVO oHrmLvApplnQueryQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveAppQueryDtlInfo(oHrmLvApplnQueryQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmLvApplnHdrBean oHrmLvApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.saveData(oHrmLvApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveLeaveAppln(HrmLvApplnHdrBean oHrmLvApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.approveLeaveAppln(oHrmLvApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String CancelLeaveAppln(HrmLvApplnHdrBean oHrmLvApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.CancelLeaveAppln(oHrmLvApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getLeaveDates(HrmLvApplnHdrBean oLvApplHdrBean) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.getLeaveDates(oLvApplHdrBean); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmEmpLeaveAppQueryScreenDtlMetaInfo(HrmLvApplnQVO oHrmLvApplnQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveAppQueryScreenDtlMetaInfo(oHrmLvApplnQVO); + } + + public ArrayList getHrmEmpLeaveAppQueryScreenDtlInfo(HrmLvApplnQVO oHrmLvApplnQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveAppQueryScreenDtlInfo(oHrmLvApplnQVO, lStartPosition, lLastPosition); + } + + public LovVO getHrmEmpLvAppLvCdLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmEmpLvAppLvCdLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpLvAppLvCdInsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmEmpLvAppLvCdInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmLvAppQryEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvAppQryEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmLvAppQryLvCdLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvAppQryLvCdLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmLeaveCanQueryDtlMetaInfo(HrmLvCancQueryQVO oHrmLvCancQueryQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveCanQueryDtlMetaInfo(oHrmLvCancQueryQVO); + } + + public ArrayList getHrmLeaveCanQueryDetailInfo(HrmLvCancQueryQVO oHrmLvCancQueryQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmLeaveCanQueryDetailInfo(oHrmLvCancQueryQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpLeaveCanQueryScreenDtlMetaInfo(HrmLvCancQVO oHrmLvCancQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveCanQueryScreenDtlMetaInfo(oHrmLvCancQVO); + } + + public ArrayList getHrmEmpLeaveCanQueryScreenDtlInfo(HrmLvCancQVO oHrmLvCancQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oLeaveFacadeLocal = oHome.create(); + return oLeaveFacadeLocal.getHrmEmpLeaveCanQueryScreenDtlInfo(oHrmLvCancQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmLvCancHdrBean oHrmLvCancHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.saveData(oHrmLvCancHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveLeaveCanc(HrmLvCancHdrBean oHrmLvCancHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmLeaveFacadeLocalHome oHrmLeaveFacadeLocalHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHrmLeaveFacadeLocalHome.create(); + return oHrmLeaveFacadeLocal.approveLeaveCanc(oHrmLvCancHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public LovVO getHrmCnclLeaveEmpLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmCnclLeaveEmpLOV(oLovQueryVO); + } + + public LovVO getHrmCnclLeaveTypeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmCnclLeaveTypeLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmPromOrderHdrMetaInfo(HrmPrmOrderQVO oHrmPrmOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPromOrderHdrMetaInfo(oHrmPrmOrderQVO); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHrmPromOrderHdr(HrmPrmOrderQVO oHrmPrmOrderQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPromOrderHdr(oHrmPrmOrderQVO, lStartPosition, lLastPosition); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String savePromOrder(HrmPrmOrderHdrBean oHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.saveData(oHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getPromOrderEmpNoNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromOrderEmpNoNLOVData(oLovQueryVO); + } + + public LovVO getPromOrderEmpNoQLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromOrderEmpNoQLOVData(oLovQueryVO); + } + + public LovVO getPromOrderNoQLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromOrderNoQLOVData(oLovQueryVO); + } + + public LovVO getPromToGradeNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromToGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromToDesignationNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromToDesignationNLOVData(oLovQueryVO); + } + + public LovVO getRatingCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getRatingCodeLOVData(oLovQueryVO); + } + + public LovVO getKPAGrpCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getKPAGrpCodeLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingGradeNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromKPARatingGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingDesignationNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromKPARatingDesignationNLOVData(oLovQueryVO); + } + + public LovVO getRatNoLOVQdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getRatNoLOVQdata(oLovQueryVO); + } + + public RecordMetaInfo getKPARatingHeaderMetaInfo(HrmPrmKPARatingQVO oHrmPrmKPARatingQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getKPARatingHeaderMetaInfo(oHrmPrmKPARatingQVO); + } + + public ArrayList getKPARatingHeaderInfo(HrmPrmKPARatingQVO oHrmPrmKPARatingQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getKPARatingHeaderInfo(oHrmPrmKPARatingQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getPrmKPARatingPosDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmKPARatingPosDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getPrmKPARatingPosDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmKPARatingPosDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getPrmKPARatingFinDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmKPARatingFinDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getPrmKPARatingFinDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmKPARatingFinDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmPrmKPARatingHdrBean oHrmPrmKPARatingHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.saveData(oHrmPrmKPARatingHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmPrmTCHdrMetaInfo(HrmPrmTestScoreQVO oHrmPrmTestScoreQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmTCHdrMetaInfo(oHrmPrmTestScoreQVO); + } + + public ArrayList getHrmPrmTCHdrInfo(HrmPrmTestScoreQVO oHrmPrmTestScoreQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmTCHdrInfo(oHrmPrmTestScoreQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmPrmTCDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmTCDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmPrmTCDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmTCDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getPositionCodeLOVNew(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPositionCodeLOVNew(oLovQueryVO); + } + + public LovVO getPositionCodeLOVQuery(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPositionCodeLOVQuery(oLovQueryVO); + } + + public String savePrmTCData(HrmPrmTestScoreHdrBean oHrmPrmTestScoreHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.saveData(oHrmPrmTestScoreHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmPrmESDtlMetaInfo(HrmPrmExperienceScoreQVO oHrmPrmExperienceScoreQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmESDtlMetaInfo(oHrmPrmExperienceScoreQVO); + } + + public ArrayList getHrmPrmESDtlInfo(HrmPrmExperienceScoreQVO oHrmPrmExperienceScoreQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmESDtlInfo(oHrmPrmExperienceScoreQVO, lStartPosition, lLastPosition); + } + + public LovVO getESPositionCodeLOVQuery(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getESPositionCodeLOVQuery(oLovQueryVO); + } + + public LovVO getESPositionCodeLOVNew(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getESPositionCodeLOVNew(oLovQueryVO); + } + + public String saveHrmPrmESData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.saveHrmPrmESData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getPrmQualCriteriaDetailMetaInfo(HrmPrmQualCriteriaQVO oHrmPrmQualCriteriaQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmQualCriteriaDetailMetaInfo(oHrmPrmQualCriteriaQVO); + } + + public ArrayList getPrmQualCriteriaDetail(HrmPrmQualCriteriaQVO oHrmPrmQualCriteriaQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmQualCriteriaDetail(oHrmPrmQualCriteriaQVO, lStartPosition, lLastPosition); + } + + public String savePrmQualCriteriaDtl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHrmPromotionFacadeLocalHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHrmPromotionFacadeLocalHome.create(); + return oHrmPromotionFacadeLocal.savePrmQualCriteriaDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmPrmQualPositionLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmQualPositionLOVdata(oLovQueryVO); + } + + public LovVO getHrmPrmQualificationLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmQualificationLOVdata(oLovQueryVO); + } + + public LovVO getHrmPrmCriteriaPostLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmCriteriaPostLOV(oLovQueryVO); + } + + public ArrayList getHrmPrmCriteriaDetailInfo(HrmPrmCriteriaQVO oQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmCriteriaDetailInfo(oQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmPrmCriteriaDetailMetaInfo(HrmPrmCriteriaQVO oQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmCriteriaDetailMetaInfo(oQVO); + } + + public String saveData(HrmPrmCriteriaHdrBean oHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.saveData(oHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getPromKPARatingFromGradeNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromKPARatingFromGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingFromDesignationNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromKPARatingFromDesignationNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingToGradeNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromKPARatingToGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromKPARatingToDesignationNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromKPARatingToDesignationNLOVData(oLovQueryVO); + } + + public RecordMetaInfo getPrmViewAssDetailMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + oRecordMetaInfo = oHrmPromotionFacadeLocal.getPrmViewAssDetailMetaInfo(lPrimaryKey, oUserInfo); + oHrmPromotionFacadeLocal.remove(); + return oRecordMetaInfo; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public ArrayList getPrmViewAssDetail(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + ArrayList oList = new ArrayList(); + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + oList = oHrmPromotionFacadeLocal.getPrmViewAssDetail(lPrimaryKey, lStartPosition, lLastPosition, oUserInfo); + oHrmPromotionFacadeLocal.remove(); + return oList; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public String savePrmViewAssDtl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String headerPrimaryKey = null; + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + headerPrimaryKey = oHrmPromotionFacadeLocal.savePrmViewAssDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + oHrmPromotionFacadeLocal.remove(); + return headerPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public LovVO getPrmViewAssSiteCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + LovVO oLovVO = new LovVO(); + HrmPromotionFacadeLocalHome oHrmPromotionFacadeLocalHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHrmPromotionFacadeLocalHome.create(); + oLovVO = oHrmPromotionFacadeLocal.getPrmViewAssSiteCodeLOVData(oLovQueryVO); + oHrmPromotionFacadeLocal.remove(); + return oLovVO; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public LovVO getPrmViewAssNoticeCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + LovVO oLovVO = new LovVO(); + HrmPromotionFacadeLocalHome oHrmPromotionFacadeLocalHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHrmPromotionFacadeLocalHome.create(); + oLovVO = oHrmPromotionFacadeLocal.getPrmViewAssNoticeCodeLOVData(oLovQueryVO); + oHrmPromotionFacadeLocal.remove(); + return oLovVO; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public LovVO getPrmViewAssPromotionCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + LovVO oLovVO = new LovVO(); + HrmPromotionFacadeLocalHome oHrmPromotionFacadeLocalHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHrmPromotionFacadeLocalHome.create(); + oLovVO = oHrmPromotionFacadeLocal.getPrmViewAssPromotionCodeLOVData(oLovQueryVO); + oHrmPromotionFacadeLocal.remove(); + return oLovVO; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public LovVO getPrmEmployeeNoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + LovVO oLovVO = new LovVO(); + HrmPromotionFacadeLocalHome oHrmPromotionFacadeLocalHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHrmPromotionFacadeLocalHome.create(); + oLovVO = oHrmPromotionFacadeLocal.getPrmEmployeeNoLOVData(oLovQueryVO); + oHrmPromotionFacadeLocal.remove(); + return oLovVO; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public LovVO getPrmViewAssPosCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + LovVO oLovVO = new LovVO(); + HrmPromotionFacadeLocalHome oHrmPromotionFacadeLocalHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHrmPromotionFacadeLocalHome.create(); + oLovVO = oHrmPromotionFacadeLocal.getPrmViewAssPosCodeLOVData(oLovQueryVO); + oHrmPromotionFacadeLocal.remove(); + return oLovVO; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public LovVO getHrmPrmNoticeNoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getNoticeNoLOVData(oLovQueryVO); + } + + public LovVO getHrmPrmPositionNoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPositionNoLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmPrmNoticeDtlHdrMetaInfo(HrmPrmNoticeDtlQVO oHrmPrmNoticeDtlQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmNoticeDtlHdrMetaInfo(oHrmPrmNoticeDtlQVO); + } + + public ArrayList getHrmPrmNoticeDtlHdrInfo(HrmPrmNoticeDtlQVO oHrmPrmNoticeDtlQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getHrmPrmNoticeDtlHdrInfo(oHrmPrmNoticeDtlQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getNoticeDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmNoticeDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getPrmNoticeDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPrmNoticeDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveNoticeDtlData(HrmPrmNoticeDtlHdrBean oHrmPrmNoticeDtlHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.saveData(oHrmPrmNoticeDtlHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getPromNotGradeNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromNotGradeNLOVData(oLovQueryVO); + } + + public LovVO getPromNotDesignationNLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + return oHrmPromotionFacadeLocal.getPromNotDesignationNLOVData(oLovQueryVO); + } + + public LovVO getPrmGenAssPrmNoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + LovVO oLovVO = new LovVO(); + HrmPromotionFacadeLocalHome oHrmPromotionFacadeLocalHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHrmPromotionFacadeLocalHome.create(); + oLovVO = oHrmPromotionFacadeLocal.getPrmGenAssPrmNoLOVData(oLovQueryVO); + oHrmPromotionFacadeLocal.remove(); + return oLovVO; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public String savePrmGenAss(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String headerPrimaryKey = null; + HrmPromotionFacadeLocalHome oHome = (HrmPromotionFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPromotionFacadeLocal"); + HrmPromotionFacadeLocal oHrmPromotionFacadeLocal = oHome.create(); + headerPrimaryKey = oHrmPromotionFacadeLocal.savePrmGenAss(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + oHrmPromotionFacadeLocal.remove(); + return headerPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (RemoveException oRe) { + throw new EnrgiseSystemException(oRe); + } + } + + public RecordMetaInfo getHrmAttWGShiftDtlMetaInfo(HrmAttWorkGroupShiftQVO oHrmAttWorkGroupShiftQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oAttendanceFacadeLocal = oHome.create(); + return oAttendanceFacadeLocal.getHrmAttWGShiftDtlMetaInfo(oHrmAttWorkGroupShiftQVO); + } + + public ArrayList getHrmAttWGShiftDtlInfo(HrmAttWorkGroupShiftQVO oHrmAttWorkGroupShiftQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oAttendanceFacadeLocal = oHome.create(); + return oAttendanceFacadeLocal.getHrmAttWGShiftDtlInfo(oHrmAttWorkGroupShiftQVO, lStartPosition, lLastPosition); + } + + public String saveWGS(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.saveWGSData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmAttEmpShiftDtlMetaInfo(HrmAttEmpShiftQVO oHrmAttEmpShiftQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oAttendanceFacadeLocal = oHome.create(); + return oAttendanceFacadeLocal.getHrmAttEmpShiftDtlMetaInfo(oHrmAttEmpShiftQVO); + } + + public ArrayList getHrmAttEmpShiftDtlInfo(HrmAttEmpShiftQVO oHrmAttEmpShiftQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oAttendanceFacadeLocal = oHome.create(); + return oAttendanceFacadeLocal.getHrmAttEmpShiftDtlInfo(oHrmAttEmpShiftQVO, lStartPosition, lLastPosition); + } + + public String saveEmpShift(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.saveEmpShiftData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmAttESEmpNoLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttESEmpNoLOVdataQmode(oLovQueryVO); + } + + public LovVO getHrmAttESEmpNoLOVdataNmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttESEmpNoLOVdataNmode(oLovQueryVO); + } + + public LovVO getHrmAttESShiftCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttESShiftCodeLOVdataNmode(oLovQueryVO); + } + + public LovVO getHrmAttWorkGrpCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGrpCodeLOVdataQmode(oLovQueryVO); + } + + public LovVO getHrmAttWorkGrpCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGrpCodeLOVdataNmode(oLovQueryVO); + } + + public LovVO getHrmAttWorkGrpSiteCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGrpSiteCodeLOVdataQmode(oLovQueryVO); + } + + public LovVO getHrmAttWorkGrpSiteCodeLOVdataNmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGrpSiteCodeLOVdataNmode(oLovQueryVO); + } + + public LovVO getHrmAttWorkGrpShiftCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGrpShiftCodeLOVdataQmode(oLovQueryVO); + } + + public RecordMetaInfo getHrmAttHdrMetaInfo(HrmAttEmpAttInQVO oHrmAttEmpAttInQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttHdrMetaInfo(oHrmAttEmpAttInQVO); + } + + public ArrayList getHrmAttHeaderInfo(HrmAttEmpAttInQVO oHrmAttEmpAttInQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttHeaderInfo(oHrmAttEmpAttInQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAttEmpIn(HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAttendanceFacadeLocalHome oHrmAttendanceFacadeHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacade = oHrmAttendanceFacadeHome.create(); + return oHrmAttendanceFacade.saveData(oHrmAttEmpAttInHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (EnrgiseApplicationException oAppEx) { + throw oAppEx; + } + } + + public String saveHrmAttEmpQuery(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAttendanceFacadeLocalHome oHrmAttendanceFacadeHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacade = oHrmAttendanceFacadeHome.create(); + return oHrmAttendanceFacade.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (EnrgiseApplicationException oAppEx) { + throw oAppEx; + } + } + + public HrmAttEmpAttInHdrBean getOnLoadSysDtTime(HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getOnLoadSysDtTime(oHrmAttEmpAttInHdrBean); + } + + public LovVO getHrmAttEmpShftCodeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttEmpShftCodeLOV(oLovQueryVO); + } + + public LovVO getHrmAttQueryEmpShftCodeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttQueryEmpShftCodeLOV(oLovQueryVO); + } + + public LovVO getHrmAttQueryLocationLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttQueryLocationLOV(oLovQueryVO); + } + + public LovVO getHrmAttQueryDtlEmpLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttQueryDtlEmpLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmAttOutHdrMetaInfo(HrmAttEmpAttOutQVO oHrmAttEmpAttOutQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttOutHdrMetaInfo(oHrmAttEmpAttOutQVO, oUserInfo); + } + + public ArrayList getHrmAttOutHeaderInfo(HrmAttEmpAttOutQVO oHrmAttEmpAttOutQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttOutHeaderInfo(oHrmAttEmpAttOutQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAttEmpOut(HrmAttEmpAttOutHdrBean oHrmAttEmpAttInHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException { + try { + HrmAttendanceFacadeLocalHome oHrmAttendanceFacadeHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacade = oHrmAttendanceFacadeHome.create(); + return oHrmAttendanceFacade.saveData(oHrmAttEmpAttInHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } catch (EnrgiseApplicationException oAppEx) { + throw oAppEx; + } + } + + public RecordMetaInfo getEmpAttQueryHdrMetaInfo(HrmAttEmpAttQueryQVO oHrmAttEmpAttQueryQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getEmpAttQueryHdrMetaInfo(oHrmAttEmpAttQueryQVO); + } + + public ArrayList getEmpAttQueryHeader(HrmAttEmpAttQueryQVO oHrmAttEmpAttQueryQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getEmpAttQueryHeader(oHrmAttEmpAttQueryQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getEmpAttQueryDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getEmpAttQueryDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getEmpAttQueryDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getEmpAttQueryDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmAttEmployeeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttEmployeeLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmAttEmpDayoffDtlMetaInfo(HrmAttEmpDayOffQVO oHrmAttEmpDayOffQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttEmpDayoffDtlMetaInfo(oHrmAttEmpDayOffQVO); + } + + public ArrayList getHrmAttEmpDayoffDetailInfo(HrmAttEmpDayOffQVO oHrmAttEmpDayOffQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttEmpDayoffDetailInfo(oHrmAttEmpDayOffQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAttEmpDayoffData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.saveHrmAttEmpDayoff(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmAttEmpNoDayOffQueryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttEmpNoDayOffQueryLOV(oLovQueryVO); + } + + public LovVO getHrmAttEmpNoDayOffInsertLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttEmpNoDayOffInsertLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmAttWorkGroupDayOffDtlMetaInfo(HrmAttWorkGroupDayOffQVO oHrmAttWorkGroupDayOffQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGroupDayOffDtlMetaInfo(oHrmAttWorkGroupDayOffQVO); + } + + public ArrayList getHrmAttWorkGroupDayOffDetailInfo(HrmAttWorkGroupDayOffQVO oHrmAttWorkGroupDayOffQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGroupDayOffDetailInfo(oHrmAttWorkGroupDayOffQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAttWorkGroupDayOffData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.saveHrmAttWorkGroupDayOff(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmAttWorkGroupInsertLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGroupInsertLOV(oLovQueryVO); + } + + public LovVO getHrmAttWorkGroupQueryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGroupQueryLOV(oLovQueryVO); + } + + public LovVO getHrmAttWorkGroupSiteQueryLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAttWorkGroupSiteQueryLOV(oLovQueryVO); + } + + public RecordMetaInfo getAttShiftMstHeaderMetaInfo(HrmAttShiftMstQVO oHrmAttShiftMstQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getAttShiftMstHeaderMetaInfo(oHrmAttShiftMstQVO); + } + + public ArrayList getAttShiftMstHeader(HrmAttShiftMstQVO oHrmAttShiftMstQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getAttShiftMstHeader(oHrmAttShiftMstQVO, lStartPosition, lLastPosition); + } + + public String saveAttShiftMstData(HrmAttShiftMstHdrBean oHrmAttShiftMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.saveAttShiftMstData(oHrmAttShiftMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getAttEmpshiftRosterDetailMetaInfo(HrmAttEmpShiftRosterQVO oHrmAttEmpShiftRosterQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getAttEmpshiftRosterDetailMetaInfo(oHrmAttEmpShiftRosterQVO); + } + + public ArrayList getAttEmpshiftRosterDetail(HrmAttEmpShiftRosterQVO oHrmAttEmpShiftRosterQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getAttEmpshiftRosterDetail(oHrmAttEmpShiftRosterQVO, lStartPosition, lLastPosition); + } + + public LovVO getShiftCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmAttendanceFacadeLocal.getShiftCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public String saveShiftRosterGenData(HrmAttShiftRosterGenHdrBean oHrmAttShiftRosterGenHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.saveShiftRosterGenData(oHrmAttShiftRosterGenHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getShiftRosterGenWorkGrpLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmAttendanceFacadeLocal.getShiftRosterGenWorkGrpLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmLvCreditRegionLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmLeaveFacadeLocalHome oHome = (HrmLeaveFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmLeaveFacadeLocal"); + HrmLeaveFacadeLocal oHrmLeaveFacadeLocal = oHome.create(); + return oHrmLeaveFacadeLocal.getHrmLvCreditRegionLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmRoasterHdrMetaInfo(HrmRoasterEntryQVO oHrmRoasterEntryQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRoasterHdrMetaInfo(oHrmRoasterEntryQVO); + } + + public ArrayList getHrmRoasterHdrInfo(HrmRoasterEntryQVO oHrmRoasterEntryQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRoasterHdrInfo(oHrmRoasterEntryQVO, lStartPosition, lLastPosition); + } + + public String saveRoasterHdr(HrmRoasterEntryHdrBean oHrmRoasterEntryHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.saveData(oHrmRoasterEntryHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmRoasterEntryDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRoasterEntryDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmRoasterEntryDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHrmRecruitmentFacadeLocalHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHrmRecruitmentFacadeLocalHome.create(); + return oHrmRecruitmentFacadeLocal.getHrmRoasterEntryDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getRstrSocialStatusLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmRecruitmentFacadeLocal.getRstrSocialStatusLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getRstrCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmRecruitmentFacadeLocal.getRstrCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getRoasterEmpDetailsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmRecruitmentFacadeLocalHome oHome = (HrmRecruitmentFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmRecruitmentFacadeLocal"); + HrmRecruitmentFacadeLocal oHrmRecruitmentFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmRecruitmentFacadeLocal.getRoasterEmpDetailsLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmAdhocReportHdrMetaInfo(HrmAdhocReportQVO oHrmAdhocReportQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAdhocReportHdrMetaInfo(oHrmAdhocReportQVO); + } + + public ArrayList getHrmAdhocReportHeaderInfo(HrmAdhocReportQVO oHrmAdhocReportQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.getHrmAdhocReportHeaderInfo(oHrmAdhocReportQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAdhocReport(HrmAdhocReportHdrBean oHrmAdhocReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + return oHrmAttendanceFacadeLocal.saveHrmAdhocReport(oHrmAdhocReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getQueryLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAttendanceFacadeLocalHome oHome = (HrmAttendanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAttendanceFacadeLocal"); + HrmAttendanceFacadeLocal oHrmAttendanceFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmAttendanceFacadeLocal.getQueryLOVData(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmEmpPersAssetMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAssetMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpPersAssetInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.getHrmEmpPersAssetInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpPersAsset(HrmEmpPersHdrBean oHrmEmpPersHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmEmployeeMaintenanceFacadeLocalHome oHome = (HrmEmployeeMaintenanceFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmEmployeeMaintenanceFacadeLocal"); + HrmEmployeeMaintenanceFacadeLocal oHrmEmployeeMaintenanceFacadeLocal = oHome.create(); + return oHrmEmployeeMaintenanceFacadeLocal.saveData(oHrmEmpPersHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java new file mode 100644 index 0000000..4770a16 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java @@ -0,0 +1,9 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface HrmSecondFacadeHome extends EJBHome { + HrmSecondFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeBean.java new file mode 100644 index 0000000..c23edbe --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeBean.java @@ -0,0 +1,339 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.ejb.business.HrmSepApplnBO; +import wenrgise.hrms.ejb.business.HrmSepCatMstBO; +import wenrgise.hrms.ejb.business.HrmSepClrEmpBO; +import wenrgise.hrms.ejb.business.HrmSepClrLstBO; +import wenrgise.hrms.ejb.business.HrmSepClrTmplMstBO; +import wenrgise.hrms.ejb.business.HrmSepOrderBO; +import wenrgise.hrms.vo.HrmSepApplnQVO; +import wenrgise.hrms.vo.HrmSepCatMstQVO; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; +import wenrgise.hrms.vo.HrmSepOrderQVO; + +public class HrmSeparationFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmSepApplnHdrMetaInfo(HrmSepApplnQVO oHrmSepApplnQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getHrmSepApplnHdrMetaInfo(oHrmSepApplnQVO); + } + + public ArrayList getHrmSepApplnHeaderInfo(HrmSepApplnQVO oHrmSepApplnQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getHrmSepApplnHeaderInfo(oHrmSepApplnQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepApplnDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getHrmSepApplnDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepApplnDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getHrmSepApplnDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getHrmSeparationCodeLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepCatMstBO oHrmSepCatMstBO = new HrmSepCatMstBO(); + return oHrmSepCatMstBO.getHrmSeparationCodeLOV(oLovQueryVO); + } + + public LovVO getHrmSepApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getHrmSepApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmSepCategoryLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getHrmSepCategoryLOVdata(oLovQueryVO); + } + + public LovVO getSepEmpNoQLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getSepEmpNoQLOVData(oLovQueryVO); + } + + public LovVO getSepEmpNoNLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(); + return oHrmSepApplnBO.getSepEmpNoNLOVData(oLovQueryVO); + } + + public String saveData(HrmSepApplnHdrBean oHrmSepApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(oUserInfo); + return oHrmSepApplnBO.saveData((BaseHeaderBean)oHrmSepApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String approveSepAppln(HrmSepApplnHdrBean oHrmSepApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(oUserInfo); + return oHrmSepApplnBO.approveSepAppln((BaseHeaderBean)oHrmSepApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectSepAppln(HrmSepApplnHdrBean oHrmSepApplnHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepApplnBO oHrmSepApplnBO = new HrmSepApplnBO(oUserInfo); + return oHrmSepApplnBO.rejectSepAppln((BaseHeaderBean)oHrmSepApplnHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmSepOrderNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getHrmSepOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmSepOrderApplnNoLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getHrmSepOrderApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmSepOrderApplnNoQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getHrmSepOrderApplnNoQLOVdata(oLovQueryVO); + } + + public LovVO getSepApprNameLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getSepApprNameLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmSepOrderHdrMetaInfo(HrmSepOrderQVO oHrmSepOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getHrmSepOrderHdrMetaInfo(oHrmSepOrderQVO); + } + + public ArrayList getHrmSepOrderHdr(HrmSepOrderQVO oHrmSepOrderQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getHrmSepOrderHdr(oHrmSepOrderQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepOrderDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getHrmSepOrderDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepOrderDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(); + return oHrmSepOrderBO.getHrmSepOrderDtl(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmSepOrderHdrBean oHrmSepOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(oUserInfo); + return oHrmSepOrderBO.saveData((BaseHeaderBean)oHrmSepOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String approveSepOrder(HrmSepOrderHdrBean oHrmSepOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(oUserInfo); + return oHrmSepOrderBO.approveSepOrder((BaseHeaderBean)oHrmSepOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectSepOrder(HrmSepOrderHdrBean oHrmSepOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepOrderBO oHrmSepOrderBO = new HrmSepOrderBO(oUserInfo); + return oHrmSepOrderBO.rejectSepOrder((BaseHeaderBean)oHrmSepOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmSepCatHeaderMetaInfo(HrmSepCatMstQVO oHrmSepCatMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepCatMstBO oHrmSepCatMstBO = new HrmSepCatMstBO(); + return oHrmSepCatMstBO.getHrmSepCatHdrMetaInfo(oHrmSepCatMstQVO); + } + + public ArrayList getHrmSepCatHeader(HrmSepCatMstQVO oHrmSepCatMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepCatMstBO oHrmSepCatMstBO = new HrmSepCatMstBO(); + return oHrmSepCatMstBO.getHrmSepCatHeaderInfo(oHrmSepCatMstQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmSepCatMstHdrBean oHrmSepCatMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepCatMstBO oHrmSepCatMstBO = new HrmSepCatMstBO(oUserInfo); + return oHrmSepCatMstBO.saveData((BaseHeaderBean)oHrmSepCatMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmSepClrLstDtlMetaInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrLstBO oHrmSepClrLstBO = new HrmSepClrLstBO(); + return oHrmSepClrLstBO.getHrmSepClrLstDtlMetaInfo(); + } + + public ArrayList getHrmSepClrLstDetailInfo(long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrLstBO oHrmSepClrLstBO = new HrmSepClrLstBO(); + return oHrmSepClrLstBO.getHrmSepClrLstDetailInfo(lDetailFirstPosition, lDetailLastPosition); + } + + public String saveClrListData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepClrLstBO oHrmSepClrLstBO = new HrmSepClrLstBO(oUserInfo); + return oHrmSepClrLstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmSepClrTmplMstHdrMetaInfo(HrmSepClrTmplMstQVO oHrmSepEmpClrQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrTmplMstBO oBO = new HrmSepClrTmplMstBO(); + return oBO.getHrmSepClrTmplMstHdrMetaInfo(oHrmSepEmpClrQVO); + } + + public ArrayList getHrmSepClrTmplMstHdr(HrmSepClrTmplMstQVO oHrmSepEmpClrQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrTmplMstBO oBO = new HrmSepClrTmplMstBO(); + return oBO.getHrmSepClrTmplMstHeaderInfo(oHrmSepEmpClrQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepClrTmplMstDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrTmplMstBO oBO = new HrmSepClrTmplMstBO(); + return oBO.getHrmSepClrTmplMstDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepClrTmplMstDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrTmplMstBO oBO = new HrmSepClrTmplMstBO(); + return oBO.getHrmSepClrTmplMstDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmSepClrTmplMstHdrBean oHrmSepEmpClrHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrTmplMstBO oBO = new HrmSepClrTmplMstBO(oUserInfo); + return oBO.saveData((BaseHeaderBean)oHrmSepEmpClrHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmSepClrLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrTmplMstBO oHrmSepClrTmplMstBO = new HrmSepClrTmplMstBO(); + return oHrmSepClrTmplMstBO.getHrmSepClrLOV(oLovQueryVO); + } + + public LovVO getHrmSepTmplLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrTmplMstBO oHrmSepClrTmplMstBO = new HrmSepClrTmplMstBO(); + return oHrmSepClrTmplMstBO.getHrmSepTmplLOV(oLovQueryVO); + } + + public LovVO getHrmSepEligLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oHrmSepClrEmpBO = new HrmSepClrEmpBO(); + return oHrmSepClrEmpBO.getHrmSepEligLOV(oLovQueryVO); + } + + public void updateSeparationEligRule(String sSql, String sId, String sUserId, String sUserSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSepClrEmpBO oBO = new HrmSepClrEmpBO(); + oBO.updateSeparationEligRule(sSql, sId, sUserId, sUserSiteId); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmSepClrEmpHdrMetaInfo(HrmSepClrEmpQVO oHrmSepEmpClrQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oBO = new HrmSepClrEmpBO(); + return oBO.getHrmSepClrEmpHdrMetaInfo(oHrmSepEmpClrQVO); + } + + public ArrayList getHrmSepClrEmpHdr(HrmSepClrEmpQVO oHrmSepEmpClrQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oBO = new HrmSepClrEmpBO(); + return oBO.getHrmSepClrEmpHeaderInfo(oHrmSepEmpClrQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmSepClrEmpDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oBO = new HrmSepClrEmpBO(); + return oBO.getHrmSepClrEmpDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmSepClrEmpDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oBO = new HrmSepClrEmpBO(); + return oBO.getHrmSepClrEmpDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmSepClrEmpHdrBean oHrmSepEmpClrHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oBO = new HrmSepClrEmpBO(oUserInfo); + return oBO.saveData((BaseHeaderBean)oHrmSepEmpClrHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmSepClrEmpTmplLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oHrmSepClrEmpBO = new HrmSepClrEmpBO(); + return oHrmSepClrEmpBO.getTmplLOV(oLovQueryVO); + } + + public LovVO getHrmSepClrEmpEmpNoLOVQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oHrmSepClrEmpBO = new HrmSepClrEmpBO(); + return oHrmSepClrEmpBO.getEmpNoLOVQ(oLovQueryVO); + } + + public LovVO getHrmSepClrEmpEmpNoLOVN(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmSepClrEmpBO oHrmSepClrEmpBO = new HrmSepClrEmpBO(); + return oHrmSepClrEmpBO.getEmpNoLOVN(oLovQueryVO); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocal.java new file mode 100644 index 0000000..b03ed77 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocal.java @@ -0,0 +1,114 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.vo.HrmSepApplnQVO; +import wenrgise.hrms.vo.HrmSepCatMstQVO; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; +import wenrgise.hrms.vo.HrmSepOrderQVO; + +public interface HrmSeparationFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmSepApplnHdrMetaInfo(HrmSepApplnQVO paramHrmSepApplnQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepApplnHeaderInfo(HrmSepApplnQVO paramHrmSepApplnQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepApplnDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepApplnDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepCategoryLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepEmpNoQLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepEmpNoNLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderApplnNoQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepApprNameLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepOrderHdrMetaInfo(HrmSepOrderQVO paramHrmSepOrderQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepOrderHdr(HrmSepOrderQVO paramHrmSepOrderQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepOrderDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepOrderDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepCatHeaderMetaInfo(HrmSepCatMstQVO paramHrmSepCatMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepCatHeader(HrmSepCatMstQVO paramHrmSepCatMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepCatMstHdrBean paramHrmSepCatMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSeparationCodeLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepEligLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrLstDtlMetaInfo() throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrLstDetailInfo(long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveClrListData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrTmplMstHdrMetaInfo(HrmSepClrTmplMstQVO paramHrmSepClrTmplMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrTmplMstHdr(HrmSepClrTmplMstQVO paramHrmSepClrTmplMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrTmplMstDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrTmplMstDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepClrTmplMstHdrBean paramHrmSepClrTmplMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepTmplLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrEmpHdrMetaInfo(HrmSepClrEmpQVO paramHrmSepClrEmpQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrEmpHdr(HrmSepClrEmpQVO paramHrmSepClrEmpQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrEmpDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrEmpDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepClrEmpHdrBean paramHrmSepClrEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpTmplLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpEmpNoLOVN(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpEmpNoLOVQ(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocalHome.java new file mode 100644 index 0000000..b7bd82d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmSeparationFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmSeparationFacadeLocalHome extends EJBLocalHome { + HrmSeparationFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacade.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacade.java new file mode 100644 index 0000000..bfa6dcb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacade.java @@ -0,0 +1,372 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransApplQVO; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; +import wenrgise.hrms.vo.HrmAppTempQueryVO; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public interface HrmThirdFacade extends EJBObject { + WflWorkListInfoBean getWorkListInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTransSingleEmpRecordMetaInfo(HrmATDTransSingleEmpQVO paramHrmATDTransSingleEmpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTransSingleEmpHeaderInfo(HrmATDTransSingleEmpQVO paramHrmATDTransSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransAplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmToSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmToWorkGroupLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTransAppHeaderMetaInfo(HrmATDTransApplQVO paramHrmATDTransApplQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTransAppHeader(HrmATDTransApplQVO paramHrmATDTransApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTransAppl(HrmTransferApplicationHdrBean paramHrmTransferApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmChargeRepHeaderMetaInfo(HrmATDTransChrgRptQVO paramHrmATDTransChrgRptQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmChargeRepHeader(HrmATDTransChrgRptQVO paramHrmATDTransChrgRptQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTransCnclHeaderMetaInfo(HrmATDTransCnclApplQVO paramHrmATDTransCnclApplQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTransCnclHeader(HrmATDTransCnclApplQVO paramHrmATDTransCnclApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTransCnclAppl(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String cancelTransfer(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDeputAppHdrMetaInfo(HrmATDDptnApplQVO paramHrmATDDptnApplQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDeputAppHeaderInfo(HrmATDDptnApplQVO paramHrmATDDptnApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTrnsCnclOrderHdrMetaInfo(HrmATDTransCnclOrderSingleEmpQVO paramHrmATDTransCnclOrderSingleEmpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTrnsCnclOrderHeaderInfo(HrmATDTransCnclOrderSingleEmpQVO paramHrmATDTransCnclOrderSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDeputOrderSngEmpHdrMetaInfo(HrmATDDptnOrderSingleEmpQVO paramHrmATDDptnOrderSingleEmpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDeputOrderSngEmpHeaderInfo(HrmATDDptnOrderSingleEmpQVO paramHrmATDDptnOrderSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDeputChargeRepHdrMetaInfo(HrmATDDptnChrgRptQVO paramHrmATDDptnChrgRptQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDeputChargeRepHeaderInfo(HrmATDDptnChrgRptQVO paramHrmATDDptnChrgRptQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnOfcNoteNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnDesignationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnWorkgroupLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnEmpNoInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite1LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite2LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite3LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgOrderNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclApplNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclOfNoteNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpNoQCnclApplLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpNoICnclApplLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputAdvtNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputPostNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransCnclOrderAppNoLOVQdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransCnclOrderAppNoLOVIdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransCnclOrderLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputationOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplcnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplcnNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransReptEmpNoLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgOrderNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslHdrMetaInfo(HrmAprslQVO paramHrmAprslQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslHdrInfo(HrmAprslQVO paramHrmAprslQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslKPADetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslKPADetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslGoalsDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslGoalsDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslTrngReqDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAprslTrngReqDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAprslEmpPerDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslStartOrderLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpAprslStOrderLOVQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpAprslStOrderLOVI(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating0LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating1LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating2LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating3LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating4LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating5LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String calEmpFinRating(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTemplateHdrMetaInfo(HrmAppTempQueryVO paramHrmAppTempQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTemplateHeaderInfo(HrmAppTempQueryVO paramHrmAppTempQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTempSecDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTempSecDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslTmplSec(HrmAppTempHdrBean paramHrmAppTempHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslTmplNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslSecCodeNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslKPALOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslParentCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveHrmAprslTmplMst(HrmAppTempHdrBean paramHrmAppTempHdrBean, String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTempSecKPADtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTempSecKPADetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppRaisalKpaHeaderMetaInfo(HrmAppraisalKPAQVO paramHrmAppraisalKPAQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppRaisalKpaHeader(HrmAppraisalKPAQVO paramHrmAppraisalKPAQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAppRaisalKpa(HrmAppraisalKPAHdrBean paramHrmAppraisalKPAHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppRaisalKpaDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppRaisalKpaDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryAppraisalWorkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getHrmAppRaisalKpaExactWeightage(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStOrderMetaInfo(HrmAprslStartOrderQVO paramHrmAprslStartOrderQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStOrderInfo(HrmAprslStartOrderQVO paramHrmAprslStartOrderQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslStOrder(HrmAprslStartOrderHdrBean paramHrmAprslStartOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslStOrderNoLOVQrydata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStRuleHdrMetaInfo(HrmAprslStartRuleQVO paramHrmAprslStartRuleQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStRuleHeader(HrmAprslStartRuleQVO paramHrmAprslStartRuleQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStRuleDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStRuleDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslStRule(HrmAprslStartRuleHdrBean paramHrmAprslStartRuleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsMstData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsDtlData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsMstDataQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsDtlDataQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryEmployeeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmployeeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryStOrdLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryWrkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQuerySiteCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWrkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChgRepEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpHdrMetaInfo(HrmAprslSpcTmplQVO paramHrmAprslSpcTmplQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpHeaderInfo(HrmAprslSpcTmplQVO paramHrmAprslSpcTmplQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpKPADtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpKPADetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpGoalsDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpGoalsDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpEligDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpEligDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQuerySpcTemplateData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getTemplateData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryStartOrdLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryTemplateData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getTempSectionData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSpcEmployeeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslTempNameQLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getAprslTmplRatingCodeQLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslEmpNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslEmpDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeBean.java new file mode 100644 index 0000000..1c8db34 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeBean.java @@ -0,0 +1,1177 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransApplQVO; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; +import wenrgise.hrms.vo.HrmAppTempQueryVO; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; +import wenrgise.workflow.service.WorkFlowService; +import wenrgise.workflow.service.WorkFlowServiceFactory; + +public class HrmThirdFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public WflWorkListInfoBean getWorkListInfo(String sWorkListId) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowService workFlowService = WorkFlowServiceFactory.getService(); + return workFlowService.getWorkListInfo(sWorkListId); + } + + public RecordMetaInfo getHrmTransSingleEmpRecordMetaInfo(HrmATDTransSingleEmpQVO oHrmATDTransSingleEmpQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmTransSingleEmpRecordMetaInfo(oHrmATDTransSingleEmpQVO, oUserInfo); + } + + public ArrayList getHrmTransSingleEmpHeaderInfo(HrmATDTransSingleEmpQVO oHrmATDTransSingleEmpQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmTransSingleEmpHeaderInfo(oHrmATDTransSingleEmpQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String approveTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.approveTranOrderSingleEmp(oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.rejectTranOrderSingleEmp(oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.submitTranOrderSingleEmp(oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public LovVO getHrmTransOrderNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmTransOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTransAplnNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmTransAplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmToSiteCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmToSiteCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmToWorkGroupLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmToWorkGroupLOVdata(oLovQueryVO); + } + + public String saveData(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmATDTransOrderForSingleEmpBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmEmpTransAppHeaderMetaInfo(HrmATDTransApplQVO oHrmATDTransApplQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrEmpTransAppHeaderMetaInfo(oHrmATDTransApplQVO, oUserInfo); + } + + public ArrayList getHrmEmpTransAppHeader(HrmATDTransApplQVO oHrmATDTransApplQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrEmpTransAppHeader(oHrmATDTransApplQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveHrmTransAppl(HrmTransferApplicationHdrBean oHrmTransferApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmTransferApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmChargeRepHeaderMetaInfo(HrmATDTransChrgRptQVO oHrmATDTransChrgRptQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrChargeRepHeaderMetaInfo(oHrmATDTransChrgRptQVO, oUserInfo); + } + + public ArrayList getHrmChargeRepHeader(HrmATDTransChrgRptQVO oHrmATDTransChrgRptQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrChargeRepHeader(oHrmATDTransChrgRptQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveData(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveTranChrgRpt(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.approveTranChrgRpt(oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectTranChrgRpt(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.rejectTranChrgRpt(oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitTranChrgRpt(HrmChargeReportHdrBean oHrmChargeReportHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.submitTranChrgRpt(oHrmChargeReportHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmEmpTransCnclHeaderMetaInfo(HrmATDTransCnclApplQVO oHrmATDTransCnclApplQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrEmpTransCnclHeaderMetaInfo(oHrmATDTransCnclApplQVO, oUserInfo); + } + + public ArrayList getHrmEmpTransCnclHeader(HrmATDTransCnclApplQVO oHrmATDTransCnclApplQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrEmpTransCnclHeader(oHrmATDTransCnclApplQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveHrmTransCnclAppl(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String submitTransferCnclAppln(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.submitTransferCnclAppln(oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String approveTransferCnclAppln(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.approveTransferCnclAppln(oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectTransferCnclAppln(HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.rejectTransferCnclAppln(oHrmEmpTransCnclApplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String cancelTransfer(HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.cancelTransfer(oHrmATDTransOrderForSingleEmpBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmEmpDeputAppHdrMetaInfo(HrmATDDptnApplQVO oHrmATDDptnApplQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmEmpDeputAppHdrMetaInfo(oHrmATDDptnApplQVO, oUserInfo); + } + + public ArrayList getHrmEmpDeputAppHeaderInfo(HrmATDDptnApplQVO oHrmATDDptnApplQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmEmpDeputAppHeaderInfo(oHrmATDDptnApplQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveData(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String submitDeputAppln(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.submitDeputAppln(oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String approveDeputAppln(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.approveDeputAppln(oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectDeputAppln(HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.rejectDeputAppln(oHrmDeputationApplicationHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmEmpTrnsCnclOrderHdrMetaInfo(HrmATDTransCnclOrderSingleEmpQVO oHrmATDTransCnclOrderSingleEmpQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmEmptHrmTrnsCnclOrdHdrMetaInfo(oHrmATDTransCnclOrderSingleEmpQVO, oUserInfo); + } + + public ArrayList getHrmEmpTrnsCnclOrderHeaderInfo(HrmATDTransCnclOrderSingleEmpQVO oHrmATDTransCnclOrderSingleEmpQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmEmptHrmTrnsCnclOrdHeaderInfo(oHrmATDTransCnclOrderSingleEmpQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveData(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String submitTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.submitTranCnclOrder(oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String approveTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.approveTranCnclOrder(oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.rejectTranCnclOrder(oHrmTransCnclOrderSingEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmDeputOrderSngEmpHdrMetaInfo(HrmATDDptnOrderSingleEmpQVO oHrmATDDptnOrderSingleEmpQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmDeputOrderSngEmpHdrMetaInfo(oHrmATDDptnOrderSingleEmpQVO, oUserInfo); + } + + public ArrayList getHrmDeputOrderSngEmpHeaderInfo(HrmATDDptnOrderSingleEmpQVO oHrmATDDptnOrderSingleEmpQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmDeputOrderSngEmpHeaderInfo(oHrmATDDptnOrderSingleEmpQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveData(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String submitDeputOrder(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHrmAllocationTransferDeputationFacadeLocalHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHrmAllocationTransferDeputationFacadeLocalHome.create(); + return oAllocationTransferDeputationFacadeLocal.submitDeputOrder(oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String approveDeputOrder(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHrmAllocationTransferDeputationFacadeLocalHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHrmAllocationTransferDeputationFacadeLocalHome.create(); + return oAllocationTransferDeputationFacadeLocal.approveDeputOrder(oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectDeputOrder(HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHrmAllocationTransferDeputationFacadeLocalHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHrmAllocationTransferDeputationFacadeLocalHome.create(); + return oAllocationTransferDeputationFacadeLocal.rejectDeputOrder(oHrmATDDeputOrderSngEmpHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public LovVO getHrmTransReptEmpNoLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTransReptEmpNoLOV(oLovQueryVO); + } + + public RecordMetaInfo getHrmDeputChargeRepHdrMetaInfo(HrmATDDptnChrgRptQVO oHrmATDDptnChrgRptQVO, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmDeputChargeRepHdrMetaInfo(oHrmATDDptnChrgRptQVO, oUserInfo); + } + + public ArrayList getHrmDeputChargeRepHeaderInfo(HrmATDDptnChrgRptQVO oHrmATDDptnChrgRptQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.getHrmDeputChargeRepHeaderInfo(oHrmATDDptnChrgRptQVO, lStartPosition, lLastPosition, oUserInfo); + } + + public String saveData(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.saveData(oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveDeputChrgRpt(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.approveDeputChrgRpt(oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectDeputChrgRpt(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.rejectDeputChrgRpt(oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitDeputChrgRpt(HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + return oAllocationTransferDeputationFacadeLocal.submitDeputChrgRpt(oHrmATDDeputChrgRptHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public LovVO getHrmTrnApplnNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnOfcNoteNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnOfcNoteNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnDesignationLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnDesignationLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnWorkgroupLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnWorkgroupLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnEmpNoInsLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnEmpNoInsLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnSite1LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnSite1LOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnSite2LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnSite2LOVdata(oLovQueryVO); + } + + public LovVO getHrmTrnSite3LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnSite3LOVdata(oLovQueryVO); + } + + public LovVO getHrmChrgOrderNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmChrgOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmChrgOrderNoQLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmChrgOrderNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmChrgCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmChrgCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmCnclApplNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmEmpCnclApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmCnclOfNoteNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmEmpCnclOfNoteNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpNoQCnclApplLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmEmpNoQCnclApplnLOVdata(oLovQueryVO); + } + + public LovVO getHrmEmpNoICnclApplLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmEmpNoICnclApplnLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputApplnNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputApplnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputEmpNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputEmpNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputEmpNoQLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputEmpNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputAdvtNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputAdvtNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputPostNameLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputPostNameLOVdata(oLovQueryVO); + } + + public LovVO getHrmTransCnclOrderAppNoLOVQdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnsCnclOrdAppNoLOVQdata(oLovQueryVO); + } + + public LovVO getHrmTransCnclOrderAppNoLOVIdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnsCnclOrdAppNoLOVIdata(oLovQueryVO); + } + + public LovVO getHrmTransCnclOrderLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmTrnsCnclOrdNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputationOrderNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputationOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputApplcnNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputApplcnNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDeputApplcnNoQLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDeputApplcnNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmDepChrgOrderNoLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDepChrgOrderNoLOVdata(oLovQueryVO); + } + + public LovVO getHrmDepChrgOrderNoQLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDepChrgOrderNoQLOVdata(oLovQueryVO); + } + + public LovVO getHrmDepChrgCodeLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oHrmAllocationTransferDeputationFacadeLocal = oHome.create(); + return oHrmAllocationTransferDeputationFacadeLocal.getHrmDepChrgCodeLOVdata(oLovQueryVO); + } + + public RecordMetaInfo getHrmEmpAprslHdrMetaInfo(HrmAprslQVO oHrmAprslQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmEmpAprslHdrMetaInfo(oHrmAprslQVO); + } + + public ArrayList getHrmEmpAprslHdrInfo(HrmAprslQVO oHrmAprslQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmEmpAprslHdrInfo(oHrmAprslQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpAprslKPADetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmEmpAprslKPADetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpAprslKPADetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmEmpAprslKPADetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpAprslGoalsDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmEmpAprslGoalsDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpAprslGoalsDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmEmpAprslGoalsDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslTrngReqDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslTrngReqDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrAprslTrngReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrAprslTrngReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public ArrayList getHrAprslEmpPerDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrAprslEmpPerDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmEmpAprsl(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.saveData(oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmAprslStartOrderLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStartOrderLOV(oLovQueryVO); + } + + public LovVO getEmpAprslStOrderLOVQ(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getEmpAprslStOrderLOVQ(oLovQueryVO); + } + + public LovVO getEmpAprslStOrderLOVI(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getEmpAprslStOrderLOVI(oLovQueryVO); + } + + public LovVO getHrmAprslRating0LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslRating0LOV(oLovQueryVO); + } + + public LovVO getHrmAprslRating1LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslRating1LOV(oLovQueryVO); + } + + public LovVO getHrmAprslRating2LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslRating2LOV(oLovQueryVO); + } + + public LovVO getHrmAprslRating3LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslRating3LOV(oLovQueryVO); + } + + public LovVO getHrmAprslRating4LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslRating4LOV(oLovQueryVO); + } + + public LovVO getHrmAprslRating5LOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslRating5LOV(oLovQueryVO); + } + + public String calEmpFinRating(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.calEmpFinRating(oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public String approveEmpAprsl(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.approveEmpAprsl(oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectEmpAprsl(HrmAprslHdrBean oHrmAprslHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.rejectEmpAprsl(oHrmAprslHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmAppTemplateHdrMetaInfo(HrmAppTempQueryVO oHrmAppTempQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppTemplateHeaderMetaInfo(oHrmAppTempQueryVO); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHrmAppTemplateHeaderInfo(HrmAppTempQueryVO oHrmAppTempQueryVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppTemplateHeader(oHrmAppTempQueryVO, lStartPosition, lLastPosition); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHrmAppTempSecDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppTempSecDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAppTempSecDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppTempSecDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmAprslTmplSec(HrmAppTempHdrBean oHrmAppTempHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.saveData(oHrmAppTempHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmAprslTmplNameLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslTmplNameLOVInfo(oLovQueryVO); + } + + public LovVO getHrmAprslSecCodeNameLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSecCodeLOVInfo(oLovQueryVO); + } + + public LovVO getHrmAprslKPALOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslKPALOVInfo(oLovQueryVO); + } + + public LovVO getHrmAprslParentCodeLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslParentCodeLOVInfo(oLovQueryVO); + } + + public RecordMetaInfo getHrmAppTempSecKPADtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppTempSecKPADtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAppTempSecKPADetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppTempSecKPADtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String approveHrmAprslTmplMst(HrmAppTempHdrBean oHrmAppTempHdrBean, String sScreenName) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.approveHrmAprslTmplMst(oHrmAppTempHdrBean, sScreenName); + } + + public LovVO getHrmAprslTempNameQLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslTempNameQLOV(oLovQueryVO); + } + + public LovVO getAprslTmplRatingCodeQLOV(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getAprslTmplRatingCodeQLOV(oLovQueryVO); + } + + public LovVO getHrmAprslEmpNoLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslEmpNoLOVData(oLovQueryVO); + } + + public RecordMetaInfo getHrmAprslStOrderMetaInfo(HrmAprslStartOrderQVO oHrmAprslStartOrderQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStOrderMetaInfo(oHrmAprslStartOrderQVO); + } + + public ArrayList getHrmAprslStOrderInfo(HrmAprslStartOrderQVO oHrmAprslStartOrderQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStOrderInfo(oHrmAprslStartOrderQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAprslStOrder(HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.saveData(oHrmAprslStartOrderHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getHrmAprslStOrderNoLOVQrydata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStOrderNoLOVQrydata(oLovQueryVO); + } + + public RecordMetaInfo getHrmAprslStRuleHdrMetaInfo(HrmAprslStartRuleQVO oHrmAprslStartRuleQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStRuleHdrMetaInfo(oHrmAprslStartRuleQVO); + } + + public ArrayList getHrmAprslStRuleHeader(HrmAprslStartRuleQVO oHrmAprslStartRuleQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStRuleHeader(oHrmAprslStartRuleQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslStRuleDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStRuleDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslStRuleDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslStRuleDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmAprslStRule(HrmAprslStartRuleHdrBean oHrmAprslStartRuleHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.saveData(oHrmAprslStartRuleHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public LovVO getClsMstData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getClsMstData(oLovQueryVO); + return oLovVO; + } + + public LovVO getClsDtlData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getClsDtlData(oLovQueryVO); + return oLovVO; + } + + public LovVO getClsMstDataQ(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getClsMstDataQ(oLovQueryVO); + return oLovVO; + } + + public LovVO getClsDtlDataQ(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getClsDtlDataQ(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryEmployeeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getQueryEmployeeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getEmployeeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getEmployeeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryStOrdLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getQueryStOrdLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryWrkGrpLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getQueryWrkGrpLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQuerySiteCodeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getQuerySiteCodeLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getWrkGrpLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getWrkGrpLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmChgRepEmpLOVdata(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmAllocationTransferDeputationFacadeLocalHome oHome = (HrmAllocationTransferDeputationFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmAllocationTransferDeputationFacadeLocal"); + HrmAllocationTransferDeputationFacadeLocal oAllocationTransferDeputationFacadeLocal = oHome.create(); + LovVO oLovVO = oAllocationTransferDeputationFacadeLocal.getHrmChgRepEmpLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmAprslSpcTmpHdrMetaInfo(HrmAprslSpcTmplQVO oHrmAprslSpcTmplQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpHdrMetaInfo(oHrmAprslSpcTmplQVO); + } + + public ArrayList getHrmAprslSpcTmpHeaderInfo(HrmAprslSpcTmplQVO oHrmAprslSpcTmplQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpHeaderInfo(oHrmAprslSpcTmplQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslSpcTmpKPADtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpKPADtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslSpcTmpKPADetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpKPADetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslSpcTmpGoalsDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpGoalsDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslSpcTmpGoalsDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpGoalsDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmAprslSpcTmpEligDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpEligDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAprslSpcTmpEligDetailInfo(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslSpcTmpEligDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.saveData(oHrmAprslSpcTmplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public String approveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.approveHrmAprslSpcTmp(oHrmAprslSpcTmplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String rejectHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.rejectHrmAprslSpcTmp(oHrmAprslSpcTmplHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public LovVO getQuerySpcTemplateData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getQuerySpcTemplateData(oLovQueryVO); + return oLovVO; + } + + public LovVO getTemplateData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getTemplateData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryStartOrdLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getQueryStartOrdLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getQueryTemplateData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getQueryTemplateData(oLovQueryVO); + return oLovVO; + } + + public LovVO getTempSectionData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getTempSectionData(oLovQueryVO); + return oLovVO; + } + + public LovVO getSpcEmployeeLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + LovVO oLovVO = oHrmPerformanceAppraisalFacadeLocal.getSpcEmployeeLOVData(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmAppRaisalKpaHeaderMetaInfo(HrmAppraisalKPAQVO oHrmAppraisalKPAQVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppRaisalKpaHeaderMetaInfo(oHrmAppraisalKPAQVO); + } + + public ArrayList getHrmAppRaisalKpaHeader(HrmAppraisalKPAQVO oHrmAppraisalKPAQVO, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppRaisalKpaHeader(oHrmAppraisalKPAQVO, lStartPosition, lLastPosition); + } + + public String saveHrmAppRaisalKpa(HrmAppraisalKPAHdrBean oHrmAppraisalKPAHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.saveHrmAppRaisalKpa(oHrmAppraisalKPAHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, oUserInfo); + } + + public RecordMetaInfo getHrmAppRaisalKpaDetailMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppRaisalKpaDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmAppRaisalKpaDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppRaisalKpaDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getQueryAppraisalWorkGrpLOVData(LovQueryVO oLovQueryVO) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppRaisalKpaWorkGrpLOVQrydata(oLovQueryVO); + } + + public String getHrmAppRaisalKpaExactWeightage(String sHeaderPrimKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAppRaisalKpaExactWeightage(sHeaderPrimKey); + } + + private HrmPerformanceAppraisalFacadeLocalHome getHrmPerformanceAppraisalFacadeLocalHome() throws NamingException { + InitialContext context = new InitialContext(); + return (HrmPerformanceAppraisalFacadeLocalHome)context.lookup("ejb/HrmPerformanceAppraisalFacadeLocal"); + } + + public RecordMetaInfo getHrmAprslEmpDtlMetaInfo(String lPrimaryKey) throws CreateException, EnrgiseApplicationException, EnrgiseSystemException { + HrmPerformanceAppraisalFacadeLocalHome oHome = (HrmPerformanceAppraisalFacadeLocalHome)ServiceLocator.getLocator().getLocalHome("ejb/HrmPerformanceAppraisalFacadeLocal"); + HrmPerformanceAppraisalFacadeLocal oHrmPerformanceAppraisalFacadeLocal = oHome.create(); + return oHrmPerformanceAppraisalFacadeLocal.getHrmAprslEmpDtlMetaInfo(lPrimaryKey); + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java new file mode 100644 index 0000000..69bc813 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java @@ -0,0 +1,9 @@ +package wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface HrmThirdFacadeHome extends EJBHome { + HrmThirdFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeBean.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeBean.java new file mode 100644 index 0000000..c6b5c6c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeBean.java @@ -0,0 +1,630 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.ejb.business.HrmTrngCalBO; +import wenrgise.hrms.ejb.business.HrmTrngCalCloseBO; +import wenrgise.hrms.ejb.business.HrmTrngCrsBudBO; +import wenrgise.hrms.ejb.business.HrmTrngCrsMstBO; +import wenrgise.hrms.ejb.business.HrmTrngEmpAttBO; +import wenrgise.hrms.ejb.business.HrmTrngEmpFdbkBO; +import wenrgise.hrms.ejb.business.HrmTrngEmpHistBO; +import wenrgise.hrms.ejb.business.HrmTrngEmpReqBO; +import wenrgise.hrms.ejb.business.HrmTrngFacBO; +import wenrgise.hrms.ejb.business.HrmTrngFacFdbkBO; +import wenrgise.hrms.ejb.business.HrmTrngFacTrngBO; +import wenrgise.hrms.ejb.business.HrmTrngInsCrsBO; +import wenrgise.hrms.vo.HrmTrngCalQVO; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; +import wenrgise.hrms.vo.HrmTrngFacFdbkQVO; +import wenrgise.hrms.vo.HrmTrngFacQVO; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public class HrmTrainingFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getHrmTrngCrsHeaderMetaInfo(HrmTrngCrsMstQVO oHrmTrngCrsMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsMstBO oHrmTrngCrsMstBO = new HrmTrngCrsMstBO(); + return oHrmTrngCrsMstBO.getHrmTrngCrsHdrMetaInfo(oHrmTrngCrsMstQVO); + } + + public ArrayList getHrmTrngCrsHeader(HrmTrngCrsMstQVO oHrmTrngCrsMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsMstBO oHrmTrngCrsMstBO = new HrmTrngCrsMstBO(); + return oHrmTrngCrsMstBO.getHrmTrngCrsHeaderInfo(oHrmTrngCrsMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngCrsDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsMstBO oHrmTrngCrsMstBO = new HrmTrngCrsMstBO(); + return oHrmTrngCrsMstBO.getHrmTrngCrsDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngCrsDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsMstBO oHrmTrngCrsMstBO = new HrmTrngCrsMstBO(); + return oHrmTrngCrsMstBO.getHrmTrngCrsDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmTrngCrsMstHdrBean oHrmTrngCrsMstHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngCrsMstBO oHrmTrngCrsMstBO = new HrmTrngCrsMstBO(); + return oHrmTrngCrsMstBO.saveData((BaseHeaderBean)oHrmTrngCrsMstHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmTrngInsCrsHeaderMetaInfo(HrmTrngInsCrsQVO oHrmTrngInsCrsQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oHrmTrngInsCrsBO = new HrmTrngInsCrsBO(); + return oHrmTrngInsCrsBO.getHrmTrngInsCrsHdrMetaInfo(oHrmTrngInsCrsQVO); + } + + public ArrayList getHrmTrngInsCrsHeader(HrmTrngInsCrsQVO oHrmTrngInsCrsQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oHrmTrngInsCrsBO = new HrmTrngInsCrsBO(); + return oHrmTrngInsCrsBO.getHrmTrngInsCrsHeaderInfo(oHrmTrngInsCrsQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngInsCrsDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oHrmTrngInsCrsBO = new HrmTrngInsCrsBO(); + return oHrmTrngInsCrsBO.getHrmTrngInsCrsDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngInsCrsDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oHrmTrngInsCrsBO = new HrmTrngInsCrsBO(); + return oHrmTrngInsCrsBO.getHrmTrngInsCrsDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmTrngInsCrsHdrBean oHrmTrngInsCrsHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngInsCrsBO oHrmTrngInsCrsBO = new HrmTrngInsCrsBO(); + return oHrmTrngInsCrsBO.saveData((BaseHeaderBean)oHrmTrngInsCrsHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmTrngCrsBudHeaderMetaInfo(HrmTrngCrsBudQVO oHrmTrngCrsBudQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngCrsBudHdrMetaInfo(oHrmTrngCrsBudQVO); + } + + public ArrayList getHrmTrngCrsBudHeader(HrmTrngCrsBudQVO oHrmTrngCrsBudQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngCrsBudHeaderInfo(oHrmTrngCrsBudQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngCrsBudDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngCrsBudDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngCrsBudDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngCrsBudDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(oUserInfo); + return oHrmTrngCrsBudBO.saveData((BaseHeaderBean)oHrmTrngCrsBudHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmTrngCalHeaderMetaInfo(HrmTrngCalQVO oHrmTrngCalQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmTrngCalHdrMetaInfo(oHrmTrngCalQVO); + } + + public ArrayList getHrmTrngCalHeader(HrmTrngCalQVO oHrmTrngCalQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmTrngCalHeaderInfo(oHrmTrngCalQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngCalDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmTrngCalDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngCalDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmTrngCalDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public boolean chkHrmTrnCalByRatingId(String sRatingId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.chkHrmTrnCalHdrByRatingIdCount(sRatingId); + } + + public LovVO getHrmTrngCalInstLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmTrngCalInstLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngCalCrsCdLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmTrngCalCrsCdLOVdata(oLovQueryVO); + } + + public String saveData(HrmTrngCalHdrBean oHrmTrngCalHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.saveData((BaseHeaderBean)oHrmTrngCalHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmFacHeaderMetaInfo(HrmTrngFacQVO oHrmTrngFacQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacBO oHrmTrngFacBO = new HrmTrngFacBO(); + return oHrmTrngFacBO.getHrmFacHdrMetaInfo(oHrmTrngFacQVO); + } + + public ArrayList getHrmFacHeader(HrmTrngFacQVO oHrmTrngFacQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacBO oHrmTrngFacBO = new HrmTrngFacBO(); + return oHrmTrngFacBO.getHrmFacHeaderInfo(oHrmTrngFacQVO, lStartPosition, lLastPosition); + } + + public String saveData(HrmTrngFacBean oHrmTrngFacBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngFacBO oHrmTrngFacBO = new HrmTrngFacBO(oUserInfo); + return oHrmTrngFacBO.saveData((BaseHeaderBean)oHrmTrngFacBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmFacTrngHeaderMetaInfo(HrmTrngFacTrngQVO oHrmTrngFacTrngQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacTrngBO oHrmTrngFacTrngBO = new HrmTrngFacTrngBO(); + return oHrmTrngFacTrngBO.getHrmFacTrngHdrMetaInfo(oHrmTrngFacTrngQVO); + } + + public ArrayList getHrmFacTrngHeader(HrmTrngFacTrngQVO oHrmTrngFacTrngQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacTrngBO oHrmTrngFacTrngBO = new HrmTrngFacTrngBO(); + return oHrmTrngFacTrngBO.getHrmFacTrngHeaderInfo(oHrmTrngFacTrngQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmFacTrngDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacTrngBO oHrmTrngFacTrngBO = new HrmTrngFacTrngBO(); + return oHrmTrngFacTrngBO.getHrmFacTrngDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmFacTrngDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacTrngBO oHrmTrngFacTrngBO = new HrmTrngFacTrngBO(); + return oHrmTrngFacTrngBO.getHrmFacTrngDetailInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveData(HrmTrngFacTrngHdrBean oHrmTrngFacTrngHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngFacTrngBO oHrmTrngFacTrngBO = new HrmTrngFacTrngBO(); + return oHrmTrngFacTrngBO.saveData((BaseHeaderBean)oHrmTrngFacTrngHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmEmpTrngReqHeaderMetaInfo(HrmTrngEmpReqQVO oHrmTrngEmpReqQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + return oHrmTrngEmpReqBO.getHrmEmpTrngReqHdrMetaInfo(oHrmTrngEmpReqQVO); + } + + public ArrayList getHrmEmpTrngReqHeader(HrmTrngEmpReqQVO oHrmTrngEmpReqQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + return oHrmTrngEmpReqBO.getHrmEmpTrngReqHeaderInfo(oHrmTrngEmpReqQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmEmpReqDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + return oHrmTrngEmpReqBO.getHrmEmpReqDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmEmpReqDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + return oHrmTrngEmpReqBO.getHrmEmpReqDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String approveEmpTrngReq(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(oUserInfo); + return oHrmTrngEmpReqBO.approveEmpTrngReq((BaseHeaderBean)oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String rejectEmpTrngReq(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(oUserInfo); + return oHrmTrngEmpReqBO.rejectEmpTrngReq((BaseHeaderBean)oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public String submitEmpTrngReq(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(oUserInfo); + return oHrmTrngEmpReqBO.submitEmpTrngReq((BaseHeaderBean)oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmTrgReqCalLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + return oHrmTrngEmpReqBO.getHrmTrgReqCalLOVData(oLovQueryVO); + } + + public LovVO getHrmTrgReqRecoLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + return oHrmTrngEmpReqBO.getHrmTrgReqRecoLOVData(oLovQueryVO); + } + + public LovVO getHrmTrgReqEmpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + return oHrmTrngEmpReqBO.getHrmTrgReqEmpLOVData(oLovQueryVO); + } + + public String saveData(HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(oUserInfo); + return oHrmTrngEmpReqBO.saveData((BaseHeaderBean)oHrmTrngEmpReqHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public RecordMetaInfo getHrmTrngEmpHistHeaderMetaInfo(HrmTrngEmpHistQVO oHrmTrngEmpHistQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmTrngEmpHistHdrMetaInfo(oHrmTrngEmpHistQVO); + } + + public ArrayList getHrmTrngEmpHistHeader(HrmTrngEmpHistQVO oHrmTrngEmpHistQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmTrngEmpHistHeaderInfo(oHrmTrngEmpHistQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpHistDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmTrngEmpHistDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngEmpHistDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmTrngEmpHistDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpAttHeaderMetaInfo(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpAttBO oHrmTrngEmpAttBusinessObject = new HrmTrngEmpAttBO(); + return oHrmTrngEmpAttBusinessObject.getHrmTrngEmpAttHdrMetaInfo(oHrmTrngEmpAttQueryVO); + } + + public ArrayList getHrmTrngEmpAttHeader(HrmTrngEmpAttQVO oHrmTrngEmpAttQueryVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpAttBO oHrmTrngEmpAttBusinessObject = new HrmTrngEmpAttBO(); + return oHrmTrngEmpAttBusinessObject.getHrmTrngEmpAttHeaderInfo(oHrmTrngEmpAttQueryVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpAttDetailMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpAttBO oHrmTrngEmpAttBusinessObject = new HrmTrngEmpAttBO(); + return oHrmTrngEmpAttBusinessObject.getHrmTrngEmpAttDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngEmpAttDetail(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpAttBO oHrmTrngEmpAttBusinessObject = new HrmTrngEmpAttBO(); + return oHrmTrngEmpAttBusinessObject.getHrmTRngEmpAttDetail(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveHrmTrngEmpAtt(HrmTrngEmpAttHdrBean oHrmTrngEmpAttHdrBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpAttBO oHrmTrngEmpAttBusinessObject = new HrmTrngEmpAttBO(); + return oHrmTrngEmpAttBusinessObject.saveData((BaseHeaderBean)oHrmTrngEmpAttHdrBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getHrmTrngCalDetailLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new LovVO(); + } + + public LovVO getHrmFacNameLOVInfo(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new LovVO(); + } + + public RecordMetaInfo getHrmTrngFacFdbkDtlHdrMetaInfo(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new RecordMetaInfo(); + } + + public ArrayList getHrmTrngFacFdbkDtlHdr(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new ArrayList(); + } + + public RecordMetaInfo getHrmTrngFacFdBkDtlMetaInfo(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new RecordMetaInfo(); + } + + public ArrayList getHrmTrngFacFdBkDetailInfo(HrmTrngFacFdbkQVO oHrmTrngFacFdbkQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new ArrayList(); + } + + public RecordMetaInfo getHrmTrngFacFdBkNextDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new RecordMetaInfo(); + } + + public ArrayList getHrmTrngFacFdBkNextDtl(String lPrimaryKey, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacFdbkBO oHrmTrngFacFdbkBO = new HrmTrngFacFdbkBO(); + return new ArrayList(); + } + + public LovVO getHrmTrngCourseLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(); + LovVO oLovVO = oHrmTrngEmpFdbkBO.getHrmTrngCourseLOV(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrngFacultyLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(); + LovVO oLovVO = oHrmTrngEmpFdbkBO.getHrmTrngFacultyLOV(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getHrmTrngEmpFdBkDtlMetaInfo(String lPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(); + return oHrmTrngEmpFdbkBO.getTrngEmpFdBkDetailMetaInfo(lPrimaryKey); + } + + public ArrayList getHrmTrngEmpFdBkDetailInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(); + return oHrmTrngEmpFdbkBO.getTrngEmpFdBkDetail(lPrimaryKey, lDetailFirstPosition, lDetailLastPosition); + } + + public RecordMetaInfo getHrmTrngEmpFbkHeaderMetaInfo(HrmTrngEmpFbkQVO oHrmTrngEmpFdbkQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(); + return oHrmTrngEmpFdbkBO.getHrmTrngEmpFbkHdrMetaInfo(oHrmTrngEmpFdbkQVO); + } + + public ArrayList getHrmTrngEmpFbkHeader(HrmTrngEmpFbkQVO oHrmTrngEmpFdbkQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(); + return oHrmTrngEmpFdbkBO.getHrmTrngEmpFbkHeader(oHrmTrngEmpFdbkQVO, lStartPosition, lLastPosition); + } + + public String saveData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + if (sScreenName.equalsIgnoreCase("HrmTrngEmpFeedBack")) { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(oUserInfo); + return oHrmTrngEmpFdbkBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + return new String(""); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } + + public LovVO getHrmTrgMstBranchCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsMstBO oTrngCourseMst = new HrmTrngCrsMstBO(); + LovVO oLovVO = oTrngCourseMst.getHrmTrgMstBranchCodeLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrgInstCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oTrngInstCode = new HrmTrngInsCrsBO(); + LovVO oLovVO = oTrngInstCode.getHrmTrgInstCodeLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrgCourseLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oTrngInstCode = new HrmTrngInsCrsBO(); + LovVO oLovVO = oTrngInstCode.getHrmTrgCourseLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrgReqCourseLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + LovVO oLovVO = oHrmTrngEmpReqBO.getHrmTrgReqCourseLOVData(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrgCountryCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oTrngCountryCode = new HrmTrngInsCrsBO(); + LovVO oLovVO = oTrngCountryCode.getHrmTrgCountryCodeLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrgCityCodeLOVdataQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oTrngCityCode = new HrmTrngInsCrsBO(); + LovVO oLovVO = oTrngCityCode.getHrmTrgCityCodeLOVdataQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrgFacMstEmpNoLOVNmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacBO oTrngFacMstEmpNoCode = new HrmTrngFacBO(); + LovVO oLovVO = oTrngFacMstEmpNoCode.getHrmTrgFacMstEmpNoLOVNmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrgFacMstBaseInstLOVQmode(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacBO oTrngFacMstBaseInst = new HrmTrngFacBO(); + LovVO oLovVO = oTrngFacMstBaseInst.getHrmTrgFacMstBaseInstLOVQmode(oLovQueryVO); + return oLovVO; + } + + public LovVO getHrmTrngBudCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngBudCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngBudCalendarCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngBudCalendarCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngBudCourseCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngBudCourseCodeLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngCalNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngCalNameLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngSiteLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCrsBudBO oHrmTrngCrsBudBO = new HrmTrngCrsBudBO(); + return oHrmTrngCrsBudBO.getHrmTrngSiteLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngCrsInsNameLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngInsCrsBO oHrmTrngInsCrsBO = new HrmTrngInsCrsBO(); + return oHrmTrngInsCrsBO.getHrmTrngCrsInsNameLOV(oLovQueryVO); + } + + public LovVO getHrmClsCalCrsLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmClsCalCrsLOV(oLovQueryVO); + } + + public LovVO getHrmEmpHistEmpLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmEmpHistEmpLOV(oLovQueryVO); + } + + public LovVO getHrmEmpHistCrsLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmEmpHistCrsLOV(oLovQueryVO); + } + + public LovVO getHrmEmpHistCalLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmEmpHistCalLOV(oLovQueryVO); + } + + public LovVO getHrmAttendanceDtlLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpHistBO oHrmTrngEmpHistBO = new HrmTrngEmpHistBO(); + return oHrmTrngEmpHistBO.getHrmAttendanceDtlLOV(oLovQueryVO); + } + + public LovVO getHrmTrngFacultyLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngFacTrngBO oHrmTrngFacTrngBO = new HrmTrngFacTrngBO(); + return oHrmTrngFacTrngBO.getHrmTrngFacultyLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngRatingLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalBO oHrmTrngCalBO = new HrmTrngCalBO(); + return oHrmTrngCalBO.getHrmTrngRatingLOVdata(oLovQueryVO); + } + + public LovVO getHrmTrngFdbkRatingHelpLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpFdbkBO oHrmTrngEmpFdbkBO = new HrmTrngEmpFdbkBO(); + return new LovVO(); + } + + public LovVO getHrmCalCloseCrsNameLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalCloseBO oHrmTrngCalCloseBO = new HrmTrngCalCloseBO(); + LovVO oLovVO = oHrmTrngCalCloseBO.getHrmCalCloseCrsNameLOVdata(oLovQueryVO); + return oLovVO; + } + + public void calendarClose(String sCalId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngCalCloseBO oHrmTrngCalCloseBO = new HrmTrngCalCloseBO(); + oHrmTrngCalCloseBO.calendarClose(sCalId); + } + + public LovVO getEmpCodeLOVdataQ(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + LovVO oLovVO = oHrmTrngEmpReqBO.getEmpCodeLOVdataQ(oLovQueryVO); + return oLovVO; + } + + public LovVO getEmpCodeLOVdataN(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + LovVO oLovVO = oHrmTrngEmpReqBO.getEmpCodeLOVdataN(oLovQueryVO); + return oLovVO; + } + + public String getGroupInfo(String oUserTypeId) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmTrngEmpReqBO oHrmTrngEmpReqBO = new HrmTrngEmpReqBO(); + String groupId = oHrmTrngEmpReqBO.getGroupInfo(oUserTypeId); + return groupId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocal.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocal.java new file mode 100644 index 0000000..7759d81 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocal.java @@ -0,0 +1,219 @@ +package wenrgise.hrms.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.vo.HrmTrngCalQVO; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; +import wenrgise.hrms.vo.HrmTrngFacFdbkQVO; +import wenrgise.hrms.vo.HrmTrngFacQVO; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public interface HrmTrainingFacadeLocal extends EJBLocalObject { + RecordMetaInfo getHrmTrngCrsHeaderMetaInfo(HrmTrngCrsMstQVO paramHrmTrngCrsMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsHeader(HrmTrngCrsMstQVO paramHrmTrngCrsMstQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTrngCrsMstHdrBean paramHrmTrngCrsMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngInsCrsHeaderMetaInfo(HrmTrngInsCrsQVO paramHrmTrngInsCrsQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngInsCrsHeader(HrmTrngInsCrsQVO paramHrmTrngInsCrsQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngInsCrsDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngInsCrsDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTrngInsCrsHdrBean paramHrmTrngInsCrsHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsBudHeaderMetaInfo(HrmTrngCrsBudQVO paramHrmTrngCrsBudQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsBudHeader(HrmTrngCrsBudQVO paramHrmTrngCrsBudQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsBudDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsBudDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTrngCrsBudHdrBean paramHrmTrngCrsBudHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCalHeaderMetaInfo(HrmTrngCalQVO paramHrmTrngCalQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCalHeader(HrmTrngCalQVO paramHrmTrngCalQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCalDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCalDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + boolean chkHrmTrnCalByRatingId(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTrngCalHdrBean paramHrmTrngCalHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalInstLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalCrsCdLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacHeaderMetaInfo(HrmTrngFacQVO paramHrmTrngFacQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacHeader(HrmTrngFacQVO paramHrmTrngFacQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTrngFacBean paramHrmTrngFacBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacTrngHeaderMetaInfo(HrmTrngFacTrngQVO paramHrmTrngFacTrngQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacTrngHeader(HrmTrngFacTrngQVO paramHrmTrngFacTrngQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacTrngDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacTrngDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTrngFacTrngHdrBean paramHrmTrngFacTrngHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTrngReqHeaderMetaInfo(HrmTrngEmpReqQVO paramHrmTrngEmpReqQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTrngReqHeader(HrmTrngEmpReqQVO paramHrmTrngEmpReqQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpReqDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpReqDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpCodeLOVdataQ(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpCodeLOVdataN(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getGroupInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqCalLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqRecoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqEmpLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String rejectEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String approveEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String submitEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpHistHeaderMetaInfo(HrmTrngEmpHistQVO paramHrmTrngEmpHistQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpHistHeader(HrmTrngEmpHistQVO paramHrmTrngEmpHistQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpHistDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpHistDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpAttHeaderMetaInfo(HrmTrngEmpAttQVO paramHrmTrngEmpAttQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpAttHeader(HrmTrngEmpAttQVO paramHrmTrngEmpAttQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpAttDetailMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpAttDetail(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngEmpAtt(HrmTrngEmpAttHdrBean paramHrmTrngEmpAttHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalDetailLOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmFacNameLOVInfo(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdBkDtlMetaInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdBkDetailInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdBkNextDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdBkNextDtl(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdbkDtlHdr(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdbkDtlHdrMetaInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCourseLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFacultyLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpFdBkDtlMetaInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpFdBkDetailInfo(String paramString, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpFbkHeader(HrmTrngEmpFbkQVO paramHrmTrngEmpFbkQVO, long paramLong1, long paramLong2) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpFbkHeaderMetaInfo(HrmTrngEmpFbkQVO paramHrmTrngEmpFbkQVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFdbkRatingHelpLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgMstBranchCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgInstCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCountryCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCityCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgFacMstEmpNoLOVNmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgFacMstBaseInstLOVQmode(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCourseLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqCourseLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCourseCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCalendarCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalNameLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngSiteLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCrsInsNameLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClsCalCrsLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistEmpLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistCrsLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistCalLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttendanceDtlLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFacultyLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngRatingLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalCloseCrsNameLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + void calendarClose(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocalHome.java b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocalHome.java new file mode 100644 index 0000000..b259bee --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/ejb/facade/HrmTrainingFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.hrms.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface HrmTrainingFacadeLocalHome extends EJBLocalHome { + HrmTrainingFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/hrms/helper/WorkFlowSimulator.java b/hrmsEjb/wenrgise/hrms/helper/WorkFlowSimulator.java new file mode 100644 index 0000000..84ff389 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/helper/WorkFlowSimulator.java @@ -0,0 +1,52 @@ +package wenrgise.hrms.helper; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflWorkListInfoBean; +import wenrgise.workflow.service.WorkFlowService; +import wenrgise.workflow.utility.Node; + +public class WorkFlowSimulator implements WorkFlowService { + public WflWorkListInfoBean getWorkListInfo(String sWorkListId) throws EnrgiseApplicationException, EnrgiseSystemException { + WflWorkListInfoBean wflWorkListInfoBean = new WflWorkListInfoBean(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList oParameters = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sWorkListId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetWorkListInfo(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count++; + oRow = oIt.next(); + wflWorkListInfoBean.setDocId(oRow.get("doc_id").getString()); + wflWorkListInfoBean.setDocTypeCode(oRow.get("doc_type_code").getString()); + wflWorkListInfoBean.setONode(new Node(oRow.get("lane").getString(), oRow.get("level_number").getString())); + wflWorkListInfoBean.setCreatorempId(oRow.get("creator_emp_id").getString()); + wflWorkListInfoBean.setLastEmpId(oRow.get("last_approver_emp_id").getString()); + wflWorkListInfoBean.setSiteId(oRow.get("created_site_id").getString()); + wflWorkListInfoBean.setStatus(oRow.get("status").getString()); + wflWorkListInfoBean.setAssignedOn(oRow.get("last_assigned_date").getString()); + wflWorkListInfoBean.setRequestorEmpId(oRow.get("pending_for_emp_id").getString()); + } + return wflWorkListInfoBean; + } +} diff --git a/hrmsEjb/wenrgise/hrms/service/HrmsService.java b/hrmsEjb/wenrgise/hrms/service/HrmsService.java new file mode 100644 index 0000000..47dd883 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/service/HrmsService.java @@ -0,0 +1,14 @@ +package wenrgise.hrms.service; + +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; + +public interface HrmsService { + LovVO getEmpNameLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWrkGroupLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClassCodeLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/hrms/service/HrmsServiceFactory.java b/hrmsEjb/wenrgise/hrms/service/HrmsServiceFactory.java new file mode 100644 index 0000000..3243962 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/service/HrmsServiceFactory.java @@ -0,0 +1,11 @@ +package wenrgise.hrms.service; + +import wenrgise.workflow.helper.HrmsSimulator; + +public class HrmsServiceFactory { + private static HrmsServiceFactory hrmsServiceFactory = new HrmsServiceFactory(); + + public static HrmsService getService() { + return (HrmsService)new HrmsSimulator(); + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnApplQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnApplQVO.java new file mode 100644 index 0000000..44fb605 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnApplQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDDptnApplQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String applnNo; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java new file mode 100644 index 0000000..2f6129c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDDptnChrgRptQVO extends BaseQueryVO implements Serializable { + String dptOrderNo; + + private String empId; + + public String getDptOrderNo() { + return this.dptOrderNo; + } + + public void setDptOrderNo(String newDptOrderNo) { + this.dptOrderNo = newDptOrderNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java new file mode 100644 index 0000000..163057e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDDptnOrderSingleEmpQVO extends BaseQueryVO implements Serializable { + String orderNo; + + String applnNo; + + String headerPrimaryKey1; + + String employeeNoId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDTransApplQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransApplQVO.java new file mode 100644 index 0000000..e3b8736 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransApplQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransApplQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String applnNo; + + private String employeeNoId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java new file mode 100644 index 0000000..129fbaa --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransChrgRptQVO extends BaseQueryVO implements Serializable { + String trnOrderNo; + + private String chargeType; + + String empNameId; + + public String getTrnOrderNo() { + return this.trnOrderNo; + } + + public void setTrnOrderNo(String newTrnOrderNo) { + this.trnOrderNo = newTrnOrderNo; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getEmpNameId() { + return this.empNameId; + } + + public void setEmpNameId(String newEmpNameId) { + this.empNameId = newEmpNameId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java new file mode 100644 index 0000000..9b88f68 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransCnclApplQVO extends BaseQueryVO implements Serializable { + private String applnNo; + + private String empNo; + + private String empId; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java new file mode 100644 index 0000000..759b8f9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransCnclOrderSingleEmpQVO extends BaseQueryVO implements Serializable { + String orderNo; + + String appNo; + + String headerPrimaryKey1; + + String employeeId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getAppNo() { + return this.appNo; + } + + public void setAppNo(String newAppNo) { + this.appNo = newAppNo; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java new file mode 100644 index 0000000..c156ee9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransSingleEmpQVO extends BaseQueryVO implements Serializable { + private String orderNo; + + private String orderStatus; + + private String applnNo; + + String headerPrimaryKey1; + + String empID; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmpID() { + return this.empID; + } + + public void setEmpID(String newEmpID) { + this.empID = newEmpID; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAdhocReportQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAdhocReportQVO.java new file mode 100644 index 0000000..832f4dc --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAdhocReportQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdhocReportQVO extends BaseQueryVO implements Serializable { + String id; + + String code; + + String category_tag; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getCategory_tag() { + return this.category_tag; + } + + public void setCategory_tag(String category_tag) { + this.category_tag = category_tag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAdvMstQueryVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAdvMstQueryVO.java new file mode 100644 index 0000000..b2ec350 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAdvMstQueryVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdvMstQueryVO extends BaseQueryVO implements Serializable { + private String advanceCode; + + String hidDetailId; + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getHidDetailId() { + return this.hidDetailId; + } + + public void setHidDetailId(String newHidDetailId) { + this.hidDetailId = newHidDetailId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java new file mode 100644 index 0000000..d0ce567 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdvSettleHeadsQVO extends BaseQueryVO implements Serializable { + private String advanceCodeId; + + private String advanceDescription; + + String settleId; + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleQVO.java new file mode 100644 index 0000000..128571b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAdvSettleQVO.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdvSettleQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String fromDate; + + private String toDate; + + private String advanceCode; + + private String settleStatus; + + private String advanceCodeId; + + private String employeeId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getSettleStatus() { + return this.settleStatus; + } + + public void setSettleStatus(String newSettleStatus) { + this.settleStatus = newSettleStatus; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAppTempQueryVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAppTempQueryVO.java new file mode 100644 index 0000000..b190da9 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAppTempQueryVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAppTempQueryVO extends BaseQueryVO implements Serializable { + private String templateName; + + String ratingCode; + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java new file mode 100644 index 0000000..9ccfe21 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAppraisalKPAQVO extends BaseQueryVO implements Serializable { + private String kpaGroupCode; + + private String description; + + public String getKpaGroupCode() { + return this.kpaGroupCode; + } + + public void setKpaGroupCode(String newKpaGroupCode) { + this.kpaGroupCode = newKpaGroupCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAprslQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAprslQVO.java new file mode 100644 index 0000000..902840e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAprslQVO.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslQVO extends BaseQueryVO implements Serializable { + String empNo; + + String aprslLevel; + + String stOrderNo; + + String empId; + + String aprslYear; + + String employeeId; + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getAprslLevel() { + return this.aprslLevel; + } + + public void setAprslLevel(String newAprslLevel) { + this.aprslLevel = newAprslLevel; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getAprslYear() { + return this.aprslYear; + } + + public void setAprslYear(String newAprslYear) { + this.aprslYear = newAprslYear; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java new file mode 100644 index 0000000..76a614f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslSpcTmplQVO extends BaseQueryVO implements Serializable { + private String templateNameId; + + public String getTemplateNameId() { + return this.templateNameId; + } + + public void setTemplateNameId(String newTemplateNameId) { + this.templateNameId = newTemplateNameId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java new file mode 100644 index 0000000..8b84343 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslStartOrderQVO extends BaseQueryVO implements Serializable { + String stOrderNo; + + String stOrderId; + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java new file mode 100644 index 0000000..b2ee473 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslStartRuleQVO extends BaseQueryVO implements Serializable { + private String hdnAprslStOrdNo; + + private String hdnSiteCode; + + private String hdnWrkGrpCode; + + private String hdnEmpNum; + + private String hdnClsHdrID; + + private String hdnClsDtlID; + + public String getHdnAprslStOrdNo() { + return this.hdnAprslStOrdNo; + } + + public void setHdnAprslStOrdNo(String newHdnAprslStOrdNo) { + this.hdnAprslStOrdNo = newHdnAprslStOrdNo; + } + + public String getHdnSiteCode() { + return this.hdnSiteCode; + } + + public void setHdnSiteCode(String newHdnSiteCode) { + this.hdnSiteCode = newHdnSiteCode; + } + + public String getHdnWrkGrpCode() { + return this.hdnWrkGrpCode; + } + + public void setHdnWrkGrpCode(String newHdnWrkGrpCode) { + this.hdnWrkGrpCode = newHdnWrkGrpCode; + } + + public String getHdnEmpNum() { + return this.hdnEmpNum; + } + + public void setHdnEmpNum(String newHdnEmpNum) { + this.hdnEmpNum = newHdnEmpNum; + } + + public String getHdnClsHdrID() { + return this.hdnClsHdrID; + } + + public void setHdnClsHdrID(String newHdnClsHdrID) { + this.hdnClsHdrID = newHdnClsHdrID; + } + + public String getHdnClsDtlID() { + return this.hdnClsDtlID; + } + + public void setHdnClsDtlID(String newHdnClsDtlID) { + this.hdnClsDtlID = newHdnClsDtlID; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java new file mode 100644 index 0000000..3486159 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpAttInQVO extends BaseQueryVO implements Serializable { + String empId; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java new file mode 100644 index 0000000..0c4354e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpAttOutQVO extends BaseQueryVO implements Serializable { + String empId; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java new file mode 100644 index 0000000..2136d61 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpAttQueryQVO extends BaseQueryVO implements Serializable { + String empId; + + String periodStartDt; + + String periodEndDt; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getPeriodStartDt() { + return this.periodStartDt; + } + + public void setPeriodStartDt(String newPeriodStartDt) { + this.periodStartDt = newPeriodStartDt; + } + + public String getPeriodEndDt() { + return this.periodEndDt; + } + + public void setPeriodEndDt(String newPeriodEndDt) { + this.periodEndDt = newPeriodEndDt; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java new file mode 100644 index 0000000..08111ec --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpDayOffQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String periodStartDate; + + private String periodEndDate; + + private String empId; + + private String employeeName; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java new file mode 100644 index 0000000..68e9de6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpShiftQVO extends BaseQueryVO implements Serializable { + String startDate; + + String endDate; + + String employeeNo; + + String employeeName; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java new file mode 100644 index 0000000..08ee743 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpShiftRosterQVO extends BaseQueryVO implements Serializable { + private String workGroupCode; + + String employeeNo; + + private String periodStartDate; + + private String periodEndDate; + + private String txtSiteId; + + private String hdnWorkId; + + private String hdnEmpId; + + String hdnSiteId; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getTxtSiteId() { + return this.txtSiteId; + } + + public void setTxtSiteId(String newTxtSiteId) { + this.txtSiteId = newTxtSiteId; + } + + public String getHdnWorkId() { + return this.hdnWorkId; + } + + public void setHdnWorkId(String newHdnWorkId) { + this.hdnWorkId = newHdnWorkId; + } + + public String getHdnEmpId() { + return this.hdnEmpId; + } + + public void setHdnEmpId(String newHdnEmpId) { + this.hdnEmpId = newHdnEmpId; + } + + public String getHdnSiteId() { + return this.hdnSiteId; + } + + public void setHdnSiteId(String newHdnSiteId) { + this.hdnSiteId = newHdnSiteId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttShiftMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttShiftMstQVO.java new file mode 100644 index 0000000..bf2d825 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttShiftMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttShiftMstQVO extends BaseQueryVO implements Serializable { + private String shiftCode; + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java new file mode 100644 index 0000000..1539ddd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttShiftRosterGenQVO extends BaseQueryVO implements Serializable { + private String site; + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java new file mode 100644 index 0000000..2f4ac63 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttWorkGroupDayOffQVO extends BaseQueryVO implements Serializable { + private String workGroupCode; + + private String workGroupDescription; + + private String siteCode; + + private String siteDescription; + + private String workGroupId; + + private String siteId; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java new file mode 100644 index 0000000..46491c7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttWorkGroupShiftQVO extends BaseQueryVO implements Serializable { + String wrkGrpCode; + + String siteCode; + + String startDate; + + String endDate; + + String workGroupId; + + String siteId; + + String workGroupDescription; + + String siteDescription; + + public String getWrkGrpCode() { + return this.wrkGrpCode; + } + + public void setWrkGrpCode(String newWrkGrpCode) { + this.wrkGrpCode = newWrkGrpCode; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmClaimMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmClaimMstQVO.java new file mode 100644 index 0000000..f0810d3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmClaimMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmClaimMstQVO extends BaseQueryVO implements Serializable { + private String claimCodeId; + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java new file mode 100644 index 0000000..f462053 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpAdvAppQueryVO extends BaseQueryVO implements Serializable { + private String employeeId; + + private String fromDate; + + private String toDate; + + private String advanceStatus; + + private String advanceCode; + + private String empId; + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAdvanceStatus() { + return this.advanceStatus; + } + + public void setAdvanceStatus(String newAdvanceStatus) { + this.advanceStatus = newAdvanceStatus; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmEmpClaimQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmEmpClaimQVO.java new file mode 100644 index 0000000..e53c3b7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmEmpClaimQVO.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpClaimQVO extends BaseQueryVO implements Serializable { + private String claimCodeId; + + private String startDate; + + private String endDate; + + private String empId; + + private String claimNo; + + private String period; + + private String empNo; + + private String empDtlId; + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getClaimNo() { + return this.claimNo; + } + + public void setClaimNo(String newClaimNo) { + this.claimNo = newClaimNo; + } + + public String getPeriod() { + return this.period; + } + + public void setPeriod(String newPeriod) { + this.period = newPeriod; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpDtlId() { + return this.empDtlId; + } + + public void setEmpDtlId(String newEmpDtlId) { + this.empDtlId = newEmpDtlId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java new file mode 100644 index 0000000..5ed28ce --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpDepDtlQVO extends BaseQueryVO implements Serializable { + String employeeNo; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java new file mode 100644 index 0000000..0eb1c96 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpDiscActionQVO extends BaseQueryVO implements Serializable { + String employeeNo; + + String caseFlag; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getCaseFlag() { + return this.caseFlag; + } + + public void setCaseFlag(String newCaseFlag) { + this.caseFlag = newCaseFlag; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmEmpPersQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmEmpPersQVO.java new file mode 100644 index 0000000..3103332 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmEmpPersQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpPersQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String empId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQVO.java new file mode 100644 index 0000000..03e3a4f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmGenEligRuleQVO extends BaseQueryVO implements Serializable { + private String eligibilityClass; + + private String documentType; + + public String getEligibilityClass() { + return this.eligibilityClass; + } + + public void setEligibilityClass(String newEligibilityClass) { + this.eligibilityClass = newEligibilityClass; + } + + public String getDocumentType() { + return this.documentType; + } + + public void setDocumentType(String newDocumentType) { + this.documentType = newDocumentType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java new file mode 100644 index 0000000..e8b6c75 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmGenEligRuleQueryQVO extends BaseQueryVO implements Serializable { + private String docType; + + public String getDocType() { + return this.docType; + } + + public void setDocType(String newDocType) { + this.docType = newDocType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLnAppQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLnAppQVO.java new file mode 100644 index 0000000..c4449ad --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLnAppQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLnAppQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String loanCode; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLnChartQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLnChartQVO.java new file mode 100644 index 0000000..9f3ccd1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLnChartQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLnChartQVO extends BaseQueryVO implements Serializable { + String chartName; + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLnMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLnMstQVO.java new file mode 100644 index 0000000..08ed88e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLnMstQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLnMstQVO extends BaseQueryVO implements Serializable { + String loanCode; + + String chartName; + + String chartNameId; + + String loanCodeId; + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getChartNameId() { + return this.chartNameId; + } + + public void setChartNameId(String newChartNameId) { + this.chartNameId = newChartNameId; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQVO.java new file mode 100644 index 0000000..ef369bb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQVO.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvApplnQVO extends BaseQueryVO implements Serializable { + private String transId; + + private String hdnDetailId; + + private String leaveCodes; + + private String fromAppDate; + + private String toAppDate; + + private String employeeNumber; + + String employeeId; + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getFromAppDate() { + return this.fromAppDate; + } + + public void setFromAppDate(String newFromAppDate) { + this.fromAppDate = newFromAppDate; + } + + public String getToAppDate() { + return this.toAppDate; + } + + public void setToAppDate(String newToAppDate) { + this.toAppDate = newToAppDate; + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java new file mode 100644 index 0000000..e490de7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvApplnQueryQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String leaveCode; + + private String fromDate; + + private String toDate; + + private String statusOfLeave; + + private String transId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLvCancQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLvCancQVO.java new file mode 100644 index 0000000..bfd03cd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLvCancQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvCancQVO extends BaseQueryVO implements Serializable { + private String transId; + + String employeeNo; + + String leaveCode; + + String leaveCodeId; + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLvCancQueryQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLvCancQueryQVO.java new file mode 100644 index 0000000..a3bc50b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLvCancQueryQVO.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvCancQueryQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String leaveType; + + private String cancelFromDate; + + private String cancelToDate; + + private String cancellationStatus; + + String empId; + + private String empName; + + String leaveTypeId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getCancelFromDate() { + return this.cancelFromDate; + } + + public void setCancelFromDate(String newCancelFromDate) { + this.cancelFromDate = newCancelFromDate; + } + + public String getCancelToDate() { + return this.cancelToDate; + } + + public void setCancelToDate(String newCancelToDate) { + this.cancelToDate = newCancelToDate; + } + + public String getCancellationStatus() { + return this.cancellationStatus; + } + + public void setCancellationStatus(String newCancellationStatus) { + this.cancellationStatus = newCancellationStatus; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLvEncashQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLvEncashQVO.java new file mode 100644 index 0000000..adce344 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLvEncashQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvEncashQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String fromDate; + + private String toDate; + + private String changeStatus; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getChangeStatus() { + return this.changeStatus; + } + + public void setChangeStatus(String newChangeStatus) { + this.changeStatus = newChangeStatus; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLvLedgerQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLvLedgerQVO.java new file mode 100644 index 0000000..4ebf465 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLvLedgerQVO.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvLedgerQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String leaveType; + + private String hdnDetailId; + + private String leavesType; + + private String leavesTaken; + + private String leavesEncashed; + + private String leaveCode; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getLeavesType() { + return this.leavesType; + } + + public void setLeavesType(String newLeavesType) { + this.leavesType = newLeavesType; + } + + public String getLeavesTaken() { + return this.leavesTaken; + } + + public void setLeavesTaken(String newLeavesTaken) { + this.leavesTaken = newLeavesTaken; + } + + public String getLeavesEncashed() { + return this.leavesEncashed; + } + + public void setLeavesEncashed(String newLeavesEncashed) { + this.leavesEncashed = newLeavesEncashed; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmLvMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmLvMstQVO.java new file mode 100644 index 0000000..4ae59b8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmLvMstQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvMstQVO extends BaseQueryVO implements Serializable { + String leaveCode; + + String encashable; + + String calendar; + + String applicableTo; + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getEncashable() { + return this.encashable; + } + + public void setEncashable(String newEncashable) { + this.encashable = newEncashable; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String getApplicableTo() { + return this.applicableTo; + } + + public void setApplicableTo(String newApplicableTo) { + this.applicableTo = newApplicableTo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java new file mode 100644 index 0000000..4b89c11 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java @@ -0,0 +1,106 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmMediclaimMasterQVO extends BaseQueryVO implements Serializable { + private String coverName; + + private String sumInsured; + + private String salaryUnit; + + private String premium; + + private String ageFrom; + + private String ageTo; + + private String aicContribution; + + private String documentRequired; + + private String txtClassId; + + private String txtCadreId; + + public String getTxtClassId() { + return this.txtClassId; + } + + public void setTxtClassId(String txtClassId) { + this.txtClassId = txtClassId; + } + + public String getTxtCadreId() { + return this.txtCadreId; + } + + public void setTxtCadreId(String txtCadreId) { + this.txtCadreId = txtCadreId; + } + + public String getSalaryUnit() { + return this.salaryUnit; + } + + public void setSalaryUnit(String salaryUnit) { + this.salaryUnit = salaryUnit; + } + + public String getPremium() { + return this.premium; + } + + public void setPremium(String premium) { + this.premium = premium; + } + + public String getAgeFrom() { + return this.ageFrom; + } + + public void setAgeFrom(String ageFrom) { + this.ageFrom = ageFrom; + } + + public String getAgeTo() { + return this.ageTo; + } + + public void setAgeTo(String ageTo) { + this.ageTo = ageTo; + } + + public String getAicContribution() { + return this.aicContribution; + } + + public void setAicContribution(String aicContribution) { + this.aicContribution = aicContribution; + } + + public String getDocumentRequired() { + return this.documentRequired; + } + + public void setDocumentRequired(String documentRequired) { + this.documentRequired = documentRequired; + } + + public String getCoverName() { + return this.coverName; + } + + public void setCoverName(String coverName) { + this.coverName = coverName; + } + + public String getSumInsured() { + return this.sumInsured; + } + + public void setSumInsured(String sumInsured) { + this.sumInsured = sumInsured; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmMisreportQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmMisreportQVO.java new file mode 100644 index 0000000..989a195 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmMisreportQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmMisreportQVO extends BaseQueryVO implements Serializable { + private String locationCode; + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmMyWorkflowQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmMyWorkflowQVO.java new file mode 100644 index 0000000..50513bb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmMyWorkflowQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmMyWorkflowQVO extends BaseQueryVO implements Serializable { + private String workflowType; + + private String txtStatus; + + private String empId; + + private String id; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getWorkflowType() { + return this.workflowType; + } + + public void setWorkflowType(String newWorkflowType) { + this.workflowType = newWorkflowType; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgCalMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgCalMstQVO.java new file mode 100644 index 0000000..13890af --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgCalMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgCalMstQVO extends BaseQueryVO implements Serializable { + private String calendarType; + + public String getCalendarType() { + return this.calendarType; + } + + public void setCalendarType(String newCalendarType) { + this.calendarType = newCalendarType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java new file mode 100644 index 0000000..bd2be6f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgClassDtlQVO extends BaseQueryVO implements Serializable { + private String Code; + + private String Id; + + public String getCode() { + return this.Code; + } + + public void setCode(String newCode) { + this.Code = newCode; + } + + public String getId() { + return this.Id; + } + + public void setId(String newId) { + this.Id = newId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java new file mode 100644 index 0000000..efe0dfb --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgCntryMstQVO extends BaseQueryVO implements Serializable { + String countryCode; + + public String getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String newCountryCode) { + this.countryCode = newCountryCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgHolCalQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgHolCalQVO.java new file mode 100644 index 0000000..f8b6f2f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgHolCalQVO.java @@ -0,0 +1,66 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgHolCalQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String siteCode; + + private String siteId; + + private String state; + + private String stateId; + + private String stateCode; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getStateId() { + return this.stateId; + } + + public void setStateId(String newStateId) { + this.stateId = newStateId; + } + + public String getStateCode() { + return this.stateCode; + } + + public void setStateCode(String newStateCode) { + this.stateCode = newStateCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java new file mode 100644 index 0000000..500d51f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgHolTypeMstQVO extends BaseQueryVO implements Serializable { + private String holidayType; + + public String getHolidayType() { + return this.holidayType; + } + + public void setHolidayType(String newHolidayType) { + this.holidayType = newHolidayType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgIncrementQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgIncrementQVO.java new file mode 100644 index 0000000..33d5b90 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgIncrementQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgIncrementQVO extends BaseQueryVO implements Serializable { + private String startDate; + + private String endDate; + + private String ratingHdrId; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getRatingHdrId() { + return this.ratingHdrId; + } + + public void setRatingHdrId(String newRatingHdrId) { + this.ratingHdrId = newRatingHdrId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java new file mode 100644 index 0000000..f984884 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgRatingMstQVO extends BaseQueryVO implements Serializable { + String ratingHeaderCode; + + public String getRatingHeaderCode() { + return this.ratingHeaderCode; + } + + public void setRatingHeaderCode(String newRatingHeaderCode) { + this.ratingHeaderCode = newRatingHeaderCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java new file mode 100644 index 0000000..7afc3f4 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgScaleMstQVO extends BaseQueryVO implements Serializable { + private String scaleCode; + + private String revision; + + public String getScaleCode() { + return this.scaleCode; + } + + public void setScaleCode(String newScaleCode) { + this.scaleCode = newScaleCode; + } + + public String getRevision() { + return this.revision; + } + + public void setRevision(String newRevision) { + this.revision = newRevision; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java new file mode 100644 index 0000000..8657117 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgSkillMstQVO extends BaseQueryVO implements Serializable { + String skillTypeCode; + + public String getSkillTypeCode() { + return this.skillTypeCode; + } + + public void setSkillTypeCode(String newSkillTypeCode) { + this.skillTypeCode = newSkillTypeCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java new file mode 100644 index 0000000..202b612 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgWorkGroupMstQVO extends BaseQueryVO implements Serializable { + private String code; + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java new file mode 100644 index 0000000..a198914 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmCriteriaQVO extends BaseQueryVO implements Serializable { + private String toGradeId; + + private String fromDesigId; + + private String toDesigId; + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java new file mode 100644 index 0000000..9da0131 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmExperienceScoreQVO extends BaseQueryVO implements Serializable { + private String designationId; + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmGenAssQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmGenAssQVO.java new file mode 100644 index 0000000..afd39b1 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmGenAssQVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmGenAssQVO extends BaseQueryVO implements Serializable { + private String siteCode; + + private String prmNo; + + private String postFrom; + + private String postTo; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getPostFrom() { + return this.postFrom; + } + + public void setPostFrom(String newPostFrom) { + this.postFrom = newPostFrom; + } + + public String getPostTo() { + return this.postTo; + } + + public void setPostTo(String newPostTo) { + this.postTo = newPostTo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java new file mode 100644 index 0000000..479a0f4 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmKPARatingQVO extends BaseQueryVO implements Serializable { + String positionId; + + String ratingId; + + public String getPositionId() { + return this.positionId; + } + + public void setPositionId(String newPositionId) { + this.positionId = newPositionId; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java new file mode 100644 index 0000000..6789c86 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmNoticeDtlQVO extends BaseQueryVO implements Serializable { + String noticeId; + + public String getNoticeId() { + return this.noticeId; + } + + public void setNoticeId(String newNoticeId) { + this.noticeId = newNoticeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmOrderQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmOrderQVO.java new file mode 100644 index 0000000..14d52b8 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmOrderQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmOrderQVO extends BaseQueryVO implements Serializable { + private String empId; + + private String orderNo; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java new file mode 100644 index 0000000..1dce9c2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmQualCriteriaQVO extends BaseQueryVO implements Serializable { + private String designationId; + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java new file mode 100644 index 0000000..51d1b43 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmTestScoreQVO extends BaseQueryVO implements Serializable { + String positionId; + + String examType; + + public String getPositionId() { + return this.positionId; + } + + public void setPositionId(String newPositionId) { + this.positionId = newPositionId; + } + + public String getExamType() { + return this.examType; + } + + public void setExamType(String newExamType) { + this.examType = newExamType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmPrmViewAssQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmPrmViewAssQVO.java new file mode 100644 index 0000000..85b373c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmPrmViewAssQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmViewAssQVO extends BaseQueryVO implements Serializable { + private String siteCode; + + private String prmNo; + + private String toPosition; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getToPosition() { + return this.toPosition; + } + + public void setToPosition(String newToPosition) { + this.toPosition = newToPosition; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java new file mode 100644 index 0000000..1ff8f51 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java @@ -0,0 +1,6 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecAdvtMtnQVO extends BaseQueryVO implements Serializable {} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java new file mode 100644 index 0000000..e913bb3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecApplnMtnQVO extends BaseQueryVO implements Serializable { + private String referenceNo; + + private String applForDesignation; + + private String applicationNo; + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java new file mode 100644 index 0000000..5d87f0f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecEmpRecCreationQVO extends BaseQueryVO implements Serializable { + private String applicationNo; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java new file mode 100644 index 0000000..7ca28c7 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecScrutAppMntQVO extends BaseQueryVO implements Serializable { + String stage; + + public String getStage() { + return this.stage; + } + + public void setStage(String newStage) { + this.stage = newStage; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java new file mode 100644 index 0000000..d81fb1e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecTestCentreMstQVO extends BaseQueryVO implements Serializable { + String testCentreCodeId; + + public String getTestCentreCodeId() { + return this.testCentreCodeId; + } + + public void setTestCentreCodeId(String newTestCentreCodeId) { + this.testCentreCodeId = newTestCentreCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmRetireForecastQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmRetireForecastQVO.java new file mode 100644 index 0000000..f5c4b1c --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmRetireForecastQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRetireForecastQVO extends BaseQueryVO implements Serializable { + private String fromDate; + + private String toDate; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmRoasterEntryQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmRoasterEntryQVO.java new file mode 100644 index 0000000..6790ce2 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmRoasterEntryQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRoasterEntryQVO extends BaseQueryVO implements Serializable { + private String txtRoasterCode; + + public String getTxtRoasterCode() { + return this.txtRoasterCode; + } + + public void setTxtRoasterCode(String txtRoasterCode) { + this.txtRoasterCode = txtRoasterCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmSepApplnQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmSepApplnQVO.java new file mode 100644 index 0000000..7be6d74 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmSepApplnQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepApplnQVO extends BaseQueryVO implements Serializable { + private String applicationNo; + + private String initiatedBy; + + private String empId; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmSepCatMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmSepCatMstQVO.java new file mode 100644 index 0000000..017979a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmSepCatMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepCatMstQVO extends BaseQueryVO implements Serializable { + private String separationCode; + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmSepClrEmpQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmSepClrEmpQVO.java new file mode 100644 index 0000000..84bca7d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmSepClrEmpQVO.java @@ -0,0 +1,45 @@ +package wenrgise.hrms.vo; + +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepClrEmpQVO extends BaseQueryVO { + private String empNoId; + + private String tmplDescId; + + private String screenMode; + + private String empNo; + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getScreenMode() { + return this.screenMode; + } + + public void setScreenMode(String newScreenMode) { + this.screenMode = newScreenMode; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java new file mode 100644 index 0000000..b25e760 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java @@ -0,0 +1,15 @@ +package wenrgise.hrms.vo; + +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepClrTmplMstQVO extends BaseQueryVO { + private String tmplDescId; + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmSepOrderQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmSepOrderQVO.java new file mode 100644 index 0000000..0ade822 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmSepOrderQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepOrderQVO extends BaseQueryVO implements Serializable { + private String orderNo; + + private String orderNoId; + + private String applnId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmSettleQueryVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmSettleQueryVO.java new file mode 100644 index 0000000..20eb5f3 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmSettleQueryVO.java @@ -0,0 +1,46 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSettleQueryVO extends BaseQueryVO implements Serializable { + private String hidDetailId; + + private String settleHeads; + + private String advanceDescription; + + String advCodeId; + + public String getHidDetailId() { + return this.hidDetailId; + } + + public void setHidDetailId(String newHidDetailId) { + this.hidDetailId = newHidDetailId; + } + + public String getSettleHeads() { + return this.settleHeads; + } + + public void setSettleHeads(String newSettleHeads) { + this.settleHeads = newSettleHeads; + } + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getAdvCodeId() { + return this.advCodeId; + } + + public void setAdvCodeId(String newAdvCodeId) { + this.advCodeId = newAdvCodeId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java new file mode 100644 index 0000000..f395b1f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCalCloseQVO extends BaseQueryVO implements Serializable { + String courseName; + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngCalQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCalQVO.java new file mode 100644 index 0000000..e1d42d0 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCalQVO.java @@ -0,0 +1,56 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCalQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String site; + + private String startDate; + + private String endDate; + + private String siteName; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java new file mode 100644 index 0000000..9c2a656 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCrsBudQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String calendarId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java new file mode 100644 index 0000000..0308b51 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCrsMstQVO extends BaseQueryVO implements Serializable { + private String trainingBranch; + + public String getTrainingBranch() { + return this.trainingBranch; + } + + public void setTrainingBranch(String newTrainingBranch) { + this.trainingBranch = newTrainingBranch; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java new file mode 100644 index 0000000..5458979 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpAttQVO extends BaseQueryVO implements Serializable { + private String id; + + private String courseNameId; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getCourseNameId() { + return this.courseNameId; + } + + public void setCourseNameId(String newCourseNameId) { + this.courseNameId = newCourseNameId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java new file mode 100644 index 0000000..e798253 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java @@ -0,0 +1,16 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpFbkQVO extends BaseQueryVO implements Serializable { + private String courseId; + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java new file mode 100644 index 0000000..e89b91f --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpHistQVO extends BaseQueryVO implements Serializable { + private String empNo; + + private String course; + + private String calendarName; + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getCourse() { + return this.course; + } + + public void setCourse(String newCourse) { + this.course = newCourse; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java new file mode 100644 index 0000000..5e2d825 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpReqQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + String empId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java new file mode 100644 index 0000000..16f981d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java @@ -0,0 +1,6 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngFacFdbkQVO extends BaseQueryVO implements Serializable {} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacQVO.java new file mode 100644 index 0000000..919fe95 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacQVO.java @@ -0,0 +1,36 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngFacQVO extends BaseQueryVO implements Serializable { + private String facultyType; + + private String employeeNo; + + private String baseInstitution; + + public String getFacultyType() { + return this.facultyType; + } + + public void setFacultyType(String newFacultyType) { + this.facultyType = newFacultyType; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getBaseInstitution() { + return this.baseInstitution; + } + + public void setBaseInstitution(String newBaseInstitution) { + this.baseInstitution = newBaseInstitution; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java new file mode 100644 index 0000000..0627516 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngFacTrngQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String courseName; + + private String startDate; + + private String endDate; + + private String site; + + String calId; + + String courseId; + + String siteId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java b/hrmsEjb/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java new file mode 100644 index 0000000..ec32289 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java @@ -0,0 +1,26 @@ +package wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngInsCrsQVO extends BaseQueryVO implements Serializable { + private String instituteCode; + + private String type; + + public String getInstituteCode() { + return this.instituteCode; + } + + public void setInstituteCode(String newInstituteCode) { + this.instituteCode = newInstituteCode; + } + + public String getType() { + return this.type; + } + + public void setType(String newType) { + this.type = newType; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/action/BaseAction.java b/hrmsEjb/wenrgise/hrms/webtier/action/BaseAction.java new file mode 100644 index 0000000..4f6d7e5 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/action/BaseAction.java @@ -0,0 +1,680 @@ +package wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.logging.Logger; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionError; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.util.MessageResources; +import wenrgise.common.bean.AccessBean; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public abstract class BaseAction extends Action { + static final Logger log = Logger.getLogger("wenrgise.common.webtier.action.BaseAction"); + + MessageResources oMsgRes = null; + + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ActionErrors oErrorTable = null; + ActionMessages oMessageTable = null; + BaseForm oBaseForm = (BaseForm)form; + this.oMsgRes = getResources(request); + try { + return executeImpl(mapping, form, request, response); + } catch (ClassNotFoundException oClassEx) { + processSystemException(oClassEx, oErrorTable); + } catch (InstantiationException oInSt) { + processSystemException(oInSt, oErrorTable); + } catch (InvocationTargetException oInvTar) { + processSystemException(oInvTar, oErrorTable); + } catch (IllegalAccessException oIlAcc) { + processSystemException(oIlAcc, oErrorTable); + } catch (EnrgiseSystemException oSys) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + String sKey = (null != oSys.getKey()) ? oSys.getKey() : "wenrgise.common.system"; + ActionError oSysError = new ActionError(sKey); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } catch (EnrgiseApplicationException oApp) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + if (oMessageTable == null) + oMessageTable = new ActionMessages(); + processException(oErrorTable, oMessageTable, oApp); + if (oApp.getList() != null) { + Iterator oIt = oApp.getList().iterator(); + while (oIt.hasNext()) { + EnrgiseApplicationException oAppErr = oIt.next(); + processException(oErrorTable, oMessageTable, oAppErr); + } + } + } finally { + if (oErrorTable != null) { + System.out.println("Save errors"); + if (oErrorTable.size() > 0) { + saveErrors(request, oErrorTable); + return mapping.findForward("success"); + } + } + if (oMessageTable != null) + if (oMessageTable.size() > 0) { + System.out.println("Save messages"); + saveMessages(request, oMessageTable); + return mapping.findForward("success"); + } + } + return null; + } + + private void processSystemException(Exception oEc, ActionErrors oErrorTable) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + EnrgiseSystemException oSys = new EnrgiseSystemException("wenrgise.common.system", oEc); + ActionError oSysError = new ActionError(oSys.getKey()); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } + + private void processException(ActionErrors oErrorTable, ActionMessages oMessageTable, EnrgiseApplicationException oApp) { + if (oApp.getArguments() == null) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else if (oApp instanceof EnrgiseMessageKeyException) { + processMessageKeyException((EnrgiseMessageKeyException)oApp, oErrorTable, oMessageTable); + } else if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oApp.getArguments().toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oApp.getArguments().toArray())); + } + } + + private void processMessageKeyException(EnrgiseMessageKeyException oApp, ActionErrors oErrorTable, ActionMessages oMessageTable) { + ArrayList oList = oApp.getArguments(); + if (null == oList) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else { + ArrayList oNewList = new ArrayList(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + Object obj = oIt.next(); + if (obj instanceof MessageKey) { + MessageKey oMsgKey = (MessageKey)obj; + oNewList.add(this.oMsgRes.getMessage(oMsgKey.getKey())); + continue; + } + oNewList.add(obj); + } + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oNewList.toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oNewList.toArray())); + } + } + } + + protected BaseQueryVO getQueryVO(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sQueryVO = ParamUtil.getQueryVO(sFormName); + BaseQueryVO oBaseQueryVO = (BaseQueryVO)Class.forName(sQueryVO).newInstance(); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + return oBaseQueryVO; + } + + protected BaseDetailBean getDetailBean(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + return oBaseDetailBean; + } + + protected BaseBD getHeaderBusinessDelegate(ActionForm form, HttpServletRequest request) throws RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getHeaderBD(sFormName); + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } + + protected BaseBD getDetailBusinessDelegate(ActionForm form, HttpServletRequest request) throws RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getDetailBD(sFormName, sScreenName); + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } + + protected BaseHeaderBean getBaseHeaderBean(String sFormName) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + String sBaseHeaderBean = ParamUtil.getHeaderBean(sFormName); + BaseHeaderBean oBaseHeaderBean = (BaseHeaderBean)Class.forName(sBaseHeaderBean).newInstance(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + oBaseHeaderBean.setPseudoHeader(pseudoHeader); + return oBaseHeaderBean; + } + + protected ArrayList getDetailArrayList(BaseForm oBaseForm, String sFormName, String sScreenName) throws EnrgiseSystemException, IllegalAccessException, InstantiationException, ClassNotFoundException { + String sDetailArrayList = ParamUtil.getDetailArrayName(sFormName, sScreenName); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, sDetailArrayList); + return oList; + } + + protected UserSession getUserSessionBean(HttpServletRequest request) { + HttpSession session = request.getSession(); + return (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + } + + protected void clearDetailLists(BaseForm form, ArrayList oDetailList) throws IllegalAccessException, InvocationTargetException { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + DetailScreen oDetailScreen = oIt.next(); + BeanUtils.copyProperty(form, oDetailScreen.get_DetailArrayName(), new ArrayList()); + } + } + + protected ArrayList getDetailArray(BaseForm oBaseForm) throws EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + ArrayList oDetailArray = new ArrayList(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + ArrayList oFieldList = new ArrayList(); + oFieldList = getFieldList(oFieldList, oBaseDetailBean.getClass()); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName)); + for (int iRecord = 0; iRecord < oBaseForm.getThisPageDetailCount(); iRecord++) { + if (null == oList) + break; + oBaseDetailBean = oList.get(iRecord); + if (null == oBaseDetailBean) + break; + Iterator oIt = oFieldList.iterator(); + while (oIt.hasNext()) { + try { + Field ob = oIt.next(); + System.out.println(String.valueOf("Record name ").concat(String.valueOf(iRecord))); + String sFieldName = ob.getName(); + System.out.println(String.valueOf("Field name ").concat(String.valueOf(sFieldName))); + if (sFieldName.startsWith("disab")) + continue; + if (ob.getType().getName().equals("java.lang.String")) { + String sValue = BeanUtils.getIndexedProperty(oBaseForm, sFieldName, iRecord); + BeanUtils.setProperty(oBaseDetailBean, sFieldName, sValue); + } + } catch (NoSuchMethodException noSuchMethodException) {} + } + oDetailArray.add(oBaseDetailBean); + } + return oDetailArray; + } + + private ArrayList getFieldList(ArrayList oFieldList, Class oClass) { + if (oClass == null) + return oFieldList; + Field[] oFields = oClass.getDeclaredFields(); + EnrgiseUtil.addToList(oFieldList, (Object[])oFields); + return getFieldList(oFieldList, oClass.getSuperclass()); + } + + protected void changeMode(BaseForm oBaseForm, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseForm, oBaseHeaderBean); + clearDetailLists(oBaseForm, ParamUtil.getDetailList(sFormName)); + UserSession oUser = getUserSessionBean(request); + oUser.putBaseHeaderVO(sFormName, null); + oUser.removeAllDetailVO(sFormName); + resetForm(oBaseForm); + } + + protected void checkHeaderNavigation(BaseForm oBaseForm, BaseHeaderVO oBaseHeaderVO) throws EnrgiseApplicationException { + long lPositionRequested = Long.parseLong(oBaseForm.getUserPositionRequested()); + if (null != oBaseHeaderVO) { + if (lPositionRequested <= 0L || lPositionRequested > oBaseHeaderVO.getTotalCount()) + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + oBaseForm.setPositionRequested(lPositionRequested); + } else { + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + } + } + + private void resetForm(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setPositionRequested(0L); + oBaseForm.setTotalCount(0L); + oBaseForm.setTotalDetailRecord(0L); + oBaseForm.setTotalHeaderRecord(0L); + oBaseForm.setHeaderPrimaryKey(null); + oBaseForm.setUserPageRequested(null); + oBaseForm.setDetailId(null); + oBaseForm.setStatus(null); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setChecked(null); + oBaseForm.setUserPositionRequested(null); + oBaseForm.setTotalCount(0L); + oBaseForm.setNewPageRequested(null); + oBaseForm.setItemChecked(null); + oBaseForm.setLovKey(null); + oBaseForm.setTxtSearchFields(null); + oBaseForm.setTxtDisplayFields(null); + oBaseForm.setTxtIndex(null); + oBaseForm.setThisPageDetailCount(0); + oBaseForm.setTotalPageCount(0L); + oBaseForm.setHeaderStatus(null); + oBaseForm.setButtonClicked(null); + oBaseForm.setButtonName(null); + oBaseForm.setDetailStartPage(0); + } + + protected void checkDetailNavigation(BaseForm oBaseForm, BaseDetailVO oBaseDetailVO) throws EnrgiseApplicationException { + boolean flag = false; + long lPageRequested = 0L; + if (EnrgiseUtil.checkString(oBaseForm.getUserPageRequested())) { + lPageRequested = Long.parseLong(oBaseForm.getUserPageRequested()); + } else { + flag = true; + } + if (null != oBaseDetailVO) { + if (flag == false) { + if (lPageRequested <= 0L || oBaseDetailVO.getTotalDetailRecord() <= oBaseDetailVO.getRecordsPerPage() * (lPageRequested - 1L)) + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + oBaseForm.setPageRequested(lPageRequested); + } else if (oBaseForm.getDetailList() != null) { + oBaseForm.setPageRequested(1L); + } else { + oBaseForm.setPageRequested(0L); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + } + } + + protected void enableDisable(BaseForm oBaseForm, ArrayList arylstFields, String enableFlag) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (null != arylstFields) { + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + StringBuffer sField = new StringBuffer(iterFields.next()); + String sProperty = String.valueOf("setDisab").concat(String.valueOf(sField.toString())); + try { + Class[] oCls = { Class.forName("java.lang.String") }; + Method oMethod = oBaseForm.getClass().getMethod(sProperty, oCls); + String sFlag = enableFlag.equals("D") ? "true" : "false"; + Object[] obj = { sFlag }; + oMethod.invoke(oBaseForm, obj); + } catch (NoSuchMethodException nse) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(nse.getMessage()))).concat(String.valueOf(" "))).concat(String.valueOf(sProperty))); + } + } + } + } + + protected void enableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "E"); + } catch (Exception exception) {} + } + + protected void disableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "D"); + } catch (Exception exception) {} + } + + protected ArrayList queryClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butSave"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList insertClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butInsert"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList executeClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butExecute"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList deleteClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + return arylstFields; + } + + protected ArrayList saveClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList refreshClicked() { + ArrayList arylstFields = new ArrayList(); + return arylstFields; + } + + protected ArrayList nextHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList prevHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList getDetailClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList addRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList delRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butDelRow"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected void controlHeaderNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList arylstFields = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalCount(); + long lRecordNum = oBaseForm.getPositionRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + } else { + if (lRecordNum == lTotalRecord) + arylstFields.add("butNextHeader"); + if (lRecordNum == 1L) + arylstFields.add("butPrevHeader"); + } + enableDisable(oBaseForm, arylstFields, "D"); + } + + protected void controlDetailNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalPageCount(); + long lRecordNum = oBaseForm.getPageRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + oDisableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + oDisableList.add("newPageRequested"); + oDisableList.add("butJumpDetail"); + } else if (lRecordNum == lTotalRecord) { + oEnableList.add("butPrevDetail"); + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oDisableList.add("butNextDetail"); + } else if (lRecordNum == 1L) { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + } else { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oEnableList.add("butPrevDetail"); + } + enableDisable(oBaseForm, oEnableList, "E"); + enableDisable(oBaseForm, oDisableList, "D"); + } + + protected void resetDetailPageData(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setTotalPageCount(0L); + } + + protected long calculateTotalDetailPage(String sFormName, String sScreenName, long lTotDetRecord) { + long totRecPerPage = ParamUtil.getDetailRecordPerPage(sFormName, sScreenName); + if (lTotDetRecord % totRecPerPage != 0L) + return lTotDetRecord / totRecPerPage + 1L; + return lTotDetRecord / totRecPerPage; + } + + protected BaseDetailVO getDetailData(BaseForm oBaseForm, String sFormName, String sScreenName, long lPageRequested, HttpServletRequest request, BaseBD oBaseBD, boolean bForce, UserSession oUser) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = oBaseForm.getHeaderPrimaryKey(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (!EnrgiseUtil.checkString(pseudoHeader)) { + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, sHeaderPrimaryKey, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } else { + BaseQueryVO oBaseQueryVO = getQueryVO((ActionForm)oBaseForm); + BeanUtils.copyProperties(oBaseQueryVO, oBaseForm); + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, oBaseQueryVO, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } + if (oBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oBaseForm.setPageRequested(lPageRequested); + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oBaseForm.setNewPageRequested(null); + oBaseForm.setPageRequested(lPageRequested); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + return oBaseDetailVO; + } + + protected void onLoad(ActionForm form, HttpServletRequest request, int actionName) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseDetailVO oBaseDetailVO = new BaseDetailVO(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setActionName(actionName); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oBaseDetailVO) { + ArrayList oDetailList = getDetailArrayList(oBaseForm, sFormName, sScreenName); + oThisPageVO.setODetailList(oDetailList); + } + oBaseBD.onLoadAction(oThisPageVO); + if (oThisPageVO != null) + if (oThisPageVO.getOHeaderBean() != null) + BeanUtils.copyProperties(form, oThisPageVO.getOHeaderBean()); + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + } + + protected void checkAccessInfo(UserSession oUserSession, String sComponentName, String sScreenMode, String sButtonName, int iActionName, String sWorkListId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + HashMap oSecMap = oUserSession.getAccessInfo(); + AccessBean objBean = (AccessBean)oSecMap.get(sComponentName); + if (!EnrgiseUtil.checkString(sWorkListId)) { + if (iActionName == 10 || iActionName == 14 || iActionName == 23) + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + if (iActionName == 8) + if (sScreenMode.equalsIgnoreCase("N")) { + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } else if (sScreenMode.equalsIgnoreCase("U")) { + if (!objBean.getUpdateFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.update"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + if (iActionName == 17 || iActionName == 15) + if (!objBean.getDeleteFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.delete"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + } + + protected String getComponentName(String sFormName) { + String sModFormName = sFormName.replace('.', ','); + int index = 0; + char g = ','; + char[] arrayModeFormName = sModFormName.toCharArray(); + System.out.println(sModFormName.substring(index)); + int k; + for (k = arrayModeFormName.length - 1; k > 0; k--) { + System.out.println(arrayModeFormName[k]); + if (arrayModeFormName[k] == g) { + index = k + 1; + break; + } + } + String sComponentName = sModFormName.substring(index, sModFormName.length()); + return sComponentName; + } + + public abstract ActionForward executeImpl(ActionMapping paramActionMapping, ActionForm paramActionForm, HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException; +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/action/DecrAction.java b/hrmsEjb/wenrgise/hrms/webtier/action/DecrAction.java new file mode 100644 index 0000000..977057d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/action/DecrAction.java @@ -0,0 +1,64 @@ +package wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DecrAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + int count = 0; + ArrayList oDetailArray = getDetailArray(oBaseForm); + try { + String[] itemChecked = oBaseForm.getItemChecked(); + String[] sStatuss = oBaseForm.getStatus(); + String[] sStartFields = BeanUtils.getArrayProperty(oBaseForm, "txtFromAmount"); + System.out.println(itemChecked.length); + for (int i = 0; i < itemChecked.length; i++) { + if (itemChecked[i].equals("Y")) { + count++; + String sStartField = sStartFields[i]; + for (int j = i + 1; j < itemChecked.length; j++) { + String sStatus = sStatuss[j]; + if (!sStatus.equals("D")) { + sStartFields[j] = sStartField; + BaseDetailBean oBaseDetailBean = oDetailArray.get(j); + oBaseDetailBean.setStatus("U"); + BeanUtils.setProperty(oBaseDetailBean, "txtFromAmount", sStartField); + oDetailArray.set(j, oBaseDetailBean); + break; + } + } + ((BaseDetailBean)oDetailArray.get(i)).setStatus("D"); + ((BaseDetailBean)oDetailArray.get(i)).setItemChecked("N"); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowDeleted() + 1); + } + } + } catch (NoSuchMethodException noSuchMethodException) {} + if (count == 0) + throw new EnrgiseApplicationException("wenrgise.common.norowselected"); + if (count > 0) + oBaseForm.setDetailDataChanged(true); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailArray); + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java b/hrmsEjb/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java new file mode 100644 index 0000000..9d9d463 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java @@ -0,0 +1,54 @@ +package wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.InvocationTargetException; +import java.util.Locale; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import jxl.Workbook; +import jxl.WorkbookSettings; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.ejb.business.HrmAdhocReportBO; +import wenrgise.hrms.webtier.form.HrmAdhocReportForm; + +public class HrmAdhocReportAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + response.setContentType("application/vnd.ms-excel"); + WorkbookSettings ws = new WorkbookSettings(); + ws.setLocale(new Locale("en", "EN")); + ServletOutputStream servletOutputStream = response.getOutputStream(); + HrmAdhocReportForm oForm = (HrmAdhocReportForm)form; + String sFormName = oForm.getClass().getName(); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, oForm); + HrmAdhocReportBO oHrmAdhocReportBO = new HrmAdhocReportBO(); + String reportName = oForm.getCode(); + StringBuffer fileName = new StringBuffer("\\"); + fileName.append(reportName); + fileName.append(".xls"); + response.setHeader("Content-disposition", String.valueOf(String.valueOf("attachment; filename=\"").concat(String.valueOf(fileName.toString()))).concat(String.valueOf("\""))); + try { + WritableWorkbook workbook = Workbook.createWorkbook((OutputStream)servletOutputStream, ws); + WritableSheet s = workbook.createSheet(reportName, 0); + oHrmAdhocReportBO.downloadAdhocReport((HrmAdhocReportHdrBean)oBaseHeaderBean, s); + workbook.write(); + workbook.close(); + servletOutputStream.flush(); + } catch (Exception e) { + e.printStackTrace(); + } + return mapping.findForward("success"); + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/action/HrmGenLoginAction.java b/hrmsEjb/wenrgise/hrms/webtier/action/HrmGenLoginAction.java new file mode 100644 index 0000000..e342d04 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/action/HrmGenLoginAction.java @@ -0,0 +1,101 @@ +package wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.CreateException; +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.ParamUtil; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmGenLoginAction extends Action { + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + Cookie[] cookies = request.getCookies(); + String sEmpId = null; + String sSiteId = null; + if (null != cookies) + for (int i = 0; i < cookies.length; i++) { + if ("EmpId".equals(cookies[i].getName())) + sEmpId = cookies[i].getValue(); + if ("SiteId".equals(cookies[i].getName())) + sSiteId = cookies[i].getValue(); + } + HttpSession oSes = request.getSession(); + HrmBaseForm oBaseForm = new HrmBaseForm(); + oBaseForm.setEmpId(sEmpId); + try { + populateUserInfo(sEmpId, sSiteId, oSes); + } catch (EnrgiseSystemException enrgiseSystemException) {} + return mapping.findForward("success"); + } + + private UserInfo populateUserInfo(String sEmpId, String sSiteId, HttpSession session) throws EnrgiseSystemException { + UserInfo oUserInfo = new UserInfo(); + try { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) { + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("HrmUserSession"); + oUser = oUserHome.create(); + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + oUserInfo = oHrmFacade.getLoginUserInfo(sEmpId, sSiteId); + oUser.setUserInfo(oUserInfo); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oSecHrmFacade = oSecHome.create(); + HrmThirdFacadeHome oThirdHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oThirdFacade = oThirdHome.create(); + HashMap oMap = new HashMap(); + oMap.put(ParamUtil.getModuleName(), oHrmFacade); + oMap.put("SecHRMS", oSecHrmFacade); + oMap.put("ThirdHRMS", oThirdFacade); + oUser.setModuleFacade(oMap); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + EmpInfoBean oEmpInfoBean = new EmpInfoBean(); + oEmpInfoBean.setModuleId("8"); + oEmpInfoBean.setEmpId(oUserInfo.getUserTypeId()); + SecurityBD oSecurityBD = new SecurityBD(); + ArrayList menu = oSecurityBD.getTreeSet(oEmpInfoBean); + HashMap secMap = oSecurityBD.getAccessInfo(oEmpInfoBean); + oUser.setAccessInfo(secMap); + session.setAttribute("menuList", menu); + session.setAttribute("userId", sEmpId); + } + } catch (RemoteException oRmt) { + oRmt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (CreateException oCrt) { + oCrt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (Exception oExCc) { + oExCc.printStackTrace(); + throw new EnrgiseSystemException(); + } + return oUserInfo; + } + + private String getUserId(String sEmpId) { + return null; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/action/ReportViewerAction.java b/hrmsEjb/wenrgise/hrms/webtier/action/ReportViewerAction.java new file mode 100644 index 0000000..d7d481b --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/action/ReportViewerAction.java @@ -0,0 +1,110 @@ +package wenrgise.hrms.webtier.action; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.sql.DataSource; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JasperFillManager; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.util.JRLoader; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class ReportViewerAction extends BaseAction { + private String sDbName = "jdbc/conDS"; + + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + JasperReportForm oForm = (JasperReportForm)form; + req.setAttribute("reportBody", createJasperPrint(req, oForm)); + return mapping.findForward("success"); + } + + protected JasperPrint createJasperPrint(HttpServletRequest req, JasperReportForm form) { + Map reportParams = null; + if (null != form) + reportParams = prepareReportInput(req, form); + createReportFileName(req, reportParams); + String repPath = req.getParameter("reportPath"); + System.out.println(String.valueOf("Report Path is ..").concat(String.valueOf(repPath))); + File reportFile = new File(req.getSession(false).getServletContext().getRealPath(repPath)); + if (!reportFile.exists()) + throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first."); + JasperReport jasperReport = null; + try { + jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath()); + } catch (JRException e) { + e.printStackTrace(); + throw new RuntimeException("Exception while loading the report", e); + } + if (null == jasperReport) + throw new RuntimeException(String.valueOf("Report not found in Path ").concat(String.valueOf(repPath))); + if (null == reportParams) + reportParams = new HashMap(2, 1.0F); + reportParams.put("ReportTitle", req.getParameter("title")); + reportParams.put("BaseDir", reportFile.getParentFile()); + reportParams.put("SUBREPORT_DIR", reportFile.getParentFile().getAbsolutePath()); + Connection conn = null; + JasperPrint jasperPrint = null; + try { + Object dataSourceObj = ServiceLocator.getLocator().getLocalService(this.sDbName); + DataSource oDataSource = (DataSource)dataSourceObj; + conn = oDataSource.getConnection(); + jasperPrint = JasperFillManager.fillReport(jasperReport, reportParams, conn); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Exception while filling the report with data", e); + } finally { + if (null != conn) + try { + conn.close(); + } catch (SQLException e) { + throw new RuntimeException("Exception while closing Connection ", e); + } + } + return jasperPrint; + } + + private void createReportFileName(HttpServletRequest req, Map reportParams) { + StringBuffer fileName = new StringBuffer("attachment; filename=\""); + String repPath = req.getParameter("reportPath"); + String reportName = req.getParameter("reportName"); + if ("C".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".csv\""); + } else if ("T".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".txt\""); + } else if ("P".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".pdf\""); + } else if ("E".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".xls\""); + } else { + fileName.append(reportName); + fileName.append(".html\""); + } + req.setAttribute("fileName", fileName.toString()); + } + + protected Map prepareReportInput(HttpServletRequest req, JasperReportForm form) { + Map reportInput = (Map)form.getData(req); + return reportInput; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java new file mode 100644 index 0000000..fc6c434 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java @@ -0,0 +1,23 @@ +package wenrgise.hrms.webtier.form; + +public class HrmAcademicQualRepForm extends HrmBaseForm { + private String butInsertData; + + private String disabbutInsertData; + + public String getButInsertData() { + return this.butInsertData; + } + + public void setButInsertData(String newButInsertData) { + this.butInsertData = newButInsertData; + } + + public String getDisabbutInsertData() { + return this.disabbutInsertData; + } + + public void setDisabbutInsertData(String newDisabbutInsertData) { + this.disabbutInsertData = newDisabbutInsertData; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java new file mode 100644 index 0000000..3859a7d --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java @@ -0,0 +1,305 @@ +package wenrgise.hrms.webtier.form; + +import java.util.ArrayList; + +public class HrmAdhocReportForm extends JasperReportForm { + private String query; + + private String butDownload; + + private String disabbutDownload; + + private String butQueryCode; + + private String disabbutQueryCode; + + private String id; + + private String code; + + private String query_desc; + + private String category_tag; + + private String param1; + + private String param2; + + private String param3; + + private String param4; + + private String param5; + + private String param6; + + private String param7; + + private String param8; + + private String param9; + + private String param10; + + private String paramval1; + + private String paramval2; + + private String paramval3; + + private String paramval4; + + private String paramval5; + + private String paramval6; + + private String paramval7; + + private String paramval8; + + private String paramval9; + + private String paramval10; + + private ArrayList arylstAdhocReport = new ArrayList(); + + public String getQuery() { + return this.query; + } + + public void setQuery(String newQuery) { + this.query = newQuery; + } + + public String getButDownload() { + return this.butDownload; + } + + public void setButDownload(String newButDownload) { + this.butDownload = newButDownload; + } + + public String getDisabbutDownload() { + return this.disabbutDownload; + } + + public void setDisabbutDownload(String newDisabbutDownload) { + this.disabbutDownload = newDisabbutDownload; + } + + public String getButQueryCode() { + return this.butQueryCode; + } + + public void setButQueryCode(String newButQueryCode) { + this.butQueryCode = newButQueryCode; + } + + public String getDisabbutQueryCode() { + return this.disabbutQueryCode; + } + + public void setDisabbutQueryCode(String newDisabbutQueryCode) { + this.disabbutQueryCode = newDisabbutQueryCode; + } + + public ArrayList getArylstAdhocReport() { + return this.arylstAdhocReport; + } + + public void setArylstAdhocReport(ArrayList newArylstAdhocReport) { + this.arylstAdhocReport = newArylstAdhocReport; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getQuery_desc() { + return this.query_desc; + } + + public void setQuery_desc(String query_desc) { + this.query_desc = query_desc; + } + + public String getCategory_tag() { + return this.category_tag; + } + + public void setCategory_tag(String category_tag) { + this.category_tag = category_tag; + } + + public String getParam1() { + return this.param1; + } + + public void setParam1(String param1) { + this.param1 = param1; + } + + public String getParam2() { + return this.param2; + } + + public void setParam2(String param2) { + this.param2 = param2; + } + + public String getParam3() { + return this.param3; + } + + public void setParam3(String param3) { + this.param3 = param3; + } + + public String getParam4() { + return this.param4; + } + + public void setParam4(String param4) { + this.param4 = param4; + } + + public String getParam5() { + return this.param5; + } + + public void setParam5(String param5) { + this.param5 = param5; + } + + public String getParam6() { + return this.param6; + } + + public void setParam6(String param6) { + this.param6 = param6; + } + + public String getParam7() { + return this.param7; + } + + public void setParam7(String param7) { + this.param7 = param7; + } + + public String getParam8() { + return this.param8; + } + + public void setParam8(String param8) { + this.param8 = param8; + } + + public String getParam9() { + return this.param9; + } + + public void setParam9(String param9) { + this.param9 = param9; + } + + public String getParam10() { + return this.param10; + } + + public void setParam10(String param10) { + this.param10 = param10; + } + + public String getParamval1() { + return this.paramval1; + } + + public void setParamval1(String paramval1) { + this.paramval1 = paramval1; + } + + public String getParamval2() { + return this.paramval2; + } + + public void setParamval2(String paramval2) { + this.paramval2 = paramval2; + } + + public String getParamval3() { + return this.paramval3; + } + + public void setParamval3(String paramval3) { + this.paramval3 = paramval3; + } + + public String getParamval4() { + return this.paramval4; + } + + public void setParamval4(String paramval4) { + this.paramval4 = paramval4; + } + + public String getParamval5() { + return this.paramval5; + } + + public void setParamval5(String paramval5) { + this.paramval5 = paramval5; + } + + public String getParamval6() { + return this.paramval6; + } + + public void setParamval6(String paramval6) { + this.paramval6 = paramval6; + } + + public String getParamval7() { + return this.paramval7; + } + + public void setParamval7(String paramval7) { + this.paramval7 = paramval7; + } + + public String getParamval8() { + return this.paramval8; + } + + public void setParamval8(String paramval8) { + this.paramval8 = paramval8; + } + + public String getParamval9() { + return this.paramval9; + } + + public void setParamval9(String paramval9) { + this.paramval9 = paramval9; + } + + public String getParamval10() { + return this.paramval10; + } + + public void setParamval10(String paramval10) { + this.paramval10 = paramval10; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java new file mode 100644 index 0000000..28ff27e --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java @@ -0,0 +1,23 @@ +package wenrgise.hrms.webtier.form; + +public class HrmAgeAnalysisForm extends JasperReportForm { + private String butInsertData; + + private String disabbutInsertData; + + public String getButInsertData() { + return this.butInsertData; + } + + public void setButInsertData(String newButInsertData) { + this.butInsertData = newButInsertData; + } + + public String getDisabbutInsertData() { + return this.disabbutInsertData; + } + + public void setDisabbutInsertData(String newDisabbutInsertData) { + this.disabbutInsertData = newDisabbutInsertData; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmBaseForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmBaseForm.java new file mode 100644 index 0000000..9a6af88 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmBaseForm.java @@ -0,0 +1,76 @@ +package wenrgise.hrms.webtier.form; + +import wenrgise.common.webtier.form.BaseForm; + +public class HrmBaseForm extends BaseForm { + private String txtDisplayFields; + + private String txtSearchFields; + + private String listRowClass; + + private String actionName; + + String addIncrValue; + + private String siteId; + + private String empId = ""; + + public String getTxtDisplayFields() { + return this.txtDisplayFields; + } + + public void setTxtDisplayFields(String newTxtDisplayFields) { + this.txtDisplayFields = newTxtDisplayFields; + } + + public String getTxtSearchFields() { + return this.txtSearchFields; + } + + public void setTxtSearchFields(String newTxtSearchFields) { + this.txtSearchFields = newTxtSearchFields; + } + + public String getListRowClass() { + if ("oddRow".equals(this.listRowClass)) { + this.listRowClass = "evenRow"; + } else { + this.listRowClass = "oddRow"; + } + return this.listRowClass; + } + + public String getActionName() { + return this.actionName; + } + + public void setActionName(String newActionName) { + this.actionName = newActionName; + } + + public String getAddIncrValue() { + return this.addIncrValue; + } + + public void setAddIncrValue(String newAddIncrValue) { + this.addIncrValue = newAddIncrValue; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java new file mode 100644 index 0000000..552aebd --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java @@ -0,0 +1,236 @@ +package wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; + +public class HrmMediclaimMasterForm extends HrmBaseForm { + private String claimCode; + + private String txtClass; + + private String cadre; + + private boolean allEmp; + + private String dependents; + + private String[] coverName; + + private String[] sumInsured; + + private ArrayList arrHrmMediclaimMstDtl = new ArrayList(); + + private String[] selectAll; + + private String[] salaryUnit; + + private String[] premium; + + private String[] ageFrom; + + private String[] ageTo; + + private String[] aicContribution; + + private String[] documentRequired; + + String txtClassId; + + String txtCadreId; + + String butTxtClass; + + String butCadre; + + private String allEmployeeApplicable; + + String disabbutTxtClass; + + String disabbutCadre; + + public String getDisabbutTxtClass() { + return this.disabbutTxtClass; + } + + public void setDisabbutTxtClass(String disabbutTxtClass) { + this.disabbutTxtClass = disabbutTxtClass; + } + + public String getDisabbutCadre() { + return this.disabbutCadre; + } + + public void setDisabbutCadre(String disabbutCadre) { + this.disabbutCadre = disabbutCadre; + } + + public String getTxtClassId() { + return this.txtClassId; + } + + public void setTxtClassId(String txtClassId) { + this.txtClassId = txtClassId; + } + + public String getTxtCadreId() { + return this.txtCadreId; + } + + public void setTxtCadreId(String txtCadreId) { + this.txtCadreId = txtCadreId; + } + + public String getButTxtClass() { + return this.butTxtClass; + } + + public void setButTxtClass(String butTxtClass) { + this.butTxtClass = butTxtClass; + } + + public String getButCadre() { + return this.butCadre; + } + + public void setButCadre(String butCadre) { + this.butCadre = butCadre; + } + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String claimCode) { + this.claimCode = claimCode; + } + + public String getTxtClass() { + return this.txtClass; + } + + public void setTxtClass(String txtClass) { + this.txtClass = txtClass; + } + + public String getCadre() { + return this.cadre; + } + + public void setCadre(String cadre) { + this.cadre = cadre; + } + + public boolean getAllEmp() { + return this.allEmp; + } + + public void setAllEmp(boolean allEmp) { + this.allEmp = allEmp; + } + + public String getDependents() { + return this.dependents; + } + + public void setDependents(String dependents) { + this.dependents = dependents; + } + + public String[] getCoverName() { + return this.coverName; + } + + public void setCoverName(String[] coverName) { + this.coverName = coverName; + } + + public String[] getSumInsured() { + return this.sumInsured; + } + + public void setSumInsured(String[] sumInsured) { + this.sumInsured = sumInsured; + } + + public ArrayList getArrHrmMediclaimMstDtl() { + return this.arrHrmMediclaimMstDtl; + } + + public void setArrHrmMediclaimMstDtl(ArrayList newArrHrmMediclaimMstDtl) { + this.arrHrmMediclaimMstDtl = newArrHrmMediclaimMstDtl; + } + + public String[] getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String[] newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getSalaryUnit() { + return this.salaryUnit; + } + + public void setSalaryUnit(String[] salaryUnit) { + this.salaryUnit = salaryUnit; + } + + public String[] getPremium() { + return this.premium; + } + + public void setPremium(String[] premium) { + this.premium = premium; + } + + public String[] getAgeFrom() { + return this.ageFrom; + } + + public void setAgeFrom(String[] ageFrom) { + this.ageFrom = ageFrom; + } + + public String[] getAgeTo() { + return this.ageTo; + } + + public void setAgeTo(String[] ageTo) { + this.ageTo = ageTo; + } + + public String[] getAicContribution() { + return this.aicContribution; + } + + public void setAicContribution(String[] aicContribution) { + this.aicContribution = aicContribution; + } + + public String[] getDocumentRequired() { + return this.documentRequired; + } + + public void setDocumentRequired(String[] documentRequired) { + this.documentRequired = documentRequired; + } + + public String getAllEmployeeApplicable() { + return this.allEmployeeApplicable; + } + + public void setAllEmployeeApplicable(String newAllEmployeeApplicable) { + this.allEmployeeApplicable = newAllEmployeeApplicable; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmMisReportForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmMisReportForm.java new file mode 100644 index 0000000..bc24233 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmMisReportForm.java @@ -0,0 +1,105 @@ +package wenrgise.hrms.webtier.form; + +import java.util.ArrayList; + +public class HrmMisReportForm extends JasperReportForm { + private String[] txtPosition; + + private String[] txtDesiredStrength; + + private String optSelect; + + private String[] butPosition; + + private ArrayList arrMisReport = new ArrayList(); + + private String[] txtPositionId; + + private String locationCode; + + private String butGenRep; + + private String disabbutGenRep; + + private String txtYearMonth; + + public String[] getTxtPosition() { + return this.txtPosition; + } + + public void setTxtPosition(String[] newTxtPosition) { + this.txtPosition = newTxtPosition; + } + + public String[] getTxtDesiredStrength() { + return this.txtDesiredStrength; + } + + public void setTxtDesiredStrength(String[] newTxtDesiredStrength) { + this.txtDesiredStrength = newTxtDesiredStrength; + } + + public String getOptSelect() { + return this.optSelect; + } + + public void setOptSelect(String newOptSelect) { + this.optSelect = newOptSelect; + } + + public String[] getButPosition() { + return this.butPosition; + } + + public void setButPosition(String[] newButPosition) { + this.butPosition = newButPosition; + } + + public ArrayList getArrMisReport() { + return this.arrMisReport; + } + + public void setArrMisReport(ArrayList newArrMisReport) { + this.arrMisReport = newArrMisReport; + } + + public String[] getTxtPositionId() { + return this.txtPositionId; + } + + public void setTxtPositionId(String[] newTxtPositionId) { + this.txtPositionId = newTxtPositionId; + } + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } + + public String getButGenRep() { + return this.butGenRep; + } + + public void setButGenRep(String newButGenRep) { + this.butGenRep = newButGenRep; + } + + public String getDisabbutGenRep() { + return this.disabbutGenRep; + } + + public void setDisabbutGenRep(String newDisabbutGenRep) { + this.disabbutGenRep = newDisabbutGenRep; + } + + public String getTxtYearMonth() { + return this.txtYearMonth; + } + + public void setTxtYearMonth(String newTxtYearMonth) { + this.txtYearMonth = newTxtYearMonth; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java new file mode 100644 index 0000000..1ebf155 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java @@ -0,0 +1,195 @@ +package wenrgise.hrms.webtier.form; + +import java.util.ArrayList; + +public class HrmMyWorkflowForm extends HrmBaseForm { + private String workflowType; + + private String txtStatus; + + private String id; + + private String requestType; + + private String selectAll; + + private String[] requestId; + + private String[] requestor; + + private String[] requestorName; + + private String[] approver; + + private String[] approverName; + + private String[] level; + + private String[] docDtlId; + + private String employeeNoId; + + private String butId; + + private String disabbutId; + + private String butAct; + + private String disabbutAct; + + private String disabselectAll; + + private ArrayList arrHrmMyWorkflowDtl = new ArrayList(); + + public String getWorkflowType() { + return this.workflowType; + } + + public void setWorkflowType(String newWorkflowType) { + this.workflowType = newWorkflowType; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getRequestType() { + return this.requestType; + } + + public void setRequestType(String newRequestType) { + this.requestType = newRequestType; + } + + public String[] getRequestId() { + return this.requestId; + } + + public void setRequestId(String[] newRequestId) { + this.requestId = newRequestId; + } + + public String[] getRequestor() { + return this.requestor; + } + + public void setRequestor(String[] newRequestor) { + this.requestor = newRequestor; + } + + public String[] getRequestorName() { + return this.requestorName; + } + + public void setRequestorName(String[] newRequestorName) { + this.requestorName = newRequestorName; + } + + public String[] getApprover() { + return this.approver; + } + + public void setApprover(String[] newApprover) { + this.approver = newApprover; + } + + public String[] getApproverName() { + return this.approverName; + } + + public void setApproverName(String[] newApproverName) { + this.approverName = newApproverName; + } + + public String[] getLevel() { + return this.level; + } + + public void setLevel(String[] newLevel) { + this.level = newLevel; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getButAct() { + return this.butAct; + } + + public void setButAct(String butAct) { + this.butAct = butAct; + } + + public String getDisabbutAct() { + return this.disabbutAct; + } + + public void setDisabbutAct(String disabbutAct) { + this.disabbutAct = disabbutAct; + } + + public String[] getDocDtlId() { + return this.docDtlId; + } + + public void setDocDtlId(String[] docDtlId) { + this.docDtlId = docDtlId; + } + + public ArrayList getArrHrmMyWorkflowDtl() { + return this.arrHrmMyWorkflowDtl; + } + + public void setArrHrmMyWorkflowDtl(ArrayList arrHrmMyWorkflowDtl) { + this.arrHrmMyWorkflowDtl = arrHrmMyWorkflowDtl; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String selectAll) { + this.selectAll = selectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String disabselectAll) { + this.disabselectAll = disabselectAll; + } + + public String getButId() { + return this.butId; + } + + public void setButId(String newButId) { + this.butId = newButId; + } + + public String getDisabbutId() { + return this.disabbutId; + } + + public void setDisabbutId(String disabbutId) { + this.disabbutId = disabbutId; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java new file mode 100644 index 0000000..3b962fa --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; + +public class HrmOrgDistMstForm extends HrmBaseForm { + private String[] txtDistrictCode; + + private String[] txtDistrictName; + + private String selectAll; + + private ArrayList arrHrmDistrictDtl = new ArrayList(); + + private String disabselectAll; + + private String disabtxtDistrictCode; + + private String disabtxtDistrictName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtDistrictCode() { + return this.txtDistrictCode; + } + + public void setTxtDistrictCode(String[] newTxtDistrictCode) { + this.txtDistrictCode = newTxtDistrictCode; + } + + public String[] getTxtDistrictName() { + return this.txtDistrictName; + } + + public void setTxtDistrictName(String[] newTxtDistrictName) { + this.txtDistrictName = newTxtDistrictName; + } + + public String getSelectAll() { + return this.selectAll; + } + + public ArrayList getArrHrmDistrictDtl() { + return this.arrHrmDistrictDtl; + } + + public void setArrHrmDistrictDtl(ArrayList newArrHrmDistrictDtl) { + this.arrHrmDistrictDtl = newArrHrmDistrictDtl; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtDistrictCode() { + return this.disabtxtDistrictCode; + } + + public void setDisabtxtDistrictCode(String newDisabtxtDistrictCode) { + this.disabtxtDistrictCode = newDisabtxtDistrictCode; + } + + public String getDisabtxtDistrictName() { + return this.disabtxtDistrictName; + } + + public void setDisabtxtDistrictName(String newDisabtxtDistrictName) { + this.disabtxtDistrictName = newDisabtxtDistrictName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java new file mode 100644 index 0000000..383d08a --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java @@ -0,0 +1,86 @@ +package wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; + +public class HrmOrgTehMstForm extends HrmBaseForm { + private String[] txtTehsilCode; + + private String[] txtTehsilName; + + private String selectAll; + + private ArrayList arrHrmTehsilDtl = new ArrayList(); + + private String disabselectAll; + + private String disabtxtTehsilCode; + + private String disabtxtTehsilName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtTehsilCode() { + return this.txtTehsilCode; + } + + public void setTxtTehsilCode(String[] newTxtTehsilCode) { + this.txtTehsilCode = newTxtTehsilCode; + } + + public String[] getTxtTehsilName() { + return this.txtTehsilName; + } + + public void setTxtTehsilName(String[] newTxtTehsilName) { + this.txtTehsilName = newTxtTehsilName; + } + + public String getSelectAll() { + return this.selectAll; + } + + public ArrayList getArrHrmTehsilDtl() { + return this.arrHrmTehsilDtl; + } + + public void setArrHrmTehsilDtl(ArrayList newArrHrmTehsilDtl) { + this.arrHrmTehsilDtl = newArrHrmTehsilDtl; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtTehsilCode() { + return this.disabtxtTehsilCode; + } + + public void setDisabtxtTehsilCode(String newDisabtxtTehsilCode) { + this.disabtxtTehsilCode = newDisabtxtTehsilCode; + } + + public String getDisabtxtTehsilName() { + return this.disabtxtTehsilName; + } + + public void setDisabtxtTehsilName(String newDisabtxtTehsilName) { + this.disabtxtTehsilName = newDisabtxtTehsilName; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java new file mode 100644 index 0000000..e7de3ac --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java @@ -0,0 +1,123 @@ +package wenrgise.hrms.webtier.form; + +public class HrmRetireForecastForm extends HrmBaseForm { + private String fromDate; + + private String toDate; + + private String butFromDate; + + private String disabbutFromDate; + + private String disabbutToDate; + + private String butGenReport; + + private String disabbutGenReport; + + private String butViewReport; + + private String disabbutViewReport; + + private String butInsertData; + + private String disabbutInsertData; + + private String flag1; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getButGenReport() { + return this.butGenReport; + } + + public void setButGenReport(String newButGenReport) { + this.butGenReport = newButGenReport; + } + + public String getDisabbutGenReport() { + return this.disabbutGenReport; + } + + public void setDisabbutGenReport(String newDisabbutGenReport) { + this.disabbutGenReport = newDisabbutGenReport; + } + + public String getButViewReport() { + return this.butViewReport; + } + + public void setButViewReport(String newButViewReport) { + this.butViewReport = newButViewReport; + } + + public String getDisabbutViewReport() { + return this.disabbutViewReport; + } + + public void setDisabbutViewReport(String newDisabbutViewReport) { + this.disabbutViewReport = newDisabbutViewReport; + } + + public String getButInsertData() { + return this.butInsertData; + } + + public void setButInsertData(String newButInsertData) { + this.butInsertData = newButInsertData; + } + + public String getDisabbutInsertData() { + return this.disabbutInsertData; + } + + public void setDisabbutInsertData(String newDisabbutInsertData) { + this.disabbutInsertData = newDisabbutInsertData; + } + + public String getFlag1() { + return this.flag1; + } + + public void setFlag1(String newFlag1) { + this.flag1 = newFlag1; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java new file mode 100644 index 0000000..1bb0830 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java @@ -0,0 +1,266 @@ +package wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; + +public class HrmRoasterEntryForm extends HrmBaseForm { + private String txtRoasterCode; + + private String txtRoasterDescription; + + private String roasterCodeId; + + private String disabtxtRoasterCode; + + private String selectAll; + + private String butRoasterCode; + + private String disabbutRoasterCode; + + private String disabtxtRoasterDescription; + + private String[] txtEmployeeNo; + + private String[] txtEmployeeName; + + private String[] txtAppointmentDate; + + private String[] txtDob; + + private String[] txtCategory; + + private String[] txtRoasterPoint; + + private String[] txtCategoryAsPerRoaster; + + private String[] socialStatus; + + private String[] empNoId; + + private String[] txtCategoryId; + + private String butCategoryAsPerRoaster; + + private String disabbutCategoryAsPerRoaster; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private ArrayList arrHrmRoasterEntryDtl = new ArrayList(); + + private String disabselectAll; + + private String[] entryMode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String selectAll) { + this.selectAll = selectAll; + } + + public ArrayList getArrHrmRoasterEntryDtl() { + return this.arrHrmRoasterEntryDtl; + } + + public void setArrHrmRoasterEntryDtl(ArrayList arrHrmRoasterEntryDtl) { + this.arrHrmRoasterEntryDtl = arrHrmRoasterEntryDtl; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String disabselectAll) { + this.disabselectAll = disabselectAll; + } + + public String getTxtRoasterCode() { + return this.txtRoasterCode; + } + + public void setTxtRoasterCode(String txtRoasterCode) { + this.txtRoasterCode = txtRoasterCode; + } + + public String getTxtRoasterDescription() { + return this.txtRoasterDescription; + } + + public void setTxtRoasterDescription(String newTxtRoasterDescription) { + this.txtRoasterDescription = newTxtRoasterDescription; + } + + public String[] getTxtRoasterPoint() { + return this.txtRoasterPoint; + } + + public void setTxtRoasterPoint(String[] txtRoasterPoint) { + this.txtRoasterPoint = txtRoasterPoint; + } + + public String[] getTxtCategoryAsPerRoaster() { + return this.txtCategoryAsPerRoaster; + } + + public void setTxtCategoryAsPerRoaster(String[] txtCategoryAsPerRoaster) { + this.txtCategoryAsPerRoaster = txtCategoryAsPerRoaster; + } + + public String getDisabtxtRoasterDescription() { + return this.disabtxtRoasterDescription; + } + + public void setDisabtxtRoasterDescription(String newDisabtxtRoasterDescription) { + this.disabtxtRoasterDescription = newDisabtxtRoasterDescription; + } + + public String getDisabtxtRoasterCode() { + return this.disabtxtRoasterCode; + } + + public void setDisabtxtRoasterCode(String newDisabtxtRoasterCode) { + this.disabtxtRoasterCode = newDisabtxtRoasterCode; + } + + public String[] getSocialStatus() { + return this.socialStatus; + } + + public void setSocialStatus(String[] socialStatus) { + this.socialStatus = socialStatus; + } + + public String[] getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String[] empNoId) { + this.empNoId = empNoId; + } + + public String[] getTxtCategoryId() { + return this.txtCategoryId; + } + + public void setTxtCategoryId(String[] txtCategoryId) { + this.txtCategoryId = txtCategoryId; + } + + public String getRoasterCodeId() { + return this.roasterCodeId; + } + + public void setRoasterCodeId(String newRoasterCodeId) { + this.roasterCodeId = newRoasterCodeId; + } + + public String getButRoasterCode() { + return this.butRoasterCode; + } + + public void setButRoasterCode(String newButRoasterCode) { + this.butRoasterCode = newButRoasterCode; + } + + public String getDisabbutRoasterCode() { + return this.disabbutRoasterCode; + } + + public void setDisabbutRoasterCode(String newDisabbutRoasterCode) { + this.disabbutRoasterCode = newDisabbutRoasterCode; + } + + public String getButCategoryAsPerRoaster() { + return this.butCategoryAsPerRoaster; + } + + public void setButCategoryAsPerRoaster(String newButCategoryAsPerRoaster) { + this.butCategoryAsPerRoaster = newButCategoryAsPerRoaster; + } + + public String getDisabbutCategoryAsPerRoaster() { + return this.disabbutCategoryAsPerRoaster; + } + + public void setDisabbutCategoryAsPerRoaster(String newDisabbutCategoryAsPerRoaster) { + this.disabbutCategoryAsPerRoaster = newDisabbutCategoryAsPerRoaster; + } + + public String[] getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String[] txtEmployeeNo) { + this.txtEmployeeNo = txtEmployeeNo; + } + + public String[] getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String[] txtEmployeeName) { + this.txtEmployeeName = txtEmployeeName; + } + + public String[] getTxtAppointmentDate() { + return this.txtAppointmentDate; + } + + public void setTxtAppointmentDate(String[] txtAppointmentDate) { + this.txtAppointmentDate = txtAppointmentDate; + } + + public String[] getTxtDob() { + return this.txtDob; + } + + public void setTxtDob(String[] txtDob) { + this.txtDob = txtDob; + } + + public String[] getTxtCategory() { + return this.txtCategory; + } + + public void setTxtCategory(String[] txtCategory) { + this.txtCategory = txtCategory; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String[] getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String[] entryMode) { + this.entryMode = entryMode; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/JasperReportForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/JasperReportForm.java new file mode 100644 index 0000000..b104fb6 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/JasperReportForm.java @@ -0,0 +1,44 @@ +package wenrgise.hrms.webtier.form; + +import java.io.Serializable; +import java.lang.reflect.Method; +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; + +public class JasperReportForm extends HrmBaseForm { + private static final long serialVersionUID = 19981017L; + + private String downloadOption; + + public String getDownloadOption() { + return this.downloadOption; + } + + public void setDownloadOption(String newDownloadOption) { + this.downloadOption = newDownloadOption; + } + + public Serializable getData(HttpServletRequest req) { + HashMap data = new HashMap(); + Class formBeanClass = getClass(); + Method[] methods = formBeanClass.getDeclaredMethods(); + StringBuffer fieldName = new StringBuffer(); + for (int i = 0; i < methods.length; i++) { + String methodName = methods[i].getName(); + if (methodName.startsWith("get") && ( + methods[i].getParameterTypes()).length <= 0) + try { + Object val = methods[i].invoke(this, null); + if (null != val && val instanceof String && ((String)val).trim().length() == 0) + val = null; + fieldName.append(methodName.substring(3, 4).toLowerCase()); + fieldName.append(methodName.substring(4)); + data.put(fieldName.toString(), val); + fieldName.delete(0, fieldName.length()); + } catch (Exception e) { + e.printStackTrace(); + } + } + return data; + } +} diff --git a/hrmsEjb/wenrgise/hrms/webtier/form/ReportInputForm.java b/hrmsEjb/wenrgise/hrms/webtier/form/ReportInputForm.java new file mode 100644 index 0000000..fd89c83 --- /dev/null +++ b/hrmsEjb/wenrgise/hrms/webtier/form/ReportInputForm.java @@ -0,0 +1,33 @@ +package wenrgise.hrms.webtier.form; + +public class ReportInputForm extends JasperReportForm { + private String txtYear; + + private String txtMonth; + + private String disabtxtMonth; + + public String getTxtYear() { + return this.txtYear; + } + + public void setTxtYear(String newTxtYear) { + this.txtYear = newTxtYear; + } + + public String getTxtMonth() { + return this.txtMonth; + } + + public void setTxtMonth(String newTxtMonth) { + this.txtMonth = newTxtMonth; + } + + public String getDisabtxtMonth() { + return this.disabtxtMonth; + } + + public void setDisabtxtMonth(String newDisabtxtMonth) { + this.disabtxtMonth = newDisabtxtMonth; + } +} diff --git a/hrmsEjb/wenrgise/report/excel/ExcelReport.java b/hrmsEjb/wenrgise/report/excel/ExcelReport.java new file mode 100644 index 0000000..07a9b78 --- /dev/null +++ b/hrmsEjb/wenrgise/report/excel/ExcelReport.java @@ -0,0 +1,97 @@ +package wenrgise.report.excel; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Locale; +import javax.sql.DataSource; +import jxl.WorkbookSettings; +import jxl.format.CellFormat; +import jxl.write.Label; +import jxl.write.Number; +import jxl.write.NumberFormats; +import jxl.write.WritableCell; +import jxl.write.WritableCellFormat; +import jxl.write.WritableFont; +import jxl.write.WritableSheet; +import wenrgise.common.utility.ServiceLocator; + +class ExcelReport { + WorkbookSettings ws = null; + + WritableSheet s = null; + + public ExcelReport() { + this.ws = new WorkbookSettings(); + this.ws.setLocale(new Locale("en", "EN")); + } + + public WorkbookSettings getWorkBookSetting() { + return this.ws; + } + + public void writeDataSheet(WritableSheet s, ArrayList heading, String query) { + DataSource oDataSource = null; + Statement stmt = null; + Connection conn = null; + ResultSet results = null; + DecimalFormat Currency = new DecimalFormat("0.00"); + try { + oDataSource = (DataSource)ServiceLocator.getLocator().getService("jdbc/conDS"); + conn = oDataSource.getConnection(); + stmt = conn.createStatement(); + results = stmt.executeQuery(query); + int rowPos = 0; + WritableFont wf = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); + WritableCellFormat cf = new WritableCellFormat(wf); + cf.setWrap(false); + int colPos = -1; + Iterator itrHeading = heading.iterator(); + while (itrHeading.hasNext()) { + colPos++; + Heading oHeading = itrHeading.next(); + String sHeading = oHeading.getName(); + s.addCell((WritableCell)new Label(colPos, rowPos, sHeading, (CellFormat)cf)); + } + wf = new WritableFont(WritableFont.ARIAL, 8, WritableFont.NO_BOLD); + while (results.next()) { + rowPos++; + colPos = -1; + Iterator itrHeading1 = heading.iterator(); + while (itrHeading1.hasNext()) { + colPos++; + Heading oHeading1 = itrHeading1.next(); + String sHeading1 = oHeading1.getName(); + int sType = oHeading1.getType(); + if (sType == 1) { + cf = new WritableCellFormat(wf); + cf.setWrap(false); + s.addCell((WritableCell)new Label(colPos, rowPos, results.getString(sHeading1), (CellFormat)cf)); + continue; + } + if (sType == 2) { + cf = new WritableCellFormat(wf, NumberFormats.FLOAT); + cf.setWrap(false); + s.addCell((WritableCell)new Number(colPos, rowPos, results.getBigDecimal(sHeading1).floatValue(), (CellFormat)cf)); + } + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + if (stmt != null) + stmt.close(); + if (results != null) + results.close(); + if (conn != null) + conn.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/hrmsEjb/wenrgise/report/excel/ExcelReportInformation.java b/hrmsEjb/wenrgise/report/excel/ExcelReportInformation.java new file mode 100644 index 0000000..6f81a3c --- /dev/null +++ b/hrmsEjb/wenrgise/report/excel/ExcelReportInformation.java @@ -0,0 +1,87 @@ +package wenrgise.report.excel; + +import java.util.ArrayList; + +public class ExcelReportInformation { + private String reportName; + + private String reportQuery; + + private ArrayList reportHeader; + + public int TYPE_STRING = 1; + + public int TYPE_BIG_DECIMAL = 2; + + public ExcelReportInformation(String sReportName) { + this.reportName = sReportName; + } + + public String getReportQuery(String inputparam1, String inputparam2) { + if (this.reportName.equalsIgnoreCase("EMP_REPORT")) { + this.reportQuery = "SELECT EMP_NO,EMP_NAME FROM EMP_MAST"; + } else if (this.reportName.equalsIgnoreCase("PF_REPORT")) { + this.reportQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("SELECT hep.emp_no EMP_NO,\n decode(hep.emp_type,'D','DIRECT','S','SECONDED',hep.emp_type) EMP_TYPE,\n hep.first_name || ' ' || hep.middle_name || ' ' || hep.last_name EMP_NAME,\n hep.pf_number PF_NUMBER,\n hist.basic EMP_BASIC,\n nvl(hist.pf_dedn, 0) EPF,\n funcchecklimit(hist.basic,6500) COMPANY_BASIC,\n nvl(hist.pf_dedn,0)- (case when add_months(hep.dob,58*12) >= to_date(").concat(String.valueOf(inputparam1))).concat(String.valueOf(",'yyyymm')\n"))).concat(String.valueOf(" then round(funcchecklimit(hist.basic,6500)*8.33/100)\n"))).concat(String.valueOf(" else 0 end) CPF,\n"))).concat(String.valueOf(" (case when add_months(hep.dob,58*12) >= to_date("))).concat(String.valueOf(inputparam1))).concat(String.valueOf(",'yyyymm')\n"))).concat(String.valueOf(" then round(funcchecklimit(hist.basic,6500)*8.33/100)\n"))).concat(String.valueOf(" else 0 end) FPF,\n"))).concat(String.valueOf(" 2*nvl(hist.pf_dedn, 0) total\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" FROM hrm_emp_pers hep,\n"))).concat(String.valueOf(" pay_last_12mth_hist hist,\n"))).concat(String.valueOf(" pay_emp_ytm_mast peym,\n"))).concat(String.valueOf(" gen_site_mst gsm\n"))).concat(String.valueOf(" WHERE hep.id = hist.e_per_dtl_id\n"))).concat(String.valueOf(" and hist.e_per_dtl_id = peym.e_per_dtl_id\n"))).concat(String.valueOf(" and hist.pf_dedn > 0\n"))).concat(String.valueOf(" AND hist.loc_code = gsm.code\n"))).concat(String.valueOf(" AND hist.yyyymm = "))).concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and hep.emp_type='"))).concat(String.valueOf(inputparam2))).concat(String.valueOf("'\n"))).concat(String.valueOf("\n"))).concat(String.valueOf("order by hep.emp_type,to_number(hep.pf_number)")); + } else if (this.reportName.equalsIgnoreCase("PAY_SUMMARY_REPORT")) { + this.reportQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("SELECT\n gsm.name as BRANCH,\n case when gsm.id in (100200500000001,\n 200200500000100,\n 100200500000039,\n 200200500000121,\n 200200500000146,\n 200200500000094,\n 200200500000112,\n 200200500000040,\n 200200500000042,\n 200200400000045) then\n gsm.name else\n pgsm.name end\n as REGION,\n H.EMP_NO EMP_NO,\n h.FIRST_NAME || ' ' || h.MIDDLE_NAME || ' ' || h.LAST_NAME as EMPNAME,\n h.emp_branch EMP_CATAGORY,\n gm.name DEPARTMENT,\n h.pf_number PF_NUMBER,\n nvl(hist.basic, 0) AS BASIC,\n hist.hra+hist.addl_hra AS HRA,\n hist.conv_allow AS CONV_ALLOW,\n hist.fixed_allow AS FIXED_ALLOW,\n nvl(hist.misc_pay, 0) as INCENTIVE,\n (case when hist.e_per_dtl_id in (select pi.e_per_dtl_id\n from pay_image pi\n where pi.yyyymm=").concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and pi.pay_code_id in (select pc.id from pay_codes pc where pc.pay_code in(123))\n"))).concat(String.valueOf(" ) then\n"))).concat(String.valueOf(" (select pi.txn_amt\n"))).concat(String.valueOf(" from pay_image pi\n"))).concat(String.valueOf(" where pi.yyyymm="))).concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and pi.pay_code_id in (select pc.id from pay_codes pc where pc.pay_code in(123))\n"))).concat(String.valueOf(" and pi.e_per_dtl_id=hist.e_per_dtl_id\n"))).concat(String.valueOf(" ) else 0.00 end) HRA_REIMB,\n"))).concat(String.valueOf(" hist.OUTSTATION_ALLOW as OUTSTATION_ALLOW,\n"))).concat(String.valueOf(" hist.HILL_STAN_ALLOW,\n"))).concat(String.valueOf(" hist.CHARGE_ALLOW,\n"))).concat(String.valueOf(" hist.flat_maint_allow AS FLAT_MAINT_ALLOW,\n"))).concat(String.valueOf(" hist.ENTERTAIN_ALLOW,\n"))).concat(String.valueOf(" nvl(hist.site_allow,0) as SITE_ALLOW,\n"))).concat(String.valueOf(" nvl(hist.special_allow,0) as SPECIAL_ALLOW,\n"))).concat(String.valueOf(" nvl(hist.lwp_days, 0) as LWP_DAYS,\n"))).concat(String.valueOf(" hist.gross_earning AS GROSSEARN,\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" hist.PF_DEDN as PF,\n"))).concat(String.valueOf(" hist.prof_tax AS PROFTAX,\n"))).concat(String.valueOf(" hist.ESI_DEDN as ESI,\n"))).concat(String.valueOf(" hist.LWF as LWF,\n"))).concat(String.valueOf(" nvl(hist.MTH_INC_TAX, 0) AS INCOMETAX,\n"))).concat(String.valueOf(" nvl(hist.pl_prin, 0) as PL_PRIN,\n"))).concat(String.valueOf(" nvl(hist.pl_int, 0) as PL_INT,\n"))).concat(String.valueOf(" nvl(hist.cdl_prin, 0) as CDL_PRIN,\n"))).concat(String.valueOf(" nvl(hist.cdl_int, 0) as CDL_INT,\n"))).concat(String.valueOf(" nvl(hist.hbl_prin, 0) as HBL_PRIN,\n"))).concat(String.valueOf(" nvl(hist.hbl_int, 0) as HBL_INT,\n"))).concat(String.valueOf(" nvl(hist.adv_rel, 0) as ADV_REL,\n"))).concat(String.valueOf(" hist.gross_deduction AS TOTALDEDN,\n"))).concat(String.valueOf(" hist.net_earning AS NETEARNING\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" FROM hrm_emp_pers h, pay_last_12mth_hist hist, pay_emp_ytm_mast mast,gen_wrkgrp_mst gm,\n"))).concat(String.valueOf(" (SELECT H.ID, D.NAME, D.CODE, D.ID AS GRADEID\n"))).concat(String.valueOf(" FROM HRM_CLASS_DTL D,\n"))).concat(String.valueOf(" HRM_CLASS_MST M,\n"))).concat(String.valueOf(" HRM_EMP_CLASS_MAP MAP,\n"))).concat(String.valueOf(" HRM_EMP_PERS H\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" WHERE D.CLS_MST_ID = M.ID\n"))).concat(String.valueOf(" AND M.CODE = 20\n"))).concat(String.valueOf(" AND MAP.CLS_DT_ID = D.ID\n"))).concat(String.valueOf(" AND H.ID = MAP.E_PER_DTL_ID) GRADE,GEN_SITE_MST GSM,\n"))).concat(String.valueOf(" GEN_SITE_MST PGSM\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" where hist.E_PER_DTL_ID = H.ID\n"))).concat(String.valueOf(" and mast.e_per_dtl_id = h.id\n"))).concat(String.valueOf(" and h.id=GRADE.ID\n"))).concat(String.valueOf(" AND hist.loc_code = GSM.CODE(+)\n"))).concat(String.valueOf(" AND hist.dept_code = gm.code(+)\n"))).concat(String.valueOf(" AND GSM.Parent_Id=PGSM.ID\n"))).concat(String.valueOf(" AND hist.YYYYMM ="))).concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and h.emp_type = '"))).concat(String.valueOf(inputparam2))).concat(String.valueOf("'\n"))).concat(String.valueOf("order by PGSM.Name,EMPNAME")); + } + return this.reportQuery; + } + + public ArrayList getReportHeader() { + this.reportHeader = new ArrayList(); + if (this.reportName.equalsIgnoreCase("EMP_REPORT")) { + this.reportHeader.add(new Heading("EMP_NO", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_NAME", this.TYPE_STRING)); + } else if (this.reportName.equalsIgnoreCase("PF_REPORT")) { + this.reportHeader.add(new Heading("EMP_NO", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_TYPE", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_NAME", this.TYPE_STRING)); + this.reportHeader.add(new Heading("PF_NUMBER", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_BASIC", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("EPF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("COMPANY_BASIC", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CPF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("FPF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("TOTAL", this.TYPE_BIG_DECIMAL)); + } else if (this.reportName.equalsIgnoreCase("PAY_SUMMARY_REPORT")) { + this.reportHeader.add(new Heading("BRANCH", this.TYPE_STRING)); + this.reportHeader.add(new Heading("REGION", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_NO", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMPNAME", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_CATAGORY", this.TYPE_STRING)); + this.reportHeader.add(new Heading("DEPARTMENT", this.TYPE_STRING)); + this.reportHeader.add(new Heading("PF_NUMBER", this.TYPE_STRING)); + this.reportHeader.add(new Heading("BASIC", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HRA", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CONV_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("FIXED_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("INCENTIVE", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HRA_REIMB", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("OUTSTATION_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HILL_STAN_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CHARGE_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("FLAT_MAINT_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("ENTERTAIN_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("SITE_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("SPECIAL_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("LWP_DAYS", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("GROSSEARN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PROFTAX", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("ESI", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("LWF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("INCOMETAX", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PL_PRIN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PL_INT", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CDL_PRIN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CDL_INT", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HBL_PRIN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HBL_INT", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("ADV_REL", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("TOTALDEDN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("NETEARNING", this.TYPE_BIG_DECIMAL)); + } + return this.reportHeader; + } +} diff --git a/hrmsEjb/wenrgise/report/excel/ExcelReportServlet.java b/hrmsEjb/wenrgise/report/excel/ExcelReportServlet.java new file mode 100644 index 0000000..105c06a --- /dev/null +++ b/hrmsEjb/wenrgise/report/excel/ExcelReportServlet.java @@ -0,0 +1,63 @@ +package wenrgise.report.excel; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.zip.GZIPOutputStream; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import jxl.Workbook; +import jxl.WorkbookSettings; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; + +public class ExcelReportServlet extends HttpServlet { + private static final String CONTENT_TYPE_EXCEL = "application/vnd.ms-excel"; + + private static final String CONTENT_TYPE_ZIP = "application/zip"; + + public void init(ServletConfig config) throws ServletException { + super.init(config); + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + processRequest(request, response); + } + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + processRequest(request, response); + } + + private boolean isGzipSupported(HttpServletRequest request) { + String encodings = request.getHeader("Accept-Encoding"); + return (encodings != null && encodings.indexOf("gzip") != -1); + } + + protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + response.setContentType("application/zip"); + String reportName = request.getParameter("reportname"); + String inputParam1 = request.getParameter("inputparam1"); + String inputParam2 = request.getParameter("inputparam2"); + ServletOutputStream servletOutputStream = response.getOutputStream(); + GZIPOutputStream gZIPOutputStream = new GZIPOutputStream((OutputStream)servletOutputStream); + ExcelReport excelReport = new ExcelReport(); + WorkbookSettings ws = excelReport.getWorkBookSetting(); + try { + WritableWorkbook workbook = Workbook.createWorkbook(gZIPOutputStream, ws); + WritableSheet s = workbook.createSheet(reportName, 0); + ExcelReportInformation ex = new ExcelReportInformation(reportName); + String query = ex.getReportQuery(inputParam1, inputParam2); + ArrayList aHeader = ex.getReportHeader(); + excelReport.writeDataSheet(s, aHeader, query); + workbook.write(); + workbook.close(); + gZIPOutputStream.flush(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/hrmsEjb/wenrgise/report/excel/Heading.java b/hrmsEjb/wenrgise/report/excel/Heading.java new file mode 100644 index 0000000..ffefd7c --- /dev/null +++ b/hrmsEjb/wenrgise/report/excel/Heading.java @@ -0,0 +1,20 @@ +package wenrgise.report.excel; + +public class Heading { + private String sName; + + private int sType; + + public Heading(String Name, int Type) { + this.sName = Name; + this.sType = Type; + } + + public String getName() { + return this.sName; + } + + public int getType() { + return this.sType; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/DocHistoryDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/DocHistoryDtlBean.java new file mode 100644 index 0000000..2d7af8b --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/DocHistoryDtlBean.java @@ -0,0 +1,66 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class DocHistoryDtlBean extends BaseDetailBean implements Serializable { + private String txtSrlNo = ""; + + private String txtEmpNum = ""; + + private String txtStartTime = ""; + + private String txtDuration = ""; + + private String txtActivity = ""; + + private String txtDocType = ""; + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getTxtEmpNum() { + return this.txtEmpNum; + } + + public void setTxtEmpNum(String newTxtEmpNum) { + this.txtEmpNum = newTxtEmpNum; + } + + public String getTxtStartTime() { + return this.txtStartTime; + } + + public void setTxtStartTime(String newTxtStartTime) { + this.txtStartTime = newTxtStartTime; + } + + public String getTxtDuration() { + return this.txtDuration; + } + + public void setTxtDuration(String newTxtDuration) { + this.txtDuration = newTxtDuration; + } + + public String getTxtActivity() { + return this.txtActivity; + } + + public void setTxtActivity(String newTxtActivity) { + this.txtActivity = newTxtActivity; + } + + public String getTxtDocType() { + return this.txtDocType; + } + + public void setTxtDocType(String newTxtDocType) { + this.txtDocType = newTxtDocType; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WFLRouteDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WFLRouteDtlBean.java new file mode 100644 index 0000000..22d1243 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WFLRouteDtlBean.java @@ -0,0 +1,146 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WFLRouteDtlBean extends BaseDetailBean implements Serializable { + String txtEmpId; + + String txtDeptId; + + String txtGrpId; + + String txtClassId; + + String txtEmp; + + String txtClassCode; + + String txtLane; + + String txtLevel; + + String txtDept; + + String txtHlevel; + + String txtGroup; + + String txtFlag; + + String txtNotifFlag = "N"; + + private String txtReptHead; + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtDeptId() { + return this.txtDeptId; + } + + public void setTxtDeptId(String newTxtDeptId) { + this.txtDeptId = newTxtDeptId; + } + + public String getTxtGrpId() { + return this.txtGrpId; + } + + public void setTxtGrpId(String newTxtGrpId) { + this.txtGrpId = newTxtGrpId; + } + + public String getTxtClassId() { + return this.txtClassId; + } + + public void setTxtClassId(String newTxtClassId) { + this.txtClassId = newTxtClassId; + } + + public String getTxtEmp() { + return this.txtEmp; + } + + public void setTxtEmp(String newTxtEmp) { + this.txtEmp = newTxtEmp; + } + + public String getTxtClassCode() { + return this.txtClassCode; + } + + public void setTxtClassCode(String newTxtClassCode) { + this.txtClassCode = newTxtClassCode; + } + + public String getTxtLane() { + return this.txtLane; + } + + public void setTxtLane(String newTxtLane) { + this.txtLane = newTxtLane; + } + + public String getTxtLevel() { + return this.txtLevel; + } + + public void setTxtLevel(String newTxtLevel) { + this.txtLevel = newTxtLevel; + } + + public String getTxtDept() { + return this.txtDept; + } + + public void setTxtDept(String newTxtDept) { + this.txtDept = newTxtDept; + } + + public String getTxtHlevel() { + return this.txtHlevel; + } + + public void setTxtHlevel(String newTxtHlevel) { + this.txtHlevel = newTxtHlevel; + } + + public String getTxtGroup() { + return this.txtGroup; + } + + public void setTxtGroup(String newTxtGroup) { + this.txtGroup = newTxtGroup; + } + + public String getTxtFlag() { + return this.txtFlag; + } + + public void setTxtFlag(String newTxtFlag) { + this.txtFlag = newTxtFlag; + } + + public String getTxtNotifFlag() { + return this.txtNotifFlag; + } + + public void setTxtNotifFlag(String newTxtNotifFlag) { + this.txtNotifFlag = newTxtNotifFlag; + } + + public String getTxtReptHead() { + return this.txtReptHead; + } + + public void setTxtReptHead(String newTxtReptHead) { + this.txtReptHead = newTxtReptHead; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WFLRouteHdrBean.java b/hrmsEjb/wenrgise/workflow/bean/WFLRouteHdrBean.java new file mode 100644 index 0000000..1de1052 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WFLRouteHdrBean.java @@ -0,0 +1,66 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class WFLRouteHdrBean extends BaseHeaderBean implements Serializable { + public String actCode; + + public String actCodeDesc; + + public String dtlDocCode; + + public String dtlDocDesc; + + public String activityId; + + public String dtlDocId; + + public String getActCode() { + return this.actCode; + } + + public void setActCode(String newActCode) { + this.actCode = newActCode; + } + + public String getActCodeDesc() { + return this.actCodeDesc; + } + + public void setActCodeDesc(String newActCodeDesc) { + this.actCodeDesc = newActCodeDesc; + } + + public String getDtlDocCode() { + return this.dtlDocCode; + } + + public void setDtlDocCode(String newDtlDocCode) { + this.dtlDocCode = newDtlDocCode; + } + + public String getDtlDocDesc() { + return this.dtlDocDesc; + } + + public void setDtlDocDesc(String newDtlDocDesc) { + this.dtlDocDesc = newDtlDocDesc; + } + + public String getActivityId() { + return this.activityId; + } + + public void setActivityId(String newActivityId) { + this.activityId = newActivityId; + } + + public String getDtlDocId() { + return this.dtlDocId; + } + + public void setDtlDocId(String newDtlDocId) { + this.dtlDocId = newDtlDocId; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WFLTransDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WFLTransDtlBean.java new file mode 100644 index 0000000..ca96d7e --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WFLTransDtlBean.java @@ -0,0 +1,96 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WFLTransDtlBean extends BaseDetailBean implements Serializable { + public String txtFlane; + + public String txtFLevel; + + public String txtTLane; + + public String txtCDesc; + + public String txtCValue; + + public String txtToRootDtlId; + + public String txtFromRootDtlId; + + String txtTLevel; + + public String txtConditionId; + + public String getTxtFlane() { + return this.txtFlane; + } + + public void setTxtFlane(String newTxtFlane) { + this.txtFlane = newTxtFlane; + } + + public String getTxtFLevel() { + return this.txtFLevel; + } + + public void setTxtFLevel(String newTxtFLevel) { + this.txtFLevel = newTxtFLevel; + } + + public String getTxtTLane() { + return this.txtTLane; + } + + public void setTxtTLane(String newTxtTLane) { + this.txtTLane = newTxtTLane; + } + + public String getTxtCDesc() { + return this.txtCDesc; + } + + public void setTxtCDesc(String newTxtCDesc) { + this.txtCDesc = newTxtCDesc; + } + + public String getTxtCValue() { + return this.txtCValue; + } + + public void setTxtCValue(String newTxtCValue) { + this.txtCValue = newTxtCValue; + } + + public String getTxtToRootDtlId() { + return this.txtToRootDtlId; + } + + public void setTxtToRootDtlId(String newTxtToRootDtlId) { + this.txtToRootDtlId = newTxtToRootDtlId; + } + + public String getTxtFromRootDtlId() { + return this.txtFromRootDtlId; + } + + public void setTxtFromRootDtlId(String newTxtFromRootDtlId) { + this.txtFromRootDtlId = newTxtFromRootDtlId; + } + + public String getTxtTLevel() { + return this.txtTLevel; + } + + public void setTxtTLevel(String newTxtTLevel) { + this.txtTLevel = newTxtTLevel; + } + + public String getTxtConditionId() { + return this.txtConditionId; + } + + public void setTxtConditionId(String newTxtConditionId) { + this.txtConditionId = newTxtConditionId; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflActMstDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflActMstDtlBean.java new file mode 100644 index 0000000..a8029c9 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflActMstDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflActMstDtlBean extends BaseDetailBean implements Serializable { + public String txtAttrCode; + + public String txtAttrDesc; + + public String getTxtAttrCode() { + return this.txtAttrCode; + } + + public void setTxtAttrCode(String newTxtAttrCode) { + this.txtAttrCode = newTxtAttrCode; + } + + public String getTxtAttrDesc() { + return this.txtAttrDesc; + } + + public void setTxtAttrDesc(String newTxtAttrDesc) { + this.txtAttrDesc = newTxtAttrDesc; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflAuthorizationBean.java b/hrmsEjb/wenrgise/workflow/bean/WflAuthorizationBean.java new file mode 100644 index 0000000..fa52a02 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflAuthorizationBean.java @@ -0,0 +1,25 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; + +public class WflAuthorizationBean implements Serializable { + private boolean authStatus; + + private String errorCode; + + public boolean isAuthStatus() { + return this.authStatus; + } + + public void setAuthStatus(boolean newAuthStatus) { + this.authStatus = newAuthStatus; + } + + public String getErrorCode() { + return this.errorCode; + } + + public void setErrorCode(String newErrorCode) { + this.errorCode = newErrorCode; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDOPGrpDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDOPGrpDtlBean.java new file mode 100644 index 0000000..7228fa8 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDOPGrpDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDOPGrpDtlBean extends BaseDetailBean implements Serializable { + String txtempNo; + + String txtHiLevel; + + String dfltMembr; + + String empId; + + String txtEmpName; + + public String getTxtempNo() { + return this.txtempNo; + } + + public void setTxtempNo(String newTxtempNo) { + this.txtempNo = newTxtempNo; + } + + public String getTxtHiLevel() { + return this.txtHiLevel; + } + + public void setTxtHiLevel(String newTxtHiLevel) { + this.txtHiLevel = newTxtHiLevel; + } + + public String getDfltMembr() { + return this.dfltMembr; + } + + public void setDfltMembr(String newDfltMembr) { + this.dfltMembr = newDfltMembr; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDOPGrpHdrBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDOPGrpHdrBean.java new file mode 100644 index 0000000..3d43c78 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDOPGrpHdrBean.java @@ -0,0 +1,46 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class WflDOPGrpHdrBean extends BaseHeaderBean implements Serializable { + String grpCode; + + String grpDesc; + + String remarks; + + String grpFlag; + + public String getGrpCode() { + return this.grpCode; + } + + public void setGrpCode(String newGrpCode) { + this.grpCode = newGrpCode; + } + + public String getGrpDesc() { + return this.grpDesc; + } + + public void setGrpDesc(String newGrpDesc) { + this.grpDesc = newGrpDesc; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getGrpFlag() { + return this.grpFlag; + } + + public void setGrpFlag(String newGrpFlag) { + this.grpFlag = newGrpFlag; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDelegateMstDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDelegateMstDtlBean.java new file mode 100644 index 0000000..647676e --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDelegateMstDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDelegateMstDtlBean extends BaseDetailBean implements Serializable { + private String txtDocType; + + private String txtDesc; + + String txtDocTypeId; + + String disabbutDocType; + + public String getTxtDocType() { + return this.txtDocType; + } + + public void setTxtDocType(String newTxtDocType) { + this.txtDocType = newTxtDocType; + } + + public String getTxtDesc() { + return this.txtDesc; + } + + public void setTxtDesc(String newTxtDesc) { + this.txtDesc = newTxtDesc; + } + + public String getTxtDocTypeId() { + return this.txtDocTypeId; + } + + public void setTxtDocTypeId(String newTxtDocTypeId) { + this.txtDocTypeId = newTxtDocTypeId; + } + + public String getDisabbutDocType() { + return this.disabbutDocType; + } + + public void setDisabbutDocType(String newDisabbutDocType) { + this.disabbutDocType = newDisabbutDocType; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDelegateMstHdrBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDelegateMstHdrBean.java new file mode 100644 index 0000000..81ea8fe --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDelegateMstHdrBean.java @@ -0,0 +1,86 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class WflDelegateMstHdrBean extends BaseHeaderBean implements Serializable { + String empName; + + String empNo; + + String fromDate; + + String toDate; + + String delegateAll; + + String empId; + + String remarks; + + String delegateAllDoc = "N"; + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getDelegateAll() { + return this.delegateAll; + } + + public void setDelegateAll(String newDelegateAll) { + this.delegateAll = newDelegateAll; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDelegateAllDoc() { + return this.delegateAllDoc; + } + + public void setDelegateAllDoc(String newDelegateAllDoc) { + this.delegateAllDoc = newDelegateAllDoc; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java new file mode 100644 index 0000000..830881f --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java @@ -0,0 +1,56 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDocMstAttrDtlBean extends BaseDetailBean implements Serializable { + private String txtAttrName; + + private String txtType; + + private String txtDesc; + + private String docTypeHdrId; + + public String txtLovKey; + + public String getTxtAttrName() { + return this.txtAttrName; + } + + public void setTxtAttrName(String newTxtAttrName) { + this.txtAttrName = newTxtAttrName; + } + + public String getTxtType() { + return this.txtType; + } + + public void setTxtType(String newTxtType) { + this.txtType = newTxtType; + } + + public String getTxtDesc() { + return this.txtDesc; + } + + public void setTxtDesc(String newTxtDesc) { + this.txtDesc = newTxtDesc; + } + + public String getDocTypeHdrId() { + return this.docTypeHdrId; + } + + public void setDocTypeHdrId(String newDocTypeHdrId) { + this.docTypeHdrId = newDocTypeHdrId; + } + + public String getTxtLovKey() { + return this.txtLovKey; + } + + public void setTxtLovKey(String newTxtLovKey) { + this.txtLovKey = newTxtLovKey; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java new file mode 100644 index 0000000..1a7e77f --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java @@ -0,0 +1,26 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDocMstConditionsDtlBean extends BaseDetailBean implements Serializable { + private String docTypeDtlDesc; + + private String conditionExpression; + + public String getDocTypeDtlDesc() { + return this.docTypeDtlDesc; + } + + public void setDocTypeDtlDesc(String newDocTypeDtlDesc) { + this.docTypeDtlDesc = newDocTypeDtlDesc; + } + + public String getConditionExpression() { + return this.conditionExpression; + } + + public void setConditionExpression(String newConditionExpression) { + this.conditionExpression = newConditionExpression; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDocMstHdrBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDocMstHdrBean.java new file mode 100644 index 0000000..1579fbf --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDocMstHdrBean.java @@ -0,0 +1,46 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class WflDocMstHdrBean extends BaseHeaderBean implements Serializable { + String documentDesc; + + String documentCode; + + private String screenName; + + String maxAppLevel; + + public String getDocumentDesc() { + return this.documentDesc; + } + + public void setDocumentDesc(String newDocumentDesc) { + this.documentDesc = newDocumentDesc; + } + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getScreenName() { + return this.screenName; + } + + public void setScreenName(String newScreenName) { + this.screenName = newScreenName; + } + + public String getMaxAppLevel() { + return this.maxAppLevel; + } + + public void setMaxAppLevel(String newMaxAppLevel) { + this.maxAppLevel = newMaxAppLevel; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDocTypeDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDocTypeDtlBean.java new file mode 100644 index 0000000..bf4a7d2 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDocTypeDtlBean.java @@ -0,0 +1,36 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDocTypeDtlBean extends BaseDetailBean implements Serializable { + public String txtCode; + + public String txtDesc; + + public String txtActFlag; + + public String getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String newTxtCode) { + this.txtCode = newTxtCode; + } + + public String getTxtDesc() { + return this.txtDesc; + } + + public void setTxtDesc(String newTxtDesc) { + this.txtDesc = newTxtDesc; + } + + public String getTxtActFlag() { + return this.txtActFlag; + } + + public void setTxtActFlag(String newTxtActFlag) { + this.txtActFlag = newTxtActFlag; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapDtlBean.java new file mode 100644 index 0000000..0cbcdbb --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapDtlBean.java @@ -0,0 +1,46 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDtlDocActivityMapDtlBean extends BaseDetailBean implements Serializable { + private String activityId; + + private String activityCode; + + private String activityDesc; + + private String activityFlag; + + public String getActivityId() { + return this.activityId; + } + + public void setActivityId(String newActivityId) { + this.activityId = newActivityId; + } + + public String getActivityCode() { + return this.activityCode; + } + + public void setActivityCode(String newActivityCode) { + this.activityCode = newActivityCode; + } + + public String getActivityDesc() { + return this.activityDesc; + } + + public void setActivityDesc(String newActivityDesc) { + this.activityDesc = newActivityDesc; + } + + public String getActivityFlag() { + return this.activityFlag; + } + + public void setActivityFlag(String newActivityFlag) { + this.activityFlag = newActivityFlag; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapHdrBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapHdrBean.java new file mode 100644 index 0000000..4774809 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocActivityMapHdrBean.java @@ -0,0 +1,56 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class WflDtlDocActivityMapHdrBean extends BaseHeaderBean implements Serializable { + private String dtlDocId; + + private String dtlDocCode; + + private String dtlDocDesc; + + private String dtlDocActCode; + + private String dtlDocActDesc; + + public String getDtlDocId() { + return this.dtlDocId; + } + + public void setDtlDocId(String newDtlDocId) { + this.dtlDocId = newDtlDocId; + } + + public String getDtlDocCode() { + return this.dtlDocCode; + } + + public void setDtlDocCode(String newDtlDocCode) { + this.dtlDocCode = newDtlDocCode; + } + + public String getDtlDocDesc() { + return this.dtlDocDesc; + } + + public void setDtlDocDesc(String newDtlDocDesc) { + this.dtlDocDesc = newDtlDocDesc; + } + + public String getDtlDocActCode() { + return this.dtlDocActCode; + } + + public void setDtlDocActCode(String newDtlDocActCode) { + this.dtlDocActCode = newDtlDocActCode; + } + + public String getDtlDocActDesc() { + return this.dtlDocActDesc; + } + + public void setDtlDocActDesc(String newDtlDocActDesc) { + this.dtlDocActDesc = newDtlDocActDesc; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java new file mode 100644 index 0000000..220b9ee --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java @@ -0,0 +1,76 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDtlDocTypeDtlBean extends BaseDetailBean implements Serializable { + public String txtDtlDocCode; + + public String txtDtlDocDesc; + + public String txtConDesc; + + public String txtExp; + + public String txtPriority; + + public String txtConditionId; + + String disabbutCondDesc; + + public String getTxtDtlDocCode() { + return this.txtDtlDocCode; + } + + public void setTxtDtlDocCode(String newTxtDtlDocCode) { + this.txtDtlDocCode = newTxtDtlDocCode; + } + + public String getTxtDtlDocDesc() { + return this.txtDtlDocDesc; + } + + public void setTxtDtlDocDesc(String newTxtDtlDocDesc) { + this.txtDtlDocDesc = newTxtDtlDocDesc; + } + + public String getTxtConDesc() { + return this.txtConDesc; + } + + public void setTxtConDesc(String newTxtConDesc) { + this.txtConDesc = newTxtConDesc; + } + + public String getTxtExp() { + return this.txtExp; + } + + public void setTxtExp(String newTxtExp) { + this.txtExp = newTxtExp; + } + + public String getTxtPriority() { + return this.txtPriority; + } + + public void setTxtPriority(String newTxtPriority) { + this.txtPriority = newTxtPriority; + } + + public String getTxtConditionId() { + return this.txtConditionId; + } + + public void setTxtConditionId(String newTxtConditionId) { + this.txtConditionId = newTxtConditionId; + } + + public String getDisabbutCondDesc() { + return this.disabbutCondDesc; + } + + public void setDisabbutCondDesc(String newDisabbutCondDesc) { + this.disabbutCondDesc = newDisabbutCondDesc; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java new file mode 100644 index 0000000..3dadd70 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java @@ -0,0 +1,3 @@ +package wenrgise.workflow.bean; + +public class WflDtlDocTypeHdrBean {} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflDtlsHdrBean.java b/hrmsEjb/wenrgise/workflow/bean/WflDtlsHdrBean.java new file mode 100644 index 0000000..f03b934 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflDtlsHdrBean.java @@ -0,0 +1,76 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class WflDtlsHdrBean extends BaseHeaderBean implements Serializable { + String toDtls; + + String fromDtls; + + String subjectDtls; + + String descDtls; + + String notifFlag; + + String moduleId; + + String moduleName; + + public String getToDtls() { + return this.toDtls; + } + + public void setToDtls(String newToDtls) { + this.toDtls = newToDtls; + } + + public String getFromDtls() { + return this.fromDtls; + } + + public void setFromDtls(String newFromDtls) { + this.fromDtls = newFromDtls; + } + + public String getSubjectDtls() { + return this.subjectDtls; + } + + public void setSubjectDtls(String newSubjectDtls) { + this.subjectDtls = newSubjectDtls; + } + + public String getDescDtls() { + return this.descDtls; + } + + public void setDescDtls(String newDescDtls) { + this.descDtls = newDescDtls; + } + + public String getNotifFlag() { + return this.notifFlag; + } + + public void setNotifFlag(String newNotifFlag) { + this.notifFlag = newNotifFlag; + } + + public String getModuleId() { + return this.moduleId; + } + + public void setModuleId(String newModuleId) { + this.moduleId = newModuleId; + } + + public String getModuleName() { + return this.moduleName; + } + + public void setModuleName(String newModuleName) { + this.moduleName = newModuleName; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflWorkListBean.java b/hrmsEjb/wenrgise/workflow/bean/WflWorkListBean.java new file mode 100644 index 0000000..586aa4f --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflWorkListBean.java @@ -0,0 +1,135 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; + +public class WflWorkListBean implements Serializable { + private String txtDocNo; + + private String txtAssignedOn; + + private String txtDocTypeId; + + private String txtSerialNo; + + private String txtDocId; + + private String txtEmpId; + + private String txtActionName; + + private String routeDtlId; + + private String txtModuleId; + + private String txtModuleCode; + + private String txtDocTypeCode; + + private String txtHiddenId; + + private String txtEmpNo; + + public String getTxtDocNo() { + return this.txtDocNo; + } + + public void setTxtDocNo(String newTxtDocNo) { + this.txtDocNo = newTxtDocNo; + } + + public String getTxtAssignedOn() { + return this.txtAssignedOn; + } + + public void setTxtAssignedOn(String newTxtAssignedOn) { + this.txtAssignedOn = newTxtAssignedOn; + } + + public String getTxtDocTypeId() { + return this.txtDocTypeId; + } + + public void setTxtDocTypeId(String newTxtDocTypeId) { + this.txtDocTypeId = newTxtDocTypeId; + } + + public String getTxtSerialNo() { + return this.txtSerialNo; + } + + public void setTxtSerialNo(String newTxtSerialNo) { + this.txtSerialNo = newTxtSerialNo; + } + + public String getTxtDocId() { + return this.txtDocId; + } + + public void setTxtDocId(String newTxtDocId) { + this.txtDocId = newTxtDocId; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtActionName() { + return this.txtActionName; + } + + public void setTxtActionName(String newTxtActionName) { + this.txtActionName = newTxtActionName; + } + + public String getRouteDtlId() { + return this.routeDtlId; + } + + public void setRouteDtlId(String newRouteDtlId) { + this.routeDtlId = newRouteDtlId; + } + + public String getTxtModuleId() { + return this.txtModuleId; + } + + public void setTxtModuleId(String newTxtModuleId) { + this.txtModuleId = newTxtModuleId; + } + + public String getTxtModuleCode() { + return this.txtModuleCode; + } + + public void setTxtModuleCode(String newTxtModuleCode) { + this.txtModuleCode = newTxtModuleCode; + } + + public String getTxtDocTypeCode() { + return this.txtDocTypeCode; + } + + public void setTxtDocTypeCode(String newTxtDocTypeCode) { + this.txtDocTypeCode = newTxtDocTypeCode; + } + + public String getTxtHiddenId() { + return this.txtHiddenId; + } + + public void setTxtHiddenId(String newTxtHiddenId) { + this.txtHiddenId = newTxtHiddenId; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } +} diff --git a/hrmsEjb/wenrgise/workflow/bean/WflWorkListInfoBean.java b/hrmsEjb/wenrgise/workflow/bean/WflWorkListInfoBean.java new file mode 100644 index 0000000..cfe24c5 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/bean/WflWorkListInfoBean.java @@ -0,0 +1,96 @@ +package wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.workflow.utility.Node; + +public class WflWorkListInfoBean implements Serializable { + String docTypeCode; + + String docId; + + Node oNode; + + String creatorempId; + + String requestorEmpId; + + String siteId; + + String lastEmpId; + + String assignedOn; + + String status; + + public String getDocTypeCode() { + return this.docTypeCode; + } + + public void setDocTypeCode(String newDocTypeCode) { + this.docTypeCode = newDocTypeCode; + } + + public String getDocId() { + return this.docId; + } + + public void setDocId(String newDocId) { + this.docId = newDocId; + } + + public Node getONode() { + return this.oNode; + } + + public void setONode(Node newONode) { + this.oNode = newONode; + } + + public String getCreatorempId() { + return this.creatorempId; + } + + public void setCreatorempId(String newCreatorempId) { + this.creatorempId = newCreatorempId; + } + + public String getRequestorEmpId() { + return this.requestorEmpId; + } + + public void setRequestorEmpId(String newRequestorEmpId) { + this.requestorEmpId = newRequestorEmpId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getLastEmpId() { + return this.lastEmpId; + } + + public void setLastEmpId(String newLastEmpId) { + this.lastEmpId = newLastEmpId; + } + + public String getAssignedOn() { + return this.assignedOn; + } + + public void setAssignedOn(String newAssignedOn) { + this.assignedOn = newAssignedOn; + } + + public String getStatus() { + return this.status; + } + + public void setStatus(String newStatus) { + this.status = newStatus; + } +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflConstants.java b/hrmsEjb/wenrgise/workflow/core/WflConstants.java new file mode 100644 index 0000000..a5c2e38 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflConstants.java @@ -0,0 +1,91 @@ +package wenrgise.workflow.core; + +public class WflConstants { + public static final String APPROVE = "Approve"; + + public static final String SUBMIT = "Submit"; + + public static final String REJECT = "Reject"; + + public static final String REVISE = "Revise"; + + public static final String CLOSE = "Close"; + + public static final String CANCEL = "Cancel"; + + public static final String PI = "PurchaseIndent"; + + public static final String TE = "TenderEnquiry"; + + public static final String QT = "Quotation"; + + public static final String TEP = "TenderEnquiryProposal"; + + public static final String PP = "PurchaseProposal"; + + public static final String PO = "PurchaseOrder"; + + public static final String DO = "DeliveryOrder"; + + public static final String DS = "DeliverySchedule"; + + public static final String LEAVE = "Leave"; + + public static final String LOAN = "Loan"; + + public static final String APPRAISAL = "Appraisal"; + + public static final String ADVANCE = "Advance"; + + public static final String TRANSFER = "Transfer"; + + public static final String DEPUTATION = "Deputation"; + + public static final String SEPARATION = "Separation"; + + public static final String TRAINING = "Training"; + + public static final String MR = "Marerial Requisition"; + + public static final String GRS = "Good Receipt Sheet"; + + public static final String MRN = "Material Return Note"; + + public static final String MIN = "Material Issue Note"; + + public static final String STNIN = "Stores Transfer Note IN"; + + public static final String STNOUT = "Stores Transfer Note Out"; + + public static final String SAJ = "Stores Adjustment"; + + public static final String CHALLAN = "Challan"; + + public static final String RSV = "Reservation"; + + public static final String REJECTED = "Rejected"; + + public static final String PENDING = "Pending"; + + public static final String FINALLY_APPROVED = "FinallyApproved"; + + public static final String APPROVED = "Approved"; + + public static final String REVISED = "Revised"; + + public static final String CLOSED = "Closed"; + + public static final String INITIATED = "Initiated"; + + public static final String SUCCESS = "Success"; + + public static final String ERROR = "Error"; + + public static final String MAIL_SENT = "MailSent"; + + public static final String TRUE = "true"; + + public static final String FALSE = "false"; + + public static final String SYSTEM_MAIL_ADDRESS = "enrgise@tcs.com"; +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflDepartment.java b/hrmsEjb/wenrgise/workflow/core/WflDepartment.java new file mode 100644 index 0000000..c946e19 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflDepartment.java @@ -0,0 +1,13 @@ +package wenrgise.workflow.core; + +import java.io.Serializable; + +public interface WflDepartment extends Serializable { + String getDepartmentId(); + + void setDepartmentId(String paramString); + + String getDepartmentName(); + + void setDepartmentName(String paramString); +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflDocumentInfo.java b/hrmsEjb/wenrgise/workflow/core/WflDocumentInfo.java new file mode 100644 index 0000000..5bb6f27 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflDocumentInfo.java @@ -0,0 +1,58 @@ +package wenrgise.workflow.core; + +import java.io.Serializable; +import java.util.HashMap; + +public interface WflDocumentInfo extends Serializable { + WflResource getRequester(); + + void setRequester(WflResource paramWflResource); + + WflResource getCreator(); + + void setCreator(WflResource paramWflResource); + + String getRequesterAction(); + + void setRequesterAction(String paramString); + + String getDocumentTypeId(); + + void setDocumentTypeId(String paramString); + + String getDocumentId(); + + void setDocumentId(String paramString); + + String getDocumentNumber(); + + void setDocumentNumber(String paramString); + + String getModuleId(); + + void setModuleId(String paramString); + + WflSite getSite(); + + void setSite(WflSite paramWflSite); + + HashMap getDocumentAttributes(); + + void setDocumentAttributes(HashMap paramHashMap); + + String getWorkListId(); + + void setWorkListId(String paramString); + + String getDocumentType(); + + void setDocumentType(String paramString); + + String getInitiatedFlag(); + + void setInitiatedFlag(String paramString); + + String getDocDesc(); + + void setDocDesc(String paramString); +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflResource.java b/hrmsEjb/wenrgise/workflow/core/WflResource.java new file mode 100644 index 0000000..c8890fe --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflResource.java @@ -0,0 +1,33 @@ +package wenrgise.workflow.core; + +import java.io.Serializable; + +public interface WflResource extends Serializable { + String getEmployeeId(); + + void setEmployeeId(String paramString); + + String getEmpNo(); + + void setEmpNo(String paramString); + + WflSite getLoginSite(); + + void setLoginSite(WflSite paramWflSite); + + String getUserId(); + + void setUserId(String paramString); + + WflDepartment getDepartment(); + + void setDepartment(WflDepartment paramWflDepartment); + + String getRouteDtlId(); + + void setRouteDtlId(String paramString); + + String getDelegatedBy(); + + void setDelegatedBy(String paramString); +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflRole.java b/hrmsEjb/wenrgise/workflow/core/WflRole.java new file mode 100644 index 0000000..da10553 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflRole.java @@ -0,0 +1,41 @@ +package wenrgise.workflow.core; + +import java.io.Serializable; + +public interface WflRole extends Serializable { + String getApprovalLevel(); + + void setApprovalLevel(String paramString); + + String getDeleteFlag(); + + void setDeleteFlag(String paramString); + + String getDocTypeId(); + + void setDocTypeId(String paramString); + + String getInsertFlag(); + + void setInsertFlag(String paramString); + + String getPreAuditFlag(); + + void setPreAuditFlag(String paramString); + + String getQueryFlag(); + + void setQueryFlag(String paramString); + + String getRoleDesc(); + + void setRoleDesc(String paramString); + + String getRoleId(); + + void setRoleId(String paramString); + + String getUpdateFlag(); + + void setUpdateFlag(String paramString); +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflService.java b/hrmsEjb/wenrgise/workflow/core/WflService.java new file mode 100644 index 0000000..0b8c6d1 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflService.java @@ -0,0 +1,11 @@ +package wenrgise.workflow.core; + +import java.io.Serializable; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; + +public interface WflService extends Serializable { + WflStatus process(WflDocumentInfo paramWflDocumentInfo); + + boolean canDo(WflDocumentInfo paramWflDocumentInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflSite.java b/hrmsEjb/wenrgise/workflow/core/WflSite.java new file mode 100644 index 0000000..0a5b9e8 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflSite.java @@ -0,0 +1,17 @@ +package wenrgise.workflow.core; + +import java.io.Serializable; + +public interface WflSite extends Serializable { + String getSiteId(); + + void setSiteId(String paramString); + + String getSiteName(); + + void setSiteName(String paramString); + + String getParentSiteId(); + + void setParentSiteId(String paramString); +} diff --git a/hrmsEjb/wenrgise/workflow/core/WflStatus.java b/hrmsEjb/wenrgise/workflow/core/WflStatus.java new file mode 100644 index 0000000..bdf0770 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WflStatus.java @@ -0,0 +1,21 @@ +package wenrgise.workflow.core; + +import java.io.Serializable; + +public interface WflStatus extends Serializable { + String getStatus(); + + void setStatus(String paramString); + + WflResource assignedTo(); + + void assign(WflResource paramWflResource); + + String getErrCode(); + + void setErrCode(String paramString); + + String getErrMsg(); + + void setErrMsg(String paramString); +} diff --git a/hrmsEjb/wenrgise/workflow/core/WorkFlow.java b/hrmsEjb/wenrgise/workflow/core/WorkFlow.java new file mode 100644 index 0000000..c6dd049 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/WorkFlow.java @@ -0,0 +1,10 @@ +package wenrgise.workflow.core; + +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; + +public interface WorkFlow { + WflStatus start(WflDocumentInfo paramWflDocumentInfo); + + boolean canDo(WflDocumentInfo paramWflDocumentInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/core/impl/WflDepartmentImpl.java b/hrmsEjb/wenrgise/workflow/core/impl/WflDepartmentImpl.java new file mode 100644 index 0000000..6e96b0a --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/impl/WflDepartmentImpl.java @@ -0,0 +1,25 @@ +package wenrgise.workflow.core.impl; + +import wenrgise.workflow.core.WflDepartment; + +public class WflDepartmentImpl implements WflDepartment { + private String departmentId; + + private String departmentName; + + public String getDepartmentId() { + return this.departmentId; + } + + public void setDepartmentId(String newDepartmentId) { + this.departmentId = newDepartmentId; + } + + public String getDepartmentName() { + return this.departmentName; + } + + public void setDepartmentName(String newDepartmentName) { + this.departmentName = newDepartmentName; + } +} diff --git a/hrmsEjb/wenrgise/workflow/core/impl/WflDocumentInfoImpl.java b/hrmsEjb/wenrgise/workflow/core/impl/WflDocumentInfoImpl.java new file mode 100644 index 0000000..6948554 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/impl/WflDocumentInfoImpl.java @@ -0,0 +1,138 @@ +package wenrgise.workflow.core.impl; + +import java.util.HashMap; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; + +public class WflDocumentInfoImpl implements WflDocumentInfo { + private WflResource requester = null; + + private WflResource creator = null; + + private String requesterAction = null; + + private String documentTypeId = null; + + private String documentId = null; + + private String documentNumber = null; + + private String moduleId = null; + + private WflSite site = null; + + private HashMap documentAttributes; + + private String workListId; + + private String documentType = null; + + private String initiatedFlag; + + private String docDesc; + + public WflResource getCreator() { + return this.creator; + } + + public void setCreator(WflResource newCreator) { + this.creator = newCreator; + } + + public String getDocumentId() { + return this.documentId; + } + + public void setDocumentId(String newDocumentId) { + this.documentId = newDocumentId; + } + + public String getDocumentNumber() { + return this.documentNumber; + } + + public void setDocumentNumber(String newDocumentNumber) { + this.documentNumber = newDocumentNumber; + } + + public String getDocumentTypeId() { + return this.documentTypeId; + } + + public void setDocumentTypeId(String newDocumentTypeId) { + this.documentTypeId = newDocumentTypeId; + } + + public String getModuleId() { + return this.moduleId; + } + + public void setModuleId(String newModuleId) { + this.moduleId = newModuleId; + } + + public WflResource getRequester() { + return this.requester; + } + + public void setRequester(WflResource newRequester) { + this.requester = newRequester; + } + + public String getRequesterAction() { + return this.requesterAction; + } + + public void setRequesterAction(String newRequesterAction) { + this.requesterAction = newRequesterAction; + } + + public WflSite getSite() { + return this.site; + } + + public void setSite(WflSite newSite) { + this.site = newSite; + } + + public HashMap getDocumentAttributes() { + return this.documentAttributes; + } + + public void setDocumentAttributes(HashMap newDocumentAttributes) { + this.documentAttributes = newDocumentAttributes; + } + + public String getWorkListId() { + return this.workListId; + } + + public void setWorkListId(String newWorkListId) { + this.workListId = newWorkListId; + } + + public String getDocumentType() { + return this.documentType; + } + + public void setDocumentType(String newDocumentType) { + this.documentType = newDocumentType; + } + + public String getInitiatedFlag() { + return this.initiatedFlag; + } + + public void setInitiatedFlag(String newInitiatedFlag) { + this.initiatedFlag = newInitiatedFlag; + } + + public String getDocDesc() { + return this.docDesc; + } + + public void setDocDesc(String newDocDesc) { + this.docDesc = newDocDesc; + } +} diff --git a/hrmsEjb/wenrgise/workflow/core/impl/WflResourceImpl.java b/hrmsEjb/wenrgise/workflow/core/impl/WflResourceImpl.java new file mode 100644 index 0000000..6807adf --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/impl/WflResourceImpl.java @@ -0,0 +1,77 @@ +package wenrgise.workflow.core.impl; + +import wenrgise.workflow.core.WflDepartment; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflSite; + +public class WflResourceImpl implements WflResource { + private String employeeId = null; + + private String empNo = null; + + private String userId = null; + + private WflSite loginSite = null; + + private WflDepartment department = null; + + private String routeDtlId; + + private String delegatedBy; + + public WflDepartment getDepartment() { + return this.department; + } + + public void setDepartment(WflDepartment newDepartment) { + this.department = newDepartment; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public WflSite getLoginSite() { + return this.loginSite; + } + + public void setLoginSite(WflSite newLoginSite) { + this.loginSite = newLoginSite; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String newUserId) { + this.userId = newUserId; + } + + public String getRouteDtlId() { + return this.routeDtlId; + } + + public void setRouteDtlId(String newRouteDtlId) { + this.routeDtlId = newRouteDtlId; + } + + public String getDelegatedBy() { + return this.delegatedBy; + } + + public void setDelegatedBy(String newDelegatedBy) { + this.delegatedBy = newDelegatedBy; + } +} diff --git a/hrmsEjb/wenrgise/workflow/core/impl/WflServiceImpl.java b/hrmsEjb/wenrgise/workflow/core/impl/WflServiceImpl.java new file mode 100644 index 0000000..5ba9d54 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/impl/WflServiceImpl.java @@ -0,0 +1,37 @@ +package wenrgise.workflow.core.impl; + +import java.util.logging.Logger; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflService; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.WorkFlow; +import wenrgise.workflow.exception.WorkFlowServiceNotFoundException; +import wenrgise.workflow.impl.WorkFlowImpl; + +public class WflServiceImpl implements WflService { + public static final Logger log = Logger.getLogger("wenrgise.workflow.utility.WorkflowPlugin"); + + public boolean canDo(WflDocumentInfo docInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public WflStatus process(WflDocumentInfo docInfo) { + try { + WorkFlow wfl = getWorkFlowImplementation(docInfo); + log.severe("proc1"); + if (wfl != null) { + log.severe("proc2"); + return wfl.start(docInfo); + } + return null; + } catch (WorkFlowServiceNotFoundException oSx) { + return null; + } + } + + private WorkFlow getWorkFlowImplementation(WflDocumentInfo docInfo) throws WorkFlowServiceNotFoundException { + return (WorkFlow)new WorkFlowImpl(); + } +} diff --git a/hrmsEjb/wenrgise/workflow/core/impl/WflSiteImpl.java b/hrmsEjb/wenrgise/workflow/core/impl/WflSiteImpl.java new file mode 100644 index 0000000..f14757f --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/impl/WflSiteImpl.java @@ -0,0 +1,35 @@ +package wenrgise.workflow.core.impl; + +import wenrgise.workflow.core.WflSite; + +public class WflSiteImpl implements WflSite { + private String siteId = null; + + private String parentSiteId = null; + + private String siteName = null; + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String siteId) { + this.siteId = siteId; + } + + public String getParentSiteId() { + return this.parentSiteId; + } + + public void setParentSiteId(String parentSiteId) { + this.parentSiteId = parentSiteId; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } +} diff --git a/hrmsEjb/wenrgise/workflow/core/impl/WflStatusImpl.java b/hrmsEjb/wenrgise/workflow/core/impl/WflStatusImpl.java new file mode 100644 index 0000000..a6eadcd --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/core/impl/WflStatusImpl.java @@ -0,0 +1,46 @@ +package wenrgise.workflow.core.impl; + +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflStatus; + +public class WflStatusImpl implements WflStatus { + private String status = null; + + private WflResource wflResource = null; + + private String errCode; + + private String errMsg; + + public String getStatus() { + return this.status; + } + + public void setStatus(String status) { + this.status = status; + } + + public WflResource assignedTo() { + return this.wflResource; + } + + public void assign(WflResource resource) { + this.wflResource = resource; + } + + public String getErrCode() { + return this.errCode; + } + + public void setErrCode(String newErrCode) { + this.errCode = newErrCode; + } + + public String getErrMsg() { + return this.errMsg; + } + + public void setErrMsg(String newErrMsg) { + this.errMsg = newErrMsg; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/DocHistoryDtlBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/DocHistoryDtlBO.java new file mode 100644 index 0000000..b1f865f --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/DocHistoryDtlBO.java @@ -0,0 +1,61 @@ +package wenrgise.workflow.ejb.business; + +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.DocHistoryDtlBean; + +public class DocHistoryDtlBO extends WorkFlowBaseBO { + public ArrayList getDocHistDtl(String sDocID, String sDocType, String sModuleID) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + String sActivity = ""; + ArrayList arylstOutArray = new ArrayList(); + DocHistoryDtlBean oDocHistoryDtlBean = null; + ArrayList oDocHistDtl = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sDocID)); + arylstParameters.add(new DBObject(2, 1, 12, sDocType)); + arylstParameters.add(new DBObject(3, 1, 12, sModuleID)); + arylstParameters.add(new DBObject(4, 2, -10)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + arylstOutArray = oBean.callProc(arylstParameters, "WFLDOCUMENTHISTORY.proc_WflDocHistDtl(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (oDocHistDtl == null) + oDocHistDtl = new ArrayList(); + count++; + oRow = oIt.next(); + oDocHistoryDtlBean = new DocHistoryDtlBean(); + oDocHistoryDtlBean.setTxtSrlNo(String.valueOf(count)); + oDocHistoryDtlBean.setTxtEmpNum(oRow.get("empName").getString()); + oDocHistoryDtlBean.setTxtDocType(oRow.get("doc_type_desc").getString()); + oDocHistoryDtlBean.setTxtStartTime(oRow.get("stDate").getString()); + oDocHistoryDtlBean.setTxtDuration(oRow.get("duration").getString()); + sActivity = oRow.get("status").getString(); + if (sActivity.equalsIgnoreCase("A")) { + oDocHistoryDtlBean.setTxtActivity("Approved"); + } else { + oDocHistoryDtlBean.setTxtActivity("Pending"); + } + oDocHistDtl.add(oDocHistoryDtlBean); + } + return oDocHistDtl; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WFLDtlDocActivityMapBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WFLDtlDocActivityMapBO.java new file mode 100644 index 0000000..ae856f7 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WFLDtlDocActivityMapBO.java @@ -0,0 +1,483 @@ +package wenrgise.workflow.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflDtlDocActivityMapDtlBean; +import wenrgise.workflow.bean.WflDtlDocActivityMapHdrBean; +import wenrgise.workflow.vo.WflDtlDocActivityMapQVO; + +public class WFLDtlDocActivityMapBO extends BaseBO { + public WFLDtlDocActivityMapBO() {} + + public WFLDtlDocActivityMapBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getWFLDtlDocActivityHdrMetaInfo(WflDtlDocActivityMapQVO oWflDtlDocActivityMapQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean objBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, oWflDtlDocActivityMapQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(2, 1, 12, oWflDtlDocActivityMapQVO.getDtlDocId())); + arylstParameters.add(new DBObject(3, 2, -5)); + arylstParameters.add(new DBObject(4, 2, 93)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 4)); + ArrayList arylstOutArray = objBean.callProc(arylstParameters, "WFLDOCACTIVITYMAP.proc_GetWFlDocActHdrMetaInfo(?,?,?,?,?,?,?)"); + RecordMetaInfo objRecordMetaInfo = new RecordMetaInfo(); + DBObject objTotalRecord = arylstOutArray.get(0); + objRecordMetaInfo.setRecordCount(((Long)objTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + objRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return objRecordMetaInfo; + } + + public ArrayList getWFLDtlDocActivityHdrInfo(WflDtlDocActivityMapQVO oWflDtlDocActivityMapQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean objBean = new DBUtilitiesBean(); + Timestamp tmstWhenPicked = null; + int count = 0; + ArrayList arylstDetailList = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 1, 12, oWflDtlDocActivityMapQVO.getHeaderPrimaryKey())); + arylstParameters.add(new DBObject(4, 1, 12, oWflDtlDocActivityMapQVO.getDtlDocId())); + arylstParameters.add(new DBObject(5, 2, -10)); + arylstParameters.add(new DBObject(6, 2, 12)); + arylstParameters.add(new DBObject(7, 2, 12)); + arylstParameters.add(new DBObject(8, 2, 4)); + ArrayList arylstOutArray = objBean.callProc(arylstParameters, "WFLDOCACTIVITYMAP.proc_GetWFlDocActHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject objOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)objOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.workflow.norecordfound", "M"); + QueryRow objRow = null; + Iterator itrIt = arylstList.iterator(); + while (itrIt.hasNext()) { + if (count == 0) + arylstDetailList = new ArrayList(); + count++; + objRow = itrIt.next(); + WflDtlDocActivityMapHdrBean oWflDtlDocActivityMapHdrBean = new WflDtlDocActivityMapHdrBean(); + oWflDtlDocActivityMapHdrBean.setHeaderPrimaryKey(objRow.get("ID").getString()); + oWflDtlDocActivityMapHdrBean.setDtlDocActCode(objRow.get("docActHdrCode").getString()); + oWflDtlDocActivityMapHdrBean.setDtlDocActDesc(objRow.get("docActHdrDesc").getString()); + oWflDtlDocActivityMapHdrBean.setDtlDocCode(objRow.get("docDtlCode").getString()); + oWflDtlDocActivityMapHdrBean.setDtlDocId(objRow.get("docTypeDtlId").getString()); + oWflDtlDocActivityMapHdrBean.setDtlDocDesc(objRow.get("docDtlDesc").getString()); + arylstDetailList.add(oWflDtlDocActivityMapHdrBean); + } + return arylstDetailList; + } + + public RecordMetaInfo getWFLDtlDocActivityDtlMetaInfo(String sPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(sPrimaryKey))); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDOCACTIVITYMAP.proc_GetWFlDocActDtlMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getWFLDtlDocActivityDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDOCACTIVITYMAP.proc_GetWFlDocActDtlInfo(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflDtlDocActivityMapDtlBean oWflDtlDocActivityMapDtlBean = new WflDtlDocActivityMapDtlBean(); + oWflDtlDocActivityMapDtlBean.setDetailId(oRow.get("Id").getString()); + oWflDtlDocActivityMapDtlBean.setActivityCode(oRow.get("activityCode").getString()); + oWflDtlDocActivityMapDtlBean.setActivityDesc(oRow.get("activityDesc").getString()); + oWflDtlDocActivityMapDtlBean.setActivityId(oRow.get("activityId").getString()); + oWflDtlDocActivityMapDtlBean.setActivityFlag(oRow.get("activityFlag").getString()); + oDtlList.add(oWflDtlDocActivityMapDtlBean); + } + return oDtlList; + } + + public void initializeBOImpl() { + this.headerTable = "wfl_doc_activity_hdr"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + WflDtlDocActivityMapHdrBean oWflDtlDocActivityMapHdrBean = new WflDtlDocActivityMapHdrBean(); + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWflDtlDocActivityMapHdrBean.getDtlDocActCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDtlDocActivityMapHdrBean.getDtlDocActDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDtlDocActivityMapHdrBean.getDtlDocId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDOCACTIVITYMAP.proc_UpsertWflDtlDocActMapHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDtlDocActivityMapHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oWflDtlDocActivityMapHdrBean.getDtlDocActCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDtlDocActivityMapHdrBean.getDtlDocActDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDtlDocActivityMapHdrBean.getDtlDocId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDOCACTIVITYMAP.proc_UpsertWflDtlDocActMapHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oWflDtlDocActivityMapHdrBean.getHeaderPrimaryKey())); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDOCACTIVITYMAP.proc_DeleteWflDtlDocActMapHdr(?)"); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + saveDtlDocActivityDtls(sHeaderPrimaryKey, oDetailBeanArray); + } + + private void saveDtlDocActivityDtls(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bUpsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflDtlDocActivityMapDtlBean oWflDtlDocActivityMapDtlBean = oIt.next(); + if (oWflDtlDocActivityMapDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WFLDOCACTIVITYMAP.proc_UpsertWflDtlDocActMapDtl(?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDtlDocActivityMapDtlBean.getActivityId())); + oParameters.add(new DBObject(5, 1, 12, oWflDtlDocActivityMapDtlBean.getActivityFlag())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDtlDocActivityMapDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WFLDOCACTIVITYMAP.proc_UpsertWflDtlDocActMapDtl(?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDtlDocActivityMapDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDtlDocActivityMapDtlBean.getActivityId())); + oParameters.add(new DBObject(5, 1, 12, oWflDtlDocActivityMapDtlBean.getActivityFlag())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDtlDocActivityMapDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WFLDOCACTIVITYMAP.proc_DeleteWflDtlDocActMapDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDtlDocActivityMapDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update Nischt!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl Nischt!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHdr((WflDtlDocActivityMapHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("WflDtlDocActivityMap")) { + Iterator oIt = oDetailBeanArray.iterator(); + int count = 1; + while (oIt.hasNext()) { + WflDtlDocActivityMapDtlBean oWflDtlDocActivityMapDtlBean = oIt.next(); + if (!oWflDtlDocActivityMapDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oWflDtlDocActivityMapDtlBean, count, oDetailBeanArray); + count++; + } + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkUniqueHeader((WflDtlDocActivityMapHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("WflDtlDocActivityMap")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + checkUniqueMaterialDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + } + reportError(oErrorList); + } + + public LovVO getWflMapCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "Select distinct wdah.id,wdah.activity_hdr_code from wfl_doc_activity_hdr wdah where 1=1"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wdah.activity_hdr_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.WFLDtlDocActMap.dtlDocActCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("activity_hdr_code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWflDocCodeDtlLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "Select distinct wdtd.id,wdtd.doc_dtl_code,wdtd.doc_dtl_desc from wfl_doc_type_dtl wdtd where 1=1 "; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wdtd.doc_dtl_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wdtd.doc_dtl_desc) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.WFLDtlDocActMap.dtlDocCode"); + oHeaderList.add("WFL.WFLDtlDocActMap.dtlDocDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("doc_dtl_code").getString()); + oLOVBean.setDetailField3(oRow.get("doc_dtl_desc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWflActCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "Select distinct wam.id,wam.ACTIVITY_CODE,wam.ACTIVITY_DESC from wfl_activity_mst wam where 1=1 "; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wam.ACTIVITY_CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wam.ACTIVITY_DESC) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.WFLDtlDocActMap.activityCode"); + oHeaderList.add("WFL.WFLDtlDocActMap.activityDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("doc_dtl_code").getString()); + oLOVBean.setDetailField3(oRow.get("doc_dtl_desc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkMandatoryHdr(WflDtlDocActivityMapHdrBean oWflDtlDocActivityMapHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDtlDocActivityMapHdrBean.getDtlDocActCode())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocActMap.dtlDocActCode"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDtlDocActivityMapHdrBean.getDtlDocCode())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocActMap.dtlDocCode"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryfieldmissing", oParam, "E")); + } + reportError(oList); + } + + private void checkMandatoryDtls(WflDtlDocActivityMapDtlBean oWflDtlDocActivityMapDtlBean, int count, ArrayList oDetailBeanArray) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDtlDocActivityMapDtlBean.getActivityCode())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocActMap.activityCode"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDtlDocActivityMapDtlBean.getActivityDesc())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocActMap.activityDesc"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + reportError(oList); + } + + private void checkUniqueMaterialDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WflDtlDocActivityMapDtlBean oWflDtlDocActivityMapDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oWflDtlDocActivityMapDtlBean.getDetailId())) { + String sQuery = String.valueOf(" Select id as ID from WFL_DOC_ACTIVITY_DTL where ACTIVITY_ID= ").concat(String.valueOf(oWflDtlDocActivityMapDtlBean.getActivityCode())); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocActMap.activityCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.workflow.detail.UniqueKeyConstraint", oParams)); + } + } + rowCount++; + } + } + + private void checkUniqueHeader(WflDtlDocActivityMapHdrBean oWflDtlDocActivityMapHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from wfl_doc_activity_hdr where ACTIVITY_HDR_CODE= '").concat(String.valueOf(oWflDtlDocActivityMapHdrBean.getDtlDocActCode()))).concat(String.valueOf("' and DOC_TYPE_DTL_ID="))).concat(String.valueOf(oWflDtlDocActivityMapHdrBean.getDtlDocCode())); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWflDtlDocActivityMapHdrBean.getHeaderPrimaryKey())) { + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocActMap.dtlDocActCode"); + MessageKey oMessageKey1 = new MessageKey("WFL.WFLDtlDocActMap.dtlDocCode"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oParams.add(oMessageKey1); + throw new EnrgiseMessageKeyException("wenrgise.workflow.header.UniqueKeyConstraint", oParams, "E"); + } + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WflActivityMstBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WflActivityMstBO.java new file mode 100644 index 0000000..a0e4d74 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WflActivityMstBO.java @@ -0,0 +1,237 @@ +package wenrgise.workflow.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflActMstDtlBean; + +public class WflActivityMstBO extends BaseBO { + public WflActivityMstBO() {} + + public WflActivityMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getWflActivityDtlMetaInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean objBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 2, -5)); + arylstParameters.add(new DBObject(2, 2, 93)); + arylstParameters.add(new DBObject(3, 2, 12)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 4)); + ArrayList arylstOutArray = objBean.callProc(arylstParameters, "WflActivityMst.proc_GetActMstDtlMetaInfo(?,?,?,?,?)"); + RecordMetaInfo objRecordMetaInfo = new RecordMetaInfo(); + DBObject objTotalRecord = arylstOutArray.get(0); + objRecordMetaInfo.setRecordCount(((Long)objTotalRecord.getObject()).longValue()); + DBObject oTimeObject = arylstOutArray.get(1); + objRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + return objRecordMetaInfo; + } + + public ArrayList getWflActivityDtlInfo(long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean objBean = new DBUtilitiesBean(); + Timestamp tmstWhenPicked = null; + int count = 0; + ArrayList arylstDetailList = null; + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + arylstParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + ArrayList arylstOutArray = objBean.callProc(arylstParameters, "WflActivityMst.proc_GetActMstDtlInfo(?,?,?,?,?,?)"); + DBObject objOutObject = arylstOutArray.get(0); + ArrayList arylstList = (ArrayList)objOutObject.getObject(); + if (arylstList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.workflow.norecordfound", "M"); + QueryRow objRow = null; + HashMap objColumns = null; + Iterator itrIt = arylstList.iterator(); + while (itrIt.hasNext()) { + if (count == 0) + arylstDetailList = new ArrayList(); + count++; + objRow = itrIt.next(); + WflActMstDtlBean oWflActMstDtlBean = new WflActMstDtlBean(); + oWflActMstDtlBean.setDetailId(objRow.get("id").getString()); + oWflActMstDtlBean.setTxtAttrCode(objRow.get("activity_code").getString()); + oWflActMstDtlBean.setTxtAttrDesc(objRow.get("activity_desc").getString()); + arylstDetailList.add(oWflActMstDtlBean); + } + return arylstDetailList; + } + + private void saveWflActivityDtls(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflActMstDtlBean oWflActMstDtlBean = oIt.next(); + if (oWflActMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflActivityMst.proc_UpsertWflActivityMstDtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWflActMstDtlBean.getTxtAttrCode())); + oParameters.add(new DBObject(4, 1, 12, oWflActMstDtlBean.getTxtAttrDesc())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflActMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflActivityMst.proc_UpsertWflActivityMstDtl(?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflActMstDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oWflActMstDtlBean.getTxtAttrCode())); + oParameters.add(new DBObject(4, 1, 12, oWflActMstDtlBean.getTxtAttrDesc())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflActMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WflActivityMst.proc_DeleteWflActivityMstDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflActMstDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void initializeBOImpl() { + this.headerTable = "WFL_ACTIVITY_MST"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("WflActivityMst")) + saveWflActivityDtls(sHeaderPrimaryKey, oDetailBeanArray); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update Nischt!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl Nischt!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("WflActivityMst")) { + Iterator oIt = oDetailBeanArray.iterator(); + int count = 1; + while (oIt.hasNext()) { + WflActMstDtlBean oWflActMstDtlBean = oIt.next(); + if (!oWflActMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oWflActMstDtlBean, count, oDetailBeanArray); + count++; + } + } + reportError(oErrorList); + } + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bDetailDataChanged) { + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("WflActivityMst")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + checkUniqueMaterialDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtAttrCode", "wfl.WflActivityMst.attrCode", oErrorList, true); + } + reportError(oErrorList); + } + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + private void checkMandatoryDtls(WflActMstDtlBean oWflActMstDtlBean, int count, ArrayList oDetailBeanArray) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflActMstDtlBean.getTxtAttrCode())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("wfl.WflActivityMst.attrCode"); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflActMstDtlBean.getTxtAttrDesc())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("wfl.WflActivityMst.attrDesc"); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + private void checkUniqueMaterialDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WflActMstDtlBean oWflActMstDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oWflActMstDtlBean.getDetailId())) { + String sQuery = String.valueOf(String.valueOf(" Select id as ID from WFL_ACTIVITY_MST where activity_code='").concat(String.valueOf(oWflActMstDtlBean.getTxtAttrCode()))).concat(String.valueOf("' ")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("wfl.WflActivityMst.attrCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.workflow.detail.UniqueKeyConstraint", oParams)); + } + } + rowCount++; + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WflDOPGrpBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WflDOPGrpBO.java new file mode 100644 index 0000000..727dbf4 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WflDOPGrpBO.java @@ -0,0 +1,452 @@ +package wenrgise.workflow.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflDOPGrpDtlBean; +import wenrgise.workflow.bean.WflDOPGrpHdrBean; +import wenrgise.workflow.vo.WflDOPGrpQVO; + +public class WflDOPGrpBO extends BaseBO { + public WflDOPGrpBO() {} + + public WflDOPGrpBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDOPGrpHdrBean oWflDOPGrpHdrBean = (WflDOPGrpHdrBean)oBaseHeaderBean; + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader(oWflDOPGrpHdrBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("WflDOPGrp")) { + Iterator oIt = oDetailBeanArray.iterator(); + int count = 1; + while (oIt.hasNext()) { + WflDOPGrpDtlBean oWflDOPGrpDtlBean = oIt.next(); + if (!oWflDOPGrpDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oWflDOPGrpDtlBean, count, oDetailBeanArray); + count++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(WflDOPGrpHdrBean oWflDOPGrpHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDOPGrpHdrBean.getGrpCode())) { + MessageKey oMessageKey = new MessageKey("WFL.WflDOPGrp.grpCode"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (bHeaderDataChanged) + checkUniqueHeader((WflDOPGrpHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("WflDOPGrp")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtempNo", "WFL.WflDOPGrp.empNo", oList, true); + checkUniqueDOPGrpDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oList); + checkDefaultMember(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oList); + } + reportError(oList); + } + + public void initializeBOImpl() { + this.headerTable = "wfl_dop_groups"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("WflDOPGrp")) + saveWflDOPGrpDtls(sHeaderPrimaryKey, oDetailBeanArray); + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + WflDOPGrpHdrBean oWflDOPGrpHdrBean = (WflDOPGrpHdrBean)oBaseHeaderBean; + String sGrpFlag = String.valueOf(oWflDOPGrpHdrBean.getGrpFlag()).equalsIgnoreCase("on") ? "Y" : "N"; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWflDOPGrpHdrBean.getGrpCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDOPGrpHdrBean.getGrpDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDOPGrpHdrBean.getRemarks())); + oParameters.add(new DBObject(6, 1, 12, sGrpFlag)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDOPGroupMst.proc_UpsertWflDopGrpHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWflDOPGrpHdrBean.getGrpCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDOPGrpHdrBean.getGrpDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDOPGrpHdrBean.getRemarks())); + oParameters.add(new DBObject(6, 1, 12, sGrpFlag)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDOPGroupMst.proc_UpsertWflDopGrpHdr(?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oWflDOPGrpHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDOPGroupMst.proc_DeleteWflDopGrpHdr(?,?,?,?)"); + } + return returnString; + } + + public void saveWflDOPGrpDtls(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflDOPGrpDtlBean oWflDOPGrpDtlBean = oIt.next(); + String sDfliMem = String.valueOf(oWflDOPGrpDtlBean.getDfltMembr()).equalsIgnoreCase("on") ? "Y" : "N"; + if (oWflDOPGrpDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDOPGroupMst.proc_UpsertWflDopGrpMembers(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDOPGrpDtlBean.getEmpId())); + oParameters.add(new DBObject(5, 1, 12, oWflDOPGrpDtlBean.getTxtHiLevel())); + oParameters.add(new DBObject(6, 1, 12, sDfliMem)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDOPGrpDtlBean.getStatus().equals("U")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDOPGroupMst.proc_UpsertWflDopGrpMembers(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDOPGrpDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDOPGrpDtlBean.getEmpId())); + oParameters.add(new DBObject(5, 1, 12, oWflDOPGrpDtlBean.getTxtHiLevel())); + oParameters.add(new DBObject(6, 1, 12, sDfliMem)); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDOPGrpDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WflDOPGroupMst.proc_DeleteWflDopGrpMembers(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDOPGrpDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public RecordMetaInfo getWflDOPGrpHdrMetaInfo(WflDOPGrpQVO oWflDOPGrpQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDOPGrpQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDOPGroupMst.proc_GetWFlDOPHdrMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getWflDOPGrpHdrInfo(WflDOPGrpQVO oWflDOPGrpQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oWflDOPGrpQVO == null) + oWflDOPGrpQVO = new WflDOPGrpQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oWflDOPGrpQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDOPGroupMst.proc_GetWFlDOPHdrInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.workflow.norecordfound", "M"); + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + WflDOPGrpHdrBean oWflDOPGrpHdrBean = new WflDOPGrpHdrBean(); + oWflDOPGrpHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oWflDOPGrpHdrBean.setGrpCode(oRow.get("GrCode").getString()); + oWflDOPGrpHdrBean.setGrpDesc(oRow.get("GrType").getString()); + oWflDOPGrpHdrBean.setRemarks(oRow.get("Remarks").getString()); + oWflDOPGrpHdrBean.setGrpFlag(String.valueOf(oRow.get("ValFlag").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oHeaderList.add(oWflDOPGrpHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getWflDOPGrpDtlMetaInfo(String sPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(sPrimaryKey))); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDOPGroupMst.proc_GetWFlDOPGrpDtlMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getWflDOPGrpDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDOPGroupMst.proc_GetWFlDOPGrpDtlInfo(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflDOPGrpDtlBean oWflDOPGrpDtlBean = new WflDOPGrpDtlBean(); + oWflDOPGrpDtlBean.setDetailId(oRow.get("Id").getString()); + oWflDOPGrpDtlBean.setTxtempNo(oRow.get("EmpNo").getString()); + oWflDOPGrpDtlBean.setEmpId(oRow.get("e_per_dtl_id").getString()); + oWflDOPGrpDtlBean.setTxtEmpName(oRow.get("MEMNAME").getString()); + oWflDOPGrpDtlBean.setTxtHiLevel(oRow.get("Hlevel").getString()); + oWflDOPGrpDtlBean.setDfltMembr(String.valueOf(oRow.get("DfltMem").getString()).equalsIgnoreCase("Y") ? "on" : "off"); + oDtlList.add(oWflDOPGrpDtlBean); + } + return oDtlList; + } + + public LovVO getWflDOPGrpCodeQLOV(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "select distinct wdg.id as id,wdg.group_code as GrCode from wfl_dop_groups wdg"; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where upper(wdg.group_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.WflDOPGrp.grpCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("GrCode").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkDefaultMember(String sHeaderPrimKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + ArrayList oOutArray = null; + Iterator oDetailBeanIterator = oDetailBeanArray.iterator(); + String oBeanUpdate = new String(); + boolean flag = false; + while (oDetailBeanIterator.hasNext()) { + WflDOPGrpDtlBean oWflDOPGrpDtlBean = oDetailBeanIterator.next(); + if (oWflDOPGrpDtlBean.getStatus().equalsIgnoreCase("U") || oWflDOPGrpDtlBean.getStatus().equalsIgnoreCase("D")) { + if (flag == true) + oBeanUpdate = String.valueOf(oBeanUpdate).concat(String.valueOf(",")); + oBeanUpdate = String.valueOf(oBeanUpdate).concat(String.valueOf(oWflDOPGrpDtlBean.getDetailId())); + flag = true; + } + } + String sQuery = new String(); + if (!oBeanUpdate.equalsIgnoreCase("")) { + sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" select t.id from wfl_dop_group_members t where t.dop_group_id=").concat(String.valueOf(sHeaderPrimKey))).concat(String.valueOf(" and t.id not in ("))).concat(String.valueOf(oBeanUpdate))).concat(String.valueOf(") and t.default_member='Y' ")); + } else { + sQuery = String.valueOf(String.valueOf(" select t.id from wfl_dop_group_members t where t.dop_group_id=").concat(String.valueOf(sHeaderPrimKey))).concat(String.valueOf(" and t.default_member='Y' ")); + } + System.out.println(sQuery); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList arylstDefaultMemberNo = oBean1.executeQuery(sQuery); + ArrayList arylstCombMatIds = new ArrayList(); + if (arylstDefaultMemberNo.size() > 1) + throw new EnrgiseApplicationException("WFL.WflDOPGrp.noExceedingOne", "E"); + int iPersons = arylstDefaultMemberNo.size(); + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflDOPGrpDtlBean oWflDOPGrpDtlBean = oIt.next(); + if (oWflDOPGrpDtlBean.getStatus().equalsIgnoreCase("U")) + if (oWflDOPGrpDtlBean.getDfltMembr().equalsIgnoreCase("on")) + iPersons++; + if (oWflDOPGrpDtlBean.getStatus().equalsIgnoreCase("D")) + if (oWflDOPGrpDtlBean.getDfltMembr().equalsIgnoreCase("off")) + iPersons--; + if (oWflDOPGrpDtlBean.getStatus().equalsIgnoreCase("N")) + if (oWflDOPGrpDtlBean.getDfltMembr().equalsIgnoreCase("on")) + iPersons++; + } + if (iPersons > 1) + throw new EnrgiseApplicationException("WFL.WflDOPGrp.noExceedingOne", "E"); + if (iPersons < 1) + throw new EnrgiseApplicationException("WFL.WflDOPGrp.noLessthanOne", "E"); + } + + private void checkUniqueDOPGrpDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WflDOPGrpDtlBean oWflDOPGrpDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oWflDOPGrpDtlBean.getEmpId())) { + String sQuery = String.valueOf(" Select id as ID from wfl_dop_group_members a where a.dop_group_id= ").concat(String.valueOf(sHeaderPrimaryKey)); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and a.e_per_dtl_id= "))).concat(String.valueOf(oWflDOPGrpDtlBean.getEmpId())); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WflDOPGrp.empNo"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.workflow.detail.UniqueKeyConstraint", oParams)); + } + } + rowCount++; + } + } + + private void checkMandatoryDtls(WflDOPGrpDtlBean oWflDOPGrpDtlBean, int count, ArrayList oDetailBeanArray) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDOPGrpDtlBean.getTxtempNo())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WflDOPGrp.empNo"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + reportError(oList); + } + + private void checkUniqueHeader(WflDOPGrpHdrBean oWflDOPGrpHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" select t.id from wfl_dop_groups t where t.group_code='").concat(String.valueOf(oWflDOPGrpHdrBean.getGrpCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWflDOPGrpHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.header.uniqueConstraintViolated", "E"); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WflDelegationMstBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WflDelegationMstBO.java new file mode 100644 index 0000000..5d3d171 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WflDelegationMstBO.java @@ -0,0 +1,453 @@ +package wenrgise.workflow.ejb.business; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflDelegateMstDtlBean; +import wenrgise.workflow.bean.WflDelegateMstHdrBean; +import wenrgise.workflow.vo.WflDelegationQVO; + +public class WflDelegationMstBO extends BaseBO { + public WflDelegationMstBO() {} + + public WflDelegationMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getWflDelegationHdrMetaInfo(WflDelegationQVO oWflDelegationQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDelegationQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 1, 12, oWflDelegationQVO.getEmpId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDELEGATIONMST.proc_GetWFlDelegationMetaInfo(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getWflDelegationHdrInfo(WflDelegationQVO oWflDelegationQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList oHeaderList = null; + if (oWflDelegationQVO == null) + oWflDelegationQVO = new WflDelegationQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oWflDelegationQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 1, 12, oWflDelegationQVO.getEmpId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDELEGATIONMST.proc_GetWFlDelegationHdrInfo(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.workflow.norecordfound", "M"); + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + WflDelegateMstHdrBean oWflDelegateMstHdrBean = new WflDelegateMstHdrBean(); + oWflDelegateMstHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oWflDelegateMstHdrBean.setFromDate(EnrgiseUtil.convertToString(oRow.get("FROM_DATE").getDate())); + oWflDelegateMstHdrBean.setToDate(EnrgiseUtil.convertToString(oRow.get("TO_DATE").getDate())); + oWflDelegateMstHdrBean.setDelegateAll(oRow.get("ALL_DOC").getString().equalsIgnoreCase("Y") ? "on" : "off"); + oWflDelegateMstHdrBean.setEmpId(oRow.get("DELEGATED_ID").getString()); + oWflDelegateMstHdrBean.setEmpNo(oRow.get("EMP_NO").getString()); + oWflDelegateMstHdrBean.setEmpName(oRow.get("EMP_NAME").getString()); + oWflDelegateMstHdrBean.setRemarks(oRow.get("REMARKS").getString()); + oHeaderList.add(oWflDelegateMstHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getWflDelegationDtlMetaInfo(String sPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDELEGATIONMST.proc_GetWFlDelegDtlMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getWflDelegationDtlInfo(String sPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDELEGATIONMST.proc_GetWFlDelegationDtlInfo(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflDelegateMstDtlBean oWflDelegateMstDtlBean = new WflDelegateMstDtlBean(); + oWflDelegateMstDtlBean.setDetailId(oRow.get("Id").getString()); + oWflDelegateMstDtlBean.setTxtDocTypeId(oRow.get("doc_type_id").getString()); + oWflDelegateMstDtlBean.setTxtDocType(oRow.get("doc_dtl_code").getString()); + oWflDelegateMstDtlBean.setTxtDesc(oRow.get("doc_dtl_desc").getString()); + oWflDelegateMstDtlBean.setDisabbutDocType("true"); + oDtlList.add(oWflDelegateMstDtlBean); + } + return oDtlList; + } + + public void initializeBOImpl() { + this.headerTable = "wfl_delegation_hdr"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + WflDelegateMstHdrBean oWflDelegateMstHdrBean = (WflDelegateMstHdrBean)oBaseHeaderBean; + if (oWflDelegateMstHdrBean.getDelegateAll().equalsIgnoreCase("off") || oWflDelegateMstHdrBean.getDelegateAll().equalsIgnoreCase("")) + oWflDelegateMstHdrBean.setDelegateAllDoc("N"); + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(4, 1, 12, oWflDelegateMstHdrBean.getEmpId())); + oParameters.add(new DBObject(5, 1, 12, oWflDelegateMstHdrBean.getFromDate())); + oParameters.add(new DBObject(6, 1, 12, oWflDelegateMstHdrBean.getToDate())); + oParameters.add(new DBObject(7, 1, 12, oWflDelegateMstHdrBean.getDelegateAllDoc())); + oParameters.add(new DBObject(8, 1, 12, oWflDelegateMstHdrBean.getRemarks())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDELEGATIONMST.proc_UpsertWflDelegationHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDelegateMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, this.oUserInfo.getUserTypeId())); + oParameters.add(new DBObject(4, 1, 12, oWflDelegateMstHdrBean.getEmpId())); + oParameters.add(new DBObject(5, 1, 12, oWflDelegateMstHdrBean.getFromDate())); + oParameters.add(new DBObject(6, 1, 12, oWflDelegateMstHdrBean.getToDate())); + oParameters.add(new DBObject(7, 1, 12, oWflDelegateMstHdrBean.getDelegateAllDoc())); + oParameters.add(new DBObject(8, 1, 12, oWflDelegateMstHdrBean.getRemarks())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(11, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(12, 2, 12)); + oParameters.add(new DBObject(13, 2, 12)); + oParameters.add(new DBObject(14, 2, 12)); + oParameters.add(new DBObject(15, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDELEGATIONMST.proc_UpsertWflDelegationHdr(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oWflDelegateMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLDELEGATIONMST.proc_DeleteWflDelegationHdr(?,?,?,?)"); + } + return returnString; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("WflDelegationMst")) + saveWflDelegationDtls(sHeaderPrimaryKey, oDetailBeanArray); + } + + public void saveWflDelegationDtls(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflDelegateMstDtlBean oWflDelegateMstDtlBean = oIt.next(); + if (oWflDelegateMstDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WFLDELEGATIONMST.proc_UpsertWflDelegationDtl(?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDelegateMstDtlBean.getTxtDocTypeId())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDelegateMstDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WFLDELEGATIONMST.proc_UpsertWflDelegationDtl(?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDelegateMstDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDelegateMstDtlBean.getTxtDocTypeId())); + oParameters.add(new DBObject(5, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDelegateMstDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WFLDELEGATIONMST.proc_DeleteWflDelegationDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDelegateMstDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + System.out.println("Update Nischt!"); + } + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl Nischt!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + WflDelegateMstHdrBean oWflDelegateMstHdrBean = (WflDelegateMstHdrBean)oBaseHeaderBean; + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader(oWflDelegateMstHdrBean); + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("WflDelegationMst")) { + Iterator oIt = oDetailBeanArray.iterator(); + int count = 1; + while (oIt.hasNext()) { + WflDelegateMstDtlBean oWflDelegateMstDtlBean = oIt.next(); + if (!oWflDelegateMstDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oWflDelegateMstDtlBean, count, oDetailBeanArray); + count++; + } + } + reportError(oErrorList); + } + + private void checkMandatoryHeader(WflDelegateMstHdrBean oWflDelegateMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDelegateMstHdrBean.getEmpNo())) { + MessageKey oMessageKey = new MessageKey("WFL.WflDelegateMst.empNo"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDelegateMstHdrBean.getFromDate())) { + MessageKey oMessageKey = new MessageKey("WFL.WflDelegateMst.fromDate"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDelegateMstHdrBean.getToDate())) { + MessageKey oMessageKey = new MessageKey("WFL.WflDelegateMst.toDate"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + private void checkMandatoryDtls(WflDelegateMstDtlBean oWflDelegateMstDtlBean, int count, ArrayList oDetailBeanArray) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDelegateMstDtlBean.getTxtDocType())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WflDelegateMst.docType"); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDelegateMstDtlBean.getTxtDesc())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WflDelegateMst.desc"); + oParam.add(oMessageKey); + oParam.add(new Integer(count)); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDelegateMstHdrBean oWflDelegateMstHdrBean = (WflDelegateMstHdrBean)oBaseHeaderBean; + ArrayList oErrorList = new ArrayList(); + checkDatesConstraint(oWflDelegateMstHdrBean, oErrorList); + checkDuplicateHeader(oWflDelegateMstHdrBean, oErrorList); + checkDelegationFlag(oWflDelegateMstHdrBean, oErrorList); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + if (sScreenName.equalsIgnoreCase("WflDelegationMst")) { + checkUniqueMaterialDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtDocType", "WFL.WflDelegateMst.docType", oErrorList, true); + } + reportError(oErrorList); + } + + private void checkUniqueMaterialDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WflDelegateMstDtlBean oWflDelegateMstDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oWflDelegateMstDtlBean.getDetailId())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select id as ID from wfl_delegation_dtl where doc_type_id='").concat(String.valueOf(oWflDelegateMstDtlBean.getTxtDocTypeId()))).concat(String.valueOf("' and hdr_id = '"))).concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf("' ")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWflDelegateMstDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WflDelegateMst.docType"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.workflow.detail.UniqueKeyConstraint", oParams)); + } + } + rowCount++; + } + rowCount++; + } + reportError(oErrorList); + } + + private void checkDatesConstraint(WflDelegateMstHdrBean oWflDelegateMstHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); + int dateFlag = EnrgiseUtil.compareDates(dateFormat, oWflDelegateMstHdrBean.getFromDate(), oWflDelegateMstHdrBean.getToDate()); + if (dateFlag == 1 && dateFlag != -2) + oErrorList.add(new EnrgiseApplicationException("WFL.WflDelegateMst.dateConstraint")); + } + + public void checkDelegationFlag(WflDelegateMstHdrBean oWflDelegateMstHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + long sArraySize = getWflDelegationDtlMetaInfo(oWflDelegateMstHdrBean.getHeaderPrimaryKey()).getRecordCount(); + if (EnrgiseUtil.checkString(oWflDelegateMstHdrBean.getDelegateAllDoc())) + if (oWflDelegateMstHdrBean.getDelegateAllDoc().equalsIgnoreCase("Y") && sArraySize != 0L) + oErrorList.add(new EnrgiseApplicationException("WFL.WflDelegateMst.deleteDetailRec")); + } + + public LovVO getWflDtlDocTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "select wdtd.id,wdtd.doc_dtl_code,wdtd.doc_dtl_desc from wfl_doc_type_dtl wdtd "; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where upper(wdtd.doc_dtl_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.WflDelegateMst.docType"); + oHeaderList.add("WFL.WflDelegateMst.desc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("doc_dtl_code").getString()); + oLOVBean.setDetailField3(oRow.get("doc_dtl_desc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public void checkDuplicateHeader(WflDelegateMstHdrBean oWflDelegateMstHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("select t.id from wfl_delegation_hdr t, (select '").concat(String.valueOf(oWflDelegateMstHdrBean.getFromDate()))).concat(String.valueOf("' a, '"))).concat(String.valueOf(oWflDelegateMstHdrBean.getToDate()))).concat(String.valueOf("' b from dual) x where x.a between t.from_dt and t.to_dt and x.b between t.from_dt and t.to_dt and t.delegator_id = "))).concat(String.valueOf(this.oUserInfo.getUserId()))).concat(String.valueOf(" and t.delegated_id='"))).concat(String.valueOf(oWflDelegateMstHdrBean.getEmpId()))).concat(String.valueOf("' and t.all_doc = '"))).concat(String.valueOf(oWflDelegateMstHdrBean.getDelegateAllDoc()))).concat(String.valueOf("' ")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWflDelegateMstHdrBean.getHeaderPrimaryKey())) + oErrorList.add(new EnrgiseApplicationException("WFL.WflDelegateMst.alreadyDelegated")); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WflDocMstBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WflDocMstBO.java new file mode 100644 index 0000000..9da05a6 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WflDocMstBO.java @@ -0,0 +1,824 @@ +package wenrgise.workflow.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflDocMstAttrDtlBean; +import wenrgise.workflow.bean.WflDocMstConditionsDtlBean; +import wenrgise.workflow.bean.WflDocMstHdrBean; +import wenrgise.workflow.bean.WflDtlDocTypeDtlBean; +import wenrgise.workflow.vo.WflDocMstQVO; + +public class WflDocMstBO extends BaseBO { + public WflDocMstBO() {} + + public WflDocMstBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public void updateHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException {} + + public String saveNewHeaderImpl(BaseHeaderBean oBaseHeaderBean) throws EnrgiseSystemException { + return "saveNewHeaderImpl ille!"; + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + checkMandatoryHdr((WflDocMstHdrBean)oBaseHeaderBean); + checkNumericFields((WflDocMstHdrBean)oBaseHeaderBean, oErrorList); + } + if (bDetailDataChanged) + if (sScreenName.equalsIgnoreCase("WflWorkflowConditions")) { + Iterator oIt = oDetailBeanArray.iterator(); + int count = 1; + while (oIt.hasNext()) { + WflDocMstConditionsDtlBean oWflDocMstConditionsDtlBean = oIt.next(); + if (!oWflDocMstConditionsDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oWflDocMstConditionsDtlBean, count, oDetailBeanArray); + count++; + } + } else if (sScreenName.equalsIgnoreCase("WFLDoctAttrDetail")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int count = 1; + while (oIt1.hasNext()) { + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt1.next(); + if (!oWflDocMstAttrDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtls(oWflDocMstAttrDtlBean, count, oErrorList); + count++; + } + } else if (sScreenName.equalsIgnoreCase("WflDtlDocType")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int count = 1; + while (oIt1.hasNext()) { + WflDtlDocTypeDtlBean oWflDtlDocTypeDtlBean = oIt1.next(); + if (!oWflDtlDocTypeDtlBean.getStatus().equalsIgnoreCase("D")) + checkMandatoryDtlsDocType(oWflDtlDocTypeDtlBean, count, oErrorList); + count++; + } + } + reportError(oErrorList); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (sScreenName.equalsIgnoreCase("WFLDoctAttrDetail")) + checkUniqueHeader((WflDocMstHdrBean)oBaseHeaderBean); + if (bDetailDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) { + if (sScreenName.equalsIgnoreCase("WflWorkflowConditions")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + checkUniqueMaterialDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + } + if (sScreenName.equalsIgnoreCase("WflDtlDocType")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtDtlDocCode", "WFL.WFLDtlDocType.dtlDocCode", oErrorList, true); + checkUniqueDocDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + } + if (sScreenName.equalsIgnoreCase("WFLDoctAttrDetail")) { + EnrgiseUtil.checkDuplicate(oDetailBeanArray, "txtAttrName", "WFL.WFLDocAttrDtl.attbName", oErrorList, true); + checkUniqueDocAttrDtl(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailBeanArray, oErrorList); + } + } + reportError(oErrorList); + } + + public void initializeBOImpl() { + this.headerTable = "WFL_DOC_TYPE_MST"; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("WFLDoctAttrDetail")) { + saveWflDocAttrDtls(sHeaderPrimaryKey, oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("WflWorkflowConditions")) { + saveWflDocConditionsDtls(sHeaderPrimaryKey, oDetailBeanArray); + } else if (sScreenName.equalsIgnoreCase("WflDtlDocType")) { + saveWflDtlDocTypeDtls(sHeaderPrimaryKey, oDetailBeanArray); + } + } + + public RecordMetaInfo getWflDocTypeHdrMetaInfo(WflDocMstQVO oWflDocMstQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDocMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_GetWFlDocTypeHdrMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + return oRecordMetaInfo; + } + + public ArrayList getWflDocTypeHdrInfo(WflDocMstQVO oWflDocMstQVO, long lStartPosition, long lLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + ArrayList oHeaderList = null; + if (oWflDocMstQVO == null) + oWflDocMstQVO = new WflDocMstQVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, -5, new Long(lStartPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oWflDocMstQVO.getHeaderPrimaryKey())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_GetWFlDocTypeHdrInfo(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.workflow.norecordfound", "M"); + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oHeaderList = new ArrayList(); + count++; + oRow = oIt.next(); + WflDocMstHdrBean oWflDocMstHdrBean = new WflDocMstHdrBean(); + oWflDocMstHdrBean.setHeaderPrimaryKey(oRow.get("ID").getString()); + oWflDocMstHdrBean.setDocumentCode(oRow.get("doc_type_code").getString()); + oWflDocMstHdrBean.setDocumentDesc(oRow.get("doc_type_desc").getString()); + oWflDocMstHdrBean.setMaxAppLevel(oRow.get("max_aprooval_level").getString()); + oHeaderList.add(oWflDocMstHdrBean); + } + return oHeaderList; + } + + public RecordMetaInfo getWflDocTypeAttrDtlMetaInfo(String sPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(sPrimaryKey))); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_GetWFlDocTypeDtlMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getWflDocTypeAttrDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_GetWFlDocTypeDtlInfo(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = new WflDocMstAttrDtlBean(); + oWflDocMstAttrDtlBean.setDetailId(oRow.get("Id").getString()); + oWflDocMstAttrDtlBean.setTxtAttrName(oRow.get("attr_name").getString()); + oWflDocMstAttrDtlBean.setTxtType(oRow.get("attr_type").getString()); + oWflDocMstAttrDtlBean.setTxtDesc(oRow.get("attr_desc").getString()); + oWflDocMstAttrDtlBean.setTxtLovKey(oRow.get("attr_lov_key").getString()); + oDtlList.add(oWflDocMstAttrDtlBean); + } + return oDtlList; + } + + public RecordMetaInfo getWflDocTypeConditionsDtlMetaInfo(String sPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(sPrimaryKey))); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_GetWFlDocCondDtlMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getWflDocTypeConditionsDtlInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_GetWFlDocCondDtlInfo(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflDocMstConditionsDtlBean oWflDocMstConditionsDtlBean = new WflDocMstConditionsDtlBean(); + oWflDocMstConditionsDtlBean.setDetailId(oRow.get("Id").getString()); + oWflDocMstConditionsDtlBean.setDocTypeDtlDesc(oRow.get("condition_desc").getString()); + oWflDocMstConditionsDtlBean.setConditionExpression(oRow.get("condition_expression").getString()); + oDtlList.add(oWflDocMstConditionsDtlBean); + } + return oDtlList; + } + + public RecordMetaInfo getDtlDocTypeMetaInfo(String sPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new String(sPrimaryKey))); + oParameters.add(new DBObject(2, 2, -5)); + oParameters.add(new DBObject(3, 2, 93)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_GetDtlDocTypeMetaInfo(?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getDtlDocTypeInfo(String lPrimaryKey, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, lPrimaryKey)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_DtlDocTypeInfo(?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflDtlDocTypeDtlBean oWflDtlDocTypeDtlBean = new WflDtlDocTypeDtlBean(); + oWflDtlDocTypeDtlBean.setDetailId(oRow.get("Id").getString()); + oWflDtlDocTypeDtlBean.setTxtDtlDocCode(oRow.get("doc_dtl_code").getString()); + oWflDtlDocTypeDtlBean.setTxtDtlDocDesc(oRow.get("doc_dtl_desc").getString()); + oWflDtlDocTypeDtlBean.setTxtConditionId(oRow.get("condition_id").getString()); + oWflDtlDocTypeDtlBean.setTxtPriority(oRow.get("priority").getString()); + oWflDtlDocTypeDtlBean.setTxtExp(oRow.get("condition_expression").getString()); + oWflDtlDocTypeDtlBean.setTxtConDesc(oRow.get("condition_desc").getString()); + oWflDtlDocTypeDtlBean.setDisabbutCondDesc("true"); + oDtlList.add(oWflDtlDocTypeDtlBean); + } + return oDtlList; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + String returnString = null; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + WflDocMstHdrBean oWflDocMstHdrBean = (WflDocMstHdrBean)oBaseHeaderBean; + if (ScreenMode.equalsIgnoreCase("N")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWflDocMstHdrBean.getDocumentCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDocMstHdrBean.getDocumentDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDocMstHdrBean.getMaxAppLevel())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_UpsertWflDocTypeMstHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("U")) { + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDocMstHdrBean.getHeaderPrimaryKey())); + oParameters.add(new DBObject(3, 1, 12, oWflDocMstHdrBean.getDocumentCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDocMstHdrBean.getDocumentDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDocMstHdrBean.getMaxAppLevel())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 2, 12)); + oParameters.add(new DBObject(10, 2, 12)); + oParameters.add(new DBObject(11, 2, 12)); + oParameters.add(new DBObject(12, 2, 12)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_UpsertWflDocTypeMstHdr(?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + } else if (ScreenMode.equalsIgnoreCase("D")) { + oParameters.add(new DBObject(1, 1, 12, oWflDocMstHdrBean.getHeaderPrimaryKey())); + ArrayList oOutArray = oBean.callProc(oParameters, "WflDocumentMst.proc_DeleteWflDocTypeMstHdr(?)"); + } + return returnString; + } + + private void saveWflDocAttrDtls(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt.next(); + if (oWflDocMstAttrDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDocumentMst.proc_UpsertWflDocMstAttrDtl(?,?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDocMstAttrDtlBean.getTxtAttrName())); + oParameters.add(new DBObject(5, 1, 12, oWflDocMstAttrDtlBean.getTxtDesc())); + oParameters.add(new DBObject(6, 1, 12, oWflDocMstAttrDtlBean.getTxtType())); + oParameters.add(new DBObject(7, 1, 12, oWflDocMstAttrDtlBean.getTxtLovKey())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDocMstAttrDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDocumentMst.proc_UpsertWflDocMstAttrDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDocMstAttrDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDocMstAttrDtlBean.getTxtAttrName())); + oParameters.add(new DBObject(5, 1, 12, oWflDocMstAttrDtlBean.getTxtDesc())); + oParameters.add(new DBObject(6, 1, 12, oWflDocMstAttrDtlBean.getTxtType())); + oParameters.add(new DBObject(7, 1, 12, oWflDocMstAttrDtlBean.getTxtLovKey())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDocMstAttrDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WflDocumentMst.proc_DeleteWflDocMstAttrDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDocMstAttrDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveWflDocConditionsDtls(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflDocMstConditionsDtlBean oWflDocMstConditionsDtlBean = oIt.next(); + if (oWflDocMstConditionsDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDocumentMst.proc_UpsertWflDocMstCondDtl(?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDocMstConditionsDtlBean.getDocTypeDtlDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDocMstConditionsDtlBean.getConditionExpression())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDocMstConditionsDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDocumentMst.proc_UpsertWflDocMstCondDtl(?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDocMstConditionsDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, sHeaderPrimaryKey)); + oParameters.add(new DBObject(4, 1, 12, oWflDocMstConditionsDtlBean.getDocTypeDtlDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDocMstConditionsDtlBean.getConditionExpression())); + oParameters.add(new DBObject(6, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDocMstConditionsDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WflDocumentMst.proc_DeleteWflDocMstCondDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDocMstConditionsDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + private void saveWflDtlDocTypeDtls(String sHeaderPrimaryKey, ArrayList oDetailBeanArray) throws EnrgiseSystemException { + boolean bInsert = false; + boolean bUpdate = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WflDtlDocTypeDtlBean oWflDtlDocTypeDtlBean = oIt.next(); + if (oWflDtlDocTypeDtlBean.getStatus().equals("N")) { + if (!bInsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDocumentMst.proc_UpsertWflDtlDocTypeDtls(?,?,?,?,?,?,?,?,?)"); + bInsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWflDtlDocTypeDtlBean.getTxtDtlDocCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDtlDocTypeDtlBean.getTxtDtlDocDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDtlDocTypeDtlBean.getTxtConditionId())); + oParameters.add(new DBObject(6, 1, 12, oWflDtlDocTypeDtlBean.getTxtPriority())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDtlDocTypeDtlBean.getStatus().equals("U")) { + if (!bUpdate) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflDocumentMst.proc_UpsertWflDtlDocTypeDtls(?,?,?,?,?,?,?,?,?)"); + bUpdate = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDtlDocTypeDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oWflDtlDocTypeDtlBean.getTxtDtlDocCode())); + oParameters.add(new DBObject(4, 1, 12, oWflDtlDocTypeDtlBean.getTxtDtlDocDesc())); + oParameters.add(new DBObject(5, 1, 12, oWflDtlDocTypeDtlBean.getTxtConditionId())); + oParameters.add(new DBObject(6, 1, 12, oWflDtlDocTypeDtlBean.getTxtPriority())); + oParameters.add(new DBObject(7, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWflDtlDocTypeDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WflDocumentMst.proc_DeleteWflDtlDocTypeDtls(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflDtlDocTypeDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bInsert) + oBean.executeBatch(); + if (bUpdate) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public LovVO getWflDocCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "Select distinct wdtm.id as Id,wdtm.doc_type_code as doc_type_code,wdtm.DOC_TYPE_DESC as DOC_TYPE_DESC,wdtm.max_aprooval_level as max_aprooval_level from wfl_doc_type_mst wdtm"; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where upper(wdtm.doc_type_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.WFLDocAttrDtl.documentCode"); + oHeaderList.add("WFL.WFLDocAttrDtl.documentDesc"); + oHeaderList.add("WFL.WFLDocAttrDtl.maxAppLevel"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("Id").getString()); + oLOVBean.setDetailField2(oRow.get("doc_type_code").getString()); + oLOVBean.setDetailField3(oRow.get("DOC_TYPE_DESC").getString()); + oLOVBean.setDetailField4(oRow.get("max_aprooval_level").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWflDtlDocCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = String.valueOf("select wc.id,wc.condition_desc,wc.condition_expression from wfl_condition wc where wc.doc_type_hdr_id=").concat(String.valueOf(oLovQueryVO.getProperty("documentId"))); + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wc.condition_desc) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.WFLDtlDocType.conditionDesc"); + oHeaderList.add("WFL.WFLDtlDocType.exp"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("condition_desc").getString()); + oLOVBean.setDetailField3(oRow.get("condition_expression").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + private void checkMandatoryDtls(WflDocMstConditionsDtlBean oWflDocMstConditionsDtlBean, int count, ArrayList oDetailBeanArray) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDocMstConditionsDtlBean.getDocTypeDtlDesc())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("wfl.WorkFlowConditions.docDtlDesc"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDocMstConditionsDtlBean.getConditionExpression())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("wfl.WorkFlowConditions.condExp"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + reportError(oList); + } + + private void checkMandatoryHdr(WflDocMstHdrBean oWflDocMstHdrBean) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDocMstHdrBean.getDocumentCode())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDocAttrDtl.documentCode"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDocMstHdrBean.getDocumentDesc())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDocAttrDtl.documentDesc"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryfieldmissing", oParam, "E")); + } + reportError(oList); + } + + private void checkMandatoryDtls(WflDocMstAttrDtlBean oWflDocMstAttrDtlBean, int count, ArrayList oDetailBeanArray) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDocMstAttrDtlBean.getTxtAttrName())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDocAttrDtl.attbName"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDocMstAttrDtlBean.getTxtType())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDocAttrDtl.type"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + reportError(oList); + } + + private void checkNumericFields(WflDocMstHdrBean oWflDocMstHdrBean, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + if (!EnrgiseUtil.checkNumber(oWflDocMstHdrBean.getMaxAppLevel(), 10, 4, "P")) { + MessageKey oMessageKey = new MessageKey("WFL.WFLDocAttrDtl.maxAppLevel"); + ArrayList oParams = new ArrayList(); + oParams.add(oMessageKey); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.invalidNumber", oParams)); + } + } + + private void checkUniqueMaterialDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WflDocMstConditionsDtlBean oWflDocMstConditionsDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oWflDocMstConditionsDtlBean.getDetailId())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select ID as ID from wfl_condition where CONDITION_DESC= '").concat(String.valueOf(oWflDocMstConditionsDtlBean.getDocTypeDtlDesc()))).concat(String.valueOf("' and CONDITION_EXPRESSION='"))).concat(String.valueOf(oWflDocMstConditionsDtlBean.getConditionExpression()))).concat(String.valueOf("' ")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("wfl.WorkFlowConditions.docDtlDesc"); + MessageKey oMessageKey1 = new MessageKey("wfl.WorkFlowConditions.condExp"); + oParams.add(oMessageKey); + oParams.add(oMessageKey1); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.workflow.detail.UniqueKeyConstraint", oParams)); + } + } + rowCount++; + } + } + + private void checkMandatoryDtlsDocType(WflDtlDocTypeDtlBean oWflDtlDocTypeDtlBean, int count, ArrayList oDetailBeanArray) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWflDtlDocTypeDtlBean.getTxtDtlDocCode())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocType.dtlDocCode"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDtlDocTypeDtlBean.getTxtDtlDocDesc())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocType.dtlDocDesc"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDtlDocTypeDtlBean.getTxtConDesc())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocType.conditionDesc"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWflDtlDocTypeDtlBean.getTxtExp())) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocType.exp"); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryfieldmissing", oParam, "E")); + } + reportError(oList); + } + + private void checkUniqueDocDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WflDtlDocTypeDtlBean oWflDtlDocTypeDtlBean = oIt1.next(); + if (!EnrgiseUtil.checkString(oWflDtlDocTypeDtlBean.getTxtDtlDocCode())) { + String sQuery = String.valueOf(String.valueOf(String.valueOf(" select a.id as Id from wfl_doc_type_dtl a where a.id= ").concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf(" and a.doc_dtl_code="))).concat(String.valueOf(oWflDtlDocTypeDtlBean.getTxtDtlDocCode())); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocType.dtlDocCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.workflow.detail.UniqueKeyConstraint", oParams)); + } + } + rowCount++; + } + } + + private void checkUniqueDocAttrDtl(String sHeaderPrimaryKey, ArrayList oDetailBeanArray, ArrayList oErrorList) throws EnrgiseApplicationException, EnrgiseSystemException { + int rowCount = 1; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf("select t.id from wfl_doc_attributes t where t.doc_type_hdr_id=").concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf(" and t.attr_name='"))).concat(String.valueOf(oWflDocMstAttrDtlBean.getTxtAttrName()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWflDocMstAttrDtlBean.getDetailId())) { + ArrayList oParams = new ArrayList(); + MessageKey oMessageKey = new MessageKey("WFL.WFLDtlDocType.dtlDocCode"); + oParams.add(oMessageKey); + oParams.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.workflow.detail.UniqueKeyConstraint", oParams)); + } + } + rowCount++; + } + } + + private void checkUniqueHeader(WflDocMstHdrBean oWflDocMstHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf(" select t.id from wfl_doc_type_mst t where t.doc_type_code='").concat(String.valueOf(oWflDocMstHdrBean.getDocumentCode()))).concat(String.valueOf("'")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWflDocMstHdrBean.getHeaderPrimaryKey())) + throw new EnrgiseApplicationException("wenrgise.common.header.uniqueConstraintViolated", "E"); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WflRouteDtlBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WflRouteDtlBO.java new file mode 100644 index 0000000..101659f --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WflRouteDtlBO.java @@ -0,0 +1,706 @@ +package wenrgise.workflow.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WFLRouteDtlBean; +import wenrgise.workflow.bean.WFLRouteHdrBean; +import wenrgise.workflow.bean.WFLTransDtlBean; +import wenrgise.workflow.vo.WflRouteDtlQVO; + +public class WflRouteDtlBO extends BaseBO { + public WflRouteDtlBO() {} + + public WflRouteDtlBO(UserInfo oUserInfo) { + super(oUserInfo); + } + + public RecordMetaInfo getWFLRouteDtlMetaInfo(WflRouteDtlQVO oWflRouteDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflRouteDtlQVO.getDtlDocId())); + oParameters.add(new DBObject(2, 1, 12, oWflRouteDtlQVO.getActivityId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflRouteInfo.proc_GetRouteDtlMetaInfo(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getWFLRouteDtlInfo(WflRouteDtlQVO oWflRouteDtlQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oWflRouteDtlQVO.getDtlDocId())); + oParameters.add(new DBObject(4, 1, 12, oWflRouteDtlQVO.getActivityId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflRouteInfo.proc_GetRouteDtlInfo(?,?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WFLRouteDtlBean oWFLRouteDtlBean = new WFLRouteDtlBean(); + oWFLRouteDtlBean.setDetailId(oRow.get("id").getString()); + oWFLRouteDtlBean.setTxtEmpId(oRow.get("e_per_dtl_id").getString()); + oWFLRouteDtlBean.setTxtReptHead(oRow.get("rept_head").getString()); + oWFLRouteDtlBean.setTxtEmp(oRow.get("emp_no").getString()); + oWFLRouteDtlBean.setTxtClassId(oRow.get("class_id").getString()); + oWFLRouteDtlBean.setTxtClassCode(oRow.get("class_code").getString()); + oWFLRouteDtlBean.setTxtDeptId(oRow.get("deptId").getString()); + oWFLRouteDtlBean.setTxtDept(oRow.get("deptCode").getString()); + oWFLRouteDtlBean.setTxtGrpId(oRow.get("wfl_group_id").getString()); + oWFLRouteDtlBean.setTxtGroup(oRow.get("group_code").getString()); + oWFLRouteDtlBean.setTxtLane(oRow.get("lane").getString()); + oWFLRouteDtlBean.setTxtLevel(oRow.get("level_number").getString()); + oWFLRouteDtlBean.setTxtFlag(oRow.get("split_join_flg").getString()); + oWFLRouteDtlBean.setTxtHlevel(oRow.get("hierarchy_level").getString()); + oWFLRouteDtlBean.setTxtNotifFlag(oRow.get("notification_flag").getString()); + oDtlList.add(oWFLRouteDtlBean); + } + return oDtlList; + } + + public RecordMetaInfo getWFLTransDtlMetaInfo(WflRouteDtlQVO oWflRouteDtlQVO) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWflRouteDtlQVO.getDtlDocId())); + oParameters.add(new DBObject(2, 1, 12, oWflRouteDtlQVO.getActivityId())); + oParameters.add(new DBObject(3, 2, -5)); + oParameters.add(new DBObject(4, 2, 93)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflRouteInfo.proc_GetRouteTransMetaInfo(?,?,?,?,?,?,?)"); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + DBObject oTotalRecord = oOutArray.get(0); + oRecordMetaInfo.setRecordCount(((Long)oTotalRecord.getObject()).longValue()); + DBObject oTimeObject = oOutArray.get(1); + oRecordMetaInfo.setOWhenPicked((Timestamp)oTimeObject.getObject()); + System.out.println(oRecordMetaInfo); + return oRecordMetaInfo; + } + + public ArrayList getWFLTransDtlInfo(WflRouteDtlQVO oWflRouteDtlQVO, long lDetailFirstPosition, long lDetailLastPosition) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + QueryRow oRow = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oDtlList = new ArrayList(); + ArrayList oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, new Long(lDetailFirstPosition))); + oParameters.add(new DBObject(2, 1, -5, new Long(lDetailLastPosition))); + oParameters.add(new DBObject(3, 1, 12, oWflRouteDtlQVO.getDtlDocId())); + oParameters.add(new DBObject(4, 1, 12, oWflRouteDtlQVO.getActivityId())); + oParameters.add(new DBObject(5, 2, -10)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WflRouteInfo.proc_GetRouteTransInfo(?,?,?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WFLTransDtlBean oWFLTransDtlBean = new WFLTransDtlBean(); + oWFLTransDtlBean.setDetailId(oRow.get("Id").getString()); + oWFLTransDtlBean.setTxtFromRootDtlId(oRow.get("routeFromId").getString()); + oWFLTransDtlBean.setTxtToRootDtlId(oRow.get("routeToId").getString()); + oWFLTransDtlBean.setTxtFLevel(oRow.get("fromLevel").getString()); + oWFLTransDtlBean.setTxtTLevel(oRow.get("toLevel").getString()); + oWFLTransDtlBean.setTxtFlane(oRow.get("fromLane").getString()); + oWFLTransDtlBean.setTxtTLane(oRow.get("toLane").getString()); + oWFLTransDtlBean.setTxtConditionId(oRow.get("wfl_condition_hdr_id").getString()); + oWFLTransDtlBean.setTxtCDesc(oRow.get("condition_desc").getString()); + oWFLTransDtlBean.setTxtCValue(oRow.get("wfl_condition_value").getString()); + oDtlList.add(oWFLTransDtlBean); + } + return oDtlList; + } + + public void initializeBOImpl() { + this.headerTable = "WFL_ROUTE_DTL"; + } + + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String ScreenMode) throws EnrgiseSystemException { + return null; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + if (sScreenName.equalsIgnoreCase("WFLRouteCodeDtl")) + saveRouteDtls(oBaseHeaderBean, oDetailBeanArray); + if (sScreenName.equalsIgnoreCase("WFLRouteTransDtl")) + saveRouteTransDtls(oBaseHeaderBean, oDetailBeanArray); + } + + public void saveRouteDtls(BaseHeaderBean oBaseHeaderBean, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLRouteHdrBean oWFLRouteHdrBean = (WFLRouteHdrBean)oBaseHeaderBean; + boolean bUpsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WFLRouteDtlBean oWFLRouteDtlBean = oIt.next(); + if (oWFLRouteDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflRouteInfo.proc_UpsertWflRouteDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWFLRouteHdrBean.getActivityId())); + oParameters.add(new DBObject(4, 1, 12, oWFLRouteHdrBean.getDtlDocId())); + oParameters.add(new DBObject(5, 1, 12, oWFLRouteDtlBean.getTxtLane())); + oParameters.add(new DBObject(6, 1, 12, oWFLRouteDtlBean.getTxtLevel())); + oParameters.add(new DBObject(7, 1, 12, oWFLRouteDtlBean.getTxtEmpId())); + oParameters.add(new DBObject(8, 1, 12, oWFLRouteDtlBean.getTxtGrpId())); + oParameters.add(new DBObject(9, 1, 12, oWFLRouteDtlBean.getTxtClassId())); + oParameters.add(new DBObject(10, 1, 12, oWFLRouteDtlBean.getTxtHlevel())); + oParameters.add(new DBObject(11, 1, 12, oWFLRouteDtlBean.getTxtDeptId())); + oParameters.add(new DBObject(12, 1, 12, oWFLRouteDtlBean.getTxtFlag())); + oParameters.add(new DBObject(13, 1, 12, oWFLRouteDtlBean.getTxtNotifFlag())); + oParameters.add(new DBObject(14, 1, 12, oWFLRouteDtlBean.getTxtReptHead())); + oParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWFLRouteDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflRouteInfo.proc_UpsertWflRouteDtl(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWFLRouteDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oWFLRouteHdrBean.getActivityId())); + oParameters.add(new DBObject(4, 1, 12, oWFLRouteHdrBean.getDtlDocId())); + oParameters.add(new DBObject(5, 1, 12, oWFLRouteDtlBean.getTxtLane())); + oParameters.add(new DBObject(6, 1, 12, oWFLRouteDtlBean.getTxtLevel())); + oParameters.add(new DBObject(7, 1, 12, oWFLRouteDtlBean.getTxtEmpId())); + oParameters.add(new DBObject(8, 1, 12, oWFLRouteDtlBean.getTxtGrpId())); + oParameters.add(new DBObject(9, 1, 12, oWFLRouteDtlBean.getTxtClassId())); + oParameters.add(new DBObject(10, 1, 12, oWFLRouteDtlBean.getTxtHlevel())); + oParameters.add(new DBObject(11, 1, 12, oWFLRouteDtlBean.getTxtDeptId())); + oParameters.add(new DBObject(12, 1, 12, oWFLRouteDtlBean.getTxtFlag())); + oParameters.add(new DBObject(13, 1, 12, oWFLRouteDtlBean.getTxtNotifFlag())); + oParameters.add(new DBObject(14, 1, 12, oWFLRouteDtlBean.getTxtReptHead())); + oParameters.add(new DBObject(15, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(16, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(17, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWFLRouteDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WflRouteInfo.proc_DeleteWflRouteDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWFLRouteDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void saveRouteTransDtls(BaseHeaderBean oBaseHeaderBean, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLRouteHdrBean oWFLRouteHdrBean = (WFLRouteHdrBean)oBaseHeaderBean; + boolean bUpsert = false; + boolean bDelete = false; + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = null; + DBUtilitiesBean oBean1 = null; + Iterator oIt = oDetailBeanArray.iterator(); + while (oIt.hasNext()) { + WFLTransDtlBean oWFLTransDtlBean = oIt.next(); + if (oWFLTransDtlBean.getStatus().equals("N")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflRouteInfo.proc_UpsertWflTransDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "N")); + oParameters.add(new DBObject(2, 1, 12, null)); + oParameters.add(new DBObject(3, 1, 12, oWFLRouteHdrBean.getActivityId())); + oParameters.add(new DBObject(4, 1, 12, oWFLTransDtlBean.getTxtFromRootDtlId())); + oParameters.add(new DBObject(5, 1, 12, oWFLTransDtlBean.getTxtToRootDtlId())); + oParameters.add(new DBObject(6, 1, 12, oWFLTransDtlBean.getTxtConditionId())); + oParameters.add(new DBObject(7, 1, 12, oWFLTransDtlBean.getTxtCValue())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWFLTransDtlBean.getStatus().equals("U")) { + if (!bUpsert) { + oBean = new DBUtilitiesBean(); + oBean.createBatch("WflRouteInfo.proc_UpsertWflTransDtl(?,?,?,?,?,?,?,?,?,?)"); + bUpsert = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWFLTransDtlBean.getDetailId())); + oParameters.add(new DBObject(3, 1, 12, oWFLRouteHdrBean.getActivityId())); + oParameters.add(new DBObject(4, 1, 12, oWFLTransDtlBean.getTxtFromRootDtlId())); + oParameters.add(new DBObject(5, 1, 12, oWFLTransDtlBean.getTxtToRootDtlId())); + oParameters.add(new DBObject(6, 1, 12, oWFLTransDtlBean.getTxtConditionId())); + oParameters.add(new DBObject(7, 1, 12, oWFLTransDtlBean.getTxtCValue())); + oParameters.add(new DBObject(8, 1, 12, this.oUserInfo.getSiteId())); + oParameters.add(new DBObject(9, 1, 12, this.oUserInfo.getUserId())); + oParameters.add(new DBObject(10, 1, 12, this.oUserInfo.getSiteId())); + oBean.addToBatch(oParameters); + continue; + } + if (oWFLTransDtlBean.getStatus().equals("D")) { + if (!bDelete) { + oBean1 = new DBUtilitiesBean(); + oBean1.createBatch("WflRouteInfo.proc_DeleteWflTransDtl(?)"); + bDelete = true; + } + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, oWFLTransDtlBean.getDetailId())); + oBean1.addToBatch(oParameters); + } + } + if (bUpsert) + oBean.executeBatch(); + if (bDelete) + oBean1.executeBatch(); + } + + public void additionalTimestampValidationImpl(BaseHeaderBean param1, Timestamp param2, String param3, String param4, boolean param5, ArrayList param6, boolean param7, Timestamp param8) {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrorList = new ArrayList(); + WFLRouteHdrBean oWFLRouteHdrBean = (WFLRouteHdrBean)oBaseHeaderBean; + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("WFLRouteCodeDtl")) { + String sCompositeKey = "txtLane".concat(",").concat("txtLevel"); + String[] sFieldName = sCompositeKey.split(","); + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + WFLRouteDtlBean oWFLRouteDtlBean = oIt1.next(); + if (!oWFLRouteDtlBean.getStatus().equalsIgnoreCase("D")); + reportError(oErrorList); + } + } + if (sScreenName.equalsIgnoreCase("WFLRouteTransDtl")) { + String sCompositeKey = "txtFlane".concat(",").concat("txtTLane"); + String[] sFieldName = sCompositeKey.split(","); + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + WFLTransDtlBean oWFLTransDtlBean = oIt1.next(); + if (!oWFLTransDtlBean.getStatus().equalsIgnoreCase("D")); + reportError(oErrorList); + } + } + } + } + + private void checkUniqueTransDtl(WFLRouteHdrBean oWFLRouteHdrBean, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + WFLTransDtlBean oWFLTransDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select wt.id from wfl_transitions wt where wt.route_from_id='").concat(String.valueOf(oWFLTransDtlBean.getTxtFromRootDtlId()))).concat(String.valueOf("' and wt.route_to_id ='"))).concat(String.valueOf(oWFLTransDtlBean.getTxtToRootDtlId()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWFLTransDtlBean.getDetailId())) + throw new EnrgiseApplicationException("wenrgise.common.detail.uniqueConstraintViolated"); + } + } + } + + private void checkUniqueRouteDtl(WFLRouteHdrBean oWFLRouteHdrBean, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException { + int count = 0; + Iterator oIt1 = oDetailBeanArray.iterator(); + while (oIt1.hasNext()) { + WFLRouteDtlBean oWFLRouteDtlBean = oIt1.next(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(" Select wrd.id from wfl_route_dtl wrd where wrd.lane='").concat(String.valueOf(oWFLRouteDtlBean.getTxtLane()))).concat(String.valueOf("' and wrd.level_number='"))).concat(String.valueOf(oWFLRouteDtlBean.getTxtLevel()))).concat(String.valueOf("' and wrd.dtl_doc_id='"))).concat(String.valueOf(oWFLRouteHdrBean.getDtlDocId()))).concat(String.valueOf("' and wrd.activity_id='"))).concat(String.valueOf(oWFLRouteHdrBean.getActivityId()))).concat(String.valueOf("' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + QueryRow oRow = oIt.next(); + if (!oRow.get("ID").getString().equalsIgnoreCase(oWFLRouteDtlBean.getDetailId())) + throw new EnrgiseApplicationException("wenrgise.common.detail.uniqueConstraintViolated"); + } + } + } + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLRouteHdrBean oWFLRouteHdrBean = (WFLRouteHdrBean)oBaseHeaderBean; + ArrayList oErrorList = new ArrayList(); + if (bHeaderDataChanged) + if (!sScreenMode.equalsIgnoreCase("D")) + checkMandatoryHeader(oWFLRouteHdrBean); + if (bDetailDataChanged) { + if (sScreenName.equalsIgnoreCase("WFLRouteTransDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WFLTransDtlBean oWFLTransDtlBean = oIt1.next(); + if (!oWFLTransDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryTransDtls(oWFLTransDtlBean, rowCount); + checkforNumericfields(oWFLTransDtlBean, rowCount); + rowCount++; + } + } + } + if (sScreenName.equalsIgnoreCase("WFLRouteCodeDtl")) { + Iterator oIt1 = oDetailBeanArray.iterator(); + int rowCount = 1; + while (oIt1.hasNext()) { + WFLRouteDtlBean oWFLRouteDtlBean = oIt1.next(); + if (!oWFLRouteDtlBean.getStatus().equalsIgnoreCase("D")) { + checkMandatoryRouteDtls(oWFLRouteDtlBean, rowCount); + checkforNumericfields(oWFLRouteDtlBean, rowCount); + rowCount++; + } + } + } + } + } + + private void checkMandatoryHeader(WFLRouteHdrBean oWFLRouteHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWFLRouteHdrBean.getDtlDocId())) { + MessageKey oMessageKey = new MessageKey("WFL.TransDtl.dtlDocCode"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWFLRouteHdrBean.getActivityId())) { + MessageKey oMessageKey = new MessageKey("WFL.TransDtl.actCode"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oList.add(new EnrgiseMessageKeyException("wenrgise.common.header.mandatoryFieldMissing", oParam, "E")); + } + reportError(oList); + } + + private void checkMandatoryTransDtls(WFLTransDtlBean oWFLTransDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWFLTransDtlBean.getTxtFromRootDtlId())) { + MessageKey oMessageKey = new MessageKey("WFL.TransDtl.fLane"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWFLTransDtlBean.getTxtToRootDtlId())) { + ArrayList oParams = new ArrayList(); + oParams.add("WFL.TransDtl.tLane"); + MessageKey oMessageKey = new MessageKey("ivm.IVMMaterialReturnNote.materialCode"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oErrorList); + } + + private void checkMandatoryRouteDtls(WFLRouteDtlBean oWFLRouteDtlBean, int rowCount) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oErrorList = new ArrayList(); + if (!EnrgiseUtil.checkString(oWFLRouteDtlBean.getTxtLane())) { + MessageKey oMessageKey = new MessageKey("WFL.RouteDtl.lane"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + if (!EnrgiseUtil.checkString(oWFLRouteDtlBean.getTxtLevel())) { + MessageKey oMessageKey = new MessageKey("WFL.RouteDtl.level"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrorList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParam, "E")); + } + reportError(oErrorList); + } + + private void checkforNumericfields(WFLRouteDtlBean oWFLRouteDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oWFLRouteDtlBean.getTxtLane(), 3, 0, "NN")) { + MessageKey oMessageKey = new MessageKey("WFL.RouteDtl.lane"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.nonnumeric", oParam)); + } + if (!EnrgiseUtil.checkNumber(oWFLRouteDtlBean.getTxtLevel(), 3, 0, "NN")) { + MessageKey oMessageKey = new MessageKey("WFL.RouteDtl.level"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.nonnumeric", oParam)); + } + reportError(oErrList); + } + + private void checkforNumericfields(WFLTransDtlBean oWFLTransDtlBean, int rowCount) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oErrList = new ArrayList(); + if (!EnrgiseUtil.checkNumber(oWFLTransDtlBean.getTxtCValue(), 3, 0, "NN")) { + MessageKey oMessageKey = new MessageKey("WFL.TransDtl.cValue"); + ArrayList oParam = new ArrayList(); + oParam.add(oMessageKey); + oParam.add(new Integer(rowCount)); + oErrList.add(new EnrgiseMessageKeyException("wenrgise.common.detail.nonnumeric", oParam)); + } + reportError(oErrList); + } + + public LovVO getWflDocDtlQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "select distinct wt.activity_id,wdtd.id as dtl_doc_id,wdtd.doc_dtl_code,wdtd.doc_dtl_desc,wam.activity_code,wam.activity_desc from wfl_transitions wt,wfl_activity_mst wam,wfl_route_dtl wrd,wfl_doc_type_dtl wdtd where wam.id = wt.activity_id and wt.route_from_id = wrd.id and wrd.dtl_doc_id=wdtd.id "; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wam.activity_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wdtd.doc_dtl_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.TransDtl.actCode"); + oHeaderList.add("WFL.TransDtl.actCodeDesc"); + oHeaderList.add(""); + oHeaderList.add("WFL.TransDtl.dtlDocCode"); + oHeaderList.add("WFL.TransDtl.dtlDocDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("activity_id").getString()); + oLOVBean.setDetailField2(oRow.get("activity_code").getString()); + oLOVBean.setDetailField3(oRow.get("activity_desc").getString()); + oLOVBean.setDetailField4(oRow.get("dtl_doc_id").getString()); + oLOVBean.setDetailField5(oRow.get("doc_dtl_code").getString()); + oLOVBean.setDetailField6(oRow.get("doc_dtl_desc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWflDocDtlIdNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "select wdtd.id,wdtd.doc_dtl_code,wdtd.doc_dtl_desc from wfl_doc_type_dtl wdtd "; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wdtd.doc_dtl_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wdtd.doc_dtl_desc) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.TransDtl.dtlDocCode"); + oHeaderList.add("WFL.TransDtl.dtlDocDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("doc_dtl_code").getString()); + oLOVBean.setDetailField3(oRow.get("doc_dtl_desc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWflActIdNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "select wam.id,wam.activity_code,wam.activity_desc from Wfl_Activity_Mst wam "; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wam.activity_code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wam.activity_desc) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.TransDtl.actCode"); + oHeaderList.add("WFL.TransDtl.actCodeDesc"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("activity_code").getString()); + oLOVBean.setDetailField3(oRow.get("activity_desc").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWflRouteDtlLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = String.valueOf(String.valueOf("select wrd.id,wrd.lane,wrd.level_number,wam.activity_code from wfl_route_dtl wrd,wfl_activity_mst wam where wrd.dtl_doc_id='").concat(String.valueOf(oLovQueryVO.getProperty("dtlDocId")))).concat(String.valueOf("' and wrd.activity_id=wam.id ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wrd.lane) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wrd.level_number) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.TransDtl.fLane"); + oHeaderList.add("WFL.TransDtl.fLevel"); + oHeaderList.add("WFL.TransDtl.actCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("lane").getString()); + oLOVBean.setDetailField3(oRow.get("level_number").getString()); + oLOVBean.setDetailField4(oRow.get("activity_code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getWflConditionLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + String sQuery = "select distinct wc.id, wc.condition_expression,wc.condition_desc from wfl_condition wc, wfl_doc_type_dtl wdtd, wfl_condition wc2 "; + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where wc.doc_type_hdr_id = wc2.doc_type_hdr_id and wdtd.condition_id = wc2.id and wdtd.id ="))).concat(String.valueOf(oLovQueryVO.getProperty("dtlDocId"))); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(wc.condition_expression) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("WFL.TransDtl.cDesc"); + oHeaderList.add("WFL.TransDtl.cValue"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("id").getString()); + oLOVBean.setDetailField2(oRow.get("condition_desc").getString()); + oLOVBean.setDetailField3(oRow.get("condition_expression").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowBaseBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowBaseBO.java new file mode 100644 index 0000000..58d2d1b --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowBaseBO.java @@ -0,0 +1,3 @@ +package wenrgise.workflow.ejb.business; + +public class WorkFlowBaseBO {} diff --git a/hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowCommonBO.java b/hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowCommonBO.java new file mode 100644 index 0000000..526977a --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/business/WorkFlowCommonBO.java @@ -0,0 +1,285 @@ +package wenrgise.workflow.ejb.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.logging.Logger; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflDtlsHdrBean; +import wenrgise.workflow.bean.WflWorkListBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; + +public class WorkFlowCommonBO extends WorkFlowBaseBO { + public static final Logger log = Logger.getLogger("wenrgise.workflow.ejb.business.WorkFlowCommonBO"); + + public String getMailAddress(String sEmpId) { + String sMail = "kolkata.confroom@tcs.com"; + DBUtilitiesBean oBean = new DBUtilitiesBean(); + try { + if (EnrgiseUtil.checkString(sEmpId) == false) { + log.severe("Employee Id is null"); + return sMail; + } + ArrayList oList = oBean.executeQuery(String.valueOf("SELECT email FROM HRM_EMP_PERS WHERE id = ").concat(String.valueOf(sEmpId))); + if (null != oList && oList.size() > 0) { + QueryRow oRow = oList.get(0); + sMail = oRow.get("EMAIL").getString(); + log.severe(String.valueOf("E mail id is ").concat(String.valueOf(sMail))); + } + return sMail; + } catch (EnrgiseSystemException oSx) { + log.severe(String.valueOf(String.valueOf(oSx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oSx.getMessage()))); + return sMail; + } + } + + public UserInfo getLoginUserInfo(String sEmpNo, String sSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList arylstOutArray = new ArrayList(); + UserInfo oUserInfo = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + oBean = new DBUtilitiesBean(); + arylstParameters = new ArrayList(); + arylstParameters = new ArrayList(); + arylstParameters.add(new DBObject(1, 1, 12, sEmpNo)); + arylstParameters.add(new DBObject(2, 1, 12, sSiteId)); + arylstParameters.add(new DBObject(3, 2, -10)); + arylstParameters.add(new DBObject(4, 2, 12)); + arylstParameters.add(new DBObject(5, 2, 12)); + arylstParameters.add(new DBObject(6, 2, 4)); + arylstOutArray = oBean.callProc(arylstParameters, "HRMUSERINFO.procGetUserInfo(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)arylstOutArray.get(0)).getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + oUserInfo = new UserInfo(); + System.out.println(oRow.get("CURRENT_YEAR").getString()); + oUserInfo.setCurrentYear(oRow.get("CURRENT_YEAR").getString()); + System.out.println(oRow.get("SITE_ID").getString()); + oUserInfo.setSiteId(oRow.get("SITE_ID").getString()); + oUserInfo.setSiteName(oRow.get("SITE_NAME").getString()); + oUserInfo.setUserActiveFlag(oRow.get("USER_ACTIVE_FLAG").getString()); + oUserInfo.setUserId(oRow.get("USER_ID").getString()); + oUserInfo.setUserLocked(oRow.get("USER_LOCKED").getString()); + oUserInfo.setUserName(oRow.get("USER_NAME").getString()); + oUserInfo.setUserSystemId(oRow.get("USER_SYSTEM_ID").getString()); + oUserInfo.setUserType(oRow.get("USER_TYPE").getString()); + oUserInfo.setUserTypeId(oRow.get("USER_TYPE_ID").getString()); + } + return oUserInfo; + } + + public String updateWorkList(String sUpsertFlag, WflResource wflResource, WflDocumentInfo docInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oParameters = null; + ArrayList oOutArray = null; + String returnString = null; + if (wflResource.getEmployeeId() == wflResource.getDelegatedBy()) + wflResource.setDelegatedBy(""); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sUpsertFlag)); + oParameters.add(new DBObject(2, 1, 12, docInfo.getWorkListId())); + oParameters.add(new DBObject(3, 1, 12, wflResource.getRouteDtlId())); + oParameters.add(new DBObject(4, 1, 12, docInfo.getDocumentId())); + oParameters.add(new DBObject(5, 1, 12, docInfo.getDocumentTypeId())); + oParameters.add(new DBObject(6, 1, 12, docInfo.getDocumentNumber())); + oParameters.add(new DBObject(7, 1, 12, docInfo.getDocDesc())); + oParameters.add(new DBObject(8, 1, 12, wflResource.getEmployeeId())); + oParameters.add(new DBObject(9, 1, 12, docInfo.getRequester().getEmployeeId())); + oParameters.add(new DBObject(10, 1, 12, wflResource.getDelegatedBy())); + oParameters.add(new DBObject(11, 1, 12, null)); + oParameters.add(new DBObject(12, 1, 12, docInfo.getCreator().getEmployeeId())); + oParameters.add(new DBObject(13, 1, 12, docInfo.getModuleId())); + oParameters.add(new DBObject(14, 1, 12, docInfo.getRequesterAction())); + oParameters.add(new DBObject(15, 1, 12, docInfo.getCreator().getEmployeeId())); + oParameters.add(new DBObject(16, 1, 12, docInfo.getCreator().getLoginSite().getSiteId())); + oParameters.add(new DBObject(17, 2, 12)); + oParameters.add(new DBObject(18, 2, 12)); + oParameters.add(new DBObject(19, 2, 12)); + oParameters.add(new DBObject(20, 2, 4)); + oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_UpsertWorkItem(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + return returnString; + } + + public ArrayList getWorkListInfo(String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + ArrayList oHeaderList = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sEmpId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetWorkFlowList(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + return oHeaderList; + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count++; + oRow = oIt.next(); + WflWorkListBean oWrkFlowCommonBean = new WflWorkListBean(); + oWrkFlowCommonBean.setTxtAssignedOn(oRow.get("LAST_ASSIGNED_DATE").getString()); + oWrkFlowCommonBean.setRouteDtlId(oRow.get("route_dtl_id").getString()); + oWrkFlowCommonBean.setTxtDocNo(oRow.get("doc_number").getString()); + oWrkFlowCommonBean.setTxtDocTypeId(oRow.get("doc_type_id").getString()); + oWrkFlowCommonBean.setTxtDocId(oRow.get("DOC_ID").getString()); + oWrkFlowCommonBean.setTxtHiddenId(oRow.get("ID").getString()); + oWrkFlowCommonBean.setTxtEmpNo(oRow.get("pending_for_emp_id").getString()); + oWrkFlowCommonBean.setTxtModuleId(oRow.get("MODULE_ID").getString()); + oWrkFlowCommonBean.setTxtModuleCode(oRow.get("MODULE_CODE").getString()); + oWrkFlowCommonBean.setTxtDocTypeCode(oRow.get("doc_type_code").getString()); + oHeaderList.add(oWrkFlowCommonBean); + } + return oHeaderList; + } + + public String getDocumentTypeId(String documentType) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, documentType)); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetDocumentTypeId(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + if (null != oOutObject) + return (String)oOutObject.getObject(); + return null; + } + + public String getActivityId(String activity) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, activity)); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetActivityId(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + if (null != oOutObject) + return (String)oOutObject.getObject(); + return null; + } + + public String getActivityCode(String activityId) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + log.severe(activityId); + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, activityId)); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetActivityCode(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + if (null != oOutObject) + return (String)oOutObject.getObject(); + return null; + } catch (Exception oEx) { + log.severe(String.valueOf(String.valueOf(oEx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oEx.getMessage()))); + return null; + } + } + + public String getRouteDtlId(WflDocumentInfo docInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, docInfo.getWorkListId())); + oParameters.add(new DBObject(2, 2, 12)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetRouteDtl(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + if (null != oOutObject) + return (String)oOutObject.getObject(); + return null; + } + + public WflDtlsHdrBean getWorkFlowDtlsInfo(String sWorkListId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + WflDtlsHdrBean oWflDtlsHdrBean = new WflDtlsHdrBean(); + Timestamp oWhenPicked = null; + int count = 0; + ArrayList oHeaderList = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sWorkListId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetWorkFlowListDesc(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + QueryRow oRow = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count++; + oRow = oIt.next(); + oWflDtlsHdrBean = new WflDtlsHdrBean(); + oWflDtlsHdrBean.setToDtls(oRow.get("EmpName").getString()); + oWflDtlsHdrBean.setFromDtls(oRow.get("From_EmpName").getString()); + oWflDtlsHdrBean.setSubjectDtls(oRow.get("subject").getString()); + oWflDtlsHdrBean.setDescDtls(oRow.get("docDesc").getString()); + oWflDtlsHdrBean.setNotifFlag(oRow.get("notificationFlag").getString()); + oWflDtlsHdrBean.setModuleId(oRow.get("moduleId").getString()); + oWflDtlsHdrBean.setModuleName(oRow.get("ModuleName").getString()); + oHeaderList.add(oWflDtlsHdrBean); + } + return oWflDtlsHdrBean; + } + + public String closeNotification(WflDtlsHdrBean oWflDtlsHdrBean) throws EnrgiseApplicationException, EnrgiseSystemException { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oParameters = null; + ArrayList oOutArray = null; + String returnString = null; + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "U")); + oParameters.add(new DBObject(2, 1, 12, oWflDtlsHdrBean.getWorkListId())); + oParameters.add(new DBObject(3, 1, 12, "Close")); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_closeWorkList(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + returnString = (String)oOutObject.getObject(); + return returnString; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeBean.java new file mode 100644 index 0000000..1b23bf2 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeBean.java @@ -0,0 +1,51 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.workflow.ejb.business.WflActivityMstBO; + +public class WflActivityMstFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) { + this.ctx = ctx; + } + + public RecordMetaInfo getWflActivityDtlMetaInfo(UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflActivityMstBO oWflActivityMstBO = new WflActivityMstBO(oUserInfo); + return oWflActivityMstBO.getWflActivityDtlMetaInfo(); + } + + public ArrayList getWflActivityDtlInfo(long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflActivityMstBO oWflActivityMstBO = new WflActivityMstBO(oUserInfo); + return oWflActivityMstBO.getWflActivityDtlInfo(lStartPosition, lLastPosition); + } + + public String saveWflActivityDtls(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WflActivityMstBO oWflActivityMstBO = new WflActivityMstBO(oUserInfo); + return oWflActivityMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (EnrgiseSystemException oSysEx) { + this.ctx.setRollbackOnly(); + throw oSysEx; + } catch (EnrgiseApplicationException oAppEx) { + this.ctx.setRollbackOnly(); + throw oAppEx; + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocal.java new file mode 100644 index 0000000..29a43d1 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocal.java @@ -0,0 +1,18 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; + +public interface WflActivityMstFacadeLocal extends EJBLocalObject { + RecordMetaInfo getWflActivityDtlMetaInfo(UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflActivityDtlInfo(long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflActivityDtls(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocalHome.java new file mode 100644 index 0000000..e5b5b05 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflActivityMstFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflActivityMstFacadeLocalHome extends EJBLocalHome { + WflActivityMstFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeBean.java new file mode 100644 index 0000000..1c8a6cd --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeBean.java @@ -0,0 +1,103 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.logging.Logger; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.workflow.bean.WflDtlsHdrBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflService; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.ejb.business.DocHistoryDtlBO; +import wenrgise.workflow.ejb.business.WorkFlowCommonBO; +import wenrgise.workflow.utility.WorkFlowServiceFactory; + +public class WflCommFacadeBean implements SessionBean { + public static Logger log = Logger.getLogger("wenrgise.workflow.ejb.facade.WflCommFacadeBean"); + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public UserInfo getLoginUserInfo(String sEmpId, String sSiteId) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO oBo = new WorkFlowCommonBO(); + return oBo.getLoginUserInfo(sEmpId, sSiteId); + } + + public String getDocumentTypeId(String documentType) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO oBo = new WorkFlowCommonBO(); + return oBo.getDocumentTypeId(documentType); + } + + public String getActivityId(String activity) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO oBo = new WorkFlowCommonBO(); + return oBo.getActivityId(activity); + } + + public String getActivityCode(String activityId) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO oBo = new WorkFlowCommonBO(); + return oBo.getActivityCode(activityId); + } + + public String getRouteDtlId(WflDocumentInfo docInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO oBo = new WorkFlowCommonBO(); + return oBo.getRouteDtlId(docInfo); + } + + public boolean canDo(WflDocumentInfo docInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + if (docInfo == null) + throw new EnrgiseApplicationException(); + if (docInfo.getCreator() == null) + throw new EnrgiseApplicationException(); + if (docInfo.getCreator().getLoginSite() == null) + throw new EnrgiseApplicationException(); + WflService wflService = WorkFlowServiceFactory.getInstance().getWorkFlowService(); + return wflService.canDo(docInfo); + } + + public WflStatus process(WflDocumentInfo docInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + log.severe("step1"); + if (docInfo == null) + throw new EnrgiseApplicationException(); + log.severe("step2"); + if (docInfo.getCreator() == null) + throw new EnrgiseApplicationException(); + log.severe("step3"); + if (docInfo.getCreator().getLoginSite() == null) + throw new EnrgiseApplicationException(); + log.severe("step4"); + WflService wflService = WorkFlowServiceFactory.getInstance().getWorkFlowService(); + log.severe("step5"); + return wflService.process(docInfo); + } + + public ArrayList getWorkListInfo(String sEmpId) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO wflCommBO = new WorkFlowCommonBO(); + return wflCommBO.getWorkListInfo(sEmpId); + } + + public WflDtlsHdrBean getWorkFlowDtlsInfo(String sWorkListId) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO wflCommBO = new WorkFlowCommonBO(); + return wflCommBO.getWorkFlowDtlsInfo(sWorkListId); + } + + public ArrayList getDocHistDtl(String sDocID, String sDocType, String sModuleID) throws EnrgiseApplicationException, EnrgiseSystemException { + DocHistoryDtlBO oBo = new DocHistoryDtlBO(); + return oBo.getDocHistDtl(sDocID, sDocType, sModuleID); + } + + public String closeWorkList(WflDtlsHdrBean oWflDtlsHdrBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WorkFlowCommonBO wflCommBO = new WorkFlowCommonBO(); + return wflCommBO.closeNotification(oWflDtlsHdrBean); + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocal.java new file mode 100644 index 0000000..985cdec --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocal.java @@ -0,0 +1,35 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.workflow.bean.WflDtlsHdrBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflStatus; + +public interface WflCommFacadeLocal extends EJBLocalObject { + UserInfo getLoginUserInfo(String paramString1, String paramString2) throws EnrgiseApplicationException, EnrgiseSystemException; + + WflStatus process(WflDocumentInfo paramWflDocumentInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + boolean canDo(WflDocumentInfo paramWflDocumentInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getDocumentTypeId(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getActivityId(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWorkListInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getActivityCode(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + String getRouteDtlId(WflDocumentInfo paramWflDocumentInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + WflDtlsHdrBean getWorkFlowDtlsInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; + + String closeWorkList(WflDtlsHdrBean paramWflDtlsHdrBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getDocHistDtl(String paramString1, String paramString2, String paramString3) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocalHome.java new file mode 100644 index 0000000..e6275b8 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflCommFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflCommFacadeLocalHome extends EJBLocalHome { + WflCommFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeBean.java new file mode 100644 index 0000000..d3b09b5 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeBean.java @@ -0,0 +1,60 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.ejb.business.WflDOPGrpBO; +import wenrgise.workflow.vo.WflDOPGrpQVO; + +public class WflDOPGrpFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public RecordMetaInfo getWflDOPGrpHdrMetaInfo(WflDOPGrpQVO oWflDOPGrpQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDOPGrpBO oWflDOPGrpBO = new WflDOPGrpBO(oUserInfo); + return oWflDOPGrpBO.getWflDOPGrpHdrMetaInfo(oWflDOPGrpQVO); + } + + public ArrayList getWflDOPGrpHdrInfo(WflDOPGrpQVO oWflDOPGrpQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDOPGrpBO oWflDOPGrpBO = new WflDOPGrpBO(oUserInfo); + return oWflDOPGrpBO.getWflDOPGrpHdrInfo(oWflDOPGrpQVO, lStartPosition, lLastPosition); + } + + public String saveWflDOPGrp(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDOPGrpBO oWflDOPGrpBO = new WflDOPGrpBO(oUserInfo); + return oWflDOPGrpBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getWflDOPGrpCodeQLOV(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDOPGrpBO oWflDOPGrpBO = new WflDOPGrpBO(); + LovVO oLovVO = oWflDOPGrpBO.getWflDOPGrpCodeQLOV(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getWflDOPGrpDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDOPGrpBO oWflDOPGrpBO = new WflDOPGrpBO(oUserInfo); + return oWflDOPGrpBO.getWflDOPGrpDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getWflDOPGrpDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDOPGrpBO oWflDOPGrpBO = new WflDOPGrpBO(oUserInfo); + return oWflDOPGrpBO.getWflDOPGrpDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocal.java new file mode 100644 index 0000000..6c6d46a --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocal.java @@ -0,0 +1,27 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.vo.WflDOPGrpQVO; + +public interface WflDOPGrpFacadeLocal extends EJBLocalObject { + RecordMetaInfo getWflDOPGrpHdrMetaInfo(WflDOPGrpQVO paramWflDOPGrpQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDOPGrpHdrInfo(WflDOPGrpQVO paramWflDOPGrpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDOPGrp(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDOPGrpCodeQLOV(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDOPGrpDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDOPGrpDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocalHome.java new file mode 100644 index 0000000..85c594a --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDOPGrpFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflDOPGrpFacadeLocalHome extends EJBLocalHome { + WflDOPGrpFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeBean.java new file mode 100644 index 0000000..65ac1c3 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeBean.java @@ -0,0 +1,58 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.ejb.business.WflDelegationMstBO; +import wenrgise.workflow.vo.WflDelegationQVO; + +public class WflDelegateMstFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public RecordMetaInfo getWflDelegationHdrMetaInfo(WflDelegationQVO oWflDelegationQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDelegationMstBO oWflDelegationMstBO = new WflDelegationMstBO(oUserInfo); + return oWflDelegationMstBO.getWflDelegationHdrMetaInfo(oWflDelegationQVO); + } + + public ArrayList getWflDelegationHdrInfo(WflDelegationQVO oWflDelegationQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDelegationMstBO oWflDelegationMstBO = new WflDelegationMstBO(oUserInfo); + return oWflDelegationMstBO.getWflDelegationHdrInfo(oWflDelegationQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getWflDelegationDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDelegationMstBO oWflDelegationMstBO = new WflDelegationMstBO(oUserInfo); + return oWflDelegationMstBO.getWflDelegationDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getWflDelegationDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDelegationMstBO oWflDelegationMstBO = new WflDelegationMstBO(oUserInfo); + return oWflDelegationMstBO.getWflDelegationDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveWflDelegation(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDelegationMstBO oWflDelegationMstBO = new WflDelegationMstBO(oUserInfo); + return oWflDelegationMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getWflDtlDocTypeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDelegationMstBO oWflDelegationMstBO = new WflDelegationMstBO(); + LovVO oLovVO = oWflDelegationMstBO.getWflDtlDocTypeLOVdata(oLovQueryVO); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocal.java new file mode 100644 index 0000000..672506b --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocal.java @@ -0,0 +1,27 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.vo.WflDelegationQVO; + +public interface WflDelegateMstFacadeLocal extends EJBLocalObject { + RecordMetaInfo getWflDelegationHdrMetaInfo(WflDelegationQVO paramWflDelegationQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDelegationHdrInfo(WflDelegationQVO paramWflDelegationQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDelegationDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDelegationDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDelegation(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDtlDocTypeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocalHome.java new file mode 100644 index 0000000..74578af --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDelegateMstFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflDelegateMstFacadeLocalHome extends EJBLocalHome { + WflDelegateMstFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeBean.java new file mode 100644 index 0000000..543a05c --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeBean.java @@ -0,0 +1,86 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.ejb.business.WflDocMstBO; +import wenrgise.workflow.vo.WflDocMstQVO; + +public class WflDocMstFacadeBean implements SessionBean { + SessionContext ctx; + + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public RecordMetaInfo getWflDocTypeHdrMetaInfo(WflDocMstQVO oWflDocMstQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getWflDocTypeHdrMetaInfo(oWflDocMstQVO); + } + + public ArrayList getWflDocTypeHdrInfo(WflDocMstQVO oWflDocMstQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getWflDocTypeHdrInfo(oWflDocMstQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getWflDocTypeAttrDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getWflDocTypeAttrDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getWflDocTypeAttrDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getWflDocTypeAttrDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getWflDocTypeConditionsDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getWflDocTypeConditionsDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getWflDocTypeConditionsDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getWflDocTypeConditionsDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveWflDocTypeMst(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getWflDocCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(); + LovVO oLovVO = oWflDocMstBO.getWflDocCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public RecordMetaInfo getDtlDocTypeMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getDtlDocTypeMetaInfo(lPrimaryKey); + } + + public ArrayList getDtlDocTypeInfo(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(oUserInfo); + return oWflDocMstBO.getDtlDocTypeInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public LovVO getWflDtlDocCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(); + LovVO oLovVO = oWflDocMstBO.getWflDtlDocCodeLOVdata(oLovQueryVO); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocal.java new file mode 100644 index 0000000..e609488 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocal.java @@ -0,0 +1,37 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.vo.WflDocMstQVO; + +public interface WflDocMstFacadeLocal extends EJBLocalObject { + RecordMetaInfo getWflDocTypeHdrMetaInfo(WflDocMstQVO paramWflDocMstQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeHdrInfo(WflDocMstQVO paramWflDocMstQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeAttrDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeAttrDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeConditionsDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeConditionsDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDocTypeMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getDtlDocTypeMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getDtlDocTypeInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDtlDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocalHome.java new file mode 100644 index 0000000..7db9013 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDocMstFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflDocMstFacadeLocalHome extends EJBLocalHome { + WflDocMstFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeBean.java new file mode 100644 index 0000000..30ac658 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeBean.java @@ -0,0 +1,70 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.ejb.business.WFLDtlDocActivityMapBO; +import wenrgise.workflow.vo.WflDtlDocActivityMapQVO; + +public class WflDtlDocActivityMapFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public RecordMetaInfo getWFLDtlDocActivityHdrMetaInfo(WflDtlDocActivityMapQVO oWflDtlDocActivityMapQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(oUserInfo); + return oWFLDtlDocActivityMapBO.getWFLDtlDocActivityHdrMetaInfo(oWflDtlDocActivityMapQVO); + } + + public ArrayList getWFLDtlDocActivityHdrInfo(WflDtlDocActivityMapQVO oWflDtlDocActivityMapQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(oUserInfo); + return oWFLDtlDocActivityMapBO.getWFLDtlDocActivityHdrInfo(oWflDtlDocActivityMapQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getWFLDtlDocActivityDtlMetaInfo(String lPrimaryKey, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(oUserInfo); + return oWFLDtlDocActivityMapBO.getWFLDtlDocActivityDtlMetaInfo(lPrimaryKey); + } + + public ArrayList getWFLDtlDocActivityDtlInfo(String lPrimaryKey, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(oUserInfo); + return oWFLDtlDocActivityMapBO.getWFLDtlDocActivityDtlInfo(lPrimaryKey, lStartPosition, lLastPosition); + } + + public String saveWflDtlDocActivityMst(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(); + return oWFLDtlDocActivityMapBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getWflMapCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(); + LovVO oLovVO = oWFLDtlDocActivityMapBO.getWflMapCodeLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getWflDocCodeDtlLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(); + LovVO oLovVO = oWFLDtlDocActivityMapBO.getWflDocCodeDtlLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getWflActCodeLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WFLDtlDocActivityMapBO oWFLDtlDocActivityMapBO = new WFLDtlDocActivityMapBO(); + LovVO oLovVO = oWFLDtlDocActivityMapBO.getWflActCodeLOVdata(oLovQueryVO); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocal.java new file mode 100644 index 0000000..beca179 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocal.java @@ -0,0 +1,31 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.vo.WflDtlDocActivityMapQVO; + +public interface WflDtlDocActivityMapFacadeLocal extends EJBLocalObject { + RecordMetaInfo getWFLDtlDocActivityHdrMetaInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLDtlDocActivityHdrInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLDtlDocActivityDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLDtlDocActivityDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDtlDocActivityMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflMapCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocCodeDtlLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflActCodeLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocalHome.java new file mode 100644 index 0000000..79768e9 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflDtlDocActivityMapFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflDtlDocActivityMapFacadeLocalHome extends EJBLocalHome { + WflDtlDocActivityMapFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeBean.java new file mode 100644 index 0000000..ed20804 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeBean.java @@ -0,0 +1,82 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.ejb.business.WflRouteDtlBO; +import wenrgise.workflow.vo.WflRouteDtlQVO; + +public class WflRouteDtlFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public RecordMetaInfo getWFLRouteDtlMetaInfo(WflRouteDtlQVO oWflRouteDtlQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(oUserInfo); + return oWflRouteDtlBO.getWFLRouteDtlMetaInfo(oWflRouteDtlQVO); + } + + public ArrayList getWFLRouteDtlInfo(WflRouteDtlQVO oWflRouteDtlQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(oUserInfo); + return oWflRouteDtlBO.getWFLRouteDtlInfo(oWflRouteDtlQVO, lStartPosition, lLastPosition); + } + + public RecordMetaInfo getWFLTransDtlMetaInfo(WflRouteDtlQVO oWflRouteDtlQVO, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(oUserInfo); + return oWflRouteDtlBO.getWFLTransDtlMetaInfo(oWflRouteDtlQVO); + } + + public ArrayList getWFLTransDtlInfo(WflRouteDtlQVO oWflRouteDtlQVO, long lStartPosition, long lLastPosition, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(oUserInfo); + return oWflRouteDtlBO.getWFLTransDtlInfo(oWflRouteDtlQVO, lStartPosition, lLastPosition); + } + + public String saveWFLRouteDtl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(oUserInfo); + return oWflRouteDtlBO.saveData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } + + public LovVO getWflDocDtlQLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(); + LovVO oLovVO = oWflRouteDtlBO.getWflDocDtlQLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getWflDocDtlIdNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(); + LovVO oLovVO = oWflRouteDtlBO.getWflDocDtlIdNLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getWflActIdNLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(); + LovVO oLovVO = oWflRouteDtlBO.getWflActIdNLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getWflRouteDtlLOVdata(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(); + LovVO oLovVO = oWflRouteDtlBO.getWflRouteDtlLOVdata(oLovQueryVO); + return oLovVO; + } + + public LovVO getWflConditionLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + WflRouteDtlBO oWflRouteDtlBO = new WflRouteDtlBO(); + LovVO oLovVO = oWflRouteDtlBO.getWflConditionLOVData(oLovQueryVO); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocal.java new file mode 100644 index 0000000..fd28098 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocal.java @@ -0,0 +1,35 @@ +package wenrgise.workflow.ejb.facade; + +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.EJBLocalObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.vo.WflRouteDtlQVO; + +public interface WflRouteDtlFacadeLocal extends EJBLocalObject { + RecordMetaInfo getWFLRouteDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLRouteDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLTransDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLTransDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + String saveWFLRouteDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocDtlQLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocDtlIdNLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflActIdNLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflRouteDtlLOVdata(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflConditionLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocalHome.java new file mode 100644 index 0000000..f86dea9 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflRouteDtlFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflRouteDtlFacadeLocalHome extends EJBLocalHome { + WflRouteDtlFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeBean.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeBean.java new file mode 100644 index 0000000..bb5cf89 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeBean.java @@ -0,0 +1,16 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; + +public class WflWorkFlowConditionsFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocal.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocal.java new file mode 100644 index 0000000..f9cabff --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocal.java @@ -0,0 +1,5 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.EJBLocalObject; + +public interface WflWorkFlowConditionsFacadeLocal extends EJBLocalObject {} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocalHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocalHome.java new file mode 100644 index 0000000..f7d6d5d --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WflWorkFlowConditionsFacadeLocalHome.java @@ -0,0 +1,8 @@ +package wenrgise.workflow.ejb.facade; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +public interface WflWorkFlowConditionsFacadeLocalHome extends EJBLocalHome { + WflWorkFlowConditionsFacadeLocal create() throws CreateException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade.java new file mode 100644 index 0000000..d5844d1 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade.java @@ -0,0 +1,141 @@ +package wenrgise.workflow.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.bean.WflDtlsHdrBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.vo.WflDOPGrpQVO; +import wenrgise.workflow.vo.WflDelegationQVO; +import wenrgise.workflow.vo.WflDocMstQVO; +import wenrgise.workflow.vo.WflDtlDocActivityMapQVO; +import wenrgise.workflow.vo.WflRouteDtlQVO; + +public interface WorkFlowFacade extends EJBObject { + WflStatus process(WflDocumentInfo paramWflDocumentInfo) throws RemoteException; + + WflAuthorizationBean canDo(WflDocumentInfo paramWflDocumentInfo) throws RemoteException; + + ArrayList getWorkListInfo(String paramString) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String getDocumentTypeId(String paramString) throws RemoteException; + + String getActivityId(String paramString) throws RemoteException; + + UserInfo getLoginUserInfo(String paramString1, String paramString2) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeHdrMetaInfo(WflDocMstQVO paramWflDocMstQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeHdrInfo(WflDocMstQVO paramWflDocMstQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeAttrDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeAttrDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeConditionsDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeConditionsDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDocTypeMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getDtlDocTypeMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getDtlDocTypeInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDtlDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLDtlDocActivityHdrMetaInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLDtlDocActivityHdrInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLDtlDocActivityDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLDtlDocActivityDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDtlDocActivityMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflMapCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocCodeDtlLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflActCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflActivityDtls(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflActivityDtlMetaInfo(UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflActivityDtlInfo(long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLRouteDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLRouteDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLTransDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLTransDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWFLRouteDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocDtlQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocDtlIdNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflActIdNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflRouteDtlLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + LovVO getWflConditionLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + ArrayList getWflDOPGrpHdrInfo(WflDOPGrpQVO paramWflDOPGrpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDOPGrpHdrMetaInfo(WflDOPGrpQVO paramWflDOPGrpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDOPGrp(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDOPGrpCodeQLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + RecordMetaInfo getWflDOPGrpDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDOPGrpDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpNameLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + LovVO getWrkGroupLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + LovVO getClassCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + String getRouteDtlId(WflDocumentInfo paramWflDocumentInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getActivityCode(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDelegationHdrMetaInfo(WflDelegationQVO paramWflDelegationQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDelegationHdrInfo(WflDelegationQVO paramWflDelegationQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDelegationDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDelegationDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDelegation(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDtlDocTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + WflDtlsHdrBean getWorkFlowDtlsInfo(String paramString) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String closeWorkList(WflDtlsHdrBean paramWflDtlsHdrBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getDocHistDtl(String paramString1, String paramString2, String paramString3) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2.java new file mode 100644 index 0000000..88f0db8 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2.java @@ -0,0 +1,141 @@ +package wenrgise.workflow.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.bean.WflDtlsHdrBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.vo.WflDOPGrpQVO; +import wenrgise.workflow.vo.WflDelegationQVO; +import wenrgise.workflow.vo.WflDocMstQVO; +import wenrgise.workflow.vo.WflDtlDocActivityMapQVO; +import wenrgise.workflow.vo.WflRouteDtlQVO; + +public interface WorkFlowFacade2 extends EJBObject { + WflStatus process(WflDocumentInfo paramWflDocumentInfo) throws RemoteException; + + WflAuthorizationBean canDo(WflDocumentInfo paramWflDocumentInfo) throws RemoteException; + + ArrayList getWorkListInfo(String paramString) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String getDocumentTypeId(String paramString) throws RemoteException; + + String getActivityId(String paramString) throws RemoteException; + + UserInfo getLoginUserInfo(String paramString1, String paramString2) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeHdrMetaInfo(WflDocMstQVO paramWflDocMstQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeHdrInfo(WflDocMstQVO paramWflDocMstQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeAttrDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeAttrDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDocTypeConditionsDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDocTypeConditionsDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDocTypeMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getDtlDocTypeMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getDtlDocTypeInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDtlDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLDtlDocActivityHdrMetaInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLDtlDocActivityHdrInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLDtlDocActivityDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLDtlDocActivityDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDtlDocActivityMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflMapCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocCodeDtlLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflActCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflActivityDtls(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflActivityDtlMetaInfo(UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflActivityDtlInfo(long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLRouteDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLRouteDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWFLTransDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWFLTransDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWFLRouteDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocDtlQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDocDtlIdNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflActIdNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflRouteDtlLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + LovVO getWflConditionLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + ArrayList getWflDOPGrpHdrInfo(WflDOPGrpQVO paramWflDOPGrpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDOPGrpHdrMetaInfo(WflDOPGrpQVO paramWflDOPGrpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDOPGrp(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDOPGrpCodeQLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + RecordMetaInfo getWflDOPGrpDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDOPGrpDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpNameLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + LovVO getWrkGroupLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + LovVO getClassCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + String getRouteDtlId(WflDocumentInfo paramWflDocumentInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getActivityCode(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDelegationHdrMetaInfo(WflDelegationQVO paramWflDelegationQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDelegationHdrInfo(WflDelegationQVO paramWflDelegationQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getWflDelegationDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getWflDelegationDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWflDelegation(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWflDtlDocTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException; + + WflDtlsHdrBean getWorkFlowDtlsInfo(String paramString) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String closeWorkList(WflDtlsHdrBean paramWflDtlsHdrBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getDocHistDtl(String paramString1, String paramString2, String paramString3) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2Home.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2Home.java new file mode 100644 index 0000000..fdb9d5a --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacade2Home.java @@ -0,0 +1,9 @@ +package wenrgise.workflow.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface WorkFlowFacade2Home extends EJBHome { + WorkFlowFacade2 create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacadeHome.java b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacadeHome.java new file mode 100644 index 0000000..429b6eb --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/WorkFlowFacadeHome.java @@ -0,0 +1,9 @@ +package wenrgise.workflow.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; + +public interface WorkFlowFacadeHome extends EJBHome { + WorkFlowFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2Home_Stub.java b/hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2Home_Stub.java new file mode 100644 index 0000000..9b08f9b --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2Home_Stub.java @@ -0,0 +1,218 @@ +package wenrgise.workflow.ejb.facade; + +import java.rmi.RemoteException; +import java.rmi.UnexpectedException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import javax.ejb.EJBMetaData; +import javax.ejb.Handle; +import javax.ejb.HomeHandle; +import javax.ejb.RemoveException; +import javax.rmi.CORBA.Stub; +import javax.rmi.CORBA.Util; +import org.omg.CORBA.SystemException; +import org.omg.CORBA.portable.ApplicationException; +import org.omg.CORBA.portable.OutputStream; +import org.omg.CORBA.portable.RemarshalException; +import org.omg.CORBA.portable.ServantObject; +import org.omg.CORBA_2_3.portable.InputStream; + +public class _WorkFlowFacade2Home_Stub extends Stub implements WorkFlowFacade2Home { + private static final String[] _type_ids = new String[] { "RMI:wenrgise.workflow.ejb.facade.WorkFlowFacade2Home:0000000000000000", "RMI:javax.ejb.EJBHome:0000000000000000" }; + + public String[] _ids() { + return _type_ids; + } + + public WorkFlowFacade2 create() throws CreateException, RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("create", true); + inputStream = (InputStream)_invoke(outputStream); + return (WorkFlowFacade2)inputStream.read_Object(WorkFlowFacade2.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return create(); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("create", WorkFlowFacade2Home.class); + if (servantObject == null) + return create(); + try { + WorkFlowFacade2 workFlowFacade2 = ((WorkFlowFacade2Home)servantObject.servant).create(); + return (WorkFlowFacade2)Util.copyObject(workFlowFacade2, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public EJBMetaData getEJBMetaData() throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("_get_EJBMetaData", true); + inputStream = (InputStream)_invoke(outputStream); + return (EJBMetaData)inputStream.read_value(EJBMetaData.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getEJBMetaData(); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("_get_EJBMetaData", EJBHome.class); + if (servantObject == null) + return getEJBMetaData(); + try { + EJBMetaData eJBMetaData = ((EJBHome)servantObject.servant).getEJBMetaData(); + return (EJBMetaData)Util.copyObject(eJBMetaData, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public HomeHandle getHomeHandle() throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("_get_homeHandle", true); + inputStream = (InputStream)_invoke(outputStream); + return (HomeHandle)inputStream.read_abstract_interface(HomeHandle.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getHomeHandle(); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("_get_homeHandle", EJBHome.class); + if (servantObject == null) + return getHomeHandle(); + try { + HomeHandle homeHandle = ((EJBHome)servantObject.servant).getHomeHandle(); + return (HomeHandle)Util.copyObject(homeHandle, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public void remove(Object paramObject) throws RemoteException, RemoveException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("remove__java_lang_Object", true); + Util.writeAny(outputStream, paramObject); + _invoke(outputStream); + return; + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/RemoveEx:1.0")) + throw (RemoveException)inputStream.read_value(RemoveException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + remove(paramObject); + return; + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("remove__java_lang_Object", EJBHome.class); + if (servantObject == null) { + remove(paramObject); + return; + } + try { + Object object = Util.copyObject(paramObject, _orb()); + ((EJBHome)servantObject.servant).remove(object); + return; + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof RemoveException) + throw (RemoveException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public void remove(Handle paramHandle) throws RemoteException, RemoveException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("remove__javax_ejb_Handle", true); + Util.writeAbstractObject(outputStream, paramHandle); + _invoke(outputStream); + return; + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/RemoveEx:1.0")) + throw (RemoveException)inputStream.read_value(RemoveException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + remove(paramHandle); + return; + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("remove__javax_ejb_Handle", EJBHome.class); + if (servantObject == null) { + remove(paramHandle); + return; + } + try { + Handle handle = (Handle)Util.copyObject(paramHandle, _orb()); + ((EJBHome)servantObject.servant).remove(handle); + return; + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof RemoveException) + throw (RemoveException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2_Stub.java b/hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2_Stub.java new file mode 100644 index 0000000..98d444c --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/ejb/facade/_WorkFlowFacade2_Stub.java @@ -0,0 +1,3094 @@ +package wenrgise.workflow.ejb.facade; + +import java.io.Serializable; +import java.rmi.RemoteException; +import java.rmi.UnexpectedException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import javax.ejb.EJBObject; +import javax.ejb.Handle; +import javax.ejb.RemoveException; +import javax.rmi.CORBA.Stub; +import javax.rmi.CORBA.Util; +import org.omg.CORBA.SystemException; +import org.omg.CORBA.portable.ApplicationException; +import org.omg.CORBA.portable.InputStream; +import org.omg.CORBA.portable.OutputStream; +import org.omg.CORBA.portable.RemarshalException; +import org.omg.CORBA.portable.ServantObject; +import org.omg.CORBA_2_3.portable.InputStream; +import org.omg.CORBA_2_3.portable.OutputStream; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.workflow.bean.WflAuthorizationBean; +import wenrgise.workflow.bean.WflDtlsHdrBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.vo.WflDOPGrpQVO; +import wenrgise.workflow.vo.WflDelegationQVO; +import wenrgise.workflow.vo.WflDocMstQVO; +import wenrgise.workflow.vo.WflDtlDocActivityMapQVO; +import wenrgise.workflow.vo.WflRouteDtlQVO; + +public class _WorkFlowFacade2_Stub extends Stub implements WorkFlowFacade2 { + private static final String[] _type_ids = new String[] { "RMI:wenrgise.workflow.ejb.facade.WorkFlowFacade2:0000000000000000", "RMI:javax.ejb.EJBObject:0000000000000000" }; + + public String[] _ids() { + return _type_ids; + } + + public WflAuthorizationBean canDo(WflDocumentInfo paramWflDocumentInfo) throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("canDo", true); + outputStream.write_value((Serializable)paramWflDocumentInfo, WflDocumentInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (WflAuthorizationBean)inputStream.read_value(WflAuthorizationBean.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return canDo(paramWflDocumentInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("canDo", WorkFlowFacade2.class); + if (servantObject == null) + return canDo(paramWflDocumentInfo); + try { + WflDocumentInfo wflDocumentInfo = (WflDocumentInfo)Util.copyObject(paramWflDocumentInfo, _orb()); + WflAuthorizationBean wflAuthorizationBean = ((WorkFlowFacade2)servantObject.servant).canDo(wflDocumentInfo); + return (WflAuthorizationBean)Util.copyObject(wflAuthorizationBean, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String closeWorkList(WflDtlsHdrBean paramWflDtlsHdrBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("closeWorkList", true); + outputStream.write_value((Serializable)paramWflDtlsHdrBean, WflDtlsHdrBean.class); + outputStream.write_value(paramTimestamp1, Timestamp.class); + outputStream.write_value(paramArrayList, ArrayList.class); + outputStream.write_value(paramTimestamp2, Timestamp.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return closeWorkList(paramWflDtlsHdrBean, paramTimestamp1, paramArrayList, paramTimestamp2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("closeWorkList", WorkFlowFacade2.class); + if (servantObject == null) + return closeWorkList(paramWflDtlsHdrBean, paramTimestamp1, paramArrayList, paramTimestamp2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDtlsHdrBean, paramTimestamp1, paramArrayList, paramTimestamp2, paramUserInfo }, _orb()); + WflDtlsHdrBean wflDtlsHdrBean = (WflDtlsHdrBean)arrayOfObject[0]; + Timestamp timestamp1 = (Timestamp)arrayOfObject[1]; + ArrayList arrayList = (ArrayList)arrayOfObject[2]; + Timestamp timestamp2 = (Timestamp)arrayOfObject[3]; + UserInfo userInfo = (UserInfo)arrayOfObject[4]; + return ((WorkFlowFacade2)servantObject.servant).closeWorkList(wflDtlsHdrBean, timestamp1, arrayList, timestamp2, userInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String getActivityCode(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getActivityCode", true); + outputStream.write_value(paramString, String.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getActivityCode(paramString); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getActivityCode", WorkFlowFacade2.class); + if (servantObject == null) + return getActivityCode(paramString); + try { + return ((WorkFlowFacade2)servantObject.servant).getActivityCode(paramString); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String getActivityId(String paramString) throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getActivityId", true); + outputStream.write_value(paramString, String.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getActivityId(paramString); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getActivityId", WorkFlowFacade2.class); + if (servantObject == null) + return getActivityId(paramString); + try { + return ((WorkFlowFacade2)servantObject.servant).getActivityId(paramString); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getClassCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getClassCodeLOVData", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getClassCodeLOVData(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getClassCodeLOVData", WorkFlowFacade2.class); + if (servantObject == null) + return getClassCodeLOVData(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getClassCodeLOVData(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getDocHistDtl(String paramString1, String paramString2, String paramString3) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getDocHistDtl", true); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + outputStream.write_value(paramString3, String.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getDocHistDtl(paramString1, paramString2, paramString3); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getDocHistDtl", WorkFlowFacade2.class); + if (servantObject == null) + return getDocHistDtl(paramString1, paramString2, paramString3); + try { + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getDocHistDtl(paramString1, paramString2, paramString3); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String getDocumentTypeId(String paramString) throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getDocumentTypeId", true); + outputStream.write_value(paramString, String.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getDocumentTypeId(paramString); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getDocumentTypeId", WorkFlowFacade2.class); + if (servantObject == null) + return getDocumentTypeId(paramString); + try { + return ((WorkFlowFacade2)servantObject.servant).getDocumentTypeId(paramString); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getDtlDocTypeInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getDtlDocTypeInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getDtlDocTypeInfo(paramString, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getDtlDocTypeInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getDtlDocTypeInfo(paramString, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getDtlDocTypeInfo(str, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getDtlDocTypeMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getDtlDocTypeMetaInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getDtlDocTypeMetaInfo(paramString, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getDtlDocTypeMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getDtlDocTypeMetaInfo(paramString, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getDtlDocTypeMetaInfo(str, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public EJBHome getEJBHome() throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("_get_EJBHome", true); + inputStream = _invoke(outputStream); + return (EJBHome)inputStream.read_Object(EJBHome.class); + } catch (ApplicationException applicationException) { + inputStream = applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getEJBHome(); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("_get_EJBHome", EJBObject.class); + if (servantObject == null) + return getEJBHome(); + try { + EJBHome eJBHome = ((EJBObject)servantObject.servant).getEJBHome(); + return (EJBHome)Util.copyObject(eJBHome, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getEmpNameLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getEmpNameLOVData", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getEmpNameLOVData(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getEmpNameLOVData", WorkFlowFacade2.class); + if (servantObject == null) + return getEmpNameLOVData(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getEmpNameLOVData(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public Handle getHandle() throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("_get_handle", true); + inputStream = (InputStream)_invoke(outputStream); + return (Handle)inputStream.read_abstract_interface(Handle.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getHandle(); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("_get_handle", EJBObject.class); + if (servantObject == null) + return getHandle(); + try { + Handle handle = ((EJBObject)servantObject.servant).getHandle(); + return (Handle)Util.copyObject(handle, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public UserInfo getLoginUserInfo(String paramString1, String paramString2) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getLoginUserInfo", true); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + inputStream = (InputStream)_invoke(outputStream); + return (UserInfo)inputStream.read_value(UserInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getLoginUserInfo(paramString1, paramString2); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getLoginUserInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getLoginUserInfo(paramString1, paramString2); + try { + UserInfo userInfo = ((WorkFlowFacade2)servantObject.servant).getLoginUserInfo(paramString1, paramString2); + return (UserInfo)Util.copyObject(userInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public Object getPrimaryKey() throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("_get_primaryKey", true); + inputStream = _invoke(outputStream); + return Util.readAny(inputStream); + } catch (ApplicationException applicationException) { + inputStream = applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getPrimaryKey(); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("_get_primaryKey", EJBObject.class); + if (servantObject == null) + return getPrimaryKey(); + try { + Object object = ((EJBObject)servantObject.servant).getPrimaryKey(); + return Util.copyObject(object, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String getRouteDtlId(WflDocumentInfo paramWflDocumentInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getRouteDtlId", true); + outputStream.write_value((Serializable)paramWflDocumentInfo, WflDocumentInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getRouteDtlId(paramWflDocumentInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getRouteDtlId", WorkFlowFacade2.class); + if (servantObject == null) + return getRouteDtlId(paramWflDocumentInfo); + try { + WflDocumentInfo wflDocumentInfo = (WflDocumentInfo)Util.copyObject(paramWflDocumentInfo, _orb()); + return ((WorkFlowFacade2)servantObject.servant).getRouteDtlId(wflDocumentInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWFLDtlDocActivityDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLDtlDocActivityDtlInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLDtlDocActivityDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLDtlDocActivityDtlInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLDtlDocActivityDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWFLDtlDocActivityDtlInfo(str, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWFLDtlDocActivityDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLDtlDocActivityDtlMetaInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLDtlDocActivityDtlMetaInfo(paramString, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLDtlDocActivityDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLDtlDocActivityDtlMetaInfo(paramString, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWFLDtlDocActivityDtlMetaInfo(str, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWFLDtlDocActivityHdrInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLDtlDocActivityHdrInfo", true); + outputStream.write_value((Serializable)paramWflDtlDocActivityMapQVO, WflDtlDocActivityMapQVO.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLDtlDocActivityHdrInfo(paramWflDtlDocActivityMapQVO, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLDtlDocActivityHdrInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLDtlDocActivityHdrInfo(paramWflDtlDocActivityMapQVO, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDtlDocActivityMapQVO, paramUserInfo }, _orb()); + WflDtlDocActivityMapQVO wflDtlDocActivityMapQVO = (WflDtlDocActivityMapQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWFLDtlDocActivityHdrInfo(wflDtlDocActivityMapQVO, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWFLDtlDocActivityHdrMetaInfo(WflDtlDocActivityMapQVO paramWflDtlDocActivityMapQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLDtlDocActivityHdrMetaInfo", true); + outputStream.write_value((Serializable)paramWflDtlDocActivityMapQVO, WflDtlDocActivityMapQVO.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLDtlDocActivityHdrMetaInfo(paramWflDtlDocActivityMapQVO, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLDtlDocActivityHdrMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLDtlDocActivityHdrMetaInfo(paramWflDtlDocActivityMapQVO, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDtlDocActivityMapQVO, paramUserInfo }, _orb()); + WflDtlDocActivityMapQVO wflDtlDocActivityMapQVO = (WflDtlDocActivityMapQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWFLDtlDocActivityHdrMetaInfo(wflDtlDocActivityMapQVO, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWFLRouteDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLRouteDtlInfo", true); + outputStream.write_value((Serializable)paramWflRouteDtlQVO, WflRouteDtlQVO.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLRouteDtlInfo(paramWflRouteDtlQVO, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLRouteDtlInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLRouteDtlInfo(paramWflRouteDtlQVO, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflRouteDtlQVO, paramUserInfo }, _orb()); + WflRouteDtlQVO wflRouteDtlQVO = (WflRouteDtlQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWFLRouteDtlInfo(wflRouteDtlQVO, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWFLRouteDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLRouteDtlMetaInfo", true); + outputStream.write_value((Serializable)paramWflRouteDtlQVO, WflRouteDtlQVO.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLRouteDtlMetaInfo(paramWflRouteDtlQVO, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLRouteDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLRouteDtlMetaInfo(paramWflRouteDtlQVO, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflRouteDtlQVO, paramUserInfo }, _orb()); + WflRouteDtlQVO wflRouteDtlQVO = (WflRouteDtlQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWFLRouteDtlMetaInfo(wflRouteDtlQVO, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWFLTransDtlInfo(WflRouteDtlQVO paramWflRouteDtlQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLTransDtlInfo", true); + outputStream.write_value((Serializable)paramWflRouteDtlQVO, WflRouteDtlQVO.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLTransDtlInfo(paramWflRouteDtlQVO, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLTransDtlInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLTransDtlInfo(paramWflRouteDtlQVO, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflRouteDtlQVO, paramUserInfo }, _orb()); + WflRouteDtlQVO wflRouteDtlQVO = (WflRouteDtlQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWFLTransDtlInfo(wflRouteDtlQVO, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWFLTransDtlMetaInfo(WflRouteDtlQVO paramWflRouteDtlQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWFLTransDtlMetaInfo", true); + outputStream.write_value((Serializable)paramWflRouteDtlQVO, WflRouteDtlQVO.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWFLTransDtlMetaInfo(paramWflRouteDtlQVO, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWFLTransDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWFLTransDtlMetaInfo(paramWflRouteDtlQVO, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflRouteDtlQVO, paramUserInfo }, _orb()); + WflRouteDtlQVO wflRouteDtlQVO = (WflRouteDtlQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWFLTransDtlMetaInfo(wflRouteDtlQVO, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflActCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflActCodeLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflActCodeLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflActCodeLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflActCodeLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflActCodeLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflActIdNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflActIdNLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflActIdNLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflActIdNLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflActIdNLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflActIdNLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflActivityDtlInfo(long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflActivityDtlInfo", true); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflActivityDtlInfo(paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflActivityDtlInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflActivityDtlInfo(paramLong1, paramLong2, paramUserInfo); + try { + UserInfo userInfo = (UserInfo)Util.copyObject(paramUserInfo, _orb()); + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflActivityDtlInfo(paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflActivityDtlMetaInfo(UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflActivityDtlMetaInfo", true); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflActivityDtlMetaInfo(paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflActivityDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflActivityDtlMetaInfo(paramUserInfo); + try { + UserInfo userInfo = (UserInfo)Util.copyObject(paramUserInfo, _orb()); + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflActivityDtlMetaInfo(userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflConditionLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflConditionLOVData", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflConditionLOVData(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflConditionLOVData", WorkFlowFacade2.class); + if (servantObject == null) + return getWflConditionLOVData(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflConditionLOVData(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflDOPGrpCodeQLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDOPGrpCodeQLOV", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDOPGrpCodeQLOV(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDOPGrpCodeQLOV", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDOPGrpCodeQLOV(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflDOPGrpCodeQLOV(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflDOPGrpDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDOPGrpDtlInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDOPGrpDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDOPGrpDtlInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDOPGrpDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflDOPGrpDtlInfo(str, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflDOPGrpDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDOPGrpDtlMetaInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDOPGrpDtlMetaInfo(paramString, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDOPGrpDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDOPGrpDtlMetaInfo(paramString, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflDOPGrpDtlMetaInfo(str, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflDOPGrpHdrInfo(WflDOPGrpQVO paramWflDOPGrpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDOPGrpHdrInfo", true); + outputStream.write_value((Serializable)paramWflDOPGrpQVO, WflDOPGrpQVO.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDOPGrpHdrInfo(paramWflDOPGrpQVO, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDOPGrpHdrInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDOPGrpHdrInfo(paramWflDOPGrpQVO, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDOPGrpQVO, paramUserInfo }, _orb()); + WflDOPGrpQVO wflDOPGrpQVO = (WflDOPGrpQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflDOPGrpHdrInfo(wflDOPGrpQVO, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflDOPGrpHdrMetaInfo(WflDOPGrpQVO paramWflDOPGrpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDOPGrpHdrMetaInfo", true); + outputStream.write_value((Serializable)paramWflDOPGrpQVO, WflDOPGrpQVO.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDOPGrpHdrMetaInfo(paramWflDOPGrpQVO, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDOPGrpHdrMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDOPGrpHdrMetaInfo(paramWflDOPGrpQVO, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDOPGrpQVO, paramUserInfo }, _orb()); + WflDOPGrpQVO wflDOPGrpQVO = (WflDOPGrpQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflDOPGrpHdrMetaInfo(wflDOPGrpQVO, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflDelegationDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDelegationDtlInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDelegationDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDelegationDtlInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDelegationDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflDelegationDtlInfo(str, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflDelegationDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDelegationDtlMetaInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDelegationDtlMetaInfo(paramString, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDelegationDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDelegationDtlMetaInfo(paramString, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflDelegationDtlMetaInfo(str, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflDelegationHdrInfo(WflDelegationQVO paramWflDelegationQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDelegationHdrInfo", true); + outputStream.write_value((Serializable)paramWflDelegationQVO, WflDelegationQVO.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDelegationHdrInfo(paramWflDelegationQVO, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDelegationHdrInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDelegationHdrInfo(paramWflDelegationQVO, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDelegationQVO, paramUserInfo }, _orb()); + WflDelegationQVO wflDelegationQVO = (WflDelegationQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflDelegationHdrInfo(wflDelegationQVO, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflDelegationHdrMetaInfo(WflDelegationQVO paramWflDelegationQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDelegationHdrMetaInfo", true); + outputStream.write_value((Serializable)paramWflDelegationQVO, WflDelegationQVO.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDelegationHdrMetaInfo(paramWflDelegationQVO, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDelegationHdrMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDelegationHdrMetaInfo(paramWflDelegationQVO, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDelegationQVO, paramUserInfo }, _orb()); + WflDelegationQVO wflDelegationQVO = (WflDelegationQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflDelegationHdrMetaInfo(wflDelegationQVO, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflDocCodeDtlLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocCodeDtlLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocCodeDtlLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocCodeDtlLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocCodeDtlLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflDocCodeDtlLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocCodeLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocCodeLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocCodeLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocCodeLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflDocCodeLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflDocDtlIdNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocDtlIdNLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocDtlIdNLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocDtlIdNLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocDtlIdNLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflDocDtlIdNLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflDocDtlQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocDtlQLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocDtlQLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocDtlQLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocDtlQLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflDocDtlQLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflDocTypeAttrDtlInfo(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocTypeAttrDtlInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocTypeAttrDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocTypeAttrDtlInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocTypeAttrDtlInfo(paramString, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflDocTypeAttrDtlInfo(str, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflDocTypeAttrDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocTypeAttrDtlMetaInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocTypeAttrDtlMetaInfo(paramString, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocTypeAttrDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocTypeAttrDtlMetaInfo(paramString, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflDocTypeAttrDtlMetaInfo(str, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflDocTypeConditionsDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocTypeConditionsDtl", true); + outputStream.write_value(paramString, String.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocTypeConditionsDtl(paramString, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocTypeConditionsDtl", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocTypeConditionsDtl(paramString, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflDocTypeConditionsDtl(str, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflDocTypeConditionsDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocTypeConditionsDtlMetaInfo", true); + outputStream.write_value(paramString, String.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocTypeConditionsDtlMetaInfo(paramString, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocTypeConditionsDtlMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocTypeConditionsDtlMetaInfo(paramString, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramString, paramUserInfo }, _orb()); + String str = (String)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflDocTypeConditionsDtlMetaInfo(str, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWflDocTypeHdrInfo(WflDocMstQVO paramWflDocMstQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocTypeHdrInfo", true); + outputStream.write_value((Serializable)paramWflDocMstQVO, WflDocMstQVO.class); + outputStream.write_longlong(paramLong1); + outputStream.write_longlong(paramLong2); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocTypeHdrInfo(paramWflDocMstQVO, paramLong1, paramLong2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocTypeHdrInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocTypeHdrInfo(paramWflDocMstQVO, paramLong1, paramLong2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDocMstQVO, paramUserInfo }, _orb()); + WflDocMstQVO wflDocMstQVO = (WflDocMstQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWflDocTypeHdrInfo(wflDocMstQVO, paramLong1, paramLong2, userInfo); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public RecordMetaInfo getWflDocTypeHdrMetaInfo(WflDocMstQVO paramWflDocMstQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDocTypeHdrMetaInfo", true); + outputStream.write_value((Serializable)paramWflDocMstQVO, WflDocMstQVO.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (RecordMetaInfo)inputStream.read_value(RecordMetaInfo.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDocTypeHdrMetaInfo(paramWflDocMstQVO, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDocTypeHdrMetaInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDocTypeHdrMetaInfo(paramWflDocMstQVO, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramWflDocMstQVO, paramUserInfo }, _orb()); + WflDocMstQVO wflDocMstQVO = (WflDocMstQVO)arrayOfObject[0]; + UserInfo userInfo = (UserInfo)arrayOfObject[1]; + RecordMetaInfo recordMetaInfo = ((WorkFlowFacade2)servantObject.servant).getWflDocTypeHdrMetaInfo(wflDocMstQVO, userInfo); + return (RecordMetaInfo)Util.copyObject(recordMetaInfo, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflDtlDocCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDtlDocCodeLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDtlDocCodeLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDtlDocCodeLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDtlDocCodeLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflDtlDocCodeLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflDtlDocTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflDtlDocTypeLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflDtlDocTypeLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflDtlDocTypeLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflDtlDocTypeLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflDtlDocTypeLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflMapCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflMapCodeLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflMapCodeLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflMapCodeLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflMapCodeLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflMapCodeLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWflRouteDtlLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWflRouteDtlLOVdata", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWflRouteDtlLOVdata(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWflRouteDtlLOVdata", WorkFlowFacade2.class); + if (servantObject == null) + return getWflRouteDtlLOVdata(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWflRouteDtlLOVdata(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public WflDtlsHdrBean getWorkFlowDtlsInfo(String paramString) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWorkFlowDtlsInfo", true); + outputStream.write_value(paramString, String.class); + inputStream = (InputStream)_invoke(outputStream); + return (WflDtlsHdrBean)inputStream.read_value(WflDtlsHdrBean.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWorkFlowDtlsInfo(paramString); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWorkFlowDtlsInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWorkFlowDtlsInfo(paramString); + try { + WflDtlsHdrBean wflDtlsHdrBean = ((WorkFlowFacade2)servantObject.servant).getWorkFlowDtlsInfo(paramString); + return (WflDtlsHdrBean)Util.copyObject(wflDtlsHdrBean, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public ArrayList getWorkListInfo(String paramString) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWorkListInfo", true); + outputStream.write_value(paramString, String.class); + inputStream = (InputStream)_invoke(outputStream); + return (ArrayList)inputStream.read_value(ArrayList.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWorkListInfo(paramString); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWorkListInfo", WorkFlowFacade2.class); + if (servantObject == null) + return getWorkListInfo(paramString); + try { + ArrayList arrayList = ((WorkFlowFacade2)servantObject.servant).getWorkListInfo(paramString); + return (ArrayList)Util.copyObject(arrayList, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public LovVO getWrkGroupLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("getWrkGroupLOVData", true); + outputStream.write_value((Serializable)paramLovQueryVO, LovQueryVO.class); + inputStream = (InputStream)_invoke(outputStream); + return (LovVO)inputStream.read_value(LovVO.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return getWrkGroupLOVData(paramLovQueryVO); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("getWrkGroupLOVData", WorkFlowFacade2.class); + if (servantObject == null) + return getWrkGroupLOVData(paramLovQueryVO); + try { + LovQueryVO lovQueryVO = (LovQueryVO)Util.copyObject(paramLovQueryVO, _orb()); + LovVO lovVO = ((WorkFlowFacade2)servantObject.servant).getWrkGroupLOVData(lovQueryVO); + return (LovVO)Util.copyObject(lovVO, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public boolean isIdentical(EJBObject paramEJBObject) throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("isIdentical", true); + Util.writeRemoteObject(outputStream, paramEJBObject); + inputStream = _invoke(outputStream); + return inputStream.read_boolean(); + } catch (ApplicationException applicationException) { + inputStream = applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return isIdentical(paramEJBObject); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("isIdentical", EJBObject.class); + if (servantObject == null) + return isIdentical(paramEJBObject); + try { + EJBObject eJBObject = (EJBObject)Util.copyObject(paramEJBObject, _orb()); + return ((EJBObject)servantObject.servant).isIdentical(eJBObject); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public WflStatus process(WflDocumentInfo paramWflDocumentInfo) throws RemoteException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("process", true); + outputStream.write_value((Serializable)paramWflDocumentInfo, WflDocumentInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (WflStatus)inputStream.read_value(WflStatus.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return process(paramWflDocumentInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("process", WorkFlowFacade2.class); + if (servantObject == null) + return process(paramWflDocumentInfo); + try { + WflDocumentInfo wflDocumentInfo = (WflDocumentInfo)Util.copyObject(paramWflDocumentInfo, _orb()); + WflStatus wflStatus = ((WorkFlowFacade2)servantObject.servant).process(wflDocumentInfo); + return (WflStatus)Util.copyObject(wflStatus, _orb()); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public void remove() throws RemoteException, RemoveException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = _request("remove", true); + _invoke(outputStream); + return; + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/RemoveEx:1.0")) + throw (RemoveException)inputStream.read_value(RemoveException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + remove(); + return; + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("remove", EJBObject.class); + if (servantObject == null) { + remove(); + return; + } + try { + ((EJBObject)servantObject.servant).remove(); + return; + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof RemoveException) + throw (RemoveException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String saveWFLRouteDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("saveWFLRouteDtl", true); + outputStream.write_value((Serializable)paramBaseHeaderBean, BaseHeaderBean.class); + outputStream.write_value(paramTimestamp1, Timestamp.class); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + outputStream.write_boolean(paramBoolean1); + outputStream.write_value(paramArrayList, ArrayList.class); + outputStream.write_boolean(paramBoolean2); + outputStream.write_value(paramTimestamp2, Timestamp.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return saveWFLRouteDtl(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("saveWFLRouteDtl", WorkFlowFacade2.class); + if (servantObject == null) + return saveWFLRouteDtl(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramArrayList, paramTimestamp2, paramUserInfo }, _orb()); + BaseHeaderBean baseHeaderBean = (BaseHeaderBean)arrayOfObject[0]; + Timestamp timestamp1 = (Timestamp)arrayOfObject[1]; + String str1 = (String)arrayOfObject[2]; + String str2 = (String)arrayOfObject[3]; + ArrayList arrayList = (ArrayList)arrayOfObject[4]; + Timestamp timestamp2 = (Timestamp)arrayOfObject[5]; + UserInfo userInfo = (UserInfo)arrayOfObject[6]; + return ((WorkFlowFacade2)servantObject.servant).saveWFLRouteDtl(baseHeaderBean, timestamp1, str1, str2, paramBoolean1, arrayList, paramBoolean2, timestamp2, userInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String saveWflActivityDtls(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("saveWflActivityDtls", true); + outputStream.write_value((Serializable)paramBaseHeaderBean, BaseHeaderBean.class); + outputStream.write_value(paramTimestamp1, Timestamp.class); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + outputStream.write_boolean(paramBoolean1); + outputStream.write_value(paramArrayList, ArrayList.class); + outputStream.write_boolean(paramBoolean2); + outputStream.write_value(paramTimestamp2, Timestamp.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return saveWflActivityDtls(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("saveWflActivityDtls", WorkFlowFacade2.class); + if (servantObject == null) + return saveWflActivityDtls(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramArrayList, paramTimestamp2, paramUserInfo }, _orb()); + BaseHeaderBean baseHeaderBean = (BaseHeaderBean)arrayOfObject[0]; + Timestamp timestamp1 = (Timestamp)arrayOfObject[1]; + String str1 = (String)arrayOfObject[2]; + String str2 = (String)arrayOfObject[3]; + ArrayList arrayList = (ArrayList)arrayOfObject[4]; + Timestamp timestamp2 = (Timestamp)arrayOfObject[5]; + UserInfo userInfo = (UserInfo)arrayOfObject[6]; + return ((WorkFlowFacade2)servantObject.servant).saveWflActivityDtls(baseHeaderBean, timestamp1, str1, str2, paramBoolean1, arrayList, paramBoolean2, timestamp2, userInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String saveWflDOPGrp(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("saveWflDOPGrp", true); + outputStream.write_value((Serializable)paramBaseHeaderBean, BaseHeaderBean.class); + outputStream.write_value(paramTimestamp1, Timestamp.class); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + outputStream.write_boolean(paramBoolean1); + outputStream.write_value(paramArrayList, ArrayList.class); + outputStream.write_boolean(paramBoolean2); + outputStream.write_value(paramTimestamp2, Timestamp.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return saveWflDOPGrp(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("saveWflDOPGrp", WorkFlowFacade2.class); + if (servantObject == null) + return saveWflDOPGrp(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramArrayList, paramTimestamp2, paramUserInfo }, _orb()); + BaseHeaderBean baseHeaderBean = (BaseHeaderBean)arrayOfObject[0]; + Timestamp timestamp1 = (Timestamp)arrayOfObject[1]; + String str1 = (String)arrayOfObject[2]; + String str2 = (String)arrayOfObject[3]; + ArrayList arrayList = (ArrayList)arrayOfObject[4]; + Timestamp timestamp2 = (Timestamp)arrayOfObject[5]; + UserInfo userInfo = (UserInfo)arrayOfObject[6]; + return ((WorkFlowFacade2)servantObject.servant).saveWflDOPGrp(baseHeaderBean, timestamp1, str1, str2, paramBoolean1, arrayList, paramBoolean2, timestamp2, userInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String saveWflDelegation(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("saveWflDelegation", true); + outputStream.write_value((Serializable)paramBaseHeaderBean, BaseHeaderBean.class); + outputStream.write_value(paramTimestamp1, Timestamp.class); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + outputStream.write_boolean(paramBoolean1); + outputStream.write_value(paramArrayList, ArrayList.class); + outputStream.write_boolean(paramBoolean2); + outputStream.write_value(paramTimestamp2, Timestamp.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return saveWflDelegation(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("saveWflDelegation", WorkFlowFacade2.class); + if (servantObject == null) + return saveWflDelegation(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramArrayList, paramTimestamp2, paramUserInfo }, _orb()); + BaseHeaderBean baseHeaderBean = (BaseHeaderBean)arrayOfObject[0]; + Timestamp timestamp1 = (Timestamp)arrayOfObject[1]; + String str1 = (String)arrayOfObject[2]; + String str2 = (String)arrayOfObject[3]; + ArrayList arrayList = (ArrayList)arrayOfObject[4]; + Timestamp timestamp2 = (Timestamp)arrayOfObject[5]; + UserInfo userInfo = (UserInfo)arrayOfObject[6]; + return ((WorkFlowFacade2)servantObject.servant).saveWflDelegation(baseHeaderBean, timestamp1, str1, str2, paramBoolean1, arrayList, paramBoolean2, timestamp2, userInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String saveWflDocTypeMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("saveWflDocTypeMst", true); + outputStream.write_value((Serializable)paramBaseHeaderBean, BaseHeaderBean.class); + outputStream.write_value(paramTimestamp1, Timestamp.class); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + outputStream.write_boolean(paramBoolean1); + outputStream.write_value(paramArrayList, ArrayList.class); + outputStream.write_boolean(paramBoolean2); + outputStream.write_value(paramTimestamp2, Timestamp.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return saveWflDocTypeMst(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("saveWflDocTypeMst", WorkFlowFacade2.class); + if (servantObject == null) + return saveWflDocTypeMst(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramArrayList, paramTimestamp2, paramUserInfo }, _orb()); + BaseHeaderBean baseHeaderBean = (BaseHeaderBean)arrayOfObject[0]; + Timestamp timestamp1 = (Timestamp)arrayOfObject[1]; + String str1 = (String)arrayOfObject[2]; + String str2 = (String)arrayOfObject[3]; + ArrayList arrayList = (ArrayList)arrayOfObject[4]; + Timestamp timestamp2 = (Timestamp)arrayOfObject[5]; + UserInfo userInfo = (UserInfo)arrayOfObject[6]; + return ((WorkFlowFacade2)servantObject.servant).saveWflDocTypeMst(baseHeaderBean, timestamp1, str1, str2, paramBoolean1, arrayList, paramBoolean2, timestamp2, userInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } + + public String saveWflDtlDocActivityMst(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException { + if (!Util.isLocal(this)) + try { + InputStream inputStream = null; + try { + OutputStream outputStream = (OutputStream)_request("saveWflDtlDocActivityMst", true); + outputStream.write_value((Serializable)paramBaseHeaderBean, BaseHeaderBean.class); + outputStream.write_value(paramTimestamp1, Timestamp.class); + outputStream.write_value(paramString1, String.class); + outputStream.write_value(paramString2, String.class); + outputStream.write_boolean(paramBoolean1); + outputStream.write_value(paramArrayList, ArrayList.class); + outputStream.write_boolean(paramBoolean2); + outputStream.write_value(paramTimestamp2, Timestamp.class); + outputStream.write_value((Serializable)paramUserInfo, UserInfo.class); + inputStream = (InputStream)_invoke(outputStream); + return (String)inputStream.read_value(String.class); + } catch (ApplicationException applicationException) { + inputStream = (InputStream)applicationException.getInputStream(); + String str = inputStream.read_string(); + if (str.equals("IDL:javax/ejb/CreateEx:1.0")) + throw (CreateException)inputStream.read_value(CreateException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseApplicationEx:1.0")) + throw (EnrgiseApplicationException)inputStream.read_value(EnrgiseApplicationException.class); + if (str.equals("IDL:wenrgise/common/_exception/EnrgiseSystemEx:1.0")) + throw (EnrgiseSystemException)inputStream.read_value(EnrgiseSystemException.class); + throw new UnexpectedException(str); + } catch (RemarshalException remarshalException) { + return saveWflDtlDocActivityMst(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + } finally { + _releaseReply(inputStream); + } + } catch (SystemException systemException) { + throw Util.mapSystemException(systemException); + } + ServantObject servantObject = _servant_preinvoke("saveWflDtlDocActivityMst", WorkFlowFacade2.class); + if (servantObject == null) + return saveWflDtlDocActivityMst(paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramBoolean1, paramArrayList, paramBoolean2, paramTimestamp2, paramUserInfo); + try { + Object[] arrayOfObject = Util.copyObjects(new Object[] { paramBaseHeaderBean, paramTimestamp1, paramString1, paramString2, paramArrayList, paramTimestamp2, paramUserInfo }, _orb()); + BaseHeaderBean baseHeaderBean = (BaseHeaderBean)arrayOfObject[0]; + Timestamp timestamp1 = (Timestamp)arrayOfObject[1]; + String str1 = (String)arrayOfObject[2]; + String str2 = (String)arrayOfObject[3]; + ArrayList arrayList = (ArrayList)arrayOfObject[4]; + Timestamp timestamp2 = (Timestamp)arrayOfObject[5]; + UserInfo userInfo = (UserInfo)arrayOfObject[6]; + return ((WorkFlowFacade2)servantObject.servant).saveWflDtlDocActivityMst(baseHeaderBean, timestamp1, str1, str2, paramBoolean1, arrayList, paramBoolean2, timestamp2, userInfo); + } catch (Throwable throwable1) { + Throwable throwable2 = (Throwable)Util.copyObject(throwable1, _orb()); + if (throwable2 instanceof CreateException) + throw (CreateException)throwable2; + if (throwable2 instanceof EnrgiseApplicationException) + throw (EnrgiseApplicationException)throwable2; + if (throwable2 instanceof EnrgiseSystemException) + throw (EnrgiseSystemException)throwable2; + throw Util.wrapException(throwable2); + } finally { + _servant_postinvoke(servantObject); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/exception/ApproverNotFoundException.java b/hrmsEjb/wenrgise/workflow/exception/ApproverNotFoundException.java new file mode 100644 index 0000000..6407025 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/exception/ApproverNotFoundException.java @@ -0,0 +1,6 @@ +package wenrgise.workflow.exception; + +import java.io.Serializable; +import wenrgise.common.exception.EnrgiseApplicationException; + +public class ApproverNotFoundException extends EnrgiseApplicationException implements Serializable {} diff --git a/hrmsEjb/wenrgise/workflow/exception/AtributesNotDefinedException.java b/hrmsEjb/wenrgise/workflow/exception/AtributesNotDefinedException.java new file mode 100644 index 0000000..6535d0d --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/exception/AtributesNotDefinedException.java @@ -0,0 +1,6 @@ +package wenrgise.workflow.exception; + +import java.io.Serializable; +import wenrgise.common.exception.EnrgiseApplicationException; + +public class AtributesNotDefinedException extends EnrgiseApplicationException implements Serializable {} diff --git a/hrmsEjb/wenrgise/workflow/exception/MailNotSentException.java b/hrmsEjb/wenrgise/workflow/exception/MailNotSentException.java new file mode 100644 index 0000000..2fdd4b1 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/exception/MailNotSentException.java @@ -0,0 +1,6 @@ +package wenrgise.workflow.exception; + +import java.io.Serializable; +import wenrgise.common.exception.EnrgiseApplicationException; + +public class MailNotSentException extends EnrgiseApplicationException implements Serializable {} diff --git a/hrmsEjb/wenrgise/workflow/exception/WorkFlowServiceNotFoundException.java b/hrmsEjb/wenrgise/workflow/exception/WorkFlowServiceNotFoundException.java new file mode 100644 index 0000000..f848e94 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/exception/WorkFlowServiceNotFoundException.java @@ -0,0 +1,6 @@ +package wenrgise.workflow.exception; + +import java.io.Serializable; +import wenrgise.common.exception.EnrgiseApplicationException; + +public class WorkFlowServiceNotFoundException extends EnrgiseApplicationException implements Serializable {} diff --git a/hrmsEjb/wenrgise/workflow/helper/HrmsSimulator.java b/hrmsEjb/wenrgise/workflow/helper/HrmsSimulator.java new file mode 100644 index 0000000..90cbcc0 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/helper/HrmsSimulator.java @@ -0,0 +1,290 @@ +package wenrgise.workflow.helper; + +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.LOVBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.hrms.service.HrmsService; + +public class HrmsSimulator implements HrmsService { + public LovVO getEmpNameLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "Select ID,Emp_No,First_Name || ' ' || Middle_Name || ' ' || Last_Name FULLNAME from hrm_emp_pers"; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where Emp_No LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%' ")); + if (oLovQueryVO.getSearchField2() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" And upper(First_Name || ' ' || Middle_Name || ' ' || Last_Name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("pm.pumMaintainPurCommonLOV.id"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.empNo"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.nameEmp"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("Emp_No").getString()); + oLOVBean.setDetailField3(oRow.get("FULLNAME").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getRepEmpNameLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sEmpNo = oLovQueryVO.getProperty("EmpNo"); + System.out.println(sEmpNo); + String sQuery = "Select ID,Emp_No,First_Name || ' ' || Middle_Name || ' ' || Last_Name FULLNAME from hrm_emp_pers where Emp_No <> '"; + sQuery = String.valueOf(sQuery).concat(String.valueOf(sEmpNo.trim())); + sQuery = String.valueOf(sQuery).concat(String.valueOf("'")); + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and Emp_No LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%' ")); + if (oLovQueryVO.getSearchField2() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" And upper(First_Name || ' ' || Middle_Name || ' ' || Last_Name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("pm.pumMaintainPurCommonLOV.id"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.nameEmp"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.empNo"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("FULLNAME").getString()); + oLOVBean.setDetailField3(oRow.get("Emp_No").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getLocLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "200")); + oParameters.add(new DBObject(2, 1, 12, "pc")); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "Site_Info.proc_GetChildSiteid(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + int count = 0; + ArrayList oList = (ArrayList)oOutObject.getObject(); + Iterator oIt = oList.iterator(); + QueryRow oRow1 = null; + String str = "("; + boolean flag = false; + while (oIt.hasNext()) { + oRow1 = oIt.next(); + if (flag == true) { + str = String.valueOf(str).concat(String.valueOf(",")); + count++; + } + str = String.valueOf(str).concat(String.valueOf(oRow1.get("ID").getString())); + flag = true; + } + str = String.valueOf(str).concat(String.valueOf(")")); + System.out.println(str); + String sQuery = String.valueOf(String.valueOf("Select distinct gvm.ven_location_code,gcm.city_id from GEN_VENDOR_MST gvm,gen_city_mst gcm where gvm.ven_city_id(+)=gcm.city_id and gvm.site_id in ").concat(String.valueOf(str))).concat(String.valueOf(" ")); + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(gvm.VEN_LOCATION_CODE) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList oList1 = oBean1.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("pm.pumMaintainPurCommonLOV.id"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.venLocCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + count = 0; + QueryRow oRow = null; + Iterator oIt1 = oList1.iterator(); + while (oIt1.hasNext()) { + if (count == 0) + oList1 = new ArrayList(); + count++; + oRow = oIt1.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("city_id").getString()); + oLOVBean.setDetailField2(oRow.get("VEN_LOCATION_CODE").getString()); + oList1.add(oLOVBean); + } + oLovVO.setDetailList(oList1); + return oLovVO; + } + + public LovVO getCountryLOVData(LovQueryVO oLovQueryVO) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, "200")); + oParameters.add(new DBObject(2, 1, 12, "pc")); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "Site_Info.proc_GetChildSiteid(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + int count = 0; + ArrayList oList = (ArrayList)oOutObject.getObject(); + Iterator oIt = oList.iterator(); + QueryRow oRow1 = null; + String str = "("; + boolean flag = false; + while (oIt.hasNext()) { + oRow1 = oIt.next(); + if (flag == true) { + str = String.valueOf(str).concat(String.valueOf(",")); + count++; + } + str = String.valueOf(str).concat(String.valueOf(oRow1.get("ID").getString())); + flag = true; + } + str = String.valueOf(str).concat(String.valueOf(")")); + System.out.println(str); + String sQuery = "Select gcm.country_id, gcm.country_code, gcm.name from GEN_COUNTRY_MST gcm "; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where upper(gcm.name) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + System.out.println(sQuery); + DBUtilitiesBean oBean1 = new DBUtilitiesBean(); + ArrayList oList1 = oBean1.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("pm.pumMaintainPurCommonLOV.id"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.name"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + count = 0; + QueryRow oRow = null; + Iterator oIt1 = oList1.iterator(); + while (oIt1.hasNext()) { + if (count == 0) + oList1 = new ArrayList(); + count++; + oRow = oIt1.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("country_id").getString()); + oLOVBean.setDetailField2(oRow.get("name").getString()); + oList1.add(oLOVBean); + } + oLovVO.setDetailList(oList1); + return oLovVO; + } + + public LovVO getWrkGroupLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = " SELECT CODE,NAME,ID FROM GEN_WRKGRP_MST where 1=1"; + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField1())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(code) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%') ")); + if (EnrgiseUtil.checkString(oLovQueryVO.getSearchField2())) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and upper(NAME) LIKE upper('%"))).concat(String.valueOf(oLovQueryVO.getSearchField2()))).concat(String.valueOf("%') ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" ORDER BY name")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add("pm.pumMaintainPurCommonLOV.id"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.name"); + oHeaderList.add("pm.pumMaintainPurCommonLOV.code"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("Id").getString()); + oLOVBean.setDetailField2(oRow.get("name").getString()); + oLOVBean.setDetailField3(oRow.get("code").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } + + public LovVO getClassCodeLOVData(LovQueryVO oLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String sQuery = "select hcm.id,hcm.name from hrm_class_mst hcm"; + if (oLovQueryVO.getSearchField1() != null) + sQuery = String.valueOf(String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" where name LIKE '%"))).concat(String.valueOf(oLovQueryVO.getSearchField1()))).concat(String.valueOf("%' ")); + System.out.println(sQuery); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + LovVO oLovVO = new LovVO(); + ArrayList oHeaderList = new ArrayList(); + oHeaderList.add(""); + oHeaderList.add("pm.pumMaintainPurCommonLOV.classCode"); + oLovVO.setHeaderList(oHeaderList); + ArrayList arylstVisibility = new ArrayList(); + arylstVisibility.add("H"); + arylstVisibility.add("V"); + oLovVO.setVisibilityList(arylstVisibility); + int count = 0; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + if (count == 0) + oList = new ArrayList(); + count++; + oRow = oIt.next(); + LOVBean oLOVBean = new LOVBean(); + oLOVBean.setDetailField1(oRow.get("ID").getString()); + oLOVBean.setDetailField2(oRow.get("name").getString()); + oList.add(oLOVBean); + } + oLovVO.setDetailList(oList); + return oLovVO; + } +} diff --git a/hrmsEjb/wenrgise/workflow/impl/WorkFlowImpl.java b/hrmsEjb/wenrgise/workflow/impl/WorkFlowImpl.java new file mode 100644 index 0000000..1ae51a3 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/impl/WorkFlowImpl.java @@ -0,0 +1,158 @@ +package wenrgise.workflow.impl; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.UserInfo; +import wenrgise.workflow.bean.WflDocMstAttrDtlBean; +import wenrgise.workflow.bean.WflDtlDocTypeDtlBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.WflStatus; +import wenrgise.workflow.core.WorkFlow; +import wenrgise.workflow.core.impl.WflStatusImpl; +import wenrgise.workflow.ejb.business.WflDocMstBO; +import wenrgise.workflow.ejb.business.WorkFlowCommonBO; +import wenrgise.workflow.exception.AtributesNotDefinedException; +import wenrgise.workflow.utility.AttributesHandler; +import wenrgise.workflow.utility.ConditionChecker; +import wenrgise.workflow.utility.Node; +import wenrgise.workflow.utility.RouteHandler; +import wenrgise.workflow.utility.WorkFlowUtil; + +public class WorkFlowImpl implements WorkFlow { + public static final Logger log = Logger.getLogger("wenrgise.workflow.impl.LeaveWorkFlow"); + + public boolean canDo(WflDocumentInfo wflDocInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + if (EnrgiseUtil.checkString(wflDocInfo.getInitiatedFlag())) + if (!wflDocInfo.getInitiatedFlag().equalsIgnoreCase("Initiated")) + if (!EnrgiseUtil.checkString(wflDocInfo.getWorkListId())) + return false; + return true; + } + + public WflStatus start(WflDocumentInfo wflDocInfo) { + try { + log.severe("Log Started"); + log.severe(String.valueOf("Creator ").concat(String.valueOf(wflDocInfo.getCreator().getEmployeeId()))); + log.severe(String.valueOf("Document Id ").concat(String.valueOf(wflDocInfo.getDocumentId()))); + log.severe(String.valueOf("Document Number ").concat(String.valueOf(wflDocInfo.getDocumentNumber()))); + log.severe(String.valueOf("Document Number ").concat(String.valueOf(wflDocInfo.getDocumentNumber()))); + log.severe(String.valueOf(" Requester Id ").concat(String.valueOf(wflDocInfo.getRequester().getEmployeeId()))); + log.severe("start1"); + RouteHandler routeHandl = new RouteHandler(); + log.severe("start2"); + UserInfo oUserInfo = new UserInfo(); + oUserInfo.setUserId(wflDocInfo.getRequester().getUserId()); + oUserInfo.setSiteId(wflDocInfo.getRequester().getLoginSite().getSiteId()); + oUserInfo.setUserSystemId(wflDocInfo.getRequester().getEmployeeId()); + oUserInfo.setSiteName(wflDocInfo.getRequester().getLoginSite().getSiteName()); + log.severe("start3"); + String activityCode = WorkFlowUtil.getActivityCode(wflDocInfo.getRequesterAction()); + log.severe("start4"); + log.severe(String.valueOf("The WorkList Id Is:-").concat(String.valueOf(wflDocInfo.getWorkListId()))); + log.severe(String.valueOf("The InitiatedFlag Is:-").concat(String.valueOf(wflDocInfo.getInitiatedFlag()))); + if (EnrgiseUtil.checkString(wflDocInfo.getInitiatedFlag())) { + if (wflDocInfo.getInitiatedFlag().equalsIgnoreCase("Initiated")) { + log.severe("start5"); + AttributesHandler attrChecker = new AttributesHandler(); + if (!attrChecker.checkAttributes(wflDocInfo, oUserInfo)) + throw new AtributesNotDefinedException(); + log.severe("Checking Condition"); + ConditionChecker cc = new ConditionChecker(); + ArrayList oList = WorkFlowUtil.getDetailDocs(wflDocInfo.getDocumentTypeId(), oUserInfo); + WflDocMstBO oWflDocMstBO = new WflDocMstBO(); + oWflDocMstBO.setOUserInfo(oUserInfo); + long oDocAttrCount = oWflDocMstBO.getWflDocTypeAttrDtlMetaInfo(wflDocInfo.getDocumentTypeId()).getRecordCount(); + ArrayList arylstDocType = oWflDocMstBO.getWflDocTypeAttrDtlInfo(wflDocInfo.getDocumentTypeId(), 1L, oDocAttrCount); + Iterator oIt1 = arylstDocType.iterator(); + HashMap oDocAttrTypeMap = new HashMap(); + while (oIt1.hasNext()) { + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt1.next(); + oDocAttrTypeMap.put(oWflDocMstAttrDtlBean.getTxtAttrName(), oWflDocMstAttrDtlBean.getTxtType()); + } + String dtlDocId = null; + Iterator iterator = oList.iterator(); + while (iterator.hasNext()) { + WflDtlDocTypeDtlBean oWflDtlDocTypeDtlBean = iterator.next(); + if (cc.checkCondition(oWflDtlDocTypeDtlBean.getTxtExp(), wflDocInfo.getDocumentAttributes(), oDocAttrTypeMap) > false) { + dtlDocId = oWflDtlDocTypeDtlBean.getDetailId(); + break; + } + } + log.severe("Checking Condition Finished"); + if (dtlDocId == null) + throw new EnrgiseApplicationException("wenrgise.PumMaintainPI.header.UniqueKeyConstraint", "E"); + Node node = new Node(String.valueOf(1), String.valueOf(0)); + routeHandl.setNodeInfo(node); + WorkFlowCommonBO oWorkFlowCommonBO = new WorkFlowCommonBO(); + routeHandl.setActivityId(wflDocInfo.getRequesterAction()); + routeHandl.setDtlDocId(dtlDocId); + routeHandl.populateData(); + } + } else { + log.severe("Not Initiated"); + routeHandl.setRouteDtlId(WorkFlowUtil.getRouteDtlId(wflDocInfo)); + routeHandl.populateData(); + } + wflDocInfo.getCreator().setRouteDtlId(routeHandl.getRouteDtlId()); + if (!EnrgiseUtil.checkString(wflDocInfo.getInitiatedFlag())) + WorkFlowUtil.updateWorkList("U", wflDocInfo.getRequester(), wflDocInfo); + log.severe("start6"); + WflStatusImpl wflStatusImpl = new WflStatusImpl(); + ArrayList oNextApprover = routeHandl.findNextApprover(wflDocInfo); + log.severe("start7"); + Iterator oIt = oNextApprover.iterator(); + boolean notifFlagForFinalAppr = false; + if (oIt.hasNext()) { + while (oIt.hasNext()) { + WflResource wflResource = oIt.next(); + log.severe(String.valueOf("Approver ").concat(String.valueOf(wflResource.getEmployeeId()))); + if (null != wflResource) { + log.severe("start8"); + WorkFlowUtil.updateWorkList("N", wflResource, wflDocInfo); + if (routeHandl.getNotifFlag().equalsIgnoreCase("Y")) { + wflStatusImpl.setStatus("Notification"); + continue; + } + wflStatusImpl.assign(wflResource); + wflStatusImpl.setStatus("Pending"); + log.severe("start9"); + } + } + } else if (activityCode.equalsIgnoreCase("Reject")) { + wflStatusImpl.setStatus("Rejected"); + } else { + wflStatusImpl.setStatus("FinallyApproved"); + } + if (activityCode.equalsIgnoreCase("Reject")) + wflStatusImpl.setStatus("Rejected"); + log.severe("start10"); + System.out.println(String.valueOf("The Status is:").concat(String.valueOf(wflStatusImpl.getStatus()))); + System.out.println(String.valueOf("The Error Code is:").concat(String.valueOf(wflStatusImpl.getErrCode()))); + System.out.println(String.valueOf("The Error Message is:").concat(String.valueOf(wflStatusImpl.getErrMsg()))); + return (WflStatus)wflStatusImpl; + } catch (EnrgiseSystemException oSx) { + log.severe(String.valueOf(String.valueOf(oSx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oSx.getMessage()))); + return null; + } catch (EnrgiseApplicationException oAx) { + log.severe(String.valueOf(String.valueOf(oAx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oAx.getMessage()))); + return null; + } catch (CreateException oCx) { + log.severe(String.valueOf(String.valueOf(oCx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oCx.getMessage()))); + return null; + } catch (RemoteException oRx) { + log.severe(String.valueOf(String.valueOf(oRx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oRx.getMessage()))); + return null; + } catch (Exception oEx) { + log.severe(String.valueOf(String.valueOf(oEx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oEx.getMessage()))); + return null; + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/service/WorkFlowService.java b/hrmsEjb/wenrgise/workflow/service/WorkFlowService.java new file mode 100644 index 0000000..ecac3e5 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/service/WorkFlowService.java @@ -0,0 +1,9 @@ +package wenrgise.workflow.service; + +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public interface WorkFlowService { + WflWorkListInfoBean getWorkListInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsEjb/wenrgise/workflow/service/WorkFlowServiceFactory.java b/hrmsEjb/wenrgise/workflow/service/WorkFlowServiceFactory.java new file mode 100644 index 0000000..01e4f65 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/service/WorkFlowServiceFactory.java @@ -0,0 +1,11 @@ +package wenrgise.workflow.service; + +import wenrgise.hrms.helper.WorkFlowSimulator; + +public class WorkFlowServiceFactory { + private static WorkFlowServiceFactory workFlowServiceFactory = new WorkFlowServiceFactory(); + + public static WorkFlowService getService() { + return (WorkFlowService)new WorkFlowSimulator(); + } +} diff --git a/hrmsEjb/wenrgise/workflow/utility/AttributesHandler.java b/hrmsEjb/wenrgise/workflow/utility/AttributesHandler.java new file mode 100644 index 0000000..efb1d30 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/utility/AttributesHandler.java @@ -0,0 +1,34 @@ +package wenrgise.workflow.utility; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Set; +import javax.ejb.CreateException; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.workflow.bean.WflDocMstAttrDtlBean; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; + +public class AttributesHandler { + public boolean checkAttributes(WflDocumentInfo wflDocInfo, UserInfo oUserInfo) throws RemoteException, CreateException, EnrgiseSystemException, EnrgiseApplicationException { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)ServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade oWorkFlowFacade = oHome.create(); + long attrCount = oWorkFlowFacade.getWflDocTypeAttrDtlMetaInfo(wflDocInfo.getDocumentTypeId(), oUserInfo).getRecordCount(); + if (attrCount > 0L) { + Set oSet = wflDocInfo.getDocumentAttributes().keySet(); + ArrayList docAttributes = oWorkFlowFacade.getWflDocTypeAttrDtlInfo(wflDocInfo.getDocumentTypeId(), 1L, attrCount, oUserInfo); + Iterator oIt = docAttributes.iterator(); + while (oIt.hasNext()) { + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt.next(); + if (!oSet.contains(oWflDocMstAttrDtlBean.getTxtAttrName())) + return false; + } + } + return true; + } +} diff --git a/hrmsEjb/wenrgise/workflow/utility/ConditionChecker.java b/hrmsEjb/wenrgise/workflow/utility/ConditionChecker.java new file mode 100644 index 0000000..3a49722 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/utility/ConditionChecker.java @@ -0,0 +1,38 @@ +package wenrgise.workflow.utility; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; +import org.nfunk.jep.JEP; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; + +public class ConditionChecker { + public double checkCondition(String ruleExpr, HashMap oVarMap, HashMap oVarType) throws EnrgiseSystemException, EnrgiseApplicationException { + JEP myParser = new JEP(); + Set oVariableSet = oVarMap.keySet(); + Iterator oIt = oVariableSet.iterator(); + int count = 0; + Object obj = null; + while (oIt.hasNext()) { + String varName = oIt.next(); + if (EnrgiseUtil.checkString((String)oVarType.get(varName))) { + String varType = (String)oVarType.get(varName); + if (varType.equalsIgnoreCase("S")) { + obj = new String((String)oVarMap.get(varName)); + } else { + obj = new Double((String)oVarMap.get(varName)); + } + System.out.println(varName); + System.out.println(oVarMap.get(varName)); + myParser.addVariable(varName, obj); + } + } + myParser.parseExpression(ruleExpr); + System.out.println(String.valueOf("Val=").concat(String.valueOf(ruleExpr))); + double oVal = myParser.getValue(); + System.out.println(String.valueOf("Val=").concat(String.valueOf(oVal))); + return oVal; + } +} diff --git a/hrmsEjb/wenrgise/workflow/utility/Node.java b/hrmsEjb/wenrgise/workflow/utility/Node.java new file mode 100644 index 0000000..95693eb --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/utility/Node.java @@ -0,0 +1,37 @@ +package wenrgise.workflow.utility; + +import java.io.Serializable; + +public class Node implements Serializable { + private String lane; + + private String level; + + public Node(String lane, String level) { + this.lane = lane; + this.level = level; + } + + public Node(Node oNodeInfo) { + this.lane = oNodeInfo.getLane(); + this.level = oNodeInfo.getLevel(); + } + + public Node() {} + + public String getLane() { + return this.lane; + } + + public void setLane(String newLane) { + this.lane = newLane; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } +} diff --git a/hrmsEjb/wenrgise/workflow/utility/RouteHandler.java b/hrmsEjb/wenrgise/workflow/utility/RouteHandler.java new file mode 100644 index 0000000..73cf42d --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/utility/RouteHandler.java @@ -0,0 +1,284 @@ +package wenrgise.workflow.utility; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.logging.Logger; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflDocMstAttrDtlBean; +import wenrgise.workflow.core.WflDepartment; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.impl.WflDepartmentImpl; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.ejb.business.WflDocMstBO; + +public class RouteHandler { + public static final Logger log = Logger.getLogger("wenrgise.workflow.utility.RouteHandler"); + + private Node nodeInfo; + + private String routeDtlId; + + private String activityId; + + private String dtlDocId; + + private String notifFlag; + + public Node getNodeInfo() { + return this.nodeInfo; + } + + public void setNodeInfo(Node newNodeInfo) { + this.nodeInfo = newNodeInfo; + } + + public String getRouteDtlId() { + return this.routeDtlId; + } + + public void setRouteDtlId(String newRouteDtlId) { + this.routeDtlId = newRouteDtlId; + } + + public String getActivityId() { + return this.activityId; + } + + public void setActivityId(String newActivityId) { + this.activityId = newActivityId; + } + + public String getDtlDocId() { + return this.dtlDocId; + } + + public void setDtlDocId(String newDtlDocId) { + this.dtlDocId = newDtlDocId; + } + + public String getNotifFlag() { + return this.notifFlag; + } + + public void setNotifFlag(String newNotifFlag) { + this.notifFlag = newNotifFlag; + } + + public ArrayList findNextApprover(WflDocumentInfo wflDocInfo) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + log.severe(String.valueOf("Route Id ").concat(String.valueOf(getRouteDtlId()))); + oParameters.add(new DBObject(1, 1, 12, getRouteDtlId())); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetNextLevelConditions(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + String condtitionExpr = null; + String conditionValue = null; + String condtitionId = null; + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + WflDocMstBO oWflDocMstBO = new WflDocMstBO(); + UserInfo oUserInfo = new UserInfo(); + oUserInfo.setUserId(wflDocInfo.getRequester().getUserId()); + oUserInfo.setSiteId(wflDocInfo.getRequester().getLoginSite().getSiteId()); + oUserInfo.setUserSystemId(wflDocInfo.getRequester().getEmployeeId()); + oUserInfo.setSiteName(wflDocInfo.getRequester().getLoginSite().getSiteName()); + oWflDocMstBO.setOUserInfo(oUserInfo); + long oDocAttrCount = oWflDocMstBO.getWflDocTypeAttrDtlMetaInfo(wflDocInfo.getDocumentId()).getRecordCount(); + ArrayList arylstDocType = oWflDocMstBO.getWflDocTypeAttrDtlInfo(wflDocInfo.getDocumentId(), 1L, oDocAttrCount); + Iterator oIt1 = arylstDocType.iterator(); + HashMap oDocAttrTypeMap = new HashMap(); + while (oIt1.hasNext()) { + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt1.next(); + oDocAttrTypeMap.put(oWflDocMstAttrDtlBean.getTxtAttrName(), oWflDocMstAttrDtlBean.getTxtType()); + } + oRow = oIt.next(); + condtitionId = oRow.get("conditionId").getString(); + condtitionExpr = oRow.get("conditionExpr").getString(); + ConditionChecker cc = new ConditionChecker(); + conditionValue = String.valueOf(cc.checkCondition(condtitionExpr, wflDocInfo.getDocumentAttributes(), oDocAttrTypeMap)); + } + ArrayList oResourceList = new ArrayList(); + String activityCode = WorkFlowUtil.getActivityCode(wflDocInfo.getRequesterAction()); + if (!activityCode.equalsIgnoreCase("Reject")) { + log.severe(String.valueOf("Approve ").concat(String.valueOf(getRouteDtlId()))); + log.severe(String.valueOf("Approve Cond ").concat(String.valueOf(condtitionId))); + log.severe(String.valueOf("Approve Cond value ").concat(String.valueOf(conditionValue))); + oOutArray = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, getRouteDtlId())); + oParameters.add(new DBObject(2, 1, 12, condtitionId)); + oParameters.add(new DBObject(3, 1, 12, conditionValue)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetNextLevelRouteDtls(?,?,?,?,?,?,?)"); + oList = new ArrayList(); + oOutObject = new DBObject(); + oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + oRow = null; + Iterator oIt1 = oList.iterator(); + while (oIt1.hasNext()) { + oRow = oIt1.next(); + String sToRouteDtlId = oRow.get("routeDtlId").getString(); + String splitJoinFlag = oRow.get("splitJoinFlag").getString(); + getNextLevelApprovers(wflDocInfo, splitJoinFlag, sToRouteDtlId, oResourceList); + } + } else { + oOutArray = new ArrayList(); + oParameters = new ArrayList(); + log.severe(String.valueOf("Reject ").concat(String.valueOf(getRouteDtlId()))); + log.severe(String.valueOf("Reject Cond ").concat(String.valueOf(condtitionId))); + log.severe(String.valueOf("Reject Cond value ").concat(String.valueOf(conditionValue))); + oParameters.add(new DBObject(1, 1, 12, getRouteDtlId())); + oParameters.add(new DBObject(2, 1, 12, condtitionId)); + oParameters.add(new DBObject(3, 1, 12, conditionValue)); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_NextLevelRouteDtlsReject(?,?,?,?,?,?,?)"); + oList = new ArrayList(); + oOutObject = new DBObject(); + oOutObject = oOutArray.get(0); + oList = (ArrayList)oOutObject.getObject(); + oRow = null; + Iterator oIt1 = oList.iterator(); + while (oIt1.hasNext()) { + oRow = oIt1.next(); + String sToRouteDtlId = oRow.get("routeDtlId").getString(); + String splitJoinFlag = oRow.get("splitJoinFlag").getString(); + getNextLevelApproversForReject(wflDocInfo, splitJoinFlag, sToRouteDtlId, oResourceList); + } + } + return oResourceList; + } + + public ArrayList getNextLevelApproversForReject(WflDocumentInfo wflDocInfo, String splitJoinFlag, String sToRouteDtlId, ArrayList oResourceList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oOutArray = new ArrayList(); + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters.add(new DBObject(1, 1, 12, sToRouteDtlId)); + oParameters.add(new DBObject(2, 1, 12, splitJoinFlag)); + oParameters.add(new DBObject(3, 1, 12, wflDocInfo.getWorkListId())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_NextLevelApproversReject(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList != null) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + WflDepartmentImpl wflDepartmentImpl = new WflDepartmentImpl(); + wflDepartmentImpl.setDepartmentId(oRow.get("departmentId").getString()); + wflDepartmentImpl.setDepartmentName(oRow.get("departmentName").getString()); + wflResourceImpl.setDepartment((WflDepartment)wflDepartmentImpl); + wflResourceImpl.setEmployeeId(oRow.get("empId").getString()); + wflResourceImpl.setEmpNo(oRow.get("empNo").getString()); + wflResourceImpl.setRouteDtlId(sToRouteDtlId); + oResourceList.add(wflResourceImpl); + } + } + return oResourceList; + } + + public ArrayList getNextLevelApprovers(WflDocumentInfo wflDocInfo, String splitJoinFlag, String sToRouteDtlId, ArrayList oResourceList) throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oOutArray = new ArrayList(); + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + log.severe(String.valueOf("Route Id ").concat(String.valueOf(sToRouteDtlId))); + log.severe(String.valueOf("Split Join Flag ").concat(String.valueOf(splitJoinFlag))); + log.severe(String.valueOf("Requester Emp Id ").concat(String.valueOf(wflDocInfo.getRequester().getEmployeeId()))); + oParameters.add(new DBObject(1, 1, 12, sToRouteDtlId)); + oParameters.add(new DBObject(2, 1, 12, splitJoinFlag)); + oParameters.add(new DBObject(3, 1, 12, wflDocInfo.getRequester().getEmployeeId())); + oParameters.add(new DBObject(4, 2, -10)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetNextLevelApprovers(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList != null) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + WflDepartmentImpl wflDepartmentImpl = new WflDepartmentImpl(); + wflDepartmentImpl.setDepartmentId(oRow.get("departmentId").getString()); + wflDepartmentImpl.setDepartmentName(oRow.get("departmentName").getString()); + wflResourceImpl.setDepartment((WflDepartment)wflDepartmentImpl); + wflResourceImpl.setEmployeeId(oRow.get("empId").getString()); + wflResourceImpl.setEmpNo(oRow.get("empNo").getString()); + wflResourceImpl.setDelegatedBy(oRow.get("delegatedBy").getString()); + wflResourceImpl.setRouteDtlId(sToRouteDtlId); + oResourceList.add(wflResourceImpl); + } + } + return oResourceList; + } + + public void populateData() throws EnrgiseSystemException, EnrgiseApplicationException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + Timestamp oWhenPicked = null; + int count = 0; + BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, getRouteDtlId())); + oParameters.add(new DBObject(2, 1, 12, getDtlDocId())); + oParameters.add(new DBObject(3, 1, 12, getActivityId())); + Node nodeInfo = getNodeInfo(); + if (nodeInfo != null) { + oParameters.add(new DBObject(4, 1, 12, nodeInfo.getLane())); + oParameters.add(new DBObject(5, 1, 12, nodeInfo.getLevel())); + } else { + oParameters.add(new DBObject(4, 1, 12, null)); + oParameters.add(new DBObject(5, 1, 12, null)); + } + oParameters.add(new DBObject(6, 2, -10)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 12)); + oParameters.add(new DBObject(9, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetRouteDtlInfo(?,?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() <= 0) + throw new EnrgiseApplicationException("wenrgise.workflow.norecordfound", "M"); + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + if (oIt.hasNext()) { + oRow = oIt.next(); + setRouteDtlId(oRow.get("routeDtlId").getString()); + setDtlDocId(oRow.get("dtlDocId").getString()); + setActivityId(oRow.get("activityId").getString()); + setNodeInfo(new Node(oRow.get("lane").getString(), oRow.get("level_number").getString())); + setNotifFlag(oRow.get("notification_flag").getString()); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/utility/WflDocParamsManager.java b/hrmsEjb/wenrgise/workflow/utility/WflDocParamsManager.java new file mode 100644 index 0000000..c4f612b --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/utility/WflDocParamsManager.java @@ -0,0 +1,34 @@ +package wenrgise.workflow.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import wenrgise.workflow.xml.vo.WflDocParam; +import wenrgise.workflow.xml.vo.WflDocParams; + +public class WflDocParamsManager { + private static WflDocParamsManager me = new WflDocParamsManager(); + + private HashMap oWflDocMap = new HashMap(); + + public Map getMap() { + return this.oWflDocMap; + } + + public static WflDocParamsManager getInstance() { + return me; + } + + public void init(WflDocParams wfls) { + ArrayList wflList = wfls.get_WflDocParam(); + if (wflList == null) + return; + Iterator oIt = wflList.iterator(); + while (oIt.hasNext()) { + WflDocParam wflDocParam = oIt.next(); + System.out.println(String.valueOf("Document Type ").concat(String.valueOf(wflDocParam.get_DocType()))); + this.oWflDocMap.put(wflDocParam.get_DocType(), wflDocParam); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/utility/WorkFlowServiceFactory.java b/hrmsEjb/wenrgise/workflow/utility/WorkFlowServiceFactory.java new file mode 100644 index 0000000..8bb56a2 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/utility/WorkFlowServiceFactory.java @@ -0,0 +1,16 @@ +package wenrgise.workflow.utility; + +import wenrgise.workflow.core.WflService; +import wenrgise.workflow.core.impl.WflServiceImpl; + +public class WorkFlowServiceFactory { + private static WorkFlowServiceFactory me = new WorkFlowServiceFactory(); + + public static WorkFlowServiceFactory getInstance() { + return me; + } + + public WflService getWorkFlowService() { + return (WflService)new WflServiceImpl(); + } +} diff --git a/hrmsEjb/wenrgise/workflow/utility/WorkFlowUtil.java b/hrmsEjb/wenrgise/workflow/utility/WorkFlowUtil.java new file mode 100644 index 0000000..29d40e9 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/utility/WorkFlowUtil.java @@ -0,0 +1,142 @@ +package wenrgise.workflow.utility; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.Properties; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import javax.mail.Address; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.workflow.core.WflDocumentInfo; +import wenrgise.workflow.core.WflResource; +import wenrgise.workflow.core.impl.WflResourceImpl; +import wenrgise.workflow.ejb.business.WorkFlowCommonBO; +import wenrgise.workflow.ejb.facade.WorkFlowFacade; +import wenrgise.workflow.ejb.facade.WorkFlowFacadeHome; +import wenrgise.workflow.exception.ApproverNotFoundException; +import wenrgise.workflow.exception.MailNotSentException; + +public class WorkFlowUtil { + public static Logger log = Logger.getLogger("wenrgise.workflow.utility.WorkFlowUtil"); + + public static WflResource findNextApprover(WflDocumentInfo docInfo) throws ApproverNotFoundException { + WflResourceImpl wflResourceImpl = new WflResourceImpl(); + if (docInfo.getDocumentType().equals("Leave")) + wflResourceImpl.setEmpNo("90074"); + if (docInfo.getDocumentType().equals("Loan")) + wflResourceImpl.setEmpNo("90038"); + return (WflResource)wflResourceImpl; + } + + public static void sendMail(WflResource wflResource, WflDocumentInfo docInfo, String action) throws MailNotSentException { + try { + if (null != wflResource) { + Session session = getMailSession(); + MimeMessage message = new MimeMessage(session); + String content = String.valueOf(String.valueOf(String.valueOf(String.valueOf("The document ").concat(String.valueOf(docInfo.getDocumentNumber()))).concat(String.valueOf(" of type "))).concat(String.valueOf(docInfo.getDocumentType()))).concat(String.valueOf(" is pending for your approval. Thanks.")); + message.setText(content); + message.setSubject(String.valueOf(String.valueOf(String.valueOf(String.valueOf("Notification: ").concat(String.valueOf(docInfo.getDocumentType()))).concat(String.valueOf("("))).concat(String.valueOf(docInfo.getDocumentNumber()))).concat(String.valueOf(") pending"))); + message.setFrom((Address)new InternetAddress("chayanika.das@tcs.com")); + InternetAddress internetAddress = new InternetAddress(getMailAddress(wflResource)); + message.addRecipient(Message.RecipientType.TO, (Address)internetAddress); + message.saveChanges(); + Transport.send((Message)message); + } + } catch (MessagingException oMsx) { + log.severe(String.valueOf(String.valueOf(oMsx.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oMsx.getMessage()))); + } + } + + public static boolean canApprove(WflDocumentInfo docInfo) { + return true; + } + + public static boolean canReject(WflDocumentInfo docInfo) { + return true; + } + + public static void updateWorkList(String sUpsertFlag, WflResource wflResource, WflDocumentInfo docInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + log.severe(String.valueOf("Upsert Flag ").concat(String.valueOf(sUpsertFlag))); + log.severe(String.valueOf(" Employee Id ").concat(String.valueOf(wflResource.getEmployeeId()))); + log.severe(String.valueOf(" Document Id ").concat(String.valueOf(docInfo.getDocumentId()))); + log.severe(String.valueOf(" Document Number ").concat(String.valueOf(docInfo.getDocumentNumber()))); + WorkFlowCommonBO oCommonBO = new WorkFlowCommonBO(); + oCommonBO.updateWorkList(sUpsertFlag, wflResource, docInfo); + } + + private static Session getMailSession() { + Properties props = System.getProperties(); + props.put("mail.smtp.host", "172.17.9.119"); + return Session.getDefaultInstance(props, null); + } + + public static String getMailAddress(WflResource wflResource) { + WorkFlowCommonBO oCommonBO = new WorkFlowCommonBO(); + if (null != wflResource) { + log.severe(String.valueOf("Employee Id is ").concat(String.valueOf(wflResource.getEmployeeId()))); + return oCommonBO.getMailAddress(wflResource.getEmployeeId()); + } + return oCommonBO.getMailAddress(null); + } + + public static ArrayList getDetailDocs(String sDocumentId, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)ServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade oWorkFlowFacade = oHome.create(); + long recCount = oWorkFlowFacade.getDtlDocTypeMetaInfo(sDocumentId, oUserInfo).getRecordCount(); + if (recCount > 0L) + return oWorkFlowFacade.getDtlDocTypeInfo(sDocumentId, 1L, recCount, oUserInfo); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public static String getRouteDtlId(WflDocumentInfo wflDocInfo) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)ServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade oWorkFlowFacade = oHome.create(); + String routeDtlId = oWorkFlowFacade.getRouteDtlId(wflDocInfo); + oWorkFlowFacade.remove(); + return routeDtlId; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (RemoveException oRv) { + throw new EnrgiseSystemException(oRv); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public static String getActivityCode(String activityId) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + log.severe("ActivityStarted"); + WorkFlowFacadeHome oHome = (WorkFlowFacadeHome)ServiceLocator.getLocator().getService("WorkFlowFacade"); + WorkFlowFacade oWorkFlowFacade = oHome.create(); + String activityCode = oWorkFlowFacade.getActivityCode(activityId); + oWorkFlowFacade.remove(); + return activityCode; + } catch (RemoteException oRe) { + log.severe(String.valueOf(String.valueOf(oRe.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oRe.getMessage()))); + throw new EnrgiseSystemException(oRe); + } catch (RemoveException oRv) { + log.severe(String.valueOf(String.valueOf(oRv.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oRv.getMessage()))); + throw new EnrgiseSystemException(oRv); + } catch (CreateException oCrt) { + log.severe(String.valueOf(String.valueOf(oCrt.getClass().getName()).concat(String.valueOf(" "))).concat(String.valueOf(oCrt.getMessage()))); + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsEjb/wenrgise/workflow/vo/WflDOPGrpQVO.java b/hrmsEjb/wenrgise/workflow/vo/WflDOPGrpQVO.java new file mode 100644 index 0000000..7615a50 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/vo/WflDOPGrpQVO.java @@ -0,0 +1,26 @@ +package wenrgise.workflow.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class WflDOPGrpQVO extends BaseQueryVO implements Serializable { + String grpCode; + + String grpId; + + public String getGrpCode() { + return this.grpCode; + } + + public void setGrpCode(String newGrpCode) { + this.grpCode = newGrpCode; + } + + public String getGrpId() { + return this.grpId; + } + + public void setGrpId(String newGrpId) { + this.grpId = newGrpId; + } +} diff --git a/hrmsEjb/wenrgise/workflow/vo/WflDelegationQVO.java b/hrmsEjb/wenrgise/workflow/vo/WflDelegationQVO.java new file mode 100644 index 0000000..d409b29 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/vo/WflDelegationQVO.java @@ -0,0 +1,36 @@ +package wenrgise.workflow.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class WflDelegationQVO extends BaseQueryVO implements Serializable { + String fromDate; + + String toDate; + + String empId; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsEjb/wenrgise/workflow/vo/WflDocMstQVO.java b/hrmsEjb/wenrgise/workflow/vo/WflDocMstQVO.java new file mode 100644 index 0000000..e9face0 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/vo/WflDocMstQVO.java @@ -0,0 +1,6 @@ +package wenrgise.workflow.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class WflDocMstQVO extends BaseQueryVO implements Serializable {} diff --git a/hrmsEjb/wenrgise/workflow/vo/WflDtlDocActivityMapQVO.java b/hrmsEjb/wenrgise/workflow/vo/WflDtlDocActivityMapQVO.java new file mode 100644 index 0000000..2f9f15b --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/vo/WflDtlDocActivityMapQVO.java @@ -0,0 +1,15 @@ +package wenrgise.workflow.vo; + +import wenrgise.common.vo.BaseQueryVO; + +public class WflDtlDocActivityMapQVO extends BaseQueryVO { + private String dtlDocId; + + public String getDtlDocId() { + return this.dtlDocId; + } + + public void setDtlDocId(String newDtlDocId) { + this.dtlDocId = newDtlDocId; + } +} diff --git a/hrmsEjb/wenrgise/workflow/vo/WflDtlsQVO.java b/hrmsEjb/wenrgise/workflow/vo/WflDtlsQVO.java new file mode 100644 index 0000000..c97b7ee --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/vo/WflDtlsQVO.java @@ -0,0 +1,3 @@ +package wenrgise.workflow.vo; + +public class WflDtlsQVO {} diff --git a/hrmsEjb/wenrgise/workflow/vo/WflRouteDtlQVO.java b/hrmsEjb/wenrgise/workflow/vo/WflRouteDtlQVO.java new file mode 100644 index 0000000..86327b4 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/vo/WflRouteDtlQVO.java @@ -0,0 +1,26 @@ +package wenrgise.workflow.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class WflRouteDtlQVO extends BaseQueryVO implements Serializable { + String activityId; + + String dtlDocId; + + public String getActivityId() { + return this.activityId; + } + + public void setActivityId(String newActivityId) { + this.activityId = newActivityId; + } + + public String getDtlDocId() { + return this.dtlDocId; + } + + public void setDtlDocId(String newDtlDocId) { + this.dtlDocId = newDtlDocId; + } +} diff --git a/hrmsEjb/wenrgise/workflow/xml/vo/WflDocParam.java b/hrmsEjb/wenrgise/workflow/xml/vo/WflDocParam.java new file mode 100644 index 0000000..fb57029 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/xml/vo/WflDocParam.java @@ -0,0 +1,65 @@ +package wenrgise.workflow.xml.vo; + +import java.io.Serializable; + +public class WflDocParam implements Serializable { + private String _DocType = null; + + private String _FormName = null; + + private String _FormBeanName = null; + + private String _ForwardName = null; + + private String _ScreenName = null; + + private String _ParamNames = null; + + public String get_DocType() { + return this._DocType; + } + + public void set_DocType(String new_DocType) { + this._DocType = new_DocType; + } + + public String get_FormName() { + return this._FormName; + } + + public void set_FormName(String new_FormName) { + this._FormName = new_FormName; + } + + public String get_FormBeanName() { + return this._FormBeanName; + } + + public void set_FormBeanName(String new_FormBeanName) { + this._FormBeanName = new_FormBeanName; + } + + public String get_ForwardName() { + return this._ForwardName; + } + + public void set_ForwardName(String new_ForwardName) { + this._ForwardName = new_ForwardName; + } + + public String get_ScreenName() { + return this._ScreenName; + } + + public void set_ScreenName(String new_ScreenName) { + this._ScreenName = new_ScreenName; + } + + public String get_ParamNames() { + return this._ParamNames; + } + + public void set_ParamNames(String new_ParamNames) { + this._ParamNames = new_ParamNames; + } +} diff --git a/hrmsEjb/wenrgise/workflow/xml/vo/WflDocParams.java b/hrmsEjb/wenrgise/workflow/xml/vo/WflDocParams.java new file mode 100644 index 0000000..eb60936 --- /dev/null +++ b/hrmsEjb/wenrgise/workflow/xml/vo/WflDocParams.java @@ -0,0 +1,16 @@ +package wenrgise.workflow.xml.vo; + +import java.io.Serializable; +import java.util.ArrayList; + +public class WflDocParams implements Serializable { + private ArrayList _WflDocParam; + + public ArrayList get_WflDocParam() { + return this._WflDocParam; + } + + public void set_WflDocParam(ArrayList new_WflDocParam) { + this._WflDocParam = new_WflDocParam; + } +} diff --git a/hrmsWeb/WEB-INF/EnrgiseApp.xml b/hrmsWeb/WEB-INF/EnrgiseApp.xml new file mode 100644 index 0000000..e80e439 --- /dev/null +++ b/hrmsWeb/WEB-INF/EnrgiseApp.xml @@ -0,0 +1,5 @@ + + jdbc/conDS + Y + hrms + diff --git a/hrmsWeb/WEB-INF/EnrgiseConfig.xml b/hrmsWeb/WEB-INF/EnrgiseConfig.xml new file mode 100644 index 0000000..ca00aa0 --- /dev/null +++ b/hrmsWeb/WEB-INF/EnrgiseConfig.xml @@ -0,0 +1,3025 @@ + + + + + + wenrgise.hrms.webtier.form.HrmOrgHolTypeMstForm + wenrgise.hrms.vo.HrmOrgHolTypeMstQVO + wenrgise.hrms.businessdelegate.HrmOrgHolTypeMstBD + wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean + 10 + + + HrmOrgHolTypeMst + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmOrgHolTypeMstBD + wenrgise.common.bean.BaseDetailBean + 25 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgCalMstForm + wenrgise.hrms.vo.HrmOrgCalMstQVO + wenrgise.hrms.businessdelegate.HrmOrgCalMstBD + wenrgise.hrms.bean.HrmOrgCalMstHdrBean + 10 + + + HrmOrgCalMst + arrHrmCalDtl + wenrgise.hrms.businessdelegate.HrmOrgCalMstBD + wenrgise.hrms.bean.HrmOrgCalMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgHolCalForm + wenrgise.hrms.vo.HrmOrgHolCalQVO + wenrgise.hrms.businessdelegate.HrmOrgHolCalBD + wenrgise.hrms.bean.HrmOrgHolCalHdrBean + 10 + + + HrmOrgHolCal + arrHrmHolCalDtl + wenrgise.hrms.businessdelegate.HrmOrgHolCalBD + wenrgise.hrms.bean.HrmOrgHolCalDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgQualMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgQualMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgQualMst + arrHrmQualificationDtl + wenrgise.hrms.businessdelegate.HrmOrgQualMstBD + wenrgise.hrms.bean.HrmOrgQualMstDtlBean + 12 + 15 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgRatingMstForm + wenrgise.hrms.vo.HrmOrgRatingMstQVO + wenrgise.hrms.businessdelegate.HrmOrgRatingMstBD + wenrgise.hrms.bean.HrmOrgRatingMstHdrBean + 10 + + + HrmOrgRatingMst + arrHrmRatingDtl + wenrgise.hrms.businessdelegate.HrmOrgRatingMstBD + wenrgise.hrms.bean.HrmOrgRatingMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgSkillMstForm + wenrgise.hrms.vo.HrmOrgSkillMstQVO + wenrgise.hrms.businessdelegate.HrmOrgSkillMstBD + wenrgise.hrms.bean.HrmOrgSkillMstHdrBean + 10 + + + HrmOrgSkillMst + arrHrmSkillDtl + wenrgise.hrms.businessdelegate.HrmOrgSkillMstBD + wenrgise.hrms.bean.HrmOrgSkillMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgReligionMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgReligionMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgReligionMst + arrHrmReligionDtl + wenrgise.hrms.businessdelegate.HrmOrgReligionMstBD + wenrgise.hrms.bean.HrmOrgReligionMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgClassDtlForm + wenrgise.hrms.vo.HrmOrgClassDtlQVO + wenrgise.hrms.businessdelegate.HrmOrgClassDtlBD + wenrgise.hrms.bean.HrmOrgClassHdrBean + 20 + + + HrmOrgClassDtl + arrHrmClassDtl + wenrgise.hrms.businessdelegate.HrmOrgClassDtlBD + wenrgise.hrms.bean.HrmOrgClassDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgScaleMstForm + wenrgise.hrms.vo.HrmOrgScaleMstQVO + wenrgise.hrms.businessdelegate.HrmOrgScaleMstBD + wenrgise.hrms.bean.HrmOrgScaleMstHdrBean + 10 + + + HrmOrgScaleMst + arrHrmScaleDtl + wenrgise.hrms.businessdelegate.HrmOrgScaleMstBD + wenrgise.hrms.bean.HrmOrgScaleMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgCntryMstForm + wenrgise.hrms.vo.HrmOrgCntryMstQVO + wenrgise.hrms.businessdelegate.HrmOrgCntryMstBD + wenrgise.hrms.bean.HrmOrgCntryMstHdrBean + 50 + + + HrmOrgCntryMst + arrHrmCountryDtl + wenrgise.hrms.businessdelegate.HrmOrgCntryMstBD + wenrgise.hrms.bean.HrmOrgCntryMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgWorkGroupMstForm + wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO + wenrgise.hrms.businessdelegate.HrmOrgWorkGroupMstBD + wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean + 20 + + + HrmOrgWorkGroupMst + arrHrmWorkGroup + wenrgise.hrms.businessdelegate.HrmOrgWorkGroupMstBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgRelationMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgRelationMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgRelationMst + arrHrmRelationDtl + wenrgise.hrms.businessdelegate.HrmOrgRelationMstBD + wenrgise.hrms.bean.HrmOrgRelationMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgLangMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgLangMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgLangMst + arrHrmLanguageDtl + wenrgise.hrms.businessdelegate.HrmOrgLangMstBD + wenrgise.hrms.bean.HrmOrgLangMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgIncrementForm + wenrgise.hrms.vo.HrmOrgIncrementQVO + wenrgise.hrms.businessdelegate.HrmOrgIncrementBD + wenrgise.hrms.bean.HrmOrgIncrementHdrBean + 10 + + + HrmOrgIncrement + arylstRatingIncrement + wenrgise.hrms.businessdelegate.HrmOrgIncrementBD + wenrgise.hrms.bean.HrmOrgIncrementDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmOrgDistMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgDistMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgDistMst + arrHrmDistrictDtl + wenrgise.hrms.businessdelegate.HrmOrgDistMstBD + wenrgise.hrms.bean.HrmOrgDistrictMstDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmOrgTehMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgTehMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgTehMst + arrHrmTehsilDtl + wenrgise.hrms.businessdelegate.HrmOrgTehMstBD + wenrgise.hrms.bean.HrmOrgTehsilMstDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmGenEligRuleForm + wenrgise.hrms.vo.HrmGenEligRuleQVO + wenrgise.hrms.businessdelegate.HrmGenEligRuleBD + wenrgise.hrms.bean.HrmGenEligRuleHdrBean + 10 + + + HrmGenEligRule + + wenrgise.hrms.businessdelegate.HrmGenEligRuleBD + wenrgise.hrms.bean.HrmGenEligRuleDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmGenEligRuleQueryForm + wenrgise.hrms.vo.HrmGenEligRuleQueryQVO + wenrgise.hrms.businessdelegate.HrmGenEligRuleQueryBD + wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean + 10 + Y + + + HrmGenEligRuleQuery + arylstGenEligRuleQuery + wenrgise.hrms.businessdelegate.HrmGenEligRuleQueryBD + wenrgise.hrms.bean.HrmGenEligRuleQueryDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmEmpPersDtlForm + wenrgise.hrms.vo.HrmEmpPersQVO + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersHdrBean + 10 + + + HrmEmpPersDtls + arrEmpPersDtl + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersDtlsBean + 1 + 12 + + + HrmEmpPersAddDtls + arrEmpPersDtlAdd + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersAddDtlBean + 1 + 12 + + + HrmEmpPersJoinInf + arrEmpPersDtlJoin + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersJoinInfDtlBean + 1 + 12 + + + HrmEmpPersEmpHst + arrEmpPersDtlEmpHst + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersEmpHstDtlBean + 10 + 12 + + + HrmEmpPersPriorExp + arrEmpPersDtlPriorExp + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersPriorExpDtlBean + 10 + 12 + + + HrmEmpPersEduDtls + arrEmpPersDtlEdu + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersEduDtlBean + 10 + 12 + + + HrmEmpPersPFDtls + arrEmpPersDtlPF + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersPFDtlBean + 10 + 12 + + + HrmEmpPersTrngDtls + arrEmpPersDtlTrng + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersTrngDtlBean + 10 + 12 + + + HrmEmpPersAward + arrEmpPersDtlAward + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersAwardDtlBean + 10 + 12 + + + HrmEmpPersIns + arrEmpPersDtlIns + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersInsDtlBean + 10 + 12 + + + HrmEmpPersHealth + arrEmpPersDtlHealth + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersHealthBean + 10 + 12 + + + HrmEmpPersLng + arrEmpPersDtlLng + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersLngBean + 10 + 12 + + + HrmEmpPersRef + arrEmpPersDtlRef + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersRefDtlBean + 10 + 12 + + + HrmEmpPersAsset + arrEmpPersDtlAsset + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersAssetDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmEmpDepDtlForm + wenrgise.hrms.vo.HrmEmpDepDtlQVO + wenrgise.hrms.businessdelegate.HrmEmpDepDtlBD + wenrgise.hrms.bean.HrmEmpDepHdrBean + 10 + + + HrmEmpDepDtl + arrEmplDepDtls + wenrgise.hrms.businessdelegate.HrmEmpDepDtlBD + wenrgise.hrms.bean.HrmEmpDepDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmEmpDiscActionForm + wenrgise.hrms.vo.HrmEmpDiscActionQVO + wenrgise.hrms.businessdelegate.HrmEmpDiscActionBD + wenrgise.hrms.bean.HrmEmpDiscActionHdrBean + 10 + + + HrmEmpDiscAction + arrEmpDisc + wenrgise.hrms.businessdelegate.HrmEmpDiscActionBD + wenrgise.hrms.bean.HrmEmpDiscActionDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmLvMstForm + wenrgise.hrms.vo.HrmLvMstQVO + wenrgise.hrms.businessdelegate.HrmLvMstBD + wenrgise.hrms.bean.HrmLvMstHdrBean + 20 + + + HrmLeaveMaster + arylstLvMst + wenrgise.hrms.businessdelegate.HrmLvMstBD + wenrgise.hrms.bean.HrmLvMstDtlBean + 5 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmLvLedgerForm + wenrgise.hrms.vo.HrmLvLedgerQVO + wenrgise.hrms.businessdelegate.HrmLvLedgerBD + wenrgise.hrms.bean.HrmLvLedgerHdrBean + 10 + Y + + + HrmEmployeeLeaveLedger + arylstLvLedger + wenrgise.hrms.businessdelegate.HrmLvLedgerBD + wenrgise.hrms.bean.HrmLvLedgerDtlBean + 5 + 10 + + + HrmEmployeeLeaveLedgerDtl2 + arylstLvLedgerTrans + wenrgise.hrms.businessdelegate.HrmLvLedgerBD + wenrgise.hrms.bean.HrmLvLedgerTransDtlBean + 7 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmLvApplnQueryForm + wenrgise.hrms.vo.HrmLvApplnQueryQVO + wenrgise.hrms.businessdelegate.HrmLvApplnQueryBD + wenrgise.hrms.bean.HrmLvApplnQueryHdrBean + 10 + Y + + + HrmLeaveAppQuery + arylstLvApplnQuery + wenrgise.hrms.businessdelegate.HrmLvApplnQueryBD + wenrgise.hrms.bean.HrmLvApplnQueryDtlBean + + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmLvApplnForm + wenrgise.hrms.vo.HrmLvApplnQVO + wenrgise.hrms.businessdelegate.HrmLvApplnBD + wenrgise.hrms.bean.HrmLvApplnHdrBean + 100 + + + HrmLvAppln + arylstLvAppln + wenrgise.hrms.businessdelegate.HrmLvApplnBD + wenrgise.hrms.bean.HrmLvApplnDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmLvCancQueryForm + wenrgise.hrms.vo.HrmLvCancQueryQVO + wenrgise.hrms.businessdelegate.HrmLvCancQueryBD + wenrgise.hrms.bean.HrmLvCancQueryHdrBean + 10 + Y + + + HrmEmployeeLeaveCancellationQueryScreen + arylstLvCnclQuery + wenrgise.hrms.businessdelegate.HrmLvCancQueryBD + wenrgise.hrms.bean.HrmLvCancQueryDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmLvCancForm + wenrgise.hrms.vo.HrmLvCancQVO + wenrgise.hrms.businessdelegate.HrmLvCancBD + wenrgise.hrms.bean.HrmLvCancHdrBean + 20 + + + HrmEmployeeLeaveCancellationBatchScreen + arylstLvCancQuery + wenrgise.hrms.businessdelegate.HrmLvCancBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmLvEncashForm + wenrgise.hrms.vo.HrmLvEncashQVO + wenrgise.hrms.businessdelegate.HrmLvEncashBD + wenrgise.hrms.bean.HrmLvEncashHdrBean + 10 + + + HrmEmpLeaveEncashment + arrLeaveEncsh + wenrgise.hrms.businessdelegate.HrmLvEncashBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmLvCreditForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmLvCreditBD + wenrgise.hrms.bean.HrmLvCreditHdrBean + 2 + + + HrmLvCredit + detailList + wenrgise.hrms.businessdelegate.HrmLvCreditBD + + + + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransOrderForSingleEmpForm + wenrgise.hrms.vo.HrmATDTransSingleEmpQVO + wenrgise.hrms.businessdelegate.HrmATDTransOrderForSingleEmpBD + wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean + 10 + + + HrmATDTransOrderForSingleEmp + arrTransOrderDtl + wenrgise.hrms.businessdelegate.HrmATDTransOrderForSingleEmpBD + wenrgise.common.bean.BaseDetailBean + 1 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransApplForm + wenrgise.hrms.vo.HrmATDTransApplQVO + wenrgise.hrms.businessdelegate.HrmATDTransApplBD + wenrgise.hrms.bean.HrmTransferApplicationHdrBean + 10 + + + HrmATDTransAppl + arrTrnsfrApp + wenrgise.hrms.businessdelegate.HrmATDTransApplBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransChrgRptForm + wenrgise.hrms.vo.HrmATDTransChrgRptQVO + wenrgise.hrms.businessdelegate.HrmATDTransChrgRptBD + wenrgise.hrms.bean.HrmChargeReportHdrBean + 10 + + + HrmATDTransChrgRpt + arrChargeRpt + wenrgise.hrms.businessdelegate.HrmATDTransChrgRptBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransCnclApplForm + wenrgise.hrms.vo.HrmATDTransCnclApplQVO + wenrgise.hrms.businessdelegate.HrmATDTransCnclApplBD + wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean + 10 + + + HrmATDTransCnclAppl + arrTrnsfrCnclApp + wenrgise.hrms.businessdelegate.HrmATDTransCnclApplBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransCnclOrderSingleEmpForm + wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO + wenrgise.hrms.businessdelegate.HrmATDTransCnclOrderForSingleEmpBD + wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean + 10 + + + HrmATDTransCnclOrderForSingleEmp + arrHrmTrntApp + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDDptnApplForm + wenrgise.hrms.vo.HrmATDDptnApplQVO + wenrgise.hrms.businessdelegate.HrmATDDptnApplBD + wenrgise.hrms.bean.HrmDeputationApplicationHdrBean + 10 + + + HrmATDDptnAppl + arrHrmDeputApp + wenrgise.hrms.businessdelegate.HrmATDDptnApplBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDDptnOrderForSingleEmpForm + wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO + wenrgise.hrms.businessdelegate.HrmATDDptnOrderForSingleEmpBD + wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean + 10 + + + HrmATDDptnOrderForSingleEmp + arrDeputOrderDtl + wenrgise.hrms.businessdelegate.HrmATDDptnOrderForSingleEmpBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDDptnChrgRptForm + wenrgise.hrms.vo.HrmATDDptnChrgRptQVO + wenrgise.hrms.businessdelegate.HrmATDDptnChrgRptBD + wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean + 10 + + + HrmATDDptnChrgRpt + arrDepChargeRpt + wenrgise.hrms.businessdelegate.HrmATDDptnChrgRptBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmLnMstForm + wenrgise.hrms.vo.HrmLnMstQVO + wenrgise.hrms.businessdelegate.HrmLnMstBD + wenrgise.hrms.bean.HrmLnMstHdrBean + 10 + + + HrmLnMst + arrHrmLoanMstDtl + wenrgise.hrms.businessdelegate.HrmLnMstBD + wenrgise.hrms.bean.HrmLnMstDtlBean + 10 + 10 + + + + + + + + wenrgise.hrms.webtier.form.HrmLnChartForm + wenrgise.hrms.vo.HrmLnChartQVO + wenrgise.hrms.businessdelegate.HrmLnChartBD + wenrgise.hrms.bean.HrmLnChartHdrBean + 10 + + + HrmLnChart + arrHrmLoanChartDtl + wenrgise.hrms.businessdelegate.HrmLnChartBD + wenrgise.hrms.bean.HrmLnChartDtlBean + 10 + 10 + + + + + + + + wenrgise.hrms.webtier.form.HrmLnAppForm + wenrgise.hrms.vo.HrmLnAppQVO + wenrgise.hrms.businessdelegate.HrmLnAppBD + wenrgise.hrms.bean.HrmLnAppHdrBean + 10 + + + HrmLnApp + arrLoanDisburse + wenrgise.hrms.businessdelegate.HrmLnAppBD + wenrgise.hrms.bean.HrmLnDisDtlBean + 10 + 12 + + + HrmLnAppHblIntRate + arrHblIntRate + wenrgise.hrms.businessdelegate.HrmLnAppBD + wenrgise.hrms.bean.HrmLnHblIntDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAdvMstForm + wenrgise.hrms.vo.HrmAdvMstQueryVO + wenrgise.hrms.businessdelegate.HrmAdvMstBD + wenrgise.hrms.bean.HrmAdvanceMstHdrBean + 10 + + + HrmAdvanceMaster + arrAdvance + wenrgise.hrms.businessdelegate.HrmAdvMstBD + wenrgise.hrms.bean.HrmAdvanceMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmSettlementHeadsForm + wenrgise.hrms.vo.HrmSettleQueryVO + wenrgise.hrms.businessdelegate.HrmSettleBD + wenrgise.hrms.bean.HrmSettleHdrBean + 10 + + + HrmSettlementHeads + arrSettleHeads + wenrgise.hrms.businessdelegate.HrmSettleBD + wenrgise.hrms.bean.HrmSettleDtlBean + 10 + 10 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAdvApplnForm + wenrgise.hrms.vo.HrmEmpAdvAppQueryVO + wenrgise.hrms.businessdelegate.HrmEmpAdvAppBD + wenrgise.hrms.bean.HrmEmpAdvAppHdrBean + 50 + + + HrmEmpAdvance + arrEmpAdvApplcn + wenrgise.hrms.businessdelegate.HrmEmpAdvAppBD + wenrgise.common.bean.BaseDetailBean + 50 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAdvSettleForm + wenrgise.hrms.vo.HrmAdvSettleQVO + wenrgise.hrms.businessdelegate.HrmAdvSettleBD + wenrgise.hrms.bean.HrmAdvSettleHdrBean + 50 + + + HrmAdvanceSettle + arylstAdvSettle + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 50 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAdvSettleHeadsForm + wenrgise.hrms.vo.HrmAdvSettleHeadsQVO + wenrgise.hrms.businessdelegate.HrmAdvSettleHeadsBD + wenrgise.hrms.bean.HrmAdvSettleHeadsHdrBean + 10 + N + + + HrmAdvSettlementHeads + arylstSettleHeads + wenrgise.hrms.businessdelegate.HrmAdvSettleHeadsBD + wenrgise.hrms.bean.HrmAdvSettleHeadsDtlBean + 50 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmClaimMstForm + wenrgise.hrms.vo.HrmClaimMstQVO + wenrgise.hrms.businessdelegate.HrmClaimMstBD + wenrgise.hrms.bean.HrmClaimMstHdrBean + 10 + + + HrmClaimMst + arylstHrmClaimMst + wenrgise.hrms.businessdelegate.HrmClaimMstBD + wenrgise.hrms.bean.HrmClaimMstDtlBean + 50 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmEmpClaimForm + wenrgise.hrms.vo.HrmEmpClaimQVO + wenrgise.hrms.businessdelegate.HrmEmpClaimBD + wenrgise.hrms.bean.HrmEmpClaimHdrBean + 10 + Y + + + HrmEmpClaim + arylstHrmEmpClaim + wenrgise.hrms.businessdelegate.HrmEmpClaimBD + wenrgise.hrms.bean.HrmEmpClaimDtlBean + 50 + 12 + + + + + + + + + + wenrgise.hrms.webtier.form.HrmTrngCalForm + wenrgise.hrms.vo.HrmTrngCalQVO + wenrgise.hrms.businessdelegate.HrmTrngCalBD + wenrgise.hrms.bean.HrmTrngCalHdrBean + 10 + + + HrmTrngCal + arrHrmTrngCal + wenrgise.hrms.businessdelegate.HrmTrngCalBD + wenrgise.hrms.bean.HrmTrngCalDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngCrsMstForm + wenrgise.hrms.vo.HrmTrngCrsMstQVO + wenrgise.hrms.businessdelegate.HrmTrngCrsMstBD + wenrgise.hrms.bean.HrmTrngCrsMstHdrBean + 100 + + + HrmTrngCrsMst + arrHrmTrngCourse + wenrgise.hrms.businessdelegate.HrmTrngCrsMstBD + wenrgise.hrms.bean.HrmTrngCrsMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngBudgetForm + wenrgise.hrms.vo.HrmTrngCrsBudQVO + wenrgise.hrms.businessdelegate.HrmTrngCrsBudBD + wenrgise.hrms.bean.HrmTrngCrsBudHdrBean + 200 + + + HrmTrngBudget + arrHrmTrngBud + wenrgise.hrms.businessdelegate.HrmTrngCrsBudBD + wenrgise.hrms.bean.HrmTrngCrsBudDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngInstCourseDtlForm + wenrgise.hrms.vo.HrmTrngInsCrsQVO + wenrgise.hrms.businessdelegate.HrmTrngInsCrsBD + wenrgise.hrms.bean.HrmTrngInsCrsHdrBean + 10 + + + HrmTrngInstCourseDtl + arrHrmTrngCrsDtl + wenrgise.hrms.businessdelegate.HrmTrngInsCrsBD + wenrgise.hrms.bean.HrmTrngInsCrsDtlbean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacTrngDtlForm + wenrgise.hrms.vo.HrmTrngFacTrngQVO + wenrgise.hrms.businessdelegate.HrmTrngFacTrngBD + wenrgise.hrms.bean.HrmTrngFacTrngHdrBean + 10 + + + HrmTrngFacTrngDtl + arrHrmFacTrngDtl + wenrgise.hrms.businessdelegate.HrmTrngFacTrngBD + wenrgise.hrms.bean.HrmTrngFacTrngDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacMstForm + wenrgise.hrms.vo.HrmTrngFacQVO + wenrgise.hrms.businessdelegate.HrmTrngFacBD + wenrgise.hrms.bean.HrmTrngFacBean + 100 + + + HrmTrngFacMst + arrFacultyMaster + wenrgise.hrms.businessdelegate.HrmTrngFacBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpReqForm + wenrgise.hrms.vo.HrmTrngEmpReqQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpReqBD + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + 10 + + + HrmTrngEmpReq + arrApprovedDates + wenrgise.hrms.businessdelegate.HrmTrngEmpReqBD + wenrgise.hrms.bean.HrmTrngEmpReqDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpHistForm + wenrgise.hrms.vo.HrmTrngEmpHistQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpHistBD + wenrgise.hrms.bean.HrmTrngEmpHistHdrBean + 5200 + + + HrmTrngEmpHist + arrEmpTrngHist + wenrgise.hrms.businessdelegate.HrmTrngEmpHistBD + wenrgise.hrms.bean.HrmTrngEmpHistDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpAttForm + wenrgise.hrms.vo.HrmTrngEmpAttQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpAttBD + wenrgise.hrms.bean.HrmTrngEmpAttHdrBean + 10 + + + HrmTrngEmpAtt + arrTrngEmpAtt + wenrgise.hrms.businessdelegate.HrmTrngEmpAttBD + wenrgise.hrms.bean.HrmTrngEmpAttDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacFeedbackForm + wenrgise.hrms.vo.HrmTrngFacFdbkQVO + wenrgise.hrms.businessdelegate.HrmTrngFacFeedBackBD + wenrgise.hrms.bean.HrmTrngFacFBHdrBean + 10 + Y + + + HrmTrngFacFeedBack + arrFacFeedBack + wenrgise.hrms.businessdelegate.HrmTrngFacFeedBackBD + wenrgise.hrms.bean.HrmTrngFacFBDtlBean + + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacFeedBackDtlForm + wenrgise.hrms.vo.HrmTrngFacFdbkQueryVO + wenrgise.hrms.businessdelegate.HrmTrngFacFdbkDtlBD + wenrgise.hrms.bean.HrmTrngFacFeedBackHdrBean + 10 + + + HrmTrngFacFdbkDtl + arrFacFeedBackNextDtl + wenrgise.hrms.businessdelegate.HrmTrngFacFdbkDtlBD + wenrgise.hrms.bean.HrmTrngFacFdbkDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpFeedBackForm + wenrgise.hrms.vo.HrmTrngEmpFbkQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpFeedBackBD + wenrgise.hrms.bean.HrmTrngEmpFeedBackHdrBean + 10 + + + HrmTrngEmpFeedBack + arrEmpFeedBack + wenrgise.hrms.businessdelegate.HrmTrngEmpFeedBackBD + wenrgise.hrms.bean.HrmTrngEmpFeedBackDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngCalCloseForm + wenrgise.hrms.vo.HrmTrngCalCloseQueryVO + wenrgise.hrms.businessdelegate.HrmTrngCalCloseBD + wenrgise.hrms.bean.HrmTrngCalCloseHdrBean + 10 + + + HrmTrngCalClose + arrHrmTrnCalClose + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAprslForm + wenrgise.hrms.vo.HrmAprslQVO + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslHdrBean + 10 + + + HrmAprslKPA + arylstEmpAprslKPA + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslKPADtlBean + 5 + 12 + + + HrmAprslGoals + arylstEmpAprslGoals + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslGoalsDtlBean + 5 + 12 + + + HrmAprslTrngReq + arylstEmpAprsTrngReq + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslTrngReqDtlBean + 5 + 12 + + + HrmAprslEmpDtls + arrHrmEmpDtl + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslEmpDtlsBean + 5 + 12 + + + HrmAprslEmployee + arrHrmEmpAprslDtl + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslEmployeeBean + 5 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAppraisalKPAForm + wenrgise.hrms.vo.HrmAppraisalKPAQVO + wenrgise.hrms.businessdelegate.HrmApprisalKPABD + wenrgise.hrms.bean.HrmAppraisalKPAHdrBean + 10 + + + HrmAppraisalKPA + arylstAppraisalKpa + wenrgise.hrms.businessdelegate.HrmApprisalKPABD + wenrgise.hrms.bean.HrmAppraisalKPADtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAppraisalTemplateForm + wenrgise.hrms.vo.HrmAppTempQueryVO + wenrgise.hrms.businessdelegate.HrmAppTempBD + wenrgise.hrms.bean.HrmAppTempHdrBean + 10 + + + HrmAppraisalTemplateSection + arrAppTempSec + wenrgise.hrms.businessdelegate.HrmAppTempBD + wenrgise.hrms.bean.HrmAppraisalTemplateSecDtlBean + 10 + 12 + + + HrmAppraisalTemplateKPA + arrAppTempKPA + wenrgise.hrms.businessdelegate.HrmAppTempBD + wenrgise.hrms.bean.HrmAppraisalTemplateKpaDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAprslSpcTmplForm + wenrgise.hrms.vo.HrmAprslSpcTmplQVO + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + 10 + + + HrmAprslSpcTmpl + arylstAprslSpcTempKpa + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplDtlBean + 10 + 12 + + + HrmAprslSpcTmplGoals + arylstAprslSpcTempGoals + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplGoalDtlBean + 10 + 12 + + + HrmAprslSpcTmplEmpElig + arylstAprslSpcTempEmpElig + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplEmpEligDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAprslStartOrderForm + wenrgise.hrms.vo.HrmAprslStartOrderQVO + wenrgise.hrms.businessdelegate.HrmAprslStartOrderBD + wenrgise.hrms.bean.HrmAprslStartOrderHdrBean + 10 + + + HrmAprslStartOrder + arryListAprslStOrder + wenrgise.hrms.businessdelegate.HrmAprslStartOrderBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAprslStartRuleForm + wenrgise.hrms.vo.HrmAprslStartRuleQVO + wenrgise.hrms.businessdelegate.HrmAprslStartRuleBD + wenrgise.hrms.bean.HrmAprslStartRuleHdrBean + 10 + + + HrmAprslStartRule + arylstAprslStarRule + wenrgise.hrms.businessdelegate.HrmAprslStartRuleBD + wenrgise.hrms.bean.HrmAprslStartRuleDtlBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmSepClrTmplMstForm + wenrgise.hrms.vo.HrmSepClrTmplMstQVO + wenrgise.hrms.businessdelegate.HrmSepClrTmplMstBD + wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean + 100 + + + HrmSepClrTmplMst + arrHrmSepClrTmplMst + wenrgise.hrms.businessdelegate.HrmSepClrTmplMstBD + wenrgise.hrms.bean.HrmSepClrTmplMstDtlBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepClrEmpForm + wenrgise.hrms.vo.HrmSepClrEmpQVO + wenrgise.hrms.businessdelegate.HrmSepClrEmpBD + wenrgise.hrms.bean.HrmSepClrEmpHdrBean + 100 + + + HrmSepClrEmp + arrHrmSepClrEmp + wenrgise.hrms.businessdelegate.HrmSepClrEmpBD + wenrgise.hrms.bean.HrmSepClrEmpDtlBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepCatMstForm + wenrgise.hrms.vo.HrmSepCatMstQVO + wenrgise.hrms.businessdelegate.HrmSepCatMstBD + wenrgise.hrms.bean.HrmSepCatMstHdrBean + 100 + + + HrmSepCatMst + arrHrmSepCat + wenrgise.hrms.businessdelegate.HrmSepCatMstBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmSepEmpClrForm + wenrgise.hrms.vo.HrmSepEmpClrQVO + wenrgise.hrms.businessdelegate.HrmSepEmpClrBD + wenrgise.hrms.bean.HrmSepEmpClrHdrBean + 10 + + + HrmSepEmpClr + arrEmpClrnce + wenrgise.hrms.businessdelegate.HrmSepEmpClrBD + wenrgise.hrms.bean.HrmSepEmpClrDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepEmployeeSeparationBatchScreenForm + wenrgise.hrms.vo.HrmSeparationBatchQueryVO + wenrgise.hrms.businessdelegate.HrmEmpSepBatBD + wenrgise.hrms.bean.HrmSepEmpSepBatchHdrBean + 10 + + + HrmSepEmployeeSeparation + arrEmpSeparation + wenrgise.hrms.businessdelegate.HrmEmpSepBatBD + wenrgise.hrms.bean.HrmSepEmpSepBatchDtlBean + + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepChrgRptForm + wenrgise.hrms.vo.HrmSepChrgRptQVO + wenrgise.hrms.businessdelegate.HrmSepChrgRptBD + wenrgise.hrms.bean.HrmSepChrgRptHdrBean + 10 + + + HrmSepChrgRpt + arrChargeRpt + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepDeptClrListForm + wenrgise.hrms.vo.HrmSepDepClrQueryVO + wenrgise.hrms.businessdelegate.HrmSepDepClrBD + wenrgise.hrms.bean.HrmSepDeptClrncHdrBean + 10 + + + HrmSepDepClrList + arylstDeptClr + wenrgise.hrms.businessdelegate.HrmSepDepClrBD + wenrgise.hrms.bean.HrmSepDeptClrncDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepApplnForm + wenrgise.hrms.vo.HrmSepApplnQVO + wenrgise.hrms.businessdelegate.HrmSepApplnBD + wenrgise.hrms.bean.HrmSepApplnHdrBean + 10 + + + HrmSeparationAppln + arylstSepAppln + wenrgise.hrms.businessdelegate.HrmSepApplnBD + wenrgise.hrms.bean.HrmSepApplnDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmSepClrLstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmSepClrLstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmSepClrLst + arrHrmSepClrLst + wenrgise.hrms.businessdelegate.HrmSepClrLstBD + wenrgise.hrms.bean.HrmSepClrLstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepOrderForm + wenrgise.hrms.vo.HrmSepOrderQVO + wenrgise.hrms.businessdelegate.HrmSepOrderBD + wenrgise.hrms.bean.HrmSepOrderHdrBean + 10 + + + HrmSepOrder + arylstHrmSepOrder + wenrgise.hrms.businessdelegate.HrmSepOrderBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmRecAdvtMtnForm + wenrgise.hrms.vo.HrmRecAdvtMtnQVO + wenrgise.hrms.businessdelegate.HrmRecAdvtMtnBD + wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean + 10 + + + HrmRecAdvtMtn + arrHrmAdvMtn + wenrgise.hrms.businessdelegate.HrmRecAdvtMtnBD + wenrgise.hrms.bean.HrmRecAdvtMtnDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmRecTestCentreMstForm + wenrgise.hrms.vo.HrmRecTestCentreMstQVO + wenrgise.hrms.businessdelegate.HrmRecTestCentreMstBD + wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean + 10 + + + HrmTestCentreMaster + arrHrmTestCentre + wenrgise.hrms.businessdelegate.HrmRecTestCentreMstBD + wenrgise.common.bean.BaseDetailBean + 10 + 10 + + + + + + + + wenrgise.hrms.webtier.form.HrmRecAdvAttrForm + wenrgise.hrms.vo.HrmSepCnclApplnQVO + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrHdrBean + 10 + + + HrmRecAdvAttrLocVacencyDtl + arylstHrmAdvLocVacencyDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrLocVacencyDtlBean + 10 + 12 + + + HrmRecAdvAttrLngReqDtl + arylstHrmAdvLngReqDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrLngReqDtlBean + 10 + 12 + + + HrmRecAdvAttrQualReqDtl + arylstHrmAdvQualReqDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrQualReqDtlBean + 10 + 12 + + + HrmRecAdvAttrSkillReqDtl + arylstHrmAdvSkillReqDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrSkillReqDtlBean + 10 + 12 + + + HrmRecAdvAttrWorkExpDtl + arylstHrmAdvWorkExpDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrWorkExpDtlBean + 10 + 12 + + + HrmRecAdvAttrJobDesc + arylstHrmAdvJobDescDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrJobDescDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmRecEmpRecCreationForm + wenrgise.hrms.vo.HrmRecEmpRecCreationQVO + wenrgise.hrms.businessdelegate.HrmRecEmpRecCreationBD + wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean + 10 + + + HrmEmpRecCreation + arylstRecCreation + wenrgise.hrms.businessdelegate.HrmRecEmpRecCreationBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmRecApplnMtnForm + wenrgise.hrms.vo.HrmRecApplnMtnQVO + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnHdrBean + 10 + + + HrmRecApplnMtnAddDtl + arylstHrmRecApplnMtnAddDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnAddDtlBean + 1 + 12 + + + + HrmRecApplnMtnExpDtl + arylstHrmRecApplnMtnExpDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnExpDtlBean + 10 + 12 + + + HrmRecApplnMtnLangDtl + arylstHrmRecApplnMtnLangDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnLangDtlBean + 10 + 12 + + + HrmRecApplnMtnEduDtl + arylstHrmRecApplnMtnEduDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnEduDtlBean + 10 + 12 + + + HrmRecApplnMtnResultDtl + arylstHrmRecApplnMtnResultDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnResultDtlBean + 1 + 12 + + + HrmRecApplnMtnOtherDtl + arylstHrmRecApplnMtnOtherDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnOtherDtlBean + 1 + 12 + + + HrmRecApplnMtnRef + arylstHrmRecApplnMtnRef + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnRefDtlBean + 10 + 12 + + + HrmRecApplnMtnTrngDtls + arylstHrmRecApplnMtnTrngDtls + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnTrngDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmRecScrutAppMtnForm + wenrgise.hrms.vo.HrmRecScrutAppMntQVO + wenrgise.hrms.businessdelegate.HrmRecScrutAppMntBD + wenrgise.hrms.bean.HrmRecScrutAppMtnHdrBean + 10 + Y + + + HrmScrutinizingApplicant + arylstScrutApplDtl + wenrgise.hrms.businessdelegate.HrmRecScrutAppMntBD + wenrgise.hrms.bean.HrmRecScrutAppMtnDtlBean + + 10 + 5 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmOrderForm + wenrgise.hrms.vo.HrmPrmOrderQVO + wenrgise.hrms.businessdelegate.HrmPrmOrderBD + wenrgise.hrms.bean.HrmPrmOrderHdrBean + 10 + + + HrmPrmOrder + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmOrderBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmKPARatingForm + wenrgise.hrms.vo.HrmPrmKPARatingQVO + wenrgise.hrms.businessdelegate.HrmPrmKPARatingBD + wenrgise.hrms.bean.HrmPrmKPARatingHdrBean + 10 + + + HrmPrmKPARating + arylstPoswiseRate + wenrgise.hrms.businessdelegate.HrmPrmKPARatingBD + wenrgise.hrms.bean.HrmPrmKPAPoswiseDtlBean + 10 + 12 + + + + HrmPrmKPARatingF + arylstFinalRate + wenrgise.hrms.businessdelegate.HrmPrmKPARatingBD + wenrgise.hrms.bean.HrmPrmKPAFinalDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmTestScoreForm + wenrgise.hrms.vo.HrmPrmTestScoreQVO + wenrgise.hrms.businessdelegate.HrmPrmTestScoreBD + wenrgise.hrms.bean.HrmPrmTestScoreHdrBean + 10 + + + HrmPrmTestScore + aryLstPrmTestScore + wenrgise.hrms.businessdelegate.HrmPrmTestScoreBD + wenrgise.hrms.bean.HrmPrmTestScoreDtlBean + 5 + 12 + + + + + wenrgise.hrms.webtier.form.HrmPrmExperienceScoreForm + wenrgise.hrms.vo.HrmPrmExperienceScoreQVO + wenrgise.hrms.businessdelegate.HrmPrmExperienceScoreBD + wenrgise.hrms.bean.HrmPrmExperienceHdrBean + 10 + Y + Y + + + HrmPrmExperienceScore + aryLstDtlBean + wenrgise.hrms.businessdelegate.HrmPrmExperienceScoreBD + wenrgise.hrms.bean.HrmPrmExperienceDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmPrmQualCriteriaForm + wenrgise.hrms.vo.HrmPrmQualCriteriaQVO + wenrgise.hrms.businessdelegate.HrmPrmQualCriteriaBD + wenrgise.hrms.bean.HrmPrmQualCriteriaHdrBean + 10 + Y + Y + + + HrmPrmQualCriteria + arylstHrmPrmQualCriteriaDtl + wenrgise.hrms.businessdelegate.HrmPrmQualCriteriaBD + wenrgise.hrms.bean.HrmPrmQualCriteriaDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmCriteriaForm + wenrgise.hrms.vo.HrmPrmCriteriaQVO + wenrgise.hrms.businessdelegate.HrmPrmCriteriaBD + wenrgise.hrms.bean.HrmPrmCriteriaHdrBean + 10 + Y + Y + + + HrmPrmCriteria + arrPrmCriteria + wenrgise.hrms.businessdelegate.HrmPrmCriteriaBD + wenrgise.hrms.bean.HrmPrmCriteriaDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmViewAssForm + wenrgise.hrms.vo.HrmPrmViewAssQVO + wenrgise.hrms.businessdelegate.HrmPrmViewAssBD + wenrgise.hrms.bean.HrmPrmViewAssHdrBean + 10 + + + HrmPrmViewAss + arylstPrmViewAss + wenrgise.hrms.businessdelegate.HrmPrmViewAssBD + wenrgise.hrms.bean.HrmPrmViewAssDtlBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmNoticeDetailForm + wenrgise.hrms.vo.HrmPrmNoticeDtlQVO + wenrgise.hrms.businessdelegate.HrmPrmNoticeDtlBD + wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean + 10 + + + HrmPrmNoticeDtl + arylstNoticeDtl + wenrgise.hrms.businessdelegate.HrmPrmNoticeDtlBD + wenrgise.hrms.bean.HrmPrmNoticeDtlDtlBean + 5 + 12 + + + + + + + Y + wenrgise.hrms.webtier.form.HrmPrmGenAssForm + wenrgise.hrms.vo.HrmPrmGenAssQVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmPrmGenAssHdrBean + 10 + + + HrmPrmGenAss + arrHrmPrmGenAss + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.RepAllIndiaManpowerForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepAllIndiaManpowerScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepConfirmationDueForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepConfirmationDueScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepDistnOfManpowerForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepDistnOfManpowerScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepStaffingListEmpForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepStaffingListEmpScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepQualAllIndiaEmpForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepQualAllIndiaEmpScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepStatusOfDiscCasesForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepStatusOfDiscCasesScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepHistOfEmpForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepHistOfEmpScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepJoiningStatusForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepJoiningStatusScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRecrCessStatusForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRecrCessStatusScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRecrVisAVisSepForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRecrVisAVisSepScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRecruitmentListForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRecruitmentListScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepCessationListForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepCessationListScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepMTExecDetailsForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepMTExecDetailsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRetirementDetailsForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRetirementDetailsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepTrainingDetailsForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepTrainingDetailsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepConfidentialFileForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepConfidentialFileScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRatingVisAVisAwardForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRatingVisAVisAwardsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepOfficersRatedPoorForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepOfficersRatedPoorScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepPerformanceAppraisalForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepPerformanceAppraisalScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepGrossSalExecForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepPromotionListScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepCostToCompanyForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepCostToCompanyScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepGrossSalExecForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepGrossSalExecScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepImpactFinYearForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepImpactFinYearScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepManpowerMediclaimForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepManpowerMediclaimScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAdhocReportForm + wenrgise.hrms.vo.HrmAdhocReportQVO + wenrgise.hrms.businessdelegate.HrmAdhocReportBD + wenrgise.hrms.bean.HrmAdhocReportHdrBean + 10 + + + HrmAdhocReport + arylstAdhocReport + wenrgise.hrms.businessdelegate.HrmAdhocReportBD + wenrgise.common.bean.BaseDetailBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.ReportInputForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 10 + + + RepIncrDue + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 5 + 12 + + + + + wenrgise.hrms.webtier.form.ReportInputForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 10 + + + RepRetrDue + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 5 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttWorkGroupShiftForm + wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO + wenrgise.hrms.businessdelegate.HrmAttWorkGroupShiftBD + wenrgise.hrms.bean.HrmAttWorkGroupShiftHdrBean + 10 + Y + N + + + HrmAttWorkGroupShift + arrHrmAttWrkGrpShift + wenrgise.hrms.businessdelegate.HrmAttWorkGroupShiftBD + wenrgise.hrms.bean.HrmAttWorkGroupShiftDtlBean + + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpShiftForm + wenrgise.hrms.vo.HrmAttEmpShiftQVO + wenrgise.hrms.businessdelegate.HrmAttEmpShiftBD + wenrgise.hrms.bean.HrmAttEmpShiftHdrBean + 10 + Y + N + + + HrmAttEmpShift + arrHrmAttESD + wenrgise.hrms.businessdelegate.HrmAttEmpShiftBD + wenrgise.hrms.bean.HrmAttEmpShiftDtlBean + + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttShiftMasterForm + wenrgise.hrms.vo.HrmAttShiftMstQVO + wenrgise.hrms.businessdelegate.HrmAttShiftMstBD + wenrgise.hrms.bean.HrmAttShiftMstHdrBean + 20 + + + HrmAttShiftMst + detailList + wenrgise.hrms.businessdelegate.HrmAttShiftMstBD + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpAttQueryForm + wenrgise.hrms.vo.HrmAttEmpAttQueryQVO + wenrgise.hrms.businessdelegate.HrmAttEmpAttQueryBD + wenrgise.hrms.bean.HrmAttEmpAttQueryHdrBean + 10 + + + HrmAttEmpAttQuery + arylstAttndDtls + wenrgise.hrms.businessdelegate.HrmAttEmpAttQueryBD + wenrgise.hrms.bean.HrmAttEmpAttQueryDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpAttInForm + wenrgise.hrms.vo.HrmAttEmpAttInQVO + wenrgise.hrms.businessdelegate.HrmAttEmpInBD + wenrgise.hrms.bean.HrmAttEmpAttInHdrBean + 10 + + + HrmAttEmpAttIn + arylstAttndDtls + wenrgise.hrms.businessdelegate.HrmAttEmpInBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpAttOutForm + wenrgise.hrms.vo.HrmAttEmpAttOutQVO + wenrgise.hrms.businessdelegate.HrmAttEmpAttOutBD + wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean + 10 + + + HrmAttEmpAttOut + arylstAttndDtls + wenrgise.hrms.businessdelegate.HrmAttEmpAttOutBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmployeeShiftRosterForm + wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO + wenrgise.hrms.businessdelegate.HrmAttEmployeeShiftRosterBD + wenrgise.hrms.bean.HrmAttEmpShiftRosterHdrBean + 10 + Y + + + HrmAttEmpShiftRoster + arylstEmpShiftRosterDtl + wenrgise.hrms.businessdelegate.HrmAttEmployeeShiftRosterBD + wenrgise.hrms.bean.HrmAttEmpShiftRosterDtlBean + + 10 + 12 + + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttShiftRosterGenForm + wenrgise.hrms.vo.HrmAttShiftRosterGenQVO + wenrgise.hrms.businessdelegate.HrmAttShiftRosterGenBD + wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean + 10 + + + HrmAttShiftRosterGen + arrHrmAttShiftRosterGenDtl + wenrgise.hrms.businessdelegate.HrmAttShiftRosterGenBD + wenrgise.hrms.bean.HrmAttShiftRosterGenBean + + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAttAbsentListGenForm + wenrgise.hrms.vo.HrmAttAbsentListGenQVO + wenrgise.hrms.businessdelegate.HrmAttAbsentListGenBD + wenrgise.hrms.bean.HrmAttAbsentListGenHdrBean + 10 + + + HrmAttAbsentListGen + arrHrmAttShiftAbsGenDtl + wenrgise.hrms.businessdelegate.HrmAttAbsentListGenBD + wenrgise.hrms.bean.HrmAttAbsentListGenBean + + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpDayOffForm + wenrgise.hrms.vo.HrmAttEmpDayOffQVO + wenrgise.hrms.businessdelegate.HrmAttEmpDayOffBD + wenrgise.hrms.bean.HrmAttEmpDayOffHdrBean + 10 + Y + N + + + HrmAttEmpDayOff + arylstAttEmpDayOff + wenrgise.hrms.businessdelegate.HrmAttEmpDayOffBD + wenrgise.hrms.bean.HrmAttEmpDayOffDtlBean + + 50 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAttWorkGroupDayOffForm + wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO + wenrgise.hrms.businessdelegate.HrmAttWorkGroupDayOffBD + wenrgise.hrms.bean.HrmAttWorkGroupDayOffHdrBean + 10 + Y + N + + + HrmAttWorkGroupDayOff + arrAttWrkGrpDO + wenrgise.hrms.businessdelegate.HrmAttWorkGroupDayOffBD + wenrgise.hrms.bean.HrmAttWorkGroupDayOffDtlBean + + 10 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmMisReportForm + wenrgise.hrms.vo.HrmMisreportQVO + wenrgise.hrms.businessdelegate.HrmMisReportBD + wenrgise.hrms.bean.HrmMisReportHdrBean + 10 + Y + N + + + HrmMisReport + arrMisReport + wenrgise.hrms.businessdelegate.HrmMisReportBD + wenrgise.hrms.bean.HrmMisReportDtlBean + 10 + 12 + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmRetireForecastForm + wenrgise.hrms.vo.HrmRetireForecastQVO + wenrgise.hrms.businessdelegate.HrmRetireForecastBD + wenrgise.hrms.bean.HrmRetireForecastHdrBean + 10 + + + HrmRetFrcst + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmRetireForecastBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmAgeAnalysisForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmAgeAnalysisBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmAgeAnalysis + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmAgeAnalysisBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmAcademicQualRepForm + wenrgise.common.vo.BaseQueryVO + wenrgise.common.businessdelegate.HrmBaseBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmAcademicQual + arrHrmHolType + wenrgise.common.businessdelegate.HrmBaseBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmMediclaimMasterForm + wenrgise.hrms.vo.HrmMediclaimMasterQVO + wenrgise.hrms.businessdelegate.HrmMediclaimMasterBD + wenrgise.hrms.bean.HrmMediclaimMasterHdrBean + 10 + + + HrmMediclaimMaster + arrHrmMediclaimMstDtl + wenrgise.hrms.businessdelegate.HrmMediclaimMasterBD + wenrgise.hrms.bean.HrmMediclaimMasterDtlBean + 10 + 10 + + + + + + wenrgise.hrms.webtier.form.HrmMyWorkflowForm + wenrgise.hrms.vo.HrmMyWorkflowQVO + wenrgise.hrms.businessdelegate.HrmMyWorkflowBD + wenrgise.hrms.bean.HrmMyWorkflowHdrBean + 2 + Y + + + HrmMyWorkflow + arrHrmMyWorkflowDtl + wenrgise.hrms.businessdelegate.HrmMyWorkflowBD + wenrgise.hrms.bean.HrmMyWorkflowDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmRoasterEntryForm + wenrgise.hrms.vo.HrmRoasterEntryQVO + wenrgise.hrms.businessdelegate.HrmRoasterEntryBD + wenrgise.hrms.bean.HrmRoasterEntryHdrBean + 10 + + + HrmRoasterEntry + arrHrmRoasterEntryDtl + wenrgise.hrms.businessdelegate.HrmRoasterEntryBD + wenrgise.hrms.bean.HrmRoasterEntryDtlBean + 250 + 12 + + + + + \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/EnrgiseLOV.xml b/hrmsWeb/WEB-INF/EnrgiseLOV.xml new file mode 100644 index 0000000..3a205c0 --- /dev/null +++ b/hrmsWeb/WEB-INF/EnrgiseLOV.xml @@ -0,0 +1,8906 @@ + + + + + + + + + + + ClassType + + + HrmOrgClassDtl + + + Q + HrmFacade + getHrmClassTypeLOVData + N + + + + + + + + + GradeCode + + + HrmOrgScaleMst + + + Q + HrmFacade + getHrmOrgScaleGradeLOVData + N + + + U + HrmFacade + getHrmOrgScaleGradeLOVData + N + + + N + HrmFacade + getHrmOrgScaleGradeLOVData + N + + + + + + + + + ClassParentID + + + HrmOrgClassDtl + + + N + HrmFacade + getHrmClassDtlLOVData + N + + + U + HrmFacade + getHrmClassDtlLOVData + N + + + + + + + + + + + HrmRatingCode + + + HrmOrgRatingMst + + + Q + HrmFacade + getHrmRatingCodeLOVdata + N + + + U + HrmFacade + getHrmRatingCodeLOVdata + N + + + + + + + + + + HrmCalendarType + + + HrmOrgCalMst + + + Q + HrmFacade + getHrmCalendarTypeLOVdata + N + + + U + HrmFacade + getHrmCalendarTypeLOVdata + N + + + + + + + + + + ScaleCode + + + HrmOrgScaleMst + + + Q + HrmFacade + getHrmScaleMstScaleCodeLOV + N + + + N + HrmFacade + getHrmScaleMstScaleCodeLOV + N + + + U + HrmFacade + getHrmScaleMstScaleCodeLOV + N + + + + + + + + + + + + CalName + + + HrmOrgHolCal + + + Q + HrmFacade + getHrmCalNameLOVdata + N + + + + + + + + + + SiteCode + + + HrmOrgHolCal + + + Q + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + + + + + + + HolidayType + + + HrmOrgHolCal + + + Q + HrmFacade + getHrmHolidayTypeLOVdata + N + + + U + HrmFacade + getHrmHolidayTypeLOVdata + N + + + + + + + + State + + + HrmOrgHolCal + + + N + HrmFacade + getHrmStateCodeInsLOVdata + N + + + Q + HrmFacade + getHrmStateCodeQueryLOVdata + N + + + U + HrmFacade + getHrmStateCodeInsLOVdata + N + + + + + + + + + + + HrmHolidayType + + + HrmOrgHolTypeMst + + + Q + HrmFacade + getHrmHolidayTypeLOVdata + N + + + U + HrmFacade + getHrmHolidayTypeLOVdata + N + + + + + + + + + + HrmSkillTypeCode + + + HrmOrgSkillMst + + + Q + HrmFacade + getHrmSkillCodeLOVdata + N + + + + + + + + + + HrmCountryCode + + + HrmOrgCntryMst + + + Q + HrmFacade + getHrmCountryCodeLOVdata + N + + + U + HrmFacade + getHrmCountryCodeLOVdata + N + + + + + + + + + + WorkGroupCode + + + HrmOrgWorkGroupMst + + + Q + HrmFacade + getHrmWorkGroupCodeLOVdata + N + + + + + + + + WorkGroupSiteCode + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + U + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + + + + CostCode + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmCostCodeLOVdata + N + + + U + HrmFacade + getHrmCostCodeLOVdata + N + + + + + + + + + + + ParentCode + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmWorkParentCodeLOVdata + N + + + U + HrmFacade + getHrmWorkParentCodeLOVdata + N + + + + + + + + + + IncrRatgRating + + + HrmOrgIncrement + + + N + HrmFacade + getIncrRatingLOVNData + N + + + Q + HrmFacade + getIncrRatingLOVQData + N + + + + + + + + + + IncrRatgClsHdr + + + HrmOrgIncrement + + + N + HrmThirdFacade + getClsMstData + N + + + + + + + + + + IncrRatgClsDtl + + + HrmOrgIncrement + + + N + HrmThirdFacade + getClsDtlData + N + + + + + + + + + + + ContactEmployeeNo + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmContactEmployeeNoLOVdata + N + + + U + HrmFacade + getHrmContactEmployeeNoLOVdata + N + + + + + + + + + + EligValues + + + HrmGenEligRule + + + Q + HrmFacade + getHrmClassDetailLOV + N + + + + + + + + + DocTypeLeave + + + HrmGenEligRule + + + Q + HrmFacade + getHrmLeaveDetailLOV + N + + + + + + + DocTypeLoan + + + HrmGenEligRule + + + Q + HrmFacade + getHrmLoanDetailLOV + N + + + + + + + + DocTypeAdvances + + + HrmGenEligRule + + + Q + HrmFacade + getHrmAdvanceDetailLOV + N + + + + + + + + DocTypeClaim + + + HrmGenEligRule + + + Q + HrmFacade + getHrmEmpClaimCodeLOVdata + N + + + + + + + + DocTypeEarnDed + + + HrmGenEligRule + + + Q + HrmFacade + getHrmErngDednDetailLOV + N + + + + + + + + + DocTypeSep + + + HrmGenEligRule + + + Q + HrmFacade + getHrmSepEligLOV + N + + + + + + + + + + + + + PersDtlsEmpNo + + + HrmEmpPersDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PersDtlsGrade + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsGradeLOVdata + N + + + + + + + + + PersDtlsDesgn + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsDesigLOVdata + N + + + + + + + + + PersDtlsDept + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsDeptLOVdata + N + + + + + + + + + PersDtlsLocation + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersJoinInfBaseSiteLOVdata + N + + + + + + + + + PersDtlsNat + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + + + + + + + PersDtlsReligion + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + + + + + + + PersDtlsMotTong + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + + + + + + + PersDtlsMarital + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + + + + + + + PersDtlsSocialStatus + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsSocialStatusLOVdata + N + + + + + + + + + PersDtlsReptEmployeeNo + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + PersDtlsRelatedEmp + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsRelatedEmpLOVdata + N + + + + + + + + PersAddDtlsEmpNo + + + HrmEmpPersAddDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PersDtlsAddState + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + + + + + + + PersDtlsAddCountry + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + + + + + PersDtlsAddDistrict + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsDistrictLOVdata + N + + + + + + + PersDtlsAddTehsil + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsTehsilLOVdata + N + + + + + + + + PersDtlsJoinInfEmpNo + + + HrmEmpPersJoinInf + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsJoinBaseSite + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfBaseSiteLOVdata + N + + + + + + + + PersDtlsJoinEntry + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfEntryLOVdata + N + + + + + + + + PersDtlsEmpStat + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfStatusLOVdata + N + + + + + + + + PersDtlsSepType + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfSepTypeLOVdata + N + + + + + + + + PersDtlsCostCentre + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfCostCentreLOVdata + N + + + + + + + + PersDtlsBank + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfBankLOVdata + N + + + + + + + + + PersDtlsJobResp + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfJobRespLOVdata + N + + + + + + + + PersDtlsEmpHstEmpNo + + + HrmEmpPersEmpHst + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsPriorExpEmpNo + + + HrmEmpPersPriorExp + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsEduDtlsEmpNo + + + HrmEmpPersEduDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsEduQualCode + + + HrmEmpPersEduDtls + + + U + HrmFacade + getHrmEmpPersEduDtlsQualLOVdata + N + + + + + + + + AwdDtlsEmpNo + + + HrmEmpPersAward + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + InsDtlsEmpNo + + + HrmEmpPersIns + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + HealthDtlsEmpNo + + + HrmEmpPersHealth + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + LngDtlsEmpNo + + + HrmEmpPersLng + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsMotTong + + + HrmEmpPersLng + + + Q + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + + + + + + RefDtlsEmpNo + + + HrmEmpPersRef + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + TrngDtlsEmpNo + + + HrmEmpPersTrngDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PFDtlsEmpNo + + + HrmEmpPersPFDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PFDtlsNominee + + + HrmEmpPersPFDtls + + + U + HrmFacade + getHrmRelationLOVdata + N + + + + + + + + + HrmEmplDepEmpNo + + + HrmEmpDepDtl + + + Q + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + U + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + + + + + + HrmEmplDepRelType + + + HrmEmpDepDtl + + + U + HrmFacade + getHrmEmpDepDtlRelTypeLOVdata + N + + + + + + + + + HrmEmpDiscEmpNo + + + HrmEmpDiscAction + + + Q + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + U + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + + + + + + HrmEmpDiscLocation + + + HrmEmpDiscAction + + + U + HrmFacade + getHrmEmpDiscActionSiteLOVdata + N + + + + + + + + + + + + + + LvAppEmployeeNo + + + HrmLeaveApplication + + + Q + HrmSecondFacade + getHrmEmployeeLOVdata + N + + + + + + + + + + + + + CreditLeaveRegion + + + HrmLvCredit + + + Q + HrmSecondFacade + getHrmLvCreditRegionLOVdata + N + + + U + HrmSecondFacade + getHrmLvCreditRegionLOVdata + N + + + N + HrmSecondFacade + getHrmLvCreditRegionLOVdata + N + + + + + + + CreditLvLvType + + + HrmLvCredit + + + Q + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + N + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + U + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + + + + + CreditLvEmpNo + + + HrmLvCredit + + + Q + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + N + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + U + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + + + + + + + LvAppQryEmployeeNo + + + HrmLeaveAppQuery + + + Q + HrmSecondFacade + getHrmLvAppQryEmpNoLOVdata + N + + + N + HrmSecondFacade + getHrmLvAppQryEmpNoLOVdata + N + + + U + HrmSecondFacade + getHrmLvAppQryEmpNoLOVdata + N + + + + + + + + + + LvAppQryLeaveCode + + + HrmLeaveAppQuery + + + Q + HrmSecondFacade + getHrmLvAppQryLvCdLOVdata + N + + + N + HrmSecondFacade + getHrmLvAppQryLvCdLOVdata + N + + + U + HrmSecondFacade + getHrmLvAppQryLvCdLOVdata + N + + + + + + + + + + LvApplnLeaveCode + + + HrmLvAppln + + + Q + HrmSecondFacade + getHrmEmpLvAppLvCdLOVdata + N + + + N + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + U + HrmSecondFacade + getHrmEmpLvAppLvCdLOVdata + N + + + + + + + + + + CancelLeaveEmpNo + + + HrmEmployeeLeaveCancellationQueryScreen + + + Q + HrmSecondFacade + getHrmCnclLeaveEmpLOV + N + + + U + HrmSecondFacade + getHrmCnclLeaveEmpLOV + N + + + + + + + + + + CancelLeaveType + + + HrmEmployeeLeaveCancellationQueryScreen + + + Q + HrmSecondFacade + getHrmCnclLeaveTypeLOV + N + + + U + HrmSecondFacade + getHrmCnclLeaveTypeLOV + N + + + + + + + + + + EmpLvCancCode + + + HrmEmployeeLeaveCancellationBatchScreen + + + Q + HrmFacade + getHrmEmpLvCanLvCdLOVdata + N + + + N + HrmFacade + getHrmEmpLvCanLvCdInsertLOVdata + N + + + + + + + + + + + LvLdgrEmployeeNo + + + HrmEmployeeLeaveLedger + + + Q + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + N + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + U + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + + + + + + + + + LvLdgrLeaveCode + + + HrmEmployeeLeaveLedger + + + Q + HrmSecondFacade + getHrmLeaveCodesLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveCodesLOVdata + N + + + U + HrmSecondFacade + getHrmLeaveCodesLOVdata + N + + + + + + + + + + LvLdgrEmpCode + + + HrmEmployeeLeaveLedger + + + Q + HrmSecondFacade + getEmpCodeLOVdata + N + + + N + HrmSecondFacade + getEmpCodeLOVdata + N + + + U + HrmSecondFacade + getEmpCodeLOVdata + N + + + + + + + + + + EmpLvCancCode + + + HrmEmployeeLeaveCancellationBatchScreen + + + Q + HrmSecondFacade + getHrmEmpLvCanLvCdLOVdata + N + + + N + HrmSecondFacade + getHrmEmpLvCanLvCdInsertLOVdata + N + + + + + + + + + LvEmEncLeaveCode + + + HrmEmpLeaveEncashment + + + Q + HrmSecondFacade + getHrmLeaveTypesLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveTypesLOVdata + N + + + U + HrmSecondFacade + getHrmLeaveTypesLOVdata + N + + + + + + + LvEncashEmpNo + + + HrmEmpLeaveEncashment + + + Q + HrmSecondFacade + getHrmLvEncashEmpNoQLOVdata + N + + + N + HrmSecondFacade + getHrmLvEncashEmpNoNLOVdata + N + + + + + + + + + LvApplnEmpNo + + + HrmLvAppln + + + Q + HrmSecondFacade + getHrmLvApplnEmpNoQLOVdata + N + + + N + HrmSecondFacade + getHrmLvApplnEmpNoNLOVdata + N + + + + + + + LvAppLeaveCode + + + HrmLeaveApplication + + + Q + HrmSecondFacade + getHrmLeaveTypeLOVdata + N + + + + + + + + + + LvMstLeaveCode + + + HrmLeaveMaster + + + Q + HrmSecondFacade + getHrmLeaveMasterLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveCodeInsertLOVdata + N + + + + + + + + + LvMstCalendarType + + + HrmLeaveMaster + + + Q + HrmSecondFacade + getHrmLeaveMasterCalLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveMasterCalLOVdata + N + + + + + + + + + LeaveState + + + HrmLeaveMaster + + + Q + HrmSecondFacade + getHrmLvMstStateLOVdata + N + + + N + HrmSecondFacade + getHrmLvMstStateLOVdata + N + + + U + HrmSecondFacade + getHrmLvMstStateLOVdata + N + + + + + + + + + + + + + + DeputApplnNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputApplnNoLOVdata + N + + + N + HrmThirdFacade + getHrmDeputApplnNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputApplnNoLOVdata + N + + + + + + + + + + DeputEmpNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputEmpNoQLOVdata + N + + + N + HrmThirdFacade + getHrmDeputEmpNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputEmpNoLOVdata + N + + + + + + + + + + DeputAdvtNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputAdvtNoLOVdata + N + + + N + HrmThirdFacade + getHrmDeputAdvtNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputAdvtNoLOVdata + N + + + + + + + + + + DeputPostNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputPostNameLOVdata + N + + + N + HrmThirdFacade + getHrmDeputPostNameLOVdata + N + + + U + HrmThirdFacade + getHrmDeputPostNameLOVdata + N + + + + + + + + + + + + + DeputationOrderNo + + + HrmATDDptnChrgRpt + + + Q + HrmThirdFacade + getHrmDepChrgOrderNoQLOVdata + N + + + N + HrmThirdFacade + getHrmDepChrgOrderNoLOVdata + N + + + + + + + + + DepChargeCode + + + HrmATDDptnChrgRpt + + + Q + HrmThirdFacade + getHrmDepChrgCodeLOVdata + N + + + N + HrmThirdFacade + getHrmDepChrgCodeLOVdata + N + + + U + HrmThirdFacade + getHrmDepChrgCodeLOVdata + N + + + + + + + + + + + + DeptnOrderNo + + + HrmATDDptnOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmDeputationOrderNoLOVdata + N + + + N + HrmThirdFacade + getHrmDeputationOrderNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputationOrderNoLOVdata + N + + + + + + + + + + TransOrderApproverNo + + + HrmATDTransOrderForSingleEmp + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + TransCnclOrderApproverNo + + + HrmATDTransCnclOrderForSingleEmp + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + TransChrgRptHandTakeOver + + + HrmATDTransChrgRpt + + + N + HrmThirdFacade + getHrmChgRepEmpLOVdata + N + + + U + HrmThirdFacade + getHrmChgRepEmpLOVdata + N + + + + + + + TransReptEmpNo + + + HrmATDTransOrderForSingleEmp + + + N + HrmThirdFacade + getHrmTransReptEmpNoLOV + N + + + U + HrmThirdFacade + getHrmTransReptEmpNoLOV + N + + + + + + + + + + DeptnApplcnNo + + + HrmATDDptnOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmDeputApplcnNoQLOVdata + N + + + N + HrmThirdFacade + getHrmDeputApplcnNoLOVdata + N + + + + + + + + + + + + TrnsfrApplnNo + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnApplnNoLOVdata + N + + + N + HrmThirdFacade + getHrmTrnApplnNoLOVdata + N + + + U + HrmThirdFacade + getHrmTrnApplnNoLOVdata + N + + + + + + + + + TrnsfrOfcNoteNo + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnOfcNoteNoLOVdata + N + + + N + HrmThirdFacade + getHrmTrnOfcNoteNoLOVdata + N + + + U + HrmThirdFacade + getHrmTrnOfcNoteNoLOVdata + N + + + + + + + + TrnsfrDesignation + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnDesignationLOVdata + N + + + N + HrmThirdFacade + getHrmTrnDesignationLOVdata + N + + + U + HrmThirdFacade + getHrmTrnDesignationLOVdata + N + + + + + + + + + TrnsfrWorkgroup + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnWorkgroupLOVdata + N + + + N + HrmThirdFacade + getHrmTrnWorkgroupLOVdata + N + + + U + HrmThirdFacade + getHrmTrnWorkgroupLOVdata + N + + + + + + + + + TrnsfrEmpNo + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnEmpNoLOVdata + N + + + N + HrmThirdFacade + getHrmTrnEmpNoInsLOVdata + N + + + U + HrmThirdFacade + getHrmTrnEmpNoInsLOVdata + N + + + + + + + + + + TrnsfrSite1 + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnSite1LOVdata + N + + + N + HrmThirdFacade + getHrmTrnSite1LOVdata + N + + + U + HrmThirdFacade + getHrmTrnSite1LOVdata + N + + + + + + + + + + + TrnsfrSite2 + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnSite2LOVdata + N + + + N + HrmThirdFacade + getHrmTrnSite2LOVdata + N + + + U + HrmThirdFacade + getHrmTrnSite2LOVdata + N + + + + + + + + + + + TrnsfrSite3 + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnSite3LOVdata + N + + + N + HrmThirdFacade + getHrmTrnSite3LOVdata + N + + + U + HrmThirdFacade + getHrmTrnSite3LOVdata + N + + + + + + + + + + + + + TrnsfrOrderNo + + + HrmATDTransChrgRpt + + + Q + HrmThirdFacade + getHrmChrgOrderNoQLOVdata + N + + + N + HrmThirdFacade + getHrmChrgOrderNoLOVdata + N + + + U + HrmThirdFacade + getHrmChrgOrderNoQLOVdata + N + + + + + + + + + + ChargeCode + + + HrmATDTransChrgRpt + + + Q + HrmThirdFacade + getHrmChrgCodeLOVdata + N + + + N + HrmThirdFacade + getHrmChrgCodeLOVdata + N + + + U + HrmThirdFacade + getHrmChrgCodeLOVdata + N + + + + + + + + + + + + TrnsfrCnclApplnNo + + + HrmATDTransCnclAppl + + + Q + HrmThirdFacade + getHrmCnclApplNoLOVdata + N + + + + + + + + + + TrnsfrCnclOfcNoteNo + + + HrmATDTransCnclAppl + + + Q + HrmThirdFacade + getHrmCnclOfNoteNoLOVdata + N + + + N + HrmThirdFacade + getHrmCnclOfNoteNoLOVdata + N + + + + + + + + + + TrnsfrCnclEmpNo + + + HrmATDTransCnclAppl + + + Q + HrmThirdFacade + getHrmEmpNoQCnclApplLOVdata + N + + + N + HrmThirdFacade + getHrmEmpNoICnclApplLOVdata + N + + + + + + + + + + + + TrnsfrCnclOrdrApplnNo + + + HrmATDTransCnclOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransCnclOrderAppNoLOVQdata + N + + + N + HrmThirdFacade + getHrmTransCnclOrderAppNoLOVIdata + N + + + + + + + + + + TrnsfrCnclOrdrNo + + + HrmATDTransCnclOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransCnclOrderLOVdata + N + + + + + + + + + + + + HrmTransOrderCode + + + HrmATDTransOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransOrderNoLOVdata + N + + + + + + + + + + HrmToSiteCode + + + HrmATDTransOrderForSingleEmp + + + N + HrmThirdFacade + getHrmToSiteCodeLOVdata + N + + + U + HrmThirdFacade + getHrmToSiteCodeLOVdata + N + + + + + + + + + + HrmApplicationNo + + + HrmATDTransOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransAplnNoQLOVdata + N + + + N + HrmThirdFacade + getHrmTransAplnNoLOVdata + N + + + U + HrmThirdFacade + getHrmTransAplnNoQLOVdata + N + + + + + + + + + HrmTCMstCode + + + HrmTestCentreMaster + + + Q + HrmSecondFacade + getHrmTCMstCodeLOVdata + N + + + + + + + + RecAdvAttrLocation + + + HrmRecAdvAttrLocVacencyDtl + + + N + HrmSecondFacade + getHrmRecAttrLocationLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrLocationLOVData + N + + + + + + + + RecAdvAttrQulification + + + HrmRecAdvAttrQualReqDtl + + + N + HrmSecondFacade + getHrmRecAttrQualificationLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrQualificationLOVData + N + + + + + + + + RecAdvAttrLanguage + + + HrmRecAdvAttrLngReqDtl + + + N + HrmSecondFacade + getHrmRecAttrLanguageLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrLanguageLOVData + N + + + + + + + + RecAdvAttrSkill + + + HrmRecAdvAttrSkillReqDtl + + + N + HrmSecondFacade + getHrmRecAttrSkillLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrSkillLOVData + N + + + + + + + + + + RecAdvAttrWork + + + HrmRecAdvAttrWorkExpDtl + + + N + HrmSecondFacade + getHrmRecAttrWorkLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrWorkLOVData + N + + + + + + + classCode + + + HrmRecAdvtMtn + + + N + HrmSecondFacade + getClassDataLOV + N + + + U + HrmSecondFacade + getClassDataLOV + N + + + + + + + + RefNo + + + HrmRecAdvtMtn + + + Q + HrmSecondFacade + getRefNoLOV + N + + + + + + + EntryMode + + + HrmRecAdvtMtn + + + N + HrmSecondFacade + getEntryModeLOV + N + + + U + HrmSecondFacade + getEntryModeLOV + N + + + + + + + + HrmRecAdvtMtnGrade + + + HrmRecAdvtMtn + + + U + HrmFacade + getHrmEmpPersDtlsGradeLOVdata + N + + + + + + + RecAdvAttrState + + + HrmRecAdvAttrLocVacencyDtl + + + U + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + + + + + + + ApplnMtnPerAdvtNo + + + HrmRecApplnMtnPerDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + + ApplnMtnAddRelatedEmp + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + ApplnMtnAddAdvtNo + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnExpAdvtNo + + + HrmRecApplnMtnExpDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnEduAdvtNo + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnLangAdvtNo + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnRefAdvtNo + + + HrmRecApplnMtnRef + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + + ApplnMtnTrngAdvtNo + + + HrmRecApplnMtnTrngDtls + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnOtherAdvtNo + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnResultAdvtNo + + + HrmRecApplnMtnResultDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + + + ApplnMtnPerDesignation + + + HrmRecApplnMtnPerDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + + ApplnMtnPerReligion + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + + + + + ApplnMtnAddDesignation + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnExpDesignation + + + HrmRecApplnMtnExpDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnEduDesignation + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + + ApplnMtnRefDesignation + + + HrmRecApplnMtnRef + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnTrngDesignation + + + HrmRecApplnMtnTrngDtls + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnLangDesignation + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnOtherDesignation + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnResultDesignation + + + HrmRecApplnMtnResultDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + + + ApplnMtnPerApplnNo + + + HrmRecApplnMtnPerDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + + ApplnMtnAddApplnNo + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnExpApplnNo + + + HrmRecApplnMtnExpDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnEduApplnNo + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnRefApplnNo + + + HrmRecApplnMtnRef + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + + ApplnMtnTrngApplnNo + + + HrmRecApplnMtnTrngDtls + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnLangApplnNo + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnOtherApplnNo + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnResultApplnNo + + + HrmRecApplnMtnResultDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + + + ApplnMtnAddState + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + U + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + N + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + + + + + + + ApplnMtnAddCountry + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + U + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + N + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + + + + + + + ApplnMtnEduIns + + + HrmRecApplnMtnEduDtl + + + Q + HrmFacade + getHrmPersDtlInstCodeLOV + N + + + U + HrmFacade + getHrmPersDtlInstCodeLOV + N + + + N + HrmFacade + getHrmPersDtlInstCodeLOV + N + + + + + + + + + ApplnMtnEduQual + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnMtnKnowCodeLOV + N + + + U + HrmFacade + getHrmEmpPersEduDtlsQualLOVdata + N + + + N + HrmFacade + getHrmEmpPersEduDtlsQualLOVdata + N + + + + + + + + + ApplnMtnExpDesig + + + HrmRecApplnMtnExpDtl + + + Q + HrmFacade + getHrmPersDtlDesgCodeLOV + N + + + U + HrmFacade + getHrmPersDtlDesgCodeLOV + N + + + N + HrmFacade + getHrmPersDtlDesgCodeLOV + N + + + + + + + + + ApplnMtnExpSkill + + + HrmRecApplnMtnExpDtl + + + Q + HrmFacade + getHrmPersDtlSkillCodeLOV + N + + + U + HrmFacade + getHrmPersDtlSkillCodeLOV + N + + + N + HrmFacade + getHrmPersDtlSkillCodeLOV + N + + + + + + + + + + ApplnMtnLangCode + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnLangCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnLangCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnLangCodeLOVData + N + + + + + + + + + ApplnMtnExpKnow + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnKnowCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnKnowCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnKnowCodeLOVData + N + + + + + + + + + ApplnMtnResultTest + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnTestCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnTestCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnMtnTestCodeLOV + N + + + + + + + + + + ApplnMtnPerMotherToungue + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + + + + + + + ApplnMtnPerResvCat + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnResvCatCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnResvCatCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnResvCatCodeLOVData + N + + + + + + + + + ApplnMtnPerMarStatus + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + + + + + + + + + + RecScrutRefNo + + + HrmScrutinizingApplicant + + + U + HrmSecondFacade + getRefNoLOVdataNmode + N + + + Q + HrmSecondFacade + getRefNoLOVdataNmode + N + + + N + HrmSecondFacade + getRefNoLOVdataNmode + N + + + + + + + + + DesigNo + + + HrmScrutinizingApplicant + + + U + HrmSecondFacade + getDesigNoLOVdata + N + + + Q + HrmSecondFacade + getDesigNoLOVdata + N + + + N + HrmSecondFacade + getDesigNoLOVdata + N + + + + + + + + + + ApplnMtnPerNationality + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + + + + + + + + + RecCrnApplnNo + + + HrmEmpRecCreation + + + Q + HrmSecondFacade + getHrmRecCrnApplnNoLOVdata + N + + + + + + + + RecCrnEntryMode + + + HrmEmpRecCreation + + + U + HrmFacade + getHrmEmpPersJoinInfEntryLOVdata + N + + + Q + HrmFacade + getHrmEmpPersJoinInfEntryLOVdata + N + + + + + + + + RecCrnMotherTongue + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnMotherTongueLOVdata + N + + + + + + + + + RecCrnNationality + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnNationalityLOVdata + N + + + + + + + + RecCrnMarital + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnMaritalStatusLOVdata + N + + + + + + + + RecCrnReservation + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnReservationCtgLOVdata + N + + + + + + + + RecCrnReligion + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnReligionLOVdata + N + + + + + + + + RecCrnPrCountry + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCountryLOVdata + N + + + + + + + + RecCrnPrState + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnStateLOVdata + N + + + + + + + + + RecCrnPeCountry + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCountryLOVdata + N + + + + + + + + RecCrnPeState + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnStateLOVdata + N + + + + + + + + RecCrnOffCountry + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCountryLOVdata + N + + + + + + + + RecCrnOffState + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnStateLOVdata + N + + + + + + + + RecCrnBaseSite + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnBaseSiteLOVdata + N + + + + + + + + RecCrnDesignation + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnDesignationLOVdata + N + + + + + + + + + RecCrnEmployeeType + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnEmployeeTypeLOVdata + N + + + + + + + + RecCrnScale + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnScaleLOVdata + N + + + + + + + + RecCrnGrade + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnGradeLOVdata + N + + + + + + + + + RecCrnCostCenter + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCostCentreLOVdata + N + + + + + + + + RecCrnJoiningGroup + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnJoiningGroupLOVdata + N + + + + + + + + RecCrnTech + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnTechNonTechLOVdata + N + + + + + + + HrmRecAdvRefNo + + + HrmRecAdvAttrForm + + + Q + HrmSecondFacade + getHrmRecAttrRefLOVData + N + + + N + HrmSecondFacade + getHrmRecAttrRefLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrRefLOVData + N + + + + + + + + HrmRecAdvPositionNo + + + HrmRecAdvAttrForm + + + Q + HrmSecondFacade + getHrmRecAttrPositionLOVData + N + + + N + HrmSecondFacade + getHrmRecAttrPositionLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrPositionLOVData + N + + + + + + + + + + + HrmLCForm + + + HrmLnChart + + + Q + HrmFacade + getHrmLoanChartNameLOVdata + N + + + + + + + + + + HrmLoanCode + + + HrmLnMst + + + Q + HrmFacade + getHrmLoanCodeLOVdata + N + + + N + HrmFacade + getHrmLoanCodeLOVdataNew + N + + + + + + + + HrmChartCode + + + HrmLnMst + + + Q + HrmFacade + getHrmChartNameLOVdata + N + + + N + HrmFacade + getHrmChartNameLOVdataNew + N + + + U + HrmFacade + getHrmChartNameLOVdata + N + + + + + + + + + + + + + LnAppEmpNo + + + HrmLnAppForm + + + Q + HrmFacade + getHrmLnAppEmpNoQLOVdata + N + + + N + HrmFacade + getHrmLnAppEmpNoLOVdata + N + + + + + + + + LnAppApproverNo + + + HrmLnAppForm + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + LnAppLoanCode + + + HrmLnAppForm + + + Q + HrmFacade + getHrmLnAppLOVdata + N + + + N + HrmFacade + getHrmLnAppInsLOVdata + N + + + U + HrmFacade + getHrmLnAppInsLOVdata + N + + + + + + + + LnAppLoanCode + + + HrmLnDisDtl + + + Q + HrmFacade + getHrmLnAppLOVdata + N + + + N + HrmFacade + getHrmLnAppInsLOVdata + N + + + + + + + + + + AdvanceCode + + + HrmAdvanceMaster + + + Q + HrmFacade + getHrmAdvMstCodeLOVdata + N + + + N + HrmFacade + getHrmAdvMstCodeInsLOVdata + N + + + U + HrmFacade + getHrmAdvMstCodeInsLOVdata + N + + + + + + + + AdvanceDescription + + + HrmSettlementHeads + + + Q + HrmFacade + getHrmSettleHeadsLOVdata + N + + + N + HrmFacade + getHrmSettleHeadsLOVdata + N + + + U + HrmFacade + getHrmSettleHeadsLOVdata + N + + + + + + + + + + CalendarCode + + + HrmAdvanceMaster + + + Q + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + N + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + U + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + + + + + + + EmpAdvanceCode + + + HrmEmpAdvance + + + Q + HrmFacade + getHrmAdvAppAdvCdLOVdata + N + + + N + HrmFacade + getHrmAdvAppAdvCdInsLOVdata + N + + + U + HrmFacade + getHrmAdvAppAdvCdInsLOVdata + N + + + + + + + + + AdvAppEmpNo + + + HrmEmpAdvance + + + Q + HrmFacade + getHrmAdvAppEmpNoLOVdata + N + + + N + HrmFacade + getHrmAdvAppInsEmpNoLOVdata + N + + + + + + + + + AdvAppApproverNo + + + HrmEmpAdvance + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + SettleAdvanceCode + + + HrmAdvanceSettle + + + Q + HrmFacade + getHrmAdvSettleAdvCdLOVdata + N + + + N + HrmFacade + getHrmAdvSettleAdvCdLOVdata + N + + + U + HrmFacade + getHrmAdvSettleAdvCdLOVdata + N + + + + + + + + AdvSettleEmpNo + + + HrmAdvanceSettle + + + Q + HrmFacade + getHrmLnAppEmpNoLOVdata + N + + + N + HrmFacade + getHrmLnAppEmpNoLOVdata + N + + + + + + + + + HrmClaimCode + + + HrmClaimMst + + + Q + HrmFacade + getHrmClaimCodeLOVdata + N + + + + + + + + + HrmClaimCode + + + HrmClaimMst + + + Q + HrmFacade + getHrmClaimCodeLOVdata + N + + + + + + + + + + ClaimCalendarCode + + + HrmClaimMst + + + Q + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + N + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + U + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + + + + + + HrmEmpClaimCode + + + HrmEmpClaim + + + Q + HrmFacade + getHrmEmpClaimCodeLOVdata + N + + + U + HrmFacade + getHrmEmpClaimCodeLOVdata + N + + + + + + + + HrmEmpClaimNo + + + HrmEmpClaim + + + Q + HrmFacade + getHrmEmpClaimNoLOVdata + N + + + U + HrmFacade + getHrmEmpClaimNoLOVdata + N + + + + + + + + + HrmEmpClaimLovEmpNo + + + HrmEmpClaim + + + Q + HrmFacade + getHrmEmpEmpNoLOVdata + N + + + U + HrmFacade + getHrmEmpEmpNoLOVdata + N + + + + + + + + + + HrmEmpClaimApproverNo + + + HrmEmpClaim + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + HrmEmpClaimEmpNo + + + HrmEmpClaim + + + N + HrmFacade + getHrmEmpClaimEmpLOVdata + N + + + U + HrmFacade + getHrmEmpClaimEmpLOVdata + N + + + + + + + + + HrmEmpClaimDtlClaimCode + + + HrmEmpClaim + + + U + HrmFacade + getHrmEmpClaimDtlCodeLOVdata + N + + + + + + + + + TrgMstBranchCode + + + HrmTrngCrsMst + + + Q + HrmSecondFacade + getHrmTrgMstBranchCodeLOVdataQmode + N + + + + + + + + TrgInstCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgInstCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmTrgInstCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmTrgInstCodeLOVdataQmode + N + + + + + + + + + TrgCourseCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + N + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + U + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + + + + + + + + TrgInstCountryCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgCountryCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmTrgCountryCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmTrgCountryCodeLOVdataQmode + N + + + + + + + + TrgInstCityCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgCityCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmTrgCityCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmTrgCityCodeLOVdataQmode + N + + + + + + + + TrngReqCourse + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqCourseLOVData + N + + + U + HrmSecondFacade + getHrmTrgReqCourseLOVData + N + + + + + + + + + TrngReqCal + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + U + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + + + + + + TrngReqRecommender + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + U + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + + + + + + TrngReqEmployee + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getEmployeeCodeLOVdataQ + N + + + N + HrmSecondFacade + getEmployeeCodeLOVdataN + N + + + U + HrmSecondFacade + getEmployeeCodeLOVdataN + N + + + + + + + + TrgFacMstEmpNo + + + HrmTrngFacMst + + + Q + HrmSecondFacade + getHrmTrgFacMstEmpNoLOVNmode + N + + + N + HrmSecondFacade + getHrmTrgFacMstEmpNoLOVNmode + N + + + U + HrmSecondFacade + getHrmTrgFacMstEmpNoLOVNmode + N + + + + + + + + TrgFacMstBaseInst + + + HrmTrngFacMst + + + Q + HrmSecondFacade + getHrmTrgFacMstBaseInstLOVQmode + N + + + N + HrmSecondFacade + getHrmTrgFacMstBaseInstLOVQmode + N + + + U + HrmSecondFacade + getHrmTrgFacMstBaseInstLOVQmode + N + + + + + + + + TrngEmpFBCrsName + + + HrmTrngEmpFeedBack + + + Q + HrmSecondFacade + getHrmTrngCourseLOV + N + + + + + + + + TrngFacultyName + + + HrmTrngEmpFeedBack + + + U + HrmSecondFacade + getHrmTrngFacultyLOV + N + + + + + + + + + TrngFdbkRatingHelp + + + HrmTrngEmpFeedBack + + + U + HrmSecondFacade + getHrmTrngFdbkRatingHelpLOVData + N + + + + + + + + TrngFacFBCrsName + + + HrmTrngFacFeedBack + + + Q + HrmSecondFacade + getHrmTrngCalDetailLOV + N + + + U + HrmSecondFacade + getHrmTrngCalDetailLOV + N + + + + + + + + + + FacultyName + + + HrmTrngFacFeedBack + + + Q + HrmSecondFacade + getHrmFacNameLOV + N + + + + + + + + TrngBudgetCode + + + HrmTrngBudget + + + Q + HrmSecondFacade + getHrmTrngBudCodeLOVdata + N + + + + + + + TrngCalNameLOV + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + N + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + + + + + + TrngSiteLOV + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + N + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + U + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + + + + + + + TrngInsName + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngCalInstLOVdata + N + + + N + HrmSecondFacade + getHrmTrngCalInstLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalInstLOVdata + N + + + + + + + + TrngCrsCdLOV + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngCalCrsCdLOVdata + N + + + N + HrmSecondFacade + getHrmTrngCalCrsCdLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalCrsCdLOVdata + N + + + + + + + + TrngRating + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngRatingLOVdata + N + + + N + HrmSecondFacade + getHrmTrngRatingLOVdata + N + + + U + HrmSecondFacade + getHrmTrngRatingLOVdata + N + + + + + + + + + + TrngFacSiteLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + U + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + + + + + + TrngFacCalNameLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + + + + + + TrngFacNameLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngFacultyLOVdata + N + + + N + HrmSecondFacade + getHrmTrngFacultyLOVdata + N + + + U + HrmSecondFacade + getHrmTrngFacultyLOVdata + N + + + + + + + + + + + TrngFacCrsInsLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngCrsInsNameLOV + N + + + + + + + + + TrngReqEmpLOV + + + HrmTrainingReq + + + Q + HrmSecondFacade + getHrmTrngReqEmpLOV + N + + + + + + + + TrngClsCalCrsCode + + + HrmClsTrngCal + + + Q + HrmSecondFacade + getHrmClsCalCrsLOV + N + + + + + + + TrngEmpHistEmpLOV + + + RepTrainingDetailsScreen + + + Q + HrmSecondFacade + getHrmEmpHistEmpLOV + N + + + + + + + TrngEmpHistEmpLOV + + + HrmTrngEmpHist + + + Q + HrmSecondFacade + getHrmEmpHistEmpLOV + N + + + + + + + + TrngEmpHistCalLOV + + + HrmTrngEmpHist + + + Q + HrmSecondFacade + getHrmEmpHistCalLOV + N + + + + + + + + TrngEmpHistCrsLOV + + + HrmTrngEmpHist + + + Q + HrmSecondFacade + getHrmEmpHistCrsLOV + N + + + + + + + + AttendanceDtl + + + HrmTrngEmpHist + + + U + HrmSecondFacade + getHrmAttendanceDtlLOV + N + + + + + + + + HrmTrngEmpAttCrs + + + HrmTrngEmpAtt + + + Q + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + U + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + + + + + + TrngCalClose + + + HrmTrngCalClose + + + Q + HrmSecondFacade + getHrmCalCloseCrsNameLOVdata + N + + + N + HrmSecondFacade + getHrmCalCloseCrsNameLOVdata + N + + + U + HrmSecondFacade + getHrmCalCloseCrsNameLOVdata + N + + + + + + + + TrngBudgetCourseCode + + + HrmTrngBudget + + + U + HrmSecondFacade + getHrmTrngBudCourseCodeLOVdata + N + + + + + + + + + TrngBudgetCalCode + + + HrmTrngBudget + + + Q + HrmSecondFacade + getHrmTrngBudCalendarCodeLOVdata + N + + + U + HrmSecondFacade + getHrmTrngBudCalendarCodeLOVdata + N + + + N + HrmSecondFacade + getHrmTrngBudCalendarCodeLOVdata + N + + + + + + + + + AprslRatingLv0 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating0LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating0LOVdata + N + + + + + + + + + AprslRatingLv1 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating1LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating1LOVdata + N + + + + + + + + + AprslRatingLv2 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating2LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating2LOVdata + N + + + + + + + + AprslRatingLv3 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating3LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating3LOVdata + N + + + + + + + + AprslRatingLv4 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating4LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating4LOVdata + N + + + + + + + + AprslRatingLv5 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating5LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating5LOVdata + N + + + + + + + + + EmpAprslStartOrder + + + HrmAprslKPA + + + Q + HrmThirdFacade + getEmpAprslStOrderLOVQ + N + + + N + HrmThirdFacade + getEmpAprslStOrderLOVI + N + + + + + HrmAprslGoals + + + Q + HrmThirdFacade + getEmpAprslStOrderLOVQ + N + + + N + HrmThirdFacade + getEmpAprslStOrderLOVI + N + + + + + HrmAprslTrngReq + + + Q + HrmThirdFacade + getEmpAprslStOrderLOVQ + N + + + N + HrmThirdFacade + getEmpAprslStOrderLOVI + N + + + + + + + + + AprslTrngReqCourse + + + HrmAprslTrngReq + + + U + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + N + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + + + + + + + AprslTrngReqCal + + + HrmAprslTrngReq + + + U + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + + + + + + AprslTrngReqRecommender + + + HrmAprslTrngReq + + + U + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + + + + + + + AppraisalKPAGroupCode + + + HrmAppraisalKPA + + + Q + HrmThirdFacade + getQueryAppraisalWorkGrpLOVData + N + + + U + HrmThirdFacade + getQueryAppraisalWorkGrpLOVData + N + + + N + HrmThirdFacade + getQueryAppraisalWorkGrpLOVData + N + + + + + + + + + AprslSplTempName + + + HrmAprslSpcTmpl + + + Q + HrmThirdFacade + getQuerySpcTemplateData + N + + + U + HrmThirdFacade + getQuerySpcTemplateData + N + + + N + HrmThirdFacade + getQuerySpcTemplateData + N + + + + + HrmAprslSpcTmplEmpElig + + + Q + HrmThirdFacade + getQuerySpcTemplateData + N + + + U + HrmThirdFacade + getQuerySpcTemplateData + N + + + N + HrmThirdFacade + getQuerySpcTemplateData + N + + + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getQuerySpcTemplateData + N + + + U + HrmThirdFacade + getQuerySpcTemplateData + N + + + N + HrmThirdFacade + getQuerySpcTemplateData + N + + + + + + + + AprslTempName + + + HrmAprslSpcTmpl + + + Q + HrmThirdFacade + getQueryTemplateData + N + + + U + HrmThirdFacade + getTemplateData + N + + + N + HrmThirdFacade + getTemplateData + N + + + + + HrmAprslSpcTmplEmpElig + + + Q + HrmThirdFacade + getQueryTemplateData + N + + + U + HrmThirdFacade + getTemplateData + N + + + N + HrmThirdFacade + getTemplateData + N + + + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getQueryTemplateData + N + + + U + HrmThirdFacade + getTemplateData + N + + + N + HrmThirdFacade + getTemplateData + N + + + + + + + + AprslSpcClsHdr + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + + + + AprslSpcClsDtl + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + + + + AprslSpcSiteCode + + + HrmAprslSpcTmpl + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + + + + AprslSpcDeptCode + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + + + + + AprslSpcEmpNo + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getSpcEmployeeLOVData + N + + + N + HrmThirdFacade + getSpcEmployeeLOVData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmThirdFacade + getSpcEmployeeLOVData + N + + + N + HrmThirdFacade + getSpcEmployeeLOVData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getSpcEmployeeLOVData + N + + + N + HrmThirdFacade + getSpcEmployeeLOVData + N + + + + + + + + + AprslStartOrd + + + HrmAprslSpcTmpl + + + Q + HrmThirdFacade + getQueryStartOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getQueryStartOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + HrmAprslSpcTmplEmpElig + + + Q + HrmThirdFacade + getQueryStartOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + + + + AprslGoalSecCode + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getTempSectionData + N + + + U + HrmThirdFacade + getTempSectionData + N + + + N + HrmThirdFacade + getTempSectionData + N + + + + + + + + AprslStartOrderNo + + + HrmAprslStartOrder + + + Q + HrmThirdFacade + getHrmAprslStOrderNoLOVQrydata + N + + + + + + + + AprslStRuleStOrd + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQueryStOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + + + + AprslStRuleEmpl + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQueryEmployeeLOVData + N + + + U + HrmThirdFacade + getEmployeeLOVData + N + + + N + HrmThirdFacade + getEmployeeLOVData + N + + + + + + + + AprslStRuleWrkGrp + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQueryWrkGrpLOVData + N + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + + + + + AprslStRuleSiteCode + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQuerySiteCodeLOVData + N + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + + + + + AprslStRuleClsHdr + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getClsMstDataQ + N + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + + + + + AprslStRuleClsDtl + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getClsDtlDataQ + N + + + U + HrmThirdFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + + + + AprslKPA + + + HrmAppraisalTemplateKPA + + + U + HrmThirdFacade + getHrmAprslKPALOV + N + + + + + + + AprslRatingCode + + + HrmAppraisalTemplateSection + + + U + HrmFacade + getHrmRatingCodeLOVdata + N + + + Q + HrmThirdFacade + getAprslTmplRatingCodeQLOV + N + + + N + HrmFacade + getHrmRatingCodeLOVdata + N + + + + + + + AprslRatingCodeKPA + + + HrmAppraisalTemplateKPA + + + U + HrmFacade + getHrmRatingCodeLOVdata + N + + + Q + HrmThirdFacade + getAprslTmplRatingCodeQLOV + N + + + N + HrmFacade + getHrmRatingCodeLOVdata + N + + + + + + + + AprslTemplNameKPA + + + HrmAppraisalTemplateSection + + + Q + HrmThirdFacade + getHrmAprslTempNameQLOV + N + + + U + HrmThirdFacade + getHrmAprslTempNameQLOV + N + + + N + HrmThirdFacade + getHrmAprslTempNameQLOV + N + + + + + + + + AprslParentCode + + + HrmAppraisalTemplateSection + + + U + HrmThirdFacade + getHrmAprslParentCodeLOV + N + + + Q + HrmThirdFacade + getHrmAprslParentCodeLOV + N + + + N + HrmThirdFacade + getHrmAprslParentCodeLOV + N + + + + + + + AprslEmpNo + + + HrmAprslEmployee + + + Q + HrmThirdFacade + getHrmAprslEmpNoLOVData + N + + + + + + + SepEmpNo + + + HrmSeparationAppln + + + Q + HrmFacade + getSepEmpNoQLOVData + N + + + N + HrmFacade + getSepEmpNoNLOVData + N + + + + + + + + + SepApplnNo + + + HrmSeparationAppln + + + Q + HrmFacade + getHrmSepApplnNoLOVdata + N + + + + + + + + + SepCategory + + + HrmSeparationAppln + + + N + HrmFacade + getHrmSepCategoryLOVdata + N + + + + + + + + + + SepOrderNo + + + HrmSepOrder + + + Q + HrmFacade + getHrmSepOrderNoLOVdata + N + + + + + + + + + SepOrdApplnNo + + + HrmSepOrder + + + N + HrmFacade + getHrmSepOrderApplnNoLOVdata + N + + + Q + HrmFacade + getHrmSepOrderApplnNoLOVQdata + N + + + + + + + + + SepApprNo + + + HrmSepOrder + + + N + HrmFacade + getSepApprNameLOVData + N + + + + + + + + SeparationCode + + + HrmSepCatMst + + + Q + HrmFacade + getHrmSeparationCodeLOV + N + + + + + + + + + EmpNo + + + HrmSepClrEmp + + + Q + HrmFacade + getHrmSepClrEmpEmpNoLOVQ + N + + + N + HrmFacade + getHrmSepClrEmpEmpNoLOVN + N + + + + + + + + TmplDesc + + + HrmSepClrEmp + + + Q + HrmFacade + getHrmSepClrEmpTmplLOV + N + + + N + HrmFacade + getHrmSepClrEmpTmplLOV + N + + + + + + + + + HrmClrDesc + + + HrmSepClrTmplMst + + + Q + HrmFacade + getHrmSepClrLOV + N + + + U + HrmFacade + getHrmSepClrLOV + N + + + + + + + + HrmTmplDesc + + + HrmSepClrTmplMst + + + Q + HrmFacade + getHrmSepTmplLOV + N + + + + + + + + + + + + + PrmNoticeDtlNotNo + + + HrmPrmNoticeDtl + + + Q + HrmSecondFacade + getHrmPrmNoticeNoLOVData + N + + + U + HrmSecondFacade + getHrmPrmNoticeNoLOVData + N + + + + + + + + + + PromOrdEmpNo + + + HrmPrmOrder + + + Q + HrmSecondFacade + getPromOrderEmpNoQLOVData + N + + + N + HrmSecondFacade + getPromOrderEmpNoNLOVData + N + + + + + + + + + + PromOrdOrderNo + + + HrmPrmOrder + + + Q + HrmSecondFacade + getPromOrderNoQLOVData + N + + + + + + + + + + PromOrdToGrade + + + HrmPrmOrder + + + N + HrmSecondFacade + getPromToGradeNLOVData + N + + + + + + + + + + PromOrdToDesig + + + HrmPrmOrder + + + N + HrmSecondFacade + getPromToDesignationNLOVData + N + + + + + + + + + + PromOrdApprNo + + + HrmPrmOrder + + + N + HrmFacade + getSepApprNameLOVData + N + + + + + + + + PrmKPARatNo + + + HrmPrmKPARatingForm + + + N + HrmSecondFacade + getRatingCodeLOVData + N + + + Q + HrmSecondFacade + getRatNoLOVQdata + N + + + + + + + + PrmKPAGrpNo + + + HrmPrmKPARatingForm + + + U + HrmSecondFacade + getKPAGrpCodeLOVData + N + + + + + + + + + PrmKPAGrade + + + HrmPrmKPARatingForm + + + N + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmKPADesig + + + HrmPrmKPARatingForm + + + N + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmTestScrGrade + + + HrmPrmTestScoreForm + + + N + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmTestScrDesig + + + HrmPrmTestScoreForm + + + N + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmExpScrGrade + + + HrmPrmExperienceScoreForm + + + Q + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmExpScrDesig + + + HrmPrmExperienceScoreForm + + + Q + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmQualification + + + HrmPrmQualCriteria + + + N + HrmSecondFacade + getHrmPrmQualificationLOVdata + N + + + U + HrmSecondFacade + getHrmPrmQualificationLOVdata + N + + + + + + + + + PrmQualGrade + + + HrmPrmQualCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmQualDesig + + + HrmPrmQualCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmPromFromGrade + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingFromGradeNLOVData + N + + + + + + + + PrmPromFromDesig + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingFromDesignationNLOVData + N + + + U + HrmSecondFacade + getPromKPARatingFromDesignationNLOVData + N + + + + + + + + PrmPromToGrade + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingToGradeNLOVData + N + + + + + + + + + PrmPromToDesig + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingToDesignationNLOVData + N + + + U + HrmSecondFacade + getPromKPARatingToDesignationNLOVData + N + + + + + + + + HrmPrmViewAssSiteCode + + + HrmPrmViewAss + + + Q + HrmSecondFacade + getPrmViewAssSiteCodeLOVData + N + + + + + + + + HrmPrmViewAssNoticeCode + + + HrmPrmViewAss + + + Q + HrmSecondFacade + getPrmViewAssNoticeCodeLOVData + N + + + + + + + + HrmPrmViewAssPromotionCode + + + HrmPrmViewAss + + + Q + HrmSecondFacade + getPrmViewAssPromotionCodeLOVData + N + + + + + + + + HrmPrmEmployeeNo + + + HrmPrmViewAss + + + U + HrmSecondFacade + getPrmEmployeeNoLOVData + N + + + N + HrmSecondFacade + getPrmEmployeeNoLOVData + N + + + + + + + + HrmPrmDtlPositionCode + + + HrmPrmViewAss + + + U + HrmSecondFacade + getPrmViewAssPosCodeLOVData + N + + + N + HrmSecondFacade + getPrmViewAssPosCodeLOVData + N + + + + + + + + + PrmNotGrade + + + HrmPrmNoticeForm + + + U + HrmSecondFacade + getPromNotGradeNLOVData + N + + + + + + + + PrmNotDesig + + + HrmPrmNoticeForm + + + U + HrmSecondFacade + getPromNotDesignationNLOVData + N + + + + + + + + + HrmPrmNo + + + HrmPrmGenAss + + + Q + HrmSecondFacade + getPrmGenAssPrmNoLOVData + N + + + N + HrmSecondFacade + getPrmGenAssPrmNoLOVData + N + + + + + + + + Site + + + HrmPrmGenAss + + + Q + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + N + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + U + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + + + + + + + + + + + + + RepConfirmationDue + + + RepConfirmationDueScreen + + + Q + HrmFacade + getYYMMReportLOVData + N + + + + + + + + RepStaffingListEmp + + + RepStaffingListEmpScreen + + + Q + HrmFacade + getDesigIdReportLOVData + Q + + + + + + + + RepGrossSalExec + + + RepGrossSalExecScreen + + + Q + HrmFacade + getYYMMReportLOVData + Q + + + + + + + + RepCessationList + + + RepCessationListScreen + + + Q + HrmFacade + getYYMMReportLOVData + Q + + + + + + + + + + + + HrmAttShftCode + + + HrmAttEmpAttIn + + + Q + HrmSecondFacade + getHrmAttEmpShftCodeLOV + N + + + U + HrmSecondFacade + getHrmAttEmpShftCodeLOV + U + + + N + HrmSecondFacade + getHrmAttEmpShftCodeLOV + U + + + + + + + + HrmAttQueryShftCode + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttQueryEmpShftCodeLOV + N + + + U + HrmSecondFacade + getHrmAttQueryEmpShftCodeLOV + U + + + N + HrmSecondFacade + getHrmAttQueryEmpShftCodeLOV + U + + + + + + + + HrmAttLocation + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttQueryLocationLOV + N + + + U + HrmSecondFacade + getHrmAttQueryLocationLOV + N + + + + + + + HrmAttQueryDtlEmpNo + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttQueryDtlEmpLOV + N + + + U + HrmSecondFacade + getHrmAttQueryDtlEmpLOV + N + + + + + + + HrmAttEmpNo + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttEmployeeLOV + N + + + U + HrmSecondFacade + getHrmAttEmployeeLOV + U + + + + + + + + AttEmpNo + + + HrmAttEmpDayOff + + + Q + HrmSecondFacade + getHrmAttEmpNoDayOffQueryLOVdata + N + + + N + HrmSecondFacade + getHrmAttEmpNoDayOffInsertLOVdata + N + + + + + + + + AttEmpNoDtl + + + HrmAttEmpDayOff + + + N + HrmFacade + getHrmPersDtlEmpNoLOVdata + N + + + U + HrmFacade + getHrmPersDtlEmpNoLOVdata + N + + + + + + + + HrmAttSftRoster + + + HrmAttEmpShiftRoster + + + Q + HrmFacade + getHrmWorkGroupCodeLOVdata + N + + + + + + + HrmAttSiteCode + + + HrmAttEmpShiftRoster + + + Q + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + U + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + + HrmAttEmpSftRoster + + + HrmAttEmpShiftRoster + + + Q + HrmFacade + getHrmEncshEmpLOVdata + N + + + U + HrmFacade + getHrmEncshEmpLOVdata + N + + + + + + + + + + + HrmAttSftRosterGenSiteCode + + + HrmAttShiftRosterGen + + + Q + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + N + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + + RosterGenWorkGroup + + + HrmAttShiftRosterGen + + + Q + HrmSecondFacade + getShiftRosterGenWorkGrpLOVData + N + + + N + HrmSecondFacade + getShiftRosterGenWorkGrpLOVData + N + + + + + + + + + ShiftCode + + + HrmAttWorkGroupShift + + + Q + HrmSecondFacade + getHrmAttWorkGrpShiftCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttWorkGrpShiftCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmAttWorkGrpShiftCodeLOVdataQmode + N + + + + + + + + + EmpNo + + + HrmAttEmpShift + + + Q + HrmSecondFacade + getHrmAttESEmpNoLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttESEmpNoLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttESEmpNoLOVdataNmode + N + + + + + + + + + ShiftCode + + + HrmAttEmpShift + + + Q + HrmSecondFacade + getHrmAttESShiftCodeLOVdataNmode + N + + + N + HrmSecondFacade + getHrmAttESShiftCodeLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttESShiftCodeLOVdataNmode + N + + + + + + + + + HrmAttSftMst + + + HrmAttShiftMst + + + Q + HrmSecondFacade + getShiftCodeLOVData + N + + + N + HrmSecondFacade + getShiftCodeLOVData + N + + + U + HrmSecondFacade + getShiftCodeLOVData + N + + + + + + + AttWorkGroup + + + HrmAttWorkGroupDayOff + + + Q + HrmSecondFacade + getHrmAttWorkGroupQueryLOVdata + N + + + N + HrmSecondFacade + getHrmAttWorkGroupInsertLOVdata + N + + + + + + + + AttSite + + + HrmAttWorkGroupDayOff + + + Q + HrmSecondFacade + getHrmAttWorkGroupSiteQueryLOVdata + N + + + N + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + SiteCode + + + HrmAttWorkGroupShift + + + Q + HrmSecondFacade + getHrmAttWorkGrpSiteCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttWorkGrpSiteCodeLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttWorkGrpSiteCodeLOVdataNmode + N + + + + + + + + + WrkGroupCode + + + HrmAttWorkGroupShift + + + Q + HrmSecondFacade + getHrmAttWorkGrpCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttWorkGrpCodeLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttWorkGrpCodeLOVdataQmode + N + + + + + + + + + + HrmMisRepPost + + + HrmMisReport + + + Q + HrmFacade + getMisPositionLOVData + N + + + N + HrmFacade + getMisPositionLOVData + N + + + U + HrmFacade + getMisPositionLOVData + N + + + + + + + + HrmMisRepYYYYMM + + + HrmMisReport + + + Q + HrmFacade + getMisYearMonthLOVData + N + + + N + HrmFacade + getMisYearMonthLOVData + N + + + U + HrmFacade + getMisYearMonthLOVData + N + + + + + + + + + + HrmMediClaimClass + + + HrmMediclaimMaster + + + Q + HrmFacade + getHrmMediClassLOVdata + N + + + N + HrmFacade + getHrmMediClassLOVdata + N + + + U + HrmFacade + getHrmMediClassLOVdata + N + + + + + + + + HrmMediClaimCadre + + + HrmMediclaimMaster + + + Q + HrmFacade + getHrmMediCadreLOVdata + N + + + N + HrmFacade + getHrmMediCadreLOVdata + N + + + U + HrmFacade + getHrmMediCadreLOVdata + N + + + + + + + + WorkId + + + HrmMyWorkflow + + + Q + HrmFacade + getWorkIdLOVdata + N + + + N + HrmFacade + getWorkIdLOVdata + N + + + + + + + QueryCode + + + HrmAdhocReport + + + Q + HrmSecondFacade + getQueryLOVData + N + + + + + + + + RstrEtySocialStatus + + + HrmRoasterEntry + + + U + HrmSecondFacade + getRstrSocialStatusLOVdata + N + + + Q + HrmSecondFacade + getRstrSocialStatusLOVdata + N + + + N + HrmSecondFacade + getRstrSocialStatusLOVdata + N + + + + + + + + RoasterCode + + + HrmRoasterEntry + + + Q + HrmSecondFacade + getRstrCodeLOVdata + N + + + N + HrmSecondFacade + getRstrCodeLOVdata + N + + + + + + + + RoasterEmpdetailsCode + + + HrmRoasterEntry + + + U + HrmSecondFacade + getRoasterEmpDetailsLOVdata + N + + + Q + HrmSecondFacade + getRoasterEmpDetailsLOVdata + N + + + N + HrmSecondFacade + getRoasterEmpDetailsLOVdata + N + + + + + + \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/EnrgiseReport.xml b/hrmsWeb/WEB-INF/EnrgiseReport.xml new file mode 100644 index 0000000..b65d2e9 --- /dev/null +++ b/hrmsWeb/WEB-INF/EnrgiseReport.xml @@ -0,0 +1,337 @@ + + + + Hrms + + + + RepAllIndiaManpowerScreen + + + RepAllIndiaManpowerKey + hrmRepAllIndiaManpowerReport + + + + + + HrmLvAppln + + + EmpLeaveLedgerKey + hrmEmpLeaveLedgerReport + + + + + + + RepConfirmationDueScreen + + + RepConfirmationDueKey + hrmRepConfirmationDueReport + + + + + + + RepQualAllIndiaEmpScreen + + + RepQualAllIndiaEmpKey + hrmRepQualAllIndiaEmpReport + + + + + + + + RepGrossSalExecScreen + + + RepGrossSalExecKey + hrmRepGrossSalExecReport + + + + + + + RepCostToCompanyScreen + + + RepCostToCompanyFileKey + hrmRepCostToCompanyFileReport + + + + + + + RepPromotionListScreen + + + RepPromotionListKey + hrmRepPromotionListReport + + + + + + + RepPerformanceAppraisalScreen + + + RepPerformanceAppraisalKey + hrmRepPerformanceAppraisalReport + + + + + + + RepOfficersRatedPoorScreen + + + RepOfficersRatedPoorKey + hrmRepOfficersRatedPoorReport + + + + + + + + RepRatingVisAVisAwardScreen + + + RepRatingVisAVisAwardKey + hrmRepRatingVisAVisAwardReport + + + + + + + + RepConfidentialFileScreen + + + RepConfidentialFileKey + hrmRepConfidentialFileReport + + + + + + + RepTrainingDetailsScreen + + + RepTrainingDetailsKey + hrmRepTrainingDetailsReport + + + + + + + + RepMTExecDetailsScreen + + + RepMTExecDetailsKey + hrmRepMTExecDetailsReport + + + + + + + + RepRetirementDetailsScreen + + + RepRetirementDetailsKey + hrmRepRetirementDetailsReport + + + + + + + RepCessationListScreen + + + RepCessationListKey + hrmRepCessationListReport + + + + + + + RepRecruitmentListScreen + + + RepRecruitmentListKey + hrmRepRecruitmentListReport + + + + + + + + RepRecrVisAVisSepScreen + + + RepRecrVisAVisSepKey + hrmRepRecrVisAVisSepReport + + + + + + + + RepRecrCessStatusScreen + + + RepRecrCessStatusKey + hrmRepRecrCessStatusReport + + + + + + + + RepJoiningStatusScreen + + + RepJoiningStatusKey + hrmRepJoiningStatusReport + + + + + + + + RepHistOfEmpScreen + + + RepHistOfEmpKey + hrmRepHistOfEmpReport + + + + + + + RepStatusOfDiscCasesScreen + + + RepStatusOfDiscCasesKey + hrmRepStatusOfDiscCasesReport + + + + + + + + RepStaffingListEmpScreen + + + RepStaffingListEmpKey + hrmRepStaffingListEmpReport + + + + + + + + RepImpactFinYearScreen + + + RepImpactFinYearKey + hrmRepImpactFinYearReport + + + + + + + RepManpowerMediclaimScreen + + + RepManpowerMediclaimKey + hrmRepManpowerMediclaimReport + + + + + + + + RepDistnOfManpowerScreen + + + RepDistnOfManpowerKey + hrmRepDistnOfManpowerReport + + + + + + + HrmMisReport + + + RepHrmMisReportKey + hrmRepMisReport + + + + + + + HrmRetFrcst + + + RepHrmRetireForecastReportKey + hrmRepRetireForecastReport + + + + + + + HrmAgeAnalysis + + + RepHrmAgeAnalysisReportKey + hrmRepAgeAnalysisReport + + + + + + + HrmAcademicQual + + + RepHrmAcademicQualReportKey + hrmRepAcademicQualReport + + + + + + diff --git a/hrmsWeb/WEB-INF/WflDocParameters.xml b/hrmsWeb/WEB-INF/WflDocParameters.xml new file mode 100644 index 0000000..0f4c281 --- /dev/null +++ b/hrmsWeb/WEB-INF/WflDocParameters.xml @@ -0,0 +1,139 @@ + + + + Leave + wenrgise.hrms.webtier.form.HrmLvApplnForm + HrmLvApplnForm + leaveForward + HrmLvAppln + + + + LvCncl + wenrgise.hrms.webtier.form.HrmLvCancForm + HrmLvCancForm + leaveCnclForward + HrmEmployeeLeaveCancellationBatchScreen + + + + LvEncash + wenrgise.hrms.webtier.form.HrmLvEncashForm + HrmLvEncashForm + leaveEncashForward + HrmEmpLeaveEncashment + + + + LoanAppln + wenrgise.hrms.webtier.form.HrmLnAppForm + HrmLnAppForm + loanForward + HrmLnApp + + + Appraisal + wenrgise.hrms.webtier.form.HrmAprslForm + HrmAprslForm + aprslForward + HrmAprslKPA + + + + AdvanceAppln + wenrgise.hrms.webtier.form.HrmAdvApplnForm + HrmAdvApplnForm + advanceApplnForward + HrmEmpAdvance + + + AdvanceSettle + wenrgise.hrms.webtier.form.HrmAdvSettleForm + HrmAdvSettleForm + advanceSettleForward + HrmAdvanceSettle + + + + DeputationAppln + wenrgise.hrms.webtier.form.HrmATDDptnApplForm + HrmATDDptnApplForm + deputApplnForward + HrmATDDptnAppl + + + + DeputChrgRpt + wenrgise.hrms.webtier.form.HrmATDDptnChrgRptForm + HrmATDDptnChrgRptForm + deputChrgRptForward + HrmATDDptnChrgRpt + + + + DeputOrderSngEmp + wenrgise.hrms.webtier.form.HrmATDDptnOrderForSingleEmpForm + HrmATDDptnOrderForSingleEmpForm + dptnOrderSngEmpForward + HrmATDDptnOrderForSingleEmp + + + + TransAppln + wenrgise.hrms.webtier.form.HrmATDTransApplForm + HrmATDTransApplForm + transApplnForward + HrmATDTransAppl + + + + TransChrgRpt + wenrgise.hrms.webtier.form.HrmATDTransChrgRptForm + HrmATDTransChrgRptForm + transChrgRptForward + HrmATDTransChrgRpt + + + + TransCncl + wenrgise.hrms.webtier.form.HrmATDTransCnclApplForm + HrmATDTransCnclApplForm + transCnclForward + HrmATDTransCnclAppl + + + + TransCnclOrder + wenrgise.hrms.webtier.form.HrmATDTransCnclOrderSingleEmpForm + HrmATDTransCnclOrderForSingleEmpForm + transCnclOrderForward + HrmATDTransCnclOrderForSingleEmp + + + + TransOrder + wenrgise.hrms.webtier.form.HrmATDTransOrderForSingleEmpForm + HrmATDTransOrderForSingleEmpForm + transOrderForward + HrmATDTransOrderForSingleEmp + + + + + AppraisalSpcTmpl + wenrgise.hrms.webtier.form.HrmAprslSpcTmplForm + HrmAprslSpcTmplForm + aprslSpcTmplForward + HrmAprslSpcTmpl + + + + + TrngReq + wenrgise.hrms.webtier.form.HrmTrngEmpReqForm + HrmTrngEmpReqForm + trngReqForward + HrmTrngEmpReq + + + diff --git a/hrmsWeb/WEB-INF/classes/ApplicationResources.properties b/hrmsWeb/WEB-INF/classes/ApplicationResources.properties new file mode 100644 index 0000000..8d9276d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/ApplicationResources.properties @@ -0,0 +1,5000 @@ +index.title=hrm +index.heading=Human Resource Management for Wenrgise +index.message=Human Resource Management for Wenrgise. +errors.login=
  • Username/Password does not Match
  • +wenrgise.authorisation.error={0} Right Does Not Exist +wenrgise.common.session.expire=Current Session has been expired, Please Login again. +right.for.insert=Insert +right.for.update=Update +right.for.delete=Delete +right.for.execute=Execute +right.for.approve=Approve +wenrgise.searching.error=No Rows Found For This Search Criteria +wenrgise.common.user.name=User: +wenrgise.common.site.name=Site: +hrms.common.yyyymm=Year Month should be specified in proper format. +hrm.common.incorrectTimeFormat=Enter time in hh:mm format in detail row{0} +hrm.common.incorrectTimeFormatHour=Enter proper value of time in detail row{0} +hrm.common.incorrectTimeFormatMin=Enter proper value of minute in detail row{0} + + +hrm.HrmEmpPersonalDetails.checkExpFromLength=Improper value of From Date. The length should be 6 +hrm.HrmEmpPersonalDetails.checkExpToLength=Improper value of To Date. The length should be 6 +hrm.HrmEmpPersonalDetails.checkJoinDateValidation2=Bank Joining Date cannot be future date. +hrm.HrmEmpPersonalDetails.checkJoinDateValidation1=Status Effect Date cannot be prior to Bank Joining Date. +hrm.HrmEmpPersonalDetails.checkPersDateValidation1=Last Promotion Date cannot be prior to Date Of Birth. +hrm.HrmEmpPersonalDetails.checkPersDateValidation2=Passport Expiry Date cannot be prior to Passport Issue Date. +hrm.HrmEmpPersonalDetails.checkPersDateValidation3=Date Of Birth cannot be a future date. +hrm.HrmEmpPersonalDetails.checkPersDateValidation=Location Joining Date cannot be prior to Date Of Birth. +hrm.HrmEmpPersonalDetails.checkBaseSiteId=Please enter the Branch of the employee in Personal Details Tab first. +wenrgise.dateValidation.new=Effective To cannot be prior to Effective From +hrm.HrmAdvertisementAttribute.id=ID +hrm.HrmAdvertisementAttribute.grade=Grade +hrm.HrmAdvertisementAttribute.design=Designation + +wenrgise.hrms.norecordfound=No record found. +wenrgise.common.norecordfound=No record found. +wenrgise.common.norowselected=No row Selected. + +wenrgise.common.jumpHeader=Go +wenrgise.common.jumpDetail=Go +hrm.EditBox.text=Text +hrm.EditBox.type=TYPE YOUR TEXT HERE +hrm.select=------------------ +wenrgise.lov.SearchField1= +wenrgise.lov.SearchField2= +wenrgise.lov.SearchField3= +wenrgise.lov.SearchField4= +wenrgise.lov.SearchField5= +wenrgise.lov.SearchField6= +wenrgise.common.rowsFound=Matching Rows Found +wenrgise.common.rowsNotFound=No Matching Rows Found +wenrgise.common.search=Search +wenrgise.common.select=Select +wenrgise.common.delRow=Delete Row +wenrgise.common.getDetail= Get Detail  +wenrgise.common.addRow=  Add Row   +wenrgise.common.exit= Exit  +wenrgise.common.blank= +wenrgise.common.view=View +wenrgise.common.go=Jump +wenrgise.common.cancel=Cancel +wenrgise.common.ok=Ok +wenrgise.common.yes=Yes +wenrgise.common.no=No +wenrgise.common.approve=Approve +wenrgise.common.reject=Reject +wenrgise.common.submit=Submit +wenrgise.dateOfBirth.dateConstraintViolated=Date Of Birth Should be a Past Date. +wenrgise.dateOfMisconduct.dateConstraintViolated=Date Of Misconduct Should be a Past Date. +wenrgise.retirementDate.dateConstraintViolated=Retirement Date cannot be less than Bank Joining Date +wenrgise.confDate.dateConstraintViolated=Confirmation Date cannot be less than Bank Joining Date +hrm.approve.common=This Record is Already Approved/Rejected. +wenrgise.common.system=Fatal System Error caused by Network problem or like. +wenrgise.common.sessiontimedout=Session timed out. +wenrgise.sysadmin.nodetailrecord=Nol detail record. +wenrgise.common.deletion.rejected=Deletion is not possible because status is not new. +wenrgise.common.navigation=Navigational error. +wenrgise.common.saveheaderrecord=Save header record. +wenrgise.common.savefirst=Save detail record. +wenrgise.common.datashouldbesaved=Data should be saved. +wenrgise.common.changed=Data already modified earlier. +wenrgise.common.headerNavigation=Please select a valid header record number. +wenrgise.common.detailNavigation=Please select a valid detail record number. +wenrgise.common.uniqueConstraintViolated=Data could not be saved because of violation of unique key. +wenrgise.common.detail.mandatoryFieldMissing={0} field missing in row {1} of detail. +wenrgise.common.onlyDetail.mandatoryFieldMissing={0} field missing in detail. +wenrgise.common.onlyDetailAdd.mandatoryFieldMissing={0} : {1} field missing in detail. +wenrgise.common.header.mandatoryFieldMissing={0} field Missing in Header Record. +wenrgise.common.document.revised=Revised Document cannot be updated/deleted +wenrgise.common.header.status=Approved/Revised/Rejected Document cannot be updated. +wenrgise.common.header.uniqueConstraintViolated=Unique key constraint violated for the Header Record. +wenrgise.common.detail.uniqueConstraintViolated=Unique key constraint violated for the Detail Record. +wenrgise.common.detail.uniqueKeyViolated=Unique key constraint violated for {0} in row {1}. +wenrgise.common.header.invalidNumber={0} is not a valid number in the Header +wenrgise.common.header.IsNotPositive={0} should be positive +wenrgise.common.deleteNotPossible={0} record cannot be deleted +wenrgise.hrm.loanMst.dateError=Policy Start Date can't be Greater than Policy End Date. +wenrgise.hrm.addrow.mandatory.missing=Mandatory Field missing in detail record. +hrm.loan.detail.allemployeeerror=If the conditions are applied to all the employees then there should be only one row in the detail. +hrm.loan.detail.detailFound=Record can't be Deleted as Child Record Exists in Employee Loan Application. +hrm.loan.hdr.detailFound=Can't be Deleted as Detail Record Exists Against the Header. +wenrgise.hrms.detail.prmViewAssWritten=The Written Mark doesn't match with the marks given in the test score screen for row {0}. +wenrgise.hrms.detail.prmViewAssToPosition=For this promotion no records found in Test Score screen. +wenrgise.hrms.detail.prmViewAssGD=The GD Mark doesn't match with the marks given in the test score screen for row {0}. +wenrgise.hrms.detail.prmViewAssInterview=The Interview Mark doesn't match with the marks given in the test score screen for row {0}. +wenrgise.hrms.viewAssdetail.invalidWrittenMarks=The {0} exceeds the maximum Written Mark in row {1} of Detail. +wenrgise.hrms.viewAssdetail.invalidGDMarks=The {0} exceeds the maximum GD Mark in row {1} of Detail. +wenrgise.hrms.viewAssdetail.invalidInterviewMarks=The {0} exceeds the maximum Interview Mark in row {1} of Detail. +wenrgise.hrms.detail.prmViewAssPromotionFlag=The No.of elegible employees for promotion exceeds the maximum vacency for the required position. +save.before.freeze=The record should be saved before freezing. +wenrgise.hrmEmpPers.error.PFpercent=The sum of total percentage should be 100 + +wenrgise.common.datasaved=Data saved successfully. +wenrgise.common.fieldIsUnique=This field is unique. Please enter another value. +wenrgise.common.updation=This field is refferenced. It cannot be updated. +wenrgise.common.field.duplicatefound=Duplicate value of unique field found.Save not possible. +wenrgise.common.deletion=This field is referenced. It cannot be deleted. +wenrgise.common.header.value=Improper Values +wenrgise.common.dateConstraintViolated=Improper Value of Dates + +wenrgise.common.FromTodateConstraintViolated=To Date should be greater than From Date +wenrgise.common.PrevRowdateConstraintViolated=From Date should be greater than Previous Row To Date +wenrgise.common.header.uniqueConstraintViolated=Data could not be saved because of violation of unique key. +wenrgise.common.exception.handOverDate=Hand Over Date Should Be greater Than Transfer Date +wenrgise.common.header.field=Cancel Order for this application no already exists +wenrgise.common.header.status=Application for this emp no already exists . +wenrgise.common.updation.mode=Updation is possible only in new mode. + +wenrgise.hrm.startOrder.pDateError=Period End Date can't be Greater than Period Start Date +wenrgise.hrm.startOrder.apDateError=Appraisal End Date can't be Greater than Appraisal Start Date +wenrgise.hrms.settleHeads.amount=Settlement Amount Should Be Less Than The Maximum Limit. +wenrgise.hrms.advSettle.amount=Settlement Amount Should Be Less Than The Applied Amount. +hrm.common.approve=This Record is Already Approved/Rejected. +wenrgise.empTransApp.designation.value= From Designation and To Designation cannot be equal. +wenrgise.empTransApp.site.value=From Site and To Site1 must be there. +wenrgise.empTransApp.fromSite.value=From Site cannot be equal to To Site preferences. +wenrgise.empTransApp.toSite.value=To site preferences cannot be equal. +wenrgise.empTransApp.office.value=Office Note No and Office Note Date must be there. +wenrgise.empTransApp.dateConstraintViolated=Office Note Date must be greater than Application Date. +wenrgise.empTransApp.dateConstraintViolated2=Office Note Date cannot be future date. +wenrgise.empTransApp.dateConstraintViolated3=Application Date cannot be future date. + +wenrgise.empTransApp.sectional.value=In Case of Sectional Transfer ,site preferences cannot be there. +wenrgise.empTransApp.self.value=In Case of self generation,office values cannot be there. + +wenrgise.empTransCncl.office.value=Office Note No and Office Note Date must be there. +wenrgise.empTransCncl.officedateConstraintViolated=Office Note Date must be greater than app date. +wenrgise.empTransCncl.defdateConstraintViolated=Deferred Date must be greater than Transfer Effect Date. +wenrgise.empTransCncl.defer.value=Defer Date must be there. + +wenrgise.empTransCnclOrder.orderdateConstraintViolated=Order Date must be greater than AppDate. +wenrgise.empTransCnclOrder.defdateConstraintViolated=Deferred Date must be greater than Transfer Effect Date. +wenrgise.empTransCncl.appdateConstraintViolated=Cancellation Application Date cannot be prior to Transfer Order Date +wenrgise.empTransCnclOrder.defer.value=Defer Date must be there. + + +wenrgise.rlseOrder.rlsedateConstraintViolated=Release Date must be greater than Release Order Date. +wenrgise.rlseOrder.rlseOrderDateConstraintViolated=Release Order Date must be greater than max Transfer Order Date. + +wenrgise.dateApplied.dateConstraintViolated=Date Applied should lie within the current calendar boundary +wenrgise.fromAppDate.dateConstraintViolated=From Date should lie within the current calendar boundary +wenrgise.toAppDate.dateConstraintViolated=To Date should lie within the current calendar boundary + +wenrgise.fromCrsDate.dateConstraintViolated=From Date should be within the Calendar boundary +wenrgise.toCrsDate.dateConstraintViolated=To Date should be within the Calendar boundary +wenrgise.fromCourseDate.dateConstraintViolated=Start Date should be within the Calendar boundary +wenrgise.toCourseDate.dateConstraintViolated=End Date should be within the Calendar boundary +wenrgise.toFromDate.dateConstraintViolated=End date should be greater than Start Date + +hrm.HrmEmpEncash.header.encashLimit=Days Encashed Has Exceeded The Encashable Limit Per Year. +hrm.HrmEmpEncash.header.totalEncashLimit=Days Encashed Has Exceeded The Encashable Limit In A Service Period. +hrm.HrmEmpEncash.eligibleAmount=Gross Encashment Amount +wenrgise.common.detail.fromMonth1.dateConstraintViolated=Value of Effective From Month should be Greater than [00] +wenrgise.common.detail.fromMonth2.dateConstraintViolated=Value of Effective From Month should be Less Than or Equal To [12] +wenrgise.common.detail.toMonth1.dateConstraintViolated=Value of Effective To Month should be Greater than [00] +wenrgise.common.detail.toMonth2.dateConstraintViolated=Value of Effective To Month should be Less Than or Equal To [12] +wenrgise.leave.detail.dateConstraintViolated= Effective To Date Should Be Greater Then Effective From Date. +wenrgise.HrmLvAppln.header.dateValidation=To Date should be Greater than From Date. +wenrgise.HrmLvAppln.header.calendarValidation=To Date and From Date should lie within the same Calendar Period. +wenrgise.HrmLvAppln.header.startDateHoliday=Leave Start Date should not lie on a Holiday. +wenrgise.HrmLvAppln.header.endDateHoliday=Leave End Date should not lie on a Holiday. + + +hrms.hrmapp.kpa.wt=Weigtage is not present in row {0} +wenrgise.empDepDtl.father=Father Must Be Unique +wenrgise.empDepDtl.mother=Mother Must Be Unique +wenrgise.empDepDtl.wife=Wife Must Be Unique +wenrgise.empDepDtl.husband=Husband Must Be Unique + + +hrm.HrmGenEligRuleQuery.mainHeader=ELIGIBILITY RULE QUERY +hrm.HrmGenEligRuleQuery.docType=Document Type +hrm.HrmGenEligRuleQuery.leave=Leave +hrm.HrmGenEligRuleQuery.loan=Loan +hrm.HrmGenEligRuleQuery.advances=Advances +hrm.HrmGenEligRuleQuery.claims=Claims +hrm.HrmGenEligRuleQuery.earningDeduction=Earning/Deduction +hrm.HrmGenEligRuleQuery.separation=Separation +hrm.HrmGenEligRuleQuery.docCode=Document Code +hrm.HrmGenEligRuleQuery.effectFrom=Effect From +hrm.HrmGenEligRuleQuery.effectTo=Effect To +hrm.HrmGenEligRuleQuery.eligSql=Elig SQL + +hrm.startEndDate.dateConstraintViolated=End Date should be greater than Start Date. + +wenrgise.hol.value=Leave cannot be taken on a already existing holiday. +wenrgise.holiday.value=Leave cannot be taken on a holiday. + +wenrgise.lvCncl.value=Leave Cancellation cannot take place from middle. +hrm.title=Human Resource Management +hrm.pleaseSelect=------------Please Select----------- +hrm.yes=Yes +hrm.no=No +hrm.jan=January +hrm.feb=February +hrm.mar=March +hrm.apr=April +hrm.may=May +hrm.jun=June +hrm.jul=July +hrm.aug=August +hrm.sep=September +hrm.oct=October +hrm.nov=November +hrm.dec=December + +hrm.1=1 +hrm.2=2 +hrm.3=3 +hrm.4=4 + + +hrm.HrmHolidaytypeMst.heading=HOLIDAY TYPE MASTER +hrm.HrmHolidaytypeMst.holidayType=Holiday Type +hrm.HrmHolidaytypeMst.yearlyLimit=Yearly Limit +hrm.HrmHolidaytypeMst.mandatory=Mandatory +hrm.HrmHolidaytypeMst.compensatoryLeave=Compensatory Leave +hrm.HrmHolidaytypeMst.rewardPercentageOfBasic=Reward Percentage Of Basic +hrm.HrmHolidaytypeMst.negotiable=NEGOTIABLE +hrm.HrmHolidaytypeMst.restricted=RESTRICTED +hrm.HrmHolidaytypeMst.national=NATIONAL +hrm.HrmHolidaytypeMst.closedHoliday=CLOSED HOLIDAY +hrm.HrmHolidaytypeMst.checkYearlyLimit=Yearly Limit Cannot be entered as zero. + +hrm.HrmCalendarMaster.heading=CALENDAR MASTER +hrm.HrmCalendarMaster.startMonth=Start Month +hrm.HrmCalendarMaster.duration=Duration (in months) +hrm.HrmCalendarMaster.txtSlabBeginMonth=Slab Begin Month +hrm.HrmCalendarMaster.txtSlabNumber=Slab Number +hrm.HrmCalendarMaster.duration=Duration +hrm.HrmCalendarMaster.calendarType=Calendar Type +hrm.HrmCalendarMaster.calendarMasterDetails=Calendar Master Details +hrm.HrmCalendarMaster.txtDuration=Duration +hrm.HrmCalendarMaster.current=CURRENT +hrm.HrmCalendarMaster.abc=ABC +hrm.HrmCalendarMaster.abcNext=ABC '''''''''''''''' +hrm.HrmCalendarMaster.temp=TEMP +hrm.HrmCalendarMaster.acccal=ACCAL01 +hrm.HrmCalendarMaster.mytemp=MYTEMP +hrm.HrmCalendarMaster.2004=2004 +hrm.HrmCalendarMaster.financial=FINANCIAL +hrm.HrmCalendarMaster.durationValidation=The sum of durations in slab break up is not equal to total duration. +hrm.HrmCalendarMaster.slabBeginMonthValidation=Please check the Slab Begin Month +hrm.HrmCalendarMaster.slabBeginMonthValidation1=Slab Begin Month must coincide with Start Month in row 1 of detail +hrm.HrmCalendarMaster.zeroDuration=Duration cannot be zero in row {1} of detail + +hrm.HrmHolidayCalendar.heading=HOLIDAY CALENDAR +hrm.HrmHolidayCalendar.holidayCalMaster=Holiday Calendar Master +hrm.HrmHolidayCalendar.holidayCalDetail=Holiday Calendar Detail +hrm.HrmHolidayCalendar.calendarName=Calendar Name +hrm.HrmHolidayCalendar.description=Description +hrm.HrmHolidayCalendar.calendarYear=Calendar Year +hrm.HrmHolidayCalendar.fromDate=From Date +hrm.HrmHolidayCalendar.siteCode=Site Code +hrm.HrmHolidayCalendar.toDate=To Date +hrm.HrmHolidayCalendar.txtHolidayDate=Holiday Date +hrm.HrmHolidayCalendar.txtHolidayName=Holiday Name +hrm.HrmHolidayCalendar.txtHolidayType=Holiday Type +hrm.HrmHolidayCalendar.calCode=Calendar Code +hrm.HrmHolidayCalendar.siteDesc=Site Description +hrm.HrmHolidayCalendar.holidayDateValidation=Holiday Date must be within From Date and To Date +hrm.HrmHolidayCalendar.headerDateValidation=From Date must be less than To Date. +hrm.HrmHolidayCalendar.state=State +hrm.HrmHolidayCalendar.stateCode=State Code +hrm.HrmHolidayCalendar.stateDesc=State Description +hrm.HrmHolidayCalendar.sunday=Sunday +hrm.HrmHolidayCalendar.monday=Monday +hrm.HrmHolidayCalendar.tuesday=Tuesday +hrm.HrmHolidayCalendar.wednesday=Wednesday +hrm.HrmHolidayCalendar.thursday=Thursday +hrm.HrmHolidayCalendar.friday=Friday +hrm.HrmHolidayCalendar.saturday=Saturday +hrm.HrmHolidayCalendar.txtDay=Day of the Week + + +hrm.HrmCoreCompetency.desc=Description + +hrm.HrmQualificationMaster.heading=QUALIFICATION MASTER +hrm.HrmQualificationMaster.detail=Qualification Detail +hrm.HrmQualificationMaster.txtCode=Code +hrm.HrmQualificationMaster.txtQualification=Qualification +hrm.HrmQualificationMaster.txtNoOfYears=No.of Years +hrm.HrmQualificationMaster.txtApprovingAuthority=Approving Authority + +hrm.HrmRatingMaster.heading=RATING MASTER +hrm.HrmRatingMaster.ratingHeader=Rating Header +hrm.HrmRatingMaster.ratingDetail=Rating detail +hrm.HrmRatingMaster.ratingHeaderCode=Rating Header Code +hrm.HrmRatingMaster.minimumRating=Minimum Rating +hrm.HrmRatingMaster.qualifyingRating=Qualifying Rating +hrm.HrmRatingMaster.maximumRating=Maximum Rating +hrm.HrmRatingMaster.txtRatingFrom=Rating From +hrm.HrmRatingMaster.txtRatingTo=Rating To +hrm.HrmRatingMaster.txtRatingGrade=Rating Grade +hrm.HrmRatingMaster.txtDescription=Description +hrm.HrmRatingMaster.header.maxRating=Maximum Rating cannot be less than Qualifying Rating. +hrm.HrmRatingMaster.header.qualRating=Qualifying Rating cannot be less than Minimum Rating. +hrm.HrmRatingMaster.header.minRating=Maximum Rating cannot be less than Minimum Rating. +hrm.HrmRatingMaster.detail.detailUpdation=This Field cannot be updated. +hrm.HrmRatingMaster.detail.ratingFromValidation=Rating From must be greater than Rating To in previous row by 0.01. +hrm.HrmRatingMaster.detail.ratingFromComparison=Rating From cannot be less than Minimum Rating +hrm.HrmRatingMaster.detail.ratingToComparison=Rating To cannot be greater than Maximum Rating +hrm.HrmRatingMaster.numericEq=Numeric Equivalent +hrm.HrmRatingMaster.detail.ratingToValidation=Rating To must be greater than Rating From. + +hrm.HrmSkillMaster.heading=SKILL MASTER +hrm.HrmSkillMaster.skillTypeCode=Skill Type Code +hrm.HrmSkillMaster.skillTypeName=Skill Type Name +hrm.HrmSkillMaster.txtSkillCode=Skill Code +hrm.HrmSkillMaster.txtSkillName=Skill Name + +hrm.HrmReligionMaster.heading=RELIGION MASTER +hrm.HrmReligionMaster.detail=Religion Master +hrm.HrmReligionMaster.txtReligionName=Religion Name + +hrm.HrmClassificationDtls.heading=CLASSIFICATION DETAILS +hrm.HrmClassificationDtls.code=Type Code +hrm.HrmClassificationDtls.classificationType=Classification Type +hrm.HrmClassificationDtls.classificationDetails=Classification Details +hrm.HrmClassificationDtls.classificationHeader=Classification Header +hrm.HrmClassificationDtls.txtClassificationCode=Classification Code +hrm.HrmClassificationDtls.txtDescription=Description +hrm.HrmClassificationDtls.txtHierarchy=Hierarchy Level +hrm.HrmClassificationDtls.txtParentCode=Parent Code +hrm.HrmClassificationDtls.name=Name + + + +hrm.HrmScaleMaster.heading=SCALE MASTER +hrm.HrmScaleMaster.header=Scale Header +hrm.HrmScaleMaster.detail=Scale Detail +hrm.HrmScaleMaster.scaleCode=Pay Scale Code +hrm.HrmScaleMaster.desc=Description +hrm.HrmScaleMaster.txtStartBasic=Start Basic +hrm.HrmScaleMaster.txtIncrement=Increment +hrm.HrmScaleMaster.txtEndBasic=End Basic +hrm.HrmScaleMaster.payCommission=Pay Commisssion +hrm.HrmScaleMaster.first=First Pay Commission +hrm.HrmScaleMaster.second=Second Pay Commission +hrm.HrmScaleMaster.third=Third Pay Commission +hrm.HrmScaleMaster.fourth=Fourth Pay Commission +hrm.HrmScaleMaster.detail.increment=Difference of Start and End Basic must be multiple of rate of Increment. +hrm.HrmScaleMaster.detail.checkBasic=Start Basic must be equal to the End Basic of previous row. +hrm.HrmScaleMaster.detail.checkEndBasic=End Basic cannot be less than Start Baic. +hrm.HrmScaleMaster.detail.checkIncrement=Increment must be less than Start Basic and End Basic. +hrm.HrmScaleMaster.revision=Revision Year Month +hrm.HrmScaleMaster.grade=Grade +hrm.HrmScaleMaster.yyyymm=(YYYYMM) +hrms.scale.uniqueConstraintViolated=Combination of Scale and Revision Year Month must be unique. + +hrm.HrmPositionMaster.scaleCode=Scale Code +hrm.HrmPositionMaster.scale=Scale Description + + +hrm.HrmCountryMaster.heading=COUNTRY MASTER +hrm.HrmCountryMaster.header=Country Details +hrm.HrmCountryMaster.detail=City Details +hrm.HrmCountryMaster.countryCode=Country Code +hrm.HrmCountryMaster.countryName=Country Name +hrm.HrmCountryMaster.txtCityCode=City Code +hrm.HrmCountryMaster.txtCityName=City Name + +hrm.HrmWorkGroup.heading=WORK GROUP MASTER +hrm.HrmWorkGroup.code=Code +hrm.HrmWorkGroup.owingSite=Owing Site +hrm.HrmWorkGroup.name=Name +hrm.HrmWorkGroup.empNo=Employee Number +hrm.HrmWorkGroup.profitCentre=Profit Centre +hrm.HrmWorkGroup.costCentre=Cost Centre +hrm.HrmWorkGroup.deptFlag=Dept Flag +hrm.HrmWorkGroup.temporaryFlag=Temporary Flag +hrm.HrmWorkGroup.budgetCode=Budget Code +hrm.HrmWorkGroup.y=Yes +hrm.HrmWorkGroup.n=No +hrm.HrmWorkGroup.refDocNo=Ref. Doc.No +hrm.HrmWorkGroup.creationDate=Creation Date +hrm.HrmWorkGroup.endDate=End Date +hrm.HrmWorkGroup.documentDate=Document Date +hrm.HrmWorkGroup.specialRemarks=Sp.Remarks +hrm.HrmWorkGroup.hierarchyLevel=Hierarchy Level +hrm.HrmWorkGroup.parentGroupCode=Parent Group Code +hrm.HrmWorkGroup.contactEmployeeNo=Contact Employee Name +hrm.HrmWorkGroup.contactAddress=Address +hrm.HrmWorkGroup.fax=Fax +hrm.HrmWorkGroup.phone=Phone No. +hrm.HrmWorkGroup.eMail=E-Mail +hrm.HrmWorkGroup.d=Department +hrm.HrmWorkGroup.w=Work Group +wenrgise.workGroup.dateConstraintViolated=End Date should be Greater than Creation Date +wenrgise.workGroup.dateConstraintViolated1=Creation Date cannot be future date. +hrm.HrmWorkGroup.hierarchyLevel=Hierarchy Level + +hrm.HrmApprovalSchemeMaster.heading=APPROVAL SCHEME MASTER +hrm.HrmApprovalSchemeMaster.header=Document Type +hrm.HrmApprovalSchemeMaster.site=Site +hrm.HrmApprovalSchemeMaster.detail=Approval Scheme +hrm.HrmApprovalSchemeMaster.documentCode=Document Code +hrm.HrmApprovalSchemeMaster.site=Site +hrm.HrmApprovalSchemeMaster.description=Description +hrm.HrmApprovalSchemeMaster.department=Department +hrm.HrmApprovalSchemeMaster.txtApprover=Approver +hrm.HrmApprovalSchemeMaster.txtLevel=Level +hrm.HrmApprovalSchemeMaster.txtDelegate=Delegate? +hrm.HrmApprovalSchemeMaster.txtAlternateApprover=Alternate Approver + + +hrm.HrmRelationMaster.heading=RELATION MASTER +hrm.HrmRelationMaster.detail=List Of Relations +hrm.HrmRelationMaster.txtRelationCode=Relation Code +hrm.HrmRelationMaster.txtRelationName=Relation Name +hrm.HrmRelationMaster.txtOccurence=Occurence + +hrm.HrmLanguageMaster.heading=LANGUAGE MASTER +hrm.HrmLanguageMaster.detail=Language Details +hrm.HrmLanguageMaster.txtCode=Language Code +hrm.HrmLanguageMaster.txtDescription=Language Description + +hrm.HrmDistrictMaster.heading=DISTRICT MASTER +hrm.HrmDistrictMaster.detail=District Details +hrm.HrmDistrictMaster.txtCode=District Code +hrm.HrmDistrictMaster.txtDescription=District Name + +hrm.HrmTehsilMaster.heading=TEHSIL MASTER +hrm.HrmTehsilMaster.detail=Tehsil Details +hrm.HrmTehsilMaster.txtCode=Tehsil Code +hrm.HrmTehsilMaster.txtDescription=Tehsil Description + +hrm.aprsl.rule.header.mandatoryFieldMissing=If You Select {0}, then You must leave {1},{2},{3},{4} as blank. +hrm.StRule.SiteCode.mandatoryFieldMissing=You Cannot leave {0} as blank. +hrm.aprsl.StRule.all.header.mandatoryFieldMissing=You cannot leave {0},{1}, {2}, {3}, {4} as blank. +hrm.SpcTemp.Unique.Data=This Specific Template Name is already in Database for current Start Order No. +hrm.HrmEmployeeApplicationBatchUpdation.heading=EMPLOYEE APPLICATION BATCH UPDATION +hrm.HrmEmployeeApplicationBatchUpdation.advNo=Adv. No. +hrm.HrmEmployeeApplicationBatchUpdation.entryMode=Entry Mode +hrm.HrmEmployeeApplicationBatchUpdation.appNo=App. No. +hrm.HrmEmployeeApplicationBatchUpdation.designationApplied=Designation Applied +hrm.HrmEmployeeApplicationBatchUpdation.appDate= App. Date +hrm.HrmEmployeeApplicationBatchUpdation.firstName=First Name +hrm.HrmEmployeeApplicationBatchUpdation.middleName=Middle name +hrm.HrmEmployeeApplicationBatchUpdation.lastName=Last Name +hrm.HrmEmployeeApplicationBatchUpdation.joinedFlag=Joined Flag +hrm.HrmEmployeeApplicationBatchUpdation.medicalFlag=Medical Flag +hrm.HrmEmployeeApplicationBatchUpdation.DOB=D.O.B +hrm.HrmEmployeeApplicationBatchUpdation.nationality=Nationality +hrm.HrmEmployeeApplicationBatchUpdation.sex=Sex +hrm.HrmEmployeeApplicationBatchUpdation.resvCat=Resv. Cat. +hrm.HrmEmployeeApplicationBatchUpdation.maritalStatus=Marital Status +hrm.HrmEmployeeApplicationBatchUpdation.domicile=Domicile +hrm.HrmEmployeeApplicationBatchUpdation.writtenScore(A)=Written Score +hrm.HrmEmployeeApplicationBatchUpdation.writtenScore(B)=Written Score (Part B) +hrm.HrmEmployeeApplicationBatchUpdation.interviewScore=Interview Score +hrm.HrmEmployeeApplicationBatchUpdation.address=Address +hrm.HrmEmployeeApplicationBatchUpdation.qualificationDtls= Qualification Details +hrm.HrmEmployeeApplicationBatchUpdation.workExperience=Work Experience +hrm.HrmEmployeeApplicationBatchUpdation.recordStatus=Record Status +hrm.HrmEmployeeApplicationBatchUpdation.message=Message + + + +hrm.HrmAdvertiesmentMaintenance.heading=ADVERTISEMENT MAINTENANCE +hrm.HrmAdvertiesmentMaintenance.referenceNo=Reference No. +hrm.HrmAdvertiesmentMaintenance.entryMode=Entry Mode +hrm.HrmAdvertiesmentMaintenance.referenceDate=Reference Date +hrm.HrmAdvertiesmentMaintenance.mediaType=Media Type +hrm.HrmAdvertiesmentMaintenance.none=None +hrm.HrmAdvertiesmentMaintenance.electronicMedia=Electronic Media +hrm.HrmAdvertiesmentMaintenance.printMedia=Print Media +hrm.HrmAdvertiesmentMaintenance.cyberMedia=Cyber Media +hrm.HrmAdvertiesmentMaintenance.mediaName=Media Name +hrm.HrmAdvertiesmentMaintenance.lastDate=Last Date for Application Receipt +hrm.HrmAdvertiesmentMaintenance.minWrittenScoreA=Min Written Score +hrm.HrmAdvertiesmentMaintenance.minWrittenScoreB=Min GD Score +hrm.HrmAdvertiesmentMaintenance.minInterviewScore=Min Interview Score (1) +hrm.HrmAdvertiesmentMaintenance.minInterviewScore2=Min Interview Score (2) +hrm.HrmAdvertiesmentMaintenance.minInterviewScore3=Min Interview Score (3) +hrm.HrmAdvertiesmentMaintenance.venue=Venue +hrm.HrmAdvertiesmentMaintenance.date=Date +hrm.HrmAdvertiesmentMaintenance.time=Time +hrm.HrmAdvertiesmentMaintenance.description=Description[Max 250 Characters] +hrm.HrmAdvertiesmentMaintenance.minTotalScore=Min Total Score +hrm.HrmAdvertiesmentMaintenance.forPosition=For Position +hrm.HrmAdvertiesmentMaintenance.designation=Designation +hrm.HrmAdvertiesmentMaintenance.applicantCategory=Applicant Category +hrm.HrmAdvertiesmentMaintenance.reservationCategory=Reservation Category +hrm.HrmAdvertiesmentMaintenance.totalVacancy=Total Vacancy +hrm.HrmAdvertiesmentMaintenance.sex=Sex +hrm.HrmAdvertiesmentMaintenance.grade=Grade +hrm.HrmAdvertiesmentMaintenance.salaryBasis=Salary Basis +hrm.HrmAdvertiesmentMaintenance.scale=Scale +hrm.HrmAdvertiesmentMaintenance.fromBasic=From Basic +hrm.HrmAdvertiesmentMaintenance.toBasic=To basic +hrm.HrmAdvertiesmentMaintenance.discipline=Discipline +hrm.HrmAdvertiesmentMaintenance.minimumAge=Minimum Age +hrm.HrmAdvertiesmentMaintenance.maximumAge=Maximum Age +hrm.HrmAdvertiesmentMaintenance.maxAgeOnDate=Max Age On Date +hrm.HrmAdvertiesmentMaintenance.amount=Amount To Be Sent With The Application +hrm.HrmAdvertiesmentMaintenance.advAttrDtl=Advertisement Attribute Detail +hrm.HrmAdvertiesmentMaintenance.M=Male +hrm.HrmAdvertiesmentMaintenance.F=Female +hrm.HrmAdvertiesmentMaintenance.B=Both +hrm.HrmAdvertiesmentMaintenance.A=All +hrm.HrmAdvertiesmentMaintenance.code=Code + +hrm.HrmAdvertisementAttribute.heading=ADVERTISEMENT ATTRIBUTE DETAIL +hrm.HrmAdvertisementAttribute.qualCode=Qualification Code +hrm.HrmAdvertisementAttribute.mandatoryFlag=Mandatory Flag +hrm.HrmAdvertisementAttribute.maxmQualFlag=Maximum Qualification Flag +hrm.HrmAdvertisementAttribute.minPC=Minimum Percentage +hrm.HrmAdvertisementAttribute.locCode=Location Code +hrm.HrmAdvertisementAttribute.noOfVacancy=No. Of Vacancy +hrm.HrmAdvertisementAttribute.reqExp=Experience In Designation +hrm.HrmAdvertisementAttribute.expArea=Experience Area +hrm.HrmAdvertisementAttribute.exposureIn=Exposure In +hrm.HrmAdvertisementAttribute.minWrkExp=Minimum Work Experience +hrm.HrmAdvertisementAttribute.maxWrkExp=Maximum Work Experience +hrm.HrmAdvertisementAttribute.skillCode=Skill Code +hrm.HrmAdvertisementAttribute.skillDesc=Skill Type +hrm.HrmAdvertisementAttribute.skill=Skill +hrm.HrmAdvertisementAttribute.remarks=Any Additional Remarks +hrm.HrmAdvertisementAttribute.langCode=Language Code +hrm.HrmAdvertisementAttribute.reqType=Requirement Type +HrmAdvertisementAttribute.Desc=Description +hrm.HrmAdvertisementAttribute.Desc=Description +hrm.HrmAdvertisementAttribute.checkMinExp=Please check Minimum experience field. +hrm.HrmAdvertisementAttribute.checkMaxExp=Please check Maximum experience field. +hrm.HrmAdvertisementAttribute.specialisation=Specialisation +hrm.HrmAdvertisementAttribute.exposureIn=Exposure In +hrm.HrmAdvertisementAttribute.jobDesc=Job Description + +hrm.HrmScrutinizingApplicant.heading=SCRUTINIZING APPLICANT MAINTENANCE +hrm.HrmScrutinizingApplicant.referenceNo=Reference No. +hrm.HrmScrutinizingApplicant.adForDesignation=Advertisement For Designation +hrm.HrmScrutinizingApplicant.discipline=Discipline +hrm.HrmScrutinizingApplicant.true=Y +hrm.HrmScrutinizingApplicant.false=N + +hrm.HrmScrutinizingApplicant.stage=Applicantion Stage +hrm.HrmScrutinizingApplicant.i=Initial +hrm.HrmScrutinizingApplicant.w=Written +hrm.HrmScrutinizingApplicant.g=GD +hrm.HrmScrutinizingApplicant.iv=Interview +hrm.HrmScrutinizingApplicant.applicationStage=Application Stage + + + + +hrm.HrmScrutinizingApplicant.deselectAll=Deselect All +hrm.HrmScrutinizingApplicant.fromRank=From Rank +hrm.HrmScrutinizingApplicant.toRank=To Rank +hrm.HrmScrutinizingApplicant.selectAll=Select All +hrm.HrmScrutinizingApplicant.testCenter=Test Center +hrm.HrmScrutinizingApplicant.remarks=Remarks +hrm.HrmScrutinizingApplicant.rank=Rank +hrm.HrmScrutinizingApplicant.applicantNo=Applicant No. +hrm.HrmScrutinizingApplicant.applicantName=Applicant Name +hrm.HrmScrutinizingApplicant.writtemMarksA=Written Marks +hrm.HrmScrutinizingApplicant.writtemMarksB=GD Marks +hrm.HrmScrutinizingApplicant.interviewMarks=Interview Marks +hrm.HrmScrutinizingApplicant.totalScore=Total Score +hrm.HrmScrutinizingApplicant.expYrs=Exp in Years +hrm.HrmScrutinizingApplicant.eligibility=Eligible for Applicant +hrm.HrmScrutinizingApplicant.testCenter=Test Center +hrm.HrmScrutinizingApplicant.remarks=Remarks +hrm.HrmScrutinizingApplicant.questionSet=Qusetion set +hrm.HrmScrutinizingApplicant.range=Range +hrm.HrmScrutinizingApplicant.selectionRanges=Selection Ranges + + + +hrm.HrmEmployeeDependantDetails.heading=EMPLOYEE RELATION DETAILS +hrm.HrmEmployeeDependantDetails.employeeNo=Employee Number +hrm.HrmEmployeeDependantDetails.employeeName=Employee Name +hrm.HrmEmployeeDependantDetails.relationType=Relation +hrm.HrmEmployeeDependantDetails.depName=Dependant name +hrm.HrmEmployeeDependantDetails.sex=Sex +hrm.HrmEmployeeDependantDetails.DOB=Date Of Birth +hrm.HrmEmployeeDependantDetails.M=Male +hrm.HrmEmployeeDependantDetails.F=Female +hrm.HrmEmployeeDependantDetails.code=Relation Code +hrm.HrmEmployeeDependantDetails.orgName=School/College Name +hrm.HrmEmployeeDependantDetails.incomeAmount=Yearly Income/Pension + +hrm.HrmEmployeeLanguageBatchUpdation.heading=EMPLOYEE LANGUAGE BATCH UPDATION +hrm.HrmEmployeeLanguageBatchUpdation.employeeCode=Employee Code +hrm.HrmEmployeeLanguageBatchUpdation.checkDigit=Check Digit +hrm.HrmEmployeeLanguageBatchUpdation.serialNo=Sr. No. +hrm.HrmEmployeeLanguageBatchUpdation.languageCode=Language Code +hrm.HrmEmployeeLanguageBatchUpdation.recordStatus=Record Status + + +hrm.HrmEmployeePriorExperienceBatchUpdate.heading=EMPLOYEE PRIOR EXPERIENCE BATCH UPDATE +hrm.HrmEmployeePriorExperienceBatchUpdate.employeeNo=Emp. No. +hrm.HrmEmployeePriorExperienceBatchUpdate.checkDate=Check Dt. +hrm.HrmEmployeePriorExperienceBatchUpdate.serialNo=Sr. No. +hrm.HrmEmployeePriorExperienceBatchUpdate.fromPeriod=From Period(MMYYYY) +hrm.HrmEmployeePriorExperienceBatchUpdate.toPeriod=To Period(MMYYYY) +hrm.HrmEmployeePriorExperienceBatchUpdate.orgName=Organisation Name +hrm.HrmEmployeePriorExperienceBatchUpdate.location=Location +hrm.HrmEmployeePriorExperienceBatchUpdate.workDesc=Work Desc +hrm.HrmEmployeePriorExperienceBatchUpdate.designationCode=Designation Code +hrm.HrmEmployeePriorExperienceBatchUpdate.basic=Basic +hrm.HrmEmployeePriorExperienceBatchUpdate.DA=DA +hrm.HrmEmployeePriorExperienceBatchUpdate.allowence=Allowence +hrm.HrmEmployeePriorExperienceBatchUpdate.recordStatus=Record Status + + +hrm.HrmEmployeeIncrementBatchUpdation.mainHeader=EMPLOYEE INCREMENT BATCH UPDATION +hrm.HrmEmployeeIncrementBatchUpdation.employeeNo=Employee No. +hrm.HrmEmployeeIncrementBatchUpdation.checkDate=Check Date. +hrm.HrmEmployeeIncrementBatchUpdation.serialNo=Sr. No. +hrm.HrmEmployeeIncrementBatchUpdation.DOLP=D.O.L.P +hrm.HrmEmployeeIncrementBatchUpdation.orderDate=Order Date +hrm.HrmEmployeeIncrementBatchUpdation.basic=Basic +hrm.HrmEmployeeIncrementBatchUpdation.fromDesg=From Designation +hrm.HrmEmployeeIncrementBatchUpdation.toDesg=To Designation +hrm.HrmEmployeeIncrementBatchUpdation.fromDept=From Department +hrm.HrmEmployeeIncrementBatchUpdation.toDept=To Department +hrm.HrmEmployeeIncrementBatchUpdation.fromScale=From Scale +hrm.HrmEmployeeIncrementBatchUpdation.toScale=To Scale +hrm.HrmEmployeeIncrementBatchUpdation.fromSiteCode=From Site Code +hrm.HrmEmployeeIncrementBatchUpdation.toSiteCode=To Site Code +hrm.HrmEmployeeIncrementBatchUpdation.promotionFlag=Promotion Flag +hrm.HrmEmployeeIncrementBatchUpdation.substantive=Substantive +hrm.HrmEmployeeIncrementBatchUpdation.TB0=TB0 +hrm.HrmEmployeeIncrementBatchUpdation.TB1=TB1 +hrm.HrmEmployeeIncrementBatchUpdation.TB2=TB2 +hrm.HrmEmployeeIncrementBatchUpdation.TB3=TB3 +hrm.HrmEmployeeIncrementBatchUpdation.P=P + + +hrm.HrmEmployeeBatchUpdation.heading=EMPLOYEE BATCH UPDATION +hrm.HrmEmployeeBatchUpdation.employeeNo=Emp. No. +hrm.HrmEmployeeBatchUpdation.CD=CD +hrm.HrmEmployeeBatchUpdation.firstName=First Name +hrm.HrmEmployeeBatchUpdation.middleName=Middle Name +hrm.HrmEmployeeBatchUpdation.lastName=Last Name +hrm.HrmEmployeeBatchUpdation.basic=Basic +hrm.HrmEmployeeBatchUpdation.desig=Desig +hrm.HrmEmployeeBatchUpdation.dept=Dept +hrm.HrmEmployeeBatchUpdation.DOB=D.O.B +hrm.HrmEmployeeBatchUpdation.DOJ=D.O.J +hrm.HrmEmployeeBatchUpdation.DOLPSNo=DOLP S. No. +hrm.HrmEmployeeBatchUpdation.DOLP=D.O.L.P +hrm.HrmEmployeeBatchUpdation.siteCode=Site Code +hrm.HrmEmployeeBatchUpdation.status=Status +hrm.HrmEmployeeBatchUpdation.effectDate=Effect Date +hrm.HrmEmployeeBatchUpdation.SEPType=SEP Type +hrm.HrmEmployeeBatchUpdation.entryMode=Entry Mode +hrm.HrmEmployeeBatchUpdation.resv=Resv +hrm.HrmEmployeeBatchUpdation.scaleMode=Scale Mode +hrm.HrmEmployeeBatchUpdation.payrollMode=Payroll Mode +hrm.HrmEmployeeBatchUpdation.societyCode=Society Code +hrm.HrmEmployeeBatchUpdation.IDCardNo=ID Card No. +hrm.HrmEmployeeBatchUpdation.accountSiteCode=Acc. Site Code +hrm.HrmEmployeeBatchUpdation.recordStatus=Record Status + + + +hrm.HrmTestCentreMaster.heading=TEST CENTER MASTER +hrm.HrmTestCentreMaster.testCentreCode=Test Centre Code +hrm.HrmTestCentreMaster.testCentreName=Test Centre Name +hrm.HrmTestCentreMaster.address=Address[Max 250 Characters] +hrm.HrmTestCentreMaster.phone=Phone +hrm.HrmTestCentreMaster.fax=Fax + + +hrm.HrmExecCommitteeMembers.heading=LIST OF EXECUTIVE COMMITTEE MEMBERS +hrm.HrmExecCommitteeMembers.categoryCode=Category Code +hrm.HrmExecCommitteeMembers.categoryDesc=Category Desc +hrm.HrmExecCommitteeMembers.employeeNo=Employee No +hrm.HrmExecCommitteeMembers.employeeName=Employee Name + +hrm.HrmTrainingCourseMst.trainingBranch=Training Streams +hrm.HrmTrainingCourseMst.branchName=Branch Name +hrm.HrmTrainingCourseMst.course=Course +hrm.HrmTrainingCourseMst.name=Name +hrmTCM.title=TRAINING COURSE MASTER +hrmTCMSubHeader.title=Training Stream +hrmTCMTabHeader.title=Course Detail + + + + +hrm.HrmTrainingBudget.calendarName=Calendar Name +hrm.HrmTrainingBudget.description=Description +hrm.HrmTrainingBudget.approvedBudget=Approved Budget +hrm.HrmTrainingBudget.availableBudget=Available Budget +hrm.HrmTrainingBudget.spentTillDate=Spent Till Date +hrm.HrmTrainingBudget.compareAmount=Total Spent Amount cannot be greater than Approved Amount +hrm.HrmTrainingBudget.courseName=Course Name +hrm.HrmTrainingBudget.fromDate=From Date +hrm.HrmTrainingBudget.toDate=To Date +hrm.HrmTrainingBudget.travel=Travel +hrm.HrmTrainingBudget.accomodation=Accomodation +hrm.HrmTrainingBudget.dailyAllowances=Daily Allowances +hrm.HrmTrainingBudget.food=Food Expenses +hrm.HrmTrainingBudget.fees=Training Fees +hrm.HrmTrainingBudget.misc=Misc. Charges +hrm.HrmTrainingBudget.total=Total + +hrm.HrmTrainingBudget.currencyType=Currency Type +hrm.HrmTrainingBudget.budget=Budget +hrmTBMainHeader.title=CALENDAR BUDGET DETAIL +hrm.TBSubHeader.title=Training Calendar +hrm.TBTabHeader.title=Budget Detail + + + + + + +hrm.HrmTrnInCoDtl.instituteCode=Institute Code +hrm.HrmTrnInCoDtl.instituteName=Institute Name +hrm.HrmTrnInCoDtl.type=Type +hrm.HrmTrnInCoDtl.external=EXTERNAL +hrm.HrmTrnInCoDtl.internal=INTERNAL +hrm.HrmTrnInCoDtl.forigen=FOREIGN +hrm.HrmTrnInCoDtl.inCharge=In Charge +hrm.HrmTrnInCoDtl.address=Address +hrm.HrmTrnInCoDtl.country=Country +hrm.HrmTrnInCoDtl.city=City +hrm.HrmTrnInCoDtl.state=State +hrm.HrmTrnInCoDtl.pin=PIN +hrm.HrmTrnInCoDtl.phone=Phone +hrm.HrmTrnInCoDtl.email=Email +hrm.HrmTrnInCoDtl.fax=Fax +hrm.HrmTrnInCoDtl.course=Course +hrm.HrmTrnInCoDtl.courseName=Course Name + + + +hrm.HrmApplicationMaintenance.heading=APPLICATION MAINTENANCE +hrm.HrmApplicationMaintenance.subHeader1=Application Header +hrm.HrmApplicationMaintenance.referenceNo=Reference No. +hrm.HrmApplicationMaintenance.applForGradeDesignation=For Grade/Designation +hrm.HrmApplicationMaintenance.applForDesignation=Application For Designation +hrm.HrmApplicationMaintenance.applForGrade=Application For Grade +hrm.HrmApplicationMaintenance.applicationNo=Application No. +hrm.HrmApplicationMaintenance.applicationDate=Application date +hrm.HrmApplicationMaintenance.applicationName=Applicant Name +hrm.HrmApplicationMaintenance.applicationFirstName=(First Name) +hrm.HrmApplicationMaintenance.applicationMiddleName=(Middle name) +hrm.HrmApplicationMaintenance.applicationLastName=(Last Name) +hrm.HrmApplicationMaintenance.entryMode=Entry Mode +hrm.HrmApplicationMaintenance.rollNo=Roll No. +hrm.HrmApplicationMaintenance.employeeStatus=Employee Status +hrm.HrmApplicationMaintenance.guardianName=Father/Husband's Name +hrm.HrmApplicationMaintenance.motherTongue=Mother Tongue +hrm.HrmApplicationMaintenance.DOB=Date Of Birth +hrm.HrmApplicationMaintenance.placeOfBirth=Place Of Birth +hrm.HrmApplicationMaintenance.nationality=Nationality +hrm.HrmApplicationMaintenance.maritalStatus=Marital Status +hrm.HrmApplicationMaintenance.sex=Sex +hrm.HrmApplicationMaintenance.Male=Male +hrm.HrmApplicationMaintenance.Female=Female +hrm.HrmApplicationMaintenance.eMail=E-Mail +hrm.HrmApplicationMaintenance.resvCategory=Reservation Category +hrm.HrmApplicationMaintenance.appointedFlag=Appointed +hrm.HrmApplicationMaintenance.appliedEarlier=Applied Earlier +hrm.HrmApplicationMaintenance.handicappedFlag=Handicapped Flag +hrm.HrmApplicationMaintenance.joinedOrganisation=Joined Organization +hrm.HrmApplicationMaintenance.offeredBasic=Offered Basic +hrm.HrmApplicationMaintenance.offeredAllowances=Offered Allowances +hrm.HrmApplicationMaintenance.offeredTerms=Offered Terms +hrm.HrmApplicationMaintenance.remarks=Remarks +hrm.HrmApplicationMaintenance.read=Read +hrm.HrmApplicationMaintenance.write=Write +hrm.HrmApplicationMaintenance.communicate=Communicate +hrm.HrmApplicationMaintenance.all=All +hrm.HrmApplicationMaintenance.admPassYear=Admission Year cannot be greater than Pass Year +hrm.HrmApplicationMaintenance.institute=Institution/Organisation +hrm.HrmApplicationMaintenance.toDate=To Date +hrm.HrmApplicationMaintenance.fromDate=From Date +hrm.HrmApplicationMaintenance.course=Course Name +hrm.HrmApplicationMaintenance.subject=Subject +hrm.HrmApplicationMaintenance.relatedToEmp=Related To Employee +hrm.HrmApplicationMaintenance.relatedEmpName=Related Employee Name +hrm.HrmApplicationMaintenance.relatedEmpN0=Employee No +hrm.HrmApplicationMaintenance.religion=Religion +hrm.HrmApplicationMaintenance.healthRecord=Health Record[Max 100 Characters] +hrm.HrmApplicationMaintenance.prevEmpFlag=Previously Employed Here +hrm.HrmApplicationMaintenance.prevEmpDtls=If Yes, Details[Max 100 Characters] +hrm.HrmApplicationMaintenance.hobbies=Hobbies[Max 100 Characters] +hrm.HrmApplicationMaintenance.grossExpected=Gross Salary Expected +hrm.HrmApplicationMaintenance.addlInfo=Any Addl. Information + +hrm.HrmApplicationMaintenance.dateConstraintViolated=Period To cannot be prior to Period From +hrm.HrmApplicationMaintenance.dateConstraintViolated1=Period From cannot be a future date. +hrm.HrmApplicationMaintenance.dateConstraintViolated2=Period To cannot be a future date. + +hrm.HrmApplicationMaintenance.passportNo=Passport No. +hrm.HrmApplicationMaintenance.placeOfIssue=Place Of Issue +hrm.HrmApplicationMaintenance.expiryDate=Expiry date +hrm.HrmApplicationMaintenance.issueDate=Issue Date +hrm.HrmApplicationMaintenance.chequeNo=Cheque/DD No +hrm.HrmApplicationMaintenance.submittedAmount=Submitted Amount +hrm.HrmApplicationMaintenance.submissionDate=Submission Date +hrm.HrmApplicationMaintenance.arrestedBefore=Arrested Before +hrm.HrmApplicationMaintenance.imprisonedBefore=Imprisoned Before +hrm.HrmApplicationMaintenance.finedByCourt=Fined By Court +hrm.HrmApplicationMaintenance.prosecutedBefore=Prosecuted Before +hrm.HrmApplicationMaintenance.reasons=Reasons[Max 250 Characters] +hrm.HrmApplicationMaintenance.name=Name +hrm.HrmApplicationMaintenance.phone=Phone +hrm.HrmApplicationMaintenance.position=Position +hrm.HrmApplicationMaintenance.address=Address +hrm.HrmApplicationMaintenance.country=Country +hrm.HrmApplicationMaintenance.state=State +hrm.HrmApplicationMaintenance.city=City +hrm.HrmApplicationMaintenance.pin=Pin +hrm.HrmApplicationMaintenance.phone=Phone + +hrm.HrmApplicationMaintenance.testCenter=Test Center +hrm.HrmApplicationMaintenance.wScoreA=Written Score +hrm.HrmApplicationMaintenance.wScoreB=GD Score +hrm.HrmApplicationMaintenance.iScore=Interview Score(1) +hrm.HrmApplicationMaintenance.iScore2=Interview Score(2) +hrm.HrmApplicationMaintenance.iScore3=Interview Score(3) +hrm.HrmApplicationMaintenance.failedWrittenA=Qualified For Written +hrm.HrmApplicationMaintenance.failedWrittenB=Qualified For GD +hrm.HrmApplicationMaintenance.failedInterview=Qualified For Interview(1) +hrm.HrmApplicationMaintenance.qualInterview2=Qualified For Interview(2) +hrm.HrmApplicationMaintenance.qualInterview3=Qualified For Interview(3) +hrm.HrmApplicationMaintenance.panelRanking=Rating +hrm.HrmApplicationMaintenance.medicalCleared=Medical Cleared +hrm.HrmApplicationMaintenance.disqualified=Offer Accepted + +hrm.HrmApplicationMaintenance.periodFrom=Period From in MMYYYY +hrm.HrmApplicationMaintenance.periodTo=Period To in MMYYYY +hrm.HrmApplicationMaintenance.organisation=Organisation Name +hrm.HrmApplicationMaintenance.location=Location +hrm.HrmApplicationMaintenance.designationCode=Designation +hrm.HrmApplicationMaintenance.workExp=Work Experience (In Months) +hrm.HrmApplicationMaintenance.reportTo=Report To (Name/Designation) +hrm.HrmApplicationMaintenance.skillCode=Skill Code +hrm.HrmApplicationMaintenance.workDesc=Job Description/Responsibility +hrm.HrmApplicationMaintenance.noOfPersonnel=No Of Personel Supervised +hrm.HrmApplicationMaintenance.startingSal=Starting Salary (Per Month) +hrm.HrmApplicationMaintenance.leavingSal=Leaving Salary (Per Month) +hrm.HrmApplicationMaintenance.basic=Basic (Last Drawn) +hrm.HrmApplicationMaintenance.da=DA (Last Drawn) +hrm.HrmApplicationMaintenance.hra=HRA (Last Drawn) +hrm.HrmApplicationMaintenance.conv=Conveyance (Last Drawn) +hrm.HrmApplicationMaintenance.incentives=Incentives (Last Drawn) +hrm.HrmApplicationMaintenance.bonus=Bonus (Last Drawn) +hrm.HrmApplicationMaintenance.dearnessAllowance=Dearness Allowance +hrm.HrmApplicationMaintenance.otherAllowances=Other Allowances(Last Drawn) +hrm.HrmApplicationMaintenance.fromToYear=Period To must be greater than Period From + +hrm.HrmApplicationMaintenance.instCode=Name Of Institution +hrm.HrmApplicationMaintenance.examPassed=Exam Passed +hrm.HrmApplicationMaintenance.qualification=Qualification +hrm.HrmApplicationMaintenance.splSubj=Specialisation +hrm.HrmApplicationMaintenance.admissionYear=Admission Year +hrm.HrmApplicationMaintenance.passYear=Pass Year +hrm.HrmApplicationMaintenance.percentageMarks=Percentage +hrm.HrmApplicationMaintenance.majorSubj=Major Subjects +hrm.HrmApplicationMaintenance.class=Class +hrm.HrmApplicationMaintenance.splRemarks=Special Remarks +hrm.HrmApplicationMaintenance.otherQualification=Other Professional Qualification (Including IT) +hrm.HrmApplicationMaintenance.splCourseAttended=Specialised Courses Attended (Including IT) + +hrm.HrmApplicationMaintenance.languageCode=Language Code +hrm.HrmApplicationMaintenance.knowledgeLevel=Knowledge Level + +hrm.HrmApplicationMaintenance.perDtl=Personal Details +hrm.HrmApplicationMaintenance.addDtl=Personal Details +hrm.HrmApplicationMaintenance.expDtl=Experience Details +hrm.HrmApplicationMaintenance.langDtl=Language Details +hrm.HrmApplicationMaintenance.resultDtl=Result Details +hrm.HrmApplicationMaintenance.eduDtl=Educational Details +hrm.HrmApplicationMaintenance.otherDtl=Result Details +hrm.HrmApplicationMaintenance.trainingDtls=Pre-Employment Training Details +hrm.HrmApplicationMaintenance.references=References + + +hrm.HrmLeaveEligibility.mainHeader=LEAVE ELIGIBILITY RULES +hrm.HrmLeaveEligibility.subHeader1=Leave Detail +hrm.HrmLeaveEligibility.subHeader2=Leave Eligibility Conditions +hrm.HrmLeaveEligibility.leaveCode=Leave Code +hrm.HrmLeaveEligibility.designation=Designation +hrm.HrmLeaveEligibility.scale=Scale +hrm.HrmLeaveEligibility.grade=Grade +hrm.HrmLeaveEligibility.level=Level +hrm.HrmLeaveEligibility.tataDvb=TATA-DVB + + +hrm.HrmLeaveEncashment.mainHeader=LEAVE ENCASHMENT BATCH +hrm.HrmLeaveEncashment.subHeader1=Employee Details +hrm.HrmLeaveEncashment.subHeader2=Leave Encashment Details +hrm.HrmLeaveEncashment.employeeNo=Employee No. +hrm.HrmLeaveEncashment.empNo=Employee No. +hrm.HrmLeaveEncashment.employeeName=Employee Name +hrm.HrmLeaveEncashment.cd=CD +hrm.HrmLeaveEncashment.applicationDate=Application Date +hrm.HrmLeaveEncashment.leaveCode=Leave Code +hrm.HrmLeaveEncashment.description=Description +hrm.HrmLeaveEncashment.noOfLeaves=No.of Days Encashed +hrm.HrmLeaveEncashment.encashedAmount=Encashed Amount +hrm.HrmLeaveEncashment.leavePeriodicity=Leave Periodicity +hrm.HrmLeaveEncashment.leaveLimit=Leave Limit +hrm.HrmLvEncash.EncashDispute= Leave encashment can be done only once in a calendar year. + +!modified on 9th Feb 2006 Leave Cancellation +hrm.HrmLeaveCancellation.mainHeader=LEAVE CANCELLATION +hrm.HrmLeaveCancellation.subHeader1=Employee Details +hrm.HrmLeaveCancellation.subHeader3=Cancellation Detail +hrm.HrmLeaveCancellation.subHeader4=Leave Details +hrm.HrmLeaveCancellation.employeeNo=Employee Number +hrm.HrmLeaveCancellation.leaveCode=Leave Code +hrm.HrmLeaveCancellation.leaveDescription=Description +hrm.HrmLeaveCancellation.employeeName=Employee Name +hrm.HrmLeaveCancellation.dateApplied=Date Applied +hrm.HrmLeaveCancellation.empNo=Employee No. +hrm.HrmLeaveCancellation.cd=CD +hrm.HrmLeaveCancellation.leaveApplied=Leave Applied +hrm.HrmLeaveCancellation.cancellationType=Cancellation Type +hrm.HrmLeaveCancellation.fromCancelDate=From Date +hrm.HrmLeaveCancellation.toCancelDate=To Date +hrm.HrmLeaveCancellation.fromDate=From Date +hrm.HrmLeaveCancellation.toDate=To Date +hrm.HrmLeaveCancellation.days=Number of Days +hrm.HrmLeaveCancellation.leaveBreakUp=Leave Break Up +hrm.HrmLeaveCancellation.dateApplied=Date Applied +hrm.HrmLeaveCancellation.cancelDays=Number of Days +hrm.HrmLeaveCancellation.statusOfLeave=Cancellation Type +hrm.HrmLeaveCancellation.new=New +hrm.HrmLeaveCancellation.approved=Approved +hrm.HrmLeaveCancellation.rejected=Rejected +hrm.HrmLeaveCancellation.pending=Pending +hrm.HrmLeaveCancellation.revised=Revised +hrm.HrmLeaveCancellation.purpose=Reason +hrm.HrmLeaveCancellation.cancelRemarks=Approver's Remarks +hrm.HrmLeaveCancellation.cancellationType=Cancellation Type +hrm.HrmLeaveCancellation.partial=Partial +hrm.HrmLeaveCancellation.full=Full +hrm.HrmLeaveCancellation.address=Address For Communication +hrm.HrmLeaveCancellation.phoneNo=Phone No. +hrm.HrmLeaveCancellation.designation=Designation +hrm.HrmLeaveCancellation.scaleOfPay=Scale Of Pay +hrm.HrmLeaveCancellation.cancelStatus=Status +hrm.HrmLeaveCancellation.pending=Pending +hrm.HrmLeaveCancellation.new=New +hrm.HrmLeaveCancellation.approved=Approved +hrm.HrmLeaveCancellation.rejected=Rejected +hrm.HrmLeaveCancellation.cancelDateApplied=Date Applied +hrm.HrmLeaveCancellation.noCancel=Not Cancelled +hrm.HrmLeaveCancellation.cancSide=Cancellation Type +hrm.HrmLeaveCancellation.first=From Beginning +hrm.HrmLeaveCancellation.Second=From End +hrm.HrmLeaveCancellation.full=Full +hrm.HrmLeaveCancellation.grade=Grade +hrm.HrmLeaveCancellation.desig=Designation +hrm.HrmLeaveCancellation.location=Location +hrm.HrmLeaveCancellation.FirstName=First Name +hrm.HrmLeaveCancellation.MiddleName=Middle Name +hrm.HrmLeaveCancellation.LastName=Last Name + + +hrm.HrmLeaveEncashmentReport.mainHeader=LEAVE ENCASHMENT REPORT +hrm.HrmLeaveEncashmentReport.subHeader1=Report To Be Generated +hrm.HrmLeaveEncashmentReport.subHeader2=Duration +hrm.HrmLeaveEncashmentReport.subHeader3=Employee Details +hrm.HrmLeaveEncashmentReport.subHeader4=Leave Details +hrm.HrmLeaveEncashmentReport.leaveFromDate=Leave From Date +hrm.HrmLeaveEncashmentReport.leaveToDate=Leave To date +hrm.HrmLeaveEncashmentReport.employeeWise=Employee Wise +hrm.HrmLeaveEncashmentReport.leaveWise=Leave Wise +hrm.HrmLeaveEncashmentReport.employeeNo=Employee No. +hrm.HrmLeaveEncashmentReport.leaveCode=Leave Code + +hrm.HrmEmployeeLeaveReport.mainHeader=EMPLOYEE LEAVE REPORT +hrm.HrmEmployeeLeaveReport.subHeader1=Report To Be Generated +hrm.HrmEmployeeLeaveReport.subHeader2=Employee Details +hrm.HrmEmployeeLeaveReport.subHeader3=Leave Details +hrm.HrmEmployeeLeaveReport.subHeader4=Duration +hrm.HrmEmployeeLeaveReport.leaveFromDate=Leave From Date +hrm.HrmEmployeeLeaveReport.leaveToDate=Leave To date +hrm.HrmEmployeeLeaveReport.employeeWise=Employee Wise +hrm.HrmEmployeeLeaveReport.leaveWise=Leave Wise +hrm.HrmEmployeeLeaveReport.employeeNo=Employee No. +hrm.HrmEmployeeLeaveReport.leaveCode=Leave Code +hrm.HrmEmployeeLeaveReport.employeeName=Employee Name +hrm.HrmEmployeeLeaveReport.leaveDescription=Leave Description + + +hrm.HrmLeaveAssociation.mainHeader=LEAVE ASSOCIATION +hrm.HrmLeaveAssociation.subHeader=Leave Association Information +hrm.HrmLeaveAssociation.leaveCode=Leave Code +hrm.HrmLeaveAssociation.leaveDescription=Leave Description +hrm.HrmLeaveAssociation.associatedLeaveCode=Associated Leave Code +hrm.HrmLeaveAssociation.associatedLeaveDescription=Associated Leave Description +hrm.HrmLeaveAssociation.detailConsistency=This leave is already associated with the given associated leave + +hrm.HrmLeaveMaster.mainHeader=LEAVE MASTER +hrm.HrmLeaveMaster.subHeader1=Leave Details +hrm.HrmLeaveMaster.subHeader2=Leave Definition +hrm.HrmLeaveMaster.subHeader3=Encashment Details +hrm.HrmLeaveMaster.subHeader4=Applicable To +hrm.HrmLeaveMaster.subHeader5=Leave Attributes +hrm.HrmLeaveMaster.leaveCode=Leave Code +hrm.HrmLeaveMaster.applicableTo=Applicable To +hrm.HrmLeaveMaster.description=Description +hrm.HrmLeaveMaster.evidenceRequired=Evidence Required +hrm.HrmLeaveMaster.evidenceDescription=Evidence Description[Max 40 Characters] +hrm.HrmLeaveMaster.prefixSuffix=Prefix Allowed +hrm.HrmLeaveMaster.suffix=Suffix Allowed +hrm.HrmLeaveMaster.intermediateHoliday=Intermediate Holiday Allowed +hrm.HrmLeaveMaster.leaveObsolete=Leave Obsolete +hrm.HrmLeaveMaster.encashable=Encashable +hrm.HrmLeaveMaster.encashableLimit=Encashable Limit In A Period +hrm.HrmLeaveMaster.days=Days +hrm.HrmLeaveMaster.periodicity=Periodicity +hrm.HrmLeaveMaster.calendar=Calendar +hrm.HrmLeaveMaster.male=Male +hrm.HrmLeaveMaster.female=Female +hrm.HrmLeaveMaster.both=Both +hrm.HrmLeaveMaster.leaveDescription=Leave Description +hrm.HrmLeaveMaster.effectiveFrom=Effective From [yyyymm] +hrm.HrmLeaveMaster.effectiveTo=Effective To [yyyymm] +hrm.HrmLeaveMaster.minimumServicePeriod=Minimum Service Period [Years] +hrm.HrmLeaveMaster.maximumAccumulationLimit=Maximum Accumulation Limit +hrm.HrmLeaveMaster.totalAvailableLimit=Total Available Limit +hrm.HrmLeaveMaster.advanceLimit=Advance Limit +hrm.HrmLeaveMaster.maxTxn=Max Transaction Per Period +hrm.HrmLeaveMaster.minLeavePerTxn=Min Leave Per Transaction +hrm.HrmLeaveMaster.dependantOnWorkingDays=Dependant On Working Days +hrm.HrmLeaveMaster.unit=Unit (Days Worked) +hrm.HrmLeaveMaster.creditFrequency=Credit Frequency +hrm.HrmLeaveMaster.maxCreditLimit=Max Credit Limit +hrm.HrmLeaveMaster.leavesCredited=Leaves Credited/Period +hrm.HrmLeaveMaster.applicableToAll=Applicable To All +hrm.HrmLeaveMaster.lapsable=Lapsable +hrm.HrmLeaveMaster.beginMonth=Begin Month +hrm.HrmLeaveMaster.durationMonth=Duration Month +hrm.HrmLeaveMaster.calendarType=Calendar Type +hrm.HrmLeaveMaster.all=All +hrm.HrmLeaveMaster.stateCode=State Code + + +hrm.HrmLeaveApplication.mainHeader=LEAVE APPLICATION BATCH +hrm.HrmLeaveApplication.subHeader1=Application Batch Header +hrm.HrmLeaveApplication.dateApplied=Date Applied +hrm.HrmLeaveApplication.fromDate=From Date +hrm.HrmLeaveApplication.toDate=To Date +hrm.HrmLeaveApplication.fromDate=From Date +hrm.HrmLeaveApplication.toDate=To Date +hrm.HrmLeaveApplication.leaveCode=Leave Code +hrm.HrmLeaveApplication.days=Days +hrm.HrmLeaveApplication.leaveBreakUp=Leave Break Up +hrm.HrmLeaveApplication.purpose=Purpose +hrm.HrmLeaveApplication.remark=Remark +hrm.HrmLeaveApplication.employeeNumber=Employee No. +hrm.HrmLeaveApplication.leaveType=Leave Type +hrm.HrmLeaveApplication.employeeNo=Employee No. +hrm.HrmLeaveApplication.employeeName=Employee Name +hrm.HrmLeaveApplication.leaveDescription=Leave Description +hrm.HrmLeaveApplication.cd=CD + +hrm.HrmLeaveApplication.fromYear.optedFor.validation={0} Is Same As {1} So You Can Not {2} 2 Years +hrm.HrmLeaveApplication.fromYear.prevYear.validation={0} Can Not Be Before {1} Or After {2} +hrm.HrmLeaveApplication.duplicateLTA=You Are Trying To Apply LTA For The Year You Have Already Applied. Data Can Not Be Saved +hrm.HrmLeaveApplication.notEligibleLTA=You Are Not Eligible For LTA. Data Is Not Saved +hrm.HrmLeaveApplication.notEligible2YearLTA=You Are Not Eligible For This Year LTA. Since You Havn't Completed 2 Years. Data Is Not Saved. + +hrm.HrmLeaveLedger.mainHeader=EMPLOYEE LEAVE LEDGER +hrm.HrmLeaveLedger.subHeader1=Leave Query +hrm.HrmLeaveLedger.subHeader2=Employee Leave Status +hrm.HrmLeaveLedger.subHeader3=Employee Leave Transaction +hrm.HrmLeaveLedger.employeeNo=Employee No. +hrm.HrmLeaveLedger.leaveCode=Leave Type +hrm.HrmLeaveLedger.empNo=Employee No. +hrm.HrmLeaveLedger.leaveTypes=Leave Type +hrm.HrmLeaveLedger.creditDate=Credit Date +hrm.HrmLeaveLedger.openingBalance=Opening Balance +hrm.HrmLeaveLedger.leavesCredited=Leaves Credited +hrm.HrmLeaveLedger.leavesTaken=Leaves Taken +hrm.HrmLeaveLedger.leavesEncashed=Leaves Encashed +hrm.HrmLeaveLedger.leaveBalance=Leave Balance +hrm.HrmLeaveLedger.employeeName=Employee Name +hrm.HrmLeaveLedger.leaveDescription=Leave Description +hrm.HrmLeaveLedger.leavePending=Pending Approval + + + +hrm.HrmEmpRecCreation.heading=EMPLOYEE RECORD CREATION +hrm.HrmEmpRecCreation.applicationNo=Application No +hrm.HrmEmpRecCreation.advNo=Advertisement No +hrm.HrmEmpRecCreation.newEmpNo=New Employee No +hrm.HrmEmpRecCreation.employeeName=Employee Name +hrm.HrmEmpRecCreation.appForPosition=Application For Grade/Designation +hrm.HrmEmpRecCreation.entryMode=Entry Mode +hrm.HrmEmpRecCreation.rollNo=Roll No +hrm.HrmEmpRecCreation.male=Male +hrm.HrmEmpRecCreation.female=Female +hrm.HrmEmpRecCreation.guardianName=Guardian Name +hrm.HrmEmpRecCreation.motherTongue=Mother Tongue +hrm.HrmEmpRecCreation.community=Community +hrm.HrmEmpRecCreation.dateOfBirth=Date Of Birth +hrm.HrmEmpRecCreation.placeOfBirth=Place Of Birth +hrm.HrmEmpRecCreation.nationality=Nationality +hrm.HrmEmpRecCreation.bloodGroup=Blood Group +hrm.HrmEmpRecCreation.height=Height +hrm.HrmEmpRecCreation.maritalStatus=Marital Status +hrm.HrmEmpRecCreation.sex=Sex +hrm.HrmEmpRecCreation.reservationCategory=Social Status +hrm.HrmEmpRecCreation.religion=Religion +hrm.HrmEmpRecCreation.noOfDependants=No Of Dependants +hrm.HrmEmpRecCreation.eMail=E-Mail +hrm.HrmEmpRecCreation.arrested=Arrested +hrm.HrmEmpRecCreation.fined=Fined +hrm.HrmEmpRecCreation.imprisoned=Imprisoned +hrm.HrmEmpRecCreation.proscecuted=Proscecuted +hrm.HrmEmpRecCreation.handicappedFlag=Handicapped Flag +hrm.HrmEmpRecCreation.placeOfissue=Place Of Issue +hrm.HrmEmpRecCreation.passportNo=Passport No +hrm.HrmEmpRecCreation.expiryDate=Expiry Date +hrm.HrmEmpRecCreation.issueDate=Issue Date +hrm.HrmEmpRecCreation.cms= Cms +hrm.HrmEmpRecCreation.office=Office Address +hrm.HrmEmpRecCreation.address=Address +hrm.HrmEmpRecCreation.country=Country +hrm.HrmEmpRecCreation.state=State +hrm.HrmEmpRecCreation.city=City +hrm.HrmEmpRecCreation.phone=Phone +hrm.HrmEmpRecCreation.pinCode=Pin Code +hrm.HrmEmpRecCreation.appointmentOrder=Appointment Order +hrm.HrmEmpRecCreation.appointmentOrderDate=Appointment Order Date +hrm.HrmEmpRecCreation.companyJoiningDate=Bank Joining Date +hrm.HrmEmpRecCreation.locationJoiningDate=Current Location Joining Date +hrm.HrmEmpRecCreation.tentativeConfirmDate=Tentative Confirmation Date +hrm.HrmEmpRecCreation.retirementDate=Retirement Date +hrm.HrmEmpRecCreation.baseSite=Base Site +hrm.HrmEmpRecCreation.designation=Designation +hrm.HrmEmpRecCreation.scale=Scale +hrm.HrmEmpRecCreation.level=Level +hrm.HrmEmpRecCreation.basicOffered=Basic Offered +hrm.HrmEmpRecCreation.grade=Grade +hrm.HrmEmpRecCreation.bankSalAcc=Bank Salary Account +hrm.HrmEmpRecCreation.costCentre=Cost Centre +hrm.HrmEmpRecCreation.accountNo=Account No +hrm.HrmEmpRecCreation.employeeType=Employee Type +hrm.HrmEmpRecCreation.joiningGroup=Joining Group +hrm.HrmEmpRecCreation.allocationEndDate=Allocation Start Date +hrm.HrmEmpRecCreation.techNonTech=Tech/NonTech +hrm.HrmEmpRecCreation.yes=Yes +hrm.HrmEmpRecCreation.no=No +hrm.HrmEmpRecCreation.code=Code +hrm.HrmEmpRecCreation.desc=Description +hrm.HrmEmpRecCreation.hierarchyLevel=Hierarchy Level +hrm.HrmEmpRecCreation.foreign=Foreign +hrm.HrmEmpRecCreation.indian=Indian +hrm.HrmEmpRecCreation.nri=NRI +hrm.HrmEmpRecCreation.D=Divorcee +hrm.HrmEmpRecCreation.S=Separated +hrm.HrmEmpRecCreation.U=Unmarried +hrm.HrmEmpRecCreation.F=Foreign National Spouse +hrm.HrmEmpRecCreation.W=Widow +hrm.HrmEmpRecCreation.M=Married +hrm.HrmEmpRecCreation.R=Widower +hrm.HrmEmpRecCreation.A=Advertisement +hrm.HrmEmpRecCreation.F=Force Application +hrm.HrmEmpRecCreation.R=Refferal +hrm.HrmEmpRecCreation.C=Campus Recruitment +wenrgise.HrmEmpRecCreation.dateConstraintViolated=Allocation Start Date Should Be Greater Than Location Joining Date +hrm.HrmEmpRecCreation.P=Probationer +hrm.HrmEmpRecCreation.T=Trainee +hrm.HrmEmpRecCreation.R=Regular +hrm.HrmEmpRecCreation.DI=Deputed In +hrm.HrmEmpRecCreation.DO=Deputed Out +hrm.HrmEmpRecCreation.DT=Temp. Deputation +hrm.HrmEmpRecCreation.TF=Under Transfer +wenrgise.hrms.recordCreation.uniqueConstraintViolated=Employee Number Should be Unique. +hrm.HrmEmpRecCreation.relatedEmployee=Related Employee +hrm.HrmEmpRecCreation.uniqueHeader=This record is already saved. +hrm.HrmEmpRecCreation.mandatory={0} field missing in {1} section. + + +hrm.HrmHrmAppraisalKPA.heading=APPRAISAL KPA +hrm.HrmHrmAppraisalKPA.appraisalKPAHeader=Key Performance Area +hrm.HrmHrmAppraisalKPA.kpaGroupCode=KPA Group Code +hrm.HrmHrmAppraisalKPA.description=Description +hrm.HrmHrmAppraisalKPA.detail=Key Performance Area Detail +hrm.HrmHrmAppraisalKPA.txtKpaCode=KPA Code +hrm.HrmHrmAppraisalKPA.txtDescription=Description +hrm.HrmHrmAppraisalKPA.txtMandatoryFlag=Mandatory Flag +hrm.HrmHrmAppraisalKPA.txtWeightage=Weightage(In Percentage) +hrm.HrmHrmAppraisalKPA.txtAppraiserType=Appraiser Type +hrm.HrmHrmAppraisalKPA.ratingRequired=Rating Required +hrm.HrmHrmAppraisalKPA.select=----------PLEASE SELECT---------- +hrm.HrmHrmAppraisalKPA.appraiser=Appraiser +hrm.HrmHrmAppraisalKPA.self=Self +hrm.HrmHrmAppraisalKPA.reviwer=Reviwer +hrm.HrmAppKPAForm.KPAGrpCode=KPA GroupCode +hrm.HrmAppKPAForm.description=Description +hrm.HrmHrmAppraisalKPA.txtSrlNo=Serial No. +hrm.HrmHrmAppraisalKPA.statusOfHeader=Status + + + + +hrm.HrmHrmAprslStartRule.heading=APPRAISAL START RULE +hrm.HrmAprslStartRule.appraisalRule=Appraisal Rule +hrm.HrmAprslStartRule.aprslStartOrderNo=Appr Start Order No +hrm.HrmAprslStartRule.siteCode=Site Code +hrm.HrmAprslStartRule.workGroupCode=Work Group Code +hrm.HrmAprslStartRule.classHeaderCode=Class Header Code +hrm.HrmAprslStartRule.classDetailCode=Class Detail Code +hrm.HrmAprslStartRule.employeeCode=Employee No +hrm.HrmAprslStartRule.employeeNo=Employee No +hrm.HrmAprslStartRule.employeeName=Employee Name +hrm.HrmAprslStartRule.heading=APPRAISAL RULE +hrm.HrmAprslStartRule.detail=Rule Detail +hrm.HrmAprslStartRule.classDetailDesc=Class Detail Description +hrm.HrmAprslStartRule.classHeaderDesc=Class Header Description + +hrm.HrmAppraisalKPAWeightage.heading=APPRAISAL KPA WEIGHTAGE +hrm.HrmAppraisalKPAWeightage.header=Appraisal Template +hrm.HrmAppraisalKPAWeightage.appTemplateName=Appraisal Template Name +hrm.HrmAppraisalKPAWeightage.detail=Weightage For Template KPA +hrm.HrmAppraisalKPAWeightage.kpaGroupCode=KPA Group Code +hrm.HrmAppraisalKPAWeightage.weightage=Weightage[%] + +hrm.HrmKPAWeightBatch.heading=EMPLOYEE KPA WEIGHTAGE +hrm.HrmKPAWeightBatch.header=Weightage Header +hrm.HrmKPAWeightBatch.detail=Weightage Detail +hrm.HrmKPAWeightBatch.weightageCode=Weightage Code +hrm.HrmKPAWeightBatch.weightage=Weightage +hrm.HrmKPAWeightBatch.txtKpaWeightageCode=KPA Weightage Code +hrm.HrmKPAWeightBatch.txtKpaWeightage=KPA Weightage +hrm.HrmKPAWeightBatch.txtKpaWeightageDesc=KPA Weightage Description + +hrm.HrmAppraisalOrder.heading=APPRAISAL ORDER +hrm.HrmAppraisalOrder.header=Appraisal Order Details +hrm.HrmAppraisalOrder.orderNo=Appraisal Order No +hrm.HrmAppraisalOrder.orderDate=Order Date +hrm.HrmAppraisalOrder.startPeriod=Start Period +hrm.HrmAppraisalOrder.endPeriod=End Period +hrm.HrmAppraisalOrder.completionDate=Completion Date +hrm.HrmAppraisalOrder.locationCode=Location Code +hrm.HrmAppraisalOrder.locationName=Location Name + +hrm.HrmAppraiseeMap.heading=APPRAISEE APPRAISER MAP +hrm.HrmAppraiseeMap.header=Appraisee Detail +hrm.HrmAppraiseeMap.empNo=Employee No +hrm.HrmAppraiseeMap.empName=Employee Name +hrm.HrmAppraiseeMap.superior=Superior Or Reviewer Appraiser +hrm.HrmAppraiseeMap.peer=Peer Or Subordinate Appraiser +hrm.HrmAppraiseeMap.txtEmpNo=Employee No +hrm.HrmAppraiseeMap.txtName=Name +hrm.HrmAppraiseeMap.txtRevSup=Reviewer/Superior +hrm.HrmAppraiseeMap.txtLevel=Level +hrm.HrmAppraiseeMap.txtPeerSub=Peer/Subordinate +hrm.HrmAppraiseeMap.reviewer=Reviewer +hrm.HrmAppraiseeMap.superiors=Superior +hrm.HrmAppraiseeMap.peers=Peer +hrm.HrmAppraiseeMap.subordinate=Subordinate +hrm.HrmAppraiseeMap.employeeNo=Employee No + + +hrm.HrmSepFullFinalSettlement.heading=FULL AND FINAL SETTLEMENT OUTPUT +hrm.HrmSepFullFinalSettlement.employeeNo=Employee No. +hrm.HrmSepFullFinalSettlement.periodStartDt=Period Start Date +hrm.HrmSepFullFinalSettlement.periodEndDt=Period End Date +hrm.HrmSepFullFinalSettlement.sepDt=Separation Date +hrm.HrmSepFullFinalSettlement.earningDue=Earning Due +hrm.HrmSepFullFinalSettlement.deductionDue=Deduction Due +hrm.HrmSepFullFinalSettlement.pfCompanyDue=PF Company Due +hrm.HrmSepFullFinalSettlement.pfSelfDue=PF Self Due +hrm.HrmSepFullFinalSettlement.loanPrincipalDue=Loan Principal Due +hrm.HrmSepFullFinalSettlement.loanInterestDue=Loan Interest Due +hrm.HrmSepFullFinalSettlement.advanceDue=Advance Due +hrm.HrmSepFullFinalSettlement.leaveEncashDue=Leave Encash Due + +hrm.HrmSepFullFinalSettlement.earngDeducFlag=Earning or Deduction Flag +hrm.HrmSepFullFinalSettlement.code=Code +hrm.HrmSepFullFinalSettlement.description=Description +hrm.HrmSepFullFinalSettlement.totalDue=Total Due + +hrm.HrmSepFullFinalSettlement.loanAdvFlag=Loan or Advance Flag +hrm.HrmSepFullFinalSettlement.princAmt=Principal Amount +hrm.HrmSepFullFinalSettlement.princAmtPaid=Principal Amount Paid +hrm.HrmSepFullFinalSettlement.totIntAccrued=Total Interest Accrued +hrm.HrmSepFullFinalSettlement.totIntPaid=Total Interest Paid +hrm.HrmSepFullFinalSettlement.amtOutstanding=Amount Outstanding +hrm.HrmSepFullFinalSettlement.lAStatus=Status + +hrm.HrmSepFullFinalSettlement.leaveDesc=Leave Description +hrm.HrmSepFullFinalSettlement.encashableFlag=Encashable Flag +hrm.HrmSepFullFinalSettlement.leaveOutstanding=Leave Outstanding + + + + +hrm.HrmAllocation.mainHeader=ALLOCATION FOR MULTIPLE EMPLOYEES +hrm.HrmAllocation.subHeader1=Allocation Header +hrm.HrmAllocation.subHeader2=Allocation Detail +hrm.HrmAllocation.employeeNo=Employee Number +hrm.HrmAllocation.fromStartDate=From Start Date +hrm.HrmAllocation.toStartDate=To Start Date +hrm.HrmAllocation.empNo=Employee No. +hrm.HrmAllocation.cd=CD +hrm.HrmAllocation.allocationOrderNo=Allocation Order No. +hrm.HrmAllocation.allocationOrderDate=Allocation Order Date +hrm.HrmAllocation.releaseOrderNo=Release Order No. +hrm.HrmAllocation.startDate=Start Date +hrm.HrmAllocation.endDate=End Date +hrm.HrmAllocation.toDeptCode=To Dept.Code +hrm.HrmAllocation.reportingEmployee=Reporting Employee +hrm.HrmAllocation.status=Status +hrm.HrmAllocation.insert=Insert +hrm.HrmAllocation.update=Update +hrm.HrmAllocation.delete=Delete + + +hrm.HrmTransfer.mainHeader=TRANSFER FOR MULTIPLE EMPLOYEES +hrm.HrmTransfer.subHeader1=Transfer Header +hrm.HrmTransfer.subHeader2=Transfer Detail +hrm.HrmTransfer.employeeNo=Employee Number +hrm.HrmTransfer.fromDate=From Date +hrm.HrmTransfer.toDate=To Date +hrm.HrmTransfer.orderNo=Order No. +hrm.HrmTransfer.empNo=EmpNo. +hrm.HrmTransfer.cd=CD +hrm.HrmTransfer.orderNumber=Order No. +hrm.HrmTransfer.orderDate=Order Date +hrm.HrmTransfer.effectDate=Effect Date +hrm.HrmTransfer.toDept=To Dept. +hrm.HrmTransfer.reportingEmpCode=Reporting Employee No. +hrm.HrmTransfer.reportingDate=Reporting Date +hrm.HrmTransfer.orderStatus=Order Status +hrm.HrmTransfer.recordStatus=Record Status +hrm.HrmTransfer.toSiteCode=To Site Code +hrm.HrmTransfer.insert=Insert +hrm.HrmTransfer.update=Update +hrm.HrmTransfer.delete=Delete + + +hrm.HrmDeputation.mainHeader=DEPUTATION FOR MULTIPLE EMPLOYEES +hrm.HrmDeputation.subHeader1=Deputation Header +hrm.HrmDeputation.subHeader2=Deputation Out Detail +hrm.HrmDeputation.employeeNo=Employee Number +hrm.HrmDeputation.fromDate=From Date +hrm.HrmDeputation.toDate=To Date +hrm.HrmDeputation.empNo=Employee No. +hrm.HrmDeputation.cd=CD +hrm.HrmDeputation.orderNumber=Order No. +hrm.HrmDeputation.orderDate=Order Date +hrm.HrmDeputation.startDate=Start Date +hrm.HrmDeputation.endDate=End Date +hrm.HrmDeputation.deputationType=Deputation Type +hrm.HrmDeputation.locationCode=Location Code +hrm.HrmDeputation.deputedCompAddress=Deputed Company Address +hrm.HrmDeputation.reportingEmpCode=Reporting Employee Code +hrm.HrmDeputation.reportingBackDate=Reporting Back Date +hrm.HrmDeputation.recordStatus=Record Status +hrm.HrmDeputation.insert=Insert +hrm.HrmDeputation.update=Update +hrm.HrmDeputation.delete=Delete +hrm.HrmDeputation.tentativeEndDate=Tentative End Date +hrm.HrmDeputation.phoneNo=Phone No. +hrm.HrmDeputation.emailId=E-mail Id +hrm.HrmDeputation.faxNo=Fax No. +hrm.HrmDeputation.reportingEmpName=Reporting Emp. Name + + + + +hrm.HrmTransferOrder.mainHeader=TRANSFER ORDER REPORT +hrm.HrmTransferOrder.subHeader1=Transfer Order Detail +hrm.HrmTransferOrder.transferOrderNo=Transfer Order Number +hrm.HrmTransferOrder.fromOrderDate=Transfer From Order Date +hrm.HrmTransferOrder.orderToDate=Transfer Order To Date +hrm.HrmTransferOrder.issuedBy=Issued By +hrm.HrmTransferOrder.heading=Heading +hrm.HrmTransferOrder.ccTo=Cc To +hrm.HrmTransferOrder.empNo=Employee No. +hrm.HrmAppraisalTemplate.heading=APPRAISAL TEMPLATE MASTER +hrm.HrmAppraisalTemplate.header=Appraisal Template +hrm.HrmAppraisalTemplate.templateName=Template Name +hrm.HrmAppraisalTemplate.obsolete=Obsolete +hrm.HrmAppraisalTemplate.applicableToAll=Applicable To All +hrm.HrmAppraisalTemplate.ratingCode=Rating Code +hrm.HrmAppraisalTemplate.srlNo=Srl.No. +hrm.HrmAppraisalTemplate.sectionCode=Section Code +hrm.HrmAppraisalTemplate.appraiserType=Appraiser Type +hrm.HrmAppraisalTemplate.templateRemarks=Template Remarks +hrm.HrmAppraisalTemplate.parentSection=Parent Section +hrm.HrmAppraisalTemplate.contentType=Content Type +hrm.HrmAppraisalTemplate.sectionWeightage=Section Weightage[%] +hrm.HrmAppraisalTemplate.selfAppraisal=Self Appraisal +hrm.HrmAppraisalTemplate.appraiser=Appraiser +hrm.HrmAppraisalTemplate.both=Both +hrm.HrmAppraisalTemplate.natureOfAssignment=Nature Of Assignment +hrm.HrmAppraisalTemplate.narrative=Narrative +hrm.HrmAppraisalTemplate.goalSheet=Goal Sheet +hrm.HrmAppraisalTemplate.kpa=KPA's +hrm.HrmAppraisalTemplate.predefinedGoal=Pre-defined Goals +hrm.HrmTransferOrder.txtApplicationDate=Application Date +hrm.HrmTransferOrder.SiteCode=Site Code + +hrm.HrmAppraisalTemplate.ratingReqd=Rating Required + +hrm.HrmAppraisalTemplateKpa.heading=APPRAISAL TEMPLATE MASTER +hrm.HrmAppraisalTemplateKpa.header=Appraisal Template +hrm.HrmAppraisalTemplateKpa.templateName=Template Name +hrm.HrmAppraisalTemplateKpa.obsolete=Obsolete +hrm.HrmAppraisalTemplateKpa.applicableToAll=Applicable To All +hrm.HrmAppraisalTemplateKpa.ratingCode=Rating Code +hrm.HrmAppraisalTemplateKpa.serialNo=Srl.No. +hrm.HrmAppraisalTemplateKpa.natureOfAssgn=Nature Of Assignment +hrm.HrmAppraisalTemplateKpa.kpaGroupCode=KPA Group Code +hrm.HrmAppraisalTemplateKpa.apprKpa=KPA Description +hrm.HrmAppraisalTemplateKpa.contentDesc=Content Description +hrm.HrmAppraisalTemplateKpa.kpaId=KPA Code +hrm.HrmAppraisalTemplateKpa.weightage=Weightage[%] +hrm.HrmAppraisalTemplateKpa.fieldAssignment=Field Assignment +hrm.HrmAppraisalTemplateKpa.laboratory=Laboratory +hrm.HrmAppraisalTemplateKpa.planning=Planning,Programming,Monitoring +hrm.HrmAppraisalTemplateKpa.supervisor=Supervisor Level Activity +hrm.HrmAppraisalTemplateKpa.kpa=KPA's +hrm.HrmAppraisalTemplateKpa.narrative=Narrative +hrm.HrmAppraisalTemplateKpa.templateCode=Template Code + +hrm.HrmAppraisalTemplateGoals.heading=APPRAISAL TEMPLATE MASTER +hrm.HrmAppraisalTemplateGoals.header=Appraisal Template +hrm.HrmAppraisalTemplateGoals.templateName=Template Name +hrm.HrmAppraisalTemplateGoals.obsolete=Obsolete +hrm.HrmAppraisalTemplateGoals.applicableToAll=Applicable To All +hrm.HrmAppraisalTemplateGoals.ratingCode=Rating Code +hrm.HrmAppraisalTemplateGoals.slNo=Srl.No. +hrm.HrmAppraisalTemplateGoals.predefinedGoals=Pre-defined Goals +hrm.HrmAppraisalTemplateGoals.goalDescription=Goal Description + + +hrm.HrmAppraisalForMultipleEmp.heading=Employee Appraisal Batch Screen +hrm.HrmAppraisalForMultipleEmp.header=Appraisal Information +hrm.HrmAppraisalForMultipleEmp.txtRemarks=Remarks +hrm.HrmAppraisalForMultipleEmp.txtFinalRating=Final Rating +hrm.HrmAppraisalForMultipleEmp.txtToDate=To Date +hrm.HrmAppraisalForMultipleEmp.txtFromDate=From Date +hrm.HrmAppraisalForMultipleEmp.txtAppTempName=Appraisal Template Name +hrm.HrmAppraisalForMultipleEmp.txtCD=CD +hrm.HrmAppraisalForMultipleEmp.txtEmpNo=Employee No +hrm.HrmAppraisalForMultipleEmp.detail=Allocation Detail +hrm.HrmAppraisalForMultipleEmp.ndpl=NDPL +hrm.HrmAppraisalForMultipleEmp.dvb=DVB +hrm.HrmAppraisalForMultipleEmp.dateTo=Date To +hrm.HrmAppraisalForMultipleEmp.dateFrom=Date From +hrm.HrmAppraisalForMultipleEmp.empType=Employee Type +hrm.HrmAppraisalForMultipleEmp.empNo=Empoyee No + + +hrm.HrmManpowerPlanning.heading=CAPTURE MANPOWER PLANNING +hrm.HrmManpowerPlanning.orderNo=Order No. +hrm.HrmManpowerPlanning.workGrpCode=Work Group Code +hrm.HrmManpowerPlanning.siteCode=Site Code +hrm.HrmManpowerPlanning.orderDt=Order Date +hrm.HrmManpowerPlanning.fromDt=From Date +hrm.HrmManpowerPlanning.toDt=To Date +hrm.HrmManpowerPlanning.code=Code +hrm.HrmManpowerPlanning.description=Description +hrm.HrmManpowerPlanning.designation=Designation +hrm.HrmManpowerPlanning.sancManPow=Sanctioned Manpower + + + +hrm.HrmSeparationCategoryMaster.mainHeader=SEPARATION CATEGORY MASTER +hrm.HrmSeparationCategoryMaster.subHeader1=Separation Category Master +hrm.HrmSeparationCategoryMaster.separationCode=Separation Code +hrm.HrmSeparationCategoryMaster.noticePeriod=Notice Period +hrm.HrmSeparationCategoryMaster.months=Months +hrm.HrmSeparationCategoryMaster.remarks=Remarks +hrm.HrmSeparationCategoryMaster.separationType=Separation Type +hrm.HrmSeparationCategoryMaster.Office=Office +hrm.HrmSeparationCategoryMaster.Self=Self +hrm.HrmSeparationCategoryMaster.Both=Both + + +hrm.HrmSepDeptClearance.mainHeader=DEPARTMENT CLEARANCE LIST +hrm.HrmSepDeptClearance.subHeader1=Department Clearance List +hrm.HrmSepDeptClearance.subHeader2=Clearance From Department +hrm.HrmSepDeptClearance.clearanceOfDepartment=Clearance Of Department +hrm.HrmSepDeptClearance.clearanceFromDept=Clearance From Department + + +hrm.HrmTrnInCoDtl.instituteCode=Institute Code +hrm.HrmTrnInCoDtl.type=Type +hrm.HrmTrnInCoDtl.external=EXTERNAL +hrm.HrmTrnInCoDtl.internal=INTERNAL +hrm.HrmTrnInCoDtl.forigen=FOREIGN +hrm.HrmTrnInCoDtl.inCharge=In Charge +hrm.HrmTrnInCoDtl.address=Address +hrm.HrmTrnInCoDtl.country=Country +hrm.HrmTrnInCoDtl.city=City +hrm.HrmTrnInCoDtl.state=State +hrm.HrmTrnInCoDtl.pin=PIN +hrm.HrmTrnInCoDtl.phone=Phone +hrm.HrmTrnInCoDtl.email=Email +hrm.HrmTrnInCoDtl.fax=Fax +hrm.HrmTrnInCoDtl.course=Course +hrm.HrmTrnInCoDtl.courseName=Course Name +hrmTCDtlMainHeader.title=TRAINING INSTITUTE AND COURSE DETAIL +hrmTCDtlSubHeader.title=Training Institute +hrmTCDtlTabHeader.title=Courses for Institute + + + + +wenrgise.trngCal.error.empApplied=Cannot delete.Employees had already applied for it. +hrm.HrmTrnCal.calendarName=Calendar Name +hrm.HrmTrnCal.site=Site +hrm.HrmTrnCal.siteName=Site Name +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCal.txtInstituteName=Institute Name +hrm.HrmTrnCal.insCode=Institute Code +hrm.HrmTrnCal.txtCourseCode=Course Code +hrm.HrmTrnCal.txtType=Type +hrm.HrmTrnCal.txtStartDate=Start Date +hrm.HrmTrnCal.txtEndDate=End Date +hrm.HrmTrnCal.txtStrength=Strength +hrm.HrmTrnCal.txtFee=Fee +hrm.HrmTrnCal.txtRatingScheme=Rating Scheme +hrm.HrmTrnCal.txtStatus=Status +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCalMainHeader.title=TRAINING CALENDAR +hrm.HrmTrnCalSubHeader.title=Training Calendar Header +hrm.HrmTrnCalTabHeader.title=Courses Calendar +hrm.HrmTrnCal.pending=Pending +hrm.HrmTrnCal.closed=Closed +hrm.HrmTrnCal.beginner=Beginner +hrm.HrmTrnCal.advanced=Advanced +hrm.HrmTrnCal.workshop=Workshop +hrm.HrmTrnCal.onLocation=On Location +hrm.HrmTrnCal.campusCourse=Campus Course +hrm.HrmTrnCal.courseName=Course Name +hrm.HrmTrnCal.minRating=Minimum Rating +hrm.HrmTrnCal.maxRating=Maximum Rating + + + + + + + + +hrm.HrmFacMst.employeeNo=Employee No +hrm.HrmFacMst.employeeName=Employee Name +hrm.HrmFacMst.facultyType=Faculty Type +hrm.HrmFacMst.external=External +hrm.HrmFacMst.internal=Internal +hrm.HrmFacMst.baseInstitution=Base Institution +hrm.HrmFacMst.instituteName=Institute Name +hrm.HrmFacMst.firstName=First Name +hrm.HrmFacMst.middleName=Middle Name +hrm.HrmFacMst.lastName=Last Name +hrm.HrmFacMst.experience=Experience +hrm.HrmFacMst.employeeName=Employee Name + + + +hrm.FacTrngDtlMainHeader.title=FACULTY TRAINING DETAIL +hrm.FacTrngDtlSubHeader.title=Training Calendar +hrm.FacTrngDtlTabHeader.title=Courses Calendar +hrm.HrmFacTrngDtl.subHeader1=Course Details +hrm.HrmFacTrngDtl.site=Site +hrm.HrmFacTrngDtl.siteName=Site Name +hrm.HrmFacTrngDtl.calendarName=Calendar Name +hrm.HrmFacTrngDtl.courseName=Course Name +hrm.HrmFacTrngDtl.institutionName=Institution Name +hrm.HrmFacTrngDtl.startDate=Start Date +hrm.HrmFacTrngDtl.endDate=End Date +hrm.HrmFacTrngDtl.nameOfFaculty=Name of Faculty +hrm.HrmFacTrngDtl.fromDate=From Date +hrm.HrmFacTrngDtl.toDate=To Date +hrm.HrmFacTrngDtl.startTime=Start Time +hrm.HrmFacTrngDtl.endTime=End Time +hrm.HrmFacTrngDtl.averageRating=Average Rating +hrm.HrmFacTrngDtl.courseStatus=Course Status +hrm.HrmFacTrngDtl.pending=Pending +hrm.HrmFacTrngDtl.closed=Closed +hrm.HrmFacTrngDtl.venue=Venue +hrm.HrmFacTrngDtl.skillArea=Skill Area + + + +hrm.HrmTrngReqMainHeader.title=TRAINING REQUIREMENT FOR MULTIPLE EMPLOYEES +hrm.HrmTrngReq.employeeName=Employee Name +hrm.HrmTrngReqSubHeader.title=Employee Information +hrm.HrmTrngReqTabHeader.title=Requirement Detail +hrm.HrmTrngReq.dateSubmitted=Date Submitted +hrm.HrmTrngReq.courseName=Course Name +hrm.HrmTrngReq.trainingCalendarCourse=Training Calendar +hrm.HrmTrngReq.startDate=Start Date +hrm.HrmTrngReq.endDate=End Date +hrm.HrmTrngReq.nature=Nature +hrm.HrmTrngReq.purpose=Purpose +hrm.HrmTrngReq.recommender=Recommender +hrm.HrmTrngReq.approvalStatus=Approval Status +hrm.HrmTrngReq.remarkRejection=Remark/Rejection Remark +hrm.HrmTrngReq.employeeNo=Employee No +hrm.HrmTrngReq.institutionName=Institution Name +hrm.HrmTrngReq.fullPart=Full Part +hrm.HrmTrngReq.urgent=Urgent +hrm.HrmTrngReq.emergency=Emergency +hrm.HrmTrngReq.normal=Normal +hrm.HrmTrngReq.pending=Pending +hrm.HrmTrngReq.approved=Approved +hrm.HrmTrngReq.rejected=Rejected + + + +hrm.HrmTrngReqBatAppScrnMainHeader=TRAINING REQUIREMENT BATCH APPROVAL +hrm.HrmTrngReqBatAppScrn.employeeNo=Employee No +hrm.HrmTrngReqBatAppScrn.txtEmployeeNo=Employee No +hrm.HrmTrngReqBatAppScrn.CD=CD +hrm.HrmTrngReqBatAppScrn.SRLNo=SRL_NO +hrm.HrmTrngReqBatAppScrn.DateSubmitted=Date Submitted +hrm.HrmTrngReqBatAppScrn.courseCode=Course Code +hrm.HrmTrngReqBatAppScrn.txtCourseCode=Course Code +hrm.HrmTrngReqBatAppScrn.trainingCalendarCourse=Training Calendar Course +hrm.HrmTrngReqBatAppScrn.institutionName=Institution Name +hrm.HrmTrngReqBatAppScrn.startDate=Start Date +hrm.HrmTrngReqBatAppScrn.endDate=End Date +hrm.HrmTrngReqBatAppScrn.nature=Nature +hrm.HrmTrngReqBatAppScrn.purpose=Purpose +hrm.HrmTrngReqBatAppScrn.approve=Approve +hrm.HrmTrngReqBatAppScrn.calendarCourse=Calendar Course +hrm.HrmTrngReqBatAppScrn.submittedFromDate=Submitted From Date +hrm.HrmTrngReqBatAppScrn.submittedToDate=Submitted To Date +hrm.HrmTrngReqBatAppScrn.recommender=Recommender +hrm.HrmTrngReqBatAppScrn.approvalStatus=Approval Status +hrm.HrmTrngReqBatAppScrn.fullPart=Full Part +hrm.HrmTrngReqBatAppScrn.recStatus=Rec Status +hrm.HrmTrngTabHeader=Training Requirement Details + + +hrm.HrmEmpTrngHistMainHeader.title=EMPLOYEE TRAINING HISTORY +hrm.HrmEmpTrngHistSubHeader.title=Training Calendar +hrm.HrmEmpTrngHistTabHeader.title=Employee History +hrm.HrmEmpTrngHist.calendarName=Calendar Name +hrm.HrmEmpTrngHist.course=Course +hrm.HrmEmpTrngHist.empNo=Employee No. +hrm.HrmEmpTrngHist.employeeNo=Employee No. +hrm.HrmEmpTrngHist.institutionName=Institution Name +hrm.HrmEmpTrngHist.fromDate=From Date +hrm.HrmEmpTrngHist.toDate=To Date +hrm.HrmEmpTrngHist.participation=Participation +hrm.HrmEmpTrngHist.name=Employee Name +hrm.HrmEmpTrngHist.reasonForNonParticipation=Reason For Non Participation +hrm.HrmEmpTrngHist.rating=Rating +hrm.HrmEmpTrngHist.trainingAttendanceDetail=Training Attendance Detail +hrm.HrmEmpTrngHist.AttendanceDtl=Attendance Detail +hrm.HrmEmpTrngHist.yes=Yes +hrm.HrmEmpTrngHist.no=No +hrm.HrmEmpTrngHistForm.CourseCode=Course Code +hrm.HrmEmpTrngHistForm.CourseName=Course Name +hrm.HrmEmpTrngHistForm.InstName=Institute Name +hrm.HrmEmpTrngHistForm.StartDate=Start Date +hrm.HrmEmpTrngHistForm.EndDate=End Date + + + +!modified on 11th Feb 2006 +hrm.HrmEmpFeedbackMainHeader=EMPLOYEE FEEDBACK FORM +hrm.HrmEmpFeedbackSubHeader=Training Calendar +hrm.HrmEmpFeedback.courseName=Course Name +hrm.HrmEmpFeedback.institutionName=Institution Name +hrm.HrmEmpFeedbackTableHeader=Employee Feedback +hrm.HrmEmpFeedback.facultyName=Faculty Name +hrm.HrmEmpFeedback.EmpNo=Employee No. +hrm.HrmEmpFeedback.empName=Employee Name +hrm.HrmEmpFeedback.deliveryClarity=Delivery Clarity +hrm.HrmEmpFeedback.presentation=Presentation +hrm.HrmEmpFeedback.interaction=Interaction +hrm.HrmEmpFeedback.instrumentFacility=Instrument Facility +hrm.HrmEmpFeedback.courseMaterial=Course Material +hrm.HrmEmpFeedback.courseExercise=Course Exercise +hrm.HrmEmpFeedback.courseObjective=Course Objective +hrm.HrmEmpFeedback.ratingScheme=Rating Scheme +hrm.HrmEmpFeedback.minRating=Minimum Rating +hrm.HrmEmpFeedback.maxRating=Maximum Rating +hrm.HrmEmpFeedback.startDate=Start Date +hrm.HrmEmpFeedback.endDate=End Date +hrm.HrmEmpFeedback.p=Pending +hrm.HrmEmpFeedback.c=Closed +hrm.HrmEmpFeedback.venue=Venue +hrm.HrmEmpFeedback.skillArea=Skill Area +hrm.HrmEmpFeedback.courseDuration=Course Duration +hrm.HrmEmpFeedback.trainingAids=Training Aids +hrm.HrmEmpFeedback.trainingArrangements=Training Arrangements +hrm.HrmEmpFeedback.overallRating=Overall Rating +hrm.HrmEmpFeedback.topicsRelevant=Topics Relevant/Useful +hrm.HrmEmpFeedback.topicsIrrelevant=Topics Irrelevant/Less Useful +hrm.HrmEmpFeedback.suggestions=Suggestions + +hrm.HrmTrngEmpAtt.mainHeader=EMPLOYEE TRAINING ATTENDANCE +hrm.HrmTrngEmpAtt.subHeader=Employee Training History Header +hrm.HrmTrngEmpAtt.courseCode=Course Code +hrm.HrmTrngEmpAtt.courseName=Course Name +hrm.HrmTrngEmpAtt.institutionName=Institution Name +hrm.HrmTrngEmpAtt.startDate=Start Date +hrm.HrmTrngEmpAtt.endDate=End Date +hrm.HrmTrngEmpAtt.tableHeader=Training Attendance Detail +hrm.HrmTrngEmpAtt.employeeNo=Employee No +hrm.HrmTrngEmpAtt.employeeName=Employee Name +hrm.HrmTrngEmpAtt.trainingDate=Training Date +hrm.HrmTrngEmpAtt.attendance=Attendence +hrm.HrmTrngEmpAtt.reasonForAbsence=Reason For Absence + + +hrm.HrmFacFBMainHeader=FACULTY FEEDBACK FORM +hrm.HrmFacFB.courseName=Course Name +hrm.HrmFacFB.institutionName=Institution Name +hrm.HrmFacFBSubHeader1=Faculty Information +hrm.HrmFacFB.ratingScheme=Rating Scheme +hrm.HrmFacFB.minRating=Minimum Rating +hrm.HrmFacFB.maxRating=Maximum Rating +hrm.HrmFacFB.startDate=Start Date +hrm.HrmFacFB.endDate=End Date +hrm.HrmFacFB.EmpNo=Employee No. +hrm.HrmFacFB.empName=Employee Name +hrm.HrmFacFB.rating=Rating +hrm.HrmFacFB.remarks=Remarks +hrm.HrmFacFBSubHeader=Training Calendar +hrm.HrmFacFBTableHeader=Faculty Feedback +hrm.HrmFacFB.facultyName=Faculty Name +hrm.HrmFacFB.facultyEmpId=Faculty Employee No.(If Any) + +hrm.HrmLoanMstMainHeader=LOAN MASTER +hrm.HrmLoanMstSubHeader=Loan Master +hrm.HrmLoanMst.loanCode=Loan Code +hrm.HrmLoanMstTableHeader=Loan Detail +hrm.HrmLoanMst.interestTaxRebate=Interest Tax Rebate +hrm.HrmLoanMst.typeOfInterest=Type Of Interest +hrm.HrmLoanMst.simpleInterest=Simple Interest +hrm.HrmLoanMst.asPerChart=As Per Chart +hrm.HrmLoanMst.reducingBalance=Reducing Balance +hrm.HrmLoanMst.settledAutoFrmSalary=Settled Automatically From Salary +hrm.HrmLoanMst.chartName=Chart Name +hrm.HrmLoanMst.chartName=Chart Name +hrm.HrmLoanMst.principalTaxRebate=Principal Tax Rebate +hrm.HrmLoanMst.repaymentUnits=Repayment Units +hrm.HrmLoanMst.Months=Months +hrm.HrmLoanMst.Years=Years +hrm.HrmLoanMst.penaltyPercInterest=Penalty Percentage Interest +hrm.HrmLoanMst.natureOfPayment=Nature of Payment +hrm.HrmLoanMst.principleFirst=Principle First +hrm.HrmLoanMst.both=Both +hrm.HrmLoanMst.minYrsOfServiceToBeCompleted=Minimum Years of Service to be Completed +hrm.HrmLoanMst.minYrsOfRemainingService=Minimum Years of Remaining Service +hrm.HrmLoanMst.loanDetailCode=Loan Detail Code +hrm.HrmLoanMst.greaterLessNotApplicable=Greater/Lesser/N.A. +hrm.HrmLoanMst.maxLimit=Maximum Limit +hrm.HrmLoanMst.maximumLoanPerc=Maximum Loan (%) +hrm.HrmLoanMst.noOfMonthsSalary=No of Months of Salary +hrm.HrmLoanMst.companyPolicyStDate=Company Policy Start Date +hrm.HrmLoanMst.appliedToAllEmployee=Applied To All Employee +hrm.HrmLoanMst.loanName=Loan Name +hrm.HrmLoanMst.greater=Greater +hrm.HrmLoanMst.lesser=Lesser +hrm.HrmLoanMst.flatAmount=Flat Amount +hrm.HrmLoanMst.companyPolicyToDate=Company Policy End Date +hrm.HrmLoanMst.interestFirst=Interest First +hrm.HrmLoanMst.salery=Salary +hrm.HrmLoanMst.effectiveDate=Effective Date +hrm.HrmLoanMst.toDate=To Date + +wenrgise.LoanChart.LoanChartDateConstraintViolated=Effective To Date must be greater than Effective From Date + +hrm.HrmTrngReqBatEntryScrnMainHeader=TRAINING REQUIREMENT BATCH ENTRY +hrm.HrmTrngReqBatEntryScrn.employeeNo=Employee No +hrm.HrmTrngReqBatEntryScrn.txtCD=CD +hrm.HrmTrngReqBatEntryScrn.txtSRLNo=SRL_NO +hrm.HrmTrngReqBatEntryScrn.txtDateSubmitted=Date Submitted +hrm.HrmTrngReqBatEntryScrn.txtCourseCode=Course Code +hrm.HrmTrngReqBatEntryScrn.txtTrainingCalendarCourse=Training Calendar Course +hrm.HrmTrngReqBatEntryScrn.txtInstitutionName=Institution Name +hrm.HrmTrngReqBatEntryScrn.txtStartDate=Start Date +hrm.HrmTrngReqBatEntryScrn.txtEndDate=End Date +hrm.HrmTrngReqBatEntryScrn.txtNature=Nature +hrm.HrmTrngReqBatEntryScrn.txtPurpose=Purpose +hrm.HrmTrngReqBatEntryScrn.txtApprove=Approve +hrm.HrmTrngReqBatEntryScrn.calendarCourse=Calendar Course +hrm.HrmTrngReqBatEntryScrn.submittedFromDate=Submitted From Date +hrm.HrmTrngReqBatEntryScrn.submittedToDate=Submitted To Date +hrm.HrmTrngReqBatEntryScrn.txtRecommender=Recommender +hrm.HrmTrngReqBatEntryScrn.txtApprovalStatus=Approval Status +hrm.HrmTrngReqBatEntryScrn.txtFullPart=Full Part +hrm.HrmTrngReqBatEntryScrn.txtRecStatus=Rec Status +hrm.HrmTrngReqBatEntryScrn.txtEmployeeNo=Employee No +hrm.HrmTrngReqBatEntryScrn.courseCode=Course Code + + +hrm.HrmTrngCrsBDAssociation.detailConsistency= The From date & To date combination is Already exist. + +hrm.HrmTrngCalClose.courseName=Course Name +hrm.HrmTrngCalClose.courseCode=Course Code +hrm.HrmTrngCalClose.courseId=Course Id +hrm.HrmTrngCalClose.calendarCode=Calendar Code +hrm.HrmTrngCalClose.calendarName=Calendar Name +hrm.HrmTrngCalClose.institutionName=Institution Name +hrm.HrmTrngCalClose.startDate=Start Date +hrm.HrmTrngCalClose.endDate=End Date +hrm.HrmTrngCalClose.mainHeader=CLOSE TRAINING CALENDAR +hrm.HrmTrngCalClose.subHeader=Batch Screen +hrm.HrmTrngCalClose.butCalClose=Close Calendar + +hrm.HrmLC.mainHeader= + +hrm.HrmLC.subHeader=Chart Master +hrm.HrmLC.chartName=Chart Name +hrm.HrmLC.txtLoanAmt=Loan Amount +hrm.HrmLC.txtNumberOfInstallments=Number of Installments +hrm.HrmLC.effectiveFromDate=Effective From Date +hrm.HrmLC.interestRate=Interest Rate +hrm.HrmLC.effectiveToDate=Effective To Date +hrm.HrmLC.txtPrincipal=Principal Amount +hrm.HrmLC.txtInterest=Interest Amount +hrm.HrmLC.txtEqualMonthlyInstallment=Equal Monthly Installment +hrm.HrmLC.tabHeader=Chart Detail +hrm.HrmLC.checkInterest=Interest rate cannot be greater than 100 + + +hrm.HrmLE.mainHeader=LOAN ELIGIBILITY RULE +hrm.HrmLE.subHeader=Loan Header +hrm.HrmLE.tabHeader=Loan Eligibility +hrm.HrmLE.txtDesignation=Designation +hrm.HrmLE.txtScale=Scale +hrm.HrmLE.txtGrade=Grade +hrm.HrmLE.txtTATADVB=TATA-DVB +hrm.HrmLE.txtLevel=Level +hrm.HrmLE.loanCode=Loan Code + + +hrm.HrmAdvMstMainHeader=ADVANCE MASTER +hrm.HrmAdvMstSubHeader=Advance Master +hrm.HrmAdvMstTableHeader=Advance Detail +hrm.HrmAdvMst.advanceCode=Advance Name +hrm.HrmAdvMst.advanceDescription=Advance Description +hrm.HrmAdvMst.effectiveFromDate=Effective From Date +hrm.HrmAdvMst.effectiveToDate=Effective To Date +hrm.HrmAdvMst.maxCalLimit=Max. Cal Limit +hrm.HrmAdvMst.noOfTXN=No.of Transactions +hrm.HrmAdvMst.maxLimitPerTXN=Max. Limit Per Transaction +hrm.HrmAdvMst.flatAmount=Flat Amount +hrm.HrmAdvMst.calendar=Calendar +hrm.HrmAdvMst.settlementUnit=Settlement Unit +hrm.HrmAdvMst.settlementPeriod=No of Installment +hrm.HrmAdvMst.moratoriumInMonths=Moratorium In Months +hrm.HrmAdvMst.settleThroughPayroll=Settle Through Payroll +hrm.HrmAdvMst.applicableToAll=Applicable To All +hrm.HrmAdvMst.settlementHeads=Settlement Heads +hrm.HrmAdvMst.description=Description +hrm.HrmAdvMst.monthly=Monthly +hrm.HrmAdvMst.once=Once +hrm.HrmAdvMst.yes=Yes +hrm.HrmAdvMst.no=No +hrm.HrmAdvMst.calendarType=Calendar Type +hrm.HrmAdvMst.beginMonth=Begin Month +hrm.HrmAdvMst.durationMonth=Duration Month +hrm.HrmAdvMst.settleHeads=Settlement Heads +hrm.HrmAdvMst.eligibility=Eligibility Factor +hrm.HrmAdvMst.salary=No Of Month's Salary + +hrm.HrmLAE.mainHeader=ADVANCE ELIGIBILITY RULE +hrm.HrmLAE.subHeader=Advance Header +hrm.HrmLAE.tabHeader=Advance Eligibility +hrm.HrmLAE.txtDesignation=Designation +hrm.HrmLAE.txtScale=Scale +hrm.HrmLAE.txtGrade=Grade +hrm.HrmLAE.txtTATADVB=TATA-DVB +hrm.HrmLAE.txtLevel=Level +hrm.HrmLAE.advanceCode=Advance Code + +hrm.HrmLAppMultEmp.mainHeader=LOAN APPLICATION BATCH +hrm.HrmLAppMultEmp.subHeader=Employee Details +hrm.HrmLAppMultEmp.tabHeader=Loan Details +hrm.HrmLAppMultEmp.employeeNo=Employee No. +hrm.HrmLAppMultEmp.loanName=Loan Name +hrm.HrmLAppMultEmp.empNo=Employee No. +hrm.HrmLAppMultEmp.cD=CD +hrm.HrmLAppMultEmp.empName=Employee Name +hrm.HrmLAppMultEmp.loanCode=Loan Code +hrm.HrmLAppMultEmp.propertyPrice=Property Price +hrm.HrmLAppMultEmp.eligibleAmount=Eligible Amount +hrm.HrmLAppMultEmp.appliedAmount=Applied Amount +hrm.HrmLAppMultEmp.percPropertyPrice=[%] of Property Price +hrm.HrmLAppMultEmp.applDate=Application Date +hrm.HrmLAppMultEmp.sanctionDate=Sanction Date +hrm.HrmLAppMultEmp.noInstallment=No.of Installment +hrm.HrmLAppMultEmp.fullyRepaid=Fully Repaid +hrm.HrmLAppMultEmp.periodBetweenInstallment=Period Between Installment +hrm.HrmLAppMultEmp.firstInstallmentDate=First Installment Date +hrm.HrmLAppMultEmp.approvedFlag=Approved Flag +hrm.HrmLAppMultEmp.reason=Reason +hrm.HrmLAppMultEmp.remarks=Remarks +hrm.HrmLAppMultEmp.disbursmentDetails=Disbursment Details +hrm.HrmLAppMultEmp.loanRepaymentSchedule=Loan Repayment Schedule +hrm.HrmLAppMultEmp.totalAmountPaid=Total Amount Paid +hrm.HrmLAppMultEmp.noInstallmentPaid=No.of Installment Paid +hrm.HrmLAppMultEmp.interestAccrued=Interest Accrued + + + +hrm.HrmLASetBatEntScr.mainHeader=ADVANCE SETTLEMENT BATCH ENTRY +hrm.HrmLASetBatEntScr.subHeader=Query Advance +hrm.HrmLASetBatEntScr.tabHeader=Advance Settlement Details +hrm.HrmLASetBatEntScr.employeeNo=Employee No +hrm.HrmLASetBatEntScr.advance=Advance +hrm.HrmLASetBatEntScr.fromDate=From Date +hrm.HrmLASetBatEntScr.toDate=To Date +hrm.HrmLASetBatEntScr.txtApproved=Approved +hrm.HrmLASetBatEntScr.txtEmployeeNo=Employee No +hrm.HrmLASetBatEntScr.txtChkDigit=Chk Digit +hrm.HrmLASetBatEntScr.txtName=Name +hrm.HrmLASetBatEntScr.txtSerialNo=Serial No +hrm.HrmLASetBatEntScr.txtDateApplied=Date Applied +hrm.HrmLASetBatEntScr.txtAdvanceName=Advance Name +hrm.HrmLASetBatEntScr.txtAmountApplied=Amount Applied +hrm.HrmLASetBatEntScr.txtSettlementThruPayroll=Settlement Through Payroll +hrm.HrmLASetBatEntScr.txtSettlementAmount=Settlement Amount +hrm.HrmLASetBatEntScr.txtHeads=Heads +hrm.HrmLASetBatEntScr.txtNoOfInstallments=No of Installments +hrm.HrmLASetBatEntScr.txtReason=Reason +hrm.HrmLASetBatEntScr.txtName=Name + + + + + + + + +hrm.HrmSepEmpClearance.mainHeader=MAINTAIN EMPLOYEE CLEARANCE +hrm.HrmSepEmpClearance.subHeader1=Employee Details +hrm.HrmSepEmpClearance.subHeader2=Department Clearance List +hrm.HrmSepEmpClearance.employeeNo=Employee Number +hrm.HrmSepEmpClearance.department=Department +hrm.HrmSepEmpClearance.clearanceGiven=Clearance Given + + +hrm.HrmEmployeeSeparation.mainHeader=EMPLOYEE SEPARATION BATCH +hrm.HrmEmployeeSeparation.subHeader1=Employee Details +hrm.HrmEmployeeSeparation.subHeader2=Separation Details +hrm.HrmEmployeeSeparation.employeeNo=Employee Number +hrm.HrmEmployeeSeparation.employeeName=Employee Name +hrm.HrmEmployeeSeparation.empNo=Employee Number +hrm.HrmEmployeeSeparation.empName=Employee Name +hrm.HrmEmployeeSeparation.cd=CD +hrm.HrmEmployeeSeparation.separationCategory=Separation Category +hrm.HrmEmployeeSeparation.separationDate=Separation Date +hrm.HrmEmployeeSeparation.reason=Reason + + +hrm.HrmKPAPoints.heading=POSITION KPA POINTS +hrm.HrmKPAPoints.KPAHeader=KPA Header +hrm.HrmKPAPoints.positionCode=Position Code +hrm.HrmKPAPoints.kpaGroupCode=KPA Group Code +hrm.HrmKPAPoints.desc=Description +hrm.HrmKPAPoints.designation=Designation +hrm.HrmKPAPoints.scale=Scale +hrm.HrmKPAPoints.ratingDetail=Rating Detail +hrm.HrmKPAPoints.maxRating=Maximum Rating +hrm.HrmKPAPoints.minRating=Minimum Rating +hrm.HrmKPAPoints.detail=Position KPA Points +hrm.HrmKPAPoints.txtFromRating=From Rating +hrm.HrmKPAPoints.txtToRating=To Rating +hrm.HrmKPAPoints.txtPoints=Points + +hrm.HrmTestScore.heading=POSITION WISE TEST SCORE +hrm.HrmTestScore.header=Position Information Header +hrm.HrmTestScore.positionCode=Position Code +hrm.HrmTestScore.desc=Description +hrm.HrmTestScore.designation=Designation +hrm.HrmTestScore.scale=Scale +hrm.HrmTestScore.examType=Examination Type +hrm.HrmTestScore.examDesc=Examination Description +hrm.HrmTestScore.maxScore=Maximum Score +hrm.HrmTestScore.maxPoints=Maximum Points +hrm.HrmTestScore.detail=Position Test Score Detail +hrm.HrmTestScore.txtScoreForm=Score From +hrm.HrmTestScore.txtScoreTo=Score To +hrm.HrmTestScore.txtPoints=Points +hrm.HrmTestScore.written=Written +hrm.HrmTestScore.interview=Interview +hrm.HrmTestScore.groupDiscussion=Group Discussion +hrm.HrmTestScore.errorinscore=Score From should be less than Score To in row {0} of Detail +hrm.HrmTestScore.errorinmaxscore=Score To in row {1} of Detail should not be greater than Maximum Score +hrm.HrmTestScore.errorinmaxpoints=Points in row {0} of Detail should not be greater than Maximum Points +hrm.HrmTestScore.uniqueConstraintViolated=Combination of Position Code and Examination Type should be unique +hrm.HrmTestScore.detail.nonnumeric={0} in row {1} of Detail is not a Valid Number +hrm.HrmTestScore.header.nonnumeric={0} is not a Valid Number +hrm.HrmTestScore.errorinPoints=Points in row {1} should be greater than it's previous rows + + +hrm.HrmAttShiftMaster.heading=SHIFT MASTER +hrm.HrmAttShiftMaster.shiftCode=Shift Code +hrm.HrmAttShiftMaster.startTime=Start Time +hrm.HrmAttShiftMaster.endTime=End Time +hrm.HrmAttShiftMaster.relaxationTime=Relaxation Time +hrm.HrmAttShiftMaster.startTolerenceTime=Start Tolerence Time +hrm.HrmAttShiftMaster.endTolerenceTime=End Tolerence Time +hrm.HrmAttShiftMaster.overlapTime=Overlap Time +hrm.HrmAttShiftMaster.desc=Shift Description + +hrm.HrmAttWorkGroupShift.heading=WORK GROUP SHIFT DETAIL +hrm.HrmAttWorkGroupShift.wrkGrpCode=Work Group Code +hrm.HrmAttWorkGroupShift.siteCode=Site Code +hrm.HrmAttWorkGroupShift.shiftBeginDt=Shift Begin Date +hrm.HrmAttWorkGroupShift.shiftEndDt=Shift End Date +hrm.HrmAttWorkGroupShift.shiftCode=Shift Code +hrm.HrmAttWorkGroupShift.shiftCodeDescription=Description + + +hrmEmpShift.title=EMPLOYEE SHIFT DETAIL +hrmEmpShiftSubHeader.title=Employee Shift Detail +hrmEmpShiftTabHeader.title=Emp Shift Detail +hrm.HrmAttEmpShift.employeeNo=Employee No. +hrm.HrmAttEmpShift.employeeName=Employee Name +hrm.HrmAttEmpShift.startDate=Period Start Date +hrm.HrmAttEmpShift.endDate=Period End Date +hrm.HrmAttEmpShift.shiftBeginDate=Shift Begin Date +hrm.HrmAttEmpShift.shiftEndDate=Shift End Date +hrm.HrmAttEmpShift.shiftCode=Shift Code + + + + +hrm.HrmAttWorkGroupDayOff.heading=WORK GROUP DAY OFF +hrm.HrmAttWorkGroupDayOff.wrkGrpCode=Work Group Code +hrm.HrmAttWorkGroupDayOff.siteCode=Site Code +hrm.HrmAttWorkGroupDayOff.strtWeekDt=Start Week Date +hrm.HrmAttWorkGroupDayOff.endWeekDt=End Week Date +hrm.HrmAttWorkGroupDayOff.fstRestDay=First Rest Day +hrm.HrmAttWorkGroupDayOff.secRestDay=Second Rest Day +hrm.HrmAttWorkGroupDayOff.thrRestDay=Third Rest Day + + +hrm.HrmAttEmployeeShiftDetail.heading=EMPLOYEE SHIFT DETAIL +hrm.HrmAttEmployeeShiftDetail.empNo=Employee No. +hrm.HrmAttEmployeeShiftDetail.empName=Employee Name +hrm.HrmAttEmployeeShiftDetail.shiftBeginDt=Shift Begin Date +hrm.HrmAttEmployeeShiftDetail.shiftEndDt=Shift End Date +hrm.HrmAttEmployeeShiftDetail.shiftCode=Shift Code + + +hrm.HrmAttEmployeeDayOff.heading=EMPLOYEE DAY OFF +hrm.HrmAttEmployeeDayOff.empId=Employee Id +hrm.HrmAttEmployeeDayOff.empNo=EmployeeNo. +hrm.HrmAttEmployeeDayOff.startWeekDt=StartWeekDate +hrm.HrmAttEmployeeDayOff.endWeekDt=EndWeekDate +hrm.HrmAttEmployeeDayOff.fstRstDay=FirstRestDay +hrm.HrmAttEmployeeDayOff.secRstDay=SecondRestDay +hrm.HrmAttEmployeeDayOff.thrRstDay=ThirdRestDay +hrm.HrmAttEmployeeDayOff.empName=EmployeeName +hrm.HrmAttEmployeeDayOff.periodStartDate=Period Start Date +hrm.HrmAttEmployeeDayOff.periodEndDate=Period End Date + + +hrm.HrmAttEmployeeShiftRoster.heading=EMPLOYEE SHIFT ROSTER +hrm.HrmAttEmployeeShiftRoster.workGroupCode=Work Group Code +hrm.HrmAttEmployeeShiftRoster.empNo=Employee No. +hrm.HrmAttEmployeeShiftRoster.empName=Employee Name +hrm.HrmAttEmployeeShiftRoster.periodStartDate=Period Start Date +hrm.HrmAttEmployeeShiftRoster.periodEndDate=Period End Date +hrm.HrmAttEmployeeShiftRoster.workDt=Work Date +hrm.HrmAttEmployeeShiftRoster.mandHoliday=Mandatory Holiday +hrm.HrmAttEmployeeShiftRoster.workDayType=Availability +hrm.HrmAttEmployeeShiftRoster.shiftCode=Shift Code + + +hrm.HrmAttEmployeeOTUTBatchUpdate.heading=EMPLOYEE OT AND UT BATCH UPDATE MONTHWISE +hrm.HrmAttEmployeeOTUTBatchUpdate.empNo=Employee No. +hrm.HrmAttEmployeeOTUTBatchUpdate.empName=Employee Name +hrm.HrmAttEmployeeOTUTBatchUpdate.period=Year/Month(YYYYMM) +hrm.HrmAttEmployeeOTUTBatchUpdate.cd=CD +hrm.HrmAttEmployeeOTUTBatchUpdate.OTUT=Over Time/Under Time +hrm.HrmAttEmployeeOTUTBatchUpdate.hrs=Hours +hrm.HrmAttEmployeeOTUTBatchUpdate.rateFlag=Rate Flag + + +hrm.HrmAttEmployeeAbsentBatchUpdation.heading=EMPLOYEE ABSENT BATCH UPDATION +hrm.HrmAttEmployeeAbsentBatchUpdation.empNo=Employee No. +hrm.HrmAttEmployeeAbsentBatchUpdation.empName=Employee Name +hrm.HrmAttEmployeeAbsentBatchUpdation.periodStartDate=Period Start Date +hrm.HrmAttEmployeeAbsentBatchUpdation.periodEndDate=Period End Date +hrm.HrmAttEmployeeAbsentBatchUpdation.cd=CD +hrm.HrmAttEmployeeAbsentBatchUpdation.startDt=Start Date +hrm.HrmAttEmployeeAbsentBatchUpdation.endDt=End Date +hrm.HrmAttEmployeeAbsentBatchUpdation.absDays=Absent Days + + + + +hrm.HrmExperienceScore.heading=POSITION WISE EXPERIENCE SCORE +hrm.HrmExperienceScore.header=Position Information Header +hrm.HrmExperienceScore.positionCode=Position Code +hrm.HrmExperienceScore.desc=Description +hrm.HrmExperienceScore.designation=Designation Code +hrm.HrmExperienceScore.scale=Scale +hrm.HrmExperienceScore.detail=Position Wise Monthly Experience Score +hrm.HrmExperienceScore.txtMinExp=Minimum Experience(Months) +hrm.HrmExperienceScore.txtMaxExp=Maximum Experience(Months) +hrm.HrmExperienceScore.txtAccBasis=Accumulation Basis +hrm.HrmExperienceScore.txtMonthsExp=Months Experience +hrm.HrmExperienceScore.txtPointsAwarded=Points Awarded +hrm.HrmExperienceScore.M=Monthly +hrm.HrmExperienceScore.F=Flat +hrm.HrmExperienceScore.errorinmonths=Months Experience should be in between Minimum Experience(Months) and Maximum Experience(Months) +hrm.HrmExperienceScore.errorinscore=Minimum Experience(Months) should be less than Maximum Experience(Months) in row {0} of Detail +hrm.HrmExperienceScore.errorinPoints=Points Awarded in row {1} should be greater than it's previous rows + +hrm.HrmEligibility.heading=POSITION WISE ELIGIBILITY +hrm.HrmEligibility.header=Position Details +hrm.HrmEligibility.positionCode=Position Code +hrm.HrmEligibility.desc=Description +hrm.HrmEligibility.designation=Designation +hrm.HrmEligibility.scale=Scale +hrm.HrmEligibility.detail=Designation Eligibility Rule +hrm.HrmEligibility.txtPositionCode=Position Code +hrm.HrmEligibility.txtDescription=Description +hrm.HrmEligibility.txtDesignation=Designation +hrm.HrmEligibility.txtScale=Scale + + +hrm.HrmQualification.heading=PROMOTION QUALIFICATION CRITERIA +hrm.HrmQualification.header=Position Details +hrm.HrmQualification.positionCode=Position Code +hrm.HrmQualification.desc=Description +hrm.HrmQualification.designation=Designation +hrm.HrmQualification.scale=Scale +hrm.HrmQualification.detail=Promotion Qualification Criteria +hrm.HrmQualification.txtQualificationCode=Qualification Code +hrm.HrmQualification.txtMinPercentage=Minimum Percentage +hrm.HrmQualification.txtQualificationDesc=Description + + +hrm.HrmLAAppBatEntScr.mainHeader=ADVANCE APPLICATION +hrm.HrmLAAppBatEntScr.subHeader=Query Advance +hrm.HrmLAAppBatEntScr.tabHeader=Advance Details +hrm.HrmLAAppBatEntScr.employeeNo=Employee No +hrm.HrmLAAppBatEntScr.txtApprovedFlag=Approved Flag +hrm.HrmLAAppBatEntScr.txtEmployeeNo=Employee No +hrm.HrmLAAppBatEntScr.txtCD=CD +hrm.HrmLAAppBatEntScr.txtName=Name +hrm.HrmLAAppBatEntScr.txtDateApplied=Date Applied +hrm.HrmLAAppBatEntScr.txtAdvanceName=Advance Name +hrm.HrmLAAppBatEntScr.txtAmountApplied=Amount Applied +hrm.HrmLAAppBatEntScr.txtReason=Reason +hrm.HrmLAAppBatEntScr.txtAmountSettled=Amount Settled +hrm.HrmLAAppBatEntScr.txtRecStat=Rec Stat +hrm.HrmLAAppBatEntScr.advance=Advance +hrm.HrmLAAppBatEntScr.fromDate=From Date +hrm.HrmLAAppBatEntScr.toDate=To Date +hrm.HrmLAAppBatEntScrAll=All +hrm.HrmLAAppBatEntScrApproved=Approved +hrm.HrmLAAppBatEntScrPending=Pending + + + + + + + + +hrm.HrmPrmNotice.heading=PROMOTION NOTICE DETAIL +hrm.HrmPrmNotice.header=Promotion Notice +hrm.HrmPrmNotice.detail=Promotion Notice Detail +hrm.HrmPrmNotice.noticeNo=Notice No +hrm.HrmPrmNotice.noticeDate=Notice Date +hrm.HrmPrmNotice.desc=Description +hrm.HrmPrmNotice.txtPositionCode=Position Code +hrm.HrmPrmNotice.txtDesignation=Designation +hrm.HrmPrmNotice.txtScale=Scale +hrm.HrmPrmNotice.txtVacancies=No Of Vacancies +hrm.HrmPrmNotice.txtExamDate=Examination Date +hrm.HrmPrmNotice.detail.date=Exam Date cannot be less than Notice Date + +hrm.HrmPrmCriteria.heading=POSITION WISE PROMOTION CRITERIA +hrm.HrmPrmCriteria.toPostHeader=Position Criteria(To Post) +hrm.HrmPrmCriteria.toPost=To Post +hrm.HrmPrmCriteria.toDesc=Description +hrm.HrmPrmCriteria.toDesignation=Designation +hrm.HrmPrmCriteria.toScale=Scale +hrm.HrmPrmCriteria.fromPostHeader=Position Criteria(From Post) +hrm.HrmPrmCriteria.fromPost=From Post +hrm.HrmPrmCriteria.fromDesc=Description +hrm.HrmPrmCriteria.fromDesignation=Designation +hrm.HrmPrmCriteria.fromScale=Scale +hrm.HrmPrmCriteria.detail=Promotion Criteria +hrm.HrmPrmCriteria.txtDescription=Description +hrm.HrmPrmCriteria.txtCriteriaStartDate=Criteria Start Date +hrm.HrmPrmCriteria.txtCriteriaEndDate=Criteria End Date +hrm.HrmPrmCriteria.txtMinServicePeriod=Minimum Service Period +hrm.HrmPrmNotice.txtLocationCode=Location Code +hrm.HrmPrmCriteria.txtReqYears=Req Years in Current Post +hrm.HrmPrmCriteria.txtYearAPAR=No Of Year APAR +hrm.HrmPrmCriteria.code=Code +hrm.HrmPrmCriteria.name=Name +hrm.HrmPrmCriteria.hierarchy=Hierarchy +hrm.HrmPrmCriteria.description=Description +hrm.HrmPrmCriteria.designation=Designation +hrm.HrmPrmCriteria.scale=Scale +hrm.HrmPrmCriteria.error.dateRangeInvalid={0} must be before {1} in row {2} +hrm.HrmPrmCriteria.error.dateOverlapping={0} at row {1} must be after {2} at row {3} + + + +hrm.HrmPrmKPARating.heading=POSITION WISE KPA RATING +hrm.HrmPrmKPAPoints.heading=KPA POINTS +hrm.HrmPrmKPARating.header=Desigation Header +hrm.HrmPrmKPARating.positionCode=Position Code +hrm.HrmPrmKPARating.rating=Rating Scheme +hrm.HrmPrmKPARating.hierarchy=Hierarchy +hrm.HrmPrmKPARating.desc=Description +hrm.HrmPrmKPARating.designation=Designation +hrm.HrmPrmKPARating.scale=Scale +hrm.HrmPrmKPARating.nextHeader=Appraisal Type +hrm.HrmPrmKPARating.finalHeader=Rating Details +hrm.HrmPrmKPARating.ratingTyp=Rating Type +hrm.HrmPrmKPARating.k=KPA Wise Rating +hrm.HrmPrmKPARating.f=Final Rating +hrm.HrmPrmKPARating.maxRating=Maximum Rating +hrm.HrmPrmKPARating.minRating=Minimum Rating +hrm.HrmPrmKPARating.detail=PositionWise KPA Rating +hrm.HrmPrmKPARating.txtKPAGroupCode=KPA Group Code +hrm.HrmPrmKPARating.txtKPAGroupDesc=KPA Group Desc +hrm.HrmPrmKPARating.txtReqAvgRating=Required Average Rating +hrm.HrmPrmKPARating.txtFromRating=FromRating +hrm.HrmPrmKPARating.txtToRating=ToRating +hrm.HrmPrmKPARating.txtPoints=Points +hrm.HrmPrmKPARating.errorinrating=ToRating should be less than Maximum Rating and FromRating should be greater than Minimum Rating +hrm.HrmPrmKPARating.gradeCode=Grade +hrm.HrmPrmKPARating.desigCode=Designation +hrm.HrmPrmKPARating.gradeDesc=Grade Description +hrm.HrmPrmKPARating.desigDesc=Designation Description + + +hrm.HrmPrmFinalRating.detail=Final KPA Rating +hrm.HrmPrmFinalRating.heading=POSITION WISE KPA RATING +hrm.HrmPrmFinalRating.header=Desigation Header +hrm.HrmPrmFinalRating.positionCode=Position Code +hrm.HrmPrmFinalRating.template=Template +hrm.HrmPrmFinalRating.hierarchy=Hierarchy +hrm.HrmPrmFinalRating.desc=Description +hrm.HrmPrmFinalRating.designation=Designation +hrm.HrmPrmFinalRating.scale=Scale +hrm.HrmPrmFinalRating.nextHeader=Appraisal Type +hrm.HrmPrmFinalRating.finalHeader=Rating Details +hrm.HrmPrmFinalRating.kpaWiseRating=KPA Wise Rating +hrm.HrmPrmFinalRating.finalRating=Final Rating +hrm.HrmPrmFinalRating.maxRating=Maximum Rating +hrm.HrmPrmFinalRating.minRating=Minimum Rating +hrm.HrmPrmFinalRating.detail=Final KPA Rating +hrm.HrmPrmFinalRating.txtKPAGroupCode=KPA Group Code +hrm.HrmPrmFinalRating.txtKPAGroupDesc=KPA Group Desc +hrm.HrmPrmFinalRating.txtReqAvgRating=Required Average Rating + + +hrm.HrmLeaveLedgerTransc.mainHeader=EMPLOYEE LEAVE LEDGER +hrm.HrmLeaveLedgerTransc.subHeader1=Leave Query +hrm.HrmLeaveLedgerTransc.subHeader2=Employee Leave Status +hrm.HrmLeaveLedgerTransc.subHeader3=Employee Leave Transaction +hrm.HrmLeaveLedgerTransc.employeeNo=Employee No. +hrm.HrmLeaveLedgerTransc.leaveType=Leave Type +hrm.HrmLeaveLedgerTransc.empNo=Employee No. +hrm.HrmLeaveLedgerTransc.leaveTypes=Leave Type +hrm.HrmLeaveLedgerTransc.applicationDate=Application Date +hrm.HrmLeaveLedgerTransc.action=Action +hrm.HrmLeaveLedgerTransc.fromDate=From date +hrm.HrmLeaveLedgerTransc.noOfDays=Number Of Days +hrm.HrmLeaveLedgerTransc.toDate=To Date +hrm.HrmLeaveLedgerTransc.payrollMonth=Payroll Month + + + + + +hrm.HrmEmployeeAppraisal.heading=EMPLOYEE APPRAISAL +hrm.HrmEmployeeAppraisal.header=Employee Appraisal +hrm.HrmEmployeeAppraisal.employeeNo=Employee No +hrm.HrmEmployeeAppraisal.employeeName=Employee Name +hrm.HrmEmployeeAppraisal.appraisalType=Appraisal Type +hrm.HrmEmployeeAppraisal.periodic=Periodic +hrm.HrmEmployeeAppraisal.Assignment=Assignment/AllocationEnd +hrm.HrmEmployeeAppraisal.durationFrom=Duration From +hrm.HrmEmployeeAppraisal.durationTo=Duration To +hrm.HrmEmployeeAppraisal.superiorRating=SuperiorRating +hrm.HrmEmployeeAppraisal.reviewerRating=ReviewerRating +hrm.HrmEmployeeAppraisal.peerRating=PeerRating +hrm.HrmEmployeeAppraisal.subordinateRating=SubordinateRating +hrm.HrmEmployeeAppraisal.remarks=Remarks +hrm.HrmEmployeeAppraisal.appraiserEmpNo=Appraiser Emp No +hrm.HrmEmployeeAppraisal.name=Name +hrm.HrmEmployeeAppraisal.txtKpaGroupCode=KPA Group Code +hrm.HrmEmployeeAppraisal.txtKpaCode=KPA Code +hrm.HrmEmployeeAppraisal.txtDesc=Description +hrm.HrmEmployeeAppraisal.txtSelfAppraisal=Self Appraisal +hrm.HrmEmployeeAppraisal.txtWeightage=Weightage +hrm.HrmEmployeeAppraisal.txtRemark=App. Remarks +hrm.HrmEmployeeAppraisal.txtRating=Rating +hrm.HrmEmployeeAppraisal.reviewerEmpNo=Reviewer Employee No +hrm.HrmEmployeeAppraisal.reviewerName=Reviewer Name +hrm.HrmEmployeeAppraisal.reviewComments=Rreview Comments +hrm.HrmEmployeeAppraisal.reviewRating=Review Rating +hrm.HrmEmployeeAppraisal.superiorEmpNo=EmployeeNo. +hrm.HrmEmployeeAppraisal.superiorEmpName=Employee Name + + +hrm.HrmLvAppln.mainHeader=EMPLOYEE LEAVE APPLICATION +hrm.HrmLvAppln.subHeader1=Employee Information +hrm.HrmLvAppln.employeeNumber=Employee Number +hrm.HrmLvAppln.employeeName=Employee Name +hrm.HrmLvAppln.designation=Designation +hrm.HrmLvAppln.MiddleName=Middle Name +hrm.HrmLvAppln.FirstName=First Name +hrm.HrmLvAppln.LastName=Last Name +hrm.HrmLvAppln.scaleOfPay=Scale Of Pay +hrm.HrmLvAppln.leaveCodes=Leave Code +hrm.HrmLvAppln.description=Description +hrm.HrmLvAppln.dateApplied=Date Applied +hrm.HrmLvAppln.fromYear=From Year +! hrm.HrmLvAppln.toYear=To Year +hrm.HrmLvAppln.transId=Leave Transaction Id +hrm.HrmLvAppln.fromAppDate=From Date +hrm.HrmLvAppln.toAppDate=To Date +hrm.HrmLvAppln.days=Number Of Days +hrm.HrmLvAppln.leaveBreakUp=Leave Break Up +hrm.HrmLvAppln.purpose=Purpose +hrm.HrmLvAppln.remarks=Remarks +hrm.HrmLvAppln.statusOfLeaves=Status +hrm.HrmLvAppln.new=New +hrm.HrmLvAppln.approved=Approved +hrm.HrmLvAppln.rejected=Rejected +hrm.HrmLvAppln.revised=Revised +hrm.HrmLvAppln.pending=Pending +hrm.HrmLvAppln.address=Address For Communication +hrm.HrmLvAppln.phone=Phone No. +hrm.HrmLvAppln.date=Date +hrm.HrmLvAppln.holidayFlag=Holiday Flag +hrm.HrmLvAppln.halfDayFlag=Half Day Flag +hrm.HrmLvAppln.firstHalf=First Half +hrm.HrmLvAppln.secondHalf=Second Half +hrm.HrmLvAppln.fullDay=Full Day +hrm.HrmLvAppln.suffix=Suffix +hrm.HrmLvAppln.prefix=Prefix +hrm.HrmLvAppln.intermediate=Intermediate +hrm.HrmLvAppln.holiday=Holiday +hrm.HrmLvAppln.workingDay=Working Day +hrm.HrmLvAppln.selectDates=Please select From Date and To Date. +hrm.HrmLvAppln.header.dateValidation=To Date should be Greater than From Date. +hrm.HrmLvAppln.header.calendarValidation=To Date and From Date should lie within the same Calendar Period. +hrm.HrmLvAppln.header.startDateHoliday=Leave Start Date should not lie on a Holiday. +hrm.HrmLvAppln.header.endDateHoliday=Leave End Date should not lie on a Holiday. +hrm.HrmLvAppln.prefixAssocNotAllowed=Leave cannot be Associated. Another Leave ends immediately before this leave's Start Date. +hrm.HrmLvAppln.suffixAssocNotAllowed=Leave cannot be Associated. Another Leave starts immediately after this leave's End Date. +hrm.HrmLvAppln.prefixAssocNotAllowedCL=No. Of Casual Leaves taken at a stretch exceeds the permitted amount(3). +hrm.HrmLvAppln.suffixAssocNotAllowedCL=No. Of Casual Leaves taken at a stretch exceeds the permitted amount(3). +hrm.HrmLvAppln.overlappingLeave=Leave is overlapping with another Leave. +hrm.HrmLvAppln.noOfYearsFailed=Minimum {0} years of service is required for this leave. +hrm.HrmLvAppln.timesInPeriodFailed=Leave is allowed for a maximum of {0} times in a calendar. +hrm.HrmLvAppln.maxDaysInPeriodFailed=Leave is allowed for a maximum of {0} days in a calendar. +hrm.HrmLvAppln.maxDaysPerTxnFailed=Leave is allowed for a maximum of {0} days at a time. +hrm.HrmLvAppln.minDaysPerTxnFailed=Minimum {0} days leave has to taken. +hrm.HrmLvAppln.maxTimesInServiceFailed=Leave is allowed for a maximum of {0} times in Service life. +hrm.HrmLvAppln.maxDaysInServiceFailed=Leave is allowed for a maximum of {0} days in Service life. +hrm.HrmLvAppln.tooManyDays=Cannot show breakup for more than 15 days. +hrm.HrmLvAppln.wrongApprover=Not Authorized to Approve. +hrm.HrmLvAppln.ltaFlag=Apply For LTA +hrm.HrmLvAppln.one=One Year +hrm.HrmLvAppln.two=Two Year +hrm.HrmLvAppln.optedFor=Opted For +hrm.HrmLvAppln.ltaAmount=Net LTA Amount (Rs.) +hrm.HrmLvAppln.eligAmount=Gross LTA Amount (Rs.) +hrm.HrmLvAppln.ltaElig=At least 5 days of PL required for claiming LTA +hrm.HrmLvAppln.checkBreakUp=Check Leave Break Up First +hrm.HrmLvAppln.leaveBalance=You don't have enough balance for this leave +hrm.HrmLvAppln.breakUp=Leave BreakUp for the applied period is shown in the detail block +hrm.HrmLvAppln.cancellationError=Leave cannot be cancelled as it has been encashed. +hrm.HrmLvAppln.clError=CL cannot be applied for more than 3 days. +hrm.HrmLvAppln.approverNotFound=No Approver has been tagged to you. Please contact HR! +hrm.HrmLvAppln.notEligible=You are not eligible to apply for this leave. Please contact HR! +hrm.HrmLvAppln.medFlag=Medical Certificate Provided +hrm.HrmLvAppln.MedicalErr=Medical Certificate has to be provided for the application. +hrm.HrmLvAppln.slMedError= Medical Certificate has to be submitted for applying more than 3 days of Sick Leave. +hrm.HrmLvAppln.onlysicklvallowed= After Special Leave only sick leave is allowed and a medical certificate must be provided. +hrm.HrmLeaveApplicationQuery.mainHeader=LEAVE APPLICATION QUERY +hrm.HrmLeaveApplicationQuery.subHeader1=Leave Details +hrm.HrmLeaveApplicationQuery.employeeNo=Employee Number +hrm.HrmLeaveApplicationQuery.employeeName=Employee Name +hrm.HrmLeaveApplicationQuery.leaveCode=Leave Type +hrm.HrmLeaveApplicationQuery.leaveDescription=Leave Description +hrm.HrmLeaveApplicationQuery.fromDate=From Date +hrm.HrmLeaveApplicationQuery.toDate=To Date +hrm.HrmLeaveApplicationQuery.statusOfLeave=Status +hrm.HrmLeaveApplicationQuery.new=New +hrm.HrmLeaveApplicationQuery.pending=Pending +hrm.HrmLeaveApplicationQuery.approved=Approved +hrm.HrmLeaveApplicationQuery.rejected=Rejected +hrm.HrmLeaveApplicationQuery.revised=Revised +hrm.HrmLeaveApplicationQuery.transId= +hrm.HrmLeaveApplicationQuery.leaveCodes=Leave Code +hrm.HrmLeaveApplicationQuery.appliedLeaveDate=Applied Leave Date +hrm.HrmLeaveApplicationQuery.leaveStatus=Status +hrm.HrmLeaveApplicationQuery.new=New +hrm.HrmLeaveApplicationQuery.pending=Pending +hrm.HrmLeaveApplicationQuery.approved=Approved +hrm.HrmLeaveApplicationQuery.rejected=Rejected + + +hrm.HrmGenEligRule.heading=ELIGIBILITY RULES +hrm.HrmGenEligRule.header=Generate Formula +hrm.HrmGenEligRule.eligibilityClass=Eligibility Class +hrm.HrmGenEligRule.operator=Operator +hrm.HrmGenEligRule.values=Values +hrm.HrmGenEligRule.leave=Leave +hrm.HrmGenEligRule.loan=Loan +hrm.HrmGenEligRule.advances=Advances +hrm.HrmGenEligRule.claims=Claims +hrm.HrmGenEligRule.separation=Separation +hrm.HrmGenEligRule.earningDeduction=Earning/Deduction +hrm.HrmGenEligRule.documentType=Document Type +hrm.HrmGenEligRule.documentCode=Document Code +hrm.HrmGenEligRule.formula=Formula +hrm.HrmGenEligRule.subHeader1=Document Details +hrm.HrmGenEligRule.mainHeader=ELIGIBILITY RULE DETAIL +hrm.HrmGenEligRule.eligRule=Eligibility Rule + + + + +hrm.HrmCancellationBatch.mainHeader=LEAVE CANCELLATION BATCH +hrm.HrmCancellationBatch.subHeader1=Employe Details +hrm.HrmCancellationBatch.employeeNo=Employee No. +hrm.HrmCancellationBatch.employeeName=Employee Name +hrm.HrmCancellationBatch.cancelFromDate=Cancel From Date +hrm.HrmCancellationBatch.leaveCode=Leave Code +hrm.HrmCancellationBatch.leaveDescription=Leave Description +hrm.HrmCancellationBatch.cancelToDate=Cancel To Date +hrm.HrmCancellationBatch.empNo=Employee No. +hrm.HrmCancellationBatch.cd=CD +hrm.HrmCancellationBatch.transId=Transaction ID +hrm.HrmCancellationBatch.fromDate=From Date +hrm.HrmCancellationBatch.toDate=To Date +hrm.HrmCancellationBatch.days=Days +hrm.HrmCancellationBatch.cancDate=Cancellation Date +hrm.HrmCancellationBatch.cancType=Cancellation Type +hrm.HrmCancellationBatch.cancFromDate=Cancel From Date +hrm.HrmCancellationBatch.cancToDate=Cancel To Date +hrm.HrmCancellationBatch.daysCancelled=Days Cancelled +hrm.HrmCancellationBatch.remarks=Remarks + + + +hrm.HrmLeaveBreakUp.mainHeader=LEAVE BREAK UP +hrm.HrmLeaveBreakUp.subHeader1=Employee Details +hrm.HrmLeaveBreakUp.employeeNo=Employee No. +hrm.HrmLeaveBreakUp.leaveCode=Leave Code +hrm.HrmLeaveBreakUp.leaveDate=Leave Date +hrm.HrmLeaveBreakUp.fullDayFlag=Full/Half Day Flag +hrm.HrmLeaveBreakUp.firstHalf=First Half +hrm.HrmLeaveBreakUp.secondHalf=Second Half +hrm.HrmLeaveBreakUp.fullDay=Full Day + + +hrm.HrmLeaveCancellationQuery.mainHeader=LEAVE CANCELLATION QUERY +hrm.HrmLeaveCancellationQuery.subHeader1=Leave Details +hrm.HrmLeaveCancellationQuery.employeeNumber=Employee Number +hrm.HrmLeaveCancellationQuery.leaveType=Leave Type +hrm.HrmLeaveCancellationQuery.leaveDescription=Leave Description +hrm.HrmLeaveCancellationQuery.cancelFromDate=From Date +hrm.HrmLeaveCancellationQuery.cancelToDate=To Date +hrm.HrmLeaveCancellationQuery.cancellationStatus=Cancellation Type +hrm.HrmLeaveCancellationQuery.full=Full +hrm.HrmLeaveCancellationQuery.partial=Partial +hrm.HrmLeaveCancellationQuery.transId= +hrm.HrmLeaveCancellationQuery.leaveCodes=Leave Description +hrm.HrmLeaveCancellationQuery.appliedLeaveDate=Date Applied +hrm.HrmLeaveCancellationQuery.cancellationDate=Cancellation Date +hrm.HrmLeaveCancellationQuery.cancellationType=Cancellation Type +hrm.HrmLeaveCancellationQuery.cancelStatus=Status +hrm.HrmLeaveCancellationQuery.approved=Approved +hrm.HrmLeaveCancellationQuery.rejected=Rejected +hrm.HrmLeaveCancellationQuery.pending=Pending +hrm.HrmLeaveCancellationQuery.new=New + + +hrm.HrmSettlement.mainHeader=ADVANCE SETTLEMENT HEADS +hrm.HrmSettlement.subHeader1=Advance Description +hrm.HrmSettlement.subHeader2=Advance Settlement Heads +hrm.HrmSettlement.advanceCode=Advance Code +hrm.HrmSettlement.advanceDescription=Advance Description +hrm.HrmSettlement.headName=Head Name +hrm.HrmSettlement.maxLimit=Maximum Limit + +hrm.HrmAdvSettlementHeads.mainHeader=ADVANCE SETTLEMENT HEADS +hrm.HrmAdvSettlementHeads.subHeader1=Advance Description +hrm.HrmAdvSettlementHeads.subHeader2=Advance Settlement Heads +hrm.HrmAdvSettlementHeads.advanceCode=Advance Code +hrm.HrmAdvSettlementHeads.advanceDescription=Advance Description +hrm.HrmAdvSettlementHeads.headName=Head Name +hrm.HrmAdvSettlementHeads.maxLimit=Maximum Limit +hrm.HrmAdvSettlementHeads.amount=Amount +hrm.HrmAdvSettle.balance=Outstanding Balance +hrm.HrmAdvSettle.recoveredAmount=Amount Recovered +hrm.HrmAdvSettle.paidInstallments=No Of Installments +hrm.HrmAdvSettle.sanctionedDate=Sanction date +hrm.HrmAdvSettle.sanctionedAmount=Sanction Amount + + + +hrm.HrmEarningDeduction.mainHeader=EARNING DEDUCTION MASTER +hrm.HrmEarningDeduction.subHeader1=Earning Deduction Type Master +hrm.HrmEarningDeduction.subHeader2=Periodicity Details +hrm.HrmEarningDeduction.erngDednCode=Earning Deduction Code +hrm.HrmEarningDeduction.erngDednName=Earning Deduction Name +hrm.HrmEarningDeduction.erngOrDedn=Earning Or Deduction +hrm.HrmEarningDeduction.earning=Earning +hrm.HrmEarningDeduction.deduction=Deduction +hrm.HrmEarningDeduction.calendarType=Calendar Type +hrm.HrmEarningDeduction.erngTaxable=Earning Is Taxable +hrm.HrmEarningDeduction.yes=Yes +hrm.HrmEarningDeduction.no=No +hrm.HrmEarningDeduction.onDedn=On Deduction +hrm.HrmEarningDeduction.noTaxImplicn=No Tax Implication +hrm.HrmEarningDeduction.TaxExemption=Tax Exemption +hrm.HrmEarningDeduction.TaxRebate=Tax Rebate +hrm.HrmEarningDeduction.billTaxExempt=Bill Tax Exemption +hrm.HrmEarningDeduction.depOnOthrErng=Dependant On Other Earnings +hrm.HrmEarningDeduction.needToApply=Need To Apply +hrm.HrmEarningDeduction.leaveEncshCase=Leave Encashment Case +hrm.HrmEarningDeduction.erngOrDednOnLoc=Earning/Deduction Dependant On Location +hrm.HrmEarningDeduction.local=Local +hrm.HrmEarningDeduction.outOfStation=Out Of Station +hrm.HrmEarningDeduction.abroad=Abroad +hrm.HrmEarningDeduction.universal=Universal +hrm.HrmEarningDeduction.attendanceDependancy=Attendance Dependancy +hrm.HrmEarningDeduction.periodicOrNot=Periodic Or Not +hrm.HrmEarningDeduction.payThroughPayroll=Payment Through Payroll +hrm.HrmEarningDeduction.flexiAllowance=Component Of Flexi Allowance +hrm.HrmEarningDeduction.periodInMonths=Period In Months Or Calendar Period +hrm.HrmEarningDeduction.Month=Month +hrm.HrmEarningDeduction.CalendarPeriod=Calendar Period +hrm.HrmEarningDeduction.noOfMonths=No.Of Months Or Calendar Period +hrm.HrmEarningDeduction.noOfErngs=No.Of Earning Or Deduction/Period +hrm.HrmEarningDeduction.description=Description +hrm.HrmEarningDeduction.leaveType=Leave Type +hrm.HrmEarningDeduction.deductionExemption Deduction Exemption(%) +hrm.HrmEarningDeduction.maxCalLimit=Maximum Calendar Limit +hrm.HrmEarningDeduction.maxLimit=Maximum Limit +hrm.HrmEarningDeduction.minLimit=Minimum Limit +hrm.HrmEarningDeduction.greaterOrLesser=Greater/Lesser/Either +hrm.HrmEarningDeduction.flatAmount=Flat Amount +hrm.HrmEarningDeduction.dependancyOnEarning=Dependancy On Earning +hrm.HrmEarningDeduction.effectFrom=Effective From +hrm.HrmEarningDeduction.effectTo=Effect To +hrm.HrmEarningDeduction.appliedToAll=Applied To All +hrm.HrmEarningDeduction.greater=Greater of Flat Amt/% of Earning +hrm.HrmEarningDeduction.lesser=Lesser of Flat Amt/% of Earning +hrm.HrmEarningDeduction.flat=Flat Amount +hrm.HrmEarningDeduction.dependancy=Based on Dependency Formula + + +hrm.HrmLeaveChangeQuery.mainHeader=LEAVE CHANGE QUERY +hrm.HrmLeaveChangeQuery.subHeader1=Leave Details +hrm.HrmLeaveChangeQuery.employeeNumber=Employee Number +hrm.HrmLeaveChangeQuery.employeeName=Employee Name +hrm.HrmLeaveChangeQuery.leaveType=Leave Type +hrm.HrmLeaveChangeQuery.leaveDescription=Leave Description +hrm.HrmLeaveChangeQuery.changeFromDate=Change From Date +hrm.HrmLeaveChangeQuery.changeToDate=Change To Date +hrm.HrmLeaveChangeQuery.transId=Transaction ID +hrm.HrmLeaveChangeQuery.leaveCodes=Leave Code +hrm.HrmLeaveChangeQuery.appliedLeaveDate=Applied Date +hrm.HrmLeaveChangeQuery.changeDate=Leave Change Date +hrm.HrmLeaveChangeQuery.leaveChangeStatus=Leave Change Status +hrm.HrmLeaveChangeQuery.full=Full +hrm.HrmLeaveChangeQuery.partial=Partial +hrm.HrmLeaveChangeQuery.dateValidation=From Date must be adjascent to To Date +hrm.HrmLeaveChangeQuery.detailDateValidation=From Date and To Date must be within the From Date and To date of the leave applied. + +hrm.HrmLeaveChange.mainHeader=LEAVE CHANGE +hrm.HrmLeaveChange.subHeader1=Employee Information +hrm.HrmLeaveChange.subHeader4=Leave Details +hrm.HrmLeaveChange.subHeader3=Change Details +hrm.HrmLeaveChange.employeeNo=Employee Number +hrm.HrmLeaveChange.employeeName=Employee Name +hrm.HrmLeaveChange.firstName=First Name +hrm.HrmLeaveChange.middleName=Middle Name +hrm.HrmLeaveChange.lastName=Last Name +hrm.HrmLeaveChange.leaveCode=Leave Code +hrm.HrmLeaveChange.leaveDescription=Leave Description +hrm.HrmLeaveChange.dateApplied=Date Applied +hrm.HrmLeaveChange.fromDate=From Date +hrm.HrmLeaveChange.toDate=To Date +hrm.HrmLeaveChange.days=No.of Days +hrm.HrmLeaveChange.address=Address +hrm.HrmLeaveChange.phoneNo=Phone No. +hrm.HrmLeaveChange.changeStatus=Change Status +hrm.HrmLeaveChange.purpose=Purpose +hrm.HrmLeaveChange.changeFromDate=Change From Date +hrm.HrmLeaveChange.changeToDate=Change To Date +hrm.HrmLeaveChange.leaveChangeId=Leave Change ID +hrm.HrmLeaveChange.remarks=Remarks +hrm.HrmLeaveChange.leaveChangeStatus=Leave Change Status +hrm.HrmLeaveChange.new=New +hrm.HrmLeaveChange.approved=Approved +hrm.HrmLeaveChange.noOfDays=Days +hrm.HrmLeaveChange.pending=Pending +hrm.HrmLeaveChange.rejected=Rejected +hrm.HrmLeaveChange.full=Full +hrm.HrmLeaveChange.partial=Partial +hrm.HrmLeaveChange.designation=Designation +hrm.HrmLeaveChange.scaleOfPay=Scale Of Pay + + +hrm.HrmAdvanceEligibility.mainHeader=ADVANCE ELIGIBILITY RULE +hrm.HrmAdvanceEligibility.subHeader1=Advance Details +hrm.HrmAdvanceEligibility.advanceCode=Advance Code +hrm.HrmAdvanceEligibility.description=Description +hrm.HrmAdvanceEligibility.designation=Designation +hrm.HrmAdvanceEligibility.scale=Scale +hrm.HrmAdvanceEligibility.grade=Grade +hrm.HrmAdvanceEligibility.level=Level + +!modified on 9th Feb 2006 Leave Encashment +hrm.HrmEmpEncash.mainHeader=EMPLOYEE LEAVE ENCASHMENT +hrm.HrmEmpEncash.subHeader1=Employee Information +hrm.HrmEmpEncash.employeeNumber=Employee Number +hrm.HrmEmpEncash.employeeName=Employee Name +hrm.HrmEmpEncash.FirstName=First Name +hrm.HrmEmpEncash.MiddleName=Middle Name +hrm.HrmEmpEncash.LastName=Last Name +hrm.HrmEmpEncash.designation=Designation +hrm.HrmEmpEncash.scaleOfPay=Scale Of Pay +hrm.HrmEmpEncash.fromDate=From Date +hrm.HrmEmpEncash.toDate=To Date +hrm.HrmEmpEncash.changeStatus=Encashment Status +hrm.HrmEmpEncash.new=New +hrm.HrmEmpEncash.approved=Approved +hrm.HrmEmpEncash.rejected=Rejected +hrm.HrmEmpEncash.pending=Pending +hrm.HrmEmpEncash.leaveCodes=Leave Code +hrm.HrmEmpEncash.description=Description +hrm.HrmEmpEncash.dateApplied=Date Applied +hrm.HrmEmpEncash.daysEncashed=No Of Days +hrm.HrmEmpEncash.daysEncashedError=You don't have sufficient Leave Balance +hrm.HrmEmpEncash.daysEncashedError2=Encashment for selected employee has already been done in this year +hrm.HrmEmpEncash.taxPercentage=IT Percentage +hrm.HrmEmpEncash.pfDeduction=PF Deduction +hrm.HrmEmpEncash.taxAmount=Income Tax Amount +hrm.HrmEmpEncash.taxAmountError=Deduction cannot be greater than Encashment Amount +hrm.HrmEmpEncash.encashedAmount=Net Encashed Amount +hrm.HrmEmpEncash.grade=Grade +hrm.HrmEmpEncash.desig=Designation +hrm.HrmEmpEncash.location=Location +hrm.HrmEmpEncash.dateConstraintViolated2=Application Date cannot be future date. +hrm.HrmEmpEncash.submitError=Encashment has already been done against this leave + +hrm.HrmAdvanceBatch.mainHeader=ADVANCE APPLICATION BATCH +hrm.HrmAdvanceBatch.subHeader1=Query Advance +hrm.HrmAdvanceBatch.employeeNo=Employee No. +hrm.HrmAdvanceBatch.advanceCode=Advance Code +hrm.HrmAdvanceBatch.fromDate=From Date +hrm.HrmAdvanceBatch.toDate=To Date +hrm.HrmAdvanceBatch.statusOfAdvance=Status Of Advance +hrm.HrmAdvanceBatch.all=All +hrm.HrmAdvanceBatch.approved=Approved +hrm.HrmAdvanceBatch.rejected=Rejected +hrm.HrmAdvanceBatch.pending=Pending +hrm.HrmAdvanceBatch.empNo=Employee No. +hrm.HrmAdvanceBatch.empName=Employee Name +hrm.HrmAdvanceBatch.cd=CD +hrm.HrmAdvanceBatch.dateApplied=Date Applied +hrm.HrmAdvanceBatch.advanceName=Advance Name +hrm.HrmAdvanceBatch.amountApplied=Amount Applied +hrm.HrmAdvanceBatch.reason=Reason +hrm.HrmAdvanceBatch.amountSettled=Amount Settled +hrm.HrmAdvanceBatch.approvedFlag=Approved Flag + + +hrm.HrmEmpAdvance.mainHeader=EMPLOYEE ADVANCE APPLICATION +hrm.HrmEmpAdvance.subHeader1=Employee Details +hrm.HrmEmpAdvance.employeeNumber=Employee Number +hrm.HrmEmpAdvance.designation=Designation +hrm.HrmEmpAdvance.employeeName=Employee Name +hrm.HrmEmpAdvance.scaleOfPay=Scale Of Pay +hrm.HrmEmpAdvance.fromDate=From Date +hrm.HrmEmpAdvance.toDate=To Date +hrm.HrmEmpAdvance.statusOfAdvance=Status Of Advance +hrm.HrmEmpAdvance.advanceCode=Advance Name +hrm.HrmEmpAdvance.advanceName=Advance Name +hrm.HrmEmpAdvance.advanceCodes=Advance Code +hrm.HrmEmpAdvance.dateApplied=Date Applied +hrm.HrmEmpAdvance.amountApplied=Amount Applied +hrm.HrmEmpAdvance.reason=Reason +hrm.HrmEmpAdvance.amountSettled=Amount Settled +hrm.HrmEmpAdvance.approvedFlag=Advance Status +hrm.HrmEmpAdvance.settlementAmount=Settlement Amount +hrm.HrmEmpAdvance.advanceStatus=Advance Status +hrm.HrmEmpAdvance.new=New +hrm.HrmEmpAdvance.approved=Approved +hrm.HrmEmpAdvance.pending=Pending +hrm.HrmEmpAdvance.rejected=Rejected +hrm.HrmEmpAdvance.effectiveFrom=Effective From +hrm.HrmEmpAdvance.effectiveTo=Effective To +hrm.HrmEmpAdvance.payrollMonth=Recovery Year Start Month (YYYYMM) +hrm.HrmEmpAdvance.noOfInst=No Of Installments +hrm.HrmEmpAdvance.monthlyInstallment=Equal Monthly Installments +hrm.HrmEmpAdvance.approverName=Approver's Name +hrm.HrmEmpAdvance.grade=Grade +hrm.HrmEmpAdvance.location=Location +hrm.HrmEmpAdvance.eligibleAmount=Eligible Amount +hrm.HrmEmpAdvance.sanctionedAmount=Sanctioned Amount +hrm.HrmEmpAdvance.sanctionDate=Sanctioned Date +hrm.HrmEmpAdvance.checkAmount=Sanctioned Amount cannot be greater than Eligible Amount +hrm.HrmEmpAdvance.checkPayroll=Employee's Payroll is incomplete +hrm.HrmEmpAdvance.checkEligAmt=Eligible Amount cannot be zero +hrm.HrmEmpAdvance.balance=Outstanding Balance +hrm.HrmEmpAdvance.paidInstallments=Installments Paid +hrm.HrmEmpAdvance.settledAmount=Amount Settled +hrm.HrmEmpAdvance.bulkSettlement=Bulk Settlement +hrm.HrmEmpAdvance.bulkSettleAmount=Settlement Amount +hrm.HrmEmpAdvance.bulkSettleAmountError=Bulk Settlement amount cannot be greater than Outstanding Balance. + +hrm.HrmEmpLoanAppln.mainHeader=EMPLOYEE LOAN APPLICATION +hrm.HrmEmpLoanAppln.subHeader1=Employee Details +hrm.HrmEmpLoanAppln.employeeNumber=Employee No. +hrm.HrmEmpLoanAppln.employeeName=Employee Name +hrm.HrmEmpLoanAppln.designation=Designation +hrm.HrmEmpLoanAppln.scaleOfPay=Scale Of Pay +hrm.HrmEmpLoanAppln.loanCode=Loan Code +hrm.HrmEmpLoanAppln.loanDesc=Description +hrm.HrmEmpLoanAppln.propertyPrice=Property Price +hrm.HrmEmpLoanAppln.eligibleAmount=Eligible Amount +hrm.HrmEmpLoanAppln.appliedAmount=Applied Amount +hrm.HrmEmpLoanAppln.percProperty=[%] Of Property Price +hrm.HrmEmpLoanAppln.applnDate=Date Applied +hrm.HrmEmpLoanAppln.sanctionDate=Sanction Date +hrm.HrmEmpLoanAppln.noOfInstallment=No.Of Installment +hrm.HrmEmpLoanAppln.fullyRepaid=Fully Repaid +hrm.HrmEmpLoanAppln.periodBetInstallment=Period Between Installment +hrm.HrmEmpLoanAppln.firstInstDate=First Installment Date +hrm.HrmEmpLoanAppln.approvedFlag=Approved Flag +hrm.HrmEmpLoanAppln.new=New +hrm.HrmEmpLoanAppln.pending=Pending +hrm.HrmEmpLoanAppln.approved=Approved +hrm.HrmEmpLoanAppln.rejected=Rejected +hrm.HrmEmpLoanAppln.reason=Reason +hrm.HrmEmpLoanAppln.remarks=Remarks +hrm.HrmEmpLoanAppln.noOfInstError=No.of Installments must be less no. of months left in Service. +hrm.HrmEmpLoanAppln.checkNoOfInst=Total No.of Installments must be equal to the sum of Principal Installment & Interest Installments. +hrm.HrmEmpLoanAppln.servicePeriodError=Minimum/Remaining Service Period is not within prescribed limit for this loan. +hrm.HrmEmpLoanAppln.minServicePeriodError=You don't have enough service period to apply for this loan. +hrm.HrmEmpLoanAppln.maxServicePeriodError=You don't have enough service period left to apply for this loan. +hrm.HrmEmpLoanAppln.disDtlTenAmt=Total Disbursed amount cannot be greater than Sanctioned Amount. +hrm.HrmEmpLoanAppln.sanctionedAmount=Sanctioned Amount +hrm.HrmEmpLoanAppln.percPropertyCheck=[%] of Property Price cannot be greater than 100%. +hrm.HrmEmpLoanAppln.grade=Grade +hrm.HrmEmpLoanAppln.location=Location +hrm.HrmEmpLoanAppln.loanDetails=Details of loans taken +hrm.HrmEmpLoanAppln.payrollMonth=Recovery Start Year Month(YYYYMM) +hrm.HrmEmpLoanAppln.totalInst=Total No Of Installments +hrm.HrmEmpLoanAppln.totalPrincipalInst=No Of Installments(Principal Recovery) +hrm.HrmEmpLoanAppln.totalInterestInst=No Of Installments(Interest Recovery) +hrm.HrmEmpLoanAppln.approvedBy=Approved By +hrm.HrmEmpLoanAppln.instAmount=Installment Amount +hrm.HrmEmpLoanAppln.noOfInstPaid=No Of Installments Paid +hrm.HrmEmpLoanAppln.noOfInstPrincipalPaid=No Of Installments(Principal) Paid +hrm.HrmEmpLoanAppln.noOfInstInterestPaid=No Of Installments(Interest) Paid +hrm.HrmEmpLoanAppln.totalAmountPaid=Total Amount Paid +hrm.HrmEmpLoanAppln.principalPaid=Principal Paid +hrm.HrmEmpLoanAppln.interestPaid=Interest Paid +hrm.HrmEmpLoanAppln.totalBalance=Outstanding Balance +hrm.HrmEmpLoanAppln.principalBalance=Outstanding Balance(Principal) +hrm.HrmEmpLoanAppln.interestBalance=Outstanding Balance(Interest) +hrm.HrmEmpLoanAppln.hbl=HBL Details +hrm.HrmEmpLoanAppln.hblAppliedFor=Applied For +hrm.HrmEmpLoanAppln.hblBranhConst=Nearest Branch of Construction +hrm.HrmEmpLoanAppln.hblDocSubmitted=Documents Submitted +hrm.HrmEmpLoanAppln.hblCity=City/Town/Village +hrm.HrmEmpLoanAppln.hblPO=Post Office +hrm.HrmEmpLoanAppln.hblDistrict=District +hrm.HrmEmpLoanAppln.hblMouza=Name of Mouza & J.L No +hrm.HrmEmpLoanAppln.hblKhatian=Khatian No +hrm.HrmEmpLoanAppln.hblDag=Dag/CS Plot No +hrm.HrmEmpLoanAppln.hblNoOfDeed=No Of The Deed +hrm.HrmEmpLoanAppln.hblParentDeed=Parent No Of The Deed +hrm.HrmEmpLoanAppln.hblVolOfDeed=Volume Of The Deed +hrm.HrmEmpLoanAppln.hblBookNo=Book No +hrm.HrmEmpLoanAppln.hblPageNo=Page No +hrm.HrmEmpLoanAppln.hblRegisteredAt=Registered At +hrm.HrmEmpLoanAppln.checkPayrollMonth= "Month" part in Recovery Year Start Month field not in proper format. +hrm.HrmEmpLoanAppln.checkPayrollMonth1= Change Recovery Year Start Month as Monthly Payroll for this month has been done. +hrm.HrmEmpLoanAppln.checkPayrollMonth2= Cannot be modified as the record has already been processed for this month's payroll +hrm.HrmEmpLoanAppln.checkPayrollYear="Year" part in Recovery Year Start Month field not in proper format. +hrm.HrmEmpLoanAppDisbur.loan=Application Details +hrm.HrmEmpLoanAppDisbur.repayment=Repayment Schedule +hrm.HrmEmpLoanAppDisbur.disbursement=Disbursement Detail +hrm.HrmEmpLoanAppDisbur.tentativeDisDate=Tentative Disb. date +hrm.HrmEmpLoanAppDisbur.tentativeAmt=Tentative Amount +hrm.HrmEmpLoanAppDisbur.actDisDate=Actual Disb. Date +hrm.HrmEmpLoanAppDisbur.actDisAmt=Actual Disb. Amount +hrm.HrmEmpLoanAppDisbur.disDateValidation=Disbursement Date cannot be prior to Sanction Date. +hrm.HrmEmpLoanAppDisbur.deleteNotPossible=Deletion not possible since payroll processing has been started. +hrm.HrmEmpLoanAppln.hblAppliedFor1=Purchase Of Flat/House +hrm.HrmEmpLoanAppln.hblAppliedFor2=Purchase Of Land for Const. of House +hrm.HrmEmpLoanAppln.hblAppliedFor3=Const. of House +hrm.HrmEmpLoanAppln.hblAppliedFor4=Rennovation of House +hrm.HrmEmpLoanAppln.hblAppliedFor5=Addl. Const. of House +hrm.HrmEmpLoanAppln.bulkAmount=Repayment Amount +hrm.HrmEmpLoanAppln.butBulkPayment=Bulk Payment +hrm.HrmEmpLoanAppln.checkBulkAmount=Repayment Amount can not be 0 +hrm.HrmEmpLoanAppln.checkBulk=Bulk Repayment cannot be done since the loan is yet to be disbursed. +hrm.HrmEmpLoanAppln.checkBulkAmount1=Repayment Amount can not be greater than Outstanding Balance +hrm.HrmEmpLoanAppln.DisbSaveError=Disbursement detail cannot be saved due to non-existence of corresponding data in Interest Details. +hrm.HrmEmpLoanAppln.bulkPaymentDate=Bulk Repayment Date + +hrm.HrmEmpLoanAppHblIntRate.fromAmount=Amount From +hrm.HrmEmpLoanAppHblIntRate.toAmount=Amount To +hrm.HrmEmpLoanAppHblIntRate.percentage=Interest Rate (Percentage) +hrm.HrmEmpLoanAppDisbur.HblIntRate=HBL Interest Rate +hrm.HrmEmpLoanAppHblIntRate.AmountError='Amount From' is greater than 'Amount To' in Row {0} of Detail. +hrm.HrmEmpLoanAppHblIntRate.PercentError='Interest Rate' cannot be greater than or equal to 100 in Row {0} of Detail. + +hrm.HrmEmpLoanAppRepay.yearMonth=Year Month +hrm.HrmEmpLoanAppRepay.openBalancePri=Opening Balance Principal +hrm.HrmEmpLoanAppRepay.openBalanceInt=Opening Balance Interest +hrm.HrmEmpLoanAppRepay.principalPaid=Principal Paid in Mth +hrm.HrmEmpLoanAppRepay.interestPaid=Interest Paid in Mth +hrm.HrmEmpLoanAppRepay.interestAccrued=Interest Accrued in Mth +hrm.HrmEmpLoanAppRepay.interestRate=Interest Rate + + +!modified on 11th Feb 2006 +hrm.HrmEmpTrngReq.mainHeader=TRAINING NOMINATION +hrm.HrmEmpTrngReq.subHeader1=Employee Details +hrm.HrmEmpTrngReq.employeeNumber=Employee Number +hrm.HrmEmpTrngReq.employeeName=Employee Name +hrm.HrmEmpTrngReq.designation=Designation +hrm.HrmEmpTrngReq.scaleOfPay=Scale Of Pay +hrm.HrmEmpTrngReq.dateSubmitted=Date Submitted +hrm.HrmEmpTrngReq.trainingCalendar=Training Calendar +hrm.HrmEmpTrngReq.courseName=Course Name +hrm.HrmEmpTrngReq.institutionName=Institution Name +hrm.HrmEmpTrngReq.startDate=Start Date +hrm.HrmEmpTrngReq.endDate=End Date +hrm.HrmEmpTrngReq.nature=Nature +hrm.HrmEmpTrngReq.urgent=Urgent +hrm.HrmEmpTrngReq.emergency=Emergency +hrm.HrmEmpTrngReq.normal=Normal +hrm.HrmEmpTrngReq.purpose=Purpose +hrm.HrmEmpTrngReq.recommender=Recommender +hrm.HrmEmpTrngReq.approvalStatus=Approval Status +hrm.HrmEmpTrngReq.new=New +hrm.HrmEmpTrngReq.pending=Pending +hrm.HrmEmpTrngReq.approved=Approved +hrm.HrmEmpTrngReq.rejected=Rejected +hrm.HrmEmpTrngReq.rejectionRemarks=Remarks +hrm.HrmEmpTrngReq.fullPart=Full Part +hrm.HrmEmpTrngReq.courseCode=Course Code +hrm.HrmEmpTrngReq.recoName=Recommender Name +hrm.HrmEmpTrngReq.date=Date +hrm.HrmEmpTrngReq.participation=Participation +hrm.HrmEmpTrngReq.no=No +hrm.HrmEmpTrngReq.yes=Yes +hrm.HrmEmpTrngReq.partDate=Participating Dates +hrm.HrmEmpTrngReq.firstName=First Name +hrm.HrmEmpTrngReq.middleName=Middle Name +hrm.HrmEmpTrngReq.lastName=Last Name +hrm.HrmEmpTrngReq.grade=Grade +hrm.HrmEmpTrngReq.desig=Designation +hrm.HrmEmpTrngReq.location=Location + + +hrm.HrmGenerateFormula.mainHeader=GENERATE FORMULA +hrm.HrmGenerateFormula.txtParameterDescription=Parameter Description +hrm.HrmGenerateFormula.txtParameterCode=Parameter Code +hrm.HrmGenerateFormula.operator=Operator +hrm.HrmGenerateFormula.formula=Formula +hrm.HrmGenerateFormula.tabHeader=Parameter +hrm.HrmGenerateFormula.add=+ Add +hrm.HrmGenerateFormula.subtract=- Subtract +hrm.HrmGenerateFormula.multiply=* Multiply +hrm.HrmGenerateFormula.divide=/ Divide +hrm.HrmGenerateFormula.power=^ Power +hrm.HrmGenerateFormula.bracketOpen=( Bracket Open +hrm.HrmGenerateFormula.bracketClose=) Bracket Close + + +hrm.HrmEmpTrngHistForm.employeeNo=Employee No. +hrm.HrmEmpTrngHistForm.employeeName=Employee Name +hrm.HrmEmpTrngHistForm.courseCode=Course Code +hrm.HrmEmpTrngHistForm.courseName=Course Name +hrm.HrmEmpTrngHistForm.calendarName=Calendar Name +hrm.HrmEmpTrngHistForm.startDate=Start Date +hrm.HrmEmpTrngHistForm.endDate=End Date +hrm.HrmEmpTrngHistForm.instName=Institute Name + +hrm.HrmAppraisalStart.mainHeader=APPRAISAL START ORDER +hrm.HrmAppraisalStart.subHeader=Appraisal Details +hrm.HrmAppraisalStart.workId=Work ID +hrm.HrmAppraisalStart.iniDate=Initiation Date +hrm.HrmAppraisalStart.pendingTime=Pending Time +hrm.HrmAppraisalStart.description=Process Description +hrm.HrmAppraisalStart.appraisalStatus=Status +hrm.HrmAppraisalStart.taskType=Task Type +hrm.HrmAppraisalStart.completionTime=Completion Date +hrm.HrmAppraisalStart.goalSetting=Goal Setting Process +hrm.HrmAppraisalStart.appraisal=Appraisal +hrm.HrmAppraisalStart.review=Review +hrm.HrmAppraisalStart.new=New +hrm.HrmAppraisalStart.pending=Pending +hrm.HrmAppraisalStart.closed=Closed +hrm.HrmAppraisalStart.selfAppraisal=Self Appraisal +hrm.HrmAppraisalStart.approverReviewer=Check Approver/Reviewer + + +hrm.HrmAppraisalRules.mainHeader=APPRAISAL RULES +hrm.HrmAppraisalRules.subHeader1=Appraisal Information +hrm.HrmAppraisalRules.ruleCode=Rule Code +hrm.HrmAppraisalRules.ruleName=Rule Name +hrm.HrmAppraisalRules.appraisalFrequency=Appraisal Frequency +hrm.HrmAppraisalRules.completionPeriod=Completion Period +hrm.HrmAppraisalRules.quarterly=Quarterly +hrm.HrmAppraisalRules.halfYearly=Half Yearly +hrm.HrmAppraisalRules.annually=Annually +hrm.HrmAppraisalRules.biMonthly=Bi-Monthly +hrm.HrmAppraisalRules.validity=Validity +hrm.HrmAppraisalRules.yes=Yes +hrm.HrmAppraisalRules.no=No +hrm.HrmAppraisalRules.applicable=Applicable To All +hrm.HrmAppraisalRules.startMonthDate=Start Month Date + + +hrm.HrmSepCatMstrForm.sepCode=Separation Code +hrm.HrmSepCatMstrForm.sepDesc=Separation Description + +hrm.HrmDeptClearanceForm.deptCode=Department Code +hrm.HrmDeptClearanceForm.deptName=Department Name + +hrm.HrmEmpClearanceForm.empNo=Employee No. +hrm.HrmEmpClearanceForm.empName=Employee Name + +hrm.HrmEmpSepForm.empNo=Employee No. +hrm.HrmEmpSepForm.empName=Employee Name + + +hrm.HrmAppKPAForm.KPAGrpCode=KPA Group Code +hrm.HrmAppKPAForm.description=Description +hrm.HrmAppKPAWtgForm.templateName=Template Name + + +hrm.HrmAppMapForm.employeeNo=Employee No +hrm.HrmAppMapForm.employeeName=Employee Name + +hrm.HrmCancelQueryForm.employeeNumber=Employee No +hrm.HrmCancelQueryForm.empName=Employee Name +hrm.HrmLeaveCancellationQuery.empName=Employee Name + +hrm.HrmCancelQueryForm.leaveType=Leave Type +hrm.HrmCancelQueryForm.leaveDesc=Leave Description + +hrm.HrmAppRuleForm.ruleCode=Rule Code +hrm.HrmAppRuleForm.description=Rule Name + +hrm.HrmTransferApplcn.mainHeader= EMPLOYEE TRANSFER APPLICATION +hrm.HrmTransferApplcn.subHeader1=Transfer Details +hrm.HrmTransferApplcn.subHeader2=Site Details +hrm.HrmTransferApplcn.fromDesignation=From Designation +hrm.HrmTransferApplcn.toDesignation=To Designation +hrm.HrmTransferApplcn.applnNo=Application No. +hrm.HrmTransferApplcn.self=Self +hrm.HrmTransferApplcn.office=Office +hrm.HrmTransferApplcn.employeeNo=Employee No. +hrm.HrmTransferApplcn.ofcNoteNo=Office Note No. +hrm.HrmTransferApplcn.ofcNoteDate=Office Note Date +hrm.HrmTransferApplcn.siteCode1=To Site(1) +hrm.HrmTransferApplcn.siteCode2=Site(2) +hrm.HrmTransferApplcn.siteCode3=Site(3) +hrm.HrmTransferApplcn.reason=Reason For Transfer[50 characters] +hrm.HrmTransferApplcn.generatedBy=Generated By +hrm.HrmTransferApplcn.transferSite=Preferred Sites +hrm.HrmTransferApplcn.applnDate=Application Date +hrm.HrmTransferApplcn.fromSite=From Site +hrm.HrmTransferApplcn.fromWorkGroup=From Work Group +hrm.HrmTransferApplcn.toWorkGroup=To Work Group +hrm.HrmTransferApplcn.toWorkGroupCode=WorkGroup Code +hrm.HrmTransferApplcn.applnType=Transfer Type +hrm.HrmTransferApplcn.sectional=Sectional +hrm.HrmTransferApplcn.locational=Locational +hrm.HrmTransferApplcn.workGroupCode=To Work Group +hrm.HrmTransferApplcn.workGroupName=Work Group Name +hrm.HrmTransferApplcn.employeeNo=Employee No. +hrm.HrmTransferApplcn.employeeName=Employee Name +hrm.HrmTransferApplcn.siteCode=Site Code +hrm.HrmTransferApplcn.siteName=Site Name +hrm.HrmTransferApplcn.trnsStatus=Status +hrm.HrmTransferApplcn.new=New +hrm.HrmTransferApplcn.approved=Approved +hrm.HrmTransferApplcn.pending=Pending +hrm.HrmTransferApplcn.rejected=Rejected +hrm.HrmTransferApplcn.tranReqDate=Requested Transfer Date + +hrm.HrmTransferOrder.mainHeader=TRANSFER ORDER +hrm.HrmTransferOrder.subHeader1=Transfer Information +hrm.HrmTransferOrder.subHeader2=Transfer Details +hrm.HrmTransferOrder.orderNo=Transfer Order No. +hrm.HrmTransferOrder.orderDate=Transfer Order Date +hrm.HrmTransferOrder.orderStatus=Status +hrm.HrmTransferOrder.new=New +hrm.HrmTransferOrder.approved=Approved +hrm.HrmTransferOrder.pending=Pending +hrm.HrmTransferOrder.closed=Closed +hrm.HrmTransferOrder.initiatedBy=Transfer Required By +hrm.HrmTransferOrder.fromSite=From Site +hrm.HrmTransferOrder.toSite=To Site +hrm.HrmTransferOrder.fromWorkGroup=From Work Group +hrm.HrmTransferOrder.toWorkGroup=To Work Group +hrm.HrmTransferOrder.reportingEmp=Reporting Employee +hrm.HrmTransferOrder.trnsfrEffectDate=Transfer Effect Date +hrm.HrmTransferOrder.taFlag=Applicable For TA +hrm.HrmTransferOrder.daFlag=Applicable For DA +hrm.HrmTransferOrder.noOfDays=No Of Days +hrm.HrmTransferOrder.reportingDate=Reporting Date +hrm.HrmTransferOrder.remarks=Remarks +hrm.HrmTransferOrder.selfOfcFlag=Self/Office Flag +hrm.HrmTransferOrder.empName=Employee Name +hrm.HrmTransferOrder.applnNo=Application No. +hrm.HrmTransferOrder.self=Self +hrm.HrmTransferOrder.office=Office +hrm.HrmTransferOrder.SiteName=Site Name +hrm.HrmTransferOrder.RepEmpGrade=Grade +wenrgise.HrmTransferOrder.transferOrderDateConstraintViolated=Transfer Order Date cannot be earlier than Transfer Application Date. +wenrgise.HrmTransferOrder.transdateConstraintViolated=Transfer Effective Date Date cannot be earlier than Transfer Order Date. +wenrgise.HrmTransferOrder.transReportingDateConstraintViolated=Transfer Reporting Date cannot be earlier than Transfer Effective Date. + +hrm.HrmATDTransOrderForSingleEmp.mainHeader=TRANSFER ORDER +hrm.HrmATDTransOrderForSingleEmp.mainHeader=TRANSFER ORDER FOR SINGLE EMPLOYEE +hrm.HrmATDTransOrderForSingleEmp.subHeader=Transfer Order Information +hrm.HrmATDTransOrderForSingleEmp.subHeader1=Transfer Information +hrm.HrmATDTransOrderForSingleEmp.subHeader2=Transfer Details +hrm.HrmATDTransOrderForSingleEmp.orderNo=Transfer Order No. +hrm.HrmATDTransOrderForSingleEmp.orderDate=Transfer Order Date +hrm.HrmATDTransOrderForSingleEmp.orderStatus=Status +hrm.HrmATDTransOrderForSingleEmp.new=New +hrm.HrmATDTransOrderForSingleEmp.approved=Approved +hrm.HrmATDTransOrderForSingleEmp.pending=Pending +hrm.HrmATDTransOrderForSingleEmp.rejected=Rejected +hrm.HrmATDTransOrderForSingleEmp.initiatedBy=Transfer Required By +hrm.HrmATDTransOrderForSingleEmp.fromSite=Transfer From Site +hrm.HrmATDTransOrderForSingleEmp.toSite=Transfer To Site +hrm.HrmATDTransOrderForSingleEmp.fromWorkGroup=From Work Group +hrm.HrmATDTransOrderForSingleEmp.toWorkGroup=To Work Group +hrm.HrmATDTransOrderForSingleEmp.reportingEmpId=Reporting Employee Name +hrm.HrmATDTransOrderForSingleEmp.trnsfrEffectDate=Transfer Effect Date +hrm.HrmATDTransOrderForSingleEmp.taFlag=Applicable For TA +hrm.HrmATDTransOrderForSingleEmp.daFlag=Applicable For DA +hrm.HrmATDTransOrderForSingleEmp.noOfDays=Days Alloted For Transfer +hrm.HrmATDTransOrderForSingleEmp.reportingDate=Reporting Date +hrm.HrmATDTransOrderForSingleEmp.remarks=Approver's Remarks[250 characters] +hrm.HrmATDTransOrderForSingleEmp.selfOfcFlag=Self/Office Flag +hrm.HrmATDTransOrderForSingleEmp.empNo=Employee No. +hrm.HrmATDTransOrderForSingleEmp.applnNo=Application No. +hrm.HrmATDTransOrderForSingleEmp.self=Self +hrm.HrmATDTransOrderForSingleEmp.office=Office +hrm.HrmATDTransOrderForSingleEmp.orderType=Order Type +hrm.HrmATDTransOrderForSingleEmp.sectional=Sectional +hrm.HrmATDTransOrderForSingleEmp.locational=Locational +hrm.HrmATDTransOrderForSingleEmp.fromDesignation=From Designation +hrm.HrmATDTransOrderForSingleEmp.toDesignation=To Designation +hrm.HrmATDTransOrderForSingleEmp.approvedBy=Approved By + + +hrm.HrmReleaseOrder.mainHeader=EMPLOYEE RELEASE ORDER +hrm.HrmReleaseOrder.subHeader1=Order Details +hrm.HrmReleaseOrder.subHeader2=Release Information +hrm.HrmReleaseOrder.orderNo=Release Order No. +hrm.HrmReleaseOrder.orderDate=Release Order Date +hrm.HrmReleaseOrder.orderType=Release Order Type +hrm.HrmReleaseOrder.rlseStatus=Status +hrm.HrmReleaseOrder.siteTransfer=Site Transfer +hrm.HrmReleaseOrder.departmentalTransfer=Departmental Transfer +hrm.HrmReleaseOrder.new=New +hrm.HrmReleaseOrder.approved=Approved +hrm.HrmReleaseOrder.rejected=Rejected +hrm.HrmReleaseOrder.pending=Pending +hrm.HrmReleaseOrder.trnsfrOrdrNo=Transfer Order No. +hrm.HrmReleaseOrder.empName=Employee Name +hrm.HrmReleaseOrder.rlseDate=Release Date +hrm.HrmReleaseOrder.fNoonFlag=Fore-Noon/After-Noon +hrm.HrmReleaseOrder.rlseWorkGrpCode=Work Group Name +hrm.HrmReleaseOrder.rlseSiteCode=Site Name +hrm.HrmReleaseOrder.remarks=Remarks +hrm.HrmReleaseOrder.foreNoon=Fore Noon +hrm.HrmReleaseOrder.afterNoon=After Noon +hrm.HrmReleaseOrder.na=Not Applicable + + +hrm.HrmChargeReport.mainHeader=TRANSFER CHARGE REPORT +hrm.HrmChargeReport.subHeader1=Charge Details +hrm.HrmChargeReport.trnOrderNo=Transfer Order No. +hrm.HrmChargeReport.empName=Employee Name +hrm.HrmChargeReport.chargeType=Charge Type +hrm.HrmChargeReport.handOver=Hand Over +hrm.HrmChargeReport.takeOver=Take Over +hrm.HrmChargeReport.chargeCode=Charge Code +hrm.HrmChargeReport.handOverDate=Hand Over/Take Over Date +hrm.HrmChargeReport.noonFlag=Fore Noon/After Noon +hrm.HrmChargeReport.foreNoon=Fore Noon +hrm.HrmChargeReport.afterNoon=AfterNoon +hrm.HrmChargeReport.na=Not Applicable +hrm.HrmChargeReport.workGroupCode=Work Group Code +hrm.HrmChargeReport.siteCode=Site Code +hrm.HrmChargeReport.remarks=Remarks +hrm.HrmChargeReport.empNo=Employee No. +hrm.HrmChargeReport.fromSite=From Site +hrm.HrmChargeReport.toSite=To Site +hrm.HrmChargeReport.transferDate=Transfer Order Date +hrm.HrmChargeReport.fromWorkGroup=From Work Group +hrm.HrmChargeReport.toWorkGroup=To Work group +hrm.HrmChargeReport.fromSiteCode=From Site +hrm.HrmChargeReport.toSiteCode=To Site +hrm.HrmChargeReport.chargeStatus=Charge Status +hrm.HrmChargeReport.toDesignation=To Designation +hrm.HrmChargeReport.fromDesignation=From Designation +hrm.HrmChargeReport.handoverTakeover=Handover/Takeover To/From +hrm.HrmChargeReport.orderType=Transfer Type + + +hrm.HrmCancApplcn.mainHeader=TRANSFER CANCELLATION APPLICATION +hrm.HrmCancApplcn.subHeader1=Application Details +hrm.HrmCancApplcn.subHeader2=Transfer Order Details +hrm.HrmCancApplcn.applnNo=Application No. +hrm.HrmCancApplcn.applnDate=Application Date +hrm.HrmCancApplcn.empNo=Employee No. +hrm.HrmCancApplcn.empName=Employee Name +hrm.HrmCancApplcn.generatedBy=Generated By +hrm.HrmCancApplcn.self=Self +hrm.HrmCancApplcn.office=Office +hrm.HrmCancApplcn.ofcNoteNo=Office Note No. +hrm.HrmCancApplcn.ofcNoteDate=Office Note Date +hrm.HrmCancApplcn.cancelDeferFlag=Cancel/Defer +hrm.HrmCancApplcn.cancelled=Cancelled +hrm.HrmCancApplcn.deferred=Deferred +hrm.HrmCancApplcn.defermentPeriod=Deferment Period +hrm.HrmCancApplcn.deferredDate=Deferred Date +hrm.HrmCancApplcn.reason=Reason[700 characters] +hrm.HrmCancApplcn.orderNo=Transfer Order No. +hrm.HrmCancApplcn.trnOrderType=Transfer Order Type +hrm.HrmCancApplcn.sectional=Sectional +hrm.HrmCancApplcn.locational=Locational +hrm.HrmCancApplcn.fromSite=From Site +hrm.HrmCancApplcn.toSite=To Site +hrm.HrmCancApplcn.fromWorkGroup=From Workgroup +hrm.HrmCancApplcn.toWorkGroup=To Workgroup +hrm.HrmCancApplcn.deferredStatus=Status +hrm.HrmCancApplcn.new=New +hrm.HrmCancApplcn.pending=Pending +hrm.HrmCancApplcn.approved=Approved +hrm.HrmCancApplcn.rejected=Rejected +hrm.HrmCancApplcn.orderDate=Transfer Order Date +hrm.HrmCancApplcn.effectDate=Transfer Effect Date +hrm.HrmCancApplcn.fromDesignation=From Designation +hrm.HrmCancApplcn.toDesignation=To Designation +hrm.HrmCancApplcn.fromWorkgroup=From Workgroup +hrm.HrmCancApplcn.toWorkgroup=To Workgroup + +hrm.HrmTransCnclOrderForSingleEmp.mainHeader=TRANSFER CANCELLATION ORDER FOR SINGLE EMPLOYEE +hrm.HrmATDTransCnclOrderForSingleEmp.subHeader1=Application Details +hrm.HrmATDTransCnclOrderForSingleEmp.subHeader2=Order Information +hrm.HrmATDTransCnclOrderForSingleEmp.orderNo=Cancel Order No +hrm.HrmATDTransCnclOrderForSingleEmp.orderDate=Cancel Order Date +hrm.HrmATDTransCnclOrderForSingleEmp.generatedBy=Generated By +hrm.HrmATDTransCnclOrderForSingleEmp.self=Self +hrm.HrmATDTransCnclOrderForSingleEmp.office=Office +hrm.HrmATDTransCnclOrderForSingleEmp.cnclDeferFlag=Cancel/Defer Flag +hrm.HrmATDTransCnclOrderForSingleEmp.defer=Deferred +hrm.HrmATDTransCnclOrderForSingleEmp.cancel=Cancelled +hrm.HrmATDTransCnclOrderForSingleEmp.cancStatus=Status +hrm.HrmATDTransCnclOrderForSingleEmp.new=New +hrm.HrmATDTransCnclOrderForSingleEmp.approved=Approved +hrm.HrmATDTransCnclOrderForSingleEmp.pending=Pending +hrm.HrmATDTransCnclOrderForSingleEmp.rejected=Rejected +hrm.HrmATDTransCnclOrderForSingleEmp.defDate=Deferred Date +hrm.HrmATDTransCnclOrderForSingleEmp.defPeriod=Deferment Period +hrm.HrmATDTransCnclOrderForSingleEmp.subHeader3=Defer Order Details +hrm.HrmATDTransCnclOrderForSingleEmp.appNo=Application no. +hrm.HrmATDTransCnclOrderForSingleEmp.appDate=Application Date +hrm.HrmATDTransCnclOrderForSingleEmp.employeeName=Employee Name +hrm.HrmATDTransCnclOrderForSingleEmp.transOrderNo=Transfer Order No. +hrm.HrmATDTransCnclOrderForSingleEmp.transOrderDate=Transfer Order Date +hrm.HrmATDTransCnclOrderForSingleEmp.transEffectDate=Transfer Effect Date +hrm.HrmTransCnclOrder.orderDate=Order Date +hrm.HrmTransCnclOrder.orderNo=Order No + +hrm.HrmDeputationApplicn.mainHeader=DEPUTATION-OUT APPLICATION +hrm.HrmDeputationApplicn.subHeader1=Deputation Details +hrm.HrmDeputationApplicn.applnNo=Application No. +hrm.HrmDeputationApplicn.applnDate=Application Date +hrm.HrmDeputationApplicn.deputType=Deputation Type +hrm.HrmDeputationApplicn.F=Foreign Organisation +hrm.HrmDeputationApplicn.O=Other Government Agencies +hrm.HrmDeputationApplicn.W=Within The Organisation +hrm.HrmDeputationApplicn.advtNo=Advertisement No. +hrm.HrmDeputationApplicn.advtDate=Advertisement Date +hrm.HrmDeputationApplicn.employeeNo=Employee No. +hrm.HrmDeputationApplicn.orgName=Organisation Name +hrm.HrmDeputationApplicn.postCode=Name Of The Post +hrm.HrmDeputationApplicn.postName=Post Name +hrm.HrmDeputationApplicn.reason=Reason +hrm.HrmDeputationApplicn.deputStatus=Status +hrm.HrmDeputationApplicn.new=New +hrm.HrmDeputationApplicn.pending=Pending +hrm.HrmDeputationApplicn.approved=Approved +hrm.HrmDeputationApplicn.rejected=Rejected +hrm.HrmDeputationApplicn.empName=Employee Name +hrm.HrmDeputationApplicn.postCode=Post Code + +hrm.HrmDeputationOrder.mainHeader=DEPUTATION ORDER FOR SINGLE EMPLOYEE +hrm.HrmDeputationOrder.subHeader=Deputation Order Details +hrm.HrmDeputationOrder.subHeader1=Application Details +hrm.HrmDeputationOrder.orderNo=Deputation Order No. +hrm.HrmDeputationOrder.orderDate=Deputation Order Date +hrm.HrmDeputationOrder.deputType=Deputation Type +hrm.HrmDeputationOrder.F=Foreign Organisation +hrm.HrmDeputationOrder.O=Other Government Agencies +hrm.HrmDeputationOrder.W=Within The Organisation +hrm.HrmDeputationOrder.orderStatus=Deputation Order Status +hrm.HrmDeputationOrder.new=New +hrm.HrmDeputationOrder.approved=Approved +hrm.HrmDeputationOrder.pending=Pending +hrm.HrmDeputationOrder.rejected=Rejected +hrm.HrmDeputationOrder.applnNo=Application No. +hrm.HrmDeputationOrder.employeeName=Employee Name +hrm.HrmDeputationOrder.applicationDate=Application Date +hrm.HrmDeputationOrder.toOrg=To Organisation +hrm.HrmDeputationOrder.toPost=To Post +hrm.HrmDeputationOrder.deptnEffectDate=Deputation Effect Date +hrm.HrmDeputationOrder.reportingDate=Reporting Date +hrm.HrmDeputationOrder.remarks=Remarks +hrm.HrmDeputationOrder.eMail=Email +hrm.HrmDeputationOrder.phone=Phone +hrm.HrmDeputationOrder.mobilePhone=Mobile Phone +hrm.HrmDeputationOrder.fax=Fax +hrm.HrmDeputationOrder.reptBackDate=Reporting Back Date + + +hrm.HrmDeputChargeReport.mainHeader=DEPUTATION CHARGE REPORT +hrm.HrmDeputChargeReport.subHeader1=Charge Order Details +hrm.HrmDeputChargeReport.dptOrderNo=Deputation Order No. +hrm.HrmDeputChargeReport.empName=Employee Name +hrm.HrmDeputChargeReport.deputationDate=Deputation Date +hrm.HrmDeputChargeReport.chargeCode=Charge Code +hrm.HrmDeputChargeReport.handOverDate=Hand Over/Take Over Date +hrm.HrmDeputChargeReport.chargeType=Charge Type +hrm.HrmDeputChargeReport.handOver=Hand Over +hrm.HrmDeputChargeReport.takeOver=Take Over +hrm.HrmDeputChargeReport.workGroupCode=Work Group Code +hrm.HrmDeputChargeReport.siteCode=Site Code +hrm.HrmDeputChargeReport.noonFlag=Fore Noon/After Noon +hrm.HrmDeputChargeReport.foreNoon=Fore Noon +hrm.HrmDeputChargeReport.afterNoon=After Noon +hrm.HrmDeputChargeReport.na=Not Applicable +hrm.HrmDeputChargeReport.remarks=Remarks + +hrm.HrmRlseOrderForSingleEmp.mainHeader=RELEASE ORDER FOR SINGLE EMPLOYEE +hrm.HrmATDReleaseOrderForSingleEmp.subHeader1=Order Information +hrm.HrmATDReleaseOrderForSingleEmp.orderNo=Release Order No. +hrm.HrmATDReleaseOrderForSingleEmp.orderDate=Release Order Date +hrm.HrmATDReleaseOrderForSingleEmp.orderType=Release Order Type +hrm.HrmATDReleaseOrderForSingleEmp.department=Departmental Transfer +hrm.HrmATDReleaseOrderForSingleEmp.site=Site Transfer +hrm.HrmATDReleaseOrderForSingleEmp.rlseStatus=Status +hrm.HrmATDReleaseOrderForSingleEmp.new=New +hrm.HrmATDReleaseOrderForSingleEmp.approved=Approved +hrm.HrmATDReleaseOrderForSingleEmp.pending=Pending +hrm.HrmATDReleaseOrderForSingleEmp.rejected=Rejected +hrm.HrmATDReleaseOrderForSingleEmp.transOrderNo=Transfer Order No. +hrm.HrmATDReleaseOrderForSingleEmp.empName=Employee Name +hrm.HrmATDReleaseOrderForSingleEmp.rlseDate=Release Date +hrm.HrmATDReleaseOrderForSingleEmp.noonFlag=Fore-Noon/After-Noon Flag +hrm.HrmATDReleaseOrderForSingleEmp.siteName=Site Name +hrm.HrmATDReleaseOrderForSingleEmp.wrkGrpName=Workgroup Name +hrm.HrmATDReleaseOrderForSingleEmp.remarks=Remarks +hrm.HrmATDReleaseOrderForSingleEmp.fore=ForeNoon +hrm.HrmATDReleaseOrderForSingleEmp.after=AfterNoon +hrm.HrmATDReleaseOrderForSingleEmp.subHeader2=Order Details + +hrm.HrmAdvSettle.mainHeader=EMPLOYEE ADVANCE SETTLEMENT +hrm.HrmAdvSettle.subHeader1=Employee Information +hrm.HrmAdvSettle.employeeNumber=Employee No. +hrm.HrmAdvSettle.employeeName=Employee Name +hrm.HrmAdvSettle.firstName=First Name +hrm.HrmAdvSettle.middleName=Middle Name +hrm.HrmAdvSettle.lastName=Last Name +hrm.HrmAdvSettle.designation=Designation +hrm.HrmAdvSettle.scaleOfPay=Scale Of Pay +hrm.HrmAdvSettle.fromDate=From Date +hrm.HrmAdvSettle.toDate=To Date +hrm.HrmAdvSettle.advanceCode=Advance Name +hrm.HrmAdvSettle.description=Description +hrm.HrmAdvSettle.dateApplied=Date Applied +hrm.HrmAdvSettle.amountApplied=Advance Amount +hrm.HrmAdvSettle.settlePayroll=Settle Through Payroll +hrm.HrmAdvSettle.settleAmount=Settlement Amount +hrm.HrmAdvSettle.noOfIns=No.of Installments +hrm.HrmAdvSettle.settleStatus=Settlement Status +hrm.HrmAdvSettle.reason=Rejection Remarks +hrm.HrmAdvSettle.new=New +hrm.HrmAdvSettle.pending=Pending +hrm.HrmAdvSettle.approved=Approved +hrm.HrmAdvSettle.rejected=Rejected +hrm.HrmAdvSettle.yes=Yes +hrm.HrmAdvSettle.no=No + + +hrm.HrmFacMst.mainHeader=FACULTY MASTER +hrm.HrmFacMst.subHeaderr=Faculty Master + + +hrm.HrmEmpTrngHistForm.TrainDate=Training Date +hrm.HrmEmpTrngHistForm.presentlag=Present Status +hrm.HrmEmpTrngHistForm.nonpartReason=Reason For Non Participation + + +hrm.HrmSepApplication.mainHeader=SEPARATION APPLICATION +hrm.HrmSepApplication.subHeader1=Application Details +hrm.HrmSepApplication.subHeader2=Separation Details +hrm.HrmSepApplication.applicationNo=Application No +hrm.HrmSepApplication.dateApplied=Application Date +hrm.HrmSepApplication.initiatedBy=Initiated By +hrm.HrmSepApplication.self=Self +hrm.HrmSepApplication.office=Office +hrm.HrmSepApplication.both=Both +hrm.HrmSepApplication.employeeNo=Employee No. +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepApplication.separationCategory=Separation Category +hrm.HrmSepApplication.immediateEffect=Immediate Effect +hrm.HrmSepApplication.requestedSepDate=Requested Separation Date +hrm.HrmSepApplication.actualSepDate=Actual Separation Date +hrm.HrmSepApplication.reason=Reason +hrm.HrmSepApplication.rejectionRemarks=Rejection Remarks +hrm.HrmSepApplication.approvedFlag=Approval Status +hrm.HrmSepApplication.new=New +hrm.HrmSepApplication.pending=Pending +hrm.HrmSepApplication.approved=Approved +hrm.HrmSepApplication.rejected=Rejected +hrm.HrmSepApplication.withdrawalFlag=Withdrawal Flag +hrm.HrmSepApplication.sepCode=Separation Code +hrm.HrmSepApplication.sepName=Description + +hrm.HrmSepClrTmplMst.heading=CLEARANCE TEMPLATE MASTER +hrm.HrmSepClrTmplMst.tmplDesc=Template Description +hrm.HrmSepClrTmplMst.txtClrDesc= Clearance Desciption +hrm.HrmSepClrTmplMst.obsoleteFlag=Obsolete Flag +hrm.HrmSepClrTmplMst.extIntFlag=External/Internal + + + +hrm.HrmSepClrEmp.empNo=Employee No +hrm.HrmSepClrEmp.empName=Employee Name +hrm.HrmSepClrEmp.heading=SEPARATION CLEARANCE FOR EMPLOYEE +hrm.HrmSepClrEmp.tmplDesc=Template Description +hrm.HrmSepClrEmp.txtClrDesc= Clearance Desciption +hrm.HrmSepClrEmp.txtCheckFlag= Check Flag +hrm.HrmSepClrEmp.txtComment= Comment +hrm.HrmSepClrEmp.checkFlag=Check Flag +hrm.HrmSepClrEmp.obsoleteFlag=Obsolete Flag + +HrmSepClrLst.title=SEPARATION CLEARANCE LIST +SepClrLstTabHeader.title=Clearance List Detail +hrm.HrmSepClrLst.description=Description +hrm.HrmSepClrLst.externalInternalFlag=E/I Flag +hrm.HrmSepClrLst.external=External +hrm.HrmSepClrLst.internal=Internal + + +hrm.HrmSepOrder.mainHeader=SEPARATION ORDER +hrm.HrmSepOrder.subHeader1=Application Details +hrm.HrmSepOrder.subHeader2=Order Details +hrm.HrmSepOrder.orderNo=Order No +hrm.HrmSepOrder.orderDate=Order Date +hrm.HrmSepOrder.subHeader2=Order Details +hrm.HrmSepOrder.applnNo=Application No +hrm.HrmSepOrder.employeeName=Employee Name +hrm.HrmSepOrder.separationCategory=Separation Category +hrm.HrmSepOrder.immediateEffect=Immediate Effect +hrm.HrmSepOrder.requestedSepDate=Requested Separation Date +hrm.HrmSepOrder.actualSepDate=Actual Separation Date +hrm.HrmSepOrder.reason=Reason +hrm.HrmSepOrder.rejectionRemarks=Rejection Remarks +hrm.HrmSepOrder.approvedFlag=Status +hrm.HrmSepOrder.new=New +hrm.HrmSepOrder.pending=Pending +hrm.HrmSepOrder.approved=Approved +hrm.HrmSepOrder.rejected=Rejected +hrm.HrmSepOrder.applnDate=Application Date +hrm.HrmSepOrder.noApplication=There is no Separation Application pending. +hrm.HrmSepApplication.actSepDate=Actual Separation Date +hrm.HrmSepApplication.approvedBy=Approved By +hrm.HrmSepApplication.remarks=Approver's Remarks + + + + +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepChargeReport.mainHeader=SEPARATION CHARGE REPORT +hrm.HrmSepChargeReport.subHeader1=Charge Detail +hrm.HrmSepChargeReport.sepOrderNo=Separation Order No. +hrm.HrmSepChargeReport.empName=Employee Name +hrm.HrmSepChargeReport.sepDate=Separation Order Date +hrm.HrmSepChargeReport.chargeCode=Charge Code +hrm.HrmSepChargeReport.releaseDate=Release Date +hrm.HrmSepChargeReport.noonFlag=Fore Noon/After Noon +hrm.HrmSepChargeReport.foreNoon=Fore Noon +hrm.HrmSepChargeReport.afterNoon=After Noon +hrm.HrmSepChargeReport.na=Not Applicable +hrm.HrmSepChargeReport.remarks=Remarks +hrm.HrmSepChargeReport.chargeStatus=Charge Status +hrm.HrmSepChargeReport.new=New +hrm.HrmSepChargeReport.pending=Pending +hrm.HrmSepChargeReport.approved=Approved +hrm.HrmSepChargeReport.rejected=Rejected + +hrm.HrmSepCnclAppln.mainHeader=SEPARATION CANCELLATION APPLICATION +hrm.HrmSepCnclAppln.subHeader1=Application Details +hrm.HrmSepCnclAppln.subHeader2=Cancellation Details +hrm.HrmSepCnclAppln.empNo=Employee No. +hrm.HrmSepCnclAppln.empName=Employee Name +hrm.HrmSepCnclAppln.applnNo=Application No. +hrm.HrmSepCnclAppln.applnDate=Application Date +hrm.HrmSepCnclAppln.cancelStatus=Status +hrm.HrmSepCnclAppln.new=New +hrm.HrmSepCnclAppln.pending=Pending +hrm.HrmSepCnclAppln.approved=Approved +hrm.HrmSepCnclAppln.rejected=Rejected +hrm.HrmSepCnclAppln.initiatedBy=Initiated By +hrm.HrmSepCnclAppln.separationCategory=Separation Category +hrm.HrmSepCnclAppln.withdrawalDate=Withdrawal Date +hrm.HrmSepCnclAppln.cancelStatus=Withdrawal Status +hrm.HrmSepCnclAppln.reason=Reason +hrm.HrmSepCnclAppln.remarks=Rejection Remarks +wenrgise.sepCnclAppln.dateConstraintViolated=Withdrawal Date Should Be Greater Than Application Date. +hrmWgrShift.title=ATTENDANCE WORK GROUP SHIFT DETAIL +hrmWgrShiftSubHeader.title= Work Group Detail +hrmWgrShiftTabHeader.title=Work Group Shift Detail +hrm.HrmAttWorkGroupShift.shiftBeginDate=Shift Begin Date +hrm.HrmAttWorkGroupShift.shiftEndDate=Shift End Date +hrm.HrmAttWorkGroupShift.workGroupDescription=Description +hrm.HrmAttWorkGroupShift.siteDescription=Description +hrm.HrmAttWorkGroupShift.shiftCode=Shift Code +hrm.HrmAttWorkGroupShift.startDate=Period Start Date +hrm.HrmAttWorkGroupShift.endDate=Period End Date + +hrm.HrmAttEmployeeDayOff.sunday=Sunday +hrm.HrmAttEmployeeDayOff.monday=Monday +hrm.HrmAttEmployeeDayOff.tuesday=Tuesday +hrm.HrmAttEmployeeDayOff.wednesday=Wednesday +hrm.HrmAttEmployeeDayOff.thursday=Thursday +hrm.HrmAttEmployeeDayOff.friday=Friday +hrm.HrmAttEmployeeDayOff.saturday=Saturday + +hrm.HrmAttEmployeeDayOff.first=First +hrm.HrmAttEmployeeDayOff.second=Second +hrm.HrmAttEmployeeDayOff.third=Third +hrm.HrmAttEmployeeDayOff.fourth=Fourth + +hrm.HrmAttEmployeeDayOff.halfDay1=HalfDay1 +hrm.HrmAttEmployeeDayOff.halfDay2=HalfDay2 +hrm.HrmAttEmployeeDayOff.restWeek1=RestWeek1 +hrm.HrmAttEmployeeDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttEmployeeDayOff.restWeek2=RestWeek2 +hrm.HrmAttEmployeeDayOff.restWeekDay2=RestWeekDay2 + + +hrm.HrmAdvertisementAttribute.mandatory=Mandatory +hrm.HrmAdvertisementAttribute.desirable=Desirable +hrm.HrmAdvertisementAttribute.yes=Yes +hrm.HrmAdvertisementAttribute.no=No +hrm.HrmAdvertisementAttribute.read=Read +hrm.HrmAdvertisementAttribute.write=Write +hrm.HrmAdvertisementAttribute.communicate=Communicate +hrm.HrmAdvertisementAttribute.speakReadAndWrite=All +hrm.HrmAdvertisementAttribute.locDesc=Description +hrm.HrmAdvertisementAttribute.langDesc=Description +hrm.HrmAdvertisementAttribute.qualdescription=Description +hrm.HrmAdvertisementAttribute.desc=Description +hrm.HrmAdvertisementAttribute.state=State +hrm.HrmAdvertisementAttribute.city=City + + +hrm.HrmAttEmpAttQuery.header=EMPLOYEE ATTENDANCE ENTRY +hrm.HrmAttEmpAttQuery.colon=: +hrm.HrmAttEmpAttQuery.subheader=Query Parameters +hrm.HrmAttEmpAttQuery.employeeNo=Employee No. +hrm.HrmAttEmpAttQuery.employeeName=Employee Name +hrm.HrmAttEmpAttQuery.firstName=First Name +hrm.HrmAttEmpAttQuery.middleName=Middle Name +hrm.HrmAttEmpAttQuery.lastName=Last Name +hrm.HrmAttEmpAttQuery.periodStartDt=Date +hrm.HrmAttEmpAttQuery.periodEndDt=End Date +hrm.HrmAttEmpAttQuery.chkInDate=In-Date +hrm.HrmAttEmpAttQuery.ChkOutDate=Out-Date +hrm.HrmAttEmpAttQuery.shiftCode=Shift Code +hrm.HrmAttEmpAttQuery.checkInTime=In-Time +hrm.HrmAttEmpAttQuery.checkOutTime=Out-Time +hrm.HrmAttEmpAttQuery.attndStatus=Status +hrm.HrmAttEmpAttQuery.Reasons=Reasons/Remarks +hrm.HrmAttEmpAttQuery.detailHeader=Employee Attendance Details +hrm.HrmAttEmpAttQuery.t=TIME +hrm.HrmAttEmpAttQuery.l=LATE +wenrgise.common.field.combinatonNotUnique=Combination of {0} should be unique +hrm.HrmAttEmpAttQueryDtl.txtEmployeeNo=Employee No +hrm.HrmAttEmpAttQueryDtl.txtEmployeeName=Employee Name +hrm.HrmAttEmpAttQueryDtl.inDateFuture=Start Date cannot be future date. +hrm.HrmAttEmpAttQueryDtl.outDateFuture=Out-Date cannot be future +hrm.HrmAttEmpAttQueryDtl.inOutDate=Out-Date cannot be prior to In-Date +hrm.HrmAttEmpAttQuery.locationCode=Code +hrm.HrmAttEmpAttQuery.uniqueHeader=Attendence entries for the specified date already present. +hrm.HrmAttEmpAttQuery.uniqueHeader1=Checking Unique Header +hrm.HrmAttEmpAttQuery.DeptError=Attendance entry access denied... Contact HR. + +hrmEmpShift.title=EMPLOYEE SHIFT DETAIL +hrmEmpShiftSubHeader.title=Employee Shift Detail +hrmEmpShiftTabHeader.title=Emp Shift Detail +hrm.HrmAttEmpShift.employeeNo=Employee No. +hrm.HrmAttEmpShift.employeeName=Employee Name +hrm.HrmAttEmpShift.startDate=Period Start Date +hrm.HrmAttEmpShift.endDate=Period End Date +hrm.HrmAttEmpShift.shiftBeginDate=Shift Begin Date +hrm.HrmAttEmpShift.shiftEndDate=Shift End Date +hrm.HrmAttEmpShift.shiftCode=Shift Code + + +hrm.HrmAttEmpAttIn.header=EMPLOYEE ATTENDANCE ENTRY (IN) +hrm.HrmAttEmpAttIn.subheader=Employee Attendance Information +hrm.HrmAttEmpAttIn.employeeNo=Employee No. +hrm.HrmAttEmpAttIn.employeeName=Employee Name +hrm.HrmAttEmpAttIn.firstName=First Name +hrm.HrmAttEmpAttIn.middleName=Middle Name +hrm.HrmAttEmpAttIn.lastName=Last Name +hrm.HrmAttEmpAttIn.date=Date +hrm.HrmAttEmpAttIn.shiftCode=Shift Code +hrm.HrmAttEmpAttIn.timeIn=Time In +hrm.HrmAttEmpAttIn.attndStatus=Attendance Status +hrm.HrmAttEmpAttIn.reasons=Reasons +hrm.HrmAttEmpAttIn.reasons.t=Transport Problem +hrm.HrmAttEmpAttIn.reasons.n=Network/Server Failure +hrm.HrmAttEmpAttIn.reasons.l=Leave Day +hrm.HrmAttEmpAttIn.reasons.o=Out-Stationed +hrm.HrmAttEmpAttIn.reasons.p=Present +hrm.HrmAttEmpAttIn.reasons.a=Absent +hrm.HrmAttEmpAttIn.reasons.f=First Half CL +hrm.HrmAttEmpAttIn.reasons.s=Second Half CL +wenrgise.hrms.header1.multipleAttendance=You Cannot Give Attendance Twice in a Day +wenrgise.common.detail.invalidNumber={0} is not a valid number in Row {1} of Detail. +hrm.recadvattrwork.numberZero={0} can't be less than 0 in row {1} of detail. +hrm.recadvattrwork.minmaxworkexp=Min.Work Exp.can't be Greater than Max.Work Exp.in Row {0} of Detail. +hrm.advt.detail.childRecordFound=Can not delete as Record Exists in Application Screen. +hrm.advt.hdr.totalScore=Total Score should be greater than the summation of Written,GD and Interview score +hrm.advt.detail.errorinbasic=From Basic cannot be greater than To Basic in row{0} +hrm.advt.detail.exclusive=Designation and Reservation Category +hrm.advt.detail.errorinage=Maximum Age cannot be greater than Minimum Age in row{0} +hrm.advt.detail.nonnumeric={0} is not valid +hrm.advt.minage=Minimum age in row {0} must be greater than 20 +hrm.advt.maxage=As Max Age On Date is given Maximum Age has to be entered in row {0} +hrm.advt.maxageDate=As Max Age is given Maximum Age On Date has to be entered in row {0} +hrm.advt.header.uniqueConstraintViolated=Reference No already exists. +hrm.advt.header.date=Reference Date can not be greater than Last Date for Application Receipt +wenrgise.hrms.att.Enddate.value=Enter the Value of Shift End Date in the Previous row. +wenrgise.hrms.att.BeginDate.value=Shift Begin Date should be greater than Previous row Shift End Date. +wenrgise.hrms.attEmp.corresdate.value=Shift End Date should be greater than Shift Begin Date. + + + +hrm.HrmAttEmpAttOut.header=EMPLOYEE ATTENDANCE ENTRY (OUT) +hrm.HrmAttEmpAttOut.subheader=Employee Attendance Information +hrm.HrmAttEmpAttOut.employeeNo=Employee No. +hrm.HrmAttEmpAttOut.employeeName=Employee Name +hrm.HrmAttEmpAttOut.firstName=First Name +hrm.HrmAttEmpAttOut.middleName=Middle Name +hrm.HrmAttEmpAttOut.lastName=Last Name +hrm.HrmAttEmpAttOut.inDate=In Date +hrm.HrmAttEmpAttOut.outDate=Out Date +hrm.HrmAttEmpAttOut.shiftCode=Shift Code +hrm.HrmAttEmpAttOut.timeIn=Time In +hrm.HrmAttEmpAttOut.timeOut=Time Out +hrm.HrmAttEmpAttOut.attndStatus=Attendance Status +hrm.HrmAttEmpAttOut.reasons=Reasons +hrm.HrmAttEmpAttOut.reasons.t=Transport Problem +hrm.HrmAttEmpAttOut.reasons.n=Network/Server Failure +hrm.HrmAttEmpAttOut.reasons.l=Leave Day + + +hrm.HrmAdvertisementAttribute.refNo=Reference No. +hrm.HrmAdvertisementAttribute.position=Grade & Designation +hrm.HrmAdvertisementAttribute.desgn=Desgn. + + +wenrgise.hrms.attWgs.rst.value=This field is rferenced.It can't be deleted. + +hrm.HrmAttWorkGroupDayOff.sunday=Sunday +hrm.HrmAttWorkGroupDayOff.monday=Monday +hrm.HrmAttWorkGroupDayOff.tuesday=Tuesday +hrm.HrmAttWorkGroupDayOff.wednesday=Wednesday +hrm.HrmAttWorkGroupDayOff.thursday=Thursday +hrm.HrmAttWorkGroupDayOff.friday=Friday +hrm.HrmAttWorkGroupDayOff.saturday=Saturday + +hrm.HrmAttWorkGroupDayOff.first=First +hrm.HrmAttWorkGroupDayOff.second=Second +hrm.HrmAttWorkGroupDayOff.third=Third +hrm.HrmAttWorkGroupDayOff.fourth=Fourth + +hrm.HrmAttWorkGroupDayOff.halfDay1=HalfDay1 +hrm.HrmAttWorkGroupDayOff.halfDay2=HalfDay2 +hrm.HrmAttWorkGroupDayOff.restWeek1=RestWeek1 +hrm.HrmAttWorkGroupDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttWorkGroupDayOff.restWeek2=RestWeek2 +hrm.HrmAttWorkGroupDayOff.restWeekDay2=RestWeekDay2 + +hrm.HrmAttWorkGroupDayOff.startWeekDt=StartWeekDate +hrm.HrmAttWorkGroupDayOff.endWeekDt=EndWeekDate +hrm.HrmAttWorkGroupDayOff.fstRstDay=FirstRestDay +hrm.HrmAttWorkGroupDayOff.secRstDay=SecondRestDay + +hrm.HrmAttWorkGroupDayOff.halfDay1=HalfDay1 +hrm.HrmAttWorkGroupDayOff.halfDay2=HalfDay2 +hrm.HrmAttWorkGroupDayOff.restWeek1=RestWeek1 +hrm.HrmAttWorkGroupDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttWorkGroupDayOff.restWeek2=RestWeek2 +hrm.HrmAttWorkGroupDayOff.restWeekDay2=RestWeekDay2 + +hrm.HrmAttWrkGrpDayOff.wrkGrpCode=WorkGroup Code +hrm.HrmAttWrkGrpDayOff.siteCode=Site Code +hrm.HrmAttWrkGrpDayOff.wrkGrpDesc=Workgroup Name +hrm.HrmAttWrkGrpDayOff.siteDesc=Site Name +hrm.HrmAttWrkGrpDayOff.heading=WORKGROUP DAY OFF + +wenrgise.hrms.att.period.value=Close the previous period first. +wenrgise.hrms.att.date.value=StartWeekDate must be greater than the previous EndWeekdate. +wenrgise.hrms.att.corresdate.value=EndWeekDate must be greater than StartWeekDate. +wenrgise.hrms.att.holDayType.value=Same day cannot occur more than once as holiday in the same period. +wenrgise.hrms.att.rst.value=Record in Shift Roster exists.Deletion is not possible. + +hrm.HrmAttEmployeeDayOff.sunday=Sunday +hrm.HrmAttEmployeeDayOff.monday=Monday +hrm.HrmAttEmployeeDayOff.tuesday=Tuesday +hrm.HrmAttEmployeeDayOff.wednesday=Wednesday +hrm.HrmAttEmployeeDayOff.thursday=Thursday +hrm.HrmAttEmployeeDayOff.friday=Friday +hrm.HrmAttEmployeeDayOff.saturday=Saturday + +hrm.HrmAttEmployeeDayOff.first=First +hrm.HrmAttEmployeeDayOff.second=Second +hrm.HrmAttEmployeeDayOff.third=Third +hrm.HrmAttEmployeeDayOff.fourth=Fourth + +hrm.HrmAttEmployeeDayOff.halfDay1=HalfDay1 +hrm.HrmAttEmployeeDayOff.halfDay2=HalfDay2 +hrm.HrmAttEmployeeDayOff.restWeek1=RestWeek1 +hrm.HrmAttEmployeeDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttEmployeeDayOff.restWeek2=RestWeek2 +hrm.HrmAttEmployeeDayOff.restWeekDay2=RestWeekDay2 + +Hrm.AttShift.min=(min) +hrm.HrmAttShiftMaster.txtDayOverlapFlag=Day Overlap Flag +wenrgise.Hrm.EmpShiftMaster.StartHour=For Start Time,Hour Can not be more than 24. +wenrgise.Hrm.EmpShiftMaster.EndHour=For End Time,Hour Can not be more than 24. +wenrgise.Hrm.EmpShiftMaster.StartMin=For Start Time,Minutes can not be more than 60. +wenrgise.Hrm.EmpShiftMaster.EndMin=For Start Time,Minutes can not be more than 60. +hrm.NO=NO +hrm.YES=YES +hrm.Please.select=----------Please Select---------- +hrm.Common.Hdr.RelationCheck={0} should be greater than {1} +hrm.HrmAttShiftMaster.RelationCheck=End Time Should be Greater than Start time +hrm.HrmAttShiftMaster.RelationCheck1=End Time Should be less than start time +Hrm.AttShift.HH=(HH:MM) +Hrm.AttShiftMast.Code=Entered Shift Code is already existing so Please Change it + +hrm.HrmAttEmployeeShiftRoster.SiteId=Site Id +hrm.HrmAttShiftRosterGen.mainHeader=GENERATE SHIFT ROSTER +hrm.HrmAttShiftRosterGen.site=Site Code +hrm.HrmAttShiftRosterGen.fromDate=From Date +hrm.HrmAttShiftRosterGen.toDate=To Date +hrm.HrmAttShiftRosterGen.wrkGrpCode=Work Group Code +hrm.HrmAttShiftRosterGen.wrkGrpName=Work Group Name +hrm.HrmAttShiftRosterGen.error.invalidDate={0} date should be lesser than {1} + +hrm.HrmAttAbsentListGen.siteName=Site Id +hrm.HrmAttAbsentListGen.site=Site Code +hrm.HrmAttAbsentListGen.fromDate=From Date +hrm.HrmAttAbsentListGen.toDate=To Date +hrm.HrmAttAbsentListGen.mainHeader=ABSENT LIST GENERATOR +hrm.HrmAttAbsentListGen.wrkGrpCode=WorkGroup Code +hrm.HrmAttAbsentListGen.error.invalidDate={0} date should be lesser than {1} + + +hrm.HrmAdvertisementAttribute.desgnaa=Designation +hrm.HrmAdvertisementAttribute.category=Category + + +hrm.advt.detail.attrChildRecordFound=Can't Delete as Record Exists in Attribute Screen For This Detail Record. + +wenrgise.Reqdate.dateConstraintViolated=Requested Transfer Date must be greater than Application Date. + +wenrgise.hrms.empAprsl.recCount=An appraisal record of the Employee for the given period already exists. +wenrgise.hrms.empAprsl.clsDtId=There are NO records in the Employee Classification table for this employee indicating his/her present designation.First Enter a Designation record and then try to appraise the employee. +wenrgise.hrms.empAprsl.tempHdrId=There are NO records in the Designation Wise Template table for this employee.First Enter a Designation Wise Template record and then try to appraise the employee. + +hrm.HrmAppraisalRules.January=January +hrm.HrmAppraisalRules.February=February +hrm.HrmAppraisalRules.March=March +hrm.HrmAppraisalRules.April=April +hrm.HrmAppraisalRules.May=May +hrm.HrmAppraisalRules.June=June +hrm.HrmAppraisalRules.July=July +hrm.HrmAppraisalRules.August=August +hrm.HrmAppraisalRules.September=September +hrm.HrmAppraisalRules.October=October +hrm.HrmAppraisalRules.November=November +hrm.HrmAppraisalRules.December=December + +wenrgise.hrms.aprsl.wt.value=Total weightage should not exceed 100% +wenrgise.hrms.aprsl.wt.enter=Please Enter Weightage +wenrgise.hrms.aprsl.wt.blank=Please Don't Enter Weightage +hrm.HrmAppraisalTemplate.reviewer=Reviewer +hrms.spcaprsl.wt.greater=Total weightage should not be greater than 100% for Section Code {0} +hrms.spcaprsl.wt.less=Total weightage should not be less than 100% for Section Code {0} +hrms.spcaprsl.wt.null=Some weightage values are blank for Section Code '{0}'. +hrms.spcaprsl.kpa.special=Row {0} cannot be deleted, because here mandatory flag is checked. + +hrm.ApprslSpcTemp.heading=APPRAISAL SPECIFIC TEMPLATE +hrm.ApprslSpcTemp.splTemplateName=Specific Template Name +hrm.ApprslSpcTemp.templateName=Template Name +hrm.ApprslSpcTemp.classHdr=Class Header +hrm.ApprslSpcTemp.classHdrDesc=Class Header Description +hrm.ApprslSpcTemp.classDtl=Class Detail +hrm.ApprslSpcTemp.classDtlDesc=Class Detail Description +hrm.ApprslSpcTemp.siteCode=Site +hrm.ApprslSpcTemp.deptCode=Department +hrm.ApprslSpcTemp.empNo=Employee No +hrm.ApprslSpcTemp.stOrderNo=Start Order No +hrm.ApprslSpcTemp.fromDate=From Date +hrm.ApprslSpcTemp.toDate=To Date +hrm.ApprslSpcTemp.kpa=KPA +hrm.ApprslSpcTemp.goals=Goals +hrm.ApprslSpcTemp.txtKpaGrCode=KPA Group Code +hrm.ApprslSpcTemp.txtKpaGrDesc=KPA Group Description +hrm.ApprslSpcTemp.txtKpaCode=KPA Code +hrm.ApprslSpcTemp.txtKpaDesc=KPA Description +hrm.ApprslSpcTemp.txtFlag=Mandatory +hrm.ApprslSpcTemp.txtMesr=Measure +hrm.ApprslSpcTemp.Section=Section +hrm.ApprslSpcTemp.goalsDesc=Goal Description +hrm.ApprslSpcTemp.txtEmpNo=Employee No +hrm.ApprslSpcTemp.txtEmpName=Employee Name +hrm.ApprslSpcTemp.parentSection=Parent Section +hrm.ApprslSpcTemp.empElig=Employee Eligibility +hrm.ApprslSpcTemp.txtWtg=Weightage(In Percentage) + +hrm.EmpAprsl.heading=EMPLOYEE APPRAISAL +hrm.EmpAprsl.empCode=Employee No +hrm.EmpAprsl.empName=Employee Name +hrm.EmpAprsl.aprslCode=Appraisal No +hrm.EmpAprsl.aprslName=Appraisal Name +hrm.EmpAprsl.aprslLevel=Appraisal Level +hrm.EmpAprsl.aprslPeriod=Appraisal Period +hrm.EmpAprsl.stOrderNo=Start Order No +hrm.EmpAprsl.finalRating=Final Rating +hrm.EmpAprsl.aprslYear=Appraisal Year +hrm.EmpAprsl.fromDate=From Date +hrm.EmpAprsl.toDate=To Date +hrm.EmpAprsl.kpa=KPA +hrm.EmpAprsl.goals=Goals +hrm.EmpAprsl.EmpDtls=Employee Details +hrm.EmpAprsl.kpaCode=KPA Group Desc +hrm.EmpAprsl.kpaDesc=KPA Desc +hrm.EmpAprsl.levelAprl0=Appraisal Level 0 +hrm.EmpAprsl.levelRating0=Rating Level 0 +hrm.EmpAprsl.levelAprl1=Appraisal Level 1 +hrm.EmpAprsl.levelRating1=Rating Level 1 +hrm.EmpAprsl.levelAprl2=Appraisal Level 2 +hrm.EmpAprsl.levelRating2=Rating Level 2 +hrm.EmpAprsl.levelAprl3=Appraisal Level 3 +hrm.EmpAprsl.levelRating3=Rating Level 3 +hrm.EmpAprsl.levelAprl4=Appraisal Level 4 +hrm.EmpAprsl.levelRating4=Rating Level 4 +hrm.EmpAprsl.goalDesc=Goal Description +hrm.EmpAprsl.parentSec=Parent Section +hrm.EmpAprsl.section=Section +hrm.EmpAprsl.Outstanding=Outstanding +hrm.EmpAprsl.VeryGood=Very Good +hrm.EmpAprsl.Good=Good +hrm.EmpAprsl.Average=Average + + +hrm.HrmPrmViewAss.mainHeader=VIEW ASSESSMENT SHEET +hrm.HrmPrmViewAss.subHeader1=Assessment Sheet Header +hrm.HrmPrmViewAss.subHeader2=Marks Obtained And Points Rewarded +hrm.HrmPrmViewAss.siteCode=Site Code +hrm.HrmPrmViewAss.siteDesc=Description +hrm.HrmPrmViewAss.noticeNo=Notice No. +hrm.HrmPrmViewAss.posCode=Position Code +hrm.HrmPrmViewAss.prmNo=Promotion Notice No. +hrm.HrmPrmViewAss.toPosition=Promotion For The Position +hrm.HrmPrmViewAss.empNo=Employee Number +hrm.HrmPrmViewAss.empName=Employee Name +hrm.HrmPrmViewAss.fromPosCode=From Position Code +hrm.HrmPrmViewAss.posDesc=Position Description +hrm.HrmPrmViewAss.scale=Scale +hrm.HrmPrmViewAss.srvYrs=Service Years +hrm.HrmPrmViewAss.currSrvYrs=Current Service Years +hrm.HrmPrmViewAss.srvYrsPoints=Service Years Points +hrm.HrmPrmViewAss.avgAparPts=Average APAR Points +hrm.HrmPrmViewAss.aparPts=APAR Points +hrm.HrmPrmViewAss.writtenTestMarks=Written Test Marks +hrm.HrmPrmViewAss.writtenTestPts=Written Test Points +hrm.HrmPrmViewAss.GDMarks=GD Marks +hrm.HrmPrmViewAss.GDPts=GD Points +hrm.HrmPrmViewAss.interviewMarks=Interview Marks +hrm.HrmPrmViewAss.interviewPts=Interview Points +hrm.HrmPrmViewAss.totalPtsAwarded=Total Points Awarded +hrm.HrmPrmViewAss.eligProm=Eligible For Promotion +hrm.HrmPrmViewAss.noticeDesc=Notice Description + + +hrm.AprslStartOrder.heading=APPRAISAL START ORDER +hrm.AprslStartOrder.stOrderNo=Start Order No +hrm.AprslStartOrder.periodStDate=Period Start Date +hrm.AprslStartOrder.periodEndDate=Period End Date +hrm.AprslStartOrder.aprslStDate=Appraisal Start Date +hrm.AprslStartOrder.aprslEndDate=Appraisal End Date + + + +hrm.HrmAprslForm.stOrderNo=Start Order No. + + +hrm.EmpAprsl.RatingFrom=Rating From +hrm.EmpAprsl.RatingTo=Rating To +hrm.EmpAprsl.RatingDesc=Rating Desc +hrm.EmpAprsl.jrLvlRating=Rating + + +hrm.HrmPrmMtnPrmDtl.heading=PROMOTION DETAILS +hrm.HrmPrmMtnPrmDtl.header=General Information +hrm.HrmPrmMtnPrmDtl.promOrdNo=Promotion Order No. +hrm.HrmPrmMtnPrmDtl.ordDate=Order Date +hrm.HrmPrmMtnPrmDtl.prmEffectFrm=Effect From +hrm.HrmPrmMtnPrmDtl.empNo=Employee No. +hrm.HrmPrmMtnPrmDtl.name=Employee Name +hrm.HrmPrmMtnPrmDtl.fromPosition=From Position +hrm.HrmPrmMtnPrmDtl.toPosition=To Position +hrm.HrmPrmMtnPrmDtl.frmDesig=From Designation +hrm.HrmPrmMtnPrmDtl.toDesig=To Designation +hrm.HrmPrmMtnPrmDtl.frmScale=From Scale +hrm.HrmPrmMtnPrmDtl.toScale=To Scale +hrm.HrmPrmMtnPrmDtl.newBasic=New Basic +hrm.HrmPrmMtnPrmDtl.newWrkGrp=New Workgroup + + +hrm.HrmPrmGenAss.mainHeader=GENERATE ASSESSMENT SHEET +hrm.HrmPrmGenAss.siteCode=Site Code +hrm.HrmPrmGenAss.prmNo=Promotion Notice No. +hrm.HrmPrmGenAss.postFrom=Post Frowenm +hrm.HrmPrmGenAss.postTo=Post To +hrm.HrmPrmGenAss.generated=Employee List Generated Successfully. +hrm.HrmPrmGenAss.description=Description + + +WFL.title=Work Flow +wfl.pleaseSelect=------------Please Select----------- +WFL.WFLDocAttrDtl.heading=Document Attribute Detail +WFL.WFLDocAttrDtl.header=Document Attribute Information +WFL.WFLDocAttrDtl.documentCode=Document Code +WFL.WFLDocAttrDtl.documentDesc=Document Description +WFL.WFLDocAttrDtl.maxAppLevel=Maximum Approval Level +WFL.WFLDocAttrDtl.attrDetails=Document Attribute Details +WFL.WFLDocAttrDtl.attbName=Attribute Name +WFL.WFLDocAttrDtl.type=Attribute Type +WFL.WFLDocAttrDtl.desc=Attribute Description +wfl.wflGenCond.heading=WorkFlow Condititions +wfl.WorkFlowConditions.docCode=Document Code +wfl.WorkFlowConditions.docDesc=Document Description +wfl.WorkFlowConditions.docAttr=Document Attribute +wfl.WorkFlowConditions.operator=Operator +wfl.WorkFlowConditions.values=Values +wfl.WorkFlowConditions.formula=Formula +wfl.title=Work Flow Service +wfl.WorkFlowConditions.header=WorkFlow Conditions +wfl.wflConditions.heading=Work Flow Conditions +wfl.WorkFlowConditions.conditions=Conditions Detail +wfl.WflActivityMst.header=Work Flow Activity Master +wfl.WflActivityMst.detailHeading=Activity Master Detail +wfl.WflActivityMst.attrCode=Attribute Code +wfl.WflActivityMst.attrDesc=Attribute Description +wfl.WorkFlowConditions.docDtlDesc=Document Detail Description +wfl.WorkFlowConditions.priority=Priority +wfl.WorkFlowConditions.condExp=Condition Expression +wenrgise.WorkFlowConditions.alterCond=Alter Conditions +wenrgise.WorkFlowConditions.ok=Ok +WFL.WFLDtlDocType.heading=Detail Document Type +WFL.WFLDtlDocType.header=Header Information +WFL.WFLDtlDocType.docCode=Document Code +WFL.WFLDtlDocType.docDetails=Detail Information +WFL.WFLDtlDocType.code=Code +WFL.WFLDtlDocType.desc=Description +WFL.WFLDtlDocType.actFlag=Activity Flag +WFL.pleaseSelect=----------Please Select----------- +WFL.WFLDtlDocType.actFlag.p=Previous Level +WFL.WFLDtlDocType.actFlag.n=Next Level +WFL.WFLDtlDocType.docActCode=Document Activity Code +WFL.WFLDtlDocType.docAttr=Attributes Value +WFL.WFLDtlDocType.dtlDocCode=Detail Document Code +WFL.WFLDtlDocType.condition=Condition +WFL.WFLDtlDocType.exp=Expression +WFL.WFLDtlDocType.priority=Priority +WFL.WFLDtlDocType.dtlDocDesc=Detail Document Description +WFL.WFLDtlDocType.conditionDesc=Condition Description + +WFL.WFLDtlDocActMap.heading=Detail Document Activity Map +WFL.WFLDtlDocActMap.header=Header Information +WFL.WFLDtlDocActMap.dtlDocActCode=Map Code +WFL.WFLDocAttrDtl.dtlDocActDesc=Map Description +WFL.WFLDtlDocActMap.dtlDocCode=Code +WFL.WFLDtlDocActMap.docDetails=Detail Information +WFL.WFLDtlDocActMap.activityCode=Activity Code +WFL.WFLDtlDocActMap.activityDesc=Activity Description +WFL.WFLDtlDocActMap.activityFlag=Activity Flag +WFL.WFLDtlDocActMap.actFlag.p=Previous Level +WFL.WFLDtlDocActMap.actFlag.n=Next Level +WFL.WFLDtlDocActMap.dtlDocDesc=Description +WFL.WFLDocAttrDtl.string=String +WFL.WFLDocAttrDtl.numeric=Numeric +WFL.WFLDocAttrDtl.lovKey=LovKey + +wenrgise.hrms.aprsl.kpa.rating.value=Please enter all KPA rating values. +wenrgise.hrms.aprsl.goals.rating.value=Please enter all Goal rating values. +wenrgise.hrms.aprsl.rating.value=Please enter all rating values. +wenrgise.hrms.aprsl.wt.exact.value=Total Weightage should be 100% +wenrgise.hrms.aprsl.kpa.wt.exact.value=Total KPA Weightage should be 100% +wenrgise.hrms.aprsl.sec.wt.exact.value=Total Sec Weightage should be 100% +wenrgise.hrms.aprsl.srlno.value=Serial Number should be continuous. +hrm.Temp.Unique.Data=This Template Name already exists. +hrm.HrmAppraisalTemplateKpa.statusOfHeader=Header Status +hrm.HrmAppraisalTemplateGoals.statusOfHeader=Header Status + + +hrm.EmpAprsl.TrngReq=Training Requirement +hrm.EmpAprsl.dateSub=Date Submitted +hrm.EmpAprsl.crsName=Course Name +hrm.EmpAprsl.trnCal=Training Calendar +hrm.EmpAprsl.instName=Institution Name +hrm.EmpAprsl.stDate=Start Date +hrm.EmpAprsl.endDate=End Date +hrm.EmpAprsl.nature=Nature +hrm.EmpAprsl.purpose=Purpose +hrm.EmpAprsl.recommend=Recommender +hrm.EmpAprsl.appStatus=Approval Status +hrm.EmpAprsl.remarks=Remarks +hrm.EmpAprsl.urgent=urgent +hrm.EmpAprsl.emergency=Emergency +hrm.EmpAprsl.normal=Normal +hrm.EmpAprsl.pending=Pending +hrm.EmpAprsl.approved=Approved +hrm.EmpAprsl.rejected=Rejected +hrm.EmpAprsl.new=New + + +wenrgise.dateValidation.fromLength=Effective From Date Should At Least be Six[6] Characters Long. +wenrgise.dateValidation.toLength=Effective To Date Should At Least be Six[6] Characters Long. +wenrgise.dateValidation.year=Improper Value of Year. +wenrgise.dateValidation.month=Improper Value Of Month. +wenrgise.dateValidation.year=Improper Value Of Year. +hrms.dateValidation.month=Improper Value Of Month in field {0} of row {1} of detail. +hrms.dateValidation.year=Improper Value Of Year in field {0} row {1} of detail. + + +wenrgise.empPers.detail.dateConstraintViolated=Improper Value Of Pass Year. +wenrgise.hrms.aprsl.reviewer.rating.value=Reviewer should save final rating. +hrm.EmpAprsl.approvalflag=Approval Flag + + + +hrm.HrmEmpPersonalDetails.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetails.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetails.personalDetails=Personal Details +hrm.HrmEmpPersonalDetails.address=Address Details +hrm.HrmEmpPersonalDetails.awardDtls=Award Details +hrm.HrmEmpPersonalDetails.insDtls=Insurance Details +hrm.HrmEmpPersonalDetails.health=Health Problems +hrm.HrmEmpPersonalDetails.languageDtls=Language Details +hrm.HrmEmpPersonalDetails.refDtls=References +hrm.HrmEmpPersonalDetails.joiningInfo=Joining Details +hrm.HrmEmpPersonalDetails.employeeHistory=Employee History +hrm.HrmEmpPersonalDetails.priorExperience=Prior Experience +hrm.HrmEmpPersonalDetails.educationDetails=Education Details +hrm.HrmEmpPersonalDetails.pFDetails=PF Details +hrm.HrmEmpPersonalDetails.trainingDetails=Training Details +hrm.HrmEmpPersonalDetails.assetDtls=Asset Details +hrm.HrmEmpPersonalDetails.discAction=Disciplinary Action +hrm.HrmEmpPersonalDetails.rewards=Rewards +hrm.HrmEmpPersonalDetails.employeeNo=Employee No. +hrm.HrmEmpPersonalDetails.checkDigit=Check Digit +hrm.HrmEmpPersonalDetails.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetails.photograph=Select Photograph +hrm.HrmEmpPersonalDetails.employeeName=Employee Name +hrm.HrmEmpPersonalDetails.firstName=First Name +hrm.HrmEmpPersonalDetails.middleName=Middle Name +hrm.HrmEmpPersonalDetails.lastName=Last Name +hrm.HrmEmpPersonalDetails.guardianName=Father/Husband's Name +hrm.HrmEmpPersonalDetails.motherTongue=Mother Tongue +hrm.HrmEmpPersonalDetails.description=Description +hrm.HrmEmpPersonalDetails.hierarchyLevel=Hierarchy Level +hrm.HrmEmpPersonalDetails.dateOfBirth=Date Of Birth +hrm.HrmEmpPersonalDetails.nationality=Nationality +hrm.HrmEmpPersonalDetails.bloodGroup=Blood Group +hrm.HrmEmpPersonalDetails.height=Height +hrm.HrmEmpPersonalDetails.cms=Cms +hrm.HrmEmpPersonalDetails.sex=Sex +hrm.HrmEmpPersonalDetails.maritalStatus=Marital Status +hrm.HrmEmpPersonalDetails.dependants=No.of Dependants +hrm.HrmEmpPersonalDetails.department=Department +hrm.HrmEmpPersonalDetails.designation=Designation +hrm.HrmEmpPersonalDetails.rsvCtg=Social Status +hrm.HrmEmpPersonalDetails.religion=Religion +hrm.HrmEmpPersonalDetails.grade=Grade +hrm.HrmEmpPersonalDetails.code=Code +hrm.HrmEmpPersonalDetails.desc=Description +hrm.HrmEmpPersonalDetails.level=Level +hrm.HrmEmpPersonalDetails.handicappedFlag=Handicapped Flag +hrm.HrmEmpPersonalDetails.panNumber=Pan Number +hrm.HrmEmpPersonalDetails.girNumber=Gratuity Number +hrm.HrmEmpPersonalDetails.pfNumber=PF No. +hrm.HrmEmpPersonalDetails.reportingEmployee=Reporting Employee +hrm.HrmEmpPersonalDetails.lastPromotionDate=Last Promotion Date +hrm.HrmEmpPersonalDetails.A+=A+ +hrm.HrmEmpPersonalDetails.A-=A- +hrm.HrmEmpPersonalDetails.B+=B+ +hrm.HrmEmpPersonalDetails.B-=B- +hrm.HrmEmpPersonalDetails.AB+=AB+ +hrm.HrmEmpPersonalDetails.AB-=AB- +hrm.HrmEmpPersonalDetails.O+=O+ +hrm.HrmEmpPersonalDetails.O-=O- +hrm.HrmEmpPersonalDetails.male=Male +hrm.HrmEmpPersonalDetails.female=Female +hrm.HrmEmpPersonalDetails.none=None +hrm.HrmEmpPersonalDetails.self=Self +hrm.HrmEmpPersonalDetails.dependant=Dependant +hrm.HrmEmpPersonalDetails.both=Both +hrm.HrmEmpPersonalDetails.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetails.spouseName=Spouse Name +hrm.HrmEmpPersonalDetails.validUpto=Licence Valid Upto +hrm.HrmEmpPersonalDetails.passportExpDate=Expiry Date +hrm.HrmEmpPersonalDetails.placeOfIssue=Place Of Issue +hrm.HrmEmpPersonalDetails.drivingLicenseNo=Driving Licence No +hrm.HrmEmpPersonalDetails.passportIssueDate=Passport Issue Date +hrm.HrmEmpPersonalDetails.passportNo=Passport No +hrm.HrmEmpPersonalDetails.reportingHead=Reporting Head +hrm.HrmEmpPersonalDetails.spouseOccupation=Spouse's Occupation +hrm.HrmEmpPersonalDetails.relatedToEmployee=Related To Employee +hrm.HrmEmpPersonalDetails.relatedEmployee=Employee Name +hrm.HrmEmpPersonalDetails.idMark=Identification Marks +hrm.HrmEmpPersonalDetails.placeOfBirth=Place Of Birth +hrm.HrmEmpPersonalDetails.locJoiningDate=Current Location Joining Date +hrm.HrmEmpPersonalDetails.location=Location +hrm.hrmEmpPers.error.basic=Basic is not within the Pay Scale +hrm.HrmEmpPersonalDetails.departmentCode=Department Code +hrm.HrmEmpPersonalDetails.departmentDescription=Department Description +hrm.HrmEmpPersonalDetails.mobile=Mobile +hrm.HrmEmpPersonalDetails.personalEmail=Email +hrm.HrmEmpPersonalDetails.checkExp=From Year Month cannot be greater than To Year Month. +hrm.HrmEmpPersonalDetails.checkExpTo=To Date cannot be future date. +hrm.HrmEmpPersonalDetails.flat=Flat Given +hrm.HrmEmpPersonalDetails.anniversaryDate=Date of Anniversary +hrm.HrmEmpPersonalDetails.motherName=Mother's Name +hrm.HrmEmpPersonalDetails.SCSMemershipNo=Credit Society Membership No. +hrm.HrmEmpPersonalDetails.clubMembership=Club Membership +hrm.HrmEmpPersonalDetails.gunLicenseNo=Staff Security Deposit +hrm.HrmEmpPersonalDetails.gunLicenseRenDate=Security Deposit Date +hrm.HrmEmpPersonalDetails.spouseOrganization=Spouse's Organization +hrm.HrmEmpPersonalDetails.spOrgType=Spouse's Organization Type +hrm.HrmEmpPersonalDetails.spTransferable=Spouse Liable for transfer +hrm.HrmEmpPersonalDetails.stateGovt=State Govt. +hrm.HrmEmpPersonalDetails.centralGovt=Central Govt. +hrm.HrmEmpPersonalDetails.publicSector=Public Sector +hrm.HrmEmpPersonalDetails.privateSector=Private Sector +hrm.HrmEmpPersonalDetails.localBody=Local Body +hrm.HrmEmpPersonalDetails.own=Own +hrm.HrmEmpPersonalDetails.unionInfo=Union Information + +hrm.HrmRecApplnMtn.checkExp=From Year Month cannot be greater than To Year Month in row {1} of detail. +hrm.HrmRecApplnMtn.checkExpTo=To Date cannot be future date in field {0} of row {1} of detail. + +hrm.HrmEmpPersonalDetails.error.RptgEmp=Reporting Employee's Level should be less than the Employee +hrm.HrmEmpPersonalDetails.error.draftSave=Draft Save First. +hrm.HrmEmpPersonalDetails.error.deputation=Employee status should be Deputed Out for the separation Deputed Out +hrm.HrmEmpPersonalDetails.error.incomplete={0} Mandatory field missing in +hrm.HrmEmpPersonalDetails.error.address=Address Details of the Employee is incomplete +hrm.retirementDate.dateConstraintViolated=Retirement Date should be greater than Joining Date +hrm.dateOfBirth.dateConstraintViolated=Date Of Birth Should be a Past Date. +hrm.confDate.dateConstraintViolated=Confirmation Date should be greater than Joining Date +hrm.locDate.dateConstraintViolated=Location Date should be greater than Joining Date + + +hrm.HrmEmpPersonalDetailsAddress.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsAddress.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsAddress.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsAddress.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsAddress.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetailsAddress.photograph=Select Photograph +hrm.HrmEmpPersonalDetailsAddress.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsAddress.firstName=First Name +hrm.HrmEmpPersonalDetailsAddress.middleName=Middle Name +hrm.HrmEmpPersonalDetailsAddress.lastName=Last Name +hrm.HrmEmpPersonalDetailsAddress.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsAddress.name=Employee Name + +hrm.HrmEmpPersonalDetailsAddress.address=Address +hrm.HrmEmpPersonalDetailsAddress.city=City +hrm.HrmEmpPersonalDetailsAddress.state=State +hrm.HrmEmpPersonalDetailsAddress.district=District +hrm.HrmEmpPersonalDetailsAddress.tehsil=Tehsil +hrm.HrmEmpPersonalDetailsAddress.code=Code +hrm.HrmEmpPersonalDetailsAddress.desc=Description +hrm.HrmEmpPersonalDetailsAddress.country=Country +hrm.HrmEmpPersonalDetailsAddress.pinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.mobile=Mobile No +hrm.HrmEmpPersonalDetailsAddress.phone=Phone(1) +hrm.HrmEmpPersonalDetailsAddress.extension=Extension +hrm.HrmEmpPersonalDetailsAddress.secPhone=Phone(2) +hrm.HrmEmpPersonalDetailsAddress.email=E-Mail +hrm.HrmEmpPersonalDetailsAddress.fax=Fax +hrm.HrmEmpPersonalDetailsAddress.prAddress=Address +hrm.HrmEmpPersonalDetailsAddress.prCity=City +hrm.HrmEmpPersonalDetailsAddress.prState=State +hrm.HrmEmpPersonalDetailsAddress.prCountry=Country +hrm.HrmEmpPersonalDetailsAddress.prPinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.prPhone=Phone + +hrm.HrmEmpPersonalDetailsAddress.peAddress=Address +hrm.HrmEmpPersonalDetailsAddress.peCity=City +hrm.HrmEmpPersonalDetailsAddress.peState=State +hrm.HrmEmpPersonalDetailsAddress.peCountry=Country +hrm.HrmEmpPersonalDetailsAddress.pePinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.pePhone=Phone + +hrm.HrmEmpPersonalDetailsAddress.htAddress=Address +hrm.HrmEmpPersonalDetailsAddress.htCity=City +hrm.HrmEmpPersonalDetailsAddress.htState=State +hrm.HrmEmpPersonalDetailsAddress.htCountry=Country +hrm.HrmEmpPersonalDetailsAddress.htPinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.htPhone=Phone + +hrm.HrmEmpPersonalDetailsJoinInf.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsJoinInf.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsJoinInf.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsJoinInf.firstName=First Name +hrm.HrmEmpPersonalDetailsJoinInf.middleName=Middle Name +hrm.HrmEmpPersonalDetailsJoinInf.lastName=Last Name +hrm.HrmEmpPersonalDetailsJoinInf.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsJoinInf.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsJoinInf.accessCardNo=Access Card No. +hrm.HrmEmpPersonalDetailsJoinInf.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsJoinInf.photograph=Photograph +hrm.HrmEmpPersonalDetailsJoinInf.compJoiningDate=Bank Joining Date +hrm.HrmEmpPersonalDetailsJoinInf.tentativeConfDate=Tentative Confirmation Date +hrm.HrmEmpPersonalDetailsJoinInf.locationJoinDate=Location Joining Date +hrm.HrmEmpPersonalDetailsJoinInf.retirementDate=Retirement Date +hrm.HrmEmpPersonalDetailsJoinInf.payrollStopDate=Payroll Stop Date +hrm.HrmEmpPersonalDetailsJoinInf.baseSiteCode=Base Site Code +hrm.HrmEmpPersonalDetailsJoinInf.siteCode=Site Code +hrm.HrmEmpPersonalDetailsJoinInf.siteName=Site Name +hrm.HrmEmpPersonalDetailsJoinInf.baseSiteName=Base Site Name + +hrm.HrmEmpPersonalDetailsJoinInf.entryMode=Entry Mode +hrm.HrmEmpPersonalDetailsJoinInf.accountNumber=Account Number +hrm.HrmEmpPersonalDetailsJoinInf.employeeStatus=Employee Status +hrm.HrmEmpPersonalDetailsJoinInf.statusDate=Status Effective Date +hrm.HrmEmpPersonalDetailsJoinInf.separationType=Separation type +hrm.HrmEmpPersonalDetailsJoinInf.suspensionRate=Suspension Rate (%) +hrm.HrmEmpPersonalDetailsJoinInf.costCentre=Cost Centre +hrm.HrmEmpPersonalDetailsJoinInf.payment=Payment Type +hrm.HrmEmpPersonalDetailsJoinInf.cheque=Cheque Payment +hrm.HrmEmpPersonalDetailsJoinInf.accountingSiteCode=Accounting Site Code +hrm.HrmEmpPersonalDetailsJoinInf.accountingSite=Accounting Site +hrm.HrmEmpPersonalDetailsJoinInf.code=Code +hrm.HrmEmpPersonalDetailsJoinInf.description=Description +hrm.HrmEmpPersonalDetailsJoinInf.separationCode=Separation Code +hrm.HrmEmpPersonalDetailsJoinInf.costCode=Cost Code +hrm.HrmEmpPersonalDetailsJoinInf.cash=Cash/Cheque Payment +hrm.HrmEmpPersonalDetailsJoinInf.dd=Demand Draft +hrm.HrmEmpPersonalDetailsJoinInf.refNo=Reference No. +hrm.HrmEmpPersonalDetailsJoinInf.orderNo=Order No. +hrm.HrmEmpPersonalDetailsJoinInf.orderDate=Order Date +hrm.HrmEmpPersonalDetailsJoinInf.bank=Bank +hrm.HrmEmpPersonalDetailsJoinInf.bankCode=Code +hrm.HrmEmpPersonalDetailsJoinInf.bankName=Name +hrm.HrmEmpPersonalDetailsJoinInf.placeOfInitialPosting=Place of Initial Posting +hrm.HrmEmpPersonalDetailsJoinInf.placeOfCurrentPosting=Place of Initial Posting +hrm.HrmEmpPersonalDetailsJoinInf.branchName=Branch + +hrm.HrmEmpPersonalDetailsJoinInf.searchBankCode=Bank Code +hrm.HrmEmpPersonalDetailsJoinInf.searchBranchName=Branch Name +hrm.HrmEmpPersonalDetailsJoinInf.responsibility=Job Responsibility + +hrm.HrmEmpPersonalDetailsTrngDet.mainHeader=EMPLOYE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsTrngDet.employeeNo=Emplyee No +hrm.HrmEmpPersonalDetailsTrngDet.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsTrngDet.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsTrngDet.courseName=Course Name +hrm.HrmEmpPersonalDetailsTrngDet.fromDate=From Date +hrm.HrmEmpPersonalDetailsTrngDet.toDate=To Date +hrm.HrmEmpPersonalDetailsTrngDet.calendarName=Calendar Name +hrm.HrmEmpPersonalDetailsTrngDet.rating=Rating +hrm.HrmEmpPersonalDetailsTrngDet.participation=Participated +hrm.HrmEmpPersonalDetailsTrngDet.resonNonPart=Reason For Non Participation +hrm.HrmEmpPersonalDetailsTrngDet.instName=Name Of Institution + +hrm.HrmEmpPersonalDetailsPriorExp.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsPriorExp.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsPriorExp.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsPriorExp.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsPriorExp.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetailsPriorExp.photograph=Select Photograph +hrm.HrmEmpPersonalDetailsPriorExp.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsPriorExp.firstName=First Name +hrm.HrmEmpPersonalDetailsPriorExp.middleName=Middle Name +hrm.HrmEmpPersonalDetailsPriorExp.lastName=Last Name +hrm.HrmEmpPersonalDetailsPriorExp.employeeNumber=Employee Number +hrm.HrmEmpPersonalDetailsPriorExp.fromPeriod=From Period (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.toPeriod=To Period (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.workExp=Work Experience +hrm.HrmEmpPersonalDetailsPriorExp.skillCode=Skill Code +hrm.HrmEmpPersonalDetailsPriorExp.location=Location +hrm.HrmEmpPersonalDetailsPriorExp.workDesc=Work Description +hrm.HrmEmpPersonalDetailsPriorExp.desgn=Designation +hrm.HrmEmpPersonalDetailsPriorExp.desgCode=Designation Code +hrm.HrmEmpPersonalDetailsPriorExp.months=Months +hrm.HrmEmpPersonalDetailsPriorExp.days=Days +hrm.HrmEmpPersonalDetailsPriorExp.basics=Basic +hrm.HrmEmpPersonalDetailsPriorExp.da=DA +hrm.HrmEmpPersonalDetailsPriorExp.allowance=Allowance +hrm.HrmEmpPersonalDetailsPriorExp.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsPriorExp.orgName=Organization Name +hrm.HrmEmpPersonalDetailsPriorExp.orgAdd=Organization Address +hrm.HrmEmpPersonalDetailsPriorExp.fromDate=From Date (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.toDate=To Date (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.workExp=Work Experience(in months) +hrm.HrmEmpPersonalDetailsPriorExp.designation=Designation +hrm.HrmEmpPersonalDetailsPriorExp.reportTo=Report To(Name/Designation) +hrm.HrmEmpPersonalDetailsPriorExp.jobDescription=Job Description/Responsibility +hrm.HrmEmpPersonalDetailsPriorExp.personnelSupervised=No Of Personnel Supervised +hrm.HrmEmpPersonalDetailsPriorExp.salaryStarting=Salary(Starting) Per Month +hrm.HrmEmpPersonalDetailsPriorExp.salaryLeaving=Salary(Leaving) Per Month +hrm.HrmEmpPersonalDetailsPriorExp.basic=Basic(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.da=DA(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.hra=HRA(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.conveyance=Conveyance(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.otherAllowance=Other Allowances(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.incentives=Incentives(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.bonus=Bonus(Last Drawn) + + + + +hrm.HrmEmpPersonalDetailsEdu.schoolColInst=Name Of School/College/Inst +hrm.HrmEmpPersonalDetailsEdu.examDegreePassed=Exam/Degrees Passed +hrm.HrmEmpPersonalDetailsEdu.percentageDivision=Percentage +hrm.HrmEmpPersonalDetailsEdu.majorSubjects=Major Subjects +hrm.HrmEmpPersonalDetailsEdu.specialisation=Specialisation +hrm.HrmEmpPersonalDetailsEdu.otherProfQualification=Other Professional Qualifications +hrm.HrmEmpPersonalDetailsEdu.specialisedCourses=Specialised Courses Attended +hrm.HrmEmpPersonalDetailsEdu.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsEdu.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsEdu.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsEdu.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsEdu.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetailsEdu.photograph=Select Photograph +hrm.HrmEmpPersonalDetailsEdu.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsEdu.firstName=First Name +hrm.HrmEmpPersonalDetailsEdu.middleName=Middle Name +hrm.HrmEmpPersonalDetailsEdu.lastName=Last Name +hrm.HrmEmpPersonalDetailsEdu.srlNo=Srl No. +hrm.HrmEmpPersonalDetailsEdu.instituteCode=Institute Code +hrm.HrmEmpPersonalDetailsEdu.qualificationCode=Qualification Code +hrm.HrmEmpPersonalDetailsEdu.qualificationName=Qualification +hrm.HrmEmpPersonalDetailsEdu.specialisation=Specialisation +hrm.HrmEmpPersonalDetailsEdu.passYear=Pass Year +hrm.HrmEmpPersonalDetailsEdu.percent=Percent +hrm.HrmEmpPersonalDetailsEdu.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsEdu.checkPercent=Percent cannot be greater than 100 + + + +hrm.HrmEmpPersonalDetailsEmpHst.mainHeader=EMPLOYE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsEmpHst.employeeNo=Emplyee No +hrm.HrmEmpPersonalDetailsEmpHst.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsEmpHst.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsEmpHst.serialNo=Serial No +hrm.HrmEmpPersonalDetailsEmpHst.activity=Activity +hrm.HrmEmpPersonalDetailsEmpHst.effectiveDate=Effective Date +hrm.HrmEmpPersonalDetailsEmpHst.frombasic=From Basic +hrm.HrmEmpPersonalDetailsEmpHst.tobasic=To Basic +hrm.HrmEmpPersonalDetailsEmpHst.fromgrade=From Grade +hrm.HrmEmpPersonalDetailsEmpHst.tograde=To Grade +hrm.HrmEmpPersonalDetailsEmpHst.fromdesig=From Desig +hrm.HrmEmpPersonalDetailsEmpHst.todesig=To Desig +hrm.HrmEmpPersonalDetailsEmpHst.fromDepartment=From Department +hrm.HrmEmpPersonalDetailsEmpHst.todepartment=To Department +hrm.HrmEmpPersonalDetailsEmpHst.fromlocation=From Location +hrm.HrmEmpPersonalDetailsEmpHst.tolocation=To Location + + + +hrm.HrmEmpPersonalDetailsPF.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsPF.employeeNo=Employee no +hrm.HrmEmpPersonalDetailsPF.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsPF.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsPF.nomineeName=Nominee Name +hrm.HrmEmpPersonalDetailsPF.relation=Relation +hrm.HrmEmpPersonalDetailsPF.dob=Date Of Birth +hrm.HrmEmpPersonalDetailsPF.address=Address +hrm.HrmEmpPersonalDetailsPF.total=Total Amount +hrm.HrmEmpPersonalDetailsPF.minor=Name, Relation & Adress of the Guardian (In Case of Minor) +hrm.HrmEmpPersonalDetailsPF.percentage=Percent(%)of PF +hrm.hrmEmpPers.error.PFpercent=Total of PF percent should be 100 +hrm.HrmEmpPersonalDetailsPF.Y=Yes +hrm.HrmEmpPersonalDetailsPF.N=No +hrm.HrmEmpPersonalDetailsPF.nominee=You have already entered for this nominee. +hrms.HrmEmpPersonalDetails.exp=To Period must be greater than From Period +hrm.HrmEmpPersonalDetails.fromExpLessThan12=Month in From Period must be less than 12. +hrm.HrmEmpPersonalDetails.toExpLessThan12=Month in To Period must be less than 12. + +hrm.HrmEmpPersonalDetailsRef.mainHeader=EMPLOYE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsRef.employeeNo=Employee no +hrm.HrmEmpPersonalDetailsRef.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsRef.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsRef.name=Name +hrm.HrmEmpPersonalDetailsRef.address=Address +hrm.HrmEmpPersonalDetailsRef.telephoneno=Telephone No +hrm.HrmEmpPersonalDetailsRef.positionoccupation=Position/Occupation +hrm.HrmEmpPersonalDetailsRef.subHeader1=Employee Detail + +hrm.HrmEmpPersonalDetailsAwd.award=Name of Award +hrm.HrmEmpPersonalDetailsAwd.awardYear=Year of Award +hrm.HrmEmpPersonalDetailsAwd.awardField=Field/Discipline of Award +hrm.HrmEmpPersonalDetailsAwd.awardDate=Date of Award + +hrm.HrmEmpPersonalDetailsHealth.probDtls=Details of Sickness +hrm.HrmEmpPersonalDetailsHealth.startDate=Start Date +hrm.HrmEmpPersonalDetailsHealth.endDate=End Date + +hrm.HrmEmpPersonalDetailsIns.invDtls=Investment Details +hrm.HrmEmpPersonalDetailsIns.invAmount=Investment Amount +hrm.HrmEmpPersonalDetailsIns.invPolicyNo=Policy Number +hrm.HrmEmpPersonalDetailsIns.invDate=Investment Date + +hrm.HrmEmpPersonalDetailsLng.lngName=Languages Known +hrm.HrmEmpPersonalDetailsLng.lngSpeak=Speaking Ability +hrm.HrmEmpPersonalDetailsLng.lngRead=Reading Ability +hrm.HrmEmpPersonalDetailsLng.lngWrite=Writing Ability + +## BY SUBHAM FOR ASSET DETAILS TAB + +hrm.HrmEmpPersAsset.fullAddress= Name of District,Sub-Division Taluka & Village +hrm.HrmEmpPersAsset.detailOfProperty=Name and detail of property +hrm.HrmEmpPersAsset.costOfConstruction=Cost of construction/Acquirement +hrm.HrmEmpPersAsset.yearOfPurchase =Year when purchased +hrm.HrmEmpPersAsset.presentValue=Present Value +hrm.HrmEmpPersAsset.nameHeld=If not in own name,state in whose name held and his / her relationship, to the employee. +hrm.HrmEmpPersAsset.howAquired=How acquired +hrm.HrmEmpPersAsset.detailOfPersonFromWhomAquired=Name with details of person(s) from whom acquired +hrm.HrmEmpPersAsset.totalIncome=Total annual income from the property +hrm.HrmEmpPersAsset.remarks=Remarks + +##For UAN & Aadhar No. By SUBHAM + +hrm.HrmEmpPersonalDetails.uanInfo= UAN Details +hrm.HrmEmpPersonalDetails.aadharInfo= Aadhar Number +hrm.HrmEmpPersonalDetails.checkUanValidation=UAN should be 12 Digits +hrm.HrmEmpPersonalDetails.checkAddharValidation=AADHAR No. should be 12 Digits + + +##For UAN & Aadhar No. Ends Here + +HrmSepClrLst.title=SEPARATION CLEARANCE LIST +SepClrLstTabHeader.title=Clearance List Detail +hrm.HrmSepClrLst.description=Description +hrm.HrmSepClrLst.externalInternalFlag=Type +hrm.HrmSepClrLst.external=External +hrm.HrmSepClrLst.internal=Internal + +hrm.HrmSepClrTmplMst.heading=CLEARANCE TEMPLATE MASTER +hrm.HrmSepClrTmplMst.tmplDesc=Template Description +hrm.HrmSepClrTmplMst.txtClrDesc= Clearance Desciption +hrm.HrmSepClrTmplMst.obsoleteFlag=Obsolete +hrm.HrmSepClrTmplMst.extIntFlag=External/Internal + +hrm.HrmSepApplication.mainHeader=SEPARATION APPLICATION +hrm.HrmSepApplication.subHeader1=Application Details +hrm.HrmSepApplication.subHeader2=Separation Details +hrm.HrmSepApplication.applicationNo=Application No. +hrm.HrmSepApplication.dateApplied=Application Date +hrm.HrmSepApplication.initiatedBy=Initiated By +hrm.HrmSepApplication.self=Self +hrm.HrmSepApplication.office=Office +hrm.HrmSepApplication.both=Both +hrm.HrmSepApplication.employeeNo=Employee No. +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepApplication.separationCategory=Separation Category +hrm.HrmSepApplication.immediateEffect=Immediate Effect +hrm.HrmSepApplication.requestedSepDate=Requested Separation Date +hrm.HrmSepApplication.actualSepDate=Actual Separation Date +hrm.HrmSepApplication.reason=Reason +hrm.HrmSepApplication.rejectionRemarks= Remarks +hrm.HrmSepApplication.approvedFlag=Approval Status +hrm.HrmSepApplication.new=New +hrm.HrmSepApplication.pending=Pending +hrm.HrmSepApplication.approved=Approved +hrm.HrmSepApplication.rejected=Rejected +hrm.HrmSepApplication.withdrawalFlag=Withdrawal Apication +hrm.HrmSepApplication.sepCode=Separation Code +hrm.HrmSepApplication.sepName=Description + + + + + +hrm.HrmSepOrder.mainHeader=SEPARATION ORDER +hrm.HrmSepOrder.orderNo=Order No +hrm.HrmSepOrder.orderDate=Order Date +hrm.HrmSepOrder.subHeader2=Order Details +hrm.HrmSepOrder.applnNo=Application No +hrm.HrmSepOrder.employeeName=Employee Name +hrm.HrmSepOrder.separationCategory=Separation Category +hrm.HrmSepOrder.immediateEffect=Immediate Effect +hrm.HrmSepOrder.requestedSepDate=Requested Separation Date +hrm.HrmSepOrder.actualSepDate=Actual Separation Date +hrm.HrmSepOrder.reason=Reason +hrm.HrmSepOrder.rejectionRemarks= Remarks +hrm.HrmSepOrder.approvedFlag=Status +hrm.HrmSepOrder.new=New +hrm.HrmSepOrder.pending=Pending +hrm.HrmSepOrder.approved=Approved +hrm.HrmSepOrder.rejected=Rejected +hrm.HrmSepOrder.applnDate=Application Date +hrm.HrmSepOrder.noApplication=There is no Separation Application pending. + + + + + + + +hrm.HrmSepClrEmp.empNo=Employee No +hrm.HrmSepClrEmp.empName=Employee Name +hrm.HrmSepClrEmp.heading=SEPARATION CLEARANCE FOR EMPLOYEE +hrm.HrmSepClrEmp.tmplDesc=Template Description +hrm.HrmSepClrEmp.txtClrDesc= Clearance Desciption +hrm.HrmSepClrEmp.txtCheckFlag= Check Flag +hrm.HrmSepClrEmp.txtComment= Comment +hrm.HrmSepClrEmp.checkFlag=Check Flag +hrm.HrmSepClrEmp.obsoleteFlag=Obsolete Flag + + + + +hrm.HrmLvAppln.employeeNumber= Employee Number +hrm.HrmLvAppln.employeeName= Employee Name +hrm.HrmLvAppln.FirstName=First name +hrm.HrmLvAppln.MiddleName=Middle Name +hrm.HrmLvAppln.LastName=Last Name +hrm.HrmLvAppln.grade=Grade +hrm.HrmLvAppln.designation=Designation +hrm.HrmLvAppln.location=Location +hrm.HrmLvAppln.leaveCodes=Leave Code +hrm.HrmLvAppln.description=Description +hrm.HrmLvAppln.dateApplied=Date Applied +hrm.HrmLvAppln.fromDate=From Date +hrm.HrmLvAppln.toDate=To Date +hrm.HrmLvAppln.noOfdays=Number Of Days +hrm.HrmLvAppln.address=Address Of The Employee Proceeding On Leave +hrm.HrmLvAppln.phone=Phone No +hrm.HrmLvAppln.statusOfLeaves=Status +hrm.HrmLvAppln.reason=Reason +hrm.HrmLvAppln.appRemarks=Approver's Remarks +hrm.HrmLvAppln.itPercentage=Income Tax Amount (Rs.) + +hrm.HrmLeaveApplicationQuery.employeeNo=Employee Number +hrm.HrmLeaveApplicationQuery.leaveType=Leave Type +hrm.HrmLeaveApplicationQuery.leaveDescription=Leave Description +hrm.HrmLeaveApplicationQuery.fromDate=From Date +hrm.HrmLeaveApplicationQuery.toDate=To Date +hrm.HrmLeaveApplicationQuery.status=Status +hrm.HrmLeaveApplicationQuery.dateApplied=Date Applied + + + +hrm.HrmLeaveMaster.applicableFor=Applicable For +hrm.HrmLeaveMaster.state=State +hrm.HrmLeaveMaster.All=All + + + +hrm.EmpAprsl.heading=EMPLOYEE APPRAISAL +hrm.EmpAprsl.empCode=Employee No +hrm.EmpAprsl.empName=Employee Name +hrm.EmpAprsl.aprslCode=Appraisal No +hrm.EmpAprsl.aprslName=Appraisal Name +hrm.EmpAprsl.aprslLevel=Appraisal Level +hrm.EmpAprsl.aprslPeriod=Appraisal Period +hrm.EmpAprsl.stOrderNo=Start Order No +hrm.EmpAprsl.finalRating=Final Rating +hrm.EmpAprsl.fromDate=From Date +hrm.EmpAprsl.toDate=To Date +hrm.EmpAprsl.kpa=KPA +hrm.EmpAprsl.goals=Goals +hrm.EmpAprsl.kpaCode=KPA Group Desc +hrm.EmpAprsl.kpaDesc=KPA Desc +hrm.EmpAprsl.levelAprl0=Self Appraisal +hrm.EmpAprsl.levelRating0=Self Rating +hrm.EmpAprsl.levelAprl1=Appraiser1 Appraisal +hrm.EmpAprsl.levelRating1=Appraiser1 Rating +hrm.EmpAprsl.levelAprl2=Appraiser2 Appraisal +hrm.EmpAprsl.levelRating2=Appraiser2 Rating +hrm.EmpAprsl.levelAprl3=Functional Head Appraisal +hrm.EmpAprsl.levelRating3=Functional Head Rating +hrm.EmpAprsl.levelAprl4=GM(HRM)Appraisal +hrm.EmpAprsl.levelRating4=GM(HRM)Rating +hrm.EmpAprsl.levelAprl5=Director(Operations)Appraisal +hrm.EmpAprsl.levelRating5=Director(Operations)Appraisal + +hrm.EmpAprsl.goalDesc=Goal Description +hrm.EmpAprsl.parentSec=Parent Section +hrm.EmpAprsl.section=Section + + +hrm.EmpAprsl.heading=EMPLOYEE APPRAISAL +hrm.EmpAprsl.empCode=Employee No +hrm.EmpAprsl.empName=Employee Name +hrm.EmpAprsl.aprslCode=Appraisal No +hrm.EmpAprsl.aprslName=Appraisal Name +hrm.EmpAprsl.aprslLevel=Appraisal Level +hrm.EmpAprsl.aprslPeriod=Appraisal Period +hrm.EmpAprsl.stOrderNo=Start Order No +hrm.EmpAprsl.finalRating=Final Rating +hrm.EmpAprsl.fromDate=From Date +hrm.EmpAprsl.toDate=To Date +hrm.EmpAprsl.grade=Grade +hrm.EmpAprsl.designation=Designation +hrm.EmpAprsl.presentlocation=Present Location +hrm.EmpAprsl.dateofbirth=Date Of Birth +hrm.EmpAprsl.dateofjoining=Date Of Joining(As Staff) +hrm.EmpAprsl.dateofjoiningasof=Date Of Joining(As Officer) +hrm.EmpAprsl.lastpromotion=Last Promotion Date +hrm.EmpAprsl.lastpay=Last Pay as on 31st March +hrm.EmpAprsl.academic=Academic/Prfessional Qualification +hrm.EmpAprsl.rating=Rating for last 3 Years(%)-In Reverse Order + +hrm.HrmTrainingCourseMst.trainingStream=Training Stream +hrm.HrmTrainingCourseMst.streamName=Stream Name +hrm.HrmTrainingCourseMst.courseCode=Course Code +hrm.HrmTrainingCourseMst.courseName=Course Name +hrm.HrmTrainingCourseMst.maxAttend=Max. Capacity +hrm.HrmTrainingCourseMst.minAttend=Min. Required +hrmTCM.title=TRAINING COURSE MASTER +hrmTCMSubHeader.title=Training Stream +hrmTCMTabHeader.title=Course Detail + + +hrm.HrmTrainingBudget.course=Course +hrm.HrmTrainingBudget.courseName=Course Name +hrm.HrmTrainingBudget.fromDate=From Date +hrm.HrmTrainingBudget.toDate=To Date +hrm.HrmTrainingBudget.currencyType=Currency Type +hrm.HrmTrainingBudget.budget=Budget +hrmTBMainHeader.title=TRAINING COURSE BUDGET +hrmTBSubHeader.title=Training Course +hrmTBTabHeader.title=Course Budget + + +hrm.HrmTrnCal.calendarName=Calendar Name +hrm.HrmTrnCal.site=Site +hrm.HrmTrnCal.siteName=Site Name +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCal.txtCourseName=Course Name +hrm.HrmTrnCal.txtInstituteName=Institute Name +hrm.HrmTrnCal.insCode=Institute Code +hrm.HrmTrnCal.txtCourseCode=Course Code +hrm.HrmTrnCal.txtVenue=Venue +hrm.HrmTrnCal.txtType=Type +hrm.HrmTrnCal.txtDuration=Duration +hrm.HrmTrnCal.txtStartDate=Start Date +hrm.HrmTrnCal.txtEndDate=End Date +hrm.HrmTrnCal.txtStrength=Strength +hrm.HrmTrnCal.txtFee=Fee +hrm.HrmTrnCal.txtRatingScheme=Rating Scheme +hrm.HrmTrnCal.txtStatus=Status +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCalMainHeader.title=TRAINING CALENDAR +hrm.HrmTrnCalSubHeader.title=Calendar Detail +hrm.HrmTrnCalTabHeader.title=Coursen Detail +hrm.HrmTrnCal.pending=Pending +hrm.HrmTrnCal.closed=Closed +hrm.HrmTrnCal.beginner=Beginner +hrm.HrmTrnCal.advanced=Advanced +hrm.HrmTrnCal.workshop=Workshop +hrm.HrmTrnCal.onLocation=On Location +hrm.HrmTrnCal.campusCourse=Campus Course +hrm.HrmTrnCal.courseName=Course Name +hrm.HrmTrnCal.minRating=Minimum Rating +hrm.HrmTrnCal.maxRating=Maximum Rating + + +hrm.HrmTrnInCoDtl.instituteCode=Institute Code +hrm.HrmTrnInCoDtl.type=Type +hrm.HrmTrnInCoDtl.external=EXTERNAL +hrm.HrmTrnInCoDtl.internal=INTERNAL +hrm.HrmTrnInCoDtl.forigen=FOREIGN +hrm.HrmTrnInCoDtl.inCharge=In Charge +hrm.HrmTrnInCoDtl.address=Address +hrm.HrmTrnInCoDtl.country=Country +hrm.HrmTrnInCoDtl.city=City +hrm.HrmTrnInCoDtl.state=State +hrm.HrmTrnInCoDtl.pin=PIN +hrm.HrmTrnInCoDtl.phone=Phone +hrm.HrmTrnInCoDtl.email=Email +hrm.HrmTrnInCoDtl.fax=Fax +hrm.HrmTrnInCoDtl.course=Course Code +hrm.HrmTrnInCoDtl.courseName=Course Name +hrmTCDtlMainHeader.title=TRAINING INSTITUTE AND COURSE DETAIL +hrmTCDtlSubHeader.title=Institute Detail +hrmTCDtlTabHeader.title=Course Detail + + +hrm.HrmEmpDiscAction.heading=EMPLOYEE DISCIPLINARY CASES +hrm.HrmEmpDiscAction.txtLocation=Location +hrm.HrmEmpDiscAction.txtMisconduct=Misconduct +hrm.HrmEmpDiscAction.txtFromDate=Misconduct Date +hrm.HrmEmpDiscAction.txtToDate=To Date +hrm.HrmEmpDiscAction.caseFlag=Look For +hrm.HrmEmpDiscAction.chrgShtDt=Charge Sheet Date +hrm.HrmEmpDiscAction.inquiryDt=Inquiry Date +hrm.HrmEmpDiscAction.inqOfficer=Inquiry Officer +hrm.HrmEmpDiscAction.actionAuth=Action Authority +hrm.HrmEmpDiscAction.appealDt=Appeal Date +hrm.HrmEmpDiscAction.txtActionTaken=Action Taken +hrm.HrmEmpDiscAction.txtStatus=Status +hrm.HrmEmpDiscAction.txtStatusEffectDate=Status Effective Date +hrm.HrmEmpDiscAction.txtRemarks=Remarks, if any +hrm.HrmEmpDiscAction.W=Warning +hrm.HrmEmpDiscAction.S=Suspension without salary +hrm.HrmEmpDiscAction.R=Reduction to a lower grade +hrm.HrmEmpDiscAction.I=Stoppage of increment +hrm.HrmEmpDiscAction.D=Dismissal from service +hrm.HrmEmpDiscAction.txtLocationCode=Site Code +hrm.HrmEmpDiscAction.txtLocationName=Site Name +hrm.HrmEmpDiscAction.THEFT=THEFT / FRAUD /DISHONESTY +hrm.HrmEmpDiscAction.TAKING=TAKING / GIVING BRIBE / ILLEGAL GRATIFICATION +hrm.HrmEmpDiscAction.POSSESSION=POSSESSION OF PECUNIARY RESOURCES / PROPERTIES +hrm.HrmEmpDiscAction.FURNISHING=FURNISHING FALSE INFORMATION +hrm.HrmEmpDiscAction.PREJUDICIAL=PREJUDICIAL ACTING TO THE INTEREST OF CORPORATION +hrm.HrmEmpDiscAction.WILLFUL=WILLFUL INSUBORDINATION / DISOBEDIENCE +hrm.HrmEmpDiscAction.ABSENCE=ABSENCE WITHOUT LEAVE / OVERSTAYING SANCTIONED LEAVE +hrm.HrmEmpDiscAction.HABITUAL=HABITUAL LATE / IRREGULAR ATTENDANCE +hrm.HrmEmpDiscAction.NEGLIGENCE=NEGLIGENCE IN DUTY / MALINGERING / SLOWING DOWN OF WORK +hrm.HrmEmpDiscAction.DAMAGE=DAMAGE TO ANY PROPERTY OF THE CORPORATION / SUBSIDIARIES +hrm.HrmEmpDiscAction.INTERFERENCE=INTERFERENCE / TEMPERING WITH SAFETY DEVICES WITHIN THE PREMISES +hrm.HrmEmpDiscAction.DRUNKENNESS=DRUNKENNESS / RIOTOUS / DISORDERLY / INDECENT BEHAVIOUR +hrm.HrmEmpDiscAction.GAMBLING=GAMBLING WITHIN THE PREMISES OF THE ESTABLISHMENT +hrm.HrmEmpDiscAction.COLLECTION=COLLECTION OF MONEY WITHOUT PERMISSION OF AUTHORITY +hrm.HrmEmpDiscAction.SLEEPING=SLEEPING WHILE ON DUTY +hrm.HrmEmpDiscAction.CRIMINAL=COMMISSION OF ANY ACT WHICH AMOUNTS TO A CRIMINAL INVOLVING MORAL TURPITUDE +hrm.HrmEmpDiscAction.ABSENCEWORK=ABSENCE FROM APPOINTED PLACE OF WORK WITHOUT PERMISSION +hrm.HrmEmpDiscAction.SMOKING=SMOKING WITHIN THE PREMISES OF ESTABLISHMENT WHERE ITS PROHIBITED +hrm.HrmEmpDiscAction.PURCHASING=PURCHASING/SELLING PROPERTIES/MACHINERIES/STORES WITHOUT PERMISSION +hrm.HrmEmpDiscAction.COMMISSION=COMMISSION OF ANY ACT SUBVERSIVE OF DISCIPLINE OR OF GOOD BEHAVIOUR +hrm.HrmEmpDiscAction.ABETMENT=ABETMENT/ ATTEMPT OF ABETMENT OF ANY ACT WHICH AMOUNTS TO MISCONDUCT +hrm.HrmEmpDiscAction.P=Pending +hrm.HrmEmpDiscAction.E=Exonerated +hrm.HrmEmpDiscAction.C=Closed + +hrm.HrmClaimMst.MainHeader=CLAIM MASTER +hrm.HrmClaimMst.SubHeader=Claim Header +hrm.HrmClaimMst.claimCode=Code +hrm.HrmClaimMst.claimName=Name +hrm.HrmClaimMst.docReqFlag=Document Required +hrm.HrmClaimMst.calendarName=Calendar Name +hrm.HrmClaimMst.payrollFlag=Settle Through Payroll +hrm.HrmClaimMst.y=Yes +hrm.HrmClaimMst.n=No +hrm.HrmClaimMst.detail=Claim Details +hrm.HrmClaimMst.claimDetailCode=Claim Detail Code +hrm.HrmClaimMst.maxCalLimit=Maximum Calendar Limit +hrm.HrmLoanMst.greaterLesserFlag=Eligibility Factor +hrm.HrmClaimMst.maxLimit=Maximum Limit +hrm.HrmClaimMst.amount=Flat Amount +hrm.HrmClaimMst.effectFromDate=Effective From Date +hrm.HrmClaimMst.effectToDate=Effective To Date +hrm.HrmClaimMst.appliedToAll=Applicable To All +hrm.HrmClaimMst.greater=Greater +hrm.HrmClaimMst.lesser=Lesser +hrm.HrmClaimMst.dateError=Effective From Date can't be Greater than Effective To Date. +hrm.HrmClaimMst.amountError=Applicable Amount cannot exceed Maximum Calendar Limit. + +hrm.HrmEmpClaim.heading=EMPLOYEE REIMBURSEMENT +hrm.HrmEmpClaim.claimCode=Claim Code +hrm.HrmEmpClaim.startDate=From Date +hrm.HrmEmpClaim.endDate=To Date +hrm.HrmEmpClaim.txtEmployeeNo=Employee No +hrm.HrmEmpClaim.txtEmployeeName=Employee Name +hrm.HrmEmpClaim.txtAppliedAmount=Applied Amount +hrm.HrmEmpClaim.txtApplnDate=Date Applied +hrm.HrmEmpClaim.txtEligibleAmount=Eligible Amount +hrm.HrmEmpClaim.txtReimbursementTillDate=Reimbursed Till Date +hrm.HrmEmpClaim.txtPayrollFlag=Settle Through Payroll +hrm.HrmEmpClaim.txtApprovedAmount=Approved Amount +hrm.HrmEmpClaim.txtApprovalDate=Approval Date +hrm.HrmEmpClaim.txtApprovedBy=Approver's Name +hrm.HrmEmpClaim.txtApproverNo=Approver's Employee No +hrm.HrmEmpClaim.txtRemarks=Approver's Remarks +hrm.HrmEmpClaim.y=Yes +hrm.HrmEmpClaim.n=No +hrm.HrmEmpClaim.period=Period +hrm.HrmEmpClaim.current=Current +hrm.HrmEmpClaim.previous=Previous +hrm.HrmEmpClaim.PleaseSelect= --Please Select-- +hrm.HrmEmpClaim.Approved=Approved +hrm.HrmEmpClaim.Paid=Paid +hrm.HrmEmpClaim.txtClaimNo=Claim No. +hrm.HrmEmpClaim.empNo=Employee No. +hrm.HrmEmpClaim.date.value=Approved Date cannot be less than Application Date +hrm.HrmEmpClaim.validate=Sum of Reimbursed Till Date and applied amount is exceeding Eligible Amount in {0} row of detail +hrm.HrmEmpClaim.validate2=Eligible Amount is {0} and amount reimbursed till date is {1} +hrm.HrmEmpClaim.validate1=Approved Amount cannot be greater than Applied Amount in row {0} of detail +hrm.HrmEmpClaim.notAllowed= Previous Reimbursements cannot be entered after 1st April. + +hrm.HrmEmpAprslPersonalDetails.presLoc=Present Location +hrm.HrmEmpPersonalDetails.joiningOfficerDate=Date Of Joining(As Officer) +hrm.HrmEmpPersonalDetails.joiningStaffDate=Date Of Joining(As Staff) +hrm.HrmEmpPersonalDetails.dateofBirth=Date Of Birth +hrm.HrmEmpPersonalDetails.lastPromDate=Last Promotion Date +hrm.HrmEmpPersonalDetails.lastPay=Last Pay as on 31st March +hrm.HrmEmpPersonalDetails.qual=Academic/Professional Qualification +hrm.HrmEmpPersonalDetails.rating=Rating for last 3 years-In reverse Order +hrm.HrmEmpPersonalDetails.rating1=Rating1 +hrm.HrmEmpPersonalDetails.rating2=Rating2 +hrm.HrmEmpPersonalDetails.rating3=Rating3 +hrm.HrmEmpPersonalDetails.incr=Increment/Reward for last 3 years-In reverse Order + + +hrm.HrmSepApplication.employeeNo=Employee No +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepApplication.firstName=First Name +hrm.HrmSepApplication.middleName=Middle name +hrm.HrmSepApplication.lastName=Last Name +hrm.HrmSepApplication.grade=Grade +hrm.HrmSepApplication.designation=Designation +hrm.HrmSepApplication.location=Location +hrm.HrmSepApplication.pastExp=Total Previous Experience(Months) +hrm.HrmSepApplication.presExp=Experience in Organization(Years) +hrm.HrmSepApplication.subHeader2=Employee Details +hrm.HrmSepApplication.sepCat=Separation Category +hrm.HrmSepApplication.imEffect=Immediate Effect +hrm.HrmEmpPersonalDetails.withFlag=Withdraw Application +hrm.HrmSepApplication.reqSepDate=Req. Separation Date +hrm.HrmSepApplication.actSepDate=Actual Separation Date +hrm.HrmSepApplication.reason=Reason + +wenrgise.empSepAppl.dateConstraintViolated=Requested separation date should be greater than application date. +wenrgise.sepappln.uniqueConstraintViolated=Header record with this {0} already exists. + +wenrgise.empSepOrderDate.dateConstraintViolated=Order date should be greater than application date. +wenrgise.empSepActDate.dateConstraintViolated=Actual Separation date should be greater than application date. + +hrm.HrmOrgIncrement.heading=MAINTAIN YEARLY INCREMENT RATES +hrm.HrmOrgIncrement.startDate=Start Date +hrm.HrmOrgIncrement.endDate=End Date +hrm.HrmOrgIncrement.classHeaderCode=Class Header +hrm.HrmOrgIncrement.classHeaderDesc=Class Header Description +hrm.HrmOrgIncrement.classDetailCode=Class Detail +hrm.HrmOrgIncrement.classDetailDesc=Class Detail Description +hrm.HrmOrgIncrement.ratingCode=Rating Scheme +hrm.HrmOrgIncrement.ratingFrom=Rating From +hrm.HrmOrgIncrement.ratingTo=Rating To +hrm.HrmOrgIncrement.ratingGrade=Rating Grade +hrm.HrmOrgIncrement.ratingDescription=Rating Description +hrm.HrmOrgIncrement.increment=Increment Amount +hrm.HrmOrgIncrement.detail=Increment Details +wenrgise.hrms.incr.enddate.value=Update the end date of the last record for the rating code. +wenrgise.hrms.stdateConstraintViolated=Start date should be after {0}. +wenrgise.hrms.endDateConstraintViolated=End date should lie after start date. + +hrm.HrmPrmOrder.mainHeader=PROMOTION ORDER +hrm.HrmPrmOrder.subHeader1=Employee Details +hrm.HrmPrmOrder.employeeNo=Employee No. +hrm.HrmPrmOrder.employeeName=Employee Name +hrm.HrmPrmOrder.firstName=First Name +hrm.HrmPrmOrder.middleName=Middle Name +hrm.HrmPrmOrder.lastName=Last Name +hrm.HrmPrmOrder.grade=Grade +hrm.HrmPrmOrder.designation=Designation +hrm.HrmPrmOrder.location=Location +hrm.HrmPrmOrder.pastExp=Total Previous Experience(Months) +hrm.HrmPrmOrder.presExp=Experience in Organization(Years) +hrm.HrmPrmOrder.subHeader2=Promotion Details +hrm.HrmPrmOrder.orderNo=Promotion Order No. +hrm.HrmPrmOrder.toGrade=To Grade +hrm.HrmPrmOrder.toDesig=To Designation +hrm.HrmPrmOrder.effecDate=Effective Date +hrm.HrmPrmOrder.approvedBy=Approved By +hrm.HrmPrmOrder.remarks=Approver's Remarks[50 characters] +hrm.HrmPrmOrder.gradeName=Grade Description +hrm.HrmPrmOrder.gradeCode=Grade Code +hrm.HrmPrmOrder.desigName=Designation Description +hrm.HrmPrmOrder.desigCode=Designation Code +wenrgise.promKpa.uniqueConstraintViolated=Header record with this {0},{1} and {2} is already present. +hrm.HrmPrmOrder.dateValidate=Effective Date should not be prior to Last Promotion Date +hrm.HrmPrmOrder.dateValidate1=Effective Date should not be prior to Bank Joining Date + +hrm.HrmPrmKPARating.fromGradeCode=From Grade Code +hrm.HrmPrmKPARating.toGradeCode=To Grade Code + +hrm.HrmPrmNotice.txtGrade=Grade +wenrgise.common.prmnotdetail.uniqueKeyViolated=Detail record in row {2} with this {0} and {1} is already present. + +hrm.HrmMisReportMainHeader=MIS REPORT +hrm.HrmMisReport.GenerateReport= Generate Report +hrm.HrmMisReportTableHeader=Position Wise Desired Srengths +hrm.HrmMisReportSubHeader=Location +hrm.HrmMisReport.Position=Position +hrm.HrmMisReport.DesiredStrength=Desired Strength +hrm.HrmMisReport.yearmonth= Year Month + +hrm.HrmRetFrcstMainHeader= RETIREMENT FORECAST REPORT +hrm.HrmRetFrcst.fromDate= From Date +hrm.HrmRetFrcst.toDate= To Date +hrm.HrmRetFrcst.DateException= From Date Or To Date cannot be empty. + +/* Report Code added by Abhishek*/ +hrm.Report.title=All India Manpower Details +hrm.Report.txtYYMM=YYMM +hrm.Report.txtDesignationId=Designation +hrm.Report.txtFromDate= From Date +hrm.Report.txtToDate= To Date +hrm.Report.txtDate=User Date +hrm.Report.txtYear=Please Enter Year(YYYY) +hrm.Report.txtMonth=Please Select Month +hrm.HrmLvCredit.region=Region +hrm.HrmLvCredit.txtRegionCode=Region Code +hrm.HrmLvCredit.txtRegionName=Region Name +hrm.HrmLvCredit.success={0} Credited for the selected employee successfully +hrm.HrmLvCredit=Leave Credit +hrm.HrmLvCredit.failure={0} Already Credited For This Month For Selected Region +hrm.HrmLvCredit.empNo=Employee No +hrm.HrmLvCredit.leaveType=Leave Type +hrm.HrmLvCredit.noOfDays=No. of Days to be credited +## mediclaim master + +hrm.HrmMediclaimMasterMainHeader=MEDICLAIM MASTER +hrm.HrmMediclaimMasterSubHeader=Mediclaim Master +hrm.HrmMediclaimMaster.claimCode=Claim Code +hrm.HrmMediclaimMaster.txtClass=Class +hrm.HrmMediclaimMaster.cadre=Cadre +hrm.HrmMediclaimMaster.allEmp=All Employee Flag +hrm.HrmMediclaimMaster.dependents=Dependents +hrm.HrmMediclaimMasterTableHeader=Claim Detail +hrm.HrmMediclaimMaster.coverName=Cover Name +hrm.HrmMediclaimMaster.sumInsured=Sum Insured +hrm.HrmMediclaimMaster.premium=Premium +hrm.HrmMediclaimMaster.salaryUnit=Salary Unit +hrm.HrmMediclaimMaster.ageFrom=Age From +hrm.HrmMediclaimMaster.ageTo=Age To +hrm.HrmMediclaimMaster.aicContribution=AIC Contribution +hrm.HrmMediclaimMaster.documentRequired=Document Required + +## my workflow +hrm.HrmMyWorkflow.WorkflowMaster=My Workflow Header +hrm.HrmMyWorkflow.subHeader=My Workflow Details +hrm.HrmMyWorkflow.Select=----Select---- +hrm.HrmMyWorkflow.workflowHead = Document Type +hrm.HrmMyWorkflow.workflowType=Workflow Type +hrm.HrmMyWorkflow.txtStatus=Status +hrm.HrmMyWorkflow.id=Workflow Code +hrm.HrmMyWorkflow.requestType=Description +hrm.HrmMyWorkflow.requestId=Request No. +hrm.HrmMyWorkflow.requestor=Requestor's Id +hrm.HrmMyWorkflow.requestorName=Requestor's Name +hrm.HrmMyWorkflow.approver=Approver's Id +hrm.HrmMyWorkflow.approverName=Approver's Name +hrm.HrmMyWorkflow.level=Level +hrm.HrmMyWorkflow.Header=My Workflow +hrm.HrmMyWorkflow.worklist=My Worklist +hrm.HrmMyWorkflow.intimation=My Intimation +hrm.HrmMyWorkflow.pending=Pending +hrm.HrmMyWorkflow.approved=Approved +hrm.HrmMyWorkflow.rejected=Rejected +hrm.HrmMyWorkflow.deleted=Deleted +hrm.HrmMyWorkflow.finalized=Finalizedar +hrm.HrmMyWorkflow.butAct=Act On Worklist +### Roaster entry +hrm.HrmRoasterEntry.heading=ROASTER ENTRY +hrm.HrmRoasterEntry.detail=List Of RoasterEntry +hrm.HrmRoasterEntry.txtRoasterCode=Roaster Code +hrm.HrmRoasterEntry.txtRoasterDescription=Roaster Description +hrm.HrmRoasterEntry.txtRoasterPoint= RoasterPoint +hrm.HrmRoasterEntry.txtCategoryAsPerRoaster= Category As Per Roaster Pt. +hrm.HrmRoasterEntry.txtCategory=Category(SC/ST/OBC/UR) +hrm.HrmRoasterEntry.txtEmployeeNo= Employee No. +hrm.HrmRoasterEntry.txtEmployeeName=Employee Name +hrm.HrmRoasterEntry.txtAppointmentDate=Appointment Date +hrm.HrmRoasterEntry.txtDob=Date Of Birth +hrm.HrmRoasterEntry.txtCategoryId=CategoryId +hrm.HrmRoasterEntry.txtConsumedByCategory=Consumed By Category +hrm.HrmRoasterEntry.txtReserved=WHETHER RESERVED CATEGORY EMPLOYEE APPIONTED ON OWN MERIT AS UR(Y/N) +hrm.HrmRoasterEntry.txtShortfall=Shortfall +hrm.HrmRoasterEntry.txtReplacedBy=ReplacedBy +hrm.HrmRoasterEntry.txtRemarks=Remarks +hrm.HrmRoasterEntry.employeeNo=Employee No +hrm.HrmRoasterEntry.employeeName=Employee Name +hrm.HrmRoasterEntry.RoasterMaster=Roaster Entry Header +hrm.HrmRoasterEntry.RoasterEntryDetail=Roaster Entry Detail +hrm.HrmRoasterEntry.mainHeader1=Details +hrm.HrmRoasterEntry.Year=Year +hrm.HrmRoasterEntry.Month=Month +hrm.jan=Jan +hrm.feb=Feb +hrm.mar=Mar +hrm.apr=Apr +hrm.may=May +hrm.jun=Jun +hrm.jul=Jul +hrm.aug=Aug +hrm.sep=Sep +hrm.oct=Oct +hrm.nov=Nov +hrm.dec=Dec +hrm.HrmRoasterEntry.RoasterPoint=Roaster Point +hrm.HrmRoasterEntry.RoasterCode=Roaster Code +hrm.HrmRoasterEntry.Roasterdescription=Roaster Description +hrm.HrmRoasterEntry.rsvCtg=Category +hrm.HrmRoasterEntry.code= Category Code +hrm.HrmRoasterEntry.desc= Description +hrm.HrmRoasterEntry.level=Level +wenrgise.common.header.yearLength=enter valid year +hrm.HrmRoasterEntry.entryMode=Entry Mode +hrm.HrmAdhocReport.heading=AD-HOC REPORT GENERATION TOOL +hrm.HrmAdhocReport.id=Query Id +hrm.HrmAdhocReport.code=Query Code[Name] +hrm.HrmAdhocReport.desc=Query Description +hrm.HrmAdhocReport.tag=Query Tagline[Category/Module] +hrm.HrmAdhocReport.query=Enter Query Here : +hrm.HrmAdhocReport.param1=Param-1 Name +hrm.HrmAdhocReport.param2=Param-2 Name +hrm.HrmAdhocReport.param3=Param-3 Name +hrm.HrmAdhocReport.param4=Param-4 Name +hrm.HrmAdhocReport.param5=Param-5 Name +hrm.HrmAdhocReport.param6=Param-6 Name +hrm.HrmAdhocReport.param7=Param-7 Name +hrm.HrmAdhocReport.param8=Param-8 Name +hrm.HrmAdhocReport.param9=Param-9 Name +hrm.HrmAdhocReport.param10=Param-10 Name +hrm.HrmAdhocReport.paramval1=Enter value of Param-1 +hrm.HrmAdhocReport.paramval2=Enter value of Param-2 +hrm.HrmAdhocReport.paramval3=Enter value of Param-3 +hrm.HrmAdhocReport.paramval4=Enter value of Param-4 +hrm.HrmAdhocReport.paramval5=Enter value of Param-5 +hrm.HrmAdhocReport.paramval6=Enter value of Param-6 +hrm.HrmAdhocReport.paramval7=Enter value of Param-7 +hrm.HrmAdhocReport.paramval8=Enter value of Param-8 +hrm.HrmAdhocReport.paramval9=Enter value of Param-9 +hrm.HrmAdhocReport.paramval10=Enter value of Param-10 \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseApp.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseApp.xml new file mode 100644 index 0000000..e80e439 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseApp.xml @@ -0,0 +1,5 @@ + + jdbc/conDS + Y + hrms + diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseConfig.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseConfig.xml new file mode 100644 index 0000000..ca00aa0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseConfig.xml @@ -0,0 +1,3025 @@ + + + + + + wenrgise.hrms.webtier.form.HrmOrgHolTypeMstForm + wenrgise.hrms.vo.HrmOrgHolTypeMstQVO + wenrgise.hrms.businessdelegate.HrmOrgHolTypeMstBD + wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean + 10 + + + HrmOrgHolTypeMst + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmOrgHolTypeMstBD + wenrgise.common.bean.BaseDetailBean + 25 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgCalMstForm + wenrgise.hrms.vo.HrmOrgCalMstQVO + wenrgise.hrms.businessdelegate.HrmOrgCalMstBD + wenrgise.hrms.bean.HrmOrgCalMstHdrBean + 10 + + + HrmOrgCalMst + arrHrmCalDtl + wenrgise.hrms.businessdelegate.HrmOrgCalMstBD + wenrgise.hrms.bean.HrmOrgCalMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgHolCalForm + wenrgise.hrms.vo.HrmOrgHolCalQVO + wenrgise.hrms.businessdelegate.HrmOrgHolCalBD + wenrgise.hrms.bean.HrmOrgHolCalHdrBean + 10 + + + HrmOrgHolCal + arrHrmHolCalDtl + wenrgise.hrms.businessdelegate.HrmOrgHolCalBD + wenrgise.hrms.bean.HrmOrgHolCalDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgQualMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgQualMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgQualMst + arrHrmQualificationDtl + wenrgise.hrms.businessdelegate.HrmOrgQualMstBD + wenrgise.hrms.bean.HrmOrgQualMstDtlBean + 12 + 15 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgRatingMstForm + wenrgise.hrms.vo.HrmOrgRatingMstQVO + wenrgise.hrms.businessdelegate.HrmOrgRatingMstBD + wenrgise.hrms.bean.HrmOrgRatingMstHdrBean + 10 + + + HrmOrgRatingMst + arrHrmRatingDtl + wenrgise.hrms.businessdelegate.HrmOrgRatingMstBD + wenrgise.hrms.bean.HrmOrgRatingMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgSkillMstForm + wenrgise.hrms.vo.HrmOrgSkillMstQVO + wenrgise.hrms.businessdelegate.HrmOrgSkillMstBD + wenrgise.hrms.bean.HrmOrgSkillMstHdrBean + 10 + + + HrmOrgSkillMst + arrHrmSkillDtl + wenrgise.hrms.businessdelegate.HrmOrgSkillMstBD + wenrgise.hrms.bean.HrmOrgSkillMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgReligionMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgReligionMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgReligionMst + arrHrmReligionDtl + wenrgise.hrms.businessdelegate.HrmOrgReligionMstBD + wenrgise.hrms.bean.HrmOrgReligionMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgClassDtlForm + wenrgise.hrms.vo.HrmOrgClassDtlQVO + wenrgise.hrms.businessdelegate.HrmOrgClassDtlBD + wenrgise.hrms.bean.HrmOrgClassHdrBean + 20 + + + HrmOrgClassDtl + arrHrmClassDtl + wenrgise.hrms.businessdelegate.HrmOrgClassDtlBD + wenrgise.hrms.bean.HrmOrgClassDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgScaleMstForm + wenrgise.hrms.vo.HrmOrgScaleMstQVO + wenrgise.hrms.businessdelegate.HrmOrgScaleMstBD + wenrgise.hrms.bean.HrmOrgScaleMstHdrBean + 10 + + + HrmOrgScaleMst + arrHrmScaleDtl + wenrgise.hrms.businessdelegate.HrmOrgScaleMstBD + wenrgise.hrms.bean.HrmOrgScaleMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgCntryMstForm + wenrgise.hrms.vo.HrmOrgCntryMstQVO + wenrgise.hrms.businessdelegate.HrmOrgCntryMstBD + wenrgise.hrms.bean.HrmOrgCntryMstHdrBean + 50 + + + HrmOrgCntryMst + arrHrmCountryDtl + wenrgise.hrms.businessdelegate.HrmOrgCntryMstBD + wenrgise.hrms.bean.HrmOrgCntryMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgWorkGroupMstForm + wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO + wenrgise.hrms.businessdelegate.HrmOrgWorkGroupMstBD + wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean + 20 + + + HrmOrgWorkGroupMst + arrHrmWorkGroup + wenrgise.hrms.businessdelegate.HrmOrgWorkGroupMstBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgRelationMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgRelationMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgRelationMst + arrHrmRelationDtl + wenrgise.hrms.businessdelegate.HrmOrgRelationMstBD + wenrgise.hrms.bean.HrmOrgRelationMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgLangMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgLangMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgLangMst + arrHrmLanguageDtl + wenrgise.hrms.businessdelegate.HrmOrgLangMstBD + wenrgise.hrms.bean.HrmOrgLangMstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmOrgIncrementForm + wenrgise.hrms.vo.HrmOrgIncrementQVO + wenrgise.hrms.businessdelegate.HrmOrgIncrementBD + wenrgise.hrms.bean.HrmOrgIncrementHdrBean + 10 + + + HrmOrgIncrement + arylstRatingIncrement + wenrgise.hrms.businessdelegate.HrmOrgIncrementBD + wenrgise.hrms.bean.HrmOrgIncrementDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmOrgDistMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgDistMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgDistMst + arrHrmDistrictDtl + wenrgise.hrms.businessdelegate.HrmOrgDistMstBD + wenrgise.hrms.bean.HrmOrgDistrictMstDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmOrgTehMstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmOrgTehMstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmOrgTehMst + arrHrmTehsilDtl + wenrgise.hrms.businessdelegate.HrmOrgTehMstBD + wenrgise.hrms.bean.HrmOrgTehsilMstDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmGenEligRuleForm + wenrgise.hrms.vo.HrmGenEligRuleQVO + wenrgise.hrms.businessdelegate.HrmGenEligRuleBD + wenrgise.hrms.bean.HrmGenEligRuleHdrBean + 10 + + + HrmGenEligRule + + wenrgise.hrms.businessdelegate.HrmGenEligRuleBD + wenrgise.hrms.bean.HrmGenEligRuleDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmGenEligRuleQueryForm + wenrgise.hrms.vo.HrmGenEligRuleQueryQVO + wenrgise.hrms.businessdelegate.HrmGenEligRuleQueryBD + wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean + 10 + Y + + + HrmGenEligRuleQuery + arylstGenEligRuleQuery + wenrgise.hrms.businessdelegate.HrmGenEligRuleQueryBD + wenrgise.hrms.bean.HrmGenEligRuleQueryDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmEmpPersDtlForm + wenrgise.hrms.vo.HrmEmpPersQVO + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersHdrBean + 10 + + + HrmEmpPersDtls + arrEmpPersDtl + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersDtlsBean + 1 + 12 + + + HrmEmpPersAddDtls + arrEmpPersDtlAdd + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersAddDtlBean + 1 + 12 + + + HrmEmpPersJoinInf + arrEmpPersDtlJoin + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersJoinInfDtlBean + 1 + 12 + + + HrmEmpPersEmpHst + arrEmpPersDtlEmpHst + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersEmpHstDtlBean + 10 + 12 + + + HrmEmpPersPriorExp + arrEmpPersDtlPriorExp + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersPriorExpDtlBean + 10 + 12 + + + HrmEmpPersEduDtls + arrEmpPersDtlEdu + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersEduDtlBean + 10 + 12 + + + HrmEmpPersPFDtls + arrEmpPersDtlPF + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersPFDtlBean + 10 + 12 + + + HrmEmpPersTrngDtls + arrEmpPersDtlTrng + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersTrngDtlBean + 10 + 12 + + + HrmEmpPersAward + arrEmpPersDtlAward + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersAwardDtlBean + 10 + 12 + + + HrmEmpPersIns + arrEmpPersDtlIns + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersInsDtlBean + 10 + 12 + + + HrmEmpPersHealth + arrEmpPersDtlHealth + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersHealthBean + 10 + 12 + + + HrmEmpPersLng + arrEmpPersDtlLng + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersLngBean + 10 + 12 + + + HrmEmpPersRef + arrEmpPersDtlRef + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersRefDtlBean + 10 + 12 + + + HrmEmpPersAsset + arrEmpPersDtlAsset + wenrgise.hrms.businessdelegate.HrmEmpPersBD + wenrgise.hrms.bean.HrmEmpPersAssetDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmEmpDepDtlForm + wenrgise.hrms.vo.HrmEmpDepDtlQVO + wenrgise.hrms.businessdelegate.HrmEmpDepDtlBD + wenrgise.hrms.bean.HrmEmpDepHdrBean + 10 + + + HrmEmpDepDtl + arrEmplDepDtls + wenrgise.hrms.businessdelegate.HrmEmpDepDtlBD + wenrgise.hrms.bean.HrmEmpDepDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmEmpDiscActionForm + wenrgise.hrms.vo.HrmEmpDiscActionQVO + wenrgise.hrms.businessdelegate.HrmEmpDiscActionBD + wenrgise.hrms.bean.HrmEmpDiscActionHdrBean + 10 + + + HrmEmpDiscAction + arrEmpDisc + wenrgise.hrms.businessdelegate.HrmEmpDiscActionBD + wenrgise.hrms.bean.HrmEmpDiscActionDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmLvMstForm + wenrgise.hrms.vo.HrmLvMstQVO + wenrgise.hrms.businessdelegate.HrmLvMstBD + wenrgise.hrms.bean.HrmLvMstHdrBean + 20 + + + HrmLeaveMaster + arylstLvMst + wenrgise.hrms.businessdelegate.HrmLvMstBD + wenrgise.hrms.bean.HrmLvMstDtlBean + 5 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmLvLedgerForm + wenrgise.hrms.vo.HrmLvLedgerQVO + wenrgise.hrms.businessdelegate.HrmLvLedgerBD + wenrgise.hrms.bean.HrmLvLedgerHdrBean + 10 + Y + + + HrmEmployeeLeaveLedger + arylstLvLedger + wenrgise.hrms.businessdelegate.HrmLvLedgerBD + wenrgise.hrms.bean.HrmLvLedgerDtlBean + 5 + 10 + + + HrmEmployeeLeaveLedgerDtl2 + arylstLvLedgerTrans + wenrgise.hrms.businessdelegate.HrmLvLedgerBD + wenrgise.hrms.bean.HrmLvLedgerTransDtlBean + 7 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmLvApplnQueryForm + wenrgise.hrms.vo.HrmLvApplnQueryQVO + wenrgise.hrms.businessdelegate.HrmLvApplnQueryBD + wenrgise.hrms.bean.HrmLvApplnQueryHdrBean + 10 + Y + + + HrmLeaveAppQuery + arylstLvApplnQuery + wenrgise.hrms.businessdelegate.HrmLvApplnQueryBD + wenrgise.hrms.bean.HrmLvApplnQueryDtlBean + + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmLvApplnForm + wenrgise.hrms.vo.HrmLvApplnQVO + wenrgise.hrms.businessdelegate.HrmLvApplnBD + wenrgise.hrms.bean.HrmLvApplnHdrBean + 100 + + + HrmLvAppln + arylstLvAppln + wenrgise.hrms.businessdelegate.HrmLvApplnBD + wenrgise.hrms.bean.HrmLvApplnDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmLvCancQueryForm + wenrgise.hrms.vo.HrmLvCancQueryQVO + wenrgise.hrms.businessdelegate.HrmLvCancQueryBD + wenrgise.hrms.bean.HrmLvCancQueryHdrBean + 10 + Y + + + HrmEmployeeLeaveCancellationQueryScreen + arylstLvCnclQuery + wenrgise.hrms.businessdelegate.HrmLvCancQueryBD + wenrgise.hrms.bean.HrmLvCancQueryDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmLvCancForm + wenrgise.hrms.vo.HrmLvCancQVO + wenrgise.hrms.businessdelegate.HrmLvCancBD + wenrgise.hrms.bean.HrmLvCancHdrBean + 20 + + + HrmEmployeeLeaveCancellationBatchScreen + arylstLvCancQuery + wenrgise.hrms.businessdelegate.HrmLvCancBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmLvEncashForm + wenrgise.hrms.vo.HrmLvEncashQVO + wenrgise.hrms.businessdelegate.HrmLvEncashBD + wenrgise.hrms.bean.HrmLvEncashHdrBean + 10 + + + HrmEmpLeaveEncashment + arrLeaveEncsh + wenrgise.hrms.businessdelegate.HrmLvEncashBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmLvCreditForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmLvCreditBD + wenrgise.hrms.bean.HrmLvCreditHdrBean + 2 + + + HrmLvCredit + detailList + wenrgise.hrms.businessdelegate.HrmLvCreditBD + + + + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransOrderForSingleEmpForm + wenrgise.hrms.vo.HrmATDTransSingleEmpQVO + wenrgise.hrms.businessdelegate.HrmATDTransOrderForSingleEmpBD + wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean + 10 + + + HrmATDTransOrderForSingleEmp + arrTransOrderDtl + wenrgise.hrms.businessdelegate.HrmATDTransOrderForSingleEmpBD + wenrgise.common.bean.BaseDetailBean + 1 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransApplForm + wenrgise.hrms.vo.HrmATDTransApplQVO + wenrgise.hrms.businessdelegate.HrmATDTransApplBD + wenrgise.hrms.bean.HrmTransferApplicationHdrBean + 10 + + + HrmATDTransAppl + arrTrnsfrApp + wenrgise.hrms.businessdelegate.HrmATDTransApplBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransChrgRptForm + wenrgise.hrms.vo.HrmATDTransChrgRptQVO + wenrgise.hrms.businessdelegate.HrmATDTransChrgRptBD + wenrgise.hrms.bean.HrmChargeReportHdrBean + 10 + + + HrmATDTransChrgRpt + arrChargeRpt + wenrgise.hrms.businessdelegate.HrmATDTransChrgRptBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransCnclApplForm + wenrgise.hrms.vo.HrmATDTransCnclApplQVO + wenrgise.hrms.businessdelegate.HrmATDTransCnclApplBD + wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean + 10 + + + HrmATDTransCnclAppl + arrTrnsfrCnclApp + wenrgise.hrms.businessdelegate.HrmATDTransCnclApplBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDTransCnclOrderSingleEmpForm + wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO + wenrgise.hrms.businessdelegate.HrmATDTransCnclOrderForSingleEmpBD + wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean + 10 + + + HrmATDTransCnclOrderForSingleEmp + arrHrmTrntApp + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDDptnApplForm + wenrgise.hrms.vo.HrmATDDptnApplQVO + wenrgise.hrms.businessdelegate.HrmATDDptnApplBD + wenrgise.hrms.bean.HrmDeputationApplicationHdrBean + 10 + + + HrmATDDptnAppl + arrHrmDeputApp + wenrgise.hrms.businessdelegate.HrmATDDptnApplBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDDptnOrderForSingleEmpForm + wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO + wenrgise.hrms.businessdelegate.HrmATDDptnOrderForSingleEmpBD + wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean + 10 + + + HrmATDDptnOrderForSingleEmp + arrDeputOrderDtl + wenrgise.hrms.businessdelegate.HrmATDDptnOrderForSingleEmpBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmATDDptnChrgRptForm + wenrgise.hrms.vo.HrmATDDptnChrgRptQVO + wenrgise.hrms.businessdelegate.HrmATDDptnChrgRptBD + wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean + 10 + + + HrmATDDptnChrgRpt + arrDepChargeRpt + wenrgise.hrms.businessdelegate.HrmATDDptnChrgRptBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmLnMstForm + wenrgise.hrms.vo.HrmLnMstQVO + wenrgise.hrms.businessdelegate.HrmLnMstBD + wenrgise.hrms.bean.HrmLnMstHdrBean + 10 + + + HrmLnMst + arrHrmLoanMstDtl + wenrgise.hrms.businessdelegate.HrmLnMstBD + wenrgise.hrms.bean.HrmLnMstDtlBean + 10 + 10 + + + + + + + + wenrgise.hrms.webtier.form.HrmLnChartForm + wenrgise.hrms.vo.HrmLnChartQVO + wenrgise.hrms.businessdelegate.HrmLnChartBD + wenrgise.hrms.bean.HrmLnChartHdrBean + 10 + + + HrmLnChart + arrHrmLoanChartDtl + wenrgise.hrms.businessdelegate.HrmLnChartBD + wenrgise.hrms.bean.HrmLnChartDtlBean + 10 + 10 + + + + + + + + wenrgise.hrms.webtier.form.HrmLnAppForm + wenrgise.hrms.vo.HrmLnAppQVO + wenrgise.hrms.businessdelegate.HrmLnAppBD + wenrgise.hrms.bean.HrmLnAppHdrBean + 10 + + + HrmLnApp + arrLoanDisburse + wenrgise.hrms.businessdelegate.HrmLnAppBD + wenrgise.hrms.bean.HrmLnDisDtlBean + 10 + 12 + + + HrmLnAppHblIntRate + arrHblIntRate + wenrgise.hrms.businessdelegate.HrmLnAppBD + wenrgise.hrms.bean.HrmLnHblIntDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAdvMstForm + wenrgise.hrms.vo.HrmAdvMstQueryVO + wenrgise.hrms.businessdelegate.HrmAdvMstBD + wenrgise.hrms.bean.HrmAdvanceMstHdrBean + 10 + + + HrmAdvanceMaster + arrAdvance + wenrgise.hrms.businessdelegate.HrmAdvMstBD + wenrgise.hrms.bean.HrmAdvanceMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmSettlementHeadsForm + wenrgise.hrms.vo.HrmSettleQueryVO + wenrgise.hrms.businessdelegate.HrmSettleBD + wenrgise.hrms.bean.HrmSettleHdrBean + 10 + + + HrmSettlementHeads + arrSettleHeads + wenrgise.hrms.businessdelegate.HrmSettleBD + wenrgise.hrms.bean.HrmSettleDtlBean + 10 + 10 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAdvApplnForm + wenrgise.hrms.vo.HrmEmpAdvAppQueryVO + wenrgise.hrms.businessdelegate.HrmEmpAdvAppBD + wenrgise.hrms.bean.HrmEmpAdvAppHdrBean + 50 + + + HrmEmpAdvance + arrEmpAdvApplcn + wenrgise.hrms.businessdelegate.HrmEmpAdvAppBD + wenrgise.common.bean.BaseDetailBean + 50 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAdvSettleForm + wenrgise.hrms.vo.HrmAdvSettleQVO + wenrgise.hrms.businessdelegate.HrmAdvSettleBD + wenrgise.hrms.bean.HrmAdvSettleHdrBean + 50 + + + HrmAdvanceSettle + arylstAdvSettle + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 50 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAdvSettleHeadsForm + wenrgise.hrms.vo.HrmAdvSettleHeadsQVO + wenrgise.hrms.businessdelegate.HrmAdvSettleHeadsBD + wenrgise.hrms.bean.HrmAdvSettleHeadsHdrBean + 10 + N + + + HrmAdvSettlementHeads + arylstSettleHeads + wenrgise.hrms.businessdelegate.HrmAdvSettleHeadsBD + wenrgise.hrms.bean.HrmAdvSettleHeadsDtlBean + 50 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmClaimMstForm + wenrgise.hrms.vo.HrmClaimMstQVO + wenrgise.hrms.businessdelegate.HrmClaimMstBD + wenrgise.hrms.bean.HrmClaimMstHdrBean + 10 + + + HrmClaimMst + arylstHrmClaimMst + wenrgise.hrms.businessdelegate.HrmClaimMstBD + wenrgise.hrms.bean.HrmClaimMstDtlBean + 50 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmEmpClaimForm + wenrgise.hrms.vo.HrmEmpClaimQVO + wenrgise.hrms.businessdelegate.HrmEmpClaimBD + wenrgise.hrms.bean.HrmEmpClaimHdrBean + 10 + Y + + + HrmEmpClaim + arylstHrmEmpClaim + wenrgise.hrms.businessdelegate.HrmEmpClaimBD + wenrgise.hrms.bean.HrmEmpClaimDtlBean + 50 + 12 + + + + + + + + + + wenrgise.hrms.webtier.form.HrmTrngCalForm + wenrgise.hrms.vo.HrmTrngCalQVO + wenrgise.hrms.businessdelegate.HrmTrngCalBD + wenrgise.hrms.bean.HrmTrngCalHdrBean + 10 + + + HrmTrngCal + arrHrmTrngCal + wenrgise.hrms.businessdelegate.HrmTrngCalBD + wenrgise.hrms.bean.HrmTrngCalDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngCrsMstForm + wenrgise.hrms.vo.HrmTrngCrsMstQVO + wenrgise.hrms.businessdelegate.HrmTrngCrsMstBD + wenrgise.hrms.bean.HrmTrngCrsMstHdrBean + 100 + + + HrmTrngCrsMst + arrHrmTrngCourse + wenrgise.hrms.businessdelegate.HrmTrngCrsMstBD + wenrgise.hrms.bean.HrmTrngCrsMstDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngBudgetForm + wenrgise.hrms.vo.HrmTrngCrsBudQVO + wenrgise.hrms.businessdelegate.HrmTrngCrsBudBD + wenrgise.hrms.bean.HrmTrngCrsBudHdrBean + 200 + + + HrmTrngBudget + arrHrmTrngBud + wenrgise.hrms.businessdelegate.HrmTrngCrsBudBD + wenrgise.hrms.bean.HrmTrngCrsBudDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngInstCourseDtlForm + wenrgise.hrms.vo.HrmTrngInsCrsQVO + wenrgise.hrms.businessdelegate.HrmTrngInsCrsBD + wenrgise.hrms.bean.HrmTrngInsCrsHdrBean + 10 + + + HrmTrngInstCourseDtl + arrHrmTrngCrsDtl + wenrgise.hrms.businessdelegate.HrmTrngInsCrsBD + wenrgise.hrms.bean.HrmTrngInsCrsDtlbean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacTrngDtlForm + wenrgise.hrms.vo.HrmTrngFacTrngQVO + wenrgise.hrms.businessdelegate.HrmTrngFacTrngBD + wenrgise.hrms.bean.HrmTrngFacTrngHdrBean + 10 + + + HrmTrngFacTrngDtl + arrHrmFacTrngDtl + wenrgise.hrms.businessdelegate.HrmTrngFacTrngBD + wenrgise.hrms.bean.HrmTrngFacTrngDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacMstForm + wenrgise.hrms.vo.HrmTrngFacQVO + wenrgise.hrms.businessdelegate.HrmTrngFacBD + wenrgise.hrms.bean.HrmTrngFacBean + 100 + + + HrmTrngFacMst + arrFacultyMaster + wenrgise.hrms.businessdelegate.HrmTrngFacBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpReqForm + wenrgise.hrms.vo.HrmTrngEmpReqQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpReqBD + wenrgise.hrms.bean.HrmTrngEmpReqHdrBean + 10 + + + HrmTrngEmpReq + arrApprovedDates + wenrgise.hrms.businessdelegate.HrmTrngEmpReqBD + wenrgise.hrms.bean.HrmTrngEmpReqDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpHistForm + wenrgise.hrms.vo.HrmTrngEmpHistQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpHistBD + wenrgise.hrms.bean.HrmTrngEmpHistHdrBean + 5200 + + + HrmTrngEmpHist + arrEmpTrngHist + wenrgise.hrms.businessdelegate.HrmTrngEmpHistBD + wenrgise.hrms.bean.HrmTrngEmpHistDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpAttForm + wenrgise.hrms.vo.HrmTrngEmpAttQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpAttBD + wenrgise.hrms.bean.HrmTrngEmpAttHdrBean + 10 + + + HrmTrngEmpAtt + arrTrngEmpAtt + wenrgise.hrms.businessdelegate.HrmTrngEmpAttBD + wenrgise.hrms.bean.HrmTrngEmpAttDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacFeedbackForm + wenrgise.hrms.vo.HrmTrngFacFdbkQVO + wenrgise.hrms.businessdelegate.HrmTrngFacFeedBackBD + wenrgise.hrms.bean.HrmTrngFacFBHdrBean + 10 + Y + + + HrmTrngFacFeedBack + arrFacFeedBack + wenrgise.hrms.businessdelegate.HrmTrngFacFeedBackBD + wenrgise.hrms.bean.HrmTrngFacFBDtlBean + + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngFacFeedBackDtlForm + wenrgise.hrms.vo.HrmTrngFacFdbkQueryVO + wenrgise.hrms.businessdelegate.HrmTrngFacFdbkDtlBD + wenrgise.hrms.bean.HrmTrngFacFeedBackHdrBean + 10 + + + HrmTrngFacFdbkDtl + arrFacFeedBackNextDtl + wenrgise.hrms.businessdelegate.HrmTrngFacFdbkDtlBD + wenrgise.hrms.bean.HrmTrngFacFdbkDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngEmpFeedBackForm + wenrgise.hrms.vo.HrmTrngEmpFbkQVO + wenrgise.hrms.businessdelegate.HrmTrngEmpFeedBackBD + wenrgise.hrms.bean.HrmTrngEmpFeedBackHdrBean + 10 + + + HrmTrngEmpFeedBack + arrEmpFeedBack + wenrgise.hrms.businessdelegate.HrmTrngEmpFeedBackBD + wenrgise.hrms.bean.HrmTrngEmpFeedBackDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmTrngCalCloseForm + wenrgise.hrms.vo.HrmTrngCalCloseQueryVO + wenrgise.hrms.businessdelegate.HrmTrngCalCloseBD + wenrgise.hrms.bean.HrmTrngCalCloseHdrBean + 10 + + + HrmTrngCalClose + arrHrmTrnCalClose + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAprslForm + wenrgise.hrms.vo.HrmAprslQVO + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslHdrBean + 10 + + + HrmAprslKPA + arylstEmpAprslKPA + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslKPADtlBean + 5 + 12 + + + HrmAprslGoals + arylstEmpAprslGoals + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslGoalsDtlBean + 5 + 12 + + + HrmAprslTrngReq + arylstEmpAprsTrngReq + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslTrngReqDtlBean + 5 + 12 + + + HrmAprslEmpDtls + arrHrmEmpDtl + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslEmpDtlsBean + 5 + 12 + + + HrmAprslEmployee + arrHrmEmpAprslDtl + wenrgise.hrms.businessdelegate.HrmAprslBD + wenrgise.hrms.bean.HrmAprslEmployeeBean + 5 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAppraisalKPAForm + wenrgise.hrms.vo.HrmAppraisalKPAQVO + wenrgise.hrms.businessdelegate.HrmApprisalKPABD + wenrgise.hrms.bean.HrmAppraisalKPAHdrBean + 10 + + + HrmAppraisalKPA + arylstAppraisalKpa + wenrgise.hrms.businessdelegate.HrmApprisalKPABD + wenrgise.hrms.bean.HrmAppraisalKPADtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAppraisalTemplateForm + wenrgise.hrms.vo.HrmAppTempQueryVO + wenrgise.hrms.businessdelegate.HrmAppTempBD + wenrgise.hrms.bean.HrmAppTempHdrBean + 10 + + + HrmAppraisalTemplateSection + arrAppTempSec + wenrgise.hrms.businessdelegate.HrmAppTempBD + wenrgise.hrms.bean.HrmAppraisalTemplateSecDtlBean + 10 + 12 + + + HrmAppraisalTemplateKPA + arrAppTempKPA + wenrgise.hrms.businessdelegate.HrmAppTempBD + wenrgise.hrms.bean.HrmAppraisalTemplateKpaDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAprslSpcTmplForm + wenrgise.hrms.vo.HrmAprslSpcTmplQVO + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean + 10 + + + HrmAprslSpcTmpl + arylstAprslSpcTempKpa + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplDtlBean + 10 + 12 + + + HrmAprslSpcTmplGoals + arylstAprslSpcTempGoals + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplGoalDtlBean + 10 + 12 + + + HrmAprslSpcTmplEmpElig + arylstAprslSpcTempEmpElig + wenrgise.hrms.businessdelegate.HrmAprslSpcTmplBD + wenrgise.hrms.bean.HrmAprslSpcTmplEmpEligDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAprslStartOrderForm + wenrgise.hrms.vo.HrmAprslStartOrderQVO + wenrgise.hrms.businessdelegate.HrmAprslStartOrderBD + wenrgise.hrms.bean.HrmAprslStartOrderHdrBean + 10 + + + HrmAprslStartOrder + arryListAprslStOrder + wenrgise.hrms.businessdelegate.HrmAprslStartOrderBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAprslStartRuleForm + wenrgise.hrms.vo.HrmAprslStartRuleQVO + wenrgise.hrms.businessdelegate.HrmAprslStartRuleBD + wenrgise.hrms.bean.HrmAprslStartRuleHdrBean + 10 + + + HrmAprslStartRule + arylstAprslStarRule + wenrgise.hrms.businessdelegate.HrmAprslStartRuleBD + wenrgise.hrms.bean.HrmAprslStartRuleDtlBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmSepClrTmplMstForm + wenrgise.hrms.vo.HrmSepClrTmplMstQVO + wenrgise.hrms.businessdelegate.HrmSepClrTmplMstBD + wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean + 100 + + + HrmSepClrTmplMst + arrHrmSepClrTmplMst + wenrgise.hrms.businessdelegate.HrmSepClrTmplMstBD + wenrgise.hrms.bean.HrmSepClrTmplMstDtlBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepClrEmpForm + wenrgise.hrms.vo.HrmSepClrEmpQVO + wenrgise.hrms.businessdelegate.HrmSepClrEmpBD + wenrgise.hrms.bean.HrmSepClrEmpHdrBean + 100 + + + HrmSepClrEmp + arrHrmSepClrEmp + wenrgise.hrms.businessdelegate.HrmSepClrEmpBD + wenrgise.hrms.bean.HrmSepClrEmpDtlBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepCatMstForm + wenrgise.hrms.vo.HrmSepCatMstQVO + wenrgise.hrms.businessdelegate.HrmSepCatMstBD + wenrgise.hrms.bean.HrmSepCatMstHdrBean + 100 + + + HrmSepCatMst + arrHrmSepCat + wenrgise.hrms.businessdelegate.HrmSepCatMstBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmSepEmpClrForm + wenrgise.hrms.vo.HrmSepEmpClrQVO + wenrgise.hrms.businessdelegate.HrmSepEmpClrBD + wenrgise.hrms.bean.HrmSepEmpClrHdrBean + 10 + + + HrmSepEmpClr + arrEmpClrnce + wenrgise.hrms.businessdelegate.HrmSepEmpClrBD + wenrgise.hrms.bean.HrmSepEmpClrDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepEmployeeSeparationBatchScreenForm + wenrgise.hrms.vo.HrmSeparationBatchQueryVO + wenrgise.hrms.businessdelegate.HrmEmpSepBatBD + wenrgise.hrms.bean.HrmSepEmpSepBatchHdrBean + 10 + + + HrmSepEmployeeSeparation + arrEmpSeparation + wenrgise.hrms.businessdelegate.HrmEmpSepBatBD + wenrgise.hrms.bean.HrmSepEmpSepBatchDtlBean + + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepChrgRptForm + wenrgise.hrms.vo.HrmSepChrgRptQVO + wenrgise.hrms.businessdelegate.HrmSepChrgRptBD + wenrgise.hrms.bean.HrmSepChrgRptHdrBean + 10 + + + HrmSepChrgRpt + arrChargeRpt + wenrgise.common.businessdelegate.BaseBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepDeptClrListForm + wenrgise.hrms.vo.HrmSepDepClrQueryVO + wenrgise.hrms.businessdelegate.HrmSepDepClrBD + wenrgise.hrms.bean.HrmSepDeptClrncHdrBean + 10 + + + HrmSepDepClrList + arylstDeptClr + wenrgise.hrms.businessdelegate.HrmSepDepClrBD + wenrgise.hrms.bean.HrmSepDeptClrncDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepApplnForm + wenrgise.hrms.vo.HrmSepApplnQVO + wenrgise.hrms.businessdelegate.HrmSepApplnBD + wenrgise.hrms.bean.HrmSepApplnHdrBean + 10 + + + HrmSeparationAppln + arylstSepAppln + wenrgise.hrms.businessdelegate.HrmSepApplnBD + wenrgise.hrms.bean.HrmSepApplnDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmSepClrLstForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmSepClrLstBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmSepClrLst + arrHrmSepClrLst + wenrgise.hrms.businessdelegate.HrmSepClrLstBD + wenrgise.hrms.bean.HrmSepClrLstDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmSepOrderForm + wenrgise.hrms.vo.HrmSepOrderQVO + wenrgise.hrms.businessdelegate.HrmSepOrderBD + wenrgise.hrms.bean.HrmSepOrderHdrBean + 10 + + + HrmSepOrder + arylstHrmSepOrder + wenrgise.hrms.businessdelegate.HrmSepOrderBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmRecAdvtMtnForm + wenrgise.hrms.vo.HrmRecAdvtMtnQVO + wenrgise.hrms.businessdelegate.HrmRecAdvtMtnBD + wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean + 10 + + + HrmRecAdvtMtn + arrHrmAdvMtn + wenrgise.hrms.businessdelegate.HrmRecAdvtMtnBD + wenrgise.hrms.bean.HrmRecAdvtMtnDtlBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.HrmRecTestCentreMstForm + wenrgise.hrms.vo.HrmRecTestCentreMstQVO + wenrgise.hrms.businessdelegate.HrmRecTestCentreMstBD + wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean + 10 + + + HrmTestCentreMaster + arrHrmTestCentre + wenrgise.hrms.businessdelegate.HrmRecTestCentreMstBD + wenrgise.common.bean.BaseDetailBean + 10 + 10 + + + + + + + + wenrgise.hrms.webtier.form.HrmRecAdvAttrForm + wenrgise.hrms.vo.HrmSepCnclApplnQVO + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrHdrBean + 10 + + + HrmRecAdvAttrLocVacencyDtl + arylstHrmAdvLocVacencyDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrLocVacencyDtlBean + 10 + 12 + + + HrmRecAdvAttrLngReqDtl + arylstHrmAdvLngReqDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrLngReqDtlBean + 10 + 12 + + + HrmRecAdvAttrQualReqDtl + arylstHrmAdvQualReqDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrQualReqDtlBean + 10 + 12 + + + HrmRecAdvAttrSkillReqDtl + arylstHrmAdvSkillReqDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrSkillReqDtlBean + 10 + 12 + + + HrmRecAdvAttrWorkExpDtl + arylstHrmAdvWorkExpDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrWorkExpDtlBean + 10 + 12 + + + HrmRecAdvAttrJobDesc + arylstHrmAdvJobDescDtl + wenrgise.hrms.businessdelegate.HrmRecAdvAttrBD + wenrgise.hrms.bean.HrmRecAdvAttrJobDescDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmRecEmpRecCreationForm + wenrgise.hrms.vo.HrmRecEmpRecCreationQVO + wenrgise.hrms.businessdelegate.HrmRecEmpRecCreationBD + wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean + 10 + + + HrmEmpRecCreation + arylstRecCreation + wenrgise.hrms.businessdelegate.HrmRecEmpRecCreationBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmRecApplnMtnForm + wenrgise.hrms.vo.HrmRecApplnMtnQVO + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnHdrBean + 10 + + + HrmRecApplnMtnAddDtl + arylstHrmRecApplnMtnAddDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnAddDtlBean + 1 + 12 + + + + HrmRecApplnMtnExpDtl + arylstHrmRecApplnMtnExpDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnExpDtlBean + 10 + 12 + + + HrmRecApplnMtnLangDtl + arylstHrmRecApplnMtnLangDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnLangDtlBean + 10 + 12 + + + HrmRecApplnMtnEduDtl + arylstHrmRecApplnMtnEduDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnEduDtlBean + 10 + 12 + + + HrmRecApplnMtnResultDtl + arylstHrmRecApplnMtnResultDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnResultDtlBean + 1 + 12 + + + HrmRecApplnMtnOtherDtl + arylstHrmRecApplnMtnOtherDtl + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnOtherDtlBean + 1 + 12 + + + HrmRecApplnMtnRef + arylstHrmRecApplnMtnRef + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnRefDtlBean + 10 + 12 + + + HrmRecApplnMtnTrngDtls + arylstHrmRecApplnMtnTrngDtls + wenrgise.hrms.businessdelegate.HrmRecApplnMtnBD + wenrgise.hrms.bean.HrmRecApplnMtnTrngDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmRecScrutAppMtnForm + wenrgise.hrms.vo.HrmRecScrutAppMntQVO + wenrgise.hrms.businessdelegate.HrmRecScrutAppMntBD + wenrgise.hrms.bean.HrmRecScrutAppMtnHdrBean + 10 + Y + + + HrmScrutinizingApplicant + arylstScrutApplDtl + wenrgise.hrms.businessdelegate.HrmRecScrutAppMntBD + wenrgise.hrms.bean.HrmRecScrutAppMtnDtlBean + + 10 + 5 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmOrderForm + wenrgise.hrms.vo.HrmPrmOrderQVO + wenrgise.hrms.businessdelegate.HrmPrmOrderBD + wenrgise.hrms.bean.HrmPrmOrderHdrBean + 10 + + + HrmPrmOrder + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmOrderBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmKPARatingForm + wenrgise.hrms.vo.HrmPrmKPARatingQVO + wenrgise.hrms.businessdelegate.HrmPrmKPARatingBD + wenrgise.hrms.bean.HrmPrmKPARatingHdrBean + 10 + + + HrmPrmKPARating + arylstPoswiseRate + wenrgise.hrms.businessdelegate.HrmPrmKPARatingBD + wenrgise.hrms.bean.HrmPrmKPAPoswiseDtlBean + 10 + 12 + + + + HrmPrmKPARatingF + arylstFinalRate + wenrgise.hrms.businessdelegate.HrmPrmKPARatingBD + wenrgise.hrms.bean.HrmPrmKPAFinalDtlBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmTestScoreForm + wenrgise.hrms.vo.HrmPrmTestScoreQVO + wenrgise.hrms.businessdelegate.HrmPrmTestScoreBD + wenrgise.hrms.bean.HrmPrmTestScoreHdrBean + 10 + + + HrmPrmTestScore + aryLstPrmTestScore + wenrgise.hrms.businessdelegate.HrmPrmTestScoreBD + wenrgise.hrms.bean.HrmPrmTestScoreDtlBean + 5 + 12 + + + + + wenrgise.hrms.webtier.form.HrmPrmExperienceScoreForm + wenrgise.hrms.vo.HrmPrmExperienceScoreQVO + wenrgise.hrms.businessdelegate.HrmPrmExperienceScoreBD + wenrgise.hrms.bean.HrmPrmExperienceHdrBean + 10 + Y + Y + + + HrmPrmExperienceScore + aryLstDtlBean + wenrgise.hrms.businessdelegate.HrmPrmExperienceScoreBD + wenrgise.hrms.bean.HrmPrmExperienceDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmPrmQualCriteriaForm + wenrgise.hrms.vo.HrmPrmQualCriteriaQVO + wenrgise.hrms.businessdelegate.HrmPrmQualCriteriaBD + wenrgise.hrms.bean.HrmPrmQualCriteriaHdrBean + 10 + Y + Y + + + HrmPrmQualCriteria + arylstHrmPrmQualCriteriaDtl + wenrgise.hrms.businessdelegate.HrmPrmQualCriteriaBD + wenrgise.hrms.bean.HrmPrmQualCriteriaDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmCriteriaForm + wenrgise.hrms.vo.HrmPrmCriteriaQVO + wenrgise.hrms.businessdelegate.HrmPrmCriteriaBD + wenrgise.hrms.bean.HrmPrmCriteriaHdrBean + 10 + Y + Y + + + HrmPrmCriteria + arrPrmCriteria + wenrgise.hrms.businessdelegate.HrmPrmCriteriaBD + wenrgise.hrms.bean.HrmPrmCriteriaDtlBean + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmViewAssForm + wenrgise.hrms.vo.HrmPrmViewAssQVO + wenrgise.hrms.businessdelegate.HrmPrmViewAssBD + wenrgise.hrms.bean.HrmPrmViewAssHdrBean + 10 + + + HrmPrmViewAss + arylstPrmViewAss + wenrgise.hrms.businessdelegate.HrmPrmViewAssBD + wenrgise.hrms.bean.HrmPrmViewAssDtlBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmPrmNoticeDetailForm + wenrgise.hrms.vo.HrmPrmNoticeDtlQVO + wenrgise.hrms.businessdelegate.HrmPrmNoticeDtlBD + wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean + 10 + + + HrmPrmNoticeDtl + arylstNoticeDtl + wenrgise.hrms.businessdelegate.HrmPrmNoticeDtlBD + wenrgise.hrms.bean.HrmPrmNoticeDtlDtlBean + 5 + 12 + + + + + + + Y + wenrgise.hrms.webtier.form.HrmPrmGenAssForm + wenrgise.hrms.vo.HrmPrmGenAssQVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmPrmGenAssHdrBean + 10 + + + HrmPrmGenAss + arrHrmPrmGenAss + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.RepAllIndiaManpowerForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepAllIndiaManpowerScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepConfirmationDueForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepConfirmationDueScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepDistnOfManpowerForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepDistnOfManpowerScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepStaffingListEmpForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepStaffingListEmpScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepQualAllIndiaEmpForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepQualAllIndiaEmpScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepStatusOfDiscCasesForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepStatusOfDiscCasesScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepHistOfEmpForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepHistOfEmpScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepJoiningStatusForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepJoiningStatusScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRecrCessStatusForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRecrCessStatusScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRecrVisAVisSepForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRecrVisAVisSepScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRecruitmentListForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRecruitmentListScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepCessationListForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepCessationListScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepMTExecDetailsForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepMTExecDetailsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRetirementDetailsForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRetirementDetailsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepTrainingDetailsForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepTrainingDetailsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepConfidentialFileForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepConfidentialFileScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepRatingVisAVisAwardForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepRatingVisAVisAwardsScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepOfficersRatedPoorForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepOfficersRatedPoorScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.RepPerformanceAppraisalForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepPerformanceAppraisalScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepGrossSalExecForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepPromotionListScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepCostToCompanyForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepCostToCompanyScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepGrossSalExecForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepGrossSalExecScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepImpactFinYearForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepImpactFinYearScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + wenrgise.hrms.webtier.form.RepManpowerMediclaimForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + RepManpowerMediclaimScreen + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmAdhocReportForm + wenrgise.hrms.vo.HrmAdhocReportQVO + wenrgise.hrms.businessdelegate.HrmAdhocReportBD + wenrgise.hrms.bean.HrmAdhocReportHdrBean + 10 + + + HrmAdhocReport + arylstAdhocReport + wenrgise.hrms.businessdelegate.HrmAdhocReportBD + wenrgise.common.bean.BaseDetailBean + 10 + 10 + + + + + + + wenrgise.hrms.webtier.form.ReportInputForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 10 + + + RepIncrDue + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 5 + 12 + + + + + wenrgise.hrms.webtier.form.ReportInputForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 10 + + + RepRetrDue + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmPrmGenAssBD + wenrgise.hrms.bean.HrmReportBean + 5 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttWorkGroupShiftForm + wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO + wenrgise.hrms.businessdelegate.HrmAttWorkGroupShiftBD + wenrgise.hrms.bean.HrmAttWorkGroupShiftHdrBean + 10 + Y + N + + + HrmAttWorkGroupShift + arrHrmAttWrkGrpShift + wenrgise.hrms.businessdelegate.HrmAttWorkGroupShiftBD + wenrgise.hrms.bean.HrmAttWorkGroupShiftDtlBean + + 10 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpShiftForm + wenrgise.hrms.vo.HrmAttEmpShiftQVO + wenrgise.hrms.businessdelegate.HrmAttEmpShiftBD + wenrgise.hrms.bean.HrmAttEmpShiftHdrBean + 10 + Y + N + + + HrmAttEmpShift + arrHrmAttESD + wenrgise.hrms.businessdelegate.HrmAttEmpShiftBD + wenrgise.hrms.bean.HrmAttEmpShiftDtlBean + + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttShiftMasterForm + wenrgise.hrms.vo.HrmAttShiftMstQVO + wenrgise.hrms.businessdelegate.HrmAttShiftMstBD + wenrgise.hrms.bean.HrmAttShiftMstHdrBean + 20 + + + HrmAttShiftMst + detailList + wenrgise.hrms.businessdelegate.HrmAttShiftMstBD + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpAttQueryForm + wenrgise.hrms.vo.HrmAttEmpAttQueryQVO + wenrgise.hrms.businessdelegate.HrmAttEmpAttQueryBD + wenrgise.hrms.bean.HrmAttEmpAttQueryHdrBean + 10 + + + HrmAttEmpAttQuery + arylstAttndDtls + wenrgise.hrms.businessdelegate.HrmAttEmpAttQueryBD + wenrgise.hrms.bean.HrmAttEmpAttQueryDtlBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpAttInForm + wenrgise.hrms.vo.HrmAttEmpAttInQVO + wenrgise.hrms.businessdelegate.HrmAttEmpInBD + wenrgise.hrms.bean.HrmAttEmpAttInHdrBean + 10 + + + HrmAttEmpAttIn + arylstAttndDtls + wenrgise.hrms.businessdelegate.HrmAttEmpInBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpAttOutForm + wenrgise.hrms.vo.HrmAttEmpAttOutQVO + wenrgise.hrms.businessdelegate.HrmAttEmpAttOutBD + wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean + 10 + + + HrmAttEmpAttOut + arylstAttndDtls + wenrgise.hrms.businessdelegate.HrmAttEmpAttOutBD + wenrgise.common.bean.BaseDetailBean + 10 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmployeeShiftRosterForm + wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO + wenrgise.hrms.businessdelegate.HrmAttEmployeeShiftRosterBD + wenrgise.hrms.bean.HrmAttEmpShiftRosterHdrBean + 10 + Y + + + HrmAttEmpShiftRoster + arylstEmpShiftRosterDtl + wenrgise.hrms.businessdelegate.HrmAttEmployeeShiftRosterBD + wenrgise.hrms.bean.HrmAttEmpShiftRosterDtlBean + + 10 + 12 + + + + + + + + + + wenrgise.hrms.webtier.form.HrmAttShiftRosterGenForm + wenrgise.hrms.vo.HrmAttShiftRosterGenQVO + wenrgise.hrms.businessdelegate.HrmAttShiftRosterGenBD + wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean + 10 + + + HrmAttShiftRosterGen + arrHrmAttShiftRosterGenDtl + wenrgise.hrms.businessdelegate.HrmAttShiftRosterGenBD + wenrgise.hrms.bean.HrmAttShiftRosterGenBean + + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAttAbsentListGenForm + wenrgise.hrms.vo.HrmAttAbsentListGenQVO + wenrgise.hrms.businessdelegate.HrmAttAbsentListGenBD + wenrgise.hrms.bean.HrmAttAbsentListGenHdrBean + 10 + + + HrmAttAbsentListGen + arrHrmAttShiftAbsGenDtl + wenrgise.hrms.businessdelegate.HrmAttAbsentListGenBD + wenrgise.hrms.bean.HrmAttAbsentListGenBean + + 5 + 12 + + + + + + + + wenrgise.hrms.webtier.form.HrmAttEmpDayOffForm + wenrgise.hrms.vo.HrmAttEmpDayOffQVO + wenrgise.hrms.businessdelegate.HrmAttEmpDayOffBD + wenrgise.hrms.bean.HrmAttEmpDayOffHdrBean + 10 + Y + N + + + HrmAttEmpDayOff + arylstAttEmpDayOff + wenrgise.hrms.businessdelegate.HrmAttEmpDayOffBD + wenrgise.hrms.bean.HrmAttEmpDayOffDtlBean + + 50 + 12 + + + + + + + wenrgise.hrms.webtier.form.HrmAttWorkGroupDayOffForm + wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO + wenrgise.hrms.businessdelegate.HrmAttWorkGroupDayOffBD + wenrgise.hrms.bean.HrmAttWorkGroupDayOffHdrBean + 10 + Y + N + + + HrmAttWorkGroupDayOff + arrAttWrkGrpDO + wenrgise.hrms.businessdelegate.HrmAttWorkGroupDayOffBD + wenrgise.hrms.bean.HrmAttWorkGroupDayOffDtlBean + + 10 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmMisReportForm + wenrgise.hrms.vo.HrmMisreportQVO + wenrgise.hrms.businessdelegate.HrmMisReportBD + wenrgise.hrms.bean.HrmMisReportHdrBean + 10 + Y + N + + + HrmMisReport + arrMisReport + wenrgise.hrms.businessdelegate.HrmMisReportBD + wenrgise.hrms.bean.HrmMisReportDtlBean + 10 + 12 + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmRetireForecastForm + wenrgise.hrms.vo.HrmRetireForecastQVO + wenrgise.hrms.businessdelegate.HrmRetireForecastBD + wenrgise.hrms.bean.HrmRetireForecastHdrBean + 10 + + + HrmRetFrcst + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmRetireForecastBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmAgeAnalysisForm + wenrgise.common.vo.BaseQueryVO + wenrgise.hrms.businessdelegate.HrmAgeAnalysisBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmAgeAnalysis + arrHrmHolType + wenrgise.hrms.businessdelegate.HrmAgeAnalysisBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + + + + wenrgise.hrms.webtier.form.HrmAcademicQualRepForm + wenrgise.common.vo.BaseQueryVO + wenrgise.common.businessdelegate.HrmBaseBD + wenrgise.common.bean.BaseHeaderBean + 10 + + + HrmAcademicQual + arrHrmHolType + wenrgise.common.businessdelegate.HrmBaseBD + wenrgise.common.bean.BaseDetailBean + 5 + 12 + + + + + + + + + wenrgise.hrms.webtier.form.HrmMediclaimMasterForm + wenrgise.hrms.vo.HrmMediclaimMasterQVO + wenrgise.hrms.businessdelegate.HrmMediclaimMasterBD + wenrgise.hrms.bean.HrmMediclaimMasterHdrBean + 10 + + + HrmMediclaimMaster + arrHrmMediclaimMstDtl + wenrgise.hrms.businessdelegate.HrmMediclaimMasterBD + wenrgise.hrms.bean.HrmMediclaimMasterDtlBean + 10 + 10 + + + + + + wenrgise.hrms.webtier.form.HrmMyWorkflowForm + wenrgise.hrms.vo.HrmMyWorkflowQVO + wenrgise.hrms.businessdelegate.HrmMyWorkflowBD + wenrgise.hrms.bean.HrmMyWorkflowHdrBean + 2 + Y + + + HrmMyWorkflow + arrHrmMyWorkflowDtl + wenrgise.hrms.businessdelegate.HrmMyWorkflowBD + wenrgise.hrms.bean.HrmMyWorkflowDtlBean + 10 + 12 + + + + + + wenrgise.hrms.webtier.form.HrmRoasterEntryForm + wenrgise.hrms.vo.HrmRoasterEntryQVO + wenrgise.hrms.businessdelegate.HrmRoasterEntryBD + wenrgise.hrms.bean.HrmRoasterEntryHdrBean + 10 + + + HrmRoasterEntry + arrHrmRoasterEntryDtl + wenrgise.hrms.businessdelegate.HrmRoasterEntryBD + wenrgise.hrms.bean.HrmRoasterEntryDtlBean + 250 + 12 + + + + + \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseLOV.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseLOV.xml new file mode 100644 index 0000000..3a205c0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseLOV.xml @@ -0,0 +1,8906 @@ + + + + + + + + + + + ClassType + + + HrmOrgClassDtl + + + Q + HrmFacade + getHrmClassTypeLOVData + N + + + + + + + + + GradeCode + + + HrmOrgScaleMst + + + Q + HrmFacade + getHrmOrgScaleGradeLOVData + N + + + U + HrmFacade + getHrmOrgScaleGradeLOVData + N + + + N + HrmFacade + getHrmOrgScaleGradeLOVData + N + + + + + + + + + ClassParentID + + + HrmOrgClassDtl + + + N + HrmFacade + getHrmClassDtlLOVData + N + + + U + HrmFacade + getHrmClassDtlLOVData + N + + + + + + + + + + + HrmRatingCode + + + HrmOrgRatingMst + + + Q + HrmFacade + getHrmRatingCodeLOVdata + N + + + U + HrmFacade + getHrmRatingCodeLOVdata + N + + + + + + + + + + HrmCalendarType + + + HrmOrgCalMst + + + Q + HrmFacade + getHrmCalendarTypeLOVdata + N + + + U + HrmFacade + getHrmCalendarTypeLOVdata + N + + + + + + + + + + ScaleCode + + + HrmOrgScaleMst + + + Q + HrmFacade + getHrmScaleMstScaleCodeLOV + N + + + N + HrmFacade + getHrmScaleMstScaleCodeLOV + N + + + U + HrmFacade + getHrmScaleMstScaleCodeLOV + N + + + + + + + + + + + + CalName + + + HrmOrgHolCal + + + Q + HrmFacade + getHrmCalNameLOVdata + N + + + + + + + + + + SiteCode + + + HrmOrgHolCal + + + Q + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + + + + + + + HolidayType + + + HrmOrgHolCal + + + Q + HrmFacade + getHrmHolidayTypeLOVdata + N + + + U + HrmFacade + getHrmHolidayTypeLOVdata + N + + + + + + + + State + + + HrmOrgHolCal + + + N + HrmFacade + getHrmStateCodeInsLOVdata + N + + + Q + HrmFacade + getHrmStateCodeQueryLOVdata + N + + + U + HrmFacade + getHrmStateCodeInsLOVdata + N + + + + + + + + + + + HrmHolidayType + + + HrmOrgHolTypeMst + + + Q + HrmFacade + getHrmHolidayTypeLOVdata + N + + + U + HrmFacade + getHrmHolidayTypeLOVdata + N + + + + + + + + + + HrmSkillTypeCode + + + HrmOrgSkillMst + + + Q + HrmFacade + getHrmSkillCodeLOVdata + N + + + + + + + + + + HrmCountryCode + + + HrmOrgCntryMst + + + Q + HrmFacade + getHrmCountryCodeLOVdata + N + + + U + HrmFacade + getHrmCountryCodeLOVdata + N + + + + + + + + + + WorkGroupCode + + + HrmOrgWorkGroupMst + + + Q + HrmFacade + getHrmWorkGroupCodeLOVdata + N + + + + + + + + WorkGroupSiteCode + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + U + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + + + + CostCode + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmCostCodeLOVdata + N + + + U + HrmFacade + getHrmCostCodeLOVdata + N + + + + + + + + + + + ParentCode + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmWorkParentCodeLOVdata + N + + + U + HrmFacade + getHrmWorkParentCodeLOVdata + N + + + + + + + + + + IncrRatgRating + + + HrmOrgIncrement + + + N + HrmFacade + getIncrRatingLOVNData + N + + + Q + HrmFacade + getIncrRatingLOVQData + N + + + + + + + + + + IncrRatgClsHdr + + + HrmOrgIncrement + + + N + HrmThirdFacade + getClsMstData + N + + + + + + + + + + IncrRatgClsDtl + + + HrmOrgIncrement + + + N + HrmThirdFacade + getClsDtlData + N + + + + + + + + + + + ContactEmployeeNo + + + HrmOrgWorkGroupMst + + + N + HrmFacade + getHrmContactEmployeeNoLOVdata + N + + + U + HrmFacade + getHrmContactEmployeeNoLOVdata + N + + + + + + + + + + EligValues + + + HrmGenEligRule + + + Q + HrmFacade + getHrmClassDetailLOV + N + + + + + + + + + DocTypeLeave + + + HrmGenEligRule + + + Q + HrmFacade + getHrmLeaveDetailLOV + N + + + + + + + DocTypeLoan + + + HrmGenEligRule + + + Q + HrmFacade + getHrmLoanDetailLOV + N + + + + + + + + DocTypeAdvances + + + HrmGenEligRule + + + Q + HrmFacade + getHrmAdvanceDetailLOV + N + + + + + + + + DocTypeClaim + + + HrmGenEligRule + + + Q + HrmFacade + getHrmEmpClaimCodeLOVdata + N + + + + + + + + DocTypeEarnDed + + + HrmGenEligRule + + + Q + HrmFacade + getHrmErngDednDetailLOV + N + + + + + + + + + DocTypeSep + + + HrmGenEligRule + + + Q + HrmFacade + getHrmSepEligLOV + N + + + + + + + + + + + + + PersDtlsEmpNo + + + HrmEmpPersDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PersDtlsGrade + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsGradeLOVdata + N + + + + + + + + + PersDtlsDesgn + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsDesigLOVdata + N + + + + + + + + + PersDtlsDept + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsDeptLOVdata + N + + + + + + + + + PersDtlsLocation + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersJoinInfBaseSiteLOVdata + N + + + + + + + + + PersDtlsNat + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + + + + + + + PersDtlsReligion + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + + + + + + + PersDtlsMotTong + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + + + + + + + PersDtlsMarital + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + + + + + + + PersDtlsSocialStatus + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsSocialStatusLOVdata + N + + + + + + + + + PersDtlsReptEmployeeNo + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + PersDtlsRelatedEmp + + + HrmEmpPersDtls + + + U + HrmFacade + getHrmEmpPersDtlsRelatedEmpLOVdata + N + + + + + + + + PersAddDtlsEmpNo + + + HrmEmpPersAddDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PersDtlsAddState + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + + + + + + + PersDtlsAddCountry + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + + + + + PersDtlsAddDistrict + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsDistrictLOVdata + N + + + + + + + PersDtlsAddTehsil + + + HrmEmpPersAddDtls + + + U + HrmFacade + getHrmEmpPersAddDtlsTehsilLOVdata + N + + + + + + + + PersDtlsJoinInfEmpNo + + + HrmEmpPersJoinInf + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsJoinBaseSite + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfBaseSiteLOVdata + N + + + + + + + + PersDtlsJoinEntry + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfEntryLOVdata + N + + + + + + + + PersDtlsEmpStat + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfStatusLOVdata + N + + + + + + + + PersDtlsSepType + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfSepTypeLOVdata + N + + + + + + + + PersDtlsCostCentre + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfCostCentreLOVdata + N + + + + + + + + PersDtlsBank + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfBankLOVdata + N + + + + + + + + + PersDtlsJobResp + + + HrmEmpPersJoinInf + + + U + HrmFacade + getHrmEmpPersJoinInfJobRespLOVdata + N + + + + + + + + PersDtlsEmpHstEmpNo + + + HrmEmpPersEmpHst + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsPriorExpEmpNo + + + HrmEmpPersPriorExp + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsEduDtlsEmpNo + + + HrmEmpPersEduDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsEduQualCode + + + HrmEmpPersEduDtls + + + U + HrmFacade + getHrmEmpPersEduDtlsQualLOVdata + N + + + + + + + + AwdDtlsEmpNo + + + HrmEmpPersAward + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + InsDtlsEmpNo + + + HrmEmpPersIns + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + HealthDtlsEmpNo + + + HrmEmpPersHealth + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + LngDtlsEmpNo + + + HrmEmpPersLng + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + PersDtlsMotTong + + + HrmEmpPersLng + + + Q + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + + + + + + RefDtlsEmpNo + + + HrmEmpPersRef + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + TrngDtlsEmpNo + + + HrmEmpPersTrngDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PFDtlsEmpNo + + + HrmEmpPersPFDtls + + + Q + HrmFacade + getHrmEmpPersDtlsEmpNoLOVdata + N + + + + + + + + + PFDtlsNominee + + + HrmEmpPersPFDtls + + + U + HrmFacade + getHrmRelationLOVdata + N + + + + + + + + + HrmEmplDepEmpNo + + + HrmEmpDepDtl + + + Q + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + U + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + + + + + + HrmEmplDepRelType + + + HrmEmpDepDtl + + + U + HrmFacade + getHrmEmpDepDtlRelTypeLOVdata + N + + + + + + + + + HrmEmpDiscEmpNo + + + HrmEmpDiscAction + + + Q + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + U + HrmFacade + getHrmEmpDepDtlEmpNoLOVdata + N + + + + + + + + HrmEmpDiscLocation + + + HrmEmpDiscAction + + + U + HrmFacade + getHrmEmpDiscActionSiteLOVdata + N + + + + + + + + + + + + + + LvAppEmployeeNo + + + HrmLeaveApplication + + + Q + HrmSecondFacade + getHrmEmployeeLOVdata + N + + + + + + + + + + + + + CreditLeaveRegion + + + HrmLvCredit + + + Q + HrmSecondFacade + getHrmLvCreditRegionLOVdata + N + + + U + HrmSecondFacade + getHrmLvCreditRegionLOVdata + N + + + N + HrmSecondFacade + getHrmLvCreditRegionLOVdata + N + + + + + + + CreditLvLvType + + + HrmLvCredit + + + Q + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + N + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + U + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + + + + + CreditLvEmpNo + + + HrmLvCredit + + + Q + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + N + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + U + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + + + + + + + LvAppQryEmployeeNo + + + HrmLeaveAppQuery + + + Q + HrmSecondFacade + getHrmLvAppQryEmpNoLOVdata + N + + + N + HrmSecondFacade + getHrmLvAppQryEmpNoLOVdata + N + + + U + HrmSecondFacade + getHrmLvAppQryEmpNoLOVdata + N + + + + + + + + + + LvAppQryLeaveCode + + + HrmLeaveAppQuery + + + Q + HrmSecondFacade + getHrmLvAppQryLvCdLOVdata + N + + + N + HrmSecondFacade + getHrmLvAppQryLvCdLOVdata + N + + + U + HrmSecondFacade + getHrmLvAppQryLvCdLOVdata + N + + + + + + + + + + LvApplnLeaveCode + + + HrmLvAppln + + + Q + HrmSecondFacade + getHrmEmpLvAppLvCdLOVdata + N + + + N + HrmSecondFacade + getHrmEmpLvAppLvCdInsLOVdata + N + + + U + HrmSecondFacade + getHrmEmpLvAppLvCdLOVdata + N + + + + + + + + + + CancelLeaveEmpNo + + + HrmEmployeeLeaveCancellationQueryScreen + + + Q + HrmSecondFacade + getHrmCnclLeaveEmpLOV + N + + + U + HrmSecondFacade + getHrmCnclLeaveEmpLOV + N + + + + + + + + + + CancelLeaveType + + + HrmEmployeeLeaveCancellationQueryScreen + + + Q + HrmSecondFacade + getHrmCnclLeaveTypeLOV + N + + + U + HrmSecondFacade + getHrmCnclLeaveTypeLOV + N + + + + + + + + + + EmpLvCancCode + + + HrmEmployeeLeaveCancellationBatchScreen + + + Q + HrmFacade + getHrmEmpLvCanLvCdLOVdata + N + + + N + HrmFacade + getHrmEmpLvCanLvCdInsertLOVdata + N + + + + + + + + + + + LvLdgrEmployeeNo + + + HrmEmployeeLeaveLedger + + + Q + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + N + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + U + HrmSecondFacade + getHrmEmployeeNumberLOVdata + N + + + + + + + + + + + LvLdgrLeaveCode + + + HrmEmployeeLeaveLedger + + + Q + HrmSecondFacade + getHrmLeaveCodesLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveCodesLOVdata + N + + + U + HrmSecondFacade + getHrmLeaveCodesLOVdata + N + + + + + + + + + + LvLdgrEmpCode + + + HrmEmployeeLeaveLedger + + + Q + HrmSecondFacade + getEmpCodeLOVdata + N + + + N + HrmSecondFacade + getEmpCodeLOVdata + N + + + U + HrmSecondFacade + getEmpCodeLOVdata + N + + + + + + + + + + EmpLvCancCode + + + HrmEmployeeLeaveCancellationBatchScreen + + + Q + HrmSecondFacade + getHrmEmpLvCanLvCdLOVdata + N + + + N + HrmSecondFacade + getHrmEmpLvCanLvCdInsertLOVdata + N + + + + + + + + + LvEmEncLeaveCode + + + HrmEmpLeaveEncashment + + + Q + HrmSecondFacade + getHrmLeaveTypesLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveTypesLOVdata + N + + + U + HrmSecondFacade + getHrmLeaveTypesLOVdata + N + + + + + + + LvEncashEmpNo + + + HrmEmpLeaveEncashment + + + Q + HrmSecondFacade + getHrmLvEncashEmpNoQLOVdata + N + + + N + HrmSecondFacade + getHrmLvEncashEmpNoNLOVdata + N + + + + + + + + + LvApplnEmpNo + + + HrmLvAppln + + + Q + HrmSecondFacade + getHrmLvApplnEmpNoQLOVdata + N + + + N + HrmSecondFacade + getHrmLvApplnEmpNoNLOVdata + N + + + + + + + LvAppLeaveCode + + + HrmLeaveApplication + + + Q + HrmSecondFacade + getHrmLeaveTypeLOVdata + N + + + + + + + + + + LvMstLeaveCode + + + HrmLeaveMaster + + + Q + HrmSecondFacade + getHrmLeaveMasterLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveCodeInsertLOVdata + N + + + + + + + + + LvMstCalendarType + + + HrmLeaveMaster + + + Q + HrmSecondFacade + getHrmLeaveMasterCalLOVdata + N + + + N + HrmSecondFacade + getHrmLeaveMasterCalLOVdata + N + + + + + + + + + LeaveState + + + HrmLeaveMaster + + + Q + HrmSecondFacade + getHrmLvMstStateLOVdata + N + + + N + HrmSecondFacade + getHrmLvMstStateLOVdata + N + + + U + HrmSecondFacade + getHrmLvMstStateLOVdata + N + + + + + + + + + + + + + + DeputApplnNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputApplnNoLOVdata + N + + + N + HrmThirdFacade + getHrmDeputApplnNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputApplnNoLOVdata + N + + + + + + + + + + DeputEmpNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputEmpNoQLOVdata + N + + + N + HrmThirdFacade + getHrmDeputEmpNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputEmpNoLOVdata + N + + + + + + + + + + DeputAdvtNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputAdvtNoLOVdata + N + + + N + HrmThirdFacade + getHrmDeputAdvtNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputAdvtNoLOVdata + N + + + + + + + + + + DeputPostNo + + + HrmATDDptnAppl + + + Q + HrmThirdFacade + getHrmDeputPostNameLOVdata + N + + + N + HrmThirdFacade + getHrmDeputPostNameLOVdata + N + + + U + HrmThirdFacade + getHrmDeputPostNameLOVdata + N + + + + + + + + + + + + + DeputationOrderNo + + + HrmATDDptnChrgRpt + + + Q + HrmThirdFacade + getHrmDepChrgOrderNoQLOVdata + N + + + N + HrmThirdFacade + getHrmDepChrgOrderNoLOVdata + N + + + + + + + + + DepChargeCode + + + HrmATDDptnChrgRpt + + + Q + HrmThirdFacade + getHrmDepChrgCodeLOVdata + N + + + N + HrmThirdFacade + getHrmDepChrgCodeLOVdata + N + + + U + HrmThirdFacade + getHrmDepChrgCodeLOVdata + N + + + + + + + + + + + + DeptnOrderNo + + + HrmATDDptnOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmDeputationOrderNoLOVdata + N + + + N + HrmThirdFacade + getHrmDeputationOrderNoLOVdata + N + + + U + HrmThirdFacade + getHrmDeputationOrderNoLOVdata + N + + + + + + + + + + TransOrderApproverNo + + + HrmATDTransOrderForSingleEmp + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + TransCnclOrderApproverNo + + + HrmATDTransCnclOrderForSingleEmp + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + TransChrgRptHandTakeOver + + + HrmATDTransChrgRpt + + + N + HrmThirdFacade + getHrmChgRepEmpLOVdata + N + + + U + HrmThirdFacade + getHrmChgRepEmpLOVdata + N + + + + + + + TransReptEmpNo + + + HrmATDTransOrderForSingleEmp + + + N + HrmThirdFacade + getHrmTransReptEmpNoLOV + N + + + U + HrmThirdFacade + getHrmTransReptEmpNoLOV + N + + + + + + + + + + DeptnApplcnNo + + + HrmATDDptnOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmDeputApplcnNoQLOVdata + N + + + N + HrmThirdFacade + getHrmDeputApplcnNoLOVdata + N + + + + + + + + + + + + TrnsfrApplnNo + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnApplnNoLOVdata + N + + + N + HrmThirdFacade + getHrmTrnApplnNoLOVdata + N + + + U + HrmThirdFacade + getHrmTrnApplnNoLOVdata + N + + + + + + + + + TrnsfrOfcNoteNo + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnOfcNoteNoLOVdata + N + + + N + HrmThirdFacade + getHrmTrnOfcNoteNoLOVdata + N + + + U + HrmThirdFacade + getHrmTrnOfcNoteNoLOVdata + N + + + + + + + + TrnsfrDesignation + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnDesignationLOVdata + N + + + N + HrmThirdFacade + getHrmTrnDesignationLOVdata + N + + + U + HrmThirdFacade + getHrmTrnDesignationLOVdata + N + + + + + + + + + TrnsfrWorkgroup + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnWorkgroupLOVdata + N + + + N + HrmThirdFacade + getHrmTrnWorkgroupLOVdata + N + + + U + HrmThirdFacade + getHrmTrnWorkgroupLOVdata + N + + + + + + + + + TrnsfrEmpNo + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnEmpNoLOVdata + N + + + N + HrmThirdFacade + getHrmTrnEmpNoInsLOVdata + N + + + U + HrmThirdFacade + getHrmTrnEmpNoInsLOVdata + N + + + + + + + + + + TrnsfrSite1 + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnSite1LOVdata + N + + + N + HrmThirdFacade + getHrmTrnSite1LOVdata + N + + + U + HrmThirdFacade + getHrmTrnSite1LOVdata + N + + + + + + + + + + + TrnsfrSite2 + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnSite2LOVdata + N + + + N + HrmThirdFacade + getHrmTrnSite2LOVdata + N + + + U + HrmThirdFacade + getHrmTrnSite2LOVdata + N + + + + + + + + + + + TrnsfrSite3 + + + HrmATDTransAppl + + + Q + HrmThirdFacade + getHrmTrnSite3LOVdata + N + + + N + HrmThirdFacade + getHrmTrnSite3LOVdata + N + + + U + HrmThirdFacade + getHrmTrnSite3LOVdata + N + + + + + + + + + + + + + TrnsfrOrderNo + + + HrmATDTransChrgRpt + + + Q + HrmThirdFacade + getHrmChrgOrderNoQLOVdata + N + + + N + HrmThirdFacade + getHrmChrgOrderNoLOVdata + N + + + U + HrmThirdFacade + getHrmChrgOrderNoQLOVdata + N + + + + + + + + + + ChargeCode + + + HrmATDTransChrgRpt + + + Q + HrmThirdFacade + getHrmChrgCodeLOVdata + N + + + N + HrmThirdFacade + getHrmChrgCodeLOVdata + N + + + U + HrmThirdFacade + getHrmChrgCodeLOVdata + N + + + + + + + + + + + + TrnsfrCnclApplnNo + + + HrmATDTransCnclAppl + + + Q + HrmThirdFacade + getHrmCnclApplNoLOVdata + N + + + + + + + + + + TrnsfrCnclOfcNoteNo + + + HrmATDTransCnclAppl + + + Q + HrmThirdFacade + getHrmCnclOfNoteNoLOVdata + N + + + N + HrmThirdFacade + getHrmCnclOfNoteNoLOVdata + N + + + + + + + + + + TrnsfrCnclEmpNo + + + HrmATDTransCnclAppl + + + Q + HrmThirdFacade + getHrmEmpNoQCnclApplLOVdata + N + + + N + HrmThirdFacade + getHrmEmpNoICnclApplLOVdata + N + + + + + + + + + + + + TrnsfrCnclOrdrApplnNo + + + HrmATDTransCnclOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransCnclOrderAppNoLOVQdata + N + + + N + HrmThirdFacade + getHrmTransCnclOrderAppNoLOVIdata + N + + + + + + + + + + TrnsfrCnclOrdrNo + + + HrmATDTransCnclOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransCnclOrderLOVdata + N + + + + + + + + + + + + HrmTransOrderCode + + + HrmATDTransOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransOrderNoLOVdata + N + + + + + + + + + + HrmToSiteCode + + + HrmATDTransOrderForSingleEmp + + + N + HrmThirdFacade + getHrmToSiteCodeLOVdata + N + + + U + HrmThirdFacade + getHrmToSiteCodeLOVdata + N + + + + + + + + + + HrmApplicationNo + + + HrmATDTransOrderForSingleEmp + + + Q + HrmThirdFacade + getHrmTransAplnNoQLOVdata + N + + + N + HrmThirdFacade + getHrmTransAplnNoLOVdata + N + + + U + HrmThirdFacade + getHrmTransAplnNoQLOVdata + N + + + + + + + + + HrmTCMstCode + + + HrmTestCentreMaster + + + Q + HrmSecondFacade + getHrmTCMstCodeLOVdata + N + + + + + + + + RecAdvAttrLocation + + + HrmRecAdvAttrLocVacencyDtl + + + N + HrmSecondFacade + getHrmRecAttrLocationLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrLocationLOVData + N + + + + + + + + RecAdvAttrQulification + + + HrmRecAdvAttrQualReqDtl + + + N + HrmSecondFacade + getHrmRecAttrQualificationLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrQualificationLOVData + N + + + + + + + + RecAdvAttrLanguage + + + HrmRecAdvAttrLngReqDtl + + + N + HrmSecondFacade + getHrmRecAttrLanguageLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrLanguageLOVData + N + + + + + + + + RecAdvAttrSkill + + + HrmRecAdvAttrSkillReqDtl + + + N + HrmSecondFacade + getHrmRecAttrSkillLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrSkillLOVData + N + + + + + + + + + + RecAdvAttrWork + + + HrmRecAdvAttrWorkExpDtl + + + N + HrmSecondFacade + getHrmRecAttrWorkLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrWorkLOVData + N + + + + + + + classCode + + + HrmRecAdvtMtn + + + N + HrmSecondFacade + getClassDataLOV + N + + + U + HrmSecondFacade + getClassDataLOV + N + + + + + + + + RefNo + + + HrmRecAdvtMtn + + + Q + HrmSecondFacade + getRefNoLOV + N + + + + + + + EntryMode + + + HrmRecAdvtMtn + + + N + HrmSecondFacade + getEntryModeLOV + N + + + U + HrmSecondFacade + getEntryModeLOV + N + + + + + + + + HrmRecAdvtMtnGrade + + + HrmRecAdvtMtn + + + U + HrmFacade + getHrmEmpPersDtlsGradeLOVdata + N + + + + + + + RecAdvAttrState + + + HrmRecAdvAttrLocVacencyDtl + + + U + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + + + + + + + ApplnMtnPerAdvtNo + + + HrmRecApplnMtnPerDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + + ApplnMtnAddRelatedEmp + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + ApplnMtnAddAdvtNo + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnExpAdvtNo + + + HrmRecApplnMtnExpDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnEduAdvtNo + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnLangAdvtNo + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnRefAdvtNo + + + HrmRecApplnMtnRef + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + + ApplnMtnTrngAdvtNo + + + HrmRecApplnMtnTrngDtls + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnOtherAdvtNo + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + ApplnMtnResultAdvtNo + + + HrmRecApplnMtnResultDtl + + + Q + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnRefNoLOVData + N + + + + + + + + + ApplnMtnPerDesignation + + + HrmRecApplnMtnPerDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + + ApplnMtnPerReligion + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsReligionLOVdata + N + + + + + + + ApplnMtnAddDesignation + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnExpDesignation + + + HrmRecApplnMtnExpDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnEduDesignation + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + + ApplnMtnRefDesignation + + + HrmRecApplnMtnRef + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnTrngDesignation + + + HrmRecApplnMtnTrngDtls + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnLangDesignation + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnOtherDesignation + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + ApplnMtnResultDesignation + + + HrmRecApplnMtnResultDtl + + + Q + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnDesigLOVData + N + + + + + + + + + ApplnMtnPerApplnNo + + + HrmRecApplnMtnPerDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + + ApplnMtnAddApplnNo + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnExpApplnNo + + + HrmRecApplnMtnExpDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnEduApplnNo + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnRefApplnNo + + + HrmRecApplnMtnRef + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + + ApplnMtnTrngApplnNo + + + HrmRecApplnMtnTrngDtls + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnLangApplnNo + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnOtherApplnNo + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + ApplnMtnResultApplnNo + + + HrmRecApplnMtnResultDtl + + + Q + HrmSecondFacade + getHrmRecApplnApplnNoLOVData + N + + + + + + + + + ApplnMtnAddState + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + U + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + N + HrmFacade + getHrmEmpPersAddDtlsStateLOVdata + N + + + + + + + + + ApplnMtnAddCountry + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + U + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + N + HrmFacade + getHrmEmpPersAddDtlsCountryLOVdata + N + + + + + + + + + ApplnMtnEduIns + + + HrmRecApplnMtnEduDtl + + + Q + HrmFacade + getHrmPersDtlInstCodeLOV + N + + + U + HrmFacade + getHrmPersDtlInstCodeLOV + N + + + N + HrmFacade + getHrmPersDtlInstCodeLOV + N + + + + + + + + + ApplnMtnEduQual + + + HrmRecApplnMtnEduDtl + + + Q + HrmSecondFacade + getHrmRecApplnMtnKnowCodeLOV + N + + + U + HrmFacade + getHrmEmpPersEduDtlsQualLOVdata + N + + + N + HrmFacade + getHrmEmpPersEduDtlsQualLOVdata + N + + + + + + + + + ApplnMtnExpDesig + + + HrmRecApplnMtnExpDtl + + + Q + HrmFacade + getHrmPersDtlDesgCodeLOV + N + + + U + HrmFacade + getHrmPersDtlDesgCodeLOV + N + + + N + HrmFacade + getHrmPersDtlDesgCodeLOV + N + + + + + + + + + ApplnMtnExpSkill + + + HrmRecApplnMtnExpDtl + + + Q + HrmFacade + getHrmPersDtlSkillCodeLOV + N + + + U + HrmFacade + getHrmPersDtlSkillCodeLOV + N + + + N + HrmFacade + getHrmPersDtlSkillCodeLOV + N + + + + + + + + + + ApplnMtnLangCode + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnLangCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnLangCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnLangCodeLOVData + N + + + + + + + + + ApplnMtnExpKnow + + + HrmRecApplnMtnLangDtl + + + Q + HrmSecondFacade + getHrmRecApplnKnowCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnKnowCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnKnowCodeLOVData + N + + + + + + + + + ApplnMtnResultTest + + + HrmRecApplnMtnOtherDtl + + + Q + HrmSecondFacade + getHrmRecApplnTestCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnTestCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnMtnTestCodeLOV + N + + + + + + + + + + ApplnMtnPerMotherToungue + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsMotTngLOVdata + N + + + + + + + + + ApplnMtnPerResvCat + + + HrmRecApplnMtnAddDtl + + + Q + HrmSecondFacade + getHrmRecApplnResvCatCodeLOVData + N + + + U + HrmSecondFacade + getHrmRecApplnResvCatCodeLOVData + N + + + N + HrmSecondFacade + getHrmRecApplnResvCatCodeLOVData + N + + + + + + + + + ApplnMtnPerMarStatus + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsMaritalStatusLOVdata + N + + + + + + + + + + + + RecScrutRefNo + + + HrmScrutinizingApplicant + + + U + HrmSecondFacade + getRefNoLOVdataNmode + N + + + Q + HrmSecondFacade + getRefNoLOVdataNmode + N + + + N + HrmSecondFacade + getRefNoLOVdataNmode + N + + + + + + + + + DesigNo + + + HrmScrutinizingApplicant + + + U + HrmSecondFacade + getDesigNoLOVdata + N + + + Q + HrmSecondFacade + getDesigNoLOVdata + N + + + N + HrmSecondFacade + getDesigNoLOVdata + N + + + + + + + + + + ApplnMtnPerNationality + + + HrmRecApplnMtnAddDtl + + + Q + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + N + HrmFacade + getHrmEmpPersDtlsNationalityLOVdata + N + + + + + + + + + + + RecCrnApplnNo + + + HrmEmpRecCreation + + + Q + HrmSecondFacade + getHrmRecCrnApplnNoLOVdata + N + + + + + + + + RecCrnEntryMode + + + HrmEmpRecCreation + + + U + HrmFacade + getHrmEmpPersJoinInfEntryLOVdata + N + + + Q + HrmFacade + getHrmEmpPersJoinInfEntryLOVdata + N + + + + + + + + RecCrnMotherTongue + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnMotherTongueLOVdata + N + + + + + + + + + RecCrnNationality + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnNationalityLOVdata + N + + + + + + + + RecCrnMarital + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnMaritalStatusLOVdata + N + + + + + + + + RecCrnReservation + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnReservationCtgLOVdata + N + + + + + + + + RecCrnReligion + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnReligionLOVdata + N + + + + + + + + RecCrnPrCountry + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCountryLOVdata + N + + + + + + + + RecCrnPrState + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnStateLOVdata + N + + + + + + + + + RecCrnPeCountry + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCountryLOVdata + N + + + + + + + + RecCrnPeState + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnStateLOVdata + N + + + + + + + + RecCrnOffCountry + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCountryLOVdata + N + + + + + + + + RecCrnOffState + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnStateLOVdata + N + + + + + + + + RecCrnBaseSite + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnBaseSiteLOVdata + N + + + + + + + + RecCrnDesignation + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnDesignationLOVdata + N + + + + + + + + + RecCrnEmployeeType + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnEmployeeTypeLOVdata + N + + + + + + + + RecCrnScale + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnScaleLOVdata + N + + + + + + + + RecCrnGrade + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnGradeLOVdata + N + + + + + + + + + RecCrnCostCenter + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnCostCentreLOVdata + N + + + + + + + + RecCrnJoiningGroup + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnJoiningGroupLOVdata + N + + + + + + + + RecCrnTech + + + HrmEmpRecCreation + + + U + HrmSecondFacade + getHrmRecCrnTechNonTechLOVdata + N + + + + + + + HrmRecAdvRefNo + + + HrmRecAdvAttrForm + + + Q + HrmSecondFacade + getHrmRecAttrRefLOVData + N + + + N + HrmSecondFacade + getHrmRecAttrRefLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrRefLOVData + N + + + + + + + + HrmRecAdvPositionNo + + + HrmRecAdvAttrForm + + + Q + HrmSecondFacade + getHrmRecAttrPositionLOVData + N + + + N + HrmSecondFacade + getHrmRecAttrPositionLOVData + N + + + U + HrmSecondFacade + getHrmRecAttrPositionLOVData + N + + + + + + + + + + + HrmLCForm + + + HrmLnChart + + + Q + HrmFacade + getHrmLoanChartNameLOVdata + N + + + + + + + + + + HrmLoanCode + + + HrmLnMst + + + Q + HrmFacade + getHrmLoanCodeLOVdata + N + + + N + HrmFacade + getHrmLoanCodeLOVdataNew + N + + + + + + + + HrmChartCode + + + HrmLnMst + + + Q + HrmFacade + getHrmChartNameLOVdata + N + + + N + HrmFacade + getHrmChartNameLOVdataNew + N + + + U + HrmFacade + getHrmChartNameLOVdata + N + + + + + + + + + + + + + LnAppEmpNo + + + HrmLnAppForm + + + Q + HrmFacade + getHrmLnAppEmpNoQLOVdata + N + + + N + HrmFacade + getHrmLnAppEmpNoLOVdata + N + + + + + + + + LnAppApproverNo + + + HrmLnAppForm + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + LnAppLoanCode + + + HrmLnAppForm + + + Q + HrmFacade + getHrmLnAppLOVdata + N + + + N + HrmFacade + getHrmLnAppInsLOVdata + N + + + U + HrmFacade + getHrmLnAppInsLOVdata + N + + + + + + + + LnAppLoanCode + + + HrmLnDisDtl + + + Q + HrmFacade + getHrmLnAppLOVdata + N + + + N + HrmFacade + getHrmLnAppInsLOVdata + N + + + + + + + + + + AdvanceCode + + + HrmAdvanceMaster + + + Q + HrmFacade + getHrmAdvMstCodeLOVdata + N + + + N + HrmFacade + getHrmAdvMstCodeInsLOVdata + N + + + U + HrmFacade + getHrmAdvMstCodeInsLOVdata + N + + + + + + + + AdvanceDescription + + + HrmSettlementHeads + + + Q + HrmFacade + getHrmSettleHeadsLOVdata + N + + + N + HrmFacade + getHrmSettleHeadsLOVdata + N + + + U + HrmFacade + getHrmSettleHeadsLOVdata + N + + + + + + + + + + CalendarCode + + + HrmAdvanceMaster + + + Q + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + N + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + U + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + + + + + + + EmpAdvanceCode + + + HrmEmpAdvance + + + Q + HrmFacade + getHrmAdvAppAdvCdLOVdata + N + + + N + HrmFacade + getHrmAdvAppAdvCdInsLOVdata + N + + + U + HrmFacade + getHrmAdvAppAdvCdInsLOVdata + N + + + + + + + + + AdvAppEmpNo + + + HrmEmpAdvance + + + Q + HrmFacade + getHrmAdvAppEmpNoLOVdata + N + + + N + HrmFacade + getHrmAdvAppInsEmpNoLOVdata + N + + + + + + + + + AdvAppApproverNo + + + HrmEmpAdvance + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + + SettleAdvanceCode + + + HrmAdvanceSettle + + + Q + HrmFacade + getHrmAdvSettleAdvCdLOVdata + N + + + N + HrmFacade + getHrmAdvSettleAdvCdLOVdata + N + + + U + HrmFacade + getHrmAdvSettleAdvCdLOVdata + N + + + + + + + + AdvSettleEmpNo + + + HrmAdvanceSettle + + + Q + HrmFacade + getHrmLnAppEmpNoLOVdata + N + + + N + HrmFacade + getHrmLnAppEmpNoLOVdata + N + + + + + + + + + HrmClaimCode + + + HrmClaimMst + + + Q + HrmFacade + getHrmClaimCodeLOVdata + N + + + + + + + + + HrmClaimCode + + + HrmClaimMst + + + Q + HrmFacade + getHrmClaimCodeLOVdata + N + + + + + + + + + + ClaimCalendarCode + + + HrmClaimMst + + + Q + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + N + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + U + HrmFacade + getHrmAdvMstCalendarCodeLOVdata + N + + + + + + + + HrmEmpClaimCode + + + HrmEmpClaim + + + Q + HrmFacade + getHrmEmpClaimCodeLOVdata + N + + + U + HrmFacade + getHrmEmpClaimCodeLOVdata + N + + + + + + + + HrmEmpClaimNo + + + HrmEmpClaim + + + Q + HrmFacade + getHrmEmpClaimNoLOVdata + N + + + U + HrmFacade + getHrmEmpClaimNoLOVdata + N + + + + + + + + + HrmEmpClaimLovEmpNo + + + HrmEmpClaim + + + Q + HrmFacade + getHrmEmpEmpNoLOVdata + N + + + U + HrmFacade + getHrmEmpEmpNoLOVdata + N + + + + + + + + + + HrmEmpClaimApproverNo + + + HrmEmpClaim + + + N + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + U + HrmFacade + getHrmEmpPersDtlsRepEmpLOVdata + N + + + + + + + + HrmEmpClaimEmpNo + + + HrmEmpClaim + + + N + HrmFacade + getHrmEmpClaimEmpLOVdata + N + + + U + HrmFacade + getHrmEmpClaimEmpLOVdata + N + + + + + + + + + HrmEmpClaimDtlClaimCode + + + HrmEmpClaim + + + U + HrmFacade + getHrmEmpClaimDtlCodeLOVdata + N + + + + + + + + + TrgMstBranchCode + + + HrmTrngCrsMst + + + Q + HrmSecondFacade + getHrmTrgMstBranchCodeLOVdataQmode + N + + + + + + + + TrgInstCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgInstCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmTrgInstCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmTrgInstCodeLOVdataQmode + N + + + + + + + + + TrgCourseCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + N + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + U + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + + + + + + + + TrgInstCountryCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgCountryCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmTrgCountryCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmTrgCountryCodeLOVdataQmode + N + + + + + + + + TrgInstCityCode + + + HrmTrngInstCourseDtl + + + Q + HrmSecondFacade + getHrmTrgCityCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmTrgCityCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmTrgCityCodeLOVdataQmode + N + + + + + + + + TrngReqCourse + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqCourseLOVData + N + + + U + HrmSecondFacade + getHrmTrgReqCourseLOVData + N + + + + + + + + + TrngReqCal + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + U + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + + + + + + TrngReqRecommender + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + U + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + + + + + + TrngReqEmployee + + + HrmTrngEmpReq + + + Q + HrmSecondFacade + getEmployeeCodeLOVdataQ + N + + + N + HrmSecondFacade + getEmployeeCodeLOVdataN + N + + + U + HrmSecondFacade + getEmployeeCodeLOVdataN + N + + + + + + + + TrgFacMstEmpNo + + + HrmTrngFacMst + + + Q + HrmSecondFacade + getHrmTrgFacMstEmpNoLOVNmode + N + + + N + HrmSecondFacade + getHrmTrgFacMstEmpNoLOVNmode + N + + + U + HrmSecondFacade + getHrmTrgFacMstEmpNoLOVNmode + N + + + + + + + + TrgFacMstBaseInst + + + HrmTrngFacMst + + + Q + HrmSecondFacade + getHrmTrgFacMstBaseInstLOVQmode + N + + + N + HrmSecondFacade + getHrmTrgFacMstBaseInstLOVQmode + N + + + U + HrmSecondFacade + getHrmTrgFacMstBaseInstLOVQmode + N + + + + + + + + TrngEmpFBCrsName + + + HrmTrngEmpFeedBack + + + Q + HrmSecondFacade + getHrmTrngCourseLOV + N + + + + + + + + TrngFacultyName + + + HrmTrngEmpFeedBack + + + U + HrmSecondFacade + getHrmTrngFacultyLOV + N + + + + + + + + + TrngFdbkRatingHelp + + + HrmTrngEmpFeedBack + + + U + HrmSecondFacade + getHrmTrngFdbkRatingHelpLOVData + N + + + + + + + + TrngFacFBCrsName + + + HrmTrngFacFeedBack + + + Q + HrmSecondFacade + getHrmTrngCalDetailLOV + N + + + U + HrmSecondFacade + getHrmTrngCalDetailLOV + N + + + + + + + + + + FacultyName + + + HrmTrngFacFeedBack + + + Q + HrmSecondFacade + getHrmFacNameLOV + N + + + + + + + + TrngBudgetCode + + + HrmTrngBudget + + + Q + HrmSecondFacade + getHrmTrngBudCodeLOVdata + N + + + + + + + TrngCalNameLOV + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + N + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + + + + + + TrngSiteLOV + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + N + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + U + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + + + + + + + TrngInsName + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngCalInstLOVdata + N + + + N + HrmSecondFacade + getHrmTrngCalInstLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalInstLOVdata + N + + + + + + + + TrngCrsCdLOV + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngCalCrsCdLOVdata + N + + + N + HrmSecondFacade + getHrmTrngCalCrsCdLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalCrsCdLOVdata + N + + + + + + + + TrngRating + + + HrmTrngCal + + + Q + HrmSecondFacade + getHrmTrngRatingLOVdata + N + + + N + HrmSecondFacade + getHrmTrngRatingLOVdata + N + + + U + HrmSecondFacade + getHrmTrngRatingLOVdata + N + + + + + + + + + + TrngFacSiteLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + U + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + + + + + + TrngFacCalNameLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + U + HrmSecondFacade + getHrmTrngCalNameLOVdata + N + + + + + + + + TrngFacNameLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngFacultyLOVdata + N + + + N + HrmSecondFacade + getHrmTrngFacultyLOVdata + N + + + U + HrmSecondFacade + getHrmTrngFacultyLOVdata + N + + + + + + + + + + + TrngFacCrsInsLOV + + + HrmTrngFacTrngDtl + + + Q + HrmSecondFacade + getHrmTrngCrsInsNameLOV + N + + + + + + + + + TrngReqEmpLOV + + + HrmTrainingReq + + + Q + HrmSecondFacade + getHrmTrngReqEmpLOV + N + + + + + + + + TrngClsCalCrsCode + + + HrmClsTrngCal + + + Q + HrmSecondFacade + getHrmClsCalCrsLOV + N + + + + + + + TrngEmpHistEmpLOV + + + RepTrainingDetailsScreen + + + Q + HrmSecondFacade + getHrmEmpHistEmpLOV + N + + + + + + + TrngEmpHistEmpLOV + + + HrmTrngEmpHist + + + Q + HrmSecondFacade + getHrmEmpHistEmpLOV + N + + + + + + + + TrngEmpHistCalLOV + + + HrmTrngEmpHist + + + Q + HrmSecondFacade + getHrmEmpHistCalLOV + N + + + + + + + + TrngEmpHistCrsLOV + + + HrmTrngEmpHist + + + Q + HrmSecondFacade + getHrmEmpHistCrsLOV + N + + + + + + + + AttendanceDtl + + + HrmTrngEmpHist + + + U + HrmSecondFacade + getHrmAttendanceDtlLOV + N + + + + + + + + HrmTrngEmpAttCrs + + + HrmTrngEmpAtt + + + Q + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + U + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + + + + + + TrngCalClose + + + HrmTrngCalClose + + + Q + HrmSecondFacade + getHrmCalCloseCrsNameLOVdata + N + + + N + HrmSecondFacade + getHrmCalCloseCrsNameLOVdata + N + + + U + HrmSecondFacade + getHrmCalCloseCrsNameLOVdata + N + + + + + + + + TrngBudgetCourseCode + + + HrmTrngBudget + + + U + HrmSecondFacade + getHrmTrngBudCourseCodeLOVdata + N + + + + + + + + + TrngBudgetCalCode + + + HrmTrngBudget + + + Q + HrmSecondFacade + getHrmTrngBudCalendarCodeLOVdata + N + + + U + HrmSecondFacade + getHrmTrngBudCalendarCodeLOVdata + N + + + N + HrmSecondFacade + getHrmTrngBudCalendarCodeLOVdata + N + + + + + + + + + AprslRatingLv0 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating0LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating0LOVdata + N + + + + + + + + + AprslRatingLv1 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating1LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating1LOVdata + N + + + + + + + + + AprslRatingLv2 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating2LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating2LOVdata + N + + + + + + + + AprslRatingLv3 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating3LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating3LOVdata + N + + + + + + + + AprslRatingLv4 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating4LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating4LOVdata + N + + + + + + + + AprslRatingLv5 + + + HrmAprslKPA + + + U + HrmThirdFacade + getHrmAprslRating5LOVdata + N + + + + + HrmAprslGoals + + + U + HrmThirdFacade + getHrmAprslRating5LOVdata + N + + + + + + + + + EmpAprslStartOrder + + + HrmAprslKPA + + + Q + HrmThirdFacade + getEmpAprslStOrderLOVQ + N + + + N + HrmThirdFacade + getEmpAprslStOrderLOVI + N + + + + + HrmAprslGoals + + + Q + HrmThirdFacade + getEmpAprslStOrderLOVQ + N + + + N + HrmThirdFacade + getEmpAprslStOrderLOVI + N + + + + + HrmAprslTrngReq + + + Q + HrmThirdFacade + getEmpAprslStOrderLOVQ + N + + + N + HrmThirdFacade + getEmpAprslStOrderLOVI + N + + + + + + + + + AprslTrngReqCourse + + + HrmAprslTrngReq + + + U + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + N + HrmSecondFacade + getHrmTrgCourseLOVData + N + + + + + + + + + AprslTrngReqCal + + + HrmAprslTrngReq + + + U + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqCalLOVData + N + + + + + + + + AprslTrngReqRecommender + + + HrmAprslTrngReq + + + U + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + N + HrmSecondFacade + getHrmTrgReqRecoLOVData + N + + + + + + + + + AppraisalKPAGroupCode + + + HrmAppraisalKPA + + + Q + HrmThirdFacade + getQueryAppraisalWorkGrpLOVData + N + + + U + HrmThirdFacade + getQueryAppraisalWorkGrpLOVData + N + + + N + HrmThirdFacade + getQueryAppraisalWorkGrpLOVData + N + + + + + + + + + AprslSplTempName + + + HrmAprslSpcTmpl + + + Q + HrmThirdFacade + getQuerySpcTemplateData + N + + + U + HrmThirdFacade + getQuerySpcTemplateData + N + + + N + HrmThirdFacade + getQuerySpcTemplateData + N + + + + + HrmAprslSpcTmplEmpElig + + + Q + HrmThirdFacade + getQuerySpcTemplateData + N + + + U + HrmThirdFacade + getQuerySpcTemplateData + N + + + N + HrmThirdFacade + getQuerySpcTemplateData + N + + + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getQuerySpcTemplateData + N + + + U + HrmThirdFacade + getQuerySpcTemplateData + N + + + N + HrmThirdFacade + getQuerySpcTemplateData + N + + + + + + + + AprslTempName + + + HrmAprslSpcTmpl + + + Q + HrmThirdFacade + getQueryTemplateData + N + + + U + HrmThirdFacade + getTemplateData + N + + + N + HrmThirdFacade + getTemplateData + N + + + + + HrmAprslSpcTmplEmpElig + + + Q + HrmThirdFacade + getQueryTemplateData + N + + + U + HrmThirdFacade + getTemplateData + N + + + N + HrmThirdFacade + getTemplateData + N + + + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getQueryTemplateData + N + + + U + HrmThirdFacade + getTemplateData + N + + + N + HrmThirdFacade + getTemplateData + N + + + + + + + + AprslSpcClsHdr + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + + + + AprslSpcClsDtl + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + + + + AprslSpcSiteCode + + + HrmAprslSpcTmpl + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + + + + AprslSpcDeptCode + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + + + + + AprslSpcEmpNo + + + HrmAprslSpcTmpl + + + U + HrmThirdFacade + getSpcEmployeeLOVData + N + + + N + HrmThirdFacade + getSpcEmployeeLOVData + N + + + + + HrmAprslSpcTmplGoals + + + U + HrmThirdFacade + getSpcEmployeeLOVData + N + + + N + HrmThirdFacade + getSpcEmployeeLOVData + N + + + + + HrmAprslSpcTmplEmpElig + + + U + HrmThirdFacade + getSpcEmployeeLOVData + N + + + N + HrmThirdFacade + getSpcEmployeeLOVData + N + + + + + + + + + AprslStartOrd + + + HrmAprslSpcTmpl + + + Q + HrmThirdFacade + getQueryStartOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getQueryStartOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + HrmAprslSpcTmplEmpElig + + + Q + HrmThirdFacade + getQueryStartOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + + + + AprslGoalSecCode + + + HrmAprslSpcTmplGoals + + + Q + HrmThirdFacade + getTempSectionData + N + + + U + HrmThirdFacade + getTempSectionData + N + + + N + HrmThirdFacade + getTempSectionData + N + + + + + + + + AprslStartOrderNo + + + HrmAprslStartOrder + + + Q + HrmThirdFacade + getHrmAprslStOrderNoLOVQrydata + N + + + + + + + + AprslStRuleStOrd + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQueryStOrdLOVData + N + + + U + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + N + HrmThirdFacade + getHrmAprslStartOrderLOVdata + N + + + + + + + + AprslStRuleEmpl + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQueryEmployeeLOVData + N + + + U + HrmThirdFacade + getEmployeeLOVData + N + + + N + HrmThirdFacade + getEmployeeLOVData + N + + + + + + + + AprslStRuleWrkGrp + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQueryWrkGrpLOVData + N + + + U + HrmThirdFacade + getWrkGrpLOVData + N + + + N + HrmThirdFacade + getWrkGrpLOVData + N + + + + + + + + + AprslStRuleSiteCode + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getQuerySiteCodeLOVData + N + + + U + HrmFacade + getHrmSiteCodeLOVdata + N + + + N + HrmFacade + getHrmSiteCodeLOVdata + N + + + + + + + + + AprslStRuleClsHdr + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getClsMstDataQ + N + + + U + HrmThirdFacade + getClsMstData + N + + + N + HrmThirdFacade + getClsMstData + N + + + + + + + + + AprslStRuleClsDtl + + + HrmAprslStartRule + + + Q + HrmThirdFacade + getClsDtlDataQ + N + + + U + HrmThirdFacade + getClsDtlData + N + + + N + HrmThirdFacade + getClsDtlData + N + + + + + + + + AprslKPA + + + HrmAppraisalTemplateKPA + + + U + HrmThirdFacade + getHrmAprslKPALOV + N + + + + + + + AprslRatingCode + + + HrmAppraisalTemplateSection + + + U + HrmFacade + getHrmRatingCodeLOVdata + N + + + Q + HrmThirdFacade + getAprslTmplRatingCodeQLOV + N + + + N + HrmFacade + getHrmRatingCodeLOVdata + N + + + + + + + AprslRatingCodeKPA + + + HrmAppraisalTemplateKPA + + + U + HrmFacade + getHrmRatingCodeLOVdata + N + + + Q + HrmThirdFacade + getAprslTmplRatingCodeQLOV + N + + + N + HrmFacade + getHrmRatingCodeLOVdata + N + + + + + + + + AprslTemplNameKPA + + + HrmAppraisalTemplateSection + + + Q + HrmThirdFacade + getHrmAprslTempNameQLOV + N + + + U + HrmThirdFacade + getHrmAprslTempNameQLOV + N + + + N + HrmThirdFacade + getHrmAprslTempNameQLOV + N + + + + + + + + AprslParentCode + + + HrmAppraisalTemplateSection + + + U + HrmThirdFacade + getHrmAprslParentCodeLOV + N + + + Q + HrmThirdFacade + getHrmAprslParentCodeLOV + N + + + N + HrmThirdFacade + getHrmAprslParentCodeLOV + N + + + + + + + AprslEmpNo + + + HrmAprslEmployee + + + Q + HrmThirdFacade + getHrmAprslEmpNoLOVData + N + + + + + + + SepEmpNo + + + HrmSeparationAppln + + + Q + HrmFacade + getSepEmpNoQLOVData + N + + + N + HrmFacade + getSepEmpNoNLOVData + N + + + + + + + + + SepApplnNo + + + HrmSeparationAppln + + + Q + HrmFacade + getHrmSepApplnNoLOVdata + N + + + + + + + + + SepCategory + + + HrmSeparationAppln + + + N + HrmFacade + getHrmSepCategoryLOVdata + N + + + + + + + + + + SepOrderNo + + + HrmSepOrder + + + Q + HrmFacade + getHrmSepOrderNoLOVdata + N + + + + + + + + + SepOrdApplnNo + + + HrmSepOrder + + + N + HrmFacade + getHrmSepOrderApplnNoLOVdata + N + + + Q + HrmFacade + getHrmSepOrderApplnNoLOVQdata + N + + + + + + + + + SepApprNo + + + HrmSepOrder + + + N + HrmFacade + getSepApprNameLOVData + N + + + + + + + + SeparationCode + + + HrmSepCatMst + + + Q + HrmFacade + getHrmSeparationCodeLOV + N + + + + + + + + + EmpNo + + + HrmSepClrEmp + + + Q + HrmFacade + getHrmSepClrEmpEmpNoLOVQ + N + + + N + HrmFacade + getHrmSepClrEmpEmpNoLOVN + N + + + + + + + + TmplDesc + + + HrmSepClrEmp + + + Q + HrmFacade + getHrmSepClrEmpTmplLOV + N + + + N + HrmFacade + getHrmSepClrEmpTmplLOV + N + + + + + + + + + HrmClrDesc + + + HrmSepClrTmplMst + + + Q + HrmFacade + getHrmSepClrLOV + N + + + U + HrmFacade + getHrmSepClrLOV + N + + + + + + + + HrmTmplDesc + + + HrmSepClrTmplMst + + + Q + HrmFacade + getHrmSepTmplLOV + N + + + + + + + + + + + + + PrmNoticeDtlNotNo + + + HrmPrmNoticeDtl + + + Q + HrmSecondFacade + getHrmPrmNoticeNoLOVData + N + + + U + HrmSecondFacade + getHrmPrmNoticeNoLOVData + N + + + + + + + + + + PromOrdEmpNo + + + HrmPrmOrder + + + Q + HrmSecondFacade + getPromOrderEmpNoQLOVData + N + + + N + HrmSecondFacade + getPromOrderEmpNoNLOVData + N + + + + + + + + + + PromOrdOrderNo + + + HrmPrmOrder + + + Q + HrmSecondFacade + getPromOrderNoQLOVData + N + + + + + + + + + + PromOrdToGrade + + + HrmPrmOrder + + + N + HrmSecondFacade + getPromToGradeNLOVData + N + + + + + + + + + + PromOrdToDesig + + + HrmPrmOrder + + + N + HrmSecondFacade + getPromToDesignationNLOVData + N + + + + + + + + + + PromOrdApprNo + + + HrmPrmOrder + + + N + HrmFacade + getSepApprNameLOVData + N + + + + + + + + PrmKPARatNo + + + HrmPrmKPARatingForm + + + N + HrmSecondFacade + getRatingCodeLOVData + N + + + Q + HrmSecondFacade + getRatNoLOVQdata + N + + + + + + + + PrmKPAGrpNo + + + HrmPrmKPARatingForm + + + U + HrmSecondFacade + getKPAGrpCodeLOVData + N + + + + + + + + + PrmKPAGrade + + + HrmPrmKPARatingForm + + + N + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmKPADesig + + + HrmPrmKPARatingForm + + + N + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmTestScrGrade + + + HrmPrmTestScoreForm + + + N + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmTestScrDesig + + + HrmPrmTestScoreForm + + + N + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmExpScrGrade + + + HrmPrmExperienceScoreForm + + + Q + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmExpScrDesig + + + HrmPrmExperienceScoreForm + + + Q + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmQualification + + + HrmPrmQualCriteria + + + N + HrmSecondFacade + getHrmPrmQualificationLOVdata + N + + + U + HrmSecondFacade + getHrmPrmQualificationLOVdata + N + + + + + + + + + PrmQualGrade + + + HrmPrmQualCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingGradeNLOVData + N + + + + + + + + PrmQualDesig + + + HrmPrmQualCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingDesignationNLOVData + N + + + + + + + + PrmPromFromGrade + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingFromGradeNLOVData + N + + + + + + + + PrmPromFromDesig + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingFromDesignationNLOVData + N + + + U + HrmSecondFacade + getPromKPARatingFromDesignationNLOVData + N + + + + + + + + PrmPromToGrade + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingToGradeNLOVData + N + + + + + + + + + PrmPromToDesig + + + HrmPrmCriteriaForm + + + Q + HrmSecondFacade + getPromKPARatingToDesignationNLOVData + N + + + U + HrmSecondFacade + getPromKPARatingToDesignationNLOVData + N + + + + + + + + HrmPrmViewAssSiteCode + + + HrmPrmViewAss + + + Q + HrmSecondFacade + getPrmViewAssSiteCodeLOVData + N + + + + + + + + HrmPrmViewAssNoticeCode + + + HrmPrmViewAss + + + Q + HrmSecondFacade + getPrmViewAssNoticeCodeLOVData + N + + + + + + + + HrmPrmViewAssPromotionCode + + + HrmPrmViewAss + + + Q + HrmSecondFacade + getPrmViewAssPromotionCodeLOVData + N + + + + + + + + HrmPrmEmployeeNo + + + HrmPrmViewAss + + + U + HrmSecondFacade + getPrmEmployeeNoLOVData + N + + + N + HrmSecondFacade + getPrmEmployeeNoLOVData + N + + + + + + + + HrmPrmDtlPositionCode + + + HrmPrmViewAss + + + U + HrmSecondFacade + getPrmViewAssPosCodeLOVData + N + + + N + HrmSecondFacade + getPrmViewAssPosCodeLOVData + N + + + + + + + + + PrmNotGrade + + + HrmPrmNoticeForm + + + U + HrmSecondFacade + getPromNotGradeNLOVData + N + + + + + + + + PrmNotDesig + + + HrmPrmNoticeForm + + + U + HrmSecondFacade + getPromNotDesignationNLOVData + N + + + + + + + + + HrmPrmNo + + + HrmPrmGenAss + + + Q + HrmSecondFacade + getPrmGenAssPrmNoLOVData + N + + + N + HrmSecondFacade + getPrmGenAssPrmNoLOVData + N + + + + + + + + Site + + + HrmPrmGenAss + + + Q + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + N + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + U + HrmSecondFacade + getHrmTrngSiteLOVdata + N + + + + + + + + + + + + + + + RepConfirmationDue + + + RepConfirmationDueScreen + + + Q + HrmFacade + getYYMMReportLOVData + N + + + + + + + + RepStaffingListEmp + + + RepStaffingListEmpScreen + + + Q + HrmFacade + getDesigIdReportLOVData + Q + + + + + + + + RepGrossSalExec + + + RepGrossSalExecScreen + + + Q + HrmFacade + getYYMMReportLOVData + Q + + + + + + + + RepCessationList + + + RepCessationListScreen + + + Q + HrmFacade + getYYMMReportLOVData + Q + + + + + + + + + + + + HrmAttShftCode + + + HrmAttEmpAttIn + + + Q + HrmSecondFacade + getHrmAttEmpShftCodeLOV + N + + + U + HrmSecondFacade + getHrmAttEmpShftCodeLOV + U + + + N + HrmSecondFacade + getHrmAttEmpShftCodeLOV + U + + + + + + + + HrmAttQueryShftCode + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttQueryEmpShftCodeLOV + N + + + U + HrmSecondFacade + getHrmAttQueryEmpShftCodeLOV + U + + + N + HrmSecondFacade + getHrmAttQueryEmpShftCodeLOV + U + + + + + + + + HrmAttLocation + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttQueryLocationLOV + N + + + U + HrmSecondFacade + getHrmAttQueryLocationLOV + N + + + + + + + HrmAttQueryDtlEmpNo + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttQueryDtlEmpLOV + N + + + U + HrmSecondFacade + getHrmAttQueryDtlEmpLOV + N + + + + + + + HrmAttEmpNo + + + HrmAttEmpAttQuery + + + Q + HrmSecondFacade + getHrmAttEmployeeLOV + N + + + U + HrmSecondFacade + getHrmAttEmployeeLOV + U + + + + + + + + AttEmpNo + + + HrmAttEmpDayOff + + + Q + HrmSecondFacade + getHrmAttEmpNoDayOffQueryLOVdata + N + + + N + HrmSecondFacade + getHrmAttEmpNoDayOffInsertLOVdata + N + + + + + + + + AttEmpNoDtl + + + HrmAttEmpDayOff + + + N + HrmFacade + getHrmPersDtlEmpNoLOVdata + N + + + U + HrmFacade + getHrmPersDtlEmpNoLOVdata + N + + + + + + + + HrmAttSftRoster + + + HrmAttEmpShiftRoster + + + Q + HrmFacade + getHrmWorkGroupCodeLOVdata + N + + + + + + + HrmAttSiteCode + + + HrmAttEmpShiftRoster + + + Q + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + U + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + + HrmAttEmpSftRoster + + + HrmAttEmpShiftRoster + + + Q + HrmFacade + getHrmEncshEmpLOVdata + N + + + U + HrmFacade + getHrmEncshEmpLOVdata + N + + + + + + + + + + + HrmAttSftRosterGenSiteCode + + + HrmAttShiftRosterGen + + + Q + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + N + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + + RosterGenWorkGroup + + + HrmAttShiftRosterGen + + + Q + HrmSecondFacade + getShiftRosterGenWorkGrpLOVData + N + + + N + HrmSecondFacade + getShiftRosterGenWorkGrpLOVData + N + + + + + + + + + ShiftCode + + + HrmAttWorkGroupShift + + + Q + HrmSecondFacade + getHrmAttWorkGrpShiftCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttWorkGrpShiftCodeLOVdataQmode + N + + + U + HrmSecondFacade + getHrmAttWorkGrpShiftCodeLOVdataQmode + N + + + + + + + + + EmpNo + + + HrmAttEmpShift + + + Q + HrmSecondFacade + getHrmAttESEmpNoLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttESEmpNoLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttESEmpNoLOVdataNmode + N + + + + + + + + + ShiftCode + + + HrmAttEmpShift + + + Q + HrmSecondFacade + getHrmAttESShiftCodeLOVdataNmode + N + + + N + HrmSecondFacade + getHrmAttESShiftCodeLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttESShiftCodeLOVdataNmode + N + + + + + + + + + HrmAttSftMst + + + HrmAttShiftMst + + + Q + HrmSecondFacade + getShiftCodeLOVData + N + + + N + HrmSecondFacade + getShiftCodeLOVData + N + + + U + HrmSecondFacade + getShiftCodeLOVData + N + + + + + + + AttWorkGroup + + + HrmAttWorkGroupDayOff + + + Q + HrmSecondFacade + getHrmAttWorkGroupQueryLOVdata + N + + + N + HrmSecondFacade + getHrmAttWorkGroupInsertLOVdata + N + + + + + + + + AttSite + + + HrmAttWorkGroupDayOff + + + Q + HrmSecondFacade + getHrmAttWorkGroupSiteQueryLOVdata + N + + + N + HrmFacade + getHrmWorkSiteCodeLOVdata + N + + + + + + + SiteCode + + + HrmAttWorkGroupShift + + + Q + HrmSecondFacade + getHrmAttWorkGrpSiteCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttWorkGrpSiteCodeLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttWorkGrpSiteCodeLOVdataNmode + N + + + + + + + + + WrkGroupCode + + + HrmAttWorkGroupShift + + + Q + HrmSecondFacade + getHrmAttWorkGrpCodeLOVdataQmode + N + + + N + HrmSecondFacade + getHrmAttWorkGrpCodeLOVdataNmode + N + + + U + HrmSecondFacade + getHrmAttWorkGrpCodeLOVdataQmode + N + + + + + + + + + + HrmMisRepPost + + + HrmMisReport + + + Q + HrmFacade + getMisPositionLOVData + N + + + N + HrmFacade + getMisPositionLOVData + N + + + U + HrmFacade + getMisPositionLOVData + N + + + + + + + + HrmMisRepYYYYMM + + + HrmMisReport + + + Q + HrmFacade + getMisYearMonthLOVData + N + + + N + HrmFacade + getMisYearMonthLOVData + N + + + U + HrmFacade + getMisYearMonthLOVData + N + + + + + + + + + + HrmMediClaimClass + + + HrmMediclaimMaster + + + Q + HrmFacade + getHrmMediClassLOVdata + N + + + N + HrmFacade + getHrmMediClassLOVdata + N + + + U + HrmFacade + getHrmMediClassLOVdata + N + + + + + + + + HrmMediClaimCadre + + + HrmMediclaimMaster + + + Q + HrmFacade + getHrmMediCadreLOVdata + N + + + N + HrmFacade + getHrmMediCadreLOVdata + N + + + U + HrmFacade + getHrmMediCadreLOVdata + N + + + + + + + + WorkId + + + HrmMyWorkflow + + + Q + HrmFacade + getWorkIdLOVdata + N + + + N + HrmFacade + getWorkIdLOVdata + N + + + + + + + QueryCode + + + HrmAdhocReport + + + Q + HrmSecondFacade + getQueryLOVData + N + + + + + + + + RstrEtySocialStatus + + + HrmRoasterEntry + + + U + HrmSecondFacade + getRstrSocialStatusLOVdata + N + + + Q + HrmSecondFacade + getRstrSocialStatusLOVdata + N + + + N + HrmSecondFacade + getRstrSocialStatusLOVdata + N + + + + + + + + RoasterCode + + + HrmRoasterEntry + + + Q + HrmSecondFacade + getRstrCodeLOVdata + N + + + N + HrmSecondFacade + getRstrCodeLOVdata + N + + + + + + + + RoasterEmpdetailsCode + + + HrmRoasterEntry + + + U + HrmSecondFacade + getRoasterEmpDetailsLOVdata + N + + + Q + HrmSecondFacade + getRoasterEmpDetailsLOVdata + N + + + N + HrmSecondFacade + getRoasterEmpDetailsLOVdata + N + + + + + + \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseReport.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseReport.xml new file mode 100644 index 0000000..b65d2e9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/EnrgiseReport.xml @@ -0,0 +1,337 @@ + + + + Hrms + + + + RepAllIndiaManpowerScreen + + + RepAllIndiaManpowerKey + hrmRepAllIndiaManpowerReport + + + + + + HrmLvAppln + + + EmpLeaveLedgerKey + hrmEmpLeaveLedgerReport + + + + + + + RepConfirmationDueScreen + + + RepConfirmationDueKey + hrmRepConfirmationDueReport + + + + + + + RepQualAllIndiaEmpScreen + + + RepQualAllIndiaEmpKey + hrmRepQualAllIndiaEmpReport + + + + + + + + RepGrossSalExecScreen + + + RepGrossSalExecKey + hrmRepGrossSalExecReport + + + + + + + RepCostToCompanyScreen + + + RepCostToCompanyFileKey + hrmRepCostToCompanyFileReport + + + + + + + RepPromotionListScreen + + + RepPromotionListKey + hrmRepPromotionListReport + + + + + + + RepPerformanceAppraisalScreen + + + RepPerformanceAppraisalKey + hrmRepPerformanceAppraisalReport + + + + + + + RepOfficersRatedPoorScreen + + + RepOfficersRatedPoorKey + hrmRepOfficersRatedPoorReport + + + + + + + + RepRatingVisAVisAwardScreen + + + RepRatingVisAVisAwardKey + hrmRepRatingVisAVisAwardReport + + + + + + + + RepConfidentialFileScreen + + + RepConfidentialFileKey + hrmRepConfidentialFileReport + + + + + + + RepTrainingDetailsScreen + + + RepTrainingDetailsKey + hrmRepTrainingDetailsReport + + + + + + + + RepMTExecDetailsScreen + + + RepMTExecDetailsKey + hrmRepMTExecDetailsReport + + + + + + + + RepRetirementDetailsScreen + + + RepRetirementDetailsKey + hrmRepRetirementDetailsReport + + + + + + + RepCessationListScreen + + + RepCessationListKey + hrmRepCessationListReport + + + + + + + RepRecruitmentListScreen + + + RepRecruitmentListKey + hrmRepRecruitmentListReport + + + + + + + + RepRecrVisAVisSepScreen + + + RepRecrVisAVisSepKey + hrmRepRecrVisAVisSepReport + + + + + + + + RepRecrCessStatusScreen + + + RepRecrCessStatusKey + hrmRepRecrCessStatusReport + + + + + + + + RepJoiningStatusScreen + + + RepJoiningStatusKey + hrmRepJoiningStatusReport + + + + + + + + RepHistOfEmpScreen + + + RepHistOfEmpKey + hrmRepHistOfEmpReport + + + + + + + RepStatusOfDiscCasesScreen + + + RepStatusOfDiscCasesKey + hrmRepStatusOfDiscCasesReport + + + + + + + + RepStaffingListEmpScreen + + + RepStaffingListEmpKey + hrmRepStaffingListEmpReport + + + + + + + + RepImpactFinYearScreen + + + RepImpactFinYearKey + hrmRepImpactFinYearReport + + + + + + + RepManpowerMediclaimScreen + + + RepManpowerMediclaimKey + hrmRepManpowerMediclaimReport + + + + + + + + RepDistnOfManpowerScreen + + + RepDistnOfManpowerKey + hrmRepDistnOfManpowerReport + + + + + + + HrmMisReport + + + RepHrmMisReportKey + hrmRepMisReport + + + + + + + HrmRetFrcst + + + RepHrmRetireForecastReportKey + hrmRepRetireForecastReport + + + + + + + HrmAgeAnalysis + + + RepHrmAgeAnalysisReportKey + hrmRepAgeAnalysisReport + + + + + + + HrmAcademicQual + + + RepHrmAcademicQualReportKey + hrmRepAcademicQualReport + + + + + + diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/WflDocParameters.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/WflDocParameters.xml new file mode 100644 index 0000000..0f4c281 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/WflDocParameters.xml @@ -0,0 +1,139 @@ + + + + Leave + wenrgise.hrms.webtier.form.HrmLvApplnForm + HrmLvApplnForm + leaveForward + HrmLvAppln + + + + LvCncl + wenrgise.hrms.webtier.form.HrmLvCancForm + HrmLvCancForm + leaveCnclForward + HrmEmployeeLeaveCancellationBatchScreen + + + + LvEncash + wenrgise.hrms.webtier.form.HrmLvEncashForm + HrmLvEncashForm + leaveEncashForward + HrmEmpLeaveEncashment + + + + LoanAppln + wenrgise.hrms.webtier.form.HrmLnAppForm + HrmLnAppForm + loanForward + HrmLnApp + + + Appraisal + wenrgise.hrms.webtier.form.HrmAprslForm + HrmAprslForm + aprslForward + HrmAprslKPA + + + + AdvanceAppln + wenrgise.hrms.webtier.form.HrmAdvApplnForm + HrmAdvApplnForm + advanceApplnForward + HrmEmpAdvance + + + AdvanceSettle + wenrgise.hrms.webtier.form.HrmAdvSettleForm + HrmAdvSettleForm + advanceSettleForward + HrmAdvanceSettle + + + + DeputationAppln + wenrgise.hrms.webtier.form.HrmATDDptnApplForm + HrmATDDptnApplForm + deputApplnForward + HrmATDDptnAppl + + + + DeputChrgRpt + wenrgise.hrms.webtier.form.HrmATDDptnChrgRptForm + HrmATDDptnChrgRptForm + deputChrgRptForward + HrmATDDptnChrgRpt + + + + DeputOrderSngEmp + wenrgise.hrms.webtier.form.HrmATDDptnOrderForSingleEmpForm + HrmATDDptnOrderForSingleEmpForm + dptnOrderSngEmpForward + HrmATDDptnOrderForSingleEmp + + + + TransAppln + wenrgise.hrms.webtier.form.HrmATDTransApplForm + HrmATDTransApplForm + transApplnForward + HrmATDTransAppl + + + + TransChrgRpt + wenrgise.hrms.webtier.form.HrmATDTransChrgRptForm + HrmATDTransChrgRptForm + transChrgRptForward + HrmATDTransChrgRpt + + + + TransCncl + wenrgise.hrms.webtier.form.HrmATDTransCnclApplForm + HrmATDTransCnclApplForm + transCnclForward + HrmATDTransCnclAppl + + + + TransCnclOrder + wenrgise.hrms.webtier.form.HrmATDTransCnclOrderSingleEmpForm + HrmATDTransCnclOrderForSingleEmpForm + transCnclOrderForward + HrmATDTransCnclOrderForSingleEmp + + + + TransOrder + wenrgise.hrms.webtier.form.HrmATDTransOrderForSingleEmpForm + HrmATDTransOrderForSingleEmpForm + transOrderForward + HrmATDTransOrderForSingleEmp + + + + + AppraisalSpcTmpl + wenrgise.hrms.webtier.form.HrmAprslSpcTmplForm + HrmAprslSpcTmplForm + aprslSpcTmplForward + HrmAprslSpcTmpl + + + + + TrngReq + wenrgise.hrms.webtier.form.HrmTrngEmpReqForm + HrmTrngEmpReqForm + trngReqForward + HrmTrngEmpReq + + + diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/ApplicationResources.properties b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/ApplicationResources.properties new file mode 100644 index 0000000..8d9276d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/ApplicationResources.properties @@ -0,0 +1,5000 @@ +index.title=hrm +index.heading=Human Resource Management for Wenrgise +index.message=Human Resource Management for Wenrgise. +errors.login=
  • Username/Password does not Match
  • +wenrgise.authorisation.error={0} Right Does Not Exist +wenrgise.common.session.expire=Current Session has been expired, Please Login again. +right.for.insert=Insert +right.for.update=Update +right.for.delete=Delete +right.for.execute=Execute +right.for.approve=Approve +wenrgise.searching.error=No Rows Found For This Search Criteria +wenrgise.common.user.name=User: +wenrgise.common.site.name=Site: +hrms.common.yyyymm=Year Month should be specified in proper format. +hrm.common.incorrectTimeFormat=Enter time in hh:mm format in detail row{0} +hrm.common.incorrectTimeFormatHour=Enter proper value of time in detail row{0} +hrm.common.incorrectTimeFormatMin=Enter proper value of minute in detail row{0} + + +hrm.HrmEmpPersonalDetails.checkExpFromLength=Improper value of From Date. The length should be 6 +hrm.HrmEmpPersonalDetails.checkExpToLength=Improper value of To Date. The length should be 6 +hrm.HrmEmpPersonalDetails.checkJoinDateValidation2=Bank Joining Date cannot be future date. +hrm.HrmEmpPersonalDetails.checkJoinDateValidation1=Status Effect Date cannot be prior to Bank Joining Date. +hrm.HrmEmpPersonalDetails.checkPersDateValidation1=Last Promotion Date cannot be prior to Date Of Birth. +hrm.HrmEmpPersonalDetails.checkPersDateValidation2=Passport Expiry Date cannot be prior to Passport Issue Date. +hrm.HrmEmpPersonalDetails.checkPersDateValidation3=Date Of Birth cannot be a future date. +hrm.HrmEmpPersonalDetails.checkPersDateValidation=Location Joining Date cannot be prior to Date Of Birth. +hrm.HrmEmpPersonalDetails.checkBaseSiteId=Please enter the Branch of the employee in Personal Details Tab first. +wenrgise.dateValidation.new=Effective To cannot be prior to Effective From +hrm.HrmAdvertisementAttribute.id=ID +hrm.HrmAdvertisementAttribute.grade=Grade +hrm.HrmAdvertisementAttribute.design=Designation + +wenrgise.hrms.norecordfound=No record found. +wenrgise.common.norecordfound=No record found. +wenrgise.common.norowselected=No row Selected. + +wenrgise.common.jumpHeader=Go +wenrgise.common.jumpDetail=Go +hrm.EditBox.text=Text +hrm.EditBox.type=TYPE YOUR TEXT HERE +hrm.select=------------------ +wenrgise.lov.SearchField1= +wenrgise.lov.SearchField2= +wenrgise.lov.SearchField3= +wenrgise.lov.SearchField4= +wenrgise.lov.SearchField5= +wenrgise.lov.SearchField6= +wenrgise.common.rowsFound=Matching Rows Found +wenrgise.common.rowsNotFound=No Matching Rows Found +wenrgise.common.search=Search +wenrgise.common.select=Select +wenrgise.common.delRow=Delete Row +wenrgise.common.getDetail= Get Detail  +wenrgise.common.addRow=  Add Row   +wenrgise.common.exit= Exit  +wenrgise.common.blank= +wenrgise.common.view=View +wenrgise.common.go=Jump +wenrgise.common.cancel=Cancel +wenrgise.common.ok=Ok +wenrgise.common.yes=Yes +wenrgise.common.no=No +wenrgise.common.approve=Approve +wenrgise.common.reject=Reject +wenrgise.common.submit=Submit +wenrgise.dateOfBirth.dateConstraintViolated=Date Of Birth Should be a Past Date. +wenrgise.dateOfMisconduct.dateConstraintViolated=Date Of Misconduct Should be a Past Date. +wenrgise.retirementDate.dateConstraintViolated=Retirement Date cannot be less than Bank Joining Date +wenrgise.confDate.dateConstraintViolated=Confirmation Date cannot be less than Bank Joining Date +hrm.approve.common=This Record is Already Approved/Rejected. +wenrgise.common.system=Fatal System Error caused by Network problem or like. +wenrgise.common.sessiontimedout=Session timed out. +wenrgise.sysadmin.nodetailrecord=Nol detail record. +wenrgise.common.deletion.rejected=Deletion is not possible because status is not new. +wenrgise.common.navigation=Navigational error. +wenrgise.common.saveheaderrecord=Save header record. +wenrgise.common.savefirst=Save detail record. +wenrgise.common.datashouldbesaved=Data should be saved. +wenrgise.common.changed=Data already modified earlier. +wenrgise.common.headerNavigation=Please select a valid header record number. +wenrgise.common.detailNavigation=Please select a valid detail record number. +wenrgise.common.uniqueConstraintViolated=Data could not be saved because of violation of unique key. +wenrgise.common.detail.mandatoryFieldMissing={0} field missing in row {1} of detail. +wenrgise.common.onlyDetail.mandatoryFieldMissing={0} field missing in detail. +wenrgise.common.onlyDetailAdd.mandatoryFieldMissing={0} : {1} field missing in detail. +wenrgise.common.header.mandatoryFieldMissing={0} field Missing in Header Record. +wenrgise.common.document.revised=Revised Document cannot be updated/deleted +wenrgise.common.header.status=Approved/Revised/Rejected Document cannot be updated. +wenrgise.common.header.uniqueConstraintViolated=Unique key constraint violated for the Header Record. +wenrgise.common.detail.uniqueConstraintViolated=Unique key constraint violated for the Detail Record. +wenrgise.common.detail.uniqueKeyViolated=Unique key constraint violated for {0} in row {1}. +wenrgise.common.header.invalidNumber={0} is not a valid number in the Header +wenrgise.common.header.IsNotPositive={0} should be positive +wenrgise.common.deleteNotPossible={0} record cannot be deleted +wenrgise.hrm.loanMst.dateError=Policy Start Date can't be Greater than Policy End Date. +wenrgise.hrm.addrow.mandatory.missing=Mandatory Field missing in detail record. +hrm.loan.detail.allemployeeerror=If the conditions are applied to all the employees then there should be only one row in the detail. +hrm.loan.detail.detailFound=Record can't be Deleted as Child Record Exists in Employee Loan Application. +hrm.loan.hdr.detailFound=Can't be Deleted as Detail Record Exists Against the Header. +wenrgise.hrms.detail.prmViewAssWritten=The Written Mark doesn't match with the marks given in the test score screen for row {0}. +wenrgise.hrms.detail.prmViewAssToPosition=For this promotion no records found in Test Score screen. +wenrgise.hrms.detail.prmViewAssGD=The GD Mark doesn't match with the marks given in the test score screen for row {0}. +wenrgise.hrms.detail.prmViewAssInterview=The Interview Mark doesn't match with the marks given in the test score screen for row {0}. +wenrgise.hrms.viewAssdetail.invalidWrittenMarks=The {0} exceeds the maximum Written Mark in row {1} of Detail. +wenrgise.hrms.viewAssdetail.invalidGDMarks=The {0} exceeds the maximum GD Mark in row {1} of Detail. +wenrgise.hrms.viewAssdetail.invalidInterviewMarks=The {0} exceeds the maximum Interview Mark in row {1} of Detail. +wenrgise.hrms.detail.prmViewAssPromotionFlag=The No.of elegible employees for promotion exceeds the maximum vacency for the required position. +save.before.freeze=The record should be saved before freezing. +wenrgise.hrmEmpPers.error.PFpercent=The sum of total percentage should be 100 + +wenrgise.common.datasaved=Data saved successfully. +wenrgise.common.fieldIsUnique=This field is unique. Please enter another value. +wenrgise.common.updation=This field is refferenced. It cannot be updated. +wenrgise.common.field.duplicatefound=Duplicate value of unique field found.Save not possible. +wenrgise.common.deletion=This field is referenced. It cannot be deleted. +wenrgise.common.header.value=Improper Values +wenrgise.common.dateConstraintViolated=Improper Value of Dates + +wenrgise.common.FromTodateConstraintViolated=To Date should be greater than From Date +wenrgise.common.PrevRowdateConstraintViolated=From Date should be greater than Previous Row To Date +wenrgise.common.header.uniqueConstraintViolated=Data could not be saved because of violation of unique key. +wenrgise.common.exception.handOverDate=Hand Over Date Should Be greater Than Transfer Date +wenrgise.common.header.field=Cancel Order for this application no already exists +wenrgise.common.header.status=Application for this emp no already exists . +wenrgise.common.updation.mode=Updation is possible only in new mode. + +wenrgise.hrm.startOrder.pDateError=Period End Date can't be Greater than Period Start Date +wenrgise.hrm.startOrder.apDateError=Appraisal End Date can't be Greater than Appraisal Start Date +wenrgise.hrms.settleHeads.amount=Settlement Amount Should Be Less Than The Maximum Limit. +wenrgise.hrms.advSettle.amount=Settlement Amount Should Be Less Than The Applied Amount. +hrm.common.approve=This Record is Already Approved/Rejected. +wenrgise.empTransApp.designation.value= From Designation and To Designation cannot be equal. +wenrgise.empTransApp.site.value=From Site and To Site1 must be there. +wenrgise.empTransApp.fromSite.value=From Site cannot be equal to To Site preferences. +wenrgise.empTransApp.toSite.value=To site preferences cannot be equal. +wenrgise.empTransApp.office.value=Office Note No and Office Note Date must be there. +wenrgise.empTransApp.dateConstraintViolated=Office Note Date must be greater than Application Date. +wenrgise.empTransApp.dateConstraintViolated2=Office Note Date cannot be future date. +wenrgise.empTransApp.dateConstraintViolated3=Application Date cannot be future date. + +wenrgise.empTransApp.sectional.value=In Case of Sectional Transfer ,site preferences cannot be there. +wenrgise.empTransApp.self.value=In Case of self generation,office values cannot be there. + +wenrgise.empTransCncl.office.value=Office Note No and Office Note Date must be there. +wenrgise.empTransCncl.officedateConstraintViolated=Office Note Date must be greater than app date. +wenrgise.empTransCncl.defdateConstraintViolated=Deferred Date must be greater than Transfer Effect Date. +wenrgise.empTransCncl.defer.value=Defer Date must be there. + +wenrgise.empTransCnclOrder.orderdateConstraintViolated=Order Date must be greater than AppDate. +wenrgise.empTransCnclOrder.defdateConstraintViolated=Deferred Date must be greater than Transfer Effect Date. +wenrgise.empTransCncl.appdateConstraintViolated=Cancellation Application Date cannot be prior to Transfer Order Date +wenrgise.empTransCnclOrder.defer.value=Defer Date must be there. + + +wenrgise.rlseOrder.rlsedateConstraintViolated=Release Date must be greater than Release Order Date. +wenrgise.rlseOrder.rlseOrderDateConstraintViolated=Release Order Date must be greater than max Transfer Order Date. + +wenrgise.dateApplied.dateConstraintViolated=Date Applied should lie within the current calendar boundary +wenrgise.fromAppDate.dateConstraintViolated=From Date should lie within the current calendar boundary +wenrgise.toAppDate.dateConstraintViolated=To Date should lie within the current calendar boundary + +wenrgise.fromCrsDate.dateConstraintViolated=From Date should be within the Calendar boundary +wenrgise.toCrsDate.dateConstraintViolated=To Date should be within the Calendar boundary +wenrgise.fromCourseDate.dateConstraintViolated=Start Date should be within the Calendar boundary +wenrgise.toCourseDate.dateConstraintViolated=End Date should be within the Calendar boundary +wenrgise.toFromDate.dateConstraintViolated=End date should be greater than Start Date + +hrm.HrmEmpEncash.header.encashLimit=Days Encashed Has Exceeded The Encashable Limit Per Year. +hrm.HrmEmpEncash.header.totalEncashLimit=Days Encashed Has Exceeded The Encashable Limit In A Service Period. +hrm.HrmEmpEncash.eligibleAmount=Gross Encashment Amount +wenrgise.common.detail.fromMonth1.dateConstraintViolated=Value of Effective From Month should be Greater than [00] +wenrgise.common.detail.fromMonth2.dateConstraintViolated=Value of Effective From Month should be Less Than or Equal To [12] +wenrgise.common.detail.toMonth1.dateConstraintViolated=Value of Effective To Month should be Greater than [00] +wenrgise.common.detail.toMonth2.dateConstraintViolated=Value of Effective To Month should be Less Than or Equal To [12] +wenrgise.leave.detail.dateConstraintViolated= Effective To Date Should Be Greater Then Effective From Date. +wenrgise.HrmLvAppln.header.dateValidation=To Date should be Greater than From Date. +wenrgise.HrmLvAppln.header.calendarValidation=To Date and From Date should lie within the same Calendar Period. +wenrgise.HrmLvAppln.header.startDateHoliday=Leave Start Date should not lie on a Holiday. +wenrgise.HrmLvAppln.header.endDateHoliday=Leave End Date should not lie on a Holiday. + + +hrms.hrmapp.kpa.wt=Weigtage is not present in row {0} +wenrgise.empDepDtl.father=Father Must Be Unique +wenrgise.empDepDtl.mother=Mother Must Be Unique +wenrgise.empDepDtl.wife=Wife Must Be Unique +wenrgise.empDepDtl.husband=Husband Must Be Unique + + +hrm.HrmGenEligRuleQuery.mainHeader=ELIGIBILITY RULE QUERY +hrm.HrmGenEligRuleQuery.docType=Document Type +hrm.HrmGenEligRuleQuery.leave=Leave +hrm.HrmGenEligRuleQuery.loan=Loan +hrm.HrmGenEligRuleQuery.advances=Advances +hrm.HrmGenEligRuleQuery.claims=Claims +hrm.HrmGenEligRuleQuery.earningDeduction=Earning/Deduction +hrm.HrmGenEligRuleQuery.separation=Separation +hrm.HrmGenEligRuleQuery.docCode=Document Code +hrm.HrmGenEligRuleQuery.effectFrom=Effect From +hrm.HrmGenEligRuleQuery.effectTo=Effect To +hrm.HrmGenEligRuleQuery.eligSql=Elig SQL + +hrm.startEndDate.dateConstraintViolated=End Date should be greater than Start Date. + +wenrgise.hol.value=Leave cannot be taken on a already existing holiday. +wenrgise.holiday.value=Leave cannot be taken on a holiday. + +wenrgise.lvCncl.value=Leave Cancellation cannot take place from middle. +hrm.title=Human Resource Management +hrm.pleaseSelect=------------Please Select----------- +hrm.yes=Yes +hrm.no=No +hrm.jan=January +hrm.feb=February +hrm.mar=March +hrm.apr=April +hrm.may=May +hrm.jun=June +hrm.jul=July +hrm.aug=August +hrm.sep=September +hrm.oct=October +hrm.nov=November +hrm.dec=December + +hrm.1=1 +hrm.2=2 +hrm.3=3 +hrm.4=4 + + +hrm.HrmHolidaytypeMst.heading=HOLIDAY TYPE MASTER +hrm.HrmHolidaytypeMst.holidayType=Holiday Type +hrm.HrmHolidaytypeMst.yearlyLimit=Yearly Limit +hrm.HrmHolidaytypeMst.mandatory=Mandatory +hrm.HrmHolidaytypeMst.compensatoryLeave=Compensatory Leave +hrm.HrmHolidaytypeMst.rewardPercentageOfBasic=Reward Percentage Of Basic +hrm.HrmHolidaytypeMst.negotiable=NEGOTIABLE +hrm.HrmHolidaytypeMst.restricted=RESTRICTED +hrm.HrmHolidaytypeMst.national=NATIONAL +hrm.HrmHolidaytypeMst.closedHoliday=CLOSED HOLIDAY +hrm.HrmHolidaytypeMst.checkYearlyLimit=Yearly Limit Cannot be entered as zero. + +hrm.HrmCalendarMaster.heading=CALENDAR MASTER +hrm.HrmCalendarMaster.startMonth=Start Month +hrm.HrmCalendarMaster.duration=Duration (in months) +hrm.HrmCalendarMaster.txtSlabBeginMonth=Slab Begin Month +hrm.HrmCalendarMaster.txtSlabNumber=Slab Number +hrm.HrmCalendarMaster.duration=Duration +hrm.HrmCalendarMaster.calendarType=Calendar Type +hrm.HrmCalendarMaster.calendarMasterDetails=Calendar Master Details +hrm.HrmCalendarMaster.txtDuration=Duration +hrm.HrmCalendarMaster.current=CURRENT +hrm.HrmCalendarMaster.abc=ABC +hrm.HrmCalendarMaster.abcNext=ABC '''''''''''''''' +hrm.HrmCalendarMaster.temp=TEMP +hrm.HrmCalendarMaster.acccal=ACCAL01 +hrm.HrmCalendarMaster.mytemp=MYTEMP +hrm.HrmCalendarMaster.2004=2004 +hrm.HrmCalendarMaster.financial=FINANCIAL +hrm.HrmCalendarMaster.durationValidation=The sum of durations in slab break up is not equal to total duration. +hrm.HrmCalendarMaster.slabBeginMonthValidation=Please check the Slab Begin Month +hrm.HrmCalendarMaster.slabBeginMonthValidation1=Slab Begin Month must coincide with Start Month in row 1 of detail +hrm.HrmCalendarMaster.zeroDuration=Duration cannot be zero in row {1} of detail + +hrm.HrmHolidayCalendar.heading=HOLIDAY CALENDAR +hrm.HrmHolidayCalendar.holidayCalMaster=Holiday Calendar Master +hrm.HrmHolidayCalendar.holidayCalDetail=Holiday Calendar Detail +hrm.HrmHolidayCalendar.calendarName=Calendar Name +hrm.HrmHolidayCalendar.description=Description +hrm.HrmHolidayCalendar.calendarYear=Calendar Year +hrm.HrmHolidayCalendar.fromDate=From Date +hrm.HrmHolidayCalendar.siteCode=Site Code +hrm.HrmHolidayCalendar.toDate=To Date +hrm.HrmHolidayCalendar.txtHolidayDate=Holiday Date +hrm.HrmHolidayCalendar.txtHolidayName=Holiday Name +hrm.HrmHolidayCalendar.txtHolidayType=Holiday Type +hrm.HrmHolidayCalendar.calCode=Calendar Code +hrm.HrmHolidayCalendar.siteDesc=Site Description +hrm.HrmHolidayCalendar.holidayDateValidation=Holiday Date must be within From Date and To Date +hrm.HrmHolidayCalendar.headerDateValidation=From Date must be less than To Date. +hrm.HrmHolidayCalendar.state=State +hrm.HrmHolidayCalendar.stateCode=State Code +hrm.HrmHolidayCalendar.stateDesc=State Description +hrm.HrmHolidayCalendar.sunday=Sunday +hrm.HrmHolidayCalendar.monday=Monday +hrm.HrmHolidayCalendar.tuesday=Tuesday +hrm.HrmHolidayCalendar.wednesday=Wednesday +hrm.HrmHolidayCalendar.thursday=Thursday +hrm.HrmHolidayCalendar.friday=Friday +hrm.HrmHolidayCalendar.saturday=Saturday +hrm.HrmHolidayCalendar.txtDay=Day of the Week + + +hrm.HrmCoreCompetency.desc=Description + +hrm.HrmQualificationMaster.heading=QUALIFICATION MASTER +hrm.HrmQualificationMaster.detail=Qualification Detail +hrm.HrmQualificationMaster.txtCode=Code +hrm.HrmQualificationMaster.txtQualification=Qualification +hrm.HrmQualificationMaster.txtNoOfYears=No.of Years +hrm.HrmQualificationMaster.txtApprovingAuthority=Approving Authority + +hrm.HrmRatingMaster.heading=RATING MASTER +hrm.HrmRatingMaster.ratingHeader=Rating Header +hrm.HrmRatingMaster.ratingDetail=Rating detail +hrm.HrmRatingMaster.ratingHeaderCode=Rating Header Code +hrm.HrmRatingMaster.minimumRating=Minimum Rating +hrm.HrmRatingMaster.qualifyingRating=Qualifying Rating +hrm.HrmRatingMaster.maximumRating=Maximum Rating +hrm.HrmRatingMaster.txtRatingFrom=Rating From +hrm.HrmRatingMaster.txtRatingTo=Rating To +hrm.HrmRatingMaster.txtRatingGrade=Rating Grade +hrm.HrmRatingMaster.txtDescription=Description +hrm.HrmRatingMaster.header.maxRating=Maximum Rating cannot be less than Qualifying Rating. +hrm.HrmRatingMaster.header.qualRating=Qualifying Rating cannot be less than Minimum Rating. +hrm.HrmRatingMaster.header.minRating=Maximum Rating cannot be less than Minimum Rating. +hrm.HrmRatingMaster.detail.detailUpdation=This Field cannot be updated. +hrm.HrmRatingMaster.detail.ratingFromValidation=Rating From must be greater than Rating To in previous row by 0.01. +hrm.HrmRatingMaster.detail.ratingFromComparison=Rating From cannot be less than Minimum Rating +hrm.HrmRatingMaster.detail.ratingToComparison=Rating To cannot be greater than Maximum Rating +hrm.HrmRatingMaster.numericEq=Numeric Equivalent +hrm.HrmRatingMaster.detail.ratingToValidation=Rating To must be greater than Rating From. + +hrm.HrmSkillMaster.heading=SKILL MASTER +hrm.HrmSkillMaster.skillTypeCode=Skill Type Code +hrm.HrmSkillMaster.skillTypeName=Skill Type Name +hrm.HrmSkillMaster.txtSkillCode=Skill Code +hrm.HrmSkillMaster.txtSkillName=Skill Name + +hrm.HrmReligionMaster.heading=RELIGION MASTER +hrm.HrmReligionMaster.detail=Religion Master +hrm.HrmReligionMaster.txtReligionName=Religion Name + +hrm.HrmClassificationDtls.heading=CLASSIFICATION DETAILS +hrm.HrmClassificationDtls.code=Type Code +hrm.HrmClassificationDtls.classificationType=Classification Type +hrm.HrmClassificationDtls.classificationDetails=Classification Details +hrm.HrmClassificationDtls.classificationHeader=Classification Header +hrm.HrmClassificationDtls.txtClassificationCode=Classification Code +hrm.HrmClassificationDtls.txtDescription=Description +hrm.HrmClassificationDtls.txtHierarchy=Hierarchy Level +hrm.HrmClassificationDtls.txtParentCode=Parent Code +hrm.HrmClassificationDtls.name=Name + + + +hrm.HrmScaleMaster.heading=SCALE MASTER +hrm.HrmScaleMaster.header=Scale Header +hrm.HrmScaleMaster.detail=Scale Detail +hrm.HrmScaleMaster.scaleCode=Pay Scale Code +hrm.HrmScaleMaster.desc=Description +hrm.HrmScaleMaster.txtStartBasic=Start Basic +hrm.HrmScaleMaster.txtIncrement=Increment +hrm.HrmScaleMaster.txtEndBasic=End Basic +hrm.HrmScaleMaster.payCommission=Pay Commisssion +hrm.HrmScaleMaster.first=First Pay Commission +hrm.HrmScaleMaster.second=Second Pay Commission +hrm.HrmScaleMaster.third=Third Pay Commission +hrm.HrmScaleMaster.fourth=Fourth Pay Commission +hrm.HrmScaleMaster.detail.increment=Difference of Start and End Basic must be multiple of rate of Increment. +hrm.HrmScaleMaster.detail.checkBasic=Start Basic must be equal to the End Basic of previous row. +hrm.HrmScaleMaster.detail.checkEndBasic=End Basic cannot be less than Start Baic. +hrm.HrmScaleMaster.detail.checkIncrement=Increment must be less than Start Basic and End Basic. +hrm.HrmScaleMaster.revision=Revision Year Month +hrm.HrmScaleMaster.grade=Grade +hrm.HrmScaleMaster.yyyymm=(YYYYMM) +hrms.scale.uniqueConstraintViolated=Combination of Scale and Revision Year Month must be unique. + +hrm.HrmPositionMaster.scaleCode=Scale Code +hrm.HrmPositionMaster.scale=Scale Description + + +hrm.HrmCountryMaster.heading=COUNTRY MASTER +hrm.HrmCountryMaster.header=Country Details +hrm.HrmCountryMaster.detail=City Details +hrm.HrmCountryMaster.countryCode=Country Code +hrm.HrmCountryMaster.countryName=Country Name +hrm.HrmCountryMaster.txtCityCode=City Code +hrm.HrmCountryMaster.txtCityName=City Name + +hrm.HrmWorkGroup.heading=WORK GROUP MASTER +hrm.HrmWorkGroup.code=Code +hrm.HrmWorkGroup.owingSite=Owing Site +hrm.HrmWorkGroup.name=Name +hrm.HrmWorkGroup.empNo=Employee Number +hrm.HrmWorkGroup.profitCentre=Profit Centre +hrm.HrmWorkGroup.costCentre=Cost Centre +hrm.HrmWorkGroup.deptFlag=Dept Flag +hrm.HrmWorkGroup.temporaryFlag=Temporary Flag +hrm.HrmWorkGroup.budgetCode=Budget Code +hrm.HrmWorkGroup.y=Yes +hrm.HrmWorkGroup.n=No +hrm.HrmWorkGroup.refDocNo=Ref. Doc.No +hrm.HrmWorkGroup.creationDate=Creation Date +hrm.HrmWorkGroup.endDate=End Date +hrm.HrmWorkGroup.documentDate=Document Date +hrm.HrmWorkGroup.specialRemarks=Sp.Remarks +hrm.HrmWorkGroup.hierarchyLevel=Hierarchy Level +hrm.HrmWorkGroup.parentGroupCode=Parent Group Code +hrm.HrmWorkGroup.contactEmployeeNo=Contact Employee Name +hrm.HrmWorkGroup.contactAddress=Address +hrm.HrmWorkGroup.fax=Fax +hrm.HrmWorkGroup.phone=Phone No. +hrm.HrmWorkGroup.eMail=E-Mail +hrm.HrmWorkGroup.d=Department +hrm.HrmWorkGroup.w=Work Group +wenrgise.workGroup.dateConstraintViolated=End Date should be Greater than Creation Date +wenrgise.workGroup.dateConstraintViolated1=Creation Date cannot be future date. +hrm.HrmWorkGroup.hierarchyLevel=Hierarchy Level + +hrm.HrmApprovalSchemeMaster.heading=APPROVAL SCHEME MASTER +hrm.HrmApprovalSchemeMaster.header=Document Type +hrm.HrmApprovalSchemeMaster.site=Site +hrm.HrmApprovalSchemeMaster.detail=Approval Scheme +hrm.HrmApprovalSchemeMaster.documentCode=Document Code +hrm.HrmApprovalSchemeMaster.site=Site +hrm.HrmApprovalSchemeMaster.description=Description +hrm.HrmApprovalSchemeMaster.department=Department +hrm.HrmApprovalSchemeMaster.txtApprover=Approver +hrm.HrmApprovalSchemeMaster.txtLevel=Level +hrm.HrmApprovalSchemeMaster.txtDelegate=Delegate? +hrm.HrmApprovalSchemeMaster.txtAlternateApprover=Alternate Approver + + +hrm.HrmRelationMaster.heading=RELATION MASTER +hrm.HrmRelationMaster.detail=List Of Relations +hrm.HrmRelationMaster.txtRelationCode=Relation Code +hrm.HrmRelationMaster.txtRelationName=Relation Name +hrm.HrmRelationMaster.txtOccurence=Occurence + +hrm.HrmLanguageMaster.heading=LANGUAGE MASTER +hrm.HrmLanguageMaster.detail=Language Details +hrm.HrmLanguageMaster.txtCode=Language Code +hrm.HrmLanguageMaster.txtDescription=Language Description + +hrm.HrmDistrictMaster.heading=DISTRICT MASTER +hrm.HrmDistrictMaster.detail=District Details +hrm.HrmDistrictMaster.txtCode=District Code +hrm.HrmDistrictMaster.txtDescription=District Name + +hrm.HrmTehsilMaster.heading=TEHSIL MASTER +hrm.HrmTehsilMaster.detail=Tehsil Details +hrm.HrmTehsilMaster.txtCode=Tehsil Code +hrm.HrmTehsilMaster.txtDescription=Tehsil Description + +hrm.aprsl.rule.header.mandatoryFieldMissing=If You Select {0}, then You must leave {1},{2},{3},{4} as blank. +hrm.StRule.SiteCode.mandatoryFieldMissing=You Cannot leave {0} as blank. +hrm.aprsl.StRule.all.header.mandatoryFieldMissing=You cannot leave {0},{1}, {2}, {3}, {4} as blank. +hrm.SpcTemp.Unique.Data=This Specific Template Name is already in Database for current Start Order No. +hrm.HrmEmployeeApplicationBatchUpdation.heading=EMPLOYEE APPLICATION BATCH UPDATION +hrm.HrmEmployeeApplicationBatchUpdation.advNo=Adv. No. +hrm.HrmEmployeeApplicationBatchUpdation.entryMode=Entry Mode +hrm.HrmEmployeeApplicationBatchUpdation.appNo=App. No. +hrm.HrmEmployeeApplicationBatchUpdation.designationApplied=Designation Applied +hrm.HrmEmployeeApplicationBatchUpdation.appDate= App. Date +hrm.HrmEmployeeApplicationBatchUpdation.firstName=First Name +hrm.HrmEmployeeApplicationBatchUpdation.middleName=Middle name +hrm.HrmEmployeeApplicationBatchUpdation.lastName=Last Name +hrm.HrmEmployeeApplicationBatchUpdation.joinedFlag=Joined Flag +hrm.HrmEmployeeApplicationBatchUpdation.medicalFlag=Medical Flag +hrm.HrmEmployeeApplicationBatchUpdation.DOB=D.O.B +hrm.HrmEmployeeApplicationBatchUpdation.nationality=Nationality +hrm.HrmEmployeeApplicationBatchUpdation.sex=Sex +hrm.HrmEmployeeApplicationBatchUpdation.resvCat=Resv. Cat. +hrm.HrmEmployeeApplicationBatchUpdation.maritalStatus=Marital Status +hrm.HrmEmployeeApplicationBatchUpdation.domicile=Domicile +hrm.HrmEmployeeApplicationBatchUpdation.writtenScore(A)=Written Score +hrm.HrmEmployeeApplicationBatchUpdation.writtenScore(B)=Written Score (Part B) +hrm.HrmEmployeeApplicationBatchUpdation.interviewScore=Interview Score +hrm.HrmEmployeeApplicationBatchUpdation.address=Address +hrm.HrmEmployeeApplicationBatchUpdation.qualificationDtls= Qualification Details +hrm.HrmEmployeeApplicationBatchUpdation.workExperience=Work Experience +hrm.HrmEmployeeApplicationBatchUpdation.recordStatus=Record Status +hrm.HrmEmployeeApplicationBatchUpdation.message=Message + + + +hrm.HrmAdvertiesmentMaintenance.heading=ADVERTISEMENT MAINTENANCE +hrm.HrmAdvertiesmentMaintenance.referenceNo=Reference No. +hrm.HrmAdvertiesmentMaintenance.entryMode=Entry Mode +hrm.HrmAdvertiesmentMaintenance.referenceDate=Reference Date +hrm.HrmAdvertiesmentMaintenance.mediaType=Media Type +hrm.HrmAdvertiesmentMaintenance.none=None +hrm.HrmAdvertiesmentMaintenance.electronicMedia=Electronic Media +hrm.HrmAdvertiesmentMaintenance.printMedia=Print Media +hrm.HrmAdvertiesmentMaintenance.cyberMedia=Cyber Media +hrm.HrmAdvertiesmentMaintenance.mediaName=Media Name +hrm.HrmAdvertiesmentMaintenance.lastDate=Last Date for Application Receipt +hrm.HrmAdvertiesmentMaintenance.minWrittenScoreA=Min Written Score +hrm.HrmAdvertiesmentMaintenance.minWrittenScoreB=Min GD Score +hrm.HrmAdvertiesmentMaintenance.minInterviewScore=Min Interview Score (1) +hrm.HrmAdvertiesmentMaintenance.minInterviewScore2=Min Interview Score (2) +hrm.HrmAdvertiesmentMaintenance.minInterviewScore3=Min Interview Score (3) +hrm.HrmAdvertiesmentMaintenance.venue=Venue +hrm.HrmAdvertiesmentMaintenance.date=Date +hrm.HrmAdvertiesmentMaintenance.time=Time +hrm.HrmAdvertiesmentMaintenance.description=Description[Max 250 Characters] +hrm.HrmAdvertiesmentMaintenance.minTotalScore=Min Total Score +hrm.HrmAdvertiesmentMaintenance.forPosition=For Position +hrm.HrmAdvertiesmentMaintenance.designation=Designation +hrm.HrmAdvertiesmentMaintenance.applicantCategory=Applicant Category +hrm.HrmAdvertiesmentMaintenance.reservationCategory=Reservation Category +hrm.HrmAdvertiesmentMaintenance.totalVacancy=Total Vacancy +hrm.HrmAdvertiesmentMaintenance.sex=Sex +hrm.HrmAdvertiesmentMaintenance.grade=Grade +hrm.HrmAdvertiesmentMaintenance.salaryBasis=Salary Basis +hrm.HrmAdvertiesmentMaintenance.scale=Scale +hrm.HrmAdvertiesmentMaintenance.fromBasic=From Basic +hrm.HrmAdvertiesmentMaintenance.toBasic=To basic +hrm.HrmAdvertiesmentMaintenance.discipline=Discipline +hrm.HrmAdvertiesmentMaintenance.minimumAge=Minimum Age +hrm.HrmAdvertiesmentMaintenance.maximumAge=Maximum Age +hrm.HrmAdvertiesmentMaintenance.maxAgeOnDate=Max Age On Date +hrm.HrmAdvertiesmentMaintenance.amount=Amount To Be Sent With The Application +hrm.HrmAdvertiesmentMaintenance.advAttrDtl=Advertisement Attribute Detail +hrm.HrmAdvertiesmentMaintenance.M=Male +hrm.HrmAdvertiesmentMaintenance.F=Female +hrm.HrmAdvertiesmentMaintenance.B=Both +hrm.HrmAdvertiesmentMaintenance.A=All +hrm.HrmAdvertiesmentMaintenance.code=Code + +hrm.HrmAdvertisementAttribute.heading=ADVERTISEMENT ATTRIBUTE DETAIL +hrm.HrmAdvertisementAttribute.qualCode=Qualification Code +hrm.HrmAdvertisementAttribute.mandatoryFlag=Mandatory Flag +hrm.HrmAdvertisementAttribute.maxmQualFlag=Maximum Qualification Flag +hrm.HrmAdvertisementAttribute.minPC=Minimum Percentage +hrm.HrmAdvertisementAttribute.locCode=Location Code +hrm.HrmAdvertisementAttribute.noOfVacancy=No. Of Vacancy +hrm.HrmAdvertisementAttribute.reqExp=Experience In Designation +hrm.HrmAdvertisementAttribute.expArea=Experience Area +hrm.HrmAdvertisementAttribute.exposureIn=Exposure In +hrm.HrmAdvertisementAttribute.minWrkExp=Minimum Work Experience +hrm.HrmAdvertisementAttribute.maxWrkExp=Maximum Work Experience +hrm.HrmAdvertisementAttribute.skillCode=Skill Code +hrm.HrmAdvertisementAttribute.skillDesc=Skill Type +hrm.HrmAdvertisementAttribute.skill=Skill +hrm.HrmAdvertisementAttribute.remarks=Any Additional Remarks +hrm.HrmAdvertisementAttribute.langCode=Language Code +hrm.HrmAdvertisementAttribute.reqType=Requirement Type +HrmAdvertisementAttribute.Desc=Description +hrm.HrmAdvertisementAttribute.Desc=Description +hrm.HrmAdvertisementAttribute.checkMinExp=Please check Minimum experience field. +hrm.HrmAdvertisementAttribute.checkMaxExp=Please check Maximum experience field. +hrm.HrmAdvertisementAttribute.specialisation=Specialisation +hrm.HrmAdvertisementAttribute.exposureIn=Exposure In +hrm.HrmAdvertisementAttribute.jobDesc=Job Description + +hrm.HrmScrutinizingApplicant.heading=SCRUTINIZING APPLICANT MAINTENANCE +hrm.HrmScrutinizingApplicant.referenceNo=Reference No. +hrm.HrmScrutinizingApplicant.adForDesignation=Advertisement For Designation +hrm.HrmScrutinizingApplicant.discipline=Discipline +hrm.HrmScrutinizingApplicant.true=Y +hrm.HrmScrutinizingApplicant.false=N + +hrm.HrmScrutinizingApplicant.stage=Applicantion Stage +hrm.HrmScrutinizingApplicant.i=Initial +hrm.HrmScrutinizingApplicant.w=Written +hrm.HrmScrutinizingApplicant.g=GD +hrm.HrmScrutinizingApplicant.iv=Interview +hrm.HrmScrutinizingApplicant.applicationStage=Application Stage + + + + +hrm.HrmScrutinizingApplicant.deselectAll=Deselect All +hrm.HrmScrutinizingApplicant.fromRank=From Rank +hrm.HrmScrutinizingApplicant.toRank=To Rank +hrm.HrmScrutinizingApplicant.selectAll=Select All +hrm.HrmScrutinizingApplicant.testCenter=Test Center +hrm.HrmScrutinizingApplicant.remarks=Remarks +hrm.HrmScrutinizingApplicant.rank=Rank +hrm.HrmScrutinizingApplicant.applicantNo=Applicant No. +hrm.HrmScrutinizingApplicant.applicantName=Applicant Name +hrm.HrmScrutinizingApplicant.writtemMarksA=Written Marks +hrm.HrmScrutinizingApplicant.writtemMarksB=GD Marks +hrm.HrmScrutinizingApplicant.interviewMarks=Interview Marks +hrm.HrmScrutinizingApplicant.totalScore=Total Score +hrm.HrmScrutinizingApplicant.expYrs=Exp in Years +hrm.HrmScrutinizingApplicant.eligibility=Eligible for Applicant +hrm.HrmScrutinizingApplicant.testCenter=Test Center +hrm.HrmScrutinizingApplicant.remarks=Remarks +hrm.HrmScrutinizingApplicant.questionSet=Qusetion set +hrm.HrmScrutinizingApplicant.range=Range +hrm.HrmScrutinizingApplicant.selectionRanges=Selection Ranges + + + +hrm.HrmEmployeeDependantDetails.heading=EMPLOYEE RELATION DETAILS +hrm.HrmEmployeeDependantDetails.employeeNo=Employee Number +hrm.HrmEmployeeDependantDetails.employeeName=Employee Name +hrm.HrmEmployeeDependantDetails.relationType=Relation +hrm.HrmEmployeeDependantDetails.depName=Dependant name +hrm.HrmEmployeeDependantDetails.sex=Sex +hrm.HrmEmployeeDependantDetails.DOB=Date Of Birth +hrm.HrmEmployeeDependantDetails.M=Male +hrm.HrmEmployeeDependantDetails.F=Female +hrm.HrmEmployeeDependantDetails.code=Relation Code +hrm.HrmEmployeeDependantDetails.orgName=School/College Name +hrm.HrmEmployeeDependantDetails.incomeAmount=Yearly Income/Pension + +hrm.HrmEmployeeLanguageBatchUpdation.heading=EMPLOYEE LANGUAGE BATCH UPDATION +hrm.HrmEmployeeLanguageBatchUpdation.employeeCode=Employee Code +hrm.HrmEmployeeLanguageBatchUpdation.checkDigit=Check Digit +hrm.HrmEmployeeLanguageBatchUpdation.serialNo=Sr. No. +hrm.HrmEmployeeLanguageBatchUpdation.languageCode=Language Code +hrm.HrmEmployeeLanguageBatchUpdation.recordStatus=Record Status + + +hrm.HrmEmployeePriorExperienceBatchUpdate.heading=EMPLOYEE PRIOR EXPERIENCE BATCH UPDATE +hrm.HrmEmployeePriorExperienceBatchUpdate.employeeNo=Emp. No. +hrm.HrmEmployeePriorExperienceBatchUpdate.checkDate=Check Dt. +hrm.HrmEmployeePriorExperienceBatchUpdate.serialNo=Sr. No. +hrm.HrmEmployeePriorExperienceBatchUpdate.fromPeriod=From Period(MMYYYY) +hrm.HrmEmployeePriorExperienceBatchUpdate.toPeriod=To Period(MMYYYY) +hrm.HrmEmployeePriorExperienceBatchUpdate.orgName=Organisation Name +hrm.HrmEmployeePriorExperienceBatchUpdate.location=Location +hrm.HrmEmployeePriorExperienceBatchUpdate.workDesc=Work Desc +hrm.HrmEmployeePriorExperienceBatchUpdate.designationCode=Designation Code +hrm.HrmEmployeePriorExperienceBatchUpdate.basic=Basic +hrm.HrmEmployeePriorExperienceBatchUpdate.DA=DA +hrm.HrmEmployeePriorExperienceBatchUpdate.allowence=Allowence +hrm.HrmEmployeePriorExperienceBatchUpdate.recordStatus=Record Status + + +hrm.HrmEmployeeIncrementBatchUpdation.mainHeader=EMPLOYEE INCREMENT BATCH UPDATION +hrm.HrmEmployeeIncrementBatchUpdation.employeeNo=Employee No. +hrm.HrmEmployeeIncrementBatchUpdation.checkDate=Check Date. +hrm.HrmEmployeeIncrementBatchUpdation.serialNo=Sr. No. +hrm.HrmEmployeeIncrementBatchUpdation.DOLP=D.O.L.P +hrm.HrmEmployeeIncrementBatchUpdation.orderDate=Order Date +hrm.HrmEmployeeIncrementBatchUpdation.basic=Basic +hrm.HrmEmployeeIncrementBatchUpdation.fromDesg=From Designation +hrm.HrmEmployeeIncrementBatchUpdation.toDesg=To Designation +hrm.HrmEmployeeIncrementBatchUpdation.fromDept=From Department +hrm.HrmEmployeeIncrementBatchUpdation.toDept=To Department +hrm.HrmEmployeeIncrementBatchUpdation.fromScale=From Scale +hrm.HrmEmployeeIncrementBatchUpdation.toScale=To Scale +hrm.HrmEmployeeIncrementBatchUpdation.fromSiteCode=From Site Code +hrm.HrmEmployeeIncrementBatchUpdation.toSiteCode=To Site Code +hrm.HrmEmployeeIncrementBatchUpdation.promotionFlag=Promotion Flag +hrm.HrmEmployeeIncrementBatchUpdation.substantive=Substantive +hrm.HrmEmployeeIncrementBatchUpdation.TB0=TB0 +hrm.HrmEmployeeIncrementBatchUpdation.TB1=TB1 +hrm.HrmEmployeeIncrementBatchUpdation.TB2=TB2 +hrm.HrmEmployeeIncrementBatchUpdation.TB3=TB3 +hrm.HrmEmployeeIncrementBatchUpdation.P=P + + +hrm.HrmEmployeeBatchUpdation.heading=EMPLOYEE BATCH UPDATION +hrm.HrmEmployeeBatchUpdation.employeeNo=Emp. No. +hrm.HrmEmployeeBatchUpdation.CD=CD +hrm.HrmEmployeeBatchUpdation.firstName=First Name +hrm.HrmEmployeeBatchUpdation.middleName=Middle Name +hrm.HrmEmployeeBatchUpdation.lastName=Last Name +hrm.HrmEmployeeBatchUpdation.basic=Basic +hrm.HrmEmployeeBatchUpdation.desig=Desig +hrm.HrmEmployeeBatchUpdation.dept=Dept +hrm.HrmEmployeeBatchUpdation.DOB=D.O.B +hrm.HrmEmployeeBatchUpdation.DOJ=D.O.J +hrm.HrmEmployeeBatchUpdation.DOLPSNo=DOLP S. No. +hrm.HrmEmployeeBatchUpdation.DOLP=D.O.L.P +hrm.HrmEmployeeBatchUpdation.siteCode=Site Code +hrm.HrmEmployeeBatchUpdation.status=Status +hrm.HrmEmployeeBatchUpdation.effectDate=Effect Date +hrm.HrmEmployeeBatchUpdation.SEPType=SEP Type +hrm.HrmEmployeeBatchUpdation.entryMode=Entry Mode +hrm.HrmEmployeeBatchUpdation.resv=Resv +hrm.HrmEmployeeBatchUpdation.scaleMode=Scale Mode +hrm.HrmEmployeeBatchUpdation.payrollMode=Payroll Mode +hrm.HrmEmployeeBatchUpdation.societyCode=Society Code +hrm.HrmEmployeeBatchUpdation.IDCardNo=ID Card No. +hrm.HrmEmployeeBatchUpdation.accountSiteCode=Acc. Site Code +hrm.HrmEmployeeBatchUpdation.recordStatus=Record Status + + + +hrm.HrmTestCentreMaster.heading=TEST CENTER MASTER +hrm.HrmTestCentreMaster.testCentreCode=Test Centre Code +hrm.HrmTestCentreMaster.testCentreName=Test Centre Name +hrm.HrmTestCentreMaster.address=Address[Max 250 Characters] +hrm.HrmTestCentreMaster.phone=Phone +hrm.HrmTestCentreMaster.fax=Fax + + +hrm.HrmExecCommitteeMembers.heading=LIST OF EXECUTIVE COMMITTEE MEMBERS +hrm.HrmExecCommitteeMembers.categoryCode=Category Code +hrm.HrmExecCommitteeMembers.categoryDesc=Category Desc +hrm.HrmExecCommitteeMembers.employeeNo=Employee No +hrm.HrmExecCommitteeMembers.employeeName=Employee Name + +hrm.HrmTrainingCourseMst.trainingBranch=Training Streams +hrm.HrmTrainingCourseMst.branchName=Branch Name +hrm.HrmTrainingCourseMst.course=Course +hrm.HrmTrainingCourseMst.name=Name +hrmTCM.title=TRAINING COURSE MASTER +hrmTCMSubHeader.title=Training Stream +hrmTCMTabHeader.title=Course Detail + + + + +hrm.HrmTrainingBudget.calendarName=Calendar Name +hrm.HrmTrainingBudget.description=Description +hrm.HrmTrainingBudget.approvedBudget=Approved Budget +hrm.HrmTrainingBudget.availableBudget=Available Budget +hrm.HrmTrainingBudget.spentTillDate=Spent Till Date +hrm.HrmTrainingBudget.compareAmount=Total Spent Amount cannot be greater than Approved Amount +hrm.HrmTrainingBudget.courseName=Course Name +hrm.HrmTrainingBudget.fromDate=From Date +hrm.HrmTrainingBudget.toDate=To Date +hrm.HrmTrainingBudget.travel=Travel +hrm.HrmTrainingBudget.accomodation=Accomodation +hrm.HrmTrainingBudget.dailyAllowances=Daily Allowances +hrm.HrmTrainingBudget.food=Food Expenses +hrm.HrmTrainingBudget.fees=Training Fees +hrm.HrmTrainingBudget.misc=Misc. Charges +hrm.HrmTrainingBudget.total=Total + +hrm.HrmTrainingBudget.currencyType=Currency Type +hrm.HrmTrainingBudget.budget=Budget +hrmTBMainHeader.title=CALENDAR BUDGET DETAIL +hrm.TBSubHeader.title=Training Calendar +hrm.TBTabHeader.title=Budget Detail + + + + + + +hrm.HrmTrnInCoDtl.instituteCode=Institute Code +hrm.HrmTrnInCoDtl.instituteName=Institute Name +hrm.HrmTrnInCoDtl.type=Type +hrm.HrmTrnInCoDtl.external=EXTERNAL +hrm.HrmTrnInCoDtl.internal=INTERNAL +hrm.HrmTrnInCoDtl.forigen=FOREIGN +hrm.HrmTrnInCoDtl.inCharge=In Charge +hrm.HrmTrnInCoDtl.address=Address +hrm.HrmTrnInCoDtl.country=Country +hrm.HrmTrnInCoDtl.city=City +hrm.HrmTrnInCoDtl.state=State +hrm.HrmTrnInCoDtl.pin=PIN +hrm.HrmTrnInCoDtl.phone=Phone +hrm.HrmTrnInCoDtl.email=Email +hrm.HrmTrnInCoDtl.fax=Fax +hrm.HrmTrnInCoDtl.course=Course +hrm.HrmTrnInCoDtl.courseName=Course Name + + + +hrm.HrmApplicationMaintenance.heading=APPLICATION MAINTENANCE +hrm.HrmApplicationMaintenance.subHeader1=Application Header +hrm.HrmApplicationMaintenance.referenceNo=Reference No. +hrm.HrmApplicationMaintenance.applForGradeDesignation=For Grade/Designation +hrm.HrmApplicationMaintenance.applForDesignation=Application For Designation +hrm.HrmApplicationMaintenance.applForGrade=Application For Grade +hrm.HrmApplicationMaintenance.applicationNo=Application No. +hrm.HrmApplicationMaintenance.applicationDate=Application date +hrm.HrmApplicationMaintenance.applicationName=Applicant Name +hrm.HrmApplicationMaintenance.applicationFirstName=(First Name) +hrm.HrmApplicationMaintenance.applicationMiddleName=(Middle name) +hrm.HrmApplicationMaintenance.applicationLastName=(Last Name) +hrm.HrmApplicationMaintenance.entryMode=Entry Mode +hrm.HrmApplicationMaintenance.rollNo=Roll No. +hrm.HrmApplicationMaintenance.employeeStatus=Employee Status +hrm.HrmApplicationMaintenance.guardianName=Father/Husband's Name +hrm.HrmApplicationMaintenance.motherTongue=Mother Tongue +hrm.HrmApplicationMaintenance.DOB=Date Of Birth +hrm.HrmApplicationMaintenance.placeOfBirth=Place Of Birth +hrm.HrmApplicationMaintenance.nationality=Nationality +hrm.HrmApplicationMaintenance.maritalStatus=Marital Status +hrm.HrmApplicationMaintenance.sex=Sex +hrm.HrmApplicationMaintenance.Male=Male +hrm.HrmApplicationMaintenance.Female=Female +hrm.HrmApplicationMaintenance.eMail=E-Mail +hrm.HrmApplicationMaintenance.resvCategory=Reservation Category +hrm.HrmApplicationMaintenance.appointedFlag=Appointed +hrm.HrmApplicationMaintenance.appliedEarlier=Applied Earlier +hrm.HrmApplicationMaintenance.handicappedFlag=Handicapped Flag +hrm.HrmApplicationMaintenance.joinedOrganisation=Joined Organization +hrm.HrmApplicationMaintenance.offeredBasic=Offered Basic +hrm.HrmApplicationMaintenance.offeredAllowances=Offered Allowances +hrm.HrmApplicationMaintenance.offeredTerms=Offered Terms +hrm.HrmApplicationMaintenance.remarks=Remarks +hrm.HrmApplicationMaintenance.read=Read +hrm.HrmApplicationMaintenance.write=Write +hrm.HrmApplicationMaintenance.communicate=Communicate +hrm.HrmApplicationMaintenance.all=All +hrm.HrmApplicationMaintenance.admPassYear=Admission Year cannot be greater than Pass Year +hrm.HrmApplicationMaintenance.institute=Institution/Organisation +hrm.HrmApplicationMaintenance.toDate=To Date +hrm.HrmApplicationMaintenance.fromDate=From Date +hrm.HrmApplicationMaintenance.course=Course Name +hrm.HrmApplicationMaintenance.subject=Subject +hrm.HrmApplicationMaintenance.relatedToEmp=Related To Employee +hrm.HrmApplicationMaintenance.relatedEmpName=Related Employee Name +hrm.HrmApplicationMaintenance.relatedEmpN0=Employee No +hrm.HrmApplicationMaintenance.religion=Religion +hrm.HrmApplicationMaintenance.healthRecord=Health Record[Max 100 Characters] +hrm.HrmApplicationMaintenance.prevEmpFlag=Previously Employed Here +hrm.HrmApplicationMaintenance.prevEmpDtls=If Yes, Details[Max 100 Characters] +hrm.HrmApplicationMaintenance.hobbies=Hobbies[Max 100 Characters] +hrm.HrmApplicationMaintenance.grossExpected=Gross Salary Expected +hrm.HrmApplicationMaintenance.addlInfo=Any Addl. Information + +hrm.HrmApplicationMaintenance.dateConstraintViolated=Period To cannot be prior to Period From +hrm.HrmApplicationMaintenance.dateConstraintViolated1=Period From cannot be a future date. +hrm.HrmApplicationMaintenance.dateConstraintViolated2=Period To cannot be a future date. + +hrm.HrmApplicationMaintenance.passportNo=Passport No. +hrm.HrmApplicationMaintenance.placeOfIssue=Place Of Issue +hrm.HrmApplicationMaintenance.expiryDate=Expiry date +hrm.HrmApplicationMaintenance.issueDate=Issue Date +hrm.HrmApplicationMaintenance.chequeNo=Cheque/DD No +hrm.HrmApplicationMaintenance.submittedAmount=Submitted Amount +hrm.HrmApplicationMaintenance.submissionDate=Submission Date +hrm.HrmApplicationMaintenance.arrestedBefore=Arrested Before +hrm.HrmApplicationMaintenance.imprisonedBefore=Imprisoned Before +hrm.HrmApplicationMaintenance.finedByCourt=Fined By Court +hrm.HrmApplicationMaintenance.prosecutedBefore=Prosecuted Before +hrm.HrmApplicationMaintenance.reasons=Reasons[Max 250 Characters] +hrm.HrmApplicationMaintenance.name=Name +hrm.HrmApplicationMaintenance.phone=Phone +hrm.HrmApplicationMaintenance.position=Position +hrm.HrmApplicationMaintenance.address=Address +hrm.HrmApplicationMaintenance.country=Country +hrm.HrmApplicationMaintenance.state=State +hrm.HrmApplicationMaintenance.city=City +hrm.HrmApplicationMaintenance.pin=Pin +hrm.HrmApplicationMaintenance.phone=Phone + +hrm.HrmApplicationMaintenance.testCenter=Test Center +hrm.HrmApplicationMaintenance.wScoreA=Written Score +hrm.HrmApplicationMaintenance.wScoreB=GD Score +hrm.HrmApplicationMaintenance.iScore=Interview Score(1) +hrm.HrmApplicationMaintenance.iScore2=Interview Score(2) +hrm.HrmApplicationMaintenance.iScore3=Interview Score(3) +hrm.HrmApplicationMaintenance.failedWrittenA=Qualified For Written +hrm.HrmApplicationMaintenance.failedWrittenB=Qualified For GD +hrm.HrmApplicationMaintenance.failedInterview=Qualified For Interview(1) +hrm.HrmApplicationMaintenance.qualInterview2=Qualified For Interview(2) +hrm.HrmApplicationMaintenance.qualInterview3=Qualified For Interview(3) +hrm.HrmApplicationMaintenance.panelRanking=Rating +hrm.HrmApplicationMaintenance.medicalCleared=Medical Cleared +hrm.HrmApplicationMaintenance.disqualified=Offer Accepted + +hrm.HrmApplicationMaintenance.periodFrom=Period From in MMYYYY +hrm.HrmApplicationMaintenance.periodTo=Period To in MMYYYY +hrm.HrmApplicationMaintenance.organisation=Organisation Name +hrm.HrmApplicationMaintenance.location=Location +hrm.HrmApplicationMaintenance.designationCode=Designation +hrm.HrmApplicationMaintenance.workExp=Work Experience (In Months) +hrm.HrmApplicationMaintenance.reportTo=Report To (Name/Designation) +hrm.HrmApplicationMaintenance.skillCode=Skill Code +hrm.HrmApplicationMaintenance.workDesc=Job Description/Responsibility +hrm.HrmApplicationMaintenance.noOfPersonnel=No Of Personel Supervised +hrm.HrmApplicationMaintenance.startingSal=Starting Salary (Per Month) +hrm.HrmApplicationMaintenance.leavingSal=Leaving Salary (Per Month) +hrm.HrmApplicationMaintenance.basic=Basic (Last Drawn) +hrm.HrmApplicationMaintenance.da=DA (Last Drawn) +hrm.HrmApplicationMaintenance.hra=HRA (Last Drawn) +hrm.HrmApplicationMaintenance.conv=Conveyance (Last Drawn) +hrm.HrmApplicationMaintenance.incentives=Incentives (Last Drawn) +hrm.HrmApplicationMaintenance.bonus=Bonus (Last Drawn) +hrm.HrmApplicationMaintenance.dearnessAllowance=Dearness Allowance +hrm.HrmApplicationMaintenance.otherAllowances=Other Allowances(Last Drawn) +hrm.HrmApplicationMaintenance.fromToYear=Period To must be greater than Period From + +hrm.HrmApplicationMaintenance.instCode=Name Of Institution +hrm.HrmApplicationMaintenance.examPassed=Exam Passed +hrm.HrmApplicationMaintenance.qualification=Qualification +hrm.HrmApplicationMaintenance.splSubj=Specialisation +hrm.HrmApplicationMaintenance.admissionYear=Admission Year +hrm.HrmApplicationMaintenance.passYear=Pass Year +hrm.HrmApplicationMaintenance.percentageMarks=Percentage +hrm.HrmApplicationMaintenance.majorSubj=Major Subjects +hrm.HrmApplicationMaintenance.class=Class +hrm.HrmApplicationMaintenance.splRemarks=Special Remarks +hrm.HrmApplicationMaintenance.otherQualification=Other Professional Qualification (Including IT) +hrm.HrmApplicationMaintenance.splCourseAttended=Specialised Courses Attended (Including IT) + +hrm.HrmApplicationMaintenance.languageCode=Language Code +hrm.HrmApplicationMaintenance.knowledgeLevel=Knowledge Level + +hrm.HrmApplicationMaintenance.perDtl=Personal Details +hrm.HrmApplicationMaintenance.addDtl=Personal Details +hrm.HrmApplicationMaintenance.expDtl=Experience Details +hrm.HrmApplicationMaintenance.langDtl=Language Details +hrm.HrmApplicationMaintenance.resultDtl=Result Details +hrm.HrmApplicationMaintenance.eduDtl=Educational Details +hrm.HrmApplicationMaintenance.otherDtl=Result Details +hrm.HrmApplicationMaintenance.trainingDtls=Pre-Employment Training Details +hrm.HrmApplicationMaintenance.references=References + + +hrm.HrmLeaveEligibility.mainHeader=LEAVE ELIGIBILITY RULES +hrm.HrmLeaveEligibility.subHeader1=Leave Detail +hrm.HrmLeaveEligibility.subHeader2=Leave Eligibility Conditions +hrm.HrmLeaveEligibility.leaveCode=Leave Code +hrm.HrmLeaveEligibility.designation=Designation +hrm.HrmLeaveEligibility.scale=Scale +hrm.HrmLeaveEligibility.grade=Grade +hrm.HrmLeaveEligibility.level=Level +hrm.HrmLeaveEligibility.tataDvb=TATA-DVB + + +hrm.HrmLeaveEncashment.mainHeader=LEAVE ENCASHMENT BATCH +hrm.HrmLeaveEncashment.subHeader1=Employee Details +hrm.HrmLeaveEncashment.subHeader2=Leave Encashment Details +hrm.HrmLeaveEncashment.employeeNo=Employee No. +hrm.HrmLeaveEncashment.empNo=Employee No. +hrm.HrmLeaveEncashment.employeeName=Employee Name +hrm.HrmLeaveEncashment.cd=CD +hrm.HrmLeaveEncashment.applicationDate=Application Date +hrm.HrmLeaveEncashment.leaveCode=Leave Code +hrm.HrmLeaveEncashment.description=Description +hrm.HrmLeaveEncashment.noOfLeaves=No.of Days Encashed +hrm.HrmLeaveEncashment.encashedAmount=Encashed Amount +hrm.HrmLeaveEncashment.leavePeriodicity=Leave Periodicity +hrm.HrmLeaveEncashment.leaveLimit=Leave Limit +hrm.HrmLvEncash.EncashDispute= Leave encashment can be done only once in a calendar year. + +!modified on 9th Feb 2006 Leave Cancellation +hrm.HrmLeaveCancellation.mainHeader=LEAVE CANCELLATION +hrm.HrmLeaveCancellation.subHeader1=Employee Details +hrm.HrmLeaveCancellation.subHeader3=Cancellation Detail +hrm.HrmLeaveCancellation.subHeader4=Leave Details +hrm.HrmLeaveCancellation.employeeNo=Employee Number +hrm.HrmLeaveCancellation.leaveCode=Leave Code +hrm.HrmLeaveCancellation.leaveDescription=Description +hrm.HrmLeaveCancellation.employeeName=Employee Name +hrm.HrmLeaveCancellation.dateApplied=Date Applied +hrm.HrmLeaveCancellation.empNo=Employee No. +hrm.HrmLeaveCancellation.cd=CD +hrm.HrmLeaveCancellation.leaveApplied=Leave Applied +hrm.HrmLeaveCancellation.cancellationType=Cancellation Type +hrm.HrmLeaveCancellation.fromCancelDate=From Date +hrm.HrmLeaveCancellation.toCancelDate=To Date +hrm.HrmLeaveCancellation.fromDate=From Date +hrm.HrmLeaveCancellation.toDate=To Date +hrm.HrmLeaveCancellation.days=Number of Days +hrm.HrmLeaveCancellation.leaveBreakUp=Leave Break Up +hrm.HrmLeaveCancellation.dateApplied=Date Applied +hrm.HrmLeaveCancellation.cancelDays=Number of Days +hrm.HrmLeaveCancellation.statusOfLeave=Cancellation Type +hrm.HrmLeaveCancellation.new=New +hrm.HrmLeaveCancellation.approved=Approved +hrm.HrmLeaveCancellation.rejected=Rejected +hrm.HrmLeaveCancellation.pending=Pending +hrm.HrmLeaveCancellation.revised=Revised +hrm.HrmLeaveCancellation.purpose=Reason +hrm.HrmLeaveCancellation.cancelRemarks=Approver's Remarks +hrm.HrmLeaveCancellation.cancellationType=Cancellation Type +hrm.HrmLeaveCancellation.partial=Partial +hrm.HrmLeaveCancellation.full=Full +hrm.HrmLeaveCancellation.address=Address For Communication +hrm.HrmLeaveCancellation.phoneNo=Phone No. +hrm.HrmLeaveCancellation.designation=Designation +hrm.HrmLeaveCancellation.scaleOfPay=Scale Of Pay +hrm.HrmLeaveCancellation.cancelStatus=Status +hrm.HrmLeaveCancellation.pending=Pending +hrm.HrmLeaveCancellation.new=New +hrm.HrmLeaveCancellation.approved=Approved +hrm.HrmLeaveCancellation.rejected=Rejected +hrm.HrmLeaveCancellation.cancelDateApplied=Date Applied +hrm.HrmLeaveCancellation.noCancel=Not Cancelled +hrm.HrmLeaveCancellation.cancSide=Cancellation Type +hrm.HrmLeaveCancellation.first=From Beginning +hrm.HrmLeaveCancellation.Second=From End +hrm.HrmLeaveCancellation.full=Full +hrm.HrmLeaveCancellation.grade=Grade +hrm.HrmLeaveCancellation.desig=Designation +hrm.HrmLeaveCancellation.location=Location +hrm.HrmLeaveCancellation.FirstName=First Name +hrm.HrmLeaveCancellation.MiddleName=Middle Name +hrm.HrmLeaveCancellation.LastName=Last Name + + +hrm.HrmLeaveEncashmentReport.mainHeader=LEAVE ENCASHMENT REPORT +hrm.HrmLeaveEncashmentReport.subHeader1=Report To Be Generated +hrm.HrmLeaveEncashmentReport.subHeader2=Duration +hrm.HrmLeaveEncashmentReport.subHeader3=Employee Details +hrm.HrmLeaveEncashmentReport.subHeader4=Leave Details +hrm.HrmLeaveEncashmentReport.leaveFromDate=Leave From Date +hrm.HrmLeaveEncashmentReport.leaveToDate=Leave To date +hrm.HrmLeaveEncashmentReport.employeeWise=Employee Wise +hrm.HrmLeaveEncashmentReport.leaveWise=Leave Wise +hrm.HrmLeaveEncashmentReport.employeeNo=Employee No. +hrm.HrmLeaveEncashmentReport.leaveCode=Leave Code + +hrm.HrmEmployeeLeaveReport.mainHeader=EMPLOYEE LEAVE REPORT +hrm.HrmEmployeeLeaveReport.subHeader1=Report To Be Generated +hrm.HrmEmployeeLeaveReport.subHeader2=Employee Details +hrm.HrmEmployeeLeaveReport.subHeader3=Leave Details +hrm.HrmEmployeeLeaveReport.subHeader4=Duration +hrm.HrmEmployeeLeaveReport.leaveFromDate=Leave From Date +hrm.HrmEmployeeLeaveReport.leaveToDate=Leave To date +hrm.HrmEmployeeLeaveReport.employeeWise=Employee Wise +hrm.HrmEmployeeLeaveReport.leaveWise=Leave Wise +hrm.HrmEmployeeLeaveReport.employeeNo=Employee No. +hrm.HrmEmployeeLeaveReport.leaveCode=Leave Code +hrm.HrmEmployeeLeaveReport.employeeName=Employee Name +hrm.HrmEmployeeLeaveReport.leaveDescription=Leave Description + + +hrm.HrmLeaveAssociation.mainHeader=LEAVE ASSOCIATION +hrm.HrmLeaveAssociation.subHeader=Leave Association Information +hrm.HrmLeaveAssociation.leaveCode=Leave Code +hrm.HrmLeaveAssociation.leaveDescription=Leave Description +hrm.HrmLeaveAssociation.associatedLeaveCode=Associated Leave Code +hrm.HrmLeaveAssociation.associatedLeaveDescription=Associated Leave Description +hrm.HrmLeaveAssociation.detailConsistency=This leave is already associated with the given associated leave + +hrm.HrmLeaveMaster.mainHeader=LEAVE MASTER +hrm.HrmLeaveMaster.subHeader1=Leave Details +hrm.HrmLeaveMaster.subHeader2=Leave Definition +hrm.HrmLeaveMaster.subHeader3=Encashment Details +hrm.HrmLeaveMaster.subHeader4=Applicable To +hrm.HrmLeaveMaster.subHeader5=Leave Attributes +hrm.HrmLeaveMaster.leaveCode=Leave Code +hrm.HrmLeaveMaster.applicableTo=Applicable To +hrm.HrmLeaveMaster.description=Description +hrm.HrmLeaveMaster.evidenceRequired=Evidence Required +hrm.HrmLeaveMaster.evidenceDescription=Evidence Description[Max 40 Characters] +hrm.HrmLeaveMaster.prefixSuffix=Prefix Allowed +hrm.HrmLeaveMaster.suffix=Suffix Allowed +hrm.HrmLeaveMaster.intermediateHoliday=Intermediate Holiday Allowed +hrm.HrmLeaveMaster.leaveObsolete=Leave Obsolete +hrm.HrmLeaveMaster.encashable=Encashable +hrm.HrmLeaveMaster.encashableLimit=Encashable Limit In A Period +hrm.HrmLeaveMaster.days=Days +hrm.HrmLeaveMaster.periodicity=Periodicity +hrm.HrmLeaveMaster.calendar=Calendar +hrm.HrmLeaveMaster.male=Male +hrm.HrmLeaveMaster.female=Female +hrm.HrmLeaveMaster.both=Both +hrm.HrmLeaveMaster.leaveDescription=Leave Description +hrm.HrmLeaveMaster.effectiveFrom=Effective From [yyyymm] +hrm.HrmLeaveMaster.effectiveTo=Effective To [yyyymm] +hrm.HrmLeaveMaster.minimumServicePeriod=Minimum Service Period [Years] +hrm.HrmLeaveMaster.maximumAccumulationLimit=Maximum Accumulation Limit +hrm.HrmLeaveMaster.totalAvailableLimit=Total Available Limit +hrm.HrmLeaveMaster.advanceLimit=Advance Limit +hrm.HrmLeaveMaster.maxTxn=Max Transaction Per Period +hrm.HrmLeaveMaster.minLeavePerTxn=Min Leave Per Transaction +hrm.HrmLeaveMaster.dependantOnWorkingDays=Dependant On Working Days +hrm.HrmLeaveMaster.unit=Unit (Days Worked) +hrm.HrmLeaveMaster.creditFrequency=Credit Frequency +hrm.HrmLeaveMaster.maxCreditLimit=Max Credit Limit +hrm.HrmLeaveMaster.leavesCredited=Leaves Credited/Period +hrm.HrmLeaveMaster.applicableToAll=Applicable To All +hrm.HrmLeaveMaster.lapsable=Lapsable +hrm.HrmLeaveMaster.beginMonth=Begin Month +hrm.HrmLeaveMaster.durationMonth=Duration Month +hrm.HrmLeaveMaster.calendarType=Calendar Type +hrm.HrmLeaveMaster.all=All +hrm.HrmLeaveMaster.stateCode=State Code + + +hrm.HrmLeaveApplication.mainHeader=LEAVE APPLICATION BATCH +hrm.HrmLeaveApplication.subHeader1=Application Batch Header +hrm.HrmLeaveApplication.dateApplied=Date Applied +hrm.HrmLeaveApplication.fromDate=From Date +hrm.HrmLeaveApplication.toDate=To Date +hrm.HrmLeaveApplication.fromDate=From Date +hrm.HrmLeaveApplication.toDate=To Date +hrm.HrmLeaveApplication.leaveCode=Leave Code +hrm.HrmLeaveApplication.days=Days +hrm.HrmLeaveApplication.leaveBreakUp=Leave Break Up +hrm.HrmLeaveApplication.purpose=Purpose +hrm.HrmLeaveApplication.remark=Remark +hrm.HrmLeaveApplication.employeeNumber=Employee No. +hrm.HrmLeaveApplication.leaveType=Leave Type +hrm.HrmLeaveApplication.employeeNo=Employee No. +hrm.HrmLeaveApplication.employeeName=Employee Name +hrm.HrmLeaveApplication.leaveDescription=Leave Description +hrm.HrmLeaveApplication.cd=CD + +hrm.HrmLeaveApplication.fromYear.optedFor.validation={0} Is Same As {1} So You Can Not {2} 2 Years +hrm.HrmLeaveApplication.fromYear.prevYear.validation={0} Can Not Be Before {1} Or After {2} +hrm.HrmLeaveApplication.duplicateLTA=You Are Trying To Apply LTA For The Year You Have Already Applied. Data Can Not Be Saved +hrm.HrmLeaveApplication.notEligibleLTA=You Are Not Eligible For LTA. Data Is Not Saved +hrm.HrmLeaveApplication.notEligible2YearLTA=You Are Not Eligible For This Year LTA. Since You Havn't Completed 2 Years. Data Is Not Saved. + +hrm.HrmLeaveLedger.mainHeader=EMPLOYEE LEAVE LEDGER +hrm.HrmLeaveLedger.subHeader1=Leave Query +hrm.HrmLeaveLedger.subHeader2=Employee Leave Status +hrm.HrmLeaveLedger.subHeader3=Employee Leave Transaction +hrm.HrmLeaveLedger.employeeNo=Employee No. +hrm.HrmLeaveLedger.leaveCode=Leave Type +hrm.HrmLeaveLedger.empNo=Employee No. +hrm.HrmLeaveLedger.leaveTypes=Leave Type +hrm.HrmLeaveLedger.creditDate=Credit Date +hrm.HrmLeaveLedger.openingBalance=Opening Balance +hrm.HrmLeaveLedger.leavesCredited=Leaves Credited +hrm.HrmLeaveLedger.leavesTaken=Leaves Taken +hrm.HrmLeaveLedger.leavesEncashed=Leaves Encashed +hrm.HrmLeaveLedger.leaveBalance=Leave Balance +hrm.HrmLeaveLedger.employeeName=Employee Name +hrm.HrmLeaveLedger.leaveDescription=Leave Description +hrm.HrmLeaveLedger.leavePending=Pending Approval + + + +hrm.HrmEmpRecCreation.heading=EMPLOYEE RECORD CREATION +hrm.HrmEmpRecCreation.applicationNo=Application No +hrm.HrmEmpRecCreation.advNo=Advertisement No +hrm.HrmEmpRecCreation.newEmpNo=New Employee No +hrm.HrmEmpRecCreation.employeeName=Employee Name +hrm.HrmEmpRecCreation.appForPosition=Application For Grade/Designation +hrm.HrmEmpRecCreation.entryMode=Entry Mode +hrm.HrmEmpRecCreation.rollNo=Roll No +hrm.HrmEmpRecCreation.male=Male +hrm.HrmEmpRecCreation.female=Female +hrm.HrmEmpRecCreation.guardianName=Guardian Name +hrm.HrmEmpRecCreation.motherTongue=Mother Tongue +hrm.HrmEmpRecCreation.community=Community +hrm.HrmEmpRecCreation.dateOfBirth=Date Of Birth +hrm.HrmEmpRecCreation.placeOfBirth=Place Of Birth +hrm.HrmEmpRecCreation.nationality=Nationality +hrm.HrmEmpRecCreation.bloodGroup=Blood Group +hrm.HrmEmpRecCreation.height=Height +hrm.HrmEmpRecCreation.maritalStatus=Marital Status +hrm.HrmEmpRecCreation.sex=Sex +hrm.HrmEmpRecCreation.reservationCategory=Social Status +hrm.HrmEmpRecCreation.religion=Religion +hrm.HrmEmpRecCreation.noOfDependants=No Of Dependants +hrm.HrmEmpRecCreation.eMail=E-Mail +hrm.HrmEmpRecCreation.arrested=Arrested +hrm.HrmEmpRecCreation.fined=Fined +hrm.HrmEmpRecCreation.imprisoned=Imprisoned +hrm.HrmEmpRecCreation.proscecuted=Proscecuted +hrm.HrmEmpRecCreation.handicappedFlag=Handicapped Flag +hrm.HrmEmpRecCreation.placeOfissue=Place Of Issue +hrm.HrmEmpRecCreation.passportNo=Passport No +hrm.HrmEmpRecCreation.expiryDate=Expiry Date +hrm.HrmEmpRecCreation.issueDate=Issue Date +hrm.HrmEmpRecCreation.cms= Cms +hrm.HrmEmpRecCreation.office=Office Address +hrm.HrmEmpRecCreation.address=Address +hrm.HrmEmpRecCreation.country=Country +hrm.HrmEmpRecCreation.state=State +hrm.HrmEmpRecCreation.city=City +hrm.HrmEmpRecCreation.phone=Phone +hrm.HrmEmpRecCreation.pinCode=Pin Code +hrm.HrmEmpRecCreation.appointmentOrder=Appointment Order +hrm.HrmEmpRecCreation.appointmentOrderDate=Appointment Order Date +hrm.HrmEmpRecCreation.companyJoiningDate=Bank Joining Date +hrm.HrmEmpRecCreation.locationJoiningDate=Current Location Joining Date +hrm.HrmEmpRecCreation.tentativeConfirmDate=Tentative Confirmation Date +hrm.HrmEmpRecCreation.retirementDate=Retirement Date +hrm.HrmEmpRecCreation.baseSite=Base Site +hrm.HrmEmpRecCreation.designation=Designation +hrm.HrmEmpRecCreation.scale=Scale +hrm.HrmEmpRecCreation.level=Level +hrm.HrmEmpRecCreation.basicOffered=Basic Offered +hrm.HrmEmpRecCreation.grade=Grade +hrm.HrmEmpRecCreation.bankSalAcc=Bank Salary Account +hrm.HrmEmpRecCreation.costCentre=Cost Centre +hrm.HrmEmpRecCreation.accountNo=Account No +hrm.HrmEmpRecCreation.employeeType=Employee Type +hrm.HrmEmpRecCreation.joiningGroup=Joining Group +hrm.HrmEmpRecCreation.allocationEndDate=Allocation Start Date +hrm.HrmEmpRecCreation.techNonTech=Tech/NonTech +hrm.HrmEmpRecCreation.yes=Yes +hrm.HrmEmpRecCreation.no=No +hrm.HrmEmpRecCreation.code=Code +hrm.HrmEmpRecCreation.desc=Description +hrm.HrmEmpRecCreation.hierarchyLevel=Hierarchy Level +hrm.HrmEmpRecCreation.foreign=Foreign +hrm.HrmEmpRecCreation.indian=Indian +hrm.HrmEmpRecCreation.nri=NRI +hrm.HrmEmpRecCreation.D=Divorcee +hrm.HrmEmpRecCreation.S=Separated +hrm.HrmEmpRecCreation.U=Unmarried +hrm.HrmEmpRecCreation.F=Foreign National Spouse +hrm.HrmEmpRecCreation.W=Widow +hrm.HrmEmpRecCreation.M=Married +hrm.HrmEmpRecCreation.R=Widower +hrm.HrmEmpRecCreation.A=Advertisement +hrm.HrmEmpRecCreation.F=Force Application +hrm.HrmEmpRecCreation.R=Refferal +hrm.HrmEmpRecCreation.C=Campus Recruitment +wenrgise.HrmEmpRecCreation.dateConstraintViolated=Allocation Start Date Should Be Greater Than Location Joining Date +hrm.HrmEmpRecCreation.P=Probationer +hrm.HrmEmpRecCreation.T=Trainee +hrm.HrmEmpRecCreation.R=Regular +hrm.HrmEmpRecCreation.DI=Deputed In +hrm.HrmEmpRecCreation.DO=Deputed Out +hrm.HrmEmpRecCreation.DT=Temp. Deputation +hrm.HrmEmpRecCreation.TF=Under Transfer +wenrgise.hrms.recordCreation.uniqueConstraintViolated=Employee Number Should be Unique. +hrm.HrmEmpRecCreation.relatedEmployee=Related Employee +hrm.HrmEmpRecCreation.uniqueHeader=This record is already saved. +hrm.HrmEmpRecCreation.mandatory={0} field missing in {1} section. + + +hrm.HrmHrmAppraisalKPA.heading=APPRAISAL KPA +hrm.HrmHrmAppraisalKPA.appraisalKPAHeader=Key Performance Area +hrm.HrmHrmAppraisalKPA.kpaGroupCode=KPA Group Code +hrm.HrmHrmAppraisalKPA.description=Description +hrm.HrmHrmAppraisalKPA.detail=Key Performance Area Detail +hrm.HrmHrmAppraisalKPA.txtKpaCode=KPA Code +hrm.HrmHrmAppraisalKPA.txtDescription=Description +hrm.HrmHrmAppraisalKPA.txtMandatoryFlag=Mandatory Flag +hrm.HrmHrmAppraisalKPA.txtWeightage=Weightage(In Percentage) +hrm.HrmHrmAppraisalKPA.txtAppraiserType=Appraiser Type +hrm.HrmHrmAppraisalKPA.ratingRequired=Rating Required +hrm.HrmHrmAppraisalKPA.select=----------PLEASE SELECT---------- +hrm.HrmHrmAppraisalKPA.appraiser=Appraiser +hrm.HrmHrmAppraisalKPA.self=Self +hrm.HrmHrmAppraisalKPA.reviwer=Reviwer +hrm.HrmAppKPAForm.KPAGrpCode=KPA GroupCode +hrm.HrmAppKPAForm.description=Description +hrm.HrmHrmAppraisalKPA.txtSrlNo=Serial No. +hrm.HrmHrmAppraisalKPA.statusOfHeader=Status + + + + +hrm.HrmHrmAprslStartRule.heading=APPRAISAL START RULE +hrm.HrmAprslStartRule.appraisalRule=Appraisal Rule +hrm.HrmAprslStartRule.aprslStartOrderNo=Appr Start Order No +hrm.HrmAprslStartRule.siteCode=Site Code +hrm.HrmAprslStartRule.workGroupCode=Work Group Code +hrm.HrmAprslStartRule.classHeaderCode=Class Header Code +hrm.HrmAprslStartRule.classDetailCode=Class Detail Code +hrm.HrmAprslStartRule.employeeCode=Employee No +hrm.HrmAprslStartRule.employeeNo=Employee No +hrm.HrmAprslStartRule.employeeName=Employee Name +hrm.HrmAprslStartRule.heading=APPRAISAL RULE +hrm.HrmAprslStartRule.detail=Rule Detail +hrm.HrmAprslStartRule.classDetailDesc=Class Detail Description +hrm.HrmAprslStartRule.classHeaderDesc=Class Header Description + +hrm.HrmAppraisalKPAWeightage.heading=APPRAISAL KPA WEIGHTAGE +hrm.HrmAppraisalKPAWeightage.header=Appraisal Template +hrm.HrmAppraisalKPAWeightage.appTemplateName=Appraisal Template Name +hrm.HrmAppraisalKPAWeightage.detail=Weightage For Template KPA +hrm.HrmAppraisalKPAWeightage.kpaGroupCode=KPA Group Code +hrm.HrmAppraisalKPAWeightage.weightage=Weightage[%] + +hrm.HrmKPAWeightBatch.heading=EMPLOYEE KPA WEIGHTAGE +hrm.HrmKPAWeightBatch.header=Weightage Header +hrm.HrmKPAWeightBatch.detail=Weightage Detail +hrm.HrmKPAWeightBatch.weightageCode=Weightage Code +hrm.HrmKPAWeightBatch.weightage=Weightage +hrm.HrmKPAWeightBatch.txtKpaWeightageCode=KPA Weightage Code +hrm.HrmKPAWeightBatch.txtKpaWeightage=KPA Weightage +hrm.HrmKPAWeightBatch.txtKpaWeightageDesc=KPA Weightage Description + +hrm.HrmAppraisalOrder.heading=APPRAISAL ORDER +hrm.HrmAppraisalOrder.header=Appraisal Order Details +hrm.HrmAppraisalOrder.orderNo=Appraisal Order No +hrm.HrmAppraisalOrder.orderDate=Order Date +hrm.HrmAppraisalOrder.startPeriod=Start Period +hrm.HrmAppraisalOrder.endPeriod=End Period +hrm.HrmAppraisalOrder.completionDate=Completion Date +hrm.HrmAppraisalOrder.locationCode=Location Code +hrm.HrmAppraisalOrder.locationName=Location Name + +hrm.HrmAppraiseeMap.heading=APPRAISEE APPRAISER MAP +hrm.HrmAppraiseeMap.header=Appraisee Detail +hrm.HrmAppraiseeMap.empNo=Employee No +hrm.HrmAppraiseeMap.empName=Employee Name +hrm.HrmAppraiseeMap.superior=Superior Or Reviewer Appraiser +hrm.HrmAppraiseeMap.peer=Peer Or Subordinate Appraiser +hrm.HrmAppraiseeMap.txtEmpNo=Employee No +hrm.HrmAppraiseeMap.txtName=Name +hrm.HrmAppraiseeMap.txtRevSup=Reviewer/Superior +hrm.HrmAppraiseeMap.txtLevel=Level +hrm.HrmAppraiseeMap.txtPeerSub=Peer/Subordinate +hrm.HrmAppraiseeMap.reviewer=Reviewer +hrm.HrmAppraiseeMap.superiors=Superior +hrm.HrmAppraiseeMap.peers=Peer +hrm.HrmAppraiseeMap.subordinate=Subordinate +hrm.HrmAppraiseeMap.employeeNo=Employee No + + +hrm.HrmSepFullFinalSettlement.heading=FULL AND FINAL SETTLEMENT OUTPUT +hrm.HrmSepFullFinalSettlement.employeeNo=Employee No. +hrm.HrmSepFullFinalSettlement.periodStartDt=Period Start Date +hrm.HrmSepFullFinalSettlement.periodEndDt=Period End Date +hrm.HrmSepFullFinalSettlement.sepDt=Separation Date +hrm.HrmSepFullFinalSettlement.earningDue=Earning Due +hrm.HrmSepFullFinalSettlement.deductionDue=Deduction Due +hrm.HrmSepFullFinalSettlement.pfCompanyDue=PF Company Due +hrm.HrmSepFullFinalSettlement.pfSelfDue=PF Self Due +hrm.HrmSepFullFinalSettlement.loanPrincipalDue=Loan Principal Due +hrm.HrmSepFullFinalSettlement.loanInterestDue=Loan Interest Due +hrm.HrmSepFullFinalSettlement.advanceDue=Advance Due +hrm.HrmSepFullFinalSettlement.leaveEncashDue=Leave Encash Due + +hrm.HrmSepFullFinalSettlement.earngDeducFlag=Earning or Deduction Flag +hrm.HrmSepFullFinalSettlement.code=Code +hrm.HrmSepFullFinalSettlement.description=Description +hrm.HrmSepFullFinalSettlement.totalDue=Total Due + +hrm.HrmSepFullFinalSettlement.loanAdvFlag=Loan or Advance Flag +hrm.HrmSepFullFinalSettlement.princAmt=Principal Amount +hrm.HrmSepFullFinalSettlement.princAmtPaid=Principal Amount Paid +hrm.HrmSepFullFinalSettlement.totIntAccrued=Total Interest Accrued +hrm.HrmSepFullFinalSettlement.totIntPaid=Total Interest Paid +hrm.HrmSepFullFinalSettlement.amtOutstanding=Amount Outstanding +hrm.HrmSepFullFinalSettlement.lAStatus=Status + +hrm.HrmSepFullFinalSettlement.leaveDesc=Leave Description +hrm.HrmSepFullFinalSettlement.encashableFlag=Encashable Flag +hrm.HrmSepFullFinalSettlement.leaveOutstanding=Leave Outstanding + + + + +hrm.HrmAllocation.mainHeader=ALLOCATION FOR MULTIPLE EMPLOYEES +hrm.HrmAllocation.subHeader1=Allocation Header +hrm.HrmAllocation.subHeader2=Allocation Detail +hrm.HrmAllocation.employeeNo=Employee Number +hrm.HrmAllocation.fromStartDate=From Start Date +hrm.HrmAllocation.toStartDate=To Start Date +hrm.HrmAllocation.empNo=Employee No. +hrm.HrmAllocation.cd=CD +hrm.HrmAllocation.allocationOrderNo=Allocation Order No. +hrm.HrmAllocation.allocationOrderDate=Allocation Order Date +hrm.HrmAllocation.releaseOrderNo=Release Order No. +hrm.HrmAllocation.startDate=Start Date +hrm.HrmAllocation.endDate=End Date +hrm.HrmAllocation.toDeptCode=To Dept.Code +hrm.HrmAllocation.reportingEmployee=Reporting Employee +hrm.HrmAllocation.status=Status +hrm.HrmAllocation.insert=Insert +hrm.HrmAllocation.update=Update +hrm.HrmAllocation.delete=Delete + + +hrm.HrmTransfer.mainHeader=TRANSFER FOR MULTIPLE EMPLOYEES +hrm.HrmTransfer.subHeader1=Transfer Header +hrm.HrmTransfer.subHeader2=Transfer Detail +hrm.HrmTransfer.employeeNo=Employee Number +hrm.HrmTransfer.fromDate=From Date +hrm.HrmTransfer.toDate=To Date +hrm.HrmTransfer.orderNo=Order No. +hrm.HrmTransfer.empNo=EmpNo. +hrm.HrmTransfer.cd=CD +hrm.HrmTransfer.orderNumber=Order No. +hrm.HrmTransfer.orderDate=Order Date +hrm.HrmTransfer.effectDate=Effect Date +hrm.HrmTransfer.toDept=To Dept. +hrm.HrmTransfer.reportingEmpCode=Reporting Employee No. +hrm.HrmTransfer.reportingDate=Reporting Date +hrm.HrmTransfer.orderStatus=Order Status +hrm.HrmTransfer.recordStatus=Record Status +hrm.HrmTransfer.toSiteCode=To Site Code +hrm.HrmTransfer.insert=Insert +hrm.HrmTransfer.update=Update +hrm.HrmTransfer.delete=Delete + + +hrm.HrmDeputation.mainHeader=DEPUTATION FOR MULTIPLE EMPLOYEES +hrm.HrmDeputation.subHeader1=Deputation Header +hrm.HrmDeputation.subHeader2=Deputation Out Detail +hrm.HrmDeputation.employeeNo=Employee Number +hrm.HrmDeputation.fromDate=From Date +hrm.HrmDeputation.toDate=To Date +hrm.HrmDeputation.empNo=Employee No. +hrm.HrmDeputation.cd=CD +hrm.HrmDeputation.orderNumber=Order No. +hrm.HrmDeputation.orderDate=Order Date +hrm.HrmDeputation.startDate=Start Date +hrm.HrmDeputation.endDate=End Date +hrm.HrmDeputation.deputationType=Deputation Type +hrm.HrmDeputation.locationCode=Location Code +hrm.HrmDeputation.deputedCompAddress=Deputed Company Address +hrm.HrmDeputation.reportingEmpCode=Reporting Employee Code +hrm.HrmDeputation.reportingBackDate=Reporting Back Date +hrm.HrmDeputation.recordStatus=Record Status +hrm.HrmDeputation.insert=Insert +hrm.HrmDeputation.update=Update +hrm.HrmDeputation.delete=Delete +hrm.HrmDeputation.tentativeEndDate=Tentative End Date +hrm.HrmDeputation.phoneNo=Phone No. +hrm.HrmDeputation.emailId=E-mail Id +hrm.HrmDeputation.faxNo=Fax No. +hrm.HrmDeputation.reportingEmpName=Reporting Emp. Name + + + + +hrm.HrmTransferOrder.mainHeader=TRANSFER ORDER REPORT +hrm.HrmTransferOrder.subHeader1=Transfer Order Detail +hrm.HrmTransferOrder.transferOrderNo=Transfer Order Number +hrm.HrmTransferOrder.fromOrderDate=Transfer From Order Date +hrm.HrmTransferOrder.orderToDate=Transfer Order To Date +hrm.HrmTransferOrder.issuedBy=Issued By +hrm.HrmTransferOrder.heading=Heading +hrm.HrmTransferOrder.ccTo=Cc To +hrm.HrmTransferOrder.empNo=Employee No. +hrm.HrmAppraisalTemplate.heading=APPRAISAL TEMPLATE MASTER +hrm.HrmAppraisalTemplate.header=Appraisal Template +hrm.HrmAppraisalTemplate.templateName=Template Name +hrm.HrmAppraisalTemplate.obsolete=Obsolete +hrm.HrmAppraisalTemplate.applicableToAll=Applicable To All +hrm.HrmAppraisalTemplate.ratingCode=Rating Code +hrm.HrmAppraisalTemplate.srlNo=Srl.No. +hrm.HrmAppraisalTemplate.sectionCode=Section Code +hrm.HrmAppraisalTemplate.appraiserType=Appraiser Type +hrm.HrmAppraisalTemplate.templateRemarks=Template Remarks +hrm.HrmAppraisalTemplate.parentSection=Parent Section +hrm.HrmAppraisalTemplate.contentType=Content Type +hrm.HrmAppraisalTemplate.sectionWeightage=Section Weightage[%] +hrm.HrmAppraisalTemplate.selfAppraisal=Self Appraisal +hrm.HrmAppraisalTemplate.appraiser=Appraiser +hrm.HrmAppraisalTemplate.both=Both +hrm.HrmAppraisalTemplate.natureOfAssignment=Nature Of Assignment +hrm.HrmAppraisalTemplate.narrative=Narrative +hrm.HrmAppraisalTemplate.goalSheet=Goal Sheet +hrm.HrmAppraisalTemplate.kpa=KPA's +hrm.HrmAppraisalTemplate.predefinedGoal=Pre-defined Goals +hrm.HrmTransferOrder.txtApplicationDate=Application Date +hrm.HrmTransferOrder.SiteCode=Site Code + +hrm.HrmAppraisalTemplate.ratingReqd=Rating Required + +hrm.HrmAppraisalTemplateKpa.heading=APPRAISAL TEMPLATE MASTER +hrm.HrmAppraisalTemplateKpa.header=Appraisal Template +hrm.HrmAppraisalTemplateKpa.templateName=Template Name +hrm.HrmAppraisalTemplateKpa.obsolete=Obsolete +hrm.HrmAppraisalTemplateKpa.applicableToAll=Applicable To All +hrm.HrmAppraisalTemplateKpa.ratingCode=Rating Code +hrm.HrmAppraisalTemplateKpa.serialNo=Srl.No. +hrm.HrmAppraisalTemplateKpa.natureOfAssgn=Nature Of Assignment +hrm.HrmAppraisalTemplateKpa.kpaGroupCode=KPA Group Code +hrm.HrmAppraisalTemplateKpa.apprKpa=KPA Description +hrm.HrmAppraisalTemplateKpa.contentDesc=Content Description +hrm.HrmAppraisalTemplateKpa.kpaId=KPA Code +hrm.HrmAppraisalTemplateKpa.weightage=Weightage[%] +hrm.HrmAppraisalTemplateKpa.fieldAssignment=Field Assignment +hrm.HrmAppraisalTemplateKpa.laboratory=Laboratory +hrm.HrmAppraisalTemplateKpa.planning=Planning,Programming,Monitoring +hrm.HrmAppraisalTemplateKpa.supervisor=Supervisor Level Activity +hrm.HrmAppraisalTemplateKpa.kpa=KPA's +hrm.HrmAppraisalTemplateKpa.narrative=Narrative +hrm.HrmAppraisalTemplateKpa.templateCode=Template Code + +hrm.HrmAppraisalTemplateGoals.heading=APPRAISAL TEMPLATE MASTER +hrm.HrmAppraisalTemplateGoals.header=Appraisal Template +hrm.HrmAppraisalTemplateGoals.templateName=Template Name +hrm.HrmAppraisalTemplateGoals.obsolete=Obsolete +hrm.HrmAppraisalTemplateGoals.applicableToAll=Applicable To All +hrm.HrmAppraisalTemplateGoals.ratingCode=Rating Code +hrm.HrmAppraisalTemplateGoals.slNo=Srl.No. +hrm.HrmAppraisalTemplateGoals.predefinedGoals=Pre-defined Goals +hrm.HrmAppraisalTemplateGoals.goalDescription=Goal Description + + +hrm.HrmAppraisalForMultipleEmp.heading=Employee Appraisal Batch Screen +hrm.HrmAppraisalForMultipleEmp.header=Appraisal Information +hrm.HrmAppraisalForMultipleEmp.txtRemarks=Remarks +hrm.HrmAppraisalForMultipleEmp.txtFinalRating=Final Rating +hrm.HrmAppraisalForMultipleEmp.txtToDate=To Date +hrm.HrmAppraisalForMultipleEmp.txtFromDate=From Date +hrm.HrmAppraisalForMultipleEmp.txtAppTempName=Appraisal Template Name +hrm.HrmAppraisalForMultipleEmp.txtCD=CD +hrm.HrmAppraisalForMultipleEmp.txtEmpNo=Employee No +hrm.HrmAppraisalForMultipleEmp.detail=Allocation Detail +hrm.HrmAppraisalForMultipleEmp.ndpl=NDPL +hrm.HrmAppraisalForMultipleEmp.dvb=DVB +hrm.HrmAppraisalForMultipleEmp.dateTo=Date To +hrm.HrmAppraisalForMultipleEmp.dateFrom=Date From +hrm.HrmAppraisalForMultipleEmp.empType=Employee Type +hrm.HrmAppraisalForMultipleEmp.empNo=Empoyee No + + +hrm.HrmManpowerPlanning.heading=CAPTURE MANPOWER PLANNING +hrm.HrmManpowerPlanning.orderNo=Order No. +hrm.HrmManpowerPlanning.workGrpCode=Work Group Code +hrm.HrmManpowerPlanning.siteCode=Site Code +hrm.HrmManpowerPlanning.orderDt=Order Date +hrm.HrmManpowerPlanning.fromDt=From Date +hrm.HrmManpowerPlanning.toDt=To Date +hrm.HrmManpowerPlanning.code=Code +hrm.HrmManpowerPlanning.description=Description +hrm.HrmManpowerPlanning.designation=Designation +hrm.HrmManpowerPlanning.sancManPow=Sanctioned Manpower + + + +hrm.HrmSeparationCategoryMaster.mainHeader=SEPARATION CATEGORY MASTER +hrm.HrmSeparationCategoryMaster.subHeader1=Separation Category Master +hrm.HrmSeparationCategoryMaster.separationCode=Separation Code +hrm.HrmSeparationCategoryMaster.noticePeriod=Notice Period +hrm.HrmSeparationCategoryMaster.months=Months +hrm.HrmSeparationCategoryMaster.remarks=Remarks +hrm.HrmSeparationCategoryMaster.separationType=Separation Type +hrm.HrmSeparationCategoryMaster.Office=Office +hrm.HrmSeparationCategoryMaster.Self=Self +hrm.HrmSeparationCategoryMaster.Both=Both + + +hrm.HrmSepDeptClearance.mainHeader=DEPARTMENT CLEARANCE LIST +hrm.HrmSepDeptClearance.subHeader1=Department Clearance List +hrm.HrmSepDeptClearance.subHeader2=Clearance From Department +hrm.HrmSepDeptClearance.clearanceOfDepartment=Clearance Of Department +hrm.HrmSepDeptClearance.clearanceFromDept=Clearance From Department + + +hrm.HrmTrnInCoDtl.instituteCode=Institute Code +hrm.HrmTrnInCoDtl.type=Type +hrm.HrmTrnInCoDtl.external=EXTERNAL +hrm.HrmTrnInCoDtl.internal=INTERNAL +hrm.HrmTrnInCoDtl.forigen=FOREIGN +hrm.HrmTrnInCoDtl.inCharge=In Charge +hrm.HrmTrnInCoDtl.address=Address +hrm.HrmTrnInCoDtl.country=Country +hrm.HrmTrnInCoDtl.city=City +hrm.HrmTrnInCoDtl.state=State +hrm.HrmTrnInCoDtl.pin=PIN +hrm.HrmTrnInCoDtl.phone=Phone +hrm.HrmTrnInCoDtl.email=Email +hrm.HrmTrnInCoDtl.fax=Fax +hrm.HrmTrnInCoDtl.course=Course +hrm.HrmTrnInCoDtl.courseName=Course Name +hrmTCDtlMainHeader.title=TRAINING INSTITUTE AND COURSE DETAIL +hrmTCDtlSubHeader.title=Training Institute +hrmTCDtlTabHeader.title=Courses for Institute + + + + +wenrgise.trngCal.error.empApplied=Cannot delete.Employees had already applied for it. +hrm.HrmTrnCal.calendarName=Calendar Name +hrm.HrmTrnCal.site=Site +hrm.HrmTrnCal.siteName=Site Name +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCal.txtInstituteName=Institute Name +hrm.HrmTrnCal.insCode=Institute Code +hrm.HrmTrnCal.txtCourseCode=Course Code +hrm.HrmTrnCal.txtType=Type +hrm.HrmTrnCal.txtStartDate=Start Date +hrm.HrmTrnCal.txtEndDate=End Date +hrm.HrmTrnCal.txtStrength=Strength +hrm.HrmTrnCal.txtFee=Fee +hrm.HrmTrnCal.txtRatingScheme=Rating Scheme +hrm.HrmTrnCal.txtStatus=Status +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCalMainHeader.title=TRAINING CALENDAR +hrm.HrmTrnCalSubHeader.title=Training Calendar Header +hrm.HrmTrnCalTabHeader.title=Courses Calendar +hrm.HrmTrnCal.pending=Pending +hrm.HrmTrnCal.closed=Closed +hrm.HrmTrnCal.beginner=Beginner +hrm.HrmTrnCal.advanced=Advanced +hrm.HrmTrnCal.workshop=Workshop +hrm.HrmTrnCal.onLocation=On Location +hrm.HrmTrnCal.campusCourse=Campus Course +hrm.HrmTrnCal.courseName=Course Name +hrm.HrmTrnCal.minRating=Minimum Rating +hrm.HrmTrnCal.maxRating=Maximum Rating + + + + + + + + +hrm.HrmFacMst.employeeNo=Employee No +hrm.HrmFacMst.employeeName=Employee Name +hrm.HrmFacMst.facultyType=Faculty Type +hrm.HrmFacMst.external=External +hrm.HrmFacMst.internal=Internal +hrm.HrmFacMst.baseInstitution=Base Institution +hrm.HrmFacMst.instituteName=Institute Name +hrm.HrmFacMst.firstName=First Name +hrm.HrmFacMst.middleName=Middle Name +hrm.HrmFacMst.lastName=Last Name +hrm.HrmFacMst.experience=Experience +hrm.HrmFacMst.employeeName=Employee Name + + + +hrm.FacTrngDtlMainHeader.title=FACULTY TRAINING DETAIL +hrm.FacTrngDtlSubHeader.title=Training Calendar +hrm.FacTrngDtlTabHeader.title=Courses Calendar +hrm.HrmFacTrngDtl.subHeader1=Course Details +hrm.HrmFacTrngDtl.site=Site +hrm.HrmFacTrngDtl.siteName=Site Name +hrm.HrmFacTrngDtl.calendarName=Calendar Name +hrm.HrmFacTrngDtl.courseName=Course Name +hrm.HrmFacTrngDtl.institutionName=Institution Name +hrm.HrmFacTrngDtl.startDate=Start Date +hrm.HrmFacTrngDtl.endDate=End Date +hrm.HrmFacTrngDtl.nameOfFaculty=Name of Faculty +hrm.HrmFacTrngDtl.fromDate=From Date +hrm.HrmFacTrngDtl.toDate=To Date +hrm.HrmFacTrngDtl.startTime=Start Time +hrm.HrmFacTrngDtl.endTime=End Time +hrm.HrmFacTrngDtl.averageRating=Average Rating +hrm.HrmFacTrngDtl.courseStatus=Course Status +hrm.HrmFacTrngDtl.pending=Pending +hrm.HrmFacTrngDtl.closed=Closed +hrm.HrmFacTrngDtl.venue=Venue +hrm.HrmFacTrngDtl.skillArea=Skill Area + + + +hrm.HrmTrngReqMainHeader.title=TRAINING REQUIREMENT FOR MULTIPLE EMPLOYEES +hrm.HrmTrngReq.employeeName=Employee Name +hrm.HrmTrngReqSubHeader.title=Employee Information +hrm.HrmTrngReqTabHeader.title=Requirement Detail +hrm.HrmTrngReq.dateSubmitted=Date Submitted +hrm.HrmTrngReq.courseName=Course Name +hrm.HrmTrngReq.trainingCalendarCourse=Training Calendar +hrm.HrmTrngReq.startDate=Start Date +hrm.HrmTrngReq.endDate=End Date +hrm.HrmTrngReq.nature=Nature +hrm.HrmTrngReq.purpose=Purpose +hrm.HrmTrngReq.recommender=Recommender +hrm.HrmTrngReq.approvalStatus=Approval Status +hrm.HrmTrngReq.remarkRejection=Remark/Rejection Remark +hrm.HrmTrngReq.employeeNo=Employee No +hrm.HrmTrngReq.institutionName=Institution Name +hrm.HrmTrngReq.fullPart=Full Part +hrm.HrmTrngReq.urgent=Urgent +hrm.HrmTrngReq.emergency=Emergency +hrm.HrmTrngReq.normal=Normal +hrm.HrmTrngReq.pending=Pending +hrm.HrmTrngReq.approved=Approved +hrm.HrmTrngReq.rejected=Rejected + + + +hrm.HrmTrngReqBatAppScrnMainHeader=TRAINING REQUIREMENT BATCH APPROVAL +hrm.HrmTrngReqBatAppScrn.employeeNo=Employee No +hrm.HrmTrngReqBatAppScrn.txtEmployeeNo=Employee No +hrm.HrmTrngReqBatAppScrn.CD=CD +hrm.HrmTrngReqBatAppScrn.SRLNo=SRL_NO +hrm.HrmTrngReqBatAppScrn.DateSubmitted=Date Submitted +hrm.HrmTrngReqBatAppScrn.courseCode=Course Code +hrm.HrmTrngReqBatAppScrn.txtCourseCode=Course Code +hrm.HrmTrngReqBatAppScrn.trainingCalendarCourse=Training Calendar Course +hrm.HrmTrngReqBatAppScrn.institutionName=Institution Name +hrm.HrmTrngReqBatAppScrn.startDate=Start Date +hrm.HrmTrngReqBatAppScrn.endDate=End Date +hrm.HrmTrngReqBatAppScrn.nature=Nature +hrm.HrmTrngReqBatAppScrn.purpose=Purpose +hrm.HrmTrngReqBatAppScrn.approve=Approve +hrm.HrmTrngReqBatAppScrn.calendarCourse=Calendar Course +hrm.HrmTrngReqBatAppScrn.submittedFromDate=Submitted From Date +hrm.HrmTrngReqBatAppScrn.submittedToDate=Submitted To Date +hrm.HrmTrngReqBatAppScrn.recommender=Recommender +hrm.HrmTrngReqBatAppScrn.approvalStatus=Approval Status +hrm.HrmTrngReqBatAppScrn.fullPart=Full Part +hrm.HrmTrngReqBatAppScrn.recStatus=Rec Status +hrm.HrmTrngTabHeader=Training Requirement Details + + +hrm.HrmEmpTrngHistMainHeader.title=EMPLOYEE TRAINING HISTORY +hrm.HrmEmpTrngHistSubHeader.title=Training Calendar +hrm.HrmEmpTrngHistTabHeader.title=Employee History +hrm.HrmEmpTrngHist.calendarName=Calendar Name +hrm.HrmEmpTrngHist.course=Course +hrm.HrmEmpTrngHist.empNo=Employee No. +hrm.HrmEmpTrngHist.employeeNo=Employee No. +hrm.HrmEmpTrngHist.institutionName=Institution Name +hrm.HrmEmpTrngHist.fromDate=From Date +hrm.HrmEmpTrngHist.toDate=To Date +hrm.HrmEmpTrngHist.participation=Participation +hrm.HrmEmpTrngHist.name=Employee Name +hrm.HrmEmpTrngHist.reasonForNonParticipation=Reason For Non Participation +hrm.HrmEmpTrngHist.rating=Rating +hrm.HrmEmpTrngHist.trainingAttendanceDetail=Training Attendance Detail +hrm.HrmEmpTrngHist.AttendanceDtl=Attendance Detail +hrm.HrmEmpTrngHist.yes=Yes +hrm.HrmEmpTrngHist.no=No +hrm.HrmEmpTrngHistForm.CourseCode=Course Code +hrm.HrmEmpTrngHistForm.CourseName=Course Name +hrm.HrmEmpTrngHistForm.InstName=Institute Name +hrm.HrmEmpTrngHistForm.StartDate=Start Date +hrm.HrmEmpTrngHistForm.EndDate=End Date + + + +!modified on 11th Feb 2006 +hrm.HrmEmpFeedbackMainHeader=EMPLOYEE FEEDBACK FORM +hrm.HrmEmpFeedbackSubHeader=Training Calendar +hrm.HrmEmpFeedback.courseName=Course Name +hrm.HrmEmpFeedback.institutionName=Institution Name +hrm.HrmEmpFeedbackTableHeader=Employee Feedback +hrm.HrmEmpFeedback.facultyName=Faculty Name +hrm.HrmEmpFeedback.EmpNo=Employee No. +hrm.HrmEmpFeedback.empName=Employee Name +hrm.HrmEmpFeedback.deliveryClarity=Delivery Clarity +hrm.HrmEmpFeedback.presentation=Presentation +hrm.HrmEmpFeedback.interaction=Interaction +hrm.HrmEmpFeedback.instrumentFacility=Instrument Facility +hrm.HrmEmpFeedback.courseMaterial=Course Material +hrm.HrmEmpFeedback.courseExercise=Course Exercise +hrm.HrmEmpFeedback.courseObjective=Course Objective +hrm.HrmEmpFeedback.ratingScheme=Rating Scheme +hrm.HrmEmpFeedback.minRating=Minimum Rating +hrm.HrmEmpFeedback.maxRating=Maximum Rating +hrm.HrmEmpFeedback.startDate=Start Date +hrm.HrmEmpFeedback.endDate=End Date +hrm.HrmEmpFeedback.p=Pending +hrm.HrmEmpFeedback.c=Closed +hrm.HrmEmpFeedback.venue=Venue +hrm.HrmEmpFeedback.skillArea=Skill Area +hrm.HrmEmpFeedback.courseDuration=Course Duration +hrm.HrmEmpFeedback.trainingAids=Training Aids +hrm.HrmEmpFeedback.trainingArrangements=Training Arrangements +hrm.HrmEmpFeedback.overallRating=Overall Rating +hrm.HrmEmpFeedback.topicsRelevant=Topics Relevant/Useful +hrm.HrmEmpFeedback.topicsIrrelevant=Topics Irrelevant/Less Useful +hrm.HrmEmpFeedback.suggestions=Suggestions + +hrm.HrmTrngEmpAtt.mainHeader=EMPLOYEE TRAINING ATTENDANCE +hrm.HrmTrngEmpAtt.subHeader=Employee Training History Header +hrm.HrmTrngEmpAtt.courseCode=Course Code +hrm.HrmTrngEmpAtt.courseName=Course Name +hrm.HrmTrngEmpAtt.institutionName=Institution Name +hrm.HrmTrngEmpAtt.startDate=Start Date +hrm.HrmTrngEmpAtt.endDate=End Date +hrm.HrmTrngEmpAtt.tableHeader=Training Attendance Detail +hrm.HrmTrngEmpAtt.employeeNo=Employee No +hrm.HrmTrngEmpAtt.employeeName=Employee Name +hrm.HrmTrngEmpAtt.trainingDate=Training Date +hrm.HrmTrngEmpAtt.attendance=Attendence +hrm.HrmTrngEmpAtt.reasonForAbsence=Reason For Absence + + +hrm.HrmFacFBMainHeader=FACULTY FEEDBACK FORM +hrm.HrmFacFB.courseName=Course Name +hrm.HrmFacFB.institutionName=Institution Name +hrm.HrmFacFBSubHeader1=Faculty Information +hrm.HrmFacFB.ratingScheme=Rating Scheme +hrm.HrmFacFB.minRating=Minimum Rating +hrm.HrmFacFB.maxRating=Maximum Rating +hrm.HrmFacFB.startDate=Start Date +hrm.HrmFacFB.endDate=End Date +hrm.HrmFacFB.EmpNo=Employee No. +hrm.HrmFacFB.empName=Employee Name +hrm.HrmFacFB.rating=Rating +hrm.HrmFacFB.remarks=Remarks +hrm.HrmFacFBSubHeader=Training Calendar +hrm.HrmFacFBTableHeader=Faculty Feedback +hrm.HrmFacFB.facultyName=Faculty Name +hrm.HrmFacFB.facultyEmpId=Faculty Employee No.(If Any) + +hrm.HrmLoanMstMainHeader=LOAN MASTER +hrm.HrmLoanMstSubHeader=Loan Master +hrm.HrmLoanMst.loanCode=Loan Code +hrm.HrmLoanMstTableHeader=Loan Detail +hrm.HrmLoanMst.interestTaxRebate=Interest Tax Rebate +hrm.HrmLoanMst.typeOfInterest=Type Of Interest +hrm.HrmLoanMst.simpleInterest=Simple Interest +hrm.HrmLoanMst.asPerChart=As Per Chart +hrm.HrmLoanMst.reducingBalance=Reducing Balance +hrm.HrmLoanMst.settledAutoFrmSalary=Settled Automatically From Salary +hrm.HrmLoanMst.chartName=Chart Name +hrm.HrmLoanMst.chartName=Chart Name +hrm.HrmLoanMst.principalTaxRebate=Principal Tax Rebate +hrm.HrmLoanMst.repaymentUnits=Repayment Units +hrm.HrmLoanMst.Months=Months +hrm.HrmLoanMst.Years=Years +hrm.HrmLoanMst.penaltyPercInterest=Penalty Percentage Interest +hrm.HrmLoanMst.natureOfPayment=Nature of Payment +hrm.HrmLoanMst.principleFirst=Principle First +hrm.HrmLoanMst.both=Both +hrm.HrmLoanMst.minYrsOfServiceToBeCompleted=Minimum Years of Service to be Completed +hrm.HrmLoanMst.minYrsOfRemainingService=Minimum Years of Remaining Service +hrm.HrmLoanMst.loanDetailCode=Loan Detail Code +hrm.HrmLoanMst.greaterLessNotApplicable=Greater/Lesser/N.A. +hrm.HrmLoanMst.maxLimit=Maximum Limit +hrm.HrmLoanMst.maximumLoanPerc=Maximum Loan (%) +hrm.HrmLoanMst.noOfMonthsSalary=No of Months of Salary +hrm.HrmLoanMst.companyPolicyStDate=Company Policy Start Date +hrm.HrmLoanMst.appliedToAllEmployee=Applied To All Employee +hrm.HrmLoanMst.loanName=Loan Name +hrm.HrmLoanMst.greater=Greater +hrm.HrmLoanMst.lesser=Lesser +hrm.HrmLoanMst.flatAmount=Flat Amount +hrm.HrmLoanMst.companyPolicyToDate=Company Policy End Date +hrm.HrmLoanMst.interestFirst=Interest First +hrm.HrmLoanMst.salery=Salary +hrm.HrmLoanMst.effectiveDate=Effective Date +hrm.HrmLoanMst.toDate=To Date + +wenrgise.LoanChart.LoanChartDateConstraintViolated=Effective To Date must be greater than Effective From Date + +hrm.HrmTrngReqBatEntryScrnMainHeader=TRAINING REQUIREMENT BATCH ENTRY +hrm.HrmTrngReqBatEntryScrn.employeeNo=Employee No +hrm.HrmTrngReqBatEntryScrn.txtCD=CD +hrm.HrmTrngReqBatEntryScrn.txtSRLNo=SRL_NO +hrm.HrmTrngReqBatEntryScrn.txtDateSubmitted=Date Submitted +hrm.HrmTrngReqBatEntryScrn.txtCourseCode=Course Code +hrm.HrmTrngReqBatEntryScrn.txtTrainingCalendarCourse=Training Calendar Course +hrm.HrmTrngReqBatEntryScrn.txtInstitutionName=Institution Name +hrm.HrmTrngReqBatEntryScrn.txtStartDate=Start Date +hrm.HrmTrngReqBatEntryScrn.txtEndDate=End Date +hrm.HrmTrngReqBatEntryScrn.txtNature=Nature +hrm.HrmTrngReqBatEntryScrn.txtPurpose=Purpose +hrm.HrmTrngReqBatEntryScrn.txtApprove=Approve +hrm.HrmTrngReqBatEntryScrn.calendarCourse=Calendar Course +hrm.HrmTrngReqBatEntryScrn.submittedFromDate=Submitted From Date +hrm.HrmTrngReqBatEntryScrn.submittedToDate=Submitted To Date +hrm.HrmTrngReqBatEntryScrn.txtRecommender=Recommender +hrm.HrmTrngReqBatEntryScrn.txtApprovalStatus=Approval Status +hrm.HrmTrngReqBatEntryScrn.txtFullPart=Full Part +hrm.HrmTrngReqBatEntryScrn.txtRecStatus=Rec Status +hrm.HrmTrngReqBatEntryScrn.txtEmployeeNo=Employee No +hrm.HrmTrngReqBatEntryScrn.courseCode=Course Code + + +hrm.HrmTrngCrsBDAssociation.detailConsistency= The From date & To date combination is Already exist. + +hrm.HrmTrngCalClose.courseName=Course Name +hrm.HrmTrngCalClose.courseCode=Course Code +hrm.HrmTrngCalClose.courseId=Course Id +hrm.HrmTrngCalClose.calendarCode=Calendar Code +hrm.HrmTrngCalClose.calendarName=Calendar Name +hrm.HrmTrngCalClose.institutionName=Institution Name +hrm.HrmTrngCalClose.startDate=Start Date +hrm.HrmTrngCalClose.endDate=End Date +hrm.HrmTrngCalClose.mainHeader=CLOSE TRAINING CALENDAR +hrm.HrmTrngCalClose.subHeader=Batch Screen +hrm.HrmTrngCalClose.butCalClose=Close Calendar + +hrm.HrmLC.mainHeader= + +hrm.HrmLC.subHeader=Chart Master +hrm.HrmLC.chartName=Chart Name +hrm.HrmLC.txtLoanAmt=Loan Amount +hrm.HrmLC.txtNumberOfInstallments=Number of Installments +hrm.HrmLC.effectiveFromDate=Effective From Date +hrm.HrmLC.interestRate=Interest Rate +hrm.HrmLC.effectiveToDate=Effective To Date +hrm.HrmLC.txtPrincipal=Principal Amount +hrm.HrmLC.txtInterest=Interest Amount +hrm.HrmLC.txtEqualMonthlyInstallment=Equal Monthly Installment +hrm.HrmLC.tabHeader=Chart Detail +hrm.HrmLC.checkInterest=Interest rate cannot be greater than 100 + + +hrm.HrmLE.mainHeader=LOAN ELIGIBILITY RULE +hrm.HrmLE.subHeader=Loan Header +hrm.HrmLE.tabHeader=Loan Eligibility +hrm.HrmLE.txtDesignation=Designation +hrm.HrmLE.txtScale=Scale +hrm.HrmLE.txtGrade=Grade +hrm.HrmLE.txtTATADVB=TATA-DVB +hrm.HrmLE.txtLevel=Level +hrm.HrmLE.loanCode=Loan Code + + +hrm.HrmAdvMstMainHeader=ADVANCE MASTER +hrm.HrmAdvMstSubHeader=Advance Master +hrm.HrmAdvMstTableHeader=Advance Detail +hrm.HrmAdvMst.advanceCode=Advance Name +hrm.HrmAdvMst.advanceDescription=Advance Description +hrm.HrmAdvMst.effectiveFromDate=Effective From Date +hrm.HrmAdvMst.effectiveToDate=Effective To Date +hrm.HrmAdvMst.maxCalLimit=Max. Cal Limit +hrm.HrmAdvMst.noOfTXN=No.of Transactions +hrm.HrmAdvMst.maxLimitPerTXN=Max. Limit Per Transaction +hrm.HrmAdvMst.flatAmount=Flat Amount +hrm.HrmAdvMst.calendar=Calendar +hrm.HrmAdvMst.settlementUnit=Settlement Unit +hrm.HrmAdvMst.settlementPeriod=No of Installment +hrm.HrmAdvMst.moratoriumInMonths=Moratorium In Months +hrm.HrmAdvMst.settleThroughPayroll=Settle Through Payroll +hrm.HrmAdvMst.applicableToAll=Applicable To All +hrm.HrmAdvMst.settlementHeads=Settlement Heads +hrm.HrmAdvMst.description=Description +hrm.HrmAdvMst.monthly=Monthly +hrm.HrmAdvMst.once=Once +hrm.HrmAdvMst.yes=Yes +hrm.HrmAdvMst.no=No +hrm.HrmAdvMst.calendarType=Calendar Type +hrm.HrmAdvMst.beginMonth=Begin Month +hrm.HrmAdvMst.durationMonth=Duration Month +hrm.HrmAdvMst.settleHeads=Settlement Heads +hrm.HrmAdvMst.eligibility=Eligibility Factor +hrm.HrmAdvMst.salary=No Of Month's Salary + +hrm.HrmLAE.mainHeader=ADVANCE ELIGIBILITY RULE +hrm.HrmLAE.subHeader=Advance Header +hrm.HrmLAE.tabHeader=Advance Eligibility +hrm.HrmLAE.txtDesignation=Designation +hrm.HrmLAE.txtScale=Scale +hrm.HrmLAE.txtGrade=Grade +hrm.HrmLAE.txtTATADVB=TATA-DVB +hrm.HrmLAE.txtLevel=Level +hrm.HrmLAE.advanceCode=Advance Code + +hrm.HrmLAppMultEmp.mainHeader=LOAN APPLICATION BATCH +hrm.HrmLAppMultEmp.subHeader=Employee Details +hrm.HrmLAppMultEmp.tabHeader=Loan Details +hrm.HrmLAppMultEmp.employeeNo=Employee No. +hrm.HrmLAppMultEmp.loanName=Loan Name +hrm.HrmLAppMultEmp.empNo=Employee No. +hrm.HrmLAppMultEmp.cD=CD +hrm.HrmLAppMultEmp.empName=Employee Name +hrm.HrmLAppMultEmp.loanCode=Loan Code +hrm.HrmLAppMultEmp.propertyPrice=Property Price +hrm.HrmLAppMultEmp.eligibleAmount=Eligible Amount +hrm.HrmLAppMultEmp.appliedAmount=Applied Amount +hrm.HrmLAppMultEmp.percPropertyPrice=[%] of Property Price +hrm.HrmLAppMultEmp.applDate=Application Date +hrm.HrmLAppMultEmp.sanctionDate=Sanction Date +hrm.HrmLAppMultEmp.noInstallment=No.of Installment +hrm.HrmLAppMultEmp.fullyRepaid=Fully Repaid +hrm.HrmLAppMultEmp.periodBetweenInstallment=Period Between Installment +hrm.HrmLAppMultEmp.firstInstallmentDate=First Installment Date +hrm.HrmLAppMultEmp.approvedFlag=Approved Flag +hrm.HrmLAppMultEmp.reason=Reason +hrm.HrmLAppMultEmp.remarks=Remarks +hrm.HrmLAppMultEmp.disbursmentDetails=Disbursment Details +hrm.HrmLAppMultEmp.loanRepaymentSchedule=Loan Repayment Schedule +hrm.HrmLAppMultEmp.totalAmountPaid=Total Amount Paid +hrm.HrmLAppMultEmp.noInstallmentPaid=No.of Installment Paid +hrm.HrmLAppMultEmp.interestAccrued=Interest Accrued + + + +hrm.HrmLASetBatEntScr.mainHeader=ADVANCE SETTLEMENT BATCH ENTRY +hrm.HrmLASetBatEntScr.subHeader=Query Advance +hrm.HrmLASetBatEntScr.tabHeader=Advance Settlement Details +hrm.HrmLASetBatEntScr.employeeNo=Employee No +hrm.HrmLASetBatEntScr.advance=Advance +hrm.HrmLASetBatEntScr.fromDate=From Date +hrm.HrmLASetBatEntScr.toDate=To Date +hrm.HrmLASetBatEntScr.txtApproved=Approved +hrm.HrmLASetBatEntScr.txtEmployeeNo=Employee No +hrm.HrmLASetBatEntScr.txtChkDigit=Chk Digit +hrm.HrmLASetBatEntScr.txtName=Name +hrm.HrmLASetBatEntScr.txtSerialNo=Serial No +hrm.HrmLASetBatEntScr.txtDateApplied=Date Applied +hrm.HrmLASetBatEntScr.txtAdvanceName=Advance Name +hrm.HrmLASetBatEntScr.txtAmountApplied=Amount Applied +hrm.HrmLASetBatEntScr.txtSettlementThruPayroll=Settlement Through Payroll +hrm.HrmLASetBatEntScr.txtSettlementAmount=Settlement Amount +hrm.HrmLASetBatEntScr.txtHeads=Heads +hrm.HrmLASetBatEntScr.txtNoOfInstallments=No of Installments +hrm.HrmLASetBatEntScr.txtReason=Reason +hrm.HrmLASetBatEntScr.txtName=Name + + + + + + + + +hrm.HrmSepEmpClearance.mainHeader=MAINTAIN EMPLOYEE CLEARANCE +hrm.HrmSepEmpClearance.subHeader1=Employee Details +hrm.HrmSepEmpClearance.subHeader2=Department Clearance List +hrm.HrmSepEmpClearance.employeeNo=Employee Number +hrm.HrmSepEmpClearance.department=Department +hrm.HrmSepEmpClearance.clearanceGiven=Clearance Given + + +hrm.HrmEmployeeSeparation.mainHeader=EMPLOYEE SEPARATION BATCH +hrm.HrmEmployeeSeparation.subHeader1=Employee Details +hrm.HrmEmployeeSeparation.subHeader2=Separation Details +hrm.HrmEmployeeSeparation.employeeNo=Employee Number +hrm.HrmEmployeeSeparation.employeeName=Employee Name +hrm.HrmEmployeeSeparation.empNo=Employee Number +hrm.HrmEmployeeSeparation.empName=Employee Name +hrm.HrmEmployeeSeparation.cd=CD +hrm.HrmEmployeeSeparation.separationCategory=Separation Category +hrm.HrmEmployeeSeparation.separationDate=Separation Date +hrm.HrmEmployeeSeparation.reason=Reason + + +hrm.HrmKPAPoints.heading=POSITION KPA POINTS +hrm.HrmKPAPoints.KPAHeader=KPA Header +hrm.HrmKPAPoints.positionCode=Position Code +hrm.HrmKPAPoints.kpaGroupCode=KPA Group Code +hrm.HrmKPAPoints.desc=Description +hrm.HrmKPAPoints.designation=Designation +hrm.HrmKPAPoints.scale=Scale +hrm.HrmKPAPoints.ratingDetail=Rating Detail +hrm.HrmKPAPoints.maxRating=Maximum Rating +hrm.HrmKPAPoints.minRating=Minimum Rating +hrm.HrmKPAPoints.detail=Position KPA Points +hrm.HrmKPAPoints.txtFromRating=From Rating +hrm.HrmKPAPoints.txtToRating=To Rating +hrm.HrmKPAPoints.txtPoints=Points + +hrm.HrmTestScore.heading=POSITION WISE TEST SCORE +hrm.HrmTestScore.header=Position Information Header +hrm.HrmTestScore.positionCode=Position Code +hrm.HrmTestScore.desc=Description +hrm.HrmTestScore.designation=Designation +hrm.HrmTestScore.scale=Scale +hrm.HrmTestScore.examType=Examination Type +hrm.HrmTestScore.examDesc=Examination Description +hrm.HrmTestScore.maxScore=Maximum Score +hrm.HrmTestScore.maxPoints=Maximum Points +hrm.HrmTestScore.detail=Position Test Score Detail +hrm.HrmTestScore.txtScoreForm=Score From +hrm.HrmTestScore.txtScoreTo=Score To +hrm.HrmTestScore.txtPoints=Points +hrm.HrmTestScore.written=Written +hrm.HrmTestScore.interview=Interview +hrm.HrmTestScore.groupDiscussion=Group Discussion +hrm.HrmTestScore.errorinscore=Score From should be less than Score To in row {0} of Detail +hrm.HrmTestScore.errorinmaxscore=Score To in row {1} of Detail should not be greater than Maximum Score +hrm.HrmTestScore.errorinmaxpoints=Points in row {0} of Detail should not be greater than Maximum Points +hrm.HrmTestScore.uniqueConstraintViolated=Combination of Position Code and Examination Type should be unique +hrm.HrmTestScore.detail.nonnumeric={0} in row {1} of Detail is not a Valid Number +hrm.HrmTestScore.header.nonnumeric={0} is not a Valid Number +hrm.HrmTestScore.errorinPoints=Points in row {1} should be greater than it's previous rows + + +hrm.HrmAttShiftMaster.heading=SHIFT MASTER +hrm.HrmAttShiftMaster.shiftCode=Shift Code +hrm.HrmAttShiftMaster.startTime=Start Time +hrm.HrmAttShiftMaster.endTime=End Time +hrm.HrmAttShiftMaster.relaxationTime=Relaxation Time +hrm.HrmAttShiftMaster.startTolerenceTime=Start Tolerence Time +hrm.HrmAttShiftMaster.endTolerenceTime=End Tolerence Time +hrm.HrmAttShiftMaster.overlapTime=Overlap Time +hrm.HrmAttShiftMaster.desc=Shift Description + +hrm.HrmAttWorkGroupShift.heading=WORK GROUP SHIFT DETAIL +hrm.HrmAttWorkGroupShift.wrkGrpCode=Work Group Code +hrm.HrmAttWorkGroupShift.siteCode=Site Code +hrm.HrmAttWorkGroupShift.shiftBeginDt=Shift Begin Date +hrm.HrmAttWorkGroupShift.shiftEndDt=Shift End Date +hrm.HrmAttWorkGroupShift.shiftCode=Shift Code +hrm.HrmAttWorkGroupShift.shiftCodeDescription=Description + + +hrmEmpShift.title=EMPLOYEE SHIFT DETAIL +hrmEmpShiftSubHeader.title=Employee Shift Detail +hrmEmpShiftTabHeader.title=Emp Shift Detail +hrm.HrmAttEmpShift.employeeNo=Employee No. +hrm.HrmAttEmpShift.employeeName=Employee Name +hrm.HrmAttEmpShift.startDate=Period Start Date +hrm.HrmAttEmpShift.endDate=Period End Date +hrm.HrmAttEmpShift.shiftBeginDate=Shift Begin Date +hrm.HrmAttEmpShift.shiftEndDate=Shift End Date +hrm.HrmAttEmpShift.shiftCode=Shift Code + + + + +hrm.HrmAttWorkGroupDayOff.heading=WORK GROUP DAY OFF +hrm.HrmAttWorkGroupDayOff.wrkGrpCode=Work Group Code +hrm.HrmAttWorkGroupDayOff.siteCode=Site Code +hrm.HrmAttWorkGroupDayOff.strtWeekDt=Start Week Date +hrm.HrmAttWorkGroupDayOff.endWeekDt=End Week Date +hrm.HrmAttWorkGroupDayOff.fstRestDay=First Rest Day +hrm.HrmAttWorkGroupDayOff.secRestDay=Second Rest Day +hrm.HrmAttWorkGroupDayOff.thrRestDay=Third Rest Day + + +hrm.HrmAttEmployeeShiftDetail.heading=EMPLOYEE SHIFT DETAIL +hrm.HrmAttEmployeeShiftDetail.empNo=Employee No. +hrm.HrmAttEmployeeShiftDetail.empName=Employee Name +hrm.HrmAttEmployeeShiftDetail.shiftBeginDt=Shift Begin Date +hrm.HrmAttEmployeeShiftDetail.shiftEndDt=Shift End Date +hrm.HrmAttEmployeeShiftDetail.shiftCode=Shift Code + + +hrm.HrmAttEmployeeDayOff.heading=EMPLOYEE DAY OFF +hrm.HrmAttEmployeeDayOff.empId=Employee Id +hrm.HrmAttEmployeeDayOff.empNo=EmployeeNo. +hrm.HrmAttEmployeeDayOff.startWeekDt=StartWeekDate +hrm.HrmAttEmployeeDayOff.endWeekDt=EndWeekDate +hrm.HrmAttEmployeeDayOff.fstRstDay=FirstRestDay +hrm.HrmAttEmployeeDayOff.secRstDay=SecondRestDay +hrm.HrmAttEmployeeDayOff.thrRstDay=ThirdRestDay +hrm.HrmAttEmployeeDayOff.empName=EmployeeName +hrm.HrmAttEmployeeDayOff.periodStartDate=Period Start Date +hrm.HrmAttEmployeeDayOff.periodEndDate=Period End Date + + +hrm.HrmAttEmployeeShiftRoster.heading=EMPLOYEE SHIFT ROSTER +hrm.HrmAttEmployeeShiftRoster.workGroupCode=Work Group Code +hrm.HrmAttEmployeeShiftRoster.empNo=Employee No. +hrm.HrmAttEmployeeShiftRoster.empName=Employee Name +hrm.HrmAttEmployeeShiftRoster.periodStartDate=Period Start Date +hrm.HrmAttEmployeeShiftRoster.periodEndDate=Period End Date +hrm.HrmAttEmployeeShiftRoster.workDt=Work Date +hrm.HrmAttEmployeeShiftRoster.mandHoliday=Mandatory Holiday +hrm.HrmAttEmployeeShiftRoster.workDayType=Availability +hrm.HrmAttEmployeeShiftRoster.shiftCode=Shift Code + + +hrm.HrmAttEmployeeOTUTBatchUpdate.heading=EMPLOYEE OT AND UT BATCH UPDATE MONTHWISE +hrm.HrmAttEmployeeOTUTBatchUpdate.empNo=Employee No. +hrm.HrmAttEmployeeOTUTBatchUpdate.empName=Employee Name +hrm.HrmAttEmployeeOTUTBatchUpdate.period=Year/Month(YYYYMM) +hrm.HrmAttEmployeeOTUTBatchUpdate.cd=CD +hrm.HrmAttEmployeeOTUTBatchUpdate.OTUT=Over Time/Under Time +hrm.HrmAttEmployeeOTUTBatchUpdate.hrs=Hours +hrm.HrmAttEmployeeOTUTBatchUpdate.rateFlag=Rate Flag + + +hrm.HrmAttEmployeeAbsentBatchUpdation.heading=EMPLOYEE ABSENT BATCH UPDATION +hrm.HrmAttEmployeeAbsentBatchUpdation.empNo=Employee No. +hrm.HrmAttEmployeeAbsentBatchUpdation.empName=Employee Name +hrm.HrmAttEmployeeAbsentBatchUpdation.periodStartDate=Period Start Date +hrm.HrmAttEmployeeAbsentBatchUpdation.periodEndDate=Period End Date +hrm.HrmAttEmployeeAbsentBatchUpdation.cd=CD +hrm.HrmAttEmployeeAbsentBatchUpdation.startDt=Start Date +hrm.HrmAttEmployeeAbsentBatchUpdation.endDt=End Date +hrm.HrmAttEmployeeAbsentBatchUpdation.absDays=Absent Days + + + + +hrm.HrmExperienceScore.heading=POSITION WISE EXPERIENCE SCORE +hrm.HrmExperienceScore.header=Position Information Header +hrm.HrmExperienceScore.positionCode=Position Code +hrm.HrmExperienceScore.desc=Description +hrm.HrmExperienceScore.designation=Designation Code +hrm.HrmExperienceScore.scale=Scale +hrm.HrmExperienceScore.detail=Position Wise Monthly Experience Score +hrm.HrmExperienceScore.txtMinExp=Minimum Experience(Months) +hrm.HrmExperienceScore.txtMaxExp=Maximum Experience(Months) +hrm.HrmExperienceScore.txtAccBasis=Accumulation Basis +hrm.HrmExperienceScore.txtMonthsExp=Months Experience +hrm.HrmExperienceScore.txtPointsAwarded=Points Awarded +hrm.HrmExperienceScore.M=Monthly +hrm.HrmExperienceScore.F=Flat +hrm.HrmExperienceScore.errorinmonths=Months Experience should be in between Minimum Experience(Months) and Maximum Experience(Months) +hrm.HrmExperienceScore.errorinscore=Minimum Experience(Months) should be less than Maximum Experience(Months) in row {0} of Detail +hrm.HrmExperienceScore.errorinPoints=Points Awarded in row {1} should be greater than it's previous rows + +hrm.HrmEligibility.heading=POSITION WISE ELIGIBILITY +hrm.HrmEligibility.header=Position Details +hrm.HrmEligibility.positionCode=Position Code +hrm.HrmEligibility.desc=Description +hrm.HrmEligibility.designation=Designation +hrm.HrmEligibility.scale=Scale +hrm.HrmEligibility.detail=Designation Eligibility Rule +hrm.HrmEligibility.txtPositionCode=Position Code +hrm.HrmEligibility.txtDescription=Description +hrm.HrmEligibility.txtDesignation=Designation +hrm.HrmEligibility.txtScale=Scale + + +hrm.HrmQualification.heading=PROMOTION QUALIFICATION CRITERIA +hrm.HrmQualification.header=Position Details +hrm.HrmQualification.positionCode=Position Code +hrm.HrmQualification.desc=Description +hrm.HrmQualification.designation=Designation +hrm.HrmQualification.scale=Scale +hrm.HrmQualification.detail=Promotion Qualification Criteria +hrm.HrmQualification.txtQualificationCode=Qualification Code +hrm.HrmQualification.txtMinPercentage=Minimum Percentage +hrm.HrmQualification.txtQualificationDesc=Description + + +hrm.HrmLAAppBatEntScr.mainHeader=ADVANCE APPLICATION +hrm.HrmLAAppBatEntScr.subHeader=Query Advance +hrm.HrmLAAppBatEntScr.tabHeader=Advance Details +hrm.HrmLAAppBatEntScr.employeeNo=Employee No +hrm.HrmLAAppBatEntScr.txtApprovedFlag=Approved Flag +hrm.HrmLAAppBatEntScr.txtEmployeeNo=Employee No +hrm.HrmLAAppBatEntScr.txtCD=CD +hrm.HrmLAAppBatEntScr.txtName=Name +hrm.HrmLAAppBatEntScr.txtDateApplied=Date Applied +hrm.HrmLAAppBatEntScr.txtAdvanceName=Advance Name +hrm.HrmLAAppBatEntScr.txtAmountApplied=Amount Applied +hrm.HrmLAAppBatEntScr.txtReason=Reason +hrm.HrmLAAppBatEntScr.txtAmountSettled=Amount Settled +hrm.HrmLAAppBatEntScr.txtRecStat=Rec Stat +hrm.HrmLAAppBatEntScr.advance=Advance +hrm.HrmLAAppBatEntScr.fromDate=From Date +hrm.HrmLAAppBatEntScr.toDate=To Date +hrm.HrmLAAppBatEntScrAll=All +hrm.HrmLAAppBatEntScrApproved=Approved +hrm.HrmLAAppBatEntScrPending=Pending + + + + + + + + +hrm.HrmPrmNotice.heading=PROMOTION NOTICE DETAIL +hrm.HrmPrmNotice.header=Promotion Notice +hrm.HrmPrmNotice.detail=Promotion Notice Detail +hrm.HrmPrmNotice.noticeNo=Notice No +hrm.HrmPrmNotice.noticeDate=Notice Date +hrm.HrmPrmNotice.desc=Description +hrm.HrmPrmNotice.txtPositionCode=Position Code +hrm.HrmPrmNotice.txtDesignation=Designation +hrm.HrmPrmNotice.txtScale=Scale +hrm.HrmPrmNotice.txtVacancies=No Of Vacancies +hrm.HrmPrmNotice.txtExamDate=Examination Date +hrm.HrmPrmNotice.detail.date=Exam Date cannot be less than Notice Date + +hrm.HrmPrmCriteria.heading=POSITION WISE PROMOTION CRITERIA +hrm.HrmPrmCriteria.toPostHeader=Position Criteria(To Post) +hrm.HrmPrmCriteria.toPost=To Post +hrm.HrmPrmCriteria.toDesc=Description +hrm.HrmPrmCriteria.toDesignation=Designation +hrm.HrmPrmCriteria.toScale=Scale +hrm.HrmPrmCriteria.fromPostHeader=Position Criteria(From Post) +hrm.HrmPrmCriteria.fromPost=From Post +hrm.HrmPrmCriteria.fromDesc=Description +hrm.HrmPrmCriteria.fromDesignation=Designation +hrm.HrmPrmCriteria.fromScale=Scale +hrm.HrmPrmCriteria.detail=Promotion Criteria +hrm.HrmPrmCriteria.txtDescription=Description +hrm.HrmPrmCriteria.txtCriteriaStartDate=Criteria Start Date +hrm.HrmPrmCriteria.txtCriteriaEndDate=Criteria End Date +hrm.HrmPrmCriteria.txtMinServicePeriod=Minimum Service Period +hrm.HrmPrmNotice.txtLocationCode=Location Code +hrm.HrmPrmCriteria.txtReqYears=Req Years in Current Post +hrm.HrmPrmCriteria.txtYearAPAR=No Of Year APAR +hrm.HrmPrmCriteria.code=Code +hrm.HrmPrmCriteria.name=Name +hrm.HrmPrmCriteria.hierarchy=Hierarchy +hrm.HrmPrmCriteria.description=Description +hrm.HrmPrmCriteria.designation=Designation +hrm.HrmPrmCriteria.scale=Scale +hrm.HrmPrmCriteria.error.dateRangeInvalid={0} must be before {1} in row {2} +hrm.HrmPrmCriteria.error.dateOverlapping={0} at row {1} must be after {2} at row {3} + + + +hrm.HrmPrmKPARating.heading=POSITION WISE KPA RATING +hrm.HrmPrmKPAPoints.heading=KPA POINTS +hrm.HrmPrmKPARating.header=Desigation Header +hrm.HrmPrmKPARating.positionCode=Position Code +hrm.HrmPrmKPARating.rating=Rating Scheme +hrm.HrmPrmKPARating.hierarchy=Hierarchy +hrm.HrmPrmKPARating.desc=Description +hrm.HrmPrmKPARating.designation=Designation +hrm.HrmPrmKPARating.scale=Scale +hrm.HrmPrmKPARating.nextHeader=Appraisal Type +hrm.HrmPrmKPARating.finalHeader=Rating Details +hrm.HrmPrmKPARating.ratingTyp=Rating Type +hrm.HrmPrmKPARating.k=KPA Wise Rating +hrm.HrmPrmKPARating.f=Final Rating +hrm.HrmPrmKPARating.maxRating=Maximum Rating +hrm.HrmPrmKPARating.minRating=Minimum Rating +hrm.HrmPrmKPARating.detail=PositionWise KPA Rating +hrm.HrmPrmKPARating.txtKPAGroupCode=KPA Group Code +hrm.HrmPrmKPARating.txtKPAGroupDesc=KPA Group Desc +hrm.HrmPrmKPARating.txtReqAvgRating=Required Average Rating +hrm.HrmPrmKPARating.txtFromRating=FromRating +hrm.HrmPrmKPARating.txtToRating=ToRating +hrm.HrmPrmKPARating.txtPoints=Points +hrm.HrmPrmKPARating.errorinrating=ToRating should be less than Maximum Rating and FromRating should be greater than Minimum Rating +hrm.HrmPrmKPARating.gradeCode=Grade +hrm.HrmPrmKPARating.desigCode=Designation +hrm.HrmPrmKPARating.gradeDesc=Grade Description +hrm.HrmPrmKPARating.desigDesc=Designation Description + + +hrm.HrmPrmFinalRating.detail=Final KPA Rating +hrm.HrmPrmFinalRating.heading=POSITION WISE KPA RATING +hrm.HrmPrmFinalRating.header=Desigation Header +hrm.HrmPrmFinalRating.positionCode=Position Code +hrm.HrmPrmFinalRating.template=Template +hrm.HrmPrmFinalRating.hierarchy=Hierarchy +hrm.HrmPrmFinalRating.desc=Description +hrm.HrmPrmFinalRating.designation=Designation +hrm.HrmPrmFinalRating.scale=Scale +hrm.HrmPrmFinalRating.nextHeader=Appraisal Type +hrm.HrmPrmFinalRating.finalHeader=Rating Details +hrm.HrmPrmFinalRating.kpaWiseRating=KPA Wise Rating +hrm.HrmPrmFinalRating.finalRating=Final Rating +hrm.HrmPrmFinalRating.maxRating=Maximum Rating +hrm.HrmPrmFinalRating.minRating=Minimum Rating +hrm.HrmPrmFinalRating.detail=Final KPA Rating +hrm.HrmPrmFinalRating.txtKPAGroupCode=KPA Group Code +hrm.HrmPrmFinalRating.txtKPAGroupDesc=KPA Group Desc +hrm.HrmPrmFinalRating.txtReqAvgRating=Required Average Rating + + +hrm.HrmLeaveLedgerTransc.mainHeader=EMPLOYEE LEAVE LEDGER +hrm.HrmLeaveLedgerTransc.subHeader1=Leave Query +hrm.HrmLeaveLedgerTransc.subHeader2=Employee Leave Status +hrm.HrmLeaveLedgerTransc.subHeader3=Employee Leave Transaction +hrm.HrmLeaveLedgerTransc.employeeNo=Employee No. +hrm.HrmLeaveLedgerTransc.leaveType=Leave Type +hrm.HrmLeaveLedgerTransc.empNo=Employee No. +hrm.HrmLeaveLedgerTransc.leaveTypes=Leave Type +hrm.HrmLeaveLedgerTransc.applicationDate=Application Date +hrm.HrmLeaveLedgerTransc.action=Action +hrm.HrmLeaveLedgerTransc.fromDate=From date +hrm.HrmLeaveLedgerTransc.noOfDays=Number Of Days +hrm.HrmLeaveLedgerTransc.toDate=To Date +hrm.HrmLeaveLedgerTransc.payrollMonth=Payroll Month + + + + + +hrm.HrmEmployeeAppraisal.heading=EMPLOYEE APPRAISAL +hrm.HrmEmployeeAppraisal.header=Employee Appraisal +hrm.HrmEmployeeAppraisal.employeeNo=Employee No +hrm.HrmEmployeeAppraisal.employeeName=Employee Name +hrm.HrmEmployeeAppraisal.appraisalType=Appraisal Type +hrm.HrmEmployeeAppraisal.periodic=Periodic +hrm.HrmEmployeeAppraisal.Assignment=Assignment/AllocationEnd +hrm.HrmEmployeeAppraisal.durationFrom=Duration From +hrm.HrmEmployeeAppraisal.durationTo=Duration To +hrm.HrmEmployeeAppraisal.superiorRating=SuperiorRating +hrm.HrmEmployeeAppraisal.reviewerRating=ReviewerRating +hrm.HrmEmployeeAppraisal.peerRating=PeerRating +hrm.HrmEmployeeAppraisal.subordinateRating=SubordinateRating +hrm.HrmEmployeeAppraisal.remarks=Remarks +hrm.HrmEmployeeAppraisal.appraiserEmpNo=Appraiser Emp No +hrm.HrmEmployeeAppraisal.name=Name +hrm.HrmEmployeeAppraisal.txtKpaGroupCode=KPA Group Code +hrm.HrmEmployeeAppraisal.txtKpaCode=KPA Code +hrm.HrmEmployeeAppraisal.txtDesc=Description +hrm.HrmEmployeeAppraisal.txtSelfAppraisal=Self Appraisal +hrm.HrmEmployeeAppraisal.txtWeightage=Weightage +hrm.HrmEmployeeAppraisal.txtRemark=App. Remarks +hrm.HrmEmployeeAppraisal.txtRating=Rating +hrm.HrmEmployeeAppraisal.reviewerEmpNo=Reviewer Employee No +hrm.HrmEmployeeAppraisal.reviewerName=Reviewer Name +hrm.HrmEmployeeAppraisal.reviewComments=Rreview Comments +hrm.HrmEmployeeAppraisal.reviewRating=Review Rating +hrm.HrmEmployeeAppraisal.superiorEmpNo=EmployeeNo. +hrm.HrmEmployeeAppraisal.superiorEmpName=Employee Name + + +hrm.HrmLvAppln.mainHeader=EMPLOYEE LEAVE APPLICATION +hrm.HrmLvAppln.subHeader1=Employee Information +hrm.HrmLvAppln.employeeNumber=Employee Number +hrm.HrmLvAppln.employeeName=Employee Name +hrm.HrmLvAppln.designation=Designation +hrm.HrmLvAppln.MiddleName=Middle Name +hrm.HrmLvAppln.FirstName=First Name +hrm.HrmLvAppln.LastName=Last Name +hrm.HrmLvAppln.scaleOfPay=Scale Of Pay +hrm.HrmLvAppln.leaveCodes=Leave Code +hrm.HrmLvAppln.description=Description +hrm.HrmLvAppln.dateApplied=Date Applied +hrm.HrmLvAppln.fromYear=From Year +! hrm.HrmLvAppln.toYear=To Year +hrm.HrmLvAppln.transId=Leave Transaction Id +hrm.HrmLvAppln.fromAppDate=From Date +hrm.HrmLvAppln.toAppDate=To Date +hrm.HrmLvAppln.days=Number Of Days +hrm.HrmLvAppln.leaveBreakUp=Leave Break Up +hrm.HrmLvAppln.purpose=Purpose +hrm.HrmLvAppln.remarks=Remarks +hrm.HrmLvAppln.statusOfLeaves=Status +hrm.HrmLvAppln.new=New +hrm.HrmLvAppln.approved=Approved +hrm.HrmLvAppln.rejected=Rejected +hrm.HrmLvAppln.revised=Revised +hrm.HrmLvAppln.pending=Pending +hrm.HrmLvAppln.address=Address For Communication +hrm.HrmLvAppln.phone=Phone No. +hrm.HrmLvAppln.date=Date +hrm.HrmLvAppln.holidayFlag=Holiday Flag +hrm.HrmLvAppln.halfDayFlag=Half Day Flag +hrm.HrmLvAppln.firstHalf=First Half +hrm.HrmLvAppln.secondHalf=Second Half +hrm.HrmLvAppln.fullDay=Full Day +hrm.HrmLvAppln.suffix=Suffix +hrm.HrmLvAppln.prefix=Prefix +hrm.HrmLvAppln.intermediate=Intermediate +hrm.HrmLvAppln.holiday=Holiday +hrm.HrmLvAppln.workingDay=Working Day +hrm.HrmLvAppln.selectDates=Please select From Date and To Date. +hrm.HrmLvAppln.header.dateValidation=To Date should be Greater than From Date. +hrm.HrmLvAppln.header.calendarValidation=To Date and From Date should lie within the same Calendar Period. +hrm.HrmLvAppln.header.startDateHoliday=Leave Start Date should not lie on a Holiday. +hrm.HrmLvAppln.header.endDateHoliday=Leave End Date should not lie on a Holiday. +hrm.HrmLvAppln.prefixAssocNotAllowed=Leave cannot be Associated. Another Leave ends immediately before this leave's Start Date. +hrm.HrmLvAppln.suffixAssocNotAllowed=Leave cannot be Associated. Another Leave starts immediately after this leave's End Date. +hrm.HrmLvAppln.prefixAssocNotAllowedCL=No. Of Casual Leaves taken at a stretch exceeds the permitted amount(3). +hrm.HrmLvAppln.suffixAssocNotAllowedCL=No. Of Casual Leaves taken at a stretch exceeds the permitted amount(3). +hrm.HrmLvAppln.overlappingLeave=Leave is overlapping with another Leave. +hrm.HrmLvAppln.noOfYearsFailed=Minimum {0} years of service is required for this leave. +hrm.HrmLvAppln.timesInPeriodFailed=Leave is allowed for a maximum of {0} times in a calendar. +hrm.HrmLvAppln.maxDaysInPeriodFailed=Leave is allowed for a maximum of {0} days in a calendar. +hrm.HrmLvAppln.maxDaysPerTxnFailed=Leave is allowed for a maximum of {0} days at a time. +hrm.HrmLvAppln.minDaysPerTxnFailed=Minimum {0} days leave has to taken. +hrm.HrmLvAppln.maxTimesInServiceFailed=Leave is allowed for a maximum of {0} times in Service life. +hrm.HrmLvAppln.maxDaysInServiceFailed=Leave is allowed for a maximum of {0} days in Service life. +hrm.HrmLvAppln.tooManyDays=Cannot show breakup for more than 15 days. +hrm.HrmLvAppln.wrongApprover=Not Authorized to Approve. +hrm.HrmLvAppln.ltaFlag=Apply For LTA +hrm.HrmLvAppln.one=One Year +hrm.HrmLvAppln.two=Two Year +hrm.HrmLvAppln.optedFor=Opted For +hrm.HrmLvAppln.ltaAmount=Net LTA Amount (Rs.) +hrm.HrmLvAppln.eligAmount=Gross LTA Amount (Rs.) +hrm.HrmLvAppln.ltaElig=At least 5 days of PL required for claiming LTA +hrm.HrmLvAppln.checkBreakUp=Check Leave Break Up First +hrm.HrmLvAppln.leaveBalance=You don't have enough balance for this leave +hrm.HrmLvAppln.breakUp=Leave BreakUp for the applied period is shown in the detail block +hrm.HrmLvAppln.cancellationError=Leave cannot be cancelled as it has been encashed. +hrm.HrmLvAppln.clError=CL cannot be applied for more than 3 days. +hrm.HrmLvAppln.approverNotFound=No Approver has been tagged to you. Please contact HR! +hrm.HrmLvAppln.notEligible=You are not eligible to apply for this leave. Please contact HR! +hrm.HrmLvAppln.medFlag=Medical Certificate Provided +hrm.HrmLvAppln.MedicalErr=Medical Certificate has to be provided for the application. +hrm.HrmLvAppln.slMedError= Medical Certificate has to be submitted for applying more than 3 days of Sick Leave. +hrm.HrmLvAppln.onlysicklvallowed= After Special Leave only sick leave is allowed and a medical certificate must be provided. +hrm.HrmLeaveApplicationQuery.mainHeader=LEAVE APPLICATION QUERY +hrm.HrmLeaveApplicationQuery.subHeader1=Leave Details +hrm.HrmLeaveApplicationQuery.employeeNo=Employee Number +hrm.HrmLeaveApplicationQuery.employeeName=Employee Name +hrm.HrmLeaveApplicationQuery.leaveCode=Leave Type +hrm.HrmLeaveApplicationQuery.leaveDescription=Leave Description +hrm.HrmLeaveApplicationQuery.fromDate=From Date +hrm.HrmLeaveApplicationQuery.toDate=To Date +hrm.HrmLeaveApplicationQuery.statusOfLeave=Status +hrm.HrmLeaveApplicationQuery.new=New +hrm.HrmLeaveApplicationQuery.pending=Pending +hrm.HrmLeaveApplicationQuery.approved=Approved +hrm.HrmLeaveApplicationQuery.rejected=Rejected +hrm.HrmLeaveApplicationQuery.revised=Revised +hrm.HrmLeaveApplicationQuery.transId= +hrm.HrmLeaveApplicationQuery.leaveCodes=Leave Code +hrm.HrmLeaveApplicationQuery.appliedLeaveDate=Applied Leave Date +hrm.HrmLeaveApplicationQuery.leaveStatus=Status +hrm.HrmLeaveApplicationQuery.new=New +hrm.HrmLeaveApplicationQuery.pending=Pending +hrm.HrmLeaveApplicationQuery.approved=Approved +hrm.HrmLeaveApplicationQuery.rejected=Rejected + + +hrm.HrmGenEligRule.heading=ELIGIBILITY RULES +hrm.HrmGenEligRule.header=Generate Formula +hrm.HrmGenEligRule.eligibilityClass=Eligibility Class +hrm.HrmGenEligRule.operator=Operator +hrm.HrmGenEligRule.values=Values +hrm.HrmGenEligRule.leave=Leave +hrm.HrmGenEligRule.loan=Loan +hrm.HrmGenEligRule.advances=Advances +hrm.HrmGenEligRule.claims=Claims +hrm.HrmGenEligRule.separation=Separation +hrm.HrmGenEligRule.earningDeduction=Earning/Deduction +hrm.HrmGenEligRule.documentType=Document Type +hrm.HrmGenEligRule.documentCode=Document Code +hrm.HrmGenEligRule.formula=Formula +hrm.HrmGenEligRule.subHeader1=Document Details +hrm.HrmGenEligRule.mainHeader=ELIGIBILITY RULE DETAIL +hrm.HrmGenEligRule.eligRule=Eligibility Rule + + + + +hrm.HrmCancellationBatch.mainHeader=LEAVE CANCELLATION BATCH +hrm.HrmCancellationBatch.subHeader1=Employe Details +hrm.HrmCancellationBatch.employeeNo=Employee No. +hrm.HrmCancellationBatch.employeeName=Employee Name +hrm.HrmCancellationBatch.cancelFromDate=Cancel From Date +hrm.HrmCancellationBatch.leaveCode=Leave Code +hrm.HrmCancellationBatch.leaveDescription=Leave Description +hrm.HrmCancellationBatch.cancelToDate=Cancel To Date +hrm.HrmCancellationBatch.empNo=Employee No. +hrm.HrmCancellationBatch.cd=CD +hrm.HrmCancellationBatch.transId=Transaction ID +hrm.HrmCancellationBatch.fromDate=From Date +hrm.HrmCancellationBatch.toDate=To Date +hrm.HrmCancellationBatch.days=Days +hrm.HrmCancellationBatch.cancDate=Cancellation Date +hrm.HrmCancellationBatch.cancType=Cancellation Type +hrm.HrmCancellationBatch.cancFromDate=Cancel From Date +hrm.HrmCancellationBatch.cancToDate=Cancel To Date +hrm.HrmCancellationBatch.daysCancelled=Days Cancelled +hrm.HrmCancellationBatch.remarks=Remarks + + + +hrm.HrmLeaveBreakUp.mainHeader=LEAVE BREAK UP +hrm.HrmLeaveBreakUp.subHeader1=Employee Details +hrm.HrmLeaveBreakUp.employeeNo=Employee No. +hrm.HrmLeaveBreakUp.leaveCode=Leave Code +hrm.HrmLeaveBreakUp.leaveDate=Leave Date +hrm.HrmLeaveBreakUp.fullDayFlag=Full/Half Day Flag +hrm.HrmLeaveBreakUp.firstHalf=First Half +hrm.HrmLeaveBreakUp.secondHalf=Second Half +hrm.HrmLeaveBreakUp.fullDay=Full Day + + +hrm.HrmLeaveCancellationQuery.mainHeader=LEAVE CANCELLATION QUERY +hrm.HrmLeaveCancellationQuery.subHeader1=Leave Details +hrm.HrmLeaveCancellationQuery.employeeNumber=Employee Number +hrm.HrmLeaveCancellationQuery.leaveType=Leave Type +hrm.HrmLeaveCancellationQuery.leaveDescription=Leave Description +hrm.HrmLeaveCancellationQuery.cancelFromDate=From Date +hrm.HrmLeaveCancellationQuery.cancelToDate=To Date +hrm.HrmLeaveCancellationQuery.cancellationStatus=Cancellation Type +hrm.HrmLeaveCancellationQuery.full=Full +hrm.HrmLeaveCancellationQuery.partial=Partial +hrm.HrmLeaveCancellationQuery.transId= +hrm.HrmLeaveCancellationQuery.leaveCodes=Leave Description +hrm.HrmLeaveCancellationQuery.appliedLeaveDate=Date Applied +hrm.HrmLeaveCancellationQuery.cancellationDate=Cancellation Date +hrm.HrmLeaveCancellationQuery.cancellationType=Cancellation Type +hrm.HrmLeaveCancellationQuery.cancelStatus=Status +hrm.HrmLeaveCancellationQuery.approved=Approved +hrm.HrmLeaveCancellationQuery.rejected=Rejected +hrm.HrmLeaveCancellationQuery.pending=Pending +hrm.HrmLeaveCancellationQuery.new=New + + +hrm.HrmSettlement.mainHeader=ADVANCE SETTLEMENT HEADS +hrm.HrmSettlement.subHeader1=Advance Description +hrm.HrmSettlement.subHeader2=Advance Settlement Heads +hrm.HrmSettlement.advanceCode=Advance Code +hrm.HrmSettlement.advanceDescription=Advance Description +hrm.HrmSettlement.headName=Head Name +hrm.HrmSettlement.maxLimit=Maximum Limit + +hrm.HrmAdvSettlementHeads.mainHeader=ADVANCE SETTLEMENT HEADS +hrm.HrmAdvSettlementHeads.subHeader1=Advance Description +hrm.HrmAdvSettlementHeads.subHeader2=Advance Settlement Heads +hrm.HrmAdvSettlementHeads.advanceCode=Advance Code +hrm.HrmAdvSettlementHeads.advanceDescription=Advance Description +hrm.HrmAdvSettlementHeads.headName=Head Name +hrm.HrmAdvSettlementHeads.maxLimit=Maximum Limit +hrm.HrmAdvSettlementHeads.amount=Amount +hrm.HrmAdvSettle.balance=Outstanding Balance +hrm.HrmAdvSettle.recoveredAmount=Amount Recovered +hrm.HrmAdvSettle.paidInstallments=No Of Installments +hrm.HrmAdvSettle.sanctionedDate=Sanction date +hrm.HrmAdvSettle.sanctionedAmount=Sanction Amount + + + +hrm.HrmEarningDeduction.mainHeader=EARNING DEDUCTION MASTER +hrm.HrmEarningDeduction.subHeader1=Earning Deduction Type Master +hrm.HrmEarningDeduction.subHeader2=Periodicity Details +hrm.HrmEarningDeduction.erngDednCode=Earning Deduction Code +hrm.HrmEarningDeduction.erngDednName=Earning Deduction Name +hrm.HrmEarningDeduction.erngOrDedn=Earning Or Deduction +hrm.HrmEarningDeduction.earning=Earning +hrm.HrmEarningDeduction.deduction=Deduction +hrm.HrmEarningDeduction.calendarType=Calendar Type +hrm.HrmEarningDeduction.erngTaxable=Earning Is Taxable +hrm.HrmEarningDeduction.yes=Yes +hrm.HrmEarningDeduction.no=No +hrm.HrmEarningDeduction.onDedn=On Deduction +hrm.HrmEarningDeduction.noTaxImplicn=No Tax Implication +hrm.HrmEarningDeduction.TaxExemption=Tax Exemption +hrm.HrmEarningDeduction.TaxRebate=Tax Rebate +hrm.HrmEarningDeduction.billTaxExempt=Bill Tax Exemption +hrm.HrmEarningDeduction.depOnOthrErng=Dependant On Other Earnings +hrm.HrmEarningDeduction.needToApply=Need To Apply +hrm.HrmEarningDeduction.leaveEncshCase=Leave Encashment Case +hrm.HrmEarningDeduction.erngOrDednOnLoc=Earning/Deduction Dependant On Location +hrm.HrmEarningDeduction.local=Local +hrm.HrmEarningDeduction.outOfStation=Out Of Station +hrm.HrmEarningDeduction.abroad=Abroad +hrm.HrmEarningDeduction.universal=Universal +hrm.HrmEarningDeduction.attendanceDependancy=Attendance Dependancy +hrm.HrmEarningDeduction.periodicOrNot=Periodic Or Not +hrm.HrmEarningDeduction.payThroughPayroll=Payment Through Payroll +hrm.HrmEarningDeduction.flexiAllowance=Component Of Flexi Allowance +hrm.HrmEarningDeduction.periodInMonths=Period In Months Or Calendar Period +hrm.HrmEarningDeduction.Month=Month +hrm.HrmEarningDeduction.CalendarPeriod=Calendar Period +hrm.HrmEarningDeduction.noOfMonths=No.Of Months Or Calendar Period +hrm.HrmEarningDeduction.noOfErngs=No.Of Earning Or Deduction/Period +hrm.HrmEarningDeduction.description=Description +hrm.HrmEarningDeduction.leaveType=Leave Type +hrm.HrmEarningDeduction.deductionExemption Deduction Exemption(%) +hrm.HrmEarningDeduction.maxCalLimit=Maximum Calendar Limit +hrm.HrmEarningDeduction.maxLimit=Maximum Limit +hrm.HrmEarningDeduction.minLimit=Minimum Limit +hrm.HrmEarningDeduction.greaterOrLesser=Greater/Lesser/Either +hrm.HrmEarningDeduction.flatAmount=Flat Amount +hrm.HrmEarningDeduction.dependancyOnEarning=Dependancy On Earning +hrm.HrmEarningDeduction.effectFrom=Effective From +hrm.HrmEarningDeduction.effectTo=Effect To +hrm.HrmEarningDeduction.appliedToAll=Applied To All +hrm.HrmEarningDeduction.greater=Greater of Flat Amt/% of Earning +hrm.HrmEarningDeduction.lesser=Lesser of Flat Amt/% of Earning +hrm.HrmEarningDeduction.flat=Flat Amount +hrm.HrmEarningDeduction.dependancy=Based on Dependency Formula + + +hrm.HrmLeaveChangeQuery.mainHeader=LEAVE CHANGE QUERY +hrm.HrmLeaveChangeQuery.subHeader1=Leave Details +hrm.HrmLeaveChangeQuery.employeeNumber=Employee Number +hrm.HrmLeaveChangeQuery.employeeName=Employee Name +hrm.HrmLeaveChangeQuery.leaveType=Leave Type +hrm.HrmLeaveChangeQuery.leaveDescription=Leave Description +hrm.HrmLeaveChangeQuery.changeFromDate=Change From Date +hrm.HrmLeaveChangeQuery.changeToDate=Change To Date +hrm.HrmLeaveChangeQuery.transId=Transaction ID +hrm.HrmLeaveChangeQuery.leaveCodes=Leave Code +hrm.HrmLeaveChangeQuery.appliedLeaveDate=Applied Date +hrm.HrmLeaveChangeQuery.changeDate=Leave Change Date +hrm.HrmLeaveChangeQuery.leaveChangeStatus=Leave Change Status +hrm.HrmLeaveChangeQuery.full=Full +hrm.HrmLeaveChangeQuery.partial=Partial +hrm.HrmLeaveChangeQuery.dateValidation=From Date must be adjascent to To Date +hrm.HrmLeaveChangeQuery.detailDateValidation=From Date and To Date must be within the From Date and To date of the leave applied. + +hrm.HrmLeaveChange.mainHeader=LEAVE CHANGE +hrm.HrmLeaveChange.subHeader1=Employee Information +hrm.HrmLeaveChange.subHeader4=Leave Details +hrm.HrmLeaveChange.subHeader3=Change Details +hrm.HrmLeaveChange.employeeNo=Employee Number +hrm.HrmLeaveChange.employeeName=Employee Name +hrm.HrmLeaveChange.firstName=First Name +hrm.HrmLeaveChange.middleName=Middle Name +hrm.HrmLeaveChange.lastName=Last Name +hrm.HrmLeaveChange.leaveCode=Leave Code +hrm.HrmLeaveChange.leaveDescription=Leave Description +hrm.HrmLeaveChange.dateApplied=Date Applied +hrm.HrmLeaveChange.fromDate=From Date +hrm.HrmLeaveChange.toDate=To Date +hrm.HrmLeaveChange.days=No.of Days +hrm.HrmLeaveChange.address=Address +hrm.HrmLeaveChange.phoneNo=Phone No. +hrm.HrmLeaveChange.changeStatus=Change Status +hrm.HrmLeaveChange.purpose=Purpose +hrm.HrmLeaveChange.changeFromDate=Change From Date +hrm.HrmLeaveChange.changeToDate=Change To Date +hrm.HrmLeaveChange.leaveChangeId=Leave Change ID +hrm.HrmLeaveChange.remarks=Remarks +hrm.HrmLeaveChange.leaveChangeStatus=Leave Change Status +hrm.HrmLeaveChange.new=New +hrm.HrmLeaveChange.approved=Approved +hrm.HrmLeaveChange.noOfDays=Days +hrm.HrmLeaveChange.pending=Pending +hrm.HrmLeaveChange.rejected=Rejected +hrm.HrmLeaveChange.full=Full +hrm.HrmLeaveChange.partial=Partial +hrm.HrmLeaveChange.designation=Designation +hrm.HrmLeaveChange.scaleOfPay=Scale Of Pay + + +hrm.HrmAdvanceEligibility.mainHeader=ADVANCE ELIGIBILITY RULE +hrm.HrmAdvanceEligibility.subHeader1=Advance Details +hrm.HrmAdvanceEligibility.advanceCode=Advance Code +hrm.HrmAdvanceEligibility.description=Description +hrm.HrmAdvanceEligibility.designation=Designation +hrm.HrmAdvanceEligibility.scale=Scale +hrm.HrmAdvanceEligibility.grade=Grade +hrm.HrmAdvanceEligibility.level=Level + +!modified on 9th Feb 2006 Leave Encashment +hrm.HrmEmpEncash.mainHeader=EMPLOYEE LEAVE ENCASHMENT +hrm.HrmEmpEncash.subHeader1=Employee Information +hrm.HrmEmpEncash.employeeNumber=Employee Number +hrm.HrmEmpEncash.employeeName=Employee Name +hrm.HrmEmpEncash.FirstName=First Name +hrm.HrmEmpEncash.MiddleName=Middle Name +hrm.HrmEmpEncash.LastName=Last Name +hrm.HrmEmpEncash.designation=Designation +hrm.HrmEmpEncash.scaleOfPay=Scale Of Pay +hrm.HrmEmpEncash.fromDate=From Date +hrm.HrmEmpEncash.toDate=To Date +hrm.HrmEmpEncash.changeStatus=Encashment Status +hrm.HrmEmpEncash.new=New +hrm.HrmEmpEncash.approved=Approved +hrm.HrmEmpEncash.rejected=Rejected +hrm.HrmEmpEncash.pending=Pending +hrm.HrmEmpEncash.leaveCodes=Leave Code +hrm.HrmEmpEncash.description=Description +hrm.HrmEmpEncash.dateApplied=Date Applied +hrm.HrmEmpEncash.daysEncashed=No Of Days +hrm.HrmEmpEncash.daysEncashedError=You don't have sufficient Leave Balance +hrm.HrmEmpEncash.daysEncashedError2=Encashment for selected employee has already been done in this year +hrm.HrmEmpEncash.taxPercentage=IT Percentage +hrm.HrmEmpEncash.pfDeduction=PF Deduction +hrm.HrmEmpEncash.taxAmount=Income Tax Amount +hrm.HrmEmpEncash.taxAmountError=Deduction cannot be greater than Encashment Amount +hrm.HrmEmpEncash.encashedAmount=Net Encashed Amount +hrm.HrmEmpEncash.grade=Grade +hrm.HrmEmpEncash.desig=Designation +hrm.HrmEmpEncash.location=Location +hrm.HrmEmpEncash.dateConstraintViolated2=Application Date cannot be future date. +hrm.HrmEmpEncash.submitError=Encashment has already been done against this leave + +hrm.HrmAdvanceBatch.mainHeader=ADVANCE APPLICATION BATCH +hrm.HrmAdvanceBatch.subHeader1=Query Advance +hrm.HrmAdvanceBatch.employeeNo=Employee No. +hrm.HrmAdvanceBatch.advanceCode=Advance Code +hrm.HrmAdvanceBatch.fromDate=From Date +hrm.HrmAdvanceBatch.toDate=To Date +hrm.HrmAdvanceBatch.statusOfAdvance=Status Of Advance +hrm.HrmAdvanceBatch.all=All +hrm.HrmAdvanceBatch.approved=Approved +hrm.HrmAdvanceBatch.rejected=Rejected +hrm.HrmAdvanceBatch.pending=Pending +hrm.HrmAdvanceBatch.empNo=Employee No. +hrm.HrmAdvanceBatch.empName=Employee Name +hrm.HrmAdvanceBatch.cd=CD +hrm.HrmAdvanceBatch.dateApplied=Date Applied +hrm.HrmAdvanceBatch.advanceName=Advance Name +hrm.HrmAdvanceBatch.amountApplied=Amount Applied +hrm.HrmAdvanceBatch.reason=Reason +hrm.HrmAdvanceBatch.amountSettled=Amount Settled +hrm.HrmAdvanceBatch.approvedFlag=Approved Flag + + +hrm.HrmEmpAdvance.mainHeader=EMPLOYEE ADVANCE APPLICATION +hrm.HrmEmpAdvance.subHeader1=Employee Details +hrm.HrmEmpAdvance.employeeNumber=Employee Number +hrm.HrmEmpAdvance.designation=Designation +hrm.HrmEmpAdvance.employeeName=Employee Name +hrm.HrmEmpAdvance.scaleOfPay=Scale Of Pay +hrm.HrmEmpAdvance.fromDate=From Date +hrm.HrmEmpAdvance.toDate=To Date +hrm.HrmEmpAdvance.statusOfAdvance=Status Of Advance +hrm.HrmEmpAdvance.advanceCode=Advance Name +hrm.HrmEmpAdvance.advanceName=Advance Name +hrm.HrmEmpAdvance.advanceCodes=Advance Code +hrm.HrmEmpAdvance.dateApplied=Date Applied +hrm.HrmEmpAdvance.amountApplied=Amount Applied +hrm.HrmEmpAdvance.reason=Reason +hrm.HrmEmpAdvance.amountSettled=Amount Settled +hrm.HrmEmpAdvance.approvedFlag=Advance Status +hrm.HrmEmpAdvance.settlementAmount=Settlement Amount +hrm.HrmEmpAdvance.advanceStatus=Advance Status +hrm.HrmEmpAdvance.new=New +hrm.HrmEmpAdvance.approved=Approved +hrm.HrmEmpAdvance.pending=Pending +hrm.HrmEmpAdvance.rejected=Rejected +hrm.HrmEmpAdvance.effectiveFrom=Effective From +hrm.HrmEmpAdvance.effectiveTo=Effective To +hrm.HrmEmpAdvance.payrollMonth=Recovery Year Start Month (YYYYMM) +hrm.HrmEmpAdvance.noOfInst=No Of Installments +hrm.HrmEmpAdvance.monthlyInstallment=Equal Monthly Installments +hrm.HrmEmpAdvance.approverName=Approver's Name +hrm.HrmEmpAdvance.grade=Grade +hrm.HrmEmpAdvance.location=Location +hrm.HrmEmpAdvance.eligibleAmount=Eligible Amount +hrm.HrmEmpAdvance.sanctionedAmount=Sanctioned Amount +hrm.HrmEmpAdvance.sanctionDate=Sanctioned Date +hrm.HrmEmpAdvance.checkAmount=Sanctioned Amount cannot be greater than Eligible Amount +hrm.HrmEmpAdvance.checkPayroll=Employee's Payroll is incomplete +hrm.HrmEmpAdvance.checkEligAmt=Eligible Amount cannot be zero +hrm.HrmEmpAdvance.balance=Outstanding Balance +hrm.HrmEmpAdvance.paidInstallments=Installments Paid +hrm.HrmEmpAdvance.settledAmount=Amount Settled +hrm.HrmEmpAdvance.bulkSettlement=Bulk Settlement +hrm.HrmEmpAdvance.bulkSettleAmount=Settlement Amount +hrm.HrmEmpAdvance.bulkSettleAmountError=Bulk Settlement amount cannot be greater than Outstanding Balance. + +hrm.HrmEmpLoanAppln.mainHeader=EMPLOYEE LOAN APPLICATION +hrm.HrmEmpLoanAppln.subHeader1=Employee Details +hrm.HrmEmpLoanAppln.employeeNumber=Employee No. +hrm.HrmEmpLoanAppln.employeeName=Employee Name +hrm.HrmEmpLoanAppln.designation=Designation +hrm.HrmEmpLoanAppln.scaleOfPay=Scale Of Pay +hrm.HrmEmpLoanAppln.loanCode=Loan Code +hrm.HrmEmpLoanAppln.loanDesc=Description +hrm.HrmEmpLoanAppln.propertyPrice=Property Price +hrm.HrmEmpLoanAppln.eligibleAmount=Eligible Amount +hrm.HrmEmpLoanAppln.appliedAmount=Applied Amount +hrm.HrmEmpLoanAppln.percProperty=[%] Of Property Price +hrm.HrmEmpLoanAppln.applnDate=Date Applied +hrm.HrmEmpLoanAppln.sanctionDate=Sanction Date +hrm.HrmEmpLoanAppln.noOfInstallment=No.Of Installment +hrm.HrmEmpLoanAppln.fullyRepaid=Fully Repaid +hrm.HrmEmpLoanAppln.periodBetInstallment=Period Between Installment +hrm.HrmEmpLoanAppln.firstInstDate=First Installment Date +hrm.HrmEmpLoanAppln.approvedFlag=Approved Flag +hrm.HrmEmpLoanAppln.new=New +hrm.HrmEmpLoanAppln.pending=Pending +hrm.HrmEmpLoanAppln.approved=Approved +hrm.HrmEmpLoanAppln.rejected=Rejected +hrm.HrmEmpLoanAppln.reason=Reason +hrm.HrmEmpLoanAppln.remarks=Remarks +hrm.HrmEmpLoanAppln.noOfInstError=No.of Installments must be less no. of months left in Service. +hrm.HrmEmpLoanAppln.checkNoOfInst=Total No.of Installments must be equal to the sum of Principal Installment & Interest Installments. +hrm.HrmEmpLoanAppln.servicePeriodError=Minimum/Remaining Service Period is not within prescribed limit for this loan. +hrm.HrmEmpLoanAppln.minServicePeriodError=You don't have enough service period to apply for this loan. +hrm.HrmEmpLoanAppln.maxServicePeriodError=You don't have enough service period left to apply for this loan. +hrm.HrmEmpLoanAppln.disDtlTenAmt=Total Disbursed amount cannot be greater than Sanctioned Amount. +hrm.HrmEmpLoanAppln.sanctionedAmount=Sanctioned Amount +hrm.HrmEmpLoanAppln.percPropertyCheck=[%] of Property Price cannot be greater than 100%. +hrm.HrmEmpLoanAppln.grade=Grade +hrm.HrmEmpLoanAppln.location=Location +hrm.HrmEmpLoanAppln.loanDetails=Details of loans taken +hrm.HrmEmpLoanAppln.payrollMonth=Recovery Start Year Month(YYYYMM) +hrm.HrmEmpLoanAppln.totalInst=Total No Of Installments +hrm.HrmEmpLoanAppln.totalPrincipalInst=No Of Installments(Principal Recovery) +hrm.HrmEmpLoanAppln.totalInterestInst=No Of Installments(Interest Recovery) +hrm.HrmEmpLoanAppln.approvedBy=Approved By +hrm.HrmEmpLoanAppln.instAmount=Installment Amount +hrm.HrmEmpLoanAppln.noOfInstPaid=No Of Installments Paid +hrm.HrmEmpLoanAppln.noOfInstPrincipalPaid=No Of Installments(Principal) Paid +hrm.HrmEmpLoanAppln.noOfInstInterestPaid=No Of Installments(Interest) Paid +hrm.HrmEmpLoanAppln.totalAmountPaid=Total Amount Paid +hrm.HrmEmpLoanAppln.principalPaid=Principal Paid +hrm.HrmEmpLoanAppln.interestPaid=Interest Paid +hrm.HrmEmpLoanAppln.totalBalance=Outstanding Balance +hrm.HrmEmpLoanAppln.principalBalance=Outstanding Balance(Principal) +hrm.HrmEmpLoanAppln.interestBalance=Outstanding Balance(Interest) +hrm.HrmEmpLoanAppln.hbl=HBL Details +hrm.HrmEmpLoanAppln.hblAppliedFor=Applied For +hrm.HrmEmpLoanAppln.hblBranhConst=Nearest Branch of Construction +hrm.HrmEmpLoanAppln.hblDocSubmitted=Documents Submitted +hrm.HrmEmpLoanAppln.hblCity=City/Town/Village +hrm.HrmEmpLoanAppln.hblPO=Post Office +hrm.HrmEmpLoanAppln.hblDistrict=District +hrm.HrmEmpLoanAppln.hblMouza=Name of Mouza & J.L No +hrm.HrmEmpLoanAppln.hblKhatian=Khatian No +hrm.HrmEmpLoanAppln.hblDag=Dag/CS Plot No +hrm.HrmEmpLoanAppln.hblNoOfDeed=No Of The Deed +hrm.HrmEmpLoanAppln.hblParentDeed=Parent No Of The Deed +hrm.HrmEmpLoanAppln.hblVolOfDeed=Volume Of The Deed +hrm.HrmEmpLoanAppln.hblBookNo=Book No +hrm.HrmEmpLoanAppln.hblPageNo=Page No +hrm.HrmEmpLoanAppln.hblRegisteredAt=Registered At +hrm.HrmEmpLoanAppln.checkPayrollMonth= "Month" part in Recovery Year Start Month field not in proper format. +hrm.HrmEmpLoanAppln.checkPayrollMonth1= Change Recovery Year Start Month as Monthly Payroll for this month has been done. +hrm.HrmEmpLoanAppln.checkPayrollMonth2= Cannot be modified as the record has already been processed for this month's payroll +hrm.HrmEmpLoanAppln.checkPayrollYear="Year" part in Recovery Year Start Month field not in proper format. +hrm.HrmEmpLoanAppDisbur.loan=Application Details +hrm.HrmEmpLoanAppDisbur.repayment=Repayment Schedule +hrm.HrmEmpLoanAppDisbur.disbursement=Disbursement Detail +hrm.HrmEmpLoanAppDisbur.tentativeDisDate=Tentative Disb. date +hrm.HrmEmpLoanAppDisbur.tentativeAmt=Tentative Amount +hrm.HrmEmpLoanAppDisbur.actDisDate=Actual Disb. Date +hrm.HrmEmpLoanAppDisbur.actDisAmt=Actual Disb. Amount +hrm.HrmEmpLoanAppDisbur.disDateValidation=Disbursement Date cannot be prior to Sanction Date. +hrm.HrmEmpLoanAppDisbur.deleteNotPossible=Deletion not possible since payroll processing has been started. +hrm.HrmEmpLoanAppln.hblAppliedFor1=Purchase Of Flat/House +hrm.HrmEmpLoanAppln.hblAppliedFor2=Purchase Of Land for Const. of House +hrm.HrmEmpLoanAppln.hblAppliedFor3=Const. of House +hrm.HrmEmpLoanAppln.hblAppliedFor4=Rennovation of House +hrm.HrmEmpLoanAppln.hblAppliedFor5=Addl. Const. of House +hrm.HrmEmpLoanAppln.bulkAmount=Repayment Amount +hrm.HrmEmpLoanAppln.butBulkPayment=Bulk Payment +hrm.HrmEmpLoanAppln.checkBulkAmount=Repayment Amount can not be 0 +hrm.HrmEmpLoanAppln.checkBulk=Bulk Repayment cannot be done since the loan is yet to be disbursed. +hrm.HrmEmpLoanAppln.checkBulkAmount1=Repayment Amount can not be greater than Outstanding Balance +hrm.HrmEmpLoanAppln.DisbSaveError=Disbursement detail cannot be saved due to non-existence of corresponding data in Interest Details. +hrm.HrmEmpLoanAppln.bulkPaymentDate=Bulk Repayment Date + +hrm.HrmEmpLoanAppHblIntRate.fromAmount=Amount From +hrm.HrmEmpLoanAppHblIntRate.toAmount=Amount To +hrm.HrmEmpLoanAppHblIntRate.percentage=Interest Rate (Percentage) +hrm.HrmEmpLoanAppDisbur.HblIntRate=HBL Interest Rate +hrm.HrmEmpLoanAppHblIntRate.AmountError='Amount From' is greater than 'Amount To' in Row {0} of Detail. +hrm.HrmEmpLoanAppHblIntRate.PercentError='Interest Rate' cannot be greater than or equal to 100 in Row {0} of Detail. + +hrm.HrmEmpLoanAppRepay.yearMonth=Year Month +hrm.HrmEmpLoanAppRepay.openBalancePri=Opening Balance Principal +hrm.HrmEmpLoanAppRepay.openBalanceInt=Opening Balance Interest +hrm.HrmEmpLoanAppRepay.principalPaid=Principal Paid in Mth +hrm.HrmEmpLoanAppRepay.interestPaid=Interest Paid in Mth +hrm.HrmEmpLoanAppRepay.interestAccrued=Interest Accrued in Mth +hrm.HrmEmpLoanAppRepay.interestRate=Interest Rate + + +!modified on 11th Feb 2006 +hrm.HrmEmpTrngReq.mainHeader=TRAINING NOMINATION +hrm.HrmEmpTrngReq.subHeader1=Employee Details +hrm.HrmEmpTrngReq.employeeNumber=Employee Number +hrm.HrmEmpTrngReq.employeeName=Employee Name +hrm.HrmEmpTrngReq.designation=Designation +hrm.HrmEmpTrngReq.scaleOfPay=Scale Of Pay +hrm.HrmEmpTrngReq.dateSubmitted=Date Submitted +hrm.HrmEmpTrngReq.trainingCalendar=Training Calendar +hrm.HrmEmpTrngReq.courseName=Course Name +hrm.HrmEmpTrngReq.institutionName=Institution Name +hrm.HrmEmpTrngReq.startDate=Start Date +hrm.HrmEmpTrngReq.endDate=End Date +hrm.HrmEmpTrngReq.nature=Nature +hrm.HrmEmpTrngReq.urgent=Urgent +hrm.HrmEmpTrngReq.emergency=Emergency +hrm.HrmEmpTrngReq.normal=Normal +hrm.HrmEmpTrngReq.purpose=Purpose +hrm.HrmEmpTrngReq.recommender=Recommender +hrm.HrmEmpTrngReq.approvalStatus=Approval Status +hrm.HrmEmpTrngReq.new=New +hrm.HrmEmpTrngReq.pending=Pending +hrm.HrmEmpTrngReq.approved=Approved +hrm.HrmEmpTrngReq.rejected=Rejected +hrm.HrmEmpTrngReq.rejectionRemarks=Remarks +hrm.HrmEmpTrngReq.fullPart=Full Part +hrm.HrmEmpTrngReq.courseCode=Course Code +hrm.HrmEmpTrngReq.recoName=Recommender Name +hrm.HrmEmpTrngReq.date=Date +hrm.HrmEmpTrngReq.participation=Participation +hrm.HrmEmpTrngReq.no=No +hrm.HrmEmpTrngReq.yes=Yes +hrm.HrmEmpTrngReq.partDate=Participating Dates +hrm.HrmEmpTrngReq.firstName=First Name +hrm.HrmEmpTrngReq.middleName=Middle Name +hrm.HrmEmpTrngReq.lastName=Last Name +hrm.HrmEmpTrngReq.grade=Grade +hrm.HrmEmpTrngReq.desig=Designation +hrm.HrmEmpTrngReq.location=Location + + +hrm.HrmGenerateFormula.mainHeader=GENERATE FORMULA +hrm.HrmGenerateFormula.txtParameterDescription=Parameter Description +hrm.HrmGenerateFormula.txtParameterCode=Parameter Code +hrm.HrmGenerateFormula.operator=Operator +hrm.HrmGenerateFormula.formula=Formula +hrm.HrmGenerateFormula.tabHeader=Parameter +hrm.HrmGenerateFormula.add=+ Add +hrm.HrmGenerateFormula.subtract=- Subtract +hrm.HrmGenerateFormula.multiply=* Multiply +hrm.HrmGenerateFormula.divide=/ Divide +hrm.HrmGenerateFormula.power=^ Power +hrm.HrmGenerateFormula.bracketOpen=( Bracket Open +hrm.HrmGenerateFormula.bracketClose=) Bracket Close + + +hrm.HrmEmpTrngHistForm.employeeNo=Employee No. +hrm.HrmEmpTrngHistForm.employeeName=Employee Name +hrm.HrmEmpTrngHistForm.courseCode=Course Code +hrm.HrmEmpTrngHistForm.courseName=Course Name +hrm.HrmEmpTrngHistForm.calendarName=Calendar Name +hrm.HrmEmpTrngHistForm.startDate=Start Date +hrm.HrmEmpTrngHistForm.endDate=End Date +hrm.HrmEmpTrngHistForm.instName=Institute Name + +hrm.HrmAppraisalStart.mainHeader=APPRAISAL START ORDER +hrm.HrmAppraisalStart.subHeader=Appraisal Details +hrm.HrmAppraisalStart.workId=Work ID +hrm.HrmAppraisalStart.iniDate=Initiation Date +hrm.HrmAppraisalStart.pendingTime=Pending Time +hrm.HrmAppraisalStart.description=Process Description +hrm.HrmAppraisalStart.appraisalStatus=Status +hrm.HrmAppraisalStart.taskType=Task Type +hrm.HrmAppraisalStart.completionTime=Completion Date +hrm.HrmAppraisalStart.goalSetting=Goal Setting Process +hrm.HrmAppraisalStart.appraisal=Appraisal +hrm.HrmAppraisalStart.review=Review +hrm.HrmAppraisalStart.new=New +hrm.HrmAppraisalStart.pending=Pending +hrm.HrmAppraisalStart.closed=Closed +hrm.HrmAppraisalStart.selfAppraisal=Self Appraisal +hrm.HrmAppraisalStart.approverReviewer=Check Approver/Reviewer + + +hrm.HrmAppraisalRules.mainHeader=APPRAISAL RULES +hrm.HrmAppraisalRules.subHeader1=Appraisal Information +hrm.HrmAppraisalRules.ruleCode=Rule Code +hrm.HrmAppraisalRules.ruleName=Rule Name +hrm.HrmAppraisalRules.appraisalFrequency=Appraisal Frequency +hrm.HrmAppraisalRules.completionPeriod=Completion Period +hrm.HrmAppraisalRules.quarterly=Quarterly +hrm.HrmAppraisalRules.halfYearly=Half Yearly +hrm.HrmAppraisalRules.annually=Annually +hrm.HrmAppraisalRules.biMonthly=Bi-Monthly +hrm.HrmAppraisalRules.validity=Validity +hrm.HrmAppraisalRules.yes=Yes +hrm.HrmAppraisalRules.no=No +hrm.HrmAppraisalRules.applicable=Applicable To All +hrm.HrmAppraisalRules.startMonthDate=Start Month Date + + +hrm.HrmSepCatMstrForm.sepCode=Separation Code +hrm.HrmSepCatMstrForm.sepDesc=Separation Description + +hrm.HrmDeptClearanceForm.deptCode=Department Code +hrm.HrmDeptClearanceForm.deptName=Department Name + +hrm.HrmEmpClearanceForm.empNo=Employee No. +hrm.HrmEmpClearanceForm.empName=Employee Name + +hrm.HrmEmpSepForm.empNo=Employee No. +hrm.HrmEmpSepForm.empName=Employee Name + + +hrm.HrmAppKPAForm.KPAGrpCode=KPA Group Code +hrm.HrmAppKPAForm.description=Description +hrm.HrmAppKPAWtgForm.templateName=Template Name + + +hrm.HrmAppMapForm.employeeNo=Employee No +hrm.HrmAppMapForm.employeeName=Employee Name + +hrm.HrmCancelQueryForm.employeeNumber=Employee No +hrm.HrmCancelQueryForm.empName=Employee Name +hrm.HrmLeaveCancellationQuery.empName=Employee Name + +hrm.HrmCancelQueryForm.leaveType=Leave Type +hrm.HrmCancelQueryForm.leaveDesc=Leave Description + +hrm.HrmAppRuleForm.ruleCode=Rule Code +hrm.HrmAppRuleForm.description=Rule Name + +hrm.HrmTransferApplcn.mainHeader= EMPLOYEE TRANSFER APPLICATION +hrm.HrmTransferApplcn.subHeader1=Transfer Details +hrm.HrmTransferApplcn.subHeader2=Site Details +hrm.HrmTransferApplcn.fromDesignation=From Designation +hrm.HrmTransferApplcn.toDesignation=To Designation +hrm.HrmTransferApplcn.applnNo=Application No. +hrm.HrmTransferApplcn.self=Self +hrm.HrmTransferApplcn.office=Office +hrm.HrmTransferApplcn.employeeNo=Employee No. +hrm.HrmTransferApplcn.ofcNoteNo=Office Note No. +hrm.HrmTransferApplcn.ofcNoteDate=Office Note Date +hrm.HrmTransferApplcn.siteCode1=To Site(1) +hrm.HrmTransferApplcn.siteCode2=Site(2) +hrm.HrmTransferApplcn.siteCode3=Site(3) +hrm.HrmTransferApplcn.reason=Reason For Transfer[50 characters] +hrm.HrmTransferApplcn.generatedBy=Generated By +hrm.HrmTransferApplcn.transferSite=Preferred Sites +hrm.HrmTransferApplcn.applnDate=Application Date +hrm.HrmTransferApplcn.fromSite=From Site +hrm.HrmTransferApplcn.fromWorkGroup=From Work Group +hrm.HrmTransferApplcn.toWorkGroup=To Work Group +hrm.HrmTransferApplcn.toWorkGroupCode=WorkGroup Code +hrm.HrmTransferApplcn.applnType=Transfer Type +hrm.HrmTransferApplcn.sectional=Sectional +hrm.HrmTransferApplcn.locational=Locational +hrm.HrmTransferApplcn.workGroupCode=To Work Group +hrm.HrmTransferApplcn.workGroupName=Work Group Name +hrm.HrmTransferApplcn.employeeNo=Employee No. +hrm.HrmTransferApplcn.employeeName=Employee Name +hrm.HrmTransferApplcn.siteCode=Site Code +hrm.HrmTransferApplcn.siteName=Site Name +hrm.HrmTransferApplcn.trnsStatus=Status +hrm.HrmTransferApplcn.new=New +hrm.HrmTransferApplcn.approved=Approved +hrm.HrmTransferApplcn.pending=Pending +hrm.HrmTransferApplcn.rejected=Rejected +hrm.HrmTransferApplcn.tranReqDate=Requested Transfer Date + +hrm.HrmTransferOrder.mainHeader=TRANSFER ORDER +hrm.HrmTransferOrder.subHeader1=Transfer Information +hrm.HrmTransferOrder.subHeader2=Transfer Details +hrm.HrmTransferOrder.orderNo=Transfer Order No. +hrm.HrmTransferOrder.orderDate=Transfer Order Date +hrm.HrmTransferOrder.orderStatus=Status +hrm.HrmTransferOrder.new=New +hrm.HrmTransferOrder.approved=Approved +hrm.HrmTransferOrder.pending=Pending +hrm.HrmTransferOrder.closed=Closed +hrm.HrmTransferOrder.initiatedBy=Transfer Required By +hrm.HrmTransferOrder.fromSite=From Site +hrm.HrmTransferOrder.toSite=To Site +hrm.HrmTransferOrder.fromWorkGroup=From Work Group +hrm.HrmTransferOrder.toWorkGroup=To Work Group +hrm.HrmTransferOrder.reportingEmp=Reporting Employee +hrm.HrmTransferOrder.trnsfrEffectDate=Transfer Effect Date +hrm.HrmTransferOrder.taFlag=Applicable For TA +hrm.HrmTransferOrder.daFlag=Applicable For DA +hrm.HrmTransferOrder.noOfDays=No Of Days +hrm.HrmTransferOrder.reportingDate=Reporting Date +hrm.HrmTransferOrder.remarks=Remarks +hrm.HrmTransferOrder.selfOfcFlag=Self/Office Flag +hrm.HrmTransferOrder.empName=Employee Name +hrm.HrmTransferOrder.applnNo=Application No. +hrm.HrmTransferOrder.self=Self +hrm.HrmTransferOrder.office=Office +hrm.HrmTransferOrder.SiteName=Site Name +hrm.HrmTransferOrder.RepEmpGrade=Grade +wenrgise.HrmTransferOrder.transferOrderDateConstraintViolated=Transfer Order Date cannot be earlier than Transfer Application Date. +wenrgise.HrmTransferOrder.transdateConstraintViolated=Transfer Effective Date Date cannot be earlier than Transfer Order Date. +wenrgise.HrmTransferOrder.transReportingDateConstraintViolated=Transfer Reporting Date cannot be earlier than Transfer Effective Date. + +hrm.HrmATDTransOrderForSingleEmp.mainHeader=TRANSFER ORDER +hrm.HrmATDTransOrderForSingleEmp.mainHeader=TRANSFER ORDER FOR SINGLE EMPLOYEE +hrm.HrmATDTransOrderForSingleEmp.subHeader=Transfer Order Information +hrm.HrmATDTransOrderForSingleEmp.subHeader1=Transfer Information +hrm.HrmATDTransOrderForSingleEmp.subHeader2=Transfer Details +hrm.HrmATDTransOrderForSingleEmp.orderNo=Transfer Order No. +hrm.HrmATDTransOrderForSingleEmp.orderDate=Transfer Order Date +hrm.HrmATDTransOrderForSingleEmp.orderStatus=Status +hrm.HrmATDTransOrderForSingleEmp.new=New +hrm.HrmATDTransOrderForSingleEmp.approved=Approved +hrm.HrmATDTransOrderForSingleEmp.pending=Pending +hrm.HrmATDTransOrderForSingleEmp.rejected=Rejected +hrm.HrmATDTransOrderForSingleEmp.initiatedBy=Transfer Required By +hrm.HrmATDTransOrderForSingleEmp.fromSite=Transfer From Site +hrm.HrmATDTransOrderForSingleEmp.toSite=Transfer To Site +hrm.HrmATDTransOrderForSingleEmp.fromWorkGroup=From Work Group +hrm.HrmATDTransOrderForSingleEmp.toWorkGroup=To Work Group +hrm.HrmATDTransOrderForSingleEmp.reportingEmpId=Reporting Employee Name +hrm.HrmATDTransOrderForSingleEmp.trnsfrEffectDate=Transfer Effect Date +hrm.HrmATDTransOrderForSingleEmp.taFlag=Applicable For TA +hrm.HrmATDTransOrderForSingleEmp.daFlag=Applicable For DA +hrm.HrmATDTransOrderForSingleEmp.noOfDays=Days Alloted For Transfer +hrm.HrmATDTransOrderForSingleEmp.reportingDate=Reporting Date +hrm.HrmATDTransOrderForSingleEmp.remarks=Approver's Remarks[250 characters] +hrm.HrmATDTransOrderForSingleEmp.selfOfcFlag=Self/Office Flag +hrm.HrmATDTransOrderForSingleEmp.empNo=Employee No. +hrm.HrmATDTransOrderForSingleEmp.applnNo=Application No. +hrm.HrmATDTransOrderForSingleEmp.self=Self +hrm.HrmATDTransOrderForSingleEmp.office=Office +hrm.HrmATDTransOrderForSingleEmp.orderType=Order Type +hrm.HrmATDTransOrderForSingleEmp.sectional=Sectional +hrm.HrmATDTransOrderForSingleEmp.locational=Locational +hrm.HrmATDTransOrderForSingleEmp.fromDesignation=From Designation +hrm.HrmATDTransOrderForSingleEmp.toDesignation=To Designation +hrm.HrmATDTransOrderForSingleEmp.approvedBy=Approved By + + +hrm.HrmReleaseOrder.mainHeader=EMPLOYEE RELEASE ORDER +hrm.HrmReleaseOrder.subHeader1=Order Details +hrm.HrmReleaseOrder.subHeader2=Release Information +hrm.HrmReleaseOrder.orderNo=Release Order No. +hrm.HrmReleaseOrder.orderDate=Release Order Date +hrm.HrmReleaseOrder.orderType=Release Order Type +hrm.HrmReleaseOrder.rlseStatus=Status +hrm.HrmReleaseOrder.siteTransfer=Site Transfer +hrm.HrmReleaseOrder.departmentalTransfer=Departmental Transfer +hrm.HrmReleaseOrder.new=New +hrm.HrmReleaseOrder.approved=Approved +hrm.HrmReleaseOrder.rejected=Rejected +hrm.HrmReleaseOrder.pending=Pending +hrm.HrmReleaseOrder.trnsfrOrdrNo=Transfer Order No. +hrm.HrmReleaseOrder.empName=Employee Name +hrm.HrmReleaseOrder.rlseDate=Release Date +hrm.HrmReleaseOrder.fNoonFlag=Fore-Noon/After-Noon +hrm.HrmReleaseOrder.rlseWorkGrpCode=Work Group Name +hrm.HrmReleaseOrder.rlseSiteCode=Site Name +hrm.HrmReleaseOrder.remarks=Remarks +hrm.HrmReleaseOrder.foreNoon=Fore Noon +hrm.HrmReleaseOrder.afterNoon=After Noon +hrm.HrmReleaseOrder.na=Not Applicable + + +hrm.HrmChargeReport.mainHeader=TRANSFER CHARGE REPORT +hrm.HrmChargeReport.subHeader1=Charge Details +hrm.HrmChargeReport.trnOrderNo=Transfer Order No. +hrm.HrmChargeReport.empName=Employee Name +hrm.HrmChargeReport.chargeType=Charge Type +hrm.HrmChargeReport.handOver=Hand Over +hrm.HrmChargeReport.takeOver=Take Over +hrm.HrmChargeReport.chargeCode=Charge Code +hrm.HrmChargeReport.handOverDate=Hand Over/Take Over Date +hrm.HrmChargeReport.noonFlag=Fore Noon/After Noon +hrm.HrmChargeReport.foreNoon=Fore Noon +hrm.HrmChargeReport.afterNoon=AfterNoon +hrm.HrmChargeReport.na=Not Applicable +hrm.HrmChargeReport.workGroupCode=Work Group Code +hrm.HrmChargeReport.siteCode=Site Code +hrm.HrmChargeReport.remarks=Remarks +hrm.HrmChargeReport.empNo=Employee No. +hrm.HrmChargeReport.fromSite=From Site +hrm.HrmChargeReport.toSite=To Site +hrm.HrmChargeReport.transferDate=Transfer Order Date +hrm.HrmChargeReport.fromWorkGroup=From Work Group +hrm.HrmChargeReport.toWorkGroup=To Work group +hrm.HrmChargeReport.fromSiteCode=From Site +hrm.HrmChargeReport.toSiteCode=To Site +hrm.HrmChargeReport.chargeStatus=Charge Status +hrm.HrmChargeReport.toDesignation=To Designation +hrm.HrmChargeReport.fromDesignation=From Designation +hrm.HrmChargeReport.handoverTakeover=Handover/Takeover To/From +hrm.HrmChargeReport.orderType=Transfer Type + + +hrm.HrmCancApplcn.mainHeader=TRANSFER CANCELLATION APPLICATION +hrm.HrmCancApplcn.subHeader1=Application Details +hrm.HrmCancApplcn.subHeader2=Transfer Order Details +hrm.HrmCancApplcn.applnNo=Application No. +hrm.HrmCancApplcn.applnDate=Application Date +hrm.HrmCancApplcn.empNo=Employee No. +hrm.HrmCancApplcn.empName=Employee Name +hrm.HrmCancApplcn.generatedBy=Generated By +hrm.HrmCancApplcn.self=Self +hrm.HrmCancApplcn.office=Office +hrm.HrmCancApplcn.ofcNoteNo=Office Note No. +hrm.HrmCancApplcn.ofcNoteDate=Office Note Date +hrm.HrmCancApplcn.cancelDeferFlag=Cancel/Defer +hrm.HrmCancApplcn.cancelled=Cancelled +hrm.HrmCancApplcn.deferred=Deferred +hrm.HrmCancApplcn.defermentPeriod=Deferment Period +hrm.HrmCancApplcn.deferredDate=Deferred Date +hrm.HrmCancApplcn.reason=Reason[700 characters] +hrm.HrmCancApplcn.orderNo=Transfer Order No. +hrm.HrmCancApplcn.trnOrderType=Transfer Order Type +hrm.HrmCancApplcn.sectional=Sectional +hrm.HrmCancApplcn.locational=Locational +hrm.HrmCancApplcn.fromSite=From Site +hrm.HrmCancApplcn.toSite=To Site +hrm.HrmCancApplcn.fromWorkGroup=From Workgroup +hrm.HrmCancApplcn.toWorkGroup=To Workgroup +hrm.HrmCancApplcn.deferredStatus=Status +hrm.HrmCancApplcn.new=New +hrm.HrmCancApplcn.pending=Pending +hrm.HrmCancApplcn.approved=Approved +hrm.HrmCancApplcn.rejected=Rejected +hrm.HrmCancApplcn.orderDate=Transfer Order Date +hrm.HrmCancApplcn.effectDate=Transfer Effect Date +hrm.HrmCancApplcn.fromDesignation=From Designation +hrm.HrmCancApplcn.toDesignation=To Designation +hrm.HrmCancApplcn.fromWorkgroup=From Workgroup +hrm.HrmCancApplcn.toWorkgroup=To Workgroup + +hrm.HrmTransCnclOrderForSingleEmp.mainHeader=TRANSFER CANCELLATION ORDER FOR SINGLE EMPLOYEE +hrm.HrmATDTransCnclOrderForSingleEmp.subHeader1=Application Details +hrm.HrmATDTransCnclOrderForSingleEmp.subHeader2=Order Information +hrm.HrmATDTransCnclOrderForSingleEmp.orderNo=Cancel Order No +hrm.HrmATDTransCnclOrderForSingleEmp.orderDate=Cancel Order Date +hrm.HrmATDTransCnclOrderForSingleEmp.generatedBy=Generated By +hrm.HrmATDTransCnclOrderForSingleEmp.self=Self +hrm.HrmATDTransCnclOrderForSingleEmp.office=Office +hrm.HrmATDTransCnclOrderForSingleEmp.cnclDeferFlag=Cancel/Defer Flag +hrm.HrmATDTransCnclOrderForSingleEmp.defer=Deferred +hrm.HrmATDTransCnclOrderForSingleEmp.cancel=Cancelled +hrm.HrmATDTransCnclOrderForSingleEmp.cancStatus=Status +hrm.HrmATDTransCnclOrderForSingleEmp.new=New +hrm.HrmATDTransCnclOrderForSingleEmp.approved=Approved +hrm.HrmATDTransCnclOrderForSingleEmp.pending=Pending +hrm.HrmATDTransCnclOrderForSingleEmp.rejected=Rejected +hrm.HrmATDTransCnclOrderForSingleEmp.defDate=Deferred Date +hrm.HrmATDTransCnclOrderForSingleEmp.defPeriod=Deferment Period +hrm.HrmATDTransCnclOrderForSingleEmp.subHeader3=Defer Order Details +hrm.HrmATDTransCnclOrderForSingleEmp.appNo=Application no. +hrm.HrmATDTransCnclOrderForSingleEmp.appDate=Application Date +hrm.HrmATDTransCnclOrderForSingleEmp.employeeName=Employee Name +hrm.HrmATDTransCnclOrderForSingleEmp.transOrderNo=Transfer Order No. +hrm.HrmATDTransCnclOrderForSingleEmp.transOrderDate=Transfer Order Date +hrm.HrmATDTransCnclOrderForSingleEmp.transEffectDate=Transfer Effect Date +hrm.HrmTransCnclOrder.orderDate=Order Date +hrm.HrmTransCnclOrder.orderNo=Order No + +hrm.HrmDeputationApplicn.mainHeader=DEPUTATION-OUT APPLICATION +hrm.HrmDeputationApplicn.subHeader1=Deputation Details +hrm.HrmDeputationApplicn.applnNo=Application No. +hrm.HrmDeputationApplicn.applnDate=Application Date +hrm.HrmDeputationApplicn.deputType=Deputation Type +hrm.HrmDeputationApplicn.F=Foreign Organisation +hrm.HrmDeputationApplicn.O=Other Government Agencies +hrm.HrmDeputationApplicn.W=Within The Organisation +hrm.HrmDeputationApplicn.advtNo=Advertisement No. +hrm.HrmDeputationApplicn.advtDate=Advertisement Date +hrm.HrmDeputationApplicn.employeeNo=Employee No. +hrm.HrmDeputationApplicn.orgName=Organisation Name +hrm.HrmDeputationApplicn.postCode=Name Of The Post +hrm.HrmDeputationApplicn.postName=Post Name +hrm.HrmDeputationApplicn.reason=Reason +hrm.HrmDeputationApplicn.deputStatus=Status +hrm.HrmDeputationApplicn.new=New +hrm.HrmDeputationApplicn.pending=Pending +hrm.HrmDeputationApplicn.approved=Approved +hrm.HrmDeputationApplicn.rejected=Rejected +hrm.HrmDeputationApplicn.empName=Employee Name +hrm.HrmDeputationApplicn.postCode=Post Code + +hrm.HrmDeputationOrder.mainHeader=DEPUTATION ORDER FOR SINGLE EMPLOYEE +hrm.HrmDeputationOrder.subHeader=Deputation Order Details +hrm.HrmDeputationOrder.subHeader1=Application Details +hrm.HrmDeputationOrder.orderNo=Deputation Order No. +hrm.HrmDeputationOrder.orderDate=Deputation Order Date +hrm.HrmDeputationOrder.deputType=Deputation Type +hrm.HrmDeputationOrder.F=Foreign Organisation +hrm.HrmDeputationOrder.O=Other Government Agencies +hrm.HrmDeputationOrder.W=Within The Organisation +hrm.HrmDeputationOrder.orderStatus=Deputation Order Status +hrm.HrmDeputationOrder.new=New +hrm.HrmDeputationOrder.approved=Approved +hrm.HrmDeputationOrder.pending=Pending +hrm.HrmDeputationOrder.rejected=Rejected +hrm.HrmDeputationOrder.applnNo=Application No. +hrm.HrmDeputationOrder.employeeName=Employee Name +hrm.HrmDeputationOrder.applicationDate=Application Date +hrm.HrmDeputationOrder.toOrg=To Organisation +hrm.HrmDeputationOrder.toPost=To Post +hrm.HrmDeputationOrder.deptnEffectDate=Deputation Effect Date +hrm.HrmDeputationOrder.reportingDate=Reporting Date +hrm.HrmDeputationOrder.remarks=Remarks +hrm.HrmDeputationOrder.eMail=Email +hrm.HrmDeputationOrder.phone=Phone +hrm.HrmDeputationOrder.mobilePhone=Mobile Phone +hrm.HrmDeputationOrder.fax=Fax +hrm.HrmDeputationOrder.reptBackDate=Reporting Back Date + + +hrm.HrmDeputChargeReport.mainHeader=DEPUTATION CHARGE REPORT +hrm.HrmDeputChargeReport.subHeader1=Charge Order Details +hrm.HrmDeputChargeReport.dptOrderNo=Deputation Order No. +hrm.HrmDeputChargeReport.empName=Employee Name +hrm.HrmDeputChargeReport.deputationDate=Deputation Date +hrm.HrmDeputChargeReport.chargeCode=Charge Code +hrm.HrmDeputChargeReport.handOverDate=Hand Over/Take Over Date +hrm.HrmDeputChargeReport.chargeType=Charge Type +hrm.HrmDeputChargeReport.handOver=Hand Over +hrm.HrmDeputChargeReport.takeOver=Take Over +hrm.HrmDeputChargeReport.workGroupCode=Work Group Code +hrm.HrmDeputChargeReport.siteCode=Site Code +hrm.HrmDeputChargeReport.noonFlag=Fore Noon/After Noon +hrm.HrmDeputChargeReport.foreNoon=Fore Noon +hrm.HrmDeputChargeReport.afterNoon=After Noon +hrm.HrmDeputChargeReport.na=Not Applicable +hrm.HrmDeputChargeReport.remarks=Remarks + +hrm.HrmRlseOrderForSingleEmp.mainHeader=RELEASE ORDER FOR SINGLE EMPLOYEE +hrm.HrmATDReleaseOrderForSingleEmp.subHeader1=Order Information +hrm.HrmATDReleaseOrderForSingleEmp.orderNo=Release Order No. +hrm.HrmATDReleaseOrderForSingleEmp.orderDate=Release Order Date +hrm.HrmATDReleaseOrderForSingleEmp.orderType=Release Order Type +hrm.HrmATDReleaseOrderForSingleEmp.department=Departmental Transfer +hrm.HrmATDReleaseOrderForSingleEmp.site=Site Transfer +hrm.HrmATDReleaseOrderForSingleEmp.rlseStatus=Status +hrm.HrmATDReleaseOrderForSingleEmp.new=New +hrm.HrmATDReleaseOrderForSingleEmp.approved=Approved +hrm.HrmATDReleaseOrderForSingleEmp.pending=Pending +hrm.HrmATDReleaseOrderForSingleEmp.rejected=Rejected +hrm.HrmATDReleaseOrderForSingleEmp.transOrderNo=Transfer Order No. +hrm.HrmATDReleaseOrderForSingleEmp.empName=Employee Name +hrm.HrmATDReleaseOrderForSingleEmp.rlseDate=Release Date +hrm.HrmATDReleaseOrderForSingleEmp.noonFlag=Fore-Noon/After-Noon Flag +hrm.HrmATDReleaseOrderForSingleEmp.siteName=Site Name +hrm.HrmATDReleaseOrderForSingleEmp.wrkGrpName=Workgroup Name +hrm.HrmATDReleaseOrderForSingleEmp.remarks=Remarks +hrm.HrmATDReleaseOrderForSingleEmp.fore=ForeNoon +hrm.HrmATDReleaseOrderForSingleEmp.after=AfterNoon +hrm.HrmATDReleaseOrderForSingleEmp.subHeader2=Order Details + +hrm.HrmAdvSettle.mainHeader=EMPLOYEE ADVANCE SETTLEMENT +hrm.HrmAdvSettle.subHeader1=Employee Information +hrm.HrmAdvSettle.employeeNumber=Employee No. +hrm.HrmAdvSettle.employeeName=Employee Name +hrm.HrmAdvSettle.firstName=First Name +hrm.HrmAdvSettle.middleName=Middle Name +hrm.HrmAdvSettle.lastName=Last Name +hrm.HrmAdvSettle.designation=Designation +hrm.HrmAdvSettle.scaleOfPay=Scale Of Pay +hrm.HrmAdvSettle.fromDate=From Date +hrm.HrmAdvSettle.toDate=To Date +hrm.HrmAdvSettle.advanceCode=Advance Name +hrm.HrmAdvSettle.description=Description +hrm.HrmAdvSettle.dateApplied=Date Applied +hrm.HrmAdvSettle.amountApplied=Advance Amount +hrm.HrmAdvSettle.settlePayroll=Settle Through Payroll +hrm.HrmAdvSettle.settleAmount=Settlement Amount +hrm.HrmAdvSettle.noOfIns=No.of Installments +hrm.HrmAdvSettle.settleStatus=Settlement Status +hrm.HrmAdvSettle.reason=Rejection Remarks +hrm.HrmAdvSettle.new=New +hrm.HrmAdvSettle.pending=Pending +hrm.HrmAdvSettle.approved=Approved +hrm.HrmAdvSettle.rejected=Rejected +hrm.HrmAdvSettle.yes=Yes +hrm.HrmAdvSettle.no=No + + +hrm.HrmFacMst.mainHeader=FACULTY MASTER +hrm.HrmFacMst.subHeaderr=Faculty Master + + +hrm.HrmEmpTrngHistForm.TrainDate=Training Date +hrm.HrmEmpTrngHistForm.presentlag=Present Status +hrm.HrmEmpTrngHistForm.nonpartReason=Reason For Non Participation + + +hrm.HrmSepApplication.mainHeader=SEPARATION APPLICATION +hrm.HrmSepApplication.subHeader1=Application Details +hrm.HrmSepApplication.subHeader2=Separation Details +hrm.HrmSepApplication.applicationNo=Application No +hrm.HrmSepApplication.dateApplied=Application Date +hrm.HrmSepApplication.initiatedBy=Initiated By +hrm.HrmSepApplication.self=Self +hrm.HrmSepApplication.office=Office +hrm.HrmSepApplication.both=Both +hrm.HrmSepApplication.employeeNo=Employee No. +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepApplication.separationCategory=Separation Category +hrm.HrmSepApplication.immediateEffect=Immediate Effect +hrm.HrmSepApplication.requestedSepDate=Requested Separation Date +hrm.HrmSepApplication.actualSepDate=Actual Separation Date +hrm.HrmSepApplication.reason=Reason +hrm.HrmSepApplication.rejectionRemarks=Rejection Remarks +hrm.HrmSepApplication.approvedFlag=Approval Status +hrm.HrmSepApplication.new=New +hrm.HrmSepApplication.pending=Pending +hrm.HrmSepApplication.approved=Approved +hrm.HrmSepApplication.rejected=Rejected +hrm.HrmSepApplication.withdrawalFlag=Withdrawal Flag +hrm.HrmSepApplication.sepCode=Separation Code +hrm.HrmSepApplication.sepName=Description + +hrm.HrmSepClrTmplMst.heading=CLEARANCE TEMPLATE MASTER +hrm.HrmSepClrTmplMst.tmplDesc=Template Description +hrm.HrmSepClrTmplMst.txtClrDesc= Clearance Desciption +hrm.HrmSepClrTmplMst.obsoleteFlag=Obsolete Flag +hrm.HrmSepClrTmplMst.extIntFlag=External/Internal + + + +hrm.HrmSepClrEmp.empNo=Employee No +hrm.HrmSepClrEmp.empName=Employee Name +hrm.HrmSepClrEmp.heading=SEPARATION CLEARANCE FOR EMPLOYEE +hrm.HrmSepClrEmp.tmplDesc=Template Description +hrm.HrmSepClrEmp.txtClrDesc= Clearance Desciption +hrm.HrmSepClrEmp.txtCheckFlag= Check Flag +hrm.HrmSepClrEmp.txtComment= Comment +hrm.HrmSepClrEmp.checkFlag=Check Flag +hrm.HrmSepClrEmp.obsoleteFlag=Obsolete Flag + +HrmSepClrLst.title=SEPARATION CLEARANCE LIST +SepClrLstTabHeader.title=Clearance List Detail +hrm.HrmSepClrLst.description=Description +hrm.HrmSepClrLst.externalInternalFlag=E/I Flag +hrm.HrmSepClrLst.external=External +hrm.HrmSepClrLst.internal=Internal + + +hrm.HrmSepOrder.mainHeader=SEPARATION ORDER +hrm.HrmSepOrder.subHeader1=Application Details +hrm.HrmSepOrder.subHeader2=Order Details +hrm.HrmSepOrder.orderNo=Order No +hrm.HrmSepOrder.orderDate=Order Date +hrm.HrmSepOrder.subHeader2=Order Details +hrm.HrmSepOrder.applnNo=Application No +hrm.HrmSepOrder.employeeName=Employee Name +hrm.HrmSepOrder.separationCategory=Separation Category +hrm.HrmSepOrder.immediateEffect=Immediate Effect +hrm.HrmSepOrder.requestedSepDate=Requested Separation Date +hrm.HrmSepOrder.actualSepDate=Actual Separation Date +hrm.HrmSepOrder.reason=Reason +hrm.HrmSepOrder.rejectionRemarks=Rejection Remarks +hrm.HrmSepOrder.approvedFlag=Status +hrm.HrmSepOrder.new=New +hrm.HrmSepOrder.pending=Pending +hrm.HrmSepOrder.approved=Approved +hrm.HrmSepOrder.rejected=Rejected +hrm.HrmSepOrder.applnDate=Application Date +hrm.HrmSepOrder.noApplication=There is no Separation Application pending. +hrm.HrmSepApplication.actSepDate=Actual Separation Date +hrm.HrmSepApplication.approvedBy=Approved By +hrm.HrmSepApplication.remarks=Approver's Remarks + + + + +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepChargeReport.mainHeader=SEPARATION CHARGE REPORT +hrm.HrmSepChargeReport.subHeader1=Charge Detail +hrm.HrmSepChargeReport.sepOrderNo=Separation Order No. +hrm.HrmSepChargeReport.empName=Employee Name +hrm.HrmSepChargeReport.sepDate=Separation Order Date +hrm.HrmSepChargeReport.chargeCode=Charge Code +hrm.HrmSepChargeReport.releaseDate=Release Date +hrm.HrmSepChargeReport.noonFlag=Fore Noon/After Noon +hrm.HrmSepChargeReport.foreNoon=Fore Noon +hrm.HrmSepChargeReport.afterNoon=After Noon +hrm.HrmSepChargeReport.na=Not Applicable +hrm.HrmSepChargeReport.remarks=Remarks +hrm.HrmSepChargeReport.chargeStatus=Charge Status +hrm.HrmSepChargeReport.new=New +hrm.HrmSepChargeReport.pending=Pending +hrm.HrmSepChargeReport.approved=Approved +hrm.HrmSepChargeReport.rejected=Rejected + +hrm.HrmSepCnclAppln.mainHeader=SEPARATION CANCELLATION APPLICATION +hrm.HrmSepCnclAppln.subHeader1=Application Details +hrm.HrmSepCnclAppln.subHeader2=Cancellation Details +hrm.HrmSepCnclAppln.empNo=Employee No. +hrm.HrmSepCnclAppln.empName=Employee Name +hrm.HrmSepCnclAppln.applnNo=Application No. +hrm.HrmSepCnclAppln.applnDate=Application Date +hrm.HrmSepCnclAppln.cancelStatus=Status +hrm.HrmSepCnclAppln.new=New +hrm.HrmSepCnclAppln.pending=Pending +hrm.HrmSepCnclAppln.approved=Approved +hrm.HrmSepCnclAppln.rejected=Rejected +hrm.HrmSepCnclAppln.initiatedBy=Initiated By +hrm.HrmSepCnclAppln.separationCategory=Separation Category +hrm.HrmSepCnclAppln.withdrawalDate=Withdrawal Date +hrm.HrmSepCnclAppln.cancelStatus=Withdrawal Status +hrm.HrmSepCnclAppln.reason=Reason +hrm.HrmSepCnclAppln.remarks=Rejection Remarks +wenrgise.sepCnclAppln.dateConstraintViolated=Withdrawal Date Should Be Greater Than Application Date. +hrmWgrShift.title=ATTENDANCE WORK GROUP SHIFT DETAIL +hrmWgrShiftSubHeader.title= Work Group Detail +hrmWgrShiftTabHeader.title=Work Group Shift Detail +hrm.HrmAttWorkGroupShift.shiftBeginDate=Shift Begin Date +hrm.HrmAttWorkGroupShift.shiftEndDate=Shift End Date +hrm.HrmAttWorkGroupShift.workGroupDescription=Description +hrm.HrmAttWorkGroupShift.siteDescription=Description +hrm.HrmAttWorkGroupShift.shiftCode=Shift Code +hrm.HrmAttWorkGroupShift.startDate=Period Start Date +hrm.HrmAttWorkGroupShift.endDate=Period End Date + +hrm.HrmAttEmployeeDayOff.sunday=Sunday +hrm.HrmAttEmployeeDayOff.monday=Monday +hrm.HrmAttEmployeeDayOff.tuesday=Tuesday +hrm.HrmAttEmployeeDayOff.wednesday=Wednesday +hrm.HrmAttEmployeeDayOff.thursday=Thursday +hrm.HrmAttEmployeeDayOff.friday=Friday +hrm.HrmAttEmployeeDayOff.saturday=Saturday + +hrm.HrmAttEmployeeDayOff.first=First +hrm.HrmAttEmployeeDayOff.second=Second +hrm.HrmAttEmployeeDayOff.third=Third +hrm.HrmAttEmployeeDayOff.fourth=Fourth + +hrm.HrmAttEmployeeDayOff.halfDay1=HalfDay1 +hrm.HrmAttEmployeeDayOff.halfDay2=HalfDay2 +hrm.HrmAttEmployeeDayOff.restWeek1=RestWeek1 +hrm.HrmAttEmployeeDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttEmployeeDayOff.restWeek2=RestWeek2 +hrm.HrmAttEmployeeDayOff.restWeekDay2=RestWeekDay2 + + +hrm.HrmAdvertisementAttribute.mandatory=Mandatory +hrm.HrmAdvertisementAttribute.desirable=Desirable +hrm.HrmAdvertisementAttribute.yes=Yes +hrm.HrmAdvertisementAttribute.no=No +hrm.HrmAdvertisementAttribute.read=Read +hrm.HrmAdvertisementAttribute.write=Write +hrm.HrmAdvertisementAttribute.communicate=Communicate +hrm.HrmAdvertisementAttribute.speakReadAndWrite=All +hrm.HrmAdvertisementAttribute.locDesc=Description +hrm.HrmAdvertisementAttribute.langDesc=Description +hrm.HrmAdvertisementAttribute.qualdescription=Description +hrm.HrmAdvertisementAttribute.desc=Description +hrm.HrmAdvertisementAttribute.state=State +hrm.HrmAdvertisementAttribute.city=City + + +hrm.HrmAttEmpAttQuery.header=EMPLOYEE ATTENDANCE ENTRY +hrm.HrmAttEmpAttQuery.colon=: +hrm.HrmAttEmpAttQuery.subheader=Query Parameters +hrm.HrmAttEmpAttQuery.employeeNo=Employee No. +hrm.HrmAttEmpAttQuery.employeeName=Employee Name +hrm.HrmAttEmpAttQuery.firstName=First Name +hrm.HrmAttEmpAttQuery.middleName=Middle Name +hrm.HrmAttEmpAttQuery.lastName=Last Name +hrm.HrmAttEmpAttQuery.periodStartDt=Date +hrm.HrmAttEmpAttQuery.periodEndDt=End Date +hrm.HrmAttEmpAttQuery.chkInDate=In-Date +hrm.HrmAttEmpAttQuery.ChkOutDate=Out-Date +hrm.HrmAttEmpAttQuery.shiftCode=Shift Code +hrm.HrmAttEmpAttQuery.checkInTime=In-Time +hrm.HrmAttEmpAttQuery.checkOutTime=Out-Time +hrm.HrmAttEmpAttQuery.attndStatus=Status +hrm.HrmAttEmpAttQuery.Reasons=Reasons/Remarks +hrm.HrmAttEmpAttQuery.detailHeader=Employee Attendance Details +hrm.HrmAttEmpAttQuery.t=TIME +hrm.HrmAttEmpAttQuery.l=LATE +wenrgise.common.field.combinatonNotUnique=Combination of {0} should be unique +hrm.HrmAttEmpAttQueryDtl.txtEmployeeNo=Employee No +hrm.HrmAttEmpAttQueryDtl.txtEmployeeName=Employee Name +hrm.HrmAttEmpAttQueryDtl.inDateFuture=Start Date cannot be future date. +hrm.HrmAttEmpAttQueryDtl.outDateFuture=Out-Date cannot be future +hrm.HrmAttEmpAttQueryDtl.inOutDate=Out-Date cannot be prior to In-Date +hrm.HrmAttEmpAttQuery.locationCode=Code +hrm.HrmAttEmpAttQuery.uniqueHeader=Attendence entries for the specified date already present. +hrm.HrmAttEmpAttQuery.uniqueHeader1=Checking Unique Header +hrm.HrmAttEmpAttQuery.DeptError=Attendance entry access denied... Contact HR. + +hrmEmpShift.title=EMPLOYEE SHIFT DETAIL +hrmEmpShiftSubHeader.title=Employee Shift Detail +hrmEmpShiftTabHeader.title=Emp Shift Detail +hrm.HrmAttEmpShift.employeeNo=Employee No. +hrm.HrmAttEmpShift.employeeName=Employee Name +hrm.HrmAttEmpShift.startDate=Period Start Date +hrm.HrmAttEmpShift.endDate=Period End Date +hrm.HrmAttEmpShift.shiftBeginDate=Shift Begin Date +hrm.HrmAttEmpShift.shiftEndDate=Shift End Date +hrm.HrmAttEmpShift.shiftCode=Shift Code + + +hrm.HrmAttEmpAttIn.header=EMPLOYEE ATTENDANCE ENTRY (IN) +hrm.HrmAttEmpAttIn.subheader=Employee Attendance Information +hrm.HrmAttEmpAttIn.employeeNo=Employee No. +hrm.HrmAttEmpAttIn.employeeName=Employee Name +hrm.HrmAttEmpAttIn.firstName=First Name +hrm.HrmAttEmpAttIn.middleName=Middle Name +hrm.HrmAttEmpAttIn.lastName=Last Name +hrm.HrmAttEmpAttIn.date=Date +hrm.HrmAttEmpAttIn.shiftCode=Shift Code +hrm.HrmAttEmpAttIn.timeIn=Time In +hrm.HrmAttEmpAttIn.attndStatus=Attendance Status +hrm.HrmAttEmpAttIn.reasons=Reasons +hrm.HrmAttEmpAttIn.reasons.t=Transport Problem +hrm.HrmAttEmpAttIn.reasons.n=Network/Server Failure +hrm.HrmAttEmpAttIn.reasons.l=Leave Day +hrm.HrmAttEmpAttIn.reasons.o=Out-Stationed +hrm.HrmAttEmpAttIn.reasons.p=Present +hrm.HrmAttEmpAttIn.reasons.a=Absent +hrm.HrmAttEmpAttIn.reasons.f=First Half CL +hrm.HrmAttEmpAttIn.reasons.s=Second Half CL +wenrgise.hrms.header1.multipleAttendance=You Cannot Give Attendance Twice in a Day +wenrgise.common.detail.invalidNumber={0} is not a valid number in Row {1} of Detail. +hrm.recadvattrwork.numberZero={0} can't be less than 0 in row {1} of detail. +hrm.recadvattrwork.minmaxworkexp=Min.Work Exp.can't be Greater than Max.Work Exp.in Row {0} of Detail. +hrm.advt.detail.childRecordFound=Can not delete as Record Exists in Application Screen. +hrm.advt.hdr.totalScore=Total Score should be greater than the summation of Written,GD and Interview score +hrm.advt.detail.errorinbasic=From Basic cannot be greater than To Basic in row{0} +hrm.advt.detail.exclusive=Designation and Reservation Category +hrm.advt.detail.errorinage=Maximum Age cannot be greater than Minimum Age in row{0} +hrm.advt.detail.nonnumeric={0} is not valid +hrm.advt.minage=Minimum age in row {0} must be greater than 20 +hrm.advt.maxage=As Max Age On Date is given Maximum Age has to be entered in row {0} +hrm.advt.maxageDate=As Max Age is given Maximum Age On Date has to be entered in row {0} +hrm.advt.header.uniqueConstraintViolated=Reference No already exists. +hrm.advt.header.date=Reference Date can not be greater than Last Date for Application Receipt +wenrgise.hrms.att.Enddate.value=Enter the Value of Shift End Date in the Previous row. +wenrgise.hrms.att.BeginDate.value=Shift Begin Date should be greater than Previous row Shift End Date. +wenrgise.hrms.attEmp.corresdate.value=Shift End Date should be greater than Shift Begin Date. + + + +hrm.HrmAttEmpAttOut.header=EMPLOYEE ATTENDANCE ENTRY (OUT) +hrm.HrmAttEmpAttOut.subheader=Employee Attendance Information +hrm.HrmAttEmpAttOut.employeeNo=Employee No. +hrm.HrmAttEmpAttOut.employeeName=Employee Name +hrm.HrmAttEmpAttOut.firstName=First Name +hrm.HrmAttEmpAttOut.middleName=Middle Name +hrm.HrmAttEmpAttOut.lastName=Last Name +hrm.HrmAttEmpAttOut.inDate=In Date +hrm.HrmAttEmpAttOut.outDate=Out Date +hrm.HrmAttEmpAttOut.shiftCode=Shift Code +hrm.HrmAttEmpAttOut.timeIn=Time In +hrm.HrmAttEmpAttOut.timeOut=Time Out +hrm.HrmAttEmpAttOut.attndStatus=Attendance Status +hrm.HrmAttEmpAttOut.reasons=Reasons +hrm.HrmAttEmpAttOut.reasons.t=Transport Problem +hrm.HrmAttEmpAttOut.reasons.n=Network/Server Failure +hrm.HrmAttEmpAttOut.reasons.l=Leave Day + + +hrm.HrmAdvertisementAttribute.refNo=Reference No. +hrm.HrmAdvertisementAttribute.position=Grade & Designation +hrm.HrmAdvertisementAttribute.desgn=Desgn. + + +wenrgise.hrms.attWgs.rst.value=This field is rferenced.It can't be deleted. + +hrm.HrmAttWorkGroupDayOff.sunday=Sunday +hrm.HrmAttWorkGroupDayOff.monday=Monday +hrm.HrmAttWorkGroupDayOff.tuesday=Tuesday +hrm.HrmAttWorkGroupDayOff.wednesday=Wednesday +hrm.HrmAttWorkGroupDayOff.thursday=Thursday +hrm.HrmAttWorkGroupDayOff.friday=Friday +hrm.HrmAttWorkGroupDayOff.saturday=Saturday + +hrm.HrmAttWorkGroupDayOff.first=First +hrm.HrmAttWorkGroupDayOff.second=Second +hrm.HrmAttWorkGroupDayOff.third=Third +hrm.HrmAttWorkGroupDayOff.fourth=Fourth + +hrm.HrmAttWorkGroupDayOff.halfDay1=HalfDay1 +hrm.HrmAttWorkGroupDayOff.halfDay2=HalfDay2 +hrm.HrmAttWorkGroupDayOff.restWeek1=RestWeek1 +hrm.HrmAttWorkGroupDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttWorkGroupDayOff.restWeek2=RestWeek2 +hrm.HrmAttWorkGroupDayOff.restWeekDay2=RestWeekDay2 + +hrm.HrmAttWorkGroupDayOff.startWeekDt=StartWeekDate +hrm.HrmAttWorkGroupDayOff.endWeekDt=EndWeekDate +hrm.HrmAttWorkGroupDayOff.fstRstDay=FirstRestDay +hrm.HrmAttWorkGroupDayOff.secRstDay=SecondRestDay + +hrm.HrmAttWorkGroupDayOff.halfDay1=HalfDay1 +hrm.HrmAttWorkGroupDayOff.halfDay2=HalfDay2 +hrm.HrmAttWorkGroupDayOff.restWeek1=RestWeek1 +hrm.HrmAttWorkGroupDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttWorkGroupDayOff.restWeek2=RestWeek2 +hrm.HrmAttWorkGroupDayOff.restWeekDay2=RestWeekDay2 + +hrm.HrmAttWrkGrpDayOff.wrkGrpCode=WorkGroup Code +hrm.HrmAttWrkGrpDayOff.siteCode=Site Code +hrm.HrmAttWrkGrpDayOff.wrkGrpDesc=Workgroup Name +hrm.HrmAttWrkGrpDayOff.siteDesc=Site Name +hrm.HrmAttWrkGrpDayOff.heading=WORKGROUP DAY OFF + +wenrgise.hrms.att.period.value=Close the previous period first. +wenrgise.hrms.att.date.value=StartWeekDate must be greater than the previous EndWeekdate. +wenrgise.hrms.att.corresdate.value=EndWeekDate must be greater than StartWeekDate. +wenrgise.hrms.att.holDayType.value=Same day cannot occur more than once as holiday in the same period. +wenrgise.hrms.att.rst.value=Record in Shift Roster exists.Deletion is not possible. + +hrm.HrmAttEmployeeDayOff.sunday=Sunday +hrm.HrmAttEmployeeDayOff.monday=Monday +hrm.HrmAttEmployeeDayOff.tuesday=Tuesday +hrm.HrmAttEmployeeDayOff.wednesday=Wednesday +hrm.HrmAttEmployeeDayOff.thursday=Thursday +hrm.HrmAttEmployeeDayOff.friday=Friday +hrm.HrmAttEmployeeDayOff.saturday=Saturday + +hrm.HrmAttEmployeeDayOff.first=First +hrm.HrmAttEmployeeDayOff.second=Second +hrm.HrmAttEmployeeDayOff.third=Third +hrm.HrmAttEmployeeDayOff.fourth=Fourth + +hrm.HrmAttEmployeeDayOff.halfDay1=HalfDay1 +hrm.HrmAttEmployeeDayOff.halfDay2=HalfDay2 +hrm.HrmAttEmployeeDayOff.restWeek1=RestWeek1 +hrm.HrmAttEmployeeDayOff.restWeekDay1=RestWeekDay1 +hrm.HrmAttEmployeeDayOff.restWeek2=RestWeek2 +hrm.HrmAttEmployeeDayOff.restWeekDay2=RestWeekDay2 + +Hrm.AttShift.min=(min) +hrm.HrmAttShiftMaster.txtDayOverlapFlag=Day Overlap Flag +wenrgise.Hrm.EmpShiftMaster.StartHour=For Start Time,Hour Can not be more than 24. +wenrgise.Hrm.EmpShiftMaster.EndHour=For End Time,Hour Can not be more than 24. +wenrgise.Hrm.EmpShiftMaster.StartMin=For Start Time,Minutes can not be more than 60. +wenrgise.Hrm.EmpShiftMaster.EndMin=For Start Time,Minutes can not be more than 60. +hrm.NO=NO +hrm.YES=YES +hrm.Please.select=----------Please Select---------- +hrm.Common.Hdr.RelationCheck={0} should be greater than {1} +hrm.HrmAttShiftMaster.RelationCheck=End Time Should be Greater than Start time +hrm.HrmAttShiftMaster.RelationCheck1=End Time Should be less than start time +Hrm.AttShift.HH=(HH:MM) +Hrm.AttShiftMast.Code=Entered Shift Code is already existing so Please Change it + +hrm.HrmAttEmployeeShiftRoster.SiteId=Site Id +hrm.HrmAttShiftRosterGen.mainHeader=GENERATE SHIFT ROSTER +hrm.HrmAttShiftRosterGen.site=Site Code +hrm.HrmAttShiftRosterGen.fromDate=From Date +hrm.HrmAttShiftRosterGen.toDate=To Date +hrm.HrmAttShiftRosterGen.wrkGrpCode=Work Group Code +hrm.HrmAttShiftRosterGen.wrkGrpName=Work Group Name +hrm.HrmAttShiftRosterGen.error.invalidDate={0} date should be lesser than {1} + +hrm.HrmAttAbsentListGen.siteName=Site Id +hrm.HrmAttAbsentListGen.site=Site Code +hrm.HrmAttAbsentListGen.fromDate=From Date +hrm.HrmAttAbsentListGen.toDate=To Date +hrm.HrmAttAbsentListGen.mainHeader=ABSENT LIST GENERATOR +hrm.HrmAttAbsentListGen.wrkGrpCode=WorkGroup Code +hrm.HrmAttAbsentListGen.error.invalidDate={0} date should be lesser than {1} + + +hrm.HrmAdvertisementAttribute.desgnaa=Designation +hrm.HrmAdvertisementAttribute.category=Category + + +hrm.advt.detail.attrChildRecordFound=Can't Delete as Record Exists in Attribute Screen For This Detail Record. + +wenrgise.Reqdate.dateConstraintViolated=Requested Transfer Date must be greater than Application Date. + +wenrgise.hrms.empAprsl.recCount=An appraisal record of the Employee for the given period already exists. +wenrgise.hrms.empAprsl.clsDtId=There are NO records in the Employee Classification table for this employee indicating his/her present designation.First Enter a Designation record and then try to appraise the employee. +wenrgise.hrms.empAprsl.tempHdrId=There are NO records in the Designation Wise Template table for this employee.First Enter a Designation Wise Template record and then try to appraise the employee. + +hrm.HrmAppraisalRules.January=January +hrm.HrmAppraisalRules.February=February +hrm.HrmAppraisalRules.March=March +hrm.HrmAppraisalRules.April=April +hrm.HrmAppraisalRules.May=May +hrm.HrmAppraisalRules.June=June +hrm.HrmAppraisalRules.July=July +hrm.HrmAppraisalRules.August=August +hrm.HrmAppraisalRules.September=September +hrm.HrmAppraisalRules.October=October +hrm.HrmAppraisalRules.November=November +hrm.HrmAppraisalRules.December=December + +wenrgise.hrms.aprsl.wt.value=Total weightage should not exceed 100% +wenrgise.hrms.aprsl.wt.enter=Please Enter Weightage +wenrgise.hrms.aprsl.wt.blank=Please Don't Enter Weightage +hrm.HrmAppraisalTemplate.reviewer=Reviewer +hrms.spcaprsl.wt.greater=Total weightage should not be greater than 100% for Section Code {0} +hrms.spcaprsl.wt.less=Total weightage should not be less than 100% for Section Code {0} +hrms.spcaprsl.wt.null=Some weightage values are blank for Section Code '{0}'. +hrms.spcaprsl.kpa.special=Row {0} cannot be deleted, because here mandatory flag is checked. + +hrm.ApprslSpcTemp.heading=APPRAISAL SPECIFIC TEMPLATE +hrm.ApprslSpcTemp.splTemplateName=Specific Template Name +hrm.ApprslSpcTemp.templateName=Template Name +hrm.ApprslSpcTemp.classHdr=Class Header +hrm.ApprslSpcTemp.classHdrDesc=Class Header Description +hrm.ApprslSpcTemp.classDtl=Class Detail +hrm.ApprslSpcTemp.classDtlDesc=Class Detail Description +hrm.ApprslSpcTemp.siteCode=Site +hrm.ApprslSpcTemp.deptCode=Department +hrm.ApprslSpcTemp.empNo=Employee No +hrm.ApprslSpcTemp.stOrderNo=Start Order No +hrm.ApprslSpcTemp.fromDate=From Date +hrm.ApprslSpcTemp.toDate=To Date +hrm.ApprslSpcTemp.kpa=KPA +hrm.ApprslSpcTemp.goals=Goals +hrm.ApprslSpcTemp.txtKpaGrCode=KPA Group Code +hrm.ApprslSpcTemp.txtKpaGrDesc=KPA Group Description +hrm.ApprslSpcTemp.txtKpaCode=KPA Code +hrm.ApprslSpcTemp.txtKpaDesc=KPA Description +hrm.ApprslSpcTemp.txtFlag=Mandatory +hrm.ApprslSpcTemp.txtMesr=Measure +hrm.ApprslSpcTemp.Section=Section +hrm.ApprslSpcTemp.goalsDesc=Goal Description +hrm.ApprslSpcTemp.txtEmpNo=Employee No +hrm.ApprslSpcTemp.txtEmpName=Employee Name +hrm.ApprslSpcTemp.parentSection=Parent Section +hrm.ApprslSpcTemp.empElig=Employee Eligibility +hrm.ApprslSpcTemp.txtWtg=Weightage(In Percentage) + +hrm.EmpAprsl.heading=EMPLOYEE APPRAISAL +hrm.EmpAprsl.empCode=Employee No +hrm.EmpAprsl.empName=Employee Name +hrm.EmpAprsl.aprslCode=Appraisal No +hrm.EmpAprsl.aprslName=Appraisal Name +hrm.EmpAprsl.aprslLevel=Appraisal Level +hrm.EmpAprsl.aprslPeriod=Appraisal Period +hrm.EmpAprsl.stOrderNo=Start Order No +hrm.EmpAprsl.finalRating=Final Rating +hrm.EmpAprsl.aprslYear=Appraisal Year +hrm.EmpAprsl.fromDate=From Date +hrm.EmpAprsl.toDate=To Date +hrm.EmpAprsl.kpa=KPA +hrm.EmpAprsl.goals=Goals +hrm.EmpAprsl.EmpDtls=Employee Details +hrm.EmpAprsl.kpaCode=KPA Group Desc +hrm.EmpAprsl.kpaDesc=KPA Desc +hrm.EmpAprsl.levelAprl0=Appraisal Level 0 +hrm.EmpAprsl.levelRating0=Rating Level 0 +hrm.EmpAprsl.levelAprl1=Appraisal Level 1 +hrm.EmpAprsl.levelRating1=Rating Level 1 +hrm.EmpAprsl.levelAprl2=Appraisal Level 2 +hrm.EmpAprsl.levelRating2=Rating Level 2 +hrm.EmpAprsl.levelAprl3=Appraisal Level 3 +hrm.EmpAprsl.levelRating3=Rating Level 3 +hrm.EmpAprsl.levelAprl4=Appraisal Level 4 +hrm.EmpAprsl.levelRating4=Rating Level 4 +hrm.EmpAprsl.goalDesc=Goal Description +hrm.EmpAprsl.parentSec=Parent Section +hrm.EmpAprsl.section=Section +hrm.EmpAprsl.Outstanding=Outstanding +hrm.EmpAprsl.VeryGood=Very Good +hrm.EmpAprsl.Good=Good +hrm.EmpAprsl.Average=Average + + +hrm.HrmPrmViewAss.mainHeader=VIEW ASSESSMENT SHEET +hrm.HrmPrmViewAss.subHeader1=Assessment Sheet Header +hrm.HrmPrmViewAss.subHeader2=Marks Obtained And Points Rewarded +hrm.HrmPrmViewAss.siteCode=Site Code +hrm.HrmPrmViewAss.siteDesc=Description +hrm.HrmPrmViewAss.noticeNo=Notice No. +hrm.HrmPrmViewAss.posCode=Position Code +hrm.HrmPrmViewAss.prmNo=Promotion Notice No. +hrm.HrmPrmViewAss.toPosition=Promotion For The Position +hrm.HrmPrmViewAss.empNo=Employee Number +hrm.HrmPrmViewAss.empName=Employee Name +hrm.HrmPrmViewAss.fromPosCode=From Position Code +hrm.HrmPrmViewAss.posDesc=Position Description +hrm.HrmPrmViewAss.scale=Scale +hrm.HrmPrmViewAss.srvYrs=Service Years +hrm.HrmPrmViewAss.currSrvYrs=Current Service Years +hrm.HrmPrmViewAss.srvYrsPoints=Service Years Points +hrm.HrmPrmViewAss.avgAparPts=Average APAR Points +hrm.HrmPrmViewAss.aparPts=APAR Points +hrm.HrmPrmViewAss.writtenTestMarks=Written Test Marks +hrm.HrmPrmViewAss.writtenTestPts=Written Test Points +hrm.HrmPrmViewAss.GDMarks=GD Marks +hrm.HrmPrmViewAss.GDPts=GD Points +hrm.HrmPrmViewAss.interviewMarks=Interview Marks +hrm.HrmPrmViewAss.interviewPts=Interview Points +hrm.HrmPrmViewAss.totalPtsAwarded=Total Points Awarded +hrm.HrmPrmViewAss.eligProm=Eligible For Promotion +hrm.HrmPrmViewAss.noticeDesc=Notice Description + + +hrm.AprslStartOrder.heading=APPRAISAL START ORDER +hrm.AprslStartOrder.stOrderNo=Start Order No +hrm.AprslStartOrder.periodStDate=Period Start Date +hrm.AprslStartOrder.periodEndDate=Period End Date +hrm.AprslStartOrder.aprslStDate=Appraisal Start Date +hrm.AprslStartOrder.aprslEndDate=Appraisal End Date + + + +hrm.HrmAprslForm.stOrderNo=Start Order No. + + +hrm.EmpAprsl.RatingFrom=Rating From +hrm.EmpAprsl.RatingTo=Rating To +hrm.EmpAprsl.RatingDesc=Rating Desc +hrm.EmpAprsl.jrLvlRating=Rating + + +hrm.HrmPrmMtnPrmDtl.heading=PROMOTION DETAILS +hrm.HrmPrmMtnPrmDtl.header=General Information +hrm.HrmPrmMtnPrmDtl.promOrdNo=Promotion Order No. +hrm.HrmPrmMtnPrmDtl.ordDate=Order Date +hrm.HrmPrmMtnPrmDtl.prmEffectFrm=Effect From +hrm.HrmPrmMtnPrmDtl.empNo=Employee No. +hrm.HrmPrmMtnPrmDtl.name=Employee Name +hrm.HrmPrmMtnPrmDtl.fromPosition=From Position +hrm.HrmPrmMtnPrmDtl.toPosition=To Position +hrm.HrmPrmMtnPrmDtl.frmDesig=From Designation +hrm.HrmPrmMtnPrmDtl.toDesig=To Designation +hrm.HrmPrmMtnPrmDtl.frmScale=From Scale +hrm.HrmPrmMtnPrmDtl.toScale=To Scale +hrm.HrmPrmMtnPrmDtl.newBasic=New Basic +hrm.HrmPrmMtnPrmDtl.newWrkGrp=New Workgroup + + +hrm.HrmPrmGenAss.mainHeader=GENERATE ASSESSMENT SHEET +hrm.HrmPrmGenAss.siteCode=Site Code +hrm.HrmPrmGenAss.prmNo=Promotion Notice No. +hrm.HrmPrmGenAss.postFrom=Post Frowenm +hrm.HrmPrmGenAss.postTo=Post To +hrm.HrmPrmGenAss.generated=Employee List Generated Successfully. +hrm.HrmPrmGenAss.description=Description + + +WFL.title=Work Flow +wfl.pleaseSelect=------------Please Select----------- +WFL.WFLDocAttrDtl.heading=Document Attribute Detail +WFL.WFLDocAttrDtl.header=Document Attribute Information +WFL.WFLDocAttrDtl.documentCode=Document Code +WFL.WFLDocAttrDtl.documentDesc=Document Description +WFL.WFLDocAttrDtl.maxAppLevel=Maximum Approval Level +WFL.WFLDocAttrDtl.attrDetails=Document Attribute Details +WFL.WFLDocAttrDtl.attbName=Attribute Name +WFL.WFLDocAttrDtl.type=Attribute Type +WFL.WFLDocAttrDtl.desc=Attribute Description +wfl.wflGenCond.heading=WorkFlow Condititions +wfl.WorkFlowConditions.docCode=Document Code +wfl.WorkFlowConditions.docDesc=Document Description +wfl.WorkFlowConditions.docAttr=Document Attribute +wfl.WorkFlowConditions.operator=Operator +wfl.WorkFlowConditions.values=Values +wfl.WorkFlowConditions.formula=Formula +wfl.title=Work Flow Service +wfl.WorkFlowConditions.header=WorkFlow Conditions +wfl.wflConditions.heading=Work Flow Conditions +wfl.WorkFlowConditions.conditions=Conditions Detail +wfl.WflActivityMst.header=Work Flow Activity Master +wfl.WflActivityMst.detailHeading=Activity Master Detail +wfl.WflActivityMst.attrCode=Attribute Code +wfl.WflActivityMst.attrDesc=Attribute Description +wfl.WorkFlowConditions.docDtlDesc=Document Detail Description +wfl.WorkFlowConditions.priority=Priority +wfl.WorkFlowConditions.condExp=Condition Expression +wenrgise.WorkFlowConditions.alterCond=Alter Conditions +wenrgise.WorkFlowConditions.ok=Ok +WFL.WFLDtlDocType.heading=Detail Document Type +WFL.WFLDtlDocType.header=Header Information +WFL.WFLDtlDocType.docCode=Document Code +WFL.WFLDtlDocType.docDetails=Detail Information +WFL.WFLDtlDocType.code=Code +WFL.WFLDtlDocType.desc=Description +WFL.WFLDtlDocType.actFlag=Activity Flag +WFL.pleaseSelect=----------Please Select----------- +WFL.WFLDtlDocType.actFlag.p=Previous Level +WFL.WFLDtlDocType.actFlag.n=Next Level +WFL.WFLDtlDocType.docActCode=Document Activity Code +WFL.WFLDtlDocType.docAttr=Attributes Value +WFL.WFLDtlDocType.dtlDocCode=Detail Document Code +WFL.WFLDtlDocType.condition=Condition +WFL.WFLDtlDocType.exp=Expression +WFL.WFLDtlDocType.priority=Priority +WFL.WFLDtlDocType.dtlDocDesc=Detail Document Description +WFL.WFLDtlDocType.conditionDesc=Condition Description + +WFL.WFLDtlDocActMap.heading=Detail Document Activity Map +WFL.WFLDtlDocActMap.header=Header Information +WFL.WFLDtlDocActMap.dtlDocActCode=Map Code +WFL.WFLDocAttrDtl.dtlDocActDesc=Map Description +WFL.WFLDtlDocActMap.dtlDocCode=Code +WFL.WFLDtlDocActMap.docDetails=Detail Information +WFL.WFLDtlDocActMap.activityCode=Activity Code +WFL.WFLDtlDocActMap.activityDesc=Activity Description +WFL.WFLDtlDocActMap.activityFlag=Activity Flag +WFL.WFLDtlDocActMap.actFlag.p=Previous Level +WFL.WFLDtlDocActMap.actFlag.n=Next Level +WFL.WFLDtlDocActMap.dtlDocDesc=Description +WFL.WFLDocAttrDtl.string=String +WFL.WFLDocAttrDtl.numeric=Numeric +WFL.WFLDocAttrDtl.lovKey=LovKey + +wenrgise.hrms.aprsl.kpa.rating.value=Please enter all KPA rating values. +wenrgise.hrms.aprsl.goals.rating.value=Please enter all Goal rating values. +wenrgise.hrms.aprsl.rating.value=Please enter all rating values. +wenrgise.hrms.aprsl.wt.exact.value=Total Weightage should be 100% +wenrgise.hrms.aprsl.kpa.wt.exact.value=Total KPA Weightage should be 100% +wenrgise.hrms.aprsl.sec.wt.exact.value=Total Sec Weightage should be 100% +wenrgise.hrms.aprsl.srlno.value=Serial Number should be continuous. +hrm.Temp.Unique.Data=This Template Name already exists. +hrm.HrmAppraisalTemplateKpa.statusOfHeader=Header Status +hrm.HrmAppraisalTemplateGoals.statusOfHeader=Header Status + + +hrm.EmpAprsl.TrngReq=Training Requirement +hrm.EmpAprsl.dateSub=Date Submitted +hrm.EmpAprsl.crsName=Course Name +hrm.EmpAprsl.trnCal=Training Calendar +hrm.EmpAprsl.instName=Institution Name +hrm.EmpAprsl.stDate=Start Date +hrm.EmpAprsl.endDate=End Date +hrm.EmpAprsl.nature=Nature +hrm.EmpAprsl.purpose=Purpose +hrm.EmpAprsl.recommend=Recommender +hrm.EmpAprsl.appStatus=Approval Status +hrm.EmpAprsl.remarks=Remarks +hrm.EmpAprsl.urgent=urgent +hrm.EmpAprsl.emergency=Emergency +hrm.EmpAprsl.normal=Normal +hrm.EmpAprsl.pending=Pending +hrm.EmpAprsl.approved=Approved +hrm.EmpAprsl.rejected=Rejected +hrm.EmpAprsl.new=New + + +wenrgise.dateValidation.fromLength=Effective From Date Should At Least be Six[6] Characters Long. +wenrgise.dateValidation.toLength=Effective To Date Should At Least be Six[6] Characters Long. +wenrgise.dateValidation.year=Improper Value of Year. +wenrgise.dateValidation.month=Improper Value Of Month. +wenrgise.dateValidation.year=Improper Value Of Year. +hrms.dateValidation.month=Improper Value Of Month in field {0} of row {1} of detail. +hrms.dateValidation.year=Improper Value Of Year in field {0} row {1} of detail. + + +wenrgise.empPers.detail.dateConstraintViolated=Improper Value Of Pass Year. +wenrgise.hrms.aprsl.reviewer.rating.value=Reviewer should save final rating. +hrm.EmpAprsl.approvalflag=Approval Flag + + + +hrm.HrmEmpPersonalDetails.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetails.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetails.personalDetails=Personal Details +hrm.HrmEmpPersonalDetails.address=Address Details +hrm.HrmEmpPersonalDetails.awardDtls=Award Details +hrm.HrmEmpPersonalDetails.insDtls=Insurance Details +hrm.HrmEmpPersonalDetails.health=Health Problems +hrm.HrmEmpPersonalDetails.languageDtls=Language Details +hrm.HrmEmpPersonalDetails.refDtls=References +hrm.HrmEmpPersonalDetails.joiningInfo=Joining Details +hrm.HrmEmpPersonalDetails.employeeHistory=Employee History +hrm.HrmEmpPersonalDetails.priorExperience=Prior Experience +hrm.HrmEmpPersonalDetails.educationDetails=Education Details +hrm.HrmEmpPersonalDetails.pFDetails=PF Details +hrm.HrmEmpPersonalDetails.trainingDetails=Training Details +hrm.HrmEmpPersonalDetails.assetDtls=Asset Details +hrm.HrmEmpPersonalDetails.discAction=Disciplinary Action +hrm.HrmEmpPersonalDetails.rewards=Rewards +hrm.HrmEmpPersonalDetails.employeeNo=Employee No. +hrm.HrmEmpPersonalDetails.checkDigit=Check Digit +hrm.HrmEmpPersonalDetails.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetails.photograph=Select Photograph +hrm.HrmEmpPersonalDetails.employeeName=Employee Name +hrm.HrmEmpPersonalDetails.firstName=First Name +hrm.HrmEmpPersonalDetails.middleName=Middle Name +hrm.HrmEmpPersonalDetails.lastName=Last Name +hrm.HrmEmpPersonalDetails.guardianName=Father/Husband's Name +hrm.HrmEmpPersonalDetails.motherTongue=Mother Tongue +hrm.HrmEmpPersonalDetails.description=Description +hrm.HrmEmpPersonalDetails.hierarchyLevel=Hierarchy Level +hrm.HrmEmpPersonalDetails.dateOfBirth=Date Of Birth +hrm.HrmEmpPersonalDetails.nationality=Nationality +hrm.HrmEmpPersonalDetails.bloodGroup=Blood Group +hrm.HrmEmpPersonalDetails.height=Height +hrm.HrmEmpPersonalDetails.cms=Cms +hrm.HrmEmpPersonalDetails.sex=Sex +hrm.HrmEmpPersonalDetails.maritalStatus=Marital Status +hrm.HrmEmpPersonalDetails.dependants=No.of Dependants +hrm.HrmEmpPersonalDetails.department=Department +hrm.HrmEmpPersonalDetails.designation=Designation +hrm.HrmEmpPersonalDetails.rsvCtg=Social Status +hrm.HrmEmpPersonalDetails.religion=Religion +hrm.HrmEmpPersonalDetails.grade=Grade +hrm.HrmEmpPersonalDetails.code=Code +hrm.HrmEmpPersonalDetails.desc=Description +hrm.HrmEmpPersonalDetails.level=Level +hrm.HrmEmpPersonalDetails.handicappedFlag=Handicapped Flag +hrm.HrmEmpPersonalDetails.panNumber=Pan Number +hrm.HrmEmpPersonalDetails.girNumber=Gratuity Number +hrm.HrmEmpPersonalDetails.pfNumber=PF No. +hrm.HrmEmpPersonalDetails.reportingEmployee=Reporting Employee +hrm.HrmEmpPersonalDetails.lastPromotionDate=Last Promotion Date +hrm.HrmEmpPersonalDetails.A+=A+ +hrm.HrmEmpPersonalDetails.A-=A- +hrm.HrmEmpPersonalDetails.B+=B+ +hrm.HrmEmpPersonalDetails.B-=B- +hrm.HrmEmpPersonalDetails.AB+=AB+ +hrm.HrmEmpPersonalDetails.AB-=AB- +hrm.HrmEmpPersonalDetails.O+=O+ +hrm.HrmEmpPersonalDetails.O-=O- +hrm.HrmEmpPersonalDetails.male=Male +hrm.HrmEmpPersonalDetails.female=Female +hrm.HrmEmpPersonalDetails.none=None +hrm.HrmEmpPersonalDetails.self=Self +hrm.HrmEmpPersonalDetails.dependant=Dependant +hrm.HrmEmpPersonalDetails.both=Both +hrm.HrmEmpPersonalDetails.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetails.spouseName=Spouse Name +hrm.HrmEmpPersonalDetails.validUpto=Licence Valid Upto +hrm.HrmEmpPersonalDetails.passportExpDate=Expiry Date +hrm.HrmEmpPersonalDetails.placeOfIssue=Place Of Issue +hrm.HrmEmpPersonalDetails.drivingLicenseNo=Driving Licence No +hrm.HrmEmpPersonalDetails.passportIssueDate=Passport Issue Date +hrm.HrmEmpPersonalDetails.passportNo=Passport No +hrm.HrmEmpPersonalDetails.reportingHead=Reporting Head +hrm.HrmEmpPersonalDetails.spouseOccupation=Spouse's Occupation +hrm.HrmEmpPersonalDetails.relatedToEmployee=Related To Employee +hrm.HrmEmpPersonalDetails.relatedEmployee=Employee Name +hrm.HrmEmpPersonalDetails.idMark=Identification Marks +hrm.HrmEmpPersonalDetails.placeOfBirth=Place Of Birth +hrm.HrmEmpPersonalDetails.locJoiningDate=Current Location Joining Date +hrm.HrmEmpPersonalDetails.location=Location +hrm.hrmEmpPers.error.basic=Basic is not within the Pay Scale +hrm.HrmEmpPersonalDetails.departmentCode=Department Code +hrm.HrmEmpPersonalDetails.departmentDescription=Department Description +hrm.HrmEmpPersonalDetails.mobile=Mobile +hrm.HrmEmpPersonalDetails.personalEmail=Email +hrm.HrmEmpPersonalDetails.checkExp=From Year Month cannot be greater than To Year Month. +hrm.HrmEmpPersonalDetails.checkExpTo=To Date cannot be future date. +hrm.HrmEmpPersonalDetails.flat=Flat Given +hrm.HrmEmpPersonalDetails.anniversaryDate=Date of Anniversary +hrm.HrmEmpPersonalDetails.motherName=Mother's Name +hrm.HrmEmpPersonalDetails.SCSMemershipNo=Credit Society Membership No. +hrm.HrmEmpPersonalDetails.clubMembership=Club Membership +hrm.HrmEmpPersonalDetails.gunLicenseNo=Staff Security Deposit +hrm.HrmEmpPersonalDetails.gunLicenseRenDate=Security Deposit Date +hrm.HrmEmpPersonalDetails.spouseOrganization=Spouse's Organization +hrm.HrmEmpPersonalDetails.spOrgType=Spouse's Organization Type +hrm.HrmEmpPersonalDetails.spTransferable=Spouse Liable for transfer +hrm.HrmEmpPersonalDetails.stateGovt=State Govt. +hrm.HrmEmpPersonalDetails.centralGovt=Central Govt. +hrm.HrmEmpPersonalDetails.publicSector=Public Sector +hrm.HrmEmpPersonalDetails.privateSector=Private Sector +hrm.HrmEmpPersonalDetails.localBody=Local Body +hrm.HrmEmpPersonalDetails.own=Own +hrm.HrmEmpPersonalDetails.unionInfo=Union Information + +hrm.HrmRecApplnMtn.checkExp=From Year Month cannot be greater than To Year Month in row {1} of detail. +hrm.HrmRecApplnMtn.checkExpTo=To Date cannot be future date in field {0} of row {1} of detail. + +hrm.HrmEmpPersonalDetails.error.RptgEmp=Reporting Employee's Level should be less than the Employee +hrm.HrmEmpPersonalDetails.error.draftSave=Draft Save First. +hrm.HrmEmpPersonalDetails.error.deputation=Employee status should be Deputed Out for the separation Deputed Out +hrm.HrmEmpPersonalDetails.error.incomplete={0} Mandatory field missing in +hrm.HrmEmpPersonalDetails.error.address=Address Details of the Employee is incomplete +hrm.retirementDate.dateConstraintViolated=Retirement Date should be greater than Joining Date +hrm.dateOfBirth.dateConstraintViolated=Date Of Birth Should be a Past Date. +hrm.confDate.dateConstraintViolated=Confirmation Date should be greater than Joining Date +hrm.locDate.dateConstraintViolated=Location Date should be greater than Joining Date + + +hrm.HrmEmpPersonalDetailsAddress.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsAddress.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsAddress.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsAddress.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsAddress.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetailsAddress.photograph=Select Photograph +hrm.HrmEmpPersonalDetailsAddress.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsAddress.firstName=First Name +hrm.HrmEmpPersonalDetailsAddress.middleName=Middle Name +hrm.HrmEmpPersonalDetailsAddress.lastName=Last Name +hrm.HrmEmpPersonalDetailsAddress.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsAddress.name=Employee Name + +hrm.HrmEmpPersonalDetailsAddress.address=Address +hrm.HrmEmpPersonalDetailsAddress.city=City +hrm.HrmEmpPersonalDetailsAddress.state=State +hrm.HrmEmpPersonalDetailsAddress.district=District +hrm.HrmEmpPersonalDetailsAddress.tehsil=Tehsil +hrm.HrmEmpPersonalDetailsAddress.code=Code +hrm.HrmEmpPersonalDetailsAddress.desc=Description +hrm.HrmEmpPersonalDetailsAddress.country=Country +hrm.HrmEmpPersonalDetailsAddress.pinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.mobile=Mobile No +hrm.HrmEmpPersonalDetailsAddress.phone=Phone(1) +hrm.HrmEmpPersonalDetailsAddress.extension=Extension +hrm.HrmEmpPersonalDetailsAddress.secPhone=Phone(2) +hrm.HrmEmpPersonalDetailsAddress.email=E-Mail +hrm.HrmEmpPersonalDetailsAddress.fax=Fax +hrm.HrmEmpPersonalDetailsAddress.prAddress=Address +hrm.HrmEmpPersonalDetailsAddress.prCity=City +hrm.HrmEmpPersonalDetailsAddress.prState=State +hrm.HrmEmpPersonalDetailsAddress.prCountry=Country +hrm.HrmEmpPersonalDetailsAddress.prPinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.prPhone=Phone + +hrm.HrmEmpPersonalDetailsAddress.peAddress=Address +hrm.HrmEmpPersonalDetailsAddress.peCity=City +hrm.HrmEmpPersonalDetailsAddress.peState=State +hrm.HrmEmpPersonalDetailsAddress.peCountry=Country +hrm.HrmEmpPersonalDetailsAddress.pePinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.pePhone=Phone + +hrm.HrmEmpPersonalDetailsAddress.htAddress=Address +hrm.HrmEmpPersonalDetailsAddress.htCity=City +hrm.HrmEmpPersonalDetailsAddress.htState=State +hrm.HrmEmpPersonalDetailsAddress.htCountry=Country +hrm.HrmEmpPersonalDetailsAddress.htPinCode=Pin Code +hrm.HrmEmpPersonalDetailsAddress.htPhone=Phone + +hrm.HrmEmpPersonalDetailsJoinInf.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsJoinInf.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsJoinInf.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsJoinInf.firstName=First Name +hrm.HrmEmpPersonalDetailsJoinInf.middleName=Middle Name +hrm.HrmEmpPersonalDetailsJoinInf.lastName=Last Name +hrm.HrmEmpPersonalDetailsJoinInf.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsJoinInf.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsJoinInf.accessCardNo=Access Card No. +hrm.HrmEmpPersonalDetailsJoinInf.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsJoinInf.photograph=Photograph +hrm.HrmEmpPersonalDetailsJoinInf.compJoiningDate=Bank Joining Date +hrm.HrmEmpPersonalDetailsJoinInf.tentativeConfDate=Tentative Confirmation Date +hrm.HrmEmpPersonalDetailsJoinInf.locationJoinDate=Location Joining Date +hrm.HrmEmpPersonalDetailsJoinInf.retirementDate=Retirement Date +hrm.HrmEmpPersonalDetailsJoinInf.payrollStopDate=Payroll Stop Date +hrm.HrmEmpPersonalDetailsJoinInf.baseSiteCode=Base Site Code +hrm.HrmEmpPersonalDetailsJoinInf.siteCode=Site Code +hrm.HrmEmpPersonalDetailsJoinInf.siteName=Site Name +hrm.HrmEmpPersonalDetailsJoinInf.baseSiteName=Base Site Name + +hrm.HrmEmpPersonalDetailsJoinInf.entryMode=Entry Mode +hrm.HrmEmpPersonalDetailsJoinInf.accountNumber=Account Number +hrm.HrmEmpPersonalDetailsJoinInf.employeeStatus=Employee Status +hrm.HrmEmpPersonalDetailsJoinInf.statusDate=Status Effective Date +hrm.HrmEmpPersonalDetailsJoinInf.separationType=Separation type +hrm.HrmEmpPersonalDetailsJoinInf.suspensionRate=Suspension Rate (%) +hrm.HrmEmpPersonalDetailsJoinInf.costCentre=Cost Centre +hrm.HrmEmpPersonalDetailsJoinInf.payment=Payment Type +hrm.HrmEmpPersonalDetailsJoinInf.cheque=Cheque Payment +hrm.HrmEmpPersonalDetailsJoinInf.accountingSiteCode=Accounting Site Code +hrm.HrmEmpPersonalDetailsJoinInf.accountingSite=Accounting Site +hrm.HrmEmpPersonalDetailsJoinInf.code=Code +hrm.HrmEmpPersonalDetailsJoinInf.description=Description +hrm.HrmEmpPersonalDetailsJoinInf.separationCode=Separation Code +hrm.HrmEmpPersonalDetailsJoinInf.costCode=Cost Code +hrm.HrmEmpPersonalDetailsJoinInf.cash=Cash/Cheque Payment +hrm.HrmEmpPersonalDetailsJoinInf.dd=Demand Draft +hrm.HrmEmpPersonalDetailsJoinInf.refNo=Reference No. +hrm.HrmEmpPersonalDetailsJoinInf.orderNo=Order No. +hrm.HrmEmpPersonalDetailsJoinInf.orderDate=Order Date +hrm.HrmEmpPersonalDetailsJoinInf.bank=Bank +hrm.HrmEmpPersonalDetailsJoinInf.bankCode=Code +hrm.HrmEmpPersonalDetailsJoinInf.bankName=Name +hrm.HrmEmpPersonalDetailsJoinInf.placeOfInitialPosting=Place of Initial Posting +hrm.HrmEmpPersonalDetailsJoinInf.placeOfCurrentPosting=Place of Initial Posting +hrm.HrmEmpPersonalDetailsJoinInf.branchName=Branch + +hrm.HrmEmpPersonalDetailsJoinInf.searchBankCode=Bank Code +hrm.HrmEmpPersonalDetailsJoinInf.searchBranchName=Branch Name +hrm.HrmEmpPersonalDetailsJoinInf.responsibility=Job Responsibility + +hrm.HrmEmpPersonalDetailsTrngDet.mainHeader=EMPLOYE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsTrngDet.employeeNo=Emplyee No +hrm.HrmEmpPersonalDetailsTrngDet.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsTrngDet.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsTrngDet.courseName=Course Name +hrm.HrmEmpPersonalDetailsTrngDet.fromDate=From Date +hrm.HrmEmpPersonalDetailsTrngDet.toDate=To Date +hrm.HrmEmpPersonalDetailsTrngDet.calendarName=Calendar Name +hrm.HrmEmpPersonalDetailsTrngDet.rating=Rating +hrm.HrmEmpPersonalDetailsTrngDet.participation=Participated +hrm.HrmEmpPersonalDetailsTrngDet.resonNonPart=Reason For Non Participation +hrm.HrmEmpPersonalDetailsTrngDet.instName=Name Of Institution + +hrm.HrmEmpPersonalDetailsPriorExp.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsPriorExp.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsPriorExp.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsPriorExp.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsPriorExp.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetailsPriorExp.photograph=Select Photograph +hrm.HrmEmpPersonalDetailsPriorExp.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsPriorExp.firstName=First Name +hrm.HrmEmpPersonalDetailsPriorExp.middleName=Middle Name +hrm.HrmEmpPersonalDetailsPriorExp.lastName=Last Name +hrm.HrmEmpPersonalDetailsPriorExp.employeeNumber=Employee Number +hrm.HrmEmpPersonalDetailsPriorExp.fromPeriod=From Period (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.toPeriod=To Period (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.workExp=Work Experience +hrm.HrmEmpPersonalDetailsPriorExp.skillCode=Skill Code +hrm.HrmEmpPersonalDetailsPriorExp.location=Location +hrm.HrmEmpPersonalDetailsPriorExp.workDesc=Work Description +hrm.HrmEmpPersonalDetailsPriorExp.desgn=Designation +hrm.HrmEmpPersonalDetailsPriorExp.desgCode=Designation Code +hrm.HrmEmpPersonalDetailsPriorExp.months=Months +hrm.HrmEmpPersonalDetailsPriorExp.days=Days +hrm.HrmEmpPersonalDetailsPriorExp.basics=Basic +hrm.HrmEmpPersonalDetailsPriorExp.da=DA +hrm.HrmEmpPersonalDetailsPriorExp.allowance=Allowance +hrm.HrmEmpPersonalDetailsPriorExp.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsPriorExp.orgName=Organization Name +hrm.HrmEmpPersonalDetailsPriorExp.orgAdd=Organization Address +hrm.HrmEmpPersonalDetailsPriorExp.fromDate=From Date (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.toDate=To Date (MMYYYY) +hrm.HrmEmpPersonalDetailsPriorExp.workExp=Work Experience(in months) +hrm.HrmEmpPersonalDetailsPriorExp.designation=Designation +hrm.HrmEmpPersonalDetailsPriorExp.reportTo=Report To(Name/Designation) +hrm.HrmEmpPersonalDetailsPriorExp.jobDescription=Job Description/Responsibility +hrm.HrmEmpPersonalDetailsPriorExp.personnelSupervised=No Of Personnel Supervised +hrm.HrmEmpPersonalDetailsPriorExp.salaryStarting=Salary(Starting) Per Month +hrm.HrmEmpPersonalDetailsPriorExp.salaryLeaving=Salary(Leaving) Per Month +hrm.HrmEmpPersonalDetailsPriorExp.basic=Basic(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.da=DA(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.hra=HRA(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.conveyance=Conveyance(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.otherAllowance=Other Allowances(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.incentives=Incentives(Last Drawn) +hrm.HrmEmpPersonalDetailsPriorExp.bonus=Bonus(Last Drawn) + + + + +hrm.HrmEmpPersonalDetailsEdu.schoolColInst=Name Of School/College/Inst +hrm.HrmEmpPersonalDetailsEdu.examDegreePassed=Exam/Degrees Passed +hrm.HrmEmpPersonalDetailsEdu.percentageDivision=Percentage +hrm.HrmEmpPersonalDetailsEdu.majorSubjects=Major Subjects +hrm.HrmEmpPersonalDetailsEdu.specialisation=Specialisation +hrm.HrmEmpPersonalDetailsEdu.otherProfQualification=Other Professional Qualifications +hrm.HrmEmpPersonalDetailsEdu.specialisedCourses=Specialised Courses Attended +hrm.HrmEmpPersonalDetailsEdu.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsEdu.subHeader1=Employee Detail +hrm.HrmEmpPersonalDetailsEdu.employeeNo=Employee No. +hrm.HrmEmpPersonalDetailsEdu.checkDigit=Check Digit +hrm.HrmEmpPersonalDetailsEdu.accessCardNo=Access Card No +hrm.HrmEmpPersonalDetailsEdu.photograph=Select Photograph +hrm.HrmEmpPersonalDetailsEdu.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsEdu.firstName=First Name +hrm.HrmEmpPersonalDetailsEdu.middleName=Middle Name +hrm.HrmEmpPersonalDetailsEdu.lastName=Last Name +hrm.HrmEmpPersonalDetailsEdu.srlNo=Srl No. +hrm.HrmEmpPersonalDetailsEdu.instituteCode=Institute Code +hrm.HrmEmpPersonalDetailsEdu.qualificationCode=Qualification Code +hrm.HrmEmpPersonalDetailsEdu.qualificationName=Qualification +hrm.HrmEmpPersonalDetailsEdu.specialisation=Specialisation +hrm.HrmEmpPersonalDetailsEdu.passYear=Pass Year +hrm.HrmEmpPersonalDetailsEdu.percent=Percent +hrm.HrmEmpPersonalDetailsEdu.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsEdu.checkPercent=Percent cannot be greater than 100 + + + +hrm.HrmEmpPersonalDetailsEmpHst.mainHeader=EMPLOYE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsEmpHst.employeeNo=Emplyee No +hrm.HrmEmpPersonalDetailsEmpHst.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsEmpHst.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsEmpHst.serialNo=Serial No +hrm.HrmEmpPersonalDetailsEmpHst.activity=Activity +hrm.HrmEmpPersonalDetailsEmpHst.effectiveDate=Effective Date +hrm.HrmEmpPersonalDetailsEmpHst.frombasic=From Basic +hrm.HrmEmpPersonalDetailsEmpHst.tobasic=To Basic +hrm.HrmEmpPersonalDetailsEmpHst.fromgrade=From Grade +hrm.HrmEmpPersonalDetailsEmpHst.tograde=To Grade +hrm.HrmEmpPersonalDetailsEmpHst.fromdesig=From Desig +hrm.HrmEmpPersonalDetailsEmpHst.todesig=To Desig +hrm.HrmEmpPersonalDetailsEmpHst.fromDepartment=From Department +hrm.HrmEmpPersonalDetailsEmpHst.todepartment=To Department +hrm.HrmEmpPersonalDetailsEmpHst.fromlocation=From Location +hrm.HrmEmpPersonalDetailsEmpHst.tolocation=To Location + + + +hrm.HrmEmpPersonalDetailsPF.mainHeader=EMPLOYEE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsPF.employeeNo=Employee no +hrm.HrmEmpPersonalDetailsPF.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsPF.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsPF.nomineeName=Nominee Name +hrm.HrmEmpPersonalDetailsPF.relation=Relation +hrm.HrmEmpPersonalDetailsPF.dob=Date Of Birth +hrm.HrmEmpPersonalDetailsPF.address=Address +hrm.HrmEmpPersonalDetailsPF.total=Total Amount +hrm.HrmEmpPersonalDetailsPF.minor=Name, Relation & Adress of the Guardian (In Case of Minor) +hrm.HrmEmpPersonalDetailsPF.percentage=Percent(%)of PF +hrm.hrmEmpPers.error.PFpercent=Total of PF percent should be 100 +hrm.HrmEmpPersonalDetailsPF.Y=Yes +hrm.HrmEmpPersonalDetailsPF.N=No +hrm.HrmEmpPersonalDetailsPF.nominee=You have already entered for this nominee. +hrms.HrmEmpPersonalDetails.exp=To Period must be greater than From Period +hrm.HrmEmpPersonalDetails.fromExpLessThan12=Month in From Period must be less than 12. +hrm.HrmEmpPersonalDetails.toExpLessThan12=Month in To Period must be less than 12. + +hrm.HrmEmpPersonalDetailsRef.mainHeader=EMPLOYE PERSONAL DETAILS +hrm.HrmEmpPersonalDetailsRef.employeeNo=Employee no +hrm.HrmEmpPersonalDetailsRef.draftFlag=Draft Flag +hrm.HrmEmpPersonalDetailsRef.employeeName=Employee Name +hrm.HrmEmpPersonalDetailsRef.name=Name +hrm.HrmEmpPersonalDetailsRef.address=Address +hrm.HrmEmpPersonalDetailsRef.telephoneno=Telephone No +hrm.HrmEmpPersonalDetailsRef.positionoccupation=Position/Occupation +hrm.HrmEmpPersonalDetailsRef.subHeader1=Employee Detail + +hrm.HrmEmpPersonalDetailsAwd.award=Name of Award +hrm.HrmEmpPersonalDetailsAwd.awardYear=Year of Award +hrm.HrmEmpPersonalDetailsAwd.awardField=Field/Discipline of Award +hrm.HrmEmpPersonalDetailsAwd.awardDate=Date of Award + +hrm.HrmEmpPersonalDetailsHealth.probDtls=Details of Sickness +hrm.HrmEmpPersonalDetailsHealth.startDate=Start Date +hrm.HrmEmpPersonalDetailsHealth.endDate=End Date + +hrm.HrmEmpPersonalDetailsIns.invDtls=Investment Details +hrm.HrmEmpPersonalDetailsIns.invAmount=Investment Amount +hrm.HrmEmpPersonalDetailsIns.invPolicyNo=Policy Number +hrm.HrmEmpPersonalDetailsIns.invDate=Investment Date + +hrm.HrmEmpPersonalDetailsLng.lngName=Languages Known +hrm.HrmEmpPersonalDetailsLng.lngSpeak=Speaking Ability +hrm.HrmEmpPersonalDetailsLng.lngRead=Reading Ability +hrm.HrmEmpPersonalDetailsLng.lngWrite=Writing Ability + +## BY SUBHAM FOR ASSET DETAILS TAB + +hrm.HrmEmpPersAsset.fullAddress= Name of District,Sub-Division Taluka & Village +hrm.HrmEmpPersAsset.detailOfProperty=Name and detail of property +hrm.HrmEmpPersAsset.costOfConstruction=Cost of construction/Acquirement +hrm.HrmEmpPersAsset.yearOfPurchase =Year when purchased +hrm.HrmEmpPersAsset.presentValue=Present Value +hrm.HrmEmpPersAsset.nameHeld=If not in own name,state in whose name held and his / her relationship, to the employee. +hrm.HrmEmpPersAsset.howAquired=How acquired +hrm.HrmEmpPersAsset.detailOfPersonFromWhomAquired=Name with details of person(s) from whom acquired +hrm.HrmEmpPersAsset.totalIncome=Total annual income from the property +hrm.HrmEmpPersAsset.remarks=Remarks + +##For UAN & Aadhar No. By SUBHAM + +hrm.HrmEmpPersonalDetails.uanInfo= UAN Details +hrm.HrmEmpPersonalDetails.aadharInfo= Aadhar Number +hrm.HrmEmpPersonalDetails.checkUanValidation=UAN should be 12 Digits +hrm.HrmEmpPersonalDetails.checkAddharValidation=AADHAR No. should be 12 Digits + + +##For UAN & Aadhar No. Ends Here + +HrmSepClrLst.title=SEPARATION CLEARANCE LIST +SepClrLstTabHeader.title=Clearance List Detail +hrm.HrmSepClrLst.description=Description +hrm.HrmSepClrLst.externalInternalFlag=Type +hrm.HrmSepClrLst.external=External +hrm.HrmSepClrLst.internal=Internal + +hrm.HrmSepClrTmplMst.heading=CLEARANCE TEMPLATE MASTER +hrm.HrmSepClrTmplMst.tmplDesc=Template Description +hrm.HrmSepClrTmplMst.txtClrDesc= Clearance Desciption +hrm.HrmSepClrTmplMst.obsoleteFlag=Obsolete +hrm.HrmSepClrTmplMst.extIntFlag=External/Internal + +hrm.HrmSepApplication.mainHeader=SEPARATION APPLICATION +hrm.HrmSepApplication.subHeader1=Application Details +hrm.HrmSepApplication.subHeader2=Separation Details +hrm.HrmSepApplication.applicationNo=Application No. +hrm.HrmSepApplication.dateApplied=Application Date +hrm.HrmSepApplication.initiatedBy=Initiated By +hrm.HrmSepApplication.self=Self +hrm.HrmSepApplication.office=Office +hrm.HrmSepApplication.both=Both +hrm.HrmSepApplication.employeeNo=Employee No. +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepApplication.separationCategory=Separation Category +hrm.HrmSepApplication.immediateEffect=Immediate Effect +hrm.HrmSepApplication.requestedSepDate=Requested Separation Date +hrm.HrmSepApplication.actualSepDate=Actual Separation Date +hrm.HrmSepApplication.reason=Reason +hrm.HrmSepApplication.rejectionRemarks= Remarks +hrm.HrmSepApplication.approvedFlag=Approval Status +hrm.HrmSepApplication.new=New +hrm.HrmSepApplication.pending=Pending +hrm.HrmSepApplication.approved=Approved +hrm.HrmSepApplication.rejected=Rejected +hrm.HrmSepApplication.withdrawalFlag=Withdrawal Apication +hrm.HrmSepApplication.sepCode=Separation Code +hrm.HrmSepApplication.sepName=Description + + + + + +hrm.HrmSepOrder.mainHeader=SEPARATION ORDER +hrm.HrmSepOrder.orderNo=Order No +hrm.HrmSepOrder.orderDate=Order Date +hrm.HrmSepOrder.subHeader2=Order Details +hrm.HrmSepOrder.applnNo=Application No +hrm.HrmSepOrder.employeeName=Employee Name +hrm.HrmSepOrder.separationCategory=Separation Category +hrm.HrmSepOrder.immediateEffect=Immediate Effect +hrm.HrmSepOrder.requestedSepDate=Requested Separation Date +hrm.HrmSepOrder.actualSepDate=Actual Separation Date +hrm.HrmSepOrder.reason=Reason +hrm.HrmSepOrder.rejectionRemarks= Remarks +hrm.HrmSepOrder.approvedFlag=Status +hrm.HrmSepOrder.new=New +hrm.HrmSepOrder.pending=Pending +hrm.HrmSepOrder.approved=Approved +hrm.HrmSepOrder.rejected=Rejected +hrm.HrmSepOrder.applnDate=Application Date +hrm.HrmSepOrder.noApplication=There is no Separation Application pending. + + + + + + + +hrm.HrmSepClrEmp.empNo=Employee No +hrm.HrmSepClrEmp.empName=Employee Name +hrm.HrmSepClrEmp.heading=SEPARATION CLEARANCE FOR EMPLOYEE +hrm.HrmSepClrEmp.tmplDesc=Template Description +hrm.HrmSepClrEmp.txtClrDesc= Clearance Desciption +hrm.HrmSepClrEmp.txtCheckFlag= Check Flag +hrm.HrmSepClrEmp.txtComment= Comment +hrm.HrmSepClrEmp.checkFlag=Check Flag +hrm.HrmSepClrEmp.obsoleteFlag=Obsolete Flag + + + + +hrm.HrmLvAppln.employeeNumber= Employee Number +hrm.HrmLvAppln.employeeName= Employee Name +hrm.HrmLvAppln.FirstName=First name +hrm.HrmLvAppln.MiddleName=Middle Name +hrm.HrmLvAppln.LastName=Last Name +hrm.HrmLvAppln.grade=Grade +hrm.HrmLvAppln.designation=Designation +hrm.HrmLvAppln.location=Location +hrm.HrmLvAppln.leaveCodes=Leave Code +hrm.HrmLvAppln.description=Description +hrm.HrmLvAppln.dateApplied=Date Applied +hrm.HrmLvAppln.fromDate=From Date +hrm.HrmLvAppln.toDate=To Date +hrm.HrmLvAppln.noOfdays=Number Of Days +hrm.HrmLvAppln.address=Address Of The Employee Proceeding On Leave +hrm.HrmLvAppln.phone=Phone No +hrm.HrmLvAppln.statusOfLeaves=Status +hrm.HrmLvAppln.reason=Reason +hrm.HrmLvAppln.appRemarks=Approver's Remarks +hrm.HrmLvAppln.itPercentage=Income Tax Amount (Rs.) + +hrm.HrmLeaveApplicationQuery.employeeNo=Employee Number +hrm.HrmLeaveApplicationQuery.leaveType=Leave Type +hrm.HrmLeaveApplicationQuery.leaveDescription=Leave Description +hrm.HrmLeaveApplicationQuery.fromDate=From Date +hrm.HrmLeaveApplicationQuery.toDate=To Date +hrm.HrmLeaveApplicationQuery.status=Status +hrm.HrmLeaveApplicationQuery.dateApplied=Date Applied + + + +hrm.HrmLeaveMaster.applicableFor=Applicable For +hrm.HrmLeaveMaster.state=State +hrm.HrmLeaveMaster.All=All + + + +hrm.EmpAprsl.heading=EMPLOYEE APPRAISAL +hrm.EmpAprsl.empCode=Employee No +hrm.EmpAprsl.empName=Employee Name +hrm.EmpAprsl.aprslCode=Appraisal No +hrm.EmpAprsl.aprslName=Appraisal Name +hrm.EmpAprsl.aprslLevel=Appraisal Level +hrm.EmpAprsl.aprslPeriod=Appraisal Period +hrm.EmpAprsl.stOrderNo=Start Order No +hrm.EmpAprsl.finalRating=Final Rating +hrm.EmpAprsl.fromDate=From Date +hrm.EmpAprsl.toDate=To Date +hrm.EmpAprsl.kpa=KPA +hrm.EmpAprsl.goals=Goals +hrm.EmpAprsl.kpaCode=KPA Group Desc +hrm.EmpAprsl.kpaDesc=KPA Desc +hrm.EmpAprsl.levelAprl0=Self Appraisal +hrm.EmpAprsl.levelRating0=Self Rating +hrm.EmpAprsl.levelAprl1=Appraiser1 Appraisal +hrm.EmpAprsl.levelRating1=Appraiser1 Rating +hrm.EmpAprsl.levelAprl2=Appraiser2 Appraisal +hrm.EmpAprsl.levelRating2=Appraiser2 Rating +hrm.EmpAprsl.levelAprl3=Functional Head Appraisal +hrm.EmpAprsl.levelRating3=Functional Head Rating +hrm.EmpAprsl.levelAprl4=GM(HRM)Appraisal +hrm.EmpAprsl.levelRating4=GM(HRM)Rating +hrm.EmpAprsl.levelAprl5=Director(Operations)Appraisal +hrm.EmpAprsl.levelRating5=Director(Operations)Appraisal + +hrm.EmpAprsl.goalDesc=Goal Description +hrm.EmpAprsl.parentSec=Parent Section +hrm.EmpAprsl.section=Section + + +hrm.EmpAprsl.heading=EMPLOYEE APPRAISAL +hrm.EmpAprsl.empCode=Employee No +hrm.EmpAprsl.empName=Employee Name +hrm.EmpAprsl.aprslCode=Appraisal No +hrm.EmpAprsl.aprslName=Appraisal Name +hrm.EmpAprsl.aprslLevel=Appraisal Level +hrm.EmpAprsl.aprslPeriod=Appraisal Period +hrm.EmpAprsl.stOrderNo=Start Order No +hrm.EmpAprsl.finalRating=Final Rating +hrm.EmpAprsl.fromDate=From Date +hrm.EmpAprsl.toDate=To Date +hrm.EmpAprsl.grade=Grade +hrm.EmpAprsl.designation=Designation +hrm.EmpAprsl.presentlocation=Present Location +hrm.EmpAprsl.dateofbirth=Date Of Birth +hrm.EmpAprsl.dateofjoining=Date Of Joining(As Staff) +hrm.EmpAprsl.dateofjoiningasof=Date Of Joining(As Officer) +hrm.EmpAprsl.lastpromotion=Last Promotion Date +hrm.EmpAprsl.lastpay=Last Pay as on 31st March +hrm.EmpAprsl.academic=Academic/Prfessional Qualification +hrm.EmpAprsl.rating=Rating for last 3 Years(%)-In Reverse Order + +hrm.HrmTrainingCourseMst.trainingStream=Training Stream +hrm.HrmTrainingCourseMst.streamName=Stream Name +hrm.HrmTrainingCourseMst.courseCode=Course Code +hrm.HrmTrainingCourseMst.courseName=Course Name +hrm.HrmTrainingCourseMst.maxAttend=Max. Capacity +hrm.HrmTrainingCourseMst.minAttend=Min. Required +hrmTCM.title=TRAINING COURSE MASTER +hrmTCMSubHeader.title=Training Stream +hrmTCMTabHeader.title=Course Detail + + +hrm.HrmTrainingBudget.course=Course +hrm.HrmTrainingBudget.courseName=Course Name +hrm.HrmTrainingBudget.fromDate=From Date +hrm.HrmTrainingBudget.toDate=To Date +hrm.HrmTrainingBudget.currencyType=Currency Type +hrm.HrmTrainingBudget.budget=Budget +hrmTBMainHeader.title=TRAINING COURSE BUDGET +hrmTBSubHeader.title=Training Course +hrmTBTabHeader.title=Course Budget + + +hrm.HrmTrnCal.calendarName=Calendar Name +hrm.HrmTrnCal.site=Site +hrm.HrmTrnCal.siteName=Site Name +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCal.txtCourseName=Course Name +hrm.HrmTrnCal.txtInstituteName=Institute Name +hrm.HrmTrnCal.insCode=Institute Code +hrm.HrmTrnCal.txtCourseCode=Course Code +hrm.HrmTrnCal.txtVenue=Venue +hrm.HrmTrnCal.txtType=Type +hrm.HrmTrnCal.txtDuration=Duration +hrm.HrmTrnCal.txtStartDate=Start Date +hrm.HrmTrnCal.txtEndDate=End Date +hrm.HrmTrnCal.txtStrength=Strength +hrm.HrmTrnCal.txtFee=Fee +hrm.HrmTrnCal.txtRatingScheme=Rating Scheme +hrm.HrmTrnCal.txtStatus=Status +hrm.HrmTrnCal.startDate=Start Date +hrm.HrmTrnCal.endDate=End Date +hrm.HrmTrnCalMainHeader.title=TRAINING CALENDAR +hrm.HrmTrnCalSubHeader.title=Calendar Detail +hrm.HrmTrnCalTabHeader.title=Coursen Detail +hrm.HrmTrnCal.pending=Pending +hrm.HrmTrnCal.closed=Closed +hrm.HrmTrnCal.beginner=Beginner +hrm.HrmTrnCal.advanced=Advanced +hrm.HrmTrnCal.workshop=Workshop +hrm.HrmTrnCal.onLocation=On Location +hrm.HrmTrnCal.campusCourse=Campus Course +hrm.HrmTrnCal.courseName=Course Name +hrm.HrmTrnCal.minRating=Minimum Rating +hrm.HrmTrnCal.maxRating=Maximum Rating + + +hrm.HrmTrnInCoDtl.instituteCode=Institute Code +hrm.HrmTrnInCoDtl.type=Type +hrm.HrmTrnInCoDtl.external=EXTERNAL +hrm.HrmTrnInCoDtl.internal=INTERNAL +hrm.HrmTrnInCoDtl.forigen=FOREIGN +hrm.HrmTrnInCoDtl.inCharge=In Charge +hrm.HrmTrnInCoDtl.address=Address +hrm.HrmTrnInCoDtl.country=Country +hrm.HrmTrnInCoDtl.city=City +hrm.HrmTrnInCoDtl.state=State +hrm.HrmTrnInCoDtl.pin=PIN +hrm.HrmTrnInCoDtl.phone=Phone +hrm.HrmTrnInCoDtl.email=Email +hrm.HrmTrnInCoDtl.fax=Fax +hrm.HrmTrnInCoDtl.course=Course Code +hrm.HrmTrnInCoDtl.courseName=Course Name +hrmTCDtlMainHeader.title=TRAINING INSTITUTE AND COURSE DETAIL +hrmTCDtlSubHeader.title=Institute Detail +hrmTCDtlTabHeader.title=Course Detail + + +hrm.HrmEmpDiscAction.heading=EMPLOYEE DISCIPLINARY CASES +hrm.HrmEmpDiscAction.txtLocation=Location +hrm.HrmEmpDiscAction.txtMisconduct=Misconduct +hrm.HrmEmpDiscAction.txtFromDate=Misconduct Date +hrm.HrmEmpDiscAction.txtToDate=To Date +hrm.HrmEmpDiscAction.caseFlag=Look For +hrm.HrmEmpDiscAction.chrgShtDt=Charge Sheet Date +hrm.HrmEmpDiscAction.inquiryDt=Inquiry Date +hrm.HrmEmpDiscAction.inqOfficer=Inquiry Officer +hrm.HrmEmpDiscAction.actionAuth=Action Authority +hrm.HrmEmpDiscAction.appealDt=Appeal Date +hrm.HrmEmpDiscAction.txtActionTaken=Action Taken +hrm.HrmEmpDiscAction.txtStatus=Status +hrm.HrmEmpDiscAction.txtStatusEffectDate=Status Effective Date +hrm.HrmEmpDiscAction.txtRemarks=Remarks, if any +hrm.HrmEmpDiscAction.W=Warning +hrm.HrmEmpDiscAction.S=Suspension without salary +hrm.HrmEmpDiscAction.R=Reduction to a lower grade +hrm.HrmEmpDiscAction.I=Stoppage of increment +hrm.HrmEmpDiscAction.D=Dismissal from service +hrm.HrmEmpDiscAction.txtLocationCode=Site Code +hrm.HrmEmpDiscAction.txtLocationName=Site Name +hrm.HrmEmpDiscAction.THEFT=THEFT / FRAUD /DISHONESTY +hrm.HrmEmpDiscAction.TAKING=TAKING / GIVING BRIBE / ILLEGAL GRATIFICATION +hrm.HrmEmpDiscAction.POSSESSION=POSSESSION OF PECUNIARY RESOURCES / PROPERTIES +hrm.HrmEmpDiscAction.FURNISHING=FURNISHING FALSE INFORMATION +hrm.HrmEmpDiscAction.PREJUDICIAL=PREJUDICIAL ACTING TO THE INTEREST OF CORPORATION +hrm.HrmEmpDiscAction.WILLFUL=WILLFUL INSUBORDINATION / DISOBEDIENCE +hrm.HrmEmpDiscAction.ABSENCE=ABSENCE WITHOUT LEAVE / OVERSTAYING SANCTIONED LEAVE +hrm.HrmEmpDiscAction.HABITUAL=HABITUAL LATE / IRREGULAR ATTENDANCE +hrm.HrmEmpDiscAction.NEGLIGENCE=NEGLIGENCE IN DUTY / MALINGERING / SLOWING DOWN OF WORK +hrm.HrmEmpDiscAction.DAMAGE=DAMAGE TO ANY PROPERTY OF THE CORPORATION / SUBSIDIARIES +hrm.HrmEmpDiscAction.INTERFERENCE=INTERFERENCE / TEMPERING WITH SAFETY DEVICES WITHIN THE PREMISES +hrm.HrmEmpDiscAction.DRUNKENNESS=DRUNKENNESS / RIOTOUS / DISORDERLY / INDECENT BEHAVIOUR +hrm.HrmEmpDiscAction.GAMBLING=GAMBLING WITHIN THE PREMISES OF THE ESTABLISHMENT +hrm.HrmEmpDiscAction.COLLECTION=COLLECTION OF MONEY WITHOUT PERMISSION OF AUTHORITY +hrm.HrmEmpDiscAction.SLEEPING=SLEEPING WHILE ON DUTY +hrm.HrmEmpDiscAction.CRIMINAL=COMMISSION OF ANY ACT WHICH AMOUNTS TO A CRIMINAL INVOLVING MORAL TURPITUDE +hrm.HrmEmpDiscAction.ABSENCEWORK=ABSENCE FROM APPOINTED PLACE OF WORK WITHOUT PERMISSION +hrm.HrmEmpDiscAction.SMOKING=SMOKING WITHIN THE PREMISES OF ESTABLISHMENT WHERE ITS PROHIBITED +hrm.HrmEmpDiscAction.PURCHASING=PURCHASING/SELLING PROPERTIES/MACHINERIES/STORES WITHOUT PERMISSION +hrm.HrmEmpDiscAction.COMMISSION=COMMISSION OF ANY ACT SUBVERSIVE OF DISCIPLINE OR OF GOOD BEHAVIOUR +hrm.HrmEmpDiscAction.ABETMENT=ABETMENT/ ATTEMPT OF ABETMENT OF ANY ACT WHICH AMOUNTS TO MISCONDUCT +hrm.HrmEmpDiscAction.P=Pending +hrm.HrmEmpDiscAction.E=Exonerated +hrm.HrmEmpDiscAction.C=Closed + +hrm.HrmClaimMst.MainHeader=CLAIM MASTER +hrm.HrmClaimMst.SubHeader=Claim Header +hrm.HrmClaimMst.claimCode=Code +hrm.HrmClaimMst.claimName=Name +hrm.HrmClaimMst.docReqFlag=Document Required +hrm.HrmClaimMst.calendarName=Calendar Name +hrm.HrmClaimMst.payrollFlag=Settle Through Payroll +hrm.HrmClaimMst.y=Yes +hrm.HrmClaimMst.n=No +hrm.HrmClaimMst.detail=Claim Details +hrm.HrmClaimMst.claimDetailCode=Claim Detail Code +hrm.HrmClaimMst.maxCalLimit=Maximum Calendar Limit +hrm.HrmLoanMst.greaterLesserFlag=Eligibility Factor +hrm.HrmClaimMst.maxLimit=Maximum Limit +hrm.HrmClaimMst.amount=Flat Amount +hrm.HrmClaimMst.effectFromDate=Effective From Date +hrm.HrmClaimMst.effectToDate=Effective To Date +hrm.HrmClaimMst.appliedToAll=Applicable To All +hrm.HrmClaimMst.greater=Greater +hrm.HrmClaimMst.lesser=Lesser +hrm.HrmClaimMst.dateError=Effective From Date can't be Greater than Effective To Date. +hrm.HrmClaimMst.amountError=Applicable Amount cannot exceed Maximum Calendar Limit. + +hrm.HrmEmpClaim.heading=EMPLOYEE REIMBURSEMENT +hrm.HrmEmpClaim.claimCode=Claim Code +hrm.HrmEmpClaim.startDate=From Date +hrm.HrmEmpClaim.endDate=To Date +hrm.HrmEmpClaim.txtEmployeeNo=Employee No +hrm.HrmEmpClaim.txtEmployeeName=Employee Name +hrm.HrmEmpClaim.txtAppliedAmount=Applied Amount +hrm.HrmEmpClaim.txtApplnDate=Date Applied +hrm.HrmEmpClaim.txtEligibleAmount=Eligible Amount +hrm.HrmEmpClaim.txtReimbursementTillDate=Reimbursed Till Date +hrm.HrmEmpClaim.txtPayrollFlag=Settle Through Payroll +hrm.HrmEmpClaim.txtApprovedAmount=Approved Amount +hrm.HrmEmpClaim.txtApprovalDate=Approval Date +hrm.HrmEmpClaim.txtApprovedBy=Approver's Name +hrm.HrmEmpClaim.txtApproverNo=Approver's Employee No +hrm.HrmEmpClaim.txtRemarks=Approver's Remarks +hrm.HrmEmpClaim.y=Yes +hrm.HrmEmpClaim.n=No +hrm.HrmEmpClaim.period=Period +hrm.HrmEmpClaim.current=Current +hrm.HrmEmpClaim.previous=Previous +hrm.HrmEmpClaim.PleaseSelect= --Please Select-- +hrm.HrmEmpClaim.Approved=Approved +hrm.HrmEmpClaim.Paid=Paid +hrm.HrmEmpClaim.txtClaimNo=Claim No. +hrm.HrmEmpClaim.empNo=Employee No. +hrm.HrmEmpClaim.date.value=Approved Date cannot be less than Application Date +hrm.HrmEmpClaim.validate=Sum of Reimbursed Till Date and applied amount is exceeding Eligible Amount in {0} row of detail +hrm.HrmEmpClaim.validate2=Eligible Amount is {0} and amount reimbursed till date is {1} +hrm.HrmEmpClaim.validate1=Approved Amount cannot be greater than Applied Amount in row {0} of detail +hrm.HrmEmpClaim.notAllowed= Previous Reimbursements cannot be entered after 1st April. + +hrm.HrmEmpAprslPersonalDetails.presLoc=Present Location +hrm.HrmEmpPersonalDetails.joiningOfficerDate=Date Of Joining(As Officer) +hrm.HrmEmpPersonalDetails.joiningStaffDate=Date Of Joining(As Staff) +hrm.HrmEmpPersonalDetails.dateofBirth=Date Of Birth +hrm.HrmEmpPersonalDetails.lastPromDate=Last Promotion Date +hrm.HrmEmpPersonalDetails.lastPay=Last Pay as on 31st March +hrm.HrmEmpPersonalDetails.qual=Academic/Professional Qualification +hrm.HrmEmpPersonalDetails.rating=Rating for last 3 years-In reverse Order +hrm.HrmEmpPersonalDetails.rating1=Rating1 +hrm.HrmEmpPersonalDetails.rating2=Rating2 +hrm.HrmEmpPersonalDetails.rating3=Rating3 +hrm.HrmEmpPersonalDetails.incr=Increment/Reward for last 3 years-In reverse Order + + +hrm.HrmSepApplication.employeeNo=Employee No +hrm.HrmSepApplication.employeeName=Employee Name +hrm.HrmSepApplication.firstName=First Name +hrm.HrmSepApplication.middleName=Middle name +hrm.HrmSepApplication.lastName=Last Name +hrm.HrmSepApplication.grade=Grade +hrm.HrmSepApplication.designation=Designation +hrm.HrmSepApplication.location=Location +hrm.HrmSepApplication.pastExp=Total Previous Experience(Months) +hrm.HrmSepApplication.presExp=Experience in Organization(Years) +hrm.HrmSepApplication.subHeader2=Employee Details +hrm.HrmSepApplication.sepCat=Separation Category +hrm.HrmSepApplication.imEffect=Immediate Effect +hrm.HrmEmpPersonalDetails.withFlag=Withdraw Application +hrm.HrmSepApplication.reqSepDate=Req. Separation Date +hrm.HrmSepApplication.actSepDate=Actual Separation Date +hrm.HrmSepApplication.reason=Reason + +wenrgise.empSepAppl.dateConstraintViolated=Requested separation date should be greater than application date. +wenrgise.sepappln.uniqueConstraintViolated=Header record with this {0} already exists. + +wenrgise.empSepOrderDate.dateConstraintViolated=Order date should be greater than application date. +wenrgise.empSepActDate.dateConstraintViolated=Actual Separation date should be greater than application date. + +hrm.HrmOrgIncrement.heading=MAINTAIN YEARLY INCREMENT RATES +hrm.HrmOrgIncrement.startDate=Start Date +hrm.HrmOrgIncrement.endDate=End Date +hrm.HrmOrgIncrement.classHeaderCode=Class Header +hrm.HrmOrgIncrement.classHeaderDesc=Class Header Description +hrm.HrmOrgIncrement.classDetailCode=Class Detail +hrm.HrmOrgIncrement.classDetailDesc=Class Detail Description +hrm.HrmOrgIncrement.ratingCode=Rating Scheme +hrm.HrmOrgIncrement.ratingFrom=Rating From +hrm.HrmOrgIncrement.ratingTo=Rating To +hrm.HrmOrgIncrement.ratingGrade=Rating Grade +hrm.HrmOrgIncrement.ratingDescription=Rating Description +hrm.HrmOrgIncrement.increment=Increment Amount +hrm.HrmOrgIncrement.detail=Increment Details +wenrgise.hrms.incr.enddate.value=Update the end date of the last record for the rating code. +wenrgise.hrms.stdateConstraintViolated=Start date should be after {0}. +wenrgise.hrms.endDateConstraintViolated=End date should lie after start date. + +hrm.HrmPrmOrder.mainHeader=PROMOTION ORDER +hrm.HrmPrmOrder.subHeader1=Employee Details +hrm.HrmPrmOrder.employeeNo=Employee No. +hrm.HrmPrmOrder.employeeName=Employee Name +hrm.HrmPrmOrder.firstName=First Name +hrm.HrmPrmOrder.middleName=Middle Name +hrm.HrmPrmOrder.lastName=Last Name +hrm.HrmPrmOrder.grade=Grade +hrm.HrmPrmOrder.designation=Designation +hrm.HrmPrmOrder.location=Location +hrm.HrmPrmOrder.pastExp=Total Previous Experience(Months) +hrm.HrmPrmOrder.presExp=Experience in Organization(Years) +hrm.HrmPrmOrder.subHeader2=Promotion Details +hrm.HrmPrmOrder.orderNo=Promotion Order No. +hrm.HrmPrmOrder.toGrade=To Grade +hrm.HrmPrmOrder.toDesig=To Designation +hrm.HrmPrmOrder.effecDate=Effective Date +hrm.HrmPrmOrder.approvedBy=Approved By +hrm.HrmPrmOrder.remarks=Approver's Remarks[50 characters] +hrm.HrmPrmOrder.gradeName=Grade Description +hrm.HrmPrmOrder.gradeCode=Grade Code +hrm.HrmPrmOrder.desigName=Designation Description +hrm.HrmPrmOrder.desigCode=Designation Code +wenrgise.promKpa.uniqueConstraintViolated=Header record with this {0},{1} and {2} is already present. +hrm.HrmPrmOrder.dateValidate=Effective Date should not be prior to Last Promotion Date +hrm.HrmPrmOrder.dateValidate1=Effective Date should not be prior to Bank Joining Date + +hrm.HrmPrmKPARating.fromGradeCode=From Grade Code +hrm.HrmPrmKPARating.toGradeCode=To Grade Code + +hrm.HrmPrmNotice.txtGrade=Grade +wenrgise.common.prmnotdetail.uniqueKeyViolated=Detail record in row {2} with this {0} and {1} is already present. + +hrm.HrmMisReportMainHeader=MIS REPORT +hrm.HrmMisReport.GenerateReport= Generate Report +hrm.HrmMisReportTableHeader=Position Wise Desired Srengths +hrm.HrmMisReportSubHeader=Location +hrm.HrmMisReport.Position=Position +hrm.HrmMisReport.DesiredStrength=Desired Strength +hrm.HrmMisReport.yearmonth= Year Month + +hrm.HrmRetFrcstMainHeader= RETIREMENT FORECAST REPORT +hrm.HrmRetFrcst.fromDate= From Date +hrm.HrmRetFrcst.toDate= To Date +hrm.HrmRetFrcst.DateException= From Date Or To Date cannot be empty. + +/* Report Code added by Abhishek*/ +hrm.Report.title=All India Manpower Details +hrm.Report.txtYYMM=YYMM +hrm.Report.txtDesignationId=Designation +hrm.Report.txtFromDate= From Date +hrm.Report.txtToDate= To Date +hrm.Report.txtDate=User Date +hrm.Report.txtYear=Please Enter Year(YYYY) +hrm.Report.txtMonth=Please Select Month +hrm.HrmLvCredit.region=Region +hrm.HrmLvCredit.txtRegionCode=Region Code +hrm.HrmLvCredit.txtRegionName=Region Name +hrm.HrmLvCredit.success={0} Credited for the selected employee successfully +hrm.HrmLvCredit=Leave Credit +hrm.HrmLvCredit.failure={0} Already Credited For This Month For Selected Region +hrm.HrmLvCredit.empNo=Employee No +hrm.HrmLvCredit.leaveType=Leave Type +hrm.HrmLvCredit.noOfDays=No. of Days to be credited +## mediclaim master + +hrm.HrmMediclaimMasterMainHeader=MEDICLAIM MASTER +hrm.HrmMediclaimMasterSubHeader=Mediclaim Master +hrm.HrmMediclaimMaster.claimCode=Claim Code +hrm.HrmMediclaimMaster.txtClass=Class +hrm.HrmMediclaimMaster.cadre=Cadre +hrm.HrmMediclaimMaster.allEmp=All Employee Flag +hrm.HrmMediclaimMaster.dependents=Dependents +hrm.HrmMediclaimMasterTableHeader=Claim Detail +hrm.HrmMediclaimMaster.coverName=Cover Name +hrm.HrmMediclaimMaster.sumInsured=Sum Insured +hrm.HrmMediclaimMaster.premium=Premium +hrm.HrmMediclaimMaster.salaryUnit=Salary Unit +hrm.HrmMediclaimMaster.ageFrom=Age From +hrm.HrmMediclaimMaster.ageTo=Age To +hrm.HrmMediclaimMaster.aicContribution=AIC Contribution +hrm.HrmMediclaimMaster.documentRequired=Document Required + +## my workflow +hrm.HrmMyWorkflow.WorkflowMaster=My Workflow Header +hrm.HrmMyWorkflow.subHeader=My Workflow Details +hrm.HrmMyWorkflow.Select=----Select---- +hrm.HrmMyWorkflow.workflowHead = Document Type +hrm.HrmMyWorkflow.workflowType=Workflow Type +hrm.HrmMyWorkflow.txtStatus=Status +hrm.HrmMyWorkflow.id=Workflow Code +hrm.HrmMyWorkflow.requestType=Description +hrm.HrmMyWorkflow.requestId=Request No. +hrm.HrmMyWorkflow.requestor=Requestor's Id +hrm.HrmMyWorkflow.requestorName=Requestor's Name +hrm.HrmMyWorkflow.approver=Approver's Id +hrm.HrmMyWorkflow.approverName=Approver's Name +hrm.HrmMyWorkflow.level=Level +hrm.HrmMyWorkflow.Header=My Workflow +hrm.HrmMyWorkflow.worklist=My Worklist +hrm.HrmMyWorkflow.intimation=My Intimation +hrm.HrmMyWorkflow.pending=Pending +hrm.HrmMyWorkflow.approved=Approved +hrm.HrmMyWorkflow.rejected=Rejected +hrm.HrmMyWorkflow.deleted=Deleted +hrm.HrmMyWorkflow.finalized=Finalizedar +hrm.HrmMyWorkflow.butAct=Act On Worklist +### Roaster entry +hrm.HrmRoasterEntry.heading=ROASTER ENTRY +hrm.HrmRoasterEntry.detail=List Of RoasterEntry +hrm.HrmRoasterEntry.txtRoasterCode=Roaster Code +hrm.HrmRoasterEntry.txtRoasterDescription=Roaster Description +hrm.HrmRoasterEntry.txtRoasterPoint= RoasterPoint +hrm.HrmRoasterEntry.txtCategoryAsPerRoaster= Category As Per Roaster Pt. +hrm.HrmRoasterEntry.txtCategory=Category(SC/ST/OBC/UR) +hrm.HrmRoasterEntry.txtEmployeeNo= Employee No. +hrm.HrmRoasterEntry.txtEmployeeName=Employee Name +hrm.HrmRoasterEntry.txtAppointmentDate=Appointment Date +hrm.HrmRoasterEntry.txtDob=Date Of Birth +hrm.HrmRoasterEntry.txtCategoryId=CategoryId +hrm.HrmRoasterEntry.txtConsumedByCategory=Consumed By Category +hrm.HrmRoasterEntry.txtReserved=WHETHER RESERVED CATEGORY EMPLOYEE APPIONTED ON OWN MERIT AS UR(Y/N) +hrm.HrmRoasterEntry.txtShortfall=Shortfall +hrm.HrmRoasterEntry.txtReplacedBy=ReplacedBy +hrm.HrmRoasterEntry.txtRemarks=Remarks +hrm.HrmRoasterEntry.employeeNo=Employee No +hrm.HrmRoasterEntry.employeeName=Employee Name +hrm.HrmRoasterEntry.RoasterMaster=Roaster Entry Header +hrm.HrmRoasterEntry.RoasterEntryDetail=Roaster Entry Detail +hrm.HrmRoasterEntry.mainHeader1=Details +hrm.HrmRoasterEntry.Year=Year +hrm.HrmRoasterEntry.Month=Month +hrm.jan=Jan +hrm.feb=Feb +hrm.mar=Mar +hrm.apr=Apr +hrm.may=May +hrm.jun=Jun +hrm.jul=Jul +hrm.aug=Aug +hrm.sep=Sep +hrm.oct=Oct +hrm.nov=Nov +hrm.dec=Dec +hrm.HrmRoasterEntry.RoasterPoint=Roaster Point +hrm.HrmRoasterEntry.RoasterCode=Roaster Code +hrm.HrmRoasterEntry.Roasterdescription=Roaster Description +hrm.HrmRoasterEntry.rsvCtg=Category +hrm.HrmRoasterEntry.code= Category Code +hrm.HrmRoasterEntry.desc= Description +hrm.HrmRoasterEntry.level=Level +wenrgise.common.header.yearLength=enter valid year +hrm.HrmRoasterEntry.entryMode=Entry Mode +hrm.HrmAdhocReport.heading=AD-HOC REPORT GENERATION TOOL +hrm.HrmAdhocReport.id=Query Id +hrm.HrmAdhocReport.code=Query Code[Name] +hrm.HrmAdhocReport.desc=Query Description +hrm.HrmAdhocReport.tag=Query Tagline[Category/Module] +hrm.HrmAdhocReport.query=Enter Query Here : +hrm.HrmAdhocReport.param1=Param-1 Name +hrm.HrmAdhocReport.param2=Param-2 Name +hrm.HrmAdhocReport.param3=Param-3 Name +hrm.HrmAdhocReport.param4=Param-4 Name +hrm.HrmAdhocReport.param5=Param-5 Name +hrm.HrmAdhocReport.param6=Param-6 Name +hrm.HrmAdhocReport.param7=Param-7 Name +hrm.HrmAdhocReport.param8=Param-8 Name +hrm.HrmAdhocReport.param9=Param-9 Name +hrm.HrmAdhocReport.param10=Param-10 Name +hrm.HrmAdhocReport.paramval1=Enter value of Param-1 +hrm.HrmAdhocReport.paramval2=Enter value of Param-2 +hrm.HrmAdhocReport.paramval3=Enter value of Param-3 +hrm.HrmAdhocReport.paramval4=Enter value of Param-4 +hrm.HrmAdhocReport.paramval5=Enter value of Param-5 +hrm.HrmAdhocReport.paramval6=Enter value of Param-6 +hrm.HrmAdhocReport.paramval7=Enter value of Param-7 +hrm.HrmAdhocReport.paramval8=Enter value of Param-8 +hrm.HrmAdhocReport.paramval9=Enter value of Param-9 +hrm.HrmAdhocReport.paramval10=Enter value of Param-10 \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml new file mode 100644 index 0000000..134ba8e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/META-INF/weblogic-ejb-jar.xml @@ -0,0 +1,215 @@ + + + + + + HrmSecondFacade + HrmSecondFacade + HrmSecondFacadeHome + + + + ejb/HrmAttendanceFacadeLocal + ejb/HrmAttendanceFacadeLocal + HrmAttendanceFacadeLocalHome + + + + ejb/HrmEligibilityFacadeLocal + ejb/HrmEligibilityFacadeLocal + HrmEligibilityFacadeLocalHome + + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + + ejb/HrmManPlFacadeLocal + ejb/HrmManPlFacadeLocal + HrmManPlFacadeLocalHome + + + + ejb/HrmPromotionFacadeLocal + ejb/HrmPromotionFacadeLocal + HrmPromotionFacadeLocalHome + + + + ejb/HrmRecruitmentFacadeLocal + ejb/HrmRecruitmentFacadeLocal + HrmRecruitmentFacadeLocalHome + + + + ejb/HrmTrainingFacadeLocal + ejb/HrmTrainingFacadeLocal + HrmTrainingFacadeLocalHome + + + + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacade + HrmPerformanceAppraisalFacadeLocalHome + + + + HrmTrainingFacade + HrmTrainingFacade + HrmTrainingFacadeLocalHome + + + + HrmAttendanceFacade + HrmAttendanceFacade + HrmAttendanceFacadeLocalHome + + + + HrmHelpFacade + HrmHelpFacade + HelpFacadeHome + + + + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacade + HrmAllocationTransferDeputationFacadeLocalHome + + + + HrmRecruitmentFacade + HrmRecruitmentFacade + HrmRecruitmentFacadeLocalHome + + + + HrmLeaveFacade + HrmLeaveFacade + HrmLeaveFacadeLocalHome + + + + HrmThirdFacade + HrmThirdFacade + HrmThirdFacadeHome + + + + ejb/HrmAllocationTransferDeputationFacadeLocal + ejb/HrmAllocationTransferDeputationFacadeLocal + HrmAllocationTransferDeputationFacadeLocalHome + + + + ejb/HrmPerformanceAppraisalFacadeLocal + ejb/HrmPerformanceAppraisalFacadeLocal + HrmPerformanceAppraisalFacadeLocalHome + + + + HrmEligibilityFacade + HrmEligibilityFacade + HrmEligibilityFacadeLocalHome + + + + HrmLoanFacade + HrmLoanFacade + HrmLoanFacadeLocalHome + + + + HrmUserSession + HrmUserSession + UserSessionHome + + + + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacade + HrmOrganisationSetUpFacadeLocalHome + + + + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacade + HrmEmployeeMaintenanceFacadeLocalHome + + + + HrmSecurityFacade + HrmSecurityFacade + SecurityFacadeHome + + + + HrmFacade + HrmFacade + HrmFacadeHome + + + + ejb/HrmAdvanceClaimFacadeLocal + ejb/HrmAdvanceClaimFacadeLocal + HrmAdvanceClaimFacadeLocalHome + + + + ejb/HrmEmployeeMaintenanceFacadeLocal + ejb/HrmEmployeeMaintenanceFacadeLocal + HrmEmployeeMaintenanceFacadeLocalHome + + + + ejb/HrmLeaveFacadeLocal + ejb/HrmLeaveFacadeLocal + HrmLeaveFacadeLocalHome + + + + ejb/HrmLoanFacadeLocal + ejb/HrmLoanFacadeLocal + HrmLoanFacadeLocalHome + + + + ejb/HrmOrganisationSetUpFacadeLocal + ejb/HrmOrganisationSetUpFacadeLocal + HrmOrganisationSetUpFacadeLocalHome + + + + ejb/HrmSeparationFacadeLocal + ejb/HrmSeparationFacadeLocal + HrmSeparationFacadeLocalHome + + + + HrmSeparationFacade + HrmSeparationFacade + HrmSeparationFacadeLocalHome + + + + HrmAdvanceClaimFacade + HrmAdvanceClaimFacade + HrmAdvanceClaimFacadeLocalHome + + + + HrmManPlFacade + HrmManPlFacade + HrmManPlFacadeLocalHome + + + + HrmPromotionFacade + HrmPromotionFacade + HrmPromotionFacadeLocalHome + + diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/connections.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/connections.xml new file mode 100644 index 0000000..c2ab35b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/classes/connections.xml @@ -0,0 +1,24 @@ + + + + + 1521 + JDBC + 172.18.193.126 + enrgise_apex + con0 + insp + oracle.jdbc.driver.OracleDriver + thin + + + 1521 + JDBC + 172.18.193.126 + enrgise_kccb + con + INSP + oracle.jdbc.driver.OracleDriver + thin + + diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/struts-config.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/struts-config.xml new file mode 100644 index 0000000..02f1e8e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/struts-config.xml @@ -0,0 +1,8571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/web.xml b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/web.xml new file mode 100644 index 0000000..c4c3162 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/public_html/WEB-INF/web.xml @@ -0,0 +1,73 @@ + + + + Empty web.xml file for Web Application + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts-config.xml + + + debug + 2 + + + detail + 2 + + + validate + true + + 1 + + + + + HelpServlet + wenrgise.help.webtier.servlet.HelperServlet + + + + + action + *.do + + + + + HelpServlet + /helpServlet + + + + + 3000 + + + html + text/html + + + txt + text/plain + + + index.jsp + index.html + + + /WEB-INF/struts-bean.tld + /WEB-INF/struts-bean.tld + + + /WEB-INF/struts-html.tld + /WEB-INF/struts-html.tld + + + /WEB-INF/struts-logic.tld + /WEB-INF/struts-logic.tld + + \ No newline at end of file diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Balesh_Photo.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Balesh_Photo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7480461145ddcf24fc212780191c39074f8b17f6 GIT binary patch literal 18465 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 G|2F~l%B<}G literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Brand_Final.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Brand_Final.gif new file mode 100644 index 0000000000000000000000000000000000000000..8053976de032cc8e224192699b5f4cd7dee2fe06 GIT binary patch literal 19137 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 RwZ}pJ@q2-x5Y-3>06X;F3jY8A literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/LaunchPad.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/LaunchPad.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc5b4c89a9d1e8eca4ed761f2ff8b7428a9ef377 GIT binary patch literal 41041 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�iQHa0vpzQ|;|0zO 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/LaunchPad1.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/LaunchPad1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac1abe6c9fc38d739b1db49ac5d14e88d7fdd3f6 GIT binary patch literal 89221 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Login.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/Login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d6f99afe84793db41c3b81b43cbd33ca8332e6ec GIT binary patch literal 50163 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/alert.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/alert.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db9551f75d671de6b1ef8468ad5b821207a4c292 GIT binary patch literal 817 zcmex=Hq-)3-T;9z58XJh4H zXJ_Z+|EI`$@KzRlhK~^C}Lq|5@z(jVX zLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)H zEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}> zY~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fp zj10^WZ^3?Nr$>6*x6VZtO1cZ5HbJ& literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_AssetManagement.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_AssetManagement.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd5fce5090478cc5a271df16ae7a9427fc5c398a GIT binary patch literal 2279 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8458e1d5db41f690d61b98a7bf88a701e1140df GIT binary patch literal 2473 zcmbW2c{tSj8o<9}Ft&~*S;|hCREU{SmMewobTqOiN_0YMlE`G7Igu=3q8u@y60(e) zv6WD!jcKe6X|fH2$$3B_mB0O{4!=pqD^a448sT zaF`Yll7+!#VbCj}4ggH#d$lka_@}^x;KCxJ2r+R9NkKrh3=o3B;X=Z25fNcwL3D(` z4}@h!lO_>_D1Q~yYN zke=}*=V@+U{uW5?Mo=dRKv6m(ES+vmQc{Ym!UfkpmbWPgGEi>n_iE=!@=SoJjCQvgs-_!97hw=cRd^ zRXPMDkpvpHw=pliFU8_kxISr^gXPoygbT)#e~SHQ!E6btj|{3S9IE zEuMuCpe4?%-`JpR*g$~Vw7$gVmu{3~Es69I^^5V@)l_s-wp_bnMzr~xfp7KWg%4F^ zo5`j8kfjIwZFH>uo^2;<>Kkq|Uy2v#p{GfII9p&Ilvzh!sYM#E1o*@g`(t@W)n_YW z)|WT@AP{}uYMe6VNN7P)kN=#iOgwxn%0Nctymo?6Cfj$kQ9}BNn$a7yF6ua^Uo9iq37&T z;yDK=LR?{NJ4@kZhx};90#=SoIx)8|XZa4>Ax+Ii$(rY*_GLUF3j%)wdCY4)JJ#A7 z0|)!}#((NeUsQbUz+HU~ffC|+dzfc<{txDjTEdVWU1miB`J_gcaJ&zFXBpxf zIO$~;83NYFnB1i`#dW;ZdbnVu`c0D%V6Zuk)`e4PuCfCI%t@p6J+)mUNoJYpL%Ko$ z_VyqlD!=-M7wM~~;?c?^rhDg?<;AdO6n5Vco!>1QwC=u!O<3#KYK#`VN9uKPFEp>Z zq!#3MyO_AHxbV@QdZG*VVcvI)a1St%znwU9MLXbOpq1e}x56X)?q03z*j@deW8iTF z?b4$*{7&1CWS~Q-tCDQ{^f{_h-6&PhR{1teBkHx64g_wcd}~hWny%@OxV2AVt}4ri z7ZerA`CU0q_sPw!q|rI*I+3p}*pFNqKQW-WSGtZaU$}VQ?a&dc?Bk4&>=6_ zg~wMC!*DbPIxj+G?j+x`lrWV80b?&kFZPdSjXD>zXp6llUb?c5TD^)GrFA6`dn)A*~-H#sx~k5;)-W*r{=v#ON>_>1jH`H zK%n9`>az4Ak!wSs@CV0_j7Q{zhK^iM8ygvG`!MnXN1hSf7tQ?K8WNwMczoF6>QF1K zc+#l0*5eWF+Vr7!k6nIoU;?o18IVZY6YLV{5$D}w;FH2~&ImmgBkI0|QdEv$on;#8 z-o;IMrG*ShOS*G^RT_&4nf{{a>FyhMIk#R>_?y&#Q%e~ErXzG9d8NqMgm^h3@ry1S`r7Xk${v^ZbeaJ0e%Zn>FfiCcLi*N2TOSVc8yv@3;PgL{0KUZ=&CV z-74Lx`?%YW%YrkbF;ICo#@h@OJSef)Yb1o+dzB7~T)`Wgd-v7IQ|zvipfNSvllX<) zq|%B|`w}NL92tpsE*W6Q{2b-peXb1o=8_}3SBsq4de*f0?Hj5Y3gbAJnl-Pkrwjpc zwepR70xgKxAVI*A;78D%xxAJ>uu{kF%di^K?zNiO836&crgMVtL$DA;0&lEuFI6F|7L2n2e@{@#UEL-x*)+|};*(7Y>xN2ccmfw?%wmuL0)6X2tyM0Gl@w@g{PddAhYCG*A#@_*L9l^x_ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcb0632637a73d13f2a9b4f69f2119ea9c9eb27c GIT binary patch literal 6104 zcmeHLcUV)|wm%dBl_CR3@d_v+Iw%N8Rmdm;q9Q5+N{bLe86cq~pkYFEEI3LTR0Ktg zNKtA8q#JTAh>A!FArJ%Pk_s3i3+xwiXve$2~wa?z` zL^2@x1gtyc>h222$jSf*!3&T~E3=P9AW_JK2xP3GmDw)9Zoj*S-1M3g@C0Nu8Wo8| z03fZC>H;$0_5Ci@l2_4jJ!R+?jSLBnHarp;9)XHPgd6Tdgh#`rHu7LQyR4`C!{7Aw zMWZ57=+M7v=r8;Gw)R+jBm!mV8XX*-0NSmV4j?6&Wjyk0RGpEr=i;S4mUUJ{%QBO7 znumg8gAwoqxZytz0;~beS4ei*3s2h_8I6oLJQy4uhC(9XhF)-#6tmRhLBKpL4AhSX zdxd2qneUu}J9q!eu>>VDfFIcZp<}(w+4(olvZsabo=(OGBND>k@qh0r7L5A8Bsn@b z%Kw6FIS0VnBf;mSKv2ObY4BwMnPtAL@(SNA9*K^X24XpHD^XWca6?Ci!k4-0KnWO4 z*`HP#u%e-_;(g+XAu+paaNA{?!{d1E}r`MTUTr1@%CkA>b0AtfZv0T1k2JYGw7c zYu2i3sVOU~Y3XQaXlZEZs4Fki_uI;kf9_>e)~;1iRavL1x=vG7RaH~kscNp6sQ-5c zko*}?R{|#xD<`uVkX4tFQuDmi5hhuxWux8eJqDkvz4Vfd{_@S$j{`zQIfZoc73sX31t+No3X>VT{)h*o|XlcK^Z>tzU= zEPjv&5yWlQSY>%3OH+#A`H7ydR$D?o$Nzf6*-HzSuzS{6K?*=|tM!Xs5JaJNsEfA^ z3O@E%2>&$#lfOZb&;Vt*WuNK*1V|xLYaD`{iS4~6GpC{7=wcyBvy~Vx0a!S#HnUoN zJDmf$>8Y-=K~yo;U^HngXGs8Q<+R1QnQAS0X&es;@Q5%_-<+*zWV)35q9Q zjw$)b4-6Ei^CiF~uI0`a?ry=k(cH4}PNmRWj*q*^*OzoU=5bZO?;h@w0C>0gkKeIG zq9=VEJo``Rbo*cId2r>z50f)jMH5h#BITK>faBj{YqELj^EgW2_i20Z6Sz-5u^w}h z;;{#tXI5@7DAq98Wb>yFM&DrS5+Gk3B>{X(G7||avov4i;;^IFGHm;*?)cyTxRf`d z<{$1-*=L=e?&vn|cw3MsLdNVA898-`On6=N@?4f3`V%^ht#>%zXRAk_&(!m{7$o+H zIZbbP$X{3%eQsB1R$9nz?K%3dN*Mgg;43lLYTHu6uNJdYUis4`fHaazKE6-^tIu*4 zdht4}ylnFJ_$g)kPROAvDHEO&Kt-IlNSMSz{qg&VCl@Xm=?9^Jxz!galI{)xuR{V< zF8OMS5Vl!2X$^Y&T6|7TmSeuF zVv4H7hpbww(Jh4fm%n@5u^T;;;P+ZVlt)uA*0lJw0z*vafARGduMTn@64P ze4e^NBhknGshsDdgS^D?))%zWk}2z_n0}!t59jD|+pbVI^w#ExAKW+IFb~DLRbWHI zX-}GOvP%cEdxE@e`e+{~VZyI3?=lDY7+h=D6vWZZh~*jdwq+};=6XeEO?r|9;M-gOhcH{#8);iBU5 z)h9D8I_Sn%1Am6;e2v497PQd%(}*nI!lDd>x@9qDd|55s59^z9y)^7Dg~6OkfJMZfq;y9IAO zH!Y4qgHLam+myLy`@EHSd%~Lbof%pj*S(gxl{OFR53q}FxS!hpJJNL@(Q6@7csHt` zMbh){(i^}K89_>I=Er=lHQ4Kc7h^I*5*>Jt8}Aj1tvZ^^JyHMGu=dfTI-+ z`n*rWeI@t`j{UiCgMOMxEjwF;6!}NZtGU$0l(MToB$Wnr;)_3)hfXOqp5NkvA?^1S zK?U2@&+2`{5Im{}xZ}gu1Ut=kl(k#MRH_#AtGN$h12bv}ULw5>3AK5AY}5J%_NA8f z`kxs;aE^ayr*a`hA``j8j;3fk`TkH-m34&si!)9TYdHHERaIU&exPp*VN4U_;{ zeB9*EWlvKodj;0I9&+02pPADf9a=L)*)oZH^1NyT%#fr~FOJA@F!OE5x~T|EK@-i< zQD@4WgQ+QM`*t8Fl1I=k(f=*~rmLBg^+JBK(VB}H-CY!s6@oeqDIQLCbj9G`<1BvT z|AOo`+j;tV&TyudPS59uPp_R&p}(|`XKyc^si>77Vv<}C%Z7KE8;48?fcUANSO z6JnQWfr~sVk?jKVE3`ml{E=Gq>x}^ehMrc#AzH3zH4#NbX=Z_EKsMcjRm^%&l(V#% zupb#{9=K`?>9ZC_1H-`3w;M|UrSk4P>S5|Wck>1Jpi3jo>6xnf5s}+!Me{>BEdg4U zMX@89lEIbQZfEut5Ec%c@ z2w40X0>^*|@EHZRgykn`QKj)8Gz^2+3hG;p z!eoQKd>1V7kpj=QScZuZth-Ryt2Ofm-v&txh$d;O7T23%nk#7V_Qi%UP#<3pdf&-q z*EF1;Y^thDPu6cw4xn12^KolshRs>_$}is}9erP%dvWc?M$XG9LTiqdSy$~RY%!q% zo5xK=tC3T3#O!VHhc!)flF!V>vP6r*;LTkpp?~k~$M!&mPGcW7A*OMmWC=2O|8nla z*cD&qZ43$in6znNq}-Fi4-|y9)^XGPkb+O_Bft16HMQHg7JpcJA`M0qSq&q^V4krprkXvU~&eJ8@s+IfAJQ#|{n8rDgGidi@Qhd55 zXA<}VPh~P1hC%!p*cqRIc zs9WNG$gn}kka^rcOKyO58(pXc9}%?iI&5t>4%l^B_nf&tqO5&Utb}_G9%T~1T>@w? zjRjEN?#Kf-HdAg?YAQGKCf7jH{XsCzjb5zUm}C&xnvS=AS=FNbEpARFq4|dU7M{tU z-#5rXHaPrF_5Ur(ypnLEm-%tWnUr2?%*W9YzdI7ZZ*Fe3c9zxl`sGHy{?R^zpPn{T zEjYyUqH-hSY+GtAMHF~T0t`i|ZyAJLx|+4#1=qRPSsY(E%!C9qrUG8rv_Uo)r1WxZyUOWPOQL&#L-^C zeF9(Gtyf@hBxzq8T^m+CjI2B}&ihl+?Oh`~BC9^!bag^>9ZCy$79Ef??i&LxR`*P1 z#rK#Rcic(EUm+un+-Z=K9IdMdE} z{7-$TtzR-HazBgI==gy%mOS;{9o z#hl`NCKqPPPd%3jqAFJ;r8U}Np)KUi!Y<&38fzA?-$ z7T21v!jHY6hgIy2s;uMaQeZWy*V@85%Ft(>4fOf!M}6Q$;gP02yif6}dA`gKa!yaM zK^8rE;nAjnx)aQFtV8NhkWS2|G`PyEm=>&JJ)xJF%64lSdYf{1Tt3wd|sao@nNzYjhI)~Z!6a}dED|?Ij!FHn(7UU($W)u=%)y4AGHuH<^)KT-C5|5#?f_H4G}Wp#I5i^mIb* z`wN0L!)l%o8qUB%8PHEDJ$(P2?Kr3A4;OgJ%+{o#O2_?6w_zyuJ(3$+oSp4N=;07a z5op_J-j8qE%F;+=2|#PHz?yq*Yr^|D4W-CI;W|%`cbhWrtcSs-&sAO!Hh8mQ-gi~E z-7j&TY2)EoDf7w$o9vHSm`rW8%;b0?zh=AMw>PF(F|DAv0#by{GgvPq=6DwTsC-|d z`1;nn_=Lv^fh636rLJ&+=VZSdl#Z|Fv_+W-U33SYPJS8iXOPH^8!MYD=WSX}O+x5_ zNxZ%%T^aG}X%$(??wSFwZnz)1q`f8k?GETtV@=9MNiX;zfkt-((G%XPAmba;p9cs! zg)sgHx9JGs5k?Kx@umP$+qIxJyd(j*qb0ocP$DX>qcb)`SzE9B4om`&f*;REBi3-- zS-OEHyWnH%Z}>$u=P3v(O9lSvH;?m&T{;EP;QMslbR>tkdUCSSQ(xv~Q2A{K!Yt+Z z4EHSFAHi6(YjQMKRFi#wI55__f4=#}Bu1@__08?SYjkn&4*w5{zq?&vVX*CRAlkViy59m;|)p3^TzaG z{qpATJY=$&#uht~m z-;T3ov`muR@*iaFp%r8T3-2q)h zbBy9{_J|C+^4(r2SBzU^6bv)+K}!c=rB-*pKRNRtd=p{NXS>RVNV7VsL;v(BbKD|3IAmody}?wr9fuwoHuaz`dO5%#&7Syg5AF~*6@(<1J= zJ@vNo4XdDF3OzXq_({l=H1jTQEql_6t|YmZ?iksN|78sP!{)RwXQKpoMmoB2R5JJ% DXu=%T literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_BillingAndCollection_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c616eb87a7202a402c9e6a421922d6867c698e37 GIT binary patch literal 5168 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 Z(+CQukEVRkt%%^XzhpGCv#x^!zXDq_0igf@ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_GeneralLedger_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_GeneralLedger_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a71bc1df67c70bba023a84bd3def5cfe8fb098d4 GIT binary patch literal 5638 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 a8N9KnjzWoy#z+zOaTanU4>Dl@KmRL?SurvI literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_HumanResourceManagement.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_HumanResourceManagement.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d39391ac70d3ff5445ac7f1b7c9271aa0a5cf2ca GIT binary patch literal 2426 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 Qg2+J9=8qZMX>j*{0GC%@!vFvP literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_HumanResourceManagement_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_HumanResourceManagement_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1df0496aa7a7f6896416367561af2f501ef2c202 GIT binary patch literal 6025 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 bf4=0~v*mJto$g^N^Aft8lQ(j7K=Af&J$%;H literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryAccounting_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryAccounting_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1721bbd3b2fe20ca3036d122850cb1385a5ab57 GIT binary patch literal 5904 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40c13112effd7debcc9e05cb0f3dd67ce2c73a07 GIT binary patch literal 2509 zcmbW$c{J2}9|!Q?m@#9G8Ea!VG?qzOCY0eu6xu9txHAxq9w%?sHD(Jm);m^FHVM*XMIS-_PrO&zINF8w12`tgNj7 z&`vNQ3;^&30SiC?3WY)W1z<3kprC+|h@_~9u&~H(goK!+0#Zp)0Vyx9tfqrjR>h#? z4W zoFAd0dl)KV=MGc7EU6cjS}1@rfAU(&zI#bc-{VTOppdkT>~5s`9<+w0mI3yFp^@=H zizAj+M~_+CI5^^+oLva6o?gFt`}q3#2Zvk@C544wi}@`!F8((8PFni!8JSu4?q@$J zDt=f}T2@~1wB}ju^Sb&M4K1y0?Qf`WY41MveClQN^$#$|Cs>nH)1SZ0%r396zpbvV zZ)|@5;Q|5RzgU0EesaNgTzn7+7y|p@0`ZY{4j2yMSJ8zc4%@-pFH5NEMF~inrxreW zEr`;$Uy|~;(k&#dW-zY4{DbyS*?$L%{=Z~@!~X4J0wQ40&f|gMfEhqvMw4|6&XjDD z6Z7*kVt9bC^r=O|siSQ{t90)AYPD%~T_Qd+9yjpCZ0U&?mwnSQvZXzJi@xbx;QTPG zZv5-zjmmc6qNdD(hrT7B-s$*6rg~c%Lnfc^VkIu%Bz2XYu-fLiX=&VN=gYL8)^RWd zv&PX3rN3t3vnnD?`a;U86Um}&YtG#RCj$KGn8M=I-LzWg1ye^&H3U_*ODc#fRZ^T) zGiY7zr%Sn(c+K@}_*0WBLk$ZnSsnpm*xihyz1ci2alI!rp1>VEr(m$0N)8u^ee&$Z zp_3$tkXWb7Es6Hi=S~wco5ww9+tZvf9uS*=Ue8&f3^vDS=QXZ%w_h(E#xU#F^gD!) zNy|}EGS(lY8KbYn$tzu~vtN=f^7JENo2K&1)<`Wa(<85JR@(IuMOU5?S2E=+M53u+ zTz32E8_q-0-ladSPYa8&%4%f}kEG)0Rc(y-2U5s>P&wkr?yLoPKd$wk&xurpj9FhW$40uHI*upkty!SFa(o^#$sa9Z^ z{rlMRTvWPSuYY&ZseIcf+0H)M$+g48W`x;u9x%R_2aui9d4M3Sp9f5_NCVuilr^jQ z{xxcoA8|zd1BEN?>&yVDF+Mle#Vt%*Bh?)Y_FRg;ei6`aXD1ucP^m7#9FyJ$F~=I> zhy=>&nYUl(7x+#f;_vePMn*Yl99GkdlULjh&x^njZCpb*4%;yAq@P9QY_uIvQcd z*h>i+ob%+Ldj2pZ^LaIrwrfTnEZg=rp2&BpRr@uKesquMVAr?)o6ESY6gOrIbHr9m zm$i(Tt5T`=tiJ`zVnYM3Enuj9=Cf5Z;VOnyXW&!DlZlv$f`TLn7KjjkGKfbK}#c0l@+C&I}oCovQ8R zl~*hL(Q~M&fG@?#)w1=CQ zx)r9N@{LC}A}4IIeH?r>(VjUtBXhBDy8F?D1g_ITaKh34-B+tKvLKhG8!#LX5PFH{ z?sc#_*HEx#%L9sy2h5hL1xP;H>sOpfoifDv!jcUzzKLzxjms>kaX^}Hmk-ws=T7TR zReobl8@U}tXOpQyGxhC*i(+A)gBEqLa&rk=FHAae?zP+`bbP@3FSAdvkQSajH&uB+b&847ipt$7kjWGpj`_+`O7T8S9P9q^3Kdy*teVlUF^mx&2@rf zL&z}Sv^heo4UGjq0;t%}22N&ng(U^IH}5muHrD4e4W&m1#0~Q%_Visg$@lU>Dcb5l zr&f)3E5!QFDj{U-d=VqGd7p!vYaK(gGI3Ki?@jXdyuNj=J z&)`^0BoOzBS_B7Xiu=P4s^A<0P})BJGD^PhY} zIhLL8KXy>71Kb0G)Z_0hZ;-Dt?hfe={Q~aTj4{NKq&?@->CU|o-d6);2t9iq4=AiX zWm7~%RM6b^sAluu4N|+%b3ERRWhs?p{mzw^gyIeS34WWQ<^TWy literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f66d2b264fb5f15ab01928e2c3a9ed1948a32727 GIT binary patch literal 6079 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 ao8$4XR-0x;<*(orp~>E!BXMLg`#%6SY7J%p literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_InventoryManagement_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da418417a18d7dd857263a38f44682ace2dd854b GIT binary patch literal 5224 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 Za&O`nh8A<`J=;EI=zMl^$}Rv0{u5xiri}mq literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_OperationAndMaintainance_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_OperationAndMaintainance_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..976890f8dd236b39539f3e5bd1f8f0b3ae1991ec GIT binary patch literal 5824 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 naShk9LH&decnte7$-2U2Bfj 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 B;7kAj literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PurchaseManagement_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_PurchaseManagement_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec58fb3ccea26c3252898f7241eaafc0065df458 GIT binary patch literal 5360 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8d2b94a68590b6e4b0cb2b53896e630aa7482b1 GIT binary patch literal 2503 zcmbW0c{J2*8^?cRh8c`%?E5lfDcKFO8)fY&k+PIzoscY%?P0Q&vVZa z8I4^Sl!9u`+F|tN9H(i$kNop6aej) z0!RS>m{j060Api=va!OTP$)Y)j04Wg1?S|13vu%t~K!FAQzXQnv|%N+W%b4w*UeLXae3~5E5WP zfWQb4lLSZr0EqSHYe693uL7}vA*^gr7&`~&{s7?+zybn;Ss-9mRtRK&I&xnJAP81& zDOC&`kF^UF8NjO+ot6hf8CNy)+4OyrR(B1IVdvl%5EK%Yk(E1qL>{f7sdY?S=lBT| zQ!{f5%d@uU&fD2LIJ&uecw(=3d0!6-z7Y}{79JZHf9rO_oxADxGah6<%*uZBEWe=e zkD}s|((0O80q}KQ3w)T$x0m|Ue@W)Rh6O&WZUuS0L<`-yd>l>Tjx3+)m z{Nw@w;9ppOll_AWvCqWBjXb}^=A~I$;KOy# zYCD~h^~0_PZ7nZ&Gs?%GAgOQHn*Cr*Anx(0Dk9|t469b%vHC{# zcEB3FP&M;vP_q=KJAzLYQ7~CZ>FLHhoi&<=_qEZaJIVxGr7l+(*85|c#r!cFsJp9l z?Qve=YlUIuoDN!{fsr;ttWV;qaJ@ntNo-J`9G15MFONtHpP{P^$<(D_a0U781<6jx z^yz#--4z)lW3{K5@{QlfKEC(L`$7`kEYj-kE?;OF$-T9quM{B?>AD~n+(?N_!w}Y3 zJkH3P8#%Q9uyx<6s39Au5u@qqg6U$Gvs;e%YU0*q={i^G1m8^Au4{QBD-))+6ZLi) zMcc9wCtur$P%r3Xpts!zeX$oxkX8ye&%1*{)DM`F&p~GOYtB30b|g8vjwL1=7zaHV z92%81a3QvR_BR45Fp}e;6s6!UrTEyoFfUNEH2$>%znCKL zvwC|=>pU?elSq6NoT0;4zB$^A_iD-Jboq3`Blb|4W%1!?c17!=mN>tIGL-O{T>Xua z&*8rvfs{+b?Xd=~C7;dR13t*d9B`gy*?Cm6U>NF0SGX$igOv$%)i8nmbm_n2rkxv@ zKnfF>8jPQ`Lg3z=K;t%?_f@P{>O2!z)cS$H6crUK)O$MMJUIqyfPC4y^1a*GLD$#S008?D8m5_<*d7OQ*%{HH(!*u9k zyjY;=^3ChD*!V&v_f00C>fOVCceT-M+<}KQCS~qg*|)JQr8qK9=o&_lJZxd5RCtPg zdej^kpCwel1P%})!U%H}E9hP4CD}NqcJxP^YVLCxq#fJ^_K9#p|oO%fM)mYHELk0kvwKG2Bvp2Y?`B4Pnf1|A!n^oqj8H|7CLqz zRO5RF0=_o3-=tMIKtoQv;ux2T%q0iIPRywyev zwkL);C9>m1v{x(7zCi`3<6d9F<%Vw+89y=2>7qQ+oimV*A85=DGM{eH0benlzNl85 z_@qL>Yc@B_eY#lkX`8~&jgDmkl5g-r`}-EbFfd%x8f5}x9BpAjebsF0Ol43*6tY40 z#kT!ey)(U2;@dqOnanWRZQ5RC=vx|~F3;{NGdyy)&Gu8AVgjhhFZ2*5AYQ>k%cm7> zTIx3)YS8@{g(|aq6#QYJ!Ua#ZAP(f?`}dw@2tK~C`qDbBCRQZ>095a~!WW+IK}vt` zGmI#XTDjcY;$J7ZgBewB;uzOxvvj}ER^ zG?$J_8N-fgv+AaV&WJfr^6qqO*IE^sCQq^vge*=g4uKyCqGn}`ggVyKf%%JOQ>Iqs zGBNp78lwTKu1WWqRGsYQ8S}w;>`K*t%K8oO*F9@$|S}T)KEq+#oN50S^=}N8(-`nqMc3PchIR9!M w4#_hC6$fY*B`n#5H`4XRI%{fJvRM|z+U!3lLV`)QLDpw&0`E6w^)WyF3rN$M6aWAK literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4faec3eaf0bfcfea22ce5c4889fa9674d70a040 GIT binary patch literal 7119 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 AZvX%Q literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_SystemAdministration_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ff7cd9596054d5c2e622c080a7ea5256ff8f91d GIT binary patch literal 5126 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_next.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_next.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40a022a5ba5fbe871502e4f92f90b1a893785781 GIT binary patch literal 3064 zcmcIl3s{Wl9)G{N*G!jDnF*UgiIsMBqu3pp?m46@vD&HmrWwXe&4t>PK@n?dOQf_? zA*@9Sxojv2Q-^9pYEh9mE?tzA<~#2~so4FgeyOrlbXWl{je6psZ6e1_h5 z6v>F~wUFa2kwx+)oVns?ky0#;=D16vB`BUlf@-CUvmEgu&RwDuD^-Hw5yWnKfLtt9 za=aw`Xa&qOzzg7l=(~N zPbQJcIX--eP$`q5oFG(*W5zrBfG>nX7%zb%MVEvOS#mS8-dh}?2La)5d>7-avrPS9 z(RJz@>J%*JOBF&?{&A-mxaxl@#CBNa|KQW@0gd9V5(`j#s&F^)SpdRpy#oCjTN#A} z&gIBfqH_6AAijfo-zZ9uL>#5h#!KjDkGlb2LA8Qv03v}3D1j72Kt(|u{MPk><8XPm zE4UTU#4G%b=;pv=`to?35UG+M9gPa!9Ry_PjF_|L^5fxB`+9J^Q7J0tE8$kp;VbZ? zhR+1i)nHi6LsxOa#8QE5m4Xv2Qmu%T^2HJWh^O%wsP7Oh0f6QK?YjXRAlRSXofp8^ zT_B4@fnY73i#38Iz@X7+1~i6&0fR|5q%$o{7z`5&wwalQnHihO(85QmWCPHK)*dK5K2-szW3sI60oj}02 z5Fr(i$P_Bgz>p5F_i!fy2*h_zQ-F{VB7sC8QzLoPOd@IAh-qZ^1$?vdvFjWt z=Bc@bb0%0@1YU}Cbds;H;ZbeUf;yTzqZG~~^NJEDdTb9Cc$VcWU0AgtEoj$?r1Cmd zYqyte`o0atJ1+nJ@YVj474?sLLWL_g?mTen%B{BE>E2<{tCBMcPFLQ3{F(^}1c;WT z!$hT!oplh#O&dXi2x7;Zksa2hn&SvA1=e&pT1Pg^*QfDON>UuH(7re4BsP9+%?LYN6e2U4;_MaC$C=Z%D$jK%%zo|GhJlEvgW=rJ-8UP1<`wjW zg)AO3K>Pl|%w4@&Mf&-sd`(wC+c;tsx<}MJgTFdt(m$8(DzC3-kKCHQ(Ym8DdCTU1 zxrN=@lU(04rTm(>q|<*eg2Z3sX8NJ>bWuJ2W+3R>eutms&8c- z+KT}fjpV=s?x84Yfi^e(JHORSU$UN-lwjacx4JsYIlMluw6IRQKfyomk}SBte4b)4 zwU$-y8GXHaXKAHcc>VTXZ{NWkWA_g3Xs@&z;O1L#tNLehkC#UKeyxscO&L4(vu*VI zTM7)RM&e)$U=4bP8aFBwl`G)i6(>rzB8IONM~Wq4WjseL70U2~9s(6I1pp?%9SDF7 zk`)R#AOMKqw-TyC_XWurnEg!z2e<%x@FiYQ-*LqmqCo)Cs!pR$AgH$tUSjTlC3Q&aZ;%n|TX zec%WZKynNMs^`f`B28AP|Tjdxvub0U_cXL7@`iKu{nAB9jEjkR;p}P|Wy{ zB+MOBbEy{kJKF3xGP1*3zP{6j=M6W#9dfb@=S{yHES|oI)g%As;G>rsC91fNMr?XhYZTLoao{?%2uEZnckIuqI}Ziy4LQb^nJy{ zA$xtqZy(d!FwFk}@+UMjJ@f7TM;NeMRH-`h$FFCrDyFs$1o~VIPI5o9cfkAEvFAde z(X1}b#_^gI*G*gOMnt^1nq%Y9cKn<3pU3rg<`s=_t7|zr-=5Zbpt&Ir&v)4y`3UVeE~R!?cYe zO)7e3?Ok{wZ<=7hb)jlX1Xq+1=9%H0Gf!l9e+{8oD9l{m@Pm_OZLjfBc2UfYzMt0| zvrJzph}c;ZZ^@nf9PM^&bT_MZU4(L6`wn$z>k=#iFM!R-aJK+CMt&#>LCbWORIvIFR<(kZ>!Rj2NiyzVQ zv(!JcF>q}#;#pixi+|aL7ByD$lDjKQ{gZ0!RDbkwrd?i*t!jR#R&dHQD|y|vFhR4k zYwV;Z?d@k>nykdf)&5+$A5 zex1u7^UaKi*&SUOePPM{CVgQ~(|?WZPx-ws4g-qz4h--sowTL)=he@4_o}gme*=tf BM$iBN literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_next_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_next_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7d9abdd0b2c0c2be3ad4ad6fa186cef2281a7a3 GIT binary patch literal 3115 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_prev.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_prev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc717f5f1f6c090aea1905f9160cb9acaf7d1fb5 GIT binary patch literal 3043 zcmcIl2UJt%9{+AONf-$r;PXI~p;i%<;e?2cpkm8Lt;h=`Kx{}L!vR7ZIH4*y5LBYz zq*V$?sYOLWzyVK&b>QFuEdnZrr4S4EeK$b`Py71Ld8hw-{@=a%&)>IxK_8+21_nz# zmv{mMhX6150Q5E4$0tfG6HBASF)aHTGr`=&OP1qbQ~mf-u~04(h(!R30Tv4o_>8=< zD1xr3=L!}_C=TNaS>A%kD49SM$#NA%3i((L0jjws&W!mf&Q&NA$mG1S5%^x3k3=An zu{?#`NGZ(I!3to4Xz&oIdT!#FjS{SfCPwSh_$C_|E#<~=MSLlrHMR(#!gQ_RG_&eA zaT5#05|$TN7$Fmj_$+_E48x3d^a6Gf5ini|N0KH98L^zq$oy!T4Lt~01;-CDjv9;Y zCyS=jz(}V630EYI;7dk#ih-;Chk|d1RsIH_W)CPNj$FXwV^f8@iOmAw7HJh|*VtS) z(9fGCUdNY6Mgp-N)cVGg{Dp#WZ8layJA2FxfC*G{s5&4F$bk%qKq!a-62J%Rp!LHJ zz|W5|+J(yAdw+5_cAdFXBtMGPu=? zxl-(?VKYHAHR#4)^4GJ11tOk!y_6LYC65jhaRovE@VQtF)DMVO13+2!T#Q$s^zLqk&rT_Yne?T^n# zM3+X>)zdZ5(=#yA)6+A;20bHf3gdq%fL;d-3S3fiJTeL37zmz$pwHj};Lw{08=@p4 z8i9Z@!9yw_5J_Z;4wVM4_gE(aaQF{S1Aq_^JdS`Pl1UUIo^B7F3_M{Xa~9FnmuomF zcFSy%QR>P3#gUFqN4`F#92%NL=Zd4kT`owsu70ZhF_h^-YTqFvNg@k-#A?A&}~h^0FZ4Q z%jzMB921^Lpp%T>@)5$HBbfXN0@?`Zcuh|RV1vFc$7#xY>UaHOYI$&@OWi+f_mEWV zm&zIx)UUK?os--2ZSuZ`m+`rIQ_@$p9eMtsy|Y*$kTwM?+V8fWc$K+#p{aj z>DI}I-&NTi&9v#9@Ka05w2S`c^H5ODWs+7eTx|TlDgV`Z6qq_Qt6s-PpL4%^{l3Eb z#D%8D1okV7OV?`eRf8BElAHqK??hapjWim<Og^C;;B~Wbh+YthZp&0R{CDcUF))7bJ3gi zZ>L{~vm0FSRxx1l_<4Fyf<8w)RQOi0Y`C~1FN5jr^5SxyNlBv13yYx{RvjVJhQC1{ zYi{zy@j-lv6#hZ6!o|@sT$vzDAQZ?pvIL?CF?O^Ap+ar|Kp(gQ9uPx%;sX}&0a5T< z234y0f^-ZF|003~oWKk)6Dz3YLlS+dj|Ye4E9YV@p&gL59D@M#6DweLEh~@+1Okyj zA`(eDB&akBiA15%sZ<)3N;l9_z{u-!KG6O~$YioEUDwpW!1VuS1$d1t|ILN*3} zG${ZA5sxDwV1yNLIQ(euSXRIxc#IWDWIP;jQUr%*5C9RLNm4c1CGtOVW{kUWBi}_1et&Q80 znfvpd#!j`CMesx-WHtf?kB|OHWUfSCh?o?+C3W`6e3j9Sx@OD8#(rUvZhI>Sx2@yS z{H?RY3(CmSddC*`Z6*N+AZMDI**JNOpUjg5&gsc1ET1y9p|v;Z;HgVvA$yKuw9$k% z2J?S`{2B3dv#7^6cS_pQmESaFq2RFE!ST?z2;tSG|@FxIFN0UY5M$YDmrDFPhNW zbQJt+`QSx$xp%{*DK=@1O@6l4)u~zL-^aeH?Lh(0^rGze?xb6Hd}em%3^gV9anz!c z!1>=@vuMB4+tWVmw`14KV6j-fD$af)LvicI>R%JizKw63P+*@|!x_pA?TWb^7ZP-g zYQC?kH)eBiO2qMf2Meqxi#mRs)=E zJ1?-&x-R7rb?9$h=T8iA?isFp(oyJa+jcc;L0Dm|!^}Icj`2??-mb1@-qJ05qqZd} z*`3P$C`eyE&FS00v*F^ki8tp+S3Wf;?M{u@Q>rp6smOh}@60?!eNE-8@_1EFpZ;yT z+qNz%X8iteaC_v18~+HRajq5>7KJ~Z$t)>;uVY!WrXX&&*RiLYLMtlgPDt5g*^yw3 ng86R-;)k8t<)wir*fV^(pZ(Ra`%q{-3bGQFgY%MZqmTas-F`g? literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_prev_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_dtl_prev_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d22d145fdd82db37bcb86dc044e2bf104b4e217 GIT binary patch literal 3100 zcmcIl2~<;O7XDv$AV4A@NF4}@Qfu7^i%V@pcB+7EN>wl+2}EN8SwLzbMX>1L42MN2 zilQQ}=TK!4MQ2bV#R?YL+&v@2f>312R~ z?_yl_mIWUy`bwh{mBJ)!k(AGqOs*6USN(Sd{~TudKlt=}Kq2|c1zaB1D%?%13xHc? zP+(YNJJaxxH4JegPa>HJ#CFi&vn7QJ1u=%%JE76gJ>~|$8mb*sQ@{aoAOj*04dQ_W z@IWH`VuKiH)7OLJRC%{Mm=()_W%?7*_d=)pdwMd$MKX45ERXx{Kp+!m#nO5WI~gvy zzZb)oC*n!iGPvcd*;4GtVI3j*98{}7UJ_%yK*SX%Nf}{r^6eZETOb4ge+i3$`VP@1 z04QG2UIc6af=<0de(>A?v>%vxaK#)R;C_eAMIV6-K&4P9Mii=%5tVLYY(lp(r&7(W zY%DCSEG%s3RJ}~R3_m^|5mOTrQ!`VVnHkN}%*@OZ8_X;XQ|SLq0`wZ7Q{a-?;gMMY zM@R5<1bqS*0EgZ{SP&%<(F+8O2_8}cfk+}#jEqg-HJ|E401p4oNdpK0!Q%)xBAG-X z;;BsNq~i$=)0PlD*0C*SC8Rl%EOU-sSUua(D&#tc=_1+H;z^#98#>rI6eD$=e!M(= zu2)_d*SoGn=4Ra*-o<-Wk)dpptA>4?@=xrp+<&9}*+^+seaElr2!7)C2Tor6>2CLH zci;7~Ntp$wsvGY0yrBae4x%OKF_B3`S3LxWCDRBHLBcExqH|h~C5GU7NXsD8k<%&J zmFpR56(e;SnnS_>kmtJAwL%aj)?Dv!HyN+%J%m3-;Pe3k`Vdg@`kHjW0wevd^NWAc zyitqIl0VVEaQI)YO|k-Q zH2+B%Zos6nT{qCJXbt60Q#OvFAnA6~&}Lttjap*gdVA^6EmoIHa+z?;-Y=XF%QALk z>(cFiTUoD&)_5#XZ>u?Q)lYh@-R$MP$JGkK2nx=pwvKszSzpmU<~8Ov+8?!6U8PRT z62zN+qE#v%)m69s6so9ah1LuXc)wj!VM9|KwB`&*6;HJhj|&?t2Aej$L=Gl2GBdUN zUim^SM=Qw7J};_#n{M2hQBFaDG^?dvhez-9rBvSad#fTAak7vsS9Dz_EOJ)c}d@**= z!=XZ^0Kgo004@+i(&7OI2nKQRTLx9C|AHh9EdC^d0o=esuoz2dU`Y}+AlTcNu};p$ zNgiI!z zQcZ1WG@JjKBjBa_z!3z<5yvt3lPLlahc>K zZTcpv_;0BSbNj01r(==PyB99BRVOWTLjiiHK=I4k|7KzL#cmX)U#Y0_I&-|)rMPny6C#u^qc2)#DOa_{hZ!z z8%)&kQLu4ovEYhD^{aqLrcdM$3RVP--B+B*E@SoDF{|X8k9zDQXJ%?kI+iJvPTHQa z>^_HDH-5EOYyVfL_Za!*(*tOyI7}%D@J7@P>L{m@bfroK$@8r1PIn_4u2o-G_SiF3 zqbfXGm%wUzla%GuezLu*cx?n(+iiU@?Sb#uKu2V4=kQkfo$))3<1>SHcG{WQRl-hN z`il!~qkru`b5!fwY!UgWw_@djo~uVza4Hg97THH2Zd@@vz6j0GbwZZkM>>?6damyX?&?T)l#`?JZC(=?Ns%Z z;n;4gBbTXMn+0~7yR9ABX}H)#`#yiWt@4WIWqF6PvPVZV$r}EPZ}GjST3EwnD9Ef; gwT-V(N00v47aaOgs^9TP)x16e}?H#bn~hlr1A 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_first_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_first_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a501671f47e379c3bcc9aad5593d638b5d4bc220 GIT binary patch literal 2876 zcmeHIdsIw$9RJ;U^_r#`y*#&@BF9MyB~~*Mjd7wxp4r@H?o6X;Zf5Qv$q;~INTu*2Wq?*tIC_*|GAOL1r zo^%w)zIW&xRH`9jF%24~R>hHOtqKj+sx&yA!-4u86W6EL=eS@EsU{7Io)PROy9k|H zOQN9~Or?i;Hgo}65C#v&RuDoYCh6!NOpL|F_`HNpQ?Nu#i|cW;XAxiv(=EbcX7%1R zgwPN=bTXzzjjK5tNxF|eh#br4?boOta(y{T7lD31wyEBWmw}a3M^~iv06;60f2pnj)B^Z2-@rv(4Gr=1BB{v zi{QDL4EO9c5CkiTSR5!;(YaJ5SPS^p*48%Gd>b3S$j;VI}tbaZxf>@DIm z()F->{C!01?dcK_^0+tA2ix8?BE&!V< zLL?9+7hwbfriBejfy3olS=-p!!HeG0i2xS6+bIMH2Vt`~EUp#Ln#<;ogiaBg-R_5LpVPpug|aobGAq=Exv zfa~3;I{e+~wS{Gd$4#MLKOg+@m+eLOo-`lIy?X!Y`&r5*>vkMIbFI9-Wwdm*YU%on z?6buWp0$bqiv`hg7)(|?u0I38-LDr1B3L}okvn4bRwo+4mB>49Mta6R(xs+{%y5?L zN4*`yqXAeA_Aj^#K^$;ZOo|F1@w!hC{vCnWX9(19fX`-nihu+(I7i>iUY+VSv}I=U zsJ-FWRUPVA0nMfCmSufh#$)3^m^ONrgDmgpn1`+lE}naxT-EUUW8;nLb_$qYF7sV--0WkPoNqSyMZRil8zAvL_*9-%7Er-% z-Q75Kv)q()#;-(@@nKU^=9aW^EAOesZ9QM|vE0qrnLOX2$Ro?seWQ3+_^O-6svY4I zC6`mUp6T=KpHa7~%_X<3<`p`hx+NWa)Zo%**tX`JlLwmII#c3rp1Lr*T)g9P%cg$U zs#6vX`eXCcxwDUypNN)ebj5pw;@e(sF;$DgD?7%n$Z^f-P~_(fDK5zK4mz}IcV=C6 zp|&w%GzG*yro$wEQ&pz;K>6Z5KPheWN3SKM-b$);sm{%t|H7R7Qto}aGxde(!FAu3 zV;4<^_M*T`Cz3Z%z^|~Oy{7g=+vfYmQ3c{xjUnqUbu5do?~HFYy>!bzm@b=>AfX;w zSj@feEL^9Dzcf@%BqU;_I##VwlS!yrt0d?v5Cs)-2mlTs7$^V%2@MA*hyZc$orJ1q z-XMVk$1g;nAOQG);dDVuZytY2#3U&?-GI?8p&eK;90U7(V~=m_L9@rKufraCX%~A) zvp@JIP~dyBLWA$A2$%1_UsQ6n^q6^?_xbhJQETEil*R9AzY(4EV&|N5OP6ahmWOj+ z->;oiD{U2L)DI0Z9#N1V^S5nJGlo?zbf}5H6cCiwQD0H)-5FEoSFf88__lp|=DW~m zzD;vdDA3jrEfJ-y*s^Yj85gt1P(U{~NJs&s*)v@hH@fy~QV7mah>50<3)z8Z6D#xX z#T%RIUYUvUzuvfB_%cW};9U8_jIo=P72d6TPbO5(&&|)u&Obb&MDpAxt7FABV=n%* z{X~uX)dqf*v@OkzsA=gimafccJ1lCAS>E5jF+Qrv=x>gB@6fbS=DB@c8TIf_ZZzP; literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_first_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_first_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e56bf57c2052542c1a84b71767c87113497ec5e GIT binary patch literal 2493 zcmeHIdrVVT82@f>TUuI5FKq|I#9RR(Jmz=^Zj;27@}6@DRLC}`xAeB$t=tRkEeM-a zz=_F{B|LPG?2m!EMNQ1yKoeZ1IETxE3hD&i(1A`Jkp&fo3j`o9|BS8VL1EdYbdF1~F)n&3=PVaF-btHzr;Eita>R2byC*|t?948a z6TSA?7UT_0ft%w+I@`rKJ;+au17IQ~Jn}%DMX0QG;~bKWUnS{c^u~OqlHpkoOV17h zfymuYGHF*gLoI?!aMQVr%OMIpOBb;s#*8!O!qW~1vUj0TDLD~SlJ*Zjx-Usa8UkKM zS@bvsh>=FEUOiYoERn#MEsuhAw4lQPJ}<=^U14 z-HeD1J%jP!ONaMFNHMggWo!*y!tr*Y#zPmEdn;@_!?^%RBep?2jR?s!c2uj|5C(*A zRu`drlZ(#mH_(~wf{g|HdhF}_5jKEUrBbO?TD4kBX#zErDOjrwHia1sCW9f2(n>Tn z`9B^Wi6D(8NEf8n>GVdOPG`h}&ggfc{!IYiL7-Hqq>&^M0WyjpDZ)353PAb}6H5?E z1tAdvjEO{#f?S~tP^kkosL^LD36PP~N<9#Af|SW+iU6fbL26Twk|O2vLXs5b<%}Vs zsy(Ev)E%bzSl)e7t zhHp-KFWktEY1{Tr=jOwwE>3Rm`u2xkZmw`tZ`|_f-rm!fZY|0wan>}w|JlAHgO`7& zKqf3#~ z|GKd)j^Jhcca*+Xp{q(BUAc2l`p3@&4QR#3P`6b2ryQcO;wR~BJIV9a%aNv_s z+vHD8RCn*`+?x8=cin7^=&PQ5H$LXA%ry;h=Z@bQUH!daJrZ_hI4`R0>Px=i;acUb4ioXnAkV*G(S`u6=vN2U*_O*y}38j*cUSxc<`GvATV)c!PU) z@8Wl#-lD(N0yUR~_|=0BVQ9Q>Tk+Mj=9SDJ7n@7Z-3uQ+I(cBk)YfWCYDn$;?%3Y# zQ7!q^F}^cW&&&&7!MZ)@r$Cnp6_t$0**F&`*3umB5b!0kB1T;Z5DaG2_yT$oSfHT* z%F$Xx?2%UJ2?WCHoqV%hhFYwa7rYH0I5q+zQ_Idxc?sNzw>un z`g(pH^u}wBwjYar^@Xk#F|AGJ{YIwl;r0t(GuGbRUzJqHTQ&`sy%DweV3+kyPqSlj pUDoE-?uc}=NpRk)N@N%9yg&?ex8%hRo&UeuuQl#$n?K>1zW`*W{zd=* literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5a16271703f13de5e6ce7eb43749644eb18a12c GIT binary patch literal 2789 zcmeHIeM}Q)7=N!VZK0)5T0Vvdry!UGL_uV8GYk<51{C>LXY|@0rQx`P>lH@SIlzr& zZW2IPl%S%bbD5j-Gr<^!qTSSm2?*1PC@Q)t0~Gwg$?d%>=vZ9bKkhG|0}ug%1R{X|uzix0#4L)TOj%Se8aiVpcx!%Kg0Rma2{%!MnK4o% zfa1)>0tCP;+mnkDIeNropc;bGVgwp*G-NSG(tt*i1_I}DL{Po?xHnv$$3+s1kumEh zMhNfA5@{pJpfLnyFu^=~t^g+pk4NO7h@x@}X|4w!V{`Go0B7|=EEgkj6OK+S0vuqv zO$7X|hTWqmf}+t_jL2jt5=WD9hQrKtj0M4&nJ}J!tC&wh#w>N4w>-0iKo0_z!F4<) zjJE_mxA2`Fjde<)G18QY(|_-j3#a}<5#EMXUV)E41F2YJHtKP1tH2p5oQ&W-n*!U6 zy&Y4N;!!Fer|Gdk?gVWmP29x9cqO68%H^D_3Z{rKmK zILc&>3P)#!!db0QDAe4dP}@?J|D^!?15irgNPUIKR3K0yLM6g>!2t-_W+Vclv_p7- zfH@IDDiGO;B~p6_8T`B_IuRfcjys(JB0_`$k-$zOmf8vBq0p%mil(^CvWr}Tsix)? zg^1PVb>GkT^>a;X(uU5ai_b?%rd1>lTpQGx!rXQoDDhuVnWB$Av6GqO-kREj-#fVe zWSjZ={g{AFyFNZt)!cq#sQ&P&3pa<;GV?#F-hJeBNAH7hO}e3=^vgX*EuFU>DuF-% z(TaFX60uzv4`IqI7ZF5|H&ta9QdF+y5Huy79|-l+UZaaEqLN*8rrCqj#2f&Lf7ppu z2x6zZK00*{gZDgx@b3r$o%@~XFcTjGv2_SCRoo7>@9U)A2HdTYWNvTswO z$C?1zt9zbzM&BQ3(?ajHC6(iS++C%OwZ=3x2x#~2_@{}84JNEaRX6W+6+q*{H>aT1}(gb&{WkJWl z>aE?6sou3^1@8B^-m-r1;o#j_mJOu|+r0BvF1J=!7|)(PWR2-OHoC#Hq3r9%AD zqK%iPc&6dB3I0i;Iw~g@V~koOVPpzXBbiBY*E=|+;5!4= z#J@pG2CA1tpkNM|0cLUqZN0_vg^AG`bcq?`T0%RJ@caS$y=I2j%mA68s;X+ZQs#L+ zwdumvrmKf6{lphPk6!w5q@_KW>iD*#ttn`G*9uF9qVQlV+5c!a3vQj-XNYaKu3I{{ zlCC+1tHnO{mrKK2G}V4*yz)HiYZhBGPo5oE*JqjJh2on3ffp>07nZ(^7wDJq!tqza K3tL{u3x5G2ioS;c literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c7af603123e7bf658593ed6cd6866c928e06313 GIT binary patch literal 2862 zcmeHIeNq{}9%aO%9(x?7&rzicZ+fQ@G-WU|dWr-j zaxNAyKw0jYixT+;Cq08F8z_z1fG^bR@)$j-!xKoIf#7mPNJII!hekb!OE55c#;hF~ zA-vPjx^U)&v0SE?+ z9r1?Ht(lKb>=wupw3LPb?aN#)dl5E(R3edhNu*w0QiYGVk0Q`dD)kEt_V*9;_YYP` zc^R7AKYl-AzCJ#_GGDn&CJ&IwWC7eD3vj0>{z(D$3s6YVmQE02VIWXoLIuX!(FO?F zuP`M->4EWr0COTllpyjDdrG{#eb6%>>BK-F9Cpe96JbJuNZ{cqmUsxIQOKzfipGzM z^hj8&_77W8JWU)>y6eL^6T$=2nlw>QnAV+6^qg3h-qYEeLr0I^eQ^Dxxmz=|^A1-r zF+r`FSBM`!+VJH!=I`z#Mf~TjS3chM)tRe5z5Pk^*=x?M+?B7E?>Tg&t?TF5crqi^pEHOPW zhkl}WqL>5VIVt*ZD*{m!q@9-;!w^^QL-=b15f31+7eFfHdn!N)4#%PD7tG~b+BWqC zRur~P9(@K&7i)IhiK7+D2)VpZ*?T^Rg)`QU zscrG4Ww%r7qCXj2ziFIv!NSlVHk|Bl+-Nj!OPc-isHeO7Sco08B-y$fmwerHyzr@p z)1|M!quzP(IlnGtU+CVebqz~*7EhOUmXC{f-XFbnU%jV}D6&Nu@o! zEG6q3_SB6T*XLAK5B~3V)wWljuL&9O5(Q=ES_eZavqR2CH5_Cdl@3eF>aox7-`$mZ zERWiE%lRmIvh_toeOltuHB@x^8}*Am&mlV=yy?_b{dmp965qj%44ChX45;(c3s#*W=F7yM*} zt+eIPfwgtIj`#zN)fQ=;Uu!*4RJbSB(pB;cD6SxRdoO zLPKXX-(GXpwRE)XFNmY-kHpbw+|ELF&n?-(cXoaITjr?YnIpBKvvl)6Vvh4e%wcn_ z>r;i7Z9BxmpRos7eLSRpX3YCDt8)jn-?ztpKKO{Ep!oHIW0h~5x}0wB&am6waw-p7 zVqGO2p9hB1gXbBGxvJw&E|qonCREhA^7mi7x&Hxo9Cf{y b^Khdp{g+wFyN3tXw%kZ7Q%y|W&bI#w4@%zD literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_last_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9ce442f03bc8af277f8c170e901687c3fd82b0c GIT binary patch literal 2475 zcmeHIYfw~W7=F)Q&MxeQU3L+~89XbZGo&aBOHNa5xN=!j#03Pw!n3<)mm`OBaQCbZ znwg@}I86;GDo%}=rau%LFTmub&=8uMG*MDvD5bPaNs-LRX}0g21(hyifBNS;^M2>s z_xgO7=iA`L;APOw&a`I&Cc&^N*c5)jN>_f8COZ9Bu$4IGwpMw{oxME&oKd> z=2$?Y6Jh}alok34Q8G;b}hL z9vvYaROR|;mM1b9((6ZgVL|~xFcFU|Tx;Vht9(KaF(%{^eUo*@*<>ZjQhtgUT?E2W zdPpSVs_sVHIEM2P*(BrPIhG>wC|rpm2gAUo4)-(5_JSN@NVJUT_19LmH1%15OA44=j`d10?v-ycFC( zqnX$bjiY7cbOftVL8$Z?5!a&E+if2yFPS7^CNqRcOoYvxqE;rF@5y6NNPE=9c@3{IWoWlO<^eK&lpEkd7ciHkBLg)NP0XEI5io z=+2A(Rf%`QfH`oK~K&@0N!<6ckCU z91{fr7DS4k1eqLHD8s^4h~}f67)YceP90z}Oe&E{Tz<=#_YYQ2nzb?CopEv}pBCL&&_~@l zwC>Y$f$s)0CvV!d{&0QU`R{-Epy^cC)w>Hk%U<8SySe@AYrj67Rp?z_vt>_9$Aus6 z=|LhvXk{WM1unOU5KPIDGK6611cThXrq(DRIN>;ZJ7uEtif?V5EicODPaR0W1ptak zmXn2P^bjH)uZExMRCH?qU#@t!n-HDdxUofj+gFn4U{yx&NM_Y ztG70duYS9sYj9j;Z}XArS6bM-c_zFjb4IJ4YJAx$QF@A)0Qy-;WTE)Vl<0Xyfwyf&vi(TKp zILUk6<*nZKEqixg-F9NlGux&tH8;v@>Q@a7&D&BK`0$qL6wRNmuj?tPtygQhnlypG J(XL&f-Ji|J@UQ>? literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_lov.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_lov.gif new file mode 100644 index 0000000000000000000000000000000000000000..5996ed11f40da54cdda9bafc4d3f73f308fcdd39 GIT binary patch literal 1124 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 EH}=IE+5i9m literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_next_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_next_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..247e47d12256716a9f18b585e36068ec76a60d49 GIT binary patch literal 3079 zcmcIl30PBC7QWd7ge3xk8wA;0Kx7ph3L^WW?2C$GLIT8wJjhZ(+sS}dagd1!3RtBg zAXX8of}$v>Ac#v9p)Atc0R#&U%Gv@2Uhhj#!EZX9@0)MV`_8@ZopbIv|K0wFwxRz7 zYF=)hZUBeJft~OH=l~_mF9s1I!WbluVYy~4u-)jni7=oTz!4%mv51TC0TeYX7U1AB z+hb8gWo@@GhC2^oF?kFhZgh-@%a3L_@uPVh7z~I|b!2gi7JP_v;)%E-F?)UlVMNJK zz~ze=ZaikR5ROy85@3Rp;UOxjI3sb10<4BCM(&dNjMX%}m~l)#N62B!PXZL-aJk@R zvl`QKMtF#T;lboZi4Z=A5y%l?n6Zi;z$_{X#`9oHmJPzqTJmyEyti0D4-RaF?YkIj znZ@*jMOJBiwo;IQ$rna(1am9J!BzjaLiibG`9Jt%dq5?-i@9tLHdVNr*en2kgIs}p zjdhfR1AG|BXB>fGHW1rExoIP7;!9%&*bs|Abf+xKz)ZO8~~~d zw5I`WfJ5isArE+N0Qv@~II$5H2eAK!jYT`aen6vAsR~q@f&z`Mq^LyKRHe~WHMP~% zHPzL%=`@+lcJhypTb#0zlCp}jnu>~=hKh=c2G*!($cNDXn*``>K&Qeb)gj=P13Vo^ zpySXV;R4{%TAU+9Ny5nl0>*>@DS=2LQ>Y4xO7NP`cj5q^@Xo0Qa6}vdPsEcbWGab3 zvxH7MfvC5@oaE%sR9_ySWI@(Q&%3ly-#|0q4$IO?klg4@F+3VL*f|s_v|f1T@;)P% zj3Bn_-F%Ua*0bO)&hVA}HBI8~5jW$^f-lRC)i%EzEiAwHea~1()Mp2dpS@bw()-Ig z_t5Cw2eXQ<)wjO-l@9QDh?XeBL?M%`Wf1ht7Z4$W_~q&(i==c748fg%#z9L1R;M8O zsB@rZq|j=}kckQu6{y)V)dFQ7sn6ptY{wbJYo{_gVkE`uHNc8y{eMR)Y#g?-YeR@tF7$+ zGJ0|5+S8C5h83fuTTksh@!-2I@05LSR@Hx!_2!3M`|-TDJ;xI|k1s7eUnIwLwfVc)%7=(q~pfFg-b3}_L*AuF5CJhrMsGT z{aV@mFIbCJrIpAuskyafc>9>ci_<$?%fAijsLU|E(2Rnj(afs+hyRFt(|+mesZE)2 zy*ax12YB9YiQrijbp^0=Zz2A3a&U`IO`D&z(L zRDly<0|e3(2QYvih=K1Ss6yErq-CJ~ClL%_1J;1GSVDPiGR@1+)t%ulW@06w9Z=*P zgPY3=m|e~aWFnDBB9ciYvH}^Z5|vD*D$x`bl@t|eYH|vg?LOuM`8SS2p(xXowbj(L z|7TW!*XRQ)5Fsm^!Qjs&1wbSb@MIjAWd%H*FxNYu74SF$#tLK#0XBFc4o{#H0SVHA zlRsIV328yYB0Z0yDZiDSmJ3;f27=@vLuaeNqh~Hh3h!FG7-!^PvC#@*i)x;AQH}N~ zC~7a-pXusWP!`e@ykhZi_Xx%e9PyXOTlExUkP^RO^HY|=)6-1aH)xv(QC&F@uc z+hhgnVa+EM)jzI(yxDR^>?5OGuN&W%4|58#1oaw3k1Yj^mE#R>TkShKVpYBfjeU85 z>T87p@pM}^3XFAotAx+T1y900H`iZvuxZ+Db#LVpL%XrEv*~8(*G*cw_d6xM4y?<4 zl+(J`w0+sF!kT$XOpWO`TUOmT%y>J`DKE0o=7`6!5R?1QbZaYBEhjHFo15O;eM`wsoYD~S)pYR-Z?gG$ddI>38R1V-mEnPbcxx@b;M` z!>>;ol&5;++&yGw=q=t7laSpbxM^6JFyuIR{Yv(sB^B{Tza$i*;ALxi6{S&P9((%o zu57&I VEvlI+*-|X|6+AV6Y>I2LmnhAAoVZ` zBCV~cfC{p;7NOWqJw2kEwzF#i73gX!Xwhh^3)sy{wIFH{blLY3Q1Gnl&e_?0=YH?y z-uvDA`~LiHTo+t_1JWhBBppCF2v`Fj;JSeyPtK(o+LlY_6Y6>ML3C`=i|7qODruw5 zc7~!Y0E(221qgg5-fR>mR_d~d1T$^Wn~9}VPA)@PatMtj$4tUtfI$s($IbA06sIvW z6k|6|k3dI+$yUn35IVCy#|Gzlu?bi~+;}j7L`&xvTiF`!7>~>CQ%My|^!a)VX(Ng0 zNq_)O_Xx+msyqH#+Du!CM7`O>&=!(NBN-MmTQL#*+GK+9W;o*RNyvnyad*Q*OE~l( z;AJ>Y#zeX;zj|bGR~ntDly22qY$nn=wNgIZ^?xhqHJIi9;B%h=A5XATMv`4BJWX~L zfb+aZfoG2c#Tltf3A&K9S|Mx^K3^9&X}Wd;D1urW|45v>A% z9|w2p7El7jHJw9=@ZJE|O(4-2X#)w2ud;Jpmp}y&@%el&zR1f zC^pL{jH^k}%V!sqh2x6q#zV1lf_zik4C)ALd5@MCT$48B9L}~y`t5Dq7!p^TZj5hl zVxs(eGy2I}hbubH+6P8-svXUnj_f>f?&|G#|9JANZ|`K93M+TD{OMHR-|sF+cqymo zwYq&rJJ0{)M;YL7AX?0giHCC|-4JGl`Ct%1!E8AXwT?k^70 z5kENkPF-KWA|WqR>;lJbc=sQiw>)e#?&dph4J138fAPk7OG#(rpF<3%sv7^fsFHSp z=B>vUv}+!m9hW};@fFvZLG|uUriG@0HSc!TZSRTcF1Y{gYdP`XT?|-M8}Q}nbzh%H zh8EXV1s$YH`-bj)g3IjA{_*%H=QJN`b1eM+nD=S#bt^}Hw5%+6^KRDNlHZvN9Y+Ul z7k;qEXW4k^TJa|?hnp?40y0Uf4gMJr*>qmMo}mnsnPQ3w%3`9~>yrT$@(%!Spn;U9 zVJjd30g^#3{AQrq++VQu0r}5F5FiT71M}I0p5B9tmL$g~5Gi&&TN2s<&%+Jh4culuDKVGxOk8eZ)Kr zGH)*ne=6|+#zi?e0w$Qp;h@hqqmCkabhK#?+=U z4fB71{1~|#cJ0q@X>a|eOTN3A`l^0hbSXM%`Dov#q1)T$R`k_`ijPGs_7;`Z`#2Z- zt-=pJ*-~7mJNNs9y!>agdsU-Z_sa%vlP#E~Euw3`>&*7wk|m~Rt-ULf{I>Dc~Ck`O28yb=}dsRtJ7ucsa2y<>|QLceX6Q-?@ER>5!vD60*uXZhWYFE1Q)MA<0!5Pb;js}YgAx^ zwBw27`Z1w8?A$Le+|z!R|55jQgNJ_eRKr+oR+Dz*nGcO!dr~`JXGB-F?i^EZyIHDx Ug}MHhZTm*XpUDrqe8uJX7lx5rM*si- literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad60b3a249c893917f6a652a1bac8b0c80a97b50 GIT binary patch literal 2992 zcmcIl2~<;88on<(Nys9>fVB`6LE90PO|*0(TO#g&fKa!Pyg)SMK^E2#s^HQ(;s9z# zt+j%POObIGaB39`Zc{<5+aMZHS(Ji6sG#tAUxETX?R3tWGygmHzL$Uf?(+S?@8ORD zZ>}Ur0uT}c=D-KwZFG;tv6vpy#bWUych_ma+b?JVxs4fu>M*rIufj9{3Xkvw2z&82`<=!OS`ZKg=eItdX3dl# zjk(gR!AeWCGL24&YKK>fhr9lpLT-jx{tq_u88B#4gGzxCONFONtOAf`TL!S~v4eG3 z$b1o&h-$Tij>HLCY-4DlYL(m)O{B1_o-hL-gu?+2D-aC~Ko2xvC5Q)FfPzG*eR~4% z^PLRW5s^fOKM?a8`1~M$e^Ho5FN=vm6>l#BGI&P>!uhfkxYa=cA}OjtwK6?CYCoBd zxN5{o5OWT;?Lst36rs{6uq2&mNvt6*S|d}b0U&QBeBgMCXc+*E0H{v@b^yVDi#tC7 zj;{iXMuFl}A{PHQ$O3EzgJH#BTUoLBEGCO@%Vo2NkCXT=o!vAj);NJm018%7U85s{qe1yzL@P}{%Ncd$$3{g@Mvp~Rv zkYOvJP-%3A6_W+&J<^B(68Wu>2M`KECQ(RKI*makv)!SQPo|6;HJ$1kEVCJ(u+EJp z$k~6~Z-SF;$i--P5AFIIfBMAS&<^8Exz2NR{)tTIfV?G&z)J;sFX64Q2DI~JRz*p2olEIP~Fz$2nYlhLuxwQouZA}^|}6`wsM`v%ZW4s0NvU1(k%$0 zK&S`|^U|XY?;!j>0+%5O_yfQun``oc7_?b|QS*_*E*m!OGF9a_`rN+0HYt-{``)JB z>ocCW2bb+`y~y#rn^AgMb)I|RU)RO0#=d-3`lEznkLuE7`+6Qn=w7aR+TYySTbiG^ z5&7OO{+!UIk&p1JtGf7A>rVss6InU z$G)J7zCu&Trii5Q=LY5UgOR~yWvwm)b#>*Nzk5wd-}1uY%XF-;McRM1C2pnIX;*8b zct&}~ou9ogv^YJqK02@lzi;U~DI%3di4oT~3=YVD z0Jy*xC;$dq5DG+KF^GlVdN_3EFW7Q{%^!G(fERED(};wY+BEju#eq^$ut7$YgnB@? z^brK$L(C`i7Ut6^6bh9>qf%*BG&ooc8jZnXGnp(Vlg+cxeDL*a&Rc#XbUNLdZEeTn z+5OMVhg2D2J_RyApMXD{_<%wslV}JSWIl;R9&R1Ud=f$?m`|gV;Y89QBr=}@sF3=; z!898gq`tr{XFuK6!aSq<=;#h7?fRD!{XIf+^H0cimplVp@(NCR3707J6}K7~&Y4zB zJNvBdfszBK!fV4Ojp=OcBG``_Hteu;fZu5V-gB15CU5@xp>tR6HNToXGbmD(^4YG# zrC0B_^nNgFZq(}3&vzdwyY`^9&(bN#R4VLV6b6|b_pVv_QiCC4TEe;o^5jdv^~g}>r^CKcq5{B z$D#+XyM)s0S%A)Cj@Q{IWC(=?{q8wdNH_glLUo330uCho eR8y*TZR>^b#>W0fg;o98VW(3jq;+NB_kRJnbPt#S literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3df65567ef1ab2e6a9978203957f92eaa0f089c GIT binary patch literal 3035 zcmcIl2~?9;7Jh$rLRcb+36v&L1WK)1K|oxH$c|KG35XjeWFZ<8%z{z|P;sesp#qkw zRRr7}u~ktAJu-lZTdOFjxC06(A|OE_Kr-)7K%r+kopa{Q{m*^>pL_4S_j}9zVt8P9 z4y;20f&&18LBLY@07DxwXkLOstxzQ>5;<-YzXnrh2Y-WYBS(l-3YkVNRmcGpYcv)h z@ELrgQ8)``zs@4ccMqsbj4>vc(dTSU3*jg7)O7ZJ))B#D&D!9er`O+Gt9q)ZxbnwU-uT*D)<9#BXmk{O9&W=5f!lg+7gD+gz<0>eK6l?1nxg+;~!3>Cpr z5yKO>0T{z&gbPvP5u-rBs9+%_;P3<@$&73c+kB)G0T}F%(;6T+1dG98@I(R$kEOUl zCl!kuGioy4C!B9HcI8@E0&PeBud^M-(Id(PZc~)&s(p!$S&<#}o$)I7(FLb6ocyw* zg#P7)Y7fR8UW4e}>Gc(NHH}>X&N&A*oY{G~=7siPab@kx?r3q+#vc!zy>hSVy=P#I zWYwnJ!{@5*H-Df43?%5_=3 zk@R@glukzi3V`V3UVaCHC}arzc^+y}!$$~zj==d71j9o>!5V8)0T;BHfl;BzQRg+k zba|iGhDvtVDT+GtwO8u(%HMQ-H7gF4B(9oPQuJZ!xo@7QI)z++<&nBXeEUAK(f~po z;wIgU@!B;f_vJwSji#o}CEKaGiyB?*VU}0=O;ztcA%F7>*PZJ1t26Z(j02MUlnEBK z-e;#rXK{Y;QrWd1E?%BiUDjvSW))j1d{lZbPc{+Ty1X@^@?0VXx&1svS}tQ3d-gBt z9{<)-%igj0r{@Mx$OwNuv+#qbJe=~p-;F)JoFJ|E>UUP&k$pj#tp<=CyJ=5OuT({# zSJ;MaGyv6>>PkJ3Yz9{?c#~t!qk&1gwwAaXDw`BBo3^3x;?nh`Q9|! z81X~h-<--)g8T;}@i1 zVDlFd9N+;ag0InpCLSbELgx7ga>6xyv?R0xqKQ+G;VgjKO)Nmb;c$2y0goq`5ulor z2n3Qjg-kXllPT7wmLGimvHwlK5h9UjL9t+3TQmP>7JzN@i3M)l2RI>ss2 zbvpV^iOecE6|X9H_jArJJng}V5~?fiG?1J!%*agJ^*R0l2hK#_<$YoIuCWVc0+D9J zP7@pa2^mZcnxC-xyPuAnzxtr1$Hgl+R+_wd*U^7mt9#Y^<+P9m%f9`7_py@e4`1s{ ztbxVjA(P=qSnP_A#N~qzhlmL)*Y0r5|FwfwR$cEfn;s!hcDjw5;=68iR-|J={Hb!H z>W+JZUj`#88*(Jm*2%-)&RMADdA=(=UGas>-NvrruX5~@ufwfhqkr2sB!5z9^3#KH(MECpFEzz z-TOmFanJtUtil00v(!_&pm6cRIk*T+^#x1E99b;y(leIUYf}NUTOh$*48wKY>Tf@| zw#IkM#s;BxkxgaUK+;0}*lO|txsP}2m0({~ z-a9>&x!r$Z#Vq`T1|RN?xQugMp1Qi`OLvpliWfPj#9L1{>XUx%`K4ZeAQf_D(7Tx@ zjDt-J^yRF&)T)1EU zU3jjfD{ya{CLw-CesRi;l$2APg5A`{sqHZD|-L{ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/butn_prev_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b460e57dbc0f0ab6f34658d178a6da43172dcf4e GIT binary patch literal 2682 zcmcIl4OCP275~4ymzR))kQf4yS{md_>nTdIGR|u3kzG-czB;}h}Q~6M;mUR#nw04$&VC@_ObxNIELB+4SQ@}FBVfn_fmbd>)K*6)FJ*Q{)o%??; z_ul`#zyHVYhQ2|62}DVXL5oe3nS1meu`Odq~r>ND$fGvxiJYCL7aFno-md)6`GkE&KQ@==?fNlCaFv+BVi%r z3zGmIobD2qb5#@Gv7~`C%atmFmLiRWJe{Bz%uGckSgF;*cmo`9=Okp-QnUZSBTFds zAYcO==VHR0mggQ@oRuEVR?0A|j210no?poXcm2N#Ismi$AAHU;;Nl5Zy@p_x3Qv<+ z1z^4CQsCNSU-!(kWI4H+Fq>xsnGS-R&$t2bhUyE|9jJj7P{0T_ z0TVC-0&Ip~8lVSE(Ycd=pO0j|jmf}d`W|tvMJ!H?jg@B_DOFw`p_#i7$n0J5^iEb4 z!YxmXlP3^H!mOg;k;kYk%#~wSggA2ur0a<-@@&0PLvFFiGj!H`wNa%v0DwxE7^riI zUI&012X|@;$N)kwL=#JoI+c-g8&)jvqdG{@Pa)S=!Az_Z?~eb9et_WI}e{ zmUpV^S}t7w$CMbbSP(7d#Kghb;Z6vCs}^ApLBUc9JG8jWlR?my);Sy&pzbm6D348- z=2}*d1mX+;PEdGz7X)GV*2HHN*p?Rd+@AC*k4`H zT~Pegt$vOvd4)}9@0^%=Hz|^=_On#yIF_6Ib$9Cf9D9B1ryKW7l{9p7vZ5;f_({~Y zY2~KDbFIpfx~VjE$Y~u7=+6ho?zc7X-hX)a@elM{OLAxscwuZ`V6}H$`O7~|+)d{6 zUa)n2alS8c#c#96bG-f?|Fpk7Yr{9k`!^z!O=mvJyYuPHH!ZEP12bez%O&ka8boTZ zjeV9_d%XKwTVc?63w_ho1^j%n2(tzLCCGEhe3OdOtMvvwRVddRwIp+iGND2i0^k9n zA@NDr5C|X#DL@CmDX13b7i@q)@;wo95CKBK^GrflZCsF)5}zPXwW^qs&<;2*HY4-- z$Jkx`!!ZnFV>p|QyWvpzTpZ`}1w0;~#}kNLWSf0G$voF@gu~&u3*2QQk?cqF4_?^E z{KFvsY8m+R=?5@2%EA#a%Rd$io$p=9KNf;A{KGjY99R~Fg^Dr2h6IdG#U(08K+n*! z8jjR;|9ir`)WZSh9V3CUtJBMC9l4hF@VMX#dt-!mhK4%Z)yoYkapTDrmsZ9r4mD+6 z$z0|$+Be2`t=9K@ssj!5S(va@5{bPePgAShnf~bR?O=i z^IOLP%>M)O6BNg`y9I5xu5C7@z4W)Wx`?j#O8W~HU#Qqq!}YfV)Gs!Etn@mv?yDm^ zH*Hw!mwhzL6j}H4;-S}1EIIYybZ8~F|KQ9X$8^>8w=~mrzS~Z2^Nm_p;bWsee}9{5 z&=Q@`E)P>wN%gY)j_hOEk!#xSU2a#7Z+$o9cgVpjdnWg!*xIySZ-tnR8(S@9g0g|e zzpmtZ8IS(~6or&IHz-mk zs3zIhKchPbZ%s76V<86adn|gbp?2Nx{q5<;8vJ`Ne^|QG?sjT4uj-QI7yU~6Zzj_e zyOL}U;RhcE;Ok2ry-&xSsjB>Cweenv{iE}5?s}uFsWV>u!k4RpXZXuI_%ApvCXWlg i{?=pA_Mr7>k?rpE#;Ru?`Yy5E7`YU2BIwKzee*v#Qe?6K literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/cal.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/cal.gif new file mode 100644 index 0000000000000000000000000000000000000000..8526cf5d19a915aa8073cf344873c4505491970d GIT binary patch literal 127 zcmZ?wbhEHb6krfwSj51v)Yr?)cd3`J*V1K6uU)?O9}E~67!-f9FfuT(G3WrDe9t*lDe9t*lrYz+7{(8>#f@cgilUfh4z~|pNQPUoz-A1@fsiaXCQIh!!!X8Zg3DNlAu-;- zF|NHs52aMbEn@>SH$kRc3bd5ope-%qHri7-r>C^16nf*F({o-y{{`PXc|SgR^2_sl zP>`3IRdNJ5g2a%$0{~ThV_RK=e{oq*`OBRqIp%l*4BI3WD`d?;vrITjdAx+njXN=j zb5Y+WL}*|+vqn!mb=!>=KU_f(Qb3eq^%;MTq+$9i5|*igDCo!PG@yEoY5%oJP1U+5?Q}OIUs9! zjJA!)mBR!XcCQC*a|;&h{H(>H(Hf{g$U{>8VBF)2k-o4S55zgJ%{h#wnd(}Bq)CCc zwnu4R*xX((Q4&;)i33T6@Qq-dxJ9n&8P%HgmW9n7U^v)fAQp!Z3vnJoaftD|*dPY5 z0}y5y|MoWK@i=k(KW03@D(MOHoYPCnTNP6VeIy?ChkOKuW29?T{m42u_0(yL#5PQ( z3BTX%^I@>(w+o%4>Da~wNf7H8<^+C+p~G82AA!53b(515qrfvfM*|l#Xa?uZV_eJ| z*~EYi?ZhIa2gldlz_BZi*=75TML+4sogqH~L9$;d8|mxvE?9uVM|xD6{%#2R`s5Pr zgZqI+yHX}WMS^&E8+Nrx4XTtQ-JP%*=#w}9-P0XdT(~0?whIKmDU}1Aox#=Bz{<)K zt5rKT1~d%}1Ke&!;NQ0X&o7PMmw+H^Ncx`d-X@R(faG>vDoQ+f=;d^E?WY58HK!Ly zGCo6d5)H|(y*vCpiyxYQ`=VT#uJ6cgcqOBx<05T6aro8j9~2pnD{q<5Qzc!O5+1&P zSdsnXP)$(ggKkctS`p5OgB>di$Q`fZB zY3F+yQvWO+C>6h;y;uC;!Gr@0*{Iq?f8+%=-L7 zRrU3yo`U<|HmZ@VvZSq?lcf20%CXn;-}t@qmLyA>6e+oIKyWhUXz|_5cP4Trg}-gfJ?ZlPda_Zb<-gC!3Y(M?=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<gTWM0TY@5u?V53ptdXHXalWy7)oG zIH{I3zSIJR&kGIVCkMJtH%#xTLhK zyrQzIxuvzOy`!^h(&Q;qr%j(RbJn88OO`HMzGCI7O`ErD-L`$l&RvHNA31vL_=%IJ zE?vHI_1g6tH*Yuqec!9r-=(U9^_Ou4*DRPRCJL`OvU7(>PL{* zz&<0+V@+iF4DK<6ziu(`Ff#%pk6Dnxp5fKoT=A&hsZ#peI=&y9#Fu94fA;nL`5%=H zUh4jxURqzV@s_io;V~8GU6G8(uF6)+%)9Z;qP+dyG5;^SfA80lPK{*AIO3^Y#{J`~ z<>T8cwyt|MtxkQzq|Bva<=e8(isUM4>Quh4m0$3n_{;Bo+64vAs{f^5GY=B2RIZC& zy*u~G?)x9C{97*>|0sGJ*%`98pnIN3j&tMNlZzJr2spUMyw3eEi~N5E*W<2L73o!m z>F1wu-B`Ka_=Krt+~u&nZETt{#haA+x)yv{m0xamr*dsiple0&tJ=SdA sspIN$jj_3GGfC#}vj^#)m_IG*(!O{2KLeLt`;p}6iq7qK=l{P60PWmQjsO4v literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/delete.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/delete.jpg new file mode 100644 index 0000000000000000000000000000000000000000..556858f9f2267b58da9a3814d30f6b299f589717 GIT binary patch literal 3064 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 F_770dJj(z8 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/delete_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/delete_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de95f452d1962c82b1d48cdfb0ad4015f0d8a2d9 GIT binary patch literal 2661 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1e86fa1d5a8d13db4734ded72caec0ea9bf30ae GIT binary patch literal 3022 zcmcIl2UJs88on=`BtRk{fpIY^in;*w_7L~IK zvNl9SQFPg1P*Ft1K?DU00wcvnS3x0rUxEsAc6RohJ^R1&-}~~H`+xV|_kU48Qa=X_ zZ%;2zfZ!0Y8a_b%hU^#+Ek&jBXlX2)GtUxy>+0o)e?tut%B5ljDw0Y76b2Rx5crJF zSQJ5*G7RD>!7<0J5Wv;dh% zg0elu+$cHB)4>+N1kvCjQ1#rTu}T?MLldKQX?zw8LvL;@S0a=P+2a=hRG6+6oMu-8 z#%@xvRK{M+6-S~{iI5#EL@~@*#l>KLWF(9i!;z#(LPjk|vkrc-SVIp2mcj9JjIG8p z_p3!y>BDHH5E)k@j}*$rR*HqE{%-}}0ay7y_%wGwAuUpf1VU`9@HVks0GzW{f%c5e zbVGxD+0u1FnQSx=yFsnbloTu$@wM4fXw>c=a|6JFY66uEgdhPbA1D9{XH5+_j+f6j zf?2UFEc*{cgP+Ota&u#cN>FZ8lu+>bBS1#K4?|;Lt`Z)zmpglrP$HCZQFzU+TsejU z+XbRogKqS_FrK|cBoRpCP z=+bDqdb$ifJ%*v4o}M8#=oxBLnE%ZJ>Yo9V0wJ5=k*NU3MDR>R{S+PmPJJD5f+&fI zMj&8J@Q?-wL=u^zL#4si9`8f|4*%K700;rW;|Mq+nM5Jt=^W@};t5kGSP@+Uxdv0? zHd>Pm(~q8Won~$nRLNuI8e4#`i;8guUle zuhlAA`#df7AKQE(^ZJ8d`}2w`>Rt?lMXuX&;O`f2)VIB}U$i7De(R6NFWr3D{+@!9*qzZ8Z?4SWO^61aVUhh}Ij^4KW1eK{eeRb6&G-Q-)ix5npc8Go6G1AkVP9 zdLM$wH5Pb;+M&XhFA#nofyGw{>PA4vYicrq6L|V+I4OJ9?t;QORfRs`3DLvv3nV`k z4;=dQ)Ki`3+MetdojDV;tlOePiWCgZ3w-suvTCS8F-P)|_IQP_CBm>vL+#fzb=>&$ z!#7()6_Pu*;#lGKjg8Ce_r^VY9hF_rzj&|hRDW5`nMs5E+uU8L+F(ruaQJ~CUe%~gcHm33EouQRa>k2ZJ2b>kk z0;7;m@z&)<$4f51VW%B?PwHCNRlPFPVI?(1GRbxMw88TW%?__>ja7rz!?c9FYh|6G zW$IsQhwcrmd(z9XRIS)sbFpfBT7Z6TaZ{)1W#3)N`5)67^8-v#-e8>EZh9d1Wt?n?_Er=xFX%gX{`5_(2WS4VuoKVj3ot$>E<7n=f4( z%SA;zkywN(*&<0KMn@nND&ztH^nnWy04d->0%C&z5Dni^sB+C4q+Vd~2N7&w2j&4w zY(Xvek?7t59*fw43NBU>+9A_vI0YHY0+?OP0we-~KqQceM3N2(Dvd%SQD}53l}4q~ z8QPW~oqpT@+TRG7OxC6AvKS23|I7lgZN9Pq0kS|227fFG00I$@BOzdv1#me0Snqfi zz#({y1xRE(9B^_3hi4K15z>H5AjyCWX~57r{V3T;+l9@XiM(!e*`}W9ZZ^RgIYoT= zRaB^jx=Lc}?>)SEC@FtcPQ6~x4e4c?Q31iic8rk9NW2`^)#RDes>4_GOu{1A3GA3 z=ddB4JhAD=*KO;%u3QqZO!mKSH$ePQn2^L&*NMAsWP!XvXfj?6y0z%u8=kq>?L6VLkZu{BLiImCjj7SS2^LN(>P zxA#gn55}GK&-ZB4=a4sZrD5MVJbqAeFkqqa;kuI9NqOHdZz$<)DWk1!uTz=P`Krl7 WOQxBbItD%SkNEYOg=IvOy5V0m*(zHA literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9f717c10e4b9512d302b29aeece2f579a04d34d GIT binary patch literal 3003 zcmcIl2~<;88on>fO9%lI776IcL)q+9T*B(8$PO0E8dMZ8Aps&Gfh3545ET{cf&+@; zf+%3?Qg=m)RSQ_x5d}m+!H!U^gNk8S3cTKzphC}dI_J!p|DFHdn}50YyUX_nZ^Zuz zSPQ)Uya7T&z;gHj{0+@IFixhFDdJ>_7}stFaCY}wNPfcz7Aa(sWTjXp1yEQ-EI{Bl z(i2e>J&yNc%ts;<@FkePI5tixmd0Xk(pZTI1_KJzNt!rQgHLg85~Wy~EF2p_?$!;I zi=|4;Tf&c3z&ssd0zwcC9tuO>Lzb8-C)Uu!Xk8kg4a;Z&KanpLDMZ-VNdN<;YlWoQ zRj-MMOd^wGzI;iHQYIB)AtEJ#nOM;mOpl3y@e-p9+uL&lB?zNkwwL z5?;4EUqL)KVmF9p4yN&!q7-bASSpmID6r7D&iluRIrGRTMUsvlvv&sumKkJNEIE*hon`P~}BUI>BRibn> zspGYZy3Vbyu1{|3_O{tsy5W5OwFf`<9KP^l!}H#-n3WrMeO-3_;fp>epGC1L*}K2F zc;nG8{cJ!YL9`SNCK^h0&_J-5X+VJpk|rBcXRXaOA`nyt*Q&Xef@kt|c^)Cg(F*%c zE0h30vv#PegCI&wgkC&HrKt5Igg-`L^9cg}7%<72HQB%ww7eS1D4e?OwE5MO0sLeZt16 zhdY>9gCDntqXsr6o9AJ~biSzudIG z`Ld&Y(6~rC-m1!VpNn%^l4^S;4sz7o^s{~Cr=ngDN0s6Lzh6IauQ#o^i#ubD%d`oS zBLz=swU6KSY+F`XUKsFT+9gBFCkL^I{pJ?mOJze=m8BQdzc$Z2skfbGez$sH*&Ns6 z+Mj}r%7Y5o4!}6z z282Kc1hCX#AP~gCu@b66GlE4H82(8F1{{GMm_baat#T-HL7i(kQ4}s%%%V;B)VG=YRHE~ zH=31uh-R$i*)#5Vf!b2OuG7lHJ|wUBY_y`v!P90($vH=pP@%HAu9a?`rNiKuuHWh9 zU3xyOo@Z;;)z(dLU6i~bU(5GDpu4m0;<#0t3XYWDY<&4{s*B$eaq3rlj(&Hm>0j?Z zo4p`>McU@Q$0}|=ZXeLr1u~TiYZZk~CMSF>O>Wd6h!{;;n>*{!8MRSm?XxNF#=!!4 zC)d*6W8L_?5Ub+ovsE-jokOc^-VRjV@7RF#iY0V@pY4>aX`szh6OF*D^jMIO(?Y-tU8EE7H=3@@ulcIP9{p=y1dH zJJoMfHw{(|R#sfv>b1JnuYaTEHe-&g&&_D=9EFp;vLNZUVkWD4==G^B)x%fE9e-E+ zsw=)6$<6mRU(~Zim4^d|>2|%&_6c&!-WMwGzcs!*=y(6GM~)3HRCoE8*yY%mf3>yQ zw+#nQorAwjM~~-RE$w+c@sW!Rzi&Hu-Dy!|#??(ZavcNP!29|ZH1?GTH8)USL4DFq z^>ysF90#Qt0dv2-IoWSl?dGz)n2j|-N6tDlzxFEJU-!9J=yv~t#)iK;HATAKIgtKj z%A^QSS6iFE%;Vr-!wR+Fz}MWOe)ZtBxz62p%=`Du325E_4hIEYX0@h2PomG8NPDYr zr%g9`AMjMge3yANN#(NTrf5qbN`I;o%jM+UaW8MHQR3WzXy zogaNVH*IxP{OpKH=c*cqTstDdmd#n3BeSlkoAVDlW=eS2!ADCi!Y=OeDEmQ<>>i%L zozdRYSW>M&F=<#hrMfpGvLM^Q%+E74+N~%vDlpl&* literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8dcfc0b92d018fecba5e33957d6f308f7a7f3e2e GIT binary patch literal 2634 zcmcIk3s6+o89w*1cb_b~>@F;%O)mySO=4tuXwgQNb(hCrB9A3V(vW@JWpA?X!tPxW z4H6NxvFZq@sixW@rdXXkKuIM|rV6MShbY)o)F^_s_`>jzh;)+Mb9X_(Nt(`d`rrA_ zz4!nBbN=s~^M60v#a;ulG()NZASeRffDd5%iCs(VF2?1ty9&ve*>k|Wq}0V&zbKRP zxEx-Fb~ynQ85au>_>8}~C_F%I$R(2hIST^T4#ZSg24cX`m`@DH0W`h z*1^z>*E%%<8x}8d(@usoI7|f|I8VqezzO2RgNvj(S7C{p%i)XhyL`SVnKI2(XmU~> zik!L#5W(qwL4CU#3DLP6E;pHCa@ZJ`lOnSyhQrKdOaU+0Y%tydN5VG=8MoBz-1W$! zfgS|p!Equc&S!c4vBj5ZbUahG+vN1vDEH({h49pWP_UbDmH&g!cLxF@*-Kj~ZmaM% zxm^G>(XYUN#!m+rGt)`ea?0%<59Dsp?+YWc9JIwhyBHe%yXV{hsG){J6$1*afNB9= zz`%DtumT!z2`6p=em;`PHf}bz%1?-IA98uBPDdJ@jH#f2vQ88OGF~UjkaSZCJnqy* zWHRNX+$IKIcaq7&l^eGk#J7e-^%7M~zCt^#u3`_FZTBuSJ596$p2jy^4Acok=>YIa zXg?3}A?#HCq`;a1>^&gWT3u!eSl@y35cV>t01|;fAQVW1LWx`~63bPA5=o#+tx%{G z3bkC~lku1T=gAQX5Q_t(0Wzsnrj$yhN^X!U{Zr)s%>wK(AQwQ$p%^j^pmGG0BkUD; z04UpvEQBa|h)*D3PB7RGa2~-I2t{H@@u^M(pxA^{1`r&}n2#6YJU!^4B3 zdD;w8sZV+)LX~;k924s<@6hohtFi`q1}&br;JpoNr!T6`w(6T}nfQ=S zV=pyysG{Y(_xi9QYTLebhqt%>?Z*8N8c%%nkC7bP^7T9Z^y$gJ|MT0q$*&X?Z+Nfn zFQ+c_J&*$wg=ldfCO*N7^FauY4#FXVqG<}AW=*A%LvTE^V<0BN+~Y2<(q*YEp4h=i zf&;*x9@pFnLDYs=^~QLH>U{*^#}Pz5hQM9|63mxV4iIEd2wwbT6VB0{?&XNZ87u(g>`&CQdg1x`uvki>CZa#%G`lw&xyt?SZ?GZrFIF-tp~KUG7`qm!eOmTsXR;yD3$-^1G*! z2g}%Vw>_U+DZcgW=4)EIGpWYnevJj4no|q4`y+0hYFbgAHqhI7u=&!MxAabkv@h?4 zwn{>m`ktb9r1b5(Rbec6{z%z3##;8GpWWeMIh5N2TRmxUEh{uJw3&9$ObJOlZ7!}r zj8GxN00;zHNNN`_Lwb{739!R&2CB#R1sfYs{6qu^;=yb%hg;B}n~rI&^xxJ}k=080QYv9%`8}^ZfPU zif#K2Plarl)E6eVg(;Z-1LP;@oAA+r9Vy^veWe}qkzP-c`tm!ABctC;7-?_K&}BXM zuNHM8wkH43nU8hdkuh835xZ+g%Jk@IL)TmG#f z)#^><`RuuyVFz9=`cR!w(sm*!HWu8SG53${U0XK^7wj$xrmO8ISFIAR-`~;Le@0dR z$sXgn?J3dqn>Xjp={C({!EAe+S<|-Q*=rjf>@@vCF}C`zeJn_L?WLUg*jHyq%`G1x zTOL*v{ix*8;(}L8Gm6UI-L-o7nC->8-E7D0ysKLuFnhkn zG#fQPZ`yKsbko<(Z_h@8x1J6DAfoP$>}*6UFLL|u&xw#TtFJzsaic;X`10}e)Wyu_ m(?;&C>wh>adnmVSXu0#mm-p+|=TMDEi}FJI!ebw^7yk`;vqNA2 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_undo.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_undo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..363bc9003d962024c27c4565653a99ba05b42959 GIT binary patch literal 3352 zcmeHIc~nzZ8owbBKtdn_g0_{&B4b4@P@pZXh%6D5fhd2?SPE_3YZ%pdb#zjMBO-}~0zUEc4Z z57DQ<*w4q;2jH}DID4Eu0O*Kbd|(VBLWD6$JjH3{XW)yqzW(@;c|j~8!b=cw5k7!o zjKu;RfLWRui_$i<@YzJ6@{lM7kFtTwi4k%69Et~@!((AN+E5p(;}*_;8|T3jaYYHt z_apE!gFpe7FQWMH7#tzY)5i*6f>Yzso=5UT;*$kf4|R;jrS{nwoBA>08GM$IMR~sn zmlx-PE)Ttg$NjYA)6(5w^Kaa^$!ZZA6EH4_|#{hN1!HfnJjFnz!)mr z8Lc%M1)4oxY)A{*KtU2&0>SG*>;yHwMTB4;H(HaO42_!AV{QPfpjtyE0v6Z~H5w!U z5u798%m++>K;PUsz{fZ8t_{n_>imhQS3)NHdU{f5d=Z1gVKL{f1Mc-rF*V=7NQN8k z>qVim_$&cK1P^>ILx^2CY&|%24Wik%tRzY(m(N6!gp`n>#a^gUf><^;itlIYiJ# z+63+AfCa#z?|nh=&a8vyH3~=`OeBg0nBQZ$=p(QP5cTx*^!14P`b4t9JOi?s5s_$Q zW?^DtW@2JNCaUH2qqy59amPG=|X%RO8D z&-=ZvT&ba)r2R+E)igfnns;o8}^7^}K=b#|Z4+LO?qK5wGq^2JT>R zM@C5fK$U@GLFHv{-lB^QTSp|SfWB{p3&r8GEhuP@jk6z)7)^SWgGeqOx-qn1qaE8O zq~$CA;-SbI#T^t}846upB$}!CR7x7nx6H_GR77~oD}Vg^C$4@5R?@yqB8X;FC zre!OwT8~ui&z&5nrk6I=_p8oLH&aU=sRZKZok`0AcG>MM4S2A)sL_AdrN2LpJLq0v zaBkoe#Jq^^FN}~V65KLTkQII>$+y4O2=S{PG71)M;@$koVX*8`Vr#Fotz!81vrW?r zSI;b08dg0}Y&gKmZj;$xyIs2U)aK1T-3>oXmJMz?5Z*v6^J<*5tsgm1i-Mcazej;< zHVTMT)03ZO_M|%4tf~s0>3XV+98MeeD_oA=Jt@!H-*$g|a$BsDUhv5X7X`(kb!NNq zh8@#+(-yVI8#~6v>=~)ml{M|cpHnVGFZBE<^5~L|DiJx9TfzIXTiS)g{gr#!}U238pcb&fFfmhXVWQp`DD&ae8;+d;6 zD6o@>2d7XVMgd)%dfMZ_RKxcC#v)ad;$c|MZlt5MVc!cUt3|(8+zKB)tIBRk+2;Ci z#@#ovO=+8>DjgIg(`fYdL#Mj4105nHvBzuEkbVjOl~lRhy;Z!YV)}aclSmGKH9lAs zYwj=S437HORJgfF{c=-^&i8yQo38${;Alg9PsTD6ixM)kjxMci32$ub=Q+-^a}U2?c0}hO?I}qO$}-_yeazBXRKz5jTp< zPTJ+_UN`FtVO}SWW(Io= z)TT(%x`y0PfR}_T&bN&=70tTUZLhFgkug!1KEyRWQCgfp|MJqPSTdkGbZKZ}xQnCk zKC>#;XvOc(GmN`>yC=lKvwel~{4N<}tEFuh{k|iAy<%%xt(^W9&#d#eXFRU*XasfL z(Dq-0%43g>AZ_O#XUt~x3hM%VuB7as)oj{v{8&AE!_Exap-0t6oK+_ZIH@kkjhmAl zk^ONc(pF})eSSe6e*r7md46lFE6FC{*Nh;qs9p-|$EEHUS6cE|jj8|}-RWNnrlP($ zqaTuCGVsHa)S`mlP@p@Ag6PRCT3EqbwjBE(*s|zDY#B;m2a@iJ;tndd96U7JHMQLR zDpH}e>P8ksb;dMF9@e-HINn`@0!hd0lN`y$s|9-X%U-5IMxX6cNQILqkaH$Gg9uK~ z$UP~Gi)UPi7;L(slr5eA(c#2PSv*Be!cWuaU=N0_ef5@w<3lIRabTbj9Z)WSifgZre;@Nz9FfTDl%o8NieFTYol*rMC>Y$CYoB1xzhcD)d zQ@QU)kY1Ur74igPx<8+tD1v#$L;*q&EgtU^^d!}⩰|nzb*m@b0L+8x1l0ndARQ_P zqyjOVR15(gRQdDrAe{!LMeEh>J(83(?jvrG=nr^eCQyi=~O^5lN}Z@d7rF4?}hk zF;J%wK^tWQv?l;tfZ*?aN$~Cj!gG58C_Y>)9tGT7A{XxhyMQT~Og1K)8XKEZO=g%- zY38P;<}_PNOPZynE!9*jZzkQ#uSdkp#KeqZWq27LoVBeL-f6Zo;e??iweY1(N45PgKC zr>|#VWJoq3nR-Gem83s+riX#gI=1D!t$E7~tqvYLzuIX&Evzx#bGdNGU8a$9LHNki zQI5#V`uK&N3w#enaQ&{9i&xmRMRubvrMsH$rS`n?cPXs+OZDMv_kSL%ym%^{%R2~oCom;x zdr|=d3`mtlHX&bcJp9EM;z7(^oYNEKS*&>I+U{>}hGy?8=*?;hs#4T=b=b#_u{!=r z%llN|@I0-~6ms&!q`?e1rjSUq~cW>@9V zcFE^m-5SyStr}@34qP>BTI3mJn-|2+>pJ?d$vOpZDS(|LuwAP%IKRmS2iH8jJh*)Z8 zER5M9_c+qMw?|b_n9eD7oLu##=0xZy4hFJJQeMs3wBOxcEs^7(#c!;-FnbdY(zETK zbf|wmoX~~;a7&OAqCxF4wdZ%Ia?! z%nOoIW%LSF=>1LHr`#U=b~D&+B<6UEafv&xMqvZIz{5Z3!jFg%+I9Zi`z@$ z%1bjhau|(6>T4NUP6d1a=^2vFnYv*-l5)KQNtkOKNutD}i z{-jJHA?E>L4t%s^8xN_M4%UJsNW5aGBJC6W=>W^$h@gWNz#S|l3hG$j&@^bRUjThw zDw}8t?Z8OOiLl=vZ1)G-{V%rbY&(^md}mugRL-iSUmXnh?XS%|BgMvLBa0s79A=*3 z3}nwf{jGgX(E(n*wsmRCROFo#qeHo%@IAZsIwt zcQmeDkgKT*UvfPq0R=-w{*Rti_B|SgrSqgy)+$DuyY+Cm^*w)7aHCGfD%!!gEqR5V z*-UldfJWDpsd|aaSz8>44vbZ5T3rUzt>gPK&)nN}tpDJ;GQ8v87$>LN literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_undo_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/execute_undo_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..632226e9ea361545581868e2b9e9929394b9f80d GIT binary patch literal 2786 zcmeHIYfuwc6uz5;5FmtvB!br31yR~j6huUkrQYT9-pAW$#~R@j3+QUhXZvI6F1)ad7Kxa!8KaN*a-GR zi(nN_YEWN79uTs%Hm>8pr@i_`5f%0TIiK#JkY!P4%(~ZJn zR`tk6rX-Xq)L%}-X_O>}hGH5TGu_c2%#4eJ@dO;XOcF9;$={v(%rXml5D*2&(HJ+z z;`H3YbQ&1xv`i%@)p3~W#ZJj^*Iz2^d$7v?;A75!$Mw_V3XEPV5JH7J!}{2$z_`bg zEW<*AP-QBnQjG-CCusCd;D!=-tT8(S8jY)`-2m7_oeWh7Fpv&47HEM6&e3otfdVMu zmjd8`ZasP)@bj6xXrt@U^)ibSFSnG6jhHS+j)Ofh;bkdYfBu?do|f*T*O5cR`I zOeNRAgZGxJ>5E6N3t?*TrHipNbU98clxb>oS%NkxhLqz30PI3K2I?pxXcI(0`(|JZ z5Ngazf_KLsp4(qQ;H6N;U_h~s&ZSyGCgAgUJTo5O%#1IxFt-p%t@wN^sjXNn6^m^} zd`3nl9}d{^icu{n0u zE+$?}$qv$x>KNDAs`U*r(p?)IKowcEG@KW>=1aQiZaPfdYl zj!k1&2ln7tX6Yr5O#?zcQXZR0nG zD(bIx^@{+D1<`UCOr~5DHwJ>8i!}!#NU;~2%*xm%p%GMvG<3T<#I&o{>tvzQSoQ3l zDO?(W=~TCxMhK$7M&T1SM}u`dgYaquj?W=bEr8EvdWwK2_%o^e#GVtiWkFW1w+=^M zxv}J43ww?D@KedWtSUouOKJV?!RX$weLJ>3*^SMt&($ZEcX||DlV5DRy5JNAzPK5G zm;wdT%Jbe66)A3YMH@alx%k%Fi}<7v^D1ATwDQRFcMg4B9KAV9mObsp?HpO!igQUR zgHHX!arIy5e(nCU@6O7+ak*q-^`!)Z^WG`rw`^(;|F$7j7Z~ETgt~P7B2I>7c6aaw zk|+>!Y@NY-`!;P~Sa|#WtDj_6QXsGLw5*qC{e5u9@OBD(WaBREob8eAq|oo<4<|N- z7F7_(iz)>5S;-l5yTvut+T!CmE+;CJ%06sdJ1=Vby0sp|DW~*%rnMO!^$rDXiKuId zTrm{BL7&d?A1=P)UQxQ=?)#Hj8{>MCYKfIic|ij?rLq=@$# zLH8cjpcfj3i6N`Ou7>CZ4kdZJxQ0t}Z~9Zfl>$*+cYm0fr}HNc3|Z?QH#-DVfND0f zlih@HOr?f@RcNd-DOs+;V{ii3tU_@zPDx+uFsP6h0I&jH3?aopdO|@kNPy&|fvRS{ zATa~+Ya&oE2h0G@bU|ZpE1pB4xP?vL{}@sBSg%>-$#kA9PuUaIGRcK&hQ`QYtKqhi&;yqjm88#O3m%%)EZz0f zR>?|B8{DDL!5Y4sH)e#@FK2|!C9O_)No{HSr)c1OPWREI|7L`!rWYCEQa{58r?aw$ zI$HNskR|xt&jTa!_2%N<`p)$S)3@fIETcd}W{xgk$-fza-79c!^t?cUrpm{~7F`P6 RJMW)fc<@wefYg&}{u>I@v6=t? literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/exit.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/exit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45664756131b68a53385af8585c737007126a129 GIT binary patch literal 2971 zcmcIl2~<;88on>fOGrW>5Fns~Q5Ho{UDyK%p!FSI9Ab6owO+i5UaIw1fm0FM}4j<|G}p}13DUzEEQqIQsHS5s{o`g z3A6 zf)V%;{TM8ZFl-fHAeD<0t5p1GNpfPGTqudIy6aX3@+T{=*q8rVaKzK`l z?ge0bixhDf5Uq!Ki0(ef1}r+AZbWAp8L>D_29sl9!eW_N@XXCE%*}ZmmR^QmhL7L2 zh%u9C%r-VfUA3oY=wQv# z>nHXc>k2(*u{Bkxk(IqRE?rZ5d)~~U4acwUdB!-BxUaH8%gNg5LGe9UuU7W?6<@@5 zPrtLdbWG)6(%p+nW`_$(OD})j_$3Q;x_bU__tBFV%byC2`i|F}UG%CUJ# z`;#4KX1rc`X3$RHlKW0f9>1ZoYJ8u^!6vur<2$QPpsAlOzC4D@vu>R@ozt_f{IiuWBPwc{KkGn4^8K`vf@K}ir>mxPigv`- zPHSv^-23M9+yUDgjFq`juBS{Y^R5A%gz%c7cB=Sh_Xx5VuGQoP3MurVZg^vIHktL-qk15GC#_pB>qGlP1WSq=9^^|y&cv>p0%U9pUp%O9y9aR{_^@s zPR;Gw>>URxMnm==QL#oAtWlW%1LV<#W$)W}HyT$j=k@foFWDB>8WJ#O+(y@~hI5b7 zTdZ$(;WWbf@Y z7>a$^9d^3*t3&s8NX*(=Hia*;dR`EJJTG;_O&@3OGB>NHF(OOjLi&>o#PQ)p$!S15^8yvyJF} h;#j+S^|ViXyBl11JnSsK5ZCD+nk!Qltn7O5WU;pu(J;ojqsI{_p(vzW0~=f46-PeS*FK z8Y?_~JOP43z-IUWw3qC%nlF}#rF?M|({|o`uyC2rN_?;C8m?3S!rmmU`Me@NdJqr{+fOm} z3d`It7Dc7^la&G`Y>_mAE16m;3a8#>zXRZ^7IO6S6W*|RiYnX^F5CVYD!D66(LgWVknF;L)5Fdh0 zzd7FUv;edZ(A_xVFfQPH1M?8{8At{+3WcIVp{c0Q7*tg%Lr0xPQ`gbg($dk=(r3^V zGTA9Ve%~T$RH_wJa(8<6POf?q} z-Tc{FX3=|CB<=JwSC^U3)LBy&W@{%&taT?_WCZlL4TMYWb@Q(!SuW2E*UBt+LMUEj)7fmzVF(-MH8AYItqLwtd;>Z&o&TjyQU)<84pL`L3v{ zscV!0a5#vTpuj{X5$zQaOc!VpAcAN!Eh1}Ax;BQOY)x&y?aZ(?Nn(b3fKIs7Zoq?0{Rrt@QRuY;0m61PwYHleenC6`&m~s8&4X# z?(9BlvOfOR@jj=-Y?h-Y;1!o0*b?06D$N_U7*1{$hyJ8Kcf{#5`EX+|a`mG1&mo!h zmGf#>Zir1QsyAFXasE;JMwf<7{as7DB zaD308ZPYhTbB%--j<%3%pT2!}aAW17_&ao8YBY;@K&W?ab`cp?$< z7=ePvZ~aVLZbW~Gm=wJyopt7Fzjj$|oB1-GHDQtg+nILmiMkm97Wv`V%E{6?`}XBY zdV!gcA@vO`9Xt%JII11kccG7Ge=HaD?U=YQXRozZWvXSgVSMD}r9S3cKk!0kBpK&U>^fu9$DY$1 zTQqL2|ES?(i>sI3FGKM?M|Q6pOYbG3;4 zw>Yn~yk7C{)VYR;ihH*@hm0tdvf9PKT`a)Ae7}SCy9?h^ln0{kU`Y YJx8;J)j2aBX+LNfbNu$cQ7GE{8}r~h5dZ)H literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_b.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..dd9cc037ae4f719451ae8d9d6ceaf048321856e8 GIT binary patch literal 89 zcmZ?wbhEHb+0(2=jZ3<=H}()<>TYy;^N}r;o;!m;NRch z-rnBb-QEBH{{R30A^8LW0015UEC2ui015yV000GXAjJ$pK$d~^6s3R$*@U=nz*UV= z2OTCQC)7rx(!DU67@}s;Y$ys^$+@{q6a-U1!^Kb>I+6y1$yg5o!N7cRT1F=Jrjv=F u1DFeDuAx9!WEmSA8W$A{0%cBI8Fd6)kdO`!k&zsfm5>dYkVBkKApkpYMTA!X literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_lb.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_lb.gif new file mode 100644 index 0000000000000000000000000000000000000000..62031769817f25406026b8536ca77aa7cea3d8e3 GIT binary patch literal 84 zcmZ?wbhEHb-(+0(2=jZ3<=H}()<>TYy;^N}r;o;!m;NRch z-rnBb-QEBH{{R30A^8LW0015UEC2ui015yV000GXAjJ$pK$d~^6s3R$*@U=nz*UV= z2OTCQC)7rx(!DU67@}s;Y$ys^$+@{q6a-U1!^Kb>I+6y1$yg5o!N7cRT1F=Jrjv=F u1DFeDuAx9!WEmSA8W$A{0%cBI8Fd6)kdO`!k&zsfm5>dYkVBkKApkpYMTA!X literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_r.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/formtab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..644a5405e634e58739290689f0711a034fe0eb64 GIT binary patch literal 89 zcmZ?wbhEHb+0(2=jZ3<=H}()<>TYy;^N}r;o;!m;NRch z-rnBb-QEBH{{R30A^8LW0015UEC2ui015yV000GXAjJ$pK$d~^6s3R$*@U=nz*UV= z2OTCQC)7rx(!DU67@}s;Y$ys^$+@{q6a-U1!^Kb>I+6y1$yg5o!N7cRT1F=Jrjv=F u1DFeDuAx9!WEmSA8W$A{0%cBI8Fd6)kdO`!k&zsfm5>dYkVBkKApkpYMTA!X literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12cf257540b1b6ee3a48f030d0b2ed1958ce666e GIT binary patch literal 2825 zcmcIl2~<;88on<(BnBQy1fqt=Zav41RjGo21W=JpKnpozu>oGk?y#@8w^=|Ni&?A90&_ z2#gnr{lx%*v;bKE0P&281;yc7ToZ?@Fvl6Qz#K3C0O~Wt5UB=NBx>cj5g-W#~W-_85m>C-j^%Zbu=!}q2&hBjm;~WPlK|mzj$8?-^ zoayg5x=2H#k(Q|?N=>X({b3{(JoVot>J#YY{~*)VfW`1ll*dTPRADvAEC6MJegXX% zizbAHEWz;AQnh+ik*uIzCS-&vO3h4Cn`WF zG&+OHGB9MrhW=QH019DWdXm4v@w8nYjo?{ty3v-vn_?#=$x|r67wMkzb-*EnBV*5+6 z{g$GQC-SOqJ?bwmz0mM@AUt+;W`0T8#m0_TuD%hnq^zxb%P%!`4x)fUfoN$uOiTvd zSqH&#wh0X)NU-A39oBE=lL)Fp>Ute*qFUAIIo_dyXpK{!ErSHWv~xaJ4?z@~#`uJ} zXr*oA5dJd)`}YutJAgyg#YBMzxZiy*dHb}oV`YDHIB0TFB=kt@&P!@sThaOaZ7}{K z^2VeQh4nz{)OC$}+_L(^{~D?k62O6-7T7@m|9AJF?>h20TAP~Efz@8Vh%YU-w=6jw z+x`!Sl1-}NzkJV}-*dn^QSl)6NlRcC0oog@tyyAMuJzQudkO14%bad*?pNUKn>E~j zhS?pkE#f$Pp3@3h*@2&S%^0qk^sczRYUQeeJMmA^O!18`XPrNF=tSuc75fivP00(( zeHylScyUtGi12x5MB&oFboWLNmB_+>{Z6Btlf~yF4)wMWH*USD9Z0$R!cq10+yG_E zG`sl=+<$0VR}}x~^Nd@|2@o)}f^yB}jna((E6!ejvv`BQLNYi+SM`o$Pa(kF6S8Ob z%hxre;ZHjozOTx;I#P69Tru1b?Z&>_+OMd@%gV}!h24XnUij*1PWHga-~a(SdI@m< zaKCC@L|-}4tm{)tVYpPSfgcSOH;h>29$R@B}e%)ImxYB#EME~B9V3mE#mVC}+QijKYm!qkHf+qy`sUm3a&oui>nvFUd6oz}MYM~^!?pL9L#d-1Y=;ML&J z>o*X#1p=u0!8Ja+ew7!T4*KE1B=bTjNo3+Ejcz%cVd5FglqB%19M-e=UT{WL8CW}p z^a`TXb%qmdoLX)B$kcS1{kg=_|EJ8x6MLW6M+2ol`@5C%vZ`JkZE5kD(zs8>_T{b8eezqgy%$jNf@J?%{U)nxgQMdDT$EKeHYXpVuuYV~Sde~l_HDVk5c}wx-*C)&9 zuEP(0>gn9;o>$i$iDx`_w|UZa@S{?t^vOJve;A;Nu{7>wHVgnAI zT)T7a*^!NIW@~(ROs+j}zo{#AW|zfWSGSzic{!^IkTvt&%%Qyr2je%z?XdF8Z+rMl zd8H3)O5gUwZj@AXWohXd;n{$u`fJxOOsjA_lAo=t`eIXsuPThQx$ses&z6bY?YG5l(O?Tpq?w!zuh6#U%G zOt;f1S4CERKKq+Jl}Rn~o~q)_RkV3O&RO75dBwe<=d%ZIYkdTlB2RbM?7%~phyLBU IhDS928~wM@0RR91 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12cf257540b1b6ee3a48f030d0b2ed1958ce666e GIT binary patch literal 2825 zcmcIl2~<;88on<(BnBQy1fqt=Zav41RjGo21W=JpKnpozu>oGk?y#@8w^=|Ni&?A90&_ z2#gnr{lx%*v;bKE0P&281;yc7ToZ?@Fvl6Qz#K3C0O~Wt5UB=NBx>cj5g-W#~W-_85m>C-j^%Zbu=!}q2&hBjm;~WPlK|mzj$8?-^ zoayg5x=2H#k(Q|?N=>X({b3{(JoVot>J#YY{~*)VfW`1ll*dTPRADvAEC6MJegXX% zizbAHEWz;AQnh+ik*uIzCS-&vO3h4Cn`WF zG&+OHGB9MrhW=QH019DWdXm4v@w8nYjo?{ty3v-vn_?#=$x|r67wMkzb-*EnBV*5+6 z{g$GQC-SOqJ?bwmz0mM@AUt+;W`0T8#m0_TuD%hnq^zxb%P%!`4x)fUfoN$uOiTvd zSqH&#wh0X)NU-A39oBE=lL)Fp>Ute*qFUAIIo_dyXpK{!ErSHWv~xaJ4?z@~#`uJ} zXr*oA5dJd)`}YutJAgyg#YBMzxZiy*dHb}oV`YDHIB0TFB=kt@&P!@sThaOaZ7}{K z^2VeQh4nz{)OC$}+_L(^{~D?k62O6-7T7@m|9AJF?>h20TAP~Efz@8Vh%YU-w=6jw z+x`!Sl1-}NzkJV}-*dn^QSl)6NlRcC0oog@tyyAMuJzQudkO14%bad*?pNUKn>E~j zhS?pkE#f$Pp3@3h*@2&S%^0qk^sczRYUQeeJMmA^O!18`XPrNF=tSuc75fivP00(( zeHylScyUtGi12x5MB&oFboWLNmB_+>{Z6Btlf~yF4)wMWH*USD9Z0$R!cq10+yG_E zG`sl=+<$0VR}}x~^Nd@|2@o)}f^yB}jna((E6!ejvv`BQLNYi+SM`o$Pa(kF6S8Ob z%hxre;ZHjozOTx;I#P69Tru1b?Z&>_+OMd@%gV}!h24XnUij*1PWHga-~a(SdI@m< zaKCC@L|-}4tm{)tVYpPSfgcSOH;h>29$R@B}e%)ImxYB#EME~B9V3mE#mVC}+QijKYm!qkHf+qy`sUm3a&oui>nvFUd6oz}MYM~^!?pL9L#d-1Y=;ML&J z>o*X#1p=u0!8Ja+ew7!T4*KE1B=bTjNo3+Ejcz%cVd5FglqB%19M-e=UT{WL8CW}p z^a`TXb%qmdoLX)B$kcS1{kg=_|EJ8x6MLW6M+2ol`@5C%vZ`JkZE5kD(zs8>_T{b8eezqgy%$jNf@J?%{U)nxgQMdDT$EKeHYXpVuuYV~Sde~l_HDVk5c}wx-*C)&9 zuEP(0>gn9;o>$i$iDx`_w|UZa@S{?t^vOJve;A;Nu{7>wHVgnAI zT)T7a*^!NIW@~(ROs+j}zo{#AW|zfWSGSzic{!^IkTvt&%%Qyr2je%z?XdF8Z+rMl zd8H3)O5gUwZj@AXWohXd;n{$u`fJxOOsjA_lAo=t`eIXsuPThQx$ses&z6bY?YG5l(O?Tpq?w!zuh6#U%G zOt;f1S4CERKKq+Jl}Rn~o~q)_RkV3O&RO75dBwe<=d%ZIYkdTlB2RbM?7%~phyLBU IhDS928~wM@0RR91 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12cf257540b1b6ee3a48f030d0b2ed1958ce666e GIT binary patch literal 2825 zcmcIl2~<;88on<(BnBQy1fqt=Zav41RjGo21W=JpKnpozu>oGk?y#@8w^=|Ni&?A90&_ z2#gnr{lx%*v;bKE0P&281;yc7ToZ?@Fvl6Qz#K3C0O~Wt5UB=NBx>cj5g-W#~W-_85m>C-j^%Zbu=!}q2&hBjm;~WPlK|mzj$8?-^ zoayg5x=2H#k(Q|?N=>X({b3{(JoVot>J#YY{~*)VfW`1ll*dTPRADvAEC6MJegXX% zizbAHEWz;AQnh+ik*uIzCS-&vO3h4Cn`WF zG&+OHGB9MrhW=QH019DWdXm4v@w8nYjo?{ty3v-vn_?#=$x|r67wMkzb-*EnBV*5+6 z{g$GQC-SOqJ?bwmz0mM@AUt+;W`0T8#m0_TuD%hnq^zxb%P%!`4x)fUfoN$uOiTvd zSqH&#wh0X)NU-A39oBE=lL)Fp>Ute*qFUAIIo_dyXpK{!ErSHWv~xaJ4?z@~#`uJ} zXr*oA5dJd)`}YutJAgyg#YBMzxZiy*dHb}oV`YDHIB0TFB=kt@&P!@sThaOaZ7}{K z^2VeQh4nz{)OC$}+_L(^{~D?k62O6-7T7@m|9AJF?>h20TAP~Efz@8Vh%YU-w=6jw z+x`!Sl1-}NzkJV}-*dn^QSl)6NlRcC0oog@tyyAMuJzQudkO14%bad*?pNUKn>E~j zhS?pkE#f$Pp3@3h*@2&S%^0qk^sczRYUQeeJMmA^O!18`XPrNF=tSuc75fivP00(( zeHylScyUtGi12x5MB&oFboWLNmB_+>{Z6Btlf~yF4)wMWH*USD9Z0$R!cq10+yG_E zG`sl=+<$0VR}}x~^Nd@|2@o)}f^yB}jna((E6!ejvv`BQLNYi+SM`o$Pa(kF6S8Ob z%hxre;ZHjozOTx;I#P69Tru1b?Z&>_+OMd@%gV}!h24XnUij*1PWHga-~a(SdI@m< zaKCC@L|-}4tm{)tVYpPSfgcSOH;h>29$R@B}e%)ImxYB#EME~B9V3mE#mVC}+QijKYm!qkHf+qy`sUm3a&oui>nvFUd6oz}MYM~^!?pL9L#d-1Y=;ML&J z>o*X#1p=u0!8Ja+ew7!T4*KE1B=bTjNo3+Ejcz%cVd5FglqB%19M-e=UT{WL8CW}p z^a`TXb%qmdoLX)B$kcS1{kg=_|EJ8x6MLW6M+2ol`@5C%vZ`JkZE5kD(zs8>_T{b8eezqgy%$jNf@J?%{U)nxgQMdDT$EKeHYXpVuuYV~Sde~l_HDVk5c}wx-*C)&9 zuEP(0>gn9;o>$i$iDx`_w|UZa@S{?t^vOJve;A;Nu{7>wHVgnAI zT)T7a*^!NIW@~(ROs+j}zo{#AW|zfWSGSzic{!^IkTvt&%%Qyr2je%z?XdF8Z+rMl zd8H3)O5gUwZj@AXWohXd;n{$u`fJxOOsjA_lAo=t`eIXsuPThQx$ses&z6bY?YG5l(O?Tpq?w!zuh6#U%G zOt;f1S4CERKKq+Jl}Rn~o~q)_RkV3O&RO75dBwe<=d%ZIYkdTlB2RbM?7%~phyLBU IhDS928~wM@0RR91 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2eb8fc84afe3bb300fe00299160e052f90634ef GIT binary patch literal 2870 zcmcIl2~<;88on<(BqTf%R+WTZodP18Qp+kJXa$1EQY$7Tgh)&v2~a#DD!5`tMG(QM z9z><+s0Z1^S}6(wp6U?=#03yk5EaW#2SzgYC5YPToOb4%`E%}lFaP@e_rL%DRPCy# zKsV4Yzz-mhJP}U-R0Cv};5eC5rihaza2)LxfhFDnU*ZR}xk80ZlB5*NqyUmG*Z_9~ z{$`$-7D30zFM{JQk@0yF&ML7ePAQg(I9^hbLAgjlMunphS9=c!ph zbH=7RVcb<5S+Y5-XR!7^OMONECUu$<#BlnUiMB`mHtPk|xCup??8 zH2u}W6i&EUDv+fpIBVjPHu0rAu>=78cbE=b?-8v6fXspX?GPWL`lwrQ2)rLFU~S$4 zx|cx47XraHXosjCgG@l9P$*gynwAy~rD{`AeFlxj&^KZ-^_ff~l%}Schvv_3cSMIu z)uHR?(&@S^I-SnKHabgVg8mr?s-FN#fsl>yh&jNa2p&aL9q<5fsyf62q9kJ74$n+O zc!1ytL=u^zrA>tm{izTEIQ)B|E`Hp5EvQ>8IVE0gr!r9>Dr3~xkht~*vuNNs@4DW^Y2#3ouZ`@CM zHsWWKb82UKZe7ds(bE<6tuMyb#wPDNa;EZTTkp85f4C@RcV2N-!-KvF6yR_WEkTWm zOd>j~A(%Pn5g>v@b0%@|_CqWTK`pm=(9x3LE#Hyt6RIDha2m2AVF1Y1&e!ij5JiRp z-!K=YuxA#+e@0;Q0fOogpyAaqQQ!dvrc2+&6cs+(5oLR;GR-8`+T#lqXx!M{HTL?o z#orm5-fUn$t>0wpF|Ttp{d{tp3S6)i1yAq%>U)M>dj9A06gB>nL8B-9NB5;hbeMKl z?{kzp9J@cz)F><7|Hx=g=!z-!xkKCfer$OzJ%4OCZI1Yz$3Hi>-pFE^G3O`d*WG!Y zRcuJWua@WREeSJa57>3J9=ISX>3lM`*X3&7f#!$~lVMVyt9a7>>!@M0zq#$@6gug0 z*E1%oz}7wg%Go!0n{&etO3s}7Vr9yMX@g(-!Y^7)Y*|0J%sm5tIHPI(^UDjzdb)ek zRd-))t$MdMJv>G}Sh@ezv8woT1J{GMRiI$}hnIG^w};y1H%gr^FV(3Ys@T5sr#l&= zxo^)+7d+LAx?0?sR=RE(yQm?3!gkrUE`zEx@p#u+cBsPP(&LuNbH3IkqYi?lwGCMV zY0}Zh6*b-$@7Z;1sm#ur4C?e~OaJ+)3S9kqvPL#p^KFglp=R=!nXDDc74S2}iIHte z;3>s?u|%v)<%p%R*suX%aH;P$19$-e96)>^1RM|y;^4ayE`|CH4qd?f0}T#v0d`;! z=1>!xL<!Tbi3%&NXG5VonffN+yx%6bjvxg|bZlYx=$JuLJCV z>wDPtv#qVF0~NXehu~p*hJTf{qKJn{6CLwG#0`Qt~HapRNlNX#Bnvp@q@dFUQ@Og2C5r~N5|JqCymrMG(_(i?zFAjeE!t@>UY;8 z3w=&-{eEdHpLSdK_{%BJddA)*&6{47MTRTTalUS2d(hE@=;GV`-1sP2roFr6%l?b; zZnUkY)vXr~H{CZc+iO;}melogLHm&f*1^)l@phK|6R!srMXa;c4oO-tveds|yk_M? zI~7QL+E&6n)%DqVQB1QtbxWN4!dCM^71(2Yva;ng`OQefaDyYUiL2FJn(fy6d{E*$;#ea2d;JmJ;{C1XB4<*p`S80CwHLz zRc&idPfLaP_{yQFZb_$8RaWHPOzMTGh8H<<-E}v$%v_T<1QCX!9XGn`4sAVg*7tPh zH{p?g9p@HWd=-1p!3IyyUwv&fB*^Y|DN8)%9GfRkGzwJYIX;Ot1efO8>-Sx-q zcYW?!MU#|w^aSAl#upo}zU$ej?V8lY*&lva8L~dvMn9Apa;NAAw-WBR^M~tH5B~)l CE!^4w literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2eb8fc84afe3bb300fe00299160e052f90634ef GIT binary patch literal 2870 zcmcIl2~<;88on<(BqTf%R+WTZodP18Qp+kJXa$1EQY$7Tgh)&v2~a#DD!5`tMG(QM z9z><+s0Z1^S}6(wp6U?=#03yk5EaW#2SzgYC5YPToOb4%`E%}lFaP@e_rL%DRPCy# zKsV4Yzz-mhJP}U-R0Cv};5eC5rihaza2)LxfhFDnU*ZR}xk80ZlB5*NqyUmG*Z_9~ z{$`$-7D30zFM{JQk@0yF&ML7ePAQg(I9^hbLAgjlMunphS9=c!ph zbH=7RVcb<5S+Y5-XR!7^OMONECUu$<#BlnUiMB`mHtPk|xCup??8 zH2u}W6i&EUDv+fpIBVjPHu0rAu>=78cbE=b?-8v6fXspX?GPWL`lwrQ2)rLFU~S$4 zx|cx47XraHXosjCgG@l9P$*gynwAy~rD{`AeFlxj&^KZ-^_ff~l%}Schvv_3cSMIu z)uHR?(&@S^I-SnKHabgVg8mr?s-FN#fsl>yh&jNa2p&aL9q<5fsyf62q9kJ74$n+O zc!1ytL=u^zrA>tm{izTEIQ)B|E`Hp5EvQ>8IVE0gr!r9>Dr3~xkht~*vuNNs@4DW^Y2#3ouZ`@CM zHsWWKb82UKZe7ds(bE<6tuMyb#wPDNa;EZTTkp85f4C@RcV2N-!-KvF6yR_WEkTWm zOd>j~A(%Pn5g>v@b0%@|_CqWTK`pm=(9x3LE#Hyt6RIDha2m2AVF1Y1&e!ij5JiRp z-!K=YuxA#+e@0;Q0fOogpyAaqQQ!dvrc2+&6cs+(5oLR;GR-8`+T#lqXx!M{HTL?o z#orm5-fUn$t>0wpF|Ttp{d{tp3S6)i1yAq%>U)M>dj9A06gB>nL8B-9NB5;hbeMKl z?{kzp9J@cz)F><7|Hx=g=!z-!xkKCfer$OzJ%4OCZI1Yz$3Hi>-pFE^G3O`d*WG!Y zRcuJWua@WREeSJa57>3J9=ISX>3lM`*X3&7f#!$~lVMVyt9a7>>!@M0zq#$@6gug0 z*E1%oz}7wg%Go!0n{&etO3s}7Vr9yMX@g(-!Y^7)Y*|0J%sm5tIHPI(^UDjzdb)ek zRd-))t$MdMJv>G}Sh@ezv8woT1J{GMRiI$}hnIG^w};y1H%gr^FV(3Ys@T5sr#l&= zxo^)+7d+LAx?0?sR=RE(yQm?3!gkrUE`zEx@p#u+cBsPP(&LuNbH3IkqYi?lwGCMV zY0}Zh6*b-$@7Z;1sm#ur4C?e~OaJ+)3S9kqvPL#p^KFglp=R=!nXDDc74S2}iIHte z;3>s?u|%v)<%p%R*suX%aH;P$19$-e96)>^1RM|y;^4ayE`|CH4qd?f0}T#v0d`;! z=1>!xL<!Tbi3%&NXG5VonffN+yx%6bjvxg|bZlYx=$JuLJCV z>wDPtv#qVF0~NXehu~p*hJTf{qKJn{6CLwG#0`Qt~HapRNlNX#Bnvp@q@dFUQ@Og2C5r~N5|JqCymrMG(_(i?zFAjeE!t@>UY;8 z3w=&-{eEdHpLSdK_{%BJddA)*&6{47MTRTTalUS2d(hE@=;GV`-1sP2roFr6%l?b; zZnUkY)vXr~H{CZc+iO;}melogLHm&f*1^)l@phK|6R!srMXa;c4oO-tveds|yk_M? zI~7QL+E&6n)%DqVQB1QtbxWN4!dCM^71(2Yva;ng`OQefaDyYUiL2FJn(fy6d{E*$;#ea2d;JmJ;{C1XB4<*p`S80CwHLz zRc&idPfLaP_{yQFZb_$8RaWHPOzMTGh8H<<-E}v$%v_T<1QCX!9XGn`4sAVg*7tPh zH{p?g9p@HWd=-1p!3IyyUwv&fB*^Y|DN8)%9GfRkGzwJYIX;Ot1efO8>-Sx-q zcYW?!MU#|w^aSAl#upo}zU$ej?V8lY*&lva8L~dvMn9Apa;NAAw-WBR^M~tH5B~)l CE!^4w literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/go_dtl_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2eb8fc84afe3bb300fe00299160e052f90634ef GIT binary patch literal 2870 zcmcIl2~<;88on<(BqTf%R+WTZodP18Qp+kJXa$1EQY$7Tgh)&v2~a#DD!5`tMG(QM z9z><+s0Z1^S}6(wp6U?=#03yk5EaW#2SzgYC5YPToOb4%`E%}lFaP@e_rL%DRPCy# zKsV4Yzz-mhJP}U-R0Cv};5eC5rihaza2)LxfhFDnU*ZR}xk80ZlB5*NqyUmG*Z_9~ z{$`$-7D30zFM{JQk@0yF&ML7ePAQg(I9^hbLAgjlMunphS9=c!ph zbH=7RVcb<5S+Y5-XR!7^OMONECUu$<#BlnUiMB`mHtPk|xCup??8 zH2u}W6i&EUDv+fpIBVjPHu0rAu>=78cbE=b?-8v6fXspX?GPWL`lwrQ2)rLFU~S$4 zx|cx47XraHXosjCgG@l9P$*gynwAy~rD{`AeFlxj&^KZ-^_ff~l%}Schvv_3cSMIu z)uHR?(&@S^I-SnKHabgVg8mr?s-FN#fsl>yh&jNa2p&aL9q<5fsyf62q9kJ74$n+O zc!1ytL=u^zrA>tm{izTEIQ)B|E`Hp5EvQ>8IVE0gr!r9>Dr3~xkht~*vuNNs@4DW^Y2#3ouZ`@CM zHsWWKb82UKZe7ds(bE<6tuMyb#wPDNa;EZTTkp85f4C@RcV2N-!-KvF6yR_WEkTWm zOd>j~A(%Pn5g>v@b0%@|_CqWTK`pm=(9x3LE#Hyt6RIDha2m2AVF1Y1&e!ij5JiRp z-!K=YuxA#+e@0;Q0fOogpyAaqQQ!dvrc2+&6cs+(5oLR;GR-8`+T#lqXx!M{HTL?o z#orm5-fUn$t>0wpF|Ttp{d{tp3S6)i1yAq%>U)M>dj9A06gB>nL8B-9NB5;hbeMKl z?{kzp9J@cz)F><7|Hx=g=!z-!xkKCfer$OzJ%4OCZI1Yz$3Hi>-pFE^G3O`d*WG!Y zRcuJWua@WREeSJa57>3J9=ISX>3lM`*X3&7f#!$~lVMVyt9a7>>!@M0zq#$@6gug0 z*E1%oz}7wg%Go!0n{&etO3s}7Vr9yMX@g(-!Y^7)Y*|0J%sm5tIHPI(^UDjzdb)ek zRd-))t$MdMJv>G}Sh@ezv8woT1J{GMRiI$}hnIG^w};y1H%gr^FV(3Ys@T5sr#l&= zxo^)+7d+LAx?0?sR=RE(yQm?3!gkrUE`zEx@p#u+cBsPP(&LuNbH3IkqYi?lwGCMV zY0}Zh6*b-$@7Z;1sm#ur4C?e~OaJ+)3S9kqvPL#p^KFglp=R=!nXDDc74S2}iIHte z;3>s?u|%v)<%p%R*suX%aH;P$19$-e96)>^1RM|y;^4ayE`|CH4qd?f0}T#v0d`;! z=1>!xL<!Tbi3%&NXG5VonffN+yx%6bjvxg|bZlYx=$JuLJCV z>wDPtv#qVF0~NXehu~p*hJTf{qKJn{6CLwG#0`Qt~HapRNlNX#Bnvp@q@dFUQ@Og2C5r~N5|JqCymrMG(_(i?zFAjeE!t@>UY;8 z3w=&-{eEdHpLSdK_{%BJddA)*&6{47MTRTTalUS2d(hE@=;GV`-1sP2roFr6%l?b; zZnUkY)vXr~H{CZc+iO;}melogLHm&f*1^)l@phK|6R!srMXa;c4oO-tveds|yk_M? zI~7QL+E&6n)%DqVQB1QtbxWN4!dCM^71(2Yva;ng`OQefaDyYUiL2FJn(fy6d{E*$;#ea2d;JmJ;{C1XB4<*p`S80CwHLz zRc&idPfLaP_{yQFZb_$8RaWHPOzMTGh8H<<-E}v$%v_T<1QCX!9XGn`4sAVg*7tPh zH{p?g9p@HWd=-1p!3IyyUwv&fB*^Y|DN8)%9GfRkGzwJYIX;Ot1efO8>-Sx-q zcYW?!MU#|w^aSAl#upo}zU$ej?V8lY*&lva8L~dvMn9Apa;NAAw-WBR^M~tH5B~)l CE!^4w literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d5caef8a888c659e3ab3b5353bd5344011caf20 GIT binary patch literal 2879 zcmcIl3se(V8orY^5E6z2iKrn26m{zZ0%)xj0eM-Gw_&Lj0}LTHB#;as)<+f8qEL?% zEFxu#50F}QQ31unx~PR(s|bR;svuTSkwOH-qIC97f>68N)9#+Lf6l!#`5*Uw-+%A_ z579z&0<)D~zFq)5)iA#)!JBfyht*CAz1A0>qqS~4#Ko*Wg@Ons{j-; zupZ6`{Ea_JFPf>qD@^3AR7c8`qE!lcEUr+=MQ$p&5`)fw28U4ZH`RR7&rOLd@Wkjh zJ*a~w0UCu07kMdVaxIKAA{QV9(c_^Rb3D}XDH?JQy^q19x7nNVSIXjLDol%s-dqG2 z!*GL8^sI(0J=99IM&u(?#^7odCJM%I5;M7@4_FWr1O1h7X6S>EaZTaDya|mXv>+fH z&aZu(^_qE;8vRZ$#&-(Q$W+=GO!MoV;$hZ*SE!HRD*p$Y{tQ?Q??gp3MpA{RNwNTx z<%R(aITo6R2CWjQlQ4~D+>ty%gUyN&tW-o9q7_hSU{9I>5Wq1N4jRlM29yBuo5(wS zosidOK`KapGVTvVj~qpPJv>CADqJR)W6`gV9~r+He9Kj`6qsP&6(Vm;g=u6sJYaX3 zmb_pjenh_p+hR4AERrfz(duNaC?qy9E>a~^C;^}rkUns{Mzjh5rU>eHKzs=CtBRo@ zke?4cpPvB7Em|Fkf#{E69742%G{9!DSVkbp#MH#Zlw)ef;h6C`91fqHIDA70`ezm({s~YPggljshyevfs3=0*g$bY#R}oi; zl1^4U%$Y%`0HM(63?|FS*aQ~!n??jssIQG?0HGmN3XMW%GFWsfTLO(Jm1bk^Kz9q2 z@x%$+9U1)ng{AJcb{0X^krF4(j(QK~%&g#n`?@Ht^OVD9QfICBEF{|V@)6v{vLUn! zdv-SM%I(AlgI@O8M|Ymfx!U;S(6O>_njQ|XiAmaZps2j&PWSUg-cot;?$3)WYMXmT zP(YzTv@|^?CWG#*hhXDiPJ;*%#5}s=_WgVkL3L35fW$8HzGg?3N3cbd)=4*$K>}dT za=zREK^(D+_6&8wv91XS{~3Y(Bm|-ju&MezQQ!*h_Kt1&Vov6%^1Y5gd>1 zQ`CQ|HACgcKGz)c^{&!P+n?EIRow)bBOk*`f9k#P&TvcjuGE)bnw|*#BH8lz+Iwf4 zsI79pd4k;BlSvKoZ6$FxpG!uPRHs|coyo{8y&P6rYi~CEUEqj6|59G<^n~nXDZl*9 z`bpdRbe~jPtF|iFdrN&srFT}VHxd z&~w1J;JsOLOE2>yDnDJ&D-_P{I=RuB zxOIE<#_*=6&m{35zddi7@_6n&W_?@#Q0CgrCy z@Qaa;n)B_-n3fgR+P2QFeHHx#$R~h(^_cnxMS;+Et#sWf&fSRc(Tl@T3;LXU5~pmk zXiN^xSYLJXRr3eJwwAhMkH?&wuSL9Lx371szn1{t-zPwo^vMg?6EE6{R(;znMbCipsyeZQyd3-Ai6cyMAtY*xxwzlS3itWTgyXit}A-MpLexkIAtDwvbP!K9CZz>%UfZki69nes^xs8JxgBK`ciWB&-yb4*i z?xochu)gdhk(wPw##1Z>Q>|vsvY$O?u9LINqQ!47@mS&M@?VOt}Bs_$l#9ql)~ zV9zkL3?|77p(K;UQ5xOGfnn|z$do1U#E#ope0SKns*P+VK?4?%ntJ0Yc24(a>PTvO zW`B;@j{k|-1hGk8Z?u^q^`5QEc2_^IZ-3u&Mor1$xAvdiTw3gRW8W<)wRqjD5ASsD z3%T9dXnO9|mGZ@f-ZR`nHAaGWH%TSBPrDS$W^E`^Z9a&i{(gla+lNlwY_AQENMF#U ztJ@oSanClc(}zWm^FmhJ#@IQe*tyQl=v<%EnS5i**7?o@8#nrMef+*?AS$n>w!RoHlcHwo;+(?#uTaZ-+OG`qJK$*rext@+~JV`2kIO zqO%OC((^~zJ+TWP$aEjuBt;BKyc!I47RfB^3~nX=Rp7f literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd1ca626858cdb6d23ca2555f4211eeb971b64a5 GIT binary patch literal 2844 zcmcIl2~<;88on<(5CV@RY!-NIQe|8KMX1L?2q8dG1O$}nh=Bx%hCE1uGzwU7Egl&+ zv~)y9Q9+7$K$hZIDWWhAQyrv$3uqAq5!n|JmCSt!qINo`ojGUzoO|EPzufzM|GoeJ z)OXZB0YiTuKOcZVS&6I!K;2JwUK58aaYY=SfVnJO4BWi@R+0O4gT)G5nxvHAG62O8 zY=koce=|?Qi=uDpvkntT@hG7b3y{RdDJ8O4%u^OC6+>r0fx}YcXJ+)y&r_sSG_1x=c(@doW4=OZj1rfLu@JG6z)bAu3l_!1Kz}KmX__EpMsqUf>sgI6v>+e? z&ToB|YBUSpX*4@c&g`^SE|e)^#PaudN`P7aMIk?htNb5qnloU~1W6K+n4k(zlVAZz zE42e?b8M*}8XSP(Tf}ntj3aS^TAMj7L@J5aMkhk0mOWtxz!VNMI2bU8Vju+xAQA{c zG*Cj_+x)}VS$SVa#1ZkoA{quL>c`_@p)#c~HdZWpdkv788^SRO5UOCJ{k$=OSSFSW zmGGdwgbL!K5j+sh8cgnLaWWPzk%{nR1-3RWDLzUjlt=*}XAwSdyhRiM03CyRImCyk z->V!F0(ttva~c3FPZ1s^2BI%u9HPDtb^<1Y!O&qab#$1ho~|CsHDEFgxTb72m(4as znHrgSX#f0tM)dXc^jZ3bES4dM#bR-YiN(=|puc4S_4fc}K*(lf#0HR1gp4BU4wwLv z`WoT^QBsM@hdI*<86YGIl}2ai=<31Z{?Ld368Wvs5FiwUOrnsebQ*(7X1YKlN~TyF zIZ-`>glwC{bY~jp;K@=iTRU!WZIsIrc}5eDZht6bsB<`4vDElf*^as1hu4buSM!yw zCbvT$iAOH(tZPo{8uf8Fa(Y*J_O%}$kDaNw-tuHTEN08@qh~AYTe~Ng3BqHO_Z%yz zYG~_ufdUcgi@j|%KiY3GL zGy(v9?$WEbA&7hv5kJ&bDSk8y;XfmAcn3j!4=~A^JyGBRI{MzE=FZz+Qn}B$*r@e{ zxkqYWu0?d;ipLR+RuvDuX%*)^Xw~FC#|Hz|higXlBAQ+wptYcX{^Ouo4z?%y!2F`W zY<$t)lYKI;qb|#+F4NsDz3a#+`3d*!E?K7ezuSIu^@if(DW=CyY<7*yYuRW1rw46g z0_NvwlC)z_m*>vu^WoCq86&^_T+xUFL3VQ<3g%Yo{DHc$O9zV-Qt zOTriK3+6}*zj{D#x;Hqs|FbJMOZj-+tA#w?t?G;dw!_Q#Ioo>|dH6~C`gt7_-@4`Z zzv+72KmE;)sn?OVd3kr5+Xt4Xs6qZ{+Tp&)@U-HX)U%fdPTlgll=ZAMmpYK#ed*~$ zYklgXz}}K8{x9#^4Ys{{*rokYPEKsgMBlPK9~0TB#w!VlWbBbleQ#( zuG+d|=dRs*_I{ap=#Ugx8($4|O@p7uT)9vK}QpLj9(atgw>LI7FYzGgev&v?Nep=}X#f)_$c zCWxaHs zJ6<2Ol`%Xs?e}}G8aLgKXt1b1=hl9(s$>5rGHF`I#vb(~w3ii@@`s=JkGzN@tg z?;PZ;FHUyxwfXeGmGw*k(%e3La6{FONZUdlf}ZtINvEYtHppnN3@EOlI)gl$d26m=f%)d64(hxA0wIytV*mgE literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/help_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d5caef8a888c659e3ab3b5353bd5344011caf20 GIT binary patch literal 2879 zcmcIl3se(V8orY^5E6z2iKrn26m{zZ0%)xj0eM-Gw_&Lj0}LTHB#;as)<+f8qEL?% zEFxu#50F}QQ31unx~PR(s|bR;svuTSkwOH-qIC97f>68N)9#+Lf6l!#`5*Uw-+%A_ z579z&0<)D~zFq)5)iA#)!JBfyht*CAz1A0>qqS~4#Ko*Wg@Ons{j-; zupZ6`{Ea_JFPf>qD@^3AR7c8`qE!lcEUr+=MQ$p&5`)fw28U4ZH`RR7&rOLd@Wkjh zJ*a~w0UCu07kMdVaxIKAA{QV9(c_^Rb3D}XDH?JQy^q19x7nNVSIXjLDol%s-dqG2 z!*GL8^sI(0J=99IM&u(?#^7odCJM%I5;M7@4_FWr1O1h7X6S>EaZTaDya|mXv>+fH z&aZu(^_qE;8vRZ$#&-(Q$W+=GO!MoV;$hZ*SE!HRD*p$Y{tQ?Q??gp3MpA{RNwNTx z<%R(aITo6R2CWjQlQ4~D+>ty%gUyN&tW-o9q7_hSU{9I>5Wq1N4jRlM29yBuo5(wS zosidOK`KapGVTvVj~qpPJv>CADqJR)W6`gV9~r+He9Kj`6qsP&6(Vm;g=u6sJYaX3 zmb_pjenh_p+hR4AERrfz(duNaC?qy9E>a~^C;^}rkUns{Mzjh5rU>eHKzs=CtBRo@ zke?4cpPvB7Em|Fkf#{E69742%G{9!DSVkbp#MH#Zlw)ef;h6C`91fqHIDA70`ezm({s~YPggljshyevfs3=0*g$bY#R}oi; zl1^4U%$Y%`0HM(63?|FS*aQ~!n??jssIQG?0HGmN3XMW%GFWsfTLO(Jm1bk^Kz9q2 z@x%$+9U1)ng{AJcb{0X^krF4(j(QK~%&g#n`?@Ht^OVD9QfICBEF{|V@)6v{vLUn! zdv-SM%I(AlgI@O8M|Ymfx!U;S(6O>_njQ|XiAmaZps2j&PWSUg-cot;?$3)WYMXmT zP(YzTv@|^?CWG#*hhXDiPJ;*%#5}s=_WgVkL3L35fW$8HzGg?3N3cbd)=4*$K>}dT za=zREK^(D+_6&8wv91XS{~3Y(Bm|-ju&MezQQ!*h_Kt1&Vov6%^1Y5gd>1 zQ`CQ|HACgcKGz)c^{&!P+n?EIRow)bBOk*`f9k#P&TvcjuGE)bnw|*#BH8lz+Iwf4 zsI79pd4k;BlSvKoZ6$FxpG!uPRHs|coyo{8y&P6rYi~CEUEqj6|59G<^n~nXDZl*9 z`bpdRbe~jPtF|iFdrN&srFT}VHxd z&~w1J;JsOLOE2>yDnDJ&D-_P{I=RuB zxOIE<#_*=6&m{35zddi7@_6n&W_?@#Q0CgrCy z@Qaa;n)B_-n3fgR+P2QFeHHx#$R~h(^_cnxMS;+Et#sWf&fSRc(Tl@T3;LXU5~pmk zXiN^xSYLJXRr3eJwwAhMkH?&wuSL9Lx371szn1{t-zPwo^vMg?6EE6{R(;znMbCipsyeZQyd3-Ai6cyMAtY*xxwzlS3itWTgyXit}A-MpLexkIAtDwvbP!K9CZz>%UfZki69nes^xs8JxgBK`ciWB&-yb4*i z?xochu)gdhk(wPw##1Z>Q>|vsvY$O?u9LINqQ!47@mS&M@?VOt}Bs_$l#9ql)~ zV9zkL3?|77p(K;UQ5xOGfnn|z$do1U#E#ope0SKns*P+VK?4?%ntJ0Yc24(a>PTvO zW`B;@j{k|-1hGk8Z?u^q^`5QEc2_^IZ-3u&Mor1$xAvdiTw3gRW8W<)wRqjD5ASsD z3%T9dXnO9|mGZ@f-ZR`nHAaGWH%TSBPrDS$W^E`^Z9a&i{(gla+lNlwY_AQENMF#U ztJ@oSanClc(}zWm^FmhJ#@IQe*tyQl=v<%EnS5i**7?o@8#nrMef+*?AS$n>w!RoHlcHwo;+(?#uTaZ-+OG`qJK$*rext@+~JV`2kIO zqO%OC((^~zJ+TWP$aEjuBt;BKyc!I47RfB^3~nX=Rp7f literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6541516d0eb7975109dfeacb3a6d4a56df73114e GIT binary patch literal 2793 zcmcIl2~<;88on<(Bm`a-2plB|;L5l_z!jGeWE&S25m(xTyo5-|gCs1WE(j=&*6|>q zqjq#C6-Mclg9@m$Gi6chI35>J)D{(FQ7cq7*|eGa5=3n~r=2-x{+xT?d;fC(@4NT@ zf6RBykAOpHU`QZ9pe#j}0$}c|J#x>s1f`IjK ze&ge7(addVaWQ`IdsKV1ESOC&e z>j2h0cD0L&ST4d-Fui`vkvKuC&4m`J)x=t(6QI({o-hL-fWsLM8VCV8U;r4<10(!? zv-j|IT;A0YF+}XIhy^{0hR9^1D4kKRR%6OHR{$Bi9XzMyaueL-kN{B-ro;4dBRph( zxq-N31P8>j28+KEOBF?HbV@wcAX*)loS@LjHCh13NrVp^ZxAg9fG&diD2NX+zf(0N z1m2Tict+iTEmh(Q3@9^T9Af?!WCIq1!LVVlY;0I4)0TH;tEDSnluc!H=j>NPP5}H)Zrm2O?jz^u!u`9X~ytH8~(}wQ^Z)k#UaGt*BP4 z_e^$OL-OOkz$y8k?L1ph-`LiFqT=H1_JK93lwAjlD=*#YcsVyHTAiA6sHEz0Q|BNG zNF<1sV!=eGQGG2C#9kZ|fL)-@hs-D=26zy%O&gH@eI* zVR3cyTGk;{)gfspAN3r3%`X=OI?ywg=howw&m8y5+Mj(jC%x+_c5~a=whehPPT^(o zT?^M4wT-WZ5obot;L0ZNzGJ0_@>0X_lVK&3Gw;-~pGq!N<#ee!s{5P@SALKg^I)-f zCfe(q_~4U`8$Himx4(Ac)x+B*<{J$o*9TIb_ey4G%(v5hJAFa=K4DP&{;I~!ZESi} zVOQ+btEZk_P4Su2}r0Ru+jVX8-&$g&&t~M)#CP^=z+BL^A}YQY~7xJeErDz zfmlh`if0p76c?92D4J$sm;Yb}A-Th!$8S4Sd|}wLQ<=A9Q+Ha^&;;RN=|7@tUPqhn zS-XnZWeuh`z`qz#ES``kH)<3bt;T2)X>=-_xTH~VSnjJmkOC#ZfdV!c5eNfu@ZAW9 z!SV(hD&YQ#hX~98Gr??PL2GUrD>Q6bkSIJ^PNal-K)3b^1i)&R0VvOZO`GL_9)7AoZ!Uex$sd`AQrexoG26uxlV2#Zmu2^T!pU0A_xqn)97pl zgYC*gd9MGp{8B~N1L4nV8J6;Rxti-ig##cVWLUCfDkK2Cw?aFhpj3|7OG@L0%js@O zJXkV?40r$X8a}KU4~asbX=Cf?Bye__G%-M>{ zs&nTr)YjEsyma}SEC0OJ(0Kb!)7^XbTUsBtwRdzrdHSrUx37QT<>1ip2!t&}0NL82 z#=F!{c)>nkZ3A?I7eY!Uh@%v$*o(%IhSTLqTsQ9>44yyiMm09>l86_4h5n|kqlZt+ zq#lBrh1qW-mia$18z=Ub*L$s_fBPO+zrD3#G7VT5f5VHMcU}76%RRX3 ztKfr=uZ_kO3P)|Q>{peI+Z~f_J{+n@O*YIrSXov1X#VA^0%hlM#fp@XJ11K=Y*Kh` z6^8!UQ2t54rCyCZD#J{(G-J^XTUOy%^&O$Q^}AHJA0 zl-d*e;}2^qZfselZojT?aXZgYEZqHQ0s37}ZcJ6y2fs^uxTdje%R0e@hSu`N=N~8W zch(K(q=aVyZ-(DT>Bh2>!DkP@drdVB?^}?Vn9u*Ba^dVVhLzo&N4LZcnNnM)Y%)lL zkA?@oT%~=^+xV9!Qa>H}k7;gSF6tNZHG`;(me(4;;hcwzvs<0ZFWAA%NI@@o-P+?h zPsN|s&~{prux;lmo0X;2i+E7jbwWDYwp33`+TqRwwv$$8{yEcs{jB1 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7da95ed0d472811211c9654353104b2cae94f56 GIT binary patch literal 2875 zcmcIl2~<;88on=kAOs#sWKkikYHd{vn=3+CM5#qE#_C{A$Rk8!0$JDwCnJa`Vx6L5 zbzDY~&1!pG5SNY)6md|i0t&Jzs3?_XWDytC*ZUH{+UcBjdQShGd*92y-S4~i{{O@8 z;H|)FL2zg=K%mS+<^h0r(`Sdrs@tU8V_m@*Cc284c0?lz0Sv}&bZr%CRMeuz>nl_>dP3VEzfp_23cRdOW;odE?72cw^z^*cX*rB0#K%ii}O z_nU`n6e=A*SSgWfVH}f4KnP;QLos6u)p5xhVhy8@$z-%mu;MO|#7R_`7URF41en2a zlaP$8p4kZ1O0|YRU!siBsZ|(164Mcwi52IAsWCCoUkPWLF$fvf9NfKUR5Kk~5U?E1 zBR*b6%}4Jv#+6dT!y+Vc&RN-k7EC6Yq zX#mq6J6MP!!uaY0OrsfgBu>y|v!_KW715?>Jye?56J`Kx;jn|l41@v|&;kr-fDU{H zBp@0-jVr|0LVKCA2>!3g#ke4Lwyp& zhu}Y{9uflY%Y1lNJ%H^mQ%f-*`zwq?@FuVUuow&mlfhy#S*W?0Im)wSu`GGE91f4e zu|-)%8Ge}l{Cq|%%*`#>7FKMw6_?FsbBT$~HHDzRB?0~~fHELtJ2K)7NGL)^5xfO% z012-^{2)pyQT=ewOhN_-i9)5(8B8;CSm5s)5kMl37_9(8LC7QuiAtw2sAQG^8c{OE z$=ZYJzgWU?j$c2W#{J^p@cSPMr*ys96FKi9=LspET}wB z=WSCXx{vjp-0)qk{y~56gdK-7PVKC?^>84+!eHs%(buB>}B=o2EACuZ&{ zEWKR+_&EwlB#4$`#6+i2y^Ii?Jgg}YLA*1EI(_{YTmnH^MD#+Ny5dJrU3GX1_jetcqu89Ia(9+qG{LhcJ9x2$O>Asyk z8yV`!xOTpiUgzUy_$u0v)7W+~;kM&ZpHFe%yH=a6JY8^V|M$5`uSI*ad%ju}SyX7( zz>1d_YSV@G<1PMzgE0D^*Il_MxGvn`+bUr$bQkRDyU|qRm&cy^iOsV=HSewTeb~D9 z`Wz;GV9waiq3fAJuWHvdc(v*6+XnX?J!5h1z@ZP1zQsYGIPBY|SyP?6>UQ0lSarB0 z|Cr!tPjsm;(cqNg+5TeEnYOOaqthI}AJ;s$b+Gha%gZER@lbmDmTlD+&%RmYFl7RM zv-Z`EX9>-Hf@$fCgey*8*;iOpJ&87CFP3LR0 zHjJE`2P{v`!GXM~IPT4Z=Z1w%vDl#Dlg_^S*U#%NeEnwGwV}wA%t%F%*WElt>evqr zufn!osPnqGur?}nXa9-Nl#9jPPYvQ893L9}<;CLAi zR+Xzjs!3y-jj^${vv+f!Fmcico?hNQzB6VD1A~G?=7%nbTq0U3UiRtoXc-nGk5#PJ z>huYTNy#bc8!|R#ZrYrcvwg?T++APp-g7ALaDG8yQSp%zCr_1}E-Q?+wMPj*#78o#}7|>`}zl-4L*PI@)d;bhyb#wiH-KLpYej7!qh0} z1TTb?NDxOUR3{Ibwf|zeB%b3ueLaI40Q*%L(?t;Rlqc0xn~ibxY;)@+s2Q34HezYN zi`gi#cf8(fE(3-vhuK@o!-EtGvz90IE*^oJz%{j6r0VfM{ zuAQ6P(Qnx5$nJR^+*9?k^E91orcdxAPz9WkBT+`{9A};@Ib7Q_?$JtxX~X=rRt*DhgF#MX&@mtqZg F!;h2x-b?@h literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/insert_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc26a3d5a1720c8cd939a99bdfeef11ca376e0f0 GIT binary patch literal 2517 zcmcIk2~ZPP7=D}kBCsUkDuzu2p*mV6fVTpXQ>&bU*Vu$CAsVunY^3OD6~Sw)77x6} z>4>*fDheJrRuNRRtt~2|G9G{eRjDY7*J%2711Q#xwln=R@9pM4zyH1eTiaFJZQv9g z9u*D{D8WcD0Jc_6PD~m>5|%U~15*tc2!@14eaUPU#NiggXeAAV2|#fIU%?%Lzs@J+ z#d2^9PsSpQgjQq3#u@Z!q`{=eLQHxi4xIrDE;;Sz?)=s-#7G)QtFEU9vt1ZtHke2( z+^Er8U>u)HKnX(QVF|=)A|uO8)u4UsCferfB#qW&XiT^T$9g6K0vK)=2Hn+DS2bZI z%vhwxm`V~R9E-h&r)KNMP2C!QXhFbaxOe#k(whEnHFTxt zos|;I8j~dzH@{mc1D^T^h1mkL{0}zz4tSght3iiTt-{-+x&Vw|`vUeemOCWIjl+o9 zxY^w4NZp{_=D~?K8dB`hR;aXhPniL5gUcN*0f+)7U;#KV0}@OJI$(hR=t^+!DP8wM zX{lH$$47+j0!5?LYAn%2YV>+s*EI@A=afiY$7!*fyj&G}flwt{VDLAmG&zLm{y0BB*$RO8?i4FMUgELLWO%~cnc z7)0U?-4Om6f$v)gw(CH|q-&yJG`Md*kPE=zV${MB}o^~`Rps4u+4VO&SQngMBHqF zA9XB+NYBua2CczpAhR%oDV3ncArUTmG8{n&BrpNAkj@y00cr4^gv&y|!A}^Fe8d9- zL0|wFNF}t_=7^$W!XmI(tA;8G^?++Ts&PRQV$u5x+&Z|diC=1@{+hJy_IrrPq~+zN`k;pE{7}T@x*c|DwY3h`4D$1 zf!E(y14+|O3|l2Abpi~83CY1^!v>)DJZJ|jlgMj@)5q8E^S%LrL4$`39i|==79J596&;_DI58=C(&Q8!o~lnX%&?Hw z*_mHw%~_O_yLidcWy@EuS-UQO{f3R33bt+Ev2)k%J$nxvEGa#7_{h<+Qx%n`&z!9~ zcmCp~%QaVOuU@-e-_UsHZc}s1ANL+TZh!K${vK6xBXT9o2tW&FXBh2hpwueZ~V4YyL!Mp zsq9=+*=Ke8#`inD^8BUNn5dE$7g|_ZT5)js2+Q=Swy@z-AA2@z*<3s!vKG(3H+*c% z?5bwLtLVpbbRM^ge5V{cx;ZJfe_6SOpQsQ&X#ehHW8TVjb#K~V6~+!vtBq^iliM&& zKK8-X>#eHY6^h%DqkbwqzjcmMzZ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/line_t.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/line_t.gif new file mode 100644 index 0000000000000000000000000000000000000000..a89901e4784ba1578aaa077eccf873e3d82333f3 GIT binary patch literal 37 pcmZ?wbhEHbWMmL!XkcLY|Np;R(-s{DAOMLlFtN1s&kSU+1^~Fx2{-@% literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_Enrgise.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_Enrgise.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b88e13d45c824cf53fa47e49d539ee60639ec421 GIT binary patch literal 3124 zcmeHIc~nzZ8ow_I2}=lsMJQ5?7GdTLtL&#>2H6FXRh>#@Lh^uUNH7b5QgNejT0B@l zp@@{BV67DgP(T7AVvw}sLS;va3d&+7fQZFm%iNcMOV7-4=8yTW-#OoX_kHW{F7Njg zeTs)bcdKuJFF>*I+9nk-1_>^a$PV^J8StzztpbHi5 z4DQb=1*$zZ(~b-aqVbYYK7S<;J3*Dtgc#0YGgaBC(5PBH<_5qRsy9?^zyUlE2Q?b_ z050IeIU5K73hbeG^(5f*mAq-gDqxk~A}b*Vt@@4162z3zbT-&2B_)~vNs;t z0B}?UPel}ia0Ap7tq2{WR6~>k0b_!Plt54;lGHUcwUFOB;dhT;b?O3yfZ%ZioEnL! zu7)Q&KqnPXSg&WV<{8S+-?0DiCZa)3Y4w&5%nid@VjLX#NA7x&Hs*#;4?SZFoYs7E z@u-D&UIfeMdYRDKs3US1ow<}Q?G!zF?rV9X{Ii;qtzD02&(z-N9(l1NHYp?j+q$-% z(O+HscE*V_3(j7a^^VO^0S*Vz5|o%oL^UTRg!T4%1c+e&27R?nhjR=t1TA5Arya~= zhWJNvy}}Kd0>@_?i5LKqh12y82%^l0FM2BBN_|FI|Uqevb17y6iCl%1a?83}< zvg3alDylzGlIQiOHIj$+KfAF+1A%*EkfUFwYN;4|(u2PT$#w`&gu9qXZ6T-jUfK-q6bkcJMH9J@U*c$u~R_Fre+LvD>` zTxlwA7z~m!_ZdHU>>{p>`lU}^+U-_;bE0>#*J9=x%RDgfUSZ1kF$??5?+{k8i?FcE zZi4ys0I_H3j~)6uyQ(HA)>Ww@hi|h^u94i4Wg1oANwiH$mtM^(T0CjAJGS4J!j|0T z1P@JiXIsuiK9Km$WtGew?ekzZ6fM>keNd?EVGFYOmC!XiC97c9H(Gg(tp zvd;9A(Y)mXExOT?nWf^V+0$Q_?C?2qeYiKC3|Kl}R2Foe|HsvasQz<@c<*O<4qjRa zj&>~14z@vV%m|}zKBzy?JoX29(#DNEEz7m=q5I42=cpolZlH>k) zW+QVxxY;54#b%w3vC>ERZF8iO@|VPe6@B+|#*?3|pInpp)G^oHHQLdCX!t7wMzTihdP;t~c3%@&)i`N@Ma85*b2v44cCirqI~j zSRVHIMM8!A1%M9l1T09QF_1QCAOyt2xe%&AIfK6rp#P2t8gK?Szz!>@>P;kX4e{}# zg^CzhOK1lqCBMObzcbhG%mtaNMlWwB9*yaBCw`b|mEFkRci&~6Q9-#+$Z2ofTiGQ~ zNUrCk4D2>}T48wz4A>}uM?gN#n3;EOyY;$MdTpmv9R7h*<&TvnXM?1t{SMo8iQ^tQ zB+dE$P;#neJh`;+f_6%3fT*D`qpioj`3LUQUP*U#k=OTv;L1zU&!dWNB46fM+wMij zzOnnN&FpV#xx&GYxKL?zb}DD>?%A{c+oHpyRjzd{@~%6lY$84y`_RmEkId~_(>;C4 zybW(A;^TxOR-b97;8b6+bnv|C_Q~_j{Nqzb^eIx+Co++{bCr7^ZJI>q`<)y5;zmYG z&9r1Ur=J^mI;w|CNqskU9bBcZh@}tW^OZeO3JZE&96f z27OIilakuyZl8AKy1CYqjDEa(&^B%8R|Pm-RyWmI|FOe5jY(0siod#oZaJfNPOUXH zH>2E0qgVF?Sc#cO(@q>){M2u-@qeVR$?@co>ZX>lC!3Lyr_RphpP0G(r+!va9GmNx qsWqCOyPP*%+4Yhhx>R^Iv&@2?+7LL>dSY|4Y*}DYlDXKc=>Hd1YF}jl literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_Purchase.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_Purchase.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46c2e9762eb325aecbb6a896e5bef9ca9c5985b3 GIT binary patch literal 7460 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 CnG^2- literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_SysAdmin.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/logo_SysAdmin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b15b57dd4a8f4f8dd12b1f537ec10f8f789b16a3 GIT binary patch literal 8585 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 I$=v?`0GUz$8~^|S literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f00d412fa3fbadd868cfb7d28165ace03593ad68 GIT binary patch literal 2498 zcmeHIdr(wW7(aJkEW69Hmt6w2k*gt0Gr9>2=#;v`3J7EJTn0e3ps(~3%O##Vjd4BrewS*zp2Tkc#iQ3 zG{*uc24o8`APcO>N)Zy7_7aiKa1N3oX3*|Jfo9!AGV5k2&?lBIZxcrXai zKzE*C6IBEQgE3z{Cgo4c@Tn@N~O?KH0@N;AY=NzG53#40LL>I#{g>4%XpXjTR3N z)#*aRBaOyzqcIZKN#b98KOUa35Un;uA7aq!4JN%_Z$gvaKi5xy33Z*JY9jwt}4}}VCqA|L%lBfY zt;lz!9@`=$MKszkQ@`z9{B4u>N>5ts%B}D3TXp>G)!uFUPc(P*%_=DUVD3<{VSQ4 zzkaZvzErz!=7HzytmoETZD@+O#HFs9w0Z*n^yH+oH%9F4xzN?GsX13!EzDWk`s~hM z=cfEp@!G3ZB@@3HIJCZo>zw@gnY!rU+V-xTbqSkE+%WIt_0XuM_JP9gB*m!CR#xV}7I1f6s1y9c8NL*6;HJkx8vS$Qq@WjcC? z*dq1EsNu6H4-fw;2q#xmObWDvW@uqPL9+!Mx-fP)V8;Ov3X)-ybHD+codDUO5Pl1A z@X{B27=iI$EC`SU%wRkU=zC{Wy3Fjp?(emozFxbu z_q?rikhgk;!}%@EZXAOh3_}7-F2eZ{8>jwZH@7xTWts1N(Wc8 zuGcxHuG=-TW7yuz7##obO4PMf)iWUu6fLE F`x|}Z19t!b literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f00d412fa3fbadd868cfb7d28165ace03593ad68 GIT binary patch literal 2498 zcmeHIdr(wW7(aJkEW69Hmt6w2k*gt0Gr9>2=#;v`3J7EJTn0e3ps(~3%O##Vjd4BrewS*zp2Tkc#iQ3 zG{*uc24o8`APcO>N)Zy7_7aiKa1N3oX3*|Jfo9!AGV5k2&?lBIZxcrXai zKzE*C6IBEQgE3z{Cgo4c@Tn@N~O?KH0@N;AY=NzG53#40LL>I#{g>4%XpXjTR3N z)#*aRBaOyzqcIZKN#b98KOUa35Un;uA7aq!4JN%_Z$gvaKi5xy33Z*JY9jwt}4}}VCqA|L%lBfY zt;lz!9@`=$MKszkQ@`z9{B4u>N>5ts%B}D3TXp>G)!uFUPc(P*%_=DUVD3<{VSQ4 zzkaZvzErz!=7HzytmoETZD@+O#HFs9w0Z*n^yH+oH%9F4xzN?GsX13!EzDWk`s~hM z=cfEp@!G3ZB@@3HIJCZo>zw@gnY!rU+V-xTbqSkE+%WIt_0XuM_JP9gB*m!CR#xV}7I1f6s1y9c8NL*6;HJkx8vS$Qq@WjcC? z*dq1EsNu6H4-fw;2q#xmObWDvW@uqPL9+!Mx-fP)V8;Ov3X)-ybHD+codDUO5Pl1A z@X{B27=iI$EC`SU%wRkU=zC{Wy3Fjp?(emozFxbu z_q?rikhgk;!}%@EZXAOh3_}7-F2eZ{8>jwZH@7xTWts1N(Wc8 zuGcxHuG=-TW7yuz7##obO4PMf)iWUu6fLE F`x|}Z19t!b literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/lov_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75f876da39239d5831f51cfd637058d7d98d9cdb GIT binary patch literal 2414 zcmeHHdr(wW82|3RVV7l>-4)Uqyr9TGYCHs;X%t}2mLK_bx^a zsi@IR50iYAe>5niHI|Bs6H_3D)i}%)4=rtoz|tnte36B~?VNjAgeJ>>`p<9XoOAE@ z`yRjZo%0>(Tj>X|tjcs{0-+*^`NVtx>ALPnZaFXV{&L<&CNE5YB^j>O>g%C-w4Y}K zBExfl#DZ;s0OX~t*h&)?mARhGVtF^kk~xgGTx2*ena+7x8vAI_cuux^BI1EvIx8|_ zz%ywPE$6#q%oP|;Br{pc>qmYeH~Eu~nAhRj9OyoJ5%%?@n8E4FfC(Fu^J&R_Y>_kjx8s2()Qj>%b0ydyI zXpM} zQYsb0FhIn_Py-7*RH47%Nntc7Q*}X)Aoh?|-jmhpayrREPNckE+7rAm#Kc{)M=CpZ ztst{#jut2pU5O0JkE?>&>*N?F$J6vivWVe4{6;@nP#&moa}>j(-S;6I%q+-g34r=0 z(zint5Yn_BL$@j$o#+iPr+aue4W7-|SNaaNfyrPngcwXAAttLa)M#~tn@r)3D4We; zvqf1=vP>+>&);Vv%xDZVhgr;Ki`{HC+wo+!D=yYY2_T&Ts{w5yLQTYi%1WrMgw%%$ zpprU>G{jO%$btxCQKKhAqt)pRA)!X}3`_?JP^p8U1qcnHR%ujPz0ROjo01V|Rcm4* z61C}TDO+simL#2hXT$M~IddI(?e647LT#5*A6K7$bKq8~KV`;&rmgc-%;vc zbSqAW3Fzmgob5&=4n}%b7N&~y;3S2IGl+jcLAnekwVcxmX>h6Y;1JPzUzk<=oAy;7 zv2E{+9ji~hJa*y3uHyZ#>|NV>;`Pow=YH+!8HTWsS@$NTpk>Rr}Xv_5cZu(&3s zvvPsv5|gBF*DcEf*(EpWGP?aqeRBdu#8wuGF%ytuR|dksGk7BAssxZh21~{ z3As>?zC|?r@)vsQ!1f;&B&5PZNWcM=+&a^$+?846+5m-9B0cEkena^lchcidy5BUV zlU)DSNiVb|t~p%O^3k!OXFHllocjhhgfO$5#=6nC?4>0~n$B-$>0KjL3H_DSSa?hP vny)ew+YU74Y_-5}c$Wk%&+pn@a(Vsid$Da-$N0vy{Svsw3f{Q literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/man.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/man.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5b02330f7aed75fa297c0dbdd3d4a301533f35b GIT binary patch literal 2655 zcmcIl2~ZPf6#h3iBqUjq5I}_mLE27R<+i9O1PD-D<+fPsY{(LVF$>8CM2oF=)v>i$ z541BB@7mI;C|D~h2wJb!15_-v6)Xa+C`3U)P5<41N{{I=(>L?~3-A2i``>%9U9tTH zr13FvF#v%y37G_d?G~?RY8FY6<}5M?3w(JD7#kV)8vB-GB4H*C7D`VV0VFAig*O6N zgI`*UvdU_-l)SOj5-5B+i>9VVD#LapXx;zC_QD-4%J{=g;Py> zBZb8naGe?2InWMhLKr+8N3n{`DKOD77#+Kak@-pG@pukyB+LXh)Cq8e=5}H+S>02r zNCRoYVsS$zMH&e#iJ)lAbi`ONIx`dM8{o}jjF16NY4OG}m1T+Se6@+RYY(TC#K{<$N0>|liu9}7t=)M^27QLzIu|nS6{E!f zDBwZi5r8a!0}arF?13*6g;p6tgYQT)X*=5fZ-~hnMdMT|EX7FSIvt@MY#n5vtK>?1 z?r~9=nlKV3oPx~}iJR&A(0OneA0ox;L_U_LH)_dzGnSlXnXNJ6dIJFL5m1LlHi#$) znnXc90$c%NduG~L2<$I7LAFjHj?j`C0%+f*ZEfF!#Xuww2pj|=2L}-w0tN6Y}Nq4SyWtf9qHt$_DDr!x# zHo9gD6{5V5(oA%hFFtnB(qfJA`)KQueQRs$Z`|Fszpmlud#RauOV@3$IDVe@Z0mHY3l8s6QXy?g0_aqYYBSEQ8|CUtC> zFfQy@QO&6(AIv&9uSr-o?~7i-zasngl=|88>&`sNZ=ay@`{k&cB49XW_L?RcS{uZ#QMP6irWP?%h&p zRriK>^}RE?ujJ93i^^M%OCDb1*9UjU70itv^_i{Fz6HG8Qwft9{)}K5*y(Iw=KnqB?3fu?*OUn~%aJ>;m|<6qOCO0Us1H?qqXbSZz$fldCS&q+js2zbl2YUefuja4}5j7=2&gr@e|*iJayq>eZ!^8 zR~oNgZ*IBqbL-8v_KvP@>)m@jz4ssVLD-%MT#ti9zX(J=G%q-__L1e&c_FNPS^?#7 zz5IF35ea-eSLPkCKp>BVo1@xcWMJYQg~oK=(Zwg|x^EYq8k5;SOKjnP%IryEPxBfw z=GLmT>Js_**TTzpwr#8`+jsEox2Uk7{1+>ezL$LcViuD6U4KLM99gqV*|uM1YPvY< zL-Q_2t%o<=S2VAZ91Hh7e5bRbr()&!u9Kywy#t%RwOYfLJ?{MJ zeK;nUlw{#EjXH=EA1er0R? E4K^rUMgRZ+ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/menu_arrow.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/menu_arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3552253508920ab643aa71d76a10da02c71751cf GIT binary patch literal 56 zcmZ?wbhEHbn->{q5(8fea{6feuUnL=YsB5K%-E zLm&|eCNiN!B|0$)&kKP<%7alt3uCN86j;cD3RURB6wrtU8`)5!8r_%%1~K3u2O89% z2QvT|yAE?fSlh}0y=4R$%%Fl5?BE1l>$D?DkwrE+9*~UOY$lbgWG5$SlA$e4QDTWL zj%eml+n+@htJuXUT8`))noTvU+0AKMqZk?~hZ@$fhcm>g>v77JN42CikX4IV>!>;lOE}A7dp35QcEM*i71&*I#sGtm!@QUqGgil zx>mKiH7$DDg@;*+bi9XV%4t)gogjR&+;C*c|(?0wouwRvs&{ zen+lqnTuW7ojqwW%-a;rW)~`T%gB2(qE_Fm-Lk5?ddlF&@kn>O(78VUJ5_y^boOOA z<9s=M`k&+J-z%qq=lj@i0uQcndw6nl`tsw``Re-h_m9UnAI`YB`}6Dg_VdHXkM3`t H1z!CJHCtAx literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/next.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/next.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf0215277434ed78f8099712c46eb55cc5f606fa GIT binary patch literal 214 zcmZ?wbhEHb6krfw*v!DN>dvp0Q(yhMc2(_uJnPDj&YkyiR$Y#mcBFXYt;9Jec0T-7 zci?5y(f4VK&vl>w>DIJG@h1xd2L8IRSE53)* zgd}9n8tC{Ouwt94tLDg5c$!s${mKCoNioUZu!NfvWdyoe51FQh$zNwYcyK|TeDBc) zN3&{yg$zuNZ1Y4Ujw=;f7&Wn0NHRvLu~~{XB?oiJ@H4gR>S<>6#xa>jW-)WHvBwFs ObFwYroi8iMU=09xqE7k% literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/next_year.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/next_year.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac12ea1307e4d35ee401f358372b5c69c06fae88 GIT binary patch literal 256 zcmV+b0ssC-Nk%w1VGsZi0J8u9s@(d7%Joi)x_Z0gn$-A-x!!E5(^!_obFtcCoXEN1 z`hLLag2nG}Y@>00$NYAYi~z;6?@{0Wh#Q zaHc>43>Y-XxU*ryjvzl4H7fAH#{mRT@?=^dri~lkmI{D5N|XCA2WcDnx;WET~Y0E=&Q9Xt0qDHLB5#X`J_{&Ds^c}wkKL9 znXYS9t6S5uXE8GKbn~c2J(>~rUYMTUc9A`_U3O+&j94u)c49?$^n}f^4=Ye|VQS^E z66<&5s+PIfmEGBs7Q?(v(QJ01Qn!q}HzR8G&Dt%ix~r!QZXAzvw+o%?!@sMluaXYF zEC(E}51;<$IQ@IGb?3`e=hQK1V3g*muHe+`u+^?Ek78$?Im^N=k&Ty~ Mlhb+{zaWD(0895#mjD0& literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/prev_year.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/prev_year.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8145d598f2651f4066f94885eec0c5525f7250a GIT binary patch literal 259 zcmV+e0sQ_)Nk%w1VGsZi0J8u9s@(d7%Joi)x_Z0gn$-A-x!!E5(^!_obFtcCoXEN1 z`hLLag2nG`N79SYcD3HMd2MhufIH2&sfs_FRa%6zOq5uZ~5;S1I zfIvwE4Fxa&Pyiyyh7Nl=7?AM*(xe%gIwQm$17-yrFkpA^f&~K_n00udfq}~j JoDK{K06QEwT@wHR literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/print.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/print.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a0506d19caf9a45b731a6a7a1eb6ec48ced2916f GIT binary patch literal 2812 zcmcIl30PBC7QQb#5CV@RtOAcs>a@y^q9}wdV5zbgQ0(9Y@&b{NU=l!_p%p}+R%@lA zwT?1?D0S$fvW$$?VQtZB1te@L1zJ%UR1mbq!SucaP&=Kko%y~w`R;x1o#meYzxSRK zO^@bVV7xXYECe7>{1JZuG~;wmM6z5ZS0>BTFpp)fU`0UK8{~2QC|oI*rmG}!8GvF8 z{s3nL{^p*97sb##WFy9x$`gcAEL@V5tdhu*FrF+)ibH2Wfx|}YXJPW(k0(`0ROzCZ zJ;;v?A`}vt3JZ}6law${k63^ZM2m-_&kB^MWhsapS|6QBYjZZ{tQDpSWw;W@US0&~ z!*HFDw5+Dh0_9S<0t*#N#VWZB$D(l+ftkn{3S7iu=r4scO&f&FX-bcLw4iZ^76in> zdEUoMt6BP7qs{cgT&4{Qp-d^p6)$E=gS-BVLcR-E`9IjSXTYHG(h3diIbxI!`KNSvU~W=V^dN)mO^DNw0nPnZEPhrw z+i%Npr*RIHo(XVp~aXxrrcXe^|jqj!^YFfI!pNs91{i=xkZ7|+(f14gcFSbKws?D z*a1P5n~8!2-YR@(0m6Sq;QSndrVlX5+MFox1GmOzvyUy=_i63B?o}pg8%w|JF$1Gj zV@XlBGM1jGImtjik+*%Gqi%AUxr%44?_FQn>T@$yL~Wn_>}2G=dkNy}tG!#^IOG{R z<9^Re1LPfXJ_(^tRuMWDNiTTI`cJRNo}3kaEmp2fimCD*d0&0= zmX}}9>XOT8J@rm^dhe4f&7ydp`_$JwtGZxYF&4P|e&%Fs*|jaXndLk2K@D(Jq&+M- zda17YQ;R2s>>>nE1Z}iM+^6h*L&|L4F`DS{@KPNq0cls=~l2(3ro8I2{U~1n+ z*0q^$qIa(oM{Li}p9#`{j+BhIJL089on{TT%D%zwT>~0$ervj~Z{|#V|JX75=$-5% zpNwX2ux$GMsCxnL%!Apd!~L7BroQk}w{2PFcz7)PT8Yc->wOx~wRNhy`(JDPo{ngG zb$!LoG6q*D;hzkaC{Iljsw4>#sYI29Nn~OQ)a9lz*G2^MvB-2GkrL_wUDq!V04q8WP{|Z{=csU^QemYq z8FVN{1_rRgjZ92XBNSzuE;3_tEV(FZZf9<3ZEb67%Qmxjw6}3wWMgYXEP}vLI*ra^ zFjzJmlw%P&=RGqC-)dWPk^P_mk4P-6^82pN_wnF4 zH*Shc6yf5eWXV>gDm^1}d)AI!dAsuq3g6jN^ufX6Lx(>+@=;m&iHeh_DnCAb_FQ#M zZQb9_*Ecpbx3qrwRomr`&Kq6o?w;Ph!J*;rzP~ea_ulBl3-Ie0`prhFcs}{Ht2ZJp9IgFvTWY*wNBU=i zm6!6XJe7F)_M@Tuzbbq;x%mv{$U?C3$JYiLFP<|iJaxD|cQ5N6f+v1^O-_A>wD zOWb?vYZ|ZE#IGu;mK}7py70AOa|!RguIY8No1d2arLuW)rRsFc<|Fayy20xe76B*j zwG9;at2BUHKJD8-?ALVV5*k{6JNH0s#Ui0|omg+A@-EMpX6-W;pR)M;#7Z?!vb3(S zyx28|cKqtzG@5_^OnWe2Jz$?VXyH`THGbCx|LZ|f*Hi1v#s>wKWw>lbF#XsUVPiQBkH@c$-iVBhsXqPpE6=RjxaP0C>Y(ZU3ApyXD*ylh literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/print_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/print_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c73d95994e6e0ae4c8443cb3b2f29e8f75008ea5 GIT binary patch literal 2820 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f4f9e0a0bfecf7c7d59a53e30be264beb890fb6 GIT binary patch literal 2766 zcmcIl2~ZSQ8h$-DFbwn@as*}?1az|sA_$nR4InTaOIU7{4d5`-1Eb?K%)t@MTO+b(}@B82T zzkkRF{rLE1}YyJ!J;K9u5aMm>>=q01mXE5PnUc zJbayzH+57575NKd!j7VmAt6|jMlZ|C!WGj6fK1hf&@Nh52#+{26br{SxK^fzSG+`~ zqe_g*05Pq>6~*BBSc*!cAo6usVzyybrbebx13*_&K5$GUiUxpR)A`=IS^)L=0JHTeZ<#0F_9Ik~07qzmqLPa)Qu8qiEAP@-z_9)jRQxEgU zk7vZ%%F3E&ZOh}?3VA%9keYZxa|rrt79hU?CR;gxf2>S~A;B6yK2PK~qxm0!H;$l2!m-;JSw zMuTV>CQNJ=bCC&xi#MME5#+iGml z`4$9GWv2*B^3&swXCVA%1an?PAlm_#ZrT$CfuLie(O6XHe*D;BEA5wz(~^VtCSTrv zmjqw_KDVWFbl;_GD}#uhREOPnp1#WZn`W7(aQ(8S-sh~VGJ1USNU)+@>1_YPI5>IZ zaqIk(#KoI`={(dj++NEV>fV-<+p;+-C8^K2wk%P;*U0bMcE3bkxkj^An%&#hRey9# z$({obyZTQwjO2SBwku~@*2tY~!)jXi{hdF!_YUV*IMFx9bT{?y{rV%Xv4Xg!zOJed zKa|{CNB-mf^SXBy-Y7T3>^j@O^X#hA^?vQGBWrh^U7ak>Na}l$)z%y?R5)92tscl9 z^#DF05JE_u}r}&e~I-8~i3dkaecQ>d)Rs^W*yjF#0Lb7Fz@#%^jWOZGWI|?eIcz94R#uSFHhey6gQ9|2 zPIdyJqXT7iO6v;zjpa(f55L!N! zILctUc(eGyaco(xz;)pUj&KR=Kn)hNec}g2nc7y%S#G{v?n6{+rp$g_VjKUb%w`gM zo!49KVnk9Rv6T<%W7|{z)NDBVuu>sayF~;%d{lq=;)->jz8_Go^B?Vy+Jr{z!2ac( z=Krzp^ZBd0rRRAyx1!3oSA}TaA$A{_+tB>GpvB+x+_^BhU4HnFqp$2<(vr9GKPwEZ za~o=KJCU<`Yf9VIdWjV;Jw}x}F#7ytLetU}4~lP8XHRr0=V!7cdn+-pfJQYr_bQ#MBE*goKPtSWVh%I`r zB0XxL-Rs;j?Zs;GCmm@w*^h}$hLU|siCsZx!>f~wwP{VKuluDPc(%AZr?(|__}l!Z zwO$qUBR0jqJ<@qb_;=pEc{Mg;+9=Dp$DJd3TbLea>PR5nHs5{l+7}fh;7mHK4D9%< zpsXq9RcS!R&5hTSZRXYF6?$J@ACqTnNgbQFKXvZ0qp3;zo{)eWy}a^ZAldeB(siM} literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e536df6f29d820b214e73e65065b158b4ca8a1e GIT binary patch literal 2833 zcmcIl2~?9;7Jh$rNC^BS$TE@xe78e{9BI~ir4&oU#ke?8Z3H}Knj=~^_X6|zK?R3QhDjKEg7 zBk(i*O=wXJ%zUE+elkUjNG4b(mBg#0a*4o8E|FnS8BpNjY4yyF-|2bDR8m!<_(Kiy zATtP;%2fhinMk69c6x*Zf)FhpiauMYNJznn7+M{jNGqFX#0?ZBh~$_O6MX0d=tFZI zk+fM2n+g>&1upOx$>LNBIVK3jR0L)sqCaqsi-YO2>W7CnsaFJXYhvDx>N`SZii$v~*Uj7dI++D6R3?qpSraaF*%M*_%-}MIOAiEtM1TPtq<}3z1Y&^- za%Wxu9%t!&9$`s%_!ZLTfT96Hp&(qY5=kVOc%~4L=^Ejht`nues}5Kz@WbR7E>gj# z_7*9LQX?|a)&PZNvK~toL`vmiMY2*57N58yMlO=d03c^T9Rk@5qICe!1&}X+_z=x| zy+cA^wfMuA>H};qu_6Wo;y*z$c*ak*ywh@=jW^;*+&DEKpzr}&(8-Ow(WOFiN14t-BMiEU5ya1A> z3Rw+NQi28$c}8di5DG#jQAkuejX@=|T%iypQ>=|$ zs9wP$j?K>WB{Xhs{#9>VJCl%#7*{uZU$u~Ke<*aIRUNBzpL4o6WA557!o)sz3sfGa zPs7`=*CqQae@JW}^qqJ3OlIkks%I~U&X#>!(=i+omy~t%+_ihPog+*AA|=TOjul?N zU)ME?0ul+LrD!qHX;gPD1Zx*#3PiBehC^MFp35Z=RD@IyxZ1_E;`Lrr3pZfbiP z0f0W&{q9o;qQF$_6YinH+GZjAX9V-!LC`b;7Fin;1*<{RMCEXLx&5V!=a~3qN?Bod zS;63sHzM~+U*)9sm-Y^9j|Ok@r5!Qhr-qNYb<%Ht9ama*@QD@eUitICZs}Uk5qiLX z_+rI{gA!+PfBf4K`muXqh6<0~uI^Q@~iyM-r~ zG**TWt?q8w(q}%>7j>gN`ASsfr*9nFn+GYyw|HqK<&Q6L8Ow#NM%x0ia;ulQxIhv4wtrq z4S^RB0|khIV@CjjKs-FF;8JQ&aL@wIuV@H>2XF$535UAaG*)1ckDnkoQAC7_Pe36F=~jSoH>@J9Ik~4ikexQSy)-|`FxJ4 zjhzk8&XULH5l#?jN~h7;3paVh2=4jnQ6K zwS{Wv4>Yq;hx7Ymv-kK z;yy42UzSCE{^`S2!yYBlf+**v%PSWY3N3|;9IZdAW^FCbvfuC|duWjD_^3EgT~V8H zD!|9H$!G7;J7=c`+ttTU=`Z`Z`f_CMcbKH;TFXNDwq4A&z0E(`T^}gSo>Tw)k?H8j zWXk&HOL+P>vAtt;m+J1jTxlpPpV;;18|B7poBMPBk5{T80VccZQOXb;MO13|E`Umm8dTAgM)$=0BW8#H?=fw$Z;Cs<*(oMxb|xe zs7hU-?yV_3v1Y*X=8onn(vyad7Lre@zdAe_fBMEY2X{+J#9_(&e>K)bH@U~=&r3^e z>T{a39m6giOyV1lUE~+rId^Sp@T8yEXlUJGn+Z;4zRD}>TfV9^cvJXghwoo&K-S#F KK{x$04gUs8Ow)G& literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/query_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c7c91e2250dfb45fcc60515e194035be90e4453 GIT binary patch literal 2518 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/refresh_act.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/refresh_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f8bce93ab0bd6b3c83be3c72f466ddd8f204bf2 GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/save_dis.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/save_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..52cdfb7cad712ac237123683a4ec28c56d671698 GIT binary patch literal 2538 zcmcIk2~ZSA6z$m?SQcgvE(HceASNovA!?$+aw;BNf?8^3*bE1f9d?rq zq>jd-wYbIz^K6(67(-Y*JX?v9%FZ(|HP{%di}m?A%E#f^xQ;Lq*xQ=`TbOP&4$G?3 zSxIRr0~U*GGiXXjU`YhcU}h@Df}t51FkTC10h@$$uWa4CrFUf*^dMjwoO@zI*pj2g>_OMS$ zjK`>4!eHnQWNy&va}y+K$#iSB9xhthGj0G};BbXQ1d;#_asdHm0W}~2Q>y3u;b*VC zxyIx%`5!Qr0gA>cl~{_7#x)v3-O~n0cZbNG^#_&Mc zJ;aKMgb7O}b!y6F#F8^}vQ#>p)WUOUV`AXwK@<;w5QFQr5FcWBLpdA-_DU?grw2e1 zuBKE3P%nmgh~+9+2E-zf$VMc#u@R$owsxq(K`eGqxX5G*nal+hv)27%{pZ~ovA46c zm)JW>B#v^4L?UMS#$gW((8*osBiz1fm@BlcLDr5{q$!C-g&&+CE zfN*$xfly>)YX`;swi5vyZjaLuAUuT2;c@svfr!r)2SF#w<#|a1`QZt;%v--?m_WX6 z>;8xVK8nN&RZy@Yzg8(6SdjFn`Ej~2#A#dkQs2nJWOdZ3Vmj2hF2zi=A6Qm-F{h;? z+Hd{#ZZ(W9gBa%dJmQz~Ml&JQkBs zzz<;|cm+y%5P{xX#vit1ot!~Xky!gE$Vb&|$S+VPDbkI>j|U1E07Bo8Q*{tTv9mfV zC6p%2y%7ExfnOg4OA`=t*_tRA1MVBjzf;b=)^YN+f7ZU;jl)ArV=DGPD@qM3T>EJL zSWnUP3Fmg-_;Z?l!_?^u$GeX4>djG-L3e2juw1xzK<`f7{q&ob z2uXorXv3yIu9dt85GkXDR8j8;sC;-q$!|+ z;>N&akO{wOIE?HUe9(aG0}&Vq1w%jpv!S)NKs;`8R1B7ogEJ-JIuKfQiU6o2CE#;; z@UHoA;`3pLibXSq@Su>VTp$r~b||xtjt-UA$b}+}%ArJ!Q_`KHeTa{XINA zm`xCvDijDMB9X*Hj>*=%S zFCc7B1aPg-L+=am4lk%ds|1A%FN9-ah@(8dSD-)|o*=~aGVftaMDhsu5>(g>2uggU zP#J1%oqU3u2R>$~vCKY>SpI)v)=R99*ITmfIMKTZvpzFuC4tSFN~UVImGZFCGjTod5h@z?tdD%F7KuFEW$% z=K_wLSYzrpqex;N#fh2iUpnH-?7~h_aZ+TRuIcuu6X6R=zTIRF`z-d(#4v8t@sa-9 Le>gk8(Q@T4==ddi literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/tab_blue.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/tab_blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ba9566492565b8167970fe058990a037eb0db4f GIT binary patch literal 4861 zcmeHJdr(tX8vl|2;blSu7FS0J8g!Yq#)@d`j8a9x5M2;KcHCXl00H90Tu5&4MM%+B zw9b|lv{7`2B2X=~>$6)Qgpb`d!4!HI=T%3@v)LvV6j=Omsu|Zpnk8K#B72jwAn6pWU6?h(&iE^F1^7O=I>B*3#WQ|;{%~WWfwUmRS{)5En!MFSec&;3H zd&TLL84AW#2*3kJhW&VRE)^b(&hPRACPo zj~HY)JK%{w6S0$j!tr?kV}ON5bPleSML16;;LXb*(iD*K7S>^*oA5UHdwYBPc>DYK z_zV1e{RF{$e}8`Pn83i`z`!vAe-{lc?#=TvYm}egDBh?59xot>$KwSt6EDcEBKRp6 zpf5n+jUCA0uqFaqz~Ts4s2vA@i_Wm3F-lLCi!fk@IQSv(@buz(`}q3d<{rsp0h=?- z3;>n~i^KL{dvd+JJvsi7m?_|RgpGdHbKX*U;Kba*>0UwGD-O?}BnnPyNQ<1I+1MPz z4KGb7fP@0^v@XJbaW=KoQ9mTgt-#&d=ch?*{Wk=OJ$9A5%a?euz z>Dku%kCtcVZGQj5zkYSK>+!6()T}i{#{Hk2yVh+L0Go}`dblugy*#5_5W-#^?ST>G zP7L&%UbsDoLC}!YJQyiT>(p#4iCGq$uAT8P+=~IgogDRL3kFdclCdylCaJjdJ%oRb zV9HYn=x^Z9aoH3=H1w<&I~tvTPQ9rQ{q$TfecAFEo!5A)L+T9KZz~^s7lE@7LA$si z-%@fodKZE@RP3?2OC496E>VxU2uR9<>f_VB1%BOCrG`NZg3g3tPER$0Hw{)P{jRN7 zL=8SNbc%lp>i~l5eCK6HNYmDE1Vyz7dZ|!hv`-l<)S)~{`Wnb z=;mwYQpYj`jizk~a{g{Fo$KVcmmoNqa6G>?yjN!4un$4oZ2BJ6WnGBixXyWA|6S;* zaD9v6^Ux^C`c%iQ9?Ht2PKa%F%?8tWgGN?RWI8V+%LllPNh^0Em~~R@Jbln4r3q4I zFOszxJ1Xo)QroB48_dbZYQwN$Y;#Y02;F(j8gA_==-X+P(1ZVP2uj~8Y>snQ)|z4l zE;(7B12_$X|s5E5`9oEPId*)!gc zzB9|wjo=hhQ{~aL6AF+)*|>;IdZ4B zhMF!6;-~1AcyCqRI9f%D?OQs`*7weRn14UKr^B3HVQ9m#+Ka$Z zCL6iapR*rv1Y0H6ZQT+7GM+8&cpiKa&;1Xm`NHBOg>z1qM?YF5Ge=h-*k`br;s%b} zrG2UGnl;}f;&>y`xRLd`CB%eb2?+G8of{H zYxm9errhEa4gC7M{X_M$c4Ym;Hr3Sm^cNN%ZTt&KPmREJp&Y89W5y2*-_S+$Rs`KA zLvpx|Nn|VSr|Y-2Sk8m7?@al`d2ctGFSruATkQ5 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu.jpg b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131739fcc559c8dbf6fae387cec03599a87b111c GIT binary patch literal 7376 zcmeHLdpy+H`#-}l$o-PGn~Be0Dv@YQ*-@^a$#q;x_rYLdjTofe3|4KcHhhd!Rw_fK zY!_)Om266O^DQc*3(2>okn76z^F5!TRNGJUd+qo8dVT-+o_T$4&w0-CJm;L}c|Xq? zycTZ&s!Ti74v?fszybaM-X=HGHIT>Wg$MFNsSDbDqUE)3iRZS*4lpVqe z=TJWs0udxU4HWL~hfU&N zKMpZfxSPZ*fRxqf1xD9+rjjSik;;qYgoTYU5<58BH&xa>nCm+_dNU-B&YtK7Qq!R@ zVx8pxAA|u8{Cy3t5D)=rZ`Yq-eB0im5#xyQpKIb7sHvgW)>O|BK06?QaO#MeF{Y;G`Q z*$R0G%ZUAiI|L2^UkLSYyezA~|gg*iaKv7OkPF_w?US3gc zlENf4EfqyY6|E^68d@3}Q`8j2ZR|1n@$sFcG-;BOvXZK@vZ|)Cva%*|Q`Q_Eq9%y| z{2EY`gA*{9Cg}nxHIlR%34a0?fQ*-t7|==?lDI*Gi6#w!fGi_Rk&{=L1cUp-P7;uk ze%q-ENMw?<6j@4!A}c2&t+)Vos!5Y)sn3^L=Em00-5h5stC@26%yK?6MOMaKY{IPh>SSoa zW?c;#)3_8(!h#Z3Wyb=<=UG@hX6>%!8*bJ~lO+tG=$rpq1&zqo_Ota|$mcY^GvWWX zz+l`2ybdTzi*>322I#@TSsxr63Ftp;e5P^qQdr`QF%dKhEPMjXV4;vi==sxk0Lg@=}nq;csC`yrLV z!c4)hIJhXlE5{@X=RT3=DXv-P7V{g2%=9y?4T# z*g@arq99WttB%qx+F;Y6Qf|}}^SS}sYtVaB=Z%5jffr^!;LB+Iluh@?#dvSjUt{q` zv~KM-odH{|>S{%svib5`3vW*@`-v=s`?Mlp$i4XG2~=-*epaV54)XG82F*B#!$D-h zsW%(?jPVD(9;pbHj+&zMliSW#nRmYKawrO|n~JpPrEw5pY*KYCqv0pUWaK9tIEtn1 z!%}+$B{(SZt{E~OOvfLJk!jXcFHTrEOt(~D-q)dQKG%mE%;iT@xgq{MB2+!$C5BlQ zunhPC9`J!6O9ieV5We%_6)t`wpiAR398|Cn%mXHbz)|d!Rb;x_+Ed*k*n~<*2NW?D zLVfsuFUmLrrPc>HLSu=!~+NK;XV^ZFczc=MPrFTGJ?CdnPtw=_|xqt9|WCX9PsKY zd#P)h`GPd0dBIsU_mWPUztk=~Qtq2RdT%SwNz1IH2U^i8;)<2mIs zcG$MpRe2%wPY!hgSiwwl`&(`jP`0`HF(euEQiv{)ZC-i&|E@wK98Zv2}UxaaseS_w{tGpw(Gt5~ijr}7&o|`^n z4n=Qo_N?`mhu$C}xd*k^?kaDWL4*%`gF1)uigsVfGAl=NBQBUX98|lqdPp$)B*qLL zD10;GIn9X8mG-uRmBZvcOm$1?I+sKyb0ULaev{0-7Q}{9`SqslyxaM_0+DiJY z|CxMMO^h|6_f$)26|9dwTF6Hkjp{<-B^W%yiRN7+u?FGX$ZC!HSZv=z{uG|&Z`#Lj zpne2nqH7+nC+TZ#Uw!HisndVRo=bg5GdW*zN!eB2fW^^8O{3`;E45=kB1}tHW!EKX zMmVj?sk+sHqLU{IoAI*mqiKCSPYShJ%2e6j2zBuIZu%DWBR{UoR{|~a^i8!L9S)Uq z>J0+heoOs1_?rmBrJ@`RbH`{&C`)W8;o_0bg0q-MRMkj z0@|mQO9Ci4+LrkPb~Kct*B!&9XPwxP^iS5jAe+=9$C7y6zD?NvtuR(SK8Re&zdZFX zEONL%duPu!=}r{&n#h|ZLYwJH75&+>*49{1UFdWv%i@Y8OeYryBHj?s~K@jPR zON^aHcq1btF4^ulUH8_@4OL0kj3QF*7w722 zvV8il?lKL2fFfx-z9cGZ$&lwS?)8>1p|eU1A*Ig@W1lUxR zZtyb>kSkIBvqTuS^^??r*BuH@muF1Zs~{o5$78OVy#fbjLwlpdxe?v-bF1$BKn+}-z}}``Qin3pyj<+UGG(X z%aT2&X|zA1&Be|%pOI;+YerX?U61SV7!W7Mx}*06qO6xmw?sF(w@vnYcoIYBDDosP zI25`M%``l=Sh`s#-0rZrqT$y>6uNdm;`;o9v*nT8nEZqEt>?EKgNG&LpkpqqTe6}x z;}<_8V~&|jx|-E8l<6^$)RQ{w*01&AhtQd`(?7975+jUl+tb=XAv_%0n^&0F=zH}$ zwG{L%XKoVZZw>B{CoXy(R@hQ-jRr3yH!m|HUB_56^rmtN4Edt|!gXt?Y82PxAbUU- z?#cUo+duv|?R{mUIzn>HNp26%kjY)jV%eneyzXdTS+kVo&Y`VZ-LKB~VtrUe{hLY` z2(;9r*2T@=ROeB&|+KyE>z zw?|fAYZB#HRG%v|D7SCZDIaoWq3G4Sf(YYtI!~6NH2uM4!}p1ASe#|FQTkZKH!N;= zu-iRO)ewv2ISPTRU+EneFd1Mh2J=Q^P-0*p5=!8$$bxWw6Owxg)jgY8 zf%&jlNXpfJFrtkMlAfXtEW5!)!%f6DZ5BGM^?4sgd<(Y|>rW@hYP)N711>TBCaR7k zE<={rK=3rp{a$dlUnEjqviqP%hHo8phNe1-S_bsfUNOp*5MgSy09#)$lw9>O(a3pT zaF&+XHR$x&6D13Yfnf|f!>toEA#$$jS(SdIR9G{?i#QSlwuw%Gfw9>B2^~{%3=mgH zrE%p6!b?oqx-z~v)ieFEooDu#C?B`DX;xywaz})gtB2gbH|yZgOo_AJgy~F@vO^@! zr{nc%@HcDjgvFy4neMO{h9^mp5C@CYi&}=Tqy5*?>Rph3zsJ1V!1*i5nO zebnHJV(@?x0MA#>zwOGTCg?9RuX5WK`9@P%b~kFLTZD69>ai{x$mp>l@b@k+ZDv{XCv{Vw2EfO&+xwb`3F1hs7A`v@DlEQ2u#cEQd zlBNiyG=$s|Vu>L$E@RB?dCz3qx3~AR@27qLd*9EVXTEdp=Q+RM@0{QBoTr|l(tWvT zUJv*p5C9g4P+2hRvvLefi}@Io0g!+RabAR?=u9C1F!^`*AJTvj&Q)wbF_O@TQV_At zr6Dp9S%@4&T>p3Y|I@(tAP`hm>w_j-F`u;Zhi~|k?%k5(%kS1b z$6#UohS@WXR{u%cuPv4Y5*YFQ#lA=!e{H|piZd;(fG3pN6Z{CZ;QO_mKWnE9y`cEM zpTcKVf0{IfH9>z```0Tz-CG?0)!t&8iFGHo$$#4a@~~b3B37H&bV?BT2mmS&Rfrly z9ijozglIwLK;}Z`LFPjiKo&x@Avnk)$YRJ6hz?{aL>Hn5!9$iomP7O*29R$cDtbrIqOdx9^Vt=*n_xN-D{GI++4Txpl9iH@RacZ(RR7BXeFRiw#FN5emH-JA3|0k$J`t}Y zj1-)$c*4I2j0BwHENK~8IeFNi1ny7_7Aql%70(*Bj)L_-QbkI2@#^npsX2N|FFB-c zbRzk(jE-f|V~y_{SWDOJJ^YiboTk>Cx$|`O@XMC#8=I^(U1w%)wQn%20ckFa> z-sQ5})oY)(kFTG90QpF8NNCv6@aUM>lX0iw6V9fbOFf@Hsd0}kTP)f~$-YjopZ+V!{t)b+amnG8lymDvID7zxPpQPn>Z9;KbCl;a3n?J z$EZElt!n%_9ujNKu~tUvckofb-|K;&&58RB1y8el2nPQ57ofmTdqtyQlTYQ3=P6OX z3v09L)UfkZ8uhuoXWHD8@B(8z9C)DJK`_ssDoFE4{$lLV?T^_SGKcjCc{yEg`+S(5 z-UWHwjSWI-rJvc|sjPHOG9&!px}p8D zdv9k*h2z{Zyyw=gF4cD{E_KMQwN-MmvDEZ8rF$Q)iR;i_#r8wNwFg9=mA`vc&_y+` z>a1^YlUh*2TMG4Y2`Eq*A;2km3$F(%wF^4w`>@=#zGj}n9$t&RQ+!^GOMA2Xm3&)v ziskjKPI>mqu6JqAw4*mgG6Pw(cd3=BqvmL)bqVXb9OBhu>CJ;jY$s zV}PI|^S&lawVx7PKjFGOei8Y^#i%IEK&-ms2C1N|C1&i>=o;ZBXv$Xx`5&0aTRI5l ztm9BGg*Bq&JuNkCY4$2)l7r*zv>(^iR^RV+WME1-)sR!pkU7qYsyt5u4qnJ$%ShA-)8c$?9)?%2!s6-dUM|6_%o) z@j&@u`mK`Q$0(2`)aMbsUm_zV#}M=S-KnnY;-5K^ufIqmg*!L;7T(9%I83=%yULPv z=bQGQHNQ}JOuwQkIV8iYFn7x!+q~{F!>xVQuXoaK$~Ecfqmy%`brxl%R?;g; z30dmIeXOiZj=LEOB9xQhT8-B5EhP$f4V*L5I3)f7SHoNDR3+lroR%sHs}bv<$6cwOt#8> zV+%(V#0*efc>|TMZ_I@;Y07m2SDt#UxOrnXrdme3gf&p}Ee8cBe|bQ@9aP@f`kkN$p6i$gW=y zz~AvM3z&s;7heHIq7RYZcG~pfE z^Ft^YTU986x*xRT*+S1cL3tn1MHMla*5W@Gq@6foGuyZKN8dTJ^hfHVpVdTB|b^#o$TrN;~b;@`#7 zljG}juN1^jQ71(x;2D|=4WjAMBmwF2d4E_aLPbKdUn zYUe*}<1l^ijXn7FXhh^Mm&pAO$r;^VbIb&Mwc|9BN&?^1l!Db2|I?0b*zRGiGjWz2Sk;5X(?75IP41`&yojuzTNaUl3;Bg#xKkqQITN z;KXyY^W1fxcqo_n+I6o@KVq%3FlXxOO>Ru{;PVeYPM-GL&w1&FPMVMOxs)`TbpH-(<}qZp_pF}j&#kFj*0oZ5NHCsE;dgT9cj9P+1Y(nkfxBFk zN5zK^@{e_MSj#uuteU@A^=VwlUVLJr(RjuQI9!EWJ__nnZ=j%ysU+H(n_}jRN5LrLK%SW}DiIG~`31e??O=ETo4lYv~@U=mNYq>C?vYJIj7`9cNR%yWEO z_>_P$x@C0Z&cD3J z4!#)>vvfLO6FtOcY0jksCHulJ7S}j*B zU^e%)wwf7?GB&%avhwY^Mp)kjMnf;JAF@)orFUu$Jojj)0Y%%dS^#y!MFKJlKI*kZ zQHw1Qn411IZL`^N+*sj)55|5B>%no|#P>;SpY!_pVoqNB11FTLtXKV+ui5NYKEH(|9ra$Y*+!JF zyQN+*nM|Xjqshr-tb;iirhQs1e|YZ+izQJ_fd)5RQ%$fA-<8zcPIDxM`Pe}<@N&x~ z5+mk^`}}5)$J5(8$QO1yox`;{*Qv)tf>#FFlQxnZJFbNuV(0)4Rkg|-HqYzvWu;eG z`vyd!_7|N4DYdTBQZ1cc{YWS~byJfdhibz>p$(3d4D822rLx4!eyiKx69maeWp=Am z;Sbc;>-IJWPPdIK6ehjitj4WUsfx>OVkKWMsOtv+bS))rHHx;{? fny&E8D>{NTbE&~4u_ql#Er|S;e|Qd+f+YL_u9n3O literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/cd.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/cd.gif new file mode 100644 index 0000000000000000000000000000000000000000..7503819404024526e6181901806c55f0d80c5933 GIT binary patch literal 239 zcmVrJ``g+7o}HwDfriP+%H`z#&d&S!*Z=kE z|K{fCzP{+0nauzH|NsC0A^8LW000jFEC2ui022Ta000D>@X2QgDb|R|oC=38x?@%aA z3XHC|001ZuX$Aq%mYc?Kr_IsGe7zvW*%XUnbb L&G+VrGgt!vQpOa` literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/folder.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb129763dcea0dc1916b7e934fdce2fd8770c380 GIT binary patch literal 372 zcmZ?wbhEHb6k-r!xXQrr`}gnn@893v9&~1=$&)8f4jw$XxRCo$zt;Bc+vnx5?P^z= zlf`m!n&I9q)y<94Gt(JwZ!g^1B)cGw zMSgXq@QJAg2YNM*9XqzJMr>9F(~2^IHB}=2ujK##G5PiD*Z=>|`G33g|C9Rv?>o0` z+x8y>W-^ck6o0ZXGBD^d=zw&C{KUXE(P4UlhmKVLi6xgzC4402GB{W!L~2f9POOq~ zU`a4ovhaqB%+vz~Nx8dkFFrrvqSej!Kd!MF9@+A*p|PG#+gVIkwX>^RSE$vAT~}-J zl&QL${d#h`nsevP*X5qctE;hW`3hadnOwRm>o;uF<*#vKOczy ZVbwl)>NG2h3j?FtrOQ`>yuBP5tO0@?i&Ovr literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/folderopen.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/folderopen.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5c31102d525076f68a946b1c942687b3ce0da4c GIT binary patch literal 376 zcmZ?wbhEHb6k-r!xXQrr{{8!<#k{|N|2{L*q6oUN3z&7>3 ztO5@mss0m7f-EEygfto)EEhyd@^~j!tvR(XKI+JllL;CPicM^J(Q8*-F>q|Y`M%=j z62+dM{~PKQW!3d-jdOF2Weio>+e{5RD$0%I4VAejFig^&H-8?Vk|_5Crb$NHt5$3C zNei(}Fr8zpvu*n}0e-m}r{#G~uV;mw0cLrC^)_Z0DGV33b1Po(Sa(>zf!o}J1>$0ZL+5}+6JHr`< zs59<2ADD$k0dv7VSPBs!85|83W2YWrU{mu%Hi8cua%jT}X0VKs8iV_@s~cN|4IQK7 zlgwVZniU_ug+va|$vdW0wiwXo*|ykB@De?HwLlJxC0N(!S8i(2E~|v9(_+$dE1QD4 z(6NQB0}P|~wBw2sEI5NRJ4=uuOa5tsBHg+7q6Hu5dC6C#RV~P$5g9p@LhLx0zT1=#$;61Slp z{b$G3Cq5tj+aRnLm}j%g>meJip=3z4fBc6cC?X}jzdC>`>6~1Hyp7=2MId*?rsV_o z0IrGVmN!ePo4-uR0e|!Ywb#GtFWpGfTw^6849G2ChCzJ@XGmPPTIixuZ>)mYL-;TxSo$E#hk&Ui;z3lE682RvPTxRDt7BWAb0m{VSvJ=cgb~yz@9V5_O(cZFI)`$`ISCTU`DjBw zyS8egLnhurnWUI?_PR)I7%9~+D!e_EXKRJ1r3zig4{K%xOvx2|%18b>$me4+u^7Xq I@p#1QKgm$!SpWb4 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/imgfolder.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/imgfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d880347f518bbd1239f2af3e3059ccb1e674e3 GIT binary patch literal 622 zcmZ?wbhEHb6k-r!c*el+{{8!<#k_3u{{L^wI(YEl_U+q$|Ni~|@MghDua+)ZG%JH? z-TL((7IrU~Kj+DlCo5O3lwA7%*s)`qHgDa!eb@j0OBdvEG*;)$$zqw8!`56^^k}p5 z_Ya-7_UFu)+TYb$+uz;v|9Z=kBA(5S(&rbc{eRsuGoA72{gy`u15VE{KDj_~ajDeg z37uzVnk*{dIyud7L!HE&S<`mx+V>;JX-$>L)2C0b?{GLaORBB0{O{F*<)!?K3%Nf$ zsam#d+5aDt|39h!f4lVm`_9*|U#E2~`~QE=wr$&f|N3)mmgIjBn8`2{fZ|UUMg|5? z1|5)NL2<&se!9W4skx=K)lgW7o1c@{KvtWf%~RNQ+VpAif|G?@nV2{@=DW(VPUdzM za9Zso;A-yDro->*#N*D+IV1gO z@j_>Lk*uD81ih2?D)vTMXLcNRa$tCI39M1!eiVTiL RukLUjIIv`XD-$DwH2~IF)06-J literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/join.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/join.gif new file mode 100644 index 0000000000000000000000000000000000000000..34dd47610a5d7c3580dedc342683559bf77abce2 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFv;}DH=KUEdfpt3ORshA Wx&LIzk};W<vKC_i literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/joinbottom.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/joinbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b81c80a9e25f6f29e2614aaa33bdf4a4d2881b GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Tx&LIzy5lkJS?4l0Mh0sDgH;v` literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/line.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a259eea00c330eee85fb18aa64e2e232d5410b1 GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Txqp6J8?ND(@^elGBZD;ng_;%{ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/lock.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/lock.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5095dde8ad34772b3f0ff26003dd4536e37be4a GIT binary patch literal 323 zcmV-J0lfZ4Nk%w1VMG8M0J9GOV`F2;$jD@5WZ>Z7|NsC0|NZ{||Ns5|{{H^P#>W5t z|NZ~|`~Uv^|NQ^|`v3p{A^8LW000jFEC2ui07L*A06+xr@X1N5y*TTgMM}Xi1f;;7 zXgUF*=!yY=Io2^L5-}C|WIs9y?=e&vkI1BQc>(|gf~Qkzx)dpg!cS;3ObCeJ!z-~Z z2n*&CY}l&ba5dB!uU7=2ssu1d$gFl13>+*kFEJQo6bKV!TS1CJVq`cQEF_qjdKC%` zSqEuj23G_+MFb6Q1O^6-L}G!lva__cwzs&scX%WTP`XHX15QyRo4_2xn|z3Xv#uJv zy&%2EUlx@Qu981RLt?Iq9Z^$KQy9=UjXe^B4-MDv6RtFtEr!Mzp%mWi29i72jggRT V+#D$6=)Adttf9k)5GOafzu-gC3m_gnAtsyGG)YXIxA8@>Pl literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/musicfolder.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/musicfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..f620789feb3c4b1222909d255f51aeaa81faefb6 GIT binary patch literal 633 zcmZ?wbhEHb6k-r!c;?CQ|HtI_d&1|;T=V|@`}l;_ON)8`KdAow`}didCU@_DGciej z^5n_Eg9rbA>8q=`<>xo+u1K?DiJW3#)C#D)aIvB91 zfNOew_W$>t|Ni|e&CM||NI81&?f=`QuV26Z|9{T0S(4kfZTk-bGZ}^gQ2fcl$iU#q zpaXI&C{7sIuQhl!HMg)hmVUg|Ta9<%L zB*!hNW#eGnvfRbP!^OqjoL^Um#e}(8(%psk*bWzm73wnj%>wQWm-x821i3D`7>P8w z-n-|h>B!0H=xU{*=yrFzi#XF`MLGYlFIxARNO@hDtWaBUIiPTOMfV7_}lvsu=hh(Z;&NfL@qDJM29Jw4q( Jn2m+O8UP#&8=e3F literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/nolines_plus.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/nolines_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..f258ce211a0a19c2ecbcb11170b9a8b35ae2436c GIT binary patch literal 870 zcmZ?wbhEHb6k-r!_|DAG)YR0_(7-SXMnhmkhJfNv7DfgJW(FOQ??HKjfy0@BokPZB z!-9j&9Ku>LGYlFIxARNO@hAj7*xx83m?l#Y_`t1M|Ba{La?4kwX3c6}c&WZ`PygnpJ?rkDyZry# zum9<}^Zxw(U)#BD%KlHsjvf2=@89j`-!lsq`N~Rn2+cXw3F)`cNXo|{M zwn^yh*lA;L&u+56RaJ{?r=8t#bK_Gj;^%BG95Yu?zS_*U>z2K_g$4ipCbgRvpFHC> zdg-Vu`PTd?H;48ok#7ReIGiR-xW0J7!Dc}Y2`z_&_QUOboFWD+3JrbT68dFMM=k~^ HFjxZso}Jb2 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/plus.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2c997233b3f7b0fd56c4637c2c20aaf0d47bae7 GIT binary patch literal 89 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0ohtp^czmUT|IBk qf~en0XVhiRX3S&EJ6Nfhb5kY1Re>f2&SBJ{1ibDv2XRV|Dor_^WyXB*=Ku>91RN!zTl3yBbIVx z(geQ%ggTf9umTL|phE>VfGW0dOs3%S#nN%*vE*Enb)jBp9@2x>3JQh1R%p`NKy3y_ zU3YW4U}Q`#nViy?7fYC*mTrH-X7dccKo2mX(s=~L^<(g+r59TS6iqRkj2so5zx+t0 zo0(kzz6vnCo~H$RBRBH)J1GX_SNvfE*Z~wa*h)-iiw*S>Xcn2f6(IYmN~W^Xa^K5L zAex2;PwPjN7>)J4^$VxEb>L;|NOI2mP7BNcjAM&;D`d1LQE7F1uO6=7d%+o2q9~a& z^=HF5f%;G1kxWBiba`M*MXx~Y7eUYLsomU#>SdCrPUj>1OFJ?by71aqM(w;SNCnf+=v){(2QoAPYLn^Co4umpI zZBr+TQf2|-$OSB}T&RT}4J2kXT)9=qY~~&gO+?Wfm<{S%x+=cSPXj28urVYrD5gv> z1x&7r!xs%3p=C(_v_;&ng?=lfkaLrYG$*dMwTX12GNmWsd~wr2�PO#XTOK|5d)& z!4vms05e%S6&9cUdCfvAM{4}`Ll&Au0|4ZI{x#q|zXU~)a%9_I{Pz zF8K#`U8CUK$V+kftzmD{56XRA*JOAEn0*=T9qYDGam8&jKK%R;2frNVs?fakAt(1x zVoBrOZf<9tZI{^DPQFJAYw$bp-YzSMPP;$X(ujj4M^>&|RhjNU%J*O1o>2EXGlIU? f&E;Ccsie~d>oCoZ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/trash.gif b/hrmsWeb/WEB-INF/classes/public_html/hrms/includes/images/treemenu/trash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfa0f000e1ed3b61c8737fcfbef4b78035a6abe7 GIT binary patch literal 1051 zcmeH`!B0|g0LLGK3dPJgm@T#>b?KJNwY61t2y23!a_iPbmlJ1M5VKlN19e8^5=^!z zbD)u~Nn)UBz(^5iXd;hRCWauSKscU&!V@09@^9$c_wYG>4xjDIC@(v6wu%B#plCOQ zlj1%HL7xpg`;4hq!Iu!Ay`fHi8EnwqRZheRTo3t^+{2HkSV8B3ac*wiwj`U#enmI4T(`vn#vK;=k2di7RfPB!bd zJK#>yEZWxDDf!FE7-xpVy$l$}cV*&0M5)OxjQmJ|k6$*vDy}eU@5RE6J(P)Qp+ZeFi9t}!OUd7^O(;WX^ z+tZm1;6~zHF4t@}>pdVC3@Q`~e*%oJB(?5U`#K^Y8IgTkSWbYYT`>3^JQN6~{i|c1 zT@Hui@px7N7}o0@4u@hP=0$@VCwTuo#%8nWYPtge=>Pt?01YMJAgCKUv1i)*1VoHM zg(NCdC7W!ynX~=LT1$V~nzDI+!inF1=tx}_nc5}mr=DV)ug;EKpMRZBPRn{eeTULj zT$`c1GEET^B}LcnR&AAaiH{Ye*N`rB57O`u#Dp_b1s(h%A~RpaD3zSN{F_j2tj!_g zDpL!j?zKmG<;}MS$4?;^-Us|{&uLL9Bj?<{OfuP3Q`%K@Iu9puGT|qsM`h&mnJkio zah!lJc2>jfh55v~gO_sCXyqAH#KmqWJ;xJR)WRHv@kL7O1(~3lev(ei&BE0!@)+$U l*+Y54N|AtcU>`GZuw~%!;jig5uN)!pv)3}!7s*7Z iScale + 1) + return false; + if (null != sRight) + if (sRight.length() > iPrecision) + return false; + if (null != sSign) { + if (sSign.equals("N") && !sLeft.startsWith("-")) + return false; + if (sSign.equals("P") && !sLeft.startsWith("+")) + return false; + if (sSign.equals("NN") && sLeft.startsWith("-")) + return false; + if (sSign.equals("NP") && sLeft.startsWith("+")) + return false; + } + } + return true; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/MessageKey.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/MessageKey.java new file mode 100644 index 0000000..a0ecde1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/MessageKey.java @@ -0,0 +1,21 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import java.io.Serializable; + +public class MessageKey implements Serializable { + private String key; + + public MessageKey() {} + + public MessageKey(String key) { + this.key = key; + } + + public String getKey() { + return this.key; + } + + public void setKey(String newKey) { + this.key = newKey; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportPlugin.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportPlugin.java new file mode 100644 index 0000000..0918227 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportPlugin.java @@ -0,0 +1,18 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import javax.servlet.ServletException; +import org.apache.struts.action.ActionServlet; +import org.apache.struts.action.PlugIn; +import org.apache.struts.config.ModuleConfig; + +public class ReportPlugin implements PlugIn { + private String reportPathName = "/WEB-INF/EnrgiseReport.xml"; + + public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {} + + public void destroy() {} + + private String calculatePath(ActionServlet servlet, String sPath) { + return servlet.getServletContext().getRealPath(sPath); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportReader.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportReader.java new file mode 100644 index 0000000..42c8337 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ReportReader.java @@ -0,0 +1,39 @@ +package WEB-INF.classes.wenrgise.common.utility; + +public class ReportReader { + String parameter; + + String parameterValue; + + public String getAppServerName() { + return "reportserver"; + } + + public String getAppServerPortNumber() { + return "8888"; + } + + public String getAppServerReportPathAlias() { + return "reports"; + } + + public String getStatsRep() { + return "statusKey"; + } + + public String getParameter() { + return this.parameter; + } + + public void setParameter(String newParameter) { + this.parameter = newParameter; + } + + public String getParameterValue() { + return this.parameterValue; + } + + public void setParameterValue(String newParameterValue) { + this.parameterValue = newParameterValue; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ServiceLocator.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ServiceLocator.java new file mode 100644 index 0000000..ce3f5db --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/ServiceLocator.java @@ -0,0 +1,84 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ContextProvider; + +public class ServiceLocator { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static wenrgise.common.utility.ServiceLocator serviceLocator = new wenrgise.common.utility.ServiceLocator(); + + private ServiceLocator() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static wenrgise.common.utility.ServiceLocator getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName.trim())) { + Context context = ContextProvider.getContext(); + this.homeCache.put(jndiName.trim(), context.lookup(jndiName.trim())); + } + } catch (NamingException oNa) { + oNa.printStackTrace(); + System.out.println(oNa.getExplanation()); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName.trim()); + } + + public Object getLocalService(String jndiHomeName) throws EnrgiseSystemException { + Object obj = null; + try { + Context context = ContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + obj = this.cacheMap.get(jndiHomeName); + } else { + obj = context.lookup(jndiHomeName); + this.cacheMap.put(jndiHomeName, obj); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return obj; + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + System.out.println(String.valueOf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").concat(String.valueOf(jndiHomeName))); + EJBLocalHome home = null; + try { + Context context = ContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + System.out.println(ne); + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return home; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/UserInfo.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/UserInfo.java new file mode 100644 index 0000000..e894fe0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/UserInfo.java @@ -0,0 +1,175 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import java.io.Serializable; + +public class UserInfo implements Serializable { + private String userSystemId; + + private String userId; + + private String siteId; + + private String userType; + + private String userTypeId; + + private String userLocked; + + private String userActiveFlag; + + private String userName; + + private String siteName; + + private String currentYear; + + private boolean superUser = false; + + private String moduleId; + + private String gradeId; + + private String grade; + + private String desigId; + + private String designation; + + private String siteCode; + + public String getUserName() { + return this.userName; + } + + public void setUserName(String newUserName) { + this.userName = newUserName; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getUserActiveFlag() { + return this.userActiveFlag; + } + + public void setUserActiveFlag(String newUserActiveFlag) { + this.userActiveFlag = newUserActiveFlag; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String newUserId) { + this.userId = newUserId; + } + + public String getUserLocked() { + return this.userLocked; + } + + public void setUserLocked(String newUserLocked) { + this.userLocked = newUserLocked; + } + + public String getUserSystemId() { + return this.userSystemId; + } + + public void setUserSystemId(String newUserSystemId) { + this.userSystemId = newUserSystemId; + } + + public String getUserType() { + return this.userType; + } + + public void setUserType(String newUserType) { + this.userType = newUserType; + } + + public String getUserTypeId() { + return this.userTypeId; + } + + public void setUserTypeId(String newUserTypeId) { + this.userTypeId = newUserTypeId; + } + + public String getCurrentYear() { + return this.currentYear; + } + + public void setCurrentYear(String newCurrentYear) { + this.currentYear = newCurrentYear; + } + + public boolean isSuperUser() { + return this.superUser; + } + + public void setSuperUser(boolean newSuperUser) { + this.superUser = newSuperUser; + } + + public String getModuleId() { + return this.moduleId; + } + + public void setModuleId(String newModuleId) { + this.moduleId = newModuleId; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider.java new file mode 100644 index 0000000..4775406 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider.java @@ -0,0 +1,32 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import java.util.Hashtable; +import javax.naming.Context; +import javax.naming.InitialContext; + +public class WorkFlowContextProvider { + private Context ctx = null; + + public static InitialContext localContext; + + private static wenrgise.common.utility.WorkFlowContextProvider objContextProvider = new wenrgise.common.utility.WorkFlowContextProvider(); + + private WorkFlowContextProvider() { + try { + Hashtable env = new Hashtable(); + env.put("java.naming.factory.initial", "com.ibm.websphere.naming.WsnInitialContextFactory"); + env.put("java.naming.provider.url", "iiop://tcs093390:2811"); + this.ctx = new InitialContext(env); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static Context getContext() { + return objContextProvider.ctx; + } + + public static InitialContext getLocalContext() { + return localContext; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider2.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider2.java new file mode 100644 index 0000000..be032be --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowContextProvider2.java @@ -0,0 +1,35 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import java.util.Hashtable; +import javax.naming.Context; +import javax.naming.InitialContext; + +public class WorkFlowContextProvider2 { + private Context ctx = null; + + public static InitialContext localContext; + + private static wenrgise.common.utility.WorkFlowContextProvider2 objContextProvider = new wenrgise.common.utility.WorkFlowContextProvider2(); + + private WorkFlowContextProvider2() { + try { + Hashtable env = new Hashtable(); + env.put("java.naming.factory.initial", "com.evermind.server.rmi.RMIInitialContextFactory"); + env.put("java.naming.security.principal", "admin"); + env.put("dedicated.rmicontext", "true"); + env.put("java.naming.security.credentials", "welcome"); + env.put("java.naming.provider.url", "ormi://tcs041981:23892/current-workspace-app"); + this.ctx = new InitialContext(env); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static Context getContext() { + return objContextProvider.ctx; + } + + public static InitialContext getLocalContext() { + return localContext; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator.java new file mode 100644 index 0000000..54d4607 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator.java @@ -0,0 +1,62 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.WorkFlowContextProvider; + +public class WorkFlowServiceLocator { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static wenrgise.common.utility.WorkFlowServiceLocator serviceLocator = new wenrgise.common.utility.WorkFlowServiceLocator(); + + private WorkFlowServiceLocator() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static wenrgise.common.utility.WorkFlowServiceLocator getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName)) { + Context context = WorkFlowContextProvider.getContext(); + this.homeCache.put(jndiName, context.lookup(jndiName)); + } + } catch (NamingException oNa) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oNa.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oNa.getClass().getName()))); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oEx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oEx.getClass().getName()))); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName); + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + EJBLocalHome home = null; + try { + jndiHomeName = jndiHomeName.trim(); + Context context = WorkFlowContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return home; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator2.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator2.java new file mode 100644 index 0000000..8f06ff7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/utility/WorkFlowServiceLocator2.java @@ -0,0 +1,62 @@ +package WEB-INF.classes.wenrgise.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.WorkFlowContextProvider2; + +public class WorkFlowServiceLocator2 { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static wenrgise.common.utility.WorkFlowServiceLocator2 serviceLocator = new wenrgise.common.utility.WorkFlowServiceLocator2(); + + private WorkFlowServiceLocator2() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static wenrgise.common.utility.WorkFlowServiceLocator2 getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName)) { + Context context = WorkFlowContextProvider2.getContext(); + this.homeCache.put(jndiName, context.lookup(jndiName)); + } + } catch (NamingException oNa) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oNa.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oNa.getClass().getName()))); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(oEx.getMessage()))).concat(String.valueOf(" the type is "))).concat(String.valueOf(oEx.getClass().getName()))); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName); + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + EJBLocalHome home = null; + try { + jndiHomeName = jndiHomeName.trim(); + Context context = WorkFlowContextProvider2.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return home; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseDetailVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseDetailVO.java new file mode 100644 index 0000000..6c892fa --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseDetailVO.java @@ -0,0 +1,145 @@ +package WEB-INF.classes.wenrgise.common.vo; + +import java.io.Serializable; +import java.util.ArrayList; +import wenrgise.common.vo.BaseVO; + +public class BaseDetailVO extends BaseVO implements Serializable { + private int recordsPerPage = 0; + + private int maxPage = 0; + + private long currentPage = 0L; + + private long currentSlot = 0L; + + private long totalDetailRecord = 0L; + + private ArrayList oThisPageData = null; + + private ArrayList oAllPageData = null; + + int rowAdded = 0; + + int rowDeleted = 0; + + public BaseDetailVO() { + this.oThisPageData = new ArrayList(); + this.oAllPageData = new ArrayList(); + this.currentSlot = 0L; + } + + public void reset() { + this.currentPage = 0L; + this.currentSlot = 0L; + this.oThisPageData = new ArrayList(); + this.oAllPageData = new ArrayList(); + } + + public ArrayList getOAllPageData() { + return this.oAllPageData; + } + + public void setOAllPageData(ArrayList newOAllPageData) { + this.oAllPageData = newOAllPageData; + } + + public ArrayList getOThisPageData() { + return this.oThisPageData; + } + + public void setOThisPageData(ArrayList newOThisPageData) { + this.oThisPageData = newOThisPageData; + } + + public long getTotalDetailRecord() { + return this.totalDetailRecord; + } + + public void setTotalDetailRecord(long newTotalDetailRecord) { + this.totalDetailRecord = newTotalDetailRecord; + } + + public int getRowAdded() { + return this.rowAdded; + } + + public void setRowAdded(int newRowAdded) { + this.rowAdded = newRowAdded; + } + + public int getRowDeleted() { + return this.rowDeleted; + } + + public void setRowDeleted(int newRowDeleted) { + this.rowDeleted = newRowDeleted; + } + + public long getCurrentPage() { + return this.currentPage; + } + + public void setCurrentPage(long newCurrentPage) { + this.currentPage = newCurrentPage; + } + + public long getCurrentSlot() { + return this.currentSlot; + } + + public void setCurrentSlot(long newCurrentSlot) { + this.currentSlot = newCurrentSlot; + } + + public int getMaxPage() { + return this.maxPage; + } + + public void setMaxPage(int newMaxPage) { + this.maxPage = newMaxPage; + } + + public int getRecordsPerPage() { + return this.recordsPerPage; + } + + public void setRecordsPerPage(int newRecordsPerPage) { + this.recordsPerPage = newRecordsPerPage; + } + + public long getSlot(long lPageRequested) { + return (lPageRequested % this.maxPage != 0L) ? (lPageRequested / this.maxPage + 1L) : (lPageRequested / this.maxPage); + } + + public int getRelativeStart(long lPageRequested) { + long lAbsoluteIndex = (lPageRequested - 1L) * this.recordsPerPage + 1L; + return (int)(lAbsoluteIndex % (this.recordsPerPage * this.maxPage)) - 1; + } + + public int getRelativeEnd(long lPageRequested) { + long lAbsoluteIndexStart = (lPageRequested - 1L) * this.recordsPerPage; + long lAbsoluteEnd = (lAbsoluteIndexStart + this.recordsPerPage < this.totalDetailRecord) ? (lAbsoluteIndexStart + this.recordsPerPage) : this.totalDetailRecord; + int iMod = (int)(lAbsoluteEnd % (this.recordsPerPage * this.maxPage)); + if (iMod != 0) + return iMod - 1; + return this.recordsPerPage * this.maxPage - 1; + } + + public long getAbsoluteStart(long lPageRequested) { + return (lPageRequested - 1L) * this.recordsPerPage + 1L; + } + + public long getAbsoluteEnd(long lPageRequested) { + long lStart = (lPageRequested - 1L) * this.recordsPerPage; + return (lStart + (this.recordsPerPage * this.maxPage) < this.totalDetailRecord) ? (lStart + (this.recordsPerPage * this.maxPage)) : this.totalDetailRecord; + } + + public long getSlotStartPosition() { + return (this.currentSlot - 1L) * this.recordsPerPage * this.maxPage + 1L; + } + + public long getSlotLastPosition() { + return (this.currentSlot * this.recordsPerPage * this.maxPage < this.totalDetailRecord) ? (this.currentSlot * this.recordsPerPage * this.maxPage) : this.totalDetailRecord; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseHeaderVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseHeaderVO.java new file mode 100644 index 0000000..3365e9a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseHeaderVO.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.common.vo; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.util.ArrayList; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.vo.BaseVO; + +public class BaseHeaderVO extends BaseVO implements Serializable { + private ArrayList oHeaderVOTable = new ArrayList(); + + private long positionRequested = 0L; + + private long currentSlot = 0L; + + private long totalCount = 0L; + + private long maxHeaderSize = 0L; + + private Timestamp oWhenPicked = null; + + public ArrayList getOHeaderVOTable() { + return this.oHeaderVOTable; + } + + public long getHeaderStartPosition() throws EnrgiseApplicationException { + int iSlot = getSlot(); + return (iSlot - 1) * this.maxHeaderSize + 1L; + } + + public long getHeaderLastPosition() throws EnrgiseApplicationException { + int iSlot = getSlot(); + return (iSlot * this.maxHeaderSize < this.totalCount) ? (iSlot * this.maxHeaderSize) : this.totalCount; + } + + public int getSlot() throws EnrgiseApplicationException { + if (this.positionRequested < 0L || this.positionRequested > this.totalCount) + throw new EnrgiseApplicationException("wenrgise.common.navigation", "E"); + return ((int)(this.positionRequested % this.maxHeaderSize) != 0) ? (int)((int)this.positionRequested / this.maxHeaderSize + 1L) : (int)(this.positionRequested / this.maxHeaderSize); + } + + public void setOHeaderVOTable(ArrayList newOHeaderVOTable) { + this.oHeaderVOTable = newOHeaderVOTable; + } + + public BaseHeaderBean getHeaderRecord(int iPosition) throws EnrgiseApplicationException { + if (this.oHeaderVOTable == null) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + if (this.oHeaderVOTable.size() == 0 || this.oHeaderVOTable.size() < iPosition) + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + return this.oHeaderVOTable.get(iPosition - 1); + } + + public long getPositionRequested() { + return this.positionRequested; + } + + public void setPositionRequested(long newPositionRequested) { + this.positionRequested = newPositionRequested; + } + + public long getCurrentSlot() { + return this.currentSlot; + } + + public void setCurrentSlot(long newCurrentSlot) { + this.currentSlot = newCurrentSlot; + } + + public long getTotalCount() { + return this.totalCount; + } + + public void setTotalCount(long newTotalCount) { + this.totalCount = newTotalCount; + } + + public long getMaxHeaderSize() { + return this.maxHeaderSize; + } + + public void setMaxHeaderSize(long newMaxHeaderSize) { + this.maxHeaderSize = newMaxHeaderSize; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseQueryVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseQueryVO.java new file mode 100644 index 0000000..b9734d1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseQueryVO.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.common.vo; + +import java.io.Serializable; + +public class BaseQueryVO implements Serializable { + private long positionRequested = 0L; + + private String headerPrimaryKey = null; + + private int maxHeaderSize = 0; + + private String workListId; + + public long getPositionRequested() { + return this.positionRequested; + } + + public void setPositionRequested(long newPositionRequested) { + this.positionRequested = newPositionRequested; + } + + public String getHeaderPrimaryKey() { + return this.headerPrimaryKey; + } + + public void setHeaderPrimaryKey(String newHeaderPrimaryKey) { + this.headerPrimaryKey = newHeaderPrimaryKey; + } + + public int getMaxHeaderSize() { + return this.maxHeaderSize; + } + + public void setMaxHeaderSize(int newMaxHeaderSize) { + this.maxHeaderSize = newMaxHeaderSize; + } + + public String getWorkListId() { + return this.workListId; + } + + public void setWorkListId(String newWorkListId) { + this.workListId = newWorkListId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseVO.java new file mode 100644 index 0000000..b2f5f98 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/vo/BaseVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.common.vo; + +import java.io.Serializable; +import java.sql.Timestamp; + +public class BaseVO implements Serializable { + private Timestamp oWhenPicked = null; + + private long firstPosition = 0L; + + private long lastPosition = 0L; + + public Timestamp getOWhenPicked() { + return this.oWhenPicked; + } + + public void setOWhenPicked(Timestamp newOWhenPicked) { + this.oWhenPicked = newOWhenPicked; + } + + public long getFirstPosition() { + return this.firstPosition; + } + + public void setFirstPosition(long newFirstPosition) { + this.firstPosition = newFirstPosition; + } + + public long getLastPosition() { + return this.lastPosition; + } + + public void setLastPosition(long newLastPosition) { + this.lastPosition = newLastPosition; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/AddRowAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/AddRowAction.java new file mode 100644 index 0000000..e518a6d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/AddRowAction.java @@ -0,0 +1,134 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class AddRowAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + if (oBaseForm.getScreenMode().equals("N") || oBaseForm.getHeaderPrimaryKey() == null) { + String sHeaderSave = ParamUtil.getHeaderSaveRequired(sFormName); + if (null == sHeaderSave) + throw new EnrgiseApplicationException("wenrgise.common.saveheaderrecord", "M"); + } + String sScreenName = oBaseForm.getScreenName(); + String sHeaderPrimaryKey = oBaseForm.getHeaderPrimaryKey(); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 10, oBaseForm.getWorkListId()); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + boolean bGetDetailNotPressed = false; + BaseBD oBaseBD = getDetailBusinessDelegate((ActionForm)oBaseForm, request); + if (null == oBaseDetailVO) { + bGetDetailNotPressed = true; + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, false, oUser); + long l = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, l)); + } + if (oBaseDetailVO.getCurrentPage() == 0L) + oBaseDetailVO.setCurrentPage(1L); + long lPageRequested = getPageRequested(oBaseDetailVO, oDetailSizeValues); + ArrayList oDetailList = null; + if (oBaseDetailVO.getCurrentPage() != lPageRequested) { + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) { + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), getDetailArray(oBaseForm)); + throw new EnrgiseApplicationException("wenrgise.common.savefirst", "M"); + } + oBaseBD = getDetailBusinessDelegate(form, request); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, lPageRequested, request, oBaseBD, false, oUser); + oBaseDetailVO.setRowAdded(oBaseDetailVO.getRowAdded() + 1); + oDetailList = oBaseDetailVO.getOThisPageData(); + } else { + if (bGetDetailNotPressed) { + oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + } else { + oDetailList = getDetailArray(oBaseForm); + } + oBaseDetailVO.setRowAdded(oBaseDetailVO.getRowAdded() + 1); + } + BaseDetailBean oBaseDetailBean = getDetailBean(form); + oBaseDetailBean.setStatus("N"); + oDetailList.add(oBaseDetailBean); + oBaseForm.setThisPageDetailCount(oBaseForm.getThisPageDetailCount() + 1); + oBaseForm.setDetailDataChanged(true); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailList); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + ArrayList oEnableList = new ArrayList(); + oEnableList.add("butSave"); + if (null != oSecMap.get("E")) + oEnableList.addAll((ArrayList)oSecMap.get("E")); + enableDisable(oBaseForm, oEnableList, "E"); + } + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(14); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oList = getDetailArrayList(oBaseForm, sFormName, sScreenName); + oThisPageVO.setODetailList(oList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 14); + return mapping.findForward("success"); + } + + private void populateThisPageList(BaseDetailVO oBaseDetailVO, DetailSizeValues oDetailSizeValues) { + long lGrandTotalDetailRecord = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded(); + int iPage = (int)lGrandTotalDetailRecord % oDetailSizeValues.getDetailRecordPerPage() + 1; + int iDetailStartPosition = (iPage - 1) * oDetailSizeValues.getDetailRecordPerPage() + 1; + if (iDetailStartPosition < lGrandTotalDetailRecord + 1L); + } + + private long getPageRequested(BaseDetailVO oBaseDetailVO, DetailSizeValues oDetailSizeValues) { + long lLastRecordNumber = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded() + 1L; + return (lLastRecordNumber % oDetailSizeValues.getDetailRecordPerPage() != 0L) ? (lLastRecordNumber / oDetailSizeValues.getDetailRecordPerPage() + 1L) : (lLastRecordNumber / oDetailSizeValues.getDetailRecordPerPage()); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/BaseAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/BaseAction.java new file mode 100644 index 0000000..4411bc2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/BaseAction.java @@ -0,0 +1,751 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionError; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.util.MessageResources; +import wenrgise.common.bean.AccessBean; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.DebugHelper; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.ParamUtil; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; + +public abstract class BaseAction extends Action { + static final Logger log = Logger.getLogger("wenrgise.common.webtier.action.BaseAction"); + + MessageResources oMsgRes = null; + + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ActionErrors oErrorTable = null; + ActionMessages oMessageTable = null; + BaseForm oBaseForm = (BaseForm)form; + this.oMsgRes = getResources(request); + try { + HttpSession oSes = request.getSession(); + String sUserId = (String)oSes.getAttribute("userId"); + System.out.println(String.valueOf("I am in Base Action and UserId: --->").concat(String.valueOf(sUserId))); + if (null == sUserId) { + System.out.println("I am in Base Action And session expired"); + System.out.println("Session has expired"); + return mapping.findForward("failure"); + } + DebugHelper.createUserEjb(request.getSession()); + return executeImpl(mapping, form, request, response); + } catch (ClassNotFoundException oClassEx) { + processSystemException(oClassEx, oErrorTable); + } catch (InstantiationException oInSt) { + processSystemException(oInSt, oErrorTable); + } catch (InvocationTargetException oInvTar) { + processSystemException(oInvTar, oErrorTable); + } catch (IllegalAccessException oIlAcc) { + processSystemException(oIlAcc, oErrorTable); + } catch (EnrgiseSystemException oSys) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + String sKey = (null != oSys.getKey()) ? oSys.getKey() : "wenrgise.common.system"; + ActionError oSysError = new ActionError(sKey); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } catch (EnrgiseApplicationException oApp) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + if (oMessageTable == null) + oMessageTable = new ActionMessages(); + processException(oErrorTable, oMessageTable, oApp); + if (oApp.getList() != null) { + Iterator oIt = oApp.getList().iterator(); + while (oIt.hasNext()) { + EnrgiseApplicationException oAppErr = oIt.next(); + processException(oErrorTable, oMessageTable, oAppErr); + } + } + } finally { + if (oErrorTable != null) { + System.out.println("Save errors"); + if (oErrorTable.size() > 0) { + saveErrors(request, oErrorTable); + return mapping.findForward("success"); + } + } + if (oMessageTable != null) + if (oMessageTable.size() > 0) { + System.out.println("Save messages"); + saveMessages(request, oMessageTable); + return mapping.findForward("success"); + } + } + return mapping.findForward("failure"); + } + + private void processSystemException(Exception oEc, ActionErrors oErrorTable) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + EnrgiseSystemException oSys = new EnrgiseSystemException("wenrgise.common.system", oEc); + ActionError oSysError = new ActionError(oSys.getKey()); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } + + private void processException(ActionErrors oErrorTable, ActionMessages oMessageTable, EnrgiseApplicationException oApp) { + if (oApp.getArguments() == null) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else if (oApp instanceof EnrgiseMessageKeyException) { + processMessageKeyException((EnrgiseMessageKeyException)oApp, oErrorTable, oMessageTable); + } else if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oApp.getArguments().toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oApp.getArguments().toArray())); + } + } + + private void processMessageKeyException(EnrgiseMessageKeyException oApp, ActionErrors oErrorTable, ActionMessages oMessageTable) { + ArrayList oList = oApp.getArguments(); + if (null == oList) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else { + ArrayList oNewList = new ArrayList(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + Object obj = oIt.next(); + if (obj instanceof MessageKey) { + MessageKey oMsgKey = (MessageKey)obj; + oNewList.add(this.oMsgRes.getMessage(oMsgKey.getKey())); + continue; + } + oNewList.add(obj); + } + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oNewList.toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oNewList.toArray())); + } + } + } + + protected BaseQueryVO getQueryVO(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sQueryVO = ParamUtil.getQueryVO(sFormName); + BaseQueryVO oBaseQueryVO = (BaseQueryVO)Class.forName(sQueryVO).newInstance(); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + return oBaseQueryVO; + } + + protected BaseDetailBean getDetailBean(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + return oBaseDetailBean; + } + + protected BaseBD getHeaderBusinessDelegate(ActionForm form, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getHeaderBD(sFormName); + try { + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } catch (Exception Ex) { + Ex.printStackTrace(); + return null; + } + } + + protected BaseBD getDetailBusinessDelegate(ActionForm form, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getDetailBD(sFormName, sScreenName); + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } + + protected BaseHeaderBean getBaseHeaderBean(String sFormName) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + String sBaseHeaderBean = ParamUtil.getHeaderBean(sFormName); + try { + BaseHeaderBean oBaseHeaderBean = (BaseHeaderBean)Class.forName(sBaseHeaderBean).newInstance(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + oBaseHeaderBean.setPseudoHeader(pseudoHeader); + return oBaseHeaderBean; + } catch (Exception ex) { + ex.printStackTrace(); + return null; + } + } + + protected ArrayList getDetailArrayList(BaseForm oBaseForm, String sFormName, String sScreenName) throws EnrgiseSystemException, IllegalAccessException, InstantiationException, ClassNotFoundException { + String sDetailArrayList = ParamUtil.getDetailArrayName(sFormName, sScreenName); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, sDetailArrayList); + return oList; + } + + protected UserSession getUserSessionBean(HttpServletRequest request) throws EnrgiseApplicationException, RemoteException, EnrgiseSystemException { + UserInfo oUserInfo = new UserInfo(); + HttpSession session = request.getSession(); + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) + try { + String sEmpId = (String)session.getAttribute("empId"); + String sSiteId = (String)session.getAttribute("siteId"); + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("HrmUserSession"); + oUser = oUserHome.create(); + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + oUserInfo = oHrmFacade.getLoginUserInfo(sEmpId, sSiteId); + oUser.setUserInfo(oUserInfo); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oSecHrmFacade = oSecHome.create(); + HrmThirdFacadeHome oThirdHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oThirdFacade = oThirdHome.create(); + HashMap oMap = new HashMap(); + oMap.put(ParamUtil.getModuleName(), oHrmFacade); + oMap.put("SecHRMS", oSecHrmFacade); + oMap.put("ThirdHRMS", oThirdFacade); + oUser.setModuleFacade(oMap); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + EmpInfoBean oEmpInfoBean = new EmpInfoBean(); + oEmpInfoBean.setModuleId("8"); + oEmpInfoBean.setEmpId(oUserInfo.getUserTypeId()); + SecurityBD oSecurityBD = new SecurityBD(); + ArrayList menu = oSecurityBD.getTreeSet(oEmpInfoBean); + HashMap secMap = oSecurityBD.getAccessInfo(oEmpInfoBean); + oUser.setAccessInfo(secMap); + session.setAttribute("menuList", menu); + session.setAttribute("userId", sEmpId); + } catch (CreateException ex) { + ex.printStackTrace(); + } + return oUser; + } + + protected void clearDetailLists(BaseForm form, ArrayList oDetailList) throws IllegalAccessException, InvocationTargetException { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + DetailScreen oDetailScreen = oIt.next(); + BeanUtils.copyProperty(form, oDetailScreen.get_DetailArrayName(), new ArrayList()); + } + } + + protected ArrayList getDetailArray(BaseForm oBaseForm) throws EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + ArrayList oDetailArray = new ArrayList(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + ArrayList oFieldList = new ArrayList(); + oFieldList = getFieldList(oFieldList, oBaseDetailBean.getClass()); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName)); + for (int iRecord = 0; iRecord < oBaseForm.getThisPageDetailCount(); iRecord++) { + if (null == oList) + break; + oBaseDetailBean = oList.get(iRecord); + if (null == oBaseDetailBean) + break; + Iterator oIt = oFieldList.iterator(); + while (oIt.hasNext()) { + try { + Field ob = oIt.next(); + String sFieldName = ob.getName(); + if (sFieldName.startsWith("disab")) + continue; + if (ob.getType().getName().equals("java.lang.String")) { + String sValue = BeanUtils.getIndexedProperty(oBaseForm, sFieldName, iRecord); + BeanUtils.setProperty(oBaseDetailBean, sFieldName, sValue); + } + } catch (NoSuchMethodException noSuchMethodException) {} + } + oDetailArray.add(oBaseDetailBean); + } + return oDetailArray; + } + + private ArrayList getFieldList(ArrayList oFieldList, Class oClass) { + if (oClass == null) + return oFieldList; + Field[] oFields = oClass.getDeclaredFields(); + EnrgiseUtil.addToList(oFieldList, (Object[])oFields); + return getFieldList(oFieldList, oClass.getSuperclass()); + } + + protected void changeMode(BaseForm oBaseForm, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseForm, oBaseHeaderBean); + clearDetailLists(oBaseForm, ParamUtil.getDetailList(sFormName)); + UserSession oUser = getUserSessionBean(request); + oUser.putBaseHeaderVO(sFormName, null); + oUser.removeAllDetailVO(sFormName); + resetForm(oBaseForm); + } + + protected void checkHeaderNavigation(BaseForm oBaseForm, BaseHeaderVO oBaseHeaderVO) throws EnrgiseApplicationException { + long lPositionRequested = Long.parseLong(oBaseForm.getUserPositionRequested()); + if (null != oBaseHeaderVO) { + if (lPositionRequested <= 0L || lPositionRequested > oBaseHeaderVO.getTotalCount()) + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + oBaseForm.setPositionRequested(lPositionRequested); + } else { + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + } + } + + private void resetForm(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setPositionRequested(0L); + oBaseForm.setTotalCount(0L); + oBaseForm.setTotalDetailRecord(0L); + oBaseForm.setTotalHeaderRecord(0L); + oBaseForm.setHeaderPrimaryKey(null); + oBaseForm.setUserPageRequested(null); + oBaseForm.setDetailId(null); + oBaseForm.setStatus(null); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setChecked(null); + oBaseForm.setUserPositionRequested(null); + oBaseForm.setTotalCount(0L); + oBaseForm.setNewPageRequested(null); + oBaseForm.setItemChecked(null); + oBaseForm.setLovKey(null); + oBaseForm.setTxtSearchFields(null); + oBaseForm.setTxtDisplayFields(null); + oBaseForm.setTxtIndex(null); + oBaseForm.setThisPageDetailCount(0); + oBaseForm.setTotalPageCount(0L); + oBaseForm.setHeaderStatus(null); + oBaseForm.setButtonClicked(null); + oBaseForm.setButtonName(null); + oBaseForm.setDetailStartPage(0); + } + + protected void checkDetailNavigation(BaseForm oBaseForm, BaseDetailVO oBaseDetailVO) throws EnrgiseApplicationException { + boolean flag = false; + long lPageRequested = 0L; + if (EnrgiseUtil.checkString(oBaseForm.getUserPageRequested())) { + lPageRequested = Long.parseLong(oBaseForm.getUserPageRequested()); + } else { + flag = true; + } + if (null != oBaseDetailVO) { + if (flag == false) { + if (lPageRequested <= 0L || oBaseDetailVO.getTotalDetailRecord() <= oBaseDetailVO.getRecordsPerPage() * (lPageRequested - 1L)) + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + oBaseForm.setPageRequested(lPageRequested); + } else if (oBaseForm.getDetailList() != null) { + oBaseForm.setPageRequested(1L); + } else { + oBaseForm.setPageRequested(0L); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + } + } + + protected void enableDisable(BaseForm oBaseForm, ArrayList arylstFields, String enableFlag) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (null != arylstFields) { + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + StringBuffer sField = new StringBuffer(iterFields.next()); + String sProperty = String.valueOf("setDisab").concat(String.valueOf(sField.toString())); + try { + Class[] oCls = { Class.forName("java.lang.String") }; + Method oMethod = oBaseForm.getClass().getMethod(sProperty, oCls); + String sFlag = enableFlag.equals("D") ? "true" : "false"; + Object[] obj = { sFlag }; + oMethod.invoke(oBaseForm, obj); + } catch (NoSuchMethodException nse) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(nse.getMessage()))).concat(String.valueOf(" "))).concat(String.valueOf(sProperty))); + } + } + } + } + + protected void enableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "E"); + } catch (Exception exception) {} + } + + protected void disableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "D"); + } catch (Exception exception) {} + } + + protected ArrayList queryClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butSave"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList insertClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butInsert"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList executeClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butExecute"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList deleteClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + return arylstFields; + } + + protected ArrayList saveClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList refreshClicked() { + ArrayList arylstFields = new ArrayList(); + return arylstFields; + } + + protected ArrayList nextHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList prevHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList getDetailClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList addRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList delRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butDelRow"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected void controlHeaderNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList arylstFields = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalCount(); + long lRecordNum = oBaseForm.getPositionRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + } else { + if (lRecordNum == lTotalRecord) + arylstFields.add("butNextHeader"); + if (lRecordNum == 1L) + arylstFields.add("butPrevHeader"); + } + enableDisable(oBaseForm, arylstFields, "D"); + } + + protected void controlDetailNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalPageCount(); + long lRecordNum = oBaseForm.getPageRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + oDisableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + oDisableList.add("newPageRequested"); + oDisableList.add("butJumpDetail"); + } else if (lRecordNum == lTotalRecord) { + oEnableList.add("butPrevDetail"); + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oDisableList.add("butNextDetail"); + } else if (lRecordNum == 1L) { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + } else { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oEnableList.add("butPrevDetail"); + } + enableDisable(oBaseForm, oEnableList, "E"); + enableDisable(oBaseForm, oDisableList, "D"); + } + + protected void resetDetailPageData(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setTotalPageCount(0L); + } + + protected long calculateTotalDetailPage(String sFormName, String sScreenName, long lTotDetRecord) { + long totRecPerPage = ParamUtil.getDetailRecordPerPage(sFormName, sScreenName); + if (lTotDetRecord % totRecPerPage != 0L) + return lTotDetRecord / totRecPerPage + 1L; + return lTotDetRecord / totRecPerPage; + } + + protected BaseDetailVO getDetailData(BaseForm oBaseForm, String sFormName, String sScreenName, long lPageRequested, HttpServletRequest request, BaseBD oBaseBD, boolean bForce, UserSession oUser) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = oBaseForm.getHeaderPrimaryKey(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (!EnrgiseUtil.checkString(pseudoHeader)) { + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, sHeaderPrimaryKey, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } else { + BaseQueryVO oBaseQueryVO = getQueryVO((ActionForm)oBaseForm); + BeanUtils.copyProperties(oBaseQueryVO, oBaseForm); + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, oBaseQueryVO, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } + if (oBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oBaseForm.setPageRequested(lPageRequested); + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oBaseForm.setNewPageRequested(null); + oBaseForm.setPageRequested(lPageRequested); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + return oBaseDetailVO; + } + + protected void onLoad(ActionForm form, HttpServletRequest request, int actionName) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseDetailVO oBaseDetailVO = new BaseDetailVO(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setActionName(actionName); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oBaseDetailVO) { + ArrayList oDetailList = getDetailArrayList(oBaseForm, sFormName, sScreenName); + oThisPageVO.setODetailList(oDetailList); + } + oBaseBD.onLoadAction(oThisPageVO); + if (oThisPageVO != null) + if (oThisPageVO.getOHeaderBean() != null) + BeanUtils.copyProperties(form, oThisPageVO.getOHeaderBean()); + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + } + + protected void checkAccessInfo(UserSession oUserSession, String sComponentName, String sScreenMode, String sButtonName, int iActionName, String sWorkListId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + HashMap oSecMap = oUserSession.getAccessInfo(); + AccessBean objBean = (AccessBean)oSecMap.get(sComponentName); + if (!EnrgiseUtil.checkString(sWorkListId)) { + if (iActionName == 10 || iActionName == 14 || iActionName == 23) { + String s = null; + System.out.println("I am in AccessInfo"); + System.out.println("Insert Flag: "); + try { + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + System.out.println("after Insert Flag: "); + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + if (iActionName == 8) + if (sScreenMode.equalsIgnoreCase("N")) { + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } else if (sScreenMode.equalsIgnoreCase("U")) { + if (!objBean.getUpdateFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.update"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + if (iActionName == 17 || iActionName == 15) + if (!objBean.getDeleteFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.delete"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + } + + protected String getComponentName(String sFormName) { + String sModFormName = sFormName.replace('.', ','); + int index = 0; + char g = ','; + char[] arrayModeFormName = sModFormName.toCharArray(); + int k; + for (k = arrayModeFormName.length - 1; k > 0; k--) { + if (arrayModeFormName[k] == g) { + index = k + 1; + break; + } + } + String sComponentName = sModFormName.substring(index, sModFormName.length()); + return sComponentName; + } + + public abstract ActionForward executeImpl(ActionMapping paramActionMapping, ActionForm paramActionForm, HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/CancelAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/CancelAction.java new file mode 100644 index 0000000..8301487 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/CancelAction.java @@ -0,0 +1,23 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; + +public class CancelAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + return mapping.getInputForward(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DecrAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DecrAction.java new file mode 100644 index 0000000..bdd12f4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DecrAction.java @@ -0,0 +1,65 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DecrAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + int count = 0; + ArrayList oDetailArray = getDetailArray(oBaseForm); + try { + String[] itemChecked = oBaseForm.getItemChecked(); + String[] sStatuss = oBaseForm.getStatus(); + String[] sStartFields = BeanUtils.getArrayProperty(oBaseForm, "startField"); + for (int i = 0; i < itemChecked.length; i++) { + if (itemChecked[i].equals("Y")) { + count++; + String sStartField = sStartFields[i]; + if (i < itemChecked.length - 1) { + for (int j = i + 1; j < itemChecked.length; j++) { + String sStatus = sStatuss[j]; + if (!sStatus.equals("D")) { + BaseDetailBean oBaseDetailBean = oDetailArray.get(j); + oBaseDetailBean.setStatus("U"); + BeanUtils.setProperty(oBaseDetailBean, "startField", sStartField); + oDetailArray.set(j, oBaseDetailBean); + break; + } + } + ((BaseDetailBean)oDetailArray.get(i)).setStatus("D"); + ((BaseDetailBean)oDetailArray.get(i)).setItemChecked("N"); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowDeleted() + 1); + } + } + } + } catch (NoSuchMethodException noSuchMethodException) {} + if (count > 0) + oBaseForm.setDetailDataChanged(true); + oBaseDetailVO.setOThisPageData(oDetailArray); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + onLoad(form, request, 16); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteAction.java new file mode 100644 index 0000000..93b5ce8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteAction.java @@ -0,0 +1,109 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DeleteAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 17, oBaseForm.getWorkListId()); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + BaseHeaderVO oBaseHeaderVO = null; + Timestamp oHeaderPicked = null; + Timestamp oDetailPicked = null; + oBaseHeaderVO = oUser.getBaseHeaderVO(sFormName); + if (oBaseHeaderVO != null) { + oHeaderPicked = oBaseHeaderVO.getOWhenPicked(); + oBaseHeaderBean = getBaseHeaderBean(sFormName); + if (oBaseHeaderBean == null) + oBaseHeaderBean = getBaseHeaderBean(sFormName); + } + BeanUtils.copyProperties(oBaseHeaderBean, form); + oBaseForm.setHeaderDataChanged(true); + String sHeaderPrimaryKey = oBaseBD.saveRecord(oBaseHeaderBean, oHeaderPicked, oBaseForm.getScreenName(), "D", oBaseForm.isHeaderDataChanged(), oDetailBeanArray, oBaseForm.isDetailDataChanged(), oDetailPicked); + BaseQueryVO oBaseQueryVO = null; + if (oBaseForm.getPositionRequested() > 0L && sHeaderPrimaryKey == null) { + if (oBaseForm.getTotalHeaderRecord() == 1L) { + oBaseForm.setScreenMode("Q"); + changeMode(oBaseForm, request); + } else { + oBaseHeaderVO = oBaseBD.getNextHeaderRecord(oBaseQueryVO, oBaseForm.getPositionRequested(), sFormName, true, oUser); + int iRelativePosition = (int)(oBaseHeaderVO.getPositionRequested() - oBaseHeaderVO.getHeaderStartPosition() + 1L); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(iRelativePosition)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oBaseForm.setTotalHeaderRecord(((int)oBaseForm.getTotalHeaderRecord() - 1)); + oBaseHeaderVO.setTotalCount(oBaseHeaderVO.getTotalCount() - 1L); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setScreenMode("U"); + } + } else { + oBaseQueryVO = getQueryVO(form); + oBaseQueryVO.setHeaderPrimaryKey(sHeaderPrimaryKey); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oBaseForm.setScreenMode("U"); + } + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(17); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 17); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteRowAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteRowAction.java new file mode 100644 index 0000000..d65bf4c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/DeleteRowAction.java @@ -0,0 +1,90 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DeleteRowAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String[] itemChecked = oBaseForm.getItemChecked(); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 17, oBaseForm.getWorkListId()); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = null; + boolean newRecordFlag = false; + UserInfo oUserInfo = oUser.getUserInfo(); + SecurityBD oSecBD = new SecurityBD(); + ArrayList oDetailArray = getDetailArray(oBaseForm); + int count = 0; + for (int i = 0; i < itemChecked.length; i++) { + if (itemChecked[i].equals("Y")) + if (!((BaseDetailBean)oDetailArray.get(i)).getStatus().equals("N")) { + count++; + ((BaseDetailBean)oDetailArray.get(i)).setStatus("D"); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowDeleted() + 1); + } else { + oDetailArray.remove(i); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowAdded() - 1); + newRecordFlag = true; + } + } + if (count == 0 && newRecordFlag == false) + throw new EnrgiseApplicationException("wenrgise.common.norowselected"); + if (count > 0) + oBaseForm.setDetailDataChanged(true); + oBaseDetailVO.setOThisPageData(oDetailArray); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oThisList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oThisList); + } + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 15); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ExitAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ExitAction.java new file mode 100644 index 0000000..7ca6608 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ExitAction.java @@ -0,0 +1,34 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; + +public class ExitAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + System.out.println("I am in Exit Action ---->"); + BaseForm oBaseForm = (BaseForm)form; + String sFormBean = mapping.getAttribute(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + UserSession oUser = getUserSessionBean(request); + if (oUser != null) + oUser.removeAllIfExists(sFormName, sScreenName); + HttpSession session = request.getSession(); + session.removeAttribute(sFormBean); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetButtonAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetButtonAction.java new file mode 100644 index 0000000..d9cd742 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetButtonAction.java @@ -0,0 +1,132 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetButtonAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.getScreenMode().equals("N")) + throw new EnrgiseApplicationException("wenrgise.common.saveheaderrecord", "M"); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + BaseHeaderVO oBaseHeaderVO = null; + Timestamp oHeaderPicked = null; + Timestamp oDetailPicked = null; + oBaseHeaderVO = oUser.getBaseHeaderVO(sFormName); + if (oBaseHeaderVO != null) { + oHeaderPicked = oBaseHeaderVO.getOWhenPicked(); + oBaseHeaderBean = getBaseHeaderBean(sFormName); + } + BeanUtils.copyProperties(oBaseHeaderBean, form); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (oBaseDetailVO != null) { + oDetailPicked = oBaseDetailVO.getOWhenPicked(); + oDetailBeanArray = getDetailArray(oBaseForm); + } + String sHeaderPrimaryKey = oBaseBD.submit(oBaseForm.getButtonName(), oBaseHeaderBean, oHeaderPicked, oBaseForm.getScreenName(), oBaseForm.getScreenMode(), oBaseForm.isHeaderDataChanged(), oDetailBeanArray, oBaseForm.isDetailDataChanged(), oDetailPicked); + oBaseForm.setHeaderPrimaryKey(sHeaderPrimaryKey); + BaseQueryVO oBaseQueryVO = null; + oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(sHeaderPrimaryKey); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oUser.putBaseHeaderVO(sFormName, oBaseHeaderVO); + if (null != oBaseDetailVO) { + if (oBaseDetailVO.getTotalDetailRecord() + oBaseDetailVO.getRowAdded() - oBaseDetailVO.getRowDeleted() > 0L) { + oBaseDetailVO.setRowDeleted(0); + oBaseDetailVO.setRowAdded(0); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setPageRequested(1L); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + checkDetailNavigation(oBaseForm, oUser.getBaseDetailVO(sFormName, sScreenName)); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + } + oBaseDetailVO.setRowAdded(0); + oBaseDetailVO.setRowDeleted(0); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + } + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(18); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 18); + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailAction.java new file mode 100644 index 0000000..f6fb535 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailAction.java @@ -0,0 +1,90 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetDetailAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.getScreenMode().equals("N")) + throw new EnrgiseApplicationException("wenrgise.common.saveheaderrecord", "M"); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + String sScreenName = oBaseForm.getScreenName(); + BaseDetailVO oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + if (oBaseDetailVO.getOThisPageData() != null) + oBaseForm.setScreenMode("U"); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + ArrayList oClicked = getDetailClicked(); + ArrayList oEnableList = new ArrayList(); + oEnableList.add("butAddRow"); + if (totDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } else { + oEnableList.add("butDelRow"); + oEnableList.add("butSave"); + } + enableDisable(oBaseForm, oClicked, "D"); + enableDisable(oBaseForm, oEnableList, "E"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(6); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 6); + oUser.setForwardedPage(sFormName, "success"); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailPageAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailPageAction.java new file mode 100644 index 0000000..b6fc08f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetDetailPageAction.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetDetailPageAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + String sScreenName = oBaseForm.getScreenName(); + checkDetailNavigation(oBaseForm, oUser.getBaseDetailVO(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, oBaseForm.getPageRequested(), request, oBaseBD, false, oUser); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getScreenName(), totDetRecord)); + ArrayList oClicked = getDetailClicked(); + ArrayList oEnableList = new ArrayList(); + oEnableList.add("butAddRow"); + if (totDetRecord == 0L) { + oClicked.add("butDelRow"); + } else { + oEnableList.add("butDelRow"); + oEnableList.add("butSave"); + } + enableDisable(oBaseForm, oClicked, "D"); + enableDisable(oBaseForm, oEnableList, "E"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(6); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 6); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetHeaderAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetHeaderAction.java new file mode 100644 index 0000000..456272e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetHeaderAction.java @@ -0,0 +1,69 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetHeaderAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + BaseQueryVO oBaseQueryVO = getQueryVO(form); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + UserSession oUser = getUserSessionBean(request); + BaseHeaderVO oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + resetDetailPageData(oBaseForm); + if (oBaseHeaderVO.getTotalCount() > 0L) + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, executeClicked(), "D"); + controlHeaderNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(1); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 1); + oUser.setForwardedPage(sFormName, "success"); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetInsertAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetInsertAction.java new file mode 100644 index 0000000..b8ca9e7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetInsertAction.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetInsertAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseQueryVO oBaseQueryVO = getQueryVO(form); + System.out.println(String.valueOf("Class name ").concat(String.valueOf(oBaseQueryVO.getClass().getName()))); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 8, oBaseForm.getWorkListId()); + UserInfo oUserInfo = oUser.getUserInfo(); + SecurityBD oSecBD = new SecurityBD(); + System.out.println(oBaseForm.getHeaderPrimaryKey()); + String sNewPK = oBaseBD.getInsertDataImpl(oBaseQueryVO); + oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(sNewPK); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oUser = getUserSessionBean(request); + BaseHeaderVO oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + oUser.putBaseHeaderVO(sFormName, oBaseHeaderVO); + oUser.putBaseQueryVO(sFormName, oBaseQueryVO); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + System.out.println(oBaseHeaderVO.getHeaderRecord(1).getHeaderPrimaryKey()); + BaseDetailVO oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setDetailStartPage(1); + oBaseDetailVO.setCurrentPage(1L); + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + if (oBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, nextHeaderClicked(), "D"); + controlHeaderNavigation(oBaseForm); + enableDisable(oBaseForm, getDetailClicked(), "D"); + controlDetailNavigation(oBaseForm); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(23); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 23); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetNextHeaderAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetNextHeaderAction.java new file mode 100644 index 0000000..b642462 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetNextHeaderAction.java @@ -0,0 +1,72 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetNextHeaderAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, EnrgiseApplicationException, EnrgiseSystemException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + checkHeaderNavigation(oBaseForm, oUser.getBaseHeaderVO(sFormName)); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseQueryVO oBaseQueryVO = oUser.getBaseQueryVO(sFormName); + BaseHeaderVO oBaseHeaderVO = oBaseBD.getNextHeaderRecord(oBaseQueryVO, oBaseForm.getPositionRequested(), sFormName, false, oUser); + int iRelativePosition = (int)(oBaseHeaderVO.getPositionRequested() - oBaseHeaderVO.getHeaderStartPosition() + 1L); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(iRelativePosition)); + oBaseForm.setTotalDetailRecord(0L); + clearDetailLists(oBaseForm, ParamUtil.getDetailList(sFormName)); + oUser.removeAllDetailVO(sFormName); + oBaseForm.setDetailStartPage(0); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oBaseForm.setNewPositionRequested(null); + resetDetailPageData(oBaseForm); + enableAll(oBaseForm); + enableDisable(oBaseForm, nextHeaderClicked(), "D"); + controlHeaderNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(1); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 1); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetRefreshTabAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetRefreshTabAction.java new file mode 100644 index 0000000..46f1f9f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetRefreshTabAction.java @@ -0,0 +1,105 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetRefreshTabAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) { + if (oBaseForm.isDetailDataChanged()) { + ArrayList arrayList = getDetailArray(oBaseForm); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), arrayList); + } + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + } + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sForwardedPage = oBaseForm.getForwardedPage(); + BaseDetailVO oPresentBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oPresentBaseDetailVO) + oPresentBaseDetailVO.setCurrentPage(oBaseForm.getPageRequested()); + oUser.putBaseDetailVO(sFormName, sScreenName, oPresentBaseDetailVO); + BaseDetailVO oNextBaseDetailVO = oUser.getBaseDetailVO(sFormName, sForwardedPage); + if (oPresentBaseDetailVO != null) { + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sForwardedPage)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sForwardedPage)); + oNextBaseDetailVO = getDetailData(oBaseForm, sFormName, sForwardedPage, 1L, request, oBaseBD, true, oUser); + if (oNextBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oNextBaseDetailVO.getOThisPageData()); + oBaseForm.setPageRequested(oNextBaseDetailVO.getCurrentPage()); + oBaseForm.setThisPageDetailCount((null != oNextBaseDetailVO.getOThisPageData()) ? oNextBaseDetailVO.getOThisPageData().size() : 0); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + oUser.putBaseDetailVO(sFormName, sForwardedPage, oNextBaseDetailVO); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + } + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailList = null; + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + if (oNextBaseDetailVO != null) { + oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getForwardedPage()); + oThisPageVO.setActionName(22); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + if (sForwardedPage != null) + oBaseForm.setScreenName(sForwardedPage); + onLoad(form, request, 22); + if (sForwardedPage != null) + return mapping.findForward(sForwardedPage); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetTabAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetTabAction.java new file mode 100644 index 0000000..5f7466f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/GetTabAction.java @@ -0,0 +1,140 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class GetTabAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) { + if (oBaseForm.isDetailDataChanged()) { + ArrayList oDetailList = getDetailArray(oBaseForm); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailList); + } + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + } + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sForwardedPage = oBaseForm.getForwardedPage(); + BaseDetailVO oPresentBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oPresentBaseDetailVO) + oPresentBaseDetailVO.setCurrentPage(oBaseForm.getPageRequested()); + oUser.putBaseDetailVO(sFormName, sScreenName, oPresentBaseDetailVO); + BaseDetailVO oNextBaseDetailVO = oUser.getBaseDetailVO(sFormName, sForwardedPage); + if (null != oNextBaseDetailVO) { + oBaseForm.setPageRequested(oNextBaseDetailVO.getCurrentPage()); + oBaseForm.setThisPageDetailCount((null != oNextBaseDetailVO.getOThisPageData()) ? oNextBaseDetailVO.getOThisPageData().size() : 0); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(sForwardedPage); + oThisPageVO.setActionName(22); + ArrayList oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oThisPageVO.getODetailList()); + } + } else { + if (oBaseForm.getHeaderPrimaryKey() == null) + throw new EnrgiseApplicationException("wenrgise.common.bringheaderdata", "M"); + if (oPresentBaseDetailVO != null) { + oNextBaseDetailVO = getDetailData(oBaseForm, sFormName, sForwardedPage, 1L, request, oBaseBD, true, oUser); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + oUser.putBaseDetailVO(sFormName, sForwardedPage, oNextBaseDetailVO); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailList = null; + BeanUtils.copyProperties(oBaseHeaderBean, form); + oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setODetailList(oDetailList); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getForwardedPage()); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oThisPageVO.getODetailList()); + } + } + } + if (sForwardedPage != null) + oBaseForm.setScreenName(sForwardedPage); + onLoad(form, request, 22); + if (sForwardedPage != null) { + oUser.setForwardedPage(sFormName, sForwardedPage); + return mapping.findForward(sForwardedPage); + } + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LOVAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LOVAction.java new file mode 100644 index 0000000..a406bb4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LOVAction.java @@ -0,0 +1,139 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.StringTokenizer; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.businessdelegate.LOVBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseLOVForm; +import wenrgise.common.xml.vo.LOVInfo; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.LOVManager; + +public class LOVAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseLOVForm oBaseLOVForm = (BaseLOVForm)form; + System.out.println(oBaseLOVForm.getLovKey()); + UserSession oUser = getUserSessionBean(request); + LOVInfo oLOVInfo = LOVManager.getInstance().getCachedObject(oBaseLOVForm.getLovKey()); + if (oLOVInfo != null) + if (EnrgiseUtil.checkString(oLOVInfo.getRecursiveFlag())) { + if (oLOVInfo.getRecursiveFlag().equalsIgnoreCase("Y")) { + processRecursiveLov(oBaseLOVForm, oLOVInfo, mapping); + oBaseLOVForm.setRecursiveFlag("Y"); + } else { + processSimpleLov(oBaseLOVForm, oLOVInfo, mapping, oUser.getUserInfo()); + oBaseLOVForm.setRecursiveFlag("N"); + } + } else { + processSimpleLov(oBaseLOVForm, oLOVInfo, mapping, oUser.getUserInfo()); + oBaseLOVForm.setRecursiveFlag("N"); + } + return mapping.findForward("success"); + } + + private ActionForward processSimpleLov(BaseLOVForm oBaseLOVForm, LOVInfo oLOVInfo, ActionMapping mapping, UserInfo oUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (oBaseLOVForm.getTxtHidAction().equals("FirstTime")) { + oBaseLOVForm.setTxtHidTotCols(-1); + oBaseLOVForm.setTxtHidSubmitFirst("true"); + oBaseLOVForm.setLevel(0); + oBaseLOVForm.setFinalLevel(0); + return mapping.findForward("success"); + } + if (oBaseLOVForm.getTxtHidAction().equals("SearchRecords")) { + LOVBD oLOVBD = new LOVBD(); + LovVO oLovVO = new LovVO(); + LovQueryVO oLOVQueryVO = new LovQueryVO(); + StringTokenizer stParameters = new StringTokenizer(oBaseLOVForm.getQueryParam(), ","); + while (stParameters.hasMoreTokens()) { + String[] sKeyValuePair = stParameters.nextToken().split("="); + oLOVQueryVO.setProperty(sKeyValuePair[0], sKeyValuePair[1]); + } + oLOVQueryVO.setProperty("LoginSiteId", oUserInfo.getSiteId()); + oLOVQueryVO.setProperty("ListSiteId", String.valueOf(String.valueOf("(").concat(String.valueOf(oUserInfo.getSiteId()))).concat(String.valueOf(")"))); + oLOVQueryVO.setSearchField1(oBaseLOVForm.getSearchField1()); + oLOVQueryVO.setSearchField2(oBaseLOVForm.getSearchField2()); + oLOVQueryVO.setSearchField2(oBaseLOVForm.getSearchField2()); + oLOVQueryVO.setSearchField3(oBaseLOVForm.getSearchField3()); + oLOVQueryVO.setSearchField4(oBaseLOVForm.getSearchField4()); + oLOVQueryVO.setSearchField5(oBaseLOVForm.getSearchField5()); + oLOVQueryVO.setSearchField6(oBaseLOVForm.getSearchField6()); + oLOVQueryVO.setLevel(0); + oBaseLOVForm.setFinalLevel(-1); + oLovVO = oLOVBD.getLOVData(oLOVInfo, oLOVQueryVO); + if (oBaseLOVForm.getLevel() == 0) + oBaseLOVForm.setLevel(oLovVO.getFinalLevel()); + if (oLovVO.getDetailList().size() > 0) { + BeanUtils.copyProperties(oBaseLOVForm, oLovVO); + oBaseLOVForm.setTxtHidTotRows(oLovVO.getDetailList().size()); + oBaseLOVForm.setTxtHidTotCols(oLovVO.getHeaderList().size()); + } else { + oBaseLOVForm.setTxtHidTotRows(0); + oBaseLOVForm.setTxtHidTotCols(-1); + } + oBaseLOVForm.setTxtHidSubmitFirst("false"); + oBaseLOVForm.setInsertFlag(oLOVInfo.getInsertFlag()); + } + return null; + } + + private ActionForward processRecursiveLov(BaseLOVForm oBaseLOVForm, LOVInfo oLOVInfo, ActionMapping mapping) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (oBaseLOVForm.getTxtHidAction().equals("FirstTime")) { + oBaseLOVForm.setTxtHidTotCols(-1); + oBaseLOVForm.setTxtHidSubmitFirst("true"); + oBaseLOVForm.setLevel(-999); + return mapping.findForward("success"); + } + if (oBaseLOVForm.getTxtHidAction().equals("SearchRecords")) { + LOVBD oLOVBD = new LOVBD(); + LovVO oLovVO = new LovVO(); + LovQueryVO oLOVQueryVO = new LovQueryVO(); + StringTokenizer stParameters = new StringTokenizer(oBaseLOVForm.getQueryParam(), ","); + while (stParameters.hasMoreTokens()) { + String[] sKeyValuePair = stParameters.nextToken().split("="); + oLOVQueryVO.setProperty(sKeyValuePair[0], sKeyValuePair[1]); + } + oLOVQueryVO.setSearchField1(oBaseLOVForm.getSearchField1()); + oLOVQueryVO.setSearchField2(oBaseLOVForm.getSearchField2()); + oLOVQueryVO.setLevel(oBaseLOVForm.getLevel()); + int iLevel = oBaseLOVForm.getLevel(); + int iFinalLevel = oBaseLOVForm.getFinalLevel(); + int iInitialLevel = oBaseLOVForm.getInitialLevel(); + oLOVQueryVO.setFinalLevel(iFinalLevel); + oLovVO = oLOVBD.getLOVData(oLOVInfo, oLOVQueryVO); + if (oLovVO.getDetailList().size() > 0) { + BeanUtils.copyProperties(oBaseLOVForm, oLovVO); + oBaseLOVForm.setTxtHidTotRows(oLovVO.getDetailList().size()); + oBaseLOVForm.setTxtHidTotCols(oLovVO.getHeaderList().size()); + } else { + oBaseLOVForm.setTxtHidTotRows(0); + oBaseLOVForm.setTxtHidTotCols(-1); + } + oBaseLOVForm.setTxtHidSubmitFirst("false"); + if (oLOVQueryVO.getLevel() == -999) { + oBaseLOVForm.setLevel(oLovVO.getInitialLevel()); + oBaseLOVForm.setFinalLevel(oLovVO.getFinalLevel()); + oBaseLOVForm.setInitialLevel(oLovVO.getInitialLevel()); + } else { + oBaseLOVForm.setLevel(iLevel); + oBaseLOVForm.setFinalLevel(iFinalLevel); + oBaseLOVForm.setInitialLevel(iInitialLevel); + } + oBaseLOVForm.setInsertFlag(oLOVInfo.getInsertFlag()); + } + return null; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LogOutAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LogOutAction.java new file mode 100644 index 0000000..76063ca --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/LogOutAction.java @@ -0,0 +1,44 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.webtier.action.BaseAction; + +public class LogOutAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + Cookie cookieEmpId = null; + Cookie cookieSiteId = null; + String target = "success"; + String sEmpId = null; + String sSiteId = null; + cookieEmpId = new Cookie("EmpId", sEmpId); + cookieSiteId = new Cookie("SiteId", sSiteId); + setCookieAttributes(cookieEmpId, false); + setCookieAttributes(cookieSiteId, false); + response.addCookie(cookieEmpId); + response.addCookie(cookieSiteId); + System.out.println("The cookie has been created"); + HttpSession session = request.getSession(); + session.setAttribute("status", "LOGOUT"); + return mapping.findForward("success"); + } + + private void setCookieAttributes(Cookie c, boolean bValid) { + c.setPath("/"); + if (bValid) { + c.setMaxAge(1800); + } else { + c.setMaxAge(0); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/NewModeAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/NewModeAction.java new file mode 100644 index 0000000..1252237 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/NewModeAction.java @@ -0,0 +1,67 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class NewModeAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + String sComponentName = getComponentName(sFormName); + UserSession oUser = getUserSessionBean(request); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 10, oBaseForm.getWorkListId()); + changeMode(oBaseForm, request); + oBaseForm.setQueried(false); + oBaseForm.setScreenMode("N"); + enableAll(oBaseForm); + enableDisable(oBaseForm, insertClicked(), "D"); + SecurityBD oSecBD = new SecurityBD(); + HashMap oMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), "N"); + if (null != oMap) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(10); + Map oBDMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oBDMap != null) { + if (oBDMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("D"), "D"); + if (oBDMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 10); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/OnLoadAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/OnLoadAction.java new file mode 100644 index 0000000..43c378c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/OnLoadAction.java @@ -0,0 +1,88 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class OnLoadAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + HrmBaseForm oHrmBaseForm = (HrmBaseForm)oBaseForm; + HttpSession oSes = request.getSession(); + String sSesId = oSes.getId(); + if (null == sSesId) + throw new EnrgiseApplicationException("wenrgise.common.session.expire", "E"); + String sUserId = (String)oSes.getAttribute("userId"); + if (null == sUserId) { + oBaseForm.setFirstLoad("false"); + throw new EnrgiseApplicationException("wenrgise.common.session.expire", "E"); + } + oHrmBaseForm.setEmpId(sUserId); + UserSession oUser = getUserSessionBean(request); + String sForwardedPage = oUser.getForwardedPage(sFormName); + if (EnrgiseUtil.checkString(oUser.getForwardedPage(sFormName))) { + sForwardedPage = oUser.getForwardedPage(sFormName); + oBaseForm.setScreenName(sForwardedPage); + return mapping.findForward(sForwardedPage); + } + sScreenName = request.getParameter("screenName"); + if (sScreenName.equalsIgnoreCase("HrmLvAppln")) { + changeMode(oBaseForm, request); + oBaseForm.setQueried(true); + oBaseForm.setScreenMode("N"); + oBaseForm.setFirstLoad("false"); + enableAll(oBaseForm); + enableDisable(oBaseForm, insertClicked(), "D"); + } else { + changeMode(oBaseForm, request); + oBaseForm.setQueried(true); + oBaseForm.setScreenMode("Q"); + oBaseForm.setFirstLoad("false"); + enableAll(oBaseForm); + enableDisable(oBaseForm, queryClicked(), "D"); + } + SecurityBD oSecBD = new SecurityBD(); + HashMap oMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), null); + if (null != oMap) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + Map oBDMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oBDMap != null) { + if (oBDMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("D"), "D"); + if (oBDMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("E"), "E"); + } + onLoad(form, request, 13); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/QueryModeAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/QueryModeAction.java new file mode 100644 index 0000000..64f482f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/QueryModeAction.java @@ -0,0 +1,83 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.utility.ParamUtil; + +public class QueryModeAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + changeMode(oBaseForm, request); + oBaseForm.setQueried(true); + oBaseForm.setScreenMode("Q"); + BaseBD oBaseBD = getHeaderBusinessDelegate((ActionForm)oBaseForm, request); + setComboValues(oBaseBD.getComboDetails(), request.getSession()); + setComboValues(oBaseBD.getDetailComboDetails(), request.getSession()); + enableAll(oBaseForm); + enableDisable(oBaseForm, queryClicked(), "D"); + SecurityBD oSecBD = new SecurityBD(); + HashMap oMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "HEADER", oBaseForm.getScreenMode(), null); + if (null != oMap) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(10); + Map oBDMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oBDMap != null) { + if (oBDMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("D"), "D"); + if (oBDMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oBDMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 10); + return mapping.findForward("success"); + } + + private void setComboValues(HashMap oComboMap, HttpSession session) { + if (null == oComboMap) + return; + if (oComboMap.size() <= 0) + return; + Set oKeySet = oComboMap.keySet(); + Iterator oIt = oKeySet.iterator(); + while (oIt.hasNext()) { + String sKey = oIt.next(); + session.setAttribute(sKey, oComboMap.get(sKey)); + } + oKeySet.clear(); + oComboMap.clear(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/RefreshAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/RefreshAction.java new file mode 100644 index 0000000..e4fc48b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/RefreshAction.java @@ -0,0 +1,112 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class RefreshAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + BaseDetailVO oBaseDetailVO = null; + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + String sScreenMode = oBaseForm.getScreenMode(); + oBaseForm.setUserPositionRequested(null); + oBaseForm.setUserPageRequested(null); + if (sScreenMode.equals("N") || sScreenMode.equals("Q")) { + changeMode(oBaseForm, request); + oBaseForm.setScreenMode(sScreenMode); + } else { + BaseQueryVO oBaseQueryVO = null; + BaseHeaderVO oBaseHeaderVO = null; + if (oBaseForm.isQueried()) { + oBaseQueryVO = oUser.getBaseQueryVO(sFormName); + if (oBaseQueryVO != null) { + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(null); + oBaseHeaderVO = oBaseBD.getNextHeaderRecord(oBaseQueryVO, oBaseForm.getPositionRequested(), sFormName, false, oUser); + int iRelativePosition = (int)(oBaseHeaderVO.getPositionRequested() - oBaseHeaderVO.getHeaderStartPosition() + 1L); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(iRelativePosition)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + } + } else { + oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + if (oBaseForm.getHeaderPrimaryKey() != null) { + oBaseQueryVO.setHeaderPrimaryKey(oBaseForm.getHeaderPrimaryKey()); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + } + } + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oBaseDetailVO) { + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, false, oUser); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + controlDetailNavigation(oBaseForm); + } + } + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(19); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 19); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveAction.java new file mode 100644 index 0000000..19f14ed --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveAction.java @@ -0,0 +1,133 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class SaveAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + String wlId = oBaseForm.getWorkListId(); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 8, oBaseForm.getWorkListId()); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + BaseHeaderVO oBaseHeaderVO = null; + Timestamp oHeaderPicked = null; + Timestamp oDetailPicked = null; + if (!oBaseForm.isDetailDataChanged() && !oBaseForm.isHeaderDataChanged()) + return mapping.findForward("success"); + BeanUtils.copyProperties(oBaseHeaderBean, form); + if (oBaseForm.getScreenMode().equals("N")) { + oHeaderPicked = null; + } else { + if (oBaseForm.isHeaderDataChanged()) { + oBaseHeaderVO = oUser.getBaseHeaderVO(sFormName); + if (oBaseHeaderVO != null) { + oHeaderPicked = oBaseHeaderVO.getOWhenPicked(); + oBaseHeaderBean = getBaseHeaderBean(sFormName); + } + BeanUtils.copyProperties(oBaseHeaderBean, form); + } + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (oBaseDetailVO != null) + oDetailPicked = oBaseDetailVO.getOWhenPicked(); + if (oBaseForm.isDetailDataChanged()) + oDetailBeanArray = getDetailArray(oBaseForm); + } + String sHeaderPrimaryKey = oBaseBD.saveRecord(oBaseHeaderBean, oHeaderPicked, oBaseForm.getScreenName(), oBaseForm.getScreenMode(), oBaseForm.isHeaderDataChanged(), oDetailBeanArray, oBaseForm.isDetailDataChanged(), oDetailPicked); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setHeaderPrimaryKey(sHeaderPrimaryKey); + BaseQueryVO oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(sHeaderPrimaryKey); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oUser.putBaseHeaderVO(sFormName, oBaseHeaderVO); + if (!oBaseForm.getScreenMode().equals("N")) + if (null != oBaseDetailVO) { + if (oBaseDetailVO.getTotalDetailRecord() + oBaseDetailVO.getRowAdded() - oBaseDetailVO.getRowDeleted() >= 0L) { + oBaseDetailVO.setRowDeleted(0); + oBaseDetailVO.setRowAdded(0); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setPageRequested(1L); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + checkDetailNavigation(oBaseForm, oUser.getBaseDetailVO(sFormName, sScreenName)); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + } + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + } + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(8); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 8); + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveDetailAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveDetailAction.java new file mode 100644 index 0000000..e253adf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/SaveDetailAction.java @@ -0,0 +1,111 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class SaveDetailAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sComponentName = getComponentName(sFormName); + checkAccessInfo(oUser, sComponentName, oBaseForm.getScreenMode(), "", 8, oBaseForm.getWorkListId()); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + Timestamp oDetailPicked = null; + if (!oBaseForm.isDetailDataChanged()) + return mapping.findForward("success"); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (oBaseDetailVO != null) + oDetailPicked = oBaseDetailVO.getOWhenPicked(); + oDetailBeanArray = getDetailArray(oBaseForm); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + String sHeaderPrimaryKey = oBaseBD.saveRecord(oBaseHeaderBean, null, oBaseForm.getScreenName(), oBaseForm.getScreenMode(), false, oDetailBeanArray, true, oDetailPicked); + oBaseForm.setDetailDataChanged(false); + if (null != oBaseDetailVO) { + oBaseDetailVO.setRowDeleted(0); + oBaseDetailVO.setRowAdded(0); + } + BaseQueryVO oBaseQueryVO = null; + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setPageRequested(1L); + oBaseDetailVO.setRowAdded(0); + oBaseDetailVO.setRowDeleted(0); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + if (oBaseDetailVO != null) { + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, sScreenName, totDetRecord)); + } + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(8); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + onLoad(form, request, 8); + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ValidateAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ValidateAction.java new file mode 100644 index 0000000..c4bd903 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/common/webtier/action/ValidateAction.java @@ -0,0 +1,53 @@ +package WEB-INF.classes.wenrgise.common.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; + +public class ValidateAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oThisPageVO.setActionName(21); + UserSession oUser = getUserSessionBean(request); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = getDetailArray(oBaseForm); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + onLoad(form, request, 21); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/business/BaseBO.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/business/BaseBO.java new file mode 100644 index 0000000..78d9225 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/business/BaseBO.java @@ -0,0 +1,295 @@ +package WEB-INF.classes.wenrgise.ejb.common.business; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Locale; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.ejb.common.utility.ServiceLocator; + +public abstract class BaseBO { + public static Logger log = Logger.getLogger("wenrgise.ejb.common.business.BaseBO"); + + protected String headerTable = null; + + private String headerPKColumnName = null; + + private String detailTable = null; + + private String detailPKColumnName = null; + + protected DateFormat userDateFormat; + + protected DateFormat defaultDateFormat; + + protected Locale userLocale; + + protected Locale defaultLocale; + + protected UserInfo oUserInfo; + + public BaseBO() {} + + public BaseBO(UserInfo oUserInfo) { + this.oUserInfo = oUserInfo; + } + + private void setDateFormatAndLocale() throws EnrgiseSystemException { + this.userDateFormat = new SimpleDateFormat("dd/MM/yyyy"); + this.defaultDateFormat = new SimpleDateFormat("dd/MM/yyyy"); + try { + UserSessionHome oHome = (UserSessionHome)ServiceLocator.getLocator().getService("UserSession"); + UserSession oUser = oHome.create(); + this.userDateFormat = oUser.getUserDateFormat(); + this.defaultDateFormat = oUser.getDefaultDateFormat(); + this.userLocale = oUser.getUserLocale(); + this.defaultLocale = oUser.getDefaultLocale(); + this.oUserInfo = oUser.getUserInfo(); + } catch (RemoteException oEx) { + log.severe(oEx.getMessage()); + throw new EnrgiseSystemException(); + } catch (CreateException oCrt) { + log.severe(oCrt.getMessage()); + throw new EnrgiseSystemException(); + } + } + + public String saveData(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sScreenHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + String sHeaderPrimaryKey = sScreenHeaderPrimaryKey; + if (sScreenMode.equals("U")) + initializeBOImpl(); + if (sScreenMode.equals("U")) + if (bHeaderDataChanged || bDetailDataChanged) + if (oWhenPicked != null) { + if (!checkHeaderTimeStamp(oBaseHeaderBean.getHeaderPrimaryKey(), oDetailPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + } else if (!checkHeaderTimeStamp(null, oDetailPicked)) { + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + } + additionalFieldValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + additionalTimestampValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + additionalBusinessValidationImpl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + if (bHeaderDataChanged) { + sHeaderPrimaryKey = saveHeaderImpl(oBaseHeaderBean, sScreenMode); + if (sHeaderPrimaryKey == null && !sScreenMode.equalsIgnoreCase("D")) + sHeaderPrimaryKey = sScreenHeaderPrimaryKey; + } + if (bDetailDataChanged && !sScreenMode.equalsIgnoreCase("D")) + if (oBaseHeaderBean == null) { + saveDetailImpl(sHeaderPrimaryKey, sScreenName, oDetailBeanArray); + if (oWhenPicked != null) + updateHeaderTimeStamp(sHeaderPrimaryKey); + } else if (!EnrgiseUtil.checkString(oBaseHeaderBean.getPseudoHeader())) { + saveDetailImpl(sHeaderPrimaryKey, sScreenName, oDetailBeanArray); + if (oWhenPicked != null) + updateHeaderTimeStamp(sHeaderPrimaryKey); + } else { + saveDetailImpl(oBaseHeaderBean, sScreenName, oDetailBeanArray); + } + return sHeaderPrimaryKey; + } + + private boolean updateHeaderTimeStamp(String sPrimaryKey) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, this.headerTable)); + oParameters.add(new DBObject(2, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "COMMONPROCEDURES.proc_UpdateHeaderTimeStamp(?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + String sSuccessFlag = (String)oOutObject.getObject(); + if (!sSuccessFlag.trim().equals("Y")) + return false; + return true; + } + + public void initializeBO(String sHeaderTable, String sDetailTable) { + this.headerTable = sHeaderTable; + } + + public void initializeBO(String sHeaderTable) { + this.headerTable = sHeaderTable; + } + + private boolean checkHeaderTimeStamp(String sPrimaryKey, Timestamp oWhenPicked) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, this.headerTable)); + oParameters.add(new DBObject(2, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(3, 1, 93, oWhenPicked)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "COMMONPROCEDURES.proc_CheckHeaderTimeStamp(?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + String sSuccessFlag = (String)oOutObject.getObject(); + if (!sSuccessFlag.trim().equals("Y")) + return false; + return true; + } + + private boolean checkDetailTimeStamp(String sPrimaryKey, Timestamp oWhenDetailPicked) throws EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, this.headerTable)); + oParameters.add(new DBObject(2, 1, 12, this.detailTable)); + oParameters.add(new DBObject(3, 1, 12, sPrimaryKey)); + oParameters.add(new DBObject(4, 1, 93, oWhenDetailPicked)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 12)); + oParameters.add(new DBObject(7, 2, 12)); + oParameters.add(new DBObject(8, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "COMMONPROCEDURES.proc_CheckDetailTimeStamp(?,?,?,?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + String sSuccessFlag = (String)oOutObject.getObject(); + if (!sSuccessFlag.trim().equals("Y")) + return false; + return true; + } + + public void reportError(ArrayList oList) throws EnrgiseSystemException, EnrgiseApplicationException { + if (oList.size() > 0) { + boolean bFirstTime = true; + EnrgiseApplicationException oApp = null; + EnrgiseSystemException oSys = null; + Object obj = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + obj = oIt.next(); + if (obj instanceof EnrgiseApplicationException || obj instanceof EnrgiseMessageKeyException) { + if (!bFirstTime) { + oApp.addToList((EnrgiseApplicationException)obj); + continue; + } + bFirstTime = false; + oApp = (EnrgiseApplicationException)obj; + continue; + } + oSys = (EnrgiseSystemException)obj; + throw oSys; + } + throw oApp; + } + } + + public abstract String saveHeaderImpl(BaseHeaderBean paramBaseHeaderBean, String paramString) throws EnrgiseMessageKeyException, EnrgiseApplicationException, EnrgiseSystemException; + + public abstract void saveDetailImpl(String paramString1, String paramString2, ArrayList paramArrayList) throws EnrgiseApplicationException, EnrgiseSystemException; + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public abstract void initializeBOImpl(); + + public abstract void additionalFieldValidationImpl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + public abstract void additionalTimestampValidationImpl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + public abstract void additionalBusinessValidationImpl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws EnrgiseApplicationException, EnrgiseSystemException; + + public UserInfo getOUserInfo() { + return this.oUserInfo; + } + + public void setOUserInfo(UserInfo newOUserInfo) { + this.oUserInfo = newOUserInfo; + } + + public String approve(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + initializeBOImpl(); + if (sHeaderPrimaryKey != null) { + if (oWhenPicked != null && + !checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + validateApprove(sHeaderPrimaryKey); + if (EnrgiseUtil.checkString(sTableName)) { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("update ").concat(String.valueOf(sTableName))).concat(String.valueOf(" set status_flag='"))).concat(String.valueOf("A"))).concat(String.valueOf("',modified_site_id = 100, user_id_modified = 100, modified_time_stamp = sysdate where id="))).concat(String.valueOf(sHeaderPrimaryKey)); + int i = oBean.executeUpsert(sQuery); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + } + return sHeaderPrimaryKey; + } + + public String callWorkFlow(BaseHeaderBean oBaseHeaderBean, ArrayList arylstDetailBeanArray, String activity) throws EnrgiseApplicationException, EnrgiseSystemException { + if (activity.equals("A")) + return "FinallyApproved"; + if (activity.equals("R")) + return "R"; + return "success"; + } + + public void validateApprove(String sHeaderPrimaryKey) {} + + public void validateReject(String sHeaderPrimaryKey) {} + + public void validateRevise(String sHeaderPrimaryKey) {} + + public String submit(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + initializeBOImpl(); + if (sHeaderPrimaryKey != null) + if (oWhenPicked != null) + if (!checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + return oBaseHeaderBean.getHeaderPrimaryKey(); + } + + public String reject(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + if (sHeaderPrimaryKey != null) { + initializeBOImpl(); + if (!checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + validateReject(sHeaderPrimaryKey); + if (EnrgiseUtil.checkString(sTableName)) { + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("update ").concat(String.valueOf(sTableName))).concat(String.valueOf(" set status_flag='"))).concat(String.valueOf("R"))).concat(String.valueOf("',modified_site_id = 100, user_id_modified = 100, modified_time_stamp = sysdate where id="))).concat(String.valueOf(sHeaderPrimaryKey)); + int i = oBean.executeUpsert(sQuery); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + } + return sHeaderPrimaryKey; + } + + public String revise(String sTableName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, ArrayList oDetailBeanArray, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = (null != oBaseHeaderBean) ? oBaseHeaderBean.getHeaderPrimaryKey() : ""; + if (sHeaderPrimaryKey != null) { + initializeBOImpl(); + if (!checkHeaderTimeStamp(sHeaderPrimaryKey, oWhenPicked)) + throw new EnrgiseApplicationException("wenrgise.common.changed", "M"); + validateRevise(sHeaderPrimaryKey); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + String sQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("update ").concat(String.valueOf(sTableName))).concat(String.valueOf(" sTablename set sTablename.status_flag = '"))).concat(String.valueOf("V"))).concat(String.valueOf("', sTablename.rev_no=sTablename.rev_no+1,sTablename.modified_site_id = 200, sTablename.user_id_modified = 200, sTablename.modified_time_stamp = sysdate where sTablename.code in (select code from "))).concat(String.valueOf(sTableName))).concat(String.valueOf(" where id="))).concat(String.valueOf(sHeaderPrimaryKey))).concat(String.valueOf(")")); + int i = oBean.executeUpsert(sQuery); + } else { + throw new EnrgiseApplicationException("wenrgise.common.norecordfound", "M"); + } + return sHeaderPrimaryKey; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacade.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacade.java new file mode 100644 index 0000000..d6b4a6c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacade.java @@ -0,0 +1,17 @@ +package WEB-INF.classes.wenrgise.ejb.common.facade; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.EJBObject; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; + +public interface SecurityFacade extends EJBObject { + HashMap getDisabledFields(String paramString1, String paramString2, String paramString3, String paramString4) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + ArrayList addMenuList(EmpInfoBean paramEmpInfoBean) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; + + HashMap getAccessInfo(EmpInfoBean paramEmpInfoBean) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacadeHome.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacadeHome.java new file mode 100644 index 0000000..aa13543 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/facade/SecurityFacadeHome.java @@ -0,0 +1,10 @@ +package WEB-INF.classes.wenrgise.ejb.common.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import wenrgise.ejb.common.facade.SecurityFacade; + +public interface SecurityFacadeHome extends EJBHome { + SecurityFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/DBObject.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/DBObject.java new file mode 100644 index 0000000..0a3027d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/DBObject.java @@ -0,0 +1,38 @@ +package WEB-INF.classes.wenrgise.ejb.common.helper; + +import java.io.Serializable; +import wenrgise.ejb.common.helper.InputDBObject; + +public class DBObject extends InputDBObject implements Serializable { + private int iInputOutput; + + public static final int IN = 1; + + public static final int OUT = 2; + + public static final int INOUT = 3; + + public DBObject() {} + + public DBObject(int iPosition, int iDataType) { + this.iPosition = iPosition; + this.iDataType = iDataType; + } + + public DBObject(int iPosition, int iInputOutput, int iDataType) { + this.iPosition = iPosition; + this.iInputOutput = iInputOutput; + this.iDataType = iDataType; + } + + public DBObject(int iPosition, int iInputOutput, int iDataType, Object oValue) { + this.iPosition = iPosition; + this.iInputOutput = iInputOutput; + this.iDataType = iDataType; + this.oValue = oValue; + } + + public int getDirection() { + return this.iInputOutput; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/InputDBObject.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/InputDBObject.java new file mode 100644 index 0000000..5425265 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/InputDBObject.java @@ -0,0 +1,43 @@ +package WEB-INF.classes.wenrgise.ejb.common.helper; + +import java.io.Serializable; + +public class InputDBObject implements Serializable { + protected int iPosition; + + protected int iDataType; + + protected Object oValue; + + public InputDBObject() {} + + public InputDBObject(int iPosition, int iDataType, Object oValue) { + this.iPosition = iPosition; + this.iDataType = iDataType; + this.oValue = oValue; + } + + public int getDataType() { + return this.iDataType; + } + + public void setDataType(int newIDataType) { + this.iDataType = newIDataType; + } + + public int getPosition() { + return this.iPosition; + } + + public void setPosition(int newIPosition) { + this.iPosition = newIPosition; + } + + public Object getObject() { + return this.oValue; + } + + public void setObject(Object newOValue) { + this.oValue = newOValue; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryRow.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryRow.java new file mode 100644 index 0000000..acd2eb2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryRow.java @@ -0,0 +1,27 @@ +package WEB-INF.classes.wenrgise.ejb.common.helper; + +import java.io.Serializable; +import java.util.HashMap; +import wenrgise.ejb.common.helper.QueryValue; + +public class QueryRow implements Serializable { + private HashMap row = null; + + public QueryRow(int iCapacity) { + this.row = new HashMap(iCapacity); + } + + public HashMap getRow() { + return this.row; + } + + public void setRow(HashMap newRow) { + this.row = newRow; + } + + public QueryValue get(String sColumnName) { + if (this.row != null) + return (QueryValue)this.row.get(sColumnName.toUpperCase()); + return null; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryValue.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryValue.java new file mode 100644 index 0000000..9690823 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/helper/QueryValue.java @@ -0,0 +1,166 @@ +package WEB-INF.classes.wenrgise.ejb.common.helper; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Blob; +import java.sql.Clob; +import java.sql.Date; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.Date; + +public class QueryValue implements Serializable { + private String stringValue = null; + + private BigDecimal bigDecimalValue = BigDecimal.valueOf(0L); + + private short shortValue = 0; + + private int intValue = 0; + + private long longValue = 0L; + + private float floatValue = 0.0F; + + private double doubleValue = 0.0D; + + private Date dateValue = null; + + private Blob blobValue = null; + + private Clob clobValue = null; + + public void setString(String value) { + this.stringValue = value; + } + + public String getString() { + return this.stringValue; + } + + public void setBigDecimal(BigDecimal value) { + this.bigDecimalValue = value; + this.stringValue = (null != value) ? value.toString() : null; + } + + public BigDecimal getBigDecimal() { + return this.bigDecimalValue; + } + + public void setShort(short value) { + this.shortValue = value; + Short shrt = new Short(value); + this.stringValue = (null != shrt) ? shrt.toString() : null; + } + + public short getShort() { + return this.shortValue; + } + + public void setInt(int value) { + this.intValue = value; + Integer iValue = new Integer(value); + this.stringValue = (null != iValue) ? iValue.toString() : null; + } + + public int getInt() { + return this.intValue; + } + + public void setLong(long value) { + this.longValue = value; + Long lValue = new Long(value); + this.stringValue = (null != lValue) ? lValue.toString() : null; + } + + public long getLong() { + return this.longValue; + } + + public void setFloat(float value) { + this.floatValue = value; + Float fValue = new Float(value); + this.stringValue = (null != fValue) ? fValue.toString() : null; + } + + public float getFloat() { + return this.floatValue; + } + + public void setDouble(double value) { + this.doubleValue = value; + Double dValue = new Double(value); + this.stringValue = (null != dValue) ? dValue.toString() : null; + } + + public double getDouble() { + return this.doubleValue; + } + + public void setDate(Date value) { + this.dateValue = value; + this.stringValue = (null != value) ? value.toString() : null; + } + + public void setDate(Date value) { + if (null == value) { + this.stringValue = null; + this.dateValue = null; + return; + } + this.dateValue = new Date(value.getTime()); + this.stringValue = this.dateValue.toString(); + } + + public Date getDate() { + return this.dateValue; + } + + public void setTime(Date value) { + setDate(value); + } + + public void setTime(Time value) { + if (null == value) { + this.stringValue = null; + this.dateValue = null; + return; + } + this.dateValue = new Date(value.getTime()); + this.stringValue = this.dateValue.toString(); + } + + public Date getTime() { + return this.dateValue; + } + + public void setTimestamp(Timestamp value) { + if (null == value) { + this.stringValue = null; + this.dateValue = null; + return; + } + this.dateValue = new Date(value.getTime() + (value.getNanos() / 1000000)); + this.stringValue = this.dateValue.toString(); + } + + public Date getTimestamp() { + return this.dateValue; + } + + public void setBlob(Blob value) { + this.blobValue = value; + } + + public Blob getBlob() { + return this.blobValue; + } + + public void setClob(Clob value) { + this.clobValue = value; + } + + public Clob getClob() { + return this.clobValue; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSession.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSession.java new file mode 100644 index 0000000..c7e8206 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSession.java @@ -0,0 +1,59 @@ +package WEB-INF.classes.wenrgise.ejb.common.session; + +import java.rmi.RemoteException; +import java.text.DateFormat; +import java.util.HashMap; +import java.util.Locale; +import javax.ejb.EJBObject; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; + +public interface UserSession extends EJBObject { + void putBaseHeaderVO(String paramString, BaseHeaderVO paramBaseHeaderVO) throws RemoteException; + + void removeAllIfExists(String paramString1, String paramString2) throws RemoteException; + + void putBaseQueryVO(String paramString, BaseQueryVO paramBaseQueryVO) throws RemoteException; + + void putBaseDetailVO(String paramString1, String paramString2, BaseDetailVO paramBaseDetailVO) throws RemoteException; + + BaseHeaderVO getBaseHeaderVO(String paramString) throws RemoteException; + + BaseQueryVO getBaseQueryVO(String paramString) throws RemoteException; + + BaseDetailVO getBaseDetailVO(String paramString1, String paramString2) throws RemoteException; + + UserInfo getUserInfo() throws RemoteException; + + void setUserInfo(UserInfo paramUserInfo) throws RemoteException; + + Locale getUserLocale() throws RemoteException; + + void setUserLocale(Locale paramLocale) throws RemoteException; + + Locale getDefaultLocale() throws RemoteException; + + DateFormat getUserDateFormat() throws RemoteException; + + DateFormat getDefaultDateFormat() throws RemoteException; + + HashMap getModuleFacade() throws RemoteException; + + void removeAllDetailVO(String paramString) throws RemoteException; + + void setModuleFacade(HashMap paramHashMap) throws RemoteException; + + void setModuleName(String paramString) throws RemoteException; + + EJBObject getModuleEJBObject() throws RemoteException; + + void setForwardedPage(String paramString1, String paramString2) throws RemoteException; + + String getForwardedPage(String paramString) throws RemoteException; + + HashMap getAccessInfo() throws RemoteException; + + void setAccessInfo(HashMap paramHashMap) throws RemoteException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSessionHome.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSessionHome.java new file mode 100644 index 0000000..3f13f7d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/session/UserSessionHome.java @@ -0,0 +1,10 @@ +package WEB-INF.classes.wenrgise.ejb.common.session; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import wenrgise.ejb.common.session.UserSession; + +public interface UserSessionHome extends EJBHome { + UserSession create() throws CreateException, RemoteException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/CommonAdditionalUtility.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/CommonAdditionalUtility.java new file mode 100644 index 0000000..5100c2c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/CommonAdditionalUtility.java @@ -0,0 +1,145 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; + +public class CommonAdditionalUtility { + public String getUserGroup(String empId) throws EnrgiseApplicationException, EnrgiseSystemException { + String groupId = new String(); + String sQuery = String.valueOf(" select group_id from sys_user_group_map m where m.user_system_id = ").concat(String.valueOf(empId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + groupId = oRow.get("group_id").getString(); + } + } + return groupId; + } + + public String getHOD(String empId) throws EnrgiseApplicationException, EnrgiseSystemException { + String hodId = new String(); + String sQuery = String.valueOf(String.valueOf(" select m.contact_person_id from gen_wrkgrp_mst m where m.id = (select dtl.wkgp_mst_id from hrm_emp_wrkgrp_dtl dtl where dtl.e_per_dtl_id =").concat(String.valueOf(empId))).concat(String.valueOf(")")); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + hodId = oRow.get("CONTACT_PERSON_ID").getString(); + } + } + return hodId; + } + + public boolean checkValidEmail(String email) throws EnrgiseApplicationException, EnrgiseSystemException { + int atCount = 0; + int dotCount = 0; + boolean flag = true; + int i; + for (i = 0; i < email.length(); i++) { + if (email.charAt(i) == '@') + atCount++; + if (email.charAt(i) == '.') + dotCount++; + } + if (atCount == 1 && dotCount > 0 && email.indexOf("@") != 0 && email.charAt(email.length() - 1) != '.' && email.charAt(email.length() - 1) != '@') { + dotCount = 0; + for (i = email.indexOf("@"); i < email.length(); i++) { + if (email.charAt(i) == '.') + dotCount++; + if (email.indexOf("@") - email.indexOf(".") == -1 || email.lastIndexOf(".") - email.indexOf(".") == 1) { + flag = false; + break; + } + } + } else { + flag = false; + } + if (dotCount == 0 || dotCount > 2) + flag = false; + return flag; + } + + public boolean checkValidPan(String panNo) throws EnrgiseApplicationException, EnrgiseSystemException { + boolean flag = true; + panNo = panNo.toUpperCase(); + if (panNo.length() != 10) { + flag = false; + } else { + String first = panNo.substring(0, 5); + String second = panNo.substring(5, 9); + int i; + for (i = 0; i < first.length(); i++) { + if (first.charAt(i) < 'A' || first.charAt(i) > 'Z') { + flag = false; + break; + } + } + for (i = 0; i < second.length(); i++) { + if (second.charAt(i) < '0' || second.charAt(i) > '9') { + flag = false; + break; + } + } + if (panNo.charAt(9) < 'A' || panNo.charAt(9) > 'Z') + flag = false; + } + return flag; + } + + public ArrayList getDelegatedEmp_Level(String empId, String HdrPrKey, String docTypeId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList outArray = new ArrayList(); + String sQuery = "select wt.level_no, wt.delegated_emp_id "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" from workflow_tasklist wt,workflow_dtl wd,wfl_doc_type_mst wm ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where status='P' ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and delegator_emp_id = "))).concat(String.valueOf(empId)); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and doc_dtl_id = "))).concat(String.valueOf(HdrPrKey)); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wt.workflow_dtl_id=wd.id ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wd.doc_type_mst_id=wm.id ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and wm.id = "))).concat(String.valueOf(docTypeId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + outArray.add(oRow.get("level_no").getString()); + outArray.add(oRow.get("delegated_emp_id").getString()); + } + } + return outArray; + } + + public ArrayList getEmp_Level(String HdrPrKey, String docTypeId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList outArray = new ArrayList(); + String sQuery = "select wt.level_no, wt.delegated_emp_id "; + sQuery = String.valueOf(sQuery).concat(String.valueOf(" from workflow_tasklist wt,workflow_dtl wd,wfl_doc_type_mst wm ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" where status='P' ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and doc_dtl_id = "))).concat(String.valueOf(HdrPrKey)); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wt.workflow_dtl_id=wd.id ")); + sQuery = String.valueOf(sQuery).concat(String.valueOf(" and wd.doc_type_mst_id=wm.id ")); + sQuery = String.valueOf(String.valueOf(sQuery).concat(String.valueOf(" and wm.id = "))).concat(String.valueOf(docTypeId)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + outArray.add(oRow.get("level_no").getString()); + outArray.add(oRow.get("delegated_emp_id").getString()); + } + } + return outArray; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/DBUtilitiesBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/DBUtilitiesBean.java new file mode 100644 index 0000000..421247b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/DBUtilitiesBean.java @@ -0,0 +1,612 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.sql.BatchUpdateException; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import javax.naming.InitialContext; +import javax.sql.DataSource; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.InputDBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.ServiceLocator; + +public class DBUtilitiesBean { + private String sDbName = "jdbc/conDS"; + + private ArrayList oOutParameters = null; + + private Connection oCon; + + private ResultSet oRs; + + private Connection oConn = null; + + private DataSource oDataSource = null; + + private PreparedStatement oDynamicBatchCall = null; + + private CallableStatement oBatchCall = null; + + private Connection oBatchCon = null; + + private Connection oPreParameterCon = null; + + private PreparedStatement oPreParameter = null; + + private Connection oPreUpsertCon = null; + + private PreparedStatement oPreUpsert = null; + + private boolean bDynamic = false; + + public DBUtilitiesBean() {} + + public DBUtilitiesBean(boolean bDynamic) { + this.bDynamic = bDynamic; + } + + public void createBatch(String sProcName) throws EnrgiseSystemException { + InitialContext oInitCont = null; + String sParam = String.valueOf(String.valueOf("{ call ").concat(String.valueOf(sProcName))).concat(String.valueOf("}")); + boolean bCreateCoonectionError = false; + try { + Object dataSourceObj = ServiceLocator.getLocator().getLocalService(this.sDbName); + this.oDataSource = (DataSource)dataSourceObj; + this.oBatchCon = this.oDataSource.getConnection(); + bCreateCoonectionError = true; + if (!this.bDynamic) { + if (this.oBatchCall != null) { + this.oBatchCall.close(); + this.oBatchCall = null; + } + this.oBatchCall = this.oBatchCon.prepareCall(sParam); + bCreateCoonectionError = false; + } else { + if (this.oDynamicBatchCall != null) { + this.oDynamicBatchCall.close(); + this.oDynamicBatchCall = null; + } + this.oDynamicBatchCall = this.oBatchCon.prepareStatement(sParam); + bCreateCoonectionError = false; + } + } catch (SQLException oExc) { + System.out.println(oExc.getMessage()); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oBatchCon != null && bCreateCoonectionError) { + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + this.oBatchCon = null; + } + } catch (SQLException sQLException) {} + } + } + + public void addToBatch(ArrayList oParameters) throws EnrgiseSystemException { + if (!this.bDynamic) { + addToProcBatch(oParameters); + } else { + addToDynamicBatch(oParameters); + } + } + + private void addToDynamicBatch(ArrayList oParameters) throws EnrgiseSystemException { + try { + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + InputDBObject oObject = oIter.next(); + inspectExecuteParameter(oObject, this.oDynamicBatchCall); + } + this.oBatchCall.addBatch(); + } catch (SQLException oSqlEx) { + System.out.println(oSqlEx.getMessage()); + throw new EnrgiseSystemException(oSqlEx); + } finally { + try { + if (this.oBatchCon != null) { + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + this.oBatchCon = null; + } + } catch (SQLException sQLException) {} + } + } + + private void addToProcBatch(ArrayList oParameters) throws EnrgiseSystemException { + try { + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + DBObject oObject = oIter.next(); + inspectParameter(oObject, this.oBatchCall); + } + this.oBatchCall.addBatch(); + } catch (SQLException oSqlEx) { + oSqlEx.printStackTrace(); + System.out.println(oSqlEx.getMessage()); + try { + if (this.oBatchCon != null) + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + this.oBatchCon = null; + } catch (SQLException sQLException) {} + throw new EnrgiseSystemException(oSqlEx); + } + } + + public void executeBatch() throws EnrgiseSystemException { + try { + if (!this.bDynamic) { + this.oBatchCall.executeBatch(); + } else { + this.oDynamicBatchCall.executeBatch(); + } + } catch (BatchUpdateException oBatchEx) { + System.out.println("Batch Update Failed"); + System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("Casue ").concat(String.valueOf(oBatchEx.getCause()))).concat(String.valueOf(" Message "))).concat(String.valueOf(oBatchEx.getMessage()))).concat(String.valueOf(" SQL State "))).concat(String.valueOf(oBatchEx.getSQLState()))).concat(String.valueOf(" Update Count "))).concat(String.valueOf(oBatchEx.getUpdateCounts()))).concat(String.valueOf(" SQL Trace "))).concat(String.valueOf(oBatchEx.getStackTrace()))); + throw new EnrgiseSystemException(oBatchEx); + } catch (SQLException oSqlEx) { + System.out.println(String.valueOf("dbutilities").concat(String.valueOf(oSqlEx.getMessage()))); + oSqlEx.printStackTrace(); + throw new EnrgiseSystemException(oSqlEx); + } finally { + try { + if (this.oBatchCon != null) + if (!this.oBatchCon.isClosed()) + this.oBatchCon.close(); + } catch (SQLException sQLException) {} + } + } + + public int executeUpsert(ArrayList oParameters, String sQuery) throws EnrgiseSystemException { + int iCount = 0; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (this.oPreUpsert != null) + this.oPreUpsert.close(); + if (this.oPreUpsertCon != null) { + this.oPreUpsertCon.close(); + this.oPreUpsertCon = null; + } + this.oPreUpsertCon = this.oDataSource.getConnection(); + this.oPreUpsert = this.oPreUpsertCon.prepareStatement(sQuery); + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + InputDBObject oObject = oIter.next(); + inspectExecuteParameter(oObject, this.oPreUpsert); + } + iCount = this.oPreUpsert.executeUpdate(); + while (true); + } catch (Exception oExc) { + System.out.println(oExc.getMessage()); + oExc.printStackTrace(); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oPreUpsertCon != null) { + if (!this.oPreUpsertCon.isClosed()) + this.oPreUpsertCon.close(); + this.oPreUpsertCon = null; + } + } catch (SQLException oSqlEx) { + System.out.println(oSqlEx.getMessage()); + throw new EnrgiseSystemException(oSqlEx); + } + return iCount; + } + } + + public ArrayList executeQuery(ArrayList oParameters, String sQuery) throws EnrgiseSystemException { + ResultSet oRs = null; + ArrayList oResult = null; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (oRs != null) { + oRs.close(); + oRs = null; + } + if (this.oPreParameter != null) + this.oPreParameter.close(); + if (this.oPreParameterCon != null) { + this.oPreParameterCon.close(); + this.oPreParameterCon = null; + } + this.oPreParameterCon = this.oDataSource.getConnection(); + this.oPreParameter = this.oPreParameterCon.prepareStatement(sQuery); + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + InputDBObject oObject = oIter.next(); + inspectExecuteParameter(oObject, this.oPreParameter); + } + oRs = this.oPreParameter.executeQuery(); + if (oRs == null) + throw new EnrgiseSystemException(); + oResult = convertToList(oRs); + while (true); + } catch (Exception oExc) { + System.out.println(oExc.getMessage()); + oExc.printStackTrace(); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oPreParameterCon != null) + if (this.oPreParameterCon.isClosed()) + this.oPreParameterCon.close(); + } catch (SQLException oSqlEx) { + System.out.println(oSqlEx.getMessage()); + throw new EnrgiseSystemException(oSqlEx); + } + return oResult; + } + } + + public ArrayList callProc(ArrayList oParameters, String sProcName) throws EnrgiseSystemException { + CallableStatement oCall = null; + if (this.oOutParameters == null) { + this.oOutParameters = new ArrayList(); + } else { + this.oOutParameters.clear(); + } + try { + Object datasourceObj = null; + datasourceObj = ServiceLocator.getLocator().getLocalService(this.sDbName); + this.oDataSource = (DataSource)datasourceObj; + Object conObj = this.oDataSource.getConnection(); + this.oCon = (Connection)conObj; + if (oCall != null) + oCall.close(); + String sParam = String.valueOf(String.valueOf("{ call ").concat(String.valueOf(sProcName))).concat(String.valueOf("}")); + Object callObj = this.oCon.prepareCall(sParam); + oCall = (CallableStatement)callObj; + Iterator oIter = oParameters.iterator(); + while (oIter.hasNext()) { + DBObject oObject = oIter.next(); + inspectParameter(oObject, oCall); + } + oCall.execute(); + Iterator oOutIter = this.oOutParameters.iterator(); + while (oOutIter.hasNext()) + getOutParameters(oOutIter.next(), oCall); + if (this.oOutParameters.size() >= 3) { + DBObject oErrLog = this.oOutParameters.get(this.oOutParameters.size() - 3); + String sErrorLog = (String)oErrLog.getObject(); + DBObject oErrMessage = this.oOutParameters.get(this.oOutParameters.size() - 2); + String sErrorMessage = (String)oErrLog.getObject(); + DBObject oErr = this.oOutParameters.get(this.oOutParameters.size() - 1); + Integer oErrorCode = (Integer)oErr.getObject(); + if (null != oErrorCode && !oErrorCode.equals(new Integer(0))) { + System.out.println(String.valueOf("Error calling procedure ").concat(String.valueOf(sProcName))); + if (null != sErrorLog) + System.out.println(String.valueOf("Error Log ").concat(String.valueOf(sErrorLog))); + if (null != sErrorMessage) + System.out.println(String.valueOf("Error Message ").concat(String.valueOf(sErrorMessage))); + throw new EnrgiseSystemException(); + } + } + return this.oOutParameters; + } catch (Exception oExc) { + System.out.println(oExc.getMessage()); + oExc.printStackTrace(); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oCon != null) { + if (!this.oCon.isClosed()) + this.oCon.close(); + this.oCon = null; + } + } catch (Exception exception) {} + } + } + + public ArrayList executeQuery(String sQuery) throws EnrgiseSystemException { + PreparedStatement oPre = null; + ArrayList oResult = null; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (this.oRs != null) { + this.oRs.close(); + this.oRs = null; + } + if (oPre != null) + oPre.close(); + if (this.oConn != null) { + this.oConn.close(); + this.oConn = null; + } + this.oConn = this.oDataSource.getConnection(); + oPre = this.oConn.prepareStatement(sQuery); + this.oRs = oPre.executeQuery(); + oResult = convertToList(this.oRs); + while (true); + } catch (SQLException oExc) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("From DBUtility ").concat(String.valueOf(oExc.getClass().getName()))).concat(String.valueOf(" "))).concat(String.valueOf(oExc.getMessage()))); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (this.oConn != null) + if (!this.oConn.isClosed()) + this.oConn.close(); + } catch (SQLException oSqEx) { + throw new EnrgiseSystemException(oSqEx); + } + return oResult; + } + } + + public int executeUpsert(String sQuery) throws EnrgiseSystemException { + PreparedStatement oPre = null; + Connection oPreCon = null; + int iCount = 0; + try { + this.oDataSource = (DataSource)ServiceLocator.getLocator().getLocalService(this.sDbName); + if (oPre != null) + oPre.close(); + oPreCon = this.oDataSource.getConnection(); + oPre = oPreCon.prepareStatement(sQuery); + iCount = oPre.executeUpdate(); + while (true); + } catch (SQLException oExc) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("From DBUtility ").concat(String.valueOf(oExc.getClass().getName()))).concat(String.valueOf(" "))).concat(String.valueOf(oExc.getMessage()))); + throw new EnrgiseSystemException(oExc); + } finally { + try { + if (oPreCon != null) + if (!oPreCon.isClosed()) + oPreCon.close(); + } catch (SQLException oSqEx) { + throw new EnrgiseSystemException(oSqEx); + } + return iCount; + } + } + + private void inspectParameter(DBObject oDBObject, CallableStatement oCall) throws SQLException { + int iPosition = oDBObject.getPosition(); + int iDirection = oDBObject.getDirection(); + int iDataType = oDBObject.getDataType(); + if (iDirection == 1 || iDirection == 3) { + Object oObject = oDBObject.getObject(); + switch (iDataType) { + case 12: + if (oObject != null) { + oCall.setString(iPosition, oObject.toString()); + break; + } + oCall.setString(iPosition, (String)null); + break; + case 4: + if (oObject != null) { + oCall.setInt(iPosition, Integer.parseInt(oObject.toString())); + break; + } + oCall.setInt(iPosition, 0); + break; + case 8: + if (oObject != null) { + oCall.setDouble(iPosition, Double.parseDouble(oObject.toString())); + break; + } + oCall.setDouble(iPosition, 0.0D); + break; + case -5: + if (oObject != null) { + oCall.setLong(iPosition, ((Long)oObject).longValue()); + break; + } + oCall.setLong(iPosition, 0L); + break; + case 91: + if (oObject != null) { + oCall.setDate(iPosition, (Date)oObject); + break; + } + oCall.setDate(iPosition, (Date)null); + break; + case 93: + if (oObject != null) { + oCall.setTimestamp(iPosition, (Timestamp)oObject); + break; + } + oCall.setTimestamp(iPosition, (Timestamp)null); + break; + case 2000: + if (oObject != null) { + oCall.setObject(iPosition, oObject); + break; + } + oCall.setObject(iPosition, (Object)null); + break; + } + } + if (iDirection == 2 || iDirection == 3) { + oCall.registerOutParameter(iPosition, iDataType); + this.oOutParameters.add(new DBObject(iPosition, iDataType)); + } + } + + private void inspectExecuteParameter(InputDBObject oDBObject, PreparedStatement oCall) throws SQLException { + int iPosition = oDBObject.getPosition(); + int iDataType = oDBObject.getDataType(); + Object oObject = oDBObject.getObject(); + switch (iDataType) { + case 12: + if (oObject != null) { + oCall.setString(iPosition, oObject.toString()); + break; + } + oCall.setString(iPosition, (String)null); + break; + case 1: + if (oObject != null) { + oCall.setString(iPosition, oObject.toString()); + break; + } + oCall.setString(iPosition, (String)null); + break; + case 4: + if (oObject != null) { + oCall.setInt(iPosition, Integer.parseInt(oObject.toString())); + break; + } + oCall.setInt(iPosition, 0); + break; + case 8: + if (oObject != null) { + oCall.setDouble(iPosition, Double.parseDouble(oObject.toString())); + break; + } + oCall.setDouble(iPosition, 0.0D); + break; + case -5: + if (oObject != null) { + oCall.setLong(iPosition, ((Long)oObject).longValue()); + break; + } + oCall.setLong(iPosition, 0L); + break; + case 91: + if (oObject != null) { + oCall.setDate(iPosition, (Date)oObject); + break; + } + oCall.setDate(iPosition, (Date)null); + break; + case 93: + if (oObject != null) { + oCall.setTimestamp(iPosition, (Timestamp)oObject); + break; + } + oCall.setTimestamp(iPosition, (Timestamp)null); + break; + case 2000: + oCall.setObject(iPosition, oObject); + break; + } + } + + private void getOutParameters(DBObject oOutDBObject, CallableStatement oCall) throws SQLException { + int iPosition = oOutDBObject.getPosition(); + int iDataType = oOutDBObject.getDataType(); + switch (iDataType) { + case 12: + oOutDBObject.setObject(oCall.getString(iPosition)); + break; + case 1: + oOutDBObject.setObject(oCall.getString(iPosition)); + break; + case 4: + oOutDBObject.setObject(new Integer(oCall.getInt(iPosition))); + break; + case -5: + oOutDBObject.setObject(new Long(oCall.getLong(iPosition))); + break; + case 8: + oOutDBObject.setObject(new Double(oCall.getDouble(iPosition))); + break; + case 91: + oOutDBObject.setObject(oCall.getDate(iPosition)); + break; + case 93: + oOutDBObject.setObject(oCall.getTimestamp(iPosition)); + break; + case 2000: + oOutDBObject.setObject(oCall.getObject(iPosition)); + break; + case -10: + oOutDBObject.setObject(convertToList((ResultSet)oCall.getObject(iPosition))); + break; + } + } + + private ArrayList convertToList(ResultSet oRs2) throws SQLException { + if (null == oRs2) + return null; + ResultSetMetaData oRsMt = oRs2.getMetaData(); + int iColumnCount = oRsMt.getColumnCount(); + int iIndex = 0; + ArrayList oList = new ArrayList(); + String[] sColumnName = new String[iColumnCount]; + int[] iColumnType = new int[iColumnCount]; + for (iIndex = 0; iIndex < iColumnCount; iIndex++) { + sColumnName[iIndex] = oRsMt.getColumnName(iIndex + 1); + iColumnType[iIndex] = oRsMt.getColumnType(iIndex + 1); + } + while (oRs2.next()) { + QueryRow oRow = new QueryRow(iColumnCount); + for (iIndex = 0; iIndex < iColumnCount; iIndex++) { + QueryValue oValue = new QueryValue(); + setValue(sColumnName[iIndex], iColumnType[iIndex], oValue, oRs2); + oRow.getRow().put(sColumnName[iIndex].toUpperCase(), oValue); + } + oList.add(oRow); + } + oRs2.close(); + oRs2 = null; + return oList; + } + + private void setValue(String sColumnName, int iColumnType, QueryValue oValue, ResultSet oRs2) throws SQLException { + switch (iColumnType) { + case 2: + oValue.setString(oRs2.getString(sColumnName)); + break; + case 12: + oValue.setString(oRs2.getString(sColumnName)); + break; + case 1: + oValue.setString(oRs2.getString(sColumnName)); + break; + case 4: + oValue.setInt(oRs2.getInt(sColumnName)); + break; + case -5: + oValue.setLong(oRs2.getLong(sColumnName)); + break; + case 8: + oValue.setDouble(oRs2.getDouble(sColumnName)); + break; + case 91: + oValue.setDate(oRs2.getDate(sColumnName)); + break; + case 93: + oValue.setTimestamp(oRs2.getTimestamp(sColumnName)); + break; + case 2004: + oValue.setBlob(oRs2.getBlob(sColumnName)); + break; + case 2005: + oValue.setClob(oRs2.getClob(sColumnName)); + break; + } + } + + protected void finalize() { + try { + close(); + } catch (SQLException sQLException) {} + } + + private void close() throws SQLException { + if (this.oCon != null) { + if (!this.oCon.isClosed()) + this.oCon.close(); + this.oCon = null; + } + if (this.oConn != null) { + if (!this.oConn.isClosed()) + this.oConn.close(); + this.oConn = null; + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java new file mode 100644 index 0000000..c0f8622 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseDisplayUserTag.java @@ -0,0 +1,39 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.util.logging.Logger; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.tagext.BodyTagSupport; +import org.apache.struts.util.RequestUtils; +import org.apache.struts.util.ResponseUtils; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.utility.ParamUtil; + +public class EnrgiseDisplayUserTag extends BodyTagSupport { + public static Logger log = Logger.getLogger("wenrgise.common.taglib.enrgise.EnrgiseDisplayUserTag"); + + public int doStartTag() throws JspException { + try { + String sessionBeanName = ParamUtil.getSessionBeanName(); + UserInfo oUserInfo = (UserInfo)RequestUtils.lookup(this.pageContext, sessionBeanName, "userInfo", "session"); + if (null != oUserInfo) { + String sEmp = RequestUtils.message(this.pageContext, null, "org.apache.struts.action.LOCALE", "wenrgise.common.user.name", null); + StringBuffer sbOutString = new StringBuffer(sEmp); + sbOutString.append(oUserInfo.getUserName()); + sbOutString.append("("); + sbOutString.append(oUserInfo.getUserId()); + sbOutString.append(")"); + sbOutString.append(" "); + String sSite = RequestUtils.message(this.pageContext, null, "org.apache.struts.action.LOCALE", "wenrgise.common.site.name", null); + sbOutString.append(sSite); + sbOutString.append(oUserInfo.getSiteName()); + sbOutString.append("("); + sbOutString.append(oUserInfo.getSiteCode()); + sbOutString.append(")"); + ResponseUtils.write(this.pageContext, sbOutString.toString()); + } + } catch (Exception oEx) { + log.info(oEx.getMessage()); + } + return 2; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseListener.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseListener.java new file mode 100644 index 0000000..5a9a3a0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseListener.java @@ -0,0 +1,54 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.rmi.RemoteException; +import java.util.Locale; +import java.util.logging.Logger; +import javax.ejb.CreateException; +import javax.ejb.RemoveException; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.ParamUtil; +import wenrgise.ejb.common.utility.ServiceLocator; + +public class EnrgiseListener implements HttpSessionListener { + static final Logger log = Logger.getLogger("wenrgise.common.utility.EnrgiseListener"); + + public void sessionCreated(HttpSessionEvent sEvent) { + try { + System.out.println("Creating Session---->"); + HttpSession session = sEvent.getSession(); + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) { + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("UserSession"); + oUser = oUserHome.create(); + UserInfo oUserInfo = new UserInfo(); + oUser.setUserInfo(oUserInfo); + Locale oLocale = (Locale)session.getAttribute("locale"); + oUser.setUserLocale((Locale)session.getAttribute("locale")); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + } + } catch (RemoteException oRmt) { + log.severe(oRmt.getMessage()); + } catch (CreateException oCrt) { + log.severe(oCrt.getMessage()); + } catch (Exception oExCc) { + log.severe(oExCc.getMessage()); + } + } + + public void sessionDestroyed(HttpSessionEvent sEvent) { + try { + HttpSession session = sEvent.getSession(); + if (session != null) { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + oUser.remove(); + } + } catch (RemoveException removeException) { + + } catch (RemoteException remoteException) {} + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseManager.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseManager.java new file mode 100644 index 0000000..cbc0ac8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseManager.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.common.xml.vo.DetailScreens; +import wenrgise.common.xml.vo.EnrgiseApp; +import wenrgise.common.xml.vo.EnrgiseForms; +import wenrgise.common.xml.vo.HashedEnrgiseForms; +import wenrgise.common.xml.vo.SingleForm; + +public class EnrgiseManager { + private static wenrgise.ejb.common.utility.EnrgiseManager me; + + private HashMap oEnrgiseMap = new HashMap(); + + private HashMap appMap = new HashMap(); + + public static wenrgise.ejb.common.utility.EnrgiseManager getInstance() { + if (me == null) + me = new wenrgise.ejb.common.utility.EnrgiseManager(); + return me; + } + + public HashedEnrgiseForms getCachedObject(String name_) { + if (name_ == null || name_.trim().length() <= 0) + return null; + return (HashedEnrgiseForms)this.oEnrgiseMap.get(name_); + } + + public void init(EnrgiseForms oEnrgiseForms) { + if (oEnrgiseForms == null) + return; + ArrayList oFormsList = oEnrgiseForms.get_SingleForm(); + Iterator oIt = oFormsList.iterator(); + while (oIt.hasNext()) { + SingleForm oSingleForm = oIt.next(); + String sFormName = oSingleForm.get_FormName(); + HashedEnrgiseForms oHashedEnrgiseForms = new HashedEnrgiseForms(); + oHashedEnrgiseForms.setSingleForm(oSingleForm); + DetailScreens oDetailScreens = oSingleForm.get_DetailScreens(); + ArrayList oDetailList = oDetailScreens.get_DetailScreen(); + Iterator oDetailIt = oDetailList.iterator(); + while (oDetailIt.hasNext()) { + DetailScreen oDetailScreen = oDetailIt.next(); + String sDetailName = oDetailScreen.get_DetailScreenName(); + if (!oHashedEnrgiseForms.getDetailMap().containsKey(sDetailName)) + oHashedEnrgiseForms.getDetailMap().put(sDetailName, oDetailScreen); + } + if (!this.oEnrgiseMap.containsKey(sFormName)) + this.oEnrgiseMap.put(sFormName, oHashedEnrgiseForms); + } + } + + public void setEnrApp(EnrgiseApp oEnrApp) { + System.out.println(String.valueOf("DBname---->").concat(String.valueOf(oEnrApp.get_DBName()))); + System.out.println(String.valueOf("Module---->").concat(String.valueOf(oEnrApp.get_Module()))); + this.appMap.put("DBName", oEnrApp.get_DBName()); + this.appMap.put("Module", oEnrApp.get_Module()); + } + + public HashMap getAppMap() { + return this.appMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgisePlugIn.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgisePlugIn.java new file mode 100644 index 0000000..e85d12d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgisePlugIn.java @@ -0,0 +1,58 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import com.tcs.wenrgise.util.common.FWXMLUtility; +import java.util.logging.Logger; +import javax.servlet.ServletException; +import org.apache.struts.action.ActionServlet; +import org.apache.struts.action.PlugIn; +import org.apache.struts.config.ModuleConfig; +import wenrgise.common.xml.vo.EnrgiseApp; +import wenrgise.common.xml.vo.EnrgiseForms; +import wenrgise.common.xml.vo.LOVClass; +import wenrgise.ejb.common.utility.EnrgiseManager; +import wenrgise.ejb.common.utility.LOVManager; + +public class EnrgisePlugIn implements PlugIn { + static final Logger log = Logger.getLogger("wenrgise.ejb.common.utility.EnrgisePlugIn"); + + private String formPathName = "/WEB-INF/EnrgiseConfig.xml"; + + private String pathName = "/WEB-INF/EnrgiseLOV.xml"; + + private String appPath = "/WEB-INF/EnrgiseApp.xml"; + + private String reportPathName = "/WEB-INF/EnrgiseReport.xml"; + + private String wflImplPathName = "/WEB-INF/WflDocParameters.xml"; + + public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { + try { + System.out.println("I am in enrgise plugIn for HRMS--->"); + String appPathTest = calculatePath(servlet, this.appPath); + String configPathTest = calculatePath(servlet, this.formPathName); + String lovPathTest = calculatePath(servlet, this.pathName); + EnrgiseForms oEnrgiseForms = (EnrgiseForms)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.EnrgiseForms", configPathTest); + EnrgiseManager.getInstance().init(oEnrgiseForms); + LOVClass oLOVClass = (LOVClass)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.LOVClass", lovPathTest); + LOVManager.getInstance().init(oLOVClass); + EnrgiseApp oEnrgiseApp = (EnrgiseApp)FWXMLUtility.xmlToObject("wenrgise.common.xml.vo.EnrgiseApp", appPathTest); + EnrgiseManager.getInstance().setEnrApp(oEnrgiseApp); + } catch (Exception oEx) { + log.severe(oEx.getMessage()); + } + } + + public void destroy() {} + + private String calculatePath(ActionServlet servlet, String sPath) { + return servlet.getServletContext().getRealPath(sPath); + } + + public String getFormPathName() { + return this.formPathName; + } + + public void setFormPathName(String newFormPathName) { + this.formPathName = newFormPathName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseSessionListener.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseSessionListener.java new file mode 100644 index 0000000..ce9dc2a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/EnrgiseSessionListener.java @@ -0,0 +1,29 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.rmi.RemoteException; +import java.util.logging.Logger; +import javax.ejb.RemoveException; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionActivationListener; +import javax.servlet.http.HttpSessionEvent; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class EnrgiseSessionListener implements HttpSessionActivationListener { + static final Logger log = Logger.getLogger("wenrgise.common.Utility.EnrgiseSessionListener"); + + public void sessionDidActivate(HttpSessionEvent sessionEvent) {} + + public void sessionWillPassivate(HttpSessionEvent sessionEvent) { + try { + HttpSession oS = sessionEvent.getSession(); + UserSession oUser = (UserSession)oS.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser != null) + oUser.remove(); + } catch (RemoteException oExc) { + log.severe(String.valueOf("The reason ").concat(String.valueOf(oExc.getMessage()))); + } catch (RemoveException oEx) { + log.severe(String.valueOf("The reason ").concat(String.valueOf(oEx.getMessage()))); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/LOVManager.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/LOVManager.java new file mode 100644 index 0000000..8588ef5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/LOVManager.java @@ -0,0 +1,65 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.xml.vo.LOV; +import wenrgise.common.xml.vo.LOVClass; +import wenrgise.common.xml.vo.LOVInfo; +import wenrgise.common.xml.vo.Screen; +import wenrgise.common.xml.vo.ScreenMode; +import wenrgise.common.xml.vo.ScreenModes; +import wenrgise.common.xml.vo.Screens; + +public class LOVManager { + private static wenrgise.ejb.common.utility.LOVManager me; + + private HashMap oMap = new HashMap(); + + public static wenrgise.ejb.common.utility.LOVManager getInstance() { + if (me == null) + me = new wenrgise.ejb.common.utility.LOVManager(); + return me; + } + + public LOVInfo getCachedObject(String name_) { + if (name_ == null || name_.trim().length() <= 0) + return null; + return (LOVInfo)this.oMap.get(name_); + } + + public void init(LOVClass oLOVClass) { + if (oLOVClass == null) + return; + ArrayList oList = oLOVClass.get_LOV(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + LOV oLOV = oIt.next(); + String sLOVName = oLOV.get_LovKey(); + Screens oScreens = oLOV.get_Screens(); + Iterator oScreenIt = oScreens.get_Screen().iterator(); + while (oScreenIt.hasNext()) { + Screen oScreen = oScreenIt.next(); + String sScreenName = oScreen.get_ScreenName(); + ScreenModes oScreenModes = oScreen.get_ScreenModes(); + Iterator oScreenModeIt = oScreenModes.get_ScreenMode().iterator(); + while (oScreenModeIt.hasNext()) { + ScreenMode oScreenMode = oScreenModeIt.next(); + String sMode = oScreenMode.get_ModeName(); + LOVInfo oLOVInfo = new LOVInfo(); + oLOVInfo.setFacadeName(oScreenMode.get_FacadeName()); + oLOVInfo.setFunctionName(oScreenMode.get_FunctionName()); + oLOVInfo.setInsertFlag(oScreenMode.get_InsertFlag()); + oLOVInfo.setRecursiveFlag(oScreenMode.get_RecursiveFlag()); + String sCombinedKey = String.valueOf(String.valueOf(sLOVName).concat(String.valueOf(sScreenName))).concat(String.valueOf(sMode)); + if (!this.oMap.containsKey(sCombinedKey)) + this.oMap.put(sCombinedKey, oLOVInfo); + } + } + } + } + + public static void main(String[] argv) { + wenrgise.ejb.common.utility.LOVManager oLov = new wenrgise.ejb.common.utility.LOVManager(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ParamUtil.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ParamUtil.java new file mode 100644 index 0000000..f60158c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ParamUtil.java @@ -0,0 +1,96 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.util.ArrayList; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.common.xml.vo.DetailScreens; +import wenrgise.common.xml.vo.HashedEnrgiseForms; +import wenrgise.common.xml.vo.SingleForm; +import wenrgise.ejb.common.utility.EnrgiseManager; + +public class ParamUtil { + public static String getDBName() { + return (String)EnrgiseManager.getInstance().getAppMap().get("DBName"); + } + + public static String getModuleName() { + return (String)EnrgiseManager.getInstance().getAppMap().get("Module"); + } + + public static String getQueryVO(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_EnrgiseQueryVO(); + } + + public static String getHeaderBD(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderBD(); + } + + public static String getHeaderSaveRequired(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderSave(); + } + + public static String getPseudoHeaderFlag(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_PseudoHeader(); + } + + public static String getDetailBD(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailBD(); + } + + public static String getDetailArrayName(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailArrayName(); + } + + public static String getDetailBeanName(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return oDetailScreen.get_DetailBean(); + } + + public static String getSessionBeanName() { + String s = String.valueOf(getModuleName()).concat(String.valueOf("_UserSession")); + return String.valueOf(getModuleName()).concat(String.valueOf("_UserSession")); + } + + public static String getHeaderBean(String sFormName) { + try { + System.out.println(String.valueOf("I am in paramUtil-->").concat(String.valueOf(sFormName))); + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return oHashedEnrgiseForms.getSingleForm().get_HeaderBean(); + } catch (Exception ex) { + ex.printStackTrace(); + return null; + } + } + + public static int getHeaderSize(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + return Integer.parseInt(oHashedEnrgiseForms.getSingleForm().get_HeaderSize()); + } + + public static int getDetailRecordPerPage(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return Integer.parseInt(oDetailScreen.get_DetailRecordPerPage()); + } + + public static int getMaxDetailPages(String sFormName, String sScreenName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + DetailScreen oDetailScreen = (DetailScreen)oHashedEnrgiseForms.getDetailMap().get(sScreenName); + return Integer.parseInt(oDetailScreen.get_DetailPagesPerSlot()); + } + + public static ArrayList getDetailList(String sFormName) { + HashedEnrgiseForms oHashedEnrgiseForms = EnrgiseManager.getInstance().getCachedObject(sFormName); + SingleForm oSingleForm = oHashedEnrgiseForms.getSingleForm(); + DetailScreens oDetailScreens = oSingleForm.get_DetailScreens(); + return oDetailScreens.get_DetailScreen(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ServiceLocator.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ServiceLocator.java new file mode 100644 index 0000000..338bb9b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/ServiceLocator.java @@ -0,0 +1,92 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.util.HashMap; +import javax.ejb.EJBLocalHome; +import javax.naming.Context; +import javax.naming.NamingException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.utility.myContextProvider; + +public class ServiceLocator { + private HashMap homeCache; + + private final HashMap cacheMap = new HashMap(); + + private static wenrgise.ejb.common.utility.ServiceLocator serviceLocator = new wenrgise.ejb.common.utility.ServiceLocator(); + + private ServiceLocator() { + try { + this.homeCache = new HashMap(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static wenrgise.ejb.common.utility.ServiceLocator getLocator() { + return serviceLocator; + } + + public Object getService(String jndiName) throws EnrgiseSystemException { + try { + if (!this.homeCache.containsKey(jndiName.trim())) { + System.out.println("Test For Service Locator ---->"); + System.out.println(String.valueOf("JNDI Name ---->").concat(String.valueOf(jndiName))); + Context context = myContextProvider.getContext(); + System.out.println(String.valueOf("Context Name ---->").concat(String.valueOf(context.getNameInNamespace()))); + System.out.println(String.valueOf("Context").concat(String.valueOf(context.getEnvironment()))); + System.out.println("Context security java.naming.security.credentials"); + System.out.println("Context url is java.naming.provider.url"); + System.out.println(String.valueOf("jndiName : ").concat(String.valueOf(context.lookup(jndiName)))); + this.homeCache.put(jndiName.trim(), context.lookup(jndiName.trim())); + System.out.println(String.valueOf("After JNDI Name ---->").concat(String.valueOf(jndiName))); + } + } catch (NamingException oNa) { + oNa.printStackTrace(); + System.out.println(oNa.getExplanation()); + throw new EnrgiseSystemException(oNa); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return this.homeCache.get(jndiName.trim()); + } + + public Object getLocalService(String jndiHomeName) throws EnrgiseSystemException { + Object obj = null; + try { + Context context = myContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + obj = this.cacheMap.get(jndiHomeName); + } else { + obj = context.lookup(jndiHomeName); + this.cacheMap.put(jndiHomeName, obj); + } + } catch (NamingException ne) { + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } + return obj; + } + + public EJBLocalHome getLocalHome(String jndiHomeName) throws EnrgiseSystemException { + System.out.println(String.valueOf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").concat(String.valueOf(jndiHomeName))); + EJBLocalHome home = null; + try { + Context context = myContextProvider.getLocalContext(); + if (this.cacheMap.containsKey(jndiHomeName)) { + home = (EJBLocalHome)this.cacheMap.get(jndiHomeName); + } else { + home = (EJBLocalHome)context.lookup(String.valueOf("java:comp/env/").concat(String.valueOf(jndiHomeName))); + this.cacheMap.put(jndiHomeName, home); + } + } catch (NamingException ne) { + System.out.println(ne); + ne.printStackTrace(); + throw new EnrgiseSystemException(ne); + } catch (Exception oEx) { + oEx.printStackTrace(); + throw new EnrgiseSystemException(oEx); + } + return home; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/myContextProvider.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/myContextProvider.java new file mode 100644 index 0000000..d69678b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/common/utility/myContextProvider.java @@ -0,0 +1,44 @@ +package WEB-INF.classes.wenrgise.ejb.common.utility; + +import java.util.Hashtable; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +public class myContextProvider { + private Context ctx = null; + + public static InitialContext localContext; + + static { + try { + localContext = new InitialContext(); + } catch (NamingException oNx) { + oNx.printStackTrace(); + } + } + + private static wenrgise.ejb.common.utility.myContextProvider objContextProvider = new wenrgise.ejb.common.utility.myContextProvider(); + + private myContextProvider() { + try { + Hashtable env = new Hashtable(); + System.out.println("Test for ContextProvider -->"); + env.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory"); + env.put("java.naming.provider.url", "t3://weblogicServer:7001"); + env.put("java.naming.security.principal", "weblogic"); + env.put("java.naming.security.credentials", "weblogic"); + this.ctx = new InitialContext(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public static Context getContext() { + return objContextProvider.ctx; + } + + public static InitialContext getLocalContext() { + return localContext; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/business/SearchBO.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/business/SearchBO.java new file mode 100644 index 0000000..33c2848 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/business/SearchBO.java @@ -0,0 +1,65 @@ +package WEB-INF.classes.wenrgise.ejb.help.business; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.business.BaseBO; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.help.bean.SearchBean; + +public class SearchBO extends BaseBO { + public String saveHeaderImpl(BaseHeaderBean oBaseHeaderBean, String sScreenMode) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public void saveDetailImpl(String sHeaderPrimaryKey, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void saveDetailImpl(BaseHeaderBean oBaseHeaderBean, String sScreenName, ArrayList oDetailBeanArray) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void initializeBOImpl() {} + + public void additionalFieldValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalTimestampValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public void additionalBusinessValidationImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public ArrayList getChapterDetails(String sText, String sModuleId) throws EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oParameters = new ArrayList(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + SearchBean oSearchBean = null; + QueryRow oRow = null; + QueryValue oValue = null; + ArrayList oList = null; + Iterator oIt = null; + ArrayList oChapterDetail = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sModuleId)); + oParameters.add(new DBObject(2, 1, 12, sText)); + oParameters.add(new DBObject(3, 2, -10)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 12)); + oParameters.add(new DBObject(6, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "ENRGISEHELP.PROC_GetChapters(?,?,?,?,?,?)"); + oList = (ArrayList)((DBObject)oOutArray.get(0)).getObject(); + if (oList.size() == 0) + return new ArrayList(); + oIt = oList.iterator(); + while (oIt.hasNext()) { + oSearchBean = new SearchBean(); + oRow = oIt.next(); + oSearchBean.setChapterId(oRow.get("ID").getString()); + oSearchBean.setChapterName(oRow.get("HEADING").getString()); + oSearchBean.setTxtScreenName(oRow.get("KEYWORD").getString()); + oChapterDetail.add(oSearchBean); + } + return oChapterDetail; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacade.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacade.java new file mode 100644 index 0000000..665990a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacade.java @@ -0,0 +1,11 @@ +package WEB-INF.classes.wenrgise.ejb.help.facade; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import javax.ejb.EJBObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; + +public interface HelpFacade extends EJBObject { + ArrayList getChapterList(String paramString1, String paramString2) throws RemoteException, EnrgiseSystemException, EnrgiseApplicationException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeBean.java new file mode 100644 index 0000000..c64ef25 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeBean.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.ejb.help.facade; + +import java.util.ArrayList; +import javax.ejb.SessionBean; +import javax.ejb.SessionContext; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.help.business.SearchBO; + +public class HelpFacadeBean implements SessionBean { + public void ejbCreate() {} + + public void ejbActivate() {} + + public void ejbPassivate() {} + + public void ejbRemove() {} + + public void setSessionContext(SessionContext ctx) {} + + public ArrayList getChapterList(String sText, String sModuleId) throws EnrgiseSystemException, EnrgiseApplicationException { + SearchBO oSearchBO = new SearchBO(); + return oSearchBO.getChapterDetails(sText, sModuleId); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeHome.java b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeHome.java new file mode 100644 index 0000000..f36f4b1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/ejb/help/facade/HelpFacadeHome.java @@ -0,0 +1,10 @@ +package WEB-INF.classes.wenrgise.ejb.help.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import wenrgise.ejb.help.facade.HelpFacade; + +public interface HelpFacadeHome extends EJBHome { + HelpFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/help/bean/SearchBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/help/bean/SearchBean.java new file mode 100644 index 0000000..0819422 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/help/bean/SearchBean.java @@ -0,0 +1,65 @@ +package WEB-INF.classes.wenrgise.help.bean; + +import wenrgise.common.bean.BaseDetailBean; + +public class SearchBean extends BaseDetailBean { + private String chapterId; + + private String chapterName; + + private String partName; + + private String txtModuleName; + + private String txtScreenName; + + private String txtAction; + + public String getChapterId() { + return this.chapterId; + } + + public void setChapterId(String newChapterId) { + this.chapterId = newChapterId; + } + + public String getChapterName() { + return this.chapterName; + } + + public void setChapterName(String newChapterName) { + this.chapterName = newChapterName; + } + + public String getPartName() { + return this.partName; + } + + public void setPartName(String newPartName) { + this.partName = newPartName; + } + + public String getTxtModuleName() { + return this.txtModuleName; + } + + public void setTxtModuleName(String newTxtModuleName) { + this.txtModuleName = newTxtModuleName; + } + + public String getTxtScreenName() { + return this.txtScreenName; + } + + public void setTxtScreenName(String newTxtScreenName) { + this.txtScreenName = newTxtScreenName; + } + + public String getTxtAction() { + return this.txtAction; + } + + public void setTxtAction(String newTxtAction) { + this.txtAction = newTxtAction; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/help/businessdelegate/HelpBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/help/businessdelegate/HelpBD.java new file mode 100644 index 0000000..1eb0d17 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/help/businessdelegate/HelpBD.java @@ -0,0 +1,21 @@ +package WEB-INF.classes.wenrgise.help.businessdelegate; + +import java.util.ArrayList; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.ejb.help.facade.HelpFacade; +import wenrgise.ejb.help.facade.HelpFacadeHome; + +public class HelpBD { + public ArrayList getChapters(String sText, String sModuleId) throws EnrgiseSystemException { + try { + HelpFacadeHome oHome = (HelpFacadeHome)ServiceLocator.getLocator().getService("HrmHelpFacade"); + HelpFacade oHelpFacade = oHome.create(); + return oHelpFacade.getChapterList(sText, sModuleId); + } catch (Exception oe) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("Debug For Help").concat(String.valueOf(oe.getClass().getName()))).concat(String.valueOf(" "))).concat(String.valueOf(oe.getMessage()))); + oe.printStackTrace(); + return new ArrayList(); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java new file mode 100644 index 0000000..9ef4264 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputChrgRptHdrBean.java @@ -0,0 +1,226 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmATDDeputChrgRptHdrBean extends BaseHeaderBean implements Serializable { + private String dptOrderNo; + + private String empName; + + private String deputationDate; + + private String chargeCode; + + private String handOverDate; + + private String chargeType; + + private String fromWorkGroupCode; + + private String fromSiteCode; + + private String noonFlag; + + private String remarks; + + private String dptOrderNoId; + + private String depOrdrDtlId; + + private String chargeCodeId; + + private String chargeStatus; + + private String fromSiteId; + + private String toSiteCode; + + private String toSiteId; + + private String fromWrkGrpId; + + private String toWorkGroupCode; + + private String toWrkGrpId; + + private String empId; + + private String deputType; + + public String getDptOrderNo() { + return this.dptOrderNo; + } + + public void setDptOrderNo(String newDptOrderNo) { + this.dptOrderNo = newDptOrderNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDeputationDate() { + return this.deputationDate; + } + + public void setDeputationDate(String newDeputationDate) { + this.deputationDate = newDeputationDate; + } + + public String getChargeCode() { + return this.chargeCode; + } + + public void setChargeCode(String newChargeCode) { + this.chargeCode = newChargeCode; + } + + public String getHandOverDate() { + return this.handOverDate; + } + + public void setHandOverDate(String newHandOverDate) { + this.handOverDate = newHandOverDate; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getFromWorkGroupCode() { + return this.fromWorkGroupCode; + } + + public void setFromWorkGroupCode(String newFromWorkGroupCode) { + this.fromWorkGroupCode = newFromWorkGroupCode; + } + + public String getFromSiteCode() { + return this.fromSiteCode; + } + + public void setFromSiteCode(String newFromSiteCode) { + this.fromSiteCode = newFromSiteCode; + } + + public String getNoonFlag() { + return this.noonFlag; + } + + public void setNoonFlag(String newNoonFlag) { + this.noonFlag = newNoonFlag; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDptOrderNoId() { + return this.dptOrderNoId; + } + + public void setDptOrderNoId(String newDptOrderNoId) { + this.dptOrderNoId = newDptOrderNoId; + } + + public String getDepOrdrDtlId() { + return this.depOrdrDtlId; + } + + public void setDepOrdrDtlId(String newDepOrdrDtlId) { + this.depOrdrDtlId = newDepOrdrDtlId; + } + + public String getChargeCodeId() { + return this.chargeCodeId; + } + + public void setChargeCodeId(String newChargeCodeId) { + this.chargeCodeId = newChargeCodeId; + } + + public String getChargeStatus() { + return this.chargeStatus; + } + + public void setChargeStatus(String newChargeStatus) { + this.chargeStatus = newChargeStatus; + } + + public String getFromSiteId() { + return this.fromSiteId; + } + + public void setFromSiteId(String newFromSiteId) { + this.fromSiteId = newFromSiteId; + } + + public String getToSiteCode() { + return this.toSiteCode; + } + + public void setToSiteCode(String newToSiteCode) { + this.toSiteCode = newToSiteCode; + } + + public String getToSiteId() { + return this.toSiteId; + } + + public void setToSiteId(String newToSiteId) { + this.toSiteId = newToSiteId; + } + + public String getFromWrkGrpId() { + return this.fromWrkGrpId; + } + + public void setFromWrkGrpId(String newFromWrkGrpId) { + this.fromWrkGrpId = newFromWrkGrpId; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWrkGrpId() { + return this.toWrkGrpId; + } + + public void setToWrkGrpId(String newToWrkGrpId) { + this.toWrkGrpId = newToWrkGrpId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java new file mode 100644 index 0000000..87966d9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpDtlBean.java @@ -0,0 +1,6 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmATDDeputOrderSngEmpDtlBean extends BaseDetailBean implements Serializable {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java new file mode 100644 index 0000000..417f326 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDDeputOrderSngEmpHdrBean.java @@ -0,0 +1,236 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmATDDeputOrderSngEmpHdrBean extends BaseHeaderBean implements Serializable { + String orderNo; + + String orderDate; + + String deputType; + + String orderStatus; + + String applnNo; + + String employeeName; + + String applicationDate; + + String toOrg; + + String toPost; + + String deptnEffectDate; + + String reportingDate; + + String remarks; + + String applnNoId; + + String headerPrimaryKey1; + + String hdnOrderStatus; + + String hdnDeputType; + + private String deputStatus; + + private String reptBackDate; + + private String fax; + + private String email; + + private String phone; + + private String mobilePhone; + + String employeeNoId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getToOrg() { + return this.toOrg; + } + + public void setToOrg(String newToOrg) { + this.toOrg = newToOrg; + } + + public String getToPost() { + return this.toPost; + } + + public void setToPost(String newToPost) { + this.toPost = newToPost; + } + + public String getDeptnEffectDate() { + return this.deptnEffectDate; + } + + public void setDeptnEffectDate(String newDeptnEffectDate) { + this.deptnEffectDate = newDeptnEffectDate; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getHdnOrderStatus() { + return this.hdnOrderStatus; + } + + public void setHdnOrderStatus(String newHdnOrderStatus) { + this.hdnOrderStatus = newHdnOrderStatus; + } + + public String getHdnDeputType() { + return this.hdnDeputType; + } + + public void setHdnDeputType(String newHdnDeputType) { + this.hdnDeputType = newHdnDeputType; + } + + public String getDeputStatus() { + return this.deputStatus; + } + + public void setDeputStatus(String newDeputStatus) { + this.deputStatus = newDeputStatus; + } + + public String getReptBackDate() { + return this.reptBackDate; + } + + public void setReptBackDate(String newReptBackDate) { + this.reptBackDate = newReptBackDate; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getMobilePhone() { + return this.mobilePhone; + } + + public void setMobilePhone(String newMobilePhone) { + this.mobilePhone = newMobilePhone; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java new file mode 100644 index 0000000..0ab942e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmATDTransOrderForSingleEmpBean.java @@ -0,0 +1,316 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmATDTransOrderForSingleEmpBean extends BaseHeaderBean implements Serializable { + private String orderNo; + + private String orderDate; + + private String orderStatus; + + private String orderNoID; + + private String orderType; + + private String remarks; + + private String noOfDays; + + private String reportingDate; + + private String trnsfrEffectDate; + + private String reportingEmpId; + + private String toSite; + + private String fromSite; + + private String applicationDate; + + private String empName; + + private String applnNo; + + private String toSiteID; + + private String empID; + + private String applnNoID; + + private String headerPrimaryKey1; + + private String fromSiteID; + + private String toDesignation; + + private String reptEmpID; + + private String reptEmpGrade; + + private String fromDesignation; + + private String approverNoId; + + private String approverName; + + private String selfOffice; + + private String disabSelfOffice; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String toWorkGroupCode; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getOrderNoID() { + return this.orderNoID; + } + + public void setOrderNoID(String newOrderNoID) { + this.orderNoID = newOrderNoID; + } + + public String getOrderType() { + return this.orderType; + } + + public void setOrderType(String newOrderType) { + this.orderType = newOrderType; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getNoOfDays() { + return this.noOfDays; + } + + public void setNoOfDays(String newNoOfDays) { + this.noOfDays = newNoOfDays; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getTrnsfrEffectDate() { + return this.trnsfrEffectDate; + } + + public void setTrnsfrEffectDate(String newTrnsfrEffectDate) { + this.trnsfrEffectDate = newTrnsfrEffectDate; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getToSiteID() { + return this.toSiteID; + } + + public void setToSiteID(String newToSiteID) { + this.toSiteID = newToSiteID; + } + + public String getEmpID() { + return this.empID; + } + + public void setEmpID(String newEmpID) { + this.empID = newEmpID; + } + + public String getApplnNoID() { + return this.applnNoID; + } + + public void setApplnNoID(String newApplnNoID) { + this.applnNoID = newApplnNoID; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getFromSiteID() { + return this.fromSiteID; + } + + public void setFromSiteID(String newFromSiteID) { + this.fromSiteID = newFromSiteID; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getReptEmpID() { + return this.reptEmpID; + } + + public void setReptEmpID(String newReptEmpID) { + this.reptEmpID = newReptEmpID; + } + + public String getReptEmpGrade() { + return this.reptEmpGrade; + } + + public void setReptEmpGrade(String newReptEmpGrade) { + this.reptEmpGrade = newReptEmpGrade; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getSelfOffice() { + return this.selfOffice; + } + + public void setSelfOffice(String newSelfOffice) { + this.selfOffice = newSelfOffice; + } + + public String getDisabSelfOffice() { + return this.disabSelfOffice; + } + + public void setDisabSelfOffice(String newDisabSelfOffice) { + this.disabSelfOffice = newDisabSelfOffice; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java new file mode 100644 index 0000000..a89f345 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdhocReportHdrBean.java @@ -0,0 +1,266 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdhocReportHdrBean extends BaseHeaderBean implements Serializable { + private String query; + + private String id; + + private String code; + + private String query_desc; + + private String category_tag; + + private String param1; + + private String param2; + + private String param3; + + private String param4; + + private String param5; + + private String param6; + + private String param7; + + private String param8; + + private String param9; + + private String param10; + + private String paramval1; + + private String paramval2; + + private String paramval3; + + private String paramval4; + + private String paramval5; + + private String paramval6; + + private String paramval7; + + private String paramval8; + + private String paramval9; + + private String paramval10; + + private String resultrow; + + public String getQuery() { + return this.query; + } + + public void setQuery(String newQuery) { + this.query = newQuery; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getQuery_desc() { + return this.query_desc; + } + + public void setQuery_desc(String query_desc) { + this.query_desc = query_desc; + } + + public String getCategory_tag() { + return this.category_tag; + } + + public void setCategory_tag(String category_tag) { + this.category_tag = category_tag; + } + + public String getParam1() { + return this.param1; + } + + public void setParam1(String param1) { + this.param1 = param1; + } + + public String getParam2() { + return this.param2; + } + + public void setParam2(String param2) { + this.param2 = param2; + } + + public String getParam3() { + return this.param3; + } + + public void setParam3(String param3) { + this.param3 = param3; + } + + public String getParam4() { + return this.param4; + } + + public void setParam4(String param4) { + this.param4 = param4; + } + + public String getParam5() { + return this.param5; + } + + public void setParam5(String param5) { + this.param5 = param5; + } + + public String getParam6() { + return this.param6; + } + + public void setParam6(String param6) { + this.param6 = param6; + } + + public String getParam7() { + return this.param7; + } + + public void setParam7(String param7) { + this.param7 = param7; + } + + public String getParam8() { + return this.param8; + } + + public void setParam8(String param8) { + this.param8 = param8; + } + + public String getParam9() { + return this.param9; + } + + public void setParam9(String param9) { + this.param9 = param9; + } + + public String getParam10() { + return this.param10; + } + + public void setParam10(String param10) { + this.param10 = param10; + } + + public String getParamval1() { + return this.paramval1; + } + + public void setParamval1(String paramval1) { + this.paramval1 = paramval1; + } + + public String getParamval2() { + return this.paramval2; + } + + public void setParamval2(String paramval2) { + this.paramval2 = paramval2; + } + + public String getParamval3() { + return this.paramval3; + } + + public void setParamval3(String paramval3) { + this.paramval3 = paramval3; + } + + public String getParamval4() { + return this.paramval4; + } + + public void setParamval4(String paramval4) { + this.paramval4 = paramval4; + } + + public String getParamval5() { + return this.paramval5; + } + + public void setParamval5(String paramval5) { + this.paramval5 = paramval5; + } + + public String getParamval6() { + return this.paramval6; + } + + public void setParamval6(String paramval6) { + this.paramval6 = paramval6; + } + + public String getParamval7() { + return this.paramval7; + } + + public void setParamval7(String paramval7) { + this.paramval7 = paramval7; + } + + public String getParamval8() { + return this.paramval8; + } + + public void setParamval8(String paramval8) { + this.paramval8 = paramval8; + } + + public String getParamval9() { + return this.paramval9; + } + + public void setParamval9(String paramval9) { + this.paramval9 = paramval9; + } + + public String getParamval10() { + return this.paramval10; + } + + public void setParamval10(String paramval10) { + this.paramval10 = paramval10; + } + + public String getResultrow() { + return this.resultrow; + } + + public void setResultrow(String resultrow) { + this.resultrow = resultrow; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java new file mode 100644 index 0000000..6a18c52 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHdrBean.java @@ -0,0 +1,246 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdvSettleHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String employeeName; + + private String firstName; + + private String middleName; + + private String lastName; + + private String designation; + + private String advanceCode; + + private String dateApplied; + + private String fromDate; + + private String toDate; + + private String amountApplied; + + private String settleAmount; + + private String noOfIns; + + private String reason; + + private String employeeId; + + String advanceCodeId; + + private String grade; + + private String location; + + private String balance; + + private String recoveredAmount; + + private String paidInstallments; + + private String sanctionedDate; + + private String sanctionedAmount; + + private String settleId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAmountApplied() { + return this.amountApplied; + } + + public void setAmountApplied(String newAmountApplied) { + this.amountApplied = newAmountApplied; + } + + public String getSettleAmount() { + return this.settleAmount; + } + + public void setSettleAmount(String newSettleAmount) { + this.settleAmount = newSettleAmount; + } + + public String getNoOfIns() { + return this.noOfIns; + } + + public void setNoOfIns(String newNoOfIns) { + this.noOfIns = newNoOfIns; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getBalance() { + return this.balance; + } + + public void setBalance(String newBalance) { + this.balance = newBalance; + } + + public String getRecoveredAmount() { + return this.recoveredAmount; + } + + public void setRecoveredAmount(String newRecoveredAmount) { + this.recoveredAmount = newRecoveredAmount; + } + + public String getPaidInstallments() { + return this.paidInstallments; + } + + public void setPaidInstallments(String newPaidInstallments) { + this.paidInstallments = newPaidInstallments; + } + + public String getSanctionedDate() { + return this.sanctionedDate; + } + + public void setSanctionedDate(String newSanctionedDate) { + this.sanctionedDate = newSanctionedDate; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java new file mode 100644 index 0000000..a5348aa --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAdvSettleHeadsDtlBean extends BaseDetailBean implements Serializable { + private String txtHeadName; + + private String txtMaxLimit; + + private String txtAmount; + + String txtSettleHeadId; + + String txtAdvancesId; + + String txtSettleStatus; + + public String getTxtHeadName() { + return this.txtHeadName; + } + + public void setTxtHeadName(String newTxtHeadName) { + this.txtHeadName = newTxtHeadName; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String getTxtAmount() { + return this.txtAmount; + } + + public void setTxtAmount(String newTxtAmount) { + this.txtAmount = newTxtAmount; + } + + public String getTxtSettleHeadId() { + return this.txtSettleHeadId; + } + + public void setTxtSettleHeadId(String newTxtSettleHeadId) { + this.txtSettleHeadId = newTxtSettleHeadId; + } + + public String getTxtAdvancesId() { + return this.txtAdvancesId; + } + + public void setTxtAdvancesId(String newTxtAdvancesId) { + this.txtAdvancesId = newTxtAdvancesId; + } + + public String getTxtSettleStatus() { + return this.txtSettleStatus; + } + + public void setTxtSettleStatus(String newTxtSettleStatus) { + this.txtSettleStatus = newTxtSettleStatus; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java new file mode 100644 index 0000000..9572f13 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvSettleHeadsHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdvSettleHeadsHdrBean extends BaseHeaderBean implements Serializable { + private String advanceDescription; + + String settleId; + + String advanceCodeId; + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java new file mode 100644 index 0000000..84dfa4f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstDtlBean.java @@ -0,0 +1,146 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAdvanceMstDtlBean extends BaseDetailBean implements Serializable { + private String txtAdvanceDescription; + + private String txtEffectiveFromDate; + + private String txtEffectiveToDate; + + private String txtMaxCalLimit; + + private String txtNoOfTXN; + + private String txtMaxLimitPerTXN; + + private String txtFlatAmount; + + private String txtSettlementUnit; + + private String txtSettlementPeriod; + + private String txtMoratoriumInMonths; + + private String txtSettleThroughPayroll; + + private String txtApplicableToAll; + + private String txtNoOfMonSal; + + private String txtEligibilityFactor; + + public String getTxtAdvanceDescription() { + return this.txtAdvanceDescription; + } + + public void setTxtAdvanceDescription(String newTxtAdvanceDescription) { + this.txtAdvanceDescription = newTxtAdvanceDescription; + } + + public String getTxtEffectiveFromDate() { + return this.txtEffectiveFromDate; + } + + public void setTxtEffectiveFromDate(String newTxtEffectiveFromDate) { + this.txtEffectiveFromDate = newTxtEffectiveFromDate; + } + + public String getTxtEffectiveToDate() { + return this.txtEffectiveToDate; + } + + public void setTxtEffectiveToDate(String newTxtEffectiveToDate) { + this.txtEffectiveToDate = newTxtEffectiveToDate; + } + + public String getTxtMaxCalLimit() { + return this.txtMaxCalLimit; + } + + public void setTxtMaxCalLimit(String newTxtMaxCalLimit) { + this.txtMaxCalLimit = newTxtMaxCalLimit; + } + + public String getTxtNoOfTXN() { + return this.txtNoOfTXN; + } + + public void setTxtNoOfTXN(String newTxtNoOfTXN) { + this.txtNoOfTXN = newTxtNoOfTXN; + } + + public String getTxtMaxLimitPerTXN() { + return this.txtMaxLimitPerTXN; + } + + public void setTxtMaxLimitPerTXN(String newTxtMaxLimitPerTXN) { + this.txtMaxLimitPerTXN = newTxtMaxLimitPerTXN; + } + + public String getTxtFlatAmount() { + return this.txtFlatAmount; + } + + public void setTxtFlatAmount(String newTxtFlatAmount) { + this.txtFlatAmount = newTxtFlatAmount; + } + + public String getTxtSettlementUnit() { + return this.txtSettlementUnit; + } + + public void setTxtSettlementUnit(String newTxtSettlementUnit) { + this.txtSettlementUnit = newTxtSettlementUnit; + } + + public String getTxtSettlementPeriod() { + return this.txtSettlementPeriod; + } + + public void setTxtSettlementPeriod(String newTxtSettlementPeriod) { + this.txtSettlementPeriod = newTxtSettlementPeriod; + } + + public String getTxtMoratoriumInMonths() { + return this.txtMoratoriumInMonths; + } + + public void setTxtMoratoriumInMonths(String newTxtMoratoriumInMonths) { + this.txtMoratoriumInMonths = newTxtMoratoriumInMonths; + } + + public String getTxtSettleThroughPayroll() { + return this.txtSettleThroughPayroll; + } + + public void setTxtSettleThroughPayroll(String newTxtSettleThroughPayroll) { + this.txtSettleThroughPayroll = newTxtSettleThroughPayroll; + } + + public String getTxtApplicableToAll() { + return this.txtApplicableToAll; + } + + public void setTxtApplicableToAll(String newTxtApplicableToAll) { + this.txtApplicableToAll = newTxtApplicableToAll; + } + + public String getTxtNoOfMonSal() { + return this.txtNoOfMonSal; + } + + public void setTxtNoOfMonSal(String newTxtNoOfMonSal) { + this.txtNoOfMonSal = newTxtNoOfMonSal; + } + + public String getTxtEligibilityFactor() { + return this.txtEligibilityFactor; + } + + public void setTxtEligibilityFactor(String newTxtEligibilityFactor) { + this.txtEligibilityFactor = newTxtEligibilityFactor; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java new file mode 100644 index 0000000..32bfd9d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAdvanceMstHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAdvanceMstHdrBean extends BaseHeaderBean implements Serializable { + private String advanceCode; + + private String advanceCodeId; + + private String description; + + private String calendar; + + private String calendarId; + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppTempHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppTempHdrBean.java new file mode 100644 index 0000000..67b1535 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppTempHdrBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAppTempHdrBean extends BaseHeaderBean implements Serializable { + private String templateName; + + private String obsolete; + + private String applicableToAll; + + private String ratingCode; + + String ratingId; + + String headerFlag; + + String statusOfHeader; + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getObsolete() { + return this.obsolete; + } + + public void setObsolete(String newObsolete) { + this.obsolete = newObsolete; + } + + public String getApplicableToAll() { + return this.applicableToAll; + } + + public void setApplicableToAll(String newApplicableToAll) { + this.applicableToAll = newApplicableToAll; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String getHeaderFlag() { + return this.headerFlag; + } + + public void setHeaderFlag(String newHeaderFlag) { + this.headerFlag = newHeaderFlag; + } + + public String getStatusOfHeader() { + return this.statusOfHeader; + } + + public void setStatusOfHeader(String newStatusOfHeader) { + this.statusOfHeader = newStatusOfHeader; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java new file mode 100644 index 0000000..3031cd5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPADtlBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalKPADtlBean extends BaseDetailBean implements Serializable { + private String txtSrlNo; + + private String txtKpaCode; + + private String txtDescription; + + private String mandatoryFlag; + + private String txtWeightage; + + private String kpaCodeId; + + private String disabtxtSrlNo; + + private String disabtxtKpaCode; + + private String disabtxtDescription; + + private String disabmandatoryFlag; + + private String disabtxtWeightage; + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getTxtKpaCode() { + return this.txtKpaCode; + } + + public void setTxtKpaCode(String newTxtKpaCode) { + this.txtKpaCode = newTxtKpaCode; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getMandatoryFlag() { + return this.mandatoryFlag; + } + + public void setMandatoryFlag(String newMandatoryFlag) { + this.mandatoryFlag = newMandatoryFlag; + } + + public String getTxtWeightage() { + return this.txtWeightage; + } + + public void setTxtWeightage(String newTxtWeightage) { + this.txtWeightage = newTxtWeightage; + } + + public String getKpaCodeId() { + return this.kpaCodeId; + } + + public void setKpaCodeId(String newKpaCodeId) { + this.kpaCodeId = newKpaCodeId; + } + + public String getDisabtxtSrlNo() { + return this.disabtxtSrlNo; + } + + public void setDisabtxtSrlNo(String newDisabtxtSrlNo) { + this.disabtxtSrlNo = newDisabtxtSrlNo; + } + + public String getDisabtxtKpaCode() { + return this.disabtxtKpaCode; + } + + public void setDisabtxtKpaCode(String newDisabtxtKpaCode) { + this.disabtxtKpaCode = newDisabtxtKpaCode; + } + + public String getDisabtxtDescription() { + return this.disabtxtDescription; + } + + public void setDisabtxtDescription(String newDisabtxtDescription) { + this.disabtxtDescription = newDisabtxtDescription; + } + + public String getDisabmandatoryFlag() { + return this.disabmandatoryFlag; + } + + public void setDisabmandatoryFlag(String newDisabmandatoryFlag) { + this.disabmandatoryFlag = newDisabmandatoryFlag; + } + + public String getDisabtxtWeightage() { + return this.disabtxtWeightage; + } + + public void setDisabtxtWeightage(String newDisabtxtWeightage) { + this.disabtxtWeightage = newDisabtxtWeightage; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java new file mode 100644 index 0000000..25c0636 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalKPAHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAppraisalKPAHdrBean extends BaseHeaderBean implements Serializable { + String description; + + String kpaGroupCode; + + private String kpaGrpId; + + private String txtAppraiserType; + + private String ratingRequired; + + private String statusOfHeader; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getKpaGroupCode() { + return this.kpaGroupCode; + } + + public void setKpaGroupCode(String newKpaGroupCode) { + this.kpaGroupCode = newKpaGroupCode; + } + + public String getKpaGrpId() { + return this.kpaGrpId; + } + + public void setKpaGrpId(String newKpaGrpId) { + this.kpaGrpId = newKpaGrpId; + } + + public String getTxtAppraiserType() { + return this.txtAppraiserType; + } + + public void setTxtAppraiserType(String newTxtAppraiserType) { + this.txtAppraiserType = newTxtAppraiserType; + } + + public String getRatingRequired() { + return this.ratingRequired; + } + + public void setRatingRequired(String newRatingRequired) { + this.ratingRequired = newRatingRequired; + } + + public String getStatusOfHeader() { + return this.statusOfHeader; + } + + public void setStatusOfHeader(String newStatusOfHeader) { + this.statusOfHeader = newStatusOfHeader; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java new file mode 100644 index 0000000..511ecbd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateGoalDtlBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalTemplateGoalDtlBean extends BaseDetailBean implements Serializable { + String txtSlNo; + + String txtGoalDescription; + + public String getTxtSlNo() { + return this.txtSlNo; + } + + public void setTxtSlNo(String newTxtSlNo) { + this.txtSlNo = newTxtSlNo; + } + + public String getTxtGoalDescription() { + return this.txtGoalDescription; + } + + public void setTxtGoalDescription(String newTxtGoalDescription) { + this.txtGoalDescription = newTxtGoalDescription; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java new file mode 100644 index 0000000..c596c86 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAppraisalTemplateHdrBean extends BaseHeaderBean implements Serializable { + String templateName; + + String obsolete; + + String applicableToAll; + + String ratingCode; + + String headerFlag = "P"; + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getObsolete() { + return this.obsolete; + } + + public void setObsolete(String newObsolete) { + this.obsolete = newObsolete; + } + + public String getApplicableToAll() { + return this.applicableToAll; + } + + public void setApplicableToAll(String newApplicableToAll) { + this.applicableToAll = newApplicableToAll; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getHeaderFlag() { + return this.headerFlag; + } + + public void setHeaderFlag(String newHeaderFlag) { + this.headerFlag = newHeaderFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java new file mode 100644 index 0000000..4b6600a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateKpaDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalTemplateKpaDtlBean extends BaseDetailBean implements Serializable { + String txtKpaGroupCode; + + String txtApprKpa; + + String txtKpaId; + + String txtWeightage; + + String disabtxtKpaGroupCode; + + String disabtxtApprKpa; + + String disabtxtWeightage; + + String disabbutKPAGroupCode; + + public String getTxtKpaGroupCode() { + return this.txtKpaGroupCode; + } + + public void setTxtKpaGroupCode(String newTxtKpaGroupCode) { + this.txtKpaGroupCode = newTxtKpaGroupCode; + } + + public String getTxtApprKpa() { + return this.txtApprKpa; + } + + public void setTxtApprKpa(String newTxtApprKpa) { + this.txtApprKpa = newTxtApprKpa; + } + + public String getTxtKpaId() { + return this.txtKpaId; + } + + public void setTxtKpaId(String newTxtKpaId) { + this.txtKpaId = newTxtKpaId; + } + + public String getTxtWeightage() { + return this.txtWeightage; + } + + public void setTxtWeightage(String newTxtWeightage) { + this.txtWeightage = newTxtWeightage; + } + + public String getDisabtxtKpaGroupCode() { + return this.disabtxtKpaGroupCode; + } + + public void setDisabtxtKpaGroupCode(String newDisabtxtKpaGroupCode) { + this.disabtxtKpaGroupCode = newDisabtxtKpaGroupCode; + } + + public String getDisabtxtApprKpa() { + return this.disabtxtApprKpa; + } + + public void setDisabtxtApprKpa(String newDisabtxtApprKpa) { + this.disabtxtApprKpa = newDisabtxtApprKpa; + } + + public String getDisabtxtWeightage() { + return this.disabtxtWeightage; + } + + public void setDisabtxtWeightage(String newDisabtxtWeightage) { + this.disabtxtWeightage = newDisabtxtWeightage; + } + + public String getDisabbutKPAGroupCode() { + return this.disabbutKPAGroupCode; + } + + public void setDisabbutKPAGroupCode(String newDisabbutKPAGroupCode) { + this.disabbutKPAGroupCode = newDisabbutKPAGroupCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java new file mode 100644 index 0000000..25538b8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAppraisalTemplateSecDtlBean.java @@ -0,0 +1,166 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAppraisalTemplateSecDtlBean extends BaseDetailBean implements Serializable { + String txtSrlNo; + + String txtSectionCode; + + String txtAppraiserType; + + String txtTemplateRemarks; + + String txtParentSection; + + String txtSectionWeightage; + + String txtParentSecId; + + String txtRatingReqd; + + String disabtxtSrlNo; + + String disabtxtSectionCode; + + String disabbutParentSecCode; + + String disabtxtSectionWeightage; + + String disabtxtAppraiserType; + + String disabtxtTemplateRemarks; + + String disabtxtRatingReqd; + + String disabtxtParentSection; + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getTxtSectionCode() { + return this.txtSectionCode; + } + + public void setTxtSectionCode(String newTxtSectionCode) { + this.txtSectionCode = newTxtSectionCode; + } + + public String getTxtAppraiserType() { + return this.txtAppraiserType; + } + + public void setTxtAppraiserType(String newTxtAppraiserType) { + this.txtAppraiserType = newTxtAppraiserType; + } + + public String getTxtTemplateRemarks() { + return this.txtTemplateRemarks; + } + + public void setTxtTemplateRemarks(String newTxtTemplateRemarks) { + this.txtTemplateRemarks = newTxtTemplateRemarks; + } + + public String getTxtParentSection() { + return this.txtParentSection; + } + + public void setTxtParentSection(String newTxtParentSection) { + this.txtParentSection = newTxtParentSection; + } + + public String getTxtSectionWeightage() { + return this.txtSectionWeightage; + } + + public void setTxtSectionWeightage(String newTxtSectionWeightage) { + this.txtSectionWeightage = newTxtSectionWeightage; + } + + public String getTxtParentSecId() { + return this.txtParentSecId; + } + + public void setTxtParentSecId(String newTxtParentSecId) { + this.txtParentSecId = newTxtParentSecId; + } + + public String getTxtRatingReqd() { + return this.txtRatingReqd; + } + + public void setTxtRatingReqd(String newTxtRatingReqd) { + this.txtRatingReqd = newTxtRatingReqd; + } + + public String getDisabtxtSrlNo() { + return this.disabtxtSrlNo; + } + + public void setDisabtxtSrlNo(String newDisabtxtSrlNo) { + this.disabtxtSrlNo = newDisabtxtSrlNo; + } + + public String getDisabtxtSectionCode() { + return this.disabtxtSectionCode; + } + + public void setDisabtxtSectionCode(String newDisabtxtSectionCode) { + this.disabtxtSectionCode = newDisabtxtSectionCode; + } + + public String getDisabbutParentSecCode() { + return this.disabbutParentSecCode; + } + + public void setDisabbutParentSecCode(String newDisabbutParentSecCode) { + this.disabbutParentSecCode = newDisabbutParentSecCode; + } + + public String getDisabtxtSectionWeightage() { + return this.disabtxtSectionWeightage; + } + + public void setDisabtxtSectionWeightage(String newDisabtxtSectionWeightage) { + this.disabtxtSectionWeightage = newDisabtxtSectionWeightage; + } + + public String getDisabtxtAppraiserType() { + return this.disabtxtAppraiserType; + } + + public void setDisabtxtAppraiserType(String newDisabtxtAppraiserType) { + this.disabtxtAppraiserType = newDisabtxtAppraiserType; + } + + public String getDisabtxtTemplateRemarks() { + return this.disabtxtTemplateRemarks; + } + + public void setDisabtxtTemplateRemarks(String newDisabtxtTemplateRemarks) { + this.disabtxtTemplateRemarks = newDisabtxtTemplateRemarks; + } + + public String getDisabtxtRatingReqd() { + return this.disabtxtRatingReqd; + } + + public void setDisabtxtRatingReqd(String newDisabtxtRatingReqd) { + this.disabtxtRatingReqd = newDisabtxtRatingReqd; + } + + public String getDisabtxtParentSection() { + return this.disabtxtParentSection; + } + + public void setDisabtxtParentSection(String newDisabtxtParentSection) { + this.disabtxtParentSection = newDisabtxtParentSection; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java new file mode 100644 index 0000000..a3cf9d3 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmpDtlsBean.java @@ -0,0 +1,216 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslEmpDtlsBean extends BaseDetailBean implements Serializable { + private String grade; + + private String designation; + + private String presLoc; + + private String dateofBirth; + + private String joiningStaffDate; + + private String joiningOfficerDate; + + private String lastPromDate; + + private String lastPay; + + private String qual; + + private String empRating1; + + private String empRating2; + + private String empRating3; + + private String incr1; + + private String incr2; + + private String incr3; + + private String finalRating; + + private String empNo; + + private String butEmpNo; + + private String aprslYear; + + private String employeeId; + + private String detailId; + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getPresLoc() { + return this.presLoc; + } + + public void setPresLoc(String newPresLoc) { + this.presLoc = newPresLoc; + } + + public String getDateofBirth() { + return this.dateofBirth; + } + + public void setDateofBirth(String newDateofBirth) { + this.dateofBirth = newDateofBirth; + } + + public String getJoiningStaffDate() { + return this.joiningStaffDate; + } + + public void setJoiningStaffDate(String newJoiningStaffDate) { + this.joiningStaffDate = newJoiningStaffDate; + } + + public String getJoiningOfficerDate() { + return this.joiningOfficerDate; + } + + public void setJoiningOfficerDate(String newJoiningOfficerDate) { + this.joiningOfficerDate = newJoiningOfficerDate; + } + + public String getLastPromDate() { + return this.lastPromDate; + } + + public void setLastPromDate(String newLastPromDate) { + this.lastPromDate = newLastPromDate; + } + + public String getLastPay() { + return this.lastPay; + } + + public void setLastPay(String newLastPay) { + this.lastPay = newLastPay; + } + + public String getQual() { + return this.qual; + } + + public void setQual(String newQual) { + this.qual = newQual; + } + + public String getEmpRating1() { + return this.empRating1; + } + + public void setEmpRating1(String newEmpRating1) { + this.empRating1 = newEmpRating1; + } + + public String getEmpRating2() { + return this.empRating2; + } + + public void setEmpRating2(String newEmpRating2) { + this.empRating2 = newEmpRating2; + } + + public String getEmpRating3() { + return this.empRating3; + } + + public void setEmpRating3(String newEmpRating3) { + this.empRating3 = newEmpRating3; + } + + public String getIncr1() { + return this.incr1; + } + + public void setIncr1(String newIncr1) { + this.incr1 = newIncr1; + } + + public String getIncr2() { + return this.incr2; + } + + public void setIncr2(String newIncr2) { + this.incr2 = newIncr2; + } + + public String getIncr3() { + return this.incr3; + } + + public void setIncr3(String newIncr3) { + this.incr3 = newIncr3; + } + + public String getFinalRating() { + return this.finalRating; + } + + public void setFinalRating(String newFinalRating) { + this.finalRating = newFinalRating; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getAprslYear() { + return this.aprslYear; + } + + public void setAprslYear(String newAprslYear) { + this.aprslYear = newAprslYear; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getDetailId() { + return this.detailId; + } + + public void setDetailId(String newDetailId) { + this.detailId = newDetailId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmployeeBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmployeeBean.java new file mode 100644 index 0000000..d4e1c0c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslEmployeeBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslEmployeeBean extends BaseDetailBean implements Serializable { + private String finalRatingDtl; + + private String empNoDtl; + + private String empNameDtl; + + private String aprslYearDtl; + + private String empIdDtl; + + private String detailId; + + public String getFinalRatingDtl() { + return this.finalRatingDtl; + } + + public void setFinalRatingDtl(String newFinalRatingDtl) { + this.finalRatingDtl = newFinalRatingDtl; + } + + public String getEmpNoDtl() { + return this.empNoDtl; + } + + public void setEmpNoDtl(String newEmpNoDtl) { + this.empNoDtl = newEmpNoDtl; + } + + public String getEmpIdDtl() { + return this.empIdDtl; + } + + public void setEmpIdDtl(String newEmpIdDtl) { + this.empIdDtl = newEmpIdDtl; + } + + public String getEmpNameDtl() { + return this.empNameDtl; + } + + public void setEmpNameDtl(String newEmpNameDtl) { + this.empNameDtl = newEmpNameDtl; + } + + public String getAprslYearDtl() { + return this.aprslYearDtl; + } + + public void setAprslYearDtl(String newAprslYearDtl) { + this.aprslYearDtl = newAprslYearDtl; + } + + public String getDetailId() { + return this.detailId; + } + + public void setDetailId(String newDetailId) { + this.detailId = newDetailId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java new file mode 100644 index 0000000..b291164 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslGoalsDtlBean.java @@ -0,0 +1,426 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslGoalsDtlBean extends BaseDetailBean implements Serializable { + String txtSection; + + String txtParentSec; + + String txtGoalDesc; + + String txtLevelAprl0g; + + String txtLevelRating0g; + + String txtLevelAprl1g; + + String txtLevelRating1g; + + String txtLevelAprl2g; + + String txtLevelRating2g; + + String txtLevelAprl3g; + + String txtLevelRating3g; + + String txtLevelAprl4g; + + String txtLevelRating4g; + + String txtTmplGoalId; + + String txtTmplSecId; + + String txtParentSecId; + + String txtEmpAprslHdrId; + + String txtRatingDescG; + + String txtRatingToG; + + String txtRatingFromG; + + String txtSecRatingReq; + + String disabtxtLevelAprl0g; + + String disabtxtLevelRating0g; + + String disabtxtLevelAprl1g; + + String disabtxtLevelRating1g; + + String disabtxtLevelAprl2g; + + String disabtxtLevelRating2g; + + String disabtxtLevelAprl3g; + + String disabtxtLevelRating3g; + + String disabtxtLevelAprl4g; + + String disabtxtLevelRating4g; + + String disabbutRatingG0LOV; + + String disabbutRatingG1LOV; + + String disabbutRatingG2LOV; + + String disabbutRatingG3LOV; + + String disabbutRatingG4LOV; + + String txtSecAprslType; + + private String txtLevelAprl5g; + + private String disabtxtLevelAprl5g; + + private String txtLevelRating5g; + + private String disabtxtLevelRating5g; + + private String disabbutRatingG5LOV; + + public String getTxtSection() { + return this.txtSection; + } + + public void setTxtSection(String newTxtSection) { + this.txtSection = newTxtSection; + } + + public String getTxtParentSec() { + return this.txtParentSec; + } + + public void setTxtParentSec(String newTxtParentSec) { + this.txtParentSec = newTxtParentSec; + } + + public String getTxtGoalDesc() { + return this.txtGoalDesc; + } + + public void setTxtGoalDesc(String newTxtGoalDesc) { + this.txtGoalDesc = newTxtGoalDesc; + } + + public String getTxtLevelAprl0g() { + return this.txtLevelAprl0g; + } + + public void setTxtLevelAprl0g(String newTxtLevelAprl0g) { + this.txtLevelAprl0g = newTxtLevelAprl0g; + } + + public String getTxtLevelRating0g() { + return this.txtLevelRating0g; + } + + public void setTxtLevelRating0g(String newTxtLevelRating0g) { + this.txtLevelRating0g = newTxtLevelRating0g; + } + + public String getTxtLevelAprl1g() { + return this.txtLevelAprl1g; + } + + public void setTxtLevelAprl1g(String newTxtLevelAprl1g) { + this.txtLevelAprl1g = newTxtLevelAprl1g; + } + + public String getTxtLevelRating1g() { + return this.txtLevelRating1g; + } + + public void setTxtLevelRating1g(String newTxtLevelRating1g) { + this.txtLevelRating1g = newTxtLevelRating1g; + } + + public String getTxtLevelAprl2g() { + return this.txtLevelAprl2g; + } + + public void setTxtLevelAprl2g(String newTxtLevelAprl2g) { + this.txtLevelAprl2g = newTxtLevelAprl2g; + } + + public String getTxtLevelRating2g() { + return this.txtLevelRating2g; + } + + public void setTxtLevelRating2g(String newTxtLevelRating2g) { + this.txtLevelRating2g = newTxtLevelRating2g; + } + + public String getTxtLevelAprl3g() { + return this.txtLevelAprl3g; + } + + public void setTxtLevelAprl3g(String newTxtLevelAprl3g) { + this.txtLevelAprl3g = newTxtLevelAprl3g; + } + + public String getTxtLevelRating3g() { + return this.txtLevelRating3g; + } + + public void setTxtLevelRating3g(String newTxtLevelRating3g) { + this.txtLevelRating3g = newTxtLevelRating3g; + } + + public String getTxtLevelAprl4g() { + return this.txtLevelAprl4g; + } + + public void setTxtLevelAprl4g(String newTxtLevelAprl4g) { + this.txtLevelAprl4g = newTxtLevelAprl4g; + } + + public String getTxtLevelRating4g() { + return this.txtLevelRating4g; + } + + public void setTxtLevelRating4g(String newTxtLevelRating4g) { + this.txtLevelRating4g = newTxtLevelRating4g; + } + + public String getTxtTmplGoalId() { + return this.txtTmplGoalId; + } + + public void setTxtTmplGoalId(String newTxtTmplGoalId) { + this.txtTmplGoalId = newTxtTmplGoalId; + } + + public String getTxtTmplSecId() { + return this.txtTmplSecId; + } + + public void setTxtTmplSecId(String newTxtTmplSecId) { + this.txtTmplSecId = newTxtTmplSecId; + } + + public String getTxtParentSecId() { + return this.txtParentSecId; + } + + public void setTxtParentSecId(String newTxtParentSecId) { + this.txtParentSecId = newTxtParentSecId; + } + + public String getTxtEmpAprslHdrId() { + return this.txtEmpAprslHdrId; + } + + public void setTxtEmpAprslHdrId(String newTxtEmpAprslHdrId) { + this.txtEmpAprslHdrId = newTxtEmpAprslHdrId; + } + + public String getTxtRatingDescG() { + return this.txtRatingDescG; + } + + public void setTxtRatingDescG(String newTxtRatingDescG) { + this.txtRatingDescG = newTxtRatingDescG; + } + + public String getTxtRatingToG() { + return this.txtRatingToG; + } + + public void setTxtRatingToG(String newTxtRatingToG) { + this.txtRatingToG = newTxtRatingToG; + } + + public String getTxtRatingFromG() { + return this.txtRatingFromG; + } + + public void setTxtRatingFromG(String newTxtRatingFromG) { + this.txtRatingFromG = newTxtRatingFromG; + } + + public String getTxtSecRatingReq() { + return this.txtSecRatingReq; + } + + public void setTxtSecRatingReq(String newTxtSecRatingReq) { + this.txtSecRatingReq = newTxtSecRatingReq; + } + + public String getDisabtxtLevelAprl0g() { + return this.disabtxtLevelAprl0g; + } + + public void setDisabtxtLevelAprl0g(String newDisabtxtLevelAprl0g) { + this.disabtxtLevelAprl0g = newDisabtxtLevelAprl0g; + } + + public String getDisabtxtLevelRating0g() { + return this.disabtxtLevelRating0g; + } + + public void setDisabtxtLevelRating0g(String newDisabtxtLevelRating0g) { + this.disabtxtLevelRating0g = newDisabtxtLevelRating0g; + } + + public String getDisabtxtLevelAprl1g() { + return this.disabtxtLevelAprl1g; + } + + public void setDisabtxtLevelAprl1g(String newDisabtxtLevelAprl1g) { + this.disabtxtLevelAprl1g = newDisabtxtLevelAprl1g; + } + + public String getDisabtxtLevelRating1g() { + return this.disabtxtLevelRating1g; + } + + public void setDisabtxtLevelRating1g(String newDisabtxtLevelRating1g) { + this.disabtxtLevelRating1g = newDisabtxtLevelRating1g; + } + + public String getDisabtxtLevelAprl2g() { + return this.disabtxtLevelAprl2g; + } + + public void setDisabtxtLevelAprl2g(String newDisabtxtLevelAprl2g) { + this.disabtxtLevelAprl2g = newDisabtxtLevelAprl2g; + } + + public String getDisabtxtLevelRating2g() { + return this.disabtxtLevelRating2g; + } + + public void setDisabtxtLevelRating2g(String newDisabtxtLevelRating2g) { + this.disabtxtLevelRating2g = newDisabtxtLevelRating2g; + } + + public String getDisabtxtLevelAprl3g() { + return this.disabtxtLevelAprl3g; + } + + public void setDisabtxtLevelAprl3g(String newDisabtxtLevelAprl3g) { + this.disabtxtLevelAprl3g = newDisabtxtLevelAprl3g; + } + + public String getDisabtxtLevelRating3g() { + return this.disabtxtLevelRating3g; + } + + public void setDisabtxtLevelRating3g(String newDisabtxtLevelRating3g) { + this.disabtxtLevelRating3g = newDisabtxtLevelRating3g; + } + + public String getDisabtxtLevelAprl4g() { + return this.disabtxtLevelAprl4g; + } + + public void setDisabtxtLevelAprl4g(String newDisabtxtLevelAprl4g) { + this.disabtxtLevelAprl4g = newDisabtxtLevelAprl4g; + } + + public String getDisabtxtLevelRating4g() { + return this.disabtxtLevelRating4g; + } + + public void setDisabtxtLevelRating4g(String newDisabtxtLevelRating4g) { + this.disabtxtLevelRating4g = newDisabtxtLevelRating4g; + } + + public String getDisabbutRatingG0LOV() { + return this.disabbutRatingG0LOV; + } + + public void setDisabbutRatingG0LOV(String newDisabbutRatingG0LOV) { + this.disabbutRatingG0LOV = newDisabbutRatingG0LOV; + } + + public String getDisabbutRatingG1LOV() { + return this.disabbutRatingG1LOV; + } + + public void setDisabbutRatingG1LOV(String newDisabbutRatingG1LOV) { + this.disabbutRatingG1LOV = newDisabbutRatingG1LOV; + } + + public String getDisabbutRatingG2LOV() { + return this.disabbutRatingG2LOV; + } + + public void setDisabbutRatingG2LOV(String newDisabbutRatingG2LOV) { + this.disabbutRatingG2LOV = newDisabbutRatingG2LOV; + } + + public String getDisabbutRatingG3LOV() { + return this.disabbutRatingG3LOV; + } + + public void setDisabbutRatingG3LOV(String newDisabbutRatingG3LOV) { + this.disabbutRatingG3LOV = newDisabbutRatingG3LOV; + } + + public String getDisabbutRatingG4LOV() { + return this.disabbutRatingG4LOV; + } + + public void setDisabbutRatingG4LOV(String newDisabbutRatingG4LOV) { + this.disabbutRatingG4LOV = newDisabbutRatingG4LOV; + } + + public String getTxtSecAprslType() { + return this.txtSecAprslType; + } + + public void setTxtSecAprslType(String newTxtSecAprslType) { + this.txtSecAprslType = newTxtSecAprslType; + } + + public String getTxtLevelAprl5g() { + return this.txtLevelAprl5g; + } + + public void setTxtLevelAprl5g(String newTxtLevelAprl5g) { + this.txtLevelAprl5g = newTxtLevelAprl5g; + } + + public String getDisabtxtLevelAprl5g() { + return this.disabtxtLevelAprl5g; + } + + public void setDisabtxtLevelAprl5g(String newDisabtxtLevelAprl5g) { + this.disabtxtLevelAprl5g = newDisabtxtLevelAprl5g; + } + + public String getTxtLevelRating5g() { + return this.txtLevelRating5g; + } + + public void setTxtLevelRating5g(String newTxtLevelRating5g) { + this.txtLevelRating5g = newTxtLevelRating5g; + } + + public String getDisabtxtLevelRating5g() { + return this.disabtxtLevelRating5g; + } + + public void setDisabtxtLevelRating5g(String newDisabtxtLevelRating5g) { + this.disabtxtLevelRating5g = newDisabtxtLevelRating5g; + } + + public String getDisabbutRatingG5LOV() { + return this.disabbutRatingG5LOV; + } + + public void setDisabbutRatingG5LOV(String newDisabbutRatingG5LOV) { + this.disabbutRatingG5LOV = newDisabbutRatingG5LOV; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslHdrBean.java new file mode 100644 index 0000000..090470d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslHdrBean.java @@ -0,0 +1,256 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslHdrBean extends BaseHeaderBean implements Serializable { + String empName; + + String aprslLevel; + + String aprslPeriod; + + String stOrderNo; + + String finalRating; + + String fromDate; + + String toDate; + + String empNo; + + String empId; + + String tmplHdrId; + + String spcTmplId; + + String startOrderId; + + String rating0; + + String rating1; + + String rating2; + + String rating3; + + String rating4; + + String calFlag = "C"; + + String buttonName; + + String appFlag; + + String doneFlag; + + String hidDoneFlag; + + String approvalFlag; + + private String rating5; + + String aprslYear; + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getAprslLevel() { + return this.aprslLevel; + } + + public void setAprslLevel(String newAprslLevel) { + this.aprslLevel = newAprslLevel; + } + + public String getAprslPeriod() { + return this.aprslPeriod; + } + + public void setAprslPeriod(String newAprslPeriod) { + this.aprslPeriod = newAprslPeriod; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getFinalRating() { + return this.finalRating; + } + + public void setFinalRating(String newFinalRating) { + this.finalRating = newFinalRating; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getTmplHdrId() { + return this.tmplHdrId; + } + + public void setTmplHdrId(String newTmplHdrId) { + this.tmplHdrId = newTmplHdrId; + } + + public String getSpcTmplId() { + return this.spcTmplId; + } + + public void setSpcTmplId(String newSpcTmplId) { + this.spcTmplId = newSpcTmplId; + } + + public String getStartOrderId() { + return this.startOrderId; + } + + public void setStartOrderId(String newStartOrderId) { + this.startOrderId = newStartOrderId; + } + + public String getRating0() { + return this.rating0; + } + + public void setRating0(String newRating0) { + this.rating0 = newRating0; + } + + public String getRating1() { + return this.rating1; + } + + public void setRating1(String newRating1) { + this.rating1 = newRating1; + } + + public String getRating2() { + return this.rating2; + } + + public void setRating2(String newRating2) { + this.rating2 = newRating2; + } + + public String getRating3() { + return this.rating3; + } + + public void setRating3(String newRating3) { + this.rating3 = newRating3; + } + + public String getRating4() { + return this.rating4; + } + + public void setRating4(String newRating4) { + this.rating4 = newRating4; + } + + public String getCalFlag() { + return this.calFlag; + } + + public void setCalFlag(String newCalFlag) { + this.calFlag = newCalFlag; + } + + public String getButtonName() { + return this.buttonName; + } + + public void setButtonName(String newButtonName) { + this.buttonName = newButtonName; + } + + public String getAppFlag() { + return this.appFlag; + } + + public void setAppFlag(String newAppFlag) { + this.appFlag = newAppFlag; + } + + public String getDoneFlag() { + return this.doneFlag; + } + + public void setDoneFlag(String newDoneFlag) { + this.doneFlag = newDoneFlag; + } + + public String getHidDoneFlag() { + return this.hidDoneFlag; + } + + public void setHidDoneFlag(String newHidDoneFlag) { + this.hidDoneFlag = newHidDoneFlag; + } + + public String getApprovalFlag() { + return this.approvalFlag; + } + + public void setApprovalFlag(String newApprovalFlag) { + this.approvalFlag = newApprovalFlag; + } + + public String getRating5() { + return this.rating5; + } + + public void setRating5(String newRating5) { + this.rating5 = newRating5; + } + + public String getAprslYear() { + return this.aprslYear; + } + + public void setAprslYear(String newAprslYear) { + this.aprslYear = newAprslYear; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslKPADtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslKPADtlBean.java new file mode 100644 index 0000000..1cfb924 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslKPADtlBean.java @@ -0,0 +1,406 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslKPADtlBean extends BaseDetailBean implements Serializable { + String txtKPACode; + + String txtKPADesc; + + String txtLevelAprl0; + + String txtLevelRating0; + + String txtLevelAprl1; + + String txtLevelRating1; + + String txtLevelAprl2; + + String txtLevelRating2; + + String txtLevelAprl3; + + String txtLevelRating3; + + String txtLevelAprl4; + + String txtLevelRating4; + + String txtTmplKPADtlId; + + String txtEmpAprsKPAlHdrId; + + String txtRatingFrom; + + String txtRatingTo; + + String txtRatingDesc; + + String txtKPADtlId; + + String txtKpaRatingReq; + + String disabtxtLevelAprl0; + + String disabtxtLevelRating0; + + String disabtxtLevelAprl1; + + String disabtxtLevelRating1; + + String disabtxtLevelAprl2; + + String disabtxtLevelRating2; + + String disabtxtLevelAprl3; + + String disabtxtLevelRating3; + + String disabtxtLevelAprl4; + + String disabtxtLevelRating4; + + String disabbutRatingK0LOV; + + String disabbutRatingK1LOV; + + String disabbutRatingK2LOV; + + String disabbutRatingK3LOV; + + String disabbutRatingK4LOV; + + String txtKpaAprslType; + + private String txtLevelAprl5; + + private String txtLevelRating5; + + private String disabtxtLevelRating5; + + private String disabtxtLevelAprl5; + + private String disabbutRatingK5LOV; + + public String getTxtKPACode() { + return this.txtKPACode; + } + + public void setTxtKPACode(String newTxtKPACode) { + this.txtKPACode = newTxtKPACode; + } + + public String getTxtKPADesc() { + return this.txtKPADesc; + } + + public void setTxtKPADesc(String newTxtKPADesc) { + this.txtKPADesc = newTxtKPADesc; + } + + public String getTxtLevelAprl0() { + return this.txtLevelAprl0; + } + + public void setTxtLevelAprl0(String newTxtLevelAprl0) { + this.txtLevelAprl0 = newTxtLevelAprl0; + } + + public String getTxtLevelRating0() { + return this.txtLevelRating0; + } + + public void setTxtLevelRating0(String newTxtLevelRating0) { + this.txtLevelRating0 = newTxtLevelRating0; + } + + public String getTxtLevelAprl1() { + return this.txtLevelAprl1; + } + + public void setTxtLevelAprl1(String newTxtLevelAprl1) { + this.txtLevelAprl1 = newTxtLevelAprl1; + } + + public String getTxtLevelRating1() { + return this.txtLevelRating1; + } + + public void setTxtLevelRating1(String newTxtLevelRating1) { + this.txtLevelRating1 = newTxtLevelRating1; + } + + public String getTxtLevelAprl2() { + return this.txtLevelAprl2; + } + + public void setTxtLevelAprl2(String newTxtLevelAprl2) { + this.txtLevelAprl2 = newTxtLevelAprl2; + } + + public String getTxtLevelRating2() { + return this.txtLevelRating2; + } + + public void setTxtLevelRating2(String newTxtLevelRating2) { + this.txtLevelRating2 = newTxtLevelRating2; + } + + public String getTxtLevelAprl3() { + return this.txtLevelAprl3; + } + + public void setTxtLevelAprl3(String newTxtLevelAprl3) { + this.txtLevelAprl3 = newTxtLevelAprl3; + } + + public String getTxtLevelRating3() { + return this.txtLevelRating3; + } + + public void setTxtLevelRating3(String newTxtLevelRating3) { + this.txtLevelRating3 = newTxtLevelRating3; + } + + public String getTxtLevelAprl4() { + return this.txtLevelAprl4; + } + + public void setTxtLevelAprl4(String newTxtLevelAprl4) { + this.txtLevelAprl4 = newTxtLevelAprl4; + } + + public String getTxtLevelRating4() { + return this.txtLevelRating4; + } + + public void setTxtLevelRating4(String newTxtLevelRating4) { + this.txtLevelRating4 = newTxtLevelRating4; + } + + public String getTxtTmplKPADtlId() { + return this.txtTmplKPADtlId; + } + + public void setTxtTmplKPADtlId(String newTxtTmplKPADtlId) { + this.txtTmplKPADtlId = newTxtTmplKPADtlId; + } + + public String getTxtEmpAprsKPAlHdrId() { + return this.txtEmpAprsKPAlHdrId; + } + + public void setTxtEmpAprsKPAlHdrId(String newTxtEmpAprsKPAlHdrId) { + this.txtEmpAprsKPAlHdrId = newTxtEmpAprsKPAlHdrId; + } + + public String getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String getTxtRatingDesc() { + return this.txtRatingDesc; + } + + public void setTxtRatingDesc(String newTxtRatingDesc) { + this.txtRatingDesc = newTxtRatingDesc; + } + + public String getTxtKPADtlId() { + return this.txtKPADtlId; + } + + public void setTxtKPADtlId(String newTxtKPADtlId) { + this.txtKPADtlId = newTxtKPADtlId; + } + + public String getTxtKpaRatingReq() { + return this.txtKpaRatingReq; + } + + public void setTxtKpaRatingReq(String newTxtKpaRatingReq) { + this.txtKpaRatingReq = newTxtKpaRatingReq; + } + + public String getDisabtxtLevelAprl0() { + return this.disabtxtLevelAprl0; + } + + public void setDisabtxtLevelAprl0(String newDisabtxtLevelAprl0) { + this.disabtxtLevelAprl0 = newDisabtxtLevelAprl0; + } + + public String getDisabtxtLevelRating0() { + return this.disabtxtLevelRating0; + } + + public void setDisabtxtLevelRating0(String newDisabtxtLevelRating0) { + this.disabtxtLevelRating0 = newDisabtxtLevelRating0; + } + + public String getDisabtxtLevelAprl1() { + return this.disabtxtLevelAprl1; + } + + public void setDisabtxtLevelAprl1(String newDisabtxtLevelAprl1) { + this.disabtxtLevelAprl1 = newDisabtxtLevelAprl1; + } + + public String getDisabtxtLevelRating1() { + return this.disabtxtLevelRating1; + } + + public void setDisabtxtLevelRating1(String newDisabtxtLevelRating1) { + this.disabtxtLevelRating1 = newDisabtxtLevelRating1; + } + + public String getDisabtxtLevelAprl2() { + return this.disabtxtLevelAprl2; + } + + public void setDisabtxtLevelAprl2(String newDisabtxtLevelAprl2) { + this.disabtxtLevelAprl2 = newDisabtxtLevelAprl2; + } + + public String getDisabtxtLevelRating2() { + return this.disabtxtLevelRating2; + } + + public void setDisabtxtLevelRating2(String newDisabtxtLevelRating2) { + this.disabtxtLevelRating2 = newDisabtxtLevelRating2; + } + + public String getDisabtxtLevelAprl3() { + return this.disabtxtLevelAprl3; + } + + public void setDisabtxtLevelAprl3(String newDisabtxtLevelAprl3) { + this.disabtxtLevelAprl3 = newDisabtxtLevelAprl3; + } + + public String getDisabtxtLevelRating3() { + return this.disabtxtLevelRating3; + } + + public void setDisabtxtLevelRating3(String newDisabtxtLevelRating3) { + this.disabtxtLevelRating3 = newDisabtxtLevelRating3; + } + + public String getDisabtxtLevelAprl4() { + return this.disabtxtLevelAprl4; + } + + public void setDisabtxtLevelAprl4(String newDisabtxtLevelAprl4) { + this.disabtxtLevelAprl4 = newDisabtxtLevelAprl4; + } + + public String getDisabtxtLevelRating4() { + return this.disabtxtLevelRating4; + } + + public void setDisabtxtLevelRating4(String newDisabtxtLevelRating4) { + this.disabtxtLevelRating4 = newDisabtxtLevelRating4; + } + + public String getDisabbutRatingK0LOV() { + return this.disabbutRatingK0LOV; + } + + public void setDisabbutRatingK0LOV(String newDisabbutRatingK0LOV) { + this.disabbutRatingK0LOV = newDisabbutRatingK0LOV; + } + + public String getDisabbutRatingK1LOV() { + return this.disabbutRatingK1LOV; + } + + public void setDisabbutRatingK1LOV(String newDisabbutRatingK1LOV) { + this.disabbutRatingK1LOV = newDisabbutRatingK1LOV; + } + + public String getDisabbutRatingK2LOV() { + return this.disabbutRatingK2LOV; + } + + public void setDisabbutRatingK2LOV(String newDisabbutRatingK2LOV) { + this.disabbutRatingK2LOV = newDisabbutRatingK2LOV; + } + + public String getDisabbutRatingK3LOV() { + return this.disabbutRatingK3LOV; + } + + public void setDisabbutRatingK3LOV(String newDisabbutRatingK3LOV) { + this.disabbutRatingK3LOV = newDisabbutRatingK3LOV; + } + + public String getDisabbutRatingK4LOV() { + return this.disabbutRatingK4LOV; + } + + public void setDisabbutRatingK4LOV(String newDisabbutRatingK4LOV) { + this.disabbutRatingK4LOV = newDisabbutRatingK4LOV; + } + + public String getTxtKpaAprslType() { + return this.txtKpaAprslType; + } + + public void setTxtKpaAprslType(String newTxtKpaAprslType) { + this.txtKpaAprslType = newTxtKpaAprslType; + } + + public String getTxtLevelAprl5() { + return this.txtLevelAprl5; + } + + public void setTxtLevelAprl5(String newTxtLevelAprl5) { + this.txtLevelAprl5 = newTxtLevelAprl5; + } + + public String getTxtLevelRating5() { + return this.txtLevelRating5; + } + + public void setTxtLevelRating5(String newTxtLevelRating5) { + this.txtLevelRating5 = newTxtLevelRating5; + } + + public String getDisabtxtLevelRating5() { + return this.disabtxtLevelRating5; + } + + public void setDisabtxtLevelRating5(String newDisabtxtLevelRating5) { + this.disabtxtLevelRating5 = newDisabtxtLevelRating5; + } + + public String getDisabtxtLevelAprl5() { + return this.disabtxtLevelAprl5; + } + + public void setDisabtxtLevelAprl5(String newDisabtxtLevelAprl5) { + this.disabtxtLevelAprl5 = newDisabtxtLevelAprl5; + } + + public String getDisabbutRatingK5LOV() { + return this.disabbutRatingK5LOV; + } + + public void setDisabbutRatingK5LOV(String newDisabbutRatingK5LOV) { + this.disabbutRatingK5LOV = newDisabbutRatingK5LOV; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java new file mode 100644 index 0000000..26baf0f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplDtlBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslSpcTmplDtlBean extends BaseDetailBean implements Serializable { + String txtKpaGrCode; + + String txtKpaGrDesc; + + String txtKpaCode; + + String txtKpaDesc; + + String txtFlag; + + String txtKPAId; + + String txtKPAGrId; + + public String getTxtKpaGrCode() { + return this.txtKpaGrCode; + } + + public void setTxtKpaGrCode(String newTxtKpaGrCode) { + this.txtKpaGrCode = newTxtKpaGrCode; + } + + public String getTxtKpaGrDesc() { + return this.txtKpaGrDesc; + } + + public void setTxtKpaGrDesc(String newTxtKpaGrDesc) { + this.txtKpaGrDesc = newTxtKpaGrDesc; + } + + public String getTxtKpaCode() { + return this.txtKpaCode; + } + + public void setTxtKpaCode(String newTxtKpaCode) { + this.txtKpaCode = newTxtKpaCode; + } + + public String getTxtKpaDesc() { + return this.txtKpaDesc; + } + + public void setTxtKpaDesc(String newTxtKpaDesc) { + this.txtKpaDesc = newTxtKpaDesc; + } + + public String getTxtFlag() { + return this.txtFlag; + } + + public void setTxtFlag(String newTxtFlag) { + this.txtFlag = newTxtFlag; + } + + public String getTxtKPAId() { + return this.txtKPAId; + } + + public void setTxtKPAId(String newTxtKPAId) { + this.txtKPAId = newTxtKPAId; + } + + public String getTxtKPAGrId() { + return this.txtKPAGrId; + } + + public void setTxtKPAGrId(String newTxtKPAGrId) { + this.txtKPAGrId = newTxtKPAGrId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java new file mode 100644 index 0000000..4b289d9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplEmpEligDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslSpcTmplEmpEligDtlBean extends BaseDetailBean implements Serializable { + String txtEmpName; + + String txtEmpNo; + + String txtEmpId; + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java new file mode 100644 index 0000000..15c9805 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplGoalDtlBean.java @@ -0,0 +1,136 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslSpcTmplGoalDtlBean extends BaseDetailBean implements Serializable { + String txtSection; + + String txtGoalsDesc; + + String txtMesr; + + String txtParentSection; + + String txtWtg; + + String txtSectionId; + + private String txtSrlNo; + + private String disabtxtSrlNo; + + private String disabtxtSection; + + private String disabtxtParentSection; + + private String disabtxtGoalsDesc; + + private String disabtxtMesr; + + private String disabtxtWtg; + + public String getTxtSection() { + return this.txtSection; + } + + public void setTxtSection(String newTxtSection) { + this.txtSection = newTxtSection; + } + + public String getTxtGoalsDesc() { + return this.txtGoalsDesc; + } + + public void setTxtGoalsDesc(String newTxtGoalsDesc) { + this.txtGoalsDesc = newTxtGoalsDesc; + } + + public String getTxtMesr() { + return this.txtMesr; + } + + public void setTxtMesr(String newTxtMesr) { + this.txtMesr = newTxtMesr; + } + + public String getTxtParentSection() { + return this.txtParentSection; + } + + public void setTxtParentSection(String newTxtParentSection) { + this.txtParentSection = newTxtParentSection; + } + + public String getTxtWtg() { + return this.txtWtg; + } + + public void setTxtWtg(String newTxtWtg) { + this.txtWtg = newTxtWtg; + } + + public String getTxtSectionId() { + return this.txtSectionId; + } + + public void setTxtSectionId(String newTxtSectionId) { + this.txtSectionId = newTxtSectionId; + } + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getDisabtxtSrlNo() { + return this.disabtxtSrlNo; + } + + public void setDisabtxtSrlNo(String newDisabtxtSrlNo) { + this.disabtxtSrlNo = newDisabtxtSrlNo; + } + + public String getDisabtxtSection() { + return this.disabtxtSection; + } + + public void setDisabtxtSection(String newDisabtxtSection) { + this.disabtxtSection = newDisabtxtSection; + } + + public String getDisabtxtParentSection() { + return this.disabtxtParentSection; + } + + public void setDisabtxtParentSection(String newDisabtxtParentSection) { + this.disabtxtParentSection = newDisabtxtParentSection; + } + + public String getDisabtxtGoalsDesc() { + return this.disabtxtGoalsDesc; + } + + public void setDisabtxtGoalsDesc(String newDisabtxtGoalsDesc) { + this.disabtxtGoalsDesc = newDisabtxtGoalsDesc; + } + + public String getDisabtxtMesr() { + return this.disabtxtMesr; + } + + public void setDisabtxtMesr(String newDisabtxtMesr) { + this.disabtxtMesr = newDisabtxtMesr; + } + + public String getDisabtxtWtg() { + return this.disabtxtWtg; + } + + public void setDisabtxtWtg(String newDisabtxtWtg) { + this.disabtxtWtg = newDisabtxtWtg; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java new file mode 100644 index 0000000..de47a7b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslSpcTmplHdrBean.java @@ -0,0 +1,276 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslSpcTmplHdrBean extends BaseHeaderBean implements Serializable { + String splTemplateName; + + String templateName; + + String siteCode; + + String deptCode; + + String empNo; + + String stOrderNo; + + String fromDate; + + String toDate; + + String selectAll; + + String classHdr; + + String classHdrDesc; + + String classDtl; + + String classDtlDesc; + + String stOrderId; + + String empId; + + String deptId; + + String siteId; + + String classDtlId; + + String classHdrId; + + String templateNameId; + + String siteDesc; + + String empName; + + String deptDesc; + + private String disabsplTemplateName; + + String employeeId; + + String employeeName; + + String empLoyeeNumber; + + public String getSplTemplateName() { + return this.splTemplateName; + } + + public void setSplTemplateName(String newSplTemplateName) { + this.splTemplateName = newSplTemplateName; + } + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getDeptCode() { + return this.deptCode; + } + + public void setDeptCode(String newDeptCode) { + this.deptCode = newDeptCode; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getClassHdr() { + return this.classHdr; + } + + public void setClassHdr(String newClassHdr) { + this.classHdr = newClassHdr; + } + + public String getClassHdrDesc() { + return this.classHdrDesc; + } + + public void setClassHdrDesc(String newClassHdrDesc) { + this.classHdrDesc = newClassHdrDesc; + } + + public String getClassDtl() { + return this.classDtl; + } + + public void setClassDtl(String newClassDtl) { + this.classDtl = newClassDtl; + } + + public String getClassDtlDesc() { + return this.classDtlDesc; + } + + public void setClassDtlDesc(String newClassDtlDesc) { + this.classDtlDesc = newClassDtlDesc; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getDeptId() { + return this.deptId; + } + + public void setDeptId(String newDeptId) { + this.deptId = newDeptId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getClassDtlId() { + return this.classDtlId; + } + + public void setClassDtlId(String newClassDtlId) { + this.classDtlId = newClassDtlId; + } + + public String getClassHdrId() { + return this.classHdrId; + } + + public void setClassHdrId(String newClassHdrId) { + this.classHdrId = newClassHdrId; + } + + public String getTemplateNameId() { + return this.templateNameId; + } + + public void setTemplateNameId(String newTemplateNameId) { + this.templateNameId = newTemplateNameId; + } + + public String getSiteDesc() { + return this.siteDesc; + } + + public void setSiteDesc(String newSiteDesc) { + this.siteDesc = newSiteDesc; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDeptDesc() { + return this.deptDesc; + } + + public void setDeptDesc(String newDeptDesc) { + this.deptDesc = newDeptDesc; + } + + public String getDisabsplTemplateName() { + return this.disabsplTemplateName; + } + + public void setDisabsplTemplateName(String newDisabsplTemplateName) { + this.disabsplTemplateName = newDisabsplTemplateName; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmpLoyeeNumber() { + return this.empLoyeeNumber; + } + + public void setEmpLoyeeNumber(String newEmpLoyeeNumber) { + this.empLoyeeNumber = newEmpLoyeeNumber; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java new file mode 100644 index 0000000..4eb2d4c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartOrderHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslStartOrderHdrBean extends BaseHeaderBean implements Serializable { + String stOrderNo; + + String periodStDate; + + String periodEndDate; + + String aprslStDate; + + String aprslEndDate; + + String stOrderId; + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getPeriodStDate() { + return this.periodStDate; + } + + public void setPeriodStDate(String newPeriodStDate) { + this.periodStDate = newPeriodStDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getAprslStDate() { + return this.aprslStDate; + } + + public void setAprslStDate(String newAprslStDate) { + this.aprslStDate = newAprslStDate; + } + + public String getAprslEndDate() { + return this.aprslEndDate; + } + + public void setAprslEndDate(String newAprslEndDate) { + this.aprslEndDate = newAprslEndDate; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java new file mode 100644 index 0000000..aecb7f5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslStartRuleDtlBean extends BaseDetailBean implements Serializable { + private String txtEmplNo; + + private String txtEmplName; + + private String dtlEmplNo; + + public String getTxtEmplNo() { + return this.txtEmplNo; + } + + public void setTxtEmplNo(String newTxtEmplNo) { + this.txtEmplNo = newTxtEmplNo; + } + + public String getTxtEmplName() { + return this.txtEmplName; + } + + public void setTxtEmplName(String newTxtEmplName) { + this.txtEmplName = newTxtEmplName; + } + + public String getDtlEmplNo() { + return this.dtlEmplNo; + } + + public void setDtlEmplNo(String newDtlEmplNo) { + this.dtlEmplNo = newDtlEmplNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java new file mode 100644 index 0000000..bfd19fe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslStartRuleHdrBean.java @@ -0,0 +1,176 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAprslStartRuleHdrBean extends BaseHeaderBean implements Serializable { + private String txtAprslStOrdNo; + + private String hdnAprslStOrdNo; + + private String txtEmpNum; + + private String txtEmpName; + + private String hdnEmpNum; + + private String txtWrkGrpCode; + + private String hdnWrkGrpCode; + + private String txtWrkGrpDesc; + + private String txtSiteCode; + + private String hdnSiteCode; + + private String txtSiteDesc; + + private String txtClsHdr; + + private String hdnClsHdrID; + + private String txtClsHdrDesc; + + private String txtClsDtl; + + private String hdnClsDtlID; + + private String txtClsDtlDesc; + + public String getTxtAprslStOrdNo() { + return this.txtAprslStOrdNo; + } + + public void setTxtAprslStOrdNo(String newTxtAprslStOrdNo) { + this.txtAprslStOrdNo = newTxtAprslStOrdNo; + } + + public String getHdnAprslStOrdNo() { + return this.hdnAprslStOrdNo; + } + + public void setHdnAprslStOrdNo(String newHdnAprslStOrdNo) { + this.hdnAprslStOrdNo = newHdnAprslStOrdNo; + } + + public String getTxtEmpNum() { + return this.txtEmpNum; + } + + public void setTxtEmpNum(String newTxtEmpNum) { + this.txtEmpNum = newTxtEmpNum; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getHdnEmpNum() { + return this.hdnEmpNum; + } + + public void setHdnEmpNum(String newHdnEmpNum) { + this.hdnEmpNum = newHdnEmpNum; + } + + public String getTxtWrkGrpCode() { + return this.txtWrkGrpCode; + } + + public void setTxtWrkGrpCode(String newTxtWrkGrpCode) { + this.txtWrkGrpCode = newTxtWrkGrpCode; + } + + public String getHdnWrkGrpCode() { + return this.hdnWrkGrpCode; + } + + public void setHdnWrkGrpCode(String newHdnWrkGrpCode) { + this.hdnWrkGrpCode = newHdnWrkGrpCode; + } + + public String getTxtWrkGrpDesc() { + return this.txtWrkGrpDesc; + } + + public void setTxtWrkGrpDesc(String newTxtWrkGrpDesc) { + this.txtWrkGrpDesc = newTxtWrkGrpDesc; + } + + public String getTxtSiteCode() { + return this.txtSiteCode; + } + + public void setTxtSiteCode(String newTxtSiteCode) { + this.txtSiteCode = newTxtSiteCode; + } + + public String getHdnSiteCode() { + return this.hdnSiteCode; + } + + public void setHdnSiteCode(String newHdnSiteCode) { + this.hdnSiteCode = newHdnSiteCode; + } + + public String getTxtSiteDesc() { + return this.txtSiteDesc; + } + + public void setTxtSiteDesc(String newTxtSiteDesc) { + this.txtSiteDesc = newTxtSiteDesc; + } + + public String getTxtClsHdr() { + return this.txtClsHdr; + } + + public void setTxtClsHdr(String newTxtClsHdr) { + this.txtClsHdr = newTxtClsHdr; + } + + public String getHdnClsHdrID() { + return this.hdnClsHdrID; + } + + public void setHdnClsHdrID(String newHdnClsHdrID) { + this.hdnClsHdrID = newHdnClsHdrID; + } + + public String getTxtClsHdrDesc() { + return this.txtClsHdrDesc; + } + + public void setTxtClsHdrDesc(String newTxtClsHdrDesc) { + this.txtClsHdrDesc = newTxtClsHdrDesc; + } + + public String getTxtClsDtl() { + return this.txtClsDtl; + } + + public void setTxtClsDtl(String newTxtClsDtl) { + this.txtClsDtl = newTxtClsDtl; + } + + public String getHdnClsDtlID() { + return this.hdnClsDtlID; + } + + public void setHdnClsDtlID(String newHdnClsDtlID) { + this.hdnClsDtlID = newHdnClsDtlID; + } + + public String getTxtClsDtlDesc() { + return this.txtClsDtlDesc; + } + + public void setTxtClsDtlDesc(String newTxtClsDtlDesc) { + this.txtClsDtlDesc = newTxtClsDtlDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java new file mode 100644 index 0000000..d1665dd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAprslTrngReqDtlBean.java @@ -0,0 +1,236 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAprslTrngReqDtlBean extends BaseDetailBean implements Serializable { + String txtDateSubmitted; + + String txtCourseName; + + String txtTrngCal; + + String txtInstName; + + String txtStartDate; + + String txtEndDate; + + String txtNature; + + String txtPurpose; + + String txtRecommender; + + String txtAppStatus; + + String txtRemarks; + + String txtCrsId; + + String txtCalId; + + String txtRecId; + + String disabbutCourseLOV; + + String disabbutTrngCalLOV; + + String disabbutRecLOV; + + String txtLevel; + + String txtEmpId; + + String txtRecNo; + + String txtCourseCode; + + String disabtxtRemarks; + + String disabtxtPurpose; + + public String getTxtDateSubmitted() { + return this.txtDateSubmitted; + } + + public void setTxtDateSubmitted(String newTxtDateSubmitted) { + this.txtDateSubmitted = newTxtDateSubmitted; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getTxtTrngCal() { + return this.txtTrngCal; + } + + public void setTxtTrngCal(String newTxtTrngCal) { + this.txtTrngCal = newTxtTrngCal; + } + + public String getTxtInstName() { + return this.txtInstName; + } + + public void setTxtInstName(String newTxtInstName) { + this.txtInstName = newTxtInstName; + } + + public String getTxtStartDate() { + return this.txtStartDate; + } + + public void setTxtStartDate(String newTxtStartDate) { + this.txtStartDate = newTxtStartDate; + } + + public String getTxtEndDate() { + return this.txtEndDate; + } + + public void setTxtEndDate(String newTxtEndDate) { + this.txtEndDate = newTxtEndDate; + } + + public String getTxtNature() { + return this.txtNature; + } + + public void setTxtNature(String newTxtNature) { + this.txtNature = newTxtNature; + } + + public String getTxtPurpose() { + return this.txtPurpose; + } + + public void setTxtPurpose(String newTxtPurpose) { + this.txtPurpose = newTxtPurpose; + } + + public String getTxtRecommender() { + return this.txtRecommender; + } + + public void setTxtRecommender(String newTxtRecommender) { + this.txtRecommender = newTxtRecommender; + } + + public String getTxtAppStatus() { + return this.txtAppStatus; + } + + public void setTxtAppStatus(String newTxtAppStatus) { + this.txtAppStatus = newTxtAppStatus; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getTxtCrsId() { + return this.txtCrsId; + } + + public void setTxtCrsId(String newTxtCrsId) { + this.txtCrsId = newTxtCrsId; + } + + public String getTxtCalId() { + return this.txtCalId; + } + + public void setTxtCalId(String newTxtCalId) { + this.txtCalId = newTxtCalId; + } + + public String getTxtRecId() { + return this.txtRecId; + } + + public void setTxtRecId(String newTxtRecId) { + this.txtRecId = newTxtRecId; + } + + public String getDisabbutCourseLOV() { + return this.disabbutCourseLOV; + } + + public void setDisabbutCourseLOV(String newDisabbutCourseLOV) { + this.disabbutCourseLOV = newDisabbutCourseLOV; + } + + public String getDisabbutTrngCalLOV() { + return this.disabbutTrngCalLOV; + } + + public void setDisabbutTrngCalLOV(String newDisabbutTrngCalLOV) { + this.disabbutTrngCalLOV = newDisabbutTrngCalLOV; + } + + public String getDisabbutRecLOV() { + return this.disabbutRecLOV; + } + + public void setDisabbutRecLOV(String newDisabbutRecLOV) { + this.disabbutRecLOV = newDisabbutRecLOV; + } + + public String getTxtLevel() { + return this.txtLevel; + } + + public void setTxtLevel(String newTxtLevel) { + this.txtLevel = newTxtLevel; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtRecNo() { + return this.txtRecNo; + } + + public void setTxtRecNo(String newTxtRecNo) { + this.txtRecNo = newTxtRecNo; + } + + public String getTxtCourseCode() { + return this.txtCourseCode; + } + + public void setTxtCourseCode(String newTxtCourseCode) { + this.txtCourseCode = newTxtCourseCode; + } + + public String getDisabtxtRemarks() { + return this.disabtxtRemarks; + } + + public void setDisabtxtRemarks(String newDisabtxtRemarks) { + this.disabtxtRemarks = newDisabtxtRemarks; + } + + public String getDisabtxtPurpose() { + return this.disabtxtPurpose; + } + + public void setDisabtxtPurpose(String newDisabtxtPurpose) { + this.disabtxtPurpose = newDisabtxtPurpose; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java new file mode 100644 index 0000000..e2b7567 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttInHdrBean.java @@ -0,0 +1,126 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpAttInHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String date; + + String shiftCode; + + String timeIn; + + String attndStatus; + + String reasons; + + String empId; + + String shiftId; + + String shiftTime; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getTimeIn() { + return this.timeIn; + } + + public void setTimeIn(String newTimeIn) { + this.timeIn = newTimeIn; + } + + public String getAttndStatus() { + return this.attndStatus; + } + + public void setAttndStatus(String newAttndStatus) { + this.attndStatus = newAttndStatus; + } + + public String getReasons() { + return this.reasons; + } + + public void setReasons(String newReasons) { + this.reasons = newReasons; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } + + public String getShiftTime() { + return this.shiftTime; + } + + public void setShiftTime(String newShiftTime) { + this.shiftTime = newShiftTime; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java new file mode 100644 index 0000000..5d7a129 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttOutHdrBean.java @@ -0,0 +1,136 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpAttOutHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String date; + + String shiftCode; + + String timeIn; + + String attndStatus; + + String empId; + + String shiftId; + + String shiftTime; + + String timeOut; + + String outDate; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getTimeIn() { + return this.timeIn; + } + + public void setTimeIn(String newTimeIn) { + this.timeIn = newTimeIn; + } + + public String getAttndStatus() { + return this.attndStatus; + } + + public void setAttndStatus(String newAttndStatus) { + this.attndStatus = newAttndStatus; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } + + public String getShiftTime() { + return this.shiftTime; + } + + public void setShiftTime(String newShiftTime) { + this.shiftTime = newShiftTime; + } + + public String getTimeOut() { + return this.timeOut; + } + + public void setTimeOut(String newTimeOut) { + this.timeOut = newTimeOut; + } + + public String getOutDate() { + return this.outDate; + } + + public void setOutDate(String newOutDate) { + this.outDate = newOutDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java new file mode 100644 index 0000000..9bac6bd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryDtlBean.java @@ -0,0 +1,126 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpAttQueryDtlBean extends BaseDetailBean implements Serializable { + String txtShiftCode; + + String txtChkInDate; + + String txtCheckInTime; + + String txtCheckOutTime; + + String txtAttStatus; + + String txtReason; + + private String txtEmpId; + + private String txtShiftMstId; + + private String txtEmpNo; + + private String txtEmpName; + + private String txtCheckInTimeMin; + + private String txtCheckOutTimeMin; + + public String getTxtShiftCode() { + return this.txtShiftCode; + } + + public void setTxtShiftCode(String newTxtShiftCode) { + this.txtShiftCode = newTxtShiftCode; + } + + public String getTxtChkInDate() { + return this.txtChkInDate; + } + + public void setTxtChkInDate(String newTxtChkInDate) { + this.txtChkInDate = newTxtChkInDate; + } + + public String getTxtCheckInTime() { + return this.txtCheckInTime; + } + + public void setTxtCheckInTime(String newTxtCheckInTime) { + this.txtCheckInTime = newTxtCheckInTime; + } + + public String getTxtCheckOutTime() { + return this.txtCheckOutTime; + } + + public void setTxtCheckOutTime(String newTxtCheckOutTime) { + this.txtCheckOutTime = newTxtCheckOutTime; + } + + public String getTxtAttStatus() { + return this.txtAttStatus; + } + + public void setTxtAttStatus(String newTxtAttStatus) { + this.txtAttStatus = newTxtAttStatus; + } + + public String getTxtReason() { + return this.txtReason; + } + + public void setTxtReason(String newTxtReason) { + this.txtReason = newTxtReason; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtShiftMstId() { + return this.txtShiftMstId; + } + + public void setTxtShiftMstId(String newTxtShiftMstId) { + this.txtShiftMstId = newTxtShiftMstId; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtCheckInTimeMin() { + return this.txtCheckInTimeMin; + } + + public void setTxtCheckInTimeMin(String newTxtCheckInTimeMin) { + this.txtCheckInTimeMin = newTxtCheckInTimeMin; + } + + public String getTxtCheckOutTimeMin() { + return this.txtCheckOutTimeMin; + } + + public void setTxtCheckOutTimeMin(String newTxtCheckOutTimeMin) { + this.txtCheckOutTimeMin = newTxtCheckOutTimeMin; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java new file mode 100644 index 0000000..5a4ae4e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpAttQueryHdrBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpAttQueryHdrBean extends BaseHeaderBean implements Serializable { + private String periodStartDt; + + private String empId; + + public String getPeriodStartDt() { + return this.periodStartDt; + } + + public void setPeriodStartDt(String newPeriodStartDt) { + this.periodStartDt = newPeriodStartDt; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java new file mode 100644 index 0000000..ff65af7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffDtlBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpDayOffDtlBean extends BaseDetailBean implements Serializable { + private String txtStartWeekDate; + + private String txtEndWeekDate; + + private String txtFirstRestDay; + + private String txtSecondRestDay; + + private String txtHalfDay1; + + private String txtHalfDay2; + + private String txtRestWeek1; + + private String txtRestWeekDay1; + + private String txtRestWeek2; + + private String txtRestWeekDay2; + + public String getTxtStartWeekDate() { + return this.txtStartWeekDate; + } + + public void setTxtStartWeekDate(String newTxtStartWeekDate) { + this.txtStartWeekDate = newTxtStartWeekDate; + } + + public String getTxtEndWeekDate() { + return this.txtEndWeekDate; + } + + public void setTxtEndWeekDate(String newTxtEndWeekDate) { + this.txtEndWeekDate = newTxtEndWeekDate; + } + + public String getTxtFirstRestDay() { + return this.txtFirstRestDay; + } + + public void setTxtFirstRestDay(String newTxtFirstRestDay) { + this.txtFirstRestDay = newTxtFirstRestDay; + } + + public String getTxtSecondRestDay() { + return this.txtSecondRestDay; + } + + public void setTxtSecondRestDay(String newTxtSecondRestDay) { + this.txtSecondRestDay = newTxtSecondRestDay; + } + + public String getTxtHalfDay1() { + return this.txtHalfDay1; + } + + public void setTxtHalfDay1(String newTxtHalfDay1) { + this.txtHalfDay1 = newTxtHalfDay1; + } + + public String getTxtHalfDay2() { + return this.txtHalfDay2; + } + + public void setTxtHalfDay2(String newTxtHalfDay2) { + this.txtHalfDay2 = newTxtHalfDay2; + } + + public String getTxtRestWeek1() { + return this.txtRestWeek1; + } + + public void setTxtRestWeek1(String newTxtRestWeek1) { + this.txtRestWeek1 = newTxtRestWeek1; + } + + public String getTxtRestWeekDay1() { + return this.txtRestWeekDay1; + } + + public void setTxtRestWeekDay1(String newTxtRestWeekDay1) { + this.txtRestWeekDay1 = newTxtRestWeekDay1; + } + + public String getTxtRestWeek2() { + return this.txtRestWeek2; + } + + public void setTxtRestWeek2(String newTxtRestWeek2) { + this.txtRestWeek2 = newTxtRestWeek2; + } + + public String getTxtRestWeekDay2() { + return this.txtRestWeekDay2; + } + + public void setTxtRestWeekDay2(String newTxtRestWeekDay2) { + this.txtRestWeekDay2 = newTxtRestWeekDay2; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java new file mode 100644 index 0000000..ebbbba3 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpDayOffHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpDayOffHdrBean extends BaseHeaderBean implements Serializable { + private String empId; + + private String employeeNo; + + private String employeeName; + + private String periodStartDate; + + private String periodEndDate; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java new file mode 100644 index 0000000..1dfe551 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpShiftDtlBean extends BaseDetailBean implements Serializable { + private String shiftBeginDate; + + private String shiftEndDate; + + private String shiftCode; + + String shiftId; + + public String getShiftBeginDate() { + return this.shiftBeginDate; + } + + public void setShiftBeginDate(String newShiftBeginDate) { + this.shiftBeginDate = newShiftBeginDate; + } + + public String getShiftEndDate() { + return this.shiftEndDate; + } + + public void setShiftEndDate(String newShiftEndDate) { + this.shiftEndDate = newShiftEndDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java new file mode 100644 index 0000000..484daaf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpShiftHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String employeeName; + + private String startDate; + + private String endDate; + + String empNoId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java new file mode 100644 index 0000000..343c25f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttEmpShiftRosterDtlBean extends BaseDetailBean implements Serializable { + private String txtWorkDate; + + private String txtAvailability; + + private String txtShiftCode; + + private String txtMandatoryHoliady; + + private String txtEmpNo; + + private String txtShiftCodeId; + + public String getTxtWorkDate() { + return this.txtWorkDate; + } + + public void setTxtWorkDate(String newTxtWorkDate) { + this.txtWorkDate = newTxtWorkDate; + } + + public String getTxtAvailability() { + return this.txtAvailability; + } + + public void setTxtAvailability(String newTxtAvailability) { + this.txtAvailability = newTxtAvailability; + } + + public String getTxtShiftCode() { + return this.txtShiftCode; + } + + public void setTxtShiftCode(String newTxtShiftCode) { + this.txtShiftCode = newTxtShiftCode; + } + + public String getTxtMandatoryHoliady() { + return this.txtMandatoryHoliady; + } + + public void setTxtMandatoryHoliady(String newTxtMandatoryHoliady) { + this.txtMandatoryHoliady = newTxtMandatoryHoliady; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtShiftCodeId() { + return this.txtShiftCodeId; + } + + public void setTxtShiftCodeId(String newTxtShiftCodeId) { + this.txtShiftCodeId = newTxtShiftCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java new file mode 100644 index 0000000..760d855 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttEmpShiftRosterHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttEmpShiftRosterHdrBean extends BaseHeaderBean implements Serializable { + String workGroupCode; + + String employeeNo; + + String employeeName; + + String periodStartDate; + + String periodEndDate; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java new file mode 100644 index 0000000..7213f15 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftMstHdrBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttShiftMstHdrBean extends BaseHeaderBean implements Serializable { + private String shiftCode; + + private String shiftDescription; + + private String startTime; + + private String endTime; + + private String relaxationTime; + + private String startTolerenceTime; + + private String endTolerenceTime; + + private String overlapTime; + + private String txtDayOverlapFlag; + + String hdnWorkId; + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getShiftDescription() { + return this.shiftDescription; + } + + public void setShiftDescription(String newShiftDescription) { + this.shiftDescription = newShiftDescription; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String newStartTime) { + this.startTime = newStartTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String newEndTime) { + this.endTime = newEndTime; + } + + public String getRelaxationTime() { + return this.relaxationTime; + } + + public void setRelaxationTime(String newRelaxationTime) { + this.relaxationTime = newRelaxationTime; + } + + public String getStartTolerenceTime() { + return this.startTolerenceTime; + } + + public void setStartTolerenceTime(String newStartTolerenceTime) { + this.startTolerenceTime = newStartTolerenceTime; + } + + public String getEndTolerenceTime() { + return this.endTolerenceTime; + } + + public void setEndTolerenceTime(String newEndTolerenceTime) { + this.endTolerenceTime = newEndTolerenceTime; + } + + public String getOverlapTime() { + return this.overlapTime; + } + + public void setOverlapTime(String newOverlapTime) { + this.overlapTime = newOverlapTime; + } + + public String getTxtDayOverlapFlag() { + return this.txtDayOverlapFlag; + } + + public void setTxtDayOverlapFlag(String newTxtDayOverlapFlag) { + this.txtDayOverlapFlag = newTxtDayOverlapFlag; + } + + public String getHdnWorkId() { + return this.hdnWorkId; + } + + public void setHdnWorkId(String newHdnWorkId) { + this.hdnWorkId = newHdnWorkId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java new file mode 100644 index 0000000..5935382 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttShiftRosterGenHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttShiftRosterGenHdrBean extends BaseHeaderBean implements Serializable { + private String site; + + private String fromDate; + + private String toDate; + + private String siteId; + + private String workGroupId; + + private String workGroupCode; + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java new file mode 100644 index 0000000..755b5fd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffDtlBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttWorkGroupDayOffDtlBean extends BaseDetailBean implements Serializable { + private String txtStartWeekDate; + + private String txtEndWeekDate; + + private String txtFirstRestDay; + + private String txtSecondRestDay; + + private String txtHalfDay1; + + private String txtHalfDay2; + + private String txtRestWeek1; + + private String txtRestWeekDay1; + + private String txtRestWeek2; + + private String txtRestWeekDay2; + + public String getTxtStartWeekDate() { + return this.txtStartWeekDate; + } + + public void setTxtStartWeekDate(String newTxtStartWeekDate) { + this.txtStartWeekDate = newTxtStartWeekDate; + } + + public String getTxtEndWeekDate() { + return this.txtEndWeekDate; + } + + public void setTxtEndWeekDate(String newTxtEndWeekDate) { + this.txtEndWeekDate = newTxtEndWeekDate; + } + + public String getTxtFirstRestDay() { + return this.txtFirstRestDay; + } + + public void setTxtFirstRestDay(String newTxtFirstRestDay) { + this.txtFirstRestDay = newTxtFirstRestDay; + } + + public String getTxtSecondRestDay() { + return this.txtSecondRestDay; + } + + public void setTxtSecondRestDay(String newTxtSecondRestDay) { + this.txtSecondRestDay = newTxtSecondRestDay; + } + + public String getTxtHalfDay1() { + return this.txtHalfDay1; + } + + public void setTxtHalfDay1(String newTxtHalfDay1) { + this.txtHalfDay1 = newTxtHalfDay1; + } + + public String getTxtHalfDay2() { + return this.txtHalfDay2; + } + + public void setTxtHalfDay2(String newTxtHalfDay2) { + this.txtHalfDay2 = newTxtHalfDay2; + } + + public String getTxtRestWeek1() { + return this.txtRestWeek1; + } + + public void setTxtRestWeek1(String newTxtRestWeek1) { + this.txtRestWeek1 = newTxtRestWeek1; + } + + public String getTxtRestWeekDay1() { + return this.txtRestWeekDay1; + } + + public void setTxtRestWeekDay1(String newTxtRestWeekDay1) { + this.txtRestWeekDay1 = newTxtRestWeekDay1; + } + + public String getTxtRestWeek2() { + return this.txtRestWeek2; + } + + public void setTxtRestWeek2(String newTxtRestWeek2) { + this.txtRestWeek2 = newTxtRestWeek2; + } + + public String getTxtRestWeekDay2() { + return this.txtRestWeekDay2; + } + + public void setTxtRestWeekDay2(String newTxtRestWeekDay2) { + this.txtRestWeekDay2 = newTxtRestWeekDay2; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java new file mode 100644 index 0000000..8f5921f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupDayOffHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttWorkGroupDayOffHdrBean extends BaseHeaderBean implements Serializable { + private String workGroupId; + + private String siteId; + + private String workGroupCode; + + private String workGroupDescription; + + private String siteCode; + + private String siteDescription; + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java new file mode 100644 index 0000000..2b47c2f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmAttWorkGroupShiftDtlBean extends BaseDetailBean implements Serializable { + String shiftBeginDate; + + String shiftEndDate; + + String shiftCode; + + String shiftId; + + public String getShiftBeginDate() { + return this.shiftBeginDate; + } + + public void setShiftBeginDate(String newShiftBeginDate) { + this.shiftBeginDate = newShiftBeginDate; + } + + public String getShiftEndDate() { + return this.shiftEndDate; + } + + public void setShiftEndDate(String newShiftEndDate) { + this.shiftEndDate = newShiftEndDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java new file mode 100644 index 0000000..b27f264 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmAttWorkGroupShiftHdrBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmAttWorkGroupShiftHdrBean extends BaseHeaderBean implements Serializable { + String workGroupCode; + + String workGroupDescription; + + String siteCode; + + String siteDescription; + + String workGroupId; + + String siteId; + + String startDate; + + String endDate; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmChargeReportHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmChargeReportHdrBean.java new file mode 100644 index 0000000..b0bd8bc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmChargeReportHdrBean.java @@ -0,0 +1,276 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmChargeReportHdrBean extends BaseHeaderBean implements Serializable { + String trnOrderNo; + + String empName; + + String chargeType; + + String chargeCode; + + String handOverDate; + + private String fromDesignation; + + private String fromSiteCode; + + String remarks; + + String noonFlag; + + String trnOrderNoId; + + String chargeCodeId; + + String empNameId; + + String trnOrdrDtlId; + + String transferDate; + + private String fromDesigId; + + private String toDesignation; + + private String toDesigId; + + private String fromSiteId; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String toSiteCode; + + private String toSiteId; + + private String chargeStatus; + + private String orderType; + + private String handoverTakeover; + + private String handoverTakeoverId; + + private String handTakeEmpNo; + + public String getTrnOrderNo() { + return this.trnOrderNo; + } + + public void setTrnOrderNo(String newTrnOrderNo) { + this.trnOrderNo = newTrnOrderNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getChargeCode() { + return this.chargeCode; + } + + public void setChargeCode(String newChargeCode) { + this.chargeCode = newChargeCode; + } + + public String getHandOverDate() { + return this.handOverDate; + } + + public void setHandOverDate(String newHandOverDate) { + this.handOverDate = newHandOverDate; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getFromSiteCode() { + return this.fromSiteCode; + } + + public void setFromSiteCode(String newFromSiteCode) { + this.fromSiteCode = newFromSiteCode; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getNoonFlag() { + return this.noonFlag; + } + + public void setNoonFlag(String newNoonFlag) { + this.noonFlag = newNoonFlag; + } + + public String getTrnOrderNoId() { + return this.trnOrderNoId; + } + + public void setTrnOrderNoId(String newTrnOrderNoId) { + this.trnOrderNoId = newTrnOrderNoId; + } + + public String getChargeCodeId() { + return this.chargeCodeId; + } + + public void setChargeCodeId(String newChargeCodeId) { + this.chargeCodeId = newChargeCodeId; + } + + public String getEmpNameId() { + return this.empNameId; + } + + public void setEmpNameId(String newEmpNameId) { + this.empNameId = newEmpNameId; + } + + public String getTrnOrdrDtlId() { + return this.trnOrdrDtlId; + } + + public void setTrnOrdrDtlId(String newTrnOrdrDtlId) { + this.trnOrdrDtlId = newTrnOrdrDtlId; + } + + public String getTransferDate() { + return this.transferDate; + } + + public void setTransferDate(String newTransferDate) { + this.transferDate = newTransferDate; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getFromSiteId() { + return this.fromSiteId; + } + + public void setFromSiteId(String newFromSiteId) { + this.fromSiteId = newFromSiteId; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getToSiteCode() { + return this.toSiteCode; + } + + public void setToSiteCode(String newToSiteCode) { + this.toSiteCode = newToSiteCode; + } + + public String getToSiteId() { + return this.toSiteId; + } + + public void setToSiteId(String newToSiteId) { + this.toSiteId = newToSiteId; + } + + public String getChargeStatus() { + return this.chargeStatus; + } + + public void setChargeStatus(String newChargeStatus) { + this.chargeStatus = newChargeStatus; + } + + public String getOrderType() { + return this.orderType; + } + + public void setOrderType(String newOrderType) { + this.orderType = newOrderType; + } + + public String getHandoverTakeover() { + return this.handoverTakeover; + } + + public void setHandoverTakeover(String newHandoverTakeover) { + this.handoverTakeover = newHandoverTakeover; + } + + public String getHandoverTakeoverId() { + return this.handoverTakeoverId; + } + + public void setHandoverTakeoverId(String newHandoverTakeoverId) { + this.handoverTakeoverId = newHandoverTakeoverId; + } + + public String getHandTakeEmpNo() { + return this.handTakeEmpNo; + } + + public void setHandTakeEmpNo(String newHandTakeEmpNo) { + this.handTakeEmpNo = newHandTakeEmpNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstDtlBean.java new file mode 100644 index 0000000..e763707 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmClaimMstDtlBean extends BaseDetailBean implements Serializable { + private String txtClaimDetailCode; + + private String txtMaxCalLimit; + + private String txtGreaterLesserFlag; + + private String txtMaxLimit; + + private String txtFlatAmount; + + private String txtEffectFromDate; + + private String txtEffectToDate; + + private String txtAppliedToAll; + + public String getTxtClaimDetailCode() { + return this.txtClaimDetailCode; + } + + public void setTxtClaimDetailCode(String newTxtClaimDetailCode) { + this.txtClaimDetailCode = newTxtClaimDetailCode; + } + + public String getTxtMaxCalLimit() { + return this.txtMaxCalLimit; + } + + public void setTxtMaxCalLimit(String newTxtMaxCalLimit) { + this.txtMaxCalLimit = newTxtMaxCalLimit; + } + + public String getTxtGreaterLesserFlag() { + return this.txtGreaterLesserFlag; + } + + public void setTxtGreaterLesserFlag(String newTxtGreaterLesserFlag) { + this.txtGreaterLesserFlag = newTxtGreaterLesserFlag; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String getTxtFlatAmount() { + return this.txtFlatAmount; + } + + public void setTxtFlatAmount(String newTxtFlatAmount) { + this.txtFlatAmount = newTxtFlatAmount; + } + + public String getTxtEffectFromDate() { + return this.txtEffectFromDate; + } + + public void setTxtEffectFromDate(String newTxtEffectFromDate) { + this.txtEffectFromDate = newTxtEffectFromDate; + } + + public String getTxtEffectToDate() { + return this.txtEffectToDate; + } + + public void setTxtEffectToDate(String newTxtEffectToDate) { + this.txtEffectToDate = newTxtEffectToDate; + } + + public String getTxtAppliedToAll() { + return this.txtAppliedToAll; + } + + public void setTxtAppliedToAll(String newTxtAppliedToAll) { + this.txtAppliedToAll = newTxtAppliedToAll; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstHdrBean.java new file mode 100644 index 0000000..0a29b9d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmClaimMstHdrBean.java @@ -0,0 +1,96 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmClaimMstHdrBean extends BaseHeaderBean implements Serializable { + private String payrollFlag; + + private String calendarName; + + private String docReqFlag; + + private String claimCode; + + private String claimCodeId; + + private String calendarId; + + private String claimName; + + private String durationMonth; + + private String beginMonth; + + public String getPayrollFlag() { + return this.payrollFlag; + } + + public void setPayrollFlag(String newPayrollFlag) { + this.payrollFlag = newPayrollFlag; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getDocReqFlag() { + return this.docReqFlag; + } + + public void setDocReqFlag(String newDocReqFlag) { + this.docReqFlag = newDocReqFlag; + } + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String newClaimCode) { + this.claimCode = newClaimCode; + } + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getClaimName() { + return this.claimName; + } + + public void setClaimName(String newClaimName) { + this.claimName = newClaimName; + } + + public String getDurationMonth() { + return this.durationMonth; + } + + public void setDurationMonth(String newDurationMonth) { + this.durationMonth = newDurationMonth; + } + + public String getBeginMonth() { + return this.beginMonth; + } + + public void setBeginMonth(String newBeginMonth) { + this.beginMonth = newBeginMonth; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java new file mode 100644 index 0000000..376d34d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmDeputationApplicationHdrBean.java @@ -0,0 +1,156 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmDeputationApplicationHdrBean extends BaseHeaderBean implements Serializable { + String applnNo; + + String applnDate; + + String deputType; + + String advtNo; + + String advtDate; + + String employeeNo; + + String orgName; + + String postName; + + String reason; + + String deputStatus; + + String empName; + + String selfOfficeFlag; + + String employeeNoId; + + String postCode; + + String postId; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } + + public String getAdvtNo() { + return this.advtNo; + } + + public void setAdvtNo(String newAdvtNo) { + this.advtNo = newAdvtNo; + } + + public String getAdvtDate() { + return this.advtDate; + } + + public void setAdvtDate(String newAdvtDate) { + this.advtDate = newAdvtDate; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getOrgName() { + return this.orgName; + } + + public void setOrgName(String newOrgName) { + this.orgName = newOrgName; + } + + public String getPostName() { + return this.postName; + } + + public void setPostName(String newPostName) { + this.postName = newPostName; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getDeputStatus() { + return this.deputStatus; + } + + public void setDeputStatus(String newDeputStatus) { + this.deputStatus = newDeputStatus; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getSelfOfficeFlag() { + return this.selfOfficeFlag; + } + + public void setSelfOfficeFlag(String newSelfOfficeFlag) { + this.selfOfficeFlag = newSelfOfficeFlag; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getPostCode() { + return this.postCode; + } + + public void setPostCode(String newPostCode) { + this.postCode = newPostCode; + } + + public String getPostId() { + return this.postId; + } + + public void setPostId(String newPostId) { + this.postId = newPostId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java new file mode 100644 index 0000000..b788d2a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEligibilityRuleValuesLovBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEligibilityRuleValuesLovBean extends BaseHeaderBean implements Serializable { + private String id; + + private String code; + + private String name; + + private String heirarchy; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getHeirarchy() { + return this.heirarchy; + } + + public void setHeirarchy(String newHeirarchy) { + this.heirarchy = newHeirarchy; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java new file mode 100644 index 0000000..f02cdd6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpAdvAppHdrBean.java @@ -0,0 +1,296 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpAdvAppHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String middleName; + + private String lastName; + + private String dateApplied; + + private String advanceCode; + + private String amountApplied; + + private String reason; + + private String amountSettled; + + String advanceStatus; + + private String employeeId; + + private String advanceCodeId; + + String grade; + + private String designation; + + private String location; + + private String approverName; + + private String remarks; + + private String sanctionDate; + + private String sanctionedAmount; + + private String eligibleAmount; + + private String approverNoId; + + private String payrollMonth; + + private String noOfInst; + + private String monthlyInstallment; + + private String paidInstallments; + + private String settledAmount; + + private String balance; + + private String bulkSettleAmount; + + private String mode; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getAmountApplied() { + return this.amountApplied; + } + + public void setAmountApplied(String newAmountApplied) { + this.amountApplied = newAmountApplied; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getAmountSettled() { + return this.amountSettled; + } + + public void setAmountSettled(String newAmountSettled) { + this.amountSettled = newAmountSettled; + } + + public String getAdvanceStatus() { + return this.advanceStatus; + } + + public void setAdvanceStatus(String newAdvanceStatus) { + this.advanceStatus = newAdvanceStatus; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getPayrollMonth() { + return this.payrollMonth; + } + + public void setPayrollMonth(String newPayrollMonth) { + this.payrollMonth = newPayrollMonth; + } + + public String getNoOfInst() { + return this.noOfInst; + } + + public void setNoOfInst(String newNoOfInst) { + this.noOfInst = newNoOfInst; + } + + public String getMonthlyInstallment() { + return this.monthlyInstallment; + } + + public void setMonthlyInstallment(String newMonthlyInstallment) { + this.monthlyInstallment = newMonthlyInstallment; + } + + public String getPaidInstallments() { + return this.paidInstallments; + } + + public void setPaidInstallments(String newPaidInstallments) { + this.paidInstallments = newPaidInstallments; + } + + public String getSettledAmount() { + return this.settledAmount; + } + + public void setSettledAmount(String newSettledAmount) { + this.settledAmount = newSettledAmount; + } + + public String getBalance() { + return this.balance; + } + + public void setBalance(String newBalance) { + this.balance = newBalance; + } + + public String getBulkSettleAmount() { + return this.bulkSettleAmount; + } + + public void setBulkSettleAmount(String newBulkSettleAmount) { + this.bulkSettleAmount = newBulkSettleAmount; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java new file mode 100644 index 0000000..d9774b1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimDtlBean.java @@ -0,0 +1,176 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpClaimDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpId; + + private String txtApproverId; + + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtAppliedAmount; + + private String txtApplnDate; + + private String txtEligibleAmount; + + private String txtReimbursementTillDate; + + private String txtPayrollFlag; + + private String txtApprovedAmount; + + private String txtApprovalDate; + + private String txtApprovedBy; + + private String txtRemarks; + + private String txtClaimCode; + + private String txtClaimDtlId; + + private String txtClaimNo; + + private String txtNewRemarks; + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtApproverId() { + return this.txtApproverId; + } + + public void setTxtApproverId(String newTxtApproverId) { + this.txtApproverId = newTxtApproverId; + } + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtAppliedAmount() { + return this.txtAppliedAmount; + } + + public void setTxtAppliedAmount(String newTxtAppliedAmount) { + this.txtAppliedAmount = newTxtAppliedAmount; + } + + public String getTxtApplnDate() { + return this.txtApplnDate; + } + + public void setTxtApplnDate(String newTxtApplnDate) { + this.txtApplnDate = newTxtApplnDate; + } + + public String getTxtEligibleAmount() { + return this.txtEligibleAmount; + } + + public void setTxtEligibleAmount(String newTxtEligibleAmount) { + this.txtEligibleAmount = newTxtEligibleAmount; + } + + public String getTxtReimbursementTillDate() { + return this.txtReimbursementTillDate; + } + + public void setTxtReimbursementTillDate(String newTxtReimbursementTillDate) { + this.txtReimbursementTillDate = newTxtReimbursementTillDate; + } + + public String getTxtPayrollFlag() { + return this.txtPayrollFlag; + } + + public void setTxtPayrollFlag(String newTxtPayrollFlag) { + this.txtPayrollFlag = newTxtPayrollFlag; + } + + public String getTxtApprovedAmount() { + return this.txtApprovedAmount; + } + + public void setTxtApprovedAmount(String newTxtApprovedAmount) { + this.txtApprovedAmount = newTxtApprovedAmount; + } + + public String getTxtApprovalDate() { + return this.txtApprovalDate; + } + + public void setTxtApprovalDate(String newTxtApprovalDate) { + this.txtApprovalDate = newTxtApprovalDate; + } + + public String getTxtApprovedBy() { + return this.txtApprovedBy; + } + + public void setTxtApprovedBy(String newTxtApprovedBy) { + this.txtApprovedBy = newTxtApprovedBy; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getTxtClaimCode() { + return this.txtClaimCode; + } + + public void setTxtClaimCode(String newTxtClaimCode) { + this.txtClaimCode = newTxtClaimCode; + } + + public String getTxtClaimDtlId() { + return this.txtClaimDtlId; + } + + public void setTxtClaimDtlId(String newTxtClaimDtlId) { + this.txtClaimDtlId = newTxtClaimDtlId; + } + + public String getTxtClaimNo() { + return this.txtClaimNo; + } + + public void setTxtClaimNo(String newTxtClaimNo) { + this.txtClaimNo = newTxtClaimNo; + } + + public String getTxtNewRemarks() { + return this.txtNewRemarks; + } + + public void setTxtNewRemarks(String newTxtNewRemarks) { + this.txtNewRemarks = newTxtNewRemarks; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java new file mode 100644 index 0000000..c23f2bd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpClaimHdrBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpClaimHdrBean extends BaseHeaderBean implements Serializable { + private String claimCode; + + private String startDate; + + private String endDate; + + private String claimCodeId; + + private String claimNo; + + private String period; + + private String empNo; + + private String empDtlId; + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String newClaimCode) { + this.claimCode = newClaimCode; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getClaimNo() { + return this.claimNo; + } + + public void setClaimNo(String newClaimNo) { + this.claimNo = newClaimNo; + } + + public String getPeriod() { + return this.period; + } + + public void setPeriod(String newPeriod) { + this.period = newPeriod; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpDtlId() { + return this.empDtlId; + } + + public void setEmpDtlId(String newEmpDtlId) { + this.empDtlId = newEmpDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepDtlBean.java new file mode 100644 index 0000000..684ce85 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpDepDtlBean extends BaseDetailBean implements Serializable { + String txtDOB; + + String txtDepName; + + String txtRelationType; + + String txtRelationTypeId; + + String txtSex; + + String txtRelationTypeCode; + + String txtOrgName; + + String txtIncomeAmount; + + public String getTxtDOB() { + return this.txtDOB; + } + + public void setTxtDOB(String newTxtDOB) { + this.txtDOB = newTxtDOB; + } + + public String getTxtDepName() { + return this.txtDepName; + } + + public void setTxtDepName(String newTxtDepName) { + this.txtDepName = newTxtDepName; + } + + public String getTxtRelationType() { + return this.txtRelationType; + } + + public void setTxtRelationType(String newTxtRelationType) { + this.txtRelationType = newTxtRelationType; + } + + public String getTxtRelationTypeId() { + return this.txtRelationTypeId; + } + + public void setTxtRelationTypeId(String newTxtRelationTypeId) { + this.txtRelationTypeId = newTxtRelationTypeId; + } + + public String getTxtSex() { + return this.txtSex; + } + + public void setTxtSex(String newTxtSex) { + this.txtSex = newTxtSex; + } + + public String getTxtRelationTypeCode() { + return this.txtRelationTypeCode; + } + + public void setTxtRelationTypeCode(String newTxtRelationTypeCode) { + this.txtRelationTypeCode = newTxtRelationTypeCode; + } + + public String getTxtOrgName() { + return this.txtOrgName; + } + + public void setTxtOrgName(String newTxtOrgName) { + this.txtOrgName = newTxtOrgName; + } + + public String getTxtIncomeAmount() { + return this.txtIncomeAmount; + } + + public void setTxtIncomeAmount(String newTxtIncomeAmount) { + this.txtIncomeAmount = newTxtIncomeAmount; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepHdrBean.java new file mode 100644 index 0000000..8a13f3c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDepHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpDepHdrBean extends BaseHeaderBean implements Serializable { + String employeeName; + + String employeeNo; + + String employeeNoId; + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java new file mode 100644 index 0000000..887d10e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionDtlBean.java @@ -0,0 +1,146 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpDiscActionDtlBean extends BaseDetailBean implements Serializable { + private String txtLocation; + + private String txtMisconduct; + + private String txtFromDate; + + private String txtToDate; + + private String txtActionTaken; + + private String txtStatus; + + private String txtStatusEffectDate; + + private String txtRemarks; + + private String txtLocationId; + + private String txtChrgShtDate; + + private String txtInqDate; + + private String txtInqOfficer; + + private String txtActionOfficer; + + private String txtAppealDate; + + public String getTxtChrgShtDate() { + return this.txtChrgShtDate; + } + + public void setTxtChrgShtDate(String txtChrgShtDate) { + this.txtChrgShtDate = txtChrgShtDate; + } + + public String getTxtInqDate() { + return this.txtInqDate; + } + + public void setTxtInqDate(String txtInqDate) { + this.txtInqDate = txtInqDate; + } + + public String getTxtInqOfficer() { + return this.txtInqOfficer; + } + + public void setTxtInqOfficer(String txtInqOfficer) { + this.txtInqOfficer = txtInqOfficer; + } + + public String getTxtActionOfficer() { + return this.txtActionOfficer; + } + + public void setTxtActionOfficer(String txtActionOfficer) { + this.txtActionOfficer = txtActionOfficer; + } + + public String getTxtAppealDate() { + return this.txtAppealDate; + } + + public void setTxtAppealDate(String txtAppealDate) { + this.txtAppealDate = txtAppealDate; + } + + public String getTxtLocation() { + return this.txtLocation; + } + + public void setTxtLocation(String newTxtLocation) { + this.txtLocation = newTxtLocation; + } + + public String getTxtMisconduct() { + return this.txtMisconduct; + } + + public void setTxtMisconduct(String newTxtMisconduct) { + this.txtMisconduct = newTxtMisconduct; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtActionTaken() { + return this.txtActionTaken; + } + + public void setTxtActionTaken(String newTxtActionTaken) { + this.txtActionTaken = newTxtActionTaken; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getTxtStatusEffectDate() { + return this.txtStatusEffectDate; + } + + public void setTxtStatusEffectDate(String newTxtStatusEffectDate) { + this.txtStatusEffectDate = newTxtStatusEffectDate; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java new file mode 100644 index 0000000..58be0aa --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpDiscActionHdrBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpDiscActionHdrBean extends BaseHeaderBean implements Serializable { + String employeeName; + + String employeeNo; + + String caseFlag; + + String employeeNoId; + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getCaseFlag() { + return this.caseFlag; + } + + public void setCaseFlag(String newCaseFlag) { + this.caseFlag = newCaseFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java new file mode 100644 index 0000000..5111c8b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAddDtlBean.java @@ -0,0 +1,466 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersAddDtlBean extends BaseDetailBean implements Serializable { + String address; + + String city; + + String state; + + String country; + + String pinCode; + + String phone; + + String peAddress; + + String peCity; + + String peState; + + String peCountry; + + String pePinCode; + + String pePhone; + + String prAddress; + + String prCity; + + String prState; + + String prCountry; + + String prPinCode; + + String prPhone; + + String mobileNo; + + String extension; + + String secPhone; + + String secExtension; + + String htAddress; + + String htCity; + + String htState; + + String htCountry; + + String htPinCode; + + String htPhone; + + String email; + + String fax; + + String stateId; + + String stateCode; + + String countryCode; + + String countryId; + + String districtId; + + String districtCode; + + String tehsilCode; + + String tehsilId; + + String district; + + String peDistrict; + + String prDistrict; + + String htDistrict; + + String tehsil; + + String peTehsil; + + String prTehsil; + + String htTehsil; + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getCity() { + return this.city; + } + + public void setCity(String newCity) { + this.city = newCity; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getCountry() { + return this.country; + } + + public void setCountry(String newCountry) { + this.country = newCountry; + } + + public String getPinCode() { + return this.pinCode; + } + + public void setPinCode(String newPinCode) { + this.pinCode = newPinCode; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getPeAddress() { + return this.peAddress; + } + + public void setPeAddress(String newPeAddress) { + this.peAddress = newPeAddress; + } + + public String getPeCity() { + return this.peCity; + } + + public void setPeCity(String newPeCity) { + this.peCity = newPeCity; + } + + public String getPeState() { + return this.peState; + } + + public void setPeState(String newPeState) { + this.peState = newPeState; + } + + public String getPeCountry() { + return this.peCountry; + } + + public void setPeCountry(String newPeCountry) { + this.peCountry = newPeCountry; + } + + public String getPePinCode() { + return this.pePinCode; + } + + public void setPePinCode(String newPePinCode) { + this.pePinCode = newPePinCode; + } + + public String getPePhone() { + return this.pePhone; + } + + public void setPePhone(String newPePhone) { + this.pePhone = newPePhone; + } + + public String getPrAddress() { + return this.prAddress; + } + + public void setPrAddress(String newPrAddress) { + this.prAddress = newPrAddress; + } + + public String getPrCity() { + return this.prCity; + } + + public void setPrCity(String newPrCity) { + this.prCity = newPrCity; + } + + public String getPrState() { + return this.prState; + } + + public void setPrState(String newPrState) { + this.prState = newPrState; + } + + public String getPrCountry() { + return this.prCountry; + } + + public void setPrCountry(String newPrCountry) { + this.prCountry = newPrCountry; + } + + public String getPrPinCode() { + return this.prPinCode; + } + + public void setPrPinCode(String newPrPinCode) { + this.prPinCode = newPrPinCode; + } + + public String getPrPhone() { + return this.prPhone; + } + + public void setPrPhone(String newPrPhone) { + this.prPhone = newPrPhone; + } + + public String getMobileNo() { + return this.mobileNo; + } + + public void setMobileNo(String newMobileNo) { + this.mobileNo = newMobileNo; + } + + public String getExtension() { + return this.extension; + } + + public void setExtension(String newExtension) { + this.extension = newExtension; + } + + public String getSecPhone() { + return this.secPhone; + } + + public void setSecPhone(String newSecPhone) { + this.secPhone = newSecPhone; + } + + public String getSecExtension() { + return this.secExtension; + } + + public void setSecExtension(String newSecExtension) { + this.secExtension = newSecExtension; + } + + public String getHtAddress() { + return this.htAddress; + } + + public void setHtAddress(String newHtAddress) { + this.htAddress = newHtAddress; + } + + public String getHtCity() { + return this.htCity; + } + + public void setHtCity(String newHtCity) { + this.htCity = newHtCity; + } + + public String getHtState() { + return this.htState; + } + + public void setHtState(String newHtState) { + this.htState = newHtState; + } + + public String getHtCountry() { + return this.htCountry; + } + + public void setHtCountry(String newHtCountry) { + this.htCountry = newHtCountry; + } + + public String getHtPinCode() { + return this.htPinCode; + } + + public void setHtPinCode(String newHtPinCode) { + this.htPinCode = newHtPinCode; + } + + public String getHtPhone() { + return this.htPhone; + } + + public void setHtPhone(String newHtPhone) { + this.htPhone = newHtPhone; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getStateId() { + return this.stateId; + } + + public void setStateId(String newStateId) { + this.stateId = newStateId; + } + + public String getStateCode() { + return this.stateCode; + } + + public void setStateCode(String newStateCode) { + this.stateCode = newStateCode; + } + + public String getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String newCountryCode) { + this.countryCode = newCountryCode; + } + + public String getCountryId() { + return this.countryId; + } + + public void setCountryId(String newCountryId) { + this.countryId = newCountryId; + } + + public String getDistrictId() { + return this.districtId; + } + + public void setDistrictId(String districtId) { + this.districtId = districtId; + } + + public String getDistrictCode() { + return this.districtCode; + } + + public void setDistrictCode(String districtCode) { + this.districtCode = districtCode; + } + + public String getTehsilCode() { + return this.tehsilCode; + } + + public void setTehsilCode(String tehsilCode) { + this.tehsilCode = tehsilCode; + } + + public String getTehsilId() { + return this.tehsilId; + } + + public void setTehsilId(String tehsilId) { + this.tehsilId = tehsilId; + } + + public String getDistrict() { + return this.district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getPeDistrict() { + return this.peDistrict; + } + + public void setPeDistrict(String peDistrict) { + this.peDistrict = peDistrict; + } + + public String getPrDistrict() { + return this.prDistrict; + } + + public void setPrDistrict(String prDistrict) { + this.prDistrict = prDistrict; + } + + public String getHtDistrict() { + return this.htDistrict; + } + + public void setHtDistrict(String htDistrict) { + this.htDistrict = htDistrict; + } + + public String getTehsil() { + return this.tehsil; + } + + public void setTehsil(String tehsil) { + this.tehsil = tehsil; + } + + public String getPeTehsil() { + return this.peTehsil; + } + + public void setPeTehsil(String peTehsil) { + this.peTehsil = peTehsil; + } + + public String getPrTehsil() { + return this.prTehsil; + } + + public void setPrTehsil(String prTehsil) { + this.prTehsil = prTehsil; + } + + public String getHtTehsil() { + return this.htTehsil; + } + + public void setHtTehsil(String htTehsil) { + this.htTehsil = htTehsil; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java new file mode 100644 index 0000000..522269c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAssetDtlBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersAssetDtlBean extends BaseDetailBean implements Serializable { + private String fullAddress; + + private String detailOfProperty; + + private String costOfConstruction; + + private String yearOfPurchase; + + private String presentValue; + + private String nameHeld; + + private String howAquired; + + private String detailOfPerson; + + private String totalIncome; + + private String remarks; + + public String getFullAddress() { + return this.fullAddress; + } + + public void setFullAddress(String fullAddress) { + this.fullAddress = fullAddress; + } + + public String getDetailOfProperty() { + return this.detailOfProperty; + } + + public void setDetailOfProperty(String detailOfProperty) { + this.detailOfProperty = detailOfProperty; + } + + public String getCostOfConstruction() { + return this.costOfConstruction; + } + + public void setCostOfConstruction(String costOfConstruction) { + this.costOfConstruction = costOfConstruction; + } + + public String getYearOfPurchase() { + return this.yearOfPurchase; + } + + public void setYearOfPurchase(String yearOfPurchase) { + this.yearOfPurchase = yearOfPurchase; + } + + public String getPresentValue() { + return this.presentValue; + } + + public void setPresentValue(String presentValue) { + this.presentValue = presentValue; + } + + public String getNameHeld() { + return this.nameHeld; + } + + public void setNameHeld(String nameHeld) { + this.nameHeld = nameHeld; + } + + public String getHowAquired() { + return this.howAquired; + } + + public void setHowAquired(String howAquired) { + this.howAquired = howAquired; + } + + public String getDetailOfPerson() { + return this.detailOfPerson; + } + + public void setDetailOfPerson(String detailOfPerson) { + this.detailOfPerson = detailOfPerson; + } + + public String getTotalIncome() { + return this.totalIncome; + } + + public void setTotalIncome(String totalIncome) { + this.totalIncome = totalIncome; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java new file mode 100644 index 0000000..4a7c108 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersAwardDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersAwardDtlBean extends BaseDetailBean implements Serializable { + private String txtAwdName; + + private String txtAwdYear; + + private String txtAwdField; + + private String txtAwdDate; + + public String getTxtAwdName() { + return this.txtAwdName; + } + + public void setTxtAwdName(String newTxtAwdName) { + this.txtAwdName = newTxtAwdName; + } + + public String getTxtAwdYear() { + return this.txtAwdYear; + } + + public void setTxtAwdYear(String newTxtAwdYear) { + this.txtAwdYear = newTxtAwdYear; + } + + public String getTxtAwdField() { + return this.txtAwdField; + } + + public void setTxtAwdField(String newTxtAwdField) { + this.txtAwdField = newTxtAwdField; + } + + public String getTxtAwdDate() { + return this.txtAwdDate; + } + + public void setTxtAwdDate(String newTxtAwdDate) { + this.txtAwdDate = newTxtAwdDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java new file mode 100644 index 0000000..a08dd3d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersDtlsBean.java @@ -0,0 +1,716 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersDtlsBean extends BaseDetailBean implements Serializable { + String guardianName; + + String motherTongue; + + String dateOfBirth; + + String nationality; + + String bloodGroup; + + String sex; + + String maritalStatus; + + String department; + + String designation; + + private String rsvCtg; + + private String relatedToEmployee; + + String grade; + + String handicappedFlag; + + String panNumber; + + String girNumber; + + String pfNumber; + + String reportingEmployee; + + String lastPromotionDate; + + String religionId; + + String nationalityCode; + + String maritalCode; + + String departmentId; + + String designationId; + + String socialStatusId; + + String gradeId; + + String reportingEmpId; + + String gradeCode; + + String relatedEmpId; + + String motherTongueCode; + + String locationId; + + String dsgnCode; + + String relatedEmployee; + + String spouseOccupation; + + String spouseName; + + String validUpto; + + String passportExpDate; + + String placeOfIssue; + + String drivingLicenseNo; + + String passportIssueDate; + + String passportNo; + + String location; + + String locJoiningDate; + + String placeOfBirth; + + String idMark; + + String dependants; + + private String email; + + private String code; + + private String incrementDate; + + private String religion; + + private String socialCode; + + private String level; + + private String locationCode; + + private String nationalityId; + + private String motherTongueId; + + private String maritalId; + + private String personalEmail; + + private String mobile; + + private String deptCode; + + private String flat; + + private String anniversaryDate; + + private String motherName; + + private String scsmemershipNo; + + private String gunLicenseNo; + + private String gunLicenseRenDate; + + private String spouseOrganization; + + private String spOrgType; + + private String spTransferable; + + private String clubMembership; + + private String unionInfo; + + private String uanInfo; + + private String aadharInfo; + + public String getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String newGuardianName) { + this.guardianName = newGuardianName; + } + + public String getMotherTongue() { + return this.motherTongue; + } + + public void setMotherTongue(String newMotherTongue) { + this.motherTongue = newMotherTongue; + } + + public String getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String getNationality() { + return this.nationality; + } + + public void setNationality(String newNationality) { + this.nationality = newNationality; + } + + public String getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String getDepartment() { + return this.department; + } + + public void setDepartment(String newDepartment) { + this.department = newDepartment; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getRsvCtg() { + return this.rsvCtg; + } + + public void setRsvCtg(String newRsvCtg) { + this.rsvCtg = newRsvCtg; + } + + public String getRelatedToEmployee() { + return this.relatedToEmployee; + } + + public void setRelatedToEmployee(String newRelatedToEmployee) { + this.relatedToEmployee = newRelatedToEmployee; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getPanNumber() { + return this.panNumber; + } + + public void setPanNumber(String newPanNumber) { + this.panNumber = newPanNumber; + } + + public String getGirNumber() { + return this.girNumber; + } + + public void setGirNumber(String newGirNumber) { + this.girNumber = newGirNumber; + } + + public String getPfNumber() { + return this.pfNumber; + } + + public void setPfNumber(String newPfNumber) { + this.pfNumber = newPfNumber; + } + + public String getReportingEmployee() { + return this.reportingEmployee; + } + + public void setReportingEmployee(String newReportingEmployee) { + this.reportingEmployee = newReportingEmployee; + } + + public String getLastPromotionDate() { + return this.lastPromotionDate; + } + + public void setLastPromotionDate(String newLastPromotionDate) { + this.lastPromotionDate = newLastPromotionDate; + } + + public String getReligionId() { + return this.religionId; + } + + public void setReligionId(String newReligionId) { + this.religionId = newReligionId; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getMaritalCode() { + return this.maritalCode; + } + + public void setMaritalCode(String newMaritalCode) { + this.maritalCode = newMaritalCode; + } + + public String getDepartmentId() { + return this.departmentId; + } + + public void setDepartmentId(String newDepartmentId) { + this.departmentId = newDepartmentId; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getSocialStatusId() { + return this.socialStatusId; + } + + public void setSocialStatusId(String newSocialStatusId) { + this.socialStatusId = newSocialStatusId; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getRelatedEmpId() { + return this.relatedEmpId; + } + + public void setRelatedEmpId(String newRelatedEmpId) { + this.relatedEmpId = newRelatedEmpId; + } + + public String getMotherTongueCode() { + return this.motherTongueCode; + } + + public void setMotherTongueCode(String newMotherTongueCode) { + this.motherTongueCode = newMotherTongueCode; + } + + public String getLocationId() { + return this.locationId; + } + + public void setLocationId(String newLocationId) { + this.locationId = newLocationId; + } + + public String getDsgnCode() { + return this.dsgnCode; + } + + public void setDsgnCode(String newDsgnCode) { + this.dsgnCode = newDsgnCode; + } + + public String getRelatedEmployee() { + return this.relatedEmployee; + } + + public void setRelatedEmployee(String newRelatedEmployee) { + this.relatedEmployee = newRelatedEmployee; + } + + public String getSpouseOccupation() { + return this.spouseOccupation; + } + + public void setSpouseOccupation(String newSpouseOccupation) { + this.spouseOccupation = newSpouseOccupation; + } + + public String getSpouseName() { + return this.spouseName; + } + + public void setSpouseName(String newSpouseName) { + this.spouseName = newSpouseName; + } + + public String getValidUpto() { + return this.validUpto; + } + + public void setValidUpto(String newValidUpto) { + this.validUpto = newValidUpto; + } + + public String getPassportExpDate() { + return this.passportExpDate; + } + + public void setPassportExpDate(String newPassportExpDate) { + this.passportExpDate = newPassportExpDate; + } + + public String getPlaceOfIssue() { + return this.placeOfIssue; + } + + public void setPlaceOfIssue(String newPlaceOfIssue) { + this.placeOfIssue = newPlaceOfIssue; + } + + public String getDrivingLicenseNo() { + return this.drivingLicenseNo; + } + + public void setDrivingLicenseNo(String newDrivingLicenseNo) { + this.drivingLicenseNo = newDrivingLicenseNo; + } + + public String getPassportIssueDate() { + return this.passportIssueDate; + } + + public void setPassportIssueDate(String newPassportIssueDate) { + this.passportIssueDate = newPassportIssueDate; + } + + public String getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String newPassportNo) { + this.passportNo = newPassportNo; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getLocJoiningDate() { + return this.locJoiningDate; + } + + public void setLocJoiningDate(String newLocJoiningDate) { + this.locJoiningDate = newLocJoiningDate; + } + + public String getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getIdMark() { + return this.idMark; + } + + public void setIdMark(String newIdMark) { + this.idMark = newIdMark; + } + + public String getDependants() { + return this.dependants; + } + + public void setDependants(String newDependants) { + this.dependants = newDependants; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getIncrementDate() { + return this.incrementDate; + } + + public void setIncrementDate(String newIncrementDate) { + this.incrementDate = newIncrementDate; + } + + public String getReligion() { + return this.religion; + } + + public void setReligion(String newReligion) { + this.religion = newReligion; + } + + public String getSocialCode() { + return this.socialCode; + } + + public void setSocialCode(String newSocialCode) { + this.socialCode = newSocialCode; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } + + public String getNationalityId() { + return this.nationalityId; + } + + public void setNationalityId(String newNationalityId) { + this.nationalityId = newNationalityId; + } + + public String getMotherTongueId() { + return this.motherTongueId; + } + + public void setMotherTongueId(String newMotherTongueId) { + this.motherTongueId = newMotherTongueId; + } + + public String getMaritalId() { + return this.maritalId; + } + + public void setMaritalId(String newMaritalId) { + this.maritalId = newMaritalId; + } + + public String getPersonalEmail() { + return this.personalEmail; + } + + public void setPersonalEmail(String newPersonalEmail) { + this.personalEmail = newPersonalEmail; + } + + public String getMobile() { + return this.mobile; + } + + public void setMobile(String newMobile) { + this.mobile = newMobile; + } + + public String getDeptCode() { + return this.deptCode; + } + + public void setDeptCode(String newDeptCode) { + this.deptCode = newDeptCode; + } + + public String getFlat() { + return this.flat; + } + + public void setFlat(String newFlat) { + this.flat = newFlat; + } + + public String getAnniversaryDate() { + return this.anniversaryDate; + } + + public void setAnniversaryDate(String newAnniversaryDate) { + this.anniversaryDate = newAnniversaryDate; + } + + public String getMotherName() { + return this.motherName; + } + + public void setMotherName(String newMotherName) { + this.motherName = newMotherName; + } + + public String getScsmemershipNo() { + return this.scsmemershipNo; + } + + public void setScsmemershipNo(String newScsmemershipNo) { + this.scsmemershipNo = newScsmemershipNo; + } + + public String getGunLicenseNo() { + return this.gunLicenseNo; + } + + public void setGunLicenseNo(String newGunLicenseNo) { + this.gunLicenseNo = newGunLicenseNo; + } + + public String getGunLicenseRenDate() { + return this.gunLicenseRenDate; + } + + public void setGunLicenseRenDate(String newGunLicenseRenDate) { + this.gunLicenseRenDate = newGunLicenseRenDate; + } + + public String getSpouseOrganization() { + return this.spouseOrganization; + } + + public void setSpouseOrganization(String newSpouseOrganization) { + this.spouseOrganization = newSpouseOrganization; + } + + public String getSpOrgType() { + return this.spOrgType; + } + + public void setSpOrgType(String newSpOrgType) { + this.spOrgType = newSpOrgType; + } + + public String getSpTransferable() { + return this.spTransferable; + } + + public void setSpTransferable(String newSpTransferable) { + this.spTransferable = newSpTransferable; + } + + public String getClubMembership() { + return this.clubMembership; + } + + public void setClubMembership(String newClubMembership) { + this.clubMembership = newClubMembership; + } + + public String getUnionInfo() { + return this.unionInfo; + } + + public void setUnionInfo(String newUnionInfo) { + this.unionInfo = newUnionInfo; + } + + public String getUanInfo() { + return this.uanInfo; + } + + public void setUanInfo(String uanInfo) { + this.uanInfo = uanInfo; + } + + public String getAadharInfo() { + return this.aadharInfo; + } + + public void setAadharInfo(String aadharInfo) { + this.aadharInfo = aadharInfo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java new file mode 100644 index 0000000..a7a72fb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersEduDtlBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersEduDtlBean extends BaseDetailBean implements Serializable { + private String txtSrlNo; + + private String txtSchoolColInst; + + private String txtExamDegreePassed; + + private String txtPercentageDivision; + + private String txtPassYear; + + private String txtMajorSubjects; + + private String txtSpecialisation; + + private String txtOtherProfQualification; + + private String txtSpecialisedCourses; + + private String txtQualificationId; + + private String txtQualificationCode; + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getTxtSchoolColInst() { + return this.txtSchoolColInst; + } + + public void setTxtSchoolColInst(String newTxtSchoolColInst) { + this.txtSchoolColInst = newTxtSchoolColInst; + } + + public String getTxtExamDegreePassed() { + return this.txtExamDegreePassed; + } + + public void setTxtExamDegreePassed(String newTxtExamDegreePassed) { + this.txtExamDegreePassed = newTxtExamDegreePassed; + } + + public String getTxtPercentageDivision() { + return this.txtPercentageDivision; + } + + public void setTxtPercentageDivision(String newTxtPercentageDivision) { + this.txtPercentageDivision = newTxtPercentageDivision; + } + + public String getTxtPassYear() { + return this.txtPassYear; + } + + public void setTxtPassYear(String newTxtPassYear) { + this.txtPassYear = newTxtPassYear; + } + + public String getTxtMajorSubjects() { + return this.txtMajorSubjects; + } + + public void setTxtMajorSubjects(String newTxtMajorSubjects) { + this.txtMajorSubjects = newTxtMajorSubjects; + } + + public String getTxtSpecialisation() { + return this.txtSpecialisation; + } + + public void setTxtSpecialisation(String newTxtSpecialisation) { + this.txtSpecialisation = newTxtSpecialisation; + } + + public String getTxtOtherProfQualification() { + return this.txtOtherProfQualification; + } + + public void setTxtOtherProfQualification(String newTxtOtherProfQualification) { + this.txtOtherProfQualification = newTxtOtherProfQualification; + } + + public String getTxtSpecialisedCourses() { + return this.txtSpecialisedCourses; + } + + public void setTxtSpecialisedCourses(String newTxtSpecialisedCourses) { + this.txtSpecialisedCourses = newTxtSpecialisedCourses; + } + + public String getTxtQualificationId() { + return this.txtQualificationId; + } + + public void setTxtQualificationId(String newTxtQualificationId) { + this.txtQualificationId = newTxtQualificationId; + } + + public String getTxtQualificationCode() { + return this.txtQualificationCode; + } + + public void setTxtQualificationCode(String newTxtQualificationCode) { + this.txtQualificationCode = newTxtQualificationCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHdrBean.java new file mode 100644 index 0000000..612c236 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHdrBean.java @@ -0,0 +1,136 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpPersHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String checkDigit; + + String accessCardNo; + + String employeeName; + + String firstName; + + String middleName; + + String lastName; + + String draftFlag; + + String draftSave; + + String picturePath; + + private String empNumberId; + + private String visibilityFlag; + + private String mode; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getCheckDigit() { + return this.checkDigit; + } + + public void setCheckDigit(String newCheckDigit) { + this.checkDigit = newCheckDigit; + } + + public String getAccessCardNo() { + return this.accessCardNo; + } + + public void setAccessCardNo(String newAccessCardNo) { + this.accessCardNo = newAccessCardNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDraftFlag() { + return this.draftFlag; + } + + public void setDraftFlag(String newDraftFlag) { + this.draftFlag = newDraftFlag; + } + + public String getDraftSave() { + return this.draftSave; + } + + public void setDraftSave(String newDraftSave) { + this.draftSave = newDraftSave; + } + + public String getPicturePath() { + return this.picturePath; + } + + public void setPicturePath(String newPicturePath) { + this.picturePath = newPicturePath; + } + + public String getEmpNumberId() { + return this.empNumberId; + } + + public void setEmpNumberId(String newEmpNumberId) { + this.empNumberId = newEmpNumberId; + } + + public String getVisibilityFlag() { + return this.visibilityFlag; + } + + public void setVisibilityFlag(String newVisibilityFlag) { + this.visibilityFlag = newVisibilityFlag; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHealthBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHealthBean.java new file mode 100644 index 0000000..4326349 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHealthBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersHealthBean extends BaseDetailBean implements Serializable { + private String healthDtls; + + private String healthStartDate; + + private String healthEndDate; + + public String getHealthDtls() { + return this.healthDtls; + } + + public void setHealthDtls(String newHealthDtls) { + this.healthDtls = newHealthDtls; + } + + public String getHealthStartDate() { + return this.healthStartDate; + } + + public void setHealthStartDate(String newHealthStartDate) { + this.healthStartDate = newHealthStartDate; + } + + public String getHealthEndDate() { + return this.healthEndDate; + } + + public void setHealthEndDate(String newHealthEndDate) { + this.healthEndDate = newHealthEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java new file mode 100644 index 0000000..09c63cc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersHstDtlBean.java @@ -0,0 +1,156 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersHstDtlBean extends BaseDetailBean implements Serializable { + private String txtSerialNo; + + private String txtActivity; + + private String txtEffectiveDate; + + private String txtFromBasic; + + private String txtToBasic; + + private String txtFromGrade; + + private String txtToGrade; + + private String txtFromDesig; + + private String txtToDesig; + + private String txtFromDepartment; + + private String txtFromLocation; + + private String txtToLocation; + + private String txtFromDesigId; + + private String txtToDesigId; + + private String txtToDepartment; + + public String getTxtSerialNo() { + return this.txtSerialNo; + } + + public void setTxtSerialNo(String newTxtSerialNo) { + this.txtSerialNo = newTxtSerialNo; + } + + public String getTxtActivity() { + return this.txtActivity; + } + + public void setTxtActivity(String newTxtActivity) { + this.txtActivity = newTxtActivity; + } + + public String getTxtEffectiveDate() { + return this.txtEffectiveDate; + } + + public void setTxtEffectiveDate(String newTxtEffectiveDate) { + this.txtEffectiveDate = newTxtEffectiveDate; + } + + public String getTxtFromBasic() { + return this.txtFromBasic; + } + + public void setTxtFromBasic(String newTxtFromBasic) { + this.txtFromBasic = newTxtFromBasic; + } + + public String getTxtToBasic() { + return this.txtToBasic; + } + + public void setTxtToBasic(String newTxtToBasic) { + this.txtToBasic = newTxtToBasic; + } + + public String getTxtFromGrade() { + return this.txtFromGrade; + } + + public void setTxtFromGrade(String newTxtFromGrade) { + this.txtFromGrade = newTxtFromGrade; + } + + public String getTxtToGrade() { + return this.txtToGrade; + } + + public void setTxtToGrade(String newTxtToGrade) { + this.txtToGrade = newTxtToGrade; + } + + public String getTxtFromDesig() { + return this.txtFromDesig; + } + + public void setTxtFromDesig(String newTxtFromDesig) { + this.txtFromDesig = newTxtFromDesig; + } + + public String getTxtToDesig() { + return this.txtToDesig; + } + + public void setTxtToDesig(String newTxtToDesig) { + this.txtToDesig = newTxtToDesig; + } + + public String getTxtFromDepartment() { + return this.txtFromDepartment; + } + + public void setTxtFromDepartment(String newTxtFromDepartment) { + this.txtFromDepartment = newTxtFromDepartment; + } + + public String getTxtFromLocation() { + return this.txtFromLocation; + } + + public void setTxtFromLocation(String newTxtFromLocation) { + this.txtFromLocation = newTxtFromLocation; + } + + public String getTxtToLocation() { + return this.txtToLocation; + } + + public void setTxtToLocation(String newTxtToLocation) { + this.txtToLocation = newTxtToLocation; + } + + public String getTxtFromDesigId() { + return this.txtFromDesigId; + } + + public void setTxtFromDesigId(String newTxtFromDesigId) { + this.txtFromDesigId = newTxtFromDesigId; + } + + public String getTxtToDesigId() { + return this.txtToDesigId; + } + + public void setTxtToDesigId(String newTxtToDesigId) { + this.txtToDesigId = newTxtToDesigId; + } + + public String getTxtToDepartment() { + return this.txtToDepartment; + } + + public void setTxtToDepartment(String newTxtToDepartment) { + this.txtToDepartment = newTxtToDepartment; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java new file mode 100644 index 0000000..732f4be --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersInsDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersInsDtlBean extends BaseDetailBean implements Serializable { + private String invDtls; + + private String invAmount; + + private String invPolicyNo; + + private String invDate; + + public String getInvDtls() { + return this.invDtls; + } + + public void setInvDtls(String newInvDtls) { + this.invDtls = newInvDtls; + } + + public String getInvAmount() { + return this.invAmount; + } + + public void setInvAmount(String newInvAmount) { + this.invAmount = newInvAmount; + } + + public String getInvPolicyNo() { + return this.invPolicyNo; + } + + public void setInvPolicyNo(String newInvPolicyNo) { + this.invPolicyNo = newInvPolicyNo; + } + + public String getInvDate() { + return this.invDate; + } + + public void setInvDate(String newInvDate) { + this.invDate = newInvDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java new file mode 100644 index 0000000..a9fd5d3 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersJoinInfDtlBean.java @@ -0,0 +1,346 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersJoinInfDtlBean extends BaseDetailBean implements Serializable { + private String baseSiteId; + + private String entryModeCode; + + private String employeeStatusCode; + + private String separationId; + + private String costId; + + private String accSite; + + private String accSiteId; + + private String costCode; + + private String entryModeId; + + private String baseSite; + + private String empStatId; + + private String sepCode; + + private String compJoiningDate; + + private String tentativeConfDate; + + private String placeOfInitialPosting; + + private String entryMode; + + private String refNo; + + private String orderNo; + + private String orderDate; + + private String paymentType; + + private String bankCode; + + private String bankName; + + private String accountNumber; + + private String employeeStatus; + + private String statusEffectDate; + + private String retirementDate; + + private String accountingSite; + + private String separationType; + + private String costCentre; + + private String bankId; + + private String branchName; + + private String jobRespId; + + private String jobResp; + + private String disabbutjobResp; + + public String getBaseSiteId() { + return this.baseSiteId; + } + + public void setBaseSiteId(String newBaseSiteId) { + this.baseSiteId = newBaseSiteId; + } + + public String getEntryModeCode() { + return this.entryModeCode; + } + + public void setEntryModeCode(String newEntryModeCode) { + this.entryModeCode = newEntryModeCode; + } + + public String getEmployeeStatusCode() { + return this.employeeStatusCode; + } + + public void setEmployeeStatusCode(String newEmployeeStatusCode) { + this.employeeStatusCode = newEmployeeStatusCode; + } + + public String getSeparationId() { + return this.separationId; + } + + public void setSeparationId(String newSeparationId) { + this.separationId = newSeparationId; + } + + public String getCostId() { + return this.costId; + } + + public void setCostId(String newCostId) { + this.costId = newCostId; + } + + public String getAccSite() { + return this.accSite; + } + + public void setAccSite(String newAccSite) { + this.accSite = newAccSite; + } + + public String getAccSiteId() { + return this.accSiteId; + } + + public void setAccSiteId(String newAccSiteId) { + this.accSiteId = newAccSiteId; + } + + public String getCostCode() { + return this.costCode; + } + + public void setCostCode(String newCostCode) { + this.costCode = newCostCode; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String getBaseSite() { + return this.baseSite; + } + + public void setBaseSite(String newBaseSite) { + this.baseSite = newBaseSite; + } + + public String getEmpStatId() { + return this.empStatId; + } + + public void setEmpStatId(String newEmpStatId) { + this.empStatId = newEmpStatId; + } + + public String getSepCode() { + return this.sepCode; + } + + public void setSepCode(String newSepCode) { + this.sepCode = newSepCode; + } + + public String getCompJoiningDate() { + return this.compJoiningDate; + } + + public void setCompJoiningDate(String newCompJoiningDate) { + this.compJoiningDate = newCompJoiningDate; + } + + public String getTentativeConfDate() { + return this.tentativeConfDate; + } + + public void setTentativeConfDate(String newTentativeConfDate) { + this.tentativeConfDate = newTentativeConfDate; + } + + public String getPlaceOfInitialPosting() { + return this.placeOfInitialPosting; + } + + public void setPlaceOfInitialPosting(String newPlaceOfInitialPosting) { + this.placeOfInitialPosting = newPlaceOfInitialPosting; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRefNo() { + return this.refNo; + } + + public void setRefNo(String newRefNo) { + this.refNo = newRefNo; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getPaymentType() { + return this.paymentType; + } + + public void setPaymentType(String newPaymentType) { + this.paymentType = newPaymentType; + } + + public String getBankCode() { + return this.bankCode; + } + + public void setBankCode(String newBankCode) { + this.bankCode = newBankCode; + } + + public String getBankName() { + return this.bankName; + } + + public void setBankName(String newBankName) { + this.bankName = newBankName; + } + + public String getAccountNumber() { + return this.accountNumber; + } + + public void setAccountNumber(String newAccountNumber) { + this.accountNumber = newAccountNumber; + } + + public String getEmployeeStatus() { + return this.employeeStatus; + } + + public void setEmployeeStatus(String newEmployeeStatus) { + this.employeeStatus = newEmployeeStatus; + } + + public String getStatusEffectDate() { + return this.statusEffectDate; + } + + public void setStatusEffectDate(String newStatusEffectDate) { + this.statusEffectDate = newStatusEffectDate; + } + + public String getRetirementDate() { + return this.retirementDate; + } + + public void setRetirementDate(String newRetirementDate) { + this.retirementDate = newRetirementDate; + } + + public String getAccountingSite() { + return this.accountingSite; + } + + public void setAccountingSite(String newAccountingSite) { + this.accountingSite = newAccountingSite; + } + + public String getSeparationType() { + return this.separationType; + } + + public void setSeparationType(String newSeparationType) { + this.separationType = newSeparationType; + } + + public String getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String newCostCentre) { + this.costCentre = newCostCentre; + } + + public String getBankId() { + return this.bankId; + } + + public void setBankId(String newBankId) { + this.bankId = newBankId; + } + + public String getBranchName() { + return this.branchName; + } + + public void setBranchName(String newBranchName) { + this.branchName = newBranchName; + } + + public String getJobRespId() { + return this.jobRespId; + } + + public void setJobRespId(String newJobRespId) { + this.jobRespId = newJobRespId; + } + + public String getJobResp() { + return this.jobResp; + } + + public void setJobResp(String newJobResp) { + this.jobResp = newJobResp; + } + + public String getDisabbutjobResp() { + return this.disabbutjobResp; + } + + public void setDisabbutjobResp(String newDisabbutjobResp) { + this.disabbutjobResp = newDisabbutjobResp; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java new file mode 100644 index 0000000..46e2481 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersLngDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersLngDtlBean extends BaseDetailBean implements Serializable { + private String lngName; + + private String lngSpeak; + + private String lngRead; + + private String lngWrite; + + public String getLngName() { + return this.lngName; + } + + public void setLngName(String newLngName) { + this.lngName = newLngName; + } + + public String getLngSpeak() { + return this.lngSpeak; + } + + public void setLngSpeak(String newLngSpeak) { + this.lngSpeak = newLngSpeak; + } + + public String getLngRead() { + return this.lngRead; + } + + public void setLngRead(String newLngRead) { + this.lngRead = newLngRead; + } + + public String getLngWrite() { + return this.lngWrite; + } + + public void setLngWrite(String newLngWrite) { + this.lngWrite = newLngWrite; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java new file mode 100644 index 0000000..1d9c0ae --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPFDtlBean.java @@ -0,0 +1,96 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersPFDtlBean extends BaseDetailBean implements Serializable { + String txtRelation; + + String txtNomineeName; + + String txtPercentage; + + String txtRelationId; + + private String txtNomineeId; + + private String txtDob; + + private String txtAddress; + + private String txtTotalAmount; + + private String txtMinorDetails; + + public String getTxtRelation() { + return this.txtRelation; + } + + public void setTxtRelation(String newTxtRelation) { + this.txtRelation = newTxtRelation; + } + + public String getTxtNomineeName() { + return this.txtNomineeName; + } + + public void setTxtNomineeName(String newTxtNomineeName) { + this.txtNomineeName = newTxtNomineeName; + } + + public String getTxtPercentage() { + return this.txtPercentage; + } + + public void setTxtPercentage(String newTxtPercentage) { + this.txtPercentage = newTxtPercentage; + } + + public String getTxtRelationId() { + return this.txtRelationId; + } + + public void setTxtRelationId(String newTxtRelationId) { + this.txtRelationId = newTxtRelationId; + } + + public String getTxtNomineeId() { + return this.txtNomineeId; + } + + public void setTxtNomineeId(String newTxtNomineeId) { + this.txtNomineeId = newTxtNomineeId; + } + + public String getTxtDob() { + return this.txtDob; + } + + public void setTxtDob(String newTxtDob) { + this.txtDob = newTxtDob; + } + + public String getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String getTxtTotalAmount() { + return this.txtTotalAmount; + } + + public void setTxtTotalAmount(String newTxtTotalAmount) { + this.txtTotalAmount = newTxtTotalAmount; + } + + public String getTxtMinorDetails() { + return this.txtMinorDetails; + } + + public void setTxtMinorDetails(String newTxtMinorDetails) { + this.txtMinorDetails = newTxtMinorDetails; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java new file mode 100644 index 0000000..82d5ce2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersPriorExpDtlBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersPriorExpDtlBean extends BaseDetailBean implements Serializable { + private String txtOrgName; + + private String txtOrgAdd; + + private String txtFromDate; + + private String txtToDate; + + private String txtWorkExp; + + private String txtDesignation; + + private String txtReportTo; + + private String txtJobDesc; + + private String txtPersonnelSupervised; + + private String txtSalStarting; + + private String txtSalLeaving; + + private String txtBasic; + + private String txtDa; + + private String txtHra; + + private String txtConveyance; + + private String txtOtherAllowance; + + private String txtBonus; + + private String txtIncentives; + + public String getTxtOrgName() { + return this.txtOrgName; + } + + public void setTxtOrgName(String newTxtOrgName) { + this.txtOrgName = newTxtOrgName; + } + + public String getTxtOrgAdd() { + return this.txtOrgAdd; + } + + public void setTxtOrgAdd(String newTxtOrgAdd) { + this.txtOrgAdd = newTxtOrgAdd; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtWorkExp() { + return this.txtWorkExp; + } + + public void setTxtWorkExp(String newTxtWorkExp) { + this.txtWorkExp = newTxtWorkExp; + } + + public String getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String getTxtReportTo() { + return this.txtReportTo; + } + + public void setTxtReportTo(String newTxtReportTo) { + this.txtReportTo = newTxtReportTo; + } + + public String getTxtJobDesc() { + return this.txtJobDesc; + } + + public void setTxtJobDesc(String newTxtJobDesc) { + this.txtJobDesc = newTxtJobDesc; + } + + public String getTxtPersonnelSupervised() { + return this.txtPersonnelSupervised; + } + + public void setTxtPersonnelSupervised(String newTxtPersonnelSupervised) { + this.txtPersonnelSupervised = newTxtPersonnelSupervised; + } + + public String getTxtSalStarting() { + return this.txtSalStarting; + } + + public void setTxtSalStarting(String newTxtSalStarting) { + this.txtSalStarting = newTxtSalStarting; + } + + public String getTxtSalLeaving() { + return this.txtSalLeaving; + } + + public void setTxtSalLeaving(String newTxtSalLeaving) { + this.txtSalLeaving = newTxtSalLeaving; + } + + public String getTxtBasic() { + return this.txtBasic; + } + + public void setTxtBasic(String newTxtBasic) { + this.txtBasic = newTxtBasic; + } + + public String getTxtDa() { + return this.txtDa; + } + + public void setTxtDa(String newTxtDa) { + this.txtDa = newTxtDa; + } + + public String getTxtHra() { + return this.txtHra; + } + + public void setTxtHra(String newTxtHra) { + this.txtHra = newTxtHra; + } + + public String getTxtConveyance() { + return this.txtConveyance; + } + + public void setTxtConveyance(String newTxtConveyance) { + this.txtConveyance = newTxtConveyance; + } + + public String getTxtOtherAllowance() { + return this.txtOtherAllowance; + } + + public void setTxtOtherAllowance(String newTxtOtherAllowance) { + this.txtOtherAllowance = newTxtOtherAllowance; + } + + public String getTxtBonus() { + return this.txtBonus; + } + + public void setTxtBonus(String newTxtBonus) { + this.txtBonus = newTxtBonus; + } + + public String getTxtIncentives() { + return this.txtIncentives; + } + + public void setTxtIncentives(String newTxtIncentives) { + this.txtIncentives = newTxtIncentives; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java new file mode 100644 index 0000000..e71e223 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersRefDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersRefDtlBean extends BaseDetailBean implements Serializable { + String txtName; + + String txtAddress; + + private String txtTelephoneNo; + + String txtPositionOccupation; + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String getTxtTelephoneNo() { + return this.txtTelephoneNo; + } + + public void setTxtTelephoneNo(String newTxtTelephoneNo) { + this.txtTelephoneNo = newTxtTelephoneNo; + } + + public String getTxtPositionOccupation() { + return this.txtPositionOccupation; + } + + public void setTxtPositionOccupation(String newTxtPositionOccupation) { + this.txtPositionOccupation = newTxtPositionOccupation; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java new file mode 100644 index 0000000..1ac8cac --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpPersTrngDtlsDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpPersTrngDtlsDtlBean extends BaseDetailBean implements Serializable { + String txtCourseName; + + String txtFromDate; + + String txtToDate; + + String txtCalendarName; + + String txtRating; + + String txtParticipation; + + String txtNonPart; + + private String txtNameOfInst; + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtCalendarName() { + return this.txtCalendarName; + } + + public void setTxtCalendarName(String newTxtCalendarName) { + this.txtCalendarName = newTxtCalendarName; + } + + public String getTxtRating() { + return this.txtRating; + } + + public void setTxtRating(String newTxtRating) { + this.txtRating = newTxtRating; + } + + public String getTxtParticipation() { + return this.txtParticipation; + } + + public void setTxtParticipation(String newTxtParticipation) { + this.txtParticipation = newTxtParticipation; + } + + public String getTxtNonPart() { + return this.txtNonPart; + } + + public void setTxtNonPart(String newTxtNonPart) { + this.txtNonPart = newTxtNonPart; + } + + public String getTxtNameOfInst() { + return this.txtNameOfInst; + } + + public void setTxtNameOfInst(String newTxtNameOfInst) { + this.txtNameOfInst = newTxtNameOfInst; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java new file mode 100644 index 0000000..7ef2b1f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpTransCnclApplHdrBean.java @@ -0,0 +1,276 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmEmpTransCnclApplHdrBean extends BaseHeaderBean implements Serializable { + private String applnNo; + + private String applnDate; + + private String empNo; + + private String empName; + + private String generatedBy; + + private String ofcNoteNo; + + private String ofcNoteDate; + + private String cancelDeferFlag; + + private String defermentPeriod; + + private String deferredDate; + + private String reason; + + private String deferredStatus; + + private String orderNo; + + private String trnOrderType; + + private String fromSite; + + private String toSite; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String fromDesignation; + + private String toDesignation; + + String applnNoId; + + String ofcNoteId; + + String employeeNoId; + + String orderDtlId; + + String orderDate; + + String effectDate; + + String empId; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getGeneratedBy() { + return this.generatedBy; + } + + public void setGeneratedBy(String newGeneratedBy) { + this.generatedBy = newGeneratedBy; + } + + public String getOfcNoteNo() { + return this.ofcNoteNo; + } + + public void setOfcNoteNo(String newOfcNoteNo) { + this.ofcNoteNo = newOfcNoteNo; + } + + public String getOfcNoteDate() { + return this.ofcNoteDate; + } + + public void setOfcNoteDate(String newOfcNoteDate) { + this.ofcNoteDate = newOfcNoteDate; + } + + public String getCancelDeferFlag() { + return this.cancelDeferFlag; + } + + public void setCancelDeferFlag(String newCancelDeferFlag) { + this.cancelDeferFlag = newCancelDeferFlag; + } + + public String getDefermentPeriod() { + return this.defermentPeriod; + } + + public void setDefermentPeriod(String newDefermentPeriod) { + this.defermentPeriod = newDefermentPeriod; + } + + public String getDeferredDate() { + return this.deferredDate; + } + + public void setDeferredDate(String newDeferredDate) { + this.deferredDate = newDeferredDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getDeferredStatus() { + return this.deferredStatus; + } + + public void setDeferredStatus(String newDeferredStatus) { + this.deferredStatus = newDeferredStatus; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getTrnOrderType() { + return this.trnOrderType; + } + + public void setTrnOrderType(String newTrnOrderType) { + this.trnOrderType = newTrnOrderType; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getOfcNoteId() { + return this.ofcNoteId; + } + + public void setOfcNoteId(String newOfcNoteId) { + this.ofcNoteId = newOfcNoteId; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getOrderDtlId() { + return this.orderDtlId; + } + + public void setOrderDtlId(String newOrderDtlId) { + this.orderDtlId = newOrderDtlId; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getEffectDate() { + return this.effectDate; + } + + public void setEffectDate(String newEffectDate) { + this.effectDate = newEffectDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java new file mode 100644 index 0000000..52d8c46 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmEmpWrkgrpDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmEmpWrkgrpDtlBean extends BaseDetailBean implements Serializable { + private String id; + + private String name; + + private String reportingEmpId; + + private String empNo; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java new file mode 100644 index 0000000..11576c6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmGenEligRuleHdrBean extends BaseHeaderBean implements Serializable { + private String eligSql; + + private String formula; + + private String documentType; + + private String hidDocumentCodeId; + + private String documentCode; + + private String hidAction; + + public String getEligSql() { + return this.eligSql; + } + + public void setEligSql(String newEligSql) { + this.eligSql = newEligSql; + } + + public String getFormula() { + return this.formula; + } + + public void setFormula(String newFormula) { + this.formula = newFormula; + } + + public String getDocumentType() { + return this.documentType; + } + + public void setDocumentType(String newDocumentType) { + this.documentType = newDocumentType; + } + + public String getHidDocumentCodeId() { + return this.hidDocumentCodeId; + } + + public void setHidDocumentCodeId(String newHidDocumentCodeId) { + this.hidDocumentCodeId = newHidDocumentCodeId; + } + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getHidAction() { + return this.hidAction; + } + + public void setHidAction(String newHidAction) { + this.hidAction = newHidAction; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java new file mode 100644 index 0000000..47d9b39 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmGenEligRuleQueryDtlBean extends BaseDetailBean implements Serializable { + private String txtdocCode; + + private String txteligSql; + + private String disabtxtdocCode; + + private String disabtxteligSql; + + public String getTxtdocCode() { + return this.txtdocCode; + } + + public void setTxtdocCode(String newTxtdocCode) { + this.txtdocCode = newTxtdocCode; + } + + public String getTxteligSql() { + return this.txteligSql; + } + + public void setTxteligSql(String newTxteligSql) { + this.txteligSql = newTxteligSql; + } + + public String getDisabtxtdocCode() { + return this.disabtxtdocCode; + } + + public void setDisabtxtdocCode(String newDisabtxtdocCode) { + this.disabtxtdocCode = newDisabtxtdocCode; + } + + public String getDisabtxteligSql() { + return this.disabtxteligSql; + } + + public void setDisabtxteligSql(String newDisabtxteligSql) { + this.disabtxteligSql = newDisabtxteligSql; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java new file mode 100644 index 0000000..1250e36 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenEligRuleQueryHdrBean.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmGenEligRuleQueryHdrBean extends BaseHeaderBean implements Serializable { + private String docType; + + public String getDocType() { + return this.docType; + } + + public void setDocType(String newDocType) { + this.docType = newDocType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java new file mode 100644 index 0000000..608e014 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmGenGenerateFormulaHdrBean.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; + +public class HrmGenGenerateFormulaHdrBean implements Serializable { + private String txtParameterCode; + + private String txtParameterDescription; + + public String getTxtParameterCode() { + return this.txtParameterCode; + } + + public void setTxtParameterCode(String newTxtParameterCode) { + this.txtParameterCode = newTxtParameterCode; + } + + public String getTxtParameterDescription() { + return this.txtParameterDescription; + } + + public void setTxtParameterDescription(String newTxtParameterDescription) { + this.txtParameterDescription = newTxtParameterDescription; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppDtlBean.java new file mode 100644 index 0000000..b48c3a5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppDtlBean.java @@ -0,0 +1,226 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnAppDtlBean extends BaseDetailBean implements Serializable { + private String propertyPrice; + + private String eligibleAmount; + + private String appliedAmount; + + private String applnDate; + + private String sanctionDate; + + private String noOfInstallment; + + private String fullyRepaid; + + private String firstInstDate; + + private String approvedFlag; + + private String reason; + + private String remarks; + + private String percProperty; + + private String disabappliedAmount; + + private String disabbutApplnDate; + + private String disabpropertyPrice; + + private String disabpercProperty; + + private String disabbutSanctionDate; + + private String disabnoOfInstallment; + + private String disabbutFirstInstDate; + + private String disabreason; + + private String disabremarks; + + private String sanctionedAmount; + + public String getPropertyPrice() { + return this.propertyPrice; + } + + public void setPropertyPrice(String newPropertyPrice) { + this.propertyPrice = newPropertyPrice; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getAppliedAmount() { + return this.appliedAmount; + } + + public void setAppliedAmount(String newAppliedAmount) { + this.appliedAmount = newAppliedAmount; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getNoOfInstallment() { + return this.noOfInstallment; + } + + public void setNoOfInstallment(String newNoOfInstallment) { + this.noOfInstallment = newNoOfInstallment; + } + + public String getFullyRepaid() { + return this.fullyRepaid; + } + + public void setFullyRepaid(String newFullyRepaid) { + this.fullyRepaid = newFullyRepaid; + } + + public String getFirstInstDate() { + return this.firstInstDate; + } + + public void setFirstInstDate(String newFirstInstDate) { + this.firstInstDate = newFirstInstDate; + } + + public String getApprovedFlag() { + return this.approvedFlag; + } + + public void setApprovedFlag(String newApprovedFlag) { + this.approvedFlag = newApprovedFlag; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getPercProperty() { + return this.percProperty; + } + + public void setPercProperty(String newPercProperty) { + this.percProperty = newPercProperty; + } + + public String getDisabappliedAmount() { + return this.disabappliedAmount; + } + + public void setDisabappliedAmount(String newDisabappliedAmount) { + this.disabappliedAmount = newDisabappliedAmount; + } + + public String getDisabbutApplnDate() { + return this.disabbutApplnDate; + } + + public void setDisabbutApplnDate(String newDisabbutApplnDate) { + this.disabbutApplnDate = newDisabbutApplnDate; + } + + public String getDisabpropertyPrice() { + return this.disabpropertyPrice; + } + + public void setDisabpropertyPrice(String newDisabpropertyPrice) { + this.disabpropertyPrice = newDisabpropertyPrice; + } + + public String getDisabpercProperty() { + return this.disabpercProperty; + } + + public void setDisabpercProperty(String newDisabpercProperty) { + this.disabpercProperty = newDisabpercProperty; + } + + public String getDisabbutSanctionDate() { + return this.disabbutSanctionDate; + } + + public void setDisabbutSanctionDate(String newDisabbutSanctionDate) { + this.disabbutSanctionDate = newDisabbutSanctionDate; + } + + public String getDisabnoOfInstallment() { + return this.disabnoOfInstallment; + } + + public void setDisabnoOfInstallment(String newDisabnoOfInstallment) { + this.disabnoOfInstallment = newDisabnoOfInstallment; + } + + public String getDisabbutFirstInstDate() { + return this.disabbutFirstInstDate; + } + + public void setDisabbutFirstInstDate(String newDisabbutFirstInstDate) { + this.disabbutFirstInstDate = newDisabbutFirstInstDate; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppHdrBean.java new file mode 100644 index 0000000..d09e389 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppHdrBean.java @@ -0,0 +1,566 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLnAppHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String loanCode; + + private String middleName; + + private String lastName; + + private String loanDesc; + + private String loanCodeId; + + private String designation; + + private String empId; + + private String eligibleAmount; + + private String appliedAmount; + + private String applnDate; + + private String sanctionDate; + + private String noOfInstallment; + + private String fullyRepaid; + + private String reason; + + private String remarks; + + private String sanctionedAmount; + + private String interestBalance; + + private String principalBalance; + + private String totalBalance; + + private String interestPaid; + + private String principalPaid; + + private String totalAmountPaid; + + private String noOfInstInterestPaid; + + private String noOfInstPrincipalPaid; + + private String noOfInstPaid; + + private String approverName; + + private String approverNoId; + + private String instAmount; + + private String totalInterestInst; + + private String totalPrincipalInst; + + private String totalInst; + + private String payrollMonth; + + private String loanDetails; + + private String location; + + private String grade; + + private String hblAppliedFor; + + private String hblBranhConst; + + private String hblDocSubmitted; + + private String hblCity; + + private String hblPO; + + private String hblDistrict; + + private String hblMouza; + + private String hblKhatian; + + private String hblDag; + + private String hblNoOfDeed; + + private String hblParentDeed; + + private String hblVolOfDeed; + + private String hblBookNo; + + private String hblPageNo; + + private String hblRegisteredAt; + + private String bulkAmount; + + private String mode; + + private String bulkFlag; + + private String bulkPaymentDate; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getLoanDesc() { + return this.loanDesc; + } + + public void setLoanDesc(String newLoanDesc) { + this.loanDesc = newLoanDesc; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getAppliedAmount() { + return this.appliedAmount; + } + + public void setAppliedAmount(String newAppliedAmount) { + this.appliedAmount = newAppliedAmount; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getNoOfInstallment() { + return this.noOfInstallment; + } + + public void setNoOfInstallment(String newNoOfInstallment) { + this.noOfInstallment = newNoOfInstallment; + } + + public String getFullyRepaid() { + return this.fullyRepaid; + } + + public void setFullyRepaid(String newFullyRepaid) { + this.fullyRepaid = newFullyRepaid; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getInterestBalance() { + return this.interestBalance; + } + + public void setInterestBalance(String newInterestBalance) { + this.interestBalance = newInterestBalance; + } + + public String getPrincipalBalance() { + return this.principalBalance; + } + + public void setPrincipalBalance(String newPrincipalBalance) { + this.principalBalance = newPrincipalBalance; + } + + public String getTotalBalance() { + return this.totalBalance; + } + + public void setTotalBalance(String newTotalBalance) { + this.totalBalance = newTotalBalance; + } + + public String getInterestPaid() { + return this.interestPaid; + } + + public void setInterestPaid(String newInterestPaid) { + this.interestPaid = newInterestPaid; + } + + public String getPrincipalPaid() { + return this.principalPaid; + } + + public void setPrincipalPaid(String newPrincipalPaid) { + this.principalPaid = newPrincipalPaid; + } + + public String getTotalAmountPaid() { + return this.totalAmountPaid; + } + + public void setTotalAmountPaid(String newTotalAmountPaid) { + this.totalAmountPaid = newTotalAmountPaid; + } + + public String getNoOfInstInterestPaid() { + return this.noOfInstInterestPaid; + } + + public void setNoOfInstInterestPaid(String newNoOfInstInterestPaid) { + this.noOfInstInterestPaid = newNoOfInstInterestPaid; + } + + public String getNoOfInstPrincipalPaid() { + return this.noOfInstPrincipalPaid; + } + + public void setNoOfInstPrincipalPaid(String newNoOfInstPrincipalPaid) { + this.noOfInstPrincipalPaid = newNoOfInstPrincipalPaid; + } + + public String getNoOfInstPaid() { + return this.noOfInstPaid; + } + + public void setNoOfInstPaid(String newNoOfInstPaid) { + this.noOfInstPaid = newNoOfInstPaid; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getInstAmount() { + return this.instAmount; + } + + public void setInstAmount(String newInstAmount) { + this.instAmount = newInstAmount; + } + + public String getTotalInterestInst() { + return this.totalInterestInst; + } + + public void setTotalInterestInst(String newTotalInterestInst) { + this.totalInterestInst = newTotalInterestInst; + } + + public String getTotalPrincipalInst() { + return this.totalPrincipalInst; + } + + public void setTotalPrincipalInst(String newTotalPrincipalInst) { + this.totalPrincipalInst = newTotalPrincipalInst; + } + + public String getTotalInst() { + return this.totalInst; + } + + public void setTotalInst(String newTotalInst) { + this.totalInst = newTotalInst; + } + + public String getPayrollMonth() { + return this.payrollMonth; + } + + public void setPayrollMonth(String newPayrollMonth) { + this.payrollMonth = newPayrollMonth; + } + + public String getLoanDetails() { + return this.loanDetails; + } + + public void setLoanDetails(String newLoanDetails) { + this.loanDetails = newLoanDetails; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getHblAppliedFor() { + return this.hblAppliedFor; + } + + public void setHblAppliedFor(String newHblAppliedFor) { + this.hblAppliedFor = newHblAppliedFor; + } + + public String getHblBranhConst() { + return this.hblBranhConst; + } + + public void setHblBranhConst(String newHblBranhConst) { + this.hblBranhConst = newHblBranhConst; + } + + public String getHblDocSubmitted() { + return this.hblDocSubmitted; + } + + public void setHblDocSubmitted(String newHblDocSubmitted) { + this.hblDocSubmitted = newHblDocSubmitted; + } + + public String getHblCity() { + return this.hblCity; + } + + public void setHblCity(String newHblCity) { + this.hblCity = newHblCity; + } + + public String getHblPO() { + return this.hblPO; + } + + public void setHblPO(String newHblPO) { + this.hblPO = newHblPO; + } + + public String getHblDistrict() { + return this.hblDistrict; + } + + public void setHblDistrict(String newHblDistrict) { + this.hblDistrict = newHblDistrict; + } + + public String getHblMouza() { + return this.hblMouza; + } + + public void setHblMouza(String newHblMouza) { + this.hblMouza = newHblMouza; + } + + public String getHblKhatian() { + return this.hblKhatian; + } + + public void setHblKhatian(String newHblKhatian) { + this.hblKhatian = newHblKhatian; + } + + public String getHblDag() { + return this.hblDag; + } + + public void setHblDag(String newHblDag) { + this.hblDag = newHblDag; + } + + public String getHblNoOfDeed() { + return this.hblNoOfDeed; + } + + public void setHblNoOfDeed(String newHblNoOfDeed) { + this.hblNoOfDeed = newHblNoOfDeed; + } + + public String getHblParentDeed() { + return this.hblParentDeed; + } + + public void setHblParentDeed(String newHblParentDeed) { + this.hblParentDeed = newHblParentDeed; + } + + public String getHblVolOfDeed() { + return this.hblVolOfDeed; + } + + public void setHblVolOfDeed(String newHblVolOfDeed) { + this.hblVolOfDeed = newHblVolOfDeed; + } + + public String getHblBookNo() { + return this.hblBookNo; + } + + public void setHblBookNo(String newHblBookNo) { + this.hblBookNo = newHblBookNo; + } + + public String getHblPageNo() { + return this.hblPageNo; + } + + public void setHblPageNo(String newHblPageNo) { + this.hblPageNo = newHblPageNo; + } + + public String getHblRegisteredAt() { + return this.hblRegisteredAt; + } + + public void setHblRegisteredAt(String newHblRegisteredAt) { + this.hblRegisteredAt = newHblRegisteredAt; + } + + public String getBulkAmount() { + return this.bulkAmount; + } + + public void setBulkAmount(String newBulkAmount) { + this.bulkAmount = newBulkAmount; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } + + public String getBulkFlag() { + return this.bulkFlag; + } + + public void setBulkFlag(String newBulkFlag) { + this.bulkFlag = newBulkFlag; + } + + public String getBulkPaymentDate() { + return this.bulkPaymentDate; + } + + public void setBulkPaymentDate(String newBulkPaymentDate) { + this.bulkPaymentDate = newBulkPaymentDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java new file mode 100644 index 0000000..e620789 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnAppRepayDtlBean.java @@ -0,0 +1,3 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +public class HrmLnAppRepayDtlBean {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartDtlBean.java new file mode 100644 index 0000000..771b735 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnChartDtlBean extends BaseDetailBean implements Serializable { + private String txtLoanAmt; + + private String txtNumberOfInstallments; + + private String txtPrincipal; + + private String txtInterest; + + private String txtEqualMonthlyInstallment; + + public String getTxtLoanAmt() { + return this.txtLoanAmt; + } + + public void setTxtLoanAmt(String newTxtLoanAmt) { + this.txtLoanAmt = newTxtLoanAmt; + } + + public String getTxtNumberOfInstallments() { + return this.txtNumberOfInstallments; + } + + public void setTxtNumberOfInstallments(String newTxtNumberOfInstallments) { + this.txtNumberOfInstallments = newTxtNumberOfInstallments; + } + + public String getTxtPrincipal() { + return this.txtPrincipal; + } + + public void setTxtPrincipal(String newTxtPrincipal) { + this.txtPrincipal = newTxtPrincipal; + } + + public String getTxtInterest() { + return this.txtInterest; + } + + public void setTxtInterest(String newTxtInterest) { + this.txtInterest = newTxtInterest; + } + + public String getTxtEqualMonthlyInstallment() { + return this.txtEqualMonthlyInstallment; + } + + public void setTxtEqualMonthlyInstallment(String newTxtEqualMonthlyInstallment) { + this.txtEqualMonthlyInstallment = newTxtEqualMonthlyInstallment; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartHdrBean.java new file mode 100644 index 0000000..63e33e5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnChartHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLnChartHdrBean extends BaseHeaderBean implements Serializable { + private String chartName; + + private String chartId; + + private String effectiveFromDate; + + private String effectiveToDate; + + private String interestRate; + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getEffectiveFromDate() { + return this.effectiveFromDate; + } + + public void setEffectiveFromDate(String newEffectiveFromDate) { + this.effectiveFromDate = newEffectiveFromDate; + } + + public String getEffectiveToDate() { + return this.effectiveToDate; + } + + public void setEffectiveToDate(String newEffectiveToDate) { + this.effectiveToDate = newEffectiveToDate; + } + + public String getInterestRate() { + return this.interestRate; + } + + public void setInterestRate(String newInterestRate) { + this.interestRate = newInterestRate; + } + + public String getChartId() { + return this.chartId; + } + + public void setChartId(String newChartId) { + this.chartId = newChartId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnDisDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnDisDtlBean.java new file mode 100644 index 0000000..c431006 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnDisDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnDisDtlBean extends BaseDetailBean implements Serializable { + private String tentativeDisDate; + + private String tentativeAmt; + + private String actDisDate; + + private String actDisAmt; + + private String disabbutActDisDate; + + public String getTentativeDisDate() { + return this.tentativeDisDate; + } + + public void setTentativeDisDate(String newTentativeDisDate) { + this.tentativeDisDate = newTentativeDisDate; + } + + public String getTentativeAmt() { + return this.tentativeAmt; + } + + public void setTentativeAmt(String newTentativeAmt) { + this.tentativeAmt = newTentativeAmt; + } + + public String getActDisDate() { + return this.actDisDate; + } + + public void setActDisDate(String newActDisDate) { + this.actDisDate = newActDisDate; + } + + public String getActDisAmt() { + return this.actDisAmt; + } + + public void setActDisAmt(String newActDisAmt) { + this.actDisAmt = newActDisAmt; + } + + public String getDisabbutActDisDate() { + return this.disabbutActDisDate; + } + + public void setDisabbutActDisDate(String newDisabbutActDisDate) { + this.disabbutActDisDate = newDisabbutActDisDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java new file mode 100644 index 0000000..7ed3fad --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnHblIntDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnHblIntDtlBean extends BaseDetailBean implements Serializable { + private String txtFromAmount; + + private String txtToAmount; + + private String txtPercentage; + + public String getTxtFromAmount() { + return this.txtFromAmount; + } + + public void setTxtFromAmount(String newTxtFromAmount) { + this.txtFromAmount = newTxtFromAmount; + } + + public String getTxtToAmount() { + return this.txtToAmount; + } + + public void setTxtToAmount(String newTxtToAmount) { + this.txtToAmount = newTxtToAmount; + } + + public String getTxtPercentage() { + return this.txtPercentage; + } + + public void setTxtPercentage(String newTxtPercentage) { + this.txtPercentage = newTxtPercentage; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstDtlBean.java new file mode 100644 index 0000000..c1427e6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstDtlBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLnMstDtlBean extends BaseDetailBean implements Serializable { + private String txtLoanDetailCode; + + private String txtGreaterLessNotApplicable; + + private String txtMaxLimit; + + private String txtMaximumLoanPerc; + + private String txtNoOfMonthsSalary; + + private String txtCompanyPolicyStDate; + + private boolean txtAppliedToAllEmployee; + + String txtCompanyPolicyToDate; + + String allEmployeeApplicable = "N"; + + private String txtMinYrsOfServiceToBeCompleted; + + private String txtMinYrsOfRemainingService; + + public String getTxtLoanDetailCode() { + return this.txtLoanDetailCode; + } + + public void setTxtLoanDetailCode(String newTxtLoanDetailCode) { + this.txtLoanDetailCode = newTxtLoanDetailCode; + } + + public String getTxtGreaterLessNotApplicable() { + return this.txtGreaterLessNotApplicable; + } + + public void setTxtGreaterLessNotApplicable(String newTxtGreaterLessNotApplicable) { + this.txtGreaterLessNotApplicable = newTxtGreaterLessNotApplicable; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String getTxtMaximumLoanPerc() { + return this.txtMaximumLoanPerc; + } + + public void setTxtMaximumLoanPerc(String newTxtMaximumLoanPerc) { + this.txtMaximumLoanPerc = newTxtMaximumLoanPerc; + } + + public String getTxtNoOfMonthsSalary() { + return this.txtNoOfMonthsSalary; + } + + public void setTxtNoOfMonthsSalary(String newTxtNoOfMonthsSalary) { + this.txtNoOfMonthsSalary = newTxtNoOfMonthsSalary; + } + + public String getTxtCompanyPolicyStDate() { + return this.txtCompanyPolicyStDate; + } + + public void setTxtCompanyPolicyStDate(String newTxtCompanyPolicyStDate) { + this.txtCompanyPolicyStDate = newTxtCompanyPolicyStDate; + } + + public boolean getTxtAppliedToAllEmployee() { + return this.txtAppliedToAllEmployee; + } + + public void setTxtAppliedToAllEmployee(boolean newTxtAppliedToAllEmployee) { + this.txtAppliedToAllEmployee = newTxtAppliedToAllEmployee; + } + + public String getTxtCompanyPolicyToDate() { + return this.txtCompanyPolicyToDate; + } + + public void setTxtCompanyPolicyToDate(String newTxtCompanyPolicyToDate) { + this.txtCompanyPolicyToDate = newTxtCompanyPolicyToDate; + } + + public String getAllEmployeeApplicable() { + return this.allEmployeeApplicable; + } + + public void setAllEmployeeApplicable(String newAllEmployeeApplicable) { + this.allEmployeeApplicable = newAllEmployeeApplicable; + } + + public String getTxtMinYrsOfServiceToBeCompleted() { + return this.txtMinYrsOfServiceToBeCompleted; + } + + public void setTxtMinYrsOfServiceToBeCompleted(String newTxtMinYrsOfServiceToBeCompleted) { + this.txtMinYrsOfServiceToBeCompleted = newTxtMinYrsOfServiceToBeCompleted; + } + + public String getTxtMinYrsOfRemainingService() { + return this.txtMinYrsOfRemainingService; + } + + public void setTxtMinYrsOfRemainingService(String newTxtMinYrsOfRemainingService) { + this.txtMinYrsOfRemainingService = newTxtMinYrsOfRemainingService; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstHdrBean.java new file mode 100644 index 0000000..e05004c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLnMstHdrBean.java @@ -0,0 +1,126 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLnMstHdrBean extends BaseHeaderBean implements Serializable { + private String chartNameId; + + private String loanCodeId; + + private String loanCode; + + private String loanName; + + private String interestTaxRebate; + + private String typeOfInterest; + + private String repaymentUnits; + + private String settledAutoFrmSalary; + + private String principalTaxRebate; + + private String chartName; + + private String penaltyPercInterest; + + private String natureOfPayment; + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getLoanName() { + return this.loanName; + } + + public void setLoanName(String newLoanName) { + this.loanName = newLoanName; + } + + public String getInterestTaxRebate() { + return this.interestTaxRebate; + } + + public void setInterestTaxRebate(String newInterestTaxRebate) { + this.interestTaxRebate = newInterestTaxRebate; + } + + public String getTypeOfInterest() { + return this.typeOfInterest; + } + + public void setTypeOfInterest(String newTypeOfInterest) { + this.typeOfInterest = newTypeOfInterest; + } + + public String getRepaymentUnits() { + return this.repaymentUnits; + } + + public void setRepaymentUnits(String newRepaymentUnits) { + this.repaymentUnits = newRepaymentUnits; + } + + public String getSettledAutoFrmSalary() { + return this.settledAutoFrmSalary; + } + + public void setSettledAutoFrmSalary(String newSettledAutoFrmSalary) { + this.settledAutoFrmSalary = newSettledAutoFrmSalary; + } + + public String getPrincipalTaxRebate() { + return this.principalTaxRebate; + } + + public void setPrincipalTaxRebate(String newPrincipalTaxRebate) { + this.principalTaxRebate = newPrincipalTaxRebate; + } + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getPenaltyPercInterest() { + return this.penaltyPercInterest; + } + + public void setPenaltyPercInterest(String newPenaltyPercInterest) { + this.penaltyPercInterest = newPenaltyPercInterest; + } + + public String getNatureOfPayment() { + return this.natureOfPayment; + } + + public void setNatureOfPayment(String newNatureOfPayment) { + this.natureOfPayment = newNatureOfPayment; + } + + public String getChartNameId() { + return this.chartNameId; + } + + public void setChartNameId(String newChartNameId) { + this.chartNameId = newChartNameId; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnDtlBean.java new file mode 100644 index 0000000..e36c351 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvApplnDtlBean extends BaseDetailBean implements Serializable { + private String txtDate; + + private String txtHolidayFlag; + + private String txtHalfDayFlag; + + private String disabtxtDate; + + private String disabtxtHolidayFlag; + + private String disabtxtHalfDayFlag; + + public String getTxtDate() { + return this.txtDate; + } + + public void setTxtDate(String newTxtDate) { + this.txtDate = newTxtDate; + } + + public String getTxtHolidayFlag() { + return this.txtHolidayFlag; + } + + public void setTxtHolidayFlag(String newTxtHolidayFlag) { + this.txtHolidayFlag = newTxtHolidayFlag; + } + + public String getTxtHalfDayFlag() { + return this.txtHalfDayFlag; + } + + public void setTxtHalfDayFlag(String newTxtHalfDayFlag) { + this.txtHalfDayFlag = newTxtHalfDayFlag; + } + + public String getDisabtxtDate() { + return this.disabtxtDate; + } + + public void setDisabtxtDate(String newDisabtxtDate) { + this.disabtxtDate = newDisabtxtDate; + } + + public String getDisabtxtHolidayFlag() { + return this.disabtxtHolidayFlag; + } + + public void setDisabtxtHolidayFlag(String newDisabtxtHolidayFlag) { + this.disabtxtHolidayFlag = newDisabtxtHolidayFlag; + } + + public String getDisabtxtHalfDayFlag() { + return this.disabtxtHalfDayFlag; + } + + public void setDisabtxtHalfDayFlag(String newDisabtxtHalfDayFlag) { + this.disabtxtHalfDayFlag = newDisabtxtHalfDayFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnHdrBean.java new file mode 100644 index 0000000..fcb8ced --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnHdrBean.java @@ -0,0 +1,407 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Iterator; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.hrms.bean.HrmLvApplnDtlBean; + +public class HrmLvApplnHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String middleName; + + private String lastName; + + private String designation; + + private String scaleOfPay; + + private String leaveCodes; + + private String description; + + private String dateApplied; + + private String fromAppDate; + + private String toAppDate; + + private String days; + + private String purpose; + + private String statusOfLeaves; + + private String remarks; + + private String address; + + private String phone; + + private String employeeId; + + private String leaveTypeId; + + private String buttonName; + + private String department; + + private String siteId; + + private String[] txtDate; + + private String[] txtHolidayFlag; + + private String[] txtHalfDayFlag; + + private ArrayList detailArray; + + private String userId; + + String transId; + + String transacId; + + private String grade; + + private String location; + + private String ltaAmount; + + private String optedFor; + + private String ltaFlag; + + private String fromYear; + + private String itPercentage; + + private String eligAmount; + + private String medFlag; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getFromAppDate() { + return this.fromAppDate; + } + + public void setFromAppDate(String newFromAppDate) { + this.fromAppDate = newFromAppDate; + } + + public String getToAppDate() { + return this.toAppDate; + } + + public void setToAppDate(String newToAppDate) { + this.toAppDate = newToAppDate; + } + + public String getDays() { + return this.days; + } + + public void setDays(String newDays) { + this.days = newDays; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getStatusOfLeaves() { + return this.statusOfLeaves; + } + + public void setStatusOfLeaves(String newStatusOfLeaves) { + this.statusOfLeaves = newStatusOfLeaves; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getButtonName() { + return this.buttonName; + } + + public void setButtonName(String newButtonName) { + this.buttonName = newButtonName; + } + + public String getDepartment() { + return this.department; + } + + public void setDepartment(String newDepartment) { + this.department = newDepartment; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String[] getTxtDate() { + return this.txtDate; + } + + public void setTxtDate(String[] newTxtDate) { + this.txtDate = newTxtDate; + } + + public String[] getTxtHolidayFlag() { + return this.txtHolidayFlag; + } + + public void setTxtHolidayFlag(String[] newTxtHolidayFlag) { + this.txtHolidayFlag = newTxtHolidayFlag; + } + + public String[] getTxtHalfDayFlag() { + return this.txtHalfDayFlag; + } + + public void setTxtHalfDayFlag(String[] newTxtHalfDayFlag) { + this.txtHalfDayFlag = newTxtHalfDayFlag; + } + + public ArrayList getDetailArray() { + this.detailArray = new ArrayList(); + for (int iIndex = 0; iIndex < this.txtDate.length; iIndex++) { + HrmLvApplnDtlBean oDtlBean = new HrmLvApplnDtlBean(); + oDtlBean.setTxtDate(this.txtDate[iIndex]); + oDtlBean.setTxtHolidayFlag(this.txtHolidayFlag[iIndex]); + oDtlBean.setTxtHalfDayFlag(this.txtHalfDayFlag[iIndex]); + this.detailArray.add(oDtlBean); + } + return this.detailArray; + } + + public void setDetailArray(ArrayList detailArray) { + int iIndex = 0; + if (detailArray != null) { + Iterator itrDetailArray = detailArray.iterator(); + while (itrDetailArray.hasNext()) { + HrmLvApplnDtlBean oDtlBean = itrDetailArray.next(); + this.txtDate[iIndex] = oDtlBean.getTxtDate(); + this.txtHolidayFlag[iIndex] = oDtlBean.getTxtHolidayFlag(); + this.txtHalfDayFlag[iIndex] = oDtlBean.getTxtHalfDayFlag(); + iIndex++; + } + } + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String newUserId) { + this.userId = newUserId; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getTransacId() { + return this.transacId; + } + + public void setTransacId(String newTransacId) { + this.transacId = newTransacId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getLtaAmount() { + return this.ltaAmount; + } + + public void setLtaAmount(String newLtaAmount) { + this.ltaAmount = newLtaAmount; + } + + public String getOptedFor() { + return this.optedFor; + } + + public void setOptedFor(String newOptedFor) { + this.optedFor = newOptedFor; + } + + public String getLtaFlag() { + return this.ltaFlag; + } + + public void setFromYear(String newFromYear) { + this.fromYear = newFromYear; + } + + public String getFromYear() { + return this.fromYear; + } + + public void setLtaFlag(String newLtaFlag) { + this.ltaFlag = newLtaFlag; + } + + public String getItPercentage() { + return this.itPercentage; + } + + public void setItPercentage(String newItPercentage) { + this.itPercentage = newItPercentage; + } + + public String getEligAmount() { + return this.eligAmount; + } + + public void setEligAmount(String newEligAmount) { + this.eligAmount = newEligAmount; + } + + public String getMedFlag() { + return this.medFlag; + } + + public void setMedFlag(String newMedFlag) { + this.medFlag = newMedFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java new file mode 100644 index 0000000..ffe8949 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvApplnQueryDtlBean extends BaseDetailBean implements Serializable { + private String txtTransId; + + private String txtLeaveCodes; + + private String txtAppliedLeaveDate; + + private String txtLeaveStatus; + + public String getTxtTransId() { + return this.txtTransId; + } + + public void setTxtTransId(String newTxtTransId) { + this.txtTransId = newTxtTransId; + } + + public String getTxtLeaveCodes() { + return this.txtLeaveCodes; + } + + public void setTxtLeaveCodes(String newTxtLeaveCodes) { + this.txtLeaveCodes = newTxtLeaveCodes; + } + + public String getTxtAppliedLeaveDate() { + return this.txtAppliedLeaveDate; + } + + public void setTxtAppliedLeaveDate(String newTxtAppliedLeaveDate) { + this.txtAppliedLeaveDate = newTxtAppliedLeaveDate; + } + + public String getTxtLeaveStatus() { + return this.txtLeaveStatus; + } + + public void setTxtLeaveStatus(String newTxtLeaveStatus) { + this.txtLeaveStatus = newTxtLeaveStatus; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java new file mode 100644 index 0000000..120f63e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvApplnQueryHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvApplnQueryHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String leaveCode; + + private String leaveDescription; + + private String fromDate; + + private String toDate; + + private String statusOfLeave; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancHdrBean.java new file mode 100644 index 0000000..19d95a4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancHdrBean.java @@ -0,0 +1,296 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvCancHdrBean extends BaseHeaderBean implements Serializable { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String leaveCode; + + String leaveDescription; + + String dateApplied; + + String fromDate; + + String toDate; + + String days; + + String address; + + String phoneNo; + + String statusOfLeave; + + String purpose; + + String fromCancelDate; + + String toCancelDate; + + String cancelDays; + + String cancellationType; + + String cancelRemarks; + + String leaveCodeId; + + String cancelStatus; + + String cancelDateApplied; + + String employeeId; + + String leaveTransId; + + private String cancSide; + + private String buttonName; + + private String grade; + + private String location; + + private String desig; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getDays() { + return this.days; + } + + public void setDays(String newDays) { + this.days = newDays; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPhoneNo() { + return this.phoneNo; + } + + public void setPhoneNo(String newPhoneNo) { + this.phoneNo = newPhoneNo; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getFromCancelDate() { + return this.fromCancelDate; + } + + public void setFromCancelDate(String newFromCancelDate) { + this.fromCancelDate = newFromCancelDate; + } + + public String getToCancelDate() { + return this.toCancelDate; + } + + public void setToCancelDate(String newToCancelDate) { + this.toCancelDate = newToCancelDate; + } + + public String getCancelDays() { + return this.cancelDays; + } + + public void setCancelDays(String newCancelDays) { + this.cancelDays = newCancelDays; + } + + public String getCancellationType() { + return this.cancellationType; + } + + public void setCancellationType(String newCancellationType) { + this.cancellationType = newCancellationType; + } + + public String getCancelRemarks() { + return this.cancelRemarks; + } + + public void setCancelRemarks(String newCancelRemarks) { + this.cancelRemarks = newCancelRemarks; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getCancelStatus() { + return this.cancelStatus; + } + + public void setCancelStatus(String newCancelStatus) { + this.cancelStatus = newCancelStatus; + } + + public String getCancelDateApplied() { + return this.cancelDateApplied; + } + + public void setCancelDateApplied(String newCancelDateApplied) { + this.cancelDateApplied = newCancelDateApplied; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getLeaveTransId() { + return this.leaveTransId; + } + + public void setLeaveTransId(String newLeaveTransId) { + this.leaveTransId = newLeaveTransId; + } + + public String getCancSide() { + return this.cancSide; + } + + public void setCancSide(String newCancSide) { + this.cancSide = newCancSide; + } + + public String getButtonName() { + return this.buttonName; + } + + public void setButtonName(String newButtonName) { + this.buttonName = newButtonName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getDesig() { + return this.desig; + } + + public void setDesig(String newDesig) { + this.desig = newDesig; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java new file mode 100644 index 0000000..54a6045 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvCancQueryDtlBean extends BaseDetailBean implements Serializable { + private String txtTransId; + + private String txtLeaveCodes; + + private String txtAppliedLeaveDate; + + private String txtCancellationDate; + + private String txtCancellationType; + + private String txtCancelStatus; + + public String getTxtTransId() { + return this.txtTransId; + } + + public void setTxtTransId(String newTxtTransId) { + this.txtTransId = newTxtTransId; + } + + public String getTxtLeaveCodes() { + return this.txtLeaveCodes; + } + + public void setTxtLeaveCodes(String newTxtLeaveCodes) { + this.txtLeaveCodes = newTxtLeaveCodes; + } + + public String getTxtAppliedLeaveDate() { + return this.txtAppliedLeaveDate; + } + + public void setTxtAppliedLeaveDate(String newTxtAppliedLeaveDate) { + this.txtAppliedLeaveDate = newTxtAppliedLeaveDate; + } + + public String getTxtCancellationDate() { + return this.txtCancellationDate; + } + + public void setTxtCancellationDate(String newTxtCancellationDate) { + this.txtCancellationDate = newTxtCancellationDate; + } + + public String getTxtCancellationType() { + return this.txtCancellationType; + } + + public void setTxtCancellationType(String newTxtCancellationType) { + this.txtCancellationType = newTxtCancellationType; + } + + public String getTxtCancelStatus() { + return this.txtCancelStatus; + } + + public void setTxtCancelStatus(String newTxtCancelStatus) { + this.txtCancelStatus = newTxtCancelStatus; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java new file mode 100644 index 0000000..e0be6fa --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCancQueryHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvCancQueryHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String leaveType; + + private String leaveDescription; + + private String cancelFromDate; + + private String cancelToDate; + + private String cancellationStatus; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getCancelFromDate() { + return this.cancelFromDate; + } + + public void setCancelFromDate(String newCancelFromDate) { + this.cancelFromDate = newCancelFromDate; + } + + public String getCancelToDate() { + return this.cancelToDate; + } + + public void setCancelToDate(String newCancelToDate) { + this.cancelToDate = newCancelToDate; + } + + public String getCancellationStatus() { + return this.cancellationStatus; + } + + public void setCancellationStatus(String newCancellationStatus) { + this.cancellationStatus = newCancellationStatus; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditDtlBean.java new file mode 100644 index 0000000..8516a8b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditDtlBean.java @@ -0,0 +1,175 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import wenrgise.hrms.bean.HrmLvMstDtlBean; + +public class HrmLvCreditDtlBean extends HrmLvMstDtlBean { + private String lastCreditYYMM; + + private String nextCreditYYMM; + + private String lvAttrId; + + private String sex; + + private String creditCycle; + + private String minCreditLimit; + + private String eligibility; + + private String yearsOfService; + + private String calBeginMonth; + + private String name; + + private String employeeNo; + + private String employeeName; + + private String leaveType; + + private String leaveDescription; + + private String employeeNoId; + + private String leaveTypeId; + + private String txtNoOfDays; + + public String getLastCreditYYMM() { + return this.lastCreditYYMM; + } + + public void setLastCreditYYMM(String newLastCreditYYMM) { + this.lastCreditYYMM = newLastCreditYYMM; + } + + public String getNextCreditYYMM() { + return this.nextCreditYYMM; + } + + public void setNextCreditYYMM(String newNextCreditYYMM) { + this.nextCreditYYMM = newNextCreditYYMM; + } + + public String getLvAttrId() { + return this.lvAttrId; + } + + public void setLvAttrId(String newLvAttrId) { + this.lvAttrId = newLvAttrId; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getCreditCycle() { + return this.creditCycle; + } + + public void setCreditCycle(String newCreditCycle) { + this.creditCycle = newCreditCycle; + } + + public String getMinCreditLimit() { + return this.minCreditLimit; + } + + public void setMinCreditLimit(String newMinCreditLimit) { + this.minCreditLimit = newMinCreditLimit; + } + + public String getEligibility() { + return this.eligibility; + } + + public void setEligibility(String newEligibility) { + this.eligibility = newEligibility; + } + + public String getYearsOfService() { + return this.yearsOfService; + } + + public void setYearsOfService(String newYearsOfService) { + this.yearsOfService = newYearsOfService; + } + + public String getCalBeginMonth() { + return this.calBeginMonth; + } + + public void setCalBeginMonth(String newCalBeginMonth) { + this.calBeginMonth = newCalBeginMonth; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public void setTxtNoOfDays(String newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditEmpBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditEmpBean.java new file mode 100644 index 0000000..5f5552f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditEmpBean.java @@ -0,0 +1,43 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +public class HrmLvCreditEmpBean { + private String empId; + + private String joiningDate; + + private String serviceYears; + + private String sex; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getJoiningDate() { + return this.joiningDate; + } + + public void setJoiningDate(String newJoiningDate) { + this.joiningDate = newJoiningDate; + } + + public String getServiceYears() { + return this.serviceYears; + } + + public void setServiceYears(String newServiceYears) { + this.serviceYears = newServiceYears; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditHdrBean.java new file mode 100644 index 0000000..aedce8f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvCreditHdrBean.java @@ -0,0 +1,126 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvCreditHdrBean extends BaseHeaderBean implements Serializable { + private String txtRegionCode; + + String txtRegionName; + + private String buttxtRegion; + + private String butCreditLeaves; + + private String hdrRegionId; + + private String employeeNo; + + private String employeeName; + + private String leaveType; + + private String leaveDescription; + + private String employeeNoId; + + private String leaveTypeId; + + private String txtNoOfDays; + + public String getTxtRegionCode() { + return this.txtRegionCode; + } + + public void setTxtRegionCode(String newTxtRegionCode) { + this.txtRegionCode = newTxtRegionCode; + } + + public String getTxtRegionName() { + return this.txtRegionName; + } + + public void setTxtRegionName(String newTxtRegionName) { + this.txtRegionName = newTxtRegionName; + } + + public String getButtxtRegion() { + return this.buttxtRegion; + } + + public void setButtxtRegion(String newButtxtRegion) { + this.buttxtRegion = newButtxtRegion; + } + + public String getButCreditLeaves() { + return this.butCreditLeaves; + } + + public void setButCreditLeaves(String newButCreditLeaves) { + this.butCreditLeaves = newButCreditLeaves; + } + + public String getHdrRegionId() { + return this.hdrRegionId; + } + + public void setHdrRegionId(String newHdrRegionId) { + this.hdrRegionId = newHdrRegionId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public void setTxtNoOfDays(String newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvEncashHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvEncashHdrBean.java new file mode 100644 index 0000000..77cfee6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvEncashHdrBean.java @@ -0,0 +1,276 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvEncashHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String dateApplied; + + private String leaveCodes; + + private String description; + + private String daysEncashed; + + private String changeStatus; + + private String firstName; + + private String middleName; + + private String lastName; + + private String employeeName; + + private String designation; + + private String fromDate; + + private String toDate; + + private String encashedAmount; + + private String leaveCodeId; + + private String employeeId; + + private String totalEncashLimit; + + private String totalDaysEncashed; + + private String grade; + + private String location; + + private String taxAmount; + + private String pfDeduction; + + private String eligibleAmount; + + private String level; + + private String lvTxnId; + + private String lvApplnFromDate; + + private String lvApplnToDate; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getDaysEncashed() { + return this.daysEncashed; + } + + public void setDaysEncashed(String newDaysEncashed) { + this.daysEncashed = newDaysEncashed; + } + + public String getChangeStatus() { + return this.changeStatus; + } + + public void setChangeStatus(String newChangeStatus) { + this.changeStatus = newChangeStatus; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEncashedAmount() { + return this.encashedAmount; + } + + public void setEncashedAmount(String newEncashedAmount) { + this.encashedAmount = newEncashedAmount; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getTotalEncashLimit() { + return this.totalEncashLimit; + } + + public void setTotalEncashLimit(String newTotalEncashLimit) { + this.totalEncashLimit = newTotalEncashLimit; + } + + public String getTotalDaysEncashed() { + return this.totalDaysEncashed; + } + + public void setTotalDaysEncashed(String newTotalDaysEncashed) { + this.totalDaysEncashed = newTotalDaysEncashed; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getTaxAmount() { + return this.taxAmount; + } + + public void setTaxAmount(String newTaxAmount) { + this.taxAmount = newTaxAmount; + } + + public String getPfDeduction() { + return this.pfDeduction; + } + + public void setPfDeduction(String newPfDeduction) { + this.pfDeduction = newPfDeduction; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } + + public String getLvTxnId() { + return this.lvTxnId; + } + + public void setLvTxnId(String newLvTxnId) { + this.lvTxnId = newLvTxnId; + } + + public String getLvApplnFromDate() { + return this.lvApplnFromDate; + } + + public void setLvApplnFromDate(String newLvApplnFromDate) { + this.lvApplnFromDate = newLvApplnFromDate; + } + + public String getLvApplnToDate() { + return this.lvApplnToDate; + } + + public void setLvApplnToDate(String newLvApplnToDate) { + this.lvApplnToDate = newLvApplnToDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java new file mode 100644 index 0000000..ff7f373 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerDtlBean.java @@ -0,0 +1,96 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvLedgerDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpNo; + + private String txtleaveTypes; + + private String txtCreditDate; + + private String txtOpeningBalance; + + private String txtLeavesCredited; + + private String txtLeavesTaken; + + private String txtLeavesEncashed; + + private String txtLeavesPending; + + private String txtLeaveBalance; + + public String getTxtCreditDate() { + return this.txtCreditDate; + } + + public void setTxtCreditDate(String newTxtCreditDate) { + this.txtCreditDate = newTxtCreditDate; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtLeaveBalance() { + return this.txtLeaveBalance; + } + + public void setTxtLeaveBalance(String newTxtLeaveBalance) { + this.txtLeaveBalance = newTxtLeaveBalance; + } + + public String getTxtLeavesCredited() { + return this.txtLeavesCredited; + } + + public void setTxtLeavesCredited(String newTxtLeavesCredited) { + this.txtLeavesCredited = newTxtLeavesCredited; + } + + public String getTxtLeavesEncashed() { + return this.txtLeavesEncashed; + } + + public void setTxtLeavesEncashed(String newTxtLeavesEncashed) { + this.txtLeavesEncashed = newTxtLeavesEncashed; + } + + public String getTxtLeavesTaken() { + return this.txtLeavesTaken; + } + + public void setTxtLeavesTaken(String newTxtLeavesTaken) { + this.txtLeavesTaken = newTxtLeavesTaken; + } + + public String getTxtOpeningBalance() { + return this.txtOpeningBalance; + } + + public void setTxtOpeningBalance(String newTxtOpeningBalance) { + this.txtOpeningBalance = newTxtOpeningBalance; + } + + public String getTxtleaveTypes() { + return this.txtleaveTypes; + } + + public void setTxtleaveTypes(String newTxtleaveTypes) { + this.txtleaveTypes = newTxtleaveTypes; + } + + public String getTxtLeavesPending() { + return this.txtLeavesPending; + } + + public void setTxtLeavesPending(String newTxtLeavesPending) { + this.txtLeavesPending = newTxtLeavesPending; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java new file mode 100644 index 0000000..7c805c5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerHdrBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvLedgerHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String employeeName; + + private String leaveType; + + private String leaveDescription; + + private String employeeNoId; + + private String leaveTypeId; + + private String groupId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getGroupId() { + return this.groupId; + } + + public void setGroupId(String newGroupId) { + this.groupId = newGroupId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java new file mode 100644 index 0000000..9c3c9b3 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvLedgerTransDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvLedgerTransDtlBean extends BaseDetailBean implements Serializable { + private String txtApplicationDate; + + private String txtAction; + + private String txtFromDate; + + private String txtNoOfDays; + + private String txtToDate; + + private String txtPayrollMonth; + + public String getTxtAction() { + return this.txtAction; + } + + public void setTxtAction(String newTxtAction) { + this.txtAction = newTxtAction; + } + + public String getTxtApplicationDate() { + return this.txtApplicationDate; + } + + public void setTxtApplicationDate(String newTxtApplicationDate) { + this.txtApplicationDate = newTxtApplicationDate; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public void setTxtNoOfDays(String newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } + + public String getTxtPayrollMonth() { + return this.txtPayrollMonth; + } + + public void setTxtPayrollMonth(String newTxtPayrollMonth) { + this.txtPayrollMonth = newTxtPayrollMonth; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstDtlBean.java new file mode 100644 index 0000000..2e4d005 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstDtlBean.java @@ -0,0 +1,216 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmLvMstDtlBean extends BaseDetailBean implements Serializable { + private String txtLeaveDescription; + + private String txtEffectiveFrom; + + private String txtEffectiveTo; + + private String txtMinimumServicePeriod; + + private String txtMaximumAccumulationLimit; + + private String txtTotalAvailableLimit; + + private String txtAdvanceLimit; + + private String txtMaxTxn; + + private String txtMinLeavePerTxn; + + private String txtDependantOnWorkingDays; + + private String txtUnit; + + private String txtCreditFrequency; + + private String txtMaxCreditLimit; + + private String txtLeavesCredited; + + private String txtApplicableToAll; + + private String txtLapsable; + + private String txtApplicableFor; + + private String txtState; + + private String txtStateCode; + + private String txtStateId; + + private String disabbutState; + + public String getTxtAdvanceLimit() { + return this.txtAdvanceLimit; + } + + public void setTxtAdvanceLimit(String newTxtAdvanceLimit) { + this.txtAdvanceLimit = newTxtAdvanceLimit; + } + + public String getTxtApplicableToAll() { + return this.txtApplicableToAll; + } + + public void setTxtApplicableToAll(String newTxtApplicableToAll) { + this.txtApplicableToAll = newTxtApplicableToAll; + } + + public String getTxtCreditFrequency() { + return this.txtCreditFrequency; + } + + public void setTxtCreditFrequency(String newTxtCreditFrequency) { + this.txtCreditFrequency = newTxtCreditFrequency; + } + + public String getTxtDependantOnWorkingDays() { + return this.txtDependantOnWorkingDays; + } + + public void setTxtDependantOnWorkingDays(String newTxtDependantOnWorkingDays) { + this.txtDependantOnWorkingDays = newTxtDependantOnWorkingDays; + } + + public String getTxtEffectiveFrom() { + return this.txtEffectiveFrom; + } + + public void setTxtEffectiveFrom(String newTxtEffectiveFrom) { + this.txtEffectiveFrom = newTxtEffectiveFrom; + } + + public String getTxtEffectiveTo() { + return this.txtEffectiveTo; + } + + public void setTxtEffectiveTo(String newTxtEffectiveTo) { + this.txtEffectiveTo = newTxtEffectiveTo; + } + + public String getTxtLapsable() { + return this.txtLapsable; + } + + public void setTxtLapsable(String newTxtLapsable) { + this.txtLapsable = newTxtLapsable; + } + + public String getTxtLeaveDescription() { + return this.txtLeaveDescription; + } + + public void setTxtLeaveDescription(String newTxtLeaveDescription) { + this.txtLeaveDescription = newTxtLeaveDescription; + } + + public String getTxtLeavesCredited() { + return this.txtLeavesCredited; + } + + public void setTxtLeavesCredited(String newTxtLeavesCredited) { + this.txtLeavesCredited = newTxtLeavesCredited; + } + + public String getTxtMaxCreditLimit() { + return this.txtMaxCreditLimit; + } + + public void setTxtMaxCreditLimit(String newTxtMaxCreditLimit) { + this.txtMaxCreditLimit = newTxtMaxCreditLimit; + } + + public String getTxtMaxTxn() { + return this.txtMaxTxn; + } + + public void setTxtMaxTxn(String newTxtMaxTxn) { + this.txtMaxTxn = newTxtMaxTxn; + } + + public String getTxtMaximumAccumulationLimit() { + return this.txtMaximumAccumulationLimit; + } + + public void setTxtMaximumAccumulationLimit(String newTxtMaximumAccumulationLimit) { + this.txtMaximumAccumulationLimit = newTxtMaximumAccumulationLimit; + } + + public String getTxtMinLeavePerTxn() { + return this.txtMinLeavePerTxn; + } + + public void setTxtMinLeavePerTxn(String newTxtMinLeavePerTxn) { + this.txtMinLeavePerTxn = newTxtMinLeavePerTxn; + } + + public String getTxtMinimumServicePeriod() { + return this.txtMinimumServicePeriod; + } + + public void setTxtMinimumServicePeriod(String newTxtMinimumServicePeriod) { + this.txtMinimumServicePeriod = newTxtMinimumServicePeriod; + } + + public String getTxtTotalAvailableLimit() { + return this.txtTotalAvailableLimit; + } + + public void setTxtTotalAvailableLimit(String newTxtTotalAvailableLimit) { + this.txtTotalAvailableLimit = newTxtTotalAvailableLimit; + } + + public String getTxtUnit() { + return this.txtUnit; + } + + public void setTxtUnit(String newTxtUnit) { + this.txtUnit = newTxtUnit; + } + + public String getTxtApplicableFor() { + return this.txtApplicableFor; + } + + public void setTxtApplicableFor(String newTxtApplicableFor) { + this.txtApplicableFor = newTxtApplicableFor; + } + + public String getTxtState() { + return this.txtState; + } + + public void setTxtState(String newTxtState) { + this.txtState = newTxtState; + } + + public String getTxtStateCode() { + return this.txtStateCode; + } + + public void setTxtStateCode(String newTxtStateCode) { + this.txtStateCode = newTxtStateCode; + } + + public String getTxtStateId() { + return this.txtStateId; + } + + public void setTxtStateId(String newTxtStateId) { + this.txtStateId = newTxtStateId; + } + + public String getDisabbutState() { + return this.disabbutState; + } + + public void setDisabbutState(String newDisabbutState) { + this.disabbutState = newDisabbutState; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstHdrBean.java new file mode 100644 index 0000000..acf1e31 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmLvMstHdrBean.java @@ -0,0 +1,166 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmLvMstHdrBean extends BaseHeaderBean implements Serializable { + private String leaveCode; + + private String description; + + private String evidenceRequired; + + private String evidenceDescription; + + private String prefixSuffix; + + private String intermediateHoliday; + + private String leaveObsolete; + + private String encashable; + + private String encashableLimit; + + private String periodicity; + + private String calendar; + + private String applicableTo; + + private String calendarTypeId; + + private String leaveCodeId; + + private String suffix; + + private String minLeave; + + public String getApplicableTo() { + return this.applicableTo; + } + + public void setApplicableTo(String newApplicableTo) { + this.applicableTo = newApplicableTo; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getEncashable() { + return this.encashable; + } + + public void setEncashable(String newEncashable) { + this.encashable = newEncashable; + } + + public String getEncashableLimit() { + return this.encashableLimit; + } + + public void setEncashableLimit(String newEncashableLimit) { + this.encashableLimit = newEncashableLimit; + } + + public String getEvidenceDescription() { + return this.evidenceDescription; + } + + public void setEvidenceDescription(String newEvidenceDescription) { + this.evidenceDescription = newEvidenceDescription; + } + + public String getEvidenceRequired() { + return this.evidenceRequired; + } + + public void setEvidenceRequired(String newEvidenceRequired) { + this.evidenceRequired = newEvidenceRequired; + } + + public String getIntermediateHoliday() { + return this.intermediateHoliday; + } + + public void setIntermediateHoliday(String newIntermediateHoliday) { + this.intermediateHoliday = newIntermediateHoliday; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveObsolete() { + return this.leaveObsolete; + } + + public void setLeaveObsolete(String newLeaveObsolete) { + this.leaveObsolete = newLeaveObsolete; + } + + public String getPeriodicity() { + return this.periodicity; + } + + public void setPeriodicity(String newPeriodicity) { + this.periodicity = newPeriodicity; + } + + public String getPrefixSuffix() { + return this.prefixSuffix; + } + + public void setPrefixSuffix(String newPrefixSuffix) { + this.prefixSuffix = newPrefixSuffix; + } + + public String getCalendarTypeId() { + return this.calendarTypeId; + } + + public void setCalendarTypeId(String newCalendarTypeId) { + this.calendarTypeId = newCalendarTypeId; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getSuffix() { + return this.suffix; + } + + public void setSuffix(String newSuffix) { + this.suffix = newSuffix; + } + + public String getMinLeave() { + return this.minLeave; + } + + public void setMinLeave(String newMinLeave) { + this.minLeave = newMinLeave; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java new file mode 100644 index 0000000..3621874 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmMediclaimMasterDtlBean extends BaseDetailBean implements Serializable { + private String coverName; + + private String sumInsured; + + private String salaryUnit; + + private String premium; + + private String ageFrom; + + private String ageTo; + + private String aicContribution; + + private String documentRequired; + + public String getSalaryUnit() { + return this.salaryUnit; + } + + public void setSalaryUnit(String salaryUnit) { + this.salaryUnit = salaryUnit; + } + + public String getPremium() { + return this.premium; + } + + public void setPremium(String premium) { + this.premium = premium; + } + + public String getAgeFrom() { + return this.ageFrom; + } + + public void setAgeFrom(String ageFrom) { + this.ageFrom = ageFrom; + } + + public String getAgeTo() { + return this.ageTo; + } + + public void setAgeTo(String ageTo) { + this.ageTo = ageTo; + } + + public String getAicContribution() { + return this.aicContribution; + } + + public void setAicContribution(String aicContribution) { + this.aicContribution = aicContribution; + } + + public String getDocumentRequired() { + return this.documentRequired; + } + + public void setDocumentRequired(String documentRequired) { + this.documentRequired = documentRequired; + } + + public String getCoverName() { + return this.coverName; + } + + public void setCoverName(String coverName) { + this.coverName = coverName; + } + + public String getSumInsured() { + return this.sumInsured; + } + + public void setSumInsured(String sumInsured) { + this.sumInsured = sumInsured; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java new file mode 100644 index 0000000..08e81d6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMediclaimMasterHdrBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmMediclaimMasterHdrBean extends BaseHeaderBean implements Serializable { + private String claimCode; + + private String txtClass; + + private String cadre; + + private boolean allEmp; + + private String dependents; + + private String txtClassId; + + private String txtCadreId; + + private String allEmployeeApplicable; + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String claimCode) { + this.claimCode = claimCode; + } + + public String getTxtClass() { + return this.txtClass; + } + + public void setTxtClass(String txtClass) { + this.txtClass = txtClass; + } + + public String getCadre() { + return this.cadre; + } + + public void setCadre(String cadre) { + this.cadre = cadre; + } + + public boolean getAllEmp() { + return this.allEmp; + } + + public void setAllEmp(boolean allEmp) { + this.allEmp = allEmp; + } + + public String getDependents() { + return this.dependents; + } + + public void setDependents(String dependents) { + this.dependents = dependents; + } + + public String getTxtClassId() { + return this.txtClassId; + } + + public void setTxtClassId(String txtClassId) { + this.txtClassId = txtClassId; + } + + public String getTxtCadreId() { + return this.txtCadreId; + } + + public void setTxtCadreId(String txtCadreId) { + this.txtCadreId = txtCadreId; + } + + public String getAllEmployeeApplicable() { + return this.allEmployeeApplicable; + } + + public void setAllEmployeeApplicable(String newAllEmployeeApplicable) { + this.allEmployeeApplicable = newAllEmployeeApplicable; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportDtlBean.java new file mode 100644 index 0000000..8cbf92c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmMisReportDtlBean extends BaseDetailBean implements Serializable { + private String txtPosition; + + private String txtDesiredStrength; + + private String disabbutPosition; + + private String txtPositionId; + + public String getTxtPosition() { + return this.txtPosition; + } + + public void setTxtPosition(String newTxtPosition) { + this.txtPosition = newTxtPosition; + } + + public String getTxtDesiredStrength() { + return this.txtDesiredStrength; + } + + public void setTxtDesiredStrength(String newTxtDesiredStrength) { + this.txtDesiredStrength = newTxtDesiredStrength; + } + + public String getDisabbutPosition() { + return this.disabbutPosition; + } + + public void setDisabbutPosition(String newDisabbutPosition) { + this.disabbutPosition = newDisabbutPosition; + } + + public String getTxtPositionId() { + return this.txtPositionId; + } + + public void setTxtPositionId(String newTxtPositionId) { + this.txtPositionId = newTxtPositionId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportHdrBean.java new file mode 100644 index 0000000..c71ff9d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMisReportHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmMisReportHdrBean extends BaseHeaderBean implements Serializable { + private String optSelect; + + private String locationCode; + + private String txtYearMonth; + + public String getOptSelect() { + return this.optSelect; + } + + public void setOptSelect(String newOptSelect) { + this.optSelect = newOptSelect; + } + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } + + public String getTxtYearMonth() { + return this.txtYearMonth; + } + + public void setTxtYearMonth(String newTxtYearMonth) { + this.txtYearMonth = newTxtYearMonth; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java new file mode 100644 index 0000000..bd4974e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowDtlBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmMyWorkflowDtlBean extends BaseDetailBean implements Serializable { + private String approver; + + private String level; + + private String requestId; + + private String requestor; + + private String requestorName; + + private String approverName; + + private String docDtlId; + + public String getApprover() { + return this.approver; + } + + public void setApprover(String newApprover) { + this.approver = newApprover; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } + + public String getRequestId() { + return this.requestId; + } + + public void setRequestId(String newRequestId) { + this.requestId = newRequestId; + } + + public String getRequestor() { + return this.requestor; + } + + public void setRequestor(String newRequestor) { + this.requestor = newRequestor; + } + + public String getRequestorName() { + return this.requestorName; + } + + public void setRequestorName(String newRequestorName) { + this.requestorName = newRequestorName; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getDocDtlId() { + return this.docDtlId; + } + + public void setDocDtlId(String docDtlId) { + this.docDtlId = docDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java new file mode 100644 index 0000000..429e4d4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmMyWorkflowHdrBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmMyWorkflowHdrBean extends BaseHeaderBean implements Serializable { + private String workflowType; + + private String txtStatus; + + private String id; + + private String requestType; + + private String employeeNoId; + + private String butAct; + + private String disabbutAct; + + public String getWorkflowType() { + return this.workflowType; + } + + public void setWorkflowType(String newWorkflowType) { + this.workflowType = newWorkflowType; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getRequestType() { + return this.requestType; + } + + public void setRequestType(String newRequestType) { + this.requestType = newRequestType; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getButAct() { + return this.butAct; + } + + public void setButAct(String butAct) { + this.butAct = butAct; + } + + public String getDisabbutAct() { + return this.disabbutAct; + } + + public void setDisabbutAct(String disabbutAct) { + this.disabbutAct = disabbutAct; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java new file mode 100644 index 0000000..cf9ff9e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgCalMstDtlBean extends BaseDetailBean implements Serializable { + private String txtSiteId; + + private String txtSlabNumber; + + private String txtSlabBeginMonth; + + private String txtDuration; + + public String getTxtSiteId() { + return this.txtSiteId; + } + + public void setTxtSiteId(String newTxtSiteId) { + this.txtSiteId = newTxtSiteId; + } + + public String getTxtSlabNumber() { + return this.txtSlabNumber; + } + + public void setTxtSlabNumber(String newTxtSlabNumber) { + this.txtSlabNumber = newTxtSlabNumber; + } + + public String getTxtSlabBeginMonth() { + return this.txtSlabBeginMonth; + } + + public void setTxtSlabBeginMonth(String newTxtSlabBeginMonth) { + this.txtSlabBeginMonth = newTxtSlabBeginMonth; + } + + public String getTxtDuration() { + return this.txtDuration; + } + + public void setTxtDuration(String newTxtDuration) { + this.txtDuration = newTxtDuration; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java new file mode 100644 index 0000000..679c8e2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCalMstHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgCalMstHdrBean extends BaseHeaderBean implements Serializable { + private String calendarType; + + private String startMonth; + + private String duration; + + private String siteId; + + String calendarTypeId; + + public String getCalendarType() { + return this.calendarType; + } + + public void setCalendarType(String newCalendarType) { + this.calendarType = newCalendarType; + } + + public String getStartMonth() { + return this.startMonth; + } + + public void setStartMonth(String newStartMonth) { + this.startMonth = newStartMonth; + } + + public String getDuration() { + return this.duration; + } + + public void setDuration(String newDuration) { + this.duration = newDuration; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getCalendarTypeId() { + return this.calendarTypeId; + } + + public void setCalendarTypeId(String newCalendarTypeId) { + this.calendarTypeId = newCalendarTypeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassDtlBean.java new file mode 100644 index 0000000..dd885ce --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgClassDtlBean extends BaseDetailBean implements Serializable { + private String txtClassificationCode; + + private String txtDescription; + + private String txtHierarchy; + + private String txtParentCode; + + private String txtParentCodeId; + + private String txtTypeCode; + + public String getTxtClassificationCode() { + return this.txtClassificationCode; + } + + public void setTxtClassificationCode(String newTxtClassificationCode) { + this.txtClassificationCode = newTxtClassificationCode; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getTxtHierarchy() { + return this.txtHierarchy; + } + + public void setTxtHierarchy(String newTxtHierarchy) { + this.txtHierarchy = newTxtHierarchy; + } + + public String getTxtParentCode() { + return this.txtParentCode; + } + + public void setTxtParentCode(String newTxtParentCode) { + this.txtParentCode = newTxtParentCode; + } + + public String getTxtParentCodeId() { + return this.txtParentCodeId; + } + + public void setTxtParentCodeId(String newTxtParentCodeId) { + this.txtParentCodeId = newTxtParentCodeId; + } + + public String getTxtTypeCode() { + return this.txtTypeCode; + } + + public void setTxtTypeCode(String newTxtTypeCode) { + this.txtTypeCode = newTxtTypeCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassHdrBean.java new file mode 100644 index 0000000..d2e8ac4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgClassHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgClassHdrBean extends BaseHeaderBean implements Serializable { + private String code; + + private String classificationType; + + private String scaleId; + + private String desigId; + + String orgCodeId; + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getClassificationType() { + return this.classificationType; + } + + public void setClassificationType(String newClassificationType) { + this.classificationType = newClassificationType; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } + + public String getOrgCodeId() { + return this.orgCodeId; + } + + public void setOrgCodeId(String newOrgCodeId) { + this.orgCodeId = newOrgCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java new file mode 100644 index 0000000..d851211 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstDtlBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgCntryMstDtlBean extends BaseDetailBean implements Serializable { + String txtCityCode; + + String txtCityName; + + public String getTxtCityCode() { + return this.txtCityCode; + } + + public void setTxtCityCode(String newTxtCityCode) { + this.txtCityCode = newTxtCityCode; + } + + public String getTxtCityName() { + return this.txtCityName; + } + + public void setTxtCityName(String newTxtCityName) { + this.txtCityName = newTxtCityName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java new file mode 100644 index 0000000..3a5fbb8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgCntryMstHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgCntryMstHdrBean extends BaseHeaderBean implements Serializable { + String countryCode; + + String countryName; + + String countryCodeId; + + public String getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String newCountryCode) { + this.countryCode = newCountryCode; + } + + public String getCountryName() { + return this.countryName; + } + + public void setCountryName(String newCountryName) { + this.countryName = newCountryName; + } + + public String getCountryCodeId() { + return this.countryCodeId; + } + + public void setCountryCodeId(String newCountryCodeId) { + this.countryCodeId = newCountryCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java new file mode 100644 index 0000000..3a0b1cf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgDistrictMstDtlBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgDistrictMstDtlBean extends BaseDetailBean implements Serializable { + private String txtDistrictCode; + + private String txtDistrictName; + + public String getTxtDistrictCode() { + return this.txtDistrictCode; + } + + public void setTxtDistrictCode(String newTxtDistrictCode) { + this.txtDistrictCode = newTxtDistrictCode; + } + + public String getTxtDistrictName() { + return this.txtDistrictName; + } + + public void setTxtDistrictName(String newTxtDistrictName) { + this.txtDistrictName = newTxtDistrictName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java new file mode 100644 index 0000000..5d6a3eb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgHolCalDtlBean extends BaseDetailBean implements Serializable { + private String txtHolidayDate; + + private String txtHolidayName; + + private String txtHolidayType; + + private String txtHolTypeId; + + private String txtDay; + + public String getTxtHolidayDate() { + return this.txtHolidayDate; + } + + public void setTxtHolidayDate(String newTxtHolidayDate) { + this.txtHolidayDate = newTxtHolidayDate; + } + + public String getTxtHolidayName() { + return this.txtHolidayName; + } + + public void setTxtHolidayName(String newTxtHolidayName) { + this.txtHolidayName = newTxtHolidayName; + } + + public String getTxtHolidayType() { + return this.txtHolidayType; + } + + public void setTxtHolidayType(String newTxtHolidayType) { + this.txtHolidayType = newTxtHolidayType; + } + + public String getTxtHolTypeId() { + return this.txtHolTypeId; + } + + public void setTxtHolTypeId(String newTxtHolTypeId) { + this.txtHolTypeId = newTxtHolTypeId; + } + + public String getTxtDay() { + return this.txtDay; + } + + public void setTxtDay(String newTxtDay) { + this.txtDay = newTxtDay; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java new file mode 100644 index 0000000..9214403 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolCalHdrBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgHolCalHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String description; + + private String calendarYear; + + private String fromDate; + + private String toDate; + + private String siteCode; + + private String siteId; + + private String state; + + private String stateId; + + private String stateCode; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getCalendarYear() { + return this.calendarYear; + } + + public void setCalendarYear(String newCalendarYear) { + this.calendarYear = newCalendarYear; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getStateId() { + return this.stateId; + } + + public void setStateId(String newStateId) { + this.stateId = newStateId; + } + + public String getStateCode() { + return this.stateCode; + } + + public void setStateCode(String newStateCode) { + this.stateCode = newStateCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java new file mode 100644 index 0000000..3f78bae --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgHolTypeMstHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgHolTypeMstHdrBean extends BaseHeaderBean implements Serializable { + private String holidayType; + + private String yearlyLimit; + + private String compensatoryLeave; + + private String rewardPercentageOfBasic; + + private String mandatory; + + String holidayTypeId; + + public String getHolidayType() { + return this.holidayType; + } + + public void setHolidayType(String newHolidayType) { + this.holidayType = newHolidayType; + } + + public String getYearlyLimit() { + return this.yearlyLimit; + } + + public void setYearlyLimit(String newYearlyLimit) { + this.yearlyLimit = newYearlyLimit; + } + + public String getCompensatoryLeave() { + return this.compensatoryLeave; + } + + public void setCompensatoryLeave(String newCompensatoryLeave) { + this.compensatoryLeave = newCompensatoryLeave; + } + + public String getRewardPercentageOfBasic() { + return this.rewardPercentageOfBasic; + } + + public void setRewardPercentageOfBasic(String newRewardPercentageOfBasic) { + this.rewardPercentageOfBasic = newRewardPercentageOfBasic; + } + + public String getMandatory() { + return this.mandatory; + } + + public void setMandatory(String newMandatory) { + this.mandatory = newMandatory; + } + + public String getHolidayTypeId() { + return this.holidayTypeId; + } + + public void setHolidayTypeId(String newHolidayTypeId) { + this.holidayTypeId = newHolidayTypeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java new file mode 100644 index 0000000..fd4277b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementDtlBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgIncrementDtlBean extends BaseDetailBean implements Serializable { + private String txtRatingFrom; + + private String txtRatingTo; + + private String txtRatingGrade; + + private String txtRatingDescription; + + private String txtIncrement; + + private String disabtxtIncrement; + + private String ratingDtlId; + + public String getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String getTxtRatingGrade() { + return this.txtRatingGrade; + } + + public void setTxtRatingGrade(String newTxtRatingGrade) { + this.txtRatingGrade = newTxtRatingGrade; + } + + public String getTxtRatingDescription() { + return this.txtRatingDescription; + } + + public void setTxtRatingDescription(String newTxtRatingDescription) { + this.txtRatingDescription = newTxtRatingDescription; + } + + public String getTxtIncrement() { + return this.txtIncrement; + } + + public void setTxtIncrement(String newTxtIncrement) { + this.txtIncrement = newTxtIncrement; + } + + public String getDisabtxtIncrement() { + return this.disabtxtIncrement; + } + + public void setDisabtxtIncrement(String newDisabtxtIncrement) { + this.disabtxtIncrement = newDisabtxtIncrement; + } + + public String getRatingDtlId() { + return this.ratingDtlId; + } + + public void setRatingDtlId(String newRatingDtlId) { + this.ratingDtlId = newRatingDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java new file mode 100644 index 0000000..e2ea8fa --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgIncrementHdrBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgIncrementHdrBean extends BaseHeaderBean implements Serializable { + private String startDate; + + private String endDate; + + private String clsHdr; + + private String clsHdrDesc; + + private String clsDtl; + + private String clsDtlDesc; + + private String ratingCode; + + private String ratingHdrId; + + private String clsHdrId; + + private String clsDtlId; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getClsHdr() { + return this.clsHdr; + } + + public void setClsHdr(String newClsHdr) { + this.clsHdr = newClsHdr; + } + + public String getClsHdrDesc() { + return this.clsHdrDesc; + } + + public void setClsHdrDesc(String newClsHdrDesc) { + this.clsHdrDesc = newClsHdrDesc; + } + + public String getClsDtl() { + return this.clsDtl; + } + + public void setClsDtl(String newClsDtl) { + this.clsDtl = newClsDtl; + } + + public String getClsDtlDesc() { + return this.clsDtlDesc; + } + + public void setClsDtlDesc(String newClsDtlDesc) { + this.clsDtlDesc = newClsDtlDesc; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getRatingHdrId() { + return this.ratingHdrId; + } + + public void setRatingHdrId(String newRatingHdrId) { + this.ratingHdrId = newRatingHdrId; + } + + public String getClsHdrId() { + return this.clsHdrId; + } + + public void setClsHdrId(String newClsHdrId) { + this.clsHdrId = newClsHdrId; + } + + public String getClsDtlId() { + return this.clsDtlId; + } + + public void setClsDtlId(String newClsDtlId) { + this.clsDtlId = newClsDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java new file mode 100644 index 0000000..a1bc6ac --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgLangMstDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgLangMstDtlBean extends BaseDetailBean implements Serializable { + private String txtCode; + + private String txtDescription; + + private String txtLanguageType; + + public String getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String newTxtCode) { + this.txtCode = newTxtCode; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getTxtLanguageType() { + return this.txtLanguageType; + } + + public void setTxtLanguageType(String newTxtLanguageType) { + this.txtLanguageType = newTxtLanguageType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java new file mode 100644 index 0000000..2dcbe32 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgQualMstDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgQualMstDtlBean extends BaseDetailBean implements Serializable { + private String txtQualification; + + private String txtCode; + + private String txtNoOfYears; + + private String txtApprovingAuthority; + + public String getTxtQualification() { + return this.txtQualification; + } + + public void setTxtQualification(String newTxtQualification) { + this.txtQualification = newTxtQualification; + } + + public String getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String newTxtCode) { + this.txtCode = newTxtCode; + } + + public String getTxtNoOfYears() { + return this.txtNoOfYears; + } + + public void setTxtNoOfYears(String newTxtNoOfYears) { + this.txtNoOfYears = newTxtNoOfYears; + } + + public String getTxtApprovingAuthority() { + return this.txtApprovingAuthority; + } + + public void setTxtApprovingAuthority(String newTxtApprovingAuthority) { + this.txtApprovingAuthority = newTxtApprovingAuthority; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java new file mode 100644 index 0000000..2d94ed2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgRatingMstDtlBean extends BaseDetailBean implements Serializable { + String txtRatingFrom; + + String txtRatingTo; + + String txtRatingGrade; + + String txtDescription; + + public String getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String getTxtRatingGrade() { + return this.txtRatingGrade; + } + + public void setTxtRatingGrade(String newTxtRatingGrade) { + this.txtRatingGrade = newTxtRatingGrade; + } + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java new file mode 100644 index 0000000..2b9a1a3 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRatingMstHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgRatingMstHdrBean extends BaseHeaderBean implements Serializable { + String maximumRating; + + String qualifyingRating; + + String minimumRating; + + String ratingHeaderCode; + + String ratingCodeId; + + public String getMaximumRating() { + return this.maximumRating; + } + + public void setMaximumRating(String newMaximumRating) { + this.maximumRating = newMaximumRating; + } + + public String getQualifyingRating() { + return this.qualifyingRating; + } + + public void setQualifyingRating(String newQualifyingRating) { + this.qualifyingRating = newQualifyingRating; + } + + public String getMinimumRating() { + return this.minimumRating; + } + + public void setMinimumRating(String newMinimumRating) { + this.minimumRating = newMinimumRating; + } + + public String getRatingHeaderCode() { + return this.ratingHeaderCode; + } + + public void setRatingHeaderCode(String newRatingHeaderCode) { + this.ratingHeaderCode = newRatingHeaderCode; + } + + public String getRatingCodeId() { + return this.ratingCodeId; + } + + public void setRatingCodeId(String newRatingCodeId) { + this.ratingCodeId = newRatingCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java new file mode 100644 index 0000000..344ba70 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgRelationMstDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgRelationMstDtlBean extends BaseDetailBean implements Serializable { + private String txtRelationCode; + + private String txtRelationName; + + String txtOccurence; + + public String getTxtRelationCode() { + return this.txtRelationCode; + } + + public void setTxtRelationCode(String newTxtRelationCode) { + this.txtRelationCode = newTxtRelationCode; + } + + public String getTxtOccurence() { + return this.txtOccurence; + } + + public void setTxtOccurence(String newTxtOccurence) { + this.txtOccurence = newTxtOccurence; + } + + public String getTxtRelationName() { + return this.txtRelationName; + } + + public void setTxtRelationName(String newTxtRelationName) { + this.txtRelationName = newTxtRelationName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java new file mode 100644 index 0000000..4bc576e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgReligionMstDtlBean.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgReligionMstDtlBean extends BaseDetailBean implements Serializable { + private String txtReligionName; + + public String getTxtReligionName() { + return this.txtReligionName; + } + + public void setTxtReligionName(String newTxtReligionName) { + this.txtReligionName = newTxtReligionName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java new file mode 100644 index 0000000..bac9aea --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgScaleMstDtlBean extends BaseDetailBean implements Serializable { + private String txtStartBasic; + + private String txtIncrement; + + private String txtEndBasic; + + public String getTxtStartBasic() { + return this.txtStartBasic; + } + + public void setTxtStartBasic(String newTxtStartBasic) { + this.txtStartBasic = newTxtStartBasic; + } + + public String getTxtIncrement() { + return this.txtIncrement; + } + + public void setTxtIncrement(String newTxtIncrement) { + this.txtIncrement = newTxtIncrement; + } + + public String getTxtEndBasic() { + return this.txtEndBasic; + } + + public void setTxtEndBasic(String newTxtEndBasic) { + this.txtEndBasic = newTxtEndBasic; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java new file mode 100644 index 0000000..9fbb9ab --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgScaleMstHdrBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgScaleMstHdrBean extends BaseHeaderBean implements Serializable { + private String scaleCode; + + private String desc; + + private String hierarchyLevel; + + private String parentId; + + private String gradeId; + + private String revision; + + private String grade; + + private String scaleId; + + public String getScaleCode() { + return this.scaleCode; + } + + public void setScaleCode(String newScaleCode) { + this.scaleCode = newScaleCode; + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public String getHierarchyLevel() { + return this.hierarchyLevel; + } + + public void setHierarchyLevel(String newHierarchyLevel) { + this.hierarchyLevel = newHierarchyLevel; + } + + public String getParentId() { + return this.parentId; + } + + public void setParentId(String newParentId) { + this.parentId = newParentId; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getRevision() { + return this.revision; + } + + public void setRevision(String newRevision) { + this.revision = newRevision; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java new file mode 100644 index 0000000..dc7b5ad --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgSkillMstDtlBean extends BaseDetailBean implements Serializable { + String txtSkillCode; + + String txtSkillName; + + String txtHourlyRate; + + String txtOtRate; + + public String getTxtSkillCode() { + return this.txtSkillCode; + } + + public void setTxtSkillCode(String newTxtSkillCode) { + this.txtSkillCode = newTxtSkillCode; + } + + public String getTxtSkillName() { + return this.txtSkillName; + } + + public void setTxtSkillName(String newTxtSkillName) { + this.txtSkillName = newTxtSkillName; + } + + public String getTxtHourlyRate() { + return this.txtHourlyRate; + } + + public void setTxtHourlyRate(String newTxtHourlyRate) { + this.txtHourlyRate = newTxtHourlyRate; + } + + public String getTxtOtRate() { + return this.txtOtRate; + } + + public void setTxtOtRate(String newTxtOtRate) { + this.txtOtRate = newTxtOtRate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java new file mode 100644 index 0000000..fc0eab0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgSkillMstHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgSkillMstHdrBean extends BaseHeaderBean implements Serializable { + String skillTypeCode; + + String skillTypeName; + + String skillCodeID; + + public String getSkillTypeCode() { + return this.skillTypeCode; + } + + public void setSkillTypeCode(String newSkillTypeCode) { + this.skillTypeCode = newSkillTypeCode; + } + + public String getSkillTypeName() { + return this.skillTypeName; + } + + public void setSkillTypeName(String newSkillTypeName) { + this.skillTypeName = newSkillTypeName; + } + + public String getSkillCodeID() { + return this.skillCodeID; + } + + public void setSkillCodeID(String newSkillCodeID) { + this.skillCodeID = newSkillCodeID; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java new file mode 100644 index 0000000..63aed42 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgTehsilMstDtlBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgTehsilMstDtlBean extends BaseDetailBean implements Serializable { + private String txtTehsilCode; + + private String txtTehsilName; + + public String getTxtTehsilCode() { + return this.txtTehsilCode; + } + + public void setTxtTehsilCode(String newTxtTehsilCode) { + this.txtTehsilCode = newTxtTehsilCode; + } + + public String getTxtTehsilName() { + return this.txtTehsilName; + } + + public void setTxtTehsilName(String newTxtTehsilName) { + this.txtTehsilName = newTxtTehsilName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java new file mode 100644 index 0000000..662e997 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmOrgWorkGroupMstDtlBean extends BaseDetailBean implements Serializable { + private String id; + + private String name; + + private String reportingEmpId; + + private String empNo; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java new file mode 100644 index 0000000..f23cc1d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmOrgWorkGroupMstHdrBean.java @@ -0,0 +1,316 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmOrgWorkGroupMstHdrBean extends BaseHeaderBean implements Serializable { + private String code; + + private String owingSite; + + private String name; + + private String profitCentre; + + private String deptFlag; + + private String temporaryFlag; + + private String costCentre; + + private String budgetCode; + + private String contactEmployeeNo; + + private String phone; + + private String eMail; + + private String fax; + + private String contactAddress; + + private String refDocNo; + + private String creationDate; + + private String documentDate; + + private String endDate; + + private String specialRemarks; + + private String hierarchyLevel; + + private String parentGroupCode; + + private String contactEmployeeId; + + private String parentGroupCodeId; + + private String profitCentreId; + + private String budgetCodeName; + + private String workGroupCodeId; + + private String siteId; + + private String owingSiteCode; + + private String costId; + + private String costCode; + + private String budgetId; + + private String parentHierarchyLevel; + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getOwingSite() { + return this.owingSite; + } + + public void setOwingSite(String newOwingSite) { + this.owingSite = newOwingSite; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getProfitCentre() { + return this.profitCentre; + } + + public void setProfitCentre(String newProfitCentre) { + this.profitCentre = newProfitCentre; + } + + public String getDeptFlag() { + return this.deptFlag; + } + + public void setDeptFlag(String newDeptFlag) { + this.deptFlag = newDeptFlag; + } + + public String getTemporaryFlag() { + return this.temporaryFlag; + } + + public void setTemporaryFlag(String newTemporaryFlag) { + this.temporaryFlag = newTemporaryFlag; + } + + public String getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String newCostCentre) { + this.costCentre = newCostCentre; + } + + public String getBudgetCode() { + return this.budgetCode; + } + + public void setBudgetCode(String newBudgetCode) { + this.budgetCode = newBudgetCode; + } + + public String getContactEmployeeNo() { + return this.contactEmployeeNo; + } + + public void setContactEmployeeNo(String newContactEmployeeNo) { + this.contactEmployeeNo = newContactEmployeeNo; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getEMail() { + return this.eMail; + } + + public void setEMail(String newEMail) { + this.eMail = newEMail; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getContactAddress() { + return this.contactAddress; + } + + public void setContactAddress(String newContactAddress) { + this.contactAddress = newContactAddress; + } + + public String getRefDocNo() { + return this.refDocNo; + } + + public void setRefDocNo(String newRefDocNo) { + this.refDocNo = newRefDocNo; + } + + public String getCreationDate() { + return this.creationDate; + } + + public void setCreationDate(String newCreationDate) { + this.creationDate = newCreationDate; + } + + public String getDocumentDate() { + return this.documentDate; + } + + public void setDocumentDate(String newDocumentDate) { + this.documentDate = newDocumentDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSpecialRemarks() { + return this.specialRemarks; + } + + public void setSpecialRemarks(String newSpecialRemarks) { + this.specialRemarks = newSpecialRemarks; + } + + public String getHierarchyLevel() { + return this.hierarchyLevel; + } + + public void setHierarchyLevel(String newHierarchyLevel) { + this.hierarchyLevel = newHierarchyLevel; + } + + public String getParentGroupCode() { + return this.parentGroupCode; + } + + public void setParentGroupCode(String newParentGroupCode) { + this.parentGroupCode = newParentGroupCode; + } + + public String getContactEmployeeId() { + return this.contactEmployeeId; + } + + public void setContactEmployeeId(String newContactEmployeeId) { + this.contactEmployeeId = newContactEmployeeId; + } + + public String getParentGroupCodeId() { + return this.parentGroupCodeId; + } + + public void setParentGroupCodeId(String newParentGroupCodeId) { + this.parentGroupCodeId = newParentGroupCodeId; + } + + public String getProfitCentreId() { + return this.profitCentreId; + } + + public void setProfitCentreId(String newProfitCentreId) { + this.profitCentreId = newProfitCentreId; + } + + public String getBudgetCodeName() { + return this.budgetCodeName; + } + + public void setBudgetCodeName(String newBudgetCodeName) { + this.budgetCodeName = newBudgetCodeName; + } + + public String getWorkGroupCodeId() { + return this.workGroupCodeId; + } + + public void setWorkGroupCodeId(String newWorkGroupCodeId) { + this.workGroupCodeId = newWorkGroupCodeId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getOwingSiteCode() { + return this.owingSiteCode; + } + + public void setOwingSiteCode(String newOwingSiteCode) { + this.owingSiteCode = newOwingSiteCode; + } + + public String getCostId() { + return this.costId; + } + + public void setCostId(String newCostId) { + this.costId = newCostId; + } + + public String getCostCode() { + return this.costCode; + } + + public void setCostCode(String newCostCode) { + this.costCode = newCostCode; + } + + public String getBudgetId() { + return this.budgetId; + } + + public void setBudgetId(String newBudgetId) { + this.budgetId = newBudgetId; + } + + public String getParentHierarchyLevel() { + return this.parentHierarchyLevel; + } + + public void setParentHierarchyLevel(String newParentHierarchyLevel) { + this.parentHierarchyLevel = newParentHierarchyLevel; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java new file mode 100644 index 0000000..463e80a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmCriteriaDtlBean extends BaseDetailBean implements Serializable { + private String txtDescription; + + private String txtCriteriaStartDate; + + private String txtCriteriaEndDate; + + private String txtMinServicePeriod; + + private String txtReqYears; + + private String txtYearAPAR; + + private String disabbutCriteriaEndDate; + + private String disabbutCriteriaStartDate; + + public String getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getTxtCriteriaStartDate() { + return this.txtCriteriaStartDate; + } + + public void setTxtCriteriaStartDate(String newTxtCriteriaStartDate) { + this.txtCriteriaStartDate = newTxtCriteriaStartDate; + } + + public String getTxtCriteriaEndDate() { + return this.txtCriteriaEndDate; + } + + public void setTxtCriteriaEndDate(String newTxtCriteriaEndDate) { + this.txtCriteriaEndDate = newTxtCriteriaEndDate; + } + + public String getTxtMinServicePeriod() { + return this.txtMinServicePeriod; + } + + public void setTxtMinServicePeriod(String newTxtMinServicePeriod) { + this.txtMinServicePeriod = newTxtMinServicePeriod; + } + + public String getTxtReqYears() { + return this.txtReqYears; + } + + public void setTxtReqYears(String newTxtReqYears) { + this.txtReqYears = newTxtReqYears; + } + + public String getTxtYearAPAR() { + return this.txtYearAPAR; + } + + public void setTxtYearAPAR(String newTxtYearAPAR) { + this.txtYearAPAR = newTxtYearAPAR; + } + + public String getDisabbutCriteriaEndDate() { + return this.disabbutCriteriaEndDate; + } + + public void setDisabbutCriteriaEndDate(String newDisabbutCriteriaEndDate) { + this.disabbutCriteriaEndDate = newDisabbutCriteriaEndDate; + } + + public String getDisabbutCriteriaStartDate() { + return this.disabbutCriteriaStartDate; + } + + public void setDisabbutCriteriaStartDate(String newDisabbutCriteriaStartDate) { + this.disabbutCriteriaStartDate = newDisabbutCriteriaStartDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java new file mode 100644 index 0000000..ccd9a40 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmCriteriaHdrBean.java @@ -0,0 +1,136 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmCriteriaHdrBean extends BaseHeaderBean implements Serializable { + private String toGradeCode; + + private String toGradeDesc; + + private String toDesigCode; + + private String toDesigDesc; + + private String fromGradeCode; + + private String fromGradeDesc; + + private String fromDesigCode; + + private String fromDesigDesc; + + private String toGradeId; + + private String fromDesigId; + + private String toDesigId; + + private String gradeSeq; + + private String desigSeq; + + public String getToGradeCode() { + return this.toGradeCode; + } + + public void setToGradeCode(String newToGradeCode) { + this.toGradeCode = newToGradeCode; + } + + public String getToGradeDesc() { + return this.toGradeDesc; + } + + public void setToGradeDesc(String newToGradeDesc) { + this.toGradeDesc = newToGradeDesc; + } + + public String getToDesigCode() { + return this.toDesigCode; + } + + public void setToDesigCode(String newToDesigCode) { + this.toDesigCode = newToDesigCode; + } + + public String getToDesigDesc() { + return this.toDesigDesc; + } + + public void setToDesigDesc(String newToDesigDesc) { + this.toDesigDesc = newToDesigDesc; + } + + public String getFromGradeCode() { + return this.fromGradeCode; + } + + public void setFromGradeCode(String newFromGradeCode) { + this.fromGradeCode = newFromGradeCode; + } + + public String getFromGradeDesc() { + return this.fromGradeDesc; + } + + public void setFromGradeDesc(String newFromGradeDesc) { + this.fromGradeDesc = newFromGradeDesc; + } + + public String getFromDesigCode() { + return this.fromDesigCode; + } + + public void setFromDesigCode(String newFromDesigCode) { + this.fromDesigCode = newFromDesigCode; + } + + public String getFromDesigDesc() { + return this.fromDesigDesc; + } + + public void setFromDesigDesc(String newFromDesigDesc) { + this.fromDesigDesc = newFromDesigDesc; + } + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getGradeSeq() { + return this.gradeSeq; + } + + public void setGradeSeq(String newGradeSeq) { + this.gradeSeq = newGradeSeq; + } + + public String getDesigSeq() { + return this.desigSeq; + } + + public void setDesigSeq(String newDesigSeq) { + this.desigSeq = newDesigSeq; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java new file mode 100644 index 0000000..c54c72e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmExperienceDtlBean extends BaseDetailBean implements Serializable { + String startField; + + String endField; + + String txtAccBasis; + + String txtMonthsExp; + + String txtPointsAwarded; + + public String getStartField() { + return this.startField; + } + + public void setStartField(String newStartField) { + this.startField = newStartField; + } + + public String getEndField() { + return this.endField; + } + + public void setEndField(String newEndField) { + this.endField = newEndField; + } + + public String getTxtAccBasis() { + return this.txtAccBasis; + } + + public void setTxtAccBasis(String newTxtAccBasis) { + this.txtAccBasis = newTxtAccBasis; + } + + public String getTxtMonthsExp() { + return this.txtMonthsExp; + } + + public void setTxtMonthsExp(String newTxtMonthsExp) { + this.txtMonthsExp = newTxtMonthsExp; + } + + public String getTxtPointsAwarded() { + return this.txtPointsAwarded; + } + + public void setTxtPointsAwarded(String newTxtPointsAwarded) { + this.txtPointsAwarded = newTxtPointsAwarded; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java new file mode 100644 index 0000000..c44b945 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmExperienceHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmExperienceHdrBean extends BaseHeaderBean implements Serializable { + private String gradeCode; + + private String gradeDesc; + + private String desigCode; + + private String desigDesc; + + private String designationId; + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java new file mode 100644 index 0000000..d4a7c3c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssDtlBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmGenAssDtlBean extends BaseDetailBean implements Serializable { + private String empId; + + private String companyExp; + + private String postExp; + + private String posInfHdrId; + + private String expPoints; + + private String ratingPoints; + + private String category; + + private String scaleId; + + private String desigId; + + private String rating; + + private String fromPost; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getCompanyExp() { + return this.companyExp; + } + + public void setCompanyExp(String newCompanyExp) { + this.companyExp = newCompanyExp; + } + + public String getPostExp() { + return this.postExp; + } + + public void setPostExp(String newPostExp) { + this.postExp = newPostExp; + } + + public String getPosInfHdrId() { + return this.posInfHdrId; + } + + public void setPosInfHdrId(String newPosInfHdrId) { + this.posInfHdrId = newPosInfHdrId; + } + + public String getExpPoints() { + return this.expPoints; + } + + public void setExpPoints(String newExpPoints) { + this.expPoints = newExpPoints; + } + + public String getRatingPoints() { + return this.ratingPoints; + } + + public void setRatingPoints(String newRatingPoints) { + this.ratingPoints = newRatingPoints; + } + + public String getCategory() { + return this.category; + } + + public void setCategory(String newCategory) { + this.category = newCategory; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } + + public String getRating() { + return this.rating; + } + + public void setRating(String newRating) { + this.rating = newRating; + } + + public String getFromPost() { + return this.fromPost; + } + + public void setFromPost(String newFromPost) { + this.fromPost = newFromPost; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java new file mode 100644 index 0000000..48d5734 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmGenAssHdrBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmGenAssHdrBean extends BaseHeaderBean implements Serializable { + private String siteCode; + + private String prmNo; + + private String postFrom; + + private String postTo; + + private String posInfHdrId; + + private String siteId; + + private String prmId; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getPostFrom() { + return this.postFrom; + } + + public void setPostFrom(String newPostFrom) { + this.postFrom = newPostFrom; + } + + public String getPostTo() { + return this.postTo; + } + + public void setPostTo(String newPostTo) { + this.postTo = newPostTo; + } + + public String getPosInfHdrId() { + return this.posInfHdrId; + } + + public void setPosInfHdrId(String newPosInfHdrId) { + this.posInfHdrId = newPosInfHdrId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getPrmId() { + return this.prmId; + } + + public void setPrmId(String newPrmId) { + this.prmId = newPrmId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java new file mode 100644 index 0000000..3c579e0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAFinalDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmKPAFinalDtlBean extends BaseDetailBean implements Serializable { + String startField; + + String endField; + + String txtPoints; + + private String txtPromKPARatingHdrFId; + + public String getStartField() { + return this.startField; + } + + public void setStartField(String newStartField) { + this.startField = newStartField; + } + + public String getEndField() { + return this.endField; + } + + public void setEndField(String newEndField) { + this.endField = newEndField; + } + + public String getTxtPoints() { + return this.txtPoints; + } + + public void setTxtPoints(String newTxtPoints) { + this.txtPoints = newTxtPoints; + } + + public String getTxtPromKPARatingHdrFId() { + return this.txtPromKPARatingHdrFId; + } + + public void setTxtPromKPARatingHdrFId(String newTxtPromKPARatingHdrFId) { + this.txtPromKPARatingHdrFId = newTxtPromKPARatingHdrFId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java new file mode 100644 index 0000000..8377866 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPAPoswiseDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmKPAPoswiseDtlBean extends BaseDetailBean implements Serializable { + String txtKPAGroupId; + + String txtKPAGroupCode; + + String txtKPAGroupDesc; + + String txtReqAvgRating; + + private String txtPromKPARatingHdrId; + + private String disabbutForPos; + + public String getTxtKPAGroupId() { + return this.txtKPAGroupId; + } + + public void setTxtKPAGroupId(String newTxtKPAGroupId) { + this.txtKPAGroupId = newTxtKPAGroupId; + } + + public String getTxtKPAGroupCode() { + return this.txtKPAGroupCode; + } + + public void setTxtKPAGroupCode(String newTxtKPAGroupCode) { + this.txtKPAGroupCode = newTxtKPAGroupCode; + } + + public String getTxtKPAGroupDesc() { + return this.txtKPAGroupDesc; + } + + public void setTxtKPAGroupDesc(String newTxtKPAGroupDesc) { + this.txtKPAGroupDesc = newTxtKPAGroupDesc; + } + + public String getTxtReqAvgRating() { + return this.txtReqAvgRating; + } + + public void setTxtReqAvgRating(String newTxtReqAvgRating) { + this.txtReqAvgRating = newTxtReqAvgRating; + } + + public String getTxtPromKPARatingHdrId() { + return this.txtPromKPARatingHdrId; + } + + public void setTxtPromKPARatingHdrId(String newTxtPromKPARatingHdrId) { + this.txtPromKPARatingHdrId = newTxtPromKPARatingHdrId; + } + + public String getDisabbutForPos() { + return this.disabbutForPos; + } + + public void setDisabbutForPos(String newDisabbutForPos) { + this.disabbutForPos = newDisabbutForPos; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java new file mode 100644 index 0000000..e048b7c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmKPARatingHdrBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmKPARatingHdrBean extends BaseHeaderBean implements Serializable { + String ratingId; + + String ratingNo; + + String maxRating; + + String minRating; + + private String gradeCode; + + private String gradeDesc; + + private String desigCode; + + private String desigDesc; + + private String gradeId; + + private String desigId; + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String getRatingNo() { + return this.ratingNo; + } + + public void setRatingNo(String newRatingNo) { + this.ratingNo = newRatingNo; + } + + public String getMaxRating() { + return this.maxRating; + } + + public void setMaxRating(String newMaxRating) { + this.maxRating = newMaxRating; + } + + public String getMinRating() { + return this.minRating; + } + + public void setMinRating(String newMinRating) { + this.minRating = newMinRating; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java new file mode 100644 index 0000000..5d538df --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmNoticeDtlDtlBean extends BaseDetailBean implements Serializable { + String txtDesignation; + + String txtVacancies; + + String txtExamDate; + + private String txtGradeId; + + private String txtDesigId; + + private String txtGrade; + + private String disabbutGrade; + + private String disabbutDesig; + + public String getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String getTxtVacancies() { + return this.txtVacancies; + } + + public void setTxtVacancies(String newTxtVacancies) { + this.txtVacancies = newTxtVacancies; + } + + public String getTxtExamDate() { + return this.txtExamDate; + } + + public void setTxtExamDate(String newTxtExamDate) { + this.txtExamDate = newTxtExamDate; + } + + public String getTxtGradeId() { + return this.txtGradeId; + } + + public void setTxtGradeId(String newTxtGradeId) { + this.txtGradeId = newTxtGradeId; + } + + public String getTxtDesigId() { + return this.txtDesigId; + } + + public void setTxtDesigId(String newTxtDesigId) { + this.txtDesigId = newTxtDesigId; + } + + public String getTxtGrade() { + return this.txtGrade; + } + + public void setTxtGrade(String newTxtGrade) { + this.txtGrade = newTxtGrade; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getDisabbutDesig() { + return this.disabbutDesig; + } + + public void setDisabbutDesig(String newDisabbutDesig) { + this.disabbutDesig = newDisabbutDesig; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java new file mode 100644 index 0000000..ba111f1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmNoticeDtlHdrBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmNoticeDtlHdrBean extends BaseHeaderBean implements Serializable { + String noticeId; + + String noticeNo; + + String noticeDate; + + String desc; + + public String getNoticeId() { + return this.noticeId; + } + + public void setNoticeId(String newNoticeId) { + this.noticeId = newNoticeId; + } + + public String getNoticeNo() { + return this.noticeNo; + } + + public void setNoticeNo(String newNoticeNo) { + this.noticeNo = newNoticeNo; + } + + public String getNoticeDate() { + return this.noticeDate; + } + + public void setNoticeDate(String newNoticeDate) { + this.noticeDate = newNoticeDate; + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java new file mode 100644 index 0000000..6aeb89b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmOrderHdrBean.java @@ -0,0 +1,226 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmOrderHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNo; + + private String firstName; + + private String middleName; + + private String lastName; + + private String grade; + + private String designation; + + private String location; + + private String pastExp; + + private String presExp; + + private String orderNo; + + private String toGrade; + + private String toDesig; + + private String effecDate; + + private String approvedBy; + + private String remarks; + + private String orderNoId; + + private String empId; + + private String approverId; + + private String toGradeId; + + private String toDesigId; + + private String gradeSeq; + + private String desigSeq; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getPastExp() { + return this.pastExp; + } + + public void setPastExp(String newPastExp) { + this.pastExp = newPastExp; + } + + public String getPresExp() { + return this.presExp; + } + + public void setPresExp(String newPresExp) { + this.presExp = newPresExp; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getToGrade() { + return this.toGrade; + } + + public void setToGrade(String newToGrade) { + this.toGrade = newToGrade; + } + + public String getToDesig() { + return this.toDesig; + } + + public void setToDesig(String newToDesig) { + this.toDesig = newToDesig; + } + + public String getEffecDate() { + return this.effecDate; + } + + public void setEffecDate(String newEffecDate) { + this.effecDate = newEffecDate; + } + + public String getApprovedBy() { + return this.approvedBy; + } + + public void setApprovedBy(String newApprovedBy) { + this.approvedBy = newApprovedBy; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getApproverId() { + return this.approverId; + } + + public void setApproverId(String newApproverId) { + this.approverId = newApproverId; + } + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getGradeSeq() { + return this.gradeSeq; + } + + public void setGradeSeq(String newGradeSeq) { + this.gradeSeq = newGradeSeq; + } + + public String getDesigSeq() { + return this.desigSeq; + } + + public void setDesigSeq(String newDesigSeq) { + this.desigSeq = newDesigSeq; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java new file mode 100644 index 0000000..d9ec504 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmQualCriteriaDtlBean extends BaseDetailBean implements Serializable { + private String txtQualCode; + + private String txtQualDesc; + + private String txtMinPercentage; + + private String hdnQualificationId; + + private String hdnPrevDtlId; + + public String getTxtQualCode() { + return this.txtQualCode; + } + + public void setTxtQualCode(String newTxtQualCode) { + this.txtQualCode = newTxtQualCode; + } + + public String getTxtQualDesc() { + return this.txtQualDesc; + } + + public void setTxtQualDesc(String newTxtQualDesc) { + this.txtQualDesc = newTxtQualDesc; + } + + public String getTxtMinPercentage() { + return this.txtMinPercentage; + } + + public void setTxtMinPercentage(String newTxtMinPercentage) { + this.txtMinPercentage = newTxtMinPercentage; + } + + public String getHdnQualificationId() { + return this.hdnQualificationId; + } + + public void setHdnQualificationId(String newHdnQualificationId) { + this.hdnQualificationId = newHdnQualificationId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java new file mode 100644 index 0000000..4551a8f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmQualCriteriaHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmQualCriteriaHdrBean extends BaseHeaderBean implements Serializable { + private String gradeCode; + + private String gradeDesc; + + private String desigDesc; + + private String desigCode; + + private String designationId; + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java new file mode 100644 index 0000000..da99abd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmTestScoreDtlBean extends BaseDetailBean implements Serializable { + String endField; + + String startField; + + String txtPoints; + + public String getEndField() { + return this.endField; + } + + public void setEndField(String newEndField) { + this.endField = newEndField; + } + + public String getStartField() { + return this.startField; + } + + public void setStartField(String newStartField) { + this.startField = newStartField; + } + + public String getTxtPoints() { + return this.txtPoints; + } + + public void setTxtPoints(String newTxtPoints) { + this.txtPoints = newTxtPoints; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java new file mode 100644 index 0000000..4f104b3 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmTestScoreHdrBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmTestScoreHdrBean extends BaseHeaderBean implements Serializable { + String desc; + + String examType; + + String maxScore; + + String maxPoints; + + String examDesc; + + String designationId; + + private String gradeCode; + + private String gradeDesc; + + private String desigDesc; + + private String desigCode; + + private String gradeId; + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public String getExamType() { + return this.examType; + } + + public void setExamType(String newExamType) { + this.examType = newExamType; + } + + public String getMaxScore() { + return this.maxScore; + } + + public void setMaxScore(String newMaxScore) { + this.maxScore = newMaxScore; + } + + public String getMaxPoints() { + return this.maxPoints; + } + + public void setMaxPoints(String newMaxPoints) { + this.maxPoints = newMaxPoints; + } + + public String getExamDesc() { + return this.examDesc; + } + + public void setExamDesc(String newExamDesc) { + this.examDesc = newExamDesc; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java new file mode 100644 index 0000000..3e209f0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssDtlBean.java @@ -0,0 +1,236 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmPrmViewAssDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpNo; + + private String txtEmpName; + + private String txtFromPosCode; + + private String txtScale; + + private String txtSrvYrs; + + private String txtCurrSrvYrs; + + private String txtSrvYrsPoints; + + private String txtAvgAparPts; + + private String txtWrittenTestMarks; + + private String txtWrittenTestPts; + + private String txtGDMarks; + + private String txtGDPts; + + private String txtInterviewMarks; + + private String txtInterviewPts; + + private String txtTotalPtsAwarded; + + private boolean txtEligProm; + + String employeeId; + + String hdnPrevDtlId; + + private String txtAparPts; + + private String hdnPromEligibility; + + private String positionId; + + private String scaleId; + + String headerPositionId; + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtFromPosCode() { + return this.txtFromPosCode; + } + + public void setTxtFromPosCode(String newTxtFromPosCode) { + this.txtFromPosCode = newTxtFromPosCode; + } + + public String getTxtScale() { + return this.txtScale; + } + + public void setTxtScale(String newTxtScale) { + this.txtScale = newTxtScale; + } + + public String getTxtSrvYrs() { + return this.txtSrvYrs; + } + + public void setTxtSrvYrs(String newTxtSrvYrs) { + this.txtSrvYrs = newTxtSrvYrs; + } + + public String getTxtCurrSrvYrs() { + return this.txtCurrSrvYrs; + } + + public void setTxtCurrSrvYrs(String newTxtCurrSrvYrs) { + this.txtCurrSrvYrs = newTxtCurrSrvYrs; + } + + public String getTxtSrvYrsPoints() { + return this.txtSrvYrsPoints; + } + + public void setTxtSrvYrsPoints(String newTxtSrvYrsPoints) { + this.txtSrvYrsPoints = newTxtSrvYrsPoints; + } + + public String getTxtAvgAparPts() { + return this.txtAvgAparPts; + } + + public void setTxtAvgAparPts(String newTxtAvgAparPts) { + this.txtAvgAparPts = newTxtAvgAparPts; + } + + public String getTxtWrittenTestMarks() { + return this.txtWrittenTestMarks; + } + + public void setTxtWrittenTestMarks(String newTxtWrittenTestMarks) { + this.txtWrittenTestMarks = newTxtWrittenTestMarks; + } + + public String getTxtWrittenTestPts() { + return this.txtWrittenTestPts; + } + + public void setTxtWrittenTestPts(String newTxtWrittenTestPts) { + this.txtWrittenTestPts = newTxtWrittenTestPts; + } + + public String getTxtGDMarks() { + return this.txtGDMarks; + } + + public void setTxtGDMarks(String newTxtGDMarks) { + this.txtGDMarks = newTxtGDMarks; + } + + public String getTxtGDPts() { + return this.txtGDPts; + } + + public void setTxtGDPts(String newTxtGDPts) { + this.txtGDPts = newTxtGDPts; + } + + public String getTxtInterviewMarks() { + return this.txtInterviewMarks; + } + + public void setTxtInterviewMarks(String newTxtInterviewMarks) { + this.txtInterviewMarks = newTxtInterviewMarks; + } + + public String getTxtInterviewPts() { + return this.txtInterviewPts; + } + + public void setTxtInterviewPts(String newTxtInterviewPts) { + this.txtInterviewPts = newTxtInterviewPts; + } + + public String getTxtTotalPtsAwarded() { + return this.txtTotalPtsAwarded; + } + + public void setTxtTotalPtsAwarded(String newTxtTotalPtsAwarded) { + this.txtTotalPtsAwarded = newTxtTotalPtsAwarded; + } + + public boolean getTxtEligProm() { + return this.txtEligProm; + } + + public void setTxtEligProm(boolean newTxtEligProm) { + this.txtEligProm = newTxtEligProm; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtAparPts() { + return this.txtAparPts; + } + + public void setTxtAparPts(String newTxtAparPts) { + this.txtAparPts = newTxtAparPts; + } + + public String getHdnPromEligibility() { + return this.hdnPromEligibility; + } + + public void setHdnPromEligibility(String newHdnPromEligibility) { + this.hdnPromEligibility = newHdnPromEligibility; + } + + public String getPositionId() { + return this.positionId; + } + + public void setPositionId(String newPositionId) { + this.positionId = newPositionId; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } + + public String getHeaderPositionId() { + return this.headerPositionId; + } + + public void setHeaderPositionId(String newHeaderPositionId) { + this.headerPositionId = newHeaderPositionId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java new file mode 100644 index 0000000..5a2d60d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmPrmViewAssHdrBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmPrmViewAssHdrBean extends BaseHeaderBean implements Serializable { + private String siteCode; + + private String prmNo; + + private String toPosition; + + String changeEnb = "S"; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getToPosition() { + return this.toPosition; + } + + public void setToPosition(String newToPosition) { + this.toPosition = newToPosition; + } + + public String getChangeEnb() { + return this.changeEnb; + } + + public void setChangeEnb(String newChangeEnb) { + this.changeEnb = newChangeEnb; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java new file mode 100644 index 0000000..a179c4d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrHdrBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecAdvAttrHdrBean extends BaseHeaderBean implements Serializable { + private String changeEnb = "S"; + + String refNo; + + private String category; + + private String desgn; + + public String getChangeEnb() { + return this.changeEnb; + } + + public void setChangeEnb(String newChangeEnb) { + this.changeEnb = newChangeEnb; + } + + public String getRefNo() { + return this.refNo; + } + + public void setRefNo(String newRefNo) { + this.refNo = newRefNo; + } + + public String getCategory() { + return this.category; + } + + public void setCategory(String newCategory) { + this.category = newCategory; + } + + public String getDesgn() { + return this.desgn; + } + + public void setDesgn(String newDesgn) { + this.desgn = newDesgn; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java new file mode 100644 index 0000000..59293ef --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrJobDescDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrJobDescDtlBean extends BaseDetailBean implements Serializable { + private String txtJobDesc; + + private String txtSrlNo; + + private String hdnPrevDtlId; + + public String getTxtJobDesc() { + return this.txtJobDesc; + } + + public void setTxtJobDesc(String newTxtJobDesc) { + this.txtJobDesc = newTxtJobDesc; + } + + public String getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java new file mode 100644 index 0000000..63a691d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLngReqDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrLngReqDtlBean extends BaseDetailBean implements Serializable { + private String txtLangCode; + + private String txtReqType; + + private String hdnLanguageId; + + private String hdnPrevDtlId; + + private String txtLangDesc; + + public String getTxtLangCode() { + return this.txtLangCode; + } + + public void setTxtLangCode(String newTxtLangCode) { + this.txtLangCode = newTxtLangCode; + } + + public String getTxtReqType() { + return this.txtReqType; + } + + public void setTxtReqType(String newTxtReqType) { + this.txtReqType = newTxtReqType; + } + + public String getHdnLanguageId() { + return this.hdnLanguageId; + } + + public void setHdnLanguageId(String newHdnLanguageId) { + this.hdnLanguageId = newHdnLanguageId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtLangDesc() { + return this.txtLangDesc; + } + + public void setTxtLangDesc(String newTxtLangDesc) { + this.txtLangDesc = newTxtLangDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java new file mode 100644 index 0000000..e5637f0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrLocVacencyDtlBean.java @@ -0,0 +1,96 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrLocVacencyDtlBean extends BaseDetailBean implements Serializable { + private String txtLocCode; + + private String txtNoOfVacancy; + + private String hdnLocationId; + + private String hdnPrevDtlId; + + private String txtLocDesc; + + private String txtState; + + private String txtStateId; + + private String txtStateCode; + + private String txtCity; + + public String getTxtLocCode() { + return this.txtLocCode; + } + + public void setTxtLocCode(String newTxtLocCode) { + this.txtLocCode = newTxtLocCode; + } + + public String getTxtNoOfVacancy() { + return this.txtNoOfVacancy; + } + + public void setTxtNoOfVacancy(String newTxtNoOfVacancy) { + this.txtNoOfVacancy = newTxtNoOfVacancy; + } + + public String getHdnLocationId() { + return this.hdnLocationId; + } + + public void setHdnLocationId(String newHdnLocationId) { + this.hdnLocationId = newHdnLocationId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtLocDesc() { + return this.txtLocDesc; + } + + public void setTxtLocDesc(String newTxtLocDesc) { + this.txtLocDesc = newTxtLocDesc; + } + + public String getTxtState() { + return this.txtState; + } + + public void setTxtState(String newTxtState) { + this.txtState = newTxtState; + } + + public String getTxtStateId() { + return this.txtStateId; + } + + public void setTxtStateId(String newTxtStateId) { + this.txtStateId = newTxtStateId; + } + + public String getTxtStateCode() { + return this.txtStateCode; + } + + public void setTxtStateCode(String newTxtStateCode) { + this.txtStateCode = newTxtStateCode; + } + + public String getTxtCity() { + return this.txtCity; + } + + public void setTxtCity(String newTxtCity) { + this.txtCity = newTxtCity; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java new file mode 100644 index 0000000..3623ec0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrQualReqDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrQualReqDtlBean extends BaseDetailBean implements Serializable { + private String txtQualCode; + + private String txtMandatoryFlag; + + private String txtMaxmQualFlag; + + private String hdnQualificationId; + + private String hdnPrevDtlId; + + private String txtQualDesc; + + private String txtSpecialisation; + + private String txtExposureIn; + + public String getTxtQualCode() { + return this.txtQualCode; + } + + public void setTxtQualCode(String newTxtQualCode) { + this.txtQualCode = newTxtQualCode; + } + + public String getTxtMandatoryFlag() { + return this.txtMandatoryFlag; + } + + public void setTxtMandatoryFlag(String newTxtMandatoryFlag) { + this.txtMandatoryFlag = newTxtMandatoryFlag; + } + + public String getTxtMaxmQualFlag() { + return this.txtMaxmQualFlag; + } + + public void setTxtMaxmQualFlag(String newTxtMaxmQualFlag) { + this.txtMaxmQualFlag = newTxtMaxmQualFlag; + } + + public String getHdnQualificationId() { + return this.hdnQualificationId; + } + + public void setHdnQualificationId(String newHdnQualificationId) { + this.hdnQualificationId = newHdnQualificationId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtQualDesc() { + return this.txtQualDesc; + } + + public void setTxtQualDesc(String newTxtQualDesc) { + this.txtQualDesc = newTxtQualDesc; + } + + public String getTxtSpecialisation() { + return this.txtSpecialisation; + } + + public void setTxtSpecialisation(String newTxtSpecialisation) { + this.txtSpecialisation = newTxtSpecialisation; + } + + public String getTxtExposureIn() { + return this.txtExposureIn; + } + + public void setTxtExposureIn(String newTxtExposureIn) { + this.txtExposureIn = newTxtExposureIn; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java new file mode 100644 index 0000000..88b00be --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrSkillReqDtlBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrSkillReqDtlBean extends BaseDetailBean implements Serializable { + private String txtSkillCode; + + private String txtSkillDesc; + + private String hdnSkillId; + + private String hdnPrevDtlId; + + private String txtSkill; + + private String txtRemarks; + + public String getTxtSkillCode() { + return this.txtSkillCode; + } + + public void setTxtSkillCode(String newTxtSkillCode) { + this.txtSkillCode = newTxtSkillCode; + } + + public String getTxtSkillDesc() { + return this.txtSkillDesc; + } + + public void setTxtSkillDesc(String newTxtSkillDesc) { + this.txtSkillDesc = newTxtSkillDesc; + } + + public String getHdnSkillId() { + return this.hdnSkillId; + } + + public void setHdnSkillId(String newHdnSkillId) { + this.hdnSkillId = newHdnSkillId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtSkill() { + return this.txtSkill; + } + + public void setTxtSkill(String newTxtSkill) { + this.txtSkill = newTxtSkill; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java new file mode 100644 index 0000000..7c930fe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvAttrWorkExpDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvAttrWorkExpDtlBean extends BaseDetailBean implements Serializable { + private String txtReqExp; + + private String txtMinWrkExp; + + private String txtMaxWrkExp; + + private String workId; + + private String hdnPrevDtlId; + + private String txtWorkDesc; + + private String txtExpArea; + + private String txtExpIn; + + public String getTxtReqExp() { + return this.txtReqExp; + } + + public void setTxtReqExp(String newTxtReqExp) { + this.txtReqExp = newTxtReqExp; + } + + public String getTxtMinWrkExp() { + return this.txtMinWrkExp; + } + + public void setTxtMinWrkExp(String newTxtMinWrkExp) { + this.txtMinWrkExp = newTxtMinWrkExp; + } + + public String getTxtMaxWrkExp() { + return this.txtMaxWrkExp; + } + + public void setTxtMaxWrkExp(String newTxtMaxWrkExp) { + this.txtMaxWrkExp = newTxtMaxWrkExp; + } + + public String getWorkId() { + return this.workId; + } + + public void setWorkId(String newWorkId) { + this.workId = newWorkId; + } + + public String getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getTxtWorkDesc() { + return this.txtWorkDesc; + } + + public void setTxtWorkDesc(String newTxtWorkDesc) { + this.txtWorkDesc = newTxtWorkDesc; + } + + public String getTxtExpArea() { + return this.txtExpArea; + } + + public void setTxtExpArea(String newTxtExpArea) { + this.txtExpArea = newTxtExpArea; + } + + public String getTxtExpIn() { + return this.txtExpIn; + } + + public void setTxtExpIn(String newTxtExpIn) { + this.txtExpIn = newTxtExpIn; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java new file mode 100644 index 0000000..3df85fb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnDtlBean.java @@ -0,0 +1,166 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecAdvtMtnDtlBean extends BaseDetailBean implements Serializable { + String txtAmount; + + String txtApplicantCategory; + + String txtApplicantCategoryId; + + String txtDesignation; + + String txtDesignationId; + + String txtMaxAgeOnDate; + + String txtMaximumAge; + + String txtMinimumAge; + + String txtReservationCategory; + + String txtReservationCategoryId; + + String txtSex; + + String txtTotalVacancy; + + private String txtGrade; + + private String txtGradeId; + + private String txtLevel; + + private String txtGradeCode; + + public String getTxtAmount() { + return this.txtAmount; + } + + public void setTxtAmount(String newTxtAmount) { + this.txtAmount = newTxtAmount; + } + + public String getTxtApplicantCategory() { + return this.txtApplicantCategory; + } + + public void setTxtApplicantCategory(String newTxtApplicantCategory) { + this.txtApplicantCategory = newTxtApplicantCategory; + } + + public String getTxtApplicantCategoryId() { + return this.txtApplicantCategoryId; + } + + public void setTxtApplicantCategoryId(String newTxtApplicantCategoryId) { + this.txtApplicantCategoryId = newTxtApplicantCategoryId; + } + + public String getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String getTxtDesignationId() { + return this.txtDesignationId; + } + + public void setTxtDesignationId(String newTxtDesignationId) { + this.txtDesignationId = newTxtDesignationId; + } + + public String getTxtMaxAgeOnDate() { + return this.txtMaxAgeOnDate; + } + + public void setTxtMaxAgeOnDate(String newTxtMaxAgeOnDate) { + this.txtMaxAgeOnDate = newTxtMaxAgeOnDate; + } + + public String getTxtMaximumAge() { + return this.txtMaximumAge; + } + + public void setTxtMaximumAge(String newTxtMaximumAge) { + this.txtMaximumAge = newTxtMaximumAge; + } + + public String getTxtMinimumAge() { + return this.txtMinimumAge; + } + + public void setTxtMinimumAge(String newTxtMinimumAge) { + this.txtMinimumAge = newTxtMinimumAge; + } + + public String getTxtReservationCategory() { + return this.txtReservationCategory; + } + + public void setTxtReservationCategory(String newTxtReservationCategory) { + this.txtReservationCategory = newTxtReservationCategory; + } + + public String getTxtReservationCategoryId() { + return this.txtReservationCategoryId; + } + + public void setTxtReservationCategoryId(String newTxtReservationCategoryId) { + this.txtReservationCategoryId = newTxtReservationCategoryId; + } + + public String getTxtSex() { + return this.txtSex; + } + + public void setTxtSex(String newTxtSex) { + this.txtSex = newTxtSex; + } + + public String getTxtTotalVacancy() { + return this.txtTotalVacancy; + } + + public void setTxtTotalVacancy(String newTxtTotalVacancy) { + this.txtTotalVacancy = newTxtTotalVacancy; + } + + public String getTxtGrade() { + return this.txtGrade; + } + + public void setTxtGrade(String newTxtGrade) { + this.txtGrade = newTxtGrade; + } + + public String getTxtGradeId() { + return this.txtGradeId; + } + + public void setTxtGradeId(String newTxtGradeId) { + this.txtGradeId = newTxtGradeId; + } + + public String getTxtLevel() { + return this.txtLevel; + } + + public void setTxtLevel(String newTxtLevel) { + this.txtLevel = newTxtLevel; + } + + public String getTxtGradeCode() { + return this.txtGradeCode; + } + + public void setTxtGradeCode(String newTxtGradeCode) { + this.txtGradeCode = newTxtGradeCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java new file mode 100644 index 0000000..8c37fcb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecAdvtMtnHdrBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecAdvtMtnHdrBean extends BaseHeaderBean implements Serializable { + String description; + + String entryMode; + + String entryModeId; + + String lastDate; + + String mediaName; + + String mediaType; + + String minInterviewScore; + + String minTotalScore; + + String minWrittenScoreA; + + String minWrittenScoreB; + + String referenceDate; + + String referenceNo; + + String referenceNoId; + + private String minInterviewScore2; + + private String minInterviewScore3; + + private String venue; + + private String date; + + private String time; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String getLastDate() { + return this.lastDate; + } + + public void setLastDate(String newLastDate) { + this.lastDate = newLastDate; + } + + public String getMediaName() { + return this.mediaName; + } + + public void setMediaName(String newMediaName) { + this.mediaName = newMediaName; + } + + public String getMediaType() { + return this.mediaType; + } + + public void setMediaType(String newMediaType) { + this.mediaType = newMediaType; + } + + public String getMinInterviewScore() { + return this.minInterviewScore; + } + + public void setMinInterviewScore(String newMinInterviewScore) { + this.minInterviewScore = newMinInterviewScore; + } + + public String getMinTotalScore() { + return this.minTotalScore; + } + + public void setMinTotalScore(String newMinTotalScore) { + this.minTotalScore = newMinTotalScore; + } + + public String getMinWrittenScoreA() { + return this.minWrittenScoreA; + } + + public void setMinWrittenScoreA(String newMinWrittenScoreA) { + this.minWrittenScoreA = newMinWrittenScoreA; + } + + public String getMinWrittenScoreB() { + return this.minWrittenScoreB; + } + + public void setMinWrittenScoreB(String newMinWrittenScoreB) { + this.minWrittenScoreB = newMinWrittenScoreB; + } + + public String getReferenceDate() { + return this.referenceDate; + } + + public void setReferenceDate(String newReferenceDate) { + this.referenceDate = newReferenceDate; + } + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getReferenceNoId() { + return this.referenceNoId; + } + + public void setReferenceNoId(String newReferenceNoId) { + this.referenceNoId = newReferenceNoId; + } + + public String getMinInterviewScore2() { + return this.minInterviewScore2; + } + + public void setMinInterviewScore2(String newMinInterviewScore2) { + this.minInterviewScore2 = newMinInterviewScore2; + } + + public String getMinInterviewScore3() { + return this.minInterviewScore3; + } + + public void setMinInterviewScore3(String newMinInterviewScore3) { + this.minInterviewScore3 = newMinInterviewScore3; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getTime() { + return this.time; + } + + public void setTime(String newTime) { + this.time = newTime; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java new file mode 100644 index 0000000..2605a89 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnAddDtlBean.java @@ -0,0 +1,586 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnAddDtlBean extends BaseDetailBean implements Serializable { + private String permPhone; + + private String permPin; + + private String permAddress; + + private String permCity; + + private String permState; + + private String permCountry; + + private String presPhone; + + private String presPin; + + private String presAddress; + + private String presCity; + + private String presState; + + private String presCountry; + + private String permStateId; + + private String presStateId; + + private String presCountryId; + + private String permCountryId; + + private String motherToungueId; + + private String nationalityId; + + private String maritalStatusId; + + private String reservationCategoryId; + + private String guardianName; + + private String motherTongue; + + private String dateOfBirth; + + private String nationality; + + private String maritalStatus; + + private String sex; + + private String mail; + + private String reservationCategory; + + private String appliedEarlier; + + private String handicappedFlag; + + private String motherToungueCode; + + private String nationalityCode; + + private String passportNo; + + private String placeOfIssue; + + private String expiryDate; + + private String issueDate; + + private String chequeNo; + + private String submittedAmount; + + private String submissionDate; + + private String arrestedBefore; + + private String imprisonedBefore; + + private String prosecutedBefore; + + private String finedByCourt; + + private String placeOfBirth; + + private String maritalStatusDesc; + + private String relatedEmpId; + + private String relatedToEmp; + + private String relatedEmpName; + + private String healthRecord; + + private String religion; + + private String religionId; + + private String bloodGroup; + + private String prevEmpFlag; + + private String prevEmpDtls; + + private String hobbies; + + private String grossExpected; + + private String addlInfo; + + private String reasons; + + public String getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String newPassportNo) { + this.passportNo = newPassportNo; + } + + public String getPlaceOfIssue() { + return this.placeOfIssue; + } + + public void setPlaceOfIssue(String newPlaceOfIssue) { + this.placeOfIssue = newPlaceOfIssue; + } + + public String getExpiryDate() { + return this.expiryDate; + } + + public void setExpiryDate(String newExpiryDate) { + this.expiryDate = newExpiryDate; + } + + public String getIssueDate() { + return this.issueDate; + } + + public void setIssueDate(String newIssueDate) { + this.issueDate = newIssueDate; + } + + public String getChequeNo() { + return this.chequeNo; + } + + public void setChequeNo(String newChequeNo) { + this.chequeNo = newChequeNo; + } + + public String getSubmittedAmount() { + return this.submittedAmount; + } + + public void setSubmittedAmount(String newSubmittedAmount) { + this.submittedAmount = newSubmittedAmount; + } + + public String getSubmissionDate() { + return this.submissionDate; + } + + public void setSubmissionDate(String newSubmissionDate) { + this.submissionDate = newSubmissionDate; + } + + public String getArrestedBefore() { + return this.arrestedBefore; + } + + public void setArrestedBefore(String newArrestedBefore) { + this.arrestedBefore = newArrestedBefore; + } + + public String getImprisonedBefore() { + return this.imprisonedBefore; + } + + public void setImprisonedBefore(String newImprisonedBefore) { + this.imprisonedBefore = newImprisonedBefore; + } + + public String getProsecutedBefore() { + return this.prosecutedBefore; + } + + public void setProsecutedBefore(String newProsecutedBefore) { + this.prosecutedBefore = newProsecutedBefore; + } + + public String getFinedByCourt() { + return this.finedByCourt; + } + + public void setFinedByCourt(String newFinedByCourt) { + this.finedByCourt = newFinedByCourt; + } + + public String getMotherToungueId() { + return this.motherToungueId; + } + + public void setMotherToungueId(String newMotherToungueId) { + this.motherToungueId = newMotherToungueId; + } + + public String getNationalityId() { + return this.nationalityId; + } + + public void setNationalityId(String newNationalityId) { + this.nationalityId = newNationalityId; + } + + public String getMaritalStatusId() { + return this.maritalStatusId; + } + + public void setMaritalStatusId(String newMaritalStatusId) { + this.maritalStatusId = newMaritalStatusId; + } + + public String getReservationCategoryId() { + return this.reservationCategoryId; + } + + public void setReservationCategoryId(String newReservationCategoryId) { + this.reservationCategoryId = newReservationCategoryId; + } + + public String getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String newGuardianName) { + this.guardianName = newGuardianName; + } + + public String getMotherTongue() { + return this.motherTongue; + } + + public void setMotherTongue(String newMotherTongue) { + this.motherTongue = newMotherTongue; + } + + public String getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String getNationality() { + return this.nationality; + } + + public void setNationality(String newNationality) { + this.nationality = newNationality; + } + + public String getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getMail() { + return this.mail; + } + + public void setMail(String newMail) { + this.mail = newMail; + } + + public String getReservationCategory() { + return this.reservationCategory; + } + + public void setReservationCategory(String newReservationCategory) { + this.reservationCategory = newReservationCategory; + } + + public String getAppliedEarlier() { + return this.appliedEarlier; + } + + public void setAppliedEarlier(String newAppliedEarlier) { + this.appliedEarlier = newAppliedEarlier; + } + + public String getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getMotherToungueCode() { + return this.motherToungueCode; + } + + public void setMotherToungueCode(String newMotherToungueCode) { + this.motherToungueCode = newMotherToungueCode; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getPermPhone() { + return this.permPhone; + } + + public void setPermPhone(String newPermPhone) { + this.permPhone = newPermPhone; + } + + public String getPermPin() { + return this.permPin; + } + + public void setPermPin(String newPermPin) { + this.permPin = newPermPin; + } + + public String getPermAddress() { + return this.permAddress; + } + + public void setPermAddress(String newPermAddress) { + this.permAddress = newPermAddress; + } + + public String getPermCity() { + return this.permCity; + } + + public void setPermCity(String newPermCity) { + this.permCity = newPermCity; + } + + public String getPermState() { + return this.permState; + } + + public void setPermState(String newPermState) { + this.permState = newPermState; + } + + public String getPermCountry() { + return this.permCountry; + } + + public void setPermCountry(String newPermCountry) { + this.permCountry = newPermCountry; + } + + public String getPresPhone() { + return this.presPhone; + } + + public void setPresPhone(String newPresPhone) { + this.presPhone = newPresPhone; + } + + public String getPresPin() { + return this.presPin; + } + + public void setPresPin(String newPresPin) { + this.presPin = newPresPin; + } + + public String getPresAddress() { + return this.presAddress; + } + + public void setPresAddress(String newPresAddress) { + this.presAddress = newPresAddress; + } + + public String getPresCity() { + return this.presCity; + } + + public void setPresCity(String newPresCity) { + this.presCity = newPresCity; + } + + public String getPresState() { + return this.presState; + } + + public void setPresState(String newPresState) { + this.presState = newPresState; + } + + public String getPresCountry() { + return this.presCountry; + } + + public void setPresCountry(String newPresCountry) { + this.presCountry = newPresCountry; + } + + public String getPermStateId() { + return this.permStateId; + } + + public void setPermStateId(String newPermStateId) { + this.permStateId = newPermStateId; + } + + public String getPresStateId() { + return this.presStateId; + } + + public void setPresStateId(String newPresStateId) { + this.presStateId = newPresStateId; + } + + public String getPresCountryId() { + return this.presCountryId; + } + + public void setPresCountryId(String newPresCountryId) { + this.presCountryId = newPresCountryId; + } + + public String getPermCountryId() { + return this.permCountryId; + } + + public void setPermCountryId(String newPermCountryId) { + this.permCountryId = newPermCountryId; + } + + public String getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getMaritalStatusDesc() { + return this.maritalStatusDesc; + } + + public void setMaritalStatusDesc(String newMaritalStatusDesc) { + this.maritalStatusDesc = newMaritalStatusDesc; + } + + public String getRelatedEmpId() { + return this.relatedEmpId; + } + + public void setRelatedEmpId(String newRelatedEmpId) { + this.relatedEmpId = newRelatedEmpId; + } + + public String getRelatedToEmp() { + return this.relatedToEmp; + } + + public void setRelatedToEmp(String newRelatedToEmp) { + this.relatedToEmp = newRelatedToEmp; + } + + public String getRelatedEmpName() { + return this.relatedEmpName; + } + + public void setRelatedEmpName(String newRelatedEmpName) { + this.relatedEmpName = newRelatedEmpName; + } + + public String getHealthRecord() { + return this.healthRecord; + } + + public void setHealthRecord(String newHealthRecord) { + this.healthRecord = newHealthRecord; + } + + public String getReligion() { + return this.religion; + } + + public void setReligion(String newReligion) { + this.religion = newReligion; + } + + public String getReligionId() { + return this.religionId; + } + + public void setReligionId(String newReligionId) { + this.religionId = newReligionId; + } + + public String getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getPrevEmpFlag() { + return this.prevEmpFlag; + } + + public void setPrevEmpFlag(String newPrevEmpFlag) { + this.prevEmpFlag = newPrevEmpFlag; + } + + public String getPrevEmpDtls() { + return this.prevEmpDtls; + } + + public void setPrevEmpDtls(String newPrevEmpDtls) { + this.prevEmpDtls = newPrevEmpDtls; + } + + public String getHobbies() { + return this.hobbies; + } + + public void setHobbies(String newHobbies) { + this.hobbies = newHobbies; + } + + public String getGrossExpected() { + return this.grossExpected; + } + + public void setGrossExpected(String newGrossExpected) { + this.grossExpected = newGrossExpected; + } + + public String getAddlInfo() { + return this.addlInfo; + } + + public void setAddlInfo(String newAddlInfo) { + this.addlInfo = newAddlInfo; + } + + public String getReasons() { + return this.reasons; + } + + public void setReasons(String newReasons) { + this.reasons = newReasons; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java new file mode 100644 index 0000000..1ae5441 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnEduDtlBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnEduDtlBean extends BaseDetailBean implements Serializable { + private String txtInstCode; + + private String txtQualification; + + private String txtPassYear; + + private String txtPercentageMarks; + + private String qualificationId; + + private String txtOtherProfQuali; + + private String txtSpeecialisation; + + private String txtSpeecialCourses; + + private String txtMajorSub; + + private String txtQualificationCode; + + public String getTxtInstCode() { + return this.txtInstCode; + } + + public void setTxtInstCode(String newTxtInstCode) { + this.txtInstCode = newTxtInstCode; + } + + public String getTxtQualification() { + return this.txtQualification; + } + + public void setTxtQualification(String newTxtQualification) { + this.txtQualification = newTxtQualification; + } + + public String getTxtPassYear() { + return this.txtPassYear; + } + + public void setTxtPassYear(String newTxtPassYear) { + this.txtPassYear = newTxtPassYear; + } + + public String getTxtPercentageMarks() { + return this.txtPercentageMarks; + } + + public void setTxtPercentageMarks(String newTxtPercentageMarks) { + this.txtPercentageMarks = newTxtPercentageMarks; + } + + public String getQualificationId() { + return this.qualificationId; + } + + public void setQualificationId(String newQualificationId) { + this.qualificationId = newQualificationId; + } + + public String getTxtOtherProfQuali() { + return this.txtOtherProfQuali; + } + + public void setTxtOtherProfQuali(String newTxtOtherProfQuali) { + this.txtOtherProfQuali = newTxtOtherProfQuali; + } + + public String getTxtSpeecialisation() { + return this.txtSpeecialisation; + } + + public void setTxtSpeecialisation(String newTxtSpeecialisation) { + this.txtSpeecialisation = newTxtSpeecialisation; + } + + public String getTxtSpeecialCourses() { + return this.txtSpeecialCourses; + } + + public void setTxtSpeecialCourses(String newTxtSpeecialCourses) { + this.txtSpeecialCourses = newTxtSpeecialCourses; + } + + public String getTxtMajorSub() { + return this.txtMajorSub; + } + + public void setTxtMajorSub(String newTxtMajorSub) { + this.txtMajorSub = newTxtMajorSub; + } + + public String getTxtQualificationCode() { + return this.txtQualificationCode; + } + + public void setTxtQualificationCode(String newTxtQualificationCode) { + this.txtQualificationCode = newTxtQualificationCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java new file mode 100644 index 0000000..2645981 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnExpDtlBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnExpDtlBean extends BaseDetailBean implements Serializable { + private String txtPeriodFrom; + + private String txtPeriodTo; + + private String txtOrganisation; + + private String txtLocation; + + private String txtDesignationCode; + + private String txtWorkDesc; + + private String txtBasic; + + private String txtDA; + + private String txtOtherAllowances; + + private String txtBonus; + + private String txtIncentives; + + private String txtConv; + + private String txtHRA; + + private String txtLeavingSal; + + private String txtStartingSal; + + private String txtNoPersonSupervised; + + private String txtReportTo; + + private String txtWorkExp; + + public String getTxtPeriodFrom() { + return this.txtPeriodFrom; + } + + public void setTxtPeriodFrom(String newTxtPeriodFrom) { + this.txtPeriodFrom = newTxtPeriodFrom; + } + + public String getTxtPeriodTo() { + return this.txtPeriodTo; + } + + public void setTxtPeriodTo(String newTxtPeriodTo) { + this.txtPeriodTo = newTxtPeriodTo; + } + + public String getTxtOrganisation() { + return this.txtOrganisation; + } + + public void setTxtOrganisation(String newTxtOrganisation) { + this.txtOrganisation = newTxtOrganisation; + } + + public String getTxtLocation() { + return this.txtLocation; + } + + public void setTxtLocation(String newTxtLocation) { + this.txtLocation = newTxtLocation; + } + + public String getTxtDesignationCode() { + return this.txtDesignationCode; + } + + public void setTxtDesignationCode(String newTxtDesignationCode) { + this.txtDesignationCode = newTxtDesignationCode; + } + + public String getTxtWorkDesc() { + return this.txtWorkDesc; + } + + public void setTxtWorkDesc(String newTxtWorkDesc) { + this.txtWorkDesc = newTxtWorkDesc; + } + + public String getTxtBasic() { + return this.txtBasic; + } + + public void setTxtBasic(String newTxtBasic) { + this.txtBasic = newTxtBasic; + } + + public String getTxtDA() { + return this.txtDA; + } + + public void setTxtDA(String newTxtDA) { + this.txtDA = newTxtDA; + } + + public String getTxtOtherAllowances() { + return this.txtOtherAllowances; + } + + public void setTxtOtherAllowances(String newTxtOtherAllowances) { + this.txtOtherAllowances = newTxtOtherAllowances; + } + + public String getTxtBonus() { + return this.txtBonus; + } + + public void setTxtBonus(String newTxtBonus) { + this.txtBonus = newTxtBonus; + } + + public String getTxtIncentives() { + return this.txtIncentives; + } + + public void setTxtIncentives(String newTxtIncentives) { + this.txtIncentives = newTxtIncentives; + } + + public String getTxtConv() { + return this.txtConv; + } + + public void setTxtConv(String newTxtConv) { + this.txtConv = newTxtConv; + } + + public String getTxtHRA() { + return this.txtHRA; + } + + public void setTxtHRA(String newTxtHRA) { + this.txtHRA = newTxtHRA; + } + + public String getTxtLeavingSal() { + return this.txtLeavingSal; + } + + public void setTxtLeavingSal(String newTxtLeavingSal) { + this.txtLeavingSal = newTxtLeavingSal; + } + + public String getTxtStartingSal() { + return this.txtStartingSal; + } + + public void setTxtStartingSal(String newTxtStartingSal) { + this.txtStartingSal = newTxtStartingSal; + } + + public String getTxtNoPersonSupervised() { + return this.txtNoPersonSupervised; + } + + public void setTxtNoPersonSupervised(String newTxtNoPersonSupervised) { + this.txtNoPersonSupervised = newTxtNoPersonSupervised; + } + + public String getTxtReportTo() { + return this.txtReportTo; + } + + public void setTxtReportTo(String newTxtReportTo) { + this.txtReportTo = newTxtReportTo; + } + + public String getTxtWorkExp() { + return this.txtWorkExp; + } + + public void setTxtWorkExp(String newTxtWorkExp) { + this.txtWorkExp = newTxtWorkExp; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java new file mode 100644 index 0000000..ed0488e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnHdrBean.java @@ -0,0 +1,166 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecApplnMtnHdrBean extends BaseHeaderBean implements Serializable { + private String applnNoId; + + private String designationId; + + private String referenceId; + + private String referenceNo; + + private String applForDesignation; + + private String picturePath; + + private String applicationNo; + + private String applicationDate; + + private String applicantFirstName; + + private String applicantMiddleName; + + private String applicantLastName; + + private String entryMode; + + private String rollNo; + + private String employeeStatus; + + private String nationalityCode; + + private String applForGrade; + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getReferenceId() { + return this.referenceId; + } + + public void setReferenceId(String newReferenceId) { + this.referenceId = newReferenceId; + } + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getPicturePath() { + return this.picturePath; + } + + public void setPicturePath(String newPicturePath) { + this.picturePath = newPicturePath; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getApplicantFirstName() { + return this.applicantFirstName; + } + + public void setApplicantFirstName(String newApplicantFirstName) { + this.applicantFirstName = newApplicantFirstName; + } + + public String getApplicantMiddleName() { + return this.applicantMiddleName; + } + + public void setApplicantMiddleName(String newApplicantMiddleName) { + this.applicantMiddleName = newApplicantMiddleName; + } + + public String getApplicantLastName() { + return this.applicantLastName; + } + + public void setApplicantLastName(String newApplicantLastName) { + this.applicantLastName = newApplicantLastName; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRollNo() { + return this.rollNo; + } + + public void setRollNo(String newRollNo) { + this.rollNo = newRollNo; + } + + public String getEmployeeStatus() { + return this.employeeStatus; + } + + public void setEmployeeStatus(String newEmployeeStatus) { + this.employeeStatus = newEmployeeStatus; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getApplForGrade() { + return this.applForGrade; + } + + public void setApplForGrade(String newApplForGrade) { + this.applForGrade = newApplForGrade; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java new file mode 100644 index 0000000..5f2c7b7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnLangDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnLangDtlBean extends BaseDetailBean implements Serializable { + private String txtLanguageCode; + + private String txtKnowledgeLevel; + + private String knowledgeId; + + private String langId; + + public String getTxtLanguageCode() { + return this.txtLanguageCode; + } + + public void setTxtLanguageCode(String newTxtLanguageCode) { + this.txtLanguageCode = newTxtLanguageCode; + } + + public String getTxtKnowledgeLevel() { + return this.txtKnowledgeLevel; + } + + public void setTxtKnowledgeLevel(String newTxtKnowledgeLevel) { + this.txtKnowledgeLevel = newTxtKnowledgeLevel; + } + + public String getKnowledgeId() { + return this.knowledgeId; + } + + public void setKnowledgeId(String newKnowledgeId) { + this.knowledgeId = newKnowledgeId; + } + + public String getLangId() { + return this.langId; + } + + public void setLangId(String newLangId) { + this.langId = newLangId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java new file mode 100644 index 0000000..6dd8d86 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnOtherDtlBean.java @@ -0,0 +1,176 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnOtherDtlBean extends BaseDetailBean implements Serializable { + private String testCentreId = "0"; + + private String testCenter; + + private String writtenScoreA; + + private String writtenScoreB; + + private String interviewScore; + + private String failedWrittenA; + + private String failedWrittenB; + + private String qualInterview; + + private String medicalCleared; + + private String disqualified; + + private String appointedFlag; + + private String joinedOrganisation; + + private String qualInterview2; + + private String qualInterview3; + + private String interviewScore2; + + private String interviewScore3; + + private String rating; + + public String getTestCentreId() { + return this.testCentreId; + } + + public void setTestCentreId(String newTestCentreId) { + this.testCentreId = newTestCentreId; + } + + public String getTestCenter() { + return this.testCenter; + } + + public void setTestCenter(String newTestCenter) { + this.testCenter = newTestCenter; + } + + public String getWrittenScoreA() { + return this.writtenScoreA; + } + + public void setWrittenScoreA(String newWrittenScoreA) { + this.writtenScoreA = newWrittenScoreA; + } + + public String getWrittenScoreB() { + return this.writtenScoreB; + } + + public void setWrittenScoreB(String newWrittenScoreB) { + this.writtenScoreB = newWrittenScoreB; + } + + public String getInterviewScore() { + return this.interviewScore; + } + + public void setInterviewScore(String newInterviewScore) { + this.interviewScore = newInterviewScore; + } + + public String getFailedWrittenA() { + return this.failedWrittenA; + } + + public void setFailedWrittenA(String newFailedWrittenA) { + this.failedWrittenA = newFailedWrittenA; + } + + public String getFailedWrittenB() { + return this.failedWrittenB; + } + + public void setFailedWrittenB(String newFailedWrittenB) { + this.failedWrittenB = newFailedWrittenB; + } + + public String getQualInterview() { + return this.qualInterview; + } + + public void setQualInterview(String newQualInterview) { + this.qualInterview = newQualInterview; + } + + public String getMedicalCleared() { + return this.medicalCleared; + } + + public void setMedicalCleared(String newMedicalCleared) { + this.medicalCleared = newMedicalCleared; + } + + public String getDisqualified() { + return this.disqualified; + } + + public void setDisqualified(String newDisqualified) { + this.disqualified = newDisqualified; + } + + public String getAppointedFlag() { + return this.appointedFlag; + } + + public void setAppointedFlag(String newAppointedFlag) { + this.appointedFlag = newAppointedFlag; + } + + public String getJoinedOrganisation() { + return this.joinedOrganisation; + } + + public void setJoinedOrganisation(String newJoinedOrganisation) { + this.joinedOrganisation = newJoinedOrganisation; + } + + public String getQualInterview2() { + return this.qualInterview2; + } + + public void setQualInterview2(String newQualInterview2) { + this.qualInterview2 = newQualInterview2; + } + + public String getQualInterview3() { + return this.qualInterview3; + } + + public void setQualInterview3(String newQualInterview3) { + this.qualInterview3 = newQualInterview3; + } + + public String getInterviewScore2() { + return this.interviewScore2; + } + + public void setInterviewScore2(String newInterviewScore2) { + this.interviewScore2 = newInterviewScore2; + } + + public String getInterviewScore3() { + return this.interviewScore3; + } + + public void setInterviewScore3(String newInterviewScore3) { + this.interviewScore3 = newInterviewScore3; + } + + public String getRating() { + return this.rating; + } + + public void setRating(String newRating) { + this.rating = newRating; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java new file mode 100644 index 0000000..be0cfe2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnRefDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnRefDtlBean extends BaseDetailBean implements Serializable { + private String txtName; + + private String txtAddress; + + private String txtPhone; + + private String txtPosition; + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String getTxtPhone() { + return this.txtPhone; + } + + public void setTxtPhone(String newTxtPhone) { + this.txtPhone = newTxtPhone; + } + + public String getTxtPosition() { + return this.txtPosition; + } + + public void setTxtPosition(String newTxtPosition) { + this.txtPosition = newTxtPosition; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java new file mode 100644 index 0000000..12d99c7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnResultDtlBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnResultDtlBean extends BaseDetailBean implements Serializable { + private String testCentreId; + + private String testCenter; + + private String writtenScoreA; + + private String writtenScoreB; + + private String interviewScore; + + private String failedWrittenA; + + private String failedWrittenB; + + private String failedInterview; + + private String medicalCleared; + + private String disqualified; + + private String panelRanking; + + public String getTestCentreId() { + return this.testCentreId; + } + + public void setTestCentreId(String newTestCentreId) { + this.testCentreId = newTestCentreId; + } + + public String getTestCenter() { + return this.testCenter; + } + + public void setTestCenter(String newTestCenter) { + this.testCenter = newTestCenter; + } + + public String getWrittenScoreA() { + return this.writtenScoreA; + } + + public void setWrittenScoreA(String newWrittenScoreA) { + this.writtenScoreA = newWrittenScoreA; + } + + public String getWrittenScoreB() { + return this.writtenScoreB; + } + + public void setWrittenScoreB(String newWrittenScoreB) { + this.writtenScoreB = newWrittenScoreB; + } + + public String getInterviewScore() { + return this.interviewScore; + } + + public void setInterviewScore(String newInterviewScore) { + this.interviewScore = newInterviewScore; + } + + public String getFailedWrittenA() { + return this.failedWrittenA; + } + + public void setFailedWrittenA(String newFailedWrittenA) { + this.failedWrittenA = newFailedWrittenA; + } + + public String getFailedWrittenB() { + return this.failedWrittenB; + } + + public void setFailedWrittenB(String newFailedWrittenB) { + this.failedWrittenB = newFailedWrittenB; + } + + public String getFailedInterview() { + return this.failedInterview; + } + + public void setFailedInterview(String newFailedInterview) { + this.failedInterview = newFailedInterview; + } + + public String getMedicalCleared() { + return this.medicalCleared; + } + + public void setMedicalCleared(String newMedicalCleared) { + this.medicalCleared = newMedicalCleared; + } + + public String getDisqualified() { + return this.disqualified; + } + + public void setDisqualified(String newDisqualified) { + this.disqualified = newDisqualified; + } + + public String getPanelRanking() { + return this.panelRanking; + } + + public void setPanelRanking(String newPanelRanking) { + this.panelRanking = newPanelRanking; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java new file mode 100644 index 0000000..196f0e8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecApplnMtnTrngDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecApplnMtnTrngDtlBean extends BaseDetailBean implements Serializable { + private String txtCourse; + + private String txtFromDate; + + private String txtToDate; + + private String txtInstitute; + + private String txtSubject; + + public String getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtInstitute() { + return this.txtInstitute; + } + + public void setTxtInstitute(String newTxtInstitute) { + this.txtInstitute = newTxtInstitute; + } + + public String getTxtSubject() { + return this.txtSubject; + } + + public void setTxtSubject(String newTxtSubject) { + this.txtSubject = newTxtSubject; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java new file mode 100644 index 0000000..c311b5a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecEmpRecCreationHdrBean.java @@ -0,0 +1,756 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecEmpRecCreationHdrBean extends BaseHeaderBean implements Serializable { + String applicationNo; + + String advNo; + + String newEmpNo; + + String employeeFirstName; + + String employeeMiddleName; + + String employeeLastName; + + String entryMode; + + String rollNo; + + String guardianName; + + String motherToungue; + + String dateOfBirth; + + String nationality; + + String bloodGroup; + + private String maritalStatus; + + String sex; + + String reservationCategory; + + String religion; + + String email; + + String arrested; + + String fined; + + String imprisoned; + + String proscecuted; + + String handicappedFlag; + + String placeOfissue; + + String passportNo; + + String expiryDate; + + String issueDate; + + String presentAddress; + + String countryPresentAddress; + + String statePresentAddress; + + String cityPresentAddress; + + String phonePresentAddress; + + String pinCodePresentAddress; + + String officeAddress; + + String countryOfficeAddress; + + String stateOfficeAddress; + + String cityOfficeAddress; + + String phoneOfficeAddress; + + String pinCodeOfficeAddress; + + String permanentAddress; + + String countryPermanentAddress; + + String statePermanentAddress; + + String cityPermanentAddress; + + String phonePermanentAddresss; + + String pinCodePermanentAddress; + + String appointmentOrder; + + String appointmentOrderDate; + + String companyJoiningDate; + + String locationJoiningDate; + + String tentativeConfirmDate; + + String retirementDate; + + String baseSite; + + String designation; + + String grade; + + String bankSalAcc; + + String costCentre; + + String accountNo; + + String employeeType; + + String joiningGroup; + + String gradeId; + + String desgnId; + + String baseSiteId; + + String joiningId; + + String applnId; + + private String placeOfBirth; + + private String relatedEmployee; + + private String applForDesignation; + + private String applForGrade; + + private String entryModeId; + + private String entryModeCode; + + private String motherToungueCode; + + private String nationalityCode; + + private String maritalStatusCode; + + private String relatedEmployeeId; + + private String religionId; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getAdvNo() { + return this.advNo; + } + + public void setAdvNo(String newAdvNo) { + this.advNo = newAdvNo; + } + + public String getNewEmpNo() { + return this.newEmpNo; + } + + public void setNewEmpNo(String newNewEmpNo) { + this.newEmpNo = newNewEmpNo; + } + + public String getEmployeeFirstName() { + return this.employeeFirstName; + } + + public void setEmployeeFirstName(String newEmployeeFirstName) { + this.employeeFirstName = newEmployeeFirstName; + } + + public String getEmployeeMiddleName() { + return this.employeeMiddleName; + } + + public void setEmployeeMiddleName(String newEmployeeMiddleName) { + this.employeeMiddleName = newEmployeeMiddleName; + } + + public String getEmployeeLastName() { + return this.employeeLastName; + } + + public void setEmployeeLastName(String newEmployeeLastName) { + this.employeeLastName = newEmployeeLastName; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRollNo() { + return this.rollNo; + } + + public void setRollNo(String newRollNo) { + this.rollNo = newRollNo; + } + + public String getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String newGuardianName) { + this.guardianName = newGuardianName; + } + + public String getMotherToungue() { + return this.motherToungue; + } + + public void setMotherToungue(String newMotherToungue) { + this.motherToungue = newMotherToungue; + } + + public String getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String getNationality() { + return this.nationality; + } + + public void setNationality(String newNationality) { + this.nationality = newNationality; + } + + public String getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getReservationCategory() { + return this.reservationCategory; + } + + public void setReservationCategory(String newReservationCategory) { + this.reservationCategory = newReservationCategory; + } + + public String getReligion() { + return this.religion; + } + + public void setReligion(String newReligion) { + this.religion = newReligion; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getArrested() { + return this.arrested; + } + + public void setArrested(String newArrested) { + this.arrested = newArrested; + } + + public String getFined() { + return this.fined; + } + + public void setFined(String newFined) { + this.fined = newFined; + } + + public String getImprisoned() { + return this.imprisoned; + } + + public void setImprisoned(String newImprisoned) { + this.imprisoned = newImprisoned; + } + + public String getProscecuted() { + return this.proscecuted; + } + + public void setProscecuted(String newProscecuted) { + this.proscecuted = newProscecuted; + } + + public String getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getPlaceOfissue() { + return this.placeOfissue; + } + + public void setPlaceOfissue(String newPlaceOfissue) { + this.placeOfissue = newPlaceOfissue; + } + + public String getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String newPassportNo) { + this.passportNo = newPassportNo; + } + + public String getExpiryDate() { + return this.expiryDate; + } + + public void setExpiryDate(String newExpiryDate) { + this.expiryDate = newExpiryDate; + } + + public String getIssueDate() { + return this.issueDate; + } + + public void setIssueDate(String newIssueDate) { + this.issueDate = newIssueDate; + } + + public String getPresentAddress() { + return this.presentAddress; + } + + public void setPresentAddress(String newPresentAddress) { + this.presentAddress = newPresentAddress; + } + + public String getCountryPresentAddress() { + return this.countryPresentAddress; + } + + public void setCountryPresentAddress(String newCountryPresentAddress) { + this.countryPresentAddress = newCountryPresentAddress; + } + + public String getStatePresentAddress() { + return this.statePresentAddress; + } + + public void setStatePresentAddress(String newStatePresentAddress) { + this.statePresentAddress = newStatePresentAddress; + } + + public String getCityPresentAddress() { + return this.cityPresentAddress; + } + + public void setCityPresentAddress(String newCityPresentAddress) { + this.cityPresentAddress = newCityPresentAddress; + } + + public String getPhonePresentAddress() { + return this.phonePresentAddress; + } + + public void setPhonePresentAddress(String newPhonePresentAddress) { + this.phonePresentAddress = newPhonePresentAddress; + } + + public String getPinCodePresentAddress() { + return this.pinCodePresentAddress; + } + + public void setPinCodePresentAddress(String newPinCodePresentAddress) { + this.pinCodePresentAddress = newPinCodePresentAddress; + } + + public String getOfficeAddress() { + return this.officeAddress; + } + + public void setOfficeAddress(String newOfficeAddress) { + this.officeAddress = newOfficeAddress; + } + + public String getCountryOfficeAddress() { + return this.countryOfficeAddress; + } + + public void setCountryOfficeAddress(String newCountryOfficeAddress) { + this.countryOfficeAddress = newCountryOfficeAddress; + } + + public String getStateOfficeAddress() { + return this.stateOfficeAddress; + } + + public void setStateOfficeAddress(String newStateOfficeAddress) { + this.stateOfficeAddress = newStateOfficeAddress; + } + + public String getCityOfficeAddress() { + return this.cityOfficeAddress; + } + + public void setCityOfficeAddress(String newCityOfficeAddress) { + this.cityOfficeAddress = newCityOfficeAddress; + } + + public String getPhoneOfficeAddress() { + return this.phoneOfficeAddress; + } + + public void setPhoneOfficeAddress(String newPhoneOfficeAddress) { + this.phoneOfficeAddress = newPhoneOfficeAddress; + } + + public String getPinCodeOfficeAddress() { + return this.pinCodeOfficeAddress; + } + + public void setPinCodeOfficeAddress(String newPinCodeOfficeAddress) { + this.pinCodeOfficeAddress = newPinCodeOfficeAddress; + } + + public String getPermanentAddress() { + return this.permanentAddress; + } + + public void setPermanentAddress(String newPermanentAddress) { + this.permanentAddress = newPermanentAddress; + } + + public String getCountryPermanentAddress() { + return this.countryPermanentAddress; + } + + public void setCountryPermanentAddress(String newCountryPermanentAddress) { + this.countryPermanentAddress = newCountryPermanentAddress; + } + + public String getStatePermanentAddress() { + return this.statePermanentAddress; + } + + public void setStatePermanentAddress(String newStatePermanentAddress) { + this.statePermanentAddress = newStatePermanentAddress; + } + + public String getCityPermanentAddress() { + return this.cityPermanentAddress; + } + + public void setCityPermanentAddress(String newCityPermanentAddress) { + this.cityPermanentAddress = newCityPermanentAddress; + } + + public String getPhonePermanentAddresss() { + return this.phonePermanentAddresss; + } + + public void setPhonePermanentAddresss(String newPhonePermanentAddresss) { + this.phonePermanentAddresss = newPhonePermanentAddresss; + } + + public String getPinCodePermanentAddress() { + return this.pinCodePermanentAddress; + } + + public void setPinCodePermanentAddress(String newPinCodePermanentAddress) { + this.pinCodePermanentAddress = newPinCodePermanentAddress; + } + + public String getAppointmentOrder() { + return this.appointmentOrder; + } + + public void setAppointmentOrder(String newAppointmentOrder) { + this.appointmentOrder = newAppointmentOrder; + } + + public String getAppointmentOrderDate() { + return this.appointmentOrderDate; + } + + public void setAppointmentOrderDate(String newAppointmentOrderDate) { + this.appointmentOrderDate = newAppointmentOrderDate; + } + + public String getCompanyJoiningDate() { + return this.companyJoiningDate; + } + + public void setCompanyJoiningDate(String newCompanyJoiningDate) { + this.companyJoiningDate = newCompanyJoiningDate; + } + + public String getLocationJoiningDate() { + return this.locationJoiningDate; + } + + public void setLocationJoiningDate(String newLocationJoiningDate) { + this.locationJoiningDate = newLocationJoiningDate; + } + + public String getTentativeConfirmDate() { + return this.tentativeConfirmDate; + } + + public void setTentativeConfirmDate(String newTentativeConfirmDate) { + this.tentativeConfirmDate = newTentativeConfirmDate; + } + + public String getRetirementDate() { + return this.retirementDate; + } + + public void setRetirementDate(String newRetirementDate) { + this.retirementDate = newRetirementDate; + } + + public String getBaseSite() { + return this.baseSite; + } + + public void setBaseSite(String newBaseSite) { + this.baseSite = newBaseSite; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getBankSalAcc() { + return this.bankSalAcc; + } + + public void setBankSalAcc(String newBankSalAcc) { + this.bankSalAcc = newBankSalAcc; + } + + public String getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String newCostCentre) { + this.costCentre = newCostCentre; + } + + public String getAccountNo() { + return this.accountNo; + } + + public void setAccountNo(String newAccountNo) { + this.accountNo = newAccountNo; + } + + public String getEmployeeType() { + return this.employeeType; + } + + public void setEmployeeType(String newEmployeeType) { + this.employeeType = newEmployeeType; + } + + public String getJoiningGroup() { + return this.joiningGroup; + } + + public void setJoiningGroup(String newJoiningGroup) { + this.joiningGroup = newJoiningGroup; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getDesgnId() { + return this.desgnId; + } + + public void setDesgnId(String newDesgnId) { + this.desgnId = newDesgnId; + } + + public String getBaseSiteId() { + return this.baseSiteId; + } + + public void setBaseSiteId(String newBaseSiteId) { + this.baseSiteId = newBaseSiteId; + } + + public String getJoiningId() { + return this.joiningId; + } + + public void setJoiningId(String newJoiningId) { + this.joiningId = newJoiningId; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getRelatedEmployee() { + return this.relatedEmployee; + } + + public void setRelatedEmployee(String newRelatedEmployee) { + this.relatedEmployee = newRelatedEmployee; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getApplForGrade() { + return this.applForGrade; + } + + public void setApplForGrade(String newApplForGrade) { + this.applForGrade = newApplForGrade; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String getEntryModeCode() { + return this.entryModeCode; + } + + public void setEntryModeCode(String newEntryModeCode) { + this.entryModeCode = newEntryModeCode; + } + + public String getMotherToungueCode() { + return this.motherToungueCode; + } + + public void setMotherToungueCode(String newMotherToungueCode) { + this.motherToungueCode = newMotherToungueCode; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getMaritalStatusCode() { + return this.maritalStatusCode; + } + + public void setMaritalStatusCode(String newMaritalStatusCode) { + this.maritalStatusCode = newMaritalStatusCode; + } + + public String getRelatedEmployeeId() { + return this.relatedEmployeeId; + } + + public void setRelatedEmployeeId(String newRelatedEmployeeId) { + this.relatedEmployeeId = newRelatedEmployeeId; + } + + public String getReligionId() { + return this.religionId; + } + + public void setReligionId(String newReligionId) { + this.religionId = newReligionId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java new file mode 100644 index 0000000..035f5b1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnDtlBean.java @@ -0,0 +1,126 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRecScrutAppMtnDtlBean extends BaseDetailBean implements Serializable { + String txtRank; + + String txtApplicantNo; + + String txtApplicantName; + + String txtWrittemMarksA; + + String txtWrittemMarksB; + + String txtInterviewMarks; + + String txtTotalScore; + + String txtExpYrs; + + String txtEligibility; + + String txtTestCenter; + + String txtApplicantId; + + String txtStageId; + + public String getTxtRank() { + return this.txtRank; + } + + public void setTxtRank(String newTxtRank) { + this.txtRank = newTxtRank; + } + + public String getTxtApplicantNo() { + return this.txtApplicantNo; + } + + public void setTxtApplicantNo(String newTxtApplicantNo) { + this.txtApplicantNo = newTxtApplicantNo; + } + + public String getTxtApplicantName() { + return this.txtApplicantName; + } + + public void setTxtApplicantName(String newTxtApplicantName) { + this.txtApplicantName = newTxtApplicantName; + } + + public String getTxtWrittemMarksA() { + return this.txtWrittemMarksA; + } + + public void setTxtWrittemMarksA(String newTxtWrittemMarksA) { + this.txtWrittemMarksA = newTxtWrittemMarksA; + } + + public String getTxtWrittemMarksB() { + return this.txtWrittemMarksB; + } + + public void setTxtWrittemMarksB(String newTxtWrittemMarksB) { + this.txtWrittemMarksB = newTxtWrittemMarksB; + } + + public String getTxtInterviewMarks() { + return this.txtInterviewMarks; + } + + public void setTxtInterviewMarks(String newTxtInterviewMarks) { + this.txtInterviewMarks = newTxtInterviewMarks; + } + + public String getTxtTotalScore() { + return this.txtTotalScore; + } + + public void setTxtTotalScore(String newTxtTotalScore) { + this.txtTotalScore = newTxtTotalScore; + } + + public String getTxtExpYrs() { + return this.txtExpYrs; + } + + public void setTxtExpYrs(String newTxtExpYrs) { + this.txtExpYrs = newTxtExpYrs; + } + + public String getTxtEligibility() { + return this.txtEligibility; + } + + public void setTxtEligibility(String newTxtEligibility) { + this.txtEligibility = newTxtEligibility; + } + + public String getTxtTestCenter() { + return this.txtTestCenter; + } + + public void setTxtTestCenter(String newTxtTestCenter) { + this.txtTestCenter = newTxtTestCenter; + } + + public String getTxtApplicantId() { + return this.txtApplicantId; + } + + public void setTxtApplicantId(String newTxtApplicantId) { + this.txtApplicantId = newTxtApplicantId; + } + + public String getTxtStageId() { + return this.txtStageId; + } + + public void setTxtStageId(String newTxtStageId) { + this.txtStageId = newTxtStageId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java new file mode 100644 index 0000000..5d70d05 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecScrutAppMtnHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecScrutAppMtnHdrBean extends BaseHeaderBean implements Serializable { + String referenceNo; + + String adForDesignation; + + String stage; + + String referenceNoId; + + String adForDesignationId; + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getAdForDesignation() { + return this.adForDesignation; + } + + public void setAdForDesignation(String newAdForDesignation) { + this.adForDesignation = newAdForDesignation; + } + + public String getStage() { + return this.stage; + } + + public void setStage(String newStage) { + this.stage = newStage; + } + + public String getReferenceNoId() { + return this.referenceNoId; + } + + public void setReferenceNoId(String newReferenceNoId) { + this.referenceNoId = newReferenceNoId; + } + + public String getAdForDesignationId() { + return this.adForDesignationId; + } + + public void setAdForDesignationId(String newAdForDesignationId) { + this.adForDesignationId = newAdForDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java new file mode 100644 index 0000000..3e92682 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRecTestCentreMstHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRecTestCentreMstHdrBean extends BaseHeaderBean implements Serializable { + String testCentreCodeId; + + String address; + + String fax; + + String phone; + + String testCentreCode; + + String testCentreName; + + public String getTestCentreCodeId() { + return this.testCentreCodeId; + } + + public void setTestCentreCodeId(String newTestCentreCodeId) { + this.testCentreCodeId = newTestCentreCodeId; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getTestCentreCode() { + return this.testCentreCode; + } + + public void setTestCentreCode(String newTestCentreCode) { + this.testCentreCode = newTestCentreCode; + } + + public String getTestCentreName() { + return this.testCentreName; + } + + public void setTestCentreName(String newTestCentreName) { + this.testCentreName = newTestCentreName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmReportBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmReportBean.java new file mode 100644 index 0000000..9655fca --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmReportBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmReportBean extends BaseHeaderBean implements Serializable { + private String txtYear; + + private String txtMonth; + + private String disabtxtMonth; + + public String getTxtYear() { + return this.txtYear; + } + + public void setTxtYear(String newTxtYear) { + this.txtYear = newTxtYear; + } + + public String getTxtMonth() { + return this.txtMonth; + } + + public void setTxtMonth(String newTxtMonth) { + this.txtMonth = newTxtMonth; + } + + public String getDisabtxtMonth() { + return this.disabtxtMonth; + } + + public void setDisabtxtMonth(String newDisabtxtMonth) { + this.disabtxtMonth = newDisabtxtMonth; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java new file mode 100644 index 0000000..6f44a55 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRetireForecastHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRetireForecastHdrBean extends BaseHeaderBean implements Serializable { + private String fromDate; + + private String toDate; + + private String flag1; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getFlag1() { + return this.flag1; + } + + public void setFlag1(String newFlag1) { + this.flag1 = newFlag1; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java new file mode 100644 index 0000000..68928c9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryDtlBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmRoasterEntryDtlBean extends BaseDetailBean implements Serializable { + private String txtRoasterPoint; + + private String txtCategoryAsPerRoaster; + + private String socialStatus; + + private String empNoId; + + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtAppointmentDate; + + private String txtDob; + + private String txtCategory; + + private String txtCategoryId; + + private String entryMode; + + public String getTxtRoasterPoint() { + return this.txtRoasterPoint; + } + + public void setTxtRoasterPoint(String txtRoasterPoint) { + this.txtRoasterPoint = txtRoasterPoint; + } + + public String getTxtCategoryAsPerRoaster() { + return this.txtCategoryAsPerRoaster; + } + + public void setTxtCategoryAsPerRoaster(String txtCategoryAsPerRoaster) { + this.txtCategoryAsPerRoaster = txtCategoryAsPerRoaster; + } + + public String getSocialStatus() { + return this.socialStatus; + } + + public void setSocialStatus(String socialStatus) { + this.socialStatus = socialStatus; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String empNoId) { + this.empNoId = empNoId; + } + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String txtEmployeeNo) { + this.txtEmployeeNo = txtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String txtEmployeeName) { + this.txtEmployeeName = txtEmployeeName; + } + + public String getTxtAppointmentDate() { + return this.txtAppointmentDate; + } + + public void setTxtAppointmentDate(String txtAppointmentDate) { + this.txtAppointmentDate = txtAppointmentDate; + } + + public String getTxtDob() { + return this.txtDob; + } + + public void setTxtDob(String txtDob) { + this.txtDob = txtDob; + } + + public String getTxtCategory() { + return this.txtCategory; + } + + public void setTxtCategory(String txtCategory) { + this.txtCategory = txtCategory; + } + + public String getTxtCategoryId() { + return this.txtCategoryId; + } + + public void setTxtCategoryId(String txtCategoryId) { + this.txtCategoryId = txtCategoryId; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String entryMode) { + this.entryMode = entryMode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java new file mode 100644 index 0000000..984aaa7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmRoasterEntryHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmRoasterEntryHdrBean extends BaseHeaderBean implements Serializable { + private String txtRoasterCode; + + private String txtRoasterDescription; + + private String roasterCodeId; + + public String getTxtRoasterCode() { + return this.txtRoasterCode; + } + + public void setTxtRoasterCode(String newTxtRoasterCode) { + this.txtRoasterCode = newTxtRoasterCode; + } + + public String getTxtRoasterDescription() { + return this.txtRoasterDescription; + } + + public void setTxtRoasterDescription(String newTxtRoasterDescription) { + this.txtRoasterDescription = newTxtRoasterDescription; + } + + public String getRoasterCodeId() { + return this.roasterCodeId; + } + + public void setRoasterCodeId(String newRoasterCodeId) { + this.roasterCodeId = newRoasterCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnDtlBean.java new file mode 100644 index 0000000..6afd0c1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnDtlBean.java @@ -0,0 +1,136 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepApplnDtlBean extends BaseDetailBean implements Serializable { + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtSeparationCategory; + + private String txtImmediateEffect; + + private String txtRequestedSepDate; + + private String txtActualSepDate; + + private String txtReason; + + private String txtRejectionRemarks; + + private String txtApprovedFlag; + + private String txtWithdrawalFlag; + + private String txtEmpId; + + private String txtSepId; + + private String txtSepCode; + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtSeparationCategory() { + return this.txtSeparationCategory; + } + + public void setTxtSeparationCategory(String newTxtSeparationCategory) { + this.txtSeparationCategory = newTxtSeparationCategory; + } + + public String getTxtImmediateEffect() { + return this.txtImmediateEffect; + } + + public void setTxtImmediateEffect(String newTxtImmediateEffect) { + this.txtImmediateEffect = newTxtImmediateEffect; + } + + public String getTxtRequestedSepDate() { + return this.txtRequestedSepDate; + } + + public void setTxtRequestedSepDate(String newTxtRequestedSepDate) { + this.txtRequestedSepDate = newTxtRequestedSepDate; + } + + public String getTxtActualSepDate() { + return this.txtActualSepDate; + } + + public void setTxtActualSepDate(String newTxtActualSepDate) { + this.txtActualSepDate = newTxtActualSepDate; + } + + public String getTxtReason() { + return this.txtReason; + } + + public void setTxtReason(String newTxtReason) { + this.txtReason = newTxtReason; + } + + public String getTxtRejectionRemarks() { + return this.txtRejectionRemarks; + } + + public void setTxtRejectionRemarks(String newTxtRejectionRemarks) { + this.txtRejectionRemarks = newTxtRejectionRemarks; + } + + public String getTxtApprovedFlag() { + return this.txtApprovedFlag; + } + + public void setTxtApprovedFlag(String newTxtApprovedFlag) { + this.txtApprovedFlag = newTxtApprovedFlag; + } + + public String getTxtWithdrawalFlag() { + return this.txtWithdrawalFlag; + } + + public void setTxtWithdrawalFlag(String newTxtWithdrawalFlag) { + this.txtWithdrawalFlag = newTxtWithdrawalFlag; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtSepId() { + return this.txtSepId; + } + + public void setTxtSepId(String newTxtSepId) { + this.txtSepId = newTxtSepId; + } + + public String getTxtSepCode() { + return this.txtSepCode; + } + + public void setTxtSepCode(String newTxtSepCode) { + this.txtSepCode = newTxtSepCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnHdrBean.java new file mode 100644 index 0000000..61a6b6f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepApplnHdrBean.java @@ -0,0 +1,196 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepApplnHdrBean extends BaseHeaderBean implements Serializable { + private String applicationNo; + + private String dateApplied; + + private String initiatedBy; + + private String applnId; + + private String employeeNo; + + private String firstName; + + private String middleName; + + private String lastName; + + private String grade; + + private String designation; + + private String location; + + private String sepCat; + + private String imEffect; + + private String withFlag; + + private String reqSepDate; + + private String actSepDate; + + private String reason; + + private String empId; + + private String sepCatId; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getSepCat() { + return this.sepCat; + } + + public void setSepCat(String newSepCat) { + this.sepCat = newSepCat; + } + + public String getImEffect() { + return this.imEffect; + } + + public void setImEffect(String newImEffect) { + this.imEffect = newImEffect; + } + + public String getWithFlag() { + return this.withFlag; + } + + public void setWithFlag(String newWithFlag) { + this.withFlag = newWithFlag; + } + + public String getReqSepDate() { + return this.reqSepDate; + } + + public void setReqSepDate(String newReqSepDate) { + this.reqSepDate = newReqSepDate; + } + + public String getActSepDate() { + return this.actSepDate; + } + + public void setActSepDate(String newActSepDate) { + this.actSepDate = newActSepDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getSepCatId() { + return this.sepCatId; + } + + public void setSepCatId(String newSepCatId) { + this.sepCatId = newSepCatId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java new file mode 100644 index 0000000..7bad0d7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstDtlBean.java @@ -0,0 +1,3 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +public class HrmSepCatMstDtlBean {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java new file mode 100644 index 0000000..4751f4c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstHdrBean.java @@ -0,0 +1,68 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepCatMstHdrBean extends BaseHeaderBean implements Serializable { + private String separationCode; + + private String separationCodeId; + + private String description; + + private String noticePeriod; + + private String remarks; + + String separationType; + + String disabseparationType; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getNoticePeriod() { + return this.noticePeriod; + } + + public void setNoticePeriod(String newNoticePeriod) { + this.noticePeriod = newNoticePeriod; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } + + public String getSeparationType() { + return this.separationType; + } + + public void setSeparationType(String newSeparationType) { + this.separationType = newSeparationType; + } + + public String getDisabseparationType() { + return this.disabseparationType; + } + + public void setDisabseparationType(String newDisabseparationType) { + this.disabseparationType = newDisabseparationType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java new file mode 100644 index 0000000..776501b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepCatMstrHdrBean.java @@ -0,0 +1,48 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepCatMstrHdrBean extends BaseHeaderBean implements Serializable { + private String separationCode; + + private String separationCodeId; + + private String description; + + private String noticePeriod; + + private String remarks; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getNoticePeriod() { + return this.noticePeriod; + } + + public void setNoticePeriod(String newNoticePeriod) { + this.noticePeriod = newNoticePeriod; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java new file mode 100644 index 0000000..44c2f8e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpDtlBean.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepClrEmpDtlBean extends BaseDetailBean { + private String txtClrDesc; + + private String txtClrDescId; + + private String txtCheckFlag; + + private String txtComment; + + public String getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } + + public String getTxtCheckFlag() { + return this.txtCheckFlag; + } + + public void setTxtCheckFlag(String newTxtCheckFlag) { + this.txtCheckFlag = newTxtCheckFlag; + } + + public String getTxtComment() { + return this.txtComment; + } + + public void setTxtComment(String newTxtComment) { + this.txtComment = newTxtComment; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java new file mode 100644 index 0000000..eb90206 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrEmpHdrBean.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepClrEmpHdrBean extends BaseHeaderBean { + private String empNoId; + + private String tmplDescId; + + private String tmplDesc; + + private String empNo; + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getTmplDesc() { + return this.tmplDesc; + } + + public void setTmplDesc(String newTmplDesc) { + this.tmplDesc = newTmplDesc; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java new file mode 100644 index 0000000..c3ce6a0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrLstDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepClrLstDtlBean extends BaseDetailBean implements Serializable { + String description; + + String type; + + String disabdescription; + + String disabexternalInternalFlag; + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getType() { + return this.type; + } + + public void setType(String newExternalInternalFlag) { + this.type = newExternalInternalFlag; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabexternalInternalFlag() { + return this.disabexternalInternalFlag; + } + + public void setDisabexternalInternalFlag(String newDisabexternalInternalFlag) { + this.disabexternalInternalFlag = newDisabexternalInternalFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java new file mode 100644 index 0000000..bf09c57 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmpMstDtlBean.java @@ -0,0 +1,23 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +public class HrmSepClrTmpMstDtlBean { + String txtClrDesc; + + String txtClrDescId; + + public String getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java new file mode 100644 index 0000000..9760615 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstDtlBean.java @@ -0,0 +1,35 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepClrTmplMstDtlBean extends BaseDetailBean { + private String txtClrDescId; + + private String txtClrDesc; + + private String disabtxtClrDesc; + + public String getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } + + public String getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String getDisabtxtClrDesc() { + return this.disabtxtClrDesc; + } + + public void setDisabtxtClrDesc(String newDisabtxtClrDesc) { + this.disabtxtClrDesc = newDisabtxtClrDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java new file mode 100644 index 0000000..49fd6ef --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepClrTmplMstHdrBean.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepClrTmplMstHdrBean extends BaseHeaderBean { + private String tmplDesc; + + private String tmplDescId; + + private String obsoleteFlag; + + private String butTmplDesc; + + public String getTmplDesc() { + return this.tmplDesc; + } + + public void setTmplDesc(String newTmplDesc) { + this.tmplDesc = newTmplDesc; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getObsoleteFlag() { + return this.obsoleteFlag; + } + + public void setObsoleteFlag(String newObsoleteFlag) { + this.obsoleteFlag = newObsoleteFlag; + } + + public String getButTmplDesc() { + return this.butTmplDesc; + } + + public void setButTmplDesc(String newButTmplDesc) { + this.butTmplDesc = newButTmplDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderDtlBean.java new file mode 100644 index 0000000..d11614b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderDtlBean.java @@ -0,0 +1,176 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSepOrderDtlBean extends BaseDetailBean implements Serializable { + private String txtSepDtlId; + + private String txtApplnNo; + + private String txtEmpId; + + private String txtApprovedFlag; + + private String txtRejectionRemarks; + + private String txtReason; + + private String txtActualSepDate; + + private String txtRequestedSepDate; + + private String txtSeparationCategory; + + private String txtEmployeeName; + + private String txtApplnId; + + private String txtApplnDate; + + private String disabbutApplnNo; + + private String disabbutActualSepDate; + + private String disabtxtReason; + + private String disabtxtRejectionRemarks; + + private String hdnTempFlag; + + public String getTxtSepDtlId() { + return this.txtSepDtlId; + } + + public void setTxtSepDtlId(String newTxtSepDtlId) { + this.txtSepDtlId = newTxtSepDtlId; + } + + public String getTxtApplnNo() { + return this.txtApplnNo; + } + + public void setTxtApplnNo(String newTxtApplnNo) { + this.txtApplnNo = newTxtApplnNo; + } + + public String getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getTxtApprovedFlag() { + return this.txtApprovedFlag; + } + + public void setTxtApprovedFlag(String newTxtApprovedFlag) { + this.txtApprovedFlag = newTxtApprovedFlag; + } + + public String getTxtRejectionRemarks() { + return this.txtRejectionRemarks; + } + + public void setTxtRejectionRemarks(String newTxtRejectionRemarks) { + this.txtRejectionRemarks = newTxtRejectionRemarks; + } + + public String getTxtReason() { + return this.txtReason; + } + + public void setTxtReason(String newTxtReason) { + this.txtReason = newTxtReason; + } + + public String getTxtActualSepDate() { + return this.txtActualSepDate; + } + + public void setTxtActualSepDate(String newTxtActualSepDate) { + this.txtActualSepDate = newTxtActualSepDate; + } + + public String getTxtRequestedSepDate() { + return this.txtRequestedSepDate; + } + + public void setTxtRequestedSepDate(String newTxtRequestedSepDate) { + this.txtRequestedSepDate = newTxtRequestedSepDate; + } + + public String getTxtSeparationCategory() { + return this.txtSeparationCategory; + } + + public void setTxtSeparationCategory(String newTxtSeparationCategory) { + this.txtSeparationCategory = newTxtSeparationCategory; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtApplnId() { + return this.txtApplnId; + } + + public void setTxtApplnId(String newTxtApplnId) { + this.txtApplnId = newTxtApplnId; + } + + public String getTxtApplnDate() { + return this.txtApplnDate; + } + + public void setTxtApplnDate(String newTxtApplnDate) { + this.txtApplnDate = newTxtApplnDate; + } + + public String getDisabbutApplnNo() { + return this.disabbutApplnNo; + } + + public void setDisabbutApplnNo(String newDisabbutApplnNo) { + this.disabbutApplnNo = newDisabbutApplnNo; + } + + public String getDisabbutActualSepDate() { + return this.disabbutActualSepDate; + } + + public void setDisabbutActualSepDate(String newDisabbutActualSepDate) { + this.disabbutActualSepDate = newDisabbutActualSepDate; + } + + public String getDisabtxtReason() { + return this.disabtxtReason; + } + + public void setDisabtxtReason(String newDisabtxtReason) { + this.disabtxtReason = newDisabtxtReason; + } + + public String getDisabtxtRejectionRemarks() { + return this.disabtxtRejectionRemarks; + } + + public void setDisabtxtRejectionRemarks(String newDisabtxtRejectionRemarks) { + this.disabtxtRejectionRemarks = newDisabtxtRejectionRemarks; + } + + public String getHdnTempFlag() { + return this.hdnTempFlag; + } + + public void setHdnTempFlag(String newHdnTempFlag) { + this.hdnTempFlag = newHdnTempFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderHdrBean.java new file mode 100644 index 0000000..9ce862e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepOrderHdrBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSepOrderHdrBean extends BaseHeaderBean implements Serializable { + private String orderNo; + + private String orderDate; + + private String orderNoId; + + private String applicationNo; + + private String dateApplied; + + private String initiatedBy; + + private String employeeNo; + + private String employeeName; + + private String sepCat; + + private String reqSepDate; + + private String reason; + + private String actSepDate; + + private String approvedBy; + + private String remarks; + + private String applnId; + + private String approverId; + + private String empId; + + private String sepCatId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getSepCat() { + return this.sepCat; + } + + public void setSepCat(String newSepCat) { + this.sepCat = newSepCat; + } + + public String getReqSepDate() { + return this.reqSepDate; + } + + public void setReqSepDate(String newReqSepDate) { + this.reqSepDate = newReqSepDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getActSepDate() { + return this.actSepDate; + } + + public void setActSepDate(String newActSepDate) { + this.actSepDate = newActSepDate; + } + + public String getApprovedBy() { + return this.approvedBy; + } + + public void setApprovedBy(String newApprovedBy) { + this.approvedBy = newApprovedBy; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getApproverId() { + return this.approverId; + } + + public void setApproverId(String newApproverId) { + this.approverId = newApproverId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getSepCatId() { + return this.sepCatId; + } + + public void setSepCatId(String newSepCatId) { + this.sepCatId = newSepCatId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java new file mode 100644 index 0000000..3739897 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSepTmplMstDtlBean.java @@ -0,0 +1,3 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +public class HrmSepTmplMstDtlBean {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleDtlBean.java new file mode 100644 index 0000000..6292bf9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleDtlBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmSettleDtlBean extends BaseDetailBean implements Serializable { + private String txtHeadName; + + private String txtMaxLimit; + + public String getTxtHeadName() { + return this.txtHeadName; + } + + public void setTxtHeadName(String newTxtHeadName) { + this.txtHeadName = newTxtHeadName; + } + + public String getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleHdrBean.java new file mode 100644 index 0000000..01ceb56 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmSettleHdrBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmSettleHdrBean extends BaseHeaderBean implements Serializable { + private String advanceDescription; + + String advCodeId; + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getAdvCodeId() { + return this.advCodeId; + } + + public void setAdvCodeId(String newAdvCodeId) { + this.advCodeId = newAdvCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java new file mode 100644 index 0000000..fceb037 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpDtlBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTransCnclOrderSingEmpDtlBean extends BaseDetailBean implements Serializable { + String defPeriod; + + String defDate; + + public String getDefPeriod() { + return this.defPeriod; + } + + public void setDefPeriod(String newDefPeriod) { + this.defPeriod = newDefPeriod; + } + + public String getDefDate() { + return this.defDate; + } + + public void setDefDate(String newDefDate) { + this.defDate = newDefDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java new file mode 100644 index 0000000..3477481 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransCnclOrderSingEmpHdrBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTransCnclOrderSingEmpHdrBean extends BaseHeaderBean implements Serializable { + String orderNo; + + String orderDate; + + String generatedBy; + + String cancDefFlag; + + String cancStatus; + + String defDate; + + String defPeriod; + + String appNo; + + String appDate; + + private String appNoId; + + String headerPrimaryKey1; + + String employeeName; + + String transOrderNo; + + String transOrderDate; + + String transEffectDate; + + private String employeeId; + + private String approverNoId; + + private String approverName; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getGeneratedBy() { + return this.generatedBy; + } + + public void setGeneratedBy(String newGeneratedBy) { + this.generatedBy = newGeneratedBy; + } + + public String getCancDefFlag() { + return this.cancDefFlag; + } + + public void setCancDefFlag(String newCancDefFlag) { + this.cancDefFlag = newCancDefFlag; + } + + public String getCancStatus() { + return this.cancStatus; + } + + public void setCancStatus(String newCancStatus) { + this.cancStatus = newCancStatus; + } + + public String getDefDate() { + return this.defDate; + } + + public void setDefDate(String newDefDate) { + this.defDate = newDefDate; + } + + public String getDefPeriod() { + return this.defPeriod; + } + + public void setDefPeriod(String newDefPeriod) { + this.defPeriod = newDefPeriod; + } + + public String getAppNo() { + return this.appNo; + } + + public void setAppNo(String newAppNo) { + this.appNo = newAppNo; + } + + public String getAppDate() { + return this.appDate; + } + + public void setAppDate(String newAppDate) { + this.appDate = newAppDate; + } + + public String getAppNoId() { + return this.appNoId; + } + + public void setAppNoId(String newAppNoId) { + this.appNoId = newAppNoId; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getTransOrderNo() { + return this.transOrderNo; + } + + public void setTransOrderNo(String newTransOrderNo) { + this.transOrderNo = newTransOrderNo; + } + + public String getTransOrderDate() { + return this.transOrderDate; + } + + public void setTransOrderDate(String newTransOrderDate) { + this.transOrderDate = newTransOrderDate; + } + + public String getTransEffectDate() { + return this.transEffectDate; + } + + public void setTransEffectDate(String newTransEffectDate) { + this.transEffectDate = newTransEffectDate; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java new file mode 100644 index 0000000..bde4d3a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransOrderSingEmpDtlBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTransOrderSingEmpDtlBean extends BaseDetailBean implements Serializable { + private String applnNo; + + private String selfOfcFlag; + + private String empName; + + private String fromSite; + + private String toSite; + + private String reportingEmpId; + + private String trnsfrEffectDate; + + private String reportingDate; + + private String noOfDays; + + private String taFlag; + + private String daFlag; + + private String remarks; + + private String toWorkGroupID; + + private String fromWorkGroupID; + + private String applicationDate; + + private String empID; + + private String toSiteID; + + private String applnNoID; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getSelfOfcFlag() { + return this.selfOfcFlag; + } + + public void setSelfOfcFlag(String newSelfOfcFlag) { + this.selfOfcFlag = newSelfOfcFlag; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getTrnsfrEffectDate() { + return this.trnsfrEffectDate; + } + + public void setTrnsfrEffectDate(String newTrnsfrEffectDate) { + this.trnsfrEffectDate = newTrnsfrEffectDate; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getNoOfDays() { + return this.noOfDays; + } + + public void setNoOfDays(String newNoOfDays) { + this.noOfDays = newNoOfDays; + } + + public String getTaFlag() { + return this.taFlag; + } + + public void setTaFlag(String newTaFlag) { + this.taFlag = newTaFlag; + } + + public String getDaFlag() { + return this.daFlag; + } + + public void setDaFlag(String newDaFlag) { + this.daFlag = newDaFlag; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getToWorkGroupID() { + return this.toWorkGroupID; + } + + public void setToWorkGroupID(String newToWorkGroupID) { + this.toWorkGroupID = newToWorkGroupID; + } + + public String getFromWorkGroupID() { + return this.fromWorkGroupID; + } + + public void setFromWorkGroupID(String newFromWorkGroupID) { + this.fromWorkGroupID = newFromWorkGroupID; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getEmpID() { + return this.empID; + } + + public void setEmpID(String newEmpID) { + this.empID = newEmpID; + } + + public String getToSiteID() { + return this.toSiteID; + } + + public void setToSiteID(String newToSiteID) { + this.toSiteID = newToSiteID; + } + + public String getApplnNoID() { + return this.applnNoID; + } + + public void setApplnNoID(String newApplnNoID) { + this.applnNoID = newApplnNoID; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java new file mode 100644 index 0000000..ff9d5ee --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTransferApplicationHdrBean.java @@ -0,0 +1,346 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTransferApplicationHdrBean extends BaseHeaderBean implements Serializable { + private String applnNo; + + private String employeeNo; + + private String ofcNoteNo; + + private String ofcNoteDate; + + private String site1; + + private String site2; + + private String site3; + + private String reason; + + private String applnDate; + + private String applnNoId; + + private String fromSite; + + private String applnType; + + private String employeeNoId; + + private String siteId; + + private String siteCode; + + private String site1Id; + + private String site2Id; + + private String site3Id; + + private String trnsStatus; + + private String empName; + + private String siteCode1; + + private String siteCode2; + + private String siteCode3; + + private String fromDesignation; + + private String fromDesignationId; + + private String toDesignation; + + private String toDesignationId; + + private String fromWorkGroup; + + private String fromWorkGroupId; + + private String toWorkGroupCode; + + private String toWorkGroup; + + private String toWorkGroupId; + + private String selfOffice; + + private String disabSelfOffice; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getOfcNoteNo() { + return this.ofcNoteNo; + } + + public void setOfcNoteNo(String newOfcNoteNo) { + this.ofcNoteNo = newOfcNoteNo; + } + + public String getOfcNoteDate() { + return this.ofcNoteDate; + } + + public void setOfcNoteDate(String newOfcNoteDate) { + this.ofcNoteDate = newOfcNoteDate; + } + + public String getSite1() { + return this.site1; + } + + public void setSite1(String newSite1) { + this.site1 = newSite1; + } + + public String getSite2() { + return this.site2; + } + + public void setSite2(String newSite2) { + this.site2 = newSite2; + } + + public String getSite3() { + return this.site3; + } + + public void setSite3(String newSite3) { + this.site3 = newSite3; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getApplnDate() { + return this.applnDate; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getFromWorkGroupId() { + return this.fromWorkGroupId; + } + + public void setFromWorkGroupId(String newFromWorkGroupId) { + this.fromWorkGroupId = newFromWorkGroupId; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getToWorkGroupId() { + return this.toWorkGroupId; + } + + public void setToWorkGroupId(String newToWorkGroupId) { + this.toWorkGroupId = newToWorkGroupId; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getApplnType() { + return this.applnType; + } + + public void setApplnType(String newApplnType) { + this.applnType = newApplnType; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSite1Id() { + return this.site1Id; + } + + public void setSite1Id(String newSite1Id) { + this.site1Id = newSite1Id; + } + + public String getSite2Id() { + return this.site2Id; + } + + public void setSite2Id(String newSite2Id) { + this.site2Id = newSite2Id; + } + + public String getSite3Id() { + return this.site3Id; + } + + public void setSite3Id(String newSite3Id) { + this.site3Id = newSite3Id; + } + + public String getTrnsStatus() { + return this.trnsStatus; + } + + public void setTrnsStatus(String newTrnsStatus) { + this.trnsStatus = newTrnsStatus; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getSiteCode1() { + return this.siteCode1; + } + + public void setSiteCode1(String newSiteCode1) { + this.siteCode1 = newSiteCode1; + } + + public String getSiteCode2() { + return this.siteCode2; + } + + public void setSiteCode2(String newSiteCode2) { + this.siteCode2 = newSiteCode2; + } + + public String getSiteCode3() { + return this.siteCode3; + } + + public void setSiteCode3(String newSiteCode3) { + this.siteCode3 = newSiteCode3; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getFromDesignationId() { + return this.fromDesignationId; + } + + public void setFromDesignationId(String newFromDesignationId) { + this.fromDesignationId = newFromDesignationId; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getToDesignationId() { + return this.toDesignationId; + } + + public void setToDesignationId(String newToDesignationId) { + this.toDesignationId = newToDesignationId; + } + + public String getSelfOffice() { + return this.selfOffice; + } + + public void setSelfOffice(String newSelfOffice) { + this.selfOffice = newSelfOffice; + } + + public String getDisabSelfOffice() { + return this.disabSelfOffice; + } + + public void setDisabSelfOffice(String newDisabSelfOffice) { + this.disabSelfOffice = newDisabSelfOffice; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java new file mode 100644 index 0000000..cac70d3 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalCloseHdrBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCalCloseHdrBean extends BaseHeaderBean implements Serializable { + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String calDtlId; + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getCalDtlId() { + return this.calDtlId; + } + + public void setCalDtlId(String newCalDtlId) { + this.calDtlId = newCalDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalDtlBean.java new file mode 100644 index 0000000..a8b22ad --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalDtlBean.java @@ -0,0 +1,306 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngCalDtlBean extends BaseDetailBean implements Serializable { + private String txtType; + + private String txtStartDate; + + private String txtEndDate; + + private String txtStrength; + + private String txtFee; + + private String txtStatus; + + private String txtInstituteName; + + private String txtCourseCode; + + private String txtRatingScheme; + + private String txtInsCode; + + private String txtCourseId; + + private String txtInstId; + + private String ratingId; + + private String disabtxtType; + + private String disabtxtStartDate; + + private String disabtxtEndDate; + + private String disabtxtStrength; + + private String disabtxtFee; + + private String disabtxtStatus; + + private String disabtxtInstituteName; + + private String disabtxtCourseCode; + + private String disabtxtRatingScheme; + + private String disabtxtInsCode; + + String disabbutTxtStartDate; + + String disabbutTxtEndDate; + + String disabTxtInstituteName; + + String disabTxtCourseCode; + + private String txtCourseName; + + private String txtVenue; + + private String txtDuration; + + public String getTxtType() { + return this.txtType; + } + + public void setTxtType(String newTxtType) { + this.txtType = newTxtType; + } + + public String getTxtStartDate() { + return this.txtStartDate; + } + + public void setTxtStartDate(String newTxtStartDate) { + this.txtStartDate = newTxtStartDate; + } + + public String getTxtEndDate() { + return this.txtEndDate; + } + + public void setTxtEndDate(String newTxtEndDate) { + this.txtEndDate = newTxtEndDate; + } + + public String getTxtStrength() { + return this.txtStrength; + } + + public void setTxtStrength(String newTxtStrength) { + this.txtStrength = newTxtStrength; + } + + public String getTxtFee() { + return this.txtFee; + } + + public void setTxtFee(String newTxtFee) { + this.txtFee = newTxtFee; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getTxtInstituteName() { + return this.txtInstituteName; + } + + public void setTxtInstituteName(String newTxtInstituteName) { + this.txtInstituteName = newTxtInstituteName; + } + + public String getTxtCourseCode() { + return this.txtCourseCode; + } + + public void setTxtCourseCode(String newTxtCourseCode) { + this.txtCourseCode = newTxtCourseCode; + } + + public String getTxtRatingScheme() { + return this.txtRatingScheme; + } + + public void setTxtRatingScheme(String newTxtRatingScheme) { + this.txtRatingScheme = newTxtRatingScheme; + } + + public String getTxtInsCode() { + return this.txtInsCode; + } + + public void setTxtInsCode(String newTxtInsCode) { + this.txtInsCode = newTxtInsCode; + } + + public String getTxtCourseId() { + return this.txtCourseId; + } + + public void setTxtCourseId(String newTxtCourseId) { + this.txtCourseId = newTxtCourseId; + } + + public String getTxtInstId() { + return this.txtInstId; + } + + public void setTxtInstId(String newTxtInstId) { + this.txtInstId = newTxtInstId; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String getDisabtxtType() { + return this.disabtxtType; + } + + public void setDisabtxtType(String newDisabtxtType) { + this.disabtxtType = newDisabtxtType; + } + + public String getDisabtxtStartDate() { + return this.disabtxtStartDate; + } + + public void setDisabtxtStartDate(String newDisabtxtStartDate) { + this.disabtxtStartDate = newDisabtxtStartDate; + } + + public String getDisabtxtEndDate() { + return this.disabtxtEndDate; + } + + public void setDisabtxtEndDate(String newDisabtxtEndDate) { + this.disabtxtEndDate = newDisabtxtEndDate; + } + + public String getDisabtxtStrength() { + return this.disabtxtStrength; + } + + public void setDisabtxtStrength(String newDisabtxtStrength) { + this.disabtxtStrength = newDisabtxtStrength; + } + + public String getDisabtxtFee() { + return this.disabtxtFee; + } + + public void setDisabtxtFee(String newDisabtxtFee) { + this.disabtxtFee = newDisabtxtFee; + } + + public String getDisabtxtStatus() { + return this.disabtxtStatus; + } + + public void setDisabtxtStatus(String newDisabtxtStatus) { + this.disabtxtStatus = newDisabtxtStatus; + } + + public String getDisabtxtInstituteName() { + return this.disabtxtInstituteName; + } + + public void setDisabtxtInstituteName(String newDisabtxtInstituteName) { + this.disabtxtInstituteName = newDisabtxtInstituteName; + } + + public String getDisabtxtCourseCode() { + return this.disabtxtCourseCode; + } + + public void setDisabtxtCourseCode(String newDisabtxtCourseCode) { + this.disabtxtCourseCode = newDisabtxtCourseCode; + } + + public String getDisabtxtRatingScheme() { + return this.disabtxtRatingScheme; + } + + public void setDisabtxtRatingScheme(String newDisabtxtRatingScheme) { + this.disabtxtRatingScheme = newDisabtxtRatingScheme; + } + + public String getDisabtxtInsCode() { + return this.disabtxtInsCode; + } + + public void setDisabtxtInsCode(String newDisabtxtInsCode) { + this.disabtxtInsCode = newDisabtxtInsCode; + } + + public String getDisabbutTxtStartDate() { + return this.disabbutTxtStartDate; + } + + public void setDisabbutTxtStartDate(String newDisabbutTxtStartDate) { + this.disabbutTxtStartDate = newDisabbutTxtStartDate; + } + + public String getDisabbutTxtEndDate() { + return this.disabbutTxtEndDate; + } + + public void setDisabbutTxtEndDate(String newDisabbutTxtEndDate) { + this.disabbutTxtEndDate = newDisabbutTxtEndDate; + } + + public String getDisabTxtInstituteName() { + return this.disabTxtInstituteName; + } + + public void setDisabTxtInstituteName(String newDisabTxtInstituteName) { + this.disabTxtInstituteName = newDisabTxtInstituteName; + } + + public String getDisabTxtCourseCode() { + return this.disabTxtCourseCode; + } + + public void setDisabTxtCourseCode(String newDisabTxtCourseCode) { + this.disabTxtCourseCode = newDisabTxtCourseCode; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getTxtVenue() { + return this.txtVenue; + } + + public void setTxtVenue(String newTxtVenue) { + this.txtVenue = newTxtVenue; + } + + public String getTxtDuration() { + return this.txtDuration; + } + + public void setTxtDuration(String newTxtDuration) { + this.txtDuration = newTxtDuration; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalHdrBean.java new file mode 100644 index 0000000..dee2d98 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCalHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCalHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String site; + + private String startDate; + + private String endDate; + + private String siteName; + + private String siteId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java new file mode 100644 index 0000000..9f29605 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudDtlBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngCrsBudDtlBean extends BaseDetailBean implements Serializable { + private String txtFromDate; + + private String txtToDate; + + private String txtCourseName; + + private String disabtxtFood; + + private String disabtxtFees; + + private String disabtxtDailyAllowances; + + private String disabtxtMisc; + + private String disabtxtAccomodation; + + private String disabtxtTravel; + + private String disabbutTxtCourseName; + + private String txtTravel; + + private String txtAccomodation; + + private String txtDailyAllowances; + + private String txtFood; + + private String txtFees; + + private String txtMisc; + + private String txtTotal; + + private String txtCourseId; + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getDisabtxtFood() { + return this.disabtxtFood; + } + + public void setDisabtxtFood(String newDisabtxtFood) { + this.disabtxtFood = newDisabtxtFood; + } + + public String getDisabtxtFees() { + return this.disabtxtFees; + } + + public void setDisabtxtFees(String newDisabtxtFees) { + this.disabtxtFees = newDisabtxtFees; + } + + public String getDisabtxtDailyAllowances() { + return this.disabtxtDailyAllowances; + } + + public void setDisabtxtDailyAllowances(String newDisabtxtDailyAllowances) { + this.disabtxtDailyAllowances = newDisabtxtDailyAllowances; + } + + public String getDisabtxtMisc() { + return this.disabtxtMisc; + } + + public void setDisabtxtMisc(String newDisabtxtMisc) { + this.disabtxtMisc = newDisabtxtMisc; + } + + public String getDisabtxtAccomodation() { + return this.disabtxtAccomodation; + } + + public void setDisabtxtAccomodation(String newDisabtxtAccomodation) { + this.disabtxtAccomodation = newDisabtxtAccomodation; + } + + public String getDisabtxtTravel() { + return this.disabtxtTravel; + } + + public void setDisabtxtTravel(String newDisabtxtTravel) { + this.disabtxtTravel = newDisabtxtTravel; + } + + public String getDisabbutTxtCourseName() { + return this.disabbutTxtCourseName; + } + + public void setDisabbutTxtCourseName(String newDisabbutTxtCourseName) { + this.disabbutTxtCourseName = newDisabbutTxtCourseName; + } + + public String getTxtTravel() { + return this.txtTravel; + } + + public void setTxtTravel(String newTxtTravel) { + this.txtTravel = newTxtTravel; + } + + public String getTxtAccomodation() { + return this.txtAccomodation; + } + + public void setTxtAccomodation(String newTxtAccomodation) { + this.txtAccomodation = newTxtAccomodation; + } + + public String getTxtDailyAllowances() { + return this.txtDailyAllowances; + } + + public void setTxtDailyAllowances(String newTxtDailyAllowances) { + this.txtDailyAllowances = newTxtDailyAllowances; + } + + public String getTxtFood() { + return this.txtFood; + } + + public void setTxtFood(String newTxtFood) { + this.txtFood = newTxtFood; + } + + public String getTxtFees() { + return this.txtFees; + } + + public void setTxtFees(String newTxtFees) { + this.txtFees = newTxtFees; + } + + public String getTxtMisc() { + return this.txtMisc; + } + + public void setTxtMisc(String newTxtMisc) { + this.txtMisc = newTxtMisc; + } + + public String getTxtTotal() { + return this.txtTotal; + } + + public void setTxtTotal(String newTxtTotal) { + this.txtTotal = newTxtTotal; + } + + public String getTxtCourseId() { + return this.txtCourseId; + } + + public void setTxtCourseId(String newTxtCourseId) { + this.txtCourseId = newTxtCourseId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java new file mode 100644 index 0000000..f1bb461 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsBudHdrBean.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCrsBudHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String calendarId; + + private String description; + + private String approvedBudget; + + private String spentTillDate; + + private String availableBudget; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getApprovedBudget() { + return this.approvedBudget; + } + + public void setApprovedBudget(String newApprovedBudget) { + this.approvedBudget = newApprovedBudget; + } + + public String getSpentTillDate() { + return this.spentTillDate; + } + + public void setSpentTillDate(String newSpentTillDate) { + this.spentTillDate = newSpentTillDate; + } + + public String getAvailableBudget() { + return this.availableBudget; + } + + public void setAvailableBudget(String newAvailableBudget) { + this.availableBudget = newAvailableBudget; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java new file mode 100644 index 0000000..bab70ef --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstDtlBean.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngCrsMstDtlBean extends BaseDetailBean implements Serializable { + private String txtCourse; + + private String txtName; + + private String txtMaxAttend; + + private String txtMinAttend; + + private String disabtxtCourse; + + private String disabtxtName; + + private String disabtxtMaxAttend; + + private String disabtxtMinAttend; + + public String getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getDisabtxtCourse() { + return this.disabtxtCourse; + } + + public void setDisabtxtCourse(String newDisabtxtCourse) { + this.disabtxtCourse = newDisabtxtCourse; + } + + public String getDisabtxtName() { + return this.disabtxtName; + } + + public void setDisabtxtName(String newDisabtxtName) { + this.disabtxtName = newDisabtxtName; + } + + public String getDisabtxtMaxAttend() { + return this.disabtxtMaxAttend; + } + + public void setDisabtxtMaxAttend(String newDisabtxtMaxAttend) { + this.disabtxtMaxAttend = newDisabtxtMaxAttend; + } + + public String getTxtMaxAttend() { + return this.txtMaxAttend; + } + + public void setTxtMaxAttend(String newTxtMaxAttend) { + this.txtMaxAttend = newTxtMaxAttend; + } + + public String getTxtMinAttend() { + return this.txtMinAttend; + } + + public void setTxtMinAttend(String newTxtMinAttend) { + this.txtMinAttend = newTxtMinAttend; + } + + public String getDisabtxtMinAttend() { + return this.disabtxtMinAttend; + } + + public void setDisabtxtMinAttend(String newDisabtxtMinAttend) { + this.disabtxtMinAttend = newDisabtxtMinAttend; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java new file mode 100644 index 0000000..6d0b647 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngCrsMstHdrBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngCrsMstHdrBean extends BaseHeaderBean implements Serializable { + private String trainingBranch; + + private String branchName; + + private String trgMstBranchId; + + public String getTrainingBranch() { + return this.trainingBranch; + } + + public void setTrainingBranch(String newTrainingBranch) { + this.trainingBranch = newTrainingBranch; + } + + public String getBranchName() { + return this.branchName; + } + + public void setBranchName(String newBranchName) { + this.branchName = newBranchName; + } + + public String getTrgMstBranchId() { + return this.trgMstBranchId; + } + + public void setTrgMstBranchId(String newTrgMstBranchId) { + this.trgMstBranchId = newTrgMstBranchId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java new file mode 100644 index 0000000..255b571 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttDtlBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpAttDtlBean extends BaseDetailBean implements Serializable { + private String txtEmployeeNo; + + private String txtEmployeeName; + + private String txtTrainingDate; + + private String txtAttendance; + + private String txtReasonForAbsence; + + private String disabtxtAttendance; + + private String disabtxtEmployeeName; + + private String disabtxtEmployeeNo; + + private String disabtxtReasonForAbsence; + + private String disabtxtTrainingDate; + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String getTxtTrainingDate() { + return this.txtTrainingDate; + } + + public void setTxtTrainingDate(String newTxtTrainingDate) { + this.txtTrainingDate = newTxtTrainingDate; + } + + public String getTxtAttendance() { + return this.txtAttendance; + } + + public void setTxtAttendance(String newTxtAttendance) { + this.txtAttendance = newTxtAttendance; + } + + public String getTxtReasonForAbsence() { + return this.txtReasonForAbsence; + } + + public void setTxtReasonForAbsence(String newTxtReasonForAbsence) { + this.txtReasonForAbsence = newTxtReasonForAbsence; + } + + public String getDisabtxtAttendance() { + return this.disabtxtAttendance; + } + + public void setDisabtxtAttendance(String newDisabtxtAttendance) { + this.disabtxtAttendance = newDisabtxtAttendance; + } + + public String getDisabtxtEmployeeName() { + return this.disabtxtEmployeeName; + } + + public void setDisabtxtEmployeeName(String newDisabtxtEmployeeName) { + this.disabtxtEmployeeName = newDisabtxtEmployeeName; + } + + public String getDisabtxtEmployeeNo() { + return this.disabtxtEmployeeNo; + } + + public void setDisabtxtEmployeeNo(String newDisabtxtEmployeeNo) { + this.disabtxtEmployeeNo = newDisabtxtEmployeeNo; + } + + public String getDisabtxtReasonForAbsence() { + return this.disabtxtReasonForAbsence; + } + + public void setDisabtxtReasonForAbsence(String newDisabtxtReasonForAbsence) { + this.disabtxtReasonForAbsence = newDisabtxtReasonForAbsence; + } + + public String getDisabtxtTrainingDate() { + return this.disabtxtTrainingDate; + } + + public void setDisabtxtTrainingDate(String newDisabtxtTrainingDate) { + this.disabtxtTrainingDate = newDisabtxtTrainingDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java new file mode 100644 index 0000000..131233c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpAttHdrBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpAttHdrBean extends BaseHeaderBean implements Serializable { + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java new file mode 100644 index 0000000..2f41921 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackDtlBean.java @@ -0,0 +1,286 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpFeedBackDtlBean extends BaseDetailBean implements Serializable { + private String txtFacultyName; + + private String txtEmpNo; + + private String txtEmpName; + + private String txtDeliveryClarity; + + private String txtPresentation; + + private String txtInteraction; + + private String txtCourseMaterial; + + private String txtCourseObjective; + + private String txtFacId; + + private String txtTrnHdrId; + + private String disabtxtFacultyName; + + private String disabtxtEmpNo; + + private String disabtxtEmpName; + + private String disabtxtDeliveryClarity; + + private String disabtxtPresentation; + + private String disabtxtInteraction; + + private String disabtxtCourseMaterial; + + private String disabtxtCourseObjective; + + private String disabtxtFacId; + + private String disabtxtTrnHdrId; + + private String txtCourseDuration; + + private String txtTrainingAids; + + private String txtTrainingArrangements; + + private String txtOverallRating; + + private String txtTopicsRelevant; + + private String txtTopicsIrrelevant; + + private String txtSuggestions; + + private String txtSkillArea; + + public String getTxtFacultyName() { + return this.txtFacultyName; + } + + public void setTxtFacultyName(String newTxtFacultyName) { + this.txtFacultyName = newTxtFacultyName; + } + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtDeliveryClarity() { + return this.txtDeliveryClarity; + } + + public void setTxtDeliveryClarity(String newTxtDeliveryClarity) { + this.txtDeliveryClarity = newTxtDeliveryClarity; + } + + public String getTxtPresentation() { + return this.txtPresentation; + } + + public void setTxtPresentation(String newTxtPresentation) { + this.txtPresentation = newTxtPresentation; + } + + public String getTxtInteraction() { + return this.txtInteraction; + } + + public void setTxtInteraction(String newTxtInteraction) { + this.txtInteraction = newTxtInteraction; + } + + public String getTxtCourseMaterial() { + return this.txtCourseMaterial; + } + + public void setTxtCourseMaterial(String newTxtCourseMaterial) { + this.txtCourseMaterial = newTxtCourseMaterial; + } + + public String getTxtCourseObjective() { + return this.txtCourseObjective; + } + + public void setTxtCourseObjective(String newTxtCourseObjective) { + this.txtCourseObjective = newTxtCourseObjective; + } + + public String getTxtFacId() { + return this.txtFacId; + } + + public void setTxtFacId(String newTxtFacId) { + this.txtFacId = newTxtFacId; + } + + public String getTxtTrnHdrId() { + return this.txtTrnHdrId; + } + + public void setTxtTrnHdrId(String newTxtTrnHdrId) { + this.txtTrnHdrId = newTxtTrnHdrId; + } + + public String getDisabtxtFacultyName() { + return this.disabtxtFacultyName; + } + + public void setDisabtxtFacultyName(String newDisabtxtFacultyName) { + this.disabtxtFacultyName = newDisabtxtFacultyName; + } + + public String getDisabtxtEmpNo() { + return this.disabtxtEmpNo; + } + + public void setDisabtxtEmpNo(String newDisabtxtEmpNo) { + this.disabtxtEmpNo = newDisabtxtEmpNo; + } + + public String getDisabtxtEmpName() { + return this.disabtxtEmpName; + } + + public void setDisabtxtEmpName(String newDisabtxtEmpName) { + this.disabtxtEmpName = newDisabtxtEmpName; + } + + public String getDisabtxtDeliveryClarity() { + return this.disabtxtDeliveryClarity; + } + + public void setDisabtxtDeliveryClarity(String newDisabtxtDeliveryClarity) { + this.disabtxtDeliveryClarity = newDisabtxtDeliveryClarity; + } + + public String getDisabtxtPresentation() { + return this.disabtxtPresentation; + } + + public void setDisabtxtPresentation(String newDisabtxtPresentation) { + this.disabtxtPresentation = newDisabtxtPresentation; + } + + public String getDisabtxtInteraction() { + return this.disabtxtInteraction; + } + + public void setDisabtxtInteraction(String newDisabtxtInteraction) { + this.disabtxtInteraction = newDisabtxtInteraction; + } + + public String getDisabtxtCourseMaterial() { + return this.disabtxtCourseMaterial; + } + + public void setDisabtxtCourseMaterial(String newDisabtxtCourseMaterial) { + this.disabtxtCourseMaterial = newDisabtxtCourseMaterial; + } + + public String getDisabtxtCourseObjective() { + return this.disabtxtCourseObjective; + } + + public void setDisabtxtCourseObjective(String newDisabtxtCourseObjective) { + this.disabtxtCourseObjective = newDisabtxtCourseObjective; + } + + public String getDisabtxtFacId() { + return this.disabtxtFacId; + } + + public void setDisabtxtFacId(String newDisabtxtFacId) { + this.disabtxtFacId = newDisabtxtFacId; + } + + public String getDisabtxtTrnHdrId() { + return this.disabtxtTrnHdrId; + } + + public void setDisabtxtTrnHdrId(String newDisabtxtTrnHdrId) { + this.disabtxtTrnHdrId = newDisabtxtTrnHdrId; + } + + public String getTxtCourseDuration() { + return this.txtCourseDuration; + } + + public void setTxtCourseDuration(String newTxtCourseDuration) { + this.txtCourseDuration = newTxtCourseDuration; + } + + public String getTxtTrainingAids() { + return this.txtTrainingAids; + } + + public void setTxtTrainingAids(String newTxtTrainingAids) { + this.txtTrainingAids = newTxtTrainingAids; + } + + public String getTxtTrainingArrangements() { + return this.txtTrainingArrangements; + } + + public void setTxtTrainingArrangements(String newTxtTrainingArrangements) { + this.txtTrainingArrangements = newTxtTrainingArrangements; + } + + public String getTxtOverallRating() { + return this.txtOverallRating; + } + + public void setTxtOverallRating(String newTxtOverallRating) { + this.txtOverallRating = newTxtOverallRating; + } + + public String getTxtTopicsRelevant() { + return this.txtTopicsRelevant; + } + + public void setTxtTopicsRelevant(String newTxtTopicsRelevant) { + this.txtTopicsRelevant = newTxtTopicsRelevant; + } + + public String getTxtTopicsIrrelevant() { + return this.txtTopicsIrrelevant; + } + + public void setTxtTopicsIrrelevant(String newTxtTopicsIrrelevant) { + this.txtTopicsIrrelevant = newTxtTopicsIrrelevant; + } + + public String getTxtSuggestions() { + return this.txtSuggestions; + } + + public void setTxtSuggestions(String newTxtSuggestions) { + this.txtSuggestions = newTxtSuggestions; + } + + public String getTxtSkillArea() { + return this.txtSkillArea; + } + + public void setTxtSkillArea(String newTxtSkillArea) { + this.txtSkillArea = newTxtSkillArea; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java new file mode 100644 index 0000000..fa33031 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpFeedBackHdrBean.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpFeedBackHdrBean extends BaseHeaderBean implements Serializable { + private String endDate; + + private String startDate; + + private String maxRating; + + private String minRating; + + private String ratingScheme; + + private String institutionName; + + private String courseName; + + private String instId; + + private String courseId; + + private String statusFlag; + + private String venue; + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getMaxRating() { + return this.maxRating; + } + + public void setMaxRating(String newMaxRating) { + this.maxRating = newMaxRating; + } + + public String getMinRating() { + return this.minRating; + } + + public void setMinRating(String newMinRating) { + this.minRating = newMinRating; + } + + public String getRatingScheme() { + return this.ratingScheme; + } + + public void setRatingScheme(String newRatingScheme) { + this.ratingScheme = newRatingScheme; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstId() { + return this.instId; + } + + public void setInstId(String newInstId) { + this.instId = newInstId; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getStatusFlag() { + return this.statusFlag; + } + + public void setStatusFlag(String newStatusFlag) { + this.statusFlag = newStatusFlag; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java new file mode 100644 index 0000000..a6744d8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistDtlBean.java @@ -0,0 +1,146 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpHistDtlBean extends BaseDetailBean implements Serializable { + private String txtEmployeeNo; + + private String txtName; + + private String txtParticipation; + + private String txtReasonForNonParticipation; + + private String txtRating; + + private String txtTrainingAttendanceDetail; + + private String empId; + + private String calId; + + private String disabtxtEmployeeNo; + + private String disabtxtName; + + private String disabtxtParticipation; + + private String disabtxtReasonForNonParticipation; + + private String disabtxtRating; + + private String disabtxtTrainingAttendanceDetail; + + public String getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String getTxtName() { + return this.txtName; + } + + public void setTxtName(String newTxtName) { + this.txtName = newTxtName; + } + + public String getTxtParticipation() { + return this.txtParticipation; + } + + public void setTxtParticipation(String newTxtParticipation) { + this.txtParticipation = newTxtParticipation; + } + + public String getTxtReasonForNonParticipation() { + return this.txtReasonForNonParticipation; + } + + public void setTxtReasonForNonParticipation(String newTxtReasonForNonParticipation) { + this.txtReasonForNonParticipation = newTxtReasonForNonParticipation; + } + + public String getTxtRating() { + return this.txtRating; + } + + public void setTxtRating(String newTxtRating) { + this.txtRating = newTxtRating; + } + + public String getTxtTrainingAttendanceDetail() { + return this.txtTrainingAttendanceDetail; + } + + public void setTxtTrainingAttendanceDetail(String newTxtTrainingAttendanceDetail) { + this.txtTrainingAttendanceDetail = newTxtTrainingAttendanceDetail; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getDisabtxtEmployeeNo() { + return this.disabtxtEmployeeNo; + } + + public void setDisabtxtEmployeeNo(String newDisabtxtEmployeeNo) { + this.disabtxtEmployeeNo = newDisabtxtEmployeeNo; + } + + public String getDisabtxtName() { + return this.disabtxtName; + } + + public void setDisabtxtName(String newDisabtxtName) { + this.disabtxtName = newDisabtxtName; + } + + public String getDisabtxtParticipation() { + return this.disabtxtParticipation; + } + + public void setDisabtxtParticipation(String newDisabtxtParticipation) { + this.disabtxtParticipation = newDisabtxtParticipation; + } + + public String getDisabtxtReasonForNonParticipation() { + return this.disabtxtReasonForNonParticipation; + } + + public void setDisabtxtReasonForNonParticipation(String newDisabtxtReasonForNonParticipation) { + this.disabtxtReasonForNonParticipation = newDisabtxtReasonForNonParticipation; + } + + public String getDisabtxtRating() { + return this.disabtxtRating; + } + + public void setDisabtxtRating(String newDisabtxtRating) { + this.disabtxtRating = newDisabtxtRating; + } + + public String getDisabtxtTrainingAttendanceDetail() { + return this.disabtxtTrainingAttendanceDetail; + } + + public void setDisabtxtTrainingAttendanceDetail(String newDisabtxtTrainingAttendanceDetail) { + this.disabtxtTrainingAttendanceDetail = newDisabtxtTrainingAttendanceDetail; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java new file mode 100644 index 0000000..85c574d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpHistHdrBean.java @@ -0,0 +1,96 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpHistHdrBean extends BaseHeaderBean implements Serializable { + private String calendarName; + + private String course; + + private String institutionName; + + private String fromDate; + + private String toDate; + + private String empNo; + + private String calId; + + private String empNoId; + + private String calDtlId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCourse() { + return this.course; + } + + public void setCourse(String newCourse) { + this.course = newCourse; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getCalDtlId() { + return this.calDtlId; + } + + public void setCalDtlId(String newCalDtlId) { + this.calDtlId = newCalDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java new file mode 100644 index 0000000..33c36fe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngEmpReqDtlBean extends BaseDetailBean implements Serializable { + private String date; + + private String participation; + + private String disabparticipation; + + private String disabdate; + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getParticipation() { + return this.participation; + } + + public void setParticipation(String newParticipation) { + this.participation = newParticipation; + } + + public String getDisabparticipation() { + return this.disabparticipation; + } + + public void setDisabparticipation(String newDisabparticipation) { + this.disabparticipation = newDisabparticipation; + } + + public String getDisabdate() { + return this.disabdate; + } + + public void setDisabdate(String newDisabdate) { + this.disabdate = newDisabdate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java new file mode 100644 index 0000000..b25ccc6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngEmpReqHdrBean.java @@ -0,0 +1,256 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngEmpReqHdrBean extends BaseHeaderBean implements Serializable { + private String employeeNumber; + + private String firstName; + + private String middleName; + + private String lastName; + + private String dateSubmitted; + + private String trainingCalendar; + + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String nature; + + private String purpose; + + private String approvalStatus; + + private String rejectionRemarks; + + private String fullPart; + + private String recommender; + + private String courseId; + + private String calId; + + private String empId; + + private String recommenderId; + + private String designation; + + private String scaleOfPay; + + private String grade; + + private String desig; + + private String location; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDateSubmitted() { + return this.dateSubmitted; + } + + public void setDateSubmitted(String newDateSubmitted) { + this.dateSubmitted = newDateSubmitted; + } + + public String getTrainingCalendar() { + return this.trainingCalendar; + } + + public void setTrainingCalendar(String newTrainingCalendar) { + this.trainingCalendar = newTrainingCalendar; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getNature() { + return this.nature; + } + + public void setNature(String newNature) { + this.nature = newNature; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getApprovalStatus() { + return this.approvalStatus; + } + + public void setApprovalStatus(String newApprovalStatus) { + this.approvalStatus = newApprovalStatus; + } + + public String getRejectionRemarks() { + return this.rejectionRemarks; + } + + public void setRejectionRemarks(String newRejectionRemarks) { + this.rejectionRemarks = newRejectionRemarks; + } + + public String getFullPart() { + return this.fullPart; + } + + public void setFullPart(String newFullPart) { + this.fullPart = newFullPart; + } + + public String getRecommender() { + return this.recommender; + } + + public void setRecommender(String newRecommender) { + this.recommender = newRecommender; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getRecommenderId() { + return this.recommenderId; + } + + public void setRecommenderId(String newRecommenderId) { + this.recommenderId = newRecommenderId; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesig() { + return this.desig; + } + + public void setDesig(String newDesig) { + this.desig = newDesig; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacBean.java new file mode 100644 index 0000000..ef58090 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacBean.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngFacBean extends BaseHeaderBean implements Serializable { + private String facultyType; + + private String employeeNo; + + private String baseInstitution; + + private String firstName; + + private String middleName; + + private String lastName; + + private String experience; + + private String institutionName; + + private String trgFacMstEmpId; + + private String trgFacMstInstCode; + + public String getFacultyType() { + return this.facultyType; + } + + public void setFacultyType(String newFacultyType) { + this.facultyType = newFacultyType; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getBaseInstitution() { + return this.baseInstitution; + } + + public void setBaseInstitution(String newBaseInstitution) { + this.baseInstitution = newBaseInstitution; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getExperience() { + return this.experience; + } + + public void setExperience(String newExperience) { + this.experience = newExperience; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getTrgFacMstEmpId() { + return this.trgFacMstEmpId; + } + + public void setTrgFacMstEmpId(String newTrgFacMstEmpId) { + this.trgFacMstEmpId = newTrgFacMstEmpId; + } + + public String getTrgFacMstInstCode() { + return this.trgFacMstInstCode; + } + + public void setTrgFacMstInstCode(String newTrgFacMstInstCode) { + this.trgFacMstInstCode = newTrgFacMstInstCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java new file mode 100644 index 0000000..ae9f340 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacFdbkDtlBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngFacFdbkDtlBean extends BaseDetailBean implements Serializable { + private String txtEmpNo; + + private String txtEmpName; + + private String txtRating; + + private String txtRemarks; + + public String getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getTxtRating() { + return this.txtRating; + } + + public void setTxtRating(String newTxtRating) { + this.txtRating = newTxtRating; + } + + public String getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java new file mode 100644 index 0000000..b9430a2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngDtlBean.java @@ -0,0 +1,186 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngFacTrngDtlBean extends BaseDetailBean implements Serializable { + private String txtFromDate; + + private String txtToDate; + + private String txtStartTime; + + private String txtEndTime; + + private String txtAverageRating; + + private String txtNameOfFaculty; + + private String facultyId; + + private String disabtxtAverageRating; + + private String disabtxtEndTime; + + private String disabtxtFromDate; + + private String disabtxtNameOfFaculty; + + private String disabtxtStartTime; + + private String disabtxtToDate; + + private String disabbutTxtFromDate; + + private String disabbutTxtToDate; + + private String disabbutFaculty; + + private String txtSkillArea; + + private String disabtxtSkillArea; + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getTxtStartTime() { + return this.txtStartTime; + } + + public void setTxtStartTime(String newTxtStartTime) { + this.txtStartTime = newTxtStartTime; + } + + public String getTxtEndTime() { + return this.txtEndTime; + } + + public void setTxtEndTime(String newTxtEndTime) { + this.txtEndTime = newTxtEndTime; + } + + public String getTxtAverageRating() { + return this.txtAverageRating; + } + + public void setTxtAverageRating(String newTxtAverageRating) { + this.txtAverageRating = newTxtAverageRating; + } + + public String getTxtNameOfFaculty() { + return this.txtNameOfFaculty; + } + + public void setTxtNameOfFaculty(String newTxtNameOfFaculty) { + this.txtNameOfFaculty = newTxtNameOfFaculty; + } + + public String getFacultyId() { + return this.facultyId; + } + + public void setFacultyId(String newFacultyId) { + this.facultyId = newFacultyId; + } + + public String getDisabtxtAverageRating() { + return this.disabtxtAverageRating; + } + + public void setDisabtxtAverageRating(String newDisabtxtAverageRating) { + this.disabtxtAverageRating = newDisabtxtAverageRating; + } + + public String getDisabtxtEndTime() { + return this.disabtxtEndTime; + } + + public void setDisabtxtEndTime(String newDisabtxtEndTime) { + this.disabtxtEndTime = newDisabtxtEndTime; + } + + public String getDisabtxtFromDate() { + return this.disabtxtFromDate; + } + + public void setDisabtxtFromDate(String newDisabtxtFromDate) { + this.disabtxtFromDate = newDisabtxtFromDate; + } + + public String getDisabtxtNameOfFaculty() { + return this.disabtxtNameOfFaculty; + } + + public void setDisabtxtNameOfFaculty(String newDisabtxtNameOfFaculty) { + this.disabtxtNameOfFaculty = newDisabtxtNameOfFaculty; + } + + public String getDisabtxtStartTime() { + return this.disabtxtStartTime; + } + + public void setDisabtxtStartTime(String newDisabtxtStartTime) { + this.disabtxtStartTime = newDisabtxtStartTime; + } + + public String getDisabtxtToDate() { + return this.disabtxtToDate; + } + + public void setDisabtxtToDate(String newDisabtxtToDate) { + this.disabtxtToDate = newDisabtxtToDate; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getDisabbutTxtToDate() { + return this.disabbutTxtToDate; + } + + public void setDisabbutTxtToDate(String newDisabbutTxtToDate) { + this.disabbutTxtToDate = newDisabbutTxtToDate; + } + + public String getDisabbutFaculty() { + return this.disabbutFaculty; + } + + public void setDisabbutFaculty(String newDisabbutFaculty) { + this.disabbutFaculty = newDisabbutFaculty; + } + + public String getTxtSkillArea() { + return this.txtSkillArea; + } + + public void setTxtSkillArea(String newTxtSkillArea) { + this.txtSkillArea = newTxtSkillArea; + } + + public String getDisabtxtSkillArea() { + return this.disabtxtSkillArea; + } + + public void setDisabtxtSkillArea(String newDisabtxtSkillArea) { + this.disabtxtSkillArea = newDisabtxtSkillArea; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java new file mode 100644 index 0000000..13596e5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngFacTrngHdrBean.java @@ -0,0 +1,136 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngFacTrngHdrBean extends BaseHeaderBean implements Serializable { + private String startDate; + + private String endDate; + + private String institutionName; + + private String courseName; + + private String calendarName; + + private String site; + + private String siteName; + + private String courseStatus; + + private String siteId; + + private String calId; + + private String courseId; + + private String instId; + + private String venue; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getCourseStatus() { + return this.courseStatus; + } + + public void setCourseStatus(String newCourseStatus) { + this.courseStatus = newCourseStatus; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getInstId() { + return this.instId; + } + + public void setInstId(String newInstId) { + this.instId = newInstId; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java new file mode 100644 index 0000000..b8b10a5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsDtlbean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class HrmTrngInsCrsDtlbean extends BaseDetailBean implements Serializable { + private String txtCourse; + + private String txtCourseName; + + private String courseId; + + private String disabtxtCourse; + + private String disabtxtCourseName; + + public String getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getDisabtxtCourse() { + return this.disabtxtCourse; + } + + public void setDisabtxtCourse(String newDisabtxtCourse) { + this.disabtxtCourse = newDisabtxtCourse; + } + + public String getDisabtxtCourseName() { + return this.disabtxtCourseName; + } + + public void setDisabtxtCourseName(String newDisabtxtCourseName) { + this.disabtxtCourseName = newDisabtxtCourseName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java new file mode 100644 index 0000000..c3dda2a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/bean/HrmTrngInsCrsHdrBean.java @@ -0,0 +1,156 @@ +package WEB-INF.classes.wenrgise.hrms.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class HrmTrngInsCrsHdrBean extends BaseHeaderBean implements Serializable { + private String instituteCode; + + private String instituteName; + + private String type; + + private String inCharge; + + private String address; + + private String pin; + + private String country; + + private String city; + + private String state; + + private String phone; + + private String fax; + + private String email; + + private String trgInstId; + + private String trgInstCountryId; + + private String trgInstCityId; + + public String getInstituteCode() { + return this.instituteCode; + } + + public void setInstituteCode(String newInstituteCode) { + this.instituteCode = newInstituteCode; + } + + public String getInstituteName() { + return this.instituteName; + } + + public void setInstituteName(String newInstituteName) { + this.instituteName = newInstituteName; + } + + public String getType() { + return this.type; + } + + public void setType(String newType) { + this.type = newType; + } + + public String getInCharge() { + return this.inCharge; + } + + public void setInCharge(String newInCharge) { + this.inCharge = newInCharge; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPin() { + return this.pin; + } + + public void setPin(String newPin) { + this.pin = newPin; + } + + public String getCountry() { + return this.country; + } + + public void setCountry(String newCountry) { + this.country = newCountry; + } + + public String getCity() { + return this.city; + } + + public void setCity(String newCity) { + this.city = newCity; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getTrgInstId() { + return this.trgInstId; + } + + public void setTrgInstId(String newTrgInstId) { + this.trgInstId = newTrgInstId; + } + + public String getTrgInstCountryId() { + return this.trgInstCountryId; + } + + public void setTrgInstCountryId(String newTrgInstCountryId) { + this.trgInstCountryId = newTrgInstCountryId; + } + + public String getTrgInstCityId() { + return this.trgInstCityId; + } + + public void setTrgInstCityId(String newTrgInstCityId) { + this.trgInstCityId = newTrgInstCityId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java new file mode 100644 index 0000000..3169791 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnApplBD.java @@ -0,0 +1,192 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; + +public class HrmATDDptnApplBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpDeputAppHdrMetaInfo((HrmATDDptnApplQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpDeputAppHeaderInfo((HrmATDDptnApplQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmDeputationApplicationHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmDeputationApplicationHdrBean oHrmDeputationApplicationHdrBean = (HrmDeputationApplicationHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmDeputationApplicationHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("A")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("P")) { + arylstEnableList.add("butApprove"); + arylstEnableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getDeputType())) + if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("W")) { + arylstDisableList.add("postCode"); + arylstDisableList.add("postName"); + arylstDisableList.add("orgName"); + arylstEnableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("F")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("O")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getAdvtNo())) + if (oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstDisableList.add("advtDate"); + arylstDisableList.add("butAdvtDate"); + } else if (!oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstEnableList.add("advtDate"); + arylstEnableList.add("butAdvtDate"); + } + } else if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getDeputStatus())) { + if (oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("P") || oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("A") || oHrmDeputationApplicationHdrBean.getDeputStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("applnNo"); + arylstDisableList.add("applnDate"); + arylstDisableList.add("deputType"); + arylstDisableList.add("butEmployeeNo"); + arylstDisableList.add("employeeNo"); + arylstDisableList.add("empName"); + arylstDisableList.add("deputStatus"); + arylstDisableList.add("butApplnNo"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("advtNo"); + arylstDisableList.add("advtDate"); + arylstDisableList.add("orgName"); + arylstDisableList.add("postCode"); + arylstDisableList.add("postName"); + arylstDisableList.add("reason"); + arylstDisableList.add("butPostName"); + arylstDisableList.add("butAdvtDate"); + arylstDisableList.add("butAdvtNo"); + } else { + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getDeputType())) + if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("W")) { + arylstDisableList.add("postCode"); + arylstDisableList.add("postName"); + arylstDisableList.add("orgName"); + arylstEnableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("F")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } else if (oHrmDeputationApplicationHdrBean.getDeputType().equalsIgnoreCase("O")) { + arylstDisableList.add("postCode"); + arylstEnableList.add("postName"); + arylstEnableList.add("orgName"); + arylstDisableList.add("butPostName"); + } + if (EnrgiseUtil.checkString(oHrmDeputationApplicationHdrBean.getAdvtNo())) + if (oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstDisableList.add("advtDate"); + arylstDisableList.add("butAdvtDate"); + } else if (!oHrmDeputationApplicationHdrBean.getAdvtNo().equalsIgnoreCase("null")) { + arylstEnableList.add("advtDate"); + arylstEnableList.add("butAdvtDate"); + } + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java new file mode 100644 index 0000000..13cee7b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnChrgRptBD.java @@ -0,0 +1,139 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; + +public class HrmATDDptnChrgRptBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmDeputChargeRepHdrMetaInfo((HrmATDDptnChrgRptQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmDeputChargeRepHeaderInfo((HrmATDDptnChrgRptQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmATDDeputChrgRptHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmATDDeputChrgRptHdrBean oHrmATDDeputChrgRptHdrBean = (HrmATDDeputChrgRptHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmATDDeputChrgRptHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("A")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("P")) { + arylstEnableList.add("butApprove"); + arylstEnableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + arylstDisableList.add("butSubmit"); + } else if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getChargeType())) + arylstDisableList.add("butChargeCode"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + if (EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getChargeType())) { + arylstEnableList.add("butChargeCode"); + } else { + arylstDisableList.add("butChargeCode"); + } + } else if (EnrgiseUtil.checkString(oHrmATDDeputChrgRptHdrBean.getChargeStatus())) { + System.out.println(oHrmATDDeputChrgRptHdrBean.getChargeStatus()); + if (oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("P") || oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("A") || oHrmATDDeputChrgRptHdrBean.getChargeStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("dptOrderNo"); + arylstDisableList.add("chargeCode"); + arylstDisableList.add("chargeType"); + arylstDisableList.add("butChargeCode"); + arylstDisableList.add("noonFlag"); + arylstDisableList.add("butHandOverDate"); + arylstDisableList.add("butDptOrderNo"); + arylstDisableList.add("remarks"); + } else { + arylstDisableList.add("butChargeCode"); + } + } + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmATDDeputChrgRptHdrBean); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java new file mode 100644 index 0000000..c42286d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDDptnOrderForSingleEmpBD.java @@ -0,0 +1,105 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; + +public class HrmATDDptnOrderForSingleEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmDeputOrderSngEmpHdrMetaInfo((HrmATDDptnOrderSingleEmpQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmDeputOrderSngEmpHeaderInfo((HrmATDDptnOrderSingleEmpQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmATDDeputOrderSngEmpHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmATDDeputOrderSngEmpHdrBean oHrmATDDeputOrderSngEmpHdrBean = (HrmATDDeputOrderSngEmpHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmATDDeputOrderSngEmpHdrBean.equals(null)); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java new file mode 100644 index 0000000..539fba1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransApplBD.java @@ -0,0 +1,173 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransApplQVO; + +public class HrmATDTransApplBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpTransAppHeaderMetaInfo((HrmATDTransApplQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpTransAppHeader((HrmATDTransApplQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmTransAppl((HrmTransferApplicationHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnabledList = new ArrayList(); + ArrayList arylstDisabledList = new ArrayList(); + HrmTransferApplicationHdrBean oHrmTransferApplicationHdrBean = (HrmTransferApplicationHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisabledList.add("butToDesignation"); + arylstDisabledList.add("butToWorkGroup"); + arylstEnabledList.add("butEmployeeNo"); + } + if (!oHrmTransferApplicationHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnabledList.add("ofcNoteNo"); + arylstEnabledList.add("butOfcNoteNo"); + arylstEnabledList.add("ofcNoteDate"); + arylstEnabledList.add("butOfcNoteDate"); + arylstEnabledList.add("butEmployeeNo"); + arylstEnabledList.add("butToDesignation"); + arylstEnabledList.add("butToWorkGroup"); + if (EnrgiseUtil.checkString(oHrmTransferApplicationHdrBean.getApplnType())) + if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("S")) { + oHrmTransferApplicationHdrBean.setSite1(""); + oHrmTransferApplicationHdrBean.setSite2(""); + oHrmTransferApplicationHdrBean.setSite3(""); + oHrmTransferApplicationHdrBean.setSiteCode1(""); + oHrmTransferApplicationHdrBean.setSiteCode2(""); + oHrmTransferApplicationHdrBean.setSiteCode3(""); + arylstDisabledList.add("siteCode1"); + arylstDisabledList.add("siteCode2"); + arylstDisabledList.add("siteCode3"); + arylstDisabledList.add("site1"); + arylstDisabledList.add("site2"); + arylstDisabledList.add("site3"); + arylstDisabledList.add("butSite1"); + arylstDisabledList.add("butSite2"); + arylstDisabledList.add("butSite3"); + } else if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("L")) { + arylstEnabledList.add("siteCode1"); + arylstEnabledList.add("siteCode2"); + arylstEnabledList.add("siteCode3"); + arylstEnabledList.add("site1"); + arylstEnabledList.add("site2"); + arylstEnabledList.add("site3"); + arylstEnabledList.add("butSite1"); + arylstEnabledList.add("butSite2"); + arylstEnabledList.add("butSite3"); + } + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnabledList.add("ofcNoteNo"); + arylstEnabledList.add("butOfcNoteNo"); + arylstEnabledList.add("ofcNoteDate"); + arylstEnabledList.add("butOfcNoteDate"); + arylstEnabledList.add("butEmployeeNo"); + arylstEnabledList.add("butToDesignation"); + arylstEnabledList.add("butToWorkGroup"); + if (EnrgiseUtil.checkString(oHrmTransferApplicationHdrBean.getApplnType())) + if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("S")) { + oHrmTransferApplicationHdrBean.setSite1(""); + oHrmTransferApplicationHdrBean.setSite2(""); + oHrmTransferApplicationHdrBean.setSite3(""); + oHrmTransferApplicationHdrBean.setSiteCode1(""); + oHrmTransferApplicationHdrBean.setSiteCode2(""); + oHrmTransferApplicationHdrBean.setSiteCode3(""); + arylstDisabledList.add("siteCode1"); + arylstDisabledList.add("siteCode2"); + arylstDisabledList.add("siteCode3"); + arylstDisabledList.add("site1"); + arylstDisabledList.add("site2"); + arylstDisabledList.add("site3"); + arylstDisabledList.add("butSite1"); + arylstDisabledList.add("butSite2"); + arylstDisabledList.add("butSite3"); + } else if (oHrmTransferApplicationHdrBean.getApplnType().equalsIgnoreCase("L")) { + arylstEnabledList.add("siteCode1"); + arylstEnabledList.add("siteCode2"); + arylstEnabledList.add("siteCode3"); + arylstEnabledList.add("site1"); + arylstEnabledList.add("site2"); + arylstEnabledList.add("site3"); + arylstEnabledList.add("butSite1"); + arylstEnabledList.add("butSite2"); + arylstEnabledList.add("butSite3"); + } + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmTransferApplicationHdrBean); + oHashMap.put("D", arylstDisabledList); + oHashMap.put("E", arylstEnabledList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java new file mode 100644 index 0000000..4f8b28b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransChrgRptBD.java @@ -0,0 +1,144 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; + +public class HrmATDTransChrgRptBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmChargeRepHeaderMetaInfo((HrmATDTransChrgRptQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmChargeRepHeader((HrmATDTransChrgRptQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmChargeReportHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmChargeReportHdrBean oHrmChargeReportHdrBean = (HrmChargeReportHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butTrnOrderNo"); + } else { + arylstDisableList.add("butTrnOrderNo"); + } + arylstDisableList.add("butEmployee"); + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getTrnOrderNoId())) { + arylstEnableList.add("butExecute"); + } else { + arylstDisableList.add("butExecute"); + } + } + if (!oHrmChargeReportHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butTrnOrderNo"); + } else { + arylstDisableList.add("butTrnOrderNo"); + } + arylstEnableList.add("butEmployee"); + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) + arylstDisableList.add("butChargeCode"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butTrnOrderNo"); + } else { + arylstDisableList.add("butTrnOrderNo"); + } + arylstDisableList.add("butEmployee"); + if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeType())) { + arylstEnableList.add("butChargeCode"); + } else { + arylstDisableList.add("butChargeCode"); + } + } else if (EnrgiseUtil.checkString(oHrmChargeReportHdrBean.getChargeStatus())) { + if (oHrmChargeReportHdrBean.getChargeStatus().equalsIgnoreCase("P") || oHrmChargeReportHdrBean.getChargeStatus().equalsIgnoreCase("A") || oHrmChargeReportHdrBean.getChargeStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("trnOrderNo"); + arylstDisableList.add("butTrnOrderNo"); + arylstDisableList.add("chargeCode"); + arylstDisableList.add("butChargeCode"); + arylstDisableList.add("chargeType"); + arylstDisableList.add("butHandOverDate"); + arylstDisableList.add("noonFlag"); + arylstDisableList.add("remarks"); + arylstDisableList.add("butEmployee"); + } else { + arylstDisableList.add("butChargeCode"); + } + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmChargeReportHdrBean); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java new file mode 100644 index 0000000..2194567 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclApplBD.java @@ -0,0 +1,153 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; + +public class HrmATDTransCnclApplBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpTransCnclHeaderMetaInfo((HrmATDTransCnclApplQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpTransCnclHeader((HrmATDTransCnclApplQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmTransCnclAppl((HrmEmpTransCnclApplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmEmpTransCnclApplHdrBean oHrmEmpTransCnclApplHdrBean = (HrmEmpTransCnclApplHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstEnableList.add("butEmpNo"); + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + if (!oHrmEmpTransCnclApplHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butEmpNo"); + arylstEnableList.add("ofcNoteNo"); + arylstDisableList.add("butOfcNoteNo"); + arylstDisableList.add("ofcNoteDate"); + arylstEnableList.add("butOfcNoteDate"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + if (EnrgiseUtil.checkString(oHrmEmpTransCnclApplHdrBean.getDeferredStatus())) { + System.out.println(oHrmEmpTransCnclApplHdrBean.getDeferredStatus()); + if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("P") || oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("A") || oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("empNo"); + arylstDisableList.add("empName"); + arylstDisableList.add("butEmpNo"); + arylstDisableList.add("butApplnNo"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("applnNo"); + arylstDisableList.add("applnDate"); + arylstDisableList.add("generatedBy"); + arylstDisableList.add("ofcNoteNo"); + arylstDisableList.add("butOfcNoteNo"); + arylstDisableList.add("ofcNoteDate"); + arylstDisableList.add("butOfcNoteDate"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("cancelDeferFlag"); + arylstDisableList.add("defermentPeriod"); + arylstDisableList.add("deferredDate"); + arylstDisableList.add("butDeferredDate"); + arylstDisableList.add("reason"); + } else { + arylstDisableList.add("ofcNoteNo"); + arylstDisableList.add("butOfcNoteNo"); + arylstDisableList.add("ofcNoteDate"); + arylstEnableList.add("butOfcNoteDate"); + } + if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("A")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("P")) { + arylstDisableList.add("butSubmit"); + arylstEnableList.add("butApprove"); + arylstEnableList.add("butReject"); + } else if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("R")) { + arylstDisableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } else if (oHrmEmpTransCnclApplHdrBean.getDeferredStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("butSubmit"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("butReject"); + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java new file mode 100644 index 0000000..c012970 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransCnclOrderForSingleEmpBD.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; + +public class HrmATDTransCnclOrderForSingleEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpTrnsCnclOrderHdrMetaInfo((HrmATDTransCnclOrderSingleEmpQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpTrnsCnclOrderHeaderInfo((HrmATDTransCnclOrderSingleEmpQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmTransCnclOrderSingEmpHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmTransCnclOrderSingEmpHdrBean oHrmTransCnclOrderSingEmpHdrBean = (HrmTransCnclOrderSingEmpHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butApproverNo"); + arylstDisableList.add("orderNo"); + } + if (!oHrmTransCnclOrderSingEmpHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butApproverNo"); + arylstEnableList.add("orderNo"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstDisableList.add("butApproverNo"); + arylstDisableList.add("orderNo"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java new file mode 100644 index 0000000..b610a19 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmATDTransOrderForSingleEmpBD.java @@ -0,0 +1,132 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; + +public class HrmATDTransOrderForSingleEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmTransSingleEmpRecordMetaInfo((HrmATDTransSingleEmpQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmTransSingleEmpHeaderInfo((HrmATDTransSingleEmpQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveData((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmATDTransOrderForSingleEmpBean oHrmATDTransOrderForSingleEmpBean = (HrmATDTransOrderForSingleEmpBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + arylstDisableList.add("butApproverNo"); + if (!oHrmATDTransOrderForSingleEmpBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstEnableList.add("butApproverNo"); + if (EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderType())) + if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("S")) { + arylstDisableList.add("butToSite"); + } else if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("L")) { + arylstEnableList.add("butToSite"); + } + if (!EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getToSiteID())) { + arylstDisableList.add("butReportingEmpId"); + } else { + arylstEnableList.add("butReportingEmpId"); + } + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + if (!EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getToSiteID())) { + arylstDisableList.add("butReportingEmpId"); + } else { + arylstEnableList.add("butReportingEmpId"); + } + arylstEnableList.add("butApproverNo"); + if (EnrgiseUtil.checkString(oHrmATDTransOrderForSingleEmpBean.getOrderType())) + if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("S")) { + arylstDisableList.add("butToSite"); + } else if (oHrmATDTransOrderForSingleEmpBean.getOrderType().equalsIgnoreCase("L")) { + arylstEnableList.add("butToSite"); + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = null; + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butCancelTransfer")) + sHeaderPrimaryKey = oFacade.cancelTransfer((HrmATDTransOrderForSingleEmpBean)oBaseHeaderBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + return sHeaderPrimaryKey; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java new file mode 100644 index 0000000..656e05b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdhocReportBD.java @@ -0,0 +1,113 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAdhocReportQVO; + +public class HrmAdhocReportBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmAdhocReportHdrMetaInfo((HrmAdhocReportQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmAdhocReportHeaderInfo((HrmAdhocReportQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAdhocReport((HrmAdhocReportHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oDisableList = new ArrayList(); + ArrayList oEnableList = new ArrayList(); + HrmAdhocReportHdrBean oHrmAdhocReportHdrBean = (HrmAdhocReportHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butQueryCode"); + } else { + oDisableList.add("butQueryCode"); + } + if (null != oHrmAdhocReportHdrBean.getId()) { + oEnableList.add("butDownload"); + } else { + oDisableList.add("butDownload"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java new file mode 100644 index 0000000..cc97298 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvMstBD.java @@ -0,0 +1,98 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; + +public class HrmAdvMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvMasterHdrMetaInfo((HrmAdvMstQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmAdvMasterHeaderInfo((HrmAdvMstQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvMasterDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvMasterDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmAdvanceMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java new file mode 100644 index 0000000..b80dff2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleBD.java @@ -0,0 +1,99 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmAdvSettleQVO; + +public class HrmAdvSettleBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSettlementHdrMetaInfo((HrmAdvSettleQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmAdvSettlementHeader((HrmAdvSettleQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmAdvSettleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = null; + return sHeaderPrimaryKey; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAdvSettleHdrBean oHrmAdvSettleHdrBean = (HrmAdvSettleHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmAdvSettleHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U") || oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + if (EnrgiseUtil.checkString(oHrmAdvSettleHdrBean.getEmployeeId())) { + arylstEnableList.add("butAdvanceCode"); + } else { + arylstDisableList.add("butAdvanceCode"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java new file mode 100644 index 0000000..27be15f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAdvSettleHeadsBD.java @@ -0,0 +1,108 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAdvSettleHeadsDtlBean; +import wenrgise.hrms.bean.HrmAdvSettleHeadsHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; + +public class HrmAdvSettleHeadsBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacade oHrmFacade = (HrmFacade)getModuleFacade(); + return oHrmFacade.getHrAdvSettleHeadsDetailMetaInfo((HrmAdvSettleHeadsQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacade oHrmFacade = (HrmFacade)getModuleFacade(); + return oHrmFacade.getHrAdvSettleHeadsDetail((HrmAdvSettleHeadsQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + HrmAdvSettleHeadsHdrBean oHrmAdvSettleHeadsHdrBean = (HrmAdvSettleHeadsHdrBean)oThisPageVO.getOHeaderBean(); + Iterator oIt = oList.iterator(); + HrmAdvSettleHeadsDtlBean oHrmAdvSettleHeadsDtlBean = null; + while (oIt.hasNext()) { + oHrmAdvSettleHeadsDtlBean = oIt.next(); + if (oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus() == null || oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("N")) { + arylstEnableList.add("txtAmount"); + continue; + } + if (oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("A") || oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("P") || oHrmAdvSettleHeadsDtlBean.getTxtSettleStatus().equalsIgnoreCase("R")) + arylstDisableList.add("txtAmount"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmAdvSettleHds(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java new file mode 100644 index 0000000..0e99dbd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAgeAnalysisBD.java @@ -0,0 +1,84 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmAgeAnalysisBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oEnableList.add("butQuery"); + oDisableList.add("butSave"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butHelp"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.InsertDataAgeAnalysis(oBaseHeaderBean); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAppTempBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAppTempBD.java new file mode 100644 index 0000000..1d0c29d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAppTempBD.java @@ -0,0 +1,195 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalTemplateKpaDtlBean; +import wenrgise.hrms.bean.HrmAppraisalTemplateSecDtlBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAppTempQueryVO; + +public class HrmAppTempBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmAppTemplateHdrMetaInfo((HrmAppTempQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAppTemplateHeaderInfo((HrmAppTempQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateSection")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAppTempSecDtlMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAppTempSecKPADtlMetaInfo(lPrimaryKey); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateSection")) { + arylstRet = oHrmThirdFacade.getHrmAppTempSecDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + arylstRet = oHrmThirdFacade.getHrmAppTempSecKPADetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return arylstRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmAprslTmplSec((HrmAppTempHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butDelete"); + arylstDisableList.add("butDelRow"); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmAppTempHdrBean oHrmAppTempHdrBean = (HrmAppTempHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAppTempHdrBean.getHeaderFlag())) + if (oHrmAppTempHdrBean.getHeaderFlag().equalsIgnoreCase("A")) { + arylstDisableList.add("butAddRow"); + arylstDisableList.add("butRatingCode"); + arylstDisableList.add("obsolete"); + arylstDisableList.add("applicableToAll"); + arylstDisableList.add("butApprove"); + arylstDisableList.add("templateName"); + arylstDisableList.add("ratingCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstDisableList.add("butTemplateName"); + arylstDisableList.add("ratingCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + arylstDisableList.add("templateName"); + if (oDetailList == null) + arylstDisableList.add("butApprove"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + arylstDisableList.add("butRatingCode"); + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAppraisalTemplateSection")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateSecDtlBean oHrmAppraisalTemplateSecDtlBean = oIt.next(); + if (!oHrmAppraisalTemplateSecDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmAppraisalTemplateSecDtlBean.setDisabtxtSrlNo("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtSectionCode("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabbutParentSecCode("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtParentSection("true"); + if (EnrgiseUtil.checkString(oHrmAppTempHdrBean.getHeaderFlag())) + if (oHrmAppTempHdrBean.getHeaderFlag().equalsIgnoreCase("A")) { + oHrmAppraisalTemplateSecDtlBean.setDisabtxtAppraiserType("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtRatingReqd("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtSectionWeightage("true"); + oHrmAppraisalTemplateSecDtlBean.setDisabtxtTemplateRemarks("true"); + } + } + if (oHrmAppraisalTemplateSecDtlBean.getStatus().equalsIgnoreCase("N")) + oHrmAppraisalTemplateSecDtlBean.setDisabtxtParentSection("true"); + } + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAppraisalTemplateKPA")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalTemplateKpaDtlBean oHrmAppraisalTemplateKpaDtlBean = oIt.next(); + if (!oHrmAppraisalTemplateKpaDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtKpaGroupCode("true"); + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtApprKpa("true"); + if (EnrgiseUtil.checkString(oHrmAppTempHdrBean.getHeaderFlag())) + if (oHrmAppTempHdrBean.getHeaderFlag().equalsIgnoreCase("A")) { + oHrmAppraisalTemplateKpaDtlBean.setDisabbutKPAGroupCode("true"); + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtWeightage("true"); + } + } + if (oHrmAppraisalTemplateKpaDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtKpaGroupCode("true"); + oHrmAppraisalTemplateKpaDtlBean.setDisabtxtApprKpa("true"); + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmThirdFacade.approveHrmAprslTmplMst((HrmAppTempHdrBean)oBaseHeaderBean, sScreenName); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java new file mode 100644 index 0000000..af9cb33 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmApprisalKPABD.java @@ -0,0 +1,190 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAppraisalKPADtlBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; + +public class HrmApprisalKPABD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + if (sScreenName.equals("HrmAppraisalKPA")) + return oHrmAppKPAFacade.getHrmAppRaisalKpaDetailMetaInfo(sPrimaryKey); + return null; + } catch (RemoteException oRe) { + System.out.println(oRe.getMessage()); + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + System.out.println(oCrt.getMessage()); + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + if (sScreenName.equals("HrmAppraisalKPA")) + return oHrmAppKPAFacade.getHrmAppRaisalKpaDetail(sPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + System.out.println(oRe.getMessage()); + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + System.out.println(oCrt.getMessage()); + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + return oHrmAppKPAFacade.saveHrmAppRaisalKpa((HrmAppraisalKPAHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + return oHrmAppKPAFacade.getHrmAppRaisalKpaHeaderMetaInfo((HrmAppraisalKPAQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmAppKPAFacade = oHome.create(); + ArrayList oHeaderList = oHrmAppKPAFacade.getHrmAppRaisalKpaHeader((HrmAppraisalKPAQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (bHeaderDataChanged || bDetailDataChanged) { + MessageKey oMessageKey = new MessageKey("save.before.freeze"); + ArrayList oParams = new ArrayList(); + throw new EnrgiseMessageKeyException("wenrgise.common.detail.mandatoryFieldMissing", oParams, "E"); + } + if (sButtonName.equalsIgnoreCase("butFreeze")) + sHeaderPrimaryKey = oHrmThirdFacade.getHrmAppRaisalKpaExactWeightage(oBaseHeaderBean.getHeaderPrimaryKey()); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butDelete"); + arylstDisableList.add("butDelRow"); + ArrayList oEnableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmAppraisalKPAHdrBean objHdrBean = (HrmAppraisalKPAHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + arylstDisableList.add("butKpaGroupCode"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("kpaGroupCode"); + arylstDisableList.add("description"); + arylstDisableList.add("ratingRequired"); + arylstDisableList.add("txtAppraiserType"); + } + ArrayList arylstList = new ArrayList(); + if (EnrgiseUtil.checkString(objHdrBean.getStatusOfHeader())) { + if (oDetailList != null && objHdrBean.getStatusOfHeader().equalsIgnoreCase("Freezed")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = oIt.next(); + oHrmAppraisalKPADtlBean.setDisabmandatoryFlag("true"); + oHrmAppraisalKPADtlBean.setDisabtxtDescription("true"); + oHrmAppraisalKPADtlBean.setDisabtxtKpaCode("true"); + oHrmAppraisalKPADtlBean.setDisabtxtSrlNo("true"); + oHrmAppraisalKPADtlBean.setDisabtxtWeightage("true"); + arylstList.add(oHrmAppraisalKPADtlBean); + } + oThisPageVO.setODetailList(arylstList); + } + } else { + ArrayList arylstDisabList = new ArrayList(); + if (oDetailList != null) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAppraisalKPADtlBean oHrmAppraisalKPADtlBean = oIt.next(); + if (oHrmAppraisalKPADtlBean.getStatus().equalsIgnoreCase("Q")) { + oHrmAppraisalKPADtlBean.setDisabtxtKpaCode("true"); + oHrmAppraisalKPADtlBean.setDisabtxtSrlNo("true"); + } + arylstDisabList.add(oHrmAppraisalKPADtlBean); + } + } + oThisPageVO.setODetailList(arylstDisabList); + } + if (oDetailList == null) { + arylstDisableList.add("butFreeze"); + } else if (oDetailList != null) { + arylstEnableList.add("butFreeze"); + } + if (EnrgiseUtil.checkString(objHdrBean.getStatusOfHeader())) { + arylstDisableList.add("butFreeze"); + arylstDisableList.add("kpaGroupCode"); + arylstDisableList.add("butKpaGroupCode"); + arylstDisableList.add("description"); + arylstDisableList.add("ratingRequired"); + arylstDisableList.add("statusOfHeader"); + arylstDisableList.add("txtAppraiserType"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslBD.java new file mode 100644 index 0000000..b6edaa7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslBD.java @@ -0,0 +1,684 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslGoalsDtlBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslKPADtlBean; +import wenrgise.hrms.bean.HrmAprslTrngReqDtlBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public class HrmAprslBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.saveHrmEmpAprsl((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAprslKPA")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmEmpAprslKPADetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAprslGoals")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmEmpAprslGoalsDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAprslTrngReq")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslTrngReqDtlMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmpDtls")) { + oRecordMetaInfo.setRecordCount(1L); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmployee")) { + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslEmpDtlMetaInfo(lPrimaryKey); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmAprslKPA")) { + arylstRet = oHrmThirdFacade.getHrmEmpAprslKPADetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslGoals")) { + arylstRet = oHrmThirdFacade.getHrmEmpAprslGoalsDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslTrngReq")) { + arylstRet = oHrmThirdFacade.getHrAprslTrngReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmpDtls")) { + arylstRet = oHrmThirdFacade.getHrAprslEmpPerDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmAprslEmployee")) { + arylstRet = oHrmThirdFacade.getHrAprslEmpPerDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return arylstRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmEmpAprslHdrMetaInfo((HrmAprslQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmEmpAprslHdrInfo((HrmAprslQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butDelRow"); + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAprslLevel())) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) + arylstDisableList.add("finalRating"); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R")) + arylstDisableList.add("finalRating"); + } else { + arylstDisableList.add("finalRating"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butGetDetail"); + arylstDisableList.add("butStOrder"); + } + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAprslLevel())) { + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) { + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getCalFlag())) + if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("C")) { + arylstDisableList.add("butDone"); + arylstDisableList.add("butReject"); + } else if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("D")) { + arylstDisableList.add("butCalculate"); + arylstDisableList.add("butReject"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getDoneFlag())) + if (oHrmAprslHdrBean.getDoneFlag().equalsIgnoreCase("true")) + arylstDisableList.add("butDone"); + } + } else if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4") || oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getCalFlag())) + if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("C")) { + arylstDisableList.add("butDone"); + } else if (oHrmAprslHdrBean.getCalFlag().equalsIgnoreCase("D")) { + arylstDisableList.add("butCalculate"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getDoneFlag())) + if (oHrmAprslHdrBean.getDoneFlag().equalsIgnoreCase("true")) { + arylstDisableList.add("butDone"); + arylstDisableList.add("butReject"); + } + } + } + } else { + arylstDisableList.add("butDone"); + arylstDisableList.add("butReject"); + arylstDisableList.add("butCalculate"); + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAprslKPA")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAprslKPADtlBean oHrmAprslKPADtlBean = oIt.next(); + if (!oHrmAprslKPADtlBean.getStatus().equalsIgnoreCase("N")) { + if (oHrmAprslKPADtlBean.getTxtKpaRatingReq().equalsIgnoreCase("N")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (oHrmAprslKPADtlBean.getTxtKpaAprslType().equalsIgnoreCase("0")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (oHrmAprslKPADtlBean.getTxtKpaAprslType().equalsIgnoreCase("1")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (oHrmAprslKPADtlBean.getTxtKpaAprslType().equalsIgnoreCase("2")); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating0())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating1())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating2())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating3())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating4())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating0("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating1("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating2("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating3("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating4("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK0LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK1LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK2LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK3LOV("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK4LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating5())) { + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslKPADtlBean.setDisabtxtLevelRating5("true"); + oHrmAprslKPADtlBean.setDisabtxtLevelAprl5("true"); + oHrmAprslKPADtlBean.setDisabbutRatingK5LOV("true"); + } + } + } + } + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAprslGoals")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAprslGoalsDtlBean oHrmAprslGoalsDtlBean = oIt.next(); + if (!oHrmAprslGoalsDtlBean.getStatus().equalsIgnoreCase("N")) { + if (oHrmAprslGoalsDtlBean.getTxtSecRatingReq().equalsIgnoreCase("N")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (oHrmAprslGoalsDtlBean.getTxtSecAprslType().equalsIgnoreCase("0")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (oHrmAprslGoalsDtlBean.getTxtSecAprslType().equalsIgnoreCase("1")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (oHrmAprslGoalsDtlBean.getTxtSecAprslType().equalsIgnoreCase("2")); + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("0")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating0())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("1")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating1())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("2")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating2())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("3")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating3())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("4")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating4())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + } + } + if (oHrmAprslHdrBean.getAprslLevel().equalsIgnoreCase("5")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating0g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating1g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating2g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating3g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating4g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG0LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG1LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG2LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG3LOV("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG4LOV("true"); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getRating5())) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getAppFlag())) + if (oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("R") || oHrmAprslHdrBean.getAppFlag().equalsIgnoreCase("A")) { + oHrmAprslGoalsDtlBean.setDisabtxtLevelRating5g("true"); + oHrmAprslGoalsDtlBean.setDisabtxtLevelAprl5g("true"); + oHrmAprslGoalsDtlBean.setDisabbutRatingG5LOV("true"); + } + } + } + } + } + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmAprslTrngReq")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmAprslTrngReqDtlBean oHrmAprslTrngReqDtlBean = oIt.next(); + if (oHrmAprslTrngReqDtlBean.getStatus().equalsIgnoreCase("Q")) { + oHrmAprslTrngReqDtlBean.setDisabbutCourseLOV("true"); + oHrmAprslTrngReqDtlBean.setDisabbutRecLOV("true"); + oHrmAprslTrngReqDtlBean.setDisabbutTrngCalLOV("true"); + oHrmAprslTrngReqDtlBean.setDisabtxtPurpose("true"); + oHrmAprslTrngReqDtlBean.setDisabtxtRemarks("true"); + } + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butCalculate")) + sHeaderPrimaryKey = oHrmThirdFacade.calEmpFinRating((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + if (sButtonName.equalsIgnoreCase("butDone")) + sHeaderPrimaryKey = oHrmThirdFacade.approveEmpAprsl((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmThirdFacade.rejectEmpAprsl((HrmAprslHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10) { + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oThisPageVO.getOHeaderBean(); + if (!EnrgiseUtil.checkString(oHrmAprslHdrBean.getWorkListId())); + } + if (oThisPageVO.getActionName() == 13) { + HrmAprslHdrBean oHrmAprslHdrBean = (HrmAprslHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAprslHdrBean.getWorkListId())) { + WflWorkListInfoBean oWflWorkListInfoBean = new WflWorkListInfoBean(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + oWflWorkListInfoBean = oHrmThirdFacade.getWorkListInfo(oHrmAprslHdrBean.getWorkListId()); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRt) { + throw new EnrgiseSystemException(oRt); + } + oHrmAprslHdrBean.setEmpId(oWflWorkListInfoBean.getCreatorempId()); + } + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java new file mode 100644 index 0000000..db032ce --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslSpcTmplBD.java @@ -0,0 +1,165 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; + +public class HrmAprslSpcTmplBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + return oHrmThirdFacade.saveHrmAprslSpcTmp((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equals("HrmAprslSpcTmpl")) + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslSpcTmpKPADtlMetaInfo(lPrimaryKey); + if (sScreenName.equals("HrmAprslSpcTmplGoals")) + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslSpcTmpGoalsDtlMetaInfo(lPrimaryKey); + if (sScreenName.equals("HrmAprslSpcTmplEmpElig")) + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslSpcTmpEligDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sScreenName.equals("HrmAprslSpcTmpl")) + arylstRet = oHrmThirdFacade.getHrmAprslSpcTmpKPADetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equals("HrmAprslSpcTmplGoals")) + arylstRet = oHrmThirdFacade.getHrmAprslSpcTmpGoalsDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equals("HrmAprslSpcTmplEmpElig")) + arylstRet = oHrmThirdFacade.getHrmAprslSpcTmpEligDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return arylstRet; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmAprslSpcTmpHdrMetaInfo((HrmAprslSpcTmplQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAprslSpcTmpHeaderInfo((HrmAprslSpcTmplQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butTemplateName"); + oDisableList.add("butClassHdr"); + oDisableList.add("butClassDtl"); + oDisableList.add("butSiteCode"); + oDisableList.add("butDeptCode"); + oDisableList.add("butEmpNo"); + oDisableList.add("butStOrderNo"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oDisableList.add("splTemplateName"); + oDisableList.add("butSplTemplateName"); + oEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butClassHdr"); + oDisableList.add("butClassDtl"); + oDisableList.add("butSiteCode"); + oDisableList.add("butDeptCode"); + oDisableList.add("butEmpNo"); + oDisableList.add("butStOrderNo"); + oDisableList.add("butTemplateName"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butSplTemplateName"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmThirdFacade.approveHrmAprslSpcTmp((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmThirdFacade.rejectHrmAprslSpcTmp((HrmAprslSpcTmplHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 13 || oThisPageVO.getActionName() == 10) { + HrmAprslSpcTmplHdrBean oHrmAprslSpcTmplHdrBean = (HrmAprslSpcTmplHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAprslSpcTmplHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmAprslSpcTmplHdrBean.setEmpLoyeeNumber(this.oUserInfo.getUserId()); + oHrmAprslSpcTmplHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java new file mode 100644 index 0000000..f522b89 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartOrderBD.java @@ -0,0 +1,101 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; + +public class HrmAprslStartOrderBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + return oHrmThirdFacade.getHrmAprslStOrderMetaInfo((HrmAprslStartOrderQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAprslStOrderInfo((HrmAprslStartOrderQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmThirdFacade.saveHrmAprslStOrder((HrmAprslStartOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmAprslStartOrderHdrBean oHrmAprslStartOrderHdrBean = (HrmAprslStartOrderHdrBean)oBaseHeaderBean; + if (!oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butStOrderNo"); + oEnableList.add("butAprslStDate"); + oEnableList.add("butAprslEndDate"); + oEnableList.add("butPeriodEndDate"); + oEnableList.add("butPeriodStDate"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butStOrderNo"); + oDisableList.add("butAprslStDate"); + oDisableList.add("butAprslEndDate"); + oDisableList.add("butPeriodEndDate"); + oDisableList.add("butPeriodStDate"); + } + oHashMap.put("D", oDisableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java new file mode 100644 index 0000000..37be44d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAprslStartRuleBD.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; + +public class HrmAprslStartRuleBD extends HrmBaseBD { + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacade oHrmThirdFacade = (HrmThirdFacade)getModuleFacade("ThirdHRMS"); + return oHrmThirdFacade.saveHrmAprslStRule((HrmAprslStartRuleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + oRecordMetaInfo = oHrmThirdFacade.getHrmAprslStRuleDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstRet = new ArrayList(); + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + arylstRet = oHrmThirdFacade.getHrmAprslStRuleDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return arylstRet; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + return oHrmThirdFacade.getHrmAprslStRuleHdrMetaInfo((HrmAprslStartRuleQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmThirdFacadeHome oHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oHrmThirdFacade = oHome.create(); + ArrayList oHeaderList = oHrmThirdFacade.getHrmAprslStRuleHeader((HrmAprslStartRuleQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + HrmAprslStartRuleHdrBean oHrmAprslStartRuleHdrBean = (HrmAprslStartRuleHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butTxtAprslStOrdNo"); + oDisableList.add("butTxtEmpNum"); + oDisableList.add("butTxtWrkGrpCode"); + oDisableList.add("butTxtSiteCode"); + oDisableList.add("butTxtClsHdr"); + oDisableList.add("butTxtClsDtl"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java new file mode 100644 index 0000000..985282a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttOutBD.java @@ -0,0 +1,115 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseDetailInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; + +public class HrmAttEmpAttOutBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, HrmAttEmpAttOutQVO objHrmAttEmpAttOutQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public BaseDetailVO getDetailRecord(String sFormName, String sScreenName, String sPrimaryKey, long lPageRequested, DetailSizeValues oDetailSizeValues, BaseDetailVO oBaseDetailVO, UserSession oUser, BaseDetailInfo oBaseDetailInfo, boolean bForce) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 21 || oThisPageVO.getActionName() == 13) { + HrmAttEmpAttOutHdrBean oHrmAttEmpAttOutHdrBean = (HrmAttEmpAttOutHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttOutHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmAttEmpAttOutHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmAttEmpAttOutHdrBean.setFirstName(oName[0]); + oHrmAttEmpAttOutHdrBean.setMiddleName(oName[1]); + oHrmAttEmpAttOutHdrBean.setLastName(oName[2]); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmAttOutHdrMetaInfo((HrmAttEmpAttOutQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmAttOutHeaderInfo((HrmAttEmpAttOutQVO)oQueryVO, lStartPosition, lLastPosition); + System.out.println(oHeaderList.size()); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttEmpOut((HrmAttEmpAttOutHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butInsert"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java new file mode 100644 index 0000000..b5bc539 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpAttQueryBD.java @@ -0,0 +1,125 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpAttQueryDtlBean; +import wenrgise.hrms.bean.HrmAttEmpAttQueryHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; + +public class HrmAttEmpAttQueryBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getEmpAttQueryHdrMetaInfo((HrmAttEmpAttQueryQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getEmpAttQueryHeader((HrmAttEmpAttQueryQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getEmpAttQueryDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getEmpAttQueryDtlInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.saveHrmAttEmpQuery(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + if (oThisPageVO.getActionName() == 10) { + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttQueryHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + } else if (oThisPageVO.getActionName() == 13) { + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttQueryHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + } else if (oThisPageVO.getActionName() == 19) { + HrmAttEmpAttQueryHdrBean oHrmAttEmpAttQueryHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + oHrmAttEmpAttQueryHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + HrmAttEmpAttQueryHdrBean oHdrBean = (HrmAttEmpAttQueryHdrBean)oThisPageVO.getOHeaderBean(); + HrmAttEmpAttQueryDtlBean objHrmAttEmpAttQueryDtlBean = new HrmAttEmpAttQueryDtlBean(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butDelRow"); + oDisableList.add("butAddRow"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oEnableList.add("butInsert"); + oDisableList.add("butPeriodStartDt"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + oEnableList.add("butPeriodStartDt"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java new file mode 100644 index 0000000..0083dcd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpDayOffBD.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpDayOffHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; + +public class HrmAttEmpDayOffBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttEmpDayoffDtlMetaInfo((HrmAttEmpDayOffQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttEmpDayOff")) + return oHrmSecondFacade.getHrmAttEmpDayoffDetailInfo((HrmAttEmpDayOffQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttEmpDayoffData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttEmpDayOffHdrBean oHrmAttEmpDayOffHdrBean = (HrmAttEmpDayOffHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffHdrBean.getEmployeeNo())) + arylstEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butSave"); + arylstDisableList.add("butEmpNo"); + arylstDisableList.add("butPrdStDt"); + arylstDisableList.add("butPrdEndDt"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisableList.add("butPrdStDt"); + arylstDisableList.add("butPrdEndDt"); + if (EnrgiseUtil.checkString(oHrmAttEmpDayOffHdrBean.getEmployeeNo())) + arylstEnableList.add("butAddRow"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java new file mode 100644 index 0000000..350bf89 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpInBD.java @@ -0,0 +1,139 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseDetailInfo; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; + +public class HrmAttEmpInBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, HrmAttEmpAttInQVO objHrmAttEmpAttInQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public BaseDetailVO getDetailRecord(String sFormName, String sScreenName, String sPrimaryKey, long lPageRequested, DetailSizeValues oDetailSizeValues, BaseDetailVO oBaseDetailVO, UserSession oUser, BaseDetailInfo oBaseDetailInfo, boolean bForce) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + if (oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 10 || oThisPageVO.getActionName() == 21 || oThisPageVO.getActionName() == 13) { + HrmAttEmpAttInHdrBean hrmAttEmpAttInHdrBean = (HrmAttEmpAttInHdrBean)oThisPageVO.getOHeaderBean(); + hrmAttEmpAttInHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + hrmAttEmpAttInHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + hrmAttEmpAttInHdrBean.setFirstName(oName[0]); + hrmAttEmpAttInHdrBean.setMiddleName(oName[1]); + hrmAttEmpAttInHdrBean.setLastName(oName[2]); + } + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean1 = (HrmAttEmpAttInHdrBean)oThisPageVO.getOHeaderBean(); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean = oHrmSecondFacade.getOnLoadSysDtTime(oHrmAttEmpAttInHdrBean1); + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmAttEmpAttInHdrBean); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmAttHdrMetaInfo((HrmAttEmpAttInQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmAttHeaderInfo((HrmAttEmpAttInQVO)oQueryVO, lStartPosition, lLastPosition); + System.out.println(oHeaderList.size()); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttEmpIn((HrmAttEmpAttInHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmAttEmpAttInHdrBean oHrmAttEmpAttInHdrBean = (HrmAttEmpAttInHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oEnableList.add("butSave"); + if (!oHrmAttEmpAttInHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmAttEmpAttInHdrBean.getAttndStatus())) { + String sAttStatus = oHrmAttEmpAttInHdrBean.getAttndStatus(); + if (String.valueOf(sAttStatus).equalsIgnoreCase("L")) { + oEnableList.add("reasons"); + } else if (String.valueOf(sAttStatus).equalsIgnoreCase("T")) { + oDisableList.add("reasons"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java new file mode 100644 index 0000000..4658646 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmpShiftBD.java @@ -0,0 +1,118 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttEmpShiftHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; + +public class HrmAttEmpShiftBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttEmpShiftDtlMetaInfo((HrmAttEmpShiftQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttEmpShift")) + return oHrmSecondFacade.getHrmAttEmpShiftDtlInfo((HrmAttEmpShiftQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveEmpShift(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttEmpShiftHdrBean oHrmAttEmpShiftHdrBean = (HrmAttEmpShiftHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttEmpShiftHdrBean.getEmployeeNo())) + arylstEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butGetDetail"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttEmpShiftHdrBean.getEmployeeNo())) { + arylstEnableList.add("butAddRow"); + arylstEnableList.add("butDelRow"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butSave"); + arylstDisableList.add("butDelete"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java new file mode 100644 index 0000000..534f0b8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttEmployeeShiftRosterBD.java @@ -0,0 +1,110 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; + +public class HrmAttEmployeeShiftRosterBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oEmpShiftRosterFacade = oHome.create(); + return oEmpShiftRosterFacade.getAttEmpshiftRosterDetailMetaInfo((HrmAttEmpShiftRosterQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + System.out.println(oRe.getMessage()); + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + System.out.println(oCrt.getMessage()); + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttEmpShiftRoster")) + return oHrmSecondFacade.getAttEmpshiftRosterDetail((HrmAttEmpShiftRosterQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return new RecordMetaInfo(); + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butExecute"); + oDisableList.add("butDelete"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butSave"); + oDisableList.add("butInsert"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oEnableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butWorkGrpCode"); + oDisableList.add("butEmpNo"); + oDisableList.add("butSiteId"); + oDisableList.add("butperiodStartDate"); + oDisableList.add("butperiodEndDate"); + oEnableList.add("butQuery"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java new file mode 100644 index 0000000..daec8ad --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftMstBD.java @@ -0,0 +1,124 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; + +public class HrmAttShiftMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftAttMstFacade = oHome.create(); + return oShiftAttMstFacade.saveAttShiftMstData((HrmAttShiftMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftAttMstFacade = oHome.create(); + return oShiftAttMstFacade.getAttShiftMstHeaderMetaInfo((HrmAttShiftMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftAttMstFacade = oHome.create(); + ArrayList oHeaderList = oShiftAttMstFacade.getAttShiftMstHeader((HrmAttShiftMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("Q")) { + oEnableList.add("butShiftCode"); + oDisableList.add("shiftCode"); + oDisableList.add("startTime"); + oDisableList.add("endTime"); + oDisableList.add("relaxationTime"); + oDisableList.add("startTolerenceTime"); + oDisableList.add("endTolerenceTime"); + oDisableList.add("overlapTime"); + oDisableList.add("txtDayOverlapFlag"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butRefresh"); + oEnableList.add("butSave"); + oDisableList.add("butShiftCode"); + oDisableList.add("startTime"); + oDisableList.add("endTime"); + oDisableList.add("shiftCode"); + oEnableList.add("relaxationTime"); + oEnableList.add("startTolerenceTime"); + oEnableList.add("endTolerenceTime"); + oEnableList.add("overlapTime"); + oEnableList.add("txtDayOverlapFlag"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + oDisableList.add("butShiftCode"); + oEnableList.add("shiftCode"); + oEnableList.add("startTime"); + oEnableList.add("endTime"); + oEnableList.add("relaxationTime"); + oEnableList.add("startTolTime"); + oEnableList.add("endTolTime"); + oEnableList.add("overlapTime"); + oEnableList.add("overlapDayFlag"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java new file mode 100644 index 0000000..8f70cbe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttShiftRosterGenBD.java @@ -0,0 +1,81 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmAttShiftRosterGenBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + arylstDisableList.add("butExecute"); + HrmAttShiftRosterGenHdrBean oHrmAttShiftRosterGenHdrBean = (HrmAttShiftRosterGenHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHrmAttShiftRosterGenHdrBean.getSite())) { + arylstEnableList.add("butWrkGrpCode"); + arylstDisableList.add("butSiteCode"); + } else { + arylstEnableList.add("butSiteCode"); + arylstDisableList.add("butWrkGrpCode"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oShiftRosterGenFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butGenerate")) + sHeaderPrimaryKey = oShiftRosterGenFacade.saveShiftRosterGenData((HrmAttShiftRosterGenHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java new file mode 100644 index 0000000..a911432 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupDayOffBD.java @@ -0,0 +1,115 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttWorkGroupDayOffHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; + +public class HrmAttWorkGroupDayOffBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttWorkGroupDayOffDtlMetaInfo((HrmAttWorkGroupDayOffQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupDayOff")) + return oHrmSecondFacade.getHrmAttWorkGroupDayOffDetailInfo((HrmAttWorkGroupDayOffQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmAttWorkGroupDayOffData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttWorkGroupDayOffHdrBean oHrmAttWorkGroupDayOffHdrBean = (HrmAttWorkGroupDayOffHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getSiteCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getWorkGroupCode())) + arylstEnableList.add("butGetDetail"); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getSiteCode())) { + arylstEnableList.add("butWrkGrpCode"); + arylstDisableList.add("butSiteCode"); + } else { + arylstDisableList.add("butWrkGrpCode"); + } + if (oThisPageVO.getScreenMode().equals("N")) + if (EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getSiteCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupDayOffHdrBean.getWorkGroupCode())) + arylstEnableList.add("butAddRow"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + arylstEnableList.add("butSave"); + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java new file mode 100644 index 0000000..a4602e0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmAttWorkGroupShiftBD.java @@ -0,0 +1,131 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmAttWorkGroupShiftHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; + +public class HrmAttWorkGroupShiftBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmAttWGShiftDtlMetaInfo((HrmAttWorkGroupShiftQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmAttWorkGroupShift")) + return oHrmSecondFacade.getHrmAttWGShiftDtlInfo((HrmAttWorkGroupShiftQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveWGS(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmAttWorkGroupShiftHdrBean oHrmAttWorkGroupShiftHdrBean = (HrmAttWorkGroupShiftHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getWorkGroupCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode())) + arylstEnableList.add("butGetDetail"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode())) { + arylstEnableList.add("butWrkGrpCode"); + arylstDisableList.add("butSiteCode"); + } else { + arylstDisableList.add("butWrkGrpCode"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + arylstDisableList.add("butExecute"); + arylstDisableList.add("butGetDetail"); + arylstDisableList.add("butDelete"); + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode()) && EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getWorkGroupCode())) { + arylstEnableList.add("butAddRow"); + arylstEnableList.add("butDelRow"); + } + if (EnrgiseUtil.checkString(oHrmAttWorkGroupShiftHdrBean.getSiteCode())) { + arylstEnableList.add("butWrkGrpCode"); + arylstEnableList.add("butSiteCode"); + } else { + arylstDisableList.add("butWrkGrpCode"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstEnableList.add("butSave"); + arylstDisableList.add("butDelete"); + arylstEnableList.add("butQuery"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmBaseBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmBaseBD.java new file mode 100644 index 0000000..d1b350f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmBaseBD.java @@ -0,0 +1,5 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import wenrgise.common.businessdelegate.BaseBD; + +public abstract class HrmBaseBD extends BaseBD {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java new file mode 100644 index 0000000..6b21e78 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmClaimMstBD.java @@ -0,0 +1,128 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmClaimMstQVO; + +public class HrmClaimMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClaimMstHdrMetaInfo((HrmClaimMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmClaimMstHdrInfo((HrmClaimMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClaimMstDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClaimMstDtlInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmClaimMstHdrBean oHrmClaimMstHdrBean = (HrmClaimMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmClaimMstHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butClaimCode"); + oDisableList.add("claimCode"); + oDisableList.add("claimName"); + oDisableList.add("docReqFlag"); + oDisableList.add("butCalendarCode"); + oDisableList.add("payrollFlag"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butClaimCode"); + oEnableList.add("claimCode"); + oEnableList.add("claimName"); + oEnableList.add("docReqFlag"); + oEnableList.add("butCalendarCode"); + oEnableList.add("payrollFlag"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butClaimCode"); + oEnableList.add("claimCode"); + oEnableList.add("claimName"); + oEnableList.add("docReqFlag"); + oEnableList.add("butCalendarCode"); + oEnableList.add("payrollFlag"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmFacade.saveHrmClaimMst((HrmClaimMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java new file mode 100644 index 0000000..e6e5001 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpAdvAppBD.java @@ -0,0 +1,184 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; + +public class HrmEmpAdvAppBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpAdvAppHdrMetaInfo((HrmEmpAdvAppQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpAdvAppHeaderInfo((HrmEmpAdvAppQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmEmpAdvAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butBulkSettlement")) + sHeaderPrimaryKey = oHrmFacade.advAppBulkSettlePayment((HrmEmpAdvAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmEmpAdvAppHdrBean oHrmEmpAdvAppHdrBean = (HrmEmpAdvAppHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmEmpAdvAppHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getEmployeeId())) { + oEnableList.add("butAdvanceCode"); + } else { + oDisableList.add("butAdvanceCode"); + } + oEnableList.add("butFromDate"); + oEnableList.add("butToDate"); + oDisableList.add("butDateApplied"); + oDisableList.add("amountApplied"); + oDisableList.add("sanctionedAmount"); + oDisableList.add("butSanctionDate"); + oDisableList.add("reason"); + oDisableList.add("butApproverNo"); + oDisableList.add("remarks"); + oDisableList.add("payrollMonth"); + oDisableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butEmployeeNo"); + oDisableList.add("butAdvanceCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oEnableList.add("butDateApplied"); + oEnableList.add("amountApplied"); + oEnableList.add("sanctionedAmount"); + oEnableList.add("butSanctionDate"); + oEnableList.add("reason"); + oEnableList.add("butApproverNo"); + oEnableList.add("remarks"); + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getPaidInstallments())) { + if (Integer.parseInt(oHrmEmpAdvAppHdrBean.getPaidInstallments()) > 0) { + oDisableList.add("payrollMonth"); + } else { + oEnableList.add("payrollMonth"); + } + } else { + oEnableList.add("payrollMonth"); + } + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getBalance())) + if (Float.parseFloat(oHrmEmpAdvAppHdrBean.getBalance()) == false) { + oDisableList.add("bulkSettleAmount"); + oDisableList.add("butBulkSettlement"); + oHrmEmpAdvAppHdrBean.setMode("M"); + } + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getMode())) { + if (oHrmEmpAdvAppHdrBean.getMode().equalsIgnoreCase("B")) { + oDisableList.add("butBulkSettlement"); + oEnableList.add("bulkSettleAmount"); + } else if (oHrmEmpAdvAppHdrBean.getMode().equalsIgnoreCase("M")) { + oDisableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } else { + oEnableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } + } else { + oEnableList.add("butBulkSettlement"); + oDisableList.add("bulkSettleAmount"); + } + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("bulkSettleAmount"); + oDisableList.add("butBulkSettlement"); + oEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmEmpAdvAppHdrBean.getEmployeeId())) { + oEnableList.add("butAdvanceCode"); + } else { + oDisableList.add("butAdvanceCode"); + } + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oEnableList.add("butDateApplied"); + oEnableList.add("amountApplied"); + oEnableList.add("sanctionedAmount"); + oEnableList.add("butSanctionDate"); + oEnableList.add("reason"); + oEnableList.add("butApproverNo"); + oEnableList.add("remarks"); + oEnableList.add("payrollMonth"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java new file mode 100644 index 0000000..9ee4938 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpClaimBD.java @@ -0,0 +1,153 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.lang.reflect.InvocationTargetException; +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import org.apache.commons.beanutils.BeanUtils; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpClaimDtlBean; +import wenrgise.hrms.bean.HrmEmpClaimHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpClaimQVO; + +public class HrmEmpClaimBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oInfo = new RecordMetaInfo(); + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + oInfo.setRecordCount(1L); + oInfo.setOWhenPicked(null); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + ArrayList oHeaderList = null; + HrmEmpClaimQVO oVo = (HrmEmpClaimQVO)oQueryVO; + HrmEmpClaimHdrBean oBean = new HrmEmpClaimHdrBean(); + BeanUtils.copyProperties(oBean, oVo); + oHeaderList.add(oBean); + return oHeaderList; + } catch (InvocationTargetException oEx) { + throw new EnrgiseSystemException(oEx); + } catch (IllegalAccessException oEx) { + throw new EnrgiseSystemException(oEx); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpClaimDetailMetaInfo((HrmEmpClaimQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpClaimDetailInfo((HrmEmpClaimQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmEmpClaim(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmEmpClaimHdrBean oHrmEmpClaimHdrBean = (HrmEmpClaimHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oList = oThisPageVO.getODetailList(); + arylstEnab.add("butSave"); + arylstEnab.add("butQuery"); + arylstDisab.add("butExecute"); + arylstDisab.add("butDelete"); + arylstDisab.add("butInsert"); + arylstDisab.add("butDelRow"); + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("butGetDetail"); + arylstDisab.add("butStartDate"); + arylstDisab.add("butEndDate"); + arylstDisab.add("butClaimNo"); + arylstDisab.add("butEmpNo"); + arylstDisab.add("butClaimCode"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + if (EnrgiseUtil.checkString(oHrmEmpClaimHdrBean.getPeriod())) { + arylstEnab.add("butGetDetail"); + } else { + arylstDisab.add("butGetDetail"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + ArrayList oList = oThisPageVO.getODetailList(); + if (oList != null) { + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + HrmEmpClaimDtlBean oHrmEmpClaimDtlBean = oIt.next(); + oHrmEmpClaimDtlBean.setTxtRemarks(oHrmEmpClaimDtlBean.getTxtNewRemarks()); + } + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java new file mode 100644 index 0000000..7ec4a4d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDepDtlBD.java @@ -0,0 +1,103 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; + +public class HrmEmpDepDtlBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDepDtlHdrMetaInfo((HrmEmpDepDtlQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpDepDtlHdrInfo((HrmEmpDepDtlQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDepDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDepDtlInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmEmpDepDtl((HrmEmpDepHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstDisab.add("butDelete"); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java new file mode 100644 index 0000000..62c2255 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpDiscActionBD.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; + +public class HrmEmpDiscActionBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDiscActionHdrMetaInfo((HrmEmpDiscActionQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpDiscActionHdrInfo((HrmEmpDiscActionQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDiscActionMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpDiscActionInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmEmpDiscAction((HrmEmpDiscActionHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisabledFields = new ArrayList(); + arylstDisabledFields.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("U")) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmEmpDiscAction")) + arylstDisabledFields.add("butEmpNo"); + oHashMap.put("D", arylstDisabledFields); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java new file mode 100644 index 0000000..3e439a9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmEmpPersBD.java @@ -0,0 +1,422 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmEmpPersDtlsBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmEmpPersQVO; + +public class HrmEmpPersBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmEmpPersHdrMetaInfo((HrmEmpPersQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmEmpPersHdrInfo((HrmEmpPersQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oSecHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) + return oHrmFacade.getHrmEmpPersDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) + return oHrmFacade.getHrmEmpPersAddDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) + return oHrmFacade.getHrmEmpPersJoinInfMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) + return oHrmFacade.getHrmEmpPersEduDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) + return oHrmFacade.getHrmEmpPersPriorExpMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) + return oHrmFacade.getHrmEmpPersPFDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEmpHst")) + return oHrmFacade.getHrmEmpPersEmpHistMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersTrngDtls")) + return oHrmFacade.getHrmEmpPersTrngDtlsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAward")) + return oHrmFacade.getHrmEmpPersAwardMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersIns")) + return oHrmFacade.getHrmEmpPersInsMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersHealth")) + return oHrmFacade.getHrmEmpPersHealthMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersLng")) + return oHrmFacade.getHrmEmpPersLngMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) + return oHrmFacade.getHrmEmpPersRefMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAsset")) + return oHrmSecondFacade.getHrmEmpPersAssetMetaInfo(lPrimaryKey); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oSecHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) + return oHrmFacade.getHrmEmpPersDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) + return oHrmFacade.getHrmPersAddDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) + return oHrmFacade.getHrmEmpPersJoinInfInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) + return oHrmFacade.getHrmEmpPersEduDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) + return oHrmFacade.getHrmEmpPersPriorExpInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) + return oHrmFacade.getHrmEmpPersPFDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEmpHst")) + return oHrmFacade.getHrmEmpPersEmpHistInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersTrngDtls")) + return oHrmFacade.getHrmEmpPersTrngDtlsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAward")) + return oHrmFacade.getHrmEmpPersAwardInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersIns")) + return oHrmFacade.getHrmEmpPersInsInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersHealth")) + return oHrmFacade.getHrmEmpPersHealthInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersLng")) + return oHrmFacade.getHrmEmpPersLngInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) + return oHrmFacade.getHrmEmpPersRefInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAsset")) + return oHrmSecondFacade.getHrmEmpPersAssetInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + oWhenPicked = oDetailPicked; + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oSecHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmpPersDtls")) + return oHrmFacade.saveHrmEmpPersDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAddDtls")) + return oHrmFacade.saveHrmEmpPersAddDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersJoinInf")) + return oHrmFacade.saveHrmEmpPersJoinInf((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEmpHst")) + return oHrmFacade.saveHrmEmpPersEmpHist((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPFDtls")) + return oHrmFacade.saveHrmEmpPersPFDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersEduDtls")) + return oHrmFacade.saveHrmEmpPersEduDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersPriorExp")) + return oHrmFacade.saveHrmEmpPersPriorExp((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersTrngDtls")) + return oHrmFacade.saveHrmEmpPersTrngDtls((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAward")) + return oHrmFacade.saveHrmEmpPersAward((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersIns")) + return oHrmFacade.saveHrmEmpPersIns((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersHealth")) + return oHrmFacade.saveHrmEmpPersHealth((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersLng")) + return oHrmFacade.saveHrmEmpPersLng((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersRef")) + return oHrmFacade.saveHrmEmpPersRef((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmEmpPersAsset")) + return oHrmSecondFacade.saveHrmEmpPersAsset((HrmEmpPersHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmEmpPersHdrBean oHrmEmpPersHdrBean = (HrmEmpPersHdrBean)oThisPageVO.getOHeaderBean(); + arylstDisab.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("Q")) + if (oThisPageVO.getScreenName().equals("HrmEmpPersDtls")) { + arylstDisab.add("sex"); + arylstDisab.add("guardianName"); + arylstDisab.add("mobile"); + arylstDisab.add("personalEmail"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("idMark"); + arylstDisab.add("dependants"); + arylstDisab.add("panNumber"); + arylstDisab.add("pfNumber"); + arylstDisab.add("girNumber"); + arylstDisab.add("passportNo"); + arylstDisab.add("drivingLicenseNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("validUpto"); + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + arylstDisab.add("relatedToEmployee"); + arylstDisab.add("flat"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("butNationality"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("butLocJoiningDate"); + arylstDisab.add("butLocation"); + arylstDisab.add("butDepartment"); + arylstDisab.add("butDesignation"); + arylstDisab.add("butReligion"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butReportingEmployee"); + arylstDisab.add("butLastPromotionDate"); + arylstDisab.add("butRsvCtg"); + arylstDisab.add("butPassportIssueDate"); + arylstDisab.add("butPassportExpDate"); + arylstDisab.add("butValidUpto"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("butRelatedEmployee"); + arylstDisab.add("butGrade"); + arylstDisab.add("butDraftSave"); + arylstDisab.add("butAnniversaryDate"); + arylstDisab.add("motherName"); + arylstDisab.add("tabAddDtls"); + arylstDisab.add("tabJoiningInfo"); + arylstDisab.add("tabEmpHist"); + arylstDisab.add("tabPriorExp"); + arylstDisab.add("tabEduDtls"); + arylstDisab.add("tabPFDtls"); + arylstDisab.add("tabTrngDtls"); + arylstDisab.add("tabAwardDtls"); + arylstDisab.add("tabInsDtls"); + arylstDisab.add("tabHealth"); + arylstDisab.add("tabLng"); + arylstDisab.add("tabRef"); + } + if (oThisPageVO.getScreenMode().equals("N")) + if (oThisPageVO.getScreenName().equals("HrmEmpPersDtls")) { + arylstDisab.add("sex"); + arylstDisab.add("guardianName"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("mobile"); + arylstDisab.add("personalEmail"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("idMark"); + arylstDisab.add("dependants"); + arylstDisab.add("panNumber"); + arylstDisab.add("pfNumber"); + arylstDisab.add("girNumber"); + arylstDisab.add("passportNo"); + arylstDisab.add("drivingLicenseNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("validUpto"); + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + arylstDisab.add("relatedToEmployee"); + arylstDisab.add("flat"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("butNationality"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("butLocJoiningDate"); + arylstDisab.add("butLocation"); + arylstDisab.add("butDepartment"); + arylstDisab.add("butDesignation"); + arylstDisab.add("butGrade"); + arylstDisab.add("butReligion"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butReportingEmployee"); + arylstDisab.add("butLastPromotionDate"); + arylstDisab.add("butRsvCtg"); + arylstDisab.add("butPassportIssueDate"); + arylstDisab.add("butPassportExpDate"); + arylstDisab.add("butValidUpto"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("butRelatedEmployee"); + arylstDisab.add("butDraftSave"); + arylstDisab.add("butAnniversaryDate"); + arylstDisab.add("motherName"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + if (oThisPageVO.getScreenName().equals("HrmEmpPersAddDtls")) { + arylstDisab.add("butJumpDetail"); + arylstDisab.add("newPageRequested"); + arylstDisab.add("butNextDetail"); + arylstDisab.add("butPrevDetail"); + } + if (oThisPageVO.getScreenName().equals("HrmEmpPersDtls")) + if (oThisPageVO.getODetailList() != null) { + HrmEmpPersDtlsBean oHrmEmpPersDtlsBean = oThisPageVO.getODetailList().get(0); + arylstEnab.add("sex"); + arylstEnab.add("guardianName"); + arylstEnab.add("mobile"); + arylstEnab.add("personalEmail"); + arylstEnab.add("placeOfBirth"); + arylstEnab.add("bloodGroup"); + arylstEnab.add("idMark"); + arylstEnab.add("dependants"); + arylstEnab.add("panNumber"); + arylstEnab.add("pfNumber"); + arylstEnab.add("girNumber"); + arylstEnab.add("passportNo"); + arylstEnab.add("drivingLicenseNo"); + arylstEnab.add("placeOfIssue"); + arylstEnab.add("validUpto"); + arylstEnab.add("flat"); + arylstEnab.add("tabAddDtls"); + arylstEnab.add("tabJoiningInfo"); + arylstEnab.add("tabEmpHist"); + arylstEnab.add("tabPriorExp"); + arylstEnab.add("tabEduDtls"); + arylstEnab.add("tabPFDtls"); + arylstEnab.add("tabTrngDtls"); + arylstDisab.add("tabAwardDtls"); + arylstDisab.add("tabInsDtls"); + arylstDisab.add("tabHealth"); + arylstDisab.add("tabLng"); + arylstEnab.add("tabRef"); + if (EnrgiseUtil.checkString(oHrmEmpPersDtlsBean.getMaritalStatus())) { + if (oHrmEmpPersDtlsBean.getMaritalCode().equalsIgnoreCase("M")) { + arylstEnab.add("spouseName"); + arylstEnab.add("spouseOccupation"); + } else { + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + } + } else { + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + } + arylstEnab.add("relatedToEmployee"); + arylstEnab.add("handicappedFlag"); + arylstEnab.add("butNationality"); + arylstEnab.add("butGrade"); + arylstEnab.add("butDateOfBirth"); + arylstEnab.add("butLocJoiningDate"); + arylstEnab.add("butLocation"); + arylstEnab.add("butDepartment"); + arylstEnab.add("butDesignation"); + arylstEnab.add("butReligion"); + arylstEnab.add("butMotherTongue"); + arylstEnab.add("butReportingEmployee"); + arylstEnab.add("butLastPromotionDate"); + arylstEnab.add("butRsvCtg"); + arylstEnab.add("butPassportIssueDate"); + arylstEnab.add("butPassportExpDate"); + arylstEnab.add("butValidUpto"); + arylstEnab.add("butMaritalStatus"); + arylstEnab.add("butRelatedEmployee"); + arylstEnab.add("butAnniversaryDate"); + } else { + arylstDisab.add("sex"); + arylstDisab.add("guardianName"); + arylstDisab.add("mobile"); + arylstDisab.add("personalEmail"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("idMark"); + arylstDisab.add("dependants"); + arylstDisab.add("panNumber"); + arylstDisab.add("pfNumber"); + arylstDisab.add("girNumber"); + arylstDisab.add("passportNo"); + arylstDisab.add("drivingLicenseNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("validUpto"); + arylstDisab.add("spouseName"); + arylstDisab.add("spouseOccupation"); + arylstDisab.add("relatedToEmployee"); + arylstDisab.add("flat"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("butNationality"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("butLocJoiningDate"); + arylstDisab.add("butLocation"); + arylstDisab.add("butDepartment"); + arylstDisab.add("butDesignation"); + arylstDisab.add("butGrade"); + arylstDisab.add("butReligion"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butReportingEmployee"); + arylstDisab.add("butLastPromotionDate"); + arylstDisab.add("butRsvCtg"); + arylstDisab.add("butPassportIssueDate"); + arylstDisab.add("butPassportExpDate"); + arylstDisab.add("butValidUpto"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("butRelatedEmployee"); + arylstDisab.add("butAnniversaryDate"); + arylstDisab.add("tabAddDtls"); + arylstDisab.add("tabJoiningInfo"); + arylstDisab.add("tabEmpHist"); + arylstDisab.add("tabPriorExp"); + arylstDisab.add("tabEduDtls"); + arylstDisab.add("tabPFDtls"); + arylstDisab.add("tabTrngDtls"); + arylstDisab.add("tabAwardDtls"); + arylstDisab.add("tabInsDtls"); + arylstDisab.add("tabHealth"); + arylstDisab.add("tabLng"); + arylstDisab.add("tabRef"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java new file mode 100644 index 0000000..3392267 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleBD.java @@ -0,0 +1,126 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmGenEligRuleBD extends HrmBaseBD { + ArrayList arylstHdr; + + public HashMap getEligClassInfo() throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getEligClassInfo(); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + String s = oHrmSecondFacade.saveData((HrmGenEligRuleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return s; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecInfo = new RecordMetaInfo(); + oRecInfo.setRecordCount(1L); + oRecInfo.setOWhenPicked(null); + return oRecInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList arylstDummy = new ArrayList(); + arylstDummy.add(new HrmOrgCntryMstHdrBean()); + return arylstDummy; + } + + public static void main(String[] ss) throws EnrgiseSystemException, EnrgiseApplicationException { + wenrgise.hrms.businessdelegate.HrmGenEligRuleBD o = new wenrgise.hrms.businessdelegate.HrmGenEligRuleBD(); + System.out.println(o.getEligClassInfo()); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstDisab.add("butPrevHeader"); + arylstDisab.add("butNextHeader"); + HrmGenEligRuleHdrBean oHdrBean = (HrmGenEligRuleHdrBean)oThisPageVO.getOHeaderBean(); + if (oHdrBean.getDocumentType().equals("")) { + arylstDisab.add("butDocumentCode"); + oHdrBean.setDocumentCode(""); + oHdrBean.setHidDocumentCodeId(""); + } else { + arylstEnab.add("butDocumentCode"); + } + if (oHdrBean.getHidAction().equals("Refresh")) { + arylstEnab.add("operator"); + arylstEnab.add("butValues"); + arylstEnab.add("documentType"); + arylstEnab.add("butDocumentCode"); + arylstEnab.add("butAnd"); + arylstEnab.add("butOr"); + arylstEnab.add("butShowFormula"); + } + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHdrBean); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + HrmGenEligRuleHdrBean oHdrBean = (HrmGenEligRuleHdrBean)oThisPageVO.getOHeaderBean(); + if (oHdrBean.getHidAction().equals("Refresh")) { + oHdrBean.setDocumentCode(""); + oHdrBean.setHidDocumentCodeId(""); + oHdrBean.setDocumentType(""); + oHdrBean.setFormula(""); + oHdrBean.setEligSql(""); + oHdrBean.setHidAction(""); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java new file mode 100644 index 0000000..f1ab1f2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenEligRuleQueryBD.java @@ -0,0 +1,123 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; + +public class HrmGenEligRuleQueryBD extends HrmBaseBD { + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmGenEligRuleQuery((HrmGenEligRuleQueryHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(HrmGenEligRuleQueryQVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmGenEligRuleQueryDetail((HrmGenEligRuleQueryQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String sHeaderPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String headerPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmGenEligRuleQueryDetailMetaInfo((HrmGenEligRuleQueryQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getHeaderMetaImpl(HrmGenEligRuleQueryQVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(HrmGenEligRuleQueryQVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstEnab.add("butQuery"); + arylstDisab.add("butInsert"); + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("docType"); + arylstEnab.add("butSave"); + } else { + arylstEnab.add("docType"); + } + HrmGenEligRuleQueryHdrBean oHdrBean = (HrmGenEligRuleQueryHdrBean)oThisPageVO.getOHeaderBean(); + if (EnrgiseUtil.checkString(oHdrBean.getDocType())) { + arylstEnab.add("butGetDetail"); + } else { + arylstDisab.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equals("Q")); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java new file mode 100644 index 0000000..d7e285f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmGenGenerateFormulaBD.java @@ -0,0 +1,74 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmGenGenerateFormulaBD extends HrmBaseBD { + public ArrayList getParameterInfo() throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return new ArrayList(); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmGenEligRuleHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnAppBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnAppBD.java new file mode 100644 index 0000000..5ba12ae --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnAppBD.java @@ -0,0 +1,348 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLnAppQVO; + +public class HrmLnAppBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanAppHdrMetaInfo((HrmLnAppQVO)oQueryVO, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmLoanAppHdrInfo((HrmLnAppQVO)oQueryVO, lStartPosition, lLastPosition, this.oUserInfo); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + return oHrmFacade.getHrmLnDisDtlMetaInfo(lPrimaryKey, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnDisDtl")) + return oHrmFacade.getHrmLnDisDtlMetaInfo(lPrimaryKey, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + return oHrmFacade.getHrmLnHblIntRateMetaInfo(lPrimaryKey, this.oUserInfo); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + return oHrmFacade.getHrmLnDisDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnDisDtl")) + return oHrmFacade.getHrmLnDisDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + return oHrmFacade.getHrmLnHblIntRateDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLnApp")) + return oHrmFacade.saveHrmLnDisDtl((HrmLnAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmLnAppHblIntRate")) + return oHrmFacade.saveHrmLnHblIntRateDtl((HrmLnAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + ArrayList test = new ArrayList(); + HrmLnAppHdrBean oHrmLnAppHdrBean = (HrmLnAppHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getEmpId())) { + arylstEnableList.add("butLoanCode"); + } else { + arylstDisableList.add("butLoanCode"); + } + arylstDisableList.add("butApproverNo"); + arylstDisableList.add("remarks"); + arylstDisableList.add("instAmount"); + arylstDisableList.add("totalInterestInst"); + arylstDisableList.add("totalPrincipalInst"); + arylstDisableList.add("totalInst"); + arylstDisableList.add("payrollMonth"); + arylstDisableList.add("appliedAmount"); + arylstDisableList.add("loanDetails"); + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + arylstDisableList.add("sanctionedAmount"); + arylstDisableList.add("butApplnDate"); + arylstDisableList.add("butSanctionDate"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPayment"); + arylstDisableList.add("butBulkPaymentDate"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstEnableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getEmpId())) { + arylstEnableList.add("butLoanCode"); + } else { + arylstDisableList.add("butLoanCode"); + } + arylstEnableList.add("butApproverNo"); + arylstEnableList.add("sanctionedAmount"); + arylstEnableList.add("remarks"); + arylstEnableList.add("instAmount"); + arylstEnableList.add("totalInterestInst"); + arylstEnableList.add("totalPrincipalInst"); + arylstEnableList.add("totalInst"); + arylstEnableList.add("payrollMonth"); + arylstEnableList.add("appliedAmount"); + arylstEnableList.add("loanDetails"); + arylstEnableList.add("butApplnDate"); + arylstEnableList.add("butSanctionDate"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPayment"); + arylstDisableList.add("butBulkPaymentDate"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getLoanCode())) { + if (oHrmLnAppHdrBean.getLoanCode().equalsIgnoreCase("99")) { + arylstEnableList.add("hblAppliedFor"); + arylstEnableList.add("hblBranhConst"); + arylstEnableList.add("hblDocSubmitted"); + arylstEnableList.add("hblCity"); + arylstEnableList.add("hblPO"); + arylstEnableList.add("hblDistrict"); + arylstEnableList.add("hblMouza"); + arylstEnableList.add("hblKhatian"); + arylstEnableList.add("hblDag"); + arylstEnableList.add("hblNoOfDeed"); + arylstEnableList.add("hblParentDeed"); + arylstEnableList.add("hblVolOfDeed"); + arylstEnableList.add("hblBookNo"); + arylstEnableList.add("hblPageNo"); + arylstEnableList.add("hblRegisteredAt"); + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + } + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + } + } + if (oThisPageVO.getScreenMode().equals("U")) { + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getFullyRepaid())) + if (String.valueOf(oHrmLnAppHdrBean.getFullyRepaid()).equalsIgnoreCase("on")) { + arylstDisableList.add("butBulkPayment"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPaymentDate"); + } else if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getMode())) { + if (oHrmLnAppHdrBean.getMode().equalsIgnoreCase("B")) { + arylstDisableList.add("butBulkPayment"); + arylstEnableList.add("bulkAmount"); + arylstEnableList.add("butBulkPaymentDate"); + } else { + arylstEnableList.add("butBulkPayment"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPaymentDate"); + } + } else { + arylstEnableList.add("butBulkPayment"); + arylstDisableList.add("bulkAmount"); + arylstDisableList.add("butBulkPaymentDate"); + } + arylstDisableList.add("butEmployeeNo"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getEmpId())) { + arylstEnableList.add("butLoanCode"); + } else { + arylstDisableList.add("butLoanCode"); + } + arylstEnableList.add("butApproverNo"); + arylstEnableList.add("remarks"); + arylstEnableList.add("instAmount"); + arylstEnableList.add("totalInterestInst"); + arylstEnableList.add("totalPrincipalInst"); + arylstEnableList.add("totalInst"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getNoOfInstPaid())) { + if (Integer.parseInt(oHrmLnAppHdrBean.getNoOfInstPaid()) > 0) { + arylstDisableList.add("payrollMonth"); + } else { + arylstEnableList.add("payrollMonth"); + } + } else { + arylstEnableList.add("payrollMonth"); + } + arylstEnableList.add("appliedAmount"); + arylstEnableList.add("loanDetails"); + arylstEnableList.add("butApplnDate"); + arylstEnableList.add("butSanctionDate"); + if (EnrgiseUtil.checkString(oHrmLnAppHdrBean.getLoanCode())) { + if (oHrmLnAppHdrBean.getLoanCode().equalsIgnoreCase("99")) { + arylstEnableList.add("hblAppliedFor"); + arylstEnableList.add("hblBranhConst"); + arylstEnableList.add("hblDocSubmitted"); + arylstEnableList.add("hblCity"); + arylstEnableList.add("hblPO"); + arylstEnableList.add("hblDistrict"); + arylstEnableList.add("hblMouza"); + arylstEnableList.add("hblKhatian"); + arylstEnableList.add("hblDag"); + arylstEnableList.add("hblNoOfDeed"); + arylstEnableList.add("hblParentDeed"); + arylstEnableList.add("hblVolOfDeed"); + arylstEnableList.add("hblBookNo"); + arylstEnableList.add("hblPageNo"); + arylstEnableList.add("hblRegisteredAt"); + arylstDisableList.add("disabtabHblIntRate"); + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + arylstEnableList.add("disabtabHblIntRate"); + } + } else { + arylstDisableList.add("hblAppliedFor"); + arylstDisableList.add("hblBranhConst"); + arylstDisableList.add("hblDocSubmitted"); + arylstDisableList.add("hblCity"); + arylstDisableList.add("hblPO"); + arylstDisableList.add("hblDistrict"); + arylstDisableList.add("hblMouza"); + arylstDisableList.add("hblKhatian"); + arylstDisableList.add("hblDag"); + arylstDisableList.add("hblNoOfDeed"); + arylstDisableList.add("hblParentDeed"); + arylstDisableList.add("hblVolOfDeed"); + arylstDisableList.add("hblBookNo"); + arylstDisableList.add("hblPageNo"); + arylstDisableList.add("hblRegisteredAt"); + arylstEnableList.add("disabtabHblIntRate"); + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butBulkPayment")) + sHeaderPrimaryKey = oHrmFacade.loanAppBulkPayment((HrmLnAppHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnChartBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnChartBD.java new file mode 100644 index 0000000..32dbeab --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnChartBD.java @@ -0,0 +1,98 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLnChartQVO; + +public class HrmLnChartBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanChartHdrMetaInfo((HrmLnChartQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmLoanChartHdrInfo((HrmLnChartQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanChartDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanChartDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmLoanChart((HrmLnChartHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnMstBD.java new file mode 100644 index 0000000..1f88b26 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLnMstBD.java @@ -0,0 +1,115 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmLnMstQVO; + +public class HrmLnMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanMstHeaderMetaInfo((HrmLnMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmLoanMstHeaderInfo((HrmLnMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanMstDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLoanMstDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmFacade.saveHrmLoanMst((HrmLnMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmLnMstHdrBean oHrmLnMstHdrBean = (HrmLnMstHdrBean)oBaseHeaderBean; + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("typeOfInterest"); + oDisableList.add("natureOfPayment"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butLoanCode"); + oDisableList.add("butChartName"); + oDisableList.add("loanCode"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java new file mode 100644 index 0000000..f9bdc85 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnBD.java @@ -0,0 +1,433 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvApplnDtlBean; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvApplnQVO; + +public class HrmLvApplnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveAppQueryScreenDtlMetaInfo((HrmLvApplnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpLeaveAppQueryScreenDtlInfo((HrmLvApplnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = null; + oDisableList.add("butDelete"); + oDisableList.add("butApply"); + if (oHrmLvApplnHdrBean != null) + if (oHrmLvApplnHdrBean.getDetailArray().size() != 0) { + oThisPageVO.setODetailList(oHrmLvApplnHdrBean.getDetailArray()); + oDetailList = oThisPageVO.getODetailList(); + } + if (oThisPageVO.getScreenMode().equals("N")) { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("medFlag"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + if (oHrmLvApplnHdrBean.getStatusOfLeaves() == null) { + oHrmLvApplnHdrBean.setStatusOfLeaves("N"); + oThisPageVO.setOHeaderBean((BaseHeaderBean)oHrmLvApplnHdrBean); + } + if (oDetailList != null) + if (oDetailList.size() != 0) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmLvApplnDtlBean oDtlBean = oIt.next(); + if (oDtlBean.getTxtHalfDayFlag().equals("1")) { + oDtlBean.setTxtHalfDayFlag("1"); + oDtlBean.setDisabtxtHalfDayFlag("true"); + } + if (oDtlBean.getTxtHalfDayFlag().equals("2")) + oDtlBean.setTxtHalfDayFlag("2"); + } + oHrmLvApplnHdrBean.setDays(getHolidayCount(oDetailList)); + oThisPageVO.setODetailList(oDetailList); + oHrmLvApplnHdrBean.setDetailArray(oDetailList); + } + oEnableList.add("butApply"); + oEnableList.add("butGetDetail"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + if (oThisPageVO.getScreenMode().equals("U")) + if (getNextLevelUserId(oHrmLvApplnHdrBean.getHeaderPrimaryKey()).equalsIgnoreCase(this.oUserInfo.getUserTypeId())) { + String s2 = oHrmLvApplnHdrBean.getHeaderPrimaryKey(); + String s = getNextLevelUserId(oHrmLvApplnHdrBean.getHeaderPrimaryKey()); + oEnableList.add("butApprove"); + oEnableList.add("butLedger"); + oEnableList.add("butReject"); + } else { + oEnableList.add("butGetDetail"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + if (oHrmLvApplnHdrBean != null) { + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getStatusOfLeaves())) + if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("N")) { + oDisableList.add("leaveCodes"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oEnableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oEnableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oEnableList.add("butToAppDate"); + oDisableList.add("days"); + oEnableList.add("address"); + oEnableList.add("phone"); + oEnableList.add("purpose"); + oEnableList.add("remarks"); + if (EnrgiseUtil.checkString(oHrmLvApplnHdrBean.getLeaveCodes())) { + if (oHrmLvApplnHdrBean.getLeaveCodes().equalsIgnoreCase("EL")) { + oEnableList.add("ltaFlag"); + oEnableList.add("optedFor"); + oEnableList.add("itPercentage"); + oEnableList.add("fromYear"); + oDisableList.add("medFlag"); + } else { + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oEnableList.add("medFlag"); + } + } else { + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("medFlag"); + } + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oEnableList.add("butGetDetail"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("A")) { + oDisableList.add("leaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("days"); + oDisableList.add("butSave"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("butFromAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("butGetDetail"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("medFlag"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oDisableList.add("butDelete"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("R")) { + oDisableList.add("leaveCodes"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("days"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("")) { + oDisableList.add("leaveCodes"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("days"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } else if (oHrmLvApplnHdrBean.getStatusOfLeaves().equalsIgnoreCase("P")) { + oDisableList.add("leaveCodes"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("description"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("fromAppDate"); + oDisableList.add("butFromAppDate"); + oDisableList.add("toAppDate"); + oDisableList.add("butToAppDate"); + oDisableList.add("days"); + oDisableList.add("address"); + oDisableList.add("phone"); + oDisableList.add("purpose"); + oDisableList.add("remarks"); + oDisableList.add("statusOfLeaves"); + if (oHrmLvApplnHdrBean.getWorkListId() == null) { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + } else { + oEnableList.add("butApprove"); + oEnableList.add("butLedger"); + oEnableList.add("butReject"); + oDisableList.add("ltaFlag"); + oDisableList.add("optedFor"); + oDisableList.add("fromYear"); + oDisableList.add("itPercentage"); + } + } + } else { + oDisableList.add("butApprove"); + oDisableList.add("butLedger"); + oDisableList.add("butReject"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmLvApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) { + ((HrmLvApplnHdrBean)oBaseHeaderBean).setButtonName("A"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveAppln((HrmLvApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + if (sButtonName.equalsIgnoreCase("butReject")) { + ((HrmLvApplnHdrBean)oBaseHeaderBean).setButtonName("R"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveAppln((HrmLvApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + if (oThisPageVO.getActionName() == 10) { + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvApplnHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvApplnHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvApplnHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvApplnHdrBean.setMiddleName(oName[1]); + oHrmLvApplnHdrBean.setLastName(oName[2]); + } else { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(" "); + } + oHrmLvApplnHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvApplnHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvApplnHdrBean.setDesignation(this.oUserInfo.getDesignation()); + oHrmLvApplnHdrBean.setSiteId(this.oUserInfo.getSiteId()); + } else if (oThisPageVO.getActionName() == 13) { + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvApplnHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvApplnHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvApplnHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvApplnHdrBean.setMiddleName(oName[1]); + oHrmLvApplnHdrBean.setLastName(oName[2]); + } else { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(" "); + } + oHrmLvApplnHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvApplnHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvApplnHdrBean.setDesignation(this.oUserInfo.getDesignation()); + oHrmLvApplnHdrBean.setSiteId(this.oUserInfo.getSiteId()); + } else if (oThisPageVO.getActionName() == 19) { + HrmLvApplnHdrBean oHrmLvApplnHdrBean = (HrmLvApplnHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvApplnHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvApplnHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvApplnHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvApplnHdrBean.setMiddleName(oName[1]); + oHrmLvApplnHdrBean.setLastName(oName[2]); + } else { + oHrmLvApplnHdrBean.setMiddleName(" "); + oHrmLvApplnHdrBean.setLastName(" "); + } + oHrmLvApplnHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvApplnHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvApplnHdrBean.setDesignation(this.oUserInfo.getDesignation()); + oHrmLvApplnHdrBean.setSiteId(this.oUserInfo.getSiteId()); + } + } + + private String getHolidayCount(ArrayList arylstDtl) { + double dHolidayCount = 0.0D; + if (arylstDtl != null) { + Iterator itrDtlList = arylstDtl.iterator(); + while (itrDtlList.hasNext()) { + HrmLvApplnDtlBean oDtlBean = itrDtlList.next(); + if (!oDtlBean.getTxtHolidayFlag().equalsIgnoreCase("H")) { + if (!oDtlBean.getTxtHalfDayFlag().equalsIgnoreCase("3")) { + dHolidayCount += 0.5D; + continue; + } + dHolidayCount++; + } + } + } + return Double.toString(dHolidayCount); + } + + public ArrayList getLeaveBreakup(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList arylstDtl = oHrmSecondFacade.getLeaveDates((HrmLvApplnHdrBean)oBaseHeaderBean); + return arylstDtl; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + private String getNextLevelUserId(String headerPrimaryKey) throws EnrgiseApplicationException, EnrgiseSystemException { + String NextLevelUserId = new String(); + String sQuery = String.valueOf(" select t.delegator_emp_id from workflow_tasklist t where t.status = 'P' and t.doc_dtl_id = ").concat(String.valueOf(headerPrimaryKey)); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + ArrayList oList = oBean.executeQuery(sQuery); + if (oList.size() != 0) { + QueryRow oRow = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + oRow = oIt.next(); + NextLevelUserId = oRow.get("delegator_emp_id").getString(); + } + } + return NextLevelUserId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java new file mode 100644 index 0000000..7c5a77f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvApplnQueryBD.java @@ -0,0 +1,141 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvApplnQueryHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; + +public class HrmLvApplnQueryBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveAppQueryDtlMetaInfo((HrmLvApplnQueryQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmLeaveAppQuery")) + return oHrmSecondFacade.getHrmEmpLeaveAppQueryDtlInfo((HrmLvApplnQueryQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "no Save"; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvApplnQueryHdrBean oHrmLvApplnQueryHdrBean = (HrmLvApplnQueryHdrBean)oThisPageVO.getOHeaderBean(); + if (!oHrmLvApplnQueryHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getEmployeeNo())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getEmployeeNo()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getLeaveCode())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getLeaveCode()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getFromDate())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getFromDate()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getToDate())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getToDate()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } else if (EnrgiseUtil.checkString(oHrmLvApplnQueryHdrBean.getStatusOfLeave())) { + if (!String.valueOf(oHrmLvApplnQueryHdrBean.getStatusOfLeave()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butLeaveCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oDisableList.add("statusOfLeave"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancBD.java new file mode 100644 index 0000000..cbd4604 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancBD.java @@ -0,0 +1,259 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvCancQVO; + +public class HrmLvCancBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveCanQueryScreenDtlMetaInfo((HrmLvCancQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpLeaveCanQueryScreenDtlInfo((HrmLvCancQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmLvCancHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public void onLoadAction(ThisPageVO oThisPageVO) { + if (oThisPageVO.getActionName() == 10) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 10) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 13) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 19) { + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvCancHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvCancHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvCancHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvCancHdrBean.setMiddleName(oName[1]); + oHrmLvCancHdrBean.setLastName(oName[2]); + } else { + oHrmLvCancHdrBean.setMiddleName(" "); + oHrmLvCancHdrBean.setLastName(" "); + } + oHrmLvCancHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvCancHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmLvCancHdrBean.setLocation(this.oUserInfo.getSiteName()); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvCancHdrBean oHrmLvCancHdrBean = (HrmLvCancHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oHrmLvCancHdrBean.getCancelStatus() == null) { + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } + if (oHrmLvCancHdrBean.getCancSide() != null) { + if (oHrmLvCancHdrBean.getCancSide().equals("L")) { + oHrmLvCancHdrBean.setFromCancelDate(oHrmLvCancHdrBean.getFromDate()); + oDisableList.add("butFromCancelDate"); + } + if (oHrmLvCancHdrBean.getCancSide().equals("R")) { + oHrmLvCancHdrBean.setToCancelDate(oHrmLvCancHdrBean.getToDate()); + oDisableList.add("butToCancelDate"); + } + if (oHrmLvCancHdrBean.getCancSide().equals("F")) { + oHrmLvCancHdrBean.setFromCancelDate(oHrmLvCancHdrBean.getFromDate()); + oHrmLvCancHdrBean.setToCancelDate(oHrmLvCancHdrBean.getToDate()); + oDisableList.add("butFromCancelDate"); + oDisableList.add("butToCancelDate"); + } + } + if (!oHrmLvCancHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmLvCancHdrBean.getCancelStatus())) + if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("N")) { + oDisableList.add("fromCancelDate"); + oEnableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oEnableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oEnableList.add("butCancelDateApplied"); + oEnableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + } else if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("A")) { + oDisableList.add("fromCancelDate"); + oDisableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oDisableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oDisableList.add("butCancelDateApplied"); + oDisableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } else if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("R")) { + oDisableList.add("fromCancelDate"); + oDisableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oDisableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oDisableList.add("butCancelDateApplied"); + oDisableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } else if (oHrmLvCancHdrBean.getCancelStatus().equalsIgnoreCase("P")) { + oDisableList.add("fromCancelDate"); + oDisableList.add("butFromCancelDate"); + oDisableList.add("toCancelDate"); + oDisableList.add("butToCancelDate"); + oDisableList.add("cancelDays"); + oDisableList.add("cancelDateApplied"); + oDisableList.add("butCancelDateApplied"); + oDisableList.add("cancelRemarks"); + oDisableList.add("cancelStatus"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) { + ((HrmLvCancHdrBean)oBaseHeaderBean).setButtonName("A"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveCanc((HrmLvCancHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + if (sButtonName.equalsIgnoreCase("butReject")) { + ((HrmLvCancHdrBean)oBaseHeaderBean).setButtonName("R"); + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveCanc((HrmLvCancHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java new file mode 100644 index 0000000..03ccaef --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCancQueryBD.java @@ -0,0 +1,111 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvCancQueryHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; + +public class HrmLvCancQueryBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveCanQueryDtlMetaInfo((HrmLvCancQueryQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmployeeLeaveCancellationQueryScreen")) + return oHrmSecondFacade.getHrmLeaveCanQueryDetailInfo((HrmLvCancQueryQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "no Save"; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvCancQueryHdrBean oHrmLvCancQueryHdrBean = (HrmLvCancQueryHdrBean)oThisPageVO.getOHeaderBean(); + if (!oHrmLvCancQueryHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmLvCancQueryHdrBean.getEmployeeNumber())) + if (!String.valueOf(oHrmLvCancQueryHdrBean.getEmployeeNumber()).equalsIgnoreCase(null)) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java new file mode 100644 index 0000000..5c231cb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvCreditBD.java @@ -0,0 +1,87 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmLvCreditBD extends HrmBaseBD { + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String sPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String sPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butCreditLeaves")) + sHeaderPrimaryKey = oFacade.creditLeaves((HrmLvCreditHdrBean)oBaseHeaderBean, oWhenPicked, oDetailBeanArray, oDetailPicked); + return sHeaderPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String getInsertDataImpl(BaseQueryVO oBaseQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oDisableList = new ArrayList(); + ArrayList oEnableList = new ArrayList(); + oDisableList.add("butDelete"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butSave"); + oDisableList.add("butRefresh"); + oDisableList.add("butPrint"); + oDisableList.add("buttxtRegion"); + oDisableList.add("butCreditLeaves"); + HrmLvCreditHdrBean oHrmLvCreditHdrBean = (HrmLvCreditHdrBean)oThisPageVO.getOHeaderBean(); + if (null != oHrmLvCreditHdrBean.getEmployeeNoId() && null != oHrmLvCreditHdrBean.getLeaveTypeId() && null != oHrmLvCreditHdrBean.getTxtNoOfDays()) { + oEnableList.add("butCreditLeaves"); + oEnableList.add("butQuery"); + } else { + oDisableList.add("butCreditLeaves"); + oDisableList.add("butQuery"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java new file mode 100644 index 0000000..98536d8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvEncashBD.java @@ -0,0 +1,335 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvEncashQVO; + +public class HrmLvEncashBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpLeaveEncashHdrMetaInfo((HrmLvEncashQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpLeaveEncashHdrInfo((HrmLvEncashQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + oDisableList.add("butDelete"); + if (!oHrmLvEncashHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("taxPercentage"); + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butSubmit"); + oEnableList.add("butEmpNo"); + oEnableList.add("butExecute"); + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getLevel())) { + if (oHrmLvEncashHdrBean.getLevel().equalsIgnoreCase("0")) { + oDisableList.add("taxPercentage"); + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + } else { + oEnableList.add("taxPercentage"); + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + } + } else { + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + } + oDisableList.add("butSubmit"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + oEnableList.add("butEmpNo"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butEmpNo"); + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getLevel())) { + if (oHrmLvEncashHdrBean.getLevel().equalsIgnoreCase("0")) { + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getChangeStatus())) + if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("N")) { + oDisableList.add("taxPercentage"); + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oEnableList.add("butSubmit"); + oEnableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("A")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("taxPercentage"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("R")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("taxPercentage"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("P")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxPercentage"); + oDisableList.add("taxAmount"); + } + } else if (!oHrmLvEncashHdrBean.getLevel().equalsIgnoreCase("0")) { + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getChangeStatus())) + if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("N")) { + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("taxPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oEnableList.add("butSubmit"); + oEnableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("A")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("taxPercentage"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("R")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("taxPercentage"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("P")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + oDisableList.add("butSubmit"); + oEnableList.add("taxPercentage"); + oDisableList.add("taxAmount"); + } + } + } else { + if (EnrgiseUtil.checkString(oHrmLvEncashHdrBean.getChangeStatus())) + if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("N")) { + oEnableList.add("butLeaveCodes"); + oEnableList.add("butDateApplied"); + oEnableList.add("daysEncashed"); + oDisableList.add("taxPercentage"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oEnableList.add("butSubmit"); + oEnableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("A")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("taxPercentage"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("R")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("butDateApplied"); + oDisableList.add("taxPercentage"); + oDisableList.add("daysEncashed"); + oDisableList.add("butApprove"); + oDisableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } else if (oHrmLvEncashHdrBean.getChangeStatus().equalsIgnoreCase("P")) { + oDisableList.add("butLeaveCodes"); + oDisableList.add("dateApplied"); + oDisableList.add("butDateApplied"); + oDisableList.add("daysEncashed"); + oEnableList.add("butApprove"); + oEnableList.add("butReject"); + oDisableList.add("butSubmit"); + oDisableList.add("taxAmount"); + } + oDisableList.add("taxPercentage"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmSecondFacade.approveLeaveEncash((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmSecondFacade.rejectLvEncash((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butSubmit")) + sHeaderPrimaryKey = oHrmSecondFacade.submitLvEncash((HrmLvEncashHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10) { + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvEncashHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvEncashHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvEncashHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvEncashHdrBean.setMiddleName(oName[1]); + oHrmLvEncashHdrBean.setLastName(oName[2]); + } else { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(" "); + } + oHrmLvEncashHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvEncashHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvEncashHdrBean.setDesignation(this.oUserInfo.getDesignation()); + } + if (oThisPageVO.getActionName() == 13) { + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvEncashHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvEncashHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvEncashHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvEncashHdrBean.setMiddleName(oName[1]); + oHrmLvEncashHdrBean.setLastName(oName[2]); + } else { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(" "); + } + oHrmLvEncashHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvEncashHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvEncashHdrBean.setDesignation(this.oUserInfo.getDesignation()); + } + if (oThisPageVO.getActionName() == 19) { + HrmLvEncashHdrBean oHrmLvEncashHdrBean = (HrmLvEncashHdrBean)oThisPageVO.getOHeaderBean(); + oHrmLvEncashHdrBean.setEmployeeId(this.oUserInfo.getUserTypeId()); + oHrmLvEncashHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmLvEncashHdrBean.setFirstName(oName[0]); + if (oName.length == 2) { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(oName[1]); + } else if (oName.length > 2) { + oHrmLvEncashHdrBean.setMiddleName(oName[1]); + oHrmLvEncashHdrBean.setLastName(oName[2]); + } else { + oHrmLvEncashHdrBean.setMiddleName(" "); + oHrmLvEncashHdrBean.setLastName(" "); + } + oHrmLvEncashHdrBean.setLocation(this.oUserInfo.getSiteName()); + oHrmLvEncashHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmLvEncashHdrBean.setDesignation(this.oUserInfo.getDesignation()); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java new file mode 100644 index 0000000..045029d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvLedgerBD.java @@ -0,0 +1,148 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvLedgerQVO; + +public class HrmLvLedgerBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmployeeLeaveLedger")) + return oHrmSecondFacade.getHrmLeaveLedgerDtlMetaInfo((HrmLvLedgerQVO)oBaseQueryVO); + return oHrmSecondFacade.getHrmLeaveLedgerTxnDtlMetaInfo((HrmLvLedgerQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmEmployeeLeaveLedger")) + return oHrmSecondFacade.getHrmLeaveLedgerDetailInfo((HrmLvLedgerQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return oHrmSecondFacade.getHrmLeaveLedgerTxnDetailInfo((HrmLvLedgerQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveLeaveLedger((HrmLvLedgerHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + String groupStatus; + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butInsert"); + oDisableList.add("butSave"); + oDisableList.add("butDelete"); + oDisableList.add("butPrint"); + oDisableList.add("butHelp"); + HrmLvLedgerHdrBean oHrmLvLedgerHdrBean = (HrmLvLedgerHdrBean)oThisPageVO.getOHeaderBean(); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + groupStatus = oHrmSecondFacade.getGroupInfo(this.oUserInfo.getUserTypeId()); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRmtExcep) { + throw new EnrgiseSystemException(oRmtExcep); + } + if (EnrgiseUtil.checkString(groupStatus)) + if (groupStatus.equalsIgnoreCase("S")) { + oEnableList.add("butEmpCode"); + } else { + oDisableList.add("butEmpCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("butGetDtl2"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butExecute"); + oEnableList.add("butGetDtl2"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmLvLedgerHdrBean oHrmLvLedgerHdrBean = (HrmLvLedgerHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getActionName() == 10) { + oHrmLvLedgerHdrBean.setEmployeeNoId(this.oUserInfo.getUserTypeId()); + oHrmLvLedgerHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + oHrmLvLedgerHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } else if (oThisPageVO.getActionName() == 13) { + oHrmLvLedgerHdrBean.setEmployeeNoId(this.oUserInfo.getUserTypeId()); + oHrmLvLedgerHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + oHrmLvLedgerHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } else if (oThisPageVO.getActionName() == 19) { + oHrmLvLedgerHdrBean.setEmployeeNoId(this.oUserInfo.getUserTypeId()); + oHrmLvLedgerHdrBean.setEmployeeNo(this.oUserInfo.getUserId()); + oHrmLvLedgerHdrBean.setEmployeeName(this.oUserInfo.getUserName()); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvMstBD.java new file mode 100644 index 0000000..15dfc7e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmLvMstBD.java @@ -0,0 +1,140 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmLvMstQVO; + +public class HrmLvMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveMasterHdrMetaInfo((HrmLvMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmLeaveMasterHeaderInfo((HrmLvMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveMasterDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmLeaveMasterDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmLeaveMst((HrmLvMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmLvMstHdrBean oHrmLvMstHdrBean = (HrmLvMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + oDisableList.add("butLeaveCode"); + if (!oHrmLvMstHdrBean.equals(null)) { + if (EnrgiseUtil.checkString(oHrmLvMstHdrBean.getEvidenceRequired())) + if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("on")) { + oEnableList.add("evidenceDescription"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("off")) { + oDisableList.add("evidenceDescription"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("")) { + oDisableList.add("evidenceDescription"); + } + if (EnrgiseUtil.checkString(oHrmLvMstHdrBean.getEncashable())) + if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("on")) { + oEnableList.add("encashableLimit"); + oEnableList.add("periodicity"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("off")) { + oDisableList.add("encashableLimit"); + oDisableList.add("periodicity"); + } else if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("")) { + oDisableList.add("encashableLimit"); + oDisableList.add("periodicity"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + HrmLvMstHdrBean oHrmLvMstHdrBean = (HrmLvMstHdrBean)oThisPageVO.getOHeaderBean(); + if (String.valueOf(oHrmLvMstHdrBean.getEvidenceRequired()).equalsIgnoreCase("off")) + oHrmLvMstHdrBean.setEvidenceDescription(""); + if (String.valueOf(oHrmLvMstHdrBean.getEncashable()).equalsIgnoreCase("off")) { + oHrmLvMstHdrBean.setEncashableLimit(""); + oHrmLvMstHdrBean.setPeriodicity(""); + } + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java new file mode 100644 index 0000000..b6a088c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMediclaimMasterBD.java @@ -0,0 +1,97 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; + +public class HrmMediclaimMasterBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMediclaimMasterHeaderMetaInfo((HrmMediclaimMasterQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmMediclaimMasterHeaderInfo((HrmMediclaimMasterQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMediclaimMasterDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMediclaimMasterDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + String sHeaderPrimaryKey = oHrmFacade.saveHrmMediclaimMaster((HrmMediclaimMasterHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMisReportBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMisReportBD.java new file mode 100644 index 0000000..a6fc6bf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMisReportBD.java @@ -0,0 +1,132 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmMisreportQVO; + +public class HrmMisReportBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getMisDataCount((HrmMisreportQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getMisDataInfo((HrmMisreportQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmMisData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmMisReportHdrBean oHrmMisReportHdrBean = (HrmMisReportHdrBean)oThisPageVO.getOHeaderBean(); + oEnableList.add("butQuery"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butHelp"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + if (EnrgiseUtil.checkString(oHrmMisReportHdrBean.getLocationCode())) { + oEnableList.add("butGetDetail"); + } else { + oDisableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butGenRep")) + sHeaderPrimaryKey = String.valueOf(oHrmFacade.InsertData((HrmMisReportHdrBean)oBaseHeaderBean, oDetailBeanArray)); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmMisReportHdrBean oHrmMisReportHdrBean = (HrmMisReportHdrBean)oThisPageVO.getOHeaderBean(); + String yearmonth = new String(); + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + yearmonth = oHrmFacade.getYearMonth(); + oHrmMisReportHdrBean.setTxtYearMonth(yearmonth); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRmtExcep) { + throw new EnrgiseSystemException(oRmtExcep); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java new file mode 100644 index 0000000..83fb909 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmMyWorkflowBD.java @@ -0,0 +1,137 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmMyWorkflowDtlBean; +import wenrgise.hrms.bean.HrmMyWorkflowHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; + +public class HrmMyWorkflowBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmMyWorkflowHdrMetaInfo((HrmMyWorkflowQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmMyWorkflowHdrInfo((HrmMyWorkflowQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmMyWorkflow")) + return oHrmFacade.getHrmMyWorkflowDetailInfo(oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmMyWorkflow")) + return oHrmFacade.getHrmMyWorkflowDetailMetaInfo(oBaseQueryVO); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmMyWorkflowHdrBean oHrmMyWorkflowHdrBean = (HrmMyWorkflowHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + arylstDisab.add("butDelete"); + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelRow"); + arylstDisab.add("butAct"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + if (EnrgiseUtil.checkString(oHrmMyWorkflowHdrBean.getWorkflowType())) + if (oHrmMyWorkflowHdrBean.getWorkflowType().equalsIgnoreCase("W") && oHrmMyWorkflowHdrBean.getTxtStatus().equalsIgnoreCase("P")) { + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmMyWorkflow")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmMyWorkflowDtlBean oHrmMyWorkflowDtlBean = oIt.next(); + if (!oHrmMyWorkflowDtlBean.getStatus().equalsIgnoreCase("N")) + arylstEnab.add("butAct"); + } + } + } else { + arylstDisab.add("butAct"); + } + if (!oHrmMyWorkflowHdrBean.equals(null)) + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + arylstDisab.add("butSave"); + arylstDisab.add("butId"); + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java new file mode 100644 index 0000000..f193b5c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCalMstBD.java @@ -0,0 +1,118 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; + +public class HrmOrgCalMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCalHeaderMetaInfo((HrmOrgCalMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmCalHeader((HrmOrgCalMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmCalendar((HrmOrgCalMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmOrgCalMstHdrBean oHrmOrgCalMstHdrBean = (HrmOrgCalMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmOrgCalMstHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("startMonth"); + oDisableList.add("duration"); + oDisableList.add("butDelete"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("startMonth"); + oEnableList.add("duration"); + oDisableList.add("butDelete"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java new file mode 100644 index 0000000..730c096 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgClassDtlBD.java @@ -0,0 +1,105 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; + +public class HrmOrgClassDtlBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClassHeaderMetaInfo((HrmOrgClassDtlQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmClassHeader((HrmOrgClassDtlQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClassDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmClassDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmOrgClassDtl((HrmOrgClassHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butDelete"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java new file mode 100644 index 0000000..40d1693 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgCntryMstBD.java @@ -0,0 +1,127 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; + +public class HrmOrgCntryMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCountryHeaderMetaInfo((HrmOrgCntryMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmCountryHeader((HrmOrgCntryMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCountryDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmCountryDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmCountry((HrmOrgCntryMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmOrgCntryMstHdrBean oHrmOrgCntryMstHdrBean = (HrmOrgCntryMstHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("butCountryCode"); + oDisableList.add("butDelete"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butCountryCode"); + oDisableList.add("butDelete"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butDelete"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java new file mode 100644 index 0000000..313773d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgDistMstBD.java @@ -0,0 +1,105 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgDistMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmDistrictDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmDistrictDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmDistrict(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java new file mode 100644 index 0000000..93ebede --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolCalBD.java @@ -0,0 +1,130 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; + +public class HrmOrgHolCalBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolCalHeaderMetaInfo((HrmOrgHolCalQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmHolCalHeader((HrmOrgHolCalQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmHolCal((HrmOrgHolCalHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmOrgHolCalHdrBean oHrmOrgHolCalHdrBean = (HrmOrgHolCalHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmOrgHolCalHdrBean.getState())) { + oEnableList.add("butState"); + oEnableList.add("butSiteCode"); + } else { + oDisableList.add("butSiteCode"); + } + oDisableList.add("butCalName"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butState"); + oDisableList.add("butSiteCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oDisableList.add("butCalName"); + oEnableList.add("description"); + } else if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butState"); + oDisableList.add("butSiteCode"); + oDisableList.add("butFromDate"); + oDisableList.add("butToDate"); + oEnableList.add("butCalName"); + oDisableList.add("description"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java new file mode 100644 index 0000000..ce77f4a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgHolTypeMstBD.java @@ -0,0 +1,147 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; + +public class HrmOrgHolTypeMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmHolTypeHeaderMetaInfo((HrmOrgHolTypeMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmHolTypeHeader((HrmOrgHolTypeMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHolidayType((HrmOrgHolTypeMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean = (HrmOrgHolTypeMstHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmOrgHolTypeMstHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getMandatory())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("Y")) { + oEnableList.add("compensatoryLeave"); + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("N")) { + oEnableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("Y")) { + oDisableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("")) { + oDisableList.add("rewardPercentageOfBasic"); + } + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("N")) { + oDisableList.add("compensatoryLeave"); + oDisableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("")) { + oDisableList.add("compensatoryLeave"); + oDisableList.add("rewardPercentageOfBasic"); + } + oDisableList.add("butDelete"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getMandatory())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("Y")) { + oEnableList.add("compensatoryLeave"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("N")) { + oDisableList.add("compensatoryLeave"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("")) { + oDisableList.add("compensatoryLeave"); + } + if (EnrgiseUtil.checkString(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave())) + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("N")) { + oEnableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("Y")) { + oDisableList.add("rewardPercentageOfBasic"); + } else if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("")) { + oDisableList.add("rewardPercentageOfBasic"); + } + oDisableList.add("butDelete"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + HrmOrgHolTypeMstHdrBean oHrmOrgHolTypeMstHdrBean = (HrmOrgHolTypeMstHdrBean)oThisPageVO.getOHeaderBean(); + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getMandatory()).equalsIgnoreCase("N")) { + oHrmOrgHolTypeMstHdrBean.setCompensatoryLeave("N"); + oHrmOrgHolTypeMstHdrBean.setRewardPercentageOfBasic(""); + } + if (String.valueOf(oHrmOrgHolTypeMstHdrBean.getCompensatoryLeave()).equalsIgnoreCase("Y")) + oHrmOrgHolTypeMstHdrBean.setRewardPercentageOfBasic(""); + } + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java new file mode 100644 index 0000000..ff2fdee --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgIncrementBD.java @@ -0,0 +1,140 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgIncrementDtlBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; + +public class HrmOrgIncrementBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmIncrHdrMetaInfo((HrmOrgIncrementQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmIncrHeaderInfo((HrmOrgIncrementQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmIncrDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmIncrDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmIncrement((HrmOrgIncrementHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmOrgIncrementHdrBean oHrmOrgIncrementHdrBean = (HrmOrgIncrementHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + oDisableList.add("butDelete"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butClsHdr"); + oDisableList.add("butClsDtl"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butClsHdr"); + oDisableList.add("butClsDtl"); + oDisableList.add("butStartDate"); + oDisableList.add("butRatingCode"); + if (EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getEndDate())) + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmOrgIncrement")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmOrgIncrementDtlBean oHrmOrgIncrementDtlBean = oIt.next(); + if (!oHrmOrgIncrementDtlBean.getStatus().equalsIgnoreCase("N")) + oHrmOrgIncrementDtlBean.setDisabtxtIncrement("true"); + } + } + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + if (EnrgiseUtil.checkString(oHrmOrgIncrementHdrBean.getClsHdrId())) { + oDisableList.add("butClsHdr"); + oEnableList.add("butClsDtl"); + } else { + oEnableList.add("butClsHdr"); + oDisableList.add("butClsDtl"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException {} + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java new file mode 100644 index 0000000..106195a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgLangMstBD.java @@ -0,0 +1,105 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgLangMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLanguageDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmLanguageDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmLanguage(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java new file mode 100644 index 0000000..ad72326 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgQualMstBD.java @@ -0,0 +1,93 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgQualMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmQualificationDetailMetaInfo(); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmQualificationDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmQualification(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java new file mode 100644 index 0000000..d101dd5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRatingMstBD.java @@ -0,0 +1,107 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; + +public class HrmOrgRatingMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRatingHeaderMetaInfo((HrmOrgRatingMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmRatingHeader((HrmOrgRatingMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRatingDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRatingDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmRating((HrmOrgRatingMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butRatingHeaderCode"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java new file mode 100644 index 0000000..80c151a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgRelationMstBD.java @@ -0,0 +1,93 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgRelationMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRelationDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRelationDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmRelation(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java new file mode 100644 index 0000000..b05bf3e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgReligionMstBD.java @@ -0,0 +1,93 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgReligionMstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmRelDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmReligionDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmReligion(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java new file mode 100644 index 0000000..8867861 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgScaleMstBD.java @@ -0,0 +1,98 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; + +public class HrmOrgScaleMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmScaleHeaderMetaInfo((HrmOrgScaleMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmScaleHeader((HrmOrgScaleMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmScaleDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmScaleDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmScaleMst((HrmOrgScaleMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java new file mode 100644 index 0000000..e1508ca --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgSkillMstBD.java @@ -0,0 +1,105 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; + +public class HrmOrgSkillMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSkillHeaderMetaInfo((HrmOrgSkillMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSkillHeader((HrmOrgSkillMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSkillDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSkillDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSkill((HrmOrgSkillMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") || oThisPageVO.getScreenMode().equalsIgnoreCase("N") || oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oDisableList.add("butDelete"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java new file mode 100644 index 0000000..2c7293a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgTehMstBD.java @@ -0,0 +1,105 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmOrgTehMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmTehsilDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmTehsilDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmTehsil(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("U")) { + oEnableList.add("butQuery"); + oDisableList.add("butGetDetail"); + } else if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butQuery"); + oEnableList.add("butGetDetail"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java new file mode 100644 index 0000000..3fe098d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmOrgWorkGroupMstBD.java @@ -0,0 +1,152 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; + +public class HrmOrgWorkGroupMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmOrgWorkGroupMstHeaderMetaInfo((HrmOrgWorkGroupMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmOrgWorkGroupMstHeader((HrmOrgWorkGroupMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmOrgWorkGroupMst((HrmOrgWorkGroupMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + HrmOrgWorkGroupMstHdrBean oHrmOrgWorkGroupMstHdrBean = (HrmOrgWorkGroupMstHdrBean)oThisPageVO.getOHeaderBean(); + if (!oHrmOrgWorkGroupMstHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butDelete"); + oDisableList.add("code"); + oEnableList.add("butWorkGroupCode"); + oDisableList.add("name"); + oDisableList.add("butSiteCode"); + oDisableList.add("deptFlag"); + oDisableList.add("temporaryFlag"); + oDisableList.add("butCostCode"); + oDisableList.add("butContactEmployeeNo"); + oDisableList.add("phone"); + oDisableList.add("EMail"); + oDisableList.add("fax"); + oDisableList.add("textarea"); + oDisableList.add("refDocNo"); + oDisableList.add("butCreationDate"); + oDisableList.add("butDocumentDate"); + oDisableList.add("butEndDate"); + oDisableList.add("specialRemarks"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butDelete"); + oDisableList.add("code"); + oDisableList.add("butWorkGroupCode"); + oEnableList.add("name"); + oEnableList.add("butSiteCode"); + oEnableList.add("deptFlag"); + oEnableList.add("temporaryFlag"); + oEnableList.add("butCostCode"); + oEnableList.add("butContactEmployeeNo"); + oEnableList.add("phone"); + oEnableList.add("EMail"); + oEnableList.add("fax"); + oEnableList.add("textarea"); + oEnableList.add("refDocNo"); + oEnableList.add("butCreationDate"); + oEnableList.add("butDocumentDate"); + oEnableList.add("butEndDate"); + oEnableList.add("specialRemarks"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butDelete"); + oEnableList.add("code"); + oEnableList.add("name"); + oDisableList.add("butWorkGroupCode"); + oEnableList.add("butSiteCode"); + oEnableList.add("deptFlag"); + oEnableList.add("temporaryFlag"); + oEnableList.add("butCostCode"); + oEnableList.add("butContactEmployeeNo"); + oEnableList.add("phone"); + oEnableList.add("EMail"); + oEnableList.add("fax"); + oEnableList.add("textarea"); + oEnableList.add("refDocNo"); + oEnableList.add("butCreationDate"); + oEnableList.add("butDocumentDate"); + oEnableList.add("butEndDate"); + oEnableList.add("specialRemarks"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java new file mode 100644 index 0000000..37a5a8c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmCriteriaBD.java @@ -0,0 +1,142 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.lang.reflect.InvocationTargetException; +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import org.apache.commons.beanutils.BeanUtils; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; + +public class HrmPrmCriteriaBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oInfo = new RecordMetaInfo(); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + oInfo.setRecordCount(1L); + oInfo.setOWhenPicked(null); + return null; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + ArrayList oHeaderList = null; + HrmPrmCriteriaQVO oVo = (HrmPrmCriteriaQVO)oQueryVO; + HrmPrmCriteriaHdrBean oBean = new HrmPrmCriteriaHdrBean(); + BeanUtils.copyProperties(oBean, oVo); + oHeaderList.add(oBean); + return oHeaderList; + } catch (InvocationTargetException oEx) { + throw new EnrgiseSystemException(oEx); + } catch (IllegalAccessException oEx) { + throw new EnrgiseSystemException(oEx); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmCriteriaDetailMetaInfo((HrmPrmCriteriaQVO)oQVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmCriteriaDetailInfo((HrmPrmCriteriaQVO)oQVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmPrmCriteriaHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public void onLoadAction(ThisPageVO oThisPageVO) {} + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmPrmCriteriaHdrBean oHdrBean = (HrmPrmCriteriaHdrBean)oThisPageVO.getOHeaderBean(); + arylstEnab.add("butQuery"); + arylstDisab.add("butExecute"); + arylstDisab.add("butDelete"); + arylstDisab.add("butInsert"); + if (oThisPageVO.getScreenMode().equals("Q")) { + if (EnrgiseUtil.checkString(oHdrBean.getHeaderPrimaryKey())) { + arylstEnab.add("butToGrade"); + if (EnrgiseUtil.checkString(oHdrBean.getToGradeId()) && EnrgiseUtil.checkString(oHdrBean.getToDesigId())) { + arylstEnab.add("butGetDetail"); + } else { + arylstDisab.add("butGetDetail"); + } + } else { + arylstDisab.add("butToGrade"); + } + if (EnrgiseUtil.checkString(oHdrBean.getFromDesigId())) { + arylstEnab.add("butToDesig"); + } else { + arylstDisab.add("butToDesig"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java new file mode 100644 index 0000000..803c145 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmExperienceScoreBD.java @@ -0,0 +1,108 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmExperienceHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; + +public class HrmPrmExperienceScoreBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return new RecordMetaInfo(); + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmPrmESData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oEnableList.add("butQuery"); + HrmPrmExperienceHdrBean oHdrBean = (HrmPrmExperienceHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") && EnrgiseUtil.checkString(oHdrBean.getGradeCode()) && EnrgiseUtil.checkString(oHdrBean.getDesigCode())) + oEnableList.add("butGetDetail"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + oEnableList.add("butSave"); + } + oDisableList.add("butExecute"); + oDisableList.add("butDelete"); + oDisableList.add("butInsert"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = oHrmSecondFacade.getHrmPrmESDtlMetaInfo((HrmPrmExperienceScoreQVO)oBaseQueryVO); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = oHrmSecondFacade.getHrmPrmESDtlInfo((HrmPrmExperienceScoreQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java new file mode 100644 index 0000000..889fb84 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmGenAssBD.java @@ -0,0 +1,74 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmPrmGenAssBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstEnab.add("butPrmID"); + arylstEnab.add("butSiteID"); + arylstDisab.add("butGenerate"); + arylstDisab.add("butInsert"); + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + System.out.println("Data Save Successfully"); + return null; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacadeLocal = oHome.create(); + sHeaderPrimaryKey = oHrmSecondFacadeLocal.savePrmGenAss(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java new file mode 100644 index 0000000..16c7bdd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmKPARatingBD.java @@ -0,0 +1,138 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmKPAPoswiseDtlBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; + +public class HrmPrmKPARatingBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getKPARatingHeaderMetaInfo((HrmPrmKPARatingQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getKPARatingHeaderInfo((HrmPrmKPARatingQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + if (sScreenName.equalsIgnoreCase("HrmPrmKPARating")) { + oRecordMetaInfo = oHrmSecondFacade.getPrmKPARatingPosDetailMetaInfo(lPrimaryKey); + } else { + oRecordMetaInfo = oHrmSecondFacade.getPrmKPARatingFinDetailMetaInfo(lPrimaryKey); + } + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = new ArrayList(); + if (sScreenName.equalsIgnoreCase("HrmPrmKPARating")) { + oDetailList = oHrmSecondFacade.getPrmKPARatingPosDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else { + oDetailList = oHrmSecondFacade.getPrmKPARatingFinDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmPrmKPARatingHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + int sCount = 0; + ArrayList oDetailList = new ArrayList(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + oDisableList.add("butRatingNo"); + if (oList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmPrmKPARating")) { + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + HrmPrmKPAPoswiseDtlBean oHrmPrmKPAPoswiseDtlBean = oIt.next(); + if (!oHrmPrmKPAPoswiseDtlBean.getStatus().equalsIgnoreCase("N")) + oHrmPrmKPAPoswiseDtlBean.setDisabbutForPos("true"); + } + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java new file mode 100644 index 0000000..84ae26b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmNoticeDtlBD.java @@ -0,0 +1,136 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmNoticeDtlDtlBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; + +public class HrmPrmNoticeDtlBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmNoticeDtlHdrMetaInfo((HrmPrmNoticeDtlQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmPrmNoticeDtlHdrInfo((HrmPrmNoticeDtlQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + oRecordMetaInfo = oHrmSecondFacade.getNoticeDetailMetaInfo(lPrimaryKey); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = new ArrayList(); + oDetailList = oHrmSecondFacade.getPrmNoticeDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveNoticeDtlData((HrmPrmNoticeDtlHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + int sCount = 0; + if (oThisPageVO.getScreenMode().equals("N")) { + oEnableList.add("noticeNo"); + oEnableList.add("desc"); + oDisableList.add("butNoticeNo"); + } else if (oThisPageVO.getScreenMode().equals("U")) { + oDisableList.add("butNoticeNo"); + oDisableList.add("noticeNo"); + oEnableList.add("desc"); + oDisableList.add("butNoticeDate"); + if (oDetailList != null) + if (oThisPageVO.getScreenName().equalsIgnoreCase("HrmPrmNoticeDtl")) { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + HrmPrmNoticeDtlDtlBean oHrmPrmNoticeDtlDtlBean = oIt.next(); + if (!oHrmPrmNoticeDtlDtlBean.getStatus().equalsIgnoreCase("N")) { + oHrmPrmNoticeDtlDtlBean.setDisabbutGrade("true"); + oHrmPrmNoticeDtlDtlBean.setDisabbutDesig("true"); + } + } + } + } else { + oDisableList.add("noticeNo"); + oDisableList.add("desc"); + oEnableList.add("butNoticeNo"); + oDisableList.add("butNoticeDate"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java new file mode 100644 index 0000000..fa06e56 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmOrderBD.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmOrderQVO; + +public class HrmPrmOrderBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPromOrderHdrMetaInfo((HrmPrmOrderQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmPromOrderHdr((HrmPrmOrderQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePromOrder((HrmPrmOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmPrmOrderHdrBean oHrmPrmOrderHdrBean = (HrmPrmOrderHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butToGrade"); + oDisableList.add("butToDesig"); + oDisableList.add("butEffecDate"); + oDisableList.add("butApprovedBy"); + oDisableList.add("remarks"); + oDisableList.add("orderNo"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butToGrade"); + oDisableList.add("butToDesig"); + oDisableList.add("butEffecDate"); + oDisableList.add("butApprovedBy"); + oDisableList.add("butOrderNo"); + oDisableList.add("butEmpNo"); + oDisableList.add("orderNo"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butOrderNo"); + if (EnrgiseUtil.checkString(oHrmPrmOrderHdrBean.getEmpId())) { + oEnableList.add("butToGrade"); + oEnableList.add("butToDesig"); + } else { + oDisableList.add("butToGrade"); + oDisableList.add("butToDesig"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java new file mode 100644 index 0000000..14a1f61 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmQualCriteriaBD.java @@ -0,0 +1,110 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmQualCriteriaHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; + +public class HrmPrmQualCriteriaBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePrmQualCriteriaDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oEnableList.add("butQuery"); + HrmPrmQualCriteriaHdrBean oHdrBean = (HrmPrmQualCriteriaHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q") && EnrgiseUtil.checkString(oHdrBean.getGradeCode()) && EnrgiseUtil.checkString(oHdrBean.getDesigCode())) + oEnableList.add("butGetDetail"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + oEnableList.add("butSave"); + } + oDisableList.add("butExecute"); + oDisableList.add("butDelete"); + oDisableList.add("butInsert"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oRecordMetaInfo = oHrmSecondFacade.getPrmQualCriteriaDetailMetaInfo((HrmPrmQualCriteriaQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oAdvAttrDtl = new ArrayList(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oAdvAttrDtl = oHrmSecondFacade.getPrmQualCriteriaDetail((HrmPrmQualCriteriaQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + return oAdvAttrDtl; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java new file mode 100644 index 0000000..9eefac4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmTestScoreBD.java @@ -0,0 +1,123 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; + +public class HrmPrmTestScoreBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmPrmTCHdrMetaInfo((HrmPrmTestScoreQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmPrmTCHdrInfo((HrmPrmTestScoreQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = oHrmSecondFacade.getHrmPrmTCDtlMetaInfo(lPrimaryKey); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = oHrmSecondFacade.getHrmPrmTCDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePrmTCData((HrmPrmTestScoreHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butGrade"); + oDisableList.add("butDesig"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")); + if (sButtonName.equalsIgnoreCase("butReject")); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java new file mode 100644 index 0000000..20672ad --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmPrmViewAssBD.java @@ -0,0 +1,132 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmPrmViewAssHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmPrmViewAssBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oRecordMetaInfo = oHrmSecondFacade.getPrmViewAssDetailMetaInfo(lPrimaryKey, this.oUserInfo); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oAdvAttrDtl = new ArrayList(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + oAdvAttrDtl = oHrmSecondFacade.getPrmViewAssDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd, this.oUserInfo); + return oAdvAttrDtl; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.savePrmViewAssDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmPrmViewAssHdrBean oHrmPrmViewAssHdrBean = (HrmPrmViewAssHdrBean)oBaseHeaderBean; + if (!EnrgiseUtil.checkString(oHrmPrmViewAssHdrBean.getPrmNo())) { + oDisableList.add("buttoPositionID"); + } else if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("S")) { + oEnableList.add("buttoPositionID"); + } + if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("S") && oThisPageVO.getODetailList() == null) + if (!EnrgiseUtil.checkString(oHrmPrmViewAssHdrBean.getToPosition())) { + oDisableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + } else { + oDisableList.add("butAddRow"); + oEnableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + oDisableList.add("butprmID"); + } + if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList().size() == 0) { + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("buttoPositionID"); + oDisableList.add("butprmID"); + oEnableList.add("butQuery"); + } + if (oHrmPrmViewAssHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList().size() != 0) { + oDisableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oEnableList.add("butSave"); + oDisableList.add("butDelRow"); + oDisableList.add("buttoPositionID"); + oDisableList.add("butprmID"); + oEnableList.add("butQuery"); + } + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + oDisableList.add("butPrevHeader"); + oDisableList.add("butNextHeader"); + oDisableList.add("newPositionRequested"); + oDisableList.add("butJumpHeader"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java new file mode 100644 index 0000000..e55cdbe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvAttrBD.java @@ -0,0 +1,155 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecAdvAttrHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; + +public class HrmRecAdvAttrBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLocVacencyDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecLocVacencyDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLngReqDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecLngReqDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrQualReqDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecQualReqDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrSkillReqDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecSkillReqDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrWorkExpDtl")) { + oRecordMetaInfo = oHrmSecondFacade.getRecWorkExpDetailMetaInfo(lPrimaryKey); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrJobDesc")) { + oRecordMetaInfo = oHrmSecondFacade.getRecJobDescDetailMetaInfo(lPrimaryKey); + } + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oAdvAttrDtl = new ArrayList(); + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLocVacencyDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecLocVacencyDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrLngReqDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecLngReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrQualReqDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecQualReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrSkillReqDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecSkillReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrWorkExpDtl")) { + oAdvAttrDtl = oHrmSecondFacade.getRecWorkExpDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } else if (sScreenName.equalsIgnoreCase("HrmRecAdvAttrJobDesc")) { + oAdvAttrDtl = oHrmSecondFacade.getRecJobDescDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } + return oAdvAttrDtl; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmRecAdvAttrDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmRecAdvAttrHdrBean oHrmRecAdvAttrHdrBean = (HrmRecAdvAttrHdrBean)oBaseHeaderBean; + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrHdrBean.getRefNo())) { + oDisableList.add("butPosition"); + } else if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("S")) { + oEnableList.add("butPosition"); + } + if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("S") && oThisPageVO.getODetailList() == null) + if (!EnrgiseUtil.checkString(oHrmRecAdvAttrHdrBean.getDesgn())) { + oDisableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + } else { + oDisableList.add("butAddRow"); + oEnableList.add("butGetDetail"); + oDisableList.add("butDelRow"); + } + if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList() == null) { + oEnableList.add("butAddRow"); + oDisableList.add("butDelRow"); + oDisableList.add("butGetDetail"); + oDisableList.add("butrefNo"); + oDisableList.add("butPosition"); + oEnableList.add("butQuery"); + } + if (oHrmRecAdvAttrHdrBean.getChangeEnb().equalsIgnoreCase("T") && oThisPageVO.getODetailList() != null) { + oEnableList.add("butAddRow"); + oDisableList.add("butGetDetail"); + oEnableList.add("butSave"); + oEnableList.add("butDelRow"); + oDisableList.add("butrefNo"); + oDisableList.add("butPosition"); + oEnableList.add("butQuery"); + } + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + oDisableList.add("butPrevHeader"); + oDisableList.add("butNextHeader"); + oDisableList.add("newPositionRequested"); + oDisableList.add("butJumpHeader"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java new file mode 100644 index 0000000..24d63a4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecAdvtMtnBD.java @@ -0,0 +1,133 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; + +public class HrmRecAdvtMtnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmRecAdvtHdrMetaInfo((HrmRecAdvtMtnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmRecAdvtHdrInfo((HrmRecAdvtMtnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + RecordMetaInfo oRecordMetaInfo = oHrmSecondFacade.getHrmRecAdvtDtlMetaInfo(lPrimaryKey); + return oRecordMetaInfo; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oDetailList = oHrmSecondFacade.getHrmRecAdvtDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + return oDetailList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveAdvtData((HrmRecAdvtMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmRecAdvtMtnHdrBean oHrmRecAdvtMtnHdrBean = (HrmRecAdvtMtnHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmRecAdvtMtnHdrBean.equals(null)) { + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("minInterviewScore2"); + oDisableList.add("minInterviewScore3"); + oDisableList.add("venue"); + oDisableList.add("time"); + oDisableList.add("butDateWalkin"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + oEnableList.add("minInterviewScore2"); + oEnableList.add("minInterviewScore3"); + oEnableList.add("venue"); + oEnableList.add("time"); + oEnableList.add("butDateWalkin"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")); + if (sButtonName.equalsIgnoreCase("butReject")); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java new file mode 100644 index 0000000..5da0fdb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecApplnMtnBD.java @@ -0,0 +1,392 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; + +public class HrmRecApplnMtnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmRecApplnMtnHdrMetaInfo((HrmRecApplnMtnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmRecApplnMtnHeaderInfo((HrmRecApplnMtnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) + return oHrmSecondFacade.getHrmRecApplnAddDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) + return oHrmSecondFacade.getHrmRecApplnLangDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) + return oHrmSecondFacade.getHrmRecApplnEduDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) + return oHrmSecondFacade.getHrmRecApplnExpDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) + return oHrmSecondFacade.getHrmRecApplnResultDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) + return oHrmSecondFacade.getHrmRecApplnOtherDtlMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) + return oHrmSecondFacade.getHrmRecApplnRefMetaInfo(lPrimaryKey); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) + return oHrmSecondFacade.getHrmRecApplnTrngDtlsMetaInfo(lPrimaryKey); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) + return oHrmSecondFacade.getHrmRecApplnAddDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) + return oHrmSecondFacade.getHrmRecApplnLangDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) + return oHrmSecondFacade.getHrmRecApplnEduDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) + return oHrmSecondFacade.getHrmRecApplnExpDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) + return oHrmSecondFacade.getHrmRecApplnResultDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) + return oHrmSecondFacade.getHrmRecApplnOtherDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) + return oHrmSecondFacade.getHrmRecApplnRef(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) + return oHrmSecondFacade.getHrmRecApplnTrngDtls(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + System.out.println(String.valueOf("header when picked=").concat(String.valueOf(oWhenPicked))); + System.out.println(String.valueOf("Detail when picked=").concat(String.valueOf(oDetailPicked))); + oWhenPicked = oDetailPicked; + System.out.println(oWhenPicked); + System.out.println(oDetailPicked); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnAddDtl")) + return oHrmSecondFacade.saveHrmRecApplnAddDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnExpDtl")) + return oHrmSecondFacade.saveHrmRecApplnExpDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnEduDtl")) + return oHrmSecondFacade.saveHrmRecApplnEduDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnLangDtl")) + return oHrmSecondFacade.saveHrmRecApplnLangDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnOtherDtl")) + return oHrmSecondFacade.saveHrmRecApplnOtherDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnResultDtl")) + return oHrmSecondFacade.saveHrmRecApplnResultDtl((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnRef")) + return oHrmSecondFacade.saveHrmRecApplnRef((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sScreenName.equalsIgnoreCase("HrmRecApplnMtnTrngDtls")) + return oHrmSecondFacade.saveHrmRecApplnTrngDtls((HrmRecApplnMtnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmRecApplnMtnHdrBean oHrmRecApplnMtnHdrBean = (HrmRecApplnMtnHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstDisab.add("applicationNo"); + arylstDisab.add("butApplicationDate"); + arylstDisab.add("butApplicationDate"); + arylstDisab.add("butReferenceNo"); + arylstDisab.add("applicantFirstName"); + arylstDisab.add("applicantMiddleName"); + arylstDisab.add("applicantLastName"); + arylstDisab.add("butApplForDesignation"); + arylstDisab.add("rollNo"); + if (oThisPageVO.getScreenName().equals("HrmRecApplnMtnAddDtl")) { + arylstDisab.add("guardianName"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("butNationality"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("sex"); + arylstDisab.add("relatedToEmp"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butRelatedEmp"); + arylstDisab.add("butReligion"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("healthRecord"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("appliedEarlier"); + arylstDisab.add("mail"); + arylstDisab.add("butReservationCategory"); + arylstDisab.add("prevEmpFlag"); + arylstDisab.add("prevEmpDtls"); + arylstDisab.add("hobbies"); + arylstDisab.add("grossExpected"); + arylstDisab.add("addlInfo"); + arylstDisab.add("butPresCountry"); + arylstDisab.add("butPresState"); + arylstDisab.add("presCity"); + arylstDisab.add("presAddress"); + arylstDisab.add("presPin"); + arylstDisab.add("presPhone"); + arylstDisab.add("butPermCountry"); + arylstDisab.add("butPermState"); + arylstDisab.add("permAddress"); + arylstDisab.add("permCity"); + arylstDisab.add("permAddress"); + arylstDisab.add("permPin"); + arylstDisab.add("permPhone"); + arylstDisab.add("passportNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("butExpiryDate"); + arylstDisab.add("butIssueDate"); + arylstDisab.add("butSubmissionDate"); + arylstDisab.add("chequeNo"); + arylstDisab.add("submittedAmount"); + arylstDisab.add("submissionDate"); + arylstDisab.add("arrestedBefore"); + arylstDisab.add("imprisonedBefore"); + arylstDisab.add("reasons"); + arylstDisab.add("prosecutedBefore"); + arylstDisab.add("finedByCourt"); + } + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstEnab.add("applicationNo"); + arylstDisab.add("butApplicationNo"); + arylstEnab.add("butApplicationDate"); + arylstEnab.add("butReferenceNo"); + arylstEnab.add("applicantFirstName"); + arylstEnab.add("applicantMiddleName"); + arylstEnab.add("applicantLastName"); + arylstDisab.add("rollNo"); + if (!EnrgiseUtil.checkString(oHrmRecApplnMtnHdrBean.getReferenceNo())) { + arylstDisab.add("butApplForDesignation"); + } else { + arylstEnab.add("butApplForDesignation"); + } + if (oThisPageVO.getScreenName().equals("HrmRecApplnMtnAddDtl")) { + arylstEnab.add("guardianName"); + arylstEnab.add("butDateOfBirth"); + arylstEnab.add("placeOfBirth"); + arylstEnab.add("butNationality"); + arylstEnab.add("butMaritalStatus"); + arylstEnab.add("sex"); + arylstEnab.add("relatedToEmp"); + arylstEnab.add("butMotherTongue"); + arylstEnab.add("butRelatedEmp"); + arylstEnab.add("butReligion"); + arylstEnab.add("handicappedFlag"); + arylstEnab.add("healthRecord"); + arylstEnab.add("bloodGroup"); + arylstEnab.add("appliedEarlier"); + arylstEnab.add("mail"); + arylstEnab.add("butReservationCategory"); + arylstEnab.add("prevEmpFlag"); + arylstEnab.add("prevEmpDtls"); + arylstEnab.add("hobbies"); + arylstEnab.add("grossExpected"); + arylstEnab.add("addlInfo"); + arylstEnab.add("butPresCountry"); + arylstEnab.add("butPresState"); + arylstEnab.add("presCity"); + arylstEnab.add("presAddress"); + arylstEnab.add("presPin"); + arylstEnab.add("presPhone"); + arylstEnab.add("butPermCountry"); + arylstEnab.add("butPermState"); + arylstEnab.add("permAddress"); + arylstEnab.add("permCity"); + arylstEnab.add("permAddress"); + arylstEnab.add("permPin"); + arylstEnab.add("permPhone"); + arylstEnab.add("passportNo"); + arylstEnab.add("placeOfIssue"); + arylstEnab.add("butExpiryDate"); + arylstEnab.add("butIssueDate"); + arylstEnab.add("butSubmissionDate"); + arylstEnab.add("chequeNo"); + arylstEnab.add("submittedAmount"); + arylstEnab.add("submissionDate"); + arylstEnab.add("arrestedBefore"); + arylstEnab.add("imprisonedBefore"); + arylstEnab.add("reasons"); + arylstEnab.add("prosecutedBefore"); + arylstEnab.add("finedByCourt"); + } + } + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("applicationNo"); + arylstDisab.add("butApplicationNo"); + arylstDisab.add("butApplicationDate"); + arylstDisab.add("butReferenceNo"); + arylstEnab.add("applicantFirstName"); + arylstEnab.add("applicantMiddleName"); + arylstEnab.add("applicantLastName"); + arylstDisab.add("rollNo"); + arylstDisab.add("butApplForDesignation"); + if (oThisPageVO.getScreenName().equals("HrmRecApplnMtnAddDtl")) + if (oThisPageVO.getODetailList() != null) { + arylstEnab.add("guardianName"); + arylstEnab.add("butDateOfBirth"); + arylstEnab.add("placeOfBirth"); + arylstEnab.add("butNationality"); + arylstEnab.add("butMaritalStatus"); + arylstEnab.add("sex"); + arylstEnab.add("relatedToEmp"); + arylstEnab.add("butMotherTongue"); + arylstEnab.add("butRelatedEmp"); + arylstEnab.add("butReligion"); + arylstEnab.add("handicappedFlag"); + arylstEnab.add("healthRecord"); + arylstEnab.add("bloodGroup"); + arylstEnab.add("appliedEarlier"); + arylstEnab.add("mail"); + arylstEnab.add("butReservationCategory"); + arylstEnab.add("prevEmpFlag"); + arylstEnab.add("prevEmpDtls"); + arylstEnab.add("hobbies"); + arylstEnab.add("grossExpected"); + arylstEnab.add("addlInfo"); + arylstEnab.add("butPresCountry"); + arylstEnab.add("butPresState"); + arylstEnab.add("presCity"); + arylstEnab.add("presAddress"); + arylstEnab.add("presPin"); + arylstEnab.add("presPhone"); + arylstEnab.add("butPermCountry"); + arylstEnab.add("butPermState"); + arylstEnab.add("permAddress"); + arylstEnab.add("permCity"); + arylstEnab.add("permAddress"); + arylstEnab.add("permPin"); + arylstEnab.add("permPhone"); + arylstEnab.add("passportNo"); + arylstEnab.add("placeOfIssue"); + arylstEnab.add("butExpiryDate"); + arylstEnab.add("butIssueDate"); + arylstEnab.add("butSubmissionDate"); + arylstEnab.add("chequeNo"); + arylstEnab.add("submittedAmount"); + arylstEnab.add("submissionDate"); + arylstEnab.add("arrestedBefore"); + arylstEnab.add("imprisonedBefore"); + arylstEnab.add("reasons"); + arylstEnab.add("prosecutedBefore"); + arylstEnab.add("finedByCourt"); + } else { + arylstDisab.add("guardianName"); + arylstDisab.add("butDateOfBirth"); + arylstDisab.add("placeOfBirth"); + arylstDisab.add("butNationality"); + arylstDisab.add("butMaritalStatus"); + arylstDisab.add("sex"); + arylstDisab.add("relatedToEmp"); + arylstDisab.add("butMotherTongue"); + arylstDisab.add("butRelatedEmp"); + arylstDisab.add("butReligion"); + arylstDisab.add("handicappedFlag"); + arylstDisab.add("healthRecord"); + arylstDisab.add("bloodGroup"); + arylstDisab.add("appliedEarlier"); + arylstDisab.add("mail"); + arylstDisab.add("butReservationCategory"); + arylstDisab.add("prevEmpFlag"); + arylstDisab.add("prevEmpDtls"); + arylstDisab.add("hobbies"); + arylstDisab.add("grossExpected"); + arylstDisab.add("addlInfo"); + arylstDisab.add("butPresCountry"); + arylstDisab.add("butPresState"); + arylstDisab.add("presCity"); + arylstDisab.add("presAddress"); + arylstDisab.add("presPin"); + arylstDisab.add("presPhone"); + arylstDisab.add("butPermCountry"); + arylstDisab.add("butPermState"); + arylstDisab.add("permAddress"); + arylstDisab.add("permCity"); + arylstDisab.add("permAddress"); + arylstDisab.add("permPin"); + arylstDisab.add("permPhone"); + arylstDisab.add("passportNo"); + arylstDisab.add("placeOfIssue"); + arylstDisab.add("butExpiryDate"); + arylstDisab.add("butIssueDate"); + arylstDisab.add("butSubmissionDate"); + arylstDisab.add("chequeNo"); + arylstDisab.add("submittedAmount"); + arylstDisab.add("submissionDate"); + arylstDisab.add("arrestedBefore"); + arylstDisab.add("imprisonedBefore"); + arylstDisab.add("reasons"); + arylstDisab.add("prosecutedBefore"); + arylstDisab.add("finedByCourt"); + } + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java new file mode 100644 index 0000000..8e0decc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecEmpRecCreationBD.java @@ -0,0 +1,147 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; + +public class HrmRecEmpRecCreationBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpRecCrtnHdrMetaInfo((HrmRecEmpRecCreationQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpRecCrtnHeaderInfo((HrmRecEmpRecCreationQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveData((HrmRecEmpRecCreationHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmRecEmpRecCreationHdrBean oHrmRecEmpRecCreationHdrBean = (HrmRecEmpRecCreationHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstEnableList.add("butApplicationNo"); + arylstDisableList.add("butCountryOfficeAddress"); + arylstDisableList.add("butStateOfficeAddress"); + arylstDisableList.add("butAppointmentOrderDate"); + arylstDisableList.add("butCompanyJoiningDate"); + arylstDisableList.add("butLocationJoiningDate"); + arylstDisableList.add("butTentativeConfirmDate"); + arylstDisableList.add("butBaseSite"); + arylstDisableList.add("butGrade"); + arylstDisableList.add("butDesignation"); + arylstDisableList.add("butJoiningGroup"); + arylstDisableList.add("officeAddress"); + arylstDisableList.add("cityOfficeAddress"); + arylstDisableList.add("pinCodeOfficeAddress"); + arylstDisableList.add("appointmentOrder"); + arylstDisableList.add("phoneOfficeAddress"); + arylstDisableList.add("employeeType"); + } + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisableList.add("butApplicationNo"); + arylstEnableList.add("butCountryOfficeAddress"); + arylstEnableList.add("butStateOfficeAddress"); + arylstEnableList.add("butAppointmentOrderDate"); + arylstEnableList.add("butCompanyJoiningDate"); + arylstEnableList.add("butLocationJoiningDate"); + arylstEnableList.add("butTentativeConfirmDate"); + arylstEnableList.add("butBaseSite"); + arylstEnableList.add("butGrade"); + arylstEnableList.add("butDesignation"); + arylstEnableList.add("butJoiningGroup"); + arylstEnableList.add("officeAddress"); + arylstEnableList.add("cityOfficeAddress"); + arylstEnableList.add("pinCodeOfficeAddress"); + arylstEnableList.add("appointmentOrder"); + arylstEnableList.add("phoneOfficeAddress"); + arylstEnableList.add("employeeType"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisableList.add("butApplicationNo"); + arylstDisableList.add("butCountryOfficeAddress"); + arylstDisableList.add("butStateOfficeAddress"); + arylstDisableList.add("butAppointmentOrderDate"); + arylstDisableList.add("butCompanyJoiningDate"); + arylstDisableList.add("butLocationJoiningDate"); + arylstDisableList.add("butTentativeConfirmDate"); + arylstDisableList.add("butBaseSite"); + arylstDisableList.add("butGrade"); + arylstDisableList.add("butDesignation"); + arylstDisableList.add("butJoiningGroup"); + arylstDisableList.add("officeAddress"); + arylstDisableList.add("cityOfficeAddress"); + arylstDisableList.add("pinCodeOfficeAddress"); + arylstDisableList.add("appointmentOrder"); + arylstDisableList.add("phoneOfficeAddress"); + arylstDisableList.add("employeeType"); + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java new file mode 100644 index 0000000..8feb9ba --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecScrutAppMntBD.java @@ -0,0 +1,97 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; + +public class HrmRecScrutAppMntBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return new RecordMetaInfo(); + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = new RecordMetaInfo(); + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new ArrayList(); + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.saveHrmRecScrutAppDtl(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + int sCount = 0; + ArrayList oDetailList = new ArrayList(); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + oDisableList.add("butExecute"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oBaseQueryVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmScrutAppMntnDetailMetaInfo((HrmRecScrutAppMntQVO)oBaseQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oBaseQueryVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacade oHrmSecondFacade = (HrmSecondFacade)getModuleFacade("SecHRMS"); + return oHrmSecondFacade.getHrmScrutAppMntnDetailInfo((HrmRecScrutAppMntQVO)oBaseQueryVO, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java new file mode 100644 index 0000000..4db0ebc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRecTestCentreMstBD.java @@ -0,0 +1,116 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; + +public class HrmRecTestCentreMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTCMstHeaderMetaInfo((HrmRecTestCentreMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTCMstHeader((HrmRecTestCentreMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTCMst((HrmRecTestCentreMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oList = oThisPageVO.getODetailList(); + int sCount = 0; + ArrayList oDetailList = new ArrayList(); + oDisableList.add("butInsert"); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butInsert"); + oDisableList.add("butSave"); + oDisableList.add("testCentreCode"); + oDisableList.add("testCentreName"); + oDisableList.add("phone"); + oDisableList.add("fax"); + oDisableList.add("address"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butExecute"); + oDisableList.add("butQuery"); + oEnableList.add("butInsert"); + oEnableList.add("butSave"); + oDisableList.add("testCentreCode"); + oDisableList.add("testCentreName"); + oDisableList.add("butTestCentreCode"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oEnableList.add("butExecute"); + oEnableList.add("butQuery"); + oDisableList.add("butTestCentreCode"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java new file mode 100644 index 0000000..88b3c55 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRetireForecastBD.java @@ -0,0 +1,118 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRetireForecastHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmRetireForecastQVO; + +public class HrmRetireForecastBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.procGetRetireDataCount((HrmRetireForecastQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.procGetRetireDataInfo((HrmRetireForecastQVO)oQueryVO, lStartPosition, lLastPosition); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(BaseQueryVO oQVO, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public ArrayList getDetailRecordImpl(BaseQueryVO oQVO, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmRetireForecastData(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmRetireForecastHdrBean oHrmRetireForecastHdrBean = (HrmRetireForecastHdrBean)oThisPageVO.getOHeaderBean(); + oEnableList.add("butQuery"); + oDisableList.add("butSave"); + oDisableList.add("butExecute"); + oDisableList.add("butInsert"); + oDisableList.add("butHelp"); + if (!EnrgiseUtil.checkString(oHrmRetireForecastHdrBean.getFlag1())); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oEnableList.add("butInsertData"); + oDisableList.add("butViewReport"); + } else { + oDisableList.add("butInsertData"); + oEnableList.add("butViewReport"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.InsertData(oBaseHeaderBean); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java new file mode 100644 index 0000000..9e4fcd8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmRoasterEntryBD.java @@ -0,0 +1,130 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; + +public class HrmRoasterEntryBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmRoasterHdrMetaInfo((HrmRoasterEntryQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmRoasterHdrInfo((HrmRoasterEntryQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRoasterEntry")) + return oHrmSecondFacade.getHrmRoasterEntryDetailMetaInfo(lPrimaryKey); + RecordMetaInfo obj = new RecordMetaInfo(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRoasterEntry")) + return oHrmSecondFacade.getHrmRoasterEntryDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + ArrayList obj = new ArrayList(); + return obj; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean checkHeaderTimestampImpl(String lHeaderPrimaryKey, Timestamp oWhenPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean validateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public boolean insertHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + oWhenPicked = oDetailPicked; + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sScreenName.equalsIgnoreCase("HrmRoasterEntry")) + return oHrmSecondFacade.saveRoasterHdr((HrmRoasterEntryHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + return null; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + BaseHeaderBean oBaseHeaderBean = oThisPageVO.getOHeaderBean(); + HrmRoasterEntryHdrBean oHrmRoasterEntryHdrBean = (HrmRoasterEntryHdrBean)oBaseHeaderBean; + if (!oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("txtRoasterDescription"); + oDisableList.add("txtRoasterCode"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java new file mode 100644 index 0000000..72d621f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepApplnBD.java @@ -0,0 +1,148 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepApplnQVO; + +public class HrmSepApplnBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepApplnHdrMetaInfo((HrmSepApplnQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepApplnHeaderInfo((HrmSepApplnQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepApplnDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepApplnDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepAppln((HrmSepApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmSepApplnHdrBean oHrmSepApplnHdrBean = (HrmSepApplnHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butDateApplied"); + oDisableList.add("initiatedBy"); + oDisableList.add("butSepCat"); + oDisableList.add("butReqSepDate"); + oDisableList.add("imEffect"); + oDisableList.add("withFlag"); + oDisableList.add("reason"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butDateApplied"); + oDisableList.add("initiatedBy"); + oDisableList.add("butSepCat"); + oDisableList.add("butReqSepDate"); + oDisableList.add("butApplicationNo"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("employeeNo"); + oDisableList.add("withFlag"); + oDisableList.add("reason"); + oDisableList.add("imEffect"); + oDisableList.add("applicationNo"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) { + oDisableList.add("butApplicationNo"); + if (EnrgiseUtil.checkString(oHrmSepApplnHdrBean.getInitiatedBy())) { + oEnableList.add("butSepCat"); + } else { + oDisableList.add("butSepCat"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmFacade.approveSepAppln((HrmSepApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmFacade.rejectSepAppln((HrmSepApplnHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java new file mode 100644 index 0000000..7ffff18 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepCatMstBD.java @@ -0,0 +1,84 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepCatMstQVO; + +public class HrmSepCatMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepCatMasterHdrMetaInfo((HrmSepCatMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepCatMasterHeaderInfo((HrmSepCatMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepCat((HrmSepCatMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java new file mode 100644 index 0000000..f65bce9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrEmpBD.java @@ -0,0 +1,124 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; + +public class HrmSepClrEmpBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrEmpHdrMetaInfo((HrmSepClrEmpQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepClrEmpHdr((HrmSepClrEmpQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrEmpDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrEmpDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmSepClrEmpHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelRow"); + arylstDisab.add("butDelete"); + HrmSepClrEmpHdrBean oHdrBean = (HrmSepClrEmpHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("Q")) + arylstDisab.add("butTmplDesc"); + if (oThisPageVO.getScreenMode().equals("N")) { + if (oHdrBean.getEmpNo() == null) { + arylstDisab.add("butTmplDesc"); + } else { + arylstEnab.add("butTmplDesc"); + } + if (oHdrBean.getTmplDesc() != null) { + arylstDisab.add("butEmpNo"); + } else { + arylstEnab.add("butEmpNo"); + } + } + if (oThisPageVO.getScreenMode().equals("U")) { + arylstDisab.add("butTmplDesc"); + arylstDisab.add("butEmpNo"); + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java new file mode 100644 index 0000000..93c1525 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrLstBD.java @@ -0,0 +1,100 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; + +public class HrmSepClrLstBD extends HrmBaseBD { + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrLstDtlMetaInfo(); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrLstDetailInfo(lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepClrLstDetail(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + oEnableList.add("butGetDetail"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } + if (oThisPageVO.getScreenMode().equals("U") && oThisPageVO.getODetailList().size() == 0) { + oEnableList.add("butGetDetail"); + oDisableList.add("butAddRow"); + oDisableList.add("butDelRow"); + } else if (oThisPageVO.getScreenMode().equals("U") && oThisPageVO.getODetailList().size() > 0) { + oDisableList.add("butGetDetail"); + oEnableList.add("butAddRow"); + oEnableList.add("butDelRow"); + oEnableList.add("butSave"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java new file mode 100644 index 0000000..44695c8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepClrTmplMstBD.java @@ -0,0 +1,98 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; + +public class HrmSepClrTmplMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrTmplMstHdrMetaInfo((HrmSepClrTmplMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepClrTmplMstHdr((HrmSepClrTmplMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrTmplMstDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepClrTmplMstDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveData((HrmSepClrTmplMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java new file mode 100644 index 0000000..c91ed40 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSepOrderBD.java @@ -0,0 +1,131 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmSepOrderDtlBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSepOrderQVO; + +public class HrmSepOrderBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepOrderHdrMetaInfo((HrmSepOrderQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmSepOrderHdr((HrmSepOrderQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepOrderDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmSepOrderDtl(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSepOrder((HrmSepOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmSepOrderHdrBean oHrmSepOrderHdrBean = (HrmSepOrderHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) { + oDisableList.add("butApprovedBy"); + oDisableList.add("remarks"); + oDisableList.add("butActSepDate"); + } + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + oDisableList.add("butActSepDate"); + oDisableList.add("butApprovedBy"); + oDisableList.add("butApplicationNo"); + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + Iterator itrBean1 = oDetailBeanArray.iterator(); + HrmSepOrderDtlBean oHrmSepOrderDtlBean = null; + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmFacade.approveSepOrder((HrmSepOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmFacade.rejectSepOrder((HrmSepOrderHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSettleBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSettleBD.java new file mode 100644 index 0000000..8dad1b2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmSettleBD.java @@ -0,0 +1,95 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.vo.HrmSettleQueryVO; + +public class HrmSettleBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSetHdrMetaInfo((HrmSettleQueryVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + ArrayList oHeaderList = oHrmFacade.getHrmAdvSetHeaderInfo((HrmSettleQueryVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.saveHrmSettleDetail(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSetDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getHrmAdvSetDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + return null; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java new file mode 100644 index 0000000..2dfd10e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalBD.java @@ -0,0 +1,98 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCalQVO; + +public class HrmTrngCalBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalHeaderMetaInfo((HrmTrngCalQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCalHeader((HrmTrngCalQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngCal((HrmTrngCalHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java new file mode 100644 index 0000000..be66525 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCalCloseBD.java @@ -0,0 +1,107 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCalQVO; + +public class HrmTrngCalCloseBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalHeaderMetaInfo((HrmTrngCalQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCalHeader((HrmTrngCalQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + oDisableList.add("butHelp"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return null; + } + + public void calClose(String sButtonName, String sCalId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + if (sButtonName.equals("CalClose")) + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + oHrmSecondFacade.calendarClose(sCalId); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java new file mode 100644 index 0000000..dea1b31 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsBudBD.java @@ -0,0 +1,110 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; + +public class HrmTrngCrsBudBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsBudHeaderMetaInfo((HrmTrngCrsBudQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCrsBudHeader((HrmTrngCrsBudQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsBudDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsBudDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngCrsBud((HrmTrngCrsBudHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmTrngCrsBudHdrBean oHrmTrngCrsBudHdrBean = (HrmTrngCrsBudHdrBean)oThisPageVO.getOHeaderBean(); + oDisableList.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("Q")) + oDisableList.add("approvedBudget"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) + oEnableList.add("approvedBudget"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("N")) + oEnableList.add("approvedBudget"); + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java new file mode 100644 index 0000000..24eaf74 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngCrsMstBD.java @@ -0,0 +1,98 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; + +public class HrmTrngCrsMstBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsHeaderMetaInfo((HrmTrngCrsMstQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngCrsHeader((HrmTrngCrsMstQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngCrsDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngcrsDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngCrs((HrmTrngCrsMstHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java new file mode 100644 index 0000000..1f8ecf2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpAttBD.java @@ -0,0 +1,118 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpAttDtlBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; + +public class HrmTrngEmpAttBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpAttHeaderMetaInfo((HrmTrngEmpAttQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngEmpAttHeader((HrmTrngEmpAttQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpAttDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpAttDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngEmpAtt((HrmTrngEmpAttHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oMap = new HashMap(); + ArrayList arylstDisbledFields = new ArrayList(); + ArrayList arylstEnabledFields = new ArrayList(); + arylstDisbledFields.add("butInsert"); + arylstDisbledFields.add("butAddRow"); + if (oThisPageVO.getODetailList() != null) { + Iterator oIt = oThisPageVO.getODetailList().iterator(); + while (oIt.hasNext()) { + HrmTrngEmpAttDtlBean oDtlBean = oIt.next(); + if (oDtlBean.getTxtAttendance().equals("Y")) { + oDtlBean.setDisabtxtReasonForAbsence("true"); + oDtlBean.setTxtReasonForAbsence(""); + continue; + } + oDtlBean.setDisabtxtReasonForAbsence("false"); + } + } + oMap.put("D", arylstDisbledFields); + oMap.put("E", arylstEnabledFields); + return oMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java new file mode 100644 index 0000000..be6f30f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpFeedBackBD.java @@ -0,0 +1,124 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpFeedBackHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; + +public class HrmTrngEmpFeedBackBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpFbkHeaderMetaInfo((HrmTrngEmpFbkQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngEmpFbkHeader((HrmTrngEmpFbkQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpFdBkDtlMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpFdBkDetailInfo(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmEmpFeedback(oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnableList = new ArrayList(); + ArrayList arylstDisableList = new ArrayList(); + HrmTrngEmpFeedBackHdrBean oHrmTrngEmpFeedBackHdrBean = (HrmTrngEmpFeedBackHdrBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (!oHrmTrngEmpFeedBackHdrBean.equals(null)) + if (EnrgiseUtil.checkString(oHrmTrngEmpFeedBackHdrBean.getStatusFlag())) { + System.out.println(oHrmTrngEmpFeedBackHdrBean.getStatusFlag()); + if (oHrmTrngEmpFeedBackHdrBean.getStatusFlag().equalsIgnoreCase("C")) { + arylstDisableList.add("txtCourseObjective"); + arylstDisableList.add("txtCourseDuration"); + arylstDisableList.add("txtCourseMaterial"); + arylstDisableList.add("txtSkillArea"); + arylstDisableList.add("txtInteraction"); + arylstDisableList.add("txtPresentation"); + arylstDisableList.add("txtDeliveryClarity"); + arylstDisableList.add("txtTrainingAids"); + arylstDisableList.add("txtTrainingArrangements"); + arylstDisableList.add("txtOverallRating"); + arylstDisableList.add("txtTopicsRelevant"); + arylstDisableList.add("txtTopicsIrrelevant"); + arylstDisableList.add("txtSuggestions"); + } + } + oHashMap.put("D", arylstDisableList); + oHashMap.put("E", arylstEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java new file mode 100644 index 0000000..b305880 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpHistBD.java @@ -0,0 +1,107 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpHistHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; + +public class HrmTrngEmpHistBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpHistHeaderMetaInfo((HrmTrngEmpHistQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngEmpHistHeader((HrmTrngEmpHistQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpHistDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngEmpHistDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "no Save"; + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oMap = new HashMap(); + ArrayList arylstDisbledFields = new ArrayList(); + ArrayList arylstEnabledFields = new ArrayList(); + arylstDisbledFields.add("butInsert"); + HrmTrngEmpHistHdrBean oHrmTrngEmpHistHdrBean = (HrmTrngEmpHistHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("Q")) + if (!EnrgiseUtil.checkString(oHrmTrngEmpHistHdrBean.getCalendarName())) { + arylstDisbledFields.add("butCourse"); + arylstDisbledFields.add("butEmpNo"); + } else { + arylstEnabledFields.add("butCourse"); + arylstEnabledFields.add("butEmpNo"); + } + oMap.put("D", arylstDisbledFields); + oMap.put("E", arylstEnabledFields); + return oMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java new file mode 100644 index 0000000..bad7b8b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngEmpReqBD.java @@ -0,0 +1,276 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; + +public class HrmTrngEmpReqBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpTrngReqHeaderMetaInfo((HrmTrngEmpReqQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmEmpTrngReqHeader((HrmTrngEmpReqQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpReqDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmEmpReqDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oMap = new HashMap(); + ArrayList arylstDisbledFields = new ArrayList(); + ArrayList arylstEnabledFields = new ArrayList(); + String groupStatus = new String(); + arylstDisbledFields.add("butAddRow"); + arylstDisbledFields.add("butDelRow"); + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + String sUserTypeId = this.oUserInfo.getUserTypeId(); + groupStatus = oHrmSecondFacade.getGroupInformation(sUserTypeId); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRmtExcep) { + throw new EnrgiseSystemException(oRmtExcep); + } + if (EnrgiseUtil.checkString(groupStatus)) + if (groupStatus.equalsIgnoreCase("S")) { + arylstEnabledFields.add("butEmployeeName"); + } else { + arylstDisbledFields.add("butEmployeeName"); + } + if (oThisPageVO.getScreenMode().equals("Q")) { + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstEnabledFields.add("nature"); + arylstEnabledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstEnabledFields.add("fullPart"); + arylstEnabledFields.add("butRecommender"); + arylstEnabledFields.add("butStartDate"); + arylstEnabledFields.add("butEndDate"); + arylstEnabledFields.add("butCourseName"); + if (EnrgiseUtil.checkString(oHrmTrngEmpReqHdrBean.getCourseId())) { + arylstEnabledFields.add("butTrainingCalendar"); + } else { + arylstDisbledFields.add("butTrainingCalendar"); + } + arylstEnabledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstEnabledFields.add("participation"); + } else if (oThisPageVO.getScreenMode().equals("U")) { + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("N")) { + arylstEnabledFields.add("nature"); + arylstEnabledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstEnabledFields.add("fullPart"); + arylstEnabledFields.add("butRecommender"); + arylstEnabledFields.add("butStartDate"); + arylstEnabledFields.add("butEndDate"); + arylstEnabledFields.add("butTrainingCalendar"); + arylstEnabledFields.add("butCourseName"); + arylstEnabledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstEnabledFields.add("participation"); + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstEnabledFields.add("butGetDetail"); + if (oThisPageVO.getODetailList() != null) { + arylstEnabledFields.add("butSubmit"); + } else { + arylstDisbledFields.add("butSubmit"); + } + } + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("A")) { + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("nature"); + arylstDisbledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstDisbledFields.add("fullPart"); + arylstDisbledFields.add("butRecommender"); + arylstDisbledFields.add("butStartDate"); + arylstDisbledFields.add("butEndDate"); + arylstDisbledFields.add("butTrainingCalendar"); + arylstDisbledFields.add("butCourseName"); + arylstDisbledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstDisbledFields.add("participation"); + } + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("P")) { + arylstEnabledFields.add("butApprove"); + arylstEnabledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("nature"); + arylstDisbledFields.add("purpose"); + arylstDisbledFields.add("rejectionRemarks"); + arylstDisbledFields.add("fullPart"); + arylstDisbledFields.add("butRecommender"); + arylstDisbledFields.add("butStartDate"); + arylstDisbledFields.add("butEndDate"); + arylstDisbledFields.add("butTrainingCalendar"); + arylstDisbledFields.add("butCourseName"); + arylstDisbledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstDisbledFields.add("participation"); + } + if (oHrmTrngEmpReqHdrBean.getApprovalStatus().equalsIgnoreCase("R")) { + arylstDisbledFields.add("butApprove"); + arylstDisbledFields.add("butReject"); + arylstDisbledFields.add("butSubmit"); + arylstDisbledFields.add("nature"); + arylstDisbledFields.add("purpose"); + arylstEnabledFields.add("rejectionRemarks"); + arylstDisbledFields.add("fullPart"); + arylstDisbledFields.add("butRecommender"); + arylstDisbledFields.add("butStartDate"); + arylstDisbledFields.add("butEndDate"); + arylstDisbledFields.add("butTrainingCalendar"); + arylstDisbledFields.add("butCourseName"); + arylstDisbledFields.add("butDateSubmitted"); + arylstDisbledFields.add("date"); + arylstDisbledFields.add("participation"); + } + } + oMap.put("D", arylstDisbledFields); + oMap.put("E", arylstEnabledFields); + return oMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + String sHeaderPrimaryKey = null; + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + if (sButtonName.equalsIgnoreCase("butSubmit")) + sHeaderPrimaryKey = oHrmSecondFacade.submitEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butApprove")) + sHeaderPrimaryKey = oHrmSecondFacade.approveEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + if (sButtonName.equalsIgnoreCase("butReject")) + sHeaderPrimaryKey = oHrmSecondFacade.rejectEmpTrngReq((HrmTrngEmpReqHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + return sHeaderPrimaryKey; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public void onLoadAction(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + if (oThisPageVO.getActionName() == 10) { + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + oHrmTrngEmpReqHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmTrngEmpReqHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmTrngEmpReqHdrBean.setFirstName(oName[0]); + oHrmTrngEmpReqHdrBean.setMiddleName(oName[1]); + oHrmTrngEmpReqHdrBean.setLastName(oName[2]); + oHrmTrngEmpReqHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmTrngEmpReqHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmTrngEmpReqHdrBean.setLocation(this.oUserInfo.getSiteName()); + } + if (oThisPageVO.getActionName() == 13) { + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + oHrmTrngEmpReqHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmTrngEmpReqHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmTrngEmpReqHdrBean.setFirstName(oName[0]); + oHrmTrngEmpReqHdrBean.setMiddleName(oName[1]); + oHrmTrngEmpReqHdrBean.setLastName(oName[2]); + oHrmTrngEmpReqHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmTrngEmpReqHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmTrngEmpReqHdrBean.setLocation(this.oUserInfo.getSiteName()); + } else if (oThisPageVO.getActionName() == 19) { + HrmTrngEmpReqHdrBean oHrmTrngEmpReqHdrBean = (HrmTrngEmpReqHdrBean)oThisPageVO.getOHeaderBean(); + oHrmTrngEmpReqHdrBean.setEmpId(this.oUserInfo.getUserTypeId()); + oHrmTrngEmpReqHdrBean.setEmployeeNumber(this.oUserInfo.getUserId()); + String[] oName = this.oUserInfo.getUserName().split(" "); + oHrmTrngEmpReqHdrBean.setFirstName(oName[0]); + oHrmTrngEmpReqHdrBean.setMiddleName(oName[1]); + oHrmTrngEmpReqHdrBean.setLastName(oName[2]); + oHrmTrngEmpReqHdrBean.setGrade(this.oUserInfo.getGrade()); + oHrmTrngEmpReqHdrBean.setDesig(this.oUserInfo.getDesignation()); + oHrmTrngEmpReqHdrBean.setLocation(this.oUserInfo.getSiteName()); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java new file mode 100644 index 0000000..32b54a7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacBD.java @@ -0,0 +1,141 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngFacQVO; + +public class HrmTrngFacBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacHeaderMetaInfo((HrmTrngFacQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmFacHeader((HrmTrngFacQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + RecordMetaInfo oRecordMetaInfo = null; + return oRecordMetaInfo; + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + ArrayList oRet = null; + return oRet; + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmFacMast((HrmTrngFacBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked, this.oUserInfo); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + HrmTrngFacBean oHrmTrngFacBean = (HrmTrngFacBean)oThisPageVO.getOHeaderBean(); + ArrayList oDetailList = oThisPageVO.getODetailList(); + if (oThisPageVO.getScreenMode().equals("Q")) { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oDisableList.add("experience"); + } + if (oThisPageVO.getScreenMode().equals("N")) { + if (EnrgiseUtil.checkString(oHrmTrngFacBean.getFacultyType())) { + if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("I")) { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oEnableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oEnableList.add("experience"); + } else if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("E")) { + oEnableList.add("firstName"); + oEnableList.add("middleName"); + oEnableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oEnableList.add("butBaseInstitution"); + oEnableList.add("experience"); + } + } else { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oDisableList.add("experience"); + } + } else if (oThisPageVO.getScreenMode().equals("U")) { + if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("I")) { + oDisableList.add("firstName"); + oDisableList.add("middleName"); + oDisableList.add("lastName"); + oDisableList.add("butEmployeeNo"); + oDisableList.add("butBaseInstitution"); + oEnableList.add("experience"); + } else if (oHrmTrngFacBean.getFacultyType().equalsIgnoreCase("E")) { + oEnableList.add("firstName"); + oEnableList.add("middleName"); + oEnableList.add("lastName"); + oEnableList.add("experience"); + oDisableList.add("butEmployeeNo"); + oEnableList.add("butBaseInstitution"); + } + } + oHashMap.put("D", oDisableList); + oHashMap.put("E", oEnableList); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java new file mode 100644 index 0000000..a62106c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngFacTrngBD.java @@ -0,0 +1,128 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngFacTrngDtlBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; + +public class HrmTrngFacTrngBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacTrngHeaderMetaInfo((HrmTrngFacTrngQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmFacTrngHeader((HrmTrngFacTrngQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacTrngDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmFacTrngCalDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmFacTrng((HrmTrngFacTrngHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstDisab = new ArrayList(); + ArrayList arylstDtlList = new ArrayList(); + arylstDisab.add("butDelete"); + if (oThisPageVO.getScreenMode().equalsIgnoreCase("U")) { + HrmTrngFacTrngHdrBean oHdrBean = (HrmTrngFacTrngHdrBean)oThisPageVO.getOHeaderBean(); + if (oHdrBean.getCourseStatus().equalsIgnoreCase("C")) { + arylstDtlList = oThisPageVO.getODetailList(); + if (arylstDtlList != null) { + Iterator itrDtlList = arylstDtlList.iterator(); + while (itrDtlList.hasNext()) { + HrmTrngFacTrngDtlBean oDtlBean = itrDtlList.next(); + oDtlBean.setDisabtxtAverageRating("true"); + oDtlBean.setDisabbutTxtFromDate("true"); + oDtlBean.setDisabbutTxtToDate("true"); + oDtlBean.setDisabtxtEndTime("true"); + oDtlBean.setDisabtxtFromDate("true"); + oDtlBean.setDisabtxtNameOfFaculty("true"); + oDtlBean.setDisabbutFaculty("true"); + oDtlBean.setDisabtxtStartTime("true"); + oDtlBean.setDisabtxtToDate("true"); + oDtlBean.setDisabtxtSkillArea("true"); + } + } + arylstDisab.add("butAddRow"); + arylstDisab.add("butDelRow"); + } + } + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java new file mode 100644 index 0000000..438d8df --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/businessdelegate/HrmTrngInsCrsBD.java @@ -0,0 +1,108 @@ +package WEB-INF.classes.wenrgise.hrms.businessdelegate; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javax.ejb.CreateException; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.ejb.common.utility.ServiceLocator; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.businessdelegate.HrmBaseBD; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public class HrmTrngInsCrsBD extends HrmBaseBD { + public RecordMetaInfo getHeaderMetaImpl(BaseQueryVO oQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngInsCrsHeaderMetaInfo((HrmTrngInsCrsQVO)oQueryVO); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getHeaderRecordImpl(BaseQueryVO oQueryVO, long lStartPosition, long lLastPosition) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + ArrayList oHeaderList = oHrmSecondFacade.getHrmTrngInsCrsHeader((HrmTrngInsCrsQVO)oQueryVO, lStartPosition, lLastPosition); + return oHeaderList; + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public RecordMetaInfo getTotalDetailRecordCountImpl(String lPrimaryKey, String sScreenName) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngInsCrsDetailMetaInfo(lPrimaryKey); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public ArrayList getDetailRecordImpl(String lPrimaryKey, String sScreenName, long lAbsoluteStart, long lAbsoluteEnd) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.getHrmTrngInsCrsDetail(lPrimaryKey, lAbsoluteStart, lAbsoluteEnd); + } catch (RemoteException oRe) { + throw new EnrgiseSystemException(oRe); + } catch (CreateException oCrt) { + throw new EnrgiseSystemException(oCrt); + } + } + + public boolean updateHeaderRecordImpl(BaseHeaderBean oBaseHeaderBean) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return true; + } + + public String saveImpl(BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmSecondFacadeHome oHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oHrmSecondFacade = oHome.create(); + return oHrmSecondFacade.saveHrmTrngInsCrs((HrmTrngInsCrsHdrBean)oBaseHeaderBean, oWhenPicked, sScreenName, sScreenMode, bHeaderDataChanged, oDetailBeanArray, bDetailDataChanged, oDetailPicked); + } catch (CreateException oCrtExcep) { + throw new EnrgiseSystemException(oCrtExcep); + } + } + + public String getInsertDataImpl(BaseQueryVO oQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return "Only Implementation"; + } + + public Map getDisabledFieldsImpl(ThisPageVO oThisPageVO) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oHashMap = new HashMap(); + ArrayList arylstEnab = new ArrayList(); + ArrayList arylstDisab = new ArrayList(); + HrmTrngInsCrsHdrBean oHdrBean = (HrmTrngInsCrsHdrBean)oThisPageVO.getOHeaderBean(); + if (oThisPageVO.getScreenMode().equals("U") || oThisPageVO.getScreenMode().equals("N")) { + arylstEnab.add("city"); + } else { + arylstDisab.add("city"); + } + oHashMap.put("E", arylstEnab); + oHashMap.put("D", arylstDisab); + return oHashMap; + } + + public String submitImpl(String sButtonName, BaseHeaderBean oBaseHeaderBean, Timestamp oWhenPicked, String sScreenName, String sScreenMode, boolean bHeaderDataChanged, ArrayList oDetailBeanArray, boolean bDetailDataChanged, Timestamp oDetailPicked) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + return new String(""); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacade.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacade.java new file mode 100644 index 0000000..8a5f31f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacade.java @@ -0,0 +1,730 @@ +package WEB-INF.classes.wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdvSettleHdrBean; +import wenrgise.hrms.bean.HrmAdvanceMstHdrBean; +import wenrgise.hrms.bean.HrmClaimMstHdrBean; +import wenrgise.hrms.bean.HrmEmpAdvAppHdrBean; +import wenrgise.hrms.bean.HrmEmpDepHdrBean; +import wenrgise.hrms.bean.HrmEmpDiscActionHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmLnAppHdrBean; +import wenrgise.hrms.bean.HrmLnChartHdrBean; +import wenrgise.hrms.bean.HrmLnMstHdrBean; +import wenrgise.hrms.bean.HrmLvCreditHdrBean; +import wenrgise.hrms.bean.HrmMediclaimMasterHdrBean; +import wenrgise.hrms.bean.HrmMisReportHdrBean; +import wenrgise.hrms.bean.HrmOrgCalMstHdrBean; +import wenrgise.hrms.bean.HrmOrgClassHdrBean; +import wenrgise.hrms.bean.HrmOrgCntryMstHdrBean; +import wenrgise.hrms.bean.HrmOrgHolCalHdrBean; +import wenrgise.hrms.bean.HrmOrgHolTypeMstHdrBean; +import wenrgise.hrms.bean.HrmOrgIncrementHdrBean; +import wenrgise.hrms.bean.HrmOrgRatingMstHdrBean; +import wenrgise.hrms.bean.HrmOrgScaleMstHdrBean; +import wenrgise.hrms.bean.HrmOrgSkillMstHdrBean; +import wenrgise.hrms.bean.HrmOrgWorkGroupMstHdrBean; +import wenrgise.hrms.bean.HrmSepApplnHdrBean; +import wenrgise.hrms.bean.HrmSepCatMstHdrBean; +import wenrgise.hrms.bean.HrmSepClrEmpHdrBean; +import wenrgise.hrms.bean.HrmSepClrTmplMstHdrBean; +import wenrgise.hrms.bean.HrmSepOrderHdrBean; +import wenrgise.hrms.vo.HrmAdvMstQueryVO; +import wenrgise.hrms.vo.HrmAdvSettleHeadsQVO; +import wenrgise.hrms.vo.HrmAdvSettleQVO; +import wenrgise.hrms.vo.HrmClaimMstQVO; +import wenrgise.hrms.vo.HrmEmpAdvAppQueryVO; +import wenrgise.hrms.vo.HrmEmpClaimQVO; +import wenrgise.hrms.vo.HrmEmpDepDtlQVO; +import wenrgise.hrms.vo.HrmEmpDiscActionQVO; +import wenrgise.hrms.vo.HrmEmpPersQVO; +import wenrgise.hrms.vo.HrmLnAppQVO; +import wenrgise.hrms.vo.HrmLnChartQVO; +import wenrgise.hrms.vo.HrmLnMstQVO; +import wenrgise.hrms.vo.HrmMediclaimMasterQVO; +import wenrgise.hrms.vo.HrmMisreportQVO; +import wenrgise.hrms.vo.HrmMyWorkflowQVO; +import wenrgise.hrms.vo.HrmOrgCalMstQVO; +import wenrgise.hrms.vo.HrmOrgClassDtlQVO; +import wenrgise.hrms.vo.HrmOrgCntryMstQVO; +import wenrgise.hrms.vo.HrmOrgHolCalQVO; +import wenrgise.hrms.vo.HrmOrgHolTypeMstQVO; +import wenrgise.hrms.vo.HrmOrgIncrementQVO; +import wenrgise.hrms.vo.HrmOrgRatingMstQVO; +import wenrgise.hrms.vo.HrmOrgScaleMstQVO; +import wenrgise.hrms.vo.HrmOrgSkillMstQVO; +import wenrgise.hrms.vo.HrmOrgWorkGroupMstQVO; +import wenrgise.hrms.vo.HrmRetireForecastQVO; +import wenrgise.hrms.vo.HrmSepApplnQVO; +import wenrgise.hrms.vo.HrmSepCatMstQVO; +import wenrgise.hrms.vo.HrmSepClrEmpQVO; +import wenrgise.hrms.vo.HrmSepClrTmplMstQVO; +import wenrgise.hrms.vo.HrmSepOrderQVO; +import wenrgise.hrms.vo.HrmSettleQueryVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public interface HrmFacade extends EJBObject { + UserInfo getLoginUserInfo(String paramString1, String paramString2) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + WflWorkListInfoBean getWorkListInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCalHeaderMetaInfo(HrmOrgCalMstQVO paramHrmOrgCalMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCalHeader(HrmOrgCalMstQVO paramHrmOrgCalMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCalDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getHrmCalStartDate(String paramString1, String paramString2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmCalendar(HrmOrgCalMstHdrBean paramHrmOrgCalMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClassHeaderMetaInfo(HrmOrgClassDtlQVO paramHrmOrgClassDtlQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClassHeader(HrmOrgClassDtlQVO paramHrmOrgClassDtlQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClassDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClassDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmOrgClassDtl(HrmOrgClassHdrBean paramHrmOrgClassHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String creditLeaves(HrmLvCreditHdrBean paramHrmLvCreditHdrBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolCalHeaderMetaInfo(HrmOrgHolCalQVO paramHrmOrgHolCalQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolCalHeader(HrmOrgHolCalQVO paramHrmOrgHolCalQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolCalDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmHolCal(HrmOrgHolCalHdrBean paramHrmOrgHolCalHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmHolTypeHeaderMetaInfo(HrmOrgHolTypeMstQVO paramHrmOrgHolTypeMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmHolTypeHeader(HrmOrgHolTypeMstQVO paramHrmOrgHolTypeMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHolidayType(HrmOrgHolTypeMstHdrBean paramHrmOrgHolTypeMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSkillHeaderMetaInfo(HrmOrgSkillMstQVO paramHrmOrgSkillMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSkillHeader(HrmOrgSkillMstQVO paramHrmOrgSkillMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSkillDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSkillDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSkill(HrmOrgSkillMstHdrBean paramHrmOrgSkillMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScaleHeaderMetaInfo(HrmOrgScaleMstQVO paramHrmOrgScaleMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScaleHeader(HrmOrgScaleMstQVO paramHrmOrgScaleMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScaleDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScaleDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmScaleMst(HrmOrgScaleMstHdrBean paramHrmOrgScaleMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmScaleMstScaleCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmOrgScaleGradeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRelDetailMetaInfo(String paramString) throws RemoteException, CreateException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmReligionDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmReligion(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmOrgWorkGroupMstHeaderMetaInfo(HrmOrgWorkGroupMstQVO paramHrmOrgWorkGroupMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmOrgWorkGroupMstHeader(HrmOrgWorkGroupMstQVO paramHrmOrgWorkGroupMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmOrgWorkGroupMst(HrmOrgWorkGroupMstHdrBean paramHrmOrgWorkGroupMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRatingHeaderMetaInfo(HrmOrgRatingMstQVO paramHrmOrgRatingMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRatingHeader(HrmOrgRatingMstQVO paramHrmOrgRatingMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRatingDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRatingDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRating(HrmOrgRatingMstHdrBean paramHrmOrgRatingMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCountryHeaderMetaInfo(HrmOrgCntryMstQVO paramHrmOrgCntryMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCountryHeader(HrmOrgCntryMstQVO paramHrmOrgCntryMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmCountryDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCountryDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmCountry(HrmOrgCntryMstHdrBean paramHrmOrgCntryMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmQualificationDetailMetaInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmQualificationDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmQualification(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLanguageDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLanguage(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLanguageDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRelationDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRelationDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRelation(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDistrictDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmDistrict(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDistrictDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTehsilDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTehsil(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTehsilDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalendarTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassDtlLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClassTypeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmHolidayTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSkillCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRatingCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCountryCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkGroupCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCostCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmBudgetCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmWorkParentCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmContactEmployeeNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmIncrHdrMetaInfo(HrmOrgIncrementQVO paramHrmOrgIncrementQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmIncrHeaderInfo(HrmOrgIncrementQVO paramHrmOrgIncrementQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmIncrDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmIncrDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmIncrement(HrmOrgIncrementHdrBean paramHrmOrgIncrementHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getIncrRatingLOVNData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getIncrRatingLOVQData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmStateCodeInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmStateCodeQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDepDtlHdrMetaInfo(HrmEmpDepDtlQVO paramHrmEmpDepDtlQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDepDtlHdrInfo(HrmEmpDepDtlQVO paramHrmEmpDepDtlQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDepDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDepDtlInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpDepDtl(HrmEmpDepHdrBean paramHrmEmpDepHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDiscActionHdrMetaInfo(HrmEmpDiscActionQVO paramHrmEmpDiscActionQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDiscActionHdrInfo(HrmEmpDiscActionQVO paramHrmEmpDiscActionQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDiscActionMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDiscActionInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpDiscAction(HrmEmpDiscActionHdrBean paramHrmEmpDiscActionHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDiscActionSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersHdrMetaInfo(HrmEmpPersQVO paramHrmEmpPersQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersHdrInfo(HrmEmpPersQVO paramHrmEmpPersQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAddDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPersAddDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersAddDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersJoinInfMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersJoinInfInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersJoinInf(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersEduDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersEduDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersEduDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersPriorExpMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersPriorExpInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersPriorExp(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersPFDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersPFDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersPFDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersEmpHistMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersEmpHistInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersEmpHist(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersTrngDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersTrngDtlsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersTrngDtls(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAwardMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersAwardInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersAward(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersInsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersInsInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersIns(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersHealthMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersHealthInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersHealth(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersLngMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersLngInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersLng(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersRefMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersRefInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersRef(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvCanLvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvCanLvCdInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDepDtlEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpDepDtlRelTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsMotTngLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsNationalityLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsMaritalStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsDeptLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsDesigLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsSocialStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsReligionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsGradeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsRepEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersDtlsRelatedEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsStateLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsCountryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsDistrictLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersAddDtlsTehsilLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersPriorExpSkillLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersPriorExpDesigLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersEduDtlsInstLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersEduDtlsQualLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfBaseSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfEntryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfSepTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfCostCentreLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfBankLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpPersJoinInfJobRespLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRelationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanMstHeaderMetaInfo(HrmLnMstQVO paramHrmLnMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanMstHeaderInfo(HrmLnMstQVO paramHrmLnMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanMstDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanMstDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurLoanMstDetail() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLoanMst(HrmLnMstHdrBean paramHrmLnMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanChartHdrMetaInfo(HrmLnChartQVO paramHrmLnChartQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanChartHdrInfo(HrmLnChartQVO paramHrmLnChartQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanChartDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanChartDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLoanAppHdrMetaInfo(HrmLnAppQVO paramHrmLnAppQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLoanAppHdrInfo(HrmLnAppQVO paramHrmLnAppQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnAppDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnDisDtlMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLnHblIntRateMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnAppDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnDisDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLnHblIntRateDtl(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLnAppDtl(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLnDisDtl(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLnHblIntRateDtl(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppInsEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLnAppInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String loanAppBulkPayment(HrmLnAppHdrBean paramHrmLnAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLoanChart(HrmLnChartHdrBean paramHrmLnChartHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChartNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanCodeLOVdataNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChartNameLOVdataNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLoanChartNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvMasterHdrMetaInfo(HrmAdvMstQueryVO paramHrmAdvMstQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvMasterHeaderInfo(HrmAdvMstQueryVO paramHrmAdvMstQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvMasterDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvMasterDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurAdvMasterDetailInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAdvanceMstHdrBean paramHrmAdvanceMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSettleDetail(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSetHdrMetaInfo(HrmSettleQueryVO paramHrmSettleQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSetHeaderInfo(HrmSettleQueryVO paramHrmSettleQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSetDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSetDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAdvSettleHds(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdvSettlementHdrMetaInfo(HrmAdvSettleQVO paramHrmAdvSettleQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdvSettlementHeader(HrmAdvSettleQVO paramHrmAdvSettleQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvSettleAdvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitAdvSettlement(HrmAdvSettleHdrBean paramHrmAdvSettleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAdvAppHdrMetaInfo(HrmEmpAdvAppQueryVO paramHrmEmpAdvAppQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAdvAppHeaderInfo(HrmEmpAdvAppQueryVO paramHrmEmpAdvAppQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmEmpAdvAppHdrBean paramHrmEmpAdvAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String advAppBulkSettlePayment(HrmEmpAdvAppHdrBean paramHrmEmpAdvAppHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCodeInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvMstCalendarCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSettleHeadsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrAdvSettleHeadsDetailMetaInfo(HrmAdvSettleHeadsQVO paramHrmAdvSettleHeadsQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAdvSettleHeadsDetail(HrmAdvSettleHeadsQVO paramHrmAdvSettleHeadsQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppAdvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvAppAdvCdInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAdvanceDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClaimMstHdrMetaInfo(HrmClaimMstQVO paramHrmClaimMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClaimMstHdrInfo(HrmClaimMstQVO paramHrmClaimMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmClaimMstDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmClaimMstDtlInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmClaimMst(HrmClaimMstHdrBean paramHrmClaimMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClaimCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpClaimDetailMetaInfo(HrmEmpClaimQVO paramHrmEmpClaimQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpClaimDetailInfo(HrmEmpClaimQVO paramHrmEmpClaimQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpClaim(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimDtlCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpClaimNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepEligLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepApplnHdrMetaInfo(HrmSepApplnQVO paramHrmSepApplnQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepApplnHeaderInfo(HrmSepApplnQVO paramHrmSepApplnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepApplnDtlMetaInfo(String paramString) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepApplnDetailInfo(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepCategoryLOVdata(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectSepAppln(HrmSepApplnHdrBean paramHrmSepApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepEmpNoQLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepEmpNoNLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepOrderHdrMetaInfo(HrmSepOrderQVO paramHrmSepOrderQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepOrderHdr(HrmSepOrderQVO paramHrmSepOrderQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepOrderDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepOrderDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepOrderApplnNoLOVQdata(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSepApprNameLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectSepOrder(HrmSepOrderHdrBean paramHrmSepOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepCatMasterHdrMetaInfo(HrmSepCatMstQVO paramHrmSepCatMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepCatMasterHeaderInfo(HrmSepCatMstQVO paramHrmSepCatMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepCat(HrmSepCatMstHdrBean paramHrmSepCatMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSeparationCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrLstDtlMetaInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrLstDetailInfo(long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmSepClrLstDetail(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrTmplMstHdrMetaInfo(HrmSepClrTmplMstQVO paramHrmSepClrTmplMstQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrTmplMstHdr(HrmSepClrTmplMstQVO paramHrmSepClrTmplMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrTmplMstDtlMetaInfo(String paramString) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrTmplMstDtl(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepClrTmplMstHdrBean paramHrmSepClrTmplMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepTmplLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrEmpHdrMetaInfo(HrmSepClrEmpQVO paramHrmSepClrEmpQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrEmpHdr(HrmSepClrEmpQVO paramHrmSepClrEmpQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmSepClrEmpDtlMetaInfo(String paramString) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmSepClrEmpDtl(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmSepClrEmpHdrBean paramHrmSepClrEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpTmplLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpEmpNoLOVQ(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmSepClrEmpEmpNoLOVN(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getYYMMReportLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getDesigIdReportLOVData(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getMisPositionLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String InsertData(HrmMisReportHdrBean paramHrmMisReportHdrBean, ArrayList paramArrayList) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getMisDataCount(HrmMisreportQVO paramHrmMisreportQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getMisDataInfo(HrmMisreportQVO paramHrmMisreportQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmMisData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getMisYearMonthLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getYearMonth() throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String InsertData(BaseHeaderBean paramBaseHeaderBean) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo procGetRetireDataCount(HrmRetireForecastQVO paramHrmRetireForecastQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList procGetRetireDataInfo(HrmRetireForecastQVO paramHrmRetireForecastQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRetireForecastData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String InsertDataAgeAnalysis(BaseHeaderBean paramBaseHeaderBean) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMediclaimMasterHeaderMetaInfo(HrmMediclaimMasterQVO paramHrmMediclaimMasterQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMediclaimMasterHeaderInfo(HrmMediclaimMasterQVO paramHrmMediclaimMasterQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMediclaimMasterDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMediclaimMasterDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmMediclaimMaster(HrmMediclaimMasterHdrBean paramHrmMediclaimMasterHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmMediClassLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmMediCadreLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMyWorkflowHdrMetaInfo(HrmMyWorkflowQVO paramHrmMyWorkflowQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMyWorkflowHdrInfo(HrmMyWorkflowQVO paramHrmMyWorkflowQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmMyWorkflowDetailMetaInfo(BaseQueryVO paramBaseQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmMyWorkflowDetailInfo(BaseQueryVO paramBaseQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWorkIdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacadeHome.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacadeHome.java new file mode 100644 index 0000000..3d68556 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmFacadeHome.java @@ -0,0 +1,10 @@ +package WEB-INF.classes.wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import wenrgise.hrms.ejb.facade.HrmFacade; + +public interface HrmFacadeHome extends EJBHome { + HrmFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacade.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacade.java new file mode 100644 index 0000000..984d496 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacade.java @@ -0,0 +1,837 @@ +package WEB-INF.classes.wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttInHdrBean; +import wenrgise.hrms.bean.HrmAttEmpAttOutHdrBean; +import wenrgise.hrms.bean.HrmAttShiftMstHdrBean; +import wenrgise.hrms.bean.HrmAttShiftRosterGenHdrBean; +import wenrgise.hrms.bean.HrmEmpPersHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleHdrBean; +import wenrgise.hrms.bean.HrmGenEligRuleQueryHdrBean; +import wenrgise.hrms.bean.HrmLvApplnHdrBean; +import wenrgise.hrms.bean.HrmLvCancHdrBean; +import wenrgise.hrms.bean.HrmLvEncashHdrBean; +import wenrgise.hrms.bean.HrmLvLedgerHdrBean; +import wenrgise.hrms.bean.HrmLvMstHdrBean; +import wenrgise.hrms.bean.HrmPrmCriteriaHdrBean; +import wenrgise.hrms.bean.HrmPrmKPARatingHdrBean; +import wenrgise.hrms.bean.HrmPrmNoticeDtlHdrBean; +import wenrgise.hrms.bean.HrmPrmOrderHdrBean; +import wenrgise.hrms.bean.HrmPrmTestScoreHdrBean; +import wenrgise.hrms.bean.HrmRecAdvtMtnHdrBean; +import wenrgise.hrms.bean.HrmRecApplnMtnHdrBean; +import wenrgise.hrms.bean.HrmRecEmpRecCreationHdrBean; +import wenrgise.hrms.bean.HrmRecTestCentreMstHdrBean; +import wenrgise.hrms.bean.HrmRoasterEntryHdrBean; +import wenrgise.hrms.bean.HrmTrngCalHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsBudHdrBean; +import wenrgise.hrms.bean.HrmTrngCrsMstHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpAttHdrBean; +import wenrgise.hrms.bean.HrmTrngEmpReqHdrBean; +import wenrgise.hrms.bean.HrmTrngFacBean; +import wenrgise.hrms.bean.HrmTrngFacTrngHdrBean; +import wenrgise.hrms.bean.HrmTrngInsCrsHdrBean; +import wenrgise.hrms.vo.HrmAdhocReportQVO; +import wenrgise.hrms.vo.HrmAttEmpAttInQVO; +import wenrgise.hrms.vo.HrmAttEmpAttOutQVO; +import wenrgise.hrms.vo.HrmAttEmpAttQueryQVO; +import wenrgise.hrms.vo.HrmAttEmpDayOffQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftQVO; +import wenrgise.hrms.vo.HrmAttEmpShiftRosterQVO; +import wenrgise.hrms.vo.HrmAttShiftMstQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupDayOffQVO; +import wenrgise.hrms.vo.HrmAttWorkGroupShiftQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQVO; +import wenrgise.hrms.vo.HrmGenEligRuleQueryQVO; +import wenrgise.hrms.vo.HrmLvApplnQVO; +import wenrgise.hrms.vo.HrmLvApplnQueryQVO; +import wenrgise.hrms.vo.HrmLvCancQVO; +import wenrgise.hrms.vo.HrmLvCancQueryQVO; +import wenrgise.hrms.vo.HrmLvEncashQVO; +import wenrgise.hrms.vo.HrmLvLedgerQVO; +import wenrgise.hrms.vo.HrmLvMstQVO; +import wenrgise.hrms.vo.HrmPrmCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmExperienceScoreQVO; +import wenrgise.hrms.vo.HrmPrmKPARatingQVO; +import wenrgise.hrms.vo.HrmPrmNoticeDtlQVO; +import wenrgise.hrms.vo.HrmPrmOrderQVO; +import wenrgise.hrms.vo.HrmPrmQualCriteriaQVO; +import wenrgise.hrms.vo.HrmPrmTestScoreQVO; +import wenrgise.hrms.vo.HrmRecAdvtMtnQVO; +import wenrgise.hrms.vo.HrmRecApplnMtnQVO; +import wenrgise.hrms.vo.HrmRecEmpRecCreationQVO; +import wenrgise.hrms.vo.HrmRecScrutAppMntQVO; +import wenrgise.hrms.vo.HrmRecTestCentreMstQVO; +import wenrgise.hrms.vo.HrmRoasterEntryQVO; +import wenrgise.hrms.vo.HrmTrngCalQVO; +import wenrgise.hrms.vo.HrmTrngCrsBudQVO; +import wenrgise.hrms.vo.HrmTrngCrsMstQVO; +import wenrgise.hrms.vo.HrmTrngEmpAttQVO; +import wenrgise.hrms.vo.HrmTrngEmpFbkQVO; +import wenrgise.hrms.vo.HrmTrngEmpHistQVO; +import wenrgise.hrms.vo.HrmTrngEmpReqQVO; +import wenrgise.hrms.vo.HrmTrngFacFdbkQVO; +import wenrgise.hrms.vo.HrmTrngFacQVO; +import wenrgise.hrms.vo.HrmTrngFacTrngQVO; +import wenrgise.hrms.vo.HrmTrngInsCrsQVO; + +public interface HrmSecondFacade extends EJBObject { + RecordMetaInfo getHrmAttEmpDayoffDtlMetaInfo(HrmAttEmpDayOffQVO paramHrmAttEmpDayOffQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttEmpDayoffDetailInfo(HrmAttEmpDayOffQVO paramHrmAttEmpDayOffQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttEmpDayoffData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpNoDayOffQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpNoDayOffInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttWGShiftDtlMetaInfo(HrmAttWorkGroupShiftQVO paramHrmAttWorkGroupShiftQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttWGShiftDtlInfo(HrmAttWorkGroupShiftQVO paramHrmAttWorkGroupShiftQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveWGS(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpSiteCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpSiteCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGrpShiftCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttEmpShiftDtlMetaInfo(HrmAttEmpShiftQVO paramHrmAttEmpShiftQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttEmpShiftDtlInfo(HrmAttEmpShiftQVO paramHrmAttEmpShiftQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveEmpShift(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESEmpNoLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESEmpNoLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttESShiftCodeLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttHdrMetaInfo(HrmAttEmpAttInQVO paramHrmAttEmpAttInQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttHeaderInfo(HrmAttEmpAttInQVO paramHrmAttEmpAttInQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttEmpIn(HrmAttEmpAttInHdrBean paramHrmAttEmpAttInHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + HrmAttEmpAttInHdrBean getOnLoadSysDtTime(HrmAttEmpAttInHdrBean paramHrmAttEmpAttInHdrBean) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmpShftCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryEmpShftCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryDtlEmpLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttQueryLocationLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getEmpAttQueryHdrMetaInfo(HrmAttEmpAttQueryQVO paramHrmAttEmpAttQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getEmpAttQueryHeader(HrmAttEmpAttQueryQVO paramHrmAttEmpAttQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getEmpAttQueryDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getEmpAttQueryDtlInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttEmployeeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttOutHdrMetaInfo(HrmAttEmpAttOutQVO paramHrmAttEmpAttOutQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttOutHeaderInfo(HrmAttEmpAttOutQVO paramHrmAttEmpAttOutQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttEmpOut(HrmAttEmpAttOutHdrBean paramHrmAttEmpAttOutHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException, RemoteException; + + String saveHrmAttEmpQuery(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAttWorkGroupDayOffDtlMetaInfo(HrmAttWorkGroupDayOffQVO paramHrmAttWorkGroupDayOffQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAttWorkGroupDayOffDetailInfo(HrmAttWorkGroupDayOffQVO paramHrmAttWorkGroupDayOffQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAttWorkGroupDayOffData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttWorkGroupSiteQueryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getAttShiftMstHeaderMetaInfo(HrmAttShiftMstQVO paramHrmAttShiftMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getAttShiftMstHeader(HrmAttShiftMstQVO paramHrmAttShiftMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveAttShiftMstData(HrmAttShiftMstHdrBean paramHrmAttShiftMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getShiftCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getAttEmpshiftRosterDetailMetaInfo(HrmAttEmpShiftRosterQVO paramHrmAttEmpShiftRosterQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getAttEmpshiftRosterDetail(HrmAttEmpShiftRosterQVO paramHrmAttEmpShiftRosterQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveShiftRosterGenData(HrmAttShiftRosterGenHdrBean paramHrmAttShiftRosterGenHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getShiftRosterGenWorkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTCMstHeaderMetaInfo(HrmRecTestCentreMstQVO paramHrmRecTestCentreMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTCMstHeader(HrmRecTestCentreMstQVO paramHrmRecTestCentreMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTCMst(HrmRecTestCentreMstHdrBean paramHrmRecTestCentreMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTCMstCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecLocVacencyDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecLngReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecQualReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecSkillReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecWorkExpDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getRecJobDescDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecLocVacencyDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecLngReqDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecQualReqDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecSkillReqDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecWorkExpDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getRecJobDescDetail(String paramString, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecAdvAttrDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrLocationLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrQualificationLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrLanguageLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrSkillLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrWorkLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrRefLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecAttrPositionLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnMtnHdrMetaInfo(HrmRecApplnMtnQVO paramHrmRecApplnMtnQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnMtnHeaderInfo(HrmRecApplnMtnQVO paramHrmRecApplnMtnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnAddDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnEduDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnExpDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnLangDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnResultDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnOtherDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnRefMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecApplnTrngDtlsMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnAddDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnExpDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnEduDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnLangDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnResultDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnOtherDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnRef(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecApplnTrngDtls(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnResultDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnLangDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnEduDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnExpDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnAddDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnOtherDtl(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnRef(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecApplnTrngDtls(HrmRecApplnMtnHdrBean paramHrmRecApplnMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnRefNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnDesigLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnApplnNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnLangCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnKnowCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnResvCatCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecApplnTestCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRefNoLOVdataNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getDesigNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmScrutAppMntnDetailMetaInfo(HrmRecScrutAppMntQVO paramHrmRecScrutAppMntQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmScrutAppMntnDetailInfo(HrmRecScrutAppMntQVO paramHrmRecScrutAppMntQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmRecScrutAppDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecAdvtHdrMetaInfo(HrmRecAdvtMtnQVO paramHrmRecAdvtMtnQVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecAdvtHdrInfo(HrmRecAdvtMtnQVO paramHrmRecAdvtMtnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRecAdvtDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRecAdvtDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClassDataLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRefNoLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEntryModeLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOV(LovQueryVO paramLovQueryVO) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveAdvtData(HrmRecAdvtMtnHdrBean paramHrmRecAdvtMtnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpRecCrtnHdrMetaInfo(HrmRecEmpRecCreationQVO paramHrmRecEmpRecCreationQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpRecCrtnHeaderInfo(HrmRecEmpRecCreationQVO paramHrmRecEmpRecCreationQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnEntryModeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnMotherTongueLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnNationalityLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnMaritalStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnReservationCtgLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnReligionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnCountryLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnStateLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnBaseSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnDesignationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnScaleLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnGradeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnCostCentreLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnJoiningGroupLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnTechNonTechLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmRecCrnEmployeeTypeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmRecEmpRecCreationHdrBean paramHrmRecEmpRecCreationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsHeaderMetaInfo(HrmTrngCrsMstQVO paramHrmTrngCrsMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsHeader(HrmTrngCrsMstQVO paramHrmTrngCrsMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngcrsDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngCrs(HrmTrngCrsMstHdrBean paramHrmTrngCrsMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngInsCrsHeaderMetaInfo(HrmTrngInsCrsQVO paramHrmTrngInsCrsQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngInsCrsHeader(HrmTrngInsCrsQVO paramHrmTrngInsCrsQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngInsCrsDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngInsCrsDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngInsCrs(HrmTrngInsCrsHdrBean paramHrmTrngInsCrsHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsBudHeaderMetaInfo(HrmTrngCrsBudQVO paramHrmTrngCrsBudQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsBudHeader(HrmTrngCrsBudQVO paramHrmTrngCrsBudQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCrsBudDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCrsBudDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngCrsBud(HrmTrngCrsBudHdrBean paramHrmTrngCrsBudHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCalHeaderMetaInfo(HrmTrngCalQVO paramHrmTrngCalQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCalHeader(HrmTrngCalQVO paramHrmTrngCalQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngCalDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngCal(HrmTrngCalHdrBean paramHrmTrngCalHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacHeaderMetaInfo(HrmTrngFacQVO paramHrmTrngFacQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacHeader(HrmTrngFacQVO paramHrmTrngFacQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmFacMast(HrmTrngFacBean paramHrmTrngFacBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacTrngHeaderMetaInfo(HrmTrngFacTrngQVO paramHrmTrngFacTrngQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacTrngHeader(HrmTrngFacTrngQVO paramHrmTrngFacTrngQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmFacTrngDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmFacTrngCalDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmFacTrng(HrmTrngFacTrngHdrBean paramHrmTrngFacTrngHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTrngReqHeaderMetaInfo(HrmTrngEmpReqQVO paramHrmTrngEmpReqQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTrngReqHeader(HrmTrngEmpReqQVO paramHrmTrngEmpReqQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpReqDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpReqDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitEmpTrngReq(HrmTrngEmpReqHdrBean paramHrmTrngEmpReqHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmployeeCodeLOVdataQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmployeeCodeLOVdataN(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getGroupInformation(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpHistHeaderMetaInfo(HrmTrngEmpHistQVO paramHrmTrngEmpHistQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpHistHeader(HrmTrngEmpHistQVO paramHrmTrngEmpHistQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpHistDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpHistDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpAttHeaderMetaInfo(HrmTrngEmpAttQVO paramHrmTrngEmpAttQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpAttHeader(HrmTrngEmpAttQVO paramHrmTrngEmpAttQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpAttDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpAttDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTrngEmpAtt(HrmTrngEmpAttHdrBean paramHrmTrngEmpAttHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdBkDtlMetaInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdBkDetailInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdBkNextDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdBkNextDtl(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngFacFdbkDtlHdrMetaInfo(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngFacFdbkDtlHdr(HrmTrngFacFdbkQVO paramHrmTrngFacFdbkQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmFacFeedback(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpFdBkDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpFdBkDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTrngEmpFbkHeaderMetaInfo(HrmTrngEmpFbkQVO paramHrmTrngEmpFbkQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTrngEmpFbkHeader(HrmTrngEmpFbkQVO paramHrmTrngEmpFbkQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpFeedback(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFdbkRatingHelpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + void calendarClose(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCalCloseCrsNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgMstBranchCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgInstCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCountryCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCityCodeLOVdataQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgFacMstEmpNoLOVNmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgFacMstBaseInstLOVQmode(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCalendarCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngBudCourseCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngSiteLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCrsInsNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmClsCalCrsLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistEmpLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistCrsLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpHistCalLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAttendanceDtlLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalInstLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalCrsCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgCourseLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqCourseLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFacultyLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngRatingLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqCalLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqRecoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrgReqEmpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCalDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmFacNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngCourseLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrngFacultyLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + HashMap getEligClassInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmGenEligRuleHdrBean paramHrmGenEligRuleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseSystemException, EnrgiseApplicationException, RemoteException; + + RecordMetaInfo getGenEligRuleMetaInfo(HrmGenEligRuleQVO paramHrmGenEligRuleQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getGenEligRuleHeaderInfo(HrmGenEligRuleQVO paramHrmGenEligRuleQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmGenEligRuleQuery(HrmGenEligRuleQueryHdrBean paramHrmGenEligRuleQueryHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmGenEligRuleQueryDetail(HrmGenEligRuleQueryQVO paramHrmGenEligRuleQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmGenEligRuleQueryDetailMetaInfo(HrmGenEligRuleQueryQVO paramHrmGenEligRuleQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveMasterHdrMetaInfo(HrmLvMstQVO paramHrmLvMstQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveMasterHeaderInfo(HrmLvMstQVO paramHrmLvMstQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveMasterDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveMasterDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmCurLeaveMasterDetailInfo() throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmLeaveMst(HrmLvMstHdrBean paramHrmLvMstHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvMstStateLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveDetailLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveMasterLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveMasterCalLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveCodeInsertLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveLedgerDtlMetaInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveLedgerDetailInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveLedgerTxnDtlMetaInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveLedgerTxnDetailInfo(HrmLvLedgerQVO paramHrmLvLedgerQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveLeaveLedger(HrmLvLedgerHdrBean paramHrmLvLedgerHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmployeeNumberLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveCodesLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getGroupInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveEncashHdrMetaInfo(HrmLvEncashQVO paramHrmLvEncashQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveEncashHdrInfo(HrmLvEncashQVO paramHrmLvEncashQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectLvEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitLvEncash(HrmLvEncashHdrBean paramHrmLvEncashHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLeaveTypesLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvEncashEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvEncashEmpNoNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEncshLvCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvApplnEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvApplnEmpNoNLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveAppQueryDtlMetaInfo(HrmLvApplnQueryQVO paramHrmLvApplnQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveAppQueryDtlInfo(HrmLvApplnQueryQVO paramHrmLvApplnQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveAppln(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String CancelLeaveAppln(HrmLvApplnHdrBean paramHrmLvApplnHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getLeaveDates(HrmLvApplnHdrBean paramHrmLvApplnHdrBean) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveAppQueryScreenDtlMetaInfo(HrmLvApplnQVO paramHrmLvApplnQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveAppQueryScreenDtlInfo(HrmLvApplnQVO paramHrmLvApplnQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvAppQryEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmLvAppQryLvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvAppLvCdLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpLvAppLvCdInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmLeaveCanQueryDtlMetaInfo(HrmLvCancQueryQVO paramHrmLvCancQueryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmLeaveCanQueryDetailInfo(HrmLvCancQueryQVO paramHrmLvCancQueryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpLeaveCanQueryScreenDtlMetaInfo(HrmLvCancQVO paramHrmLvCancQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpLeaveCanQueryScreenDtlInfo(HrmLvCancQVO paramHrmLvCancQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmLvCancHdrBean paramHrmLvCancHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveLeaveCanc(HrmLvCancHdrBean paramHrmLvCancHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclLeaveEmpLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclLeaveTypeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPromOrderHdrMetaInfo(HrmPrmOrderQVO paramHrmPrmOrderQVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPromOrderHdr(HrmPrmOrderQVO paramHrmPrmOrderQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePromOrder(HrmPrmOrderHdrBean paramHrmPrmOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderEmpNoNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderEmpNoQLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromOrderNoQLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromToGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromToDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRatingCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getKPAGrpCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRatNoLOVQdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getKPARatingHeaderMetaInfo(HrmPrmKPARatingQVO paramHrmPrmKPARatingQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getKPARatingHeaderInfo(HrmPrmKPARatingQVO paramHrmPrmKPARatingQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmKPARatingPosDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmKPARatingPosDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmKPARatingFinDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmKPARatingFinDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmKPARatingHdrBean paramHrmPrmKPARatingHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmTCHdrMetaInfo(HrmPrmTestScoreQVO paramHrmPrmTestScoreQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmTCHdrInfo(HrmPrmTestScoreQVO paramHrmPrmTestScoreQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmTCDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmTCDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPositionCodeLOVQuery(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmTCData(HrmPrmTestScoreHdrBean paramHrmPrmTestScoreHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmESDtlMetaInfo(HrmPrmExperienceScoreQVO paramHrmPrmExperienceScoreQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmESDtlInfo(HrmPrmExperienceScoreQVO paramHrmPrmExperienceScoreQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getESPositionCodeLOVQuery(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getESPositionCodeLOVNew(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmPrmESData(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmQualCriteriaDetailMetaInfo(HrmPrmQualCriteriaQVO paramHrmPrmQualCriteriaQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmQualCriteriaDetail(HrmPrmQualCriteriaQVO paramHrmPrmQualCriteriaQVO, long paramLong1, long paramLong2) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmQualCriteriaDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmQualPositionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmQualificationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmCriteriaPostLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmCriteriaDetailInfo(HrmPrmCriteriaQVO paramHrmPrmCriteriaQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmCriteriaDetailMetaInfo(HrmPrmCriteriaQVO paramHrmPrmCriteriaQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmPrmCriteriaHdrBean paramHrmPrmCriteriaHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingFromGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingFromDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingToGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromKPARatingToDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getPrmViewAssDetailMetaInfo(String paramString, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmViewAssDetail(String paramString, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws CreateException, RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + String savePrmViewAssDtl(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssSiteCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssNoticeCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssPromotionCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmEmployeeNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmViewAssPosCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmNoticeNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmPrmPositionNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmPrmNoticeDtlHdrMetaInfo(HrmPrmNoticeDtlQVO paramHrmPrmNoticeDtlQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmPrmNoticeDtlHdrInfo(HrmPrmNoticeDtlQVO paramHrmPrmNoticeDtlQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getNoticeDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getPrmNoticeDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveNoticeDtlData(HrmPrmNoticeDtlHdrBean paramHrmPrmNoticeDtlHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromNotGradeNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPromNotDesignationNLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getPrmGenAssPrmNoLOVData(LovQueryVO paramLovQueryVO) throws EnrgiseApplicationException, EnrgiseSystemException, CreateException, RemoteException; + + String savePrmGenAss(BaseHeaderBean paramBaseHeaderBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws EnrgiseApplicationException, EnrgiseSystemException, CreateException, RemoteException; + + LovVO getHrmLvCreditRegionLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRoasterHdrMetaInfo(HrmRoasterEntryQVO paramHrmRoasterEntryQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRoasterHdrInfo(HrmRoasterEntryQVO paramHrmRoasterEntryQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveRoasterHdr(HrmRoasterEntryHdrBean paramHrmRoasterEntryHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRstrCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmRoasterEntryDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmRoasterEntryDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRstrSocialStatusLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getRoasterEmpDetailsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAdhocReportHdrMetaInfo(HrmAdhocReportQVO paramHrmAdhocReportQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAdhocReportHeaderInfo(HrmAdhocReportQVO paramHrmAdhocReportQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAdhocReport(HrmAdhocReportHdrBean paramHrmAdhocReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpPersAssetMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpPersAssetInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpPersAsset(HrmEmpPersHdrBean paramHrmEmpPersHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java new file mode 100644 index 0000000..7648a4f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmSecondFacadeHome.java @@ -0,0 +1,10 @@ +package WEB-INF.classes.wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; + +public interface HrmSecondFacadeHome extends EJBHome { + HrmSecondFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacade.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacade.java new file mode 100644 index 0000000..eaed077 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacade.java @@ -0,0 +1,372 @@ +package WEB-INF.classes.wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import java.sql.Timestamp; +import java.util.ArrayList; +import javax.ejb.CreateException; +import javax.ejb.EJBObject; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.RecordMetaInfo; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.vo.LovQueryVO; +import wenrgise.common.vo.LovVO; +import wenrgise.hrms.bean.HrmATDDeputChrgRptHdrBean; +import wenrgise.hrms.bean.HrmATDDeputOrderSngEmpHdrBean; +import wenrgise.hrms.bean.HrmATDTransOrderForSingleEmpBean; +import wenrgise.hrms.bean.HrmAppTempHdrBean; +import wenrgise.hrms.bean.HrmAppraisalKPAHdrBean; +import wenrgise.hrms.bean.HrmAprslHdrBean; +import wenrgise.hrms.bean.HrmAprslSpcTmplHdrBean; +import wenrgise.hrms.bean.HrmAprslStartOrderHdrBean; +import wenrgise.hrms.bean.HrmAprslStartRuleHdrBean; +import wenrgise.hrms.bean.HrmChargeReportHdrBean; +import wenrgise.hrms.bean.HrmDeputationApplicationHdrBean; +import wenrgise.hrms.bean.HrmEmpTransCnclApplHdrBean; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpHdrBean; +import wenrgise.hrms.bean.HrmTransferApplicationHdrBean; +import wenrgise.hrms.vo.HrmATDDptnApplQVO; +import wenrgise.hrms.vo.HrmATDDptnChrgRptQVO; +import wenrgise.hrms.vo.HrmATDDptnOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransApplQVO; +import wenrgise.hrms.vo.HrmATDTransChrgRptQVO; +import wenrgise.hrms.vo.HrmATDTransCnclApplQVO; +import wenrgise.hrms.vo.HrmATDTransCnclOrderSingleEmpQVO; +import wenrgise.hrms.vo.HrmATDTransSingleEmpQVO; +import wenrgise.hrms.vo.HrmAppTempQueryVO; +import wenrgise.hrms.vo.HrmAppraisalKPAQVO; +import wenrgise.hrms.vo.HrmAprslQVO; +import wenrgise.hrms.vo.HrmAprslSpcTmplQVO; +import wenrgise.hrms.vo.HrmAprslStartOrderQVO; +import wenrgise.hrms.vo.HrmAprslStartRuleQVO; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public interface HrmThirdFacade extends EJBObject { + WflWorkListInfoBean getWorkListInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmTransSingleEmpRecordMetaInfo(HrmATDTransSingleEmpQVO paramHrmATDTransSingleEmpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmTransSingleEmpHeaderInfo(HrmATDTransSingleEmpQVO paramHrmATDTransSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransAplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmToSiteCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmToWorkGroupLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranOrderSingleEmp(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTransAppHeaderMetaInfo(HrmATDTransApplQVO paramHrmATDTransApplQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTransAppHeader(HrmATDTransApplQVO paramHrmATDTransApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTransAppl(HrmTransferApplicationHdrBean paramHrmTransferApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmChargeRepHeaderMetaInfo(HrmATDTransChrgRptQVO paramHrmATDTransChrgRptQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmChargeRepHeader(HrmATDTransChrgRptQVO paramHrmATDTransChrgRptQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranChrgRpt(HrmChargeReportHdrBean paramHrmChargeReportHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTransCnclHeaderMetaInfo(HrmATDTransCnclApplQVO paramHrmATDTransCnclApplQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTransCnclHeader(HrmATDTransCnclApplQVO paramHrmATDTransCnclApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmTransCnclAppl(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTransferCnclAppln(HrmEmpTransCnclApplHdrBean paramHrmEmpTransCnclApplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String cancelTransfer(HrmATDTransOrderForSingleEmpBean paramHrmATDTransOrderForSingleEmpBean, Timestamp paramTimestamp1, ArrayList paramArrayList, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpDeputAppHdrMetaInfo(HrmATDDptnApplQVO paramHrmATDDptnApplQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpDeputAppHeaderInfo(HrmATDDptnApplQVO paramHrmATDDptnApplQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputAppln(HrmDeputationApplicationHdrBean paramHrmDeputationApplicationHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpTrnsCnclOrderHdrMetaInfo(HrmATDTransCnclOrderSingleEmpQVO paramHrmATDTransCnclOrderSingleEmpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpTrnsCnclOrderHeaderInfo(HrmATDTransCnclOrderSingleEmpQVO paramHrmATDTransCnclOrderSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectTranCnclOrder(HrmTransCnclOrderSingEmpHdrBean paramHrmTransCnclOrderSingEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDeputOrderSngEmpHdrMetaInfo(HrmATDDptnOrderSingleEmpQVO paramHrmATDDptnOrderSingleEmpQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDeputOrderSngEmpHeaderInfo(HrmATDDptnOrderSingleEmpQVO paramHrmATDDptnOrderSingleEmpQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputOrder(HrmATDDeputOrderSngEmpHdrBean paramHrmATDDeputOrderSngEmpHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmDeputChargeRepHdrMetaInfo(HrmATDDptnChrgRptQVO paramHrmATDDptnChrgRptQVO, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmDeputChargeRepHeaderInfo(HrmATDDptnChrgRptQVO paramHrmATDDptnChrgRptQVO, long paramLong1, long paramLong2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveData(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String submitDeputChrgRpt(HrmATDDeputChrgRptHdrBean paramHrmATDDeputChrgRptHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnOfcNoteNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnDesignationLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnWorkgroupLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnEmpNoInsLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite1LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite2LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTrnSite3LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgOrderNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChrgCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclApplNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmCnclOfNoteNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpNoQCnclApplLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmEmpNoICnclApplLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputEmpNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputEmpNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputAdvtNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputPostNameLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransCnclOrderAppNoLOVQdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransCnclOrderAppNoLOVIdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransCnclOrderLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputationOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplcnNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDeputApplcnNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmTransReptEmpNoLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgOrderNoLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgOrderNoQLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmDepChrgCodeLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslHdrMetaInfo(HrmAprslQVO paramHrmAprslQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslHdrInfo(HrmAprslQVO paramHrmAprslQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslKPADetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslKPADetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmEmpAprslGoalsDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmEmpAprslGoalsDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslTrngReqDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAprslTrngReqDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrAprslEmpPerDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslStartOrderLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpAprslStOrderLOVQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmpAprslStOrderLOVI(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating0LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating1LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating2LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating3LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating4LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslRating5LOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String calEmpFinRating(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectEmpAprsl(HrmAprslHdrBean paramHrmAprslHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTemplateHdrMetaInfo(HrmAppTempQueryVO paramHrmAppTempQueryVO) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTemplateHeaderInfo(HrmAppTempQueryVO paramHrmAppTempQueryVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTempSecDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTempSecDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslTmplSec(HrmAppTempHdrBean paramHrmAppTempHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslTmplNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslSecCodeNameLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslKPALOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslParentCodeLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveHrmAprslTmplMst(HrmAppTempHdrBean paramHrmAppTempHdrBean, String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppTempSecKPADtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppTempSecKPADetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppRaisalKpaHeaderMetaInfo(HrmAppraisalKPAQVO paramHrmAppraisalKPAQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppRaisalKpaHeader(HrmAppraisalKPAQVO paramHrmAppraisalKPAQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAppRaisalKpa(HrmAppraisalKPAHdrBean paramHrmAppraisalKPAHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAppRaisalKpaDetailMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAppRaisalKpaDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryAppraisalWorkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String getHrmAppRaisalKpaExactWeightage(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStOrderMetaInfo(HrmAprslStartOrderQVO paramHrmAprslStartOrderQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStOrderInfo(HrmAprslStartOrderQVO paramHrmAprslStartOrderQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslStOrder(HrmAprslStartOrderHdrBean paramHrmAprslStartOrderHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslStOrderNoLOVQrydata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStRuleHdrMetaInfo(HrmAprslStartRuleQVO paramHrmAprslStartRuleQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStRuleHeader(HrmAprslStartRuleQVO paramHrmAprslStartRuleQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslStRuleDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslStRuleDetail(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslStRule(HrmAprslStartRuleHdrBean paramHrmAprslStartRuleHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsMstData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsDtlData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsMstDataQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getClsDtlDataQ(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryEmployeeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getEmployeeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryStOrdLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryWrkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQuerySiteCodeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getWrkGrpLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmChgRepEmpLOVdata(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpHdrMetaInfo(HrmAprslSpcTmplQVO paramHrmAprslSpcTmplQVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpHeaderInfo(HrmAprslSpcTmplQVO paramHrmAprslSpcTmplQVO, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpKPADtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpKPADetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpGoalsDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpGoalsDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslSpcTmpEligDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + ArrayList getHrmAprslSpcTmpEligDetailInfo(String paramString, long paramLong1, long paramLong2) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String saveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String approveHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + String rejectHrmAprslSpcTmp(HrmAprslSpcTmplHdrBean paramHrmAprslSpcTmplHdrBean, Timestamp paramTimestamp1, String paramString1, String paramString2, boolean paramBoolean1, ArrayList paramArrayList, boolean paramBoolean2, Timestamp paramTimestamp2, UserInfo paramUserInfo) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQuerySpcTemplateData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getTemplateData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryStartOrdLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getQueryTemplateData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getTempSectionData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getSpcEmployeeLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslTempNameQLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getAprslTmplRatingCodeQLOV(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + LovVO getHrmAprslEmpNoLOVData(LovQueryVO paramLovQueryVO) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; + + RecordMetaInfo getHrmAprslEmpDtlMetaInfo(String paramString) throws RemoteException, CreateException, EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java new file mode 100644 index 0000000..6d561df --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/ejb/facade/HrmThirdFacadeHome.java @@ -0,0 +1,10 @@ +package WEB-INF.classes.wenrgise.hrms.ejb.facade; + +import java.rmi.RemoteException; +import javax.ejb.CreateException; +import javax.ejb.EJBHome; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; + +public interface HrmThirdFacadeHome extends EJBHome { + HrmThirdFacade create() throws CreateException, RemoteException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/helper/WorkFlowSimulator.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/helper/WorkFlowSimulator.java new file mode 100644 index 0000000..d90080b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/helper/WorkFlowSimulator.java @@ -0,0 +1,52 @@ +package WEB-INF.classes.wenrgise.hrms.helper; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.ejb.common.helper.DBObject; +import wenrgise.ejb.common.helper.QueryRow; +import wenrgise.ejb.common.helper.QueryValue; +import wenrgise.ejb.common.utility.DBUtilitiesBean; +import wenrgise.workflow.bean.WflWorkListInfoBean; +import wenrgise.workflow.service.WorkFlowService; +import wenrgise.workflow.utility.Node; + +public class WorkFlowSimulator implements WorkFlowService { + public WflWorkListInfoBean getWorkListInfo(String sWorkListId) throws EnrgiseApplicationException, EnrgiseSystemException { + WflWorkListInfoBean wflWorkListInfoBean = new WflWorkListInfoBean(); + DBUtilitiesBean oBean = new DBUtilitiesBean(); + int count = 0; + ArrayList oParameters = new ArrayList(); + oParameters = new ArrayList(); + oParameters.add(new DBObject(1, 1, 12, sWorkListId)); + oParameters.add(new DBObject(2, 2, -10)); + oParameters.add(new DBObject(3, 2, 12)); + oParameters.add(new DBObject(4, 2, 12)); + oParameters.add(new DBObject(5, 2, 4)); + ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetWorkListInfo(?,?,?,?,?)"); + DBObject oOutObject = oOutArray.get(0); + ArrayList oList = (ArrayList)oOutObject.getObject(); + if (oList.size() == 0) + throw new EnrgiseApplicationException("wenrgise.hrms.norecordfound", "M"); + QueryRow oRow = null; + QueryValue oValue = null; + HashMap oColumns = null; + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + count++; + oRow = oIt.next(); + wflWorkListInfoBean.setDocId(oRow.get("doc_id").getString()); + wflWorkListInfoBean.setDocTypeCode(oRow.get("doc_type_code").getString()); + wflWorkListInfoBean.setONode(new Node(oRow.get("lane").getString(), oRow.get("level_number").getString())); + wflWorkListInfoBean.setCreatorempId(oRow.get("creator_emp_id").getString()); + wflWorkListInfoBean.setLastEmpId(oRow.get("last_approver_emp_id").getString()); + wflWorkListInfoBean.setSiteId(oRow.get("created_site_id").getString()); + wflWorkListInfoBean.setStatus(oRow.get("status").getString()); + wflWorkListInfoBean.setAssignedOn(oRow.get("last_assigned_date").getString()); + wflWorkListInfoBean.setRequestorEmpId(oRow.get("pending_for_emp_id").getString()); + } + return wflWorkListInfoBean; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnApplQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnApplQVO.java new file mode 100644 index 0000000..ed81d2c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnApplQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDDptnApplQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String applnNo; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java new file mode 100644 index 0000000..89e96a8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnChrgRptQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDDptnChrgRptQVO extends BaseQueryVO implements Serializable { + String dptOrderNo; + + private String empId; + + public String getDptOrderNo() { + return this.dptOrderNo; + } + + public void setDptOrderNo(String newDptOrderNo) { + this.dptOrderNo = newDptOrderNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java new file mode 100644 index 0000000..bb7951d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDDptnOrderSingleEmpQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDDptnOrderSingleEmpQVO extends BaseQueryVO implements Serializable { + String orderNo; + + String applnNo; + + String headerPrimaryKey1; + + String employeeNoId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransApplQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransApplQVO.java new file mode 100644 index 0000000..2d29077 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransApplQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransApplQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String applnNo; + + private String employeeNoId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java new file mode 100644 index 0000000..24ad570 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransChrgRptQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransChrgRptQVO extends BaseQueryVO implements Serializable { + String trnOrderNo; + + private String chargeType; + + String empNameId; + + public String getTrnOrderNo() { + return this.trnOrderNo; + } + + public void setTrnOrderNo(String newTrnOrderNo) { + this.trnOrderNo = newTrnOrderNo; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getEmpNameId() { + return this.empNameId; + } + + public void setEmpNameId(String newEmpNameId) { + this.empNameId = newEmpNameId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java new file mode 100644 index 0000000..afe6bcc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclApplQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransCnclApplQVO extends BaseQueryVO implements Serializable { + private String applnNo; + + private String empNo; + + private String empId; + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java new file mode 100644 index 0000000..526f937 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransCnclOrderSingleEmpQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransCnclOrderSingleEmpQVO extends BaseQueryVO implements Serializable { + String orderNo; + + String appNo; + + String headerPrimaryKey1; + + String employeeId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getAppNo() { + return this.appNo; + } + + public void setAppNo(String newAppNo) { + this.appNo = newAppNo; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java new file mode 100644 index 0000000..880a4b5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmATDTransSingleEmpQVO.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmATDTransSingleEmpQVO extends BaseQueryVO implements Serializable { + private String orderNo; + + private String orderStatus; + + private String applnNo; + + String headerPrimaryKey1; + + String empID; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmpID() { + return this.empID; + } + + public void setEmpID(String newEmpID) { + this.empID = newEmpID; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdhocReportQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdhocReportQVO.java new file mode 100644 index 0000000..7a18ee6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdhocReportQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdhocReportQVO extends BaseQueryVO implements Serializable { + String id; + + String code; + + String category_tag; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getCategory_tag() { + return this.category_tag; + } + + public void setCategory_tag(String category_tag) { + this.category_tag = category_tag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvMstQueryVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvMstQueryVO.java new file mode 100644 index 0000000..0d5b357 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvMstQueryVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdvMstQueryVO extends BaseQueryVO implements Serializable { + private String advanceCode; + + String hidDetailId; + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getHidDetailId() { + return this.hidDetailId; + } + + public void setHidDetailId(String newHidDetailId) { + this.hidDetailId = newHidDetailId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java new file mode 100644 index 0000000..cdb3b0d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleHeadsQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdvSettleHeadsQVO extends BaseQueryVO implements Serializable { + private String advanceCodeId; + + private String advanceDescription; + + String settleId; + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleQVO.java new file mode 100644 index 0000000..86c4a59 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAdvSettleQVO.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAdvSettleQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String fromDate; + + private String toDate; + + private String advanceCode; + + private String settleStatus; + + private String advanceCodeId; + + private String employeeId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getSettleStatus() { + return this.settleStatus; + } + + public void setSettleStatus(String newSettleStatus) { + this.settleStatus = newSettleStatus; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppTempQueryVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppTempQueryVO.java new file mode 100644 index 0000000..f2169b1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppTempQueryVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAppTempQueryVO extends BaseQueryVO implements Serializable { + private String templateName; + + String ratingCode; + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java new file mode 100644 index 0000000..0556cbe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAppraisalKPAQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAppraisalKPAQVO extends BaseQueryVO implements Serializable { + private String kpaGroupCode; + + private String description; + + public String getKpaGroupCode() { + return this.kpaGroupCode; + } + + public void setKpaGroupCode(String newKpaGroupCode) { + this.kpaGroupCode = newKpaGroupCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslQVO.java new file mode 100644 index 0000000..4be9cac --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslQVO.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslQVO extends BaseQueryVO implements Serializable { + String empNo; + + String aprslLevel; + + String stOrderNo; + + String empId; + + String aprslYear; + + String employeeId; + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getAprslLevel() { + return this.aprslLevel; + } + + public void setAprslLevel(String newAprslLevel) { + this.aprslLevel = newAprslLevel; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getAprslYear() { + return this.aprslYear; + } + + public void setAprslYear(String newAprslYear) { + this.aprslYear = newAprslYear; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java new file mode 100644 index 0000000..4785798 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslSpcTmplQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslSpcTmplQVO extends BaseQueryVO implements Serializable { + private String templateNameId; + + public String getTemplateNameId() { + return this.templateNameId; + } + + public void setTemplateNameId(String newTemplateNameId) { + this.templateNameId = newTemplateNameId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java new file mode 100644 index 0000000..f1c88da --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartOrderQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslStartOrderQVO extends BaseQueryVO implements Serializable { + String stOrderNo; + + String stOrderId; + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java new file mode 100644 index 0000000..4f55c6c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAprslStartRuleQVO.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAprslStartRuleQVO extends BaseQueryVO implements Serializable { + private String hdnAprslStOrdNo; + + private String hdnSiteCode; + + private String hdnWrkGrpCode; + + private String hdnEmpNum; + + private String hdnClsHdrID; + + private String hdnClsDtlID; + + public String getHdnAprslStOrdNo() { + return this.hdnAprslStOrdNo; + } + + public void setHdnAprslStOrdNo(String newHdnAprslStOrdNo) { + this.hdnAprslStOrdNo = newHdnAprslStOrdNo; + } + + public String getHdnSiteCode() { + return this.hdnSiteCode; + } + + public void setHdnSiteCode(String newHdnSiteCode) { + this.hdnSiteCode = newHdnSiteCode; + } + + public String getHdnWrkGrpCode() { + return this.hdnWrkGrpCode; + } + + public void setHdnWrkGrpCode(String newHdnWrkGrpCode) { + this.hdnWrkGrpCode = newHdnWrkGrpCode; + } + + public String getHdnEmpNum() { + return this.hdnEmpNum; + } + + public void setHdnEmpNum(String newHdnEmpNum) { + this.hdnEmpNum = newHdnEmpNum; + } + + public String getHdnClsHdrID() { + return this.hdnClsHdrID; + } + + public void setHdnClsHdrID(String newHdnClsHdrID) { + this.hdnClsHdrID = newHdnClsHdrID; + } + + public String getHdnClsDtlID() { + return this.hdnClsDtlID; + } + + public void setHdnClsDtlID(String newHdnClsDtlID) { + this.hdnClsDtlID = newHdnClsDtlID; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java new file mode 100644 index 0000000..c22ddfc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttInQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpAttInQVO extends BaseQueryVO implements Serializable { + String empId; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java new file mode 100644 index 0000000..61fe7a8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttOutQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpAttOutQVO extends BaseQueryVO implements Serializable { + String empId; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java new file mode 100644 index 0000000..f369ca7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpAttQueryQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpAttQueryQVO extends BaseQueryVO implements Serializable { + String empId; + + String periodStartDt; + + String periodEndDt; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getPeriodStartDt() { + return this.periodStartDt; + } + + public void setPeriodStartDt(String newPeriodStartDt) { + this.periodStartDt = newPeriodStartDt; + } + + public String getPeriodEndDt() { + return this.periodEndDt; + } + + public void setPeriodEndDt(String newPeriodEndDt) { + this.periodEndDt = newPeriodEndDt; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java new file mode 100644 index 0000000..844e5ad --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpDayOffQVO.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpDayOffQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String periodStartDate; + + private String periodEndDate; + + private String empId; + + private String employeeName; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java new file mode 100644 index 0000000..0edda25 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpShiftQVO extends BaseQueryVO implements Serializable { + String startDate; + + String endDate; + + String employeeNo; + + String employeeName; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java new file mode 100644 index 0000000..9798ede --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttEmpShiftRosterQVO.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttEmpShiftRosterQVO extends BaseQueryVO implements Serializable { + private String workGroupCode; + + String employeeNo; + + private String periodStartDate; + + private String periodEndDate; + + private String txtSiteId; + + private String hdnWorkId; + + private String hdnEmpId; + + String hdnSiteId; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getTxtSiteId() { + return this.txtSiteId; + } + + public void setTxtSiteId(String newTxtSiteId) { + this.txtSiteId = newTxtSiteId; + } + + public String getHdnWorkId() { + return this.hdnWorkId; + } + + public void setHdnWorkId(String newHdnWorkId) { + this.hdnWorkId = newHdnWorkId; + } + + public String getHdnEmpId() { + return this.hdnEmpId; + } + + public void setHdnEmpId(String newHdnEmpId) { + this.hdnEmpId = newHdnEmpId; + } + + public String getHdnSiteId() { + return this.hdnSiteId; + } + + public void setHdnSiteId(String newHdnSiteId) { + this.hdnSiteId = newHdnSiteId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftMstQVO.java new file mode 100644 index 0000000..1a13a40 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttShiftMstQVO extends BaseQueryVO implements Serializable { + private String shiftCode; + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java new file mode 100644 index 0000000..ac88acf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttShiftRosterGenQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttShiftRosterGenQVO extends BaseQueryVO implements Serializable { + private String site; + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java new file mode 100644 index 0000000..8e24e3d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupDayOffQVO.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttWorkGroupDayOffQVO extends BaseQueryVO implements Serializable { + private String workGroupCode; + + private String workGroupDescription; + + private String siteCode; + + private String siteDescription; + + private String workGroupId; + + private String siteId; + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java new file mode 100644 index 0000000..ec310d7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmAttWorkGroupShiftQVO.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmAttWorkGroupShiftQVO extends BaseQueryVO implements Serializable { + String wrkGrpCode; + + String siteCode; + + String startDate; + + String endDate; + + String workGroupId; + + String siteId; + + String workGroupDescription; + + String siteDescription; + + public String getWrkGrpCode() { + return this.wrkGrpCode; + } + + public void setWrkGrpCode(String newWrkGrpCode) { + this.wrkGrpCode = newWrkGrpCode; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmClaimMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmClaimMstQVO.java new file mode 100644 index 0000000..93433e6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmClaimMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmClaimMstQVO extends BaseQueryVO implements Serializable { + private String claimCodeId; + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java new file mode 100644 index 0000000..8a3065c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpAdvAppQueryVO.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpAdvAppQueryVO extends BaseQueryVO implements Serializable { + private String employeeId; + + private String fromDate; + + private String toDate; + + private String advanceStatus; + + private String advanceCode; + + private String empId; + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAdvanceStatus() { + return this.advanceStatus; + } + + public void setAdvanceStatus(String newAdvanceStatus) { + this.advanceStatus = newAdvanceStatus; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpClaimQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpClaimQVO.java new file mode 100644 index 0000000..f8cab7b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpClaimQVO.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpClaimQVO extends BaseQueryVO implements Serializable { + private String claimCodeId; + + private String startDate; + + private String endDate; + + private String empId; + + private String claimNo; + + private String period; + + private String empNo; + + private String empDtlId; + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getClaimNo() { + return this.claimNo; + } + + public void setClaimNo(String newClaimNo) { + this.claimNo = newClaimNo; + } + + public String getPeriod() { + return this.period; + } + + public void setPeriod(String newPeriod) { + this.period = newPeriod; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpDtlId() { + return this.empDtlId; + } + + public void setEmpDtlId(String newEmpDtlId) { + this.empDtlId = newEmpDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java new file mode 100644 index 0000000..b807f2f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDepDtlQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpDepDtlQVO extends BaseQueryVO implements Serializable { + String employeeNo; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java new file mode 100644 index 0000000..f255e43 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpDiscActionQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpDiscActionQVO extends BaseQueryVO implements Serializable { + String employeeNo; + + String caseFlag; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getCaseFlag() { + return this.caseFlag; + } + + public void setCaseFlag(String newCaseFlag) { + this.caseFlag = newCaseFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpPersQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpPersQVO.java new file mode 100644 index 0000000..dbedec1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmEmpPersQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmEmpPersQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String empId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQVO.java new file mode 100644 index 0000000..aba942c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmGenEligRuleQVO extends BaseQueryVO implements Serializable { + private String eligibilityClass; + + private String documentType; + + public String getEligibilityClass() { + return this.eligibilityClass; + } + + public void setEligibilityClass(String newEligibilityClass) { + this.eligibilityClass = newEligibilityClass; + } + + public String getDocumentType() { + return this.documentType; + } + + public void setDocumentType(String newDocumentType) { + this.documentType = newDocumentType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java new file mode 100644 index 0000000..23379fe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmGenEligRuleQueryQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmGenEligRuleQueryQVO extends BaseQueryVO implements Serializable { + private String docType; + + public String getDocType() { + return this.docType; + } + + public void setDocType(String newDocType) { + this.docType = newDocType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnAppQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnAppQVO.java new file mode 100644 index 0000000..dbedeed --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnAppQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLnAppQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String loanCode; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnChartQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnChartQVO.java new file mode 100644 index 0000000..cc8c917 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnChartQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLnChartQVO extends BaseQueryVO implements Serializable { + String chartName; + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnMstQVO.java new file mode 100644 index 0000000..721f16a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLnMstQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLnMstQVO extends BaseQueryVO implements Serializable { + String loanCode; + + String chartName; + + String chartNameId; + + String loanCodeId; + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getChartNameId() { + return this.chartNameId; + } + + public void setChartNameId(String newChartNameId) { + this.chartNameId = newChartNameId; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQVO.java new file mode 100644 index 0000000..c414d5f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQVO.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvApplnQVO extends BaseQueryVO implements Serializable { + private String transId; + + private String hdnDetailId; + + private String leaveCodes; + + private String fromAppDate; + + private String toAppDate; + + private String employeeNumber; + + String employeeId; + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getFromAppDate() { + return this.fromAppDate; + } + + public void setFromAppDate(String newFromAppDate) { + this.fromAppDate = newFromAppDate; + } + + public String getToAppDate() { + return this.toAppDate; + } + + public void setToAppDate(String newToAppDate) { + this.toAppDate = newToAppDate; + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java new file mode 100644 index 0000000..786d8ba --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvApplnQueryQVO.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvApplnQueryQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String leaveCode; + + private String fromDate; + + private String toDate; + + private String statusOfLeave; + + private String transId; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQVO.java new file mode 100644 index 0000000..638b686 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvCancQVO extends BaseQueryVO implements Serializable { + private String transId; + + String employeeNo; + + String leaveCode; + + String leaveCodeId; + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQueryQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQueryQVO.java new file mode 100644 index 0000000..3db4975 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvCancQueryQVO.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvCancQueryQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String leaveType; + + private String cancelFromDate; + + private String cancelToDate; + + private String cancellationStatus; + + String empId; + + private String empName; + + String leaveTypeId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getCancelFromDate() { + return this.cancelFromDate; + } + + public void setCancelFromDate(String newCancelFromDate) { + this.cancelFromDate = newCancelFromDate; + } + + public String getCancelToDate() { + return this.cancelToDate; + } + + public void setCancelToDate(String newCancelToDate) { + this.cancelToDate = newCancelToDate; + } + + public String getCancellationStatus() { + return this.cancellationStatus; + } + + public void setCancellationStatus(String newCancellationStatus) { + this.cancellationStatus = newCancellationStatus; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvEncashQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvEncashQVO.java new file mode 100644 index 0000000..9d09dc6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvEncashQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvEncashQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + private String fromDate; + + private String toDate; + + private String changeStatus; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getChangeStatus() { + return this.changeStatus; + } + + public void setChangeStatus(String newChangeStatus) { + this.changeStatus = newChangeStatus; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvLedgerQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvLedgerQVO.java new file mode 100644 index 0000000..111b299 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvLedgerQVO.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvLedgerQVO extends BaseQueryVO implements Serializable { + private String employeeNo; + + private String leaveType; + + private String hdnDetailId; + + private String leavesType; + + private String leavesTaken; + + private String leavesEncashed; + + private String leaveCode; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getLeavesType() { + return this.leavesType; + } + + public void setLeavesType(String newLeavesType) { + this.leavesType = newLeavesType; + } + + public String getLeavesTaken() { + return this.leavesTaken; + } + + public void setLeavesTaken(String newLeavesTaken) { + this.leavesTaken = newLeavesTaken; + } + + public String getLeavesEncashed() { + return this.leavesEncashed; + } + + public void setLeavesEncashed(String newLeavesEncashed) { + this.leavesEncashed = newLeavesEncashed; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvMstQVO.java new file mode 100644 index 0000000..49dafb6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmLvMstQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmLvMstQVO extends BaseQueryVO implements Serializable { + String leaveCode; + + String encashable; + + String calendar; + + String applicableTo; + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getEncashable() { + return this.encashable; + } + + public void setEncashable(String newEncashable) { + this.encashable = newEncashable; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String getApplicableTo() { + return this.applicableTo; + } + + public void setApplicableTo(String newApplicableTo) { + this.applicableTo = newApplicableTo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java new file mode 100644 index 0000000..4ab6800 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMediclaimMasterQVO.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmMediclaimMasterQVO extends BaseQueryVO implements Serializable { + private String coverName; + + private String sumInsured; + + private String salaryUnit; + + private String premium; + + private String ageFrom; + + private String ageTo; + + private String aicContribution; + + private String documentRequired; + + private String txtClassId; + + private String txtCadreId; + + public String getTxtClassId() { + return this.txtClassId; + } + + public void setTxtClassId(String txtClassId) { + this.txtClassId = txtClassId; + } + + public String getTxtCadreId() { + return this.txtCadreId; + } + + public void setTxtCadreId(String txtCadreId) { + this.txtCadreId = txtCadreId; + } + + public String getSalaryUnit() { + return this.salaryUnit; + } + + public void setSalaryUnit(String salaryUnit) { + this.salaryUnit = salaryUnit; + } + + public String getPremium() { + return this.premium; + } + + public void setPremium(String premium) { + this.premium = premium; + } + + public String getAgeFrom() { + return this.ageFrom; + } + + public void setAgeFrom(String ageFrom) { + this.ageFrom = ageFrom; + } + + public String getAgeTo() { + return this.ageTo; + } + + public void setAgeTo(String ageTo) { + this.ageTo = ageTo; + } + + public String getAicContribution() { + return this.aicContribution; + } + + public void setAicContribution(String aicContribution) { + this.aicContribution = aicContribution; + } + + public String getDocumentRequired() { + return this.documentRequired; + } + + public void setDocumentRequired(String documentRequired) { + this.documentRequired = documentRequired; + } + + public String getCoverName() { + return this.coverName; + } + + public void setCoverName(String coverName) { + this.coverName = coverName; + } + + public String getSumInsured() { + return this.sumInsured; + } + + public void setSumInsured(String sumInsured) { + this.sumInsured = sumInsured; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMisreportQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMisreportQVO.java new file mode 100644 index 0000000..5e75c94 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMisreportQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmMisreportQVO extends BaseQueryVO implements Serializable { + private String locationCode; + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMyWorkflowQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMyWorkflowQVO.java new file mode 100644 index 0000000..898e6c4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmMyWorkflowQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmMyWorkflowQVO extends BaseQueryVO implements Serializable { + private String workflowType; + + private String txtStatus; + + private String empId; + + private String id; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getWorkflowType() { + return this.workflowType; + } + + public void setWorkflowType(String newWorkflowType) { + this.workflowType = newWorkflowType; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCalMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCalMstQVO.java new file mode 100644 index 0000000..0ac9d01 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCalMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgCalMstQVO extends BaseQueryVO implements Serializable { + private String calendarType; + + public String getCalendarType() { + return this.calendarType; + } + + public void setCalendarType(String newCalendarType) { + this.calendarType = newCalendarType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java new file mode 100644 index 0000000..a65eca2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgClassDtlQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgClassDtlQVO extends BaseQueryVO implements Serializable { + private String Code; + + private String Id; + + public String getCode() { + return this.Code; + } + + public void setCode(String newCode) { + this.Code = newCode; + } + + public String getId() { + return this.Id; + } + + public void setId(String newId) { + this.Id = newId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java new file mode 100644 index 0000000..9132e72 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgCntryMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgCntryMstQVO extends BaseQueryVO implements Serializable { + String countryCode; + + public String getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String newCountryCode) { + this.countryCode = newCountryCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolCalQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolCalQVO.java new file mode 100644 index 0000000..eee5ff8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolCalQVO.java @@ -0,0 +1,66 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgHolCalQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String siteCode; + + private String siteId; + + private String state; + + private String stateId; + + private String stateCode; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getStateId() { + return this.stateId; + } + + public void setStateId(String newStateId) { + this.stateId = newStateId; + } + + public String getStateCode() { + return this.stateCode; + } + + public void setStateCode(String newStateCode) { + this.stateCode = newStateCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java new file mode 100644 index 0000000..9c8b4f7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgHolTypeMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgHolTypeMstQVO extends BaseQueryVO implements Serializable { + private String holidayType; + + public String getHolidayType() { + return this.holidayType; + } + + public void setHolidayType(String newHolidayType) { + this.holidayType = newHolidayType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgIncrementQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgIncrementQVO.java new file mode 100644 index 0000000..62f9087 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgIncrementQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgIncrementQVO extends BaseQueryVO implements Serializable { + private String startDate; + + private String endDate; + + private String ratingHdrId; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getRatingHdrId() { + return this.ratingHdrId; + } + + public void setRatingHdrId(String newRatingHdrId) { + this.ratingHdrId = newRatingHdrId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java new file mode 100644 index 0000000..c06e624 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgRatingMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgRatingMstQVO extends BaseQueryVO implements Serializable { + String ratingHeaderCode; + + public String getRatingHeaderCode() { + return this.ratingHeaderCode; + } + + public void setRatingHeaderCode(String newRatingHeaderCode) { + this.ratingHeaderCode = newRatingHeaderCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java new file mode 100644 index 0000000..562cc25 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgScaleMstQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgScaleMstQVO extends BaseQueryVO implements Serializable { + private String scaleCode; + + private String revision; + + public String getScaleCode() { + return this.scaleCode; + } + + public void setScaleCode(String newScaleCode) { + this.scaleCode = newScaleCode; + } + + public String getRevision() { + return this.revision; + } + + public void setRevision(String newRevision) { + this.revision = newRevision; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java new file mode 100644 index 0000000..d9b92a5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgSkillMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgSkillMstQVO extends BaseQueryVO implements Serializable { + String skillTypeCode; + + public String getSkillTypeCode() { + return this.skillTypeCode; + } + + public void setSkillTypeCode(String newSkillTypeCode) { + this.skillTypeCode = newSkillTypeCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java new file mode 100644 index 0000000..9806d40 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmOrgWorkGroupMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmOrgWorkGroupMstQVO extends BaseQueryVO implements Serializable { + private String code; + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java new file mode 100644 index 0000000..58be80d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmCriteriaQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmCriteriaQVO extends BaseQueryVO implements Serializable { + private String toGradeId; + + private String fromDesigId; + + private String toDesigId; + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java new file mode 100644 index 0000000..8992fea --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmExperienceScoreQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmExperienceScoreQVO extends BaseQueryVO implements Serializable { + private String designationId; + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmGenAssQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmGenAssQVO.java new file mode 100644 index 0000000..8896c35 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmGenAssQVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmGenAssQVO extends BaseQueryVO implements Serializable { + private String siteCode; + + private String prmNo; + + private String postFrom; + + private String postTo; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getPostFrom() { + return this.postFrom; + } + + public void setPostFrom(String newPostFrom) { + this.postFrom = newPostFrom; + } + + public String getPostTo() { + return this.postTo; + } + + public void setPostTo(String newPostTo) { + this.postTo = newPostTo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java new file mode 100644 index 0000000..8787fa9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmKPARatingQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmKPARatingQVO extends BaseQueryVO implements Serializable { + String positionId; + + String ratingId; + + public String getPositionId() { + return this.positionId; + } + + public void setPositionId(String newPositionId) { + this.positionId = newPositionId; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java new file mode 100644 index 0000000..80cb8dc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmNoticeDtlQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmNoticeDtlQVO extends BaseQueryVO implements Serializable { + String noticeId; + + public String getNoticeId() { + return this.noticeId; + } + + public void setNoticeId(String newNoticeId) { + this.noticeId = newNoticeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmOrderQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmOrderQVO.java new file mode 100644 index 0000000..6443ac6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmOrderQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmOrderQVO extends BaseQueryVO implements Serializable { + private String empId; + + private String orderNo; + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java new file mode 100644 index 0000000..05724d9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmQualCriteriaQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmQualCriteriaQVO extends BaseQueryVO implements Serializable { + private String designationId; + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java new file mode 100644 index 0000000..43e5104 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmTestScoreQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmTestScoreQVO extends BaseQueryVO implements Serializable { + String positionId; + + String examType; + + public String getPositionId() { + return this.positionId; + } + + public void setPositionId(String newPositionId) { + this.positionId = newPositionId; + } + + public String getExamType() { + return this.examType; + } + + public void setExamType(String newExamType) { + this.examType = newExamType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmViewAssQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmViewAssQVO.java new file mode 100644 index 0000000..b7fefb1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmPrmViewAssQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmPrmViewAssQVO extends BaseQueryVO implements Serializable { + private String siteCode; + + private String prmNo; + + private String toPosition; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getToPosition() { + return this.toPosition; + } + + public void setToPosition(String newToPosition) { + this.toPosition = newToPosition; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java new file mode 100644 index 0000000..d06ebd9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecAdvtMtnQVO.java @@ -0,0 +1,6 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecAdvtMtnQVO extends BaseQueryVO implements Serializable {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java new file mode 100644 index 0000000..48c17bd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecApplnMtnQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecApplnMtnQVO extends BaseQueryVO implements Serializable { + private String referenceNo; + + private String applForDesignation; + + private String applicationNo; + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java new file mode 100644 index 0000000..c52ab68 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecEmpRecCreationQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecEmpRecCreationQVO extends BaseQueryVO implements Serializable { + private String applicationNo; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java new file mode 100644 index 0000000..fca89e2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecScrutAppMntQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecScrutAppMntQVO extends BaseQueryVO implements Serializable { + String stage; + + public String getStage() { + return this.stage; + } + + public void setStage(String newStage) { + this.stage = newStage; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java new file mode 100644 index 0000000..2a3c036 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRecTestCentreMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRecTestCentreMstQVO extends BaseQueryVO implements Serializable { + String testCentreCodeId; + + public String getTestCentreCodeId() { + return this.testCentreCodeId; + } + + public void setTestCentreCodeId(String newTestCentreCodeId) { + this.testCentreCodeId = newTestCentreCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRetireForecastQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRetireForecastQVO.java new file mode 100644 index 0000000..2e90ad6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRetireForecastQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRetireForecastQVO extends BaseQueryVO implements Serializable { + private String fromDate; + + private String toDate; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRoasterEntryQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRoasterEntryQVO.java new file mode 100644 index 0000000..a9368f7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmRoasterEntryQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmRoasterEntryQVO extends BaseQueryVO implements Serializable { + private String txtRoasterCode; + + public String getTxtRoasterCode() { + return this.txtRoasterCode; + } + + public void setTxtRoasterCode(String txtRoasterCode) { + this.txtRoasterCode = txtRoasterCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepApplnQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepApplnQVO.java new file mode 100644 index 0000000..1830ab5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepApplnQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepApplnQVO extends BaseQueryVO implements Serializable { + private String applicationNo; + + private String initiatedBy; + + private String empId; + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepCatMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepCatMstQVO.java new file mode 100644 index 0000000..3415f1d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepCatMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepCatMstQVO extends BaseQueryVO implements Serializable { + private String separationCode; + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrEmpQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrEmpQVO.java new file mode 100644 index 0000000..2b8ffa9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrEmpQVO.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepClrEmpQVO extends BaseQueryVO { + private String empNoId; + + private String tmplDescId; + + private String screenMode; + + private String empNo; + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getScreenMode() { + return this.screenMode; + } + + public void setScreenMode(String newScreenMode) { + this.screenMode = newScreenMode; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java new file mode 100644 index 0000000..87c42a4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepClrTmplMstQVO.java @@ -0,0 +1,15 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepClrTmplMstQVO extends BaseQueryVO { + private String tmplDescId; + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepOrderQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepOrderQVO.java new file mode 100644 index 0000000..6743797 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSepOrderQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSepOrderQVO extends BaseQueryVO implements Serializable { + private String orderNo; + + private String orderNoId; + + private String applnId; + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSettleQueryVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSettleQueryVO.java new file mode 100644 index 0000000..7a33e1d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmSettleQueryVO.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmSettleQueryVO extends BaseQueryVO implements Serializable { + private String hidDetailId; + + private String settleHeads; + + private String advanceDescription; + + String advCodeId; + + public String getHidDetailId() { + return this.hidDetailId; + } + + public void setHidDetailId(String newHidDetailId) { + this.hidDetailId = newHidDetailId; + } + + public String getSettleHeads() { + return this.settleHeads; + } + + public void setSettleHeads(String newSettleHeads) { + this.settleHeads = newSettleHeads; + } + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String getAdvCodeId() { + return this.advCodeId; + } + + public void setAdvCodeId(String newAdvCodeId) { + this.advCodeId = newAdvCodeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java new file mode 100644 index 0000000..1952a41 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalCloseQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCalCloseQVO extends BaseQueryVO implements Serializable { + String courseName; + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalQVO.java new file mode 100644 index 0000000..44e349b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCalQVO.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCalQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String site; + + private String startDate; + + private String endDate; + + private String siteName; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java new file mode 100644 index 0000000..e5dc912 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsBudQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCrsBudQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String calendarId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java new file mode 100644 index 0000000..e05f0ab --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngCrsMstQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngCrsMstQVO extends BaseQueryVO implements Serializable { + private String trainingBranch; + + public String getTrainingBranch() { + return this.trainingBranch; + } + + public void setTrainingBranch(String newTrainingBranch) { + this.trainingBranch = newTrainingBranch; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java new file mode 100644 index 0000000..371fddb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpAttQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpAttQVO extends BaseQueryVO implements Serializable { + private String id; + + private String courseNameId; + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getCourseNameId() { + return this.courseNameId; + } + + public void setCourseNameId(String newCourseNameId) { + this.courseNameId = newCourseNameId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java new file mode 100644 index 0000000..fe8615a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpFbkQVO.java @@ -0,0 +1,16 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpFbkQVO extends BaseQueryVO implements Serializable { + private String courseId; + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java new file mode 100644 index 0000000..d8ae6f4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpHistQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpHistQVO extends BaseQueryVO implements Serializable { + private String empNo; + + private String course; + + private String calendarName; + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getCourse() { + return this.course; + } + + public void setCourse(String newCourse) { + this.course = newCourse; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java new file mode 100644 index 0000000..a4987ea --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngEmpReqQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngEmpReqQVO extends BaseQueryVO implements Serializable { + private String employeeNumber; + + String empId; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java new file mode 100644 index 0000000..00a1c87 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacFdbkQVO.java @@ -0,0 +1,6 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngFacFdbkQVO extends BaseQueryVO implements Serializable {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacQVO.java new file mode 100644 index 0000000..af446b0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacQVO.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngFacQVO extends BaseQueryVO implements Serializable { + private String facultyType; + + private String employeeNo; + + private String baseInstitution; + + public String getFacultyType() { + return this.facultyType; + } + + public void setFacultyType(String newFacultyType) { + this.facultyType = newFacultyType; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getBaseInstitution() { + return this.baseInstitution; + } + + public void setBaseInstitution(String newBaseInstitution) { + this.baseInstitution = newBaseInstitution; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java new file mode 100644 index 0000000..5c56aac --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngFacTrngQVO.java @@ -0,0 +1,86 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngFacTrngQVO extends BaseQueryVO implements Serializable { + private String calendarName; + + private String courseName; + + private String startDate; + + private String endDate; + + private String site; + + String calId; + + String courseId; + + String siteId; + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java new file mode 100644 index 0000000..d785083 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/vo/HrmTrngInsCrsQVO.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.hrms.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class HrmTrngInsCrsQVO extends BaseQueryVO implements Serializable { + private String instituteCode; + + private String type; + + public String getInstituteCode() { + return this.instituteCode; + } + + public void setInstituteCode(String newInstituteCode) { + this.instituteCode = newInstituteCode; + } + + public String getType() { + return this.type; + } + + public void setType(String newType) { + this.type = newType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/AddAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/AddAction.java new file mode 100644 index 0000000..a92af27 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/AddAction.java @@ -0,0 +1,175 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class AddAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sHeaderPrimaryKey = oBaseForm.getHeaderPrimaryKey(); + String sNextPageEndField = null; + UserSession oUser = getUserSessionBean(request); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + boolean bGetDetailNotPressed = false; + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + BaseBD oBaseBD = null; + if (null == oBaseDetailVO) { + bGetDetailNotPressed = true; + oBaseBD = getDetailBusinessDelegate(form, request); + if (!oBaseForm.getScreenMode().equals("N")) { + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, false, oUser); + } else { + oBaseDetailVO = new BaseDetailVO(); + oBaseDetailVO.setMaxPage(oDetailSizeValues.getMaxPages()); + oBaseDetailVO.setRecordsPerPage(oDetailSizeValues.getDetailRecordPerPage()); + } + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + } + long lPageRequested = getPageRequested(oBaseDetailVO, oDetailSizeValues); + ArrayList oDetailList = null; + if (!oBaseForm.getScreenMode().equals("N")) { + if (oBaseDetailVO.getCurrentPage() != lPageRequested) { + if (oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.savefirst", "M"); + oBaseBD = getDetailBusinessDelegate(form, request); + oBaseDetailVO.setRowAdded(oBaseDetailVO.getRowAdded() + 1); + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, sHeaderPrimaryKey, lPageRequested, oDetailSizeValues, oBaseDetailVO, false, oUser); + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + oDetailList = oBaseDetailVO.getOThisPageData(); + if (oBaseDetailVO.getOAllPageData().size() > 0) { + BaseDetailBean oNewBean = oBaseDetailVO.getOAllPageData().get(oBaseDetailVO.getOAllPageData().size() - 1); + try { + sNextPageEndField = BeanUtils.getProperty(oNewBean, "txtToAmount"); + long lEndField = Long.parseLong(sNextPageEndField); + lEndField += 1L; + sNextPageEndField = String.valueOf(lEndField); + } catch (NoSuchMethodException noSuchMethodException) {} + } + } else { + if (bGetDetailNotPressed) { + oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + } else { + oDetailList = getDetailArray(oBaseForm); + } + oBaseDetailVO.setRowAdded(oBaseDetailVO.getRowAdded() + 1); + } + } else { + oBaseDetailVO.setRowAdded(oBaseDetailVO.getRowAdded() + 1); + if (1L != lPageRequested) + if (oBaseForm.isDetailDataChanged()) + throw new EnrgiseApplicationException("wenrgise.common.savefirst", "M"); + if (null == oBaseForm.getStatus()) { + oDetailList = new ArrayList(); + } else { + oDetailList = getDetailArray(oBaseForm); + } + } + String sNextStart = "0"; + try { + if (oDetailList.size() > 0) { + String[] sStatus = oBaseForm.getStatus(); + String[] sStartField = BeanUtils.getArrayProperty(oBaseForm, "txtFromAmount"); + String[] sEndField = BeanUtils.getArrayProperty(oBaseForm, "txtToAmount"); + int iIndex = oDetailList.size() - 1; + boolean iFlag = true; + while (sStatus[iIndex].equals("D")) { + iIndex--; + if (iIndex < 0) { + iIndex = 0; + iFlag = false; + break; + } + } + if (iFlag) { + String sTemp = sEndField[iIndex]; + if (null == sTemp || sTemp.equals("")) + throw new EnrgiseApplicationException("Payroll.common.addrow.mandatory.missing", "E"); + sNextStart = Long.toString(Long.parseLong(sEndField[iIndex]) + 1L); + } else { + sNextStart = "0"; + } + } + if (null != sNextPageEndField) + sNextStart = sNextPageEndField; + } catch (NoSuchMethodException noSuchMethodException) {} + BaseDetailBean oBaseDetailBean = getDetailBean(form); + oBaseDetailBean.setStatus("N"); + BeanUtils.setProperty(oBaseDetailBean, "txtFromAmount", sNextStart); + oDetailList.add(oBaseDetailBean); + oBaseForm.setThisPageDetailCount(oBaseForm.getThisPageDetailCount() + 1); + oBaseForm.setDetailDataChanged(true); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailList); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + ArrayList oClicked = getDetailClicked(); + ArrayList oEnableList = new ArrayList(); + enableDisable(oBaseForm, oClicked, "D"); + enableDisable(oBaseForm, oEnableList, "E"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) + oThisPageVO.setODetailList(oDetailList); + oBaseBD = getDetailBusinessDelegate(form, request); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailList); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + return mapping.findForward("success"); + } + + private void populateThisPageList(BaseDetailVO oBaseDetailVO, DetailSizeValues oDetailSizeValues) { + long lGrandTotalDetailRecord = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded(); + int iPage = (int)lGrandTotalDetailRecord % oDetailSizeValues.getDetailRecordPerPage() + 1; + int iDetailStartPosition = (iPage - 1) * oDetailSizeValues.getDetailRecordPerPage() + 1; + if (iDetailStartPosition < lGrandTotalDetailRecord + 1L); + } + + private long getPageRequested(BaseDetailVO oBaseDetailVO, DetailSizeValues oDetailSizeValues) { + long lLastRecordNumber = oBaseDetailVO.getTotalDetailRecord() - oBaseDetailVO.getRowDeleted() + oBaseDetailVO.getRowAdded() + 1L; + return (lLastRecordNumber % oDetailSizeValues.getDetailRecordPerPage() != 0L) ? (lLastRecordNumber / oDetailSizeValues.getDetailRecordPerPage() + 1L) : (lLastRecordNumber / oDetailSizeValues.getDetailRecordPerPage()); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/BaseAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/BaseAction.java new file mode 100644 index 0000000..b3ecc71 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/BaseAction.java @@ -0,0 +1,680 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.logging.Logger; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionError; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.util.MessageResources; +import wenrgise.common.bean.AccessBean; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseMessageKeyException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.utility.MessageKey; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.DetailSizeValues; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.common.xml.vo.DetailScreen; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public abstract class BaseAction extends Action { + static final Logger log = Logger.getLogger("wenrgise.common.webtier.action.BaseAction"); + + MessageResources oMsgRes = null; + + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ActionErrors oErrorTable = null; + ActionMessages oMessageTable = null; + BaseForm oBaseForm = (BaseForm)form; + this.oMsgRes = getResources(request); + try { + return executeImpl(mapping, form, request, response); + } catch (ClassNotFoundException oClassEx) { + processSystemException(oClassEx, oErrorTable); + } catch (InstantiationException oInSt) { + processSystemException(oInSt, oErrorTable); + } catch (InvocationTargetException oInvTar) { + processSystemException(oInvTar, oErrorTable); + } catch (IllegalAccessException oIlAcc) { + processSystemException(oIlAcc, oErrorTable); + } catch (EnrgiseSystemException oSys) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + String sKey = (null != oSys.getKey()) ? oSys.getKey() : "wenrgise.common.system"; + ActionError oSysError = new ActionError(sKey); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } catch (EnrgiseApplicationException oApp) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + if (oMessageTable == null) + oMessageTable = new ActionMessages(); + processException(oErrorTable, oMessageTable, oApp); + if (oApp.getList() != null) { + Iterator oIt = oApp.getList().iterator(); + while (oIt.hasNext()) { + EnrgiseApplicationException oAppErr = oIt.next(); + processException(oErrorTable, oMessageTable, oAppErr); + } + } + } finally { + if (oErrorTable != null) { + System.out.println("Save errors"); + if (oErrorTable.size() > 0) { + saveErrors(request, oErrorTable); + return mapping.findForward("success"); + } + } + if (oMessageTable != null) + if (oMessageTable.size() > 0) { + System.out.println("Save messages"); + saveMessages(request, oMessageTable); + return mapping.findForward("success"); + } + } + return null; + } + + private void processSystemException(Exception oEc, ActionErrors oErrorTable) { + if (oErrorTable == null) + oErrorTable = new ActionErrors(); + EnrgiseSystemException oSys = new EnrgiseSystemException("wenrgise.common.system", oEc); + ActionError oSysError = new ActionError(oSys.getKey()); + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", oSysError); + } + + private void processException(ActionErrors oErrorTable, ActionMessages oMessageTable, EnrgiseApplicationException oApp) { + if (oApp.getArguments() == null) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else if (oApp instanceof EnrgiseMessageKeyException) { + processMessageKeyException((EnrgiseMessageKeyException)oApp, oErrorTable, oMessageTable); + } else if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oApp.getArguments().toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oApp.getArguments().toArray())); + } + } + + private void processMessageKeyException(EnrgiseMessageKeyException oApp, ActionErrors oErrorTable, ActionMessages oMessageTable) { + ArrayList oList = oApp.getArguments(); + if (null == oList) { + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey())); + } + } else { + ArrayList oNewList = new ArrayList(); + Iterator oIt = oList.iterator(); + while (oIt.hasNext()) { + Object obj = oIt.next(); + if (obj instanceof MessageKey) { + MessageKey oMsgKey = (MessageKey)obj; + oNewList.add(this.oMsgRes.getMessage(oMsgKey.getKey())); + continue; + } + oNewList.add(obj); + } + if (oApp.getErrorType().equals("E")) { + oErrorTable.add("org.apache.struts.action.GLOBAL_ERROR", new ActionError(oApp.getKey(), oNewList.toArray())); + } else { + oMessageTable.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage(oApp.getKey(), oNewList.toArray())); + } + } + } + + protected BaseQueryVO getQueryVO(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sQueryVO = ParamUtil.getQueryVO(sFormName); + BaseQueryVO oBaseQueryVO = (BaseQueryVO)Class.forName(sQueryVO).newInstance(); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + return oBaseQueryVO; + } + + protected BaseDetailBean getDetailBean(ActionForm form) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + return oBaseDetailBean; + } + + protected BaseBD getHeaderBusinessDelegate(ActionForm form, HttpServletRequest request) throws RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getHeaderBD(sFormName); + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } + + protected BaseBD getDetailBusinessDelegate(ActionForm form, HttpServletRequest request) throws RemoteException, IllegalAccessException, InstantiationException, ClassNotFoundException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + String sBusinessDelegate = ParamUtil.getDetailBD(sFormName, sScreenName); + BaseBD oBaseBD = (BaseBD)Class.forName(sBusinessDelegate).newInstance(); + UserSession oUser = getUserSessionBean(request); + oBaseBD.setModuleName(ParamUtil.getModuleName()); + oBaseBD.setModuleFacade(oUser.getModuleFacade()); + oBaseBD.setOUserInfo(oUser.getUserInfo()); + return oBaseBD; + } + + protected BaseHeaderBean getBaseHeaderBean(String sFormName) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + String sBaseHeaderBean = ParamUtil.getHeaderBean(sFormName); + BaseHeaderBean oBaseHeaderBean = (BaseHeaderBean)Class.forName(sBaseHeaderBean).newInstance(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + oBaseHeaderBean.setPseudoHeader(pseudoHeader); + return oBaseHeaderBean; + } + + protected ArrayList getDetailArrayList(BaseForm oBaseForm, String sFormName, String sScreenName) throws EnrgiseSystemException, IllegalAccessException, InstantiationException, ClassNotFoundException { + String sDetailArrayList = ParamUtil.getDetailArrayName(sFormName, sScreenName); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, sDetailArrayList); + return oList; + } + + protected UserSession getUserSessionBean(HttpServletRequest request) { + HttpSession session = request.getSession(); + return (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + } + + protected void clearDetailLists(BaseForm form, ArrayList oDetailList) throws IllegalAccessException, InvocationTargetException { + Iterator oIt = oDetailList.iterator(); + while (oIt.hasNext()) { + DetailScreen oDetailScreen = oIt.next(); + BeanUtils.copyProperty(form, oDetailScreen.get_DetailArrayName(), new ArrayList()); + } + } + + protected ArrayList getDetailArray(BaseForm oBaseForm) throws EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + ArrayList oDetailArray = new ArrayList(); + String sDetailBean = ParamUtil.getDetailBeanName(sFormName, sScreenName); + BaseDetailBean oBaseDetailBean = (BaseDetailBean)Class.forName(sDetailBean).newInstance(); + ArrayList oFieldList = new ArrayList(); + oFieldList = getFieldList(oFieldList, oBaseDetailBean.getClass()); + ArrayList oList = (ArrayList)EnrgiseUtil.getFieldValue(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName)); + for (int iRecord = 0; iRecord < oBaseForm.getThisPageDetailCount(); iRecord++) { + if (null == oList) + break; + oBaseDetailBean = oList.get(iRecord); + if (null == oBaseDetailBean) + break; + Iterator oIt = oFieldList.iterator(); + while (oIt.hasNext()) { + try { + Field ob = oIt.next(); + System.out.println(String.valueOf("Record name ").concat(String.valueOf(iRecord))); + String sFieldName = ob.getName(); + System.out.println(String.valueOf("Field name ").concat(String.valueOf(sFieldName))); + if (sFieldName.startsWith("disab")) + continue; + if (ob.getType().getName().equals("java.lang.String")) { + String sValue = BeanUtils.getIndexedProperty(oBaseForm, sFieldName, iRecord); + BeanUtils.setProperty(oBaseDetailBean, sFieldName, sValue); + } + } catch (NoSuchMethodException noSuchMethodException) {} + } + oDetailArray.add(oBaseDetailBean); + } + return oDetailArray; + } + + private ArrayList getFieldList(ArrayList oFieldList, Class oClass) { + if (oClass == null) + return oFieldList; + Field[] oFields = oClass.getDeclaredFields(); + EnrgiseUtil.addToList(oFieldList, (Object[])oFields); + return getFieldList(oFieldList, oClass.getSuperclass()); + } + + protected void changeMode(BaseForm oBaseForm, HttpServletRequest request) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + String sFormName = oBaseForm.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseForm, oBaseHeaderBean); + clearDetailLists(oBaseForm, ParamUtil.getDetailList(sFormName)); + UserSession oUser = getUserSessionBean(request); + oUser.putBaseHeaderVO(sFormName, null); + oUser.removeAllDetailVO(sFormName); + resetForm(oBaseForm); + } + + protected void checkHeaderNavigation(BaseForm oBaseForm, BaseHeaderVO oBaseHeaderVO) throws EnrgiseApplicationException { + long lPositionRequested = Long.parseLong(oBaseForm.getUserPositionRequested()); + if (null != oBaseHeaderVO) { + if (lPositionRequested <= 0L || lPositionRequested > oBaseHeaderVO.getTotalCount()) + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + oBaseForm.setPositionRequested(lPositionRequested); + } else { + throw new EnrgiseApplicationException("wenrgise.common.headerNavigation", "E"); + } + } + + private void resetForm(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setPositionRequested(0L); + oBaseForm.setTotalCount(0L); + oBaseForm.setTotalDetailRecord(0L); + oBaseForm.setTotalHeaderRecord(0L); + oBaseForm.setHeaderPrimaryKey(null); + oBaseForm.setUserPageRequested(null); + oBaseForm.setDetailId(null); + oBaseForm.setStatus(null); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setChecked(null); + oBaseForm.setUserPositionRequested(null); + oBaseForm.setTotalCount(0L); + oBaseForm.setNewPageRequested(null); + oBaseForm.setItemChecked(null); + oBaseForm.setLovKey(null); + oBaseForm.setTxtSearchFields(null); + oBaseForm.setTxtDisplayFields(null); + oBaseForm.setTxtIndex(null); + oBaseForm.setThisPageDetailCount(0); + oBaseForm.setTotalPageCount(0L); + oBaseForm.setHeaderStatus(null); + oBaseForm.setButtonClicked(null); + oBaseForm.setButtonName(null); + oBaseForm.setDetailStartPage(0); + } + + protected void checkDetailNavigation(BaseForm oBaseForm, BaseDetailVO oBaseDetailVO) throws EnrgiseApplicationException { + boolean flag = false; + long lPageRequested = 0L; + if (EnrgiseUtil.checkString(oBaseForm.getUserPageRequested())) { + lPageRequested = Long.parseLong(oBaseForm.getUserPageRequested()); + } else { + flag = true; + } + if (null != oBaseDetailVO) { + if (flag == false) { + if (lPageRequested <= 0L || oBaseDetailVO.getTotalDetailRecord() <= oBaseDetailVO.getRecordsPerPage() * (lPageRequested - 1L)) + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + oBaseForm.setPageRequested(lPageRequested); + } else if (oBaseForm.getDetailList() != null) { + oBaseForm.setPageRequested(1L); + } else { + oBaseForm.setPageRequested(0L); + } + } else { + throw new EnrgiseApplicationException("wenrgise.common.detailNavigation", "E"); + } + } + + protected void enableDisable(BaseForm oBaseForm, ArrayList arylstFields, String enableFlag) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + if (null != arylstFields) { + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + StringBuffer sField = new StringBuffer(iterFields.next()); + String sProperty = String.valueOf("setDisab").concat(String.valueOf(sField.toString())); + try { + Class[] oCls = { Class.forName("java.lang.String") }; + Method oMethod = oBaseForm.getClass().getMethod(sProperty, oCls); + String sFlag = enableFlag.equals("D") ? "true" : "false"; + Object[] obj = { sFlag }; + oMethod.invoke(oBaseForm, obj); + } catch (NoSuchMethodException nse) { + System.out.println(String.valueOf(String.valueOf(String.valueOf("The problem is ").concat(String.valueOf(nse.getMessage()))).concat(String.valueOf(" "))).concat(String.valueOf(sProperty))); + } + } + } + } + + protected void enableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "E"); + } catch (Exception exception) {} + } + + protected void disableAll(BaseForm oBaseForm) { + try { + ArrayList arylstDisFields = new ArrayList(); + ArrayList arylstFields = new ArrayList(); + arylstFields = getFieldList(arylstFields, oBaseForm.getClass()); + Iterator iterFields = arylstFields.iterator(); + while (iterFields.hasNext()) { + Field oField = iterFields.next(); + if (oField.getName().startsWith("disab")) + arylstDisFields.add(oField.getName().replaceFirst("disab", "")); + } + enableDisable(oBaseForm, arylstDisFields, "D"); + } catch (Exception exception) {} + } + + protected ArrayList queryClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butSave"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList insertClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butInsert"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + arylstFields.add("butPrint"); + arylstFields.add("butGetDetail"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("newPageRequested"); + arylstFields.add("butJumpDetail"); + return arylstFields; + } + + protected ArrayList executeClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butExecute"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList deleteClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butQuery"); + arylstFields.add("butExecute"); + arylstFields.add("butDelete"); + return arylstFields; + } + + protected ArrayList saveClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList refreshClicked() { + ArrayList arylstFields = new ArrayList(); + return arylstFields; + } + + protected ArrayList nextHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList prevHeaderClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butExecute"); + arylstFields.add("butAddRow"); + arylstFields.add("butDelRow"); + arylstFields.add("butNextDetail"); + arylstFields.add("butPrevDetail"); + arylstFields.add("butJumpDetail"); + arylstFields.add("newPageRequested"); + return arylstFields; + } + + protected ArrayList getDetailClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList addRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected ArrayList delRowClicked() { + ArrayList arylstFields = new ArrayList(); + arylstFields.add("butDelRow"); + arylstFields.add("butGetDetail"); + return arylstFields; + } + + protected void controlHeaderNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList arylstFields = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalCount(); + long lRecordNum = oBaseForm.getPositionRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + arylstFields.add("butNextHeader"); + arylstFields.add("butPrevHeader"); + arylstFields.add("newPositionRequested"); + arylstFields.add("butJumpHeader"); + } else { + if (lRecordNum == lTotalRecord) + arylstFields.add("butNextHeader"); + if (lRecordNum == 1L) + arylstFields.add("butPrevHeader"); + } + enableDisable(oBaseForm, arylstFields, "D"); + } + + protected void controlDetailNavigation(BaseForm oBaseForm) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + ArrayList oEnableList = new ArrayList(); + ArrayList oDisableList = new ArrayList(); + long lTotalRecord = oBaseForm.getTotalPageCount(); + long lRecordNum = oBaseForm.getPageRequested(); + if (lTotalRecord == 0L || lTotalRecord == 1L) { + oDisableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + oDisableList.add("newPageRequested"); + oDisableList.add("butJumpDetail"); + } else if (lRecordNum == lTotalRecord) { + oEnableList.add("butPrevDetail"); + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oDisableList.add("butNextDetail"); + } else if (lRecordNum == 1L) { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oDisableList.add("butPrevDetail"); + } else { + oEnableList.add("newPageRequested"); + oEnableList.add("butJumpDetail"); + oEnableList.add("butNextDetail"); + oEnableList.add("butPrevDetail"); + } + enableDisable(oBaseForm, oEnableList, "E"); + enableDisable(oBaseForm, oDisableList, "D"); + } + + protected void resetDetailPageData(BaseForm oBaseForm) { + oBaseForm.setPageRequested(0L); + oBaseForm.setTotalPageCount(0L); + } + + protected long calculateTotalDetailPage(String sFormName, String sScreenName, long lTotDetRecord) { + long totRecPerPage = ParamUtil.getDetailRecordPerPage(sFormName, sScreenName); + if (lTotDetRecord % totRecPerPage != 0L) + return lTotDetRecord / totRecPerPage + 1L; + return lTotDetRecord / totRecPerPage; + } + + protected BaseDetailVO getDetailData(BaseForm oBaseForm, String sFormName, String sScreenName, long lPageRequested, HttpServletRequest request, BaseBD oBaseBD, boolean bForce, UserSession oUser) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + String sHeaderPrimaryKey = oBaseForm.getHeaderPrimaryKey(); + String pseudoHeader = ParamUtil.getPseudoHeaderFlag(sFormName); + DetailSizeValues oDetailSizeValues = new DetailSizeValues(); + oDetailSizeValues.setDetailRecordPerPage(ParamUtil.getDetailRecordPerPage(sFormName, sScreenName)); + oDetailSizeValues.setMaxPages(ParamUtil.getMaxDetailPages(sFormName, sScreenName)); + BaseDetailVO oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (!EnrgiseUtil.checkString(pseudoHeader)) { + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, sHeaderPrimaryKey, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } else { + BaseQueryVO oBaseQueryVO = getQueryVO((ActionForm)oBaseForm); + BeanUtils.copyProperties(oBaseQueryVO, oBaseForm); + oBaseDetailVO = oBaseBD.getDetailRecord(sFormName, sScreenName, oBaseQueryVO, lPageRequested, oDetailSizeValues, oBaseDetailVO, bForce, oUser); + } + if (oBaseDetailVO.getOThisPageData() != null) + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + oBaseForm.setPageRequested(lPageRequested); + oBaseForm.setThisPageDetailCount((null != oBaseDetailVO.getOThisPageData()) ? oBaseDetailVO.getOThisPageData().size() : 0); + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + oBaseForm.setNewPageRequested(null); + oBaseForm.setPageRequested(lPageRequested); + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + return oBaseDetailVO; + } + + protected void onLoad(ActionForm form, HttpServletRequest request, int actionName) throws RemoteException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, EnrgiseApplicationException, EnrgiseSystemException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseDetailVO oBaseDetailVO = new BaseDetailVO(); + UserSession oUser = getUserSessionBean(request); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setActionName(actionName); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oBaseDetailVO) { + ArrayList oDetailList = getDetailArrayList(oBaseForm, sFormName, sScreenName); + oThisPageVO.setODetailList(oDetailList); + } + oBaseBD.onLoadAction(oThisPageVO); + if (oThisPageVO != null) + if (oThisPageVO.getOHeaderBean() != null) + BeanUtils.copyProperties(form, oThisPageVO.getOHeaderBean()); + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + } + + protected void checkAccessInfo(UserSession oUserSession, String sComponentName, String sScreenMode, String sButtonName, int iActionName, String sWorkListId) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + HashMap oSecMap = oUserSession.getAccessInfo(); + AccessBean objBean = (AccessBean)oSecMap.get(sComponentName); + if (!EnrgiseUtil.checkString(sWorkListId)) { + if (iActionName == 10 || iActionName == 14 || iActionName == 23) + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + if (iActionName == 8) + if (sScreenMode.equalsIgnoreCase("N")) { + if (!objBean.getInsertFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.insert"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } else if (sScreenMode.equalsIgnoreCase("U")) { + if (!objBean.getUpdateFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.update"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + if (iActionName == 17 || iActionName == 15) + if (!objBean.getDeleteFlag().equalsIgnoreCase("Y")) { + ArrayList oParam = new ArrayList(); + MessageKey oMessageKey = new MessageKey("right.for.delete"); + oParam.add(oMessageKey); + throw new EnrgiseMessageKeyException("wenrgise.authorisation.error", oParam, "M"); + } + } + } + + protected String getComponentName(String sFormName) { + String sModFormName = sFormName.replace('.', ','); + int index = 0; + char g = ','; + char[] arrayModeFormName = sModFormName.toCharArray(); + System.out.println(sModFormName.substring(index)); + int k; + for (k = arrayModeFormName.length - 1; k > 0; k--) { + System.out.println(arrayModeFormName[k]); + if (arrayModeFormName[k] == g) { + index = k + 1; + break; + } + } + String sComponentName = sModFormName.substring(index, sModFormName.length()); + return sComponentName; + } + + public abstract ActionForward executeImpl(ActionMapping paramActionMapping, ActionForm paramActionForm, HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/DecrAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/DecrAction.java new file mode 100644 index 0000000..a7b7d4c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/DecrAction.java @@ -0,0 +1,64 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseDetailBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class DecrAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + UserSession oUser = getUserSessionBean(request); + BaseDetailVO oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + int count = 0; + ArrayList oDetailArray = getDetailArray(oBaseForm); + try { + String[] itemChecked = oBaseForm.getItemChecked(); + String[] sStatuss = oBaseForm.getStatus(); + String[] sStartFields = BeanUtils.getArrayProperty(oBaseForm, "txtFromAmount"); + System.out.println(itemChecked.length); + for (int i = 0; i < itemChecked.length; i++) { + if (itemChecked[i].equals("Y")) { + count++; + String sStartField = sStartFields[i]; + for (int j = i + 1; j < itemChecked.length; j++) { + String sStatus = sStatuss[j]; + if (!sStatus.equals("D")) { + sStartFields[j] = sStartField; + BaseDetailBean oBaseDetailBean = oDetailArray.get(j); + oBaseDetailBean.setStatus("U"); + BeanUtils.setProperty(oBaseDetailBean, "txtFromAmount", sStartField); + oDetailArray.set(j, oBaseDetailBean); + break; + } + } + ((BaseDetailBean)oDetailArray.get(i)).setStatus("D"); + ((BaseDetailBean)oDetailArray.get(i)).setItemChecked("N"); + oBaseDetailVO.setRowDeleted(oBaseDetailVO.getRowDeleted() + 1); + } + } + } catch (NoSuchMethodException noSuchMethodException) {} + if (count == 0) + throw new EnrgiseApplicationException("wenrgise.common.norowselected"); + if (count > 0) + oBaseForm.setDetailDataChanged(true); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailArray); + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/GetTabAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/GetTabAction.java new file mode 100644 index 0000000..855154f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/GetTabAction.java @@ -0,0 +1,140 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; +import wenrgise.hrms.webtier.action.BaseAction; + +public class GetTabAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + if (oBaseForm.isHeaderDataChanged() || oBaseForm.isDetailDataChanged()) { + if (oBaseForm.isDetailDataChanged()) { + ArrayList oDetailList = getDetailArray(oBaseForm); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oDetailList); + } + throw new EnrgiseApplicationException("wenrgise.common.datashouldbesaved", "M"); + } + BaseBD oBaseBD = getDetailBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + String sForwardedPage = oBaseForm.getForwardedPage(); + BaseDetailVO oPresentBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (null != oPresentBaseDetailVO) + oPresentBaseDetailVO.setCurrentPage(oBaseForm.getPageRequested()); + oUser.putBaseDetailVO(sFormName, sScreenName, oPresentBaseDetailVO); + BaseDetailVO oNextBaseDetailVO = oUser.getBaseDetailVO(sFormName, sForwardedPage); + if (null != oNextBaseDetailVO) { + oBaseForm.setPageRequested(oNextBaseDetailVO.getCurrentPage()); + oBaseForm.setThisPageDetailCount((null != oNextBaseDetailVO.getOThisPageData()) ? oNextBaseDetailVO.getOThisPageData().size() : 0); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(sForwardedPage); + oThisPageVO.setActionName(22); + ArrayList oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oThisPageVO.getODetailList()); + } + } else { + if (oBaseForm.getHeaderPrimaryKey() == null) + throw new EnrgiseApplicationException("wenrgise.common.bringheaderdata", "M"); + if (oPresentBaseDetailVO != null) { + oNextBaseDetailVO = getDetailData(oBaseForm, sFormName, sForwardedPage, 1L, request, oBaseBD, true, oUser); + long lTotDetRecord = oNextBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getForwardedPage(), lTotDetRecord)); + oUser.putBaseDetailVO(sFormName, sForwardedPage, oNextBaseDetailVO); + ArrayList oClicked = getDetailClicked(); + if (lTotDetRecord == 0L) { + oBaseForm.setPageRequested(0L); + oClicked.add("butDelRow"); + } + enableDisable(oBaseForm, oClicked, "D"); + controlDetailNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(sForwardedPage).concat(String.valueOf(".jsp")), "DETAIL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) { + if (null != oSecMap.get("D")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + if (null != oSecMap.get("E")) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("E"), "E"); + } + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailList = null; + BeanUtils.copyProperties(oBaseHeaderBean, form); + oDetailList = (oNextBaseDetailVO.getOThisPageData() != null) ? oNextBaseDetailVO.getOThisPageData() : new ArrayList(); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setODetailList(oDetailList); + oThisPageVO.setOHeaderBean(oBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getForwardedPage()); + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sForwardedPage), oThisPageVO.getODetailList()); + } + } + } + if (sForwardedPage != null) + oBaseForm.setScreenName(sForwardedPage); + onLoad(form, request, 22); + if (sForwardedPage != null) { + oUser.setForwardedPage(sFormName, sForwardedPage); + return mapping.findForward(sForwardedPage); + } + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java new file mode 100644 index 0000000..58fb30b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmAdhocReportAction.java @@ -0,0 +1,55 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.InvocationTargetException; +import java.util.Locale; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import jxl.Workbook; +import jxl.WorkbookSettings; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.hrms.bean.HrmAdhocReportHdrBean; +import wenrgise.hrms.ejb.business.HrmAdhocReportBO; +import wenrgise.hrms.webtier.action.BaseAction; +import wenrgise.hrms.webtier.form.HrmAdhocReportForm; + +public class HrmAdhocReportAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + response.setContentType("application/vnd.ms-excel"); + WorkbookSettings ws = new WorkbookSettings(); + ws.setLocale(new Locale("en", "EN")); + ServletOutputStream servletOutputStream = response.getOutputStream(); + HrmAdhocReportForm oForm = (HrmAdhocReportForm)form; + String sFormName = oForm.getClass().getName(); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, oForm); + HrmAdhocReportBO oHrmAdhocReportBO = new HrmAdhocReportBO(); + String reportName = oForm.getCode(); + StringBuffer fileName = new StringBuffer("\\"); + fileName.append(reportName); + fileName.append(".xls"); + response.setHeader("Content-disposition", String.valueOf(String.valueOf("attachment; filename=\"").concat(String.valueOf(fileName.toString()))).concat(String.valueOf("\""))); + try { + WritableWorkbook workbook = Workbook.createWorkbook((OutputStream)servletOutputStream, ws); + WritableSheet s = workbook.createSheet(reportName, 0); + oHrmAdhocReportBO.downloadAdhocReport((HrmAdhocReportHdrBean)oBaseHeaderBean, s); + workbook.write(); + workbook.close(); + servletOutputStream.flush(); + } catch (Exception e) { + e.printStackTrace(); + } + return mapping.findForward("success"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenEligRuleAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenEligRuleAction.java new file mode 100644 index 0000000..318d2d2 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenEligRuleAction.java @@ -0,0 +1,189 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; +import java.util.Stack; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.hrms.businessdelegate.HrmGenEligRuleBD; +import wenrgise.hrms.webtier.form.HrmGenEligRuleForm; + +public class HrmGenEligRuleAction extends BaseAction { + private HashMap mapEligClass; + + private Stack stkFormula = null; + + private Map mapAlias = new HashMap(); + + private int iAlias = 1; + + private boolean bOrFlag = false; + + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + HrmGenEligRuleForm oEligForm = (HrmGenEligRuleForm)form; + if (oEligForm.getHidAction() == null) + oEligForm.setHidAction("classinfo"); + if (oEligForm.getHidAction().equalsIgnoreCase("classinfo")) + getEligClass(oEligForm); + if (oEligForm.getHidAction().equalsIgnoreCase("and") || oEligForm.getHidAction().equalsIgnoreCase("or")) + setFormula(oEligForm); + if (oEligForm.getHidAction().equalsIgnoreCase("show")) { + if (!oEligForm.getValues().equals("")) + setFormula(oEligForm); + generateSql(oEligForm); + } + if (oEligForm.getHidAction().equalsIgnoreCase("refresh")) { + oEligForm.setHidAction(""); + oEligForm.setHidDocumentCodeId(""); + oEligForm.setHidFormula(""); + oEligForm.setHidValuesId(""); + oEligForm.setDocumentCode(""); + oEligForm.setDocumentType(""); + oEligForm.setFormula(""); + oEligForm.setValues(""); + oEligForm.setEligSql(""); + oEligForm.setEligibilityClass(""); + oEligForm.setDisabeligibilityClass("true"); + oEligForm.setDisabdocumentType("false"); + oEligForm.setDisaboperator("false"); + oEligForm.setDisabbutValues("false"); + oEligForm.setHeaderDataChanged(false); + } + return mapping.findForward("success"); + } + + private void getEligClass(HrmGenEligRuleForm oEligForm) throws EnrgiseApplicationException, EnrgiseSystemException { + HrmGenEligRuleBD oEligBD = new HrmGenEligRuleBD(); + this.mapEligClass = oEligBD.getEligClassInfo(); + oEligForm.setEligibilityClasses(this.mapEligClass); + oEligForm.setTxtHidSubmitFirst("false"); + } + + private void setFormula(HrmGenEligRuleForm oEligForm) throws EnrgiseApplicationException, EnrgiseSystemException { + StringBuffer sNewFormula = new StringBuffer(); + StringBuffer sNewHidFormula = new StringBuffer(); + if (!EnrgiseUtil.checkString(oEligForm.getEligibilityClass())) + return; + if (!EnrgiseUtil.checkString(oEligForm.getOperator())) + return; + if (!EnrgiseUtil.checkString(oEligForm.getValues())) + return; + if (!this.mapAlias.containsKey(oEligForm.getEligibilityClass())) + this.mapAlias.put(oEligForm.getEligibilityClass(), new String(String.valueOf("tab").concat(String.valueOf(this.iAlias++)))); + StringBuffer sFormula = new StringBuffer(oEligForm.getFormula()); + StringBuffer sHidFormula = new StringBuffer(oEligForm.getHidFormula()); + if (sFormula.toString().equalsIgnoreCase("")) { + sNewFormula.append("( "); + sNewHidFormula.append("( "); + } + sNewFormula.append(this.mapEligClass.get(oEligForm.getEligibilityClass()).toString()); + sNewHidFormula.append(String.valueOf(this.mapAlias.get(oEligForm.getEligibilityClass()).toString()).concat(String.valueOf(".CLS_DT_ID"))); + sNewFormula.append(" "); + sNewHidFormula.append(" "); + sNewFormula.append(oEligForm.getOperator()); + sNewHidFormula.append(oEligForm.getOperator()); + sNewFormula.append(" "); + sNewHidFormula.append(" "); + sNewFormula.append("( "); + sNewHidFormula.append("( "); + sNewFormula.append(oEligForm.getValues()); + sNewHidFormula.append(oEligForm.getHidValuesId()); + sNewFormula.append(" )"); + sNewHidFormula.append(" )"); + if (oEligForm.getHidAction().equalsIgnoreCase("and")) { + sNewFormula.append(" and "); + sNewHidFormula.append(" and "); + oEligForm.setDisabdocumentType("true"); + oEligForm.setDisabbutDocumentCode("true"); + } + if (oEligForm.getHidAction().equalsIgnoreCase("or")) { + sNewFormula.append(" ) "); + sNewHidFormula.append(" ) "); + sNewFormula.append(" or ( "); + sNewHidFormula.append(" or ( "); + oEligForm.setDisabdocumentType("true"); + oEligForm.setDisabbutDocumentCode("true"); + } + if (oEligForm.getHidAction().equalsIgnoreCase("show")) { + sNewFormula.append(" ) "); + sNewHidFormula.append(" ) "); + sFormula.append(sNewFormula); + sHidFormula.append(sNewHidFormula); + oEligForm.setEligibilityClass(""); + oEligForm.setOperator(""); + oEligForm.setValues(""); + oEligForm.setFormula(sFormula.toString()); + oEligForm.setHidFormula(unescape(sHidFormula.toString())); + oEligForm.setEligibilityClass(""); + oEligForm.setDisaboperator("true"); + oEligForm.setDisabeligibilityClass("true"); + oEligForm.setDisabvalues("true"); + oEligForm.setDisabbutOr("true"); + oEligForm.setDisabbutAnd("true"); + oEligForm.setDisabbutShowFormula("true"); + oEligForm.setDisabbutValues("true"); + oEligForm.setDisabbutDocumentCode("true"); + oEligForm.setDisabdocumentType("true"); + oEligForm.setDisabbutDocumentCode("true"); + } else { + sFormula.append(sNewFormula); + sHidFormula.append(sNewHidFormula); + oEligForm.setEligibilityClass(""); + oEligForm.setOperator(""); + oEligForm.setValues(""); + oEligForm.setFormula(sFormula.toString()); + oEligForm.setHidFormula(sHidFormula.toString()); + oEligForm.setEligibilityClass(""); + } + } + + private void generateSql(HrmGenEligRuleForm oEligForm) { + StringBuffer sbEligSql = new StringBuffer(); + StringBuffer sbHidFormula = new StringBuffer(oEligForm.getHidFormula()); + StringBuffer sbFormula = new StringBuffer(oEligForm.getFormula()); + sbEligSql.append("select distinct * from "); + for (int iAlias = 1; iAlias <= this.mapAlias.size(); iAlias++) { + if (iAlias == 1) { + sbEligSql.append("HRM_EMP_CLASS_MAP tab"); + } else { + sbEligSql.append(", HRM_EMP_CLASS_MAP tab"); + } + sbEligSql.append(iAlias); + } + sbEligSql.append(" where "); + if (sbHidFormula.toString().endsWith("or ( ")) { + sbHidFormula.setLength(sbHidFormula.length() - 5); + sbFormula.setLength(sbFormula.length() - 5); + } + if (sbHidFormula.toString().endsWith("and ")) { + sbHidFormula.setLength(sbHidFormula.length() - 4); + sbFormula.setLength(sbFormula.length() - 4); + } + sbEligSql.append(sbHidFormula); + if (this.bOrFlag) + sbEligSql.append(" )"); + sbEligSql.append("and tab1.E_PER_DTL_ID = ?"); + oEligForm.setHidFormula(sbHidFormula.toString()); + oEligForm.setFormula(sbFormula.toString()); + oEligForm.setEligSql(sbEligSql.toString()); + System.out.println(sbEligSql.toString()); + } + + private String unescape(String sSQL) { + if (sSQL.indexOf(">") != -1) + sSQL.replaceAll(">", ">"); + if (sSQL.indexOf("<") != -1) + sSQL.replaceAll("<", "<"); + return sSQL; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenLoginAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenLoginAction.java new file mode 100644 index 0000000..b33ff15 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenLoginAction.java @@ -0,0 +1,101 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import javax.ejb.CreateException; +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.EmpInfoBean; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.ParamUtil; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmGenLoginAction extends Action { + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + Cookie[] cookies = request.getCookies(); + String sEmpId = null; + String sSiteId = null; + if (null != cookies) + for (int i = 0; i < cookies.length; i++) { + if ("EmpId".equals(cookies[i].getName())) + sEmpId = cookies[i].getValue(); + if ("SiteId".equals(cookies[i].getName())) + sSiteId = cookies[i].getValue(); + } + HttpSession oSes = request.getSession(); + HrmBaseForm oBaseForm = new HrmBaseForm(); + oBaseForm.setEmpId(sEmpId); + try { + populateUserInfo(sEmpId, sSiteId, oSes); + } catch (EnrgiseSystemException enrgiseSystemException) {} + return mapping.findForward("success"); + } + + private UserInfo populateUserInfo(String sEmpId, String sSiteId, HttpSession session) throws EnrgiseSystemException { + UserInfo oUserInfo = new UserInfo(); + try { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) { + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("HrmUserSession"); + oUser = oUserHome.create(); + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + oUserInfo = oHrmFacade.getLoginUserInfo(sEmpId, sSiteId); + oUser.setUserInfo(oUserInfo); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oSecHrmFacade = oSecHome.create(); + HrmThirdFacadeHome oThirdHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oThirdFacade = oThirdHome.create(); + HashMap oMap = new HashMap(); + oMap.put(ParamUtil.getModuleName(), oHrmFacade); + oMap.put("SecHRMS", oSecHrmFacade); + oMap.put("ThirdHRMS", oThirdFacade); + oUser.setModuleFacade(oMap); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + EmpInfoBean oEmpInfoBean = new EmpInfoBean(); + oEmpInfoBean.setModuleId("8"); + oEmpInfoBean.setEmpId(oUserInfo.getUserTypeId()); + SecurityBD oSecurityBD = new SecurityBD(); + ArrayList menu = oSecurityBD.getTreeSet(oEmpInfoBean); + HashMap secMap = oSecurityBD.getAccessInfo(oEmpInfoBean); + oUser.setAccessInfo(secMap); + session.setAttribute("menuList", menu); + session.setAttribute("userId", sEmpId); + } + } catch (RemoteException oRmt) { + oRmt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (CreateException oCrt) { + oCrt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (Exception oExCc) { + oExCc.printStackTrace(); + throw new EnrgiseSystemException(); + } + return oUserInfo; + } + + private String getUserId(String sEmpId) { + return null; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenWflAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenWflAction.java new file mode 100644 index 0000000..533e10a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmGenWflAction.java @@ -0,0 +1,139 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.rmi.RemoteException; +import java.util.HashMap; +import javax.ejb.CreateException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.utility.UserInfo; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.session.UserSessionHome; +import wenrgise.ejb.common.utility.ParamUtil; +import wenrgise.hrms.ejb.facade.HrmFacade; +import wenrgise.hrms.ejb.facade.HrmFacadeHome; +import wenrgise.hrms.ejb.facade.HrmSecondFacade; +import wenrgise.hrms.ejb.facade.HrmSecondFacadeHome; +import wenrgise.hrms.ejb.facade.HrmThirdFacade; +import wenrgise.hrms.ejb.facade.HrmThirdFacadeHome; +import wenrgise.workflow.bean.WflWorkListInfoBean; +import wenrgise.workflow.utility.WflDocParamUtil; + +public class HrmGenWflAction extends Action { + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + String sWorkListId = request.getParameter("workListId"); + System.out.println(sWorkListId); + WflWorkListInfoBean wflWorkListInfoBean = getWorkListInfo(sWorkListId); + if (WflDocParamUtil.getFormName(wflWorkListInfoBean.getDocTypeCode()) != null && WflDocParamUtil.getFormBeanName(wflWorkListInfoBean.getDocTypeCode()) != null) { + BaseForm oForm = (BaseForm)Class.forName(WflDocParamUtil.getFormName(wflWorkListInfoBean.getDocTypeCode())).newInstance(); + oForm.setScreenMode("Q"); + oForm.setHeaderPrimaryKey(wflWorkListInfoBean.getDocId()); + oForm.setHidWorkListId(sWorkListId); + oForm.setFirstLoad("false"); + oForm.setScreenName(WflDocParamUtil.getScreenName(wflWorkListInfoBean.getDocTypeCode())); + HttpSession oSes = request.getSession(); + oSes.setAttribute(WflDocParamUtil.getFormBeanName(wflWorkListInfoBean.getDocTypeCode()), oForm); + System.out.println("Populating User Info:-"); + populateUserInfo(wflWorkListInfoBean.getRequestorEmpId(), null, oSes); + System.out.println("User Info Populated:-"); + System.out.println(String.valueOf("The type is ").concat(String.valueOf(wflWorkListInfoBean.getDocTypeCode()))); + return mapping.findForward(WflDocParamUtil.getForwardName(wflWorkListInfoBean.getDocTypeCode())); + } + return mapping.findForward("success"); + } + + private UserInfo populateUserInfo(String sEmpId, String sSiteId, HttpSession session) throws EnrgiseSystemException { + UserInfo oUserInfo = new UserInfo(); + try { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("HrmUserSession"); + oUser = oUserHome.create(); + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + oUserInfo = oHrmFacade.getLoginUserInfo(sEmpId, sSiteId); + oUser.setUserInfo(oUserInfo); + HrmSecondFacadeHome oSecHome = (HrmSecondFacadeHome)ServiceLocator.getLocator().getService("HrmSecondFacade"); + HrmSecondFacade oSecHrmFacade = oSecHome.create(); + HrmThirdFacadeHome oThirdHome = (HrmThirdFacadeHome)ServiceLocator.getLocator().getService("HrmThirdFacade"); + HrmThirdFacade oThirdFacade = oThirdHome.create(); + HashMap oMap = new HashMap(); + oMap.put(ParamUtil.getModuleName(), oHrmFacade); + oMap.put("SecHRMS", oSecHrmFacade); + oMap.put("ThirdHRMS", oThirdFacade); + oUser.setModuleFacade(oMap); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + session.setAttribute("userId", sEmpId); + } catch (RemoteException oRmt) { + oRmt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (CreateException oCrt) { + oCrt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (Exception oExCc) { + oExCc.printStackTrace(); + throw new EnrgiseSystemException(); + } + return oUserInfo; + } + + private void populate(String sEmpId, HttpSession session) throws EnrgiseSystemException { + try { + UserSession oUser = (UserSession)session.getAttribute(ParamUtil.getSessionBeanName()); + if (oUser == null) { + UserSessionHome oUserHome = (UserSessionHome)ServiceLocator.getLocator().getService("HrmUserSession"); + oUser = oUserHome.create(); + String sUserId = getUserId(sEmpId); + UserInfo oUserInfo = populateUserInfo(sUserId); + oUser.setUserInfo(oUserInfo); + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + HashMap oMap = new HashMap(); + oMap.put(ParamUtil.getModuleName(), oHrmFacade); + oUser.setModuleFacade(oMap); + session.setAttribute(ParamUtil.getSessionBeanName(), oUser); + } + } catch (RemoteException oRmt) { + oRmt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (CreateException oCrt) { + oCrt.printStackTrace(); + throw new EnrgiseSystemException(); + } catch (Exception oExCc) { + oExCc.printStackTrace(); + throw new EnrgiseSystemException(); + } + } + + private UserInfo populateUserInfo(String sUserId) { + return null; + } + + private String getUserId(String sEmpId) { + return null; + } + + private WflWorkListInfoBean getWorkListInfo(String sWorkListId) throws EnrgiseApplicationException, EnrgiseSystemException { + try { + HrmFacadeHome oHome = (HrmFacadeHome)ServiceLocator.getLocator().getService("HrmFacade"); + HrmFacade oHrmFacade = oHome.create(); + return oHrmFacade.getWorkListInfo(sWorkListId); + } catch (CreateException oCrtExcep) { + oCrtExcep.printStackTrace(); + throw new EnrgiseSystemException(oCrtExcep); + } catch (RemoteException oRt) { + oRt.printStackTrace(); + throw new EnrgiseSystemException(oRt); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmLvApplAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmLvApplAction.java new file mode 100644 index 0000000..215d63d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmLvApplAction.java @@ -0,0 +1,52 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Iterator; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.hrms.bean.HrmLvApplnDtlBean; +import wenrgise.hrms.businessdelegate.HrmLvApplnBD; +import wenrgise.hrms.webtier.action.BaseAction; +import wenrgise.hrms.webtier.form.HrmLvApplnForm; + +public class HrmLvApplAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + HrmLvApplnBD oBd = new HrmLvApplnBD(); + HrmLvApplnForm oForm = (HrmLvApplnForm)form; + String sFormName = oForm.getClass().getName(); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oBaseHeaderBean, oForm); + ArrayList arylstDtl = oBd.getLeaveBreakup(oBaseHeaderBean); + BeanUtils.setProperty(oForm, "arylstLvAppln", arylstDtl); + oForm.setDays(getHolidayCount(arylstDtl)); + throw new EnrgiseApplicationException("hrm.HrmLvAppln.breakUp", "M"); + } + + private String getHolidayCount(ArrayList arylstDtl) { + double dHolidayCount = 0.0D; + if (arylstDtl != null) { + Iterator itrDtlList = arylstDtl.iterator(); + while (itrDtlList.hasNext()) { + HrmLvApplnDtlBean oDtlBean = itrDtlList.next(); + if (!oDtlBean.getTxtHolidayFlag().equalsIgnoreCase("H")) { + if (!oDtlBean.getTxtHalfDayFlag().equalsIgnoreCase("3")) { + dHolidayCount += 0.5D; + continue; + } + dHolidayCount++; + } + } + } + return Double.toString(dHolidayCount); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmTrngCalCloseCalCloseAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmTrngCalCloseCalCloseAction.java new file mode 100644 index 0000000..5edb1cf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/HrmTrngCalCloseCalCloseAction.java @@ -0,0 +1,24 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.hrms.businessdelegate.HrmTrngCalCloseBD; +import wenrgise.hrms.webtier.action.BaseAction; +import wenrgise.hrms.webtier.form.HrmTrngCalCloseForm; + +public class HrmTrngCalCloseCalCloseAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + HrmTrngCalCloseBD oBd = new HrmTrngCalCloseBD(); + HrmTrngCalCloseForm oForm = (HrmTrngCalCloseForm)form; + oBd.calClose(oForm.getButtonName(), oForm.getCalDtlId()); + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/ReportViewerAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/ReportViewerAction.java new file mode 100644 index 0000000..db36c72 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/ReportViewerAction.java @@ -0,0 +1,110 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.sql.DataSource; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRRuntimeException; +import net.sf.jasperreports.engine.JasperFillManager; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.util.JRLoader; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class ReportViewerAction extends BaseAction { + private String sDbName = "jdbc/conDS"; + + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + JasperReportForm oForm = (JasperReportForm)form; + req.setAttribute("reportBody", createJasperPrint(req, oForm)); + return mapping.findForward("success"); + } + + protected JasperPrint createJasperPrint(HttpServletRequest req, JasperReportForm form) { + Map reportParams = null; + if (null != form) + reportParams = prepareReportInput(req, form); + createReportFileName(req, reportParams); + String repPath = req.getParameter("reportPath"); + System.out.println(String.valueOf("Report Path is ..").concat(String.valueOf(repPath))); + File reportFile = new File(req.getSession(false).getServletContext().getRealPath(repPath)); + if (!reportFile.exists()) + throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first."); + JasperReport jasperReport = null; + try { + jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath()); + } catch (JRException e) { + e.printStackTrace(); + throw new RuntimeException("Exception while loading the report", e); + } + if (null == jasperReport) + throw new RuntimeException(String.valueOf("Report not found in Path ").concat(String.valueOf(repPath))); + if (null == reportParams) + reportParams = new HashMap(2, 1.0F); + reportParams.put("ReportTitle", req.getParameter("title")); + reportParams.put("BaseDir", reportFile.getParentFile()); + reportParams.put("SUBREPORT_DIR", reportFile.getParentFile().getAbsolutePath()); + Connection conn = null; + JasperPrint jasperPrint = null; + try { + Object dataSourceObj = ServiceLocator.getLocator().getLocalService(this.sDbName); + DataSource oDataSource = (DataSource)dataSourceObj; + conn = oDataSource.getConnection(); + jasperPrint = JasperFillManager.fillReport(jasperReport, reportParams, conn); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Exception while filling the report with data", e); + } finally { + if (null != conn) + try { + conn.close(); + } catch (SQLException e) { + throw new RuntimeException("Exception while closing Connection ", e); + } + } + return jasperPrint; + } + + private void createReportFileName(HttpServletRequest req, Map reportParams) { + StringBuffer fileName = new StringBuffer("attachment; filename=\""); + String repPath = req.getParameter("reportPath"); + String reportName = req.getParameter("reportName"); + if ("C".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".csv\""); + } else if ("T".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".txt\""); + } else if ("P".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".pdf\""); + } else if ("E".equalsIgnoreCase(req.getParameter("DOWNLOAD"))) { + fileName.append(reportName); + fileName.append(".xls\""); + } else { + fileName.append(reportName); + fileName.append(".html\""); + } + req.setAttribute("fileName", fileName.toString()); + } + + protected Map prepareReportInput(HttpServletRequest req, JasperReportForm form) { + Map reportInput = (Map)form.getData(req); + return reportInput; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/SaveDetailPageAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/SaveDetailPageAction.java new file mode 100644 index 0000000..57bdbcc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/action/SaveDetailPageAction.java @@ -0,0 +1,129 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.bean.BaseHeaderBean; +import wenrgise.common.businessdelegate.BaseBD; +import wenrgise.common.businessdelegate.SecurityBD; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.vo.BaseDetailVO; +import wenrgise.common.vo.BaseHeaderVO; +import wenrgise.common.vo.BaseQueryVO; +import wenrgise.common.vo.ThisPageVO; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.common.webtier.form.BaseForm; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.ejb.common.utility.ParamUtil; + +public class SaveDetailPageAction extends BaseAction { + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + BaseForm oBaseForm = (BaseForm)form; + String sFormName = form.getClass().getName(); + String sScreenName = oBaseForm.getScreenName(); + BaseBD oBaseBD = getHeaderBusinessDelegate(form, request); + UserSession oUser = getUserSessionBean(request); + BaseHeaderBean oBaseHeaderBean = getBaseHeaderBean(sFormName); + ArrayList oDetailBeanArray = null; + BaseDetailVO oBaseDetailVO = null; + BaseHeaderVO oBaseHeaderVO = null; + Timestamp oHeaderPicked = null; + Timestamp oDetailPicked = null; + if (!oBaseForm.isDetailDataChanged() && !oBaseForm.isHeaderDataChanged()) + return mapping.findForward("success"); + BeanUtils.copyProperties(oBaseHeaderBean, form); + String sHeaderSave = ParamUtil.getHeaderSaveRequired(sFormName); + if (oBaseForm.getScreenMode().equals("N") && null == sHeaderSave) { + oHeaderPicked = null; + } else { + if (oBaseForm.isHeaderDataChanged()) { + oBaseHeaderVO = oUser.getBaseHeaderVO(sFormName); + if (oBaseHeaderVO != null) { + oHeaderPicked = oBaseHeaderVO.getOWhenPicked(); + oBaseHeaderBean = getBaseHeaderBean(sFormName); + } + BeanUtils.copyProperties(oBaseHeaderBean, form); + } + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, sScreenName); + if (oBaseDetailVO != null) + oDetailPicked = oBaseDetailVO.getOWhenPicked(); + if (oBaseForm.isDetailDataChanged()) + oDetailBeanArray = getDetailArray(oBaseForm); + } + String sHeaderPrimaryKey = oBaseBD.saveRecord(oBaseHeaderBean, null, oBaseForm.getScreenName(), oBaseForm.getScreenMode(), false, oDetailBeanArray, oBaseForm.isDetailDataChanged(), oDetailPicked); + oBaseForm.setHeaderDataChanged(false); + oBaseForm.setDetailDataChanged(false); + oBaseForm.setHeaderPrimaryKey(sHeaderPrimaryKey); + if (null != oBaseHeaderVO) { + BaseQueryVO oBaseQueryVO = getQueryVO(form); + BeanUtils.copyProperties(oBaseQueryVO, form); + oBaseQueryVO.setHeaderPrimaryKey(sHeaderPrimaryKey); + oBaseQueryVO.setMaxHeaderSize(ParamUtil.getHeaderSize(sFormName)); + oBaseHeaderVO = oBaseBD.getHeaderRecord(oBaseQueryVO, sFormName, oUser); + BeanUtils.copyProperties(form, oBaseHeaderVO.getHeaderRecord(1)); + BeanUtils.copyProperties(form, oBaseHeaderVO); + oUser.putBaseHeaderVO(sFormName, oBaseHeaderVO); + } + if (!oBaseForm.getScreenMode().equals("N") || null != sHeaderSave) + if (null != oBaseDetailVO) { + if (oBaseDetailVO.getTotalDetailRecord() + oBaseDetailVO.getRowAdded() - oBaseDetailVO.getRowDeleted() >= 0L) { + oBaseDetailVO.setRowDeleted(0); + oBaseDetailVO.setRowAdded(0); + oBaseDetailVO = getDetailData(oBaseForm, sFormName, sScreenName, 1L, request, oBaseBD, true, oUser); + oBaseForm.setPageRequested(1L); + long totDetRecord = oBaseDetailVO.getTotalDetailRecord(); + oBaseForm.setTotalPageCount(calculateTotalDetailPage(sFormName, oBaseForm.getScreenName(), totDetRecord)); + if (oBaseDetailVO.getOThisPageData() != null) { + oBaseForm.setThisPageDetailCount(oBaseDetailVO.getOThisPageData().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oBaseDetailVO.getOThisPageData()); + } else { + oBaseForm.setThisPageDetailCount(0); + } + BeanUtils.copyProperties(oBaseForm, oBaseDetailVO); + } + oUser.putBaseDetailVO(sFormName, sScreenName, oBaseDetailVO); + } + oBaseForm.setScreenMode("U"); + enableAll(oBaseForm); + enableDisable(oBaseForm, saveClicked(), "D"); + controlHeaderNavigation(oBaseForm); + SecurityBD oSecBD = new SecurityBD(); + Map oSecMap = oSecBD.getDisabledFields(String.valueOf(oBaseForm.getScreenName()).concat(String.valueOf(".jsp")), "ALL", oBaseForm.getScreenMode(), oBaseForm.getHeaderStatus()); + if (null != oSecMap) + enableDisable(oBaseForm, (ArrayList)oSecMap.get("D"), "D"); + BaseHeaderBean oThisBaseHeaderBean = getBaseHeaderBean(sFormName); + BeanUtils.copyProperties(oThisBaseHeaderBean, form); + ThisPageVO oThisPageVO = new ThisPageVO(); + oThisPageVO.setOHeaderBean(oThisBaseHeaderBean); + oThisPageVO.setScreenMode(oBaseForm.getScreenMode()); + oThisPageVO.setScreenName(oBaseForm.getScreenName()); + oBaseDetailVO = null; + oBaseDetailVO = oUser.getBaseDetailVO(sFormName, oBaseForm.getScreenName()); + if (null != oBaseDetailVO) { + ArrayList oDetailList = (oBaseDetailVO.getOThisPageData() != null) ? oBaseDetailVO.getOThisPageData() : new ArrayList(); + oThisPageVO.setODetailList(oDetailList); + } + Map oMap = oBaseBD.getDisabledFields(oThisPageVO); + if (oMap != null) { + if (oMap.containsKey("D")) + enableDisable(oBaseForm, (ArrayList)oMap.get("D"), "D"); + if (oMap.containsKey("E")) + enableDisable(oBaseForm, (ArrayList)oMap.get("E"), "E"); + } + if (oThisPageVO.getODetailList() != null) { + oBaseForm.setThisPageDetailCount(oThisPageVO.getODetailList().size()); + BeanUtils.setProperty(oBaseForm, ParamUtil.getDetailArrayName(sFormName, sScreenName), oThisPageVO.getODetailList()); + } + throw new EnrgiseApplicationException("wenrgise.common.datasaved", "M"); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnApplForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnApplForm.java new file mode 100644 index 0000000..26bea8f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnApplForm.java @@ -0,0 +1,506 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDDptnApplForm extends HrmBaseForm { + private String applnNo; + + private String applnDate; + + private String deputType; + + private String advtNo; + + private String advtDate; + + private String employeeNo; + + private String orgName; + + private String postName; + + private String reason; + + private String deputStatus; + + private String empName; + + private String selfOfficeFlag; + + private String applnNoId; + + private String employeeNoId; + + private String advtNoId; + + private String postNameId; + + private String postCode; + + private String disabapplnNo; + + private String disabapplnDate; + + private String disabdeputType; + + private String disabadvtNo; + + private String disabadvtDate; + + private String disabemployeeNo; + + private String disaborgName; + + private String disabpostName; + + private String disabreason; + + private String disabdeputStatus; + + private String disabempName; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String butRevise; + + private String disabbutRevise; + + private String butApplnNo; + + private String butApplnDate; + + private String butEmployeeNo; + + private String butAdvtNo; + + private String butAdvtDate; + + private String butPostName; + + private String disabbutApplnNo; + + private String disabbutApplnDate; + + private String disabbutEmployeeNo; + + private String disabbutAdvtNo; + + private String disabbutAdvtDate; + + private String disabbutPostName; + + private String DisabpostCode; + + String disabbutSubmit; + + private String butSubmit; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } + + public String getAdvtNo() { + return this.advtNo; + } + + public void setAdvtNo(String newAdvtNo) { + this.advtNo = newAdvtNo; + } + + public String getAdvtDate() { + return this.advtDate; + } + + public void setAdvtDate(String newAdvtDate) { + this.advtDate = newAdvtDate; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getOrgName() { + return this.orgName; + } + + public void setOrgName(String newOrgName) { + this.orgName = newOrgName; + } + + public String getPostName() { + return this.postName; + } + + public void setPostName(String newPostName) { + this.postName = newPostName; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getDeputStatus() { + return this.deputStatus; + } + + public void setDeputStatus(String newDeputStatus) { + this.deputStatus = newDeputStatus; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getSelfOfficeFlag() { + return this.selfOfficeFlag; + } + + public void setSelfOfficeFlag(String newSelfOfficeFlag) { + this.selfOfficeFlag = newSelfOfficeFlag; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getAdvtNoId() { + return this.advtNoId; + } + + public void setAdvtNoId(String newAdvtNoId) { + this.advtNoId = newAdvtNoId; + } + + public String getPostNameId() { + return this.postNameId; + } + + public void setPostNameId(String newPostNameId) { + this.postNameId = newPostNameId; + } + + public String getPostCode() { + return this.postCode; + } + + public void setPostCode(String newPostCode) { + this.postCode = newPostCode; + } + + public String getDisabapplnNo() { + return this.disabapplnNo; + } + + public void setDisabapplnNo(String newDisabapplnNo) { + this.disabapplnNo = newDisabapplnNo; + } + + public String getDisabapplnDate() { + return this.disabapplnDate; + } + + public void setDisabapplnDate(String newDisabapplnDate) { + this.disabapplnDate = newDisabapplnDate; + } + + public String getDisabdeputType() { + return this.disabdeputType; + } + + public void setDisabdeputType(String newDisabdeputType) { + this.disabdeputType = newDisabdeputType; + } + + public String getDisabadvtNo() { + return this.disabadvtNo; + } + + public void setDisabadvtNo(String newDisabadvtNo) { + this.disabadvtNo = newDisabadvtNo; + } + + public String getDisabadvtDate() { + return this.disabadvtDate; + } + + public void setDisabadvtDate(String newDisabadvtDate) { + this.disabadvtDate = newDisabadvtDate; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisaborgName() { + return this.disaborgName; + } + + public void setDisaborgName(String newDisaborgName) { + this.disaborgName = newDisaborgName; + } + + public String getDisabpostName() { + return this.disabpostName; + } + + public void setDisabpostName(String newDisabpostName) { + this.disabpostName = newDisabpostName; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getDisabdeputStatus() { + return this.disabdeputStatus; + } + + public void setDisabdeputStatus(String newDisabdeputStatus) { + this.disabdeputStatus = newDisabdeputStatus; + } + + public String getDisabempName() { + return this.disabempName; + } + + public void setDisabempName(String newDisabempName) { + this.disabempName = newDisabempName; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getButRevise() { + return this.butRevise; + } + + public void setButRevise(String newButRevise) { + this.butRevise = newButRevise; + } + + public String getDisabbutRevise() { + return this.disabbutRevise; + } + + public void setDisabbutRevise(String newDisabbutRevise) { + this.disabbutRevise = newDisabbutRevise; + } + + public String getButApplnNo() { + return this.butApplnNo; + } + + public void setButApplnNo(String newButApplnNo) { + this.butApplnNo = newButApplnNo; + } + + public String getButApplnDate() { + return this.butApplnDate; + } + + public void setButApplnDate(String newButApplnDate) { + this.butApplnDate = newButApplnDate; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getButAdvtNo() { + return this.butAdvtNo; + } + + public void setButAdvtNo(String newButAdvtNo) { + this.butAdvtNo = newButAdvtNo; + } + + public String getButAdvtDate() { + return this.butAdvtDate; + } + + public void setButAdvtDate(String newButAdvtDate) { + this.butAdvtDate = newButAdvtDate; + } + + public String getButPostName() { + return this.butPostName; + } + + public void setButPostName(String newButPostName) { + this.butPostName = newButPostName; + } + + public String getDisabbutApplnNo() { + return this.disabbutApplnNo; + } + + public void setDisabbutApplnNo(String newDisabbutApplnNo) { + this.disabbutApplnNo = newDisabbutApplnNo; + } + + public String getDisabbutApplnDate() { + return this.disabbutApplnDate; + } + + public void setDisabbutApplnDate(String newDisabbutApplnDate) { + this.disabbutApplnDate = newDisabbutApplnDate; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getDisabbutAdvtNo() { + return this.disabbutAdvtNo; + } + + public void setDisabbutAdvtNo(String newDisabbutAdvtNo) { + this.disabbutAdvtNo = newDisabbutAdvtNo; + } + + public String getDisabbutAdvtDate() { + return this.disabbutAdvtDate; + } + + public void setDisabbutAdvtDate(String newDisabbutAdvtDate) { + this.disabbutAdvtDate = newDisabbutAdvtDate; + } + + public String getDisabbutPostName() { + return this.disabbutPostName; + } + + public void setDisabbutPostName(String newDisabbutPostName) { + this.disabbutPostName = newDisabbutPostName; + } + + public String getDisabpostCode() { + return this.DisabpostCode; + } + + public void setDisabpostCode(String newDisabpostCode) { + this.DisabpostCode = newDisabpostCode; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnChrgRptForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnChrgRptForm.java new file mode 100644 index 0000000..0465277 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnChrgRptForm.java @@ -0,0 +1,486 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDDptnChrgRptForm extends HrmBaseForm { + private String dptOrderNo; + + private String disabdptOrderNo; + + private String butDptOrderNo; + + private String disabbutDptOrderNo; + + private String empName; + + private String disabempName; + + private String deputationDate; + + private String disabdeputationDate; + + private String chargeCode; + + private String disabchargeCode; + + private String handOverDate; + + private String disabhandOverDate; + + private String butChargeCode; + + private String disabbutChargeCode; + + private String butHandOverDate; + + private String disabbutHandOverDate; + + private String chargeType; + + private String disabchargeType; + + private String noonFlag; + + private String disabnoonFlag; + + private String remarks; + + private String disabremarks; + + private String dptOrderNoId; + + private String depOrdrDtlId; + + private String chargeCodeId; + + private String chargeStatus; + + private String disabchargeStatus; + + private String fromWrkGrpCode; + + private String disabfromWrkGrpCode; + + private String toWrkGrpCode; + + private String disabtoWrkGrpCode; + + private String fromSiteCode; + + private String disabfromSiteCode; + + private String toSiteCode; + + private String disabtoSiteCode; + + private String fromWrkGrpId; + + private String toWrkGrpId; + + private String fromSiteId; + + private String toSiteId; + + private String empId; + + private String deputType; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String butSubmit; + + String disabbutSubmit; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getDptOrderNo() { + return this.dptOrderNo; + } + + public void setDptOrderNo(String newDptOrderNo) { + this.dptOrderNo = newDptOrderNo; + } + + public String getDisabdptOrderNo() { + return this.disabdptOrderNo; + } + + public void setDisabdptOrderNo(String newDisabdptOrderNo) { + this.disabdptOrderNo = newDisabdptOrderNo; + } + + public String getButDptOrderNo() { + return this.butDptOrderNo; + } + + public void setButDptOrderNo(String newButDptOrderNo) { + this.butDptOrderNo = newButDptOrderNo; + } + + public String getDisabbutDptOrderNo() { + return this.disabbutDptOrderNo; + } + + public void setDisabbutDptOrderNo(String newDisabbutDptOrderNo) { + this.disabbutDptOrderNo = newDisabbutDptOrderNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDisabempName() { + return this.disabempName; + } + + public void setDisabempName(String newDisabempName) { + this.disabempName = newDisabempName; + } + + public String getDeputationDate() { + return this.deputationDate; + } + + public void setDeputationDate(String newDeputationDate) { + this.deputationDate = newDeputationDate; + } + + public String getDisabdeputationDate() { + return this.disabdeputationDate; + } + + public void setDisabdeputationDate(String newDisabdeputationDate) { + this.disabdeputationDate = newDisabdeputationDate; + } + + public String getChargeCode() { + return this.chargeCode; + } + + public void setChargeCode(String newChargeCode) { + this.chargeCode = newChargeCode; + } + + public String getDisabchargeCode() { + return this.disabchargeCode; + } + + public void setDisabchargeCode(String newDisabchargeCode) { + this.disabchargeCode = newDisabchargeCode; + } + + public String getHandOverDate() { + return this.handOverDate; + } + + public void setHandOverDate(String newHandOverDate) { + this.handOverDate = newHandOverDate; + } + + public String getDisabhandOverDate() { + return this.disabhandOverDate; + } + + public void setDisabhandOverDate(String newDisabhandOverDate) { + this.disabhandOverDate = newDisabhandOverDate; + } + + public String getButChargeCode() { + return this.butChargeCode; + } + + public void setButChargeCode(String newButChargeCode) { + this.butChargeCode = newButChargeCode; + } + + public String getDisabbutChargeCode() { + return this.disabbutChargeCode; + } + + public void setDisabbutChargeCode(String newDisabbutChargeCode) { + this.disabbutChargeCode = newDisabbutChargeCode; + } + + public String getButHandOverDate() { + return this.butHandOverDate; + } + + public void setButHandOverDate(String newButHandOverDate) { + this.butHandOverDate = newButHandOverDate; + } + + public String getDisabbutHandOverDate() { + return this.disabbutHandOverDate; + } + + public void setDisabbutHandOverDate(String newDisabbutHandOverDate) { + this.disabbutHandOverDate = newDisabbutHandOverDate; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getDisabchargeType() { + return this.disabchargeType; + } + + public void setDisabchargeType(String newDisabchargeType) { + this.disabchargeType = newDisabchargeType; + } + + public String getNoonFlag() { + return this.noonFlag; + } + + public void setNoonFlag(String newNoonFlag) { + this.noonFlag = newNoonFlag; + } + + public String getDisabnoonFlag() { + return this.disabnoonFlag; + } + + public void setDisabnoonFlag(String newDisabnoonFlag) { + this.disabnoonFlag = newDisabnoonFlag; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getDptOrderNoId() { + return this.dptOrderNoId; + } + + public void setDptOrderNoId(String newDptOrderNoId) { + this.dptOrderNoId = newDptOrderNoId; + } + + public String getDepOrdrDtlId() { + return this.depOrdrDtlId; + } + + public void setDepOrdrDtlId(String newDepOrdrDtlId) { + this.depOrdrDtlId = newDepOrdrDtlId; + } + + public String getChargeCodeId() { + return this.chargeCodeId; + } + + public void setChargeCodeId(String newChargeCodeId) { + this.chargeCodeId = newChargeCodeId; + } + + public String getChargeStatus() { + return this.chargeStatus; + } + + public void setChargeStatus(String newChargeStatus) { + this.chargeStatus = newChargeStatus; + } + + public String getDisabchargeStatus() { + return this.disabchargeStatus; + } + + public void setDisabchargeStatus(String newDisabchargeStatus) { + this.disabchargeStatus = newDisabchargeStatus; + } + + public String getFromWrkGrpCode() { + return this.fromWrkGrpCode; + } + + public void setFromWrkGrpCode(String newFromWrkGrpCode) { + this.fromWrkGrpCode = newFromWrkGrpCode; + } + + public String getDisabfromWrkGrpCode() { + return this.disabfromWrkGrpCode; + } + + public void setDisabfromWrkGrpCode(String newDisabfromWrkGrpCode) { + this.disabfromWrkGrpCode = newDisabfromWrkGrpCode; + } + + public String getToWrkGrpCode() { + return this.toWrkGrpCode; + } + + public void setToWrkGrpCode(String newToWrkGrpCode) { + this.toWrkGrpCode = newToWrkGrpCode; + } + + public String getDisabtoWrkGrpCode() { + return this.disabtoWrkGrpCode; + } + + public void setDisabtoWrkGrpCode(String newDisabtoWrkGrpCode) { + this.disabtoWrkGrpCode = newDisabtoWrkGrpCode; + } + + public String getFromSiteCode() { + return this.fromSiteCode; + } + + public void setFromSiteCode(String newFromSiteCode) { + this.fromSiteCode = newFromSiteCode; + } + + public String getDisabfromSiteCode() { + return this.disabfromSiteCode; + } + + public void setDisabfromSiteCode(String newDisabfromSiteCode) { + this.disabfromSiteCode = newDisabfromSiteCode; + } + + public String getToSiteCode() { + return this.toSiteCode; + } + + public void setToSiteCode(String newToSiteCode) { + this.toSiteCode = newToSiteCode; + } + + public String getDisabtoSiteCode() { + return this.disabtoSiteCode; + } + + public void setDisabtoSiteCode(String newDisabtoSiteCode) { + this.disabtoSiteCode = newDisabtoSiteCode; + } + + public String getFromWrkGrpId() { + return this.fromWrkGrpId; + } + + public void setFromWrkGrpId(String newFromWrkGrpId) { + this.fromWrkGrpId = newFromWrkGrpId; + } + + public String getToWrkGrpId() { + return this.toWrkGrpId; + } + + public void setToWrkGrpId(String newToWrkGrpId) { + this.toWrkGrpId = newToWrkGrpId; + } + + public String getFromSiteId() { + return this.fromSiteId; + } + + public void setFromSiteId(String newFromSiteId) { + this.fromSiteId = newFromSiteId; + } + + public String getToSiteId() { + return this.toSiteId; + } + + public void setToSiteId(String newToSiteId) { + this.toSiteId = newToSiteId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnOrderForSingleEmpForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnOrderForSingleEmpForm.java new file mode 100644 index 0000000..20450af --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDDptnOrderForSingleEmpForm.java @@ -0,0 +1,686 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDDptnOrderForSingleEmpForm extends HrmBaseForm { + private String orderNo; + + private String orderDate; + + private String deputType; + + private String orderStatus; + + private String applnNo; + + private String employeeName; + + private String applicationDate; + + private String toOrg; + + private String toPost; + + private String deptnEffectDate; + + private String reportingDate; + + private String remarks; + + private String disaborderNo; + + private String disaborderDate; + + private String disabdeputType; + + private String disaborderStatus; + + private String disabapplnNo; + + private String disabemployeeName; + + private String disabapplicationDate; + + private String disabtoOrg; + + private String disabtoPost; + + private String disabdeptnEffectDate; + + private String disabreportingDate; + + private String disabremarks; + + private String butOrderNo; + + private String disabbutOrderNo; + + private String butOrderDate; + + private String butApplnNo; + + private String butToOrg; + + private String butToPost; + + private String butDeptnEffectDate; + + private String butReportingDate; + + private String disabbutOrderDate; + + private String disabbutApplnNo; + + private String disabbutToOrg; + + private String disabbutToPost; + + private String disabbutDeptnEffectDate; + + private String disabbutReportingDate; + + private String orderNoId; + + private String applnNoId; + + private String headerPrimaryKey1; + + private String hdnDeputType; + + private String hdnOrderStatus; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String fromSite; + + private String fromWorkGroup; + + private String toSite; + + private String toWorkGroup; + + private String deputStatus; + + private String phone; + + private String disabphone; + + private String mobilePhone; + + private String disabmobilePhone; + + private String fax; + + private String disabfax; + + private String email; + + private String disabemail; + + private String reptBackDate; + + private String disabreptBackDate; + + private String butReptBackDate; + + private String disabbutReptBackDate; + + String butSubmit; + + String disabbutSubmit; + + private String employeeNoId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getDeputType() { + return this.deputType; + } + + public void setDeputType(String newDeputType) { + this.deputType = newDeputType; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getToOrg() { + return this.toOrg; + } + + public void setToOrg(String newToOrg) { + this.toOrg = newToOrg; + } + + public String getToPost() { + return this.toPost; + } + + public void setToPost(String newToPost) { + this.toPost = newToPost; + } + + public String getDeptnEffectDate() { + return this.deptnEffectDate; + } + + public void setDeptnEffectDate(String newDeptnEffectDate) { + this.deptnEffectDate = newDeptnEffectDate; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDisaborderNo() { + return this.disaborderNo; + } + + public void setDisaborderNo(String newDisaborderNo) { + this.disaborderNo = newDisaborderNo; + } + + public String getDisaborderDate() { + return this.disaborderDate; + } + + public void setDisaborderDate(String newDisaborderDate) { + this.disaborderDate = newDisaborderDate; + } + + public String getDisabdeputType() { + return this.disabdeputType; + } + + public void setDisabdeputType(String newDisabdeputType) { + this.disabdeputType = newDisabdeputType; + } + + public String getDisaborderStatus() { + return this.disaborderStatus; + } + + public void setDisaborderStatus(String newDisaborderStatus) { + this.disaborderStatus = newDisaborderStatus; + } + + public String getDisabapplnNo() { + return this.disabapplnNo; + } + + public void setDisabapplnNo(String newDisabapplnNo) { + this.disabapplnNo = newDisabapplnNo; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisabapplicationDate() { + return this.disabapplicationDate; + } + + public void setDisabapplicationDate(String newDisabapplicationDate) { + this.disabapplicationDate = newDisabapplicationDate; + } + + public String getDisabtoOrg() { + return this.disabtoOrg; + } + + public void setDisabtoOrg(String newDisabtoOrg) { + this.disabtoOrg = newDisabtoOrg; + } + + public String getDisabtoPost() { + return this.disabtoPost; + } + + public void setDisabtoPost(String newDisabtoPost) { + this.disabtoPost = newDisabtoPost; + } + + public String getDisabdeptnEffectDate() { + return this.disabdeptnEffectDate; + } + + public void setDisabdeptnEffectDate(String newDisabdeptnEffectDate) { + this.disabdeptnEffectDate = newDisabdeptnEffectDate; + } + + public String getDisabreportingDate() { + return this.disabreportingDate; + } + + public void setDisabreportingDate(String newDisabreportingDate) { + this.disabreportingDate = newDisabreportingDate; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getButOrderNo() { + return this.butOrderNo; + } + + public void setButOrderNo(String newButOrderNo) { + this.butOrderNo = newButOrderNo; + } + + public String getDisabbutOrderNo() { + return this.disabbutOrderNo; + } + + public void setDisabbutOrderNo(String newDisabbutOrderNo) { + this.disabbutOrderNo = newDisabbutOrderNo; + } + + public String getButOrderDate() { + return this.butOrderDate; + } + + public void setButOrderDate(String newButOrderDate) { + this.butOrderDate = newButOrderDate; + } + + public String getButApplnNo() { + return this.butApplnNo; + } + + public void setButApplnNo(String newButApplnNo) { + this.butApplnNo = newButApplnNo; + } + + public String getButToOrg() { + return this.butToOrg; + } + + public void setButToOrg(String newButToOrg) { + this.butToOrg = newButToOrg; + } + + public String getButToPost() { + return this.butToPost; + } + + public void setButToPost(String newButToPost) { + this.butToPost = newButToPost; + } + + public String getButDeptnEffectDate() { + return this.butDeptnEffectDate; + } + + public void setButDeptnEffectDate(String newButDeptnEffectDate) { + this.butDeptnEffectDate = newButDeptnEffectDate; + } + + public String getButReportingDate() { + return this.butReportingDate; + } + + public void setButReportingDate(String newButReportingDate) { + this.butReportingDate = newButReportingDate; + } + + public String getDisabbutOrderDate() { + return this.disabbutOrderDate; + } + + public void setDisabbutOrderDate(String newDisabbutOrderDate) { + this.disabbutOrderDate = newDisabbutOrderDate; + } + + public String getDisabbutApplnNo() { + return this.disabbutApplnNo; + } + + public void setDisabbutApplnNo(String newDisabbutApplnNo) { + this.disabbutApplnNo = newDisabbutApplnNo; + } + + public String getDisabbutToOrg() { + return this.disabbutToOrg; + } + + public void setDisabbutToOrg(String newDisabbutToOrg) { + this.disabbutToOrg = newDisabbutToOrg; + } + + public String getDisabbutToPost() { + return this.disabbutToPost; + } + + public void setDisabbutToPost(String newDisabbutToPost) { + this.disabbutToPost = newDisabbutToPost; + } + + public String getDisabbutDeptnEffectDate() { + return this.disabbutDeptnEffectDate; + } + + public void setDisabbutDeptnEffectDate(String newDisabbutDeptnEffectDate) { + this.disabbutDeptnEffectDate = newDisabbutDeptnEffectDate; + } + + public String getDisabbutReportingDate() { + return this.disabbutReportingDate; + } + + public void setDisabbutReportingDate(String newDisabbutReportingDate) { + this.disabbutReportingDate = newDisabbutReportingDate; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getHdnDeputType() { + return this.hdnDeputType; + } + + public void setHdnDeputType(String newHdnDeputType) { + this.hdnDeputType = newHdnDeputType; + } + + public String getHdnOrderStatus() { + return this.hdnOrderStatus; + } + + public void setHdnOrderStatus(String newHdnOrderStatus) { + this.hdnOrderStatus = newHdnOrderStatus; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getDeputStatus() { + return this.deputStatus; + } + + public void setDeputStatus(String newDeputStatus) { + this.deputStatus = newDeputStatus; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getDisabphone() { + return this.disabphone; + } + + public void setDisabphone(String newDisabphone) { + this.disabphone = newDisabphone; + } + + public String getMobilePhone() { + return this.mobilePhone; + } + + public void setMobilePhone(String newMobilePhone) { + this.mobilePhone = newMobilePhone; + } + + public String getDisabmobilePhone() { + return this.disabmobilePhone; + } + + public void setDisabmobilePhone(String newDisabmobilePhone) { + this.disabmobilePhone = newDisabmobilePhone; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getDisabfax() { + return this.disabfax; + } + + public void setDisabfax(String newDisabfax) { + this.disabfax = newDisabfax; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getDisabemail() { + return this.disabemail; + } + + public void setDisabemail(String newDisabemail) { + this.disabemail = newDisabemail; + } + + public String getReptBackDate() { + return this.reptBackDate; + } + + public void setReptBackDate(String newReptBackDate) { + this.reptBackDate = newReptBackDate; + } + + public String getDisabreptBackDate() { + return this.disabreptBackDate; + } + + public void setDisabreptBackDate(String newDisabreptBackDate) { + this.disabreptBackDate = newDisabreptBackDate; + } + + public String getButReptBackDate() { + return this.butReptBackDate; + } + + public void setButReptBackDate(String newButReptBackDate) { + this.butReptBackDate = newButReptBackDate; + } + + public String getDisabbutReptBackDate() { + return this.disabbutReptBackDate; + } + + public void setDisabbutReptBackDate(String newDisabbutReptBackDate) { + this.disabbutReptBackDate = newDisabbutReptBackDate; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransApplForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransApplForm.java new file mode 100644 index 0000000..d3cdb9b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransApplForm.java @@ -0,0 +1,736 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDTransApplForm extends HrmBaseForm { + private String applnNo; + + private String employeeNo; + + private String ofcNoteNo; + + private String ofcNoteDate; + + private String site1; + + private String site2; + + private String site3; + + private String reason; + + private String applnDate; + + private String fromSite; + + private String applnType; + + private String trnsStatus; + + private String empName; + + private String fromDesignation; + + private String fromDesignationId; + + private String toDesignation; + + private String toDesignationId; + + private String siteCode1; + + private String siteCode2; + + private String siteCode3; + + private String selfOffice; + + private String fromWorkGroup; + + private String fromWorkGroupId; + + private String toWorkGroupCode; + + private String toWorkGroup; + + private String toWorkGroupId; + + private String selectAll; + + private String applnNoId; + + private String employeeNoId; + + private String siteId; + + private String site1Id; + + private String siteCode; + + private String site2Id; + + private String site3Id; + + private String disabapplnNo; + + private String disabemployeeNo; + + private String disabofcNoteNo; + + private String disabofcNoteDate; + + private String disabsite1; + + private String disabsite2; + + private String disabsite3; + + private String disabreason; + + private String disabapplnType; + + private String disabtrnsStatus; + + private String disabempName; + + private String disabSelfOffice; + + private String butApplnNo; + + private String disabbutApplnNo; + + private String butApplnDate; + + private String disabbutApplnDate; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private String butOfcNoteNo; + + private String disabbutOfcNoteNo; + + private String butOfcNoteDate; + + private String disabbutOfcNoteDate; + + private String butSite1; + + private String disabbutSite1; + + private String butSite2; + + private String disabbutSite2; + + private String butSite3; + + private String disabbutSite3; + + private String butSubmit; + + private String disabbutSubmit; + + private String butApproversRemarks; + + private String disabbutApproversRemarks; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String disabbutToDesignation; + + private String disabbutToWorkGroup; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getOfcNoteNo() { + return this.ofcNoteNo; + } + + public void setOfcNoteNo(String newOfcNoteNo) { + this.ofcNoteNo = newOfcNoteNo; + } + + public String getOfcNoteDate() { + return this.ofcNoteDate; + } + + public void setOfcNoteDate(String newOfcNoteDate) { + this.ofcNoteDate = newOfcNoteDate; + } + + public String getSite1() { + return this.site1; + } + + public void setSite1(String newSite1) { + this.site1 = newSite1; + } + + public String getSite2() { + return this.site2; + } + + public void setSite2(String newSite2) { + this.site2 = newSite2; + } + + public String getSite3() { + return this.site3; + } + + public void setSite3(String newSite3) { + this.site3 = newSite3; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getSelfOffice() { + return this.selfOffice; + } + + public void setSelfOffice(String newSelfOffice) { + this.selfOffice = newSelfOffice; + } + + public String getDisabSelfOffice() { + return this.disabSelfOffice; + } + + public void setDisabSelfOffice(String newDisabSelfOffice) { + this.disabSelfOffice = newDisabSelfOffice; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getFromWorkGroupId() { + return this.fromWorkGroupId; + } + + public void setFromWorkGroupId(String newFromWorkGroupId) { + this.fromWorkGroupId = newFromWorkGroupId; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWorkGroupId() { + return this.toWorkGroupId; + } + + public void setToWorkGroupId(String newToWorkGroupId) { + this.toWorkGroupId = newToWorkGroupId; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getApplnType() { + return this.applnType; + } + + public void setApplnType(String newApplnType) { + this.applnType = newApplnType; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getSite1Id() { + return this.site1Id; + } + + public void setSite1Id(String newSite1Id) { + this.site1Id = newSite1Id; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSite2Id() { + return this.site2Id; + } + + public void setSite2Id(String newSite2Id) { + this.site2Id = newSite2Id; + } + + public String getSite3Id() { + return this.site3Id; + } + + public void setSite3Id(String newSite3Id) { + this.site3Id = newSite3Id; + } + + public String getTrnsStatus() { + return this.trnsStatus; + } + + public void setTrnsStatus(String newTrnsStatus) { + this.trnsStatus = newTrnsStatus; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDisabapplnNo() { + return this.disabapplnNo; + } + + public void setDisabapplnNo(String newDisabapplnNo) { + this.disabapplnNo = newDisabapplnNo; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabofcNoteNo() { + return this.disabofcNoteNo; + } + + public void setDisabofcNoteNo(String newDisabofcNoteNo) { + this.disabofcNoteNo = newDisabofcNoteNo; + } + + public String getDisabofcNoteDate() { + return this.disabofcNoteDate; + } + + public void setDisabofcNoteDate(String newDisabofcNoteDate) { + this.disabofcNoteDate = newDisabofcNoteDate; + } + + public String getDisabsite1() { + return this.disabsite1; + } + + public void setDisabsite1(String newDisabsite1) { + this.disabsite1 = newDisabsite1; + } + + public String getDisabsite2() { + return this.disabsite2; + } + + public void setDisabsite2(String newDisabsite2) { + this.disabsite2 = newDisabsite2; + } + + public String getDisabsite3() { + return this.disabsite3; + } + + public void setDisabsite3(String newDisabsite3) { + this.disabsite3 = newDisabsite3; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getDisabapplnType() { + return this.disabapplnType; + } + + public void setDisabapplnType(String newDisabapplnType) { + this.disabapplnType = newDisabapplnType; + } + + public String getDisabtrnsStatus() { + return this.disabtrnsStatus; + } + + public void setDisabtrnsStatus(String newDisabtrnsStatus) { + this.disabtrnsStatus = newDisabtrnsStatus; + } + + public String getDisabempName() { + return this.disabempName; + } + + public void setDisabempName(String newDisabempName) { + this.disabempName = newDisabempName; + } + + public String getButApplnNo() { + return this.butApplnNo; + } + + public void setButApplnNo(String newButApplnNo) { + this.butApplnNo = newButApplnNo; + } + + public String getDisabbutApplnNo() { + return this.disabbutApplnNo; + } + + public void setDisabbutApplnNo(String newDisabbutApplnNo) { + this.disabbutApplnNo = newDisabbutApplnNo; + } + + public String getButApplnDate() { + return this.butApplnDate; + } + + public void setButApplnDate(String newButApplnDate) { + this.butApplnDate = newButApplnDate; + } + + public String getDisabbutApplnDate() { + return this.disabbutApplnDate; + } + + public void setDisabbutApplnDate(String newDisabbutApplnDate) { + this.disabbutApplnDate = newDisabbutApplnDate; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getButOfcNoteNo() { + return this.butOfcNoteNo; + } + + public void setButOfcNoteNo(String newButOfcNoteNo) { + this.butOfcNoteNo = newButOfcNoteNo; + } + + public String getDisabbutOfcNoteNo() { + return this.disabbutOfcNoteNo; + } + + public void setDisabbutOfcNoteNo(String newDisabbutOfcNoteNo) { + this.disabbutOfcNoteNo = newDisabbutOfcNoteNo; + } + + public String getButOfcNoteDate() { + return this.butOfcNoteDate; + } + + public void setButOfcNoteDate(String newButOfcNoteDate) { + this.butOfcNoteDate = newButOfcNoteDate; + } + + public String getDisabbutOfcNoteDate() { + return this.disabbutOfcNoteDate; + } + + public void setDisabbutOfcNoteDate(String newDisabbutOfcNoteDate) { + this.disabbutOfcNoteDate = newDisabbutOfcNoteDate; + } + + public String getButSite1() { + return this.butSite1; + } + + public void setButSite1(String newButSite1) { + this.butSite1 = newButSite1; + } + + public String getDisabbutSite1() { + return this.disabbutSite1; + } + + public void setDisabbutSite1(String newDisabbutSite1) { + this.disabbutSite1 = newDisabbutSite1; + } + + public String getButSite2() { + return this.butSite2; + } + + public void setButSite2(String newButSite2) { + this.butSite2 = newButSite2; + } + + public String getDisabbutSite2() { + return this.disabbutSite2; + } + + public void setDisabbutSite2(String newDisabbutSite2) { + this.disabbutSite2 = newDisabbutSite2; + } + + public String getButSite3() { + return this.butSite3; + } + + public void setButSite3(String newButSite3) { + this.butSite3 = newButSite3; + } + + public String getDisabbutSite3() { + return this.disabbutSite3; + } + + public void setDisabbutSite3(String newDisabbutSite3) { + this.disabbutSite3 = newDisabbutSite3; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getButApproversRemarks() { + return this.butApproversRemarks; + } + + public void setButApproversRemarks(String newButApproversRemarks) { + this.butApproversRemarks = newButApproversRemarks; + } + + public String getDisabbutApproversRemarks() { + return this.disabbutApproversRemarks; + } + + public void setDisabbutApproversRemarks(String newDisabbutApproversRemarks) { + this.disabbutApproversRemarks = newDisabbutApproversRemarks; + } + + public String getSiteCode1() { + return this.siteCode1; + } + + public void setSiteCode1(String newSiteCode1) { + this.siteCode1 = newSiteCode1; + } + + public String getSiteCode2() { + return this.siteCode2; + } + + public void setSiteCode2(String newSiteCode2) { + this.siteCode2 = newSiteCode2; + } + + public String getSiteCode3() { + return this.siteCode3; + } + + public void setSiteCode3(String newSiteCode3) { + this.siteCode3 = newSiteCode3; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getFromDesignationId() { + return this.fromDesignationId; + } + + public void setFromDesignationId(String newFromDesignationId) { + this.fromDesignationId = newFromDesignationId; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getToDesignationId() { + return this.toDesignationId; + } + + public void setToDesignationId(String newToDesignationId) { + this.toDesignationId = newToDesignationId; + } + + public String getDisabbutToDesignation() { + return this.disabbutToDesignation; + } + + public void setDisabbutToDesignation(String newDisabbutToDesignation) { + this.disabbutToDesignation = newDisabbutToDesignation; + } + + public String getDisabbutToWorkGroup() { + return this.disabbutToWorkGroup; + } + + public void setDisabbutToWorkGroup(String newDisabbutToWorkGroup) { + this.disabbutToWorkGroup = newDisabbutToWorkGroup; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransChrgRptForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransChrgRptForm.java new file mode 100644 index 0000000..7afa408 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransChrgRptForm.java @@ -0,0 +1,586 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDTransChrgRptForm extends HrmBaseForm { + private String trnOrderNo; + + private String empName; + + private String chargeType; + + private String chargeCode; + + private String handOverDate; + + private String remarks; + + private String selectAll; + + private String noonFlag; + + private String trnOrderNoId; + + private String chargeCodeId; + + private String empNameId; + + private String empNo; + + private String chargeTypeId; + + private String trnOrdrDtlId; + + private String disabchargeCode; + + private String disabtrnOrderNo; + + private String disabempName; + + private String disabchargeType; + + private String disabhandOverDate; + + private String disabremarks; + + private String disabnoonFlag; + + private String disabempNo; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String butSubmit; + + private String disabbutSubmit; + + private String butTrnOrderNo; + + private String butChargeCode; + + private String butHandOverDate; + + private String disabbutTrnOrderNo; + + private String disabbutChargeCode; + + private String disabbutHandOverDate; + + private String transferDate; + + private String disabtransferDate; + + private String disabbutTransferDate; + + private String fromSiteCode; + + private String disabfromSiteCode; + + private String toSiteCode; + + private String disabtoSiteCode; + + private String fromSiteId; + + private String toSiteId; + + private String fromDesignation; + + private String fromWorkGroup; + + private String toDesignation; + + private String toWorkGroup; + + private String fromDesigId; + + private String toDesigId; + + private String chargeStatus; + + private String disabchargeStatus; + + private String orderType; + + private String handoverTakeover; + + private String butEmployee; + + private String disabbutEmployee; + + private String handoverTakeoverId; + + private String handTakeEmpNo; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getTrnOrderNo() { + return this.trnOrderNo; + } + + public void setTrnOrderNo(String newTrnOrderNo) { + this.trnOrderNo = newTrnOrderNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getChargeType() { + return this.chargeType; + } + + public void setChargeType(String newChargeType) { + this.chargeType = newChargeType; + } + + public String getChargeCode() { + return this.chargeCode; + } + + public void setChargeCode(String newChargeCode) { + this.chargeCode = newChargeCode; + } + + public String getHandOverDate() { + return this.handOverDate; + } + + public void setHandOverDate(String newHandOverDate) { + this.handOverDate = newHandOverDate; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getNoonFlag() { + return this.noonFlag; + } + + public void setNoonFlag(String newNoonFlag) { + this.noonFlag = newNoonFlag; + } + + public String getTrnOrderNoId() { + return this.trnOrderNoId; + } + + public void setTrnOrderNoId(String newTrnOrderNoId) { + this.trnOrderNoId = newTrnOrderNoId; + } + + public String getChargeCodeId() { + return this.chargeCodeId; + } + + public void setChargeCodeId(String newChargeCodeId) { + this.chargeCodeId = newChargeCodeId; + } + + public String getEmpNameId() { + return this.empNameId; + } + + public void setEmpNameId(String newEmpNameId) { + this.empNameId = newEmpNameId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getChargeTypeId() { + return this.chargeTypeId; + } + + public void setChargeTypeId(String newChargeTypeId) { + this.chargeTypeId = newChargeTypeId; + } + + public String getTrnOrdrDtlId() { + return this.trnOrdrDtlId; + } + + public void setTrnOrdrDtlId(String newTrnOrdrDtlId) { + this.trnOrdrDtlId = newTrnOrdrDtlId; + } + + public String getDisabchargeCode() { + return this.disabchargeCode; + } + + public void setDisabchargeCode(String newDisabchargeCode) { + this.disabchargeCode = newDisabchargeCode; + } + + public String getDisabtrnOrderNo() { + return this.disabtrnOrderNo; + } + + public void setDisabtrnOrderNo(String newDisabtrnOrderNo) { + this.disabtrnOrderNo = newDisabtrnOrderNo; + } + + public String getDisabempName() { + return this.disabempName; + } + + public void setDisabempName(String newDisabempName) { + this.disabempName = newDisabempName; + } + + public String getDisabchargeType() { + return this.disabchargeType; + } + + public void setDisabchargeType(String newDisabchargeType) { + this.disabchargeType = newDisabchargeType; + } + + public String getDisabhandOverDate() { + return this.disabhandOverDate; + } + + public void setDisabhandOverDate(String newDisabhandOverDate) { + this.disabhandOverDate = newDisabhandOverDate; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getDisabnoonFlag() { + return this.disabnoonFlag; + } + + public void setDisabnoonFlag(String newDisabnoonFlag) { + this.disabnoonFlag = newDisabnoonFlag; + } + + public String getDisabempNo() { + return this.disabempNo; + } + + public void setDisabempNo(String newDisabempNo) { + this.disabempNo = newDisabempNo; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getButTrnOrderNo() { + return this.butTrnOrderNo; + } + + public void setButTrnOrderNo(String newButTrnOrderNo) { + this.butTrnOrderNo = newButTrnOrderNo; + } + + public String getButChargeCode() { + return this.butChargeCode; + } + + public void setButChargeCode(String newButChargeCode) { + this.butChargeCode = newButChargeCode; + } + + public String getButHandOverDate() { + return this.butHandOverDate; + } + + public void setButHandOverDate(String newButHandOverDate) { + this.butHandOverDate = newButHandOverDate; + } + + public String getDisabbutTrnOrderNo() { + return this.disabbutTrnOrderNo; + } + + public void setDisabbutTrnOrderNo(String newDisabbutTrnOrderNo) { + this.disabbutTrnOrderNo = newDisabbutTrnOrderNo; + } + + public String getDisabbutChargeCode() { + return this.disabbutChargeCode; + } + + public void setDisabbutChargeCode(String newDisabbutChargeCode) { + this.disabbutChargeCode = newDisabbutChargeCode; + } + + public String getDisabbutHandOverDate() { + return this.disabbutHandOverDate; + } + + public void setDisabbutHandOverDate(String newDisabbutHandOverDate) { + this.disabbutHandOverDate = newDisabbutHandOverDate; + } + + public String getTransferDate() { + return this.transferDate; + } + + public void setTransferDate(String newTransferDate) { + this.transferDate = newTransferDate; + } + + public String getDisabtransferDate() { + return this.disabtransferDate; + } + + public void setDisabtransferDate(String newDisabtransferDate) { + this.disabtransferDate = newDisabtransferDate; + } + + public String getDisabbutTransferDate() { + return this.disabbutTransferDate; + } + + public void setDisabbutTransferDate(String newDisabbutTransferDate) { + this.disabbutTransferDate = newDisabbutTransferDate; + } + + public String getFromSiteCode() { + return this.fromSiteCode; + } + + public void setFromSiteCode(String newFromSiteCode) { + this.fromSiteCode = newFromSiteCode; + } + + public String getDisabfromSiteCode() { + return this.disabfromSiteCode; + } + + public void setDisabfromSiteCode(String newDisabfromSiteCode) { + this.disabfromSiteCode = newDisabfromSiteCode; + } + + public String getToSiteCode() { + return this.toSiteCode; + } + + public void setToSiteCode(String newToSiteCode) { + this.toSiteCode = newToSiteCode; + } + + public String getDisabtoSiteCode() { + return this.disabtoSiteCode; + } + + public void setDisabtoSiteCode(String newDisabtoSiteCode) { + this.disabtoSiteCode = newDisabtoSiteCode; + } + + public String getFromSiteId() { + return this.fromSiteId; + } + + public void setFromSiteId(String newFromSiteId) { + this.fromSiteId = newFromSiteId; + } + + public String getToSiteId() { + return this.toSiteId; + } + + public void setToSiteId(String newToSiteId) { + this.toSiteId = newToSiteId; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getChargeStatus() { + return this.chargeStatus; + } + + public void setChargeStatus(String newChargeStatus) { + this.chargeStatus = newChargeStatus; + } + + public String getDisabchargeStatus() { + return this.disabchargeStatus; + } + + public void setDisabchargeStatus(String newDisabchargeStatus) { + this.disabchargeStatus = newDisabchargeStatus; + } + + public String getOrderType() { + return this.orderType; + } + + public void setOrderType(String newOrderType) { + this.orderType = newOrderType; + } + + public String getHandoverTakeover() { + return this.handoverTakeover; + } + + public void setHandoverTakeover(String newHandoverTakeover) { + this.handoverTakeover = newHandoverTakeover; + } + + public String getButEmployee() { + return this.butEmployee; + } + + public void setButEmployee(String newButEmployee) { + this.butEmployee = newButEmployee; + } + + public String getDisabbutEmployee() { + return this.disabbutEmployee; + } + + public void setDisabbutEmployee(String newDisabbutEmployee) { + this.disabbutEmployee = newDisabbutEmployee; + } + + public String getHandoverTakeoverId() { + return this.handoverTakeoverId; + } + + public void setHandoverTakeoverId(String newHandoverTakeoverId) { + this.handoverTakeoverId = newHandoverTakeoverId; + } + + public String getHandTakeEmpNo() { + return this.handTakeEmpNo; + } + + public void setHandTakeEmpNo(String newHandTakeEmpNo) { + this.handTakeEmpNo = newHandTakeEmpNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclApplForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclApplForm.java new file mode 100644 index 0000000..263813b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclApplForm.java @@ -0,0 +1,696 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDTransCnclApplForm extends HrmBaseForm { + private String applnNo; + + private String applnDate; + + private String empNo; + + private String empName; + + private String generatedBy; + + private String ofcNoteNo; + + private String ofcNoteDate; + + private String cancelDeferFlag; + + private String defermentPeriod; + + private String deferredDate; + + private String reason; + + private String orderNo; + + private String trnOrderType; + + private String fromSite; + + private String toSite; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String fromDesignation; + + private String toDesignation; + + private String selectAll; + + private String deferredStatus; + + private String disabapplnNo; + + private String disabapplnDate; + + private String disabempNo; + + private String disabempName; + + private String disabgeneratedBy; + + private String disabofcNoteNo; + + private String disabofcNoteDate; + + private String disabcancelDeferFlag; + + private String disabdefermentPeriod; + + private String disabdeferredDate; + + private String disabreason; + + private String disaborderNo; + + private String disabtrnOrderType; + + private String disabfromSite; + + private String disabtoSite; + + private String disabfromWorkGroup; + + private String disabtoWorkGroup; + + private String disabfromDesignation; + + private String disabtoDesignation; + + private String disabdeferredStatus; + + private String butApplnNo; + + private String disabbutApplnNo; + + private String butApplnDate; + + private String disabbutApplnDate; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String butOfcNoteNo; + + private String disabbutOfcNoteNo; + + private String butOfcNoteDate; + + private String disabbutOfcNoteDate; + + private String butDeferredDate; + + private String disabbutDeferredDate; + + private String applnNoId; + + private String ofcNoteId; + + private String employeeNoId; + + private String orderDtlId; + + private String orderDate; + + private String disaborderDate; + + private String effectDate; + + private String disabeffectDate; + + private String empId; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String butSubmit; + + private String disabbutSubmit; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getGeneratedBy() { + return this.generatedBy; + } + + public void setGeneratedBy(String newGeneratedBy) { + this.generatedBy = newGeneratedBy; + } + + public String getOfcNoteNo() { + return this.ofcNoteNo; + } + + public void setOfcNoteNo(String newOfcNoteNo) { + this.ofcNoteNo = newOfcNoteNo; + } + + public String getOfcNoteDate() { + return this.ofcNoteDate; + } + + public void setOfcNoteDate(String newOfcNoteDate) { + this.ofcNoteDate = newOfcNoteDate; + } + + public String getCancelDeferFlag() { + return this.cancelDeferFlag; + } + + public void setCancelDeferFlag(String newCancelDeferFlag) { + this.cancelDeferFlag = newCancelDeferFlag; + } + + public String getDefermentPeriod() { + return this.defermentPeriod; + } + + public void setDefermentPeriod(String newDefermentPeriod) { + this.defermentPeriod = newDefermentPeriod; + } + + public String getDeferredDate() { + return this.deferredDate; + } + + public void setDeferredDate(String newDeferredDate) { + this.deferredDate = newDeferredDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getTrnOrderType() { + return this.trnOrderType; + } + + public void setTrnOrderType(String newTrnOrderType) { + this.trnOrderType = newTrnOrderType; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDeferredStatus() { + return this.deferredStatus; + } + + public void setDeferredStatus(String newDeferredStatus) { + this.deferredStatus = newDeferredStatus; + } + + public String getDisabapplnNo() { + return this.disabapplnNo; + } + + public void setDisabapplnNo(String newDisabapplnNo) { + this.disabapplnNo = newDisabapplnNo; + } + + public String getDisabapplnDate() { + return this.disabapplnDate; + } + + public void setDisabapplnDate(String newDisabapplnDate) { + this.disabapplnDate = newDisabapplnDate; + } + + public String getDisabempNo() { + return this.disabempNo; + } + + public void setDisabempNo(String newDisabempNo) { + this.disabempNo = newDisabempNo; + } + + public String getDisabempName() { + return this.disabempName; + } + + public void setDisabempName(String newDisabempName) { + this.disabempName = newDisabempName; + } + + public String getDisabgeneratedBy() { + return this.disabgeneratedBy; + } + + public void setDisabgeneratedBy(String newDisabgeneratedBy) { + this.disabgeneratedBy = newDisabgeneratedBy; + } + + public String getDisabofcNoteNo() { + return this.disabofcNoteNo; + } + + public void setDisabofcNoteNo(String newDisabofcNoteNo) { + this.disabofcNoteNo = newDisabofcNoteNo; + } + + public String getDisabofcNoteDate() { + return this.disabofcNoteDate; + } + + public void setDisabofcNoteDate(String newDisabofcNoteDate) { + this.disabofcNoteDate = newDisabofcNoteDate; + } + + public String getDisabcancelDeferFlag() { + return this.disabcancelDeferFlag; + } + + public void setDisabcancelDeferFlag(String newDisabcancelDeferFlag) { + this.disabcancelDeferFlag = newDisabcancelDeferFlag; + } + + public String getDisabdefermentPeriod() { + return this.disabdefermentPeriod; + } + + public void setDisabdefermentPeriod(String newDisabdefermentPeriod) { + this.disabdefermentPeriod = newDisabdefermentPeriod; + } + + public String getDisabdeferredDate() { + return this.disabdeferredDate; + } + + public void setDisabdeferredDate(String newDisabdeferredDate) { + this.disabdeferredDate = newDisabdeferredDate; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getDisaborderNo() { + return this.disaborderNo; + } + + public void setDisaborderNo(String newDisaborderNo) { + this.disaborderNo = newDisaborderNo; + } + + public String getDisabtrnOrderType() { + return this.disabtrnOrderType; + } + + public void setDisabtrnOrderType(String newDisabtrnOrderType) { + this.disabtrnOrderType = newDisabtrnOrderType; + } + + public String getDisabfromSite() { + return this.disabfromSite; + } + + public void setDisabfromSite(String newDisabfromSite) { + this.disabfromSite = newDisabfromSite; + } + + public String getDisabtoSite() { + return this.disabtoSite; + } + + public void setDisabtoSite(String newDisabtoSite) { + this.disabtoSite = newDisabtoSite; + } + + public String getDisabfromWorkGroup() { + return this.disabfromWorkGroup; + } + + public void setDisabfromWorkGroup(String newDisabfromWorkGroup) { + this.disabfromWorkGroup = newDisabfromWorkGroup; + } + + public String getDisabtoWorkGroup() { + return this.disabtoWorkGroup; + } + + public void setDisabtoWorkGroup(String newDisabtoWorkGroup) { + this.disabtoWorkGroup = newDisabtoWorkGroup; + } + + public String getDisabfromDesignation() { + return this.disabfromDesignation; + } + + public void setDisabfromDesignation(String newDisabfromDesignation) { + this.disabfromDesignation = newDisabfromDesignation; + } + + public String getDisabtoDesignation() { + return this.disabtoDesignation; + } + + public void setDisabtoDesignation(String newDisabtoDesignation) { + this.disabtoDesignation = newDisabtoDesignation; + } + + public String getDisabdeferredStatus() { + return this.disabdeferredStatus; + } + + public void setDisabdeferredStatus(String newDisabdeferredStatus) { + this.disabdeferredStatus = newDisabdeferredStatus; + } + + public String getButApplnNo() { + return this.butApplnNo; + } + + public void setButApplnNo(String newButApplnNo) { + this.butApplnNo = newButApplnNo; + } + + public String getDisabbutApplnNo() { + return this.disabbutApplnNo; + } + + public void setDisabbutApplnNo(String newDisabbutApplnNo) { + this.disabbutApplnNo = newDisabbutApplnNo; + } + + public String getButApplnDate() { + return this.butApplnDate; + } + + public void setButApplnDate(String newButApplnDate) { + this.butApplnDate = newButApplnDate; + } + + public String getDisabbutApplnDate() { + return this.disabbutApplnDate; + } + + public void setDisabbutApplnDate(String newDisabbutApplnDate) { + this.disabbutApplnDate = newDisabbutApplnDate; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getButOfcNoteNo() { + return this.butOfcNoteNo; + } + + public void setButOfcNoteNo(String newButOfcNoteNo) { + this.butOfcNoteNo = newButOfcNoteNo; + } + + public String getDisabbutOfcNoteNo() { + return this.disabbutOfcNoteNo; + } + + public void setDisabbutOfcNoteNo(String newDisabbutOfcNoteNo) { + this.disabbutOfcNoteNo = newDisabbutOfcNoteNo; + } + + public String getButOfcNoteDate() { + return this.butOfcNoteDate; + } + + public void setButOfcNoteDate(String newButOfcNoteDate) { + this.butOfcNoteDate = newButOfcNoteDate; + } + + public String getDisabbutOfcNoteDate() { + return this.disabbutOfcNoteDate; + } + + public void setDisabbutOfcNoteDate(String newDisabbutOfcNoteDate) { + this.disabbutOfcNoteDate = newDisabbutOfcNoteDate; + } + + public String getButDeferredDate() { + return this.butDeferredDate; + } + + public void setButDeferredDate(String newButDeferredDate) { + this.butDeferredDate = newButDeferredDate; + } + + public String getDisabbutDeferredDate() { + return this.disabbutDeferredDate; + } + + public void setDisabbutDeferredDate(String newDisabbutDeferredDate) { + this.disabbutDeferredDate = newDisabbutDeferredDate; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getOfcNoteId() { + return this.ofcNoteId; + } + + public void setOfcNoteId(String newOfcNoteId) { + this.ofcNoteId = newOfcNoteId; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getOrderDtlId() { + return this.orderDtlId; + } + + public void setOrderDtlId(String newOrderDtlId) { + this.orderDtlId = newOrderDtlId; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getDisaborderDate() { + return this.disaborderDate; + } + + public void setDisaborderDate(String newDisaborderDate) { + this.disaborderDate = newDisaborderDate; + } + + public String getEffectDate() { + return this.effectDate; + } + + public void setEffectDate(String newEffectDate) { + this.effectDate = newEffectDate; + } + + public String getDisabeffectDate() { + return this.disabeffectDate; + } + + public void setDisabeffectDate(String newDisabeffectDate) { + this.disabeffectDate = newDisabeffectDate; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclOrderSingleEmpForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclOrderSingleEmpForm.java new file mode 100644 index 0000000..44a364b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransCnclOrderSingleEmpForm.java @@ -0,0 +1,568 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.bean.HrmTransCnclOrderSingEmpDtlBean; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDTransCnclOrderSingleEmpForm extends HrmBaseForm { + private String orderNo; + + private String disaborderNo; + + private String butOrderNo; + + private String disabbutOrderNo; + + private String orderDate; + + private String disaborderDate; + + private String butOrderDate; + + private String disabbutOrderDate; + + private String generatedBy; + + private String disabgeneratedBy; + + private String cancDefFlag; + + private String disabcancDefFlag; + + private String cancStatus; + + private String disabcancStatus; + + private String defDate; + + private String disabdefDate; + + private String butDefDate; + + private String disabbutDefDate; + + private String defPeriod; + + private String disabdefPeriod; + + private ArrayList arrTransCnclOrderDtl = new ArrayList(); + + private String appNo; + + private String disabappNo; + + private String butAppNo; + + private String disabbutAppNo; + + private String butAppDate; + + private String disabbutAppDate; + + private String appDate; + + private String disabappDate; + + private String appNoId; + + private String orderId; + + private String headerPrimaryKey1; + + private String employeeName; + + private String disabemployeeName; + + private String transOrderNo; + + private String disabtransOrderNo; + + private String transOrderDate; + + private String disabtransOrderDate; + + private String transEffectDate; + + private String disabtransEffectDate; + + private String disabbutOrderDateDate; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String cnclDeferFlag; + + private String disabcnclDeferFlag; + + private String butSubmit; + + private String disabbutSubmit; + + private String employeeId; + + private String approverNoId; + + private String approverName; + + private String butApproverNo; + + private String disabbutApproverNo; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getDisaborderNo() { + return this.disaborderNo; + } + + public void setDisaborderNo(String newDisaborderNo) { + this.disaborderNo = newDisaborderNo; + } + + public String getButOrderNo() { + return this.butOrderNo; + } + + public void setButOrderNo(String newButOrderNo) { + this.butOrderNo = newButOrderNo; + } + + public String getDisabbutOrderNo() { + return this.disabbutOrderNo; + } + + public void setDisabbutOrderNo(String newDisabbutOrderNo) { + this.disabbutOrderNo = newDisabbutOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getDisaborderDate() { + return this.disaborderDate; + } + + public void setDisaborderDate(String newDisaborderDate) { + this.disaborderDate = newDisaborderDate; + } + + public String getButOrderDate() { + return this.butOrderDate; + } + + public void setButOrderDate(String newButOrderDate) { + this.butOrderDate = newButOrderDate; + } + + public String getDisabbutOrderDate() { + return this.disabbutOrderDate; + } + + public void setDisabbutOrderDate(String newDisabbutOrderDate) { + this.disabbutOrderDate = newDisabbutOrderDate; + } + + public String getGeneratedBy() { + return this.generatedBy; + } + + public void setGeneratedBy(String newGeneratedBy) { + this.generatedBy = newGeneratedBy; + } + + public String getDisabgeneratedBy() { + return this.disabgeneratedBy; + } + + public void setDisabgeneratedBy(String newDisabgeneratedBy) { + this.disabgeneratedBy = newDisabgeneratedBy; + } + + public String getCancDefFlag() { + return this.cancDefFlag; + } + + public void setCancDefFlag(String newCancDefFlag) { + this.cancDefFlag = newCancDefFlag; + } + + public String getDisabcancDefFlag() { + return this.disabcancDefFlag; + } + + public void setDisabcancDefFlag(String newDisabcancDefFlag) { + this.disabcancDefFlag = newDisabcancDefFlag; + } + + public String getCancStatus() { + return this.cancStatus; + } + + public void setCancStatus(String newCancStatus) { + this.cancStatus = newCancStatus; + } + + public String getDisabcancStatus() { + return this.disabcancStatus; + } + + public void setDisabcancStatus(String newDisabcancStatus) { + this.disabcancStatus = newDisabcancStatus; + } + + public String getDefDate() { + return this.defDate; + } + + public void setDefDate(String newDefDate) { + this.defDate = newDefDate; + } + + public String getDisabdefDate() { + return this.disabdefDate; + } + + public void setDisabdefDate(String newDisabdefDate) { + this.disabdefDate = newDisabdefDate; + } + + public String getButDefDate() { + return this.butDefDate; + } + + public void setButDefDate(String newButDefDate) { + this.butDefDate = newButDefDate; + } + + public String getDisabbutDefDate() { + return this.disabbutDefDate; + } + + public void setDisabbutDefDate(String newDisabbutDefDate) { + this.disabbutDefDate = newDisabbutDefDate; + } + + public String getDefPeriod() { + return this.defPeriod; + } + + public void setDefPeriod(String newDefPeriod) { + this.defPeriod = newDefPeriod; + } + + public String getDisabdefPeriod() { + return this.disabdefPeriod; + } + + public void setDisabdefPeriod(String newDisabdefPeriod) { + this.disabdefPeriod = newDisabdefPeriod; + } + + public ArrayList getArrTransCnclOrderDtl() { + return this.arrTransCnclOrderDtl; + } + + public void setArrTransCnclOrderDtl(ArrayList newArrTransCnclOrderDtl) { + this.arrTransCnclOrderDtl = newArrTransCnclOrderDtl; + } + + public HrmTransCnclOrderSingEmpDtlBean getHrmTransCnclOrderDtl() { + HrmTransCnclOrderSingEmpDtlBean oEmpDtl; + if (this.arrTransCnclOrderDtl.size() != 0) { + oEmpDtl = this.arrTransCnclOrderDtl.get(0); + } else { + oEmpDtl = new HrmTransCnclOrderSingEmpDtlBean(); + } + return oEmpDtl; + } + + public String getAppNo() { + return this.appNo; + } + + public void setAppNo(String newAppNo) { + this.appNo = newAppNo; + } + + public String getDisabappNo() { + return this.disabappNo; + } + + public void setDisabappNo(String newDisabappNo) { + this.disabappNo = newDisabappNo; + } + + public String getButAppNo() { + return this.butAppNo; + } + + public void setButAppNo(String newButAppNo) { + this.butAppNo = newButAppNo; + } + + public String getDisabbutAppNo() { + return this.disabbutAppNo; + } + + public void setDisabbutAppNo(String newDisabbutAppNo) { + this.disabbutAppNo = newDisabbutAppNo; + } + + public String getButAppDate() { + return this.butAppDate; + } + + public void setButAppDate(String newButAppDate) { + this.butAppDate = newButAppDate; + } + + public String getDisabbutAppDate() { + return this.disabbutAppDate; + } + + public void setDisabbutAppDate(String newDisabbutAppDate) { + this.disabbutAppDate = newDisabbutAppDate; + } + + public String getAppDate() { + return this.appDate; + } + + public void setAppDate(String newAppDate) { + this.appDate = newAppDate; + } + + public String getDisabappDate() { + return this.disabappDate; + } + + public void setDisabappDate(String newDisabappDate) { + this.disabappDate = newDisabappDate; + } + + public String getAppNoId() { + return this.appNoId; + } + + public void setAppNoId(String newAppNoId) { + this.appNoId = newAppNoId; + } + + public String getOrderId() { + return this.orderId; + } + + public void setOrderId(String newOrderId) { + this.orderId = newOrderId; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getTransOrderNo() { + return this.transOrderNo; + } + + public void setTransOrderNo(String newTransOrderNo) { + this.transOrderNo = newTransOrderNo; + } + + public String getDisabtransOrderNo() { + return this.disabtransOrderNo; + } + + public void setDisabtransOrderNo(String newDisabtransOrderNo) { + this.disabtransOrderNo = newDisabtransOrderNo; + } + + public String getTransOrderDate() { + return this.transOrderDate; + } + + public void setTransOrderDate(String newTransOrderDate) { + this.transOrderDate = newTransOrderDate; + } + + public String getDisabtransOrderDate() { + return this.disabtransOrderDate; + } + + public void setDisabtransOrderDate(String newDisabtransOrderDate) { + this.disabtransOrderDate = newDisabtransOrderDate; + } + + public String getTransEffectDate() { + return this.transEffectDate; + } + + public void setTransEffectDate(String newTransEffectDate) { + this.transEffectDate = newTransEffectDate; + } + + public String getDisabtransEffectDate() { + return this.disabtransEffectDate; + } + + public void setDisabtransEffectDate(String newDisabtransEffectDate) { + this.disabtransEffectDate = newDisabtransEffectDate; + } + + public String getDisabbutOrderDateDate() { + return this.disabbutOrderDateDate; + } + + public void setDisabbutOrderDateDate(String newDisabbutOrderDateDate) { + this.disabbutOrderDateDate = newDisabbutOrderDateDate; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getCnclDeferFlag() { + return this.cnclDeferFlag; + } + + public void setCnclDeferFlag(String newCnclDeferFlag) { + this.cnclDeferFlag = newCnclDeferFlag; + } + + public String getDisabcnclDeferFlag() { + return this.disabcnclDeferFlag; + } + + public void setDisabcnclDeferFlag(String newDisabcnclDeferFlag) { + this.disabcnclDeferFlag = newDisabcnclDeferFlag; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getButApproverNo() { + return this.butApproverNo; + } + + public void setButApproverNo(String newButApproverNo) { + this.butApproverNo = newButApproverNo; + } + + public String getDisabbutApproverNo() { + return this.disabbutApproverNo; + } + + public void setDisabbutApproverNo(String newDisabbutApproverNo) { + this.disabbutApproverNo = newDisabbutApproverNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransOrderForSingleEmpForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransOrderForSingleEmpForm.java new file mode 100644 index 0000000..86ecbb4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmATDTransOrderForSingleEmpForm.java @@ -0,0 +1,706 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmATDTransOrderForSingleEmpForm extends HrmBaseForm { + private String orderNo; + + private String orderDate; + + private String orderStatus; + + private String orderType; + + private String applnNo; + + private String applicationDate; + + private String empName; + + private String fromSite; + + private String toSite; + + private String reportingEmpId; + + private String trnsfrEffectDate; + + private String reportingDate; + + private String noOfDays; + + private String remarks; + + private String disaborderNo; + + private String disaborderDate; + + private String disaborderStatus; + + private String disaborderType; + + private String disabapplnNo; + + private String disabempName; + + private String disabfromSite; + + private String disabtoSite; + + private String disabreportingEmpId; + + private String disabtrnsfrEffectDate; + + private String disabreportingDate; + + private String disabnoOfDays; + + private String disabremarks; + + private String disabapplicationDate; + + private String butReportingDate; + + private String butTrnsfrEffectDate; + + private String butOrderDate; + + private String butOrderNo; + + private String butApplnNo; + + private String butReportingEmpId; + + private String butToSite; + + private String disabbutReportingEmpId; + + private String disabbutToSite; + + private String disabbutApplnNo; + + private String disabbutOrderNo; + + private String disabbutTrnsfrEffectDate; + + private String disabbutReportingDate; + + private String disabbutOrderDate; + + private String orderNoID; + + private String applnNoID; + + private String toDesignation; + + private String empID; + + private String toSiteID; + + private String headerPrimaryKey1; + + private String fromSiteID; + + private String reptEmpID; + + private String reptEmpGrade; + + private String butReject; + + private String disabbutReject; + + private String butApprove; + + private String disabbutApprove; + + private String fromDesignation; + + private String butSubmit; + + private String disabbutSubmit; + + private String approverName; + + private String approverNoId; + + private String butApproverNo; + + private String disabbutApproverNo; + + private String selfOffice; + + private String disabSelfOffice; + + private String fromWorkGroup; + + private String toWorkGroup; + + private String toWorkGroupCode; + + private String butCancelTransfer; + + private String disabbutCancelTransfer; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getOrderStatus() { + return this.orderStatus; + } + + public void setOrderStatus(String newOrderStatus) { + this.orderStatus = newOrderStatus; + } + + public String getApplnNo() { + return this.applnNo; + } + + public void setApplnNo(String newApplnNo) { + this.applnNo = newApplnNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getFromSite() { + return this.fromSite; + } + + public void setFromSite(String newFromSite) { + this.fromSite = newFromSite; + } + + public String getToSite() { + return this.toSite; + } + + public void setToSite(String newToSite) { + this.toSite = newToSite; + } + + public String getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String getTrnsfrEffectDate() { + return this.trnsfrEffectDate; + } + + public void setTrnsfrEffectDate(String newTrnsfrEffectDate) { + this.trnsfrEffectDate = newTrnsfrEffectDate; + } + + public String getReportingDate() { + return this.reportingDate; + } + + public void setReportingDate(String newReportingDate) { + this.reportingDate = newReportingDate; + } + + public String getNoOfDays() { + return this.noOfDays; + } + + public void setNoOfDays(String newNoOfDays) { + this.noOfDays = newNoOfDays; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDisaborderNo() { + return this.disaborderNo; + } + + public void setDisaborderNo(String newDisaborderNo) { + this.disaborderNo = newDisaborderNo; + } + + public String getDisaborderDate() { + return this.disaborderDate; + } + + public void setDisaborderDate(String newDisaborderDate) { + this.disaborderDate = newDisaborderDate; + } + + public String getDisaborderStatus() { + return this.disaborderStatus; + } + + public void setDisaborderStatus(String newDisaborderStatus) { + this.disaborderStatus = newDisaborderStatus; + } + + public String getDisabapplnNo() { + return this.disabapplnNo; + } + + public void setDisabapplnNo(String newDisabapplnNo) { + this.disabapplnNo = newDisabapplnNo; + } + + public String getDisabempName() { + return this.disabempName; + } + + public void setDisabempName(String newDisabempName) { + this.disabempName = newDisabempName; + } + + public String getDisabfromSite() { + return this.disabfromSite; + } + + public void setDisabfromSite(String newDisabfromSite) { + this.disabfromSite = newDisabfromSite; + } + + public String getDisabtoSite() { + return this.disabtoSite; + } + + public void setDisabtoSite(String newDisabtoSite) { + this.disabtoSite = newDisabtoSite; + } + + public String getDisabreportingEmpId() { + return this.disabreportingEmpId; + } + + public void setDisabreportingEmpId(String newDisabreportingEmpId) { + this.disabreportingEmpId = newDisabreportingEmpId; + } + + public String getDisabtrnsfrEffectDate() { + return this.disabtrnsfrEffectDate; + } + + public void setDisabtrnsfrEffectDate(String newDisabtrnsfrEffectDate) { + this.disabtrnsfrEffectDate = newDisabtrnsfrEffectDate; + } + + public String getDisabreportingDate() { + return this.disabreportingDate; + } + + public void setDisabreportingDate(String newDisabreportingDate) { + this.disabreportingDate = newDisabreportingDate; + } + + public String getDisabnoOfDays() { + return this.disabnoOfDays; + } + + public void setDisabnoOfDays(String newDisabnoOfDays) { + this.disabnoOfDays = newDisabnoOfDays; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getButReportingDate() { + return this.butReportingDate; + } + + public void setButReportingDate(String newButReportingDate) { + this.butReportingDate = newButReportingDate; + } + + public String getDisabbutReportingDate() { + return this.disabbutReportingDate; + } + + public void setDisabbutReportingDate(String newDisabbutReportingDate) { + this.disabbutReportingDate = newDisabbutReportingDate; + } + + public String getButTrnsfrEffectDate() { + return this.butTrnsfrEffectDate; + } + + public void setButTrnsfrEffectDate(String newButTrnsfrEffectDate) { + this.butTrnsfrEffectDate = newButTrnsfrEffectDate; + } + + public String getDisabbutTrnsfrEffectDate() { + return this.disabbutTrnsfrEffectDate; + } + + public void setDisabbutTrnsfrEffectDate(String newDisabbutTrnsfrEffectDate) { + this.disabbutTrnsfrEffectDate = newDisabbutTrnsfrEffectDate; + } + + public String getButReportingEmpId() { + return this.butReportingEmpId; + } + + public void setButReportingEmpId(String newButReportingEmpId) { + this.butReportingEmpId = newButReportingEmpId; + } + + public String getDisabbutReportingEmpId() { + return this.disabbutReportingEmpId; + } + + public void setDisabbutReportingEmpId(String newDisabbutReportingEmpId) { + this.disabbutReportingEmpId = newDisabbutReportingEmpId; + } + + public String getButToSite() { + return this.butToSite; + } + + public void setButToSite(String newButToSite) { + this.butToSite = newButToSite; + } + + public String getDisabbutToSite() { + return this.disabbutToSite; + } + + public void setDisabbutToSite(String newDisabbutToSite) { + this.disabbutToSite = newDisabbutToSite; + } + + public String getButApplnNo() { + return this.butApplnNo; + } + + public void setButApplnNo(String newButApplnNo) { + this.butApplnNo = newButApplnNo; + } + + public String getDisabbutApplnNo() { + return this.disabbutApplnNo; + } + + public void setDisabbutApplnNo(String newDisabbutApplnNo) { + this.disabbutApplnNo = newDisabbutApplnNo; + } + + public String getButOrderDate() { + return this.butOrderDate; + } + + public void setButOrderDate(String newButOrderDate) { + this.butOrderDate = newButOrderDate; + } + + public String getDisabbutOrderDate() { + return this.disabbutOrderDate; + } + + public void setDisabbutOrderDate(String newDisabbutOrderDate) { + this.disabbutOrderDate = newDisabbutOrderDate; + } + + public String getButOrderNo() { + return this.butOrderNo; + } + + public void setButOrderNo(String newButOrderNo) { + this.butOrderNo = newButOrderNo; + } + + public String getDisabbutOrderNo() { + return this.disabbutOrderNo; + } + + public void setDisabbutOrderNo(String newDisabbutOrderNo) { + this.disabbutOrderNo = newDisabbutOrderNo; + } + + public String getOrderNoID() { + return this.orderNoID; + } + + public void setOrderNoID(String newOrderNoID) { + this.orderNoID = newOrderNoID; + } + + public String getApplnNoID() { + return this.applnNoID; + } + + public void setApplnNoID(String newApplnNoID) { + this.applnNoID = newApplnNoID; + } + + public String getToDesignation() { + return this.toDesignation; + } + + public void setToDesignation(String newToDesignation) { + this.toDesignation = newToDesignation; + } + + public String getOrderType() { + return this.orderType; + } + + public void setOrderType(String newOrderType) { + this.orderType = newOrderType; + } + + public String getDisaborderType() { + return this.disaborderType; + } + + public void setDisaborderType(String newDisaborderType) { + this.disaborderType = newDisaborderType; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getDisabapplicationDate() { + return this.disabapplicationDate; + } + + public void setDisabapplicationDate(String newDisabapplicationDate) { + this.disabapplicationDate = newDisabapplicationDate; + } + + public String getEmpID() { + return this.empID; + } + + public void setEmpID(String newEmpID) { + this.empID = newEmpID; + } + + public String getToSiteID() { + return this.toSiteID; + } + + public void setToSiteID(String newToSiteID) { + this.toSiteID = newToSiteID; + } + + public String getHeaderPrimaryKey1() { + return this.headerPrimaryKey1; + } + + public void setHeaderPrimaryKey1(String newHeaderPrimaryKey1) { + this.headerPrimaryKey1 = newHeaderPrimaryKey1; + } + + public String getFromSiteID() { + return this.fromSiteID; + } + + public void setFromSiteID(String newFromSiteID) { + this.fromSiteID = newFromSiteID; + } + + public String getReptEmpID() { + return this.reptEmpID; + } + + public void setReptEmpID(String newReptEmpID) { + this.reptEmpID = newReptEmpID; + } + + public String getReptEmpGrade() { + return this.reptEmpGrade; + } + + public void setReptEmpGrade(String newReptEmpGrade) { + this.reptEmpGrade = newReptEmpGrade; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getFromDesignation() { + return this.fromDesignation; + } + + public void setFromDesignation(String newFromDesignation) { + this.fromDesignation = newFromDesignation; + } + + public String getButSubmit() { + return this.butSubmit; + } + + public void setButSubmit(String newButSubmit) { + this.butSubmit = newButSubmit; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getButApproverNo() { + return this.butApproverNo; + } + + public void setButApproverNo(String newButApproverNo) { + this.butApproverNo = newButApproverNo; + } + + public String getDisabbutApproverNo() { + return this.disabbutApproverNo; + } + + public void setDisabbutApproverNo(String newDisabbutApproverNo) { + this.disabbutApproverNo = newDisabbutApproverNo; + } + + public String getSelfOffice() { + return this.selfOffice; + } + + public void setSelfOffice(String newSelfOffice) { + this.selfOffice = newSelfOffice; + } + + public String getDisabSelfOffice() { + return this.disabSelfOffice; + } + + public void setDisabSelfOffice(String newDisabSelfOffice) { + this.disabSelfOffice = newDisabSelfOffice; + } + + public String getFromWorkGroup() { + return this.fromWorkGroup; + } + + public void setFromWorkGroup(String newFromWorkGroup) { + this.fromWorkGroup = newFromWorkGroup; + } + + public String getToWorkGroupCode() { + return this.toWorkGroupCode; + } + + public void setToWorkGroupCode(String newToWorkGroupCode) { + this.toWorkGroupCode = newToWorkGroupCode; + } + + public String getToWorkGroup() { + return this.toWorkGroup; + } + + public void setToWorkGroup(String newToWorkGroup) { + this.toWorkGroup = newToWorkGroup; + } + + public String getButCancelTransfer() { + return this.butCancelTransfer; + } + + public void setButCancelTransfer(String newButCancelTransfer) { + this.butCancelTransfer = newButCancelTransfer; + } + + public String getDisabbutCancelTransfer() { + return this.disabbutCancelTransfer; + } + + public void setDisabbutCancelTransfer(String newDisabbutCancelTransfer) { + this.disabbutCancelTransfer = newDisabbutCancelTransfer; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java new file mode 100644 index 0000000..bcde997 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAcademicQualRepForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAcademicQualRepForm extends HrmBaseForm { + private String butInsertData; + + private String disabbutInsertData; + + public String getButInsertData() { + return this.butInsertData; + } + + public void setButInsertData(String newButInsertData) { + this.butInsertData = newButInsertData; + } + + public String getDisabbutInsertData() { + return this.disabbutInsertData; + } + + public void setDisabbutInsertData(String newDisabbutInsertData) { + this.disabbutInsertData = newDisabbutInsertData; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java new file mode 100644 index 0000000..19222bd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdhocReportForm.java @@ -0,0 +1,306 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class HrmAdhocReportForm extends JasperReportForm { + private String query; + + private String butDownload; + + private String disabbutDownload; + + private String butQueryCode; + + private String disabbutQueryCode; + + private String id; + + private String code; + + private String query_desc; + + private String category_tag; + + private String param1; + + private String param2; + + private String param3; + + private String param4; + + private String param5; + + private String param6; + + private String param7; + + private String param8; + + private String param9; + + private String param10; + + private String paramval1; + + private String paramval2; + + private String paramval3; + + private String paramval4; + + private String paramval5; + + private String paramval6; + + private String paramval7; + + private String paramval8; + + private String paramval9; + + private String paramval10; + + private ArrayList arylstAdhocReport = new ArrayList(); + + public String getQuery() { + return this.query; + } + + public void setQuery(String newQuery) { + this.query = newQuery; + } + + public String getButDownload() { + return this.butDownload; + } + + public void setButDownload(String newButDownload) { + this.butDownload = newButDownload; + } + + public String getDisabbutDownload() { + return this.disabbutDownload; + } + + public void setDisabbutDownload(String newDisabbutDownload) { + this.disabbutDownload = newDisabbutDownload; + } + + public String getButQueryCode() { + return this.butQueryCode; + } + + public void setButQueryCode(String newButQueryCode) { + this.butQueryCode = newButQueryCode; + } + + public String getDisabbutQueryCode() { + return this.disabbutQueryCode; + } + + public void setDisabbutQueryCode(String newDisabbutQueryCode) { + this.disabbutQueryCode = newDisabbutQueryCode; + } + + public ArrayList getArylstAdhocReport() { + return this.arylstAdhocReport; + } + + public void setArylstAdhocReport(ArrayList newArylstAdhocReport) { + this.arylstAdhocReport = newArylstAdhocReport; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getQuery_desc() { + return this.query_desc; + } + + public void setQuery_desc(String query_desc) { + this.query_desc = query_desc; + } + + public String getCategory_tag() { + return this.category_tag; + } + + public void setCategory_tag(String category_tag) { + this.category_tag = category_tag; + } + + public String getParam1() { + return this.param1; + } + + public void setParam1(String param1) { + this.param1 = param1; + } + + public String getParam2() { + return this.param2; + } + + public void setParam2(String param2) { + this.param2 = param2; + } + + public String getParam3() { + return this.param3; + } + + public void setParam3(String param3) { + this.param3 = param3; + } + + public String getParam4() { + return this.param4; + } + + public void setParam4(String param4) { + this.param4 = param4; + } + + public String getParam5() { + return this.param5; + } + + public void setParam5(String param5) { + this.param5 = param5; + } + + public String getParam6() { + return this.param6; + } + + public void setParam6(String param6) { + this.param6 = param6; + } + + public String getParam7() { + return this.param7; + } + + public void setParam7(String param7) { + this.param7 = param7; + } + + public String getParam8() { + return this.param8; + } + + public void setParam8(String param8) { + this.param8 = param8; + } + + public String getParam9() { + return this.param9; + } + + public void setParam9(String param9) { + this.param9 = param9; + } + + public String getParam10() { + return this.param10; + } + + public void setParam10(String param10) { + this.param10 = param10; + } + + public String getParamval1() { + return this.paramval1; + } + + public void setParamval1(String paramval1) { + this.paramval1 = paramval1; + } + + public String getParamval2() { + return this.paramval2; + } + + public void setParamval2(String paramval2) { + this.paramval2 = paramval2; + } + + public String getParamval3() { + return this.paramval3; + } + + public void setParamval3(String paramval3) { + this.paramval3 = paramval3; + } + + public String getParamval4() { + return this.paramval4; + } + + public void setParamval4(String paramval4) { + this.paramval4 = paramval4; + } + + public String getParamval5() { + return this.paramval5; + } + + public void setParamval5(String paramval5) { + this.paramval5 = paramval5; + } + + public String getParamval6() { + return this.paramval6; + } + + public void setParamval6(String paramval6) { + this.paramval6 = paramval6; + } + + public String getParamval7() { + return this.paramval7; + } + + public void setParamval7(String paramval7) { + this.paramval7 = paramval7; + } + + public String getParamval8() { + return this.paramval8; + } + + public void setParamval8(String paramval8) { + this.paramval8 = paramval8; + } + + public String getParamval9() { + return this.paramval9; + } + + public void setParamval9(String paramval9) { + this.paramval9 = paramval9; + } + + public String getParamval10() { + return this.paramval10; + } + + public void setParamval10(String paramval10) { + this.paramval10 = paramval10; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvApplnForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvApplnForm.java new file mode 100644 index 0000000..e185280 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvApplnForm.java @@ -0,0 +1,576 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAdvApplnForm extends HrmBaseForm { + String employeeNumber; + + String designation; + + String employeeName; + + String firstName; + + String middleName; + + String lastName; + + String fromDate; + + String toDate; + + String advanceCode; + + String dateApplied; + + String amountApplied; + + String reason; + + String selectAll; + + String disabadvanceCode; + + String disabdateApplied; + + String disabamountApplied; + + String disabreason; + + String disabbutFromDate; + + String disabbutToDate; + + String disabbutAdvanceCode; + + String disabbutDateApplied; + + String employeeId; + + String advanceCodeId; + + String advanceName; + + private String grade; + + private String location; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private String remarks; + + private String disabremarks; + + private String approverName; + + private String sanctionDate; + + private String butSanctionDate; + + private String disabbutSanctionDate; + + private String sanctionedAmount; + + private String disabsanctionedAmount; + + private String eligibleAmount; + + private String butDateApplied; + + private String butAdvanceCode; + + private String butApproverNo; + + private String disabbutApproverNo; + + private String butFromDate; + + private String butToDate; + + private String approverNoId; + + private String payrollMonth; + + private String noOfInst; + + private String disabpayrollMonth; + + private String monthlyInstallment; + + private String paidInstallments; + + private String settledAmount; + + private String balance; + + private String butBulkSettlement; + + private String disabbutBulkSettlement; + + private String bulkSettleAmount; + + private String mode; + + private String disabbulkSettleAmount; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getAmountApplied() { + return this.amountApplied; + } + + public void setAmountApplied(String newAmountApplied) { + this.amountApplied = newAmountApplied; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabadvanceCode() { + return this.disabadvanceCode; + } + + public void setDisabadvanceCode(String newDisabadvanceCode) { + this.disabadvanceCode = newDisabadvanceCode; + } + + public String getDisabdateApplied() { + return this.disabdateApplied; + } + + public void setDisabdateApplied(String newDisabdateApplied) { + this.disabdateApplied = newDisabdateApplied; + } + + public String getDisabamountApplied() { + return this.disabamountApplied; + } + + public void setDisabamountApplied(String newDisabamountApplied) { + this.disabamountApplied = newDisabamountApplied; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getDisabbutAdvanceCode() { + return this.disabbutAdvanceCode; + } + + public void setDisabbutAdvanceCode(String newDisabbutAdvanceCode) { + this.disabbutAdvanceCode = newDisabbutAdvanceCode; + } + + public String getDisabbutDateApplied() { + return this.disabbutDateApplied; + } + + public void setDisabbutDateApplied(String newDisabbutDateApplied) { + this.disabbutDateApplied = newDisabbutDateApplied; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getAdvanceName() { + return this.advanceName; + } + + public void setAdvanceName(String newAdvanceName) { + this.advanceName = newAdvanceName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getButSanctionDate() { + return this.butSanctionDate; + } + + public void setButSanctionDate(String newButSanctionDate) { + this.butSanctionDate = newButSanctionDate; + } + + public String getDisabbutSanctionDate() { + return this.disabbutSanctionDate; + } + + public void setDisabbutSanctionDate(String newDisabbutSanctionDate) { + this.disabbutSanctionDate = newDisabbutSanctionDate; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getDisabsanctionedAmount() { + return this.disabsanctionedAmount; + } + + public void setDisabsanctionedAmount(String newDisabsanctionedAmount) { + this.disabsanctionedAmount = newDisabsanctionedAmount; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getButDateApplied() { + return this.butDateApplied; + } + + public void setButDateApplied(String newButDateApplied) { + this.butDateApplied = newButDateApplied; + } + + public String getButAdvanceCode() { + return this.butAdvanceCode; + } + + public void setButAdvanceCode(String newButAdvanceCode) { + this.butAdvanceCode = newButAdvanceCode; + } + + public String getButApproverNo() { + return this.butApproverNo; + } + + public void setButApproverNo(String newButApproverNo) { + this.butApproverNo = newButApproverNo; + } + + public String getDisabbutApproverNo() { + return this.disabbutApproverNo; + } + + public void setDisabbutApproverNo(String newDisabbutApproverNo) { + this.disabbutApproverNo = newDisabbutApproverNo; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getButToDate() { + return this.butToDate; + } + + public void setButToDate(String newButToDate) { + this.butToDate = newButToDate; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getPayrollMonth() { + return this.payrollMonth; + } + + public void setPayrollMonth(String newPayrollMonth) { + this.payrollMonth = newPayrollMonth; + } + + public String getNoOfInst() { + return this.noOfInst; + } + + public void setNoOfInst(String newNoOfInst) { + this.noOfInst = newNoOfInst; + } + + public String getDisabpayrollMonth() { + return this.disabpayrollMonth; + } + + public void setDisabpayrollMonth(String newDisabpayrollMonth) { + this.disabpayrollMonth = newDisabpayrollMonth; + } + + public String getMonthlyInstallment() { + return this.monthlyInstallment; + } + + public void setMonthlyInstallment(String newMonthlyInstallment) { + this.monthlyInstallment = newMonthlyInstallment; + } + + public String getPaidInstallments() { + return this.paidInstallments; + } + + public void setPaidInstallments(String newPaidInstallments) { + this.paidInstallments = newPaidInstallments; + } + + public String getSettledAmount() { + return this.settledAmount; + } + + public void setSettledAmount(String newSettledAmount) { + this.settledAmount = newSettledAmount; + } + + public String getBalance() { + return this.balance; + } + + public void setBalance(String newBalance) { + this.balance = newBalance; + } + + public String getButBulkSettlement() { + return this.butBulkSettlement; + } + + public void setButBulkSettlement(String newButBulkSettlement) { + this.butBulkSettlement = newButBulkSettlement; + } + + public String getDisabbutBulkSettlement() { + return this.disabbutBulkSettlement; + } + + public void setDisabbutBulkSettlement(String newDisabbutBulkSettlement) { + this.disabbutBulkSettlement = newDisabbutBulkSettlement; + } + + public String getBulkSettleAmount() { + return this.bulkSettleAmount; + } + + public void setBulkSettleAmount(String newBulkSettleAmount) { + this.bulkSettleAmount = newBulkSettleAmount; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } + + public String getDisabbulkSettleAmount() { + return this.disabbulkSettleAmount; + } + + public void setDisabbulkSettleAmount(String newDisabbulkSettleAmount) { + this.disabbulkSettleAmount = newDisabbulkSettleAmount; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvMstForm.java new file mode 100644 index 0000000..3704080 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvMstForm.java @@ -0,0 +1,497 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAdvMstForm extends HrmBaseForm { + String advanceCode; + + String description; + + String calendar; + + String[] txtAdvanceDescription; + + String[] txtEffectiveFromDate; + + String[] txtEffectiveToDate; + + String[] txtMaxCalLimit; + + String[] txtNoOfTXN; + + String[] txtMaxLimitPerTXN; + + private String[] txtFlatAmount; + + String[] txtSettlementUnit; + + String[] txtSettlementPeriod; + + String[] txtMoratoriumInMonths; + + String[] txtSettleThroughPayroll; + + String[] txtApplicableToAll; + + String selectAll; + + String advanceCodeId; + + ArrayList arrAdvance = new ArrayList(); + + String hidDetailId; + + String calendarId; + + String beginMonth; + + String durationMonth; + + String disabadvanceCode; + + String disabdescription; + + String disabcalendar; + + String disabtxtAdvanceDescription; + + String disabtxtEffectiveFromDate; + + String disabtxtEffectiveToDate; + + String disabtxtMaxCalLimit; + + String disabtxtNoOfTXN; + + String disabtxtMaxLimitPerTXN; + + String disabtxtFlatAmount; + + String disabtxtSettlementUnit; + + String disabtxtSettlementPeriod; + + String disabtxtMoratoriumInMonths; + + String disabtxtSettleThroughPayroll; + + String disabtxtApplicableToAll; + + String butAdvanceCode; + + String disabbutAdvanceCode; + + String disabbutCalendar; + + String butCalendar; + + String butTxtEffectiveFromDate; + + String disabbutTxtEffectiveFromDate; + + String butTxtEffectiveToDate; + + String disabbutTxtEffectiveToDate; + + String disabbutSettlementHeads; + + private String[] txtEligibilityFactor; + + private String[] txtNoOfMonSal; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String[] getTxtAdvanceDescription() { + return this.txtAdvanceDescription; + } + + public void setTxtAdvanceDescription(String[] newTxtAdvanceDescription) { + this.txtAdvanceDescription = newTxtAdvanceDescription; + } + + public String[] getTxtEffectiveFromDate() { + return this.txtEffectiveFromDate; + } + + public void setTxtEffectiveFromDate(String[] newTxtEffectiveFromDate) { + this.txtEffectiveFromDate = newTxtEffectiveFromDate; + } + + public String[] getTxtEffectiveToDate() { + return this.txtEffectiveToDate; + } + + public void setTxtEffectiveToDate(String[] newTxtEffectiveToDate) { + this.txtEffectiveToDate = newTxtEffectiveToDate; + } + + public String[] getTxtMaxCalLimit() { + return this.txtMaxCalLimit; + } + + public void setTxtMaxCalLimit(String[] newTxtMaxCalLimit) { + this.txtMaxCalLimit = newTxtMaxCalLimit; + } + + public String[] getTxtNoOfTXN() { + return this.txtNoOfTXN; + } + + public void setTxtNoOfTXN(String[] newTxtNoOfTXN) { + this.txtNoOfTXN = newTxtNoOfTXN; + } + + public String[] getTxtMaxLimitPerTXN() { + return this.txtMaxLimitPerTXN; + } + + public void setTxtMaxLimitPerTXN(String[] newTxtMaxLimitPerTXN) { + this.txtMaxLimitPerTXN = newTxtMaxLimitPerTXN; + } + + public String[] getTxtFlatAmount() { + return this.txtFlatAmount; + } + + public void setTxtFlatAmount(String[] newTxtFlatAmount) { + this.txtFlatAmount = newTxtFlatAmount; + } + + public String[] getTxtSettlementUnit() { + return this.txtSettlementUnit; + } + + public void setTxtSettlementUnit(String[] newTxtSettlementUnit) { + this.txtSettlementUnit = newTxtSettlementUnit; + } + + public String[] getTxtSettlementPeriod() { + return this.txtSettlementPeriod; + } + + public void setTxtSettlementPeriod(String[] newTxtSettlementPeriod) { + this.txtSettlementPeriod = newTxtSettlementPeriod; + } + + public String[] getTxtMoratoriumInMonths() { + return this.txtMoratoriumInMonths; + } + + public void setTxtMoratoriumInMonths(String[] newTxtMoratoriumInMonths) { + this.txtMoratoriumInMonths = newTxtMoratoriumInMonths; + } + + public String[] getTxtSettleThroughPayroll() { + return this.txtSettleThroughPayroll; + } + + public void setTxtSettleThroughPayroll(String[] newTxtSettleThroughPayroll) { + this.txtSettleThroughPayroll = newTxtSettleThroughPayroll; + } + + public String[] getTxtApplicableToAll() { + return this.txtApplicableToAll; + } + + public void setTxtApplicableToAll(String[] newTxtApplicableToAll) { + this.txtApplicableToAll = newTxtApplicableToAll; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public ArrayList getArrAdvance() { + return this.arrAdvance; + } + + public void setArrAdvance(ArrayList newArrAdvance) { + this.arrAdvance = newArrAdvance; + } + + public String getHidDetailId() { + return this.hidDetailId; + } + + public void setHidDetailId(String newHidDetailId) { + this.hidDetailId = newHidDetailId; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getBeginMonth() { + return this.beginMonth; + } + + public void setBeginMonth(String newBeginMonth) { + this.beginMonth = newBeginMonth; + } + + public String getDurationMonth() { + return this.durationMonth; + } + + public void setDurationMonth(String newDurationMonth) { + this.durationMonth = newDurationMonth; + } + + public String getDisabadvanceCode() { + return this.disabadvanceCode; + } + + public void setDisabadvanceCode(String newDisabadvanceCode) { + this.disabadvanceCode = newDisabadvanceCode; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabcalendar() { + return this.disabcalendar; + } + + public void setDisabcalendar(String newDisabcalendar) { + this.disabcalendar = newDisabcalendar; + } + + public String getDisabtxtAdvanceDescription() { + return this.disabtxtAdvanceDescription; + } + + public void setDisabtxtAdvanceDescription(String newDisabtxtAdvanceDescription) { + this.disabtxtAdvanceDescription = newDisabtxtAdvanceDescription; + } + + public String getDisabtxtEffectiveFromDate() { + return this.disabtxtEffectiveFromDate; + } + + public void setDisabtxtEffectiveFromDate(String newDisabtxtEffectiveFromDate) { + this.disabtxtEffectiveFromDate = newDisabtxtEffectiveFromDate; + } + + public String getDisabtxtEffectiveToDate() { + return this.disabtxtEffectiveToDate; + } + + public void setDisabtxtEffectiveToDate(String newDisabtxtEffectiveToDate) { + this.disabtxtEffectiveToDate = newDisabtxtEffectiveToDate; + } + + public String getDisabtxtMaxCalLimit() { + return this.disabtxtMaxCalLimit; + } + + public void setDisabtxtMaxCalLimit(String newDisabtxtMaxCalLimit) { + this.disabtxtMaxCalLimit = newDisabtxtMaxCalLimit; + } + + public String getDisabtxtNoOfTXN() { + return this.disabtxtNoOfTXN; + } + + public void setDisabtxtNoOfTXN(String newDisabtxtNoOfTXN) { + this.disabtxtNoOfTXN = newDisabtxtNoOfTXN; + } + + public String getDisabtxtMaxLimitPerTXN() { + return this.disabtxtMaxLimitPerTXN; + } + + public void setDisabtxtMaxLimitPerTXN(String newDisabtxtMaxLimitPerTXN) { + this.disabtxtMaxLimitPerTXN = newDisabtxtMaxLimitPerTXN; + } + + public String getDisabtxtFlatAmount() { + return this.disabtxtFlatAmount; + } + + public void setDisabtxtFlatAmount(String newDisabtxtFlatAmount) { + this.disabtxtFlatAmount = newDisabtxtFlatAmount; + } + + public String getDisabtxtSettlementUnit() { + return this.disabtxtSettlementUnit; + } + + public void setDisabtxtSettlementUnit(String newDisabtxtSettlementUnit) { + this.disabtxtSettlementUnit = newDisabtxtSettlementUnit; + } + + public String getDisabtxtSettlementPeriod() { + return this.disabtxtSettlementPeriod; + } + + public void setDisabtxtSettlementPeriod(String newDisabtxtSettlementPeriod) { + this.disabtxtSettlementPeriod = newDisabtxtSettlementPeriod; + } + + public String getDisabtxtMoratoriumInMonths() { + return this.disabtxtMoratoriumInMonths; + } + + public void setDisabtxtMoratoriumInMonths(String newDisabtxtMoratoriumInMonths) { + this.disabtxtMoratoriumInMonths = newDisabtxtMoratoriumInMonths; + } + + public String getDisabtxtSettleThroughPayroll() { + return this.disabtxtSettleThroughPayroll; + } + + public void setDisabtxtSettleThroughPayroll(String newDisabtxtSettleThroughPayroll) { + this.disabtxtSettleThroughPayroll = newDisabtxtSettleThroughPayroll; + } + + public String getDisabtxtApplicableToAll() { + return this.disabtxtApplicableToAll; + } + + public void setDisabtxtApplicableToAll(String newDisabtxtApplicableToAll) { + this.disabtxtApplicableToAll = newDisabtxtApplicableToAll; + } + + public String getButAdvanceCode() { + return this.butAdvanceCode; + } + + public void setButAdvanceCode(String newButAdvanceCode) { + this.butAdvanceCode = newButAdvanceCode; + } + + public String getDisabbutAdvanceCode() { + return this.disabbutAdvanceCode; + } + + public void setDisabbutAdvanceCode(String newDisabbutAdvanceCode) { + this.disabbutAdvanceCode = newDisabbutAdvanceCode; + } + + public String getDisabbutCalendar() { + return this.disabbutCalendar; + } + + public void setDisabbutCalendar(String newDisabbutCalendar) { + this.disabbutCalendar = newDisabbutCalendar; + } + + public String getButCalendar() { + return this.butCalendar; + } + + public void setButCalendar(String newButCalendar) { + this.butCalendar = newButCalendar; + } + + public String getButTxtEffectiveFromDate() { + return this.butTxtEffectiveFromDate; + } + + public void setButTxtEffectiveFromDate(String newButTxtEffectiveFromDate) { + this.butTxtEffectiveFromDate = newButTxtEffectiveFromDate; + } + + public String getDisabbutTxtEffectiveFromDate() { + return this.disabbutTxtEffectiveFromDate; + } + + public void setDisabbutTxtEffectiveFromDate(String newDisabbutTxtEffectiveFromDate) { + this.disabbutTxtEffectiveFromDate = newDisabbutTxtEffectiveFromDate; + } + + public String getButTxtEffectiveToDate() { + return this.butTxtEffectiveToDate; + } + + public void setButTxtEffectiveToDate(String newButTxtEffectiveToDate) { + this.butTxtEffectiveToDate = newButTxtEffectiveToDate; + } + + public String getDisabbutTxtEffectiveToDate() { + return this.disabbutTxtEffectiveToDate; + } + + public void setDisabbutTxtEffectiveToDate(String newDisabbutTxtEffectiveToDate) { + this.disabbutTxtEffectiveToDate = newDisabbutTxtEffectiveToDate; + } + + public String getDisabbutSettlementHeads() { + return this.disabbutSettlementHeads; + } + + public void setDisabbutSettlementHeads(String newDisabbutSettlementHeads) { + this.disabbutSettlementHeads = newDisabbutSettlementHeads; + } + + public String[] getTxtEligibilityFactor() { + return this.txtEligibilityFactor; + } + + public void setTxtEligibilityFactor(String[] newTxtEligibilityFactor) { + this.txtEligibilityFactor = newTxtEligibilityFactor; + } + + public String[] getTxtNoOfMonSal() { + return this.txtNoOfMonSal; + } + + public void setTxtNoOfMonSal(String[] newTxtNoOfMonSal) { + this.txtNoOfMonSal = newTxtNoOfMonSal; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleForm.java new file mode 100644 index 0000000..8f46fb7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleForm.java @@ -0,0 +1,416 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAdvSettleForm extends HrmBaseForm { + String employeeNumber; + + String employeeName; + + String firstName; + + String middleName; + + String lastName; + + String designation; + + String scaleOfPay; + + String advanceCode; + + String dateApplied; + + String fromDate; + + String toDate; + + String amountApplied; + + String settlePayroll; + + String settleAmount; + + String noOfIns; + + String settleStatus; + + String reason; + + String disabtoDate; + + String disabsettlePayroll; + + String disabnoOfIns; + + String disabreason; + + String butFromDate; + + String butToDate; + + String butAdvanceCode; + + String disabbutAdvanceCode; + + String disabbutToDate; + + String disabbutFromDate; + + String employeeId; + + String disabbutSelectSettle; + + private String advanceCodeId; + + private String advanceName; + + String settleId; + + private String grade; + + String location; + + private String balance; + + private String recoveredAmount; + + private String paidInstallments; + + private String sanctionedDate; + + private String sanctionedAmount; + + private String disabbutEmployeeNo; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getAdvanceCode() { + return this.advanceCode; + } + + public void setAdvanceCode(String newAdvanceCode) { + this.advanceCode = newAdvanceCode; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getAmountApplied() { + return this.amountApplied; + } + + public void setAmountApplied(String newAmountApplied) { + this.amountApplied = newAmountApplied; + } + + public String getSettlePayroll() { + return this.settlePayroll; + } + + public void setSettlePayroll(String newSettlePayroll) { + this.settlePayroll = newSettlePayroll; + } + + public String getSettleAmount() { + return this.settleAmount; + } + + public void setSettleAmount(String newSettleAmount) { + this.settleAmount = newSettleAmount; + } + + public String getNoOfIns() { + return this.noOfIns; + } + + public void setNoOfIns(String newNoOfIns) { + this.noOfIns = newNoOfIns; + } + + public String getSettleStatus() { + return this.settleStatus; + } + + public void setSettleStatus(String newSettleStatus) { + this.settleStatus = newSettleStatus; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getDisabtoDate() { + return this.disabtoDate; + } + + public void setDisabtoDate(String newDisabtoDate) { + this.disabtoDate = newDisabtoDate; + } + + public String getDisabsettlePayroll() { + return this.disabsettlePayroll; + } + + public void setDisabsettlePayroll(String newDisabsettlePayroll) { + this.disabsettlePayroll = newDisabsettlePayroll; + } + + public String getDisabnoOfIns() { + return this.disabnoOfIns; + } + + public void setDisabnoOfIns(String newDisabnoOfIns) { + this.disabnoOfIns = newDisabnoOfIns; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getButToDate() { + return this.butToDate; + } + + public void setButToDate(String newButToDate) { + this.butToDate = newButToDate; + } + + public String getButAdvanceCode() { + return this.butAdvanceCode; + } + + public void setButAdvanceCode(String newButAdvanceCode) { + this.butAdvanceCode = newButAdvanceCode; + } + + public String getDisabbutAdvanceCode() { + return this.disabbutAdvanceCode; + } + + public void setDisabbutAdvanceCode(String newDisabbutAdvanceCode) { + this.disabbutAdvanceCode = newDisabbutAdvanceCode; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getDisabbutSelectSettle() { + return this.disabbutSelectSettle; + } + + public void setDisabbutSelectSettle(String newDisabbutSelectSettle) { + this.disabbutSelectSettle = newDisabbutSelectSettle; + } + + public String getAdvanceCodeId() { + return this.advanceCodeId; + } + + public void setAdvanceCodeId(String newAdvanceCodeId) { + this.advanceCodeId = newAdvanceCodeId; + } + + public String getAdvanceName() { + return this.advanceName; + } + + public void setAdvanceName(String newAdvanceName) { + this.advanceName = newAdvanceName; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getBalance() { + return this.balance; + } + + public void setBalance(String newBalance) { + this.balance = newBalance; + } + + public String getRecoveredAmount() { + return this.recoveredAmount; + } + + public void setRecoveredAmount(String newRecoveredAmount) { + this.recoveredAmount = newRecoveredAmount; + } + + public String getPaidInstallments() { + return this.paidInstallments; + } + + public void setPaidInstallments(String newPaidInstallments) { + this.paidInstallments = newPaidInstallments; + } + + public String getSanctionedDate() { + return this.sanctionedDate; + } + + public void setSanctionedDate(String newSanctionedDate) { + this.sanctionedDate = newSanctionedDate; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleHeadsForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleHeadsForm.java new file mode 100644 index 0000000..478c5d5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAdvSettleHeadsForm.java @@ -0,0 +1,107 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAdvSettleHeadsForm extends HrmBaseForm { + private String[] txtHeadName; + + private String[] txtMaxLimit; + + private String[] txtAmount; + + private ArrayList arylstSettleHeads = new ArrayList(); + + private String settleId; + + String[] txtSettleHeadId; + + String[] txtAdvancesId; + + String[] txtSettleStatus; + + String disabtxtAmount; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtHeadName() { + return this.txtHeadName; + } + + public void setTxtHeadName(String[] newTxtHeadName) { + this.txtHeadName = newTxtHeadName; + } + + public String[] getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String[] newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String[] getTxtAmount() { + return this.txtAmount; + } + + public void setTxtAmount(String[] newTxtAmount) { + this.txtAmount = newTxtAmount; + } + + public ArrayList getArylstSettleHeads() { + return this.arylstSettleHeads; + } + + public void setArylstSettleHeads(ArrayList newArylstSettleHeads) { + this.arylstSettleHeads = newArylstSettleHeads; + } + + public String getSettleId() { + return this.settleId; + } + + public void setSettleId(String newSettleId) { + this.settleId = newSettleId; + } + + public String[] getTxtSettleHeadId() { + return this.txtSettleHeadId; + } + + public void setTxtSettleHeadId(String[] newTxtSettleHeadId) { + this.txtSettleHeadId = newTxtSettleHeadId; + } + + public String[] getTxtAdvancesId() { + return this.txtAdvancesId; + } + + public void setTxtAdvancesId(String[] newTxtAdvancesId) { + this.txtAdvancesId = newTxtAdvancesId; + } + + public String[] getTxtSettleStatus() { + return this.txtSettleStatus; + } + + public void setTxtSettleStatus(String[] newTxtSettleStatus) { + this.txtSettleStatus = newTxtSettleStatus; + } + + public String getDisabtxtAmount() { + return this.disabtxtAmount; + } + + public void setDisabtxtAmount(String newDisabtxtAmount) { + this.disabtxtAmount = newDisabtxtAmount; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java new file mode 100644 index 0000000..aa83eba --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAgeAnalysisForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class HrmAgeAnalysisForm extends JasperReportForm { + private String butInsertData; + + private String disabbutInsertData; + + public String getButInsertData() { + return this.butInsertData; + } + + public void setButInsertData(String newButInsertData) { + this.butInsertData = newButInsertData; + } + + public String getDisabbutInsertData() { + return this.disabbutInsertData; + } + + public void setDisabbutInsertData(String newDisabbutInsertData) { + this.disabbutInsertData = newDisabbutInsertData; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalKPAForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalKPAForm.java new file mode 100644 index 0000000..e071669 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalKPAForm.java @@ -0,0 +1,273 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAppraisalKPAForm extends HrmBaseForm { + private String selectAll; + + private String kpaGroupCode; + + private String description; + + private String kpaGrpId; + + private ArrayList arylstAppraisalKpa = new ArrayList(); + + private String disabdescription; + + private String disabkpaGroupCode; + + private String disabkpaGrpId; + + private String disabselectAll; + + private String butKpaGroupCode; + + private String disabbutKpaGroupCode; + + private String txtAppraiserType; + + private String ratingRequired; + + private String butFreeze; + + private String disabbutFreeze; + + private String status; + + private String statusOfHeader; + + private String disabstatusOfHeader; + + private String disabtxtAppraiserType; + + private String[] txtDescription; + + private String[] txtKpaCode; + + private String[] kpaCodeId; + + private String[] mandatoryFlag; + + private String[] txtWeightage; + + private String[] txtSrlNo; + + private String disabratingRequired; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String[] newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String[] getTxtKpaCode() { + return this.txtKpaCode; + } + + public void setTxtKpaCode(String[] newTxtKpaCode) { + this.txtKpaCode = newTxtKpaCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getKpaGroupCode() { + return this.kpaGroupCode; + } + + public void setKpaGroupCode(String newKpaGroupCode) { + this.kpaGroupCode = newKpaGroupCode; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArylstAppraisalKpa() { + return this.arylstAppraisalKpa; + } + + public void setArylstAppraisalKpa(ArrayList newArylstAppraisalKpa) { + this.arylstAppraisalKpa = newArylstAppraisalKpa; + } + + public String getKpaGrpId() { + return this.kpaGrpId; + } + + public void setKpaGrpId(String newKpaGrpId) { + this.kpaGrpId = newKpaGrpId; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabkpaGroupCode() { + return this.disabkpaGroupCode; + } + + public void setDisabkpaGroupCode(String newDisabkpaGroupCode) { + this.disabkpaGroupCode = newDisabkpaGroupCode; + } + + public String getDisabkpaGrpId() { + return this.disabkpaGrpId; + } + + public void setDisabkpaGrpId(String newDisabkpaGrpId) { + this.disabkpaGrpId = newDisabkpaGrpId; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String[] getKpaCodeId() { + return this.kpaCodeId; + } + + public void setKpaCodeId(String[] newKpaCodeId) { + this.kpaCodeId = newKpaCodeId; + } + + public String getButKpaGroupCode() { + return this.butKpaGroupCode; + } + + public void setButKpaGroupCode(String newButKpaGroupCode) { + this.butKpaGroupCode = newButKpaGroupCode; + } + + public String getDisabbutKpaGroupCode() { + return this.disabbutKpaGroupCode; + } + + public void setDisabbutKpaGroupCode(String newDisabbutKpaGroupCode) { + this.disabbutKpaGroupCode = newDisabbutKpaGroupCode; + } + + public String[] getMandatoryFlag() { + return this.mandatoryFlag; + } + + public void setMandatoryFlag(String[] newMandatoryFlag) { + this.mandatoryFlag = newMandatoryFlag; + } + + public String[] getTxtWeightage() { + return this.txtWeightage; + } + + public void setTxtWeightage(String[] newTxtWeightage) { + this.txtWeightage = newTxtWeightage; + } + + public String getTxtAppraiserType() { + return this.txtAppraiserType; + } + + public void setTxtAppraiserType(String newTxtAppraiserType) { + this.txtAppraiserType = newTxtAppraiserType; + } + + public String[] getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String[] newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String getRatingRequired() { + return this.ratingRequired; + } + + public void setRatingRequired(String newRatingRequired) { + this.ratingRequired = newRatingRequired; + } + + public String getButFreeze() { + return this.butFreeze; + } + + public void setButFreeze(String newButFreeze) { + this.butFreeze = newButFreeze; + } + + public String getDisabbutFreeze() { + return this.disabbutFreeze; + } + + public void setDisabbutFreeze(String newDisabbutFreeze) { + this.disabbutFreeze = newDisabbutFreeze; + } + + public void setStatus(String newStatus) { + this.status = newStatus; + } + + public String getStatusOfHeader() { + return this.statusOfHeader; + } + + public void setStatusOfHeader(String newStatusOfHeader) { + this.statusOfHeader = newStatusOfHeader; + } + + public String getDisabstatusOfHeader() { + return this.disabstatusOfHeader; + } + + public void setDisabstatusOfHeader(String newDisabstatusOfHeader) { + this.disabstatusOfHeader = newDisabstatusOfHeader; + } + + public String getDisabtxtAppraiserType() { + return this.disabtxtAppraiserType; + } + + public void setDisabtxtAppraiserType(String newDisabtxtAppraiserType) { + this.disabtxtAppraiserType = newDisabtxtAppraiserType; + } + + public String getDisabratingRequired() { + return this.disabratingRequired; + } + + public void setDisabratingRequired(String newDisabratingRequired) { + this.disabratingRequired = newDisabratingRequired; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalTemplateForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalTemplateForm.java new file mode 100644 index 0000000..0cf6f89 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAppraisalTemplateForm.java @@ -0,0 +1,377 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAppraisalTemplateForm extends HrmBaseForm { + String templateName; + + String obsolete; + + String applicableToAll; + + String ratingCode; + + String[] txtSrlNo; + + String[] txtSectionCode; + + String[] txtAppraiserType; + + String[] txtTemplateRemarks; + + String[] txtParentSection; + + String[] txtSectionWeightage; + + ArrayList arrAppTempSec = new ArrayList(); + + String selectAll; + + String disabbutSecCode; + + String butParentSecCode; + + String ratingId; + + String[] txtKpaGroupCode; + + String[] txtApprKpa; + + String[] txtWeightage; + + String[] txtKpaId; + + String butKPAGroupCode; + + String disabbutKPAGroupCode; + + ArrayList arrAppTempKPA = new ArrayList(); + + String[] txtParentSecId; + + String[] txtRatingReqd; + + String templateId; + + String disabbutRatingCode; + + String butRatingCode; + + String butTemplateName; + + String disabbutTemplateName; + + String disabbutApprove; + + String headerFlag; + + String statusOfHeader; + + String disabobsolete; + + String disabapplicableToAll; + + String disabtemplateName; + + String disabratingCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getObsolete() { + return this.obsolete; + } + + public void setObsolete(String newObsolete) { + this.obsolete = newObsolete; + } + + public String getApplicableToAll() { + return this.applicableToAll; + } + + public void setApplicableToAll(String newApplicableToAll) { + this.applicableToAll = newApplicableToAll; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtSrlNo() { + return this.txtSrlNo; + } + + public String[] getTxtSectionCode() { + return this.txtSectionCode; + } + + public String[] getTxtAppraiserType() { + return this.txtAppraiserType; + } + + public String[] getTxtTemplateRemarks() { + return this.txtTemplateRemarks; + } + + public String[] getTxtParentSection() { + return this.txtParentSection; + } + + public String[] getTxtSectionWeightage() { + return this.txtSectionWeightage; + } + + public void setTxtAppraiserType(String[] newTxtAppraiserType) { + this.txtAppraiserType = newTxtAppraiserType; + } + + public void setTxtParentSection(String[] newTxtParentSection) { + this.txtParentSection = newTxtParentSection; + } + + public void setTxtSectionCode(String[] newTxtSectionCode) { + this.txtSectionCode = newTxtSectionCode; + } + + public void setTxtSectionWeightage(String[] newTxtSectionWeightage) { + this.txtSectionWeightage = newTxtSectionWeightage; + } + + public void setTxtSrlNo(String[] newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public void setTxtTemplateRemarks(String[] newTxtTemplateRemarks) { + this.txtTemplateRemarks = newTxtTemplateRemarks; + } + + public ArrayList getArrAppTempSec() { + return this.arrAppTempSec; + } + + public void setArrAppTempSec(ArrayList newArrAppTempSec) { + this.arrAppTempSec = newArrAppTempSec; + } + + public String getDisabbutSecCode() { + return this.disabbutSecCode; + } + + public void setDisabbutSecCode(String newDisabbutSecCode) { + this.disabbutSecCode = newDisabbutSecCode; + } + + public String getButParentSecCode() { + return this.butParentSecCode; + } + + public void setButParentSecCode(String newButParentSecCode) { + this.butParentSecCode = newButParentSecCode; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String[] getTxtKpaGroupCode() { + return this.txtKpaGroupCode; + } + + public void setTxtKpaGroupCode(String[] newTxtKpaGroupCode) { + this.txtKpaGroupCode = newTxtKpaGroupCode; + } + + public String[] getTxtApprKpa() { + return this.txtApprKpa; + } + + public void setTxtApprKpa(String[] newTxtApprKpa) { + this.txtApprKpa = newTxtApprKpa; + } + + public String[] getTxtWeightage() { + return this.txtWeightage; + } + + public void setTxtWeightage(String[] newTxtWeightage) { + this.txtWeightage = newTxtWeightage; + } + + public String[] getTxtKpaId() { + return this.txtKpaId; + } + + public void setTxtKpaId(String[] newTxtKpaId) { + this.txtKpaId = newTxtKpaId; + } + + public String getButKPAGroupCode() { + return this.butKPAGroupCode; + } + + public void setButKPAGroupCode(String newButKPAGroupCode) { + this.butKPAGroupCode = newButKPAGroupCode; + } + + public String getDisabbutKPAGroupCode() { + return this.disabbutKPAGroupCode; + } + + public void setDisabbutKPAGroupCode(String newDisabbutKPAGroupCode) { + this.disabbutKPAGroupCode = newDisabbutKPAGroupCode; + } + + public ArrayList getArrAppTempKPA() { + return this.arrAppTempKPA; + } + + public void setArrAppTempKPA(ArrayList newArrAppTempKPA) { + this.arrAppTempKPA = newArrAppTempKPA; + } + + public String[] getTxtParentSecId() { + return this.txtParentSecId; + } + + public void setTxtParentSecId(String[] newTxtParentSecId) { + this.txtParentSecId = newTxtParentSecId; + } + + public String[] getTxtRatingReqd() { + return this.txtRatingReqd; + } + + public void setTxtRatingReqd(String[] newTxtRatingReqd) { + this.txtRatingReqd = newTxtRatingReqd; + } + + public String getTemplateId() { + return this.templateId; + } + + public void setTemplateId(String newTemplateId) { + this.templateId = newTemplateId; + } + + public String getDisabbutRatingCode() { + return this.disabbutRatingCode; + } + + public void setDisabbutRatingCode(String newDisabbutRatingCode) { + this.disabbutRatingCode = newDisabbutRatingCode; + } + + public String getButRatingCode() { + return this.butRatingCode; + } + + public void setButRatingCode(String newButRatingCode) { + this.butRatingCode = newButRatingCode; + } + + public String getButTemplateName() { + return this.butTemplateName; + } + + public void setButTemplateName(String newButTemplateName) { + this.butTemplateName = newButTemplateName; + } + + public String getDisabbutTemplateName() { + return this.disabbutTemplateName; + } + + public void setDisabbutTemplateName(String newDisabbutTemplateName) { + this.disabbutTemplateName = newDisabbutTemplateName; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getHeaderFlag() { + return this.headerFlag; + } + + public void setHeaderFlag(String newHeaderFlag) { + this.headerFlag = newHeaderFlag; + } + + public String getStatusOfHeader() { + return this.statusOfHeader; + } + + public void setStatusOfHeader(String newStatusOfHeader) { + this.statusOfHeader = newStatusOfHeader; + } + + public String getDisabobsolete() { + return this.disabobsolete; + } + + public void setDisabobsolete(String newDisabobsolete) { + this.disabobsolete = newDisabobsolete; + } + + public String getDisabapplicableToAll() { + return this.disabapplicableToAll; + } + + public void setDisabapplicableToAll(String newDisabapplicableToAll) { + this.disabapplicableToAll = newDisabapplicableToAll; + } + + public String getDisabtemplateName() { + return this.disabtemplateName; + } + + public void setDisabtemplateName(String newDisabtemplateName) { + this.disabtemplateName = newDisabtemplateName; + } + + public String getDisabratingCode() { + return this.disabratingCode; + } + + public void setDisabratingCode(String newDisabratingCode) { + this.disabratingCode = newDisabratingCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslForm.java new file mode 100644 index 0000000..7133e7d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslForm.java @@ -0,0 +1,1467 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.bean.HrmAprslEmpDtlsBean; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAprslForm extends HrmBaseForm { + private String empNo; + + private String empName; + + private String aprslLevel; + + private String aprslPeriod; + + private String aprslYear; + + private String stOrderNo; + + private String finalRating; + + private String fromDate; + + private String toDate; + + private String butKPATab; + + private String butGoalsTab; + + private String disabbutGoalsTab; + + private String disabbutKPATab; + + private String selectAll; + + private String[] txtSection; + + private String[] txtParentSec; + + String[] txtGoalDesc; + + private String[] txtLevelAprl0; + + private String[] txtLevelRating0; + + private String[] txtLevelAprl1; + + private String[] txtLevelRating1; + + private String[] txtLevelAprl2; + + private String[] txtLevelRating2; + + private String[] txtLevelAprl3; + + private String[] txtLevelRating3; + + private String[] txtLevelAprl4; + + private String[] txtLevelRating4; + + private ArrayList arylstEmpAprslGoals = new ArrayList(); + + private ArrayList arylstEmpAprslKPA = new ArrayList(); + + private String[] txtKPACode; + + private String[] txtKPADesc; + + String tmplHdrId; + + String spcTmplId; + + String startOrderId; + + String[] txtTmplKPADtlId; + + String[] txtTmplGoalId; + + String[] txtTmplSecId; + + String[] txtParentSecId; + + String rating0; + + String rating1; + + String rating2; + + String rating3; + + String rating4; + + String[] txtEmpAprsKPAlHdrId; + + String[] txtEmpAprslHdrId; + + String butStOrder; + + String disabbutStOrder; + + String[] butRatingG0LOV; + + String[] butRatingG1LOV; + + String[] butRatingG2LOV; + + String[] butRatingG3LOV; + + String[] butRatingG4LOV; + + String[] txtRatingFrom; + + String[] txtRatingTo; + + String[] txtRatingDesc; + + String[] txtRatingFromG; + + String[] txtRatingToG; + + String[] txtRatingDescG; + + private String butDone; + + private String disabbutDone; + + String[] txtKPADtlId; + + private String butCalculate; + + private String disabbutCalculate; + + String[] txtKpaRatingReq; + + String[] txtSecRatingReq; + + String calFlag; + + String[] txtLevelAprl0g; + + String[] txtLevelRating0g; + + String[] txtLevelAprl1g; + + String[] txtLevelRating1g; + + String[] txtLevelAprl2g; + + String[] txtLevelRating2g; + + String[] txtLevelAprl3g; + + String[] txtLevelRating3g; + + String[] txtLevelAprl4g; + + String[] txtLevelRating4g; + + String[] txtKpaAprslType; + + String[] butRatingK0LOV; + + String[] butRatingK1LOV; + + String[] butRatingK2LOV; + + String[] butRatingK3LOV; + + String[] butRatingK4LOV; + + String[] txtSecAprslType; + + String disabfinalRating; + + String butReject; + + String disabbutReject; + + private ArrayList arylstEmpAprsTrngReq = new ArrayList(); + + String[] txtDateSubmitted; + + String[] txtCourseName; + + String[] txtTrngCal; + + String[] txtInstName; + + String[] txtStartDate; + + String[] txtEndDate; + + String[] txtNature; + + String[] txtPurpose; + + String[] txtRecommender; + + String[] txtAppStatus; + + String[] txtRemarks; + + String[] txtCrsId; + + String[] txtCalId; + + String[] txtRecId; + + String[] butCourseLOV; + + String[] butTrngCalLOV; + + String[] butRecLOV; + + String[] txtLevel; + + String[] txtEmpId; + + String[] txtCourseCode; + + String[] txtRecNo; + + String appFlag; + + String doneFlag; + + String hidDoneFlag; + + String approvalFlag; + + private String rating5; + + private String[] txtLevelAprl5; + + private String[] txtLevelRating5; + + private String[] butRatingK5LOV; + + private String[] txtLevelAprl5g; + + private String[] txtLevelRating5g; + + private String[] butRatingG5LOV; + + private ArrayList arrHrmEmpDtl = new ArrayList(); + + private String[] grade; + + private String[] designation; + + private String[] presLoc; + + private String[] dateofBirth; + + private String[] joiningStaffDate; + + private String[] joiningOfficerDate; + + private String[] lastPromDate; + + private String[] lastPay; + + private String[] qual; + + private String[] empRating1; + + private String[] empRating2; + + private String[] empRating3; + + private String[] incr1; + + private String[] incr2; + + private String[] incr3; + + private String butEmpNo; + + private String butEmpNoDtl; + + private String disabbutEmpNo; + + private String disabbutEmpNoDtl; + + private String employeeId; + + private String[] finalRatingDtl; + + private String[] aprslYearDtl; + + private String[] empNameDtl; + + private String[] empIdDtl; + + private ArrayList arrHrmEmpAprslDtl = new ArrayList(); + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getDisabbutEmpNoDtl() { + return this.disabbutEmpNoDtl; + } + + public void setDisabbutEmpNoDtl(String newDisabbutEmpNoDtl) { + this.disabbutEmpNoDtl = newDisabbutEmpNoDtl; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getAprslLevel() { + return this.aprslLevel; + } + + public void setAprslLevel(String newAprslLevel) { + this.aprslLevel = newAprslLevel; + } + + public String getAprslPeriod() { + return this.aprslPeriod; + } + + public void setAprslPeriod(String newAprslPeriod) { + this.aprslPeriod = newAprslPeriod; + } + + public String getAprslYear() { + return this.aprslYear; + } + + public void setAprslYear(String newAprslYear) { + this.aprslYear = newAprslYear; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getFinalRating() { + return this.finalRating; + } + + public void setFinalRating(String newFinalRating) { + this.finalRating = newFinalRating; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getButKPATab() { + return this.butKPATab; + } + + public void setButKPATab(String newButKPATab) { + this.butKPATab = newButKPATab; + } + + public String getButGoalsTab() { + return this.butGoalsTab; + } + + public void setButGoalsTab(String newButGoalsTab) { + this.butGoalsTab = newButGoalsTab; + } + + public String getDisabbutGoalsTab() { + return this.disabbutGoalsTab; + } + + public void setDisabbutGoalsTab(String newDisabbutGoalsTab) { + this.disabbutGoalsTab = newDisabbutGoalsTab; + } + + public String getDisabbutKPATab() { + return this.disabbutKPATab; + } + + public void setDisabbutKPATab(String newDisabbutKPATab) { + this.disabbutKPATab = newDisabbutKPATab; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtSection() { + return this.txtSection; + } + + public void setTxtSection(String[] newTxtSection) { + this.txtSection = newTxtSection; + } + + public String[] getTxtParentSec() { + return this.txtParentSec; + } + + public void setTxtParentSec(String[] newTxtParentSec) { + this.txtParentSec = newTxtParentSec; + } + + public String[] getTxtGoalDesc() { + return this.txtGoalDesc; + } + + public void setTxtGoalDesc(String[] newTxtGoalDesc) { + this.txtGoalDesc = newTxtGoalDesc; + } + + public String[] getTxtLevelAprl0() { + return this.txtLevelAprl0; + } + + public void setTxtLevelAprl0(String[] newTxtLevelAprl0) { + this.txtLevelAprl0 = newTxtLevelAprl0; + } + + public String[] getTxtLevelRating0() { + return this.txtLevelRating0; + } + + public void setTxtLevelRating0(String[] newTxtLevelRating0) { + this.txtLevelRating0 = newTxtLevelRating0; + } + + public String[] getTxtLevelAprl1() { + return this.txtLevelAprl1; + } + + public void setTxtLevelAprl1(String[] newTxtLevelAprl1) { + this.txtLevelAprl1 = newTxtLevelAprl1; + } + + public String[] getTxtLevelRating1() { + return this.txtLevelRating1; + } + + public void setTxtLevelRating1(String[] newTxtLevelRating1) { + this.txtLevelRating1 = newTxtLevelRating1; + } + + public String[] getTxtLevelAprl2() { + return this.txtLevelAprl2; + } + + public void setTxtLevelAprl2(String[] newTxtLevelAprl2) { + this.txtLevelAprl2 = newTxtLevelAprl2; + } + + public String[] getTxtLevelRating2() { + return this.txtLevelRating2; + } + + public void setTxtLevelRating2(String[] newTxtLevelRating2) { + this.txtLevelRating2 = newTxtLevelRating2; + } + + public String[] getTxtLevelAprl3() { + return this.txtLevelAprl3; + } + + public void setTxtLevelAprl3(String[] newTxtLevelAprl3) { + this.txtLevelAprl3 = newTxtLevelAprl3; + } + + public String[] getTxtLevelRating3() { + return this.txtLevelRating3; + } + + public void setTxtLevelRating3(String[] newTxtLevelRating3) { + this.txtLevelRating3 = newTxtLevelRating3; + } + + public String[] getTxtLevelAprl4() { + return this.txtLevelAprl4; + } + + public void setTxtLevelAprl4(String[] newTxtLevelAprl4) { + this.txtLevelAprl4 = newTxtLevelAprl4; + } + + public String[] getTxtLevelRating4() { + return this.txtLevelRating4; + } + + public void setTxtLevelRating4(String[] newTxtLevelRating4) { + this.txtLevelRating4 = newTxtLevelRating4; + } + + public ArrayList getArylstEmpAprslGoals() { + return this.arylstEmpAprslGoals; + } + + public void setArylstEmpAprslGoals(ArrayList newArylstEmpAprslGoals) { + this.arylstEmpAprslGoals = newArylstEmpAprslGoals; + } + + public ArrayList getArylstEmpAprslKPA() { + return this.arylstEmpAprslKPA; + } + + public void setArylstEmpAprslKPA(ArrayList newArylstEmpAprslKPA) { + this.arylstEmpAprslKPA = newArylstEmpAprslKPA; + } + + public String[] getTxtKPACode() { + return this.txtKPACode; + } + + public void setTxtKPACode(String[] newTxtKPACode) { + this.txtKPACode = newTxtKPACode; + } + + public String[] getTxtKPADesc() { + return this.txtKPADesc; + } + + public void setTxtKPADesc(String[] newTxtKPADesc) { + this.txtKPADesc = newTxtKPADesc; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getTmplHdrId() { + return this.tmplHdrId; + } + + public void setTmplHdrId(String newTmplHdrId) { + this.tmplHdrId = newTmplHdrId; + } + + public String getSpcTmplId() { + return this.spcTmplId; + } + + public void setSpcTmplId(String newSpcTmplId) { + this.spcTmplId = newSpcTmplId; + } + + public String getStartOrderId() { + return this.startOrderId; + } + + public void setStartOrderId(String newStartOrderId) { + this.startOrderId = newStartOrderId; + } + + public String[] getTxtTmplKPADtlId() { + return this.txtTmplKPADtlId; + } + + public void setTxtTmplKPADtlId(String[] newTxtTmplKPADtlId) { + this.txtTmplKPADtlId = newTxtTmplKPADtlId; + } + + public String[] getTxtTmplGoalId() { + return this.txtTmplGoalId; + } + + public void setTxtTmplGoalId(String[] newTxtTmplGoalId) { + this.txtTmplGoalId = newTxtTmplGoalId; + } + + public String[] getTxtTmplSecId() { + return this.txtTmplSecId; + } + + public void setTxtTmplSecId(String[] newTxtTmplSecId) { + this.txtTmplSecId = newTxtTmplSecId; + } + + public String[] getTxtParentSecId() { + return this.txtParentSecId; + } + + public void setTxtParentSecId(String[] newTxtParentSecId) { + this.txtParentSecId = newTxtParentSecId; + } + + public String getRating0() { + return this.rating0; + } + + public void setRating0(String newRating0) { + this.rating0 = newRating0; + } + + public String getRating1() { + return this.rating1; + } + + public void setRating1(String newRating1) { + this.rating1 = newRating1; + } + + public String getRating2() { + return this.rating2; + } + + public void setRating2(String newRating2) { + this.rating2 = newRating2; + } + + public String getRating3() { + return this.rating3; + } + + public void setRating3(String newRating3) { + this.rating3 = newRating3; + } + + public String getRating4() { + return this.rating4; + } + + public void setRating4(String newRating4) { + this.rating4 = newRating4; + } + + public String[] getTxtEmpAprsKPAlHdrId() { + return this.txtEmpAprsKPAlHdrId; + } + + public void setTxtEmpAprsKPAlHdrId(String[] newTxtEmpAprsKPAlHdrId) { + this.txtEmpAprsKPAlHdrId = newTxtEmpAprsKPAlHdrId; + } + + public String[] getTxtEmpAprslHdrId() { + return this.txtEmpAprslHdrId; + } + + public void setTxtEmpAprslHdrId(String[] newTxtEmpAprslHdrId) { + this.txtEmpAprslHdrId = newTxtEmpAprslHdrId; + } + + public String getButStOrder() { + return this.butStOrder; + } + + public void setButStOrder(String newButStOrder) { + this.butStOrder = newButStOrder; + } + + public String getDisabbutStOrder() { + return this.disabbutStOrder; + } + + public void setDisabbutStOrder(String newDisabbutStOrder) { + this.disabbutStOrder = newDisabbutStOrder; + } + + public String[] getButRatingG0LOV() { + return this.butRatingG0LOV; + } + + public void setButRatingG0LOV(String[] newButRatingG0LOV) { + this.butRatingG0LOV = newButRatingG0LOV; + } + + public String[] getButRatingG1LOV() { + return this.butRatingG1LOV; + } + + public void setButRatingG1LOV(String[] newButRatingG1LOV) { + this.butRatingG1LOV = newButRatingG1LOV; + } + + public String[] getButRatingG2LOV() { + return this.butRatingG2LOV; + } + + public void setButRatingG2LOV(String[] newButRatingG2LOV) { + this.butRatingG2LOV = newButRatingG2LOV; + } + + public String[] getButRatingG3LOV() { + return this.butRatingG3LOV; + } + + public void setButRatingG3LOV(String[] newButRatingG3LOV) { + this.butRatingG3LOV = newButRatingG3LOV; + } + + public String[] getButRatingG4LOV() { + return this.butRatingG4LOV; + } + + public void setButRatingG4LOV(String[] newButRatingG4LOV) { + this.butRatingG4LOV = newButRatingG4LOV; + } + + public String[] getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String[] newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String[] getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String[] newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String[] getTxtRatingDesc() { + return this.txtRatingDesc; + } + + public void setTxtRatingDesc(String[] newTxtRatingDesc) { + this.txtRatingDesc = newTxtRatingDesc; + } + + public String[] getTxtRatingFromG() { + return this.txtRatingFromG; + } + + public void setTxtRatingFromG(String[] newTxtRatingFromG) { + this.txtRatingFromG = newTxtRatingFromG; + } + + public String[] getTxtRatingToG() { + return this.txtRatingToG; + } + + public void setTxtRatingToG(String[] newTxtRatingToG) { + this.txtRatingToG = newTxtRatingToG; + } + + public String[] getTxtRatingDescG() { + return this.txtRatingDescG; + } + + public void setTxtRatingDescG(String[] newTxtRatingDescG) { + this.txtRatingDescG = newTxtRatingDescG; + } + + public String getButDone() { + return this.butDone; + } + + public void setButDone(String newButDone) { + this.butDone = newButDone; + } + + public String getDisabbutDone() { + return this.disabbutDone; + } + + public void setDisabbutDone(String newDisabbutDone) { + this.disabbutDone = newDisabbutDone; + } + + public String[] getTxtKPADtlId() { + return this.txtKPADtlId; + } + + public void setTxtKPADtlId(String[] newTxtKPADtlId) { + this.txtKPADtlId = newTxtKPADtlId; + } + + public String getButCalculate() { + return this.butCalculate; + } + + public void setButCalculate(String newButCalculate) { + this.butCalculate = newButCalculate; + } + + public String getDisabbutCalculate() { + return this.disabbutCalculate; + } + + public void setDisabbutCalculate(String newDisabbutCalculate) { + this.disabbutCalculate = newDisabbutCalculate; + } + + public String[] getTxtKpaRatingReq() { + return this.txtKpaRatingReq; + } + + public void setTxtKpaRatingReq(String[] newTxtKpaRatingReq) { + this.txtKpaRatingReq = newTxtKpaRatingReq; + } + + public String[] getTxtSecRatingReq() { + return this.txtSecRatingReq; + } + + public void setTxtSecRatingReq(String[] newTxtSecRatingReq) { + this.txtSecRatingReq = newTxtSecRatingReq; + } + + public String getCalFlag() { + return this.calFlag; + } + + public void setCalFlag(String newCalFlag) { + this.calFlag = newCalFlag; + } + + public String[] getTxtLevelAprl0g() { + return this.txtLevelAprl0g; + } + + public void setTxtLevelAprl0g(String[] newTxtLevelAprl0g) { + this.txtLevelAprl0g = newTxtLevelAprl0g; + } + + public String[] getTxtLevelRating0g() { + return this.txtLevelRating0g; + } + + public void setTxtLevelRating0g(String[] newTxtLevelRating0g) { + this.txtLevelRating0g = newTxtLevelRating0g; + } + + public String[] getTxtLevelAprl1g() { + return this.txtLevelAprl1g; + } + + public void setTxtLevelAprl1g(String[] newTxtLevelAprl1g) { + this.txtLevelAprl1g = newTxtLevelAprl1g; + } + + public String[] getTxtLevelRating1g() { + return this.txtLevelRating1g; + } + + public void setTxtLevelRating1g(String[] newTxtLevelRating1g) { + this.txtLevelRating1g = newTxtLevelRating1g; + } + + public String[] getTxtLevelAprl2g() { + return this.txtLevelAprl2g; + } + + public void setTxtLevelAprl2g(String[] newTxtLevelAprl2g) { + this.txtLevelAprl2g = newTxtLevelAprl2g; + } + + public String[] getTxtLevelRating2g() { + return this.txtLevelRating2g; + } + + public void setTxtLevelRating2g(String[] newTxtLevelRating2g) { + this.txtLevelRating2g = newTxtLevelRating2g; + } + + public String[] getTxtLevelAprl3g() { + return this.txtLevelAprl3g; + } + + public void setTxtLevelAprl3g(String[] newTxtLevelAprl3g) { + this.txtLevelAprl3g = newTxtLevelAprl3g; + } + + public String[] getTxtLevelRating3g() { + return this.txtLevelRating3g; + } + + public void setTxtLevelRating3g(String[] newTxtLevelRating3g) { + this.txtLevelRating3g = newTxtLevelRating3g; + } + + public String[] getTxtLevelAprl4g() { + return this.txtLevelAprl4g; + } + + public void setTxtLevelAprl4g(String[] newTxtLevelAprl4g) { + this.txtLevelAprl4g = newTxtLevelAprl4g; + } + + public String[] getTxtLevelRating4g() { + return this.txtLevelRating4g; + } + + public void setTxtLevelRating4g(String[] newTxtLevelRating4g) { + this.txtLevelRating4g = newTxtLevelRating4g; + } + + public String[] getTxtKpaAprslType() { + return this.txtKpaAprslType; + } + + public void setTxtKpaAprslType(String[] newTxtKpaAprslType) { + this.txtKpaAprslType = newTxtKpaAprslType; + } + + public String[] getButRatingK0LOV() { + return this.butRatingK0LOV; + } + + public void setButRatingK0LOV(String[] newButRatingK0LOV) { + this.butRatingK0LOV = newButRatingK0LOV; + } + + public String[] getButRatingK1LOV() { + return this.butRatingK1LOV; + } + + public void setButRatingK1LOV(String[] newButRatingK1LOV) { + this.butRatingK1LOV = newButRatingK1LOV; + } + + public String[] getButRatingK2LOV() { + return this.butRatingK2LOV; + } + + public void setButRatingK2LOV(String[] newButRatingK2LOV) { + this.butRatingK2LOV = newButRatingK2LOV; + } + + public String[] getButRatingK3LOV() { + return this.butRatingK3LOV; + } + + public void setButRatingK3LOV(String[] newButRatingK3LOV) { + this.butRatingK3LOV = newButRatingK3LOV; + } + + public String[] getButRatingK4LOV() { + return this.butRatingK4LOV; + } + + public void setButRatingK4LOV(String[] newButRatingK4LOV) { + this.butRatingK4LOV = newButRatingK4LOV; + } + + public String[] getTxtSecAprslType() { + return this.txtSecAprslType; + } + + public void setTxtSecAprslType(String[] newTxtSecAprslType) { + this.txtSecAprslType = newTxtSecAprslType; + } + + public String getDisabfinalRating() { + return this.disabfinalRating; + } + + public void setDisabfinalRating(String newDisabfinalRating) { + this.disabfinalRating = newDisabfinalRating; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public ArrayList getArylstEmpAprsTrngReq() { + return this.arylstEmpAprsTrngReq; + } + + public void setArylstEmpAprsTrngReq(ArrayList newArylstEmpAprsTrngReq) { + this.arylstEmpAprsTrngReq = newArylstEmpAprsTrngReq; + } + + public String[] getTxtDateSubmitted() { + return this.txtDateSubmitted; + } + + public void setTxtDateSubmitted(String[] newTxtDateSubmitted) { + this.txtDateSubmitted = newTxtDateSubmitted; + } + + public String[] getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String[] newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String[] getTxtTrngCal() { + return this.txtTrngCal; + } + + public void setTxtTrngCal(String[] newTxtTrngCal) { + this.txtTrngCal = newTxtTrngCal; + } + + public String[] getTxtInstName() { + return this.txtInstName; + } + + public void setTxtInstName(String[] newTxtInstName) { + this.txtInstName = newTxtInstName; + } + + public String[] getTxtStartDate() { + return this.txtStartDate; + } + + public void setTxtStartDate(String[] newTxtStartDate) { + this.txtStartDate = newTxtStartDate; + } + + public String[] getTxtEndDate() { + return this.txtEndDate; + } + + public void setTxtEndDate(String[] newTxtEndDate) { + this.txtEndDate = newTxtEndDate; + } + + public String[] getTxtNature() { + return this.txtNature; + } + + public void setTxtNature(String[] newTxtNature) { + this.txtNature = newTxtNature; + } + + public String[] getTxtPurpose() { + return this.txtPurpose; + } + + public void setTxtPurpose(String[] newTxtPurpose) { + this.txtPurpose = newTxtPurpose; + } + + public String[] getTxtRecommender() { + return this.txtRecommender; + } + + public void setTxtRecommender(String[] newTxtRecommender) { + this.txtRecommender = newTxtRecommender; + } + + public String[] getTxtAppStatus() { + return this.txtAppStatus; + } + + public void setTxtAppStatus(String[] newTxtAppStatus) { + this.txtAppStatus = newTxtAppStatus; + } + + public String[] getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String[] newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String[] getTxtCrsId() { + return this.txtCrsId; + } + + public void setTxtCrsId(String[] newTxtCrsId) { + this.txtCrsId = newTxtCrsId; + } + + public String[] getTxtCalId() { + return this.txtCalId; + } + + public void setTxtCalId(String[] newTxtCalId) { + this.txtCalId = newTxtCalId; + } + + public String[] getTxtRecId() { + return this.txtRecId; + } + + public void setTxtRecId(String[] newTxtRecId) { + this.txtRecId = newTxtRecId; + } + + public String[] getButCourseLOV() { + return this.butCourseLOV; + } + + public void setButCourseLOV(String[] newButCourseLOV) { + this.butCourseLOV = newButCourseLOV; + } + + public String[] getButTrngCalLOV() { + return this.butTrngCalLOV; + } + + public void setButTrngCalLOV(String[] newButTrngCalLOV) { + this.butTrngCalLOV = newButTrngCalLOV; + } + + public String[] getButRecLOV() { + return this.butRecLOV; + } + + public void setButRecLOV(String[] newButRecLOV) { + this.butRecLOV = newButRecLOV; + } + + public String[] getTxtLevel() { + return this.txtLevel; + } + + public void setTxtLevel(String[] newTxtLevel) { + this.txtLevel = newTxtLevel; + } + + public String[] getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String[] newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String[] getTxtCourseCode() { + return this.txtCourseCode; + } + + public void setTxtCourseCode(String[] newTxtCourseCode) { + this.txtCourseCode = newTxtCourseCode; + } + + public String[] getTxtRecNo() { + return this.txtRecNo; + } + + public void setTxtRecNo(String[] newTxtRecNo) { + this.txtRecNo = newTxtRecNo; + } + + public String getAppFlag() { + return this.appFlag; + } + + public void setAppFlag(String newAppFlag) { + this.appFlag = newAppFlag; + } + + public String getDoneFlag() { + return this.hidDoneFlag; + } + + public void setDoneFlag(String newDoneFlag) { + this.doneFlag = newDoneFlag; + } + + public String getHidDoneFlag() { + return this.hidDoneFlag; + } + + public void setHidDoneFlag(String newHidDoneFlag) { + this.hidDoneFlag = newHidDoneFlag; + } + + public String getApprovalFlag() { + return this.approvalFlag; + } + + public void setApprovalFlag(String newApprovalFlag) { + this.approvalFlag = newApprovalFlag; + } + + public String getRating5() { + return this.rating5; + } + + public void setRating5(String newRating5) { + this.rating5 = newRating5; + } + + public String[] getTxtLevelAprl5() { + return this.txtLevelAprl5; + } + + public void setTxtLevelAprl5(String[] newTxtLevelAprl5) { + this.txtLevelAprl5 = newTxtLevelAprl5; + } + + public String[] getTxtLevelRating5() { + return this.txtLevelRating5; + } + + public void setTxtLevelRating5(String[] newTxtLevelRating5) { + this.txtLevelRating5 = newTxtLevelRating5; + } + + public String[] getButRatingK5LOV() { + return this.butRatingK5LOV; + } + + public void setButRatingK5LOV(String[] newButRatingK5LOV) { + this.butRatingK5LOV = newButRatingK5LOV; + } + + public String[] getTxtLevelAprl5g() { + return this.txtLevelAprl5g; + } + + public void setTxtLevelAprl5g(String[] newTxtLevelAprl5g) { + this.txtLevelAprl5g = newTxtLevelAprl5g; + } + + public String[] getTxtLevelRating5g() { + return this.txtLevelRating5g; + } + + public void setTxtLevelRating5g(String[] newTxtLevelRating5g) { + this.txtLevelRating5g = newTxtLevelRating5g; + } + + public String[] getButRatingG5LOV() { + return this.butRatingG5LOV; + } + + public void setButRatingG5LOV(String[] newButRatingG5LOV) { + this.butRatingG5LOV = newButRatingG5LOV; + } + + public ArrayList getArrHrmEmpDtl() { + return this.arrHrmEmpDtl; + } + + public void setArrHrmEmpDtl(ArrayList newArrHrmEmpDtl) { + this.arrHrmEmpDtl = newArrHrmEmpDtl; + } + + public ArrayList getArrHrmEmpAprslDtl() { + return this.arrHrmEmpAprslDtl; + } + + public void setArrHrmEmpAprslDtl(ArrayList newArrHrmEmpAprslDtl) { + this.arrHrmEmpAprslDtl = newArrHrmEmpAprslDtl; + } + + public HrmAprslEmpDtlsBean getHrmAprslEmp() { + HrmAprslEmpDtlsBean oEmpDtl; + if (this.arrHrmEmpDtl.size() != 0) { + oEmpDtl = this.arrHrmEmpDtl.get(0); + } else { + oEmpDtl = new HrmAprslEmpDtlsBean(); + } + return oEmpDtl; + } + + public String[] getGrade() { + return this.grade; + } + + public void setGrade(String[] newGrade) { + this.grade = newGrade; + } + + public String[] getDesignation() { + return this.designation; + } + + public void setDesignation(String[] newDesignation) { + this.designation = newDesignation; + } + + public String[] getPresLoc() { + return this.presLoc; + } + + public void setPresLoc(String[] newPresLoc) { + this.presLoc = newPresLoc; + } + + public String[] getDateofBirth() { + return this.dateofBirth; + } + + public void setDateofBirth(String[] newDateofBirth) { + this.dateofBirth = newDateofBirth; + } + + public String[] getJoiningStaffDate() { + return this.joiningStaffDate; + } + + public void setJoiningStaffDate(String[] newJoiningStaffDate) { + this.joiningStaffDate = newJoiningStaffDate; + } + + public String[] getJoiningOfficerDate() { + return this.joiningOfficerDate; + } + + public void setJoiningOfficerDate(String[] newJoiningOfficerDate) { + this.joiningOfficerDate = newJoiningOfficerDate; + } + + public String[] getLastPromDate() { + return this.lastPromDate; + } + + public void setLastPromDate(String[] newLastPromDate) { + this.lastPromDate = newLastPromDate; + } + + public String[] getLastPay() { + return this.lastPay; + } + + public void setLastPay(String[] newLastPay) { + this.lastPay = newLastPay; + } + + public String[] getQual() { + return this.qual; + } + + public void setQual(String[] newQual) { + this.qual = newQual; + } + + public String[] getEmpRating1() { + return this.empRating1; + } + + public void setEmpRating1(String[] newEmpRating1) { + this.empRating1 = newEmpRating1; + } + + public String[] getEmpRating2() { + return this.empRating2; + } + + public void setEmpRating2(String[] newEmpRating2) { + this.empRating2 = newEmpRating2; + } + + public String[] getEmpRating3() { + return this.empRating3; + } + + public void setEmpRating3(String[] newEmpRating3) { + this.empRating3 = newEmpRating3; + } + + public String[] getIncr1() { + return this.incr1; + } + + public void setIncr1(String[] newIncr1) { + this.incr1 = newIncr1; + } + + public String[] getIncr2() { + return this.incr2; + } + + public void setIncr2(String[] newIncr2) { + this.incr2 = newIncr2; + } + + public String[] getIncr3() { + return this.incr3; + } + + public void setIncr3(String[] newIncr3) { + this.incr3 = newIncr3; + } + + public String[] getFinalRatingDtl() { + return this.finalRatingDtl; + } + + public void setFinalRatingDtl(String[] newFinalRatingDtl) { + this.finalRatingDtl = newFinalRatingDtl; + } + + public String getButEmpNoDtl() { + return this.butEmpNoDtl; + } + + public void setButEmpNoDtl(String newButEmpNoDtl) { + this.butEmpNoDtl = newButEmpNoDtl; + } + + public String[] getAprslYearDtl() { + return this.aprslYearDtl; + } + + public void setAprslYearDtl(String[] newAprslYearDtl) { + this.aprslYearDtl = newAprslYearDtl; + } + + public String[] getEmpNameDtl() { + return this.empNameDtl; + } + + public void setEmpNameDtl(String[] newEmpNameDtl) { + this.empNameDtl = newEmpNameDtl; + } + + public String[] getEmpIdDtl() { + return this.empIdDtl; + } + + public void setEmpIdDtl(String[] newEmpIdDtl) { + this.empIdDtl = newEmpIdDtl; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslSpcTmplForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslSpcTmplForm.java new file mode 100644 index 0000000..3cceba7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslSpcTmplForm.java @@ -0,0 +1,816 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAprslSpcTmplForm extends HrmBaseForm { + private String splTemplateName; + + private String templateName; + + private String siteCode; + + private String deptCode; + + private String empNo; + + private String butTemplateName; + + private String disabbutTemplateName; + + private String[] txtKpaGrCode; + + private String[] txtKpaGrDesc; + + private String[] txtKpaCode; + + private String[] txtKpaDesc; + + private ArrayList arylstAprslSpcTempKpa = new ArrayList(); + + private String stOrderNo; + + private String fromDate; + + private String butFromDate; + + private String disabbutFromDate; + + private String butToDate; + + private String disabbutToDate; + + private String toDate; + + private String butKPATab; + + private String disabbutKPATab; + + private String butGoalsTab; + + private String disabbutGoalsTab; + + private String selectAll; + + private String butSiteCode; + + private String disabbutSiteCode; + + private String butDeptCode; + + private String disabbutDeptCode; + + private String[] butSectionLOV; + + private String[] disabbutSectionLOV; + + private ArrayList arylstAprslSpcTempGoals = new ArrayList(); + + private String classHdr; + + private String classHdrDesc; + + private String classDtl; + + private String classDtlDesc; + + private String butClassHdr; + + private String disabbutClassHdr; + + private String butClassDtl; + + private String disabbutClassDtl; + + private String butEmpEligTab; + + private String disabbutEmpEligTab; + + private String[] txtWtg; + + private String[] txtParentSection; + + private ArrayList arylstAprslSpcTempEmpElig = new ArrayList(); + + private String[] txtEmpNo; + + private String[] txtEmpName; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String butStOrderNo; + + private String disabbutStOrderNo; + + private String templateNameId; + + private String classHdrId; + + private String classDtlId; + + private String siteId; + + private String deptId; + + private String empId; + + private String stOrderId; + + private String[] butKPAGrCodeLOV; + + private String[] disabbutKPAGrCodeLOV; + + private String[] butKPACodeLOV; + + private String[] disabbutKPACodeLOV; + + private String[] txtKPAGrId; + + private String[] txtKPAId; + + private String[] txtSectionId; + + private String[] txtEmpId; + + private String[] butTxtEmpNameLOV; + + private String[] disabbutTxtEmpNameLOV; + + private String siteDesc; + + private String deptDesc; + + private String empName; + + private String[] txtSrlNo; + + private String[] txtSection; + + private String[] txtGoalsDesc; + + private String[] txtMesr; + + private String disabsplTemplateName; + + private String[] txtFlag; + + private String butSplTemplateName; + + private String disabbutSplTemplateName; + + String employeeId; + + String employeeName; + + String empLoyeeNumber; + + public String getSplTemplateName() { + return this.splTemplateName; + } + + public void setSplTemplateName(String newSplTemplateName) { + this.splTemplateName = newSplTemplateName; + } + + public String getTemplateName() { + return this.templateName; + } + + public void setTemplateName(String newTemplateName) { + this.templateName = newTemplateName; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getDeptCode() { + return this.deptCode; + } + + public void setDeptCode(String newDeptCode) { + this.deptCode = newDeptCode; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getButTemplateName() { + return this.butTemplateName; + } + + public void setButTemplateName(String newButTemplateName) { + this.butTemplateName = newButTemplateName; + } + + public String getDisabbutTemplateName() { + return this.disabbutTemplateName; + } + + public void setDisabbutTemplateName(String newDisabbutTemplateName) { + this.disabbutTemplateName = newDisabbutTemplateName; + } + + public String[] getTxtKpaGrCode() { + return this.txtKpaGrCode; + } + + public void setTxtKpaGrCode(String[] newTxtKpaGrCode) { + this.txtKpaGrCode = newTxtKpaGrCode; + } + + public String[] getTxtKpaGrDesc() { + return this.txtKpaGrDesc; + } + + public void setTxtKpaGrDesc(String[] newTxtKpaGrDesc) { + this.txtKpaGrDesc = newTxtKpaGrDesc; + } + + public String[] getTxtKpaCode() { + return this.txtKpaCode; + } + + public void setTxtKpaCode(String[] newTxtKpaCode) { + this.txtKpaCode = newTxtKpaCode; + } + + public String[] getTxtKpaDesc() { + return this.txtKpaDesc; + } + + public void setTxtKpaDesc(String[] newTxtKpaDesc) { + this.txtKpaDesc = newTxtKpaDesc; + } + + public ArrayList getArylstAprslSpcTempKpa() { + return this.arylstAprslSpcTempKpa; + } + + public void setArylstAprslSpcTempKpa(ArrayList newArylstAprslSpcTempKpa) { + this.arylstAprslSpcTempKpa = newArylstAprslSpcTempKpa; + } + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getButToDate() { + return this.butToDate; + } + + public void setButToDate(String newButToDate) { + this.butToDate = newButToDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getButKPATab() { + return this.butKPATab; + } + + public void setButKPATab(String newButKPATab) { + this.butKPATab = newButKPATab; + } + + public String getDisabbutKPATab() { + return this.disabbutKPATab; + } + + public void setDisabbutKPATab(String newDisabbutKPATab) { + this.disabbutKPATab = newDisabbutKPATab; + } + + public String getButGoalsTab() { + return this.butGoalsTab; + } + + public void setButGoalsTab(String newButGoalsTab) { + this.butGoalsTab = newButGoalsTab; + } + + public String getDisabbutGoalsTab() { + return this.disabbutGoalsTab; + } + + public void setDisabbutGoalsTab(String newDisabbutGoalsTab) { + this.disabbutGoalsTab = newDisabbutGoalsTab; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getButSiteCode() { + return this.butSiteCode; + } + + public void setButSiteCode(String newButSiteCode) { + this.butSiteCode = newButSiteCode; + } + + public String getDisabbutSiteCode() { + return this.disabbutSiteCode; + } + + public void setDisabbutSiteCode(String newDisabbutSiteCode) { + this.disabbutSiteCode = newDisabbutSiteCode; + } + + public String getButDeptCode() { + return this.butDeptCode; + } + + public void setButDeptCode(String newButDeptCode) { + this.butDeptCode = newButDeptCode; + } + + public String getDisabbutDeptCode() { + return this.disabbutDeptCode; + } + + public void setDisabbutDeptCode(String newDisabbutDeptCode) { + this.disabbutDeptCode = newDisabbutDeptCode; + } + + public String[] getButSectionLOV() { + return this.butSectionLOV; + } + + public void setButSectionLOV(String[] newButSectionLOV) { + this.butSectionLOV = newButSectionLOV; + } + + public String[] getDisabbutSectionLOV() { + return this.disabbutSectionLOV; + } + + public void setDisabbutSectionLOV(String[] newDisabbutSectionLOV) { + this.disabbutSectionLOV = newDisabbutSectionLOV; + } + + public ArrayList getArylstAprslSpcTempGoals() { + return this.arylstAprslSpcTempGoals; + } + + public void setArylstAprslSpcTempGoals(ArrayList newArylstAprslSpcTempGoals) { + this.arylstAprslSpcTempGoals = newArylstAprslSpcTempGoals; + } + + public String getClassHdr() { + return this.classHdr; + } + + public void setClassHdr(String newClassHdr) { + this.classHdr = newClassHdr; + } + + public String getClassHdrDesc() { + return this.classHdrDesc; + } + + public void setClassHdrDesc(String newClassHdrDesc) { + this.classHdrDesc = newClassHdrDesc; + } + + public String getClassDtl() { + return this.classDtl; + } + + public void setClassDtl(String newClassDtl) { + this.classDtl = newClassDtl; + } + + public String getClassDtlDesc() { + return this.classDtlDesc; + } + + public void setClassDtlDesc(String newClassDtlDesc) { + this.classDtlDesc = newClassDtlDesc; + } + + public String getButClassHdr() { + return this.butClassHdr; + } + + public void setButClassHdr(String newButClassHdr) { + this.butClassHdr = newButClassHdr; + } + + public String getDisabbutClassHdr() { + return this.disabbutClassHdr; + } + + public void setDisabbutClassHdr(String newDisabbutClassHdr) { + this.disabbutClassHdr = newDisabbutClassHdr; + } + + public String getButClassDtl() { + return this.butClassDtl; + } + + public void setButClassDtl(String newButClassDtl) { + this.butClassDtl = newButClassDtl; + } + + public String getDisabbutClassDtl() { + return this.disabbutClassDtl; + } + + public void setDisabbutClassDtl(String newDisabbutClassDtl) { + this.disabbutClassDtl = newDisabbutClassDtl; + } + + public String getButEmpEligTab() { + return this.butEmpEligTab; + } + + public void setButEmpEligTab(String newButEmpEligTab) { + this.butEmpEligTab = newButEmpEligTab; + } + + public String getDisabbutEmpEligTab() { + return this.disabbutEmpEligTab; + } + + public void setDisabbutEmpEligTab(String newDisabbutEmpEligTab) { + this.disabbutEmpEligTab = newDisabbutEmpEligTab; + } + + public String[] getTxtWtg() { + return this.txtWtg; + } + + public void setTxtWtg(String[] newTxtWtg) { + this.txtWtg = newTxtWtg; + } + + public String[] getTxtParentSection() { + return this.txtParentSection; + } + + public void setTxtParentSection(String[] newTxtParentSection) { + this.txtParentSection = newTxtParentSection; + } + + public ArrayList getArylstAprslSpcTempEmpElig() { + return this.arylstAprslSpcTempEmpElig; + } + + public void setArylstAprslSpcTempEmpElig(ArrayList newArylstAprslSpcTempEmpElig) { + this.arylstAprslSpcTempEmpElig = newArylstAprslSpcTempEmpElig; + } + + public String[] getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String[] newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String[] getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String[] newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getButStOrderNo() { + return this.butStOrderNo; + } + + public void setButStOrderNo(String newButStOrderNo) { + this.butStOrderNo = newButStOrderNo; + } + + public String getDisabbutStOrderNo() { + return this.disabbutStOrderNo; + } + + public void setDisabbutStOrderNo(String newDisabbutStOrderNo) { + this.disabbutStOrderNo = newDisabbutStOrderNo; + } + + public String getTemplateNameId() { + return this.templateNameId; + } + + public void setTemplateNameId(String newTemplateNameId) { + this.templateNameId = newTemplateNameId; + } + + public String getClassHdrId() { + return this.classHdrId; + } + + public void setClassHdrId(String newClassHdrId) { + this.classHdrId = newClassHdrId; + } + + public String getClassDtlId() { + return this.classDtlId; + } + + public void setClassDtlId(String newClassDtlId) { + this.classDtlId = newClassDtlId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getDeptId() { + return this.deptId; + } + + public void setDeptId(String newDeptId) { + this.deptId = newDeptId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } + + public String[] getButKPAGrCodeLOV() { + return this.butKPAGrCodeLOV; + } + + public void setButKPAGrCodeLOV(String[] newButKPAGrCodeLOV) { + this.butKPAGrCodeLOV = newButKPAGrCodeLOV; + } + + public String[] getDisabbutKPAGrCodeLOV() { + return this.disabbutKPAGrCodeLOV; + } + + public void setDisabbutKPAGrCodeLOV(String[] newDisabbutKPAGrCodeLOV) { + this.disabbutKPAGrCodeLOV = newDisabbutKPAGrCodeLOV; + } + + public String[] getButKPACodeLOV() { + return this.butKPACodeLOV; + } + + public void setButKPACodeLOV(String[] newButKPACodeLOV) { + this.butKPACodeLOV = newButKPACodeLOV; + } + + public String[] getDisabbutKPACodeLOV() { + return this.disabbutKPACodeLOV; + } + + public void setDisabbutKPACodeLOV(String[] newDisabbutKPACodeLOV) { + this.disabbutKPACodeLOV = newDisabbutKPACodeLOV; + } + + public String[] getTxtKPAGrId() { + return this.txtKPAGrId; + } + + public void setTxtKPAGrId(String[] newTxtKPAGrId) { + this.txtKPAGrId = newTxtKPAGrId; + } + + public String[] getTxtKPAId() { + return this.txtKPAId; + } + + public void setTxtKPAId(String[] newTxtKPAId) { + this.txtKPAId = newTxtKPAId; + } + + public String[] getTxtSectionId() { + return this.txtSectionId; + } + + public void setTxtSectionId(String[] newTxtSectionId) { + this.txtSectionId = newTxtSectionId; + } + + public String[] getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String[] newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String[] getButTxtEmpNameLOV() { + return this.butTxtEmpNameLOV; + } + + public void setButTxtEmpNameLOV(String[] newButTxtEmpNameLOV) { + this.butTxtEmpNameLOV = newButTxtEmpNameLOV; + } + + public String[] getDisabbutTxtEmpNameLOV() { + return this.disabbutTxtEmpNameLOV; + } + + public void setDisabbutTxtEmpNameLOV(String[] newDisabbutTxtEmpNameLOV) { + this.disabbutTxtEmpNameLOV = newDisabbutTxtEmpNameLOV; + } + + public String getSiteDesc() { + return this.siteDesc; + } + + public void setSiteDesc(String newSiteDesc) { + this.siteDesc = newSiteDesc; + } + + public String getDeptDesc() { + return this.deptDesc; + } + + public void setDeptDesc(String newDeptDesc) { + this.deptDesc = newDeptDesc; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String[] getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String[] newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String[] getTxtSection() { + return this.txtSection; + } + + public void setTxtSection(String[] newTxtSection) { + this.txtSection = newTxtSection; + } + + public String[] getTxtGoalsDesc() { + return this.txtGoalsDesc; + } + + public void setTxtGoalsDesc(String[] newTxtGoalsDesc) { + this.txtGoalsDesc = newTxtGoalsDesc; + } + + public String[] getTxtMesr() { + return this.txtMesr; + } + + public void setTxtMesr(String[] newTxtMesr) { + this.txtMesr = newTxtMesr; + } + + public String getDisabsplTemplateName() { + return this.disabsplTemplateName; + } + + public void setDisabsplTemplateName(String newDisabsplTemplateName) { + this.disabsplTemplateName = newDisabsplTemplateName; + } + + public String[] getTxtFlag() { + return this.txtFlag; + } + + public void setTxtFlag(String[] newTxtFlag) { + this.txtFlag = newTxtFlag; + } + + public String getButSplTemplateName() { + return this.butSplTemplateName; + } + + public void setButSplTemplateName(String newButSplTemplateName) { + this.butSplTemplateName = newButSplTemplateName; + } + + public String getDisabbutSplTemplateName() { + return this.disabbutSplTemplateName; + } + + public void setDisabbutSplTemplateName(String newDisabbutSplTemplateName) { + this.disabbutSplTemplateName = newDisabbutSplTemplateName; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmpLoyeeNumber() { + return this.empLoyeeNumber; + } + + public void setEmpLoyeeNumber(String newEmpLoyeeNumber) { + this.empLoyeeNumber = newEmpLoyeeNumber; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartOrderForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartOrderForm.java new file mode 100644 index 0000000..b83d9f6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartOrderForm.java @@ -0,0 +1,165 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAprslStartOrderForm extends HrmBaseForm { + private String stOrderNo; + + private String butStOrderNo; + + private String periodStDate; + + private String periodEndDate; + + private String aprslStDate; + + private String aprslEndDate; + + private String disabbutStOrderNo; + + private String stOrderId; + + private String butPeriodStDate; + + private String disabbutPeriodStDate; + + private String butPeriodEndDate; + + private String disabbutAprslEndDate; + + private String butAprslStDate; + + private String butAprslEndDate; + + private String disabbutAprslStDate; + + private String disabbutPeriodEndDate; + + public String getStOrderNo() { + return this.stOrderNo; + } + + public void setStOrderNo(String newStOrderNo) { + this.stOrderNo = newStOrderNo; + } + + public String getButStOrderNo() { + return this.butStOrderNo; + } + + public void setButStOrderNo(String newButStOrderNo) { + this.butStOrderNo = newButStOrderNo; + } + + public String getPeriodStDate() { + return this.periodStDate; + } + + public void setPeriodStDate(String newPeriodStDate) { + this.periodStDate = newPeriodStDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getAprslStDate() { + return this.aprslStDate; + } + + public void setAprslStDate(String newAprslStDate) { + this.aprslStDate = newAprslStDate; + } + + public String getAprslEndDate() { + return this.aprslEndDate; + } + + public void setAprslEndDate(String newAprslEndDate) { + this.aprslEndDate = newAprslEndDate; + } + + public String getDisabbutStOrderNo() { + return this.disabbutStOrderNo; + } + + public void setDisabbutStOrderNo(String newDisabbutStOrderNo) { + this.disabbutStOrderNo = newDisabbutStOrderNo; + } + + public String getStOrderId() { + return this.stOrderId; + } + + public void setStOrderId(String newStOrderId) { + this.stOrderId = newStOrderId; + } + + public String getButPeriodStDate() { + return this.butPeriodStDate; + } + + public void setButPeriodStDate(String newButPeriodStDate) { + this.butPeriodStDate = newButPeriodStDate; + } + + public String getDisabbutPeriodStDate() { + return this.disabbutPeriodStDate; + } + + public void setDisabbutPeriodStDate(String newDisabbutPeriodStDate) { + this.disabbutPeriodStDate = newDisabbutPeriodStDate; + } + + public String getButPeriodEndDate() { + return this.butPeriodEndDate; + } + + public void setButPeriodEndDate(String newButPeriodEndDate) { + this.butPeriodEndDate = newButPeriodEndDate; + } + + public String getDisabbutAprslEndDate() { + return this.disabbutAprslEndDate; + } + + public void setDisabbutAprslEndDate(String newDisabbutAprslEndDate) { + this.disabbutAprslEndDate = newDisabbutAprslEndDate; + } + + public String getButAprslStDate() { + return this.butAprslStDate; + } + + public void setButAprslStDate(String newButAprslStDate) { + this.butAprslStDate = newButAprslStDate; + } + + public String getButAprslEndDate() { + return this.butAprslEndDate; + } + + public void setButAprslEndDate(String newButAprslEndDate) { + this.butAprslEndDate = newButAprslEndDate; + } + + public String getDisabbutAprslStDate() { + return this.disabbutAprslStDate; + } + + public void setDisabbutAprslStDate(String newDisabbutAprslStDate) { + this.disabbutAprslStDate = newDisabbutAprslStDate; + } + + public String getDisabbutPeriodEndDate() { + return this.disabbutPeriodEndDate; + } + + public void setDisabbutPeriodEndDate(String newDisabbutPeriodEndDate) { + this.disabbutPeriodEndDate = newDisabbutPeriodEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartRuleForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartRuleForm.java new file mode 100644 index 0000000..ea79148 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAprslStartRuleForm.java @@ -0,0 +1,356 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAprslStartRuleForm extends HrmBaseForm { + private ArrayList arylstAprslStarRule = new ArrayList(); + + private String txtAprslStOrdNo; + + private String hdnAprslStOrdNo; + + private String txtEmpNum; + + private String txtEmpName; + + private String hdnEmpNum; + + private String txtWrkGrpCode; + + private String hdnWrkGrpCode; + + private String txtWrkGrpDesc; + + private String txtSiteCode; + + private String hdnSiteCode; + + private String txtSiteDesc; + + private String txtClsHdr; + + private String hdnClsHdrID; + + private String txtClsHdrDesc; + + private String txtClsDtl; + + private String hdnClsDtlID; + + private String txtClsDtlDesc; + + private String[] txtEmplNo; + + private String[] txtEmplName; + + private String[] buttxtEmplNo; + + private String[] dtlEmplNo; + + private String selectAll; + + private String butTxtAprslStOrdNo; + + private String butTxtClsDtl; + + private String butTxtClsHdr; + + private String butTxtEmpNum; + + private String butTxtSiteCode; + + private String butTxtWrkGrpCode; + + private String disabbutTxtAprslStOrdNo; + + private String disabbutTxtClsDtl; + + private String disabbutTxtClsHdr; + + private String disabbutTxtEmpNum; + + private String disabbutTxtSiteCode; + + private String disabbutTxtWrkGrpCode; + + public ArrayList getArylstAprslStarRule() { + return this.arylstAprslStarRule; + } + + public void setArylstAprslStarRule(ArrayList newArylstAprslStarRule) { + this.arylstAprslStarRule = newArylstAprslStarRule; + } + + public String getTxtAprslStOrdNo() { + return this.txtAprslStOrdNo; + } + + public void setTxtAprslStOrdNo(String newTxtAprslStOrdNo) { + this.txtAprslStOrdNo = newTxtAprslStOrdNo; + } + + public String getHdnAprslStOrdNo() { + return this.hdnAprslStOrdNo; + } + + public void setHdnAprslStOrdNo(String newHdnAprslStOrdNo) { + this.hdnAprslStOrdNo = newHdnAprslStOrdNo; + } + + public String getTxtEmpNum() { + return this.txtEmpNum; + } + + public void setTxtEmpNum(String newTxtEmpNum) { + this.txtEmpNum = newTxtEmpNum; + } + + public String getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String getHdnEmpNum() { + return this.hdnEmpNum; + } + + public void setHdnEmpNum(String newHdnEmpNum) { + this.hdnEmpNum = newHdnEmpNum; + } + + public String getTxtWrkGrpCode() { + return this.txtWrkGrpCode; + } + + public void setTxtWrkGrpCode(String newTxtWrkGrpCode) { + this.txtWrkGrpCode = newTxtWrkGrpCode; + } + + public String getHdnWrkGrpCode() { + return this.hdnWrkGrpCode; + } + + public void setHdnWrkGrpCode(String newHdnWrkGrpCode) { + this.hdnWrkGrpCode = newHdnWrkGrpCode; + } + + public String getTxtWrkGrpDesc() { + return this.txtWrkGrpDesc; + } + + public void setTxtWrkGrpDesc(String newTxtWrkGrpDesc) { + this.txtWrkGrpDesc = newTxtWrkGrpDesc; + } + + public String getTxtSiteCode() { + return this.txtSiteCode; + } + + public void setTxtSiteCode(String newTxtSiteCode) { + this.txtSiteCode = newTxtSiteCode; + } + + public String getHdnSiteCode() { + return this.hdnSiteCode; + } + + public void setHdnSiteCode(String newHdnSiteCode) { + this.hdnSiteCode = newHdnSiteCode; + } + + public String getTxtSiteDesc() { + return this.txtSiteDesc; + } + + public void setTxtSiteDesc(String newTxtSiteDesc) { + this.txtSiteDesc = newTxtSiteDesc; + } + + public String getTxtClsHdr() { + return this.txtClsHdr; + } + + public void setTxtClsHdr(String newTxtClsHdr) { + this.txtClsHdr = newTxtClsHdr; + } + + public String getHdnClsHdrID() { + return this.hdnClsHdrID; + } + + public void setHdnClsHdrID(String newHdnClsHdrID) { + this.hdnClsHdrID = newHdnClsHdrID; + } + + public String getTxtClsHdrDesc() { + return this.txtClsHdrDesc; + } + + public void setTxtClsHdrDesc(String newTxtClsHdrDesc) { + this.txtClsHdrDesc = newTxtClsHdrDesc; + } + + public String getTxtClsDtl() { + return this.txtClsDtl; + } + + public void setTxtClsDtl(String newTxtClsDtl) { + this.txtClsDtl = newTxtClsDtl; + } + + public String getHdnClsDtlID() { + return this.hdnClsDtlID; + } + + public void setHdnClsDtlID(String newHdnClsDtlID) { + this.hdnClsDtlID = newHdnClsDtlID; + } + + public String getTxtClsDtlDesc() { + return this.txtClsDtlDesc; + } + + public void setTxtClsDtlDesc(String newTxtClsDtlDesc) { + this.txtClsDtlDesc = newTxtClsDtlDesc; + } + + public String[] getTxtEmplNo() { + return this.txtEmplNo; + } + + public void setTxtEmplNo(String[] newTxtEmplNo) { + this.txtEmplNo = newTxtEmplNo; + } + + public String[] getTxtEmplName() { + return this.txtEmplName; + } + + public void setTxtEmplName(String[] newTxtEmplName) { + this.txtEmplName = newTxtEmplName; + } + + public String[] getButtxtEmplNo() { + return this.buttxtEmplNo; + } + + public void setButtxtEmplNo(String[] newButtxtEmplNo) { + this.buttxtEmplNo = newButtxtEmplNo; + } + + public String[] getDtlEmplNo() { + return this.dtlEmplNo; + } + + public void setDtlEmplNo(String[] newDtlEmplNo) { + this.dtlEmplNo = newDtlEmplNo; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getButTxtAprslStOrdNo() { + return this.butTxtAprslStOrdNo; + } + + public void setButTxtAprslStOrdNo(String newButTxtAprslStOrdNo) { + this.butTxtAprslStOrdNo = newButTxtAprslStOrdNo; + } + + public String getButTxtClsDtl() { + return this.butTxtClsDtl; + } + + public void setButTxtClsDtl(String newButTxtClsDtl) { + this.butTxtClsDtl = newButTxtClsDtl; + } + + public String getButTxtClsHdr() { + return this.butTxtClsHdr; + } + + public void setButTxtClsHdr(String newButTxtClsHdr) { + this.butTxtClsHdr = newButTxtClsHdr; + } + + public String getButTxtEmpNum() { + return this.butTxtEmpNum; + } + + public void setButTxtEmpNum(String newButTxtEmpNum) { + this.butTxtEmpNum = newButTxtEmpNum; + } + + public String getButTxtSiteCode() { + return this.butTxtSiteCode; + } + + public void setButTxtSiteCode(String newButTxtSiteCode) { + this.butTxtSiteCode = newButTxtSiteCode; + } + + public String getButTxtWrkGrpCode() { + return this.butTxtWrkGrpCode; + } + + public void setButTxtWrkGrpCode(String newButTxtWrkGrpCode) { + this.butTxtWrkGrpCode = newButTxtWrkGrpCode; + } + + public String getDisabbutTxtAprslStOrdNo() { + return this.disabbutTxtAprslStOrdNo; + } + + public void setDisabbutTxtAprslStOrdNo(String newDisabbutTxtAprslStOrdNo) { + this.disabbutTxtAprslStOrdNo = newDisabbutTxtAprslStOrdNo; + } + + public String getDisabbutTxtClsDtl() { + return this.disabbutTxtClsDtl; + } + + public void setDisabbutTxtClsDtl(String newDisabbutTxtClsDtl) { + this.disabbutTxtClsDtl = newDisabbutTxtClsDtl; + } + + public String getDisabbutTxtClsHdr() { + return this.disabbutTxtClsHdr; + } + + public void setDisabbutTxtClsHdr(String newDisabbutTxtClsHdr) { + this.disabbutTxtClsHdr = newDisabbutTxtClsHdr; + } + + public String getDisabbutTxtEmpNum() { + return this.disabbutTxtEmpNum; + } + + public void setDisabbutTxtEmpNum(String newDisabbutTxtEmpNum) { + this.disabbutTxtEmpNum = newDisabbutTxtEmpNum; + } + + public String getDisabbutTxtSiteCode() { + return this.disabbutTxtSiteCode; + } + + public void setDisabbutTxtSiteCode(String newDisabbutTxtSiteCode) { + this.disabbutTxtSiteCode = newDisabbutTxtSiteCode; + } + + public String getDisabbutTxtWrkGrpCode() { + return this.disabbutTxtWrkGrpCode; + } + + public void setDisabbutTxtWrkGrpCode(String newDisabbutTxtWrkGrpCode) { + this.disabbutTxtWrkGrpCode = newDisabbutTxtWrkGrpCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttInForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttInForm.java new file mode 100644 index 0000000..1b08fff --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttInForm.java @@ -0,0 +1,296 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttEmpAttInForm extends HrmBaseForm { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String date; + + String shiftCode; + + String timeIn; + + String attndStatus; + + String reasons; + + String empId; + + String shiftId; + + String shiftTime; + + String disabemployeeNo; + + String disabfirstName; + + String disabmiddleName; + + String disablastName; + + String disabdate; + + String disabshiftCode; + + String disabtimeIn; + + String disabtimeOut; + + String disabattndStatus; + + String disabreasons; + + String butShiftCode; + + String butPeriodStartDt; + + String butEmpName; + + String disabbutShiftCode; + + String disabbutPeriodStartDt; + + String disabbutEmpName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getTimeIn() { + return this.timeIn; + } + + public void setTimeIn(String newTimeIn) { + this.timeIn = newTimeIn; + } + + public String getAttndStatus() { + return this.attndStatus; + } + + public void setAttndStatus(String newAttndStatus) { + this.attndStatus = newAttndStatus; + } + + public String getReasons() { + return this.reasons; + } + + public void setReasons(String newReasons) { + this.reasons = newReasons; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabfirstName() { + return this.disabfirstName; + } + + public void setDisabfirstName(String newDisabfirstName) { + this.disabfirstName = newDisabfirstName; + } + + public String getDisabmiddleName() { + return this.disabmiddleName; + } + + public void setDisabmiddleName(String newDisabmiddleName) { + this.disabmiddleName = newDisabmiddleName; + } + + public String getDisablastName() { + return this.disablastName; + } + + public void setDisablastName(String newDisablastName) { + this.disablastName = newDisablastName; + } + + public String getDisabdate() { + return this.disabdate; + } + + public void setDisabdate(String newDisabdate) { + this.disabdate = newDisabdate; + } + + public String getDisabshiftCode() { + return this.disabshiftCode; + } + + public void setDisabshiftCode(String newDisabshiftCode) { + this.disabshiftCode = newDisabshiftCode; + } + + public String getDisabtimeIn() { + return this.disabtimeIn; + } + + public void setDisabtimeIn(String newDisabtimeIn) { + this.disabtimeIn = newDisabtimeIn; + } + + public String getDisabtimeOut() { + return this.disabtimeOut; + } + + public void setDisabtimeOut(String newDisabtimeOut) { + this.disabtimeOut = newDisabtimeOut; + } + + public String getDisabattndStatus() { + return this.disabattndStatus; + } + + public void setDisabattndStatus(String newDisabattndStatus) { + this.disabattndStatus = newDisabattndStatus; + } + + public String getDisabreasons() { + return this.disabreasons; + } + + public void setDisabreasons(String newDisabreasons) { + this.disabreasons = newDisabreasons; + } + + public String getShiftTime() { + return this.shiftTime; + } + + public void setShiftTime(String newShiftTime) { + this.shiftTime = newShiftTime; + } + + public String getButShiftCode() { + return this.butShiftCode; + } + + public void setButShiftCode(String newButShiftCode) { + this.butShiftCode = newButShiftCode; + } + + public String getDisabbutShiftCode() { + return this.disabbutShiftCode; + } + + public void setDisabbutShiftCode(String newDisabbutShiftCode) { + this.disabbutShiftCode = newDisabbutShiftCode; + } + + public String getButPeriodStartDt() { + return this.butPeriodStartDt; + } + + public void setButPeriodStartDt(String newButPeriodStartDt) { + this.butPeriodStartDt = newButPeriodStartDt; + } + + public String getDisabbutPeriodStartDt() { + return this.disabbutPeriodStartDt; + } + + public void setDisabbutPeriodStartDt(String newDisabbutPeriodStartDt) { + this.disabbutPeriodStartDt = newDisabbutPeriodStartDt; + } + + public String getButEmpName() { + return this.butEmpName; + } + + public void setButEmpName(String newButEmpName) { + this.butEmpName = newButEmpName; + } + + public String getDisabbutEmpName() { + return this.disabbutEmpName; + } + + public void setDisabbutEmpName(String newDisabbutEmpName) { + this.disabbutEmpName = newDisabbutEmpName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttOutForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttOutForm.java new file mode 100644 index 0000000..a1dd600 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttOutForm.java @@ -0,0 +1,306 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttEmpAttOutForm extends HrmBaseForm { + String employeeNo; + + String firstName; + + String middleName; + + String lastName; + + String date; + + String outDate; + + String shiftCode; + + String timeIn; + + String timeOut; + + String attndStatus; + + String empId; + + String shiftId; + + String shiftTime; + + String disabemployeeNo; + + String disabfirstName; + + String disabmiddleName; + + String disablastName; + + String disabdate; + + String disabshiftCode; + + String disabtimeIn; + + String disabtimeOut; + + String disabattndStatus; + + String disaboutDate; + + String butShiftCode; + + String butPeriodStartDt; + + String butEmpName; + + String disabbutShiftCode; + + String disabbutPeriodStartDt; + + String disabbutEmpName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getTimeIn() { + return this.timeIn; + } + + public void setTimeIn(String newTimeIn) { + this.timeIn = newTimeIn; + } + + public String getAttndStatus() { + return this.attndStatus; + } + + public void setAttndStatus(String newAttndStatus) { + this.attndStatus = newAttndStatus; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getShiftId() { + return this.shiftId; + } + + public void setShiftId(String newShiftId) { + this.shiftId = newShiftId; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabfirstName() { + return this.disabfirstName; + } + + public void setDisabfirstName(String newDisabfirstName) { + this.disabfirstName = newDisabfirstName; + } + + public String getDisabmiddleName() { + return this.disabmiddleName; + } + + public void setDisabmiddleName(String newDisabmiddleName) { + this.disabmiddleName = newDisabmiddleName; + } + + public String getDisablastName() { + return this.disablastName; + } + + public void setDisablastName(String newDisablastName) { + this.disablastName = newDisablastName; + } + + public String getDisabdate() { + return this.disabdate; + } + + public void setDisabdate(String newDisabdate) { + this.disabdate = newDisabdate; + } + + public String getDisabshiftCode() { + return this.disabshiftCode; + } + + public void setDisabshiftCode(String newDisabshiftCode) { + this.disabshiftCode = newDisabshiftCode; + } + + public String getDisabtimeIn() { + return this.disabtimeIn; + } + + public void setDisabtimeIn(String newDisabtimeIn) { + this.disabtimeIn = newDisabtimeIn; + } + + public String getDisabtimeOut() { + return this.disabtimeOut; + } + + public void setDisabtimeOut(String newDisabtimeOut) { + this.disabtimeOut = newDisabtimeOut; + } + + public String getDisabattndStatus() { + return this.disabattndStatus; + } + + public void setDisabattndStatus(String newDisabattndStatus) { + this.disabattndStatus = newDisabattndStatus; + } + + public String getShiftTime() { + return this.shiftTime; + } + + public void setShiftTime(String newShiftTime) { + this.shiftTime = newShiftTime; + } + + public String getButShiftCode() { + return this.butShiftCode; + } + + public void setButShiftCode(String newButShiftCode) { + this.butShiftCode = newButShiftCode; + } + + public String getDisabbutShiftCode() { + return this.disabbutShiftCode; + } + + public void setDisabbutShiftCode(String newDisabbutShiftCode) { + this.disabbutShiftCode = newDisabbutShiftCode; + } + + public String getButPeriodStartDt() { + return this.butPeriodStartDt; + } + + public void setButPeriodStartDt(String newButPeriodStartDt) { + this.butPeriodStartDt = newButPeriodStartDt; + } + + public String getDisabbutPeriodStartDt() { + return this.disabbutPeriodStartDt; + } + + public void setDisabbutPeriodStartDt(String newDisabbutPeriodStartDt) { + this.disabbutPeriodStartDt = newDisabbutPeriodStartDt; + } + + public String getButEmpName() { + return this.butEmpName; + } + + public void setButEmpName(String newButEmpName) { + this.butEmpName = newButEmpName; + } + + public String getDisabbutEmpName() { + return this.disabbutEmpName; + } + + public void setDisabbutEmpName(String newDisabbutEmpName) { + this.disabbutEmpName = newDisabbutEmpName; + } + + public String getTimeOut() { + return this.timeOut; + } + + public void setTimeOut(String newTimeOut) { + this.timeOut = newTimeOut; + } + + public String getOutDate() { + return this.outDate; + } + + public void setOutDate(String newOutDate) { + this.outDate = newOutDate; + } + + public String getDisaboutDate() { + return this.disaboutDate; + } + + public void setDisaboutDate(String newDisaboutDate) { + this.disaboutDate = newDisaboutDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttQueryForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttQueryForm.java new file mode 100644 index 0000000..9fd0ecd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpAttQueryForm.java @@ -0,0 +1,197 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttEmpAttQueryForm extends HrmBaseForm { + String periodStartDt; + + String[] txtShiftCode; + + String[] txtChkInDate; + + String[] txtCheckInTime; + + String[] txtChkOutDate; + + String[] txtCheckOutTime; + + String[] txtAttStatus; + + String[] txtReason; + + String butPeriodStartDt; + + String disabbutPeriodStartDt; + + ArrayList arylstAttndDtls; + + private String[] selectAll; + + private String[] txtEmpId; + + private String[] txtShiftMstId; + + private String[] txtEmpNo; + + private String[] txtEmpName; + + private String[] txtCheckInTimeMin; + + private String[] txtCheckOutTimeMin; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getPeriodStartDt() { + return this.periodStartDt; + } + + public void setPeriodStartDt(String newPeriodStartDt) { + this.periodStartDt = newPeriodStartDt; + } + + public String[] getTxtShiftCode() { + return this.txtShiftCode; + } + + public void setTxtShiftCode(String[] newTxtShiftCode) { + this.txtShiftCode = newTxtShiftCode; + } + + public String[] getTxtChkInDate() { + return this.txtChkInDate; + } + + public void setTxtChkInDate(String[] newTxtChkInDate) { + this.txtChkInDate = newTxtChkInDate; + } + + public String[] getTxtCheckInTime() { + return this.txtCheckInTime; + } + + public void setTxtCheckInTime(String[] newTxtCheckInTime) { + this.txtCheckInTime = newTxtCheckInTime; + } + + public String[] getTxtChkOutDate() { + return this.txtChkOutDate; + } + + public void setTxtChkOutDate(String[] newTxtChkOutDate) { + this.txtChkOutDate = newTxtChkOutDate; + } + + public String[] getTxtCheckOutTime() { + return this.txtCheckOutTime; + } + + public void setTxtCheckOutTime(String[] newTxtCheckOutTime) { + this.txtCheckOutTime = newTxtCheckOutTime; + } + + public String[] getTxtAttStatus() { + return this.txtAttStatus; + } + + public void setTxtAttStatus(String[] newTxtAttStatus) { + this.txtAttStatus = newTxtAttStatus; + } + + public String[] getTxtReason() { + return this.txtReason; + } + + public void setTxtReason(String[] newTxtReason) { + this.txtReason = newTxtReason; + } + + public String getButPeriodStartDt() { + return this.butPeriodStartDt; + } + + public void setButPeriodStartDt(String newButPeriodStartDt) { + this.butPeriodStartDt = newButPeriodStartDt; + } + + public String getDisabbutPeriodStartDt() { + return this.disabbutPeriodStartDt; + } + + public void setDisabbutPeriodStartDt(String newDisabbutPeriodStartDt) { + this.disabbutPeriodStartDt = newDisabbutPeriodStartDt; + } + + public ArrayList getArylstAttndDtls() { + return this.arylstAttndDtls; + } + + public void setArylstAttndDtls(ArrayList newArylstAttndDtls) { + this.arylstAttndDtls = newArylstAttndDtls; + } + + public String[] getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String[] newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String[] newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String[] getTxtShiftMstId() { + return this.txtShiftMstId; + } + + public void setTxtShiftMstId(String[] newTxtShiftMstId) { + this.txtShiftMstId = newTxtShiftMstId; + } + + public String[] getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String[] newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String[] getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String[] newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String[] getTxtCheckInTimeMin() { + return this.txtCheckInTimeMin; + } + + public void setTxtCheckInTimeMin(String[] newTxtCheckInTimeMin) { + this.txtCheckInTimeMin = newTxtCheckInTimeMin; + } + + public String[] getTxtCheckOutTimeMin() { + return this.txtCheckOutTimeMin; + } + + public void setTxtCheckOutTimeMin(String[] newTxtCheckOutTimeMin) { + this.txtCheckOutTimeMin = newTxtCheckOutTimeMin; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpDayOffForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpDayOffForm.java new file mode 100644 index 0000000..e765e53 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpDayOffForm.java @@ -0,0 +1,367 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttEmpDayOffForm extends HrmBaseForm { + String employeeNo; + + String employeeName; + + String periodStartDate; + + String periodEndDate; + + String disabemployeeName; + + String disabemployeeNo; + + String disabperiodEndDate; + + String disabperiodStartDate; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String[] txtStartWeekDate; + + private String butStartWeekDate; + + private String disabbutStartWeekDate; + + private String[] txtEndWeekDate; + + private String disabtxtEndWeekDate; + + private String[] txtFirstRestDay; + + private String[] txtSecondRestDay; + + private String[] txtHalfDay1; + + private String[] txtHalfDay2; + + private String[] txtRestWeek1; + + private String[] txtRestWeekDay1; + + private String[] txtRestWeek2; + + private String[] txtRestWeekDay2; + + private ArrayList arylstAttEmpDayOff = new ArrayList(); + + private String empId; + + private String butEndWeekDate; + + private String disabbutEndWeekDate; + + private String butPrdStDt; + + private String disabbutPrdStDt; + + private String butPrdEndDt; + + private String disabbutPrdEndDt; + + private String butPeriodEndDate; + + private String disabbutPeriodEndDate; + + private String butPeriodStartDate; + + private String disabbutPeriodStartDate; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabperiodEndDate() { + return this.disabperiodEndDate; + } + + public void setDisabperiodEndDate(String newDisabperiodEndDate) { + this.disabperiodEndDate = newDisabperiodEndDate; + } + + public String getDisabperiodStartDate() { + return this.disabperiodStartDate; + } + + public void setDisabperiodStartDate(String newDisabperiodStartDate) { + this.disabperiodStartDate = newDisabperiodStartDate; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String[] getTxtStartWeekDate() { + return this.txtStartWeekDate; + } + + public void setTxtStartWeekDate(String[] newTxtStartWeekDate) { + this.txtStartWeekDate = newTxtStartWeekDate; + } + + public String getButStartWeekDate() { + return this.butStartWeekDate; + } + + public void setButStartWeekDate(String newButStartWeekDate) { + this.butStartWeekDate = newButStartWeekDate; + } + + public String getDisabbutStartWeekDate() { + return this.disabbutStartWeekDate; + } + + public void setDisabbutStartWeekDate(String newDisabbutStartWeekDate) { + this.disabbutStartWeekDate = newDisabbutStartWeekDate; + } + + public String[] getTxtEndWeekDate() { + return this.txtEndWeekDate; + } + + public void setTxtEndWeekDate(String[] newTxtEndWeekDate) { + this.txtEndWeekDate = newTxtEndWeekDate; + } + + public String getDisabtxtEndWeekDate() { + return this.disabtxtEndWeekDate; + } + + public void setDisabtxtEndWeekDate(String newDisabtxtEndWeekDate) { + this.disabtxtEndWeekDate = newDisabtxtEndWeekDate; + } + + public String[] getTxtFirstRestDay() { + return this.txtFirstRestDay; + } + + public void setTxtFirstRestDay(String[] newTxtFirstRestDay) { + this.txtFirstRestDay = newTxtFirstRestDay; + } + + public String[] getTxtSecondRestDay() { + return this.txtSecondRestDay; + } + + public void setTxtSecondRestDay(String[] newTxtSecondRestDay) { + this.txtSecondRestDay = newTxtSecondRestDay; + } + + public String[] getTxtHalfDay1() { + return this.txtHalfDay1; + } + + public void setTxtHalfDay1(String[] newTxtHalfDay1) { + this.txtHalfDay1 = newTxtHalfDay1; + } + + public String[] getTxtHalfDay2() { + return this.txtHalfDay2; + } + + public void setTxtHalfDay2(String[] newTxtHalfDay2) { + this.txtHalfDay2 = newTxtHalfDay2; + } + + public String[] getTxtRestWeek1() { + return this.txtRestWeek1; + } + + public void setTxtRestWeek1(String[] newTxtRestWeek1) { + this.txtRestWeek1 = newTxtRestWeek1; + } + + public String[] getTxtRestWeekDay1() { + return this.txtRestWeekDay1; + } + + public void setTxtRestWeekDay1(String[] newTxtRestWeekDay1) { + this.txtRestWeekDay1 = newTxtRestWeekDay1; + } + + public String[] getTxtRestWeek2() { + return this.txtRestWeek2; + } + + public void setTxtRestWeek2(String[] newTxtRestWeek2) { + this.txtRestWeek2 = newTxtRestWeek2; + } + + public String[] getTxtRestWeekDay2() { + return this.txtRestWeekDay2; + } + + public void setTxtRestWeekDay2(String[] newTxtRestWeekDay2) { + this.txtRestWeekDay2 = newTxtRestWeekDay2; + } + + public ArrayList getArylstAttEmpDayOff() { + return this.arylstAttEmpDayOff; + } + + public void setArylstAttEmpDayOff(ArrayList newArylstAttEmpDayOff) { + this.arylstAttEmpDayOff = newArylstAttEmpDayOff; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getButEndWeekDate() { + return this.butEndWeekDate; + } + + public void setButEndWeekDate(String newButEndWeekDate) { + this.butEndWeekDate = newButEndWeekDate; + } + + public String getDisabbutEndWeekDate() { + return this.disabbutEndWeekDate; + } + + public void setDisabbutEndWeekDate(String newDisabbutEndWeekDate) { + this.disabbutEndWeekDate = newDisabbutEndWeekDate; + } + + public String getButPrdStDt() { + return this.butPrdStDt; + } + + public void setButPrdStDt(String newButPrdStDt) { + this.butPrdStDt = newButPrdStDt; + } + + public String getDisabbutPrdStDt() { + return this.disabbutPrdStDt; + } + + public void setDisabbutPrdStDt(String newDisabbutPrdStDt) { + this.disabbutPrdStDt = newDisabbutPrdStDt; + } + + public String getButPrdEndDt() { + return this.butPrdEndDt; + } + + public void setButPrdEndDt(String newButPrdEndDt) { + this.butPrdEndDt = newButPrdEndDt; + } + + public String getDisabbutPrdEndDt() { + return this.disabbutPrdEndDt; + } + + public void setDisabbutPrdEndDt(String newDisabbutPrdEndDt) { + this.disabbutPrdEndDt = newDisabbutPrdEndDt; + } + + public String getButPeriodEndDate() { + return this.butPeriodEndDate; + } + + public void setButPeriodEndDate(String newButPeriodEndDate) { + this.butPeriodEndDate = newButPeriodEndDate; + } + + public String getDisabbutPeriodEndDate() { + return this.disabbutPeriodEndDate; + } + + public void setDisabbutPeriodEndDate(String newDisabbutPeriodEndDate) { + this.disabbutPeriodEndDate = newDisabbutPeriodEndDate; + } + + public String getButPeriodStartDate() { + return this.butPeriodStartDate; + } + + public void setButPeriodStartDate(String newButPeriodStartDate) { + this.butPeriodStartDate = newButPeriodStartDate; + } + + public String getDisabbutPeriodStartDate() { + return this.disabbutPeriodStartDate; + } + + public void setDisabbutPeriodStartDate(String newDisabbutPeriodStartDate) { + this.disabbutPeriodStartDate = newDisabbutPeriodStartDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpShiftForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpShiftForm.java new file mode 100644 index 0000000..e7b6b43 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmpShiftForm.java @@ -0,0 +1,307 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttEmpShiftForm extends HrmBaseForm { + private String employeeNo; + + private String employeeName; + + private String startDate; + + private String endDate; + + private String disabemployeeNo; + + private String disabemployeeName; + + private String disabstartDate; + + private String disabendDate; + + private String[] shiftBeginDate; + + private String[] shiftEndDate; + + private String[] shiftCode; + + private String butshiftBeginDate; + + private String butshiftEndDate; + + private String butshiftCode; + + private String disabshiftBeginDate; + + private String disabshiftEndDate; + + private String disabshiftCode; + + private ArrayList arrHrmAttESD = new ArrayList(); + + private String butemployeeNo; + + String empNoId; + + String[] shiftId; + + String disabbutemployeeNo; + + String disabbutstartDate; + + String butendDate; + + String disabbutendDate; + + String butstartDate; + + String disabbutshiftCode; + + String disabbutshiftBeginDate; + + String disabbutshiftEndDate; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String[] getShiftBeginDate() { + return this.shiftBeginDate; + } + + public void setShiftBeginDate(String[] newShiftBeginDate) { + this.shiftBeginDate = newShiftBeginDate; + } + + public String[] getShiftEndDate() { + return this.shiftEndDate; + } + + public void setShiftEndDate(String[] newShiftEndDate) { + this.shiftEndDate = newShiftEndDate; + } + + public String[] getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String[] newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getButshiftBeginDate() { + return this.butshiftBeginDate; + } + + public void setbutshiftBeginDate(String newbutshiftBeginDate) { + this.butshiftBeginDate = newbutshiftBeginDate; + } + + public String getbutshiftEndDate() { + return this.butshiftEndDate; + } + + public void setbutshiftEndDate(String newbutshiftEndDate) { + this.butshiftEndDate = newbutshiftEndDate; + } + + public String getButshiftCode() { + return this.butshiftCode; + } + + public void setButshiftCode(String newButshiftCode) { + this.butshiftCode = newButshiftCode; + } + + public String getDisabshiftBeginDate() { + return this.disabshiftBeginDate; + } + + public void setDisabshiftBeginDate(String newDisabshiftBeginDate) { + this.disabshiftBeginDate = newDisabshiftBeginDate; + } + + public String getDisabshiftEndDate() { + return this.disabshiftEndDate; + } + + public void setDisabshiftEndDate(String newDisabshiftEndDate) { + this.disabshiftEndDate = newDisabshiftEndDate; + } + + public String getDisabshiftCode() { + return this.disabshiftCode; + } + + public void setDisabshiftCode(String newDisabshiftCode) { + this.disabshiftCode = newDisabshiftCode; + } + + public ArrayList getArrHrmAttESD() { + return this.arrHrmAttESD; + } + + public void setArrHrmAttESD(ArrayList newArrHrmAttESD) { + this.arrHrmAttESD = newArrHrmAttESD; + } + + public String getButemployeeNo() { + return this.butemployeeNo; + } + + public void setButemployeeNo(String newButemployeeNo) { + this.butemployeeNo = newButemployeeNo; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String[] getShiftId() { + return this.shiftId; + } + + public void setShiftId(String[] newShiftId) { + this.shiftId = newShiftId; + } + + public String getDisabbutemployeeNo() { + return this.disabbutemployeeNo; + } + + public void setDisabbutemployeeNo(String newDisabbutemployeeNo) { + this.disabbutemployeeNo = newDisabbutemployeeNo; + } + + public String getDisabbutstartDate() { + return this.disabbutstartDate; + } + + public void setDisabbutstartDate(String newDisabbutstartDate) { + this.disabbutstartDate = newDisabbutstartDate; + } + + public String getButendDate() { + return this.butendDate; + } + + public void setButendDate(String newButendDate) { + this.butendDate = newButendDate; + } + + public String getDisabbutendDate() { + return this.disabbutendDate; + } + + public void setDisabbutendDate(String newDisabbutendDate) { + this.disabbutendDate = newDisabbutendDate; + } + + public String getButstartDate() { + return this.butstartDate; + } + + public void setButstartDate(String newButstartDate) { + this.butstartDate = newButstartDate; + } + + public String getDisabbutshiftCode() { + return this.disabbutshiftCode; + } + + public void setDisabbutshiftCode(String newDisabbutshiftCode) { + this.disabbutshiftCode = newDisabbutshiftCode; + } + + public String getDisabbutshiftBeginDate() { + return this.disabbutshiftBeginDate; + } + + public void setDisabbutshiftBeginDate(String newDisabbutshiftBeginDate) { + this.disabbutshiftBeginDate = newDisabbutshiftBeginDate; + } + + public String getDisabbutshiftEndDate() { + return this.disabbutshiftEndDate; + } + + public void setDisabbutshiftEndDate(String newDisabbutshiftEndDate) { + this.disabbutshiftEndDate = newDisabbutshiftEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftDetailForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftDetailForm.java new file mode 100644 index 0000000..fec462d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftDetailForm.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttEmployeeShiftDetailForm extends HrmBaseForm { + String employeeNo; + + String employeeName; + + String disabemployeeNo; + + String disabemployeeName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftRosterForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftRosterForm.java new file mode 100644 index 0000000..40c9074 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttEmployeeShiftRosterForm.java @@ -0,0 +1,287 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttEmployeeShiftRosterForm extends HrmBaseForm { + String workGroupCode; + + String employeeNo; + + String employeeName; + + String periodStartDate; + + String periodEndDate; + + String disabemployeeName; + + String disabemployeeNo; + + String disabperiodStartDate; + + String disabperiodEndDate; + + String disabworkGroupCode; + + private String[] txtWorkDate = null; + + private String[] txtAvailability = null; + + private String[] txtShiftCode = null; + + private String[] txtMandatoryHoliady = null; + + private String[] txtEmpNo = null; + + private String[] txtShiftCodeId = null; + + private ArrayList arylstEmpShiftRosterDtl = new ArrayList(); + + private String txtSiteId; + + private String butWorkGrpCode; + + private String disabbutWorkGrpCode; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String butSiteId; + + private String disabbutSiteId; + + private String hdnWorkId; + + private String hdnSiteId; + + private String hdnEmpId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getPeriodStartDate() { + return this.periodStartDate; + } + + public void setPeriodStartDate(String newPeriodStartDate) { + this.periodStartDate = newPeriodStartDate; + } + + public String getPeriodEndDate() { + return this.periodEndDate; + } + + public void setPeriodEndDate(String newPeriodEndDate) { + this.periodEndDate = newPeriodEndDate; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabperiodStartDate() { + return this.disabperiodStartDate; + } + + public void setDisabperiodStartDate(String newDisabperiodStartDate) { + this.disabperiodStartDate = newDisabperiodStartDate; + } + + public String getDisabperiodEndDate() { + return this.disabperiodEndDate; + } + + public void setDisabperiodEndDate(String newDisabperiodEndDate) { + this.disabperiodEndDate = newDisabperiodEndDate; + } + + public String getDisabworkGroupCode() { + return this.disabworkGroupCode; + } + + public void setDisabworkGroupCode(String newDisabworkGroupCode) { + this.disabworkGroupCode = newDisabworkGroupCode; + } + + public String[] getTxtWorkDate() { + return this.txtWorkDate; + } + + public void setTxtWorkDate(String[] newTxtWorkDate) { + this.txtWorkDate = newTxtWorkDate; + } + + public String[] getTxtAvailability() { + return this.txtAvailability; + } + + public void setTxtAvailability(String[] newTxtAvailability) { + this.txtAvailability = newTxtAvailability; + } + + public String[] getTxtShiftCode() { + return this.txtShiftCode; + } + + public void setTxtShiftCode(String[] newTxtShiftCode) { + this.txtShiftCode = newTxtShiftCode; + } + + public String[] getTxtMandatoryHoliady() { + return this.txtMandatoryHoliady; + } + + public void setTxtMandatoryHoliady(String[] newTxtMandatoryHoliady) { + this.txtMandatoryHoliady = newTxtMandatoryHoliady; + } + + public String[] getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String[] newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String[] getTxtShiftCodeId() { + return this.txtShiftCodeId; + } + + public void setTxtShiftCodeId(String[] newTxtShiftCodeId) { + this.txtShiftCodeId = newTxtShiftCodeId; + } + + public ArrayList getArylstEmpShiftRosterDtl() { + return this.arylstEmpShiftRosterDtl; + } + + public void setArylstEmpShiftRosterDtl(ArrayList newArylstEmpShiftRosterDtl) { + this.arylstEmpShiftRosterDtl = newArylstEmpShiftRosterDtl; + } + + public String getTxtSiteId() { + return this.txtSiteId; + } + + public void setTxtSiteId(String newTxtSiteId) { + this.txtSiteId = newTxtSiteId; + } + + public String getButWorkGrpCode() { + return this.butWorkGrpCode; + } + + public void setButWorkGrpCode(String newButWorkGrpCode) { + this.butWorkGrpCode = newButWorkGrpCode; + } + + public String getDisabbutWorkGrpCode() { + return this.disabbutWorkGrpCode; + } + + public void setDisabbutWorkGrpCode(String newDisabbutWorkGrpCode) { + this.disabbutWorkGrpCode = newDisabbutWorkGrpCode; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getButSiteId() { + return this.butSiteId; + } + + public void setButSiteId(String newButSiteId) { + this.butSiteId = newButSiteId; + } + + public String getDisabbutSiteId() { + return this.disabbutSiteId; + } + + public void setDisabbutSiteId(String newDisabbutSiteId) { + this.disabbutSiteId = newDisabbutSiteId; + } + + public String getHdnWorkId() { + return this.hdnWorkId; + } + + public void setHdnWorkId(String newHdnWorkId) { + this.hdnWorkId = newHdnWorkId; + } + + public String getHdnSiteId() { + return this.hdnSiteId; + } + + public void setHdnSiteId(String newHdnSiteId) { + this.hdnSiteId = newHdnSiteId; + } + + public String getHdnEmpId() { + return this.hdnEmpId; + } + + public void setHdnEmpId(String newHdnEmpId) { + this.hdnEmpId = newHdnEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftMasterForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftMasterForm.java new file mode 100644 index 0000000..4742910 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftMasterForm.java @@ -0,0 +1,246 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttShiftMasterForm extends HrmBaseForm { + String shiftCode; + + String shiftDescription; + + String startTime; + + String endTime; + + String relaxationTime; + + String startTolerenceTime; + + String endTolerenceTime; + + String overlapTime; + + String disabshiftCode; + + String disabshiftDescription; + + String disabstartTime; + + String disabendTime; + + String disabrelaxationTime; + + String disabstartTolerenceTime; + + String disabendTolerenceTime; + + String disaboverlapTime; + + private String txtDayOverlapFlag; + + private String butShiftCode; + + private String disabbutShiftCode; + + String disabstartTolTime; + + String disabendTolTime; + + String disaboverlapDayFlag; + + String disabtxtDayOverlapFlag; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getShiftDescription() { + return this.shiftDescription; + } + + public void setShiftDescription(String newShiftDescription) { + this.shiftDescription = newShiftDescription; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String newStartTime) { + this.startTime = newStartTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String newEndTime) { + this.endTime = newEndTime; + } + + public String getRelaxationTime() { + return this.relaxationTime; + } + + public void setRelaxationTime(String newRelaxationTime) { + this.relaxationTime = newRelaxationTime; + } + + public String getStartTolerenceTime() { + return this.startTolerenceTime; + } + + public void setStartTolerenceTime(String newStartTolerenceTime) { + this.startTolerenceTime = newStartTolerenceTime; + } + + public String getEndTolerenceTime() { + return this.endTolerenceTime; + } + + public void setEndTolerenceTime(String newEndTolerenceTime) { + this.endTolerenceTime = newEndTolerenceTime; + } + + public String getOverlapTime() { + return this.overlapTime; + } + + public void setOverlapTime(String newOverlapTime) { + this.overlapTime = newOverlapTime; + } + + public String getDisabshiftCode() { + return this.disabshiftCode; + } + + public void setDisabshiftCode(String newDisabshiftCode) { + this.disabshiftCode = newDisabshiftCode; + } + + public String getDisabshiftDescription() { + return this.disabshiftDescription; + } + + public void setDisabshiftDescription(String newDisabshiftDescription) { + this.disabshiftDescription = newDisabshiftDescription; + } + + public String getDisabstartTime() { + return this.disabstartTime; + } + + public void setDisabstartTime(String newDisabstartTime) { + this.disabstartTime = newDisabstartTime; + } + + public String getDisabendTime() { + return this.disabendTime; + } + + public void setDisabendTime(String newDisabendTime) { + this.disabendTime = newDisabendTime; + } + + public String getDisabrelaxationTime() { + return this.disabrelaxationTime; + } + + public void setDisabrelaxationTime(String newDisabrelaxationTime) { + this.disabrelaxationTime = newDisabrelaxationTime; + } + + public String getDisabstartTolerenceTime() { + return this.disabstartTolerenceTime; + } + + public void setDisabstartTolerenceTime(String newDisabstartTolerenceTime) { + this.disabstartTolerenceTime = newDisabstartTolerenceTime; + } + + public String getDisabendTolerenceTime() { + return this.disabendTolerenceTime; + } + + public void setDisabendTolerenceTime(String newDisabendTolerenceTime) { + this.disabendTolerenceTime = newDisabendTolerenceTime; + } + + public String getDisaboverlapTime() { + return this.disaboverlapTime; + } + + public void setDisaboverlapTime(String newDisaboverlapTime) { + this.disaboverlapTime = newDisaboverlapTime; + } + + public String getTxtDayOverlapFlag() { + return this.txtDayOverlapFlag; + } + + public void setTxtDayOverlapFlag(String newTxtDayOverlapFlag) { + this.txtDayOverlapFlag = newTxtDayOverlapFlag; + } + + public String getButShiftCode() { + return this.butShiftCode; + } + + public void setButShiftCode(String newButShiftCode) { + this.butShiftCode = newButShiftCode; + } + + public String getDisabbutShiftCode() { + return this.disabbutShiftCode; + } + + public void setDisabbutShiftCode(String newDisabbutShiftCode) { + this.disabbutShiftCode = newDisabbutShiftCode; + } + + public String getDisabstartTolTime() { + return this.disabstartTolTime; + } + + public void setDisabstartTolTime(String newDisabstartTolTime) { + this.disabstartTolTime = newDisabstartTolTime; + } + + public String getDisabendTolTime() { + return this.disabendTolTime; + } + + public void setDisabendTolTime(String newDisabendTolTime) { + this.disabendTolTime = newDisabendTolTime; + } + + public String getDisaboverlapDayFlag() { + return this.disaboverlapDayFlag; + } + + public void setDisaboverlapDayFlag(String newDisaboverlapDayFlag) { + this.disaboverlapDayFlag = newDisaboverlapDayFlag; + } + + public String getDisabtxtDayOverlapFlag() { + return this.disabtxtDayOverlapFlag; + } + + public void setDisabtxtDayOverlapFlag(String newDisabtxtDayOverlapFlag) { + this.disabtxtDayOverlapFlag = newDisabtxtDayOverlapFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftRosterGenForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftRosterGenForm.java new file mode 100644 index 0000000..c032683 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttShiftRosterGenForm.java @@ -0,0 +1,196 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttShiftRosterGenForm extends HrmBaseForm { + private String site; + + private String fromDate; + + private String disabfromDate; + + private String toDate; + + private String disabtoDate; + + private String disabsite; + + private String butsite; + + private String butfromDate; + + private String buttoDate; + + private String txtDepartmentName; + + private String disabtxtDepartmentName; + + private String siteId; + + private String workGroupId; + + private String workGroupCode; + + private String butWrkGrpCode; + + private String butSiteCode; + + private String disabbutWrkGrpCode; + + private String disabbutSiteCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getDisabfromDate() { + return this.disabfromDate; + } + + public void setDisabfromDate(String newDisabfromDate) { + this.disabfromDate = newDisabfromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getDisabtoDate() { + return this.disabtoDate; + } + + public void setDisabtoDate(String newDisabtoDate) { + this.disabtoDate = newDisabtoDate; + } + + public String getDisabsite() { + return this.disabsite; + } + + public void setDisabsite(String newDisabsite) { + this.disabsite = newDisabsite; + } + + public String getButsite() { + return this.butsite; + } + + public void setButsite(String newButsite) { + this.butsite = newButsite; + } + + public String getButfromDate() { + return this.butfromDate; + } + + public void setButfromDate(String newButfromDate) { + this.butfromDate = newButfromDate; + } + + public String getButtoDate() { + return this.buttoDate; + } + + public void setButtoDate(String newButtoDate) { + this.buttoDate = newButtoDate; + } + + public String getTxtDepartmentName() { + return this.txtDepartmentName; + } + + public void setTxtDepartmentName(String newTxtDepartmentName) { + this.txtDepartmentName = newTxtDepartmentName; + } + + public String getDisabtxtDepartmentName() { + return this.disabtxtDepartmentName; + } + + public void setDisabtxtDepartmentName(String newDisabtxtDepartmentName) { + this.disabtxtDepartmentName = newDisabtxtDepartmentName; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getButWrkGrpCode() { + return this.butWrkGrpCode; + } + + public void setButWrkGrpCode(String newButWrkGrpCode) { + this.butWrkGrpCode = newButWrkGrpCode; + } + + public String getButSiteCode() { + return this.butSiteCode; + } + + public void setButSiteCode(String newButSiteCode) { + this.butSiteCode = newButSiteCode; + } + + public String getDisabbutWrkGrpCode() { + return this.disabbutWrkGrpCode; + } + + public void setDisabbutWrkGrpCode(String newDisabbutWrkGrpCode) { + this.disabbutWrkGrpCode = newDisabbutWrkGrpCode; + } + + public String getDisabbutSiteCode() { + return this.disabbutSiteCode; + } + + public void setDisabbutSiteCode(String newDisabbutSiteCode) { + this.disabbutSiteCode = newDisabbutSiteCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupDayOffForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupDayOffForm.java new file mode 100644 index 0000000..4f29177 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupDayOffForm.java @@ -0,0 +1,307 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttWorkGroupDayOffForm extends HrmBaseForm { + String workGroupCode; + + String workGroupDescription; + + String siteCode; + + String siteDescription; + + String disabsiteCode; + + String disabsiteDescription; + + String disabworkGroupCode; + + String disabworkGroupDescription; + + private String[] txtStartWeekDate; + + private String butStartWeekDate; + + private String disabbutStartWeekDate; + + private String[] txtEndWeekDate; + + private String butEndWeekDate; + + private String disabbutEndWeekDate; + + private String[] txtFirstRestDay; + + private String[] txtSecondRestDay; + + private String[] txtHalfDay1; + + private String[] txtHalfDay2; + + private String[] txtRestWeek1; + + private String[] txtRestWeekDay1; + + private String[] txtRestWeek2; + + private String[] txtRestWeekDay2; + + private ArrayList arrAttWrkGrpDO = new ArrayList(); + + private String workGroupId; + + private String siteId; + + private String butWrkGrpCode; + + private String disabbutWrkGrpCode; + + private String butSiteCode; + + private String disabbutSiteCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } + + public String getDisabsiteCode() { + return this.disabsiteCode; + } + + public void setDisabsiteCode(String newDisabsiteCode) { + this.disabsiteCode = newDisabsiteCode; + } + + public String getDisabsiteDescription() { + return this.disabsiteDescription; + } + + public void setDisabsiteDescription(String newDisabsiteDescription) { + this.disabsiteDescription = newDisabsiteDescription; + } + + public String getDisabworkGroupCode() { + return this.disabworkGroupCode; + } + + public void setDisabworkGroupCode(String newDisabworkGroupCode) { + this.disabworkGroupCode = newDisabworkGroupCode; + } + + public String getDisabworkGroupDescription() { + return this.disabworkGroupDescription; + } + + public void setDisabworkGroupDescription(String newDisabworkGroupDescription) { + this.disabworkGroupDescription = newDisabworkGroupDescription; + } + + public String[] getTxtStartWeekDate() { + return this.txtStartWeekDate; + } + + public void setTxtStartWeekDate(String[] newTxtStartWeekDate) { + this.txtStartWeekDate = newTxtStartWeekDate; + } + + public String getButStartWeekDate() { + return this.butStartWeekDate; + } + + public void setButStartWeekDate(String newButStartWeekDate) { + this.butStartWeekDate = newButStartWeekDate; + } + + public String getDisabbutStartWeekDate() { + return this.disabbutStartWeekDate; + } + + public void setDisabbutStartWeekDate(String newDisabbutStartWeekDate) { + this.disabbutStartWeekDate = newDisabbutStartWeekDate; + } + + public String[] getTxtEndWeekDate() { + return this.txtEndWeekDate; + } + + public void setTxtEndWeekDate(String[] newTxtEndWeekDate) { + this.txtEndWeekDate = newTxtEndWeekDate; + } + + public String getButEndWeekDate() { + return this.butEndWeekDate; + } + + public void setButEndWeekDate(String newButEndWeekDate) { + this.butEndWeekDate = newButEndWeekDate; + } + + public String getDisabbutEndWeekDate() { + return this.disabbutEndWeekDate; + } + + public void setDisabbutEndWeekDate(String newDisabbutEndWeekDate) { + this.disabbutEndWeekDate = newDisabbutEndWeekDate; + } + + public String[] getTxtFirstRestDay() { + return this.txtFirstRestDay; + } + + public void setTxtFirstRestDay(String[] newTxtFirstRestDay) { + this.txtFirstRestDay = newTxtFirstRestDay; + } + + public String[] getTxtSecondRestDay() { + return this.txtSecondRestDay; + } + + public void setTxtSecondRestDay(String[] newTxtSecondRestDay) { + this.txtSecondRestDay = newTxtSecondRestDay; + } + + public String[] getTxtHalfDay1() { + return this.txtHalfDay1; + } + + public void setTxtHalfDay1(String[] newTxtHalfDay1) { + this.txtHalfDay1 = newTxtHalfDay1; + } + + public String[] getTxtHalfDay2() { + return this.txtHalfDay2; + } + + public void setTxtHalfDay2(String[] newTxtHalfDay2) { + this.txtHalfDay2 = newTxtHalfDay2; + } + + public String[] getTxtRestWeek1() { + return this.txtRestWeek1; + } + + public void setTxtRestWeek1(String[] newTxtRestWeek1) { + this.txtRestWeek1 = newTxtRestWeek1; + } + + public String[] getTxtRestWeekDay1() { + return this.txtRestWeekDay1; + } + + public void setTxtRestWeekDay1(String[] newTxtRestWeekDay1) { + this.txtRestWeekDay1 = newTxtRestWeekDay1; + } + + public String[] getTxtRestWeek2() { + return this.txtRestWeek2; + } + + public void setTxtRestWeek2(String[] newTxtRestWeek2) { + this.txtRestWeek2 = newTxtRestWeek2; + } + + public String[] getTxtRestWeekDay2() { + return this.txtRestWeekDay2; + } + + public void setTxtRestWeekDay2(String[] newTxtRestWeekDay2) { + this.txtRestWeekDay2 = newTxtRestWeekDay2; + } + + public ArrayList getArrAttWrkGrpDO() { + return this.arrAttWrkGrpDO; + } + + public void setArrAttWrkGrpDO(ArrayList newArrAttWrkGrpDO) { + this.arrAttWrkGrpDO = newArrAttWrkGrpDO; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getButWrkGrpCode() { + return this.butWrkGrpCode; + } + + public void setButWrkGrpCode(String newButWrkGrpCode) { + this.butWrkGrpCode = newButWrkGrpCode; + } + + public String getDisabbutWrkGrpCode() { + return this.disabbutWrkGrpCode; + } + + public void setDisabbutWrkGrpCode(String newDisabbutWrkGrpCode) { + this.disabbutWrkGrpCode = newDisabbutWrkGrpCode; + } + + public String getButSiteCode() { + return this.butSiteCode; + } + + public void setButSiteCode(String newButSiteCode) { + this.butSiteCode = newButSiteCode; + } + + public String getDisabbutSiteCode() { + return this.disabbutSiteCode; + } + + public void setDisabbutSiteCode(String newDisabbutSiteCode) { + this.disabbutSiteCode = newDisabbutSiteCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupShiftForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupShiftForm.java new file mode 100644 index 0000000..b972a47 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmAttWorkGroupShiftForm.java @@ -0,0 +1,397 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmAttWorkGroupShiftForm extends HrmBaseForm { + String workGroupDescription; + + String siteCode; + + String siteDescription; + + String disabsiteCode; + + String disabsiteDescription; + + String disabworkGroupDescription; + + String butWrkGrpCode; + + String disabbutWrkGrpCode; + + String butSiteCode; + + String disabbutSiteCode; + + String startDate; + + String disabstartDate; + + String endDate; + + String disabendDate; + + ArrayList arrHrmAttWrkGrpShift = new ArrayList(); + + String selectAll; + + String[] shiftBeginDate; + + String disabshiftBeginDate; + + String[] shiftEndDate; + + String disabshiftEndDate; + + String[] shiftCode; + + String disabshiftCode; + + String workGroupId; + + String siteId; + + String disabwrkGrpCode; + + String butshiftBeginDate; + + String disabbutshiftBeginDate; + + String butshiftEndDate; + + String disabbutshiftEndDate; + + String butstartDate; + + String disabbutstartDate; + + String butendDate; + + String disabbutendDate; + + String diasbbutstartDate; + + String[] shiftId; + + String disabbutshiftCode; + + String workGroupCode; + + String butshiftCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getWorkGroupDescription() { + return this.workGroupDescription; + } + + public void setWorkGroupDescription(String newWorkGroupDescription) { + this.workGroupDescription = newWorkGroupDescription; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getSiteDescription() { + return this.siteDescription; + } + + public void setSiteDescription(String newSiteDescription) { + this.siteDescription = newSiteDescription; + } + + public String getDisabsiteCode() { + return this.disabsiteCode; + } + + public void setDisabsiteCode(String newDisabsiteCode) { + this.disabsiteCode = newDisabsiteCode; + } + + public String getDisabsiteDescription() { + return this.disabsiteDescription; + } + + public void setDisabsiteDescription(String newDisabsiteDescription) { + this.disabsiteDescription = newDisabsiteDescription; + } + + public String getDisabworkGroupDescription() { + return this.disabworkGroupDescription; + } + + public void setDisabworkGroupDescription(String newDisabworkGroupDescription) { + this.disabworkGroupDescription = newDisabworkGroupDescription; + } + + public String getButWrkGrpCode() { + return this.butWrkGrpCode; + } + + public void setButWrkGrpCode(String newButWrkGrpCode) { + this.butWrkGrpCode = newButWrkGrpCode; + } + + public String getDisabbutWrkGrpCode() { + return this.disabbutWrkGrpCode; + } + + public void setDisabbutWrkGrpCode(String newDisabbutWrkGrpCode) { + this.disabbutWrkGrpCode = newDisabbutWrkGrpCode; + } + + public String getButSiteCode() { + return this.butSiteCode; + } + + public void setButSiteCode(String newButSiteCode) { + this.butSiteCode = newButSiteCode; + } + + public String getDisabbutSiteCode() { + return this.disabbutSiteCode; + } + + public void setDisabbutSiteCode(String newDisabbutSiteCode) { + this.disabbutSiteCode = newDisabbutSiteCode; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public ArrayList getArrHrmAttWrkGrpShift() { + return this.arrHrmAttWrkGrpShift; + } + + public void setArrHrmAttWrkGrpShift(ArrayList newArrHrmAttWrkGrpShift) { + this.arrHrmAttWrkGrpShift = newArrHrmAttWrkGrpShift; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getShiftBeginDate() { + return this.shiftBeginDate; + } + + public void setShiftBeginDate(String[] newShiftBeginDate) { + this.shiftBeginDate = newShiftBeginDate; + } + + public String getDisabshiftBeginDate() { + return this.disabshiftBeginDate; + } + + public void setDisabshiftBeginDate(String newDisabshiftBeginDate) { + this.disabshiftBeginDate = newDisabshiftBeginDate; + } + + public String[] getShiftEndDate() { + return this.shiftEndDate; + } + + public void setShiftEndDate(String[] newShiftEndDate) { + this.shiftEndDate = newShiftEndDate; + } + + public String getDisabshiftEndDate() { + return this.disabshiftEndDate; + } + + public void setDisabshiftEndDate(String newDisabshiftEndDate) { + this.disabshiftEndDate = newDisabshiftEndDate; + } + + public String[] getShiftCode() { + return this.shiftCode; + } + + public void setShiftCode(String[] newShiftCode) { + this.shiftCode = newShiftCode; + } + + public String getDisabshiftCode() { + return this.disabshiftCode; + } + + public void setDisabshiftCode(String newDisabshiftCode) { + this.disabshiftCode = newDisabshiftCode; + } + + public String getWorkGroupId() { + return this.workGroupId; + } + + public void setWorkGroupId(String newWorkGroupId) { + this.workGroupId = newWorkGroupId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getDisabwrkGrpCode() { + return this.disabwrkGrpCode; + } + + public void setDisabwrkGrpCode(String newDisabwrkGrpCode) { + this.disabwrkGrpCode = newDisabwrkGrpCode; + } + + public String getButshiftBeginDate() { + return this.butshiftBeginDate; + } + + public void setButshiftBeginDate(String newButshiftBeginDate) { + this.butshiftBeginDate = newButshiftBeginDate; + } + + public String getDisabbutshiftBeginDate() { + return this.disabbutshiftBeginDate; + } + + public void setDisabbutshiftBeginDate(String newDisabbutshiftBeginDate) { + this.disabbutshiftBeginDate = newDisabbutshiftBeginDate; + } + + public String getButshiftEndDate() { + return this.butshiftEndDate; + } + + public void setButshiftEndDate(String newButshiftEndDate) { + this.butshiftEndDate = newButshiftEndDate; + } + + public String getDisabbutshiftEndDate() { + return this.disabbutshiftEndDate; + } + + public void setDisabbutshiftEndDate(String newDisabbutshiftEndDate) { + this.disabbutshiftEndDate = newDisabbutshiftEndDate; + } + + public String getButstartDate() { + return this.butstartDate; + } + + public void setButstartDate(String newButstartDate) { + this.butstartDate = newButstartDate; + } + + public String getDisabbutstartDate() { + return this.disabbutstartDate; + } + + public void setDisabbutstartDate(String newDisabbutstartDate) { + this.disabbutstartDate = newDisabbutstartDate; + } + + public String getButendDate() { + return this.butendDate; + } + + public void setButendDate(String newButendDate) { + this.butendDate = newButendDate; + } + + public String getDisabbutendDate() { + return this.disabbutendDate; + } + + public void setDisabbutendDate(String newDisabbutendDate) { + this.disabbutendDate = newDisabbutendDate; + } + + public String getDiasbbutstartDate() { + return this.diasbbutstartDate; + } + + public void setDiasbbutstartDate(String newDiasbbutstartDate) { + this.diasbbutstartDate = newDiasbbutstartDate; + } + + public String[] getShiftId() { + return this.shiftId; + } + + public void setShiftId(String[] newShiftId) { + this.shiftId = newShiftId; + } + + public String getDisabbutshiftCode() { + return this.disabbutshiftCode; + } + + public void setDisabbutshiftCode(String newDisabbutshiftCode) { + this.disabbutshiftCode = newDisabbutshiftCode; + } + + public String getWorkGroupCode() { + return this.workGroupCode; + } + + public void setWorkGroupCode(String newWorkGroupCode) { + this.workGroupCode = newWorkGroupCode; + } + + public String getButshiftCode() { + return this.butshiftCode; + } + + public void setButshiftCode(String newButshiftCode) { + this.butshiftCode = newButshiftCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmBaseForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmBaseForm.java new file mode 100644 index 0000000..4ea29e5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmBaseForm.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.common.webtier.form.BaseForm; + +public class HrmBaseForm extends BaseForm { + private String txtDisplayFields; + + private String txtSearchFields; + + private String listRowClass; + + private String actionName; + + String addIncrValue; + + private String siteId; + + private String empId = ""; + + public String getTxtDisplayFields() { + return this.txtDisplayFields; + } + + public void setTxtDisplayFields(String newTxtDisplayFields) { + this.txtDisplayFields = newTxtDisplayFields; + } + + public String getTxtSearchFields() { + return this.txtSearchFields; + } + + public void setTxtSearchFields(String newTxtSearchFields) { + this.txtSearchFields = newTxtSearchFields; + } + + public String getListRowClass() { + if ("oddRow".equals(this.listRowClass)) { + this.listRowClass = "evenRow"; + } else { + this.listRowClass = "oddRow"; + } + return this.listRowClass; + } + + public String getActionName() { + return this.actionName; + } + + public void setActionName(String newActionName) { + this.actionName = newActionName; + } + + public String getAddIncrValue() { + return this.addIncrValue; + } + + public void setAddIncrValue(String newAddIncrValue) { + this.addIncrValue = newAddIncrValue; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmClaimMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmClaimMstForm.java new file mode 100644 index 0000000..9954f14 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmClaimMstForm.java @@ -0,0 +1,327 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmClaimMstForm extends HrmBaseForm { + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + ArrayList arylstHrmClaimMst = new ArrayList(); + + private String[] txtClaimDetailCode; + + private String[] txtMaxCalLimit; + + private String[] txtGreaterLesserFlag; + + private String[] txtMaxLimit; + + private String[] txtFlatAmount; + + private String[] txtEffectFromDate; + + private String[] txtEffectToDate; + + private String[] txtAppliedToAll; + + private String[] selectAll; + + private String claimCodeId; + + private String calendarId; + + private String payrollFlag; + + private String calendarName; + + private String docReqFlag; + + private String claimCode; + + private String butClaimCode; + + private String butCalendarCode; + + private String butTxtEffectFromDate; + + private String butTxtEffectToDate; + + private String disabbutClaimCode; + + private String disabbutCalendarCode; + + private String disabbutTxtEffectToDate; + + private String disabbutTxtEffectFromDate; + + private String disabclaimCode; + + private String disabclaimName; + + private String disabdocReqFlag; + + private String disabpayrollFlag; + + private String claimName; + + private String beginMonth; + + private String durationMonth; + + public ArrayList getArylstHrmClaimMst() { + return this.arylstHrmClaimMst; + } + + public void setArylstHrmClaimMst(ArrayList newArylstHrmClaimMst) { + this.arylstHrmClaimMst = newArylstHrmClaimMst; + } + + public String[] getTxtClaimDetailCode() { + return this.txtClaimDetailCode; + } + + public void setTxtClaimDetailCode(String[] newTxtClaimDetailCode) { + this.txtClaimDetailCode = newTxtClaimDetailCode; + } + + public String[] getTxtMaxCalLimit() { + return this.txtMaxCalLimit; + } + + public void setTxtMaxCalLimit(String[] newTxtMaxCalLimit) { + this.txtMaxCalLimit = newTxtMaxCalLimit; + } + + public String[] getTxtGreaterLesserFlag() { + return this.txtGreaterLesserFlag; + } + + public void setTxtGreaterLesserFlag(String[] newTxtGreaterLesserFlag) { + this.txtGreaterLesserFlag = newTxtGreaterLesserFlag; + } + + public String[] getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String[] newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String[] getTxtFlatAmount() { + return this.txtFlatAmount; + } + + public void setTxtFlatAmount(String[] newTxtFlatAmount) { + this.txtFlatAmount = newTxtFlatAmount; + } + + public String[] getTxtEffectFromDate() { + return this.txtEffectFromDate; + } + + public void setTxtEffectFromDate(String[] newTxtEffectFromDate) { + this.txtEffectFromDate = newTxtEffectFromDate; + } + + public String[] getTxtEffectToDate() { + return this.txtEffectToDate; + } + + public void setTxtEffectToDate(String[] newTxtEffectToDate) { + this.txtEffectToDate = newTxtEffectToDate; + } + + public String[] getTxtAppliedToAll() { + return this.txtAppliedToAll; + } + + public void setTxtAppliedToAll(String[] newTxtAppliedToAll) { + this.txtAppliedToAll = newTxtAppliedToAll; + } + + public String[] getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String[] newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getPayrollFlag() { + return this.payrollFlag; + } + + public void setPayrollFlag(String newPayrollFlag) { + this.payrollFlag = newPayrollFlag; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getDocReqFlag() { + return this.docReqFlag; + } + + public void setDocReqFlag(String newDocReqFlag) { + this.docReqFlag = newDocReqFlag; + } + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String newClaimCode) { + this.claimCode = newClaimCode; + } + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getButClaimCode() { + return this.butClaimCode; + } + + public void setButClaimCode(String newButClaimCode) { + this.butClaimCode = newButClaimCode; + } + + public String getButCalendarCode() { + return this.butCalendarCode; + } + + public void setButCalendarCode(String newButCalendarCode) { + this.butCalendarCode = newButCalendarCode; + } + + public String getButTxtEffectFromDate() { + return this.butTxtEffectFromDate; + } + + public void setButTxtEffectFromDate(String newButTxtEffectFromDate) { + this.butTxtEffectFromDate = newButTxtEffectFromDate; + } + + public String getButTxtEffectToDate() { + return this.butTxtEffectToDate; + } + + public void setButTxtEffectToDate(String newButTxtEffectToDate) { + this.butTxtEffectToDate = newButTxtEffectToDate; + } + + public String getDisabbutClaimCode() { + return this.disabbutClaimCode; + } + + public void setDisabbutClaimCode(String newDisabbutClaimCode) { + this.disabbutClaimCode = newDisabbutClaimCode; + } + + public String getDisabbutCalendarCode() { + return this.disabbutCalendarCode; + } + + public void setDisabbutCalendarCode(String newDisabbutCalendarCode) { + this.disabbutCalendarCode = newDisabbutCalendarCode; + } + + public String getDisabbutTxtEffectToDate() { + return this.disabbutTxtEffectToDate; + } + + public void setDisabbutTxtEffectToDate(String newDisabbutTxtEffectToDate) { + this.disabbutTxtEffectToDate = newDisabbutTxtEffectToDate; + } + + public String getDisabbutTxtEffectFromDate() { + return this.disabbutTxtEffectFromDate; + } + + public void setDisabbutTxtEffectFromDate(String newDisabbutTxtEffectFromDate) { + this.disabbutTxtEffectFromDate = newDisabbutTxtEffectFromDate; + } + + public String getDisabclaimCode() { + return this.disabclaimCode; + } + + public void setDisabclaimCode(String newDisabclaimCode) { + this.disabclaimCode = newDisabclaimCode; + } + + public String getDisabclaimName() { + return this.disabclaimName; + } + + public void setDisabclaimName(String newDisabclaimName) { + this.disabclaimName = newDisabclaimName; + } + + public String getDisabdocReqFlag() { + return this.disabdocReqFlag; + } + + public void setDisabdocReqFlag(String newDisabdocReqFlag) { + this.disabdocReqFlag = newDisabdocReqFlag; + } + + public String getDisabpayrollFlag() { + return this.disabpayrollFlag; + } + + public void setDisabpayrollFlag(String newDisabpayrollFlag) { + this.disabpayrollFlag = newDisabpayrollFlag; + } + + public String getClaimName() { + return this.claimName; + } + + public void setClaimName(String newClaimName) { + this.claimName = newClaimName; + } + + public String getBeginMonth() { + return this.beginMonth; + } + + public void setBeginMonth(String newBeginMonth) { + this.beginMonth = newBeginMonth; + } + + public String getDurationMonth() { + return this.durationMonth; + } + + public void setDurationMonth(String newDurationMonth) { + this.durationMonth = newDurationMonth; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpClaimForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpClaimForm.java new file mode 100644 index 0000000..f3a5e8b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpClaimForm.java @@ -0,0 +1,437 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmEmpClaimForm extends HrmBaseForm { + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + ArrayList arylstHrmEmpClaim = new ArrayList(); + + private String claimCode; + + private String startDate; + + private String endDate; + + private String claimCodeId; + + private String butClaimCode; + + private String disabbutClaimCode; + + private String butStartDate; + + private String disabbutStartDate; + + private String butEndDate; + + private String disabbutEndDate; + + private String empNo; + + private String empDtlId; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String[] selectAll; + + private String[] txtEmpId; + + private String[] txtApproverId; + + private String[] txtEmployeeNo; + + private String[] txtEmployeeName; + + private String[] txtAppliedAmount; + + private String[] txtApplnDate; + + private String[] txtEligibleAmount; + + private String[] txtReimbursementTillDate; + + private String[] txtPayrollFlag; + + private String[] txtApprovedAmount; + + private String[] txtApprovalDate; + + private String[] txtApprovedBy; + + private String[] txtRemarks; + + private String butApprovedBy; + + private String butTxtApprovalDate; + + private String butTxtApplnDate; + + private String butEmployeeNo; + + private String[] txtClaimCode; + + private String butDtlClaimCode; + + private String[] txtClaimDtlId; + + private String[] txtClaimNo; + + private String claimNo; + + private String butClaimNo; + + private String disabbutClaimNo; + + private String[] txtNewRemarks; + + private String period; + + public ArrayList getArylstHrmEmpClaim() { + return this.arylstHrmEmpClaim; + } + + public void setArylstHrmEmpClaim(ArrayList newArylstHrmEmpClaim) { + this.arylstHrmEmpClaim = newArylstHrmEmpClaim; + } + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String newClaimCode) { + this.claimCode = newClaimCode; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getClaimCodeId() { + return this.claimCodeId; + } + + public void setClaimCodeId(String newClaimCodeId) { + this.claimCodeId = newClaimCodeId; + } + + public String getButClaimCode() { + return this.butClaimCode; + } + + public void setButClaimCode(String newButClaimCode) { + this.butClaimCode = newButClaimCode; + } + + public String getDisabbutClaimCode() { + return this.disabbutClaimCode; + } + + public void setDisabbutClaimCode(String newDisabbutClaimCode) { + this.disabbutClaimCode = newDisabbutClaimCode; + } + + public String getButStartDate() { + return this.butStartDate; + } + + public void setButStartDate(String newButStartDate) { + this.butStartDate = newButStartDate; + } + + public String getDisabbutStartDate() { + return this.disabbutStartDate; + } + + public void setDisabbutStartDate(String newDisabbutStartDate) { + this.disabbutStartDate = newDisabbutStartDate; + } + + public String getButEndDate() { + return this.butEndDate; + } + + public void setButEndDate(String newButEndDate) { + this.butEndDate = newButEndDate; + } + + public String getDisabbutEndDate() { + return this.disabbutEndDate; + } + + public void setDisabbutEndDate(String newDisabbutEndDate) { + this.disabbutEndDate = newDisabbutEndDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpDtlId() { + return this.empDtlId; + } + + public void setEmpDtlId(String newEmpDtlId) { + this.empDtlId = newEmpDtlId; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String[] getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String[] newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String[] newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String[] getTxtApproverId() { + return this.txtApproverId; + } + + public void setTxtApproverId(String[] newTxtApproverId) { + this.txtApproverId = newTxtApproverId; + } + + public String[] getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String[] newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public String[] getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String[] newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public String[] getTxtAppliedAmount() { + return this.txtAppliedAmount; + } + + public void setTxtAppliedAmount(String[] newTxtAppliedAmount) { + this.txtAppliedAmount = newTxtAppliedAmount; + } + + public String[] getTxtApplnDate() { + return this.txtApplnDate; + } + + public void setTxtApplnDate(String[] newTxtApplnDate) { + this.txtApplnDate = newTxtApplnDate; + } + + public String[] getTxtEligibleAmount() { + return this.txtEligibleAmount; + } + + public void setTxtEligibleAmount(String[] newTxtEligibleAmount) { + this.txtEligibleAmount = newTxtEligibleAmount; + } + + public String[] getTxtReimbursementTillDate() { + return this.txtReimbursementTillDate; + } + + public void setTxtReimbursementTillDate(String[] newTxtReimbursementTillDate) { + this.txtReimbursementTillDate = newTxtReimbursementTillDate; + } + + public String[] getTxtPayrollFlag() { + return this.txtPayrollFlag; + } + + public void setTxtPayrollFlag(String[] newTxtPayrollFlag) { + this.txtPayrollFlag = newTxtPayrollFlag; + } + + public String[] getTxtApprovedAmount() { + return this.txtApprovedAmount; + } + + public void setTxtApprovedAmount(String[] newTxtApprovedAmount) { + this.txtApprovedAmount = newTxtApprovedAmount; + } + + public String[] getTxtApprovalDate() { + return this.txtApprovalDate; + } + + public void setTxtApprovalDate(String[] newTxtApprovalDate) { + this.txtApprovalDate = newTxtApprovalDate; + } + + public String[] getTxtApprovedBy() { + return this.txtApprovedBy; + } + + public void setTxtApprovedBy(String[] newTxtApprovedBy) { + this.txtApprovedBy = newTxtApprovedBy; + } + + public String[] getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String[] newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getButApprovedBy() { + return this.butApprovedBy; + } + + public void setButApprovedBy(String newButApprovedBy) { + this.butApprovedBy = newButApprovedBy; + } + + public String getButTxtApprovalDate() { + return this.butTxtApprovalDate; + } + + public void setButTxtApprovalDate(String newButTxtApprovalDate) { + this.butTxtApprovalDate = newButTxtApprovalDate; + } + + public String getButTxtApplnDate() { + return this.butTxtApplnDate; + } + + public void setButTxtApplnDate(String newButTxtApplnDate) { + this.butTxtApplnDate = newButTxtApplnDate; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String[] getTxtClaimCode() { + return this.txtClaimCode; + } + + public void setTxtClaimCode(String[] newTxtClaimCode) { + this.txtClaimCode = newTxtClaimCode; + } + + public String getButDtlClaimCode() { + return this.butDtlClaimCode; + } + + public void setButDtlClaimCode(String newButDtlClaimCode) { + this.butDtlClaimCode = newButDtlClaimCode; + } + + public String[] getTxtClaimDtlId() { + return this.txtClaimDtlId; + } + + public void setTxtClaimDtlId(String[] newTxtClaimDtlId) { + this.txtClaimDtlId = newTxtClaimDtlId; + } + + public String[] getTxtClaimNo() { + return this.txtClaimNo; + } + + public void setTxtClaimNo(String[] newTxtClaimNo) { + this.txtClaimNo = newTxtClaimNo; + } + + public String getClaimNo() { + return this.claimNo; + } + + public void setClaimNo(String newClaimNo) { + this.claimNo = newClaimNo; + } + + public String getButClaimNo() { + return this.butClaimNo; + } + + public void setButClaimNo(String newButClaimNo) { + this.butClaimNo = newButClaimNo; + } + + public String getDisabbutClaimNo() { + return this.disabbutClaimNo; + } + + public void setDisabbutClaimNo(String newDisabbutClaimNo) { + this.disabbutClaimNo = newDisabbutClaimNo; + } + + public String[] getTxtNewRemarks() { + return this.txtNewRemarks; + } + + public void setTxtNewRemarks(String[] newTxtNewRemarks) { + this.txtNewRemarks = newTxtNewRemarks; + } + + public String getPeriod() { + return this.period; + } + + public void setPeriod(String newPeriod) { + this.period = newPeriod; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDepDtlForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDepDtlForm.java new file mode 100644 index 0000000..2567757 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDepDtlForm.java @@ -0,0 +1,277 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmEmpDepDtlForm extends HrmBaseForm { + String employeeNo; + + String employeeName; + + String employeeNoId; + + String[] txtRelationType; + + String[] txtDepName; + + String[] txtSex; + + String[] txtDOB; + + String[] txtOrgName; + + String[] txtIncomeAmount; + + String selectAll; + + ArrayList arrEmplDepDtls; + + String[] txtRelationTypeId; + + String disabemployeeNo; + + String disabemployeeName; + + String disabemployeeNoId; + + String disabtxtRelationType; + + String disabtxtDepName; + + String disabtxtSex; + + String disabtxtDOB; + + String disabselectAll; + + String disabtxtRelationTypeId; + + String disabbutDOB; + + String disabbutRel; + + private String butEmpNo; + + String[] txtRelationTypeCode; + + private String disabbutEmpNo; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtRelationType() { + return this.txtRelationType; + } + + public void setTxtRelationType(String[] newTxtRelationType) { + this.txtRelationType = newTxtRelationType; + } + + public String[] getTxtDepName() { + return this.txtDepName; + } + + public void setTxtDepName(String[] newTxtDepName) { + this.txtDepName = newTxtDepName; + } + + public String[] getTxtSex() { + return this.txtSex; + } + + public void setTxtSex(String[] newTxtSex) { + this.txtSex = newTxtSex; + } + + public String[] getTxtDOB() { + return this.txtDOB; + } + + public void setTxtDOB(String[] newTxtDOB) { + this.txtDOB = newTxtDOB; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String[] getTxtRelationTypeId() { + return this.txtRelationTypeId; + } + + public void setTxtRelationTypeId(String[] newTxtRelationTypeId) { + this.txtRelationTypeId = newTxtRelationTypeId; + } + + public ArrayList getArrEmplDepDtls() { + return this.arrEmplDepDtls; + } + + public void setArrEmplDepDtls(ArrayList newArrEmplDepDtls) { + this.arrEmplDepDtls = newArrEmplDepDtls; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisabemployeeNoId() { + return this.disabemployeeNoId; + } + + public void setDisabemployeeNoId(String newDisabemployeeNoId) { + this.disabemployeeNoId = newDisabemployeeNoId; + } + + public String getDisabtxtRelationType() { + return this.disabtxtRelationType; + } + + public void setDisabtxtRelationType(String newDisabtxtRelationType) { + this.disabtxtRelationType = newDisabtxtRelationType; + } + + public String getDisabtxtDepName() { + return this.disabtxtDepName; + } + + public void setDisabtxtDepName(String newDisabtxtDepName) { + this.disabtxtDepName = newDisabtxtDepName; + } + + public String getDisabtxtSex() { + return this.disabtxtSex; + } + + public void setDisabtxtSex(String newDisabtxtSex) { + this.disabtxtSex = newDisabtxtSex; + } + + public String getDisabtxtDOB() { + return this.disabtxtDOB; + } + + public void setDisabtxtDOB(String newDisabtxtDOB) { + this.disabtxtDOB = newDisabtxtDOB; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtRelationTypeId() { + return this.disabtxtRelationTypeId; + } + + public void setDisabtxtRelationTypeId(String newDisabtxtRelationTypeId) { + this.disabtxtRelationTypeId = newDisabtxtRelationTypeId; + } + + public String getDisabbutDOB() { + return this.disabbutDOB; + } + + public void setDisabbutDOB(String newDisabbutDOB) { + this.disabbutDOB = newDisabbutDOB; + } + + public String getDisabbutRel() { + return this.disabbutRel; + } + + public void setDisabbutRel(String newDisabbutRel) { + this.disabbutRel = newDisabbutRel; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String[] getTxtRelationTypeCode() { + return this.txtRelationTypeCode; + } + + public void setTxtRelationTypeCode(String[] newTxtRelationTypeCode) { + this.txtRelationTypeCode = newTxtRelationTypeCode; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String[] getTxtOrgName() { + return this.txtOrgName; + } + + public void setTxtOrgName(String[] newTxtOrgName) { + this.txtOrgName = newTxtOrgName; + } + + public String[] getTxtIncomeAmount() { + return this.txtIncomeAmount; + } + + public void setTxtIncomeAmount(String[] newTxtIncomeAmount) { + this.txtIncomeAmount = newTxtIncomeAmount; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDiscActionForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDiscActionForm.java new file mode 100644 index 0000000..97eb2d5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpDiscActionForm.java @@ -0,0 +1,473 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmEmpDiscActionForm extends HrmBaseForm { + private String employeeNo; + + private String employeeName; + + private String employeeNoId; + + private String caseFlag; + + private String disabemployeeNo; + + private String disabemployeeName; + + ArrayList arrEmpDisc; + + private String[] txtChrgShtDate; + + private String[] txtInqDate; + + private String[] txtInqOfficer; + + private String[] txtActionTaken; + + private String[] txtActionOfficer; + + private String[] txtAppealDate; + + private String[] txtLocationId; + + private String[] txtLocation; + + private String disabtxtLocation; + + private String[] txtMisconduct; + + private String disabtxtMisconduct; + + private String[] txtFromDate; + + private String disabtxtFromDate; + + private String butTxtFromDate; + + private String butTxtToDate; + + private String butTxtStatusEffectDate; + + private String[] txtToDate; + + private String disabtxtToDate; + + private String disabtxtActionTaken; + + private String[] txtStatus; + + private String disabtxtStatus; + + private String[] txtStatusEffectDate; + + private String disabtxtStatusEffectDate; + + private String[] txtRemarks; + + private String disabtxtRemarks; + + private String selectAll; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String butLocation; + + private String disabbutLocation; + + private String disabbutTxtFromDate; + + private String disabbutTxtToDate; + + private String disabbutTxtStatusEffectDate; + + private String butTxtChrgShtDate; + + private String butTxtInqDate; + + private String butTxtAppealDate; + + private String disabbutTxtChrgShtDate; + + private String disabbutTxtInqDate; + + private String disabbutTxtAppealDate; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getCaseFlag() { + return this.caseFlag; + } + + public void setCaseFlag(String newCaseFlag) { + this.caseFlag = newCaseFlag; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public ArrayList getArrEmpDisc() { + return this.arrEmpDisc; + } + + public void setArrEmpDisc(ArrayList newArrEmpDisc) { + this.arrEmpDisc = newArrEmpDisc; + } + + public String[] getTxtChrgShtDate() { + return this.txtChrgShtDate; + } + + public void setTxtChrgShtDate(String[] txtChrgShtDate) { + this.txtChrgShtDate = txtChrgShtDate; + } + + public String[] getTxtInqDate() { + return this.txtInqDate; + } + + public void setTxtInqDate(String[] txtInqDate) { + this.txtInqDate = txtInqDate; + } + + public String[] getTxtInqOfficer() { + return this.txtInqOfficer; + } + + public void setTxtInqOfficer(String[] txtInqOfficer) { + this.txtInqOfficer = txtInqOfficer; + } + + public String[] getTxtActionOfficer() { + return this.txtActionOfficer; + } + + public void setTxtActionOfficer(String[] txtActionOfficer) { + this.txtActionOfficer = txtActionOfficer; + } + + public String[] getTxtAppealDate() { + return this.txtAppealDate; + } + + public void setTxtAppealDate(String[] txtAppealDate) { + this.txtAppealDate = txtAppealDate; + } + + public String getButTxtChrgShtDate() { + return this.butTxtChrgShtDate; + } + + public void setButTxtChrgShtDate(String butTxtChrgShtDate) { + this.butTxtChrgShtDate = butTxtChrgShtDate; + } + + public String getButTxtInqDate() { + return this.butTxtInqDate; + } + + public void setButTxtInqDate(String butTxtInqDate) { + this.butTxtInqDate = butTxtInqDate; + } + + public String getButTxtAppealDate() { + return this.butTxtAppealDate; + } + + public void setButTxtAppealDate(String butTxtAppealDate) { + this.butTxtAppealDate = butTxtAppealDate; + } + + public String getDisabbutTxtChrgShtDate() { + return this.disabbutTxtChrgShtDate; + } + + public void setDisabbutTxtChrgShtDate(String disabbutTxtChrgShtDate) { + this.disabbutTxtChrgShtDate = disabbutTxtChrgShtDate; + } + + public String getDisabbutTxtInqDate() { + return this.disabbutTxtInqDate; + } + + public void setDisabbutTxtInqDate(String disabbutTxtInqDate) { + this.disabbutTxtInqDate = disabbutTxtInqDate; + } + + public String getDisabbutTxtAppealDate() { + return this.disabbutTxtAppealDate; + } + + public void setDisabbutTxtAppealDate(String disabbutTxtAppealDate) { + this.disabbutTxtAppealDate = disabbutTxtAppealDate; + } + + public String[] getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String[] newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String[] getTxtLocation() { + return this.txtLocation; + } + + public void setTxtLocation(String[] newTxtLocation) { + this.txtLocation = newTxtLocation; + } + + public String getDisabtxtLocation() { + return this.disabtxtLocation; + } + + public void setDisabtxtLocation(String newDisabtxtLocation) { + this.disabtxtLocation = newDisabtxtLocation; + } + + public String[] getTxtMisconduct() { + return this.txtMisconduct; + } + + public void setTxtMisconduct(String[] newTxtMisconduct) { + this.txtMisconduct = newTxtMisconduct; + } + + public String getDisabtxtMisconduct() { + return this.disabtxtMisconduct; + } + + public void setDisabtxtMisconduct(String newDisabtxtMisconduct) { + this.disabtxtMisconduct = newDisabtxtMisconduct; + } + + public String[] getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String[] newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getDisabtxtFromDate() { + return this.disabtxtFromDate; + } + + public void setDisabtxtFromDate(String newDisabtxtFromDate) { + this.disabtxtFromDate = newDisabtxtFromDate; + } + + public String getButTxtFromDate() { + return this.butTxtFromDate; + } + + public void setButTxtFromDate(String newButTxtFromDate) { + this.butTxtFromDate = newButTxtFromDate; + } + + public String getButTxtToDate() { + return this.butTxtToDate; + } + + public void setButTxtToDate(String newButTxtToDate) { + this.butTxtToDate = newButTxtToDate; + } + + public String getButTxtStatusEffectDate() { + return this.butTxtStatusEffectDate; + } + + public String[] getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String[] newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getDisabtxtToDate() { + return this.disabtxtToDate; + } + + public void setDisabtxtToDate(String newDisabtxtToDate) { + this.disabtxtToDate = newDisabtxtToDate; + } + + public String[] getTxtActionTaken() { + return this.txtActionTaken; + } + + public void setTxtActionTaken(String[] newTxtActionTaken) { + this.txtActionTaken = newTxtActionTaken; + } + + public String getDisabtxtActionTaken() { + return this.disabtxtActionTaken; + } + + public void setDisabtxtActionTaken(String newDisabtxtActionTaken) { + this.disabtxtActionTaken = newDisabtxtActionTaken; + } + + public String[] getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String[] newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getDisabtxtStatus() { + return this.disabtxtStatus; + } + + public void setDisabtxtStatus(String newDisabtxtStatus) { + this.disabtxtStatus = newDisabtxtStatus; + } + + public String[] getTxtStatusEffectDate() { + return this.txtStatusEffectDate; + } + + public void setTxtStatusEffectDate(String[] newTxtStatusEffectDate) { + this.txtStatusEffectDate = newTxtStatusEffectDate; + } + + public String getDisabtxtStatusEffectDate() { + return this.disabtxtStatusEffectDate; + } + + public void setDisabtxtStatusEffectDate(String newDisabtxtStatusEffectDate) { + this.disabtxtStatusEffectDate = newDisabtxtStatusEffectDate; + } + + public String[] getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String[] newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getDisabtxtRemarks() { + return this.disabtxtRemarks; + } + + public void setDisabtxtRemarks(String newDisabtxtRemarks) { + this.disabtxtRemarks = newDisabtxtRemarks; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getButLocation() { + return this.butLocation; + } + + public void setButLocation(String newButLocation) { + this.butLocation = newButLocation; + } + + public String getDisabbutLocation() { + return this.disabbutLocation; + } + + public void setDisabbutLocation(String newDisabbutLocation) { + this.disabbutLocation = newDisabbutLocation; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getDisabbutTxtToDate() { + return this.disabbutTxtToDate; + } + + public void setDisabbutTxtToDate(String newDisabbutTxtToDate) { + this.disabbutTxtToDate = newDisabbutTxtToDate; + } + + public String getDisabbutTxtStatusEffectDate() { + return this.disabbutTxtStatusEffectDate; + } + + public void setDisabbutTxtStatusEffectDate(String newDisabbutTxtStatusEffectDate) { + this.disabbutTxtStatusEffectDate = newDisabbutTxtStatusEffectDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpPersDtlForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpPersDtlForm.java new file mode 100644 index 0000000..fde92d0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmEmpPersDtlForm.java @@ -0,0 +1,4623 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.bean.HrmEmpPersAddDtlBean; +import wenrgise.hrms.bean.HrmEmpPersDtlsBean; +import wenrgise.hrms.bean.HrmEmpPersJoinInfDtlBean; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmEmpPersDtlForm extends HrmBaseForm { + private String employeeNo; + + private String draftFlag; + + private String butEmployeeNo; + + private String picturePath; + + private String firstName; + + private String middleName; + + private String lastName; + + private String photo; + + private String draftSave; + + private String selectAll; + + private String disabmiddleName; + + private String disabfirstName; + + private String disablastName; + + private String disabemployeeNo; + + private String disabdraftFlag; + + private String disabbutEmployeeNo; + + private String disabphoto; + + private String empNoId; + + private ArrayList arrEmpPersDtl = new ArrayList(); + + private ArrayList arrEmpPersDtlAdd = new ArrayList(); + + private ArrayList arrEmpPersDtlEdu = new ArrayList(); + + private ArrayList arrEmpPersDtlJoin = new ArrayList(); + + private ArrayList arrEmpPersDtlPriorExp = new ArrayList(); + + private ArrayList arrEmpPersDtlPF = new ArrayList(); + + private ArrayList arrEmpPersDtlEmpHst = new ArrayList(); + + private ArrayList arrEmpPersDtlTrng = new ArrayList(); + + private ArrayList arrEmpPersDtlAward = new ArrayList(); + + private ArrayList arrEmpPersDtlIns = new ArrayList(); + + private ArrayList arrEmpPersDtlHealth = new ArrayList(); + + private ArrayList arrEmpPersDtlLng = new ArrayList(); + + private ArrayList arrEmpPersDtlRef = new ArrayList(); + + private ArrayList arrEmpPersDtlAsset = new ArrayList(); + + private String[] grade; + + private String[] designation; + + private String[] department; + + private String[] location; + + private String[] locJoiningDate; + + private String[] sex; + + private String[] guardianName; + + private String[] dateOfBirth; + + private String[] placeOfBirth; + + private String[] nationality; + + private String[] bloodGroup; + + private String[] idMark; + + private String[] religion; + + private String[] motherTongue; + + private String[] dependants; + + private String[] reportingEmployee; + + private String[] lastPromotionDate; + + private String[] rsvCtg; + + private String[] panNumber; + + private String[] pfNumber; + + private String[] girNumber; + + private String[] passportNo; + + private String[] passportIssueDate; + + private String[] drivingLicenseNo; + + private String[] placeOfIssue; + + private String[] passportExpDate; + + private String[] validUpto; + + private String[] maritalStatus; + + private String[] spouseName; + + private String[] spouseOccupation; + + private String[] relatedToEmployee; + + private String[] relatedEmployee; + + private String[] handicappedFlag; + + private String[] anniversaryDate; + + private String[] motherName; + + private String[] scsmemershipNo; + + private String[] gunLicenseNo; + + private String[] gunLicenseRenDate; + + private String[] spouseOrganization; + + private String[] spOrgType; + + private String[] spTransferable; + + private String[] clubMembership; + + private String[] unionInfo; + + private String[] healthDtls; + + private String[] healthStartDate; + + private String[] healthEndDate; + + private String butNationality; + + private String butPassportIssueDate; + + private String butGrade; + + private String butDesignation; + + private String butDepartment; + + private String butLocation; + + private String butDateOfBirth; + + private String butLocJoiningDate; + + private String butPassportExpDate; + + private String butMaritalStatus; + + private String butReligion; + + private String butMotherTongue; + + private String butReportingEmployee; + + private String butLastPromotionDate; + + private String butRsvCtg; + + private String butRelatedEmployee; + + private String butValidUpto; + + private String butAnniversaryDate; + + private String butGunLicenseRenDate; + + private String butAwdDate; + + private String butInvDate; + + private String butHealthStartDate; + + private String butHealthEndDate; + + private String[] nationalityCode; + + private String[] gradeId; + + private String[] gradeCode; + + private String[] designationId; + + private String[] dsgnCode; + + private String[] departmentId; + + private String[] locationId; + + private String[] maritalCode; + + private String[] religionId; + + private String[] motherTongueCode; + + private String[] reportingEmpId; + + private String[] socialStatusId; + + private String[] relatedEmpId; + + private String[] address; + + private String[] city; + + private String[] state; + + private String[] country; + + private String[] pinCode; + + private String[] mobileNo; + + private String[] phone; + + private String[] extension; + + private String[] secPhone; + + private String[] secExtension; + + private String[] email; + + private String[] fax; + + private String[] prAddress; + + private String[] prCity; + + private String[] prState; + + private String[] prCountry; + + private String[] prPinCode; + + private String[] prPhone; + + private String[] peAddress; + + private String[] peCity; + + private String[] peState; + + private String[] peCountry; + + private String[] pePinCode; + + private String[] pePhone; + + private String[] htAddress; + + private String[] htCity; + + private String[] htState; + + private String[] htCountry; + + private String[] htPinCode; + + private String[] htPhone; + + private String[] district; + + private String[] peDistrict; + + private String[] prDistrict; + + private String[] htDistrict; + + private String[] tehsil; + + private String[] peTehsil; + + private String[] prTehsil; + + private String[] htTehsil; + + private String butState; + + private String butCountry; + + private String butPrState; + + private String butPrCountry; + + private String butPeState; + + private String butPeCountry; + + private String butHtState; + + private String butHtCountry; + + private String butLngName; + + private String butDistrict; + + private String butPeDistrict; + + private String butPrDistrict; + + private String butHtDistrict; + + private String butTehsil; + + private String butPeTehsil; + + private String butPrTehsil; + + private String butHtTehsil; + + private String[] countryId; + + private String[] countryCode; + + private String[] stateCode; + + private String[] stateId; + + private String[] districtId; + + private String[] districtCode; + + private String[] tehsilCode; + + private String[] tehsilId; + + private String[] baseSiteId; + + private String[] entryModeCode; + + private String[] employeeStatusCode; + + private String[] separationId; + + private String[] costId; + + private String[] accSite; + + private String[] accSiteId; + + private String[] costCode; + + private String[] entryModeId; + + private String[] baseSite; + + private String[] empStatId; + + private String[] sepCode; + + private String[] compJoiningDate; + + private String[] tentativeConfDate; + + private String[] placeOfInitialPosting; + + private String[] entryMode; + + private String[] refNo; + + private String[] orderNo; + + private String[] orderDate; + + private String[] paymentType; + + private String[] bankCode; + + private String[] bankName; + + private String[] accountNumber; + + private String[] employeeStatus; + + private String[] statusEffectDate; + + private String[] retirementDate; + + private String[] accountingSite; + + private String[] costCentre; + + private String[] separationType; + + private String butSeparationType; + + private String butCostCentre; + + private String butAccSite; + + private String butRetirementDate; + + private String butStatusDate; + + private String butEmployeeStatus; + + private String butEntryMode; + + private String butSiteCode; + + private String butTentativeConfDate; + + private String butCompJoiningDate; + + private String[] txtName; + + private String[] txtAddress; + + private String[] txtTelephoneNo; + + private String[] txtPositionOccupation; + + private String[] txtMinorDetails; + + private String[] txtTotalAmount; + + private String[] txtPercentage; + + private String[] txtDob; + + private String[] txtRelation; + + private String[] txtNomineeName; + + private String[] txtSrlNo; + + private String[] txtSchoolColInst; + + private String[] txtExamDegreePassed; + + private String[] txtPercentageDivision; + + private String[] txtPassYear; + + private String[] txtMajorSubjects; + + private String[] txtSpecialisation; + + private String[] txtOtherProfQualification; + + private String[] txtSpecialisedCourses; + + private String[] instName; + + private String[] txtQualificationId; + + private String[] txtQualificationCode; + + private String[] txtOrgName; + + private String[] txtOrgAdd; + + private String[] txtFromDate; + + private String[] txtToDate; + + private String[] txtWorkExp; + + private String[] txtDesignation; + + private String[] txtReportTo; + + private String[] txtJobDesc; + + private String[] txtPersonnelSupervised; + + private String[] txtSalStarting; + + private String[] txtSalLeaving; + + private String[] txtBasic; + + private String[] txtDa; + + private String[] txtHra; + + private String[] txtConveyance; + + private String[] txtOtherAllowance; + + private String[] txtBonus; + + private String[] txtIncentives; + + private String[] incrementDate; + + private String[] code; + + private String[] socialCode; + + private String disabaccSite; + + private String disabaccountNumber; + + private String disabaccountingSite; + + private String disabaddress; + + private String disabbankCode; + + private String disabbankName; + + private String disabbaseSite; + + private String disabbloodGroup; + + private String disabbutAccSite; + + private String disabbutCompJoiningDate; + + private String disabbutCostCentre; + + private String disabbutCountry; + + private String disabbutDateOfBirth; + + private String disabbutAnniversaryDate; + + private String disabbutGunLicenseRenDate; + + private String disabbutDepartment; + + private String disabbutDesignation; + + private String disabvalidUpto; + + private String disabbutEmployeeStatus; + + private String disabbutEntryMode; + + private String disabbutGrade; + + private String disabbutHtCountry; + + private String disabbutHtState; + + private String disabbutLastPromotionDate; + + private String disabbbutLocJoiningDate; + + private String disabbutLocation; + + private String disabbutMaritalStatus; + + private String disabbutMotherTongue; + + private String disabbutNationality; + + private String disabbutPassportExpDate; + + private String disabbutPassportIssueDate; + + private String disabbutPeCountry; + + private String disabbutPeState; + + private String disabbutPrCountry; + + private String disabbutPrState; + + private String disabbutRelatedEmployee; + + private String disabbutValidUpto; + + private String disabbutReligion; + + private String disabbutReportingEmployee; + + private String disabbutRetirementDate; + + private String disabbutRsvCtg; + + private String disabbutSeparationType; + + private String disabbutSiteCode; + + private String disabbutState; + + private String disabbutStatusDate; + + private String disabbutTentativeConfDate; + + private String disabcity; + + private String disabcode; + + private String disabcompJoiningDate; + + private String disabcostCentre; + + private String disabcountry; + + private String disabdateOfBirth; + + private String disabAnniversaryDate; + + private String disabGunLicenseRenDate; + + private String disabdepartment; + + private String disabdependants; + + private String disabdesignation; + + private String disasbdrivingLicenseNo; + + private String disabemployeeStatus; + + private String disabentryMode; + + private String disabextension; + + private String disabfax; + + private String disabgrade; + + private String disabguardianName; + + private String disabhandicappedFlag; + + private String disabtentativeConfDate; + + private String disabstatusEffectDate; + + private String disabstate; + + private String disabspouseOccupation; + + private String disabspouseName; + + private String disasbsocialCode; + + private String disabsex; + + private String disabseparationType; + + private String disabsepCode; + + private String disabsecPhone; + + private String disabsecExtension; + + private String disabrsvCtg; + + private String disabretirementDate; + + String disabreportingEmployee; + + private String disabreligion; + + private String disabrelatedToEmployee; + + private String disabrelatedEmployee; + + private String disabrefNo; + + private String disabprState; + + private String disabprPinCode; + + private String disabprPhone; + + private String disabprCountry; + + private String disabprCity; + + private String disabprAddress; + + private String disabplaceOfIssue; + + private String disabplaceOfInitialPosting; + + private String disabplaceOfBirth; + + private String disabpinCode; + + private String disabphone; + + private String disabpfNumber; + + private String disabhtAddress; + + private String disabhtCity; + + private String disabhtCountry; + + private String disabhtPhone; + + private String disabhtPinCode; + + private String disabhtState; + + private String disabidMark; + + private String disabincrementDate; + + private String disabinstName; + + private String disablastPromotionDate; + + private String disablocJoiningDate; + + private String disablocation; + + private String disabmaritalStatus; + + private String disabmobile; + + private String disabmotherTongue; + + private String disabnationality; + + private String disabpanNumber; + + private String disabpassportNo; + + private String disabpaymentType; + + private String disabpeAddress; + + private String disabpeCity; + + private String disabpeCountry; + + private String disabpePhone; + + private String disabpePinCode; + + private String disabpeState; + + private String disabbutLocJoiningDate; + + private String disabgirNumber; + + private String disabdrivingLicenseNo; + + private String disabbutAwdDate; + + private String disabmotherName; + + private String disabinvDate; + + private String disabbutInvDate; + + private String disabbutHealthStartDate; + + private String disabbutHealthEndDate; + + private String disabbutLngName; + + private String disabbutDistrict; + + private String disabbutPeDistrict; + + private String disabbutPrDistrict; + + private String disabbutHtDistrict; + + private String disabbutTehsil; + + private String disabbutPeTehsil; + + private String disabbutPrTehsil; + + private String disabbutHtTehsil; + + private String[] level; + + private String[] locationCode; + + private String[] nationalityId; + + private String empNumberId; + + private String[] motherTongueId; + + private String[] maritalId; + + private String[] bankId; + + private String butBank; + + private String disabbutBank; + + private String disabbutQualCode; + + private String disabbutRelation; + + private String[] txtRelationId; + + private String[] txtNomineeId; + + private String visibilityFlag; + + private String[] branchName; + + private String[] mobile; + + private String[] personalEmail; + + private String[] deptCode; + + private String disabemail; + + private String mode; + + private String butDraftSave; + + private String disabbutDraftSave; + + private String[] flat; + + private String disabflat; + + private String disabtabAddDtls; + + private String disabtabJoiningInfo; + + private String disabtabEmpHist; + + private String disabtabPriorExp; + + private String disabtabEduDtls; + + private String disabtabPFDtls; + + private String disabtabTrngDtls; + + private String disabtabAwardDtls; + + private String disabtabInsDtls; + + private String disabtabHealth; + + private String disabtabRef; + + private String disabpersonalEmail; + + private String[] jobRespId; + + private String[] jobResp; + + private String[] butjobResp; + + private String[] txtAwdName; + + private String[] txtAwdYear; + + private String[] txtAwdField; + + private String[] txtAwdDate; + + private String[] invDtls; + + private String[] invAmount; + + private String[] invPolicyNo; + + private String[] invDate; + + private String[] lngName; + + private String[] lngSpeak; + + private String[] lngRead; + + private String[] lngWrite; + + private String[] fullAddress; + + private String[] detailOfProperty; + + private String[] costOfConstruction; + + private String[] yearOfPurchase; + + private String[] presentValue; + + private String[] nameHeld; + + private String[] howAquired; + + private String[] detailOfPerson; + + private String[] totalIncome; + + private String[] remarks; + + private String[] uanInfo; + + private String[] aadharInfo; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getDraftFlag() { + return this.draftFlag; + } + + public void setDraftFlag(String newDraftFlag) { + this.draftFlag = newDraftFlag; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getPicturePath() { + return this.picturePath; + } + + public void setPicturePath(String newPicturePath) { + this.picturePath = newPicturePath; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDisabmiddleName() { + return this.disabmiddleName; + } + + public void setDisabmiddleName(String newDisabmiddleName) { + this.disabmiddleName = newDisabmiddleName; + } + + public String getDisabfirstName() { + return this.disabfirstName; + } + + public void setDisabfirstName(String newDisabfirstName) { + this.disabfirstName = newDisabfirstName; + } + + public String getDisablastName() { + return this.disablastName; + } + + public void setDisablastName(String newDisablastName) { + this.disablastName = newDisablastName; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabdraftFlag() { + return this.disabdraftFlag; + } + + public void setDisabdraftFlag(String newDisabdraftFlag) { + this.disabdraftFlag = newDisabdraftFlag; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String[] getGrade() { + return this.grade; + } + + public String[] getDesignation() { + return this.designation; + } + + public void setDesignation(String[] newDesignation) { + this.designation = newDesignation; + } + + public void setGrade(String[] newGrade) { + this.grade = newGrade; + } + + public String[] getDepartment() { + return this.department; + } + + public void setDepartment(String[] newDepartment) { + this.department = newDepartment; + } + + public String getButGrade() { + return this.butGrade; + } + + public void setButGrade(String newButGrade) { + this.butGrade = newButGrade; + } + + public String getButDesignation() { + return this.butDesignation; + } + + public void setButDesignation(String newButDesignation) { + this.butDesignation = newButDesignation; + } + + public String getButDepartment() { + return this.butDepartment; + } + + public void setButDepartment(String newButDepartment) { + this.butDepartment = newButDepartment; + } + + public String getButLocation() { + return this.butLocation; + } + + public void setButLocation(String newButLocation) { + this.butLocation = newButLocation; + } + + public String getButDateOfBirth() { + return this.butDateOfBirth; + } + + public void setButDateOfBirth(String newButDateOfBirth) { + this.butDateOfBirth = newButDateOfBirth; + } + + public String[] getLocation() { + return this.location; + } + + public void setLocation(String[] newLocation) { + this.location = newLocation; + } + + public String[] getLocJoiningDate() { + return this.locJoiningDate; + } + + public String[] getSex() { + return this.sex; + } + + public String[] getGuardianName() { + return this.guardianName; + } + + public String getButLocJoiningDate() { + return this.butLocJoiningDate; + } + + public void setButLocJoiningDate(String newButLocJoiningDate) { + this.butLocJoiningDate = newButLocJoiningDate; + } + + public void setLocJoiningDate(String[] newLocJoiningDate) { + this.locJoiningDate = newLocJoiningDate; + } + + public void setSex(String[] newSex) { + this.sex = newSex; + } + + public void setGuardianName(String[] newGuardianName) { + this.guardianName = newGuardianName; + } + + public String[] getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String[] newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String[] getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String[] newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String[] getNationality() { + return this.nationality; + } + + public void setNationality(String[] newNationality) { + this.nationality = newNationality; + } + + public String[] getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String[] newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String[] getIdMark() { + return this.idMark; + } + + public void setIdMark(String[] newIdMark) { + this.idMark = newIdMark; + } + + public String getButNationality() { + return this.butNationality; + } + + public void setButNationality(String newButNationality) { + this.butNationality = newButNationality; + } + + public String[] getReligion() { + return this.religion; + } + + public void setReligion(String[] newReligion) { + this.religion = newReligion; + } + + public String[] getMotherTongue() { + return this.motherTongue; + } + + public void setMotherTongue(String[] newMotherTongue) { + this.motherTongue = newMotherTongue; + } + + public String[] getDependants() { + return this.dependants; + } + + public void setDependants(String[] newDependants) { + this.dependants = newDependants; + } + + public String getButReligion() { + return this.butReligion; + } + + public void setButReligion(String newButReligion) { + this.butReligion = newButReligion; + } + + public String getButMotherTongue() { + return this.butMotherTongue; + } + + public void setButMotherTongue(String newButMotherTongue) { + this.butMotherTongue = newButMotherTongue; + } + + public String getButReportingEmployee() { + return this.butReportingEmployee; + } + + public void setButReportingEmployee(String newButReportingEmployee) { + this.butReportingEmployee = newButReportingEmployee; + } + + public String getButLastPromotionDate() { + return this.butLastPromotionDate; + } + + public void setButLastPromotionDate(String newButLastPromotionDate) { + this.butLastPromotionDate = newButLastPromotionDate; + } + + public String getButRsvCtg() { + return this.butRsvCtg; + } + + public void setButRsvCtg(String newButRsvCtg) { + this.butRsvCtg = newButRsvCtg; + } + + public String[] getReportingEmployee() { + return this.reportingEmployee; + } + + public void setReportingEmployee(String[] newReportingEmployee) { + this.reportingEmployee = newReportingEmployee; + } + + public String[] getLastPromotionDate() { + return this.lastPromotionDate; + } + + public void setLastPromotionDate(String[] newLastPromotionDate) { + this.lastPromotionDate = newLastPromotionDate; + } + + public String[] getRsvCtg() { + return this.rsvCtg; + } + + public void setRsvCtg(String[] newRsvCtg) { + this.rsvCtg = newRsvCtg; + } + + public String[] getPanNumber() { + return this.panNumber; + } + + public void setPanNumber(String[] newPanNumber) { + this.panNumber = newPanNumber; + } + + public String[] getPfNumber() { + return this.pfNumber; + } + + public void setPfNumber(String[] newPfNumber) { + this.pfNumber = newPfNumber; + } + + public String[] getGirNumber() { + return this.girNumber; + } + + public void setGirNumber(String[] newGirNumber) { + this.girNumber = newGirNumber; + } + + public String[] getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String[] newPassportNo) { + this.passportNo = newPassportNo; + } + + public String[] getPassportIssueDate() { + return this.passportIssueDate; + } + + public void setPassportIssueDate(String[] newPassportIssueDate) { + this.passportIssueDate = newPassportIssueDate; + } + + public String[] getDrivingLicenseNo() { + return this.drivingLicenseNo; + } + + public void setDrivingLicenseNo(String[] newDrivingLicenseNo) { + this.drivingLicenseNo = newDrivingLicenseNo; + } + + public String getButPassportIssueDate() { + return this.butPassportIssueDate; + } + + public void setButPassportIssueDate(String newButPassportIssueDate) { + this.butPassportIssueDate = newButPassportIssueDate; + } + + public String[] getPlaceOfIssue() { + return this.placeOfIssue; + } + + public void setPlaceOfIssue(String[] newPlaceOfIssue) { + this.placeOfIssue = newPlaceOfIssue; + } + + public String[] getPassportExpDate() { + return this.passportExpDate; + } + + public void setPassportExpDate(String[] newPassportExpDate) { + this.passportExpDate = newPassportExpDate; + } + + public String[] getValidUpto() { + return this.validUpto; + } + + public void setValidUpto(String[] newValidUpto) { + this.validUpto = newValidUpto; + } + + public String getButPassportExpDate() { + return this.butPassportExpDate; + } + + public void setButPassportExpDate(String newButPassportExpDate) { + this.butPassportExpDate = newButPassportExpDate; + } + + public String getButMaritalStatus() { + return this.butMaritalStatus; + } + + public void setButMaritalStatus(String newButMaritalStatus) { + this.butMaritalStatus = newButMaritalStatus; + } + + public String[] getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String[] newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String[] getSpouseName() { + return this.spouseName; + } + + public void setSpouseName(String[] newSpouseName) { + this.spouseName = newSpouseName; + } + + public String[] getSpouseOccupation() { + return this.spouseOccupation; + } + + public void setSpouseOccupation(String[] newSpouseOccupation) { + this.spouseOccupation = newSpouseOccupation; + } + + public String[] getRelatedToEmployee() { + return this.relatedToEmployee; + } + + public void setRelatedToEmployee(String[] newRelatedToEmployee) { + this.relatedToEmployee = newRelatedToEmployee; + } + + public String[] getRelatedEmployee() { + return this.relatedEmployee; + } + + public void setRelatedEmployee(String[] newRelatedEmployee) { + this.relatedEmployee = newRelatedEmployee; + } + + public String[] getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String[] newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getButRelatedEmployee() { + return this.butRelatedEmployee; + } + + public void setButRelatedEmployee(String newButRelatedEmployee) { + this.butRelatedEmployee = newButRelatedEmployee; + } + + public String getButValidUpto() { + return this.butValidUpto; + } + + public void setButValidUpto(String newButValidUpto) { + this.butValidUpto = newButValidUpto; + } + + public String[] getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String[] newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String[] getGradeId() { + return this.gradeId; + } + + public void setGradeId(String[] newGradeId) { + this.gradeId = newGradeId; + } + + public String[] getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String[] newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String[] getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String[] newDesignationId) { + this.designationId = newDesignationId; + } + + public String[] getDsgnCode() { + return this.dsgnCode; + } + + public void setDsgnCode(String[] newDsgnCode) { + this.dsgnCode = newDsgnCode; + } + + public String[] getDepartmentId() { + return this.departmentId; + } + + public void setDepartmentId(String[] newDepartmentId) { + this.departmentId = newDepartmentId; + } + + public String[] getLocationId() { + return this.locationId; + } + + public void setLocationId(String[] newLocationId) { + this.locationId = newLocationId; + } + + public String[] getMaritalCode() { + return this.maritalCode; + } + + public void setMaritalCode(String[] newMaritalCode) { + this.maritalCode = newMaritalCode; + } + + public String[] getReligionId() { + return this.religionId; + } + + public void setReligionId(String[] newReligionId) { + this.religionId = newReligionId; + } + + public String[] getMotherTongueCode() { + return this.motherTongueCode; + } + + public void setMotherTongueCode(String[] newMotherTongueCode) { + this.motherTongueCode = newMotherTongueCode; + } + + public String[] getReportingEmpId() { + return this.reportingEmpId; + } + + public void setReportingEmpId(String[] newReportingEmpId) { + this.reportingEmpId = newReportingEmpId; + } + + public String[] getSocialStatusId() { + return this.socialStatusId; + } + + public void setSocialStatusId(String[] newSocialStatusId) { + this.socialStatusId = newSocialStatusId; + } + + public String[] getRelatedEmpId() { + return this.relatedEmpId; + } + + public void setRelatedEmpId(String[] newRelatedEmpId) { + this.relatedEmpId = newRelatedEmpId; + } + + public String getPhoto() { + return this.photo; + } + + public void setPhoto(String newPhoto) { + this.photo = newPhoto; + } + + public String getDisabphoto() { + return this.disabphoto; + } + + public void setDisabphoto(String newDisabphoto) { + this.disabphoto = newDisabphoto; + } + + public ArrayList getArrEmpPersDtl() { + return this.arrEmpPersDtl; + } + + public void setArrEmpPersDtl(ArrayList newArrEmpPersDtl) { + this.arrEmpPersDtl = newArrEmpPersDtl; + } + + public ArrayList getArrEmpPersDtlAdd() { + return this.arrEmpPersDtlAdd; + } + + public void setArrEmpPersDtlAdd(ArrayList newArrEmpPersDtlAdd) { + this.arrEmpPersDtlAdd = newArrEmpPersDtlAdd; + } + + public ArrayList getArrEmpPersDtlEdu() { + return this.arrEmpPersDtlEdu; + } + + public void setArrEmpPersDtlEdu(ArrayList newArrEmpPersDtlEdu) { + this.arrEmpPersDtlEdu = newArrEmpPersDtlEdu; + } + + public ArrayList getArrEmpPersDtlJoin() { + return this.arrEmpPersDtlJoin; + } + + public void setArrEmpPersDtlJoin(ArrayList newArrEmpPersDtlJoin) { + this.arrEmpPersDtlJoin = newArrEmpPersDtlJoin; + } + + public ArrayList getArrEmpPersDtlPriorExp() { + return this.arrEmpPersDtlPriorExp; + } + + public void setArrEmpPersDtlPriorExp(ArrayList newArrEmpPersDtlPriorExp) { + this.arrEmpPersDtlPriorExp = newArrEmpPersDtlPriorExp; + } + + public ArrayList getArrEmpPersDtlPF() { + return this.arrEmpPersDtlPF; + } + + public void setArrEmpPersDtlPF(ArrayList newArrEmpPersDtlPF) { + this.arrEmpPersDtlPF = newArrEmpPersDtlPF; + } + + public ArrayList getArrEmpPersDtlEmpHst() { + return this.arrEmpPersDtlEmpHst; + } + + public void setArrEmpPersDtlEmpHst(ArrayList newArrEmpPersDtlEmpHst) { + this.arrEmpPersDtlEmpHst = newArrEmpPersDtlEmpHst; + } + + public ArrayList getArrEmpPersDtlTrng() { + return this.arrEmpPersDtlTrng; + } + + public void setArrEmpPersDtlTrng(ArrayList newArrEmpPersDtlTrng) { + this.arrEmpPersDtlTrng = newArrEmpPersDtlTrng; + } + + public ArrayList getArrEmpPersDtlAward() { + return this.arrEmpPersDtlAward; + } + + public void setArrEmpPersDtlAward(ArrayList newArrEmpPersDtlAward) { + this.arrEmpPersDtlAward = newArrEmpPersDtlAward; + } + + public ArrayList getArrEmpPersDtlHealth() { + return this.arrEmpPersDtlHealth; + } + + public void setArrEmpPersDtlHealth(ArrayList newArrEmpPersDtlHealth) { + this.arrEmpPersDtlHealth = newArrEmpPersDtlHealth; + } + + public ArrayList getArrEmpPersDtlIns() { + return this.arrEmpPersDtlIns; + } + + public void setArrEmpPersDtlIns(ArrayList newArrEmpPersDtlIns) { + this.arrEmpPersDtlIns = newArrEmpPersDtlIns; + } + + public ArrayList getArrEmpPersDtlLng() { + return this.arrEmpPersDtlLng; + } + + public void setArrEmpPersDtlLng(ArrayList newArrEmpPersDtlLng) { + this.arrEmpPersDtlLng = newArrEmpPersDtlLng; + } + + public ArrayList getArrEmpPersDtlRef() { + return this.arrEmpPersDtlRef; + } + + public void setArrEmpPersDtlRef(ArrayList newArrEmpPersDtlRef) { + this.arrEmpPersDtlRef = newArrEmpPersDtlRef; + } + + public HrmEmpPersDtlsBean getHrmEmpPersDtl() { + HrmEmpPersDtlsBean oEmpDtl; + if (this.arrEmpPersDtl.size() != 0) { + oEmpDtl = this.arrEmpPersDtl.get(0); + } else { + oEmpDtl = new HrmEmpPersDtlsBean(); + } + return oEmpDtl; + } + + public HrmEmpPersAddDtlBean getHrmEmpPersDtlAdd() { + HrmEmpPersAddDtlBean oEmpDtl; + if (this.arrEmpPersDtlAdd.size() != 0) { + oEmpDtl = this.arrEmpPersDtlAdd.get(0); + } else { + oEmpDtl = new HrmEmpPersAddDtlBean(); + } + return oEmpDtl; + } + + public HrmEmpPersJoinInfDtlBean getHrmEmpPersDtlJoin() { + HrmEmpPersJoinInfDtlBean oEmpDtl; + if (this.arrEmpPersDtlJoin.size() != 0) { + oEmpDtl = this.arrEmpPersDtlJoin.get(0); + } else { + oEmpDtl = new HrmEmpPersJoinInfDtlBean(); + } + return oEmpDtl; + } + + public String getDraftSave() { + return this.draftSave; + } + + public void setDraftSave(String newDraftSave) { + this.draftSave = newDraftSave; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getAddress() { + return this.address; + } + + public void setAddress(String[] newAddress) { + this.address = newAddress; + } + + public String[] getCity() { + return this.city; + } + + public void setCity(String[] newCity) { + this.city = newCity; + } + + public String[] getState() { + return this.state; + } + + public void setState(String[] newState) { + this.state = newState; + } + + public String[] getCountry() { + return this.country; + } + + public void setCountry(String[] newCountry) { + this.country = newCountry; + } + + public String[] getPinCode() { + return this.pinCode; + } + + public void setPinCode(String[] newPinCode) { + this.pinCode = newPinCode; + } + + public String[] getMobileNo() { + return this.mobileNo; + } + + public void setMobileNo(String[] newMobileNo) { + this.mobileNo = newMobileNo; + } + + public String[] getPhone() { + return this.phone; + } + + public void setPhone(String[] newPhone) { + this.phone = newPhone; + } + + public String[] getExtension() { + return this.extension; + } + + public void setExtension(String[] newExtension) { + this.extension = newExtension; + } + + public String[] getSecPhone() { + return this.secPhone; + } + + public void setSecPhone(String[] newSecPhone) { + this.secPhone = newSecPhone; + } + + public String[] getSecExtension() { + return this.secExtension; + } + + public void setSecExtension(String[] newSecExtension) { + this.secExtension = newSecExtension; + } + + public String[] getEmail() { + return this.email; + } + + public void setEmail(String[] newEmail) { + this.email = newEmail; + } + + public String[] getFax() { + return this.fax; + } + + public void setFax(String[] newFax) { + this.fax = newFax; + } + + public String[] getPrAddress() { + return this.prAddress; + } + + public void setPrAddress(String[] newPrAddress) { + this.prAddress = newPrAddress; + } + + public String[] getPrCity() { + return this.prCity; + } + + public void setPrCity(String[] newPrCity) { + this.prCity = newPrCity; + } + + public String[] getPrState() { + return this.prState; + } + + public void setPrState(String[] newPrState) { + this.prState = newPrState; + } + + public String[] getPrCountry() { + return this.prCountry; + } + + public void setPrCountry(String[] newPrCountry) { + this.prCountry = newPrCountry; + } + + public String[] getPrPinCode() { + return this.prPinCode; + } + + public void setPrPinCode(String[] newPrPinCode) { + this.prPinCode = newPrPinCode; + } + + public String[] getPrPhone() { + return this.prPhone; + } + + public void setPrPhone(String[] newPrPhone) { + this.prPhone = newPrPhone; + } + + public String[] getPeAddress() { + return this.peAddress; + } + + public void setPeAddress(String[] newPeAddress) { + this.peAddress = newPeAddress; + } + + public String[] getPeCity() { + return this.peCity; + } + + public void setPeCity(String[] newPeCity) { + this.peCity = newPeCity; + } + + public String[] getPeState() { + return this.peState; + } + + public void setPeState(String[] newPeState) { + this.peState = newPeState; + } + + public String[] getPeCountry() { + return this.peCountry; + } + + public void setPeCountry(String[] newPeCountry) { + this.peCountry = newPeCountry; + } + + public String[] getPePinCode() { + return this.pePinCode; + } + + public void setPePinCode(String[] newPePinCode) { + this.pePinCode = newPePinCode; + } + + public String[] getPePhone() { + return this.pePhone; + } + + public void setPePhone(String[] newPePhone) { + this.pePhone = newPePhone; + } + + public String[] getHtAddress() { + return this.htAddress; + } + + public void setHtAddress(String[] newHtAddress) { + this.htAddress = newHtAddress; + } + + public String[] getHtCity() { + return this.htCity; + } + + public void setHtCity(String[] newHtCity) { + this.htCity = newHtCity; + } + + public String[] getHtState() { + return this.htState; + } + + public void setHtState(String[] newHtState) { + this.htState = newHtState; + } + + public String[] getHtCountry() { + return this.htCountry; + } + + public void setHtCountry(String[] newHtCountry) { + this.htCountry = newHtCountry; + } + + public String[] getHtPinCode() { + return this.htPinCode; + } + + public void setHtPinCode(String[] newHtPinCode) { + this.htPinCode = newHtPinCode; + } + + public String[] getHtPhone() { + return this.htPhone; + } + + public void setHtPhone(String[] newHtPhone) { + this.htPhone = newHtPhone; + } + + public String getButState() { + return this.butState; + } + + public void setButState(String newButState) { + this.butState = newButState; + } + + public String getButCountry() { + return this.butCountry; + } + + public void setButCountry(String newButCountry) { + this.butCountry = newButCountry; + } + + public String getButPrState() { + return this.butPrState; + } + + public void setButPrState(String newButPrState) { + this.butPrState = newButPrState; + } + + public String getButPrCountry() { + return this.butPrCountry; + } + + public void setButPrCountry(String newButPrCountry) { + this.butPrCountry = newButPrCountry; + } + + public String getButPeState() { + return this.butPeState; + } + + public void setButPeState(String newButPeState) { + this.butPeState = newButPeState; + } + + public String getButPeCountry() { + return this.butPeCountry; + } + + public void setButPeCountry(String newButPeCountry) { + this.butPeCountry = newButPeCountry; + } + + public String getButHtState() { + return this.butHtState; + } + + public void setButHtState(String newButHtState) { + this.butHtState = newButHtState; + } + + public String getButHtCountry() { + return this.butHtCountry; + } + + public void setButHtCountry(String newButHtCountry) { + this.butHtCountry = newButHtCountry; + } + + public String[] getCountryId() { + return this.countryId; + } + + public void setCountryId(String[] newCountryId) { + this.countryId = newCountryId; + } + + public String[] getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String[] newCountryCode) { + this.countryCode = newCountryCode; + } + + public String[] getStateCode() { + return this.stateCode; + } + + public void setStateCode(String[] newStateCode) { + this.stateCode = newStateCode; + } + + public String[] getStateId() { + return this.stateId; + } + + public void setStateId(String[] newStateId) { + this.stateId = newStateId; + } + + public String[] getBaseSiteId() { + return this.baseSiteId; + } + + public void setBaseSiteId(String[] newBaseSiteId) { + this.baseSiteId = newBaseSiteId; + } + + public String[] getEntryModeCode() { + return this.entryModeCode; + } + + public void setEntryModeCode(String[] newEntryModeCode) { + this.entryModeCode = newEntryModeCode; + } + + public String[] getEmployeeStatusCode() { + return this.employeeStatusCode; + } + + public void setEmployeeStatusCode(String[] newEmployeeStatusCode) { + this.employeeStatusCode = newEmployeeStatusCode; + } + + public String[] getSeparationId() { + return this.separationId; + } + + public void setSeparationId(String[] newSeparationId) { + this.separationId = newSeparationId; + } + + public String[] getCostId() { + return this.costId; + } + + public void setCostId(String[] newCostId) { + this.costId = newCostId; + } + + public String[] getAccSite() { + return this.accSite; + } + + public void setAccSite(String[] newAccSite) { + this.accSite = newAccSite; + } + + public String[] getAccSiteId() { + return this.accSiteId; + } + + public void setAccSiteId(String[] newAccSiteId) { + this.accSiteId = newAccSiteId; + } + + public String[] getCostCode() { + return this.costCode; + } + + public void setCostCode(String[] newCostCode) { + this.costCode = newCostCode; + } + + public String[] getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String[] newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String[] getBaseSite() { + return this.baseSite; + } + + public void setBaseSite(String[] newBaseSite) { + this.baseSite = newBaseSite; + } + + public String[] getEmpStatId() { + return this.empStatId; + } + + public void setEmpStatId(String[] newEmpStatId) { + this.empStatId = newEmpStatId; + } + + public String[] getSepCode() { + return this.sepCode; + } + + public void setSepCode(String[] newSepCode) { + this.sepCode = newSepCode; + } + + public String[] getCompJoiningDate() { + return this.compJoiningDate; + } + + public void setCompJoiningDate(String[] newCompJoiningDate) { + this.compJoiningDate = newCompJoiningDate; + } + + public String[] getTentativeConfDate() { + return this.tentativeConfDate; + } + + public void setTentativeConfDate(String[] newTentativeConfDate) { + this.tentativeConfDate = newTentativeConfDate; + } + + public String[] getPlaceOfInitialPosting() { + return this.placeOfInitialPosting; + } + + public void setPlaceOfInitialPosting(String[] newPlaceOfInitialPosting) { + this.placeOfInitialPosting = newPlaceOfInitialPosting; + } + + public String[] getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String[] newEntryMode) { + this.entryMode = newEntryMode; + } + + public String[] getRefNo() { + return this.refNo; + } + + public void setRefNo(String[] newRefNo) { + this.refNo = newRefNo; + } + + public String[] getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String[] newOrderNo) { + this.orderNo = newOrderNo; + } + + public String[] getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String[] newOrderDate) { + this.orderDate = newOrderDate; + } + + public String[] getPaymentType() { + return this.paymentType; + } + + public void setPaymentType(String[] newPaymentType) { + this.paymentType = newPaymentType; + } + + public String[] getBankCode() { + return this.bankCode; + } + + public void setBankCode(String[] newBankCode) { + this.bankCode = newBankCode; + } + + public String[] getBankName() { + return this.bankName; + } + + public void setBankName(String[] newBankName) { + this.bankName = newBankName; + } + + public String[] getAccountNumber() { + return this.accountNumber; + } + + public void setAccountNumber(String[] newAccountNumber) { + this.accountNumber = newAccountNumber; + } + + public String[] getEmployeeStatus() { + return this.employeeStatus; + } + + public void setEmployeeStatus(String[] newEmployeeStatus) { + this.employeeStatus = newEmployeeStatus; + } + + public String[] getStatusEffectDate() { + return this.statusEffectDate; + } + + public void setStatusEffectDate(String[] newStatusEffectDate) { + this.statusEffectDate = newStatusEffectDate; + } + + public String[] getRetirementDate() { + return this.retirementDate; + } + + public void setRetirementDate(String[] newRetirementDate) { + this.retirementDate = newRetirementDate; + } + + public String[] getAccountingSite() { + return this.accountingSite; + } + + public void setAccountingSite(String[] newAccountingSite) { + this.accountingSite = newAccountingSite; + } + + public String[] getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String[] newCostCentre) { + this.costCentre = newCostCentre; + } + + public String[] getSeparationType() { + return this.separationType; + } + + public void setSeparationType(String[] newSeparationType) { + this.separationType = newSeparationType; + } + + public String getButSeparationType() { + return this.butSeparationType; + } + + public void setButSeparationType(String newButSeparationType) { + this.butSeparationType = newButSeparationType; + } + + public String getButCostCentre() { + return this.butCostCentre; + } + + public void setButCostCentre(String newButCostCentre) { + this.butCostCentre = newButCostCentre; + } + + public String getButAccSite() { + return this.butAccSite; + } + + public void setButAccSite(String newButAccSite) { + this.butAccSite = newButAccSite; + } + + public String getButRetirementDate() { + return this.butRetirementDate; + } + + public void setButRetirementDate(String newButRetirementDate) { + this.butRetirementDate = newButRetirementDate; + } + + public String getButStatusDate() { + return this.butStatusDate; + } + + public void setButStatusDate(String newButStatusDate) { + this.butStatusDate = newButStatusDate; + } + + public String getButEmployeeStatus() { + return this.butEmployeeStatus; + } + + public void setButEmployeeStatus(String newButEmployeeStatus) { + this.butEmployeeStatus = newButEmployeeStatus; + } + + public String getButEntryMode() { + return this.butEntryMode; + } + + public void setButEntryMode(String newButEntryMode) { + this.butEntryMode = newButEntryMode; + } + + public String getButSiteCode() { + return this.butSiteCode; + } + + public void setButSiteCode(String newButSiteCode) { + this.butSiteCode = newButSiteCode; + } + + public String getButTentativeConfDate() { + return this.butTentativeConfDate; + } + + public void setButTentativeConfDate(String newButTentativeConfDate) { + this.butTentativeConfDate = newButTentativeConfDate; + } + + public String getButCompJoiningDate() { + return this.butCompJoiningDate; + } + + public void setButCompJoiningDate(String newButCompJoiningDate) { + this.butCompJoiningDate = newButCompJoiningDate; + } + + public String[] getTxtName() { + return this.txtName; + } + + public void setTxtName(String[] newTxtName) { + this.txtName = newTxtName; + } + + public String[] getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String[] newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String[] getTxtTelephoneNo() { + return this.txtTelephoneNo; + } + + public void setTxtTelephoneNo(String[] newTxtTelephoneNo) { + this.txtTelephoneNo = newTxtTelephoneNo; + } + + public String[] getTxtPositionOccupation() { + return this.txtPositionOccupation; + } + + public void setTxtPositionOccupation(String[] newTxtPositionOccupation) { + this.txtPositionOccupation = newTxtPositionOccupation; + } + + public String[] getTxtMinorDetails() { + return this.txtMinorDetails; + } + + public void setTxtMinorDetails(String[] newTxtMinorDetails) { + this.txtMinorDetails = newTxtMinorDetails; + } + + public String[] getTxtTotalAmount() { + return this.txtTotalAmount; + } + + public void setTxtTotalAmount(String[] newTxtTotalAmount) { + this.txtTotalAmount = newTxtTotalAmount; + } + + public String[] getTxtPercentage() { + return this.txtPercentage; + } + + public void setTxtPercentage(String[] newTxtPercentage) { + this.txtPercentage = newTxtPercentage; + } + + public String[] getTxtDob() { + return this.txtDob; + } + + public void setTxtDob(String[] newTxtDob) { + this.txtDob = newTxtDob; + } + + public String[] getTxtRelation() { + return this.txtRelation; + } + + public void setTxtRelation(String[] newTxtRelation) { + this.txtRelation = newTxtRelation; + } + + public String[] getTxtNomineeName() { + return this.txtNomineeName; + } + + public void setTxtNomineeName(String[] newTxtNomineeName) { + this.txtNomineeName = newTxtNomineeName; + } + + public String[] getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String[] newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } + + public String[] getTxtSchoolColInst() { + return this.txtSchoolColInst; + } + + public void setTxtSchoolColInst(String[] newTxtSchoolColInst) { + this.txtSchoolColInst = newTxtSchoolColInst; + } + + public String[] getTxtExamDegreePassed() { + return this.txtExamDegreePassed; + } + + public void setTxtExamDegreePassed(String[] newTxtExamDegreePassed) { + this.txtExamDegreePassed = newTxtExamDegreePassed; + } + + public String[] getTxtPercentageDivision() { + return this.txtPercentageDivision; + } + + public void setTxtPercentageDivision(String[] newTxtPercentageDivision) { + this.txtPercentageDivision = newTxtPercentageDivision; + } + + public String[] getTxtPassYear() { + return this.txtPassYear; + } + + public void setTxtPassYear(String[] newTxtPassYear) { + this.txtPassYear = newTxtPassYear; + } + + public String[] getTxtMajorSubjects() { + return this.txtMajorSubjects; + } + + public void setTxtMajorSubjects(String[] newTxtMajorSubjects) { + this.txtMajorSubjects = newTxtMajorSubjects; + } + + public String[] getTxtSpecialisation() { + return this.txtSpecialisation; + } + + public void setTxtSpecialisation(String[] newTxtSpecialisation) { + this.txtSpecialisation = newTxtSpecialisation; + } + + public String[] getTxtOtherProfQualification() { + return this.txtOtherProfQualification; + } + + public void setTxtOtherProfQualification(String[] newTxtOtherProfQualification) { + this.txtOtherProfQualification = newTxtOtherProfQualification; + } + + public String[] getTxtSpecialisedCourses() { + return this.txtSpecialisedCourses; + } + + public void setTxtSpecialisedCourses(String[] newTxtSpecialisedCourses) { + this.txtSpecialisedCourses = newTxtSpecialisedCourses; + } + + public String[] getInstName() { + return this.instName; + } + + public void setInstName(String[] newInstName) { + this.instName = newInstName; + } + + public String[] getTxtQualificationId() { + return this.txtQualificationId; + } + + public void setTxtQualificationId(String[] newTxtQualificationId) { + this.txtQualificationId = newTxtQualificationId; + } + + public String[] getTxtQualificationCode() { + return this.txtQualificationCode; + } + + public void setTxtQualificationCode(String[] newTxtQualificationCode) { + this.txtQualificationCode = newTxtQualificationCode; + } + + public String[] getTxtOrgName() { + return this.txtOrgName; + } + + public void setTxtOrgName(String[] newTxtOrgName) { + this.txtOrgName = newTxtOrgName; + } + + public String[] getTxtOrgAdd() { + return this.txtOrgAdd; + } + + public void setTxtOrgAdd(String[] newTxtOrgAdd) { + this.txtOrgAdd = newTxtOrgAdd; + } + + public String[] getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String[] newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String[] getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String[] newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String[] getTxtWorkExp() { + return this.txtWorkExp; + } + + public void setTxtWorkExp(String[] newTxtWorkExp) { + this.txtWorkExp = newTxtWorkExp; + } + + public String[] getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String[] newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String[] getTxtReportTo() { + return this.txtReportTo; + } + + public void setTxtReportTo(String[] newTxtReportTo) { + this.txtReportTo = newTxtReportTo; + } + + public String[] getTxtJobDesc() { + return this.txtJobDesc; + } + + public void setTxtJobDesc(String[] newTxtJobDesc) { + this.txtJobDesc = newTxtJobDesc; + } + + public String[] getTxtPersonnelSupervised() { + return this.txtPersonnelSupervised; + } + + public void setTxtPersonnelSupervised(String[] newTxtPersonnelSupervised) { + this.txtPersonnelSupervised = newTxtPersonnelSupervised; + } + + public String[] getTxtSalStarting() { + return this.txtSalStarting; + } + + public void setTxtSalStarting(String[] newTxtSalStarting) { + this.txtSalStarting = newTxtSalStarting; + } + + public String[] getTxtSalLeaving() { + return this.txtSalLeaving; + } + + public void setTxtSalLeaving(String[] newTxtSalLeaving) { + this.txtSalLeaving = newTxtSalLeaving; + } + + public String[] getTxtBasic() { + return this.txtBasic; + } + + public void setTxtBasic(String[] newTxtBasic) { + this.txtBasic = newTxtBasic; + } + + public String[] getTxtDa() { + return this.txtDa; + } + + public void setTxtDa(String[] newTxtDa) { + this.txtDa = newTxtDa; + } + + public String[] getTxtHra() { + return this.txtHra; + } + + public void setTxtHra(String[] newTxtHra) { + this.txtHra = newTxtHra; + } + + public String[] getTxtConveyance() { + return this.txtConveyance; + } + + public void setTxtConveyance(String[] newTxtConveyance) { + this.txtConveyance = newTxtConveyance; + } + + public String[] getTxtOtherAllowance() { + return this.txtOtherAllowance; + } + + public void setTxtOtherAllowance(String[] newTxtOtherAllowance) { + this.txtOtherAllowance = newTxtOtherAllowance; + } + + public String[] getTxtBonus() { + return this.txtBonus; + } + + public void setTxtBonus(String[] newTxtBonus) { + this.txtBonus = newTxtBonus; + } + + public String[] getTxtIncentives() { + return this.txtIncentives; + } + + public void setTxtIncentives(String[] newTxtIncentives) { + this.txtIncentives = newTxtIncentives; + } + + public String[] getIncrementDate() { + return this.incrementDate; + } + + public void setIncrementDate(String[] newIncrementDate) { + this.incrementDate = newIncrementDate; + } + + public String[] getCode() { + return this.code; + } + + public void setCode(String[] newCode) { + this.code = newCode; + } + + public String[] getSocialCode() { + return this.socialCode; + } + + public void setSocialCode(String[] newSocialCode) { + this.socialCode = newSocialCode; + } + + public String getDisabaccSite() { + return this.disabaccSite; + } + + public void setDisabaccSite(String newDisabaccSite) { + this.disabaccSite = newDisabaccSite; + } + + public String getDisabaccountNumber() { + return this.disabaccountNumber; + } + + public void setDisabaccountNumber(String newDisabaccountNumber) { + this.disabaccountNumber = newDisabaccountNumber; + } + + public String getDisabaccountingSite() { + return this.disabaccountingSite; + } + + public void setDisabaccountingSite(String newDisabaccountingSite) { + this.disabaccountingSite = newDisabaccountingSite; + } + + public String getDisabaddress() { + return this.disabaddress; + } + + public void setDisabaddress(String newDisabaddress) { + this.disabaddress = newDisabaddress; + } + + public String getDisabbankCode() { + return this.disabbankCode; + } + + public void setDisabbankCode(String newDisabbankCode) { + this.disabbankCode = newDisabbankCode; + } + + public String getDisabbankName() { + return this.disabbankName; + } + + public void setDisabbankName(String newDisabbankName) { + this.disabbankName = newDisabbankName; + } + + public String getDisabbaseSite() { + return this.disabbaseSite; + } + + public void setDisabbaseSite(String newDisabbaseSite) { + this.disabbaseSite = newDisabbaseSite; + } + + public String getDisabbloodGroup() { + return this.disabbloodGroup; + } + + public void setDisabbloodGroup(String newDisabbloodGroup) { + this.disabbloodGroup = newDisabbloodGroup; + } + + public String getDisabbutAccSite() { + return this.disabbutAccSite; + } + + public void setDisabbutAccSite(String newDisabbutAccSite) { + this.disabbutAccSite = newDisabbutAccSite; + } + + public String getDisabbutCompJoiningDate() { + return this.disabbutCompJoiningDate; + } + + public void setDisabbutCompJoiningDate(String newDisabbutCompJoiningDate) { + this.disabbutCompJoiningDate = newDisabbutCompJoiningDate; + } + + public String getDisabbutCostCentre() { + return this.disabbutCostCentre; + } + + public void setDisabbutCostCentre(String newDisabbutCostCentre) { + this.disabbutCostCentre = newDisabbutCostCentre; + } + + public String getDisabbutCountry() { + return this.disabbutCountry; + } + + public void setDisabbutCountry(String newDisabbutCountry) { + this.disabbutCountry = newDisabbutCountry; + } + + public String getDisabbutDateOfBirth() { + return this.disabbutDateOfBirth; + } + + public void setDisabbutDateOfBirth(String newDisabbutDateOfBirth) { + this.disabbutDateOfBirth = newDisabbutDateOfBirth; + } + + public String getDisabbutAnniversaryDate() { + return this.disabbutAnniversaryDate; + } + + public void setDisabbutAnniversaryDate(String newDisabbutAnniversaryDate) { + this.disabbutAnniversaryDate = newDisabbutAnniversaryDate; + } + + public String getDisabbutGunLicenseRenDate() { + return this.disabbutGunLicenseRenDate; + } + + public void setDisabbutGunLicenseRenDate(String newDisabbutGunLicenseRenDate) { + this.disabbutGunLicenseRenDate = newDisabbutGunLicenseRenDate; + } + + public String getDisabbutDepartment() { + return this.disabbutDepartment; + } + + public void setDisabbutDepartment(String newDisabbutDepartment) { + this.disabbutDepartment = newDisabbutDepartment; + } + + public String getDisabbutDesignation() { + return this.disabbutDesignation; + } + + public void setDisabbutDesignation(String newDisabbutDesignation) { + this.disabbutDesignation = newDisabbutDesignation; + } + + public String getDisabvalidUpto() { + return this.disabvalidUpto; + } + + public void setDisabvalidUpto(String newDisabvalidUpto) { + this.disabvalidUpto = newDisabvalidUpto; + } + + public String getDisabbutEmployeeStatus() { + return this.disabbutEmployeeStatus; + } + + public void setDisabbutEmployeeStatus(String newDisabbutEmployeeStatus) { + this.disabbutEmployeeStatus = newDisabbutEmployeeStatus; + } + + public String getDisabbutEntryMode() { + return this.disabbutEntryMode; + } + + public void setDisabbutEntryMode(String newDisabbutEntryMode) { + this.disabbutEntryMode = newDisabbutEntryMode; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getDisabbutHtCountry() { + return this.disabbutHtCountry; + } + + public void setDisabbutHtCountry(String newDisabbutHtCountry) { + this.disabbutHtCountry = newDisabbutHtCountry; + } + + public String getDisabbutHtState() { + return this.disabbutHtState; + } + + public void setDisabbutHtState(String newDisabbutHtState) { + this.disabbutHtState = newDisabbutHtState; + } + + public String getDisabbutLastPromotionDate() { + return this.disabbutLastPromotionDate; + } + + public void setDisabbutLastPromotionDate(String newDisabbutLastPromotionDate) { + this.disabbutLastPromotionDate = newDisabbutLastPromotionDate; + } + + public String getDisabbbutLocJoiningDate() { + return this.disabbbutLocJoiningDate; + } + + public void setDisabbbutLocJoiningDate(String newDisabbbutLocJoiningDate) { + this.disabbbutLocJoiningDate = newDisabbbutLocJoiningDate; + } + + public String getDisabbutLocation() { + return this.disabbutLocation; + } + + public void setDisabbutLocation(String newDisabbutLocation) { + this.disabbutLocation = newDisabbutLocation; + } + + public String getDisabbutMaritalStatus() { + return this.disabbutMaritalStatus; + } + + public void setDisabbutMaritalStatus(String newDisabbutMaritalStatus) { + this.disabbutMaritalStatus = newDisabbutMaritalStatus; + } + + public String getDisabbutMotherTongue() { + return this.disabbutMotherTongue; + } + + public void setDisabbutMotherTongue(String newDisabbutMotherTongue) { + this.disabbutMotherTongue = newDisabbutMotherTongue; + } + + public String getDisabbutNationality() { + return this.disabbutNationality; + } + + public void setDisabbutNationality(String newDisabbutNationality) { + this.disabbutNationality = newDisabbutNationality; + } + + public String getDisabbutPassportExpDate() { + return this.disabbutPassportExpDate; + } + + public void setDisabbutPassportExpDate(String newDisabbutPassportExpDate) { + this.disabbutPassportExpDate = newDisabbutPassportExpDate; + } + + public String getDisabbutPassportIssueDate() { + return this.disabbutPassportIssueDate; + } + + public void setDisabbutPassportIssueDate(String newDisabbutPassportIssueDate) { + this.disabbutPassportIssueDate = newDisabbutPassportIssueDate; + } + + public String getDisabbutPeCountry() { + return this.disabbutPeCountry; + } + + public void setDisabbutPeCountry(String newDisabbutPeCountry) { + this.disabbutPeCountry = newDisabbutPeCountry; + } + + public String getDisabbutPeState() { + return this.disabbutPeState; + } + + public void setDisabbutPeState(String newDisabbutPeState) { + this.disabbutPeState = newDisabbutPeState; + } + + public String getDisabbutPrCountry() { + return this.disabbutPrCountry; + } + + public void setDisabbutPrCountry(String newDisabbutPrCountry) { + this.disabbutPrCountry = newDisabbutPrCountry; + } + + public String getDisabbutPrState() { + return this.disabbutPrState; + } + + public void setDisabbutPrState(String newDisabbutPrState) { + this.disabbutPrState = newDisabbutPrState; + } + + public String getDisabbutRelatedEmployee() { + return this.disabbutRelatedEmployee; + } + + public void setDisabbutRelatedEmployee(String newDisabbutRelatedEmployee) { + this.disabbutRelatedEmployee = newDisabbutRelatedEmployee; + } + + public String getDisabbutValidUpto() { + return this.disabbutValidUpto; + } + + public void setDisabbutValidUpto(String newDisabbutValidUpto) { + this.disabbutValidUpto = newDisabbutValidUpto; + } + + public String getDisabbutReligion() { + return this.disabbutReligion; + } + + public void setDisabbutReligion(String newDisabbutReligion) { + this.disabbutReligion = newDisabbutReligion; + } + + public String getDisabbutReportingEmployee() { + return this.disabbutReportingEmployee; + } + + public void setDisabbutReportingEmployee(String newDisabbutReportingEmployee) { + this.disabbutReportingEmployee = newDisabbutReportingEmployee; + } + + public String getDisabbutRetirementDate() { + return this.disabbutRetirementDate; + } + + public void setDisabbutRetirementDate(String newDisabbutRetirementDate) { + this.disabbutRetirementDate = newDisabbutRetirementDate; + } + + public String getDisabbutRsvCtg() { + return this.disabbutRsvCtg; + } + + public void setDisabbutRsvCtg(String newDisabbutRsvCtg) { + this.disabbutRsvCtg = newDisabbutRsvCtg; + } + + public String getDisabbutSeparationType() { + return this.disabbutSeparationType; + } + + public void setDisabbutSeparationType(String newDisabbutSeparationType) { + this.disabbutSeparationType = newDisabbutSeparationType; + } + + public String getDisabbutSiteCode() { + return this.disabbutSiteCode; + } + + public void setDisabbutSiteCode(String newDisabbutSiteCode) { + this.disabbutSiteCode = newDisabbutSiteCode; + } + + public String getDisabbutState() { + return this.disabbutState; + } + + public void setDisabbutState(String newDisabbutState) { + this.disabbutState = newDisabbutState; + } + + public String getDisabbutStatusDate() { + return this.disabbutStatusDate; + } + + public void setDisabbutStatusDate(String newDisabbutStatusDate) { + this.disabbutStatusDate = newDisabbutStatusDate; + } + + public String getDisabbutTentativeConfDate() { + return this.disabbutTentativeConfDate; + } + + public void setDisabbutTentativeConfDate(String newDisabbutTentativeConfDate) { + this.disabbutTentativeConfDate = newDisabbutTentativeConfDate; + } + + public String getDisabcity() { + return this.disabcity; + } + + public void setDisabcity(String newDisabcity) { + this.disabcity = newDisabcity; + } + + public String getDisabcode() { + return this.disabcode; + } + + public void setDisabcode(String newDisabcode) { + this.disabcode = newDisabcode; + } + + public String getDisabcompJoiningDate() { + return this.disabcompJoiningDate; + } + + public void setDisabcompJoiningDate(String newDisabcompJoiningDate) { + this.disabcompJoiningDate = newDisabcompJoiningDate; + } + + public String getDisabcostCentre() { + return this.disabcostCentre; + } + + public void setDisabcostCentre(String newDisabcostCentre) { + this.disabcostCentre = newDisabcostCentre; + } + + public String getDisabcountry() { + return this.disabcountry; + } + + public void setDisabcountry(String newDisabcountry) { + this.disabcountry = newDisabcountry; + } + + public String getDisabdateOfBirth() { + return this.disabdateOfBirth; + } + + public void setDisabdateOfBirth(String newDisabdateOfBirth) { + this.disabdateOfBirth = newDisabdateOfBirth; + } + + public String getDisabAnniversaryDate() { + return this.disabAnniversaryDate; + } + + public void setDisabAnniversaryDate(String newDisabAnniversaryDate) { + this.disabAnniversaryDate = newDisabAnniversaryDate; + } + + public String getDisabdepartment() { + return this.disabdepartment; + } + + public void setDisabdepartment(String newDisabdepartment) { + this.disabdepartment = newDisabdepartment; + } + + public String getDisabdependants() { + return this.disabdependants; + } + + public void setDisabdependants(String newDisabdependants) { + this.disabdependants = newDisabdependants; + } + + public String getDisabdesignation() { + return this.disabdesignation; + } + + public void setDisabdesignation(String newDisabdesignation) { + this.disabdesignation = newDisabdesignation; + } + + public String getDisasbdrivingLicenseNo() { + return this.disasbdrivingLicenseNo; + } + + public void setDisasbdrivingLicenseNo(String newDisasbdrivingLicenseNo) { + this.disasbdrivingLicenseNo = newDisasbdrivingLicenseNo; + } + + public String getDisabemployeeStatus() { + return this.disabemployeeStatus; + } + + public void setDisabemployeeStatus(String newDisabemployeeStatus) { + this.disabemployeeStatus = newDisabemployeeStatus; + } + + public String getDisabentryMode() { + return this.disabentryMode; + } + + public void setDisabentryMode(String newDisabentryMode) { + this.disabentryMode = newDisabentryMode; + } + + public String getDisabextension() { + return this.disabextension; + } + + public void setDisabextension(String newDisabextension) { + this.disabextension = newDisabextension; + } + + public String getDisabfax() { + return this.disabfax; + } + + public void setDisabfax(String newDisabfax) { + this.disabfax = newDisabfax; + } + + public String getDisabgrade() { + return this.disabgrade; + } + + public void setDisabgrade(String newDisabgrade) { + this.disabgrade = newDisabgrade; + } + + public String getDisabguardianName() { + return this.disabguardianName; + } + + public void setDisabguardianName(String newDisabguardianName) { + this.disabguardianName = newDisabguardianName; + } + + public String getDisabhandicappedFlag() { + return this.disabhandicappedFlag; + } + + public void setDisabhandicappedFlag(String newDisabhandicappedFlag) { + this.disabhandicappedFlag = newDisabhandicappedFlag; + } + + public String getDisabtentativeConfDate() { + return this.disabtentativeConfDate; + } + + public void setDisabtentativeConfDate(String newDisabtentativeConfDate) { + this.disabtentativeConfDate = newDisabtentativeConfDate; + } + + public String getDisabstatusEffectDate() { + return this.disabstatusEffectDate; + } + + public void setDisabstatusEffectDate(String newDisabstatusEffectDate) { + this.disabstatusEffectDate = newDisabstatusEffectDate; + } + + public String getDisabstate() { + return this.disabstate; + } + + public void setDisabstate(String newDisabstate) { + this.disabstate = newDisabstate; + } + + public String getDisabspouseOccupation() { + return this.disabspouseOccupation; + } + + public void setDisabspouseOccupation(String newDisabspouseOccupation) { + this.disabspouseOccupation = newDisabspouseOccupation; + } + + public String getDisabspouseName() { + return this.disabspouseName; + } + + public void setDisabspouseName(String newDisabspouseName) { + this.disabspouseName = newDisabspouseName; + } + + public String getDisasbsocialCode() { + return this.disasbsocialCode; + } + + public void setDisasbsocialCode(String newDisasbsocialCode) { + this.disasbsocialCode = newDisasbsocialCode; + } + + public String getDisabsex() { + return this.disabsex; + } + + public void setDisabsex(String newDisabsex) { + this.disabsex = newDisabsex; + } + + public String getDisabseparationType() { + return this.disabseparationType; + } + + public void setDisabseparationType(String newDisabseparationType) { + this.disabseparationType = newDisabseparationType; + } + + public String getDisabsepCode() { + return this.disabsepCode; + } + + public void setDisabsepCode(String newDisabsepCode) { + this.disabsepCode = newDisabsepCode; + } + + public String getDisabsecPhone() { + return this.disabsecPhone; + } + + public void setDisabsecPhone(String newDisabsecPhone) { + this.disabsecPhone = newDisabsecPhone; + } + + public String getDisabsecExtension() { + return this.disabsecExtension; + } + + public void setDisabsecExtension(String newDisabsecExtension) { + this.disabsecExtension = newDisabsecExtension; + } + + public String getDisabrsvCtg() { + return this.disabrsvCtg; + } + + public void setDisabrsvCtg(String newDisabrsvCtg) { + this.disabrsvCtg = newDisabrsvCtg; + } + + public String getDisabretirementDate() { + return this.disabretirementDate; + } + + public void setDisabretirementDate(String newDisabretirementDate) { + this.disabretirementDate = newDisabretirementDate; + } + + public String getDisabreportingEmployee() { + return this.disabreportingEmployee; + } + + public void setDisabreportingEmployee(String newDisabreportingEmployee) { + this.disabreportingEmployee = newDisabreportingEmployee; + } + + public String getDisabreligion() { + return this.disabreligion; + } + + public void setDisabreligion(String newDisabreligion) { + this.disabreligion = newDisabreligion; + } + + public String getDisabrelatedToEmployee() { + return this.disabrelatedToEmployee; + } + + public void setDisabrelatedToEmployee(String newDisabrelatedToEmployee) { + this.disabrelatedToEmployee = newDisabrelatedToEmployee; + } + + public String getDisabrelatedEmployee() { + return this.disabrelatedEmployee; + } + + public void setDisabrelatedEmployee(String newDisabrelatedEmployee) { + this.disabrelatedEmployee = newDisabrelatedEmployee; + } + + public String getDisabrefNo() { + return this.disabrefNo; + } + + public void setDisabrefNo(String newDisabrefNo) { + this.disabrefNo = newDisabrefNo; + } + + public String getDisabprState() { + return this.disabprState; + } + + public void setDisabprState(String newDisabprState) { + this.disabprState = newDisabprState; + } + + public String getDisabprPinCode() { + return this.disabprPinCode; + } + + public void setDisabprPinCode(String newDisabprPinCode) { + this.disabprPinCode = newDisabprPinCode; + } + + public String getDisabprPhone() { + return this.disabprPhone; + } + + public void setDisabprPhone(String newDisabprPhone) { + this.disabprPhone = newDisabprPhone; + } + + public String getDisabprCountry() { + return this.disabprCountry; + } + + public void setDisabprCountry(String newDisabprCountry) { + this.disabprCountry = newDisabprCountry; + } + + public String getDisabprCity() { + return this.disabprCity; + } + + public void setDisabprCity(String newDisabprCity) { + this.disabprCity = newDisabprCity; + } + + public String getDisabprAddress() { + return this.disabprAddress; + } + + public void setDisabprAddress(String newDisabprAddress) { + this.disabprAddress = newDisabprAddress; + } + + public String getDisabplaceOfIssue() { + return this.disabplaceOfIssue; + } + + public void setDisabplaceOfIssue(String newDisabplaceOfIssue) { + this.disabplaceOfIssue = newDisabplaceOfIssue; + } + + public String getDisabplaceOfInitialPosting() { + return this.disabplaceOfInitialPosting; + } + + public void setDisabplaceOfInitialPosting(String newDisabplaceOfInitialPosting) { + this.disabplaceOfInitialPosting = newDisabplaceOfInitialPosting; + } + + public String getDisabplaceOfBirth() { + return this.disabplaceOfBirth; + } + + public void setDisabplaceOfBirth(String newDisabplaceOfBirth) { + this.disabplaceOfBirth = newDisabplaceOfBirth; + } + + public String getDisabpinCode() { + return this.disabpinCode; + } + + public void setDisabpinCode(String newDisabpinCode) { + this.disabpinCode = newDisabpinCode; + } + + public String getDisabphone() { + return this.disabphone; + } + + public void setDisabphone(String newDisabphone) { + this.disabphone = newDisabphone; + } + + public String getDisabpfNumber() { + return this.disabpfNumber; + } + + public void setDisabpfNumber(String newDisabpfNumber) { + this.disabpfNumber = newDisabpfNumber; + } + + public String getDisabhtAddress() { + return this.disabhtAddress; + } + + public void setDisabhtAddress(String newDisabhtAddress) { + this.disabhtAddress = newDisabhtAddress; + } + + public String getDisabhtCity() { + return this.disabhtCity; + } + + public void setDisabhtCity(String newDisabhtCity) { + this.disabhtCity = newDisabhtCity; + } + + public String getDisabhtCountry() { + return this.disabhtCountry; + } + + public void setDisabhtCountry(String newDisabhtCountry) { + this.disabhtCountry = newDisabhtCountry; + } + + public String getDisabhtPhone() { + return this.disabhtPhone; + } + + public void setDisabhtPhone(String newDisabhtPhone) { + this.disabhtPhone = newDisabhtPhone; + } + + public String getDisabhtPinCode() { + return this.disabhtPinCode; + } + + public void setDisabhtPinCode(String newDisabhtPinCode) { + this.disabhtPinCode = newDisabhtPinCode; + } + + public String getDisabhtState() { + return this.disabhtState; + } + + public void setDisabhtState(String newDisabhtState) { + this.disabhtState = newDisabhtState; + } + + public String getDisabidMark() { + return this.disabidMark; + } + + public void setDisabidMark(String newDisabidMark) { + this.disabidMark = newDisabidMark; + } + + public String getDisabincrementDate() { + return this.disabincrementDate; + } + + public void setDisabincrementDate(String newDisabincrementDate) { + this.disabincrementDate = newDisabincrementDate; + } + + public String getDisabinstName() { + return this.disabinstName; + } + + public void setDisabinstName(String newDisabinstName) { + this.disabinstName = newDisabinstName; + } + + public String getDisablastPromotionDate() { + return this.disablastPromotionDate; + } + + public void setDisablastPromotionDate(String newDisablastPromotionDate) { + this.disablastPromotionDate = newDisablastPromotionDate; + } + + public String getDisablocJoiningDate() { + return this.disablocJoiningDate; + } + + public void setDisablocJoiningDate(String newDisablocJoiningDate) { + this.disablocJoiningDate = newDisablocJoiningDate; + } + + public String getDisablocation() { + return this.disablocation; + } + + public void setDisablocation(String newDisablocation) { + this.disablocation = newDisablocation; + } + + public String getDisabmaritalStatus() { + return this.disabmaritalStatus; + } + + public void setDisabmaritalStatus(String newDisabmaritalStatus) { + this.disabmaritalStatus = newDisabmaritalStatus; + } + + public String getDisabmobile() { + return this.disabmobile; + } + + public void setDisabmobile(String newDisabmobile) { + this.disabmobile = newDisabmobile; + } + + public String getDisabmotherTongue() { + return this.disabmotherTongue; + } + + public void setDisabmotherTongue(String newDisabmotherTongue) { + this.disabmotherTongue = newDisabmotherTongue; + } + + public String getDisabnationality() { + return this.disabnationality; + } + + public void setDisabnationality(String newDisabnationality) { + this.disabnationality = newDisabnationality; + } + + public String getDisabpanNumber() { + return this.disabpanNumber; + } + + public void setDisabpanNumber(String newDisabpanNumber) { + this.disabpanNumber = newDisabpanNumber; + } + + public String getDisabpassportNo() { + return this.disabpassportNo; + } + + public void setDisabpassportNo(String newDisabpassportNo) { + this.disabpassportNo = newDisabpassportNo; + } + + public String getDisabpaymentType() { + return this.disabpaymentType; + } + + public void setDisabpaymentType(String newDisabpaymentType) { + this.disabpaymentType = newDisabpaymentType; + } + + public String getDisabpeAddress() { + return this.disabpeAddress; + } + + public void setDisabpeAddress(String newDisabpeAddress) { + this.disabpeAddress = newDisabpeAddress; + } + + public String getDisabpeCity() { + return this.disabpeCity; + } + + public void setDisabpeCity(String newDisabpeCity) { + this.disabpeCity = newDisabpeCity; + } + + public String getDisabpeCountry() { + return this.disabpeCountry; + } + + public void setDisabpeCountry(String newDisabpeCountry) { + this.disabpeCountry = newDisabpeCountry; + } + + public String getDisabpePhone() { + return this.disabpePhone; + } + + public void setDisabpePhone(String newDisabpePhone) { + this.disabpePhone = newDisabpePhone; + } + + public String getDisabpePinCode() { + return this.disabpePinCode; + } + + public void setDisabpePinCode(String newDisabpePinCode) { + this.disabpePinCode = newDisabpePinCode; + } + + public String getDisabpeState() { + return this.disabpeState; + } + + public void setDisabpeState(String newDisabpeState) { + this.disabpeState = newDisabpeState; + } + + public String getDisabbutLocJoiningDate() { + return this.disabbutLocJoiningDate; + } + + public void setDisabbutLocJoiningDate(String newDisabbutLocJoiningDate) { + this.disabbutLocJoiningDate = newDisabbutLocJoiningDate; + } + + public String[] getLevel() { + return this.level; + } + + public void setLevel(String[] newLevel) { + this.level = newLevel; + } + + public String[] getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String[] newLocationCode) { + this.locationCode = newLocationCode; + } + + public String[] getNationalityId() { + return this.nationalityId; + } + + public void setNationalityId(String[] newNationalityId) { + this.nationalityId = newNationalityId; + } + + public String getEmpNumberId() { + return this.empNumberId; + } + + public void setEmpNumberId(String newEmpNumberId) { + this.empNumberId = newEmpNumberId; + } + + public String[] getMotherTongueId() { + return this.motherTongueId; + } + + public void setMotherTongueId(String[] newMotherTongueId) { + this.motherTongueId = newMotherTongueId; + } + + public String[] getMaritalId() { + return this.maritalId; + } + + public void setMaritalId(String[] newMaritalId) { + this.maritalId = newMaritalId; + } + + public String[] getBankId() { + return this.bankId; + } + + public void setBankId(String[] newBankId) { + this.bankId = newBankId; + } + + public String getButBank() { + return this.butBank; + } + + public void setButBank(String newButBank) { + this.butBank = newButBank; + } + + public String getDisabbutBank() { + return this.disabbutBank; + } + + public void setDisabbutBank(String newDisabbutBank) { + this.disabbutBank = newDisabbutBank; + } + + public String getDisabbutQualCode() { + return this.disabbutQualCode; + } + + public void setDisabbutQualCode(String newDisabbutQualCode) { + this.disabbutQualCode = newDisabbutQualCode; + } + + public String getDisabbutRelation() { + return this.disabbutRelation; + } + + public void setDisabbutRelation(String newDisabbutRelation) { + this.disabbutRelation = newDisabbutRelation; + } + + public String[] getTxtRelationId() { + return this.txtRelationId; + } + + public void setTxtRelationId(String[] newTxtRelationId) { + this.txtRelationId = newTxtRelationId; + } + + public String[] getTxtNomineeId() { + return this.txtNomineeId; + } + + public void setTxtNomineeId(String[] newTxtNomineeId) { + this.txtNomineeId = newTxtNomineeId; + } + + public String getDisabgirNumber() { + return this.disabgirNumber; + } + + public void setDisabgirNumber(String newDisabgirNumber) { + this.disabgirNumber = newDisabgirNumber; + } + + public String getDisabdrivingLicenseNo() { + return this.disabdrivingLicenseNo; + } + + public void setDisabdrivingLicenseNo(String newDisabdrivingLicenseNo) { + this.disabdrivingLicenseNo = newDisabdrivingLicenseNo; + } + + public String getDisabmotherName() { + return this.disabmotherName; + } + + public void setDisabmotherName(String newDisabmotherName) { + this.disabmotherName = newDisabmotherName; + } + + public String getVisibilityFlag() { + return this.visibilityFlag; + } + + public void setVisibilityFlag(String newVisibilityFlag) { + this.visibilityFlag = newVisibilityFlag; + } + + public String[] getBranchName() { + return this.branchName; + } + + public void setBranchName(String[] newBranchName) { + this.branchName = newBranchName; + } + + public String[] getMobile() { + return this.mobile; + } + + public void setMobile(String[] newMobile) { + this.mobile = newMobile; + } + + public String[] getPersonalEmail() { + return this.personalEmail; + } + + public void setPersonalEmail(String[] newPersonalEmail) { + this.personalEmail = newPersonalEmail; + } + + public String[] getDeptCode() { + return this.deptCode; + } + + public void setDeptCode(String[] newDeptCode) { + this.deptCode = newDeptCode; + } + + public String getDisabemail() { + return this.disabemail; + } + + public void setDisabemail(String newDisabemail) { + this.disabemail = newDisabemail; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } + + public String getButDraftSave() { + return this.butDraftSave; + } + + public void setButDraftSave(String newButDraftSave) { + this.butDraftSave = newButDraftSave; + } + + public String getDisabbutDraftSave() { + return this.disabbutDraftSave; + } + + public void setDisabbutDraftSave(String newDisabbutDraftSave) { + this.disabbutDraftSave = newDisabbutDraftSave; + } + + public String[] getFlat() { + return this.flat; + } + + public void setFlat(String[] newFlat) { + this.flat = newFlat; + } + + public String getDisabflat() { + return this.disabflat; + } + + public void setDisabflat(String newDisabflat) { + this.disabflat = newDisabflat; + } + + public String getDisabtabAddDtls() { + return this.disabtabAddDtls; + } + + public void setDisabtabAddDtls(String newDisabtabAddDtls) { + this.disabtabAddDtls = newDisabtabAddDtls; + } + + public String getDisabtabJoiningInfo() { + return this.disabtabJoiningInfo; + } + + public void setDisabtabJoiningInfo(String newDisabtabJoiningInfo) { + this.disabtabJoiningInfo = newDisabtabJoiningInfo; + } + + public String getDisabtabEmpHist() { + return this.disabtabEmpHist; + } + + public void setDisabtabEmpHist(String newDisabtabEmpHist) { + this.disabtabEmpHist = newDisabtabEmpHist; + } + + public String getDisabtabPriorExp() { + return this.disabtabPriorExp; + } + + public void setDisabtabPriorExp(String newDisabtabPriorExp) { + this.disabtabPriorExp = newDisabtabPriorExp; + } + + public String getDisabtabEduDtls() { + return this.disabtabEduDtls; + } + + public void setDisabtabEduDtls(String newDisabtabEduDtls) { + this.disabtabEduDtls = newDisabtabEduDtls; + } + + public String getDisabtabPFDtls() { + return this.disabtabPFDtls; + } + + public void setDisabtabPFDtls(String newDisabtabPFDtls) { + this.disabtabPFDtls = newDisabtabPFDtls; + } + + public String getDisabtabTrngDtls() { + return this.disabtabTrngDtls; + } + + public void setDisabtabTrngDtls(String newDisabtabTrngDtls) { + this.disabtabTrngDtls = newDisabtabTrngDtls; + } + + public String getDisabtabAwardDtls() { + return this.disabtabAwardDtls; + } + + public void setDisabtabAwardDtls(String newDisabtabAwardDtls) { + this.disabtabAwardDtls = newDisabtabAwardDtls; + } + + public String getDisabtabInsDtls() { + return this.disabtabInsDtls; + } + + public void setDisabtabInsDtls(String newDisabtabInsDtls) { + this.disabtabInsDtls = newDisabtabInsDtls; + } + + public String getDisabtabHealth() { + return this.disabtabHealth; + } + + public void setDisabtabHealth(String newDisabtabHealth) { + this.disabtabHealth = newDisabtabHealth; + } + + public String getDisabtabRef() { + return this.disabtabRef; + } + + public void setDisabtabRef(String newDisabtabRef) { + this.disabtabRef = newDisabtabRef; + } + + public String getDisabpersonalEmail() { + return this.disabpersonalEmail; + } + + public void setDisabpersonalEmail(String newDisabpersonalEmail) { + this.disabpersonalEmail = newDisabpersonalEmail; + } + + public String[] getJobRespId() { + return this.jobRespId; + } + + public void setJobRespId(String[] newJobRespId) { + this.jobRespId = newJobRespId; + } + + public String[] getJobResp() { + return this.jobResp; + } + + public void setJobResp(String[] newJobResp) { + this.jobResp = newJobResp; + } + + public String[] getButjobResp() { + return this.butjobResp; + } + + public void setButjobResp(String[] newButjobResp) { + this.butjobResp = newButjobResp; + } + + public String[] getAnniversaryDate() { + return this.anniversaryDate; + } + + public void setAnniversaryDate(String[] newAnniversaryDate) { + this.anniversaryDate = newAnniversaryDate; + } + + public String[] getMotherName() { + return this.motherName; + } + + public void setMotherName(String[] newMotherName) { + this.motherName = newMotherName; + } + + public String[] getScsmemershipNo() { + return this.scsmemershipNo; + } + + public void setScsmemershipNo(String[] newScsmemershipNo) { + this.scsmemershipNo = newScsmemershipNo; + } + + public String getButAnniversaryDate() { + return this.butAnniversaryDate; + } + + public void setButAnniversaryDate(String newButAnniversaryDate) { + this.butAnniversaryDate = newButAnniversaryDate; + } + + public String[] getGunLicenseNo() { + return this.gunLicenseNo; + } + + public void setGunLicenseNo(String[] newGunLicenseNo) { + this.gunLicenseNo = newGunLicenseNo; + } + + public String[] getGunLicenseRenDate() { + return this.gunLicenseRenDate; + } + + public void setGunLicenseRenDate(String[] newGunLicenseRenDate) { + this.gunLicenseRenDate = newGunLicenseRenDate; + } + + public String getButGunLicenseRenDate() { + return this.butGunLicenseRenDate; + } + + public void setButGunLicenseRenDate(String newButGunLicenseRenDate) { + this.butGunLicenseRenDate = newButGunLicenseRenDate; + } + + public String getDisabGunLicenseRenDate() { + return this.disabGunLicenseRenDate; + } + + public void setDisabGunLicenseRenDate(String newDisabGunLicenseRenDate) { + this.disabGunLicenseRenDate = newDisabGunLicenseRenDate; + } + + public String[] getSpouseOrganization() { + return this.spouseOrganization; + } + + public void setSpouseOrganization(String[] newSpouseOrganization) { + this.spouseOrganization = newSpouseOrganization; + } + + public String[] getSpOrgType() { + return this.spOrgType; + } + + public void setSpOrgType(String[] newSpOrgType) { + this.spOrgType = newSpOrgType; + } + + public String[] getSpTransferable() { + return this.spTransferable; + } + + public void setSpTransferable(String[] newSpTransferable) { + this.spTransferable = newSpTransferable; + } + + public String[] getTxtAwdName() { + return this.txtAwdName; + } + + public void setTxtAwdName(String[] newTxtAwdName) { + this.txtAwdName = newTxtAwdName; + } + + public String[] getTxtAwdYear() { + return this.txtAwdYear; + } + + public void setTxtAwdYear(String[] newTxtAwdYear) { + this.txtAwdYear = newTxtAwdYear; + } + + public String[] getTxtAwdField() { + return this.txtAwdField; + } + + public void setTxtAwdField(String[] newTxtAwdField) { + this.txtAwdField = newTxtAwdField; + } + + public String[] getTxtAwdDate() { + return this.txtAwdDate; + } + + public void setTxtAwdDate(String[] newTxtAwdDate) { + this.txtAwdDate = newTxtAwdDate; + } + + public String getButAwdDate() { + return this.butAwdDate; + } + + public void setButAwdDate(String newButAwdDate) { + this.butAwdDate = newButAwdDate; + } + + public String getButInvDate() { + return this.butInvDate; + } + + public void setButInvDate(String newButInvDate) { + this.butInvDate = newButInvDate; + } + + public String getDisabbutAwdDate() { + return this.disabbutAwdDate; + } + + public void setDisabbutAwdDate(String newDisabbutAwdDate) { + this.disabbutAwdDate = newDisabbutAwdDate; + } + + public String getDisabinvDate() { + return this.disabinvDate; + } + + public void setDisabinvDate(String newDisabinvDate) { + this.disabinvDate = newDisabinvDate; + } + + public String getDisabbutInvDate() { + return this.disabbutInvDate; + } + + public void setDisabbutInvDate(String newDisabbutInvDate) { + this.disabbutInvDate = newDisabbutInvDate; + } + + public String getDisabbutHealthStartDate() { + return this.disabbutHealthStartDate; + } + + public void setDisabbutHealthStartDate(String newDisabbutHealthStartDate) { + this.disabbutHealthStartDate = newDisabbutHealthStartDate; + } + + public String getDisabbutHealthEndDate() { + return this.disabbutHealthEndDate; + } + + public void setDisabbutHealthEndDate(String newDisabbutHealthEndDate) { + this.disabbutHealthEndDate = newDisabbutHealthEndDate; + } + + public String[] getClubMembership() { + return this.clubMembership; + } + + public void setClubMembership(String[] newClubMembership) { + this.clubMembership = newClubMembership; + } + + public String[] getInvDtls() { + return this.invDtls; + } + + public void setInvDtls(String[] newInvDtls) { + this.invDtls = newInvDtls; + } + + public String[] getInvAmount() { + return this.invAmount; + } + + public void setInvAmount(String[] newInvAmount) { + this.invAmount = newInvAmount; + } + + public String[] getInvPolicyNo() { + return this.invPolicyNo; + } + + public void setInvPolicyNo(String[] newInvPolicyNo) { + this.invPolicyNo = newInvPolicyNo; + } + + public String[] getInvDate() { + return this.invDate; + } + + public void setInvDate(String[] newInvDate) { + this.invDate = newInvDate; + } + + public String[] getUnionInfo() { + return this.unionInfo; + } + + public void setUnionInfo(String[] newUnionInfo) { + this.unionInfo = newUnionInfo; + } + + public String[] getHealthDtls() { + return this.healthDtls; + } + + public void setHealthDtls(String[] newHealthDtls) { + this.healthDtls = newHealthDtls; + } + + public String[] getHealthStartDate() { + return this.healthStartDate; + } + + public void setHealthStartDate(String[] newHealthStartDate) { + this.healthStartDate = newHealthStartDate; + } + + public String[] getHealthEndDate() { + return this.healthEndDate; + } + + public void setHealthEndDate(String[] newHealthEndDate) { + this.healthEndDate = newHealthEndDate; + } + + public String[] getLngName() { + return this.lngName; + } + + public void setLngName(String[] newLngName) { + this.lngName = newLngName; + } + + public String[] getLngSpeak() { + return this.lngSpeak; + } + + public void setLngSpeak(String[] newLngSpeak) { + this.lngSpeak = newLngSpeak; + } + + public String[] getLngRead() { + return this.lngRead; + } + + public void setLngRead(String[] newLngRead) { + this.lngRead = newLngRead; + } + + public String[] getLngWrite() { + return this.lngWrite; + } + + public void setLngWrite(String[] newLngWrite) { + this.lngWrite = newLngWrite; + } + + public String getButLngName() { + return this.butLngName; + } + + public void setButLngName(String newButLngName) { + this.butLngName = newButLngName; + } + + public String getDisabbutLngName() { + return this.disabbutLngName; + } + + public void setDisabbutLngName(String newDisabbutLngName) { + this.disabbutLngName = newDisabbutLngName; + } + + public String[] getDistrict() { + return this.district; + } + + public void setDistrict(String[] district) { + this.district = district; + } + + public String[] getPeDistrict() { + return this.peDistrict; + } + + public void setPeDistrict(String[] peDistrict) { + this.peDistrict = peDistrict; + } + + public String[] getPrDistrict() { + return this.prDistrict; + } + + public void setPrDistrict(String[] prDistrict) { + this.prDistrict = prDistrict; + } + + public String[] getHtDistrict() { + return this.htDistrict; + } + + public void setHtDistrict(String[] htDistrict) { + this.htDistrict = htDistrict; + } + + public String[] getTehsil() { + return this.tehsil; + } + + public void setTehsil(String[] tehsil) { + this.tehsil = tehsil; + } + + public String[] getPeTehsil() { + return this.peTehsil; + } + + public void setPeTehsil(String[] peTehsil) { + this.peTehsil = peTehsil; + } + + public String[] getPrTehsil() { + return this.prTehsil; + } + + public void setPrTehsil(String[] prTehsil) { + this.prTehsil = prTehsil; + } + + public String[] getHtTehsil() { + return this.htTehsil; + } + + public void setHtTehsil(String[] htTehsil) { + this.htTehsil = htTehsil; + } + + public String getButDistrict() { + return this.butDistrict; + } + + public void setButDistrict(String butDistrict) { + this.butDistrict = butDistrict; + } + + public String getButPeDistrict() { + return this.butPeDistrict; + } + + public void setButPeDistrict(String butPeDistrict) { + this.butPeDistrict = butPeDistrict; + } + + public String getButPrDistrict() { + return this.butPrDistrict; + } + + public void setButPrDistrict(String butPrDistrict) { + this.butPrDistrict = butPrDistrict; + } + + public String getButHtDistrict() { + return this.butHtDistrict; + } + + public void setButHtDistrict(String butHtDistrict) { + this.butHtDistrict = butHtDistrict; + } + + public String getButTehsil() { + return this.butTehsil; + } + + public void setButTehsil(String butTehsil) { + this.butTehsil = butTehsil; + } + + public String getButPeTehsil() { + return this.butPeTehsil; + } + + public void setButPeTehsil(String butPeTehsil) { + this.butPeTehsil = butPeTehsil; + } + + public String getButPrTehsil() { + return this.butPrTehsil; + } + + public void setButPrTehsil(String butPrTehsil) { + this.butPrTehsil = butPrTehsil; + } + + public String getButHtTehsil() { + return this.butHtTehsil; + } + + public void setButHtTehsil(String butHtTehsil) { + this.butHtTehsil = butHtTehsil; + } + + public String[] getDistrictId() { + return this.districtId; + } + + public void setDistrictId(String[] districtId) { + this.districtId = districtId; + } + + public String[] getDistrictCode() { + return this.districtCode; + } + + public void setDistrictCode(String[] districtCode) { + this.districtCode = districtCode; + } + + public String[] getTehsilCode() { + return this.tehsilCode; + } + + public void setTehsilCode(String[] tehsilCode) { + this.tehsilCode = tehsilCode; + } + + public String[] getTehsilId() { + return this.tehsilId; + } + + public void setTehsilId(String[] tehsilId) { + this.tehsilId = tehsilId; + } + + public String getDisabbutDistrict() { + return this.disabbutDistrict; + } + + public void setDisabbutDistrict(String disabbutDistrict) { + this.disabbutDistrict = disabbutDistrict; + } + + public String getDisabbutPeDistrict() { + return this.disabbutPeDistrict; + } + + public void setDisabbutPeDistrict(String disabbutPeDistrict) { + this.disabbutPeDistrict = disabbutPeDistrict; + } + + public String getDisabbutPrDistrict() { + return this.disabbutPrDistrict; + } + + public void setDisabbutPrDistrict(String disabbutPrDistrict) { + this.disabbutPrDistrict = disabbutPrDistrict; + } + + public String getDisabbutHtDistrict() { + return this.disabbutHtDistrict; + } + + public void setDisabbutHtDistrict(String disabbutHtDistrict) { + this.disabbutHtDistrict = disabbutHtDistrict; + } + + public String getDisabbutTehsil() { + return this.disabbutTehsil; + } + + public void setDisabbutTehsil(String disabbutTehsil) { + this.disabbutTehsil = disabbutTehsil; + } + + public String getDisabbutPeTehsil() { + return this.disabbutPeTehsil; + } + + public void setDisabbutPeTehsil(String disabbutPeTehsil) { + this.disabbutPeTehsil = disabbutPeTehsil; + } + + public String getDisabbutPrTehsil() { + return this.disabbutPrTehsil; + } + + public void setDisabbutPrTehsil(String disabbutPrTehsil) { + this.disabbutPrTehsil = disabbutPrTehsil; + } + + public String getDisabbutHtTehsil() { + return this.disabbutHtTehsil; + } + + public void setDisabbutHtTehsil(String disabbutHtTehsil) { + this.disabbutHtTehsil = disabbutHtTehsil; + } + + public String[] getFullAddress() { + return this.fullAddress; + } + + public void setFullAddress(String[] fullAddress) { + this.fullAddress = fullAddress; + } + + public String[] getDetailOfProperty() { + return this.detailOfProperty; + } + + public void setDetailOfProperty(String[] detailOfProperty) { + this.detailOfProperty = detailOfProperty; + } + + public String[] getCostOfConstruction() { + return this.costOfConstruction; + } + + public void setCostOfConstruction(String[] costOfConstruction) { + this.costOfConstruction = costOfConstruction; + } + + public String[] getYearOfPurchase() { + return this.yearOfPurchase; + } + + public void setYearOfPurchase(String[] yearOfPurchase) { + this.yearOfPurchase = yearOfPurchase; + } + + public String[] getPresentValue() { + return this.presentValue; + } + + public void setPresentValue(String[] presentValue) { + this.presentValue = presentValue; + } + + public String[] getNameHeld() { + return this.nameHeld; + } + + public void setNameHeld(String[] nameHeld) { + this.nameHeld = nameHeld; + } + + public String[] getHowAquired() { + return this.howAquired; + } + + public void setHowAquired(String[] howAquired) { + this.howAquired = howAquired; + } + + public String[] getDetailOfPerson() { + return this.detailOfPerson; + } + + public void setDetailOfPerson(String[] detailOfPerson) { + this.detailOfPerson = detailOfPerson; + } + + public String[] getTotalIncome() { + return this.totalIncome; + } + + public void setTotalIncome(String[] totalIncome) { + this.totalIncome = totalIncome; + } + + public String[] getRemarks() { + return this.remarks; + } + + public void setRemarks(String[] remarks) { + this.remarks = remarks; + } + + public ArrayList getArrEmpPersDtlAsset() { + return this.arrEmpPersDtlAsset; + } + + public void setArrEmpPersDtlAsset(ArrayList arrEmpPersDtlAsset) { + this.arrEmpPersDtlAsset = arrEmpPersDtlAsset; + } + + public String[] getUanInfo() { + return this.uanInfo; + } + + public void setUanInfo(String[] uanInfo) { + this.uanInfo = uanInfo; + } + + public String[] getAadharInfo() { + return this.aadharInfo; + } + + public void setAadharInfo(String[] aadharInfo) { + this.aadharInfo = aadharInfo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleForm.java new file mode 100644 index 0000000..da07d12 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleForm.java @@ -0,0 +1,317 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmGenEligRuleForm extends HrmBaseForm { + private HashMap eligibilityClasses = new HashMap(); + + private String operator; + + private String values; + + private String formula; + + private String eligibilityClass; + + private String txtHidSubmitFirst; + + private String hidAction; + + private String hidFormula; + + private String hidDocumentCodeId; + + private String documentType; + + private String documentCode; + + private String hidValuesId; + + private String eligSql; + + String disaboperator; + + String disabvalues; + + String disabformula; + + String disabeligibilityClass; + + String disabtxtHidSubmitFirst; + + String disabhidAction; + + String disabhidFormula; + + String disabhidDocumentCodeId; + + String disabdocumentType; + + private String disabdocumentCode; + + String disabhidValuesId; + + String disabeligSql; + + private String disabbutDocumentCode; + + private String disabbutOr; + + private String disabbutAnd; + + private String disabbutShowFormula; + + private String disabbutValues; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public HashMap getEligibilityClasses() { + return this.eligibilityClasses; + } + + public void setEligibilityClasses(HashMap newEligibilityClasses) { + this.eligibilityClasses = newEligibilityClasses; + } + + public String getOperator() { + return this.operator; + } + + public void setOperator(String newOperator) { + this.operator = newOperator; + } + + public String getValues() { + return this.values; + } + + public void setValues(String newValues) { + this.values = newValues; + } + + public String getFormula() { + return this.formula; + } + + public void setFormula(String newFormula) { + this.formula = newFormula; + } + + public String getEligibilityClass() { + return this.eligibilityClass; + } + + public void setEligibilityClass(String newEligibilityClass) { + this.eligibilityClass = newEligibilityClass; + } + + public String getTxtHidSubmitFirst() { + return this.txtHidSubmitFirst; + } + + public void setTxtHidSubmitFirst(String newTxtHidSubmitFirst) { + this.txtHidSubmitFirst = newTxtHidSubmitFirst; + } + + public String getHidAction() { + return this.hidAction; + } + + public void setHidAction(String newHidAction) { + this.hidAction = newHidAction; + } + + public String getHidFormula() { + return this.hidFormula; + } + + public void setHidFormula(String newHidFormula) { + this.hidFormula = newHidFormula; + } + + public String getHidDocumentCodeId() { + return this.hidDocumentCodeId; + } + + public void setHidDocumentCodeId(String newHidDocumentCodeId) { + this.hidDocumentCodeId = newHidDocumentCodeId; + } + + public String getDocumentType() { + return this.documentType; + } + + public void setDocumentType(String newDocumentType) { + this.documentType = newDocumentType; + } + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getHidValuesId() { + return this.hidValuesId; + } + + public void setHidValuesId(String newHidValuesId) { + this.hidValuesId = newHidValuesId; + } + + public String getEligSql() { + return this.eligSql; + } + + public void setEligSql(String newEligSql) { + this.eligSql = newEligSql; + } + + public String getDisaboperator() { + return this.disaboperator; + } + + public void setDisaboperator(String newDisaboperator) { + this.disaboperator = newDisaboperator; + } + + public String getDisabvalues() { + return this.disabvalues; + } + + public void setDisabvalues(String newDisabvalues) { + this.disabvalues = newDisabvalues; + } + + public String getDisabformula() { + return this.disabformula; + } + + public void setDisabformula(String newDisabformula) { + this.disabformula = newDisabformula; + } + + public String getDisabeligibilityClass() { + return this.disabeligibilityClass; + } + + public void setDisabeligibilityClass(String newDisabeligibilityClass) { + this.disabeligibilityClass = newDisabeligibilityClass; + } + + public String getDisabtxtHidSubmitFirst() { + return this.disabtxtHidSubmitFirst; + } + + public void setDisabtxtHidSubmitFirst(String newDisabtxtHidSubmitFirst) { + this.disabtxtHidSubmitFirst = newDisabtxtHidSubmitFirst; + } + + public String getDisabhidAction() { + return this.disabhidAction; + } + + public void setDisabhidAction(String newDisabhidAction) { + this.disabhidAction = newDisabhidAction; + } + + public String getDisabhidFormula() { + return this.disabhidFormula; + } + + public void setDisabhidFormula(String newDisabhidFormula) { + this.disabhidFormula = newDisabhidFormula; + } + + public String getDisabhidDocumentCodeId() { + return this.disabhidDocumentCodeId; + } + + public void setDisabhidDocumentCodeId(String newDisabhidDocumentCodeId) { + this.disabhidDocumentCodeId = newDisabhidDocumentCodeId; + } + + public String getDisabdocumentType() { + return this.disabdocumentType; + } + + public void setDisabdocumentType(String newDisabdocumentType) { + this.disabdocumentType = newDisabdocumentType; + } + + public String getDisabdocumentCode() { + return this.disabdocumentCode; + } + + public void setDisabdocumentCode(String newDisabdocumentCode) { + this.disabdocumentCode = newDisabdocumentCode; + } + + public String getDisabhidValuesId() { + return this.disabhidValuesId; + } + + public void setDisabhidValuesId(String newDisabhidValuesId) { + this.disabhidValuesId = newDisabhidValuesId; + } + + public String getDisabeligSql() { + return this.disabeligSql; + } + + public void setDisabeligSql(String newDisabeligSql) { + this.disabeligSql = newDisabeligSql; + } + + public String getDisabbutDocumentCode() { + return this.disabbutDocumentCode; + } + + public void setDisabbutDocumentCode(String newDisabbutDocumentCode) { + this.disabbutDocumentCode = newDisabbutDocumentCode; + } + + public String getDisabbutOr() { + return this.disabbutOr; + } + + public void setDisabbutOr(String newDisabbutOr) { + this.disabbutOr = newDisabbutOr; + } + + public String getDisabbutAnd() { + return this.disabbutAnd; + } + + public void setDisabbutAnd(String newDisabbutAnd) { + this.disabbutAnd = newDisabbutAnd; + } + + public String getDisabbutShowFormula() { + return this.disabbutShowFormula; + } + + public void setDisabbutShowFormula(String newDisabbutShowFormula) { + this.disabbutShowFormula = newDisabbutShowFormula; + } + + public String getDisabbutValues() { + return this.disabbutValues; + } + + public void setDisabbutValues(String newDisabbutValues) { + this.disabbutValues = newDisabbutValues; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleQueryForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleQueryForm.java new file mode 100644 index 0000000..9afec97 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenEligRuleQueryForm.java @@ -0,0 +1,67 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmGenEligRuleQueryForm extends HrmBaseForm { + private String docType; + + private String[] txtdocCode; + + private String[] txteligSql; + + private String disabdocType; + + private ArrayList arylstGenEligRuleQuery = new ArrayList(); + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getDocType() { + return this.docType; + } + + public void setDocType(String newDocType) { + this.docType = newDocType; + } + + public String[] getTxtdocCode() { + return this.txtdocCode; + } + + public void setTxtdocCode(String[] newTxtdocCode) { + this.txtdocCode = newTxtdocCode; + } + + public String[] getTxteligSql() { + return this.txteligSql; + } + + public void setTxteligSql(String[] newTxteligSql) { + this.txteligSql = newTxteligSql; + } + + public String getDisabdocType() { + return this.disabdocType; + } + + public void setDisabdocType(String newDisabdocType) { + this.disabdocType = newDisabdocType; + } + + public ArrayList getArylstGenEligRuleQuery() { + return this.arylstGenEligRuleQuery; + } + + public void setArylstGenEligRuleQuery(ArrayList newArylstGenEligRuleQuery) { + this.arylstGenEligRuleQuery = newArylstGenEligRuleQuery; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenLoginActionForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenLoginActionForm.java new file mode 100644 index 0000000..fc04e97 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmGenLoginActionForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmGenLoginActionForm extends HrmBaseForm { + private String empNo; + + private String siteId; + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnAppForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnAppForm.java new file mode 100644 index 0000000..1eb778e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnAppForm.java @@ -0,0 +1,1242 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.bean.HrmLnAppDtlBean; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLnAppForm extends HrmBaseForm { + private String employeeNumber; + + private String employeeName; + + private String firstName; + + private String middleName; + + private String lastName; + + private String designation; + + private String loanCode; + + private String loanDesc; + + private String loanCodeId; + + private String empId; + + private String eligibleAmount; + + private String appliedAmount; + + private String applnDate; + + private String sanctionDate; + + private String noOfInstallment; + + private String fullyRepaid; + + private String approvedFlag; + + private String reason; + + private String remarks; + + private String selectAll; + + private String butLoanCode; + + private String butApplnDate; + + private String[] tentativeDisDate; + + private String[] tentativeAmt; + + private String[] actDisAmt; + + private String[] actDisDate; + + private String yearMonth; + + private String principalPaid; + + private String interestPaid; + + private String openBalancePri; + + private String openBalanceInt; + + private String interestAccrued; + + private String interestRate; + + private String butTentativeDisDate; + + private String butActDisDate; + + private String butSanctionDate; + + private ArrayList arrLoanApp = new ArrayList(); + + private ArrayList arrLoanDisburse = new ArrayList(); + + private ArrayList arrLoanRepayment = new ArrayList(); + + private String disabbutLoanCode; + + private String disabbutApplnDate; + + private String disabbutSanctionDate; + + private String tabDisbursement; + + private String disabtabDisbursement; + + private String disabbutTentativeDisDate; + + private String sanctionedAmount; + + private String disabappliedAmount; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private String grade; + + private String location; + + private String loanDetails; + + private String payrollMonth; + + private String totalInst; + + private String totalPrincipalInst; + + private String totalInterestInst; + + private String instAmount; + + private String approverName; + + private String noOfInstPaid; + + private String noOfInstPrincipalPaid; + + private String noOfInstInterestPaid; + + private String totalAmountPaid; + + private String totalBalance; + + private String principalBalance; + + private String interestBalance; + + private String approverNoId; + + private String empNoId; + + private String butApproverNo; + + private String disabbutApproverNo; + + private String disabremarks; + + private String disabinstAmount; + + private String disabtotalInterestInst; + + private String disabtotalPrincipalInst; + + private String disabtotalInst; + + private String disabpayrollMonth; + + private String disabloanDetails; + + private String hblAppliedFor; + + private String disabhblAppliedFor; + + private String hblBranhConst; + + private String disabhblBranhConst; + + private String hblDocSubmitted; + + private String disabhblDocSubmitted; + + private String hblCity; + + private String disabhblCity; + + private String hblPO; + + private String disabhblPO; + + private String hblDistrict; + + private String disabhblDistrict; + + private String hblMouza; + + private String disabhblMouza; + + private String hblKhatian; + + private String disabhblKhatian; + + private String hblDag; + + private String disabhblDag; + + private String hblNoOfDeed; + + private String disabhblNoOfDeed; + + private String hblParentDeed; + + private String disabhblParentDeed; + + private String hblVolOfDeed; + + private String disabhblVolOfDeed; + + private String hblBookNo; + + private String disabhblBookNo; + + private String hblPageNo; + + private String disabhblPageNo; + + private String hblRegisteredAt; + + private String disabhblRegisteredAt; + + private String disabsanctionedAmount; + + private String bulkAmount; + + private String butBulkPayment; + + private String disabbutBulkPayment; + + private String disabbulkAmount; + + private String mode; + + private ArrayList arrHblIntRate = new ArrayList(); + + private String[] txtFromAmount; + + private String[] txtToAmount; + + private String[] txtPercentage; + + private String disabtabHblIntRate; + + private String bulkPaymentDate; + + private String disabbulkPaymentDate; + + private String butBulkPaymentDate; + + private String disabbutBulkPaymentDate; + + private String fromYear; + + private String toYear; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getLoanDesc() { + return this.loanDesc; + } + + public void setLoanDesc(String newLoanDesc) { + this.loanDesc = newLoanDesc; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getAppliedAmount() { + return this.appliedAmount; + } + + public void setAppliedAmount(String newAppliedAmount) { + this.appliedAmount = newAppliedAmount; + } + + public String getApplnDate() { + return this.applnDate; + } + + public void setApplnDate(String newApplnDate) { + this.applnDate = newApplnDate; + } + + public String getSanctionDate() { + return this.sanctionDate; + } + + public void setSanctionDate(String newSanctionDate) { + this.sanctionDate = newSanctionDate; + } + + public String getNoOfInstallment() { + return this.noOfInstallment; + } + + public void setNoOfInstallment(String newNoOfInstallment) { + this.noOfInstallment = newNoOfInstallment; + } + + public String getFullyRepaid() { + return this.fullyRepaid; + } + + public void setFullyRepaid(String newFullyRepaid) { + this.fullyRepaid = newFullyRepaid; + } + + public String getApprovedFlag() { + return this.approvedFlag; + } + + public void setApprovedFlag(String newApprovedFlag) { + this.approvedFlag = newApprovedFlag; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getButLoanCode() { + return this.butLoanCode; + } + + public void setButLoanCode(String newButLoanCode) { + this.butLoanCode = newButLoanCode; + } + + public String getButApplnDate() { + return this.butApplnDate; + } + + public void setButApplnDate(String newButApplnDate) { + this.butApplnDate = newButApplnDate; + } + + public String getButSanctionDate() { + return this.butSanctionDate; + } + + public void setButSanctionDate(String newButSanctionDate) { + this.butSanctionDate = newButSanctionDate; + } + + public String[] getTentativeDisDate() { + return this.tentativeDisDate; + } + + public void setTentativeDisDate(String[] newTentativeDisDate) { + this.tentativeDisDate = newTentativeDisDate; + } + + public String[] getTentativeAmt() { + return this.tentativeAmt; + } + + public void setTentativeAmt(String[] newTentativeAmt) { + this.tentativeAmt = newTentativeAmt; + } + + public String[] getActDisAmt() { + return this.actDisAmt; + } + + public void setActDisAmt(String[] newActDisAmt) { + this.actDisAmt = newActDisAmt; + } + + public String[] getActDisDate() { + return this.actDisDate; + } + + public void setActDisDate(String[] newActDisDate) { + this.actDisDate = newActDisDate; + } + + public String getButTentativeDisDate() { + return this.butTentativeDisDate; + } + + public void setButTentativeDisDate(String newButTentativeDisDate) { + this.butTentativeDisDate = newButTentativeDisDate; + } + + public String getButActDisDate() { + return this.butActDisDate; + } + + public void setButActDisDate(String newButActDisDate) { + this.butActDisDate = newButActDisDate; + } + + public String getYearMonth() { + return this.yearMonth; + } + + public void setYearMonth(String newYearMonth) { + this.yearMonth = newYearMonth; + } + + public String getPrincipalPaid() { + return this.principalPaid; + } + + public void setPrincipalPaid(String newPrincipalPaid) { + this.principalPaid = newPrincipalPaid; + } + + public String getInterestPaid() { + return this.interestPaid; + } + + public void setInterestPaid(String newInterestPaid) { + this.interestPaid = newInterestPaid; + } + + public ArrayList getArrLoanDisburse() { + return this.arrLoanDisburse; + } + + public void setArrLoanDisburse(ArrayList newArrLoanDisburse) { + this.arrLoanDisburse = newArrLoanDisburse; + } + + public ArrayList getArrLoanRepayment() { + return this.arrLoanRepayment; + } + + public void setArrLoanRepayment(ArrayList newArrLoanRepayment) { + this.arrLoanRepayment = newArrLoanRepayment; + } + + public String getOpenBalancePri() { + return this.openBalancePri; + } + + public void setOpenBalancePri(String newOpenBalancePri) { + this.openBalancePri = newOpenBalancePri; + } + + public String getOpenBalanceInt() { + return this.openBalanceInt; + } + + public void setOpenBalanceInt(String newOpenBalanceInt) { + this.openBalanceInt = newOpenBalanceInt; + } + + public String getInterestAccrued() { + return this.interestAccrued; + } + + public void setInterestAccrued(String newInterestAccrued) { + this.interestAccrued = newInterestAccrued; + } + + public String getInterestRate() { + return this.interestRate; + } + + public void setInterestRate(String newInterestRate) { + this.interestRate = newInterestRate; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } + + public HrmLnAppDtlBean getHrmLnAppDtl() { + HrmLnAppDtlBean oApplDtl; + if (this.arrLoanApp.size() != 0) { + oApplDtl = this.arrLoanApp.get(0); + } else { + oApplDtl = new HrmLnAppDtlBean(); + } + return oApplDtl; + } + + public ArrayList getArrLoanApp() { + return this.arrLoanApp; + } + + public void setArrLoanApp(ArrayList newArrLoanApp) { + this.arrLoanApp = newArrLoanApp; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getDisabbutLoanCode() { + return this.disabbutLoanCode; + } + + public void setDisabbutLoanCode(String newDisabbutLoanCode) { + this.disabbutLoanCode = newDisabbutLoanCode; + } + + public String getDisabbutApplnDate() { + return this.disabbutApplnDate; + } + + public void setDisabbutApplnDate(String newDisabbutApplnDate) { + this.disabbutApplnDate = newDisabbutApplnDate; + } + + public String getDisabbutSanctionDate() { + return this.disabbutSanctionDate; + } + + public void setDisabbutSanctionDate(String newDisabbutSanctionDate) { + this.disabbutSanctionDate = newDisabbutSanctionDate; + } + + public String getTabDisbursement() { + return this.tabDisbursement; + } + + public void setTabDisbursement(String newTabDisbursement) { + this.tabDisbursement = newTabDisbursement; + } + + public String getDisabtabDisbursement() { + return this.disabtabDisbursement; + } + + public void setDisabtabDisbursement(String newDisabtabDisbursement) { + this.disabtabDisbursement = newDisabtabDisbursement; + } + + public String getDisabbutTentativeDisDate() { + return this.disabbutTentativeDisDate; + } + + public void setDisabbutTentativeDisDate(String newDisabbutTentativeDisDate) { + this.disabbutTentativeDisDate = newDisabbutTentativeDisDate; + } + + public String getSanctionedAmount() { + return this.sanctionedAmount; + } + + public void setSanctionedAmount(String newSanctionedAmount) { + this.sanctionedAmount = newSanctionedAmount; + } + + public String getDisabappliedAmount() { + return this.disabappliedAmount; + } + + public void setDisabappliedAmount(String newDisabappliedAmount) { + this.disabappliedAmount = newDisabappliedAmount; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getLoanDetails() { + return this.loanDetails; + } + + public void setLoanDetails(String newLoanDetails) { + this.loanDetails = newLoanDetails; + } + + public String getPayrollMonth() { + return this.payrollMonth; + } + + public void setPayrollMonth(String newPayrollMonth) { + this.payrollMonth = newPayrollMonth; + } + + public String getTotalInst() { + return this.totalInst; + } + + public void setTotalInst(String newTotalInst) { + this.totalInst = newTotalInst; + } + + public String getTotalPrincipalInst() { + return this.totalPrincipalInst; + } + + public void setTotalPrincipalInst(String newTotalPrincipalInst) { + this.totalPrincipalInst = newTotalPrincipalInst; + } + + public String getTotalInterestInst() { + return this.totalInterestInst; + } + + public void setTotalInterestInst(String newTotalInterestInst) { + this.totalInterestInst = newTotalInterestInst; + } + + public String getInstAmount() { + return this.instAmount; + } + + public void setInstAmount(String newInstAmount) { + this.instAmount = newInstAmount; + } + + public String getApproverName() { + return this.approverName; + } + + public void setApproverName(String newApproverName) { + this.approverName = newApproverName; + } + + public String getNoOfInstPaid() { + return this.noOfInstPaid; + } + + public void setNoOfInstPaid(String newNoOfInstPaid) { + this.noOfInstPaid = newNoOfInstPaid; + } + + public String getNoOfInstPrincipalPaid() { + return this.noOfInstPrincipalPaid; + } + + public void setNoOfInstPrincipalPaid(String newNoOfInstPrincipalPaid) { + this.noOfInstPrincipalPaid = newNoOfInstPrincipalPaid; + } + + public String getNoOfInstInterestPaid() { + return this.noOfInstInterestPaid; + } + + public void setNoOfInstInterestPaid(String newNoOfInstInterestPaid) { + this.noOfInstInterestPaid = newNoOfInstInterestPaid; + } + + public String getTotalAmountPaid() { + return this.totalAmountPaid; + } + + public void setTotalAmountPaid(String newTotalAmountPaid) { + this.totalAmountPaid = newTotalAmountPaid; + } + + public String getTotalBalance() { + return this.totalBalance; + } + + public void setTotalBalance(String newTotalBalance) { + this.totalBalance = newTotalBalance; + } + + public String getPrincipalBalance() { + return this.principalBalance; + } + + public void setPrincipalBalance(String newPrincipalBalance) { + this.principalBalance = newPrincipalBalance; + } + + public String getInterestBalance() { + return this.interestBalance; + } + + public void setInterestBalance(String newInterestBalance) { + this.interestBalance = newInterestBalance; + } + + public String getApproverNoId() { + return this.approverNoId; + } + + public void setApproverNoId(String newApproverNoId) { + this.approverNoId = newApproverNoId; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getButApproverNo() { + return this.butApproverNo; + } + + public void setButApproverNo(String newButApproverNo) { + this.butApproverNo = newButApproverNo; + } + + public String getDisabbutApproverNo() { + return this.disabbutApproverNo; + } + + public void setDisabbutApproverNo(String newDisabbutApproverNo) { + this.disabbutApproverNo = newDisabbutApproverNo; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getDisabinstAmount() { + return this.disabinstAmount; + } + + public void setDisabinstAmount(String newDisabinstAmount) { + this.disabinstAmount = newDisabinstAmount; + } + + public String getDisabtotalInterestInst() { + return this.disabtotalInterestInst; + } + + public void setDisabtotalInterestInst(String newDisabtotalInterestInst) { + this.disabtotalInterestInst = newDisabtotalInterestInst; + } + + public String getDisabtotalPrincipalInst() { + return this.disabtotalPrincipalInst; + } + + public void setDisabtotalPrincipalInst(String newDisabtotalPrincipalInst) { + this.disabtotalPrincipalInst = newDisabtotalPrincipalInst; + } + + public String getDisabtotalInst() { + return this.disabtotalInst; + } + + public void setDisabtotalInst(String newDisabtotalInst) { + this.disabtotalInst = newDisabtotalInst; + } + + public String getDisabpayrollMonth() { + return this.disabpayrollMonth; + } + + public void setDisabpayrollMonth(String newDisabpayrollMonth) { + this.disabpayrollMonth = newDisabpayrollMonth; + } + + public String getDisabloanDetails() { + return this.disabloanDetails; + } + + public void setDisabloanDetails(String newDisabloanDetails) { + this.disabloanDetails = newDisabloanDetails; + } + + public String getHblAppliedFor() { + return this.hblAppliedFor; + } + + public void setHblAppliedFor(String newHblAppliedFor) { + this.hblAppliedFor = newHblAppliedFor; + } + + public String getDisabhblAppliedFor() { + return this.disabhblAppliedFor; + } + + public void setDisabhblAppliedFor(String newDisabhblAppliedFor) { + this.disabhblAppliedFor = newDisabhblAppliedFor; + } + + public String getHblBranhConst() { + return this.hblBranhConst; + } + + public void setHblBranhConst(String newHblBranhConst) { + this.hblBranhConst = newHblBranhConst; + } + + public String getDisabhblBranhConst() { + return this.disabhblBranhConst; + } + + public void setDisabhblBranhConst(String newDisabhblBranhConst) { + this.disabhblBranhConst = newDisabhblBranhConst; + } + + public String getHblDocSubmitted() { + return this.hblDocSubmitted; + } + + public void setHblDocSubmitted(String newHblDocSubmitted) { + this.hblDocSubmitted = newHblDocSubmitted; + } + + public String getDisabhblDocSubmitted() { + return this.disabhblDocSubmitted; + } + + public void setDisabhblDocSubmitted(String newDisabhblDocSubmitted) { + this.disabhblDocSubmitted = newDisabhblDocSubmitted; + } + + public String getHblCity() { + return this.hblCity; + } + + public void setHblCity(String newHblCity) { + this.hblCity = newHblCity; + } + + public String getDisabhblCity() { + return this.disabhblCity; + } + + public void setDisabhblCity(String newDisabhblCity) { + this.disabhblCity = newDisabhblCity; + } + + public String getHblPO() { + return this.hblPO; + } + + public void setHblPO(String newHblPO) { + this.hblPO = newHblPO; + } + + public String getDisabhblPO() { + return this.disabhblPO; + } + + public void setDisabhblPO(String newDisabhblPO) { + this.disabhblPO = newDisabhblPO; + } + + public String getHblDistrict() { + return this.hblDistrict; + } + + public void setHblDistrict(String newHblDistrict) { + this.hblDistrict = newHblDistrict; + } + + public String getDisabhblDistrict() { + return this.disabhblDistrict; + } + + public void setDisabhblDistrict(String newDisabhblDistrict) { + this.disabhblDistrict = newDisabhblDistrict; + } + + public String getHblMouza() { + return this.hblMouza; + } + + public void setHblMouza(String newHblMouza) { + this.hblMouza = newHblMouza; + } + + public String getDisabhblMouza() { + return this.disabhblMouza; + } + + public void setDisabhblMouza(String newDisabhblMouza) { + this.disabhblMouza = newDisabhblMouza; + } + + public String getHblKhatian() { + return this.hblKhatian; + } + + public void setHblKhatian(String newHblKhatian) { + this.hblKhatian = newHblKhatian; + } + + public String getDisabhblKhatian() { + return this.disabhblKhatian; + } + + public void setDisabhblKhatian(String newDisabhblKhatian) { + this.disabhblKhatian = newDisabhblKhatian; + } + + public String getHblDag() { + return this.hblDag; + } + + public void setHblDag(String newHblDag) { + this.hblDag = newHblDag; + } + + public String getDisabhblDag() { + return this.disabhblDag; + } + + public void setDisabhblDag(String newDisabhblDag) { + this.disabhblDag = newDisabhblDag; + } + + public String getHblNoOfDeed() { + return this.hblNoOfDeed; + } + + public void setHblNoOfDeed(String newHblNoOfDeed) { + this.hblNoOfDeed = newHblNoOfDeed; + } + + public String getDisabhblNoOfDeed() { + return this.disabhblNoOfDeed; + } + + public void setDisabhblNoOfDeed(String newDisabhblNoOfDeed) { + this.disabhblNoOfDeed = newDisabhblNoOfDeed; + } + + public String getHblParentDeed() { + return this.hblParentDeed; + } + + public void setHblParentDeed(String newHblParentDeed) { + this.hblParentDeed = newHblParentDeed; + } + + public String getDisabhblParentDeed() { + return this.disabhblParentDeed; + } + + public void setDisabhblParentDeed(String newDisabhblParentDeed) { + this.disabhblParentDeed = newDisabhblParentDeed; + } + + public String getHblVolOfDeed() { + return this.hblVolOfDeed; + } + + public void setHblVolOfDeed(String newHblVolOfDeed) { + this.hblVolOfDeed = newHblVolOfDeed; + } + + public String getDisabhblVolOfDeed() { + return this.disabhblVolOfDeed; + } + + public void setDisabhblVolOfDeed(String newDisabhblVolOfDeed) { + this.disabhblVolOfDeed = newDisabhblVolOfDeed; + } + + public String getHblBookNo() { + return this.hblBookNo; + } + + public void setHblBookNo(String newHblBookNo) { + this.hblBookNo = newHblBookNo; + } + + public String getDisabhblBookNo() { + return this.disabhblBookNo; + } + + public void setDisabhblBookNo(String newDisabhblBookNo) { + this.disabhblBookNo = newDisabhblBookNo; + } + + public String getHblPageNo() { + return this.hblPageNo; + } + + public void setHblPageNo(String newHblPageNo) { + this.hblPageNo = newHblPageNo; + } + + public String getDisabhblPageNo() { + return this.disabhblPageNo; + } + + public void setDisabhblPageNo(String newDisabhblPageNo) { + this.disabhblPageNo = newDisabhblPageNo; + } + + public String getHblRegisteredAt() { + return this.hblRegisteredAt; + } + + public void setHblRegisteredAt(String newHblRegisteredAt) { + this.hblRegisteredAt = newHblRegisteredAt; + } + + public String getDisabhblRegisteredAt() { + return this.disabhblRegisteredAt; + } + + public void setDisabhblRegisteredAt(String newDisabhblRegisteredAt) { + this.disabhblRegisteredAt = newDisabhblRegisteredAt; + } + + public String getDisabsanctionedAmount() { + return this.disabsanctionedAmount; + } + + public void setDisabsanctionedAmount(String newDisabsanctionedAmount) { + this.disabsanctionedAmount = newDisabsanctionedAmount; + } + + public String getBulkAmount() { + return this.bulkAmount; + } + + public void setBulkAmount(String newBulkAmount) { + this.bulkAmount = newBulkAmount; + } + + public String getButBulkPayment() { + return this.butBulkPayment; + } + + public void setButBulkPayment(String newButBulkPayment) { + this.butBulkPayment = newButBulkPayment; + } + + public String getDisabbutBulkPayment() { + return this.disabbutBulkPayment; + } + + public void setDisabbutBulkPayment(String newDisabbutBulkPayment) { + this.disabbutBulkPayment = newDisabbutBulkPayment; + } + + public String getDisabbulkAmount() { + return this.disabbulkAmount; + } + + public void setDisabbulkAmount(String newDisabbulkAmount) { + this.disabbulkAmount = newDisabbulkAmount; + } + + public String getMode() { + return this.mode; + } + + public void setMode(String newMode) { + this.mode = newMode; + } + + public ArrayList getArrHblIntRate() { + return this.arrHblIntRate; + } + + public void setArrHblIntRate(ArrayList newArrHblIntRate) { + this.arrHblIntRate = newArrHblIntRate; + } + + public String[] getTxtFromAmount() { + return this.txtFromAmount; + } + + public void setTxtFromAmount(String[] newTxtFromAmount) { + this.txtFromAmount = newTxtFromAmount; + } + + public String[] getTxtToAmount() { + return this.txtToAmount; + } + + public void setTxtToAmount(String[] newTxtToAmount) { + this.txtToAmount = newTxtToAmount; + } + + public String[] getTxtPercentage() { + return this.txtPercentage; + } + + public void setTxtPercentage(String[] newTxtPercentage) { + this.txtPercentage = newTxtPercentage; + } + + public String getDisabtabHblIntRate() { + return this.disabtabHblIntRate; + } + + public void setDisabtabHblIntRate(String newDisabtabHblIntRate) { + this.disabtabHblIntRate = newDisabtabHblIntRate; + } + + public String getBulkPaymentDate() { + return this.bulkPaymentDate; + } + + public void setBulkPaymentDate(String newBulkPaymentDate) { + this.bulkPaymentDate = newBulkPaymentDate; + } + + public String getDisabbulkPaymentDate() { + return this.disabbulkPaymentDate; + } + + public void setDisabbulkPaymentDate(String newDisabbulkPaymentDate) { + this.disabbulkPaymentDate = newDisabbulkPaymentDate; + } + + public String getButBulkPaymentDate() { + return this.butBulkPaymentDate; + } + + public void setButBulkPaymentDate(String newButBulkPaymentDate) { + this.butBulkPaymentDate = newButBulkPaymentDate; + } + + public String getDisabbutBulkPaymentDate() { + return this.disabbutBulkPaymentDate; + } + + public void setDisabbutBulkPaymentDate(String newDisabbutBulkPaymentDate) { + this.disabbutBulkPaymentDate = newDisabbutBulkPaymentDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnChartForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnChartForm.java new file mode 100644 index 0000000..b324a34 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnChartForm.java @@ -0,0 +1,347 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLnChartForm extends HrmBaseForm { + private String chartId; + + private String chartName; + + private String effectiveFromDate; + + private String effectiveToDate; + + private String interestRate; + + private String[] txtLoanAmt; + + private String[] txtNumberOfInstallments; + + private String[] txtPrincipal; + + private String[] txtInterest; + + private String[] txtEqualMonthlyInstallment; + + private ArrayList arrHrmLoanChartDtl = new ArrayList(); + + private String selectAll; + + private String txtSearchFields; + + private String txtDisplayFields; + + private String disabchartId; + + private String disabchartName; + + private String disabeffectiveFromDate; + + private String disabeffectiveToDate; + + private String disabinterestRate; + + private String disabselectAll; + + private String disabtxtDisplayFields; + + private String disabtxtEqualMonthlyInstallment; + + private String disabtxtInterest; + + private String disabtxtLoanAmt; + + private String disabtxtNumberOfInstallments; + + private String disabtxtPrincipal; + + private String disabtxtSearchFields; + + private String disabbutChartName; + + private String disabbutEffectiveFromDate; + + private String disabbutEffectiveToDate; + + private String butChartName; + + private String butEffectiveFromDate; + + private String butEffectiveToDate; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getEffectiveFromDate() { + return this.effectiveFromDate; + } + + public void setEffectiveFromDate(String newEffectiveFromDate) { + this.effectiveFromDate = newEffectiveFromDate; + } + + public String getEffectiveToDate() { + return this.effectiveToDate; + } + + public void setEffectiveToDate(String newEffectiveToDate) { + this.effectiveToDate = newEffectiveToDate; + } + + public String getInterestRate() { + return this.interestRate; + } + + public void setInterestRate(String newInterestRate) { + this.interestRate = newInterestRate; + } + + public String[] getTxtLoanAmt() { + return this.txtLoanAmt; + } + + public void setTxtLoanAmt(String[] newTxtLoanAmt) { + this.txtLoanAmt = newTxtLoanAmt; + } + + public String[] getTxtNumberOfInstallments() { + return this.txtNumberOfInstallments; + } + + public void setTxtNumberOfInstallments(String[] newTxtNumberOfInstallments) { + this.txtNumberOfInstallments = newTxtNumberOfInstallments; + } + + public String[] getTxtPrincipal() { + return this.txtPrincipal; + } + + public void setTxtPrincipal(String[] newTxtPrincipal) { + this.txtPrincipal = newTxtPrincipal; + } + + public String[] getTxtInterest() { + return this.txtInterest; + } + + public void setTxtInterest(String[] newTxtInterest) { + this.txtInterest = newTxtInterest; + } + + public String[] getTxtEqualMonthlyInstallment() { + return this.txtEqualMonthlyInstallment; + } + + public void setTxtEqualMonthlyInstallment(String[] newTxtEqualMonthlyInstallment) { + this.txtEqualMonthlyInstallment = newTxtEqualMonthlyInstallment; + } + + public ArrayList getArrHrmLoanChartDtl() { + return this.arrHrmLoanChartDtl; + } + + public void setArrHrmLoanChartDtl(ArrayList newArrHrmLoanChartDtl) { + this.arrHrmLoanChartDtl = newArrHrmLoanChartDtl; + } + + public String getChartId() { + return this.chartId; + } + + public void setChartId(String newChartId) { + this.chartId = newChartId; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getTxtSearchFields() { + return this.txtSearchFields; + } + + public void setTxtSearchFields(String newTxtSearchFields) { + this.txtSearchFields = newTxtSearchFields; + } + + public String getTxtDisplayFields() { + return this.txtDisplayFields; + } + + public void setTxtDisplayFields(String newTxtDisplayFields) { + this.txtDisplayFields = newTxtDisplayFields; + } + + public String getDisabchartId() { + return this.disabchartId; + } + + public void setDisabchartId(String newDisabchartId) { + this.disabchartId = newDisabchartId; + } + + public String getDisabchartName() { + return this.disabchartName; + } + + public void setDisabchartName(String newDisabchartName) { + this.disabchartName = newDisabchartName; + } + + public String getDisabeffectiveFromDate() { + return this.disabeffectiveFromDate; + } + + public void setDisabeffectiveFromDate(String newDisabeffectiveFromDate) { + this.disabeffectiveFromDate = newDisabeffectiveFromDate; + } + + public String getDisabeffectiveToDate() { + return this.disabeffectiveToDate; + } + + public void setDisabeffectiveToDate(String newDisabeffectiveToDate) { + this.disabeffectiveToDate = newDisabeffectiveToDate; + } + + public String getDisabinterestRate() { + return this.disabinterestRate; + } + + public void setDisabinterestRate(String newDisabinterestRate) { + this.disabinterestRate = newDisabinterestRate; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtDisplayFields() { + return this.disabtxtDisplayFields; + } + + public void setDisabtxtDisplayFields(String newDisabtxtDisplayFields) { + this.disabtxtDisplayFields = newDisabtxtDisplayFields; + } + + public String getDisabtxtEqualMonthlyInstallment() { + return this.disabtxtEqualMonthlyInstallment; + } + + public void setDisabtxtEqualMonthlyInstallment(String newDisabtxtEqualMonthlyInstallment) { + this.disabtxtEqualMonthlyInstallment = newDisabtxtEqualMonthlyInstallment; + } + + public String getDisabtxtInterest() { + return this.disabtxtInterest; + } + + public void setDisabtxtInterest(String newDisabtxtInterest) { + this.disabtxtInterest = newDisabtxtInterest; + } + + public String getDisabtxtLoanAmt() { + return this.disabtxtLoanAmt; + } + + public void setDisabtxtLoanAmt(String newDisabtxtLoanAmt) { + this.disabtxtLoanAmt = newDisabtxtLoanAmt; + } + + public String getDisabtxtNumberOfInstallments() { + return this.disabtxtNumberOfInstallments; + } + + public void setDisabtxtNumberOfInstallments(String newDisabtxtNumberOfInstallments) { + this.disabtxtNumberOfInstallments = newDisabtxtNumberOfInstallments; + } + + public String getDisabtxtPrincipal() { + return this.disabtxtPrincipal; + } + + public void setDisabtxtPrincipal(String newDisabtxtPrincipal) { + this.disabtxtPrincipal = newDisabtxtPrincipal; + } + + public String getDisabtxtSearchFields() { + return this.disabtxtSearchFields; + } + + public void setDisabtxtSearchFields(String newDisabtxtSearchFields) { + this.disabtxtSearchFields = newDisabtxtSearchFields; + } + + public String getDisabbutChartName() { + return this.disabbutChartName; + } + + public void setDisabbutChartName(String newDisabbutChartName) { + this.disabbutChartName = newDisabbutChartName; + } + + public String getDisabbutEffectiveFromDate() { + return this.disabbutEffectiveFromDate; + } + + public void setDisabbutEffectiveFromDate(String newDisabbutEffectiveFromDate) { + this.disabbutEffectiveFromDate = newDisabbutEffectiveFromDate; + } + + public String getDisabbutEffectiveToDate() { + return this.disabbutEffectiveToDate; + } + + public void setDisabbutEffectiveToDate(String newDisabbutEffectiveToDate) { + this.disabbutEffectiveToDate = newDisabbutEffectiveToDate; + } + + public String getButChartName() { + return this.butChartName; + } + + public void setButChartName(String newButChartName) { + this.butChartName = newButChartName; + } + + public String getButEffectiveFromDate() { + return this.butEffectiveFromDate; + } + + public void setButEffectiveFromDate(String newButEffectiveFromDate) { + this.butEffectiveFromDate = newButEffectiveFromDate; + } + + public String getButEffectiveToDate() { + return this.butEffectiveToDate; + } + + public void setButEffectiveToDate(String newButEffectiveToDate) { + this.butEffectiveToDate = newButEffectiveToDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnMstForm.java new file mode 100644 index 0000000..b4ee8c7 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLnMstForm.java @@ -0,0 +1,547 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLnMstForm extends HrmBaseForm { + private String loanCode; + + private String loanCodeId; + + private String loanName; + + private String interestTaxRebate; + + private String typeOfInterest; + + private String repaymentUnits; + + private String[] txtMinYrsOfServiceToBeCompleted; + + private String settledAutoFrmSalary; + + private String principalTaxRebate; + + private String chartName; + + private String penaltyPercInterest; + + private String natureOfPayment; + + private String[] txtMinYrsOfRemainingService; + + private String[] txtLoanDetailCode; + + private String[] txtGreaterLessNotApplicable; + + private String[] txtMaxLimit; + + private String[] txtMaximumLoanPerc; + + private String[] txtNoOfMonthsSalary; + + private String[] txtCompanyPolicyStDate; + + private Boolean[] txtAppliedToAllEmployee; + + private ArrayList arrHrmLoanMstDtl = new ArrayList(); + + private String selectAll; + + private String chartNameId; + + private String disabchartName; + + private String disabchartNameId; + + private String disabinterestTaxRebate; + + private String disabloanCode; + + private String disabloanCodeId; + + private String disabloanName; + + private String disabtxtMinYrsOfRemainingService; + + private String disabtxtMinYrsOfServiceToBeCompleted; + + private String disabnatureOfPayment; + + private String disabpenaltyPercInterest; + + private String disabprincipalTaxRebate; + + private String disabrepaymentUnits; + + private String disabselectAll; + + private String disabsettledAutoFrmSalary; + + private String disabtxtAppliedToAllEmployee; + + private String disabtxtCompanypolicyStDate; + + private String disabtxtGreaterLessNotApplicable; + + private String disabtxtLoanDetailCode; + + private String disabtxtMaxLimit; + + private String disabtxtMaximumLoanPerc; + + private String disabtxtNoOfMonthsSalary; + + private String disabtypeOfInterest; + + private String disabbutLoanCode; + + private String disabbutChartName; + + private String disabbutTxtCompanyPolicyStDate; + + private String[] txtCompanyPolicyToDate; + + private String disabtxtCompanyPolicyToDate; + + private String disabbutTxtCompanyPolicyToDate; + + String[] allEmployeeApplicable; + + String butLoanCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getLoanCode() { + return this.loanCode; + } + + public void setLoanCode(String newLoanCode) { + this.loanCode = newLoanCode; + } + + public String getLoanName() { + return this.loanName; + } + + public void setLoanName(String newLoanName) { + this.loanName = newLoanName; + } + + public String getInterestTaxRebate() { + return this.interestTaxRebate; + } + + public void setInterestTaxRebate(String newInterestTaxRebate) { + this.interestTaxRebate = newInterestTaxRebate; + } + + public String getTypeOfInterest() { + return this.typeOfInterest; + } + + public void setTypeOfInterest(String newTypeOfInterest) { + this.typeOfInterest = newTypeOfInterest; + } + + public String getRepaymentUnits() { + return this.repaymentUnits; + } + + public void setRepaymentUnits(String newRepaymentUnits) { + this.repaymentUnits = newRepaymentUnits; + } + + public String[] getTxtMinYrsOfServiceToBeCompleted() { + return this.txtMinYrsOfServiceToBeCompleted; + } + + public String getSettledAutoFrmSalary() { + return this.settledAutoFrmSalary; + } + + public void setSettledAutoFrmSalary(String newSettledAutoFrmSalary) { + this.settledAutoFrmSalary = newSettledAutoFrmSalary; + } + + public String getPrincipalTaxRebate() { + return this.principalTaxRebate; + } + + public void setPrincipalTaxRebate(String newPrincipalTaxRebate) { + this.principalTaxRebate = newPrincipalTaxRebate; + } + + public String getChartName() { + return this.chartName; + } + + public void setChartName(String newChartName) { + this.chartName = newChartName; + } + + public String getPenaltyPercInterest() { + return this.penaltyPercInterest; + } + + public void setPenaltyPercInterest(String newPenaltyPercInterest) { + this.penaltyPercInterest = newPenaltyPercInterest; + } + + public String getNatureOfPayment() { + return this.natureOfPayment; + } + + public void setNatureOfPayment(String newNatureOfPayment) { + this.natureOfPayment = newNatureOfPayment; + } + + public String[] getTxtMinYrsOfRemainingService() { + return this.txtMinYrsOfRemainingService; + } + + public String[] getTxtLoanDetailCode() { + return this.txtLoanDetailCode; + } + + public void setTxtLoanDetailCode(String[] newTxtLoanDetailCode) { + this.txtLoanDetailCode = newTxtLoanDetailCode; + } + + public String[] getTxtGreaterLessNotApplicable() { + return this.txtGreaterLessNotApplicable; + } + + public void setTxtGreaterLessNotApplicable(String[] newTxtGreaterLessNotApplicable) { + this.txtGreaterLessNotApplicable = newTxtGreaterLessNotApplicable; + } + + public String[] getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public void setTxtMaxLimit(String[] newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public String[] getTxtMaximumLoanPerc() { + return this.txtMaximumLoanPerc; + } + + public void setTxtMaximumLoanPerc(String[] newTxtMaximumLoanPerc) { + this.txtMaximumLoanPerc = newTxtMaximumLoanPerc; + } + + public String[] getTxtNoOfMonthsSalary() { + return this.txtNoOfMonthsSalary; + } + + public void setTxtNoOfMonthsSalary(String[] newTxtNoOfMonthsSalary) { + this.txtNoOfMonthsSalary = newTxtNoOfMonthsSalary; + } + + public String[] getTxtCompanyPolicyStDate() { + return this.txtCompanyPolicyStDate; + } + + public void setTxtCompanyPolicyStDate(String[] newTxtCompanyPolicyStDate) { + this.txtCompanyPolicyStDate = newTxtCompanyPolicyStDate; + } + + public Boolean[] getTxtAppliedToAllEmployee() { + return this.txtAppliedToAllEmployee; + } + + public void setTxtAppliedToAllEmployee(Boolean[] newTxtAppliedToAllEmployee) { + this.txtAppliedToAllEmployee = newTxtAppliedToAllEmployee; + } + + public ArrayList getArrHrmLoanMstDtl() { + return this.arrHrmLoanMstDtl; + } + + public void setArrHrmLoanMstDtl(ArrayList newArrHrmLoanMstDtl) { + this.arrHrmLoanMstDtl = newArrHrmLoanMstDtl; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getLoanCodeId() { + return this.loanCodeId; + } + + public void setLoanCodeId(String newLoanCodeId) { + this.loanCodeId = newLoanCodeId; + } + + public String getChartNameId() { + return this.chartNameId; + } + + public void setChartNameId(String newChartNameId) { + this.chartNameId = newChartNameId; + } + + public String getDisabchartName() { + return this.disabchartName; + } + + public void setDisabchartName(String newDisabchartName) { + this.disabchartName = newDisabchartName; + } + + public String getDisabchartNameId() { + return this.disabchartNameId; + } + + public void setDisabchartNameId(String newDisabchartNameId) { + this.disabchartNameId = newDisabchartNameId; + } + + public String getDisabinterestTaxRebate() { + return this.disabinterestTaxRebate; + } + + public void setDisabinterestTaxRebate(String newDisabinterestTaxRebate) { + this.disabinterestTaxRebate = newDisabinterestTaxRebate; + } + + public String getDisabloanCode() { + return this.disabloanCode; + } + + public void setDisabloanCode(String newDisabloanCode) { + this.disabloanCode = newDisabloanCode; + } + + public String getDisabloanCodeId() { + return this.disabloanCodeId; + } + + public void setDisabloanCodeId(String newDisabloanCodeId) { + this.disabloanCodeId = newDisabloanCodeId; + } + + public String getDisabloanName() { + return this.disabloanName; + } + + public void setDisabloanName(String newDisabloanName) { + this.disabloanName = newDisabloanName; + } + + public String getDisabtxtMinYrsOfRemainingService() { + return this.disabtxtMinYrsOfRemainingService; + } + + public void setDisabtxtMinYrsOfRemainingService(String newDisabtxtMinYrsOfRemainingService) { + this.disabtxtMinYrsOfRemainingService = newDisabtxtMinYrsOfRemainingService; + } + + public String getDisabtxtMinYrsOfServiceToBeCompleted() { + return this.disabtxtMinYrsOfServiceToBeCompleted; + } + + public void setDisabtxtMinYrsOfServiceToBeCompleted(String newDisabtxtMinYrsOfServiceToBeCompleted) { + this.disabtxtMinYrsOfServiceToBeCompleted = newDisabtxtMinYrsOfServiceToBeCompleted; + } + + public String getDisabnatureOfPayment() { + return this.disabnatureOfPayment; + } + + public void setDisabnatureOfPayment(String newDisabnatureOfPayment) { + this.disabnatureOfPayment = newDisabnatureOfPayment; + } + + public String getDisabpenaltyPercInterest() { + return this.disabpenaltyPercInterest; + } + + public void setDisabpenaltyPercInterest(String newDisabpenaltyPercInterest) { + this.disabpenaltyPercInterest = newDisabpenaltyPercInterest; + } + + public String getDisabprincipalTaxRebate() { + return this.disabprincipalTaxRebate; + } + + public void setDisabprincipalTaxRebate(String newDisabprincipalTaxRebate) { + this.disabprincipalTaxRebate = newDisabprincipalTaxRebate; + } + + public String getDisabrepaymentUnits() { + return this.disabrepaymentUnits; + } + + public void setDisabrepaymentUnits(String newDisabrepaymentUnits) { + this.disabrepaymentUnits = newDisabrepaymentUnits; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabsettledAutoFrmSalary() { + return this.disabsettledAutoFrmSalary; + } + + public void setDisabsettledAutoFrmSalary(String newDisabsettledAutoFrmSalary) { + this.disabsettledAutoFrmSalary = newDisabsettledAutoFrmSalary; + } + + public String getDisabtxtAppliedToAllEmployee() { + return this.disabtxtAppliedToAllEmployee; + } + + public void setDisabtxtAppliedToAllEmployee(String newDisabtxtAppliedToAllEmployee) { + this.disabtxtAppliedToAllEmployee = newDisabtxtAppliedToAllEmployee; + } + + public String getDisabtxtCompanypolicyStDate() { + return this.disabtxtCompanypolicyStDate; + } + + public void setDisabtxtCompanypolicyStDate(String newDisabtxtCompanypolicyStDate) { + this.disabtxtCompanypolicyStDate = newDisabtxtCompanypolicyStDate; + } + + public String getDisabtxtGreaterLessNotApplicable() { + return this.disabtxtGreaterLessNotApplicable; + } + + public void setDisabtxtGreaterLessNotApplicable(String newDisabtxtGreaterLessNotApplicable) { + this.disabtxtGreaterLessNotApplicable = newDisabtxtGreaterLessNotApplicable; + } + + public String getDisabtxtLoanDetailCode() { + return this.disabtxtLoanDetailCode; + } + + public void setDisabtxtLoanDetailCode(String newDisabtxtLoanDetailCode) { + this.disabtxtLoanDetailCode = newDisabtxtLoanDetailCode; + } + + public String getDisabtxtMaxLimit() { + return this.disabtxtMaxLimit; + } + + public void setDisabtxtMaxLimit(String newDisabtxtMaxLimit) { + this.disabtxtMaxLimit = newDisabtxtMaxLimit; + } + + public String getDisabtxtMaximumLoanPerc() { + return this.disabtxtMaximumLoanPerc; + } + + public void setDisabtxtMaximumLoanPerc(String newDisabtxtMaximumLoanPerc) { + this.disabtxtMaximumLoanPerc = newDisabtxtMaximumLoanPerc; + } + + public String getDisabtxtNoOfMonthsSalary() { + return this.disabtxtNoOfMonthsSalary; + } + + public void setDisabtxtNoOfMonthsSalary(String newDisabtxtNoOfMonthsSalary) { + this.disabtxtNoOfMonthsSalary = newDisabtxtNoOfMonthsSalary; + } + + public String getDisabtypeOfInterest() { + return this.disabtypeOfInterest; + } + + public void setDisabtypeOfInterest(String newDisabtypeOfInterest) { + this.disabtypeOfInterest = newDisabtypeOfInterest; + } + + public String getDisabbutLoanCode() { + return this.disabbutLoanCode; + } + + public void setDisabbutLoanCode(String newDisabbutLoanCode) { + this.disabbutLoanCode = newDisabbutLoanCode; + } + + public String getDisabbutChartName() { + return this.disabbutChartName; + } + + public void setDisabbutChartName(String newDisabbutChartName) { + this.disabbutChartName = newDisabbutChartName; + } + + public String getDisabbutTxtCompanyPolicyStDate() { + return this.disabbutTxtCompanyPolicyStDate; + } + + public void setDisabbutTxtCompanyPolicyStDate(String newDisabbutTxtCompanyPolicyStDate) { + this.disabbutTxtCompanyPolicyStDate = newDisabbutTxtCompanyPolicyStDate; + } + + public String[] getTxtCompanyPolicyToDate() { + return this.txtCompanyPolicyToDate; + } + + public void setTxtCompanyPolicyToDate(String[] newTxtCompanyPolicyToDate) { + this.txtCompanyPolicyToDate = newTxtCompanyPolicyToDate; + } + + public String getDisabtxtCompanyPolicyToDate() { + return this.disabtxtCompanyPolicyToDate; + } + + public void setDisabtxtCompanyPolicyToDate(String newDisabtxtCompanyPolicyToDate) { + this.disabtxtCompanyPolicyToDate = newDisabtxtCompanyPolicyToDate; + } + + public String getDisabbutTxtCompanyPolicyToDate() { + return this.disabbutTxtCompanyPolicyToDate; + } + + public void setDisabbutTxtCompanyPolicyToDate(String newDisabbutTxtCompanyPolicyToDate) { + this.disabbutTxtCompanyPolicyToDate = newDisabbutTxtCompanyPolicyToDate; + } + + public String[] getAllEmployeeApplicable() { + return this.allEmployeeApplicable; + } + + public void setAllEmployeeApplicable(String[] newAllEmployeeApplicable) { + this.allEmployeeApplicable = newAllEmployeeApplicable; + } + + public String getButLoanCode() { + return this.butLoanCode; + } + + public void setButLoanCode(String newButLoanCode) { + this.butLoanCode = newButLoanCode; + } + + public void setTxtMinYrsOfRemainingService(String[] newTxtMinYrsOfRemainingService) { + this.txtMinYrsOfRemainingService = newTxtMinYrsOfRemainingService; + } + + public void setTxtMinYrsOfServiceToBeCompleted(String[] newTxtMinYrsOfServiceToBeCompleted) { + this.txtMinYrsOfServiceToBeCompleted = newTxtMinYrsOfServiceToBeCompleted; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnForm.java new file mode 100644 index 0000000..b23164a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnForm.java @@ -0,0 +1,927 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvApplnForm extends HrmBaseForm { + private String employeeNumber; + + private String employeeName; + + private String firstName; + + private String middleName; + + private String lastName; + + private String designation; + + private String scaleOfPay; + + private String leaveCodes; + + private String description; + + private String dateApplied; + + private String fromAppDate; + + private String toAppDate; + + private String days; + + private String leaveBreakUp; + + private String purpose; + + private String remarks; + + private String statusOfLeaves; + + private String transId; + + private String selectAll; + + private String hdnDetailId; + + private String leaveTypeId; + + private String butDateApplied; + + private String butFromAppDate; + + private String butToAppDate; + + private String disabemployeeNumber; + + private String disabemployeeName; + + private String disabfirstName; + + private String disabmiddleName; + + private String disablastName; + + private String disabdesignation; + + private String disabscaleOfPay; + + private String disableaveCodes; + + private String disabdescription; + + private String disabdateApplied; + + private String disabfromAppDate; + + private String disabtoAppDate; + + private String disabdays; + + private String disableaveBreakUp; + + private String disabpurpose; + + private String disabremarks; + + private String disabstatusOfLeaves; + + private String butLeaveCodes; + + private String disabbutLeaveCodes; + + private String disabbutDateApplied; + + private String disabbutFromAppDate; + + private String disabbutToAppDate; + + private String butLeaveBreakUp; + + private String disabbutLeaveBreakUp; + + private String address; + + private String disabaddress; + + private String phone; + + private String disabphone; + + private String employeeId; + + private String allFlag; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String butApply; + + private String disabbutApply; + + private String photo; + + private String[] txtDate; + + private String[] txtHolidayFlag; + + private String[] txtHalfDayFlag; + + private ArrayList arylstLvAppln = new ArrayList(); + + private String department; + + private String userId; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + String transacId; + + private String grade; + + private String location; + + private String ltaAmount; + + private String optedFor; + + private String disaboptedFor; + + private String ltaFlag; + + private String itPercentage; + + private String fromYear; + + private String disabfromYear; + + private String disabitPercentage; + + private String disabltaFlag; + + private String butCancel; + + private String disabbutCancel; + + String butEmpNo; + + private String disabbutEmpNo; + + private String butLedger; + + private String disabbutLedger; + + private String eligAmount; + + private String medFlag; + + private String disabmedFlag; + + private String disabeligAmount; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getDisabeligAmount() { + return this.disabeligAmount; + } + + public void setDisabeligAmount(String newDisabeligAmount) { + this.disabeligAmount = newDisabeligAmount; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getDays() { + return this.days; + } + + public void setDays(String newDays) { + this.days = newDays; + } + + public String getLeaveBreakUp() { + return this.leaveBreakUp; + } + + public void setLeaveBreakUp(String newLeaveBreakUp) { + this.leaveBreakUp = newLeaveBreakUp; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getFromAppDate() { + return this.fromAppDate; + } + + public void setFromAppDate(String newFromAppDate) { + this.fromAppDate = newFromAppDate; + } + + public String getToAppDate() { + return this.toAppDate; + } + + public void setToAppDate(String newToAppDate) { + this.toAppDate = newToAppDate; + } + + public String getStatusOfLeaves() { + return this.statusOfLeaves; + } + + public void setStatusOfLeaves(String newStatusOfLeaves) { + this.statusOfLeaves = newStatusOfLeaves; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getButDateApplied() { + return this.butDateApplied; + } + + public void setButDateApplied(String newButDateApplied) { + this.butDateApplied = newButDateApplied; + } + + public String getButFromAppDate() { + return this.butFromAppDate; + } + + public void setButFromAppDate(String newButFromAppDate) { + this.butFromAppDate = newButFromAppDate; + } + + public String getButToAppDate() { + return this.butToAppDate; + } + + public void setButToAppDate(String newButToAppDate) { + this.butToAppDate = newButToAppDate; + } + + public String getDisabemployeeNumber() { + return this.disabemployeeNumber; + } + + public void setDisabemployeeNumber(String newDisabemployeeNumber) { + this.disabemployeeNumber = newDisabemployeeNumber; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisabfirstName() { + return this.disabfirstName; + } + + public void setDisabfirstName(String newDisabfirstName) { + this.disabfirstName = newDisabfirstName; + } + + public String getDisabmiddleName() { + return this.disabmiddleName; + } + + public void setDisabmiddleName(String newDisabmiddleName) { + this.disabmiddleName = newDisabmiddleName; + } + + public String getDisablastName() { + return this.disablastName; + } + + public void setDisablastName(String newDisablastName) { + this.disablastName = newDisablastName; + } + + public String getDisabdesignation() { + return this.disabdesignation; + } + + public void setDisabdesignation(String newDisabdesignation) { + this.disabdesignation = newDisabdesignation; + } + + public String getDisabscaleOfPay() { + return this.disabscaleOfPay; + } + + public void setDisabscaleOfPay(String newDisabscaleOfPay) { + this.disabscaleOfPay = newDisabscaleOfPay; + } + + public String getDisableaveCodes() { + return this.disableaveCodes; + } + + public void setDisableaveCodes(String newDisableaveCodes) { + this.disableaveCodes = newDisableaveCodes; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabdateApplied() { + return this.disabdateApplied; + } + + public void setDisabdateApplied(String newDisabdateApplied) { + this.disabdateApplied = newDisabdateApplied; + } + + public String getDisabfromAppDate() { + return this.disabfromAppDate; + } + + public void setDisabfromAppDate(String newDisabfromAppDate) { + this.disabfromAppDate = newDisabfromAppDate; + } + + public String getDisabtoAppDate() { + return this.disabtoAppDate; + } + + public void setDisabtoAppDate(String newDisabtoAppDate) { + this.disabtoAppDate = newDisabtoAppDate; + } + + public String getDisabdays() { + return this.disabdays; + } + + public void setDisabdays(String newDisabdays) { + this.disabdays = newDisabdays; + } + + public String getDisableaveBreakUp() { + return this.disableaveBreakUp; + } + + public void setDisableaveBreakUp(String newDisableaveBreakUp) { + this.disableaveBreakUp = newDisableaveBreakUp; + } + + public String getDisabpurpose() { + return this.disabpurpose; + } + + public void setDisabpurpose(String newDisabpurpose) { + this.disabpurpose = newDisabpurpose; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getDisabstatusOfLeaves() { + return this.disabstatusOfLeaves; + } + + public void setDisabstatusOfLeaves(String newDisabstatusOfLeaves) { + this.disabstatusOfLeaves = newDisabstatusOfLeaves; + } + + public String getButLeaveCodes() { + return this.butLeaveCodes; + } + + public void setButLeaveCodes(String newButLeaveCodes) { + this.butLeaveCodes = newButLeaveCodes; + } + + public String getDisabbutLeaveCodes() { + return this.disabbutLeaveCodes; + } + + public void setDisabbutLeaveCodes(String newDisabbutLeaveCodes) { + this.disabbutLeaveCodes = newDisabbutLeaveCodes; + } + + public String getDisabbutDateApplied() { + return this.disabbutDateApplied; + } + + public void setDisabbutDateApplied(String newDisabbutDateApplied) { + this.disabbutDateApplied = newDisabbutDateApplied; + } + + public String getDisabbutFromAppDate() { + return this.disabbutFromAppDate; + } + + public void setDisabbutFromAppDate(String newDisabbutFromAppDate) { + this.disabbutFromAppDate = newDisabbutFromAppDate; + } + + public String getDisabbutToAppDate() { + return this.disabbutToAppDate; + } + + public void setDisabbutToAppDate(String newDisabbutToAppDate) { + this.disabbutToAppDate = newDisabbutToAppDate; + } + + public String getButLeaveBreakUp() { + return this.butLeaveBreakUp; + } + + public void setButLeaveBreakUp(String newButLeaveBreakUp) { + this.butLeaveBreakUp = newButLeaveBreakUp; + } + + public String getDisabbutLeaveBreakUp() { + return this.disabbutLeaveBreakUp; + } + + public void setDisabbutLeaveBreakUp(String newDisabbutLeaveBreakUp) { + this.disabbutLeaveBreakUp = newDisabbutLeaveBreakUp; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getDisabaddress() { + return this.disabaddress; + } + + public void setDisabaddress(String newDisabaddress) { + this.disabaddress = newDisabaddress; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getDisabphone() { + return this.disabphone; + } + + public void setDisabphone(String newDisabphone) { + this.disabphone = newDisabphone; + } + + public String getAllFlag() { + return this.allFlag; + } + + public void setAllFlag(String newAllFlag) { + this.allFlag = newAllFlag; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getPhoto() { + return this.photo; + } + + public void setPhoto(String newPhoto) { + this.photo = newPhoto; + } + + public String[] getTxtDate() { + return this.txtDate; + } + + public String[] getTxtHolidayFlag() { + return this.txtHolidayFlag; + } + + public String[] getTxtHalfDayFlag() { + return this.txtHalfDayFlag; + } + + public void setTxtDate(String[] newTxtDate) { + this.txtDate = newTxtDate; + } + + public void setTxtHalfDayFlag(String[] newTxtHalfDayFlag) { + this.txtHalfDayFlag = newTxtHalfDayFlag; + } + + public void setTxtHolidayFlag(String[] newTxtHolidayFlag) { + this.txtHolidayFlag = newTxtHolidayFlag; + } + + public ArrayList getArylstLvAppln() { + return this.arylstLvAppln; + } + + public void setArylstLvAppln(ArrayList newArylstLvAppln) { + this.arylstLvAppln = newArylstLvAppln; + } + + public String getDepartment() { + return this.department; + } + + public void setDepartment(String newDepartment) { + this.department = newDepartment; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String newUserId) { + this.userId = newUserId; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getTransacId() { + return this.transacId; + } + + public void setTransacId(String newTransacId) { + this.transacId = newTransacId; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getLtaAmount() { + return this.ltaAmount; + } + + public void setLtaAmount(String newLtaAmount) { + this.ltaAmount = newLtaAmount; + } + + public String getOptedFor() { + return this.optedFor; + } + + public void setOptedFor(String newOptedFor) { + this.optedFor = newOptedFor; + } + + public String getDisaboptedFor() { + return this.disaboptedFor; + } + + public void setDisaboptedFor(String newDisaboptedFor) { + this.disaboptedFor = newDisaboptedFor; + } + + public String getFromYear() { + return this.fromYear; + } + + public void setFromYear(String newFromYear) { + this.fromYear = newFromYear; + } + + public String getDisabfromYear() { + return this.disabfromYear; + } + + public void setDisabfromYear(String newDisabfromYear) { + this.disabfromYear = newDisabfromYear; + } + + public String getLtaFlag() { + return this.ltaFlag; + } + + public void setLtaFlag(String newLtaFlag) { + this.ltaFlag = newLtaFlag; + } + + public String getItPercentage() { + return this.itPercentage; + } + + public void setItPercentage(String newItPercentage) { + this.itPercentage = newItPercentage; + } + + public String getDisabitPercentage() { + return this.disabitPercentage; + } + + public void setDisabitPercentage(String newDisabitPercentage) { + this.disabitPercentage = newDisabitPercentage; + } + + public String getDisabltaFlag() { + return this.disabltaFlag; + } + + public void setDisabltaFlag(String newDisabltaFlag) { + this.disabltaFlag = newDisabltaFlag; + } + + public String getButCancel() { + return this.butCancel; + } + + public void setButCancel(String newButCancel) { + this.butCancel = newButCancel; + } + + public String getDisabbutCancel() { + return this.disabbutCancel; + } + + public void setDisabbutCancel(String newDisabbutCancel) { + this.disabbutCancel = newDisabbutCancel; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getButLedger() { + return this.butLedger; + } + + public void setButLedger(String newButLedger) { + this.butLedger = newButLedger; + } + + public String getDisabbutLedger() { + return this.disabbutLedger; + } + + public void setDisabbutLedger(String newDisabbutLedger) { + this.disabbutLedger = newDisabbutLedger; + } + + public String getEligAmount() { + return this.eligAmount; + } + + public void setEligAmount(String newEligAmount) { + this.eligAmount = newEligAmount; + } + + public String getMedFlag() { + return this.medFlag; + } + + public void setMedFlag(String newMedFlag) { + this.medFlag = newMedFlag; + } + + public String getDisabmedFlag() { + return this.disabmedFlag; + } + + public void setDisabmedFlag(String newDisabmedFlag) { + this.disabmedFlag = newDisabmedFlag; + } + + public String getButApply() { + return this.butApply; + } + + public void setButApply(String newButApply) { + this.butApply = newButApply; + } + + public String getDisabbutApply() { + return this.disabbutApply; + } + + public void setDisabbutApply(String newDisabbutApply) { + this.disabbutApply = newDisabbutApply; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnQueryForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnQueryForm.java new file mode 100644 index 0000000..765c18b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvApplnQueryForm.java @@ -0,0 +1,427 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvApplnQueryForm extends HrmBaseForm { + private String employeeNo; + + private String leaveCode; + + private String leaveDescription; + + private String fromDate; + + private String toDate; + + private String statusOfLeave; + + private String[] txtTransId; + + private String[] txtLeaveCodes; + + private String[] txtAppliedLeaveDate; + + private String[] txtLeaveStatus; + + private String transId; + + private String selectAll; + + private ArrayList arylstLvApplnQuery = new ArrayList(); + + private String hdnDetailId; + + private String txtSearchFields; + + private String txtDisplayFields; + + private String employeeNoId; + + private String leaveTypeId; + + private String disabemployeeNo; + + private String disableaveCode; + + private String disableaveDescription; + + private String disabfromDate; + + private String disabtoDate; + + private String disabstatusOfLeave; + + private String disabtxtLeaveCodes; + + private String disabtxtAppliedLeaveDate; + + private String disabtxtLeaveStatus; + + private String disabselectAll; + + private String butFromDate; + + private String disabbutFromDate; + + private String butToDate; + + private String disabbutToDate; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private String butLeaveCode; + + private String disabbutLeaveCode; + + private String disabtxtTransId; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } + + public String[] getTxtTransId() { + return this.txtTransId; + } + + public String[] getTxtLeaveCodes() { + return this.txtLeaveCodes; + } + + public String[] getTxtAppliedLeaveDate() { + return this.txtAppliedLeaveDate; + } + + public String[] getTxtLeaveStatus() { + return this.txtLeaveStatus; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public void setTxtAppliedLeaveDate(String[] newTxtAppliedLeaveDate) { + this.txtAppliedLeaveDate = newTxtAppliedLeaveDate; + } + + public void setTxtLeaveCodes(String[] newTxtLeaveCodes) { + this.txtLeaveCodes = newTxtLeaveCodes; + } + + public void setTxtLeaveStatus(String[] newTxtLeaveStatus) { + this.txtLeaveStatus = newTxtLeaveStatus; + } + + public void setTxtTransId(String[] newTxtTransId) { + this.txtTransId = newTxtTransId; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getTxtSearchFields() { + return this.txtSearchFields; + } + + public void setTxtSearchFields(String newTxtSearchFields) { + this.txtSearchFields = newTxtSearchFields; + } + + public String getTxtDisplayFields() { + return this.txtDisplayFields; + } + + public void setTxtDisplayFields(String newTxtDisplayFields) { + this.txtDisplayFields = newTxtDisplayFields; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisableaveCode() { + return this.disableaveCode; + } + + public void setDisableaveCode(String newDisableaveCode) { + this.disableaveCode = newDisableaveCode; + } + + public String getDisableaveDescription() { + return this.disableaveDescription; + } + + public void setDisableaveDescription(String newDisableaveDescription) { + this.disableaveDescription = newDisableaveDescription; + } + + public String getDisabfromDate() { + return this.disabfromDate; + } + + public void setDisabfromDate(String newDisabfromDate) { + this.disabfromDate = newDisabfromDate; + } + + public String getDisabtoDate() { + return this.disabtoDate; + } + + public void setDisabtoDate(String newDisabtoDate) { + this.disabtoDate = newDisabtoDate; + } + + public String getDisabstatusOfLeave() { + return this.disabstatusOfLeave; + } + + public void setDisabstatusOfLeave(String newDisabstatusOfLeave) { + this.disabstatusOfLeave = newDisabstatusOfLeave; + } + + public String getDisabtxtLeaveCodes() { + return this.disabtxtLeaveCodes; + } + + public String getDisabtxtAppliedLeaveDate() { + return this.disabtxtAppliedLeaveDate; + } + + public String getDisabtxtLeaveStatus() { + return this.disabtxtLeaveStatus; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public void setDisabtxtLeaveStatus(String newDisabtxtLeaveStatus) { + this.disabtxtLeaveStatus = newDisabtxtLeaveStatus; + } + + public void setDisabtxtLeaveCodes(String newDisabtxtLeaveCodes) { + this.disabtxtLeaveCodes = newDisabtxtLeaveCodes; + } + + public void setDisabtxtAppliedLeaveDate(String newDisabtxtAppliedLeaveDate) { + this.disabtxtAppliedLeaveDate = newDisabtxtAppliedLeaveDate; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getButToDate() { + return this.butToDate; + } + + public void setButToDate(String newButToDate) { + this.butToDate = newButToDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getButLeaveCode() { + return this.butLeaveCode; + } + + public void setButLeaveCode(String newButLeaveCode) { + this.butLeaveCode = newButLeaveCode; + } + + public String getDisabbutLeaveCode() { + return this.disabbutLeaveCode; + } + + public void setDisabbutLeaveCode(String newDisabbutLeaveCode) { + this.disabbutLeaveCode = newDisabbutLeaveCode; + } + + public String getDisabtxtTransId() { + return this.disabtxtTransId; + } + + public void setDisabtxtTransId(String newDisabtxtTransId) { + this.disabtxtTransId = newDisabtxtTransId; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public ArrayList getArylstLvApplnQuery() { + return this.arylstLvApplnQuery; + } + + public void setArylstLvApplnQuery(ArrayList newArylstLvApplnQuery) { + this.arylstLvApplnQuery = newArylstLvApplnQuery; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancForm.java new file mode 100644 index 0000000..b0689ad --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancForm.java @@ -0,0 +1,716 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvCancForm extends HrmBaseForm { + private String employeeNo; + + private String employeeName; + + private String leaveCode; + + private String leaveDescription; + + private String fromDate; + + private String toDate; + + private String firstName; + + private String middleName; + + private String lastName; + + private String dateApplied; + + private String days; + + private String purpose; + + private String cancelRemarks; + + private String statusOfLeave; + + private String fromCancelDate; + + private String toCancelDate; + + private String cancelDays; + + private String cancellationType; + + private String address; + + private String phoneNo; + + private String transId; + + private String selectAll; + + private String hdnDetailId; + + private String designation; + + private String scaleOfPay; + + private String leaveCodeId; + + private String disabemployeeNo; + + private String disabemployeeName; + + private String disableaveCode; + + private String disableaveDescription; + + private String disabfromDate; + + private String disabtoDate; + + private String disabfirstName; + + private String disabmiddleName; + + private String disablastName; + + private String disabdateApplied; + + private String disabdays; + + private String disabpurpose; + + private String disabcancelRemarks; + + private String disabstatusOfLeave; + + private String disabfromCancelDate; + + private String disabtoCancelDate; + + private String disabcancelDays; + + private String disabcancellationType; + + private String disabaddress; + + private String disabphoneNo; + + private String disabdesignation; + + private String disabscaleOfPay; + + private String butFromCancelDate; + + private String disabbutFromCancelDate; + + private String butToCancelDate; + + private String disabbutToCancelDate; + + private String butLeaveCode; + + private String disabbutLeaveCode; + + private String cancelStatus; + + private String disabcancelStatus; + + private String cancelDateApplied; + + private String disabcancelDateApplied; + + private String butCancelDateApplied; + + private String disabbutCancelDateApplied; + + private String butApprove; + + private String disabbutApprove; + + private String butReject; + + private String disabbutReject; + + private String employeeId; + + private String leaveTransId; + + String cancSide; + + private String grade; + + private String location; + + private String desig; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getDays() { + return this.days; + } + + public void setDays(String newDays) { + this.days = newDays; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getCancelRemarks() { + return this.cancelRemarks; + } + + public void setCancelRemarks(String newCancelRemarks) { + this.cancelRemarks = newCancelRemarks; + } + + public String getStatusOfLeave() { + return this.statusOfLeave; + } + + public void setStatusOfLeave(String newStatusOfLeave) { + this.statusOfLeave = newStatusOfLeave; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getFromCancelDate() { + return this.fromCancelDate; + } + + public void setFromCancelDate(String newFromCancelDate) { + this.fromCancelDate = newFromCancelDate; + } + + public String getToCancelDate() { + return this.toCancelDate; + } + + public void setToCancelDate(String newToCancelDate) { + this.toCancelDate = newToCancelDate; + } + + public String getCancelDays() { + return this.cancelDays; + } + + public void setCancelDays(String newCancelDays) { + this.cancelDays = newCancelDays; + } + + public String getCancellationType() { + return this.cancellationType; + } + + public void setCancellationType(String newCancellationType) { + this.cancellationType = newCancellationType; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPhoneNo() { + return this.phoneNo; + } + + public void setPhoneNo(String newPhoneNo) { + this.phoneNo = newPhoneNo; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisableaveCode() { + return this.disableaveCode; + } + + public void setDisableaveCode(String newDisableaveCode) { + this.disableaveCode = newDisableaveCode; + } + + public String getDisableaveDescription() { + return this.disableaveDescription; + } + + public void setDisableaveDescription(String newDisableaveDescription) { + this.disableaveDescription = newDisableaveDescription; + } + + public String getDisabfromDate() { + return this.disabfromDate; + } + + public void setDisabfromDate(String newDisabfromDate) { + this.disabfromDate = newDisabfromDate; + } + + public String getDisabtoDate() { + return this.disabtoDate; + } + + public void setDisabtoDate(String newDisabtoDate) { + this.disabtoDate = newDisabtoDate; + } + + public String getDisabfirstName() { + return this.disabfirstName; + } + + public void setDisabfirstName(String newDisabfirstName) { + this.disabfirstName = newDisabfirstName; + } + + public String getDisabmiddleName() { + return this.disabmiddleName; + } + + public void setDisabmiddleName(String newDisabmiddleName) { + this.disabmiddleName = newDisabmiddleName; + } + + public String getDisablastName() { + return this.disablastName; + } + + public void setDisablastName(String newDisablastName) { + this.disablastName = newDisablastName; + } + + public String getDisabdateApplied() { + return this.disabdateApplied; + } + + public void setDisabdateApplied(String newDisabdateApplied) { + this.disabdateApplied = newDisabdateApplied; + } + + public String getDisabdays() { + return this.disabdays; + } + + public void setDisabdays(String newDisabdays) { + this.disabdays = newDisabdays; + } + + public String getDisabpurpose() { + return this.disabpurpose; + } + + public void setDisabpurpose(String newDisabpurpose) { + this.disabpurpose = newDisabpurpose; + } + + public String getDisabcancelRemarks() { + return this.disabcancelRemarks; + } + + public void setDisabcancelRemarks(String newDisabcancelRemarks) { + this.disabcancelRemarks = newDisabcancelRemarks; + } + + public String getDisabstatusOfLeave() { + return this.disabstatusOfLeave; + } + + public void setDisabstatusOfLeave(String newDisabstatusOfLeave) { + this.disabstatusOfLeave = newDisabstatusOfLeave; + } + + public String getDisabfromCancelDate() { + return this.disabfromCancelDate; + } + + public void setDisabfromCancelDate(String newDisabfromCancelDate) { + this.disabfromCancelDate = newDisabfromCancelDate; + } + + public String getDisabtoCancelDate() { + return this.disabtoCancelDate; + } + + public void setDisabtoCancelDate(String newDisabtoCancelDate) { + this.disabtoCancelDate = newDisabtoCancelDate; + } + + public String getDisabcancelDays() { + return this.disabcancelDays; + } + + public void setDisabcancelDays(String newDisabcancelDays) { + this.disabcancelDays = newDisabcancelDays; + } + + public String getDisabcancellationType() { + return this.disabcancellationType; + } + + public void setDisabcancellationType(String newDisabcancellationType) { + this.disabcancellationType = newDisabcancellationType; + } + + public String getDisabaddress() { + return this.disabaddress; + } + + public void setDisabaddress(String newDisabaddress) { + this.disabaddress = newDisabaddress; + } + + public String getDisabphoneNo() { + return this.disabphoneNo; + } + + public void setDisabphoneNo(String newDisabphoneNo) { + this.disabphoneNo = newDisabphoneNo; + } + + public String getDisabdesignation() { + return this.disabdesignation; + } + + public void setDisabdesignation(String newDisabdesignation) { + this.disabdesignation = newDisabdesignation; + } + + public String getDisabscaleOfPay() { + return this.disabscaleOfPay; + } + + public void setDisabscaleOfPay(String newDisabscaleOfPay) { + this.disabscaleOfPay = newDisabscaleOfPay; + } + + public String getButFromCancelDate() { + return this.butFromCancelDate; + } + + public void setButFromCancelDate(String newButFromCancelDate) { + this.butFromCancelDate = newButFromCancelDate; + } + + public String getDisabbutFromCancelDate() { + return this.disabbutFromCancelDate; + } + + public void setDisabbutFromCancelDate(String newDisabbutFromCancelDate) { + this.disabbutFromCancelDate = newDisabbutFromCancelDate; + } + + public String getButToCancelDate() { + return this.butToCancelDate; + } + + public void setButToCancelDate(String newButToCancelDate) { + this.butToCancelDate = newButToCancelDate; + } + + public String getDisabbutToCancelDate() { + return this.disabbutToCancelDate; + } + + public void setDisabbutToCancelDate(String newDisabbutToCancelDate) { + this.disabbutToCancelDate = newDisabbutToCancelDate; + } + + public String getButLeaveCode() { + return this.butLeaveCode; + } + + public void setButLeaveCode(String newButLeaveCode) { + this.butLeaveCode = newButLeaveCode; + } + + public String getDisabbutLeaveCode() { + return this.disabbutLeaveCode; + } + + public void setDisabbutLeaveCode(String newDisabbutLeaveCode) { + this.disabbutLeaveCode = newDisabbutLeaveCode; + } + + public String getCancelStatus() { + return this.cancelStatus; + } + + public void setCancelStatus(String newCancelStatus) { + this.cancelStatus = newCancelStatus; + } + + public String getDisabcancelStatus() { + return this.disabcancelStatus; + } + + public void setDisabcancelStatus(String newDisabcancelStatus) { + this.disabcancelStatus = newDisabcancelStatus; + } + + public String getCancelDateApplied() { + return this.cancelDateApplied; + } + + public void setCancelDateApplied(String newCancelDateApplied) { + this.cancelDateApplied = newCancelDateApplied; + } + + public String getDisabcancelDateApplied() { + return this.disabcancelDateApplied; + } + + public void setDisabcancelDateApplied(String newDisabcancelDateApplied) { + this.disabcancelDateApplied = newDisabcancelDateApplied; + } + + public String getButCancelDateApplied() { + return this.butCancelDateApplied; + } + + public void setButCancelDateApplied(String newButCancelDateApplied) { + this.butCancelDateApplied = newButCancelDateApplied; + } + + public String getDisabbutCancelDateApplied() { + return this.disabbutCancelDateApplied; + } + + public void setDisabbutCancelDateApplied(String newDisabbutCancelDateApplied) { + this.disabbutCancelDateApplied = newDisabbutCancelDateApplied; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getLeaveTransId() { + return this.leaveTransId; + } + + public void setLeaveTransId(String newLeaveTransId) { + this.leaveTransId = newLeaveTransId; + } + + public String getCancSide() { + return this.cancSide; + } + + public void setCancSide(String newCancSide) { + this.cancSide = newCancSide; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getDesig() { + return this.desig; + } + + public void setDesig(String newDesig) { + this.desig = newDesig; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancQueryForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancQueryForm.java new file mode 100644 index 0000000..a39e73a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCancQueryForm.java @@ -0,0 +1,387 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvCancQueryForm extends HrmBaseForm { + private String employeeNumber; + + private String leaveType; + + private String leaveDescription; + + private String cancelFromDate; + + private String cancelToDate; + + private String cancellationStatus; + + private String[] txtTransId; + + private String[] txtLeaveCodes; + + private String[] txtAppliedLeaveDate; + + private String[] txtCancellationDate; + + private String[] txtCancelStatus; + + private ArrayList arylstLvCnclQuery = new ArrayList(); + + private String selectAll; + + private String transId; + + private String hdnDetailId; + + private String empId; + + private String empName; + + private String disabemployeeNumber; + + private String disableaveType; + + private String disableaveDescription; + + private String disabcancelFromDate; + + private String disabcancelToDate; + + private String disabcancellationStatus; + + private String disabtxtTransId; + + private String disabtxtLeaveCodes; + + private String disabtxtAppliedLeaveDate; + + private String disabtxtCancellationDate; + + private String disabtxtCancelStatus; + + private String butCancelFromDate; + + private String disabbutCancelFromDate; + + private String butCancelToDate; + + private String disabbutCancelToDate; + + private String butEmployeeNumber; + + private String disabbutEmployeeNumber; + + private String butLeaveType; + + private String disabbutLeaveType; + + private String leaveTypeId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getLeaveType() { + return this.leaveType; + } + + public void setLeaveType(String newLeaveType) { + this.leaveType = newLeaveType; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getCancelFromDate() { + return this.cancelFromDate; + } + + public void setCancelFromDate(String newCancelFromDate) { + this.cancelFromDate = newCancelFromDate; + } + + public String getCancelToDate() { + return this.cancelToDate; + } + + public void setCancelToDate(String newCancelToDate) { + this.cancelToDate = newCancelToDate; + } + + public String getCancellationStatus() { + return this.cancellationStatus; + } + + public void setCancellationStatus(String newCancellationStatus) { + this.cancellationStatus = newCancellationStatus; + } + + public String[] getTxtTransId() { + return this.txtTransId; + } + + public String[] getTxtLeaveCodes() { + return this.txtLeaveCodes; + } + + public String[] getTxtAppliedLeaveDate() { + return this.txtAppliedLeaveDate; + } + + public String[] getTxtCancellationDate() { + return this.txtCancellationDate; + } + + public String[] getTxtCancelStatus() { + return this.txtCancelStatus; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public void setTxtAppliedLeaveDate(String[] newTxtAppliedLeaveDate) { + this.txtAppliedLeaveDate = newTxtAppliedLeaveDate; + } + + public void setTxtCancelStatus(String[] newTxtCancelStatus) { + this.txtCancelStatus = newTxtCancelStatus; + } + + public void setTxtCancellationDate(String[] newTxtCancellationDate) { + this.txtCancellationDate = newTxtCancellationDate; + } + + public void setTxtLeaveCodes(String[] newTxtLeaveCodes) { + this.txtLeaveCodes = newTxtLeaveCodes; + } + + public void setTxtTransId(String[] newTxtTransId) { + this.txtTransId = newTxtTransId; + } + + public String getTransId() { + return this.transId; + } + + public void setTransId(String newTransId) { + this.transId = newTransId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDisabemployeeNumber() { + return this.disabemployeeNumber; + } + + public void setDisabemployeeNumber(String newDisabemployeeNumber) { + this.disabemployeeNumber = newDisabemployeeNumber; + } + + public String getDisableaveType() { + return this.disableaveType; + } + + public void setDisableaveType(String newDisableaveType) { + this.disableaveType = newDisableaveType; + } + + public String getDisableaveDescription() { + return this.disableaveDescription; + } + + public void setDisableaveDescription(String newDisableaveDescription) { + this.disableaveDescription = newDisableaveDescription; + } + + public String getDisabcancelFromDate() { + return this.disabcancelFromDate; + } + + public void setDisabcancelFromDate(String newDisabcancelFromDate) { + this.disabcancelFromDate = newDisabcancelFromDate; + } + + public String getDisabcancelToDate() { + return this.disabcancelToDate; + } + + public void setDisabcancelToDate(String newDisabcancelToDate) { + this.disabcancelToDate = newDisabcancelToDate; + } + + public String getDisabcancellationStatus() { + return this.disabcancellationStatus; + } + + public void setDisabcancellationStatus(String newDisabcancellationStatus) { + this.disabcancellationStatus = newDisabcancellationStatus; + } + + public String getDisabtxtTransId() { + return this.disabtxtTransId; + } + + public void setDisabtxtTransId(String newDisabtxtTransId) { + this.disabtxtTransId = newDisabtxtTransId; + } + + public String getDisabtxtLeaveCodes() { + return this.disabtxtLeaveCodes; + } + + public void setDisabtxtLeaveCodes(String newDisabtxtLeaveCodes) { + this.disabtxtLeaveCodes = newDisabtxtLeaveCodes; + } + + public String getDisabtxtAppliedLeaveDate() { + return this.disabtxtAppliedLeaveDate; + } + + public void setDisabtxtAppliedLeaveDate(String newDisabtxtAppliedLeaveDate) { + this.disabtxtAppliedLeaveDate = newDisabtxtAppliedLeaveDate; + } + + public String getDisabtxtCancellationDate() { + return this.disabtxtCancellationDate; + } + + public void setDisabtxtCancellationDate(String newDisabtxtCancellationDate) { + this.disabtxtCancellationDate = newDisabtxtCancellationDate; + } + + public String getDisabtxtCancelStatus() { + return this.disabtxtCancelStatus; + } + + public void setDisabtxtCancelStatus(String newDisabtxtCancelStatus) { + this.disabtxtCancelStatus = newDisabtxtCancelStatus; + } + + public String getButCancelFromDate() { + return this.butCancelFromDate; + } + + public void setButCancelFromDate(String newButCancelFromDate) { + this.butCancelFromDate = newButCancelFromDate; + } + + public String getDisabbutCancelFromDate() { + return this.disabbutCancelFromDate; + } + + public void setDisabbutCancelFromDate(String newDisabbutCancelFromDate) { + this.disabbutCancelFromDate = newDisabbutCancelFromDate; + } + + public String getButCancelToDate() { + return this.butCancelToDate; + } + + public void setButCancelToDate(String newButCancelToDate) { + this.butCancelToDate = newButCancelToDate; + } + + public String getDisabbutCancelToDate() { + return this.disabbutCancelToDate; + } + + public void setDisabbutCancelToDate(String newDisabbutCancelToDate) { + this.disabbutCancelToDate = newDisabbutCancelToDate; + } + + public String getButEmployeeNumber() { + return this.butEmployeeNumber; + } + + public void setButEmployeeNumber(String newButEmployeeNumber) { + this.butEmployeeNumber = newButEmployeeNumber; + } + + public String getDisabbutEmployeeNumber() { + return this.disabbutEmployeeNumber; + } + + public void setDisabbutEmployeeNumber(String newDisabbutEmployeeNumber) { + this.disabbutEmployeeNumber = newDisabbutEmployeeNumber; + } + + public String getButLeaveType() { + return this.butLeaveType; + } + + public void setButLeaveType(String newButLeaveType) { + this.butLeaveType = newButLeaveType; + } + + public String getDisabbutLeaveType() { + return this.disabbutLeaveType; + } + + public void setDisabbutLeaveType(String newDisabbutLeaveType) { + this.disabbutLeaveType = newDisabbutLeaveType; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public ArrayList getArylstLvCnclQuery() { + return this.arylstLvCnclQuery; + } + + public void setArylstLvCnclQuery(ArrayList newArylstLvCnclQuery) { + this.arylstLvCnclQuery = newArylstLvCnclQuery; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCreditForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCreditForm.java new file mode 100644 index 0000000..dd5a44e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvCreditForm.java @@ -0,0 +1,185 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvCreditForm extends HrmBaseForm { + private String txtRegionCode; + + private String txtRegionName; + + private String buttxtRegion; + + private String disabbuttxtRegion; + + private String butCreditLeaves; + + private String disabbutCreditLeaves; + + private String hdrRegionId; + + private String employeeNo; + + private String employeeName; + + private String leaveCode; + + private String leaveDescription; + + private String employeeNoId; + + private String leaveTypeId; + + private String txtNoOfDays; + + private String butEmpCode; + + private String disabbutEmpCode; + + private String butLeaveCode; + + private String disabbutLeaveCode; + + public String getTxtRegionCode() { + return this.txtRegionCode; + } + + public void setTxtRegionCode(String newTxtRegionCode) { + this.txtRegionCode = newTxtRegionCode; + } + + public String getTxtRegionName() { + return this.txtRegionName; + } + + public void setTxtRegionName(String newTxtRegionName) { + this.txtRegionName = newTxtRegionName; + } + + public String getButtxtRegion() { + return this.buttxtRegion; + } + + public void setButtxtRegion(String newButtxtRegion) { + this.buttxtRegion = newButtxtRegion; + } + + public String getDisabbuttxtRegion() { + return this.disabbuttxtRegion; + } + + public void setDisabbuttxtRegion(String newDisabbuttxtRegion) { + this.disabbuttxtRegion = newDisabbuttxtRegion; + } + + public String getButCreditLeaves() { + return this.butCreditLeaves; + } + + public void setButCreditLeaves(String newButCreditLeaves) { + this.butCreditLeaves = newButCreditLeaves; + } + + public String getDisabbutCreditLeaves() { + return this.disabbutCreditLeaves; + } + + public void setDisabbutCreditLeaves(String newDisabbutCreditLeaves) { + this.disabbutCreditLeaves = newDisabbutCreditLeaves; + } + + public String getHdrRegionId() { + return this.hdrRegionId; + } + + public void setHdrRegionId(String newHdrRegionId) { + this.hdrRegionId = newHdrRegionId; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public void setTxtNoOfDays(String newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } + + public String getButLeaveCode() { + return this.butLeaveCode; + } + + public void setButLeaveCode(String newButLeaveCode) { + this.butLeaveCode = newButLeaveCode; + } + + public String getDisabbutLeaveCode() { + return this.disabbutLeaveCode; + } + + public void setDisabbutLeaveCode(String newDisabbutLeaveCode) { + this.disabbutLeaveCode = newDisabbutLeaveCode; + } + + public String getButEmpCode() { + return this.butEmpCode; + } + + public void setButEmpCode(String newButEmpCode) { + this.butEmpCode = newButEmpCode; + } + + public String getDisabbutEmpCode() { + return this.disabbutEmpCode; + } + + public void setDisabbutEmpCode(String newDisabbutEmpCode) { + this.disabbutEmpCode = newDisabbutEmpCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvEncashForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvEncashForm.java new file mode 100644 index 0000000..08cb4e9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvEncashForm.java @@ -0,0 +1,455 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvEncashForm extends HrmBaseForm { + private String employeeNumber; + + private String firstName; + + private String middleName; + + private String lastName; + + private String grade; + + private String designation; + + private String location; + + private String fromDate; + + private String toDate; + + private String leaveCodes; + + private String description; + + private String dateApplied; + + private String daysEncashed; + + private String encashedAmount; + + private String changeStatus; + + private String employeeId; + + private String leaveCodeId; + + private String allFlag; + + private String totalEncashLimit; + + private String disabdescription; + + private String disabdaysEncashed; + + private String disabencashedAmount; + + private String disabchangeStatus; + + private String butFromDate; + + private String disabbutFromDate; + + private String butToDate; + + private String disabbutToDate; + + private String butLeaveCodes; + + private String disabbutLeaveCodes; + + private String butDateApplied; + + private String disabbutDateApplied; + + private String disabbutApprove; + + private String disabbutSubmit; + + private String disabbutReject; + + private String taxAmount; + + private String pfDeduction; + + private String eligibleAmount; + + private String disabtaxPercentage; + + private String level; + + String disabtaxAmount; + + String butEmpNo; + + public String disabbutEmpNo; + + private String lvTxnId; + + private String lvApplnFromDate; + + private String lvApplnToDate; + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getLeaveCodes() { + return this.leaveCodes; + } + + public void setLeaveCodes(String newLeaveCodes) { + this.leaveCodes = newLeaveCodes; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getDaysEncashed() { + return this.daysEncashed; + } + + public void setDaysEncashed(String newDaysEncashed) { + this.daysEncashed = newDaysEncashed; + } + + public String getEncashedAmount() { + return this.encashedAmount; + } + + public void setEncashedAmount(String newEncashedAmount) { + this.encashedAmount = newEncashedAmount; + } + + public String getChangeStatus() { + return this.changeStatus; + } + + public void setChangeStatus(String newChangeStatus) { + this.changeStatus = newChangeStatus; + } + + public String getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getAllFlag() { + return this.allFlag; + } + + public void setAllFlag(String newAllFlag) { + this.allFlag = newAllFlag; + } + + public String getTotalEncashLimit() { + return this.totalEncashLimit; + } + + public void setTotalEncashLimit(String newTotalEncashLimit) { + this.totalEncashLimit = newTotalEncashLimit; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabdaysEncashed() { + return this.disabdaysEncashed; + } + + public void setDisabdaysEncashed(String newDisabdaysEncashed) { + this.disabdaysEncashed = newDisabdaysEncashed; + } + + public String getDisabencashedAmount() { + return this.disabencashedAmount; + } + + public void setDisabencashedAmount(String newDisabencashedAmount) { + this.disabencashedAmount = newDisabencashedAmount; + } + + public String getDisabchangeStatus() { + return this.disabchangeStatus; + } + + public void setDisabchangeStatus(String newDisabchangeStatus) { + this.disabchangeStatus = newDisabchangeStatus; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getButToDate() { + return this.butToDate; + } + + public void setButToDate(String newButToDate) { + this.butToDate = newButToDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getButLeaveCodes() { + return this.butLeaveCodes; + } + + public void setButLeaveCodes(String newButLeaveCodes) { + this.butLeaveCodes = newButLeaveCodes; + } + + public String getDisabbutLeaveCodes() { + return this.disabbutLeaveCodes; + } + + public void setDisabbutLeaveCodes(String newDisabbutLeaveCodes) { + this.disabbutLeaveCodes = newDisabbutLeaveCodes; + } + + public String getButDateApplied() { + return this.butDateApplied; + } + + public void setButDateApplied(String newButDateApplied) { + this.butDateApplied = newButDateApplied; + } + + public String getDisabbutDateApplied() { + return this.disabbutDateApplied; + } + + public void setDisabbutDateApplied(String newDisabbutDateApplied) { + this.disabbutDateApplied = newDisabbutDateApplied; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getTaxAmount() { + return this.taxAmount; + } + + public void setTaxAmount(String newTaxAmount) { + this.taxAmount = newTaxAmount; + } + + public String getPfDeduction() { + return this.pfDeduction; + } + + public void setPfDeduction(String newPfDeduction) { + this.pfDeduction = newPfDeduction; + } + + public String getEligibleAmount() { + return this.eligibleAmount; + } + + public void setEligibleAmount(String newEligibleAmount) { + this.eligibleAmount = newEligibleAmount; + } + + public String getDisabtaxPercentage() { + return this.disabtaxPercentage; + } + + public void setDisabtaxPercentage(String newDisabtaxPercentage) { + this.disabtaxPercentage = newDisabtaxPercentage; + } + + public String getLevel() { + return this.level; + } + + public void setLevel(String newLevel) { + this.level = newLevel; + } + + public String getDisabtaxAmount() { + return this.disabtaxAmount; + } + + public void setDisabtaxAmount(String newDisabtaxAmount) { + this.disabtaxAmount = newDisabtaxAmount; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getLvTxnId() { + return this.lvTxnId; + } + + public void setLvTxnId(String newLvTxnId) { + this.lvTxnId = newLvTxnId; + } + + public String getLvApplnFromDate() { + return this.lvApplnFromDate; + } + + public void setLvApplnFromDate(String newLvApplnFromDate) { + this.lvApplnFromDate = newLvApplnFromDate; + } + + public String getLvApplnToDate() { + return this.lvApplnToDate; + } + + public void setLvApplnToDate(String newLvApplnToDate) { + this.lvApplnToDate = newLvApplnToDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvLedgerForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvLedgerForm.java new file mode 100644 index 0000000..5729177 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvLedgerForm.java @@ -0,0 +1,577 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvLedgerForm extends HrmBaseForm { + private String employeeNo; + + private String employeeName; + + private String leaveCode; + + private String leaveDescription; + + private String employeeNumberId; + + private String leaveTypeId; + + private String[] txtleaveTypes; + + private String[] txtCreditDate; + + private String[] txtOpeningBalance; + + private String[] txtLeavesCredited; + + private String[] txtLeavesTaken; + + private String[] txtLeavesEncashed; + + private String[] txtLeaveBalance; + + private String[] txtLeavesPending; + + private String[] txtApplicationDate; + + private String[] txtAction; + + private String[] txtFromDate; + + private String[] txtNoOfDays; + + private String[] txtToDate; + + private String[] txtPayrollMonth; + + private String selectAll; + + private ArrayList arylstLvLedger = new ArrayList(); + + private ArrayList arylstLvLedgerTrans = new ArrayList(); + + private String hdnDetailId; + + private String leavesType; + + private String leavesTaken; + + private String leavesEncashed; + + private String disabemployeeNo; + + private String disabemployeeName; + + private String disableaveCode; + + private String disableaveDescription; + + private String butEmployeeNo; + + private String butLeaveCode; + + private String disabbutLeaveCode; + + private String disabbutEmployeeNo; + + private String disabtxtleaveTypes; + + private String disabtxtCreditDate; + + private String disabtxtOpeningBalance; + + private String disabtxtLeavesCredited; + + private String disabtxtLeavesTaken; + + private String disabtxtLeavesEncashed; + + private String disabtxtLeaveBalance; + + private String disabtxtApplicationDate; + + private String disabtxtAction; + + private String disabtxtFromDate; + + private String disabtxtNoOfDays; + + private String disabtxtToDate; + + private String disabtxtPayrollMonth; + + String disabbutGetDtl2; + + String butExecute; + + String disabbutExecute; + + String butGetDtl2; + + private String groupId; + + private String butEmpCode; + + private String disabbutEmpCode; + + private String employeeNoId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String[] getTxtleaveTypes() { + return this.txtleaveTypes; + } + + public String[] getTxtCreditDate() { + return this.txtCreditDate; + } + + public String[] getTxtOpeningBalance() { + return this.txtOpeningBalance; + } + + public String[] getTxtLeavesCredited() { + return this.txtLeavesCredited; + } + + public String[] getTxtLeavesTaken() { + return this.txtLeavesTaken; + } + + public String[] getTxtLeavesEncashed() { + return this.txtLeavesEncashed; + } + + public String[] getTxtLeaveBalance() { + return this.txtLeaveBalance; + } + + public String[] getTxtApplicationDate() { + return this.txtApplicationDate; + } + + public String[] getTxtAction() { + return this.txtAction; + } + + public String[] getTxtFromDate() { + return this.txtFromDate; + } + + public String[] getTxtNoOfDays() { + return this.txtNoOfDays; + } + + public String[] getTxtToDate() { + return this.txtToDate; + } + + public String[] getTxtPayrollMonth() { + return this.txtPayrollMonth; + } + + public void setTxtAction(String[] newTxtAction) { + this.txtAction = newTxtAction; + } + + public void setTxtApplicationDate(String[] newTxtApplicationDate) { + this.txtApplicationDate = newTxtApplicationDate; + } + + public void setTxtCreditDate(String[] newTxtCreditDate) { + this.txtCreditDate = newTxtCreditDate; + } + + public void setTxtFromDate(String[] newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public void setTxtLeaveBalance(String[] newTxtLeaveBalance) { + this.txtLeaveBalance = newTxtLeaveBalance; + } + + public void setTxtLeavesCredited(String[] newTxtLeavesCredited) { + this.txtLeavesCredited = newTxtLeavesCredited; + } + + public void setTxtLeavesEncashed(String[] newTxtLeavesEncashed) { + this.txtLeavesEncashed = newTxtLeavesEncashed; + } + + public void setTxtLeavesTaken(String[] newTxtLeavesTaken) { + this.txtLeavesTaken = newTxtLeavesTaken; + } + + public void setTxtNoOfDays(String[] newTxtNoOfDays) { + this.txtNoOfDays = newTxtNoOfDays; + } + + public void setTxtOpeningBalance(String[] newTxtOpeningBalance) { + this.txtOpeningBalance = newTxtOpeningBalance; + } + + public void setTxtPayrollMonth(String[] newTxtPayrollMonth) { + this.txtPayrollMonth = newTxtPayrollMonth; + } + + public void setTxtToDate(String[] newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public void setTxtleaveTypes(String[] newTxtleaveTypes) { + this.txtleaveTypes = newTxtleaveTypes; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getLeaveDescription() { + return this.leaveDescription; + } + + public void setLeaveDescription(String newLeaveDescription) { + this.leaveDescription = newLeaveDescription; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getEmployeeNumberId() { + return this.employeeNumberId; + } + + public void setEmployeeNumberId(String newEmployeeNumberId) { + this.employeeNumberId = newEmployeeNumberId; + } + + public String getLeaveTypeId() { + return this.leaveTypeId; + } + + public void setLeaveTypeId(String newLeaveTypeId) { + this.leaveTypeId = newLeaveTypeId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getLeavesType() { + return this.leavesType; + } + + public void setLeavesType(String newLeavesType) { + this.leavesType = newLeavesType; + } + + public String getLeavesTaken() { + return this.leavesTaken; + } + + public void setLeavesTaken(String newLeavesTaken) { + this.leavesTaken = newLeavesTaken; + } + + public String getLeavesEncashed() { + return this.leavesEncashed; + } + + public void setLeavesEncashed(String newLeavesEncashed) { + this.leavesEncashed = newLeavesEncashed; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisableaveCode() { + return this.disableaveCode; + } + + public void setDisableaveCode(String newDisableaveCode) { + this.disableaveCode = newDisableaveCode; + } + + public String getDisableaveDescription() { + return this.disableaveDescription; + } + + public void setDisableaveDescription(String newDisableaveDescription) { + this.disableaveDescription = newDisableaveDescription; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getButLeaveCode() { + return this.butLeaveCode; + } + + public void setButLeaveCode(String newButLeaveCode) { + this.butLeaveCode = newButLeaveCode; + } + + public String getDisabbutLeaveCode() { + return this.disabbutLeaveCode; + } + + public void setDisabbutLeaveCode(String newDisabbutLeaveCode) { + this.disabbutLeaveCode = newDisabbutLeaveCode; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getDisabtxtleaveTypes() { + return this.disabtxtleaveTypes; + } + + public void setDisabtxtleaveTypes(String newDisabtxtleaveTypes) { + this.disabtxtleaveTypes = newDisabtxtleaveTypes; + } + + public String getDisabtxtCreditDate() { + return this.disabtxtCreditDate; + } + + public void setDisabtxtCreditDate(String newDisabtxtCreditDate) { + this.disabtxtCreditDate = newDisabtxtCreditDate; + } + + public String getDisabtxtOpeningBalance() { + return this.disabtxtOpeningBalance; + } + + public void setDisabtxtOpeningBalance(String newDisabtxtOpeningBalance) { + this.disabtxtOpeningBalance = newDisabtxtOpeningBalance; + } + + public String getDisabtxtLeavesCredited() { + return this.disabtxtLeavesCredited; + } + + public void setDisabtxtLeavesCredited(String newDisabtxtLeavesCredited) { + this.disabtxtLeavesCredited = newDisabtxtLeavesCredited; + } + + public String getDisabtxtLeavesTaken() { + return this.disabtxtLeavesTaken; + } + + public void setDisabtxtLeavesTaken(String newDisabtxtLeavesTaken) { + this.disabtxtLeavesTaken = newDisabtxtLeavesTaken; + } + + public String getDisabtxtLeavesEncashed() { + return this.disabtxtLeavesEncashed; + } + + public void setDisabtxtLeavesEncashed(String newDisabtxtLeavesEncashed) { + this.disabtxtLeavesEncashed = newDisabtxtLeavesEncashed; + } + + public String getDisabtxtLeaveBalance() { + return this.disabtxtLeaveBalance; + } + + public void setDisabtxtLeaveBalance(String newDisabtxtLeaveBalance) { + this.disabtxtLeaveBalance = newDisabtxtLeaveBalance; + } + + public String getDisabtxtApplicationDate() { + return this.disabtxtApplicationDate; + } + + public void setDisabtxtApplicationDate(String newDisabtxtApplicationDate) { + this.disabtxtApplicationDate = newDisabtxtApplicationDate; + } + + public String getDisabtxtAction() { + return this.disabtxtAction; + } + + public void setDisabtxtAction(String newDisabtxtAction) { + this.disabtxtAction = newDisabtxtAction; + } + + public String getDisabtxtFromDate() { + return this.disabtxtFromDate; + } + + public void setDisabtxtFromDate(String newDisabtxtFromDate) { + this.disabtxtFromDate = newDisabtxtFromDate; + } + + public String getDisabtxtNoOfDays() { + return this.disabtxtNoOfDays; + } + + public void setDisabtxtNoOfDays(String newDisabtxtNoOfDays) { + this.disabtxtNoOfDays = newDisabtxtNoOfDays; + } + + public String getDisabtxtToDate() { + return this.disabtxtToDate; + } + + public void setDisabtxtToDate(String newDisabtxtToDate) { + this.disabtxtToDate = newDisabtxtToDate; + } + + public String getDisabtxtPayrollMonth() { + return this.disabtxtPayrollMonth; + } + + public void setDisabtxtPayrollMonth(String newDisabtxtPayrollMonth) { + this.disabtxtPayrollMonth = newDisabtxtPayrollMonth; + } + + public ArrayList getArylstLvLedger() { + return this.arylstLvLedger; + } + + public void setArylstLvLedger(ArrayList newArylstLvLedger) { + this.arylstLvLedger = newArylstLvLedger; + } + + public ArrayList getArylstLvLedgerTrans() { + return this.arylstLvLedgerTrans; + } + + public void setArylstLvLedgerTrans(ArrayList newArylstLvLedgerTrans) { + this.arylstLvLedgerTrans = newArylstLvLedgerTrans; + } + + public String getDisabbutGetDtl2() { + return this.disabbutGetDtl2; + } + + public void setDisabbutGetDtl2(String newDisabbutGetDtl2) { + this.disabbutGetDtl2 = newDisabbutGetDtl2; + } + + public String getButExecute() { + return this.butExecute; + } + + public void setButExecute(String newButExecute) { + this.butExecute = newButExecute; + } + + public String getDisabbutExecute() { + return this.disabbutExecute; + } + + public void setDisabbutExecute(String newDisabbutExecute) { + this.disabbutExecute = newDisabbutExecute; + } + + public String getButGetDtl2() { + return this.butGetDtl2; + } + + public void setButGetDtl2(String newButGetDtl2) { + this.butGetDtl2 = newButGetDtl2; + } + + public String getGroupId() { + return this.groupId; + } + + public void setGroupId(String newGroupId) { + this.groupId = newGroupId; + } + + public String getButEmpCode() { + return this.butEmpCode; + } + + public void setButEmpCode(String newButEmpCode) { + this.butEmpCode = newButEmpCode; + } + + public String getDisabbutEmpCode() { + return this.disabbutEmpCode; + } + + public void setDisabbutEmpCode(String newDisabbutEmpCode) { + this.disabbutEmpCode = newDisabbutEmpCode; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String[] getTxtLeavesPending() { + return this.txtLeavesPending; + } + + public void setTxtLeavesPending(String[] newTxtLeavesPending) { + this.txtLeavesPending = newTxtLeavesPending; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvMstForm.java new file mode 100644 index 0000000..0018d4d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmLvMstForm.java @@ -0,0 +1,807 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmLvMstForm extends HrmBaseForm { + private String leaveCode; + + private String description; + + private String evidenceRequired; + + private String evidenceDescription; + + private String prefixSuffix; + + private String intermediateHoliday; + + private String leaveObsolete; + + private String encashableLimit; + + private String periodicity; + + private String calendar; + + private String applicableTo; + + private String encashable; + + private String disableaveCode; + + private String disabdescription; + + private String disabevidenceRequired; + + private String disabevidenceDescription; + + private String disabprefixSuffix; + + private String disabintermediateHoliday; + + private String disableaveObsolete; + + private String disabencashableLimit; + + private String disabperiodicity; + + private String disabcalendar; + + private String disabapplicableTo; + + private String disabencashable; + + private String[] txtLeaveDescription; + + private String[] txtEffectiveFrom; + + private String[] txtEffectiveTo; + + private String[] txtMinimumServicePeriod; + + private String[] txtMaximumAccumulationLimit; + + private String[] txtTotalAvailableLimit; + + private String[] txtAdvanceLimit; + + private String[] txtMaxTxn; + + private String[] txtMinLeavePerTxn; + + private String[] txtDependantOnWorkingDays; + + private String[] txtUnit; + + private String[] txtCreditFrequency; + + private String[] txtMaxCreditLimit; + + private String[] txtLeavesCredited; + + private String[] txtApplicableToAll; + + private String[] txtLapsable; + + private String disabtxtLeaveDescription; + + private String disabtxtEffectiveFrom; + + private String disabtxtEffectiveTo; + + private String disabtxtMinimumServicePeriod; + + private String disabtxtMaximumAccumulationLimit; + + private String disabtxtTotalAvailableLimit; + + private String disabtxtAdvanceLimit; + + private String disabtxtMaxTxn; + + private String disabtxtMinLeavePerTxn; + + private String disabtxtDependantOnWorkingDays; + + private String disabtxtUnit; + + private String disabtxtCreditFrequency; + + private String disabtxtMaxCreditLimit; + + private String disabtxtLeavesCredited; + + private String disabtxtApplicableToAll; + + private String disabtxtLapsable; + + private ArrayList arylstLvMst = new ArrayList(); + + private String criteria; + + private String selectAll; + + private String leaveCodeId; + + private String calendarTypeId; + + private String butCalendar; + + private String disabbutCalendar; + + private String butTxtEffectiveFrom; + + private String butTxtEffectiveTo; + + private String disabbutTxtEffectiveFrom; + + private String disabbutTxtEffectiveTo; + + private String butLeaveCode; + + private String disabbutLeaveCode; + + private String suffix; + + private String disabsuffix; + + private String[] txtApplicableFor; + + private String disabtxtApplicableFor; + + private String[] txtState; + + private String disabtxtState; + + private String butState; + + private String disabbutState; + + private String[] txtStateCode; + + private String[] txtStateId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getLeaveCode() { + return this.leaveCode; + } + + public void setLeaveCode(String newLeaveCode) { + this.leaveCode = newLeaveCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getEvidenceRequired() { + return this.evidenceRequired; + } + + public void setEvidenceRequired(String newEvidenceRequired) { + this.evidenceRequired = newEvidenceRequired; + } + + public String getEvidenceDescription() { + return this.evidenceDescription; + } + + public void setEvidenceDescription(String newEvidenceDescription) { + this.evidenceDescription = newEvidenceDescription; + } + + public String getPrefixSuffix() { + return this.prefixSuffix; + } + + public void setPrefixSuffix(String newPrefixSuffix) { + this.prefixSuffix = newPrefixSuffix; + } + + public String getIntermediateHoliday() { + return this.intermediateHoliday; + } + + public void setIntermediateHoliday(String newIntermediateHoliday) { + this.intermediateHoliday = newIntermediateHoliday; + } + + public String getLeaveObsolete() { + return this.leaveObsolete; + } + + public void setLeaveObsolete(String newLeaveObsolete) { + this.leaveObsolete = newLeaveObsolete; + } + + public String getEncashable() { + return this.encashable; + } + + public void setEncashable(String newEncashable) { + this.encashable = newEncashable; + } + + public String getEncashableLimit() { + return this.encashableLimit; + } + + public void setEncashableLimit(String newEncashableLimit) { + this.encashableLimit = newEncashableLimit; + } + + public String getPeriodicity() { + return this.periodicity; + } + + public void setPeriodicity(String newPeriodicity) { + this.periodicity = newPeriodicity; + } + + public String getCalendar() { + return this.calendar; + } + + public void setCalendar(String newCalendar) { + this.calendar = newCalendar; + } + + public String getApplicableTo() { + return this.applicableTo; + } + + public void setApplicableTo(String newApplicableTo) { + this.applicableTo = newApplicableTo; + } + + public String[] getTxtLeaveDescription() { + return this.txtLeaveDescription; + } + + public String[] getTxtEffectiveFrom() { + return this.txtEffectiveFrom; + } + + public String[] getTxtEffectiveTo() { + return this.txtEffectiveTo; + } + + public String[] getTxtMinimumServicePeriod() { + return this.txtMinimumServicePeriod; + } + + public String[] getTxtMaximumAccumulationLimit() { + return this.txtMaximumAccumulationLimit; + } + + public String[] getTxtTotalAvailableLimit() { + return this.txtTotalAvailableLimit; + } + + public String[] getTxtAdvanceLimit() { + return this.txtAdvanceLimit; + } + + public String[] getTxtMaxTxn() { + return this.txtMaxTxn; + } + + public String[] getTxtMinLeavePerTxn() { + return this.txtMinLeavePerTxn; + } + + public String[] getTxtDependantOnWorkingDays() { + return this.txtDependantOnWorkingDays; + } + + public String[] getTxtUnit() { + return this.txtUnit; + } + + public String[] getTxtCreditFrequency() { + return this.txtCreditFrequency; + } + + public String[] getTxtMaxCreditLimit() { + return this.txtMaxCreditLimit; + } + + public String[] getTxtLeavesCredited() { + return this.txtLeavesCredited; + } + + public String[] getTxtApplicableToAll() { + return this.txtApplicableToAll; + } + + public String[] getTxtLapsable() { + return this.txtLapsable; + } + + public void setTxtAdvanceLimit(String[] newTxtAdvanceLimit) { + this.txtAdvanceLimit = newTxtAdvanceLimit; + } + + public void setTxtApplicableToAll(String[] newTxtApplicableToAll) { + this.txtApplicableToAll = newTxtApplicableToAll; + } + + public void setTxtCreditFrequency(String[] newTxtCreditFrequency) { + this.txtCreditFrequency = newTxtCreditFrequency; + } + + public void setTxtDependantOnWorkingDays(String[] newTxtDependantOnWorkingDays) { + this.txtDependantOnWorkingDays = newTxtDependantOnWorkingDays; + } + + public void setTxtEffectiveFrom(String[] newTxtEffectiveFrom) { + this.txtEffectiveFrom = newTxtEffectiveFrom; + } + + public void setTxtEffectiveTo(String[] newTxtEffectiveTo) { + this.txtEffectiveTo = newTxtEffectiveTo; + } + + public void setTxtLapsable(String[] newTxtLapsable) { + this.txtLapsable = newTxtLapsable; + } + + public void setTxtLeaveDescription(String[] newTxtLeaveDescription) { + this.txtLeaveDescription = newTxtLeaveDescription; + } + + public void setTxtLeavesCredited(String[] newTxtLeavesCredited) { + this.txtLeavesCredited = newTxtLeavesCredited; + } + + public void setTxtMaxCreditLimit(String[] newTxtMaxCreditLimit) { + this.txtMaxCreditLimit = newTxtMaxCreditLimit; + } + + public void setTxtMaxTxn(String[] newTxtMaxTxn) { + this.txtMaxTxn = newTxtMaxTxn; + } + + public void setTxtMaximumAccumulationLimit(String[] newTxtMaximumAccumulationLimit) { + this.txtMaximumAccumulationLimit = newTxtMaximumAccumulationLimit; + } + + public void setTxtMinLeavePerTxn(String[] newTxtMinLeavePerTxn) { + this.txtMinLeavePerTxn = newTxtMinLeavePerTxn; + } + + public void setTxtMinimumServicePeriod(String[] newTxtMinimumServicePeriod) { + this.txtMinimumServicePeriod = newTxtMinimumServicePeriod; + } + + public void setTxtTotalAvailableLimit(String[] newTxtTotalAvailableLimit) { + this.txtTotalAvailableLimit = newTxtTotalAvailableLimit; + } + + public void setTxtUnit(String[] newTxtUnit) { + this.txtUnit = newTxtUnit; + } + + public String getCriteria() { + return this.criteria; + } + + public void setCriteria(String newCriteria) { + this.criteria = newCriteria; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getLeaveCodeId() { + return this.leaveCodeId; + } + + public void setLeaveCodeId(String newLeaveCodeId) { + this.leaveCodeId = newLeaveCodeId; + } + + public String getCalendarTypeId() { + return this.calendarTypeId; + } + + public void setCalendarTypeId(String newCalendarTypeId) { + this.calendarTypeId = newCalendarTypeId; + } + + public String getDisableaveCode() { + return this.disableaveCode; + } + + public void setDisableaveCode(String newDisableaveCode) { + this.disableaveCode = newDisableaveCode; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabevidenceRequired() { + return this.disabevidenceRequired; + } + + public void setDisabevidenceRequired(String newDisabevidenceRequired) { + this.disabevidenceRequired = newDisabevidenceRequired; + } + + public String getDisabevidenceDescription() { + return this.disabevidenceDescription; + } + + public void setDisabevidenceDescription(String newDisabevidenceDescription) { + this.disabevidenceDescription = newDisabevidenceDescription; + } + + public String getDisabprefixSuffix() { + return this.disabprefixSuffix; + } + + public void setDisabprefixSuffix(String newDisabprefixSuffix) { + this.disabprefixSuffix = newDisabprefixSuffix; + } + + public String getDisabintermediateHoliday() { + return this.disabintermediateHoliday; + } + + public void setDisabintermediateHoliday(String newDisabintermediateHoliday) { + this.disabintermediateHoliday = newDisabintermediateHoliday; + } + + public String getDisableaveObsolete() { + return this.disableaveObsolete; + } + + public void setDisableaveObsolete(String newDisableaveObsolete) { + this.disableaveObsolete = newDisableaveObsolete; + } + + public String getDisabencashableLimit() { + return this.disabencashableLimit; + } + + public void setDisabencashableLimit(String newDisabencashableLimit) { + this.disabencashableLimit = newDisabencashableLimit; + } + + public String getDisabperiodicity() { + return this.disabperiodicity; + } + + public void setDisabperiodicity(String newDisabperiodicity) { + this.disabperiodicity = newDisabperiodicity; + } + + public String getDisabcalendar() { + return this.disabcalendar; + } + + public void setDisabcalendar(String newDisabcalendar) { + this.disabcalendar = newDisabcalendar; + } + + public String getDisabapplicableTo() { + return this.disabapplicableTo; + } + + public void setDisabapplicableTo(String newDisabapplicableTo) { + this.disabapplicableTo = newDisabapplicableTo; + } + + public String getDisabencashable() { + return this.disabencashable; + } + + public void setDisabencashable(String newDisabencashable) { + this.disabencashable = newDisabencashable; + } + + public String getDisabtxtLeaveDescription() { + return this.disabtxtLeaveDescription; + } + + public void setDisabtxtLeaveDescription(String newDisabtxtLeaveDescription) { + this.disabtxtLeaveDescription = newDisabtxtLeaveDescription; + } + + public String getDisabtxtEffectiveFrom() { + return this.disabtxtEffectiveFrom; + } + + public void setDisabtxtEffectiveFrom(String newDisabtxtEffectiveFrom) { + this.disabtxtEffectiveFrom = newDisabtxtEffectiveFrom; + } + + public String getDisabtxtEffectiveTo() { + return this.disabtxtEffectiveTo; + } + + public void setDisabtxtEffectiveTo(String newDisabtxtEffectiveTo) { + this.disabtxtEffectiveTo = newDisabtxtEffectiveTo; + } + + public String getDisabtxtMinimumServicePeriod() { + return this.disabtxtMinimumServicePeriod; + } + + public void setDisabtxtMinimumServicePeriod(String newDisabtxtMinimumServicePeriod) { + this.disabtxtMinimumServicePeriod = newDisabtxtMinimumServicePeriod; + } + + public String getDisabtxtMaximumAccumulationLimit() { + return this.disabtxtMaximumAccumulationLimit; + } + + public void setDisabtxtMaximumAccumulationLimit(String newDisabtxtMaximumAccumulationLimit) { + this.disabtxtMaximumAccumulationLimit = newDisabtxtMaximumAccumulationLimit; + } + + public String getDisabtxtTotalAvailableLimit() { + return this.disabtxtTotalAvailableLimit; + } + + public void setDisabtxtTotalAvailableLimit(String newDisabtxtTotalAvailableLimit) { + this.disabtxtTotalAvailableLimit = newDisabtxtTotalAvailableLimit; + } + + public String getDisabtxtAdvanceLimit() { + return this.disabtxtAdvanceLimit; + } + + public void setDisabtxtAdvanceLimit(String newDisabtxtAdvanceLimit) { + this.disabtxtAdvanceLimit = newDisabtxtAdvanceLimit; + } + + public String getDisabtxtMaxTxn() { + return this.disabtxtMaxTxn; + } + + public void setDisabtxtMaxTxn(String newDisabtxtMaxTxn) { + this.disabtxtMaxTxn = newDisabtxtMaxTxn; + } + + public String getDisabtxtMinLeavePerTxn() { + return this.disabtxtMinLeavePerTxn; + } + + public void setDisabtxtMinLeavePerTxn(String newDisabtxtMinLeavePerTxn) { + this.disabtxtMinLeavePerTxn = newDisabtxtMinLeavePerTxn; + } + + public String getDisabtxtDependantOnWorkingDays() { + return this.disabtxtDependantOnWorkingDays; + } + + public void setDisabtxtDependantOnWorkingDays(String newDisabtxtDependantOnWorkingDays) { + this.disabtxtDependantOnWorkingDays = newDisabtxtDependantOnWorkingDays; + } + + public String getDisabtxtUnit() { + return this.disabtxtUnit; + } + + public void setDisabtxtUnit(String newDisabtxtUnit) { + this.disabtxtUnit = newDisabtxtUnit; + } + + public String getDisabtxtCreditFrequency() { + return this.disabtxtCreditFrequency; + } + + public void setDisabtxtCreditFrequency(String newDisabtxtCreditFrequency) { + this.disabtxtCreditFrequency = newDisabtxtCreditFrequency; + } + + public String getDisabtxtMaxCreditLimit() { + return this.disabtxtMaxCreditLimit; + } + + public void setDisabtxtMaxCreditLimit(String newDisabtxtMaxCreditLimit) { + this.disabtxtMaxCreditLimit = newDisabtxtMaxCreditLimit; + } + + public String getDisabtxtLeavesCredited() { + return this.disabtxtLeavesCredited; + } + + public void setDisabtxtLeavesCredited(String newDisabtxtLeavesCredited) { + this.disabtxtLeavesCredited = newDisabtxtLeavesCredited; + } + + public String getDisabtxtApplicableToAll() { + return this.disabtxtApplicableToAll; + } + + public void setDisabtxtApplicableToAll(String newDisabtxtApplicableToAll) { + this.disabtxtApplicableToAll = newDisabtxtApplicableToAll; + } + + public String getDisabtxtLapsable() { + return this.disabtxtLapsable; + } + + public void setDisabtxtLapsable(String newDisabtxtLapsable) { + this.disabtxtLapsable = newDisabtxtLapsable; + } + + public String getButCalendar() { + return this.butCalendar; + } + + public void setButCalendar(String newButCalendar) { + this.butCalendar = newButCalendar; + } + + public String getDisabbutCalendar() { + return this.disabbutCalendar; + } + + public void setDisabbutCalendar(String newDisabbutCalendar) { + this.disabbutCalendar = newDisabbutCalendar; + } + + public String getButTxtEffectiveFrom() { + return this.butTxtEffectiveFrom; + } + + public void setButTxtEffectiveFrom(String newButTxtEffectiveFrom) { + this.butTxtEffectiveFrom = newButTxtEffectiveFrom; + } + + public String getButTxtEffectiveTo() { + return this.butTxtEffectiveTo; + } + + public void setButTxtEffectiveTo(String newButTxtEffectiveTo) { + this.butTxtEffectiveTo = newButTxtEffectiveTo; + } + + public String getDisabbutTxtEffectiveFrom() { + return this.disabbutTxtEffectiveFrom; + } + + public void setDisabbutTxtEffectiveFrom(String newDisabbutTxtEffectiveFrom) { + this.disabbutTxtEffectiveFrom = newDisabbutTxtEffectiveFrom; + } + + public String getDisabbutTxtEffectiveTo() { + return this.disabbutTxtEffectiveTo; + } + + public void setDisabbutTxtEffectiveTo(String newDisabbutTxtEffectiveTo) { + this.disabbutTxtEffectiveTo = newDisabbutTxtEffectiveTo; + } + + public String getButLeaveCode() { + return this.butLeaveCode; + } + + public void setButLeaveCode(String newButLeaveCode) { + this.butLeaveCode = newButLeaveCode; + } + + public String getDisabbutLeaveCode() { + return this.disabbutLeaveCode; + } + + public void setDisabbutLeaveCode(String newDisabbutLeaveCode) { + this.disabbutLeaveCode = newDisabbutLeaveCode; + } + + public String getSuffix() { + return this.suffix; + } + + public void setSuffix(String newSuffix) { + this.suffix = newSuffix; + } + + public String getDisabsuffix() { + return this.disabsuffix; + } + + public void setDisabsuffix(String newDisabsuffix) { + this.disabsuffix = newDisabsuffix; + } + + public ArrayList getArylstLvMst() { + return this.arylstLvMst; + } + + public void setArylstLvMst(ArrayList newArylstLvMst) { + this.arylstLvMst = newArylstLvMst; + } + + public String[] getTxtApplicableFor() { + return this.txtApplicableFor; + } + + public void setTxtApplicableFor(String[] newTxtApplicableFor) { + this.txtApplicableFor = newTxtApplicableFor; + } + + public String getDisabtxtApplicableFor() { + return this.disabtxtApplicableFor; + } + + public void setDisabtxtApplicableFor(String newDisabtxtApplicableFor) { + this.disabtxtApplicableFor = newDisabtxtApplicableFor; + } + + public String[] getTxtState() { + return this.txtState; + } + + public void setTxtState(String[] newTxtState) { + this.txtState = newTxtState; + } + + public String getDisabtxtState() { + return this.disabtxtState; + } + + public void setDisabtxtState(String newDisabtxtState) { + this.disabtxtState = newDisabtxtState; + } + + public String getButState() { + return this.butState; + } + + public void setButState(String newButState) { + this.butState = newButState; + } + + public String getDisabbutState() { + return this.disabbutState; + } + + public void setDisabbutState(String newDisabbutState) { + this.disabbutState = newDisabbutState; + } + + public String[] getTxtStateCode() { + return this.txtStateCode; + } + + public void setTxtStateCode(String[] newTxtStateCode) { + this.txtStateCode = newTxtStateCode; + } + + public String[] getTxtStateId() { + return this.txtStateId; + } + + public void setTxtStateId(String[] newTxtStateId) { + this.txtStateId = newTxtStateId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java new file mode 100644 index 0000000..cd5d769 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMediclaimMasterForm.java @@ -0,0 +1,237 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmMediclaimMasterForm extends HrmBaseForm { + private String claimCode; + + private String txtClass; + + private String cadre; + + private boolean allEmp; + + private String dependents; + + private String[] coverName; + + private String[] sumInsured; + + private ArrayList arrHrmMediclaimMstDtl = new ArrayList(); + + private String[] selectAll; + + private String[] salaryUnit; + + private String[] premium; + + private String[] ageFrom; + + private String[] ageTo; + + private String[] aicContribution; + + private String[] documentRequired; + + String txtClassId; + + String txtCadreId; + + String butTxtClass; + + String butCadre; + + private String allEmployeeApplicable; + + String disabbutTxtClass; + + String disabbutCadre; + + public String getDisabbutTxtClass() { + return this.disabbutTxtClass; + } + + public void setDisabbutTxtClass(String disabbutTxtClass) { + this.disabbutTxtClass = disabbutTxtClass; + } + + public String getDisabbutCadre() { + return this.disabbutCadre; + } + + public void setDisabbutCadre(String disabbutCadre) { + this.disabbutCadre = disabbutCadre; + } + + public String getTxtClassId() { + return this.txtClassId; + } + + public void setTxtClassId(String txtClassId) { + this.txtClassId = txtClassId; + } + + public String getTxtCadreId() { + return this.txtCadreId; + } + + public void setTxtCadreId(String txtCadreId) { + this.txtCadreId = txtCadreId; + } + + public String getButTxtClass() { + return this.butTxtClass; + } + + public void setButTxtClass(String butTxtClass) { + this.butTxtClass = butTxtClass; + } + + public String getButCadre() { + return this.butCadre; + } + + public void setButCadre(String butCadre) { + this.butCadre = butCadre; + } + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getClaimCode() { + return this.claimCode; + } + + public void setClaimCode(String claimCode) { + this.claimCode = claimCode; + } + + public String getTxtClass() { + return this.txtClass; + } + + public void setTxtClass(String txtClass) { + this.txtClass = txtClass; + } + + public String getCadre() { + return this.cadre; + } + + public void setCadre(String cadre) { + this.cadre = cadre; + } + + public boolean getAllEmp() { + return this.allEmp; + } + + public void setAllEmp(boolean allEmp) { + this.allEmp = allEmp; + } + + public String getDependents() { + return this.dependents; + } + + public void setDependents(String dependents) { + this.dependents = dependents; + } + + public String[] getCoverName() { + return this.coverName; + } + + public void setCoverName(String[] coverName) { + this.coverName = coverName; + } + + public String[] getSumInsured() { + return this.sumInsured; + } + + public void setSumInsured(String[] sumInsured) { + this.sumInsured = sumInsured; + } + + public ArrayList getArrHrmMediclaimMstDtl() { + return this.arrHrmMediclaimMstDtl; + } + + public void setArrHrmMediclaimMstDtl(ArrayList newArrHrmMediclaimMstDtl) { + this.arrHrmMediclaimMstDtl = newArrHrmMediclaimMstDtl; + } + + public String[] getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String[] newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getSalaryUnit() { + return this.salaryUnit; + } + + public void setSalaryUnit(String[] salaryUnit) { + this.salaryUnit = salaryUnit; + } + + public String[] getPremium() { + return this.premium; + } + + public void setPremium(String[] premium) { + this.premium = premium; + } + + public String[] getAgeFrom() { + return this.ageFrom; + } + + public void setAgeFrom(String[] ageFrom) { + this.ageFrom = ageFrom; + } + + public String[] getAgeTo() { + return this.ageTo; + } + + public void setAgeTo(String[] ageTo) { + this.ageTo = ageTo; + } + + public String[] getAicContribution() { + return this.aicContribution; + } + + public void setAicContribution(String[] aicContribution) { + this.aicContribution = aicContribution; + } + + public String[] getDocumentRequired() { + return this.documentRequired; + } + + public void setDocumentRequired(String[] documentRequired) { + this.documentRequired = documentRequired; + } + + public String getAllEmployeeApplicable() { + return this.allEmployeeApplicable; + } + + public void setAllEmployeeApplicable(String newAllEmployeeApplicable) { + this.allEmployeeApplicable = newAllEmployeeApplicable; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMisReportForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMisReportForm.java new file mode 100644 index 0000000..a7221fb --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMisReportForm.java @@ -0,0 +1,106 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class HrmMisReportForm extends JasperReportForm { + private String[] txtPosition; + + private String[] txtDesiredStrength; + + private String optSelect; + + private String[] butPosition; + + private ArrayList arrMisReport = new ArrayList(); + + private String[] txtPositionId; + + private String locationCode; + + private String butGenRep; + + private String disabbutGenRep; + + private String txtYearMonth; + + public String[] getTxtPosition() { + return this.txtPosition; + } + + public void setTxtPosition(String[] newTxtPosition) { + this.txtPosition = newTxtPosition; + } + + public String[] getTxtDesiredStrength() { + return this.txtDesiredStrength; + } + + public void setTxtDesiredStrength(String[] newTxtDesiredStrength) { + this.txtDesiredStrength = newTxtDesiredStrength; + } + + public String getOptSelect() { + return this.optSelect; + } + + public void setOptSelect(String newOptSelect) { + this.optSelect = newOptSelect; + } + + public String[] getButPosition() { + return this.butPosition; + } + + public void setButPosition(String[] newButPosition) { + this.butPosition = newButPosition; + } + + public ArrayList getArrMisReport() { + return this.arrMisReport; + } + + public void setArrMisReport(ArrayList newArrMisReport) { + this.arrMisReport = newArrMisReport; + } + + public String[] getTxtPositionId() { + return this.txtPositionId; + } + + public void setTxtPositionId(String[] newTxtPositionId) { + this.txtPositionId = newTxtPositionId; + } + + public String getLocationCode() { + return this.locationCode; + } + + public void setLocationCode(String newLocationCode) { + this.locationCode = newLocationCode; + } + + public String getButGenRep() { + return this.butGenRep; + } + + public void setButGenRep(String newButGenRep) { + this.butGenRep = newButGenRep; + } + + public String getDisabbutGenRep() { + return this.disabbutGenRep; + } + + public void setDisabbutGenRep(String newDisabbutGenRep) { + this.disabbutGenRep = newDisabbutGenRep; + } + + public String getTxtYearMonth() { + return this.txtYearMonth; + } + + public void setTxtYearMonth(String newTxtYearMonth) { + this.txtYearMonth = newTxtYearMonth; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java new file mode 100644 index 0000000..3589cc9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmMyWorkflowForm.java @@ -0,0 +1,196 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmMyWorkflowForm extends HrmBaseForm { + private String workflowType; + + private String txtStatus; + + private String id; + + private String requestType; + + private String selectAll; + + private String[] requestId; + + private String[] requestor; + + private String[] requestorName; + + private String[] approver; + + private String[] approverName; + + private String[] level; + + private String[] docDtlId; + + private String employeeNoId; + + private String butId; + + private String disabbutId; + + private String butAct; + + private String disabbutAct; + + private String disabselectAll; + + private ArrayList arrHrmMyWorkflowDtl = new ArrayList(); + + public String getWorkflowType() { + return this.workflowType; + } + + public void setWorkflowType(String newWorkflowType) { + this.workflowType = newWorkflowType; + } + + public String getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getId() { + return this.id; + } + + public void setId(String newId) { + this.id = newId; + } + + public String getRequestType() { + return this.requestType; + } + + public void setRequestType(String newRequestType) { + this.requestType = newRequestType; + } + + public String[] getRequestId() { + return this.requestId; + } + + public void setRequestId(String[] newRequestId) { + this.requestId = newRequestId; + } + + public String[] getRequestor() { + return this.requestor; + } + + public void setRequestor(String[] newRequestor) { + this.requestor = newRequestor; + } + + public String[] getRequestorName() { + return this.requestorName; + } + + public void setRequestorName(String[] newRequestorName) { + this.requestorName = newRequestorName; + } + + public String[] getApprover() { + return this.approver; + } + + public void setApprover(String[] newApprover) { + this.approver = newApprover; + } + + public String[] getApproverName() { + return this.approverName; + } + + public void setApproverName(String[] newApproverName) { + this.approverName = newApproverName; + } + + public String[] getLevel() { + return this.level; + } + + public void setLevel(String[] newLevel) { + this.level = newLevel; + } + + public String getEmployeeNoId() { + return this.employeeNoId; + } + + public void setEmployeeNoId(String newEmployeeNoId) { + this.employeeNoId = newEmployeeNoId; + } + + public String getButAct() { + return this.butAct; + } + + public void setButAct(String butAct) { + this.butAct = butAct; + } + + public String getDisabbutAct() { + return this.disabbutAct; + } + + public void setDisabbutAct(String disabbutAct) { + this.disabbutAct = disabbutAct; + } + + public String[] getDocDtlId() { + return this.docDtlId; + } + + public void setDocDtlId(String[] docDtlId) { + this.docDtlId = docDtlId; + } + + public ArrayList getArrHrmMyWorkflowDtl() { + return this.arrHrmMyWorkflowDtl; + } + + public void setArrHrmMyWorkflowDtl(ArrayList arrHrmMyWorkflowDtl) { + this.arrHrmMyWorkflowDtl = arrHrmMyWorkflowDtl; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String selectAll) { + this.selectAll = selectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String disabselectAll) { + this.disabselectAll = disabselectAll; + } + + public String getButId() { + return this.butId; + } + + public void setButId(String newButId) { + this.butId = newButId; + } + + public String getDisabbutId() { + return this.disabbutId; + } + + public void setDisabbutId(String disabbutId) { + this.disabbutId = disabbutId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCalMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCalMstForm.java new file mode 100644 index 0000000..58b7998 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCalMstForm.java @@ -0,0 +1,227 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgCalMstForm extends HrmBaseForm { + private String calendarType; + + private String startMonth; + + private String duration; + + private String[] txtSlabNumber; + + private String[] txtSlabBeginMonth; + + private String[] txtDuration; + + private String[] txtSiteId; + + private String selectAll; + + private ArrayList arrHrmCalDtl = new ArrayList(); + + private String calendarTypeId; + + private String disabcalendarType; + + private String disabduration; + + private String disabselectAll; + + private String disabstartMonth; + + private String disabtxtDuration; + + private String disabtxtSlabBeginMonth; + + private String disabtxtSlabNumber; + + private String butCalType; + + private String disabbutCalType; + + private String butCalendarTab; + + private String disabbutCalendarTab; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCalendarType() { + return this.calendarType; + } + + public void setCalendarType(String newCalendarType) { + this.calendarType = newCalendarType; + } + + public String getStartMonth() { + return this.startMonth; + } + + public void setStartMonth(String newStartMonth) { + this.startMonth = newStartMonth; + } + + public String getDuration() { + return this.duration; + } + + public void setDuration(String newDuration) { + this.duration = newDuration; + } + + public String[] getTxtSlabNumber() { + return this.txtSlabNumber; + } + + public void setTxtSlabNumber(String[] newTxtSlabNumber) { + this.txtSlabNumber = newTxtSlabNumber; + } + + public String[] getTxtSlabBeginMonth() { + return this.txtSlabBeginMonth; + } + + public void setTxtSlabBeginMonth(String[] newTxtSlabBeginMonth) { + this.txtSlabBeginMonth = newTxtSlabBeginMonth; + } + + public String[] getTxtDuration() { + return this.txtDuration; + } + + public void setTxtDuration(String[] newTxtDuration) { + this.txtDuration = newTxtDuration; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArrHrmCalDtl() { + return this.arrHrmCalDtl; + } + + public void setArrHrmCalDtl(ArrayList newArrHrmCalDtl) { + this.arrHrmCalDtl = newArrHrmCalDtl; + } + + public String getCalendarTypeId() { + return this.calendarTypeId; + } + + public void setCalendarTypeId(String newCalendarTypeId) { + this.calendarTypeId = newCalendarTypeId; + } + + public String[] getTxtSiteId() { + return this.txtSiteId; + } + + public void setTxtSiteId(String[] newTxtSiteId) { + this.txtSiteId = newTxtSiteId; + } + + public String getDisabcalendarType() { + return this.disabcalendarType; + } + + public void setDisabcalendarType(String newDisabcalendarType) { + this.disabcalendarType = newDisabcalendarType; + } + + public String getDisabduration() { + return this.disabduration; + } + + public void setDisabduration(String newDisabduration) { + this.disabduration = newDisabduration; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabstartMonth() { + return this.disabstartMonth; + } + + public void setDisabstartMonth(String newDisabstartMonth) { + this.disabstartMonth = newDisabstartMonth; + } + + public String getDisabtxtDuration() { + return this.disabtxtDuration; + } + + public void setDisabtxtDuration(String newDisabtxtDuration) { + this.disabtxtDuration = newDisabtxtDuration; + } + + public String getDisabtxtSlabBeginMonth() { + return this.disabtxtSlabBeginMonth; + } + + public void setDisabtxtSlabBeginMonth(String newDisabtxtSlabBeginMonth) { + this.disabtxtSlabBeginMonth = newDisabtxtSlabBeginMonth; + } + + public String getDisabtxtSlabNumber() { + return this.disabtxtSlabNumber; + } + + public void setDisabtxtSlabNumber(String newDisabtxtSlabNumber) { + this.disabtxtSlabNumber = newDisabtxtSlabNumber; + } + + public String getButCalType() { + return this.butCalType; + } + + public void setButCalType(String newButCalType) { + this.butCalType = newButCalType; + } + + public String getDisabbutCalType() { + return this.disabbutCalType; + } + + public void setDisabbutCalType(String newDisabbutCalType) { + this.disabbutCalType = newDisabbutCalType; + } + + public String getButCalendarTab() { + return this.butCalendarTab; + } + + public void setButCalendarTab(String newButCalendarTab) { + this.butCalendarTab = newButCalendarTab; + } + + public String getDisabbutCalendarTab() { + return this.disabbutCalendarTab; + } + + public void setDisabbutCalendarTab(String newDisabbutCalendarTab) { + this.disabbutCalendarTab = newDisabbutCalendarTab; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgClassDtlForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgClassDtlForm.java new file mode 100644 index 0000000..7004546 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgClassDtlForm.java @@ -0,0 +1,257 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgClassDtlForm extends HrmBaseForm { + private String code; + + private String classificationType; + + private String selectAll; + + private String[] txtDescription; + + private String[] txtHierarchy; + + private String[] txtParentCode; + + private String[] txtClassificationCode; + + private ArrayList arrHrmClassDtl = new ArrayList(); + + private String[] txtParentCodeId; + + private String disabclassificationType; + + private String disabcode; + + private String disabtxtClassificationCode; + + private String disabtxtDescription; + + private String disabtxtHierarchy; + + private String disabtxtParentCode; + + private String disabselectAll; + + private String butClassCode; + + private String disabbutClassCode; + + private String butTypeCode; + + private String disabbutTypeCode; + + private String butClassTab; + + private String disabbutClassTab; + + private String orgCodeId; + + private String[] txtTypeCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getClassificationType() { + return this.classificationType; + } + + public void setClassificationType(String newClassificationType) { + this.classificationType = newClassificationType; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String[] newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String[] getTxtHierarchy() { + return this.txtHierarchy; + } + + public void setTxtHierarchy(String[] newTxtHierarchy) { + this.txtHierarchy = newTxtHierarchy; + } + + public ArrayList getArrHrmClassDtl() { + return this.arrHrmClassDtl; + } + + public void setArrHrmClassDtl(ArrayList newArrHrmClassDtl) { + this.arrHrmClassDtl = newArrHrmClassDtl; + } + + public String[] getTxtParentCode() { + return this.txtParentCode; + } + + public void setTxtParentCode(String[] newTxtParentCode) { + this.txtParentCode = newTxtParentCode; + } + + public String[] getTxtClassificationCode() { + return this.txtClassificationCode; + } + + public void setTxtClassificationCode(String[] newTxtClassificationCode) { + this.txtClassificationCode = newTxtClassificationCode; + } + + public String[] getTxtParentCodeId() { + return this.txtParentCodeId; + } + + public void setTxtParentCodeId(String[] newTxtParentCodeId) { + this.txtParentCodeId = newTxtParentCodeId; + } + + public String getDisabclassificationType() { + return this.disabclassificationType; + } + + public void setDisabclassificationType(String newDisabclassificationType) { + this.disabclassificationType = newDisabclassificationType; + } + + public String getDisabcode() { + return this.disabcode; + } + + public void setDisabcode(String newDisabcode) { + this.disabcode = newDisabcode; + } + + public String getDisabtxtClassificationCode() { + return this.disabtxtClassificationCode; + } + + public void setDisabtxtClassificationCode(String newDisabtxtClassificationCode) { + this.disabtxtClassificationCode = newDisabtxtClassificationCode; + } + + public String getDisabtxtDescription() { + return this.disabtxtDescription; + } + + public void setDisabtxtDescription(String newDisabtxtDescription) { + this.disabtxtDescription = newDisabtxtDescription; + } + + public String getDisabtxtHierarchy() { + return this.disabtxtHierarchy; + } + + public void setDisabtxtHierarchy(String newDisabtxtHierarchy) { + this.disabtxtHierarchy = newDisabtxtHierarchy; + } + + public String getDisabtxtParentCode() { + return this.disabtxtParentCode; + } + + public void setDisabtxtParentCode(String newDisabtxtParentCode) { + this.disabtxtParentCode = newDisabtxtParentCode; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getButClassCode() { + return this.butClassCode; + } + + public void setButClassCode(String newButClassCode) { + this.butClassCode = newButClassCode; + } + + public String getDisabbutClassCode() { + return this.disabbutClassCode; + } + + public void setDisabbutClassCode(String newDisabbutClassCode) { + this.disabbutClassCode = newDisabbutClassCode; + } + + public String getButTypeCode() { + return this.butTypeCode; + } + + public void setButTypeCode(String newButTypeCode) { + this.butTypeCode = newButTypeCode; + } + + public String getDisabbutTypeCode() { + return this.disabbutTypeCode; + } + + public void setDisabbutTypeCode(String newDisabbutTypeCode) { + this.disabbutTypeCode = newDisabbutTypeCode; + } + + public String getButClassTab() { + return this.butClassTab; + } + + public void setButClassTab(String newButClassTab) { + this.butClassTab = newButClassTab; + } + + public String getDisabbutClassTab() { + return this.disabbutClassTab; + } + + public void setDisabbutClassTab(String newDisabbutClassTab) { + this.disabbutClassTab = newDisabbutClassTab; + } + + public String getOrgCodeId() { + return this.orgCodeId; + } + + public void setOrgCodeId(String newOrgCodeId) { + this.orgCodeId = newOrgCodeId; + } + + public String[] getTxtTypeCode() { + return this.txtTypeCode; + } + + public void setTxtTypeCode(String[] newTxtTypeCode) { + this.txtTypeCode = newTxtTypeCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCntryMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCntryMstForm.java new file mode 100644 index 0000000..d59e36f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgCntryMstForm.java @@ -0,0 +1,177 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgCntryMstForm extends HrmBaseForm { + private String[] txtCityName; + + private String[] txtCityCode; + + private String countryName; + + private String countryCode; + + private String selectAll; + + private ArrayList arrHrmCountryDtl = new ArrayList(); + + private String countryCodeId; + + private String disabcountryCode; + + private String disabselectAll; + + private String disabtxtCityCode; + + private String disabtxtCityName; + + private String disabcountryName; + + private String butCountryTab; + + private String disabbutCountryTab; + + private String butCountryCode; + + private String disabbutCountryCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtCityName() { + return this.txtCityName; + } + + public void setTxtCityName(String[] newTxtCityName) { + this.txtCityName = newTxtCityName; + } + + public String[] getTxtCityCode() { + return this.txtCityCode; + } + + public void setTxtCityCode(String[] newTxtCityCode) { + this.txtCityCode = newTxtCityCode; + } + + public String getCountryName() { + return this.countryName; + } + + public void setCountryName(String newCountryName) { + this.countryName = newCountryName; + } + + public String getCountryCode() { + return this.countryCode; + } + + public void setCountryCode(String newCountryCode) { + this.countryCode = newCountryCode; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArrHrmCountryDtl() { + return this.arrHrmCountryDtl; + } + + public void setArrHrmCountryDtl(ArrayList newArrHrmCountryDtl) { + this.arrHrmCountryDtl = newArrHrmCountryDtl; + } + + public String getCountryCodeId() { + return this.countryCodeId; + } + + public void setCountryCodeId(String newCountryCodeId) { + this.countryCodeId = newCountryCodeId; + } + + public String getDisabcountryCode() { + return this.disabcountryCode; + } + + public void setDisabcountryCode(String newDisabcountryCode) { + this.disabcountryCode = newDisabcountryCode; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtCityCode() { + return this.disabtxtCityCode; + } + + public void setDisabtxtCityCode(String newDisabtxtCityCode) { + this.disabtxtCityCode = newDisabtxtCityCode; + } + + public String getDisabtxtCityName() { + return this.disabtxtCityName; + } + + public void setDisabtxtCityName(String newDisabtxtCityName) { + this.disabtxtCityName = newDisabtxtCityName; + } + + public String getDisabcountryName() { + return this.disabcountryName; + } + + public void setDisabcountryName(String newDisabcountryName) { + this.disabcountryName = newDisabcountryName; + } + + public String getButCountryTab() { + return this.butCountryTab; + } + + public void setButCountryTab(String newButCountryTab) { + this.butCountryTab = newButCountryTab; + } + + public String getDisabbutCountryTab() { + return this.disabbutCountryTab; + } + + public void setDisabbutCountryTab(String newDisabbutCountryTab) { + this.disabbutCountryTab = newDisabbutCountryTab; + } + + public String getButCountryCode() { + return this.butCountryCode; + } + + public void setButCountryCode(String newButCountryCode) { + this.butCountryCode = newButCountryCode; + } + + public String getDisabbutCountryCode() { + return this.disabbutCountryCode; + } + + public void setDisabbutCountryCode(String newDisabbutCountryCode) { + this.disabbutCountryCode = newDisabbutCountryCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java new file mode 100644 index 0000000..dba2832 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgDistMstForm.java @@ -0,0 +1,87 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgDistMstForm extends HrmBaseForm { + private String[] txtDistrictCode; + + private String[] txtDistrictName; + + private String selectAll; + + private ArrayList arrHrmDistrictDtl = new ArrayList(); + + private String disabselectAll; + + private String disabtxtDistrictCode; + + private String disabtxtDistrictName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtDistrictCode() { + return this.txtDistrictCode; + } + + public void setTxtDistrictCode(String[] newTxtDistrictCode) { + this.txtDistrictCode = newTxtDistrictCode; + } + + public String[] getTxtDistrictName() { + return this.txtDistrictName; + } + + public void setTxtDistrictName(String[] newTxtDistrictName) { + this.txtDistrictName = newTxtDistrictName; + } + + public String getSelectAll() { + return this.selectAll; + } + + public ArrayList getArrHrmDistrictDtl() { + return this.arrHrmDistrictDtl; + } + + public void setArrHrmDistrictDtl(ArrayList newArrHrmDistrictDtl) { + this.arrHrmDistrictDtl = newArrHrmDistrictDtl; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtDistrictCode() { + return this.disabtxtDistrictCode; + } + + public void setDisabtxtDistrictCode(String newDisabtxtDistrictCode) { + this.disabtxtDistrictCode = newDisabtxtDistrictCode; + } + + public String getDisabtxtDistrictName() { + return this.disabtxtDistrictName; + } + + public void setDisabtxtDistrictName(String newDisabtxtDistrictName) { + this.disabtxtDistrictName = newDisabtxtDistrictName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolCalForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolCalForm.java new file mode 100644 index 0000000..16d8d14 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolCalForm.java @@ -0,0 +1,507 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgHolCalForm extends HrmBaseForm { + private String calendarName; + + private String calendarYear; + + private String description; + + private String fromDate; + + private String siteCode; + + private String toDate; + + private String[] txtHolidayDate; + + private String[] txtHolidayName; + + private String[] txtHolidayType; + + private String selectAll; + + private ArrayList arrHrmHolCalDtl = new ArrayList(); + + private String siteId; + + private String calId; + + private String siteDesc; + + private String disabcalendarName; + + private String disabcalendarYear; + + private String disabdescription; + + private String disabfromDate; + + private String disabtoDate; + + private String disabselectAll; + + private String disabsiteCode; + + private String disabsiteDesc; + + private String disabtxtHolidayDate; + + private String disabtxtHolidayName; + + private String disabtxtHolidayType; + + private String[] txtHolTypeId; + + private String disabbutCalName; + + private String disabbutCalYear; + + private String disabbutSiteCode; + + private String disabbutFromDate; + + private String disabbutToDate; + + private String disabbutHolType; + + private String disabbutTxtFromDate; + + private String butHolidayCalTab; + + private String disabbutHolidayCalTab; + + private String butToDate; + + private String butTxtFromDate; + + private String butCalName; + + private String butCalYear; + + private String butSiteCode; + + private String butFromDate; + + private String butHolType; + + private String state; + + private String disabstate; + + private String disabbutState; + + private String stateId; + + private String stateCode; + + private String[] txtDay; + + private String disabtxtDay; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCalendarYear() { + return this.calendarYear; + } + + public void setCalendarYear(String newCalendarYear) { + this.calendarYear = newCalendarYear; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String[] getTxtHolidayDate() { + return this.txtHolidayDate; + } + + public void setTxtHolidayDate(String[] newTxtHolidayDate) { + this.txtHolidayDate = newTxtHolidayDate; + } + + public String[] getTxtHolidayName() { + return this.txtHolidayName; + } + + public void setTxtHolidayName(String[] newTxtHolidayName) { + this.txtHolidayName = newTxtHolidayName; + } + + public String[] getTxtHolidayType() { + return this.txtHolidayType; + } + + public void setTxtHolidayType(String[] newTxtHolidayType) { + this.txtHolidayType = newTxtHolidayType; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArrHrmHolCalDtl() { + return this.arrHrmHolCalDtl; + } + + public void setArrHrmHolCalDtl(ArrayList newArrHrmHolCalDtl) { + this.arrHrmHolCalDtl = newArrHrmHolCalDtl; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getSiteDesc() { + return this.siteDesc; + } + + public void setSiteDesc(String newSiteDesc) { + this.siteDesc = newSiteDesc; + } + + public String getDisabcalendarName() { + return this.disabcalendarName; + } + + public void setDisabcalendarName(String newDisabcalendarName) { + this.disabcalendarName = newDisabcalendarName; + } + + public String getDisabcalendarYear() { + return this.disabcalendarYear; + } + + public void setDisabcalendarYear(String newDisabcalendarYear) { + this.disabcalendarYear = newDisabcalendarYear; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabfromDate() { + return this.disabfromDate; + } + + public void setDisabfromDate(String newDisabfromDate) { + this.disabfromDate = newDisabfromDate; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabsiteCode() { + return this.disabsiteCode; + } + + public void setDisabsiteCode(String newDisabsiteCode) { + this.disabsiteCode = newDisabsiteCode; + } + + public String getDisabsiteDesc() { + return this.disabsiteDesc; + } + + public void setDisabsiteDesc(String newDisabsiteDesc) { + this.disabsiteDesc = newDisabsiteDesc; + } + + public String getDisabtoDate() { + return this.disabtoDate; + } + + public void setDisabtoDate(String newDisabtoDate) { + this.disabtoDate = newDisabtoDate; + } + + public String getDisabtxtHolidayDate() { + return this.disabtxtHolidayDate; + } + + public void setDisabtxtHolidayDate(String newDisabtxtHolidayDate) { + this.disabtxtHolidayDate = newDisabtxtHolidayDate; + } + + public String getDisabtxtHolidayName() { + return this.disabtxtHolidayName; + } + + public void setDisabtxtHolidayName(String newDisabtxtHolidayName) { + this.disabtxtHolidayName = newDisabtxtHolidayName; + } + + public String getDisabtxtHolidayType() { + return this.disabtxtHolidayType; + } + + public void setDisabtxtHolidayType(String newDisabtxtHolidayType) { + this.disabtxtHolidayType = newDisabtxtHolidayType; + } + + public String[] getTxtHolTypeId() { + return this.txtHolTypeId; + } + + public void setTxtHolTypeId(String[] newTxtHolTypeId) { + this.txtHolTypeId = newTxtHolTypeId; + } + + public String getDisabbutCalName() { + return this.disabbutCalName; + } + + public void setDisabbutCalName(String newDisabbutCalName) { + this.disabbutCalName = newDisabbutCalName; + } + + public String getDisabbutCalYear() { + return this.disabbutCalYear; + } + + public void setDisabbutCalYear(String newDisabbutCalYear) { + this.disabbutCalYear = newDisabbutCalYear; + } + + public String getDisabbutSiteCode() { + return this.disabbutSiteCode; + } + + public void setDisabbutSiteCode(String newDisabbutSiteCode) { + this.disabbutSiteCode = newDisabbutSiteCode; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getDisabbutHolType() { + return this.disabbutHolType; + } + + public void setDisabbutHolType(String newDisabbutHolType) { + this.disabbutHolType = newDisabbutHolType; + } + + public String getButHolidayCalTab() { + return this.butHolidayCalTab; + } + + public void setButHolidayCalTab(String newButHolidayCalTab) { + this.butHolidayCalTab = newButHolidayCalTab; + } + + public String getDisabbutHolidayCalTab() { + return this.disabbutHolidayCalTab; + } + + public void setDisabbutHolidayCalTab(String newDisabbutHolidayCalTab) { + this.disabbutHolidayCalTab = newDisabbutHolidayCalTab; + } + + public String getButTxtFromDate() { + return this.butTxtFromDate; + } + + public void setButTxtFromDate(String newButTxtFromDate) { + this.butTxtFromDate = newButTxtFromDate; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getButToDate() { + return this.butToDate; + } + + public void setButToDate(String newButToDate) { + this.butToDate = newButToDate; + } + + public String getButCalName() { + return this.butCalName; + } + + public void setButCalName(String newButCalName) { + this.butCalName = newButCalName; + } + + public String getButCalYear() { + return this.butCalYear; + } + + public void setButCalYear(String newButCalYear) { + this.butCalYear = newButCalYear; + } + + public String getButSiteCode() { + return this.butSiteCode; + } + + public void setButSiteCode(String newButSiteCode) { + this.butSiteCode = newButSiteCode; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getButHolType() { + return this.butHolType; + } + + public void setButHolType(String newButHolType) { + this.butHolType = newButHolType; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getDisabstate() { + return this.disabstate; + } + + public void setDisabstate(String newDisabstate) { + this.disabstate = newDisabstate; + } + + public String getDisabbutState() { + return this.disabbutState; + } + + public void setDisabbutState(String newDisabbutState) { + this.disabbutState = newDisabbutState; + } + + public String getStateId() { + return this.stateId; + } + + public void setStateId(String newStateId) { + this.stateId = newStateId; + } + + public String getStateCode() { + return this.stateCode; + } + + public void setStateCode(String newStateCode) { + this.stateCode = newStateCode; + } + + public String[] getTxtDay() { + return this.txtDay; + } + + public void setTxtDay(String[] newTxtDay) { + this.txtDay = newTxtDay; + } + + public String getDisabtxtDay() { + return this.disabtxtDay; + } + + public void setDisabtxtDay(String newDisabtxtDay) { + this.disabtxtDay = newDisabtxtDay; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolTypeMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolTypeMstForm.java new file mode 100644 index 0000000..b164a0f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgHolTypeMstForm.java @@ -0,0 +1,146 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgHolTypeMstForm extends HrmBaseForm { + private String holidayType; + + private String yearlyLimit; + + private String mandatory; + + private String compensatoryLeave; + + private String rewardPercentageOfBasic; + + private String holidayTypeId; + + private String disabcompensatoryLeave; + + private String disabholidayType; + + private String disabmandatory; + + private String disabrewardPercentageOfBasic; + + private String disabyearlyLimit; + + private String butHolidayType; + + private String disabbutHolidayType; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getHolidayType() { + return this.holidayType; + } + + public void setHolidayType(String newHolidayType) { + this.holidayType = newHolidayType; + } + + public String getYearlyLimit() { + return this.yearlyLimit; + } + + public void setYearlyLimit(String newYearlyLimit) { + this.yearlyLimit = newYearlyLimit; + } + + public String getMandatory() { + return this.mandatory; + } + + public void setMandatory(String newMandatory) { + this.mandatory = newMandatory; + } + + public String getCompensatoryLeave() { + return this.compensatoryLeave; + } + + public void setCompensatoryLeave(String newCompensatoryLeave) { + this.compensatoryLeave = newCompensatoryLeave; + } + + public String getRewardPercentageOfBasic() { + return this.rewardPercentageOfBasic; + } + + public void setRewardPercentageOfBasic(String newRewardPercentageOfBasic) { + this.rewardPercentageOfBasic = newRewardPercentageOfBasic; + } + + public String getHolidayTypeId() { + return this.holidayTypeId; + } + + public void setHolidayTypeId(String newHolidayTypeId) { + this.holidayTypeId = newHolidayTypeId; + } + + public String getDisabcompensatoryLeave() { + return this.disabcompensatoryLeave; + } + + public void setDisabcompensatoryLeave(String newDisabcompensatoryLeave) { + this.disabcompensatoryLeave = newDisabcompensatoryLeave; + } + + public String getDisabholidayType() { + return this.disabholidayType; + } + + public void setDisabholidayType(String newDisabholidayType) { + this.disabholidayType = newDisabholidayType; + } + + public String getDisabmandatory() { + return this.disabmandatory; + } + + public void setDisabmandatory(String newDisabmandatory) { + this.disabmandatory = newDisabmandatory; + } + + public String getDisabrewardPercentageOfBasic() { + return this.disabrewardPercentageOfBasic; + } + + public void setDisabrewardPercentageOfBasic(String newDisabrewardPercentageOfBasic) { + this.disabrewardPercentageOfBasic = newDisabrewardPercentageOfBasic; + } + + public String getDisabyearlyLimit() { + return this.disabyearlyLimit; + } + + public void setDisabyearlyLimit(String newDisabyearlyLimit) { + this.disabyearlyLimit = newDisabyearlyLimit; + } + + public String getButHolidayType() { + return this.butHolidayType; + } + + public void setButHolidayType(String newButHolidayType) { + this.butHolidayType = newButHolidayType; + } + + public String getDisabbutHolidayType() { + return this.disabbutHolidayType; + } + + public void setDisabbutHolidayType(String newDisabbutHolidayType) { + this.disabbutHolidayType = newDisabbutHolidayType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgIncrementForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgIncrementForm.java new file mode 100644 index 0000000..97aae82 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgIncrementForm.java @@ -0,0 +1,276 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgIncrementForm extends HrmBaseForm { + private String startDate; + + private String butStartDate; + + private String disabbutStartDate; + + private String endDate; + + private String butEndDate; + + private String disabbutEndDate; + + private String clsHdr; + + private String butClsHdr; + + private String disabbutClsHdr; + + private String clsHdrDesc; + + private String clsDtl; + + private String butClsDtl; + + private String disabbutClsDtl; + + private String clsDtlDesc; + + private String ratingCode; + + private String butRatingCode; + + private String disabbutRatingCode; + + private String ratingHdrId; + + private String clsHdrId; + + private String clsDtlId; + + private ArrayList arylstRatingIncrement = new ArrayList(); + + private String[] txtRatingFrom; + + private String[] txtRatingTo; + + private String[] txtRatingGrade; + + private String[] txtRatingDescription; + + private String[] txtIncrement; + + private String[] ratingDtlId; + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getButStartDate() { + return this.butStartDate; + } + + public void setButStartDate(String newButStartDate) { + this.butStartDate = newButStartDate; + } + + public String getDisabbutStartDate() { + return this.disabbutStartDate; + } + + public void setDisabbutStartDate(String newDisabbutStartDate) { + this.disabbutStartDate = newDisabbutStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getButEndDate() { + return this.butEndDate; + } + + public void setButEndDate(String newButEndDate) { + this.butEndDate = newButEndDate; + } + + public String getDisabbutEndDate() { + return this.disabbutEndDate; + } + + public void setDisabbutEndDate(String newDisabbutEndDate) { + this.disabbutEndDate = newDisabbutEndDate; + } + + public String getClsHdr() { + return this.clsHdr; + } + + public void setClsHdr(String newClsHdr) { + this.clsHdr = newClsHdr; + } + + public String getButClsHdr() { + return this.butClsHdr; + } + + public void setButClsHdr(String newButClsHdr) { + this.butClsHdr = newButClsHdr; + } + + public String getDisabbutClsHdr() { + return this.disabbutClsHdr; + } + + public void setDisabbutClsHdr(String newDisabbutClsHdr) { + this.disabbutClsHdr = newDisabbutClsHdr; + } + + public String getClsHdrDesc() { + return this.clsHdrDesc; + } + + public void setClsHdrDesc(String newClsHdrDesc) { + this.clsHdrDesc = newClsHdrDesc; + } + + public String getClsDtl() { + return this.clsDtl; + } + + public void setClsDtl(String newClsDtl) { + this.clsDtl = newClsDtl; + } + + public String getButClsDtl() { + return this.butClsDtl; + } + + public void setButClsDtl(String newButClsDtl) { + this.butClsDtl = newButClsDtl; + } + + public String getDisabbutClsDtl() { + return this.disabbutClsDtl; + } + + public void setDisabbutClsDtl(String newDisabbutClsDtl) { + this.disabbutClsDtl = newDisabbutClsDtl; + } + + public String getClsDtlDesc() { + return this.clsDtlDesc; + } + + public void setClsDtlDesc(String newClsDtlDesc) { + this.clsDtlDesc = newClsDtlDesc; + } + + public String getRatingCode() { + return this.ratingCode; + } + + public void setRatingCode(String newRatingCode) { + this.ratingCode = newRatingCode; + } + + public String getButRatingCode() { + return this.butRatingCode; + } + + public void setButRatingCode(String newButRatingCode) { + this.butRatingCode = newButRatingCode; + } + + public String getDisabbutRatingCode() { + return this.disabbutRatingCode; + } + + public void setDisabbutRatingCode(String newDisabbutRatingCode) { + this.disabbutRatingCode = newDisabbutRatingCode; + } + + public String getRatingHdrId() { + return this.ratingHdrId; + } + + public void setRatingHdrId(String newRatingHdrId) { + this.ratingHdrId = newRatingHdrId; + } + + public String getClsHdrId() { + return this.clsHdrId; + } + + public void setClsHdrId(String newClsHdrId) { + this.clsHdrId = newClsHdrId; + } + + public String getClsDtlId() { + return this.clsDtlId; + } + + public void setClsDtlId(String newClsDtlId) { + this.clsDtlId = newClsDtlId; + } + + public ArrayList getArylstRatingIncrement() { + return this.arylstRatingIncrement; + } + + public void setArylstRatingIncrement(ArrayList newArylstRatingIncrement) { + this.arylstRatingIncrement = newArylstRatingIncrement; + } + + public String[] getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String[] newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String[] getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String[] newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String[] getTxtRatingGrade() { + return this.txtRatingGrade; + } + + public void setTxtRatingGrade(String[] newTxtRatingGrade) { + this.txtRatingGrade = newTxtRatingGrade; + } + + public String[] getTxtRatingDescription() { + return this.txtRatingDescription; + } + + public void setTxtRatingDescription(String[] newTxtRatingDescription) { + this.txtRatingDescription = newTxtRatingDescription; + } + + public String[] getTxtIncrement() { + return this.txtIncrement; + } + + public void setTxtIncrement(String[] newTxtIncrement) { + this.txtIncrement = newTxtIncrement; + } + + public String[] getRatingDtlId() { + return this.ratingDtlId; + } + + public void setRatingDtlId(String[] newRatingDtlId) { + this.ratingDtlId = newRatingDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgLangMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgLangMstForm.java new file mode 100644 index 0000000..e9862a1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgLangMstForm.java @@ -0,0 +1,109 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgLangMstForm extends HrmBaseForm { + private String[] txtCode; + + private String[] txtDescription; + + private String selectAll; + + private ArrayList arrHrmLanguageDtl = new ArrayList(); + + private String[] txtLanguageType; + + private String disabselectAll; + + private String disabtxtCode; + + private String disabtxtDescription; + + private String disabtxtLanguageType; + + private String disabbutDelete; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String[] newTxtCode) { + this.txtCode = newTxtCode; + } + + public String[] getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String[] newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArrHrmLanguageDtl() { + return this.arrHrmLanguageDtl; + } + + public void setArrHrmLanguageDtl(ArrayList newArrHrmLanguageDtl) { + this.arrHrmLanguageDtl = newArrHrmLanguageDtl; + } + + public String[] getTxtLanguageType() { + return this.txtLanguageType; + } + + public void setTxtLanguageType(String[] newTxtLanguageType) { + this.txtLanguageType = newTxtLanguageType; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtCode() { + return this.disabtxtCode; + } + + public String getDisabtxtDescription() { + return this.disabtxtDescription; + } + + public String getDisabtxtLanguageType() { + return this.disabtxtLanguageType; + } + + public void setDisabtxtCode(String newDisabtxtCode) { + this.disabtxtCode = newDisabtxtCode; + } + + public void setDisabtxtDescription(String newDisabtxtDescription) { + this.disabtxtDescription = newDisabtxtDescription; + } + + public void setDisabtxtLanguageType(String newDisabtxtLanguageType) { + this.disabtxtLanguageType = newDisabtxtLanguageType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgQualMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgQualMstForm.java new file mode 100644 index 0000000..5e18ac9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgQualMstForm.java @@ -0,0 +1,127 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgQualMstForm extends HrmBaseForm { + private String[] txtCode; + + private String[] txtQualification; + + private String[] txtNoOfYears; + + private String[] txtApprovingAuthority; + + private String selectAll; + + private ArrayList arrHrmQualificationDtl = new ArrayList(); + + private String disabselectAll; + + private String disabtxtApprovingAuthority; + + private String disabtxtCode; + + private String disabtxtNoOfYears; + + private String disabtxtQualification; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String[] newTxtCode) { + this.txtCode = newTxtCode; + } + + public String[] getTxtQualification() { + return this.txtQualification; + } + + public void setTxtQualification(String[] newTxtQualification) { + this.txtQualification = newTxtQualification; + } + + public String[] getTxtNoOfYears() { + return this.txtNoOfYears; + } + + public void setTxtNoOfYears(String[] newTxtNoOfYears) { + this.txtNoOfYears = newTxtNoOfYears; + } + + public String[] getTxtApprovingAuthority() { + return this.txtApprovingAuthority; + } + + public void setTxtApprovingAuthority(String[] newTxtApprovingAuthority) { + this.txtApprovingAuthority = newTxtApprovingAuthority; + } + + public ArrayList getArrHrmQualificationDtl() { + return this.arrHrmQualificationDtl; + } + + public void setArrHrmQualificationDtl(ArrayList newArrHrmQualificationDtl) { + this.arrHrmQualificationDtl = newArrHrmQualificationDtl; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtApprovingAuthority() { + return this.disabtxtApprovingAuthority; + } + + public void setDisabtxtApprovingAuthority(String newDisabtxtApprovingAuthority) { + this.disabtxtApprovingAuthority = newDisabtxtApprovingAuthority; + } + + public String getDisabtxtCode() { + return this.disabtxtCode; + } + + public void setDisabtxtCode(String newDisabtxtCode) { + this.disabtxtCode = newDisabtxtCode; + } + + public String getDisabtxtNoOfYears() { + return this.disabtxtNoOfYears; + } + + public void setDisabtxtNoOfYears(String newDisabtxtNoOfYears) { + this.disabtxtNoOfYears = newDisabtxtNoOfYears; + } + + public String getDisabtxtQualification() { + return this.disabtxtQualification; + } + + public void setDisabtxtQualification(String newDisabtxtQualification) { + this.disabtxtQualification = newDisabtxtQualification; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRatingMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRatingMstForm.java new file mode 100644 index 0000000..e940115 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRatingMstForm.java @@ -0,0 +1,237 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgRatingMstForm extends HrmBaseForm { + private String selectAll; + + private String maximumRating; + + private String qualifyingRating; + + private String minimumRating; + + private String ratingHeaderCode; + + private String[] txtDescription; + + private String[] txtRatingGrade; + + private String[] txtRatingTo; + + private String[] txtRatingFrom; + + private ArrayList arrHrmRatingDtl = new ArrayList(); + + private String ratingCodeId; + + private String disabmaximumRating; + + private String disabminimumRating; + + private String disabqualifyingRating; + + private String disabratingHeaderCode; + + private String disabselectAll; + + private String disabtxtDescription; + + private String disabtxtRatingFrom; + + private String disabtxtRatingGrade; + + private String disabtxtRatingTo; + + private String butRatingHeaderCode; + + private String disabbutRatingHeaderCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String[] newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String[] getTxtRatingGrade() { + return this.txtRatingGrade; + } + + public void setTxtRatingGrade(String[] newTxtRatingGrade) { + this.txtRatingGrade = newTxtRatingGrade; + } + + public String[] getTxtRatingTo() { + return this.txtRatingTo; + } + + public void setTxtRatingTo(String[] newTxtRatingTo) { + this.txtRatingTo = newTxtRatingTo; + } + + public String[] getTxtRatingFrom() { + return this.txtRatingFrom; + } + + public void setTxtRatingFrom(String[] newTxtRatingFrom) { + this.txtRatingFrom = newTxtRatingFrom; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getMaximumRating() { + return this.maximumRating; + } + + public void setMaximumRating(String newMaximumRating) { + this.maximumRating = newMaximumRating; + } + + public String getQualifyingRating() { + return this.qualifyingRating; + } + + public void setQualifyingRating(String newQualifyingRating) { + this.qualifyingRating = newQualifyingRating; + } + + public String getMinimumRating() { + return this.minimumRating; + } + + public void setMinimumRating(String newMinimumRating) { + this.minimumRating = newMinimumRating; + } + + public String getRatingHeaderCode() { + return this.ratingHeaderCode; + } + + public void setRatingHeaderCode(String newRatingHeaderCode) { + this.ratingHeaderCode = newRatingHeaderCode; + } + + public ArrayList getArrHrmRatingDtl() { + return this.arrHrmRatingDtl; + } + + public void setArrHrmRatingDtl(ArrayList newArrHrmRatingDtl) { + this.arrHrmRatingDtl = newArrHrmRatingDtl; + } + + public String getRatingCodeId() { + return this.ratingCodeId; + } + + public void setRatingCodeId(String newRatingCodeId) { + this.ratingCodeId = newRatingCodeId; + } + + public String getDisabmaximumRating() { + return this.disabmaximumRating; + } + + public void setDisabmaximumRating(String newDisabmaximumRating) { + this.disabmaximumRating = newDisabmaximumRating; + } + + public String getDisabminimumRating() { + return this.disabminimumRating; + } + + public void setDisabminimumRating(String newDisabminimumRating) { + this.disabminimumRating = newDisabminimumRating; + } + + public String getDisabqualifyingRating() { + return this.disabqualifyingRating; + } + + public void setDisabqualifyingRating(String newDisabqualifyingRating) { + this.disabqualifyingRating = newDisabqualifyingRating; + } + + public String getDisabratingHeaderCode() { + return this.disabratingHeaderCode; + } + + public void setDisabratingHeaderCode(String newDisabratingHeaderCode) { + this.disabratingHeaderCode = newDisabratingHeaderCode; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtDescription() { + return this.disabtxtDescription; + } + + public String getDisabtxtRatingFrom() { + return this.disabtxtRatingFrom; + } + + public String getDisabtxtRatingGrade() { + return this.disabtxtRatingGrade; + } + + public String getDisabtxtRatingTo() { + return this.disabtxtRatingTo; + } + + public void setDisabtxtDescription(String newDisabtxtDescription) { + this.disabtxtDescription = newDisabtxtDescription; + } + + public void setDisabtxtRatingFrom(String newDisabtxtRatingFrom) { + this.disabtxtRatingFrom = newDisabtxtRatingFrom; + } + + public void setDisabtxtRatingGrade(String newDisabtxtRatingGrade) { + this.disabtxtRatingGrade = newDisabtxtRatingGrade; + } + + public void setDisabtxtRatingTo(String newDisabtxtRatingTo) { + this.disabtxtRatingTo = newDisabtxtRatingTo; + } + + public String getButRatingHeaderCode() { + return this.butRatingHeaderCode; + } + + public void setButRatingHeaderCode(String newButRatingHeaderCode) { + this.butRatingHeaderCode = newButRatingHeaderCode; + } + + public String getDisabbutRatingHeaderCode() { + return this.disabbutRatingHeaderCode; + } + + public void setDisabbutRatingHeaderCode(String newDisabbutRatingHeaderCode) { + this.disabbutRatingHeaderCode = newDisabbutRatingHeaderCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRelationMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRelationMstForm.java new file mode 100644 index 0000000..a6c5b38 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgRelationMstForm.java @@ -0,0 +1,107 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgRelationMstForm extends HrmBaseForm { + private String[] txtRelationCode; + + private String[] txtRelationName; + + private String[] txtOccurence; + + private String selectAll; + + private ArrayList arrHrmRelationDtl = new ArrayList(); + + private String disabselectAll; + + private String disabtxtOccurence; + + private String disabtxtRelationCode; + + private String disabtxtRelationName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtRelationCode() { + return this.txtRelationCode; + } + + public void setTxtRelationCode(String[] newTxtRelationCode) { + this.txtRelationCode = newTxtRelationCode; + } + + public String[] getTxtRelationName() { + return this.txtRelationName; + } + + public void setTxtRelationName(String[] newTxtRelationName) { + this.txtRelationName = newTxtRelationName; + } + + public String[] getTxtOccurence() { + return this.txtOccurence; + } + + public void setTxtOccurence(String[] newTxtOccurence) { + this.txtOccurence = newTxtOccurence; + } + + public String getSelectAll() { + return this.selectAll; + } + + public ArrayList getArrHrmRelationDtl() { + return this.arrHrmRelationDtl; + } + + public void setArrHrmRelationDtl(ArrayList newArrHrmRelationDtl) { + this.arrHrmRelationDtl = newArrHrmRelationDtl; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtOccurence() { + return this.disabtxtOccurence; + } + + public void setDisabtxtOccurence(String newDisabtxtOccurence) { + this.disabtxtOccurence = newDisabtxtOccurence; + } + + public String getDisabtxtRelationCode() { + return this.disabtxtRelationCode; + } + + public void setDisabtxtRelationCode(String newDisabtxtRelationCode) { + this.disabtxtRelationCode = newDisabtxtRelationCode; + } + + public String getDisabtxtRelationName() { + return this.disabtxtRelationName; + } + + public void setDisabtxtRelationName(String newDisabtxtRelationName) { + this.disabtxtRelationName = newDisabtxtRelationName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgReligionMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgReligionMstForm.java new file mode 100644 index 0000000..b7ef739 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgReligionMstForm.java @@ -0,0 +1,67 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgReligionMstForm extends HrmBaseForm { + private String selectAll; + + private ArrayList arrHrmReligionDtl = new ArrayList(); + + private String disabselectAll; + + private String[] txtReligionName; + + private String disabtxtReligionName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public ArrayList getArrHrmReligionDtl() { + return this.arrHrmReligionDtl; + } + + public void setArrHrmReligionDtl(ArrayList newArrHrmReligionDtl) { + this.arrHrmReligionDtl = newArrHrmReligionDtl; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String[] getTxtReligionName() { + return this.txtReligionName; + } + + public void setTxtReligionName(String[] newTxtReligionName) { + this.txtReligionName = newTxtReligionName; + } + + public String getDisabtxtReligionName() { + return this.disabtxtReligionName; + } + + public void setDisabtxtReligionName(String newDisabtxtReligionName) { + this.disabtxtReligionName = newDisabtxtReligionName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgScaleMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgScaleMstForm.java new file mode 100644 index 0000000..6e50f2e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgScaleMstForm.java @@ -0,0 +1,267 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgScaleMstForm extends HrmBaseForm { + private String selectAll; + + private String[] txtStartBasic; + + private String[] txtEndBasic; + + private String[] txtIncrement; + + private String scaleCode; + + private String desc; + + private ArrayList arrHrmScaleDtl = new ArrayList(); + + private String scaleId; + + private String hierarchyLevel; + + private String disabdesc; + + private String disabhierarchyLevel; + + private String disabscaleCode; + + private String disabselectAll; + + private String disabtxtEndBasic; + + private String disabtxtIncrement; + + private String disabtxtStartBasic; + + private String butScaleCode; + + private String disabbutScaleCode; + + private String revision; + + private String disabrevision; + + private String disabgrade; + + private String grade; + + private String butGrade; + + private String disabbutGrade; + + private String gradeId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtStartBasic() { + return this.txtStartBasic; + } + + public void setTxtStartBasic(String[] newTxtStartBasic) { + this.txtStartBasic = newTxtStartBasic; + } + + public String[] getTxtEndBasic() { + return this.txtEndBasic; + } + + public void setTxtEndBasic(String[] newTxtEndBasic) { + this.txtEndBasic = newTxtEndBasic; + } + + public String[] getTxtIncrement() { + return this.txtIncrement; + } + + public void setTxtIncrement(String[] newTxtIncrement) { + this.txtIncrement = newTxtIncrement; + } + + public String getScaleCode() { + return this.scaleCode; + } + + public void setScaleCode(String newScaleCode) { + this.scaleCode = newScaleCode; + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public ArrayList getArrHrmScaleDtl() { + return this.arrHrmScaleDtl; + } + + public void setArrHrmScaleDtl(ArrayList newArrHrmScaleDtl) { + this.arrHrmScaleDtl = newArrHrmScaleDtl; + } + + public String getScaleId() { + return this.scaleId; + } + + public void setScaleId(String newScaleId) { + this.scaleId = newScaleId; + } + + public String getHierarchyLevel() { + return this.hierarchyLevel; + } + + public void setHierarchyLevel(String newHierarchyLevel) { + this.hierarchyLevel = newHierarchyLevel; + } + + public String getDisabdesc() { + return this.disabdesc; + } + + public void setDisabdesc(String newDisabdesc) { + this.disabdesc = newDisabdesc; + } + + public String getDisabhierarchyLevel() { + return this.disabhierarchyLevel; + } + + public void setDisabhierarchyLevel(String newDisabhierarchyLevel) { + this.disabhierarchyLevel = newDisabhierarchyLevel; + } + + public String getDisabscaleCode() { + return this.disabscaleCode; + } + + public void setDisabscaleCode(String newDisabscaleCode) { + this.disabscaleCode = newDisabscaleCode; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtEndBasic() { + return this.disabtxtEndBasic; + } + + public String getDisabtxtIncrement() { + return this.disabtxtIncrement; + } + + public String getDisabtxtStartBasic() { + return this.disabtxtStartBasic; + } + + public String getButScaleCode() { + return this.butScaleCode; + } + + public void setButScaleCode(String newButScaleCode) { + this.butScaleCode = newButScaleCode; + } + + public String getDisabbutScaleCode() { + return this.disabbutScaleCode; + } + + public void setDisabbutScaleCode(String newDisabbutScaleCode) { + this.disabbutScaleCode = newDisabbutScaleCode; + } + + public void setDisabtxtEndBasic(String newDisabtxtEndBasic) { + this.disabtxtEndBasic = newDisabtxtEndBasic; + } + + public void setDisabtxtIncrement(String newDisabtxtIncrement) { + this.disabtxtIncrement = newDisabtxtIncrement; + } + + public void setDisabtxtStartBasic(String newDisabtxtStartBasic) { + this.disabtxtStartBasic = newDisabtxtStartBasic; + } + + public String getRevision() { + return this.revision; + } + + public void setRevision(String newRevision) { + this.revision = newRevision; + } + + public String getDisabrevision() { + return this.disabrevision; + } + + public void setDisabrevision(String newDisabrevision) { + this.disabrevision = newDisabrevision; + } + + public String getDisabgrade() { + return this.disabgrade; + } + + public void setDisabgrade(String newDisabgrade) { + this.disabgrade = newDisabgrade; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getButGrade() { + return this.butGrade; + } + + public void setButGrade(String newButGrade) { + this.butGrade = newButGrade; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgSkillMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgSkillMstForm.java new file mode 100644 index 0000000..aaa51e8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgSkillMstForm.java @@ -0,0 +1,197 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgSkillMstForm extends HrmBaseForm { + private String skillTypeCode; + + private String skillTypeName; + + private String[] txtSkillCode; + + private String[] txtSkillName; + + private ArrayList arrHrmSkillDtl = new ArrayList(); + + private String selectAll; + + private String skillCodeID; + + private String[] txtOtRate; + + private String[] txtHourlyRate; + + private String disabselectAll; + + private String disabskillTypeCode; + + private String disabskillTypeName; + + private String disabtxtHourlyRate; + + private String disabtxtOtRate; + + private String disabtxtSkillCode; + + private String disabtxtSkillName; + + private String butSkillTypeCode; + + private String disabbutSkillTypeCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSkillTypeCode() { + return this.skillTypeCode; + } + + public void setSkillTypeCode(String newSkillTypeCode) { + this.skillTypeCode = newSkillTypeCode; + } + + public String getSkillTypeName() { + return this.skillTypeName; + } + + public void setSkillTypeName(String newSkillTypeName) { + this.skillTypeName = newSkillTypeName; + } + + public String[] getTxtSkillCode() { + return this.txtSkillCode; + } + + public void setTxtSkillCode(String[] newTxtSkillCode) { + this.txtSkillCode = newTxtSkillCode; + } + + public String[] getTxtSkillName() { + return this.txtSkillName; + } + + public void setTxtSkillName(String[] newTxtSkillName) { + this.txtSkillName = newTxtSkillName; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArrHrmSkillDtl() { + return this.arrHrmSkillDtl; + } + + public void setArrHrmSkillDtl(ArrayList newArrHrmSkillDtl) { + this.arrHrmSkillDtl = newArrHrmSkillDtl; + } + + public String getSkillCodeID() { + return this.skillCodeID; + } + + public void setSkillCodeID(String newSkillCodeID) { + this.skillCodeID = newSkillCodeID; + } + + public String[] getTxtOtRate() { + return this.txtOtRate; + } + + public void setTxtOtRate(String[] newTxtOtRate) { + this.txtOtRate = newTxtOtRate; + } + + public String[] getTxtHourlyRate() { + return this.txtHourlyRate; + } + + public void setTxtHourlyRate(String[] newTxtHourlyRate) { + this.txtHourlyRate = newTxtHourlyRate; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabskillTypeCode() { + return this.disabskillTypeCode; + } + + public void setDisabskillTypeCode(String newDisabskillTypeCode) { + this.disabskillTypeCode = newDisabskillTypeCode; + } + + public String getDisabskillTypeName() { + return this.disabskillTypeName; + } + + public void setDisabskillTypeName(String newDisabskillTypeName) { + this.disabskillTypeName = newDisabskillTypeName; + } + + public String getDisabtxtHourlyRate() { + return this.disabtxtHourlyRate; + } + + public String getDisabtxtOtRate() { + return this.disabtxtOtRate; + } + + public String getDisabtxtSkillCode() { + return this.disabtxtSkillCode; + } + + public String getDisabtxtSkillName() { + return this.disabtxtSkillName; + } + + public void setDisabtxtHourlyRate(String newDisabtxtHourlyRate) { + this.disabtxtHourlyRate = newDisabtxtHourlyRate; + } + + public void setDisabtxtOtRate(String newDisabtxtOtRate) { + this.disabtxtOtRate = newDisabtxtOtRate; + } + + public void setDisabtxtSkillCode(String newDisabtxtSkillCode) { + this.disabtxtSkillCode = newDisabtxtSkillCode; + } + + public void setDisabtxtSkillName(String newDisabtxtSkillName) { + this.disabtxtSkillName = newDisabtxtSkillName; + } + + public String getButSkillTypeCode() { + return this.butSkillTypeCode; + } + + public void setButSkillTypeCode(String newButSkillTypeCode) { + this.butSkillTypeCode = newButSkillTypeCode; + } + + public String getDisabbutSkillTypeCode() { + return this.disabbutSkillTypeCode; + } + + public void setDisabbutSkillTypeCode(String newDisabbutSkillTypeCode) { + this.disabbutSkillTypeCode = newDisabbutSkillTypeCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java new file mode 100644 index 0000000..2722ea1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgTehMstForm.java @@ -0,0 +1,87 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgTehMstForm extends HrmBaseForm { + private String[] txtTehsilCode; + + private String[] txtTehsilName; + + private String selectAll; + + private ArrayList arrHrmTehsilDtl = new ArrayList(); + + private String disabselectAll; + + private String disabtxtTehsilCode; + + private String disabtxtTehsilName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtTehsilCode() { + return this.txtTehsilCode; + } + + public void setTxtTehsilCode(String[] newTxtTehsilCode) { + this.txtTehsilCode = newTxtTehsilCode; + } + + public String[] getTxtTehsilName() { + return this.txtTehsilName; + } + + public void setTxtTehsilName(String[] newTxtTehsilName) { + this.txtTehsilName = newTxtTehsilName; + } + + public String getSelectAll() { + return this.selectAll; + } + + public ArrayList getArrHrmTehsilDtl() { + return this.arrHrmTehsilDtl; + } + + public void setArrHrmTehsilDtl(ArrayList newArrHrmTehsilDtl) { + this.arrHrmTehsilDtl = newArrHrmTehsilDtl; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtTehsilCode() { + return this.disabtxtTehsilCode; + } + + public void setDisabtxtTehsilCode(String newDisabtxtTehsilCode) { + this.disabtxtTehsilCode = newDisabtxtTehsilCode; + } + + public String getDisabtxtTehsilName() { + return this.disabtxtTehsilName; + } + + public void setDisabtxtTehsilName(String newDisabtxtTehsilName) { + this.disabtxtTehsilName = newDisabtxtTehsilName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgWorkGroupMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgWorkGroupMstForm.java new file mode 100644 index 0000000..9cc404e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmOrgWorkGroupMstForm.java @@ -0,0 +1,796 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmOrgWorkGroupMstForm extends HrmBaseForm { + private String contactEmployeeNo; + + private String phone; + + private String EMail; + + private String fax; + + private String contactAddress; + + private String lov; + + private String action; + + private String code; + + private String owingSite; + + private String name; + + private String profitCentre; + + private String deptFlag; + + private String temporaryFlag; + + private String costCentre; + + private String budgetCode; + + private String refDocNo; + + private String creationDate; + + private String documentDate; + + private String endDate; + + private String specialRemarks; + + private String hierarchyLevel; + + private String parentGroupCode; + + private String hdrGoto; + + private String disabEMail; + + private String disabaction; + + private String disabbudgetCode; + + private String disabcode; + + private String disabcontactAddress; + + private String disabcontactEmployeeNo; + + private String disabcostCentre; + + private String disabcreationDate; + + private String disabdeptFlag; + + private String disabdocumentDate; + + private String disabendDate; + + private String disabfax; + + private String disabhdrGoto; + + private String disabhierarchyLevel; + + private String disablov; + + private String disabname; + + private String disabowingSite; + + private String disabparentGroupCode; + + private String disabphone; + + private String disabprofitCentre; + + private String disabrefDocNo; + + private String disabspecialRemarks; + + private String disabtemporaryFlag; + + private String contactEmployeeId; + + private String parentGroupId; + + private String profitCentreId; + + private String workGroupCodeId; + + private String siteId; + + private String owingSiteCode; + + private String costId; + + private String costCode; + + private String budgetId; + + private String budgetCodeName; + + private String butWorkGroupCode; + + private String disabbutWorkGroupCode; + + private String butSiteCode; + + private String disabbutSiteCode; + + private String butCostCode; + + private String disabbutCostCode; + + private String butBudgetCode; + + private String disabbutBudgetCode; + + private String butCreationDate; + + private String disabbutCreationDate; + + private String butDocumentDate; + + private String disabbutDocumentDate; + + private String butEndDate; + + private String disabbutEndDate; + + private String parentGroupCodeId; + + private String parentGroupName; + + private String butParentGroupCode; + + private String disabbutParentGroupCode; + + private String butContactEmployeeNo; + + private String disabbutContactEmployeeNo; + + private String contactEmployee; + + private String parentHierarchyLevel; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getContactEmployeeNo() { + return this.contactEmployeeNo; + } + + public void setContactEmployeeNo(String newContactEmployeeNo) { + this.contactEmployeeNo = newContactEmployeeNo; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getEMail() { + return this.EMail; + } + + public void setEMail(String newEMail) { + this.EMail = newEMail; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getContactAddress() { + return this.contactAddress; + } + + public void setContactAddress(String newContactAddress) { + this.contactAddress = newContactAddress; + } + + public String getLov() { + return this.lov; + } + + public void setLov(String newLov) { + this.lov = newLov; + } + + public String getAction() { + return this.action; + } + + public void setAction(String newAction) { + this.action = newAction; + } + + public String getCode() { + return this.code; + } + + public void setCode(String newCode) { + this.code = newCode; + } + + public String getOwingSite() { + return this.owingSite; + } + + public void setOwingSite(String newOwingSite) { + this.owingSite = newOwingSite; + } + + public String getName() { + return this.name; + } + + public void setName(String newName) { + this.name = newName; + } + + public String getProfitCentre() { + return this.profitCentre; + } + + public void setProfitCentre(String newProfitCentre) { + this.profitCentre = newProfitCentre; + } + + public String getDeptFlag() { + return this.deptFlag; + } + + public void setDeptFlag(String newDeptFlag) { + this.deptFlag = newDeptFlag; + } + + public String getTemporaryFlag() { + return this.temporaryFlag; + } + + public void setTemporaryFlag(String newTemporaryFlag) { + this.temporaryFlag = newTemporaryFlag; + } + + public String getCostCentre() { + return this.costCentre; + } + + public void setCostCentre(String newCostCentre) { + this.costCentre = newCostCentre; + } + + public String getBudgetCode() { + return this.budgetCode; + } + + public void setBudgetCode(String newBudgetCode) { + this.budgetCode = newBudgetCode; + } + + public String getRefDocNo() { + return this.refDocNo; + } + + public void setRefDocNo(String newRefDocNo) { + this.refDocNo = newRefDocNo; + } + + public String getCreationDate() { + return this.creationDate; + } + + public void setCreationDate(String newCreationDate) { + this.creationDate = newCreationDate; + } + + public String getDocumentDate() { + return this.documentDate; + } + + public void setDocumentDate(String newDocumentDate) { + this.documentDate = newDocumentDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getSpecialRemarks() { + return this.specialRemarks; + } + + public void setSpecialRemarks(String newSpecialRemarks) { + this.specialRemarks = newSpecialRemarks; + } + + public String getHierarchyLevel() { + return this.hierarchyLevel; + } + + public void setHierarchyLevel(String newHierarchyLevel) { + this.hierarchyLevel = newHierarchyLevel; + } + + public String getParentGroupCode() { + return this.parentGroupCode; + } + + public void setParentGroupCode(String newParentGroupCode) { + this.parentGroupCode = newParentGroupCode; + } + + public String getHdrGoto() { + return this.hdrGoto; + } + + public void setHdrGoto(String newHdrGoto) { + this.hdrGoto = newHdrGoto; + } + + public String getDisabEMail() { + return this.disabEMail; + } + + public void setDisabEMail(String newDisabEMail) { + this.disabEMail = newDisabEMail; + } + + public String getDisabaction() { + return this.disabaction; + } + + public void setDisabaction(String newDisabaction) { + this.disabaction = newDisabaction; + } + + public String getDisabbudgetCode() { + return this.disabbudgetCode; + } + + public void setDisabbudgetCode(String newDisabbudgetCode) { + this.disabbudgetCode = newDisabbudgetCode; + } + + public String getDisabcode() { + return this.disabcode; + } + + public void setDisabcode(String newDisabcode) { + this.disabcode = newDisabcode; + } + + public String getDisabcontactAddress() { + return this.disabcontactAddress; + } + + public void setDisabcontactAddress(String newDisabcontactAddress) { + this.disabcontactAddress = newDisabcontactAddress; + } + + public String getDisabcontactEmployeeNo() { + return this.disabcontactEmployeeNo; + } + + public void setDisabcontactEmployeeNo(String newDisabcontactEmployeeNo) { + this.disabcontactEmployeeNo = newDisabcontactEmployeeNo; + } + + public String getDisabcostCentre() { + return this.disabcostCentre; + } + + public void setDisabcostCentre(String newDisabcostCentre) { + this.disabcostCentre = newDisabcostCentre; + } + + public String getDisabcreationDate() { + return this.disabcreationDate; + } + + public void setDisabcreationDate(String newDisabcreationDate) { + this.disabcreationDate = newDisabcreationDate; + } + + public String getDisabdeptFlag() { + return this.disabdeptFlag; + } + + public void setDisabdeptFlag(String newDisabdeptFlag) { + this.disabdeptFlag = newDisabdeptFlag; + } + + public String getDisabdocumentDate() { + return this.disabdocumentDate; + } + + public void setDisabdocumentDate(String newDisabdocumentDate) { + this.disabdocumentDate = newDisabdocumentDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String getDisabfax() { + return this.disabfax; + } + + public void setDisabfax(String newDisabfax) { + this.disabfax = newDisabfax; + } + + public String getDisabhdrGoto() { + return this.disabhdrGoto; + } + + public void setDisabhdrGoto(String newDisabhdrGoto) { + this.disabhdrGoto = newDisabhdrGoto; + } + + public String getDisabhierarchyLevel() { + return this.disabhierarchyLevel; + } + + public void setDisabhierarchyLevel(String newDisabhierarchyLevel) { + this.disabhierarchyLevel = newDisabhierarchyLevel; + } + + public String getDisablov() { + return this.disablov; + } + + public void setDisablov(String newDisablov) { + this.disablov = newDisablov; + } + + public String getDisabname() { + return this.disabname; + } + + public void setDisabname(String newDisabname) { + this.disabname = newDisabname; + } + + public String getDisabowingSite() { + return this.disabowingSite; + } + + public void setDisabowingSite(String newDisabowingSite) { + this.disabowingSite = newDisabowingSite; + } + + public String getDisabparentGroupCode() { + return this.disabparentGroupCode; + } + + public void setDisabparentGroupCode(String newDisabparentGroupCode) { + this.disabparentGroupCode = newDisabparentGroupCode; + } + + public String getDisabphone() { + return this.disabphone; + } + + public void setDisabphone(String newDisabphone) { + this.disabphone = newDisabphone; + } + + public String getDisabprofitCentre() { + return this.disabprofitCentre; + } + + public void setDisabprofitCentre(String newDisabprofitCentre) { + this.disabprofitCentre = newDisabprofitCentre; + } + + public String getDisabrefDocNo() { + return this.disabrefDocNo; + } + + public void setDisabrefDocNo(String newDisabrefDocNo) { + this.disabrefDocNo = newDisabrefDocNo; + } + + public String getDisabspecialRemarks() { + return this.disabspecialRemarks; + } + + public void setDisabspecialRemarks(String newDisabspecialRemarks) { + this.disabspecialRemarks = newDisabspecialRemarks; + } + + public String getDisabtemporaryFlag() { + return this.disabtemporaryFlag; + } + + public void setDisabtemporaryFlag(String newDisabtemporaryFlag) { + this.disabtemporaryFlag = newDisabtemporaryFlag; + } + + public String getContactEmployeeId() { + return this.contactEmployeeId; + } + + public void setContactEmployeeId(String newContactEmployeeId) { + this.contactEmployeeId = newContactEmployeeId; + } + + public String getParentGroupId() { + return this.parentGroupId; + } + + public void setParentGroupId(String newParentGroupId) { + this.parentGroupId = newParentGroupId; + } + + public String getProfitCentreId() { + return this.profitCentreId; + } + + public void setProfitCentreId(String newProfitCentreId) { + this.profitCentreId = newProfitCentreId; + } + + public String getWorkGroupCodeId() { + return this.workGroupCodeId; + } + + public void setWorkGroupCodeId(String newWorkGroupCodeId) { + this.workGroupCodeId = newWorkGroupCodeId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getOwingSiteCode() { + return this.owingSiteCode; + } + + public void setOwingSiteCode(String newOwingSiteCode) { + this.owingSiteCode = newOwingSiteCode; + } + + public String getCostId() { + return this.costId; + } + + public void setCostId(String newCostId) { + this.costId = newCostId; + } + + public String getCostCode() { + return this.costCode; + } + + public void setCostCode(String newCostCode) { + this.costCode = newCostCode; + } + + public String getBudgetId() { + return this.budgetId; + } + + public void setBudgetId(String newBudgetId) { + this.budgetId = newBudgetId; + } + + public String getBudgetCodeName() { + return this.budgetCodeName; + } + + public void setBudgetCodeName(String newBudgetCodeName) { + this.budgetCodeName = newBudgetCodeName; + } + + public String getButWorkGroupCode() { + return this.butWorkGroupCode; + } + + public void setButWorkGroupCode(String newButWorkGroupCode) { + this.butWorkGroupCode = newButWorkGroupCode; + } + + public String getDisabbutWorkGroupCode() { + return this.disabbutWorkGroupCode; + } + + public void setDisabbutWorkGroupCode(String newDisabbutWorkGroupCode) { + this.disabbutWorkGroupCode = newDisabbutWorkGroupCode; + } + + public String getButSiteCode() { + return this.butSiteCode; + } + + public void setButSiteCode(String newButSiteCode) { + this.butSiteCode = newButSiteCode; + } + + public String getDisabbutSiteCode() { + return this.disabbutSiteCode; + } + + public void setDisabbutSiteCode(String newDisabbutSiteCode) { + this.disabbutSiteCode = newDisabbutSiteCode; + } + + public String getButCostCode() { + return this.butCostCode; + } + + public void setButCostCode(String newButCostCode) { + this.butCostCode = newButCostCode; + } + + public String getDisabbutCostCode() { + return this.disabbutCostCode; + } + + public void setDisabbutCostCode(String newDisabbutCostCode) { + this.disabbutCostCode = newDisabbutCostCode; + } + + public String getButBudgetCode() { + return this.butBudgetCode; + } + + public void setButBudgetCode(String newButBudgetCode) { + this.butBudgetCode = newButBudgetCode; + } + + public String getDisabbutBudgetCode() { + return this.disabbutBudgetCode; + } + + public void setDisabbutBudgetCode(String newDisabbutBudgetCode) { + this.disabbutBudgetCode = newDisabbutBudgetCode; + } + + public String getButCreationDate() { + return this.butCreationDate; + } + + public void setButCreationDate(String newButCreationDate) { + this.butCreationDate = newButCreationDate; + } + + public String getDisabbutCreationDate() { + return this.disabbutCreationDate; + } + + public void setDisabbutCreationDate(String newDisabbutCreationDate) { + this.disabbutCreationDate = newDisabbutCreationDate; + } + + public String getButDocumentDate() { + return this.butDocumentDate; + } + + public void setButDocumentDate(String newButDocumentDate) { + this.butDocumentDate = newButDocumentDate; + } + + public String getDisabbutDocumentDate() { + return this.disabbutDocumentDate; + } + + public void setDisabbutDocumentDate(String newDisabbutDocumentDate) { + this.disabbutDocumentDate = newDisabbutDocumentDate; + } + + public String getButEndDate() { + return this.butEndDate; + } + + public void setButEndDate(String newButEndDate) { + this.butEndDate = newButEndDate; + } + + public String getDisabbutEndDate() { + return this.disabbutEndDate; + } + + public void setDisabbutEndDate(String newDisabbutEndDate) { + this.disabbutEndDate = newDisabbutEndDate; + } + + public String getParentGroupCodeId() { + return this.parentGroupCodeId; + } + + public void setParentGroupCodeId(String newParentGroupCodeId) { + this.parentGroupCodeId = newParentGroupCodeId; + } + + public String getParentGroupName() { + return this.parentGroupName; + } + + public void setParentGroupName(String newParentGroupName) { + this.parentGroupName = newParentGroupName; + } + + public String getButParentGroupCode() { + return this.butParentGroupCode; + } + + public void setButParentGroupCode(String newButParentGroupCode) { + this.butParentGroupCode = newButParentGroupCode; + } + + public String getDisabbutParentGroupCode() { + return this.disabbutParentGroupCode; + } + + public void setDisabbutParentGroupCode(String newDisabbutParentGroupCode) { + this.disabbutParentGroupCode = newDisabbutParentGroupCode; + } + + public String getButContactEmployeeNo() { + return this.butContactEmployeeNo; + } + + public void setButContactEmployeeNo(String newButContactEmployeeNo) { + this.butContactEmployeeNo = newButContactEmployeeNo; + } + + public String getDisabbutContactEmployeeNo() { + return this.disabbutContactEmployeeNo; + } + + public void setDisabbutContactEmployeeNo(String newDisabbutContactEmployeeNo) { + this.disabbutContactEmployeeNo = newDisabbutContactEmployeeNo; + } + + public String getContactEmployee() { + return this.contactEmployee; + } + + public void setContactEmployee(String newContactEmployee) { + this.contactEmployee = newContactEmployee; + } + + public String getParentHierarchyLevel() { + return this.parentHierarchyLevel; + } + + public void setParentHierarchyLevel(String newParentHierarchyLevel) { + this.parentHierarchyLevel = newParentHierarchyLevel; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmCriteriaForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmCriteriaForm.java new file mode 100644 index 0000000..898bc59 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmCriteriaForm.java @@ -0,0 +1,317 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmCriteriaForm extends HrmBaseForm { + private String[] txtDescription; + + private String[] txtCriteriaStartDate; + + private String[] txtCriteriaEndDate; + + private String[] txtMinServicePeriod; + + private String[] txtReqYears; + + private String[] txtYearAPAR; + + private String selectAll; + + private String disabselectAll; + + private ArrayList arrPrmCriteria = new ArrayList(); + + private String toGradeCode; + + private String butToGrade; + + private String disabbutToGrade; + + private String toGradeDesc; + + private String toDesigCode; + + private String butToDesig; + + private String disabbutToDesig; + + private String toDesigDesc; + + private String fromGradeCode; + + private String butFromGrade; + + private String disabbutFromGrade; + + private String fromGradeDesc; + + private String fromDesigCode; + + private String butFromDesig; + + private String disabbutFromDesig; + + private String fromDesigDesc; + + private String toGradeId; + + private String fromDesigId; + + private String toDesigId; + + private String gradeSeq; + + private String desigSeq; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtDescription() { + return this.txtDescription; + } + + public void setTxtDescription(String[] newTxtDescription) { + this.txtDescription = newTxtDescription; + } + + public String[] getTxtCriteriaStartDate() { + return this.txtCriteriaStartDate; + } + + public void setTxtCriteriaStartDate(String[] newTxtCriteriaStartDate) { + this.txtCriteriaStartDate = newTxtCriteriaStartDate; + } + + public String[] getTxtCriteriaEndDate() { + return this.txtCriteriaEndDate; + } + + public void setTxtCriteriaEndDate(String[] newTxtCriteriaEndDate) { + this.txtCriteriaEndDate = newTxtCriteriaEndDate; + } + + public String[] getTxtMinServicePeriod() { + return this.txtMinServicePeriod; + } + + public void setTxtMinServicePeriod(String[] newTxtMinServicePeriod) { + this.txtMinServicePeriod = newTxtMinServicePeriod; + } + + public String[] getTxtReqYears() { + return this.txtReqYears; + } + + public void setTxtReqYears(String[] newTxtReqYears) { + this.txtReqYears = newTxtReqYears; + } + + public String[] getTxtYearAPAR() { + return this.txtYearAPAR; + } + + public void setTxtYearAPAR(String[] newTxtYearAPAR) { + this.txtYearAPAR = newTxtYearAPAR; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public ArrayList getArrPrmCriteria() { + return this.arrPrmCriteria; + } + + public void setArrPrmCriteria(ArrayList newArrPrmCriteria) { + this.arrPrmCriteria = newArrPrmCriteria; + } + + public String getToGradeCode() { + return this.toGradeCode; + } + + public void setToGradeCode(String newToGradeCode) { + this.toGradeCode = newToGradeCode; + } + + public String getButToGrade() { + return this.butToGrade; + } + + public void setButToGrade(String newButToGrade) { + this.butToGrade = newButToGrade; + } + + public String getDisabbutToGrade() { + return this.disabbutToGrade; + } + + public void setDisabbutToGrade(String newDisabbutToGrade) { + this.disabbutToGrade = newDisabbutToGrade; + } + + public String getToGradeDesc() { + return this.toGradeDesc; + } + + public void setToGradeDesc(String newToGradeDesc) { + this.toGradeDesc = newToGradeDesc; + } + + public String getToDesigCode() { + return this.toDesigCode; + } + + public void setToDesigCode(String newToDesigCode) { + this.toDesigCode = newToDesigCode; + } + + public String getButToDesig() { + return this.butToDesig; + } + + public void setButToDesig(String newButToDesig) { + this.butToDesig = newButToDesig; + } + + public String getDisabbutToDesig() { + return this.disabbutToDesig; + } + + public void setDisabbutToDesig(String newDisabbutToDesig) { + this.disabbutToDesig = newDisabbutToDesig; + } + + public String getToDesigDesc() { + return this.toDesigDesc; + } + + public void setToDesigDesc(String newToDesigDesc) { + this.toDesigDesc = newToDesigDesc; + } + + public String getFromGradeCode() { + return this.fromGradeCode; + } + + public void setFromGradeCode(String newFromGradeCode) { + this.fromGradeCode = newFromGradeCode; + } + + public String getButFromGrade() { + return this.butFromGrade; + } + + public void setButFromGrade(String newButFromGrade) { + this.butFromGrade = newButFromGrade; + } + + public String getDisabbutFromGrade() { + return this.disabbutFromGrade; + } + + public void setDisabbutFromGrade(String newDisabbutFromGrade) { + this.disabbutFromGrade = newDisabbutFromGrade; + } + + public String getFromGradeDesc() { + return this.fromGradeDesc; + } + + public void setFromGradeDesc(String newFromGradeDesc) { + this.fromGradeDesc = newFromGradeDesc; + } + + public String getFromDesigCode() { + return this.fromDesigCode; + } + + public void setFromDesigCode(String newFromDesigCode) { + this.fromDesigCode = newFromDesigCode; + } + + public String getButFromDesig() { + return this.butFromDesig; + } + + public void setButFromDesig(String newButFromDesig) { + this.butFromDesig = newButFromDesig; + } + + public String getDisabbutFromDesig() { + return this.disabbutFromDesig; + } + + public void setDisabbutFromDesig(String newDisabbutFromDesig) { + this.disabbutFromDesig = newDisabbutFromDesig; + } + + public String getFromDesigDesc() { + return this.fromDesigDesc; + } + + public void setFromDesigDesc(String newFromDesigDesc) { + this.fromDesigDesc = newFromDesigDesc; + } + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getFromDesigId() { + return this.fromDesigId; + } + + public void setFromDesigId(String newFromDesigId) { + this.fromDesigId = newFromDesigId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getGradeSeq() { + return this.gradeSeq; + } + + public void setGradeSeq(String newGradeSeq) { + this.gradeSeq = newGradeSeq; + } + + public String getDesigSeq() { + return this.desigSeq; + } + + public void setDesigSeq(String newDesigSeq) { + this.desigSeq = newDesigSeq; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmExperienceScoreForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmExperienceScoreForm.java new file mode 100644 index 0000000..7a4aa38 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmExperienceScoreForm.java @@ -0,0 +1,237 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmExperienceScoreForm extends HrmBaseForm { + String[] txtAccBasis; + + String[] txtMonthsExp; + + String[] txtPointsAwarded; + + String selectAll; + + String disabtxtMinExp; + + String disabtxtMaxExp; + + String disabtxtAccBasis; + + String disabtxtMonthsExp; + + String disabtxtPointsAwarded; + + String disabselectAll; + + ArrayList aryLstDtlBean = new ArrayList(); + + String[] startField; + + String[] endField; + + private String gradeCode; + + private String butGrade; + + private String disabbutGrade; + + private String gradeDesc; + + private String desigCode; + + private String butDesig; + + private String disabbutDesig; + + private String desigDesc; + + private String designationId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtAccBasis() { + return this.txtAccBasis; + } + + public void setTxtAccBasis(String[] newTxtAccBasis) { + this.txtAccBasis = newTxtAccBasis; + } + + public String[] getTxtMonthsExp() { + return this.txtMonthsExp; + } + + public void setTxtMonthsExp(String[] newTxtMonthsExp) { + this.txtMonthsExp = newTxtMonthsExp; + } + + public String[] getTxtPointsAwarded() { + return this.txtPointsAwarded; + } + + public void setTxtPointsAwarded(String[] newTxtPointsAwarded) { + this.txtPointsAwarded = newTxtPointsAwarded; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabtxtMinExp() { + return this.disabtxtMinExp; + } + + public void setDisabtxtMinExp(String newDisabtxtMinExp) { + this.disabtxtMinExp = newDisabtxtMinExp; + } + + public String getDisabtxtMaxExp() { + return this.disabtxtMaxExp; + } + + public void setDisabtxtMaxExp(String newDisabtxtMaxExp) { + this.disabtxtMaxExp = newDisabtxtMaxExp; + } + + public String getDisabtxtAccBasis() { + return this.disabtxtAccBasis; + } + + public void setDisabtxtAccBasis(String newDisabtxtAccBasis) { + this.disabtxtAccBasis = newDisabtxtAccBasis; + } + + public String getDisabtxtMonthsExp() { + return this.disabtxtMonthsExp; + } + + public void setDisabtxtMonthsExp(String newDisabtxtMonthsExp) { + this.disabtxtMonthsExp = newDisabtxtMonthsExp; + } + + public String getDisabtxtPointsAwarded() { + return this.disabtxtPointsAwarded; + } + + public void setDisabtxtPointsAwarded(String newDisabtxtPointsAwarded) { + this.disabtxtPointsAwarded = newDisabtxtPointsAwarded; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public ArrayList getAryLstDtlBean() { + return this.aryLstDtlBean; + } + + public void setAryLstDtlBean(ArrayList newAryLstDtlBean) { + this.aryLstDtlBean = newAryLstDtlBean; + } + + public String[] getStartField() { + return this.startField; + } + + public void setStartField(String[] newStartField) { + this.startField = newStartField; + } + + public String[] getEndField() { + return this.endField; + } + + public void setEndField(String[] newEndField) { + this.endField = newEndField; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getButGrade() { + return this.butGrade; + } + + public void setButGrade(String newButGrade) { + this.butGrade = newButGrade; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getButDesig() { + return this.butDesig; + } + + public void setButDesig(String newButDesig) { + this.butDesig = newButDesig; + } + + public String getDisabbutDesig() { + return this.disabbutDesig; + } + + public void setDisabbutDesig(String newDisabbutDesig) { + this.disabbutDesig = newDisabbutDesig; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmGenAssForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmGenAssForm.java new file mode 100644 index 0000000..e97c7aa --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmGenAssForm.java @@ -0,0 +1,176 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmGenAssForm extends HrmBaseForm { + private String siteCode; + + private String disabsiteCode; + + private String prmNo; + + private String disabprmNo; + + private String postFrom; + + private String disabpostFrom; + + private String postTo; + + private String disabpostTo; + + private String butSiteID; + + private String disabbutSiteID; + + private String butPrmID; + + private String disabprmID; + + private String siteId; + + private String prmId; + + private String posInfHdrId; + + private String disabbutPrmID; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getDisabsiteCode() { + return this.disabsiteCode; + } + + public void setDisabsiteCode(String newDisabsiteCode) { + this.disabsiteCode = newDisabsiteCode; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getDisabprmNo() { + return this.disabprmNo; + } + + public void setDisabprmNo(String newDisabprmNo) { + this.disabprmNo = newDisabprmNo; + } + + public String getPostFrom() { + return this.postFrom; + } + + public void setPostFrom(String newPostFrom) { + this.postFrom = newPostFrom; + } + + public String getDisabpostFrom() { + return this.disabpostFrom; + } + + public void setDisabpostFrom(String newDisabpostFrom) { + this.disabpostFrom = newDisabpostFrom; + } + + public String getPostTo() { + return this.postTo; + } + + public void setPostTo(String newPostTo) { + this.postTo = newPostTo; + } + + public String getDisabpostTo() { + return this.disabpostTo; + } + + public void setDisabpostTo(String newDisabpostTo) { + this.disabpostTo = newDisabpostTo; + } + + public String getButSiteID() { + return this.butSiteID; + } + + public void setButSiteID(String newButSiteID) { + this.butSiteID = newButSiteID; + } + + public String getDisabbutSiteID() { + return this.disabbutSiteID; + } + + public void setDisabbutSiteID(String newDisabbutSiteID) { + this.disabbutSiteID = newDisabbutSiteID; + } + + public String getButPrmID() { + return this.butPrmID; + } + + public void setButPrmID(String newButPrmID) { + this.butPrmID = newButPrmID; + } + + public String getDisabprmID() { + return this.disabprmID; + } + + public void setDisabprmID(String newDisabprmID) { + this.disabprmID = newDisabprmID; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getPrmId() { + return this.prmId; + } + + public void setPrmId(String newPrmId) { + this.prmId = newPrmId; + } + + public String getPosInfHdrId() { + return this.posInfHdrId; + } + + public void setPosInfHdrId(String newPosInfHdrId) { + this.posInfHdrId = newPosInfHdrId; + } + + public String getDisabbutPrmID() { + return this.disabbutPrmID; + } + + public void setDisabbutPrmID(String newDisabbutPrmID) { + this.disabbutPrmID = newDisabbutPrmID; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmKPARatingForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmKPARatingForm.java new file mode 100644 index 0000000..d50a2e0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmKPARatingForm.java @@ -0,0 +1,527 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmKPARatingForm extends HrmBaseForm { + String positionCode; + + String ratingNo; + + String hierarchy; + + String desc; + + String designation; + + String scale; + + String rating; + + String maxRating; + + String minRating; + + String[] txtKPAGroupCode; + + String[] txtKPAGroupDesc; + + String[] txtReqAvgRating; + + String selectAll; + + String disabpositionCode; + + String disabtemplate; + + String disabhierarchy; + + String disabdesc; + + String disabdesignation; + + String disabscale; + + String disabrating; + + String disabmaxRating; + + String disabminRating; + + String disabtxtKPAGroupCode; + + String disabtxtKPAGroupDesc; + + String disabtxtReqAvgRating; + + String disabselectAll; + + ArrayList arylstPoswiseRate = new ArrayList(); + + ArrayList arylstFinalRate = new ArrayList(); + + String positionId; + + String ratingId; + + String butPositionCode; + + String disabbutPositionCode; + + String butRatingNo; + + String disabbutRatingNo; + + String[] txtKPAGroupId; + + String[] startField; + + String[] endField; + + String[] txtPoints; + + private String gradeCode; + + private String butGrade; + + private String disabbutGrade; + + private String gradeDesc; + + private String desigCode; + + private String butDesig; + + private String disabbutDesig; + + private String desigDesc; + + private String gradeId; + + private String desigId; + + private String[] txtPromKPARatingHdrId; + + private String[] txtPromKPARatingHdrFId; + + private String[] butForPos; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getPositionCode() { + return this.positionCode; + } + + public void setPositionCode(String newPositionCode) { + this.positionCode = newPositionCode; + } + + public String getRatingNo() { + return this.ratingNo; + } + + public void setRatingNo(String newRatingNo) { + this.ratingNo = newRatingNo; + } + + public String getHierarchy() { + return this.hierarchy; + } + + public void setHierarchy(String newHierarchy) { + this.hierarchy = newHierarchy; + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScale() { + return this.scale; + } + + public void setScale(String newScale) { + this.scale = newScale; + } + + public String getRating() { + return this.rating; + } + + public void setRating(String newRating) { + this.rating = newRating; + } + + public String getMaxRating() { + return this.maxRating; + } + + public void setMaxRating(String newMaxRating) { + this.maxRating = newMaxRating; + } + + public String getMinRating() { + return this.minRating; + } + + public void setMinRating(String newMinRating) { + this.minRating = newMinRating; + } + + public String[] getTxtKPAGroupCode() { + return this.txtKPAGroupCode; + } + + public void setTxtKPAGroupCode(String[] newTxtKPAGroupCode) { + this.txtKPAGroupCode = newTxtKPAGroupCode; + } + + public String[] getTxtKPAGroupDesc() { + return this.txtKPAGroupDesc; + } + + public void setTxtKPAGroupDesc(String[] newTxtKPAGroupDesc) { + this.txtKPAGroupDesc = newTxtKPAGroupDesc; + } + + public String[] getTxtReqAvgRating() { + return this.txtReqAvgRating; + } + + public void setTxtReqAvgRating(String[] newTxtReqAvgRating) { + this.txtReqAvgRating = newTxtReqAvgRating; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabpositionCode() { + return this.disabpositionCode; + } + + public void setDisabpositionCode(String newDisabpositionCode) { + this.disabpositionCode = newDisabpositionCode; + } + + public String getDisabtemplate() { + return this.disabtemplate; + } + + public void setDisabtemplate(String newDisabtemplate) { + this.disabtemplate = newDisabtemplate; + } + + public String getDisabhierarchy() { + return this.disabhierarchy; + } + + public void setDisabhierarchy(String newDisabhierarchy) { + this.disabhierarchy = newDisabhierarchy; + } + + public String getDisabdesc() { + return this.disabdesc; + } + + public void setDisabdesc(String newDisabdesc) { + this.disabdesc = newDisabdesc; + } + + public String getDisabdesignation() { + return this.disabdesignation; + } + + public void setDisabdesignation(String newDisabdesignation) { + this.disabdesignation = newDisabdesignation; + } + + public String getDisabscale() { + return this.disabscale; + } + + public void setDisabscale(String newDisabscale) { + this.disabscale = newDisabscale; + } + + public String getDisabrating() { + return this.disabrating; + } + + public void setDisabrating(String newDisabrating) { + this.disabrating = newDisabrating; + } + + public String getDisabmaxRating() { + return this.disabmaxRating; + } + + public void setDisabmaxRating(String newDisabmaxRating) { + this.disabmaxRating = newDisabmaxRating; + } + + public String getDisabminRating() { + return this.disabminRating; + } + + public void setDisabminRating(String newDisabminRating) { + this.disabminRating = newDisabminRating; + } + + public String getDisabtxtKPAGroupCode() { + return this.disabtxtKPAGroupCode; + } + + public void setDisabtxtKPAGroupCode(String newDisabtxtKPAGroupCode) { + this.disabtxtKPAGroupCode = newDisabtxtKPAGroupCode; + } + + public String getDisabtxtKPAGroupDesc() { + return this.disabtxtKPAGroupDesc; + } + + public void setDisabtxtKPAGroupDesc(String newDisabtxtKPAGroupDesc) { + this.disabtxtKPAGroupDesc = newDisabtxtKPAGroupDesc; + } + + public String getDisabtxtReqAvgRating() { + return this.disabtxtReqAvgRating; + } + + public void setDisabtxtReqAvgRating(String newDisabtxtReqAvgRating) { + this.disabtxtReqAvgRating = newDisabtxtReqAvgRating; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public ArrayList getArylstPoswiseRate() { + return this.arylstPoswiseRate; + } + + public void setArylstPoswiseRate(ArrayList newArylstPoswiseRate) { + this.arylstPoswiseRate = newArylstPoswiseRate; + } + + public ArrayList getArylstFinalRate() { + return this.arylstFinalRate; + } + + public void setArylstFinalRate(ArrayList newArylstFinalRate) { + this.arylstFinalRate = newArylstFinalRate; + } + + public String getPositionId() { + return this.positionId; + } + + public void setPositionId(String newPositionId) { + this.positionId = newPositionId; + } + + public String getRatingId() { + return this.ratingId; + } + + public void setRatingId(String newRatingId) { + this.ratingId = newRatingId; + } + + public String getButPositionCode() { + return this.butPositionCode; + } + + public void setButPositionCode(String newButPositionCode) { + this.butPositionCode = newButPositionCode; + } + + public String getDisabbutPositionCode() { + return this.disabbutPositionCode; + } + + public void setDisabbutPositionCode(String newDisabbutPositionCode) { + this.disabbutPositionCode = newDisabbutPositionCode; + } + + public String getButRatingNo() { + return this.butRatingNo; + } + + public void setButRatingNo(String newButRatingNo) { + this.butRatingNo = newButRatingNo; + } + + public String getDisabbutRatingNo() { + return this.disabbutRatingNo; + } + + public void setDisabbutRatingNo(String newDisabbutRatingNo) { + this.disabbutRatingNo = newDisabbutRatingNo; + } + + public String[] getTxtKPAGroupId() { + return this.txtKPAGroupId; + } + + public void setTxtKPAGroupId(String[] newTxtKPAGroupId) { + this.txtKPAGroupId = newTxtKPAGroupId; + } + + public String[] getStartField() { + return this.startField; + } + + public void setStartField(String[] newStartField) { + this.startField = newStartField; + } + + public String[] getEndField() { + return this.endField; + } + + public void setEndField(String[] newEndField) { + this.endField = newEndField; + } + + public String[] getTxtPoints() { + return this.txtPoints; + } + + public void setTxtPoints(String[] newTxtPoints) { + this.txtPoints = newTxtPoints; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getButGrade() { + return this.butGrade; + } + + public void setButGrade(String newButGrade) { + this.butGrade = newButGrade; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getButDesig() { + return this.butDesig; + } + + public void setButDesig(String newButDesig) { + this.butDesig = newButDesig; + } + + public String getDisabbutDesig() { + return this.disabbutDesig; + } + + public void setDisabbutDesig(String newDisabbutDesig) { + this.disabbutDesig = newDisabbutDesig; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getDesigId() { + return this.desigId; + } + + public void setDesigId(String newDesigId) { + this.desigId = newDesigId; + } + + public String[] getTxtPromKPARatingHdrId() { + return this.txtPromKPARatingHdrId; + } + + public void setTxtPromKPARatingHdrId(String[] newTxtPromKPARatingHdrId) { + this.txtPromKPARatingHdrId = newTxtPromKPARatingHdrId; + } + + public String[] getTxtPromKPARatingHdrFId() { + return this.txtPromKPARatingHdrFId; + } + + public void setTxtPromKPARatingHdrFId(String[] newTxtPromKPARatingHdrFId) { + this.txtPromKPARatingHdrFId = newTxtPromKPARatingHdrFId; + } + + public String[] getButForPos() { + return this.butForPos; + } + + public void setButForPos(String[] newButForPos) { + this.butForPos = newButForPos; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmNoticeDetailForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmNoticeDetailForm.java new file mode 100644 index 0000000..847c738 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmNoticeDetailForm.java @@ -0,0 +1,297 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmNoticeDetailForm extends HrmBaseForm { + String noticeNo; + + String noticeDate; + + String desc; + + String[] txtDesignation; + + String[] txtVacancies; + + String[] txtExamDate; + + String selectAll; + + String disabnoticeNo; + + String disabnoticeDate; + + String disabdesc; + + String disabtxtVacancies; + + String disabtxtExamDate; + + String disabtxtAPARYears; + + String disabselectAll; + + String disabtxtLocationCode; + + String butNoticeNo; + + String butNoticeDate; + + String disabbutNoticeDate; + + String disabbutNoticeNo; + + String noticeId; + + ArrayList arylstNoticeDtl = new ArrayList(); + + String butTxtExamDate; + + String disabbutTxtExamDate; + + private String[] txtGradeId; + + private String[] txtDesigId; + + private String[] txtGrade; + + private String[] butGrade; + + private String[] butDesig; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getNoticeNo() { + return this.noticeNo; + } + + public void setNoticeNo(String newNoticeNo) { + this.noticeNo = newNoticeNo; + } + + public String getNoticeDate() { + return this.noticeDate; + } + + public void setNoticeDate(String newNoticeDate) { + this.noticeDate = newNoticeDate; + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public String[] getTxtDesignation() { + return this.txtDesignation; + } + + public void setTxtDesignation(String[] newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public String[] getTxtVacancies() { + return this.txtVacancies; + } + + public void setTxtVacancies(String[] newTxtVacancies) { + this.txtVacancies = newTxtVacancies; + } + + public String[] getTxtExamDate() { + return this.txtExamDate; + } + + public void setTxtExamDate(String[] newTxtExamDate) { + this.txtExamDate = newTxtExamDate; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabnoticeNo() { + return this.disabnoticeNo; + } + + public void setDisabnoticeNo(String newDisabnoticeNo) { + this.disabnoticeNo = newDisabnoticeNo; + } + + public String getDisabnoticeDate() { + return this.disabnoticeDate; + } + + public void setDisabnoticeDate(String newDisabnoticeDate) { + this.disabnoticeDate = newDisabnoticeDate; + } + + public String getDisabdesc() { + return this.disabdesc; + } + + public void setDisabdesc(String newDisabdesc) { + this.disabdesc = newDisabdesc; + } + + public String getDisabtxtVacancies() { + return this.disabtxtVacancies; + } + + public void setDisabtxtVacancies(String newDisabtxtVacancies) { + this.disabtxtVacancies = newDisabtxtVacancies; + } + + public String getDisabtxtExamDate() { + return this.disabtxtExamDate; + } + + public void setDisabtxtExamDate(String newDisabtxtExamDate) { + this.disabtxtExamDate = newDisabtxtExamDate; + } + + public String getDisabtxtAPARYears() { + return this.disabtxtAPARYears; + } + + public void setDisabtxtAPARYears(String newDisabtxtAPARYears) { + this.disabtxtAPARYears = newDisabtxtAPARYears; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtLocationCode() { + return this.disabtxtLocationCode; + } + + public void setDisabtxtLocationCode(String newDisabtxtLocationCode) { + this.disabtxtLocationCode = newDisabtxtLocationCode; + } + + public String getButNoticeNo() { + return this.butNoticeNo; + } + + public void setButNoticeNo(String newButNoticeNo) { + this.butNoticeNo = newButNoticeNo; + } + + public String getButNoticeDate() { + return this.butNoticeDate; + } + + public void setButNoticeDate(String newButNoticeDate) { + this.butNoticeDate = newButNoticeDate; + } + + public String getDisabbutNoticeDate() { + return this.disabbutNoticeDate; + } + + public void setDisabbutNoticeDate(String newDisabbutNoticeDate) { + this.disabbutNoticeDate = newDisabbutNoticeDate; + } + + public String getDisabbutNoticeNo() { + return this.disabbutNoticeNo; + } + + public void setDisabbutNoticeNo(String newDisabbutNoticeNo) { + this.disabbutNoticeNo = newDisabbutNoticeNo; + } + + public String getNoticeId() { + return this.noticeId; + } + + public void setNoticeId(String newNoticeId) { + this.noticeId = newNoticeId; + } + + public ArrayList getArylstNoticeDtl() { + return this.arylstNoticeDtl; + } + + public void setArylstNoticeDtl(ArrayList newArylstNoticeDtl) { + this.arylstNoticeDtl = newArylstNoticeDtl; + } + + public String getButTxtExamDate() { + return this.butTxtExamDate; + } + + public void setButTxtExamDate(String newButTxtExamDate) { + this.butTxtExamDate = newButTxtExamDate; + } + + public String getDisabbutTxtExamDate() { + return this.disabbutTxtExamDate; + } + + public void setDisabbutTxtExamDate(String newDisabbutTxtExamDate) { + this.disabbutTxtExamDate = newDisabbutTxtExamDate; + } + + public String[] getTxtGradeId() { + return this.txtGradeId; + } + + public void setTxtGradeId(String[] newTxtGradeId) { + this.txtGradeId = newTxtGradeId; + } + + public String[] getTxtDesigId() { + return this.txtDesigId; + } + + public void setTxtDesigId(String[] newTxtDesigId) { + this.txtDesigId = newTxtDesigId; + } + + public String[] getTxtGrade() { + return this.txtGrade; + } + + public void setTxtGrade(String[] newTxtGrade) { + this.txtGrade = newTxtGrade; + } + + public String[] getButGrade() { + return this.butGrade; + } + + public void setButGrade(String[] newButGrade) { + this.butGrade = newButGrade; + } + + public String[] getButDesig() { + return this.butDesig; + } + + public void setButDesig(String[] newButDesig) { + this.butDesig = newButDesig; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmOrderForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmOrderForm.java new file mode 100644 index 0000000..5c7bc57 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmOrderForm.java @@ -0,0 +1,365 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmOrderForm extends HrmBaseForm { + private String employeeNo; + + private String firstName; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String middleName; + + private String lastName; + + private String grade; + + private String designation; + + private String location; + + private String pastExp; + + private String presExp; + + private String orderNo; + + private String butOrderNo; + + private String disabbutOrderNo; + + private String toGrade; + + private String butToGrade; + + private String disabbutToGrade; + + private String toDesig; + + private String butToDesig; + + private String disabbutToDesig; + + private String effecDate; + + private String butEffecDate; + + private String disabbutEffecDate; + + private String approvedBy; + + private String butApprovedBy; + + private String disabbutApprovedBy; + + private String remarks; + + private String disabremarks; + + private String orderNoId; + + private String empId; + + private String approverId; + + private String toGradeId; + + private String toDesigId; + + private String gradeSeq; + + private String desigSeq; + + private String disaborderNo; + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getPastExp() { + return this.pastExp; + } + + public void setPastExp(String newPastExp) { + this.pastExp = newPastExp; + } + + public String getPresExp() { + return this.presExp; + } + + public void setPresExp(String newPresExp) { + this.presExp = newPresExp; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getButOrderNo() { + return this.butOrderNo; + } + + public void setButOrderNo(String newButOrderNo) { + this.butOrderNo = newButOrderNo; + } + + public String getDisabbutOrderNo() { + return this.disabbutOrderNo; + } + + public void setDisabbutOrderNo(String newDisabbutOrderNo) { + this.disabbutOrderNo = newDisabbutOrderNo; + } + + public String getToGrade() { + return this.toGrade; + } + + public void setToGrade(String newToGrade) { + this.toGrade = newToGrade; + } + + public String getButToGrade() { + return this.butToGrade; + } + + public void setButToGrade(String newButToGrade) { + this.butToGrade = newButToGrade; + } + + public String getDisabbutToGrade() { + return this.disabbutToGrade; + } + + public void setDisabbutToGrade(String newDisabbutToGrade) { + this.disabbutToGrade = newDisabbutToGrade; + } + + public String getToDesig() { + return this.toDesig; + } + + public void setToDesig(String newToDesig) { + this.toDesig = newToDesig; + } + + public String getButToDesig() { + return this.butToDesig; + } + + public void setButToDesig(String newButToDesig) { + this.butToDesig = newButToDesig; + } + + public String getDisabbutToDesig() { + return this.disabbutToDesig; + } + + public void setDisabbutToDesig(String newDisabbutToDesig) { + this.disabbutToDesig = newDisabbutToDesig; + } + + public String getEffecDate() { + return this.effecDate; + } + + public void setEffecDate(String newEffecDate) { + this.effecDate = newEffecDate; + } + + public String getButEffecDate() { + return this.butEffecDate; + } + + public void setButEffecDate(String newButEffecDate) { + this.butEffecDate = newButEffecDate; + } + + public String getDisabbutEffecDate() { + return this.disabbutEffecDate; + } + + public void setDisabbutEffecDate(String newDisabbutEffecDate) { + this.disabbutEffecDate = newDisabbutEffecDate; + } + + public String getApprovedBy() { + return this.approvedBy; + } + + public void setApprovedBy(String newApprovedBy) { + this.approvedBy = newApprovedBy; + } + + public String getButApprovedBy() { + return this.butApprovedBy; + } + + public void setButApprovedBy(String newButApprovedBy) { + this.butApprovedBy = newButApprovedBy; + } + + public String getDisabbutApprovedBy() { + return this.disabbutApprovedBy; + } + + public void setDisabbutApprovedBy(String newDisabbutApprovedBy) { + this.disabbutApprovedBy = newDisabbutApprovedBy; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getApproverId() { + return this.approverId; + } + + public void setApproverId(String newApproverId) { + this.approverId = newApproverId; + } + + public String getToGradeId() { + return this.toGradeId; + } + + public void setToGradeId(String newToGradeId) { + this.toGradeId = newToGradeId; + } + + public String getToDesigId() { + return this.toDesigId; + } + + public void setToDesigId(String newToDesigId) { + this.toDesigId = newToDesigId; + } + + public String getGradeSeq() { + return this.gradeSeq; + } + + public void setGradeSeq(String newGradeSeq) { + this.gradeSeq = newGradeSeq; + } + + public String getDesigSeq() { + return this.desigSeq; + } + + public void setDesigSeq(String newDesigSeq) { + this.desigSeq = newDesigSeq; + } + + public String getDisaborderNo() { + return this.disaborderNo; + } + + public void setDisaborderNo(String newDisaborderNo) { + this.disaborderNo = newDisaborderNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmQualCriteriaForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmQualCriteriaForm.java new file mode 100644 index 0000000..ea0a689 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmQualCriteriaForm.java @@ -0,0 +1,167 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmQualCriteriaForm extends HrmBaseForm { + String selectAll; + + private ArrayList arylstHrmPrmQualCriteriaDtl = new ArrayList(); + + private String[] txtQualCode; + + private String[] txtQualDesc; + + private String[] txtMinPercentage; + + private String[] hdnQualificationId; + + private String gradeCode; + + private String butGrade; + + private String disabbutGrade; + + private String gradeDesc; + + private String desigDesc; + + private String butDesig; + + private String disabbutDesig; + + private String desigCode; + + private String designationId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArylstHrmPrmQualCriteriaDtl() { + return this.arylstHrmPrmQualCriteriaDtl; + } + + public void setArylstHrmPrmQualCriteriaDtl(ArrayList newArylstHrmPrmQualCriteriaDtl) { + this.arylstHrmPrmQualCriteriaDtl = newArylstHrmPrmQualCriteriaDtl; + } + + public String[] getTxtQualCode() { + return this.txtQualCode; + } + + public void setTxtQualCode(String[] newTxtQualCode) { + this.txtQualCode = newTxtQualCode; + } + + public String[] getTxtQualDesc() { + return this.txtQualDesc; + } + + public void setTxtQualDesc(String[] newTxtQualDesc) { + this.txtQualDesc = newTxtQualDesc; + } + + public String[] getTxtMinPercentage() { + return this.txtMinPercentage; + } + + public void setTxtMinPercentage(String[] newTxtMinPercentage) { + this.txtMinPercentage = newTxtMinPercentage; + } + + public String[] getHdnQualificationId() { + return this.hdnQualificationId; + } + + public void setHdnQualificationId(String[] newHdnQualificationId) { + this.hdnQualificationId = newHdnQualificationId; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getButGrade() { + return this.butGrade; + } + + public void setButGrade(String newButGrade) { + this.butGrade = newButGrade; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getButDesig() { + return this.butDesig; + } + + public void setButDesig(String newButDesig) { + this.butDesig = newButDesig; + } + + public String getDisabbutDesig() { + return this.disabbutDesig; + } + + public void setDisabbutDesig(String newDisabbutDesig) { + this.disabbutDesig = newDisabbutDesig; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmTestScoreForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmTestScoreForm.java new file mode 100644 index 0000000..b3de7c0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmTestScoreForm.java @@ -0,0 +1,307 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmTestScoreForm extends HrmBaseForm { + String desc; + + String examType; + + String examDesc; + + String maxScore; + + String maxPoints; + + String[] startField; + + String[] endField; + + String[] txtPoints; + + String selectAll; + + String disabdesc; + + String disabexamType; + + String disabexamDesc; + + String disabmaxScore; + + String disabmaxPoints; + + String disabtxtScoreForm; + + String disabtxtScoreTo; + + String disabtxtPoints; + + String disabselectAll; + + ArrayList aryLstPrmTestScore = new ArrayList(); + + String designationId; + + private String gradeCode; + + private String butGrade; + + private String disabbutGrade; + + private String gradeDesc; + + private String desigDesc; + + private String butDesig; + + private String disabbutDesig; + + private String desigCode; + + private String gradeId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getDesc() { + return this.desc; + } + + public void setDesc(String newDesc) { + this.desc = newDesc; + } + + public String getExamType() { + return this.examType; + } + + public void setExamType(String newExamType) { + this.examType = newExamType; + } + + public String getExamDesc() { + return this.examDesc; + } + + public void setExamDesc(String newExamDesc) { + this.examDesc = newExamDesc; + } + + public String getMaxScore() { + return this.maxScore; + } + + public void setMaxScore(String newMaxScore) { + this.maxScore = newMaxScore; + } + + public String getMaxPoints() { + return this.maxPoints; + } + + public void setMaxPoints(String newMaxPoints) { + this.maxPoints = newMaxPoints; + } + + public String[] getStartField() { + return this.startField; + } + + public void setStartField(String[] newStartField) { + this.startField = newStartField; + } + + public String[] getEndField() { + return this.endField; + } + + public void setEndField(String[] newEndField) { + this.endField = newEndField; + } + + public String[] getTxtPoints() { + return this.txtPoints; + } + + public void setTxtPoints(String[] newTxtPoints) { + this.txtPoints = newTxtPoints; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabdesc() { + return this.disabdesc; + } + + public void setDisabdesc(String newDisabdesc) { + this.disabdesc = newDisabdesc; + } + + public String getDisabexamType() { + return this.disabexamType; + } + + public void setDisabexamType(String newDisabexamType) { + this.disabexamType = newDisabexamType; + } + + public String getDisabexamDesc() { + return this.disabexamDesc; + } + + public void setDisabexamDesc(String newDisabexamDesc) { + this.disabexamDesc = newDisabexamDesc; + } + + public String getDisabmaxScore() { + return this.disabmaxScore; + } + + public void setDisabmaxScore(String newDisabmaxScore) { + this.disabmaxScore = newDisabmaxScore; + } + + public String getDisabmaxPoints() { + return this.disabmaxPoints; + } + + public void setDisabmaxPoints(String newDisabmaxPoints) { + this.disabmaxPoints = newDisabmaxPoints; + } + + public String getDisabtxtScoreForm() { + return this.disabtxtScoreForm; + } + + public void setDisabtxtScoreForm(String newDisabtxtScoreForm) { + this.disabtxtScoreForm = newDisabtxtScoreForm; + } + + public String getDisabtxtScoreTo() { + return this.disabtxtScoreTo; + } + + public void setDisabtxtScoreTo(String newDisabtxtScoreTo) { + this.disabtxtScoreTo = newDisabtxtScoreTo; + } + + public String getDisabtxtPoints() { + return this.disabtxtPoints; + } + + public void setDisabtxtPoints(String newDisabtxtPoints) { + this.disabtxtPoints = newDisabtxtPoints; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public ArrayList getAryLstPrmTestScore() { + return this.aryLstPrmTestScore; + } + + public void setAryLstPrmTestScore(ArrayList newAryLstPrmTestScore) { + this.aryLstPrmTestScore = newAryLstPrmTestScore; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getButGrade() { + return this.butGrade; + } + + public void setButGrade(String newButGrade) { + this.butGrade = newButGrade; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getGradeDesc() { + return this.gradeDesc; + } + + public void setGradeDesc(String newGradeDesc) { + this.gradeDesc = newGradeDesc; + } + + public String getDesigDesc() { + return this.desigDesc; + } + + public void setDesigDesc(String newDesigDesc) { + this.desigDesc = newDesigDesc; + } + + public String getButDesig() { + return this.butDesig; + } + + public void setButDesig(String newButDesig) { + this.butDesig = newButDesig; + } + + public String getDisabbutDesig() { + return this.disabbutDesig; + } + + public void setDisabbutDesig(String newDisabbutDesig) { + this.disabbutDesig = newDisabbutDesig; + } + + public String getDesigCode() { + return this.desigCode; + } + + public void setDesigCode(String newDesigCode) { + this.desigCode = newDesigCode; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmViewAssForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmViewAssForm.java new file mode 100644 index 0000000..ea0d34e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmPrmViewAssForm.java @@ -0,0 +1,656 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmPrmViewAssForm extends HrmBaseForm { + private String siteCode; + + private String siteID; + + private String butsiteID; + + private String prmNo; + + private String prmID; + + private String butprmID; + + private String toPosition; + + private String toPositionID; + + private String buttoPositionID; + + private String disabsiteCode; + + private String disabsiteID; + + private String disabbutsiteID; + + private String disabprmNo; + + private String disabprmID; + + private String disabbutprmID; + + private String disabtoPosition; + + private String disabtoPositionID; + + private String disabbuttoPositionID; + + private String selectAll; + + private String[] txtEmpNo; + + private String[] txtEmpName; + + private String[] txtFromPosCode; + + private String[] txtScale; + + private String[] txtSrvYrs; + + private String[] txtCurrSrvYrs; + + private String[] txtSrvYrsPoints; + + private String[] txtAvgAparPts; + + private String[] txtWrittenTestMarks; + + private String[] txtWrittenTestPts; + + private String[] txtGDMarks; + + private String[] txtGDPts; + + private String[] txtInterviewMarks; + + private String[] txtInterviewPts; + + private String[] txtTotalPtsAwarded; + + private Boolean[] txtEligProm; + + private String diabtxtEmpNo; + + private String disabtxtEmpName; + + private String disabtxtFromPosCode; + + private String disabtxtPosDesc; + + private String disabtxtScale; + + private String disabtxtSrvYrs; + + private String disabtxtCurrSrvYrs; + + private String disabtxtSrvYrsPoints; + + private String disabtxtAvgAparPts; + + private String disabtxtWrittenTestMarks; + + private String disabtxtWrittenTestPts; + + private String disabtxtGDMarks; + + private String disabtxtGDPts; + + private String disabtxtInterviewMarks; + + private String disabtxtInterviewPts; + + private String disabtxtTotalPtsAwarded; + + private String disabtxtEligProm; + + private ArrayList arylstPrmViewAss = new ArrayList(); + + private String[] employeeId; + + private String[] hdnPrevDtlId; + + private String[] txtAparPts; + + private String[] hdnPromEligibility; + + String[] positionId; + + private String siteDesc; + + private String noticeDesc; + + private String positionDesc; + + String changeEnb; + + private String[] scaleId; + + String toHeirarchy; + + String[] headerPositionId; + + public String getSiteCode() { + return this.siteCode; + } + + public void setSiteCode(String newSiteCode) { + this.siteCode = newSiteCode; + } + + public String getDisabsiteCode() { + return this.disabsiteCode; + } + + public void setDisabsiteCode(String newDisabsiteCode) { + this.disabsiteCode = newDisabsiteCode; + } + + public String getButsiteID() { + return this.butsiteID; + } + + public void setButsiteID(String newButsiteID) { + this.butsiteID = newButsiteID; + } + + public String getDisabbutsiteID() { + return this.disabbutsiteID; + } + + public void setDisabbutsiteID(String newDisabbutsiteID) { + this.disabbutsiteID = newDisabbutsiteID; + } + + public String getPrmNo() { + return this.prmNo; + } + + public void setPrmNo(String newPrmNo) { + this.prmNo = newPrmNo; + } + + public String getDisabprmNo() { + return this.disabprmNo; + } + + public void setDisabprmNo(String newDisabprmNo) { + this.disabprmNo = newDisabprmNo; + } + + public String getButprmID() { + return this.butprmID; + } + + public void setButprmID(String newButprmID) { + this.butprmID = newButprmID; + } + + public String getToPosition() { + return this.toPosition; + } + + public void setToPosition(String newToPosition) { + this.toPosition = newToPosition; + } + + public String getDisabtoPosition() { + return this.disabtoPosition; + } + + public void setDisabtoPosition(String newDisabtoPosition) { + this.disabtoPosition = newDisabtoPosition; + } + + public String getButtoPositionID() { + return this.buttoPositionID; + } + + public void setButtoPositionID(String newButtoPositionID) { + this.buttoPositionID = newButtoPositionID; + } + + public String getDisabbuttoPositionID() { + return this.disabbuttoPositionID; + } + + public void setDisabbuttoPositionID(String newDisabbuttoPositionID) { + this.disabbuttoPositionID = newDisabbuttoPositionID; + } + + public String[] getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String[] newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String[] getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String[] newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String[] getTxtFromPosCode() { + return this.txtFromPosCode; + } + + public void setTxtFromPosCode(String[] newTxtFromPosCode) { + this.txtFromPosCode = newTxtFromPosCode; + } + + public String[] getTxtScale() { + return this.txtScale; + } + + public void setTxtScale(String[] newTxtScale) { + this.txtScale = newTxtScale; + } + + public String[] getTxtSrvYrs() { + return this.txtSrvYrs; + } + + public void setTxtSrvYrs(String[] newTxtSrvYrs) { + this.txtSrvYrs = newTxtSrvYrs; + } + + public String[] getTxtCurrSrvYrs() { + return this.txtCurrSrvYrs; + } + + public void setTxtCurrSrvYrs(String[] newTxtCurrSrvYrs) { + this.txtCurrSrvYrs = newTxtCurrSrvYrs; + } + + public String[] getTxtSrvYrsPoints() { + return this.txtSrvYrsPoints; + } + + public void setTxtSrvYrsPoints(String[] newTxtSrvYrsPoints) { + this.txtSrvYrsPoints = newTxtSrvYrsPoints; + } + + public String[] getTxtAvgAparPts() { + return this.txtAvgAparPts; + } + + public void setTxtAvgAparPts(String[] newTxtAvgAparPts) { + this.txtAvgAparPts = newTxtAvgAparPts; + } + + public String[] getTxtWrittenTestMarks() { + return this.txtWrittenTestMarks; + } + + public void setTxtWrittenTestMarks(String[] newTxtWrittenTestMarks) { + this.txtWrittenTestMarks = newTxtWrittenTestMarks; + } + + public String[] getTxtWrittenTestPts() { + return this.txtWrittenTestPts; + } + + public void setTxtWrittenTestPts(String[] newTxtWrittenTestPts) { + this.txtWrittenTestPts = newTxtWrittenTestPts; + } + + public String[] getTxtGDMarks() { + return this.txtGDMarks; + } + + public void setTxtGDMarks(String[] newTxtGDMarks) { + this.txtGDMarks = newTxtGDMarks; + } + + public String[] getTxtGDPts() { + return this.txtGDPts; + } + + public void setTxtGDPts(String[] newTxtGDPts) { + this.txtGDPts = newTxtGDPts; + } + + public String[] getTxtInterviewMarks() { + return this.txtInterviewMarks; + } + + public void setTxtInterviewMarks(String[] newTxtInterviewMarks) { + this.txtInterviewMarks = newTxtInterviewMarks; + } + + public String[] getTxtInterviewPts() { + return this.txtInterviewPts; + } + + public void setTxtInterviewPts(String[] newTxtInterviewPts) { + this.txtInterviewPts = newTxtInterviewPts; + } + + public String[] getTxtTotalPtsAwarded() { + return this.txtTotalPtsAwarded; + } + + public void setTxtTotalPtsAwarded(String[] newTxtTotalPtsAwarded) { + this.txtTotalPtsAwarded = newTxtTotalPtsAwarded; + } + + public Boolean[] getTxtEligProm() { + return this.txtEligProm; + } + + public void setTxtEligProm(Boolean[] newTxtEligProm) { + this.txtEligProm = newTxtEligProm; + } + + public String getDiabtxtEmpNo() { + return this.diabtxtEmpNo; + } + + public void setDiabtxtEmpNo(String newDiabtxtEmpNo) { + this.diabtxtEmpNo = newDiabtxtEmpNo; + } + + public String getDisabtxtEmpName() { + return this.disabtxtEmpName; + } + + public void setDisabtxtEmpName(String newDisabtxtEmpName) { + this.disabtxtEmpName = newDisabtxtEmpName; + } + + public String getDisabtxtFromPosCode() { + return this.disabtxtFromPosCode; + } + + public void setDisabtxtFromPosCode(String newDisabtxtFromPosCode) { + this.disabtxtFromPosCode = newDisabtxtFromPosCode; + } + + public String getDisabtxtPosDesc() { + return this.disabtxtPosDesc; + } + + public void setDisabtxtPosDesc(String newDisabtxtPosDesc) { + this.disabtxtPosDesc = newDisabtxtPosDesc; + } + + public String getDisabtxtScale() { + return this.disabtxtScale; + } + + public void setDisabtxtScale(String newDisabtxtScale) { + this.disabtxtScale = newDisabtxtScale; + } + + public String getDisabtxtSrvYrs() { + return this.disabtxtSrvYrs; + } + + public void setDisabtxtSrvYrs(String newDisabtxtSrvYrs) { + this.disabtxtSrvYrs = newDisabtxtSrvYrs; + } + + public String getDisabtxtCurrSrvYrs() { + return this.disabtxtCurrSrvYrs; + } + + public void setDisabtxtCurrSrvYrs(String newDisabtxtCurrSrvYrs) { + this.disabtxtCurrSrvYrs = newDisabtxtCurrSrvYrs; + } + + public String getDisabtxtSrvYrsPoints() { + return this.disabtxtSrvYrsPoints; + } + + public void setDisabtxtSrvYrsPoints(String newDisabtxtSrvYrsPoints) { + this.disabtxtSrvYrsPoints = newDisabtxtSrvYrsPoints; + } + + public String getDisabtxtAvgAparPts() { + return this.disabtxtAvgAparPts; + } + + public void setDisabtxtAvgAparPts(String newDisabtxtAvgAparPts) { + this.disabtxtAvgAparPts = newDisabtxtAvgAparPts; + } + + public String getDisabtxtWrittenTestMarks() { + return this.disabtxtWrittenTestMarks; + } + + public void setDisabtxtWrittenTestMarks(String newDisabtxtWrittenTestMarks) { + this.disabtxtWrittenTestMarks = newDisabtxtWrittenTestMarks; + } + + public String getDisabtxtWrittenTestPts() { + return this.disabtxtWrittenTestPts; + } + + public void setDisabtxtWrittenTestPts(String newDisabtxtWrittenTestPts) { + this.disabtxtWrittenTestPts = newDisabtxtWrittenTestPts; + } + + public String getDisabtxtGDMarks() { + return this.disabtxtGDMarks; + } + + public void setDisabtxtGDMarks(String newDisabtxtGDMarks) { + this.disabtxtGDMarks = newDisabtxtGDMarks; + } + + public String getDisabtxtGDPts() { + return this.disabtxtGDPts; + } + + public void setDisabtxtGDPts(String newDisabtxtGDPts) { + this.disabtxtGDPts = newDisabtxtGDPts; + } + + public String getDisabtxtInterviewMarks() { + return this.disabtxtInterviewMarks; + } + + public void setDisabtxtInterviewMarks(String newDisabtxtInterviewMarks) { + this.disabtxtInterviewMarks = newDisabtxtInterviewMarks; + } + + public String getDisabtxtInterviewPts() { + return this.disabtxtInterviewPts; + } + + public void setDisabtxtInterviewPts(String newDisabtxtInterviewPts) { + this.disabtxtInterviewPts = newDisabtxtInterviewPts; + } + + public String getDisabtxtTotalPtsAwarded() { + return this.disabtxtTotalPtsAwarded; + } + + public void setDisabtxtTotalPtsAwarded(String newDisabtxtTotalPtsAwarded) { + this.disabtxtTotalPtsAwarded = newDisabtxtTotalPtsAwarded; + } + + public String getDisabtxtEligProm() { + return this.disabtxtEligProm; + } + + public void setDisabtxtEligProm(String newDisabtxtEligProm) { + this.disabtxtEligProm = newDisabtxtEligProm; + } + + public ArrayList getArylstPrmViewAss() { + return this.arylstPrmViewAss; + } + + public void setArylstPrmViewAss(ArrayList newArylstPrmViewAss) { + this.arylstPrmViewAss = newArylstPrmViewAss; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabbutprmID() { + return this.disabbutprmID; + } + + public void setDisabbutprmID(String newDisabbutprmID) { + this.disabbutprmID = newDisabbutprmID; + } + + public String getSiteID() { + return this.siteID; + } + + public void setSiteID(String newSiteID) { + this.siteID = newSiteID; + } + + public String getPrmID() { + return this.prmID; + } + + public void setPrmID(String newPrmID) { + this.prmID = newPrmID; + } + + public String getToPositionID() { + return this.toPositionID; + } + + public void setToPositionID(String newToPositionID) { + this.toPositionID = newToPositionID; + } + + public String getDisabsiteID() { + return this.disabsiteID; + } + + public void setDisabsiteID(String newDisabsiteID) { + this.disabsiteID = newDisabsiteID; + } + + public String getDisabprmID() { + return this.disabprmID; + } + + public void setDisabprmID(String newDisabprmID) { + this.disabprmID = newDisabprmID; + } + + public String getDisabtoPositionID() { + return this.disabtoPositionID; + } + + public void setDisabtoPositionID(String newDisabtoPositionID) { + this.disabtoPositionID = newDisabtoPositionID; + } + + public String[] getEmployeeId() { + return this.employeeId; + } + + public void setEmployeeId(String[] newEmployeeId) { + this.employeeId = newEmployeeId; + } + + public String[] getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String[] newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String[] getTxtAparPts() { + return this.txtAparPts; + } + + public void setTxtAparPts(String[] newTxtAparPts) { + this.txtAparPts = newTxtAparPts; + } + + public String[] getHdnPromEligibility() { + return this.hdnPromEligibility; + } + + public void setHdnPromEligibility(String[] newHdnPromEligibility) { + this.hdnPromEligibility = newHdnPromEligibility; + } + + public String[] getPositionId() { + return this.positionId; + } + + public void setPositionId(String[] newPositionId) { + this.positionId = newPositionId; + } + + public String getSiteDesc() { + return this.siteDesc; + } + + public void setSiteDesc(String newSiteDesc) { + this.siteDesc = newSiteDesc; + } + + public String getNoticeDesc() { + return this.noticeDesc; + } + + public void setNoticeDesc(String newNoticeDesc) { + this.noticeDesc = newNoticeDesc; + } + + public String getPositionDesc() { + return this.positionDesc; + } + + public void setPositionDesc(String newPositionDesc) { + this.positionDesc = newPositionDesc; + } + + public String getChangeEnb() { + return this.changeEnb; + } + + public void setChangeEnb(String newChangeEnb) { + this.changeEnb = newChangeEnb; + } + + public String[] getScaleId() { + return this.scaleId; + } + + public void setScaleId(String[] newScaleId) { + this.scaleId = newScaleId; + } + + public String getToHeirarchy() { + return this.toHeirarchy; + } + + public void setToHeirarchy(String newToHeirarchy) { + this.toHeirarchy = newToHeirarchy; + } + + public String[] getHeaderPositionId() { + return this.headerPositionId; + } + + public void setHeaderPositionId(String[] newHeaderPositionId) { + this.headerPositionId = newHeaderPositionId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvAttrForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvAttrForm.java new file mode 100644 index 0000000..8e9c4fe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvAttrForm.java @@ -0,0 +1,547 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRecAdvAttrForm extends HrmBaseForm { + String selectAll; + + String[] txtQualCode; + + String[] txtMandatoryFlag; + + String[] txtMaxmQualFlag; + + String[] txtMinPC; + + String[] txtLocCode; + + String[] txtNoOfVacancy; + + String[] txtReqExp; + + String[] txtMinWrkExp; + + String[] txtMaxWrkExp; + + String[] txtSkillCode; + + String[] txtSkillDesc; + + String[] txtLangCode; + + String[] txtReqType; + + private ArrayList arylstHrmAdvLocVacencyDtl = new ArrayList(); + + private ArrayList arylstHrmAdvQualReqDtl = new ArrayList(); + + private ArrayList arylstHrmAdvLngReqDtl = new ArrayList(); + + private ArrayList arylstHrmAdvSkillReqDtl = new ArrayList(); + + private ArrayList arylstHrmAdvWorkExpDtl = new ArrayList(); + + private ArrayList arylstHrmAdvJobDescDtl = new ArrayList(); + + private String[] hdnLocationId; + + private String[] hdnQualificationId; + + private String[] hdnLanguageId; + + private String[] hdnSkillId; + + private String[] workId; + + private String[] hdnPrevDtlId; + + private String prevDtlId; + + private String[] txtLocDesc; + + private String[] txtLangDesc; + + private String[] txtQualDesc; + + private String[] txtWorkDesc; + + private String changeEnb; + + private String refNo; + + private String desgn; + + private String refId; + + String butrefNo; + + String butPosition; + + String disabbutPosition; + + String disabbutrefNo; + + private String category; + + private String[] txtExposureIn; + + private String[] txtSpecialisation; + + private String[] txtStateId; + + private String[] txtState; + + private String[] txtStateCode; + + private String[] txtCity; + + private String butAdvAttrStateCode; + + private String[] txtExpIn; + + private String[] txtExpArea; + + private String[] txtSkill; + + private String[] txtRemarks; + + private String[] txtJobDesc; + + private String[] txtSrlNo; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtQualCode() { + return this.txtQualCode; + } + + public void setTxtQualCode(String[] newTxtQualCode) { + this.txtQualCode = newTxtQualCode; + } + + public String[] getTxtMandatoryFlag() { + return this.txtMandatoryFlag; + } + + public void setTxtMandatoryFlag(String[] newTxtMandatoryFlag) { + this.txtMandatoryFlag = newTxtMandatoryFlag; + } + + public String[] getTxtMaxmQualFlag() { + return this.txtMaxmQualFlag; + } + + public void setTxtMaxmQualFlag(String[] newTxtMaxmQualFlag) { + this.txtMaxmQualFlag = newTxtMaxmQualFlag; + } + + public String[] getTxtMinPC() { + return this.txtMinPC; + } + + public void setTxtMinPC(String[] newTxtMinPC) { + this.txtMinPC = newTxtMinPC; + } + + public String[] getTxtLocCode() { + return this.txtLocCode; + } + + public void setTxtLocCode(String[] newTxtLocCode) { + this.txtLocCode = newTxtLocCode; + } + + public String[] getTxtNoOfVacancy() { + return this.txtNoOfVacancy; + } + + public void setTxtNoOfVacancy(String[] newTxtNoOfVacancy) { + this.txtNoOfVacancy = newTxtNoOfVacancy; + } + + public String[] getTxtReqExp() { + return this.txtReqExp; + } + + public void setTxtReqExp(String[] newTxtReqExp) { + this.txtReqExp = newTxtReqExp; + } + + public String[] getTxtMinWrkExp() { + return this.txtMinWrkExp; + } + + public void setTxtMinWrkExp(String[] newTxtMinWrkExp) { + this.txtMinWrkExp = newTxtMinWrkExp; + } + + public String[] getTxtMaxWrkExp() { + return this.txtMaxWrkExp; + } + + public void setTxtMaxWrkExp(String[] newTxtMaxWrkExp) { + this.txtMaxWrkExp = newTxtMaxWrkExp; + } + + public String[] getTxtSkillCode() { + return this.txtSkillCode; + } + + public void setTxtSkillCode(String[] newTxtSkillCode) { + this.txtSkillCode = newTxtSkillCode; + } + + public String[] getTxtSkillDesc() { + return this.txtSkillDesc; + } + + public void setTxtSkillDesc(String[] newTxtSkillDesc) { + this.txtSkillDesc = newTxtSkillDesc; + } + + public String[] getTxtLangCode() { + return this.txtLangCode; + } + + public void setTxtLangCode(String[] newTxtLangCode) { + this.txtLangCode = newTxtLangCode; + } + + public String[] getTxtReqType() { + return this.txtReqType; + } + + public void setTxtReqType(String[] newTxtReqType) { + this.txtReqType = newTxtReqType; + } + + public ArrayList getArylstHrmAdvLocVacencyDtl() { + return this.arylstHrmAdvLocVacencyDtl; + } + + public void setArylstHrmAdvLocVacencyDtl(ArrayList newArylstHrmAdvLocVacencyDtl) { + this.arylstHrmAdvLocVacencyDtl = newArylstHrmAdvLocVacencyDtl; + } + + public ArrayList getArylstHrmAdvQualReqDtl() { + return this.arylstHrmAdvQualReqDtl; + } + + public void setArylstHrmAdvQualReqDtl(ArrayList newArylstHrmAdvQualReqDtl) { + this.arylstHrmAdvQualReqDtl = newArylstHrmAdvQualReqDtl; + } + + public ArrayList getArylstHrmAdvLngReqDtl() { + return this.arylstHrmAdvLngReqDtl; + } + + public void setArylstHrmAdvLngReqDtl(ArrayList newArylstHrmAdvLngReqDtl) { + this.arylstHrmAdvLngReqDtl = newArylstHrmAdvLngReqDtl; + } + + public ArrayList getArylstHrmAdvSkillReqDtl() { + return this.arylstHrmAdvSkillReqDtl; + } + + public void setArylstHrmAdvSkillReqDtl(ArrayList newArylstHrmAdvSkillReqDtl) { + this.arylstHrmAdvSkillReqDtl = newArylstHrmAdvSkillReqDtl; + } + + public ArrayList getArylstHrmAdvWorkExpDtl() { + return this.arylstHrmAdvWorkExpDtl; + } + + public void setArylstHrmAdvWorkExpDtl(ArrayList newArylstHrmAdvWorkExpDtl) { + this.arylstHrmAdvWorkExpDtl = newArylstHrmAdvWorkExpDtl; + } + + public ArrayList getArylstHrmAdvJobDescDtl() { + return this.arylstHrmAdvJobDescDtl; + } + + public void setArylstHrmAdvJobDescDtl(ArrayList newArylstHrmAdvJobDescDtl) { + this.arylstHrmAdvJobDescDtl = newArylstHrmAdvJobDescDtl; + } + + public String[] getHdnLocationId() { + return this.hdnLocationId; + } + + public void setHdnLocationId(String[] newHdnLocationId) { + this.hdnLocationId = newHdnLocationId; + } + + public String[] getHdnQualificationId() { + return this.hdnQualificationId; + } + + public void setHdnQualificationId(String[] newHdnQualificationId) { + this.hdnQualificationId = newHdnQualificationId; + } + + public String[] getHdnLanguageId() { + return this.hdnLanguageId; + } + + public void setHdnLanguageId(String[] newHdnLanguageId) { + this.hdnLanguageId = newHdnLanguageId; + } + + public String[] getHdnSkillId() { + return this.hdnSkillId; + } + + public void setHdnSkillId(String[] newHdnSkillId) { + this.hdnSkillId = newHdnSkillId; + } + + public String[] getWorkId() { + return this.workId; + } + + public void setWorkId(String[] newWorkId) { + this.workId = newWorkId; + } + + public String[] getHdnPrevDtlId() { + return this.hdnPrevDtlId; + } + + public void setHdnPrevDtlId(String[] newHdnPrevDtlId) { + this.hdnPrevDtlId = newHdnPrevDtlId; + } + + public String getPrevDtlId() { + return this.prevDtlId; + } + + public void setPrevDtlId(String newPrevDtlId) { + this.prevDtlId = newPrevDtlId; + } + + public String[] getTxtLocDesc() { + return this.txtLocDesc; + } + + public void setTxtLocDesc(String[] newTxtLocDesc) { + this.txtLocDesc = newTxtLocDesc; + } + + public String[] getTxtLangDesc() { + return this.txtLangDesc; + } + + public void setTxtLangDesc(String[] newTxtLangDesc) { + this.txtLangDesc = newTxtLangDesc; + } + + public String[] getTxtQualDesc() { + return this.txtQualDesc; + } + + public void setTxtQualDesc(String[] newTxtQualDesc) { + this.txtQualDesc = newTxtQualDesc; + } + + public String[] getTxtWorkDesc() { + return this.txtWorkDesc; + } + + public void setTxtWorkDesc(String[] newTxtWorkDesc) { + this.txtWorkDesc = newTxtWorkDesc; + } + + public String getChangeEnb() { + return this.changeEnb; + } + + public void setChangeEnb(String newChangeEnb) { + this.changeEnb = newChangeEnb; + } + + public String getRefNo() { + return this.refNo; + } + + public void setRefNo(String newRefNo) { + this.refNo = newRefNo; + } + + public String getDesgn() { + return this.desgn; + } + + public void setDesgn(String newDesgn) { + this.desgn = newDesgn; + } + + public String getRefId() { + return this.refId; + } + + public void setRefId(String newRefId) { + this.refId = newRefId; + } + + public String getButrefNo() { + return this.butrefNo; + } + + public void setButrefNo(String newButrefNo) { + this.butrefNo = newButrefNo; + } + + public String getButPosition() { + return this.butPosition; + } + + public void setButPosition(String newButPosition) { + this.butPosition = newButPosition; + } + + public String getDisabbutPosition() { + return this.disabbutPosition; + } + + public void setDisabbutPosition(String newDisabbutPosition) { + this.disabbutPosition = newDisabbutPosition; + } + + public String getDisabbutrefNo() { + return this.disabbutrefNo; + } + + public void setDisabbutrefNo(String newDisabbutrefNo) { + this.disabbutrefNo = newDisabbutrefNo; + } + + public String getCategory() { + return this.category; + } + + public void setCategory(String newCategory) { + this.category = newCategory; + } + + public String[] getTxtExposureIn() { + return this.txtExposureIn; + } + + public void setTxtExposureIn(String[] newTxtExposureIn) { + this.txtExposureIn = newTxtExposureIn; + } + + public String[] getTxtSpecialisation() { + return this.txtSpecialisation; + } + + public void setTxtSpecialisation(String[] newTxtSpecialisation) { + this.txtSpecialisation = newTxtSpecialisation; + } + + public String[] getTxtStateId() { + return this.txtStateId; + } + + public void setTxtStateId(String[] newTxtStateId) { + this.txtStateId = newTxtStateId; + } + + public String[] getTxtState() { + return this.txtState; + } + + public void setTxtState(String[] newTxtState) { + this.txtState = newTxtState; + } + + public String[] getTxtStateCode() { + return this.txtStateCode; + } + + public void setTxtStateCode(String[] newTxtStateCode) { + this.txtStateCode = newTxtStateCode; + } + + public String[] getTxtCity() { + return this.txtCity; + } + + public void setTxtCity(String[] newTxtCity) { + this.txtCity = newTxtCity; + } + + public String getButAdvAttrStateCode() { + return this.butAdvAttrStateCode; + } + + public void setButAdvAttrStateCode(String newButAdvAttrStateCode) { + this.butAdvAttrStateCode = newButAdvAttrStateCode; + } + + public String[] getTxtExpIn() { + return this.txtExpIn; + } + + public void setTxtExpIn(String[] newTxtExpIn) { + this.txtExpIn = newTxtExpIn; + } + + public String[] getTxtExpArea() { + return this.txtExpArea; + } + + public void setTxtExpArea(String[] newTxtExpArea) { + this.txtExpArea = newTxtExpArea; + } + + public String[] getTxtSkill() { + return this.txtSkill; + } + + public void setTxtSkill(String[] newTxtSkill) { + this.txtSkill = newTxtSkill; + } + + public String[] getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String[] newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String[] getTxtJobDesc() { + return this.txtJobDesc; + } + + public void setTxtJobDesc(String[] newTxtJobDesc) { + this.txtJobDesc = newTxtJobDesc; + } + + public String[] getTxtSrlNo() { + return this.txtSrlNo; + } + + public void setTxtSrlNo(String[] newTxtSrlNo) { + this.txtSrlNo = newTxtSrlNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvtMtnForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvtMtnForm.java new file mode 100644 index 0000000..2df8479 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecAdvtMtnForm.java @@ -0,0 +1,817 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRecAdvtMtnForm extends HrmBaseForm { + String referenceNo; + + String entryMode; + + String referenceDate; + + String mediaType; + + String mediaName; + + String lastDate; + + String minWrittenScoreA; + + String minWrittenScoreB; + + String minInterviewScore; + + String description; + + String minTotalScore; + + String referenceNoId; + + String entryModeId; + + String[] txtDesignation; + + String[] txtReservationCategory; + + String[] txtTotalVacancy; + + String[] txtSex; + + String[] txtMinimumAge; + + String[] txtMaximumAge; + + String[] txtAmount; + + String[] txtAdvAttrDtl; + + String selectAll; + + String[] txtApplicantCategory; + + String[] txtMaxAgeOnDate; + + ArrayList arrHrmAdvMtn = new ArrayList(); + + String[] txtDesignationId; + + String[] txtApplicantCategoryId; + + String[] txtReservationCategoryId; + + String disabreferenceNo; + + String disabentryMode; + + String disabreferenceDate; + + String disabmediaType; + + String disabmediaName; + + String disablastDate; + + String disabminWrittenScoreA; + + String disabminWrittenScoreB; + + String disabminInterviewScore; + + String disabdescription; + + String disabminTotalScore; + + String disabtxtForPosition; + + String disabtxtDesignation; + + String disabtxtReservationCategory; + + String disabtxtTotalVacancy; + + String disabtxtSex; + + String disabtxtSalaryBasis; + + String disabtxtScale; + + String disabtxtFromBasic; + + String disabtxtToBasic; + + String disabtxtDiscipline; + + String disabtxtMinimumAge; + + String disabtxtMaximumAge; + + String disabtxtMxAgeOnDate; + + String disabtxtAmount; + + String disabtxtAdvAttrDtl; + + String disabselectAll; + + String disabtxtApplicantCategory; + + String disabtxtMaxAgeOnDate; + + String butReferenceNo; + + String disabbutReferenceNo; + + String butEntryMode; + + String disabbutEntryMode; + + String butReferenceDate; + + String disabbutReferenceDate; + + String butLastDate; + + String disabbutLastDate; + + private String minInterviewScore2; + + private String disabminInterviewScore2; + + private String minInterviewScore3; + + private String disabminInterviewScore3; + + private String venue; + + private String disabvenue; + + private String date; + + private String butDateWalkin; + + private String disabbutDateWalkin; + + private String time; + + private String disabtime; + + private String[] txtGrade; + + private String[] txtGradeId; + + private String[] txtGradeCode; + + private String[] txtLevel; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getReferenceDate() { + return this.referenceDate; + } + + public void setReferenceDate(String newReferenceDate) { + this.referenceDate = newReferenceDate; + } + + public String getMediaType() { + return this.mediaType; + } + + public void setMediaType(String newMediaType) { + this.mediaType = newMediaType; + } + + public String getMediaName() { + return this.mediaName; + } + + public void setMediaName(String newMediaName) { + this.mediaName = newMediaName; + } + + public String getLastDate() { + return this.lastDate; + } + + public void setLastDate(String newLastDate) { + this.lastDate = newLastDate; + } + + public String getMinWrittenScoreA() { + return this.minWrittenScoreA; + } + + public void setMinWrittenScoreA(String newMinWrittenScoreA) { + this.minWrittenScoreA = newMinWrittenScoreA; + } + + public String getMinWrittenScoreB() { + return this.minWrittenScoreB; + } + + public void setMinWrittenScoreB(String newMinWrittenScoreB) { + this.minWrittenScoreB = newMinWrittenScoreB; + } + + public String getMinInterviewScore() { + return this.minInterviewScore; + } + + public void setMinInterviewScore(String newMinInterviewScore) { + this.minInterviewScore = newMinInterviewScore; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getMinTotalScore() { + return this.minTotalScore; + } + + public void setMinTotalScore(String newMinTotalScore) { + this.minTotalScore = newMinTotalScore; + } + + public String[] getTxtDesignation() { + return this.txtDesignation; + } + + public String[] getTxtReservationCategory() { + return this.txtReservationCategory; + } + + public String[] getTxtTotalVacancy() { + return this.txtTotalVacancy; + } + + public String[] getTxtSex() { + return this.txtSex; + } + + public String[] getTxtMinimumAge() { + return this.txtMinimumAge; + } + + public String[] getTxtMaximumAge() { + return this.txtMaximumAge; + } + + public String[] getTxtAmount() { + return this.txtAmount; + } + + public String[] getTxtAdvAttrDtl() { + return this.txtAdvAttrDtl; + } + + public void setTxtAdvAttrDtl(String[] newTxtAdvAttrDtl) { + this.txtAdvAttrDtl = newTxtAdvAttrDtl; + } + + public void setTxtAmount(String[] newTxtAmount) { + this.txtAmount = newTxtAmount; + } + + public void setTxtDesignation(String[] newTxtDesignation) { + this.txtDesignation = newTxtDesignation; + } + + public void setTxtMaximumAge(String[] newTxtMaximumAge) { + this.txtMaximumAge = newTxtMaximumAge; + } + + public void setTxtMinimumAge(String[] newTxtMinimumAge) { + this.txtMinimumAge = newTxtMinimumAge; + } + + public void setTxtReservationCategory(String[] newTxtReservationCategory) { + this.txtReservationCategory = newTxtReservationCategory; + } + + public void setTxtSex(String[] newTxtSex) { + this.txtSex = newTxtSex; + } + + public void setTxtTotalVacancy(String[] newTxtTotalVacancy) { + this.txtTotalVacancy = newTxtTotalVacancy; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtApplicantCategory() { + return this.txtApplicantCategory; + } + + public void setTxtApplicantCategory(String[] newTxtApplicantCategory) { + this.txtApplicantCategory = newTxtApplicantCategory; + } + + public String[] getTxtMaxAgeOnDate() { + return this.txtMaxAgeOnDate; + } + + public void setTxtMaxAgeOnDate(String[] newTxtMaxAgeOnDate) { + this.txtMaxAgeOnDate = newTxtMaxAgeOnDate; + } + + public String getReferenceNoId() { + return this.referenceNoId; + } + + public void setReferenceNoId(String newReferenceNoId) { + this.referenceNoId = newReferenceNoId; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String[] getTxtDesignationId() { + return this.txtDesignationId; + } + + public void setTxtDesignationId(String[] newTxtDesignationId) { + this.txtDesignationId = newTxtDesignationId; + } + + public String[] getTxtApplicantCategoryId() { + return this.txtApplicantCategoryId; + } + + public void setTxtApplicantCategoryId(String[] newTxtApplicantCategoryId) { + this.txtApplicantCategoryId = newTxtApplicantCategoryId; + } + + public String[] getTxtReservationCategoryId() { + return this.txtReservationCategoryId; + } + + public void setTxtReservationCategoryId(String[] newTxtReservationCategoryId) { + this.txtReservationCategoryId = newTxtReservationCategoryId; + } + + public ArrayList getArrHrmAdvMtn() { + return this.arrHrmAdvMtn; + } + + public void setArrHrmAdvMtn(ArrayList newArrHrmAdvMtn) { + this.arrHrmAdvMtn = newArrHrmAdvMtn; + } + + public String getDisabreferenceNo() { + return this.disabreferenceNo; + } + + public void setDisabreferenceNo(String newDisabreferenceNo) { + this.disabreferenceNo = newDisabreferenceNo; + } + + public String getDisabentryMode() { + return this.disabentryMode; + } + + public void setDisabentryMode(String newDisabentryMode) { + this.disabentryMode = newDisabentryMode; + } + + public String getDisabreferenceDate() { + return this.disabreferenceDate; + } + + public void setDisabreferenceDate(String newDisabreferenceDate) { + this.disabreferenceDate = newDisabreferenceDate; + } + + public String getDisabmediaType() { + return this.disabmediaType; + } + + public void setDisabmediaType(String newDisabmediaType) { + this.disabmediaType = newDisabmediaType; + } + + public String getDisabmediaName() { + return this.disabmediaName; + } + + public void setDisabmediaName(String newDisabmediaName) { + this.disabmediaName = newDisabmediaName; + } + + public String getDisablastDate() { + return this.disablastDate; + } + + public void setDisablastDate(String newDisablastDate) { + this.disablastDate = newDisablastDate; + } + + public String getDisabminWrittenScoreA() { + return this.disabminWrittenScoreA; + } + + public void setDisabminWrittenScoreA(String newDisabminWrittenScoreA) { + this.disabminWrittenScoreA = newDisabminWrittenScoreA; + } + + public String getDisabminWrittenScoreB() { + return this.disabminWrittenScoreB; + } + + public void setDisabminWrittenScoreB(String newDisabminWrittenScoreB) { + this.disabminWrittenScoreB = newDisabminWrittenScoreB; + } + + public String getDisabminInterviewScore() { + return this.disabminInterviewScore; + } + + public void setDisabminInterviewScore(String newDisabminInterviewScore) { + this.disabminInterviewScore = newDisabminInterviewScore; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabminTotalScore() { + return this.disabminTotalScore; + } + + public void setDisabminTotalScore(String newDisabminTotalScore) { + this.disabminTotalScore = newDisabminTotalScore; + } + + public String getDisabtxtForPosition() { + return this.disabtxtForPosition; + } + + public void setDisabtxtForPosition(String newDisabtxtForPosition) { + this.disabtxtForPosition = newDisabtxtForPosition; + } + + public String getDisabtxtDesignation() { + return this.disabtxtDesignation; + } + + public void setDisabtxtDesignation(String newDisabtxtDesignation) { + this.disabtxtDesignation = newDisabtxtDesignation; + } + + public String getDisabtxtReservationCategory() { + return this.disabtxtReservationCategory; + } + + public void setDisabtxtReservationCategory(String newDisabtxtReservationCategory) { + this.disabtxtReservationCategory = newDisabtxtReservationCategory; + } + + public String getDisabtxtTotalVacancy() { + return this.disabtxtTotalVacancy; + } + + public void setDisabtxtTotalVacancy(String newDisabtxtTotalVacancy) { + this.disabtxtTotalVacancy = newDisabtxtTotalVacancy; + } + + public String getDisabtxtSex() { + return this.disabtxtSex; + } + + public void setDisabtxtSex(String newDisabtxtSex) { + this.disabtxtSex = newDisabtxtSex; + } + + public String getDisabtxtSalaryBasis() { + return this.disabtxtSalaryBasis; + } + + public void setDisabtxtSalaryBasis(String newDisabtxtSalaryBasis) { + this.disabtxtSalaryBasis = newDisabtxtSalaryBasis; + } + + public String getDisabtxtScale() { + return this.disabtxtScale; + } + + public void setDisabtxtScale(String newDisabtxtScale) { + this.disabtxtScale = newDisabtxtScale; + } + + public String getDisabtxtFromBasic() { + return this.disabtxtFromBasic; + } + + public void setDisabtxtFromBasic(String newDisabtxtFromBasic) { + this.disabtxtFromBasic = newDisabtxtFromBasic; + } + + public String getDisabtxtToBasic() { + return this.disabtxtToBasic; + } + + public void setDisabtxtToBasic(String newDisabtxtToBasic) { + this.disabtxtToBasic = newDisabtxtToBasic; + } + + public String getDisabtxtDiscipline() { + return this.disabtxtDiscipline; + } + + public void setDisabtxtDiscipline(String newDisabtxtDiscipline) { + this.disabtxtDiscipline = newDisabtxtDiscipline; + } + + public String getDisabtxtMinimumAge() { + return this.disabtxtMinimumAge; + } + + public void setDisabtxtMinimumAge(String newDisabtxtMinimumAge) { + this.disabtxtMinimumAge = newDisabtxtMinimumAge; + } + + public String getDisabtxtMaximumAge() { + return this.disabtxtMaximumAge; + } + + public void setDisabtxtMaximumAge(String newDisabtxtMaximumAge) { + this.disabtxtMaximumAge = newDisabtxtMaximumAge; + } + + public String getDisabtxtMxAgeOnDate() { + return this.disabtxtMxAgeOnDate; + } + + public void setDisabtxtMxAgeOnDate(String newDisabtxtMxAgeOnDate) { + this.disabtxtMxAgeOnDate = newDisabtxtMxAgeOnDate; + } + + public String getDisabtxtAmount() { + return this.disabtxtAmount; + } + + public void setDisabtxtAmount(String newDisabtxtAmount) { + this.disabtxtAmount = newDisabtxtAmount; + } + + public String getDisabtxtAdvAttrDtl() { + return this.disabtxtAdvAttrDtl; + } + + public void setDisabtxtAdvAttrDtl(String newDisabtxtAdvAttrDtl) { + this.disabtxtAdvAttrDtl = newDisabtxtAdvAttrDtl; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtApplicantCategory() { + return this.disabtxtApplicantCategory; + } + + public void setDisabtxtApplicantCategory(String newDisabtxtApplicantCategory) { + this.disabtxtApplicantCategory = newDisabtxtApplicantCategory; + } + + public String getDisabtxtMaxAgeOnDate() { + return this.disabtxtMaxAgeOnDate; + } + + public void setDisabtxtMaxAgeOnDate(String newDisabtxtMaxAgeOnDate) { + this.disabtxtMaxAgeOnDate = newDisabtxtMaxAgeOnDate; + } + + public String getButReferenceNo() { + return this.butReferenceNo; + } + + public void setButReferenceNo(String newButReferenceNo) { + this.butReferenceNo = newButReferenceNo; + } + + public String getDisabbutReferenceNo() { + return this.disabbutReferenceNo; + } + + public void setDisabbutReferenceNo(String newDisabbutReferenceNo) { + this.disabbutReferenceNo = newDisabbutReferenceNo; + } + + public String getButEntryMode() { + return this.butEntryMode; + } + + public void setButEntryMode(String newButEntryMode) { + this.butEntryMode = newButEntryMode; + } + + public String getDisabbutEntryMode() { + return this.disabbutEntryMode; + } + + public void setDisabbutEntryMode(String newDisabbutEntryMode) { + this.disabbutEntryMode = newDisabbutEntryMode; + } + + public String getButReferenceDate() { + return this.butReferenceDate; + } + + public void setButReferenceDate(String newButReferenceDate) { + this.butReferenceDate = newButReferenceDate; + } + + public String getDisabbutReferenceDate() { + return this.disabbutReferenceDate; + } + + public void setDisabbutReferenceDate(String newDisabbutReferenceDate) { + this.disabbutReferenceDate = newDisabbutReferenceDate; + } + + public String getButLastDate() { + return this.butLastDate; + } + + public void setButLastDate(String newButLastDate) { + this.butLastDate = newButLastDate; + } + + public String getDisabbutLastDate() { + return this.disabbutLastDate; + } + + public void setDisabbutLastDate(String newDisabbutLastDate) { + this.disabbutLastDate = newDisabbutLastDate; + } + + public String getMinInterviewScore2() { + return this.minInterviewScore2; + } + + public void setMinInterviewScore2(String newMinInterviewScore2) { + this.minInterviewScore2 = newMinInterviewScore2; + } + + public String getDisabminInterviewScore2() { + return this.disabminInterviewScore2; + } + + public void setDisabminInterviewScore2(String newDisabminInterviewScore2) { + this.disabminInterviewScore2 = newDisabminInterviewScore2; + } + + public String getMinInterviewScore3() { + return this.minInterviewScore3; + } + + public void setMinInterviewScore3(String newMinInterviewScore3) { + this.minInterviewScore3 = newMinInterviewScore3; + } + + public String getDisabminInterviewScore3() { + return this.disabminInterviewScore3; + } + + public void setDisabminInterviewScore3(String newDisabminInterviewScore3) { + this.disabminInterviewScore3 = newDisabminInterviewScore3; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } + + public String getDisabvenue() { + return this.disabvenue; + } + + public void setDisabvenue(String newDisabvenue) { + this.disabvenue = newDisabvenue; + } + + public String getDate() { + return this.date; + } + + public void setDate(String newDate) { + this.date = newDate; + } + + public String getButDateWalkin() { + return this.butDateWalkin; + } + + public void setButDateWalkin(String newButDateWalkin) { + this.butDateWalkin = newButDateWalkin; + } + + public String getDisabbutDateWalkin() { + return this.disabbutDateWalkin; + } + + public void setDisabbutDateWalkin(String newDisabbutDateWalkin) { + this.disabbutDateWalkin = newDisabbutDateWalkin; + } + + public String getTime() { + return this.time; + } + + public void setTime(String newTime) { + this.time = newTime; + } + + public String getDisabtime() { + return this.disabtime; + } + + public void setDisabtime(String newDisabtime) { + this.disabtime = newDisabtime; + } + + public String[] getTxtGrade() { + return this.txtGrade; + } + + public void setTxtGrade(String[] newTxtGrade) { + this.txtGrade = newTxtGrade; + } + + public String[] getTxtGradeId() { + return this.txtGradeId; + } + + public void setTxtGradeId(String[] newTxtGradeId) { + this.txtGradeId = newTxtGradeId; + } + + public String[] getTxtGradeCode() { + return this.txtGradeCode; + } + + public void setTxtGradeCode(String[] newTxtGradeCode) { + this.txtGradeCode = newTxtGradeCode; + } + + public String[] getTxtLevel() { + return this.txtLevel; + } + + public void setTxtLevel(String[] newTxtLevel) { + this.txtLevel = newTxtLevel; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecApplnMtnForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecApplnMtnForm.java new file mode 100644 index 0000000..e0ca197 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecApplnMtnForm.java @@ -0,0 +1,3000 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.bean.HrmRecApplnMtnAddDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnOtherDtlBean; +import wenrgise.hrms.bean.HrmRecApplnMtnResultDtlBean; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRecApplnMtnForm extends HrmBaseForm { + String referenceNo; + + String applForDesignation; + + String photograph; + + String applicationNo; + + String applicationDate; + + private String applicantFirstName; + + private String applicantMiddleName; + + private String applicantLastName; + + String entryMode; + + private String rollNo; + + String employeeStatus; + + private String[] guardianName; + + private String[] motherTongue; + + private String[] dateOfBirth; + + private String[] nationality; + + private String[] maritalStatus; + + private String[] sex; + + private String[] reservationCategory; + + private String[] appointedFlag; + + private String[] appliedEarlier; + + private String[] handicappedFlag; + + private String[] joinedOrganisation; + + private String[] remarks; + + private String[] mail; + + private String[] nationalityCode; + + private String[] motherToungueCode; + + private String[] motherToungueId; + + private String[] nationalityId; + + private String[] maritalStatusId; + + private String[] reservationCategoryId; + + private String[] passportNo; + + private String[] placeOfIssue; + + private String[] expiryDate; + + private String[] issueDate; + + private String[] chequeNo; + + private String[] submittedAmount; + + private String[] submissionDate; + + private String[] arrestedBefore; + + private String[] imprisonedBefore; + + private String[] finedByCourt; + + private String[] prosecutedBefore; + + private String[] presAddress; + + private String[] presCountry; + + private String[] presState; + + private String[] presCity; + + private String[] presPin; + + private String[] presPhone; + + private String[] permAddress; + + private String[] permCountry; + + private String[] permState; + + private String[] permCity; + + private String[] permPin; + + private String[] permPhone; + + private String[] permStateId; + + private String[] presStateId; + + private String[] presCountryId; + + private String[] permCountryId; + + private String[] testCenter; + + private String[] writtenScoreA; + + private String[] writtenScoreB; + + private String[] interviewScore; + + private String[] failedWrittenA; + + private String[] failedWrittenB; + + private String[] qualInterview; + + private String[] medicalCleared; + + private String[] disqualified; + + private String[] testCentreId; + + String selectAll; + + String[] txtInstCode; + + String[] txtQualification; + + String[] txtSplSubj; + + String[] txtAdmissionYear; + + String[] txtPassYear; + + String[] txtPercentageMarks; + + String[] txtClass; + + String[] txtSplRemarks; + + private String[] instId; + + private String[] qualificationId; + + String[] txtLanguageCode; + + String[] txtKnowledgeLevel; + + private String[] knowledgeId; + + private String[] langId; + + String[] txtPeriodFrom; + + String[] txtPeriodTo; + + String[] txtOrganisation; + + String[] txtLocation; + + String[] txtDesignationCode; + + String[] txtSkillCode; + + String[] txtWorkDesc; + + String[] txtBasic; + + String[] txtDearnessAllowance; + + String[] txtOtherAllowances; + + private String[] txtSkillDesc; + + private String[] txtDesig; + + private String[] skillId; + + private String[] desigId; + + String disabreferenceNo; + + String disabapplForDesignation; + + String disabphotograph; + + String disabapplicationNo; + + String disabapplicationDate; + + private String disabapplicantFirstName; + + private String disabapplicantMiddleName; + + private String disabapplicantLastName; + + String disabentryMode; + + String disabrollNo; + + String disabemployeeStatus; + + String disabguardianName; + + String disabmotherTongue; + + String disabdateOfBirth; + + String disabnationality; + + private String disabmaritalStatusDesc; + + String disabsex; + + String disabreservationCategory; + + String disabappointedFlag; + + String disabappliedEarlier; + + String disabhandicappedFlag; + + String disabjoinedOrganisation; + + String disabremarks; + + String disabpassportNo; + + String disabplaceOfIssue; + + String disabexpiryDate; + + String disabissueDate; + + String disabchequeNo; + + String disabsubmittedAmount; + + String disabsubmissionDate; + + String disabarrestedBefore; + + String disabimprisonedBefore; + + String disabfinedByCourt; + + String disabprosecutedBefore; + + String disabpresAddress; + + String disabpresCountry; + + String disabpresState; + + String disabpresCity; + + String disabpresPin; + + String disabpresPhone; + + String disabpermAddress; + + String disabpermCountry; + + String disabpermState; + + String disabpermCity; + + String disabpermPin; + + String disabpermPhone; + + String disabtestCenter; + + String disabwrittenScoreA; + + String disabwrittenScoreB; + + String disabinterviewScore; + + String disabfailedWrittenA; + + String disabfailedWrittenB; + + String disabqualInterview; + + String disabmedicalCleared; + + String disabdisqualified; + + String disabselectAll; + + private String disabtxtInstCode; + + private String disabtxtQualification; + + private String disabtxtSplSubj; + + private String disabtxtAdmissionYear; + + private String disabtxtPassYear; + + private String disabtxtPercentageMarks; + + private String disabtxtClass; + + private String disabtxtSplRemarks; + + private String disabtxtLanguageCode; + + private String disabtxtKnowledgeLevel; + + private String disabtxtPeriodFrom; + + private String disabtxtPeriodTo; + + private String disabtxtOrganisation; + + private String disabtxtLocation; + + private String disabtxtDesignationCode; + + private String disabtxtSkillCode; + + private String disabtxtWorkDesc; + + private String disabtxtBasic; + + private String disabtxtDearnessAllowance; + + private String disabtxtOtherAllowances; + + private String picturePath; + + private String butReferenceNo; + + private String disabbutReferenceNo; + + private String butApplForDesignation; + + private String disabbutApplForDesignation; + + private String butApplicationNo; + + private String disabbutApplicationNo; + + private String butApplicationDate; + + private String disabbutApplicationDate; + + private ArrayList arylstHrmRecApplnMtnPerDtl = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnResultDtl = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnOtherDtl = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnAddDtl = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnExpDtl = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnEduDtl = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnLangDtl = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnRef = new ArrayList(); + + private ArrayList arylstHrmRecApplnMtnTrngDtls = new ArrayList(); + + private String applnNoId; + + private String referenceId; + + private String butMotherTongue; + + private String disabbutMotherTongue; + + private String butDateOfBirth; + + private String disabbutDateOfBirth; + + private String butNationality; + + private String disabbutNationality; + + private String butMaritalStatus; + + private String disabbutMaritalStatus; + + private String butReservationCategory; + + private String disabbutReservationCategory; + + private String butPermCountry; + + private String disabbutPermCountry; + + private String butPermState; + + private String disabbutPermState; + + private String butPresCountry; + + private String disabbutPresCountry; + + private String butPresState; + + private String disabbutPresState; + + private String butTestCentre; + + private String disabbutTestCentre; + + private String butExpiryDate; + + private String disabbutExpiryDate; + + private String butIssueDate; + + private String disabbutIssueDate; + + private String butSubmissionDate; + + private String disabbutSubmissionDate; + + private String butDesigCode; + + private String disabbutDesigCode; + + private String disabbutSkillCode; + + private String disabbutLangCode; + + private String disabbutKnowledge; + + private String disabbutInstCode; + + private String disabbutQualCode; + + private String designationId; + + private String resvHdrId; + + private String resvHdrName; + + private String[] txtMajorSub; + + private String[] txtSpeecialCourses; + + private String[] txtSpeecialisation; + + private String[] txtOtherProfQuali; + + private String[] txtQualificationCode; + + private String[] txtDA; + + private String[] txtBonus; + + private String[] txtIncentives; + + private String[] txtConv; + + private String[] txtHRA; + + private String[] txtLeavingSal; + + private String[] txtStartingSal; + + private String[] txtNoPersonSupervised; + + private String[] txtReportTo; + + private String[] txtWorkExp; + + private String[] txtPosition; + + private String[] txtPhone; + + private String[] txtAddress; + + private String[] txtName; + + private String[] txtSubject; + + private String[] txtCourse; + + private String[] txtInstitute; + + private String[] txtToDate; + + private String[] txtFromDate; + + private String butTxtFromDate; + + private String butTxtToDate; + + private String applForGrade; + + private String[] placeOfBirth; + + private String disabplaceOfBirth; + + private String[] maritalStatusDesc; + + private String[] relatedEmpName; + + private String[] relatedToEmp; + + private String butRelatedEmp; + + private String disabbutRelatedEmp; + + private String disabrelatedToEmp; + + private String[] relatedEmpId; + + private String[] religion; + + private String[] religionId; + + private String[] healthRecord; + + private String disabhealthRecord; + + private String butReligion; + + private String disabbutReligion; + + private String[] bloodGroup; + + private String disabbloodGroup; + + private String[] prevEmpFlag; + + private String disabprevEmpFlag; + + private String[] prevEmpDtls; + + private String disabprevEmpDtls; + + private String[] hobbies; + + private String disabhobbies; + + private String[] grossExpected; + + private String disabgrossExpected; + + private String[] addlInfo; + + private String disabaddlInfo; + + private String[] reasons; + + private String disabreasons; + + private String[] qualInterview2; + + private String disabqualInterview2; + + private String[] qualInterview3; + + private String disabqualInterview3; + + private String[] interviewScore2; + + private String[] interviewScore3; + + private String disabinterviewScore2; + + private String disabinterviewScore3; + + private String[] rating; + + private String disabrating; + + private String disabmail; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getPhotograph() { + return this.photograph; + } + + public void setPhotograph(String newPhotograph) { + this.photograph = newPhotograph; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getApplicationDate() { + return this.applicationDate; + } + + public void setApplicationDate(String newApplicationDate) { + this.applicationDate = newApplicationDate; + } + + public String getApplicantFirstName() { + return this.applicantFirstName; + } + + public void setApplicantFirstName(String newApplicantFirstName) { + this.applicantFirstName = newApplicantFirstName; + } + + public String getApplicantMiddleName() { + return this.applicantMiddleName; + } + + public void setApplicantMiddleName(String newApplicantMiddleName) { + this.applicantMiddleName = newApplicantMiddleName; + } + + public String getApplicantLastName() { + return this.applicantLastName; + } + + public void setApplicantLastName(String newApplicantLastName) { + this.applicantLastName = newApplicantLastName; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRollNo() { + return this.rollNo; + } + + public void setRollNo(String newRollNo) { + this.rollNo = newRollNo; + } + + public String getEmployeeStatus() { + return this.employeeStatus; + } + + public void setEmployeeStatus(String newEmployeeStatus) { + this.employeeStatus = newEmployeeStatus; + } + + public String[] getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String[] newGuardianName) { + this.guardianName = newGuardianName; + } + + public String[] getMotherTongue() { + return this.motherTongue; + } + + public void setMotherTongue(String[] newMotherTongue) { + this.motherTongue = newMotherTongue; + } + + public String[] getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String[] newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String[] getNationality() { + return this.nationality; + } + + public void setNationality(String[] newNationality) { + this.nationality = newNationality; + } + + public String[] getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String[] newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String[] getSex() { + return this.sex; + } + + public void setSex(String[] newSex) { + this.sex = newSex; + } + + public String[] getReservationCategory() { + return this.reservationCategory; + } + + public void setReservationCategory(String[] newReservationCategory) { + this.reservationCategory = newReservationCategory; + } + + public String[] getAppointedFlag() { + return this.appointedFlag; + } + + public void setAppointedFlag(String[] newAppointedFlag) { + this.appointedFlag = newAppointedFlag; + } + + public String[] getAppliedEarlier() { + return this.appliedEarlier; + } + + public void setAppliedEarlier(String[] newAppliedEarlier) { + this.appliedEarlier = newAppliedEarlier; + } + + public String[] getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String[] newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String[] getJoinedOrganisation() { + return this.joinedOrganisation; + } + + public void setJoinedOrganisation(String[] newJoinedOrganisation) { + this.joinedOrganisation = newJoinedOrganisation; + } + + public String[] getRemarks() { + return this.remarks; + } + + public void setRemarks(String[] newRemarks) { + this.remarks = newRemarks; + } + + public String[] getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String[] newPassportNo) { + this.passportNo = newPassportNo; + } + + public String[] getPlaceOfIssue() { + return this.placeOfIssue; + } + + public void setPlaceOfIssue(String[] newPlaceOfIssue) { + this.placeOfIssue = newPlaceOfIssue; + } + + public String[] getExpiryDate() { + return this.expiryDate; + } + + public void setExpiryDate(String[] newExpiryDate) { + this.expiryDate = newExpiryDate; + } + + public String[] getIssueDate() { + return this.issueDate; + } + + public void setIssueDate(String[] newIssueDate) { + this.issueDate = newIssueDate; + } + + public String[] getChequeNo() { + return this.chequeNo; + } + + public void setChequeNo(String[] newChequeNo) { + this.chequeNo = newChequeNo; + } + + public String[] getSubmittedAmount() { + return this.submittedAmount; + } + + public void setSubmittedAmount(String[] newSubmittedAmount) { + this.submittedAmount = newSubmittedAmount; + } + + public String[] getSubmissionDate() { + return this.submissionDate; + } + + public void setSubmissionDate(String[] newSubmissionDate) { + this.submissionDate = newSubmissionDate; + } + + public String[] getArrestedBefore() { + return this.arrestedBefore; + } + + public void setArrestedBefore(String[] newArrestedBefore) { + this.arrestedBefore = newArrestedBefore; + } + + public String[] getImprisonedBefore() { + return this.imprisonedBefore; + } + + public void setImprisonedBefore(String[] newImprisonedBefore) { + this.imprisonedBefore = newImprisonedBefore; + } + + public String[] getFinedByCourt() { + return this.finedByCourt; + } + + public void setFinedByCourt(String[] newFinedByCourt) { + this.finedByCourt = newFinedByCourt; + } + + public String[] getProsecutedBefore() { + return this.prosecutedBefore; + } + + public void setProsecutedBefore(String[] newProsecutedBefore) { + this.prosecutedBefore = newProsecutedBefore; + } + + public String[] getPresAddress() { + return this.presAddress; + } + + public void setPresAddress(String[] newPresAddress) { + this.presAddress = newPresAddress; + } + + public String[] getPresCountry() { + return this.presCountry; + } + + public void setPresCountry(String[] newPresCountry) { + this.presCountry = newPresCountry; + } + + public String[] getPresState() { + return this.presState; + } + + public void setPresState(String[] newPresState) { + this.presState = newPresState; + } + + public String[] getPresCity() { + return this.presCity; + } + + public void setPresCity(String[] newPresCity) { + this.presCity = newPresCity; + } + + public String[] getPresPin() { + return this.presPin; + } + + public void setPresPin(String[] newPresPin) { + this.presPin = newPresPin; + } + + public String[] getPresPhone() { + return this.presPhone; + } + + public void setPresPhone(String[] newPresPhone) { + this.presPhone = newPresPhone; + } + + public String[] getPermAddress() { + return this.permAddress; + } + + public void setPermAddress(String[] newPermAddress) { + this.permAddress = newPermAddress; + } + + public String[] getPermCountry() { + return this.permCountry; + } + + public void setPermCountry(String[] newPermCountry) { + this.permCountry = newPermCountry; + } + + public String[] getPermState() { + return this.permState; + } + + public void setPermState(String[] newPermState) { + this.permState = newPermState; + } + + public String[] getPermCity() { + return this.permCity; + } + + public void setPermCity(String[] newPermCity) { + this.permCity = newPermCity; + } + + public String[] getPermPin() { + return this.permPin; + } + + public void setPermPin(String[] newPermPin) { + this.permPin = newPermPin; + } + + public String[] getPermPhone() { + return this.permPhone; + } + + public void setPermPhone(String[] newPermPhone) { + this.permPhone = newPermPhone; + } + + public String[] getTestCenter() { + return this.testCenter; + } + + public void setTestCenter(String[] newTestCenter) { + this.testCenter = newTestCenter; + } + + public String[] getWrittenScoreA() { + return this.writtenScoreA; + } + + public void setWrittenScoreA(String[] newWrittenScoreA) { + this.writtenScoreA = newWrittenScoreA; + } + + public String[] getWrittenScoreB() { + return this.writtenScoreB; + } + + public void setWrittenScoreB(String[] newWrittenScoreB) { + this.writtenScoreB = newWrittenScoreB; + } + + public String[] getInterviewScore() { + return this.interviewScore; + } + + public void setInterviewScore(String[] newInterviewScore) { + this.interviewScore = newInterviewScore; + } + + public String[] getFailedWrittenA() { + return this.failedWrittenA; + } + + public void setFailedWrittenA(String[] newFailedWrittenA) { + this.failedWrittenA = newFailedWrittenA; + } + + public String[] getFailedWrittenB() { + return this.failedWrittenB; + } + + public void setFailedWrittenB(String[] newFailedWrittenB) { + this.failedWrittenB = newFailedWrittenB; + } + + public String[] getMedicalCleared() { + return this.medicalCleared; + } + + public void setMedicalCleared(String[] newMedicalCleared) { + this.medicalCleared = newMedicalCleared; + } + + public String[] getDisqualified() { + return this.disqualified; + } + + public void setDisqualified(String[] newDisqualified) { + this.disqualified = newDisqualified; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtInstCode() { + return this.txtInstCode; + } + + public void setTxtInstCode(String[] newTxtInstCode) { + this.txtInstCode = newTxtInstCode; + } + + public String[] getTxtQualification() { + return this.txtQualification; + } + + public void setTxtQualification(String[] newTxtQualification) { + this.txtQualification = newTxtQualification; + } + + public String[] getTxtSplSubj() { + return this.txtSplSubj; + } + + public void setTxtSplSubj(String[] newTxtSplSubj) { + this.txtSplSubj = newTxtSplSubj; + } + + public String[] getTxtAdmissionYear() { + return this.txtAdmissionYear; + } + + public void setTxtAdmissionYear(String[] newTxtAdmissionYear) { + this.txtAdmissionYear = newTxtAdmissionYear; + } + + public String[] getTxtPassYear() { + return this.txtPassYear; + } + + public void setTxtPassYear(String[] newTxtPassYear) { + this.txtPassYear = newTxtPassYear; + } + + public String[] getTxtPercentageMarks() { + return this.txtPercentageMarks; + } + + public void setTxtPercentageMarks(String[] newTxtPercentageMarks) { + this.txtPercentageMarks = newTxtPercentageMarks; + } + + public String[] getTxtClass() { + return this.txtClass; + } + + public void setTxtClass(String[] newTxtClass) { + this.txtClass = newTxtClass; + } + + public String[] getTxtSplRemarks() { + return this.txtSplRemarks; + } + + public void setTxtSplRemarks(String[] newTxtSplRemarks) { + this.txtSplRemarks = newTxtSplRemarks; + } + + public String[] getTxtLanguageCode() { + return this.txtLanguageCode; + } + + public void setTxtLanguageCode(String[] newTxtLanguageCode) { + this.txtLanguageCode = newTxtLanguageCode; + } + + public String[] getTxtKnowledgeLevel() { + return this.txtKnowledgeLevel; + } + + public void setTxtKnowledgeLevel(String[] newTxtKnowledgeLevel) { + this.txtKnowledgeLevel = newTxtKnowledgeLevel; + } + + public String[] getTxtPeriodFrom() { + return this.txtPeriodFrom; + } + + public void setTxtPeriodFrom(String[] newTxtPeriodFrom) { + this.txtPeriodFrom = newTxtPeriodFrom; + } + + public String[] getTxtPeriodTo() { + return this.txtPeriodTo; + } + + public void setTxtPeriodTo(String[] newTxtPeriodTo) { + this.txtPeriodTo = newTxtPeriodTo; + } + + public String[] getTxtOrganisation() { + return this.txtOrganisation; + } + + public void setTxtOrganisation(String[] newTxtOrganisation) { + this.txtOrganisation = newTxtOrganisation; + } + + public String[] getTxtLocation() { + return this.txtLocation; + } + + public void setTxtLocation(String[] newTxtLocation) { + this.txtLocation = newTxtLocation; + } + + public String[] getTxtDesignationCode() { + return this.txtDesignationCode; + } + + public void setTxtDesignationCode(String[] newTxtDesignationCode) { + this.txtDesignationCode = newTxtDesignationCode; + } + + public String[] getTxtSkillCode() { + return this.txtSkillCode; + } + + public void setTxtSkillCode(String[] newTxtSkillCode) { + this.txtSkillCode = newTxtSkillCode; + } + + public String[] getTxtWorkDesc() { + return this.txtWorkDesc; + } + + public void setTxtWorkDesc(String[] newTxtWorkDesc) { + this.txtWorkDesc = newTxtWorkDesc; + } + + public String[] getTxtBasic() { + return this.txtBasic; + } + + public void setTxtBasic(String[] newTxtBasic) { + this.txtBasic = newTxtBasic; + } + + public String[] getTxtDearnessAllowance() { + return this.txtDearnessAllowance; + } + + public void setTxtDearnessAllowance(String[] newTxtDearnessAllowance) { + this.txtDearnessAllowance = newTxtDearnessAllowance; + } + + public String[] getTxtOtherAllowances() { + return this.txtOtherAllowances; + } + + public void setTxtOtherAllowances(String[] newTxtOtherAllowances) { + this.txtOtherAllowances = newTxtOtherAllowances; + } + + public String getDisabreferenceNo() { + return this.disabreferenceNo; + } + + public void setDisabreferenceNo(String newDisabreferenceNo) { + this.disabreferenceNo = newDisabreferenceNo; + } + + public String getDisabapplForDesignation() { + return this.disabapplForDesignation; + } + + public void setDisabapplForDesignation(String newDisabapplForDesignation) { + this.disabapplForDesignation = newDisabapplForDesignation; + } + + public String getDisabphotograph() { + return this.disabphotograph; + } + + public void setDisabphotograph(String newDisabphotograph) { + this.disabphotograph = newDisabphotograph; + } + + public String getDisabapplicationNo() { + return this.disabapplicationNo; + } + + public void setDisabapplicationNo(String newDisabapplicationNo) { + this.disabapplicationNo = newDisabapplicationNo; + } + + public String getDisabapplicationDate() { + return this.disabapplicationDate; + } + + public void setDisabapplicationDate(String newDisabapplicationDate) { + this.disabapplicationDate = newDisabapplicationDate; + } + + public String getDisabapplicantFirstName() { + return this.disabapplicantFirstName; + } + + public void setDisabapplicantFirstName(String newDisabapplicantFirstName) { + this.disabapplicantFirstName = newDisabapplicantFirstName; + } + + public String getDisabapplicantMiddleName() { + return this.disabapplicantMiddleName; + } + + public void setDisabapplicantMiddleName(String newDisabapplicantMiddleName) { + this.disabapplicantMiddleName = newDisabapplicantMiddleName; + } + + public String getDisabapplicantLastName() { + return this.disabapplicantLastName; + } + + public void setDisabapplicantLastName(String newDisabapplicantLastName) { + this.disabapplicantLastName = newDisabapplicantLastName; + } + + public String getDisabentryMode() { + return this.disabentryMode; + } + + public void setDisabentryMode(String newDisabentryMode) { + this.disabentryMode = newDisabentryMode; + } + + public String getDisabrollNo() { + return this.disabrollNo; + } + + public void setDisabrollNo(String newDisabrollNo) { + this.disabrollNo = newDisabrollNo; + } + + public String getDisabemployeeStatus() { + return this.disabemployeeStatus; + } + + public void setDisabemployeeStatus(String newDisabemployeeStatus) { + this.disabemployeeStatus = newDisabemployeeStatus; + } + + public String getDisabguardianName() { + return this.disabguardianName; + } + + public void setDisabguardianName(String newDisabguardianName) { + this.disabguardianName = newDisabguardianName; + } + + public String getDisabmotherTongue() { + return this.disabmotherTongue; + } + + public void setDisabmotherTongue(String newDisabmotherTongue) { + this.disabmotherTongue = newDisabmotherTongue; + } + + public String getDisabdateOfBirth() { + return this.disabdateOfBirth; + } + + public void setDisabdateOfBirth(String newDisabdateOfBirth) { + this.disabdateOfBirth = newDisabdateOfBirth; + } + + public String getDisabnationality() { + return this.disabnationality; + } + + public void setDisabnationality(String newDisabnationality) { + this.disabnationality = newDisabnationality; + } + + public String getDisabmaritalStatusDesc() { + return this.disabmaritalStatusDesc; + } + + public void setDisabmaritalStatusDesc(String newDisabmaritalStatusDesc) { + this.disabmaritalStatusDesc = newDisabmaritalStatusDesc; + } + + public String getDisabsex() { + return this.disabsex; + } + + public void setDisabsex(String newDisabsex) { + this.disabsex = newDisabsex; + } + + public String getDisabreservationCategory() { + return this.disabreservationCategory; + } + + public void setDisabreservationCategory(String newDisabreservationCategory) { + this.disabreservationCategory = newDisabreservationCategory; + } + + public String getDisabappointedFlag() { + return this.disabappointedFlag; + } + + public void setDisabappointedFlag(String newDisabappointedFlag) { + this.disabappointedFlag = newDisabappointedFlag; + } + + public String getDisabappliedEarlier() { + return this.disabappliedEarlier; + } + + public void setDisabappliedEarlier(String newDisabappliedEarlier) { + this.disabappliedEarlier = newDisabappliedEarlier; + } + + public String getDisabhandicappedFlag() { + return this.disabhandicappedFlag; + } + + public void setDisabhandicappedFlag(String newDisabhandicappedFlag) { + this.disabhandicappedFlag = newDisabhandicappedFlag; + } + + public String getDisabjoinedOrganisation() { + return this.disabjoinedOrganisation; + } + + public void setDisabjoinedOrganisation(String newDisabjoinedOrganisation) { + this.disabjoinedOrganisation = newDisabjoinedOrganisation; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getDisabpassportNo() { + return this.disabpassportNo; + } + + public void setDisabpassportNo(String newDisabpassportNo) { + this.disabpassportNo = newDisabpassportNo; + } + + public String getDisabplaceOfIssue() { + return this.disabplaceOfIssue; + } + + public void setDisabplaceOfIssue(String newDisabplaceOfIssue) { + this.disabplaceOfIssue = newDisabplaceOfIssue; + } + + public String getDisabexpiryDate() { + return this.disabexpiryDate; + } + + public void setDisabexpiryDate(String newDisabexpiryDate) { + this.disabexpiryDate = newDisabexpiryDate; + } + + public String getDisabissueDate() { + return this.disabissueDate; + } + + public void setDisabissueDate(String newDisabissueDate) { + this.disabissueDate = newDisabissueDate; + } + + public String getDisabchequeNo() { + return this.disabchequeNo; + } + + public void setDisabchequeNo(String newDisabchequeNo) { + this.disabchequeNo = newDisabchequeNo; + } + + public String getDisabsubmittedAmount() { + return this.disabsubmittedAmount; + } + + public void setDisabsubmittedAmount(String newDisabsubmittedAmount) { + this.disabsubmittedAmount = newDisabsubmittedAmount; + } + + public String getDisabsubmissionDate() { + return this.disabsubmissionDate; + } + + public void setDisabsubmissionDate(String newDisabsubmissionDate) { + this.disabsubmissionDate = newDisabsubmissionDate; + } + + public String getDisabarrestedBefore() { + return this.disabarrestedBefore; + } + + public void setDisabarrestedBefore(String newDisabarrestedBefore) { + this.disabarrestedBefore = newDisabarrestedBefore; + } + + public String getDisabimprisonedBefore() { + return this.disabimprisonedBefore; + } + + public void setDisabimprisonedBefore(String newDisabimprisonedBefore) { + this.disabimprisonedBefore = newDisabimprisonedBefore; + } + + public String getDisabfinedByCourt() { + return this.disabfinedByCourt; + } + + public void setDisabfinedByCourt(String newDisabfinedByCourt) { + this.disabfinedByCourt = newDisabfinedByCourt; + } + + public String getDisabprosecutedBefore() { + return this.disabprosecutedBefore; + } + + public void setDisabprosecutedBefore(String newDisabprosecutedBefore) { + this.disabprosecutedBefore = newDisabprosecutedBefore; + } + + public String getDisabpresAddress() { + return this.disabpresAddress; + } + + public void setDisabpresAddress(String newDisabpresAddress) { + this.disabpresAddress = newDisabpresAddress; + } + + public String getDisabpresCountry() { + return this.disabpresCountry; + } + + public void setDisabpresCountry(String newDisabpresCountry) { + this.disabpresCountry = newDisabpresCountry; + } + + public String getDisabpresState() { + return this.disabpresState; + } + + public void setDisabpresState(String newDisabpresState) { + this.disabpresState = newDisabpresState; + } + + public String getDisabpresCity() { + return this.disabpresCity; + } + + public void setDisabpresCity(String newDisabpresCity) { + this.disabpresCity = newDisabpresCity; + } + + public String getDisabpresPin() { + return this.disabpresPin; + } + + public void setDisabpresPin(String newDisabpresPin) { + this.disabpresPin = newDisabpresPin; + } + + public String getDisabpresPhone() { + return this.disabpresPhone; + } + + public void setDisabpresPhone(String newDisabpresPhone) { + this.disabpresPhone = newDisabpresPhone; + } + + public String getDisabpermAddress() { + return this.disabpermAddress; + } + + public void setDisabpermAddress(String newDisabpermAddress) { + this.disabpermAddress = newDisabpermAddress; + } + + public String getDisabpermCountry() { + return this.disabpermCountry; + } + + public void setDisabpermCountry(String newDisabpermCountry) { + this.disabpermCountry = newDisabpermCountry; + } + + public String getDisabpermState() { + return this.disabpermState; + } + + public void setDisabpermState(String newDisabpermState) { + this.disabpermState = newDisabpermState; + } + + public String getDisabpermCity() { + return this.disabpermCity; + } + + public void setDisabpermCity(String newDisabpermCity) { + this.disabpermCity = newDisabpermCity; + } + + public String getDisabpermPin() { + return this.disabpermPin; + } + + public void setDisabpermPin(String newDisabpermPin) { + this.disabpermPin = newDisabpermPin; + } + + public String getDisabpermPhone() { + return this.disabpermPhone; + } + + public void setDisabpermPhone(String newDisabpermPhone) { + this.disabpermPhone = newDisabpermPhone; + } + + public String getDisabtestCenter() { + return this.disabtestCenter; + } + + public void setDisabtestCenter(String newDisabtestCenter) { + this.disabtestCenter = newDisabtestCenter; + } + + public String getDisabwrittenScoreA() { + return this.disabwrittenScoreA; + } + + public void setDisabwrittenScoreA(String newDisabwrittenScoreA) { + this.disabwrittenScoreA = newDisabwrittenScoreA; + } + + public String getDisabwrittenScoreB() { + return this.disabwrittenScoreB; + } + + public void setDisabwrittenScoreB(String newDisabwrittenScoreB) { + this.disabwrittenScoreB = newDisabwrittenScoreB; + } + + public String getDisabinterviewScore() { + return this.disabinterviewScore; + } + + public void setDisabinterviewScore(String newDisabinterviewScore) { + this.disabinterviewScore = newDisabinterviewScore; + } + + public String getDisabfailedWrittenA() { + return this.disabfailedWrittenA; + } + + public void setDisabfailedWrittenA(String newDisabfailedWrittenA) { + this.disabfailedWrittenA = newDisabfailedWrittenA; + } + + public String getDisabfailedWrittenB() { + return this.disabfailedWrittenB; + } + + public void setDisabfailedWrittenB(String newDisabfailedWrittenB) { + this.disabfailedWrittenB = newDisabfailedWrittenB; + } + + public String getDisabmedicalCleared() { + return this.disabmedicalCleared; + } + + public void setDisabmedicalCleared(String newDisabmedicalCleared) { + this.disabmedicalCleared = newDisabmedicalCleared; + } + + public String getDisabdisqualified() { + return this.disabdisqualified; + } + + public void setDisabdisqualified(String newDisabdisqualified) { + this.disabdisqualified = newDisabdisqualified; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtxtInstCode() { + return this.disabtxtInstCode; + } + + public void setDisabtxtInstCode(String newDisabtxtInstCode) { + this.disabtxtInstCode = newDisabtxtInstCode; + } + + public String getDisabtxtQualification() { + return this.disabtxtQualification; + } + + public void setDisabtxtQualification(String newDisabtxtQualification) { + this.disabtxtQualification = newDisabtxtQualification; + } + + public String getDisabtxtSplSubj() { + return this.disabtxtSplSubj; + } + + public void setDisabtxtSplSubj(String newDisabtxtSplSubj) { + this.disabtxtSplSubj = newDisabtxtSplSubj; + } + + public String getDisabtxtAdmissionYear() { + return this.disabtxtAdmissionYear; + } + + public void setDisabtxtAdmissionYear(String newDisabtxtAdmissionYear) { + this.disabtxtAdmissionYear = newDisabtxtAdmissionYear; + } + + public String getDisabtxtPassYear() { + return this.disabtxtPassYear; + } + + public void setDisabtxtPassYear(String newDisabtxtPassYear) { + this.disabtxtPassYear = newDisabtxtPassYear; + } + + public String getDisabtxtPercentageMarks() { + return this.disabtxtPercentageMarks; + } + + public void setDisabtxtPercentageMarks(String newDisabtxtPercentageMarks) { + this.disabtxtPercentageMarks = newDisabtxtPercentageMarks; + } + + public String getDisabtxtClass() { + return this.disabtxtClass; + } + + public void setDisabtxtClass(String newDisabtxtClass) { + this.disabtxtClass = newDisabtxtClass; + } + + public String getDisabtxtSplRemarks() { + return this.disabtxtSplRemarks; + } + + public void setDisabtxtSplRemarks(String newDisabtxtSplRemarks) { + this.disabtxtSplRemarks = newDisabtxtSplRemarks; + } + + public String getDisabtxtLanguageCode() { + return this.disabtxtLanguageCode; + } + + public void setDisabtxtLanguageCode(String newDisabtxtLanguageCode) { + this.disabtxtLanguageCode = newDisabtxtLanguageCode; + } + + public String getDisabtxtKnowledgeLevel() { + return this.disabtxtKnowledgeLevel; + } + + public void setDisabtxtKnowledgeLevel(String newDisabtxtKnowledgeLevel) { + this.disabtxtKnowledgeLevel = newDisabtxtKnowledgeLevel; + } + + public String getDisabtxtPeriodFrom() { + return this.disabtxtPeriodFrom; + } + + public void setDisabtxtPeriodFrom(String newDisabtxtPeriodFrom) { + this.disabtxtPeriodFrom = newDisabtxtPeriodFrom; + } + + public String getDisabtxtPeriodTo() { + return this.disabtxtPeriodTo; + } + + public void setDisabtxtPeriodTo(String newDisabtxtPeriodTo) { + this.disabtxtPeriodTo = newDisabtxtPeriodTo; + } + + public String getDisabtxtOrganisation() { + return this.disabtxtOrganisation; + } + + public void setDisabtxtOrganisation(String newDisabtxtOrganisation) { + this.disabtxtOrganisation = newDisabtxtOrganisation; + } + + public String getDisabtxtLocation() { + return this.disabtxtLocation; + } + + public void setDisabtxtLocation(String newDisabtxtLocation) { + this.disabtxtLocation = newDisabtxtLocation; + } + + public String getDisabtxtDesignationCode() { + return this.disabtxtDesignationCode; + } + + public void setDisabtxtDesignationCode(String newDisabtxtDesignationCode) { + this.disabtxtDesignationCode = newDisabtxtDesignationCode; + } + + public String getDisabtxtSkillCode() { + return this.disabtxtSkillCode; + } + + public void setDisabtxtSkillCode(String newDisabtxtSkillCode) { + this.disabtxtSkillCode = newDisabtxtSkillCode; + } + + public String getDisabtxtWorkDesc() { + return this.disabtxtWorkDesc; + } + + public void setDisabtxtWorkDesc(String newDisabtxtWorkDesc) { + this.disabtxtWorkDesc = newDisabtxtWorkDesc; + } + + public String getDisabtxtBasic() { + return this.disabtxtBasic; + } + + public void setDisabtxtBasic(String newDisabtxtBasic) { + this.disabtxtBasic = newDisabtxtBasic; + } + + public String getDisabtxtDearnessAllowance() { + return this.disabtxtDearnessAllowance; + } + + public void setDisabtxtDearnessAllowance(String newDisabtxtDearnessAllowance) { + this.disabtxtDearnessAllowance = newDisabtxtDearnessAllowance; + } + + public String getDisabtxtOtherAllowances() { + return this.disabtxtOtherAllowances; + } + + public void setDisabtxtOtherAllowances(String newDisabtxtOtherAllowances) { + this.disabtxtOtherAllowances = newDisabtxtOtherAllowances; + } + + public String[] getMotherToungueId() { + return this.motherToungueId; + } + + public void setMotherToungueId(String[] newMotherToungueId) { + this.motherToungueId = newMotherToungueId; + } + + public String[] getNationalityId() { + return this.nationalityId; + } + + public void setNationalityId(String[] newNationalityId) { + this.nationalityId = newNationalityId; + } + + public String[] getMaritalStatusId() { + return this.maritalStatusId; + } + + public void setMaritalStatusId(String[] newMaritalStatusId) { + this.maritalStatusId = newMaritalStatusId; + } + + public String[] getReservationCategoryId() { + return this.reservationCategoryId; + } + + public void setReservationCategoryId(String[] newReservationCategoryId) { + this.reservationCategoryId = newReservationCategoryId; + } + + public String[] getInstId() { + return this.instId; + } + + public void setInstId(String[] newInstId) { + this.instId = newInstId; + } + + public String[] getQualificationId() { + return this.qualificationId; + } + + public void setQualificationId(String[] newQualificationId) { + this.qualificationId = newQualificationId; + } + + public String[] getKnowledgeId() { + return this.knowledgeId; + } + + public void setKnowledgeId(String[] newKnowledgeId) { + this.knowledgeId = newKnowledgeId; + } + + public String[] getLangId() { + return this.langId; + } + + public void setLangId(String[] newLangId) { + this.langId = newLangId; + } + + public String[] getSkillId() { + return this.skillId; + } + + public void setSkillId(String[] newSkillId) { + this.skillId = newSkillId; + } + + public String[] getDesigId() { + return this.desigId; + } + + public void setDesigId(String[] newDesigId) { + this.desigId = newDesigId; + } + + public String[] getTestCentreId() { + return this.testCentreId; + } + + public void setTestCentreId(String[] newTestCentreId) { + this.testCentreId = newTestCentreId; + } + + public String[] getPermStateId() { + return this.permStateId; + } + + public void setPermStateId(String[] newPermStateId) { + this.permStateId = newPermStateId; + } + + public String[] getPresStateId() { + return this.presStateId; + } + + public void setPresStateId(String[] newPresStateId) { + this.presStateId = newPresStateId; + } + + public String[] getPresCountryId() { + return this.presCountryId; + } + + public void setPresCountryId(String[] newPresCountryId) { + this.presCountryId = newPresCountryId; + } + + public String[] getPermCountryId() { + return this.permCountryId; + } + + public void setPermCountryId(String[] newPermCountryId) { + this.permCountryId = newPermCountryId; + } + + public String getPicturePath() { + return this.picturePath; + } + + public void setPicturePath(String newPicturePath) { + this.picturePath = newPicturePath; + } + + public String getButReferenceNo() { + return this.butReferenceNo; + } + + public void setButReferenceNo(String newButReferenceNo) { + this.butReferenceNo = newButReferenceNo; + } + + public String getDisabbutReferenceNo() { + return this.disabbutReferenceNo; + } + + public void setDisabbutReferenceNo(String newDisabbutReferenceNo) { + this.disabbutReferenceNo = newDisabbutReferenceNo; + } + + public String getButApplForDesignation() { + return this.butApplForDesignation; + } + + public void setButApplForDesignation(String newButApplForDesignation) { + this.butApplForDesignation = newButApplForDesignation; + } + + public String getDisabbutApplForDesignation() { + return this.disabbutApplForDesignation; + } + + public void setDisabbutApplForDesignation(String newDisabbutApplForDesignation) { + this.disabbutApplForDesignation = newDisabbutApplForDesignation; + } + + public String getButApplicationNo() { + return this.butApplicationNo; + } + + public void setButApplicationNo(String newButApplicationNo) { + this.butApplicationNo = newButApplicationNo; + } + + public String getDisabbutApplicationNo() { + return this.disabbutApplicationNo; + } + + public void setDisabbutApplicationNo(String newDisabbutApplicationNo) { + this.disabbutApplicationNo = newDisabbutApplicationNo; + } + + public String getButApplicationDate() { + return this.butApplicationDate; + } + + public void setButApplicationDate(String newButApplicationDate) { + this.butApplicationDate = newButApplicationDate; + } + + public String getDisabbutApplicationDate() { + return this.disabbutApplicationDate; + } + + public void setDisabbutApplicationDate(String newDisabbutApplicationDate) { + this.disabbutApplicationDate = newDisabbutApplicationDate; + } + + public HrmRecApplnMtnAddDtlBean getHrmRecApplnMtnAddDtl() { + HrmRecApplnMtnAddDtlBean oApplDtl; + if (this.arylstHrmRecApplnMtnAddDtl.size() != 0) { + oApplDtl = this.arylstHrmRecApplnMtnAddDtl.get(0); + } else { + oApplDtl = new HrmRecApplnMtnAddDtlBean(); + } + return oApplDtl; + } + + public HrmRecApplnMtnResultDtlBean getHrmRecApplnMtnResultDtl() { + HrmRecApplnMtnResultDtlBean oApplDtl; + if (this.arylstHrmRecApplnMtnResultDtl.size() != 0) { + oApplDtl = this.arylstHrmRecApplnMtnResultDtl.get(0); + } else { + oApplDtl = new HrmRecApplnMtnResultDtlBean(); + } + return oApplDtl; + } + + public HrmRecApplnMtnOtherDtlBean getHrmRecApplnMtnOtherDtl() { + HrmRecApplnMtnOtherDtlBean oApplDtl; + if (this.arylstHrmRecApplnMtnOtherDtl.size() != 0) { + oApplDtl = this.arylstHrmRecApplnMtnOtherDtl.get(0); + } else { + oApplDtl = new HrmRecApplnMtnOtherDtlBean(); + } + return oApplDtl; + } + + public ArrayList getArylstHrmRecApplnMtnOtherDtl() { + return this.arylstHrmRecApplnMtnOtherDtl; + } + + public void setArylstHrmRecApplnMtnOtherDtl(ArrayList newArylstHrmRecApplnMtnOtherDtl) { + this.arylstHrmRecApplnMtnOtherDtl = newArylstHrmRecApplnMtnOtherDtl; + } + + public ArrayList getArylstHrmRecApplnMtnAddDtl() { + return this.arylstHrmRecApplnMtnAddDtl; + } + + public void setArylstHrmRecApplnMtnAddDtl(ArrayList newArylstHrmRecApplnMtnAddDtl) { + this.arylstHrmRecApplnMtnAddDtl = newArylstHrmRecApplnMtnAddDtl; + } + + public ArrayList getArylstHrmRecApplnMtnExpDtl() { + return this.arylstHrmRecApplnMtnExpDtl; + } + + public void setArylstHrmRecApplnMtnExpDtl(ArrayList newArylstHrmRecApplnMtnExpDtl) { + this.arylstHrmRecApplnMtnExpDtl = newArylstHrmRecApplnMtnExpDtl; + } + + public ArrayList getArylstHrmRecApplnMtnEduDtl() { + return this.arylstHrmRecApplnMtnEduDtl; + } + + public void setArylstHrmRecApplnMtnEduDtl(ArrayList newArylstHrmRecApplnMtnEduDtl) { + this.arylstHrmRecApplnMtnEduDtl = newArylstHrmRecApplnMtnEduDtl; + } + + public ArrayList getArylstHrmRecApplnMtnLangDtl() { + return this.arylstHrmRecApplnMtnLangDtl; + } + + public void setArylstHrmRecApplnMtnLangDtl(ArrayList newArylstHrmRecApplnMtnLangDtl) { + this.arylstHrmRecApplnMtnLangDtl = newArylstHrmRecApplnMtnLangDtl; + } + + public ArrayList getArylstHrmRecApplnMtnRef() { + return this.arylstHrmRecApplnMtnRef; + } + + public void setArylstHrmRecApplnMtnRef(ArrayList newArylstHrmRecApplnMtnRef) { + this.arylstHrmRecApplnMtnRef = newArylstHrmRecApplnMtnRef; + } + + public ArrayList getArylstHrmRecApplnMtnTrngDtls() { + return this.arylstHrmRecApplnMtnTrngDtls; + } + + public void setArylstHrmRecApplnMtnTrngDtls(ArrayList newArylstHrmRecApplnMtnTrngDtls) { + this.arylstHrmRecApplnMtnTrngDtls = newArylstHrmRecApplnMtnTrngDtls; + } + + public ArrayList getArylstHrmRecApplnMtnPerDtl() { + return this.arylstHrmRecApplnMtnPerDtl; + } + + public void setArylstHrmRecApplnMtnPerDtl(ArrayList newArylstHrmRecApplnMtnPerDtl) { + this.arylstHrmRecApplnMtnPerDtl = newArylstHrmRecApplnMtnPerDtl; + } + + public ArrayList getArylstHrmRecApplnMtnResultDtl() { + return this.arylstHrmRecApplnMtnResultDtl; + } + + public void setArylstHrmRecApplnMtnResultDtl(ArrayList newArylstHrmRecApplnMtnResultDtl) { + this.arylstHrmRecApplnMtnResultDtl = newArylstHrmRecApplnMtnResultDtl; + } + + public String getApplnNoId() { + return this.applnNoId; + } + + public void setApplnNoId(String newApplnNoId) { + this.applnNoId = newApplnNoId; + } + + public String getReferenceId() { + return this.referenceId; + } + + public void setReferenceId(String newReferenceId) { + this.referenceId = newReferenceId; + } + + public String getButMotherTongue() { + return this.butMotherTongue; + } + + public void setButMotherTongue(String newButMotherTongue) { + this.butMotherTongue = newButMotherTongue; + } + + public String getDisabbutMotherTongue() { + return this.disabbutMotherTongue; + } + + public void setDisabbutMotherTongue(String newDisabbutMotherTongue) { + this.disabbutMotherTongue = newDisabbutMotherTongue; + } + + public String getButDateOfBirth() { + return this.butDateOfBirth; + } + + public void setButDateOfBirth(String newButDateOfBirth) { + this.butDateOfBirth = newButDateOfBirth; + } + + public String getDisabbutDateOfBirth() { + return this.disabbutDateOfBirth; + } + + public void setDisabbutDateOfBirth(String newDisabbutDateOfBirth) { + this.disabbutDateOfBirth = newDisabbutDateOfBirth; + } + + public String getButNationality() { + return this.butNationality; + } + + public void setButNationality(String newButNationality) { + this.butNationality = newButNationality; + } + + public String getDisabbutNationality() { + return this.disabbutNationality; + } + + public void setDisabbutNationality(String newDisabbutNationality) { + this.disabbutNationality = newDisabbutNationality; + } + + public String getButMaritalStatus() { + return this.butMaritalStatus; + } + + public void setButMaritalStatus(String newButMaritalStatus) { + this.butMaritalStatus = newButMaritalStatus; + } + + public String getDisabbutMaritalStatus() { + return this.disabbutMaritalStatus; + } + + public void setDisabbutMaritalStatus(String newDisabbutMaritalStatus) { + this.disabbutMaritalStatus = newDisabbutMaritalStatus; + } + + public String[] getMail() { + return this.mail; + } + + public void setMail(String[] newMail) { + this.mail = newMail; + } + + public String getButReservationCategory() { + return this.butReservationCategory; + } + + public void setButReservationCategory(String newButReservationCategory) { + this.butReservationCategory = newButReservationCategory; + } + + public String getDisabbutReservationCategory() { + return this.disabbutReservationCategory; + } + + public void setDisabbutReservationCategory(String newDisabbutReservationCategory) { + this.disabbutReservationCategory = newDisabbutReservationCategory; + } + + public String getButPermCountry() { + return this.butPermCountry; + } + + public void setButPermCountry(String newButPermCountry) { + this.butPermCountry = newButPermCountry; + } + + public String getDisabbutPermCountry() { + return this.disabbutPermCountry; + } + + public void setDisabbutPermCountry(String newDisabbutPermCountry) { + this.disabbutPermCountry = newDisabbutPermCountry; + } + + public String getButPermState() { + return this.butPermState; + } + + public void setButPermState(String newButPermState) { + this.butPermState = newButPermState; + } + + public String getDisabbutPermState() { + return this.disabbutPermState; + } + + public void setDisabbutPermState(String newDisabbutPermState) { + this.disabbutPermState = newDisabbutPermState; + } + + public String getButPresCountry() { + return this.butPresCountry; + } + + public void setButPresCountry(String newButPresCountry) { + this.butPresCountry = newButPresCountry; + } + + public String getDisabbutPresCountry() { + return this.disabbutPresCountry; + } + + public void setDisabbutPresCountry(String newDisabbutPresCountry) { + this.disabbutPresCountry = newDisabbutPresCountry; + } + + public String getButPresState() { + return this.butPresState; + } + + public void setButPresState(String newButPresState) { + this.butPresState = newButPresState; + } + + public String getDisabbutPresState() { + return this.disabbutPresState; + } + + public void setDisabbutPresState(String newDisabbutPresState) { + this.disabbutPresState = newDisabbutPresState; + } + + public String getButTestCentre() { + return this.butTestCentre; + } + + public void setButTestCentre(String newButTestCentre) { + this.butTestCentre = newButTestCentre; + } + + public String getDisabbutTestCentre() { + return this.disabbutTestCentre; + } + + public void setDisabbutTestCentre(String newDisabbutTestCentre) { + this.disabbutTestCentre = newDisabbutTestCentre; + } + + public String getButExpiryDate() { + return this.butExpiryDate; + } + + public void setButExpiryDate(String newButExpiryDate) { + this.butExpiryDate = newButExpiryDate; + } + + public String getDisabbutExpiryDate() { + return this.disabbutExpiryDate; + } + + public void setDisabbutExpiryDate(String newDisabbutExpiryDate) { + this.disabbutExpiryDate = newDisabbutExpiryDate; + } + + public String getButIssueDate() { + return this.butIssueDate; + } + + public void setButIssueDate(String newButIssueDate) { + this.butIssueDate = newButIssueDate; + } + + public String getDisabbutIssueDate() { + return this.disabbutIssueDate; + } + + public void setDisabbutIssueDate(String newDisabbutIssueDate) { + this.disabbutIssueDate = newDisabbutIssueDate; + } + + public String getButSubmissionDate() { + return this.butSubmissionDate; + } + + public void setButSubmissionDate(String newButSubmissionDate) { + this.butSubmissionDate = newButSubmissionDate; + } + + public String getDisabbutSubmissionDate() { + return this.disabbutSubmissionDate; + } + + public void setDisabbutSubmissionDate(String newDisabbutSubmissionDate) { + this.disabbutSubmissionDate = newDisabbutSubmissionDate; + } + + public String[] getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String[] newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getButDesigCode() { + return this.butDesigCode; + } + + public void setButDesigCode(String newButDesigCode) { + this.butDesigCode = newButDesigCode; + } + + public String getDisabbutDesigCode() { + return this.disabbutDesigCode; + } + + public void setDisabbutDesigCode(String newDisabbutDesigCode) { + this.disabbutDesigCode = newDisabbutDesigCode; + } + + public String getDisabbutSkillCode() { + return this.disabbutSkillCode; + } + + public void setDisabbutSkillCode(String newDisabbutSkillCode) { + this.disabbutSkillCode = newDisabbutSkillCode; + } + + public String getDisabbutLangCode() { + return this.disabbutLangCode; + } + + public void setDisabbutLangCode(String newDisabbutLangCode) { + this.disabbutLangCode = newDisabbutLangCode; + } + + public String getDisabbutKnowledge() { + return this.disabbutKnowledge; + } + + public void setDisabbutKnowledge(String newDisabbutKnowledge) { + this.disabbutKnowledge = newDisabbutKnowledge; + } + + public String getDisabbutInstCode() { + return this.disabbutInstCode; + } + + public void setDisabbutInstCode(String newDisabbutInstCode) { + this.disabbutInstCode = newDisabbutInstCode; + } + + public String getDisabbutQualCode() { + return this.disabbutQualCode; + } + + public void setDisabbutQualCode(String newDisabbutQualCode) { + this.disabbutQualCode = newDisabbutQualCode; + } + + public String[] getMotherToungueCode() { + return this.motherToungueCode; + } + + public void setMotherToungueCode(String[] newMotherToungueCode) { + this.motherToungueCode = newMotherToungueCode; + } + + public String[] getTxtSkillDesc() { + return this.txtSkillDesc; + } + + public void setTxtSkillDesc(String[] newTxtSkillDesc) { + this.txtSkillDesc = newTxtSkillDesc; + } + + public String[] getTxtDesig() { + return this.txtDesig; + } + + public void setTxtDesig(String[] newTxtDesig) { + this.txtDesig = newTxtDesig; + } + + public String getDesignationId() { + return this.designationId; + } + + public void setDesignationId(String newDesignationId) { + this.designationId = newDesignationId; + } + + public String getResvHdrId() { + return this.resvHdrId; + } + + public void setResvHdrId(String newResvHdrId) { + this.resvHdrId = newResvHdrId; + } + + public String getResvHdrName() { + return this.resvHdrName; + } + + public void setResvHdrName(String newResvHdrName) { + this.resvHdrName = newResvHdrName; + } + + public String[] getTxtMajorSub() { + return this.txtMajorSub; + } + + public void setTxtMajorSub(String[] newTxtMajorSub) { + this.txtMajorSub = newTxtMajorSub; + } + + public String[] getTxtSpeecialCourses() { + return this.txtSpeecialCourses; + } + + public void setTxtSpeecialCourses(String[] newTxtSpeecialCourses) { + this.txtSpeecialCourses = newTxtSpeecialCourses; + } + + public String[] getTxtSpeecialisation() { + return this.txtSpeecialisation; + } + + public void setTxtSpeecialisation(String[] newTxtSpeecialisation) { + this.txtSpeecialisation = newTxtSpeecialisation; + } + + public String[] getTxtOtherProfQuali() { + return this.txtOtherProfQuali; + } + + public void setTxtOtherProfQuali(String[] newTxtOtherProfQuali) { + this.txtOtherProfQuali = newTxtOtherProfQuali; + } + + public String[] getTxtQualificationCode() { + return this.txtQualificationCode; + } + + public void setTxtQualificationCode(String[] newTxtQualificationCode) { + this.txtQualificationCode = newTxtQualificationCode; + } + + public String[] getTxtDA() { + return this.txtDA; + } + + public void setTxtDA(String[] newTxtDA) { + this.txtDA = newTxtDA; + } + + public String[] getTxtBonus() { + return this.txtBonus; + } + + public void setTxtBonus(String[] newTxtBonus) { + this.txtBonus = newTxtBonus; + } + + public String[] getTxtIncentives() { + return this.txtIncentives; + } + + public void setTxtIncentives(String[] newTxtIncentives) { + this.txtIncentives = newTxtIncentives; + } + + public String[] getTxtConv() { + return this.txtConv; + } + + public void setTxtConv(String[] newTxtConv) { + this.txtConv = newTxtConv; + } + + public String[] getTxtHRA() { + return this.txtHRA; + } + + public void setTxtHRA(String[] newTxtHRA) { + this.txtHRA = newTxtHRA; + } + + public String[] getTxtLeavingSal() { + return this.txtLeavingSal; + } + + public void setTxtLeavingSal(String[] newTxtLeavingSal) { + this.txtLeavingSal = newTxtLeavingSal; + } + + public String[] getTxtStartingSal() { + return this.txtStartingSal; + } + + public void setTxtStartingSal(String[] newTxtStartingSal) { + this.txtStartingSal = newTxtStartingSal; + } + + public String[] getTxtNoPersonSupervised() { + return this.txtNoPersonSupervised; + } + + public void setTxtNoPersonSupervised(String[] newTxtNoPersonSupervised) { + this.txtNoPersonSupervised = newTxtNoPersonSupervised; + } + + public String[] getTxtReportTo() { + return this.txtReportTo; + } + + public void setTxtReportTo(String[] newTxtReportTo) { + this.txtReportTo = newTxtReportTo; + } + + public String[] getTxtWorkExp() { + return this.txtWorkExp; + } + + public void setTxtWorkExp(String[] newTxtWorkExp) { + this.txtWorkExp = newTxtWorkExp; + } + + public String[] getTxtPosition() { + return this.txtPosition; + } + + public void setTxtPosition(String[] newTxtPosition) { + this.txtPosition = newTxtPosition; + } + + public String[] getTxtPhone() { + return this.txtPhone; + } + + public void setTxtPhone(String[] newTxtPhone) { + this.txtPhone = newTxtPhone; + } + + public String[] getTxtAddress() { + return this.txtAddress; + } + + public void setTxtAddress(String[] newTxtAddress) { + this.txtAddress = newTxtAddress; + } + + public String[] getTxtName() { + return this.txtName; + } + + public void setTxtName(String[] newTxtName) { + this.txtName = newTxtName; + } + + public String[] getTxtSubject() { + return this.txtSubject; + } + + public void setTxtSubject(String[] newTxtSubject) { + this.txtSubject = newTxtSubject; + } + + public String[] getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String[] newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String[] getTxtInstitute() { + return this.txtInstitute; + } + + public void setTxtInstitute(String[] newTxtInstitute) { + this.txtInstitute = newTxtInstitute; + } + + public String[] getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String[] newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String[] getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String[] newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getButTxtFromDate() { + return this.butTxtFromDate; + } + + public void setButTxtFromDate(String newButTxtFromDate) { + this.butTxtFromDate = newButTxtFromDate; + } + + public String getButTxtToDate() { + return this.butTxtToDate; + } + + public void setButTxtToDate(String newButTxtToDate) { + this.butTxtToDate = newButTxtToDate; + } + + public String getApplForGrade() { + return this.applForGrade; + } + + public void setApplForGrade(String newApplForGrade) { + this.applForGrade = newApplForGrade; + } + + public String[] getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String[] newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getDisabplaceOfBirth() { + return this.disabplaceOfBirth; + } + + public void setDisabplaceOfBirth(String newDisabplaceOfBirth) { + this.disabplaceOfBirth = newDisabplaceOfBirth; + } + + public String[] getMaritalStatusDesc() { + return this.maritalStatusDesc; + } + + public void setMaritalStatusDesc(String[] newMaritalStatusDesc) { + this.maritalStatusDesc = newMaritalStatusDesc; + } + + public String[] getRelatedEmpName() { + return this.relatedEmpName; + } + + public void setRelatedEmpName(String[] newRelatedEmpName) { + this.relatedEmpName = newRelatedEmpName; + } + + public String[] getRelatedToEmp() { + return this.relatedToEmp; + } + + public void setRelatedToEmp(String[] newRelatedToEmp) { + this.relatedToEmp = newRelatedToEmp; + } + + public String getButRelatedEmp() { + return this.butRelatedEmp; + } + + public void setButRelatedEmp(String newButRelatedEmp) { + this.butRelatedEmp = newButRelatedEmp; + } + + public String getDisabbutRelatedEmp() { + return this.disabbutRelatedEmp; + } + + public void setDisabbutRelatedEmp(String newDisabbutRelatedEmp) { + this.disabbutRelatedEmp = newDisabbutRelatedEmp; + } + + public String getDisabrelatedToEmp() { + return this.disabrelatedToEmp; + } + + public void setDisabrelatedToEmp(String newDisabrelatedToEmp) { + this.disabrelatedToEmp = newDisabrelatedToEmp; + } + + public String[] getRelatedEmpId() { + return this.relatedEmpId; + } + + public void setRelatedEmpId(String[] newRelatedEmpId) { + this.relatedEmpId = newRelatedEmpId; + } + + public String[] getReligion() { + return this.religion; + } + + public void setReligion(String[] newReligion) { + this.religion = newReligion; + } + + public String[] getReligionId() { + return this.religionId; + } + + public String[] getHealthRecord() { + return this.healthRecord; + } + + public void setHealthRecord(String[] newHealthRecord) { + this.healthRecord = newHealthRecord; + } + + public String getDisabhealthRecord() { + return this.disabhealthRecord; + } + + public void setDisabhealthRecord(String newDisabhealthRecord) { + this.disabhealthRecord = newDisabhealthRecord; + } + + public void setReligionId(String[] newReligionId) { + this.religionId = newReligionId; + } + + public String getButReligion() { + return this.butReligion; + } + + public void setButReligion(String newButReligion) { + this.butReligion = newButReligion; + } + + public String getDisabbutReligion() { + return this.disabbutReligion; + } + + public void setDisabbutReligion(String newDisabbutReligion) { + this.disabbutReligion = newDisabbutReligion; + } + + public String[] getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String[] newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getDisabbloodGroup() { + return this.disabbloodGroup; + } + + public void setDisabbloodGroup(String newDisabbloodGroup) { + this.disabbloodGroup = newDisabbloodGroup; + } + + public String[] getPrevEmpFlag() { + return this.prevEmpFlag; + } + + public void setPrevEmpFlag(String[] newPrevEmpFlag) { + this.prevEmpFlag = newPrevEmpFlag; + } + + public String getDisabprevEmpFlag() { + return this.disabprevEmpFlag; + } + + public void setDisabprevEmpFlag(String newDisabprevEmpFlag) { + this.disabprevEmpFlag = newDisabprevEmpFlag; + } + + public String[] getPrevEmpDtls() { + return this.prevEmpDtls; + } + + public void setPrevEmpDtls(String[] newPrevEmpDtls) { + this.prevEmpDtls = newPrevEmpDtls; + } + + public String getDisabprevEmpDtls() { + return this.disabprevEmpDtls; + } + + public void setDisabprevEmpDtls(String newDisabprevEmpDtls) { + this.disabprevEmpDtls = newDisabprevEmpDtls; + } + + public String[] getHobbies() { + return this.hobbies; + } + + public void setHobbies(String[] newHobbies) { + this.hobbies = newHobbies; + } + + public String getDisabhobbies() { + return this.disabhobbies; + } + + public void setDisabhobbies(String newDisabhobbies) { + this.disabhobbies = newDisabhobbies; + } + + public String[] getGrossExpected() { + return this.grossExpected; + } + + public void setGrossExpected(String[] newGrossExpected) { + this.grossExpected = newGrossExpected; + } + + public String getDisabgrossExpected() { + return this.disabgrossExpected; + } + + public void setDisabgrossExpected(String newDisabgrossExpected) { + this.disabgrossExpected = newDisabgrossExpected; + } + + public String[] getAddlInfo() { + return this.addlInfo; + } + + public void setAddlInfo(String[] newAddlInfo) { + this.addlInfo = newAddlInfo; + } + + public String getDisabaddlInfo() { + return this.disabaddlInfo; + } + + public void setDisabaddlInfo(String newDisabaddlInfo) { + this.disabaddlInfo = newDisabaddlInfo; + } + + public String[] getReasons() { + return this.reasons; + } + + public void setReasons(String[] newReasons) { + this.reasons = newReasons; + } + + public String getDisabreasons() { + return this.disabreasons; + } + + public void setDisabreasons(String newDisabreasons) { + this.disabreasons = newDisabreasons; + } + + public String[] getQualInterview2() { + return this.qualInterview2; + } + + public void setQualInterview2(String[] newQualInterview2) { + this.qualInterview2 = newQualInterview2; + } + + public String getDisabqualInterview2() { + return this.disabqualInterview2; + } + + public void setDisabqualInterview2(String newDisabqualInterview2) { + this.disabqualInterview2 = newDisabqualInterview2; + } + + public String[] getQualInterview3() { + return this.qualInterview3; + } + + public void setQualInterview3(String[] newQualInterview3) { + this.qualInterview3 = newQualInterview3; + } + + public String getDisabqualInterview3() { + return this.disabqualInterview3; + } + + public void setDisabqualInterview3(String newDisabqualInterview3) { + this.disabqualInterview3 = newDisabqualInterview3; + } + + public String getDisabqualInterview() { + return this.disabqualInterview; + } + + public void setDisabqualInterview(String newDisabqualInterview) { + this.disabqualInterview = newDisabqualInterview; + } + + public String[] getQualInterview() { + return this.qualInterview; + } + + public void setQualInterview(String[] newQualInterview) { + this.qualInterview = newQualInterview; + } + + public String[] getInterviewScore2() { + return this.interviewScore2; + } + + public void setInterviewScore2(String[] newInterviewScore2) { + this.interviewScore2 = newInterviewScore2; + } + + public String[] getInterviewScore3() { + return this.interviewScore3; + } + + public String getDisabinterviewScore2() { + return this.disabinterviewScore2; + } + + public void setDisabinterviewScore2(String newDisabinterviewScore2) { + this.disabinterviewScore2 = newDisabinterviewScore2; + } + + public String getDisabinterviewScore3() { + return this.disabinterviewScore3; + } + + public void setDisabinterviewScore3(String newDisabinterviewScore3) { + this.disabinterviewScore3 = newDisabinterviewScore3; + } + + public String[] getRating() { + return this.rating; + } + + public void setRating(String[] newRating) { + this.rating = newRating; + } + + public String getDisabrating() { + return this.disabrating; + } + + public void setDisabrating(String newDisabrating) { + this.disabrating = newDisabrating; + } + + public void setInterviewScore3(String[] newInterviewScore3) { + this.interviewScore3 = newInterviewScore3; + } + + public String getDisabmail() { + return this.disabmail; + } + + public void setDisabmail(String newDisabmail) { + this.disabmail = newDisabmail; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecEmpRecCreationForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecEmpRecCreationForm.java new file mode 100644 index 0000000..4ef2c0a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecEmpRecCreationForm.java @@ -0,0 +1,1236 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRecEmpRecCreationForm extends HrmBaseForm { + String applicationNo; + + String advNo; + + String newEmpNo; + + String employeeFirstName; + + String employeeMiddleName; + + String employeeLastName; + + String entryMode; + + String rollNo; + + String guardianName; + + String motherToungue; + + String dateOfBirth; + + String nationality; + + String bloodGroup; + + String maritalStatus; + + String sex; + + String reservationCategory; + + String religion; + + String email; + + String arrested; + + String fined; + + String imprisoned; + + String proscecuted; + + String handicappedFlag; + + String placeOfissue; + + String passportNo; + + String expiryDate; + + String issueDate; + + String presentAddress; + + String countryPresentAddress; + + String statePresentAddress; + + String cityPresentAddress; + + String phonePresentAddress; + + String pinCodePresentAddress; + + String officeAddress; + + String countryOfficeAddress; + + String stateOfficeAddress; + + String cityOfficeAddress; + + String phoneOfficeAddress; + + String pinCodeOfficeAddress; + + String permanentAddress; + + String countryPermanentAddress; + + String statePermanentAddress; + + String cityPermanentAddress; + + String phonePermanentAddresss; + + String pinCodePermanentAddress; + + String appointmentOrder; + + String appointmentOrderDate; + + String companyJoiningDate; + + String locationJoiningDate; + + String tentativeConfirmDate; + + String retirementDate; + + String baseSite; + + String designation; + + String grade; + + String employeeType; + + String joiningGroup; + + String disabbutAppointmentOrderDate; + + String disabbutCompanyJoiningDate; + + String disabbutLocationJoiningDate; + + String disabbutTentativeConfirmDate; + + String disabbutBaseSite; + + String disabbutDesignation; + + String disabbutGrade; + + String disabbutCostCentre; + + String disabbutJoiningGroup; + + String applnId; + + String prCountryId; + + String prCountryCode; + + String prStateId; + + String prStateCode; + + String peCountryId; + + String peCountryCode; + + String peStateId; + + String peStateCode; + + String offCountryId; + + String offCountryCode; + + String offStateId; + + String offStateCode; + + String baseSiteId; + + String baseSiteCode; + + String desgnId; + + String desgnCode; + + String gradeId; + + String gradeCode; + + String joiningId; + + String joiningCode; + + String empTypeId; + + String empTypeCode; + + String empName; + + private String placeOfBirth; + + private String relatedEmployee; + + private String disabofficeAddress; + + private String butCountryOfficeAddress; + + private String disabbutCountryOfficeAddress; + + private String butStateOfficeAddress; + + private String disabbutStateOfficeAddress; + + private String disabcityOfficeAddress; + + private String disabpinCodeOfficeAddress; + + private String disabphoneOfficeAddress; + + private String disabappointmentOrder; + + private String disabemployeeType; + + private String butApplicationNo; + + private String disabbutApplicationNo; + + private String butAppointmentOrderDate; + + private String butCompanyJoiningDate; + + private String butLocationJoiningDate; + + private String butTentativeConfirmDate; + + private String butGrade; + + private String butBaseSite; + + private String butDesignation; + + private String butJoiningGroup; + + private String applForGrade; + + private String applForDesignation; + + private String entryModeId; + + private String entryModeCode; + + private String butEntryMode; + + private String disabbutEntryMode; + + private String motherToungueCode; + + private String nationalityCode; + + private String maritalStatusCode; + + private String relatedEmployeeId; + + private String religionId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getAdvNo() { + return this.advNo; + } + + public void setAdvNo(String newAdvNo) { + this.advNo = newAdvNo; + } + + public String getNewEmpNo() { + return this.newEmpNo; + } + + public void setNewEmpNo(String newNewEmpNo) { + this.newEmpNo = newNewEmpNo; + } + + public String getEmployeeFirstName() { + return this.employeeFirstName; + } + + public void setEmployeeFirstName(String newEmployeeFirstName) { + this.employeeFirstName = newEmployeeFirstName; + } + + public String getEmployeeMiddleName() { + return this.employeeMiddleName; + } + + public void setEmployeeMiddleName(String newEmployeeMiddleName) { + this.employeeMiddleName = newEmployeeMiddleName; + } + + public String getEmployeeLastName() { + return this.employeeLastName; + } + + public void setEmployeeLastName(String newEmployeeLastName) { + this.employeeLastName = newEmployeeLastName; + } + + public String getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String newEntryMode) { + this.entryMode = newEntryMode; + } + + public String getRollNo() { + return this.rollNo; + } + + public void setRollNo(String newRollNo) { + this.rollNo = newRollNo; + } + + public String getGuardianName() { + return this.guardianName; + } + + public void setGuardianName(String newGuardianName) { + this.guardianName = newGuardianName; + } + + public String getMotherToungue() { + return this.motherToungue; + } + + public void setMotherToungue(String newMotherToungue) { + this.motherToungue = newMotherToungue; + } + + public String getDateOfBirth() { + return this.dateOfBirth; + } + + public void setDateOfBirth(String newDateOfBirth) { + this.dateOfBirth = newDateOfBirth; + } + + public String getNationality() { + return this.nationality; + } + + public void setNationality(String newNationality) { + this.nationality = newNationality; + } + + public String getBloodGroup() { + return this.bloodGroup; + } + + public void setBloodGroup(String newBloodGroup) { + this.bloodGroup = newBloodGroup; + } + + public String getMaritalStatus() { + return this.maritalStatus; + } + + public void setMaritalStatus(String newMaritalStatus) { + this.maritalStatus = newMaritalStatus; + } + + public String getSex() { + return this.sex; + } + + public void setSex(String newSex) { + this.sex = newSex; + } + + public String getReservationCategory() { + return this.reservationCategory; + } + + public void setReservationCategory(String newReservationCategory) { + this.reservationCategory = newReservationCategory; + } + + public String getReligion() { + return this.religion; + } + + public void setReligion(String newReligion) { + this.religion = newReligion; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getArrested() { + return this.arrested; + } + + public void setArrested(String newArrested) { + this.arrested = newArrested; + } + + public String getFined() { + return this.fined; + } + + public void setFined(String newFined) { + this.fined = newFined; + } + + public String getImprisoned() { + return this.imprisoned; + } + + public void setImprisoned(String newImprisoned) { + this.imprisoned = newImprisoned; + } + + public String getProscecuted() { + return this.proscecuted; + } + + public void setProscecuted(String newProscecuted) { + this.proscecuted = newProscecuted; + } + + public String getHandicappedFlag() { + return this.handicappedFlag; + } + + public void setHandicappedFlag(String newHandicappedFlag) { + this.handicappedFlag = newHandicappedFlag; + } + + public String getPlaceOfissue() { + return this.placeOfissue; + } + + public void setPlaceOfissue(String newPlaceOfissue) { + this.placeOfissue = newPlaceOfissue; + } + + public String getPassportNo() { + return this.passportNo; + } + + public void setPassportNo(String newPassportNo) { + this.passportNo = newPassportNo; + } + + public String getExpiryDate() { + return this.expiryDate; + } + + public void setExpiryDate(String newExpiryDate) { + this.expiryDate = newExpiryDate; + } + + public String getIssueDate() { + return this.issueDate; + } + + public void setIssueDate(String newIssueDate) { + this.issueDate = newIssueDate; + } + + public String getPresentAddress() { + return this.presentAddress; + } + + public void setPresentAddress(String newPresentAddress) { + this.presentAddress = newPresentAddress; + } + + public String getCountryPresentAddress() { + return this.countryPresentAddress; + } + + public void setCountryPresentAddress(String newCountryPresentAddress) { + this.countryPresentAddress = newCountryPresentAddress; + } + + public String getStatePresentAddress() { + return this.statePresentAddress; + } + + public void setStatePresentAddress(String newStatePresentAddress) { + this.statePresentAddress = newStatePresentAddress; + } + + public String getCityPresentAddress() { + return this.cityPresentAddress; + } + + public void setCityPresentAddress(String newCityPresentAddress) { + this.cityPresentAddress = newCityPresentAddress; + } + + public String getPhonePresentAddress() { + return this.phonePresentAddress; + } + + public void setPhonePresentAddress(String newPhonePresentAddress) { + this.phonePresentAddress = newPhonePresentAddress; + } + + public String getPinCodePresentAddress() { + return this.pinCodePresentAddress; + } + + public void setPinCodePresentAddress(String newPinCodePresentAddress) { + this.pinCodePresentAddress = newPinCodePresentAddress; + } + + public String getOfficeAddress() { + return this.officeAddress; + } + + public void setOfficeAddress(String newOfficeAddress) { + this.officeAddress = newOfficeAddress; + } + + public String getCountryOfficeAddress() { + return this.countryOfficeAddress; + } + + public void setCountryOfficeAddress(String newCountryOfficeAddress) { + this.countryOfficeAddress = newCountryOfficeAddress; + } + + public String getStateOfficeAddress() { + return this.stateOfficeAddress; + } + + public void setStateOfficeAddress(String newStateOfficeAddress) { + this.stateOfficeAddress = newStateOfficeAddress; + } + + public String getCityOfficeAddress() { + return this.cityOfficeAddress; + } + + public void setCityOfficeAddress(String newCityOfficeAddress) { + this.cityOfficeAddress = newCityOfficeAddress; + } + + public String getPhoneOfficeAddress() { + return this.phoneOfficeAddress; + } + + public void setPhoneOfficeAddress(String newPhoneOfficeAddress) { + this.phoneOfficeAddress = newPhoneOfficeAddress; + } + + public String getPinCodeOfficeAddress() { + return this.pinCodeOfficeAddress; + } + + public void setPinCodeOfficeAddress(String newPinCodeOfficeAddress) { + this.pinCodeOfficeAddress = newPinCodeOfficeAddress; + } + + public String getPermanentAddress() { + return this.permanentAddress; + } + + public void setPermanentAddress(String newPermanentAddress) { + this.permanentAddress = newPermanentAddress; + } + + public String getCountryPermanentAddress() { + return this.countryPermanentAddress; + } + + public void setCountryPermanentAddress(String newCountryPermanentAddress) { + this.countryPermanentAddress = newCountryPermanentAddress; + } + + public String getStatePermanentAddress() { + return this.statePermanentAddress; + } + + public void setStatePermanentAddress(String newStatePermanentAddress) { + this.statePermanentAddress = newStatePermanentAddress; + } + + public String getCityPermanentAddress() { + return this.cityPermanentAddress; + } + + public void setCityPermanentAddress(String newCityPermanentAddress) { + this.cityPermanentAddress = newCityPermanentAddress; + } + + public String getPhonePermanentAddresss() { + return this.phonePermanentAddresss; + } + + public void setPhonePermanentAddresss(String newPhonePermanentAddresss) { + this.phonePermanentAddresss = newPhonePermanentAddresss; + } + + public String getPinCodePermanentAddress() { + return this.pinCodePermanentAddress; + } + + public void setPinCodePermanentAddress(String newPinCodePermanentAddress) { + this.pinCodePermanentAddress = newPinCodePermanentAddress; + } + + public String getAppointmentOrder() { + return this.appointmentOrder; + } + + public void setAppointmentOrder(String newAppointmentOrder) { + this.appointmentOrder = newAppointmentOrder; + } + + public String getAppointmentOrderDate() { + return this.appointmentOrderDate; + } + + public void setAppointmentOrderDate(String newAppointmentOrderDate) { + this.appointmentOrderDate = newAppointmentOrderDate; + } + + public String getCompanyJoiningDate() { + return this.companyJoiningDate; + } + + public void setCompanyJoiningDate(String newCompanyJoiningDate) { + this.companyJoiningDate = newCompanyJoiningDate; + } + + public String getLocationJoiningDate() { + return this.locationJoiningDate; + } + + public void setLocationJoiningDate(String newLocationJoiningDate) { + this.locationJoiningDate = newLocationJoiningDate; + } + + public String getTentativeConfirmDate() { + return this.tentativeConfirmDate; + } + + public void setTentativeConfirmDate(String newTentativeConfirmDate) { + this.tentativeConfirmDate = newTentativeConfirmDate; + } + + public String getRetirementDate() { + return this.retirementDate; + } + + public void setRetirementDate(String newRetirementDate) { + this.retirementDate = newRetirementDate; + } + + public String getBaseSite() { + return this.baseSite; + } + + public void setBaseSite(String newBaseSite) { + this.baseSite = newBaseSite; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getEmployeeType() { + return this.employeeType; + } + + public void setEmployeeType(String newEmployeeType) { + this.employeeType = newEmployeeType; + } + + public String getJoiningGroup() { + return this.joiningGroup; + } + + public void setJoiningGroup(String newJoiningGroup) { + this.joiningGroup = newJoiningGroup; + } + + public String getDisabbutAppointmentOrderDate() { + return this.disabbutAppointmentOrderDate; + } + + public void setDisabbutAppointmentOrderDate(String newDisabbutAppointmentOrderDate) { + this.disabbutAppointmentOrderDate = newDisabbutAppointmentOrderDate; + } + + public String getDisabbutCompanyJoiningDate() { + return this.disabbutCompanyJoiningDate; + } + + public void setDisabbutCompanyJoiningDate(String newDisabbutCompanyJoiningDate) { + this.disabbutCompanyJoiningDate = newDisabbutCompanyJoiningDate; + } + + public String getDisabbutLocationJoiningDate() { + return this.disabbutLocationJoiningDate; + } + + public void setDisabbutLocationJoiningDate(String newDisabbutLocationJoiningDate) { + this.disabbutLocationJoiningDate = newDisabbutLocationJoiningDate; + } + + public String getDisabbutTentativeConfirmDate() { + return this.disabbutTentativeConfirmDate; + } + + public void setDisabbutTentativeConfirmDate(String newDisabbutTentativeConfirmDate) { + this.disabbutTentativeConfirmDate = newDisabbutTentativeConfirmDate; + } + + public String getDisabbutBaseSite() { + return this.disabbutBaseSite; + } + + public void setDisabbutBaseSite(String newDisabbutBaseSite) { + this.disabbutBaseSite = newDisabbutBaseSite; + } + + public String getDisabbutDesignation() { + return this.disabbutDesignation; + } + + public void setDisabbutDesignation(String newDisabbutDesignation) { + this.disabbutDesignation = newDisabbutDesignation; + } + + public String getDisabbutGrade() { + return this.disabbutGrade; + } + + public void setDisabbutGrade(String newDisabbutGrade) { + this.disabbutGrade = newDisabbutGrade; + } + + public String getDisabbutCostCentre() { + return this.disabbutCostCentre; + } + + public void setDisabbutCostCentre(String newDisabbutCostCentre) { + this.disabbutCostCentre = newDisabbutCostCentre; + } + + public String getDisabbutJoiningGroup() { + return this.disabbutJoiningGroup; + } + + public void setDisabbutJoiningGroup(String newDisabbutJoiningGroup) { + this.disabbutJoiningGroup = newDisabbutJoiningGroup; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getPrCountryId() { + return this.prCountryId; + } + + public void setPrCountryId(String newPrCountryId) { + this.prCountryId = newPrCountryId; + } + + public String getPrCountryCode() { + return this.prCountryCode; + } + + public void setPrCountryCode(String newPrCountryCode) { + this.prCountryCode = newPrCountryCode; + } + + public String getPrStateId() { + return this.prStateId; + } + + public void setPrStateId(String newPrStateId) { + this.prStateId = newPrStateId; + } + + public String getPrStateCode() { + return this.prStateCode; + } + + public void setPrStateCode(String newPrStateCode) { + this.prStateCode = newPrStateCode; + } + + public String getPeCountryId() { + return this.peCountryId; + } + + public void setPeCountryId(String newPeCountryId) { + this.peCountryId = newPeCountryId; + } + + public String getPeCountryCode() { + return this.peCountryCode; + } + + public void setPeCountryCode(String newPeCountryCode) { + this.peCountryCode = newPeCountryCode; + } + + public String getPeStateId() { + return this.peStateId; + } + + public void setPeStateId(String newPeStateId) { + this.peStateId = newPeStateId; + } + + public String getPeStateCode() { + return this.peStateCode; + } + + public void setPeStateCode(String newPeStateCode) { + this.peStateCode = newPeStateCode; + } + + public String getOffCountryId() { + return this.offCountryId; + } + + public void setOffCountryId(String newOffCountryId) { + this.offCountryId = newOffCountryId; + } + + public String getOffCountryCode() { + return this.offCountryCode; + } + + public void setOffCountryCode(String newOffCountryCode) { + this.offCountryCode = newOffCountryCode; + } + + public String getOffStateId() { + return this.offStateId; + } + + public void setOffStateId(String newOffStateId) { + this.offStateId = newOffStateId; + } + + public String getOffStateCode() { + return this.offStateCode; + } + + public void setOffStateCode(String newOffStateCode) { + this.offStateCode = newOffStateCode; + } + + public String getBaseSiteId() { + return this.baseSiteId; + } + + public void setBaseSiteId(String newBaseSiteId) { + this.baseSiteId = newBaseSiteId; + } + + public String getBaseSiteCode() { + return this.baseSiteCode; + } + + public void setBaseSiteCode(String newBaseSiteCode) { + this.baseSiteCode = newBaseSiteCode; + } + + public String getDesgnId() { + return this.desgnId; + } + + public void setDesgnId(String newDesgnId) { + this.desgnId = newDesgnId; + } + + public String getDesgnCode() { + return this.desgnCode; + } + + public void setDesgnCode(String newDesgnCode) { + this.desgnCode = newDesgnCode; + } + + public String getGradeId() { + return this.gradeId; + } + + public void setGradeId(String newGradeId) { + this.gradeId = newGradeId; + } + + public String getGradeCode() { + return this.gradeCode; + } + + public void setGradeCode(String newGradeCode) { + this.gradeCode = newGradeCode; + } + + public String getJoiningId() { + return this.joiningId; + } + + public void setJoiningId(String newJoiningId) { + this.joiningId = newJoiningId; + } + + public String getJoiningCode() { + return this.joiningCode; + } + + public void setJoiningCode(String newJoiningCode) { + this.joiningCode = newJoiningCode; + } + + public String getEmpTypeId() { + return this.empTypeId; + } + + public void setEmpTypeId(String newEmpTypeId) { + this.empTypeId = newEmpTypeId; + } + + public String getEmpTypeCode() { + return this.empTypeCode; + } + + public void setEmpTypeCode(String newEmpTypeCode) { + this.empTypeCode = newEmpTypeCode; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getPlaceOfBirth() { + return this.placeOfBirth; + } + + public void setPlaceOfBirth(String newPlaceOfBirth) { + this.placeOfBirth = newPlaceOfBirth; + } + + public String getRelatedEmployee() { + return this.relatedEmployee; + } + + public void setRelatedEmployee(String newRelatedEmployee) { + this.relatedEmployee = newRelatedEmployee; + } + + public String getDisabofficeAddress() { + return this.disabofficeAddress; + } + + public void setDisabofficeAddress(String newDisabofficeAddress) { + this.disabofficeAddress = newDisabofficeAddress; + } + + public String getButCountryOfficeAddress() { + return this.butCountryOfficeAddress; + } + + public void setButCountryOfficeAddress(String newButCountryOfficeAddress) { + this.butCountryOfficeAddress = newButCountryOfficeAddress; + } + + public String getDisabbutCountryOfficeAddress() { + return this.disabbutCountryOfficeAddress; + } + + public void setDisabbutCountryOfficeAddress(String newDisabbutCountryOfficeAddress) { + this.disabbutCountryOfficeAddress = newDisabbutCountryOfficeAddress; + } + + public String getButStateOfficeAddress() { + return this.butStateOfficeAddress; + } + + public void setButStateOfficeAddress(String newButStateOfficeAddress) { + this.butStateOfficeAddress = newButStateOfficeAddress; + } + + public String getDisabbutStateOfficeAddress() { + return this.disabbutStateOfficeAddress; + } + + public void setDisabbutStateOfficeAddress(String newDisabbutStateOfficeAddress) { + this.disabbutStateOfficeAddress = newDisabbutStateOfficeAddress; + } + + public String getDisabcityOfficeAddress() { + return this.disabcityOfficeAddress; + } + + public void setDisabcityOfficeAddress(String newDisabcityOfficeAddress) { + this.disabcityOfficeAddress = newDisabcityOfficeAddress; + } + + public String getDisabpinCodeOfficeAddress() { + return this.disabpinCodeOfficeAddress; + } + + public void setDisabpinCodeOfficeAddress(String newDisabpinCodeOfficeAddress) { + this.disabpinCodeOfficeAddress = newDisabpinCodeOfficeAddress; + } + + public String getDisabphoneOfficeAddress() { + return this.disabphoneOfficeAddress; + } + + public void setDisabphoneOfficeAddress(String newDisabphoneOfficeAddress) { + this.disabphoneOfficeAddress = newDisabphoneOfficeAddress; + } + + public String getDisabappointmentOrder() { + return this.disabappointmentOrder; + } + + public void setDisabappointmentOrder(String newDisabappointmentOrder) { + this.disabappointmentOrder = newDisabappointmentOrder; + } + + public String getDisabemployeeType() { + return this.disabemployeeType; + } + + public void setDisabemployeeType(String newDisabemployeeType) { + this.disabemployeeType = newDisabemployeeType; + } + + public String getButApplicationNo() { + return this.butApplicationNo; + } + + public void setButApplicationNo(String newButApplicationNo) { + this.butApplicationNo = newButApplicationNo; + } + + public String getDisabbutApplicationNo() { + return this.disabbutApplicationNo; + } + + public void setDisabbutApplicationNo(String newDisabbutApplicationNo) { + this.disabbutApplicationNo = newDisabbutApplicationNo; + } + + public String getButAppointmentOrderDate() { + return this.butAppointmentOrderDate; + } + + public void setButAppointmentOrderDate(String newButAppointmentOrderDate) { + this.butAppointmentOrderDate = newButAppointmentOrderDate; + } + + public String getButCompanyJoiningDate() { + return this.butCompanyJoiningDate; + } + + public void setButCompanyJoiningDate(String newButCompanyJoiningDate) { + this.butCompanyJoiningDate = newButCompanyJoiningDate; + } + + public String getButLocationJoiningDate() { + return this.butLocationJoiningDate; + } + + public void setButLocationJoiningDate(String newButLocationJoiningDate) { + this.butLocationJoiningDate = newButLocationJoiningDate; + } + + public String getButTentativeConfirmDate() { + return this.butTentativeConfirmDate; + } + + public void setButTentativeConfirmDate(String newButTentativeConfirmDate) { + this.butTentativeConfirmDate = newButTentativeConfirmDate; + } + + public String getButGrade() { + return this.butGrade; + } + + public void setButGrade(String newButGrade) { + this.butGrade = newButGrade; + } + + public String getButBaseSite() { + return this.butBaseSite; + } + + public void setButBaseSite(String newButBaseSite) { + this.butBaseSite = newButBaseSite; + } + + public String getButDesignation() { + return this.butDesignation; + } + + public void setButDesignation(String newButDesignation) { + this.butDesignation = newButDesignation; + } + + public String getButJoiningGroup() { + return this.butJoiningGroup; + } + + public void setButJoiningGroup(String newButJoiningGroup) { + this.butJoiningGroup = newButJoiningGroup; + } + + public String getApplForGrade() { + return this.applForGrade; + } + + public void setApplForGrade(String newApplForGrade) { + this.applForGrade = newApplForGrade; + } + + public String getApplForDesignation() { + return this.applForDesignation; + } + + public void setApplForDesignation(String newApplForDesignation) { + this.applForDesignation = newApplForDesignation; + } + + public String getEntryModeId() { + return this.entryModeId; + } + + public void setEntryModeId(String newEntryModeId) { + this.entryModeId = newEntryModeId; + } + + public String getEntryModeCode() { + return this.entryModeCode; + } + + public void setEntryModeCode(String newEntryModeCode) { + this.entryModeCode = newEntryModeCode; + } + + public String getButEntryMode() { + return this.butEntryMode; + } + + public void setButEntryMode(String newButEntryMode) { + this.butEntryMode = newButEntryMode; + } + + public String getDisabbutEntryMode() { + return this.disabbutEntryMode; + } + + public void setDisabbutEntryMode(String newDisabbutEntryMode) { + this.disabbutEntryMode = newDisabbutEntryMode; + } + + public String getMotherToungueCode() { + return this.motherToungueCode; + } + + public void setMotherToungueCode(String newMotherToungueCode) { + this.motherToungueCode = newMotherToungueCode; + } + + public String getNationalityCode() { + return this.nationalityCode; + } + + public void setNationalityCode(String newNationalityCode) { + this.nationalityCode = newNationalityCode; + } + + public String getMaritalStatusCode() { + return this.maritalStatusCode; + } + + public void setMaritalStatusCode(String newMaritalStatusCode) { + this.maritalStatusCode = newMaritalStatusCode; + } + + public String getRelatedEmployeeId() { + return this.relatedEmployeeId; + } + + public void setRelatedEmployeeId(String newRelatedEmployeeId) { + this.relatedEmployeeId = newRelatedEmployeeId; + } + + public String getReligionId() { + return this.religionId; + } + + public void setReligionId(String newReligionId) { + this.religionId = newReligionId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecScrutAppMtnForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecScrutAppMtnForm.java new file mode 100644 index 0000000..b958512 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecScrutAppMtnForm.java @@ -0,0 +1,587 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRecScrutAppMtnForm extends HrmBaseForm { + String referenceNo; + + String adForDesignation; + + String discipline; + + String stageType; + + String selectionRanges; + + String fromRank; + + String toRank; + + String testCenter; + + String remarks; + + String referenceNoId; + + String adForDesignationId; + + String testCenterId; + + String selectAll; + + String[] txtRank; + + String[] txtApplicantNo; + + String[] txtApplicantName; + + String[] txtWrittemMarksA; + + String[] txtWrittemMarksB; + + String[] txtInterviewMarks; + + String[] txtTotalScore; + + String[] txtExpYrs; + + String[] txtEligibility; + + String[] txtTestCenter; + + String[] txtTestCenterId; + + String disabreferenceNo; + + String disabadForDesignation; + + String disabdiscipline; + + String disabstageType; + + String disabselectionRanges; + + String disabfromRank; + + String disabtoRank; + + String disabtestCenter; + + String disabremarks; + + String disabreferenceNoId; + + String disabadForDesignationId; + + String disabtestCenterId; + + String[] disabtxtRank; + + String[] disabtxtApplicantNo; + + String[] disabtxtApplicantName; + + String[] disabtxtWrittemMarksA; + + String[] disabtxtWrittemMarksB; + + String[] disabtxtInterviewMarks; + + String[] disabtxtTotalScore; + + String[] disabtxtExpYrs; + + String[] disabtxtEligibility; + + String[] disabtxtTestCenter; + + String[] disabtxtTestCenterId; + + String stage; + + String butGEA; + + String disabbutGEA; + + ArrayList arylstScrutApplDtl = new ArrayList(); + + String[] txtApplicantId; + + String butReferenceNo; + + String disabbutReferenceNo; + + String butAdForDesig; + + String disabbutAdForDesig; + + String[] txtStageId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getReferenceNo() { + return this.referenceNo; + } + + public void setReferenceNo(String newReferenceNo) { + this.referenceNo = newReferenceNo; + } + + public String getAdForDesignation() { + return this.adForDesignation; + } + + public void setAdForDesignation(String newAdForDesignation) { + this.adForDesignation = newAdForDesignation; + } + + public String getDiscipline() { + return this.discipline; + } + + public void setDiscipline(String newDiscipline) { + this.discipline = newDiscipline; + } + + public String getStageType() { + return this.stageType; + } + + public void setStageType(String newStageType) { + this.stageType = newStageType; + } + + public String getSelectionRanges() { + return this.selectionRanges; + } + + public void setSelectionRanges(String newSelectionRanges) { + this.selectionRanges = newSelectionRanges; + } + + public String getFromRank() { + return this.fromRank; + } + + public void setFromRank(String newFromRank) { + this.fromRank = newFromRank; + } + + public String getToRank() { + return this.toRank; + } + + public void setToRank(String newToRank) { + this.toRank = newToRank; + } + + public String getTestCenter() { + return this.testCenter; + } + + public void setTestCenter(String newTestCenter) { + this.testCenter = newTestCenter; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtRank() { + return this.txtRank; + } + + public void setTxtRank(String[] newTxtRank) { + this.txtRank = newTxtRank; + } + + public String[] getTxtApplicantNo() { + return this.txtApplicantNo; + } + + public void setTxtApplicantNo(String[] newTxtApplicantNo) { + this.txtApplicantNo = newTxtApplicantNo; + } + + public String[] getTxtApplicantName() { + return this.txtApplicantName; + } + + public void setTxtApplicantName(String[] newTxtApplicantName) { + this.txtApplicantName = newTxtApplicantName; + } + + public String[] getTxtWrittemMarksA() { + return this.txtWrittemMarksA; + } + + public void setTxtWrittemMarksA(String[] newTxtWrittemMarksA) { + this.txtWrittemMarksA = newTxtWrittemMarksA; + } + + public String[] getTxtWrittemMarksB() { + return this.txtWrittemMarksB; + } + + public void setTxtWrittemMarksB(String[] newTxtWrittemMarksB) { + this.txtWrittemMarksB = newTxtWrittemMarksB; + } + + public String[] getTxtInterviewMarks() { + return this.txtInterviewMarks; + } + + public void setTxtInterviewMarks(String[] newTxtInterviewMarks) { + this.txtInterviewMarks = newTxtInterviewMarks; + } + + public String[] getTxtTotalScore() { + return this.txtTotalScore; + } + + public void setTxtTotalScore(String[] newTxtTotalScore) { + this.txtTotalScore = newTxtTotalScore; + } + + public String[] getTxtExpYrs() { + return this.txtExpYrs; + } + + public void setTxtExpYrs(String[] newTxtExpYrs) { + this.txtExpYrs = newTxtExpYrs; + } + + public String[] getTxtEligibility() { + return this.txtEligibility; + } + + public void setTxtEligibility(String[] newTxtEligibility) { + this.txtEligibility = newTxtEligibility; + } + + public String[] getTxtTestCenter() { + return this.txtTestCenter; + } + + public void setTxtTestCenter(String[] newTxtTestCenter) { + this.txtTestCenter = newTxtTestCenter; + } + + public String getReferenceNoId() { + return this.referenceNoId; + } + + public void setReferenceNoId(String newReferenceNoId) { + this.referenceNoId = newReferenceNoId; + } + + public String getAdForDesignationId() { + return this.adForDesignationId; + } + + public void setAdForDesignationId(String newAdForDesignationId) { + this.adForDesignationId = newAdForDesignationId; + } + + public String getTestCenterId() { + return this.testCenterId; + } + + public void setTestCenterId(String newTestCenterId) { + this.testCenterId = newTestCenterId; + } + + public String[] getTxtTestCenterId() { + return this.txtTestCenterId; + } + + public void setTxtTestCenterId(String[] newTxtTestCenterId) { + this.txtTestCenterId = newTxtTestCenterId; + } + + public String getDisabreferenceNo() { + return this.disabreferenceNo; + } + + public void setDisabreferenceNo(String newDisabreferenceNo) { + this.disabreferenceNo = newDisabreferenceNo; + } + + public String getDisabadForDesignation() { + return this.disabadForDesignation; + } + + public void setDisabadForDesignation(String newDisabadForDesignation) { + this.disabadForDesignation = newDisabadForDesignation; + } + + public String getDisabdiscipline() { + return this.disabdiscipline; + } + + public void setDisabdiscipline(String newDisabdiscipline) { + this.disabdiscipline = newDisabdiscipline; + } + + public String getDisabstageType() { + return this.disabstageType; + } + + public void setDisabstageType(String newDisabstageType) { + this.disabstageType = newDisabstageType; + } + + public String getDisabselectionRanges() { + return this.disabselectionRanges; + } + + public void setDisabselectionRanges(String newDisabselectionRanges) { + this.disabselectionRanges = newDisabselectionRanges; + } + + public String getDisabfromRank() { + return this.disabfromRank; + } + + public void setDisabfromRank(String newDisabfromRank) { + this.disabfromRank = newDisabfromRank; + } + + public String getDisabtoRank() { + return this.disabtoRank; + } + + public void setDisabtoRank(String newDisabtoRank) { + this.disabtoRank = newDisabtoRank; + } + + public String getDisabtestCenter() { + return this.disabtestCenter; + } + + public void setDisabtestCenter(String newDisabtestCenter) { + this.disabtestCenter = newDisabtestCenter; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getDisabreferenceNoId() { + return this.disabreferenceNoId; + } + + public void setDisabreferenceNoId(String newDisabreferenceNoId) { + this.disabreferenceNoId = newDisabreferenceNoId; + } + + public String getDisabadForDesignationId() { + return this.disabadForDesignationId; + } + + public void setDisabadForDesignationId(String newDisabadForDesignationId) { + this.disabadForDesignationId = newDisabadForDesignationId; + } + + public String getDisabtestCenterId() { + return this.disabtestCenterId; + } + + public void setDisabtestCenterId(String newDisabtestCenterId) { + this.disabtestCenterId = newDisabtestCenterId; + } + + public String[] getDisabtxtRank() { + return this.disabtxtRank; + } + + public void setDisabtxtRank(String[] newDisabtxtRank) { + this.disabtxtRank = newDisabtxtRank; + } + + public String[] getDisabtxtApplicantNo() { + return this.disabtxtApplicantNo; + } + + public void setDisabtxtApplicantNo(String[] newDisabtxtApplicantNo) { + this.disabtxtApplicantNo = newDisabtxtApplicantNo; + } + + public String[] getDisabtxtApplicantName() { + return this.disabtxtApplicantName; + } + + public void setDisabtxtApplicantName(String[] newDisabtxtApplicantName) { + this.disabtxtApplicantName = newDisabtxtApplicantName; + } + + public String[] getDisabtxtWrittemMarksA() { + return this.disabtxtWrittemMarksA; + } + + public void setDisabtxtWrittemMarksA(String[] newDisabtxtWrittemMarksA) { + this.disabtxtWrittemMarksA = newDisabtxtWrittemMarksA; + } + + public String[] getDisabtxtWrittemMarksB() { + return this.disabtxtWrittemMarksB; + } + + public void setDisabtxtWrittemMarksB(String[] newDisabtxtWrittemMarksB) { + this.disabtxtWrittemMarksB = newDisabtxtWrittemMarksB; + } + + public String[] getDisabtxtInterviewMarks() { + return this.disabtxtInterviewMarks; + } + + public void setDisabtxtInterviewMarks(String[] newDisabtxtInterviewMarks) { + this.disabtxtInterviewMarks = newDisabtxtInterviewMarks; + } + + public String[] getDisabtxtTotalScore() { + return this.disabtxtTotalScore; + } + + public void setDisabtxtTotalScore(String[] newDisabtxtTotalScore) { + this.disabtxtTotalScore = newDisabtxtTotalScore; + } + + public String[] getDisabtxtExpYrs() { + return this.disabtxtExpYrs; + } + + public void setDisabtxtExpYrs(String[] newDisabtxtExpYrs) { + this.disabtxtExpYrs = newDisabtxtExpYrs; + } + + public String[] getDisabtxtEligibility() { + return this.disabtxtEligibility; + } + + public void setDisabtxtEligibility(String[] newDisabtxtEligibility) { + this.disabtxtEligibility = newDisabtxtEligibility; + } + + public String[] getDisabtxtTestCenter() { + return this.disabtxtTestCenter; + } + + public void setDisabtxtTestCenter(String[] newDisabtxtTestCenter) { + this.disabtxtTestCenter = newDisabtxtTestCenter; + } + + public String[] getDisabtxtTestCenterId() { + return this.disabtxtTestCenterId; + } + + public void setDisabtxtTestCenterId(String[] newDisabtxtTestCenterId) { + this.disabtxtTestCenterId = newDisabtxtTestCenterId; + } + + public String getStage() { + return this.stage; + } + + public void setStage(String newStage) { + this.stage = newStage; + } + + public String getButGEA() { + return this.butGEA; + } + + public void setButGEA(String newButGEA) { + this.butGEA = newButGEA; + } + + public String getDisabbutGEA() { + return this.disabbutGEA; + } + + public void setDisabbutGEA(String newDisabbutGEA) { + this.disabbutGEA = newDisabbutGEA; + } + + public ArrayList getArylstScrutApplDtl() { + return this.arylstScrutApplDtl; + } + + public void setArylstScrutApplDtl(ArrayList newArylstScrutApplDtl) { + this.arylstScrutApplDtl = newArylstScrutApplDtl; + } + + public String[] getTxtApplicantId() { + return this.txtApplicantId; + } + + public void setTxtApplicantId(String[] newTxtApplicantId) { + this.txtApplicantId = newTxtApplicantId; + } + + public String getButReferenceNo() { + return this.butReferenceNo; + } + + public void setButReferenceNo(String newButReferenceNo) { + this.butReferenceNo = newButReferenceNo; + } + + public String getDisabbutReferenceNo() { + return this.disabbutReferenceNo; + } + + public void setDisabbutReferenceNo(String newDisabbutReferenceNo) { + this.disabbutReferenceNo = newDisabbutReferenceNo; + } + + public String getButAdForDesig() { + return this.butAdForDesig; + } + + public void setButAdForDesig(String newButAdForDesig) { + this.butAdForDesig = newButAdForDesig; + } + + public String getDisabbutAdForDesig() { + return this.disabbutAdForDesig; + } + + public void setDisabbutAdForDesig(String newDisabbutAdForDesig) { + this.disabbutAdForDesig = newDisabbutAdForDesig; + } + + public String[] getTxtStageId() { + return this.txtStageId; + } + + public void setTxtStageId(String[] newTxtStageId) { + this.txtStageId = newTxtStageId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecTestCentreMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecTestCentreMstForm.java new file mode 100644 index 0000000..a515049 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRecTestCentreMstForm.java @@ -0,0 +1,156 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRecTestCentreMstForm extends HrmBaseForm { + String testCentreCode; + + String testCentreName; + + String address; + + String phone; + + String fax; + + String testCentreCodeId; + + String disabaddress; + + String disabfax; + + String disabphone; + + String disabtestCentreName; + + String disabtestCentreCode; + + String disabtestCentreCodeId; + + String disabbutTestCentreCode; + + String butTestCentreCode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getTestCentreCode() { + return this.testCentreCode; + } + + public void setTestCentreCode(String newTestCentreCode) { + this.testCentreCode = newTestCentreCode; + } + + public String getTestCentreName() { + return this.testCentreName; + } + + public void setTestCentreName(String newTestCentreName) { + this.testCentreName = newTestCentreName; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String getTestCentreCodeId() { + return this.testCentreCodeId; + } + + public void setTestCentreCodeId(String newTestCentreCodeId) { + this.testCentreCodeId = newTestCentreCodeId; + } + + public String getDisabaddress() { + return this.disabaddress; + } + + public void setDisabaddress(String newDisabaddress) { + this.disabaddress = newDisabaddress; + } + + public String getDisabfax() { + return this.disabfax; + } + + public void setDisabfax(String newDisabfax) { + this.disabfax = newDisabfax; + } + + public String getDisabphone() { + return this.disabphone; + } + + public void setDisabphone(String newDisabphone) { + this.disabphone = newDisabphone; + } + + public String getDisabtestCentreName() { + return this.disabtestCentreName; + } + + public void setDisabtestCentreName(String newDisabtestCentreName) { + this.disabtestCentreName = newDisabtestCentreName; + } + + public String getDisabtestCentreCode() { + return this.disabtestCentreCode; + } + + public void setDisabtestCentreCode(String newDisabtestCentreCode) { + this.disabtestCentreCode = newDisabtestCentreCode; + } + + public String getDisabtestCentreCodeId() { + return this.disabtestCentreCodeId; + } + + public void setDisabtestCentreCodeId(String newDisabtestCentreCodeId) { + this.disabtestCentreCodeId = newDisabtestCentreCodeId; + } + + public String getDisabbutTestCentreCode() { + return this.disabbutTestCentreCode; + } + + public void setDisabbutTestCentreCode(String newDisabbutTestCentreCode) { + this.disabbutTestCentreCode = newDisabbutTestCentreCode; + } + + public String getButTestCentreCode() { + return this.butTestCentreCode; + } + + public void setButTestCentreCode(String newButTestCentreCode) { + this.butTestCentreCode = newButTestCentreCode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java new file mode 100644 index 0000000..36bfd55 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRetireForecastForm.java @@ -0,0 +1,125 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRetireForecastForm extends HrmBaseForm { + private String fromDate; + + private String toDate; + + private String butFromDate; + + private String disabbutFromDate; + + private String disabbutToDate; + + private String butGenReport; + + private String disabbutGenReport; + + private String butViewReport; + + private String disabbutViewReport; + + private String butInsertData; + + private String disabbutInsertData; + + private String flag1; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String newButFromDate) { + this.butFromDate = newButFromDate; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String newDisabbutFromDate) { + this.disabbutFromDate = newDisabbutFromDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String newDisabbutToDate) { + this.disabbutToDate = newDisabbutToDate; + } + + public String getButGenReport() { + return this.butGenReport; + } + + public void setButGenReport(String newButGenReport) { + this.butGenReport = newButGenReport; + } + + public String getDisabbutGenReport() { + return this.disabbutGenReport; + } + + public void setDisabbutGenReport(String newDisabbutGenReport) { + this.disabbutGenReport = newDisabbutGenReport; + } + + public String getButViewReport() { + return this.butViewReport; + } + + public void setButViewReport(String newButViewReport) { + this.butViewReport = newButViewReport; + } + + public String getDisabbutViewReport() { + return this.disabbutViewReport; + } + + public void setDisabbutViewReport(String newDisabbutViewReport) { + this.disabbutViewReport = newDisabbutViewReport; + } + + public String getButInsertData() { + return this.butInsertData; + } + + public void setButInsertData(String newButInsertData) { + this.butInsertData = newButInsertData; + } + + public String getDisabbutInsertData() { + return this.disabbutInsertData; + } + + public void setDisabbutInsertData(String newDisabbutInsertData) { + this.disabbutInsertData = newDisabbutInsertData; + } + + public String getFlag1() { + return this.flag1; + } + + public void setFlag1(String newFlag1) { + this.flag1 = newFlag1; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java new file mode 100644 index 0000000..4e3e9ee --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmRoasterEntryForm.java @@ -0,0 +1,267 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmRoasterEntryForm extends HrmBaseForm { + private String txtRoasterCode; + + private String txtRoasterDescription; + + private String roasterCodeId; + + private String disabtxtRoasterCode; + + private String selectAll; + + private String butRoasterCode; + + private String disabbutRoasterCode; + + private String disabtxtRoasterDescription; + + private String[] txtEmployeeNo; + + private String[] txtEmployeeName; + + private String[] txtAppointmentDate; + + private String[] txtDob; + + private String[] txtCategory; + + private String[] txtRoasterPoint; + + private String[] txtCategoryAsPerRoaster; + + private String[] socialStatus; + + private String[] empNoId; + + private String[] txtCategoryId; + + private String butCategoryAsPerRoaster; + + private String disabbutCategoryAsPerRoaster; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private ArrayList arrHrmRoasterEntryDtl = new ArrayList(); + + private String disabselectAll; + + private String[] entryMode; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String selectAll) { + this.selectAll = selectAll; + } + + public ArrayList getArrHrmRoasterEntryDtl() { + return this.arrHrmRoasterEntryDtl; + } + + public void setArrHrmRoasterEntryDtl(ArrayList arrHrmRoasterEntryDtl) { + this.arrHrmRoasterEntryDtl = arrHrmRoasterEntryDtl; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String disabselectAll) { + this.disabselectAll = disabselectAll; + } + + public String getTxtRoasterCode() { + return this.txtRoasterCode; + } + + public void setTxtRoasterCode(String txtRoasterCode) { + this.txtRoasterCode = txtRoasterCode; + } + + public String getTxtRoasterDescription() { + return this.txtRoasterDescription; + } + + public void setTxtRoasterDescription(String newTxtRoasterDescription) { + this.txtRoasterDescription = newTxtRoasterDescription; + } + + public String[] getTxtRoasterPoint() { + return this.txtRoasterPoint; + } + + public void setTxtRoasterPoint(String[] txtRoasterPoint) { + this.txtRoasterPoint = txtRoasterPoint; + } + + public String[] getTxtCategoryAsPerRoaster() { + return this.txtCategoryAsPerRoaster; + } + + public void setTxtCategoryAsPerRoaster(String[] txtCategoryAsPerRoaster) { + this.txtCategoryAsPerRoaster = txtCategoryAsPerRoaster; + } + + public String getDisabtxtRoasterDescription() { + return this.disabtxtRoasterDescription; + } + + public void setDisabtxtRoasterDescription(String newDisabtxtRoasterDescription) { + this.disabtxtRoasterDescription = newDisabtxtRoasterDescription; + } + + public String getDisabtxtRoasterCode() { + return this.disabtxtRoasterCode; + } + + public void setDisabtxtRoasterCode(String newDisabtxtRoasterCode) { + this.disabtxtRoasterCode = newDisabtxtRoasterCode; + } + + public String[] getSocialStatus() { + return this.socialStatus; + } + + public void setSocialStatus(String[] socialStatus) { + this.socialStatus = socialStatus; + } + + public String[] getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String[] empNoId) { + this.empNoId = empNoId; + } + + public String[] getTxtCategoryId() { + return this.txtCategoryId; + } + + public void setTxtCategoryId(String[] txtCategoryId) { + this.txtCategoryId = txtCategoryId; + } + + public String getRoasterCodeId() { + return this.roasterCodeId; + } + + public void setRoasterCodeId(String newRoasterCodeId) { + this.roasterCodeId = newRoasterCodeId; + } + + public String getButRoasterCode() { + return this.butRoasterCode; + } + + public void setButRoasterCode(String newButRoasterCode) { + this.butRoasterCode = newButRoasterCode; + } + + public String getDisabbutRoasterCode() { + return this.disabbutRoasterCode; + } + + public void setDisabbutRoasterCode(String newDisabbutRoasterCode) { + this.disabbutRoasterCode = newDisabbutRoasterCode; + } + + public String getButCategoryAsPerRoaster() { + return this.butCategoryAsPerRoaster; + } + + public void setButCategoryAsPerRoaster(String newButCategoryAsPerRoaster) { + this.butCategoryAsPerRoaster = newButCategoryAsPerRoaster; + } + + public String getDisabbutCategoryAsPerRoaster() { + return this.disabbutCategoryAsPerRoaster; + } + + public void setDisabbutCategoryAsPerRoaster(String newDisabbutCategoryAsPerRoaster) { + this.disabbutCategoryAsPerRoaster = newDisabbutCategoryAsPerRoaster; + } + + public String[] getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String[] txtEmployeeNo) { + this.txtEmployeeNo = txtEmployeeNo; + } + + public String[] getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public void setTxtEmployeeName(String[] txtEmployeeName) { + this.txtEmployeeName = txtEmployeeName; + } + + public String[] getTxtAppointmentDate() { + return this.txtAppointmentDate; + } + + public void setTxtAppointmentDate(String[] txtAppointmentDate) { + this.txtAppointmentDate = txtAppointmentDate; + } + + public String[] getTxtDob() { + return this.txtDob; + } + + public void setTxtDob(String[] txtDob) { + this.txtDob = txtDob; + } + + public String[] getTxtCategory() { + return this.txtCategory; + } + + public void setTxtCategory(String[] txtCategory) { + this.txtCategory = txtCategory; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String[] getEntryMode() { + return this.entryMode; + } + + public void setEntryMode(String[] entryMode) { + this.entryMode = entryMode; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepApplnForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepApplnForm.java new file mode 100644 index 0000000..e53730d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepApplnForm.java @@ -0,0 +1,356 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmSepApplnForm extends HrmBaseForm { + private String applicationNo; + + private String dateApplied; + + private String initiatedBy; + + private String butApplicationNo; + + private String butDateApplied; + + private String disabbutApplicationNo; + + private String disabbutDateApplied; + + private String employeeNo; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private String firstName; + + private String middleName; + + private String lastName; + + private String grade; + + private String designation; + + private String location; + + private String disabinitiatedBy; + + private String sepCat; + + private String butSepCat; + + private String disabbutSepCat; + + private String imEffect; + + private String disabimEffect; + + private String withFlag; + + private String disabwithFlag; + + private String reqSepDate; + + private String butReqSepDate; + + private String disabbutReqSepDate; + + private String actSepDate; + + private String reason; + + private String disabreason; + + private String applnId; + + private String empId; + + private String disabapplicationNo; + + private String sepCatId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getButApplicationNo() { + return this.butApplicationNo; + } + + public void setButApplicationNo(String newButApplicationNo) { + this.butApplicationNo = newButApplicationNo; + } + + public String getButDateApplied() { + return this.butDateApplied; + } + + public void setButDateApplied(String newButDateApplied) { + this.butDateApplied = newButDateApplied; + } + + public String getDisabbutApplicationNo() { + return this.disabbutApplicationNo; + } + + public void setDisabbutApplicationNo(String newDisabbutApplicationNo) { + this.disabbutApplicationNo = newDisabbutApplicationNo; + } + + public String getDisabbutDateApplied() { + return this.disabbutDateApplied; + } + + public void setDisabbutDateApplied(String newDisabbutDateApplied) { + this.disabbutDateApplied = newDisabbutDateApplied; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getDisabinitiatedBy() { + return this.disabinitiatedBy; + } + + public void setDisabinitiatedBy(String newDisabinitiatedBy) { + this.disabinitiatedBy = newDisabinitiatedBy; + } + + public String getSepCat() { + return this.sepCat; + } + + public void setSepCat(String newSepCat) { + this.sepCat = newSepCat; + } + + public String getButSepCat() { + return this.butSepCat; + } + + public void setButSepCat(String newButSepCat) { + this.butSepCat = newButSepCat; + } + + public String getDisabbutSepCat() { + return this.disabbutSepCat; + } + + public void setDisabbutSepCat(String newDisabbutSepCat) { + this.disabbutSepCat = newDisabbutSepCat; + } + + public String getImEffect() { + return this.imEffect; + } + + public void setImEffect(String newImEffect) { + this.imEffect = newImEffect; + } + + public String getDisabimEffect() { + return this.disabimEffect; + } + + public void setDisabimEffect(String newDisabimEffect) { + this.disabimEffect = newDisabimEffect; + } + + public String getWithFlag() { + return this.withFlag; + } + + public void setWithFlag(String newWithFlag) { + this.withFlag = newWithFlag; + } + + public String getDisabwithFlag() { + return this.disabwithFlag; + } + + public void setDisabwithFlag(String newDisabwithFlag) { + this.disabwithFlag = newDisabwithFlag; + } + + public String getReqSepDate() { + return this.reqSepDate; + } + + public void setReqSepDate(String newReqSepDate) { + this.reqSepDate = newReqSepDate; + } + + public String getButReqSepDate() { + return this.butReqSepDate; + } + + public void setButReqSepDate(String newButReqSepDate) { + this.butReqSepDate = newButReqSepDate; + } + + public String getDisabbutReqSepDate() { + return this.disabbutReqSepDate; + } + + public void setDisabbutReqSepDate(String newDisabbutReqSepDate) { + this.disabbutReqSepDate = newDisabbutReqSepDate; + } + + public String getActSepDate() { + return this.actSepDate; + } + + public void setActSepDate(String newActSepDate) { + this.actSepDate = newActSepDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getDisabreason() { + return this.disabreason; + } + + public void setDisabreason(String newDisabreason) { + this.disabreason = newDisabreason; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getDisabapplicationNo() { + return this.disabapplicationNo; + } + + public void setDisabapplicationNo(String newDisabapplicationNo) { + this.disabapplicationNo = newDisabapplicationNo; + } + + public String getSepCatId() { + return this.sepCatId; + } + + public void setSepCatId(String newSepCatId) { + this.sepCatId = newSepCatId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstForm.java new file mode 100644 index 0000000..c0239ac --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstForm.java @@ -0,0 +1,156 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmSepCatMstForm extends HrmBaseForm { + String separationId; + + String separationCode; + + String description; + + String noticePeriod; + + String remarks; + + String disabdescription; + + String disabnoticePeriod; + + String disabremarks; + + String disabseparationCode; + + String disabseparationId; + + String butSeparationCode; + + String disabbutSeparationCode; + + String separationType; + + String disabseparationType; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getNoticePeriod() { + return this.noticePeriod; + } + + public void setNoticePeriod(String newNoticePeriod) { + this.noticePeriod = newNoticePeriod; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSeparationId() { + return this.separationId; + } + + public void setSeparationId(String newSeparationId) { + this.separationId = newSeparationId; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabnoticePeriod() { + return this.disabnoticePeriod; + } + + public void setDisabnoticePeriod(String newDisabnoticePeriod) { + this.disabnoticePeriod = newDisabnoticePeriod; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getDisabseparationCode() { + return this.disabseparationCode; + } + + public void setDisabseparationCode(String newDisabseparationCode) { + this.disabseparationCode = newDisabseparationCode; + } + + public String getDisabseparationId() { + return this.disabseparationId; + } + + public void setDisabseparationId(String newDisabseparationId) { + this.disabseparationId = newDisabseparationId; + } + + public String getButSeparationCode() { + return this.butSeparationCode; + } + + public void setButSeparationCode(String newButSeparationCode) { + this.butSeparationCode = newButSeparationCode; + } + + public String getDisabbutSeparationCode() { + return this.disabbutSeparationCode; + } + + public void setDisabbutSeparationCode(String newDisabbutSeparationCode) { + this.disabbutSeparationCode = newDisabbutSeparationCode; + } + + public String getSeparationType() { + return this.separationType; + } + + public void setSeparationType(String newSeparationType) { + this.separationType = newSeparationType; + } + + public String getDisabseparationType() { + return this.disabseparationType; + } + + public void setDisabseparationType(String newDisabseparationType) { + this.disabseparationType = newDisabseparationType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstrForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstrForm.java new file mode 100644 index 0000000..57babae --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepCatMstrForm.java @@ -0,0 +1,203 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +public class HrmSepCatMstrForm { + String separationCode; + + String description; + + String noticePeriod; + + String remarks; + + String separationType; + + String screenName; + + String forwardedPage; + + String positionRequested; + + String screenMode; + + String separationId; + + String lovKey; + + String txtSearchFields; + + String txtDisplayFields; + + String txtIndex; + + String userPageRequested; + + String userPositionRequested; + + String pageRequested; + + String headerDataChanged; + + String headerPrimaryKey; + + String firstLoad; + + public String getSeparationCode() { + return this.separationCode; + } + + public void setSeparationCode(String newSeparationCode) { + this.separationCode = newSeparationCode; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getNoticePeriod() { + return this.noticePeriod; + } + + public void setNoticePeriod(String newNoticePeriod) { + this.noticePeriod = newNoticePeriod; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getSeparationType() { + return this.separationType; + } + + public void setSeparationType(String newSeparationType) { + this.separationType = newSeparationType; + } + + public String getScreenName() { + return this.screenName; + } + + public void setScreenName(String newScreenName) { + this.screenName = newScreenName; + } + + public String getForwardedPage() { + return this.forwardedPage; + } + + public void setForwardedPage(String newForwardedPage) { + this.forwardedPage = newForwardedPage; + } + + public String getPositionRequested() { + return this.positionRequested; + } + + public void setPositionRequested(String newPositionRequested) { + this.positionRequested = newPositionRequested; + } + + public String getScreenMode() { + return this.screenMode; + } + + public void setScreenMode(String newScreenMode) { + this.screenMode = newScreenMode; + } + + public String getSeparationId() { + return this.separationId; + } + + public void setSeparationId(String newSeparationId) { + this.separationId = newSeparationId; + } + + public String getLovKey() { + return this.lovKey; + } + + public void setLovKey(String newLovKey) { + this.lovKey = newLovKey; + } + + public String getTxtSearchFields() { + return this.txtSearchFields; + } + + public void setTxtSearchFields(String newTxtSearchFields) { + this.txtSearchFields = newTxtSearchFields; + } + + public String getTxtDisplayFields() { + return this.txtDisplayFields; + } + + public void setTxtDisplayFields(String newTxtDisplayFields) { + this.txtDisplayFields = newTxtDisplayFields; + } + + public String getTxtIndex() { + return this.txtIndex; + } + + public void setTxtIndex(String newTxtIndex) { + this.txtIndex = newTxtIndex; + } + + public String getUserPageRequested() { + return this.userPageRequested; + } + + public void setUserPageRequested(String newUserPageRequested) { + this.userPageRequested = newUserPageRequested; + } + + public String getUserPositionRequested() { + return this.userPositionRequested; + } + + public void setUserPositionRequested(String newUserPositionRequested) { + this.userPositionRequested = newUserPositionRequested; + } + + public String getPageRequested() { + return this.pageRequested; + } + + public void setPageRequested(String newPageRequested) { + this.pageRequested = newPageRequested; + } + + public String getHeaderDataChanged() { + return this.headerDataChanged; + } + + public void setHeaderDataChanged(String newHeaderDataChanged) { + this.headerDataChanged = newHeaderDataChanged; + } + + public String getHeaderPrimaryKey() { + return this.headerPrimaryKey; + } + + public void setHeaderPrimaryKey(String newHeaderPrimaryKey) { + this.headerPrimaryKey = newHeaderPrimaryKey; + } + + public String getFirstLoad() { + return this.firstLoad; + } + + public void setFirstLoad(String newFirstLoad) { + this.firstLoad = newFirstLoad; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrEmpForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrEmpForm.java new file mode 100644 index 0000000..426a221 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrEmpForm.java @@ -0,0 +1,147 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmSepClrEmpForm extends HrmBaseForm { + private String empNo; + + private String empNoId; + + private String tmplDesc; + + private String tmplDescId; + + private String butEmpNo; + + private String butTmplDesc; + + private String disabbutEmpNo; + + private String disabbutTmplDesc; + + private String[] txtClrDesc; + + private String[] txtClrDescId; + + private String[] txtCheckFlag; + + private String[] txtComment; + + private ArrayList arrHrmSepClrEmp; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getTmplDesc() { + return this.tmplDesc; + } + + public void setTmplDesc(String newTmplDesc) { + this.tmplDesc = newTmplDesc; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getButTmplDesc() { + return this.butTmplDesc; + } + + public void setButTmplDesc(String newButTmplDesc) { + this.butTmplDesc = newButTmplDesc; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getDisabbutTmplDesc() { + return this.disabbutTmplDesc; + } + + public void setDisabbutTmplDesc(String newDisabbutTmplDesc) { + this.disabbutTmplDesc = newDisabbutTmplDesc; + } + + public String[] getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String[] newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String[] getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String[] newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } + + public String[] getTxtCheckFlag() { + return this.txtCheckFlag; + } + + public void setTxtCheckFlag(String[] newTxtCheckFlag) { + this.txtCheckFlag = newTxtCheckFlag; + } + + public String[] getTxtComment() { + return this.txtComment; + } + + public void setTxtComment(String[] newTxtComment) { + this.txtComment = newTxtComment; + } + + public ArrayList getArrHrmSepClrEmp() { + return this.arrHrmSepClrEmp; + } + + public void setArrHrmSepClrEmp(ArrayList newArrHrmSepClrEmp) { + this.arrHrmSepClrEmp = newArrHrmSepClrEmp; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrLstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrLstForm.java new file mode 100644 index 0000000..380ed31 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrLstForm.java @@ -0,0 +1,87 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmSepClrLstForm extends HrmBaseForm { + String[] description; + + String[] type; + + String selectAll; + + String disabdescription; + + String disabexternalInternalFlag; + + String disabselectAll; + + ArrayList arrHrmSepClrLst = new ArrayList(); + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getDescription() { + return this.description; + } + + public void setDescription(String[] newDescription) { + this.description = newDescription; + } + + public String[] getType() { + return this.type; + } + + public void setType(String[] newExternalInternalFlag) { + this.type = newExternalInternalFlag; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabdescription() { + return this.disabdescription; + } + + public void setDisabdescription(String newDisabdescription) { + this.disabdescription = newDisabdescription; + } + + public String getDisabexternalInternalFlag() { + return this.disabexternalInternalFlag; + } + + public void setDisabexternalInternalFlag(String newDisabexternalInternalFlag) { + this.disabexternalInternalFlag = newDisabexternalInternalFlag; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public ArrayList getArrHrmSepClrLst() { + return this.arrHrmSepClrLst; + } + + public void setArrHrmSepClrLst(ArrayList newArrHrmSepClrLst) { + this.arrHrmSepClrLst = newArrHrmSepClrLst; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrTmplMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrTmplMstForm.java new file mode 100644 index 0000000..7c36fd9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepClrTmplMstForm.java @@ -0,0 +1,117 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmSepClrTmplMstForm extends HrmBaseForm { + private String tmplDesc; + + private String tmplDescId; + + private String obsoleteFlag; + + private String[] txtClrDescId; + + private String[] txtClrDesc; + + private String butTmplDesc; + + private ArrayList arrHrmSepClrTmplMst; + + private String disabbutTmplDesc = " "; + + private String disabtmplDesc = " "; + + private String butClrDesc; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getTmplDesc() { + return this.tmplDesc; + } + + public void setTmplDesc(String newTmplDesc) { + this.tmplDesc = newTmplDesc; + } + + public String getTmplDescId() { + return this.tmplDescId; + } + + public void setTmplDescId(String newTmplDescId) { + this.tmplDescId = newTmplDescId; + } + + public String getObsoleteFlag() { + return this.obsoleteFlag; + } + + public void setObsoleteFlag(String newObsoleteFlag) { + this.obsoleteFlag = newObsoleteFlag; + } + + public String[] getTxtClrDescId() { + return this.txtClrDescId; + } + + public void setTxtClrDescId(String[] newTxtClrDescId) { + this.txtClrDescId = newTxtClrDescId; + } + + public String[] getTxtClrDesc() { + return this.txtClrDesc; + } + + public void setTxtClrDesc(String[] newTxtClrDesc) { + this.txtClrDesc = newTxtClrDesc; + } + + public String getButTmplDesc() { + return this.butTmplDesc; + } + + public void setButTmplDesc(String newButTmplDesc) { + this.butTmplDesc = newButTmplDesc; + } + + public ArrayList getArrHrmSepClrTmplMst() { + return this.arrHrmSepClrTmplMst; + } + + public void setArrHrmSepClrTmplMst(ArrayList newArrHrmSepClrTmplMst) { + this.arrHrmSepClrTmplMst = newArrHrmSepClrTmplMst; + } + + public String getDisabbutTmplDesc() { + return this.disabbutTmplDesc; + } + + public void setDisabbutTmplDesc(String newDisabbutTmplDesc) { + this.disabbutTmplDesc = newDisabbutTmplDesc; + } + + public String getDisabtmplDesc() { + return this.disabtmplDesc; + } + + public void setDisabtmplDesc(String newDisabtmplDesc) { + this.disabtmplDesc = newDisabtmplDesc; + } + + public String getButClrDesc() { + return this.butClrDesc; + } + + public void setButClrDesc(String newButClrDesc) { + this.butClrDesc = newButClrDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepOrderForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepOrderForm.java new file mode 100644 index 0000000..262237e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSepOrderForm.java @@ -0,0 +1,316 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmSepOrderForm extends HrmBaseForm { + private String orderNo; + + private String orderDate; + + private String butOrderNo; + + private String butOrderDate; + + private String disabbutOrderNo; + + private String disabbutOrderDate; + + private String orderNoId; + + private String applicationNo; + + private String butApplicationNo; + + private String disabbutApplicationNo; + + private String dateApplied; + + private String initiatedBy; + + private String employeeNo; + + private String employeeName; + + private String sepCat; + + private String reqSepDate; + + private String reason; + + private String actSepDate; + + private String butActSepDate; + + private String disabbutActSepDate; + + private String approvedBy; + + private String butApprovedBy; + + private String disabbutApprovedBy; + + private String remarks; + + private String disabremarks; + + private String applnId; + + private String approverId; + + private String empId; + + private String sepCatId; + + private String disaborderNo; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getOrderDate() { + return this.orderDate; + } + + public void setOrderDate(String newOrderDate) { + this.orderDate = newOrderDate; + } + + public String getOrderNo() { + return this.orderNo; + } + + public void setOrderNo(String newOrderNo) { + this.orderNo = newOrderNo; + } + + public String getButOrderNo() { + return this.butOrderNo; + } + + public void setButOrderNo(String newButOrderNo) { + this.butOrderNo = newButOrderNo; + } + + public String getDisabbutOrderNo() { + return this.disabbutOrderNo; + } + + public void setDisabbutOrderNo(String newDisabbutOrderNo) { + this.disabbutOrderNo = newDisabbutOrderNo; + } + + public String getButOrderDate() { + return this.butOrderDate; + } + + public void setButOrderDate(String newButOrderDate) { + this.butOrderDate = newButOrderDate; + } + + public String getDisabbutOrderDate() { + return this.disabbutOrderDate; + } + + public void setDisabbutOrderDate(String newDisabbutOrderDate) { + this.disabbutOrderDate = newDisabbutOrderDate; + } + + public String getOrderNoId() { + return this.orderNoId; + } + + public void setOrderNoId(String newOrderNoId) { + this.orderNoId = newOrderNoId; + } + + public String getApplicationNo() { + return this.applicationNo; + } + + public void setApplicationNo(String newApplicationNo) { + this.applicationNo = newApplicationNo; + } + + public String getButApplicationNo() { + return this.butApplicationNo; + } + + public void setButApplicationNo(String newButApplicationNo) { + this.butApplicationNo = newButApplicationNo; + } + + public String getDisabbutApplicationNo() { + return this.disabbutApplicationNo; + } + + public void setDisabbutApplicationNo(String newDisabbutApplicationNo) { + this.disabbutApplicationNo = newDisabbutApplicationNo; + } + + public String getDateApplied() { + return this.dateApplied; + } + + public void setDateApplied(String newDateApplied) { + this.dateApplied = newDateApplied; + } + + public String getInitiatedBy() { + return this.initiatedBy; + } + + public void setInitiatedBy(String newInitiatedBy) { + this.initiatedBy = newInitiatedBy; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getSepCat() { + return this.sepCat; + } + + public void setSepCat(String newSepCat) { + this.sepCat = newSepCat; + } + + public String getReqSepDate() { + return this.reqSepDate; + } + + public void setReqSepDate(String newReqSepDate) { + this.reqSepDate = newReqSepDate; + } + + public String getReason() { + return this.reason; + } + + public void setReason(String newReason) { + this.reason = newReason; + } + + public String getActSepDate() { + return this.actSepDate; + } + + public void setActSepDate(String newActSepDate) { + this.actSepDate = newActSepDate; + } + + public String getButActSepDate() { + return this.butActSepDate; + } + + public void setButActSepDate(String newButActSepDate) { + this.butActSepDate = newButActSepDate; + } + + public String getDisabbutActSepDate() { + return this.disabbutActSepDate; + } + + public void setDisabbutActSepDate(String newDisabbutActSepDate) { + this.disabbutActSepDate = newDisabbutActSepDate; + } + + public String getApprovedBy() { + return this.approvedBy; + } + + public void setApprovedBy(String newApprovedBy) { + this.approvedBy = newApprovedBy; + } + + public String getButApprovedBy() { + return this.butApprovedBy; + } + + public void setButApprovedBy(String newButApprovedBy) { + this.butApprovedBy = newButApprovedBy; + } + + public String getDisabbutApprovedBy() { + return this.disabbutApprovedBy; + } + + public void setDisabbutApprovedBy(String newDisabbutApprovedBy) { + this.disabbutApprovedBy = newDisabbutApprovedBy; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String newRemarks) { + this.remarks = newRemarks; + } + + public String getDisabremarks() { + return this.disabremarks; + } + + public void setDisabremarks(String newDisabremarks) { + this.disabremarks = newDisabremarks; + } + + public String getApplnId() { + return this.applnId; + } + + public void setApplnId(String newApplnId) { + this.applnId = newApplnId; + } + + public String getApproverId() { + return this.approverId; + } + + public void setApproverId(String newApproverId) { + this.approverId = newApproverId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getSepCatId() { + return this.sepCatId; + } + + public void setSepCatId(String newSepCatId) { + this.sepCatId = newSepCatId; + } + + public String getDisaborderNo() { + return this.disaborderNo; + } + + public void setDisaborderNo(String newDisaborderNo) { + this.disaborderNo = newDisaborderNo; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSettlementHeadsForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSettlementHeadsForm.java new file mode 100644 index 0000000..a6a141d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmSettlementHeadsForm.java @@ -0,0 +1,137 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmSettlementHeadsForm extends HrmBaseForm { + String advanceDescription; + + String[] txtHeadName; + + String[] txtMaxLimit; + + private ArrayList arrSettleHeads = new ArrayList(); + + String selectAll; + + String disabadvanceDescription; + + String disabtxtHeadName; + + String disabtxtMaxLimit; + + String disabadvanceCode; + + String disabbutAdvanceCode; + + String advCodeId; + + String disabbutAdvanceDescription; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getAdvanceDescription() { + return this.advanceDescription; + } + + public void setAdvanceDescription(String newAdvanceDescription) { + this.advanceDescription = newAdvanceDescription; + } + + public String[] getTxtHeadName() { + return this.txtHeadName; + } + + public String[] getTxtMaxLimit() { + return this.txtMaxLimit; + } + + public ArrayList getArrSettleHeads() { + return this.arrSettleHeads; + } + + public void setArrSettleHeads(ArrayList newArrSettleHeads) { + this.arrSettleHeads = newArrSettleHeads; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public void setTxtMaxLimit(String[] newTxtMaxLimit) { + this.txtMaxLimit = newTxtMaxLimit; + } + + public void setTxtHeadName(String[] newTxtHeadName) { + this.txtHeadName = newTxtHeadName; + } + + public String getDisabadvanceDescription() { + return this.disabadvanceDescription; + } + + public void setDisabadvanceDescription(String newDisabadvanceDescription) { + this.disabadvanceDescription = newDisabadvanceDescription; + } + + public String getDisabtxtHeadName() { + return this.disabtxtHeadName; + } + + public void setDisabtxtHeadName(String newDisabtxtHeadName) { + this.disabtxtHeadName = newDisabtxtHeadName; + } + + public String getDisabtxtMaxLimit() { + return this.disabtxtMaxLimit; + } + + public void setDisabtxtMaxLimit(String newDisabtxtMaxLimit) { + this.disabtxtMaxLimit = newDisabtxtMaxLimit; + } + + public String getDisabadvanceCode() { + return this.disabadvanceCode; + } + + public void setDisabadvanceCode(String newDisabadvanceCode) { + this.disabadvanceCode = newDisabadvanceCode; + } + + public String getDisabbutAdvanceCode() { + return this.disabbutAdvanceCode; + } + + public void setDisabbutAdvanceCode(String newDisabbutAdvanceCode) { + this.disabbutAdvanceCode = newDisabbutAdvanceCode; + } + + public String getAdvCodeId() { + return this.advCodeId; + } + + public void setAdvCodeId(String newAdvCodeId) { + this.advCodeId = newAdvCodeId; + } + + public String getDisabbutAdvanceDescription() { + return this.disabbutAdvanceDescription; + } + + public void setDisabbutAdvanceDescription(String newDisabbutAdvanceDescription) { + this.disabbutAdvanceDescription = newDisabbutAdvanceDescription; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngBudgetForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngBudgetForm.java new file mode 100644 index 0000000..5f1cedf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngBudgetForm.java @@ -0,0 +1,357 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngBudgetForm extends HrmBaseForm { + private ArrayList arrHrmTrngBud = new ArrayList(); + + private String butCalendar; + + private String disabbutCalendar; + + private String calendarName; + + private String description; + + private String approvedBudget; + + private String disabapprovedBudget; + + private String spentTillDate; + + private String availableBudget; + + private String[] selectAll; + + private String[] txtCourseName; + + private String[] txtFromDate; + + private String[] txtToDate; + + private String[] txtCourseId; + + private String butTxtCourseName; + + private String disabbutTxtCourseName; + + private String[] txtTravel; + + private String disabtxtTravel; + + private String[] txtAccomodation; + + private String disabtxtAccomodation; + + private String[] txtDailyAllowances; + + private String disabtxtDailyAllowances; + + private String[] txtFood; + + private String disabtxtFood; + + private String[] txtFees; + + private String disabtxtFees; + + private String[] txtMisc; + + private String disabtxtMisc; + + private String[] txtTotal; + + private String calendarId; + + private String butTxtStartDate; + + private String disabbutTxtStartDate; + + private String butTxtEndDate; + + private String disabbutTxtEndDate; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public ArrayList getArrHrmTrngBud() { + return this.arrHrmTrngBud; + } + + public void setArrHrmTrngBud(ArrayList newArrHrmTrngBud) { + this.arrHrmTrngBud = newArrHrmTrngBud; + } + + public String getButCalendar() { + return this.butCalendar; + } + + public void setButCalendar(String newButCalendar) { + this.butCalendar = newButCalendar; + } + + public String getDisabbutCalendar() { + return this.disabbutCalendar; + } + + public void setDisabbutCalendar(String newDisabbutCalendar) { + this.disabbutCalendar = newDisabbutCalendar; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String newDescription) { + this.description = newDescription; + } + + public String getApprovedBudget() { + return this.approvedBudget; + } + + public void setApprovedBudget(String newApprovedBudget) { + this.approvedBudget = newApprovedBudget; + } + + public String getDisabapprovedBudget() { + return this.disabapprovedBudget; + } + + public void setDisabapprovedBudget(String newDisabapprovedBudget) { + this.disabapprovedBudget = newDisabapprovedBudget; + } + + public String getSpentTillDate() { + return this.spentTillDate; + } + + public void setSpentTillDate(String newSpentTillDate) { + this.spentTillDate = newSpentTillDate; + } + + public String getAvailableBudget() { + return this.availableBudget; + } + + public void setAvailableBudget(String newAvailableBudget) { + this.availableBudget = newAvailableBudget; + } + + public String[] getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String[] newSelectAll) { + this.selectAll = newSelectAll; + } + + public String[] getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String[] newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String[] getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String[] newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String[] getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String[] newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String[] getTxtCourseId() { + return this.txtCourseId; + } + + public void setTxtCourseId(String[] newTxtCourseId) { + this.txtCourseId = newTxtCourseId; + } + + public String getButTxtCourseName() { + return this.butTxtCourseName; + } + + public void setButTxtCourseName(String newButTxtCourseName) { + this.butTxtCourseName = newButTxtCourseName; + } + + public String getDisabbutTxtCourseName() { + return this.disabbutTxtCourseName; + } + + public void setDisabbutTxtCourseName(String newDisabbutTxtCourseName) { + this.disabbutTxtCourseName = newDisabbutTxtCourseName; + } + + public String[] getTxtTravel() { + return this.txtTravel; + } + + public void setTxtTravel(String[] newTxtTravel) { + this.txtTravel = newTxtTravel; + } + + public String getDisabtxtTravel() { + return this.disabtxtTravel; + } + + public void setDisabtxtTravel(String newDisabtxtTravel) { + this.disabtxtTravel = newDisabtxtTravel; + } + + public String[] getTxtAccomodation() { + return this.txtAccomodation; + } + + public void setTxtAccomodation(String[] newTxtAccomodation) { + this.txtAccomodation = newTxtAccomodation; + } + + public String getDisabtxtAccomodation() { + return this.disabtxtAccomodation; + } + + public void setDisabtxtAccomodation(String newDisabtxtAccomodation) { + this.disabtxtAccomodation = newDisabtxtAccomodation; + } + + public String[] getTxtDailyAllowances() { + return this.txtDailyAllowances; + } + + public void setTxtDailyAllowances(String[] newTxtDailyAllowances) { + this.txtDailyAllowances = newTxtDailyAllowances; + } + + public String getDisabtxtDailyAllowances() { + return this.disabtxtDailyAllowances; + } + + public void setDisabtxtDailyAllowances(String newDisabtxtDailyAllowances) { + this.disabtxtDailyAllowances = newDisabtxtDailyAllowances; + } + + public String[] getTxtFood() { + return this.txtFood; + } + + public void setTxtFood(String[] newTxtFood) { + this.txtFood = newTxtFood; + } + + public String getDisabtxtFood() { + return this.disabtxtFood; + } + + public void setDisabtxtFood(String newDisabtxtFood) { + this.disabtxtFood = newDisabtxtFood; + } + + public String[] getTxtFees() { + return this.txtFees; + } + + public void setTxtFees(String[] newTxtFees) { + this.txtFees = newTxtFees; + } + + public String getDisabtxtFees() { + return this.disabtxtFees; + } + + public void setDisabtxtFees(String newDisabtxtFees) { + this.disabtxtFees = newDisabtxtFees; + } + + public String[] getTxtMisc() { + return this.txtMisc; + } + + public void setTxtMisc(String[] newTxtMisc) { + this.txtMisc = newTxtMisc; + } + + public String getDisabtxtMisc() { + return this.disabtxtMisc; + } + + public void setDisabtxtMisc(String newDisabtxtMisc) { + this.disabtxtMisc = newDisabtxtMisc; + } + + public String[] getTxtTotal() { + return this.txtTotal; + } + + public void setTxtTotal(String[] newTxtTotal) { + this.txtTotal = newTxtTotal; + } + + public String getCalendarId() { + return this.calendarId; + } + + public void setCalendarId(String newCalendarId) { + this.calendarId = newCalendarId; + } + + public String getButTxtStartDate() { + return this.butTxtStartDate; + } + + public void setButTxtStartDate(String newButTxtStartDate) { + this.butTxtStartDate = newButTxtStartDate; + } + + public String getDisabbutTxtStartDate() { + return this.disabbutTxtStartDate; + } + + public void setDisabbutTxtStartDate(String newDisabbutTxtStartDate) { + this.disabbutTxtStartDate = newDisabbutTxtStartDate; + } + + public String getButTxtEndDate() { + return this.butTxtEndDate; + } + + public void setButTxtEndDate(String newButTxtEndDate) { + this.butTxtEndDate = newButTxtEndDate; + } + + public String getDisabbutTxtEndDate() { + return this.disabbutTxtEndDate; + } + + public void setDisabbutTxtEndDate(String newDisabbutTxtEndDate) { + this.disabbutTxtEndDate = newDisabbutTxtEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalCloseForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalCloseForm.java new file mode 100644 index 0000000..32511f4 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalCloseForm.java @@ -0,0 +1,166 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngCalCloseForm extends HrmBaseForm { + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String disabcourseName; + + private String disabendDate; + + private String disabinstitutionName; + + private String disabstartDate; + + private String disabbutCourseName; + + private String disabbutStartDate; + + private String disabbutEndDate; + + private String calHdrId; + + private String courseCode; + + private String calendarName; + + private String calDtlId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getDisabcourseName() { + return this.disabcourseName; + } + + public void setDisabcourseName(String newDisabcourseName) { + this.disabcourseName = newDisabcourseName; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String getDisabinstitutionName() { + return this.disabinstitutionName; + } + + public void setDisabinstitutionName(String newDisabinstitutionName) { + this.disabinstitutionName = newDisabinstitutionName; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getDisabbutCourseName() { + return this.disabbutCourseName; + } + + public void setDisabbutCourseName(String newDisabbutCourseName) { + this.disabbutCourseName = newDisabbutCourseName; + } + + public String getDisabbutStartDate() { + return this.disabbutStartDate; + } + + public void setDisabbutStartDate(String newDisabbutStartDate) { + this.disabbutStartDate = newDisabbutStartDate; + } + + public String getDisabbutEndDate() { + return this.disabbutEndDate; + } + + public void setDisabbutEndDate(String newDisabbutEndDate) { + this.disabbutEndDate = newDisabbutEndDate; + } + + public String getCalHdrId() { + return this.calHdrId; + } + + public void setCalHdrId(String newCalHdrId) { + this.calHdrId = newCalHdrId; + } + + public String getCourseCode() { + return this.courseCode; + } + + public void setCourseCode(String newCourseCode) { + this.courseCode = newCourseCode; + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCalDtlId() { + return this.calDtlId; + } + + public void setCalDtlId(String newCalDtlId) { + this.calDtlId = newCalDtlId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalForm.java new file mode 100644 index 0000000..d2f9a29 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCalForm.java @@ -0,0 +1,547 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngCalForm extends HrmBaseForm { + private String siteId; + + private String calId; + + private String calendarName; + + private String site; + + private String startDate; + + private String endDate; + + private String[] txtStartDate; + + private String[] txtEndDate; + + private String[] txtInstituteName; + + private String[] txtCourseCode; + + private String[] txtType; + + private String[] txtStrength; + + private String[] txtFee; + + private String[] txtRatingScheme; + + private String[] txtStatus; + + private ArrayList arrHrmTrngCal = new ArrayList(); + + private String selectAll; + + private String siteName; + + private String[] txtInsCode; + + private String[] txtCourseId; + + private String[] txtInstId; + + private String disabsiteId; + + private String disabcalId; + + private String disabcalendarName; + + private String disabsite; + + private String disabstartDate; + + private String disabendDate; + + private String disabtxtStartDate; + + private String disabtxtEndDate; + + private String disabtxtInstituteName; + + private String disabtxtCourseCode; + + private String disabtxtType; + + private String disabtxtStrength; + + private String disabtxtFee; + + private String disabtxtRatingScheme; + + private String disabtxtStatus; + + private String disabselectAll; + + private String disabsiteName; + + private String disabtxtInsCode; + + private String disabtxtCourseId; + + private String disabbutCalendarName; + + private String disabbutSite; + + private String disabbutStartDate; + + private String disabbutEndDate; + + private String disabTxtInstituteName; + + private String disabTxtCourseCode; + + private String disabbutTxtStartDate; + + private String disabbutTxtEndDate; + + private String disabbutRating; + + private String[] ratingId; + + private String[] txtCourseName; + + private String[] txtVenue; + + private String[] txtDuration; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String[] getTxtStartDate() { + return this.txtStartDate; + } + + public void setTxtStartDate(String[] newTxtStartDate) { + this.txtStartDate = newTxtStartDate; + } + + public String[] getTxtEndDate() { + return this.txtEndDate; + } + + public void setTxtEndDate(String[] newTxtEndDate) { + this.txtEndDate = newTxtEndDate; + } + + public String[] getTxtInstituteName() { + return this.txtInstituteName; + } + + public void setTxtInstituteName(String[] newTxtInstituteName) { + this.txtInstituteName = newTxtInstituteName; + } + + public String[] getTxtCourseCode() { + return this.txtCourseCode; + } + + public void setTxtCourseCode(String[] newTxtCourseCode) { + this.txtCourseCode = newTxtCourseCode; + } + + public String[] getTxtType() { + return this.txtType; + } + + public void setTxtType(String[] newTxtType) { + this.txtType = newTxtType; + } + + public String[] getTxtStrength() { + return this.txtStrength; + } + + public void setTxtStrength(String[] newTxtStrength) { + this.txtStrength = newTxtStrength; + } + + public String[] getTxtFee() { + return this.txtFee; + } + + public void setTxtFee(String[] newTxtFee) { + this.txtFee = newTxtFee; + } + + public String[] getTxtRatingScheme() { + return this.txtRatingScheme; + } + + public void setTxtRatingScheme(String[] newTxtRatingScheme) { + this.txtRatingScheme = newTxtRatingScheme; + } + + public String[] getTxtStatus() { + return this.txtStatus; + } + + public void setTxtStatus(String[] newTxtStatus) { + this.txtStatus = newTxtStatus; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public ArrayList getArrHrmTrngCal() { + return this.arrHrmTrngCal; + } + + public void setArrHrmTrngCal(ArrayList newArrHrmTrngCal) { + this.arrHrmTrngCal = newArrHrmTrngCal; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String[] getTxtInsCode() { + return this.txtInsCode; + } + + public void setTxtInsCode(String[] newTxtInsCode) { + this.txtInsCode = newTxtInsCode; + } + + public String[] getTxtCourseId() { + return this.txtCourseId; + } + + public String[] getTxtInstId() { + return this.txtInstId; + } + + public void setTxtCourseId(String[] newTxtCourseId) { + this.txtCourseId = newTxtCourseId; + } + + public void setTxtInstId(String[] newTxtInstId) { + this.txtInstId = newTxtInstId; + } + + public String getDisabsiteId() { + return this.disabsiteId; + } + + public void setDisabsiteId(String newDisabsiteId) { + this.disabsiteId = newDisabsiteId; + } + + public String getDisabcalId() { + return this.disabcalId; + } + + public void setDisabcalId(String newDisabcalId) { + this.disabcalId = newDisabcalId; + } + + public String getDisabcalendarName() { + return this.disabcalendarName; + } + + public void setDisabcalendarName(String newDisabcalendarName) { + this.disabcalendarName = newDisabcalendarName; + } + + public String getDisabsite() { + return this.disabsite; + } + + public void setDisabsite(String newDisabsite) { + this.disabsite = newDisabsite; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String getDisabtxtStartDate() { + return this.disabtxtStartDate; + } + + public void setDisabtxtStartDate(String newDisabtxtStartDate) { + this.disabtxtStartDate = newDisabtxtStartDate; + } + + public String getDisabtxtEndDate() { + return this.disabtxtEndDate; + } + + public void setDisabtxtEndDate(String newDisabtxtEndDate) { + this.disabtxtEndDate = newDisabtxtEndDate; + } + + public String getDisabtxtInstituteName() { + return this.disabtxtInstituteName; + } + + public void setDisabtxtInstituteName(String newDisabtxtInstituteName) { + this.disabtxtInstituteName = newDisabtxtInstituteName; + } + + public String getDisabtxtCourseCode() { + return this.disabtxtCourseCode; + } + + public void setDisabtxtCourseCode(String newDisabtxtCourseCode) { + this.disabtxtCourseCode = newDisabtxtCourseCode; + } + + public String getDisabtxtType() { + return this.disabtxtType; + } + + public void setDisabtxtType(String newDisabtxtType) { + this.disabtxtType = newDisabtxtType; + } + + public String getDisabtxtStrength() { + return this.disabtxtStrength; + } + + public void setDisabtxtStrength(String newDisabtxtStrength) { + this.disabtxtStrength = newDisabtxtStrength; + } + + public String getDisabtxtFee() { + return this.disabtxtFee; + } + + public void setDisabtxtFee(String newDisabtxtFee) { + this.disabtxtFee = newDisabtxtFee; + } + + public String getDisabtxtRatingScheme() { + return this.disabtxtRatingScheme; + } + + public void setDisabtxtRatingScheme(String newDisabtxtRatingScheme) { + this.disabtxtRatingScheme = newDisabtxtRatingScheme; + } + + public String getDisabtxtStatus() { + return this.disabtxtStatus; + } + + public void setDisabtxtStatus(String newDisabtxtStatus) { + this.disabtxtStatus = newDisabtxtStatus; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabsiteName() { + return this.disabsiteName; + } + + public void setDisabsiteName(String newDisabsiteName) { + this.disabsiteName = newDisabsiteName; + } + + public String getDisabtxtInsCode() { + return this.disabtxtInsCode; + } + + public void setDisabtxtInsCode(String newDisabtxtInsCode) { + this.disabtxtInsCode = newDisabtxtInsCode; + } + + public String getDisabtxtCourseId() { + return this.disabtxtCourseId; + } + + public void setDisabtxtCourseId(String newDisabtxtCourseId) { + this.disabtxtCourseId = newDisabtxtCourseId; + } + + public String getDisabbutCalendarName() { + return this.disabbutCalendarName; + } + + public void setDisabbutCalendarName(String newDisabbutCalendarName) { + this.disabbutCalendarName = newDisabbutCalendarName; + } + + public String getDisabbutSite() { + return this.disabbutSite; + } + + public void setDisabbutSite(String newDisabbutSite) { + this.disabbutSite = newDisabbutSite; + } + + public String getDisabbutStartDate() { + return this.disabbutStartDate; + } + + public void setDisabbutStartDate(String newDisabbutStartDate) { + this.disabbutStartDate = newDisabbutStartDate; + } + + public String getDisabbutEndDate() { + return this.disabbutEndDate; + } + + public void setDisabbutEndDate(String newDisabbutEndDate) { + this.disabbutEndDate = newDisabbutEndDate; + } + + public String getDisabTxtInstituteName() { + return this.disabTxtInstituteName; + } + + public void setDisabTxtInstituteName(String newDisabTxtInstituteName) { + this.disabTxtInstituteName = newDisabTxtInstituteName; + } + + public String getDisabTxtCourseCode() { + return this.disabTxtCourseCode; + } + + public void setDisabTxtCourseCode(String newDisabTxtCourseCode) { + this.disabTxtCourseCode = newDisabTxtCourseCode; + } + + public String getDisabbutTxtStartDate() { + return this.disabbutTxtStartDate; + } + + public void setDisabbutTxtStartDate(String newDisabbutTxtStartDate) { + this.disabbutTxtStartDate = newDisabbutTxtStartDate; + } + + public String getDisabbutTxtEndDate() { + return this.disabbutTxtEndDate; + } + + public void setDisabbutTxtEndDate(String newDisabbutTxtEndDate) { + this.disabbutTxtEndDate = newDisabbutTxtEndDate; + } + + public String getDisabbutRating() { + return this.disabbutRating; + } + + public void setDisabbutRating(String newDisabbutRating) { + this.disabbutRating = newDisabbutRating; + } + + public String[] getRatingId() { + return this.ratingId; + } + + public void setRatingId(String[] newRatingId) { + this.ratingId = newRatingId; + } + + public String[] getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String[] newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public String[] getTxtVenue() { + return this.txtVenue; + } + + public void setTxtVenue(String[] newTxtVenue) { + this.txtVenue = newTxtVenue; + } + + public String[] getTxtDuration() { + return this.txtDuration; + } + + public void setTxtDuration(String[] newTxtDuration) { + this.txtDuration = newTxtDuration; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCrsMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCrsMstForm.java new file mode 100644 index 0000000..113bb7d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngCrsMstForm.java @@ -0,0 +1,227 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngCrsMstForm extends HrmBaseForm { + private String trainingBranch; + + private String branchName; + + private String[] txtCourse; + + private String[] txtName; + + private String[] txtMaxAttend; + + private String[] txtMinAttend; + + private ArrayList arrHrmTrngCourse = new ArrayList(); + + private String selectAll; + + private String trgMstBranchId; + + private String disabbranchName; + + private String disabselectAll; + + private String disabtrainingBranch; + + private String disabtrgMstBranchId; + + private String disabtxtCourse; + + private String disabtxtName; + + private String butTrainingStreams; + + private String disabbutTrainingStreams; + + private String butTrngMstTab; + + private String disabbutTrngMstTab; + + private String disabtxtMaxAttend; + + private String disabtxtMinAttend; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getTrainingBranch() { + return this.trainingBranch; + } + + public void setTrainingBranch(String newTrainingBranch) { + this.trainingBranch = newTrainingBranch; + } + + public String getBranchName() { + return this.branchName; + } + + public void setBranchName(String newBranchName) { + this.branchName = newBranchName; + } + + public String[] getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String[] newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String[] getTxtName() { + return this.txtName; + } + + public void setTxtName(String[] newTxtName) { + this.txtName = newTxtName; + } + + public String[] getTxtMaxAttend() { + return this.txtMaxAttend; + } + + public void setTxtMaxAttend(String[] newTxtMaxAttend) { + this.txtMaxAttend = newTxtMaxAttend; + } + + public String[] getTxtMinAttend() { + return this.txtMinAttend; + } + + public void setTxtMinAttend(String[] newTxtMinAttend) { + this.txtMinAttend = newTxtMinAttend; + } + + public ArrayList getArrHrmTrngCourse() { + return this.arrHrmTrngCourse; + } + + public void setArrHrmTrngCourse(ArrayList newArrHrmTrngCourse) { + this.arrHrmTrngCourse = newArrHrmTrngCourse; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getTrgMstBranchId() { + return this.trgMstBranchId; + } + + public void setTrgMstBranchId(String newTrgMstBranchId) { + this.trgMstBranchId = newTrgMstBranchId; + } + + public String getDisabbranchName() { + return this.disabbranchName; + } + + public void setDisabbranchName(String newDisabbranchName) { + this.disabbranchName = newDisabbranchName; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabtrainingBranch() { + return this.disabtrainingBranch; + } + + public void setDisabtrainingBranch(String newDisabtrainingBranch) { + this.disabtrainingBranch = newDisabtrainingBranch; + } + + public String getDisabtrgMstBranchId() { + return this.disabtrgMstBranchId; + } + + public void setDisabtrgMstBranchId(String newDisabtrgMstBranchId) { + this.disabtrgMstBranchId = newDisabtrgMstBranchId; + } + + public String getDisabtxtCourse() { + return this.disabtxtCourse; + } + + public void setDisabtxtCourse(String newDisabtxtCourse) { + this.disabtxtCourse = newDisabtxtCourse; + } + + public String getDisabtxtName() { + return this.disabtxtName; + } + + public void setDisabtxtName(String newDisabtxtName) { + this.disabtxtName = newDisabtxtName; + } + + public String getDisabtxtMaxAttend() { + return this.disabtxtMaxAttend; + } + + public void setDisabtxtMaxAttend(String newDisabtxtMaxAttend) { + this.disabtxtMaxAttend = newDisabtxtMaxAttend; + } + + public String getDisabtxtMinAttend() { + return this.disabtxtMinAttend; + } + + public void setDisabtxtMinAttend(String newDisabtxtMinAttend) { + this.disabtxtMinAttend = newDisabtxtMinAttend; + } + + public String getButTrainingStreams() { + return this.butTrainingStreams; + } + + public void setButTrainingStreams(String newButTrainingStreams) { + this.butTrainingStreams = newButTrainingStreams; + } + + public String getDisabbutTrainingStreams() { + return this.disabbutTrainingStreams; + } + + public void setDisabbutTrainingStreams(String newDisabbutTrainingStreams) { + this.disabbutTrainingStreams = newDisabbutTrainingStreams; + } + + public String getButTrngMstTab() { + return this.butTrngMstTab; + } + + public void setButTrngMstTab(String newButTrngMstTab) { + this.butTrngMstTab = newButTrngMstTab; + } + + public String getDisabbutTrngMstTab() { + return this.disabbutTrngMstTab; + } + + public void setDisabbutTrngMstTab(String newDisabbutTrngMstTab) { + this.disabbutTrngMstTab = newDisabbutTrngMstTab; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpAttForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpAttForm.java new file mode 100644 index 0000000..262ba21 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpAttForm.java @@ -0,0 +1,257 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngEmpAttForm extends HrmBaseForm { + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String[] txtEmployeeNo; + + private String[] txtEmployeeName; + + private String[] txtTrainingDate; + + private String[] txtAttendance; + + private String[] txtReasonForAbsence; + + private ArrayList arrTrngEmpAtt = new ArrayList(); + + private String trainingAttendanceDetailId; + + private String hdnDetailId; + + private String selectAll; + + private String disabcourseName; + + private String disabinstitutionName; + + private String disabstartDate; + + private String disabendDate; + + private String disabtrainingAttendanceDetailId; + + private String disabhdnDetailId; + + private String disabselectAll; + + private String courseNameId; + + private String disabbutCourseName; + + private String disabbutStartDate; + + private String disabbutEndDate; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String[] getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public String[] getTxtEmployeeName() { + return this.txtEmployeeName; + } + + public String[] getTxtTrainingDate() { + return this.txtTrainingDate; + } + + public String[] getTxtAttendance() { + return this.txtAttendance; + } + + public String[] getTxtReasonForAbsence() { + return this.txtReasonForAbsence; + } + + public ArrayList getArrTrngEmpAtt() { + return this.arrTrngEmpAtt; + } + + public void setArrTrngEmpAtt(ArrayList newArrTrngEmpAtt) { + this.arrTrngEmpAtt = newArrTrngEmpAtt; + } + + public void setTxtAttendance(String[] newTxtAttendance) { + this.txtAttendance = newTxtAttendance; + } + + public void setTxtEmployeeName(String[] newTxtEmployeeName) { + this.txtEmployeeName = newTxtEmployeeName; + } + + public void setTxtEmployeeNo(String[] newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public void setTxtReasonForAbsence(String[] newTxtReasonForAbsence) { + this.txtReasonForAbsence = newTxtReasonForAbsence; + } + + public void setTxtTrainingDate(String[] newTxtTrainingDate) { + this.txtTrainingDate = newTxtTrainingDate; + } + + public String getTrainingAttendanceDetailId() { + return this.trainingAttendanceDetailId; + } + + public void setTrainingAttendanceDetailId(String newTrainingAttendanceDetailId) { + this.trainingAttendanceDetailId = newTrainingAttendanceDetailId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabcourseName() { + return this.disabcourseName; + } + + public void setDisabcourseName(String newDisabcourseName) { + this.disabcourseName = newDisabcourseName; + } + + public String getDisabinstitutionName() { + return this.disabinstitutionName; + } + + public void setDisabinstitutionName(String newDisabinstitutionName) { + this.disabinstitutionName = newDisabinstitutionName; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String getDisabtrainingAttendanceDetailId() { + return this.disabtrainingAttendanceDetailId; + } + + public void setDisabtrainingAttendanceDetailId(String newDisabtrainingAttendanceDetailId) { + this.disabtrainingAttendanceDetailId = newDisabtrainingAttendanceDetailId; + } + + public String getDisabhdnDetailId() { + return this.disabhdnDetailId; + } + + public void setDisabhdnDetailId(String newDisabhdnDetailId) { + this.disabhdnDetailId = newDisabhdnDetailId; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getCourseNameId() { + return this.courseNameId; + } + + public void setCourseNameId(String newCourseNameId) { + this.courseNameId = newCourseNameId; + } + + public String getDisabbutCourseName() { + return this.disabbutCourseName; + } + + public void setDisabbutCourseName(String newDisabbutCourseName) { + this.disabbutCourseName = newDisabbutCourseName; + } + + public String getDisabbutStartDate() { + return this.disabbutStartDate; + } + + public void setDisabbutStartDate(String newDisabbutStartDate) { + this.disabbutStartDate = newDisabbutStartDate; + } + + public String getDisabbutEndDate() { + return this.disabbutEndDate; + } + + public void setDisabbutEndDate(String newDisabbutEndDate) { + this.disabbutEndDate = newDisabbutEndDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpFeedBackForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpFeedBackForm.java new file mode 100644 index 0000000..18fbe93 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpFeedBackForm.java @@ -0,0 +1,737 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngEmpFeedBackForm extends HrmBaseForm { + private String courseName; + + private String institutionName; + + private String ratingScheme; + + private String minRating; + + private String startDate; + + private String endDate; + + private String[] txtFacultyName; + + private String[] txtEmpNo; + + private String[] txtEmpName; + + private String[] txtDeliveryClarity; + + private String[] txtPresentation; + + private String[] txtInteraction; + + private String[] txtCourseMaterial; + + private String[] txtCourseObjective; + + private String courseId; + + private ArrayList arrEmpFeedBack = new ArrayList(); + + private String selectAll; + + private String disabcourseName; + + private String disabinstitutionName; + + private String disabratingScheme; + + private String disabminRating; + + private String disabstartDate; + + private String disabendDate; + + private String disabtxtFacultyName; + + private String disabtxtEmpNo; + + private String disabtxtEmpName; + + private String disabtxtDeliveryClarity; + + private String disabtxtPresentation; + + private String disabtxtInteraction; + + private String disabtxtCourseMaterial; + + private String disabtxtCourseObjective; + + private String butCourseName; + + private String disabbutCourseName; + + private String[] txtFacId; + + private String instId; + + private String butFacultyName; + + private String disabbutFacultyName; + + private String[] txtTrnHdrId; + + private String butRatingHelp1; + + private String disabbutRatingHelp1; + + private String butRatingHelp2; + + private String disabbutRatingHelp2; + + private String butRatingHelp3; + + private String disabbutRatingHelp3; + + private String butRatingHelp4; + + private String disabbutRatingHelp4; + + private String butRatingHelp5; + + private String disabbutRatingHelp5; + + private String butRatingHelp6; + + private String disabbutRatingHelp6; + + private String butRatingHelp7; + + private String disabbutRatingHelp7; + + private String disabmaxRating; + + private String maxRating; + + private String statusFlag; + + private String venue; + + private String[] txtCourseDuration; + + private String[] txtTrainingAids; + + private String[] txtTrainingArrangements; + + private String[] txtOverallRating; + + private String[] txtTopicsRelevant; + + private String[] txtTopicsIrrelevant; + + private String[] txtSuggestions; + + private String[] txtSkillArea; + + private String disabtxtSkillArea; + + private String disabtxtCourseDuration; + + private String disabtxtTrainingAids; + + private String disabtxtTrainingArrangements; + + private String disabtxtOverallRating; + + private String disabtxtTopicsRelevant; + + private String disabtxtTopicsIrrelevant; + + private String disabtxtSuggestions; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getRatingScheme() { + return this.ratingScheme; + } + + public void setRatingScheme(String newRatingScheme) { + this.ratingScheme = newRatingScheme; + } + + public String getMinRating() { + return this.minRating; + } + + public void setMinRating(String newMinRating) { + this.minRating = newMinRating; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String[] getTxtFacultyName() { + return this.txtFacultyName; + } + + public void setTxtFacultyName(String[] newTxtFacultyName) { + this.txtFacultyName = newTxtFacultyName; + } + + public String[] getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String[] newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String[] getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String[] newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String[] getTxtDeliveryClarity() { + return this.txtDeliveryClarity; + } + + public void setTxtDeliveryClarity(String[] newTxtDeliveryClarity) { + this.txtDeliveryClarity = newTxtDeliveryClarity; + } + + public String[] getTxtPresentation() { + return this.txtPresentation; + } + + public void setTxtPresentation(String[] newTxtPresentation) { + this.txtPresentation = newTxtPresentation; + } + + public String[] getTxtInteraction() { + return this.txtInteraction; + } + + public void setTxtInteraction(String[] newTxtInteraction) { + this.txtInteraction = newTxtInteraction; + } + + public String[] getTxtCourseMaterial() { + return this.txtCourseMaterial; + } + + public void setTxtCourseMaterial(String[] newTxtCourseMaterial) { + this.txtCourseMaterial = newTxtCourseMaterial; + } + + public String[] getTxtCourseObjective() { + return this.txtCourseObjective; + } + + public void setTxtCourseObjective(String[] newTxtCourseObjective) { + this.txtCourseObjective = newTxtCourseObjective; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public ArrayList getArrEmpFeedBack() { + return this.arrEmpFeedBack; + } + + public void setArrEmpFeedBack(ArrayList newArrEmpFeedBack) { + this.arrEmpFeedBack = newArrEmpFeedBack; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getDisabcourseName() { + return this.disabcourseName; + } + + public void setDisabcourseName(String newDisabcourseName) { + this.disabcourseName = newDisabcourseName; + } + + public String getDisabinstitutionName() { + return this.disabinstitutionName; + } + + public void setDisabinstitutionName(String newDisabinstitutionName) { + this.disabinstitutionName = newDisabinstitutionName; + } + + public String getDisabratingScheme() { + return this.disabratingScheme; + } + + public void setDisabratingScheme(String newDisabratingScheme) { + this.disabratingScheme = newDisabratingScheme; + } + + public String getDisabminRating() { + return this.disabminRating; + } + + public void setDisabminRating(String newDisabminRating) { + this.disabminRating = newDisabminRating; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String getDisabtxtFacultyName() { + return this.disabtxtFacultyName; + } + + public void setDisabtxtFacultyName(String newDisabtxtFacultyName) { + this.disabtxtFacultyName = newDisabtxtFacultyName; + } + + public String getDisabtxtEmpNo() { + return this.disabtxtEmpNo; + } + + public void setDisabtxtEmpNo(String newDisabtxtEmpNo) { + this.disabtxtEmpNo = newDisabtxtEmpNo; + } + + public String getDisabtxtEmpName() { + return this.disabtxtEmpName; + } + + public void setDisabtxtEmpName(String newDisabtxtEmpName) { + this.disabtxtEmpName = newDisabtxtEmpName; + } + + public String getDisabtxtDeliveryClarity() { + return this.disabtxtDeliveryClarity; + } + + public void setDisabtxtDeliveryClarity(String newDisabtxtDeliveryClarity) { + this.disabtxtDeliveryClarity = newDisabtxtDeliveryClarity; + } + + public String getDisabtxtPresentation() { + return this.disabtxtPresentation; + } + + public void setDisabtxtPresentation(String newDisabtxtPresentation) { + this.disabtxtPresentation = newDisabtxtPresentation; + } + + public String getDisabtxtInteraction() { + return this.disabtxtInteraction; + } + + public void setDisabtxtInteraction(String newDisabtxtInteraction) { + this.disabtxtInteraction = newDisabtxtInteraction; + } + + public String getDisabtxtCourseMaterial() { + return this.disabtxtCourseMaterial; + } + + public void setDisabtxtCourseMaterial(String newDisabtxtCourseMaterial) { + this.disabtxtCourseMaterial = newDisabtxtCourseMaterial; + } + + public String getDisabtxtCourseObjective() { + return this.disabtxtCourseObjective; + } + + public void setDisabtxtCourseObjective(String newDisabtxtCourseObjective) { + this.disabtxtCourseObjective = newDisabtxtCourseObjective; + } + + public String getButCourseName() { + return this.butCourseName; + } + + public void setButCourseName(String newButCourseName) { + this.butCourseName = newButCourseName; + } + + public String getDisabbutCourseName() { + return this.disabbutCourseName; + } + + public void setDisabbutCourseName(String newDisabbutCourseName) { + this.disabbutCourseName = newDisabbutCourseName; + } + + public String[] getTxtFacId() { + return this.txtFacId; + } + + public void setTxtFacId(String[] newTxtFacId) { + this.txtFacId = newTxtFacId; + } + + public String getInstId() { + return this.instId; + } + + public void setInstId(String newInstId) { + this.instId = newInstId; + } + + public String getButFacultyName() { + return this.butFacultyName; + } + + public void setButFacultyName(String newButFacultyName) { + this.butFacultyName = newButFacultyName; + } + + public String getDisabbutFacultyName() { + return this.disabbutFacultyName; + } + + public void setDisabbutFacultyName(String newDisabbutFacultyName) { + this.disabbutFacultyName = newDisabbutFacultyName; + } + + public String[] getTxtTrnHdrId() { + return this.txtTrnHdrId; + } + + public void setTxtTrnHdrId(String[] newTxtTrnHdrId) { + this.txtTrnHdrId = newTxtTrnHdrId; + } + + public String getButRatingHelp1() { + return this.butRatingHelp1; + } + + public void setButRatingHelp1(String newButRatingHelp1) { + this.butRatingHelp1 = newButRatingHelp1; + } + + public String getDisabbutRatingHelp1() { + return this.disabbutRatingHelp1; + } + + public void setDisabbutRatingHelp1(String newDisabbutRatingHelp1) { + this.disabbutRatingHelp1 = newDisabbutRatingHelp1; + } + + public String getButRatingHelp2() { + return this.butRatingHelp2; + } + + public void setButRatingHelp2(String newButRatingHelp2) { + this.butRatingHelp2 = newButRatingHelp2; + } + + public String getDisabbutRatingHelp2() { + return this.disabbutRatingHelp2; + } + + public void setDisabbutRatingHelp2(String newDisabbutRatingHelp2) { + this.disabbutRatingHelp2 = newDisabbutRatingHelp2; + } + + public String getButRatingHelp3() { + return this.butRatingHelp3; + } + + public void setButRatingHelp3(String newButRatingHelp3) { + this.butRatingHelp3 = newButRatingHelp3; + } + + public String getDisabbutRatingHelp3() { + return this.disabbutRatingHelp3; + } + + public void setDisabbutRatingHelp3(String newDisabbutRatingHelp3) { + this.disabbutRatingHelp3 = newDisabbutRatingHelp3; + } + + public String getButRatingHelp4() { + return this.butRatingHelp4; + } + + public void setButRatingHelp4(String newButRatingHelp4) { + this.butRatingHelp4 = newButRatingHelp4; + } + + public String getDisabbutRatingHelp4() { + return this.disabbutRatingHelp4; + } + + public void setDisabbutRatingHelp4(String newDisabbutRatingHelp4) { + this.disabbutRatingHelp4 = newDisabbutRatingHelp4; + } + + public String getButRatingHelp5() { + return this.butRatingHelp5; + } + + public void setButRatingHelp5(String newButRatingHelp5) { + this.butRatingHelp5 = newButRatingHelp5; + } + + public String getDisabbutRatingHelp5() { + return this.disabbutRatingHelp5; + } + + public void setDisabbutRatingHelp5(String newDisabbutRatingHelp5) { + this.disabbutRatingHelp5 = newDisabbutRatingHelp5; + } + + public String getButRatingHelp6() { + return this.butRatingHelp6; + } + + public void setButRatingHelp6(String newButRatingHelp6) { + this.butRatingHelp6 = newButRatingHelp6; + } + + public String getDisabbutRatingHelp6() { + return this.disabbutRatingHelp6; + } + + public void setDisabbutRatingHelp6(String newDisabbutRatingHelp6) { + this.disabbutRatingHelp6 = newDisabbutRatingHelp6; + } + + public String getButRatingHelp7() { + return this.butRatingHelp7; + } + + public void setButRatingHelp7(String newButRatingHelp7) { + this.butRatingHelp7 = newButRatingHelp7; + } + + public String getDisabbutRatingHelp7() { + return this.disabbutRatingHelp7; + } + + public void setDisabbutRatingHelp7(String newDisabbutRatingHelp7) { + this.disabbutRatingHelp7 = newDisabbutRatingHelp7; + } + + public String getDisabmaxRating() { + return this.disabmaxRating; + } + + public void setDisabmaxRating(String newDisabmaxRating) { + this.disabmaxRating = newDisabmaxRating; + } + + public String getMaxRating() { + return this.maxRating; + } + + public void setMaxRating(String newMaxRating) { + this.maxRating = newMaxRating; + } + + public String getStatusFlag() { + return this.statusFlag; + } + + public void setStatusFlag(String newStatusFlag) { + this.statusFlag = newStatusFlag; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } + + public String[] getTxtCourseDuration() { + return this.txtCourseDuration; + } + + public void setTxtCourseDuration(String[] newTxtCourseDuration) { + this.txtCourseDuration = newTxtCourseDuration; + } + + public String[] getTxtTrainingAids() { + return this.txtTrainingAids; + } + + public void setTxtTrainingAids(String[] newTxtTrainingAids) { + this.txtTrainingAids = newTxtTrainingAids; + } + + public String[] getTxtTrainingArrangements() { + return this.txtTrainingArrangements; + } + + public void setTxtTrainingArrangements(String[] newTxtTrainingArrangements) { + this.txtTrainingArrangements = newTxtTrainingArrangements; + } + + public String[] getTxtOverallRating() { + return this.txtOverallRating; + } + + public void setTxtOverallRating(String[] newTxtOverallRating) { + this.txtOverallRating = newTxtOverallRating; + } + + public String[] getTxtTopicsRelevant() { + return this.txtTopicsRelevant; + } + + public void setTxtTopicsRelevant(String[] newTxtTopicsRelevant) { + this.txtTopicsRelevant = newTxtTopicsRelevant; + } + + public String[] getTxtTopicsIrrelevant() { + return this.txtTopicsIrrelevant; + } + + public void setTxtTopicsIrrelevant(String[] newTxtTopicsIrrelevant) { + this.txtTopicsIrrelevant = newTxtTopicsIrrelevant; + } + + public String[] getTxtSuggestions() { + return this.txtSuggestions; + } + + public void setTxtSuggestions(String[] newTxtSuggestions) { + this.txtSuggestions = newTxtSuggestions; + } + + public String[] getTxtSkillArea() { + return this.txtSkillArea; + } + + public void setTxtSkillArea(String[] newTxtSkillArea) { + this.txtSkillArea = newTxtSkillArea; + } + + public String getDisabtxtSkillArea() { + return this.disabtxtSkillArea; + } + + public void setDisabtxtSkillArea(String newDisabtxtSkillArea) { + this.disabtxtSkillArea = newDisabtxtSkillArea; + } + + public String getDisabtxtCourseDuration() { + return this.disabtxtCourseDuration; + } + + public void setDisabtxtCourseDuration(String newDisabtxtCourseDuration) { + this.disabtxtCourseDuration = newDisabtxtCourseDuration; + } + + public String getDisabtxtTrainingAids() { + return this.disabtxtTrainingAids; + } + + public void setDisabtxtTrainingAids(String newDisabtxtTrainingAids) { + this.disabtxtTrainingAids = newDisabtxtTrainingAids; + } + + public String getDisabtxtTrainingArrangements() { + return this.disabtxtTrainingArrangements; + } + + public void setDisabtxtTrainingArrangements(String newDisabtxtTrainingArrangements) { + this.disabtxtTrainingArrangements = newDisabtxtTrainingArrangements; + } + + public String getDisabtxtOverallRating() { + return this.disabtxtOverallRating; + } + + public void setDisabtxtOverallRating(String newDisabtxtOverallRating) { + this.disabtxtOverallRating = newDisabtxtOverallRating; + } + + public String getDisabtxtTopicsRelevant() { + return this.disabtxtTopicsRelevant; + } + + public void setDisabtxtTopicsRelevant(String newDisabtxtTopicsRelevant) { + this.disabtxtTopicsRelevant = newDisabtxtTopicsRelevant; + } + + public String getDisabtxtTopicsIrrelevant() { + return this.disabtxtTopicsIrrelevant; + } + + public void setDisabtxtTopicsIrrelevant(String newDisabtxtTopicsIrrelevant) { + this.disabtxtTopicsIrrelevant = newDisabtxtTopicsIrrelevant; + } + + public String getDisabtxtSuggestions() { + return this.disabtxtSuggestions; + } + + public void setDisabtxtSuggestions(String newDisabtxtSuggestions) { + this.disabtxtSuggestions = newDisabtxtSuggestions; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpHistForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpHistForm.java new file mode 100644 index 0000000..9458dfe --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpHistForm.java @@ -0,0 +1,427 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class HrmTrngEmpHistForm extends JasperReportForm { + private String calId; + + private String calendarName; + + private String course; + + private String institutionName; + + private String fromDate; + + private String toDate; + + private String empNo; + + private String[] txtName; + + private String[] txtParticipation; + + private String[] txtReasonForNonParticipation; + + private String[] txtRating; + + private String[] txtTrainingAttendanceDetail; + + private String[] txtEmployeeNo; + + private ArrayList arrEmpTrngHist = new ArrayList(); + + private String selectAll; + + private String trainingAttendanceDetailId; + + private String hdnDetailId; + + private String disabcalId; + + private String disabcalendarName; + + private String disabcourse; + + private String disabinstitutionName; + + private String disabfromDate; + + private String disabtoDate; + + private String disabempNo; + + private String disabtxtName; + + private String disabtxtParticipation; + + private String disabtxtReasonForNonParticipation; + + private String disabtxtRating; + + private String disabtxtTrainingAttendanceDetail; + + private String disabtxtEmployeeNo; + + private String disabtrainingAttendanceDetailId; + + private String butCalendarName; + + private String disabbutCalendarName; + + private String butCourse; + + private String disabbutCourse; + + private String butEmpNo; + + private String disabbutEmpNo; + + private String empName; + + private String empNoId; + + private String calDtlId; + + private String empId; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCourse() { + return this.course; + } + + public void setCourse(String newCourse) { + this.course = newCourse; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String[] getTxtName() { + return this.txtName; + } + + public String[] getTxtParticipation() { + return this.txtParticipation; + } + + public String[] getTxtReasonForNonParticipation() { + return this.txtReasonForNonParticipation; + } + + public String[] getTxtRating() { + return this.txtRating; + } + + public String[] getTxtTrainingAttendanceDetail() { + return this.txtTrainingAttendanceDetail; + } + + public String[] getTxtEmployeeNo() { + return this.txtEmployeeNo; + } + + public void setTxtEmployeeNo(String[] newTxtEmployeeNo) { + this.txtEmployeeNo = newTxtEmployeeNo; + } + + public void setTxtName(String[] newTxtName) { + this.txtName = newTxtName; + } + + public void setTxtParticipation(String[] newTxtParticipation) { + this.txtParticipation = newTxtParticipation; + } + + public void setTxtRating(String[] newTxtRating) { + this.txtRating = newTxtRating; + } + + public void setTxtReasonForNonParticipation(String[] newTxtReasonForNonParticipation) { + this.txtReasonForNonParticipation = newTxtReasonForNonParticipation; + } + + public void setTxtTrainingAttendanceDetail(String[] newTxtTrainingAttendanceDetail) { + this.txtTrainingAttendanceDetail = newTxtTrainingAttendanceDetail; + } + + public ArrayList getArrEmpTrngHist() { + return this.arrEmpTrngHist; + } + + public void setArrEmpTrngHist(ArrayList newArrEmpTrngHist) { + this.arrEmpTrngHist = newArrEmpTrngHist; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getTrainingAttendanceDetailId() { + return this.trainingAttendanceDetailId; + } + + public void setTrainingAttendanceDetailId(String newTrainingAttendanceDetailId) { + this.trainingAttendanceDetailId = newTrainingAttendanceDetailId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getDisabcalId() { + return this.disabcalId; + } + + public void setDisabcalId(String newDisabcalId) { + this.disabcalId = newDisabcalId; + } + + public String getDisabcalendarName() { + return this.disabcalendarName; + } + + public void setDisabcalendarName(String newDisabcalendarName) { + this.disabcalendarName = newDisabcalendarName; + } + + public String getDisabcourse() { + return this.disabcourse; + } + + public void setDisabcourse(String newDisabcourse) { + this.disabcourse = newDisabcourse; + } + + public String getDisabinstitutionName() { + return this.disabinstitutionName; + } + + public void setDisabinstitutionName(String newDisabinstitutionName) { + this.disabinstitutionName = newDisabinstitutionName; + } + + public String getDisabfromDate() { + return this.disabfromDate; + } + + public void setDisabfromDate(String newDisabfromDate) { + this.disabfromDate = newDisabfromDate; + } + + public String getDisabtoDate() { + return this.disabtoDate; + } + + public void setDisabtoDate(String newDisabtoDate) { + this.disabtoDate = newDisabtoDate; + } + + public String getDisabempNo() { + return this.disabempNo; + } + + public void setDisabempNo(String newDisabempNo) { + this.disabempNo = newDisabempNo; + } + + public String getDisabtxtName() { + return this.disabtxtName; + } + + public void setDisabtxtName(String newDisabtxtName) { + this.disabtxtName = newDisabtxtName; + } + + public String getDisabtxtParticipation() { + return this.disabtxtParticipation; + } + + public void setDisabtxtParticipation(String newDisabtxtParticipation) { + this.disabtxtParticipation = newDisabtxtParticipation; + } + + public String getDisabtxtReasonForNonParticipation() { + return this.disabtxtReasonForNonParticipation; + } + + public void setDisabtxtReasonForNonParticipation(String newDisabtxtReasonForNonParticipation) { + this.disabtxtReasonForNonParticipation = newDisabtxtReasonForNonParticipation; + } + + public String getDisabtxtRating() { + return this.disabtxtRating; + } + + public void setDisabtxtRating(String newDisabtxtRating) { + this.disabtxtRating = newDisabtxtRating; + } + + public String getDisabtxtTrainingAttendanceDetail() { + return this.disabtxtTrainingAttendanceDetail; + } + + public void setDisabtxtTrainingAttendanceDetail(String newDisabtxtTrainingAttendanceDetail) { + this.disabtxtTrainingAttendanceDetail = newDisabtxtTrainingAttendanceDetail; + } + + public String getDisabtxtEmployeeNo() { + return this.disabtxtEmployeeNo; + } + + public void setDisabtxtEmployeeNo(String newDisabtxtEmployeeNo) { + this.disabtxtEmployeeNo = newDisabtxtEmployeeNo; + } + + public String getDisabtrainingAttendanceDetailId() { + return this.disabtrainingAttendanceDetailId; + } + + public void setDisabtrainingAttendanceDetailId(String newDisabtrainingAttendanceDetailId) { + this.disabtrainingAttendanceDetailId = newDisabtrainingAttendanceDetailId; + } + + public String getButCalendarName() { + return this.butCalendarName; + } + + public void setButCalendarName(String newButCalendarName) { + this.butCalendarName = newButCalendarName; + } + + public String getDisabbutCalendarName() { + return this.disabbutCalendarName; + } + + public void setDisabbutCalendarName(String newDisabbutCalendarName) { + this.disabbutCalendarName = newDisabbutCalendarName; + } + + public String getButCourse() { + return this.butCourse; + } + + public void setButCourse(String newButCourse) { + this.butCourse = newButCourse; + } + + public String getDisabbutCourse() { + return this.disabbutCourse; + } + + public void setDisabbutCourse(String newDisabbutCourse) { + this.disabbutCourse = newDisabbutCourse; + } + + public String getButEmpNo() { + return this.butEmpNo; + } + + public void setButEmpNo(String newButEmpNo) { + this.butEmpNo = newButEmpNo; + } + + public String getDisabbutEmpNo() { + return this.disabbutEmpNo; + } + + public void setDisabbutEmpNo(String newDisabbutEmpNo) { + this.disabbutEmpNo = newDisabbutEmpNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getCalDtlId() { + return this.calDtlId; + } + + public void setCalDtlId(String newCalDtlId) { + this.calDtlId = newCalDtlId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpReqForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpReqForm.java new file mode 100644 index 0000000..cba9800 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngEmpReqForm.java @@ -0,0 +1,677 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngEmpReqForm extends HrmBaseForm { + private String employeeNumber; + + private String employeeName; + + private String firstName; + + private String middleName; + + private String lastName; + + private String designation; + + private String scaleOfPay; + + private String dateSubmitted; + + private String trainingCalendar; + + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String nature; + + private String purpose; + + private String approvalStatus; + + private String rejectionRemarks; + + private String fullPart; + + private String selectAll; + + private String recommender; + + private String disabemployeeNumber; + + private String disabemployeeName; + + private String disabfirstName; + + private String disabmiddleName; + + private String disablastName; + + private String disabdesignation; + + private String disabscaleOfPay; + + private String disabdateSubmitted; + + private String disabtrainingCalendar; + + private String disabcourseName; + + private String disabinstitutionName; + + private String disabstartDate; + + private String disabendDate; + + private String disabnature; + + private String disabpurpose; + + private String disabapprovalStatus; + + private String disabrejectionRemarks; + + private String disabfullPart; + + private String disabrecommender; + + private String courseId; + + private String courseCode; + + private String calId; + + private String empId; + + private String empNo; + + private String disabbutDateSubmitted; + + private String disabbutCourseName; + + private String disabbutTrainingCalendar; + + private String disabbutStartDate; + + private String disabbutEndDate; + + private String disabbutRecommender; + + private String recommenderId; + + private String[] date; + + private String disabdate; + + private String[] participation; + + private ArrayList arrApprovedDates = new ArrayList(); + + private String disabbutEmployeeName; + + private String butApprove; + + private String butReject; + + private String disabbutApprove; + + private String disabbutReject; + + String disabparticipation; + + private String grade; + + private String desig; + + private String location; + + private String disabbutSubmit; + + private String butEmployeeName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getEmployeeNumber() { + return this.employeeNumber; + } + + public void setEmployeeNumber(String newEmployeeNumber) { + this.employeeNumber = newEmployeeNumber; + } + + public String getEmployeeName() { + return this.employeeName; + } + + public void setEmployeeName(String newEmployeeName) { + this.employeeName = newEmployeeName; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDesignation() { + return this.designation; + } + + public void setDesignation(String newDesignation) { + this.designation = newDesignation; + } + + public String getScaleOfPay() { + return this.scaleOfPay; + } + + public void setScaleOfPay(String newScaleOfPay) { + this.scaleOfPay = newScaleOfPay; + } + + public String getDateSubmitted() { + return this.dateSubmitted; + } + + public void setDateSubmitted(String newDateSubmitted) { + this.dateSubmitted = newDateSubmitted; + } + + public String getTrainingCalendar() { + return this.trainingCalendar; + } + + public void setTrainingCalendar(String newTrainingCalendar) { + this.trainingCalendar = newTrainingCalendar; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String getNature() { + return this.nature; + } + + public void setNature(String newNature) { + this.nature = newNature; + } + + public String getPurpose() { + return this.purpose; + } + + public void setPurpose(String newPurpose) { + this.purpose = newPurpose; + } + + public String getApprovalStatus() { + return this.approvalStatus; + } + + public void setApprovalStatus(String newApprovalStatus) { + this.approvalStatus = newApprovalStatus; + } + + public String getRejectionRemarks() { + return this.rejectionRemarks; + } + + public void setRejectionRemarks(String newRejectionRemarks) { + this.rejectionRemarks = newRejectionRemarks; + } + + public String getFullPart() { + return this.fullPart; + } + + public void setFullPart(String newFullPart) { + this.fullPart = newFullPart; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getRecommender() { + return this.recommender; + } + + public void setRecommender(String newRecommender) { + this.recommender = newRecommender; + } + + public String getDisabemployeeNumber() { + return this.disabemployeeNumber; + } + + public void setDisabemployeeNumber(String newDisabemployeeNumber) { + this.disabemployeeNumber = newDisabemployeeNumber; + } + + public String getDisabemployeeName() { + return this.disabemployeeName; + } + + public void setDisabemployeeName(String newDisabemployeeName) { + this.disabemployeeName = newDisabemployeeName; + } + + public String getDisabfirstName() { + return this.disabfirstName; + } + + public void setDisabfirstName(String newDisabfirstName) { + this.disabfirstName = newDisabfirstName; + } + + public String getDisabmiddleName() { + return this.disabmiddleName; + } + + public void setDisabmiddleName(String newDisabmiddleName) { + this.disabmiddleName = newDisabmiddleName; + } + + public String getDisablastName() { + return this.disablastName; + } + + public void setDisablastName(String newDisablastName) { + this.disablastName = newDisablastName; + } + + public String getDisabdesignation() { + return this.disabdesignation; + } + + public void setDisabdesignation(String newDisabdesignation) { + this.disabdesignation = newDisabdesignation; + } + + public String getDisabscaleOfPay() { + return this.disabscaleOfPay; + } + + public void setDisabscaleOfPay(String newDisabscaleOfPay) { + this.disabscaleOfPay = newDisabscaleOfPay; + } + + public String getDisabdateSubmitted() { + return this.disabdateSubmitted; + } + + public void setDisabdateSubmitted(String newDisabdateSubmitted) { + this.disabdateSubmitted = newDisabdateSubmitted; + } + + public String getDisabtrainingCalendar() { + return this.disabtrainingCalendar; + } + + public void setDisabtrainingCalendar(String newDisabtrainingCalendar) { + this.disabtrainingCalendar = newDisabtrainingCalendar; + } + + public String getDisabcourseName() { + return this.disabcourseName; + } + + public void setDisabcourseName(String newDisabcourseName) { + this.disabcourseName = newDisabcourseName; + } + + public String getDisabinstitutionName() { + return this.disabinstitutionName; + } + + public void setDisabinstitutionName(String newDisabinstitutionName) { + this.disabinstitutionName = newDisabinstitutionName; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String getDisabnature() { + return this.disabnature; + } + + public void setDisabnature(String newDisabnature) { + this.disabnature = newDisabnature; + } + + public String getDisabpurpose() { + return this.disabpurpose; + } + + public void setDisabpurpose(String newDisabpurpose) { + this.disabpurpose = newDisabpurpose; + } + + public String getDisabapprovalStatus() { + return this.disabapprovalStatus; + } + + public void setDisabapprovalStatus(String newDisabapprovalStatus) { + this.disabapprovalStatus = newDisabapprovalStatus; + } + + public String getDisabrejectionRemarks() { + return this.disabrejectionRemarks; + } + + public void setDisabrejectionRemarks(String newDisabrejectionRemarks) { + this.disabrejectionRemarks = newDisabrejectionRemarks; + } + + public String getDisabfullPart() { + return this.disabfullPart; + } + + public void setDisabfullPart(String newDisabfullPart) { + this.disabfullPart = newDisabfullPart; + } + + public String getDisabrecommender() { + return this.disabrecommender; + } + + public void setDisabrecommender(String newDisabrecommender) { + this.disabrecommender = newDisabrecommender; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getCourseCode() { + return this.courseCode; + } + + public void setCourseCode(String newCourseCode) { + this.courseCode = newCourseCode; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getEmpId() { + return this.empId; + } + + public void setEmpId(String newEmpId) { + this.empId = newEmpId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getDisabbutDateSubmitted() { + return this.disabbutDateSubmitted; + } + + public void setDisabbutDateSubmitted(String newDisabbutDateSubmitted) { + this.disabbutDateSubmitted = newDisabbutDateSubmitted; + } + + public String getDisabbutCourseName() { + return this.disabbutCourseName; + } + + public void setDisabbutCourseName(String newDisabbutCourseName) { + this.disabbutCourseName = newDisabbutCourseName; + } + + public String getDisabbutTrainingCalendar() { + return this.disabbutTrainingCalendar; + } + + public void setDisabbutTrainingCalendar(String newDisabbutTrainingCalendar) { + this.disabbutTrainingCalendar = newDisabbutTrainingCalendar; + } + + public String getDisabbutStartDate() { + return this.disabbutStartDate; + } + + public void setDisabbutStartDate(String newDisabbutStartDate) { + this.disabbutStartDate = newDisabbutStartDate; + } + + public String getDisabbutEndDate() { + return this.disabbutEndDate; + } + + public void setDisabbutEndDate(String newDisabbutEndDate) { + this.disabbutEndDate = newDisabbutEndDate; + } + + public String getDisabbutRecommender() { + return this.disabbutRecommender; + } + + public void setDisabbutRecommender(String newDisabbutRecommender) { + this.disabbutRecommender = newDisabbutRecommender; + } + + public String getRecommenderId() { + return this.recommenderId; + } + + public void setRecommenderId(String newRecommenderId) { + this.recommenderId = newRecommenderId; + } + + public String[] getDate() { + return this.date; + } + + public void setDate(String[] newDate) { + this.date = newDate; + } + + public String getDisabdate() { + return this.disabdate; + } + + public void setDisabdate(String newDisabdate) { + this.disabdate = newDisabdate; + } + + public String[] getParticipation() { + return this.participation; + } + + public void setParticipation(String[] newParticipation) { + this.participation = newParticipation; + } + + public ArrayList getArrApprovedDates() { + return this.arrApprovedDates; + } + + public void setArrApprovedDates(ArrayList newArrApprovedDates) { + this.arrApprovedDates = newArrApprovedDates; + } + + public String getDisabbutEmployeeName() { + return this.disabbutEmployeeName; + } + + public void setDisabbutEmployeeName(String newDisabbutEmployeeName) { + this.disabbutEmployeeName = newDisabbutEmployeeName; + } + + public String getButApprove() { + return this.butApprove; + } + + public void setButApprove(String newButApprove) { + this.butApprove = newButApprove; + } + + public String getButReject() { + return this.butReject; + } + + public void setButReject(String newButReject) { + this.butReject = newButReject; + } + + public String getDisabbutApprove() { + return this.disabbutApprove; + } + + public void setDisabbutApprove(String newDisabbutApprove) { + this.disabbutApprove = newDisabbutApprove; + } + + public String getDisabbutReject() { + return this.disabbutReject; + } + + public void setDisabbutReject(String newDisabbutReject) { + this.disabbutReject = newDisabbutReject; + } + + public String getDisabparticipation() { + return this.disabparticipation; + } + + public void setDisabparticipation(String newDisabparticipation) { + this.disabparticipation = newDisabparticipation; + } + + public String getGrade() { + return this.grade; + } + + public void setGrade(String newGrade) { + this.grade = newGrade; + } + + public String getDesig() { + return this.desig; + } + + public void setDesig(String newDesig) { + this.desig = newDesig; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String newLocation) { + this.location = newLocation; + } + + public String getDisabbutSubmit() { + return this.disabbutSubmit; + } + + public void setDisabbutSubmit(String newDisabbutSubmit) { + this.disabbutSubmit = newDisabbutSubmit; + } + + public String getButEmployeeName() { + return this.butEmployeeName; + } + + public void setButEmployeeName(String newButEmployeeName) { + this.butEmployeeName = newButEmployeeName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacFeedBackDtlForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacFeedBackDtlForm.java new file mode 100644 index 0000000..b104dbf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacFeedBackDtlForm.java @@ -0,0 +1,177 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngFacFeedBackDtlForm extends HrmBaseForm { + private String[] txtEmpNo; + + private String[] txtEmpName; + + private String[] txtRemarks; + + private String disabtxtEmpNo; + + private String disabtxtEmpName; + + private String disabtxtRating; + + private String disabtxtRemarks; + + private String[] hdrId; + + private String[] txtEmpId; + + private String facId; + + private String hdnDetailId; + + private ArrayList arrFacFeedBackNextDtl = new ArrayList(); + + private String facName; + + private String[] txtRating; + + private String disabtxtFacultyId; + + private String statusFlag; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String[] getTxtEmpNo() { + return this.txtEmpNo; + } + + public void setTxtEmpNo(String[] newTxtEmpNo) { + this.txtEmpNo = newTxtEmpNo; + } + + public String[] getTxtEmpName() { + return this.txtEmpName; + } + + public void setTxtEmpName(String[] newTxtEmpName) { + this.txtEmpName = newTxtEmpName; + } + + public String[] getTxtRemarks() { + return this.txtRemarks; + } + + public void setTxtRemarks(String[] newTxtRemarks) { + this.txtRemarks = newTxtRemarks; + } + + public String getDisabtxtEmpNo() { + return this.disabtxtEmpNo; + } + + public void setDisabtxtEmpNo(String newDisabtxtEmpNo) { + this.disabtxtEmpNo = newDisabtxtEmpNo; + } + + public String getDisabtxtEmpName() { + return this.disabtxtEmpName; + } + + public void setDisabtxtEmpName(String newDisabtxtEmpName) { + this.disabtxtEmpName = newDisabtxtEmpName; + } + + public String getDisabtxtRating() { + return this.disabtxtRating; + } + + public void setDisabtxtRating(String newDisabtxtRating) { + this.disabtxtRating = newDisabtxtRating; + } + + public String getDisabtxtRemarks() { + return this.disabtxtRemarks; + } + + public void setDisabtxtRemarks(String newDisabtxtRemarks) { + this.disabtxtRemarks = newDisabtxtRemarks; + } + + public String[] getHdrId() { + return this.hdrId; + } + + public void setHdrId(String[] newHdrId) { + this.hdrId = newHdrId; + } + + public String[] getTxtEmpId() { + return this.txtEmpId; + } + + public void setTxtEmpId(String[] newTxtEmpId) { + this.txtEmpId = newTxtEmpId; + } + + public String getFacId() { + return this.facId; + } + + public void setFacId(String newFacId) { + this.facId = newFacId; + } + + public String getHdnDetailId() { + return this.hdnDetailId; + } + + public void setHdnDetailId(String newHdnDetailId) { + this.hdnDetailId = newHdnDetailId; + } + + public ArrayList getArrFacFeedBackNextDtl() { + return this.arrFacFeedBackNextDtl; + } + + public void setArrFacFeedBackNextDtl(ArrayList newArrFacFeedBackNextDtl) { + this.arrFacFeedBackNextDtl = newArrFacFeedBackNextDtl; + } + + public String getFacName() { + return this.facName; + } + + public void setFacName(String newFacName) { + this.facName = newFacName; + } + + public String[] getTxtRating() { + return this.txtRating; + } + + public void setTxtRating(String[] newTxtRating) { + this.txtRating = newTxtRating; + } + + public String getDisabtxtFacultyId() { + return this.disabtxtFacultyId; + } + + public void setDisabtxtFacultyId(String newDisabtxtFacultyId) { + this.disabtxtFacultyId = newDisabtxtFacultyId; + } + + public String getStatusFlag() { + return this.statusFlag; + } + + public void setStatusFlag(String newStatusFlag) { + this.statusFlag = newStatusFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacMstForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacMstForm.java new file mode 100644 index 0000000..2603769 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacMstForm.java @@ -0,0 +1,256 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngFacMstForm extends HrmBaseForm { + private String facultyType; + + private String employeeNo; + + private String baseInstitution; + + private String experience; + + private String institutionName; + + private String trgFacMstEmpId; + + private String trgFacMstInstCode; + + private String disabfacultyType; + + private String disabemployeeNo; + + private String disabbaseInstitution; + + private String disabexperience; + + private String disabinstitutionName; + + private String disabtrgFacMstEmpId; + + private String disabtrgFacMstInstCode; + + private String butEmployeeNo; + + private String disabbutEmployeeNo; + + private String butBaseInstitution; + + private String disabbutBaseInstitution; + + private String firstName; + + private String middleName; + + private String lastName; + + private String disabfirstName; + + private String disablastName; + + private String disabmiddleName; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getFacultyType() { + return this.facultyType; + } + + public void setFacultyType(String newFacultyType) { + this.facultyType = newFacultyType; + } + + public String getEmployeeNo() { + return this.employeeNo; + } + + public void setEmployeeNo(String newEmployeeNo) { + this.employeeNo = newEmployeeNo; + } + + public String getBaseInstitution() { + return this.baseInstitution; + } + + public void setBaseInstitution(String newBaseInstitution) { + this.baseInstitution = newBaseInstitution; + } + + public String getExperience() { + return this.experience; + } + + public void setExperience(String newExperience) { + this.experience = newExperience; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getTrgFacMstEmpId() { + return this.trgFacMstEmpId; + } + + public void setTrgFacMstEmpId(String newTrgFacMstEmpId) { + this.trgFacMstEmpId = newTrgFacMstEmpId; + } + + public String getTrgFacMstInstCode() { + return this.trgFacMstInstCode; + } + + public void setTrgFacMstInstCode(String newTrgFacMstInstCode) { + this.trgFacMstInstCode = newTrgFacMstInstCode; + } + + public String getDisabfacultyType() { + return this.disabfacultyType; + } + + public void setDisabfacultyType(String newDisabfacultyType) { + this.disabfacultyType = newDisabfacultyType; + } + + public String getDisabemployeeNo() { + return this.disabemployeeNo; + } + + public void setDisabemployeeNo(String newDisabemployeeNo) { + this.disabemployeeNo = newDisabemployeeNo; + } + + public String getDisabbaseInstitution() { + return this.disabbaseInstitution; + } + + public void setDisabbaseInstitution(String newDisabbaseInstitution) { + this.disabbaseInstitution = newDisabbaseInstitution; + } + + public String getDisabexperience() { + return this.disabexperience; + } + + public void setDisabexperience(String newDisabexperience) { + this.disabexperience = newDisabexperience; + } + + public String getDisabinstitutionName() { + return this.disabinstitutionName; + } + + public void setDisabinstitutionName(String newDisabinstitutionName) { + this.disabinstitutionName = newDisabinstitutionName; + } + + public String getDisabtrgFacMstEmpId() { + return this.disabtrgFacMstEmpId; + } + + public void setDisabtrgFacMstEmpId(String newDisabtrgFacMstEmpId) { + this.disabtrgFacMstEmpId = newDisabtrgFacMstEmpId; + } + + public String getDisabtrgFacMstInstCode() { + return this.disabtrgFacMstInstCode; + } + + public void setDisabtrgFacMstInstCode(String newDisabtrgFacMstInstCode) { + this.disabtrgFacMstInstCode = newDisabtrgFacMstInstCode; + } + + public String getButEmployeeNo() { + return this.butEmployeeNo; + } + + public void setButEmployeeNo(String newButEmployeeNo) { + this.butEmployeeNo = newButEmployeeNo; + } + + public String getDisabbutEmployeeNo() { + return this.disabbutEmployeeNo; + } + + public void setDisabbutEmployeeNo(String newDisabbutEmployeeNo) { + this.disabbutEmployeeNo = newDisabbutEmployeeNo; + } + + public String getButBaseInstitution() { + return this.butBaseInstitution; + } + + public void setButBaseInstitution(String newButBaseInstitution) { + this.butBaseInstitution = newButBaseInstitution; + } + + public String getDisabbutBaseInstitution() { + return this.disabbutBaseInstitution; + } + + public void setDisabbutBaseInstitution(String newDisabbutBaseInstitution) { + this.disabbutBaseInstitution = newDisabbutBaseInstitution; + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String newFirstName) { + this.firstName = newFirstName; + } + + public String getMiddleName() { + return this.middleName; + } + + public void setMiddleName(String newMiddleName) { + this.middleName = newMiddleName; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String newLastName) { + this.lastName = newLastName; + } + + public String getDisabfirstName() { + return this.disabfirstName; + } + + public void setDisabfirstName(String newDisabfirstName) { + this.disabfirstName = newDisabfirstName; + } + + public String getDisablastName() { + return this.disablastName; + } + + public void setDisablastName(String newDisablastName) { + this.disablastName = newDisablastName; + } + + public String getDisabmiddleName() { + return this.disabmiddleName; + } + + public void setDisabmiddleName(String newDisabmiddleName) { + this.disabmiddleName = newDisabmiddleName; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacTrngDtlForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacTrngDtlForm.java new file mode 100644 index 0000000..b871fbf --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngFacTrngDtlForm.java @@ -0,0 +1,427 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngFacTrngDtlForm extends HrmBaseForm { + private String siteId; + + private String calId; + + private String calendarName; + + private String courseName; + + private String institutionName; + + private String startDate; + + private String endDate; + + private String[] txtNameOfFaculty; + + private String[] txtFromDate; + + private String[] txtToDate; + + private String[] txtStartTime; + + private String[] txtEndTime; + + private String[] txtAverageRating; + + private ArrayList arrHrmFacTrngDtl = new ArrayList(); + + private String selectAll; + + private String site; + + private String siteName; + + private String courseStatus; + + private String disabsiteId; + + private String disabcalId; + + private String disabcalendarName; + + private String disabcourseName; + + private String disabinstitutionName; + + private String disabstartDate; + + private String disabendDate; + + private String disabselectAll; + + private String disabsite; + + private String disabsiteName; + + private String disabcourseStatus; + + private String disabbutCourseName; + + private String disabbutCalendarName; + + private String disabbutSiteName; + + private String courseId; + + private String instId; + + private String disabbutFaculty; + + private String[] facultyId; + + private String calCode; + + private String venue; + + private String skillArea; + + private String[] txtSkillArea; + + private String disabtxtSkillArea; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getCalendarName() { + return this.calendarName; + } + + public void setCalendarName(String newCalendarName) { + this.calendarName = newCalendarName; + } + + public String getCourseName() { + return this.courseName; + } + + public void setCourseName(String newCourseName) { + this.courseName = newCourseName; + } + + public String getInstitutionName() { + return this.institutionName; + } + + public void setInstitutionName(String newInstitutionName) { + this.institutionName = newInstitutionName; + } + + public String getStartDate() { + return this.startDate; + } + + public void setStartDate(String newStartDate) { + this.startDate = newStartDate; + } + + public String getEndDate() { + return this.endDate; + } + + public void setEndDate(String newEndDate) { + this.endDate = newEndDate; + } + + public String[] getTxtNameOfFaculty() { + return this.txtNameOfFaculty; + } + + public String[] getTxtFromDate() { + return this.txtFromDate; + } + + public String[] getTxtToDate() { + return this.txtToDate; + } + + public String[] getTxtStartTime() { + return this.txtStartTime; + } + + public String[] getTxtEndTime() { + return this.txtEndTime; + } + + public String[] getTxtAverageRating() { + return this.txtAverageRating; + } + + public void setTxtFromDate(String[] newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public void setTxtToDate(String[] newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public void setTxtStartTime(String[] newTxtStartTime) { + this.txtStartTime = newTxtStartTime; + } + + public void setTxtEndTime(String[] newTxtEndTime) { + this.txtEndTime = newTxtEndTime; + } + + public void setTxtAverageRating(String[] newTxtAverageRating) { + this.txtAverageRating = newTxtAverageRating; + } + + public void setTxtNameOfFaculty(String[] newTxtNameOfFaculty) { + this.txtNameOfFaculty = newTxtNameOfFaculty; + } + + public ArrayList getArrHrmFacTrngDtl() { + return this.arrHrmFacTrngDtl; + } + + public void setArrHrmFacTrngDtl(ArrayList newArrHrmFacTrngDtl) { + this.arrHrmFacTrngDtl = newArrHrmFacTrngDtl; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getSite() { + return this.site; + } + + public void setSite(String newSite) { + this.site = newSite; + } + + public String getSiteName() { + return this.siteName; + } + + public void setSiteName(String newSiteName) { + this.siteName = newSiteName; + } + + public String getCourseStatus() { + return this.courseStatus; + } + + public void setCourseStatus(String newCourseStatus) { + this.courseStatus = newCourseStatus; + } + + public String getCalId() { + return this.calId; + } + + public void setCalId(String newCalId) { + this.calId = newCalId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getDisabsiteId() { + return this.disabsiteId; + } + + public void setDisabsiteId(String newDisabsiteId) { + this.disabsiteId = newDisabsiteId; + } + + public String getDisabcalId() { + return this.disabcalId; + } + + public void setDisabcalId(String newDisabcalId) { + this.disabcalId = newDisabcalId; + } + + public String getDisabcalendarName() { + return this.disabcalendarName; + } + + public void setDisabcalendarName(String newDisabcalendarName) { + this.disabcalendarName = newDisabcalendarName; + } + + public String getDisabcourseName() { + return this.disabcourseName; + } + + public void setDisabcourseName(String newDisabcourseName) { + this.disabcourseName = newDisabcourseName; + } + + public String getDisabinstitutionName() { + return this.disabinstitutionName; + } + + public void setDisabinstitutionName(String newDisabinstitutionName) { + this.disabinstitutionName = newDisabinstitutionName; + } + + public String getDisabstartDate() { + return this.disabstartDate; + } + + public void setDisabstartDate(String newDisabstartDate) { + this.disabstartDate = newDisabstartDate; + } + + public String getDisabendDate() { + return this.disabendDate; + } + + public void setDisabendDate(String newDisabendDate) { + this.disabendDate = newDisabendDate; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabsite() { + return this.disabsite; + } + + public void setDisabsite(String newDisabsite) { + this.disabsite = newDisabsite; + } + + public String getDisabsiteName() { + return this.disabsiteName; + } + + public void setDisabsiteName(String newDisabsiteName) { + this.disabsiteName = newDisabsiteName; + } + + public String getDisabcourseStatus() { + return this.disabcourseStatus; + } + + public void setDisabcourseStatus(String newDisabcourseStatus) { + this.disabcourseStatus = newDisabcourseStatus; + } + + public String getDisabbutCourseName() { + return this.disabbutCourseName; + } + + public void setDisabbutCourseName(String newDisabbutCourseName) { + this.disabbutCourseName = newDisabbutCourseName; + } + + public String getDisabbutCalendarName() { + return this.disabbutCalendarName; + } + + public void setDisabbutCalendarName(String newDisabbutCalendarName) { + this.disabbutCalendarName = newDisabbutCalendarName; + } + + public String getDisabbutSiteName() { + return this.disabbutSiteName; + } + + public void setDisabbutSiteName(String newDisabbutSiteName) { + this.disabbutSiteName = newDisabbutSiteName; + } + + public String getCourseId() { + return this.courseId; + } + + public void setCourseId(String newCourseId) { + this.courseId = newCourseId; + } + + public String getInstId() { + return this.instId; + } + + public void setInstId(String newInstId) { + this.instId = newInstId; + } + + public String getDisabbutFaculty() { + return this.disabbutFaculty; + } + + public void setDisabbutFaculty(String newDisabbutFaculty) { + this.disabbutFaculty = newDisabbutFaculty; + } + + public String[] getFacultyId() { + return this.facultyId; + } + + public void setFacultyId(String[] newFacultyId) { + this.facultyId = newFacultyId; + } + + public String getCalCode() { + return this.calCode; + } + + public void setCalCode(String newCalCode) { + this.calCode = newCalCode; + } + + public String getVenue() { + return this.venue; + } + + public void setVenue(String newVenue) { + this.venue = newVenue; + } + + public String getSkillArea() { + return this.skillArea; + } + + public void setSkillArea(String newSkillArea) { + this.skillArea = newSkillArea; + } + + public String[] getTxtSkillArea() { + return this.txtSkillArea; + } + + public void setTxtSkillArea(String[] newTxtSkillArea) { + this.txtSkillArea = newTxtSkillArea; + } + + public String getDisabtxtSkillArea() { + return this.disabtxtSkillArea; + } + + public void setDisabtxtSkillArea(String newDisabtxtSkillArea) { + this.disabtxtSkillArea = newDisabtxtSkillArea; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngInstCourseDtlForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngInstCourseDtlForm.java new file mode 100644 index 0000000..129a09f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/HrmTrngInstCourseDtlForm.java @@ -0,0 +1,407 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.util.ArrayList; +import javax.servlet.http.HttpServletRequest; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMapping; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class HrmTrngInstCourseDtlForm extends HrmBaseForm { + private String instituteCode; + + private String instituteName; + + private String type; + + private String inCharge; + + private String address; + + private String country; + + private String city; + + private String state; + + private String pin; + + private String phone; + + private String email; + + private String fax; + + private String[] txtCourse; + + private String[] txtCourseName; + + private ArrayList arrHrmTrngCrsDtl = new ArrayList(); + + private String selectAll; + + private String trgInstId; + + private String trgInstCountryId; + + private String trgInstCityId; + + private String disabinstituteCode; + + private String disabinstituteName; + + private String disabtype; + + private String disabinCharge; + + private String disabaddress; + + private String disabcountry; + + private String disabcity; + + private String disabstate; + + private String disabpin; + + private String disabphone; + + private String disabemail; + + private String disabfax; + + private String disabtxtCourse; + + private String disabtxtCourseName; + + private String disabselectAll; + + private String disabbutInstituteCode; + + private String disabCountry; + + private String disabbutCity; + + private String[] courseId; + + private String disabbutCourse; + + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + } + + public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { + return super.validate(mapping, request); + } + + public String getInstituteCode() { + return this.instituteCode; + } + + public void setInstituteCode(String newInstituteCode) { + this.instituteCode = newInstituteCode; + } + + public String getInstituteName() { + return this.instituteName; + } + + public void setInstituteName(String newInstituteName) { + this.instituteName = newInstituteName; + } + + public String getType() { + return this.type; + } + + public void setType(String newType) { + this.type = newType; + } + + public String getInCharge() { + return this.inCharge; + } + + public void setInCharge(String newInCharge) { + this.inCharge = newInCharge; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String newAddress) { + this.address = newAddress; + } + + public String getCountry() { + return this.country; + } + + public void setCountry(String newCountry) { + this.country = newCountry; + } + + public String getCity() { + return this.city; + } + + public void setCity(String newCity) { + this.city = newCity; + } + + public String getState() { + return this.state; + } + + public void setState(String newState) { + this.state = newState; + } + + public String getPin() { + return this.pin; + } + + public void setPin(String newPin) { + this.pin = newPin; + } + + public String getPhone() { + return this.phone; + } + + public void setPhone(String newPhone) { + this.phone = newPhone; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String newEmail) { + this.email = newEmail; + } + + public String getFax() { + return this.fax; + } + + public void setFax(String newFax) { + this.fax = newFax; + } + + public String[] getTxtCourse() { + return this.txtCourse; + } + + public void setTxtCourse(String[] newTxtCourse) { + this.txtCourse = newTxtCourse; + } + + public String[] getTxtCourseName() { + return this.txtCourseName; + } + + public void setTxtCourseName(String[] newTxtCourseName) { + this.txtCourseName = newTxtCourseName; + } + + public ArrayList getArrHrmTrngCrsDtl() { + return this.arrHrmTrngCrsDtl; + } + + public void setArrHrmTrngCrsDtl(ArrayList newArrHrmTrngCrsDtl) { + this.arrHrmTrngCrsDtl = newArrHrmTrngCrsDtl; + } + + public String getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String newSelectAll) { + this.selectAll = newSelectAll; + } + + public String getTrgInstId() { + return this.trgInstId; + } + + public void setTrgInstId(String newTrgInstId) { + this.trgInstId = newTrgInstId; + } + + public String getTrgInstCountryId() { + return this.trgInstCountryId; + } + + public void setTrgInstCountryId(String newTrgInstCountryId) { + this.trgInstCountryId = newTrgInstCountryId; + } + + public String getTrgInstCityId() { + return this.trgInstCityId; + } + + public void setTrgInstCityId(String newTrgInstCityId) { + this.trgInstCityId = newTrgInstCityId; + } + + public String getDisabinstituteCode() { + return this.disabinstituteCode; + } + + public void setDisabinstituteCode(String newDisabinstituteCode) { + this.disabinstituteCode = newDisabinstituteCode; + } + + public String getDisabinstituteName() { + return this.disabinstituteName; + } + + public void setDisabinstituteName(String newDisabinstituteName) { + this.disabinstituteName = newDisabinstituteName; + } + + public String getDisabtype() { + return this.disabtype; + } + + public void setDisabtype(String newDisabtype) { + this.disabtype = newDisabtype; + } + + public String getDisabinCharge() { + return this.disabinCharge; + } + + public void setDisabinCharge(String newDisabinCharge) { + this.disabinCharge = newDisabinCharge; + } + + public String getDisabaddress() { + return this.disabaddress; + } + + public void setDisabaddress(String newDisabaddress) { + this.disabaddress = newDisabaddress; + } + + public String getDisabcountry() { + return this.disabcountry; + } + + public void setDisabcountry(String newDisabcountry) { + this.disabcountry = newDisabcountry; + } + + public String getDisabcity() { + return this.disabcity; + } + + public void setDisabcity(String newDisabcity) { + this.disabcity = newDisabcity; + } + + public String getDisabstate() { + return this.disabstate; + } + + public void setDisabstate(String newDisabstate) { + this.disabstate = newDisabstate; + } + + public String getDisabpin() { + return this.disabpin; + } + + public void setDisabpin(String newDisabpin) { + this.disabpin = newDisabpin; + } + + public String getDisabphone() { + return this.disabphone; + } + + public void setDisabphone(String newDisabphone) { + this.disabphone = newDisabphone; + } + + public String getDisabemail() { + return this.disabemail; + } + + public void setDisabemail(String newDisabemail) { + this.disabemail = newDisabemail; + } + + public String getDisabfax() { + return this.disabfax; + } + + public void setDisabfax(String newDisabfax) { + this.disabfax = newDisabfax; + } + + public String getDisabtxtCourse() { + return this.disabtxtCourse; + } + + public void setDisabtxtCourse(String newDisabtxtCourse) { + this.disabtxtCourse = newDisabtxtCourse; + } + + public String getDisabtxtCourseName() { + return this.disabtxtCourseName; + } + + public void setDisabtxtCourseName(String newDisabtxtCourseName) { + this.disabtxtCourseName = newDisabtxtCourseName; + } + + public String getDisabselectAll() { + return this.disabselectAll; + } + + public void setDisabselectAll(String newDisabselectAll) { + this.disabselectAll = newDisabselectAll; + } + + public String getDisabbutInstituteCode() { + return this.disabbutInstituteCode; + } + + public void setDisabbutInstituteCode(String newDisabbutInstituteCode) { + this.disabbutInstituteCode = newDisabbutInstituteCode; + } + + public String getDisabCountry() { + return this.disabCountry; + } + + public void setDisabCountry(String newDisabCountry) { + this.disabCountry = newDisabCountry; + } + + public String getDisabbutCity() { + return this.disabbutCity; + } + + public void setDisabbutCity(String newDisabbutCity) { + this.disabbutCity = newDisabbutCity; + } + + public String[] getCourseId() { + return this.courseId; + } + + public void setCourseId(String[] newCourseId) { + this.courseId = newCourseId; + } + + public String getDisabbutCourse() { + return this.disabbutCourse; + } + + public void setDisabbutCourse(String newDisabbutCourse) { + this.disabbutCourse = newDisabbutCourse; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/JasperReportForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/JasperReportForm.java new file mode 100644 index 0000000..faae01e --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/JasperReportForm.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.io.Serializable; +import java.lang.reflect.Method; +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class JasperReportForm extends HrmBaseForm { + private static final long serialVersionUID = 19981017L; + + private String downloadOption; + + public String getDownloadOption() { + return this.downloadOption; + } + + public void setDownloadOption(String newDownloadOption) { + this.downloadOption = newDownloadOption; + } + + public Serializable getData(HttpServletRequest req) { + HashMap data = new HashMap(); + Class formBeanClass = getClass(); + Method[] methods = formBeanClass.getDeclaredMethods(); + StringBuffer fieldName = new StringBuffer(); + for (int i = 0; i < methods.length; i++) { + String methodName = methods[i].getName(); + if (methodName.startsWith("get") && ( + methods[i].getParameterTypes()).length <= 0) + try { + Object val = methods[i].invoke(this, null); + if (null != val && val instanceof String && ((String)val).trim().length() == 0) + val = null; + fieldName.append(methodName.substring(3, 4).toLowerCase()); + fieldName.append(methodName.substring(4)); + data.put(fieldName.toString(), val); + fieldName.delete(0, fieldName.length()); + } catch (Exception e) { + e.printStackTrace(); + } + } + return data; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepAllIndiaManpowerForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepAllIndiaManpowerForm.java new file mode 100644 index 0000000..27a0375 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepAllIndiaManpowerForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepAllIndiaManpowerForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCessationListForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCessationListForm.java new file mode 100644 index 0000000..628ab32 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCessationListForm.java @@ -0,0 +1,65 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepCessationListForm extends HrmBaseForm { + private String txtYYMM; + + private String txtLocationId; + + private String txtFromDate; + + private String txtToDate; + + private String butTxtYYMM; + + private String disabbutTxtYYMM; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getButTxtYYMM() { + return this.butTxtYYMM; + } + + public void setButTxtYYMM(String newButTxtYYMM) { + this.butTxtYYMM = newButTxtYYMM; + } + + public String getDisabbutTxtYYMM() { + return this.disabbutTxtYYMM; + } + + public void setDisabbutTxtYYMM(String newDisabbutTxtYYMM) { + this.disabbutTxtYYMM = newDisabbutTxtYYMM; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfidentialFileForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfidentialFileForm.java new file mode 100644 index 0000000..578fc7c --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfidentialFileForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepConfidentialFileForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfirmationDueForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfirmationDueForm.java new file mode 100644 index 0000000..41ae8a5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepConfirmationDueForm.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepConfirmationDueForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + private String butTxtYYMM; + + private String disabbutTxtYYMM; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getButTxtYYMM() { + return this.butTxtYYMM; + } + + public void setButTxtYYMM(String newButTxtYYMM) { + this.butTxtYYMM = newButTxtYYMM; + } + + public String getDisabbutTxtYYMM() { + return this.disabbutTxtYYMM; + } + + public void setDisabbutTxtYYMM(String newDisabbutTxtYYMM) { + this.disabbutTxtYYMM = newDisabbutTxtYYMM; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCostToCompanyForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCostToCompanyForm.java new file mode 100644 index 0000000..bb5d5fd --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepCostToCompanyForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepCostToCompanyForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepDistnOfManpowerForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepDistnOfManpowerForm.java new file mode 100644 index 0000000..05ed6c9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepDistnOfManpowerForm.java @@ -0,0 +1,55 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepDistnOfManpowerForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + private String txtDate; + + private String butTxtDate; + + private String disabbutTxtDate; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getTxtDate() { + return this.txtDate; + } + + public void setTxtDate(String newTxtDate) { + this.txtDate = newTxtDate; + } + + public String getButTxtDate() { + return this.butTxtDate; + } + + public void setButTxtDate(String newButTxtDate) { + this.butTxtDate = newButTxtDate; + } + + public String getDisabbutTxtDate() { + return this.disabbutTxtDate; + } + + public void setDisabbutTxtDate(String newDisabbutTxtDate) { + this.disabbutTxtDate = newDisabbutTxtDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepGrossSalExecForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepGrossSalExecForm.java new file mode 100644 index 0000000..c92bc80 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepGrossSalExecForm.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepGrossSalExecForm extends HrmBaseForm { + private String txtYYMM; + + private String txtLocationId; + + private String butTxtYYMM; + + private String disabbutTxtYYMM; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getButTxtYYMM() { + return this.butTxtYYMM; + } + + public void setButTxtYYMM(String newButTxtYYMM) { + this.butTxtYYMM = newButTxtYYMM; + } + + public String getDisabbutTxtYYMM() { + return this.disabbutTxtYYMM; + } + + public void setDisabbutTxtYYMM(String newDisabbutTxtYYMM) { + this.disabbutTxtYYMM = newDisabbutTxtYYMM; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepHistOfEmpForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepHistOfEmpForm.java new file mode 100644 index 0000000..9f3efd6 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepHistOfEmpForm.java @@ -0,0 +1,45 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepHistOfEmpForm extends HrmBaseForm { + private String txtYYMM; + + private String txtDesignationId; + + private String butTxtDesignationId; + + private String disabbutTxtDesignationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtDesignationId() { + return this.txtDesignationId; + } + + public void setTxtDesignationId(String newTxtDesignationId) { + this.txtDesignationId = newTxtDesignationId; + } + + public String getButTxtDesignationId() { + return this.butTxtDesignationId; + } + + public void setButTxtDesignationId(String newButTxtDesignationId) { + this.butTxtDesignationId = newButTxtDesignationId; + } + + public String getDisabbutTxtDesignationId() { + return this.disabbutTxtDesignationId; + } + + public void setDisabbutTxtDesignationId(String newDisabbutTxtDesignationId) { + this.disabbutTxtDesignationId = newDisabbutTxtDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepImpactFinYearForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepImpactFinYearForm.java new file mode 100644 index 0000000..2e00d05 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepImpactFinYearForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepImpactFinYearForm extends HrmBaseForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepJoiningStatusForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepJoiningStatusForm.java new file mode 100644 index 0000000..326f41d --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepJoiningStatusForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepJoiningStatusForm extends HrmBaseForm { + private String txtYYMM; + + private String txtDesignationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtDesignationId() { + return this.txtDesignationId; + } + + public void setTxtDesignationId(String newTxtDesignationId) { + this.txtDesignationId = newTxtDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepMTExecDetailsForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepMTExecDetailsForm.java new file mode 100644 index 0000000..41bfaa0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepMTExecDetailsForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepMTExecDetailsForm extends HrmBaseForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepManpowerMediclaimForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepManpowerMediclaimForm.java new file mode 100644 index 0000000..6fba398 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepManpowerMediclaimForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepManpowerMediclaimForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepOfficersRatedPoorForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepOfficersRatedPoorForm.java new file mode 100644 index 0000000..9689770 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepOfficersRatedPoorForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepOfficersRatedPoorForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPerformanceAppraisalForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPerformanceAppraisalForm.java new file mode 100644 index 0000000..4dae536 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPerformanceAppraisalForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepPerformanceAppraisalForm extends HrmBaseForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPromotionListForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPromotionListForm.java new file mode 100644 index 0000000..08bd42f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepPromotionListForm.java @@ -0,0 +1,75 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepPromotionListForm extends HrmBaseForm { + String txtFromDate; + + String txtToDate; + + String buttxtFromDate; + + String buttxtToDate; + + String disabbuttxtFromDate; + + String disabbuttxtToDate; + + String txtYYMM; + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getButtxtFromDate() { + return this.buttxtFromDate; + } + + public void setButtxtFromDate(String newButtxtFromDate) { + this.buttxtFromDate = newButtxtFromDate; + } + + public String getButtxtToDate() { + return this.buttxtToDate; + } + + public void setButtxtToDate(String newButtxtToDate) { + this.buttxtToDate = newButtxtToDate; + } + + public String getDisabbuttxtFromDate() { + return this.disabbuttxtFromDate; + } + + public void setDisabbuttxtFromDate(String newDisabbuttxtFromDate) { + this.disabbuttxtFromDate = newDisabbuttxtFromDate; + } + + public String getDisabbuttxtToDate() { + return this.disabbuttxtToDate; + } + + public void setDisabbuttxtToDate(String newDisabbuttxtToDate) { + this.disabbuttxtToDate = newDisabbuttxtToDate; + } + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepQualAllIndiaEmpForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepQualAllIndiaEmpForm.java new file mode 100644 index 0000000..c1ca478 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepQualAllIndiaEmpForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepQualAllIndiaEmpForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRatingVisAVisAwardForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRatingVisAVisAwardForm.java new file mode 100644 index 0000000..2aa382f --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRatingVisAVisAwardForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepRatingVisAVisAwardForm extends HrmBaseForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrCessStatusForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrCessStatusForm.java new file mode 100644 index 0000000..1162140 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrCessStatusForm.java @@ -0,0 +1,95 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.io.Serializable; +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepRecrCessStatusForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + private String txtFromDate; + + private String txtToDate; + + private String butTxtFromDate; + + private String disabbutTxtFromDate; + + private String butTxtToDate; + + private String disabbutTxtToDate; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getButTxtFromDate() { + return this.butTxtFromDate; + } + + public void setButTxtFromDate(String newButTxtFromDate) { + this.butTxtFromDate = newButTxtFromDate; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getButTxtToDate() { + return this.butTxtToDate; + } + + public void setButTxtToDate(String newButTxtToDate) { + this.butTxtToDate = newButTxtToDate; + } + + public String getDisabbutTxtToDate() { + return this.disabbutTxtToDate; + } + + public void setDisabbutTxtToDate(String newDisabbutTxtToDate) { + this.disabbutTxtToDate = newDisabbutTxtToDate; + } + + public Serializable getData(HttpServletRequest req) { + HashMap data = new HashMap(); + data.put("txtFromDate", getTxtFromDate()); + data.put("txtToDate", getTxtToDate()); + return data; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrVisAVisSepForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrVisAVisSepForm.java new file mode 100644 index 0000000..2d440d9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecrVisAVisSepForm.java @@ -0,0 +1,85 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepRecrVisAVisSepForm extends HrmBaseForm { + private String txtYYMM; + + private String txtLocationId; + + private String txtFromDate; + + private String txtToDate; + + private String butTxtFromDate; + + private String disabbutTxtFromDate; + + private String butTxtToDate; + + private String disabbutTxtToDate; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getButTxtFromDate() { + return this.butTxtFromDate; + } + + public void setButTxtFromDate(String newButTxtFromDate) { + this.butTxtFromDate = newButTxtFromDate; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getButTxtToDate() { + return this.butTxtToDate; + } + + public void setButTxtToDate(String newButTxtToDate) { + this.butTxtToDate = newButTxtToDate; + } + + public String getDisabbutTxtToDate() { + return this.disabbutTxtToDate; + } + + public void setDisabbutTxtToDate(String newDisabbutTxtToDate) { + this.disabbutTxtToDate = newDisabbutTxtToDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecruitmentListForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecruitmentListForm.java new file mode 100644 index 0000000..5de8aa1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRecruitmentListForm.java @@ -0,0 +1,95 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.io.Serializable; +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepRecruitmentListForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + private String txtFromDate; + + private String txtToDate; + + private String butTxtFromDate; + + private String disabbutTxtFromDate; + + private String butTxtToDate; + + private String disabbutTxtToDate; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getButTxtFromDate() { + return this.butTxtFromDate; + } + + public void setButTxtFromDate(String newButTxtFromDate) { + this.butTxtFromDate = newButTxtFromDate; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getButTxtToDate() { + return this.butTxtToDate; + } + + public void setButTxtToDate(String newButTxtToDate) { + this.butTxtToDate = newButTxtToDate; + } + + public String getDisabbutTxtToDate() { + return this.disabbutTxtToDate; + } + + public void setDisabbutTxtToDate(String newDisabbutTxtToDate) { + this.disabbutTxtToDate = newDisabbutTxtToDate; + } + + public Serializable getData(HttpServletRequest req) { + HashMap data = new HashMap(); + data.put("txtFromDate", getTxtFromDate()); + data.put("txtToDate", getTxtToDate()); + return data; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRetirementDetailsForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRetirementDetailsForm.java new file mode 100644 index 0000000..31ba774 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepRetirementDetailsForm.java @@ -0,0 +1,95 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import java.io.Serializable; +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepRetirementDetailsForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + private String txtFromDate; + + private String txtToDate; + + private String butTxtFromDate; + + private String disabbutTxtFromDate; + + private String butTxtToDate; + + private String disabbutTxtToDate; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getButTxtFromDate() { + return this.butTxtFromDate; + } + + public void setButTxtFromDate(String newButTxtFromDate) { + this.butTxtFromDate = newButTxtFromDate; + } + + public String getDisabbutTxtFromDate() { + return this.disabbutTxtFromDate; + } + + public void setDisabbutTxtFromDate(String newDisabbutTxtFromDate) { + this.disabbutTxtFromDate = newDisabbutTxtFromDate; + } + + public String getButTxtToDate() { + return this.butTxtToDate; + } + + public void setButTxtToDate(String newButTxtToDate) { + this.butTxtToDate = newButTxtToDate; + } + + public String getDisabbutTxtToDate() { + return this.disabbutTxtToDate; + } + + public void setDisabbutTxtToDate(String newDisabbutTxtToDate) { + this.disabbutTxtToDate = newDisabbutTxtToDate; + } + + public Serializable getData(HttpServletRequest req) { + HashMap data = new HashMap(); + data.put("txtFromDate", getTxtFromDate()); + data.put("txtToDate", getTxtToDate()); + return data; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStaffingListEmpForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStaffingListEmpForm.java new file mode 100644 index 0000000..bf5c516 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStaffingListEmpForm.java @@ -0,0 +1,65 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.HrmBaseForm; + +public class RepStaffingListEmpForm extends HrmBaseForm { + private String txtYYMM; + + private String txtDesignationId; + + private String txtFromDate; + + private String txtToDate; + + private String butTxtDesignationId; + + private String disabbutTxtDesignationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtDesignationId() { + return this.txtDesignationId; + } + + public void setTxtDesignationId(String newTxtDesignationId) { + this.txtDesignationId = newTxtDesignationId; + } + + public String getTxtFromDate() { + return this.txtFromDate; + } + + public void setTxtFromDate(String newTxtFromDate) { + this.txtFromDate = newTxtFromDate; + } + + public String getTxtToDate() { + return this.txtToDate; + } + + public void setTxtToDate(String newTxtToDate) { + this.txtToDate = newTxtToDate; + } + + public String getbutTxtDesignationId() { + return this.butTxtDesignationId; + } + + public void setbutTxtDesignationId(String newbutTxtDesignationId) { + this.butTxtDesignationId = newbutTxtDesignationId; + } + + public String getDisabbutTxtDesignationId() { + return this.disabbutTxtDesignationId; + } + + public void setDisabbuttxtYYMM(String newbutTxtDesignationId) { + this.disabbutTxtDesignationId = newbutTxtDesignationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStatusOfDiscCasesForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStatusOfDiscCasesForm.java new file mode 100644 index 0000000..59030d9 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepStatusOfDiscCasesForm.java @@ -0,0 +1,25 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepStatusOfDiscCasesForm extends JasperReportForm { + private String txtYYMM; + + private String txtLocationId; + + public String getTxtYYMM() { + return this.txtYYMM; + } + + public void setTxtYYMM(String newTxtYYMM) { + this.txtYYMM = newTxtYYMM; + } + + public String getTxtLocationId() { + return this.txtLocationId; + } + + public void setTxtLocationId(String newTxtLocationId) { + this.txtLocationId = newTxtLocationId; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepTrainingDetailsForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepTrainingDetailsForm.java new file mode 100644 index 0000000..9b845ff --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/RepTrainingDetailsForm.java @@ -0,0 +1,115 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class RepTrainingDetailsForm extends JasperReportForm { + private String fromDate; + + private String toDate; + + private String empNoId; + + private String butFromDate; + + private String butToDate; + + private String butEmpId; + + private String empNo; + + private String empName; + + private String disabbutEmpId; + + private String disabbutFromDate; + + private String disabbutToDate; + + public String getFromDate() { + return this.fromDate; + } + + public void setFromDate(String newFromDate) { + this.fromDate = newFromDate; + } + + public String getToDate() { + return this.toDate; + } + + public void setToDate(String newToDate) { + this.toDate = newToDate; + } + + public String getEmpNoId() { + return this.empNoId; + } + + public void setEmpNoId(String newEmpNoId) { + this.empNoId = newEmpNoId; + } + + public String getButFromDate() { + return this.butFromDate; + } + + public void setButFromDate(String butFromDate) { + this.butFromDate = butFromDate; + } + + public String getButToDate() { + return this.butToDate; + } + + public void setButToDate(String butToDate) { + this.butToDate = butToDate; + } + + public String getButEmpId() { + return this.butEmpId; + } + + public void setButEmpId(String butEmpId) { + this.butEmpId = butEmpId; + } + + public String getEmpNo() { + return this.empNo; + } + + public void setEmpNo(String newEmpNo) { + this.empNo = newEmpNo; + } + + public String getEmpName() { + return this.empName; + } + + public void setEmpName(String newEmpName) { + this.empName = newEmpName; + } + + public String getDisabbutEmpId() { + return this.disabbutEmpId; + } + + public void setDisabbutEmpId(String disabbutEmpId) { + this.disabbutEmpId = disabbutEmpId; + } + + public String getDisabbutFromDate() { + return this.disabbutFromDate; + } + + public void setDisabbutFromDate(String disabbutFromDate) { + this.disabbutFromDate = disabbutFromDate; + } + + public String getDisabbutToDate() { + return this.disabbutToDate; + } + + public void setDisabbutToDate(String disabbutToDate) { + this.disabbutToDate = disabbutToDate; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/ReportInputForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/ReportInputForm.java new file mode 100644 index 0000000..c790999 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/hrms/webtier/form/ReportInputForm.java @@ -0,0 +1,35 @@ +package WEB-INF.classes.wenrgise.hrms.webtier.form; + +import wenrgise.hrms.webtier.form.JasperReportForm; + +public class ReportInputForm extends JasperReportForm { + private String txtYear; + + private String txtMonth; + + private String disabtxtMonth; + + public String getTxtYear() { + return this.txtYear; + } + + public void setTxtYear(String newTxtYear) { + this.txtYear = newTxtYear; + } + + public String getTxtMonth() { + return this.txtMonth; + } + + public void setTxtMonth(String newTxtMonth) { + this.txtMonth = newTxtMonth; + } + + public String getDisabtxtMonth() { + return this.disabtxtMonth; + } + + public void setDisabtxtMonth(String newDisabtxtMonth) { + this.disabtxtMonth = newDisabtxtMonth; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReport.java b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReport.java new file mode 100644 index 0000000..06dff91 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReport.java @@ -0,0 +1,98 @@ +package WEB-INF.classes.wenrgise.report.excel; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Locale; +import javax.sql.DataSource; +import jxl.WorkbookSettings; +import jxl.format.CellFormat; +import jxl.write.Label; +import jxl.write.Number; +import jxl.write.NumberFormats; +import jxl.write.WritableCell; +import jxl.write.WritableCellFormat; +import jxl.write.WritableFont; +import jxl.write.WritableSheet; +import wenrgise.common.utility.ServiceLocator; +import wenrgise.report.excel.Heading; + +class ExcelReport { + WorkbookSettings ws = null; + + WritableSheet s = null; + + public ExcelReport() { + this.ws = new WorkbookSettings(); + this.ws.setLocale(new Locale("en", "EN")); + } + + public WorkbookSettings getWorkBookSetting() { + return this.ws; + } + + public void writeDataSheet(WritableSheet s, ArrayList heading, String query) { + DataSource oDataSource = null; + Statement stmt = null; + Connection conn = null; + ResultSet results = null; + DecimalFormat Currency = new DecimalFormat("0.00"); + try { + oDataSource = (DataSource)ServiceLocator.getLocator().getService("jdbc/conDS"); + conn = oDataSource.getConnection(); + stmt = conn.createStatement(); + results = stmt.executeQuery(query); + int rowPos = 0; + WritableFont wf = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); + WritableCellFormat cf = new WritableCellFormat(wf); + cf.setWrap(false); + int colPos = -1; + Iterator itrHeading = heading.iterator(); + while (itrHeading.hasNext()) { + colPos++; + Heading oHeading = itrHeading.next(); + String sHeading = oHeading.getName(); + s.addCell((WritableCell)new Label(colPos, rowPos, sHeading, (CellFormat)cf)); + } + wf = new WritableFont(WritableFont.ARIAL, 8, WritableFont.NO_BOLD); + while (results.next()) { + rowPos++; + colPos = -1; + Iterator itrHeading1 = heading.iterator(); + while (itrHeading1.hasNext()) { + colPos++; + Heading oHeading1 = itrHeading1.next(); + String sHeading1 = oHeading1.getName(); + int sType = oHeading1.getType(); + if (sType == 1) { + cf = new WritableCellFormat(wf); + cf.setWrap(false); + s.addCell((WritableCell)new Label(colPos, rowPos, results.getString(sHeading1), (CellFormat)cf)); + continue; + } + if (sType == 2) { + cf = new WritableCellFormat(wf, NumberFormats.FLOAT); + cf.setWrap(false); + s.addCell((WritableCell)new Number(colPos, rowPos, results.getBigDecimal(sHeading1).floatValue(), (CellFormat)cf)); + } + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + if (stmt != null) + stmt.close(); + if (results != null) + results.close(); + if (conn != null) + conn.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportInformation.java b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportInformation.java new file mode 100644 index 0000000..7eafbe1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportInformation.java @@ -0,0 +1,88 @@ +package WEB-INF.classes.wenrgise.report.excel; + +import java.util.ArrayList; +import wenrgise.report.excel.Heading; + +public class ExcelReportInformation { + private String reportName; + + private String reportQuery; + + private ArrayList reportHeader; + + public int TYPE_STRING = 1; + + public int TYPE_BIG_DECIMAL = 2; + + public ExcelReportInformation(String sReportName) { + this.reportName = sReportName; + } + + public String getReportQuery(String inputparam1, String inputparam2) { + if (this.reportName.equalsIgnoreCase("EMP_REPORT")) { + this.reportQuery = "SELECT EMP_NO,EMP_NAME FROM EMP_MAST"; + } else if (this.reportName.equalsIgnoreCase("PF_REPORT")) { + this.reportQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("SELECT hep.emp_no EMP_NO,\n decode(hep.emp_type,'D','DIRECT','S','SECONDED',hep.emp_type) EMP_TYPE,\n hep.first_name || ' ' || hep.middle_name || ' ' || hep.last_name EMP_NAME,\n hep.pf_number PF_NUMBER,\n hist.basic EMP_BASIC,\n nvl(hist.pf_dedn, 0) EPF,\n funcchecklimit(hist.basic,6500) COMPANY_BASIC,\n nvl(hist.pf_dedn,0)- (case when add_months(hep.dob,58*12) >= to_date(").concat(String.valueOf(inputparam1))).concat(String.valueOf(",'yyyymm')\n"))).concat(String.valueOf(" then round(funcchecklimit(hist.basic,6500)*8.33/100)\n"))).concat(String.valueOf(" else 0 end) CPF,\n"))).concat(String.valueOf(" (case when add_months(hep.dob,58*12) >= to_date("))).concat(String.valueOf(inputparam1))).concat(String.valueOf(",'yyyymm')\n"))).concat(String.valueOf(" then round(funcchecklimit(hist.basic,6500)*8.33/100)\n"))).concat(String.valueOf(" else 0 end) FPF,\n"))).concat(String.valueOf(" 2*nvl(hist.pf_dedn, 0) total\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" FROM hrm_emp_pers hep,\n"))).concat(String.valueOf(" pay_last_12mth_hist hist,\n"))).concat(String.valueOf(" pay_emp_ytm_mast peym,\n"))).concat(String.valueOf(" gen_site_mst gsm\n"))).concat(String.valueOf(" WHERE hep.id = hist.e_per_dtl_id\n"))).concat(String.valueOf(" and hist.e_per_dtl_id = peym.e_per_dtl_id\n"))).concat(String.valueOf(" and hist.pf_dedn > 0\n"))).concat(String.valueOf(" AND hist.loc_code = gsm.code\n"))).concat(String.valueOf(" AND hist.yyyymm = "))).concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and hep.emp_type='"))).concat(String.valueOf(inputparam2))).concat(String.valueOf("'\n"))).concat(String.valueOf("\n"))).concat(String.valueOf("order by hep.emp_type,to_number(hep.pf_number)")); + } else if (this.reportName.equalsIgnoreCase("PAY_SUMMARY_REPORT")) { + this.reportQuery = String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf("SELECT\n gsm.name as BRANCH,\n case when gsm.id in (100200500000001,\n 200200500000100,\n 100200500000039,\n 200200500000121,\n 200200500000146,\n 200200500000094,\n 200200500000112,\n 200200500000040,\n 200200500000042,\n 200200400000045) then\n gsm.name else\n pgsm.name end\n as REGION,\n H.EMP_NO EMP_NO,\n h.FIRST_NAME || ' ' || h.MIDDLE_NAME || ' ' || h.LAST_NAME as EMPNAME,\n h.emp_branch EMP_CATAGORY,\n gm.name DEPARTMENT,\n h.pf_number PF_NUMBER,\n nvl(hist.basic, 0) AS BASIC,\n hist.hra+hist.addl_hra AS HRA,\n hist.conv_allow AS CONV_ALLOW,\n hist.fixed_allow AS FIXED_ALLOW,\n nvl(hist.misc_pay, 0) as INCENTIVE,\n (case when hist.e_per_dtl_id in (select pi.e_per_dtl_id\n from pay_image pi\n where pi.yyyymm=").concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and pi.pay_code_id in (select pc.id from pay_codes pc where pc.pay_code in(123))\n"))).concat(String.valueOf(" ) then\n"))).concat(String.valueOf(" (select pi.txn_amt\n"))).concat(String.valueOf(" from pay_image pi\n"))).concat(String.valueOf(" where pi.yyyymm="))).concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and pi.pay_code_id in (select pc.id from pay_codes pc where pc.pay_code in(123))\n"))).concat(String.valueOf(" and pi.e_per_dtl_id=hist.e_per_dtl_id\n"))).concat(String.valueOf(" ) else 0.00 end) HRA_REIMB,\n"))).concat(String.valueOf(" hist.OUTSTATION_ALLOW as OUTSTATION_ALLOW,\n"))).concat(String.valueOf(" hist.HILL_STAN_ALLOW,\n"))).concat(String.valueOf(" hist.CHARGE_ALLOW,\n"))).concat(String.valueOf(" hist.flat_maint_allow AS FLAT_MAINT_ALLOW,\n"))).concat(String.valueOf(" hist.ENTERTAIN_ALLOW,\n"))).concat(String.valueOf(" nvl(hist.site_allow,0) as SITE_ALLOW,\n"))).concat(String.valueOf(" nvl(hist.special_allow,0) as SPECIAL_ALLOW,\n"))).concat(String.valueOf(" nvl(hist.lwp_days, 0) as LWP_DAYS,\n"))).concat(String.valueOf(" hist.gross_earning AS GROSSEARN,\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" hist.PF_DEDN as PF,\n"))).concat(String.valueOf(" hist.prof_tax AS PROFTAX,\n"))).concat(String.valueOf(" hist.ESI_DEDN as ESI,\n"))).concat(String.valueOf(" hist.LWF as LWF,\n"))).concat(String.valueOf(" nvl(hist.MTH_INC_TAX, 0) AS INCOMETAX,\n"))).concat(String.valueOf(" nvl(hist.pl_prin, 0) as PL_PRIN,\n"))).concat(String.valueOf(" nvl(hist.pl_int, 0) as PL_INT,\n"))).concat(String.valueOf(" nvl(hist.cdl_prin, 0) as CDL_PRIN,\n"))).concat(String.valueOf(" nvl(hist.cdl_int, 0) as CDL_INT,\n"))).concat(String.valueOf(" nvl(hist.hbl_prin, 0) as HBL_PRIN,\n"))).concat(String.valueOf(" nvl(hist.hbl_int, 0) as HBL_INT,\n"))).concat(String.valueOf(" nvl(hist.adv_rel, 0) as ADV_REL,\n"))).concat(String.valueOf(" hist.gross_deduction AS TOTALDEDN,\n"))).concat(String.valueOf(" hist.net_earning AS NETEARNING\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" FROM hrm_emp_pers h, pay_last_12mth_hist hist, pay_emp_ytm_mast mast,gen_wrkgrp_mst gm,\n"))).concat(String.valueOf(" (SELECT H.ID, D.NAME, D.CODE, D.ID AS GRADEID\n"))).concat(String.valueOf(" FROM HRM_CLASS_DTL D,\n"))).concat(String.valueOf(" HRM_CLASS_MST M,\n"))).concat(String.valueOf(" HRM_EMP_CLASS_MAP MAP,\n"))).concat(String.valueOf(" HRM_EMP_PERS H\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" WHERE D.CLS_MST_ID = M.ID\n"))).concat(String.valueOf(" AND M.CODE = 20\n"))).concat(String.valueOf(" AND MAP.CLS_DT_ID = D.ID\n"))).concat(String.valueOf(" AND H.ID = MAP.E_PER_DTL_ID) GRADE,GEN_SITE_MST GSM,\n"))).concat(String.valueOf(" GEN_SITE_MST PGSM\n"))).concat(String.valueOf("\n"))).concat(String.valueOf(" where hist.E_PER_DTL_ID = H.ID\n"))).concat(String.valueOf(" and mast.e_per_dtl_id = h.id\n"))).concat(String.valueOf(" and h.id=GRADE.ID\n"))).concat(String.valueOf(" AND hist.loc_code = GSM.CODE(+)\n"))).concat(String.valueOf(" AND hist.dept_code = gm.code(+)\n"))).concat(String.valueOf(" AND GSM.Parent_Id=PGSM.ID\n"))).concat(String.valueOf(" AND hist.YYYYMM ="))).concat(String.valueOf(inputparam1))).concat(String.valueOf("\n"))).concat(String.valueOf(" and h.emp_type = '"))).concat(String.valueOf(inputparam2))).concat(String.valueOf("'\n"))).concat(String.valueOf("order by PGSM.Name,EMPNAME")); + } + return this.reportQuery; + } + + public ArrayList getReportHeader() { + this.reportHeader = new ArrayList(); + if (this.reportName.equalsIgnoreCase("EMP_REPORT")) { + this.reportHeader.add(new Heading("EMP_NO", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_NAME", this.TYPE_STRING)); + } else if (this.reportName.equalsIgnoreCase("PF_REPORT")) { + this.reportHeader.add(new Heading("EMP_NO", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_TYPE", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_NAME", this.TYPE_STRING)); + this.reportHeader.add(new Heading("PF_NUMBER", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_BASIC", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("EPF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("COMPANY_BASIC", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CPF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("FPF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("TOTAL", this.TYPE_BIG_DECIMAL)); + } else if (this.reportName.equalsIgnoreCase("PAY_SUMMARY_REPORT")) { + this.reportHeader.add(new Heading("BRANCH", this.TYPE_STRING)); + this.reportHeader.add(new Heading("REGION", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_NO", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMPNAME", this.TYPE_STRING)); + this.reportHeader.add(new Heading("EMP_CATAGORY", this.TYPE_STRING)); + this.reportHeader.add(new Heading("DEPARTMENT", this.TYPE_STRING)); + this.reportHeader.add(new Heading("PF_NUMBER", this.TYPE_STRING)); + this.reportHeader.add(new Heading("BASIC", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HRA", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CONV_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("FIXED_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("INCENTIVE", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HRA_REIMB", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("OUTSTATION_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HILL_STAN_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CHARGE_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("FLAT_MAINT_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("ENTERTAIN_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("SITE_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("SPECIAL_ALLOW", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("LWP_DAYS", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("GROSSEARN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PROFTAX", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("ESI", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("LWF", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("INCOMETAX", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PL_PRIN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("PL_INT", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CDL_PRIN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("CDL_INT", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HBL_PRIN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("HBL_INT", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("ADV_REL", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("TOTALDEDN", this.TYPE_BIG_DECIMAL)); + this.reportHeader.add(new Heading("NETEARNING", this.TYPE_BIG_DECIMAL)); + } + return this.reportHeader; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportServlet.java b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportServlet.java new file mode 100644 index 0000000..4ecbd51 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/ExcelReportServlet.java @@ -0,0 +1,65 @@ +package WEB-INF.classes.wenrgise.report.excel; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.zip.GZIPOutputStream; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import jxl.Workbook; +import jxl.WorkbookSettings; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; +import wenrgise.report.excel.ExcelReport; +import wenrgise.report.excel.ExcelReportInformation; + +public class ExcelReportServlet extends HttpServlet { + private static final String CONTENT_TYPE_EXCEL = "application/vnd.ms-excel"; + + private static final String CONTENT_TYPE_ZIP = "application/zip"; + + public void init(ServletConfig config) throws ServletException { + super.init(config); + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + processRequest(request, response); + } + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + processRequest(request, response); + } + + private boolean isGzipSupported(HttpServletRequest request) { + String encodings = request.getHeader("Accept-Encoding"); + return (encodings != null && encodings.indexOf("gzip") != -1); + } + + protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + response.setContentType("application/zip"); + String reportName = request.getParameter("reportname"); + String inputParam1 = request.getParameter("inputparam1"); + String inputParam2 = request.getParameter("inputparam2"); + ServletOutputStream servletOutputStream = response.getOutputStream(); + GZIPOutputStream gZIPOutputStream = new GZIPOutputStream((OutputStream)servletOutputStream); + ExcelReport excelReport = new ExcelReport(); + WorkbookSettings ws = excelReport.getWorkBookSetting(); + try { + WritableWorkbook workbook = Workbook.createWorkbook(gZIPOutputStream, ws); + WritableSheet s = workbook.createSheet(reportName, 0); + ExcelReportInformation ex = new ExcelReportInformation(reportName); + String query = ex.getReportQuery(inputParam1, inputParam2); + ArrayList aHeader = ex.getReportHeader(); + excelReport.writeDataSheet(s, aHeader, query); + workbook.write(); + workbook.close(); + gZIPOutputStream.flush(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/Heading.java b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/Heading.java new file mode 100644 index 0000000..5f98f30 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/report/excel/Heading.java @@ -0,0 +1,20 @@ +package WEB-INF.classes.wenrgise.report.excel; + +public class Heading { + private String sName; + + private int sType; + + public Heading(String Name, int Type) { + this.sName = Name; + this.sType = Type; + } + + public String getName() { + return this.sName; + } + + public int getType() { + return this.sType; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java new file mode 100644 index 0000000..0165469 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstAttrDtlBean.java @@ -0,0 +1,56 @@ +package WEB-INF.classes.wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDocMstAttrDtlBean extends BaseDetailBean implements Serializable { + private String txtAttrName; + + private String txtType; + + private String txtDesc; + + private String docTypeHdrId; + + public String txtLovKey; + + public String getTxtAttrName() { + return this.txtAttrName; + } + + public void setTxtAttrName(String newTxtAttrName) { + this.txtAttrName = newTxtAttrName; + } + + public String getTxtType() { + return this.txtType; + } + + public void setTxtType(String newTxtType) { + this.txtType = newTxtType; + } + + public String getTxtDesc() { + return this.txtDesc; + } + + public void setTxtDesc(String newTxtDesc) { + this.txtDesc = newTxtDesc; + } + + public String getDocTypeHdrId() { + return this.docTypeHdrId; + } + + public void setDocTypeHdrId(String newDocTypeHdrId) { + this.docTypeHdrId = newDocTypeHdrId; + } + + public String getTxtLovKey() { + return this.txtLovKey; + } + + public void setTxtLovKey(String newTxtLovKey) { + this.txtLovKey = newTxtLovKey; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java new file mode 100644 index 0000000..1faf439 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstConditionsDtlBean.java @@ -0,0 +1,26 @@ +package WEB-INF.classes.wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDocMstConditionsDtlBean extends BaseDetailBean implements Serializable { + private String docTypeDtlDesc; + + private String conditionExpression; + + public String getDocTypeDtlDesc() { + return this.docTypeDtlDesc; + } + + public void setDocTypeDtlDesc(String newDocTypeDtlDesc) { + this.docTypeDtlDesc = newDocTypeDtlDesc; + } + + public String getConditionExpression() { + return this.conditionExpression; + } + + public void setConditionExpression(String newConditionExpression) { + this.conditionExpression = newConditionExpression; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstHdrBean.java new file mode 100644 index 0000000..79c2691 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocMstHdrBean.java @@ -0,0 +1,46 @@ +package WEB-INF.classes.wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseHeaderBean; + +public class WflDocMstHdrBean extends BaseHeaderBean implements Serializable { + String documentDesc; + + String documentCode; + + private String screenName; + + String maxAppLevel; + + public String getDocumentDesc() { + return this.documentDesc; + } + + public void setDocumentDesc(String newDocumentDesc) { + this.documentDesc = newDocumentDesc; + } + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getScreenName() { + return this.screenName; + } + + public void setScreenName(String newScreenName) { + this.screenName = newScreenName; + } + + public String getMaxAppLevel() { + return this.maxAppLevel; + } + + public void setMaxAppLevel(String newMaxAppLevel) { + this.maxAppLevel = newMaxAppLevel; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocTypeDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocTypeDtlBean.java new file mode 100644 index 0000000..6922333 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDocTypeDtlBean.java @@ -0,0 +1,36 @@ +package WEB-INF.classes.wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDocTypeDtlBean extends BaseDetailBean implements Serializable { + public String txtCode; + + public String txtDesc; + + public String txtActFlag; + + public String getTxtCode() { + return this.txtCode; + } + + public void setTxtCode(String newTxtCode) { + this.txtCode = newTxtCode; + } + + public String getTxtDesc() { + return this.txtDesc; + } + + public void setTxtDesc(String newTxtDesc) { + this.txtDesc = newTxtDesc; + } + + public String getTxtActFlag() { + return this.txtActFlag; + } + + public void setTxtActFlag(String newTxtActFlag) { + this.txtActFlag = newTxtActFlag; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java new file mode 100644 index 0000000..d3152ac --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeDtlBean.java @@ -0,0 +1,76 @@ +package WEB-INF.classes.wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.common.bean.BaseDetailBean; + +public class WflDtlDocTypeDtlBean extends BaseDetailBean implements Serializable { + public String txtDtlDocCode; + + public String txtDtlDocDesc; + + public String txtConDesc; + + public String txtExp; + + public String txtPriority; + + public String txtConditionId; + + String disabbutCondDesc; + + public String getTxtDtlDocCode() { + return this.txtDtlDocCode; + } + + public void setTxtDtlDocCode(String newTxtDtlDocCode) { + this.txtDtlDocCode = newTxtDtlDocCode; + } + + public String getTxtDtlDocDesc() { + return this.txtDtlDocDesc; + } + + public void setTxtDtlDocDesc(String newTxtDtlDocDesc) { + this.txtDtlDocDesc = newTxtDtlDocDesc; + } + + public String getTxtConDesc() { + return this.txtConDesc; + } + + public void setTxtConDesc(String newTxtConDesc) { + this.txtConDesc = newTxtConDesc; + } + + public String getTxtExp() { + return this.txtExp; + } + + public void setTxtExp(String newTxtExp) { + this.txtExp = newTxtExp; + } + + public String getTxtPriority() { + return this.txtPriority; + } + + public void setTxtPriority(String newTxtPriority) { + this.txtPriority = newTxtPriority; + } + + public String getTxtConditionId() { + return this.txtConditionId; + } + + public void setTxtConditionId(String newTxtConditionId) { + this.txtConditionId = newTxtConditionId; + } + + public String getDisabbutCondDesc() { + return this.disabbutCondDesc; + } + + public void setDisabbutCondDesc(String newDisabbutCondDesc) { + this.disabbutCondDesc = newDisabbutCondDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java new file mode 100644 index 0000000..7e86df0 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflDtlDocTypeHdrBean.java @@ -0,0 +1,3 @@ +package WEB-INF.classes.wenrgise.workflow.bean; + +public class WflDtlDocTypeHdrBean {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflWorkListInfoBean.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflWorkListInfoBean.java new file mode 100644 index 0000000..1c191b8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/bean/WflWorkListInfoBean.java @@ -0,0 +1,96 @@ +package WEB-INF.classes.wenrgise.workflow.bean; + +import java.io.Serializable; +import wenrgise.workflow.utility.Node; + +public class WflWorkListInfoBean implements Serializable { + String docTypeCode; + + String docId; + + Node oNode; + + String creatorempId; + + String requestorEmpId; + + String siteId; + + String lastEmpId; + + String assignedOn; + + String status; + + public String getDocTypeCode() { + return this.docTypeCode; + } + + public void setDocTypeCode(String newDocTypeCode) { + this.docTypeCode = newDocTypeCode; + } + + public String getDocId() { + return this.docId; + } + + public void setDocId(String newDocId) { + this.docId = newDocId; + } + + public Node getONode() { + return this.oNode; + } + + public void setONode(Node newONode) { + this.oNode = newONode; + } + + public String getCreatorempId() { + return this.creatorempId; + } + + public void setCreatorempId(String newCreatorempId) { + this.creatorempId = newCreatorempId; + } + + public String getRequestorEmpId() { + return this.requestorEmpId; + } + + public void setRequestorEmpId(String newRequestorEmpId) { + this.requestorEmpId = newRequestorEmpId; + } + + public String getSiteId() { + return this.siteId; + } + + public void setSiteId(String newSiteId) { + this.siteId = newSiteId; + } + + public String getLastEmpId() { + return this.lastEmpId; + } + + public void setLastEmpId(String newLastEmpId) { + this.lastEmpId = newLastEmpId; + } + + public String getAssignedOn() { + return this.assignedOn; + } + + public void setAssignedOn(String newAssignedOn) { + this.assignedOn = newAssignedOn; + } + + public String getStatus() { + return this.status; + } + + public void setStatus(String newStatus) { + this.status = newStatus; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/core/WflConstants.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/core/WflConstants.java new file mode 100644 index 0000000..73b6e8b --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/core/WflConstants.java @@ -0,0 +1,91 @@ +package WEB-INF.classes.wenrgise.workflow.core; + +public class WflConstants { + public static final String APPROVE = "Approve"; + + public static final String SUBMIT = "Submit"; + + public static final String REJECT = "Reject"; + + public static final String REVISE = "Revise"; + + public static final String CLOSE = "Close"; + + public static final String CANCEL = "Cancel"; + + public static final String PI = "PurchaseIndent"; + + public static final String TE = "TenderEnquiry"; + + public static final String QT = "Quotation"; + + public static final String TEP = "TenderEnquiryProposal"; + + public static final String PP = "PurchaseProposal"; + + public static final String PO = "PurchaseOrder"; + + public static final String DO = "DeliveryOrder"; + + public static final String DS = "DeliverySchedule"; + + public static final String LEAVE = "Leave"; + + public static final String LOAN = "Loan"; + + public static final String APPRAISAL = "Appraisal"; + + public static final String ADVANCE = "Advance"; + + public static final String TRANSFER = "Transfer"; + + public static final String DEPUTATION = "Deputation"; + + public static final String SEPARATION = "Separation"; + + public static final String TRAINING = "Training"; + + public static final String MR = "Marerial Requisition"; + + public static final String GRS = "Good Receipt Sheet"; + + public static final String MRN = "Material Return Note"; + + public static final String MIN = "Material Issue Note"; + + public static final String STNIN = "Stores Transfer Note IN"; + + public static final String STNOUT = "Stores Transfer Note Out"; + + public static final String SAJ = "Stores Adjustment"; + + public static final String CHALLAN = "Challan"; + + public static final String RSV = "Reservation"; + + public static final String REJECTED = "Rejected"; + + public static final String PENDING = "Pending"; + + public static final String FINALLY_APPROVED = "FinallyApproved"; + + public static final String APPROVED = "Approved"; + + public static final String REVISED = "Revised"; + + public static final String CLOSED = "Closed"; + + public static final String INITIATED = "Initiated"; + + public static final String SUCCESS = "Success"; + + public static final String ERROR = "Error"; + + public static final String MAIL_SENT = "MailSent"; + + public static final String TRUE = "true"; + + public static final String FALSE = "false"; + + public static final String SYSTEM_MAIL_ADDRESS = "enrgise@tcs.com"; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowService.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowService.java new file mode 100644 index 0000000..a7366dc --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowService.java @@ -0,0 +1,9 @@ +package WEB-INF.classes.wenrgise.workflow.service; + +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.workflow.bean.WflWorkListInfoBean; + +public interface WorkFlowService { + WflWorkListInfoBean getWorkListInfo(String paramString) throws EnrgiseApplicationException, EnrgiseSystemException; +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowServiceFactory.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowServiceFactory.java new file mode 100644 index 0000000..785214a --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/service/WorkFlowServiceFactory.java @@ -0,0 +1,12 @@ +package WEB-INF.classes.wenrgise.workflow.service; + +import wenrgise.hrms.helper.WorkFlowSimulator; +import wenrgise.workflow.service.WorkFlowService; + +public class WorkFlowServiceFactory { + private static wenrgise.workflow.service.WorkFlowServiceFactory workFlowServiceFactory = new wenrgise.workflow.service.WorkFlowServiceFactory(); + + public static WorkFlowService getService() { + return (WorkFlowService)new WorkFlowSimulator(); + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/vo/WflDocMstQVO.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/vo/WflDocMstQVO.java new file mode 100644 index 0000000..b1bcaf5 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/vo/WflDocMstQVO.java @@ -0,0 +1,6 @@ +package WEB-INF.classes.wenrgise.workflow.vo; + +import java.io.Serializable; +import wenrgise.common.vo.BaseQueryVO; + +public class WflDocMstQVO extends BaseQueryVO implements Serializable {} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/action/WflWorkFlowCondAction.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/action/WflWorkFlowCondAction.java new file mode 100644 index 0000000..f3bc214 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/action/WflWorkFlowCondAction.java @@ -0,0 +1,168 @@ +package WEB-INF.classes.wenrgise.workflow.webtier.action; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Stack; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import wenrgise.common.exception.EnrgiseApplicationException; +import wenrgise.common.exception.EnrgiseSystemException; +import wenrgise.common.utility.EnrgiseUtil; +import wenrgise.common.webtier.action.BaseAction; +import wenrgise.ejb.common.session.UserSession; +import wenrgise.workflow.bean.WflDocMstAttrDtlBean; +import wenrgise.workflow.businessdelegate.WflConditionsBD; +import wenrgise.workflow.webtier.form.WflConditionForm; + +public class WflWorkFlowCondAction extends BaseAction { + private Stack stkFormula = null; + + private Map mapAlias = new HashMap(); + + private int iAlias = 1; + + private boolean bOrFlag = false; + + public ActionForward executeImpl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws EnrgiseApplicationException, EnrgiseSystemException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException, ServletException, IOException { + WflConditionForm oWflConditionForm = (WflConditionForm)form; + if (oWflConditionForm.getHidAction().equalsIgnoreCase("classinfo")) { + getDocAttr(oWflConditionForm, request); + refreshForm(oWflConditionForm); + } + if (oWflConditionForm.getHidAction().equalsIgnoreCase("validate")) + getLovKeyValue(oWflConditionForm); + if (oWflConditionForm.getHidAction().equalsIgnoreCase("and") || oWflConditionForm.getHidAction().equalsIgnoreCase("or")) + setFormula(oWflConditionForm); + if (oWflConditionForm.getHidAction().equalsIgnoreCase("show")) + if (!oWflConditionForm.getValues().equals("")) + setFormula(oWflConditionForm); + if (oWflConditionForm.getHidAction().equalsIgnoreCase("refresh")) + refreshForm(oWflConditionForm); + return mapping.findForward("success"); + } + + private void refreshForm(WflConditionForm oWflConditionForm) { + oWflConditionForm.setHidAction(""); + oWflConditionForm.setFormula(""); + oWflConditionForm.setValues(""); + oWflConditionForm.setOperator(""); + oWflConditionForm.setDocAttr(""); + oWflConditionForm.setDisaboperator("false"); + oWflConditionForm.setDisabdocAttr("false"); + oWflConditionForm.setDisabvalues("false"); + oWflConditionForm.setDisabbutOr("false"); + oWflConditionForm.setDisabbutAnd("false"); + oWflConditionForm.setDisabbutShowFormula("false"); + oWflConditionForm.setDisabbutValues("true"); + oWflConditionForm.setDisabbutSelect("true"); + } + + private void getDocAttr(WflConditionForm oWflConditionForm, HttpServletRequest request) throws RemoteException, EnrgiseApplicationException, EnrgiseSystemException { + WflConditionsBD oWflConditionsBD = new WflConditionsBD(); + UserSession oUser = getUserSessionBean(request); + oWflConditionsBD.setOUserInfo(oUser.getUserInfo()); + ArrayList docAttributes = oWflConditionsBD.getDocAttributes(oWflConditionForm.getDocId()); + Iterator oIt = docAttributes.iterator(); + HashMap oDocAttrTypeMap = new HashMap(); + HashMap oDocAttrNameMap = new HashMap(); + HashMap oDocLovKeyMap = new HashMap(); + while (oIt.hasNext()) { + WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt.next(); + oDocAttrTypeMap.put(oWflDocMstAttrDtlBean.getTxtAttrName(), oWflDocMstAttrDtlBean.getTxtType()); + oDocAttrNameMap.put(oWflDocMstAttrDtlBean.getTxtAttrName(), oWflDocMstAttrDtlBean.getTxtAttrName()); + oDocLovKeyMap.put(oWflDocMstAttrDtlBean.getTxtAttrName(), oWflDocMstAttrDtlBean.getTxtLovKey()); + } + oWflConditionForm.setDocAttributes(oDocAttrNameMap); + oWflConditionForm.setDocTypes(oDocAttrTypeMap); + oWflConditionForm.setDocLovKey(oDocLovKeyMap); + oWflConditionForm.setFormStatus("false"); + } + + private void getLovKeyValue(WflConditionForm oWflConditionForm) throws EnrgiseApplicationException, EnrgiseSystemException { + HashMap oMap = oWflConditionForm.getDocLovKey(); + if (oMap.get(oWflConditionForm.getDocAttr()) != null) { + oWflConditionForm.setConditionLovKey(oMap.get(oWflConditionForm.getDocAttr()).toString()); + oWflConditionForm.setDisabbutValues("false"); + } else { + oWflConditionForm.setDisabbutValues("true"); + } + } + + private void setFormula(WflConditionForm oWflConditionForm) throws EnrgiseApplicationException, EnrgiseSystemException { + StringBuffer sNewFormula = new StringBuffer(); + if (!EnrgiseUtil.checkString(oWflConditionForm.getDocAttr())) + return; + if (!EnrgiseUtil.checkString(oWflConditionForm.getOperator())) + return; + if (!EnrgiseUtil.checkString(oWflConditionForm.getValues())) + return; + StringBuffer sFormula = new StringBuffer(oWflConditionForm.getFormula()); + if (sFormula.toString().equalsIgnoreCase("")) + sNewFormula.append("( "); + HashMap oDocAttributes = oWflConditionForm.getDocAttributes(); + HashMap oDocType = oWflConditionForm.getDocTypes(); + String operandName = oDocAttributes.get(oWflConditionForm.getDocAttr()).toString(); + String operandType = oDocType.get(operandName).toString().trim(); + sNewFormula.append(operandName); + sNewFormula.append(" "); + sNewFormula.append(oWflConditionForm.getOperator()); + sNewFormula.append(" "); + if (operandType.equalsIgnoreCase("S")) { + sNewFormula.append('"'); + sNewFormula.append(oWflConditionForm.getValues()); + sNewFormula.append('"'); + } else { + sNewFormula.append(oWflConditionForm.getValues()); + } + sNewFormula.append(" "); + if (oWflConditionForm.getHidAction().equalsIgnoreCase("and")) { + sNewFormula.append(" && "); + sNewFormula.append(" "); + } + if (oWflConditionForm.getHidAction().equalsIgnoreCase("or")) { + sNewFormula.append(" ) "); + sNewFormula.append(" || ( "); + } + if (oWflConditionForm.getHidAction().equalsIgnoreCase("show")) { + sNewFormula.append(" ) "); + sFormula.append(sNewFormula); + oWflConditionForm.setDocAttr(""); + oWflConditionForm.setOperator(""); + oWflConditionForm.setValues(""); + oWflConditionForm.setFormula(sFormula.toString()); + oWflConditionForm.setDocAttr(""); + oWflConditionForm.setDisaboperator("true"); + oWflConditionForm.setDisabdocAttr("true"); + oWflConditionForm.setDisabvalues("true"); + oWflConditionForm.setDisabbutOr("true"); + oWflConditionForm.setDisabbutAnd("true"); + oWflConditionForm.setDisabbutShowFormula("true"); + oWflConditionForm.setDisabbutValues("true"); + oWflConditionForm.setDisabbutSelect("false"); + } else { + sFormula.append(sNewFormula); + oWflConditionForm.setDocAttr(""); + oWflConditionForm.setOperator(""); + oWflConditionForm.setValues(""); + oWflConditionForm.setFormula(sFormula.toString()); + oWflConditionForm.setDocAttr(""); + } + } + + private String unescape(String sSQL) { + if (sSQL.indexOf(">") != -1) + sSQL.replaceAll(">", ">"); + if (sSQL.indexOf("<") != -1) + sSQL.replaceAll("<", "<"); + return sSQL; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLBaseForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLBaseForm.java new file mode 100644 index 0000000..d9051b8 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLBaseForm.java @@ -0,0 +1,35 @@ +package WEB-INF.classes.wenrgise.workflow.webtier.form; + +import wenrgise.common.webtier.form.BaseForm; + +public class WFLBaseForm extends BaseForm { + private String txtDisplayFields; + + private String txtSearchFields; + + private String queryParam; + + public String getTxtDisplayFields() { + return this.txtDisplayFields; + } + + public void setTxtDisplayFields(String newTxtDisplayFields) { + this.txtDisplayFields = newTxtDisplayFields; + } + + public String getTxtSearchFields() { + return this.txtSearchFields; + } + + public void setTxtSearchFields(String newTxtSearchFields) { + this.txtSearchFields = newTxtSearchFields; + } + + public String getQueryParam() { + return this.queryParam; + } + + public void setQueryParam(String newQueryParam) { + this.queryParam = newQueryParam; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDocAttrDtlForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDocAttrDtlForm.java new file mode 100644 index 0000000..6eb2571 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDocAttrDtlForm.java @@ -0,0 +1,166 @@ +package WEB-INF.classes.wenrgise.workflow.webtier.form; + +import java.util.ArrayList; +import wenrgise.workflow.webtier.form.WFLBaseForm; + +public class WFLDocAttrDtlForm extends WFLBaseForm { + private String documentCode; + + private String userId; + + private String documentDesc; + + private String butDocumentCode; + + private String disabbutDocumentCode; + + String[] txtAttrName; + + String[] txtType; + + String[] txtDesc; + + private ArrayList arylstDocAttrDetail = new ArrayList(); + + private String maxAppLevel; + + private String[] docTypeHdrId; + + String disabdocumentCode; + + String disabdocumentDesc; + + String disabmaxAppLevel; + + String[] txtLovKey; + + String disabtxtLovKey; + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String newUserId) { + this.userId = newUserId; + } + + public String getButDocumentCode() { + return this.butDocumentCode; + } + + public void setButDocumentCode(String newButDocumentCode) { + this.butDocumentCode = newButDocumentCode; + } + + public String getDisabbutDocumentCode() { + return this.disabbutDocumentCode; + } + + public void setDisabbutDocumentCode(String newDisabbutDocumentCode) { + this.disabbutDocumentCode = newDisabbutDocumentCode; + } + + public String[] getTxtAttrName() { + return this.txtAttrName; + } + + public void setTxtAttrName(String[] newTxtAttrName) { + this.txtAttrName = newTxtAttrName; + } + + public String[] getTxtType() { + return this.txtType; + } + + public void setTxtType(String[] newTxtType) { + this.txtType = newTxtType; + } + + public String[] getTxtDesc() { + return this.txtDesc; + } + + public void setTxtDesc(String[] newTxtDesc) { + this.txtDesc = newTxtDesc; + } + + public ArrayList getArylstDocAttrDetail() { + return this.arylstDocAttrDetail; + } + + public void setArylstDocAttrDetail(ArrayList newArylstDocAttrDetail) { + this.arylstDocAttrDetail = newArylstDocAttrDetail; + } + + public String getDocumentDesc() { + return this.documentDesc; + } + + public void setDocumentDesc(String newDocumentDesc) { + this.documentDesc = newDocumentDesc; + } + + public String getMaxAppLevel() { + return this.maxAppLevel; + } + + public void setMaxAppLevel(String newMaxAppLevel) { + this.maxAppLevel = newMaxAppLevel; + } + + public String[] getDocTypeHdrId() { + return this.docTypeHdrId; + } + + public void setDocTypeHdrId(String[] newDocTypeHdrId) { + this.docTypeHdrId = newDocTypeHdrId; + } + + public String getDisabdocumentCode() { + return this.disabdocumentCode; + } + + public void setDisabdocumentCode(String newDisabdocumentCode) { + this.disabdocumentCode = newDisabdocumentCode; + } + + public String getDisabdocumentDesc() { + return this.disabdocumentDesc; + } + + public void setDisabdocumentDesc(String newDisabdocumentDesc) { + this.disabdocumentDesc = newDisabdocumentDesc; + } + + public String getDisabmaxAppLevel() { + return this.disabmaxAppLevel; + } + + public void setDisabmaxAppLevel(String newDisabmaxAppLevel) { + this.disabmaxAppLevel = newDisabmaxAppLevel; + } + + public String[] getTxtLovKey() { + return this.txtLovKey; + } + + public void setTxtLovKey(String[] newTxtLovKey) { + this.txtLovKey = newTxtLovKey; + } + + public String getDisabtxtLovKey() { + return this.disabtxtLovKey; + } + + public void setDisabtxtLovKey(String newDisabtxtLovKey) { + this.disabtxtLovKey = newDisabtxtLovKey; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDtlDocTypeForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDtlDocTypeForm.java new file mode 100644 index 0000000..a4311c1 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WFLDtlDocTypeForm.java @@ -0,0 +1,206 @@ +package WEB-INF.classes.wenrgise.workflow.webtier.form; + +import java.util.ArrayList; +import wenrgise.workflow.webtier.form.WFLBaseForm; + +public class WFLDtlDocTypeForm extends WFLBaseForm { + String[] txtDtlDocCode; + + String[] txtDtlDocDesc; + + String[] txtCondition; + + String[] txtPriority; + + String[] txtExp; + + private String dtlDocCode; + + private String butdtlDocCode; + + private String disabbutdtlDocCode; + + private String condition; + + private String butcondition; + + private String disabbutcondition; + + private String documentCode; + + private String documentDesc; + + private ArrayList arylstDtlDocType = new ArrayList(); + + String disabbutDocCode; + + String docId; + + String[] txtConditionId; + + String butCondDesc; + + String disabbutCondDesc; + + String[] txtConDesc; + + public String[] getTxtDtlDocCode() { + return this.txtDtlDocCode; + } + + public void setTxtDtlDocCode(String[] newTxtDtlDocCode) { + this.txtDtlDocCode = newTxtDtlDocCode; + } + + public String[] getTxtDtlDocDesc() { + return this.txtDtlDocDesc; + } + + public void setTxtDtlDocDesc(String[] newTxtDtlDocDesc) { + this.txtDtlDocDesc = newTxtDtlDocDesc; + } + + public String[] getTxtCondition() { + return this.txtCondition; + } + + public void setTxtCondition(String[] newTxtCondition) { + this.txtCondition = newTxtCondition; + } + + public String[] getTxtPriority() { + return this.txtPriority; + } + + public void setTxtPriority(String[] newTxtPriority) { + this.txtPriority = newTxtPriority; + } + + public String getDtlDocCode() { + return this.dtlDocCode; + } + + public void setDtlDocCode(String newDtlDocCode) { + this.dtlDocCode = newDtlDocCode; + } + + public String getButdtlDocCode() { + return this.butdtlDocCode; + } + + public void setButdtlDocCode(String newButdtlDocCode) { + this.butdtlDocCode = newButdtlDocCode; + } + + public String getDisabbutdtlDocCode() { + return this.disabbutdtlDocCode; + } + + public void setDisabbutdtlDocCode(String newDisabbutdtlDocCode) { + this.disabbutdtlDocCode = newDisabbutdtlDocCode; + } + + public String getCondition() { + return this.condition; + } + + public void setCondition(String newCondition) { + this.condition = newCondition; + } + + public String[] getTxtExp() { + return this.txtExp; + } + + public void setTxtExp(String[] newTxtExp) { + this.txtExp = newTxtExp; + } + + public String getButcondition() { + return this.butcondition; + } + + public void setButcondition(String newButcondition) { + this.butcondition = newButcondition; + } + + public String getDisabbutcondition() { + return this.disabbutcondition; + } + + public void setDisabbutcondition(String newDisabbutcondition) { + this.disabbutcondition = newDisabbutcondition; + } + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getDocumentDesc() { + return this.documentDesc; + } + + public void setDocumentDesc(String newDocumentDesc) { + this.documentDesc = newDocumentDesc; + } + + public ArrayList getArylstDtlDocType() { + return this.arylstDtlDocType; + } + + public void setArylstDtlDocType(ArrayList newArylstDtlDocType) { + this.arylstDtlDocType = newArylstDtlDocType; + } + + public String getDisabbutDocCode() { + return this.disabbutDocCode; + } + + public void setDisabbutDocCode(String newDisabbutDocCode) { + this.disabbutDocCode = newDisabbutDocCode; + } + + public String getDocId() { + return this.docId; + } + + public void setDocId(String newDocId) { + this.docId = newDocId; + } + + public String[] getTxtConditionId() { + return this.txtConditionId; + } + + public void setTxtConditionId(String[] newTxtConditionId) { + this.txtConditionId = newTxtConditionId; + } + + public String getButCondDesc() { + return this.butCondDesc; + } + + public void setButCondDesc(String newButCondDesc) { + this.butCondDesc = newButCondDesc; + } + + public String getDisabbutCondDesc() { + return this.disabbutCondDesc; + } + + public void setDisabbutCondDesc(String newDisabbutCondDesc) { + this.disabbutCondDesc = newDisabbutCondDesc; + } + + public String[] getTxtConDesc() { + return this.txtConDesc; + } + + public void setTxtConDesc(String[] newTxtConDesc) { + this.txtConDesc = newTxtConDesc; + } +} diff --git a/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WflConditionForm.java b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WflConditionForm.java new file mode 100644 index 0000000..3693f05 --- /dev/null +++ b/hrmsWeb/WEB-INF/classes/wenrgise/workflow/webtier/form/WflConditionForm.java @@ -0,0 +1,467 @@ +package WEB-INF.classes.wenrgise.workflow.webtier.form; + +import java.util.ArrayList; +import java.util.HashMap; +import wenrgise.workflow.webtier.form.WFLBaseForm; + +public class WflConditionForm extends WFLBaseForm { + String documentCode; + + String documentDesc; + + String butCondDtls; + + String docId; + + String docAttr; + + HashMap docAttributes; + + String operator; + + String values; + + String formula; + + String hidAction; + + String formStatus; + + String docType; + + String hidFormula; + + String disabdocCode; + + String disabdocDesc; + + String disabbutCondDtls; + + String disabtxtDocDtlDesc; + + String disabtxtPriority; + + String disabtxtCondExp; + + String disabdocAttr; + + String disaboperator; + + String disabvalues; + + String disabformula; + + String butOr; + + String butAnd; + + String disabbutOr; + + String disabbutAnd; + + String butShowFormula; + + String disabbutShowFormula; + + String butValues; + + String disabbutValues; + + HashMap docTypes; + + String[] selectAll; + + ArrayList arylstDocAttrDetail = new ArrayList(); + + String butDocumentCode; + + String disabbutDocumentCode; + + String[] docTypeDtlDesc; + + String[] priority; + + String[] conditionExpression; + + String butCond; + + String disabbutCond; + + String index; + + String butSelect; + + String disabbutSelect; + + public HashMap docLovKey; + + String ConditionLovKey; + + public String getDocumentCode() { + return this.documentCode; + } + + public void setDocumentCode(String newDocumentCode) { + this.documentCode = newDocumentCode; + } + + public String getDocumentDesc() { + return this.documentDesc; + } + + public void setDocumentDesc(String newDocumentDesc) { + this.documentDesc = newDocumentDesc; + } + + public String getButCondDtls() { + return this.butCondDtls; + } + + public void setButCondDtls(String newButCondDtls) { + this.butCondDtls = newButCondDtls; + } + + public String getDocId() { + return this.docId; + } + + public void setDocId(String newDocId) { + this.docId = newDocId; + } + + public String getDocAttr() { + return this.docAttr; + } + + public void setDocAttr(String newDocAttr) { + this.docAttr = newDocAttr; + } + + public HashMap getDocAttributes() { + return this.docAttributes; + } + + public void setDocAttributes(HashMap newDocAttributes) { + this.docAttributes = newDocAttributes; + } + + public String getOperator() { + return this.operator; + } + + public void setOperator(String newOperator) { + this.operator = newOperator; + } + + public String getValues() { + return this.values; + } + + public void setValues(String newValues) { + this.values = newValues; + } + + public String getFormula() { + return this.formula; + } + + public void setFormula(String newFormula) { + this.formula = newFormula; + } + + public String getHidAction() { + return this.hidAction; + } + + public void setHidAction(String newHidAction) { + this.hidAction = newHidAction; + } + + public String getFormStatus() { + return this.formStatus; + } + + public void setFormStatus(String newFormStatus) { + this.formStatus = newFormStatus; + } + + public String getDocType() { + return this.docType; + } + + public void setDocType(String newDocType) { + this.docType = newDocType; + } + + public String getHidFormula() { + return this.hidFormula; + } + + public void setHidFormula(String newHidFormula) { + this.hidFormula = newHidFormula; + } + + public String getDisabdocCode() { + return this.disabdocCode; + } + + public void setDisabdocCode(String newDisabdocCode) { + this.disabdocCode = newDisabdocCode; + } + + public String getDisabdocDesc() { + return this.disabdocDesc; + } + + public void setDisabdocDesc(String newDisabdocDesc) { + this.disabdocDesc = newDisabdocDesc; + } + + public String getDisabbutCondDtls() { + return this.disabbutCondDtls; + } + + public void setDisabbutCondDtls(String newDisabbutCondDtls) { + this.disabbutCondDtls = newDisabbutCondDtls; + } + + public String getDisabtxtDocDtlDesc() { + return this.disabtxtDocDtlDesc; + } + + public void setDisabtxtDocDtlDesc(String newDisabtxtDocDtlDesc) { + this.disabtxtDocDtlDesc = newDisabtxtDocDtlDesc; + } + + public String getDisabtxtPriority() { + return this.disabtxtPriority; + } + + public void setDisabtxtPriority(String newDisabtxtPriority) { + this.disabtxtPriority = newDisabtxtPriority; + } + + public String getDisabtxtCondExp() { + return this.disabtxtCondExp; + } + + public void setDisabtxtCondExp(String newDisabtxtCondExp) { + this.disabtxtCondExp = newDisabtxtCondExp; + } + + public String getDisabdocAttr() { + return this.disabdocAttr; + } + + public void setDisabdocAttr(String newDisabdocAttr) { + this.disabdocAttr = newDisabdocAttr; + } + + public String getDisaboperator() { + return this.disaboperator; + } + + public void setDisaboperator(String newDisaboperator) { + this.disaboperator = newDisaboperator; + } + + public String getDisabvalues() { + return this.disabvalues; + } + + public void setDisabvalues(String newDisabvalues) { + this.disabvalues = newDisabvalues; + } + + public String getDisabformula() { + return this.disabformula; + } + + public void setDisabformula(String newDisabformula) { + this.disabformula = newDisabformula; + } + + public String getButOr() { + return this.butOr; + } + + public void setButOr(String newButOr) { + this.butOr = newButOr; + } + + public String getButAnd() { + return this.butAnd; + } + + public void setButAnd(String newButAnd) { + this.butAnd = newButAnd; + } + + public String getDisabbutOr() { + return this.disabbutOr; + } + + public void setDisabbutOr(String newDisabbutOr) { + this.disabbutOr = newDisabbutOr; + } + + public String getDisabbutAnd() { + return this.disabbutAnd; + } + + public void setDisabbutAnd(String newDisabbutAnd) { + this.disabbutAnd = newDisabbutAnd; + } + + public String getButShowFormula() { + return this.butShowFormula; + } + + public void setButShowFormula(String newButShowFormula) { + this.butShowFormula = newButShowFormula; + } + + public String getDisabbutShowFormula() { + return this.disabbutShowFormula; + } + + public void setDisabbutShowFormula(String newDisabbutShowFormula) { + this.disabbutShowFormula = newDisabbutShowFormula; + } + + public String getButValues() { + return this.butValues; + } + + public void setButValues(String newButValues) { + this.butValues = newButValues; + } + + public String getDisabbutValues() { + return this.disabbutValues; + } + + public void setDisabbutValues(String newDisabbutValues) { + this.disabbutValues = newDisabbutValues; + } + + public HashMap getDocTypes() { + return this.docTypes; + } + + public void setDocTypes(HashMap newDocTypes) { + this.docTypes = newDocTypes; + } + + public String[] getSelectAll() { + return this.selectAll; + } + + public void setSelectAll(String[] newSelectAll) { + this.selectAll = newSelectAll; + } + + public ArrayList getArylstDocAttrDetail() { + return this.arylstDocAttrDetail; + } + + public void setArylstDocAttrDetail(ArrayList newArylstDocAttrDetail) { + this.arylstDocAttrDetail = newArylstDocAttrDetail; + } + + public String getButDocumentCode() { + return this.butDocumentCode; + } + + public void setButDocumentCode(String newButDocumentCode) { + this.butDocumentCode = newButDocumentCode; + } + + public String getDisabbutDocumentCode() { + return this.disabbutDocumentCode; + } + + public void setDisabbutDocumentCode(String newDisabbutDocumentCode) { + this.disabbutDocumentCode = newDisabbutDocumentCode; + } + + public String[] getDocTypeDtlDesc() { + return this.docTypeDtlDesc; + } + + public void setDocTypeDtlDesc(String[] newDocTypeDtlDesc) { + this.docTypeDtlDesc = newDocTypeDtlDesc; + } + + public String[] getPriority() { + return this.priority; + } + + public void setPriority(String[] newPriority) { + this.priority = newPriority; + } + + public String[] getConditionExpression() { + return this.conditionExpression; + } + + public void setConditionExpression(String[] newConditionExpression) { + this.conditionExpression = newConditionExpression; + } + + public String getButCond() { + return this.butCond; + } + + public void setButCond(String newButCond) { + this.butCond = newButCond; + } + + public String getDisabbutCond() { + return this.disabbutCond; + } + + public void setDisabbutCond(String newDisabbutCond) { + this.disabbutCond = newDisabbutCond; + } + + public String getIndex() { + return this.index; + } + + public void setIndex(String newIndex) { + this.index = newIndex; + } + + public String getButSelect() { + return this.butSelect; + } + + public void setButSelect(String newButSelect) { + this.butSelect = newButSelect; + } + + public String getDisabbutSelect() { + return this.disabbutSelect; + } + + public void setDisabbutSelect(String newDisabbutSelect) { + this.disabbutSelect = newDisabbutSelect; + } + + public HashMap getDocLovKey() { + return this.docLovKey; + } + + public void setDocLovKey(HashMap newDocLovKey) { + this.docLovKey = newDocLovKey; + } + + public String getConditionLovKey() { + return this.ConditionLovKey; + } + + public void setConditionLovKey(String newConditionLovKey) { + this.ConditionLovKey = newConditionLovKey; + } +} diff --git a/hrmsWeb/WEB-INF/enrgise-html.tld b/hrmsWeb/WEB-INF/enrgise-html.tld new file mode 100644 index 0000000..47f68fb --- /dev/null +++ b/hrmsWeb/WEB-INF/enrgise-html.tld @@ -0,0 +1,1612 @@ + + + +1.0 +1.1 +enrgise +http://jakarta.apache.org/struts/tags-html + +displayUser +wenrgise.common.taglib.enrgise.EnrgiseDisplayUserTag + + +checkSession +wenrgise.common.taglib.enrgise.EnrgiseCheckSessionTag + + +text +wenrgise.common.taglib.enrgise.EnrgiseTextTag + +formName +false +true + + +disabledClass +true +true + + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +true +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + + + + + +textarea +wenrgise.common.taglib.enrgise.EnrgiseTextareaTag + +formName +false +true + + +disabledClass +true +true + + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +cols +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + + + + + +select +wenrgise.common.taglib.enrgise.EnrgiseSelectTag +JSP + +formName +false +true + + +disabledClass +true +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + + + + + +checkbox +wenrgise.common.taglib.enrgise.EnrgiseCheckboxTag + +formName +false +true + + +disabledClass +true +true + + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + + + + + + +radio +wenrgise.common.taglib.enrgise.EnrgiseRadioTag + +formName +false +true + + +disabledClass +true +true + + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + + + + +button +wenrgise.common.taglib.enrgise.EnrgiseButtonTag + +formName +false +true + + +name +true +true + + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + + + + +img +wenrgise.common.taglib.enrgise.EnrgiseImgTag +empty + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + + + +option +wenrgise.common.taglib.enrgise.EnrgiseOptionTag + +selected +false +true + + +bundle +false +true + + +disabled +false +true + + +key +false +true + + +locale +false +true + + +style +false +true + + +styleId +false +true + + +styleClass +false +true + + +value +true +true + + + + + + + +tab +wenrgise.common.taglib.enrgise.EnrgiseTabTag + +rows +false +true + + +src +true +true + + +disabledClass +true +true + + +formName +false +true + + +name +true +true + + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + + +password +wenrgise.common.taglib.enrgise.EnrgisePasswordTag + +disabledClass +true +true + + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +setAttribute +wenrgise.help.taglib.enrgise.EnrgiseSetAttributeTag + +name +true +true + + +property +false +true + + +id +true +true + + +key +false +true + + +indexId +true +true + + + + +setProperty +wenrgise.help.taglib.enrgise.EnrgiseSetPropertyTag + +property +true +true + + +name +true +true + + +paramKey +true +true + + +indexId +true +true + + + +errors +wenrgise.common.taglib.enrgise.EnrgiseErrorsTag + + + diff --git a/hrmsWeb/WEB-INF/lib/commons-beanutils.jar.src.zip b/hrmsWeb/WEB-INF/lib/commons-beanutils.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..910168a0624e96266bc18eef914d4b8228c5b28f GIT binary patch literal 190810 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�R{s7KJBOZ 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%0D#4he5zOFaza_F>u zp_XA1&^ezBfIBTc( zGh;{C5s2q}vF!U#Q6{zB(f4EXpS?<6P z#;1kq;3)q@)jm=;y@)}3;Nm27+>AsTDbHGc408PPF2{mAZ8G#+v?GH_bGp@RtJYA= zY7wSX2&`jjuOZ_B{X|+8tQO)!@AKc4mwwA!R-l{)Qtwt3pYOUOjONs1U=B$gd$GxO zBh1sqvJ&6~b7*d%euF@xNF``J%jjuK6^BD`bjT1Dpo=s>3P0Dw-Cs=^kS0oH^5~b6 zZU_E25j2f7jLIuylFRDFC0|MUL|rRr0qj5kU5$a~jizuWpcOmkf4cScN?llch_Su2 zFnPM4j2<6>e|(tRP>Rg)OeBr>I9jZ$JPFDxJ*uT#Ua4fpO^8{Qw%?oVSEJi!iRqxx z_(C33`%WVxK2)~0%%;W;CXtmhF9GO_D~@3pp$Qv=yp%1DVpJkQwL@CW`dcfl;Tu|1 zAS{hV`Ld;DiBH!qxYq4^KVn zuWIhjmUleU?t{(y9#TDr0U=8=MP7Cj-Q&z?)6oS&Z!nN15Hyolrl4CFoHlC=uvIDJ!x!+bJ%ff~k3;a4^z;}a3JBtMK8 zD!yIb&zdaZZ9knDSUUF~BEN_YkOHJJn6UHP79t2i!N~OcG*M$4nl$n-;|&RBv~m&Q zdi%aNiF*-N3sYP)PDPa~7(J9zCXE-#c7(mYGA1OAsf7;GP+9Lyoi<+=_rg)eT+!f^ zo~mCP4-kr0TEdXF2suwzR zP}{>M!U-09O+2@_0nqj@xE^U^YjerLDOABekv;xlgh&ai2G-5FJOEn`8g7?j&8wfN zKWAOpFlBd=31EuEL_wOwWn2Q`Z3ZHSRVrNLQB|FA+dd&e2kHCnu|`-R-)lL#EgQz8 zhBJe&uQ?iL8G&wd_$*!0gtcfG8Pc5Yvo{gi3|hsDQiT_F!zDao6&Y4DXy}mPb&DJC zN)Va9c4DuOk1X5&S+K0+MP9n}Q`dT~a3d5h{QgWV1aJoMLd8mk;&kqD-B&J^&+v#j zCu-mbG4}~dlSH}0z<3W>cn?1m3Yo8*67~+A*(-Hmeo?7Vshc0KP3;GqM%?U+jM&V# z>=O8T2Eu%178`uD+5vxYUYdJ`*FEy_Ux!zw6efXl9*?E8V%9Grhb-ZC46l{+TVuG% zKkEp^O{@gz0F80a6l)-hUos7&q#e8nWaG#}1gfhIDQkk=1sjwqs>bqMHhQLz+ZJ?( z`f&oRB-VL2D~sBJ?aU5$4@#KEPWz&HMiuX~B5hXD?$aH(D$AL5w3~GVjP_V@wc49r zCxEcI?D5@TyO-1KNC1C^zDMEtQH|D?|4DKGiaLL_rDN5dUfXbn0nB;UE0JY?KT zrfDIHC*BVAQ^M+YMx@n3cldd0GE++N1t|`rL3ihVBx2a5;&V%2_-81Lo1j8x_o+{> zvbgV6RCjT}+a{>g*!;b|I6fZs_RcXRL(+)*K!~oN5MSV-&7!+^fa|)4yv~c)n>4j3^E$QU3)49{h4t5;!Lxl4-Mixxt zM2k0N4ffzkCGN#;;SR9>Ee@g zJVxGyycO2?*39Hr^ie-JC7U5^Tlo#}R6?K~HD{%;e70(ioABSV=tMCj6! zC(uTOb3~b`UwkZZWrTf9wLrqOHCU!U-BE3q{LnT(HbcbZOo_tQy#dM1O^L-WvF2fs+xR963VXxnoI0&PmN?iz%{8K#{7K~T9Sm_y5JQF&r3rnZEE$?-{w z4gmw`^gH)m)FgQnHy80s2%&_+%@ZLJP}enF{Zi_Jggxbg;ry{c{7&bwyiv>$S-sjZ z&yAhh{d|l<#(11@0xHS3zBzp*ke?D4yi^Jhl!9$Brws@XTY)l9a)4u7ug}rys1#Bj zSu;deL?Nw&HNUp5l@L^WW}ELN9Pj+*zm(h!_3;MmQw*~feY^TrWCE9wY6@p11W7Vm zpO_I&;(+IJ6;UO91I?&OlE1Z9a@L+$BT0fTXyj7-~Yg3$tEfdb@Br zrId$}epBueWi0>$5+BW^bBp|$1GSR6yja-zY2y9r*V&r3{3f~S7TscTrXQ>&UccM} z)y*Z-V5xWJsYZ;Tiqm7u(kqoX&5K?`YZW!kq8kwNJf!mxHOBxFly^ z7-X!{vNIRXF5F33mv=v91U_pAZnsWrSI>H8(zuC-YSRldcEI&{?9ZyEgm)4~laVgi zJ#YI(Yt>Zc!X=BU_sgK}tr=;r$5xugKq{rET%LFfPV+Lk7LB#-kDu0%jV{9-(7!v% z7hB~VeFBQIqFdj~#%Ta+o;sJz%+(tWE_Qcvz@~U!L!;z`KF1IXYFbVGR47dW{dG%5hc+8J6~Er-Wi;AaPnTXlvrWB zQZmAid?+1VvPL~V6ID5x7*;Q2`$6CJXbimpOTEFV(b^l8^f0um!8d<8atRbsSI@9 zf{inF{D!-&X~Z{9F*&#aA$ruvm3z4n6aO|b^(QfvNz9Q-o&1eoA8v8gBCmcCd) ze=Rtfr)*bRJj+5l=X(|Nclzw2@SO5P4nSb;R$+!2)Zmi|IJh_p+e>&L1k!) z*O)Y2S)2iWqvGh)@pPVy&nDIr9XoXk%Zt~Fh6Q}AP(p=w)Sy_8w?B8anCa*w$u4de zzom`1-n#61X=Gg(aiC&PfI%*?pM0CRI{mucJ2`MTvn-ZaDxo)#wk-=ITAhMH<%uc` z{j5=P=&7tK{`4I!!Lzv$-`g^gk%TDUmYt@P=AMIOb>Af%4ufcT%uK#!f*>|gh9&ok z>3qc8+{UZy$9m#w=Kvb15uv0lh&^8hiD+wlZLIBGj8D+|cUn>-qaeJE=SFfUJwcCK?-pTjgi%&i^E>In7{!(RPRUJZ2)?!Vq5)+%+ID>>+8!f~icg8~d zYtvP1q~>P&A%AfwkkA%>G7WP=YT!%f^MUqVbVvI>_3k}tI9tuuu6=2VV|=LnE4Hhl zL+^yV8cL1gE~=5iYLG^_Qn^Z_IrV8FL#b+u_j;;kvy|GzAk*z=?0&)`T&3vB)bdRK zkq_Q{q4#&x-@K!VD^$(3Udmd8D9z`AbZ z@0Tx6uv;;3WQ)#H)f#ME%62Kiafu;Z_LFAc6l!sjoNHDVcT8rd0`KBzc|G6U3dB2M zSmG^`t0C}-2-zlwF(_da?fOq?CPhH6f{X-M>Q(Dkf>e{`O4<4ONLD%b55^_p$~I=d zFZkOUlcm57ue>H$=-Yfs4z3p)pN2P~M6HCGX6DWYN+qP}nwr$(CZQB`khRx3E8uZsass0OhaNo7gv(G;6HC(xy)PFQSbf$FY z@;mtUtJ;UpNEV?qCB2shsu!nn)qRhPN7U(^Mba@-8j%LC|I#!mGVvRnwE*nR-LSDcL0v=?kWLvF@@)6Bzz!vH__!pclSK{yuS{~AZr(OSJ@%V#5p%kgMy-dD`?dX|dJUsX&* z!Xh9gtLdZzlN78hrn5@@R|A2g<^ub_3J4ntzMNt<6f^L|wFA&jw~0%JS34rflb-bRj86)GY`AH9 zV45qq@Bg^o;<7)T*u{l@mZjOUlH~1xF^(Rvcsda0-}OWceHt9fpReohV$k<}#_ha= z{E0vQbw_-6jA>;k+P7nb{)!Y0bUdC*9*D<Lv)(MB?ID z;NO6op^@Pz<>r5|yPxZYGZTEUn9Bp3#5r3+8SiRwC?>f}V`eWJWzq_1lrOLYBon-z z-PxbZFTe$L#*zE!<(H@Eb2VpnZtHg7{kqi63!8o)kqvTytEZ7l7oB!Su&z!-J; zI}G~jb*c@OV1y*nmu_JmFOO#ee6Q*Ld>DEQ`Uc(fezzWrhg*vsVEmg->SmNkc9ZLU zH2!o@YlUV?fh%-GOZ+Rx4N`e{;+g|8$#j1~21DK`7XN+DclY%so)xMhUI^4@>BWo9+uu?#;IznD|y%UW)4M6PlgjCau==GTrYz`la!01TqZioav!o$ zplud@-(tjyvwRxhLowh~>Rrr)J18`nqz%PjT$-5?ruq(T zt+;3HW%4&H-Mb5U-nK4p6xwmtpBI9xq7E~xPyM$8;WsKRfs(85U7tR~4k_2- zG7bq6D`mwhX;Nocw8=e(HJTL>Skr}f=Kgs;dlT>N{;aU6Yyu%^LF=3^hgyB*O@ zO|iw)6WZ+D)6;Cr{7mHqZ0u&GIg-@+7i>#kOSNW^IK6S1`AlM(piHkser9`%K+qthi7&D!d>9||B+Hzv2AI{{d@E-g#Z7gRR0%H z{vTH=?W_20Hl$xafnRVV#R9j(4bLY&6L!eMjjbA}`rb2fCqadRCYkNasUj+=y)Mz8 z*X#q~BE1(c_s@w!vFy~zO#E=>;Y>nGcRb(6+5QRQhrgh%Xe?Z$xvbj@aos0|Os~A{ zkIl}1MH(MROtWF3JO~ zOn9ebr~O)?M_JMscl6l$-#C;hkCm~7Rhzt0NFDqXv_SBW93~Y#xrMuU4nqlCmWT`` z>U1>cb9ybxv^G@oUV!4i!rIZ>g2SB9I493@&0=m;e~$oM;c%{FZV-O~0s6J{OKU0tX&P0L$w3 zj8U1<&#oBkaY!{1)NEN9q~}<9r5Dq3@C#_>%|!NQbjkyDxjG}P&W`=_yWGU;7u7LJy zE^kA5{>aAJiwne2k~2n|bY0g` zK8<0@OdS_+U`Dsss_kI@i;MONHb+!30`vNxT(`{UTtHM1152J5$u#^SKkKO4TZ)+he z(^^RsWmki&JsTU{!w>=0xO1H z0U1Mt#*srt(_bJ&FeXkhESh0|1PcFMq<|@9j64#G36se(R18h$FShQ}LqYX)GYu=Y z8E}1i0j$9?V>BEBxMPEJs9w}p{}t~L)wu5Hzrb_X=b(h&q?D_sx^va`Y&AXeCE@Im zn<)BVfn6eqaHTe0iko|D=uEsPWGhx*I){&-!|UmD9r%;y)u<^Dwt(BZSPwXlA<_Om zI1hdcZ@UK&6-lQQ@5U0DyQ>udc-L&-_NeA};g$U9vg3{*R1_bz`-%QD_ARRVi9*%h z<%Y+d-LMg9Wd|?Q?1D$h?uXhpsGA6G3am0~-L|jck7No>Q&HlY=dfWYAP9+i4&sBg z#mOR!waw)RbOHUqoozfgkoqg-fj4xWj(0qock58`joKWHg{*Ta$>|%22Mq^FGMIS4 z_Hc|uls0Dv6CLyQv-TQfowSX-bPipEub>@Z%C-y|ee8;>ld2F`XW%H@*@`e#xKBr7 zk`Q;srxuIzM1r1=&?RdYC@=ViD-Dryt#~|1<+@D7F*g*6@*eLggqWcBz#3x z>q)912{$FL?>fXjH5XZ*?{h1AI+PjQcPSta8|kzJH0gsr{Wn(-S{AelR9ZpSv#Za7 zMuE;3Y`dH1fU^ztyr)1yl{SBVVc97J*n&#op0zHSXA@-G3Y7@Au1dRptBX&k@bhEj zk`#e0Y(vbjcTL@L52^Vx`Q-5!HKa|K>|&UbWCaG&z=}vo(FnRHtQ4K zqA8-ygYXVd(2X5YjVd9Qgu7MN^pqadFB~Bl5GYMfYqKcz^sG^=x%8R`ZezB92d66< z?at{(+}3f~621;Ll5`#^2m?5Kk(`YkQK2e5YKGW|!IA)hk}D1=#)hYz(7k&DG`iw4 zq><-}0y)T=%pv_$q2T;HjL8&Cg(2oL7Af#C%IBIS0i5`8a&nDj19AGE>*1rd{F4!0 z8o0?4h3DePJKFmNi zSg3VC^yVK}rMh(!$Y(CTAM_zlr`u&-Sled2oS6DrSZVxJR=!j@(flBFiFC$c}u z=&dCkNWQH*My>rr!AtB4$o-cQT3MY(|FO7sdu8fn#KG>?P8oUt)N#eDF6muWi!@du=L|1!moqBE6P$ug0k<9$G=y8G zkH_T}K&K~2Q*57C!Py&{Q^uBOSkl&+XvU46D~)Z91zgV#iYRCy<7AX9_E^m7o_qwD z&0;EmqZ^^AX4PhvA1Y*GX!0_*oyI^z@SQ2xNm#6uCu(Ne#_j~Ru%yH`tSf4S*&1Ol zY%WCR#TAQx_#?grm?9>h|dT+9{<&CU6MY~cM?b5L`g#}fRt?}z;7*yA=D4&!0Bmf!1k z3{AF$Qm&E8{Be+1sY_>XYOC7`j^bRk^@d6mU*I#r>#UEymZ$aJAs_y*`aZYE0kFSv z10VjwX!o`bR_)JoPc6IF{fzRA!7_cuEYT{EH5U0IOV=nr zVO;tEElOVG>8(6womUy%TY!;nZ<|s4~gN=$G5zHms z|5rJsZbs>_g-H2>GR3GJ&fbG34BhGwwB0A;h-$9%`{a`=QWf#T4*MPsgho&IHyNxC zADDJ%hjsB1-2BR7lUT_2eJdrUAp*U*o(JrHo_~+u^nt}Z4ZbH{KIhj%E!Oqv!H|K<^q$4CN@wsxsx? zzYLPlrB0oyx2V`;dkPbo6=Td)c3xA-EVq17NZIUyR?}IOgtcML*_%eJIo$$7s-YRM zj+>qNE6`OhW^Ouhz?RZZi&G!<|OajpCNY-luLmZoXMFqO*xa1zZH z1{Dc-Gd<=BG(B+&`hsSd&b=rF(=v0{@r+u%KgYE}!+lbLx?j9dKFCT(z2CR?(s0!J z%gXi{k~>q9YQ2R6MipRzMTfYcrrA)_RMlt|&Pw+}Q600|lA;higN$JoXhyVL(wyQ} z4Z*iGyM`>pHRuCP7nuRB$hDYyeI*()c&Ft#m86c%IiBvG5)h&jHim|C~-RUQ$C->hH--x?^OB#OEQ!PKSK1x!t)b)duwMo9Aax) z3euO7@92YBtU(osE8VN1h$>f%#4GSk(Ux#{ef$CE5nSIcrn|5$XzG1kc2m^aH}s7{ zb0&Ov9cbD;;`UIqSU2>|BeNoWSZ!#XL$^2kE}xCeo%l=n_u^n>8*kq~OwcPb`^JLS zj-&RtGLE9d-zTXZnFHd(Ys6=DZXj(Io(K+K?_zKt==j+;_3&T5;(!?0cwiYv@ZwYp zqMyCbN?SMBD(~6g@4{?0<4Hij|8I%ufOKAO^dCWr|IZ!$ug3&n?_^GI_|FJ!VM=do zZ)z4Ove>rO+c#jRu3D zJ0r^?9gZm7D0cEvU}|YJ->><+V%nZu`C}3oah8)AW$aJ*9SA(pf7GVJ(nyA7sU&o9 z(4G==(p^()?8s)aN!7*=6CrOd9M2oXaDVQaL+mrq>1m$to5oFCIA2V?zGw9u$E5`H z#Wc0cgZ|AY2V$KDunzcRdx)tjfuAjV%Rrsb#m+QQyJT7y2ywPx7f5V&=r0w}zeUQ& zJ{Q>GNI7$`!1vy4|9SY2F%Nrq51P9WDA1FCaBZn7007tj^hsn59UM$e6rAiG{$=%^ zBBsv9PL>WX_WvE)|K+iE-tK74-_HC2S6P-kt|21bd=b7TY5o`5Uv4DTlaSBaFe^s| znT(-Sl2UAM+4|jnqq?8wIo}Zo1T`g*{Wa^Fs1r>b81&=^P{;-Mf8+HY_<70#ch19Y znltS>%)Qg9VQ=Pu;>HiECYTNmH|)|XjXa<6NU(XJK*LQuSiUMqHk+1ffE$v=P`_|R zt6BH)%PY0cJJ~j-8=}!Vvt0WpskeUV_<%e3 zxDYBvD|0^YL*!gY1rJ~vf-}2dv9+tq(z*sTwp$_r$VO}d=HoMp>Fi$=rpOR&*SqPJ3stRd);TFTC#=N#f+ z87^Qgo4}rwX4VRLORbuJXN@1E3<$HcjcQoU2DR2Zeg9}!?(FQel+Irkdv#v0vjEt| z=tu*&I;=%Xh$d-ponD{>rGP3LCqO+38jnr`L#35SVkdwZU^6yCCK@iX`Eh`ibJPx^ z5uk5UMHt8OBTVF%jwBg`@>m#{?w9JH8esO@H{7#m6qDzY?-M!* zbkrZF#B1N+It>&^26P1;l*as4h^X41)Zdcm3C@5gMoA}P1le;M#w2#!=Xzdx)x8kQ zH0n-op@OuS@;u1aH@z^^CE)et&1jfBH~DDezG3d*!;jyCiTfPC#{WH++aLS>tl{Pf z`~B1S^Ji}SdlDoscFe}X&5!FG9~l9I`v$H&_@`tPYTm@>QPCNFPkX7|w!o)4y%yg2&6(VYte zHjo5}DML=fo+T#^JmA}c$B_Or!2k8cQlALGh669=vzJmyOXoSjG~lI@rFGJ?pFMzn zppkE33%B2za2nvI>om?3FIWj=w9F5@K0kCPRF`vnoIz2Z{_N2 z5N0r^G3978w(EW_+@4E#Z(koSAqji%hmwDke;dR;8ItohLnN#sop1i;<}|uRDAoBcxK8b;}+=dmuxsUMa*r z^@K*FCk??AA_PPbgNS5om`sBSW?K3_=Al>9n`Z)LqmRwFy8=xr&$pzFuLk@|;prKP}BuE(}CPAFRVsVSdNSQv} zaY9mPAPArWggT%R92TB9(vwmM6*(x#guy64#$U2ox|9VOCm>mnAbMt?>4U8+55W>$0t!HG%bb&P13Wv{T^YS@6Z?zFb{()ntcn`{%eZtS)hyHP3%E#|N5ovhxm1xQA)`}i$iH}IR%rg4xjtEsPVrI!G53GT8R$l;NUE6#y z(jSBy0Od>-*lpJ&&`H0t#0NYcsrRIO@IUZA2|iA>QUg-GUgot`-$1LoQfsYj1NMZT zfS6u*-#`Neu3Xm#XDn<0s&GgY0ec_{zB5KGAfQP$$k{c)gWyF#O1{VfbkJ0~hFskT zGN+#=Eeq|nhAzjT$Hwaem}|sQ>TsjV0Uj#szGBj7Qn`w;rKuU2*(v?@@RwvMeR8uL zUY3 zC#qCOv254{P;UafribN*UpMYwY#M@W;I4i}LBkfwy*tO8B1TPs@RvH|`ZM{-lcFGM zF4Dph0R@M<1!EW-a?v&tsNQM!g>wup6|I?@N;wQWoC*x8)AY;?*<3(=i(*l-HUL)3 zpm{cj8b7=oR9)t z2oG%Mm0h4-)Jr`o_@}lnTnJXt{{M|q?Zx4isA)Tz&o&hI!@1bIW06m zj*z9s!XO#XIKMzQ14~v1!85td5PFbe+zS5S$NPY25H{xl87kkEjH2MhjRf3tzEzvW z4n0O)u0~?Bc59y0soVm)-Qrn$DX7Qu3lFw-Hh)SKR}cAVvfeBoZUSAYs@!XNJD}`U zpL{fR5Fx5Ow3gw$Dw4H$T$r(GOrb~ucpOtp*j?A`qOfF%bdqR6SvqOL{{<4pqZL20 zqHVyc?{yrC`F;_K%aeCHMNM@Av&B|MwYKE-P@EZ+S>74C?98d1210G%2{u76;(WKv zY*7KsR3uQ4lEEvJ)Hz8Q@n~Wn(+XLILbGVxzIs2C>1uo@niXOk}?AXRxyY;uiKa)!o!>d9FkbNI5B$(RU zgB4f()49C8&hbT+@-3W#E;-98;^a=V!;I(qc`$y$qHx7S^g~Hek>XX1K6Gu}=un%L%II)fRd9WtgJTya1Ub&;X`kJgkQ`V#?hZ zNeY9pD?n=_(GNHWB;T0Q+ZR2@a}p%Q%K*M*E4_4l@b9k;&>5vU^J4Qol%*+D&IHO> z!YbICM9yhCcdkO*^CwoKQ{d_KBFdIq3aMJET^DgFLjT=jNTXI$>&$>@E3TRv!>xK0 zFTp*4WWK(@v)3PkRB7J+eWjz2`_3PHKe@HGaycci2iFuQ{e@5JaxTKwazCwm?3w;mUx8m;Of>|<&O6u=VpGv?8+>Z^o}DMfOLSkn1<n38_zS0rE>1x!F8FF(l{{@h_-*JLrFy9+8B-4VO{)fld3JE<(HyWivc zC`x0jzP_~IFs=kdt`=F$tK zXwoC}RB~?wyF7qtQBWrI@?Z|^mfOEtVqtNsldHiRtCm)>q_PgX!~&HFf9(xdS(eQY z`*0q^c=2)-L0_7*F~)NqlVGaTY2$c32O*3uxBXoY?3lS9$Zmz;br+bRJjSG)?=WlZ zSaEbB^&uo>o3yDCeG@p%fQJFUZ-B)Gc5VOpf}(AcghzRDl$DsbV%JxS%Z$ZXszVKvH_WSYfI~ zRpm6zwhRSA2e&yHUi#~)l@o1Ol$9DU$!;B-Or^1Mzh%>0OwBe5WRfR-xF-XcP5$Il zbL|ex2yoQRCfHOON)f6}IT;?NVFWu=8=#4Mo`XvNW26^I)t3 z=K|pw3iYLo&8jNc$O>;SS=CJ{f5?w{2 zbed~d-n(}!i=ZYgdkF~{$K?%eeH7htEB0foDcUXkQ4nN;S{r`E9ccqumUn%UoT5X- zIxE>2N*0?phl0jEYnI2$jw~bG2~@{BgFgKO6F*&^plh<|6StZAQmgSe?FvkyK}TOg z#D1Gs8B+2WAUi?6IZo)1AsU~_5c-hXB|l|+-!8-l#E?^Js;h37;S?0&8KOQln=9#c z7^Bt22!OS^>+HOLhRF)oA0vHr$J}L$#a&a^)XZ3|$jWPjLR6jCJ%wrGZZ(f$(*YhO zetOWt8MU@`OZ7X-F8>_B0)oKyJpfX+aTwg-ljRz^4aL+X`#0p4mK8diV?%c+IF(pukSM|uUDTef1V4576Ba%p(BiBSQlQWX`h9I%eaptT?nnsm(=}#7^Mg zzG7-V=%GPxP+E*b#{?Glr#@5fQK5i5f!3`~o&wTtbCD*skba9Vh4Jx8V=RhMM$h+~ zuX_Hm^JcX>-LE%4@sW4h{Vy~JKVLxb27OTV3hGQvduDnVMy=RGJ|nMG*0HUMW@U_g z{L`J#NnfEY8d>9=H~>F7k1)VvPVIpdJ~cyO8dimuq2?`P_TmZr5+Z*9(Y4?M?O3So zS`FLp`(f`EVJAxb%XOT;X3Ht&dKc;2aH5Ub;+8KSAtM+$Hzfw}Dpsdeo!{CoMO*&n zFGcjx)x6CZBcIJxy6nK3Da`Q+#zj zccqkYGilT1l<+88NGi~6KOorX5w)m(-!DbUyc1cdV^an|k8U!Z z8s5>^$oFc$P18U}m0sRF#pm?3Pr$u&be;*E00lU@Cx~{T=g7%#*{CCJvJc8Fj`O8$ z84|e%Euu*a^v{*X#bP{!>$lS37f?77BzNluI=%1)u# zxDINLp3rExID_Go)c13Lb45vwT&~K&v-8Pp;D|O5mSC*NlkYsthRcvhi`7!-c5ft7 zT^`G1Lf!UMM~sAVXn9)`26`;j^sfx7&qD3;a6IR~)`|bdbF)9BmTPKQBTxNSRw(VT z*HdhO(a=9P#kCo7wmDRD=`4h^nFGgns4f)br%kH>*J+h~h(H0jO(B^^B=3jKKO!;J zthiOxyLzS*?DzkI{~sw-lPeo7O0u!M92x*XpA7&2?f)1anz~rnoBRjpq-*cIJ+|n- zJ9Esfvw~h|lO?spLvOTcN0HRDC{-e*XO1%89GmaphA88i z@<8T2namPF{9=2hy<31>-!9ppVOGP)Yxd{oZWunk@AEYKHYa56h$rhEGr@v!4Nh1L zR=FtoE`^-kXKg7Z+y|{h6G_I&X7I~m>>;I@z{oO(Tv^VYOz@aon=L+Bb;~51K)Z>f zu-`EcF;kTX`gAa*%a+N+cs5xz!PIALP0|N>W}is=1M@2!xR4=+U9iPqnIj8yL*gzR zR-MPYX7jU6^^n2zUZ;^Q)?9&Co*6^^6nI)df|%YDHv5grlqgC33ylQQ1N;o!<@6>joT5Vmx@Wl6ixmSHJ(ZT;tpg5c{n+w z_A7=w5Wh?ewuIlKf@0%{QTSUrx+Yq@S=<0YvNE0^E38u%X3S>UvdN(C{ByC5@|Z|F zHS9$GkH|gQF?8G$ezloG+!zHmq4X{n=(DtP{yjF{n6-g%(?0`Ysh?KE7}NAxyu2J+ zw(NAdRV{~R4o-UPlnMj6tepVn zfbGzdPZSVz(q?gMzR5Py3CcB*=DT6VKTyYqo(1WhI$;n|?`PH@n8e2|b)^5n(rv{= zJlCTY=qgb9`niGxbTkEVEO7w_gE-qE=fl8-(TZ1Y05$+K@JZcqEEP=&!3!w>TCwEx zPA5V_T7V180;wQdVgXiUh_Hn6z0}!Re~~dh+XmN(f0PpV6f6pz>tnHEYU0>mi{lN* zm@ZC1*C|3dfp$G<5evLhnbx(xV)vih-5su$3nXVM^L}EcmPieREg?V<$ZMJ7|)9j(?v|ecL}TSmAiMIq6;IS73@sp#CyqFSnimO z0l-8cTLH9gzD^u}eEBb^Jh=OSDs`CAgV76I2v~n%rNTlXa9J)d42A(8&QAnQfxM`g z)ayMT{3eXbAz2qoj1dURZB&&_z#MW2Gq#?o`Qz<(z-azQ<|puJ2`1UBr|zHIZya8p_;t)01FT0D0dSn96%K z=wE`648gQBVhFbfGQ{GAirlBpH$ohNM;)OgLKFZ16qX7V8p*s@241ARPh9LES~Kd0IU2~63I())$Tp;njg^^w822o3vWf!d%4CDP|t2G%NO zKada#@Hn-MQ=B7^;F`=YIAuMk2@832mLMn)=$3CpbTOR%L&6o`2na5=K!^ndgK2{B zM9fAYYGH&$4yht?0Yt1NqT&$BPXY|27yTYA5Dp081%&W}8J_572!0f!)svUAFr1^t zCbIwrm~m31-yX3B1K+F}Gr{ zP$Oi;I#XRV1%k9Ah*4TgNSh^Pqh7dE>S!9@r4w9r-M=ZysdCStF!+UIGKfLy5~~z8 zZ)f}wQVn3tcgc_!VO}6>j?o0>&W8jaVwxc{QP!{XvpW{U+!1&*n+>D%WjGE1d^7oj z_XYTMX|^mn-#ip-I%I>Y+pwE%b7W+1|1Az_PD)>Qe;jAPJ0U`hUuIQ`!^KA-APDqmvx{CmX5&p60@EHii@Q2 zp@)FA^QF#4(V0<~33TaBCXrl{s)xu94e2S$t{h6>^oZvTWwRV(XdTWkD~(~RMS*zv z=Y2eZGeqI#KT?Eml0aK^7hpJm9g}csUni{=V*Fbx=akWJVtn7H&y~f|9zoS9!XFq4 zva6AArmsZ#S9W}1O;CHCa_aj&JX!q=-VUM+%E>0pF@vT;1p(QZVu^pT(s40G7_#iF z?mYBmNr)_y$5?TJ;<5?mkOMhess;TqihlD5zf}ouRb*zcIiTv0uy&jJ@m! zQAPsx+GS+#ybN*bV{;4j73T8R9*t^+FR-wJ?5KEwDV}IMura9w%pvJ+m{szK02RIe zn)7+c5vRC}56p59@)3d{{7{MJ*LY0(ApS*)X>C|(rpR901>xI4M?@d`Lk5^HnMuYX z^AuU!A&D5+|EvzsO&}-f?~gVfFyx|B1eSG8HaDD^5N5|f$+qCL3a8BB8FPeDY3Cu5 zm#qPk3|QuJQbZIAhdp#zO3Er8U}UHx#NnGDtjrf~2`oUz>-UGrw;SUlaiknZ`KctO zU?|5!!_Mdf>k0)Q0Zgp-2am0?D_2r#!PUO@zwSRSN(UXgW{5EoQf@-P4L3CB&p!&KV2n9Fj zPU*molN8rOPn}ww+L|zmb#Z-TChYy71gW6CqvH0F&WI^CdyE~lAkhqo)Fj*{+SXJW zREF!lf`nCdCI`{7lM@kM9I`}?D)iY`@tcWX7HXBJN%>5~V~w8*j1pEVxD0wmE@O?e zJtGA{TGKMDutF+YdDVCT%qZG>pbZ>g?he*~u(DR<1{~K}cfn~-VS!&K`{#LjHr$kQ z9Psgs`NCleX!E;Rr)t+oxN|~*w7h*pc`MN7fXt+=ZVdr=Xvr&|&DioLUcXvSX3_0E znmZ0<(O$A`2*Y1*er}PuU-gch=Wce+T;S#|a1L4cDH@%n$*Zg_jEYWy(ry-SP)2*1 zd*v~Ayv>(ifFHo}orCmJjo|x*#|-7o_W6kKKFvTxon9!3$n zwB8iA)*+GgkeQKxH9YL0)QVd$@ms20@e_N0V;=`Ab$-E3p0VeQPZLfgl_fueyWDeF3nh$f(3I2a2x_`~T6I^kpp~h)YRDP$g%cD~ z&T$jW%c`@tMrYawU!`TX9+*Rms)D<<+h1Sd2mKg+pBUtW%nU*~ry59X868_D=KLz) z{khvy>%mUYM7p?+nO8l4#wbB{;1@L+f0DMzoq0a|1F5dRfnjo7h;cBvl72yy^^+4( zhSPr@-NvTqm^7ktJz{u)^tz%!Jj8x4I&mrAp1sn ze}UHy3a5w5eO=m=0{p$voBHLnk^e&F#d5cq=FU<1+FMGQ*-Dty$O)3kvutXi}v__MuXBPAw@7 z4)OP77Q80*2#LLExED_6(#kedFfjt7+fp#nWi~L)Y7zH}F{SBZttZveJ6E;dOC_ef zlEH0PZfvn%&3YZgBib=BiC#pk9eey%E12S}oK?rwxU*dTGONGz(WD5e9*zumUmMky z9W@RVYMCyff(!QcL}gm*;VR#{^tO#2`l zbO&)b|>ZGcEWz*t9>6Pay(SX%zHM+ApPbup5fz?9PXz{>=@C_ zH2f8_exGskTiWf_%PmD%HOmNcvq4rMufdfn!lK(X%K(j8ft!dnZ*=WqkPwx-NO49f z7jy5eCu#d1N)H=g*MyG&MgA2 z;@3yu7xiSl)iA5&bZhI@vTDpqxMF~B3o0tb>HSuEYqR!F)vcPP1y1Nzy;s5>ZJV7u$nkO#(P3N*2x0Lm0lAbWrL}ZNzy*L^_g* zzOak1=&sIuvyWCF=O7A84C>HA8N8C9%$Jaz;L*rYBuZR*5Vxo^XPVM}eJx7DM zWVrXZLr5N%muS}@xYKnQCJW9<7Xwl%CHMw_a)a0(ih<_Kg-j{#k!Fvazqu^+_Xt%q z>fo5CC;*o)gBX6fEewnT(YIq{k;S4Nykq#*JSz-KMML`2D7$rvELM#((P;};#R;D19qW;MAAeIwu``$yr-Zez?d1>}u$90fwBqP~%9fOeE)Yn>$#*SCgzrW$co+#TK}%xKvWrMpT?+LT!Odt4`Meqm?z#8y2fyMo0Hi1;TI_Bb(^z=-*{{ zXH*m{FhFk^RCQsHS9QaJ@FTXOR7fvTl!-=NB#;H3xswswmk6&TJ&yP6E!2#txCxM! zXn*K=gy*4LFdBbUtZgl05YrJtUETCrKWc{v)1)MHHZ_j!6Rp8ew=)kqmC;I@?1hX1 z1(A1TY-%)X%N#O}10G&aVMCBSIBRdUn#C`7A5u*fL7P;AmttF^YRBYbZHsoV4$;bV zFeXBWmBZ?)#csA}h*_i?x*%X0R(N+@GKzHVY{{xLPK9<6F=$D(h^ObSX2u2OWrU!2 zr6%!Z<`Wl{LX%*M?|suNw}FF&!5fZ6dy~Lq|ubS$hviO$^2;5OFp7 z*2y!E7AM@VOsvgfu}>WO;i}#?*mT-t&$W+sojxfx{^PV67&?8D{7<%1X>{VWX}r_j z(4y;>Q0Z?Zx(ruWb(h*Iv7e57TdQSocHZGK{h=AYZyvbne$WA{w%>$54Zws>oAU6!6mLc-U)w`( zTTPOmmGu~C{Yt+d9crTH(Wo#%&dofhspIS-uAHnkPk(4}V1bsky~=iGcx@gh=6vPX zirSZ`eK)cQS76BjqCO-OF-g2a za&J4BFtVtPQfl{BH@k$spE{A8_NsL?683di7QtGT66D_ZB{ME+Gek*B#btG& z1n75OCnHh*&(AxdWGd-#+U>NuyZRwe_A+C>ncOQ9>ZS1f`yYMWzmOg@Hv7-pw*PjY zt}p-qnEuCL+SSF-$i`H})6P)X#?bk{Ww9q3+jiR$NWSn1{uCI%BXAg$_ayL+J%SdI zZJY_Dw34LR?UsqOk;qZB4U(K&qyLu0FHc32a%T(@JuzZnwo$sTTvjWoH~oK}AbHF4 z?Mfv~90k8qwWj@gR61C z$ole>{E1t&Zk@f)m%kh|S`A6Zs4&z@VK;h6u>#hVwp1AJWFSj$V4Y?_z~*(Na|hK0 zGjEaFzcO*3flFQ}=bB1xL{b7zVcXOM#AUFucuh2|j3>=wezFR>C}-UUkO=MqNhwLE z#Y!qei<{{sZ4@rea>E+jPPr-6ioq{66$|}UDhYH8>sXiYmGyDMoYWF&bER^d%>6>` z2qZre|3>MZviC&86mm*vjc;{(+Nmhj9pEx1E=j-?Os(ma)HKUM z7%1KjDuMbS+KN&b|LCP0+i7lP*s{?K@wLYDbxyx>xY(VdG6ir}a#ZE7B<8^iSQtAA zW$hXh-N?}}aUw-^O7oa?I>m&GS=doOb!&u|zZcTq9cG16rxVa1!Vb=&nPVC)@L*Z5 z4mgtNu)X7Mu_q;|oQzV#dX6r66D7u9QKB$;N#Pw0+O3ONH+4ch30fHyu*>PUFSLhq zZA*c&Y9<{W=dZW7w_dG_PwnT~&$3tmY`|6=4842R3=BEv5L_tCB=bT z`a4U?P4ekr5F|RJQMADvwGf(FT`oGi_V%5p;B5Y_AZ0Lvu(55tAM+iRN5?X8F?{mZ z3^D6EEfEauDYQ&AV*{NVE8BcewwlY$e3qL+$m}UowXAz6m7C6zVr{?f2K19Y=(|d`Yi$7W*NDt7L%hZc7Qbu&@xuz-~D2y65qHc+sXp ze%?p(D>Q}oB!vlnXJYY@WN@>OSPMK1L5v-xTz@dO4^zEP;=azCINmqoM%hzp9m=JY z*uuXCtdGH%b3m6Q&Jj`A9)$RCqP2f#u?siejBsRj#q4kt+^=FqPmSF!;qK~MUOgGH z;djRKq74!O?~CHWk{nRp=6#WZolgY(UM-I`K>3H};kyNfQ(e`7<-uCSSXTxs*zWE@ zqdn?ZV0pQuG3|wJ^O&rMiC}lQUPqxXo(PS=jPqF7P3WP!xmv-PLz=4SABr@N7iNqZ zVKBL$0^@%Aq4yTdfm+Gdz>Lv6;bbGVivaZd$y)b6EYUtf)%tUBUHLD3y?ls z)K`xGbw%0y1xrHU^Q_;T^IV3H$u$-Yt(l}!MsBvKrPBG-HIhBKX%J0gM4-f?|1ch* zMULQ3qfVfWeR#juh>F_OToGZN@xZD77Cq@B-d5$Nt$8{*!oBp-68ezKyMs^d4JTc@ zFlnmG&G7m={WWXb!uNfaT0S-7mG&e$iUGUmSA;iNM`2v*T=1p$VEo*R+xX}6v@2&1 zq|Ih2S>a|3MpTY2^ zQO~aoomsWHTA1)bvG8=&$Y^o}{pebomDVkwgPO_yW_fM->UrKf&*D&Z3e}S~62%9l z)8=vjy`h2C0dY!3gLv=JHp;vnrIZE5G+JI z%^5wYUAtP?x86N%l$wwUiUG3@PPMdf5@iP>CZnIu`fAMoNGx^FN1LI*0KZKi?KC~4 zpTP5L-xxR7{PN~&EEK|x5u5A_uuVcR(9vVhz3KjY7S6BZa15$gS$pn`gRl}br7Ol+ zGZ_dz*f7`BA|j&FHm9+7!OFFzi_ia`Rh=ho^s8*PZ>;$r$k^BDmBEeQ<4eidrk=U6 zVuenhf@u$;qHD6@W-KJ#{lGsTY$%4^JFKDrz-#4Fkc#xLbBvQL!sWIR%t?H=RGN6T z4ZY>Dl}g6_n;8V@)L8ZHdgu3ygsH%>^N*tJ)GA*vr@3phcwD>FoSR?l6&9gtL}-lT zUQ)4=Yu3cH_P>Hg7QRm{&`_Zld9s@@@Co0CR`b(}(?4iXu$?RvLQJV9Yj=}{i86Io z+Z(x!s2ZeP?lEKjGzMZU>SJch+h6HIn)Q7)@^?}_9{D*vXIxbH~v1Sh)V#4Z12h26sY3O6^Wj^xEqwxEj5z>Csk zH#`$?nvaQ@E6(Dode&vW%KMWR8n`J9*X(1FccUE~JsdKH0tUiVkl}nFE{44}OmndzHwz-bTePN@3brvz7xR=)axmFJM%?0(RY_TsbgCQPv? zwd-37A?;d8KTUa8;cA9<+VD5P`w{7lKmwIY&5#~x06v-B%z@kD+RYpBV003t$0094bEB|jw>3`!%Jvv%RTcatyd6n<*>Zbz6Awv@ujjbo{ z$1WyHwX_J&zI@6Y$7_VGgT7?R$5F0x36orZDd`HT~}-L(l4!+S(|@l1pa&hini3S z+*~5rj_-$jb^bz3}M!zwxYo_3z}R{R3S4bfUHwO3ceqnC8BnXE48 zk5yARoka%$KClMGt+r&;G{#tHY1uS(YnsIJ<>d|NdoA?~y?Sg6F!3+xJ$!QG8tJ6n zp%Il&y0MQ=vUgQ9`s}urR_r&_(%P7)o|)Ydk$v%wy?0)tom#H762Q#`5SNbr~Lr>ZXaK|JhU(CQ!^m4+*g7_i`X*EWm7UZSUL$j&pGF^ZVx2O9jJx zEv?nuC%i-HEvaIW;J2u&d$8V0f3BLayYyPx)^bYM?n{zWOXJv18SqonsmK$})1VQ6 zVU^iYshW7U`o#oq?+hl#^L90PDb>uV1o$9d)AQyBJ2iRncyjT}m&zCWkp*|5ttYqh zkJNfc!T5c1e!9?O%sJOEgZ75`ndnur=qy0>+Js1Ps0m>6lltXl9hJ}xf0M4|JA=oJ z+C%v*j%ym@ATs(w3Jn$m=6hNxcKpd=E7z36s$!_6-qKo#XSnObOOW#j(xgbQ@}B%rb(49yk-w1IpDl|u_5021Z>h7Y_a*D% zIG*u$C`;W>w8r)xUtrBrOVVFY-!sPwicpGL@8ddX<9!?+_}rHHXUDZ_zhO3 z{Nd69w*_}<=Wg>l{&anmePnOpAyMGkuE=d~SzF9fFFQ5;gVeF>@It|152qi?DSab$LIR-qDMfuyZUIv77tfD9kCnEy<1pmr1tKqDkuz)v=A1E+Vqe8YLP&^#25mks!sbf z_90NB4he+L$EK~`@clv57@b9^B$^wkC9GgB2p9lcW)DCqsPJ(#AX{@AL^FSOTAQuo z8HPmE^pakLcmvfH8&?N`FMuCoTP?Q}s9hxveXS%Ge^86}%^FZjB8@M(a%PwxWXV9NGX6jTaRk|Ew$ynHq-QYinTYl|1BV%;R)K zeItO>cebMI8%zJ-d!UX%We+2(FgLRjQn_xH7>|jlQ84To^jaJz)3pHt`Z{WGB6XYE z*PX`Zk(H9K3PmBLkXC=`wYQ$(fmT2xe#vOzpvS#7I1D%xoA8+Npx1G=MWlw^YIG2! z*H1;^02I>DBv2ZdZ~+rIf{gOK5JFkRDTV1%?#+Q#t>wf?f+v8`{w6on3S(FPMxp@% zD>wfZ0X%#RK`7(i&J19UQ7-UE_M)vk;6dXj420Hr|#c{q_^{T2n4nk}qo8Ga7^j!9y8 zk>24!E%yseDWgjI{@=|b-660$X!EXR4&a>X4VB=~dFk~>U z07FP6zzT3|rQ?0T{>m0}DEYfIQH|cMAXI?ND=2rwtuB4Y{R!B4fzzyD%w*(qjUY8G zVZl3H4NmYhaGZ#vT4E_4dLT49BN?()+i(g~Y6LX*n?h(VV5(NACyFF&;7b5B$PCFT zGebQWZ^92*gG-zn(>!prYYH4*M2AUziskE-kc;b0R2KH3?L1%}3N|&79!Bhn#4JBQ^t-#|t+Ww$=y7MX<=-fv=Q<0_f>~na}wDD(mk3#@n zrhMAxg>-8(wyo6Fz`U$eF8Xo}SYc*cv@XwLW6~r7#`(~3<>L}>#A#v2nBeF?HUlRB z&G2dFrj5np+c*X3G%LWRa>1dn7wDX6eqq>!Sx=1W)NcR+4Vd{b5R)~EnkXe zJTb7Q&R0G*lq^WL$zeQwvfLQE_bxxpYHy#%3ML;BWAPX4Uuum2aj>_yMc^(QvfRxe z_>qF9J8T}H`5hkC&OI{t+xL5MjAv7|G~m4_?1Q^GF@-+ZMfg$wxj>9e> z!To^*MEmA|Fk3wAHo_dih|%i=%aSE5ix2>gA83k8s)Ly`^V$udu`R=#EWm{y=Q-=Y zz#PDz1#C6Q^A*D<`$qFCC6Gjc+I;+Q+qSbZYT!x+(Ar)5{V!kjz zuJofiN)9;mlc-NyUEQE_`?UJ*nGISW&cfgroo)NRs?<}M0uWU+6$}P;c-9CBqzeSP zr5DI+{ssQ@l>=VxB$^yJQwK=If6g|L2=LmUSj6E49a>hzyQSD=k_k^=?Xy(jH*N#| zvOkXH;5Xtid@b}PX9PS&C^tpV0qczzMqPq^gfOH0ywfH}~MWujv61S7?iT9CNc2w=4) zOY=|MYvj@Dt4w}jfJ!BgCtKc>oW4aPt`6b zkHCY#AWr}m(r?dcDp^xQ3nVI8iE`RHx*el}i{5PpZ)mh0V(5JICm4!G2n-%#x`q-i z2dm9$aJ{XLmmpdT&(!(vWXrXsjNVa#J=RYdP56F!cm)HxLPLb3Bd9CeXvmQ31w5^7 zkbKtoStk%tw==%SNrcmkHN{vUk{n~pB@2aCh*8ey5M)s-OqB|(%KdeLC@BsdAuS=u zb?hr5c)~l*#i=uQOjZCmpWOrtgn>iH5mY-c>?yV&gG@BgjFNQMRI1LJIcaP7W z&X_VW0w`d2s&JzAHdWg(P&RKo?*NYl~- zBn%Mwl)5A)k0*Sgc>Jv?26tZhmJa?lj@D^Jd9>DZodwRio$2%@kjOKoKKN}|)FWtq z<)@YX1sd#nzo}UgMm5yXayFp`1%lg{0q55Z4KOyI6r2fk)H<*0qB{N@{=Sl?B%zGE z{-B?{q0gd`FnyLw3?NLDEg-l}twbgF&K`;0!vgpfHxf*=7eo{J$`DI$D77w2<4Z5M zLyc$tu4qxR(;(2%#vUNwhu`?qFBLG zMK=x69CBHMK$|LWJy1_KIGK2zYpRJXt8%-u?8#$lxNe3R$S1oQc3&#SCdPG?oJu4_O{) zGm7zI$Guv*sO{WqjtP)Ue8j;xtrw0PRK}oiPJ9PYG?7F#R&}MzsD%=QtG8W-3P*-g zTqRlrv`|gj63wgPkdMkG(r#((AA>YTuH1qgCHBC;xbD=I6GC2rJ{y|P0Q06D{{G!T z0hVJhPhRgo$+!oKQu0Svx6e?_CvBqWBpNDU*iAnTG&W)ZAJfxOHceWBLh{%^0j<_5 zL|kuUijU1oyyGC>Eg}KsoF2`h7GNZ@crrnT#3@^^*xx)BgPgK6zXZGUJ0TerQ|qQ&+eI`D+lzXHf4Qo9u~VFOtwk3Ci(OYGGkk1$!q zavyM6U&{z{j89uU4$D@h5(Ee?t;B125CAil2L^9m>34k7flqtpCx-W0+z)NnMXJuM zWxxSs4QDk1T!+)+hZpL6@G(vim*VBCP;q8ql53Xg?tO5iye}CO>@dx_X^1(v#uvA5 z-ojKHM)<*Ki})H41C%w`X8PyP{C?j?<{{nEYym;ma={5G(`>3?pRB+0Q1iGvi(inS z;GY$%rTyQIJcC_ukfsQ8e$H+C;&Ob$TIlfXSZosfqB)+tUXR~cWDxi;UXeR(EiUsB zqz7;f$yOy^q>=hy1uYy?!E>`$Trz$0zsz~Bfl?#O6EVD;{#ga@9_(T3YZUDio%Bj2 z9@fv!+a9d^9IMC!ah(`Pt)Yt z!&2Vdsm?U+rskNU=E&bJT<taeyuk7g-nM6hB* z%rl4(!Z*?;({2&JZ^|if%9Ik|rnQJFhs{5}U~DpOU&FuDYZ!VEjuR%Fa+1wH)2}Mm zYov+B-`%Qx?t%Me$oOP_mc1mLsX0l$f10H(rNrr9QZQcicw_W}D$_BOJoq0Ypgpx5 z3dd4Ch{>MB3m_rC?wFrIxtQ?QpaG)MfDw* zmGhQe-fVY86-GLs(mxJ2a^sp{@&@mpML&dnZ#$lRJOjV+>-p!L3GoHKjCPMEhW&!U zzsz@ku^u6#?wRc)0Qp@}Ljb;BdZy46F!fFXK$oH6-bH z!C)eSrjC_be3k)uH=1%UIhs_~$aj>*98`sGnf}pg~5GWIQ3rZ*i zBV8$^>jt*N48H@^gRkaM7Bw_ke!kVU}T|3aWns%_Q>trMt9LZjoNCp%b=?9>7!q&_c}Xvr-z zOw?@A6f0KREk}TGm8`E9#3G+Ow?%wVu0^B3zm=`j&DmVj)4AiTBM^+`YfIKbVVVJF9TQT>Q5j z;d7qmt{57&C5eIR6NML-^sjF!h2wEiR0=Xv~P^6}!5a z*Ar)@-RyU&=FMMZ@Tt!+>R{q_;6t*_m;gt9EgTEK*B?qi1 zucz`d@vx+5U%cDL)4%ZHZNaX!WmB_imb=y!Rfk{E`jJ4KdQxz~^3n;W$%{{ofNFJ2M;K_yE})*l6)fBt%b^x&d>Qr|LXOPn)HvNnRaO_-Y9vPq&^L; z_&R~fD3S*Mi*}!T-}RQrWF9DEil{uvEh1fJ>7AXIt@B^Nne6=~BS?sAX0Q`=SbzLV4GlSF5qTm-|rt~uIYLh!Xx{I4u9iYPbf1-3^#zkaFE2S1Mj1PVplx2k(pc2zC;OK3K7C zsE{U*oCmYkjX+B}mSbZ7eTO!BQIVQ zSp>er16#k>GIkG;;aDOPO7DCXg*nkUJn~dOOi3G>FU4K&pzau&>EDB&{P-FC;O*xA0xE{PME|;baKOYXmoh$S4 z)M^v<(1{t|U%oBPDxE)?f}_~DZikjCr0hv3<)A0>4dAA~-$h%&?9pjl0#xH_P-ymE z&&RzMvo6=20-HYOuCX^w+sg`J&F*gHu*@@NCR(Sw%S79^t3$$KeT}NSvx?M94?o&fo0C{1K!-;oQasOeLH&gDG&U zTakRx8Z~Qw7sCHCfcOU9IiE_R;K7vk_PPb_xc0#1MFtK$;BfSbx^;jrM6twDvZj~s zF~*i$2P@8UGK@!uJ2@XR_jbi1iaKF%xrc04sCnVZxKCrx$Y@S_m>|E`pljb1ND}8J zRG&+8wvImPzBQtFNoG@p`uRcTiHe1VhnD>F&BcE3GqS#iD1E7Eo1ue1k}-qt$^7ir zRb(ru;{5oUm&+)*Z7@vtO(`exEqtN$F+X?Mrqn<@u`f4W@$}$ah=)5`)7g0Z4f#De z@bj_N3Cq*C5tVWd1p7dAd|0NcWi!N}KrshTaTuMA;KpWC6bQf<$UG6#35?J5L|A>k zb6XZQ`}&wJ*#dnm`AfI}1diiO*a0b{ZV5rOc3<;8KZ{x`Lcqq+AR&f?F71lZtx$}9 zJ~rr}whIrMax4RMzu9U~w-W5Cev4i$78sYSnj_j=6#L{~bkv(f6^Pol&KyUqv`<#nIKP49@DWfp9t(hP zd1M3iozcnp$RcPXLS)E&iy%L`>2_p}o^y}w=Q9y(za^hAIu+^+W6TS-<&`OQ9Khg! zWjlOOYwQPjcg7Q5pRzg!Gv$0Mg0Ihao+J_9@VIb2Zp`#$r3kW)D9dCR-K3{ zGuMu*wYL;s1u3@mVzBlaRAl=-ntDh}WRzJi$>L`^O(oOLrX zBCQP#;W&6jN*;S>VC(!6G57d4oAQ<;5(Znx>{ z2+DAe&u%mB<$luP$isME=pq>|W%^cL_q@9uY>+I&H5stGZTmjuRO<-?x~}Su^Yc$9 zwBVai%0;fy#K{xa*Y0w=PeuqFuc%3YRt~~^x77iVu3o*{)7r2GNP#87(mpWs;{b|| z)z2m-Pa4EmU@;wZxIyKM-`~j3r*@SnVs!na_0P7NfxHQA#rz&}a^o6Q^OkeXJbR4d+qtFX*`&O;PR^2c&&unSN zf%L?c`=#7zy!O1$)9^psju-`n$w)~rOh0-@01m6NIjju4-VUAHL}6;LHDccB&-A8O zIo3Q78@u1=m_O*@SlHAtNV~)J69`X^Bx&l)E)^+meN8KQKd5(_1Op>_R=yHO`n=SG zY!b)r2>#~@(p-@vs&bUxk;MJ`obG&M0;^Fe$COs^97NbHbYoc`6KL zoe}nSN=BHb8!Gwh_Gzl&qm7KmlrZ@DIFTrwW{fzG7ezl5g0X5^f|JSs1f02ze_W2< zUxbM~h29{%LUV(&>C~B_e4~=Ik=!n^ zC254An%{n`wQw->8pNP~^$2WFgve?sT9e(xY^)PNkXNI(x#9iN!Uj`xJ8x-!mx`}7RkVDSe#w9?xR|njsr%{E&1+{^o z&9R-+(V=$ZCNdbWNMw@T_Mh)SplTy?u|fnOdtpyTA0|9E!G1D~sqz%(ro6lYH^|^) zv4rG_n(f#9%_HyP_u_mM;STi>FpfciJ$#OS$UZy(dorQsj1XKZR|ND*W{lPNw2-Ek zCD~;g?e3ic91zPq*or6;f+5^+>_deEEzwPLP&(Td_Y`^S8CYKkC+lYukx z!c?68jhM*zdki)^S9-~K>EFAS@5>QF?%pWwB)+oK%wu3u?yy|9(=L!?L-GVTga8mu^L6KKqUf}26vR0S6&Gr zbNot3*7EG`5dRlGnVI_%;_$P4*- zBW&!FV4^s}%}x z;gG7qPY~)lCcwXp-V?-inQl%r$TuozIoz6 zaoc!NAz%yz@9hos;+dbn^Dm3ull z!K>gN+qQcBFSSgaHayvRg`i$*-(b(;^{&hJZJT5Ru3Q8 zSexlDg-yDHi~#5ykI?QqibsJGj-WBLNDx%EcrHK`D^JU(@L0C>?!vVMNU#Z%QrG-Z zWx|KKuEY8Xpf@doC}{CsNX28I`p{4=FHsbHS*HbZW;x2<-xGA3FT;@*gq%n{w$co} z?qg!wmQcRsn2^|wvzt5qazvezJy~c^&kwa_aWN4gpGc8KIrG-^#xP%iWijt<9Y0-;NdRSXOQgUm^Nj?#Mt&)L+e77Hd z|4FSN^s3MT*ZvEblK=oT00RR2`TtTY|D%xoUp9z;ro*lFj6S#0U*O9N>*HD?a*Ny3 z%(dl)lo(Au$HbhSoSbP~+67kZNM(u1*jLxz-A`)U(_U}@AQFCs#%mJnhNWs6Kz#q( zZ-9UtzV9EmL%G8^yFq;cmX*(CDA zg+9LTDL?Lz+lPPkS;vLH4rD*$$k?H33V0#9Xe(C>y|ti zA)x>kkPX>lL0zUHWzkLzTv25`u^#BNg*_5P%$%+X0Za^Y|G`S8b9P~4w_u;&KKFaSJzRl*@VF7W#6ItS@kM^a+J=72LHcmv zNA~aj4&?XA@#o*#zn&Y<cPT+k@GE%*MXCZ(O0^|2HixqbqysA>|PAq$anML_VVC8gGy(A z+`@}`fp-NB{qSOB4IskMe%yYDksCglzV7>r?)r3ff&VUC`S^HyHurfkvhxO#BE}C) zh+pI4=fHr|e;yr(cV7;Dx#{6Pc>wu`eh<|5xdl?w^8E#z)ZYZBu`Fu)?g9J)#JC#L zbPMBiMKl3$TmGF>GKb)c{N5Sbx&0tss4$B5Pge&nyv~993~R^YUpjwUIXAX<^jt*W z!^OXiLwGCa^JZJWipz}%GU{Kww*qqHymT`tPSVK)@CUROM1K3abY>>#hKrT`7&^Gn z8XjzQclzQXfIaQ>iVOw=qPK}PzwjSAI*4Nj9fn*er|$Jz3cC#pcO2ZND>Med*ydu$ zWJo8ZF>^Pp*1&o067t4qOh#d=Lu? z=@NEgaHn;B-GdER>tLv#G$+`QBrpt9sKT>!4H65UO=zNdd~3tW#Kz2U2sk{4dE}#@SXCi+us9}e$2QU z1ALpsABuQre;xA97HJ}y;jW3InK9E3(r5XOJF*YOM`M2O*JL-wAwln<;f@0owPTwK z%qj&7I;Jw|dm{UV~75=3sS?;1*xle#HIgqUNU`A$8`0E-{!9x=R9rA(OL4?NmL<8#7n%jCxSQmO z_u5bZG7+@p^A z**zV>D*-~0Ac)M;7}u|msRd%lHe|o3j0fr+#!o~^mDmKr5Vg|NgAI9;O?orca{cEJWQ)?47r=&9BQ&vv-}34O&Q>(a zD54h|F{+;!KR6Ayuf*5E-i8e^fUp5`x zQ-yRiQb>w7LIh@~RjJlZ@IB^FN-$7eNKOQ3&!vH4=p-SR(}dK8>W7xPuR0;}XM={m z!rPRLn5bPdsa+Prugpj*Wgd;xu~!J%zwTuij!2u0a%sW_V?EuxhebxkRG=+g6^_CpJ1Y&p)d?$?@gXsxm2b{D7$Q(SCb}P0h>H9&O2Bgkd zp9(w|gz-AG?*@m4r6Uboz8xaS)rnkqV}xMpIx+z(x|t<+a5s8|up7Rj5&vOJ`KkFh z;JPz{IQ*5N4*J4{U=MVspAh;CTVSV!VmN#N`6c>S)D~iB;1WnAP+M1zi=vt$`~?pV z72cPFdvBj2h65(y4A%^VL}otSkeMH#2oeat#zJO*BSTCp*+hdAG~Pg?fdw$`F^Y&s z{U97v(I6=I-8_VU?C2yd8aL2O*aS?=Bn|)UcYgc3=KHH}PoWzQ&d1}v>RFkc@PoqS z6R70VH>^xs9k|_KH)dFpB6`(;|Yl!F1=5wd%pz*PaiAklJC0XtYuERQ;rAWi?qy z9ew-HU1I+Rfktz*z{HZ-V{Z-IYKoub(yHJA@m?>3f*V->9qsqF0((LgGcL=35u6dc z_7n!HC?oo94&+i~D2>TXV9p~kOb60cnJkX9R?u9;zzNJ2I$t>tYy(eU^Rf{wJ&#wR zh^o~%)Bw;Y>MHv0VX5Dj^bzcxQ;+$HX26>vjY(4O)7=dazO zZ1gZ^eVQu+?CeT%f=ODZhDHuw(lX_j-S!B!_%j+Q8^2ADkNHy_07va4b%|Ffnvp*r zf5@CpzlOkki26Zi1kXNcV(!8lw=jYWo?elUMbOqtXmUM?mZsqe3)eZFBHt}yfCUe5 z3V{`bXTGXK;%%f|DFBdq0`{R4#wuLR#>~{&^XQ(dr#O|3#S;1SxFNN@As?aXs4@UO zf<_MC#!gP0WUWR24ury-_GeCT=$|_o^NntrKd#C>;48Cm8qQn^Mv&f)6qpUnl$;Nz z_BGknI60&Kp8L0`H`+^_v z8fd3X+p&P5ZIQNvbSFu(_5bib`c?HFuz$bpd-DbvisTJ?1K9L-nO7BJi54oS1yDc@ z6tS?JoL*LV<#Qy;Du@i>M|VWwZj=gDQKaoL0rPhA|&N{z>p9dptNO9(t0N1u$}gR)eV#fl>?okoRVUX z_oQ27Rw&8r*sZQtlLF>gpjb7+HwNrulLpYl0G-b@rUA1IWv2)cI)uOc**0mFIQSi8 zZ1~RK>Q|fk+g7d72n6{;)4zc`*i#(KN`!JlWB9IK&(5v&M2aaCIU;+EHEVS*-r|X> zdGIm+2-@5HSOa3H+A%`+oKH5$lQ2uAe*EM|DPT;nkFwW85nRF?S;*+|9U*Z1ULy3i zqF-kAk!&j7@ucHXF%-^zzg)Gkn-K#?1?@q*JzuRXX5L0l!H9YEmJG352Q0C4)+)Hz zxMNjW%U=GZ=@H}*$U(g{|E^A>!UYCW?*}Z3RCth;6F?mVKTr#r(X_%N)5rM;An)9Q zEUpiP8Gau!_%euLX8PEK>$+$@KU9NgEf(BsVAdv9V3pid)jLpnFcza+04sJV=>1S} z)~bbr55_@D)aM%=uy=(w#Lc#Rm$2XM(*Q5XXDw-CD^LFW*tkyW`1;t9Nh+Ls6KaDX zkJYYI;k+&cs#7jW*Qq$(1*}Ul*==HE7ioG)VBg0Wv60m<2F&>`pWzw$xAdYet^K8o zHvz8H-krxFplWe-==jGfY&|+>kJZo{i{xpcL|;@qux3Ac@9>kM7bt){tqaBM&LkPw zh7B}7_4-0BOJi@WW=39WOH*&v)!8?0WJ3+yn7ANm*h()4eePp#?2iIxx2(#{6>~~lW)sGA+89;?zs9biMOmdtkG*MsSA;tR+n5G=1hEPO> zj(csP3*nx6GvTw&JKM>Ehhr65I0*rqix>)(fy?Lpu%TWJ`z^HvsJG314kxs|S%o1a zEF1(-3hC|K5GqZ9ut=MwXB&9gTI+{goH9!BQEX5 z&0c4j+$7BlJTb&)4+P@TWr$pdRpdL7h7alR?x7} z0Smnl(mdEq zr-BjX<>iUt58Ronw^Vcfr7%=FToRe=9v`j%{I@*30ZA0L)y=0e@7@-?1gCU?J2^>N zudRM95|z^qnT>N`fDny(q8}~zD5m6mslSZ}$iaK7z7%N`3LG_ttSw5&3;?H0;I4dFiL0l}D<%|+J{pnH@y_XC&QYI2c9#qugK$ZSc z!m!{4=>c#wx3R0vF=U3QT=Gwv5PC|lcG`fopKh*(RGcWVvpcH|H`dPYk_RiXSk2Dg z85*FmLPq)(Z7u-P{227+`@ow8Xh&+fJ)?H%okbX%?y?e5twAqOWD?|gX{x&7Bvr=P z;Tcgl>usWzlPW#hjIB-wRqnqa5=JK#!vFMyoLXg&csz#PriZT}cMe{_Z^~4-llolf z+ZCEtz~Lfo1>3d8R|rObC4tj6yKdfDO=mRK>}RqSMh3uAwYqlGxk*3n;Q4rb zf2(&ZtiQ!s(q_HGJT?}}3Wh6;i?bc!_w;`eBz38efXpN`K_PsPuIe0#N(E6yB-3VF z1swXY`pY(IEUW7pnVr%2&GGQ?U!ic?2gh<0+3<5!&#!I?0@OfNOYSj3{&G$Z*{&EY z1JyY;2pDoC4ARQFif+f}McP_62pJUEdRkqQRQPVQZ+h}GK!FIRwpx^xGn3Ix{$14| zRiyS(b;W-(9!IzkyR9032YwbMQ#@sxjG)BL$}IO0>s8XC68ZFoe_c&w{gK8U^W_!U zk=u3Gr1-1LHl}O4w-NA+B3TXAo5+)*VjZ8_HKKJC54kmQT;=8sN-9( zgLz|{_@n2#xaU37sx!Oi$?%G&`15a4B~xBkPO^F@i4-gl$QgORA|XofEOS)h3j(_( z4k={(NxSO14R#lip7CbC+-5Nz+BtQ2H*U97qw0KC&l;NiQkCN-Zuu>kd8JL9#qN5N zxK7lva>t{F){6Wb&8210Y~o=OBUbV38bBB(JNY~*^-d9B{0#|F2rN+fP-82-{_}NW zUX-zx7O%*^Np8KGo;OrBz3^X*y;GMU(9&g_wr$(CZD*xzRob>~+qP}nwrzKvdq$>}Bq`qoiNf6b&vj13;s< zz|>}8_U}(e;+8FRPlNLDMPU;`*M%AM0NN*Lxn-E4H35CBBoVTF>EEpb*n&%z&pyH! zCdbHK?1RD}-ShooI%9IHxfp8FSjy=emg;(D(E9v*_-NP6B!I0sYd@i=GO&)VkharV9* zB9WEpb>_A^fwG(`*at@=ziN_mhZD63FfA1A8mVk@nd}~r7*M~`nYigXGO;R>vr`poMaRc!{J8bNJ`m7R zI=URIOX)B^jSN}e=`SU{u0}bDxmtXpC{u%77}`U<0^3%gTYj5K0aVc!g)pb}tM%|( zRgO{Zuh8RM90j+C1tA~hh}}lA+N}6(#lL9hSc%}4?-?4ScTksVGhxD_9UI}c8mhH- zk3mX&UAah5NPv0zAFbxQ7ISWsjB*R96(HS(Dif9Tgru68WxFUSf369sWyFW1S_EoR zwQw6*mFZ2fBi|!SX=FYQ}p>w-{mq>0RdMi6o5E!oAwsf{%%w%PYku_H#-Oskq;l%Ke#D z8?>n13+W?1fdATnmUkhlc`{+Pd97=48Dwo>eGJPG)|{D(NAyou@2gi0dHWoFVc~~>y8u2->MP>`b*zU zT2YZGL7L)8d-Jv;l47)ql#4*vO%x>hWt2OHZ%4ZLWo*#)u}dI)OdQ!G)NyjqRl5)5 z+W>CL0~6D?qyc#J(POz>U~j!G^lb{Y)~H=EFm3_GMpz4i#+`ERe}F4*F;pnB>xEKl z<<7uj%M|3Wb_qcj#o+y>d}noKgX8a$!6w<>p-yo>mRrd}u??;y@@UQFS_^#mjErq= zC%Zdy{(6QKGEMN>6$Em);!L`s>`}&S=A=5KYF_!kBDF&3EqCWvSR8(95|)I_Y?D;u$9tp@KBjZF=Zts}Z+pz~K+I#CA9kJAleNbJytAu+x>Z6-0M%pD~0w zl*oQ6T!zug(;VMSFBI_A)H&BMW*4$aq`%|HxtmiQ&yW_IE7nc~Rwso|-c6T4?A9~g z;F^IC^?<^naKG)iv9a%f|CYa=CR@Og|9zt>CPjjtCgg*?4L{NXE8_2NZ67j{SgGf? zORtNqU#G+AoQ@elD`_@ll$nE5J(vsN?`D53|7;l8D(tl?Mh0Xh>KBoftJE!;>30&_&@--)#`7l_RB z80bN+&6GGc^6~_^{X&zQZCUZml6aZh9mLzx@4m|gEHBtnHm(qPb&{cmm^Ynbl~S*(V+`W*gs2~qUj2A zIA~k&IQzk!z}U4`vlJh(S;4|U4Wa-j;+o1D%bq@rvs!Y4tm^3-+PAMTqLus`=QS zc3qg86UuqDI+A@H9W1FHd%N$3GFF!P-w6&PAz zKzm&7#)AS|6tTL$Vn!v3vBFO>{3PUg9Ox=7q zLSsAiFhY~-clGz`zWY`J^M0O%z;B#H%!%0DnP6XF$ab#_D|dOMR7u%@jkHsV7e4@F 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͠T5|hqW7mcyu0Mnv=#)S6 zI_PR~X7?XQlP>a#C@l78O*=1_*>zRi8==c|pa z4qBE)|0vp&?3B7x%4(60%MW?=$2B*JCC0ApNbzDOUOaE@pzLK-Fj7$R?tMW)MMS7` z`u=<8U5DY>2S08RZK==rFwj#cVW;$df@}Ywgpo=TN-B>`7Xsi>tI4<*#*dvGJl?ut?6yXxBFiV(wmchu)nttkH99@Y<0~ zS2QhpC6S+MF-mTGkW=;I~&@u$zhq&fNvLibt4?+*Cg z+SG;Kp+0qoC;Y4Tz7)PUDoo!8&>QWsHJrNRuzna2;K&~;HFmy!;d;` zN)i6Ec>rAwur$djJ_dug*Mz+sfLap*YM>~xSdb|T&tN|?W=oCjA&&9y617bR;95iE z3IKFb%kW|wPmp2zbjm~1LOJ97Xq>b3z-@gQ_*y4GwLV{V9suhX%(PyuEXX?ahb2M_ z^yGXy$Zb98=V4Oix}=byB>?P70ss!5b+O030-hd^#>3oWht@eK#&a89U_~cU9h$av zhyySz2f#XvVG0a2zJ@K40GMKe{g8m~!pW3C2K<4wmC21*2od+yw}^Q|#0ltS?AViS zaUtMGm0X5-PZF)Eu>)4*+H4YFn9LeGG>nbGGtkw8eSd#@^)mo8Q~|KWcqE>HRdcUk z2Hlg)FsIW!_p&{OmBEh7`^kMI`LE_Z6orvvxex#|3^2nDzYGgMA1eykkLF3`PZQD3 z2Vy*FqTYmP8v+;<9}0bL8tTkqk)gCUNdT6?BxHfn=0hbwLl7#AVjR9~DY#MY4%JbV z0QeTe%L*mT<1cNGSV4^*lxFY+0Hzp}`#}Pzy$lKtT~Feqt0p7>cn7nK5eC+Om>7(| zC^b!R(Ey4vhoY=79MhBdIhMXKm62h*<4~3_SK@}oqZW*QtQ(&te*$rCc?*xeCCMn% zX$3)8)FPOuG4hQ5AONF!1_#d#LgW6WVfe&q=tmdmN7gGF!r1v*^b&rM6%yh_#ScT#+ z@N$AQ{<6d$rkbvTvdo|?Y@Vukgda4O5^+R*>F#S|@1U^Hp)hQo+TKW*$6uPHa+ZTG zlr}q0<-fp>azFxnaOiT`*z7!I+)E5Lw_E>S#!qnaMd)|}y|X82n0KI?d>}}h+i_^I z(b_pFjTReU&I-H};zIoEJu;_eatfkac`_*cQTnZKmC?*T8#O3H2<7ZY6Mz~M?;nzY zs0~mRcKU8wL>Lv!@T3Lum*zgIy88~~9fR)?YS zvtZNv6D^{+xrOb~xI^mxCAfVB6qW-!K|@S>SJ4$fnlcO(P4Clw{J4>OZsocTlbU~f zXAAhAHzTEbXTIe)fQW*@46G^dAMA)gjGn z&0(K7b)mied2a!>sR-GVI=x!JZdU9V8anH1jjz0dY4M`=%uwvcX%Y6)6bF`ZUZKeD z?q-f1ep1Udb}ap-YCmw8HAcbs2xV>@dV;fc3+K$d+J%3iW2m274+~13|BdYIG0uaQ$|fTMxN#S&wzGUjU9xpUPzw zj(Fg=D#Dj4!Z%$mT!zMGi8GzV;jAhW5B5RZS#f7r*zNpfW^pG!fDg;2pmiPZ0t}7c zYrX@ze~1I%Cp(jJQ%IP9p+sfZ9C)3)IJXAf}K zJAa1g>nNTgZ`uf(quX%RRRWTmW-~Nx+SHB$F qB{y-}=G{;6+6U(t7pZ{8xp&1k+l#?Og}(6YK&T1;)s@2VxBmmB?zjB_ literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/lib/commons-collections.jar.src.zip b/hrmsWeb/WEB-INF/lib/commons-collections.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..b5b75a55cc0902b7d3f5bb776d9d09507cf0b309 GIT binary patch literal 246235 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%0DNHK5$o@j~!O*uMHFbdG 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

    Y3N{Zn1Gkm99-bf$rNseYmmgOEW5q$>U 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 z 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Þ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 Y7i(uN0xpYT_V6!S2^JO8gyFaU10s7oxBvhE literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/lib/commons-digester.jar.src.zip b/hrmsWeb/WEB-INF/lib/commons-digester.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..462d5c2bc0eba600c9924dd4a23f9f478a78fc69 GIT binary patch literal 144320 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 aiJ7uI2Jn>uQG}BR1P0Cv9$Y{L{`x<4p3y7- literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/lib/commons-fileupload.jar.src.zip b/hrmsWeb/WEB-INF/lib/commons-fileupload.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..6d2fcdd5fcc0864fe0643b50231f6ed3d9688611 GIT binary patch literal 13342 zcmbt*1yo$w(lzex65KVoyEpC@AhW1~uVH`)fB6^~ z2nz^EPpB;RX&(5clz&!*1_T5J^^2;ra-RU%=kK^aU#P!V1&|dHRi~E*C@KFPrDu|~ zr{AOiB_r@sbksxNhN~1ACYV^CuU z_b4z($xU*It1dD%&yh7-$7Uvu?SX;*2r;aL=Lj4e2#6CF2ng->5TyaaqOwY&^o}l$ ze+T0iRc(h<4m6J=>8B1nIg>fZpy2U?{fRq9DS?PD!mXi%vyJiIuZqAsq00BXTGZOH zC;vjUU*hK5l6Zwk`F>%+J1n#|iyrj^oQz0^c& zEP_qms*%%1VPLXq`7(uJJTCRM@$0qjTdlb&Y^{5qmTQhD4nLF*(Rkn+)s9p?sm|Ig z5xOUVeoFb+j|_Fz&IM~LpO6<^yNnkvZ4uOf|{yx$uC^ z;)SPekCB}Z#`K4|up z^xBPBk6}EmLMfx!QxuB#8pgxoO`MJUklAdDyH$N>4utQ$5TJ|Yq(4f**fUqkDXtiY zteaGVY=eX0i?>wJg-r~CfB~D}FmO`ZQZi3srBPI{XDxhp!;2^Vo_JUQ(qf1^=h_cT zZwgrKb)V5xe53hzn=tM{G)ML^T(wqkwW%0xm=^~pVcHaP!mXaU6K2_|!vfN-1_F<& zs549;>!&q!!YNQs&4Uu1MB$05%CUV5GG}nF4ID2%|5fJTFKkT-Jv$Hw{FWDKHm*b# zIVa`(B@+Bkp0q2Ac~*OMR!2?^X66Ypxo*|Nd9lE)RPtY7a%nCh{XWKsXk0~2vC4fx z&-+M1HOkhg{suHo9hbt{6rxgP#4#B|`tyBb_hYqJ;KE9?ypbjv=;KbWToZ|kW)=i0 z?|s!#RJr0Q?C@MLIBKm;0>^{~#jrA#M7X}Rn~5!RJLt4H0ekvHsZ@X!P%U!d+x`SZ zdKSuhlo=t2&#XgND0t``ED&(W^)i%;5QWV|EaBg!LQfvNnPuO|WAa#?N4FgWc3v9KhB4sBgBMm=S5ueYs^p*5F2p z_nHb6gMN*hg4laq1#L+&(&hN3s^hq8zIFu+|8WuY<~=%cw=I2`_foODBoC->MKo$> z90RQB%5AW?p9O4b43;kg#HXbZtn9Usc6UQ4UT9{@RS;{54f>OK2T>24<ZgUx|B{>rMf3Kt{)=A`9wjToGDvaAtQ83I;T5iuZ`r zV&$q7^|jT8K?A*Sq3JsT$7#6RDGV-GP5KZU%B(D1GQ{@TMS{ud_Feio6pTK54ChG@ zCZzRUuaPfduZarL>ER^Wg94KEdyoXMlu;8`uBr7Vb|n3hL=-B=sMFe*8ihxriegQ( zN4=L)TjL^d0!N$jGFTb$HEe51uldGea5rDkK?{Q~UK?s4qUv!fxGOS)ZOr9QliCJ< zgl8SYGunW&%9Vbd;jzmNc}9Lxu2h}cTTbxNQg6To!4WvZS!z({0CQbc@4UPOVXeGV z8{abNF$l3}Tq*J)yN$cgoypQ@RFA#QLen|^!@lHty0Mm3kynQvi@3Ze+*UK(F3$ZJjubRe7=I<+3+TwPCCFqqg z(*{-GJ<}1^IqOzgN?TVpoWNoNIYN?Fj!Be`MjJQQb|;_#KedXc4dfsgzK~qehp&9q zyvy3s>%`uk3e49C?)#2PVA0g`4mup72O*rT-a%sba=r?PV7;5RM zyC|3%XFUQEqHsi$n+|ETOo7XJb1U&;(@tgLLT9sWn9`2Sg{v6-dO zJ6lT|J;T4P|7YnD-Cxoy^qkjO(Sd-N{!+h)k+I%8OGmM1ivUL>D|&N1C%xahrmem3 zFXhfl`9)pEW}OYG39{EK>AE}$X}TAK7tPke^b8oxG!+COD=JTkVpT;GOAR2igMGR} zAoC2)+PCz9fVCusCs_X0hz&oBwwb6e;~jdDWg22Hj6t?+%^4etUILh(X#AXzPmxdI zIB%P|GQ9RhUB3CcK)WP}a1zf#^CAO`s%8L?eW!|7IY)Jxjns8WI7K%G;ODL1KfZLn zVm~4?L))Z1IYqkETc9AH7vm?Igr{*8o#k5CInObBYpyAzfvMQes)24*!sUfF3*tLz zD3uhm^6|mJ4P*rBR+AD$5gkTNDKBG#PD!MdOpEplz%+2*)<9iBQLP2z4U>_)y}$0R z-E^3Y4o4ZF&Aa~%eN8Qnx!b1{(%MlTvWHY2Yp`hCj{+mszJ&0J%61jFRRYQPk8rsd zX747)@v!xpF+8 zGK2#`Fh$w!!vaqmp_GlAFQk|~K-=hR#4i_1wW|-ybOtZU3Ompib9)B~4rY<%%U|_s z6wE6YNjU=^UR%&<$|?`_!{K7Z+g=RzzSG89paqRDzQ80lNMC%um38u7NNLr8Aud9) zDWhoVfLQF!W#&ukdcW8HOzcn&oT@A=WtmI?Y77=|t;RQ*JRUYnuG)=EnZC=?Eda&n zt=5R>1!EYOO{zKgo(b_YO(b)4L=`0-Xp8WGsLYI}mDntAVJdC(Hy$Be&hHzBa1>gs zO)w>>5fRB6v528(dz-F=zIoMG-D9@X?ITD~MXZawgXMLb^nSy}ddlu!6@`YU+2AeF zhJ?>9vqf=fJDQc0lQ-kJ=ZrG@;SKdLiCn*CI(ItEtvjerTv%hhAEZyv+3+?}n$n8- z#>^wo73jnt7jNX0<8rsWFCLPl(f)2&*g;IWm}?iJBz9{d+apX^>w!@hXDfajW(iD% zbdN7!&PJSn_Lid1;9TYHi7NaVmt+Dfqc3ctvnCAcXDdwJ(bjb6I;=L+>k56igh?ou zS4CioQcUM?EVV$S?$MQlH+#}HBMJabIG-BV|p_i1g=N+e98{`2|bMD z5f-ML5<L}Z>! z;Pb{Qyl!bd1dY5D#D?2M^kBDDxt&Po#_h(Bng;gMUj6+P2G|<*lrGg zXH|)(l0#07B^;e0zuYI^3)oZH+?Y0Hl*X!s1i)=G)$-hW`-CaxNAehj zC?W}WnA;srBR6x${3w>T>m(+?Xq&pJ$94EMyqrL~Ad2HiJwuQmgx$Wxniv{;G@jXN zq~ZK|cGwf2YnbejlK7ORJ7p^5wdW%svJkM%t#7a@J9KW16gmQ?mec8zEvGP@3nBc# zfuWT2WKhQuGiC893|KB8vaFz-G#j)8(D)@-F4(%nN_)0Lc1`JE%f^>orxc2+Z&du-s$R3$szl+#I-T@xi0K4X*k9 zqDv8(cJ`2%(#?xt%9engfqaavJp^R?9?4?DK=aRpp@$k6iz;gJOvYBuC8OGU>7T?4 z*&39z$DK_p$n`V7Vsj3j%1dCJKwi7+d1{q%MOhku+5;M=e%pH~dg)SapI?8iE~ovW z-RlYDkGru{61rTA=W+oB?0HA_PouV&o`Iu{z3aaPZ|~$^gZE1rAG>VP&Vbaj4F2@t zeX)E9?)z9?xN6E?h?@7ap@!dQjiq8^au6u)mJ=rks?6BQ(TeLDhCNymEkt*?`;c?` zNfePabw!LcBr~(&*VWauVl0_n!9f-m=P(_M)sX5lg;-T{mhGwyQOe6!2U1x}42Hwf z!zD0giWTC`Xhx91WVaz6d;s+(5ysWu9}a|W_kji-*SJ4!l%DQeGpdo@F4AD~(v)4r zx9+ZWUJs_R>PMeP@q@=jQ&nW{Iqbw!tdf(44XBUe*^5CCy0ro$nelpfT{TX1-W858 z1T5X=xKU*O@JWmG5y&#ZWO91S@!M$ekXc(@k&qJ2D)W2BH+@Vabl*Pdlt%At8KRRX zI^BsnQJkg@u@yU@P9rqi6do4(P*+QB>iBh1lG`_Y?X415)Q9Rpr4FdD_;g79{*szZ zoY?!jdLffj-?qqAMV;hwLo1?Jk8da&ooDEKkU(BO;ioJyiu}tPh(E4!MEmVR{_`s5 zJm+Wbzq86l_Vz}GKa#WDJ4f4hj!KU9Mtc9Aq@!AYUFVlFAa>Zig8{DlD4^NTO-gqI zydME~G2?^6j1w;R*NQPW8CnCHhmM(sVY8GPyBG`*;Ja~(?-a8^jwGs3hHAkK#M%Zi ziV9IqfINFz8CfCOp6n9|^g!B<$e9okg;RH3_e#}Q7-Xq2{4-gUd3du$?BDsD@Yvrr z?klkrOE|yw8#(EX8_>#)+G^)a(hHo*f{O(@#Qx%VTvxL*6(^OeM%Q-a0;XF$2P3v) zg#<&}8^{Z)1?hAuxyi;(qPbgr-eu983bON=1DJ1d`c)v5h$OS^_=B)1>NF6Lmf47y zi5^c$q-%+meRPL`dOKjuXd@TL`9T8m^j!Ct9`v!NwFQ<;UmDv8cOND-%nsbg38A#6 z`1>MpqAKDPL!6nEq|QjQ!9~o*pokRW`W|kMF5`lFyJH{*t2-BLLNqt>p)^mDhQTUH zOu9;#LVOE2--7DV{^XT7YS3+B#%XejT&)~xWvG1DP3%!yFDiUYfAj^gLOk9<{?SL8BGe8d zpMAvh*+&@v+DFVBEPnWh$}i>OzeRwI?O#3Pr3{Z-wDx0w3pk3tMQF}ZjK>scNUk@J zWivCch3svm(*Omajyt7Z9+Hd@fP@hfk-nN==8P!cI!UlWikoF9bxk7N!3?6c$X59lX z@zNaXB0E0Hv?*R-O7sh$l%_+%o(}#DTg@+zc!&J58+7O%ALmxs^!>EEOu_`IrI)1k z4w}@6f#ch(6+&hQGngN-B~+;2RbYCirGLn$X^O*nXG$Ob!5}QfzkgV@dtsQY2+W^Cem#e^ zKIE0_)dnYxl~$lUpVuEf;1%L18ppE-ya5FQqWMb?_|ww896{ul(*30jP?V8-jtWg` zyI#i?4d;ma5OXTMUF-OQ}Zn zn=&hnOJ=J#HK})t_0h(82AB)zxDjo>b}8C(9*uric~_BkU{R@43GnWAYCesSf9p3e z^yH(uK}zk~sUmqXTb&M%j>4=|6_pn}-OD^*5?3sUBWE4XDmdf03IILe#U2%+1tM^T zK(c~`zoDcfUty1MrqlWei=?wWz6aUQd*#;6k4K9h3-%bq1)=&aWW?JNbIXUNK^Tl0 zpEI6E#}?tEjt*#)^7BDTgYIZ1{`xrhle)9PiiX92V(SnbB5|oYR}{ zku0USmdFX3A70U^08O*Kf8Gih^3enMkBjuFLWsiq zd5_=xeEsz{>$gSvvrPSRjeeV3MO46mFd~WE2|Vga1(0MUIAK6edA2RpWBLKu_BUaW zpBC3a*i5dr2GNwFKJH+PGx#$3Z1jZ_ooZ#RJXnUa8sX~`Le*79NWeXey`{;= zF9>N~v4X!RjbfTYcdjiYdQbT|35S4drr!Y4Pr~rqppND>JMTfF6oEzaAMY6ydBe5j z`F@w4os;fwIp&{)rQdGvr3{Z0MDS%m61^f_&`T&^1?dcjML}Ev?soF-7D{y@#9CVv zl|ai8i?ud>Jn}lD3!za3>sGHP2vr5~7dy&Ksy-_Q zhL@T=B!vWWw0L0p);ts25$ZF&*5tI8j&G9ZC~$_f5X*!~%^ zh4dVZ{w-`H-TeB~eJM9JtmGCrkREk{pLDNnQ_<&NDd$T%zlyIB=#r!*oLRak740R} znX+PA>PC1yeY$KzZl}*}mk_X5E3Be-kZiKlV{qgv_I8Jrgt!6WyRR5ChL}DdW&vD2 zkKPS2GRu<2`-)57VN7DB4d$jyBFxpDjTL%**e=of@g-@@IxaQr?6b=)Kxw^`LszVA zlF|8NkksZpPmVoX9_+Fzrc~%XeH?8AAPHu8U^#skr$1RS^cd-JoYrLDVhG07;x)#N zN;`>ASx&!cjzpY1RUfzQ@?E=!O@ZOY{2Z(hORlnVTN#y{nUDazTv^{z-^s>`i#_Mf z-nsXFOgL{ebwXj{u4fyYQlQ7#dy|90SRwv zNanFbTYhkH6)GoEI+ZIm_Q9+5L=`b|4PRYZ8xuZA3R{-%k|1s+?0eEPaD(h_T;Q8C zi!m)S3Gjh5Bh|m2Ik(kLQ%@l2+B#bC>pg`2npc5#&Yf%n78z{mz#`b@$Yn!YBM&<+ zaPMlSE&rjyej;o@K6S}f7Fym+33#Ttu+0+9c7=)OpqER7`t2?2*>!_d8$?<{$GM4` z3MK}N@c^mru(*v>-d<*v$OJ8Ft&>`5WSJxnIg2r`F@L49>l@pcxWyQQ8D4bxsSMpN zJWC)eY+Hyuc}1?;J%cb?2@vQ6LXjpM6h%?jo+2!=X-7wRCvH5{+Wbt11(q{FRR zbde}>>m0KvA9e~Cj!5q?IJ!HRqPAAb`Oa{jAbEYq9EwKi)kU1rp)sT)hY{~jy-gMf z%>(0HcsNKu%SFupu%Uk3T_7E4E%B~%TPxF;*7)R%#Spxflm*a9CvV8oWGtouzPS5_ z>{XLH*(poj>;q*uHX9swEJta&v|o6LX{~Jcm}TOPbEV3>(VMM;Hgsvp06?DRfUjc+ zK^VYaYmw&iq#dbFwfEILCmXTaqRgoUfzmFW?LaHm6h2C@7xDl%_1=gnv|2zo3;7usBc zc#wx48ORqgG{@?u@l&uzj)O0Fa4Z)kK}T1s)o}jjL_Be|zB!=cy$q86mOYspR%PfN z5)$hitu1p}i2h`g?FN^+yPGzUplT#4+^$2Y+$V>}+UFvdCcdmr#RZK|;yRwcrAOJ5@~ zhxIkfr`LHYfpJ}PU&*^7(^fCJ6VDovxqGTyp?B8<3Mwp`G-kKihI+uU69g=WbSF5# z!=3r9W-Ic z03%&qyk^iVw2C*Io5BNEya53Tlt=1(>UvrDGcfQ$N2Z6)vtgH{QRek~rhgARjbQpPxHf_;|6=5aB-L@1wP_ zRvE;p74udPlv?Gsw@>PH7X-EFifWIQt>!{(uF5`Q0xdNald$ueOk^OC`ns{sY%x6e zPNy*4w)Ax;_=L9rDiw>FPQBzuBm`(%$@02$7N^!MMV$A4J7_OwsR!quk5(|}mAcJA1f zGg~8>!`^5gNDu=ftB2q(k^PT<|+QX-aJagwg%MGBlsW7 zB~?opW3T6O>D%+g_7BP>Q5ORvTSqe+>%UzW1cXWbQYK#cEMz7!r)ud=xdER5S;^u0 z-9*dk>K-4GQ-4MF*KBfA!TuhRK!k3=K(aU^4?`r%sJ2~a^vPDcdW^a@)ER6;0W6}4 zyQRKEEUici*`?@}n$PRmFCf?Zp0s(`mp$^2rumv$)kvK~M^Zp$$pb9COafltU0)n! z6{@}Qrg^S}EQtP2Wi0dDeK51tv;VWR4f%M{Uv@Ds<$;EW+`Jgp6G8BiZAO8Nf3Wu$ zKq*DiF^5`_3LSckC2(X_D+V{>V9rEG?B?+O;lmIgg>r6eo(u@t39rr7`=vw9ZI0${ zX5UKvsSeJF?Ho*#P|<{hCMp?;cna)~=hM?u(>uh&FoBPq>|e#JmKxrRA%uV|e^RC` zn+ZY(dwmOEnH{^TEp0DW#ZsO`zp6!lMN3zd#!nQhhhu`8GNdKCXW{xTegvxvnqJCL zi!5yGtNhwX$1RRfNS0wzTTfgbhaij5PRH?zt&7{u&5ENtC)cfqi>v!FE>6Z`decKX zp9$JG(QXO2xzzg)9aoSh1U-pILrV@$x{J#(e| z8H;Mj>L>+r=hq??N0EU9h-v_j%IeW;M;BXnPW+Gf1RgMb^ImvuEfkSUx?)l5cC9eY z?35h7Y8vsfwsud^Im~Q`FB zA`b_jp%%&0B@RGPmLel5$4F17cXQDa9BXAPwBfeDnvF+}L`og6q`+!5ngTW#ROpBa zjnoE{){>*if{m0cxZ0Vh(jmSNt{L%+60c9SuwnXoK6NEHr$#ip&5gq`sz@wta3q?Qb zal}&=QdUUduN$VI!!kuH%y_E=tb<@qduq&%cL@&2_2J#U)5)C{VC@0`aFQ!op;S<0 zASQdS0fn)Xt!^!E-z-^aZ0R7~$TTbKN{GjZ4+dgoHkG2{eSU|y01D<=6H@x_FxOW@ zfpvq=KPzXDow$>@+7&|4VfJaAlb*qyMv`SP1`JGB35Bg8f(=iO(fH)my9E(qoh+V7 zD3vA&E?{PA0|oubDc@;T&Oz1(WS!Ck&$hfl4g`vg!F zk$#`of?+*^2TUGf(a3x@NuEGK!8o3+{9duu$tIdPw!K~#Ql;92=E?x-df!jaUB~Zl zymW#>ipsB=XNdOPEyU;UQ&hB&(f{0sC7YsA)z*iXB$6Obi5U!&y=Ew~LK~u?I*~$= zKZEoE6Vsp$7+u(En|P?+ia@?{z+X0I^n!`k9 z?Zr*bo8i*A+Yl`{b7=K*())ID8xr$q7LJ-RoH4O%vqF`77NI4ab0RgP;{{qVwa>Mi z1zH+zPI-^Xv&%7*5n_tW=L@J@0jr}Ud~_Id(O0zvJ9z+=A#UK-0?^*GPm#WJ7r~!W zM>HMDtHbQ{_J&%%_TEp2c0Tnzl=M9y8g2KBOng_;8NX*vgh9O@!wtoFO7?rwF+lr_ z2yM;Q!YDN4RCn})k0wm zpq)2_FjW)uREcku`i~2GLh4JWiPo1WKaaxBrwX`=zw&c8CIk!8qh?aVT?38D*g0Em zqwBeE2ib!C=&a^GRL;4{nYoz-P*ZFGKI`|f*uKz~)>`{`2tk1!Jtd@#Fy9YbQ$A(r z(W`&u8yXS~=(Wa?djq$;q-|6)p0GgWLX+_gRo=>fEVp!`Jl85j^XhI z&LIWmVJ$%MRdeP}sy+o4@7HSb^$@pWv6#-Xo{-RK{qu_=lvCB@aewTUYVu<`)1;NU z`&)9$TJ`gND=u~F<(O(rc&MRGhaO6fLIJb78gkw#UvCR}42Tn!N=Fzd*qZ2Bqc>=- z>~v1bEa=+zo)mA};?xW(dneCw z9bd8ku_{?OoGG4qKEN@6_&YraWm9`22U8nMLo;iW|FZ|7+xTmqektSQxNYX2dri)u zj|kIbQL6$1#zc6Ujyq@>gQ|uZpJO`%$-z%INTE&_g?EiYViw&<4o|j^@C`eznTwFB z3lygqbPW10Rx{#dq=+i4a*Rc57A@J=Mofi|6Y(^t9dFN8duVzB{Z(h%Z$=cy$84B- z5wz{cw-jx4>&QAdfD^xIx)j6DX$}Z|rj`bFCsPgxNIvms05%QdU=l(K@$NqV_FkxL zqRYYt!@e>nJf2BsJvAmFQ4~A;y3!`3*8mk_Pki^Lz3o5iHFakqm26biAU~@ zo)t)rPH|2KtHY?W_O%0U?*mB2=nryFM<++&=w^x%Lw0F2biEJ_ zcApd%oz|y}W(l-T(bM>DdDg66=( z`B4dMC}=v$-z-aUF5~T3B-ya-B6XxqbtvzJ-JFBp1P*%1U7^?&TzW4%d(Tn5N;N$S z--NopdvQBo_wYNSgl}S3ti)jhEGbc_7{c4zQtL(AAFsz~MWFi#neEt2W&-iDdk;XEbZ=E*riO;eSN+e3wLkFx-pETb>`xl!~gvO1t0;)h$sutO2~@RLjwr@_%#p!6R_!G zUz6~@0`xn|e}qB>03ad%2sIVIdwdQG033ZpNB!@iq$PwzWR*ndoZX%Od(?}}KcoJR zO{y!lD;$X48#S1iV9TiCxFt&=?)2&+#YX7iyJ$tm*Qz4REoXj|mH<#oOkmq|$V?}Ab=0#GRBW$+^R!_97G9KB7^|LCxS8YSUeVK5P zA!_zt92_{?Td|^s7~WXgI@7ha1*@IGPR?078)D;DOR-AG=5sSLilZ_+Eu@bdf3@IW z+{#}{26V_WzaV)mSt}9usijp~9`<&z2*bBUJ)dUlo=1Ar}y9th%8&Q6=F_iTzupxi+J` zAt`ne`mKUb2AlQ?kZj+%(5d#BY*!q4@-+Djy2-U@oNIbk{qz#RcmUhn1{JFx}SG@WMC9hqZ6}){>a!SZxBMY4&~)**Vf*?2mh8kcAKjH?O(z z3KVd-4x&$KXPz&9_l^QKnzUn=(c-phgs;)5vpxqfGV~f?FZ}-!s5YPd?SeFP(&aG zVuu~>VCOqtEdW)*W27%;h#^M!B{<#9t7+KB6K#YVVUTHia}cWuNxhf@b=EJE+U|Bn zi*m8$*#xNNk8l&KS7DkO}<_ou++AE%*WK1u+TQEGTXh8{~DM z+9ig9g5<3CQiiBCDG`D(BHvg5IvLahS%&;q1<#D6-mg(t!BfOY1iaR+IPR&; znK9xv73orrkjfJga?KivkVawK3GRgYEqpyD{zK-hB)JfDi=XxqV3vEiClKh`WwyHo zDWb${u(MICjS}Fzz|U^7SD;VXjKUz-Q3f5e#*-4eS%GA(H9}2jyP4e%GokfUL{d_BYS~07`tb(?7vzC-! z@m|Y&)2ykvqqor==yQ%ec!2*`5e-8z>4^LgUMQg7L{vsVRzg%nNtsSY^gj{Ns2E20 zZw#;^_nAZ(;v%HQ)_$K2{fbIEk~k14>na8yTX|_=N_8-+-fuSUp(wyB4LxXBnKahe zsGEGDr=8Q8jT@I8#--;-ax0F&of(B8n1FcW_YH4N0d7KT4zUoZvk=`0?*x`=h@f3d z-J+4kER`9mxYw}^#KRlBPL~s#B1`OA<#Y=l}?l_#5nn>hZ* z|NDPgx!lfe`R5NSHy{B3SpS0~2-(@#8#tOM+X?=8NIFXcSA+jfQ~hd(KQf5l@l;dG z4x19yCnoXTemcZbR7UL5O2=(ZMvD?*MW^gkDG`Fl)Vdv06xJ5o=6VALN8fhfmTgLM zUKaIxum8FB1H66wY~f2rC8c;1ow&>h9Ia&An&cE}W~fWuDr0xPrH_ZB$G7GtWh}k~ zdeGo-)y(8}cb()$i^cdE{*;`tUayH&x5%rxZYbX$XcehShx@B$E6;1L5_9BZ?mH(H zZc^it6r2`Vt%)n?6i*6o(RjW5CFFo6L%q=A-k`73WBO63wSEz8XdRTH)8_eOAz25s zMvCr}uxp^*7UO*_bH&375UF4uCBlYTTDd1N;TK=`WDnQ+S#$aoC1t|^GT5&QNK*_{ z&Q?ejy;LFJzkLc1oSKZ_j4Ter-M@J4$ii!PNL#0PL<4<=J|DZ#n@*LSTd^apsw&gK z+oW5QO=L#V3)HMEb0z-t6m>K{qS2R5ZP1BMI#%fd#cR7pYT+yxVKjRSr+hbqX@#n( zVpmESkWWo+>jK}V$)en1q`{V`x3LT91+RH(?)Pb`0tcRE@}keau^=9rsbgrgZo;ec z1`jneylK66ri6Gh|EGrb-HFDkF+OxDERmp2L&lfbC4Dn*kHuGBm`77rLdp6OQ3i48 zi>uXil-%5wqre?2LkVu3ij{fsXI96^SynV^&^pvnnef(T;(<;bPYBYfU*PrB?? zt2N>bw_CmhVvSCZDCV;ywteN-ph3LY;=gj|QvRXiswMl&D zzVGW;z6dvqJ?|`GZz|3(YRXL>HyPI1W45iqzcP9?d+>Ga^I^$l z@lM~OR5zX}E!;%k)g4z8(kwGH2|?{Mt-4t&x(U;B<@1snXu(7`6DzzI>8=%nN5Ssa-QMT{&u($@~HCSx(n{iZeu z3Wbsc@QF%ufen|YYwgG1UH!uEdYJDP*If+10gFh=mzQ6jjCwI=hb$zxHn!)%h!$!l zHWsM#k4UbskEo^uG)Fi#?;4KJ-dt>6_-(ic!7PP^k0*!x}kSh#J`(WQ9sp zGEhpIq4|kCgkxDA1Yck|W4B(U3V4k?e~NsdMx}tHs3zu`)x3YHyb()ozYe%tCyu6 z=AeD2dcU#^=q0BE2O^^-OqNH4xMNKU-Lona@6!_E2<6TAHUx9-PO09(0QcpJB$!%= zGT>sSgi*(5qYxYiv~^c)rnkX?W?FcK1vfYwF!_Vh61%$BUtET4J`5m&ToqIOz(m#6 zs^Hd@a7Vrdf66sKj?|Yt1sc9qrITOMwGC2MT85>V3DbwJtZzErty0-AC%Z_(YJ^4F z(>|Hg^0h2EoVlowDw@CPL<^$K*eO1QOLpw3ia)kc<6469iZ?wuWaEk+9!%}Ic#A8b zhLw|}d9T7u*!v?4PzamP(h%^8@o2{c%)oV))%*De#`Pcb7-p%ftQBQF!he9{QT8dhj+ie=l^(9JRvNO@56O%7Y&y zUL#aPIfMayB+8^9GoHC*fyy|2V0>AC} ztlel6iPt`N$7wDH<~&)|JR!iNKPl4l=0yHVjPN?xmlWzjxFLYjy)F7IH9pb$+GLja zenug5@9?O;-qU1W)ZZCvABfeOZSq>YVeo|5uVDNVX-63 ztNQt&yn#Nm_%{#XpZ!9;asD~;+ zeu0yj)&vV!y&c&7N^dGRrlhxyhQ1$da=Wr*Og?I9qnpphww_FC@1#1FZ`hnoCxn~# z5Py}JYISlToR7>%8w&tn`41#U+`!3P$j;d0Ux~~GoYNm7^E>`h->_R@L-aw2ec!^; z4{pR1oZ&-FO@X&qHUw$E%Uk~$0GnIX@I9K0H(WBK>T$#Kg>YDLm!w<~G&K<5=sa}Z zO?2EL~vlHMJ%jcz}nBo%Uv?gPag5I}l7qENJ`Xd+vVofd67 z&ez)orrLF`_HOq;!rv z_5sQV1vo`I^T4D{&_dT&*1@JVeoDYikM&K-F$#S|=4yq+zQlfx zG3`FA>54!3e9t-j!BD^kjX-4es}nyjQw9d7S&+fVc4)2o|CqXlg7Q`baRGGuFF|g} z=^yaf!Z|C&PG$J|Qm%VAs#>nkNlGRQ!Ya-9WBPO_Zmms;_2$9UtEd*~Q~8MO@L)LP}-JaAq}fQ}RmAI@zVcz^b1q4}}Wk#%`( zVbU;!(G-K;?d30~@+{}Bpp_piQ(Z5w>i`>rF9ZfwrGl^Re@A1n8r5wrzMM0DIYrVa zn)W49-q?Z1Mpav2L^@qac`jw8x4j*(!}caBAQ_lWmb9Qrjf?w2czK;Z$r$KU8tA$h zdyUq(yHRAPO#8zJ$?Yfm?uzfw4P@1@ZG+8=`|2V0OgQbd%eFn94!xFcrui7%VbGI8 z%nDc%@$NaCXl%X(*1fJdpQ`qh zYH3akIhdI*&hg^jkU1+w)rxo61#HqIfYR&sHk8;=2W*IsvIQe`u1-6^W(wk^2CB@1 zDAk60=|k%d;UWW3w{|+xh23YCwJ6Wiw^4eT3%q+H8Ql5oLUQ4)xyPY*RY+PUXDU9)()|>*g8l zuZk3`K)Egt3;<-n0{~qAfg&k68`v5fI2tS4DLFe@*qSLhf3Y_Chk^}J`%hi^9g~t} zY*!c%gYUt;An0bI=wem2Sj^dn1ugCy2Yy&mDiW0C+D>(-g_ET73&Dec0`a`8k9v~O zS{07bFEbLUs7=MOVW_e?Vir!KmE>29D@|w>pT&gi7-Wuj+KKm<%@?vMH!3&L*Rz#l z=-5|6 z=+!+O7~2_m1YvI6A4UbF$sk`p&$4NUp?u#~4vgT7jJLTQAm(U|0o8`fmo&DSw~{$n_Wg}FI3)SY#5!sU z<>l#W@}O#bHpX%vV$Yq%bKq4Nns#;}K?X_Da%AVXpALh{Im&_YH${2;iD=QGq%go} z`|jz!YPx$Vqs{@?aksX0RV|BrLq4$pFLO}Cv1`(BAZ>4GY|Fx z0gu$d&n<{YKIFLPT2QXt*L0z6*pSa51O=m2VB*$9rJ$0j-Sfq#jAttPVOvR64F>8!vmSGP z#=RaF3XSs~!3?Zzj6`SONv1H$j-8!?)c*y&ifROz$aLRq-^^Lbo^T7MyWdnHHZe|J zRLwzpB)%H+(eqY>H}y2mTMkO<4(jDQO1k24eW_~XAR@DNa_ue*rFnK2bLwW#HM5`K zBsUFIBC-_ep)vZEKa#k3I5pW=%FjDPXI@|5+r$2=Ys1HhkVom2tJ5NuA=u1*7L_;E z+adVj<{icNbwUeA(AA=mkyLSR#{6V^eL?V8D@~$nnxM!ZR`jx{L9uF)U`>ZZLMI{K z3OC$UDT6MkcP1T|vP!k%TUXN$tT0%qn|g%gdRuaX;$N4New4!v|9asg3ohgl!}!Ts z*Dc@}3O41Xf7@~iMTt>cCJDuvQcKhn7@-fYwO>S;A8q%1LkZPg4)rUn+EZKT-bk#c z=dp@0cLt9&Ul(qfG(=y^(Y4RyXAKLCy3K9C?y#UCA#MBQoH~6*SI4o$Xf(BeG3nL( z*^1e1^bF`obe(rnYew{ba=_HOjC+Yg;s#8gYTT*8NK{~t5y%Sc?T-$){L7$NL)G}M zM4p-Jx2jif4%d)wnruYXOy&Tm%_JJCHdGG!GQ%1#f3^#vj;?H5_LlOQii!Fq&p5>g zp$P_5;ihUV^8k{jMi0{#Q@2P_OF8Qt!dac3Hn_+f#KO{0<{8`s*Ps=?nbV)N0a;LM za7bgM@-tz)1oI|*T+}WWyz0_p*Onw=xt}k8m(33 z%b9mol^p{Bx?R9#u$r0??Ry@|&D)AR)&}X-S`fBcxl^y9?6<3xJ&TE;ebyCskc`Qf zSh3Vq>EXq-eyb2R^tz0D@sOv|J`{*^&Y596W?e?1gul}onhuGQ%1pt)l{AW#v zziZY%_uUI0mp|))-|$ph%Wh>5`ET_=?GQp#P^<9sNjXO~Z2`D-NoXdp2qLJ}N2*sO zo>b_y4gPp;R&m(9>{Qr1U~9yk8T zo096B_l2+G^DMQjfBO83+P2TbDWS+I$gaG7;2LX;SzG0xJ$23`ePjG6B$A+&w>m)Ah+yOax_mZsrR_Ry^staT6&A7CvLJ zgCu>~;PnK?zM7KMIjKszZXxHF&b|3@l1MVGZRjgO35W zk&QkNXlicc--%j7d%y09=*~bjV9m&I2|(Z@aFLWe1`K;ckI+Qa2v0+az2H|UvtqWC2J0#Feg&qqfKy9Q&!596K zv|Xr;whNs^`I+S=t3h$7aWcWJ3^^?cG4{hR56#n_r6QX!eY3ulQtl&pTur^EsCKE; z;<37$&eZk2;-pL#FM$P5k)BSgjFSKdWRRLP9HV0ozKKY~myv!Ym{VVws^)QuNEpRlcGyLL%VwIXWoC4GB z3Ll_3H1-Qi5=)*}ne@}7s|3k}i5^uFVyjO4u;O9L2&tb#9%YgTsZ)%X!i5z5yVDM6JvGCV!Fhg84gl{ZEpCA7{VSfxQ>>-9?lC`O}$cHzS~QtW-p(9syih_`~~lE)SCHbCxou=p)=$d`}k4G z6?c8D-VEP@_zdbwb-UKYcCKSYhcuquadM4e<=b6^1)C4uEIqx@hhKU%7J{?Elc~iB1lv4i`1VYZEeoB* zJ<`55(fN?-1>q7;MG#2nFc(pdr=;L|_Pyky_b#EY?y(;#Jj?njtu!NZ;~bb44+Ux~ zot!8*mCsy;SJJmavIh+bqP%4DxIoQ_O(5Q^xmlLKL?KAe;veGgrdK-iR6ll}PsJFy z0{JJ$8#;0&;Bfm?ihC2DAhidXJADqeh~hC%r&gbpnAwxPmGB%bH$#W>W{;LJeDTqx(JiJr9BH|l1n?a<2{u2h%UOo zk*ETSVoPY_iZ4$Ypn+p|pB4n)_*o{(2hHa^fUn_+orU$bA`2XJYWK*bDe|z6uDt}h zJGG+MN$f^J;-q9I@A=#HmxLj(7F2B1E3jQ34U{&f6RKB8@gtQDW_uYlSQEnLt0ZF- zq_Ag8iZuF^WT3({B(%;RJ{qUA^I*LS<*F5%UQoJ$L}mHtO`V%2EQFt{^@HSI-f*|b z*zq`WVPp}gX(FGT5%OnCr+Hh7TVS)Nw?M*X7gRQ>{dX=1ZyZ zw%6hAplk|tZ%I24`hi*lKl-kg5zn}`jK2y<0BCBGE{0cbeq(!z#^hVACTOuS11rPEsU>}gY9F}h!dM0po7>Hy6wFo^Y+x>B_#Fr z_UeN>6cqc&=;$X<(|Jr^`+NrayqYFw`(!aF@i2HP%x#(dHs`7W=@!Sw!iyua!Bkr2 zoj#}Y-dnp5il)PVfMzq`vH`-a)SdZ^UCWJQQVOS|I&ZM4 zNC4hEZQ`dI+yV2Y+yfriucRG64?zt<6w~Z8ScWX9d|-VRXfHJd-DWWcI;}rnG@VeN zYYe;wVVlndFlw_M_UC#G?=#VWCwI^?7~87P6Fr`BE0dM6d7ExMk6MMo z4|j&v!r!{{>FK=ZugRiEiF1j~$9PBJ$2ZM?(5(5GXs|LcGodqgwz2;2&(i_Lf2N7Q zBk7m`bPxmV=P7TwxT1ha3<_JG09}G~edwwwGN#c}F^Bty4E*m>c!JuAK0>L%Q3h>_ zWYys2$)j5t+WJ+I*>`YkD!_d7qw|fpt+Kl3Z|alA%G*OgZUHJk{gcdWG$~HY0sv(Hzwja-$M}bq zmVJxsAF1{4c&hf1TC<`4Ew#2kN)ZngYXl4D#ry&p3Cld+_NI_euD)VIGVPOsEYH@+bWP+NXOOH#B zpQxz`S-lGH6Bz`~WE$TP#i3-x8x(gj6p7sd)M|`ps+eNY> zZa?SGR}w5JPOoVd-z@HGqpGf9su|7jD4#}kr$*H0Pv^4+)45*UzQE?jpJZEt7Qrchvc@a{!-TMRdNz1m z$!S@@--PBmj7v{39Ag_zXK;iXqDQ=vnszp|$!^S8de~!AR33Ded;Pppv1T#+fWFAB zxy=Y6bEbLbWvK8Cj*QZ4?b+cy5-DkK17UYe3SUxhei|s)+x@VaD1O1N^Mwzbyb%a? zAv%hLq*vy}0tI*FvmwOhh0jd_Co{xlsqRpq}eTSDh>^tDW1-S2I6y`pcY>>TPBT6bxBO^ zd6rguwy0tmc&-fSma7=U(ClCf>m9C4JLW7qav)c-%b!~A?xKuZ&g(+G2%Hn9Q!vVk(m~Ku46rPfT(7eMu zR90Z9#<$W*q_(Su+qBti@k=NSa%A_Yb9G1QL6_@3s?xC0wVq2Dc9_7W@-%rjz3_=v z9KZRiE!@15-*q6ZkWMDNxH`0W5&ev=T(rdBY2%Cqf}s}+J8N0nEJh-#dYa7RZ@iUd zqa^~Fame8_Fd`N9PXzI)w#bXGRe;PYIGHQNu7m9GHubAbW_7J7N5d;HGJ3(0OlUn< z|Nh{zSuqwKl!~%p{#cRT!EN^6RBaLjuhXi@#2=DgsK{|H>B}c ze-oisk2-g@O@q*A$=%-=IUq-x_oAUXZk)_|A?;l{O6J?B%07xm>L5!D*{J6yS4S`M zvm=^&1(zAGwVzJHbrw__UnP0vt{1&&Db5ifZ(J}R5AOpxxVvpJ7w$k)CcZz}|9Ul- zb;oVZUo91|qH#s%Ol7o)`!T*J^D&7){huh6inE2a(?7_S-};|&^*a_R{*>)!K*76PKY<=2^Q!+cA1At3x(B!%Q(12q7BJ%-b$s~anhN`K2-Lc!mxj1oR(nCkH;~v zjV|~^_19YFcJL;cT@@L5Y&75(Rny*AokVaRq-Afvo9lL6pc`F$G(wz474SyVNvIwJ zGjNV?>Gr7y>-IN5C}{G%4myysZ7rt-EQ>ymtf6<`URs18?d;V?c8&V39hQBa0(wZV|{xn0c;QeArkdD#`r&91rhYB6&fBwA>A+wKo` z)llnW(J|q9Y&&G5%A6%}7x}wSPM&0leqvaiGE7Q@b~~QV4oUdM@femG(G7?-=dETS z-4uPhtw&u~54!_9XPofZI86sV@&VY0h86;8mwLgUFcP%i)TeQ9^P<%D3F%Bvj4Mgu zBokLT*~VplS$kqEm=g}bV3}LpyL<42Qh#9;GP?itR27i1(zdqmfF8zhF}B;8>Hybr zEg98B-)KeghI*OFY$V01S&Sq+vtf87eusURPuGmVIl+uQ6?NhtyQ|kI{;erav|z8dX|RQeUr$fv~jgs$b05H zw+$y8d;2aDREkPn%#Q+q>O77VYPzK=RHj*-ehHl4 z047;cj52$4qdk>rqrQq6YLsGSm8?lx*@IxJ4NJ-_gjq90r3Zw=&M z>7H(P%9zAHa7um+#^0e!oz9vYBsNZYgLu+d*_Rbb|wtq=W|GpQ$<6kAFM+%bU=tEu>kpKOptjYg7hREMP z{d3tTFmeAwYktQrbv?Nq4n$wEZSK)KgQRfXfiB&YBxp6~1M?2Ch%(V17*TT`Eli}PFN)@@mnT>GmnH{D^B7> zgdZ7*y##(uI+dxI3;&9rn+rd;;CMZ5ml2>#V8OAMbzKOHl^HlD(VF_g-SoI>Y&fXO zBK3BeFqM3BC@bFHEuxV((>;toO%gysD(H8sJF_)(iPZa*IZR=O6EZ92gWoGNuoa5Q(>iN~30ZVoZmZ{wZhd(#4tc##6H!Ir*Z-zYOXuDF?Z@cmBKJgb% z{_PC*Al1|D^^4d3!)9Ae04L()?iP0TJjfGM>!-+(Q0U|t?vkIzHS#Q4j?JV9l)=*> zy|}~G!{mSxrv0>?xUR1xu1!(~Si zD>kK&g$|$uVT2T*4A@`NHG=_+JBXX!!Jti9cb5y~8_ucI)`ThUK91WG0u3O<)TK;2 zWsm8rN#n}6Px2hQ<^Y7ucoqDS0<-5v{2`dP12V<-nKUJd_{JGpm6Y&^d`q|*x~%Uu z#InmUbIM5wo+@z^TQ3Ul%|Ah#!2BzZj@XQAStvIUDdh0N3Qq}azNsl~Qc(;jehse= zt;ZZh#g7|$QsY1ZO(yEdi~50XCKtDncb}wEDr!)qge$+wC4N`c*npMLq-54OnG1c( z9Cm-EBGhm}mtGYZM?qn~M?>8FFb*`vB(4L(DhZ4mu7Jof#|zTn14TJ1)EJ~cTKuJv zWtGid9R1Udv+Y_Ll#E5<4tT8OOVG=a2O_}fBn%xe1i*NK5*+4 zSj|Ebg9KL?2`!%&0Z~=kunXU`WNmEeoy(M5wvc2rW z*Wk!RUD-5e8BsZ?=oo`$!uT5W^SHReEuX=7_!cQPS(Yg;XWi7#K@E)@eaQor0xS&5 zjnlonA~t97IbTza#-Bcu-kbnZjQGb@`mKt9$$*?n{v6U7SCC)+*LqG+UILKqZV(t! zUHv9bPb^_o&bQS^&tS*`nj2>KyRllAx0^R>)^{v!kr;cD63T4gp5Z_D%R2ZZ{lh`+zK>wr`fDCMeueqPJ40WW&$qh`M@F zA@?(Rnuewc8Qt_o{6YlHiE)yIG>rCap5u~fGalG3IU+~ivx|@^!jbkk7Pq0oFnlYD zFx{~1U&exXUW>^rS1X+-iN2InTWnAK)-l;^y=J@o=$2%BjJVMMM1fIU|eAe!|10^L)KXIRqt$r_pnx;uu!EfZBv2xA|8 zgvbIsz@ms^lMw}Q<;(w;PHSFhZc7*#qr6PId7Ej&4s3%(6Uf9`F=gYYBCgg-^Tit! zE@78cu}T^vS|C7w$0hq(C33m$CTIc`vIR$$4MRs?MN^c3$09dduQFs?2~-Q$le<^m1? zVE-RoVPO+%6Eg$nf1Dn&r}*+`tK~QBQq!_p<@ji|?DA)3k!PSM?0YmwB@|oh&m@l} z@&)Bl;4KxD(PB%Clh8h%d$J@K5qqW^8yq603UH;IdvUcmS3V3?t&DRCvE+wjQK}PSGSzUO=Gz47dcU-O>m~Z3BsJB-b%MqzTylR`UW*M z+61~jvUBFMKPPDUa4$)YzGJID#FD!e#B4qynQsRVwMeq2BrTCpz5tO^zO=C$FB9_c zc%wjjU#+rJUu|-wl~6&aUbbW#SKW2G8y%>NJ=&u*;*KQEP}VJeB@zfu!0GV`Nn^n4 z@epAa-3Ub+;a9+02bI*MGj|bob0{K^m~we}VcbU-8#NVQl+cj#^plBsg~~LXoso>b za#w|=_k^*d0yTQAGVDeFG{+w|`e0t)( zV2#K5B=MW}&$Kg>l1LbRh@N?>f};u6xTS;P-h&hN%hbmp9u_Kr1o{ z4n=Q)to2j^E7*40{6B!}q%LtobOr4IKfuA(##Jad8@DmB`ya8n#%CQ`h}}9WD?Pg; ze3%e&;ClVPSOB{F&Dpu{@7Ag3ab)A(ZNfW^qeo4C$le&V^T6RxCx;rQ%M91E>qv z?lLrJ#!(3u8_=W-kV9+JQ&_Y zUh`jJ1**xBEaSyA&l?pngY$#<4k-bB^9N&|b|hbB8QvmPAeWWFtT6cv`&@LaOkjqU zRW{R%gaj*2J(_gG+NZv5l5^Jy9&E2eifsHKsA$*9(F#{QU48LX-5${f4587_TP4EWybEvYPeAVpr= z>+3ym{rc!$`!c0lM3P50w8goB#*jsdI|6B^j0=Gsvs<+Qrn9Y#h|42<*G7WP8yNK~HhIeXHY z_s*2AHCiGqU3xqF)S=Wfa2S;`;aNAhBTpU&$EzW>!adlT7?>naiBa4%=W)xRy?qBy zGp9Cb@@EZVxS5R<-Wk`YOD+!({q9#zT`HKp$;@OJfP-XoX!l)y%K^__Uvr!wLneiG zv#+2DFrY@nsVI&U__kwj1mZ z{!ADI%$S-XF{DO=9A04Eldf8T+YZ^jGg!Y<(s9B&`)7~V_GfWs2IQGr&C>f8A z)2$PhuovROqVf#l??-;{htajdN@Qkz;xdKWT(uZ?Ts;Gm`-nU7)^lO54NfO~ovM>& zQtF11+D*NixCz=XYwFkSO>-oL+fpDryykBA>0|RL*L#-%&r@4B)s6o3r-BF|XBlQN zo-2IT^ygo`<|iNgQEWH);14rshN!*758j-=^2aWKP<`x!Kk*;@;r}1;N72RB*}}%; zU(={|;7=O;j#VnWb{{&l2KT_fN&)nBa_wT*^p5we zrXlUHX*e*rHSR`N42ld}WKS)$Kt{Pf+>R$rYqeFCHDOvgG>@aTxOtNppkuG@?ydOeif0zPD%pwW}JKyx+qMv&W9F# zHFejc17H4dv6LPOtrq0ftM^$Q*m5IMI=)?CD&TRJu>p7c?bkb)WsO zY|8I3!e9C*NK`%;MfV@E>0fsL{snnNVg)Qg7(d?K=L?3Pl%;UC00%xLqb!p501T;G z`VV2zkRGn`r5jH#EhfMAyft{u=iQ9sbI5c(TY41-0Ry?(dAc9!3OG|i=1_z~t-ljR zOKNYqmpkwU33BztVVj!@)Rxr6C7ngeNPoPYBXqph45_6xm5aJn=*+Ck^c}X&U{dSI z5V#yltg+~bc%^D9f?D}U9$CL<@0(O*N-vmHn%lg!4Mubffo5@u%99ZVStylkU|I5I?bii$3AhqkP@32B*LB-sd)}o^e z^SvW@dU_6+EU5RDV?TRl1$~QN8EG?rL?Oan#&J}ReB5}QKo#wH&LbF`gtT*3yz>ar z|NIs@7wskh6{svWAG3D++p}$tH+6fZ-c*Tmn*1fIZ7YedBE&d$049Ut;l@rXKR(vj zezAnu!>BZPt|iqqA866g%QZqIw_P!5C*jn>(LkwDx_J$#Nm3EkTk?-9+d{J>KI4Q& z0SS)JHDyGW8+}F5l87$oqehuF>-9#RE}9R)GsNOQtum{2BprAoCga4Ov*0d$Iz*Mz zK_I~j@qWlyuyLH_2^p@ByU$F@iQ`I{8WO`*Z`d|{@g;)gS3MXc-A2=nkh~`!1m{Wf_MTDZuntfjQhedXniFuQZ*isPhTv74ddQ1? zZTFUh`a0lvok^^BFnGSbdO}!DqwVSOw+An>>tM6GBmH+Kb7rwt%$loyJR^8dplDSz`WQ2qhmu{5-;L6G}bUSs3dVz^U-jQD0{#FVkY3*VpHffOtJ%5vs_;_zKJ!41;R$v2AXawi`X{5N?UT~oDM)vBNO$K$w}5namw@e2uOZ-&gaX|=Tpz?`R(iCnrHsm_q}H?X7;RE>t2V^wTf;-$#P_VmYQaTsZFVp zJC#;T8tw8GoGMjmtf?TXE}#7H743|$Mx)^QoYLS^;*RcG>!oPZKfU8QQXU{cxq@j* zW)D|+x~Aah7ip2#&{i;H<3>j@`L&^#MYc|Dx3Y`pc(dl2m2o1)8P`S*LOK?Ev*%6h zXj&waYBEVf4Ws-EOWn&`pllI40}EP~dn*InM_>Q$2=*v_slQE)2&kRB{}BA! z)Si~V3p#gsW3|s;EBTqa`_2B&N96OP0v+0s z&UC%8bXSq*X%l9!)K!Y`7$$Os{c?KP6B1KVQ-!ZJj8%i%`IrP<1xZjqGPoqsS%yCG ziaItNTaE&HMM_qB61f--HIk-}>z7zBh$PucR-o&HA&pISNM<~ORZO(=`cZhF3g
    s19D7iRSOI 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/lib/commons-logging.jar.src.zip b/hrmsWeb/WEB-INF/lib/commons-logging.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..880086459e983a2b5ecd67e7949abe027a8fccf9 GIT binary patch literal 18924 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„)UP5#p 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�zL}IzCd#(;Xct99UQ&{0bX<;*h4@TLH&pt zkjm0g7Z0c8y)wFVs@sGWf{t<-HM&@UEV()Cf&;W1-oqP!qL34#lV=395AKd;11}5XjT+PYL`_tkJBB|fqQt4%Fr^)@c>;sbKyFAx< zP{W4{9@nhp7nkK~-@!a|Q0a_h1dzu^#i3(YgvRpy0fQfY_x2$h%m-oD2HFK*sd^>g zGBClvHR`v%GN72(h=bH8ujR?$BP$>mqn$X|!AWbi^dkff(BzeCuYjJp%W~iQSP&>H zYvt1HiUsudRspA#8b@ZY16gxDw}M@a%B=LPubgL{#}m|7xN3JApYJ9&-uQx#YVAa4 zCjjoCGpo67=L=H~OXV}|N0tNrEcnu@%V`oSya$CaRjYzY88P@DN?Cd6$5Cdo9wpAZ zb@Qvmi)*WBR>nuj*aX`-ZM?)~ikmA~MnV)8Lmk7A>U?F^zbt`|k7s;Hqt2UoomDRs ze&V=)Qw|9eL_3+vM)9$g#O3Hlaqb#%!-_(1wVCs4-C`?SvJ%pr(Sp<7T1;hs+PfcV zNQlLt{nVlBBygo0B6v@HtQDh!>O_^HL7)Jhxp{{Gd;>{%No~GLbm_=kHOmVjlhrAh zrhCF|m)lUH1yq1L=R>AIRp>CqNKb>yr0rk3KbdpbPirDkOBrKu&diO}MO0HoRS%QM znjP6$(`7YljTHvUKoGP^DBKy6V&W8783{E%5BBT&QT%9S?@)hM|A!#Lk1X5`X1|#B zep^8(WLQWTpjnw|9E*z~8vllVPJiZW80#m~GFWHyN{aK%K>zDSegvXXx**&R9VEHD zVPyaEn7vzBtT@6PT*-Ojh~ugH?pTI~KAKp)X>X9eXPhUTKHwiWhruoGGa}|ksnwZ4C%B!~isM~AmIOm)2Clad#WU%7-O@ZG1VY$_&3 z9^rXK#kUFGkhx{j2>UujSG4LS7q@jG0U|Z0j_Et}L^v^V4vUe`z1xAzTMBS{X??eb~&Lq*l+Z_`Xt^n zB>eg*GfjJzt1PsX;U6Yhh^V3j1ryEf`xg+WjJeiu@DegV5qxjq;jmi|@X2QWQKFpr zWAs`V`}#yJBO{#u7}wL2EF7ef`4em)v~(HI-u2Y`4U2rO;5|)UY70NnEiDD{q;Z1s zGXJFwyrIyXXuHW4JiNa~uuigPHoXLPwFjn#M%p!+xz8jYh+D7SkD$do$7^x?w9lEO zpW`P7S7K--3Un{XrP$^R69o+LGdzIelL)S_Q2mW1$AiC7+}l3}lY^fV?YR*%d(vwp z$drz(7a?KS1Zn9>jy+JS&s9;@RDK)cIc(x>|rGO8)`mbH#^<%Vk)Oo&#)$Rwml0=k;>T#psdIPoif`h@i;D_-(i0w5Y>h*y z(2j{j2a2X#_U`P2(hM`z?}tXh_R2 z0EshH%ENJc^jPZDR$Tq3k;~wB-U#)IXDH*EzPMY152tU?UU0XIz#Xe$8G^`O;_##V z9~RN>m;3VFU}mdv$ZRQ5#hfc(I;%-%mkFSpsh|z5_VB_$EKpxO0A-oCom>#f*HJ%2 zI+F3BKZ2f$iueibhom03@IPC!(G5`>eR*SgJzHj6r>AXG3kwCpRas*6sEl?evjmVFWpURB97-$6`xVHrc0?+~e9+o<>_ zzl^aRSIG&Br4@FQSoHN};A7nqNkZi&t?4G*gmf{Nxwsn``~>d(K_sNl{t?{Ct|QTGNI&#-?TuW2Wt_S)E8pU2bwGf`pG%U5@=75WphX03Uy`)r|^Q-KA zrkMjvPHT0E(XO?#BByI)oS7{&xZTY3YuiRPh{DNt6-9_WA;cK1 z@=-g>H~Z!YeA{1{ZPNnPH8U3#&U` zitYFMECbBG8Gmz>i*h;&d%Yj1=xmm+RJASv8sairgt%D*HO3>Z6qw)a;;;cLaiL6H zNe_En9IGO!tX&h|&f@x#bBkC+u+`Y!`?ytzd}I&IhRYh(%l9i>k%e8Plgc6*zN!4+ zUe%{t3iz{09EwUXR3+PzYtPcPo8*(+~M#R6lbI5_mCxN*r#6Rjt%xKai#ER zJ>5-#tkG~TuLq8VE0pLmcd92mu& z6=2nbjhmDr}RcmqvSH=37g3Nt=~iVq8~qad|rWGO5;xSSb1sV?*(2&%XjU*&=n zPNS}?T1z?Q_TKJCN{#d~=b%CW`PJ>||d;0@r@D$mQ;M z@yHda0BL-T#Kw;K`m|=JSS^1_RQpa8BNSEyyfe&o8%Y#|=JIi)>z(NcsxMu|P#75y zK>&*cmj+5Wv_V6jNWL4ncwkUhIBS`X1*|x>65b(o|m)G;isTx*7;K&4>g&5g2J-bOp4&M^Afi)x;KWGJB z$uy~E@x!OJBxvPZNMW9Ywrp~@w3$hdI}~JilEeA~IRey5OiSn|@jhJG>m2hEo90QS z68ph9KBC_3s=(WnhnIwWTW5iJ;-wFjGNgC}PX3<~vzNU<^y0=sAbxwDDP*nvKk#nF zK-VsjByg{wU+1A0Wv7Ck*eyW-3KJoc6XTqTP>N!c>Bz`^WIEm&YL?$?OOHkD){N{)n6~`Z>g8K`lJ+m zU)V@tU=cs}Hv0GkP2%U%ccla}G3cKR)EVl{Ap|sO8+KAz=HtZcIozH#`=qFdSZKtt5Qdw>q9s2eGA z7`{)_x92&1i7h{LS}3$ejF5>KDplaK_@F4iI5kgp3x*K1i_R%tUzZQ$r)GBtSt*x2KAC<5F+*j;&`A=8p zclk%6@87?G`ai$G3PA5|1W4`u?_c%*SnS+OD)glQbtxf$yy9Q5*!|;J{@<(q#w;ZD zKX3k*G7O+!e~$Ba*`u}@4QOTHhxm=q{MWZc!(_j0*pkEup>;mGUqBmDoCw&47&ugf0SX2U`{)*IN{Ja0vKy`x zVH)TYU&w4eC%QHsx=M}f$!AcQf}|RIJQ%xnLAQ>E#H$hYH+di+mGj3(xs?MX4|mu| zHfC|9a#3#1FAh0*AkU=*M z?5v56#-k3 z5X*9sxdPXhw2yCv@%qFMz3p?u@g(k1nkxFiMO8E1hhS&;cb^FK^agAO~Zrm;ElHdJl^U4^o_Pe z8~T%XUsm1pvoeOI;<0SsURZDD?ualUzaYFd*LlMTDZ~tp`HgQRvi=yS%caa>Q6n`4 z#cI2P4YKP`Ujc+k_l7~`yhh07Panjtdh8!Ce3w;aiWKgOst%eYM+;wzAc=rifxf)l^XX$_f#O%9}9#)c2T+|iKY5>Gas6C{fVLQr*!W1f*hIP47ZPxK|xgYVdyG*SMDALXv6(QkX9lgWZz z>0=efCGlJ=YvXL=tl4;w=+|&2a-!74?sLGozlXFD$KiVGA4Y}G zF?U7@&gIGh={lX?>HFMRf?hi^c9L_A-m;nPmyt#n(M@It%g;oj*|RJSBra8l@wF|$ z!2#$Ao)<~j2n_bei#MX1M!J=PB`U51fT`AN0hF4TM~2dbDC%bhHj6r}5bB75s;itF zY>7`wtm*O*lF8-~!OCa!pKW3~Piezy)hOS}cRmi>8t8u^6MKEA&A(6-^P+dCC{ zJikU%$e(_$KBlKCQaj4b(T`60px-pnf69Ic9+D*R*slw+X%gv%q0`G}U5WO7G(EojkEF z_82gm=qJc|SJkeAioA16(aH3@FYgZQ!X)fU5SsVDK!(WoW0xu3qouPv>2bs9a!c}L zsdF~gc3Vq^Z-TQz7v{VTMRzK&yE5gb3NkH!2%Q^%q2W5&vlJuZ2}@_(^F_ zTT4tyRT7zzV(kJq;Ayy^S#nrL&oWvF58`VakF(Mku}TB*L%LB zCs!^E-Yvw~wX6-5dgTez!)*k%)rgGtjLB`A2H|j7%BD(~*79{PyRLYNz9=krJKjhA z_8gtAX5o2h_A%Dzb5XmTUZ#1O@zNytZKj_%CQt^VjfIOfosxLEVH)?qs#?12r0srq zKt;kH(%ZP{Rq^=Z3sc@T;t&j`c5pjQL}~pCOh&R_x{L$9 zHXLP5y)Lc+nn<35Ul?sMiyUrl^0s!4twqM}ekWRW&&iwgtA(H(2;+LA{rZ)Gd1d%5 zl-ZWWXN<;G=M(PSdAvuPejWRQ{57=tdwWJZEJLXaEg(Afi1X~|&1DUD_-iuydW+vO zhuKXypOE*i{YQUSrzPd~fyGAOwxxbkl+4LEvOrsb)z(02uI|2{MG%jhf!yEXv!_h@ex+C!C`v%zu-vAOW z>(?fdpGi%-pFUKqklPxepLU~S=&T94;XTuloAO8D+oexX9o_1ol`tPFFt`d61YVzX z9!u3gBZ_@}YROr^xm|R+e@2jD1Mhwranp==xJ!>nD@K`Y?+12(hc5|Y{XR!O=u;^j z14<05XT(Sz&(wGGDzmwQfLe&7GW25Tt~Ga-Y%f27QQ(?+tnF8bp=&7mgOWm!&#vlw zTCvqJJM1>KG|H@2Si`3hzbPocKvKJ_I-2@@&8pEsx^&y!>r$V6g(GQ|d@j$m&vR$v z{pw@1xd`~v;97kB;xFBmJ-p^T>*}tqPz-tr3J%8>t;o;|-+$|7b;0qGKMv3vAV8}6 zFGv{vz1~Pz*#d08|5{~oRp+HI0rsE4S^$ zq+0dS0aRSgZC>Jw025EWNV_G`*=*b>diU$&aV4KgXfKH$JA3ku$G4(d&pOmxe>6hV zA(rB_1|`6E=Y@Tiz&BVpyKn|Bh{K8mLBYuGd$jPI; zr#4kGZ$9U~WEb2_fk9zfaHohV9QgD1At-(}5fas;26=NzrAUd&23_*+ zJeqCsTsL|sHBN?2&&vB+T#J{}%*-Vs zWJ;dLKcmm~=E(Luz=@CrR4D%iJ^TMpi~i`l{+F6$c=9Ls{4RUc?EqMU^iD7y(EcRq zbZXpM&sv(#Llw)R_ymfkBeyh>p7f2Z__0qR-mXWhb&&%X%vh)Vj@8ETCy448_&gm zd20g!Im?LET-0DW8_C1Fu*4?3tTQJAPc~JkeCjFnYIWq^tVX%n*ChCLZjJ5+N2A8_4N-eNDZ4DGd$PHLN-j92*Zz}kE#AN< ze)Zasz^Oa;J1x%AEyGHKScQ1A5!m_y;gUMNHpwO3Fk)RmkGy-BArB0)f zGi1Zpy9xN8O%Qo^!g<7OMtWcPKWfz! z3Zq0}SzG`oJxg~V=x`Q0YdSZGJp3q>7pm)Q| z3CFlM_fP2#VvT9CV|9rG()5iTj$v1Y6eJ!=+I;-_lo869p8Uc)h62GcuLA3QgrO$1EpBBnsGSLIu;7@ z=1)xTaMNz^6#n>X{jTvnG;*aA>0kzN5Pl_ssN!0@`ZMPs;#h+9z(LcJYPEKD3P z$K5fg4*EO}$Y#tBLlat+X^H8(^051!kEg(+ZYIKmRkIV($Yw0DruZ^M4k=IAIBI_8 zV^>8cNi$kNHiM>PDr2{k>Y${D-`!R#e>+RIYJSAa>)=`}-|+CA*S+M$?YfoL&v0^| zv62tt4v4jy*A?KUnv875GL~-%=XlbR$OM8@@o|N`<>LjSN@a^oq)22D=2Be+x%g2h zGzaNO1NLBcwB}(xD5Ogh#@TYmC?-NU|6|SMn(6X~sz+Lmf)^3DOR?2`rwkc+IatSq z4EF9JBCRC!Y71-a_j79WulqmD77C`Q(ZrIvUj^#P!6lK^_kdch2Ty`T?GS`e#wabP zPh?_@aALcLCG7jSiMpI#F{Tnm1-L;z2F@rzlOz+Z#V@-(d3u`Jy|%ua+C;O2npqOp0?NuSXM|8|wDD2b zYew8!I_}imsJ9-=O|-pvUA142Z%1^HFHR8_ z+OS)P!f$Ot;NB6I8^qb-wLI`~RUIn5!2m#Fi_iT!shwe->z`68`4~9R*P@$fHplEU z6jG90q=nT>@JN^b%ioqTMExjf3%=9kmd0-B%zMeVdW5hd5>n-Tk90n=EOfGvC5pW!Q1$s@);nCB%(-HqRgp`XMZUC=)Kf7{mv5~yIO z0DG$#a9sXZhWg+4^*0*( zls-afMLRtRz#?P|?n)EM7JN5;1PP#(i04=W?(pEs{G5|I7kZOj%r#;L#`JhnzOoTb zRIqj-3BjmwOK?SUF0LUxP)$z_D*k!fDco?i^DvW&(wa25Kuy~XW|YvIhb~$`#OFz& z8ibGV@Uqdg{*b!MTmip?Tbn?|n`G1taDhrz+r0M9^x41MouatX$>`R0kF$t*By5kg z?BG&FZ5#3pu}xnJEXGx5HC0HQ zxuiA9q!Z5MY$H!B3z?O46Y2gYH-aFY-5vIdg6Od`f%{}@h+gtux)n;-mQ*>>G(u_c zA&0dxUn@MS=s1@KP0WdSECj$GHx0{x)}6>7B`w};sU0?!w+3ofpDCbN`KDA^r#Ac2 zB)HARYo^bT-WhHflqhY67I~cMN`D)6k%BjW~QS# zonAd+{QiO#5Rk`sF!ox0=KJ)ETtQXA#QLiQ=AOlW~Ev)-WPK`+b)5uXH_Ry`{0tQ(_p zK<&Y1-aroV{ZLhev6%e?8wG-w#KLpwsRkKFwbT$vGpX|_hwI4K9d2JoW2M6G4Lp_V zPJs#oxOyob|SqI19J7wnHBE{WfZIN--VP zyby_7?i%YI+7NZJb|2Z9RJW~BO8wUDIDS2G%42YkB<&QXAP@K+>FjCKg0;?_C2tFZ zZ1wq>cR~ttxqU6v9d%(3+#C*^xKTfv49L^xLZ$Mu?-?-Il)5_tATGUQdm(kWGQ!qB z1OP3wR)6E>rui`Vx(`5+0)Tq|SJnZb5X;l+?@;o;R_Z_SV~7ZVAL+gkS{%3xir<0O z$$ADeV{K6kkz#9Am2UKnSKTF3+*P2VGoN=j-@ukAZK1hZVL;F0Q_WA-0F_iS+F#x5 zLP=o89x%yjpt9EX9`7)PtF+W4vp9ctza=*z%vl4c2;;kYd)k}|+#u9P)^h_ish zR;sk3fQn6uFuF6~bp-<0>AC}vx4SoG<$z0AFShq;UE^wR?qD0pJNQS3W61m-$)AYJ zj9Nnpcw~8brVvGhHDWG^ZFcbg}-RIDHs z6P>5PNB~0ffreUOrX@Cf<;?$Rgb11EqyXEXAjXMRh9S*0)9yH@Cl{wX|6`gVC4K>K%xLea#FG}Wa54387LMVoJFoL zasXjY@d}#N!!dYlmVwO)wtE+@nBbY5CISv|p zTJUE2mzXYPvhK^-g%t7G6}5GW&GD6n?~Wq~Q+uT}y97tprL89>NYnC4G8;G7!Lkb6 zx0#Bx)IwCQ2=U4WXkII%*kV;nM~0oRlN>;!lL-96(=|}+Ii+p{`U9InYKWS_2;bS| zf%$A**rh&@rwJWHFg9HolBoh6N@!6P&~%6(R&ETIiaQ{-^R5N*E$Mz3x*6l<)VB)y zo|db7g}<5E(=FKDe7&bPc4)|R*H=w!P_TMTnr2nAQ8_PIYGRV`lQ^pI#)w2=9Ag47=Tb`_?EY6oSJa)Tl1`8=ym7{ zz{+I-;+3NRO@{OTuH653oBh6Oe}Ar3)sq=wLh~cM6x4lQ63~2HCKiZ91YHl^uXbGB zvHNU=lDuh8^6s&i;FjyI7NIC9dCkv#@{JARP(v5lvMYMdu)BO`yCKQT4=AVN>JEReoYwl$F?T(ii9 z3DcT9>WejKa6~l^K3;7fA|%jgG~Q>!!Y^d14QMOOTOgaUqvFCENk#a(#TgkdljPFR zJ+7^5o_7UP`wcpcSKqLg=ppFKmicP9KyJ0$D+cc=TWO@fB{1H0U_cutKay(qd>3iG ztQks=5t-+I4YT(`clM!WFkBN<|ii7rCjzbh{HH}f} ziQpGOt;w(%T|}^Myt*q|WxFsQ65@0uUA&(|)?e)8J??`Y;c8>nEshgIy$`7<;lG$1 z|9s?!QA5tF2zB@CyxD`X-|JLp|6y)G{Ql9BUv58pjtRq9-!ojj=+%~bo)g>$*=@zg zd3bae-+tp^^VR-Sk-TigcT|H05pIi*)EwvD8}8d(%6|?o?G|O-lK_-u3E&U^SKD0G z*~s3-+`-xIFHgL=mp`}p?=n|e_zx=SZjDL8^lVaM!N7`xuh0m-{cf`72Wu-EQPDK- z@lH6a6k$NhC0x8+tj&j-qXt@({f3`DoB1+Qar!y5z&ezIJ>Ngj^#~oqcb09a;;!q2 z5Fpr^y51_!N3d>@*@oRcC)Tzp=f)5nu zW?>{U0W)X-9qyGf8j!Q*>Z#`-mzzo~b>`OsatuM2l%}Kk$oSE^Mk%6Yq=(smQ(CNr z)Sx%_cF7d$I%ttkHc@m7dLA~c);qRMtjlxi7$y_!l|C$fy5!2=F+Yx>YjvuD{fi%p zO+XXl>hhQIgKp%*BKL&v!w2}6dTI`F2r`G>^2 zx7?g_z!FIU;>ZmDc|ZTHctFL~$i(JfPRKn%@;{5gf0HAsdVqKz8lZAOaH|I`8wItV zmfREHmJTs&kU-*@fp;~EM{9wM+iK;h?`G1Vk(1Gey2h}Bcs$;46=D zmKkm=iyE4=wl{3h=R;TdvXrw>Ol@q)HruJ91t(-bw(zU^4z~$OXD!RNk8>!0uZ+Sc zCiG|ql>ydqux1RJ&?>0gnL=H5Vni4)>IR`RI$xRxJoqgIN}!EfdKah_=1)T08M1+j z&hQxU76-UEGNzmw`THn4qZSW8Mo0t<=w=QcVmuyu<@uz;RAsm$p+wpP-h9$!AhWR5 zb)_&@jDc(`=fU*aK|b(F)uf410(VjhY}ikwNrN`c@CmPeCGRYd_v36A&cp7rmqIkpwaXN=lU|O&0LAwnJ#h&alg}hYY#GOu8-O|VEen(C1 zCDh;nc|u7V;`OOBJh05>-&XvX`bL;h_ei^8)1av18$DFI4R*Eus+!-$Z&s~_L^tG5 zgU$4vWy}*t_`~GmgTITiZCuvf^-=JtLN8Aj8)||7SHH6K7_^!n(KK{PdAS~EKT6_4 zkDS#fIB#2jZ7mpJO3L2ucc}e+Ufo5+Z8BJJZ<(E zoq*Hd&-ncO`y(%asap#8`~`W+KN@2qZsz9y#$Ed>t&)r8MF3%j6ML2H2$8XL4!YU{ z${Dc9NhBBa%0)*xxDKTcv^L-A4tE{vS0v}MmE?3+b*VGM|BR9{I!|d+6V;)nr0FQS z%1+_&4)ePEGlxW&Zt@@rOMcr2V=uzFqwaQb-wM9pOn)@A-7tv2_AKk*H{qI_?(d#tFlF~%Ru>=IYqJi z;AUr4bta-MJl1HcVa99Tw`D>pZ-nx(=0eX>kleI4<^h!_Yy554j82e9V?jk|?~9~; zvsA}HP}Fu#y<5v9J z0nIo~zKpXY+((j4t?%oPuagi9{KsO`BxEI8zMo5U=pV~Ca(^RBSP|^Qm;#`Y4f9{# zPx(i^kuY*`l{9j(1kfh@3nUSB{|QOI%PSl?z!l6#0-}!~VE2Ybp-dm$JyDGkO+`~+ z^_mPLNQp9&)}|6E)dkz{0fc=&sFYG|X|1%sN*ZeU`tJG~C`TwKEy7DJ z7D&^AW#M@=a66v}N=H+$y_wj7`}D(f#KnUp3N)*WE?b z(8(%8U8<(0wzju`sC$Yj2CzUxR~|0^weXcF2|0p9 zy^L%RWH>g9iedB}{Uckb?66JP3vO)-@Rh#Z=&456nf*NBERhbBJcHOGqP<|v8`#bR z2#R)Rm@*r-l<`ojOTEzZF}`h8aruw^;}j%AWUXq4$7hu3$J!1fdZ}g-$_>@?;zHDE zP)*=_+ZvzhQha3%Ua|JoVJ7B!^^!rE?SZh_z3eG#n zz~Mu((piaxAR2Wofg#-3aE!jPZxs3UYl)Vj$`@vEAP=F$L-lPqe0d< z0h;ay#&{0Xwy_7Q%V;iLZ0R(c2#0<^RaZ^6Bw?>ejrDi8%vtFPsSTt1wi?XJu#e); z5q3C;buQc+oHz+dRD(1IQU!IaCffh3UE?APQlL(D+C#>N{+n#R=B% zMN}ZhB5O>nOF5f3Uo$gx2)bt?!9S$@BH$sQ@AyXQBY18;NRQ|wF$Znqp=`$lHz15|BU)3VdC+<%U<<#rnxm&bAT!gr zS_&%m=G#xj+Iq={(uT(iHt6D|)zvw{m#^FO8mi zez~7nFLIj$JE-zZ{P}~lK3h3fapJrT4I5Y9CKvo*NlX)HLrH8qE($tg)W4rTEo+0B z`!obUEFp>tCxEMgNXz`9_MzW!j@8-S8OXa6m zQ#v&hC3L->uv4aG`WwNJbpWl-kdLhdwr&YZYZRY3;-Z0${kp3b;R(p~%cXLpJKb-v zFzXgGW;@A~$8-JRjogDsEY>Q&)@a?N@poq*Q-36{3L~br=it)!2gGluHY8ZvID*Dz+ahFKM3sRn}R?!)}%SMk!4Q%D&rfi8Sio$DH{$_Y<*4ljo134Dg9D9Ut^)pG$Y`^9;8O)&2(_l+1ZNR`tYSExn@AAQ0i$bv{_IrI49*Yr^b+Iey|NvQiHse` z6SQx3*#F0z%ihK*~vPt-oO+KS=G$tVt5OsEM*~9?;PbF zYQ4LAMYsf8AxiQ16Wh*}%z%?zDVL+qjvV+0t3X9toTqEWqSenUWn%*7vBrd(YadCy z@SVvh>`(j_XRI^CD{~6=`Yr5VL&{H@!at5xz7iaN8KvZ7c$%KTv?I}I-G!TOX|S^tdm&TO5x zriginFr{=dE$OvgE(zq3%jX|w6KBx!_caB3v|EEr;b%N_bI}S=j4>d+IX9V(A*U2N zJgm~uCdA%x(BI+ptw7%A$s)i@wDxg-p=ty-I7X=zH@C4Nu>Afl6!!< z>|ShMx?tOxGfOK~yc2Ey;%*`{LK1)}_Toh7N#0>G%O{qV%rip}^NnYXpo_Q2G z(pVBokwHeNAY+Zs>TtQEW@0{r_!3u<0=#-JD z3Yk}J>96}q_3k|RF+M~0Q={LUoC#T{;GED)$zP4_CWw3UFf(~z8`ii0MctLK%Mgu- zA`jCdX_D>*m+D}TnJ^;&ZKJKLqy@EIe)k)N6A#;=4Nk(4l@<}sQo4<#37vnzThnLq zRExh=rOuWeD?q-IT|`7ru52=D=I*LrFT3=gs(ta{sDj8Z))oMEVJmPa7SGwsR#GX5Dv@5(`7wKtpS=PgYS@UBZwK(%W~1RA}Rvy^2_zm(egM zB;7qQ=TMvRGjD0(z5sQciUet#V(WsKZV3-F`~ZUIXx$+R&Q%;V&&tV_eCRT9b*|&o zXDNJv=W3?c^IUD;+Cn$$v&t8UW4ZdfjP$NnCI)0^@1M23CVc&6{fVvZL{6CFYc0+% zM9S#CZ~&|=Nl0&6kzo#FIdG2;^|-_h!H*&Sp+Y_9jddB}aVWs$o0qsOS1xBz zA~=U3DzI>nRos)pH3Sm|^?}P3mO}{ZRbn6|{>(G=>cV8#X*pNF7~JZh8;du*hIZRA zFJ%WeOe1fs8(=?=mhJVJUdl=vV9d*!e$+cY4AKKLf7}G$9VpnNvhee&L{Z@nl}AiQ znq+>Bmsp;zvi$sG*5e!qJgygqX7St6Ev~orE=PRzNg{IAl(j=cJ`{2AM}72suUb*X z<%IY|dEB!QJ3VHnAm@`T>kFtX|C-CnaE+0#R*lRBt0q$xax|)cKiJl;2<&151Coyx z6I5n!vv$UN4pm)Jy*SHh?#yj%XFSB7Rfx&A7ve1;=a{_8#sKSnB!-NcOI2AnZ+%PO z%}aGjak%H4^PQ7}cBLwQgEE8;?y_?i#fZh4ch}HwiFXIN&Ko658VS^!52~9lk;nXN zS=Wsr#KlB3Ro_eD_Q*2eE%C|Dw6O=r=wgs{JiOzUer1w%1v3jfdrh>Ci6qtvpG)E* zJouv{j`A|KVe7N}l4=$A|H?>B?eboWLVx4D9*;XeSHuV7O`%yCgLf5|G-4bfb2U|9 z5xsDPV4>68$0>KHHfCE{Ca8Y-DnGUu(8?5O9!w3xK=o2Kdnb=kr0)+04|+ z1kjoBUp%Yd&xF4}lgBo~15N-iAK;Ck(nZf8IOO_UV=NtLa+szZirZ_7#B&75H_ltg z>csDE5}*z&&1uGN9#t?2m;MRF;qGM9vKn6&@KKuW^s+iMIMkq6-O7mNn~=rR7^;NrgtH~f7Zzf1PmF8DwuIPh1= z^#O7=tw3T+&HhF_sBe^%s*&4KV5&E+3q8TEdy|P~?3#%j9H}N>E1%$lDu2wRsB5P! zLMZI1m^cBbM-8hOWK4r(Xam=;`2(L`_ff&Y52sA}I==w=fBxk~BD{aUP^MNEfPQ;s z&WtcXM1X+<0RaPH0sa1e|NZ%&gMNC1REisb-xvl&Ed>6YTdxiicA}Mh7h)zjPEjC%_SoSN@=z@w= zFvYJ4)@RC{U@Z#^ArKR!O$94W#LnQzn;!YsS&>9f8wzAd3Al39Bl zVlZNo>u%qM`rrCb{f*%n0BXZR;jh$+LGl&$7+0I04Xu8hQnZf?&nJr92uZ{vFwKxE!3!ML9X8#}y z{yV>hikT~5DV5!9|8=YNi%|Z}4EtSatR9`=YOedXnkeRYDrI9hU4ouFKSdVF|#_b(f+l+{Q2d(KJ?QMu&rhH zvY3#rs`QvDDe2E5+At=8DZJzS+R5KER7m!!#nZ4Y1$WY61FKdrRAR8VHnppAIJN6} z8%NMd&6T2Np8BY@6Hc3EPvBQ0dIN3dj&wUKXrcQt7D7p7vQK^qro1<^M)jL#vDrLnrC_DNPeTJ7L`GptA5-cS&TOG23*wmppD-NM?2}X%(rIVN{eDFoK;?@_Z@J zNS&W$Kk4d%dTZ&0m4#_c!lacP`sMTk=z+o)(OGbQm1tvm6My+%AW927J_vmNB~N?j5y!r>wt_ps|X+eJthUPAuQw`nI@TMA*3f?AE+KcVUbY zFI)uY!Al>1Gby^4$^p%Pjy{`i$c0d64)lrDgkrS#xq6=Ci?NPDd-12fzJJ~U>WP!2 z3IG=b2JbJy`2Ql8sFAJhpA>5UR`ZGIss5(+>K&j5SV1qUq3W?tqS)PZO!q1A%8MIczx(9|p6^R057p*x}rm}D+x zL-0BZIkr~4lvE1$46<28UJl@A&rRI=7*z(D4mTV&OE>u*c==M^HxsY*2-R4I<@s{0 zCMI-H?mn*(ryO2XwNr`RDu^`^JyF>aI;KeNRzrm-kOMBw1?F2s`64P%RTfh!GaF=p z3%wbFGD|@Bkuz%Jd77q-AE#p+A4|JwK`^_nL2}t6bqAWioJH;2l?i!|y2uMK%hI|M zi*rbW1pkJz2uvRJoTBTOAnaE#t=1)HJDN+fP{Ph4V6`4kEUim0lrQTbf%MGqa@?X4 z8{56zcWV=oUpI&eM#|nUyg2F3s<}LLlTg4-9f2pys3=C0)%UfQe!d+1FckmE+gUqS z^=WXB%D|vMxJaojhv9+yX2~mD&8!3LRl}cLz>^~{La>x@Jcf)`f#kEMkIHpY z_(^JjP@5=$$&hV+qm3wq+)CjIcTnJ7KHI>KMU`1rI*?=&bMcaW!o>=CnZ0s|sAYoX z;G0%@DDb|b#|=#XIu_&D){3da8ibeCTDHQwM53j%Qv8&n0W9z(A*p>Wg#q1 zDfKm?jsIIt-Akzqv%tZGQpK5i&Q(`oQCh5HFa{F~2;Iw*cok0P8_74TindC+n@Kdm zVv&;rAKmD0v3A^MIX>si`xqA<5HxRopjcrPgOpZ z!QY_E+StF&sX;G-IIYHYejm|~G9C*&2uLz^>Dr-10BxMiubJ#xMu+&!gbAV2_1(PC zvIYGEp5)Hd(0pW*Fi;rH{cI(}wSjYZo{0dIKJY`)Qer)0UqmR(OQ2`!zoAo9^+!8=)qfWva0+>3Ab(q#iUN z>|*TydR(`c%%W)?Nw+kGtbfaSJe}G$<|FOI&~<1cw_;y3vX7>P%|T*+Hsh<3X?hjW za9B0&O!bsQWFCLDK4UVu&|1zFm?SMM{Qx2Iyl)8M1a$~1ovn)+{!|fnHf!FvCyFRn zYoqeIYqTo}&LfgV(NF~zvSGgJ%=ZupuH&^095m!i(ln4`YL~OKrDqVbIcs1(PzQ%g zkTeO@>xpIpgcy)$J|)jWkaq_$gsE+L+48ylNT>KED3Ajd`aKZc$<0u zvHSK7v~4-TqY19T%DlS+(7&qH`i=GTt_FzQ@wN^~buk*v%j|DgLV%9U*S-QQ7*YU5 z*k2@s{|Ubpjhv0_{w;hf7X1m|zsqIy0sBoRxE@RZd~>6*AYpak4$Rf@UpB!{HOM4} z*s{iJth11H$SHl>rQA$1n{ZDu#%ciO=EC?PDZrmxXL&El3dYcssLsZ1n0Z^YR|>bt zCt9f}7E?W|38%B)7!iA{SG%lm}Z7#}3Q!h#0>)ZQRdaPs({Z3&Gwm_b5$#6Su z?d5`?26D<=n9fI^^%4inzSIP|dV!fuue~}kQjxmG8^X(#SUTFzKki5DOVz{pHI&O9 z+|Ef4dbj}b|Cs*9hH?L@iFNj}Ti!41zH#GM+I96KV7XR|AMtV;FF%bk@8U<8mOcuv zN^PQP0Wo+$`mLjEgLQaw;jzt|3}PJve@3b=qG@pZ#Z1KshPMGO!&k*$B{ieafqQTP zAWO0vR3=}vzpeDk);Eawk`ahQxFxzf%z9!R-xD12_)uAWWg;ISg31{i)$7^4Af`SH zhwydZNj_RZ-nn+OA`O0;*J)UQos7{{Ov5XK&!AkJqqJS#*|ul%d~b)t6O)-?(**18 z8T<0xrUN%CK}rf&Ix<|Tn^yf{fj6grDhS!^h@j918E>jB}c?WX(D0<8CXG9(+fJx|U2=7P@a5ZANDN20d-G9uU< zICf}_ug2Po=vb|Sl^(!CG$39a#EM?ZAah>NcFAeVtsBewMfa7j-O5O*60`E_JJw}H{eWU$rgO*Yr`_&D$V@YK9c6qE3B_AaeWh071orvf+8Hw}3l1r0pxzCc z;&Ks~1w&?SaX{a1?)3`#`1~$15Rkt;pgZz^u>QsV$9?-3*BZ%#=5JQd@A3-Y#$i+9 z-Y4)aqE?U%t!Q%QyUrGxqwPsn$RSwkA_i4-aJo8*O0=rfWc=b&-|nT)lels{2R|N? zCQ1h@@85oM%+k+ZR$V2ew5BD_Sny}hEOi+$%#;!+)?-)TYvTz8z2B&G=%%WO2^YFt zQ`3qywB!>)Gz>7O)Lgbz+4NpO_51igxXPv|Xk+@PImT(T8q6zbFqvskHglHK`WYHf$s`BVtR z3ozWzv(#E^FBf~fJ+#o3t=pYD}Q zGq7?n1dJP%(@>$E?68s^5UzdGt z#9sb#08`gEc5Yd9H}iq_n`KAmbTc#diIrXo>lp&nueCX25KKCt``5!yp^{MS9N3Aw zAEv9K&n*%tg~gyj!HMR1%gPQDuwD4r9dEHy zvWhK|*>^cfNFrryC6bse5YI9S*Nf4umQmVn@QTlxjwSbo#b-t3yZ&(#OUVYhJ6C=^|FwJ}X2m{S zyZ)(12|S&Rc@@H!kacAOOMxuhB#0NNiy`bD=@JMkYa4Q%6r$p<^0!pd)WB~wJFaz(Hcn70F$BL%6&6&;XEchD~s z6_14Dz|q+@FGCy>Y`(*FeGC+jhnrUS-)^BfutD#yV4X`c#`53}t2El!DWQS{$Y&wO zo{ESQInHwDH?mDy!eE6P4)%hJ*wUhzR5Ja<*Qc?zkiMIsSDjCsU7@AKy3Cn^ zg$)A#!M;b}`jv|QE7ljkO;O%p{s%W;Y3*3*CS5poka)&gBAP~i=01#wU-}N8L1t_V zL8k;aVwjh`8X0lFU;}c8XoeLVie(2UK#r>&~A?qjFV7F#iy2P z#Y|VCcs4cfAnJ4k)(H`XC8Xmpuo7Z#%rRPOGd9Fd)RLOmtm_h_!4+5#huphNgjjhy z?PD19&P%+J3FXDvctzqQ_3ru*STNeQ7APWt)VGG6b*Pws_r0;=24-iNNeV1 z#VN+dbGHdLCR-!41u~{%>*=IYOmPV2P;nL zC?TF2ZPKzE$`etxEqh6+p;Tu2O2W+*I3Ce@WlH~r_jA-Nk_8VdO5c~)-3k3tSBp@K zB^AKeP(h+2p*=cwZG=`l7eKkSxXG2lOg8229O#oThMD1aaWI%|I#=gx^wG)nCB%jK zdL4L?gE4n%c>zi6pB+oeVL2Z44ZT0F=o^kfGOwR+Fn4X04dE3n;;uqh;cy>WNM#5w zg`~gKkxarT#ZIx@s27oE86HiP?N&>F&m1Aw;QpfCbd*V8YU4UUqnqffQh33P8=bHd zK?7;T5iB0AZa+A#R5)W!uHK=uoNHSkOD5ShA*&57VfofnAXlTta4F=_!SF35QRcgE zsS`}o@dX(EQ!$|hWWRp`QPGH}eF~=q&GZPtAofT`v84zpyWbOQM#b|2*VQME_<$lW zxz!+7a}WI77$A#hPva@#@Vp{ocI??j7!XeFW$4$Ri?iR-1vzo=iy*&ks*&~{w`8(E z_{Y#y^%d6~FDE>Z^h{HWojh4j33t;a;}P-vAI9D>JkM9` zi+?}dG92hoiHrU)#S#(<_SRA86;pw^iqZY2p4a-pK_9)la6`g71k%0*eAHNKIc|Pp z0k&aGtMWWGK4ffSzwJ#u2N#M@Oz=h^JC1NNoeeW^V+>=B798|)?3_w@K%O;eb)OV< ze?+}mu)#D8*a<5NZ+_Cl8{RKVFUhHJ##E7NLUUXTA)HLzhFcb%Nb9`Gcn(^F)*uSY z2n}gw$Yw-RtkJiVMaZm~2T_!P{(RyB4y#s4q=BKM7=K4x8m4JrO6>dE6A~Q=sJp&F zq?HTxsw=gB^C^xUaPUFa#Dgnvn+L0r${k73l>jh(AarZv=Ak96;6n$o+QX7chfoB&eI=53f5d4M7!=*{jiUP`P1*(uLs^GZ@qtOGh@I$4rnt{2m- zr`YMUqC#JbMIB2Gm0{R#3s3PY%1JpnEav*8OaLN~J^H9D()Vq1M^j}O?Wx>OU7{hY zcaZhN!>|*LQ9Q|1h1Hm6UUqIceV)H_6MmTW+@LnnZ^{AquKVV zNNijUy5RB4&XBL;1n3L&IGiq$Zsfll32ROw&b^?dODP?RB1jF;tI*Y ze%0mK;D_-yR~nuwf>DB#0yX78>@pcg7n+BlkoDA5@)Sv$cCsW>-NwUU7T8;!#T+?N zIb1l*hx3R~auOR)1C1AysJmTrqG>s!M0D<(QRb1Yu(Sj(1?q5*JsF&e6M1<%tX4Vn z^~ND4%WT|P5|@6UvmhzARo;#bQFP#PL<{+Dj9BnNu>F zw}J~VePW&CP_1$2WbDrl=r-9NK0?EoOKdu-fmpD{__qr`>$E|}z4ylqpO5MyXEpu@ zPdWSdX)x{2_&hoE!Tg7l7{KJf9MrR(>A+RoYlK9)#Sd z-Xjqf=g$-Ccm|a)8?+>bb@weS9@JE8&~3nF3x*m;<)o#exyL;HRy^GYcUatr8iK{^ z?JDLtCI=G)HYpb(kuu33lmupw&vYKoX@Obn%d%??KFp{(7z~dI{@MX^yX(wG^$fE< zMnqt5?k9Hs`JC%k0Z@sEfMHGvhJ1uZYhC#tRrD=~))K3rnfLx*Tc zj{x|;knLT*6vBg9fbTP94-Up;^vsXV?<9LdJREsx9h3`iBYxUny#9Xpp36~R<*qu1 zG<|j-v$c!znY)*Slmkjz%V)M;{Pvay>KaY(bqa$lUY5bVwn`13--dGBg{#22S>S*# zbcBzfG=#K_bPwLVggYZY;sE z^+BFuuTHo?(Um9zj|c21V+o{9ON83A&|v2nC2pI}!>T)|Wbfg;Nw-Z6d$ncD7%Al0 z`)!|KW7Qdr=1hX-5}pdYcS@~8@RtV910h4#-VYF({iC(V$&o{I?8qww{#x;?C}#GW zkPB19?Bg=c1l1S}lP^pU!y%alx{+cp+RDp1EqYI`!yvAFXj#TP^AvHY-9oY($w=YX z1w`4|l-Tv6hV61jqqA<(l&TntT#WiJP1 zW5i(>%u~@AlyGloW!l^dxMd2UqhJfdOEXx-W!GS30L}=z1AA-5gJ8~#0`EGKu`K<^4 zI$dF-U``rsh}hP=WL>I?EUip*@Xd-$Xy*IpS{fMTQag<#Soycj*iQj^s)ZvWS=ZH? z6?;gAW)xD{B)t2|MXAzPk6F#-W`Y(-JT8=s5@?NqQESrP*Z9k_Sl%Mpqk zUFfwo3$^lpD}qeLtL+lk!@wBz$kQeezzbN?azM!E{Ss)DKv22HY?^4cAc^TYWsPi+ zWM?G+KdRaa-9|m84HcB9u1WcJu)$9WY_Whm%Kb*1-Y`mwZj=KfxvIoeuHLq{qqwi9 zRq!+uq9@i>32mXJ%&+KdRgMSPHbScF_7WI4G-@R6Y1%)3cH~97^6Or7ph3Avj~d+>pT7=Jt1GEYBv|=v{P?(&Fjdu1>V} zB>K?XwESY41-a|he5N7QkEb8d(b3kJpHHV7hY+Oy3_xq39sX$nJ zv+(;E2_K2~4`x0>3P5dDbX)AVV}^F@Wp&|2@(`ff&Qz>w;NG+Fq9h?rn;O0~OCcGU*>=+y*nt+tFL4Mm7$Lq0zw)isGeSP9a>~dR0NJZ7R@tN( z*(+FfkjVeJj;sMRt1+M(6Wgy(=}VL1IL|q@rl)}|713ij7nSwQ#8VtFm}&m7Ad0(m zw|b_e2w__iz%SvtK=xb{28O`4055K)R8cNd6*#~c)y0+#8EKQE-%Ew3;dq0>S!H}5 zjL>-v;_RuDd}4HovGS!iag`-QTv{^g1>%0`dz3S8)$UJ0i^_LZe}2J+)#?_K!|jVF zV4#j+EwZ`#tIOZ2Xz&n9vTT4`tVkF@K+ON;BGn`?_;!%Qjyl$gC+&fN8Kn0jC=l3G#I)aBkd2&$D~z+ zy28hBXbPm9#do6|3QfgGO*AE;U|8z#lDJg{Z%86!ZI6Q9R9bkUF|Pz!js~^cvW1H8 zmTL?l2I&>^;HFhEp(nI=`Gn(ZX1HggoE&@i6Nd+S1SoPVs|@0(wgPfe5E>b1b)S{7 zT5~sq4BuvD)J~Gm7a{Uibqu~Oue!r8hP2+LP$qtJ94c_Dw0+7T7{$NtIdz1|yx`+kJ+?2pIuZR6_Z znNou~k`m%*(8dld`bLYZwW%!V>aWsRhdrcz(w=0E($V#PWoL19*pv_K8`@} zv}z3*G`Vs+faY*Ur=FiTgWLZksm#ki1L+Nez z1QEtFVP@ZA;&X$ghutZ6fn5&o`)YZH7Z=chC=%$;W9)siTp!(pakCF$DXzIUFXwk3 zwLfuePh^z-a3yM?Eu<$`^Ls?|Y>Y*h0hNxh3+FA|v4~q?vA23)JbBC&VDMHq9#l6igQwoUf!2i;hxmC2_Qy}_y7ij~=BRmk>n?Z|(7?_L zCp0tMyfS2-h7%c8)$IBAA7cgQne?L8Zk=FiB`vXLYf>0@T3kDW$Ba&!sz59$bmh9- zB=Lax^4%A>cRtr6qu2+MF>avoa7glVTMh$J&ioguR?V_c&=xT`#!vE6#4pT3!qvk+ zSalT6B`w-sQ?4FBZOA74m@+PGH&z;9+=-SVmeYe5Caf9n?jnEi%K<1t_JH%0WblU8 z7>WXZj-riP;$J>nCbN*VB0gR6{k7bGzZc}h2`CqBLjA{% z%JFp|NrN68TC^Ay z@%amMXL3nl`5}7&3v7}&QDwrzf%XX7>;Gf?}|jqt~CLTET2iH(CT#ojVwUw zu-1&JeXf0du({EfaVpJ?vFd6WdT__gA)F)Ln?TJnDk#y-<>366sl*hHW8UpVJw?`= zNFALr%~8iD8#Pz+6&9u|>fj~5l?MGTd51uc9LQRnC1`iUsT{`cWRLq;WZ)K((mNT$ zwwOxH4n25FPN)8x32!|dyiqKBvn*|m#g;?7ao6GJo*!sKP+{4nOCY3a8AT%Nej=}Xc30d;nPmS)i-DWT}*hwZ5txrQ5Ca?M}F>G#~zD2LN z>nWH;XbM7p6p$-v>nKDO?w#W)lD_UX*D#PVnBodLKo`p|wo9I}{m_nhg*LxDsaCK{ za?$fF$~IWl+|!-ao!vJ))5-^%ZYXV_2sWV!3q8zLRYk9-Wju`t9@1 zb)1(~qvmaP`CKQ7$($ffSTAx8aq$<4iJuTNFxWpLS~ISrZEeW8++Zdh#psIIJ+W%ve1Nli4^ewF#W9 zv7>wQl+s2c@9Bq)aIA|-qCF^(rP!c`Mz%xBSip*YiqMO}9iEJmzI0O#-cyj;Z$mRA z^+ft1@8%3Qab014w`m135AYQF7~RjClvGMOq5u8?JK1jttoDFtEZ8d zyRLoNU%@_@WeiqC0g6h+utU(AvOq;+|NNT=5kbt>2uOMp8Z5SV1F?q2^>mzIn>{~| zi(O9fHuFR6X+k?$W22&CMN~m9!s4wzGX{e1Vrh;F_g}wr8Z%bx8{iuW0C=SR-@a2o z-|-(>Cx3(DzrS5O=3keGlO7Nh=_ho6rU|jJVUQrN$W=mzWxojqG;@!shRzfebLw^+RJuuafs$6%3@K^Q74ABzy0MyeBP!IY4pdQEn83f*P zk}v>b;B^d-5OwNAKbtmZl2F(I(8%LdkqmNDbB>*L>*r|=NeurK_naS?dx)rDD=@(j z?lO^f*`o?R#*dnvZb!4#j*fl7E4-yMEVCry1WZ%hh(*aP`-1yv7fNqY z)Q^yFYn}^U$*mz7tNFwIG){d<@aCf3gGw@SA)b7k<-yl6bH0Qp!N)50x;_+8ljTTC zbB<$bU}>p#LRIr-(&9RCqTS80Dbw%=uginJ{X6HF#o$@G z8=sn|Cdh>E(B?Nh3O^)eWwvY%+k=V7AuPLw9yWiUiVyg9^GHhf)~l|#mFCjTgu52J z8B=E5cLjdcPrwD@a={zXBpW*N^eR}pkmDJ$Zo_HxWF+WssdehDKde$Ouqty6QXQMq zFt;xmDG2c}&BZCsh+Z?NfP%ka6e1hJv(qX`Kx*-e;;*aASD~^Gb~VBDh%57=7-Ah& zVw$T8hG_O0rwt!wjP2^_;$S+blcV@z9~cBa3t14a{S-Fe1CA7uGK9>}lUD?Cfu0bQ zUF-%82ldZpAx?l6X$Pv3c|WjD^MdP#?f-(Fr{W_!`<4syhj|OGfvNuPzbXdL^;Q zxsKZ4Um0iP(v?)MYk2C8TaIAx*!aGr(1?ZR#}kl5w7PAXh}TV&V)pdx!&(^9g`^7# zj+VA98OXDVkIhoCVUn3Z%bWU6VM=KB#xcHlI~f=G-@ln)hc9umDEh}xv47$@4?`;E z3#DDO{D=rKdC>h_^)A-PykxLlJaL%}zx+IJKus%av#*yD!aZneT_k!KYNYPFG;I%v%CLNK*RR>}>< zo>LFju|*jDb`(u4U-(_KJMS{1I3~=T>YS=JHpwbNx3|-yJ0t}co;FR2NUJa*wqeXC z-Zt#`&6$-%w`bFNS|P>2uIyJ|^}ch3NaKi2zc)PSsYmG)zZ9y1@B_>M2E;&F zDcqOmSogwvn|FdKN8*`vm^Uke_ReRUJ!wcZa0-PkoY9e~S^6}Z0LMBa-`|-|rB}6j ztpL{507(7+o0kSeA{k>hr+-Ww__gW&NF08b4a(BC1psPOfPJOz3n>MzIL`GoPS8zM zJ==#nFfsz$!ig-^s|)|Qv}7cJz->6Wkccx#J><9@oD!7j1r7V)_Thz;LjQ};@NA-K zZ;V-_fWf!SsRNeugZ5ZJo-{4>^{mYzMYtsU@rMjkvku0LzOr6)ka ze)TU6T3|7<8N=mpmeQqRNuROCNwVtV1R8uC0*ry>W3731-sQ4gQ?0&;c4NPfd+(Q|#qj*CFz0ggO~>0v=sRxfj|FGA0vqnjP=4?4w-!zxz4Mxq zuf!sZyNGs)d-_oa-?f`cv1+LoXsi#jpWlAVg|qM#9fARzMWOKj{qzlh?0;S2FgJGm zM|}JJ_!Hm1%Su%M3&pQK$Rpn^FTjN|q*liT!8Y_I{mlUvXopz50r~vlbh6^*@b^dY zWMcpmHhG^PNQ3!JTudRQ$d*$83y6Ch5v^S-G37+lYNlj;E>>JP>g;XZElVq!d!AmD zD`rwS^BwTmJOyphL@{t+pq@=4S?jzk-?(B)*CsRRHU2uK^7ld|A(cs?G{$s+(VE07 z{<%eBj6%7@;Y%_S{)h0Zpum&;<5xI-RHqO$e@OVgx@FuN(AUT&G|KMW?3&>&Zi@xq zDMv5WVlXWmkp(_K4SB2>>cB%){rdS+3HHI*k;3Rtq1>UsLF3!lAKjh2HYbZA*-TX( zD{+TcMnC842*9J#nQ1y11tXw3IOIAE6%)P&V{WHuaDt4r`=vU7E8%EM^Uv@VW}up~ z%u8HS!@sfO$I$lLS(r04hyWNDZg9M~P_I`++K&rYMcWppZSJ~kO7uGx);+M|;OjN( zwPi43Vc*z8&Guw#g3qV~`li-&%)N+V`1SJBLnY=1KVg_IA zBJboWbWN*~8N&DBcl*gF5M3^kZlMk7ceMJv0C^WgZ`M3ox&AQ9kED$FilTI%AxYjG z*Ue_uHc=s+ZD6uCFh{l!A4)9blaxBLv=o&-tdDt^(dQSvSQgB4pChv3vRt#9jMsFg z!8udwmjpixwhMyCrS8QGV`V`TwL$e+v^`(RayO^3oZbz;Z#9uY^Xs6g}ot z&(+XhB#1DIN;fl{N%7N$PFN!&lgF|}?v~9P@kkxynLF(Ju?r>xa5s?4?87l4a74bn zhK&9EF4kT(w)^t)iEX=Icso#eJJ7g?6;40i4a6k6hJ@VXW7*wg?yySzMHyi|Hh_-| zGsMKf@ui7g;fQb**4GW?ilW3&QTGhe5vS(L+Y2P3!T6hvTK9nP{X_45{l)ZM)p;Xh zvv44-CVBQge;y*M9MrXf?ZRl!6f~cMhh;I340RKty`#w4i*<|EiLx&F=kQ9_XpcT4 z^cH_Ils7@KqZ~?mR@*>udE=f5j>{={khe#Szh;ce5jv?=fS6Vah-r-fCAI$lEZ_Yf z?Y=vS{?85ZZ*oFe@)u=y=P%0c{k_nn`Ilrt{g#G1|50#zyUgYO*oN69b#$V4&vUn| zk1=I;DuJlghZ(jTyXn^yDug9PxfLeuLZkCO)rCbZlyW#$?B#XyX-kV`OjpAQktV|x zPnrc5R^wynY_>wyiJ;kfuvRjqZ22>HGub|^v)tFK7$cdJeBA-ImrBrA;MLJD;TA51 zIg#c<3)pkoTqo@1V30aYmD}jjdQa0TP;RW0j_~U-i}P6g>y!a&dI(L)BItz6_#85| zlsq+MQT-bW{V>bfqo8>*r>R~%I}#l@Kt-tOZY>y2DjV+xC*JLIBikTGn#vhRt%CGx zkZxiFV7#RICmWx`aG7ZXNd?vY?uX`(*-q5^?&A!t1LJ!p5-uY%l9f4FTt#=+ONWD}f8oUv8ksXC$043>NaW0sk%(}Us}Cy?%*Y^JA-j}=5;qhL zlZ0ve17Q>Q@zeSMc7-rR%AoZ2@++y3^b$Olm{%~4^XknFY`Vh!+jv|* zR&cy|tVQTLn+Wd+Kfy_<|8wqvtrV1XeXTaBV~OMn_IpU~Ym@I|3I19ZR||eq_m0bh zqIDu)tW*0s{p$K;Ck&Tk+t}cT&3L1kg-7w>@X50mwN=*$Qu_1=@SYl^1Fqu7y%>vW zOO_eWBQ$JQYmzLhP}+XmpT3}fwU2T0ga!+MeboGKIiG^9?LX&yK+Ft(*v9YjFF79= zwZOXL+*o7F*QmtC;?MwpXg5Q~-l7TWQD5DFAB+U@$I;b*(eG(rh2EHG2 zZvh&HrDsaS?5U$QLl@L=f#llv&CnvueC# z#K&w-fMzu-dFRLg*hnDA+N(N@VbjQ!qP1$@5q>zNl&`Wk2;$U;%utu`o!@VfWE-Ij zmxg5NJS_|!L4E)+5L!#y5MSLi*w-xc+u#D1(w+FZjJSU-ZEaesNz2B^DE?g5RFf=D zt2wnxirW(IuP2G(J)7VavP1{*Hxq-EwY5u$4SF*MHN0-k(`6sM@m%qdMob$vu zL99(-C8_b8YDZ5GWCJs@#=I{4W^+-m(|+zErN4)9%60=MCL}XZ6q)3T_(4pj7px<; zm})8zV;VE4-=G0dyi#{2kc}f06Upd2UfK{9O&mv?!&B?5AsUWOADQs+&`^)Ccx4bf?9!3K`eVQ&j@r~ zxYc}rw5~qsKoU5GeOZ}*9L)D{u2_gGqtCUd`AJkEF!#`bx!;-|)~HBFBY$#+dKI$= zKy{#J*QKqzHo2E2i0k{^__O4-xyzrZX8TOzI|M*AbI+Ur4mL{@b1_@ijHP8jtqqoL+vK2;wC&%<_b1XAe0y+G1eA&;jU)NEd|v!SRAcodv} zSDgBTO7EY?ks|*U)qqR=&Q5=wJNi3l|NZcAz1pj{3@A9v~ zr3<1qu@z8$$iV^vyqFZo*1?oP-%j7q%$VU{Klfj+{`|*(_}i(bp9SL|LFIQjuQqM7 z^AXj%dd~OifoeMUm485x-H6L9w+7h6wO)e=1#W`9A8Saz#N}XfG3>mbTrPvYU|K>s z;p5QZhNso0ry#$yhvjDMv4pRNVW)7Fy_;qEH7`7sSVcBYyZ278kB&C~qoxeS-+OxZR46rzI~0&D~}^~l%#YOY=NjUx8wU^Bwfu7GOgn)IR;Oeg+IStVYllfF|mxIr*o>$ zVhlnPKZCb%1ROqL87qFlviBG7Fu!p~B4-L!R735q=0JHme1HJD&d-gl9U~vngE2`Y zT}FTE@%relHQ9SKOPR^Q7o78%U@dDkBO9Tst$Ilsy=Zot@#@r_{Q26b1~W*d9@O`O z!8Ab_HBdwY+;RX<6bdye| z!AW?lXH@nEU267IBrYZcI;pa}!3Ves1*kUhXGFsBTGcpyDlw5V1P_g&2m|u=T0t<1 zsEYN;M(x)?mi7Kt69bC6aH^!B?+2ui)pGfXpz?LgXBASjhQ>~`BGxxVAJtN ze!OHs6+hWV9!ZLLWKv(~dc+y9Rg$7x9kA_~2fb0c4=-eRL z&vX%w;E^JVI;nTtXZ0DLqQMe zs0Bn`{wXo2rpy5k7NmWaR^_r7%sM_`H+x=sjvr#*l^wR!E3X!&ui86oXJsxRin3RX z`n0kSQj19)v46=_a={1`SA3+rh6d%cp?LY-BYy&GQkOs`>cNv`b9{;WQKJ1J=0#c3 z)11#Yc#XzRQ`IYH(eo)|4lrY3-?HML)d4GU*XcvfLH6N#5XdUv>eU%VX5J&ny3P6i zKQRLfxG`RdCsURyTO+-`m^*~&wj-M-;3RP{o zK>?S^!q$YQ&GPT>KTh3@+XNg!S+3R|MvXT9~#Oq&y=&!~eA=0Qoxv{2QV=6V-C zvrL!(#@683M>i^o`b(mE9b$D8oPL?1Azp3$0+07>is;Ac-@GU@c)nHqc2R^jKE{>? z#q9(SU!_lNogLz`f8`P)5uM`fyg&42k(7DKl}95Qqg$x36E=oE=BQ?~Fv9on^!o@O z$7q%3O@RIy0d=$A%0d58e}Au?#m4;^Wqz05G3ye2`~U@lx`*VcQVn0N%Twah%TcV;StEc8%W+r^^G>}AUVN3naoA6;@XCPM@qpys1wAY!c zwigzEy4mcZAED!=JD}J;`#HcBy+ZVZT8t~s!7#`jV2dqz>n~KB$`9djLRr#{3sGDP zlxmh=^25^snCC1>+icsXtxeOGfWx_?d>b9zw}t(7V89}Ga@a9s9$6;m=Y((naS_m1 zog&aNioLUSj6|3H&=GcbQE3rUm?7`XV@3?x$w)5(Y+leyIK+Slo}Er48US z`YA>xyV$RFPR&4ZK@YWr|QV!KOf_ zntR5d&*GNy>j;{i>M=8I>craZNu8xSc)wc;%PYuR#>K85)1diSl*3FKX0NNtSn*#F zx~d&SH-Ez^`&tKKSBf+N64{5jT{d#K;0P>nQIe}bjC%m`Yv{NhgHfP^oD)`MaKq99 zY5m1E^5|%bFuVjX3VWW|3f}>?M77w;xm9NqY&R)d3ZW%VTQB>kwrnfi7~okHLnw>A zjG8xxUd@?RN+*{iW8SjVQJuK3g6oP&Esc!vL=t)`xqWl@i0;Af|s3n z>=!ZjO)M$rWc-wj9yw-E#n zJezLQZjM`fe)jOU>7&t5pU!_ZA)o;u@LTEUKP~?+wxhp6Ah-EXTl!r(NA>)wLknH{ zzxUyz#J=*&QoG&d^VJNpL9CLJYRZNGw81WylUo`aZ%>OdvoV7fsKq8pr#T)s->R6d zf$g*wBGDoc+#!gBe&4Cs2%58ndTSij2}!?rrp)C|;4@WQ(6a*TUejbR z{Bq6t^=B9;#UY*BnK^jfmMH0cHu!M=3-V}~-1#Cmx`;}R$G&9C@7qR!9yd{d4mw)TnmxjhwOS!0g)^@?#HMk0WgWBUcWf^p#g(5A5Q`PYOE6QA z!~{lRw=Dj6ktN+ZWIXOD7@*EyP8-B;F~gMSIeM#Lu@PP6d6kgkJ*eFj<|5t?fO(z&%90q)#z}1y*zFX2gX7)*~Z1kdZBc= zb`~;zfthSP1`k!NFnkkzj85eI?t6N<=4zuS7PYA}W5!~K* zrmYMi!afE&*a8O{S0bIVzxPm{z{qI2diH+W3g_vMk;r7$v8Fw{brBk9 z1w$xC*+P4$qhX^HAQY6$8#p~D=>uV=JD_Ie&!MspqpU&4_4N7?TyjjOFNdA&fpGM8 z!{>>MG+n!iHQ!WFu&knrPIF~Le1u% z9^rTS%MkhqQ2~?id_uSlN_PN;pq@`}4H=^xZ22-s)Z+)lEm79#$@Ct#ONvKLMAXl@ z=?@AKfuaJoqJj&L4!JYAI>;RzgrQNHpj?aGFulh;nIwFmbC>H92Ge$KpNG$fv12D4=lehJrS^(`EqFlu2*3;jWX_6 zLy%RSd-Q43;JB4V*f1y6k`5Y8X^$IE(v#MYY*P*Voe-D6-%CMweCo@*h5Q#BQW7@; zbd)QclFa6C3zSA-NvFH9>HYiG4 z;sBasa9#J&&Nq?S<{szOxTzKZdSg1U zECqaH)BKrP$kV@r_AR6hs7saXN<^`#5vth_oHq( zWa*6l#BqIv@N{T8ddFwHM(s#yQucH%!mtTe%n$wzUE$3$pDl%@#&l>;DW3|`$Cd+# z^SFZdtR>R|Ze2*?F@HI>Rxc^G^$SgG1d?H|R9P-CekOF3*iHW@O1bT{mg@J=;BS7^ z;;OvL{6zO)`=0z*??h;LqiBBmHcZU3Q8oFGNtg5WP|2l`uf8x4X;CX7!Yn95ifmoI z*WKWtsChvjbxjsdjx3+dgOiKWFo-;oyX1FWvecRwJLcDwi`(SAor|6sY&r*^v*_pU z`M%eVSmudO?p9eZc&a7N|NLs&7-7d=LByTCGk;N4+AVsniJo~-rwW0Tg3vtVjr(@W zOse0rcZTrpWiJmuGQgBZzQ+{f<*IS*cnfeE=b2qqItPUnjhcZ1U9&<&!F z#3#-c4tJ#>iwh_26~gNUM*p~2?`U(KtKj-Z@`YJ+l(pQVa3O6$eUy4AiFUF4KAZzE zC+6{NoKn>(Aef~mXGumcZT-CneL_9=lyUtBsBeSWI+@aWW>M4o6xmZrg#=qv{6da^ zo^Hlh-BjnM@de$q3)uN{nJXCTo{FFh{Jm<{6j9i0dA)!cbxc@4zEduY929lgYU}MsZB4J9R(d48(Z#bgg`4 zA_%}^Tj;`3?|n-Th3f8JfeKU7J$@3gc0nz=JCYOy+O^mZQnasrF{!$!aM*Il(Zaw% zw3CB?dR*ATzy5YNRE)$AK3Y)z#-OSy$ipa)LJ^yg!22F;s~DY2VsKmnIuMG<{2`lZ zXAFZMmAk_&`pYbqet>uiWPEaW3Q8BfCOiE|Ij=NW#A%Y}gYn@8smV)TL4%h%9q}Jiz5jl#Ggc2f)1P>Lsz-ki_Oz-UyDQn{7Ekh?(I3)DT0ycng2`YJFH%*jRVELh!;5z$ zvEu!jadPtt;yFjwVw0Z-4@I$Flo1T(w>TPB2IQ(IQJJ9Au>A46*&yG&7q|CwUUDhN zv|2NsB6f!}qRX9^-E+hWW7b>KQ|VzxNf=|6?pQ+1EmKF(@y?2hx7O>7!wY=mQNiPs zSJEN4aX+F{YCSfsy}5LoC(_DEb$5BXJ|;n}>fvvdz@~Q`yS4?z6i{J@_J@OM8z zc>U)J{4N_*ByCstkvc_p_#*T1BX=~!t3pAe$@S?nHu-C6XHXEZg_jT zs)LqkQ1wP1-cO8k)M@4o;ArSmo+<}Z*Q@PD*0$=i3c`wv8hmd%(vFo@UVzh?MmH`T zH)$rPq#!WM-t}j&#vG}W*DhEOltV|^NOF(M6di)oo!F<7X z>(rF}KJnrNypKa{U&=5Ey_F$>>b1xp3L??D){>2==AHaM&cQ5Nr99_FTAnT^+_>2I zh2{{ELdNrIqNHPCF2mII3(2Pf2~81U@U;g@XP-{(fg|s$csEY>P~UoJLQo9iVKOS< z?udhBD|v{0Hc-TCX|*`_9#)T=Mr?GN<{_qQLZTs|!m2jAPHz*T<#>A+)m&!aidVE>WU2r2W^q%J2mrL6*E zb<<~|)gscR56jyy^tR6i8~CSW=!x$h$rF{9yZ)O^KhL;5jCF!_jyrgdU5mB13ffnI?D|PM1NAOVPHGFkRYKGlGSfGlV&YQa^r{nY5@;|2doIY1jIG zewQ(DfahUKafZ($nzD|wF>!^JJ%A~H=l`{E(D~5jN(`53gAAA;cqxzDj{a$$WlJ{BiC0EU(XcSxGm}Qfek$-Os zx8|uR{q~Ir7MrxDT4_LcUKDMs!osT~0yNd9b`(qhoBgY04m*nv*lx~CqB994)~6cv z7jj(hhV*-HVHOyTF!~1}YKEOc`yaeNJAAK~h<`mcx|&M%NJ0Su zLNNcIl1@cq2N%G!&%Y&|S7$7LB%Qy@iBHzHs~=}JF_wOI&xe#pwo0skW+N_6fSAWW ze4((#-~do<5zASvEL73{Amy}vp#S+6d?^?nZ`Sr$`%%l#{-fX|oM~_$(cfAA=Z)6z1Qcn)x;{}x>dCbj)}rj zvsMd^4JGwyud>=;6`5UX>*SF(D|?CJW$FoTjj4!WdJS*b719)QUWRhCto3yrr>N+j z&vmyA@1EIG?=#EhvqtU?TFS?>!YUk{gLMXV`O1L$WV?RUS8lTnm$Z3j6P2JuS@cge zKUuA3pb!1bg<&}9RB4XVKYg#)vno$;y;{V3p+R~tq{TO%Kl=_&qsj0pty~5CZjOVk zC|n>?)yE22X`2L1j`|%;o7*_4IUP5M{K>vGFMy5eewp*(>+*|kTD*~deQ|D~y*~(|A?#{Hvt&H%nTo`hFI1{^+ z$1S|gFlW5AZA*=bFWU^}+JdBcUg~%o-!iRluEO-L>{>SWaB8A@gmQVBD6{%PI(^o% zd~?AoYmfc7`*^g9tk;SBK-+Wf7S=bQK_ycrP!oJC2P`XQo0PNXwmO9C57Wv)QgMI6 zixTp^*Ff}TN{_J0o~DP+Q;vMd6^>AsmYd^$zurX*tSGMq1{F311Cdm_5fTf-jXTs&Fz260>Tm9^`gx14* zTCWL6J)G_A#!bb@_uGL5MMhp66vy2{0s>}Zis5jJWcr^spp^EU9o+2fT+pIEH~2|I zevwvaL!chO(pQUjv{nP;|=)Di;uP!n`ctTF`5d`B*jA6ZEPAB%z9Ln%Tsyaggsy1S8ICld6Jjm zR0!b8yuw9$&yeCL#Njlujqa&5Q%%8F|H7e?{)_q364j-B4IgsP^ zsjIU!Cv*M%e&@`vFgCkJ*i*iU#e`;hQ*>_^x$&XSsI`<@gLMZ(PRs13q#U1Qw;)Ia z>T}&R`Sv#g+^!(Cn{TDri8WB{!f4=a+KN)j@CRvr1~Mt6!96LuX+q+l$i60(Q@jns z;c%%E*bq7>u8396;JF&T`UKS(WG3KVag-jyYO^MgKcb*#1%ogk8I6K`aj)&S9zMor z8AAmQ(QIk`L@|uCwyWrSizQ~i72LKRY0tlNEn5yoW+?RgI`Qf^Ai+*om43*73gMDO z19PLV(oI`lJqCwLc<`2Btf8BX#xr&dlZfLdBGOVwMO6sDeFZ)&0b&^_ub{YHn98UjUc!dd_+fH^Oj zAsDkGSS({o?Y!AcK6<(PoLRHfd)RC{SL)~YWKy<^VVNR2-G7UVhGIM@2pVuA};F)7!e1~ClIc&TuI z#rA2y0Pp1zl{H-O8WIb7#JBE#YKvdkj~jhTI_q3dY7}SsfkJ~_sHPQ+tfm3ZEAT)p zTBb`Wcny!Mum1j`_J3i`ox=?*{E6)#3*TYd|m~&d=n*CM074~|m3Y*q=A9VFnLZiYuy z+}q^a?epQ``)Lr<)gtSiE~z`5_w|-X;|EuCPekN_=UYv2)0}8`cpMy2E z?ytdh&L(mZ?rYm2FnSC9nxRwgc<#~{Q8VxRqwDy^!Sk9um0?_lSda~ub4Zou47ISN z$;G<*G24vyb43&R=wnoT6EpkCeki!2!S=H-y?}&3{=VV_ABA589j2fli^IvOPF7w) zBYWpw&b9O{I~*;orE$#(#$Pnf=Os+a^&42EoC^L3$2KO^8->K!Oy4vjDuBF}#Poh) z)~7abh(rS?GkRm1LyOkGPS<&#2R}I6Wgu#dJyAWkt}jHm2Z;3*6^Hy1!IpAg zag=FHt$6k&WWRGdEE^Qy1`jtdIeFiQo4YFX$KEl*y=z&pAS)L@~mY~ zGWo$yqw*?#JYnfHZcat&L64_B+>ZdN)Pu$HOLD^~kMJUoT>PW9U17m{nK7#75ZmNG z`sZ3m23v%+knt`(VsuG1PMCqj4$EBD_RTMLRK?!W69t)p z<*{Hp@mOc)w4_qBM5E)`ZQ~a5u}K%Ysx7R1D3n4^4K+<+up4p*xv^dEF$h-qo#%2f?%R~OqI68_4?FtX zUisgIu*s%zOp73>OzeYW#PK_!`YNGfRYDUfE>MgXc4T?_?TW@0! z44Yz7`#I#L$Zh$MW~x0Pho7E-MV&Lh6LbVd&{i+-$5ieQyc2Ni*O15i{ZlZ3Wz1FGwd^s8*kV90QS;2+Fi~`(}`>s+@mmzB` z+z>(Zu|qBprmWT^YLQ(~Jftz*FsuEwm~PDSO*r}d@jguVR$Md}Q&qdcIn<%GwFc_Z z{Iy?V0~)Qi^v$^a^ox=;gBIF=28=bl-;|Fx>cvc$f|q7i(MxB_%e`dNPz* zm*v`hxoMEnRJB=fcfBz2tyPJ9itn70T6yBDGLWYA8kRw8lCFdFxwUxsH4k080kmtJfOgztDR?K!rY@m1D414?q#sPHv{6*mW)~UCl;x29JRxlOZSfwG!Mt;?p zkA0N?VkwMcAdtztJOR-T&DKC z1;CkYT*l8P8(qSuQtH}vW7O4&plx#hfT>ffVrlVL!AML;fN~yeVovl0B_{&D&s zR01W>9I0s6X-WPxgz3_K1)INYU%=?m;@;Rgh+IiG2@J1PTCAN{YnMJfQB(PDON!+& zm7omJGJ_`^s?OzP2!>YHGO+{N(kMWJ#8!+N+C|q{KQ!&?Q*R*JOJBx+3Za7WldEQo zPkGO6K=ilfX5@VJdnM^7O70qJUtNPu#kCp%v^N;g#{x|FdTw%!PVSLPt)6%w1MdX6 zHsUt+Xr?Z5d22ILeJTsC$9*U@JW~K#iCXz}Fx^&7_bWts4nrp!CxFu~;Rxc_T;@F^ z6X0AMDLtD`XQK-Y!5^tGm{2%8SSu@XV$-_TRP?qnG`x*J9_BiNV}dtpaYQPd2OOC5 zmHp59={c{VdF* zLtzyYK&^Y)XK1whb+7sf;l>Y~sSVyGy#EQ~K9* zXCa*F4_Jl_@+QHp2>4ZNXVP_@Dgpo#S({U5mH^N1I++E*iHY_uYia=vNrk*w&{e zM0cxwKk%{RE!{RcP-64GD3RUv#Q2w8ZF_=(`S`8|qt*B17K^BS>5AwbW1^;RQjd05 z{)lZPeYJ4HdUE{kq?242YOO=#bUTtd2?HVS@x)?l41}h)kuT9X9XKYYVC}pco#9c} zHqVQ2pV;Y;6^5ZblPB3*=SMZnrHgDRBtM@<7UL!QdMA&FbjWUd zm$pTxsOS0VwX_Fl5;;hXPe@icdX86us_SMw?iQ@)}JgxhR+tsar3ou?C_$6-f+gXVD?BS1T686Y1;{_EP@YBv*Z2u(}H7 zaazXZiu1mE#|2vzdtK;Y%%sErd7iz4`TA+lLT>);6LTN+qdJov@26ZD&t6#MU4|Sb z$sREM{q#`L)VNbZGWd!#OO*7(!7G2 zk&9HH2$&If2Y5D;bI@uzYB(1P=?G%#s6NzCyHmJnA?UGy|G^a)Zw0AJEBQ#2)127I z5UXkdwK9g)ObGXbpje;8EIdiXHiZ>$f7{u+gLz~1(l)z zt7FxU2t|&`w20p_G$E=AI^yrj?MQ-FX2N@Gp}^Wq9K;vTB=*5ze8yu7y4R|y(*V`; zV3v#3A>zp}h*8?ctjsX+bN%>X>W}^nMH_I2gP(OZhU^$b+@_5ujh za*+Nx3cOi?uS+Iq~`)xw%rHwr$v_3p%36Akz22c4y z%NFeG*?1353-ReN9M9%V%;$jF8tUImKBk;{u*JFp;`zQAqP4_jzp%vxkyn3ld9|*( zt<_D*w|ONVzL46a{`nDm(8vw0nEF%M=P+HkW)xs&KkIu^9Pi~2=iJHmxhi%(#|9#- z^zEXib_e*6pY>5NJT{rqgeXP@@U!~x5e_eME)qGOzW(WgDlQrGN^hu|#wK`-Ny^P` zt$Qe~9Z<`&Yy^W3vR?@T@90q_kJ)<1IK%GTpoImRwO2=J zqD51m10II^pyrNM3I=rxXPlu<`Pw~K4n$P=Tpej{Z;PEGto;E>&JT~{eupKf)W`}- zk873eRE%~%@0AH(F0ov6A*BNKT>3@abwUQWfNT0;3!_4%%MJ-9yo5~Ca{dgO@|G=< zyybwMKb9)#wp4Zw;c9iw$$H5i;+oHa#O(|B-5HX!H*bVk>&h;08$WIvgqde>FhoJi zZb6lKw@W~;KvlbLg8ZDfs~+&8p3}?ZeXHy8x9}Hv{dw~)ISX&x5%|fg4Gx^p?}$if z&Awk_`*z(^Q1xJ;3aa!;u|t#CeK^y-J8SmA?IyLc|5`gi`dJqHyvf!n@}&P04iw$5 zAwZq{Gm;txT6pgDgy_hj1o15VDo4Lkef!aV^BA_2VGw^ODf^8Cn2|wFl_|lU#1McR zNWhLxV{d0Wfw=`iwCqPQ#j}y*qmW!tJ9U^}5XO*|yfg$LqrL6f{Wt($9UPIk4&sih z8qg!PyeQCVXF^}(l=2^<>lVGH;Bm5x#Hq+}QJ!aGK2a7)+|}xyR_psH6@o04aO?N9 zHrJ?)_c3)3X>n4;>qhyG$1$fM?ODTtD+0rJ41dPj2E|1CU$09PN%eU^J1$nft&Yma z)eLPq{7GhjP(t9`Z=pfKZ=kDUN{%VA(7NHQuRKzu5%(1P+p@e~4|$_^O5j zkq86F^a{+uLRkve9fHDUv%tEWp0pBKYAn0bIXZyG7|AnN5x)jJk}E-GN9zTL$6Z9V zAv1|PK4v@<$dS~iwGLn`A-Yu#jvS3evF65d>}W@bb~rW6jA{0nE(o6;YHNnH2Oy?c z(``$rjIbc?%>)j(LRhY4ereclX|@^6`xW;^evh7+NV9pF=qwo|i=wx^5t_@V1>6&cq*xE?d#RoO0r|D_@$>|ty07li)b;_~cCS^jHN z|1SSvj@x3h-P`tk^&KNP>AU22CIRRg4wdg=xvWL)0`nA-a1tw$QjS{g`Oz&CattPz zl*L4$K@dfGzj=9QrIx=&n_|%OQqLi&IB7$Tt0^XzCkD?2ZRTv^HmEbw_S19-nZz7d zAGmAoOQwcp7d;3-)g>0w@)0n6g{QVxF-34BMju^{2#;-eg#GrRr0=b&|3PXqmBUE@RK^JWke6Eh6_<*!jz8M;E0eC}mB>d=qx&`oaRh zp0spXknmWPG%Py$6f|`yfS$`sfVuay z?Mj0ibU(l-e`Av#BV!;4(!~7C_lN?MO8&Iq>AnG9G*xZ@TGHiF6q-7sbK42b)T7fO zL~ws;z$OCK*#SJ@zIts3Pk{5M->-d{?4)lAGO8>s0Cf~)!Lo`!2FVZ4D!6}fxa==B zx9llqO|-AwN$v_49V9ydK&JRpWX}b>x*JI(vy?J%sFACm}s(`sP!ZHq64xOmZogPZ1F!ZcvL7$lA6sVt56g3?|Rax-+FRJ zUWQWRHcB;)Ar0NiRaP16)o1ZH*v(5{dI;S&T3~#)@I0G|lSlIuFVN8ze)){wuG&m4+?r4r(BZkx(3xETjH@tV!@v4q z={VIt4uDRz3o^ceTie{nsxD9-@^7@c7jP{nmmA>)u^sisj9!5`B$_8~ga%NTmeL5NNKgG{VO0&NIZv(o;0&k30^ZgH-lhUp zdPq=Tta5?g3Q$1IbNvCgw{E|T32hgp9tj?g`d|>`z?$r@pXMBi;;Hj#*C6RO_MtVE zNYEq&B5v(|Ol;6_0mBvxQFq@&0>_jqs(``Lm^ESL25nA;2 z27dD-Uz5BOip^3Dce@m8nhN*xxx3XT88aa7sMs3on3>2z3R9uWmZHN#Wi#Y9{xP+u z%gi?=5ZkW;s+X4}sEN^jTR!IE)-q#sn0zFN}X*E=~sMkGjRfAgDR;ljo z5ZCOzuW<(Nb2M&R{y;i51gE3BO`lp9bdWu#c={D~jnWMI7_ir;5h16W$^BzZVL?r7 zT#|Fx@^OkLxh_n0XE2Z>#7=dBqu9MHyD(>H{SbtFjkt`WY%Y+a-`sVSvTGgdh<@M~ zy9j2OiX#v{O{7xrgn7`0ZmtBLFS)&#>D%SL$j95?{F2cZTOZ@^-m^-C|HfnauYSqD z8c!i>1E>FvX~@s~%Yy!0cB@H!*C!Erz{mXbUFw5D)^eA#gc5D*d73D``#`S)QZ2G# zq%9?=YC6aK^x*LKgru{z(J1D_nQ*4r?xu)=FE4Lm320qu@a$X3Ym^O@8-{ZVvuS3& zxpt2Yb_5Hqo&j5vTlK>8+sb;cJIE)LIjPoK{S4Z_!ovt6qut)^ccfda0x>Bj9yb$q zu|FQ59@g=sUZ6f^0^xN$1Pltr+dfw zh!ak+`xs6zMqK2$ehZ)=>~ykL0Le)k$G0pe0UP{^oZ2OgTnPQ-;S(}P&`yv|fK>!y zl6ZhMrs040PDYe;SwJY5E*g92p%7SwWAG*bwa8BEM1|NLFb`Aelr!G7WCA&t#jE&ZEe@@3?q(sjF96nQzg4c)(T2YjN;^A|UXaLOopKu%;WQ z3`=@w+hr(moNBXhO>{-HzJ3%ztltkq8vix-+}@AIl^Ee;CJz^r;KAh~!YdaiMg?TI zSWA*srBOIy-Q`?@NlvjUhb8tvBYl4!MK-|#`VYN{G#w`B2+%Kh>9Q~v1iK(@*}BeH zagKl;@)MxMg7dD?h z5^E;4)P*7~TKSqNKn0(h3&pReu;zuw;EUh7dD`02P2oD#F>AOw&Bz*bbIzieivp)- zWMuI@fmOh5IVh{h=fiilTnH^?qy7xg-aRTof-mJ<$1#7zOk-DdaA+-o?62mk_6M{O+% zZ!7LvG`WwL)lyr!0VwpJyK+sTd#nwF4am;&+GF;2zc~$0*?Q9FxLKeKsJd{$YdEd7@08|z{cS^D;Y1`oqos^Ccy}Oy%|e=Dkd5Z`twK1@ZR1eH0|wy(;*bo zVyJ23#AD9GVvc~OH2A91rbgYC7n40t%e@c4oGOJ3JznbSfKXj|EL`yyuQc*->xc1S zGv7a5ijJ@C9Q(Q*WGm$xy{r{{X)sFd$M zIRftJ;BoozO86Xd0(a$`L+k?@ZWkla1I1R1+O#Q}==9BPo?u);wDT-A6Y4^r`O)B- zyMeQoC9!nyLCy+HGzQcu)Ivc(jeUF|o|abPmC{nzlz^R2XL!hU)CgEq$S?eCub(75 z9D^#RDHF=>12>a>eW#y_IO52|WWFKX2B6m3h3!hK52?0Vl*cy_jxD|hDp6BAM1biJ z*3q-a3FCE_Sd-476@p4XwMTD!;JxY21j_&y(Z(tpHESCCJ+1myCt!4b8T&d(;T!-a zogb7((CKn7-V*im;#~BJ7s&eI!lL=3!}kTLx&2K)v>1;%I;`ScqBvG)?THdpZAe%B zZA_DxrQ~|zE>6Eq^ak3$@l^mBfqpHW3sg*2s?~zS%)!b zb~@llbpVLVy3`{?D^boXkI(ghZbLHVjf}#A#;)k2DYTFnLb40_GnyJv&9YCXJL7kv zdEkf?k6}q2vJYM356qk%eH)7#V^j^VPOZ(EXpQP-$csqLvnZG;AmPZWazePw0J;}g ze&0vhw-#1!9S1cpR;b6p9^vgU=s$(1)^W2#N+}9j26c))-~9?|B>z_g)beGP&ieOg z)oG#souZyGuI3EBQDO#i#Qz}B(bV7=wx{{(J?uL-vPjnd|I zTjD>nN&tqluD*UEqyW-1w7DokeL^u_zkb-e9gm|(@=(9loJ9?%29lzR19ud4C(==T zW7c6>ymJm&~8vcCNzy zs*ecja~3+56&d}7N=IyT-dXk_4su5nI?1ey`WgLK()cxgWbycl?RDuSRHiU~X0@!; zujWwS!=@iLNoN_9($ByUc&x}2mFDh~l{v@=U$9+jj%6uRHmM^d)8;COINb-JJC#tf zzJ8z42p|=fnuA6uhs?xkEa0RG3wKG4S*=lWX`{`Zi2_O-Vo9%g& zpq*OaJWhG?UV#x*4?@?Y+8Yh%9_r;02($x?uZ{^?E zvHOB((XW3cYVnY|$$BOtYsZx8FJWcRkRD#3ADX2uFF5|hbgSq@!1@NRY6q1Lp=Y+8 zglbLS-T{(ixA*qr_Zbm9RRHE8P`|Nh;xgCnbQCfo-AKu;;6xl#%@ystf7|a;z%(r= zO6!|dDtVvdy(}rr73K7HuEnAg9W=}{LYLZcj55rDFV%9Bb;WhKXag5gZ;fOb(K9^6 z8PdmT?yR6VW~n5JB=T_Jy9{6uLn98An#{3es;wfo3@`(TtJn*N(*SZQgr;0}(UbQm|mc5Z%il$gc&J)3JYK_4~ z9ljJA`cZzBZ$am!&p!~Lk3zFcIS%+eCJ)$B0-(aoQsH>47_L>rb1^t-Dlj^Q$kTzW z0-9?xz;H4v=w^q`y-QI0S;`pBBKe~V&;|*>#_B^1pd{+vnkt8*Ms?4Qw1ilLcp#@i zuyCM?Wg=WekhmLMr|@x9JBgaAAQRO1srZNcC<7lO?x`b0cw_>XZqtbs1*rFN9L3~+ zQ3lh(xd0X?GfMw*Bu`hca+*AB3Ha597wR-{ZmniBF$6{HSwTEO zf%}oqd~UobyPzo@E0G#wlIRpPEcg6+ZZz9I#=ZorFL$Zydj%pl;fYffQ4;(XNJ*6C z#x&1yf}Gc=_BI$WKMOdH?LHjXs-@!SJW>89aXwqwL4h%)QRC2&wC8lPb{rXOSP7Q* zv84j@WfG4QIrf1<*0QxY-#zp;L*%+x1JyaLfto7ENR@T#bNE#{+9cm5Xwve5-=HAZ z?wlD7yhaeVA5O=Q4!Jc7fqaK=t*3j)pjYru#XN8p5BlovIfpx(ksL;eM0swt=II|L zYm{!3^XR%w%=D(6os!D?Yqhh+P0zaBiY#&UY=~!w>X_xl8A|D#5Bf&8l+4p-hHUpn zZY!5F^QO)m6f`T5nR6OX5O}H7VjSuIlXM7-zJ-G37#T}ct0coB%?OYK2mqT&H=vSl z@TiH0Hi@(!`sBd5eRzNIEH*;^p>bWUGE5vOO~vh&@khPZdhw%fL95sycNbeW3{*D; zYwZe86pdcFR1_j+OsPybj)<}T>-(g94M#cX`pvQKz%CEo&q?`bVT}T>2-o7}$6rxD zjBqyj&8yk3mWWvg&~e?2qt`R+rUc>`7tyo?@NL6V1+}7HnX2cw9ti3!t_-+!OX6{` zV_{enH;52n1?A=)JTOZQ&l9LJn zdCgAp5^*KG3Z5HY^55sHSkMCzl_|1u(KB6Fl9lNfuwrR zh3o*02xy368a;jp^IA!>bLGt2C>Rp~KD}ye=PNLF^>6$bvdK0F8nkU-P_F*nWkBXO z;8P5Tk@^F8c#9zh1u>=^NTD|05MwfrC*kyPOHZKKefB6)8TlB^AHuy{oJCRiUOZu~ z0J-xaE;hRXuv4sf$R&)k-V5Eu&_`#919ijtSW?W{)xpubB|U@(ag|I&0qRDG7l()$ zS@uXF(52In>kQ^+lUeh5C<|(viZGRxqqm#YbwHvk`IVC}8^h6J)(96Chc}&On7+~G zb^&o_A0|ZSA-N;?8=5G+v+=^Bnq8csdj1-4da4O|5{nmduNUAF*VApe!pdqt<92S~V<>;A_k>!;7Sri@nnob>7WYCG^^Ef!4X15z0pX)~a;;kM z@U~xr4J|{-^OZSU%FwqXkE$_o|FZHiFQa>Fz3Dlp^|mE$G4p${E|>Bo|zSf_39MVD(pmHG;3Ss6W>eaAl1^cvV6TgN^D317l;PX#o9Q`MfmYBsbv zxP1^+KWoVulH|1N$%nk#fnqEt?XJj)3mt0cEcG0@r>($(wJmbh#N?j}r9Axei6`}b zKGV0;N?C@j4OKkflE5o1~1G0057SiVsv^()EWT4Kx2L^ zyiaB5m&~VQ5JF1#?V!{S%C145OfOP7``K^y#HM{_{kLE-K#+E1;|)U}sJ%)h)dWvVk{gr#>t_dU6Qz{#^F#dD72W4jPKSpG<6Ucf`eXDv4b;tK! zk~YAyPRp){)1y_UA^2VxuJ1p}v{a+oew!4Qp8e>KVSQkYl8v2_Lo>695&L`&!igpC zxT-;WN~BR_CjU~7i8=Q4XvDC+_Pl^U3tTU1MCyE_w{daNxuBc%3;>FN*4$W%B9POT zD$o9&L7VzH41V7$kN?5G6njEle*WU~Cz&<8sUslAClk5>1y!CT1Q^`~EDNZ184-i) zi8;+08VXtHRoG96T7oQaZ_N=#5WlSbUW*w`@}hgiD0(2)Ob`Ah37JwBN?uX-H~%Xx zF|%L%PP_wI;yZ_g`sb|J{U;!vDu-?U=kA{E(lJdY@N3c`?*SXM=Ua9dya<0Q=*jCE zPqyasbI)=_`Bwpfq(4cf+Uqy9em2$RRkHW+spXhDF|=56 zC9yVZb4TL(Au!X`NIvs?B>jVX(cVW+snw5zGs+q|B|ZP?;g)KA&amq@?LIC#W(i28 z7M`@M8f%U$TF3FE9MT;;dUEcfRK^(n>#7XtUi0^ibmfvPCj(IyQ5lj*`+%~$H0aVr zI+Qb(*I^y@)+xFGyr~s2qx~IE#d>u8w*aT6DQKu3W@LBmoO7=NdO8wpu1h4>_nmJTDsJ|bJexRnnIoqdPVv}|4Bu&s|S*+KFyh=$)-T= z<0X|RsEOzHEN!Qw;Z&a3$dNQFI@+nXwRFD${MGUap`sY@E&*r%m>v^MEowX8G{qua zn;b)%W!ADy@-?}Z*RCr+t(I4HXXzGAq_DA;#mUyRq7>m(bat@JMPCL=EZ=^FYFU`- zT;(0L?F;;H^Z>@jpWA(%Kq~>A zpg4k8RMm1JT&dUnVr@{nR_meYp@v2b$*uh&*f5Zd_{hwMQACyW4&M z{|Kf2|1gmm+1Z*}nEeYAnY{R4QPY2u|8Z%&f6GMn&!sJF?5+Plua5!%00992YWc32 z=?8e*{oT1(M-BkM^uMkzV`uz5oIvQmK1SmEh5xM|#=rZokNUg3P?xdWXGQ4#&dm@w zCe}k2j4xgg%Cwr#+IE_IGCArSuO-yb$tyQV%zf!f7E(;xn^VJOx(5J38<%7hY$fIO5(#l0OmErdTWElAF{^E<0qZt-jwM+zWq|B}dvk1IH~e_8>C;(RiJ_ zVq^$g5-rj2rX=-yrKv$Rc@J5B%JX2!49x45R@OvQ+Z+UOyC^r#FcFl6dx@a-RbpjC zOcLVtkr93%(&kHJ{8G3^2jzBb&p!Xs_}x6cpI3NU{(Avd0eV#cZd#<&lUosW5M$ln@H^?>pkBio zy>OLR7V9hId`Okolgg><b|bfWarM!AMA0nP zwWX3M`dwy3S~8Ac6X{6ST6a}w;}8wP)JtX}n4a^slgaJG?mP~nm^aK9Q1ZC~#K@&=90sAk@ae@l@Hdu*!n?pGwke!?^$>CwV?z6I?pq3gFA@!siJ~ zbz@5A+^s<;k6f^uDIE!Hs2~?H6-w--JE$5HA(V?=MT`J|#i+2!pUZl}x8C5Wo-eEl zekdMxomvWEuf;~&WY&S(`vwgk>s_;)I_u|{tqG+vF?6_gNXP#CVv=og$O3`9E3Hd$F1rB=o!Y1P@@z6$OOSkMmr)=6eA~ zKS+S;t?kK5IPp0Z^ln{xv^)4XiJ$tV_w174?vkV?c3nR&gNDLQJEXK(s2CG$7#v;j zr+DG|+~!AmgNfhwY)M9+V?0ns!PALGa@mm2HT{ zn*5Glq|D>gh!NdA!=&LBMyMg?+}IF5UU4b*c8{-Pj<@hcE`!=Z+C80YO(UaN+931^ zJp6U*B%xO*LsM(wv^RhS&@&LrT9z12fu4Nb9L{`JPuj^;u;;gw5+vgM7 zf`&>LY0xjESXPd$Iy<*lYIN4D`PoyGQ#G8hytor@z^6Pm0J4x2 zEuF(PyV-dtIv2qeuk&6~)M4#d96vgg1EOut{-ij#2j!c`K6Qg*EPSWOv7A^=90Q}@ zTBtE7YKngd8q;}yQxa;<7yKOyADk^laon`6Rm2GD>O+%i$lA#8-c?^glOol!_3H3- z=82VlTDV^I>Ge+-ysI!ybksd7-Yo1Oz6TGhCurx#cfue-18{Kj-kuGsHm1d$4Nlie z$J)EkR|^FpVq1YB-Ui;dDgYwd=xhfgI;sYK@QT9?A#~Y~KC(+J!3u?SXD8a z_TT6_T;Yz``@by)6Y+oIF8ilN`U}|em$CS7hN6y<{l9XCf0t7l|F5CY_tC(F48A`< z2eOzggl66>wD4kZ%(wYfN-PB=@uzC#tA`{kSv;~Z5brl=APJJ$VYkOS9*g^1_!G#Y zb>2Rh9X!cVU~}NndI#09uZyp%uc(~N6bR=YdG-QlFM0G{V$ZIOgsQI@U06N$&RE_C(yyo>NLwAK-^qfiPl z(5h|mX7yTxAq)soFO~u=HmXa|qD4Fd!Y^A*0a36Z2BpD1P1C{2Yzl-@so9HZsJ!r! zi=L~l1)q)Gu-`|@Yl~LVZsqkERY_1^K(06K`hg^*4S?Po9Dh!fV(wr|3Km7MKqWn4Eo1%sw!Pv))bg+~Xz@8kc z*~%(YZoiupV@01K>)v_WEzCC6xfEhaY!B9~G;vq#-!4(mX6ueD`#oO^x0L;BWg`?v z2(?&qUL1jyau|P!u~rP7f>IKnWGGJwkL`qEOQ>LI7Z)pHFr9mkz98D!rS5Q1=m>3> zUH-d!s7LxNe@ZlY*2aRSZ*wqP1wP9p*{U2eDJ|!u`B}~cRZSRN913Wfb}QR)1;i^C zz-lY2sFw7Ay@GUBcgp|$_0-@`Uc}VC8t{saqC$mlfZfx)b_Iebue`^_F z9^K2>I>GPy&|#dMfhS)s_V=aXnI2n}-R%C%B0t33UW!>;M9a3P9X&JjZrG$=V9$(A z%(mV+51i&$wN7Qo1r}M`r@5GukHsJrxW-c9J|W=9baCq{j89yat^qZQ(Kl^9f*AdvXEz)w$|z zK}ov6*i4v|{B+M({O#Te2-=@XlcPL}5yo*E+SPpo(Fhy`B|Vmt9`kUFXJ!8F7Rb*mi3ZsdA5&}9{ALlsvLBFxO-V^FdA?F?N$ zq^6j)-@j>8ROXZ_#FTDviOtO}Eic$Ta11rW?16TDRmFO)p+?8EnE}F*rF4Rgib4S@ zrD%G`W6DXOnVdrLm;70j{A|DUp2F1Z>1sPBtGCf!2-|RMT5y_0<&CIQ6ND1Ww@*fi zj31aQ(8pdLjTcmw5S4vEeyL3}&1YB7K^_F=?pX-&h=;45x^X`D)Eeab2oF2TJ9tT< zA7b131G!}i{UmheX&{EOeb8nh-aLU;$$iH#KbvB|k!5t9av0W6x(VsMy85sS4)9@C zx&yUduo{PF@xv&EzhT>I#Qq#Tm^rpya%UwDf1kaQo-c&RCK2QGn`By0zE4)@Wdw3E zpMVdn)@sN?+$0g;l&wMhxo0GETo1UO}c0fAzvn4w7qXh7LY z6k+E!Pjr?Q5~N%`nyAmj6G#xdggzgF9<1=H!UE!ZrDM5V*%}yGs`&;z{R_q)em#Gi zUy~Bi>#zG=ZG->j=lJ&^+kY_@|K#ZTPeU&IH2yLgf0sT9{of#4n9!?$uAni>kX>-~ zlY(Seuro01^-Twr%2`?Iut!x_@RheU_bVK@x}d`fzQ zDb;ZgjpPu^oQGtlftDJU0Gs3?{^QjK2@CC6tGkduRXh$#D?Fv4*Swb+B%>^G$ws#K z*otW}&M?Z2=1kD7deQ_n84?&V5iOH8umTT=IuxHO7B^W;4p)$Kh$%9i&oXG=3821V zQEEV7z(O(m=L$NVfV{XyLf9Q1k!T#{u4^=dgzu@jK90EcwbT48S@0Q_&@QPh0Laa} z%b@D(GQZn6Z2>eBpq4$%MY&Qut`MFcDww73n+lg19LyK>@@{}(wjDfkljx7JBsgCd z`IfbN`kM69V0f@TjDZ}8uNf~&9EgVCPQzsL&oufb15Sc1zT4?YUp+@=z0S@~mzFeo zy1dFS0e&9ci_c|Md=fiSM13bk{ z`7R!Qqo$qz!+4VaaI7|Q|G-YejQ(}30lVlBT*)?1_5GKTHJqifHb2^>D7~JV$6K6@ z2xgb{_#_}70BHm!RSg7r5)H>i)K4%TrypHZ)NCagCTc`SEg}O_98%ROs?zoUO72#Mz|N%ScNM74yQ| zy!l8absO3vzh3;)c44!>H*kNE<$JtYc~z9p->6Jiwg-!gzPI)t7l!VC+**5kYYQWT ze}E+ZgM0P&8}fgiePRXvQK=Sr3fVG9bxDFoLErloLM?}|V1Xr_M3})Z(A8OAkxv6f z82|K@1u5Z@gw+pDLn6VFAC7}0R?u}8V|!LvJ1Ne4Jrg_Dj%v0|8a0}c&6qADsb+;j zL2VQatl%rox|M>pGj!YmVTFF_0$MkQUDIw)FAEHMKGj5R;-3y7)Y#WTk0*@++V6{a zczo0GNxS-P@eWW`qBrN|%PaSf9xZ1^5W$Y&s-;%+;FpcKT>cfTOJ!STi5LT^y3q`UoC^ zBr4Q_`WcR=4JioJSifBqgaV6TYMfqyA@&-MC_}{_(-YHnb=rnPqU5vmbQDlZjbvj= zdN}3|6>x0w`?yWH@RwAeLrlsm`$@>nP8y$DCwD;KAk3zQV0F+2mHwH zm!*G>T@}jeHi{1BLL06+QlZ{D@=f92FU_-pf@T?)S{G@DC0OZf9*SqbGQ1_zzibO} zzweg4d^m!iX$XzzJtFT?S_9YXRxT0xQk^^p`Dhcd2nIZDS|)Lyf9$y0gY+6;VaQ6& zQ0aCRJ9gr9VH_=|!t{G1^&ms2(C2{JgNlZ!nDWy>@)qYfzv2RrbzI)E8c*P%IZ`uS zxn1iz`f!X_2!?2fXakUT^=8&4IT9Nb7cnehlNck*lY^~Bu(f}#Kq*-s@8kxi!EH`% zejmf#V^|j5fZ?3w@c&IoyPNTzy85&^2 z!wChSsD>!Ms+H%D1tyKQjfDu2A(#l%J`7pH;(Xs8xJ=LZ<0Clk@s%9O>+p$ky}k=c zpD7PfHzM=U*~%{2LF?zGXA=4+TQ*oBGTb0Bq)ZCH)48~L3s1npHtC;g2fmv8uh{W? z6CuxkM~6}^K6#{m8`H4w`|$5!RR8xrI6K-|e*>uggNoQG`|C>lU3RC*{9`Co=#}_8 zxSL#5u%dFaIO^VfNqKpRrc1jDk9*_v-cr5ND4^u9-)KbAGx1{|B~sYt)Fjs(FS}9a zzzcpCx%ik*D0TLBVzp|6f=ep2?(E0vZvQSI4K*R^Ys{6ss7MQ8qM<1MO=`lW$D%dn zl)|*VPEpE^B-BW_whNTF8IvMXt>uAf;a3_> z<&Vbir$rPrvkgj3Xt9&X#nciGaqR74YFJZvjWGj}-o9fJCFMI4!<94r7iz**%HlWT z&wIx(m@)Zk7aXh4;TAB02s$p-%@L3qUdv5iR~THD~* zgEcxSaXJYZU42d@DCVbKTTmw^+LA>qUo!?!&}9)?Jb_@Gf~{Y>OhLwDJA(>T<*88T z>Y2$`$e$b{M&>ZRu*x^%F}~D7M{hM@<`?qm&~uqK;eCx}#iqSS;?q_XeZA>$f7(63 z!bn(V<%Anc0H$mgT#!8+`U5Qf#0MxQiNA5829X^j>)!}S&n{-ZHeS8M4RG>FzJpb2 z9`b$iX5>@0o(NV{WY@G>5e+C^J$Q`1@x8DWi|CVXuhpQtkCr6iUJUfkdbF0ts`rF~ zvlGThjyxF5=V~yoS7eNEb!mX(us{MQ90nS#H=%VzL;SMey9VzE ze~&G#mX47`MD9XEa=o|PWs>ngx8^wppxfMBmYKgZ+(+QuZhq!en+wT2D;2Jt(9n^8 zJM7|Yw6}NfiHNXHu(O;gJr#nwxSrbPdhof1 zc~g7B*9@AZWB1@CkJzI{dk%ZYeaqgK00&6BeKYVd^1eKZ*3CF7TTH`D`DY9JEu9?Y zH_Y^>y#^mfInD-a;9hO97la(+UF^Nm>F8lyru0?Z9HH&gHQ1Xg5#YilCUeL-&r_HD zf~X)%&OSE(>h@kzexQ&()Goqoxh#m7Fj2pYk1v@0cU^A zlLG(3puP;-yOs2%S(~rv=py~^`)#IwwTdfW)7Es~R&o13f+_#01^%xG_8+tWz~f(9 z;P0|qx&NE|66QN$&xg?S8w}`+KVB#eO-I2Q`|y$(26%rqR#k+Ngu{aIe4AXVA%{~o z7Su6Zg7@@>M-uh$r#h0jN~yX*Pk}PF3Uo`e8u_yhq8AL(rioChYMY17rTru+qP}nw#_cvuIjRF+qP|V+5GC9Gjs2qo;efW z?~gY!cI=3~<6SFPX70=(%N9z}WsC1|joNh)+ z#vl@ObAGXVVSjnveYxg3X?1DH78E@QfwkQ^1|XrUN6=xCC~Rowf5YH$jxFbP*O|;S z?}iM<>cAnqLaXvjSo8nM$zdl&cs=$r`=v3xB+wR<5*Rd1S_d7HFp40@0JcMTbPU#O zq7spWWkrBYE-mY=;r0jH1AjYB9k@DMs_%YGrGOE1`XPy z{swg8Sxmcmd@xSk+ZZAckP7?0J2sJxU$I@3<11IrL#J?t>lo=u^&y;SlRMW)0r+g0 zE(}{spA_4+$ZGa^AF~gan^`A0xFBxG_YVx{!o7nB#(ScEAWP+?B4xWnT5F8`@Yh=(Gr``gWm8T%eW?@dKZ;eh{uG9fF4vk!t zi8ZD@WOmM~8Fl?*@gUrT)>t{KaE^_f=utXUI=)eItHPVprjtIGBGPMUr=3z-qxQc4 zj`baYGayC&R8JC!zau06hkE`G*7t9;6CR88&n)5ZvR!fX4{Fvnj7x3{hgd*WC3)SL2Ys2p=ZIN2tt(v#!F?RY{qpyeqYPCM>m1;v;DZ4zvy&- zQkG-D@Z-L&S^?xCfI|5b4+ZFmusk-@*HpsFAQWgq`K<2b%El{4FTNV2z;>ArJkwPY z%_*2UqvbbCdDZ-8+6o^LU8vQw$?t-#;4ID3Iu026Zg?1Fjd zLzDMJ27Wuc7L7af!8`w26et%$er@moo~e&J-4bqwWo$=OA+mgJ&{CLZlTjnpqpY1i zW{gU)cCj^9muV&kuFirmJHzmDWXF-c$c2Hu*;L zgWE!u0{~20;-@dHTX_oaCCW656fY`Y3w;uaN2zRDz;`=`{3{yt#C`@2mnDaB4z(oO zj9q~-!3~^xZfbj3mPb7V7>6nIaZJBP!-#yoHrTZY2G+Kc-N%K*OK&&Wk5`4Hd@LC@ z=O;Dl-bPcp78!5VU)W{#>>GsF@~JHQK|_3p6`!mJ(2XPho6}NLFsB=+cYTN_HW-2X z(#hbftG@K)W0GCPN$u>JwaG>X0zBiy9AVeQ=8!MzfIW?7i_e;74>SL!gAV`?Zcd+p zQv2uR-2coD{0|-cqx1BSkpO?Af;wA&so?K&{B!2|+Gj-*h}XizZu3|N^01l z@c9hJG8sw2lV5l9cL^*FV(O10S*(bmoH-~Op{N~6O%clM%qs$RO{Mlqk)}r{I5fTleZE68rGS$J((V>?(q14e2Q5dR|c0 zt|5X>nXs?>aDw;xVSs&9UtX07Kp5Fofpb11A{$IB$Ge^@`}mpMjT7GSij_5c)UEAU zZ$eqPztxU=c3pab_weM;Loua!K+zV;`c9Ud5d^lgPJrcU5%0@|4rSgZN6qGpWoRi7 z**PXImV$$rpX3b&NCa%U?CC|g&93L+sNv!W_Yqb8vP8Z$5 z^ma+4ObC19@S?Pi9xfBdaLqk>3IXIYX$fb3y*fZ21r%x(X~WsHmrBAjpd+yKbrY>b zIC)*}0HEqj$o8EC*zO}vD>hG>Q9*sK9nu@$WtaJzo2v_l^*c>lA>AQZCL3UJWrlh{ zD#q*UFN8`t-FCKosC_FF72xe?4B}d~Kl+e}>(PqEkgV+Va<7p%cj8%Jz4NZ?*!c$} z`Uyg2OxR3=7I}LJ`X_=>W6c}iRL!JY4eTa0oJ9JP6`j>?u*fc0QgOenzVyjt@+wTU_6mgeqxYMGgLRk4+``XXTr zlHej$xzM9d&_05c+3M{x&z^~h8_i7wN4zD}4+bw>pQc+ut%4}z18r(mU7S?}TzFg-}K#>RwwsC!Ohf{wQWU!OG_4X$pf4^$9aXj9eH*3`aQ z*D{65Iz}Yahyg2LMSkU3^eYe421$UKE<-7+*~?hC%|{)QP%vwhpNVG7t*O`eW>>g} zIC~G*c**qeOYM^eoHxQZD`DfUVji1N>zsp{N2c3JLJgP|=h4j*1U^A}J`|w?JEPCF z7_79}f@cOxolj#a$+L4SR=rLY)E>ZTRPt+|zXp;@k7TnQ{ztAXm{s>Bu=oK?ZD&rZ zG5pz+b5xNgOYqscCjcoM+%q*?u!_slSN(E|f;dZ^^7yWBUXlo<-BR_UVj2raG7f?W zzZzscMo4}nGdHba;&F@8{3wbL+_)GIIgdDYrZ_w;{_SeFYs1H#n!N7`Ui<$0L~>P%^Bh=5@hwoZa##tf5#-w^;`Y*6kHKu)Wj97DuF5!G+Y{sOJBsw` zoAf9d)`ghzNG)VS)oIlq=jw>!b~CPpE(@-eZZ)zU<%h8A?zbq7Zxmva{jhC>-M zB*C<7h#isQ!jQZs%>f{X4F16*R>`~=2TsL$EpO`2KIpQh*|w~>X_|R z05{k2Cj3v@Nb59M1+|YJP*LjRM}Z3E3rib4B_t5%ENe%JoU0P`LnSz_us(bNg-k%- z>0znQ>}EKLBt+VUJ8$EI_O%~_=zs~6mn6F+zKY#O%E+o)X1h528kN#X?$-zvY*(r~0BV_Eg`6MQcUtqYA3U88z#d;ll~z z{PSEK*_wQ2zLJ|T@l7;+6`&{qlv~?|yK}3vaoGUqbv!M`n3xgm9SE62FD(80#N%`= zgcR`3e)NJxJGOoC_r2|tQ^vapW%|3U8;8{VuLhT1TPJ-JY^}_Pr!OpPg3Vj6m4|{_TDxDY^3NGK^NG?`e1~!ZqA_*tNpH}s3-IQOOL>?L#H;NxvQjnmS%{Qey zL~b5`Ow33s){6O;>K7pOGL|xTsNa`l#fpV*wkvi=rqRH+3y*Mzv!IdgfaSC^nB{Agl(1IZ>*(NGVPT-f zmDQYdE`styf1BwglY{N1zZf682`|i9#!r@Z({IwLCJy`fmO6LSr&>X!{T-&0fp^Wb(MBiNymx5Tt~w~#yRBMJ9~ zB^kXuC#z;8AQ7-I16QPV7?H#_WCX6T*&=10g%a-kKvmnF=y0cPxD;nx<13W?PE;RD z3@GQq?j$UqR}NUE6stHtWCEPn{K!-uOCbNefvjQai)s9QA?ne4Y~hmP3&?SZk{}uh zO4b~4(Qd*k%P}9`Mw@8zo)OEK8q}nJs|RH(w{ztAi?}>e(N8H$)YQ~hd4vd*ZgYmV zu42_fsz0-iiiES>M% zE9-cD{E0sNUkG2xJzM|Ur>fn3CIcA$TiHPJFXnqWL;F8#GWLI?b5mD;>D=$KT|v_P zGcnjsedhhm zA#;!}oVyy7ceOw#@Jg5>y|KI1&s;I=z^HZEs&CrlbQ{&(C}2u3M2Ut}sw{SCUa}}} ztBcSc_I#RE?=?^gY;=0vk%I>lA*!g&pBDSwf*D}IENX2RkgS}L4#d{2>h=W1j7XCm zV$0J0xLgJ%p?UE>0ll_4Vk>|GyNt=??NniPFnA2X*jQk3)poAcan9df63u)xFp3~a9!=Zx}bX_~VfnmD}_>^Z`#`U{JD z+iT63GdvEoc>;79-s3+93O@LqEx$@9TS(7ED4T~~Xu4rpBM5uE!=I!oG?hqZX+&%u zEMG6b`i}{~Do;~e%V1rXag$r2n(fLP0zOr|os>4!4MGj!wJ5qgx7a^U0?t)_otKk3 zWH^5QZL&(Cio4~{PmMzSG+zICJmEj$s{e}z{Wplu@A~u4>vDzGJy>*V`59Ethd zQxK3M&Pu4&5MC^&_j0O2Gb}hV%nYVv1enN`8(urFdDJ6ff=X zr#z*KioW+`!kD_jUNUsXM7$v$=oL?&-{B_a^<_bI5rKTzh-hBD^kCc%S$56HN+oXN zX$8Pa$jn6B$+(iuaCDi6QU}zbs8WG3Djt)RnFl^we>=-}; zR8e9V7cG1)aaS|0;njKlV2iFc;H7cAK6-EH;m0L!&_+#_S3;&stOXBxr;_uD(w)w| zP{#f-xY+F`c&AtH(#T&BwY9!eR_NTGaI&5ZD10M);ep(hQH#lxHfKNG z)@PrgZY8YElaBo}c{qWwLk8Y)+dKQV6jc%&tFi4o>qEx4*KgKErkv6@_)`}oKjUoL z|7utJk3iy}Y?0*K?zsrbtNh|-)k)IDSc0pgsqsg=Z91}_u^OX{w?Ewa9zsxVq zVIwdqo^Jq3(1ge{rU7_)ZH{3`^!5`|6Mj>t+pwul7|XVtrqy+jO?a}a)=+TNrwByX zJy|gsj3*rxOFA2N81X(nZ|2eO%(aWMs+K!b^s1lP2GeZq2rbYo6$8+Y3+3P;ImhHk zlPujUp0L_?NU@0O@+|_ zAg``R57nu5W*hkBRIuX1PJa_VwY!I7ni9a*)Na6!y130F-lBL?X{YB4Yx~q%EQ?ut z?xhG=Yz!T3p^>t*En#{9qZ?v+J9SgGj5+YD+OI91!ri=J|6NudSZ#=5bTH$F_i<1d zw_u6yxuf1_a#0M(NFGC)8cssZ+#(~^adH_w9%$bv+%0*bUkB8( z{`*u>p8c$%P|5KZS~tLBs)$5Z1D6C$*Y+Xy=6hrv2Lwih>4 z?>n6?wN4hN5mBN++f@_3eH?06t9a`O>u4xv_qz!vprZCE*H4$9B)TRVn^{L7x(os< zjVNH)L8@lhjMlZ4gUV`f=5DsX>S~eLM3x zri;Ug=v7=@xCWgqj4lRo=f=ya-+vuT z-BAK-RmCoi?*3do&T3o-H`?p=G%miL)hsAFRG!V8J_nyFK{N#kZsYEg-_C2K_;Nvi zh9O^M#4V^#Wv&DC?1SZylw_vXO^?c}D7>x;mg@w7$OL~W;6!T|&F#Kx4-n4bc zNU$*83vx|{{K`sJZvPw5e)Ohe5lM^3sna#!J7ao9aUA(ut!2mVZ{$22eksfMpNm@a zxv2jY{qnh-f8k&M0crY^p6CBOvR)Z5D)$E!X!3;^0J!exoC9ro$ zm!h=75VsE3X z!m1K?f0Bm$zcki3=o(v?>itXO%kLWc&+9*o+kbvE&VTf4|9G^8wXv!G|L+(4Z&>a$ zJV{pciIaB0_`6E|zq~-y!O%|E!B9c>-zOXD$a4JYHGh}CRQ@M5wRKPxt)ndBe$+4O zGbiGUWa?Bc>Q3tRbHAFhlA?qlA)(5)md7YaU(mK{_^S0}o-X zhV+^tAFNd9)L863B(uJt$$dc)Y}fJBZMi~Rc+i1YK|beeI{20}>yQEU$R4rm21lXH z^Hc+-5NM|1HLyAk&hdRVS%OBT&JQ}nAYk$@@7A0MSl!yuG2mv55L5BI;0zBCUrJpd zXCbq;q9A{GV6pWi4ne3L&&JiL?W>B-q(kyDDDn_PutE2$!LOQL-`)O*j-?OT=uWNc zh$(xs6%8euL=_uD8HW_LBWbW}G(djuAUMpG>zrxx10=<(#+2I`2*teh;bC;9TK01o z%&EOnj9#mbKY)uh?pI3h2X3d)y?D!9tK~X0XAVCTDsxN{-_c!y zi>L^lWLGHqk#>I@i`7>cA>g74IDElsQ84Uyg=9|{8Zk}sw0nyg$^iISab;}n?)xhi z0j1(7yK+Ssb*9;YXWY;g%f&NZ%aSE=T#)A7voKsE;02(-$gU~T0%vo1iPp_u%P4-! zgxlK_T*~?iDl7C7h^B;tc{~aRs;lA&JTb$ zb;81%z$aSV%~PLKOZYS)a|-Goe?2UjP_fk)89(yLkqni>@0MWkz5m4#R8b^~N_e)Mj>myvX6y8}ecba~CaZ`cbhcJJ?gjP5jbC zo-WfhWAkkV39uo|s@o96iBu5Mf@AXD}##x><2pR?wJ9qO#J|fo+huclW7tJg{Iz!(iExP8lY+X;uLQn6PIM6@*SB zrDA;iCYC7WXH}WRTZINp>MHVYt#NzE6t7dv&hO4rU~gGG(VpPgYLah1*ggig;FvPEI)*qz6X4@qG}zBLUh)f8W#mn(%naNqa)?vp4KFI1CKW`?T3FLiJ;Xm zl7VZsBJ9>Q_g5EQIa?eHu_}3%3#`Po99A-d4lYGmp(4?PWlAlvyk_n8 zl|W=KB$MLYC{JDmxIHa-peZ$@;m)UW343zQv-t4jG4OG0d;{KW5i=TNR4#*RzTOUv zpz1_Rh$1rg6kk1ax&)S+9-BLl5A;yWEz1V+t81iZ^=emmJv@}NNJ*=JQDBm!WWx9b zUfu9311g#L`IfeuJN2`0iTQDI+0NB`&mdcSWc79JMOQxJM$+)CM#azX+ zc%Vx?&`bf$^Dj2;f89x6-2`R8&)}gJ?f-En|Bj!!3W@Wt^44!M|9=~Eb*Q1xV1C?U zTKF=g;e*Dm&uv)13BramRM%w-Cgi1m>wka13d!R#5sR0{4JN!EPut$L5h=+VhFS;M z)K5L=!wLp+&f87wYVOEr%``Mq8Oom zo0?UE&+0Numr-`iN4$8SgOjwBIFXn@S3%59nKmGfgkpBnFOd-3&jGqYhC~#0J?2A7 z8vK){jO1(H7Z8FW-bSD2MR~Cy_^oVs%RSJtT=WoPbYqnx6L48oD*agzE?CUu2`Zs8 z>aB!ig-{fjlOV*=$V1YYpXcSOKW>sxG32&R(P*jJN61Y4ry@Q$Vt+NZV7&=6m~QvM zTk{Aq&iC{sbH@#(>UtpSL#^|&HL#iSyS%&bViqo)0-Eh6^H$5EJte%}n_yNv$aOOn z@J)I4jJ98S2~A9@l^hs$>GakI<9&R8wj#KK!r3JYuJc;hpze@$rpNF6-sBWg@gfQj z7p|G_44h55{*l(*jrpEaJRAha|2A~7*Os9&BUC}#uKK3y1yUr2#3`#;>~?4ObJ6%U zMwY#f>nudf#KumHo?i#F@DxwiwYKf#b%v61i*Xb!x@b3&p6sH@$6Q`4N09wIm9W5c zMHuz602(PqDbT7GS6v-5F#CaM59HoF9T6jD9ZtjwhpUC4`j=gh?&>M8$H0(BcVjXi zFjb)Z!s?;k(Oi_-OL5uY-l;Ty+&4S?m#;Wu-u!g!kY@nS!Upea6n6@jk}pe!#oNbG zz2cu`V|Fohc?~k?>teYr#i3qQxNtT>pwkjY+XclTesAOm<>pf8{{C?}4O9r}YTBbN z{q4IL)CdXXHkqaxt2A^ZBAgulZu8qkPYC-I#)V0D8@&?GTdnD!kuTl}dCpQWO<2i6 zPM91`mp^K^RM>QUY$J&KELAX|psKTZTG)cn+^34qrkdP2_$Kn^WT^Kq?Xs0!-)=Ka zYZCzlm8$w{4-8X7bsjyBC>AiVi=?Z8GdLvNO6OB3jn~{$Bl6X&Cg54mg>-1xlPki2 zy%u%ah)&cMC?mZfA@z0b$;t)-#m&QRV!3Q5d{79IPM<5#!K?XQhhZyR+a*iQ>mYZ{ zQ6`WUo2nrT@C_e=*(c(vQ+Bs%Qq<$7<}p4K|CSUaR2TOppSf&7o9NY-CFrGYG%2%b-d7u)iw-*LD(~E!oVQ? zLa(DxdNjK!>q+E+xjpaD)i_R}HZro_dqUb?%)5cMjXuphc z6kbc{?<&gDC8hD4`qlLMfVQSKW6M?p#5}m3?nobVJRg>DfBSaJlMPPd^vCk_`8$%w zOH~W!hOYS|R}y{|6A?^1)oE1!8yw>JgYux@8?D|olBdf9BO3Gp7TOzY1vRn%oqf?s z(MPn_Gl6~AgG7o&XXw`Ee{s&J|Jj2&nEorz!rxiee>Lb>xad1yKV7rxCoGQi?;k8^ zXJ>8qk2=l2v-x(h|7FB~m!4Cc(w{>HK({#M-g_e^5UPc7X=!M11I08;psnoktTb2I zw1EKcI^&kCOrByn*4rP3oTZq+mhn_h#EuPWduQnH&PFp6Dy}Ie=cZNlmPUC4^_m9) zDFZT38`T)6OpZA@;8orDE{Lakg);$JKDLjyHb^H3MyJ0I5Q{xs+5iv-)6VHwil_SFpHsQiAAWcN zuHi+GB5)veMR+Khs(H#s`ZF$E%GQ_&3qblLWs$_tME;~XBof(FTtPs?5-OU13(l1% zEpNBuUTFK*f5WIh&2I6TjGy^THT-8_o8uoU`g^hO-~J5z$6w0yyBz<_Dy*?U{{eWx zwKFm3qahmJDB!JX6_oi|DcIVD-NI^uxxBlej}g1Zw0_@7Z7JK3chwe)a%9MnQxt_m zni{`$dHa15WR6bSrFS-8BtEfRNwhS~&dbBWL!m5H&Fry@`zo&}&Y2ITjiTdPko4fa z3`N`FT8tzhn7LlV7K_9odDy-pvC@T}@vcUyIqalL>~y}QLP2i9RZD@jWNc(3JNnqWc7@(~exx)I00twHWT$w;Va?^W{_n<2-)?Zgl&CdrsxuGQ5<6uKO`c-{GM3VO;(n2lOB}4;$8u@)kPJ{XUtju0tro;xg&y~zV}a7pKEIR2S$nLAL~S$qQpttvJ(1)xgr#?39l z7*=SQol%C@ISoPu)aWGOXryO^q6e^+BS`rx&${xl+=Aj2G88vGaz8_;FMW7o@*u9= zd~4BN*G$ks4WTHcaJ+6UjQlmgX~DA?32);hjVP*HT8jIB#dt z+6b4QD67v3HYTlX8`Rl0Z%cGwat^9% z37j3BreM(1C?(%OfEI4A$j0-PK9JmopL@`|#kEFJzj*wL}k}QsIBRoo-d9~zeww%(9ya1XC(we<_edJ%kCeAMWj}L2&WnH z`KihHwa6){YEm3`u{8nB8`*ns1VG{#8%vFfCu!_Vnp7daR;X@2>`LuIx}gr7=b}JZ zqlY(MSy}|{3bfR*@UHSAYhr9rjCIr86S=qS1}6o)V8&R8b3r(*6A7a@mw^fM z(lnzQ#v^etl1A7zyGS$u7c^}%ju?-~LZWvSJ-3e~;xAy@NuXFA& z(-&)cr!x}CR5Y$(%d?*_Ngj7I(uZ0?U{XH>r#^nGSgfJk#EyUZNU=ZICH~${|8Cj- zuGq-q!1d=R&+jrqLHrN!_&UZV7O0jePd5~}DzbjEL)Pq|~YwC^QDb2bVv>dF?(s}bcVJkXuDqU0EJ^s)03nRnf~ zwCPg!l0_w3xpvtU<<#^1Bp=S_S{Sgm8#4>z-KxOPxNdv&-wO4ASbxhsTGxk$K?^qp z{<5JPkojE#q-XON=+A;KlW*Ev@P7Qie4{b0H!%*kVEZomA$ZtVr|sN6%dx5C;&RNe>Hrv z#NV^WvT|^E#T3(e5@zmGs)wl63-0xoL>dznBWkr?NsVHiS#8qX31kcHJRmo$*Cexs zh_q*2Y9KQp+ty}$SxjO8Zq+sD(uOkLeh$T{FjtMKbDD+8MoQig>ZK4q{@T^Sm*~Ql z)5eYV^zc~NJ;a^=gQS0skFu@XdBeB>>S%FMAm7&4aywzLu~IAC#a~tHcJ)SX<`52E z%l^mNU`&ttOYXi$9e$%cp6pMHMmM~|kTb5~=UCgJXFg~0n{92Q;g}uljTdoQ^BKhl z4_(AI?|=1;m+;iBY@Zq={i#9!xm)xv-}q;#`hS`a{>?T1t}*|-u8)@#@B5=QF5o@r zY9RnYsl7SaWhpM$PxvZYGRSIe>4!nhIsUuz%bOtFs8zs>Q$gxoydUtd5fLXF? zb8>1+(CZQ+>$4x%gB9dU1 z2;K|NtJ*R)xvXL*HTqwKk+;<95hd3cs)_PMD(^NTRt&=SEJ0;OO&aeN>vd5t0eaz_ zIgt~=xO6iaA=b@Pd`|I%2M28|+xhcdGbDcDP_lMB1Mc=agh~o|z5RC3569w5*FQ5G z*|DEJB7c9-|B;+h{0wLQJr<_v;Q8}(|1N)VzS*xaRdhNRd;r&8NPgGUWIWyvN^3D4 zbj(=bWWQP(*4(_M!*WeBFP#>1k6j3+rRnu)Zq6?~>W5PV7R0%grBi>i+8s&kZJ~~LDr@Sf8^_I3DsF1mvwdAKkyDaZ zVZO2}CBS@U)zP$4Igu@iw^nUsEbrL}o;&cRZcV3kwil__C@Y(hkLK-;*TAmT`e@=T zfXxPAi`TV^+KbgYl2!m`{4*lJ=Q<5g^?q-G)3+Z?JDTbw`0-izFNMG)+z|M44 zRonGPeGV?V_Q5h=xQ-GY#0MW=IYwR>ai)J#>w5%^}o+Q_tXJ$~QF$X!`r)X5Pe*VaZo9n;Qu|31`3%J_U_^ zEM}9suaMj-)~T%4%VO&JJZGK2x9_zEC|NP{Yc>mvdSB{mwXR2VM#KxcmWGeJ<9cym zC%m3dyFVbVJ(FRU$~vWK9OAyX@6Yidt5}4*%fiNo_=MPvdUzs3J;%rcbRl)#F!* zK{W&}-?{@M;g+)H$Br`BDQ2?lHcMDrUj+^byu*%kvjSor8&quS1BhXmjD2P-yQDPU zgngEkTc!6cr2D%*4%~Z8ptt#5BgT`ydkC-pB92k~0jvJZnBRxyB^55M)ksyjv`|!xrm3^uEx-^h!&Ka_+R%dVj_u&*_nGPj5`E-T zm#<-_OBjBR5-KOz!TbTmqbLJscVUxS=Xy3!cf0;cB29rBaA&cMZD z2mzy51fu(@5?-(13jU%lFd>d4q6r=ZN1v_Gu1QHpJ4JmuASeN&jikrBU|D~_qk%9% zAs&j_|7FN&utxVtz2!oaL?`PQ{qy6l=3eDb41JoZR@!g#$Fw96ms1^%Umfb)uVhw^Da;o=v?!o9 z#^g>VY=B~l^Kvw3ehwBNy4-~-m**BX4elCmwz04!$K2HyAoXF+s{F*DWj^@vWFLB} z){5MNHQtDmOV0l8R;zIxXqg&2c5_ml(fNGCj2m%jS*ZqEwlbVTkh*L~WpWfxN3b%a z?oUVfQ^aJvy!2Cli7^hac zU#077hKw9&$}h8+Tf!zA2mda{K@w3SH(Ked>p?giTk}3#D?X)QUog8Ncru^M#Kf;j zh?bDO;MTaj#%s5_{rzd$#IY;EzPt6!Cn;>|!IzFr|4Z~!s4N;YA|>!rXw;>{ zyJ=*3MV*;w4UA=>hlAI9MPNQ5ua~EH+tO0MP-B_))@*iu7JMQ zo8rKE8(E6(CrWLU5f{`H6*z@k+F|LPm5&|*?M)JdQQoi8dMQ4}yZJW-(t!r1dYCih zPOEXg^6|b(de|G~?9K0hogEZn69^{J5c3=f^u`ou__$w$Ae2RM^Y}CLn`R(DB~h-S zfHo#6HDCx(w%#~r^)Ilnq_o!y$&~^@2sJsqFx2x9J(O^Y7hyj_VbzcDEPpI}oK=$+ z%vKb&IY>)z>66B8w&&%LjLB(?khGIezdzPce>fl$Sy%XtMI`U40=?HokAhuIqPApD zqy!7&cw-)!sQBx%VJ_%pVHcXrEbbdv!k*TGMIg*Y^^ZCXWfC1VNXPT*ouTSVcczUWR8WJU>f*{3gBFwB1$F+Ejp{{?aLb&c>6bcY zxo0k>S;m!LryKopgbl+cvxQ=fZqC=Ay(;LJvW*#vqt|;b$|r}X6#QJAVm_~4+kz+s zzFemjnd+l^kF08`&Vw+G-ZrwNq4S_KsMlZzWM^6ICjvt4Y@c!mVGr z21dw)w?o%L_x{xA$7^`N9kny%jpEK*nLhs{E;0byu^hG%<=J?5p0a36T=YF)I%|$r| zdQ_4x8QugQVmZTso^A#!_JXp$w(@I!@(9sTGH~g`ypN@0P~#6o3W;Sv-J^mp%}VDT zfz1=kuGxv8*VVNxv6`r=>Jqs&{?d=7oc zfAFh1`02J;G1iAu5+Af4w2XSEfD$!i*R$-|Q2cXcA_QIzsm9m+i_HYkS5EOzm(54) zTIDJIQm%0kn5SM~R9P`hVA53E3{#bX7rWv}(mAfR+w*L+_3p?i2haLokB4oFFIBwj zuO-QY^ui6`@J*s)s*!U)rC@**>5@S~Er-!Kgw7*7{G`9L#ujNlkLp=u6?%AaQu|uJ z7r@KsJ^E)t+Vqqsm9;VnowyZSQV~ouK56u!oW)6Z7)FDg22BiT;P%-!Rmnhfd zm+ID2%Xo7~DwwOea&;yuwVjG1;=#+UBQ7}L1w7{!D=#Qn6q^^tP&&|+Bw$Ar?cBbo zbOhrWQ`j=aSB?{#Ask{}Y!ixlsZ134Si0p8DsWJ{|Lj1w^zCA!l3xC)^8Mg&0nw4etA)p+6sd) z8KkO~R!;H)2=iB~ zV@EvK%lR$Cnh9Wp>4+s74wu*7=GtbH_3o#~ zX<7V6YQ^!x*`$(xbS*1E;{^gkbVW!A*}22F_Bj*VS!R4<%OQ`Iz7HJGfB7d;lY-$} z{M#72zPGS+%Cp3?jxW5UQgiZT`2K(pzd`s{fq}Yo!{YCESH%S( zYa%`pvXGn1g`}33y6%NlF;IwZgp7(Q1$L6*J5S^$4ov8%FeMY>on&;rB;&h)#C9Gw zP7M!~clg+GQnZm?JNAp6)+Pd%(JaV6D5gHjhdl1RhB(mi=#iqNQeSU-CBCMo*aqWw zv4_6AR@3i|RGjE_FWkAwhfc@-9P%{QiP}(W_TG$(i4iQKDb5u;@rDV-pfgk^tb#aS zAV|x9b%jd2Q`JX|MdDNrqY1P+ihSF2L0?p;yFWn(q;BV2f2!$|9cOftXyCTY;tHr6B@SyFH6~@4LX9a}5A6*r zv1-yloRrGU;3Q6Kt$v9Zd&dvS8fH>$7Z@h1{HAIt+Y<-{w!jFbnQ$=y7jlaLq)YJpl`QamD5|8_ zl;P0{!$IY#~F z-{|wyc7vxa!_b@~*+QZl!9W8~xi0X&I|Ly!vgQGWeG4=^T@ZXe^0fdohKmgF<{)_z zdt6G)J2hSRC*6?ywMF4)g@pYaID)mk)x`vm3Qf-_JphL4Fj3cEp;ey^S)V^Fk{?{b zuMZW1grd$lr`(onbPfT%GD0-J({RR{5$768mX35STTv|;t=L#CBExgnS0%A58bH7|1KI47HxArE0gYN6HXG-W`~et{CG zi_&P6CbpKx2xBRH6GMssC2Q@dF>^)7{IR5C$Jr-ZqCfP(hQy6M`KvDhXHS@wxtyCz z@HTr=5BcQ5eC)#+^2Bp|;R%5P`2L;zfTWCnzF?m2etfV9kN=;U;Urmke4%cH53J%T`%%rnLU=fm}8pYBMBdx*y4VRxJ@ zPaS_i>5j}gI&`v^O!RS;wT*uR7MV7oyw?|4s0~YN)G8v><+Uz2a#AFk9-FKUZ@8eF;p@st*28J zXA~CZ7aRX(&Zu-sC%9=Ch60&Wk5>H}GCz#gMRe^!>nP0?@c}lHArSgZKKd9n)7 zQ4pz_Q88_GUKM1^d9G<%nTHJiTFuQoD7z95Y#BK$11W@sy#7N zFSK;P)WaO|ho}p0DI9BJ{hLkK-W%msS|DOPU(!%Cd6~z|$VA(LcjuzRonJ^Ax8ZV8 zX#XE+Zy8-@uA~c_?UonHIO@9N| znIVbHI588ka+uXB<-WV*K=t&*&0@e$-0)4YI}}VgF@Ap^zdEkg_dRU@NE7<;XeP^^ zB>W=(iQ7kttp1jGg#Gni*>kl+qMHj{wYGo0zMme4Ih7v7lP(}rLq9gI0RFYqgBi-D%HaBf=} zstp=4DMXgFRW^BT@yt4&tKxZes;w(dLiG0bsYxj_lzOYHt8y$v*H7!+w|oCaTEEL) zxi&!p$=Q&Fy){YcrEM{h1BwkDi`26Uxj`YtTRa1p3_(( z$I2?!FQNC)k{r7FD(S3g-QUt)+#;(a+V(=r7ji9h$fo9Zwdu=PnAi-e(D`_k=w6|( zt%dm{xfMcuMOtTaFT5yb&bph{3~Ys;1H+_h6t@E%)3d87@IB;Q%(oPAct@{^kj_2T z-$>bP3k;LMI+vk#|N2SWMqQr>vljYxDY%coG_~~6F!!fSgS;~YQi-pzWt_hA zNX`wc0~ZL;uuK1uoj@Ae4hN8LrSj2PBuhAt18R3k@0p#igiQgsz3HQYe)Q)D5&dCa zk|T`pF}gMl3vvMh;e?9?NO>J>^hk$6^bhlKE;Q@>I(E+VcFQRy@Dg3ltEc(s3K(htuObe`JzBq1VMk2 z;Tj-Raf>&4xqW-PQWC2t*#C{we-z)EPL{J0B+$imUg2Z3 zmA926v9#=T87PRIV@xYHhs*W?4*Ft4^ajU4R$@%1v4<45VJG%|*l1F^*nFe&w>SBC z`Pz^8Gfewi34BUFY)rR01>V^n``V5!-d%kk%7zgU3X0*l*oyr(qfnHFeVs8dO*q`_ zl;%9d2Yv)ur9U@D`uLRvgI?riKg(%jc4cqZ=C+pVUJ2_m5eeH=DL#Q8{it4vIF#dk z9Esd<~IF>~zsW2GB$)j{r% zPE%`$jVCLag8(zMW-GE(UKb>oXK-Mdsq4lt!sYS#j8Y)09~)3)?ev;gp>W2bWgS7M zr;iu&n!T<8^H!ZdNR+x8d04(V7xCN0FF~?KvU|v;fOx8X$p0~>3Xtz^XKUkV{P%t& zJtl#FCD;5yH~tNPhjGM*h(A4QMu>{(vb=siof`^=qv3?dFimKF95W*zqdy$Qls*uBZHKlC8?=@SMskY*21tA-_33FNg5k zS+d%tHOembiXUv(g{dJlbSfj7zzTZbc%E{YliG+{t6FN|4ixD8C$9Ak9X}|hXvl)J;$J{?iq^kXA?B>xp8v=$&9w3LKrdO8XTI&qsE<1) zYE5B!s!zX=&35ZO$}FH@HyJo}-wz@=v(5f2YlFm9X@8e6O#JHQX(5G+$$!8i>19PP-ZzWNp}^A6_<2?t;)`}crGzx%HhjU8O9jGX`pw@$`xPO1*(fZVaaII&}k|0USJ(g77I z%Qb$)PMjBlLUO5ms4ZoT*=fy>!MGmcj%pPu*JPR%%i0|NyYHJ{RW61`Kl$_XM<1ry zW@Zg?Y)GGwf2gJr#I zB9fR!SB|L`j+6&=$+ku})FUa-BLOW;_<^({edus|P~x3N?)S+7%=ib|llHY2U%iXt zK4-OiA24Tn#V}5{#W}Jn)J&7o@$UTxq|}MFTT9*;Xv@+;k!-pxsZUk3gh;`>jqVgC z&;az0$?FV~82if4b?%w!UT|iY+`v^!>HO6+ECsLBKQyPSNBM`Hwhi;GO_t6D`s_I- z5Tx2{flSq;>FJuLEj`d0B-)dRe_G{l3k&z0qtIRB6=;xokU$@O3DMcVdzg2Ww!6jG z@Y_qi|H#`3RPh}AzOnuwbLRX->}@~P(s>ZM%K))$EOKc~I*0@UnN6;CQc?NHWapGd z(1a3-ElRDZB_{JK7}!CWgq-?tyPAJ`W7II1oi#nzW{F2DlR@xcFv6i5u7yRJO{I{g zmKto;O&V=lt#T3Qsaa{7L09}XtF<_I;dr;S8>N7z-cXzRh)HD(WT{nW+O#+sywG_f zdrF)IM(MOwAS=uPyN_kn9FQIF@dH_U!Exr(HYwJ|M343$fvVL?%jRPa;^?#3j-B7e zh1C+5Tc4*FLmUSzUv?gv&#$Yk;cTenLQD*NLIwH7n;6F zOPux#AouWdHXQn*Ne}7k1XUlxONQ;tMG%hS3_PSdJ~X}nNiu_78NU3c85$D5`2!a& zkWngKiU@s@I>;TNR-Cpd6iV#F^4iZA`yTmPC4HB860@S{p_{T|AZ+VOW0Y(okCV9y z{=o`eYc9>?C`F2&g{?; zm(ML+Dp_KGHGG>c6W0d4NtNXTb3LgpLzGoho%U4fK5;&SL9C?R+yJGkv_E~4HJqYb zR9t0^G6ns1Qqz1l5cn!H(w|llHNc!rnXj;_nYoLG5fEQ=0jZ)~a%S>loJAZ44^MI0 zXH87iR96&diy8i!rqIBhd()US1*fhpSVenxlvrA8HeN8)E#S+F8SthOlyq|POn#3^ z0LW8XE=OrD@zdm#%r?gB`y6tjk?IqD)|3L95!!w|bHIlURBO%W3|qa~Xzrq`V|#P| z_*XOOv6=`ZsDv=>*yHVN($32)$%qdhC5_LWsEfFK5D0e6ob78$ydLY>S+S>vE?Zi} zgfV6lN8|@Li}K_qA~qUvx)k##Jh2-!%6v4B{#(=U6j(3<#=`)@z?_krF1UqAYnZ14a6(SWh-99_)+F<1U8 z+Z$%(YP$juU##V%|%y{J!Ejl4NCp*HiqDusP^p5p69QZpSANviv!VTrJO})4CR-h482L8 zL>~&7C{5Ghvf*zjir(?LTO%yYRaZ_^S)&=Z6zft=;7+KO9UhGxfgRe z_5-m^0-2Cze>EY*D&IDaWp%6<&-*x;Pp&~`dX4@nyQyb4RDYm^Iyag1_7Azf#gs2510WLh#PU zHkX++hBhHNh0*B;r97(K8e*dcFv)X#>CmQ^3nnUCc`5NY9;U4eP$Vyq{H* z9N&$y4hzBS!Ji|b`-rvDXjVaeIC|Xp+0ku~Po2`laGtrQw>jYq_mwVaL)aZ#e*wus zzNhh81We8PpRK-{qJWK!t<&!XJpS@$@57P8$Mu}O$23bI8M|r}c(@E&&M;dc)dY|f2Lj^FG zt4fuT6HFXfBm=aO%&jrivEb$zj^(z}+?@$W?BGECzFrB53sx{UZr=|wc#ZEej;I>9 zN~@YT`h&MmKesM8QH%-fQi>WnAsr0maLb!DOG_rTr%;u?=$UvJD5}_zPB^Q4c zCK6iI=7V?YQ*IDT7n2l_F$>4sKNa4_h9%fU{{ZplQ=dIkX0HvvM>PN+IsZo$@cT9e z@X-k%DF)6?#=^#iR{8({1wcuZf6P(iSO)lBdRUQr$qpe=H3wj_c}6DGk19*eq=@Mh z_6kV5=lO(6M551K7q)AlI@#pk1*>{MGsR<2V{=(mZGU1m#IV&-MbusjS;A5E3Fd&3 zIGZgJ_0$K-%b0!i!yF11{m45=V!OtaQ!J)VfhPCq%ZUWlkOD|PLt9(XfCEbj)=c(T z5LvKYmgl`*s4m%A?~naD0ir{yK&o$*x%QHkB}`U;$i11?WP{QT8ly!M52#nJo5{6n znh1Ejxh5`@dqFn1ijeov^WqxsCb%ign5pHPF3)7|H3k?YA9C>vPD@ z9|EHEJ{qh}n4qZcZP>Sc^?SHT4I-p8b?YPPhOFN=u;C%;#(DH-jC1oToJ81-Z*Q(1 zOr2N7%iGINz~OiJ?p~DIa*_zoac3?E2dNU>Gn0*K@%UBInOy0y7Jo#*KSus(D2#__#7~4sSpu!-Y!B~XT}}KP@LBowqQTz> z40Cipe(UgRg`ACWOD|9`O$H2Z7&;F=N*HIRu_SL&G-_jp9=12zJR&upaKLPlP=Thd z#s$&k(K8T5E1rm~0?Z|{wEh#{2i{)(FMAA0{u{fD#laQz`V2bbH*T4SWz0Td@yxnm zV)k6OlkXi?srhxwVXms-S2VI(XXDS*6Gp9(Nz1(mEl=1!Wa(|Bf!L=)tPf=Tv-ni=Y z{vh)OHjwVmf*ecp&V>tDvJt?NvHz1L6R|S3Hnws4zuEoX3cn}KZ4iIwbEA=Z<1Z?% zKm^rBR@SDQB;~QMp?wA^L440hhF+ELGkNx2zu|#=0{2i_ya#8WCZ{30#TF6>+%td< zhN-HbtmAex?8`^P64>$=buM>_1jSy-HMt}-it3e^uGfdKybbi2Vk+nz@lfCy9ZV&} zH;H)qVfV8-`Y52L0BHOUZq33fAU1M_CBHba(L6>I5JQr;CX+gJIaXAYgd~lcAR}Es z8g(9qg*^x+`7y)Qd1UvX09Kj1FyD9RMNB7*e2&i59SGlc4zFw$llmL)?!Au<%?Wq{Z$g3 z?tTpSGuWS3<#Xjv76`zq{067~OH}>e9o}k+09Zidzt)ES^~C<8pAjb~)klvRdJ*gs zic2l7r{kI`JJ>xT#PcK7};K!PA2IbK2w~1z}M8(1c+w8k7?%>f|fz%an zjHsgT1;ejD#nPQx@nqSvo8PRp^kY)t_2IPch(9v14qs9!(>lDhS#=MlOjhoY)Qb!5 zZqmHwfh}zHH!-N7MO>L7`wtPCNn7 z=4Jr4{{wUK-z@)KoB!kEFEP5u0-(cxtD4t`yEZ0xrr;5aSc=%TNa03($~kDw#x*uc z1$?z3ldIN#Y@Ynsbz#~*>suzHgvauo9Fmyi)AkGFQ2UnN)u&<WKO?k7d&<7sY1Cd;EV7>jbtN0xjbhB}nBdZYS0kkWeq3Q)6eNGaW~*X5 zW_2%I!}_Rf;g`1)FHyViQGl6`0op$>w$&76^{tJK06=B`Sah5td0;>o5QU!sH<2VH zlI$~QmjD8hRLlF_)Ce61DVs!;t1hYL&omGrDMN<0uCQQ+AJDP9&CA%ICcyGVhSjv_w^b#u z%&mSxhO_s`#VyRCo&&bYlUbqD0hD#wR>+)HD}x z2%+>|3{hg>YUz(Xq2}5S!CfMXz9|yR3<}Uu5bHYJ|ql_ znGUaf38DItVJfiQQ-AEnQG32Ae;wmvQ?VE6Hd!OWM$by&d`n`m&*bj>ws72Wm9EU= z$tEAjWxSAK)1HRNV=kT6Z0?jLYnEga!8u3zO|DqwaAQMhv>zpR38D9tb!miePuKVg z?$7%yYP!zG1;Fe?K>Gy_?;kMxZ|`@%GWw6ccEoS@J47%~|2MmWxg$^?|DJq__&Xxj zYket>d@1^%7ao;UgCaGPguT%Zx22TT4qAvV^Iy%EO`C%L@&Si?vLAzCXzVkND?|jV9hGm6!2dy#0B)rmH%mKL}9>vuMhuc9Kn&q<*rDumdA$85~g*0tQ9HI zTU#U4>>BI^LwxM{5vG9)1j=lp%y((6NP;;%3x*PIue?MR^AiZU?LfOuLWcS~Oz?rB zYEx`_I;3Xk&`z)8k~W49?e!qlao%>@YLjE*Ia^j~Smin1=sWh{nr$#U_e|99jpDWy zynp5bc>}kBAAkcrfc8rQ`rj|QoPmY0;a_j^zfSm%zH`*SuVvybfnsV7{+WK@A@okp zv}|z96^YHoP(RNRA;3WUbT>U`G4iP)LO38p1DLBdIZ!Y#;v;QnWk+dQ7uATR*hB-^ zDG%|(a()(__vT+#LuA7`sz8+=wq4q6DXAQ?3{fiC_uuL!EIl?^zlP!`%*m081ew@D09QVfeHO%5r3t| z5d!eNgs9;6Ba z6n}e#H2yza5`UfkAN|BcDcfCuscNwN$-%yFN)Uz@U$w+NhWIr?gJ3 zOrizzySEhu;%YHV*)qprop*WJX?T(E14R30o2T~OW2RfnSjytg;j(hwGM@sSe(k2Y zGo>|Uvd?m;*!w7QJ(}_sGTl1Vn0@gSLFmRi0u?!G)WlsVZ!TP!_l@DRT4^yeZU-fY zpDk>okpot$NL!284K@*M?M#8iz6_u+GEQHDP>{@@@9FxD6CsO*v^eO2F!x$v4IsI| z)GirQFs~&<`RF8JBSjDAa*{JmO(OPuW`NHNO^n|2gJWKHP+bBaeNFD-HD8A zA+7o}8iGN7y~vZ*GDgO6yJ3i3@2>Se$U_-{1wFLyPj4}tmg6}~C_royehq~H+3Bf) zJ3+=SV5Ph8w!KPfogQf)Ff;}fJm1iWFpf$ZnLS<8jxc}jF&XYzWy^no4OoN{ox9FXTD&LQ(%8E4^Pu;`+czUXoEXtY9qLa zh{6e;byU$x3Z>3#h!TNH8h`NObyU}@ofFQ`cyJ@_~&*B+)x`F0Ez^>oA4f61dLw$$j)kY|kk_*(G{o_g%w z@%+o>gq<)t<_YliL;w@(mx2TTVFv&6i^?CH<5%h(DFR!9=leiNn0Dj{F`2CNxv#Pn3ks+X{$UnAb6Tj8~ zu!a#sTm!du2Az=Vv4kM^M&>CBk>@i4sC01^#E>}~niD!b3+iJNK24IGpFj6cWvD(W zM?rmxly)yb7&d{$4ok_)T9zK4YgNkhx7_Z9*al!=c6L zusx?Y>ibXKI!cSJxZ^94nPn)q%II6aDgVFsW&OR&2>_DlXzcK3m(#Cu`bYo24i*TD z7Y&?}r4v#l0OFIwe=;2Y7+b&qP!dMp&`D814REdk{_Zd9ChsluyVK)WdWL7|xW;Ik-^n}x!fh4z)HOk_Q&RnfqkB{PWE?^6ZXvu={9wnMM@_#umV!H~ zOn07H7|b;~fvI^In=#5uOuZ1w^jh7VkNUyY&({7ZTtvOn9LBOlf4}@Vop_8sEG&KQ zm{V|aPHkkBSrOuGvm*v#J{mUB@U$=1_;iaL@ptgAGN7xu1oSy~9U;dS+B%FM8ZVp# ze9!2a7wOo*=9g1Avl;PD!YVvqk)>%jgSTknb&#x?N9UR;aQLBpxo%?WZ^N~E)1_rk z*6NNuR)X>;iBP2r?ns3T3Q7Hz4vmOaGrG=d-y3@|f%++^hul(WXCHjs7NK7pI&x{P zvrl0^2h^w`aeUNbjTc|y>Y2+|2|+zVwKZV$p6}h*4idf;40jSYL1C4tSX`3e7MXEY zIGCvyo+F`xp2vuBAmku&vg4ei4RST71PPFpAMb|&D=PZ5d#0Tq67lx%!W5+9uChys zL`HSQO)ql89);Ww`Vsr*6vQ`-*S#K6PQi?{TCEPRw{-Xr*b@${=^KvdQRnE0!;*Bo z@X3z@ZQ$o+5m(zkFVE1K;Z-;?htlrqKaub496guqm@#6;3|Em!f}gq|qKHi@Uc=0W z+2$cX7r$KNM?nr9ZpDPWW2I|#;NOzl4qC}mzG(-(%xFY!R20li_hF$uO@H<&3T*1z zdpll0c%2zJ*3qeX>Chw#YtHXmWa)G_W( zOXRSfLU;0{O_2rHeieNGnhnvfiq@n)o~x@PY5U<;7Mk?MRy9O8UA7MEamJa4yg|o_ zwnFSw1S$8LY|4iYah*isF@eo~#_=WQq~|aWjJGRZ8!7ydVjJoQ#U;3^QL#QpJ!Y!K zQbimZjAB){q^KY-aKopow6)G|?2u4#;&OgdC~b=*GpLrpT7#W)Lq?+H5F~GY zu(?|ZaJ#b@dQ1o=goCeS#|mg#`F@50d0j{ zQtz7h4tPaIa71F-8a)4m9{VhmzhnPqODHY$q5^;{%S6&Q6kd#T2=) zlklV0Vz7?X5iBLE0fKBfJE#ZDE5)zi5i^VhwIplpx%-?USxCbY5^P{Nu$ zaSx67?EB1xmYR;meRNA?VQS4}?m~Dmhn;%^2Defr(3eUZakw-f6|@dv7#o#Q}wNg-l^LoI1f=wX~;qv1Pk2(pnIvH9N+$!}p!%fgtM z>@u$;S2z1di%ZMf#2eO@h!?0@VKt>0&|!ia>Uqo=3mqBXa3~bGZCe3PSw%L$jc$hh z2&7`t$ydkMCVx0gYu?wf)2%pHSLTH$P&B>Id(R#vrmhJ8IXhPhduc3EZGF3|?zvDU z$y@rNx0Z-7E`$)l6n3`Eq~?xdCUZh=i2PN8Z#hO`!%%f(#f^E(<4J*<4BvEo&WiHJ z9DyGA2N}pnJah|PCgF7DbtJp5012aX1f#B;x*TO5g|1$w7@Dn#0v3-m>|Gs=djam< zXygq}kZ1ZQ*SzQH%5n!UIbMbUtG!L5bCKuEx?Vk@u6EIp?@y`az5xgIOT4vO8M-Fl ze|Q%~yxa;>(ajFiN^`TAc9rL>^X(NZTgBhja`8E^+P|Z)h(GhBMl3;Jg^^zkeS_3h z?6rl_Lfq9K1szsr?Hk!NDNRl18gHd;0mA2Sj4d1b8ZSA|FY#eeR9+8y+D)o!%jqXD zRC*ldcvk^cELNu2X?{Arc(w3$m2Y@l!xitutU?l9UXTwV4}%}Rtdw05xDo%Hv=IVW zzkjD-hAr3rJDh!Yf3<*^w{A|!I)5%~hwk&ZQ;azS_LN1%mD3Ehk7PC*Ru@(fD~9kk zl`j`(764HhFY`E9CU7RLu1Bq2Lqh2j%$0E`h2vf~j4xjE@e%Z>Y(Ns>j~U|W<4EV4 z_}uK4z<}tL7k{&YZWc@~8-xcVqwnVU_}(xTsx*}&&sCkJdpJ&yq&~JWe$ag}$v$9q z*Ly%0b$nUsk9P6iP}sao$Dh^X1QZZEroj+16Rv5U=~J2fbR_D&GMabulD0FaFUG7# zIhX`72u7eOy3sT2f*bz$%J%ZYo$-QvG)Z`OP)+0_bC<%o?qG5SE08~RJa{$JM35%x zf9|?rg@;QRQt@?0-0LHD!uQdBRjpaM?r*!G9dj4+R;nBK4fuB7`@!?4;MH(>qu&-O zxmNksw0%eUBx_jRNP>4K!iUkPs8~3wfv}ZJ5s+0Zl>BeG1M1K$9G8^^J#aT9EeL8< zd25j2KCqNrTwQa-$5$wF3?7qvhdaHu@r2@0Qz=uer zOjSv#5Vf}s3FMo`e#z&%w3rX|*f9J+5>sFlMT3PAOHK+lk*|~5b3d77ugp5y$<~m^ z$*q2BEuFDTEsmkOFmDDOfT&`ZITD1q^7M%y(b^%pd`u|~loGzP*GN#{99UVeuAMG4 zXP5uN7RvI)&%f18k60K0Iu>cMw~7x-=SklNeWfD7T8{H1M%Nbt1(qjX?%Nb2EDBZA zJ8P2CEoSQmA}o`2MpP#8oR8HXD-!y&T-Jshza5@eAOln%&BY)TRxp1y^O=>AWU!OzU{ zSe=eOCx%6xdHw6jTR5#S`y%}IT$!8TB=*po;0Y<&hsg}Sgpa3ASab)m!XnTtU#2k* zUYrq^YC=lx zP!;F~#{CHH-xVQ5`ompm$7)rBLd&PM+O6bqU+O4;5dzqYACnt16C8(^_ab-PAE$M^ zXF=s(Q7qlw^Hd88Hq!c7>^$|L#OCgkRe>AYH8!EG?V7<;2g&2#)sB zUvs$y5(}g&>pi)Fr?ewa(yOvm_u{muLzC;poE& zW7pGXu<#)S_7tGv>E_c_+f9cWHqJ;1q5IhL^~<0)vOMT%&MunKj^MhQ&!|-l5E%e_ zbYSUS@b>b9kU&iC7u{R>K;}YMJm{Q!{+vx`d97(Wp89Oyp*7EMg2GdqiBo!Xr#}Ru zNO=7^7G*umITR(SdYzNJZYbFrEa)t3%*|1F#P|iH?CVC+n#t+G0z}nnGH%NxoJ-eq zM-dx}qYbk_R3qf|f;^nn2h@Ez$uK=$);|DoxwS!3Q!{Q~p?jiRk6dldXznLeH6mRL z)w&ga{QmN!%1t|9pA%|_CsRJ++HEstpEy)MxnZxA;Nxgzjp0@M4ADV`k`^};mb_L!{je`e2X1H|6eV=I z<#muIN}2Ik$?&M0P&{7VE7Jj=_C9OMYQjKnp_Qa(5re^6iHEEGNafuyhruq03bwsd zRYmE>UfPk$U*&x&j;_Ka2%ufF1`W---;(|KIm!xi4LAWJ=d zGdmT`nk>YdSX_UkRP7&aq{Fi)QuTj{&Id!FMg{V>{|QsBU*2q(q5cw~ z8I0z2VU8qA!B)|Oteq#IcA3ecw`HkBh}^31l5Lq{euk^!|nNZlHgX_z4r4Y(e4q| zdmkozh;;F`TG{mQ1g?t}5n$pxI*hL=KS@c?+79Q+4Q<0>hvx01L|BF+bhcUY8xrBe zs8tVT#bbMo<$dSURa(zJbPHjkwI2>_tosTPm03sKPRjxBAKwc?<)gv{BpOF|gpPjn z8xj@aFw%J@STqe5c{N_q$${L!Nx028^{w&mg%YpS%R4XAgji-bo)RoJa+m`UuQV^ASRBa6gJRNH-~Pb|PA*ZHVA1tiF3&^lAfYS5-v=w;!ck2vE2 zlBC>VvpYJ{_b?xZupYmH6@BDIDqD^CNH)nmW;GrG?oFVv5UOyKIXLwaN6_QCJMA=~|9?^>N zezoE0Ox?yYI`saf<~D@uc4IcsX;K4uFLX{%t|c*@GDx8V4qj=N1?%zzk>80iOL=84 ztHlI&+e1gxgGi`#wQU8^W<>`CEaS71zg~U@JiDDI>6dBt{7Ryf_lc?U7~G5dwNFa8 zNMB!VTk^iJ8xRsjkI@mqmy7i4z19`7!F0@(^c2dpRsDPt9ehrO!?5mZyEom~eaVLK<>mgrK}7!cER)mQOoa=8PtFJ65B`0K(XY=k zYBJKowua8X#TosF=NZ52e?8CqN+;AdY}Qy&I}u`Cw+o=beEhR9L~*SkR`oO^ox7`H zQaO`?XY=_#XLRIVbP9dVC5>qO@tG1D?2FsW72x+3%{a>(Sh&I9L~~YZ}iizc(Hg;?4y2y={XY;^}lRw1uHm zYY9S>h5yo^!K@$VM&Y2_w}9v{yK>D9RIPTE^WX`OfFw^;C-4QdzWi(TxB`C*WtG8u z_$TB6ic90ic2oJ4J>0%l%&_L$hMDuiGdA0+^A6`N+X)P+Hp&PM1>1vHZRINW5h!iT zJPM{D`%;#aXJfH!Lw%x}Hy2Mo}WZZFe0u3_JJ;I>dgNZR;fz=D_CrAO8 z#5s3(vH0p_XyxDs|%*S95A=nmmlMTX{>bM3z$7fCw^!f#od%G zobs#G_xJv$-`5Mtl2q`K^##8nz`A5Y9yXDN8JZE0y%8K6UdiFLnlu>v*pJM)nAz+b zpy#16u6jeG-V?SQB*^4%+~o%(^2ij8a4>CBMk^w-41WmoIb=$lQbKV!q{o?*dL@^UaUep8Yjo_LQ1_O9vXs}e0TffWi@avdU=mpZT#<9+3RdM3GEPD*o%14TFz%*r zP_}4SGsG|4oX%iIGidfEi$^>WTHJN=QDFB1JoPA^ylcSJ11NT45BvQ#Lik58J=b%t+ovYtY3gh4 z+A{W{*_9W*n{M|6OdSrKG_>WM=WESq?}>Ex?L9N={;vNHef*nN+Qzg^76sIACI=LY z`+J}IA6n^O?&bf4dAz+Y{QE=kue3s4(-xqKeCVd%?Mg#?MYXLxagvPrS62cdi&z|h z?^LFdt?QI2nlog3Y2NRbm+P6&1b>{$P`m9VnV|8In#Fx#*4bf?RQU$xY z9N3XNTOIC!vzB|uH|8OujsRBWS)H85; z7K=Hc{bFr0Jv^9)KKjDQ^Gk4~1n829c>lXz{AL+2p(Q2(^~d5%yYa!*};eInJb?lumY`m^S`d4XN=(TX4h|L{St!^#HHe<8@B6 zLKwz#+t`2VE;mNiH@$BPMozu-3#Z>w6=?l4kJ3`;5qyY1G^iuuGcC@~@k9jS7j$@IBhQ6BwWaCN48w_*pSE2;$ht~ zT{#&o#5UwnhqI4gSZF;Nva(M2iQl7OjeUTs(<(R1wk`t|U(}m*4{h+Iu0Hh+7av1?LAhzG6?y(-Uzcp2 zx%JP2#)(-x95f#;c8H0^1ti3?PC?Q#B3GfhvKM@nZw0k$bfO9!=lTQopKTBpu4F&^ zoPtGA^~URb1BQ(XDjl=rjbEeoM$c^aPu#%=&v$h=yjyeOgQtDhGZfiSAvLR(pK%~k zEcsk}uO;-LW46n*6CH`A;vhG3^JcW5Tg)M~Hb zbJCh15m)QJ&~anPa{N=r^`>rin9a)E8!z!uZN)nzAM+<`RU`t6#h*+`Ql-`uWAqCJ zWH}Xitjs078?M@#+9*WmzV{w~Flu6}Yw9xDJL2cQvp5$xRw$` zqr?bmwGxedx@SSjyom@5&9YgL?fNnjny;#!wCAg-R3mQn@*q-S>rdcCd%8K+8x+bA zvM%(x`_)g>pCUO4mOJ~0|MD^X;Sw5U&Q~fE`8!cYeK-u%67LpTO8fbCFW&#`;B-N%VWI`Nq>}-WGrypC|2quek2C8(J2ru+ zMSef8ex(gc3Nfkth(2sreA3>#$ierip54?s;!02sBid<$G^YV;yMiv?R6JYWeIlgL zaOCCYf?|VH9uLx1Y{|qP$R(kSxEU0pFT;~@dKr*RqMHe|VB0cmLMv|~#~_LXXXn#x zmlTphC?rQNgDyf8n0CxMRJsptoUV(fe3A+ddzrs64sT`PGosJsZ;Q`Ho?#w{Bz%Tt z7ZL1U_gVDeXN{{a0OCT9Bc?$}TC#y8JWL@`iz9_9siyBw$U!}bQ%vd}huOFqGq~NC z6?AQcO25KA&uNNde790ZlM-28Emx!_6Gu;nlG5wP+(92BiE0Wg&MwKf>XxAK=wmFA zmG=E8kvi-14DWxl%`>@PHTi8|xu&nEn-YcT`g!}>0|mjYjDcez;Bm}pUj{vgCzbuI zfjTnXPC{8_lw=3G8<|T1)~Ff_Pwd`?;PMq4aN-NJD8t9_)yuKP(IEN8)VG3_qlX{m|yt0^H?Q5Yo#n$1jMIgei z9dAe(mW|+9-_@kwzTI2VNfP>o`wRkUXU!@o)>dkAnZn1XteG~0tAzWtRyG+`?eg5> z`b|`iqPA>Lqd_rI6xwgVJ?gzj1hu%Tpw`S*!HR?d!&LLl#>%$>*8y7Ni(AxdfJ$dw z{LCS(jN5Y^iy@7TDoQ=JYm%*cB&ULSz5X&XvhVQ|Gs*Wc!sRQ)J@Qjre-_K*YF3yH zKtPuWpa#I-M@#(wVrgvX48TrsS9G?svvv4ufFgbNzl8Hw>Z~|pu}6>Sg|JVM#LHm^ zRasStP*5*_)G+iNM#(s%Sec|wqX}N@{gs4kb|oB!wXt9&W#&g~;)(V-67E^BRRL%A z(N|QD8Odw$PMxYnYHuq%hV~Hz%6b%pRlSbpC$qKaCTWV8F+bBGgvz?MXC3{q)fK7b zbiHtG+PeUTG&(-Q3qoq&vhQ0 zr;2`J2eN}0dMQY|`iV3;W}LT!Lnx}cVfgZm(a!)rS8B(gof#K`u_p29$WV z4NY%aj4}!-1e8czJhusfPA9JE#KzaSuLRXV5`lck5$PAf?Gs@Gz=C@<`wF5okC_;g zaT4f`5LJ^{39QDxTb5IAxSlI3qT9{d`)2FxC1h9dX@TJpJxdXivxVMZAi*}h?u~NZ7Xp8ZOC*$Ep05Q z8AJ%G63(;FcC}ddQFK=kl~>=}r1+sU0g?R0QLL2RoMQb~0}0^-|4E$#4rWF7fc zl15FNlk}Y`J4_4UikAG`JWv9M8yoac=H9WyZCGzz9?&}RZ^-12Y1WMXydTw}87vLT zc?TshLci5KUXMZ`bd= zZ;U&%T@ObPEWGNH>z-LGN?_k34$cdq3AYYu0#NbDUkX_srhE z{rOAe(fmnPjNq&X(eR#n!nR{V^RN}|V;HbIaXj7rd?n3BajkZR9^5z90>_3Z!F^R4 zE@O$tUOMV~Awg(iS$Mf1Pqn!&Poph`70LrGD(-V!VRdP}H7{zxildUf^KkZjKHmxk zn=1Ld)DOxfP_D^o{)CMlVGQD|VpQ09g!(GGdVTLp(#%>G4!%1KDK>d-m9vWV5|UKu zo-|WW*cs~PwF!1qF!c6X+Qgr%TROcZd?b3ala~bkUE@kemWvN^p$;j z@IR4NSrr`@CSpv2Z==I5S-2M!h2}KSD?XlLD6Uyk8J}NaniIe4_UF;KT7IP3?r2E0 zMV@9IZF$X}vvU9Nw>;^m2=)+st1k&)b`1b`Yya6B0Nkf3{65X;xn}$|FHl~yo&E{e zu~A>7w)D=Gn&2abVE&YfO%Mc>YNn$s{9EgcD&3r=$LN&Aa(pUkqV2A@qg(r(qqeCv zm9X_q)`^UA#_lb%Ul%!fEEs%WFK7WGhQ-B( zsN806{_*lxXQLIHv){ALy<1#d%!k=Z+6_PK%)2H{W*>qiOu@A%5evZj>3)D*A7ZlT z2LTZ;4lbxE4Zu#QAqdA*!Zhc8|e_ZA$iNg2(;^DO*zKV6ezsx+R*hgCwhwI4vEEX^yld} z^d)`SP+oz!Gu{R6i0#GR1y#9(HZ<@WqyR67D%|<}VE@ldx+nGn(i8vv=l7@(Kk!;$ zfQWwlGhiSrpuf2LeEih{<9f4AIh4Z)^k2f3hqXpZWV%HadNcTYyY_d zmjt0u=crvvDJj_W@hf!B7YZTVw2U~XK^C<9r1Aw?%n@*!^fc*fX@{C8tV`@qv)YCge(mS8omFSli}8d_#9Z;a7a zgk~|oU-DwpTWgpPlz6mTgR*chH8ZeiV#U7CNG1D_hI1aH>u8$MG&zpkL?_H_nGqm4 z^~NIMEtZu*E4Xl6Qhrca@>*9|O&c*iWm_PRg8wZx?$Jiw_SU4v9sz=S*d|lxXZMyf zsB;S7T9$1>gAXMxhxOBN=UIfjq6tqH#v#BD1mB1nDnvuumRx2owSIJavKQtwXG|;eXpq~^L{e< z`t0MaTiyacPK*B{yA|UqtYsM0-KZO=UGjc4d4EBv&+{8TEI%LTZh#!qAprp~{0BLH zY5@ALcHDoG;_RBAQv7_J1t5C?{L&7{Q^GIRkdOh7e!B*)&{o8BL3oYovzht1wN|9t zqC>u~xK4x_2FAajL6Jtk{&M>zJ!uv@$)<3^ATB2QcV)YOU-0K z#u1-Qzs4Hy(u#H9&;T;8jpACBiy(VDx52iTMXr8*pc^A0s zdV790#fKZvO8z1_uQ8lA60}(Ctpb9ceyU13;MJY@+o@CV>U@@XqRoczj-|ASO z&Xmf)W3FC+%BTX48S+1?jIz76p{K`mI2pwafiJ) zIh6A?oS{yEC#cC(YW5Y(Z{J0Yi-mX)*P$soy$e&thAo%JB2%8gq7q3^-cYP(nfX94psAxII(4n zP>)tBYa$uR2RC6e+i)@z=$&Ie_2z!&2fO==<(`Yxlx3#2LlW0m_?H4_k`39E)3U}W z%hyIbDHTMudR4`hTEiHy3)3}%5=^5_JkDT==q@k0nAnrJnBjNR7w^s>fX>sYQlXbl zNNQxr=|cHx@vAJioF3J|IM9=dzcKI7Qs`Tc=eB!-7nEg#95KG4nIkyV7@3iNP3Y7y ztSF)zj&k)TKW(XyHo_a%MKw_$hkV+bJE+23{l?jOifw1dxZMznC|xEsSEe}j{qbd; zI|#70A+c9cudx+9hCR(7H53rDu#e zuitK`PCvVOU)94SWIQ_s+3x$d3ce>@k+~-%odD>{D@4E}(*LC^Dh7tXE8Qa({}G>l zd^T>Y%i2x@ltuiTFBSq(x|SL>0xuQ<9W@F{)42#*PD5R^y7T8QTtjSmNU~Y2UcyOeeeKWy#;bnZ50*H_JQ)wm)77VbqR|@R?A=5sIrTZcd8dw zzsPz=o#OPwBw%+Yvw>iORQbb_l2($U%?cFz?L~|*sIOsUebDQIpfgxPdQS5RV zK~GGvwhshP5m=hLfKuY3bzTAg9?jbsyEhqbC=4f{@6j))2cnF#-O<0-dRxt;Ls5eTlf4oUk@?zkgiWh;7d$BTgMs)@jIZlI#5JfXy6;BIf3ob7m z4gx`5zRs?|teB|2uj`bL(MY2{aw$7l4)LJoFuk>9*d@I7J?Umf*Z|nBO$&tPC|bd* zQsr5h!`U`E=~0x`ib7g03`u!ANR>Ufj5wB5r4wIbMdieT66kjzn)f3l__im=qGdOE zeeAqa5vEa|_+Gu`Gqq{cFcI-gj`z(5~p2LqGP4Mr|Z@kOw z0ET@3AV`Afe8W?+C97;C(m;uvb9cRyNiS$y+mc`<9Zqe_KAmWPQJu$kqmTPs-j>de501{{E>e3-gr*;d*S8R z9I411vwbg%2z<P;a>pf{#x+)_-kB5V!xPV0Enf$ z0H5E3vi$M`;y-`sA1CDVANgx;63GMus3Qcr5_*hPO!4VdwVPaJ3)TqKlGYMLdaTS& z-(2ky&Bx~LDg0z0lD2?f-aCXZ_)c9%eMUvoNOmPe6pGY%4mm8xo#x#f(7Eod{aBca zVKSZH&Rvt}_d9w^n_qVm_1V;J9?ppJq~ku`BInuEqvokG=hR2G3&s@^EO~Uwqg#9_%Nn^4EG>0y=P(oYe03ei<42Dgj{L{R z&+dOkka;=~mL_I!TL2Vw0#KCskAnSg0sMayRj{@FCw9+s68<%}j{O%%LC`}F0gZ%j zX97`ZHl-VKZ%<35Gm~sLJ6-tokru8>ebd&Mu?suFZX|f%G>LeO)91TxDV=Rh8uuKH zYK=#GP zH5*T*dE;#oky&o_m)MG|0J_diROg*6V~hDP#8QIWW6M$47}b-Omtr^bUslOJ)lERk zG?Snc_Ab(ws#~BQnV%Q++)}$jErNzhwcAb9>9txBr;nY zK*E`r#Y}G40}cu`r2at*8&mVw&OfpJ{@kfxp7SErNxpNT~S@;RY~4Etq{}=T_dIMsu8(SE!Wl|@H?)5N0G8vXP!+u_Xd)r|md9pR zA}P6!7qf@AR#u({lRJO~&eP{_z&TF_V?XPDG7=!43;^Ez9th!AzKE!Z`~V;a2Q!3NXU%K$;hh?GDyu!(*h2WrHI#G!nGba&)y{ zwm)wVkJ1e?P<@|tFESZy* zA}t6knjqw10Uc13V-Bwb+->sxEfq{3WqdJ?zm3eOC^Cq7<@Pqn-|G3FI3JbLixULc z?E~QRd&s0`JN{QT?EkoJ=a_aF0BF>kTY*mo($=RS^I95aCPuA?6-;j54HEDmKeu`U z!!l{fuz0O?lIHVh1yj!H3$@f}YJ}El2CzVr)xl|*Z+nF+J=pDR8eo=qAeh7$y!#|q znlgmkte{aT0Y|t(HK!U9q6XBCkUXN^u!s<4{WcGm_^LN1;{y1m!&Y0qLho0%!!T<5 zOBrC-VgQ-{Z+8CcE%SdZ?A|eBPf$Jp=vIIYLMLVT=!gjJE5M*P-)x;{jlynT5qf0f zD?p7_#nQSq>Nev_3x$UX!}~2>MZBD)k}#kw)R-vA+dz?xbKhVS!1C2$72P|IFV7kTowTY>6g{lc@OK)!)vEqHgtj=`;=>bUqfQHrmjWP9xQcvviE2CB@QbEiT&jG=C|A6Wt=dic1Gew_@4Sod50r4>`yoDq zunD>>6pcnVnVqF!5hwwzWDNO}=)D8Q)$S(hHEmOe9^K#$lP%)3M2UXH))OjTaHjK$ z1Wla*hbW(Z{LW*{llY+UkoXz=SILo8q_A26P^AcfPyc&ZpkFB?X=CT?^aq7`PLRLm zW2#-@0K&AxJ_tvn=kqIE)_xYWGngFFn|3N+oMk61p&WU*6_cG}mCd8yuU!|6=dk@G z^F8<&3!xE`cszd>u^0qugwm5wo-I#O!6RrT@=_?A5?FN6-0o2AM64mwy5rMaow-Qb6xV=HzYycz45s(6@ zkg9iYe?uF-?}Z;+E-%#02jkukLc&;N7Q`!A4SyUrkB~iP74e;D&^SXqpMK^8hC{^% zZTH*_8Fg;96Cv0}$oI;9TT6^@wvxkV8libLGe_Gw48G|#doy0y1fr2&-Cm$G5MOVF zUPTA1Ue%aGPXWabDX?uclO=VYjIX!ZRV^?E!A_lUq#ftEzH}sEw$TqXACT+v; znniZK;nL}@O|TGfdN(e?C(o;v#mjpjIgy#Ul`4IQmsYm_8d^HDZ#UA|sGGEdmSl&3BES^itQ`1W{E zAuYDiRqdoLS_A))m1Vz)g8K6gD{!1zT-85A;xP>@mbbUvI=I;Yq!A8;Crqr)h@ zyib4`(cH4`fgWMv2lkL99q*)6w$=|ubp9R*Qn~)w0melc-FYatvrYH2nBt z5V>x^`9ExZDQdf`PRKf*ysC2TFUhbM$}R;zgXzddQ6nwIIFOqz^%qy1)Np(^=R_9@ z0}(Z;Zt0o%dQ8L=f{|i#2_3zb*ztqB>S_<=bo;CM+jc%Or3Q+ijaRR^YP3sT$7Ei! z(TUJ}-5tEJI*Z-W{(5v0%6aR3nK$*|{VH-DSq=fsDWp$=Z*xmQjzJU7C=XLeB-{YO z5{y~A9&zX8YzE{F<+o|ywRX-BJ0LJeUS>h=xAsU;XO&4f20ka9!$txHa$@>10vrw4 zG{OAT>nmFrOrPW(BQAFEe>HIexi8Y|0VeJ>ATRy*l`_AYxSx;u0H5&xx$FNp1AyNB zl+5R2MdBC$P7!Y4DCq`)i`o1etX%+nFR4BhClN7%-nS$HOm!P>cBCV@B`0m=T5}0J zYO;sx$9-0N;8T2Nv|ddR@IiGMwLz2-;{sJBpp?NPdo*ziMI_u42x$p4vV`3}DMJIa zUF9`R>?DeLQsRLO3fe~}M_wPi7zx~&FTqNqRRTrs!Y@fq5W7grf=uwz?Rj=xFvUgL zMgXvk7{iXSl;vM^9oZYN-w#syxTN#WfOx3}ANup#h(uk3F%Qv-9zJp1~K8b#o%`=)62T4cvP-Mj~W=Uq<*eRx<; zkYir|+rIRh%NEG?)4OG$3?$zCW z_<|Bk+gH;!z7Rve4I2yt~44LHKL_t0>lxn0mee_#xAP z58Z!W{NIT1Pc0VyYx%Q|VtVpTMQ;TT84K9o`z7huWmFS2)@@=z)-A@4(gU9y(o>aB zbv(N96Sq&Y&@S@GNHDl0vDn+Qg-e?xB(Tj5zDq90w9lH<4rB6|&VVresE^WnVV%d^b0)1nvorGV{5 z0yOZ?_j^BJ@c#vZ{XcCuDVqPu=@P#Z=;(=R*@AVN%?Tty>%EYvVoUWUEkf%(vcYvm z;`w^hdew}nm{mgoRRSoZ$dZ6hWHn)P%QNgqlY*g&j37RNVau;1P z6k_jE|1gsNG5$Vq4T7G5?}H>VgSaIt)1o@h2@mn2i8zrF8Bw_ix zcKYO5(w7BFFYU)PcB?OSB@S`Zp)>NYbQW6Cp1ld?8K>Cs0!WexxIOrNn$ZuV^dx3a zc&`5&P2vUR0~yf9ZW4-fg7FG~yjPxtQ-;l>WLlVKG>ZFQ5r^>#S)phAOJ+S`fn zYeav;zFqgyPWOc(S20>{7dCITF-W|N;ze~)YuP+oq2zJMNmO7_4B!*!7oXp7{kWAK z{0RBEh8e{7=F{Ig5NG<;Kp2BciCKDf0hlHn*$&d=W3 z$bG>c#rV<4GJ~Gi970$}ciKzmJ|BbP1f@Zl07!YTw}io&)Dly35e;sXv%-QA z8eq1}vaen97D-7L4+E~(#$42C>u0sy&OUK4go&Q`bNSnI2}k4-&BdZ_Y36Oy%1((S z&ou)bH4CeOmn^hbN;zQVPkIJcuuH+ja>tG+AeC2>5^B~nDq4bg6+#Qxo)MFS8!P1n zINK@h9N%0YU!JzT(Z)g}UcepSYcah*kEn3NJ3Vpo7`s4p>AY+`KQ^2TcnqnU+c`;? zH0w=QGM|vQ%LC#H;z5DIx6Z;dsntxC3IUxSAEeVTy4@p?rGE7eo9onx@-iugeY~gI z+Hlg~{mcf3-7%)MMWqTRk#GDGd`Nrsfb)*>muq8RZjOFRA^7FWZ$EKz*o#Xsmz^zA48pN|zuKOAeoi^5%qIYN|d;G@8x ziRYRL)xJ4HIE&m&5}A5@lYhaZ_x9JG&6s=z5dXq7b(RSp77}=x$LbdWQv(5P zFM}5f=17s_6doisn;uP}x1w0H5sK4WX&wR~FJ4S*`Y3vjNwYCf=@N@!@S-SA6=k{GFKVf< zl&im8sd5tKxWc5{xT~(^4x8xq#mZbAfJVvpm8L z#KGWU&*rA_O2ST38q>G)Lzjwrvb>_yDQ`GWo%c2yR^mNIwZp!(k0*0xC~xJFThL?yVPX8kv{bC!buFV+7@kHD^p#`wmX2HD|5~yN2SqR z?H8JKpkBE0)~Z9*b%;ekjlM9IB^L%(RvKPVzX36Qw~bFMEESGb<^>#k_<+Bz!woZM zLMRZW*3`OW`+CLT>ie_9Y_Up{PXb^Sjsc|#f3}i>*A@iu~+O^<&V(vp^r%0w{gv9)n<5UZTlgUI~Vn&;Yt0B?G>@L?+n;`>Koa_CNWBYVVdPM<%BS|PLmbuf&V2J9s7(-JK|7Cq;BQ~Uj?2AdzeklE5O&1K4+6JTc`%j=X; zw1yJBF3Uv9OetQUz5=?u(L%KjhTqJ8<6+5Se6mT2PZ#fmFB@-;)`PEuK<7Z8+$TTc z_9;O9wVxy!-L%y`UeVCf$Dx&g`A5jtk`_bhXOeZZz;3s&9ni_38-!iORMd{1!I*6j z(-2C|$q?C1Qf>3qY4V%+qUP$Y>>82>{h>P{V@}5IRU$8R-6YdcWpy~;`cNIvrexPE z!f^Gi7hP3In-*cNlhA3&z;3T}9JLDj-xw2P;fe1}UT`-d-juR44b`R|JGS zlGu;^hF}FoF$IxTlOu|bta|i)*{c>!z2vHC2#{`6(+~|!*PJIi4>BfmilhaL%*c3e zNM~sJksFblWW=B?t`}{96Pbds76+sxlKnJ!$|qUR1Kk@!-O_0E86Szh#XlEC$I4a{g-&WcHi zb-Qa!DTqp|3MciyUj<%Xpw-5)GS(kyDf~95{Ut(+2ZDh^YY4wRNde>@nklWBfX-_Ufe}`4PaTY<% zP##wB0YT%4u%u4$^OmwWvF4>_H%Pq#rw>+OBE3rHkz$tVqX(m3>g`gqBd+2oAf2X; z1XtY_p%@Jw5Q;U1%{*_S*RR%fx5#GMFWXwA8fstZ8sS3a6KB|CI+V9h@76biJ@~j^ zK86%1htVbU`AVIO*JP*;^up~Yv3fp^sjdM`0+J8I zx$od6L>{B}it=JG!WRLG=6TxohAwvKAyuB<$5qzbT_xlK(Y1Jn6hQs#iY}VT1S>d+ zGmfIDCWIn*ntvE|m$(5EM4N(=QJr9ZF?)92?5Y=urlwzK0qsFaYss+lIQ9mJpe-e+ zgQ<(OXnY{Kt%1N`#1=GgTqMPb(MrTfePi}u0b?)o$IqxU6shLlEe0)^($(NpqM|MM zcRCP6teaUR*cyq)M^Gh!`Cqg@fH%Ef=dovg*?hFU1p#K3CJ*kga+zHGUcxoSbr0B_ z;%XXC=i3ox{X&`Jh}vD<=qJO*e3^`}Got8a7dPXLfUk*fii9j$#y6-oq53Z|ouoq* zHo!DK9pCf-pLCVESmY`+-?va(g)(WiIGa1#Mc#llAmjGrq{Hd zS_sX+5G292LBFd;@H%cmXH$)PL?x>f>A;N_zT!mGUy02iOZKyEz8^+F+$MCM*N{6o zDXZIZ9HJafNWJfn?DCsQIx-#C2=`#zmt&Y*gY`xXe0H8AFToZ*HC_P*$N||OT}yxr z$k-YgINAOa=l40!|C)PG@BpqS03BxdVtMmt$Z=EUYLIfFre!=S-uLV4Z2=?OAK}y> zC6;{nz)2C%79fTZ{{=}i1_Kc>v<*ula;BtaqQuvIDp-PHbC z_(pEua-05oEkxZ86|5M3_GII>!#4lOO*%{`&kK%)1}ME8t;jd-)?lp*?>@QmU1x7W z|7uBNmi%#Z0DFE5*z=zsLI8Vys?B(MB9=4;gnZ_v=D*2m_-nh*$EfHZ5g){l_p^&B z%&)S?3dKa1pPgkJ?Q3L(qBx+rRbESRpN0!fY04GE zb~hA-qgO|5NvnVj==x-TtmjQKuZ@!?M|7nE3jex@!-&R#RoomT;asS`cg}|3Z@u%; zVyaGI{9d`-^zD7CEu$Xp9FiFFtDc;J8%Oyd$r%)Ly!XA|MIS>5m0msz_67x6aP0x) z@B%mqr2k0_ezv*%hf|>N>Zb*GK31q`TlNqEKs?U*-(5(WW3B4EE+(=46G*CO%lGYo352qS->WKH^#)E?#F(v-d ziTn8B^v(h;g{(XT)Xz^b$bH~+2Nqcq?BfLo+eTjv*z_yyl` zYyyLFHRQjBtrSFV%bBe^*$yyUsw;Pe3PEGmB9rVI#n;<;Cv0iVG?2x1cHofEhb3V8 zy^EHEI!pr!e=8)EYK_- z=H+N^Uh_1U&9Z?=iv_N(1Kk$Xf=3*AH}UJwp}DdtU$%g9GvPj8X9=B_q-hG5wku)@q-et-7l=SZUax)UJj(176a_bIkNd_OtKKR?Xq z2mj>k^D!yr=?N6=4ItaD2Uk1x&j0h*_3S|UN+!N(eO%#F67Z7`+PKU0__RX71KZb! z<97C&C>u6po52w%nt^KBMp0^_Y58F%J5ta{=&lHIw+DsDW)iDx`ohHw2nc!!rA$6A zr@=ZkF4o^5ZSUD(5DLGBIc8$#iC5JUiW+YiI~4%6`;|`t;@_9DwWPOjwEKHG*z*kzB>Xw(VSmk%$6(jum!4AY66kh@~$_6fBY5My~v zf%o0;7fpk^`4ZW$(Y(-)<}-SX1NQU9*sPw zADEz2T~d6BltQ#w3v>i53*$O+Yt8S+#l@e=>S|)+@Y>wbIF`!Lpt=Iuz<{tN_{KL$@M}7F$H?;Ho^G*;WZN~(r~VQL2rKR zc2(k61w*c`diKqCB6lY?VFasZS$nJP{IGt49N6H8q6^%7!|DNV#V7sYi8-pf_q4R% zGa(V=swB&&4P5k}W)4N!gh6027Z{dH$sBpmUJ)&x-MG0gZrL{(gTf6dF(s1~rtqeC z#_k(rC<*JPPu)q+yurcat0wyBd?g{Gg@ zE2#A)Y*>YwE8@x|9IP=6dxhQ;86WMDHIO$=bdJH@^ki?8g`(z~VB zZi<6eE|8tdZaeHo^`S+n_KHMNGi>`FANIER2j8#Vu^(L1$O{&obaKL2wr#s&`X262 z5dKQ+G>p4@S^%-J{#8=`M`BBu7y$aH|4+n@imw3>8%@-e^kF0Fpc_#{m$|?Kk~DY} z(T&6=GRg{6w(P+ZT8s%xncCf>qvJ|v86HEu9LfWw)G#exXs!WGQjQV<@XB0nlh1tY zk54W`j!hN(&f8$ze8qO@T^$Hav{nx?TLzT0(!j>ck440aODCLIqnxv(k-_hgy#|m4 z@-#w%iCDtJVCeJYOEsdtU5atI0Z%&kG)r@AzZIPRhHsu%LRYZ8GIg$`yY`m7sz7<6 zFd>`7@f0d6(;68_v``gfG-$W?i0S6utuVuw?5p2)B6;yu6M;cj;w^gl1X$g@&?Ukn zwGsLwC9~#tGJsp$*}kUK3Ys~t#|qcsaYlC>lmwa;ld|sk8aDILgzNZhGd-xL-L@H= zx6XdhrWwp76XU9F7;BEE9bM^mg9+mi9 z2{4hB@@c1JXF#!7a@3*(8znJRj|eF4Qkl?VHKO?WKkQ&Dvpn>`yy2nNg$jhO8m?86 z43;_Aq>TPXo)7??Nrj(%)uI^Vxvg z4IgD%*p9MXoR|cNc2GZp;}~!=5r07WZ25Bd412JiK`h&l54dC+D4_`LWBUHpgv*fc zgcTIyU=Z|8(0i!OSK@GckAgpu zv4P`02Mv2f>Qm$X1Fbt*Ek*48Dv*B90GSF=Yw{vtZPh_=jd#%-S`F15Z|K%L(@`~d zt(|q-_aW?#+7RDOWpR`VcYG1Q-6>$$&>O>+p0S?Gj`JL|ZgJW+?NSPu44l2<6x>BU zlg-<(xSq%a@s&xZ0{R}KUIu+qj>=~JHf2CFwaoJJ!aHZ=v*Gr<#|GA3bgpc@xQYWDz&;!qGfmX@~<8K=$L)Z9fS`yuE} zi|8Bx=CbwdI#%U=bChANX?mXtMI;SRFyA6mlS!aawiP$N!iQpKH{tlR9m--*>LM;J zT6mTc6}KA6i_kDG*me<1E}bpbezC5U_X^*^C9z?lall~ck2bRS%w z9gKz?5KW#J4^d3#s>o;2L4UDaB{||Lfl6F#&RlBlr*+0QEG}CXeI?>YMszXM=yvn=NhKI9lCVLdmGvgEaPWP!dTXb;YMiK>aB|%pwObVBCZMk=~ z<1{p+mIewK!qgEmbe^p^M%O>HMgE^(H^u}Cu>tTQoB?9{bW`$MBO+>TCuw79`#*`R zbL}BWhDz z48W_EkuE`(jw=(!>qC~zs|cZ};(Re?1872YbF8Az!(l>A87O17vra3Udw8Rgl0y%Z zSlkw94&7l7W_OmX0vyC9>0=fk8R|fm$jtyQclxjj{N`b*+T}JHQGYT;&EGfHXyff# zuAcdD7d)VX`grw|xSC(5{kzK30J*ww_>AK&x{OLZr=?q+q97;k9a+7P?=Nq)Inu0M zr7c9js)*Cd;OoZ^TlD95p4~VZn&6+B>9 zXu-QkJJpL(1Dl*yjXAi7b7dFQ1oE5p%~h-KmwW9U2@4l4PCT0qda`zk2CNBPZRTCi z_W8UYP9GdT>LOfhUsSla`?Ej>?+{n3~7GCiE&W2gIzH4ytcPuFzSRu#J}uq)c; z`L1^8L-6KL1pzyf$M3)=oR3$)CVtE@C65EZ8Jv#0!5F}vzE6=njt6IOKAr+&`0>5E zU^jTj%3BFx#i^ zVJW3?Df7@1u@Q!?piQQPJhGzYp%OWY3qGpjl}eoR(}vfJ33{RhOBkf1DHVuiMQ0^b znWcAsq_WBqf|>m~eKIWtexQP-6lAR`QGw&l?W0wmJq9COQN0R7rJg50AisxR|H=Rg zqtSpE-ST|*+I%RWkrr;O`;s=_EQ$}Gze4L{We~CULSxWO#bnWDQ4s7>Gh-s`^845+ zwwrTbdGkGwrIt_Cl}#0U1y)~5qnFyYmU8*oXS=%qpiIM4kdtA-gX{S$W2Y7212R@l#ZS-wLCy>)3jm{b1xq6ZWyH9tteKYv0? z8;E3DY zjHcu_ZZfX-{gD9WKRuUJ8#V9y$m12USvvR`R!KoD`Vf`*H8!2Ab?A*S!7CH+5^VY} z<2pUHFF#dLw{Z?xK*)ANI?5FiM;tQhVSy{C#M;Zuwm}xUX zOPh~|!f*CdzBSeFxwCBIMjV%$qRU}PIq1wwRC^rb-JhL93!R1IdUQ(wnvcG?nTMxB z&)U&E&73&MsU7OmBQ|CjHg}IYr5U!XyxfgtC)+&!kO`Kj)uLV3!V(UQ=99` zh9j}13|6!&Cl|qD!CRtljL?7_W?7`=1cg+q%$f_M#eZ}GGE!rhDV~vv&-bRbiPAxx zPdUeWDnW=n;^kQlOI)Q&t^;!K{N;H*1td}Ya!DjurxCV!%nmAvyQ~bvcCy46{JvEE zcHwQjT70**9Pw&eZpAcRg4ET><_+3fnYf~|SvySh!P}wiQeNoEObP1*z4AFix|>#m z#ug$wLB3<^5Q<8(+x(qQP=2e@@Wg%QBAxGZq_1V7aqjkRT3Fb=drn-?jC?E{6kett zpcT)RL>fov&1Oc&tr)8uAc_@L>-C#Owknh8hwVyaAAPawsdr@;^qPyQL4Ut~ohg%J z6y}APLR~e)T!W_>og>H~Menw>jl$NsO(?-C?ujsXS84?2gu9!GJGMR0E}f2to<+L$ z-tHuHj-vd^u;$DzPI6J8`j(H3ltMxAj+R1Ys$$w1J)r1bp|*0xz{I~xB)2g^8YaC< z!1x$6tO{rVR~M2!FaplXA1cu24w+XO1{eRDK$Z5!*5E?$p64rdOm`Bo@4+~1?_8Sb zt1X^a91d?)-XvZwxF?}EYuyQAEM;+31v9i#fQ7caP);Yb;Ny+m!8KjOco^PyruYU1 zd61H}$8MbyL#QoxPhAx<8)U|T=ANX(F+C?DR1#P8zL6FsflUEEjdSM9+)h4B9`jf> zXnl1{Qq37{57>(6pq~MDgn?{eq~|qB$i4s@Y0bhafm(IRlcdt zve6&NBa$i5if+RaZSdcjlFS?Hr zybzjJxjsLX7rOVT#BCy+T9{=_a!?jFHq+~}o}saTi1ED`GIu=~ARuqS-gPB?W!k80 zP~{1hLB1uK;e!T#QEhFi&y_>C0nTG!N)PSs(AT(bc$va zxM_3U9bV1ILP~we3ln6kU~`1{VG*``qyLs(y8yjnlsAez$YOOokEU^8ZKKTL$H| zEnCA7+}+*X-Q6t^+}$05LxQ`zI|PEeySuwXaChf@viCjp)ycO{-E)6XU5hH#Dth+p z+1+#WXel-E&9}#&QVW&6Ir{x^KF<Q1OoUi{AdQpOM#Y&do8uUiG0g2cF;(9kyoin%RuVN`kb;rz5r`V6 znKrS*e?i?FnA$XNxybDQz?r!0w)*ny<&{6=Z<%E^x4O9e(L*ohl}Ic)u6yw-7@F_r zao`qgO3uJ{r`Ob;2YaBHa}Y%B(F`kTx^X4?AI1?m@#ysNnf^K!^-T6HT-A`@=U3aI z7#q_@KaJs;IEO~piKf&AhM-Jy)p)I$f-x)BlO>Ke3Y+o?V{mAdt*Z;sEkr%n-eqNu z(LNvydt;+wfGBfQ;2*`?dLbCSqw0vT(Hlv+^s}~*wPX911#%{#{v7kG2_RcLJEbs< z@=ifJZfo~%K^h?QdRX0<1#TtjcdeOSTWF(wlX$Tje!biQ5*O;)9(B`EP@cV()KpMd zqehE{GVUJIazATr#Fp?hSCh{#ua}K+ZUx~GY4AHeCBRQ``n5h1NCp;~&f=LC_(;-r zsfXtz!T)MhU;c-S_y1s7XDZ{itBkN65JNnOT+4#F7?2*4>7Z0ou)S><`o;^2KM6$Q z(m_Qwy_I%Y9Z%ub<@rzN)RiWG1IbZ$w7WTF$UfDl8`t-FwgJwzuZn zMWNWVemn~aq_zrvEXPeGSNBUX{j{Ru6rYCpbhj4ne^bD}g=K~I-UVG#={K7X#T1EG z6&={fuP{_yu+@Wuhe7Z^|jNsJxPf+ zbX?&mv|V6D7up)~k=>6&@QE4~ivwMHGF1!>r16C!*|CmbCK}%7fnQsV3#Yi+&Ys&rn#G^^qOZiy zQ&J?mUA>`48v{Tm0`PN_F@R7^MiouA#|y51>$AQ_g%k%;e;LSP@v-yuc8UYO4-V6K zrRvAcJH?iFscG=RU$D)8&cJ@p`To;_Ox%o2{^F4Nx4YCoz0bd%|J~(zHP!O<1G3y4 zfQ9}Z-SVH`{X6IS&)9%}z5P$=9n)>wBM2*c5qpim-(v!xCN1eJ+3CYbF-d4yKdo3G zpUQjp1R;Ve2O2KMn#37ReS_f00Wq`?-S)CvMa7H4UncDr)0t1K<3h`KJztV?#6jIA z)N6xldUWrE+Zl#XEyPeQ8{phF58)}4Ix+yJ%cENNJ5*K^ZI&DaUr~=;is{&Ka# zn7R%YNS{4=IqHG4;CDt`PXEC}Q;2^v$il zk8qLlinKiWN7YIW{gu%Vpe`XmXW?(EiT|uJvA?glh3xIEEdY=y3p?BYtUyH8zYmQ+ zWxev~?|Zd2i4lP^$4@0Y5T6kM8Z7sa^y%`Y`)Xx9%I?m3+_@-dNYP!8t3uXi#Fv%2 zen%|zE+icQ=cu9-DMeo@eF@sgB`pG`P#k|0psGX(a$zioOdSVCEsgm`N)vSSWNAYw zvo9UHjxt}gPJ4ou&$Sm}4yQrEk~}jYNfLvX2-FDfp1bX9eycb-Q6+54nsMCY!wn3W z1r;h}A4Ztgx>`O9&h|ayXN_&BXHKAELh^TMsQNXj0M9KpBmBieXR=hvptnWHM-4sNRyk+T;)SyxVjo7QTZTR4Y~1KZNzz{92I=!pC`W_xXu0oT9Nv z?-^u9K;En=XJoriv+-OzaQ!}LO?UI(H;k~*jOYwt!+-+nmcO~4{@2x)1Jp(UEI2YI z?*Do53AO%S{6A%RbhUgR0R8bG?F|v_s+5RvIG2mE=G^w3K|Pj8j+iHqhGHZ0HY$mk z5Hp5%d9(7uRrn<$YAex?Q)5Frh2JcnRY%aQ+qHGKhjQS15m$`m^v3iY196U1(Pa~{jx<@&%~3cNwE{?BSrr{{ za?7Vj)VH#wv+ZmC_;2~q8l0R{{w+0j`ra^x6t-;(OPg~*+~jfVBeo$f;O`o%UBY+7 ziugsMog5Yow=<<DQ*iOHhh5lD%esOmK^u_((6&V>dYS}9YEA{~X z(W^7?c^^WU9Zut`+BaWjq>34LChP;L_x30`2Xs2jI>eS_r-UJ&FN2&;Lz$E~IPKBh zm;H{^$N)~LV`;Cj<}FDIW@NchjiKSl`=~+QJ5LJqg;;7Al#+H!gU**<-x&gXg|6gB zZoU%o+~bDrB!+qF08@>ILK{^KPGXKGd3byHR z>emyc1T)kC2XXnVh{(>k!QQvzP_y4yRG)eM3bxW6#VT1EqU*|5L#k+uNlFy?lU9Kx zEg90?`!ZTbr;6J>@AXSsw!?vX9A!-o6Pyfgi>ab@syOPC)8?UHht9ztls;)e`MVl` zhS3PX1?lgujsHbs|8wXFe|2`YvsE@Q`~Ou*1xx;RHh;=QRT;ZAcEk>x%Wo;ih?3vC zN%?N4^C89d>&+e+OPovor0m3t}-I9fi;( z;mw=-Y7~=bS*sX_R4G<#ynV8By>p$nTqljPc0;$x}Y&N@bE^S?+=*YB{ zP=RIV-Yjk^>1wPl5vl)eTL2IH+3>>qFS2n}lr;%TU#a!0>x4prVnttzf?bqk(c_ zx#@ftA`RMGZ#?BQ8cR#MKo_Mdh(@+H%r>LruImUi=Wgo;*}&q;yELYf!q3}I1wk zPMPSYHC{>dy^f~X`Dh`YTP*e9&dkveI*+5JyA_w>0Rk0xH1=nd)XMf?)KWnhhB5tS zcWsEI^8z~&4VA!FPM3{vSroG0EUw3PIbfDj;_W1SR$ex-z-*4_6-sQ0*}4}Bp1+7t zsVg_spC`Ig%gIMPvk`ss)+!M^6A|bJVfV0O!lAk#f}Zcbu()m+xT4zQ>?ivT^U}c- z8ycU`1+T#+`PXu5p_W|?T6n>3@78G}58O`D*o&P8djp&A81Y2oH;)Te^UP|cKo#P*ux9|hVA}H-NT}`7eMMt_c6c#L1Q@C6 z(t#f>*RN1_pOi2fy-J~gJIckFNz+%K>*(^+8+9)Z--iAC7();4!O5|(ogS~!!Wp+- zxcyXb8GTh*_%q$&jMlCZmr{sULl9ite)}!EMi+yi;=ti>5+|H4*IUv{PU@E!yy_+! zM`wz*dl`e+L>KW*yI zQ-5#jKV@JnApZW19|cfTpckvAIWD0&06Q$f&(=jjKz3V!*u?e2qsq0tC`tP|E)_^t zXM8liamklv(jvi|dzC;1*2oz}>T4``(9thj06@C78F#Q+%>bt5+ZSvN>)}u}$5GW> zBb)JC1f8-_y71<8Tmcge(8VKL@DmxLOl34^LxL1heVuTGS9r;`FsAjs=o=TMafvJX zc5Cjlj~SJWvwp8-mJFB^O`6a3q<$uL>dHS{z>vi%I2rr4r>!9efG*?7fiODRVR5vo zZgJ5x;I-X737hm3?SS;Z;R=8EYiB3>ylE3P(>4rl0Io);NQ|+2K${K!4h-IdI7WyQ z_w)uYW^+d06hR}`)6bxx-ivg0RQ-e^8)O)dsi#XJGKoStT!K5U;C&_!odfE(5R?v;Wr)`L7i;v~&BX)w9Q!`Kw~| zr>s}g`91j38zJVS>rm>`r@X^n-8NWrUJ#qZ$qvaGel|z)+yz47p2d=j=E(fS~}W#I(lfWO4K6w%UO6o z!0Qk65A*4dBy=j^sS=7}47VMWekCN*u78>rR}r5bLCtsv*WC5h6B?B+%$daY3hbnw z+E;k>f>KXbGB=-IR5PjH7n4?+s3ZS5kogOJrnsK>wcGI%1PJks)(TaRy1GWI}G(O@b z_{$*{>xZAN+4)fg%`k)Cclb%9GFY>a^SYF!5o_sK>u>AVN4wk@VA^2JR%UlJ+PF&7 z^|79PVaO<*>JGzhX5n!n<}{|VuAs$#V#G^a z>;CDlKfS}bJPi)AoHZ0NME{S zovgHEyN#Sn*7cM+L2>_LClF}yQV$yKBY23N+dSP? z3K#X-=mJLfNhVn(sUJMwi3+NB!RE7bjKdodhEjK&MF@#kFrl;`Vbn|&`Bsbpwx(N5 z1j^;}TSvNt!OQD>H9Z}#{5~Z}g#+V9xgUhn-sSV|Dq|osJ(5F70F0%pvv#IQeB=@z znb~S2YWo+{%oFp;;p3yH8lS$0O`@t}T^$>tw}5#gZ=2A}>|AFaAF*&144*GD1w9qqyiqo|xoA?t+r zSpdAY-cG>yD^Rij3I6Roet<)*8$)<;_t%bWaRae3&eItCVY1S@rmewG-l~DVp~e== zErRv;<0M>|GH+w|E~Z@`jZ8V`CN3G-RbKVwNSZLhCs!z3Dc-^8b+%BE&S4*}4vVO# zQ1y7f2pwz1_&Q@a_!DxY$Co67`ZYXXOb1pIhbG|T*C~xATL8_%Cb8G|?R%yDZ_XZ; zs$JbhRh{xW1~fT7%>>7b?|axEkcSAuv%@H3M?QFkyPJO;8qTrM^`8I-1}C8A@K0Ii zKOY*RfQB+_19ufC6UTq@Ix*INd!0XJyK;Bb%HQ*3W;6Wiu5;D;a;tC~R$PA00J=?N zFKrE5v#vgsK0ZWA2_q*Zt&7n7x0v0&{b|LmRqSx0mKun#(~hvq zuZ^86N7#5oS?We537Xt~gv3!S{M~^Yo8wLny^4a>x2`+?yid&F%*me0h821cCPPCc z<7~g}1&%ZqT@rJ#SZYzIwmVNPrK6Y}DZfhCPq;!PA?-82y0a zoWL~u{9tDy+`zd;x-2c zBsG|3rNn|^ %iz*U}$|#b$lb`H!rQV|32_K$jb?KY>sK`dTis&8}-c(hJqm8q-=x77onOY~g{CP|X9Y~~+xudE2AFv}4uR^TX4c-74b_k7ri8PZaD{US z79t16CG=xQMU6_3ie|2P7MNtaSuB~wAY;i1T?_YJ-uqF#s(n}fwtMjaIhtXHoN;?3 zrAs?QO71XHKpMLYFM`G=JjD`2N4D%4?8V1NM2ev;RHiRwDowhaMjK|G`l*>%BeqC{ zPALq_o~9Q3>zA-V5P#tiAeE4aA9BPczLbkTc0jy0#!|-hYqJ^#^MWxFG@AXI)J2Gk zqDUG&VQ3{ac4{su#G5=UDDXj?bgYj0bUGhq*~Ky_?AJe%W1%&K;v9z4g2a# zJJ4DJ?3Pwmz6LZe+UeCcoksabw+1V_i=Lq752ZopcNWcc1HBK$CJTNubwrIsccw)u z)r%vG-M5YvgxD?K=WOEbKctF=;wDj1pnpQmDB*Ow#?777fmEo;e%e=L!DI_pqma4( zbf@$Kqy!!Xy9QIOk@t)G;>1G*f%@D9sVVhF%+zk(Ce4mj%qbRiHTtW41)VX>Se7&x zlPSs%I$kx+4s25YG8fsN(}^1^4YEoBrLSKe7RyM868 zEDUYWOO_2h@YqQHAoGiW$Y-NHh&|V24)sq}6R)b@?vgkSTjl)LY3qiZd-wQkNs3na zudE9Dm<2!C3aLt~VO2Oi^==Gdho#=c&83sEt+s!z?G+&Tssns=KezKRvV>=DQPm#1a8d0wc~5c86q`qK$jt}9 zl!x(~?%jQz?R~pLNL~Kq zz9#g3GczC0pIBa?PB?HEHbyVCv&*-pWo1=4fzQ_W0Sm9peS;y|y6<5E{64tOhtLx> zfn&ifBF-gTA%!BLPwQ;&>Gxp?I_1chww2Bl$n*Or=aCiia+$@tz)QKtXE6*gr>J$< zE`tgerOV#AkGSKey8@>w5@;yT2TK$WJ3V3$~q>x6(To;zh!9q+iuI}<>P*Skh7+^o9|zWa%5|*;pVu%aLdRHg1vzY z$W)yZyspawX_XfQqI-K6juviV8OQ`wkHyL|S`FtVJ^A_%b=LZIZTOD$K2em&987-G z(?iOObd2E|8g6INMh`I2Q=qVShDA@0V>U`uk?+P}&$+@zovW4uJ7@KGi(KcAJf zlq|juBy(w0k^n?LZ8=ene)`?b87OMLfivNyJP_UrUUm}tLQ)>JkN-9>QjtKSACEP{ z7&$p=?|6f0*9nQw-YVZE>2|cZUaz*DMvaEid^M>@Ljk7saF*7+*V|Uj)b1Op6t|sT zVT)gAZZ)E5A`d>xHQ!ULa_;e$OSF;;htyvD>pK2>et%Q&aOh|=xM?|zJ7@U;wk=N! z#&gDs-MNlRa4UjsLEU)-oIGcbY*72nL<2ftZs?OycVdv5DoqN@8QV0%Qz!A5|$r}n74pKOVS$R@6Djlr1_Fs zq*!n*T&1})K;%pt_BbNhTkf>=)M^V1<&|)~n2l_{!DsK5$=O+&Y|~{yLc)9$e}3W+ zZJ6$ET}~UzivkRG1Id0Zk)fU3@tNU%KPiDdoD*(2-q@rVVto;nO|+Mi z8BVDB(h~ZsbIXh5%9>$zd#MIn=u2JQ(v64ao>-dvsR|k=C)-bk12PF5dL4&t`%+g> zi{c#VFu~0;@^9}kYM}$17YW1hMTnj#on|j5*TBh%nyfCx;jKz@W>KvX$qS4e@~-Zi znzC^&Tq*a6^L)q3>lci%lVHYPV3rL@{pbZRL&o%7x70?M+VfMK&_At-^!)=|g$+hw znwF9?x8cF@8%$1`F;10v&Q7k_7J%q08X8+xk^O~x9eB+1ztKFSG&SZcydxOu)4{)R zm-c0U`~mwdy&S0|0aRM|`2P7y;-4e!|DnV9CtvVcNbWCR@TV--(z09SME7Bs`p7vR z28TU6cbW!{tIND%ZO<7#g=efqsF7Q>G*={1v|tW@f8cA=6Ac?Hg#0YU`}!EmyVo3Z zetah9E!gimcOPsjIG>auUr=uD-8Ehmr>EEHb#*P~bS$Y5Zg*#+v)#g{%(r4xS2*9& zPPUrHUeI3g0+M%e-tfbyveJy&Tl7}aC96*oM_cC;rnv2}4qMJUI*Fz?PRsFPZg}1H zh!DjTUirlE`Fjh$b|hZ>=ntSCcO?|b8G_Q5pN$f1F(UOsUq_$Wln*X%aXg_%5b6ky za=`K9MQY0zQ195p;Il2z_$>*h8G$M*%?XV<#cFLXq4lQqNU(np-(HJx*xJ|99m7e^ zYiU|L@WJ-;G5;9KO(ZKqdeOx*o+W_^?qFhj@`xP&%tH->eJHg}p*F z5o-sl+6G@2X*~;Z(2iS3FIvxSZQ2S#gq2pbXL9@Y<2kv(MG>)>D-B6$27@e?Gx7Z>Pb-zUD6`1jiq{#;SJ z4VmgdwehnEup)dE@9Cy)A5p-EgI7f5<8n^G03j7xahMs3hsjjw9{=| z?aj5G{rpSGRtZi56C;EvcBz@B+K(W6me$^SOAAs4ioC~a z8}aGW|^3a1p56k8wJ0V$$HIk%37Uh($`) zja-mW&)BwMYaf$lq89NvE@vRxUilYP+KM)27Qu3H^d*&~Qkt_2Z8W8wQPeRN_^((K+c1fH7BA?y zMEXdwB#ER(CW)lJ9IqOZyXGiX*~AxRamskgt;y>MAgr_*HD=mw>wu)VtCBj&xV)Yy z#)N(gzxz*q4aK7pT#hxI!RlVymp!ah=P2B59aRj#mLs05!d#$WJ{d+BU^S<(u55H7 zy_*zC;#>vNgf>>7wqr|uLa=Pxv^bV(uj|D{I+kQH1>_DSb3vRTxdXg*BB!_;UYau; z7=cpKxD3MPC?Jf^P0@CbZDy7HL}(C0JEUa3Sle~c!jG{xJqS!az_n;J#Thh_yg0;@ zaWB;QDS-qFO?zef5`0BN7JG!v8mMCDVPZU%%2;ChdxF(dh(}Uxw@1s%i>Rq7byWe~HyhPDxdByf(NOXc) zDeCWG5T?}dTtpTaKJen(!9##?95Ka>sGV>f;wf@itzFtb@xCmPH~)E)7^E+_(Ek{t zpztuNBCMb71UY?+tVYO90j8kym2xhA?b%qb@H_SW%aMxXj}qYQxEk8skp>wWewa!a zGX!|K@*#8>vfcpa{qL^q<@EA5?bre=mBmF@wVxWX=$~U$-2$^sY+1kJ1Gj{@bi$)n zt_G1Kkk#GJ4?TRC2eQGw0yoHDT9Nxe%`Mn|N|igMsV=pKP9j!-Nku!6$QP;WY`oLe z44OLS^iXoeJH3514YCg#Ju(Thn=-B^<13}d>zbKAlJdXb8+Z(ff1|7LtV3~Xq-<7- zlb@qg6J9ow3U5$7Z=(X4UzWQ@G>G-fk(fc_#s>mapSZgY$N^r!Fo$c zZVikqvoJtiDsWHfNRvC&&Ns6;8wOQrAg)qR?oZ$%V;f^>${k-58K`|b+H_4xIb9K5 za9|$E#672u8>&%sI>F?m_5dPQ42@d}-H@5I;{r^lj&8#RvQ997VtK^kKWOX42lGsU zS;hcbp!m_&g>AE5qtj60aKlkI{ZQ}?+h?VMIyrQZU@O(7%Dt={W$ebG6N1GNb+HWm zjJN(ZYBb|vZbrD-^&=r60d2K*yyu2-Jh3K^DcVk7{%-Y}$V%-r#B=6Gi}i{}^*xY% z*S$K?=1VH4$H)M?pp&K99jkptPWF$1VqX)f51m~kx>J+#pyAb+`KS>6OWJSB1{MQ} zD=&0YKn3mf9Xr3!2PHgenC;6nui=ULnZFMVAvNHwn%P_F6fc}Zf0+uMEuBkAwU|3^ zin-^1>$yg-iG3s9=u|g&+MH3%r6o2|k;cEW7q5`dsxor#OYNtyT4PRh?4>kQxmmJ~ zskKa|J%v{X%uWvl3pfvQ`*vey!NpP$A~ioiD*f}m@BF7d^LWAXuPOc1$zVi9kz+t! zLaWnERLbX=0&20?5{k{agwoiZyLILT_>@=I2 zZLM-VP{{Mqk>U+ULC@B@P@bWWPe+#3J+{{A&dL=ZKW0??i{(%QgCT3kt^gsAW5(L$ zw4r}?=&I}#WQplX+hZqeeD?9`^&I38@Z_^YKQ#Loxh}F4sYB1GS2fybA2qviaVE4Q&~I#hL(fxj_&QZA4jaca z0*O0Ea2z#^%|&jk-ONFl)pdJd3fn(?ULq6w1$?O67e=y2M72_4(yL!);^FU< z^@#NaMvQCgnSrAaQ{Wy6_GNhS|OdBC!V2KCY-{V~V zyBuB0#_XS>@*Gh4zoPO#<(Z~T^cp+zZxDpObJcv8`qh3_@`Q1$8$}h0r%eIN1d$aj ztEEe$bvv;VpAqT%1yu)W2dU#qt$0iyV^M3rhgUy!oQl|2_bd8MBj?C;A3fv@G#i~p zIq@5B6Eq2XLMyINn?@mlU&8<&v~4OK`Glq-57~kk|5CQ`k#d35k=wK!rI5Wp-q6E` z^K|#l7tqpC*p%ZI&R)lm&NuSYaWlth4pyb!6g5M7D4En#w$oJkNP0-{$Ds2ejwk}z za1+qPQ@5c&!!L9Il=TD$Ob!{yPazKOq4cb=31R0gDEk|E zzFA<3@VGc*ELt-}U6gJaE|dHiDOfGdKTVK!htX1=-9IgwE+73gNFJuXXFJg}pWaG6 z^kevh@zN}8CfXad4)Pna;R#3Nl)<=^i!9OCjlgkzWftn0UX zxo6^#2QG>m5OiX6BpDZx;!yX#?L_uGa@JzP#f?@)I($S#{b&=QO`jz4^9H);c98O) zr|w#NiGnh5^BykuX(=(8(F^3LKRhDX<=v>ywsTIGxCnZlphI3cv0jMfCrXc)9i-3j zsrWNCcOMi#``Y5u!GZ&`02k?EGyv@;ANpO~JTJ3<;w?@GnS=n@3IzI638(9OC3EWs z;G5H<8UX|GC#lplv|+4kWwJoV;b4x<;J^j@j02*eS8g7 z5XX#!LWeOXI=CFg5EmA|6}3U*C`xRaU&}=;q1c+@=`FvRe1e8_gb1dCP>2H)pYVK- z29jS2el4W-8;k2@u>9M&^B&JZ`{y?M8HETYh@PPM@g7(_h`9Bsqb)Sfwi)X=kZvZ8 zEi#Ime1OUn|5BL;KxL-+`~&mwl^B-6MolhmHgoV23TKRettDXiwg;r&d#K_QlM`@w z3|MW&Bxo7om<%;eSi@P+K3`xBzWtO4LMZ(V4la5F13IV<>uL_B!cQ>KQHBG`yNJqx zwgaiv&t4)L=VjnuVj)PlN;Y9z@la<89ez-bw&Hl%z!nZCo3ty)(uht zQtk4`Yu1v)-#8|dYg^VB>ii&9tAFLR#wGnZpIT)g`UniH;2>DC-FwgDRXY=Fw}BFN zQiex4^!w$5@_7!6JW2JB|V*$HTqHVrvS)ibz@*JtOk^f90P z(P6Bh!U$vRkuENGv8=Q7hCu~K$X?J9HrSD`_ys$NmM!ocT3v8VPVbwfsf0D(jAE+O zs@9WQk?oeL$g;9?_rB#U?^KiiBum&XGH-mm4nBzUtRG5JSLY|x?&f~|wsa|V={a>h zLB2&tlz?khELeRORsHP3o^9;Vwc%!!SbjWf?qROAHg`AG*b+LneufL{x0F$KDIN>7 zdfLHwyr|~tCd}5rMei*>zs49|F0U1^Y>mMl*&rz!TTB#Zvk1xQ#|$gU?y4Y6!W;p~ zn86q!M#@AXgp~OKNtwY2E2d4K0V>9ROHu_n!iec^W3Sm4QpZMa$Y~A%)+R%X zSuia%GI~+-Xm0~h2v5Ew0+=l?|yge<5{Cto+QWV0^ zJcyEQ7~PgSZ&$LZlLmz}_q$fm9ZlH!W|!Itp~#G$SJ#`#lMHp`)81&HE}yO}8gU+H zO)#z2Ge_W$@c8Hs(qj|*r0Zp~P~WJ{*0X;ZrmSm~FYJmwi+w8~f69ZtFc4An21!u- zVLDOsRMp;3{K&KPq10{LB+5Oz3wtj-(d8K7{FQtIh|=*&B)V;$z_Nd>*@9(MUh4~s z%=u(>n^!X5`_Y!WpV398rYA&0T9SM-XXCZ4pTq_pm?Q22P+A9gE#3xOO#?_McF=-& zzSR9M6LGVLz0`(!r;rd-l}uy={3WPTfd!#JReWQU+J25INP_p1ZD{XMd>n^Ka}$G} zfqM1YRbOnAYr@Lb`r>-i&qwUC1uZ>Ja@(Un8@HgG6I_8B58t9^9rlN(Cr{hf)@A}* zCNuDKL@WqXv8^(`RQ3$KEy#f@Z`koD%`v;yb8qtmT1G*=k&ZgmO)~asf}7G-j3?T_ zP0-5ewu~UZh{2G-SJp~d(*E?PZ5_0LT@zeR)>?`2LHp$NTtk)f-3Ou&!PsKO=}DgP z+ry_dfr)v7cSD-v8j773Gl*fYWl>SMmCxm52g-kAf@+_HlsL`a5J2&Fp?4IJMeQhzsE#%v- z9JuqHx(oK+u_ri%K_bTEYE3Y-igv^aM!BM_wZc^D80wvL$_{Bsev=|begJ5EmsETy z0r9GA4d_By8l6<9m1jZ?hlw;7aQvBG+4i>D!6B0uzXvORaZu3Ugwzm4wHM1vQr|&n zQc6jgf4K7v{No4DzlUTLsoklo04!S}0G9B3^4EVElKq}0_fJ7t70us4*`E?Xs}#NZ zo9{06nqVr+g#p*&knFf5Y))0DWJS3hg|}weP;e|pPV24{;~VJeBT1rHRZwbja4JSd zjDQ%_DO>~t+Nb1(it=qz>GFxTX#D%uH~IMq55vkG;tJeuJyyhTVuPJIJi26@N(;D3 zS$AX@@ptF*C1Nh`T`y-`U-umZV$l7o?dTqEdyC<24Cuj2fTJc0YMzkonX2 zQYpR0GX{chmc1@tU^;CeOZxd`4$*vJwqUD47y~Uwkn1s2qN~7`m74b;kIRuvj<0Qj zVfEazY6BfHibl9ey0xkJvGDpcQP@@a@v=@H7X+U7t;LhoZu30*gV_1IhAKxiKUvl< zBkNzgUlz>I10l2nZyZB1NXNFpMq=n-BH_;ZRo z98<_)jdVyGi^_m2fs(bgdGL$VkNm4AM}!rcDyb>7XuGjGxJH?}iUQc`o-E17eX4L= z<@$D<&P=S;R=C`Js&}>hx94GAb41Q#=%7RLte)T}F}caU9d76yX(tSrm&@} zmp}Reu7IZ4zXFg394P-6q=CX;%}@ViP*d)I8`PgN^Z!E{=zFUV33kx~EGiu=ZjQ1+ zuBwastOP?7dv&FdOr-#D=)J$dcap~C8Qb{+#SW)(*ah{b8uVVk*501js|6EMQNXGb;TcRb^QA3iSNz3K^!)ahXtMNt{tWE+x&Ib+dO@#GlGA_2p z!h8m%evx1l^25YP(ysr(l=0|&sQ)ZEmls56lfh?op_K> z7(Uq~v}rBKTLlaZX|}zi8G9K}LaOA<+4XjkX*nRD(fk7BV?O8^AT3rjh3Rt%g_%P! zS8EJ2Qh?$f1~;!UsnMK)xc;(Uf%}P%2%UK(MLxZ9Jw(dMFWg}{{ghIfsGL>}oZ}6!AOaSem`Nm>rLNjJIicrv;W805B zUK}?T!qz9-*ba>1aCP1N9iF%b&z+GmO)%1%lX)X^;-eGriFWXmLfhY;u#hmoE-53W zI<7Y^@2iO7-RmgN2D_3-2V%Aj;QOU#dTG~)tjWeThC|s%%0dS%c5wnt0WamlJm4`X zITvRHR_dfFwbYy^p?Yn^Is;OI1&4-^wUHymrOeYT0l^>lFlrzG8~*Gnw|1WX=J;V# zurVoWse(o^Nrbt6=%gjhXkcZ3J+0^#t7cwCox=vQ7S;J=Bo%-fM92k%3G#9a< z)3`1izVfMo{^oQCv(6di-6 zNtpE0_tWdwyo8uO=fJtJxVbjerUWfhOL+CRmZW5uKkiIdsNKQ20d5-+01*4{!vG}% zV+*@~^4dTbfBz$Y%6c`K-}o>7sp=QJ~gwXDjZKO z#l?jFbb+UcDmD^#Myp9Ei0p{J>2TvKvOju6 zyM@>|^cWZ*OA=UPa419A$8r*h+-htPSW^ksrrA=qHPUc*Tx9LWl4duJCm#J33)N3Z zTP+#;I9GUxm(ZtvL0K(^Pr6Fk6_E942->@vla8-QLMiH7l7%cMq_OXpZ>$QsQ^@S~ zlz^+Zp;bm5ikHFecKJgmEOX4T9n1pbjLk{q;_b3!Bv6O*1T!Gx)Z7&Nvrl}6c%_ut z=p$T7DgW-Duj*+YEtj#|L<=S%R6jyw#FP=$XCcEEvufB9q?r~i>~O58Yskp2CQ+8y z6C=!zSp>^Y@5h8grpF3ZtYkLVtfccXiBv-=xa?cCRRv}+V_N6yNIEI0OM`kWX_p=s zV?H&7p@J>B>TKA#DLIXLI>vKcSJqdR#Amk&*IKy71cG-6xlm0wiY7&Juc@cu$)n0Z zYDi%pz}TEH`Sq6!7b7o>tg!>Bg)sn~k}Vk*Lm>Pj0TLA|KvFJm@Tu;Q=tUei=N=q9 zWc?}BfL%#CIAVf#32txlGj9W)8*|f%NByTje&=zyn>9$c(2AM8K_%sSB2&HYR~bW@ z3z@iECQUgndg{JZau?o75Z?}K#t1b^uXbf<>Y}X%F8Rz<4S}QD3NLVc@{}mWh$l0y zj)Z5d`#q85;7ac^_`J&=1Ik_Xw!;E-$b(2&eXNGMu?+vxcs{t&crT11kZ%nT2eZrY z(3fMfpa7Z!#(}TcD%R{+ttcX_=L}X{_)KCY%hwK%+PhxLFIg&+uhOOEna06m@kX!+#vWEuC6nvV{#9=fh+u%NSW6d%0IGf+@ z6*P8FdiCje?eg!QyKC*by#?BjX||@EJBq(7a>o1+fKT3i@L9(95e=Lier&<>K6rEr zh!XhtqkqGtxZ@`(AY)<2{=Y<-UjY1OM*o<$=r1e$RZIR;_N&X-;c)!bP^W)iCmd0} zD#9QQy%hDmNOFeI(aFI(N0r3F<~*NNts(uf(^c}^f6wtwQj--DF_7ox3TMLJloL(v z;s|>P1l21ON^*vIa+EmMdAvq!rc7QzL0+Mzjk=lC)ma8bJp5~qK|f*Q@T#F!k+P|Y zgWMDL-YHX{^qXso$PwR=T(dJ7J_@kcs35s(p0p2&3Q)=3Nq{QrdY!UZ4Upy>vk`G~ zpWe40dP43*?sQ^#q7I%!Q|AhVBWcA|dfOQ9C;kN_=$ig;VQF8D;=cW1^l$HusF$&4mhy!#M>;C<_sOLkb$$8 z?}P@csIT&^b*26N^~DAlf>&o3q zaz#T`H8KhZRmnJ_Hz2we2?XCRmipVY+I3hgj3qo$b2Q8D(gPA}0>L-sed)jWH&PYuX{5#H&Vn#XR zuGeZZWJXku#qk|`MKZ#H zHEhN`nTC|`i&c@S>IK-UqJKDD0JBp!zwIBby~`y@wM_8~1jx{|W-HLRqZaSm(y|C) zWWV|ObEFD1OX*w$kP)ff@pWZ4eU>{;TRJoE8M*GL_>|fYEMV1?iu>?F9mVR%+AZGF z_0D(C-?}Zp#WL1X>qh?FWN(vH^A&?s>!P4Ve^4Hv|u(ZYisDod@`9~!or3*?Qg>KQIC(}?Ab(a$|4eTQ81Ti z7SZAh_Z%a7dDLtcBwK@8B3xks1#j%7;mpEm2~8sQ?&k77&Qb}x#)4umiE7O(KJJqz zHG&uD%+%y6Xm^k3POJHUoV{aorP92Q(V8p?Uu?M0i3R10*J+nA3Ae)}K~j23tXY+Q4Z2 zX&S})b1Zpe0b_64N0*R7g7~SSySN?%Srd8IxGTe#eNN6Og6oVNc!`w^2Ncm2ht$H{ zp4&j#{+o-(>+Ne_hT8~er|2a&T!+3zXyhH9AN>zsx>rQWFj=IA(RGFniKpxvh=?(* z$lY2{SfKghyVU~28L!h3i4NV99P&yL5pNb)a*@MOCOF#^j%|M4Vf;W|fr%ShSZn5p zMD5!j;|qp_I-o-(Lm?AI?KR^P%MdvRDJ&<$9{=SpD!~YSC@ihM4;e;CEIJTYC{9O( z=-0aK;h?^R9f_I}cnCfy1I^GAG4o^uG!h+Fg>Ob(fLVc|f7U3lq`ykuwyo4b z#vSVel;^S>*NN%aYjIpRV{suv%^>R*i%LO&tF9vm{L~n478$QHXO$dgjJtV}AV;3( zGHlk-IaMmmA-XEdEPa)zDfB`!X*sN-z6mSIlpa;LW47fil~>Ad&xV`=y}alvL{~r? ztKmx*YcoMJV#;&#kpkVPYx?tRHwc%Icdijkftm))pjeJxLfzP>eTwhn$YUf*F^>XJ zTT*;jma3(>+pwr{Q-dJa+IjK(jB9K()x?dDfpnH~9u=JudzoEy)*;lxbJaHALE-Mz z*DR3}XAmax2q`q~YsM0<95_5-x*tCKV3cfK6bo~4|Zchh; z*t4zegfG3w?n2m*_=EW3DtkOBc4TxE<+le)#*+D0l>;hmWaLgbc)L4ikS)055<dvP-47J^!={TRBwxdF-SdH89cn3ME9e&|cS9ZBa|n&}7>n9U+h?60JC zrm`0}&#G^VYBGfF5YFJ`1eI}-UJaDagWg@!mYM)4kl&zK-jbu{6#%K9uYeEp|8wO; z+1TxGBaq)!{$J<+f2kiqMOsNglsR-?WeZ&x?PdDUtd!tnx;o?I;J@X4aN^#%-~m%J zOMv|`|L-}hKYoOPgR#Ni*|3_7KW*6WG*eZ^7O>#%kI}$suR1?|P#5i0cuQRUja=MC zn_?Zbbo+IhIEtC4o|q5b(K`IKM%-q8gs8j6M{&slwD4?o7$Zo*;#6Rq@kvpbFuH@4 zxTNyi6CQmQd6UBL)sg~evJa?Z2A{CMg zM#RK;&Zmlp>f;h6let}XMfgPG%2s3OUHZ3@Qi*r?#}R{f)RP(P^C0B`JJLf{eHOz1 zX5e~`Wow*-q?E?iFi+Rms=_`J2Tc~*(Olb(R0*bS+4{LaBRZ@mQKD@QTTq=tq3L-^ zF-K;7A`BDym?j$*0T&5NbfyD+EjTL8Mio+BH|~hO`ep&9p^=?aY)>#)$C4I~p{4*{ zHV>wuGP};ZKWAj=AUg-bh;~TT>ZJ9E znLWFsMvnP%rvymOQ8=x4lP`=_xrvH>@`SQ!nmISjVv`JFtqF3ir>!=>6w(t3P8NT9 z=>-Y&;s~p@gFyWPR4rGY588p5otBw^zOOtD-~KC){n-{i2zi?cMfvk)+qIv$5w@4-IFPh8*g>t8cc z-ueL^8UI;#B3zM%Sj_N;Vh4pmIXEBN`?3ciw;BLdg0w2HKeIaw;a6GtvR?v^XKf?t z0WB&tq;(o-8KU;S6&AV|P8zv)%*H39{vph(^3eGL>O&)Nk&|j$tVo=U&8;VM2^81{ zp5hV98EhQT;j2WIa;-%6>$hXE72ZBkK-)0eEKKpF1aCYM5g|8XxXRE>lzH$u#G2ca z+4gpt^tTLY8=hH@R*U*bvFT&VG-orPkAJ|c!}=Rd;_PH@W$xtuZ@Zv=7q7q0|DK{Y z{zf(_4A4(PfY0Ay<^1(z0S5;IcWHA+Cl$cI`j2%(e?9wm`d@Vu{piFfU1`JN!R`SK zmCV?vw5s@&1RaB_9UYBi#oZ_!12lM80myIa$UdZ?%?(hErU0a(|8AGzU*8w7 zQ_2aTgXA4-UCaT|MNFcRTzJ`pV1lPg%pab#vn7Tixty}X{ z0yRu2?ENn7s@He3)I;NCFP5~LLfrNrnsNK5yk-lD#j5%uv&U1?Dz=GeL};!E-}kN- z0oauoUCFS%z&j!FjGbcFNjnCQ2H=Vxi4^S5CdiI)2Yzk&&2>A0`D{=YJoQzHZTuz( zhm{_bhO4eVhQ2QEz#~~haw$6jNCc!q4G$1@5WN!T#E}l5^%nKi2EBM}W=uNq@SN=0 z3y=4)6#3Gu5M}Uw=L`Fomqepp@~h(mVx7VvztA&p_YzFrN5y(;j+EvaDEO>#$H8U4 z1bamFz01>3Z^AQux(GvxQ<^0TdZ3ruCAFI#~0DE zw1xsV_Zmd`)t>WpfyuZ3T7Rlqcee7nm3I`|CojN@t^ePfK5 z4kK`&c)jkUaWJe|po~UphF2$X$;5&@s_hH_-6TR)@lu6CUqWlqb(APpc7r8RgaH?m z$-y(rDXJTW@Cuni-n0ysiXM;%qiE&CptS zI(^<-UbQzx-DjD6c7R=5z=tW_2EvA#2A8{}5UP^^eoY!l6(dj__JdfmZ{o;eZ&?xH zxjQ@y?|NQGb7Ubs*!ENj)iZulGNCkYwByhxDLE-P z)}!fKLMXbU2sL(4o~9d;X3;)>%U(=+U&O38WjxT5m2LQWl}_^Q_#W|Vf}}lp;I8bF z`^Dh$REEL1Uj36ZS5fXU_}5b89DcSa0(#Sos#G}Bk=h}ZEJ&@A#&oTmUj zRZeqxO&%!8ED+d%ElB@in)eGLH$w4l_c*oLHggIx0{ z-wKGHnCJbqsDsHPJw7@g?=haCxDbuz!gg@2Qmrg|>w{g;a3F#^P2Y{W>t>qZQ50`R z6&||LiRpl&(hPK3uecB^bW#YHH=y^;Q=9AM3k+<#Mc0?8l@nK&N$NA;xthX+g(ewz zFvFlO1*x#BuS3mcmAgaL%3$D9h9dcZ;6@P`Ix4oPjonP2(NX?;O5esCJrXsZ^Yrvl zW*_4jcDOn47t#}J5;Fvy6}<>9f?*)*2+lX9c)Ky@*X0YgYJ&|Q*Gtn3U75H2BhIvg z&Ci!Pq&8=PpHZ#3r_)Rj46-S;r)IYZOSF})5B*xhPT=~J(ne2T?MKCJ;io;KY|k~V zmTZd6PrVwMZ{lJM4BJGZC%y|7dg*bdTB;wOR}yr9vx~uBny^PnWRT^|!6+lbKih!* zn$YeM457Pav~qOxYLKv{1%li%{}4mIX84{>4^`tv{#uEGk;`fD1OoH}g-Hh1R&6Uy z6tJH*n6f)Tf?JhlT-NxoZLXwF<+{je*XW?^$5e7LFL2}fT zE|ypeiZFiME?7xh+v2$GnX@_oWaAdGoioExc0aik!Rt>O|383JJDgoIQ~*c20x+Kb zcS{rh(s_R^3;VB26F)8dsrY`UiOGP$^gn>7fNv1})hyyYVI@bl0V1;ahm{&`5T#y$8t~ zNe~yu*6@884Xg7lB?_@G&GM zjRZ)*d%hAP`#c?0Sj6&%0>qNgdA*wKn+n|Sy~aR^E^;eg<^BW@zxT*wh@KM0wWU0354%nlu>Fs4`bQSku>`}O^{=G* z6#P?S5uP4`SrPY5o){=7ihJ7mzdD9mLzvo;100dZ$ULgGhB=frA(oNgId7Fix-@aO@H_NzvpT&^R+5(Q4rucdO z^N_;lJRY?C9GmQWd0+okle-D@F!LWAXZA_Zt}A1&T;tk`-*4^>wS0O9eg6MHJn-*({dghJR zP`lD<4oy?UMQp?fZtG{)UCy?lyo|@JGDNxG*Nu!l^+)EiUTKRia)ke%!2oEcsIwx7rPwpm!*JAG>C^3UI5_5XZQbqNYNp zcsz?jkzJNPBTa9o!Yh6xsWv_tMnQ(o1R7-2OGlz|Gdb|L!q~^ClIA6sEvGf#{*vY)(EPUY zoQ-~6Bl%(iEe6Sy{?lE|99cLw5O0Bg9pyd;xM;p!Jkka@c6R>8a@X{VACbo4e)8Ep z5Cz|x3j-$+^SGtk{ui5<;%8%t3 z+N{?;g1j;6+&gW$tsLA?jpd$VH7Yg^n>>vgzNZ-!>QgoJueXryEI9yAOL`2Y`Od22 zZiCInI3tGn1)vj&n!)03@9%yVc~V2LS@Y@3T<%C9ok3@(2E2Z!Rp4VpDjX18rP{9* zP6EEXMxF(%(zJF+5>Aw@dYf0FzE4dL8+^N~!rgqlv6`5k^pm2X!|?9n^UEQaV2q3i z{%{@Ck^@kDr|~l%2B24BtpRCSOvvgJg$d8X=wU8|*w$6nsXCJy)1dOQ&aoBZWFmXy zWT`8gT*kUbZk7V-E#KA)20i@{ceDYJ7mw+%d371JKzTwYfx5B@$oUns$AJqx?u#Ov z77$Q_0>VGiyO?(|Itgm0I2TASYk8=Vhb?}Uh9q*Lkf6d+a?1!OGP4wfMBP)yp_+~I zgT!`CCCBXNU&iVo?7~Yy)uSi`ZKr`MBlFnm*8KQfM^R)cjUI&IC=^hLup<-sR1Yq5 z?hN^%GlkplB+Okt(Qt4WR9?NWDGWc(oG|A3rF71P>#$m}b1#Q^$=$0C#k83Zd0)(1mLb}B{7H2C4` z&}yjAa1kBmUBx=wRW~a{Yhz-c*w>Uw1x!H4%KLAzQL(~>+GhZxKLNTM{wZSrzY0m- z%Gp%nKVir1?EmER-)W}unhg#U(l@bPLeVc5lBKu6REXwaD2n2Fvuxj-BkDPRttRn| zi=cmOuDsMCucFFB-h~2Hqh7JhjP*L zqS-}%#LOhGukY(ib4{#i)iKfJMN7umtnOo5u(Dn$@alBE)I6SlX3+-YduuVN&&?V2MtX&xpsF}P?xttL+!aBt%X3p!b~;JkWI zB22|v8VA8cUAm(X?Xd=ly$Of|sS#Rz9s?wG^MHq44;y8jQufD&Ne7de-!>7SJ2$_7F^-LkV%6CI@j z?iT3LNeBlRr4V=bG7dTz^+eHf2b!a(9;>PMC4?ttgtB4iLqc+8Vfy<;FY90&ibc7n z250Jb519XMFFm5-X7~WP;z*W%4&DDRd;Sr<|3~P4U8?jiCHyPV?y;==bWNhlz=;-SlvQ(W^rzJ88 zlvN;zI)Nw;=+ljyr^d=F(&nBYy#>{-+YnA77Gc@oi5`zgI>(X|mR20lCl>CyWTWfS zx(pVW%iB#D>%!)EFHv?CBhVU>VU|IE@l3iOk>$8VX3sZ_S*WhGPA@8tClc%p^jfIw zn>8b(vgc(hOa;mL_4{ju9E^9(4PML#3`&Sq8La&Yo5 z*8xC8R-!bqC2V8F7n!m!X(~f#pH-o8`GGPMlsx3_@q0x*YP2+Yc(BOQ=p9Cil=7>^ ztC;-BN5#i}Liwzg_lmaicN<>sGeA6YlU)t5lc4%^P*{0=jWAY0n!SQ44eT)FrEf^6 z^5usF$J_Fns7{n#)#u>TBt1-FGU$$z#&Ehhsl%vB9e#|iiFa6-e~fdZolO0-bLkm2 zQRlBjA3;%~U?fdzLV$T73|o?=_|w(gE8=G`>YXDg$Dl$&MIwLXLZbBd&PAZ|@QRi( z8jV~xt24CJwBcOUknZvuPT%F&2PX(nxe=|c)*^N^)SF?#f$Z4=ArV(^EKXR|3}D&X zU9R$J1ei6=4WhE0ivlzkDoU33-l{K%BG2?x+x9G(ml>Iv7hgiMsiY;Gf9bD)q8LaD z?T)2X<=ETJ6S{Mtmu-gTO``0>Y(-CSl-=|ahL(K9gNMFN1%3MI?bXfeSBlgTgz{oT z;lLFVV&%vH=p|=kIF1tzrD`nPMl~ctt?9BL-xYrS!v4WWUKGk2VySPNdM3_{fQno? z%<{S_KOf=|tI7l1u@=fwM1nl4TaekQZ+&ImTJw>-1ZyA;MYe^eRkiYKhun+$dYe-< z%d1UTi!7r%OD`)!Br6k1mj?CA!nI!iZjxeanJp$JN+c;lFGy7jcsfwuzMhlQCsQ)G zRUE3dPmE1poMz{hFNK7Mzj=9hxq)lTv zFO~X`>9aZEv_;1sv&QcCd8v~?(;Qh^E-Tg0nbow4wO?Y)A-2efy|toN#SfY53)CIA zU8M^#f`C6a04DK@?TJF$pYf%cnh^K(--GeXT}HL1GS`%CQp13y)gocH5wg7>>Udcg8fl4vEVxT4B5&})>W=g* zyt#kh_9iSnle({<1KUwrt6iwBcx4TK4JQzzp#aerA-}I$?D+6C!YT4qd(~;LWyl&3_c5g?!FWO1tn23%@+|rQl#oN zh}X?D$HZNKyk18Su~_KT%Ti5abWv=Z2K%ux6Im+ZxWdK_GK4hgI9>TOBsZQ3d{)oWVUAboYMDnxvk=er>{|NX9jxoYVA+ zlHEW*#ROqxD=|7v^V>p2-taqrp@U=fq|mDc$ZE7}?Slt7HgV|~y=H8})^i&*ROixw zU<0d4ro;x-P`p!t9^j1c3Mh;a?W@-s_bM8;jYJ_MfBV$Zv?%>r#~3QCoyW1!*c9?^ z8_oJlp!3VRG9zDZIE{A2hTS-NcePj(JU9DrUb53lzd`>7Ojbk?Vzkq zUtQ#wZCTs}`yW_hJ8!#iM#0HU+O)Md84HACuZ}|bxv@fYb9+=L7$g%mKH(HPm{ry) zMQsgJ>PoWBN!>ip;vwu7TT5)&a#S}vF5ZqoglV+NKZyw@dP&}c&$^OLjR;ZDICro0 z^zJ%$A2QOSzvXY7H%fl7`)ReL)550wq02@g`1-4+@%3^>xf_Q|yV(+&jRh=y)z8`c z#2UR1hR`ZUuSAMS*lFKcx6G5%hdelr_?rOrr`_hoT`kLXbdCuilmUfcU+$8%C- z4NAl9`9W#211Z9`{3&g4SZhAg_v@ zR9&ripnS4_VD=`g$Phs9j!WM;PSGgoq_%@p1nR6DvrF^Akweb*B>=1Y3fJ}w(DJg+IY4)N7{a@=)kDn2x;-+z9(RI6;Dxq>@4H-Dnu0v zpd#M#k>di?v#QjU5SLbSKB7QAS=lQMeP#mv_RLT-6cbl{F@N#x4r@P8HcY@&>k~3K zxM**w+mJB0TpiSlOdK8KEW)xxk8971CU1@R62U=8=%8>c1265Q03J0j74~?d0nLd! zS$FUqBx7K&)=P{Hx04t@>?UNhtxky&HMd{+9z!C?R}G7MNp%y135m-@yZXBu*XR)M z90=XV=(9i>rd?+%2LteQUA()JbgY~6tGO$aZSpVuxd-RgN$TD8Yb=Z&<_K9bx7yIp zaSmB}cQfmFH* zn+0lrF2~k{7v5y=g!nyXs=QlnVMO@P-we+FzRWT^> z$nNLzeS7{#*wP|3BMcOHa&%#bnXxvT6H8IkxSi8Js7uVmg2A9Q-RdXJ{gaI1Y}>9& zf6j3Ul?xEOBsnkIOJ39jnzqnKjdr)vdt-6K|XYq zYFqXg+XK4eIuP)u0@eluDfI5bW=<306e(9LyeBjuQaw0*d%H=<4~u+#?jL|m{3k;T z;w;L1}>QM?F~CXYbZltVJOWir)~$V zKuYMXyBEYT^#}aNG!vq>wT5eD7!NKZjFh<8t|+>a{S#5CBm~5yE`LRR1={Mu77x27 zk)6#*Lgf_cMT8kAtsT`zw2dx?B;x6fG5tQX=L$qn@cIZge>j$*x(GWc9o% zaQx9lI!)ByW&T0JQqCTGC*YeNP?b9nAr28u!GsN4Niy{~H44_4lVq9YGtFK>E(Fc~ zY7nz;jN*87<~&4~U=QmIqpATsD(^=mgI7f<*S5`$-$hce%_wdvr~jZk*CUQv)I7o1 z2}JZE6=!{Az(PQi7%P;k=I#DZ1%KntCMM1ncPMkq(Kruw1el#+K}#pPz^}8BVYLku z%)GW+3w3+)8LQ%zyR34J>Y*qsjguRB<|wD7pe{KLc{g!J1DfY;H^QS3pw6kK3fOEr zuGejTn>T?!H5I!5i0qBuePo-zlb4nEV? zCe&X>t4&NiA!7w8A!V*5c)w({??bWDWHPQ;+d+x`)6vf9@y&d()$7-S-AmQPS#?pC zBkXHYl8gD3)wgfsU$nfagzQ;{!&@&fEiG7W5p6;-2*#Y~!*`Q%8XSz1)wx-*E z-MuNecYjvpV|Bv}xUaVFm9zAXS#O`B6!{d-Pj|dnzSvvkuVy z;Rwib|C1v8ACSBM2-tsDfPbBxCj}7vKOqI}@Ibq|Nv+(0451>aW#sIFiAhSW0_P32 zhokjkNw=Mjf5?=NYpMnMRaA4t(CEx@lye#MJFFE;q}k1JF}9rQ(z=up{aC%$$%d2h zT+4(@riw%W7K1SWb8Is>hhsG&-)`?EmGND4tPYY7G1bZ~dZ5=&%WIZwhl@V?a3-%a z19jNR8A8Ovc*0C64>RgQl9HQsZwE>@zj};7>QAj@* z0oVwNf3Okq1`Y<+f1AqCZ~xOo{7x@YHf&Zup$%Wfxj|UmSj)BCKhAzgDFxREg-=N1|+T(LcrUVI}q)gqTeiEF3M^m zodUdVH@|DHHCbEiweKm_ zLPF6`B;h{^5o|%5@ZT-J8@^d9!ig00nhhjqHXTJ><3B*`r;J4-nHP`V(u$6i51lM2 zZX&Nfsw!E1h2NuFGb7IfgG?- zc*r@HMr-4?A7!g5Mn1!G+uh_yTIt`%VT%iRDZ(PgLRZ%4N&uJIf zs2#(RGGHj7DOEmoZw;?qKUke}HK}$CU)y|(4DZOZ3FjIvln7>06BAFa9$a{4tE{)Z zu&744)J9y*u;4BdT|62(cI@Li4)eZ}Z;aErw}xFb)mD0=(3{1V`+hsjt*SMi-Dm#x z{S9&(e(3;D`2!jW@V8-6E+e=q)iX{77v=G|h3}h^r{WLk{InaQsn+IS&?VlUers8M z9Rw!+1<(Zw0H*(^DvF}y!U&e~pn#ku5l^YhcC$J{|$>K^ zX8gLQmxuRwFy<-4`hE{+BE)I7r!c}{ZK=Mn_%eUnl>17$Wr^B@XZw1pmPOZC+QxDKQqxPo;)}$x;^hKm?gKcl zF?ybrkSyh}hgJw2vldc(a&=k z37j5=6SE1>G>=FzlavBkP~T-CMUn}bo;E5)Q?QyM3K7OY2`~f&;)TRJWgWr}#;N{s?$P>jcJ&Y>T<&li#Lum&JZCR&IEY?d zbQz7~|2C9*2nYp!;QkL1K^brW@^{tqIAYm%5nfx+m zf+qSD#ri8oZ;$6h*2D9glV!Jqt)p++%WrkrZyvh{9{|r{77%Jt|APtrli&ZSR+;~2 zwW`MZPj>&EMk=lS!R`R;G#{c@GSJLtU;%lvG4U6mmF`O!Gynb3e-K*zX) z7j&DmFR7y@t_x5c4=K*6p_~s8P8QNvg6QJ z=j*!H%S=4iSUN|@cTXqC$boDnZB`Uo#YH%dGZ+RM;)fBQ*0e8}%p{LXY)%6oJ$$Ea z>K~tL8%&B}x@y-n_pCj!x04xI3J)R2mmXXZn>F3GRuvYiH6>zxf`2g}8>$=QAIYl~ z79xm4dgRFlR+hyFBmNSvR0Nbv<$wQ>C#){$@>bXOgc7D*t@xC{qWS}aNg$m}g-5*+ z+!(Dkly%zO3w&>gh&3JbB9q6X1&==tlK;|)7vyfzA3sV;|BamR2Upmu4Iu#H7-gLI zma!d#x}n0kh7_mAW2HeYOD=Qtc2Gl!*@#qHU1b=ypz$YJgmBXBVuZjczog67d^WRmfAl!A?ZaZN>2pJ~1arJTBh7AhhtdjWj=i10>Yq^75n zs-a!W=`Ko^g;3eRvWY94j$y#ft{kOj@ z78;!>A-M(EE+{~!#{V~`DH#t! zQv{N$E}1{4BS~)ZXf-wsp^xt_4x`9j(xx*c0fOs?x=%L{XF1{!&i13(fw8G7-56z+)JW31*u z=qd2iQrA$+tIRwuBdr>jB?z|>awN*KwEgLhbK1=*R>{7YGr@WZVFXQwrb5C7Nk$>S zdt4{H&&TIzVrEU2PSD5W=x_*igNePJG_|*REGyuaEzP4<&wU$I)%{>tYxjf4YyGT5`8V_wE*vHzMu6QS1#D;iC(l61*ulm8tFg2#01VysKl>}DC;pV=-|1x1 zn#CT#Gq?hE4?f8R6=6j3s3(_qY2FCB14nblp=~55jdavMX|LW7AX$U4ZuV4w;)pYO ze`0;EDA?T%vPDKHnNZa<5=<^st)S2l=b}HVf09m0WCP>wI-2~_zQ@*mwBS(VWYn@& zv+!Wc*SI~H$zb16DT4SmJTc_IH*bb}w?EjGXLeio`=GxiUy$zz|q#$duH{gyo_?Qu5&xuIhYZ*V^@OlVl zHN}}UJpAbIun{P4x2znNFX@~680LlxL<^#k_ubOw@2ltXF_fGanfMb2 zf&4NTj>-KSG&VA~x_ZVTWl1_ke~C1r4I!Yjmba%gj1klM$;BO#3x+Xf504x;)F&2% z!uuLp6e2Bak@35vDRuZahWE^jf^{E|QA;1DxSRWKserhbSMY!Lsn8wjE5ZT1nGX*H zME(yp<`0m(zx7wQZ~x@V-)T@%uT91uTuFPu{g|Tb=2sGImM~p?F_<1`uE19qZ<6Oz9ElJd<&_Zj$I3O{yp?P?3$1TRXy1}^n zDbZBXIA}VK{RXj{WtZS8Sc+6im2Dl%g-!5iqup??O0*%b{(B+!^46YTt?oE&vp>4( zc$G?P`Zd#_kBt7mEV)yG_Do-Sa{7;H$D%r2Vks*|GA+#p^W9Uqf06MjnVX zx(J%loNv@Ey7aA73s9R(pYH_aob~lqxNYGq7RxNmLXxXktMB{NYfwZNA2&T)_EgKF zBnKr5DO;}SG8oQRC~tSdU&^rN`ViW_-Y2tQi~s5l8dVt$OC9KIciH_cUQca@>zG!t zau?+rRDH-sRKg0up(WfyB+#>c2n0KZ3v!4abp$Kk8@WcTsax55Lt{vsRa5a(t}nd( zajgV}(xqmasfNKdVleM216mJc+{z(QVVbC3R$b`(M3%iA)PW5X9$o7J6^AV-aAwPQ zCl4_4Dc_o0>g|>sYx$mfbYX-W94=uJHg^oL>^5iwo(B?`M;l-RN^^LwQe>20x}b{g zGOIfT`!vO}>ku-x5*f$_atGhmIzxtm5m4T_PP3r`d)mc&t;22$-&PsWw)^gEv(1-js{1PphlF`?4bW6@Csxy(gRGF z88$9t)6DN=9$pz!+%D8{Tb(5`>rtNtv1s1RsoA%GhOBZpUm_Az@sx-6p9X?Z|AymT zZ2xT*=y$&U>-_IxWcFp^%miRST>+oJ%XR=BDrn$nEDVVH%&q=cawId(gaAM&2A}3p zyxd0J2eCqj{Y?27xjwc%pn#_dJ+Pt0#KhP6{dHih!SSM;qu8oYT_#<}FhoGIp7+=f zUV?6;6;^pOCDCV7w_dWS!mb#4N{s-ib7AnfV=U;*?%C(=X~^!kKB?=CBK$jmQaA)4 z_>%qoEBc>bqbm0wF)Wav>c2v)-)W<&O!OQ8IaBS_=TmUvY891TA(1i_WIFn84z_vcy_&KQiUSeR<%~su}Pj@3G{k?Yl z_mD&6&r#8ClFLr;8Tyjmd+&Nl58>o3%ElKI-S7{Xr*%UTF7B#Fi zT1R*teo=&vE%@>}z{gUmWrH86zRZaXrEOPr823w-({hy6QIuHdb++xMm3IgTbI&~q z9Usd=qF%`ZygbFD`7`AY%)+4PCVnO6`gX!?Q{X;=V49d%OHp>4Hr?ZJy9nL}yK3!q zdXId4ThyBC3)fMO!8kkvdZuV8M(f*1{f3xp@*mq3H+${g=43MdEAtMfHUtS_KSxMA z1@fntP}xgrT^1Yg1q^fwRNLQZIcc=l8~)m~M}HDLxPCVre5MSu%d|k+@7j zK2qhUy-fW`J1gIv)^0N&K3FO28p=5fRCGL_am8rPYS6T6v*i}8Qp+#ucsQ#(YMvAE z)VbhIlyI71RSuO6s}$Hf%z`F?9@k3unr~}2{FTzMq&xe85^lNv;D9G{UQaa#t@`7) zkS;L}E-?)tS%ZK!uYZs%@qc;PeOK$BGnzz`g4@Wr*^$K~wQsWvJ zlsTdZk*4(z8xJ#{431@41Gx7Wy!KWO=LrVEva*4r`^+ot4F3Xlqe#2pR&}LNiLv^K zqtPTeQOJDIG<0pMM}a1?+%Kv507xUqIwKDI!kZ*=*tA?_GFp#1MTI0hSOM>;66MMo zLZ?tNIoXhbYH?L6*}JnE=FMVts5OM5S6wQY%2B0hS zLt4)gJ!i7-*oTsW>`ITUTtHM{8z@23`@kLd^`A7eiH6%%@do3^DlEs`y1x5MX$rLW zttr+A(OSE4+@2K`BH>JB*rQJ?Y9qUhjejXfi1mbZl_i|6UP?fGe1JbpX6a-)zKN?< zU5Q(%s}XhHK|&r(`UK=xhQ?U}pBO5YWdAUKYi?)Z%AFAg<=jdt^`ea1dqoBorW0J4 z2GzDF-CmyMGH6C5qWVq{W$5-5xDBi`D1U{}Hv{=;7OV5R=)R`X3rr^#hSPTovXLEeO0}OX#LK%pkh!|G&}Dsrp$(F#wlr;v44 zVo1nL&vVqX@Mw@(J2mYC_ytjDQdxxvYsD1XGrZxz3EaWlGy#6O#`j%#fm&hZ%CC@kP^MP;06d6VOa=T4=SIl=B;7VN9wh}(f znU*XmqDu;y{6`Z(mz$GSCP3_E@3eLt3?tjDnL@|G| z|L-(Nk=r)l6VfK>PeL0j%z2*ES!xv}R(i$H+;${Oj{?@9GF zY1KXSIRzsXkBmOaCL&1=C2ER>n+fE}ul8YtfT@2h4AXAM1^T$y{39mreF?jiTBvKU}cBK_s>tL-8kl=?uw3= zud^(QX4SV@IWFxM$%oDz7j_Aw0@{;I7z&UT|O4P&qEYVN1$-H4+wX0XULPE z9(Eip+_%r)Y)o-3-+qf&FU`|^-~iXe0LTXr{P%16-`r3f-yiAgK|uN%;a}-%IymV> z%}|&_OOFDvH^emwa-=PMb`{(;7=at7hs)0FZ%xYtwWJ)eF8H1(l?r2KOesZGr(ub# z3_XwtRDhm&hlsdtJId10_IIT)dfFS{M0`{0?)Y^<+8IwbLAh$n5Y#xdlWpQ({#R`v zHBpdoVC=Y`Y$0cHZK4~3#ilzGCN)yR3TN;;>TeCcet~4;q9IhhZ40?cJ_q3zaYb8H zdfs>gNA6KL&irnt&xq17b6jkP3wPCfB&y_Jq%_+Co-lP3ZaTJ7^3x;siSt{i`{{Wt zMyq2z6G@)Y0$%&NP^qr4-j2`y$umap=W<$C&57D@TLrUfiJz~(70U2kHJKIxZX*xC zED-+vyB4ywHnja;yzI!BahSe824jNW`{~fh_~f-)(Y2vAO{Zim=&IF`8w#ukqlC>9m^H!T3nkKO$|C;{W8WB^S+}g4bj*%z+v?c1ZM$O| z9ox2T+qP}ny4ic*GtNEV-QPGnKT_}fv(^~1=Blds)KgUtwmm+65p1zW@g9Br^5bWP z(VG0^GryM6m6G29XhmZQF0ds5n~NZLt$t;bvbl}5{s;jXDTgxd^{LH~S#ARzGf$qG zzih+CeAe8@Zo2dY_#BrO{AoFKV;L(Xm35GJb5nrbsIpJkg|Vb@8?k^mMuh{N)!ngE zb?L3BRf$MBwFD7X<+^mTlf~0?&rx*;{68&;g*@cY-1oLoeQ(>pt8@O2xc?PxE10<% zDeGA}8rlDUaq3^q$bYRpWjp?{f16OA!I+K^m%E1)fBfE3a2}X=h{ejtI@_eI3e1se zH9OxvEBRe}W49#-6VAm%%Nm$-YwkG57#9;90V9{QbtxP7(U5h1R~7e_xmBt9DIRlC zk>iz7>zDp-U6-Se|hS`TB%8_9WDn zSM?f`ER;b75Xo@@?e*;teRhm}`nfS^2gps0#RZdrI6Zcoq@sa8AsKW$R`L3IBHZWr zx#%KxzY_eyb$vXYm%-QU`SX8no~QBWPUiRb4fCBzA^7)aPSVEd@2oIg)4#0nUuDFc zl*K=RK6kt?y~qopVx6RE3p_YeiR`C{l)|~nvhuPMu#YQd3c0#ExnbhV=gyyF$zl5n zSn$%t_c4(7u~brw2TCjEEvhtR6O2~d0*bwP<7+u2_$MOg#Fc|Z1^6diXH+6q;9-Xs z?duZacrm$Tx@k(Z#HUwFq}{asr?R{}u#WNlND1V+sz18MKzJ)l5J2@zm`Vtd$Q*7v zN#cWp7hc{U!)+#_8SrZOM>5-E5bVx4NrZwlft=jw3`o-H5hs#E-clY9+hPb)H?}7) zFV`$UrcK2wy4w|Y)S6zMk(G@ciq{6^wETPLu5Svu#e;^<)EdJA-{Ne&Y1WT+IuS25 zY&*}|@f%uKU^CZfGsjjsJ)}!9(|8P& zP;qXrry+h)vwg4g#9WwAac-`MA)=`MvECDN;Y7u`yIzKfqJAzY`~0hg=SKTPmH$2g z=HKnru>bZ1{2QC|SEc{gIxw#1yBH6e_bTw+KXQ$jN7e}~e3oA?nE%o`w_z2DW4Tg- z_3=s~2|=V}j#oPN{eFKqf}(34a3_2fXIM`=wUvear*R5(EyzMd4Gy=G?5`A$;6$Xk zrd387qsRS_I~9usBZ-C@5hOTcMW$Wg+3q~dAH zT}(JUEeAoRoD6cveN!39&sZv=iyi;^U24#M!&Fkn{E@kh8S7_LTi&n5sJr|1?>@9M zS>>SKL`hMDAJ{d1Igshyg6)I$;ZOJQDB6ZvwGpz~Pf2OYI9i|aw*Z9k2AUKimPPGe z>%wHHyDCKuh-Y*K+`SNv-49&2a(4Fct_Mv_12)ECKL01qLpk@W>ng>{Qs z-PX4YzuWMb90aKFhvZF^4;x>D&T%_eIfzSSTRZh7$7AVpEJ@|cy?y+%kI8@6IQPGV z1sHxS?Cm>p`kPNy(bUXd_PaFi-)N0@^IxCrUu9t2l=QdO2Cw2CVYz#WY3Y71_xl1> ziwUiFEK&rql*E?rMY%Y~HkhZDQ_IuVWL&+i{Kg#TsU~8JnFN7b{RD#~5rmq?je(^;u&253J|lqcB>f&L@BUsdmGOS0+2llozo%y}K=20+0@pK-^2ge*Q%jd^ zvtvWR!(bIj9yC@{r}~vz5y-P7GYBWuMx*60NysyQg=%i@pp1uWjw{iozEznx zlCA-)6VX8^jyJdvdVk&EmJSBnE!=;Y-tX()_aCVFyZS$W{NI27t{;uFk-meOk=_5m zp#G}0|62e3lmA^H@n28YGjK4ovHp)=@ZU$UIU<~l5DWm|2^#=_?%&vqzr29Y&`{pS zneU%(`~O^T_OQx7A)>#^4%M^oZj5kW+Sy+~2D(1=CF(%ubL2%vJ$~Dx#f-+&?deV@a}3Qe!lf|2UGUrC(13q25qyl!k{S zlThpplpRfF@{F+%qlS9qYG9afa<`>#5SN!XT}-5-oT*kTO(Gy?A!}sH=C>B=Pt2n! z6x4EZBlvAjF_r|eOqrd~Yz@SQSWPOn({&NnaDCWx7I@x;Udu!X*xI*7hBcE*EZ+9_JE@F4! z+Rt-x7sh5V2-RUNZ23P^=aD1+gi~RlOpYfXTS=uTM30ie?WxukBW7^y3JYQ0i83+X zE2g>|C)(mQ=N#^AP71Yp-0rvax4uC}cJPPCCEc(a>%*mWM!?7wdi?n&YCk-e(Z9r+ z((Wg|NnA&MikzRK+&9sbnC_|0LWSVxL-PW_Ttl~o0X=FCQAsQ&T|gva_L{ksN=0}s zT|JsxxYcZaLc# z`E>ubVd|K!9X-TI(sx-i6PYb>Ee!J0)v_mC>`6S5Qf6?(VTN#!3tv;Qf(BCt+Ir8l zv0njSnRi~k9HP)3d}4L=3Mt8KzHU>SAGYNCj~KiI;W0$29fAx&LpyE=9eBbQ%HLcT z?Fw&B-8PXnT6-KaFXf&xi$BT{h_Jo@q_dk6;RF0zQQi$?*pOU%AeG9()O2YdKA=5` zUMz1v%2jW8v(Q~*bMf1xI(@FXy@P4FV!N83!>K>1V0sV9a8JOmDkL45J`NUtae?yE z7%gs|$!hz`0OA0VZUlj=^9VZm^ksl$%yH}|R63|K_ZwdU_Bd(K;aGg7rn=-wx_e6M zQ`?TX!b0#R+F%F(+E)U=5KF*AWhbUMKHil4LiTcWnit^R_#<;Bj0KF16KthPxNDT5 zl@m#gf)RcU5(i~Lx$z`WwnVPPR6U971d_kSdD<#qrDJFr6|TaeI`RuiT$(dt=4?sx zn+u+Z=b$t{LT$kh{RE-g28obLssw9Y2YfDC`{$bo%cMHTUt2LH1_Gc&MlB9>G3Ls4 z%rHMf!kylvYg|6C&>CibgU+)fS#+NB5vudplqytp<~y z3{J{w`%V4tXpA4BQBg;bz}xp^%*o5D1g1@qeR5KV$qr-6t#-k8lQ4zNStFkUSLJ)2tgWEM~tuGuvqxt@Kb_+uY`WK%<{ zGVF3L#paZ0E|E;G<|sZc>Azuv8~)zIqNYHnwo3&4==Zf*A;^}pL( zeJ!kfZFd_c1fy2N;sIIr8OFt8berEZlHaPP%u^c*h#lFW;$U2k>Tz<_Pu-ua~;+^*VNK~^2~j=R9=e7s!*L3@~9c-j23 zX}7TwSRsKdb!pKh0om+>1yj=XO0OJGBeNiXzW|-VJfR+CPX>Jk zM~2IaZ5-wyB3oz`Gy8LjoRSi0WSR}@aVN@FvM38wJ6Kpd<-XZ$tO^|&`80G)lILaj z_v<<;U21GrmmIrdPxd{JuqV{`T}<{_@;wejr$zUX;-bQ_P=ng3$s{hWxmBG8BA-s2 z2*@)p&scYc4exYSRQLfFZIDd-oG{Yo$6u%$LYRGC@Q45aDem8J&HwI{|B<)(8<)&0 zqxMgi{8xFwWnr`5*suk(&tnTlmTQLOIOiUQ;@A|Zlh(Xs(RL;kN&pV&8k8wl4qp^I z7}d7%rQPZJ9M9QU*LFe^?GnV!$;l~mdmLRyW1@2KBM)=EKCHBFAiP{TpWOOdNN1;! z%*0bDHDikB?Y+*tfy64xi=t{QmtbJ#Wak39>cHT+nkG$XW_Ju@>UGyB@XQr*ySRm< zE;h$ip%H35s`nN0Nn$tGN=4}gqe?W&fQ`jd3AN2iV-s6N3)k)0YK2-S;cPlD52wjU zM*VHYYG&uLb3dE9E^|sS*xr#A?PTub9GBSr9J)pf1350$ZQ4r-wvd4K80R!C58lt#X`4sRT2U&5 zZVV%e9~q}ZL%8dsU5s#?==w9CJ;AH!(Kdx;s*EeChL*%B)zJ|7v9!Lrj zke(-MPbZJZ71)&KTk?e`N~$Z?K)SRRe8Sbjev7I<7eOuLAkx%4N3u)o;qZJ}cC=)_ z28}|Q+t2gPl+(1q(*Fp^An;h*Gv361dAK;r!rxydBB*Kw`3Ta^HdbIv!SDZ!8>ap# z2*0~hIFxc=GA;f-0doyWuf0DUg<6d4onb=2HXXd%hx9O(xb83Lc`zX3VurQbYXgQ>9Xg5vDiHcqlwzwXlcVP$5qha)|b1K2g_oN3t6i=0X2-d-RJ^ zmDQd-v}70ZuECtfo#}TJ$1ZZM&4cp?bTzpdAtW&%lyRixb&;DqS|MtUeLj44uz7mU z3a--0>df3X{(~kXP=gG=`YITH&}@miV_>iKXRxRpx}WR;(lj2Qr0Ms8zA*<1eSM%< zv=v}6c$S#?_&L11glFj-7xB=goZ_vS@il=%T{+o_V#^6+`?<7fx9;l?TLLB`0Cp%A zw1MgCOOEQh4pJ#x0q85HxA`LH<6864*3Pgou6|6tIFOb5fz(t<9oCio_Vz(=`x%+- zY}n4+JPDA|Tb{flSPS-0-qOg&CBQGdPq8f84-Y;Q`XoK(GzZMf1d@}I;QHH?q68et z^iMJcWqEJXN2Fzs2Jlg2 zg`oE#)vFkApjsU?f-qO3LM6t5qMFQ=NWj`VgI~w_SmOcuR8w(fH6GJP%LH*=)=gTL z%FQPwMD@p5r15wU@OcJN-@`8up`c{#c5`J*ICQ0T!+MfdcBv9Olz1 z!AD1JTUhFS;#48N2@$`4AQ{LGsJJmo(#Uy;oYKbs;8jcH?H(MJwIy(b4@&n)C~hY_Qr;UxlY&M>o(J8>W(c>kj1pIf09o>Xa^Fa32- zT8G18AqB8~578MjerUP?RBddZ6n*~N^nk6|nzQ2>V(K^=m1h7YSkvyF-j+jnEj=*Q zwR;ZPt_i4{oWNoyr*L!y#`z@NJ~i%#(w~&`t?+3po4TGJ<`hO??5(8!;M|OsoQ0>K zJWYeJ2#CKm@{3*rj=&9HR6B*d#?$BHr11isKYl?LG20=Hl(u)+7>instG$V}=tBu- z;^Y(E;TI!JN1cbTKrRU70~?WY!2z+#v`dE)(?&~oq4;p6!Y=%*jp?Sfhr~!f81sb>e3&g*lW0PyoNX=+Y(y zFu-b{lL=5o7W#z+Q3}Z`lzwGbTR5Xk1@lieEkPP=YKsuZFUMbO zPt1m$CG@znsQ{)~!fhQ?CJw3SxXTW)6*<;L(6_}cM1@h-5Uuo|IKO$b3NF28k4WcD zz8?%va}{UD6KR*`d}TT7Byo5;gg9VYfy2V3XEJmQ*~&2;=aS6OHZX_uW+p2`lyC-X zb0`SVMwIDmLVISngLo=C2n@+#1m`ZAtXv`}TWl;)0yAn!?70-}E{*qdxf#WSjrnyM zXIz^g1s!Aq#G6w;Xa9(aVS@?e00o+nmTvC>41GIZB8n1E?F$(R>Yf4cDmD}&mOT3% zawHXq9SmXsyUNr-#Tp&WqBIm)m87Uhvs3rs2Z{oq(zGK;VSk)r9Y#{cHdLCIiK1kH zK(`|hb8l4tCcA`ja|)dQ+Eg&Kp@42dFh5Zjh&^FzaYb^>!-kr~V)Mln1HD!mkHHa- z7IDU*wHs+F6c)pY&o7>CSwbxDVi^C1zy?W|d61wYqjvmMvA5wyU0tVjdg8hOls|Sx zSiPJhS{S~(I8$2Idu0p9@vLNJsW?hiH{td6?C*Ej9|tmx{KXV>^n=_=B7?9X9|uX& z{HxN+Y3-{*VPljE@Y`W>`x+-cDS}o@0H*Dc^?8KN(vo8)W$Belz5SoR9sX$cZ+(Gn z(m~CURi@C%(AI_QyY!vgG8E8M!k5t8874Y;wh+gOT^f&4~nGVQAl!h|sjgP=g# zkYgNba;X%6()2rq*dJElznRL`50iijmJ`Q}!|M|Ujyq{xKMF{ipP7bsQH^pkQdoli#N19mOgb&sE)b0EZCgByD{r>pXO6&n? zPKy-Q8dlhl5n%z~nSp^tCP`T!d{l$(#$sk1&g;JRY*9n>I$jviLR7GYL|GQQWy5l4A(8|ycF3_N3r7F{tw9L0@Rnk!-6+Xl-Y1l5l2 zI7g^JQn!+wEjZIL9a39y##yZaL_@%6KX-smohDfj!`Xy97yv@J34cU~de}<1b^$o> ziB2q{BssR|+Bhe>U8&YUn4_&3;rf#SEtRI*)to~JQcB1a*>>$k(4oCxX~N^un#?z~ z0*hXtw?CVrnGA^d@-Ymo=7b!Z%~TK;1`DlMx3#@+y^#~O#JP~C!d8W-d_ODEF@i&Ls6eEOx|Flau7!dAi{PDxdA zGy4)2LDrW^#JAis#so~sa0aG3sk$uY?~#`{XI8!O^3L3Xo^J{lM4rFQ_){*j3T%gL ztOHmS<3fkE>>+svJ;h+TcNiS#>-7fmpmtydQVsXgJ2X90*EcFBfoILigc%_Lj=@`rwfzvy{_a&zpky z)`k^x2#QW)vj(>Vjz+|WDeCLZ+9PeZ>F82JGUX^k)}pw zKremhbGF)_B$r*03;1Hc80;5H zb_*)4)!lk8Pv~1}16H`bCb*|f!SF5N=Bm2qbigWYReKP%tR1ynHtEqSKuHwTbjlo1 zI{|Hd)9yv#c8afp6^vi|RFWt!eRr^a3u4#56U{;?2i1!{3P1G{AxLA@IR){6#)9Dt z9rWP%FjcL5z6Yio1SH`w6P7pvD)fU!gPLMbEgqL!;&VZS0Cs~xY_=Vre8_W2fBM5B zZP#dT^m70>MO-(x2g$(=P}YuidaRodih`*4;9NQz8*#188%6Q?!c?WB+v_s3a$oT# zY?{u#@Sk~-N}BazKWl8AmFS`Ia;lPV4DcTyCodlKq2bqIE58sYXDf*q}u*OZbq)P ze!r(MO<>>}m9u{$aP(wZsQ>few`LiM&?+O@lV|lkYgyVZTjk&ay=!#7Q!%HVxiTA* zAB#4({tC$%_oNJ2_YM5#HI*{GS;ko~-~zTPTJYG=@N`R+L5oQ&j=jD6ye4KgU8^XZ zkrsi9yl+~0wGZj^ z&-ZcxXCK%OgEnWtW8EF6=2I3yptd^?0O5_Wcai+F9+521S&%OL(V?V;D1AuIWu|R% zg83I#%K;n3JxbLc{z>^Tj_>KmoZPj;r&Y?EPYc2)-~xGN1*oMYO5wi6FgP|9xE@5t*L-5fJJWSF*UTErKE%~N-vt&%E(jb# z&>sh&V52QYvo3eYyt4(|KL=Y1$c3B})yu<206E!>1}ee^%`=3|f_BRRncJg5Kww&C zki;=WsLaseI&@`v892v&8Zno`SijGqCa$Z+T1PB`)eh-aLI>0J`IKIz6uz0^#F@Z> zGvAMT#J7tyIlqFkP=EhH%;=txw9pkZSh}!qL0jlZQF9|9Xc-y4D%>r`QIrA@<+6JD zYpl67;tSLC{o;#_N9IN{mZmaSx4_85zvQxsO`R!!;7t*zZiJ`3jN0dEr!=K_%IK@S zEN{YOW`xNwu2G%J-RU)__}rY;%+Z5RZXJ>)vr)HwjyET5VL~t4ZjM$=!%@=;@>785 zJPGBQ_g88=B9NPnY`jj5 zsT1=vf5iTvxCeM}0wX4!FYf&wuOwUL-1u{UJ7xQ}R;zX_FBB7Gm>Y({+6jbkIqg%= z(?ZS?Vqff}AO$e!TG~)ryL+L}z(^;m);hx7cR$)07L7z|{i1O)EYsH=5k-a`I)gw1 zAN;V)a|KaXn~v4Rm!Zyb?v0=ie!{TI^k{OT3vsVb!=)Il8wFfg5TS@Pp)NxaXXk0; zH)PV+qp~WWT#&)1>UZ0RJa{;TGdSS6uRu>}HM`5u4sw7WC{N)fS6AsO_dOsfV`9OS zEgy=Kt8F%m!YBK5=~;cypAN)d6+&-EluMF<6(na#R6To1HALXSH*0-7b|*j_JZ>*? ziRiLwvSROl0pJc`oruD}6SI2XiP`@kD<+_4ZD3^iHxQg|#=juAzsiKTo`0ligRT-@ zVY#hm<579B20_(-`t-X1(mu5ErUvwH1i@WNi>tE?f(n$Ll6|fZe&KS&PpQIN4nK>7 zAj~c{FzX9IDer@bD=%v9t7Vp~s!d%7SRjpt?tZ#ajyRrt>q~Iu zR{fDdvJ%4UTI|=)+|61KT?tY1a0K~zKP$U^ce7m%QNLGF1N(1Qn!{)b#5RpBdN)aw44yot;HIHng;5$>z{yvb8d@*?&VI|qp zn@2(Wzr(KrmPUHkf1`Y#vwtc7 zuQEYVBJ#UZa|3J`yV(Ii0F}%*2HjAWmL25u5g@deEps$hI6n?a=t_I!miEL$zMIbM zmMg?9|2+SdoH76rLuVm?f2FWSINf%P*$p3gY0*QSCNZq__aYG_~7c?@k`D6 z4b4g**a0pwSVYPOYMIzKAc3zZxkRHer*=mn*^zyb&{t783fJ4=C-5oN;*RNIgp{LN z-Kl2!AIN(l@U?6_T)(*BUC9%CfxLGmMH^c`-eYxFiUo`Y!?+Zh$LQ!Sl{iNNH0GTv zA59CxDF_*yN|3xi2VJ7W*0$U%mi&>>E5;KPhP??gQ628`5*v6K9(w!tVFLkqn!%*&tM5=%nV__zh8e>N0)I;o#sjP6w{R81U^l(Ao?w-uwaEC`jN48L;1Kl&UEsbo0G<%of*Ou`rZD4S;LdD(Qlt3PY;4e=Vm zsLbv5D|+1=CF*rhCnL0I;zcf`QS<^fbI72H`it@3enymE6yaqgsc-K>0n4=sU5yv3 z$TXWA?2v*}gp?u0iLArAsyUV>CU?tM!LTA@$Kz)-xQz0rSop3isy9$CsxRUv)rt&Kr(6U%@@(Ufz8BwRR zj-650_>Y}!+3`BfKNbB>2@a&MM; zAI2J6*oYM#fQ0IAG5uby&I0iZ?$&>NmllO?gl?_&agZ;dcF$R>R7@$9o`b>HLiE=- zHF8rbPn~%c=;Og&|4QMTE-niBo;e2~jq)D_9)jNkx*h&5_Xj|v@vn-lzsQ3BXE^Fh zPBfj0Y9^@Va1fF7jILSSqS@Q{@DMC!ilW$R2yKLi&B|oIT%@z_!eO9wbI{uC0%N}~R~K8C?!|`aRF47;bvijs%?zGI*|)vt>Rb;c zQB`Hx(_KFsAu)JIfdj~Uw3t_AWL8TU@j1tgbStK^P(<>R%UE(Qhv!HVrl`OlEfu_| z_D|R`YrB{Am0?YXJTlktomO}WjXx{Rdywm0@Kr!6%v@2!OG7oXu^yBLO4K}i7x1*r zT4qKuyVz>7Sotfxf!}!#c2`^sx>9eH!esUUnQ5g<{F-=C@#H?Zwj=bh;?;RUC`)?~ zGAF%!bYTyK89LTPfP3-=S~%EB&O%#MF|Qxv_U|%gtGz&p-KLL~H5J5`j{AQfD=)WA z@hT{LcDf-Pm%l-82g3|+AU3CQ6jn;vUHJ!c>ZBgmhPUZ0cJG{7;mHlknKsIhARk&= zoe6ZbFdvc{2_+CP?uo(BG=p=RZ$k-1cWu31UHibv%s{9Cv2-rk)_k*S5z`GXI_DB~ zrDU(jPl~8xF4NLmu$Y6bV-P(_2mA@#2~5R<_6)>nD8d&{^Qj_`cRy-kgGCBEe^1E6 zo0!%=@pr*vcK&&s+cjdVH(ElEiQZ-*NL`>G>1Eepk0P+EB*u{6`E+ju^{D^)UJY?juhrQo~yq7bD_vOI~GsT3G zO_T*unhJo>hShYpx^cQuUR>vqO|4bkuOT%+31$xDUu*~MCNpc^x^jmo>zfM=3xK@7xb zDhf$cHLKwkz1;jp7+WYmep)IV;!U~zV&C^)`cQN_YbmVFq3hO}sgF6IdH>yE5>Un} zBy;j!P;Sr~S@(7mqgKa>E?6}px4E~vPGrl?$QXE;#>QTkP9ySgMtTyPx{WdL#OT1o z4f`k)#}*`jeLiRxJ9bF(DT1=pMN`=!lGdh1n>J*&H6wy+d9E{@I>H0VziwmktZN{4 zXDu@+gr2ZJDC;z$hR4nr8S4(^PIW`f8h?M6X=0arjvTpU!_Vr$ajd6rrpYg_elp8a2JxpjHmw|2TL-)-{yC~b1hGWuJg<@ zXNcHPb7iEH)rE_b?EUqZ3ZIjyFAVr^=TZ9Io{jN;zqkC$dHg+{Q}*az{^PH*LFK=P zYrp11!^xQ91_6Gv<3kYVRnvffx9O3+@=6RfVx-KAQb@DxcU@u0=aRi7W~1q<&hLDW z)>bLqKf%@k(D0WH(-epuT@Vj7gkg;H7k4qYBj3cv#l}4-lc(tGym8OmXGqc1;mns^ zT-!1386c3Oqs3z$5nLaOM?6JTfud_mrieowDUpA_5vZJKoQP^akHtlRIqd|9liaWm zK1XR{DwN#Z)0wb^@>ZE%`t}?WMRDl1e2=I5&?;GG4aijyrQwy> z>FKLO1&U=!K1-TLQ-gV5qncFe9z2JJu6BdW;XT*wcz0QVUOzd3904>>G<_D)k*c>r zsrFW$L7){xDHGC$JSC?Ccv@^Ri;UFvXr_fKuH5Jtt70QcPT@k^^Q%( zYeJI8Hiq5N`*)+xI=W@XG`Dooul$*jxrVUnV%tUzcdo4#t4+fJUi`x|S{p8ajhF?x zYU{Vv>*#}qyDK!?s0^-kc@0xzLR0UrZr}}=6-b@o!+$f=sU--_kH|OLP3etQ>l?mC zTP@NmT&}Fy4}_*!!!y> zQY|d`0mmGtB6#goG<1JJIW}W(Bq4f*cUC90NYh#YtCCkYNSJg=C`-sp)qMSNHR zpl42bqKHp^dt}X~FnhHtl7Om~(U+OO)41mqkB;L!4C;^X{-*Hrwn)*Lsg}g0R#-{3 z8TMjJ__DkoeOALhIOmNOBvyt$=FziXPzj0IiNuIc5b#Vxv|yA5sxy20t~auB@M#~| zBwPz5h`FAnzw?bD#KI$7)Pwg)mZvwx0aV=&N|yIe`%lb4O|(RPA+-L^60_tgs@#Zm zgqs_QWFs*^eZ53co?jtpKlsG#4bA0rZmS>;;WD`~-kJaGfgbu)I8GCGnos+)3( zNkNkVwZb?C$y7(&dEGlDzRVKUE_fUo>LLRAIUpUz4K5E#yyRU@!@G~`ma5(mPSYRZ z8$LEj4l_}3VP50pL@}Uvmz0L5UocO-jcnQ@8y_9xrVXs0Ul3?JTrAn+lB#!F&WvRd zC6Hb>QQhoKh@K;2iOCR=#-d+1glDOXt*6ddV({1gC@djtHETkVl^xv|X3keDH8}H= zh{;76r|~5tHZ7&`dkaUpEW@xfdh)a?^7qFAd<&Gx6{sJpBFTx({BU(a zvIRFKUfX!i@F|gFP~c|0$LDcIh>%9|=?@tAS7(=ce>^m0JW;O-l5_AFXGu$=X;FOb z_NwqT>qd!@0cWz7YH^xx^y&y!pzb(`WOLU~TIb=WiSuYa;AvFC;Zr8M=}QN5!$5#% zBL5lBbx{hxo%?fn8!1^lT=)@|?M$6PyzpcjxLa<>0LCfc)a$1#AJ| z18M#P@}7{3nZw^;0JhAU{|w;&Digkk()`~xU)%47KtW#F#{#Q`rZ}sBV~>ELQXHp- zBXP$>eXZVEmLriDn+$k=3~#YQIEj?*&Pi$EBa0=;scI!v5|q#Xa3GkXO^KR1HfU0z z=9V_#yBvZ|1{kMRohbx4+D2u>mc^n|5gGThoMtm_=62dE5OfHz(}x}6#VjvYW$iu+ zGP~P)`(DF%Gn<~+HCHs$x&UsjilME>hc9ui5!M-E)bbHEo+i3mm3{%@wv5mY^4zwf zlydGJIreF@G(JWuX-VurT?gf7%{FyW>p23}eYaIBn6hpjD1imS%5vr!a5Gx@S@fcI zaFA>5L}NHi)P%A~%E#^8jhHh^U0(z?mv!(1Z<{ofoz56$r?AwBa|V{8tI&iW#A=?r z{gQ;vE91rEjIC&kh}S(Yie~wVS!TydNMTttggB{;${r*9;z~;TthOIH)6ImtuZgK)I7R41#n!#BgpNE1VqXK>8<+xVr>~jEauMB7r}dMpzMg zM2sBx9UUBO{to+`#?|`g@%^i8_ZEic^8N7uTn3{rz<&=FnN^D= z2YNS~R;CuTXQtHi!I@WXbBp7~Kua&Q085BMyI{|26Sl^nJb3lYLw$|oSrSua1uZQh zFFU_0))1lx5ofihh*1Sc70|)dxod;luR)txTWYMx!IL>UL|t;L&^=Wx9yMtHm7rE* zcH_kjKDI|GI>Q01pa^j%(#<>pDQFf-x5^uozrAn{>`N?uN@4Iuk3TQS)G3EJSKFU5 z+K_3Ai==Z&F7N^$OW?QO_zbU1hsuW)bopof4VpfACo0UJ_h5t2$9t)G6}OwbV(gsq z6`X$RK<;{uB`+!+VsOz?RBu8-PJQPv-#1UDOgP}S7!uce+p$jZDpqpTZNLBo0h%1d zo4`qlQ5Z5I9H4_vF&_yW+3k4ijuD_fI&K$h+&(a;t-aqjZX8c#su+3LmyYYl1_M}v zo11-U;Y+?71mK$Teu`gAco?rYx6n3h*!kcb(N1LbP%xRid4k}D#kw`iSxxt;gi>8dYiJRBEw4=Qusitn%=AV%;5ZNwtQgZ zMy`0h=7-~Hg`4sRPaq-uJt>pQ5zIsaL4MMSte06_u%gpmGJH}P`(0O1=DwE(x^Z5D zld~w%eYOK*6`HBt9ZTMsX3uIJIT6|{5a8_wtM_7{+~c^&N0clDsJQz=7FHm))dl~k z^IqG0T$Xjx=sG~SRCR{2e+9}VpwzXC9z$gwOsovDN+7u_^S2mYY#bg+Nd$%iaT$-D zBEtqIxAMf(3Ay(;xBS@4ZTlVfDtu4cV7VO6c$|E=9T+;mqoG)A7ALg*_T#2BZi9)g zoqhDfKuBEirq362voxmMciPDh8GZ<2!ljIMHAKl`(yVitC^zztT}A#no_>=)N!uhH=m)xzHRuTX(vg$=VD) zNrWaC$4r8JyQ3iAmxr9} zj6FypS2zsM*iB=8FTVLSgu(vin83`MzY=k6IBY8~HYm28t)gbYR$chYAF88Tob7r* za=B@O>DvOk>fiT33CduHPy15%YJ^F(j5onRA}KtSNUM=9`zNDmuB>2h06>cFvgk67_%d2B z9*TE<=^VztuXyQ#EOaTw%S0yl}4- z8Zim<@M*Iow1IdGl0Mb5q~0@Gu#%_?`Wazsu`SnbPZaj+-cy$psE|46q5g*xSj{1- z$ov|MLtBJi`NE+jwg^QLMn=3pmQLAK&R3+{s)J(FRMTM=50 zA^0-&emeG^zGCkoiSGzgtlSw>q#`VFRw{jXWo8=wldhHJtSVPM;J}ALsOIQ7cyKY( zH>NZ=n^y8jcTbvzL1k5KxodQdS)=hzAC^uBu0pqXUAiNBi56m^($Bm2TA+o7dE^tTA5$yUu-VDK3j$!5j1bB#~{tj1l7>D z%sw7D*lAJ}TXeFv=h`-foh>!QT06|pLB zZCMBF5ohb2lZUn{jJ4WDc`se9De#!=q-OM_bdFv7H;qe*dr=iiNv|LQ! zkfctne0PCtCmD%@jkUGKvGLeVZC{?jxCrDzPPJ{_`UBB6Y<(%LQ4SNeQ>S^@9dZ_C)X?^7>O7F5rKh?jX!9m4n#6K-IlwUl2BE4l z>ZxR5F8Z1uj>E-rLSm%+)gMy$3(LFIWp8s;ihj$9*~jZ%KhH0ITNIeTLVVeSMqS$g z3D^v6*B&MSM;+-4sZG>6rm=~kc2i(i<)gB>E#}F!E9T105+_TKABBcZJoz|F?&A&` ze4gg2yS`T+vfH`!e2*wi^q=0r1!S!)<{iZnSEUCTyw-ok2DKl?kSqS6Cp4uLH*wOF zUoz5rVUoXao;Y$Z(Y*td(Bcb^;HK+gY5fzNqhUSC4KfgVoAs90UF3+5TfG(8v%083 zfIdFysqA3uqE=6Wa91kx5R%5o(s;1j0s?0z>qLXbIo(K!9jjY&0v>KT9`gI=w zXEINS?pLD@S;^{%{&XzJ@|fo44>OZfv~QIMuh-?zyr$G_3I-u((c>J8RpKf>NSPXY zCVvO@GewV}_eFp||2y(Xpa`O&aooIYZrzni0J{@t>A`MCTO~r6RgS#2c97n6N~f}t zW3E+=Z3dEqw#tO?IZZr*BSm5y6h{|vmWx&8ta-slK94LQiwqi%wS=;mTl>L4b4x}% zV-=qsQ^N*nW~4ic)TWu2FMvb3KZc6HPnF{qodv@%G_jw`YSamUeN8vof{^MYFJe2y z;-jY3+MeR3H)>m~vfEG0W(w8&fNScXtgCLJbw0eJuEtk4G*CrfbJSrg&*CVLqS5*D ze2v$NS*w`P@iGvDA_T1;^iP+QA*7Tlb*Jpp#b+r(}IvsK|6(D784aq{N9x1329(?+>>gvFvj0L^=r(n>!NxZ!Tg!P2yNUN{}czB!D2F<5@JglKY z3rDke4;9SzPH188DQtE7nZN`cWZ6T8Mk&dra?5S6UnFziC`No0WP_C{+zhH(p4}Pn zcqYjbs~meFpz;}*gtGThXbGqiwPComz((XH0HBtz@`G}XwD(f8h&Y@xm2}WyWzfEs zN?n#cGh?OkrqWpL=iK}u#q(OdmG`6sUs2UX8rGT86)tcU-?oLsp#O%veM!CY=Zdfk zUE}^OV&~0Ay7k%{UaoHz5DFkAZ0$jDiQa);V`SPYYP#?Hro#3%EW;A0V~X{Wz=-FP zSrqFI4PXRNMnjpj36Gap4A0gkqrf>Xn8TYDpeNk#|HIfjHVL9G&7#w`ZQJ&=d)l^b zyL;NUZQHhO+qSK_z1Dl<#yu0U&$~a>4|pOnv#PT4fuE5DjVxm4uT8!T$phASw$`y) z2H8G0=`1(|*;Kx>S@|Q&)V(}vllj4i)xF(6q!hEE#M?S53i)Q^)8zN$&I;#i@GhtJ zfo4mG{KGSQ?Q1*u_|)rm_6kK;+EkSLt6`?klQ@V#%GIe~ZOfavXyDsnN*^)x`Q+#E zQWk1x;I-+9R`6pnr0kPIBw09-Yv0x9)7{QW{Jf(HEL&J<|bi^1HaOwlV-!DXwnc z`MH};Cy!h$u3iHl-0UtL%%lrLo(#3YckYo zvzyG=(;XLT&oeTy_L?1^i~qW~+TQe8Hj-smVbC03Lqx;K9;0-ob`DRLSb#v7SY6=iBVPQPfQG$R?kEWUOu3F4topiw)fpg2zdF}4pO z_SI8jSi$Fs3{Tj&gNN&3xt(!VG?}ukAzi1_N)(KUBUUPIY;Bds5Lvs$;*Y$P_67%q zI-^GUSpfpMUKvK7KK!14&Omd!+Fb2-S%ixg%+ zu7XXO8M9gf>*1-aO6o>4GKM&fDOkYB10McQHK`ezMeO`~W~JVjkvG}+ISqk0fg`Q? zWzHfv$*r2Q5x+-kDtXK_5i|dA*-WK@56iGTcid{LJ{Cru{1Ja!T1&I3P~v5cMPq_+ z{f9>?NCMVT8d1wc0xU(v9zE)+*#e1CNeUzl__}XEme1vbXwZAmFT9Yt* zU5>5B(JI2uv8`h5Rai^Ixh^v=IZbc8<9m7?5-J}R*Z*AZ)58n#V2+#7#>OoiQb+r! z-cjX@%q{gQ6nlqm>(OdFy&#hsZS5g3l`8ph>~@J@M9CayHa;E0sB}BuWT5^G6(6t$ z0(GZnt_crY^x2~PNRXc}(~w6=h3evrtQP`^+XEbZ5G^&=wQ{PVvOIeRoLGkuTTP1<*R^0(8JSp4D222SC&^2uQ zs{pS-5e37vkqCW*8_nG`cCodP()Fq^Xf~3Eq~->Yf{NJ0v4zrO@KpnsfrU-D++eHX zJ*RwqK=*;&$#fFrSlKxqXi~_~0{t4Ia>ot_W{y;Ovs|{al8U~!Ixl0O7Pe>4$oV(h z>ERa7IP|l+M$;!PNo=CIIRQ#onEb{BW~^Pc#P@Vgr^t!&j!BH%1DJ5#6L=JOOw zNOWCiG%l;oD`!V9Z&kCWHY{qD%MyoAqUY0#!aqH8RI-nn>kZ-%sl9Wg;_F0U8xDrQ zL4jA_6FO{5%nB(U3HEEHZPU^%Y`grQN;lNZ<+t=V#Quc+Z)ZUNlWX}O;57$J=U;gJ zyA~?1TYtmrKR*@dJ`w`}&U(UX_Jn4Vnp#K3cg@eO7$=b`#o6yUKW`_qi6!WBtg_Mz zgk|hPPiHX63x`!3!knPAXexlTz^_;Cyr3kd`3)4zDBjf1$Im0RRR%1a1YUp_0qSf| zZ$p;!Id_bL>li>#fd&pOdyqluS7wE1`r|s3u^72hlB{ma7Q$I=#g%n`1fh)J07asC zVRN+CubXP^Qr*+BbN6ktK|?M*YajXJK+ zwpHbmlPG&0&d4bx&w7tEQ(`!Kb;x;rxPXqWM8>I zV@mgmBj}9XQ_3aU7@6H2J3dKM!>u!uL&x8HtPL`1P9W8s*9(CPU(cLL&O0({_-QF| z6i{X64v%0?87#z=p3{(OLZzc zZ0<65QQ?nY(r2>GEg8cA16RsZczd%rkhj#rxXZj>8XfKuuxQ&Yj)Vqnm(CxTdeGXs zIztZYOwWIhcIf)^{xo&g2=&d-)UtkNMSl8>Z+EHN4I@Rd?9(3^MU+Tqah%}SEy?dy zikaqv$zPf?-uPBrNY+et=QKA~XR&LsHE=)QO;<^iVUeQT(_{)g)0pWUbMbQF>##M8 zq)49acnA83mZ6?#2a+$kvFBe>wgA@3`<_(FBcv5pWlil6Wdx9%^^mI~C%go^w;BY_ zfK8^fkr92i!w}~VS`|QS>kR3QE9con zR%aWLuHN_Cm#GnruUagGw=0`DnJd>;SL_fgE*Ax@4@p3j%lrx3pb?*!;r1}(wET1w z6Ahn!s@$Jiex)3o^bo-ITh^e2RE1VW%I^E!rZGH>7qs$eWXieDKUpwA{bc1cXMh#W z&qbu(*Vk?}AuIY)C+?FO?Y_To@wsC95o&q`wL;SX5)na-cAXyqYA3=?c<_tLeqm9` zD+3`|>l4kF>2+>jA76jj5>zr`>eOuc4TDlu+;H-D(|TP4GmK9;ukQ8Oru|{OB}Va> zYRu~&a7GvYBdwTgJ>(COn7Ti0qjKRn7OkjTH&&p9!jzF|_Ic*dkMWM1a?5dS+2*do zZWtN!zL(GQNcZo5sl;gkRJ)+dA||Fnhq0jm2ig#BF`RptIkHTvgQ z%br&;Kw$k+FCD*f& zSD31YYF-W{m?Ft}7@^UQ)s4_(yXSezdN#&~Sx3(VfSX&oiUF?*z{7=anXOH%rol=4 zbl5M%P$H)5+Q3C_uwxgvi4F_f1mLi6O7t$&5zSTOrTlm$NS4q-8+x)7A5f29$^lh;SZUAnw zngylK0ld75^m<~HeTrKw3?SW`woa2&NpAO>btNvQ;Z0720#XO?F8L0~Ec>oj{*ZB0 zBt5Z+M>Zo#<{U`BVdn5d^wImokzEv(OLGzy#i!synyI8m4H^=yw5MW~OLPe7FDKBC z^|dK9&Hc-CV;du~eb1ZEP4(dkLBUCDkBH`fUO~PNxyuy(aYLswLCx~QG;~_6INzwK za)>2SnbiD}58yt`r_Q9YLYIh)HonqXFBL_&KmU znD<-+pt%6BA!I-1*#xO2N zhZE7;{uVg1k2~Bi-WTFGH4|s^ce3Hk58Ge%Xz+XPmVF~9;cR%3@YH+;I9|-Fn<#^IB|mf=D;i zXPb@*FL6{eWvjLWfNLs`ZL{1Jegt8CVGDnq1SH+;*=P&7NvMhg?sp zHn|kz96uxD-#AYZYMS?*;1WQ4XZswJT$6_Uf-wv7t%7!0u2){E!dY=8xA>*`Gi$=@ z*?9A63%d9c%g|8+7ZBH-9LcdsbWJ3`$kEU7xa*gyin%7Rau~Q##&1+n7FRxdb%@;Y z@!k-bWvjAxFcjemO2~(PHxoh64h=F`vIv8Rb$$%$T=;<#l?MYLe4YH07|awf z^jf7`1-|?$Cf#GM*5H663&xIkfh^+S=oeTV1^w!EZcEm4r)DEmOCHY|yiw-xrGgko z;;G?L_vOO_>$wnFkt-;7Ib@mH9Z8w%TUW`tuCb)C;TIH}~n>EL%T3BaTpjgF$@; zj7tS~b->KxvN$UcfV=jOx)YpXFfG*9ZQ(t2FleEj#x<9c-)4Y1pW(e7>6j=}m(3RY zk~S>;UU{FoLK|4?R7IJlbji-J;2!4$XDb*pH{87Fv2sdCPkNjWH z`&eoY(&W6os>9KNkm1S6*(bqp1fpms7tM!`ZOGeyDLQM-5j0IDL0x*;YQV>WmBjuD z>IkT+Z@s+cJiV~O*&xd~?&12yED^K5MjdaPF4)(S!NqtUq+mTVvgl23Zxo@~D1wQG zp^)Xkmg}&Oi-z5CHT+a=bIn@!XPJfDFINI-3N^!USH;P1%@SEr$&ZEidB);o^cUNz-?#ex@%>4{e>Y%|Hga|Rzbata(f^^3ziXlL__qQ^ z{=NX=tz9}X0 zf+?ZOFv8Mxs1b`4?oMD2<33Tcl(1WxVCelT@n?gZOxf2RTLqsrhH1yme#kXy^K4rm z+mQ~vYf!fZx(FBOKl)d_BgR6KGR_8b4_O;!9xsr;|B%b+C#LDg)j%X(hq-@*&S#)6JEUu3yq z1v&0#tobtih4WLsMqXx}i^QNiq@;i4uMjbX6~b_?#w@{Q^)Q^T_Y(dy-i|h_B2VgX zH|QnJ*+hg$hYb~(fd2D32Du>b@gbG`o51Y$@^AUuPdSG1kNkZD=rZ%hrNc4w0-{5% z)9ah#EhYm8>CeK4Sy5E(w^FMuAmdSdW3Ye`H=LiId6x(+zytgJ1)3(sD;B#YTB~r9 zr1rhL%}RF|1pGGE{#l_ZgjjB=jJpV@hv+@m`71CyFI#*AaKc!GSJxn@i94Tvw`3=Cp2jn)U^atemVm`6S)k)HXQ951EU>(bm*SPh@G$!?j= z_D7nzvkNh_E@rp{>(c{`lU)A+&O3}VN`RyPL7Tk4GoR0tkk9Ukgs;oKLBc7349!@7IAX;9;fcr`AEQR=S+>O+N$ zsD@v>eiK?TZdeDu&_TM93QoLbm>idyNVO!kxS4Om?g+Uh;zP?e_vszu@rucgu66#; z#y>e19yI@3H3xlP9{hLECvRkIZ{%RAsHguQn*W|Py?>SS-?dTo+rPyAZ}Y$N_N|j%SuO1E_3RadPB<=#QOx0^1-oDN_{M)pg(InI>6=2H| z8B?`YxRT@&+zUKl>?KQMg;TTaq;;$z34&2=%r0ekiveG%fKzEFTn3sF*G1Ke@fNC; zcZojc`A)3FH5V!nbq_IgiW`bni-4pHByv!OsOB74-U9OZ-3Z)>grRKRi+Haww!1`L zLhn9I-2!#A6fLOmvN%MtvJ?RDe2#h;J|K2QkWs*61tBab`KhvWx&-t9)cT=b84H0o zLyJ_5cPpyK`)UIR ziVE|#3U2m`;Nd7aiY=Yp+TN#~FRy8|exP1_5+)GvTCF#CEtWHbz zO|q#nnU$bU;*;9#5fY5oQ!D7U+#4i9B?lBFQVXD=g>2%)U#lq` zPI;(iCxB@1z=Q-i7XMP^O^YwV8m4lnA#aVr_C;p*{?(jw@bFrW?*uFtA*dO;$7d94 z=ToM1hLhW(b($E45?UciAgR?-5T|Xa7#YkRHri}6fWiR$EVO6s{|;JQ2yyxjko##W ztym)>N2lShwSqZO^+ee=4mM@JGlw80n!QqLBMme|l-?3D7z)$>_9opHOG;3>V-^-X zOD(ypX{BSSs&FI$?+ErvO;EqCcAQ&pb5;(Z;faGjwLa#)s=PE}sF2Q?i9@yt(a#$J zVS>pJ4oDMhp0X5Uzz_@us%J71ttSqG#w|(Sqynn?V zgc=Kr26Jq#4t9PCWU|(mU;0uNxFw{N_~b{wt6z%r#%qE8spC*Un|q&-|1dtr9gN%cZEgpSF;m zHL7VFWen!@1l`-jO&X1AY4A>Pg5o=+>d9{n0?p`Op38TQ+bz7EI&#Y%+;N`Rpnzvg ze(WH80ijH$qf(q`p39QglIL0_q?APIXTt-(zPQC{QNko3w|Pgfu*63dbE)t!@{C2r zzvCP*)Y~khhFAmqPL?i6@{N`f$^^JT`>0bWD?;(Ip!RzqQEHrQbe58=+AahdtE*$$ zF=nNOf2ISi934zXE{~9{;JzwhZ_C3*DL4(vYuV|-L7UA0N&!KHr2kpLBRyWBBrS;a~OAQ}s zn0E{|y6{2)5i79l{gw}icw_kJIY)Z zkXq=ap-~l9K=3_To0lF%>(vq_;otw=r<_zYB@}-n;#0QlP)k|Cbd0 zu8V3`|BO?^W|mo$8k-3P%=X7+ZY3yA}|~)e(0u z2r}f9nBHBvdRzrYC&ZEJoC1z8A$!C^gdjDk*AjXKwNCg9Gsj|3ZDnU=WEqyn*@<<{ zutYMU>TGLyO5{`|Zw_XlhNtu^z=lRthqFkKi}T2L{op829How)<|w9POO5di&o(`k z@eT*Mae`&cNJs2eSB6bNJy5YhrdP%yU@4(}s(M@PBsb%`QnEFTMH4!KK65ash@3l`uHuX; z`jGxSi=yeDAY%0&)9rG-!$zc6N}Z9REQQYnar_!j^?4}4boU~{hH-ArHY!gv%VHDqdN{kRUEzB~ZI@F%2)>ip#hTsY%oz0NOMol zeGw(N*$9VKuazJbqeFHuCi7xSMdQDx#J{;9QdFa;)<#-zMjxv+B{23pWb-nSnJ6=) zz~{JD6Pk4MO$r5Af3%D{(?7>Tlnf!&BaNAh`AMpq*{8f1Xh3+AqS&bzT2grNaDK(k zJd^%IPm+B;M15w~ehx+gOa4M+^WheC9ojw}Tkp9{H#cVMAk_|7s^wk~z?QMTe}KYGTEpxJXx+=rZZ)utg4L-A9tlQ#c`6; z$S9hsZFp05o@UUOvVr3|)$EEq-=%ad8#*YHzucuVOx%nx!B`8`^t z{1?bljitwgeG-vYhXtm)ry+}UA_V0)>1fNQ2(vWMc(=leBe)BbkaPb?PWXW$A3o2xZ}Yi?jagozrEe@>gbZT3c*oCZVR zDFPRn4O*nB*ghjWii)uUwt|YHpuf*J@o~y|~pufVQ8q$-Mi@ zprHvb?3_nZ?pjE82PHgN31`Nub5HtiFe0RqRw0@(R@A8TxQ45zwEa1ytDui&P!E&B zES=wBVET(1huU2_KL_(=KRdhTtr*1U)toP<%4mr4F0+Vy)J^=f#S6zfs_X<^+`~2) z&d@TJEHkeav1s*yWYbai;9NOs7MhkFYey0JAeqdiG6mI=+^AtS%6n(VY z-2#7vA3){Qa)NF1{~>aaoIcVexr~B>FiK@eE6Tn}j~gueNiE(8rFNZDKbnkV@h;!6 zDY}NsY=xG0)a3U$x~A=DCDZrxC*N{iY#q1ZQgy%z?#vnc?#N`p4t#?iuh;)koA{l9 z=PurCia^uB+ujkK_me+}b4YF&^HGG1J!H{p*QuScJ>RxnYjqRhB~vE=%&ud1E3W&S6LHC>cE`_q%){>H-}sTI(ct- zI2xCC?_82nu&WLxUvqBsVN(iF&FuoONV1~D&j>O!7pXQDqFxbAva-jK;V`J!(HI%6 z9O@MY_zx^4aceH-0x5`~$<-==(!3T%{Ot3K9Aiem4u>gIhNg+UX~}7!x?EE2L0MgV zk%MmESk)<(re|Hbvb&X{wWFELTbpZ!Xk!=DEsH{U?}G{T_)H3m=ltNkrUQUF9eyAR z6Q4|RvdxzByr7Zw+Z0a6R9ynsc2kQ!-TQ?ymMYv%!_nbU(_TI6mQ2K027_;I<Q__d$*|UGe+K8+loWdfxddRuRAZsthr-x zV~vvO(US0)@hdiua9o0!6#S?#xGxrver{-D{>Iz;Es=ou9sX4edfY~jVP>Hmyq@7@ z)_$6vRE3v8UHWgKR+Ie+5=`7SVabWaxaG75p|zBT;n@^Pd90b!b7Fp^mv^ng5nQwW zfZa)|sLH{gq7H-(wKq@cDBuWZ_9qddA;;Q;pUFgsZq?sWZrgS2S|t-OlQqa`ib6lh zgi9HEyn@%sqa;wLmxb2Q0)8>ttfLl{H2fY^3POrq+zVO2FsQae6~hm^T(6~J3P1gz zN_yx-yd?>3YU##Ch%Gj|h}y_a9znK?x2d|aNu@sF5J{i&03xH%AaK@HYjhKYVi49+ zDW!+jc))aOv%z1~J$VnGi!Q#2Y1D1!rVTCYG znK_L)AD-%Nc&OqjkNhcG1P7B^_E_ckOuLRl{LU}li=3hvdIs5cpf9JKZ(49q*eTJ3 z_moer6=qYD%woPA#i~`xu_YE!R(6TpE-qEvqV>sJrW~sg3EkboaQ)hcp`WfjdlEop zMf-y3cVOqUN?y9?} zW)Idr;Zu45Nu*g82y3Yjp(<>-3q(bv*KdDELJhyCSwQKjvJr~(sv*gbJI2j6K))I+amSYaH%R@?eoXme(->1Ek ziN1+f#P z-_?A6Yzd57&2`$wHB!g4NoSOSw{D#ggX1LAY{>6PifSF#IqI`hCxo9~n5sf=3rNG~ z%x4v6>aCCqo!0l-ts3#lW?bUJ!P66i45`79VeQqStr>^y-C{NVGC7bd!m;<|tGc)? z7~(35-$4gyBfh`CKlt`Sj~k0S>yx@(Vzq7UJ!=^|kf39wv9d9flep@)E>!R~zF<@6 zj;a(V#^-*C0tMVw{Qg!@KrreTQ`5~ETO%cG-)$xNj3*?sNelhl+rw>Mr3LVXF>KYU z_q*4x1ikH$7wu9F2gB$R{yf;*oli-{mp^}fOeQ4Du;Kk3r$q7Jg=tCJn8-N&r)6x+ z(*HpD-!)NT_MekD54Ig|{I>)^0Pma?LDmLUA7_xH&mUAwQOas_LY$-Y7u&^(Q+tM! zX@EhdH&?{BqQZ>R3yhX4#Y>R+5L#&5)-Pf-WW@QbFX?S%RO^E=$X)YkGoTr~Th=hc z0J#299^s+MQIUHa)&99S=U9bFj}fNfeP)-cc5-{^9f{@x({32RIpbH)9|w+27J!-ylC8jbuGWZ@{LY_qb=2O0--05GM_SJ?Y!#KP)ozR6W1fU!BZ)^ai3I3;TooCO=WOH9eQ=B@AMZM zE$89co1bc+GALd$k5zI?&T9WUp}xD9P`c{ zSR?Ch#!Oyf6Eq-Ind??`S8C}#r}Xyzt6hZD2Wuexer%`j|K}P0cjA^da*?tz{7(kW zn;ye|$@}m6&;Dec{onnGZO1=e`DNkn{R#dMb9Cu?DhrL)x+Jl@pu98p{MT z_}Jnhm0Qu=KbaAVqf|3Vz~V>(%V-qxHnspeksxQ}Dt#br z0&7a-cCBRWr0vP^DoCR=Oa}ljb!;oL`H`x1#pxv%o8G~Fl6eDQoKNq~q$lwRuwe>6 z7>8*Gx*Dxpwn+kv?Px>7D&X=Dvrcw{?;cLlNX}&BPliEAVmnOt zn1}PMbF$z4Umh7jEXh_D9L|Gh@tb|SZu2Ro8nlvM=_m(l)0-qT<&iXiVh%+tZa({+ z6Fm-+JBvOe%)LJz=em>80v1Sl4pnOkdwR;q?@NjiX@H*^_E^V|P20@yg`Z&)FDZhS#smfEW<;p?h57r>PLKP;mCFeTp=g!Avz1ce--! zbsuA}5o3t&h@m~10`CSavqf6Ils8A!NLvc?^TiChnV+#Q{Td+SFVez|pjcGzpha}r zG*q>TvGtOmxAC=mds<=o>76{i!*D<&I`W;m$Le~cYqF|>CQJHAj3dSOdA%QUzI#n) z-{U59Vc^mUTw@qu;O`~F^gXStw?!`ttRC)$Hjfd?@I2bVYL><9+c~Z-;pGObO4O@$ zr;^%cQs{uU3JW%seDH)d$3bco_w+;09VBk^Y=Nr*6}Fxd3viPn_<#Jx3#4t4j$ zRQv)8*tPF>r}^Q0SZ9gCqn1|k2_HK9qw|+)W}8Ss`>kq@yW?K@yTRrRs*_-NlflIE zd+9UMhx6B)h0QhJJAq!ga#mIXHBB+LBlAsC3t3U^SsG$&?}oz$O#?O<{=$wy%=dO8 zK)7d;*u+FCleLJ2$@+{d!QbO!MmIyb8m&>C$A!oqM)Pr7!Ne>vAS^6>n0G_yb4^9@ zWPA5OasKQwGwfb_h=mQu^tBt1Mk~h%?F0-07AIjb56?5153k9;gGTte(_FH1GV-$G zsDiibl@}mCx398UeW&;@IBQkBuc}uijAY5268-sV$^r zq0qgNP_w4tql+T*e4+)*qrt=eUEkN|U;m44D{$cge*@FZH!%Gdv5qp5OvdPws+mYRXU*WVR)B#Aqnmr72;(I6Z1ISX4e;zf9W*G1E^wjiASIk%pnX_(! zM4RfAjsm$~tJOs6iabaelt^1PV*DlkFGvml84X?`{h7nOib_6rUVq~O(l*+M;J-`Z(zFk z1}4zYM!CXSf@jCGAgt0S-o1}L#V0-Q^lra!tNra{AjV=9$$pv|XyiHGT}^XZzH?~% z6-FRfSC)5x9>_U)I|ptMzp^~XE13Dbk=EojzQ*mq>ZrAzFCfv1oI~Z^nuz@=FflwA zP2Lrzr)T?(N=|Dm4Wr~L>sAXFS9KM5E2N-@ZZ)y0j}4spJk53H7-kdo_`;TW>U&|* z8}siB4Bd~KhwE1i0)W}rD5oYC`kECqw+#e{)pxtOA5Xw;G9&Bzf(dxPS-q7jW@Qld zoyEIM?epT07&VI_)DBA0Jkp9-p)Mb5r~FB+Qs_In2U$ojwbQWF!YUfKYzSEe=080U zAxg(Y40+n|?O0@3yYfz286lBM?LMA(wp{Patr~+x+a`9!ddM;8wFUJ0SPr6bPkMjY3;`$j9M%i&Muk!Oi@f4 zOv!SkvG?;JWXT4~)nf9h$9+&WxEfdxW0Xmxd8F_xBFLrtTV}j_XDRZQ=D-#Y@}bYo zJn~=Zte9P}CetI!w#YU?DygO*UO%HLDag{y3nW|)A!zpBUsFH7{)!V7#b*CX`$ipv zZ&S&C5zF)M554~vK~$4y{4enQT?zU=n!?QlI?caK24;SgbGHC#<`pa5W`5xJ~C;DCKnX!|P z+4mQ={40po#lNQ*wK(5Xj92}qI6;)6`O&yg7Nr_W0yallXGRm$$G}pSl%M%)H*wMl z`oYnf=?d{Kk~UXrPUhy;d<;a3rLDN}WGB>j0xTt35TM1H>quq;RuQEqI9?$B(>I+# z))&V+ZE*tqSU2i;fdq?bbzz6;L9|lIJpr4^MawJi!%xzCjdG2%zRH|-la-3=&pywR zC^ka|Z&b8P2-`|&kr~=dFfKiivaBCWJL(R;r{p;SEdS`E;%junEp2$jh^PV|-HB4)*Cxt(qPfwf=6ur{ z64p2bH&4ruJ1di^Y=n%5OacZhlIOGxJ!2v1V^5)@LM48VQHKN}&MlRKiv(6l^ewHu zp`%OwG!3RS>C*M;n^;SEtRT^RcxVux9ZdVSzi7(xc!-hned{40r8 zviB*l92eDdm^x#f)TsIEaghBHFgD(+x~jQ+J4a zj{91%JusQ!b(Fag*BN>%0^g7!$C!~5sKeKApTGjCHb*Yyy^Kg;O?qqdXJOwp3DYZc z_easZCeCd-UBRwzLHuYWQWA_L4{sL|EY=HBzpTdxU=Uv|S4FIgtcLWpND$v?&657G zZ<*6*9tf>f+xfIhy`Y3^z#8Q;(HXYYr)yQzX+yxt{RC`WWI>;?X~TrJ%5bS4b$r5D zbnFY=$K}tX9e-e7**=J_g{nt!wlS}Jx@2qsUGg-ZM~V~5tJ>o^&KL9I%EXB_x}3FX zT-Cg3xjefmF$96M@Q4v?z-|?vRUI7n8!5OJ3j?ANgBZb$7eQYA<&A*7I}QfjA8_V@v6q0ItldIX88(_#%R|f%NW;vMRtMP2MS8PgXJ69j?2u#F z8aJDKpksd5ftuV9sBf8(iL>Msqsl|;DpAFAMd*+oloPX(OixpUa#+G!{MZhdRop$H z0sn}(D)Gb{oI8FxakYV)AnydSt3K8@MYXZVAN(~MW|_EjhY%VkuWL?{1_rBTCl_!m z%R1BeTPI-dW!|f`Iew3;gMLK%E>B~0J?;dwcDch(b5^9mVm+Yw(2P5Zv=Z6FQiUQN zhO{8bCnfbdryL?{zeWleX$xA(Pj+s0Zr$-TDB-Nru%n1$m1eYRkOdkJ;-m)k1HdB^WXkR`<&K=RbKfwK5{6un zT1H+3zpCm~MZp1?hNxy82MB#7zp>&cj=c4I9tx#nyjvYATev^WGtEtrT1y>qJFl&( z2MtAo@lY8Pc)rSOI;q)vXW`l~cM>F+B2oV}qOh}1yjr*Z;7lyre*rnd>`1M?6hE1MyF$4$NTAjq7w7{iNwEw7QY zs|x)NalcRaPBgrJfoPo(N7YxgaJ+MnkBxO(yD+YuT=l-R0@QBxKHm%+;Go{HvZ{jiP=1HTGCted4Ux?qKi?j5V6$t`} zi!GP$Z{((cgcfY!U0P-qqg1C@VzVpCckW*#u_;rl*}m2;>3vql5)#nd0>4%sCbm0w zv{oqNC>B5A6YumEO!o00y+0|q#TR>&SBPsMW26D*TZD89Vs0;X6aZiaU*?qs0VdLX3iC}0ym zI!R2T(;Y`JcPy61sfZw-B8X|jRgcAg-HMz+PrsA04X)eK5tx&x#&Y#5fo}ZRJ^$Ox z@W}p{+bJk%9taJDlokG9g%NW00lY4zLi|rVC&--u`S%X{-NN~&Ia8$#Q^=O-1> z>coO}36Jwc{=IY!3CcOI9u5gRJVf7YQZ$93Wk-@d90*!{)+=~gdW{6rHu;Q7$%Q0y4C3h(pok<2zOw0$duU6}$a-B&b&SQ1`eOQgnK16^G0Ngr#i zHyzC^tw9pnF*zafkD$qL8Wn74SG#AxlBTiDt>&9xr#GdJ+|V%Z-%O1YVzCVklj#_M z-;6qk^}KOF5eP_zYx(Ui%K|AmwjPdrsnpjZQKxg;R$7b~mnt{?l7#&|VF6LnI1$6B z?MXPDd#OlV%lCq+R{Egpem-TbW=`{bQsL~ju-jZ;-}I&J80P zCqs{=N?x=iR-3N&TykGY?MkNUyQ#28KZB6I)>qi=jE)=}yt&6kMw|1O#`kJ^yxt11@OXTZBno+E4Nke`GEy+` zXna`~v*^@Xr+$OsU3ue)99{4EwkZ+G^P`H?*DEdX>0)E{=RJMS)nI?3N^NOqlW)y` zxNtU13(xQe+e)yU?>{r2^E$Kg+_jI|m{6H=eggj{i|ZlaeFGcZRBplpcQ3>#fhE#E zV70;gHRlv%OjR0;pv7H!t@&GN$MrQ5qxA)r2yJL2kZn)EP!gn9YoHgW&C*4uLF2(n zvyS)7Z*xx&kF=xh$Pu;sczqpn};)z z%QnYUAYc*Z@s2$-t>BOC6u~}WDkq#Kz_+BMB|KVb_xc=>6oyzz49pd}!;V$X=|+gp{|2VYrIV6*UC(qqA5;**6luJjFZIyW zt#gBU!HE0N%X>z~T4b9)jO@kw8A``~ILO74Vom}`C2`pT~? zAl{2;9Sce0qm5o>4+-qj`7nKp@B{N2gc{6Yn#r-XbbJI#szz?QfMn%It`lIJ7*vQm z=x<8F*CO{&fZzBp-^o%hVtn3?#5;A!wd&IK5$io#c$BXC;VR8xD7hg_dUX~Pw6@=d zLwD6S_TZ)yN+Lkr4A2@+E`V6KXqB;Sz*a*c^tiA`ixz%tvdyW)1Wch?R}?Ne>=bs(2l7P};+qKoUQ_-0|qr?E&fCDa)Swih?6ZtER zk{Wy{Tdy>UkIQXqYd^tjD5(HR(KtL86AFpO7jQ^Mzs`0fSM69J?V31%Dt@pDKLyUQemcpNwmDp>^! z7?9nX_Jz#C8Ghz1nSW0u;2q77M6CX4~elXe38d*H#Xy4JwUV zD=k>zt9wVfjHoNFPq<6^L@`P+ks2P*rhiBhSOgF$Kgjwa!wL2v<{lCMlEfx$QCf1! zO}iR)OnElwEDUWRC?SHg-ln88Z4nmuO7L0iEo6-xJ=|4v1GK&Amg!D#h~gnPV|2?F zb`g`lMoYWA{_*(I!Xh@DSm@wCp4BVHo0|PwDn}$pn&nQ&BVxO62v=w+v<-v22uP7% z1TQDIrBK7AYwy@BYdq-9;<_qjAZ6pvC$L9K zFi%f@4(?!ZRvI2(;t4~JMxW4HBg#ZLbTK{I&OW!<@oyYMh@Ip$`T%S7 z!>F98ueXkWhFn4<$|A$0F;L9J?VT@|p5tj`CmgXi$;ahA3U zb!ME_OI8uhrUsQ2BUT7qGTzttA=ooK1qG)5_{TU<9C*yN;)%;e*)4b3y_1H1G7W%t zPkr2YOTiLx2I%>fa|E^ikzxd3#W)<+$4DjG4$l{R3FJ9upmEop3jaJ1XKT+M{`K*< z@gA7AIdA8?A6otHhnWBOZP`C0_O~8rm%(;N-%fFs^x(1^hFjllG6 z_xHy8Bb{AiWXzrY*;8w-x#kSw4)w1_Gs(}rJ?IPQ3&=O8L_LJIvD5f^v-5cJo+N7d zj!p8Dje_U`*@&>ayp35f*%3k=JhGzT^T)Iebo6ZyRq5)*@O-HltiHA}|A?9i8r6Lug>Virocy$G9=@2+mZ zHqQ1}DYIc0V5~E9@XLlcjOIPM8B+Ic1_R#G^EcQ%hat_}-2FLz2-?b|vid-*UFDN! z9u$(|(1xOLt9J_Niqs~f>$6b^TMEyzbl9!28s)WoKsoK$DZ|4kbPp(uBwR|~&<&=+ z>Nh(~E^T87>lXQO>dtTxlU%)ypQ+MF{YtuN3yqcqzRC0M83M&qrfA~!J)@NRbdd%m zg)E{J|0%&8ZEvN&2!_)?WbE3suV!i7!6ouE?eOqpUKwq%z^qIZQn0aS_ zS*L5S@H>!_`08P7)ZgV(#@2qxRv@&MHrFdpYPwFzKYLX{88x^o-*uI*GAo>v0+AkB zYN#?rSd{syAD1f&yu)QQRcoiUCvPcx)QXiqNMwuL02RDorS6VjKQCl)>V0dgbzJ{w z9e$Fw=OtGoIt^)}(evIh44l_1@QZYzA9gq)TE0<(bfcrzT#NXGX^-Z9fygtKnX74< zeP(-G*V%K{19v#j@uNGh=`mMAZ`tkFtNP>fn8JnCxH_xDt>|ELqN7hc*9-4Cy`t|m zsSc~)Tjrcxi_<2~f~SKSDeJgl>dB~Y1<#INa8#61PrWI)JXRBoM)S%y;v)qKAxaC| zM1Pdb+9$VKe6klm>(+wyck8LJIM;B<;~^ikowj)G-W0 z%00m-GsShzJm5W~u+L-FQjS8$o%K+)p~4U(h%lH|yqRAAQ~<>r#v?sTEL!61efs-QfsG0hnM z^2rr2_1rabvp-otT|TIHQsl_mPSp&ATmy%zUcnA#Lj7bu%|0}i=D}MawrSy3_u$DX z5Q`f0siTyj-LMeq?$j1qfDmibu1A1c8pE`xp-`>^Ea{ttN=(vsE^6EFihM8%Z7h-? zpS4!<;ZoE!d+WETQpM8>O~km1;p)IOLJD}2H;Sv-#MG~NbyT~>?1*`Cld!~b7eYDiMBbvNT4Gy?WuNndT-FH-*cQx$~ zm;3wrjmx)<^{Of$5y@?V-*0KGyx78|LsP;F&mU zIH0SW+DhQ>Am}Lacxi0H$<(&lKB!LG&x6Pau%z-d6U`po$EeFntz3@k(exTZS<- z6LKi&=Hw6ihx(2^;R<5#42~b6Q4KE{eWYv3C$tP?egunsI!HCI-QtQZ7|Y}W&T)TCtB0_J{B;e=IPslO5cQK zJ_<+@*L4@sDaIJ%PxkbhmPe^gUe}nzlGYG?x!QO|4a}g}v7xQhXSfUiAM|Zn*N~#Y60uaUC z{NR&LvOCXk6F3cE?>kIJT~>Lb^6%NxR(EJ^8k= zGW%`j#c3CsV0_aAbRgu?dNzAyy<=I*nS0f2_RR8t)2HM4nK8PLT{)ubR_r*?$4s`U zvP+YeE6WCPy>c0E#ms!8J|XS>`)?!Z-hA)H-L9v`Fr*!@+d>x7zcJppMB!O_G_#&= zL=uc!W8P2PPq-{r8FOemTUf5*u`VAj7!>MU$#2mCdggQ( z=9b)njZDBfWkeD6MViZA=YLHXr(t}3U?J?JhLve-I4IFwsK<%=zS;1R1bPFZuczM2 zw!5+6biiwMlTM7UA!HD*eIT1_swD0usUWGYFK>Z=^Q|_};MKGo zP|Mgrx#h~26+_WsqfX3tJBbx$`A93jpdOY*Ttm3q6p&#QLq*k>5DJn$Bzd#Ujom74 zyLLpHhQKl6iA4)@AX%$_ef;v;cTo)03|$IUo_uKDZFo>P6U~y*Ql9*H`H{eSF%It$ z)@AakJpC;28z^KfX8H2O>UgV-%dTNnh>B7zjyr{e(g(cFC{(0rUWDC)A8RgTclMj7 zJ|=Lf6_WHM(ybFqy zun=gcsu(3~WeG7shbKu3O2moB_N6AS`!=h1_V>3e!FU$>=&XBA7CY-9#SZCU%)M`5d&vTa*&#KC`L2BXmwf|joV z{!x**zVT3F+XM-@$?(Q~Mr8$$vh|hQ-0{T&B{=P@f~E_~66dU6Lr&-WMkF<1d(yDT z^*sJyZ7z?}!PQdWg7m_^R+YcNqOW;Q0m}Xil?6-iwRh@Q}(dvdd3H3!;XTfI09cE*AR+ z=eLZrl5ZY7u8wCFJpLSxRa-n_GAy-cEH+F^)B>{9#MsckE3!<1&a9FwN5TmqqoA2q z{{i_q9gA6j`z{tnQN9W$UImgEiAgP1Edu3{H%+H7up_?1ChUn!9vje?GT}4>(3`9E zw1i@GKm0Q;*(|ygkC6NO!;9wFRK?wN5Fz`ZCGVl7!GOxUUYH!^ERbvigMz|-ip@q> z+hz$W`3=EX7G?N=@GWSNuQf#K%gKa!zVQATUJq{)F&m1IOhg8FF5WN(-U-+P4+XU$4TIhT#09nRn2|?5AYt#iFS<` zhD|U>QBJoc=C(w8N*t&!Wh%4&p_ijN`i%+}Y0PANFNLtN!P)UiEQcoWhYN-c`z)XVY4a5~fqRHdNab<}SapiCDuh(Le69~mEUd+R{I3%yQ0&5qcPsH>5YIw#O_ED^DPJmb0*WvE&G6Y74-!N_=X{sSn#5|gda`4qXz^Jay5&EtDSx$Eh`5sLZv@L5MFMrFr7Z(LPhS=FKC19iEphjPFgUTFWO zA3k2?tpHCY@i+WBN#3F*7KC#r!-2+poxS@X>z^FmJ(X0sJ1P0kvZ?wPS(rFA<|I34 zcS#uD$li>_h|=yYd)w)5gFKJMV1%puOF;*!1fZ|Vi;y?n?Qbgca~@UuMia#oJ*DIf zAkIxfeKgNde{d%1hfW56#tv^%eLuYJC-#hYIK8bwFtp|T{|<~LX5tb2O?PP)60=M0H_VG0vv#qc6O=Djmv z3SQar!v{g1xhFE5z^kem_UZ*Waz5e~t$Ho#ld4?MQ^t=`BA`MLQxPnQgpvymCY>HhB~`&q6!dXalK24Cko(zAuOd&% z+t9wvw5_#)GUc`m(+0*CkMk}My&t(=N9r^aL=K6PXB8n#&JM-fk zz)4HSt0e8_ky4r|yO;@IDUs!08-T2k6>6#l)n1+Vil=A>p=9xVH!hRQ4Edk<9lUPs|!`Z?k(O&3|JvfUlm#P>Y*zfY#t>vn7e91nrP*KWLeusJ@^7z4KmI&Sc{-6&Z zG5!0kYZRk2Xo;^VyJm)NmwV0il#kc-wGgPDoB2ga&{DFyGowgf@^k2s(k0WToF!mE z?dXj!U_l(O8`mf@a2T-Vw{NBJGH@`Wd;_ZK?!!RHy+TPLr0*)?QP}yhV6ufNfD_f2 zLSbI^FZLBKHJ_oA5V&d3WrY#!snLB3?&Bm%H=h_x-3qs_HPFA60-;GmqKKyQ&P$_! zf9%xiB0+_5oHjAmx3g9PfpJjPP)Tfy7ZRu}E5K+o04J#NxNz=dUy=UD5`J4Qc2c_!;jVFGmPW_B@UNq8V%tL}p_Ro=!Oa0*XPM zR>j)9M5Fvon~RP%@7o^cFj?m1xJ|I6J^PMg<13d3(nuZUC}ayp!L4=MI(mVLosPJC zbm#f#X;A_q1;O5(nX1Z&&N34Y9(7s_Z;H{KJK4Q5jW_4ofqho_wPlyA_vqcuQB#}p zOH-I@iEz#L!4*FrSzgi+MXDHeviOYB#DP8nA95UdBW4}(IGaPo0_0fjN zv4rJW?K2^+vbs{o#%X2i2G4mPHs86ussUgsYb8MdS8!zj@6w81R=s(W2_hU#m$7Eg z<-(yr%&L&~NYST2&sPVe{o`}>G%HYo{(|8T`8VE365lEBue86_y2E>Md{!eE?cjdQ zOBWv*kl)iDaZxw?fsQsNsDeV(Tq2|i;C=_I1!?uJ6=8+yq-2lry*qBDXiVS2p_%9U zkJ2x<0!m$QPd&>+XKK<%ZsiC@aY`}ve6@EGZ?u|2S!;6$PAsFIMA`EXy6eoE=di)q zi_!$@6CSfRcHSBWpu*(=VH@VBuU5l>o^=aE8-bQI-8Ox9-#^wjs)CiI$)}os1ylaO zHD{wo0CT6Zn)}lH_zoZJgA|pa*HU030;FULxOFBfk@r16bch~yV*yiPXD%E#Pa}H> zYCfk?0I)`g9Vz!jF=}SKn~I{SJ745EFI{~i%fcyGM&-WXrzRC?Znuj zp^J#N$4PLV^%Zkfr=*P$+z|TB)VL8MDD*B_X|sa{uB%;<-!b&*bH)slxD|-)P{wnF z7e*7e6o_3>#`A<1#t{FI^!ib!x`()z^g$KzV=2tpG-nmxV_i(8$;YEj*<+7wxn8Fn zv*OU%(hXaz#SCmuxLb9K3uSxrxYX8jzZ}u+qE8Q0{yBmVC7|c`5L+hl4_Fx9!CNLs z-ru^PI)ESC(7Y#ua!4LH0&}=7ylsHIk%M$>w=tl+fwwUb+Bb20bwsyQK0T26>j*x4 z{*A?VZi!77IIM>Trf%5-M&C2ry80jBrr31+iq^pCkFa0SRJ2MIeILE@)`k?PCb^}! zC)+aa?z;opxw70KJj1sXp>jAc&PSiwVfeoF#vngq_Qv43cCkHe%p?-Wd5nFfjM~uD zFu3dZj0JX|+=)=zKmvPfZ(91;Q}Kl+e__0stQ11p(5P;=1McbKjM~bFt+lS0p3%VN zyOg_2stTA(n#$1$>k=CrWv6nf^LrM;YNN({UH-F$Ft0M-PE$MwA4VBjJaGL~1%bmp zW1!Z3gjdP&6p%O0`pcIkl?(y_3uCleY*xRd350u#rI2ZbPE2}sZ|!3Y$o{f4CXG?^ zHDMKFuDytA9MB(=4_KDYl8g73XRZN)mK;3*H*`OZ4l@utERrtbwrXS zB$72`k|r_;?tCuu_LjKX3>+#;>%!)ixYh~yEqQdH#Ya>)AD}ZDcr;%#DfFnp<}e$~ z^NXs2*T**Vr{=z?@{K6Mg|nC^F0&^B)bfU}z*+(ZJj3R$5j#aS8>NJ#6H-&3MWxt{ zs!2Wt;oYRBtYlz13N>m^Y;n~Zmxjy_ok-Tkw`(PkM7Q5d$ThN`yJFst)V$G~Dbp^< zrXh^ds{6ZJ|PPD}7em$`!WL=4R?H^1h$~%i-M0Tj>XZJP5mnivZ@m z4wxc*7zakgBhB6rf96s>?@R4Kz36Dl*FEolIjgb3lzVf~5_hU#!1A8MQ>%U}@ z{`ixBrBR6j)_sIXBKL8gA?oA``>;w{b62h5N1(#}SS|IKw1hIN#V!oiYnX7DlIljU zp07{u91C9w;d{YbEQ@>F-&xVPzAo3cW5g_zuYPSrRp{gTE-oXYomUt*ZDVivz;-_Q zQPiRs(D_edF0i&VITUxCyzgC$impx1`&A&v_&Z?|B@Km*?w$=#qSGySBn)0j@lKV) zaAq?8UetKi@*wV0`7>!{=u<*@Q4OX%itiP~ICgCT$5S)h3u8j%q3ac@Krf=oXQw@i zg$6F$)@*+RJ;J%s{w~eZO?R3o~vY zkEKM8s$sW2-iQDP;4sp)=nHGEvV$&jOap+7A{1aSCDniSMIHX~Nn@#gkHdbYNiiG+|X*iOyN_zvD86-i+oS=pz zrYR=thq%Sq$66QJ+`AaW$D6t<&R>d@S0Zmdi~{ho0N_Rb&v=Pg+nbm<7zxNZ> z#rDATGQtI)2XqKUyD!6rLW;z=Uv9~_(vR;fBsZ>tU9M*pn&Osyoz1x!OHm`T$rr_x zYtwL}Ei}_Ci11iN>rmfU&t9&yOaxnoI@go6!m-$nGXYvC(FO}tw3S%2UABtJADC}r zRpm9{@Rm+S{BneSmq9*c9!0c+A&HH!#poy_)J&~&u{;Hx&sGZZ1}yyCPZ6z=L9**tbNUS-ya=^ktj*J*S0W)H-*`J7B4(_%Q4s`O_4x&R-BilCf7^ z2O!1?KuUKiBK1QUV`#AfMCaDj+K+1t?iRfGiaxFbD zps%y8nT@5*T(SHa=};pyQ}>-FvU4wO_;3h=*Zd>JyzCh5oSbEY)g@)E#2BEk8#l$u z?`n_y)N`^aM_8lXY)U@bI7uu`CJ%MfZ+}wdH^gqh{3N)CIY;mALh^4;9#x_2uIeJf|R=`7PrIk3#>={=ZH;x}QwUB>ISd}>EZ)u0PZE1UN zQs~`2;r?{X)_2-Bb~e*yjsx0}h|~PR)j>^5y+l+szspGH0QJv`D$W*kF$;hZ69D7i zl|=sZ6abqprsrU4WcaUOR=fNT=C9N%7ND(+NI$i;FY)UGNGJjlJURttygcRw`6{$n zXj?)*DO1^={=)s+lD^$w_?F;`@`*T_C{@9LviNkWNcKJ!jm0Nl)DM(L-3pe|1TLme zUn&seVJS)75w!wFok*=B74fazAawEAFrn_sX_nc#W47}%#EP%59#y5SYn4pcJuW0t5A{GFZ~9XU>#h>0T6ZrJQ&$O>#n$rsH~8sp2J_o z@K?nCSUXKllmd_g-}1^kw@q#xfenR44ust}?uCr4L2zQ_BNIO+=xjr=D8mS%6`UM* zQIM}Ginr4}mV_>cF^Q}@GOagXqnx^ulG^v|kH%KmnTzj;O=hWhAG0yb8LonQ{+%@i zY1Ur3ssW9XHOM!oYgs?t`krng*b2_|)^>y?_i9GY&=EzY%UZFBlTey_ZW0I1uEiT( z2R9*ey8tp&6S{PO$$PNm8{Z-c*^sl*SAlGU)6Xb*8u0U$d8Kt}M-kO4O6f3b7j*}sd~uhc1KA{>MXDexTh8o|kt!43El8jTxD zn{3dy@jagq$}Rw@$@Fr0GAyXEZIbn!S%(yP_qvtpJ; zNx`{l2&WXT)hpk>{CM%MP!}-60x`ZOI|EIJTgH?Nu`|QTz0WixrOh{4)qC$?CQ)>$ z+p#o?y6mg`ZmQcr6aSpjxcBg&2aPnq(|Y zM~HpfW~3wo)r_Hk$T=?e6W?jU6g;esKW=f>A5z07Rw%bq6H>ii)_kvCV%hNkQ?_lKqTG z!RJA*Ask0!KK$+UXu^6J?Ni1k$ELgz@y;TbU7A*Ayq2oNW>=FehzX9Ao7H5^v37JG zC^P0(QLc*;aCeoJN8wH;TE42da@FXN_L1Ry7sZG7oyRfZWMV-ZeSNbI29xgw$wkto zE@D4)n`i+$Mnl4Zg={U=+lq!!xC_7ZfvQQ~h(a`e(+G~Dz;K3Htq3Gp=9&WC&lC5V ztVeT>n4CD>gEg=?%<{YF)kbU80XMDo1j*4eZp@RUr9bqCzIU^B5+%;CG!|-FTmNDk zE|HjEPn5MbzVbE^zB6(4>3C(p!CIUmwHP;|#nw=!b>bFF-Z|$r(`mCS$3l`LMC73x(EL9Hlz!G1b7%zmVu ziYGQ5XA@0CE#WLX!Ua7S)o>V0THzNPx4GtwGAlwl{M7wL)E|t&8F$6vels&3uFgd& zBsa)W5LOqlDLtQQfv~^GKm<}VE@LAwT@z0LfezELq2N*vgx*bew(f=RrEXeoU)5E9 z5-|2$!LN^!1nR|ci=*@Pvc?e~n<=RnjNSjxBs%!D_C>K>W1fT4F9$>V_TAL%=G)z5 zR#~Rwpq^9fUeI$19x16`a2R~15u=ddRL2m}8+!U{&V zHujGHF~UxT?6pj2c5BEg!<3Rw106_`eS>FCcpWoy*#r^m)+&HQ23;)Ugs zvCMwDlzV_d_?HO!cfkJE9{ehff2^HiC4U-8;rk?aNCv$GSV9EfrD@c{0W=|R3Bey> zZ3!r1Ak^`yfNq`QaOctOAK43Pc{mKSk`-v2>LBRs1lTrU zJimXNgE`7YUE^5VGSx203XVmkly`$Pf;e*m*QJGDBVpZ$KiUpeg-IKrlpeklf&XF| z`f<}e#ye{9^2ieZ2NLtEA^HOkhsq8CU#P(ByH619aWGTIsS^Dt;A6c^BNOvGIbi3G zE$2foWhq20x+`9)Qr&9IExgZ+vVYd(g)$q^N&svM0NDP;hW-xQUqhFzliyYOSE@Ds zQ_$cbwmKBfw~&)Rfl+ zm*c`SVO`WsAnSBwBlt5UcutmK3jj!1{$2I{ArJ8@5`U}##x44%>isls8q7F4KoiKp z(g?oTv!krLvW6L8OzCa1y!=x9gl@Z)i^`v^#opv54wr&7h-pqMZe_B{Zn%Q!+U8`L@w<$GSp_sCBB{ac-Z#!p z2A^y}t`Qa7?BC;7tv#gmP;noa%W$+lrYiV#f5*g~X%fEGy=wxrjyyreP;ragrC+qB zLcDwUR4WV0u$a1v2RiLN{;?q9Wz8^^myQR@CF?r#_2rinm}vE;l`{Zx!2sm` zMF)RJ?r(MQ543)zfE}4N2oqe;J;?-Kd!RJEoSm$$J*`I^fPdtRUn1Llmk_VrG+E~}X z94_eW8-mB2ex%n4raJ4J@uUEU=HM#HgM9dGDd7n;RiCWCt@(n&GfMvP3xH6K*{4WzO*7!uywCnVa7ZogSc` z&48W`|0}9L8#(;N9sG*sAM2om|K8`S_YPw4udC<-!`cJwwH7dLw5RZ>ZNz6oZKEh377c#gD$zo4HMGDJ$h1t<#~ZSxQkmGnAc;Sm=jiiD(5r=1BE1e9YEIY0bhpVpF^PEW&P(@`K$4~K(+k+=EN^lD@q)}pC6F2Bwfo(Zv766 zgmLCH04z1FR9z3LuqQguhU{U}6?eZfU`Q zY`v7PUuBOX+Q&c(XLMX2W;rJhmP3JHN4Y4irxx%56J$>#bZt2WE%zL&c2ECJ8*@90 z9H_xIB2L%7$LP$MPd``m9!?nzW6hdx6ev)i1YsvBU?rRvNAtKPu=?EuY;>y#BfRB= z?NaPp$!q7Iu^FZ>#jE zfdp&NAuq=TD*P66;<m)PEYXyj;6^g>i^VW&9l=CHHH{(Yg=C1<@q z4R4j{MnU}bX4a%&uJD1FB9KL8M;K=uMmxEEv{N$K>DjtPjowtxINA$6)=`-dDT4eo2p? zG+)7aviWWfzqsk@e6&xlzhRtgyRL)e`^F4G*P5B^fa3?OAn6Iw()@?9Tb!Sosmq!5=Ar{kh&DtWt(3sd+#>DLPGoP%D znL}M7Uc=@nzc~p9+v3Zj`JmNwOVhqGpO&J1Sw=#ZGVv2;`iKlW+fSZK&aFFn^pt8Y zI}wmB0=P0L$XgyBY^U4{9({Wmd%KY-f{$SV@`HSj=-3oVodS2ylmK>lV;9-fX8vOh z9uw?ZwCvZ@IiQ@A1FlM5?Ca=^Dv41$x;?JSe7zy%UZ=IA0&kx`OGqdPl;9vhLVf`3 zJj35u6hPM3(#$~5(agqL!N|eJ$=(29Q*7;RYyq&{LTvXD@jsuq3E;^1DO%qa%B|VoqmRaeK2XPo$DT1u&Gcu?nF3QITM{aCvv;>zYyrem-ByzSFo!SA+`9P}>s5(B-(qN4@;eiLHv;N;}@ItpI#4`&J&;Vxq)mw=@C~ofW;>VlVyg z1^seBNPCUs^zvqs>LMgG%t_p1a}W8A`MYyrU+k~$E^bQTbfI|5Z$HbVMkT%}7oY-B z*H#e2Gp{t#Ft9^x;?(1ukOU1U-8Fn;sMn!}!FUXjcCSzySf(iO7*}ZRKn0@)>lkMZ zpb6?LU%N@I?AQK`QLQ~I#tg62gH+j~?A3z3%8S_|mLC8C2?0)FB*xc-_^FmBIO!|` zrz)O@#VUhV)2@MVwIWZlkMQ17YLJ$Oti&36f$RCbhgSnV$79+B9+-Oa=J{JYEk;@7 zYl<*)6FaY^z1Y_T#gp}(>llSu?;K?O%XSLyz$ROQ#DP1O%h5}grx(RZLXOE@+&o$2`sFa- z@7Vt={SlP?OOV9B_`7-im7Z!^Ijnv_dCg9Hh72Uou$So@v_7k>__$a@=W%3)_f!sO zPjMwjYDkm^g$`y^7WMW-2NVy&AM0M@b$h$#%1vC;rgkzG0IrfIa#?ivu7E4EMl*gF z$p<%xDNDxeU37S+A^Q}fc9;80xRgnv-3?RvN1}}Q3m93dA&PsZY&*d^&;;T)I(WWV zs!2E2EOi6i&1+jEJ5Pya)}6{}qIPjR8tEQ!Y<%W-bl$`*4i}LI@9aiD8SqWBOVn`K zGc0pd8}cqU`IXgyZ{4b!J@pj*-1JIR|P|lCRVIJ&ouV5n7b}WPWM^d(;&!bO?b~E}wRnpy?pt zqd_z(>t3W`lPNLDwh*fX(@{aWSWpGBLcJk^osoj}tE<$ketJjDmoiM0agz8-5)FCh zh{_vnV+`tUYtdS#ujH<{=v3#Vs#xR$3nL4His2SyWxcTSbYCTi_euBB`S^Xfn?I%# zgX{|hJ_PRRy+^D6-`r1 z)fk31fNpt>pR*zuAti79AZp2*qG!I~$8(t804HfNI65%7oK6es)&0#pQ1gA5t12pB z-n})qKxe}gvAaD1?MsnAZ6P=!ktj>HF)tES*nzI~($Wim4*rfJL^zjlMuH}wvBOYg zRVp4OK3_+gCv}Eo=vYBZ=*2KwlaBDj0eXJDYT%-NM2$QItg1; zToBA5F&ib5oG)Mul}d%PBW_Cc9nN=)Zxtjuc;Q+;rB6qR8Qyp(? zOCy^JVr&fe8oRfhe;t?Ol_ctsl~wp{XM>cBtC zK-Jg0_!^@RPt`rSx>nrXSxev~zFu|xl5X2QKx&DxfO*6JzNyNPntLCWj*0pVRVS51pfZi-}0+>cOtdI;b_1i3zWO)E@golD$gv*`}m$UC7gPPnKBnp~pf_q^z>g{(A3wRWq+>v<_I+I`t_a#ryUaSRkPcHqaGlhS6 zcp`4FAjC;DVovSldQk@I#RGd9Gkw{eZ18@Kq&-UFS-)z<&CP$e+v@&lWdmDerkfa% zPYm|KJH#K@w1`3Wxu12HbT*U98$b5dkX>7(iuaSd>wG^%jDd>RBr}SqORn0?oXBV0 zX_+D8bAjTeWrJdzPK`Q&HkaB;9b=HnlK_tqsv(I(*Z$ki^^)lst~xY{?w2 z4nLyJ#TeO=QprAL9voGNFCEKQ&7I<9=QtE)wb0Yzn_g)hGF!A|EF7QsIK7s>Ex{Dd z!yV~Wt#4Wfzc?G+&Ets=dIYWsPzOnVpzI++N@=Lh`r?%ZIiYnY5Rcz33c%;&Yj51)pAh6rO;vm9*f$ zu}fACZJRne6vMn{cSgT9uk_~YMQY{S;TnByAP(STT9E1$U&2W{$lzH%|}<vCHJvL z&)ED#;9{rIGXHe&Xmpi2_Oq&*cBJJLFC?sWuXfzK0;=t{^@}u@K6H<~+n~}R>tNYN zJPoa@hVpsv595(nTJ;s-jZTu~jm4hnuI^uUO8eWjtZs1|=I1LLA7?FSjL$~7nxFVW zxUk^yY@6^Lc}Q$us3<8)m@j>*Nw?->@`Amp$7ODwT5w(*OJWPzuuj=Fo~^2iIvlq4 zI|D_c27$BS(;MWJ3S!Jaiqi$Ox0D>O_O4T>sg8P=8{j&~^qXMdxZx)kA+J+Fw=bT4 z$&(5nqE3PSMD~$==M-?Qa6F+#ajn(jdQ5K;R|2%8B+G z-S2bpXjHL)6Q$L-PNO6p^scyH64F5RNhz)WtEG76GIaU9`P<8i%rgp`8LA3qE(mp) z*W_iG*E9E!Gq%t@PP^#VJ3w>qqG16Y20V-qqUg-A#7E?OM-vAFhdx9DDU=KJ4gL^s z#7tT5P*adT*CMqPa__AhXump=9CD+ikXV@*y^;+|0Wk8^L(ct_8|a?l?``xB7Aacv z$hhOgn2%>n;WOAXeT?`bs?EWB_5p_>5j*`Rs(t181Veu3g4(Q!PVjS6CaeN_@Dn&E zCxYP!$TvtoJT-_-BQMavnTRKK?{BVX>=QJ42^58mO&*+U7zt$f(wJs3c1Aziw|`*U zxruiIw*?iWV*h9@k-B$A^f6qYh+-QR?01o$nVFO=9%XKZ_RS*%d@$b1sM5sG)qpjFq* zEJ$ix-?SF8)eEr`v|@gIBu~MhLVkm(kD7G;dXEO-=!mE1f0sJpOjEaV3zSbxiIFCixCNh5s5$q$yfP<8Mt z1^?nc1`5k7olEg^Bd9GFTWg;~jjpU@YjsXC>`4ZX71$6g%Px8+CC@v4O?0Pv=*nci z@`Zgxep8OQH;e|ZE$|E%(RxrqKNQ_p`PA~~kM?-oB-@46`v*ayLSHgs$3fB!`PHBq zpAVdmAVWFWB{HcBDGnja=-D9)RX>rU+;SOLEXQLy(9=IwCB+1@AsfsdUCh9#t>VoN z%jQ;bB(vL%);L3tA$lWm7=B=tzX~1D=n9g>^MpcKZ7ZD#T8D@o- zr*Ofia4q}z$0rI4Di1&J5$J!6d|+b~u)hv}@56749nQ;ER8Eq;DZ(6QMFliH$AQ9on_ms)0ZJdxYWEWZF z3bb66sH{>A@;%ri?E>=+_on?lRe7T4>TR`Dri7kQA{(R4eNEO=1e=Z+@xF;PaQkQC zU=|+U9M!BfMw_e&Q3P%xb(wYby~m^CDKhB~!F;{Fq4{76DH6eNDPnsxgsIez%)GFwI?%>ThAYJ8@g&fUzlnbcqxD4P#$6PD4oi#SM`k*;35V+Myl z$>LhjRFOB4I6yh#I-qVg;?j_{SR)yhfaOifnEEE9(@qz+pg5I?Yq55|*L?H+8e6LA zYq6fV;)g`%GOB{!k`^%Gs^&CbbS`zDcE%yeF{}+TwY$%_4Oel)Np$Q(18gPVkhP`- zh=i!Vaj*YS5;I{OR7xCc`3UqBu+G`dfakmhBw)`FD3`3oEz3OI+Rlr&$D^>M;pNI% z&87$oq)|)hn*6M1qo-71jUQ?@7axUvEy^NI8BXrKk6_#5n-p%rQd6ADT9>@M+=rj; zGHmo2J~H%^_hjghL>NPEb#jFe0kR7xmmnJ@W4W|C(;j-l7P*?K7{RW1UDxOLEsREpvSi(uq}-f^*7Dv+iDz>K$Dp(?Ej`Y4 zYg<+%jXsNFk1srQXaj>sYbD3-4b3o(RZ`yw2%Zj}j?))Eg}FIFXJ}R*YOEGdEScZ0 zu}4~q%?+xwd;k&I4!m{Y;fp-AwIW^pRAsX_Nj1+?1ari=e@O~6_(Mh{Jyx7n7A0}5 z7cH;(Y@?K09<5jKfH+v9)SX1GOKF#NK#2KO9qO!q6s~CJF0>OwKpz*weZMBw^2~WNVO}`~l+9 zB@j;GC}x?_dxP(YK&e(?dK?Ix7MqqPU|Sv(wIGx@UX5Io;-Ifi7QQ_6vN6(=`)Q`T zSLCFpg| zH{bp_b%pZ}0g17mfu5n!pHfV}#vOmG|D2swsRfoc2ApZQ1AhJ~+W9Z$Lce9nM1OnI zU(!r}aQ~I^M7F^P0E%BcBsaFnFF?Ng=jM*U9qd9bhY>I%5Q?1O@A*G^7$&nZ_cw6ok4f8w zVqCYu*{Q-z3S{L($%GnFRLG$(*YRcpNKxXo)4kso8$aH52XBcxo7Vpy)~-CB%I1q( zqHLus$r7?FTOoVMF8iL8?b`Q!jVy^u2uTWMEhH^U5^0eov>+l8EflFNCH>~!+kNYq zdoOz5pU>xhPR}1b-|w6`bLPyMGxMCw=@qu{pzWJargj&8%&T|hT`0Xv=P+X`n{4s( zGpjr=DT+R))?3H)!!mI9f%hG_f*PovB+(8yw`AybySjcmS1sqXSJ1R3GZ{RubXwgu&H-Z0%4$78i4yWHAvYh+da08%aFri_=41GSL6kf2`?uDj5f!NncL#bHE$_VvmWEo<2;+pFjj<7VY;UC1bYj6YgYz%WhA z^S!6C{RnyB#uAbDO_%C-$S~qOh+0Z84 zWYn=Kc}PnbR0*$pnJUZoe6tXPpr_1puA_T%%%7^5Z}DB-=lrhGbc*yx(9vnhXX6RQ z1}!IQd6nL?4JO;l<~x;E9Sd{Fw27!otD~|C)8g$iPje8{>)7YfzME6)sQhqKSLh6% z7DrQH=32+Q?gBe+_I_Xabj9O4jg>4Bch}Z;k_igF&^;EaZqHY`Zht0)Kp-hI$N8NR ziU}`=+R{Vh`37uMdgLyDo*ee_&l+&=Xz!uuxc%x*v}&1lcccPa|46;~x`l%duO08m zhQ2)Z-6FYN<{KH(B(De*i|2vfI0r87LtL-4RBsR*t8h=?p4&`X&;@w47VmeAOJoTD zRKAy=Zq8+-{F+Akk+c+VkfZlE`k|M;z5FtTYkbLsjB-wYa&xK`HL7#asO0zDHlo#G zy{SNm`rJJ-z9Px@Gv5@=((iAreMPN)Pk6n9yYKfB_G9|dGjB8fx7_S->Xzewlipb! z_l-A zC8FIE`5&4~7;BRf`5codCqIQAl*lYIw~!IrJ8brNGm}%`nOBEyR-MZgr3?=zsWsJ~ zC3|sYH2Ksds}F-iu@m&-AaxbTfsj&H_WJ-$YIsZ@35tivnqRGUwNSV8Ob-fVn~}X z{>oc>0=TJ_z%KsECI~tzoDIMd-%$y!GP*+}`Uvf)i7fG0$pH2Guf{d&2Ys)4;5$^pM1 z6Zd9V-byn-*BalOh~J+e`|*yk;jw#%zf`T?d_63;>yo^bp6XVcpIi0^KMAsKK3}qm zhL2ukxu}l(=SD7!F)JJi<<1f-2Oy>{A zpRM!mQ}v}PRGr|y*?c%#hcs;M<24(*darH$Kq;b5=lV&!`#>Z+spSKCMzSu_@%EAO zIH?cWisHMbV%F_FR%Y~d@*At@t8vXOxBFInoL}!p9_qU*S%O)&=XO;0SpQ3w_B$FE z4~lP~_S!2Vl8{GIh05J!nkDt@9Xm^VV7=u`eQr^E#Z>NoCmjy|`J?)%aEgSN4_};f zGdMFuLfg1ASg?+^=Xr(J)}RKj$xB(aa%o-f+LJX-PDVgAP?M6YB+#=_B&d<&h6@cV0R{I0?pg1M>}qhBV}(D6j%w?vxQFQICl7q` za6ftP#Qo8ALlaz@1vX~=mKC)z8wIbqY1T8xKFx8bT3;Pt%x%BcFwGzzlbHUYCpFK3XSX8l?!+?%+}5BT`;+aJ zuReFzQn+6dXc3&FVbgx*DHW1AL}l~yh*M&Ahn81<##{DU%BteiXSg(Y=?ZFN-D&GS z)7D#V>}1HQdh|`qa*6_xzS)BcOU>Jm8M!GgT%}_J$<=izt$;!cmvTA56e=_z!W%wI(a&$wGyw(U%IoTTM zUOD`cj!`?fNiq;W?52N$RXi+5%v+NB#KBiQr`A-<$H$!Vl8?J{cLjBRVL`w}nWVF& z^CcqAE-mxnU#qtCRXwoFQg_vI)U1(Hdb4LvheCh9tv8ho)XG*f|@>|sq zmFAlx_BU)@Q%{g>oMh76a%^>hW7g%DvrP|ef+g<_t?S>$dOWT$YewTju0qY5If;&2 zbiofSzi{T)+`bf0c5|JKNSMP_+tqG21mE*GQ}MD}Fh!JW&yC5CN|DOO9#3~XOSX@D z-b$1tDb0qDgkA07R_ctptWdTlw~7L?+0=3xpMdJNBSGRd=PSgVuMAwIWO=6U+Tpp) zUvZWFNyFQpNY3cqKkv)^U8VKp8_TRNb@j1+u8-;6%?$pZHVvydmNlZbeMoDSXGd+@ zP-vd8tH&~3`>m9-K*=F-AysLU-hmA5P0`mYh2QfVtaK?W-k7JJxB78Iy4q8ev@*?E z$t%6-Jl?J=-qKm<>PnQ52yGv1DiLgKzT+Tdy>3ExD%YW&BB{+}g3r zN04rzYMO83`1un@TO~s!IhvGPD^=P|MN7tZG0z^R)jo0-hqELWOs&k>NCK>4cFw5~Ayp7G$st!~uA?lL|k{#HZx)Z>-2zrd*es;>(~`Zv`8`%_$2GP?7hm3KlOB9cE7NZuU8u|PGmm29SJySK@5g=NU;lXG zL-@trw{jgCA5D{<((~rky00iuQn1ZU;c`^2ty-=A#UUp(?TKgHbmjbyU)-CFSjCzr zW#XCKzWnkQ$P}cKn`LbWK1> zm8mOJ>1mGZ>xylyoypIiuM6kySs{Nwi}uCb=b1*1>^CoK)!rH!3(;;>;IyiEzgs)# zjt&nBRIZ-wO4^bW+G6FPelO@n&fXi3iq0k0+judBk5UFV(G(o}v2!py_KSZ*VWL-Z zMickN>k>XqR7U&Pb>G@BtH(g1cXou?PLxErpUr(C)ZXZ@OHO+x+c96epVOng0--EHN^8gv?!!7;Z3 zwT&Ier&HDoZb~bf&SR>H(L6b>KYZ=-O^M4Yv9lkgHMj*t@{9XV&&}2SaDTe8Y}G*1 z_6(+GmwirhGV3FzRri=&);ca(+Lu;N*(OMKo)qH*%Y0IhTq<97+l(~m4kHv*- zr^-s`da%}PX5#Q1UmoquxzFrp=;XeQeV)7m?z*1k4pMwBk>4)+G-<%VMc`%WyAl1% z^UMcMwfU9J?>dfIDiK~EuoF?GKPWu|rIm;U0&MEIXXFCm6tAo-x^UA2Y=#m`4dUKz z=8y6-!6Gfcr_3Irm*uxKn|HLX<#nX0$Way{yPG_y6j;>2m&nuSdYJyFes+&Gb$ZXC zQ;IF&+dkK(H|>+)voy*#&QI*Lzkj{e-%4C>H;onh10(jt+VtjnvJ*|FqCMmzk2?a| zN+ms8#qV_VR#LIb9T(R8e9wAA>LvfDV%?StuWQoSxAjh!ow`$WqPY4p#V1mGi|Zm` zv0SZe;g1VMlWx4=xRE~2D5ckw*L22Plf0dZ!Fc0=8K%-|e$nJ+w@j+lXT=Lfo2aA% z6|cp{hv}H|vesN1R7@txH0CulchahvaY+|67BsROs90mm(h+trGg4ekr$REKn>ugU z=&HZAfK`x0ZbiKGx0OYWSQ*hlef)neEE~z3HpF&L4S{((T;k@6mtwQ;X3Qv+d!R z&z_My*W-FjH~Qs7*f)XeY&yEoyt~Xu48T!VIrP-C15iI(>aFT-k3EFET36gd%qB5M1P^PzAm(&Y0Y=m z5$+S_dRJY0HTom@&m2#@d}IUZnS%3EFW0x;V~_Rib-8KnD!J8XcDByHVUWXfp@@y^ zSVyAX=KO;ReKoK8L?+y*jIY(oD}j&Fxm3%GGKS`b@7^3@{FTCNGV`#A*@KWP79tng zWgR*M<>fa-YL5J1>K{3{Fi3}r);vRL>^+cc^HRyB{q67y-{<|GLR%CswwJ`w7+yg|?GbTXL! zou+{u&3cDBdTCh+438VmO;ngaT)`H4hc2KgruHGli_SAb-3q=xzEY;MJ**E`vab8M zp|tT8VEy`|N{yKlZ$x+n*%#ch>E64dp2X7!zHII-OvpT+KzYE#c7lcD)RUr4AAYOz z(VLXNp1o|FI#FeK#vzU&ZP!mbCmH(MLqe3*Ia`B5XGTjibj(FRK7L(6^*yzHg{$tP zFY#Xunbvuo3hJjmT2ARy$F-}*+>YYZ#<(lN1xef-uEGu;x2>68ka9jNDWUQ3?6 zpq-bj7G_oCU1#hT?d$g=o7d*SQ%0xpPeltoUpvogGVtzrcQQ}y^%IdmB|51o9wv9o zsHYR{s`t5WZt!kSY~mHRdb7bI^`-vgc#3dIwf-uDkmu>yZh@@Qx^7Wtx2zW|6Xm`x zci)%pRFLuNPD-Zcj|qout!#TP4SA9cvq*LGoQOZoEtGM?!eF-^ztGwE`*R~hf*%WO z-VP1x7l{tp-5ECTF!mX)-%uXS&3y94=V!DM+ucHM+z;-Ynp|a@n!ZD$?(IE?li!3g z&wCf{(R1WE(^$mf@ammak)S>6b(X=OuOlU%vmbO5^Bmuq$i3lnbEJ;UEC0FA?(e3B zM^Op$el@o@tN$#1RAN|hBG~3;1h3Fosn43nT??{NHR|gNZ){VKUUfZ;bEbVZdhFBq z-k*hWA3tg*pYD-)(J|EuFAV$vtYQjS>^t=Byro--t%d% zY$T^mwOXHQj;5#S-tt}W5qMVKqA%PlW%y%%dPrE9xlrpP0dD5O6(^(y*}iOcN8z@PZ7?T*Nki2zVfZ$wS!l;GW|jsesF8=;L2Sas_7< z#=Iu`m>zT8R6&_FSL&IgDt~WGNbsdVqkvZnr$VEuKH9SxCS7EOG2V*MqJ0Zw}bKw3=TNTLD0*SaQI@pJS;!3TYEp#_{Nd=Q#>c3 znYna3uj!^1r@}U>j7{;X+HZC5#U5+tm5@0T`{8)Y-y_E_85j%posa2R7`^#& z^c44n+S&Bnoj!D9qqQD(lsiPL$ZYnWm9q{;nFUpgaqbA4FR9&=UqsIN`GSJ`4vXh1 z15E2DELv(~FM3g5f3IVDJD_1S)NJH1^_c*c$#q?)*HAu_+CsK!^(VRZv1+bL0j1kH^!f77^<`J>o%s&BaJs_TVW`hdJCQXF)3 z_hH+a)Agh0w+u=M?{bQ)@FTszlhe*4XZi6+6aBTItrjd0cO>z`b&Va`^RGzT0uOoUKZt z>+kKLHsw6ix_6xx$L`&%dE3W6dJYUq_0);%wYYep`GCd1>W-Z3hIvs%hP>bp9q;AT z)I(P(_qLO|2xL#5wH`W3LFd2ju8QwC$x4@yqx>t#HB?jrEL)47dbh7TCi$&dOJ~AD z#G|Iuv8Spdn?jZ8Q#FN!*g^T03(UgGqlKAK{6e#S+ez%t>7O(q@32YtELzLB!#G>I zYqP1SN~dz`maDrq#k}&2rCzsM=ze$J81wAqBrdm6@#v;)p&d-*js-@2g9hWWH#ez# zAKh|kqw_vxm0GvVA+3wP##N+@$6Z%B25r|h(ZA*HMRAj)a?6U$t>%+7cT!WyFZ=g= z;yiAuV9L&)pEPQz86(oD53KnjWMiy)+voTQaL0V z8dQ=ou1pu(M#KAFNGiqZ@Rhe$E*VyBbzG-jp+NqSq4Aw@q0_XLrv8?1aiQ^~&Q;O* zRcBR2o~{bD-8Hl6XFuuJ%QPN3iF9f^vm(-*m!>k-GBU;2ZXYc0cK&;-9;ZT@D?nunT#^b+@=byw2;nIrkMSGKDnpIph{TXI*(i4BP-!6B$#yCQ>AwTGN*S`Hfo#NXP$Ms58n z@1=oF)b;e5Q17E=eCxQ_`e!eE$;>h9xMc5f`Dp5iR-T!LYu@AHmD^uN%;&Y9J!n#4 zvt?Cv)Knf-pqFTtbHZ4|i0MufO=gcTGIyBwzkHB)lh4U1({f>JIF(T5#qVi#E`8P- z^=YG4)<-I=b_#IzKT(U`f7U0gIb!xeLmnsFjpoVB0}&&Ek?r~g?cWoEdGsk*_K|B? zke_+$Hnn2HXCLhv3RL4Vke= zWskOpJ-)euwQ2Icgsyj5H~06ch_{3H(*;*3DfNv#P~7iy`$CS`?K#y9+0+MAM?wPn z16~emkvc&)F>9=YHD+*qjgVK5om-(`@;@ zrg*HGmF0q0a(--=r8T`1Pg#A*nrxN0{X>rN>E}Y4>IRjHCIlt@HNQQT{PcCZ%qRAD zKV%d9hKp`Ebs0$}7|7U6VUQqoZ22ID0uI z%=H>JxryuCP4&ywk=+oJvQ~PFgAWg7F@tO`m0tn9!JwP4e0#tV&A^rImo9TPx3h}~ zZJQSv;jgEb5PP_XH`euV)GVoj(XkElwT~`Ha|a$D-gWKC)83PsuU93dI#HdiWqM@e zbHgi4V>oPocqzk^xlAv+KvXB~+GEt0xh@rV-K`%vAb-bH>8a!G6YEv(jSATF4056@ zkLEr2P!!YoB$=3(2jj`jGV5#P&csoTHYKP~k0 zMV@Zx%h_vhd`>#=+jovb!Rmv&L15KfuJ7@V$tj<@WbK}Fqg%Ty`JI}oJ{`HI_#>hu z!mGa`xcS+3KT|p3ZNe&NO_(ic_sQnC6zF_m-1Jqh_gM!x(Yi4R?eC@5Ge9+q7tEcdn6rMG`DLU|RntRgK=*c0M*^zx$w3Oy9hQ?a zlm^}w9i(q2m?Wi7B}Z~9kVnmvwpx6vZ8+WWcJ}lSuW%dV3p&ZP4$Pr64VO(*)rHw7 z0Yb-8M`Wo&k57GdHGd`W?c&z$lLn{mPy5ChhPO+LbCg!s7`~2Acdd%7wdC39;T>Ef zGnFgK_H?B0C%d+@Tsl+g>|f+H-{Jfedd-%_(+aCHWuV^DZ6AduDu9 zy56AVDI3;!>picPx2~PFa+XGZKhLs;>ODY;Jn}wuQa9^WgF?;%5r^dP? z;dEfEz1R1$kCzyluO}uyoceKSDk58uEqIer+SjjK8?E;4IzF;L?3mzzgEvu>iI58{RM46MV;<+tQL#Pdwok z)>wGYy>nYqf!*i{l}%zpE{8lsOM0k6QyvYlglCmH(SQB8>gkyd&O6=--$*Fr$!W9a ztX2elW)}ee`N_sAo^8oN+aGf|?TLH&u3czIgLJ^v(6)gjm-+E?1%swX-YuIp?|l-q z;i6-#<#a=MR?MC7D%NduMfC&AetC%8*Oetap-RF$gR@0`2iI(0sSZ}R8T z{ckiJBxs z!;5J!4MiGe{?H3G6(YHMbK4$Q_^h?*8(*zDHNWObI4O}dOI)AD(*;=cUDSu|!1eoblN7HUHdG4@iC zli(&?!?n%)Ul@wx_yo6C`EGTPjE-I_WOtX(EM3zfJx9c--lCd3WoN-A;U9Ji)ZA)P zMrtK7gDi?9+nFPeIvea+8`O4O>&9-zXbtMOigVX@Zq-b^Ni9o4qXm)uyc3rK&Hy-|2a%V6W&mfUxz zoKPB#4_JI8CU*W1A=~@&!G3{V)2q~r&Y<%3r<&`wxG*Iuq~4sJyLQF@X%?wygYS8( zZDRf7tFNU8_xFDG6*Sss*H^3{vGSxt|9I56-oOeZGQd4{yNMa1mWfJ zx<75k|JRNKVo}WHjx`Ec5?^v7u95!do%W!>blETdz1p6!l>Ldmbhr)}IpQKtAXMpDb(4`Ncu|h!o|?dO*W-F*l#h^ zr??*>3wGGdJTkV@Q|gVaqKrFZVB-e|D<7G*mI`M*t^0R=9FkhtcQBzl<=w*Rt=bX0 zs=m^_p+oLj+>IoAa}DU}H27c!BKw2Xm8OTcy`9HSaD9yy3e-*e{gv9{({G{oEuv?1 zA`{r`9@20z@20ZsMYm>!fbl5T z7Swd3y%|jgQ`~!}Te~l+^}7rYG9AmJIz8gJLg!Ore8H*Ei;*XuA1`?*S9Yr9MUhB> zV1Bxb$O~PYycchiHm=&dHCTzf<9X`&Ew6VD$Y1fTexQ3^TXx4L9ol_kOv(;-*K!;% zeDqUq?2OU1(~Qc!<<<|T-#l6sNHW&jEYNHBBfRN~a7jP|+1u7Yp#as*-V;jKxeF`A z#vI=jN~c=x>+y13>38hO(8Y@Hk4aek%8ds1#&2?2)pcuJ|66M*9_f3e8S86Xncy|D^t*Ph1_Yv~5zF zyC<&C9p+elF8IZJdn<2+k{qk;5-Ab-oLQSgRlP5x4D*dcugkYczZ)4Uvo{p9>dv{T zUOSM=xALLQ^|+R_cOoOa4u)G~)!$UC4GQ=nZ(wR6x9uzY0PD5n{q}~R%L^g`KAQO* zWDp9NSj{7$s9km+<;VN@Dno{-WYb-RpFg0&t3A}4{3F4bdH{ZiB15E|nEY}F=(`pE zg{9aeqp#Sb-#L@vmmsSm+F@fc9v-7@Z$>^R#IP{*(UeTs*8ThQit#nI(T|!u*Tz4) z;HQ;VPX4Bo)+xnQckId=25X@p4TfYthxHO(AMbxpGY;(xvcI>Qy`#v$O0h=pOoXFZ z_Dk#AvUdu3Ru=9EwMo)yiln%$)bYdapa602#7xlRp$k#|yle&MC16SXy@(qy{!t|Q zy}zpMm;3tPzHd|LzWrCgcxDBAkc7wcAFs#t7LkH&@ieR(hh^KZeMnFq+ z?vY^C^oW+=4;b)}WZP5JE5kC(crrCd@%Yo^u+Le>53b7XYp>*tx#gqXmA`9q&t2aJ zx%;+3?d8@h--PxJ*vv?CG&Re zHluHjUDe*$^s1co?T@*OnXQ?vl~acdFS+OQFs_%&XPau-Zo~P)O!C=gJ_ClW&-)xI zEaejCHKI3b-lx&-*q6R%1ehMikA(2E!lzuIqGYYNv@X4Y1=pT>WXb#UtYJZ*3mp-LLh2I z+AYVaiB%fAX}mQnWePdEELp4HC-eES#Eez@9go!=@77mR>QtRpz9RbblMuzWji;ZT zZLb+#czabkuDV2vS~JS`eXIxVx1VP378H6#Rx1UEy8CmnZ(pC|Dd3-{doznqgIiAL z=Gv1(q%NNBZ#Lh~KI)D1`gS@e^U+m%RKQXY-+m`#gh(qPnD>V*1os@DjJflh1bw<8 z6LY!&Q#33+y-s>?=QVDXL$}HK>GJb(J9jBZ-pR}pSZ}Rg@K_}O(l}$_QMo*gof(YA zm2^r@Zzq$4cbm&sDVZp`P@lYYq3%$A&jqd7m8I1!N2_yHuS+_2)r*=$#8XWVH`nZ` zmCfTmzKu#_%}3+zC^}6yic~jo6}ffk;sOL;5dgqWr1rOERh<{?v9EZ z1sbM?i#GnzFnI0nSruEthJP6i41#-(Ou4BK>V?5&>T?M~`488Wx#Z=M=WBgAJ}XQs z6ZBeB`sU^ZjyDZnt7y_rb>33)m*nW?d=Wh@Ua|Jr9ZrP{=DRxkY|f0FymC75z`%_+ zsvbsnsN7}!3MEEt%C0;$b)P=7@oKr{4$JrxtAax!`DsZtLWS3lD}MLS>|hnyrS*wg zw^)Jaea;tlWt5LS>lF9-rx8QU0h;`7x7e(^vsv~_IXx)s;7VWL+xDUMSQEFJvtVta znE4og^Bc-%)<&*R)^x;d?>RQS;pWIuKmQToP`<=hYh-DE>J}bbe^SzO&nUUx!|ejM zpgQ*mHrA#npwb%fLliLmsZyM=q9>rgRjS_6Ul+Wl`mN06TK_hghRZbZ)~VeY4ReC} zG$KPE8RO1-IFH_X_;x~Ot%6`?Vn$9ylEdKJ%%@fkbO|{+@ob`RWp13IJ~w$V)-d?W z$`2;1-nG;)2-`RbkA0p0{5q6=dXT~_|7WfwPo8t3jPRA`73--P$C4!tZ%cCZ`=v%+~S2l5kkU3nlagk83a#`PC8zW2NDIrZ7 zNtXC%rTWBPo$PBHpEd-jfBy8jN%LfEp|!x4mj@_hV%4&?sd!zr$fRNxx$RTk@3Gy2+V%CWe)?O- z@@XVG>5nVkleP3e)Ul^z|BUy3^Zgu}J;#q;e#`zWfjW9qOLj!Ni{g4_-I(#+pH-jC z2VY}46TN=p*y!lw8wL(T9f|U``1Qi7ZneJbOwk7woP^8-^sRP(bKdz*Np)bHjrzg+ zJGx1?cy6b88;KkE23;#wMYZX#b)o+fc7d#daW%uiPr-8MJzORR&y6r#XpVa*QC`|H z{bO@hsP8xB^aOS~vQ_H?Ja#mb*-a}JX1u$=nk)UCtGCf9^0B}`$YJ48_fMQJS2~}x zAKH_6Gc4fq@H>IpDH*EqO(+?)13!*l_SjyU*RRbxxL*$adv z`qhji*r)*gYO-hA>Z;&<%HW5-%ba$E4Ho+3po zJ}0dpA$bhS+F1}d&;GzcVR1xU0z5rL13Vm;i$tumS0IpXfRz}yH3QMli|L8jTai8R z^VeGg9FX^_{hK$hMex-IX(TjX^qYf!spdbEM|N@!AqaGe>ObS4Bk2ErHK z{Tt13A>d3vjE<){OtXH$L6OH|h<{o!N`=|Q8`vw)uQmPe23}nT;!ZmU7Zj1>OSTX3IHrOFa`ASoZo-D*Di;FBM~DQT*Zj#0a(KLGfbxjd4UQ3+<=YO ze&c(sTLNFh!bHUqoEZW|vUt_8%Ac|Du!P~&&Tp9c32JUS_Q1_21%wv0K@AH_y*16Kjaxp}7?f37$2yS|tm*(b!bA$g%FR_%` z-tT~3$bs!6^>X8{uy-2h{nE-#y8x84w_hl6_sqq-9^)TiiPp=XeMTEc8jk*OT@mOr zU4&jlMgB%Fzqy$N0CKxr{R4=TQ+C9XgC$IEYQbqA`r8*b069$rxh&DYA@|#yFt$XT znBie8F+9157eU6&Gh!qp-hR#qJHdM!4rP(I(jc0vD2{!roe!RC_%|&6?^{xKRbs26+b__(49C&cyqnabF5Xu5*{ud{xY=oV5l5i zfnH<(sg4tp%U6f0tFs!)!POJJ(e_J6c#Kj6STNoNmM|l?kYY&(f{enY|B8{e7jSqe zKjMrk1F?)?2{ZEYLp?YQI_?|@zf}=BvX%J@M&8~Yz;c)9w~j_ECs@LqOfTGCRROeA z1dK@$!O0ukAddDXzsCKdW~_?kL|jFK@3C}X3DZ&XQej;OR1^Z}>_E`TQTz)!p#i8R z^fS4312%?*But3oXw7Ey2bs?TyOu)`5>x&=Ld2CrB8%k$OPEW4WHvbyP);OJjv9gs zgX;3R>~sM)5jX(vvxJ7|ZLzFi3A0M;d$HOYXvh<22-#&7YX5>2aW!!zUtuzPR4K^O9oFuF-}r+C@H$n(m6J3FRDnW-SASemz{w*cq3i8pxvVkSc#(&H#1U=&8fr5|| z$6CGRv(fPIwp(f{i}uAbf+ftT>3xbAT0f;gKS=v2H26zK#MP6Mg(U+^m`wS~r%h=4 zi2~|D&KZY|mQUu_6t;u`<=w_|f+fu9#~!Y1cc7rlKtaekgV*%0IT2S;sQ(U_81PUU@yz~y)dP9S%M9^rV*X= z#ou$NwBW$FK3Kxw>#Pe}9|1%i;Bur8u|=BS65!aDqc5IN4{<>Gplh!2)_(Q-u{2-_ z(!2fKv)g*sv9wCfF+FYpA%K;4%83}e&`EJe*evYTXPp( zRV`uwu2^s`NW$QLlhr{t0HOit17y0fJ$wmpwNNiR!iB96CXNG)9mNy8t{h;qfT4hF z_?L)fU=#jkyLbw=;jo0kNl*%7C&7l72;PR*>ix?AH^hEG4u8MHmVy%-SVI!V-+g#a zP8@8YZUG&RTq~}RSpr`VebJC3j)5A=-@(t-hv3#1GZ%(S2P9!GZ}#W1`+*UVzX{%Y zYD`>;3o5|H+mY}95GUovz{3)T&s5hun*_F=bONwn@cTUg3R0GU$0>m@fx(JR7y__F z6Ck$Nf-WBV{g->1AOQz&4-ar(CGa}PtlZ=?EFdfw0~A64lAKu*&=oAl(L0^XhyF7m z7*tTQR~roWSYUg|1&jONKx1Y@?O#mrTrbHFtR7$q_q@9_8%^{I5|S|nI2|C7{}+1L z3AzJpx_LPhC8T_k2V)7agbA74QTl!rxT8xT9e@lNwif*bA$6}nPjn{%10hPuupUbZ zPeMt7G3lSVO@I;!7@)|2!L8&kC~3HQfZqDgZ2J4|^>+gE*#+Dtas^&_{;%1fH(!V{ zvVDWq4=mv>6Sj(Av<8lRCt!p$X!IA_2~3}V4qn%P#uAPP$auNp#}X-fcro?^OPI_) z4TcqOL0_E%Dni;%-=%*+<_|l<8)GmP+%rsxOFVww63}6$f+=ZS{tHTf_7$Qb`6P0{A|9x|6Wd*|gf(=R>N!;jAe0T9 zB61ID2ox9pJ)uRl1e3u%!=zrG&7Rr>NIeBZAE~7^xBh~Zsh^#fzmvD0Cs8}!c9QA3r*k)efoSYLleolNrw_G+|J8m<#fL?G1 zJDlh*LjV3#Yg|$j8g~8xT6X>}Ajrn+3a(mgSHKeP3Ztr|ka93sUhu&6e9_HI62KWE z;gB}Eh#zAOu!JeZQjpa$$NX5&{;!LYbz7=DvjM4dgr z3(!W52HGr6GWL|QO5kp-P+ z=9WzXEaZrdNf;mZ4D&eLdC^P}aF_>Of<9*d`|swr#d#3yfqLF8*bxXx7o7=a*;b(QnbLLhlCR}8d>A1`D0ng=tF7$8eRXv7On<>UJuau z5$bkYSQ;HaslD7*YtuY>H3cmGCdjHI!?0sNmw`*L&66jweGN;vul4%&-0=X|=yMB5 zjej5`B^0RtGwFeT)<=Z|5VSO98xf49!4gJ4z0t()Ac)2f(ZT-a0mYK&zvdipiz7h} z(Q{Z1u!K379p0N&0W?qwG=Mxt&_K0Z4xt1Y)Mtod#~UPJ2Cc5guc8a?D)IW@74Sd= z7E6Ejfw8wY;XWYQDuzLaC5%4KB|+y3(8~cjGNpcF&64P*-aZ7IuKWlK4ofsRv6u^e z>&frGW9ty$pqMZ)0GYmo-;H}-3}XWVW0)WY2&91TMg(=ZSHlw4_Y6b(C!2o*K?w=^f)k|cIG?ZmC04_UNw;`vgcioyJSBif`imkkZ7;3%U^_oYJk8_4U%8&#0>ECcK|t#*ZboeP|e zUIN_& zuteh%iw%)+o98}4_zvD)POi}DBrPnIAuJbx+K3osO^ZRff>V5mI1vvAhYO{6vZF|+ zZUIkPDL_K94S^?UyGYY8czWKBAiW04ctB&d0RcR(8hs1fXjsDi8?^e3OamaXjR%h1 zb~`OX0z0I!_;}crTV*hP3riR~Bk^|hUSQ2@fLBMlwFHkPv472^#Ih^(R#*DE0149Z$BF_!ZTcx&msh{sOY8>%K3CeW4i&CFu3ru znb1sN1_=Nh>0EpK7Y7gUL)X-x4^DxhfM<$>#aMh;!uUNuA9;v@#=pdK?gPP#;QzJ( zBKRcJSbSK*`1jX13ZX0T1wrB+8O}$BErS2g^ zpd2Zg1u*a;@zNjB@ryG+FJy>-*EeIqVF`nupO(A#0)T%7wuinY?)Tpq@Jd8Sz8*HD zHAeYkoDljL5up*#@d?WUmN1KA%W%&;z=8p&0J(@)Oj?Y^9}^MY=z}qF&oH)OxyXS- z09y|j0rDOb?IX*?CN>XD?vTe=04!k&R)X@^K|n*o1x5j~`D)3FP{2l4L{v}WjKzi} zjP2QdY40HD^`ihE83>T2EQt-gE^ZJIoPX$(u_Ry#lTe5``5bJmkW>K@$cfM*brBK( z9vch%nvXFt_FofOUc`4ljS!IlJ7*79x zUIV=}zFfy9XK1ry-fj;2Kn%RW9Jv}YXw1U)#MX`Z80oi8VBq$EJ%UI zFN0((lE&>*i?kS~L2UJ0$*72(U?91e;?b9I|Nh&aPml(D>(*jGf0pTTaIp@p1!}hf z!2~i5oI)H3lm7iRpWvrR>gBO*ge9!%Zy_ry_JM|Ff*&%5p*=^mjhZMgl%K1^??4J~ z5`kfH&oI1{L#Mn4m_Qzb5E2=~^b&`MCs90f`k&aw!xBb+!TdR`4d`75y_Q0B@D)%3 zhd+r2qB|HyCpL*G2Pk2z43;p7NqVuHa)1Q7asru}oIX#S1ZD>RCz8a|01S$IhQZ&o zreEj>qbxrS&cvTCBMSa&loPI560cLnG#i#MvZMa+I%i<-uUEo0|N8zS$o@W{3?D@p z+IE`?)}cZYhE^Mk7tR9EQXoZw3|+51Bntg29SEX^0I+vz;pYmfW$@IVQi5dwOPIkK zx^%W)z`!1?9FT!aeJfE0rrz!-bh!?Z78{mmY+~~#a^sG&1A!fa0?TCN#vS}_ z-1A}>NYA;OAO>DK2KQoEE(V0WIO{TTppgIGC}iNVrjwB3FpUCOKK?)4Nc6ofw2U+f=Wv~JH;Ww5@v8@JN)J@GW)^<+tWOA{3@FK=+~6W9~}*9>IN=ndZl z3@iZy9AX=$LBSHP1YEBnd2m%(SJH~K2I5Ytc}pq>9r zCS}V{d9Z~`@(_@bLCodXdX_;(-2>%`@(TEWbdzz#S1C%s1f82fPUyROm%#*NiBb5e zVR)qAp5YN=+{G0p#f zS!jfY&&W~0qXqns{%gK}8C>-3JW-B>YQu5bhb7z_QoZeaX8|@kMT-nD=LVLE?+-3l zLxEK!e$7LN8rF%z5+-r9^2Np|4jPs)6@jY?_R)Yw1Nb4=9o9q3phD#KR~Qxd45Rx#`Vaz6o0BAf zA99dt4=)@2KXrw%ho=d;D?oidG%!S8FM|Onl@4%qAW$lfYcVWg4FrCAUiB5YC`J(d zBb|iM$TILv&{G>~iJ1fDfP03y+<7MGXAblLZeW3e@$5It;9`m*P>+Pef+dVC!Ud*CcxU(C?FJCr{ z+=&Tl@#G&{$Y=)ncdiSwgPcbJSa%~Ml?^`@Yb}lexOrI3+X0+8_6h*wkkB>I(NkC^ zu!MCn$l{%)0X8rMKxPx^1uv445tyoRddIpyVu_Ez7it(iz!F9eT6<}m2(Y*;-~*6V zfDWq`Lnqz?B%9SS$gqTw-&IP}fcc+99i&{4_WliglLkLT!L{22^n%pyefa2?$NPzrdH+ipL<@K?9=!Si%fGQoO#0uE4Ydc8Juy zFa2T+fb9{pxkZq1V;yb%z|H*ghfEFlfUCOjb&tupQIl|C{u3$q@&w#8+%w!nw$W30 zWWk=z%^KiDzDwJy={= z!nnJBaPqbT+b3ugKA5j2l2&1DWl~=3S!I7#iq8hd^uwjQG9f@G?lC&(jdwx*pWSPC&4P4O7oZzynAZd|73cNB&E12_^tR1kwe?R=G*!$~a2`N|`YR|%XxO%BTYqK0{}cE*#}ht^0Qd};ACOCm z9?3<)(aFvKgj_EBO0x(wTMD2fk)x!EA*%#BqZiPa4H^9E30(ie67KH_<9o^*0ctcD zZ^%^tvF*f=(Me@YQuo(ZGG1@fH)1UtmN59hyEU(YZzZV(3mh(lWwU})_=E?#5gHv2 zk?TDc5tcCG^NUtWTA;a;VBL&VbfG*kMBr2YF>ZWC!-%+N7@Id?41f*7*+S}n}F29_`~IgQsP^m^SE^fl74 z_^K?1{A+S22CpoGg@+{!zqXgA2)&O&3Me42GYH(d2>dQ@aIXxZb0o`zJ=S}GEg!&w z+B0Y}byZsg7FS)X?FdG=tCK5%4RE-@xM#TGO)A^id;xj{ush`Woe1?s7+|-)@y40q zKCHU&B$Ofa-(=%l586!yMmKW#Y@$gNRbQL{iQ@{(#neKN z;Jy)DXZ+8ru^&P~tnuJCQ|?)q+jouMqy^?L#GCPd?`cj2oK(>V0a7z8nW%CVLVOBhp_rH_dm z;I)Avgq*4@^cKNXLj~Bmdi*EkZ07kNTL3Z(UTXEO{vya)C_7N8^Pi9py^C?>2go-8 zGP0^{w;>T^kR1TuZe3)8hV_hlhV}ive+M}j$0TK7YDAW>jvEodMxQeEbal`}c?A+| zcJxzhSHlv9Zj&IVd<8wQ$8}L54K-MgVBAA4^Bd-g8_#n3_d4(C=e7bk_dt3Bhv@1j>`bYZBYFs z17iJ++>2ce%5~xXM&T~xM|3pYO58Kt+KB6y74HFi&I2t*?mxOMiiPfB;=v9M4VEyv z9`n3-3_w-^ISOPB@wCfgE&cr|br1Bti6EOzoD01qw%=h1b5T`!to9gaVg+z0$PD`_ zw`FkoRgln1q6h6+QnQ4PthP+$ZGr z#HT^vJQ3VZ+%vkp#DI`nIbpP2LMZ0!F?(9&l-V(b3tDt*K&PJ1A?Rh_*{xt z0D-0SGW$3C;JINdkfS*QW@_Y8n$DZ3VsY*LW&5gu0pPA-LWi1^OR-i4OIQi#^CFti zx#Ckm3CO|s!f&}OcDkS(+)co21BM_WE`}XgE_f1JZbf{$e;oZe^fItp30)c(@K;>y zy+a7`@Y$$~asIG`brO(DeU%L8Lk2h`q!U;hx?CP=uKqqAcA;jVEQAo16b~#FSi)4I z*57%I{%l_csFXn(NpkpdsbDs;{Ry$Ce}!cMOPIyH8Vf@P=oo!)+dDFq?F%w)@LUvt zJyQsos)j4d!;uh)L9tz!UV$Y{;{0UuMIJC#UMs@>Fg$L#B!1;z2+=T9(ZkTdlaP@* z>+05WflY-lDR^&#DP_4dv^|{(QOH}NkD&ldSQ7##8%}~EVv<5&pUCbgIk{{K=p7D1 zBq}#!Nx%{&@rk5EIuKaqc5tr`(lTd(FIk>V7+}63M2JO4D3%2*VHTJ5=5Ck*AMOl( zNS863w_Fy6;4_lJ-hPCQGY`vS5Rx#DUg1zmIiL-CFiw$Oaxs6oJdEueUA+k@gJc3r z0+uj|pyIjZ0(TeMsfCSbwfK+rI3pBrGT6P7TG-93J?2_R9YUAfi-PGjt=>C^f><7JsmAAluJQtfSBO;vjDUNFwT_D9ZBqjp-wA%m zw8z0kkT93|dL11NNU}i?f zu=KZyBmasXiN~^Ygy9)muFIj%%%UkE)m{wh?TD%U7d*Pt(Fd6E8V{r5o?-M8 zog=&vAWlPXydg6L26vZ4Csu}I$YYG@b36&f0mViiEWl&la5}V*Sn=CcKv>KK$vRu~(`#fOjH^DrI+!2X>N*o#F zVu-0*T*DLt3`-dJ(f>+2^QfwhJB~jP#i&?ZV<0F|PfT-C11F73T!IhW7Z8lb#3~PX z1QdA!3Q_ySB${en>M=14lxtvE)!~W)r@DbuUxWY zi*{x5kW|4e9gPyvM~`prc$0kIn7T8L9{DdjbiB51VDLC1Wf{>gg+zvnJG45{)PnbA z+rLqx#bNmLWVdR4xAeGfH%f%J$=>zZ0)l@Ugqi!HSJiMaw>7P07jNoVlme?7nzUj= zlRnps*jx`AmEfPtGTN5b`}nm~im7-Mg}2|O<`9w8)R&(g+PL~le3j)J!)}pJzoldb zU*b!=Zfe{E?&w%UHF7vdYmEmbTDxp%vt=uZT0~z5PTl`sB~@SYGNA^i>r|9TZ5lhO zKiy;M=s-=j6AR@28%pZPY3}UlCeZLDIus>Bzf1opzZpThQe)*ePP)kN*fCS>5e|L? zURd61k>U(I?Q?PP{A9^(Qy#79C3zkJI4QnKvDm=&90B>LGN8&7sMp$r^cn8at_-?C z)KH7irLv5!^`_Qb`j}iBMBP7M-|F|hDS4PDR~62Py?QuNBC~J1n#aY?qKPzhFs*)Xw{OwHXFAdOv8pg!FUzwB_De~L_vGm} zp&9Dznj>Sho)0Akw14QqSuH3RwPGgj{%%J1tYdc|om*$J=o%FKsMxU@A0_g?X`b6z z?Duq0h2krQi)g354L{nIne5I`Xpp#C*8nAIkeS!KFWsBt2&NXqPdP0Jwbvkn7RD6{ z%)X{8fD#p`4SBEk->5epO2_H=2K=HhTLtJedA5RIkocMw0+h%v-Mnf3F_C#{iy>&# z(FZ6Qa8eKOj=mt?BtOo(p{^!j?bK zJyl=SQq+ag4!_WpK#5B1@m8K~Ns;)UArh;*`=W&YEmbHHepy!nB`VR-JPF= z34Y^4=RUqGA-*~aMH2JJYu-SKip)>Xn>m6M>1$ZP`IXZbMf4G(LWwn@6Er1Iq7o;a zZL~b!F1tRwyJVE8YOByVP0nx-mQ67e(UTsoCzFG|H4K!cth~(ma9^Ju+Ze{yPEG zT+bUm-K$>pMG>_I5!aJ64N#&6VKaAn$C4{<(D8Sk#B4diRs+f{DI73+d$NW{iTIef z$S?EhyD4r_=3nlz6nnhqjo4|bO1b2$t^rEaph;5TZjrg3M)PleUg}t?tp+39dE)e( z!U>gyDVh^dq6%Ln^lBeKDwL86+zBa@Y*mQO97Z>tDl~}O>ee(cNN5m)p6pSxk~C;R zEt7W-Wgc4%wAqJ+8w!@CYD%C)H+TnKE?!Pmv4mPBk3_{(TP5n6q{0uuv)|BEK#3|i z{kK1}jM}4@S_A)l-=g=5Y{n1?u3S}3Sh6ooUjqk*O$Ct07O4ly} zyWmswvVf}6X{HJ`b;73j+5VF>PouQ*bZeGCDqn5Hzd4z|8G`>V%T^S=mF)#OEQdx4 z3gjH+AEU%bu75FhdK!IE8X0a>S*QlpWp9$R-EQMGiAa=XB$wx%i7cYgO=BAW^9=U* zHA)lflZ{EEB|p_;h!W9d3vYG%E1_v~A|zTDuT`S!mICP^4#RWfsL zJ5KyUs%m`0{g4ex{@@V1Qh&CNubEF-mpb5U6vB8rR#Pii0BY(+I)HINXL2=!|m^rg5z zfVQbXTC&d;C6vZJX3vF}7U}LqiOhK&&xDi^)6c;CWUG=H?>4=830bm?%(xGpNEdae ziX6;WWlBG@VVe3^a!?}o>{d^MZNwFsW**eQZ8ltEKXLK8?qHM%4V#uR|13epb^)Gi z4%x1RCYXN+kR{8=Ts(Gf*>}WzmzdnaqY7-8rVf@Il*sKJmDNU^Y}-d8dCuLk!-gw{ z?}k1Cd9sY$Ze51<*hThc6Pxc3h}z`?*BIQ&RvG$06(oX>blnoR-LyuH+ie5>@zCc| z&TZXKmX4zZ8t&yOzgI))?aU1GVWOj#ZY)YPcAkG@=V9VjQ*?QXdFfswx8Czw@+fdl z*D2YaDU`;cH>c|#E=8~`3k6g|@*p-)Jo6()nA2jP0Gq)##{mdUZjG5PH&Q4F-8kF2#^Ul&C@Rv8)yCi9VRdYdmifUTUdT0FMna+FAZBDdEd z+7jpRr#vy=o4CBpo~-SRF|dPA>ui+B9$q}M#SpT32aSJt&@0L<+4^W+b&Y8F9UYGn z@j?3!kGnttr|mzmNpRg)*7)f;u9V5?nF(3OE%peNWdT>U>nGXJ>pvIG;W_$|K-RG3 zzoSG`KkD4Grxc)q%kjYJc(p|DO6?^;rYce%wHo8u=XWzzTB>a|@ z7bMFvYA~)z#~d#iUQ9ne2v_zYGmIl234P%QPQrZShywC}S)d(WByXsvax)4F&n1G`{Dn9LpO7I36Ok eg-({`xSTw%v~AnA{+@U5lk=Z^`TUj_Y=tX+0N07PX2$Lfd2P{fxUr|xyk=A2>(9^?Huj? zk71<$ci7@z^C;i%Kmh2p`B3{JYzxy;oQ44DmTLT-D@3XUsBdw)@ zt3jihjosP^;^(Cv0|Fd7mp%!Xn<(Hgq_kAhgldX%LS3d@D{5<|CO_2(hDt>GX=hg9?-Zjn)7t~>b zHLzS)2I`M|QrKO2)7FM#-BWH=%5f-ZL5oVLpiJ#fmo$XQsEcP0i4YQNnm0xfcc3^aY~w>_ktme2dlkx?D2xjZv8G6w zI4ESgF8Z44$XYI@p_V~pj&=Bp1^c(cP#0T{O0h`51d=O(Vl>tePf`Nn^;@%G!#_;~ z&e9_~P`L=rg$ilqIfbSUp}Aux*Ia!W!6hwHbPy{Vr2nZvkU8cIi|C6eRz^`ACK_$N z&#W=11zUD0zPU|p;*e#G+}uMrHiO!wmj0td($XGjxG-`9(^OFz5wCfiE+$?jU5SLr z!}u;j6ZRXG{s(F}_709fwVW$SDx(5427}HOd;ip#1pn~eFLiBa&hiDz%<sGQ_b@5(8`blf)h)8X+dY&Tz#6SQgmIIR!?Lkh@ZiF^wL8!OZZ=|cN%m6t`v>B=Qs8;$wb_Gd7j-4F3{v<1<0@$K~)Wk=UNZ%Vkj zSq^meVlI_nYxAkzx)=pw^AJ!WvFQ4nR#_kM0c{9oGf&k6@0`rKxh>!7;O25P8YD_b zS=cO^f!2u81y*KQ=p!4fZp-;aoEX^)T?kr}29pX^IIG9B+B7%f=9L%kG2afO4Soml z3O3B`LfS693@iK~ttE25d3ZeQDZ-A}&Y8|NC(rveyQWxpzAx#=n$T{#{dcQ#j;`3o zc(Kb3_iav|A^#FHc;KZQ8pqI$-ohg|JLxf2i3b~g! z)n1WwkBwaRL3E;aTd*P15(?YuPZ?u|vpq+_$)aE7Y4#AD2C@S6O%&F~)J>VXat^ z4uyYg>z!l`+U-TBTfRvRnVjh9bO_N2RTG1`-+rBh+&y{i=&fYtTbAd7JVov^`0255 zHrd-KT{C)-xY6!50a?kq7xrxHlSO6tF7ea^2XNG*$0C)kz4`;1f{x=g5feLwic-OP zy0Z1yy4{^>I%`@=v4L7NY$kMuPRcfWWVbXc()ba0RJwS#NOBA+*etN@rQ{rTMTTR% z2(in%Rm;Z~YDoQLg1JEt{Kbx{r6(0S*{1u)I6j6-%NTQVM8LMIoN=vm$rhO&H7I8gRFD@!Z`R}Tiw7ln~dqYd7q%ycy2M0^Vp>1uqjlzP<&5(7`=C;5RCj?LnbBKc8u#RiF` zXU#l^X3`u9+>a?;2x#`c>4a{K^e-I5=3Ua<<*cIxgq_~--?bF(4eiJxBThF<)o!lS z2N^HnjID+=53@I;!))|zWC7j27a3%akd*h?p}lSgV4M3bs>>=TK#M}e%0L5ILPT8~ zCTYbU*QgIWf`q-5{3JKsZo{@!3N2PUb2|a$aqhAx1`r|?RtqALE{mWR3d!)sENYax zL%n@3qh}}fZB_ELF9{DX3ovUA!L(eab~Mc;dR6qd5lPa264K4!VGr+1WjUitI&7~b z*bY}qVjpx)dQwFNd4p%Y^SP32*vX0eeQ_bp>ZPknkGZ?0@AK(FBe+v`QnD51b8i_37-cN)I%DKiwt3 z?Gbyrd3(PT_3^8C5J`@#3d^R%$5Ubmj0v8Cr!T`A5+pWIxNugwbA@x~m&GL=DwjwO ze{;XM^)L53DX2Az4sbfs^i-0g>f|LjrHl$@iC7INABbqA(x(;6Lz#P}IM7Ky<9kLK z8zt|&B2;n;sg13TT7#*lu;ygX$rn)zO)E8OC2Lx#B;A#v(#CoW%kbPw3Bv`h_sc*E z&|C{aO?r&dDoyuxx-{gm%!qWvH)iiITWO|S`=zX)J7lPqpS~EtC9zR9<4amJM>!JiQ?dK~@@ ze(g%e^mV3p4dSrh$P7PNzQGS9U?=NJgl}A<}i%=@61zO%8}VIp*lGcu}QVZo|0c z7JDvBd}W;X1Kez-4RX9Ic-u+Fur(=ANIz>OEh!~<+|+9_hzJC**pjL&tyR+H)|Jw^ z)fY&6oBcR=qzEqk>&Cg9S0VCoO8>&eibGLgn8+EKlJIBKv1yLDpnx7Ooc z_9`1R;7@`!C!o}8UbuIy>Z`|-r>$%ReBbx@ECqbO+>wtb zcKdz=D_{Q23HRexpCNzq?I@xtSejeW&Yi-m=ql>AEMewbVk}QKU6A~d=DbN8Qnvw& z0sQG`?E9*l!Pff_-TTpFT=y9WP78o!xae$xThGLN&JHP6r{*&sj7>%cL+n z$1*@qAv%B}JNt}L9p*@_&IfNFakWBhEf1cy&p9EyX}91}43Ij|oZLR(L`(zWJadjVO1Yo2w+m#kYX6?nI%zCYk5=fytRPiq2VziZcDUX;NwjO69$}u zHA|7MO_)glT_7_t-OP^FA)Cour>z~QOw-xuZDL`+(Qm=37rl@8FGwt9Awm%k7pl3y zml%7=?D%EB7MaK!Hlv7fWPLcO&l$%sq;Eej^#|P-Q_ic4TEea zM9kI((Sar)JB0eC-E0Hz0lbzxxx`@+9l{qK|b^K5yk{6t)p;Givj zPU&5$;;#iVsCqKNUMvZGWP%)59*afmueBF4gy^B4MJ>xxi@~LJutGc@}R@_m}7hFU{GqS zy>4|FxWL`R(a)hqSwIO=RhTb09rtD)_7}i_X)A}}5#SBPS2_X=R5vhQMz!gn6AsobIMJTg9$N{W6zpMi0b6fQ3#I)m z$y}V&IPvzzTe_=yHlN1J&=PrbH0VN0Yb4oq(f*SAlM1m~!BI}9r{N*n40%(RVQQiM z_Mj-v4-b~GJ6Q7m7OjuwrGm1T+*nK0ahtuVxW=lkisC(Kh7icgXH14}A9 zn>8|2>`G7IB>n#Vz12)}9-L&P884`tm>q^J^gUYVtaK0wkDojVXb4A`sH^iJEybe- zbz(;_zh|DV?w+sRh-Hajz3BSn#iKml9S+3-MubA^K_tS371T^472KFcjZk-Jr4NxR zEUJ&Wc49vvfb2(xWQVNmVPP%G~Jnmse-pT#pyTiNll*X%4VXijf?zy zM&vY;m?q>4hSXiKt$gB6x-`s_49@xlqerp!o%Q4rWrAk;>*)ad`@AL$6Wywf(uSlX zWE*Ru$sqcbb5pQJ`JegqGWt}k4Cttrah1BU07|lsWN<&m1LcCYlt;80;$0_=SueC3YMtA{j6Ejn zx#Or7oyA9I4!KinpPb*Jgs%YFECS8^7As&UBZZVz5U8fx{bbPc3uX=MU6mMtScK?(41XH9( z?cc0_{XX#iBlExYgO!1q39Y%ajkQS3gl!)^!p|$;h|+;t*>!(q6p?k!a3#8q9wfUk zts}8^vcTryA`x@=dOoJyCXZUQ^3G}or8gmR+E?a*B~ZJ;PI-WjT=m&SZ4dhfnVZ0q|Q%(-zj2*I`H}gM*>FA z)L`Md9p{ebVWpX_yTZOOX~Tv@<@3lrrN;h}BkW|-DAO^{P+ZNK5f+{*N0~-i>GQ)2 z_bpt{Ku?gWw$nj^zm16{LMO}|G%swky?13DR&Z~ ztzj)r+fG7rrhDK0G@dZuA4`IMOu8MmbD5RSQGd6r{ZntClceaXod|tL(KT6hL;Y{o z>HM#(qb^wo%l%@h@Hgv32&JR`lXcWhoM(A@bvHNFUNncF#uDKA|10art7wo&j<|-O zlMoUs(Fdjk&%-mGvWDeE?f#m->Dav>sS7I;RLoMyr^1!IGr=LnZ7$bFO z=q{teBvn!92ow67bqG^AqsJ6QldK*P#M~)Ue+}>1C-;ZFcn)Lw>dFCeYNwd^E}m8X6Lp?q+OkDAW%<>> zCKFtc(|n+Nk1~XFr2g$V#stYC|I2Zps{G?PGNE;!8c-k1zQoYF98zqu(;zjc z7QLF$KVz{D-CGpZ6vgt#U;>W`?ap?el`GeFCDyG%ivlkEK?aPybgVk{aAk^g1@1zdU_y-lWCfsAJ4nh&_C!w-@Pi60^RYIK$-}#Na%O zKxLD$s=NJYM!Z&VGM*{x9jeb739sGFSGR#}=3l%Qlb@EQWrh>yXA>(bTFuk=_PoN* zl{G#D%wrz2F#1&1@0DU%*R+?KN* zK(B5&#oo8QDQsfB4(5Y=g^b~^u;K5UJ>XkFY7?)9N>mML(v9f^MaEM;_L zxv$Hy*VSK+4A$o4a|ChY?6bMOm~mxYk_|cmxkKOA@#=E4tx2}L4>yXp-gfwNG1EcV zyO~3lh2gWpZv({NX*)NgNSgK{88j&s=wmeM`vf*%SpN`G1%V<%hvzZp=-Eg;C+V%m}j{ogA8vZ(tNB(ceVZKbN#|?o8 z*X~T-dT)U_WF9sE^+;jFo`?nc+w|oP|h{yN|I56684)1Tt@pHo`2=i~)dH)VOD+{-}ytl>G=LQgI z>UR(8+`DkG;c)zNXc3k%8s!wH7A^+78HxJx7;vZMAU@w=hgj(>AlQLk1f{je&NOi; z`gcc{PTIUSjZqW?z4#bkx%$#Zx|uz)mXS2}3$#N1nK>tV!@T27ej*e`$)x`$TH?$g zzRTMx2TOMB6tVXvGCu68kW;t09_{!NkW#AfcFftA#0!#KCX3g@L2`1r@I)@n1Kh1; z&Va$iQe-}$RGLf#dcoZm@NUdo4|x4{EwgZ#eT@Z`WX`s&Fy`&^+sj=v?tLq>Z=Q6O zCC|j}&di%#-n~q*@8>$(Mno={iJ8a#1O|loVG`oa0d+t9xKp_~9NZ~Dh-du3*GhIq z>%ex|Pr0dB#pnT}90;N0!xG5{9?FTm!cuaN><@8CTE>nj;2<>u z#gUp>w&|LO4zowLI*&WYfKru0Wqd8B1YWj`xdPrn`ohPKcJhr3>w*E6rEIg$2Bcet zq(kV9yxTqjOw2y)+w2L()?$h~kjYfCzY!-Qi+&mRniO&5;?2~asu_!D}yH=jmc;sKLVMOq)HHa#|wFU>w;DtXR z6imvu*7);!DnI>ST0;~kqir%+>|1LfJB{9%|D!d&cHlJD=JrrZm~Mh`xbGD%cgn-t zKxM~RCB?`<9gs`tPw`kO4Q=iwEKOEFvaI}AECQjDB&(9?O0D-FCym{Y5`U`rOvLuZcSCj|NDjmz-=A{0m>`uH(CaFp7GxLRf`TT0ygmcv0(*+g2qu*8P%77- z%AzEISy108aypYnGOBQNT6F*Ay-Il~Q8pbFXH@L*#m&u4B7{%lB(lPeb>_$fgY!CQ1#$s>J$r=(VwcpZ8FH*%Fqfs-?av{lA8tZZ}kI-KcNk_-nNwG$mOe< zk2$WSr5cs06-d^)si@RtAoC{r3@XhX#uA1I-i|5(3gBF`35?qeJ9hKBo9){C6{f~;N-xRUkM^qb&f*auGnZa zJxvUa$$X72?4#Ts(F7EaAcY=TmCf<`m#h&+@pG8Y9`-QAkJC9K-+E)igfX4zJ)9>@ z?uVf&O!&kOl5BH)_J~$`DQZ$0uQg_W?opyY9J)#)=ZW*>YL}H0yUn%!OqEd8bQIFxV204X zth^i>EybogN37AgDwYLsUc(vaK~m|~81;Sm6L3s$cU4m?Tu;sCuUs^i6t3ZSf1zK# zMLV%Lble9|iStlk#dZxbwWsfV@YI3#aT|%fJNONKuJfI%kdE#cU^OyLBeN zZ80`Y+pXA;I0>IHXNz;N_^oW1b^oD6eQqe8z*X;#qtK0jGd)ipW?Vmr-hCa9{;)o1 zH~MMEjoP(AHKTuujr9?HSOa*YX9e-^Vgt&%gcnMX^DeK$i}gCnU4HrwxEi}QJ@Ys1 zao{X)_RpQ=vsZU84ZL&bAnec;AnW4~lfZB2=XjmucoE|Annp4-K?ZTPCHAx%EAcC^ zb3haGWeDSC$BK4-3l6%L+jiaO957;fmQ$u7l6#zyaBZ4@LEoDd(nqG0FRFteE$T1y zF?53H%}-^Q`?qzyOiCued%9=MV!sZ5tY83P5T|!E z^4)l^r#cOm_7)I8ybK>S__?XIKutg<#(+?`kIJ`ZL88GS}V|e_^bY8S1RD}r*56_nBh+p zAB+#jiGTbC^gn(>Lan2Ss!(7jy@we;*>BHU2~MgM-p{>F%cl%_NFDXN*UCv3I!6<7&hL-=&vN8;TMCRnM%(pf;IXK6 zs`Qa>Fr}9-)Y57%$~$k`6P{Gs^&L7+z6HmuQCqe>zJ*v#xDVrk3a_wBRI+JGHYR;PyPQ5o*x?xrkI-fi-yCG+oa`VLY(XA;AX;#ik2MXbY&o*| zJC@MINpW1cZgXs z6bfKAZA(RPBt`3%2Kw>=_aCb1@(u%v9K>|M8^IYmW({6<+qhtFp)nndANDw1&D~gS z%^O(_of(nc;5Am-hkeT&pf+g~bDEPUCYm_z3?4?gvkbw|rTS4$0NVeYlC6qbWiC-CR%3&0!95F#)lnq1b}+#C88&JcVYXjb7_Ay-XwWKXWvsYPsC_v% z1$f9?={zhIb*at>ZvX0a+cRDx(y4U+p~oYReh>7}X=&#_Nk8TYOFfU08jJ(}U{VmL zK~*e|!iEk;!EkR1$y_?#SX>yA2#dBy0v{I2yvPIY0-$VdH8AHrSnn9KG+oJWH}tW1 zJlEUZ^esr3Js7c`n3ALsP*1DgL+n^74Ss+HZW)Vt(f(-n;#2x+JtmH)q$sT(^X$<7 z={Ok8QjQ$%b_Y+}LVxHbP&+5A%NR9rq6yf1=_%TVt9kxw(G^S%z-XfB<0Cg-Iqhur=TQ+uPg zp!Dqu>!2b(+3Ain{Ls@HHp+y;bGBe?e~QCbGa6U&;m{8B4B4}}s@XX&jbU$|l*=jh z^NjSc1Ev*7kGH_eK$qh>lXi}k<<<9RB|V;|C$u`vpsNz~u`QtlA*OZ9dqnjQ3jJcq z9jrh~R#SNVy2grc)wn=(nxezI&j3U!_eGZ2Kjrn2HA1C9*H9@K$`UmPG8vD_+4YHT zRM0EI(P>K7EGepPUK@5y*aaWkMJ(LK#BF&V4TSCR<-oU;@FlXvdw7OP=g0F5{y$R= zon8Kf8Xy3`+xLO<|0)eTR})893lq10JdR0xZ_FG$Ldcaz1inSA1Xde?s!HQ70C)?v zU`NkD_RuCL-dIj?CBoI@PfNLx&|1+Py)CxQ?lVqqZ?1C!=v30{q9@K_*WS0!tzK7* zkcn%HdY^$u2R7~tUhW+gq%K`1ylI!I3E!mti`JI|%&ik)ky5Xhmq3gm!2>XI3Ch9< z=}Tc`HJl;>r&`8PW`o^opK5@&flxPmv)5gZ0x`HcK)@lv(EjYwI({t*RNN5FyYh`#1L2LbLk()K19+M zDD#0>1q(?oWmQ2W#Vau+|L5y-a@^OPbZm(Eq|>cBmsNds{M`F${PGX-T5D4^J9I&L z22X7^Vs)^By416cV!heY+u7OL)XJINwT9W0hTVWhHkiSNecJeWSUvL8j=*^NIdQBZ z9n7+=4Z1#J2cqmH(UoOVO`VbfovW)W6eUjRTu&o%PbGuulaDAngJPKbcmek1BFP|} zTPJ&XM=wfmI&OywUu!x(LCH&Y+2+&MmQb2V-9BH zWI||Uyy#An9okIco#>;!RAXcEYj|+ZF8s-k?FbHoZO<^_4#Leea<7EO4b7PLv|ypZ z6y!Dl?r7vVirN4j5^MNAY;Tg}pTgV7KOxNJq;2ghS*; z<5`MOC=d_pJD;r3cJKJI1CoKch0s51;DA(cOD2qNK0aErN(sGMwkxj1J-gt~qxw(2 zb6KQOhvrRjnaYu^iz3I-XOPl`xAKicz*7Mc1C%31{)RjK6S-a)j!Wvs(Z|pt#N6bg z7q3?APAZMKY=qz^G}0tc$c6^preK2Y*IaFY<5i9uj4jP5k^<0e1ROI1`-%E1zMo=< zIrJ1S6jIGHR$we1oFfo+2e4FVc7}0m8XN{5S>R_pURYYJktEmfiBEVIZ)IKh)CGnR zus8HMwe>A4OZ05t6N_t8Txk++Lk!9kppGNkLK+TE%cyyAgeN&SY&!Vp>RKcUC9}kX z0<69~`Iu6DQteakX`Ss`i<|BhGp0A+Sp%P@*aY$8l;2{zeSxy!!y@AQ7n9ZJUd7zG z>yAcyf5luqa=FJ(W`IT|yN3$X=06pxdxd_+jhkvK?Y^;%t30lT*_u53r;X+G+DZmk z=Hi7uvQw7#a;Lbii&t5V?J{82#INxS zHd*tPbBBo1oT|`ZrW3Ifs#rJ}fPM`%!xz41C7boDG;!b->YcP!4O*Qs zpcTzrI*(P5<4arF%!Ai?fyCu=*7x$`_gcX7pwhYW2(D8Zu+UvWbr}R^op(;CjiAQu z6S=Pd;P5L79}S;fD<%gXHiWQB2Kq6g-E-U`3j87)pY66&rw?8-k6jzQr$iUF^>;It z%k`lnk1|x)f+FEnEXC*E@kKMLdchH@@s{SoMi>jt5)|g^uJ~SH8^>MbQdkV_-Z%V zw4%v)ZHV)o%GWCVc`9jv)D8FVIAPYVB;W;@fV_6gcUn{!S?gmoK8_1S@TmNIMcPuF z$@9}}yKe-r0F1V^78FsW(i;FyNJC!2|Ab^t=L*&ZtY9U|az@75q-E*TV)iEmqj0B% z8gymt&O<72ZxgTKS0Ri?F>bO)wd4h|1f+TQZ6j)D!x_nrfDhI$&=?&n*lL?0a8!Lxc zTN@!pk>qGx;+0QTVeh!_zR1&kKpB^@$+!E&9-Lf0PCl*Cxh_YhdTsf2KN+UB_NTGf zk)LBC-V7nf71hkfJfn73^8B{c%1FrsW+(|Wr06r`$>%^6^Th?+7IbiAc_8$=(~1jr zWRx)?fL;YFN8pzPSpd>U+Y0DjH>8zXMum3=nGXl*$z6d&gV8@?uLTA#Hdk!H&`QG% zD_>dcC-1GE>**yI52T{t;#d6bx*Jtehg?`=D0c6t6<97V5v2^1A7J%HcCRgfnf#MBy2y)P zn16U*#5GR-98Vf9*qSHLLLB$Umr5SJfhwz?&E8J5ev@#O^J$c*JaEc_qC3-#?0fp(Z z{AmexGCy8>pIhycfiMgoxb=N`Uq1T{AyK$d*EDHI>Ht^ak+?v+!(O-4z;4RIE~_3q z>-J*r3}ZH_{^zMvq= z`*{iXi6Ca#X;)x43)Y?=_BQs;;u*ckXjpv5YsA>)zWSUKD2@$j$up>(>h62d7hdMS zwF~-h_vEYA(W~Hmo)LaYsg8!wt<;~vz}lQFu_mhwj3&aF ztpCQ4z%X7M03tUO0z{aWb@u4Hp>={M+5e%9FJ7!b51$IrGJrSEhaF*-CKH;~eh1JT zU~DvCm+$VxZJukf0~)Ap;-;;jFpD0BsQ)W~FG2p8M2O2r5ae4!{X_HA9lhA>R=>VfpARKi79>A}?i_R+ z70J)B*F`!|_9LKSvRjXFIw=LCU`}ig`6R=dj1dHV^j;BX25SBbQ&Ae>uR55mcuobp zn9b9lh{BT~sq}*xwn)LBbpY$5vw4sva2@QL*F#!f8Bqj*@Ybvm&({w_%a89Q>p_PG zV+U+@eyHW_qIV4r>|4h;)@#C_7tz|LYI>Wq8yJ>=a6aQPExUu*K)+<-FZ@qsRD0Ni ztB@FR+(<3&7I%;ra1m@*P12f;^#GciRsyG9jXAG*z_q|35NF8JqZ4U=8l~)IZd6w@ ziGH9N{VH*Lna+7_`NTXMP1@)VzW1B>6l>BfJMiood{a0!ye94vp@c3o#U2AKxipUf zCwHhx>{BF2alnz?pJjWjfkUea9AJI_Q54QV^CQ25z(8zb&-1I$%|r9*GY#r1A-;tN0#LmUZUtUp#C7|;y8$(;@^FiHGeKB;`h;7>snNaR-9g&7|)TeQA-#RLrRa8#>e%f*ykZgkX5%~X=RK+#6A@3wnZ9!F{8(>! zD1x}c?Csr;+bm0_Dj5au-)I2pc*cQ(zu=QfB51US0J%VV8`Ikd0Js0pDh&*RQiW;p zgu6@ywddk!=|=6zCrB;&!zdx!hbaue-bE=APl`TL^V8XnQ6t+qVA*4qC@JCk^v}_t zai;+XQEsrIUP%LEqBkL>lYgjlV%2c z2L|mnDqm7tuz1)+RgG4AS?PF@WVkd}y^d0DAra8k7Tg_vlR{k?jY{!l@RV@mURhpg z#yYA?Rn#T}@}DQt#M*u9bhG@)A_nZgL&Jx0yQE>06ocKIjNAhH7tg%dO}?{N?_Z+5 z`ifc`n9DPpt7!sv<&V#bnsC&4tG6c=(@*EmJraV8Ddl)>0|n8ruB?QAro(s~${A%7s~DoB*)gWs z-KO!$ctlat_4wxW`sNH@lDRej+~F~hQXif}%8g8cn8yP~jl)(xu;y$*6&qEASunVY z;elfdkz$N#ti_x(0DKP8D6B*4Ou11ZN2T&I>#G5}(U`kb=d}%qweUG;k(Sh=y+F z!va38u^?X=inf`?uBw50w;$0}V1mIVVd;404+-axe^DV#ymmHIAbymVD~D21uK8SE z9Zb-WwAVKmERw{i3>mHkYNnP{oikCHr;MfaY-*(}G1CS}km4+61S3QDc%rvM&Spq8 zlY)c>)g!Z!1l(Z?(JdhuA`eh$>EGviW55Jn~t3qrR6vVS$JF$?ED(yH3NGs*D*;1wG=z@=dV(rCoZ7X^EHYn8G>>lCxMR= z;PsYR%F9s(kjLs@t>w!FBBSa1Z*xb1=0NH<(ewjLt*_E(FfC0qIVXX#@5!nQ7MERx zFtGa~8uCd(u7t!Fs*NXdXJ0Mv>U<|`ML+^w;xqln+F=5AQlC)4iW5@QbipKM|TM$M=%^;K& zC&kp3oFcF}tE3YW&Ymx##W+I%2Z&Y2&w^^hp7r~uGMS2@Eio^EqQ(NnozhF?z#Mi7 zNGfwh2nD32sJ{TF-iW0^pFLZiMz1E9X{b@z>np>uU$M9Am1ZNWfiT*(raX)=|41i= zILM&Bw#8FllE8Xq=s!{}v*}7wsf?@K^~)fkK5J6&jrt-j%z*>@l{;oIhD$b; z!p!#NcOI*}v?ZHPx)|V{3WpM{+Q*G@Iwa%HL@75>0%L8`363*2Pmbgqg@&-nWWihs z(=0W8@hr6?nFTMF=MT`Wxjs7w0L59Fh$j>6s-hFsRbXQlYQsZTn|Nh`AIE;67g&jD z`5Rw+e^6I{TFycKZYg|P$OsytMXp?Ge+w)TSG_fKy6YB99V2qu;TDJ>3?EgQ@feV~ zR`uX}SQ4~C1TWRep?ID9$r_!)*|9z6{6dalDdL-JSz&Uh2|YDcklYvWcnNXBYHDIVHVkF=7#K&K08YPqWmUsaIRyYBq1)Vt;2IUqe``#+TgF z>OiCR2d4g4x(zuUt+Rl(JlqzV@^teFFT}jI;EL;EToH!E!ks6>J<_@8ZTwd0L;CLS zStykk;Fn6-*$G_AESqupFqPkLbKv1o`b~uDfMt=R>0@Fyyt%o~MiOZ@%}BIZ6j9UW z`?!zmgiZs?v-?mrYq_iEk88<2Q#Key7DV$#@mCXQjlm2FwwZ}`%O5<|)zk~SDHfE2 zUQ~akIC9>0oR7mMr-}_QMDu((9f)FO3^9bgM@o?@5IuQfejD+IM*Ox3v{&ud)V|UZ z1dE3@l`8kNuSmsQZhc^I5vq=doR&=fKt)v2LVaxj(ABS(?*HZ7&%;UV4LBZ<;eNjS ze8_lGNY#+EB&~WH2(e5V?t_PMU`Xx+#pD*@I1v_?oj^^3#%^?C_?wwrt=K$ZCqpo; zgMdOz7iy>hHl+&S>T>_(4<#>f_K{t@6#68y$cnMPFgS#HfLyC~hkl%AAv=FKR2RmG z4SQ9RkCY($D`a!1p(~%ATMX^ij8S-Q4LYeX>%D4L^j<0!o1@0Z6^lzyKRGoA7l{|f;jx1dR4=_yY1N5P))UhL&unf>XFy=oe)CQ)c)|H{6&%ygof^Um2p+MSma&V zM{$$VJkP#pl)&>we7^lsPtJ5_-8Bv3+cnmasvqK<-=}7qRu@F4sU4@k7`}N-E6`FFlk?9qnaUI%A*D;iDU-do#wX+14tYU@; zmZ8$OhZLvSLa<`N{0XS{&%r(6FBQww*@IaZ1Y!lN`9EFjYtOV#uBod#X+kVpbP}Tk zxK0MYdvYZ*nQ?rCijVTCh)4!z<>lVRRoZmgo^g2`fqfmoBOGg%U zUQoC{bSY5hWvEJY{sgmrphd4zrO$aLU`d@PZ)=i=Rr}7$f0!m-knEcHiT~U;V*O#0 zJmAa0jZ0<-314I53fTH?sA|IPVA;~K4@tLZC;z9JZ%|HQIzNmcX#_bw&t!@cHhM@^(OVMs&}Eo`EFJJrl&PMDRphl+c+%2GMJ~-RaZKY)fYr1{Uy_ zPf0P^(X%)2+R<|NNm2ho|G64?Lqu^^)(NU2&pxFa8x@De zf~b_usjYbL@WR^j$esLf{3|;ulhIIhOIf??C0PrBHL_x?3$S5IBf+#{Y%5X-mj^u& zq-(ENZYZS?0P*TNAsh*mY0MAuji~?#IxS4!(Nd`hUEw%{=oxGgRFo3>66)tPjx)Jm zT>L*-hLJ~0WdtB7!f=#;EiG;Utp_}VmdPWp#^~SGlq12+*871vgWN(Qkrz{*yACAg z!4VBNLCt!7hzGis(QcQCFT*qo1BHm*xX+yk-(tcf7Oh+ zgBi?UZpRmLRfR4uZ9Bv*HfV5<;3Opf7M7)#jLrWXTRRy=3mq}9@4o_uJ;3Z-<(_?d z*!7TTe`yp(p`{h;A1rn}bL7QBJF{OF=Ec}0f}b}h=-Wd`l*74UqQtk`-}Oy2r(DX8 zu;EBgQNsUYY6!cj2R!rpNLjd9AU2zQ?R+pEH7<}5e?iRUsFkfT1fAxlS?7WzCI(I9 z!?qLw`7&KpK=Zp`4h^5a2o8tLU8e9Z5G#hA)2Wcb?xdMj654ChWU90FY5r`{yoD{Z z@8csd`f*Lu2|e9fRSzysKde%J*#twS5Q7_~3?|Ww_Dr0ty_Sd|v^siD7r`X|uF2Lw z#wMU=l|TWY78k^!&j6hlXy63@Lr!1lfL6c&`AUuyFd26n2wyKB2>(Q^hE#Azlj2EY z)*1oI8UU&8?Yx}A9763&S|UbzB+`GEDbj!|t1s~$z$u0%A%9rR^4w>IGjk#v(kvJ( zIfcsr7h&2 zdW-T*8;AN&GI#$aJcp5q-)lN^0RHS$C`3u#0L3W!R(amwp})uZgCIRRQ+l_Yej*4W zY-VxsX6QtE3t*HfSk|+1F$(C;juC0VhZ(=Qbe|Pa9@aQYj^Tp#3qsVIKa+ly#iZa1 z8tGnD*)A=Vb=EgPXhH}+sk<0M5jx^Oat)phO%h&D#_l8BzSF|k!<(?+amcY*9nb1EO?Pz5R5cfNL2)uvCjrPYb(Di;H6lIikxlENG#%# z8xL!N5LkO81(>(Qu|yE4OM535_p>rcC$8z&{*(Y4k59r>>q1A%2_LvPh+TLLcE}es z9POm*JSWo7)S|GmuL%LSa<2)AXDQTqJF48_Glm}fM1#Xi)lu8Xo_tgnrCaWv#iBBL zE`C)MI)(i-fHWVNTL?Z5%MIEr#JaL~g;RGHHd~I6VbTx%_{e)(6Xi;b{Ysb*XX&YW zb=Xye*SyDf58wJF!WZNBPeJ+L#o?oEIPn)M0Kl3R008;_Q8#`UhcX7v-+w~zuio&2 z`%P(0Jmb4JoH1y2J&$6D+h|>bj*B#s{`I4VV~r$LQbA+IG6+oLBH0)wbKh#(P<0}zC>wJ}uxv1XABz+9{Jk=2#1t5F4BJ^ptVnnhy(;EcbbG? z2CL%Q2o-=EB+-BjF47oq)?oY92v>uFN2?Ij{&3&W0?@XTa{9?<1h5bYRL$L#9rujh zq4Kne{|DHmu;n=!=j{f;)1i&_e;? zJP-mF#T)0ax?5s9r(My}37l<=aYC$i0sUSrmG@v3#5N;+zaWn_f@$nA%#D)L=r0F4 zz}WVc@bM6&U*gF6ZkBm7?Y&(vR4c*^Asi@A%OtB2JYbY!yaNy{f!HK)0g1QNRq$Ni zFd&GYo+G^Y!ziwB^=EY)?OIBS{O$iAWAE5qYq&+(#zXteak()md~n^mu@7>*OUai`;vv|st!+sUSkn1bY%603z1US#Nlkc$typL5Erxk-I;&AA!HN)SS?qwC! z5qLu6G`uZYaoOjFs0Q_6>%6t5p#A;3f8A2n1ZQ6qIBt9FTvSdL{Xr1ZGbo5Vv21gV zsR@YiDzEqQE%)EFuUyNW75u%T(b{Q~YhKw>6~|3bIYltcdC_9+U$RH=3IGZULB0E0 zv794J(0DR8+(P0Ww3f=AU!Re>k_542Wxnsqy?a>w-u*=z_hWd2=Cgs%1JbZh5!0bm z$T9>Q0&U~@iKf@}&?Arz6BtTp!q#eoBio1qTO|otU?3X{)w@W zwkz2o!y3y+J$rLLgGYyJkV zosG@!x!PRYmdC5N{GZFWS^ZS@DAh}^qHhU?&wCIJ#rE=>?002~+G8cnYus~ZU)ku^ zyr?EuxRxL!%CIULIp%E)dx2OdK3Ia7OKXEjA!gHNsJjrZK`W3|GMH+UmMHsvySnNN zop3HEWGY?+AR7Cu`(gM1+f?%55Q0+=El{K<$jmbcjg*keDk-JX{UUT;PvElmLwb`ihV+A*pXt z?|H%Ej6}^1;1D1jL|#tAAU(f!k3dB~K~zVr!nGr!(}3G0;-5YGl_VZ&JjKRRZjJv% z@qkfLSCj@2|KJzod2p@s#80~%`q!E5omuq-N?vqZTzWougyMn^b%A5HREP(Ylt zJ|Qs_HzLcGwUgqBwFfFL-vRC12(Fmb&t9WX8dhe1H+Bj15?UR?n@fb`9jw65%@W*E zh!%<${;Qrc@QQ;$^v;GGa5zs6xekYIT)gh}G31L^h(SS5%n32q*a6bfLh+wIRGFSI}QmRj7{PqEY z5w+G^>g_|EJUuXfw~9Z<+Eq*Hg*jm~P?wTYOf2iLko@9<1(rep{zZftn=mt8@j{mL zKI$~a-4-R%QPC??s~?cqj4vLXFGG;`H-s7yaVui6lm!cHc>5OY=aE@nUU~vq|LBI# zM4l#V$`2zgk!7WbB+&Dq93ts$OJN9XF6j;GTJ(!Uiw`KD89JXF2#ht36(5XRi3f7y zAVgm%%DD-Y#(T!tz{#f&kEAPikdx};nfZw@Y`WL-YMRsU()6y3QAdtefM0_Jesvra zagP^OCvY=-~ zg28ycZ<(Ayt6x=4vmiBL!2v$Vcu8o59z@)D%miQ9)Quh7EF6=Jm(R6UUeVSke`QsN;}HeXlzsQD8H_EQ?U<= z)V(z-&UYS$YLudMjnd8;n#)MbAYJyN@t#VRzEO!Oua+WB+GhRG)@U1L^OJ{8e8WPi z+^|6Z%4WRzx}tE(fF`9uRjT6)^MmM^&Qa7ImcjeTTE!8>DU(C7(eBX;Xrn;)z4xLQ}DyfY0`rweaKR z``@EXT(!^ZpIW$Og0M%n)J>_e`)wwnJa6Nt zb-rpc4o_j(5`Y;y4r)a8ri>60)`kOJkWn%+@yUR}82WuMGBqhQ$5EZ5pZ3cAL>_0c zW(dCKmtG?Rno;<$#rY*nP_zaVvhh^|=!eN-1T#%Ok4-eF|B=!w#X+4viA$kd!RGhw z|J>h$)zLd$qebb4iQMDL{+-%P4vJDgiorqMBRO}o&IV^~NgRwps! z_hc5_cAUmbMBeFMPBX95-Xwk=dRU$;h4)JP^F^CH13$qk9~Ja%8=KOqew_Hcg&Zl1 z4$r2@a}rrUjcf`WJjPR~b{e??94+q||3_O*mdXxaSwS1_i-*^)@37);;Ool}o<58V z(^ALjKc@En1VBj@i-Fo57;VyAu#Py^Mk8p?flsFo)T~-_^ zA`QgfG9cU(i%L!x57-E)U?UF^Z$jYQ*C^edp@d53Qybs)nK=Gz zeXe~^=X)A?bi9tw8RfSr<+qIDvj4U%6FPbNiAvk# zluq^gB)%GaTH9q^Dj}{(2Q6R&tq|Uk!WtJW3;-Hu6B`9N- zNyG!i^1Ju@bOEKA4%f#NL`GHON<*!z8SIxN1@+TtvXr}5Up8^wmqHBA;9x@2>;ICqz zwNyxy7OLO~0TgK2>}sY{My_hA(y8G&-V_2kv}---55D0WIoj1Z+FGi1LnJa6x*J#J z*A~-8h|>C;fIMr6`b1M19ekdr?1q-Dah}^A_Gdr}9d^?B(S3jiV(NYSS|NQI!7B|# zHyO}=Px>l&E%mNPgKM8l-?x%_w!svI{QMF2(W3D1l$v6GM9k_aY4ETicE19%K-o-Ijkd)#I@=kJ#9MPkSs@1? zg&dq5rCyU>dJ6;9?o>I%_`yJG@UEj?v7tm~NGrf`R}zVWkus6kj+mG@>>|Zoxxc0ulWh)Lx$|*dJL6?G9l$yI%95>F7pE#Fyyz zFCXjE<*@0zG;Ad4TD1A~>ocToXlhqAU=d9;88rR;D1^)Nc!>RIm8_#YZ|WHTjR+|C zd1bfo#p;Ya*$`F4IiQ(%+3DNDNJ^~-Ka=N!4J7)0-Ux+RxropcB2) zVU~SLsbdPA&)@=6SGw6X^H*oz!VEax?vY{yAaDdHU(U6F>&LAW>vLZb&^tTMjD#1I ztwr$~uDk{|{hK;pv?@O8*wL32-*H>tgE7P2ApH$(lS-rWg-|1B#W2BIiyeWm2*`&aGg2t71+z1DiRT%cL+J2DRa_kUoy!DT3(zf0;PD9Ue&k| z`KzNsd@zhph&0j!WuPZraF!>*AIyNY2p(qtG=DAx(}{!no>%p$#DR;9a_oq+a=wvc zAJ^cC^9|wV({J3c=c#T4=%p#GlB4Ylm@y!v_Sk}G483n==!6;3mX{bNwOh0S^O!(= zqD7q;R6Tzzo1MS>tJU!crvZ?O7r0zWl}2otU+nd=)GXqGa^1>xVHE)C`$H;N_i)b+d&1GmGlN1G#m_W?)#A?` z0bA=(a zBcXx2-3VNr28pNgMjM0_=cafZLoF(7j=YregW^dnEd zr2G#gld7kZ9UAE)W6mdSQ=7YeSJkXzR&R)*vT|lb^oyM`id}L3$IL}yDW+tcdDPVJ zr|0bA=&-|Nq5(3rn;yZbs0r~;YA;(;jmP+i2aZ>%Ib}3)XGhh+2p`vV&oQOxvM%bx zH@Mp~mVy``Cft#8ju(uh7lX2k4Zyo+CUQs^m&eUT<5HdTD;=%z2~|B!ieFNMf}MlT zSL9*2wmq*>rf0jX|9qE94VSvQFaWQvhd(vl4LurkgBy5D(26Nx_xf{JQ3I*))A9K( z5C^v~zL=pZ6k0a)W2jJVm7akPY1ZVl8mc&yPfL(>bbTI8sm=Wt@}gK^dlI^wnsr94 zVcZb9mG+lABUNzw%A+VO!>1>=4#KAqiQcMuiZmrTArA@}R%dS4w3lBQj8cK?Zq4oQ ztzv8F+j}7yT(cvMIeeDmBYffJTb;`n)@jD;kjlAAGT{Bb?SV%T$c@;!q&_qWw|Um( zdnOo|G5_b%Vn>Ig(5*Wq^2K1k7iQv%@o9q#5{Iu4oAY7JJy2d&1V3HSKtL-4#5i-7 ztlKhq_7IwlIlAj0f5P4WQ9coeja#mR1OTA>tsGJR|JWfbnL4}LxcnCvd;CAk)i?T% zhBOG=sivG=Z-05Pw2Exeno5#XwtY5nBZ;G}qexy8{?fhgdEZPY5Rq`XqgH0no3c+N*%9`k={9=$xVyM~XYqYP<`a9#ek&!F!V%JI zqF^UVVud+lo;C^Ro2G?J%AoH+*Bl>zk@!vyhMNkKKPr1IT|UDR>5!Y^L;!hriKw9@ zZYDDekvV79n$ELE)WHmPj}K~2OiBLcsg4qcG9Jq24i$MbLz*UXEs_nY+j%mYGz0N3 zxyc|!HAw`z!49q_VH+W;W>pOorUDk}Rl@-K5havYaUk-jBv}mpd7jAN1a`_Tk3A{0 z^wB@jH*v0( z!l#K4>P*!ZUd{H9(bv;B<))w=NLy0fZBOnS%}S+W5gvIIW|O? zJPe<6oLJazl`}WdAHp^ksIjyHeacX)^}vbm#d%@#4axcX*okhZdLnP9~%wmQmiv z2GmwOOm>=8Ghi+*TA>$%aF2s5mxW=!*~bdx0QafcoHALerYYb#v5>#K-XK?mGy=Ah z6+PP;T@R9l>@@*J8;vORWcW0dq)p!BL6%OW^%-YErh2a?NyZ8_2h#aQa?k#pF^T**|EI z{+A@JPj*U(MRX5HJGma?{2zWSIC(pX^`i%Q)Z1dJCnoBSe&DjEvCl^&`EvB*?$#qa zuh-+@@m5>9JspL{k%_gJ{na}|C5@)FJvdj7`JPjWcDh!(MM<3ZJKLuvh6MSjg9gVG#=7<8O;@nzfx0!5OS zgcaZSb%X>cNMbMlOghmJN@0ZVQPP+g#e|QzVGS70bcIsQlR}wZg~mJtbL8?kp(?eU zhs21gNhU}KTquPko@znGS_Ej}f@q;32r9-r<(LA(IdzKE45);-$HhF4N#3sQMKqjZ zQ5U+rSY#6AD0`lCqhmCaGASvvr@=R|8vw;L3|O_*>qQm$=_|VMY?d{k+x#3qHFsS` zYa@_Q(2W$*#A_gZq-`6|th#CFeo|8!gd`kO2H~nCM#TZ_G`4iRR?(FJB&@sBBnB0Y z>pKE^_iO6x1i(MJk|{7vGR{ILUtR+eV_Db6P1he&`{xs2KC4v^_Uww1MW}OSC0x0W zhEejNL%2HuIuLNqwmPDrZRj0*hL=$c|L5$gWm14)SYk7ACpzQ8Do(PzNh0`}TIv=5 zxpk~Xxn^YJ_@=VroL$t{6y-Ro=*s&yflU4)*0z1onkb&$&(g<9)TR7L(R6K^5a zevvS~bc3xb>CF^5)cRG){>054YEPt3J3_VgR1$v*I=|1^im7;nWb4;BR?2(3A0F^* zR26uz$4-)ZC7TFtS@!R&1F^P885KKOE$bgKu$L;PvER07oLXcr>Y%Xej&vLx1!yW( z)l3)Q+QnAY|FR`nN@q3eJeT=CJimawp?}mI3Z$6raDUnEF8iI=O?P$K=GIU>$FOlh zmuBss2z?z}f2~47AdgPMLTOB=f3U?#`jsdsE+M5Ws*Fff zoPzhyEn9Rd7{lxlyJxVDE&EDT$8VN>jqEsM62Y#x7_=jlRsBh9=R9LMzn(B|(!+IC zvTjkm5W&7b0DgV5&V5gxOjzQt`y1!>Er+>^?XAj1KS*O(mj&^h9AW&_1u;ubBu)GmkcFwKg6w3&C62sM@UjQq-oYvABy(bfs zuCWzaHOkOEhqXE7e7_aOII$IDq(aVv=7XyshnE5nJa-$Zj{K^Pn=Cv6naE8p+)hUG1P9A>8@`{8a8U0TW+V%`XM zL2k3V2JP=bf!xy`%0;Qn7r*rEZA@U_)yd7mF2=am5l}j<=zv_Y;hwyY-_Dpe-8G;C`G)4IL(J<1;T{%zl^4uK_2 zuiDgB19WuVUT&L5r)KO#b4yBknMbB((3Yf@M5a#7b&#(9EBE#e=U>>+zuPFzAJ>;? zN=0}`^6W*cEb-$=b|m9=px!6c8n&jG>hN?LVzd+G0ez2tShOn&E1N zzX6?9^hqW%r<)>$JUWz#xJ9UHOt@g4bii1olEE7Wg!>RWeJ1TAi%xLG+*+g!3yzCO zv6pF2ehyc-*<4$sD>BiqWRU{Gp=-iLI{~_8Hnz*+c}xWi%iKjK<3zYQ5KU76@tY}2 ztD)IdgBCVRgh*$mG4y!VK%1~RP`U=T2>wFd*e?Vs4hG4COw?#hbD|er!|$Yma#PZX z(k&^9YQpq8V6(#nmogS7^J!7#nBd?LK+fX=81h6#laZ%woz5|44{$ndxUdj~{}>}G z(a5bP!rWwhMG_91@0qKxM4&o?m1mE`9RcG!bs3@GL~Ya<{PeZm>NV>5=`Q@h-Tdil565w2kV*DslA`>j>YSnxh3Kxxe72+V_dGw4jX!@A!G`7ZI+FWfRx zYB$N#YzT+nWg`8|sMycq^EkHNEBnhjAy541kagSX)0zHH6EDr@EAd7!o*!SrF*pXiBd)<;T9s%wa@SbZoTt~2-|DrSaEw>Bby(Pm_<*i-^U&N;&_}`qQCc#me zFm#vWn67k<#<`u|OMe9?dL4g&Oc%gJw%Du2TQ_oFZ<*o=50)pKpiP-w=N`K~xBCAI z0|E@3>T(0+cT0C}sXJcAZ~n@gUX3^~oo)1TWgWbbtIR>yyj>&1`r!gF%Xd1&2s=~2Fn4^(*o`k3J%2kzvf9SM#O z5Q*%;m+w&*w2b>Y>%oJ`2xQxdvkSmrVI{vl)UW4hS}+afGjtEG7I3eydpNli^#c}&_<840g>ft^fW2ZA`Ih0>F2ChTb;&Ut18gPovadFW&!|`7|pt5T|b}-bYkH14Ew`uxVvB)3ie%8QU&upj-j;EL|cQy3n zT)!H_&tT^IWZka`Hg>0;Q?AYqZ6_ZyRa6pLX41xV%V3~Su`v@mr_EAu+xo20G)4t? zf1BPy7nc|`G4j$L9D8LjA(}cE12W}CW5P>P0!M9J)J4qu9htWawV;G{!#Ub!KTJD; zh6&WT{Dydhrq0GRV;5l~o%dMXIYs{*$oju+Fm;sr7y zH(~-d{Z+%pqn;Mn7zl%5HZ*{7}cdp<1vqpxz-{VMX8uDqP*ecH=c!e zat`xLta%PugU~ihBYiIeZh(V{60Gzo6N6h-mA|+L$&NvxFB^b(U=v;tF~6lLUD&?g*2rRqVVTEKE`ieoU3Kq>qe6-5aa#!B!}{m zKaVXCr8+hLkVX{qbP5XL?nn8)Vdte{rCR>p8e2JX&lD|Qf@p|Ss~e4?pFhOT8aBwB@Fp(Uryprks0tFz_X#{TSso%Ag)Bw;;vC6acyJtnVBj!wj#eum}7bI8C^%&A2LroZd(*T7qIWo8qS*4WdQ z!>2(I_Vud#&OA=PEQKk<(}~^~ZydN6mAd7c1r@tiK{tMZH$+|4(&{hN?+;vkJtW-J z4D(OjiX%eg4;uEL*^L?rW;r$+C&tlZm=4=lw%L42+uHL<8WWcQf%#J^{(WiBIxXtd zWjiugk~HhXZ?&!suJt{6d-Yk?EiNJt?OXYApVn4)6}n8>gi-X{q}QX{irtpzNWI^iIrvi?+X~7Lqg*c(xCo@i8ZS`i~J_~<&r^kYpAGWC*bYJ zl*?6_yN|M#?c&?F0L7XQ8>JGezzzhXx+%`x<(0eFE)}L%RZke2p>%>F44RsuEWP)wT5ectFKjFC3s_=xIH)@4<*HaB>UY9jm8CYqk@ z$`F32KV&4&g+JlZy@iW$;d;F_LA&oU0(o);tkT({KC*qVZ=mG%>8TIeoQAL27hS3T z`p_?&Zv^0IBVm0HPvBmuokk)N}6%nxsCm@SjU*J3Wxv30p^F+gCH#~aOK za1(=jmoz_K4fW_e-HgG(z+Tegss)1PYUQe7rXPtZTGYFiZI}C0#R!4N*}ly()KIRO9)zDe^CI^=t!8X&7DPX`k$U z{1&RI5wd;@IW|>C_ACUf>J>JAou}QeQbUG+rM~D%7?XI(9jxbB<&;65#BGO@**+oT zN;vt17dB^*++v$N1`R9HE}*%;%`i?0`xU286r zCCC_#l7{{{Q`skV24Rq8`pwi+WBeF{uVv8xw=`bx53U4F!N)>!LN%$}fC zUf#JEJm3u3>OE+7ZJaWARY)4L@U`q5qssIJy}|$QQC(C$rWN`(s$cygg8n}?w8}0{ zriQkXb`GxpV?*1c`HR04L;DZ@vP&#b3X*uk5|}2Z9fDR7620jNwbUb+$YE@8+(_2( zkB^4qFaMJF-)w@Hh+UU}JLr1Zc;*MkzwNPkYStcg_beH=H6?0R-Ltd_ndzC#5YNyCUSGg%vsl$0&`k&#}ac#J(GLe-wkakGnKQfqf`fF zb7dNLn`2dzcviMeruUz?Xwdn@zA_q($;Iivo;;|jc#V+MxwMBx^UPYNCxm$iMH&@A zeJn>Lk(y)YxU#Zb(VofcqaSIV9L{CAtuHlG6VueqWoBU`rh5IwLIXNzHFh(={7wXo z2tG>60E+O`e{+z=jTy0jk+5}|3S6=(-OHMwOH=i>fwQzaRNDL3H6gw~*v#yF6 zcEma9kkiKViH68-DNkIYak&PWx6An6+>V%U%vfwBNW*>>(Piu^({Dafb0A`CjMn`1 z(FIAtSP`YV+0DC0&tB=hZpQ|<>&p+QUCAJgr?dY`3xWq=chC-<&@9`29u zj&QsepC3 zwBTrF-e%66GbMM=jBlIg<8rZTk?L$EpdH~X8<{Md=>}JN$g5!;BU}>H$ zg7Yu@8jcC?knZCm^+Ve25Z65Q7k>RO{5P?q_vvTl#vlGO6j^9s?|l&mJb1Ta`9yFF zru+JA#y=Q!-%I2_`+G_Z`qPO8su*HEgczEx{>57d-IBJ$dBWX($nL>6CigXSSqjnZGq!P z=Ibw_p1iQa00m+8_+p3Q`tIj}>9XK52#BJ5M~D$a>2>?>qiC(~f%{dNdkb3*OxGU= z4*V|MG~_UXYiPg&W$@{Mq9__*^aK5?zX}{=#{tD<^y=iK3b@_CML&t56N-zl4p0q% z|7$@!ej#X`;`J2d@-CtCyYz=HqT-%ai^dq6A*7fY6Eyt_iXe&%eSrfDDdF4U1~d?Ouev*36ZGR17l_^9ucOAdST7YkLquW ziI%J|%c`3!zJMfmfk)f$J%o5|^SiD3cnZ_^@_W2oUmjA-9&>``sNdC&hNn=s33r#G zWG^=^FJ=qxxtHAEnd<}H(CvH5a~UX)F=ih+7f469A0x!5RUOh#Hz1Tu1C%Rc(d?&1 zAz0@Vq_z^QtHrQr4&)Nhsd6vK>_N%;QqEO`re^{`QCD-M6%#a-+cD5=;;&`8ZRU*7 zph0oucoMx|7`5lr2Jka;jT4Jac1<{WV5fvQtbBi~0hj|x9yN0*GT{kedyLuJo8@M7 zBksi=uKhAkY@7fJy+&3f3Y5aiLT$%BaVIeya8}DMRmiZSzaJovIJqhU^k|usw`esx zRz&X>QUS?D1L)g)%G@+3_w}7d?Fp(W;~;++tVjRSF<<6L>YNmL8+uyLCuO$he2IoF z42&y?+N<$Lr8|3t47LoafIH`^V+<=-0)M8btCA!Rc!d+@UCk|gA$zMSjTZ@NCItM1 zVpN%@v83szv3vhH5PzXby{H=0(d@3;KVbR8z+6yvV`@VN0)mbwi%#`%o(%4*gy`m` zDUFg(qJVf~5(GY-LyawrIaW^_>fg+VV8LR&a*1&|M$$WGG5v_z#JoU*m=g>&J&iGW zF_LicK(G{`DlJIDJGQ}a!l)IIo=!dM;AVmCI)>OgQ?Z^rt7o|pS4>;|*hIlRg%R>i zr!37!7P-*o10?;&B$3XhvZk3(9UjS?q|~Mr5v*Dvq@!pRb8Ol~vcPo~mGmGvwI7q) zVL3Q*`80^2qF)kUNr~h1P1jE zG>*^Szwz;0O`GHU{u1fCtQMrG4gLmH$n{?BhDh6B#PV|3Z)xjT$m*f0TlO#IOou7Q z@Qc-ey*LNVU1Nh*sFncxPQj`C`(bvpWIcL}9fMVS<2g?3et2KsDA~~oFnM`(1v@+2 zncB+>5Tb{1GM`L&rh{G5C@6g=D;O?wDK?H#m~$5<(m{U=e%qFi8*{$%HsQp2lunUFpr5%Z8*;U)h3x#?OeDZf3r-u& zqnTITWJyDhN)^(2KdffE9pu$6&j1<6GzCRg>eO*@s#}4rgR14k5}V&GodBG3hQ*v2 z$YIF!x6>bED{&O584n?N1$yQ4iYlml6?#)p3H6Mz#i+kTbz4ESM>=*?AlqNo#ZQ5t)*RgU-Dhk)JV3biiXt7HzdFvGvLiK`d{{?mBC&9q~&gBc6b%a3f}*u zR{O_+tB!X}vfwc1(TvE3SE5W1uHpY16p^^}VYfhk1Q}XMq>fO?Au)rZ$NJn6v>@I{ zNrVg5;DF(if0hC>vR0%y+Zd!gYusSFsIx+wS{W&`d)R6o1>|Fir{T&JtCw%fJZ|lf zlK(T-h2B-BwbC+cE5{8v2TwjmUS94NG@C2g%`7&BuBeP`HJNx%D4>{4^Kd|1Gn$ zQqdJh53m;pP*cUP>mbk5OrK0Ma>Lw_T=JY-y=K^kP`5Nydy>ACnk`=+7YC=WfZcz{ zS%98GQ{uq}A!?<28-ms{W5&d=M3`METL#tTB5yEl#@p(-pt(y_GQ62CH#aB82idS- zRg_BVwNpedFZr1N_CID+q4%39;}s|c|8eErcvhkPy7Ew}LW^)o?2%Hlz)|D0xqJV_! zLl0{M+rn8@+1+cYrHZ@7();ETH#tFY3<{be? z$(%lw0Cv~6ui}nb#ttZ>s3Ae8OHsZ9Uz|{O!M)q1+dgkbFu(W6Zbkh3e@8#gIB$+I z9SlYLUOX_Le8&B(4`P!0V{o9wyAF%+V(D_ckl-%Y z;yu(c9_RxM61!XN!33CuWUvT}#f|8sg7!>LL|F1gju;;xn^(K=e|P7h>%REtat%WI zkM>@RL;h0RbNq4aXWMDY4-E(T zB6#qIEbs8X6r@YQ+mywK|I!O^k2oflr}w&T&yzyW&&D$b;=q@uyY!Fls?Ri0POJ1N3nu7FPw6r+j zYTH189X;CvbqP@$(lxv>hQ5_)2n=C9VU~ECN61DaWe_rx4fq2Oz{bzV{m4PF6l%UJoxncYb5; zlwLnCKUay1{m5T)0UnJ&yDkB|F&=t<+t-lWI{IC%#_*2%LvZ-6;^lT`8 z9)xO>^|0>oNsY88%REcvxYS19zi4dP{GwNC%Gzr5Au9geau^bQB(&(>|nVMVxBj}`={fn;8!=*lPg`tX}X zeDXf>j4I8v8q$sBPD}pf8+=dfq#vylKhllnk^^x5x2kDIksENn-1>^2ca1mOxvPs~ z27&a=%BZ?b$#p^OL_*bsL|iL<0^mCJS@z0loEAKWOJ=3P6%{wg{AcXRQrdD>WABU^lW zW*t;VgwkC~CqrXqiEQ8~<$BFW>Q(txzAIv|s%#FmM6{MvJ_fg#sy{;wOQp6eddjLE zWna(x^8fn|3Tr+cN#l23+QI<<(Es1&rG=rBq4Do?v9OJyv-AHuI{zz{XG8eT(|2S5 zo3>QtoLHqlhprlTDw;{;k(5(|5gwIrnN~%Em2Aa^`MC9tOZrSI+v2kUN@^gv?KsUN zj$bR4;Ex2C?DT0EQ7Un^yj0q1`PA7mdOV+5Sl9>c`GD^w_7a@XNixn+s4;&QOGz4~ zN);ug?MyT+brCFop?rC8Q>Vw5erBkz%*R{Wn3$Moh9K^tVp1GhC3AYniIE+FD6KK+ zNXy(I5@S+U)vfwKwI^3J`BOzw8AR1XrEF<-qe?g_o^|e|sQE|n8RsIS&r6kgQpnt@ zOzCiusH`F7SZJkX+CuZ9Ws;%dv}lwbGKXgkTa`zlDq5y7@nF;qS~I_GS?-$rifXYr zPOXaBMo*QMs0#FqsiA$%TF*-KSHconS6C5>TUCVf>s@=aA>t_kEw`jw7D~&NG1qqr zoa5EyqKjbD4&3_@2A9+Rb+DYfv?Peqb}qvvpvI;qp%tZ-B6+qX@0Gwt)Asu@=%(y# zoN!DKd4~!s@HrMlvFKkD6K?yWREw%HJ9z%V64fduM?8o^^-7+)3Otz87WU~0QMDA= z#!{E?@@``8NbArG8vZ)eWBBy_LQ?S8Tbp_uFlgSms(TvRU%zR2k%Q}ivPk1^jpQ_e z;Ki4uNmp`!l3~!6s;V>L~T;bTjCpBui8nMbUw;2pl+}URIHuW?I`uDm#A66eR zKjeP0n8W$}a3s=RZd`5z*^&j)C|)32HvHE*F86l}`*86gxP#1YEIJ8_KIdWM{iO^J zx_|3H+@K|c3lcvJ!moivQpOI0BoY3?5M?P8{9$%v-FjO%s1V=NZqV>XjP3~Nys;zX ze%RSJhA=IhBloO$#0rq@#V^YUAIqON2})+YE&eB%kHcJ z?qRNHAE;03!ic?o!M{NDK)tM51tz2+yhwqmJW;k$1KJMGwlh`dT`H4`=U2H4M`DZx zZ1;N^h|SMU?oKC_;;7l#QBehuoB72(U&E@^e%m3(5f9S70^j3Cc7rE-+ z_f)|y+^~0WtDW|R-QB>nngt8Vcpe59rTD#!LdXx`{z{Dn&B(OOr=y5V;f2PkOS;>~ zJ^g&SIlwzq?y!=2*#bA)s)w?=2h01`2D{k~a2;N3E)uJJA%dlRCHF-(jAlq6olU7D ztJ!!x*8X@92ZMg59mJ)}?Jl2uOm3k$87#Me2`_x17kDA$0$%q(H!ambSK;&NeYifL z`d5)c=K%=^0Yu8^%YS}HLBQJ1#N5jAf7D6w+-jNe>&vh9Ep0?)Sz^Z+O06mE-@3z) z;Qd$lEGp87m==?eN-FfkgO=1cUh8bCb-OjIcRC0g!niKyXRSXX>!YT}uXv&>;Vc@X zriEr1=W4`m^UQ~5_vgXE(-Uv*xSU}R2nZrW-1q%->By9(NYM@ohoE;SORM}DS<>sI zDiac&Mz;o!0{dfN3xw<)ZEdeK{MrhyY+GtK>;2 zN>q*zv3GOGFNHo54UdTK!_hOi6fF+)_Bq-qXwGD%*JTJOMI~EwrKBK+7H5Ox$l|Gk zB_LGq6sqEbb;hQ`hqx+dK@a`xr)C?E*z{DkW*yD_Mb;dBc(Sa#QJpnRh*Tj#)^q>n z_ql)ps$6)qCZ)I~E_KEs>bozhn4Jn~v4P^rj+05Z{+9{-YMsZT)4JH9X+85#Pb1!A z1uC=rpH>M&lztqe>bhLbh0F+!qihE48papicyCgf^0AltDX4@tFi=L_xEd9h7SdL8 ze~m2wL-q7@hd8*XBu7S0A2Y38!aNKdlWA61enQ7upq{{%YC6xHjrqGZ07qV61J0JARzjvYuy{)8&#X$OU7H3~N-7 z&*Yy#x=NzRCPeQxUQE~0^&9cQfJS^IPQ_z z7m7DNSirlW*m@fU83WjN7tIA5^)iS(G<#h^J)_1rK3IAk^uU2D2;In@3O1Dco{OQJ zVH@6V>MZYuZ;)Xz6TZ#bdW+P0Q58~5JTt9*L0%+ac#Te;Pk5+ZM7Nt$1<}|9*=$%3 z-@^MQiNikgE|{+&*f?#3re+3;3Bhb8`7CQENxPrIfsK`OT{Syf4BmBLR_qhuVfeu5 z1>xsgGK=GRPXMNF_(SJYqObNT7W@rAqCG->j1|nrGPQo|vWeXPaI6BYkm*u0?eC@EXRY$%jhbS+ELC`kUBzGpuiFa{Q zGn50k^%^(YdD0xuRNcn772tU=Nt?rJ(;^#Oc(#Suu{?@bSI3aZN;V4WdZ}ms@%&9W@hE_|)M>rSWjgvCW2x#aj|uyH)z}-B4|f3p zc`S?puSQj1a)#N2Qts;SkYEoCN<@31O&}`8!7IuzLnAyQJ z16Gn5SER!`_;P_lWjc?sYV$+7ZVRHV`Q={*lIsLmifk&~n`;iu*Fj{MC|<|(P3)nt z%g~ooN^CgYOPcA+JCS@@G<&0SUgB98av$jZC6AyfJ5jW5={9iI6^PUfS-j}05fST^33^^WiE{J?pRb4bU zkR>2_^2ruf+8NU2vjL5X(M5bYzaNc>Bkpfp;fwr=7Ro;bQdFD3ydw9A}LY1rlX|=6Xy9hcX`cF%0i#V=@J?28-u}MB@cDkrN zo4PYR+!e}@S)2m9hbw*Hfoaikysq!Vw~TUwKf1LTL!4c|Rm;XU$Wcb$?CBGk=FqnK zAXFDfQa`)Dz)xIe7bzybygD|oY902!2Ctgkq{G|kFMOz!6rfCmXjkf=qnl_g z2VbiGeP8_y!gf`wb%4bnnJm5mETJw>`yQv#^fltt_ma-?%H+k|AQM6n8GQB@sO{;Q zo0C$D;lksfc{-Um%Fo?ZQUIq@&NTF-5vrIRL-3E&85?}^FjYmOG*5A#Eo@~=ODAkW zQ7_UTSJuN=!=ToqITy4ddQ{(`UN@QKwGl0`q6M7JpYy!NV45ZeKByO&n+*`33r@&q zHz(qNn|^G`Api4rqJH$PYww7Kf>3u{32_?Ta`W`Mo z8qnk`1Z#dzu{tf4I=5;L-MhLO>?i<5N8snX$D54OZ?zrYU6@IWdlaPY+pCO zhkH=(MxyAUK|wp>^(TQt1^I!jl^0~05j(UBgLJ+Rpe9P+K6Gsq((S_dy2XAU_xtka zdE+x1@VNAe@{KiF1s3&k07Kv*MCTgLQ4ng}he{9`BF(Fw(S_D;Yup!Qz+3{PUuY~0iSa=Tb}M~maHGkhG*n_o`RqXy&dFdX_scI+jY26C-Pz4+sib8 z*6A>lJhLV4K+4d3;lMonFAQt6-kS(N3fZb3oX`tF0>H4lDQZNPm*N!qjBnVKbjcz0 zGyX*~&V;{HBgfjan#lt5Xosvc&lJy>d}tl}IM{-J=_0U>>Sy1`i_^o(7)AFKk6QZW#H~@#h2kJQ zS0HQ8%1tcUFutt^=N0Wo#}n5v>uOfP{n@be+RZMTZ=DI);oWYl3I&ZOF|(WLN;I7~ z?MfK6Y5XoFVb?;WqKfQ;-}dz)`HO>};sBqFxLyAD!?J@Mrq(Bv$94#+T;yN%_MVs1 zv!Nkf=$S)1>n08qYLC7V7;a%a*^a z`D>5^CMiiVJGAMPmisy`C3m k22#G#vFuUe`~0BTka%n4efYdJK37hqs-*6Vwi+ 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/lib/jaxb-api.jar.src.zip b/hrmsWeb/WEB-INF/lib/jaxb-api.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..333c084f05a9577ed3e56c128d45cc47f95354ff GIT binary patch literal 30959 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 Cjn97o literal 0 HcmV?d00001 diff --git a/hrmsWeb/WEB-INF/lib/struts.jar.src.zip b/hrmsWeb/WEB-INF/lib/struts.jar.src.zip new file mode 100644 index 0000000000000000000000000000000000000000..32ddefdb920cac31a09d743023b7cdc34567d36d GIT binary patch literal 308909 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

    Employee Transfer Application
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Employee Transfer Application screen allows the user to enter transfer applications into the system. Only approved applications are to be stored.
    Go Top
    Header Fields Description:
    Application NoUnique application no for transfer.
    Application DateDate of application for transfer
    Transfer TypeCan have two options =&gt; locational and sectional
    Employee NoEmployee No of the person submitting transfer application
    Office Note NoOffice reference no.
    Office Note DateThe date of issue of office note.
    From DesignationDesignation of the employee at the time of transfer application
    To DesignationDesignation at which the employee is to move at the time of transfer application.
    Reason for TransferReason for transfer of employee
    From SiteLocation of the employee getting transfer
    To Site (1)Preferred site to which transfer application is made. This field is enabled only if transfer type is locational.
    To Site (3)Preferred site to which transfer application is made. This field is enabled only if transfer type is locational.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmATDTransChrgRpt.html b/hrmsWeb/hrms/helpfile/HRMHrmATDTransChrgRpt.html new file mode 100644 index 0000000..22b5cdd --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmATDTransChrgRpt.html @@ -0,0 +1,7 @@ + +
    Transfer Charge Report
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    Once transfer order is approved for an employee the Transfer Charge Report screen is used to handover/takeover charge, update employee history, employee personal details, employee workgroup details etc.
    Go Top
    Header Fields Description:
    Transfer Order NoTransfer Order No. LOV from Transfer Order
    Employee NameEmployee name
    Transfer Order DateTransfer order date
    Charge CodeUnique Charge Code
    Charge TypeIt can be of two types =&gt; handover and takeover
    Charge StatusIt can be of the following types =&gt; Pending, Approved, Rejected.
    From DesignationDesignation of the employee before hand over /take over
    From SiteThe site before hand over/take over
    Hand Over/ Take Over DateDate on which hand over /take over is taking place
    To DesignationDesignation of the employee after hand over /take over
    To SiteThe site after hand over/take over
    Hand Over/Take Over To/FromName of the employee who will hand over/take over charge + +
    Forenoon/ AfternoonIndicates whether the deputation is applicable only for forenoon or afternoon or whole day.
    RemarksRemarks to be given if any
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclAppl.html b/hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclAppl.html new file mode 100644 index 0000000..b30d033 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclAppl.html @@ -0,0 +1,5 @@ + +
    Transfer Cancellation Application
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Transfer Cancellation Application screen allows the user to enter transfer cancellation applications into the system. Only approved applications are to be stored.
    Go Top
    Header Fields Description:
    Application NoUnique application no for transfer cancellation.
    Application DateDate of application for transfer cancellation
    Employee No.Employee No of the person submitting transfer cancellation application
    Office Note NoOffice reference no.
    Office Note DateThe date of issue of office note.
    ReasonReason for cancellation.
    Transfer Order NoTransfer Order No which is to be cancelled
    Transfer Order TypeTransfer Order type, which is to be cancelled.
    Transfer Order DateTransfer Order Date.
    From SiteSite from which employee was getting transferred.
    To SiteSite to which employee was getting transferred.
    Transfer Effective DateScheduled Transfer effective date
    From DesignationDesignation of the applicant before transfer
    To DesignationDesignation of the applicant after transfer
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclOrderForSingleEmp.html b/hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclOrderForSingleEmp.html new file mode 100644 index 0000000..b00d577 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmATDTransCnclOrderForSingleEmp.html @@ -0,0 +1,5 @@ + +
    Transfer Cancellation Order
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Transfer Cancellation Order screen allows the user to enter transfer cancellation orders into the system. Only approved transfer cancellation orders are to be stored.
    Go Top
    Header Fields Description:
    Application NoUnique Transfer Cancellation Application No. LOV from Transfer Application
    Application DateDate of transfer application.
    Employee NameName of the employee.
    Transfer Order NoUnique Transfer Order No.
    Transfer Order DateTransfer Order Date
    Transfer Effect DateDate from which transfer will take effect
    Cancel Order NoUnique cancel order no.
    Cancel Order DateTransfer Cancel order date
    Status- Current status of the cancel order. Contains the following options =&gt; Pending, Approved, Rejected.
    Approved ByThe authorized approver of the Promotion
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmATDTransOrderForSingleEmp.html b/hrmsWeb/hrms/helpfile/HRMHrmATDTransOrderForSingleEmp.html new file mode 100644 index 0000000..82418ca --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmATDTransOrderForSingleEmp.html @@ -0,0 +1,5 @@ + +
    Transfer Order
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Transfer Order screen allows the user to enter transfer orders into the system. Only approved transfer orders are to be stored.
    Go Top
    Header Fields Description:
    Transfer Order NoUnique Transfer Order No
    Transfer Order DateDate of the Transfer Order
    Order TypeTransfer order type. Can have the following options =&gt; locational and sectional.
    StatusCurrent status of the transfer order.
    Application NoReference Application no. LOV from Transfer application
    Employee NameName of the employee. LOV from Employee personal details.
    Application DateDate of application
    Transfer From SiteLocation of the employee before transfer.
    From Designation Designation of the employee before transfer.
    To DesignationDesignation of the employee after transfer.
    Reporting Employee NameName of the reporting employee
    Transfer Effect DateDate from which transfer will take effect.
    Reporting DateEmployee reporting date at transferred location.
    Transfer To SiteEmployee site after transfer.
    Days Allotted For TransferNo of days allotted for the transfer
    Approved ByThe authorized approver of the Transfer
    Approver's RemarksRemarks of the approver, if any.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAdvanceMaster.html b/hrmsWeb/hrms/helpfile/HRMHrmAdvanceMaster.html new file mode 100644 index 0000000..1dc70e7 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAdvanceMaster.html @@ -0,0 +1,7 @@ + +
    Advance Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    Through this interface the user can register the various types of advances along with their various heads through which an employee can settle the claims.
    This screen helps the employees to apply for any type of advance. Only approved advance applications are stored into the system. The Advances once approved flow to the Payroll System for further processing.
    Go Top
    Header Fields Description:
    Advance Name Name to identify the type of advance
    Description Description of the advance
    Calendar Name of the calendar applicable.
    Go Top
    Detail Fields Description:
    Advance Description Description of a particular type of advance
    Effective from Date Date from which the particular advance will be effective
    Effective to Date Date up to which the particular advance will be effective.
    Max. Cal Limit Maximum advance amount that can be taken in a calendar year
    No of Transactions Indicates the maximum number of transactions possible in a calendar year.
    Eligibility Factor Eligibility factor to get the advance.1) If value is "Flat Amount" then the employee will be paid the maximum advance limit. +2) If value is "Salary" then the employee will be paid % of number of month's salary. +
    Flat Amount Maximum limit up to which advance can be taken.
    No. Of Month's Salary (CS+FA)/(BASIC+DA) Number of months of salary. (Consolidated salary+ Fixed Allowance or Basic Salary+ Dearness Allowance)
    Settlement Unit Indicates whether the advance amount will be settled all in once or in monthly basis.
    No Of Installments Total No of Instalments for repaying the advance amount
    Applicable to All Check Flag indicating whether the rule is applicable for all.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAppraisalKPA.html b/hrmsWeb/hrms/helpfile/HRMHrmAppraisalKPA.html new file mode 100644 index 0000000..ef337ba --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAppraisalKPA.html @@ -0,0 +1,5 @@ + +
    Appraisal KPA
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Appraisal KPA screen is required to define the Key Performance Area (KPA) Groups and maintain the KPA Details. Each KPA group may have several KPAs, which can be defined and maintained through this screen.
    Go Top
    Header Fields Description:
    KPA Group CodeDefines a Major KPA Group. For example: Technical Skill, Leadership Skill, Communication Skill, etc. can be a KPA Group Code.
    DescriptionDescription of a KPA Group.
    Rating RequiredCheck box indicating whether rating is required or not.
    Appraiser TypeIndicates whether the appraisal is done by Appraiser/Self/Reviewer
    StatusStatus of the KPA
    Go Top
    Detail Fields Description:
    Serial NoSerial Number
    KPA CodeDefines an attribute within a KPA Group. For example: Client Interaction can be a KPA under the KPA Group "Communication Skill".
    DescriptionDescription of a KPA.
    Mandatory FlagIndicates whether the KPA code is mandatory or not
    Weightage (in %)Weightage of the KPA.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslEmpDtls.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslEmpDtls.html new file mode 100644 index 0000000..7188e08 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslEmpDtls.html @@ -0,0 +1,5 @@ + +
    Employee Appraisal Employee Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Grade Grade of the employee
    Designation Designation of the employee
    Present Location Location the employee is currently posted
    Date of Birth Date of birth of the employee
    Date of Joining (as Staff) Date of joining of the employee as staff to the organization
    Date of Joining (as Officer) Date of joining of the employee as Officer to the organization
    Last Promotion Date Date on which the employee was last promoted
    Last Pay as on 31st March Indicates last paid gross salary to the employee at the previous year end month
    Academic/ Professional Qualification Indicates the academic/professional qualification of the employee
    Rating for last 3 Years (%)-In Reverse Order Indicates the rating for last 3 years in reverse order
    Increment for last 3 Years (%)-In Reverse Order Indicates the increment for last 3 years in reverse order
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslGoals.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslGoals.html new file mode 100644 index 0000000..8e1a365 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslGoals.html @@ -0,0 +1,5 @@ + +
    Employee Appraisal Goals
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    SectionIt will be auto populated as defined in Appraisal Template Master
    Parent SectionIt will be auto populated as defined in Appraisal Template Master
    Goal DescriptionIt is the detailed description of the goal the employee is supposed to achieve.
    Self-Appraisal Appraisal done by the lodged on user.
    Self-Rating Rating given by the lodged on user
    Appraiser1 Appraisal Remarks given by first level appraiser
    Appraiser1 Rating Rating given by first level appraiser
    Appraiser2 Appraisal Remarks given by the second level appraiser
    Appraiser2 Rating Rating given by the second level appraiser
    Functional Head Appraisal Remarks given by the functional head
    Functional Head Rating Rating given by functional head
    GM (HRM) Appraisal Remarks given by the GM (HRM)
    GM (HRM) Rating Rating given by GM (HRM)
    Director (Operations) Appraisal Remarks given by the Director (Operations)
    Director (Operations) Rating Rating done by Director (Operations)
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslKPA.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslKPA.html new file mode 100644 index 0000000..35ec3f8 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslKPA.html @@ -0,0 +1,5 @@ + +
    Employee Appraisal KPA
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Employee Appraisal screen is used for Employee Performance Appraisal. The user who has logged in can perform his or her self-performance Appraisal and Reviewers can appraise a given employee.
    Go Top
    Header Fields Description:
    Employee NoEmployee number of appraisee
    Employee NameName of the Employee
    Start Order NoA valid start order no
    From Date Date from which the appraisal is submitted for.
    To Date Date to which the appraisal is submitted for.
    Appraisal PeriodTotal time period of appraisal.
    Appraisal Level Final level of appraisal.
    Final Rating Final rating given by highest-level appraiser
    Approval Flag New/Pending/Approved/Rejected/Revised
    Go Top
    Detail Fields Description:
    KPA Group Desc KPA Group Description
    Goal Description Description of the goal
    Self AppraisalRemarks given by the same person.
    Self Rating Rating given by the same person.
    Appraiser1 Appraisal Remarks given by the first level appraiser.
    Appraiser1 Rating Rating given by first level appraiser
    Appraiser2 Appraisal Remarks given by the second level appraiser.
    Appraiser2 Rating Rating given by second level appraiser.
    Appraiser2 Rating Rating given by second level appraiser
    Functional Head Appraisal Remarks given by the Functional Head
    Functional Head Rating given by Functional Head
    GM (HRM) Appraisal Remarks given by the GM (HRM)
    GM (HRM) Rating Rating given by GM (HRM)
    Director (Operations) Appraisal Remarks given by the Director (Operation)
    Director (Operations) Rating Rating done by Director (Operation)
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmpl.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmpl.html new file mode 100644 index 0000000..5d9a03e --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmpl.html @@ -0,0 +1,5 @@ + +
    Appraisal Specific Template KPA
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This function allows users to maintain the different appraisal templates to be used by the employees for appraisal and also by the appraisers for appraising those appraisals.
    Go Top
    Header Fields Description:
    Specific Template Name Specific Template Name
    Template Name Name of the template under which the above specific template comes.
    Class Header Type code from classification header under organisation set up. This indicates for which group of employees the specific template is valid.
    Class Detail Classification code from the classification details under organisation set up. This indicates for which group of employees the specific template is valid.
    Site Site for which the specific template is valid.
    Department Valid department under concerned site code.
    Employee No Valid employee number
    Start Order No A valid start order no
    From Date Date from which it will activate
    To Date Date to which it will activate
    Go Top
    Detail Fields Description:
    KPA Group Code Code of KPA Group
    KPA Group Description Description of KPA Group
    KPA Code Code of KPA
    KPA Description Description of KPA
    Mandatory Indicates whether the KPA is mandatory or not under the specific template.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplEmpElig.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplEmpElig.html new file mode 100644 index 0000000..a447d17 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplEmpElig.html @@ -0,0 +1,5 @@ + +
    Appraisal Specific Template Employee Eligibility
    TOC +
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplGoals.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplGoals.html new file mode 100644 index 0000000..5ca9a69 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslSpcTmplGoals.html @@ -0,0 +1,5 @@ + +
    Appraisal Specific Template Goals
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Serial No. System generated number
    Employee No Employee number of the person coming under the specific template.
    Section Section Name
    Employee Name Name of the employee.
    Parent Section Parent section name of the above section.
    Goal Description Description of Goals
    Measure Measure of the goal in 1 to 5 scale.
    Weightage (in percentage) Weightage of the goal.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslStartOrder.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslStartOrder.html new file mode 100644 index 0000000..6054a9d --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslStartOrder.html @@ -0,0 +1,5 @@ + +
    Appraisal Start Order
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Performance Appraisals are carried out according to Appraisal Orders. The Appraisal Start Order screen is used to maintain Appraisal Order.
    Go Top
    Header Fields Description:
    Start Order NoUser defined number
    Period Start Date Start date for which appraisal is done
    Period End Date End date for which appraisal is done
    Appraisal Start Date Start date of appraisal activity
    Appraisal End Date End date of appraisal activity
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslStartRule.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslStartRule.html new file mode 100644 index 0000000..9897d25 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslStartRule.html @@ -0,0 +1,5 @@ + +
    Appraisal Rule
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This function defines the employees who are eligible for appraisal process
    Go Top
    Header Fields Description:
    Appraisal Start Order No A valid start order number
    Employee No Valid employee number
    Work Group Code Valid work group under concerned site code
    Site Code Valid site code
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAprslTrngReq.html b/hrmsWeb/hrms/helpfile/HRMHrmAprslTrngReq.html new file mode 100644 index 0000000..db6edac --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAprslTrngReq.html @@ -0,0 +1,5 @@ + +
    Employee Appraisal Training Requirement
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Date Submitted Date of Submission
    Course Name Name of course required
    Training Calendar An LOV showing training calendar
    Institution Name Name of the Institution from which training would be done
    Start Date Course start date
    End DateCourse end date
    NatureNature of the course. Can have values: Urgent/emergency/normal
    Purpose Purpose of the course
    Recommended By Recommender's name
    Approval Status Indicates whether approved or not.
    RemarksRemarks, if any.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttIn.html b/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttIn.html new file mode 100644 index 0000000..e15429d --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttIn.html @@ -0,0 +1,11 @@ + +
    Employee Attendance (IN)
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This function keeps entry of the attendance of each employee into the system. + +
    Go Top
    Header Fields Description:
    Employee NoEmployee number of logged on user
    Employee NameEmployee name of logged on user
    DateSystem date
    Shift CodeShift in which the user is currently working.
    Time InSystem time
    Attendance StatusAttendance status can be either time or late
    Timeif Time In falls within the tolerance time of the Start time of that particular shift.
    Lateif Time In falls beyond the tolerance time of the Start time of that particular shift.
    ReasonsIf attendance status is late, reason for late is to be selected from the drop down box. The options are: +1. Transport Problem +2. Network/Server Failure +3. Leave Day. +
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttOut.html b/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttOut.html new file mode 100644 index 0000000..04be084 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttOut.html @@ -0,0 +1,5 @@ + +
    Employee Attendance (OUT)
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This function deals with out-time entry of an employee.
    Go Top
    Header Fields Description:
    Employee NoEmployee No of Logged On User
    Employee NameEmployee name of logged on user
    In DateIn-date of the logged on user stored into the system
    Time InIn-time of the logged on user stored into the system
    Shift CodeShift of the logged on user
    Out DateSystem Date
    Time OutSystem Time
    Attendance StatusStored Attendance Entry Status for the logged on user
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttQuery.html b/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttQuery.html new file mode 100644 index 0000000..c4356be --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAttEmpAttQuery.html @@ -0,0 +1,9 @@ + +
    Attendance Entry
    Header Fields Description:
    TOC +
    Header Fields Description:
    This function stores attendance entry of multiple employees.
    Period Start DateStart Date Field to get the existing attendance entries for a particular period.
    Period End DateEnd Date Field to get the existing attendance entries for a particular period.
    LocationName of the Location to get the existing attendance entries for a particular location.
    Employee NoEmployee No to get the existing attendance entries for a particular employee.
    Shift CodeShift of the employee
    In DateIn-date of the employee
    Time InIn-time of the employee
    Out DateSystem Date
    Time OutSystem Time
    Attendance Status Attendance status can be either time or late.
    Time Attendance status can be either time or late.
    Late If Time In falls beyond the tolerance time of the Start time of that particular shift.
    Reason/Remarks If attendance status is late, reason for late is to be selected from the drop down box. The options are: +1. Transport Problem +2. Network/Server Failure +3. Leave Day. +
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmAttShiftMst.html b/hrmsWeb/hrms/helpfile/HRMHrmAttShiftMst.html new file mode 100644 index 0000000..249ebee --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmAttShiftMst.html @@ -0,0 +1,8 @@ + +
    Shift Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This screen is used to maintain the master data of various shifts. Here Shifts can be created or modified.
    Go Top
    Header Fields Description:
    Shift Code Code of the shifts, e.g. GEN, NIGHT etc and its description.
    Start TimeIndicates the start time of the shift.
    End TimeIndicates the end time of the shift.
    Relaxation TimeThis time indicates relaxation period, it is not taken into + +consideration while calculating total shift time. +
    Start Tolerance TimeTolerance time for the shift start time.
    End Tolerance TimeTolerance time for the shift end time.
    Overlap TimeUser defined time period when the shift may overlap with the next shift.
    Day Overlap FlagCan have two options. i.e., Yes or No. Yes-if the shift begins on one day and ends on next day. No- if shift begins and ends on the same day.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmClaimMst.html b/hrmsWeb/hrms/helpfile/HRMHrmClaimMst.html new file mode 100644 index 0000000..7948ca1 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmClaimMst.html @@ -0,0 +1,9 @@ + +
    Claim Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen is used to maintain the master data store for various type of claims such as Medical Reimbursement etc.
    Go Top
    Header Fields Description:
    Code Unique Claim Code
    Document RequiredCheck Flag Indicating whether any documents are required to be submitted or not
    Calendar Name Calendar Name to be selected from LOV
    Settle Through Payroll Indicates whether the claim will be settled through payroll or not
    Go Top
    Detail Fields Description:
    Claim Detail Code Unique of a particular type of claim
    Maximum Calendar Limit Maximum claim amount that can be taken in a calendar year.
    Eligibility Factor Eligibility factor to get the claim. +1) If value is "Flat Amount" then the employee will be paid the Flat Amount. +2) If value is "Greater" then the employee will be paid the Maximum Limit or Flat Amount, whichever is greater. +3) If value is "Lesser" then the employee will be paid the Maximum Limit or Flat Amount, whichever is lesser. +
    Maximum Limit Maximum limit up to which claim can be taken.
    Flat Amount Flat Amount
    Effective From Date Date from which the claim will be effective
    Effective To Date Date up to which the claim will remain effective
    Applicable to All Check Flag indicating whether the rule is applicable for all.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpAdvance.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpAdvance.html new file mode 100644 index 0000000..036ee8a --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpAdvance.html @@ -0,0 +1,5 @@ + +
    Advance Application
    Header Fields Description:
    Detail Fields Description:
    TOC +
    Header Fields Description:
    Employee Number Employee number of the person applying loan
    Employee Name Name of the employee
    Designation Designation of the employee
    Grade Grade of the employee
    Location Location of the employee
    From Date Date from which the advance application details are to be queried.
    To Date Date up to which the advance application details are to be queried.
    Go Top
    Detail Fields Description:
    Advance Name Code to identify the advance type
    Applied Amount Amount applied as advance
    Date Applied Date on which the employee applied for advance
    Eligible Amount Eligible Amount for the employee
    Sanctioned Amount Amount sanctioned as advance
    Sanction DateDate on which the amount is sanctioned
    Recovery Year Start Month Month from which recovery will start taking place
    No Of Installments No of installments by which the advance must be repaid.
    Equal Monthly Installments Equal Monthly Installments
    Reason Purpose of taking the advance
    Approved By Name of the approver.
    Approver's Remarks Remarks by the person who approved the advance
    Installments PaidTotal no of paid installments
    Amount Settled Total amount settled
    Outstanding Balance Total Outstanding Balance
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpClaim.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpClaim.html new file mode 100644 index 0000000..c28bc39 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpClaim.html @@ -0,0 +1,5 @@ + +
    Employee Reimbursement
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This screen will allow the user to claim various types of reimbursements, e.g. Medical Reimbursement etc.
    Go Top
    Header Fields Description:
    Claim Code Claim Code to be selected from LOV.
    From Date Date from which reimbursement details are to be queried
    To Date Date up to which reimbursement details are to be queried.
    Employee Number Employee number of the person applying reimbursement
    Employee Name Name of the employee
    Claim Code Unique Claim Code to be selected from LOV
    Applied Amount Amount of reimbursement applied
    Date AppliedDate of application
    Eligible Amount Amount of reimbursement employee is eligible to.
    Reimbursed Till Date Amount of reimbursement employee has taken till date
    Application Status Current application status. Can have the options: Pending, approved, rejected.
    Settled Through payroll Indicates whether the reimbursed amount will be settled through payroll or not
    Approved AmountAmount approved
    Approved Date Date of approval.
    Approver's nameName of the Approver.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpDiscAction.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpDiscAction.html new file mode 100644 index 0000000..9540619 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpDiscAction.html @@ -0,0 +1,5 @@ + +
    Disciplinary Action
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen maintains record of the history of disciplinary cases of employees.
    Go Top
    Header Fields Description:
    Employee NumberEmployee number
    Employee NameName of the employee
    Go Top
    Detail Fields Description:
    LocationPlace where the misconduct was done
    MisconductNature of misconduct
    From DateStarting date of misconduct.
    To DateEnd date of misconduct.
    Action takenAction taken against the employee's misconduct
    StatusStatus of the action taken.
    Status Effective DateDate from which the above-mentioned status is effective.
    Remarks, if anyRemarks about the disciplinary action.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpLeaveEncashment.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpLeaveEncashment.html new file mode 100644 index 0000000..4b62a6e --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpLeaveEncashment.html @@ -0,0 +1,5 @@ + +
    Leave Encashment
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen allows the user to apply for leave encashment. There are certain leaves e.g. Privileged Leave etc. which are encashable depending upon certain eligibility criteria. If an employee can fulfill those eligibility criteria, he/she can apply for Leave Encashment. This is an on-line application screen. After successful submission of Leave Encashment Application, the workflow process starts.
    Go Top
    Header Fields Description:
    Employee NumberEmployee number of the person who is encashing the leave
    Employee NameName of the employee
    GradeGrade of the employee
    DesignationDesignation of the employee
    LocationLocation of the employee
    From DateDate from which the leave is to be encashed.
    To DateDate up to which the leave is to be encashed.
    Go Top
    Detail Fields Description:
    Leave CodeCode to identify the type of leave
    DescriptionDescription of the leave code.
    Date AppliedDate of application for leave encashment.
    Days EncashedNumber of days of leave encashed.
    Encashed AmountAmount encashed.
    Encashment StatusIndicates whether the application is approved/ rejected/pending/new.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersAddDtls.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersAddDtls.html new file mode 100644 index 0000000..7063e4e --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersAddDtls.html @@ -0,0 +1,5 @@ + +
    Employee Address Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    AddressAddress of the office where the employee is working.
    City City where the office is located.
    StateState where the office is located.
    CountryCountry where the office is located.
    PINPin code.
    Mobile NoMobile phone number of the office (if any).
    Phone (1)Contact phone number in the office.
    Phone (2)Another contact phone number in the office.
    E-mail AddressOffice e-mail address.
    FaxFax number.
    AddressPresent residential address of the employee.
    City City where the employee resides
    StateState where the employee resides.
    CountryCountry where the employee resides
    PINPin code.
    PhoneTelephone number.
    SameAs present addressChecked if present address and permanent address are same.
    AddressPermanent residential address of the employee.
    City City where the employee resides
    StateState where the employee resides
    CountryCountry where the employee resides.
    PINPin code.
    PhoneTelephone number.
    Same as present addressChecked if present address and permanent address are same
    AddressHometown address of the employee.
    City Name of the city.
    StateName of the state.
    CountryName of the country.
    PINPin code.
    PhoneTelephone number
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersDtls.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersDtls.html new file mode 100644 index 0000000..becfcde --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersDtls.html @@ -0,0 +1,5 @@ + +
    Employee Personal Details
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Employee Personal Details screen is used for inserting new employees, updating information for existing employees and viewing the details of employees. The various information pertaining to an employee is displayed under different tabs. For example, personal details like Name, Mother Tongue, Nationality, Marital Status, Domicile, Designation, Scale, Grade, Level, Religion, etc. are displayed in the Personal Details tab. The Present and Permanent Addresses are displayed in the Address tab, the education details are displayed in the Education Details tab, Joining details in the Joining Details tab, Prior Experience in the Prior Experience tab, the Increment, Transfer and Promotion details are displayed in the Employee History tab, Training the employee had undergone in the Training Details tab, and reference details of the employee in the Training Details tab.
    Go Top
    Header Fields Description:
    Employee NoEmployee number
    Draft Flag System generated. If it is checked, draft save should be done. i.e., details of each tab should be saved separately.
    Employee Name Name of the employee
    Grade Grade of the employee
    Go Top
    Detail Fields Description:
    Designation Designation of the employee
    Location Location of the employee
    Department Department of the employee
    Location Joining Date Date of joining the location
    Sex Gender of the employee
    Father's/ Husband's Name Name of the guardian
    Date of birth Date of birth of the employee
    Place of birth Place of birth of the employee
    Nationality Nationality of the employee
    Blood Group Blood group of the employee
    Identification MarksMarks for identification
    Mobile Mobile No of the Employee
    E Mail Email of the employee
    HandicappedIndicates whether the employee is handicapped or not
    Religion Religion of the employee
    Mother Tongue Mother Tongue of the employee
    No. Of dependants Number of people depending on the employee
    Reporting Head Person to whom the employee is reporting
    Last Promotion Date Date on which the employee was recently promoted
    Social Status Category of reservation under which the employee comes.
    PAN NoPermanent Account Number of the employee
    PF NoProvident Fund Number of the employee
    Gratuity NoGratuity Number of the employee
    Passport NoPassport number of the employee
    Passport Issue Date Date of issue of the passport of the employee
    Driving License NoDriving license number
    Place of Issue of PassportPlace from which the passport was issued.
    Passport Expiry DateDate of expiry of passport
    License valid up toDate up to which the driving license is valid
    Marital StatusMarital Status
    Spouse's NameName of spouse
    Spouse's OccupationOccupation of spouse
    Related to any employeeIndicates whether the employee is related to any other employee in the organization.
    Employee NameName of the employee to whom the person is related
    Flat GivenIndicates whether the person is given a flat or not.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersEduDtls.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersEduDtls.html new file mode 100644 index 0000000..774f54d --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersEduDtls.html @@ -0,0 +1,5 @@ + +
    Education Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Name of School/College/ InstName of the institution in which the employee had studied.
    Exam/ Degrees passedName of the exam/degrees passed.
    PercentagePercentage of marks in the exam.
    Pass YearYear of passing.
    Major SubjectsName of major subjects.
    SpecializationName of the subject in which specialization has been done.
    Other Professional Qualifications (including IT)Any Other Professional Qualifications (including IT)
    Specialized Courses Attended (including IT)Name of Specialized Courses Attended (including IT, if any)
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersEmpHst.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersEmpHst.html new file mode 100644 index 0000000..045588e --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersEmpHst.html @@ -0,0 +1,5 @@ + +
    Employee History
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    ActivityHistory activity (Options:Promotion,Increment,Transfer etc)
    Effective DateDate from which employee is on that activity
    From BasicEmployee start basic (in case of Promotion/Increment)
    To BasicEmployee end basic (in case of Promotion/Increment)
    From GradeEmployee start grade (in case of Promotion)
    To GradeEmployee end grade (in case of Promotion)
    From DesignationEmployee start designation (in case of Promotion)
    To DesignationEmployee end designation (in case of Promotion)
    From DepartmentEmployee working department (in case of Transfer/Deputation)
    To DepartmentEmployee working department (in case of Transfer/Deputation)
    From LocationLocation from which the employee is transferred
    To LocationLocation to which the employee is transferred.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersJoinInf.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersJoinInf.html new file mode 100644 index 0000000..c9250b1 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersJoinInf.html @@ -0,0 +1,5 @@ + +
    Joining Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Company Joining DateDate of joining the company
    Tentative Confirmation DateTentative conformation date of employee
    Place of initial postingPlace where the employee was initially posted.
    Entry modeEmployee entry mode (e.g. through campus/walk-in etc.)
    Reference No.Reference number (Coming from Recruitment Module).
    Order No.Order number (Coming from Recruitment Module).
    Order DateOrder Date (Coming from Recruitment Module).
    Payment TypeIndicates the payment type, i.e. Cash/Bank etc
    BankIf Payment Type is Bank, then Bank Code needs to be specified
    BranchName of the Branch
    Account NumberAccount Number of the employee in the bank.
    Employee StatusCurrent status of employee (e.g. working/terminated/suspended/separated etc)
    Status Effective DateDate from which the employee's current status is effective.
    Retirement DateEmployee retirement date
    Accounting SiteLOV from Site Master
    Cost CenterLOV from Cost Master
    Separation TypeLOV From Separation Category Master
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersPFDtls.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersPFDtls.html new file mode 100644 index 0000000..b6cab75 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersPFDtls.html @@ -0,0 +1,5 @@ + +
    PF Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Nominee NameName of the person who is the nominee for the PF of the employee
    RelationRelationship between nominee and employee
    Date of BirthDate of birth of the nominee
    AddressAddress of the nominee
    Percentage of PFPercentage of PF entitled to the nominee
    Total AmountThe Options are: Yes/No
    Name,Relation&Addr. Of Guardian(For Minors)This field needs to be field only if the nominee is a minor. This field gives the name, relation and address of the guardian of the nominee.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersPriorExp.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersPriorExp.html new file mode 100644 index 0000000..c47bc07 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersPriorExp.html @@ -0,0 +1,5 @@ + +
    Prior Experience
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Organization NameName of the organization in which the employee previously worked.
    Organization AddressAddress of the organization in which the employee previously worked.
    From DateDate from which the employee was working in the previous organization.
    To DateDate to which the employee was working in the previous organization.
    Work Experience (in months)Work experience of the employee in months (Auto-Calculated).
    DesignationDesignation of the employee in the previous organization.
    Report to (Name/Designation)Person to which the employee was reporting in the previous organization.
    Job Description/ResponsibilityResponsibility handled by the employee in the previous organization.
    No. Of personnel supervisedNumber of supervisors of the employee in the previous organization.
    Salary (Starting) per monthStarting salary (per month) in the previous organization.
    Salary (Leaving) per monthLeaving salary (per month) in the previous organization.
    Basic (Last Drawn)Basic last drawn from the previous organization.
    DA (Last Drawn)DA last drawn from the previous organization.
    HRA (Last Drawn)HRA last drawn from the previous organization.
    Conveyance (Last Drawn)Conveyance allowance from the previous organization.
    Other allowances (Last Drawn)Other allowances last drawn from the previous organization.
    Incentives (Last Drawn)Incentives last drawn from the previous organization.
    Bonus (Last Drawn)Bonus last drawn from the previous organization.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersRef.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersRef.html new file mode 100644 index 0000000..69cf546 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersRef.html @@ -0,0 +1,5 @@ + +
    References
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    NameName of the person whom can be referred about the employee
    AddressAddress of the person who can be referred about the employee
    Telephone No.Telephone number of the person who can be referred about the employee
    Position/OccupationPosition/Occupation of the person who can be referred about the employee
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmpPersTrngDtls.html b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersTrngDtls.html new file mode 100644 index 0000000..c492caf --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmpPersTrngDtls.html @@ -0,0 +1,5 @@ + +
    Training Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Course nameName of the course attended/to be attended by the employee
    Name Of InstitutionName of the organization which organized the course
    From DateStarting date of the course
    To DateEnd Date of the course
    Calendar NameName of the calendar followed
    RatingRating obtained by the employee for the corresponding course
    ParticipatedIndicates whether the employee has attended the course.
    Reason for Non participation Explanation for non-participation in the course (only if the employee has not participated)
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationBatchScreen.html b/hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationBatchScreen.html new file mode 100644 index 0000000..e1c1266 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationBatchScreen.html @@ -0,0 +1,5 @@ + +
    Leave Cancellation
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Employee Leave Cancellation Screen allows the user to cancel leaves. The user of the system can submit leave cancellation application only if he or she has applied for a leave and that is approved.
    Go Top
    Header Fields Description:
    Employee NumberEmployee number of the person canceling the leave.
    Employee NameName of the employee.
    GradeGrade of the employee.
    DesignationDesignation of the employee.
    LocationLocation of the employee.
    Leave CodeType of leave applied by the employee.
    DescriptionDescription of the leave code.
    Date AppliedDate of application of the leave.
    From DateDate from which the leave is applied.
    To DateDate to which the leave is applied.
    Number of DaysNumber of days of leave applied.
    ReasonReason for cancellation.
    Cancellation TypeIndicates whether the leave is fully cancelled or partially cancelled or not cancelled.
    Go Top
    Detail Fields Description:
    From DateDate from which the leave is cancelled.
    To DateDate to which the leave is cancelled.
    Number of DaysNumber of days for which the leave is cancelled.
    Date AppliedDate on which application for leave cancellation is made.
    Approver's RemarksRemarks about the cancellation by the approver.
    StatusStatus of leave cancellation.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationQueryScreen.html b/hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationQueryScreen.html new file mode 100644 index 0000000..2f51cee --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmEmployeeLeaveCancellationQueryScreen.html @@ -0,0 +1,5 @@ + +
    Leave Cancellation Query
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Leave Cancellation Query screen is used to make query on a particular leave cancellation form. Through this screen the employees can view the leave cancellation applications and their status. There is a link VIEW that will take to corresponding Leave Cancellation Screen.
    Go Top
    Header Fields Description:
    Employee NumberEmployee number.
    Leave TypeType of leave cancelled by the employee
    Leave DescriptionDescription of the leave type.
    From DateDate from which the leave is cancelled
    To DateDate to which the leave is cancelled.
    Go Top
    Detail Fields Description:
    VIEWLink to view a particular leave cancellation application.
    Leave DescriptionType of leave.
    Date AppliedThe date on which leave was applied.
    Cancellation DateDate on which leave was cancelled.
    Cancellation TypeType of cancellation. i.e., whether the leave is fully cancelled or partially cancelled.
    StatusIndicates whether the leave cancellation is approved or rejected.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmGenEligRule.html b/hrmsWeb/hrms/helpfile/HRMHrmGenEligRule.html new file mode 100644 index 0000000..1593e0b --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmGenEligRule.html @@ -0,0 +1,5 @@ + +
    Eligibility Rules
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Eligibility Rules screen is used to create different kind of Eligibility Rules based on different criteria for a particular organisation.
    Go Top
    Header Fields Description:
    Document TypeIndicates whether the document type is loan, advance, leave or separation.
    Document CodeDescribes the document code.
    Eligibility ClassDescribes the eligibility class.
    OperatorOperators used to specify eligibility.
    ValuesThe values depend on the eligibility class selected.
    FormulaFormula that specifies the eligibility for the particular document code.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmGenEligRuleQuery.html b/hrmsWeb/hrms/helpfile/HRMHrmGenEligRuleQuery.html new file mode 100644 index 0000000..24b53b0 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmGenEligRuleQuery.html @@ -0,0 +1,5 @@ + +
    Eligibility Rule Query
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Eligibility Rule Query screen is used to make query of different kind of Eligibility Rules that exist in a particular organisation.
    Go Top
    Header Fields Description:
    Document TypeIndicates whether the document type is loan, advance, leave or separation.
    Go Top
    Detail Fields Description:
    Document CodeDescribes the document code.
    Elig SQLIndicates the eligibility rule for the corresponding document code.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmLeaveMaster.html b/hrmsWeb/hrms/helpfile/HRMHrmLeaveMaster.html new file mode 100644 index 0000000..cb3ed7e --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmLeaveMaster.html @@ -0,0 +1,7 @@ + +
    Leave Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Leave Master screen allows the user to add new types of leaves in the System. Whenever new leaves are to be added the Leave Codes and Leave Descriptions are to be first entered in to the system through Maintain Global Codes Screen of the System Administration Module. Details for those leaves are then entered through this module.
    Go Top
    Header Fields Description:
    Leave Code Unique way to identify the type of leave.
    Description Description of the leave code.
    Evidence Required Indicates whether evidence is required for applying the leave.
    Evidence Description Description about the evidence
    Suffix Allowed Indicates whether the type of leave can be prefixed with a rest day or any other holidays
    Leave Obsolete Indicates if leave is obsolete or not.
    Intermediate Holiday Allowed Indicates whether an intermediate holiday is allowed between leaves.
    Encashable Indicates whether the leave is encashable.
    Encashable Limit in a Period If the leave is encashable, number of leaves that can be encashed in a period.
    Calendar Name of the calendar followed.
    Periodicity Periodicity of encashment the leave
    Applicable to Indicates whether the leave is applicable to only female/male/ both employees.
    Go Top
    Detail Fields Description:
    Leave Description Sub-type of the leave code.
    Applicable for Indicates whether the leave is applicable to all states or any particular state.
    State Name of the state for which the leave is applicable.
    Effective From (YYYYMM) Start year and month from which the specified leave attributes are effective.
    Effective To (YYYYMM)Year and month upto, which the specified leave attributes, are effective.
    Minimum Service Period (Years) Minimum number of years of service for an employee to have, to be eligible for the corresponding leave.
    Maximum Accumulation Limit Maximum number of leaves that can be accumulated. +
    Total Available Limit Total available number of leaves. +
    Advance Limit Number of leaves that can be taken in advance.
    Max Transaction per Period Maximum number of times the leave can be applied in a period.
    Min Leave per Transaction Minimum number of leaves that can be applied per transaction.
    Dependant on Working Days Indicates whether the holidays occurring in a leave period are counted as leave or not.
    Unit (Days WorkedIf the 'Dependant on Working Days' flag is 'Y', then the user will have to enter the number of days of work against which 1 day of leave can be accumulated against an employee
    Credit Frequency Frequency in which the leave can be credited.
    Max Credit Limit Maximum credit limit for a particular leave
    Applicable to all Whether the type of leave is applicable to all or not.
    Lapsable Whether the particular type of leave is lapsable
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmLnApp.html b/hrmsWeb/hrms/helpfile/HRMHrmLnApp.html new file mode 100644 index 0000000..eb2124f --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmLnApp.html @@ -0,0 +1,5 @@ + +
    Loan Application
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen is used to capture the details of a loan application. Only approved applications should be entered into the system. A Loan Application cannot be updated or deleted if disbursement is made and Payroll Processing has been started. Also please note that once a Loan application has been entered, it starts appearing in the Payroll Process and automatic deduction of loan amount starts with the next Payroll run.
    Go Top
    Header Fields Description:
    Employee No Employee Number
    Employee NameEmployee Name
    Designation Designation of the employee
    Grade Grade of the employee
    Location Current location of the employee
    Loan Code Unique code to identify the type of loan.
    Applied Amount Amount applied as loan
    Date Applied Date of application of loan
    Eligible Amount Amount to which the employee is eligible
    Details of loan to be taken Loan Particulars, if any
    Fully Repaid Indicates whether the loan is repaid fully or not
    Sanctioned Amount Amount sanctioned as loan
    Sanction Date Date on which the loan is sanctioned
    Recovery Year Start Month Indicates the Year-Month in YYYYMM format from which the realization o the approved loan will be started.
    Total no. Of Instalments Indicates the number of instalments in which the loan amount is to be paid back with interest.
    No. Of Instalments (Principal Recovery) Total number of instalments in which the principal amount will be recovered.
    No. Of Instalments (Interest Recovery)Total number of instalments in which the interest amount will be recovered.
    Instalment Amount Amount of instalment (Principal+ Interest)
    Approved By Name of the approving authority
    Approver's Remarks Approver's remarks, if any
    No. Of Instalments (Principal) Paid Number of instalments paid for Principal amount.
    No. Of Instalments (Interest) Paid Number of instalments paid for the Interest amount.
    No. Of Instalments Paid Total number of instalments paid till date
    Total Amount PaidTotal amount paid including principal and interest till date
    Principal Paid Amount of principal paid till date
    Interest Paid Amount of interest paid till date
    Outstanding BalanceTotal balance due.
    Outstanding Balance (Principal) Principal due
    Outstanding Balance (Interest) Interest due.
    Applied for Type of Loan applied for.
    Nearest Branch of Construction Nearest Branch to the site of construction.
    Documents Submitted Check flag indicating whether all relevant documents are have been submitted or not
    Name of City/Town/Village Name of the city/town/village
    Name Of Mouza And J.L No Name of Mouza and J.L. number.
    Khatian No Khatian number
    Dag/C.S Plot No Dag/C.S Plot number.
    No Of Deed Deed number.
    Parent No Of Deed Parent number of the Deed
    Volume Of Deed Volume number of deed
    Book No Book number
    Page No Page number
    Registered At Place of registration
    Go Top
    Detail Fields Description:
    Actual Disb. Date The date when the loan is actually disbursed.
    Actual Disb. Amount Actual amount disbursed
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmLnChart.html b/hrmsWeb/hrms/helpfile/HRMHrmLnChart.html new file mode 100644 index 0000000..b7c772b --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmLnChart.html @@ -0,0 +1,5 @@ + +
    Loan Chart
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Loan Chart screen is used for maintaining Loan chart details that are of importance to an organisation. Loan Chart consists of two parts, Chart Master and Chart Detail. Chart Master contains information like "Loan Chart Name", "Effective From Date" and "Effective To Date". Chart Detail specifies the Equal Monthly installment to be paid in case a specific amount is taken as loan.
    Go Top
    Header Fields Description:
    Chart Name Uniquely defines a Loan Chart.
    Effective From Date Date from which the chart has become effective.
    Effective To Date Date up to, which the chart will be effective.
    Go Top
    Detail Fields Description:
    Loan Amount Indicative Loan amount for which the EMI is given.
    Number of Instalments For a Loan Amount, this field indicates the number of installments in which the loan has to be paid back.
    Principal Amount Indicates the Principal part paid back per installment.
    Interest Amount Indicates the Interest part paid back per installment.
    Equal Monthly Instalment For a given loan amount, this field indicates the amount of money to be paid pack per installment.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmLnMst.html b/hrmsWeb/hrms/helpfile/HRMHrmLnMst.html new file mode 100644 index 0000000..9422f46 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmLnMst.html @@ -0,0 +1,9 @@ + +
    Loan Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Loan Master screen is used for maintaining master information about various loans that are disbursed by an organisation. Details like Loan Code, Loan Name, Type of Interest, Chart Name etc. are maintained through this process.
    Go Top
    Header Fields Description:
    Loan CodeUnique Code associated with each loan
    Nature of payment It indicates whether principal is paid back first or interest or both together
    Type of Interest Can be of three types. 1) Simple Interest, 2) As per Chart or 3) Reducing Balance method for Interest Calculation.
    Chart Name Will have to be entered if "Type of Interest" is "Chart".
    Go Top
    Detail Fields Description:
    Loan Detail Code Indicates the loan sub code. Logically for a Loan code defined in Loan Master Frame, there can be multiple "sub loans" with variations in amount and eligibility.
    Eligibility Factor 1) If value is "Greater" then the employee will be paid either % of number of month's salary or maximum limit whichever is greater. +2) If value is "Lesser" then the employee will be paid either % of number of month's salary or maximum limit whichever is lesser. +3) If value is "Flat Amount" then the employee will be paid the maximum limit (Loan Amount). +4) If value is "Salary" then the employee will be paid % of number of month's salary. +
    Maximum Limit Indicates the Maximum limit of the Sub Loan.
    Maximum Loan (%) Indicates the % of Property Price that can be given as a loan.
    No. Of Month's Salary Indicates the Maximum Loan amount in Number of Months of Salary.
    Minimum Years in Service Number of years of service for an employee before qualifying for a loan
    Minimum Years of Remaining service Minimum years of service left with the organisation if an employee is to be sanctioned a loan.
    Applicable to All If checked, the sub loan is applicable to everyone in the organisation. If not ticked, then eligibility rules will have to be defined through the loan eligibility screen. If for a sub loan, this field is ticked off, then there can be no other sub loans defined for the main loan.
    Company Policy Start Date It is the date from which the sub loan is valid. Cannot be a future date.
    Company Policy End Date It is the date till which the policy is valid.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmLvAppln.html b/hrmsWeb/hrms/helpfile/HRMHrmLvAppln.html new file mode 100644 index 0000000..9030c58 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmLvAppln.html @@ -0,0 +1,5 @@ + +
    Leave Application
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This screen allows the user to apply for leaves. For each of the leave applications, the process checks for the eligibility of the leave applied for. It also checks for leaves outstanding and warns the user if the leave applied is greater than the leave outstanding for that type of leave. After successful application of leaves the workflow of approval starts. After final approval, the process also updates the leave balance of the employees.
    Go Top
    Header Fields Description:
    Employee NumberEmployee number of the person applying the leave
    Employee NameName of the employee.
    GradeGrade of the employee.
    DesignationDesignation of the employee.
    LocationLocation of the employee.
    Leave CodeType of leave applied by the employee
    DescriptionDescription of the leave code.
    Date AppliedDate of application of the leave
    From DateDate from which the leave is applied
    To DateDate to which the leave is applied.
    No. Of DaysNumber of days of leave applied.
    Address of the Employee Proceeding on LeaveAddress for communication
    Phone No.Phone number
    Apply for LTAIndicates whether the employee is applying for LTA along with the leave.
    LTA AmountAmount of LTA eligible by the employee.
    StatusStatus of leave applied
    ReasonReason for applying leave.
    Approver's RemarksRemarks of the person approving leave
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgCalMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgCalMst.html new file mode 100644 index 0000000..518c45e --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgCalMst.html @@ -0,0 +1,5 @@ + +
    Calendar Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This function will maintain holiday calendar of the organisation for different religions and different locations. Through this screen calendars can be created, modified and deleted
    Go Top
    Header Fields Description:
    Calendar TypeUniquely defines a Calendar
    Go Top
    Detail Fields Description:
    Start MonthIt is the month from which the selected Calendar type starts. This field is locked in the Query mode.
    DurationShould be less than or equal to 12. Gives the duration of the calendar from the Start Month. This field is locked in the Query mode.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgClassDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgClassDtl.html new file mode 100644 index 0000000..a0cb3d5 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgClassDtl.html @@ -0,0 +1,5 @@ + +
    Classification Details
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Classification Detail screen is used to capture the various Classifications of an Employee. All the major Classification Master Codes are entered through this screen. This screen consists of two parts. The Classification Header where Major Classification Codes are maintained. For example Coder 10 stands for Designation, 15 stands for Scale, 20 for Grade, etc. Against each of the major Classification codes appearing in the Classification Header, detail codes are maintained in the Classification Detail part. For example the detailed Designation Codes corresponding to Code 10 appearing in the Classification Header are maintained in the Classification Detail part.
    Go Top
    Header Fields Description:
    Type CodeClassification type code.
    Classification TypeDescription of the classification (e.g. Designation).
    Go Top
    Detail Fields Description:
    Classification CodeUser defined code.
    DescriptionDescription of the classification code
    Hierarchy LevelA group of records appearing in the data store Classification Detail, corresponding to a record in the data store Classification Header, can be assigned various hierarchy levels to depict the relative hierarchy of the records in that group.
    Parent CodeThe code of a record in that group of records which is higher to the current record in hierarchy.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgCntryMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgCntryMst.html new file mode 100644 index 0000000..55a80f8 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgCntryMst.html @@ -0,0 +1,5 @@ + +
    Country Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Country Master screen is used to capture the various Countries and Cities falling in them. Separate Country and City codes are being given to the countries and Cities.
    Go Top
    Header Fields Description:
    Country codeCode given to a particular country
    Country NameName of the country. This field is locked in the query mode.
    Go Top
    Detail Fields Description:
    City CodeCode given to a particular city.
    City NameName of the city.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgHolCal.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgHolCal.html new file mode 100644 index 0000000..1169529 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgHolCal.html @@ -0,0 +1,5 @@ + +
    Holiday Calendar
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Holiday calendar screen allows the user to create the Holiday Calendar applicable to a Site/Organization. The user has to enter the Calendar Type Description, the Calendar Year and the site for which it is generated. The Holiday calendar has a multi line detail block containing the various holiday during the year. The Holiday details consist of Holiday Date, Holiday Name and Holiday Type.
    Go Top
    Header Fields Description:
    Calendar NameUniquely defines a Calendar
    DescriptionThe calendar detail gives a period wise breakup of the Calendar.
    From DateThe starting date from which the specified calendar is applicable.
    StateThe state for which the particular holiday calendar is applicable to.
    Go Top
    Detail Fields Description:
    Holiday DateDate of the holiday
    Holiday NameName of the holiday
    Day of the weekDay of the week of the holiday
    Holiday TypeType of the holiday
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgHolTypeMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgHolTypeMst.html new file mode 100644 index 0000000..995a372 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgHolTypeMst.html @@ -0,0 +1,5 @@ + +
    Holiday Type Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This function enables user to enter different types of holiday into the system (e.g. Restricted Holiday etc.), which can be used to create the holiday calendar of an organization.
    Go Top
    Header Fields Description:
    Holiday TypeUniquely defines a Calendar
    Yearly LimitIt defines the maximum yearly limit of a particular Holiday Type. This field is not querable; hence it is read-only in the Query mode.
    MandatoryIt defines whether the Leave Type is of Mandatory Nature or not. When the Mandatory Field is Y then the Compensatory Leave gets enabled. This field is not querable; hence it is read-only in the Query mode.
    Compensatory LeaveIt defines whether the leave is compensatory or not. If the Compensatory Leave Field is N then the Reward percentage of basic field gets enabled.
    Reward Percentageof BasicIt defines the percentage of basic that will be given as reward to an employee if he works on that Holiday.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgLangMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgLangMst.html new file mode 100644 index 0000000..5e545cf --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgLangMst.html @@ -0,0 +1,5 @@ + +
    Language Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Language Master screen is used to capture various Languages that can be associated with an employee.
    Go Top
    Header Fields Description:
    CodeUniquely identifies a language
    DescriptionName of the language
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgQualMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgQualMst.html new file mode 100644 index 0000000..ec13e56 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgQualMst.html @@ -0,0 +1,5 @@ + +
    Qualification Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Qualification Master screen is used to capture the various Qualifications needed for the organisation.
    Go Top
    Header Fields Description:
    CodeCode to uniquely identify qualifications
    QualificationName of the qualification
    No of yearsDuration of the course
    Approving AuthorityThe Board/Institution/University responsible for authorizing the qualification.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgRatingMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgRatingMst.html new file mode 100644 index 0000000..947ba0f --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgRatingMst.html @@ -0,0 +1,8 @@ + +
    Rating Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Rating Master screen is used to capture the various Rating Schemes used by an organisation. These Rating Schemes are used by various HR functionalities like Appraisal System and Training. +Header Fields Description + +
    Go Top
    Header Fields Description:
    Rating FromSub ranges are created between the maximum and the minimum limits specified in the Rating Header record. This field indicates the lower limit of the sub range.
    Rating Header CodeCode of Rating Scheme
    Qualifying RatingThe qualifying rating for the scheme
    Minimum RatingThe lower limit of the rating scheme
    Maximum RatingThe upper limit of the rating scheme
    Go Top
    Detail Fields Description:
    Rating ToThis field indicates the upper limit of the sub range.
    Rating GradeGrade for that particular rating slab
    DescriptionDescription for the particular grade
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgRelationMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgRelationMst.html new file mode 100644 index 0000000..5a4e0ab --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgRelationMst.html @@ -0,0 +1,5 @@ + +
    Relation Master
    General Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Relation Master screen is used to capture details of various types of relationships that are of significance to the organization.
    Go Top
    Detail Fields Description:
    Relation CodeUniquely identifies a relation
    Relation NameRelationship name
    OccurrenceMaximum permissible number allowed for a particular relation
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgReligionMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgReligionMst.html new file mode 100644 index 0000000..5ef1646 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgReligionMst.html @@ -0,0 +1,5 @@ + +
    Religion Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Religion Master screen is used to capture the various Religions. These Religions can be linked to various Employees of an organization.
    Go Top
    Header Fields Description:
    ReligionName of religion
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgScaleMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgScaleMst.html new file mode 100644 index 0000000..e105c4e --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgScaleMst.html @@ -0,0 +1,5 @@ + +
    Scale Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Scale Master screen is used to capture the various Scales and their details. Scale details like the start basic, the increment and the end basics are captured through this screen.
    Go Top
    Header Fields Description:
    Pay Scale CodeUniquely identifies a scale.
    DescriptionDescription of the particular scale.
    Revision Year MonthIndicates the revision year month of the pay scale (In YYYYMM format).
    Go Top
    Detail Fields Description:
    Start BasicStarting Basic of the Pay scale
    IncrementThis field keeps track of the increment, that is applicable between the given Start Basic and the End Basic
    End BasicEnd Basic of the Pay scale
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgSkillMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgSkillMst.html new file mode 100644 index 0000000..9095353 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgSkillMst.html @@ -0,0 +1,5 @@ + +
    Skill Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Skill Master screen is used to capture the various Skill Profiles needed by an organization. These Skills can be linked to various Employees of an organisation.
    Go Top
    Header Fields Description:
    Skill Type CodeUniquely identifies a skill
    Skill Type NameName of the skill type
    Go Top
    Detail Fields Description:
    Skill CodeIndicates unique skill codes for a particular skill type
    Skill NameDescription of the skill code specified above
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmOrgWorkGroupMst.html b/hrmsWeb/hrms/helpfile/HRMHrmOrgWorkGroupMst.html new file mode 100644 index 0000000..118547d --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmOrgWorkGroupMst.html @@ -0,0 +1,5 @@ + +
    Work Group Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This screen is used to maintain departments and work groups of an organization.
    Go Top
    Header Fields Description:
    CodeUser entered Work Group Code
    Owning SiteThe name of the site bearing the ownership of the workgroup
    NameThe Name of the Work Group
    Dept FlagIndicates whether it is a Department or a Work Group. It can have two values, "D" if Department and "W" if work group.
    Temp FlagCan have two values 'Y' and 'N'.Y -&gt; If the Work Group will exist only for a fixed period of time.N -&gt; If the Work Group exists so long as the organisation exists.
    Cost CentreCentre responsible for the cost related to the work group.
    Contact Employee NameEmployee name of the employee in charge of that particular workgroup
    Phone No.Phone No of the work group/department
    E-mailE-Mail for that work group/department
    FaxFax of the work group/department
    AddressContact Address of the work group/department
    Ref.Doc.NoThe Document Number of the document, which specifies the creation of the group.
    Creation DateDate when the Work Group was created
    Doc.DateDate of the Reference Document
    End DateThe last date up-to which the Work Group can exist.
    Sp.RemarksAny Special remarks to be provided.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmPrmOrder.html b/hrmsWeb/hrms/helpfile/HRMHrmPrmOrder.html new file mode 100644 index 0000000..25215cd --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmPrmOrder.html @@ -0,0 +1,5 @@ + +
    Promotion Order
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Promotion Order screen is used to generate Promotion Order of the employees granted Promotion.
    Go Top
    Header Fields Description:
    Employee NoEmployee Number of the employee to be promoted
    Employee NameName of the employee to be promoted
    GradeGrade of the employee.
    DesignationDesignation of the employee.
    LocationLocation of the employee
    Total Previous ExperienceTotal years of experience of the employee.
    Experience in PEERLESSTotal experience of the employee in PEERLESS
    Promotion Order NoPromotion Order reference no.
    To GradeGrade which employee is being promoted to.
    To DesignationDesignation which employee is being promoted to.
    Effective DatePromotion effective date.
    Approved ByThe authorized approver of the Promotion
    Approver's RemarksRemarks of the approver, if any.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLngReqDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLngReqDtl.html new file mode 100644 index 0000000..e351b06 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLngReqDtl.html @@ -0,0 +1,5 @@ + +
    Advertisement Attribute Details Language Requirement
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Language CodeUser enterable skill type code.
    DescriptionDescription of the particular skill required.
    Requirement TypeAdditional remarks, if any.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLocVacencyDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLocVacencyDtl.html new file mode 100644 index 0000000..625a8cc --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrLocVacencyDtl.html @@ -0,0 +1,5 @@ + +
    Advertisement Attribute Details Locationwise Vacancy
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    LocationUser enterable unique location code
    StateIndicates the state where the posts are vacant.
    CityIndicates the city where the posts are vacant.
    VacancyIndicates the number of vacancies for that post
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrQualReqDt.html b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrQualReqDt.html new file mode 100644 index 0000000..14dd822 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrQualReqDt.html @@ -0,0 +1,5 @@ + +
    Advertisement Attribute Details Qualification Details
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    It maintains the various attributes possible for an advertisement published in various media and enables the user to enter and update the same. Corresponding a particular reference no and a particular position for which advertisement is published, this function is further sub-divided into sub-functions like Location Wise Vacancy Detail, Qualification Requirement etc.
    Go Top
    Header Fields Description:
    Reference No.Reference number
    Grade/DesignationIndicates for which grade/designation the following attributes are applicable.
    Go Top
    Detail Fields Description:
    QualificationUser enterable unique Qualification code, coming from Qualification Master
    Qualification DescriptionDescription of the qualification
    Specialisation InIndicates area of specialization.
    Exposure InIndicates exposure in any particular field.
    Mandatory FlagIndicates whether that qualification is mandatory/desirable for that particular post.
    Maximum Qualification FlagIndicates whether this particular qualification is the maximum qualification required for that particular post. Possible values (Y-- Yes, N-- No)
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrSkillReqDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrSkillReqDtl.html new file mode 100644 index 0000000..bebaa4c --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrSkillReqDtl.html @@ -0,0 +1,5 @@ + +
    Advertisement Attribute Details General Skill Requirement
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Skill TypeUser enterable skill type code.
    SkillDescription of the particular skill required.
    Any Additional RemarksAdditional remarks, if any.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrWorkExpDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrWorkExpDtl.html new file mode 100644 index 0000000..0979ed8 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvAttrWorkExpDtl.html @@ -0,0 +1,5 @@ + +
    Advertisement Attribute Details Work Experience
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    GradeGrade of the applicant in previous job.
    DesignationDesignation of the applicant in previous job.
    Experience AreaArea of work experience.
    Exposure InExposure in any particular field.
    Min Work ExperienceMinimum work experience required for the advertised post.
    Max Work ExperienceMaximum work experience required for the advertised post.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecAdvtMtn.html b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvtMtn.html new file mode 100644 index 0000000..4c36fec --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecAdvtMtn.html @@ -0,0 +1,5 @@ + +
    Advertisement Maintenance
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen focuses on the maintenance of advertisements, which are published for recruitment process in an organisation.
    Go Top
    Header Fields Description:
    Reference No.User assigned number that will give letter number authorizing publication of the advertisement.
    Entry ModeIndicates the mode of recruitment, e.g. Campus Recruitment, Walk-In Interview etc.
    Reference DateIndicates the date of publication of the advertisement
    Last Date of Receiving ApplicationDate after which no further applications will be received
    Media TypeMedia of advertisement. Whether print, electronic or cyber media
    Media NameName of the media.
    DescriptionAdditional Information regarding the media.
    Minimum written scoreMinimum Score required to qualify in written exam
    Minimum GD scoreMinimum Score required to qualify in GD exam
    Minimum interview score (1)Minimum Score required to qualify in 1st Interview
    Minimum interview score (2)Minimum Score required to qualify in 2nd Interview
    Minimum interview score (3)Minimum Score required to qualify in 3rd Interview
    Min total scoreMinimum Total Score required to qualify for the post
    VenueVenue of the exam
    DateExamination Date
    Time Time of the exam
    Go Top
    Detail Fields Description:
    GradeGrade for which advertisement has been given.
    DesignationDesignation for which advertisement has been given.
    Applicant categoryClassification parameter used to categorize the applicants (e.g. Category 1, Category 2, Category 3 etc.).
    Reservation categoryReservation category for the advertisement (e.g. General caste, Scheduled cast, Scheduled Tribe etc.).
    Total vacancyTotal number of vacancies for the post advertised.
    SexGender of the applicant (Male/Female/All)
    Minimum AgeMinimum age for applying for the advertisement
    Maximum AgeMaximum age for applying for the advertisement
    Maximum Age as on DateMaximum age of the applicant will be calculated from this date
    Amount (Rs) to be sent with the applicationAmount to be sent along with the application (if applicable).
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnAddDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnAddDtl.html new file mode 100644 index 0000000..59923ca --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnAddDtl.html @@ -0,0 +1,5 @@ + +
    Application Maintenance Personal Details
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen deals with recording and maintaining the details of applications submitted by an applicant responding to an advertisement.
    Go Top
    Header Fields Description:
    Application NumberApplication Number
    Application DateDate of application.
    Reference No.Reference number.
    Application for Grade/ DesignationThe grade & designation for which the application is submitted.
    Applicant's NameName of the applicant.
    Go Top
    Detail Fields Description:
    Date Of BirthDate of birth of applicant
    Place of BirthPlace of birth of the applicant
    NationalityEmployee martial status
    Marital StatusEmployee martial status
    SexGender of the Employee
    Mother TongueMother tongue of employee
    Related To EmployeeIndicates if the applicant is related to any employee
    Employee NameName of the employee to whom the person is related
    ReligionReligion of the employee
    HandicappedIndicates whether applicant is handicapped or not
    Health RecordIndicates health record of the applicant
    E-MailEmail of the applicant
    Applied EarlierCheck Flag that indicates if the applicant had applied previously
    Blood GroupBlood group
    Reservation CategoryIndicates the social status of the applicant.
    Previously Employed HereCheck Flag that indicates if the applicant had worked in this organization previously
    If Yes, DetailsIf worked previously then details to be mentioned here
    HobbiesHobbies of the applicant
    Gross Salary Expected Per AnnumIndicates the applicant's expectation of Gross salary per annum
    Any Additional InformationAdditional information, if any.
    Father/Husband's Name Name of applicants guardian
    StateState where the employee resides.
    CountryCountry where the employee resides
    PINPin code.
    PhoneTelephone number.
    Passport No.Passport number
    Passport Issue DateDate of issue of the passport
    Place of Issue of PassportPlace from which the passport was issued.
    Passport Expiry DateDate of expiry of passport
    Cheque/DD No.Bank Cheque/DD no provided by the applicant
    Submitted AmountAmount submitted by applicant
    Submission DateDate of submission
    Arrested BeforeCheck flag indicating if previously arrested
    Imprisoned BeforeCheck flag indicating if previously imprisoned
    RemarksReason/Description for Arrest/Imprisonment/Prosecution/Fined by court
    Prosecuted BeforeCheck flag indicating if previously prosecuted
    Fined By CourtCheck flag indicating if previously fined by court
    AddressPresent residential address of the employee
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnEduDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnEduDtl.html new file mode 100644 index 0000000..1c15546 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnEduDtl.html @@ -0,0 +1,5 @@ + +
    Application Maintenance Education Deetails
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Name of InstitutionName of the Institution where the employee studied
    Exam passedName of the exam passed by the employee
    PercentagePercentage the employee got for the specified exam
    Pass YearYear in which the employee passed the exam
    Major SubjectsMajor subjects of the specified course.
    SpecializationSpecialization of the employee
    Other Professional Qualifications (including IT)Other Professional Qualifications of the employee including IT
    Specialized courses attended by the employee (including IT)Specialized courses attended by the employee (including IT)
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnExpDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnExpDtl.html new file mode 100644 index 0000000..79f0ece --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnExpDtl.html @@ -0,0 +1,5 @@ + +
    Application Maintenance Experience Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Organisation NameName of the organization in which the employee previously worked.
    LocationAddress of the organization in which the employee previously worked.
    Period From (YYMMMM)Date from which the employee was working in the previous organization.
    Period To (YYMMMM)Date to which the employee was working in the previous organization.
    Work Experience (in months)Work experience of the employee in months, this will be calculated automatically.
    DesignationDesignation of the employee in the previous organization.
    Report to (Name/Designation)Person to which the employee was reporting in the previous organization.
    Job Description/ResponsibilityResponsibility handled by the employee in the previous organization.
    No. of personnel supervisedNumber of supervisors of the employee in the previous organization.
    Salary (Starting) per monthStarting salary (per month) in the previous organization.
    Salary (Leaving) per monthLeaving salary (per month) in the previous organization.
    Basic (Last Drawn)Basic last drawn from the previous organization.
    DA (Last Drawn)DA last drawn from the previous organization.
    HRA (Last Drawn)HRA last drawn from the previous organization.
    Conveyance (Last Drawn)Conveyance allowance from the previous organization.
    Other allowances (Last Drawn)Other allowances last drawn from the previous organization
    Incentives (Last Drawn)Incentives last drawn from the previous organization.
    Bonus (Last Drawn)Bonus last drawn from the previous organization.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnLangDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnLangDtl.html new file mode 100644 index 0000000..098a21d --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnLangDtl.html @@ -0,0 +1,5 @@ + +
    Application Maintenance Language Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Language CodeUnique code given for each language.
    Knowledge levelKnowledge level of the person in the corresponding language.The Options are: Read/Write/Communicate/All
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnRef.html b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnRef.html new file mode 100644 index 0000000..e395a93 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnRef.html @@ -0,0 +1,5 @@ + +
    Application Maintenance Reference
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    NameName of the person whom can be referred about the employee
    AddressAddress of the person who can be referred about the employee
    PhoneTelephone number of the person who can be referred about the employee
    PositionPosition/Occupation of the person who can be referred about the employee
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnResultDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnResultDtl.html new file mode 100644 index 0000000..3930326 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnResultDtl.html @@ -0,0 +1,5 @@ + +
    Application Maintenance Result Details
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Test CenterCentre where the test of the applicant will take place.
    Qualified For WrittenCheck flag indicating whether applicant had qualified for written.
    Qualified For GDCheck flag indicating whether applicant had qualified for GD.
    Written Score Written score after applicant appeared for written test.
    GD ScoreGD score after applicant appeared for GD.
    Qualified For Interview (1)Check flag indicating whether applicant had qualified for Interview (1).
    Qualified For Interview (2)Check flag indicating whether applicant had qualified for Interview (2).
    Qualified For Interview (3)Check flag indicating whether applicant had qualified for Interview (3).
    Interview (1) ScoreInterview score after applicant appeared for Interview (1).
    Interview (2) ScoreInterview score after applicant appeared for Interview (2).
    Interview (3) ScoreInterview score after applicant appeared for Interview (3).
    RatingIndicates overall interview rating of the applicant
    Offer AcceptedCheck flag indicating whether applicant accepted offer.
    Medical ClearedCheck flag indicating whether applicant cleared medical test.
    AppointedCheck flag indicating whether applicant has been appointed.
    JoinedCheck flag indicating whether applicant joined the organization.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnTrngDtls.html b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnTrngDtls.html new file mode 100644 index 0000000..b587ef6 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmRecApplnMtnTrngDtls.html @@ -0,0 +1,5 @@ + +
    Application Maintenance Pre Employment Training
    Detail Fields Description:
    TOC +
    Detail Fields Description:
    Course NameName of the courses attended by the employee
    From DateStart date of the course
    To DateEnd date of the course
    SubjectSubject covered in the course
    Institute/OrganisationInstitute or organisation which organized the course
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmSepCatMst.html b/hrmsWeb/hrms/helpfile/HRMHrmSepCatMst.html new file mode 100644 index 0000000..1c6ba89 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmSepCatMst.html @@ -0,0 +1,10 @@ + +
    Separation Category Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Separation Category Master screen is used to define + +Separation Categories that are of significance to the organization. Example of + +Separation Categories can be resignation, retirement, voluntary retirement etc. +
    Go Top
    Header Fields Description:
    Separation Code Unique Code for each separation type.
    Notice Period Indicates the time period of separation notice
    Remarks Remarks about separation
    Separation Type Indicates who can generate a particular type of separation (e.g. self/office)
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmSepClrEmp.html b/hrmsWeb/hrms/helpfile/HRMHrmSepClrEmp.html new file mode 100644 index 0000000..f34cbed --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmSepClrEmp.html @@ -0,0 +1,9 @@ + +
    Employee Clearance
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    Whenever an employee is separated from the organization, a clearance list is generated for that employee. The Clearance list consists of a list of departments with a check box indicating whether Clearance has been given to that employee by that department. Only when all the departments give the clearance, the employee can claim the full & final settlements and leave the organisation. + +
    Go Top
    Header Fields Description:
    Employee NoEmployee No of the employee being separated. + +
    Template DescriptionLOV from Clearance Template Master
    Go Top
    Detail Fields Description:
    Clearance DescriptionDescription of the section from where clearance is to be taken.
    Check FlagIndicates whether the employee is cleared or not.
    CommentRemarks, if any.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmSepClrLst.html b/hrmsWeb/hrms/helpfile/HRMHrmSepClrLst.html new file mode 100644 index 0000000..41bd31d --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmSepClrLst.html @@ -0,0 +1,5 @@ + +
    Separation Clearance List
    General Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen is used to create a list of departments from which an employee needs to take clearance before being separated from the organization.
    Go Top
    Detail Fields Description:
    DescriptionIndicates the name of sections of the organization from where clearance is required.
    TypeIndicates the type, whether external/internal
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmSepClrTmplMst.html b/hrmsWeb/hrms/helpfile/HRMHrmSepClrTmplMst.html new file mode 100644 index 0000000..a8352f0 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmSepClrTmplMst.html @@ -0,0 +1,7 @@ + +
    Clearance Template Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen is used to create a template for generating a list of departments from which an employee needs to take clearance before separating from the organization.
    Go Top
    Header Fields Description:
    Template DescriptionSpecifies the name of a particular template
    ObsoleteIndicates whether a particular template is obsolete
    Go Top
    Detail Fields Description:
    Clearance DescriptionIndicates the name of sections of the organization from where clearance is required. + +
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmSepOrder.html b/hrmsWeb/hrms/helpfile/HRMHrmSepOrder.html new file mode 100644 index 0000000..799c390 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmSepOrder.html @@ -0,0 +1,7 @@ + +
    Separation Order
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The function deals with the order of separation against application for separation of each employee. + +
    Go Top
    Header Fields Description:
    Application NoReference No of the separation application
    Application DateDate of application
    Initiated byIndicates if the application is self or office generated
    Employee NoEmployee No of the employee being separated
    Employee NameName of the employee
    Separation CategoryIndicates the separation category.
    Requested Separation DateThe proposed date of separation given by the employee.
    ReasonReason of separation
    Order NoIndicates order number
    Order DateThe date of generating separation order
    Actual Separation DateThe actual date of separation
    Approved ByThe designated employee who approved the
    Approver's RemarksRemarks of the approver
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmSeparationAppln.html b/hrmsWeb/hrms/helpfile/HRMHrmSeparationAppln.html new file mode 100644 index 0000000..ce51ddc --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmSeparationAppln.html @@ -0,0 +1,5 @@ + +
    Separation Application
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    Applications for separation for an employee from his/her service, which may be in the form of resignation, retirement, voluntary retirement etc, are maintained through this screen.
    Go Top
    Header Fields Description:
    Employee NoEmployee No of the employee being separated
    Employee NameName of the employee
    GradeGrade of the employee
    DesignationDesignation of the employee
    LocationLocation of the employee
    Application NoReference No of the separation application
    Application DateDate of application
    Initiated byIndicates if the application is self or office generated
    Separation CategoryIndicates the separation category.
    Immediate effectIndicates whether the separation will be effected immediately
    Requested Separation DateThe proposed date of separation given by the employee. In case of normal retirement this date is internally calculated
    Actual Separation DateThe actual date of separation
    Reason Reason of separation
    Withdraw applicationIndicates whether the application is withdrawn or not.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTestCentreMaster.html b/hrmsWeb/hrms/helpfile/HRMHrmTestCentreMaster.html new file mode 100644 index 0000000..4852a4f --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTestCentreMaster.html @@ -0,0 +1,5 @@ + +
    Test Center Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    This screen is used to enter information about Test Centers where tests are conducted.
    Go Top
    Header Fields Description:
    Test centre CodeUnique code of the test centre.
    PhonePhone number of the test centre.
    FaxFax number of the test centre.
    AddressAddress of the test centre.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngBudget.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngBudget.html new file mode 100644 index 0000000..2044daf --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngBudget.html @@ -0,0 +1,5 @@ + +
    Budget Detail
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    Through this screen user can maintain the training budget of a training course. The user can create, modify and delete Training course Budget for a given Training Course and also can track records of expenses till date and available budget for the particular course.
    Go Top
    Header Fields Description:
    Calendar NameCode and name of a particular training calendar.
    Approved BudgetAmount approved for a particular training calendar.
    Spent Till DateIt is the sum of expenses for various courses offered under a particular training calendar (till date).
    Available BudgetIt is the difference of Approved Budget and Spent till date.
    Go Top
    Detail Fields Description:
    Course NameCode and name of a training course under the training calendar
    From DateDate from which the selected course starts.
    To DateDate on which the selected course ends.
    TravelAmount of money spent for travel purpose.
    AccommodationAmount of money spent for accommodation.
    Daily AllowancesAmount of money spent for daily allowances.
    Food ExpensesAmount of money spent for food expenses.
    Training FeesAmount of money spent for travel purpose.
    Misc.Amount of money spent for miscellaneous things.
    TotalTotal amount of money spent for the selected course.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngCal.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngCal.html new file mode 100644 index 0000000..030b2dc --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngCal.html @@ -0,0 +1,5 @@ + +
    Training Calendar
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Training Calendar screen is used to create a new Training Calendar or modify any existing Training Calendar. In this screen, the user can enter the Course wise Calendar Details like Course Code, Duration of the Course, Number of Participants expected and the Rating Scheme to be used for that course.
    Go Top
    Header Fields Description:
    Calendar NameName of the selected calendar
    Start DateThe date from which the calendar is applicable.
    End DateThe date up to which the calendar is applicable.
    SiteThe name of the site where the selected Calendar is followed.
    Go Top
    Detail Fields Description:
    Course CodeThe code for the Course offered by the Institute.
    Course NameThe name of the Course offered by the Institute.
    Institute NameThe name of the Institute that is offering the course.
    VenueVenue of the course
    TypeThe Course type (Depends upon the course contents).
    DurationDuration of the course
    Start DateStart date of the course
    End DateEnd date of the course
    StrengthTotal number of participants allowed for the course.
    FeeCourse fees.
    Rating SchemeLOV from Rating Master.
    StatusCurrent status can have two values. i.e., Pending, Closed.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngCrsMst.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngCrsMst.html new file mode 100644 index 0000000..34fa40d --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngCrsMst.html @@ -0,0 +1,5 @@ + +
    Training Course Master
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    Through this screen user will maintain the Training Stream and corresponding Course Detail like the course code and name of the courses that are of significance to the organisation. The user can create, modify and delete Course Details against each of the Training Stream.
    Go Top
    Header Fields Description:
    Training StreamName of the training stream
    Go Top
    Detail Fields Description:
    Course CodeThe code of a course that is included in the selected Training Stream.
    Course NameName of the course included in the selected Training Stream
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpAtt.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpAtt.html new file mode 100644 index 0000000..fcb2cf6 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpAtt.html @@ -0,0 +1,5 @@ + +
    Training Attendance
    Header Fields Description:
    Detail Fields Description:
    TOC +
    Header Fields Description:
    Course NameName of the course
    Institution NameThe name of the Institution that offered the course.
    Start DateThe start date of the course selected.
    End dateThe end date of the course selected.
    Go Top
    Detail Fields Description:
    Employee No.Employee number of the person who attended the course.
    Employee NameName of the employee.
    Training DateDate of training
    AttendanceIndicates whether the employee attended the course or not.
    Reason for absenceIf the employee has not attended the course, the reason for absence is to be filled in this column.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpHist.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpHist.html new file mode 100644 index 0000000..3b94f30 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpHist.html @@ -0,0 +1,5 @@ + +
    Training History
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    This screen is used to view the Training History of an employee against a Training calendar and Course within a date range. This screen is a query only screen. Through this screen the user can only query the Training history details.
    Go Top
    Header Fields Description:
    Employee No.The end date of the course selected.
    Calendar nameThe name of the Calendar followed. This field is selected for querying the training history of a particular calendar.
    CourseThe name of the course offered. This filed is used for querying the training history of a particular course.
    Employee No.Employee number. This filed is used for querying the training history of a particular employee.
    Institution NameThe name of the Institution that offers the course.
    From DateThe name of the Institution that offers the course.
    To DateThe start date of the course selected.
    Go Top
    Detail Fields Description:
    Employee NameEmployee Code
    ParticipationName of the Employee
    Reason for non-participationThis tells whether the employee participated in the course or not.
    RatingThe reason if the employee did not participate in the training.
    Training Attendance DetailThe Rating for the employee in the course.
    Training Attendance DetailOn Clicking the Attendance Detail button you can check, whether the employee has attended the course on all the days during the training period.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpReq.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpReq.html new file mode 100644 index 0000000..c9c516c --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngEmpReq.html @@ -0,0 +1,5 @@ + +
    Training Requirement
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Training Requirement screen is used to enter Training Requirement of an employee. Employee No field displays the Employee Number of the Employee who has currently logged in to the Application. The training requirement, after being saved by the user, needs to be submitted to initiate the training process.
    Go Top
    Header Fields Description:
    Employee NumberThe employee number of the person who has logged in.
    Employee NameName of the employee.
    GradeGrade of the employee.
    DesignationDesignation of the employee. This is a read only field.
    LocationPlace where the employee is posted.
    Date SubmittedThe date when the employee has submitted his request to undergo training.
    Course NameName of the course that the employee wishes to attend.
    Training CalendarName of training calendar
    Institution NameName of the institution conducting the course.
    Start DateThe start date of the selected course.
    End DateThe end date of the selected course.
    NatureThe nature of the request submitted by the employee.
    PurposeThe reason why the employee wants to attend the course.
    Recommended ByPerson who recommended the course.
    Go Top
    Detail Fields Description:
    DateProposed date of participation.
    ParticipationIndicates whether the person has participated during the proposed date. Valid options are: Yes/No.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngFacFdbkDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngFacFdbkDtl.html new file mode 100644 index 0000000..164b11f --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngFacFdbkDtl.html @@ -0,0 +1,5 @@ + +
    Employee Feedback
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    Through this screen the user can view/enter Employee's Training Feedback about the various attributes of a course as well as of the faculty
    Go Top
    Header Fields Description:
    Course NameName of the course
    Institution NameName of the Institution
    VenueVenue of Training
    Rating SchemeScheme applied for rating.
    Minimum RatingThe Minimum Rating Value for the selected course.
    Maximum RatingThe Maximum Rating Value for the selected course.
    Start DateThe start date of the course selected.
    End DateThe End date of the course selected.
    StatusThe status of the course.
    Go Top
    Detail Fields Description:
    Skill AreaIndicates a specialized area under the course that the faculty has taken.
    Faculty NameName of the faculty
    Employee No.Employee number of the person who has filled up the employee feedback form.
    Employee NameName of the employee.
    Delivery ClarityRating for the Delivery clarity of the faculty.
    PresentationRating for the presentation skills of the faculty.
    InteractionRating for the Faculty's ability to interact with the participants during training.
    Course MaterialRating about the course materials.
    Course ObjectiveRating for the objective of the course offered.
    Course DurationRating on the duration of the course.
    Training AidsRating of the training aids provided.
    Training ArrangementsRating over training arrangements
    Overall RatingIndicates the overall rating given by the employee
    Topics Relevant/ UsefulEmployee can specify the topics relevant for the course in this field.
    Topics irrelevant/ Less UsefulEmployee can specify the topics irrelevant for the course in this field.
    SuggestionsSuggestions given by the employee for the improvement of the course.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngFacMst.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngFacMst.html new file mode 100644 index 0000000..04062ae --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngFacMst.html @@ -0,0 +1,5 @@ + +
    Faculty Master
    General Description:
    Header Fields Description:
    TOC +
    General Description:
    The Faculty Master screen is used to enter faculty information. The user can create, modify and delete any faculty through this screen.
    Go Top
    Header Fields Description:
    Faculty TypeThe type of faculty assigned for a course. (Whether they belong to the selected Institution or not).
    Employee No.The employee no of the faculty.
    Base InstitutionThe name of the Institution the faculty belongs to.
    Employee NameName of the faculty.
    ExperienceThe relevant work experience (in years) of the faculty.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngFacTrngDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngFacTrngDtl.html new file mode 100644 index 0000000..4406b68 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngFacTrngDtl.html @@ -0,0 +1,5 @@ + +
    Training Detail
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Training Details screen is used to create training details i.e. assign a faculty to a particular course of an Institute, skill area that will be covered in a course, course duration, start & end time of the course etc. in a Training calendar for an organisation.
    Go Top
    Header Fields Description:
    Calendar NameThe name of the Calendar to be followed.
    SiteThe site code and the name of the site.
    Course NameThe name of the course offered in the training.
    Institution NameThe name of the Institute that offers the selected course for the company.
    VenuePlace where the course is conducted.
    Start DateThe start date of the course.
    End DateThe end date of the course.
    Course StatusThe status of the course selected.
    Go Top
    Detail Fields Description:
    Skill AreaArea of proficiency of the course.
    Name of facultyThe name of the faculty assigned for the selected course.
    From DateThe date when the selected course starts.
    To DateThe date when the selected course ends.
    Start TimeThe starting time of the training.
    End TimeThe end time of the training.
    Average RatingThe average rating of the faculty given by the employees for the course selected.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/HRMHrmTrngInstCourseDtl.html b/hrmsWeb/hrms/helpfile/HRMHrmTrngInstCourseDtl.html new file mode 100644 index 0000000..f4a117f --- /dev/null +++ b/hrmsWeb/hrms/helpfile/HRMHrmTrngInstCourseDtl.html @@ -0,0 +1,5 @@ + +
    Institute & Course Detail
    General Description:
    Header Fields Description:
    Detail Fields Description:
    TOC +
    General Description:
    The Institute and Course Detail screen is used to enter the courses offered by different Training Institutes. The user can create, modify and delete any Training Institute and its courses.
    Go Top
    Header Fields Description:
    Institute CodeThe Code and Name of the Institute that offers training to employees.
    TypeType of the Faculty assigned for the training.
    In ChargeThe Person who is in charge of the Training Institute.
    AddressThe complete contact address of the Institute.
    E-mailThe e-mail id for correspondence.
    CityThe name of the city where the Institute is located.
    StateThe name of the state where the city is located.
    CountryThe name of the Country where the city is located.
    PINThe pin code of the city.
    PhoneThe contact phone number.
    FaxThe Fax No of the Institution.
    Go Top
    Detail Fields Description:
    Course CodeThe course code.
    Course NameThe name of the selected course.
    Go Top
    \ No newline at end of file diff --git a/hrmsWeb/hrms/helpfile/TOC.html b/hrmsWeb/hrms/helpfile/TOC.html new file mode 100644 index 0000000..df5eba1 --- /dev/null +++ b/hrmsWeb/hrms/helpfile/TOC.html @@ -0,0 +1,281 @@ + +
    Table of Contents
    * + Qualification Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Eligibility Rule Query
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Eligibility Rules
    ..** + General Description:
    ..** + Header Fields Description:
    * + Holiday Calendar
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Work Group Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Holiday Type Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Classification Details
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Country Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Scale Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Skill Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Religion Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Relation Details
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Relation Master
    ..** + General Description:
    ..** + Detail Fields Description:
    * + Rating Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Language Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Calendar Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Leave Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Leave Encashment
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Leave Cancellation
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Leave Application
    ..** + General Description:
    ..** + Header Fields Description:
    * + Leave Cancellation Query
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Test Center Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Advertisement Attribute Details Qualification Details
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Advertisement Attribute Details Locationwise Vacancy
    ..** + Detail Fields Description:
    * + Advertisement Attribute Details Work Experience
    ..** + Detail Fields Description:
    * + Advertisement Attribute Details Job Description
    ..** + Detail Fields Description:
    * + Advertisement Attribute Details General Skill Requirement
    ..** + Detail Fields Description:
    * + Advertisement Attribute Details Language Requirement
    ..** + Detail Fields Description:
    * + Advertisement Maintenance
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Application Maintenance Personal Details
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Application Maintenance Experience Details
    ..** + Detail Fields Description:
    * + Application Maintenance Language Details
    ..** + Detail Fields Description:
    * + Application Maintenance Education Deetails
    ..** + Detail Fields Description:
    * + Application Maintenance Result Details
    ..** + Detail Fields Description:
    * + Application Maintenance Pre Employment Training
    ..** + Detail Fields Description:
    * + Application Maintenance Reference
    ..** + Detail Fields Description:
    * + Disciplinary Action
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Employee Personal Details
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Employee Address Details
    ..** + Detail Fields Description:
    * + Joining Details
    ..** + Detail Fields Description:
    * + Employee History
    * + Prior Experience
    ..** + Detail Fields Description:
    * + Education Details
    ..** + Detail Fields Description:
    * + PF Details
    ..** + Detail Fields Description:
    * + Training Details
    ..** + Detail Fields Description:
    * + References
    ..** + Detail Fields Description:
    * + Loan Chart
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Employee Reimbursement
    ..** + General Description:
    ..** + Header Fields Description:
    * + Advance Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Advance Application
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Loan Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Loan Application
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Claim Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Attendance Entry
    ..** + Header Fields Description:
    * + Employee Attendance (IN)
    ..** + General Description:
    ..** + Header Fields Description:
    * + Shift Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Employee Attendance (OUT)
    ..** + General Description:
    ..** + Header Fields Description:
    * + Faculty Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Training Attendance
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Training Detail
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Training Calendar
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Institute & Course Detail
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Training Requirement
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Employee Feedback
    ..** + General Description:
    * + Training Course Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Budget Detail
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Training History
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Appraisal KPA
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Appraisal Template Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Appraisal Specific Template KPA
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Appraisal Specific Template Goals
    ..** + Detail Fields Description:
    containing navigation buttons */ + background: #778; + color: #fff; +} + +.calendar thead .daynames { /* Row containing the day names */ + background: #bdf; +} + +.calendar thead .name { /* Cells in footer (only one right now) */ + text-align: center; + background: #556; + color: #fff; +} + +.calendar tfoot .ttip { /* Tooltip (status bar) cell
    * + Appraisal Specific Template Employee Eligibility
    * + Appraisal Start Order
    ..** + General Description:
    ..** + Header Fields Description:
    * + Appraisal Rule
    ..** + General Description:
    ..** + Header Fields Description:
    * + Employee Appraisal KPA
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Employee Appraisal Goals
    ..** + Detail Fields Description:
    * + Employee Appraisal Training Requirement
    ..** + Detail Fields Description:
    * + Employee Appraisal Employee Details
    ..** + Detail Fields Description:
    * + Promotion Order
    ..** + General Description:
    ..** + Header Fields Description:
    * + Separation Category Master
    ..** + General Description:
    ..** + Header Fields Description:
    * + Clearance Template Master
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Separation Order
    ..** + General Description:
    ..** + Header Fields Description:
    * + Separation Clearance List
    ..** + General Description:
    ..** + Detail Fields Description:
    * + Employee Clearance
    ..** + General Description:
    ..** + Header Fields Description:
    ..** + Detail Fields Description:
    * + Separation Application
    ..** + General Description:
    ..** + Header Fields Description:
    * + Transfer Cancellation Order
    ..** + General Description:
    ..** + Header Fields Description:
    * + Transfer Charge Report
    ..** + General Description:
    ..** + Header Fields Description:
    * + Transfer Order
    ..** + General Description:
    ..** + Header Fields Description:
    * + Employee Transfer Application
    ..** + General Description:
    ..** + Header Fields Description:
    * + Transfer Cancellation Application
    ..** + General Description:
    ..** + Header Fields Description:
    \ No newline at end of file diff --git a/hrmsWeb/hrms/includes/ENRGISE.css b/hrmsWeb/hrms/includes/ENRGISE.css new file mode 100644 index 0000000..38075e7 --- /dev/null +++ b/hrmsWeb/hrms/includes/ENRGISE.css @@ -0,0 +1,429 @@ +/*------------------------------------------------------------------------------ + StyleSheet for Web-Enrgise. + -------------------------- +Author: Amitava Basak +------------------------------------------------------------------------------*/ + +/*Html Body, Scrollbars, background Color, Font etc for html BODY +-----------------------------------------------------------------*/ +BODY { + margin:0px; + background-color:#eff9ff; + text: #000000; + font-size:8pt; + font-family:"Arial, Helvetica, sans-serif"; + scrollbar-arrow-color:#006699; + scrollbar-face-color:#FFFFFF; + scrollbar-track-color:"#eeeeee"; + scrollbar-shadow-color:#006699; + scrollbar-highlight-color:'#006699'; + scrollbar-3dlight-color:'#FFFFFF'; + scrollbar-darkshadow-Color:'#FFFFFF'; + +} + +/*For INPUT tag +----------------------------*/ +INPUT +{ + text: #000000; + font-size:8pt; + font-family:"Arial, Helvetica, sans-serif"; +} + +/*For TEXTAREA tag +----------------------------*/ +TEXTAREA +{ + text: #000000; + font-size:8pt; + font-family:"Arial, Helvetica, sans-serif"; + scrollbar-arrow-color:#006699; + scrollbar-face-color:#FFFFFF; + scrollbar-track-color:"#eeeeee"; + scrollbar-shadow-color:#006699; + scrollbar-highlight-color:'#006699'; + scrollbar-3dlight-color:'#FFFFFF'; + scrollbar-darkshadow-Color:'#FFFFFF'; +} + +/*for TABLE tag +----------------------------*/ +TABLE { + border-collapse:separate; + border-spacing:0px 0px; + border: 0px; + padding:0px; + width:100%; + font-size:8pt; + font-family:"Arial, Helvetica, sans-serif"; + +} + +/*for Hyperlinks +----------------------------*/ +A:hover {color: orange;} +a{ color: blue; text-decoration: underline; font-family:verdana; font-size:12} +A:hover {color: orange;} + + + +/*DIV for entire html Body +----------------------------*/ +#divBody { + position:RELATIVE; + left:0px; + top:0px; + width:100%; + height:100%; + overflow-y:scroll; + overflow-x:hidden; + background-color:#eff9ff; +} + +.blueLine +{ +background-color:#4682b4; +} +.disTab +{ +background-color:#76A2C7; +} +.actTab +{ +background-color:#4682b4; +} + +/*DIV for Detail Table +----------------------------*/ +#divDtlTable { + position:RELATIVE; + left:0px; + top:0px; + width:100%; + height:100%; + overflow:scroll; +} + +/*DIV For Tree Menu +---------------------------*/ +#divHdrTable { + position:RELATIVE; + left:0px; + top:0px; + width:100%; + height:100%; + overflow:scroll; +} + +/* +----------------------------*/ +.BannerText +{ +color:black; +font-size:15pt; +text-align:right; +font-family:"Arial, Helvetica, sans-serif"; +} + +/*Main Header of the Page +----------------------------*/ +.mainHeader +{ +color:black; +font-size:10pt; +text-align:center; +font-weight:bold; +font-family:"verdana, Arial, Helvetica, sans-serif"; +background-color:#eff9ff; +} + + +/*for Sub Headers (non tab header) +----------------------------------*/ +.subHeader +{ +color :black; +font-size:8pt; +font-weight:bold; +text-align:left; +font-family:"verdana,Arial, Helvetica, sans-serif"; +} + +/*for Labels +----------------------------*/ +.labelText +{ +color:black; +font-size:8pt; +text-align:right; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +padding:7px; +} + +/*For radio button text (left align) +------------------------------------*/ +.radioText +{ +color:black; +font-size:8pt; +text-align:left; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +} + +/*Activated tab text (yellow) +----------------------------*/ +.actTabText +{ +cursor:default; +color:yellow; +background-color:#4682B4; +font-size:8pt; +text-align:left; +font-weight:bold; +font-family:"verdana, Arial, Helvetica, sans-serif"; +} +.actDriverTabText +{ +cursor:default; +color:yellow; +background-color:#4682B4; +font-size:25pt; +text-align:left; +font-weight:bold; +font-family:"verdana, Arial, Helvetica, sans-serif"; +} + +/*Deactivated Tab Text +----------------------------*/ +.disTabText +{ +cursor:hand; +background-color:#76A2C7; +color:white; +font-size:8pt; +text-align:left; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +} + +/* +----------------------------*/ +.userText +{ +color:white; +font-size:8pt; +text-align:right; +font-weight:bold; +font-family:"verdana, Arial, Helvetica, sans-serif"; +background-color:#eff9ff; + +} + +/*for Font in bottom (blue) bar +------------------------------*/ +.bottomBarText +{ +color:black; +font-size:8pt; +text-align:center; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +} + +/*for Font in Header Navigation Bar +-----------------------------------*/ +.navText +{ +color:navy; +font-size:8pt; +text-align:center; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +} + +/*for Font in Detail Navigation Bar +-----------------------------------*/ +.dtlNavText +{ +color:navy; +font-size:8pt; +text-align:right; +v-align:center; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +} + +/*for Detail Table Header +----------------------------*/ +.tableHeader +{ +color:white; +font-size:8pt; +text-align:center; +font-weight:normal; +background-color:#4682b4; +font-family:"verdana, Arial, Helvetica, sans-serif"; +Z-INDEX: 50; +TOP: expression(document.getElementById("divDtlTable").scrollTop); +POSITION: relative; +} + +/*for Detail Table Body +----------------------------*/ +.tableText +{ +color:black; +font-size:10pt; +text-align:center; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +z-order:0; +} + +/*for Mandatory fields +----------------------------*/ +.required +{ + background-color: #ffffd3; + font-size=8pt; + font-weight:normal; + border-right: #699bb3 1px solid; + border-top: #699bb3 1px solid; + border-left:#699bb3 1px solid; + border-bottom:#699bb3 1px solid; + +} + +/*for Non-Mandatory fields +----------------------------*/ +.optional +{ + background-color: #ffffff; + font-size=8pt; + font-weight:normal; + border-right: #699bb3 1px solid; + border-top: #699bb3 1px solid; + border-left:#699bb3 1px solid; + border-bottom:#699bb3 1px solid; +} + +/*for Disabled Fields +----------------------------*/ +.locked +{ + background-color: #e0e0e0; + font-size:8pt; + + border-right: #c0c0c0 1px solid; + border-top: #c0c0c0 1px solid; + border-left:#c0c0c0 1px solid; + border-bottom:#c0c0c0 1px solid; +} + +/*for Disabled Tab +----------------------------*/ +.lockedTab +{ + color:"#c0c0c0"; + background-color: #e0e0e0; +} + + +/*for "blue" color of the bottom Bar +--------------------------------------*/ +.blueBar +{ + background-color: #4682B4; + font-size:8pt; + font-family:"verdana, Arial, Helvetica, sans-serif"; +} + +/*for "Hand" cursor +----------------------------*/ +.icon +{ +cursor:hand; +} + + +/*for Toggling colors in detail table (odd rows) +------------------------------------------------*/ +.oddRow +{ + background-color: #eff9ff; +} + +/*for Toggling colors in detail table (even rows) +------------------------------------------------*/ +.evenRow +{ + background-color: #ffffff; +} + +/*for highlighting detail table rows on mouseover +--------------------------------------------------*/ +.highlightRow +{ + background-color : #a6d2f4; +} + +/*when detail table rows are deleted +-------------------------------------*/ +.deletedRow +{ + background-color : #e0e0e0; +} + +/*For disaplying erros */ +.errorList +{ +font-weight:normal; +color: red; +font-size:8pt; +font-family:verdana; +text-align:left; +background-color :"#eff9ff"; + +} + +.launchPad +{ +font-weight:bold; +color: black; +font-size:8pt; +font-family:verdana; +text-align:left; +} + + +.HelpChapHeadText +{ +color:black; +font-size:15pt; +font-weight:bold; +text-align:center; +font-family:"verdana,Arial, Helvetica, sans-serif"; +} + +.HelpPartHeadText +{ +color:blue; +font-size:12pt; +font-weight:bold; +text-align:left; +font-family:"verdana,Arial, Helvetica, sans-serif"; +} + + +.HelpContentText +{ +color:black; +font-size:10pt; +text-align:left; +font-weight:normal; +font-family:"verdana, Arial, Helvetica, sans-serif"; +padding:7px; +} diff --git a/hrmsWeb/hrms/includes/ENRGISE.js b/hrmsWeb/hrms/includes/ENRGISE.js new file mode 100644 index 0000000..508496f --- /dev/null +++ b/hrmsWeb/hrms/includes/ENRGISE.js @@ -0,0 +1,893 @@ +appPath="/hrms"; +contextRoot="/hrms/"; +module="HRM"; +helpPath="helpfile/"; + +//****************************************************************************** +// HOT KEYS +//****************************************************************************** +var keyActions = new Array (); + +keyActions [0] = {character: "n", + actionType: "Alt", + butName: "butInsert", + param: "doBaseInsertMode();"}; +keyActions [1] = {character: "q", + actionType: "Ctrl", + butName: "butQuery", + param: "doBaseQueryMode();"}; +keyActions [2] = {character: "u", + actionType: "Ctrl", + butName: "butExecute", + param: "doBaseExecute();"}; +keyActions [3] = {character: "s", + actionType: "Ctrl", + butName: "butSave", + param: "doBaseSave();"}; +keyActions [4] = {character: "d", + actionType: "Ctrl", + butName: "butDelete", + param: "doBaseDelete();"}; +keyActions [5] = {character: "r", + actionType: "Ctrl", + butName: "butRefresh", + param: "doBaseRefresh();"}; +keyActions [6] = {character: "p", + actionType: "Ctrl", + butName: "butPrint", + param: "doBasePrint();"}; +keyActions [7] = {character: "x", + actionType: "Alt", + butName: "butExit", + param: "doBaseExit();"}; +keyActions [8] = {character: "?", + actionType: "Ctrl", + butName: "butHelp", + param: "doBaseHelp();"}; +keyActions [9] = {character: 188, + actionType: "Ctrl", + butName: "butPrevHeader", + param: "doBasePrevHeader();"}; +keyActions [10] = {character: 190, + actionType: "Ctrl", + butName: "butNextHeader", + param: "doBaseNextHeader();"}; +keyActions [11] = {character: "g", + actionType: "Ctrl", + butName: "butJumpHeader", + param: "doBaseJumpHeader();"}; +keyActions [12] = {character: "t", + actionType: "Ctrl", + butName: "butGetDetail", + param: "doBaseGetDetail();"}; +keyActions [13] = {character: "r", + actionType: "Alt", + butName: "butAddRow", + param: "doBaseAddRow();"}; +keyActions [14] = {character: "d", + actionType: "Alt", + butName: "butDelRow", + param: "doBaseDelRow();"}; +keyActions [15] = {character: 188, + actionType: "Alt", + butName: "butPrevDetail", + param: "doBasePrevDetail();"}; +keyActions [16] = {character: 190, + actionType: "Alt", + butName: "butNextDetail", + param: "doBaseNextDetail();"}; +keyActions [17] = {character: "g", + actionType: "Alt", + butName: "butJumpDetail", + param: "doBaseJumpDetail();"}; + +///////For Mandatory Checking////////////////////// +var recordNum=0 +var argCount +var items +var arrAttributeNames +var arrDataBase + +function mandatory_check(){ + var elems=document.all; + for(i=0; i= 48 && event.keyCode <= 58) || event.keyCode==46 || event.keyCode==9 || event.keyCode==8 ||event.keyCode==37 ||event.keyCode==39 )){ + event.returnValue=false; + } +} + + + +function isInteger(event) { + if(!((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode==46 || event.keyCode==9 || event.keyCode==8 || event.keyCode==39 )){ + event.returnValue=false; + } +} + +function isNumber(event) { + if(!((event.keyCode >= 48 && event.keyCode <= 57) )){ + event.returnValue=false; + } +} + +function isName(event) { + if(!((event.keyCode >= 65 && event.keyCode <= 90)|| (event.keyCode >= 97 && event.keyCode <= 122) || event.keyCode==46 || event.keyCode==9 || event.keyCode==8 ||event.keyCode==37 ||event.keyCode==39 || event.keyCode==190 || event.keyCode== 32 )){ + event.returnValue=false; + } +} + + +function isFloat(event) +{ + if(!((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode==46 || event.keyCode==9 || event.keyCode==8 +||event.keyCode==37 ||event.keyCode==39 || event.keyCode==190 )){ + event.returnValue=false; + } +} + + + + + +//****************************************************************************** +// CHECK/UNCHECK TEXT BOXES IN DETAIL +//****************************************************************************** +function toggleCheckBox(chkBoxName){ + var chkBoxes=document.getElementsByName(chkBoxName); + var chkFlag=document.getElementById("selectAll").checked?true:false; + for(i=0;i= iLength ) + { + evt.keyCode=0; + } +} + +//*********************************************************** +// FOR DISABLING THE CONTROL KEY +//************************************************************* + function doOnPressCtrl() +{ + if (event.ctrlKey) + { + event.keycode=0; + event.returnValue = false; + } +} + +//************************************************************* +// DETAIL TABLE FUNCTIONS +//************************************************************* +//function doBaseGetTab(tabName,action) : Gets the Tab Page. +//---------------------------------------------------------- +function doGetTab(tabName,action) +{ + if(isClearedToSubmit()){ + document.forms[0].forwardedPage.value = tabName; + document.forms[0].action = contextRoot+ action; + document.forms[0].submit(); + } +} + +//function doBaseGetDetail() : Gets the Details for First set. +//---------------------------------------------------------------------- +function doBaseGetDetail() +{ + var sAction=doGetDetail(); + if(sAction!=null) + { + document.forms[0].action=contextRoot+ sAction; + document.forms[0].submit(); + } +} + +//function doBaseAddRow() : Adds a Row in Detail Table. +//--------------------------------------------------------------- +function doBaseAddRow() +{ + var sAction=doAddRow(); + if(sAction!=null) + { + document.forms[0].action = contextRoot+ sAction ; + document.forms[0].submit(); + } +} + +//function doBaseDelRow() : Deletes Row/Rows from Detail table. +//----------------------------------------------------------------------- +function doBaseDelRow() +{ + //if(isClearedToSubmit()){ + // var oTable = document.getElementById(doGetDetailTableName()); + // if(oTable == null) + // { + // return; + // } + // var iTr2 = oTable.rows.length; + // var i = 0; + + // for(i=0; i < iTr2; i++) + //{ + // if(document.getElementsByName("selectAll")[i].checked) + // { + // document.getElementsByName("selectAll")[i].value = "Y"; + // } + // } + + document.forms[0].action = contextRoot+ doDelRow(); + document.forms[0].submit(); + //} +} + +//function doBasePrevDetail() : Gets Previous Detail Record. +//-------------------------------------------------------------------- +function doBasePrevDetail() +{ + if(isClearedToSubmit()){ + document.forms[0].userPageRequested.value = 1*document.forms[0].pageRequested.value - 1; + document.forms[0].action = contextRoot+ doPrevDetail(); + document.forms[0].submit(); + } +} + +//function doBaseNextDetail() : Gets Next Detail Record. +//---------------------------------------------------------------- +function doBaseNextDetail() +{ + if(isClearedToSubmit()){ + document.forms[0].userPageRequested.value = 1*document.forms[0].pageRequested.value + 1; + document.forms[0].action = contextRoot+ doNextDetail(); + document.forms[0].submit(); + } + } + +//function doBaseJumpDetail() : Gets Detail Page Set as demanded. +//------------------------------------------------------------------------- +function doBaseJumpDetail() +{ + if(isClearedToSubmit()){ + document.forms[0].userPageRequested.value =1* document.forms[0].newPageRequested.value; + document.forms[0].action = contextRoot+ doJumpDetail(); + document.forms[0].submit(); + } +} + +//function doChangeHeader() : Sets the Header Modified flag to true. +//----------------------------------------------------------------------- +function doChangeHeader() +{ + if(document.forms[0].screenMode.value!="Q") + { + document.forms[0].headerDataChanged.value = "true"; + } +} + +//function doChangeDetail(val) : Sets the Detail Status flag. +//----------------------------------------------------------------------- +function doChangeDetail(val) +{ + document.forms[0].detailDataChanged.value = "true"; + //var r=new RegExp(/\d+/); + //iIndex=parseInt(r.exec(val)); + //alert(val); + iIndex=val; + document.forms[0].txtIndex.value=iIndex; + if(document.getElementsByName("status")[iIndex]) + { + if(document.getElementsByName("status")[iIndex].value!="N") + { + document.getElementsByName("status")[iIndex].value="U"; + } + } + + +} + +//function doBaseSetFields(arr,rows,cols) : Returns data to pages from lov. +//----------------------------------------------------------------------- +function doBaseSetFields(arr,rows,cols) +{ + if(window.doSetFields) + { + doSetFields(arr,rows,cols); + } + else + { + alert('doSetFields(arr,rows,cols) function not present in jsp'); + } + + +} + +function baseSearch() +{ +var oLovWin=window.open(contextRoot+"ultraSearch.do","myWindow", "height=380,width=600,resizable=yes,menubar=no,toolbar=none,statusbar=none"); +oLovWin.moveTo(20,20); +} + + +function isClearedToSubmit() +{ +/* + if(document.getElementById("headerDataChanged").value == "true" ){ + if(confirm('You have Unsaved Data.\nSave them First?')) + return false; + else + return true; + } + if(document.getElementById("detailDataChanged").value == "true" ){ + if(confirm('You have Unsaved Data.\nSave them First?')) + return false; + else + return true; + } + */ + return true; + +} + + + +//****************************************************************************** +//Enable/disable all +//****************************************************************************** +//Disable all controls except ones that are passed as comma separated arguments +function disable_all(){ + var len=arguments.length; + var elems=document.all; + for(i=0; ix && selxy && selyc.fromTop&&c.scrollstop){ + for(i=0;ic.bar.x?c.bar.x:c.m[c.l[0].m[0]].b.x:c.m[c.l[0].m[0]].b.x; + var y = c.useBar?c.m[c.l[0].m[0]].b.y>c.bar.y?c.bar.y:c.m[c.l[0].m[0]].b.y:c.m[c.l[0].m[0]].b.y; + var maxw = c.useBar?c.bar.w:c.rows?c.totw:c.maxw; var maxh = c.useBar?c.bar.h:!c.rows?c.toth:c.maxh + c.hideselectboxes(0,x,y,maxw,maxh,0) + } + } + if(!bw.ie) setTimeout(c.name+".checkscrolled()",200) +} +/****************************************** +CM_ADD-IN - pagecheck (last updated: 08/02/02) + +Simple code that *tries* to keep the menus inside the +bounderies of the page. + +Code updated. It's still not perfect (obviosly) +but it will now do another check to try and place +the menus inside. + + +Just add this code to the coolmenus js file +or link the cm_addins.js file to your page. +*****************************************/ +makeCM.prototype.onshow+=";this.pagecheck(b,pm,pm.subx,pm.suby,maxw,maxh)" +makeCM.prototype.pagecheck=function(b,pm,x,y,w,h,n){ + var l=pm.lev+1,a=b.align; if(!n) n=1 + var ok=1 + if(xcmpage.x2){ pm.align=2; ok=0;} + else if(ycmpage.y2) {pm.align=4; ok=0;} + if(!ok) this.getcoords(pm,this.l[l-1].borderX,this.l[l-1].borderY,pm.b.x,pm.b.y,w,h,this.l[l-1].offsetX,this.l[l-1].offsetY) + x=pm.subx; y=pm.suby + //Added check --- still not ok? --- part of the code by Denny Caldwell (thanks) -- badly immplemented by me though + if(xcmpage.x2){ x = -(x+w-cmpage.x2);} + else if(ycmpage.y2) {y = -(y+h-cmpage.y2);} + if(xcmpage.x2){ x = -(x+w-cmpage.x2);} + else if(ycmpage.y2) {y = -(y+h-cmpage.y2);} + b.moveIt(x,y) +} +/****************************************** +CM_ADD-IN - pagecheck (last updated: 01/26/02) +Simple code that *tries* to keep the menus inside thebounderies of +the page.A more advanced version of this code will come later. +Just add this code to the coolmenus js fileor link the cm_addins. +js file to your page as well. +*****************************************/ +//makeCM.prototype.onshow+=";this.pagecheck2(b,pm,x,y,maxw,maxh)" +makeCM.prototype.pagecheck2=function(b,pm,x,y,w,h){ + var fixX = 0 + var fixY = 0 + var ok=1 + if(x+w>cmpage.x2) { + ; + ok=0; + }else if(xcmpage.y2){ + fixY = -(y+h-cmpage.y2); + ok=0; + }else if(y(end-px*px-px) && px>1) px-=px/5; this.moveIt(this.x,this.y+px) + this.clipTo(end-this.y,this.w,this.h,0) + this.tim=setTimeout(this.obj+".slide("+end+","+px+","+tim+","+c.name+","+l+",'"+name+"')",tim) + }else{this.moveIt(this.x,end)} +} +/****************** +CM_ADD-IN - clipout (last updated: 01/26/02) + +This works in all browsers, but it can be +unstable on all other browsers then Explorer. + +This function shows the submenus with a clipping +effect. If you use this add-in you get two +new level properties called "clippx" and +"cliptim". You have to specify this for +the levels you want this to happen on +(these properties will also be inherited though) + +"clippx" is the number of pixels you want the +div to slide each setTimout, while "cliptim" +is the setTimeout speed (in milliseconds) + +Example setting: +oCMenu.level[3].clippx=10 +oCMenu.level[3].cliptim=20 + +Just add this code to the coolmenus js file +or link the cm_addins.js file to your page as well. + +*****************/ +makeCM.prototype.onshow+="if(c.l[pm.lev].clippx){h=b.h; if(!rows) b.clipTo(0,maxw,0,0,1); else b.clipTo(0,0,maxh,0,1); b.clipxy=0; b.showIt(); clearTimeout(b.tim); b.clipout(c.l[pm.lev].clippx,!rows?maxw:maxh,!rows?maxh:maxw,c.l[pm.lev].cliptim,rows)}" +cm_makeObj.prototype.tim=10; +cm_makeLevel.prototype.clippx=null +cm_makeLevel.prototype.cliptim=30 +cm_makeObj.prototype.clipxy=0 +cm_makeObj.prototype.clipout=function(px,w,stop,tim,rows){ + if(!this.vis) return; if(this.clipxy-1 || window.sidebar) + this.ie=this.agent.indexOf("msie")>-1 && !this.op + if(this.op){ + this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1) + this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1) + this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it + }else if(this.moz) this.ns6 = 1 + else if(this.ie){ + this.ie4 = !this.dom && document.all + this.ie5 = (this.agent.indexOf("msie 5")>-1) + this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1) + this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55 + } + this.mac=(this.agent.indexOf("mac")>-1) + this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7) + this.usedom= this.ns6||this.op7//Use dom creation + this.reuse = this.ie||this.op7||this.usedom //Reuse layers + this.px=this.dom&&!this.op5?"px":"" + return this +} +var bw=new cm_bwcheck() +/*Variable declaration*/ +var cmpage +/*Crossbrowser objects functions*/ +function cm_message(txt){alert(txt); return false} +function cm_makeObj(obj,nest,o,doc){ //Changed in v4.05 + if(!doc) doc=document + if(bw.usedom&&o) this.evnt=o + else{nest=(!nest) ? "doc.":'doc.layers.'+nest+'.' + this.evnt=bw.dom? doc.getElementById(obj): + bw.ie4?doc.all[obj]:bw.ns4?eval(nest+"layers." +obj):0; + } + if(!this.evnt) return cm_message('The layer does not exist ('+obj+')' + +'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest) + this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt; this.ok=0 + this.ref=bw.dom||bw.ie4?doc:this.css.document; + this.obj = obj + "Object"; eval(this.obj + "=this"); + this.x=0; this.y=0; this.w=0; this.h=0; this.vis=0; return this +} +cm_makeObj.prototype.moveIt = function(x,y){this.x=x;this.y=y; this.css.left=x+bw.px;this.css.top=y+bw.px} +cm_makeObj.prototype.showIt = function(o){this.css.visibility="visible"; this.vis=1; if(bw.op5&&this.arr){ this.arr.showIt(); }}//alert('showing arrow')}} +cm_makeObj.prototype.hideIt = function(no){this.css.visibility="hidden"; this.vis=0;} +cm_makeObj.prototype.clipTo = function(t,r,b,l,setwidth){ +this.w=r; this.h=b; if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r; this.css.clip.bottom=b;this.css.clip.left=l +}else{if(t<0)t=0;if(r<0)r=0;if(b<0)b=0;if(b<0)b=0; this.css.clip="rect("+t+bw.px+","+r+bw.px+","+b+bw.px+","+l+bw.px+")"; +if(setwidth){if(bw.op5||bw.op6){this.css.pixelWidth=r; this.css.pixelHeight=b;}else{this.css.width=r+bw.px; this.css.height=b+bw.px;}}}} +function cm_active(on,h){ + if(this.o.arr) on?this.o.arr.hideIt():bw.op5?this.o.arr.showIt():this.o.arr.css.visibility="inherit" + if(bw.reuse||bw.usedom){ + if(!this.img2) this.o.evnt.className=on?this.cl2:this.cl + else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src; //Changed v4.05 + if(on && bw.ns6){this.o.hideIt(); this.o.css.visibility='inherit' }; //netscape 6 bug fix + }else{ + if(!this.img2){ if(on) this.o.over.showIt(); else this.o.over.hideIt(); + }else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src; + }this.isactive=on?1:0 +} +/***Pageobject **/ +function cm_page(frame){ //Changed v4.05 + if(!frame) frame = self + this.x=0; this.x2 =(!bw.ie)?frame.innerWidth:frame.document.body.offsetWidth-20; + this.y=0; this.orgy=this.y2= (!bw.ie)?frame.innerHeight:frame.document.body.offsetHeight-6; + this.x50=this.x2/2; this.y50=this.y2/2; return this +} +/***check positions**/ +function cm_cp(num,w,minus){ + if(num){if(num.toString().indexOf("%")!=-1){var t = w?cmpage.x2:cmpage.y2; num=parseInt((t*parseFloat(num)/100)) + if(minus) num-=minus }else num=eval(num);} else num=0; return num +} +/**Level object**/ +function cm_makeLevel(){//changed 4.06 + var c=this, a=arguments; c.width=a[0]||null; c.height=a[1]||null; + c.regClass=a[2]||null; c.overClass=a[3]||null; c.borderX=a[4]>-1?a[4]:null; + c.borderY=a[5]>-1?a[5]:null; c.borderClass=a[6]||null; c.rows=a[7]>-1?a[7]:null; + c.align=a[8]||null; c.offsetX=a[9]||null; c.offsetY=a[10]||null; c.arrow=a[11]||null; + c.arrowWidth=a[12]||null; c.arrowHeight=a[13]||null; c.roundBorder=a[14]||null; return c +} +/***Making the main menu object**/ +function makeCM(name){ //Changed v4.06 + var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0; + c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0; + return this +}//events +makeCM.prototype.onshow=""; makeCM.prototype.onhide=""; makeCM.prototype.onconstruct=""; +/***Creating layers**/ +function cm_divCreate(id,cl,txt,w,c,app,ex,txt2){ + if(bw.usedom){var div=document.createElement("DIV"); div.className=cl; div.id=id; + if(txt) div.innerHTML=txt; if(app){app.appendChild(div); return div} + if(w) document.body.appendChild(div); return div + }else{var dstr='
    ',0,1) + }str+='
    '; + if(l==0){if(arrow)str+=m.d3=cm_divCreate(id+'_a','clCMAbs','',0,1,d1); str+=""} + str+="\n"; if(!bw.reuse){m.txt=null; m.d2=null; m.d3=null;} + if(bw.usedom){ if(l==0) document.body.appendChild(d1); str=''} + return str +} +/***get align num from text (better to evaluate numbers later)**/ +function cm_checkalign(a){ + switch(a){ + case "right": return 1; break; case "left": return 2; break; + case "bottom": return 3; break; case "top": return 4; break; + case "righttop": return 5; break; case "lefttop": return 6; break; + case "bottomleft": return 7; break; case "topleft": return 8; break; + }return null +} +/**Making each individual menu **/ +makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout){ + var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[parent]?parent:0; + if(c.mc==0){ + //Added 4.07 - bug(?) in opera 7 - you cannot dom-add layers created in one document to another one (or so it seems) - so turn of usedom + if(bw.op7 && this.frames) bw.usedom=0 + var tmp=location.href; + if(tmp.indexOf('file:')>-1||tmp.charAt(1)==':') c.root=c.offlineRoot; else c.root=c.onlineRoot + if(c.useBar){if(!c.barBorderClass) c.barBorderClass=c.barClass; c.bar1 = cm_divCreate(c.name+'bbar_0',c.barClass,'',0,1); + c.bar = cm_divCreate(c.name+'bbar',c.barBorderClass,'',1,1,0,0,c.bar1); if(bw.usedom) c.bar.appendChild(c.bar1); + }}var create=1,img,arrow; var m = c.m[name] = new Object(); m.name=name; m.subs=new Array(); m.parent=p; m.arnum=0; m.arr=0 + var l = m.lev = p?c.m[p].lev+1:0; c.mc++; m.hide=0; + if(l>=c.l.length){ + var p1,p2=0; if(l>=c.level.length) p1=c.l[c.level.length-1]; + else p1=c.level[l]; c.l[l]=new Array(); if(!p2) p2=c.l[l-1] + if(l!=0){ if(isNaN(p1.align)) p1["align"]=cm_checkalign(p1.align) + for(var i in p1){if(i!="str"&&i!="m"){if(p1[i]==null) c.l[l][i]=p2[i]; else c.l[l][i]=p1[i] }} + }else{c.l[l]=c.level[0]; c.l[l].align=cm_checkalign(c.l[l].align)} + c.l[l]["str"]=''; c.l[l].m=new Array(); if(!c.l[l].borderClass) c.l[l].borderClass=c.l[l].regClass + c.l[l].app=0; c.l[l].max=0; c.l[l].arnum=0; c.l[l].o=new Array(); c.l[l].arr=new Array() + c.level[l]=p1=p2=null + if(l!=0) c.l[l].str=c.l[l].app=cm_divCreate(c.name+ '_' +l+'_0',c.l[l].borderClass,'') + }if(p){p = c.m[p]; p.subs[p.subs.length]=name; + if(p.subs.length==1&&c.l[l-1].arrow){ p.arr=1; + if(p.parent){c.m[p.parent].arnum++ + if(c.m[p.parent].arnum>c.l[l-1].arnum){ + c.l[l-1].str+=c.l[l-1].arr[c.l[l-1].arnum]=cm_divCreate(c.name+ '_a' +(l-1)+'_'+c.l[l-1].arnum,'clCMAbs','',0,1,c.l[l-1].app); c.l[l-1].arnum++ + }}}if(bw.reuse) if(p.subs.length>c.l[l].max) c.l[l].max = p.subs.length; else create=0 + }m.rows=rows>-1?rows:c.l[l].rows; m.w=cm_cp(w||c.l[l].width,1); m.h=cm_cp(h||c.l[l].height,0); m.txt=txt; m.lnk=lnk; + if(align) align=cm_checkalign(align); m.align=align||c.l[l].align; m.cl=cl=cl||c.l[l].regClass; + m.targ=targ; m.cl2=cl2||c.l[l].overClass; m.create=create; m.mover=onmouseover; m.mout=onmouseout; + m.onclck=onclick; m.active = cm_active; m.isactive=0; m.nolink=nolink + if(create) c.l[l].m[c.l[l].m.length]=name + if(img1){m.img1 = new Image(); m.img1.src=c.root+img1; if(!img2) img2=img1; m.img2 = new Image(); m.img2.src=c.root+img2; + m.cl="clCMAbs"; m.txt=''; if(!bw.reuse&&!nolink) m.txt = '';; + m.txt+='c.maxw) c.maxw=m.w; if(m.h>c.maxh) c.maxh=m.h; c.totw+=c.pxBetween+m.w+c.l[0].borderX;c.toth+=c.pxBetween+m.h+c.l[0].borderY} + if(lnk && !onmouseover){ + var path=lnk.indexOf("mailto:")>-1||lnk.indexOf("http://")>-1?"":c.root + m.mover="self.status='"+path+m.lnk+"'" + if(!m.mout) m.mout=""; m.mout+=";self.status='';" + } +} +/**Getting x/y coords for subs **/ +makeCM.prototype.getcoords=function(m,bx,by,x,y,maxw,maxh,ox,oy){ + var a=m.align; x+=m.o.x; y+=m.o.y + switch(a){ + case 1: x+=m.w+bx; break; case 2: x-=maxw+bx; break; + case 3: y+=m.h+by; break; case 4: y-=maxh+by; break; + case 5: x-=maxw+bx; y-=maxh-m.h; break; + case 6: x+=m.w+bx; y-=maxh-m.h; break; + case 7: y+=m.h+by; x-=maxw-m.w; break; + case 8: y-=maxh+by; x-=maxw-m.w+bx; break; + }//Added v4.05 + if(m.lev==this.frameStartLevel-1 && this.frames){ + switch(a){ + case 1: x=0; break; + case 2: x=this.cmpage.x2-maxw; break; + case 3: y=0; break; + case 4: y-=maxh+by; break; + case 5: x-=maxw+bx; y-=maxh-m.h; break; + case 6: x+=m.w+bx; y-=maxh-m.h; break; + case 7: y+=m.h+by; x-=maxw-m.w; break; + case 8: y-=maxh+by; x-=maxw-m.w+bx; break; + } + } + m.subx=x + ox; m.suby=y + oy +} +/**Showing sub elements**/ +makeCM.prototype.showsub=function(el){ //Changed v4.06 + var c=this,pm=c.m[el],m,o,nl + if(!pm.b||(c.isresized&&pm.lev>0)) pm.b=c.l[pm.lev].b; c.isover=1 + clearTimeout(c.tim); + var ln=pm.subs.length,l=pm.lev+1 + if(c.l[pm.lev].a==el&&l!=c.l.length && !c.openOnClick){if(c.l[pm.lev+1].a) c.hidesub(l+1,el); return} + c.hidesub(l,el); if(pm.mover) eval(pm.mover); if(!pm.isactive) pm.active(1); + c.l[pm.lev].a = el; if(ln==0) return; + if(c.openOnClick && !c.clicked) return//Added v4.06 + if(!c.l[l].b) return //Added v4.05 + var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows + var rb=c.l[l].roundBorder;//added 4.06 + var x=bx+rb,y=by+rb,maxw=0,maxh=0,cn=0; b.hideIt() + for(var i=0;imaxw) maxw=m.w; maxh=y} + else{x+=m.w+bx; if(m.h>maxh) maxh=m.h; maxw=x;} + o.css.visibility="inherit"; if(bw.op5||bw.op6) o.showIt() + }else{o = c.m[c.l[l].m[i]].o; o.hideIt();} } + if(!rows) maxw+=bx*2+rb; else maxh+=by*2+rb; //changed 4.06 + if(rb){maxw+=rb; maxh+=rb}//added 4.06 + b.clipTo(0,maxw,maxh,0,1) + //Check frame scroll + if(c.chkscroll) c.chkscroll() //Added v4.05 - not the best solution + if(c.chkscroll||!pm.subx||!pm.suby||c.scrollY>-1||c.isresized) c.getcoords(pm,c.l[l-1].borderX,c.l[l-1].borderY,pm.b.x,pm.b.y,maxw,maxh,c.l[l-1].offsetX,c.l[l-1].offsetY) //Changed 4.06 + x=pm.subx; if(c.chkscroll&&l==c.frameStartLevel) pm.suby+=c.scrollY; y=pm.suby; b.moveIt(x,y); if(c.onshow) eval(c.onshow); b.showIt() +} +/**Hide sub elements **/ +makeCM.prototype.hidesub=function(l,el){ //Changed v4.05 + var c = this,tmp,m,i,j,hide + if(!l) {l=1; hide=1; c.clicked=0} + for(i=l-1;i0&&i>l-1) if(c.l[i].b) c.l[i].b.hideIt()//Changed v4.05 + if(c.l[i].a&&c.l[i].a!=el){ + m=c.m[c.l[i].a]; m.active(0,1); if(m.mout) eval(m.mout); c.l[i].a=0 + if(i>0&&i>l-1) if(bw.op5||bw.op6) for(j=0;jl){for(j=0;j0) this.body.appendChild(c.l[i].app) + if(!this.frames) c.l[i].str=null + }}c.z=c.zIndex+2 + for(i=st;i0){m.b = bobj; nest=i} + else{m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1,this.doc); m.b.css.zIndex=c.z; m.b.clipTo(0,w+bx*2,h+by*2,0,1); nest=name} + id = c.name + "_"+name; nest=c.name + "_"+nest; + if(m.create){ + o=m.o=new cm_makeObj(id,nest+"_0",m.d2,this.doc); o.z=o.css.zIndex=c.z+1; if(bw.reuse){c.l[l].o[oc]=o; oc++}; + if(l==0&&m.img1) o.css.visibility='inherit'; if(bw.op5) o.showIt(); o.arr=0; + }if(!bw.reuse||l==0) o.clipTo(0,w,h,0,1); o.moveIt(bx,by); o.z=o.css.zIndex=c.z+2 + if(j"}} //Added 4.06 + c.makeObjects(nowrite); cmpage = new cm_page(); + var mpa,o,maxw=c.maxw,maxh=c.maxh,i,totw=c.totw,toth=c.toth,m,px=c.pxBetween + var bx=c.l[0].borderX,by=c.l[0].borderY,x=c.fromLeft,y=c.fromTop,mp=c.menuPlacement,rows=c.rows + if(rows){toth=maxh+by*2; totw=totw-px+bx;}else{totw=maxw+bx*2; toth=toth-px+by;} + switch(mp){ + case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break; + case "right": x=cmpage.x2-totw; break; + case "bottom": case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break; + default: if(mp.toString().indexOf(",")>-1) mpa=1; break; + }for(var i=0;icmpage.x2+off || page2.y2>cmpage.orgy+off){ + if(bw.ie||bw.ns6||bw.op7||bw.ns4){ + cmpage=page2; this.isresized=1; + if(this.onresize) eval(this.onresize); this.construct(1); + if(this.onafterresize) eval(this.onafterresize); + }else{cm_inresize=1; location.reload()} + } +} +/**Onclick of an item**/ +makeCM.prototype.onclck=function(m){ //Changed v4.06 + + m = this.m[m] + if(m.onclck) eval(m.onclck); + if(this.openOnClick && m.subs.length>0){ + this.clicked = 1; this.showsub(m.name); return + } + var lnk=m.lnk, targ=m.targ + if(lnk){ + if(lnk.indexOf("mailto")!=0 && lnk.indexOf("http")!=0) lnk=this.root+lnk + if(String(targ)=="undefined" || targ=="" || targ==0 || targ=="_self"){ + if(this.frames){ //Turning of all level 1 + vars + if(this.l[0].a){ + this.m[this.l[0].a].active(0,1) + this.l[0].a =0 + } + for(i=this.frameStartLevel;i +/* CoolMenus 4 - default styles - do not edit */ +.clCMAbs{position:absolute; visibility:hidden; left:0; top:0} +/* CoolMenus 4 - default styles - end */ + +/*Style for the background-bar*/ +.clBar{position:absolute; width:10; height:10; background-color:#0080c0; layer-background-color:Navy; visibility:hidden} + +/*Styles for level 0*/ +.clLevel0,.clLevel0over{position:absolute; z-order:30; padding:2px; font-family:tahoma,arial,helvetica; font-size:10px; font-weight:normal} +.clLevel0{background-color:#0080c0; layer-background-color:Navy; color:white;} +.clLevel0over{background-color:#0099cc; layer-background-color:#0099cc; color:Yellow; cursor:pointer; cursor:hand; } +.clLevel0border{position:absolute; visibility:hidden; background-color:#006699; layer-background-color:#006699} + +/*Styles for level 1*/ +.clLevel1, .clLevel1over{position:absolute; z-order:30; padding:2px; font-family:tahoma, arial,helvetica; font-size:10px; font-weight:normal} +.clLevel1{background-color:#0080c0; layer-background-color:Navy; color:white;} +.clLevel1over{background-color:#0099cc; layer-background-color:#0099cc; color:Yellow; cursor:pointer; cursor:hand; } +.clLevel1border{position:absolute; visibility:hidden; background-color:#006699; layer-background-color:#006699} + +/*Styles for level 2*/ +.clLevel2, .clLevel2over{position:absolute; z-order:30; padding:2px; font-family:tahoma,arial,helvetica; font-size:10px; font-weight:normal} +.clLevel2{background-color:#0080c0; layer-background-color:Navy; color:white;} +.clLevel2over{background-color:#0099cc; layer-background-color:#0099cc; color:Yellow; cursor:pointer; cursor:hand; } +.clLevel2border{position:absolute; visibility:hidden; background-color:#006699; layer-background-color:#006699} + + + diff --git a/hrmsWeb/hrms/includes/Menujs.js b/hrmsWeb/hrms/includes/Menujs.js new file mode 100644 index 0000000..2a013f6 --- /dev/null +++ b/hrmsWeb/hrms/includes/Menujs.js @@ -0,0 +1,100 @@ +//Menu object creation +MyMenu=new makeCM("MyMenu") //Making the menu object. Argument: menuname + +MyMenu.frames = 0 + +//Menu properties +MyMenu.pxBetween=5 //10 +MyMenu.fromLeft=0 +MyMenu.fromTop=0 +MyMenu.rows=1 +MyMenu.menuPlacement="center" + +MyMenu.offlineRoot="" +MyMenu.onlineRoot="" +MyMenu.resizeCheck=1 +MyMenu.wait=100 +MyMenu.fillImg="cm_fill.gif" +MyMenu.zIndex=1 + +//Background bar properties +MyMenu.useBar=1 +MyMenu.barWidth="110%" +MyMenu.barHeight="menu" +MyMenu.barClass="clBar" +MyMenu.barX=0 //10 +MyMenu.barY=0 +MyMenu.barBorderX=0 +MyMenu.barBorderY=0 +MyMenu.barBorderClass="" + +MyMenu.onresize="makeCM('MyMenu'); MyMenu.construct(1);" + +//Level properties - ALL properties have to be spesified in level 0 +MyMenu.level[0]=new cm_makeLevel() //Add this for each new level +MyMenu.level[0].width=79 //130 +MyMenu.level[0].height=25 +MyMenu.level[0].regClass="clLevel0" +MyMenu.level[0].overClass="clLevel0over" +MyMenu.level[0].borderX=0 +MyMenu.level[0].borderY=1 +MyMenu.level[0].borderClass="clLevel0border" +MyMenu.level[0].offsetX=0 +MyMenu.level[0].offsetY=0 +MyMenu.level[0].rows=0 +MyMenu.level[0].arrow=0 +MyMenu.level[0].arrowWidth=0 +MyMenu.level[0].arrowHeight=0 +MyMenu.level[0].align="bottom" + +//EXAMPLE SUB LEVEL[1] PROPERTIES - You have to specify the properties you want different from LEVEL[0] - If you want all items to look the same just remove this +MyMenu.level[1]=new cm_makeLevel() //Add this for each new level (adding one to the number) +MyMenu.level[1].width=180 //200 +MyMenu.level[1].height=22 +MyMenu.level[1].regClass="clLevel1" +MyMenu.level[1].overClass="clLevel1over" +MyMenu.level[1].borderX=1 +MyMenu.level[1].borderY=1 +MyMenu.level[1].align="right" +MyMenu.level[1].offsetX=0//-(MyMenu.level[0].width-2)/2+20 +MyMenu.level[1].offsetY=0 +MyMenu.level[1].borderClass="clLevel1border" + + +//EXAMPLE SUB LEVEL[2] PROPERTIES - You have to spesify the properties you want different from LEVEL[1] OR LEVEL[0] - If you want all items to look the same just remove this +MyMenu.level[2]=new cm_makeLevel() //Add this for each new level (adding one to the number) +MyMenu.level[2].width=180 //200 +MyMenu.level[2].height=20 +MyMenu.level[2].offsetX=0 +MyMenu.level[2].offsetY=0 +MyMenu.level[2].regClass="clLevel2" +MyMenu.level[2].overClass="clLevel2over" +MyMenu.level[2].borderClass="clLevel2border" + + +/****************************************** +Menu item creation: + +*************************************/ +MyMenu.makeMenu('4002000252','','Organisation Setup') +MyMenu.makeMenu('4002000584','4002000252','Holiday Type Master', 'HrmOrgHolTypeMst.jsp') +MyMenu.makeMenu('4002000582','4002000252','Calendar Master', 'HrmOrgCalMst.jsp') +MyMenu.makeMenu('4002000593','4002000252','Holiday Calendar', 'HrmOrgHolCal.jsp') +MyMenu.makeMenu('4002000592','4002000252','Qualification Master', 'HrmOrgQualMst.jsp') +MyMenu.makeMenu('4002000591','4002000252',' Rating Master', 'HrmOrgRatingMst.jsp') +MyMenu.makeMenu('4002000590','4002000252',' Skill Master', 'HrmOrgSkillMst.jsp') +MyMenu.makeMenu('4002000589','4002000252',' Religion Master', 'HrmOrgReligionMst.jsp') +MyMenu.makeMenu('4002000588','4002000252',' Classification Detail', 'HrmOrgClassDtl.jsp') +MyMenu.makeMenu('4002000585','4002000252',' Country Master', 'HrmOrgCntryMst.jsp') +MyMenu.makeMenu('4002000576','4002000252',' Work Group Master', 'HrmOrgWorkGroupMst.jsp') +MyMenu.makeMenu('4002000577','4002000252',' Scale Master', 'HrmOrgScaleMst.jsp') +MyMenu.makeMenu('4002000580','4002000252',' Relation Master', 'HrmOrgRelationMst.jsp') +MyMenu.makeMenu('4002000578','4002000252',' Language Master', 'HrmOrgLangMst.jsp') +MyMenu.makeMenu('4002000581','4002000252',' Eligibility Rule', 'HrmGenEligRule.jsp') +MyMenu.makeMenu('4002000501','4002000252',' Eligibility Rule Query', 'HrmGenEligRuleQuery.jsp') + +//Leave this line - it constructs the menu +MyMenu.construct() + +//MyMenu.showsub("top3") +MyMenu.hidesub() diff --git a/hrmsWeb/hrms/includes/calendar-blue.css b/hrmsWeb/hrms/includes/calendar-blue.css new file mode 100644 index 0000000..c4346dd --- /dev/null +++ b/hrmsWeb/hrms/includes/calendar-blue.css @@ -0,0 +1,232 @@ +/* The main calendar widget. DIV containing a table. */ + +div.calendar { position: relative; width:120; } + +.calendar, .calendar table { + border: 1px solid #556; + font-size: 11px; + color: #000; + cursor: default; + background: #eef; + font-family: tahoma,verdana,sans-serif; +} + +/* Header part -- contains navigation buttons and day names. */ + +.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ + text-align: center; /* They are the navigation buttons */ + padding: 2px; /* Make the buttons seem like they're pressing */ +} + +.calendar .nav { + background: #778 url(menuarrow.gif) no-repeat 100% 100%; +} + +.calendar thead .title { /* This holds the current "month, year" */ + font-weight: bold; /* Pressing it will take you to the current date */ + text-align: center; + background: #fff; + color: #000; + padding: 2px; +} + +.calendar thead .headrow { /* Row
    containing the day names */ + border-bottom: 1px solid #556; + padding: 2px; + text-align: center; + color: #000; +} + +.calendar thead .weekend { /* How a weekend day name shows in header */ + color: #a66; +} + +.calendar thead .hilite { /* How do the buttons in header appear when hover */ + background-color: #aaf; + color: #000; + border: 1px solid #04f; + padding: 1px; +} + +.calendar thead .active { /* Active (pressed) buttons in header */ + background-color: #77c; + padding: 2px 0px 0px 2px; +} + +/* The body part -- contains all the days in month. */ + +.calendar tbody .day { /* Cells containing month days dates */ + width: 2em; + color: #456; + text-align: right; + padding: 2px 4px 2px 2px; +} +.calendar tbody .day.othermonth { + font-size: 80%; + color: #bbb; +} +.calendar tbody .day.othermonth.oweekend { + color: #fbb; +} + +.calendar table .wn { + padding: 2px 3px 2px 2px; + border-right: 1px solid #000; + background: #bdf; +} + +.calendar tbody .rowhilite td { + background: #def; +} + +.calendar tbody .rowhilite td.wn { + background: #eef; +} + +.calendar tbody td.hilite { /* Hovered cells */ + background: #def; + padding: 1px 3px 1px 1px; + border: 1px solid #bbb; +} + +.calendar tbody td.active { /* Active (pressed) cells */ + background: #cde; + padding: 2px 2px 0px 2px; +} + +.calendar tbody td.selected { /* Cell showing today date */ + font-weight: bold; + border: 1px solid #000; + padding: 1px 3px 1px 1px; + background: #fff; + color: #000; +} + +.calendar tbody td.weekend { /* Cells showing weekend days */ + color: #a66; +} + +.calendar tbody td.today { /* Cell showing selected date */ + font-weight: bold; + color: #00f; +} + +.calendar tbody .disabled { color: #999; } + +.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ + visibility: hidden; +} + +.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ + display: none; +} + +/* The footer part -- status bar and "Close" button */ + +.calendar tfoot .footrow { /* The
    */ + background: #fff; + color: #445; + border-top: 1px solid #556; + padding: 1px; +} + +.calendar tfoot .hilite { /* Hover style for buttons in footer */ + background: #aaf; + border: 1px solid #04f; + color: #000; + padding: 1px; +} + +.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ + background: #77c; + padding: 2px 0px 0px 2px; +} + +/* Combo boxes (menus that display months/years for direct selection) */ + +.calendar .combo { + position: absolute; + display: none; + top: 0px; + left: 0px; + width: 4em; + cursor: default; + border: 1px solid #655; + background: #def; + color: #000; + font-size: 90%; + z-index: 100; +} + +.calendar .combo .label, +.calendar .combo .label-IEfix { + text-align: center; + padding: 1px; +} + +.calendar .combo .label-IEfix { + width: 4em; +} + +.calendar .combo .hilite { + background: #acf; +} + +.calendar .combo .active { + border-top: 1px solid #46a; + border-bottom: 1px solid #46a; + background: #eef; + font-weight: bold; +} + +.calendar td.time { + border-top: 1px solid #000; + padding: 1px 0px; + text-align: center; + background-color: #f4f0e8; +} + +.calendar td.time .hour, +.calendar td.time .minute, +.calendar td.time .ampm { + padding: 0px 3px 0px 4px; + border: 1px solid #889; + font-weight: bold; + background-color: #fff; +} + +.calendar td.time .ampm { + text-align: center; +} + +.calendar td.time .colon { + padding: 0px 2px 0px 3px; + font-weight: bold; +} + +.calendar td.time span.hilite { + border-color: #000; + background-color: #667; + color: #fff; +} + +.calendar td.time span.active { + border-color: #f00; + background-color: #000; + color: #0f0; +} diff --git a/hrmsWeb/hrms/includes/calendar-en.js b/hrmsWeb/hrms/includes/calendar-en.js new file mode 100644 index 0000000..0dbde79 --- /dev/null +++ b/hrmsWeb/hrms/includes/calendar-en.js @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar EN language +// Author: Mihai Bazon, +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 0; + +// full month names +Calendar._MN = new Array +("January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December"); + +// short month names +Calendar._SMN = new Array +("Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "About the calendar"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + +"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"\n\n" + +"Date selection:\n" + +"- Use the \xab, \xbb buttons to select year\n" + +"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + +"- Hold mouse button on any of the above buttons for faster selection."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Time selection:\n" + +"- Click on any of the time parts to increase it\n" + +"- or Shift-click to decrease it\n" + +"- or click and drag for faster selection."; + +Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)"; +Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)"; +Calendar._TT["GO_TODAY"] = "Go Today"; +Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)"; +Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)"; +Calendar._TT["SEL_DATE"] = "Select date"; +Calendar._TT["DRAG_TO_MOVE"] = "Drag to move"; +Calendar._TT["PART_TODAY"] = " (today)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "Display %s first"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "0,6"; + +Calendar._TT["CLOSE"] = "Close"; +Calendar._TT["TODAY"] = "Today"; +Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "wk"; +Calendar._TT["TIME"] = "Time:"; diff --git a/hrmsWeb/hrms/includes/calendar-setup.js b/hrmsWeb/hrms/includes/calendar-setup.js new file mode 100644 index 0000000..dd8f6e7 --- /dev/null +++ b/hrmsWeb/hrms/includes/calendar-setup.js @@ -0,0 +1,225 @@ +/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ + * --------------------------------------------------------------------------- + * + * The DHTML Calendar + * + * Details and latest version at: + * http://dynarch.com/mishoo/calendar.epl + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + * + * This file defines helper functions for setting up the calendar. They are + * intended to help non-programmers get a working calendar on their site + * quickly. This script should not be seen as part of the calendar. It just + * shows you what one can do with the calendar, while in the same time + * providing a quick and simple method for setting it up. If you need + * exhaustive customization of the calendar creation process feel free to + * modify this code to suit your needs (this is recommended and much better + * than modifying calendar.js itself). + */ + +// $Id: calendar-setup.js,v 1.25 2005/03/07 09:51:33 mishoo Exp $ + +/** + * This function "patches" an input field (or other element) to use a calendar + * widget for date selection. + * + * The "params" is a single object that can have the following properties: + * + * prop. name | description + * ------------------------------------------------------------------------------------------------- + * inputField | the ID of an input field to store the date + * displayArea | the ID of a DIV or other element to show the date + * button | ID of a button or other element that will trigger the calendar + * eventName | event that will trigger the calendar, without the "on" prefix (default: "click") + * ifFormat | date format that will be stored in the input field + * daFormat | the date format that will be used to display the date in displayArea + * singleClick | (true/false) wether the calendar is in single click mode or not (default: true) + * firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc. + * align | alignment (default: "Br"); if you don't know what's this see the calendar documentation + * range | array with 2 elements. Default: [1900, 2999] -- the range of years available + * weekNumbers | (true/false) if it's true (default) the calendar will display week numbers + * flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID + * flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar) + * disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar + * onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay) + * onClose | function that gets called when the calendar is closed. [default] + * onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar. + * date | the date that the calendar will be initially displayed to + * showsTime | default: false; if true the calendar will include a time selector + * timeFormat | the time format; can be "12" or "24", default is "12" + * electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close + * step | configures the step of the years in drop-down boxes; default: 2 + * position | configures the calendar absolute position; default: null + * cache | if "true" (but default: "false") it will reuse the same calendar object, where possible + * showOthers | if "true" (but default: "false") it will show days from other months too + * + * None of them is required, they all have default values. However, if you + * pass none of "inputField", "displayArea" or "button" you'll get a warning + * saying "nothing to setup". + */ +Calendar.setup = function (params) { + function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } }; + + param_default("inputField", null); + param_default("displayArea", null); + param_default("button", null); + param_default("eventName", "click"); + param_default("ifFormat", "%Y/%m/%d"); + param_default("daFormat", "%Y/%m/%d"); + param_default("singleClick", true); + param_default("disableFunc", null); + param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined + param_default("dateText", null); + param_default("firstDay", null); + param_default("align", "Br"); + param_default("range", [1900, 2999]); + param_default("weekNumbers", true); + param_default("flat", null); + param_default("flatCallback", null); + param_default("onSelect", null); + param_default("onClose", null); + param_default("onUpdate", null); + param_default("date", null); + param_default("showsTime", false); + param_default("timeFormat", "24"); + param_default("electric", true); + param_default("step", 2); + param_default("position", null); + param_default("cache", false); + param_default("showOthers", false); + param_default("multiple", null); + + var tmp = ["inputField", "displayArea", "button", "position" ]; + for (var i in tmp) { + if (typeof params[tmp[i]] == "string") { + iIndex=params[tmp[3]]; + if(iIndex != "-1" ) + { + params[tmp[i]] = document.getElementsByName(params[tmp[i]])[iIndex]; + } + else + { + params[tmp[i]] = document.getElementsByName(params[tmp[i]])[0]; + } + } + } + if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) { + alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code"); + return false; + } + + function onSelect(cal) { + + var p = cal.params; + + //Added by Amitava + var oldDate=p.inputField.value; + //Added by Amitava + + var update = (cal.dateClicked || p.electric); + if (update && p.inputField) { + p.inputField.value = cal.date.print(p.ifFormat); + if (typeof p.inputField.onchange == "function") + p.inputField.onchange(); + } + if (update && p.displayArea) + p.displayArea.innerHTML = cal.date.print(p.daFormat); + if (update && typeof p.onUpdate == "function") + p.onUpdate(cal); + if (update && p.flat) { + if (typeof p.flatCallback == "function") + p.flatCallback(cal); + } + if (update && p.singleClick && cal.dateClicked){ + //Added by Amitava + if(window.doOnChangeCalendar) + { + if(oldDate!=cal.date.print(p.ifFormat)) + { + window.doOnChangeCalendar(p.button.name); + } + } + //Added by Amitava + cal.callCloseHandler(); + } + }; + + if (params.flat != null) { + if (typeof params.flat == "string") + params.flat = document.getElementsByName(params.flat)[0]; + if (!params.flat) { + alert("Calendar.setup:\n Flat specified but can't find parent."); + return false; + } + var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect); + cal.showsOtherMonths = params.showOthers; + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.params = params; + cal.weekNumbers = params.weekNumbers; + cal.setRange(params.range[0], params.range[1]); + cal.setDateStatusHandler(params.dateStatusFunc); + cal.getDateText = params.dateText; + if (params.ifFormat) { + cal.setDateFormat(params.ifFormat); + } + if (params.inputField && typeof params.inputField.value == "string") { + cal.parseDate(params.inputField.value); + } + cal.create(params.flat); + cal.show(); + return false; + } + + var triggerEl = params.button || params.displayArea || params.inputField; + triggerEl["on" + params.eventName] = function() { + var dateEl = params.inputField || params.displayArea; + var dateFmt = params.inputField ? params.ifFormat : params.daFormat; + var mustCreate = false; + var cal = window.calendar; + if (dateEl) + params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt); + if (!(cal && params.cache)) { + window.calendar = cal = new Calendar(params.firstDay, + params.date, + params.onSelect || onSelect, + params.onClose || function(cal) { cal.hide(); }); + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.weekNumbers = params.weekNumbers; + mustCreate = true; + } else { + if (params.date) + cal.setDate(params.date); + cal.hide(); + } + if (params.multiple) { + cal.multiple = {}; + for (var i = params.multiple.length; --i >= 0;) { + var d = params.multiple[i]; + var ds = d.print("%Y%m%d"); + cal.multiple[ds] = d; + } + } + cal.showsOtherMonths = params.showOthers; + cal.yearStep = params.step; + cal.setRange(params.range[0], params.range[1]); + cal.params = params; + cal.setDateStatusHandler(params.dateStatusFunc); + cal.getDateText = params.dateText; + cal.setDateFormat(dateFmt); + if (mustCreate) + cal.create(); + cal.refresh(); + if (!params.position) + cal.showAtElement(params.button || params.displayArea || params.inputField, params.align); + else + cal.showAt(params.position[0], params.position[1]); + return false; + }; + + return cal; +}; + diff --git a/hrmsWeb/hrms/includes/calendar.js b/hrmsWeb/hrms/includes/calendar.js new file mode 100644 index 0000000..62feb58 --- /dev/null +++ b/hrmsWeb/hrms/includes/calendar.js @@ -0,0 +1,1808 @@ +/* Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo + * ----------------------------------------------------------- + * + * The DHTML Calendar, version 1.0 "It is happening again" + * + * Details and latest version at: + * www.dynarch.com/projects/calendar + * + * This script is developed by Dynarch.com. Visit us at www.dynarch.com. + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + */ + +// $Id: calendar.js,v 1.51 2005/03/07 16:44:31 mishoo Exp $ + +/** The Calendar object constructor. */ +Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) { + // member variables + this.activeDiv = null; + this.currentDateEl = null; + this.getDateStatus = null; + this.getDateToolTip = null; + this.getDateText = null; + this.timeout = null; + this.onSelected = onSelected || null; + this.onClose = onClose || null; + this.dragging = false; + this.hidden = false; + this.minYear = 1970; + this.maxYear = 2050; + this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"]; + this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"]; + this.isPopup = true; + this.weekNumbers = true; + this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc. + this.showsOtherMonths = false; + this.dateStr = dateStr; + this.ar_days = null; + this.showsTime = false; + this.time24 = true; + this.yearStep = 2; + this.hiliteToday = true; + this.multiple = null; + // HTML elements + this.table = null; + this.element = null; + this.tbody = null; + this.firstdayname = null; + // Combo boxes + this.monthsCombo = null; + this.yearsCombo = null; + this.hilitedMonth = null; + this.activeMonth = null; + this.hilitedYear = null; + this.activeYear = null; + // Information + this.dateClicked = false; + + // one-time initializations + if (typeof Calendar._SDN == "undefined") { + // table of short day names + if (typeof Calendar._SDN_len == "undefined") + Calendar._SDN_len = 3; + var ar = new Array(); + for (var i = 8; i > 0;) { + ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len); + } + Calendar._SDN = ar; + // table of short month names + if (typeof Calendar._SMN_len == "undefined") + Calendar._SMN_len = 3; + ar = new Array(); + for (var i = 12; i > 0;) { + ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len); + } + Calendar._SMN = ar; + } +}; + +// ** constants + +/// "static", needed for event handlers. +Calendar._C = null; + +/// detect a special case of "web browser" +Calendar.is_ie = ( /msie/i.test(navigator.userAgent) && + !/opera/i.test(navigator.userAgent) ); + +Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) ); + +/// detect Opera browser +Calendar.is_opera = /opera/i.test(navigator.userAgent); + +/// detect KHTML-based browsers +Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent); + +// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate +// library, at some point. + +Calendar.getAbsolutePos = function(el) { + var SL = 0, ST = 0; + var is_div = /^div$/i.test(el.tagName); + if (is_div && el.scrollLeft) + SL = el.scrollLeft; + if (is_div && el.scrollTop) + ST = el.scrollTop; + var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; + if (el.offsetParent) { + var tmp = this.getAbsolutePos(el.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; +}; + +Calendar.isRelated = function (el, evt) { + var related = evt.relatedTarget; + if (!related) { + var type = evt.type; + if (type == "mouseover") { + related = evt.fromElement; + } else if (type == "mouseout") { + related = evt.toElement; + } + } + while (related) { + if (related == el) { + return true; + } + related = related.parentNode; + } + return false; +}; + +Calendar.removeClass = function(el, className) { + if (!(el && el.className)) { + return; + } + var cls = el.className.split(" "); + var ar = new Array(); + for (var i = cls.length; i > 0;) { + if (cls[--i] != className) { + ar[ar.length] = cls[i]; + } + } + el.className = ar.join(" "); +}; + +Calendar.addClass = function(el, className) { + Calendar.removeClass(el, className); + el.className += " " + className; +}; + +// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately. +Calendar.getElement = function(ev) { + var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget; + while (f.nodeType != 1 || /^div$/i.test(f.tagName)) + f = f.parentNode; + return f; +}; + +Calendar.getTargetElement = function(ev) { + var f = Calendar.is_ie ? window.event.srcElement : ev.target; + while (f.nodeType != 1) + f = f.parentNode; + return f; +}; + +Calendar.stopEvent = function(ev) { + ev || (ev = window.event); + if (Calendar.is_ie) { + ev.cancelBubble = true; + ev.returnValue = false; + } else { + ev.preventDefault(); + ev.stopPropagation(); + } + return false; +}; + +Calendar.addEvent = function(el, evname, func) { + if (el.attachEvent) { // IE + el.attachEvent("on" + evname, func); + } else if (el.addEventListener) { // Gecko / W3C + el.addEventListener(evname, func, true); + } else { + el["on" + evname] = func; + } +}; + +Calendar.removeEvent = function(el, evname, func) { + if (el.detachEvent) { // IE + el.detachEvent("on" + evname, func); + } else if (el.removeEventListener) { // Gecko / W3C + el.removeEventListener(evname, func, true); + } else { + el["on" + evname] = null; + } +}; + +Calendar.createElement = function(type, parent) { + var el = null; + if (document.createElementNS) { + // use the XHTML namespace; IE won't normally get here unless + // _they_ "fix" the DOM2 implementation. + el = document.createElementNS("http://www.w3.org/1999/xhtml", type); + } else { + el = document.createElement(type); + } + if (typeof parent != "undefined") { + parent.appendChild(el); + } + return el; +}; + +// END: UTILITY FUNCTIONS + +// BEGIN: CALENDAR STATIC FUNCTIONS + +/** Internal -- adds a set of events to make some element behave like a button. */ +Calendar._add_evs = function(el) { + with (Calendar) { + addEvent(el, "mouseover", dayMouseOver); + addEvent(el, "mousedown", dayMouseDown); + addEvent(el, "mouseout", dayMouseOut); + if (is_ie) { + addEvent(el, "dblclick", dayMouseDblClick); + el.setAttribute("unselectable", true); + } + } +}; + +Calendar.findMonth = function(el) { + if (typeof el.month != "undefined") { + return el; + } else if (typeof el.parentNode.month != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.findYear = function(el) { + if (typeof el.year != "undefined") { + return el; + } else if (typeof el.parentNode.year != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.showMonthsCombo = function () { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var mc = cal.monthsCombo; + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + if (cal.activeMonth) { + Calendar.removeClass(cal.activeMonth, "active"); + } + var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()]; + Calendar.addClass(mon, "active"); + cal.activeMonth = mon; + var s = mc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var mcw = mc.offsetWidth; + if (typeof mcw == "undefined") + // Konqueror brain-dead techniques + mcw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; +}; + +Calendar.showYearsCombo = function (fwd) { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var yc = cal.yearsCombo; + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + if (cal.activeYear) { + Calendar.removeClass(cal.activeYear, "active"); + } + cal.activeYear = null; + var Y = cal.date.getFullYear() + (fwd ? 1 : -1); + var yr = yc.firstChild; + var show = false; + for (var i = 12; i > 0; --i) { + if (Y >= cal.minYear && Y <= cal.maxYear) { + yr.innerHTML = Y; + yr.year = Y; + yr.style.display = "block"; + show = true; + } else { + yr.style.display = "none"; + } + yr = yr.nextSibling; + Y += fwd ? cal.yearStep : -cal.yearStep; + } + if (show) { + var s = yc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var ycw = yc.offsetWidth; + if (typeof ycw == "undefined") + // Konqueror brain-dead techniques + ycw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; + } +}; + +// event handlers + +Calendar.tableMouseUp = function(ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + if (cal.timeout) { + clearTimeout(cal.timeout); + } + var el = cal.activeDiv; + if (!el) { + return false; + } + var target = Calendar.getTargetElement(ev); + ev || (ev = window.event); + Calendar.removeClass(el, "active"); + if (target == el || target.parentNode == el) { + Calendar.cellClick(el, ev); + } + var mon = Calendar.findMonth(target); + var date = null; + if (mon) { + date = new Date(cal.date); + if (mon.month != date.getMonth()) { + date.setMonth(mon.month); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } else { + var year = Calendar.findYear(target); + if (year) { + date = new Date(cal.date); + if (year.year != date.getFullYear()) { + date.setFullYear(year.year); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } + } + with (Calendar) { + removeEvent(document, "mouseup", tableMouseUp); + removeEvent(document, "mouseover", tableMouseOver); + removeEvent(document, "mousemove", tableMouseOver); + cal._hideCombos(); + _C = null; + return stopEvent(ev); + } +}; + +Calendar.tableMouseOver = function (ev) { + var cal = Calendar._C; + if (!cal) { + return; + } + var el = cal.activeDiv; + var target = Calendar.getTargetElement(ev); + if (target == el || target.parentNode == el) { + Calendar.addClass(el, "hilite active"); + Calendar.addClass(el.parentNode, "rowhilite"); + } else { + if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2))) + Calendar.removeClass(el, "active"); + Calendar.removeClass(el, "hilite"); + Calendar.removeClass(el.parentNode, "rowhilite"); + } + ev || (ev = window.event); + if (el.navtype == 50 && target != el) { + var pos = Calendar.getAbsolutePos(el); + var w = el.offsetWidth; + var x = ev.clientX; + var dx; + var decrease = true; + if (x > pos.x + w) { + dx = x - pos.x - w; + decrease = false; + } else + dx = pos.x - x; + + if (dx < 0) dx = 0; + var range = el._range; + var current = el._current; + var count = Math.floor(dx / 10) % range.length; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + while (count-- > 0) + if (decrease) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.innerHTML = newval; + + cal.onUpdateTime(); + } + var mon = Calendar.findMonth(target); + if (mon) { + if (mon.month != cal.date.getMonth()) { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + Calendar.addClass(mon, "hilite"); + cal.hilitedMonth = mon; + } else if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + } else { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + var year = Calendar.findYear(target); + if (year) { + if (year.year != cal.date.getFullYear()) { + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + Calendar.addClass(year, "hilite"); + cal.hilitedYear = year; + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.tableMouseDown = function (ev) { + if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) { + return Calendar.stopEvent(ev); + } +}; + +Calendar.calDragIt = function (ev) { + var cal = Calendar._C; + if (!(cal && cal.dragging)) { + return false; + } + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posX = ev.pageX; + posY = ev.pageY; + } + cal.hideShowCovered(); + var st = cal.element.style; + st.left = (posX - cal.xOffs) + "px"; + st.top = (posY - cal.yOffs) + "px"; + return Calendar.stopEvent(ev); +}; + +Calendar.calDragEnd = function (ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + cal.dragging = false; + with (Calendar) { + removeEvent(document, "mousemove", calDragIt); + removeEvent(document, "mouseup", calDragEnd); + tableMouseUp(ev); + } + cal.hideShowCovered(); +}; + +Calendar.dayMouseDown = function(ev) { + var el = Calendar.getElement(ev); + if (el.disabled) { + return false; + } + var cal = el.calendar; + cal.activeDiv = el; + Calendar._C = cal; + if (el.navtype != 300) with (Calendar) { + if (el.navtype == 50) { + el._current = el.innerHTML; + addEvent(document, "mousemove", tableMouseOver); + } else + addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver); + addClass(el, "hilite active"); + addEvent(document, "mouseup", tableMouseUp); + } else if (cal.isPopup) { + cal._dragStart(ev); + } + if (el.navtype == -1 || el.navtype == 1) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250); + } else if (el.navtype == -2 || el.navtype == 2) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250); + } else { + cal.timeout = null; + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseDblClick = function(ev) { + Calendar.cellClick(Calendar.getElement(ev), ev || window.event); + if (Calendar.is_ie) { + document.selection.empty(); + } +}; + +Calendar.dayMouseOver = function(ev) { + var el = Calendar.getElement(ev); + if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) { + return false; + } + if (el.ttip) { + if (el.ttip.substr(0, 1) == "_") { + el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1); + } + el.calendar.tooltips.innerHTML = el.ttip; + } + if (el.navtype != 300) { + Calendar.addClass(el, "hilite"); + if (el.caldate) { + Calendar.addClass(el.parentNode, "rowhilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseOut = function(ev) { + with (Calendar) { + var el = getElement(ev); + if (isRelated(el, ev) || _C || el.disabled) + return false; + removeClass(el, "hilite"); + if (el.caldate) + removeClass(el.parentNode, "rowhilite"); + if (el.calendar) + el.calendar.tooltips.innerHTML = _TT["SEL_DATE"]; + return stopEvent(ev); + } +}; + +/** + * A generic "click" handler :) handles all types of buttons defined in this + * calendar. + */ +Calendar.cellClick = function(el, ev) { + var cal = el.calendar; + var closing = false; + var newdate = false; + var date = null; + if (typeof el.navtype == "undefined") { + if (cal.currentDateEl) { + Calendar.removeClass(cal.currentDateEl, "selected"); + Calendar.addClass(el, "selected"); + closing = (cal.currentDateEl == el); + if (!closing) { + cal.currentDateEl = el; + } + } + cal.date.setDateOnly(el.caldate); + date = cal.date; + var other_month = !(cal.dateClicked = !el.otherMonth); + if (!other_month && !cal.currentDateEl) + cal._toggleMultipleDate(new Date(date)); + else + newdate = !el.disabled; + // a date was clicked + if (other_month) + cal._init(cal.firstDayOfWeek, date); + } else { + if (el.navtype == 200) { + Calendar.removeClass(el, "hilite"); + cal.callCloseHandler(); + return; + } + date = new Date(cal.date); + if (el.navtype == 0) + date.setDateOnly(new Date()); // TODAY + // unless "today" was clicked, we assume no date was clicked so + // the selected handler will know not to close the calenar when + // in single-click mode. + // cal.dateClicked = (el.navtype == 0); + cal.dateClicked = false; + var year = date.getFullYear(); + var mon = date.getMonth(); + function setMonth(m) { + var day = date.getDate(); + var max = date.getMonthDays(m); + if (day > max) { + date.setDate(max); + } + date.setMonth(m); + }; + switch (el.navtype) { + case 400: + Calendar.removeClass(el, "hilite"); + var text = Calendar._TT["ABOUT"]; + if (typeof text != "undefined") { + text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : ""; + } else { + // FIXME: this should be removed as soon as lang files get updated! + text = "Help and about box text is not translated into this language.\n" + + "If you know this language and you feel generous please update\n" + + "the corresponding file in \"lang\" subdir to match calendar-en.js\n" + + "and send it back to to get it into the distribution ;-)\n\n" + + "Thank you!\n" + + "http://dynarch.com/mishoo/calendar.epl\n"; + } + alert(text); + return; + case -2: + if (year > cal.minYear) { + date.setFullYear(year - 1); + } + break; + case -1: + if (mon > 0) { + setMonth(mon - 1); + } else if (year-- > cal.minYear) { + date.setFullYear(year); + setMonth(11); + } + break; + case 1: + if (mon < 11) { + setMonth(mon + 1); + } else if (year < cal.maxYear) { + date.setFullYear(year + 1); + setMonth(0); + } + break; + case 2: + if (year < cal.maxYear) { + date.setFullYear(year + 1); + } + break; + case 100: + cal.setFirstDayOfWeek(el.fdow); + return; + case 50: + var range = el._range; + var current = el.innerHTML; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + if (ev && ev.shiftKey) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.innerHTML = newval; + cal.onUpdateTime(); + return; + case 0: + // TODAY will bring us here + if ((typeof cal.getDateStatus == "function") && + cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) { + return false; + } + break; + } + if (!date.equalsTo(cal.date)) { + cal.setDate(date); + newdate = true; + } else if (el.navtype == 0) + newdate = closing = true; + } + if (newdate) { + ev && cal.callHandler(); + } + if (closing) { + Calendar.removeClass(el, "hilite"); + ev && cal.callCloseHandler(); + } +}; + +// END: CALENDAR STATIC FUNCTIONS + +// BEGIN: CALENDAR OBJECT FUNCTIONS + +/** + * This function creates the calendar inside the given parent. If _par is + * null than it creates a popup calendar inside the BODY element. If _par is + * an element, be it BODY, then it creates a non-popup calendar (still + * hidden). Some properties need to be set before calling this function. + */ +Calendar.prototype.create = function (_par) { + var parent = null; + if (! _par) { + // default parent is the document body, in which case we create + // a popup calendar. + parent = document.getElementsByTagName("body")[0]; + this.isPopup = true; + } else { + parent = _par; + this.isPopup = false; + } + this.date = this.dateStr ? new Date(this.dateStr) : new Date(); + + var table = Calendar.createElement("table"); + this.table = table; + table.cellSpacing = 0; + table.cellPadding = 0; + table.calendar = this; + Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown); + + var div = Calendar.createElement("div"); + this.element = div; + div.className = "calendar"; + if (this.isPopup) { + div.style.position = "absolute"; + div.style.display = "none"; + } + div.appendChild(table); + + var thead = Calendar.createElement("thead", table); + var cell = null; + var row = null; + + var cal = this; + var hh = function (text, cs, navtype) { + cell = Calendar.createElement("td", row); + cell.colSpan = cs; + cell.className = "button"; + if (navtype != 0 && Math.abs(navtype) <= 2) + cell.className += " nav"; + Calendar._add_evs(cell); + cell.calendar = cal; + cell.navtype = navtype; + cell.innerHTML = "
    " + text + "
    "; + return cell; + }; + + row = Calendar.createElement("tr", thead); + var title_length = 6; + (this.isPopup) && --title_length; + (this.weekNumbers) && ++title_length; + + hh("?", 1, 400).ttip = Calendar._TT["INFO"]; + this.title = hh("", title_length, 300); + this.title.className = "title"; + if (this.isPopup) { + this.title.ttip = Calendar._TT["DRAG_TO_MOVE"]; + this.title.style.cursor = "move"; + hh("×", 1, 200).ttip = Calendar._TT["CLOSE"]; + } + + row = Calendar.createElement("tr", thead); + row.className = "headrow"; + + this._nav_py = hh("«", 1, -2); + this._nav_py.ttip = Calendar._TT["PREV_YEAR"]; + + this._nav_pm = hh("‹", 1, -1); + this._nav_pm.ttip = Calendar._TT["PREV_MONTH"]; + + this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0); + this._nav_now.ttip = Calendar._TT["GO_TODAY"]; + + this._nav_nm = hh("›", 1, 1); + this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"]; + + this._nav_ny = hh("»", 1, 2); + this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"]; + + // day names + row = Calendar.createElement("tr", thead); + row.className = "daynames"; + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + cell.className = "name wn"; + cell.innerHTML = Calendar._TT["WK"]; + } + for (var i = 7; i > 0; --i) { + cell = Calendar.createElement("td", row); + if (!i) { + cell.navtype = 100; + cell.calendar = this; + Calendar._add_evs(cell); + } + } + this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild; + this._displayWeekdays(); + + var tbody = Calendar.createElement("tbody", table); + this.tbody = tbody; + + for (i = 6; i > 0; --i) { + row = Calendar.createElement("tr", tbody); + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + } + for (var j = 7; j > 0; --j) { + cell = Calendar.createElement("td", row); + cell.calendar = this; + Calendar._add_evs(cell); + } + } + + if (this.showsTime) { + row = Calendar.createElement("tr", tbody); + row.className = "time"; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + cell.innerHTML = Calendar._TT["TIME"] || " "; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = this.weekNumbers ? 4 : 3; + + (function(){ + function makeTimePart(className, init, range_start, range_end) { + var part = Calendar.createElement("span", cell); + part.className = className; + part.innerHTML = init; + part.calendar = cal; + part.ttip = Calendar._TT["TIME_PART"]; + part.navtype = 50; + part._range = []; + if (typeof range_start != "number") + part._range = range_start; + else { + for (var i = range_start; i <= range_end; ++i) { + var txt; + if (i < 10 && range_end >= 10) txt = '0' + i; + else txt = '' + i; + part._range[part._range.length] = txt; + } + } + Calendar._add_evs(part); + return part; + }; + var hrs = cal.date.getHours(); + var mins = cal.date.getMinutes(); + var t12 = !cal.time24; + var pm = (hrs > 12); + if (t12 && pm) hrs -= 12; + var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23); + var span = Calendar.createElement("span", cell); + span.innerHTML = ":"; + span.className = "colon"; + var M = makeTimePart("minute", mins, 0, 59); + var AP = null; + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + if (t12) + AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]); + else + cell.innerHTML = " "; + + cal.onSetTime = function() { + var pm, hrs = this.date.getHours(), + mins = this.date.getMinutes(); + if (t12) { + pm = (hrs >= 12); + if (pm) hrs -= 12; + if (hrs == 0) hrs = 12; + AP.innerHTML = pm ? "pm" : "am"; + } + H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs; + M.innerHTML = (mins < 10) ? ("0" + mins) : mins; + }; + + cal.onUpdateTime = function() { + var date = this.date; + var h = parseInt(H.innerHTML, 10); + if (t12) { + if (/pm/i.test(AP.innerHTML) && h < 12) + h += 12; + else if (/am/i.test(AP.innerHTML) && h == 12) + h = 0; + } + var d = date.getDate(); + var m = date.getMonth(); + var y = date.getFullYear(); + date.setHours(h); + date.setMinutes(parseInt(M.innerHTML, 10)); + date.setFullYear(y); + date.setMonth(m); + date.setDate(d); + this.dateClicked = false; + this.callHandler(); + }; + })(); + } else { + this.onSetTime = this.onUpdateTime = function() {}; + } + + var tfoot = Calendar.createElement("tfoot", table); + + row = Calendar.createElement("tr", tfoot); + row.className = "footrow"; + + cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300); + cell.className = "ttip"; + if (this.isPopup) { + cell.ttip = Calendar._TT["DRAG_TO_MOVE"]; + cell.style.cursor = "move"; + } + this.tooltips = cell; + + div = Calendar.createElement("div", this.element); + this.monthsCombo = div; + div.className = "combo"; + for (i = 0; i < Calendar._MN.length; ++i) { + var mn = Calendar.createElement("div"); + mn.className = Calendar.is_ie ? "label-IEfix" : "label"; + mn.month = i; + mn.innerHTML = Calendar._SMN[i]; + div.appendChild(mn); + } + + div = Calendar.createElement("div", this.element); + this.yearsCombo = div; + div.className = "combo"; + for (i = 12; i > 0; --i) { + var yr = Calendar.createElement("div"); + yr.className = Calendar.is_ie ? "label-IEfix" : "label"; + div.appendChild(yr); + } + + this._init(this.firstDayOfWeek, this.date); + parent.appendChild(this.element); +}; + +/** keyboard navigation, only for popup calendars */ +Calendar._keyEvent = function(ev) { + var cal = window._dynarch_popupCalendar; + if (!cal || cal.multiple) + return false; + (Calendar.is_ie) && (ev = window.event); + var act = (Calendar.is_ie || ev.type == "keypress"), + K = ev.keyCode; + if (ev.ctrlKey) { + switch (K) { + case 37: // KEY left + act && Calendar.cellClick(cal._nav_pm); + break; + case 38: // KEY up + act && Calendar.cellClick(cal._nav_py); + break; + case 39: // KEY right + act && Calendar.cellClick(cal._nav_nm); + break; + case 40: // KEY down + act && Calendar.cellClick(cal._nav_ny); + break; + default: + return false; + } + } else switch (K) { + case 32: // KEY space (now) + Calendar.cellClick(cal._nav_now); + break; + case 27: // KEY esc + act && cal.callCloseHandler(); + break; + case 37: // KEY left + case 38: // KEY up + case 39: // KEY right + case 40: // KEY down + if (act) { + var prev, x, y, ne, el, step; + prev = K == 37 || K == 38; + step = (K == 37 || K == 39) ? 1 : 7; + function setVars() { + el = cal.currentDateEl; + var p = el.pos; + x = p & 15; + y = p >> 4; + ne = cal.ar_days[y][x]; + };setVars(); + function prevMonth() { + var date = new Date(cal.date); + date.setDate(date.getDate() - step); + cal.setDate(date); + }; + function nextMonth() { + var date = new Date(cal.date); + date.setDate(date.getDate() + step); + cal.setDate(date); + }; + while (1) { + switch (K) { + case 37: // KEY left + if (--x >= 0) + ne = cal.ar_days[y][x]; + else { + x = 6; + K = 38; + continue; + } + break; + case 38: // KEY up + if (--y >= 0) + ne = cal.ar_days[y][x]; + else { + prevMonth(); + setVars(); + } + break; + case 39: // KEY right + if (++x < 7) + ne = cal.ar_days[y][x]; + else { + x = 0; + K = 40; + continue; + } + break; + case 40: // KEY down + if (++y < cal.ar_days.length) + ne = cal.ar_days[y][x]; + else { + nextMonth(); + setVars(); + } + break; + } + break; + } + if (ne) { + if (!ne.disabled) + Calendar.cellClick(ne); + else if (prev) + prevMonth(); + else + nextMonth(); + } + } + break; + case 13: // KEY enter + if (act) + Calendar.cellClick(cal.currentDateEl, ev); + break; + default: + return false; + } + return Calendar.stopEvent(ev); +}; + +/** + * (RE)Initializes the calendar to the given date and firstDayOfWeek + */ +Calendar.prototype._init = function (firstDayOfWeek, date) { + var today = new Date(), + TY = today.getFullYear(), + TM = today.getMonth(), + TD = today.getDate(); + this.table.style.visibility = "hidden"; + var year = date.getFullYear(); + if (year < this.minYear) { + year = this.minYear; + date.setFullYear(year); + } else if (year > this.maxYear) { + year = this.maxYear; + date.setFullYear(year); + } + this.firstDayOfWeek = firstDayOfWeek; + this.date = new Date(date); + var month = date.getMonth(); + var mday = date.getDate(); + var no_days = date.getMonthDays(); + + // calendar voodoo for computing the first day that would actually be + // displayed in the calendar, even if it's from the previous month. + // WARNING: this is magic. ;-) + date.setDate(1); + var day1 = (date.getDay() - this.firstDayOfWeek) % 7; + if (day1 < 0) + day1 += 7; + date.setDate(-day1); + date.setDate(date.getDate() + 1); + + var row = this.tbody.firstChild; + var MN = Calendar._SMN[month]; + var ar_days = this.ar_days = new Array(); + var weekend = Calendar._TT["WEEKEND"]; + var dates = this.multiple ? (this.datesCells = {}) : null; + for (var i = 0; i < 6; ++i, row = row.nextSibling) { + var cell = row.firstChild; + if (this.weekNumbers) { + cell.className = "day wn"; + cell.innerHTML = date.getWeekNumber(); + cell = cell.nextSibling; + } + row.className = "daysrow"; + var hasdays = false, iday, dpos = ar_days[i] = []; + for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) { + iday = date.getDate(); + var wday = date.getDay(); + cell.className = "day"; + cell.pos = i << 4 | j; + dpos[j] = cell; + var current_month = (date.getMonth() == month); + if (!current_month) { + if (this.showsOtherMonths) { + cell.className += " othermonth"; + cell.otherMonth = true; + } else { + cell.className = "emptycell"; + cell.innerHTML = " "; + cell.disabled = true; + continue; + } + } else { + cell.otherMonth = false; + hasdays = true; + } + cell.disabled = false; + cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday; + if (dates) + dates[date.print("%Y%m%d")] = cell; + if (this.getDateStatus) { + var status = this.getDateStatus(date, year, month, iday); + if (this.getDateToolTip) { + var toolTip = this.getDateToolTip(date, year, month, iday); + if (toolTip) + cell.title = toolTip; + } + if (status === true) { + cell.className += " disabled"; + cell.disabled = true; + } else { + if (/disabled/i.test(status)) + cell.disabled = true; + cell.className += " " + status; + } + } + if (!cell.disabled) { + cell.caldate = new Date(date); + cell.ttip = "_"; + if (!this.multiple && current_month + && iday == mday && this.hiliteToday) { + cell.className += " selected"; + this.currentDateEl = cell; + } + if (date.getFullYear() == TY && + date.getMonth() == TM && + iday == TD) { + cell.className += " today"; + cell.ttip += Calendar._TT["PART_TODAY"]; + } + if (weekend.indexOf(wday.toString()) != -1) + cell.className += cell.otherMonth ? " oweekend" : " weekend"; + } + } + if (!(hasdays || this.showsOtherMonths)) + row.className = "emptyrow"; + } + this.title.innerHTML = Calendar._MN[month] + ", " + year; + this.onSetTime(); + this.table.style.visibility = "visible"; + this._initMultipleDates(); + // PROFILE + // this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms"; +}; + +Calendar.prototype._initMultipleDates = function() { + if (this.multiple) { + for (var i in this.multiple) { + var cell = this.datesCells[i]; + var d = this.multiple[i]; + if (!d) + continue; + if (cell) + cell.className += " selected"; + } + } +}; + +Calendar.prototype._toggleMultipleDate = function(date) { + if (this.multiple) { + var ds = date.print("%Y%m%d"); + var cell = this.datesCells[ds]; + if (cell) { + var d = this.multiple[ds]; + if (!d) { + Calendar.addClass(cell, "selected"); + this.multiple[ds] = date; + } else { + Calendar.removeClass(cell, "selected"); + delete this.multiple[ds]; + } + } + } +}; + +Calendar.prototype.setDateToolTipHandler = function (unaryFunction) { + this.getDateToolTip = unaryFunction; +}; + +/** + * Calls _init function above for going to a certain date (but only if the + * date is different than the currently selected one). + */ +Calendar.prototype.setDate = function (date) { + if (!date.equalsTo(this.date)) { + this._init(this.firstDayOfWeek, date); + } +}; + +/** + * Refreshes the calendar. Useful if the "disabledHandler" function is + * dynamic, meaning that the list of disabled date can change at runtime. + * Just * call this function if you think that the list of disabled dates + * should * change. + */ +Calendar.prototype.refresh = function () { + this._init(this.firstDayOfWeek, this.date); +}; + +/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */ +Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) { + this._init(firstDayOfWeek, this.date); + this._displayWeekdays(); +}; + +/** + * Allows customization of what dates are enabled. The "unaryFunction" + * parameter must be a function object that receives the date (as a JS Date + * object) and returns a boolean value. If the returned value is true then + * the passed date will be marked as disabled. + */ +Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) { + this.getDateStatus = unaryFunction; +}; + +/** Customization of allowed year range for the calendar. */ +Calendar.prototype.setRange = function (a, z) { + this.minYear = a; + this.maxYear = z; +}; + +/** Calls the first user handler (selectedHandler). */ +Calendar.prototype.callHandler = function () { + if (this.onSelected) { + this.onSelected(this, this.date.print(this.dateFormat)); + } +}; + +/** Calls the second user handler (closeHandler). */ +Calendar.prototype.callCloseHandler = function () { + if (this.onClose) { + this.onClose(this); + } + this.hideShowCovered(); +}; + +/** Removes the calendar object from the DOM tree and destroys it. */ +Calendar.prototype.destroy = function () { + var el = this.element.parentNode; + el.removeChild(this.element); + Calendar._C = null; + window._dynarch_popupCalendar = null; +}; + +/** + * Moves the calendar element to a different section in the DOM tree (changes + * its parent). + */ +Calendar.prototype.reparent = function (new_parent) { + var el = this.element; + el.parentNode.removeChild(el); + new_parent.appendChild(el); +}; + +// This gets called when the user presses a mouse button anywhere in the +// document, if the calendar is shown. If the click was outside the open +// calendar this function closes it. +Calendar._checkCalendar = function(ev) { + var calendar = window._dynarch_popupCalendar; + if (!calendar) { + return false; + } + var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); + for (; el != null && el != calendar.element; el = el.parentNode); + if (el == null) { + // calls closeHandler which should hide the calendar. + window._dynarch_popupCalendar.callCloseHandler(); + return Calendar.stopEvent(ev); + } +}; + +/** Shows the calendar. */ +Calendar.prototype.show = function () { + var rows = this.table.getElementsByTagName("tr"); + for (var i = rows.length; i > 0;) { + var row = rows[--i]; + Calendar.removeClass(row, "rowhilite"); + var cells = row.getElementsByTagName("td"); + for (var j = cells.length; j > 0;) { + var cell = cells[--j]; + Calendar.removeClass(cell, "hilite"); + Calendar.removeClass(cell, "active"); + } + } + this.element.style.display = "block"; + this.hidden = false; + if (this.isPopup) { + window._dynarch_popupCalendar = this; + Calendar.addEvent(document, "keydown", Calendar._keyEvent); + Calendar.addEvent(document, "keypress", Calendar._keyEvent); + Calendar.addEvent(document, "mousedown", Calendar._checkCalendar); + } + this.hideShowCovered(); +}; + +/** + * Hides the calendar. Also removes any "hilite" from the class of any TD + * element. + */ +Calendar.prototype.hide = function () { + if (this.isPopup) { + Calendar.removeEvent(document, "keydown", Calendar._keyEvent); + Calendar.removeEvent(document, "keypress", Calendar._keyEvent); + Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar); + } + this.element.style.display = "none"; + this.hidden = true; + this.hideShowCovered(); +}; + +/** + * Shows the calendar at a given absolute position (beware that, depending on + * the calendar element style -- position property -- this might be relative + * to the parent's containing rectangle). + */ +Calendar.prototype.showAt = function (x, y) { + var s = this.element.style; + s.left = x + "px"; + s.top = y + "px"; + this.show(); +}; + +/** Shows the calendar near a given element. */ +Calendar.prototype.showAtElement = function (el, opts) { + var self = this; + var p = Calendar.getAbsolutePos(el); + + if (!opts || typeof opts != "string") { + this.showAt(p.x, p.y + el.offsetHeight); + return true; + } + function fixPosition(box) { + + if (box.x < 0) + box.x = 0; + if (box.y < 0) + box.y = 0; + var cp = document.createElement("div"); + var s = cp.style; + s.position = "absolute"; + s.right = s.bottom = s.width = s.height = "0px"; + document.body.appendChild(cp); + var br = Calendar.getAbsolutePos(cp); + document.body.removeChild(cp); + if (Calendar.is_ie) { + br.y += document.body.scrollTop; + br.x += document.body.scrollLeft; + } else { + br.y += window.scrollY; + br.x += window.scrollX; + } + var tmp = box.x + box.width - br.x; + if (tmp > 0) box.x -= tmp; + tmp = box.y + box.height - br.y; + if (tmp > 0) box.y -= tmp; + }; + this.element.style.display = "block"; + Calendar.continuation_for_the_fucking_khtml_browser = function() { + var w = self.element.offsetWidth; + var h = self.element.offsetHeight; + self.element.style.display = "none"; + var valign = opts.substr(0, 1); + var halign = "l"; + if (opts.length > 1) { + halign = opts.substr(1, 1); + } + // vertical alignment + switch (valign) { + case "T": p.y -= h; break; + case "B": p.y += el.offsetHeight; break; + case "C": p.y += (el.offsetHeight - h) / 2; break; + case "t": p.y += el.offsetHeight - h; break; + case "b": break; // already there + } + // horizontal alignment + switch (halign) { + case "L": p.x -= w; break; + case "R": p.x += el.offsetWidth; break; + case "C": p.x += (el.offsetWidth - w) / 2; break; + case "l": p.x += el.offsetWidth - w; break; + case "r": break; // already there + } + p.width = w; + p.height = h + 40; + self.monthsCombo.style.display = "none"; + fixPosition(p); + self.showAt(p.x, p.y); + }; + if (Calendar.is_khtml) + setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); + else + Calendar.continuation_for_the_fucking_khtml_browser(); +}; + +/** Customizes the date format. */ +Calendar.prototype.setDateFormat = function (str) { + this.dateFormat = str; +}; + +/** Customizes the tooltip date format. */ +Calendar.prototype.setTtDateFormat = function (str) { + this.ttDateFormat = str; +}; + +/** + * Tries to identify the date represented in a string. If successful it also + * calls this.setDate which moves the calendar to the given date. + */ +Calendar.prototype.parseDate = function(str, fmt) { + if (!fmt) + fmt = this.dateFormat; + this.setDate(Date.parseDate(str, fmt)); +}; + +Calendar.prototype.hideShowCovered = function () { + if (!Calendar.is_ie && !Calendar.is_opera) + return; + function getVisib(obj){ + var value = obj.style.visibility; + if (!value) { + if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C + if (!Calendar.is_khtml) + value = document.defaultView. + getComputedStyle(obj, "").getPropertyValue("visibility"); + else + value = ''; + } else if (obj.currentStyle) { // IE + value = obj.currentStyle.visibility; + } else + value = ''; + } + return value; + }; + + var tags = new Array("applet", "iframe", "select"); + var el = this.element; + + var p = Calendar.getAbsolutePos(el); + var EX1 = p.x; + var EX2 = el.offsetWidth + EX1; + var EY1 = p.y; + var EY2 = el.offsetHeight + EY1; + + for (var k = tags.length; k > 0; ) { + var ar = document.getElementsByTagName(tags[--k]); + var cc = null; + + for (var i = ar.length; i > 0;) { + cc = ar[--i]; + + p = Calendar.getAbsolutePos(cc); + var CX1 = p.x; + var CX2 = cc.offsetWidth + CX1; + var CY1 = p.y; + var CY2 = cc.offsetHeight + CY1; + + if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = cc.__msh_save_visibility; + } else { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = "hidden"; + } + } + } +}; + +/** Internal function; it displays the bar with the names of the weekday. */ +Calendar.prototype._displayWeekdays = function () { + var fdow = this.firstDayOfWeek; + var cell = this.firstdayname; + var weekend = Calendar._TT["WEEKEND"]; + for (var i = 0; i < 7; ++i) { + cell.className = "day name"; + var realday = (i + fdow) % 7; + if (i) { + cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]); + cell.navtype = 100; + cell.calendar = this; + cell.fdow = realday; + Calendar._add_evs(cell); + } + if (weekend.indexOf(realday.toString()) != -1) { + Calendar.addClass(cell, "weekend"); + } + cell.innerHTML = Calendar._SDN[(i + fdow) % 7]; + cell = cell.nextSibling; + } +}; + +/** Internal function. Hides all combo boxes that might be displayed. */ +Calendar.prototype._hideCombos = function () { + this.monthsCombo.style.display = "none"; + this.yearsCombo.style.display = "none"; +}; + +/** Internal function. Starts dragging the element. */ +Calendar.prototype._dragStart = function (ev) { + if (this.dragging) { + return; + } + this.dragging = true; + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posY = ev.clientY + window.scrollY; + posX = ev.clientX + window.scrollX; + } + var st = this.element.style; + this.xOffs = posX - parseInt(st.left); + this.yOffs = posY - parseInt(st.top); + with (Calendar) { + addEvent(document, "mousemove", calDragIt); + addEvent(document, "mouseup", calDragEnd); + } +}; + +// BEGIN: DATE OBJECT PATCHES + +/** Adds the number of days array to the Date object. */ +Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31); + +/** Constants used for time computations */ +Date.SECOND = 1000 /* milliseconds */; +Date.MINUTE = 60 * Date.SECOND; +Date.HOUR = 60 * Date.MINUTE; +Date.DAY = 24 * Date.HOUR; +Date.WEEK = 7 * Date.DAY; + +Date.parseDate = function(str, fmt) { + var today = new Date(); + var y = 0; + var m = -1; + var d = 0; + var a = str.split(/\W+/); + var b = fmt.match(/%./g); + var i = 0, j = 0; + var hr = 0; + var min = 0; + for (i = 0; i < a.length; ++i) { + if (!a[i]) + continue; + switch (b[i]) { + case "%d": + case "%e": + d = parseInt(a[i], 10); + break; + + case "%m": + m = parseInt(a[i], 10) - 1; + break; + + case "%Y": + case "%y": + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + break; + + case "%b": + case "%B": + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; } + } + break; + + case "%H": + case "%I": + case "%k": + case "%l": + hr = parseInt(a[i], 10); + break; + + case "%P": + case "%p": + if (/pm/i.test(a[i]) && hr < 12) + hr += 12; + else if (/am/i.test(a[i]) && hr >= 12) + hr -= 12; + break; + + case "%M": + min = parseInt(a[i], 10); + break; + } + } + if (isNaN(y)) y = today.getFullYear(); + if (isNaN(m)) m = today.getMonth(); + if (isNaN(d)) d = today.getDate(); + if (isNaN(hr)) hr = today.getHours(); + if (isNaN(min)) min = today.getMinutes(); + if (y != 0 && m != -1 && d != 0) + return new Date(y, m, d, hr, min, 0); + y = 0; m = -1; d = 0; + for (i = 0; i < a.length; ++i) { + if (a[i].search(/[a-zA-Z]+/) != -1) { + var t = -1; + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; } + } + if (t != -1) { + if (m != -1) { + d = m+1; + } + m = t; + } + } else if (parseInt(a[i], 10) <= 12 && m == -1) { + m = a[i]-1; + } else if (parseInt(a[i], 10) > 31 && y == 0) { + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + } else if (d == 0) { + d = a[i]; + } + } + if (y == 0) + y = today.getFullYear(); + if (m != -1 && d != 0) + return new Date(y, m, d, hr, min, 0); + return today; +}; + +/** Returns the number of days in the current month */ +Date.prototype.getMonthDays = function(month) { + var year = this.getFullYear(); + if (typeof month == "undefined") { + month = this.getMonth(); + } + if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) { + return 29; + } else { + return Date._MD[month]; + } +}; + +/** Returns the number of day in the year. */ +Date.prototype.getDayOfYear = function() { + var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0); + var time = now - then; + return Math.floor(time / Date.DAY); +}; + +/** Returns the number of the week in year, as defined in ISO 8601. */ +Date.prototype.getWeekNumber = function() { + var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var DoW = d.getDay(); + d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu + var ms = d.valueOf(); // GMT + d.setMonth(0); + d.setDate(4); // Thu in Week 1 + return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; +}; + +/** Checks date and time equality */ +Date.prototype.equalsTo = function(date) { + return ((this.getFullYear() == date.getFullYear()) && + (this.getMonth() == date.getMonth()) && + (this.getDate() == date.getDate()) && + (this.getHours() == date.getHours()) && + (this.getMinutes() == date.getMinutes())); +}; + +/** Set only the year, month, date parts (keep existing time) */ +Date.prototype.setDateOnly = function(date) { + var tmp = new Date(date); + this.setDate(1); + this.setFullYear(tmp.getFullYear()); + this.setMonth(tmp.getMonth()); + this.setDate(tmp.getDate()); +}; + +/** Prints the date in a string according to the given format. */ +Date.prototype.print = function (str) { + var m = this.getMonth(); + var d = this.getDate(); + var y = this.getFullYear(); + var wn = this.getWeekNumber(); + var w = this.getDay(); + var s = {}; + var hr = this.getHours(); + var pm = (hr >= 12); + var ir = (pm) ? (hr - 12) : hr; + var dy = this.getDayOfYear(); + if (ir == 0) + ir = 12; + var min = this.getMinutes(); + var sec = this.getSeconds(); + s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N] + s["%A"] = Calendar._DN[w]; // full weekday name + s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N] + s["%B"] = Calendar._MN[m]; // full month name + // FIXME: %c : preferred date and time representation for the current locale + s["%C"] = 1 + Math.floor(y / 100); // the century number + s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) + s["%e"] = d; // the day of the month (range 1 to 31) + // FIXME: %D : american date style: %m/%d/%y + // FIXME: %E, %F, %G, %g, %h (man strftime) + s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) + s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) + s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) + s["%k"] = hr; // hour, range 0 to 23 (24h format) + s["%l"] = ir; // hour, range 1 to 12 (12h format) + s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 + s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 + s["%n"] = "\n"; // a newline character + s["%p"] = pm ? "PM" : "AM"; + s["%P"] = pm ? "pm" : "am"; + // FIXME: %r : the time in am/pm notation %I:%M:%S %p + // FIXME: %R : the time in 24-hour notation %H:%M + s["%s"] = Math.floor(this.getTime() / 1000); + s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 + s["%t"] = "\t"; // a tab character + // FIXME: %T : the time in 24-hour notation (%H:%M:%S) + s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn; + s["%u"] = w + 1; // the day of the week (range 1 to 7, 1 = MON) + s["%w"] = w; // the day of the week (range 0 to 6, 0 = SUN) + // FIXME: %x : preferred date representation for the current locale without the time + // FIXME: %X : preferred time representation for the current locale without the date + s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99) + s["%Y"] = y; // year with the century + s["%%"] = "%"; // a literal '%' character + + var re = /%./g; + if (!Calendar.is_ie5 && !Calendar.is_khtml) + return str.replace(re, function (par) { return s[par] || par; }); + + var a = str.match(re); + for (var i = 0; i < a.length; i++) { + var tmp = s[a[i]]; + if (tmp) { + re = new RegExp(a[i], 'g'); + str = str.replace(re, tmp); + } + } + + return str; +}; + +Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear; +Date.prototype.setFullYear = function(y) { + var d = new Date(this); + d.__msh_oldSetFullYear(y); + if (d.getMonth() != this.getMonth()) + this.setDate(28); + this.__msh_oldSetFullYear(y); +}; + +// END: DATE OBJECT PATCHES + + +// global object that remembers the calendar +window._dynarch_popupCalendar = null; diff --git a/hrmsWeb/hrms/includes/images/Balesh_Photo.jpg b/hrmsWeb/hrms/includes/images/Balesh_Photo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7480461145ddcf24fc212780191c39074f8b17f6 GIT binary patch literal 18465 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 G|2F~l%B<}G literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/Brand.jpg b/hrmsWeb/hrms/includes/images/Brand.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea116072dee5a2f95d51a1e271812056f237719c GIT binary patch literal 7357 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/Brand_Final.gif b/hrmsWeb/hrms/includes/images/Brand_Final.gif new file mode 100644 index 0000000000000000000000000000000000000000..8053976de032cc8e224192699b5f4cd7dee2fe06 GIT binary patch literal 19137 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 RwZ}pJ@q2-x5Y-3>06X;F3jY8A literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/Brand_Final_10.gif b/hrmsWeb/hrms/includes/images/Brand_Final_10.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d166c7a728a8f8938bf5fbba5130fc30f9c2ded GIT binary patch literal 5970 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 ShV8cA*%}h*?YySgLgQo2O literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/Brand_Final_7.gif b/hrmsWeb/hrms/includes/images/Brand_Final_7.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e4b9ed52d2addd992a6e7fa45ff2e6a5582b7a3 GIT binary patch literal 16969 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
      _*4bk-qP-H8$|@AR8_?dzb1 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 W_UzBU@7`LdQTz4r-`9ULAOJhuS(K#! literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/Brand_Final_peerless.gif b/hrmsWeb/hrms/includes/images/Brand_Final_peerless.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f0315876fd7480f1edccd38539fc0c1a41eafe GIT binary patch literal 4266 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 Q@a=cUbnd>|N&$5L4>pD5-T(jq literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/LaunchPad.jpg b/hrmsWeb/hrms/includes/images/LaunchPad.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc5b4c89a9d1e8eca4ed761f2ff8b7428a9ef377 GIT binary patch literal 41041 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�iQHa0vpzQ|;|0zO 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/LaunchPad1.jpg b/hrmsWeb/hrms/includes/images/LaunchPad1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac1abe6c9fc38d739b1db49ac5d14e88d7fdd3f6 GIT binary patch literal 89221 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/Launchpad_second.bmp b/hrmsWeb/hrms/includes/images/Launchpad_second.bmp new file mode 100644 index 0000000000000000000000000000000000000000..353e41f8479b524a1a09a2824f2889ee06d79c44 GIT binary patch literal 1454694 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℘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

      )CxE_V537!YjSs#1q`HicepM%-A3DXN9~z81 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

      &n%(5v9 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℘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

      )CxE_V537!YjSs#1q`HicepM%-A3DXN9~z81 zeDNF)DMkGz=ROksW^YIW5sNvXcsn@;4B=fx8c<~~qe!SZ>Htc(L90#)=?6Xb1Z@)iyjUSVz#8FpUr2DZKl*@vtdL1D?;EF3-la?=GdNyRpQ2&rKymSn$;xB+M}R?)?i&`CmKC>kr+;F)4a-m0*8cYm3J#tu&+y2< z{P?p0)!E4}T*cHuUXNnV@QvHL*EJ|kR>#=b!O7V#K*h)~Ha#scY`XD%C~sGM_AavV z5!X|;_etQpsd67k8cJB^#cU%lVh)}F5&d`(e-aaT#j3X8`pn4EhyIp|LLb=p&|6Qc z&k)fMI&rHXv?10HS^d!9sp>f++{4$%_9u1?W9H!5euk%zlKZe>9|wJ4xkHm=qI>r! z4t?ld9R1Ly=o;b#KMMVF{+&$V{S4>%=XJ{u%$H)X`Vy1h_?$8~_*H|z$T>~kBG2g6L|CcX+Qm}Nk^@{ON+R5-sb@5O0kID{= z%T_b8mQmC9j!4tAq-#?c22^)gqaqJABc|X_WH7p${5j zi4X52(Qn2l?c~sh+xun&`XHtcO%g&(9|nD$^_USEe|5Y(DujNJ{sC4$G=P}lJ58$} zsoFB*(}+Cae0u_7xNiiw&(({`^mem!v^J!eYMUD>>ub`z+>){~ENrND4z5uN8y%cI zO(>25(aGS4)uA{7pm|26(nAuM(HnK0*yij|i0Pw8r2A~z=bp4vgYK^d<#(-U|7VHJ z|5>zJ%ihx^bYpPJZbx>qy?d;lHOs{>PQ!%i5)ipw+tSG=#>jyM(8rEUa}P}lN!u2a zz1u%A(<^2pJ1QA0dH{eFH(zk+YFbi%S-l3Fyv{y;^4f+}PydKbIli$Oz?7=n{VHY1%5pU z{dj9JQhm}``jBc1`g6*Q>EpY1QA{8HcNiL#HDL1NTm4|OLg4U4V-WhGHrNn92K{iv zlhh#5Zw9CB2cZw=zK^%`p+pWeNd$=;6QHm2)yd9RC(wY77e}!`zuF^cbEdctxp(2N zXYd)4ha#WAe0%~DxX&lp&&kc%noeD(qG)DsOQF-KOcxtxXG0TfTdJ$OS8zx~va4rs zU{ng##SfA*0J`XYaTND3Lnl8S2Ompzw0rCp*Qji_=xwI%k@i7JK!Wn-w*TCqu43in zpR|P;veDKpO5Mc6iXLWY>l2!it8QxV9hs_XMD>f_tZhM8(zh{jWHSO{qqBCo1jpHW z2E*FHJB02Z0p4B-;V91ls*hx$qMn~_;74fG-ILtfDtK|eH?gzSB&6QHlN z9_K#D?JYvGF6dpf{zzFDxMg^8x#ctR0Lg=pPhkE&0SVj}92II|XQghSyIgiH&BHA^ zHI>2kF|@KZHnUY#H&oX#jfmM8m$Jn(AlB6znmas0Q>h*iW^{iwb5{y0(kUR78Ih&y z;IBpTR5o!AOxYFygX2=nTs&<&10pkaD(F+cS)}yyN*y&LR}*`G@5s%+t<%t@I2+r# z=~=kI8d%bp>f!7k1NJ^O3mPjj#XBwy?0w9jXnW5=glP2-0zre|b8dEbxaKH==$aZ4XE z`C;}xlKbZGr2l-b?Bmf7{Y4eB_n}T;J+Sl%+WhPe*aUkYz85%%p$$=fsAt;tK0Huy za_A$`Z${=e;14j}2N&M3e+4tyOral|B*geW)B~mW?<}Fu})Uo#5_1A-rX-KI3~fsn4+d>sB3KH=?fVa zd0{adBa<>c1LItMqs?gEbnj?u*ATC$%`QQy7A_$_%V_<&T0>6F976Q`V^UIbc2SsY z8Ff8V8taRHtp2zEyI9?rX=vjMCO%CI=3jqVE2m@WD63l1XbM^yp8h@=nVA9|7cN&cMR$@OqP>sgzWF|_$?LDNc6)$+}UVM z8TufdV}{TVO&el9FY19PKLmXc*@t@Y+8r|$*+)X(Y|JI{nDg`rK&ddu>j3>0?1l0= zu=qY}nyrzg+3NN3>y(uhG<4`5zRoPa*wjp_ql>(fs;ahurJbWsNVI1_cwB0>t9PiG zotw5fjUAH242WZer7?q&>{*eDx^|0Ks;*VgS)-sKuc||#yDpbk{I73*RMNBfkH7u) z)lc&7fty&to9RBuN`{VK{_7{qx0127 zk%P->Wo;#0Q>I@S#nGMV6JTa*vq4i$O;4BNkW*E1WqV|1XA5*(rp0|C#E0Vh@W?*W-iKxqxt>o?;A7Aa{h0-P!_g1* zpeR2c`jzo}o}R)jeb58rQDh$ueb70Ld|m{7L?J@B9TNR!X?{r$eY}ypVr<+0hB1>2^Y&VjC+wDir=j3N&^AD@6Q z_l=BlG43?Wc37H&d+>S%-Sz9W{`%z)KmGRmYWWR+{q~11zWvGA zn*QYvD;KTQc5sUU^n2|3>|A^!A?Rv z5Ed?1LcI<$zHdH$J3f(X;&I<}Ds`a0sA!F&AKC={K7@W?_~Z9foy0AD(1SzY)w}#W zP3WA4eji8>0`v(L9+8IoU<};&C-M=_$!$mpeS)w)KJ?wo{kD9D(C8t9r?n%U7*^o?D8L!lI}qi2v;L<*Sd3@9!N3i`^* zhClxEcU=PuWlg=WfBNnFMJx0vPBO}-8YXU*^a#37x)n3lHDt3XGgQT#zE;KP_cf{% zN4A!kgR^hs1_NtI&j?A)Hl?$ym_AyT4qz(;z|=9d)ibq~QBadpQ2~=5aG#cmiJ^@h zSoa(}e00q1maJ7&&@}jEg)A8ROs(yl-Q1Nl)Fb0!w`|)6woM-Qjd8m~mL3kbm#~Ph zxxv?7=5d^)HlObh~sn!$h!3XhN|&xm-JplD@Nsu_)KL-R8=bN!e9@4rlKTn%mM|Nj@? z$myEV1LO4U{Vd#K9Rss0+*3^5lbu4hSqG$h#BaB7_Wz&nmi{iUEw5$a8WgW&Oa(=j zl)U|pevyiXHcR9*l=Uf#Rw*r&QTb)5+)sKtDRe(}NxO&5ysztlO|bRb%x!IZInR7nX;A zSTNJu%h}75=^x1O31EfCGDBlDtsNn+mcfbw^!s0b`Ch}s*2K~E+ZAiHsB|3%cYWtT z14fu#K!$B#rin)i#cz{UV7j?yjESSq*NfIHQ_xn>r?4YaZ9Rfm;mJ^J*U;V_)()N_ zs)jZ{E?M{M3V9_B(+w*6tJWzkhGQC=%d2U9`O`1j=9U|D^uGRe(NDjxz<5wu!=3F% zv2jvY)Bon{pBc`cTS@Mlr}L1!tT}iBGlG71Dh}bXeptb_iIzTi7q8JVQK(X4EY%7d$4PT1oZpQ^6g*T%l-P^jvwyl{rX_{%7=U9DhiYz{h@)Q-?I~pno}On z%Y2CF_x5gP!~LzI=!e|9eCT_a3uA~eeQ*Rg4jc_|vZ}}i&=Sr9=YliBdGGI9c0cbo zxDvP?xT^A;|AbrSlF&DMQ;IzDynX@%?nBqf>sYaTwVuAQzP_o014Bp0$iUb_UO`=3 z*Hlqe>*qzwv~-PJ+&tYp+1~yE4$gFNp_)>xz~Ab`_BOS5a`F!JiAmPBcA~g?yLg5B zM1}rdHNeCrfKb7CX?^##w%?%6EVJiRI=y^Y*@BE?4XVfs<2MB>8hC z_0Q`mMPA%IegdNC2T1kDG4K5+{D@-C$Id03xR8A6QW~*r+qJuUZ`|7lSVu%ZqNNW( zAB=&RJ{lKTBVEZFNAB+L+ zLnYa8=!2sH_kl5y2z_u~I6JT>TnPz%vowpy!!D>NAcp%O0`AMNzBM#5)6~?b(V0Mb zRyGdHSIMes=&qEJ1I}70v(Ap@XiK$MQc+b=Q~Ue(-zlgl8=9G$**UCJ(^Awm2Gte~ zb1J0Y+PJX%qhqNaZdR@|Qx_WR(V(jJ(+S^#uMOdv6&XN0KIL-#`2Bp0jt)?(FW&elxQ(J=5H_yX`hJ zi7aMjW@cu#$d+tL7F!lGGc&Vn$rdwO4E4QPA*EAQCAlQKyCrqy$&QYUjEszoj7mLz zDG>VYfK`$@4ps>L;xf$=vMrNxY$(vLu=06H%?oPu!)^L-=z}^?6NPNSp$}SvHlgL% z3=evHU2pE|V;2Yr~k?v70#4t-5wH)xT$+TQ)pj~e>0rFcthsi6;AhW48yAAqE95A;3%pSov% zfL<{qeQ4gmrvPoAI*l0DpRf@?+y}v2unkh!0a^b1x4&!a8;D8(_Nns-iYTgSes}Kt zo%_r{d}q#{zjOB?Gb`J*tJkkxyLRKojdMT!#Lmg3p`$A#E_LPB{V#sFplfN*%qz+v zCc`Ey#49Uyhxg%4?%QmVkA7sjAfPJ7At!W!Qh4>v<%!Aoo4U>;>gg4gni^*A-`i)qNEQx2A5EyA3{Y$i}ZN-Li?v~CVtWb z(GPv(ngD%&K#m+l=p!pqsnKsIvI`~py*LMu*hCZkGBsc486JRsm`xv9y^AD$2>N!S zwq&T|lD-en7k(4&Mb_|=C4C>Dj}f1F&$K~bvpq$OgHt{N5W5cx--i<);*xV0eztLR zQrFSfHZYcyQ#3TQ#KQKmJo^5JAOHT3e`@LIvaxeqxNt#EPVUyNTNf{01hJnknG?DA zg?_$yS6SEOE*szNM_f1ASsnqfLZis3~etq>kvydRDZqM9! z$Sx*-hg;|h8xMzsoS3}EJyzc94>%rj30`OBxW>fx)17;NIr9UTgxCW8j`=74>f!>ypk%2y3y?%q6mrqbc0=Q3BQH_a}2h94oxJ7@yaP!)wyDD;; zyzD~W?oU3yo|nOWr~C(Uz~i0h?^ub*sQ?!wW7x&U7_lFF92`bdk7n5#u0Q#X9!9c$Q<|_56BS0TnY5NZf=xce& zLWO>Rhnk-l)DQW15EZ`rLSLpP_=h0%E-mQ8%=*av`NMA&wT0qCK|DlxNYM*A_z>#g z70@N<5HH8yGO^kLHHp>mYZ;kSKLSX)Mxo1zWL@GX=&+u_wIf9kADaW2(Yt0`ti)UGvEEd&nNJRotsZkl$&3KnS=Mr9p<0! z+31 zocvrOlH#`?+~XG&kx^8-dgs2dq#PT!0H267mw@=iD|dc4d+F947Doq92~jyepMcNJ zef!68p(*TxLW;58IowaKw_o|GpO~Nb0nwKaZxem(&>_W_4?l%xpc+LTdP?xisWa4< z)2u_R2Kmpv!A(I@hDrSrfwNTiLq9OeOU-va82!NF4{Z97dKXFhi1C?`dY2~jQJM8& z914YC@rSGqk)#ix4=$&TehDhLf|wreV+8d>6A7RXG9O)uZBMAa9ZS7$kxd_{cQGf8 zmn^L@+?43IV@da^@ti5p4;(pYNcwi65BYNJsCPd|`hI)pgK@@x;ArsiLp(!KPH~7= zqbEagJ9;j`>!ABG($hTx6f!=9Ajn=#MN3m$Rz_G_O3TRbE-R~ohPt?-;`RIYm{?dq zxOV^keUS7qKYaM`{(TK))wADz|MO25?%%n0>EhKJH}A4@@&D;BU!1=J@n2ZLtdCz= z?4OsvI?wzQpAz>Y38wF_f2*Xgc>UhZKm7U6qEgEL_2;ku_}A~b1f-QTjfA9CVZApV zX>D;eGXX_CJ_T(qd38l|TNxwsA0IMb=jORDEO?oXnL|?a64UJ;Z(TWm_bQ)+5Hrss zW^N7*V*`CFi|;O70-s{AF%(l&6_A#P$b&y!zH#ot6)j!EyZ4w}+}xiAKHs(P+a%5H z*|!%qw--KJ9G89g?y%fPh_FL6#DqL!JH!aUhmBYp|IU5(41O1ST0WpMoWfhct9|wi z+~Q#Li_fx1%(nh0`W*m$L|+ahu)`&NG@%c~e*k^B@DVOS&+i7c#WHhngPr z3;TAK;2@jzflDl?O)*6+0s7kG1S!yON3}|KJZId!cfZIkNa}Y&p%1+m^mE2jVj=$G zD1P$z;h{3n8eX56#|sb0;5}hvPVopFz>)cOS4owCDf$#IMoh_Z^QiTrf?%=sJVZa%!l%E|HFnezeya{vDCU;Nj9eI+5Sb@c|@%?EsZ zGJ4-#=d|z)v-F9O(zjEydu-wpq-^iTt*R|_eJg+HySx_x&cnC-~ICeW^cqcp>#Eyo8=Qs4|}7mmH8e zxH9oV$p3O1bmP;}Z$C-jVW5xT%aN=JY)F*!AwLtE=*I}^cZ9idH0XmMeKeu3BT<|t z`t1|c??Yr4)EXu!3!Y0ZmsVS#opu!`@#VN?n&c$*0%8eh-UA=Pg;kRF36BJaIQ!u)Cg;_$u@HU4W zzlxQKXN07otCrI>_yPr(t8H? z{T}8v;Thq>21oek4bR|J@Dl0_J$0zB`ot1qZ}ATNLK)~PP4uIP?1H3zD6$KMtsi*r z;_6-G%K@rkBJ_c~2+^jGO43JwJ_yx^L7y&B(noeKw#W6wxWbna+2sgR;^@!^QCp}a zeE@x(DY7)s?{f$B+X>ZIVhfHOxC1XhA`$w?W`@T!R3G&R0lhm^4k`VIP?MrH{188d zH;bPlmY{o4RK^P#nbSW4U_iF()UnHe+Z&{9ULgT4LB0#uE}y;lqlmN^pQymChj)xD zO~8xxyC1)2VtWYm2PS^%>go!z@`AiVUw!d4aNoJJ=WpJ)!@(n3HD`Zu6DJ-GV@)?d2@`8cV@o+R8$orQv-g<4xpm{71phY=F5eX9 z{GRFNWu8YIin2EZc+Nh&dtX@K%S-34Fx|Prbp0Ot9VYHOqOv?*{?5-s1Lv2QXs^?@ z2sjM%cZTihURsjt?J{7II z0-`^_s=@pMXIO53%Y5y7)>}VwF@5*o)@@<_J3@R)7REO@*)H6>#v{SQ#{Ymz_`!{P z-%HA}M#VmP5gxR-y29YTQ$MfwJ|M-1km7J}-Q#lfD|ZrZ_W}KOBf9`t5z&tkW=jH zeKuBZK3*X~Wi=HpE-nr>cIJDJ*jf0${Nnt-{o5DkFEeQv*orCXn7R5&Yg_0$_^6n> z@GI%-I{WFnKGAaa;Z-xR2?)I>Dt(!Qk3&ZB-@p9sp@0|!2V@ozzA3=LBrEXe%V&60 zWUg{QdMGA%`4N+_k{tL8-(kDO!gc4?{j*|{5AWamN>Tn{X-RZ=RM67;8kzgHN#Mmn z+~04L-V+3TAn98r?EA^}_A6(|`;O7igZf)bU2=@NOYX|A|G|bk0{R^)o-;x}YUrag zJ~IY=w4$~EGa{Qlkntht!_~*Q)Gs#El&tV&pdVc`7ibRZ9SZs=qqcUhp*6*pS(oI$ZmE$IX3+lksjUWttnpP8I_?|IV3<7r!}wgF{dbLNQ;scJuFFeJLm+BrGTZ zs$pJEepp81^3V5wI0Iq&L?1s7m(w$06_JwGHWF3UQP8*Glvd)ER})s#RWh}KlwVon z280GwR{QDB{Xc#At*xhzpp1fqnyQ?suBNlunTOX!bd;`eJbWm~d+ye?pYL4b6ygw< z=4WEL$n@X`V|^ig4R$YQxskV}FQbE3Ha8gD$C&$!5uh~!Wc1q!>WBH&k{8BBQa^~d zOu(@{Qa=hwA9BDT$7d!$8O`|2`$ugdO8TIE94(1bKZJf@IY?9LhrpSh;4V;;)?l2T zvZF#DtgE{lwS^3QXps$Ey$iSp(D$amlmh(-IJS#^D6-1|LH$0qlm~9pMz$w=uLfzvbN8BcQX2oSjs^4NwIUAp+wm8%!kG?YZe1r3a~xcDD2v){jb`yvZJ z%m1GFf`#wV7vKK#>a82HN{X;b1}xtpC!-`LB6a)DgTMam@9f+>B2tpKneP9`U;e@? zrXZ(o0_$&_zkKbBufJ4MQ&duvH8nO?QdCt{(LI0R=0Cpq=|BGbrJSyTys^nYFJ1i4 zFaG)0@6Sl6Xx!!I{o~i){^vixy3fn6WoiBY{`$9v{DR;m^23#DvTB;%0fFp1{H6|e zGWu##MruDX-TeO6#jh@%lT=q!&{C09khFC)d-}x5!&xsp&^j;KD>ce0HPW=FF)=14 zcy()Yhx;%AA7NjDATGP|KBA-#%kLkjk09^c1{=UN5~Ns$A@4)8>9WmHh}uH!z)O_$QAiaj&<}-&*$@5b;l9%y z)DPY){0KiP>4OST6RCH1m9P|1TgWS`C5VDGA1HQl=<6@Gra-^;cwq|k+llP56F+%J z;ky$dhN$q}UCM(P*#)=t>p5Ui4t)7t@}e9#^!@fhtLaqY@iw{M^0<9o;_zndmb*V*_)bhl@CNhc+Z@+fg&v-}{w=RKdvLg~gM$$}>vexGtEfPiD1YmU z^k@06T#Dme8ngYzx^m-ULe{po$lSM!c(~^VF+-raok%VFoJEv}(ydL5_#oZd+%Mkp zzUAA8+m7K(VszXI;6Ab+ z@5Ux+bBnaOy}h-yvb{Nf^U^U`B$c=x3S9W^G6yp+ zAD1XEkEoES)F1x)&;R=G|1G7Us-mTDU~Xk*>j0slzxnaU%XjX7clq|2s}KMD)sO%7 zKmR;)YXy`jIJ~K_|8>n)pjefM^InxU2x8vSRL_g}Fe$>zhb!dg^`!{&x z-!@d=!EfZaojoZZrQ|69tv@fHKJ@(lAR4wJxr`6SUokx!kqODW!POzmAswxwbX<;xUe;KMdZ0fRrqgm zT>tUf*`Lq+$a?hwFEfw2yc+AnM`wQck%wQHm6PlIwW}P0eEbrk;4I7o;r_$~rRAl- z@#D)gKT9j>{J;PB>tFx&ou!S7roM@`si~5I4yUZ(CH8BV*)NHzaX$~Yv$c~^mc1<_ zd|prGu8W00T#!NH3;m=Z!;DbVSKeyTZptO$HW^QiqMcNOOl9L;^-{ep65LJ7VuBN+ z!ZsP)ce1DKiSGSL`N|T}4+L{K`r+=qL|Z=qK-{JeIq>ekD95hfNTM2MJV-lK9|nC{ z#hysL3%CdI0VzU5Bjqyg<3W`A5#4)#=TblVp%1G`5w(R@s6J{*A3)zwjTbfgQAc*c z+&rj)`oVp%Tkl48LFfk_8coQ@V{bfXDSJ2fqF zS9cR>Y2N#HZWwCm{`AfFm(HH^clXp(RMdq9K{Vu5v}JfinI5oTl#peP2(yikunG21 z@v{^Scb0$Uu9ET0F#fS>oSSl%zkY^~c3yyCl8Z{5lS;CiR;s6AVUR<%zg?P-Ra15h zgZobTe5U<)_=gaE;m{#e#WQ#wRY0wvvv?iq3`I5SM(|6hYoe0loI>Y!q<*^#_)-M* z!_kid`amfRCVQaX{YZS~WG$#kGgKcn^ieMb2k1xEFH;2dBY2X02k=kdFry`hlXE2z|(bcUQgpUjUEL&IywA5kC%i9?!swMtMllODCS9C?TGr zna2z946y|$M2C#@_c8()_icZW_aW}voDcK0j`lOjcww0xWct!oDcn&$;jwOxziGOo zQn)tnb5+hHYxz`XwMa|pP)nI0OPNqdJJt=68ZD zmmb|d^XT4L0nTd%IwFrf3^cU_n3&I8x%L-L4IXjvTNi)&gNh=vvz@$}467*H%{ynl z(h(DoX1QlBFKMnMWvioXXRK;xt|le=@ZwK@ym9e=j8!?F+Q@|1%O<$1rMRfa*~rIR z%LHn1KiA|+u#ru3QZ9L7SoYksD%iR`!Mi8@d1rc1X}DWasM~l;DTDidFB6;cIf)-U zJdbCfHp)Yat|XqKC?TGrna2z946y|$M2E*eg|6;JKMk7b2LK4(yL5%>qc3U;g`^Ll zuc{%M0{wDIydkI`5&b?(WS0~4b`G9D^l%^4Ay>mf_0bcxr8i3(TsSD8Z?rLh0{tl5 zdm-)%U6EaOrGERxbEbwqs7bcz+l9Wme>pYWhkrUKGUyP^Qi@Z=j|@fr;F|c^gJ%@u z>?s<7Z4%h@;d)-geH#leyeyyDYsPr$6@=L41zM(f>&JWOC%J0px~LR5$rm^&R{QE^ zILO7Ai4^(i6+JV`^wml6(TQ|cd~7J_pvf8Ns2Js?ZK=Yl!gIk!<&l#XkG&SRv%bJH zXQdEN4O?AKOHEdNg5*ujojyU8$)dj?mINa0@8m5GJK z{J}Nxvxn;cZ&ew3`vLv-Ms~qHd}%-*_;L_DD|TAgjoJdzK;$Tb3;U>}w&3br1bx*_ zF%;;RSN7zWKtFii-)g8o?|sQYcaXe~%zU6@#i0+2+Oq3efraX$h}r_s2SC?XXik*$ z0rZWv1W};h(cF8<9o{#dGi~U@yhKhU^ufC(eh2XUCuZnu7EN;Mdwt#+$Y|{tj{xGn zZLsfK1N*)$($>a0X=5QJ%rDx?c(r=JnAIH81UJVjSz^U6Q;tqn+df4f!Li#Nr&~6I~Uf?4$xs z`GU;&!)-+p+@xbmX4V;qE%UBt7!<+C5lmORtSd93?PL$L6%NrIVDqPc3ciP9?z z^yQCpseOK4xq08WUfJFzow|@ofC%x`uz`;1+oP6Eno7h949aOkUTjw7O9adj|& z;Staey_y3QzUXD0i1%`EClBU6I-w7D;KiZuZK*x3-bK(i-WIY4{VH5wZH+zXM|SU} zFS5(O>>JNHiisQx`Wkh7=DL7?fyX&Pl0Nj}&{QPmsY~E2bs;`Q(J7i0@It%}@kV&F za2C&_3XJskF#^DSTN_(M?%N=(FGl(~=Y&1($&DJTNE|GP87WG5Uth4@TC`9QGMeDg z^}@2jProC?ayZFzEY*87&1bD9W+?N?V20nj48P&L=bZ`e>29jo9_sn-s%chY@kW9P zCITrIB5_8%FLgOGZABA}xU+3VQcSq>Y=r6_D^$2j6x#`9ne(SuN~G8*#2Jbu8cP+q z=w{h#=ewIG*y^M`ws_@iU?ay3&Lpvp`ZZym1&=K%{cIbbI2Jn?=G*8d8z>~|%Vb(8 zCmBj-S}MThu_jV+<}$&$LeF)CpJ?!hn8-Ayh9xt&@AomSsh$%55W*S!TZle;cnL9s z=PBy!*AA+N&Qe@L(G;--ICcCt=rAs@qltdt>;dw-9fyh|MQx#Q;4P{O1nwh3Uwv!h z!RUuab^&9eYByk!ey|^0~EVB^i6a`5Ycb2+H>HO&<}d`?;j$& z5N!Rx*@FmuCp~J*FZ3Pwg_=G7pD9KU=^g>F?xW;B()tEzZOL3!D&E&_q#~8{rk3=s zku=s#8tU3=Dk0UUF6O^@_sT8bQ90FIGS^-)*HO76%xX75nf}gceh#T#cC}IdrB7YzUU)Y= z_sVy*%yKl2H&KZ7X4EFf!+=t>b zV@uoZ*+E}^sGaUN#;AD25uo#PNDQM$&zwx-7U;u$IS}-L11~6cLB7dl;#MW zxWWVEeTRZR6rUN?yO^X8L0_FO5&9;(UhYA^I^QFsA9QTDZ~sM&epJv08s7g4^-r9n z59Sj3Zu}Bok6)tA6F2!89X@abFzy3B+1T2`^}LAtv?T=Gv}J=#Rimslik>!Qa-McyVA{#IpAEOOlRQf*a> zJ&j8}j7!}N%RCHgyiBV+4RS0LUTN^9>x-4yD|h%B!d~mBQfMZgZz7s!DOu{RlV~lI zYO9#A*A(H;M;=acjYT4ZG9agQ(~w{d=|X_cp+YL*bF@B ze(3kP|I>L zF7~l5^s=gY=F}eP(;Dg15&fhg)UEQFeMNv>-3yoYXrI31z=6z&!K{}fxpCtKiBpBi z(}f9xDPeWboHA@Rlg*SeELHMs)pM;?GtCuKjAW9HBtbcw?yQ#Op}g)^ zYu6m{v?VTNvZi>nwrsGr{9SeFyNZ&*isGTtqJfh9v4+aQ`jUo>n2hJ{$=w4KD-1n6#Yj{A*v--qd&hN`avYV{TAiG^umV^)kh6|O&w{}==Vzm^*i0% zw?kD&4b?YHCFuj`o9>OHMnCGvE+9Ajl%ReL=%fF4%Baa0fdfZiU+y!I6Sh$ja#iGa zmF0Gq=JJ*oe5x$ruObs^s+nMCSQ_A7AO55w@NwBQ_u3cUl|hdy0zGR&y&J-PVQ-3j z(w*>PEI)3xDto-PXuP3pqM>xOy5L=LMrT?~S*UM@mu~tD^l{lLFsnMRvwLtqF8#4fm>l?p)z(lWwcskrWXh z8nm*q!r;CGXT|UEBsDhyB>^J+Rzm^(!8atrJ5*0l=PCM+3Q@C%YK>T#Ci>BYKD5a1 z4)l>j^}$MS;J}MV{liz_rHJSMku3^VgG!Fj0)RR8O|m$#OEwb+^y= zbu9|?ZjK3SjtR|w;-2beo91qp;%1fNVv+4-4>Xtm#HrBVr8>;FCpqj*Ui@rF-DFqu zNON^padurwY)xWhQ_9P>v{zjjuNvZBlt=iLh5OdL3TR9Su8#|>jd{`->(i4G&=~1a z8|2y_7dVm@J(-`r*_e+n0m9C>X;ZxV^y{XW6R1Nux{%7dZaJ;JY*aS3AtXpI0B_dy(&wZ)v5&ysv?qir?gY}K>f49lO| zw?;ex(OY{$R7Xn8Kwf5lPD)K=5HMhIkWaz0$AtmzC4rBN13e0#xmASvv?qnV%ZcqT zNL+u{NtzgdeW9y)pgeD&G-si)e7m=KpfKfaeo|jn;P1a7*ZDClIm<0W1-!V9v2r9%#iodng)!rV?F}F zae! zD!K2IppVj*BXqJe5|{J=^v(7q;pjKn6;1Z>*hRlj@bREt%Hu<*K88&n^>30J*6BQ!|Eq) zT`^&BIoz%@Gp;=)`dvZVcuDrV{M6~D%8~lgww#2D*r3{kklMJQvM}$`7oMr^rkRhe zv%PIAUU+5uIwZSVMp@~#W+p|y2xRzm9Ab9-zN!Kffp-M>NWca{F$7Ie`0H=z?!?iD zKG4H`s2bjL^dL}(H-*p-KRj}Vh<=9+)wdt?QJeLFj1NIyTX*&^hko!Zupy}*WR5&0 z$Ld0|unhC-`0UUJa5vo(3o3AJDHS_OqiOgy%z2KP)|&q56*1#9(xWF#<@P zw8MSdq#f>CUwCS#A84%}ZmF1HuU6!1)*9i_8ynCW6WEg+-I@^fCM#)_OneKCC2Jkk zi%q5T4Ml66m0P{Fu&;MjP1a;qNBhOv>qZ)@WjdHu_&Qa1I}|yY=UE%(TI%LnXw|w| z)IGLp@Ug0NH_5frOf^$XGF3=4SIlVL^KIsLKCD;wPia}9rOnGj=@Bv9xZ?&k2ofQ5yHqv(05Tz$9KNw72gc~8ZU2%LQu7Z+z|XD25o$H&Jf zCMKq)renZmg}XEG;e0&(A^6r>9|GUtNVlQ0@}z zgZ3IY5Z~d{2P`DkJ1`G?M0W3mrEir{29XeY@+lVcfU5N?Kot zdFqtpXO-lx8)vVa>84#9WZ(75w=*u_OZkOmJ1O7nH=?8oaX92{+S-wlQdm4;in{n`^1; z%uQPC>j-=94}VV)_aShjND;?TrQ4(ps{OzSeb}(l*yw&OjEcYZ2*BF{(@y{{;69+g z>FH@eKa|2DkRZOnA)KPQ!L?8hjlhMFM~8EBb2KX-Pze7xfwOQ&n5{VO;ThUP19JQ2 zmF2nl#p#))>6w+;xwZL)&G$=NE2~&ANwNkQC=vvj@DCO+@LSv7THaV++1vmOghNQ- z6b^&*kRSp5Fe^Erzh46STFKDY-UHnCYoH%I2<_oLX{AWsx5G_Gg1-Ml-gZOvVd`BX z^r5rFlqmH>U>ej5tj16(GM~wF;w44n>dXA{ys(kKKq;43T;3(JKVQ6pB3d- zllZJY&O869agu{_nzKgfQ_F@h*Y;Q5P2nE--sa$Yo8n?v`NF;arC(Xd;|y=B!spHf z&z$024E*(_JyrNz6}Y@)*u$haV#L{_McH17vc-zCC(7`oC<>;ji6p29CTWYOn#iZy zs%N<9W`$ zEReC?jDYEv`Q`t|#GTWw2kknQpMDM!KKV+tRe&;^dh( zO#wb0p!zxr_Z>)i)KQvgFdtU*`P1{ZPr#mhwQ)!hk+n@0n4?7=fdV0DSBBa35yhHy``dA<^6Xm4jM{k!YyCP>iWm zths!&iA=1iY`leRl#$ePO`&I+B2i|_5Q`^^-;jT5Y-Yp4FT0&i$ zpW9V=n-(}}r&}r|naCy>Nyi#WC7Q~?o@}m=Zmp7SuaWDh1tFtTY}MoKbt*$W2lEnU z$}*>lvmm(iYF#<0t!cBdb~HZ&JdWd>%@RFr>XSnn(!%H7G%&dDC{yJ0UjzRbK%@?; zRS?estO3Cx`a>v(gC4~pUXC(wAzTH>1}Wr0M~q6K&BJbRAwVBAixj?K@pl0CVW%(; zE$p|vy}Gus_4(M-ravA_|d1iKP@%{SJ^4iJ@)Fi?kGzw6OnkJT0FV6=)*q>5mij%1>t zT)K@$fu~7zpkr&aPj5=#yUdWTsK@Ogu60jsirox>3SrT;C~dJ&P2q5D(MVnK7$X@F z^QGCSW!PyznrNjOYps#tVFv2mwwR!f*szZHh=Hu+naaYs>f(X?^sAf1Nz>nm#@?*sIEKQ#?%Ur+%r z!M?Z%Mt{&W28n1ROA?`R3f3bYQs0qS@+s(t(151A51j(_E*brD+In(O33z${^g%d3 zI7Ewh)U{xs0o(^m`r<5k1nz?eAwJj1&)0prybp~zN^y4%bco6O-lmcFR8#`cH}g6H zh4VutNY#t-pR#`2$$uA&Ct!@gaTx*lwu5$Od5g5NMOp{$gJZJ1&s3V%MUmHEjUS-z zxh(5bai(XIk3tl9LsSJk#F?A~@Axb8VR8NJ^`cBwo@+@y)0B9sChDsq=%d8@M49iY zDxbd!kG~>!pfZ1;l3=ikaFm`*vZZ>qqkgutVV09YytyjuiI(c=_PPZCZvGA}As!tO zkDG&C>Ymw^d7I@p=_Fe!1L#HRNrY*O0{X#nYvA|+dR{mMs$NhK1NTLlC`X#9Cpj4B zc{}9!xMX-bs=XrMu^S%8g~GBA9a35L zA+^|{7Td)t@3S43_s-}Ctq}lp!r2PkzCmnEE_LS)~EjQdatfTi0X_=P%J-`Kbo))(3R$#XB09?! zLyDtOgt1DbiE6N}%ri|fQ2vJMNk$k+gDx0S2>TpstDWm-TmR~5Z_dkiMe%P7<6h@R z7X`XNVVau>kYk3ue!erT;cH&*VOjmuw$#@$-@`b|SufLGJHt*Z%Rwj8Nf$DZ7PuJ| zdz)AKSy%eo)&|(uz>;syrb%{&$&MxvH9E(~CEeR8+uyS!{8?7O(j z`j))#%JQ-AE6MbAb;SL78Qgb-Idgh10qOzy8VLK)Bf>uqKvxTjTI8ewtaq@67r`J* zF1QdHfekWXng^c3Agw#>upt2-@ha#ZY{U{gPyQY6{)2@qZNwaS!FXe1b7g)3pl@*! zQ}qJ(p*(nfKnA=%NULi*E*~Ht+}t9%{X(0>X7PI+kU1LqAtC@?LqS~7AwoZt2dyp{ z{jfMLs03fQ0}cWDAb>L}hZF^HMu!^L*&|l@}Tg=JbAG=F3G55@4_9Ss1T(L=sV%Fh|&F1G6Lie zJDK~ow<);qskOeZu56&TShAH$v71qahiQ$MO{2dvwr1{A`{r=3?)bpoq|o-*U|6uN zEXXs%(>mV4@TH}CjFozVy=JnbR*I8$inDH_t7&0~*PEi`)xHMOOdo0b&FWC=-0Rvm zWofP1uWDXBD-HB0@pCHovaj&4E%mT2^|LGVwa)jp%=5B%=T&?3^ZF3K^5>pK0D6Jm0D2X#LK@Rz3ZnvHZIJ4?@P?$w%7|w* z5&rpp&Tk6Ry&de}?>NJ+h9^ z6f^ysoLrrnTA!OEEiI9d&KK0YThQ$t5g?cgq8qWjfzS^fB3nO{--+MXhuQR@62d~gSmaj>Plw=}aOE50K!sv|n2B{ZNu(7Q6wy)4+RBE+LQ+^Zq_Nk>B9>$I@9SyAt@ zU-o50^d`M%j|pgdMo9^h1s0Okd_wuNyY=y@T9AYPkm?<)(EQ^UPueXP?0 z>|qagH1IW4_AyY3vez#S^?F;FIM-Z4dfQ4G?_2L{9j+-FsVnL!N^4Ai*^nC9kQ`Q< z7~Gf~(v}|8nie}yQMlCCL7E!cnjd{XGdMHRKRMnvGSK<1x2dnO;!Raie@Sj%PFhz| zY}2dIx>teqaX~G~VVxN-U+2aR6ef?9rjM0p!ah-+Ia-o7ke}F}71Njb>TP!HU~Xbx zTKs5!)<{uqUtUIUVb3d9}gGDpSqU*VTKlf z2O)(Gt^&#fYTcFhVR%k!xxBeVRU?HY+`kCdTV-SduEn2JGV7Ew=q2f zvcKi2srOS;J5oL>07Sw^bUV~f^3AckQ*4JtKg0|9<^Bl$&>^^a;8uGe-9zYy966u@ zvgyMmeNaMNpBJ?NDLv|41bvgEBXcv;TWhO`e783@=zm^{$3Mo0hekhqB=HPQTR&ve zhw4y3A2@QL@;3#huX7E0GBvx?lsl88+vA1XVt89#vNcECZ3?^57<#GU#kq!{Z|Vd8 zUibWe>Yn{OL(+GQClaG;Cw~OU+8jv0vJYH4Fzy3OAJRs9YgKJoYFdncV#MQ6KikAe zUm(FyUxy$EgBSMt74bonZROh|J*z|Ab8p&7?O+9~pVu-`g=W*gw_V)n8RH+uHKBw6G^X zt+z1kby0eMY1U9x{!~Nhd~4NGXWevT*;rNnyW)(#g4BURZ2b*bvu&g#=WTB0yWH&8 zd6};Za|UY4rn*~JNBTFXhDSP@mIhywCWn`L+ou|;doojN!b9H{7bQkU_V@QQxbNgo z++XJj5Z!<@5Cnf9^+T%O1Go>_0|Fr;V?ekB)WjhB0~Zl|Bf1HrYV@bjAd)2Fj}LuY zhDABZ+y^PXBlN>a4R)~IBL{au?!BuMQ^0+snOQ(T*w?|GD|E2U(h7J%h5bqCU4o1J&43qdQi^Oc}?*qt@w~)mKi>I6qaVOp zU!nQiQhQwLH`??Z6u5hWyY$9UsCNMmLDGkN??MX<==ssVQT z;g4-AGGgWjy5EoXFOCn)480kC)6vsh-%?ZB*--wbt@ce@O@Cw6baV4kNB44X-~8*o ziN3yx;h~Ai@rh}WJj^YwE)R_kkBtmZ3=E9Dehq(pR)&Wb`nq9Njrrd8*`AiUu9n%Z zCP-m@wdvM+klc+_mkn2!jMr97HdId3RRUCwR95sA7Ioz0bQIKg#9Uw#miR3HjO#mL@a)3}=j0o@r=!ZmpC?%pF7MKtFePcgy z%+q6Kbz^P;FNQj4QAxir8bL4>gMkZ@TBx!^vs)g-3avgvh1uG!Y^na9@%&u;2Pt4BEfa(0g`}vu<<@v?+g~he0iFNq9Gd{XJI6pI1{8M1iw7Y?U0J8N1^1?ZeA_HIu zB^cW6zd;4WkH}h(PGR4UFu=+R8U{*)Sq$_CAhz4Po&O^-AC7)tyt{*ba31Il=x=3p zYkrF@Ot5XY0!?5=ccD8iYw{*8PHPwuC)lGEP47F62r^S|}CG<4bw$|2G zmz6ivG&VN1_4f}C3{Q0S^!L0Ocsn@O-}`R7>)mAQo2kyXvwfqJVAa?2Zus5k)YQV* zM47GNQ zw02B(bkB6ZhIFK{^-Xod>$=vS+SZn`nyReAs_gvMlJf4V+OEo)n1I0Mg5uSo@#TTh zq5Afs*wn;l;f;kAMY;L#=aRvFpL-&m*7kNOXUC8YFc78>$mu9>4?hI)9&j8&GqOMr z3j+fi?hA|#5&A*l{&YzD4EnPG=b!~>pD6glUjZ)lLl%D+1LEQT;5i^h=jtly{Ss+@ z7U#Y#GV}rWkrw7QW~Tvv7DtC+M_9DBFbnbiaPJft6HLNLAY%O16dC9(h}CGJp8*lQeWKAk6P-7t9MawW`I6`L=X`Y;`Hr6ALx-mqzH6L0ev8R#G|$#5$EdUIQCCX zvbYnaFbHdN(?@$=ipM|3hh+3a>$efmZ;!}tFZyBH-V$4y==Z^LZ9>7xKE{1DHex3=FQUQSO2n!>9Q^LXI_nPWV87+pK*BLIH}us;sq zwE+KN&`0Jz2MCk$tC}my8|&)2I=hFuddFe!?VIZFpB#BTHrhQj(LcU0IzKZ!JJL5c_I6@+ zVsUk8dtr8UXmDy}8RQPj?-w^mhG)RI=KaFz^1{l}{PNQ5`?-nPso{x{{-NRCcVn*y z#(UpQydIc-Gc?mTJkj%Ru(_+drlqyEqphL4xw^Hcu(~>@q%yN0_f=Aye^7R0%y4tZ z_W1nU`i|tq56=dj|hG6;GoBVbbD$NB%YfS-`L%f`x z3|x*^Bj)kK12Xun85zb1eC`q0;XYWiX@#`Iec;*w3ql#{YUHN8A}vpmNN{Ei^gSgh zsV)ZkK1Lb_BAnI=VnOzniGcyhp<(GU@xW7^O>bJ8`YS6ss;hgux~DsOrfVAq>Kotn z_Kx@Wjg1UUPmIiu56%qtPmK0YObyMh&TTABuP)DRfFb(m;0&bmbL-$wH$A&DGq*ZF zw}$OAplo_SJvKi%GCT2Za;$$G_;K>>#B~3}SkLf4%bU*H&X&f$rsn>phMtzX&aV2- zs_f#YHm>p<0#Tk%yNhdQUk}&iR^%t<7H5_fWmk2!_Lr4bf}n!IeV=yZZO-k0 z9%Qy>ck|N|kSEPe!w#A4>4}xe@%iZ~a8CyGBO)-uz=K~s+?s6YN0-#^VDuxZcafwI zK_4>fL+V{>=%X;}gZ_}fh>x&uO^t6)jzNkQ!h=tPzw^|B6^)5B^{Z@q4yAxKECykGj+S+G3duBWPrr(Ur4U8=g49yO_ zof;XKnHrp%9-NyWT3DG_B`uIfjD`arrDVxW?{Nn)Q05`#gV22*=1BEa8iUSOy z3{uOYJW8Q8>I_~;eF~L8H&6yo58ysnj|Z=YGC22v1s^H_-7d)cP#&}O8y{O69f5s) zY!u1DR_Epxrf24-rdJo=V@875M}kCL-vhk?WL@~dB$8YT&3+X9aQ9vu{g96b$n|iA zFNJ!S2z@A2A6?J~WQX=0^qazP4^Ve<45vRB3L4J~PrOe!Zv3fH1|FJX1b+GHd9*vw zhkgm7A4NZK=lZ)L(z{VoOXqg)FsWmd^m>leH%sas zA$1RI4UUq=CP`!Cr14SG>?CRU-F94bxtNGyVbSY}Y0~%%X?&41x=0#ZAdSqChGt0b zCQ0wcNN?e)Y0}69X=sczGD;d9BaM!b2HtJ-^sQ92P1W_xH+8>n?V5k{W~rxbIy0uk z)!ffo+bJnL`*qXE>$b_h-ua&1x$1_&zTxH4^2UvA#C?Yg$p?RnX>FhDRWRB)StEb| z5cI8JuLp8HB<2H8ahwO?D~_ao#0+xbfJ;DAj6U=5)YKV#D5y`-UjpcXDnmfd{jb_V zLckmd;)1HJPfTu-chclE$ltM@9P0%tQ0z<7(-{8k?&QzO7W^9$)CZt4fF0)`X!!v2 z!`*w4n+KpD(Y+T(KL9`q^)9soFWB_q>RoC{A0RELaY@8|^1~sVf(ko!e-o1s+Xi9` zKwRrhw5kaf*&A3Fo)R7ldunnHOW}EOM;ge$X_TVJr%3Uadpt6q2mOf9cOs&;ps5b& zFZ~wKjehC7FxqE~0R1BXUnE$XeQ9fJd5r`Sz~J+>Mp|23Uz%Rn@bpS@cFuHg$#wB8 za`DQubIq`_&9JaZwX}=1a(HEFA8l+MrE40lX%wz$9Ia&*C#xN%p!Z76G*#CoN7Fo0 zPCr3TFHylHO~yQ3+&o3hGzoTD^Hh1ubY<&I*ww7F6iicO4B{0`lGUuRLpkFlQSC?> z<5*df7zbX^j*_U z+;c2E^6h=f>>rmncous+t@eCU>E>JN@wCJ*q~d9KxnE>SV0=|fR%2*v{`dle`{OoQ6b(A z#UYe~4J$f}NhrxOO1v`q*9(3K8CcG3?fnw51oEV**`0l2hBP^|2?Rv7uL1Y1tdL;! zVe$fRKtQmf8~nQwj=}8%Ig{Z3Sb{dm==UMA3;5WAr!7Tf7leKkkzEk_eH8i*Sbi67 z4IS9SeL#HpP9{Mj_iap0ZB2sp-)?~G#YOUCl2H$!c5`DBl>eLSYvg@pa~(hr>?n!! zhw>EA2ZzUR`wZv@-n&TB_rZaeB0e)X@Y0CS3=X{i_gC=cpdNF4wo{+_yd~&Hs7+%2 z^WKHg8e;_L9|1D=krp>e%d42K7j(WGV92-eetcomC!oT?v(enS(b%og$g@(%_>{XDo5QaU(LEe#voJ5AXC;jSI)Fh+OR-OCtF-MSIVSF z%)CU%yja+xMAWKG%C=I*zFOL@3No^G)l$|K66PhMCWXRA`9g+yf(E(#`kB&}MbcJ< zvX+IA%2*f4+7!!Lm&n>XMom*I)dt|jwOie&Sjek`ByD0|u(LYBRHTN3j-hTtCyD)sL%=}rR6#g~kPwUN zytclzw2V5rH9NmOJ-0bIvpqSp1ycBlX~-b%gB0zE0fGB4aoEDbHdyA8rC_`0x4V`I z2A$Z3x&iG|pdbA~{pf_g148wIAn#Dz2ha!m&Lbm{A2zBx@=eUB67UaG{bKS>dWet6 zfW((_4Dty54j zI~9?+uSUnNRLibF%_dKkjC-m!MXJ^%$~Gm+R%Np0MN-Cvl12rRhK1q=1=1#Ea#oc> zriFs$1;T)Awq;Tdm6G-qk~U>xmc`;$B@))95>_RG#<`r@sT^7<0tQ*)=7qp?($*zX z7KLJF`C?`TuuE7JNm>@eE@+s|qm#y~p9w4}ZBr>}RSsvR&2v=jid5}NG@YtUyxUB@ zI}ANq%)LAGTrOT8Km|7KP2)a2K7U>evt09>BFM75Ete65VeIWJ~I&C9_RxB zA1>^pQuUH+V$er|)$FFGLG}ln3qcRJ-@k|D%Q4~RuBsPdAXy4XDeNOs9(8_qbdJye z_o5$FP(KvUnL4N+3hqKPRNsyx2Sup9ot4;rjZl5ZXK)!kVT{1>8G#+{+uEYwzOjW( zXU{w{`*L0DYHf!a9hWjq$6_tpN*&ue70Xh2^FnE(JQ?GB1@mGBt5OBaa#{0IS+g<; z!(t)bd_kQ&VckM8gA#FL5a(41n-&B2fyhtPx`L=dG?$T|P;#y%Re? z>i0M(zju(qeaB}Gp3t5UJ$&I2aKRs77tL*CWCYZ~Ad&+-L{@$%#RY<&m_cGhXaw}g zu%Wv^PoSR&?r`!#0}elZ(8J>Nig6zn*KZ9La@(Ap2a(^#^emv?+Snu}@*{KKj^v9h z1;b@wh>1Y(w>&emJU_Sk9#-L5T7%$BJ7Tfj*SpJoa9@Oew1WB_6wjF^^wAlg85Fqq z{=v9!AMV?&2~RzPxDN~-FT-dp_3iLu)}#cZp@Y%3uZwW$!XC<6=>GARN86te)?U#XZ`DX^Z5O|_z9gN${Z zghjQeafOgknUF!Lh)IQnS+$f^os3nzm{}FSelf3ZA*66t*ciAEDwF~h^6TXBY3IpU z)+pIEt2wmjd3LKiG^jh(YPi(s`!v{ub-Kj9c6ixl6I|&LSkybf;J(u|i+_`60gM7@ zf(_jr&(nlHC`XNN6;JzKdi(L&Y_7vcy z3+M-?9^m1>wn2KojL;7g{E_v%)ZB+8Vo(lJKQMG$nw$hrkEOX;AR}x|IB0Fx^A~F$ zdO)VXgVB#>JZI$Q0qL$I$Da7iAS?VJ=_4=7K@8Qm%WLqC2Uq9VqPg`hVA0!RalC4^J;O^I$@IX}^ENGsHZ+t}sU6w;KWY zD1nr3WpitViu;^>N=%$;G^}e>Y^&w%ilr>`B#jHj3@e2VoA?b{`SqH)bs9OeYS=Za zIkjuKbZR-ZYlKW%#jQHTEZapaTP18erR=*U?Ye}_8->j4VHdV&5V358RM4b`*PsGY z5z|`Og^a5K@c`&x7u2uf)2ZgtuH;lNV^b?(S1o}Ik5(nGb`_s)6^D8Wt8&33)gnIa z3IW|JZjDkFrF>59a$fyvPK{DF6%0HD^eTb=kz+vCK!&k0P=QLcaqR<-nKUrAyLB5BlNUH!};*3l9!Yw*}!u zf&0k&%IqvyHDdHf_GQMNZ=a1O`t4KqI27-Le)}xt0n2ghw-Vcq124Y(E_qRo69Ikj z?-JOkUj`~iDV)VKs3v}vc#2pDuK*dm4$4!sKrBS37%5`}KGz7~+z0M>NY4ukbAX%7pnG}nfOSu_e5w(%Ku!_KAK#;V@HtX9LSQOB;+z@ZC# z*C}QDM#QR1(7av5xvqFC_%vv(EXRUBQLuYZM7q&P+6?t0_yEQWAbZqCxupST}MnX9N6s>**NTl^1rNDjI z=!LC?kcEC&1`Fd>wyEFtUTe3<;WRbA%mZFLdFZ$6&>O?M;;s7RPh#VqzOr#!oWYig zbsEXoh8mkuV`FOO>_cW!Vo6dW(z0SH?EE%XQc1g@0qB9nl$0`5D=b_o8zpDhnXO}a ztx|y!Ya2^maQW{Jve2*MQ`{7s#3tIcMSK$5M*;fqYS1$gWZn_alqcjLkuM{kL;RKH z%hayARB7OSX#n3JVZ$vpU{Q)iYSO}dX%2AT^GxZO=?D9bKiO%-sn}5`I!rv#Y0BwN z@#ka5TnQa`C1}9S(7|`YhTKIA8GI{f;EjL*S0hH;jv9Br{kM zd3QVQ+2y2n*As|dU5ez-YCGK9~^&$MWy)#rMYLWCnTI%2s&30005~M7Xca{a23u@?Rw|=!X%~v^4B{T#%NAX>nPpDOmF>d~Hxa zs|iBN?Ces(rhZtxi@{&zhjR2V)A9rg@JwZec^O`k2!)r(BtEKC zrGfXZ0sJ@x;KPSVjQi3G^MLz?O#Hd$=%bxRoo+wwZ2L*4+fDg3c05LMF9i;~7BJv; z(4e~^L+^$SzaKI3_sCHXT8??pddz*`zUcA4BeoiQJACBzpdpw1`d?^0^7p8b52Hpr zjvn!#)sWxA2i^+qb0aA3N_fB9p?$B1^tu+<<6>a<%fY=ahxNV@(eFlJ9B|(SzngDeo>PeL5fa?{+G<=c$lhr-Qm559oRn(XZn{_qKZ-T5ofR-r?5nXP?gd zf_nTC7PmhvZeM8J9`|ENUqLopA`{S$0YHF62K{7Rel*%k&=1r72>rngO7s4J zjv4ghN&{*Z1=2PlzK;a=L3#zy4=XfijmOpXUgBjQSiLK=Ys<$A`p|Oz7bm89rVN2g zaWT;1OJ11rE4al=a)LjiB2*f9j~Y;h`<`Y=2Y>r>pYf-Ug*gCEk{3$p72NPq~{%`y@;9c2)HkD)a}U8H(QUsg%~;VTG-HQ ztw%j-Is8%hkO$#|?uGQb6Ws4saNpaZ{cc4LypJ@n=QZE17k#>1^au2dyAjs+RzR@BU%fh?@a}ZnyVJ4o-sb|l9{1^R$iEYdUa@=JT5orZ+~U}Jt0Z!xBx0RY z>vi7kHU)Rx5!QWMX!p&Q{xhvZ=6beY({cRiVT&L1oPITQ(4mL{Tjs4lkzAm{eebao zsaPr00DZi9N@e&LU7kPzo~f)bFT+a`q3{x!#7AMO4EG895DSBq{4v5ZCB^w!nORt| zE4cgsd>HhT^Y?M@7@!mPqv5z)L;x#5t$g^`(o?1RISl$C=I7)KX9SC(A0O=%Z|W!G z>3h9^S8l65g}4uhkKBBDiLZe5@^M5j;Ac^OX3{IfoMhnH1mM#$$De4Nm$!(#erPq? z4)li<5kAd=gv8ue3B?&%7#V*9_lc07Jnloz#}MS8-wG3j&`$>Rl`Y`?Xt(O)e^7Ww zoUWMQCF$>u3iC(kUGq%->Sc0dE_pE(q0+#6)BwKkLKNJ7<>S2Y_dU&&j+=RO@U)A) zrd(_P?InP|$Z;nkMxG5DezE1)`;lWGwH)`T)%eG4CO&RE=}GM5Cmp6dZ9DN1+t!Ux<5>3cJ<=T!ms zUGVF633PDps{nn7{yi_i+2_&Wgh%@$ULBA5bv_;*cgCmvFK*F4`?lMQ=o-1%Hejty zz$&L!KRQLOaf)2!)_SFPo7H}8SNgYI?iaIE-(jR(&`jSBYdVcSI(W{lc4N=@bl=r# z;I`Roj;s8A@39N1SSitf_><3RWd!oUhTkQY{E`#ADxSlMw?4w3B|?n*-k`DUL$tXI z)`76uYQpS1Y+8psS}6D3vyoP?FiGE_}hZ%n~r|&iB+tFvu_Ba~eRW`y)Fpz;h0eI%6Cgr846y{`-&oMtM zJvSpYCp8J^FDvmSAR&Bzg4gf0zfasQ;66mcfUKFofCBU@N=+}#%3)jJl)+@^?X}9q zxQ~u=`$%vfn(!v{Q?j2ke1Gr&%Iw;5fi2|tn1*-x3lslYiD_Qot;C;u>aA>51ymaN z>l%2C`-CwUn%|dFl=mc4I&uE#!QWl&I`K;DvA>0lJ{mgaSmfCAt;XGmne?#jq(6Z5 z5HXc6X5#Nr_o(-D-}5-$YBdQHFMdJR@hd z?zyq+sKY%boC)uww#kGhD%xk%ogDm6$1Jd<>p{L17^3u)rEQa&+Ik20u{hSqoKCA|*4CsRlaPt*m1|NKUh1h=u2MEJASAL*w zaeiT5R!(|KR&oNMAI75#5-}N2al1I~W0+TnC<*spVMrtRK_42-|A>f?|D$+o&Yynpt(;W_R2ulp8YuVo$>F}y zvyb(jbRJtJhmSZFGWuwE{Hdsk*J7vKYcuKhn8^>?PI<`Uq(S9mm#tgbukHHt1@| zfJ-3*E>jxX|FUnl({S^-v_0YybHJnRA)k&%F}xen{kUh_yj@jYXauaZ$ zjn8uXfTgbCOT61G3vRz6IChzLs4V?$=X%)BKr`=Dj z`yCv=@b<(xd!DAMaNl3`7*@Gp zkH6G(Yg@#DVF7>-i{{bW3S4D^-l+VUB8Y%JHo|Iq(`>mTp` zkRDY{{aZAk6!#6Aeh_Z5*wN=(jXB?X%5TxrFUCx}9W&)#PH=-xp zh#G%AdMpNZueKh2rS+)Gh|!}iw;6o}F?RG-xcuNEj2L%4e9Vo|(N}_oU-ln*&VS%J zzkz4q84MYEK5*c2S=q(=o4h2Rvf- zxVGBn-)>J($NipBTkQi@OZ=C+hOYH#y)LxlI=`63uEEo6JVu#04X||X@8~hu&3A-* zz!;C9iD9veB0I0~h*<0rzAR?I(FyZ!kDj{Y;Y$_n`&&Abim6Bg^x@~J=uTzHztwbz z@tv5)zJ55rjUC}8?DR*Q{b65197V=JpAbt6^0SkZadHJVv!itmgn-I$kN}9VOA3Hq zNpeDQ(kny|QbZ2)2=1i_ppR$)A)?8`Xm1Z}!zZ(|OC>;G3Ue>Q`zA^;Xv=mUL`B$3 zhOJ;j6XqJ3cf#V03+<~mzIu0 zjdK%{u-74T`GG4~(n=5Eg(Cx10%uYb>m2uS`R@+o@>8&%GcEH_?a%!0etjzGR2q1# z0pa5V=qJqY!=SIQj|Ucz*y(qp<8Ox!ITtqgT=>v) zEk|HC=F2hTueAI2TKma2kRrxTyo#K*W3R@JyWTPWPN&KD+J1YxRs2ohL;%K!F;~Jz zUyc-F*wAyqgUea9)VKGsfPN=K2cK=pjsdwE(dT?X*OUI8kHgc4B^*F}lEAf+ zpfx^ixB0i=Nzz5O5--`SGdb8{=wG&7N@WwY}_hMO@r5u7JFcYuQU_OJn{vw$vmXk z+Zg~8$P)w1*(HUUML>pS!@dB6_yAKXe2>|sIR5!J^`4)s2>QvL#D-~o)&Dm=eeYT8 zDt0Ojyl)NQ^MVgiKAXA2zDgz1f&yuFdO_~l2H-EG*NZli8@A9uUwDOA0IU6zjYz%PU#NRtj zy5HsdN8RQ;={n<4?4;Z6r`+v6>yNlOPrFWk5F39Zdh8XP=oUWsOzUCiqK2QxX&e6C z5A}%uz1M^X?FU~DXur>`n2i?R^Nc-bd$rxzam48^qtC|l z-51qyy@%g-?tW8!L%(+qn&KTX-LKV5d%p=TK~wF$CmY+2(KZ_?ah(?)vn#se!N{l$ z!NFsnmY>gCY0!s)?_2dMeku)oOd1d`_F(u4d({cM`{lyPmBePZmB7!Ho+VAoEJ;oS z3S)Eq6dj8p#(iSY$GmdoQ5p182>PU{8B)}kh@GO7^AeM@6Ow>N3ouPIN$?^W0Kboa8D+R5g*a=GXHZq^1#f`)OBNO}r33_GTzb`iaT8Ak&yH3B`?fZK@X8zu1&ZD?l4|+_y(|zjgE)%bH znsB9a{8b#U5jFI*U-!MPF^>_=$SVMeg8WE8lYUu`17qN-okMlUB~kv+CY_1S3~JlE7`nwkF$mp02iI;^*Cwahehflb6h6VFMuepBrOXShZ#@NT=@ zHF}9%!~*B2WwxOU-J{n9wBPFAc6(5}-664iodY(QOQ!mHk9m4uh5O#6m#E6BG{686 zbB&SX8=w!U3X2vH;ZV!TgTD_`+wu}HnJyL352Kt6`n~Dzdneon&?FE2Fyl{r{BDsj zzKlv)y(wvIEvD*?}GcRK_$(KtEx0DuYuJxn~vESYAHuGiYiBGzJ z`=Zyh7jZLQ^qKpj_kw4=7yi+E(c{4@o)237q~GEP820Ts<9h!&_eL&z7QZGTe&v&4 z3vUjYb8Y0pTVt2rAG_r4w<{jc*!XJ6&aClE?sgw{yzP)Zt@~^b?Y1GZ*Ou5pds@cr zYTbWt+kwBt4&L8!*e|hzb_aG|?GQe@?cg1q$NVy2#<@|8ZV#D%z1y_kx=cCKYsQ5E zvoH3aajw(YBVFQ84qJ4$@2nfqBaTH4JJBWna<8ekdrZ914pR|(p9t@E*e80IThKBe z&(V)>sc_%FrVFYB`8YJded9n$0D)|KXMilY)r2u$c-gR&H9si@PB-jihk14a0xFxn zrwsAEng1Fzar7hu{bWENupX+z@xgF7;v_i+LIF$*0IiB39-%p`PN`VGC`KjUELO@~ ze%R}Uz*#Y7{AFR+KWy(T&B`drNMk!u3(ya%I|%my=s|4S*+mKvDvbF8y|RrC)6z<_ zv!y_L0`$W~KZq#Cbd{ms6z?Cul7)UB?^b>PxGGfws5J0_HGmHeetH&^&+mi3k8t19 zbm^4&XUEOCGi2t&9^c>VIQ>ey8CSc^df02;tFGTY>oVx1WAi(m0@_LhVncBjtW^myi)`*SxuocrUWsXtsF zKkvf0dFRH?I@^E3FI|Uj?>u-*$9_Mx>A5jz9aI$+B2xCsYi2XATFb4^VD z4ZSDqA3pn3{L(AmuDCH_<*kWp?tZuV>GU0m@jpHpxaj(*wGW1@y4(5tbDd{g8nNc( zkQFbx&-@)z2)j>z)O*(RUeo`G9d#|d&q=>d`<+_;kW64;1s%3sBOKvH7pC*G0OyF5ZBCAMaLu z{|a5IgivYV18M+Ec=6E$?!$-%&F|y5Z|TOnbJiwKS)Dp=b;_`{PY17gGI&M8pcQEY zmZkPvlH7aItGIsfu^&GaLbN?0X3ozr4ZSf-Po>I0-_st1$3i03@ zdp?V{$t%ZwJ;b07%=6PTiU9gB%1rQ+34`w#!%_sG2>0RJ#(viFnTg8Z2M2&u1bi_a zkNFOZ3lV989&0e*AO>x7a*9*S4lQAu7^bE%oLfH5%Z{%@6rdkQdokCKX#?k+WMr^4 z9vDGpLMsl+(4XSc|70%VzRxZ!sYRgg!jk{dt@{4Sm!PU!rGawe>0t(HyghK}_cyVY*wqHWen*Q$+;Tlaugqr3E5F!bAv-_G4T zZOM^u7aW?o_P2RIU7NP%!uX|Ur>(!S`e^$08`2*x6i+&oHe}P&_H(a#3_57rWsg($ zW1hXv2K2q$YS^7l6CQSnzu$J)#lY_SY{QmYxKHx)8u3&$&in3NMfJr0wgw3Iu{96H z#bsys5&$IFh3S5PV2A)oxp~+EuONl(n#ZFI0DN0JYA~yI7#~<6>FBxu7oNio&lvf#Jx7M-58^w`unKMx(dtVh48 zU3$hx$Bc+=Kc-Wc_}+cLA3k#NfI)Ktg5or_J+!pkwROFkHnsn}s?H~$YSgN2TDQJs z^_oVXexXyNj(JlxCmka{TZgFds3D`{SN^c>#Mb?HR&Tw$c;kh|n=UW->DuCLceb2N zKk`7jQ^X@I~;MQtVkh@sJZw*MUfPF_;N>zMcohhQKQ02JfC zvgIGC>C8t4xRm(%09*{70yM#!M$iu_Lws1S3#Z$gxJita2$kY9KBdHdhkp7D@uhvkhzV z^O2IDRGEH=llZQvd>QoPTlFcawiHccKN-sBU4jF0P_>w?G8#Nl9s!RlDmr00wCTgfEnk52Z=Wb%ETp?5IMw|mj}Tgr(5(m zQnZ4CxbR=3#SEz;FeFitQl&^`Y9YZW<>h%9dYtmbB`ZmDKJSI#LcSMn@0AHYYuJVh zzu*ObUr9dpamgtzNXnJYUVeW1vIkREJej!WkN6GuCvLnqVeP}QtM86ob7jK1%OjTk z8u#74E@QWL8?(9Rs7*bGuIn-2he5+v4jsO9@UVID@k2+8Z~@o-?(qP zbsinnvah>Kl(j{Gsgakanw`G3vqlSvmYSW3p{J#ppRs|5wuXaxb6ebP`i({Hnp(AM zY1jQ)r%?kVD|7#dh`1RuH}3i6=AOg%7p^=uW69y!%TLZ)aeBu3%d5|3ue~8%eMLHX zS6atuSABXPa%i(h68W=B)B*3dhXOku4(hPaugy;`p-XJNr`vmscCc=jpQ6Hj@3j-D znEm%_fRKoMJNbu}ZZXIK)0dxDfNhgAQnCF>K}r(#Kt_b`k5xcuT`71I!aLdC`2dKc;6$`bPff8M4ILZ-%4SBsZ^-E_Q8;GgY|nU(oebB7965;J`|T zz{eK8CA5Sr6h6K9?y|+Og$1Q~*@ao@fPT3tiFv8OJ1M1D2`k?7PPEYroMMEM%0ORw z27G6LNEjOho&r!}aE~H8agEg`BZ>SahkhVPyh>^ug=L;4=B!efVzie&a?kf*eomhtQ zJF@?iHBL-SOh`yTnj{1e$w~ss0}#QIi)|xoRE0staG^Xn09yeLq^GBYXKHy+Qf)Hi zLJ^cifmg3yK|(xULA_;GxcomZow9n-C<-JDs)ItPBGgs+PytLN`N5w8wU`4U=mB^W zeV>aeCeTs>P>>3;p%!8SZ6N36%a_XPRi@7h^1+H^BLad!NXW*u4FZAvnHJ*bN;(Qt z?GTCHCJ5wE6;K^%5<((WUXxUkILoJ~l=$Noy(|#u63~*24$Hd$`(Lb5qEQ%Kg7~8Y zP@m+?E6|e6Ev^KfFE4Xta-cvGL;Uw8(<1p+eDE9r_u-ccePZD61MVxyP05qSf46Jo zq@x4BJ=!~dZ`b$@-Qw5vp0st?jGfb#?V7QC+sq%f&04x`&f+bLf7rfp!@<3~&-{Aq z`iTSQ_iR4+!`zj_;)X@~MR?k|x!Ss!=~xB~0weV7p3CFPwjAzSrwmwUp{8zd9uW<8S z?BY4g(QUGW>o^zJ(OzCdJRRFeb5*$SgLgDlg&(&D2#Lt2be=DuAKe1MXf}R;8Gi-E zIhna>$=Ln`5sp7VKic$|#(Ce^;7^zYSLWjrwm$(r%1urN=wlP&*Z`=2kx&mjZitn@ zeGmzckzntteetuzfl_K9rEl;oD#Yk^Zbmw65C(H;>K~kyfO~9^7u)%PNJ+)oUby@K z3^QLQU};L(MmU5Yk(LLlON{%FqcFg{!0y3nk$pzW4VOZKTW?q=*jU(7Kmd3s6f#F9 z72qZph2au{b%hNCf3nzw3jneZ6jq8%!aMvf)vl~ks#km$^`fPyT3Nl2gaWUEE-PcJ z#bx;8GDJCh_CKi_ntbu%1uhA=A;nw3yC7vkV-%$@n z4gKz?DGPS4+H~;8E&I0aI=E-w@n80zIP}Yj^CvIfy>jp6@6QhI*gs`td~8S?M-w}Z zhU(4hHq&jYqub2DP~Ajg>gZ(UW@RX`G_aMJJKLB#>ZzMFZ>-a}frffBeG>y4J8L&b ziKm0Dhl!Szk-E8+uC<4ar>}#bgNdU-6aA*OnpLe*qgh=oK)*TD*X-YYar>5Emn_;n zWA4sbYtBqrb$0xs(*vd+=rCwYaQhX`L33^0zjySU5|5fmOo)~d`>mH~1zHW@34;4rxtt{JKc33szS7(hX;ywoc4mIb;1NrQ zjM_A2%D%~1NV|IPf(`rE?>c+n_|1oplO8{O_Q!)K&mTW|@#x8`$A6?geU8DHGY1aM zoG>xMC&XV(so}@8fFYVWw+ktYvOtC_&WGFahEN^iykY zV4!DZZRsMhaksU0GtsrN(39AiIk`!^+$Ek86MJKIV~s}In&0SD|D+CveOpI#n>T0u z=AVvk+Hh?7>cb1y|2kvUukrH__a3(;qT>Q5|9A_h5oQh}ByJNNT_-rXjB|1t;b1?| zLDJ93u8)UPHx=&t$9tVhfR9iE^6-apI06zwzw+5|7y!*H%*o8pNQKuAL%lT1571A> z--pYB1h(}HbBbY>Txu#1A9M4u^U??ru@oz58MqRnGI=Qfy(^g5av+8ohFDy}BkU=p zB2h~V3-U5E0R7Mktop#rL?GEbp>=2)^8==&fB@*jxyDF~GqM=;gR>7!eADH}s{;W6 zlm&Qg$mqe^kP`}iC}s8;rVq9YHjT_Ius|h^5-Fn5j51&gRUijdgFuS5 z;}Q)73_$~_2_Vn}sE%^b7GN2a0SAsOK!XEP$WNS!8{BZp^r*b&JpWS-s^nsICFI;~3`|Zb%Zry!&{pRCaw^IIi zl%I?r@z2wrJ>0Zn>EIqcT&!%(b<89t&bB7*Mp_Qq&8%#Voq++}0pjeuZH(>B^lbq8 z40SCvTNrAp8*6Kt>S~)C8`@e~xk@CSwzeKRnii%8b{P4!v2d1HI5}84+nGDsm|&RL zw)$svzWlVVosIX9L6g_4-m`Q2=`}wdU9jrd^kqlK&)VB-_?n{G)SvU=_bsuW& zILOXG3NT^N%M20xmh^u0-#SG_hG;n$Oy|eutJti;)7%2O*fygi3%Iv1wcY9 zP~`9XTUAR9M`Hz?D+SO4VnNK2mQsXNWoQ>8(ZHq!`D{+25E+ui*3H5eezc^QtpG_% zK_uvh0pCKLH$sQZl{bTZn=9?_gE0h*f&quwf#rm8Q)ZuWi|iYjI20zYN_n-i|HEp5 zGvFRLqa;i#8FQFK1TZ1%&3P)Tmm~x$u^Fs*{0k*v%uz3|kz`g_FB(F&8fB;$+2k^u zQ0f0<+h2Z7{LxGx6a=UdVxS7p$Rv@FNtein*mxb(SfsrEa(?W8%BM1v&uI|QIcZy& zN)_f)z4D5MFoZpkLKv|axP+bwS##B)7?tEA(IdPel_bO!iD@vW8lhMYQRzh^hX@Em zx+Q(0JOUbsp9_4<8ayE(gyH=k&*F6`R89q%&^D9+sko5DmS0wqfEbVstPntep^O46 z$>(n^#=b3VbOL|d!Y4++eT4$<+qmiMnspb~Z@RjD-_4(op8xsCiG#;}JNMi52iNXB zzkUDJz28$FKa{4YNa6N>@%z7p=ZREH+fv^^Vq|1*U|?fvB9Yj- zIoo?VN<2&rZR*x;R;zjw9c}Btz;+Yj7yh{6;L7!f=C3$3ZPCH8-|vVUz9J-MqK#)? zOXps89s`YSyII)xv~}uj=hVm1vA4Z_4=4K`ZjPP(FwU!*-}krnDi!npLJbh`kxB8@ zV4sjOcv3d>31q~I;aDFXsATnFm|pOOFcOhv~3fx1?w4Rg}+Dwhap`d3le6d57l-3kAw% z&BFq|8Q>6vIVBXs?JDeHIRn}MVaMRMAb`U`4IT$1A#;seR0Fsnyjk1pD=}YKLfAvH zkm7t98f9SQ!2);+0Tn^c%G66x0w@)a%kccumjsT$5X^Z?sqJ)0;?Z453td4!GVlZq zM-CcZ88`rR18%Q1SUC#9pkAOD)WV?|haMyVY9~FQ09Oby@f3}#iu0)e9;Cp_|8)W& z4!se9el(zc&>;amyl4&vkqJGJN~s6p5_0lZKrl{2sz0YUg$)Pizu3(8uC%`>4?T{z zj?TewA36g2xa4DgUttMW)fDgf<=W=$*Ea9GvH$43!)LA@{`K7HvsZ3hz4z$m{p3e~ zq(6C@{`8OB#1~1A?(X069~2S=Wni9I}hmgY_l4nB5vURE}4*0wBKSh*OO*cq8R85r4WYMbfknwy#0 znVZ=g8d%xexM`>v0s2*|)~Hb|v6fmY$iMl98MO07%X`%;>{( zGNcMo1e{ff@}?dQf&PJX0JUI~VRB)j$?#SHL13j3PyhxT0oEIikJma8c!Dj5B=WZ? z2L)iv0b>E*fMuv&a0ViP*{3Q9DS$=}0t1J_Kq2xWDykMU|LZi=3#bC-5C$XZqzzmu z3n+|7$nwkgWEpv6^iORE7(putSAw7yfi^0uk@8UhI)UnV6$)#ox4_HD6A+2OBi%xI zYL0wK%Bt4wdCCF&U9Mmm&d%X84LIF>|1 zpnq^C0`y-G;0DN#mm>31K%p}K?o9e#6$`(vh2PnLe{7jYZh>^?zH{66Uf#a{`mV#* z51zVq>fFtXm+suScIVN(yDuKxd;a^~7r+1h^1*{kzn+;p?faI&5ysj^cIFOFc3zfd zF1k84I$E|yM$VQN?pUf}ZDwa-WNU5iXlLzeW9?#T;b>;=U}|P>ZsBNS3$W;E@8D(U z;9(I0AF*L9=)U`0sF}F2y($zGrU8@Oj-#3l*Z0-F944t%n z@0o4;&#m9_>*U!R2aH(Qy4^Tu&z|-!-OMf8Sy*(iwCreO)k$L0#ZJ=2(XN}5LsvKF zc8+#_B`VzacXuomf0YI}f_Z}|%*ibP2+GXL&B#OqflHtj*a5MTf%@>#mHDXun{}!f z`mtu<7jrZg5|PnRMLZR25}KSX#E zh2Q5aC5IzTEyTee*~LXbe*{07elSB23wL3YVLb5^Y$-041r$R-F*4?`?er4yauHxZ$(-_6iMK4KaY;Eu zpgi0+sEgZeF@IzV;F2YT`-nj8fM$5AlKlsDp(2PUw#i&7B2WeeAPi{(%n67o(*tk^ z2?Gs4jnwc8K`@xGl4_*8D z$h89}t{*>hHK``YEZ*DpP|b^X!p+h>oTS~Pn>bXbg;o~6EqDdy$bn7ab^ z8R*;T>RMy0)(Ug0l?Ie)fDPMX@hi@}Ekp#te0;(eQTz$V2Z=tD%Gmtd@|EH~jKNX_ zA_GxS$k1O}23y2Z?(bvJk9K~>ZW*a5nW-t+>1la6*%&Kl6C3eg5p$WL3OMzE`|?Xm za!X6fpr3&IXl$M7q}<5}|0%ZC!)!Df^M&INmQ5jKAlygZD-;mhUU~#L0w@MZipqdM zK#szI#}T-_g?X1Zr2OTQ4HUn3)&e20wg>@bfVK$x5TXHd3Xm3o#Dl0H5J2EAWCJun z)iT`5xxRrHPz4YcylHrruz59PEBL3%*d$Op~!Pdvev2jnP}L_U)q5$7WZ@Cqmi@CtfEkP+jpmt1d9 zBML)HNI~;_83F~+90V$cOZ-NWdA~AxgW6G;R6&rL>O!V`AkJV*8Y5QVk7mA?z_rbV zgbsP8ShpX5t^oJ#Idp#K;mdIL0r%}ccJ=VdD<@A~I(z2)o$J?bUOsp4`jxv^ukQG1 zOTQj{TqW+-#u9ALXR2>+W9H@{@wKt?F*b5EGIW5y&l=I(Q)1=gXdmQY7iewiZD!(b zV&bZ=?_g=^EsWb( znYNW!wR4tq#N&VdxUIU>PhtWiY3SiEt5N%$H27yu~BjM<@nBh6;%B6ilMn1;dQ5 z^1y2W2Ly0KSv=0=2O+%bGT#$jitmDE4G{%&1KK%-t* zeyU5vtc(kKsLZ4UEH-E$ zEL4O>fg#cgB!p~C??RxGP=dHRs)Z1@IRC9Qq#_6pb%7^&(;yFC3Vsk&Ad%S>O(60-%3w5@>q z9ISB4hdo?=SOfxRVvU+j>o(AmI0r0PzG?sQ%j-8E88vQERLn3Zmv;7&wpM1*#`+P6 zrg{@C*aMk>ewg_P^oO++Z!C1dQ$hgl!(2Z=KU!WwbN$$) zKLIAge@YQ$p*?bAkwJseBhxBx^pGPqZBzi|5jfDG0{oUjCgM!03sx5v8+ZzrFsE>) z05ZTJ%P305021)wWpIgxkPRn!AQ;sp7F&>)wGja{Qdn=!qyhr`0jy9SqKccKkY?OP zL17u5NzEs=Px60rSltJJE!|g~= z2sILCFb9o_C?7=S13_jelH>A8e&XyCn zMZ%*P-WRH)M{xOG0{BB_ya>`K$&8e%_d^mD;J&T9PyV#$%$9u@xBYT)7Y^b$cy|9U zCl4Mta`xnjUymNzwQ2LT@e^AGx3n^}Hc&UgX3I9lZf5$<5_4}q&*%W(cFvBWRuBa z1(EAzw&UO#L$_Bsk%76SUQGv09AS8_78eMZU-BgP~q zpd<{7=jF2jaUsBZU@|1I9^ezAuyC4<|H9=5OTvu_L;?--2+LoA#UswIF{6}aDQlh!!XeDcg$SMLV0{HOpMDPIw zpgT+@AT0vgOA^9Ag<9lm7w5=JOD;B) zfd;^VBQIqFKqsVRY6~tQ0I>GE`kU}x1lWh484R1CcDyxkL%rZn0W_FXOYw@|DUkf& zgQtMAkRk^ihVtc8st7Wm8*s$ORVS}Ex`kGtYvC;rL%daa&Xfa5s0yTLCdorORMHpT zEgNkFX9y2Xa%oAoycHjer~vo3DJ$sMs+jH>v!9%AG z9on*P{mA}913d%m%^a~gv!%Yhp@yw)3ma2iXGfb5H>XyPk}w;K02|97GvgpbU4H{z zA7cZ5Q=>pLlR!)J5Q$BMhMJSMmb0#oD*&LDrjwqoo0&;~olS_jk(;ruL`Th1tEsVO z6C;hrhB&3SX+7<#|M~ihPiohw+OT;O16^IqhTmw_uG_r1hH+fKk$VrF*|q1?xbgEl zb{yg3)ydW>(nK%7P|MFq+uuYdz+6Ar(kR5*B*e}<)Xvf$lMS;n@>IC*gY_|0MJf%5 zG=ML$__IeeGIx#h97Hlj`wAd1Y7IzHL071Yn{1M^+R=h!| z2sBj(0tJ8+0GD8I!JJI4e2b_e+~pukz6^4x7{s6;7FE7HfhOV!oq#iYU!s04|A zhx*cAPr)Ane9%n7;1%m%zFqGzhrSOC(xVTsUALgpvUMGsb{^Zf``68TFTmdi+_!Vz zsh@Wr*}ZH3_MbLw->_l9jG0~9ba1qEGS{`THguF2yBTW&`Z*eDI+^IYTNwM=S_Iiy zg-EQzOih9f4FV1H{Y;F50Q&TGJ+Z}$S~HuvU+dSYrAM)DUBf0#ECB#93T&q9Xrykf z{f((+BO^qOhK9}SX*d2_yQp%VD^*m@YSg>i;~CftXVP5mn_%Ein`sg$h%5tjObMj0Hi zN?Qyo#C?DUu)y4&bCXC?(@Q~J2t+GOQ67*1tjLc87{XZ*K?aag+y#MA;AhXC!65>Z zh-bN;sC7tr4i^TN69U7Ef+tdlO-5CmgInMU=16fDB9W^IO#mN~Uue)<5RkZb-fEu7 zb7TlEDlhr21Q?R2c#seuaR5!tlu;~KFEkIuQW>-zH1q=vBZoU2!MtL5cuAlwaK_0Y zU`4N$u%x(ls8@Vh85&?*2IiAIGHT?P^3p;%;@-jwi1o%ZL7+xRu1q#42d$u{0r8=w z$iXF4_g(^cf?I=6W9b>MjP_?pCIO4mJ_?){zz#p++Ww zCMJPa79pl4zUs|wYgO0yzyH+#q)P27RcckKQnN~xuRr^=QLUO9O&XhMs$1(fv(#y9 zqF&EHy}rIyBO|TGhUyLVa58U$nk^dF({5B>t1+No3&U@|(f<1Droerk-l1#OZCkZw zYp-4-Tepn!^=gNDP4%%~w5yS(r@5Y=t!c26WtfXin5%7=i(R0(u_P@eONIO1Z%0yb zQ)xh@feJOiz=q(Dqf%Ja{2KQGrsd`4W~5^=Z|aK|@b_VPFQ6ZAAC~&E z>u>~$0R05?hXv8Z6A+K!9+vtd3+p|Q!aIoF{g4A9x2P~VBmG&zE1)2FfMCkVtice$ zE5??8C<)x}Lt;}3lSN2GK1BgM0{05xGT1r_O4u{hh5`ftVQc~D-f9m~fDhi`K?>xZ zK`LfQG#3E;A(#wU05>2AUa5SGC`a6Uc^Z%NKzC6K0-hykNhvOI7bS5iWL`lsoNaUcABKkYuZY0q!luub0X<6F1w-@17x{Cz*JSTSbsupkdVb3F?K zHDe1sJ5Ncln@y;#iJ!Tym$|;Lt$C=uRfLrZMtD6nG+hi$eND~%TBupqsL|r{&+1qG ztX{Rx>wNZ~>h)_ktzDzh*VP-=s`1TdpVj{K(>kC3UmYVg3u|p#3w0ag7Uotuk_Oe9 znrhoAfbel{jvSb1WkXPK9+TF?8ZyNv2Vl?GHAcqa|eS5_v))-2e{ z<~8~&DaN8*c>Qp;F9v)8{nB5&$b9hvCmQ4?CIa{2B;SIJ%u<}`0qBPTUIF(pLI`ZJ z2b_JSCD_XkJNjjo6w$8Epv#b8X-Q^YE}$Q#V_{MjVI=?}W&n}OdF8nE!_XVB5}ZD; zOYhcdVXF@slZCzI3}p!1;VhP&v4B5d4zo;Hk31=2=7dMU9GM(i z;u7!&PoYJ?WtDG~*eolgD-c+Gi-fP_kR=`j(4gvw2`=$0^n;fI428C%X}~fZ&WJT2 zrU~qz?NAz=O&k^}Yzs1}I(`?G;?;m5Dxz)!^->`9@|P$>;4U7-<6B_TDSe=rd=nu>^i!A$AKN&c5hz)#$h6LCxxQs#W{CcJ=x-tJJX8w36u9wy33Mre@xvj)qPXL+$3qYTxLoH#LO6 zuVFn+bzC+xYScgj(Z$vOyYCmyox7?>_hEiMF?QC$*2V!k%^mgCT_K5`X%HLUCERD~ zX>ICitZ$W{quReurX#2>RT_A|8jyiGZ@qlKwf`Hq$uyY_wu&MLWB!+mSE9b2>YU~wU*5{uztXZvo^{TbL z{IqV(uWHw*{^b{6)cm4)i&~AFd{IxcR?`Nb*4C)2u2xsQSzR^t#=1@FsW)z*QLk3> zhIQ06n;QcIf~Z%gxwDJk`1tQ9#Lte6?dRnYjoo6*jr=s5Ig-E6)-=f8GT7ccz}nc; z+`t7p36iw2A}~M)brNM|30PhCX3;oh<<$*2llPTetUF4M;Q#H zvx$KOONt9~vVj3{#0O6D#SA^5zv8rv(ySb5K3sg#Qfvf`!2Eq|co*~HGo_^&(vpnQ zVt~Gk;=-)bV#0kWfCvHLPJ_jR;|7S2&FF(WO!>SgvU?~63kmCo00M!VeHjAfk%M9c zaPS}uYz1}|cku{<*zV#|S$}|$l(~f*!d6HTfM{U_LOh6y^3*O| z@&YmhQ?il(0Vn_$pmx9tFeHsZQN$CigGi{99CJh?MM=mk(<1RDI8(JK2L4EKNf-gQ z0HB~}{yI>XSdC(uBq1@7;u3NKbt-9-th0=Z0ofo1o`rrOKUhI^grsmOA4rW5OeO%J zL3lI=oY5QvNJ6bsD3Z+U;Fmyr5CDp$1>?v^4u_eLmY7pYiUofN%;mu&VnxZ&xQj-C zKl1Ui@E}sIa4yE5CWsrF@YY`d;$HC=Y5FuN#C<<*J+x}ek=0vHtl4_}$8AS9Y(21H z-Ku$zm4wiTdXof=JRRQm?U z`wkd1wqL(-k&)ei`y|#O7RLVCEu2mCe5{ND?94;#EP|{}eX+-kfu=-P-9qK>`-^=> z^|(p{mCyi3J(VOX!SW+3LJj9Yk6;&1apW#LbytdW*RUC15e_av4aQ>6R>FqO%tPm@C2w`A4!g==;% zU4L-JPlwlTKD2tn?v<-HE&pNFiX{stj~~%882h8>8)+L@=v!JDO6*Ks9W8yWjl3=N zyv_A}Ftg9vG}zqG-x$k0wCsS<8r5m`b=6w+KCjmJt1p{>^?8%3RW!c-46#LxPwM=q zO4C|jNQ`vU>esIO`KK-hMjiZux`ajQ)c>Y>mH%r}tA4%eb#*lK)Ea9yZKT<#o?5d; zx_X)xYK;x+*Jxg^W(zxe-)=pJb?7`WFsP%4M~szakg1`swwjB%QJ@W$@mh!5TZdx5 zXj20hNP=wvjr6SYvQ*=|mFXR-GAa%HX$@2o?(t%Ox}tyWgVZ#_eH`wAAn#kgw3rYd zKp!G#M8H7!{_=_o^RS~GCIG?*A}wKO*%jmi<>e=(A=0WlR9Kp!IYQtQ@kimhW%?$g{AookWB^T-LULS!1MwvB1eOXCnKq&X zv7)EsQ{WMlfqM(yJuVV-j=(RWVH6I5Bmi^ITDF=)QYeTDIfw|=Gk)ThL zLfkiJ@rKzyY+JNu|MHE8)@?bwX5${heY2)d9zSYe>##seLqk1vEuH4tnvHe!nwwf1 zxnb=Dmd!d?hFKT|m>Kv1`Z?Q%V<+ct>ZpJ9pPCJ;)oD_#X1yv^G^&5$s;?g9V%^qL z($d9Bw@x)H^~O=Y?sj_GYPG7j@$%Tdbn)(0D>p4&ws+&E{#|=~R^>lmepanP?Z#LH zf(0Qpt2Jm;M-zyzZnfr3>g&0=g>~*Wq;+(hr&qL-Q%fTQ9|LVq9d%bL(-4VexRY%w zCrO0F3R}py8|padXU(OT{#S7jT2ECXWyJHMw}J!@k}60o)C#cWne+@UsS2b}3tEj7G%sI4 zd(l$JkCMcbI6zbo2r?B>rhG~@iW^8}6f{Z5qVix4zZhX9NC>S$pJM2TOF%!!ri>3% zfmrUrTtbqcr^@*70x|?|7byfO0(2{Mf!A=4tCtIpMxkk_jvnFi$Po0JNGeo~ zyD|d&^-Hc6)CC$ap9{&we!oNoxNpY%wcjt^GvsOIe8bWu%cp)j zZq(2|Ekpb*jr8?2G<8~NX*SW(Yi?qp?<6tvakdV{d^(J@ni=}S-R3H3h5cQc*3tZ` zO3k|eSF^=eU+dKV+DS{Tjk9f(gGJ9kkM04UnqPjRRsHi&M_bdzjp|mZGP!@;@y$Q( z{9)z zsWkAW1_<|6GDWffzCa&W(tsHKmHYlMl*@*CDZL!G`5Bub(up zK#C={2}zkR6Y|p1vr zQ~>nLWL7dEH3j<=W0?(JgiQaZo>Sgu*h+0|(t~%7;bc@wFM?hQ_+W3IrwOl~B_=So zg4+tRQiP}^B=TRSrXa;7mmileg(&kB%CMY_bVvxXF{O>a4iXIV(AJRj8-g;iI)Ozj zFy|@dptBVeU{V}Jg6E7n&*Ybw%Y$qa5se1cLo45w<;N+aO`g8m})c6%hhZ zAYnjfrm)DcE@Ue&!;1;oZzOn|!1IXE$;;=@lV85d%gkar{F?(R5FF(ApM4Ba8|I8; z7f7ehUOj2{x+(KFeYbe?tRYOu>t;(M9}qffcG^wN8-CfOMwO}>)#~^gn{{$??(AaM!O>z| zOxWa3ZR{G?wr)}{u4QPjgTz{+#fs@uZyY~#X7A4zj~{+?{VIN9+_-c(#4q^MDxZJ( zc`a=Eg3(^>=7x=GtJSXdO_TaMK0eVgZTowAwZT>~`UalOTR79bj8udo4Wwsf zyh?bPj)|7JIf*GrY1x?>`8i3M0NxoH*_qE@y};7w)SS%c$qC58=plgQ%^SB0^05Lt zGXdBfCw4&dScw7nE|n%=QXBAQ`Jg}E8lRGeRW|@ExW(3D3xz3tm7Yd`9Z(T(3?U6u z@JdUtk|$YOjB(=R!hAq`7<1+VMpr37ac0vKGc)kgQ{f9PDM(6BrFo+{C@d{~S(N)c zH#4hL_+f!(*a{PD^@xR!_^rU!2tnWiY!VJerP8F7RNRJO&#@+?yg)LRXP_ABLXG*@ zTvA$`h26zjkIzX?V?+U_Do9Im3-Z!YA-WybDdn;JLKHLGxzptFU z{M;g@(mecS2zpB^C;*Y2UqJGs_Cow-68#auO^(al`~tKKObSX_1c9fr@B=~69+o2G z5_DEhE~*28ir_kj!l6AV8V-4I0g;-8!=UjORf=slSt?An{Ub9qU$|AaY728Ma-i2T zA#$^!$kM`G{6z{mfO}Xu&VX~-**=g0$Q0@aVugnq#Cr;O<;8`ic(-US+QgRe;I*V= zNhi-*J7(JI;Zs+RnZA1B>{S!LUow93j8Wq!jG8dISKpp~f&KSWzE1jlQrt(-UK_Qi{5j~q$H7Vb};ro4Owm5d!Rs@msY zef~++y0z--YU-;s*ZQhz?P_0q-K2qbL{OI?-_9-$Q8)>tS#yb|mb008fW1RYd&fwL zU9hcn0FDXP*OoMGpxfwcbu0>Q(M&TjAxY)$dr$pG#YUw8l?Fb52H>0$*8)30Bbee$ zPUA~XxGzy!!Xv@JbhhAE7W&CLoH!#D@md4SGGo_8q-5ta^K!ECbCKebA})y#mgO*8 zURqRwopXRY@`{QH`eoz-)-iB_n3V^lBuz+4W|aVOWakuQmn}#@{)^-!AdckB3@VHq zoVQ2fuwtw`uz!FRKzuKAG5imn0P_%`6yQX_4pKHzlwmY1@h(llrj8(zlW;m3M7Y&j4~T`FY<0kXD$XIgQgz)%Y4%H|lL4W-hI)O03>R0?SJ3L85LG;)|ACDPoK zbO!nW=ulX|fGiboA1fe&T?Kd)WpeVR`NcqgC23hj0xHD9Ch$xtDtwmBK-9DJbTk+R zp(ui)Y1k56z;w?OlaLSDkmBsY0-#Tbmz50=ha8B61NtB*Fd$$fZj}@krzfQ_UP3Gd z)B}jiFU-!u>qGk(yk$)j-dt9GK~7;2P#$HzN=_k!n3b80$Q}fLX;F%Byjf{Meo9gz za4k4u2^L$I&wfv_1~Z*Yi!(8QSLh*sJbOY!T6!veLkLu0yx35p7yKxx48anKoC`!?_uCYO8RMpstf`)pxuLVMfvbsWfVpXq#y6Htsy1zWAoOQq2X0O{Su?SwQJOAShrF2 zuWEf#<@4IL>Kp1>hWdB*c5QEM7NV=^igSJq481I@0xfIZ`TA!6h zGb3#NjKv{38oJP@3irLOW2o+{G@#PJzefW!F3IJg0ZKqWo+Bn;mw@{?;^PFMpFHj> z^ZJROSJ84B5Zp9!xgTRjl`2w1Rrq)`z~P?EIJLqS;LE_vD=Z*n67B;=evSK>zb{i7 z(YAj?`(Z6RjgIIzJhEN?ma)B}V!Oq(>l_{1E+8aSV&|l#W1^vMsH172qhYPl)Ka~P zRf}&d)Eb%t;^{V*V8GW@*BNK^>g#wL=>=f_WLFa}Z$pO|8`n5jk2nXrP8KFT?JRq{ zJG8a8igL0W-Lu=&|8MU*z~i>AbZM)LMHGAQ9CFw>eb8qxeK_pBiIiB>i`6X2MJ{oT zBim{$5+yr!c9ZPBl(+B8OLpC4t9RQ;_T}Y$*_Zv^CN8mD)F@KoI~b5KID^X~i?-|l z-~U}69GrXZ!2t&Nc>&zJeMe_Yiy6bJ%Su;ub{*>NgBJk)`1^matE`@T&n)15VIko$ zQ3*izX5BMy&b@)j37Le!Qm8a5QmN#4LwYiyR+U(+OB}AHtgWd)Wlc)chKF;sG(ILP z1!nn(%Snw_(>A1rNe*vUw^m)Pswi#{rX@2hq|C>cEGGz0kfmR zViMz1!xqKNofQN_K4+yD7_^og1r4JFLT6u5zMUfL9F8{1R9mcdD00ZSgo4n}l*OSb z39<00aA9_8QD$-_y1=R2A82f`RLV))n*tl{k&HY{2OfB=%NQIbx39=x7BVHD31nguK3yliG z1e?S*U^YcdzLvPIk49MKee$KC^a`URSMy3g1K@pM?y~neFFc!uXVk#^%#J05wM|dA z7^o)J-d0n)a!K>*B~4wGp4z&~rpl5!N^i+dDNcw|CPm~XMHT|%%SoZ~(@ljL7C=#^ z6$WrF$Z+Ikcrp^KI%OGMRIW?K%u2GuUc0%zegBpRUwZ7R-yC@9_&@*mV?X=Vsb9VM z$J4+2%OCy>5e*MsId$yl{hK!CWGZF{1kAo?R`{Zbdjn=KS{M$bZ{DnsSpf^fLgLa> z^K-KeiZr}HY0;@YG*M%*G@IFajne{ZyyG*X}EyaMkN*dILbh0i?TEiJ$o@Jct#spfsphi89c z0yt?~vcYX;!2g~Mjs&G3_N21XO?y?)>Npe!tgq`qrI|ZiN{t`?xS{HaOjcBGcBCRNCbPv+v32Rny*r=&@t%Xf z9QetvUj5~3|MZ(9|MJE^y!7(J58Q92$kfCHAboQJ?oEnIhA%qi-m`GQoKP6bB_Lq_ ztbjn6qzxW1!v`DbDZ0X33vQ@jsA`g`G8jDtg=|)qF)S0Q${CO|@U6>$KmaF*oacQ&?)W$Rc)ItOk()eV74$sygU7)<`-7L@ z0X+MI(uV*}(3ZUEHZvf;6$`SDz^_6nUIZIKDQND9z&nAGUj(19Dr^!fg)n^V1)He| zg7e#OA_O2bpX?l77Ul#4>L@R&sB2 zjLDq9b+(Q2K1WHX&ApOlyL5&oqpsFOG+2yPq{>!eE~_i8uk$pRjW%U+VM&YClCHjLC9KIfi!^XG)jpS=heUqC=$ z;QVM9i7!6~E6Sq@W0{$*G0`=8ohwI4rlo4*;|ii9v*TiN;K<91oB=rl-?j`0yblCa?7-T9%>lC$Q$KIC@5abC2p)tY6Un6X~Qvx(0xDv}^rB4{JiC+YpsR&}{VtI;n z#Vztxpq#)Dzm=~guInS;M(dJ|e&vQ>Fy}81gbGt>&oP)ImU?rK-9gK?{rx|AqIOh{5hP+~%OR#Ie6a!h`5 zbU{i?A$--VNYUqJQrRgKyyce`XNZq1$V$^^q!uT{DKaw(RE36|%z~t-l*EXnr0~Q= z_XI5nm=`%OZ2mp7f%GkyJts6UIBd~k_=Xpr@P-7!bKV6&`tA(~nKwH;VsR?WxK@xu z7Ua=Jy&E@rG-^Ba@g*e|CnXf7rKmH~Il$;Lu~C`ukQaELwurWnF1y*SD%Qe#GBWQI zP8nH{GazT+yOjapYcP@ne7XyO4>{nSJ|KGjypQko8|(NRozxA+cIJn7=BM-(sGrRK z?(jJxd9UVg*L+L7fmkEf`$XeoEUfa?`Biase~r&ppH;!07ohZ61Ou_&$5^mI34*;~ z0Nw;8?^##{!DkWI5;h6;;_4v#R2SD3s)%iTl#=%1Cd39pFnqg$TOXg2)x9?3c%R^e z_ak;9$UZjXSK+q|zw0j(dyD(D3q}!yfnyq)@2{-8-|kwElbr^AE2(QD)pbNsiBV-D z^bBJ#8#QD>wmLaBBRn`JaQ5Pe;5c~p3IpoFNO>@vG9WoNCoQ2cBTr9 z40T*&20Y${FFJ5NYc+W+ObL9B0{wmR`+acCI&t=J{$n3AOFl3ZWJ=_yTd07e~adwiseb05gUX2)fcft ze{U0S73{@ksHns?LPbHCc&lJGf$&v4OtJ11&Axh&;~Sb}XqNHD6ErStf}iu~d>t@g zBYZD*V+45L-!6@`E`6xJ^^vmb9cJqW0`DXY?Uc5K&{W}C2Whkb3>rEwTb&q}z8I$7 zofirSUJwx$5*rhdoEV#t6qlJ8n;9RS4$LcRaZ1GEl(4X*(9ndC(752xn4qxO(1_UJ z(8z^>ix$ie3Z54fGH+qXocTes=JKEJ&I7JDdm+5jcMnJR<^t&p4vdZnOG=8*fx-9+ z3n-n&jv3rI<|0WCNtIAgl5WE2)D$zo_>y9?Lj&W2=0!mX>@OuDJ0T_`A~Yd1I4UYK z_K$!3quk#ooB*;QXF$%tcPj&MQHLRVf%*ZU<4;Wec*ZB@eWSg8FtwW(pN-rEz@WY| z@0+QUg1<}qms4*~s5|v46If2n8YbTA9aWfr_dw`B8eR2oabj2Etzy~V4@$$=5=xZW zcs=*Ngis|QfDay3@|Hpslo?7dZfJZIeruu(z^omx_*sY)B4d$utVeI0iW>zQwQ#(z zb7xD}Qw?p;mR9X#Z5v5qIi_ya7F6lgB}Rk8V6bU4=KNfJdRkt5TzYg=@}iLF;Nb9( zpfKpdiwaMOiA;(Piw_HqidY;M8oMoPqC527vd$ZGxMxz>oR?%M+*{-`_Xd>o+nC(|rN;gUPjk_rV+oJoV#0_5g2k zf8PwA9;o~F3^plp{nc7WkqA)(W8zn9Xw1tU{)>uVQZMj6$*t2;PO=-KTnY1U2$T6u zQg_1569oCurIFg!9nGE3w07^VX@1UG`Y^?;H)xls3hH3$Tdmfk);Nobtpx>4ZXTAK zZ^+BnE3%8y(z4@YlOw`nfck}oM1%%Lge(kQxF8s&*9ZyW%&h;yh2N{+Nw9$bUL$6OREd9oUEd>L`6b$NeK4&DrZcOH$%1?xjN|gjC!ff?@2i|Sa$PwCat7}540tDk2lfXq z=mGVEr@ip5AAIH^eBnEu^ufq3<9Hv;EYDLv{tI8=j{td*GvJ>A?||YG1&Uwzd-!HG zs5m8d>9$lT|0w-TX9LwP=>K|Yq-x2I($>cu^-q|}9-~Wk+AE)^Y50C)>#ma0haB#$ zChJ;^T&B_07i-GZT8~ce)@rRd?ljSE6Y0b?CUu^%I9pq&)a2(DXJjgq64K(LQ{p31 z6T;GBgOei{!~>!hCPW3sM+U`4E{cndj89BRNlVVoQ|Pq?tO+Y~m}_iI6``{i<&!Wg zNPN69JUlf#JUJ;TCqq%3nx3DStOP{Hr32#PGm{dt;MKxK3nIb;qY@)ik|R@#v(%)T zfiPkgCoP;Cws3w#=%N_8zi+0`E7`xC0XYNTcm}*PzVp3)K>hd^{dnHzL;c29hd=OA zzmK@N++Z4CnfHC;hfoec&cKXi04@z2;NQbr@XFtfp^?w7j{MiBBjv5z-7Sw=YQIO6 zJxZ57?yPyXvT;{U)AKbAKLAwMJp=Fk+1;DWwiS%IjWIRh#xja1Gf|~1S;`V_#^|86 zRzhpe&(r4S7AqBn%Jc#l?@t+5sEjViipO;G(7D!*&nEF+|$_F+tS{@WLZyR+pg-y@0HbT z_f&2)S(g%I9lZLdDza&c?U>d@>fE@&0aPx(NUKp3+G0YNk7<-fy%NWBNmZ(@C{0t4 zTC7M=CPk&jgeOEr#KG4f@F{L=xFS3_DRdz>$wo#>o?cB`7&oRf0WnNTR4B9Z^Yhi| z>B{i1cz8*0-h##R7KQ=u%gfd1)I@QfwlJ$$m7~$;8?|}5oRqxS#R(BX(Qy&UsfpPc zsX2Iu%zNqSJ_UBYb(WWqS*&o+hZpC zqh{x$Wwp<>uIOL7y1$`wSL^cU>)W3wsoBcdmm7&DjjmdyDp#xB8ZAwktR{;CCm75? zkw#jlGUR0fJ=5f7=A|rcILZXes|7Tc~9gF$Qh6`AZI|%fSiHb%>c*y z;AsF5KKKWZ<9*i#N51%C#BOV|TDmOk8oPb7+r743z2Iqn&fWA(Y0I8jjHS-Op68%8#;wi<`K%53%MFj}o8bw)~~ z!E*D8OpHaV(G}$vs*8&Oc{xhxipy4H#>K=$ghxh(hsQ)k#YIJihXw^NoEtcIR!U4v ze0X?5L}W&MQeKK8H%S2#yk#e5WvA!C7=kcz3_Rq85{8WdK-XbHOj2A_0&u1n94Nmt)pni7uLj<#(U>|T)K2=ix153sCn6jPLn#ZZq2b>L$ z*LM7%b>)jox_33SJz3qb6K4FVu3ul%u*y@h%w(&fm`ci2uE(5tg``ez%`e21N^MrQ zDm5i1COS1XCM`8ZnUbQ2j!uM6fafm=4u=8%;Byb?=nIQj9262fe_=#OxH3&?GMGy( z5|eMlGW$!gCbGFl2O8SRxR>*oefG_zXpAPDXNeVoYjMTnan_wwN78 zoB)37)87XN1!$em;!pJaH9l2%KY}YsdtT|Y$!B!}KVnONS*+n><26vqi<|*D19ArB z49FRfGazSR^f@or=jZM3yEQmCa{2NIrY|>WYjo;HqqdbKI#}}xr*ln-XCrIhO0b(L z>sE{BVN2N~q^&cs|dOp!^>eDz`R_#u)qv+?7~OEFhC1T`^ zM#{CxU|a93d&E}#5L>y;QhvXq;sJN{!=*Jl%WEHouRiLU9%^ZSyuI_O&hDq%mwm6U zVMj^XTE^U7Qo6?BTA?%48jW=&B`eFz*RqyYt=?%QTt>{HGq5D>bh>NYCADVOqt~-A zM4(>78nhM)^VrNa9$QnXy}7EqjV7HiH(N|p8cf|A8UoLGQ@F`Jl5;cC3i6d&7`6|- z3@I+eRRx$@MHq1U_IMvpvLvaNaMlPmyvAo0l;Y|r*{3d;iI=fjFxn39O&E@6)cKeJ zS4k|3olHR%++E49FSy zx-%egY2v#0#_>L|f&RX$mq&~mr$Jq6R8<*OHHPA95D0xWZmhLAx=X7z0T|l~jO{eL z)>%t8(vCHhYpuO%tEc`UN5xj0U8N;ENp`i}v!%3Zdv)D|4NZ?NS^CtnuJ3oRe16sH z7gw!$e(n0*4?OhJwjBd2Ry?<6?emX3`U+sfhFvYK8=G3z)zx*El(m+4n#wAgE2>({ zD_bh7+AAvC+^$9vFV(1Q>LQ!I*kw>Tg@ImRxR>lqZEm)qAQvylC-aoX%nVINx;ifx z*Qi;&&Sua#jYg{;n}qiXJj;hP@vA;cpF=3N5zB&^xH?MajU}tYrmZ4uGHn17H2yPvuwpVR#kzW!mC-f$>C_T+S(XPi`m+4 zb9FmCE45ey#V)nESF^5Fgt^l|wUg{}n{%DRxz6obUsk@QqH0TJ_14<@9ZQxx*46!V zN9U6(S3L(<-u?8-70<3;_rlsWySlr-w|eEyB}+C`l($)}H6~LTO?xbsa+j;NwRLq< z(~5FWi&5*yOwlGpWy%=`u3QqW8KHCa1T-HvK}s`c-*-Q5%0Gxt;_kDEJN~kIRkPAzJUx# zT$<3l&t<7|&<(7i9xtlUD4oSwR&|a=S7=eDYm^GDrq~2SG&58M@GP3F^0?c93=(*a zPG4of>r8CB&C$hLJ4m_}Gd56Ui-~Ci5O@=;GEA$((Pg)HS}aT5&hF~U^;H$?KyW#_ zDoa;YmUq}K)ihB86Y^5H3!c*E=jsddjqoHFChAqBtCQmL6C!gGqYF}^i{m2;veF5q zf-Www8?>dkp@J}0SgP41m!driIZhQ6>16_ zRHbQ#!@Y?hx!fuL(~Sq!E=oUL|96``YQIqWyDk2ijt7+olzyh;k^RdVkTW1>05TwP z2}1KekG;{!G+KbBX=_PUrJU&(jylq#z$qQCFEx&tFn_d$~1j(7NyR&>DA>L7$~r~OslRi z>T7^w+N_-}=L$31X|Zd4PUoZ9`-a4k2IGBDafdj%8v5%?9e$FOQNRl#8qN+_L2C>ad`xm!06&bZ(DE(A? z-pw|s{X*&Q=6#uo*id;u>1QGa*{7U=JC%XE?Rq=i{X+fjQ2RAqJ<2~yKi&AJYmaJI zT94*^WzJ?7+iE47&BjJrR|gM#^+j%Np}8=#Sec|qiA;=J6bncSPfU+a&xlhLW~vG@ zG&yN%WvWV%qRs#$YoJu56a%tSRoQ839w29?so+ICcm)s2tPD+RVo`i_PGq7{oR+?O)v1RAkhCq4ZPnc{kgj z_6w!IoA+fVVngKtrJsoyWS?>d?ou05(SUYU<`%oD&7f~J7~1s4r3P%7 z*0@xyTUxAX%U3O-%=a<2%@*f&o97`%*(3JyM*;52Z7`VNhaX?|=Y7-7^Gw^1@jKsk z#`Mz16Rq|2Gub-Y)1BEeS^K`*r`xJ;{X4ymisw$ZBm4VyWI#S2z8%L&j&f=lK%LJh z{nWgEeO9PAXIlUD?cw;AQ2RCBO0+iqd){F$?}PFC%1V}&I69qdmzC+ZFdb&9ohF)T zqSk4yb1)TFyoAwO@ghd2G!~|*@)GjXqZDb8nW+&OiD7B+i&JA3r+ASR5gZpD9J4qu zYSH{i9-#}O7A=g84oi)W$cTx|jDvo?_}uhVO|Ftq7qEp2Mw@3RHKk@_6^mCgSOtxh zQA9azC?&CShNxl4IuqGwpt<@7N)cWpXZD*0Tt4P1R*s#)Q+Jc+6 z;np3b;}ORFI9vLZwfvcqnnxO2?z{Ba;N8#rL`O(cL>*_8Ued_~N|c{FrJtZ_$xYL3 zSJKHHRHEX!gH6b;zC{_3&xdc(!IDFrGy|yf8Ks}p;n!?{igTv*U-NDX&7t;7Fz^)+ z<2IMNJ6!f|8@tlNtT3Ban3!&gS_*H^VTKwKt7h<8maMhlHD-MUS>!O}vYISXr67tj zjnGL4Pjb^!ieO+BKt@twdSXFpd|q-ahs4-C_%H)Lzs*&Wx!F`sHl@rWbCq;azD=w3 zV8$xSSkK^1CZgF4UxN@$BwkNobr@d9TG~veB_z>o#F~x97Lr(IVOKfq8*HxatbIGp zZo!z%MtYNh-l8{cHJG-msr$9`4xQ;igY_}O`6T7}zPaLgckNS6OSXRg#m(vSK2%<( ztM^U+?XJ&syLZYz%FpfYw{N|f_V3%?*!nls?pXWs-@7XV^7(Lg9S=F0naRMns>=Z? zRe5o7Sy54Gk*ZvytI-=8^|}_luGOGv(P^9Etv$W5*?_g^@m9**iJLlbQx`^e;q-Eh zS%oue2xbFehWSIbn{7K;*JG^naoYYUX4wgJPiJ~qYkEXydBWg$hAMr*T(!?u+h5VL zySZ)KIn(~9do-sV57*zv^FA2Y?n~ZR>gjelS6MA<&F1w0+Ps!D ztu#>G7_&xCuGC}Q24g3Qcbdp98`Wi_J4js}p{v1lRR(Pt^xUa5B`U280OZa9--KwZ zIB2Q?T1_oLrK;6v>NVOXt*%+EZPDmj^~QDs(Wy0bXbqiueW%XYX~4UU9K~BqEf!te&T=WzU*D&oZuO2**>T`#GXy7hSsB zRI!h(Ibf?l`(7zB_xv&Ojad3fjmGKs$G7&KUiWKoRB@-&QO&g6 z3dS?-UufvtC(Qi$AbtKLE?>7{{O!xR9P!tmftf$g@60~UbeuEof4W(Kc;Fp9q4bJe zF_9mRrQEnRG6eMD#>lO!gCn0^9w{wb;c~6DS=X`b1{1rHG2e%qRvV~QI&!U+SgXU< z=<(GAv6{qJ5LgFcXs3*A6xNDk%{bO*#2YZO0i)}2su9yQkh&()$W8V}W9=l?4#q}( zyGGTl)3zJ*%YfqP_1#*1x6ZI!Yg}O<*66V{P#Vd#7`+~6HW--=26{c?+D<#R6ZRdX z{Xxq4sHx<8@XDU0>}gy1_ibfA;83y4R{5g6cCWLp*V%BuR@Y~#>$lboSn3b44KG<5 zU$!>BTGHCvu=K&tM|t1y@YP#GS4T!}06-oYzCJPn+;^BOfv(&f9tFsp63oDW2Uleb zP-Q$gsw1i{_~8Y(@rn(2Sy1w;;!@beS0CL3WL=tra`$ypqpLS>4S50Q z1DqCIR^a^LO70ASP5vb!9=QsP{7`%ZzIn+KEcvg%hP?|fOIm^wI@BeB zI9O7HE_owE`5(SHG<17D9j2#00KzvyuS{&kYGWBx0-_uD)4^bi(R3xZ& zr|Tc(XS#an@VS4@Vc5}006)t~fpT*5*6;+O3Q-AZLFH30@DWhY0BS|z=p;`DJl>8iB%n>SJZg)_lNn65plU2(wTCQ$yx_F@^8 zPn2HVmRLr$i_(khie>-(g&}DsPPB3>{Z4e+um7^Q)i1{ovB)H~#kNh|AsSbgr@6?qk`FG;<%ptjFlpdVCc| zZQwwz=Xe>u2FF+7_zDc~#<33gu2!dS(drxF;j9sF;ef#~FzvLug;2FHx^`N-j8L@^ znq{CL2R3uU^WH0=Ob-A`CuPqOYO zS=ZBM_p@xt_pP4it)(x}?&r*9yY1CIw%T5{YM-fcueqkz+Bkrf?KamRvbMg$G`s|` zw*RBM>*tj#U+LKN!k<1K_CDvmdimp#k!vF(Kq9UV4SqH}czNX3pqF0&#o)nlim^K$ zFg`E_2<#68f&FnrXdG^WW^ly6*vK#qX%aTw-qMDQ!%?nuBhNB3IT3;qCs5s;n18*mPf2T;ao zVJ7$1>svUL#tRaZ)tiUu#{+&xb20^Cl(9-&jSvlcFGmu*1JM=)Gqa0-^q44=H6R~=01pbqkfbT!4qt&_Be1toLSop^F_zpGvcXpm2|L?g&>AdUQp!nBa z7wE(RjlU_3k`Bo#VxBlA!w(j2c0N}J;r1u#29!gC*9T!{Ht2J?arKKUSN{6Z7k~bL zmrKi5c|053t}S-^R*Q8jW7!NNqX7Fe66*}udIP=|dgYAJF=t$5z_`c0B)JOM9}K2q zz?Kq32T5_DiDeFIh1Jl(8oKPnN*l3?H7++BS6QhICVagKzt4nkV#v)V@_w4UpP{x< z^fsE=PBGhQ(+y29wr)o$SnCu$?{h^xApwr&-mxOw??jB z`t&a!ef*!FfBx~%(3Qc#FF^R@Zyx|Iee&U_mp=OJ(kG+%^yAB)eSG=z4*^#`|ClsnyY7$6*REe48omzT*xaq_fT3Gg0APRl$`@Czg2C16gI5M`T)#ee zjrZVXg+L5_A^gMRBMc4=Ndk5KxPe&UegakCzen+QSVi4uu3fz@iJ=?Al0e0S(%%>w zoEF6QcCjqp9kJ}6VO}#dd_x+Df2>jQBg~O%)Wz&h`4{iISRO+iFSX?fY^ZY@4vr%ciw1!-&i-F(BF4!@W${B382pB z>o;!rK!`-_2i)=iYI*syFSuS6=$jfEyasoV;gJtNxLIDhy3~E2+p)!E-)6JiZ)P{c zqh7|eks#L-#C;sd^%Sw5BG-}R8X$c%xr!u~L$4o>FQdp#n(6{DM5h&aAHKputa32x zY|I9hTx%lMnduFzX*0`gHJi3Erfnwk119!CGy5>GJj(na&^?OXNqgxYZTlW$dy=+4 zL$FVgwr3c}4|v9BE!}S|?O{uMOn~xU09)B_2F6!2V5xhVt^c8|g9dQs^jnfRb@C0s$rG;&fYlSAIrY|YDV#j>wj|D+eOnUe&L5S;`3uK+ zoI8I^z}a(0Q8;t{m?SQ|cM5R+-ID@1&AVqfTs+I;{Dm_dE}jOQId|gRg;Tr?!rAjD zL38Hp$&;r~pFDl$)R{A<&vMH-emQ^k{DpG@-o0?1$AydM&tJSKiHq;OCyDnF%e#o> zz4zXOEf+6dydYX&^|y%S{r7$=iQm5eJ4qnIL8>pldtrKjSjQI89$XmH`TqUg?|&*GvR+M zVgCkqeE;2d0q4$~0bD$DR=|5_&%Jy0-23M*yn8_c+?`DlaKD3_pSR>< zfZM^vi|<{$02ffc{O!dHzrApAw7hWf%(2s_-Z}ZFKm763i4&(!p8Wmq{_xqQq2K@Z zgEH3&w{4BXyurb4v6?s0)Ow0qOVjIUasx?ifD*t^_c8PahFNcB)&fk-YKB^FVwS_W zFRYmx0EVTP(|9L?FE-0s4`ZgCM)RW>`xwSP0i=(zeV=yjGQ0Qipq#r&$BUT#1*UYLy?Ve||B|Ebu%%|e zRDH-?bGUTbe{;9})YbmaK>ggye#W-^m~Ht^NW zZ@wkM5wFaZ;Nb}PdHW5?5?Xod$m@K`HTU)#CyyPG1WzzIA~^=o96S2f$>Yb4pO^;D zoIWmzb7xOV;_T^DfHS8~0#2WVQ{%*`6UPC(>|dTdbwUznAi-x&ojQF|0LR|Wo<4W} zERVD2&HzBe5$x9V|%X1elNW#k|B?<^ea^X#36CdPgoUpHm1@b2e*bPZY zgyL0k*^pX<1Wr-lGYqA$BmBMydLIFfnk0nd=qvctA6rFTK@n-=(kr>3>{0r$_I>|K zItS%+{h;ho`-^HfP1MVytmO)d-3%*AuZ&;04%|M$6*r_Y@}d-1~i*S;9J_W4L%#rjIuedW$A748ShT{|3> z&34NMrya^IR?8MB?Uv0B>lTM?6ToTPNE0jI^Ii(;pz#j)$k#-5n#m3dUkW3^z(>J$ z+j@9a&|%+bvu$F*nB53ZjVX2$W!_9$wosOBq;)%K*+E$!plpv2_D4v^qm<)u#`T1W zdza|t&SSxzjvc0zQeV)35m90OjTJjI2jW4_E4||$l zty=oi^7fy&n_smzz6$KGqU#ssoj-Rk{pX6#L#?Zy`uG3(JRku2%YOcge>`|_|G+@c z;lq7>eS7xpeWAB!51?oN?)`iB2$cgu%DN~Z2#`w-WMg%x4RD@-UO>Xd-|Y? zBzpE8kj5UamOuLT9gxI8-(emHdk-Dx8R*}CkO!JugAIfA;{OfB(w|`d{todu4y$%lmp?+SfY(*blX!`oV#N zeFqNq_a8pc|I)z&FAenlaG?K{LkE6%_`txSg9io%{L$0bCy4{oTn>4cfq{X8;}_6K zE(iJ#P7jE9B%O20LkFjY!`=mUf_DfzfoO0{eXt)A?T_BR9%=MWZ|O%YsQn$E^)J^D zZu(Ktp!|>Rw(noKQb;bSb|sBLiE0<=r@yzaf4@I^`}P5NegAw9Cyo72Or5DHWRpha}PW3OUEmWK+ zzbJeDI_6)Z?0XOkD*w|x|M_>g#{0|G?q?10cYCZOZ8D@9pXD+b71szI_4)diRY-&npKH_rACv z?xR0C{L)We{n3Hm{$Ks_U;oeV|61l)<}h{G>E$kVt<$`YA-aIjK}Q}#uB54zP(s(< zDClk=dQRIKfXlYhZC~YauI6B0>9j6~Iddsy8O?OT>wXl~MKQ|>7?*|Yg0F)K^BUZ= zmN2iw+4~3>oyD?|gtrLo+qjQ*9S=~>2N~B+lbf4u13AEgMgCK%AmjiN=t_dC?YBXO1Hp}ib#iqlyrxHw1l)uOG^vV z-7xHD1{vP9mfzm*w~zgO$KLYXdBf)A}c2neaDX=u-1yu`-N!6|g*sxVaK z+KrpiGO}{=3L2VP+PClA)iHeZ_=(X|V-sr|TRVFPM<-7&@0YK9Ui*fGhK0Y4h>VI( zOiE5kO-s+n{7_g_{IR68ti0}XeM4hYb4zPichC3UzW#y1@rlW)pVKqHX6IJd);Bh{ zws&^-kaA%FSjS?aCHtFPXF$0yv9YnR@sM(1VA_NKVx7UpxxkN0A*qIEV0o5Vz#X4b zD)@atEdh(5`pUV7R-J@YtU}`#SCOKjB>VRS^Z4JA3@zBHT!R2H76xcMtTO-%SnE0h zHhNXQ907SUN5Gyb+s`AQFQNMIO6b}VFyC2?h;G@1Z_dvzIrNhJVPx{?5un6+P`$TN zaRkg}$449i_uqJX!v8k^7joDm!jWh8zPQAg(Ky!7Ut;d71)jbR?;-q_ zF#)&Ixk`%45Hcv0s;m|s?fe`Kyv776M;A(BT?F45U55~tYa>tiW?SEyNX)4kwBKJY zMO<+Q1(yeRn`7a5nl`$(q^oUrIt{5PW7K(*;D=b|}4~bckLCDLD6^miW`D;q!Y2 z56~t=uknYYyg35&yNPiBDFxC+kdmJsMSl+wdFKyHoJwPxzMX=Ap^|`Bnd~^Vk%$pTGML1I!ye=9AIyQ0w}q zE27Lm{q-bp@1dg<9qo)Kv%5?0oPK?3ujF;u?+}kbL#5>%(e~f4k^+8xjHRLf8u3UZ z{&l?I_aoq6Ay5fK(6=a9RbxAWUJDeopdb?|mHr8yS0fP~beJn}B8yr2an(r9DalH8@bhs6|Dp(%O<%hJ0FAg`Vnv$ zl?W!rW%mX|wvb8Y5U%4+_oZL)l6d@~Q{aijT@mdE#VBw+H9?!o9wN#Z_YWvkag0K< z_P-As3Wf^*A3!Jqc9QMjzg3*IhbSihlS?SZ|4xTVCv%XIg85H>;5k{!4}|c$NVJFa zZKflI|0^(-o#Z}Y`0+5LBmHT;<&%x=e;X5(D$bs0<^*z)!lJgLtN!gxD3r$dlh`LK zb^cZq3LpTq=Ssp)T<^z81~xl6?YsFycq9orGSKqh8~vR|WtM+W&H~L7NwIt~5qXZ| z^P!XZX%0|EB7Y0YM^TRZhrwv){~bktrzuD$MrYsO!J&Ep&pH0=#BI$d51*m3DY)FR z&x5BdJ_qK~vK${9WCsNdSyoL?J);2#i# z$42qmzEYQ;!&<{T+}GF%)pN)gBqVaY4v)&A+3#C$#A)b>xGgZODCEzYdoSQxh}Dap z7ihR~L+kq#3Ub4$^JYWn&|^+DbUFqN@7@0iSXcPBQ|o_CTKT^&0id;b5sr=`||(qA?tey4QXFaGFzc0`7YZumshRwc|}CLXSV2wGZ5#J+6i< zU~9)1jZBmnCv(v3qk|6e`+LPo`?shH43z~M4A93wDh|mqYR3 zssMyO3iIXp4=U)xe!HCfZ}KvS z%$eS=OHNP$={3iE8JRu*P7`u?l#t2(FHB(;?d?2h8k;zdDg)60fSA?awaKK){#3R@fxBMoo2$ng!z#W3zvlF>lhbgOAYC~MRb`8(N zNQY#<9RYzzQ|f?LvHgEZaei8#{k4`rZ;Q6%-{e<$!^@c-A|>CXf~XQasT_LaUK5m7`(?NM*q0q-J{|$90-@U>r0{m9pP!Xl)t^WA_{!5({2`7{krIuA zefPd*W1xpdSR4UysO)tLD5uehqO)~WCkYO$p=6O&Y0BzJMHy#)f;phqJ^*W?BxH9` znCv7wfgy988%0O|l|y`19fr;P?zeqLIHAG`0tz!5+3x5!tuXNl^}kS z@*~h)mg7_kwhxY#?C1sm^4FA;WdE<`$5`)0eSO^(_VYM31f4E=k`1~`v+4GCQQ9_u^ z>K4|=EAj>-KA`qcs>qu^X!O}e=S?)NO&$&0Jtny5e$}Qgyl2;vZeG1}P zGlwn{`Txw=@+ZU*%|ib(UD`A-pbY;{@eMR`p)7iO^f37oH+qLg1b?*0C?ae2SLW>p zMd&<^G}3GZGW=0thwj+*RKfCgE*RLKDED-W)8$UFD8&MF-;+iL+6-ufLf49=|8`4z z{GrkxSO~b{Un$7EY3RSlH^NVP|Ht!D`~u~(NdEeFvh%w#+&$^i$rH+3Thfyk<#Fep zp(LJ)1LoD1PZ}asSmU@}wt=)MQ{E$^%KBm@q(pJ#u8!tAB+^cqG4!KS?-`9*Ujzgi zn2+<~)jnGg%_36oDqWHoUfhX^-j&(fQXKm7rtEQ0i;zDHy}e=R$fvhE8JQ%!(yKmhvLMtp4`=`*wHUsi$v0o2{?Xye;|u50;iVX+@!J(3fEy`3GPB zqc#73PgqbD)n7|KRCu7n4y{QfVPHbz!9Tx0jT=+}OY=V)acT=xKKWBIc{=1Y`2JeN z&wpH@iZQo^o{Oz3bi1>~&^{)pr^B#BDbL2%4aUIzta0|2?-K5h7GBl9KymhPX7UJ- zB)QWU{{Fqq_kms|hZ5DfbuRMrKYY~s&GpDW`>rfLUrmQCv(oQ@H<;gT6qBrtGGZ4j zO)QT9mmJ6YA9s56LE@q!31;+ci!X1Ls5LbGK!5!W1}YM5{dZZ}knNUKwCE!%4GC4B zGlm)V?-xO$Pf`D908bn$YNyt;$@qb^Naw`kqPYZMNrhmka zx6afTxqOlpqHQTBlB@ITtpd67sbTBCi)!#}#|aL-CE8wKxaZA=J^;A~ir65dzY}#0 zfPs!8bjP$4MS;+t|4H}g@IsFLFS-RhJ>&nZ2u8CYlw3+^3!M7Nf7e-$jc~dzx{U46 z|6N-BF%A5wulpN_mrl(6C$W$hC&$ba6=6g~|H#sDCl^UwXum0SZY%k2n7hZcWBd=&l)L{WvY6u*mI?bfOgAesXnkOb`F#s}pop z^1r&aIk^S``y~I%{Xq_g)YY#aCv5{%#Qq^lx|U9)L0_|^xWMw(0kRXiRDlk2H?V#| zulfktCF9*glSx=*T0@= zK5I$as4QmM*HklafotnXb^sP`dH0Q14%a8|@tIriZ;l1Rb6%)4Jb${QOk)_`{tDgvT~~8w9@d8R7AS7di}iD(eR^+z!SCDH$ei9o6K40klGIPaAFVqOg$Jg*S@vuTuebq z{1pH2ZX_h-`Rlv|j`gUnw015=3J4eCBZ|K3%Q~}mC%eK0cv+z8hT zc1pje(bO)NbxXbRdlzw|NnF&V!m!IGCHUpUHVw+7 zt)6JiI!s!{+|UICD?`OI5 z-&>bToxbaW7Y;_#mubc5}kBl`pTUNMY=b6qXIelR&)4mFDi$I-A`8Y4eK%r-6^~&e!g!> zXt}7;<5Gf zBz|TZgA0x1#IF z>svV1mpjU?8JDibY$UZtg?PE9QE(*jRgfQ&k#=91eHlKk%O$ap$0SVFlt;8jd<4{Fg{)}DY?p`0 zW&cdJRSTXoRcsneR7sZ$YMx-Slfip*pLzqcEOj^YVt>~)=|ZF0t|*&tN^c6jCDF%k zzpY%p=WN2e--3sHNwGnOebpxC#*E=Rnfc9gHKsX7z*#)Hsri1eZ0_Ef;^4KV)kUX{ zit1NaM~!=#q?YWVdS~WLy;~3m)e#^{RKdn$9`oL8h}pHQjAGf(RN2VP?S$6zc-odjTOtcOd-ehA>7S%K(`33vWmL3hCEr zci~CHjv!>J=MQoW{i*_ATAD|kd&{U-1ZIwP&csSTu|M#?+;{3l9n4+Yy4T;lHrEl_ z#fsrzqGIC|X&WzLOPHE2ikDqUzDV(0YL)d8b&w#1>UFLMfEPVWzL^Z6eH)kgvkC!6 zQpiaNo|N?S=^;ZBMLj}0^<6*em@nIn_j8H2y$Q#59;mII6XV>Q{X{}WV7mXAPX47D z$1r6X9;~9KZjmL|an?_D{vw!x^!cWs{(m}cy!wZgiC>o{>ed$KE;B<4%ec=dV1B+X zV%i^@5y@m`h;plU0lB}$WnOj!Ywy`3{s3C zS{k__xt3NmVWtL1+VzpTx%CW1OA>2o>0tPT!i<1S7at)3V#ROc zehhukwJGlaIu$(G)ZJxE$BV5OaL=;1uDkGC-FC8A&?YC74+~&mL|V~n|3Mw53=v*Swm7C0U*6anD+uULC8*I}C=6K8f{$J9 zW_tZB+nMIxMD*OU@hyT!;V)es+9U{ShbpaShdiiD?nS;3{Oh$GstTyeYOB|WmNL~7J)9=n(Z_5v`=501Pd9yj|eDZ4Tv|o%Y9Z;*G?nJ23joIJC zU{TW&tmfl>uUy_q4>mW!S!`8p z|04w?J012;)fr==Xl%A?2Jwmc2$=Y__X9EwUc_z*E?6yIayTw|GAALZN6njE@qj~e zOsu%d{t-Y8{-Yp@GvVG_C%N$!q!@*2o8_=?hc4p_Y5hOHj92#}`T6X=C)sf+_A9<7 zj)nf6$g2smwJWqMcGWb~t)LrJoQ3?9?M<&Ps?Ljy<=7HI*H0U#as4r6WviIZplDH% zvHFPxXLh;Lfkf1W(p$D8rHG=#Vz#0PkfvZehb$O@EyBN-yBSv%OVb5Hpf!4+Wn@X? zoxfIVHEpJ*Q5PaUty&d#Jo%>&o`5O3xY$J6oa;ZRCjMH6EdR5T{ae7JS4Xu7&~EjI zFgwMwzrA}xmr0-zj-65!jjuPr+W23)#HV-2$C{CQbTS8A9_%SU5cvI?8&l;sH2uNn z^XB(@xUc`c+dGTC(n7xt?WvyME4?!>4*BG4oJz6;cdb0LyqTAHpfsMPa<;$8)R86m z>CmV9o9k(xx7+<~YOC6p`#i)D#S0LcrRk!TA4Nf}odse3U;0uUcj|xoc)TfGvgtHd z4}EIrOxHmeyfqZ$Vg=13?t9MCZCjBA&1JQDsVy;53f)X)usZM{*_eW?&uhj#vE%Mm zP_dE)Q+)-ydIs+9jP>~tzfUy%SQNF|@&s%EM&D*$&VgXEKiOv;yD0ba5uCgDA~<^m z2X{jCp$8&e)gLSEQ)+Z%d}+lyFWvUfShsGMl7RTTT(`F;@ekX!C#JwBZ((6<#g)&4 z31v9SL~mZ>EBIi=-9t@%W^hQ+l4FQo?p}KW)}^djr|{gI)S=OVTNg`Wu^J~!j{u0y zj4PXor{W4}>UeAAugiT5+cA&>dt1jK&#)fnwhV>NX>sEo-ci+_+`PxZ2VY*_*WN2= z&#SuA5szTAOZpmwSg}BgR#*bs8TpEJGwHp!ZH4}b9NYoQ0vc6cbHh7$D(CJ-pP$Y3 zK=Pft8}r&kT#HPh0pUN(jcPAz4kz6oNw&;r`TQupwF=f){=Ln8T%LE4?pd=YR*9Hv zaoYiO$9IH1T9-jO?4EnM042||T7!e8$?Y`x*0|Bvzm$c3vZj=!O#CoaS<(0O4`~%$ zW@+&jT&MS=g5@|5QNEl}Q-2h+Y@q_e+J^a?J)DvFY@%_Yb|V<4d|UUh>$&N-h0n@g zSGGW(fiG}Dit6EIs1kL(B%@tNsrB147Zr=q0T^k2on2%$F8+eT=Ar4&HyK|`)GHJ( zTzrjeUgl*2h~XUvsO1$&PsEWlAvMEueYa4y+6>r==0sl8gDEdkL?!U&9Sa8ScC0-4^P@p7S?*td+WGHqj58&N)!cuCe~9B zhhPmGA|2|c^I4IVm?MB6_Gx(|k7o5_SUJSk{8@-RCaV{3ckv71+8gl%?dxav!PcO{ z5ac4aSfB1$Nu888>#$)-n^$QRn|a&^Ry zVB@39EMRDebKixxZrOnSqY@vCMf4uOi%SHvR~>$EnG6S6D+LT<%`3MrU80 zlL!_V53dkdyhp$p*#l-L*dgvBY&iq#c{Ke#{&kpjzHZ`)11sS5)io1;-J< z_wUUfJvcz+1;kLr5fJ|x`F@(Q75tvvLQRaqkS>eV{fD~h$~+}e7HnX_deFM{`>w5)=v*z!_&s=*LZVz-Uu%}pK^|C zGRE3uE(nX!ixyItrPQw-)MFyJ@=n!ZEE^R5x$$TDjzyz^3`rsXGdJ&iUz2CqZ^gUS z7wzDwTSomg>$)460rGYsz4%2$6qcTxjO^~bQfJuP4{Wh)iDJczp|?915^>(Sd`_Gk zz68s8@Z;Af`oiF(5X4kIw7EnNa^U*0QZQXA?#$cOpVK{4M*Clr$ySd5x4z){z54Ds zfpeu60v32jK<L7lfx>h9AX0m4(V*A|>2`kg^HktE7Hz|lvD$o}QG`?`lo zmPY`L0-V+uxJVSZyBl$U5PCri7d*g+s|hBc z0P9ErwgeDHJ9yxs)Mf?=~{H}@$O3YsuY(c|<9fc+i*S{<`!7U1#xOWrF z+}utx#_VwoY=zl!uTSam%Fz9YcU1~d>U`q6ug0KkIFRqPW>nF zu??2AY`H8OmH+r|WU{?*_T-Lq=FAZwqwOV5m>+}rN|ko@)A!rE&0Kl@+82o^IGKKB zmZnANCWwfKziHI^_3a#u9W>|0c(UM7sJYWT8_iuqLfDlj2(4heItkXx)>&7(4~S@C zx#I^}UEBQ4PsFZU-ohaR+j(TPx@J$*lT->CbPxDCnSL&rUlgmgZ9;g)_ZDA1AR7N- zUG|K2sLVJXZ>5bZN%h)_YuLgTeSFsk+f2oYP!1`sM~`L4b4V}Y*q93Zh#J#oSry4D z(9x9)ywr<-1Pn{??`ru`xSF|SkP-}Dv(H{?#VRFNzV554+hNodzH-iTUO_?(evO>3 zWvM#+lB|X7xRT>d!_auA+;zbiQXGCN#z)ek>&u#7UOiiCnp6R{MUsF`%vg_!2U|>C z9xnX1G}V(>;-bgzg4B?#hm>QYxR>)mn&_BDGeY;9GL08{ZGQG24o_ zPjT%CVCE8-9RKKjEy&*%*U8ZgmVTvgDw<&OoMi@dVc}Bf4@O(-l|(#jU6YWe*(zb9 zBY+Xo`hmxl%A~noS6`Be;Z2arxSwnByhk)N{F6uVo$}88TY-=9I#%Z6ft`Tw0nZ=X zVl7`Fi?5Zx^2#>VgzE0TR#guaTK~ETAsfAS!&eF`LmdOpk8!ionlS5y00X|@v=ONn zp0VcMIk0e8KB3Qhmu5Z>iVa+Per>p5?8BvAm``ms-RR3bhSqr2VcnQ1Z0Eo}w#{6h zCyI+Vzm4w;)^DHCa-M_V?|hu3x9i@$FUz)Nbsc}yY6xCMDa`O5kWA144LMJODUEDy zxWbv?dbe*{78&)9RIf~1C0*&5wm(^i4&9?jjUJi!5q0q_7w-s;6WEJD*EG34Emy!^ zW?tnhsuC&llcNj&bA{7dLkqk*ee~}>raZn8Y|>rXMcn-a?XoJI2)ObZKMBQU=RKt*)hrwPlIQR&_%-z@-t>;V<)}8{{#g|;zmdTps70S%U z6ycH=u{KFhp)F=s`YS1w;H{S!$V93=4@?F1cZ_l!;0mFtq{vj%97ei1dcLIdF7X=Ea&=Pb%Sg>XAcOv zJ z_k9`ttFkQEh1Pq-WObDh6C_2SF0DS>R&<^gUrQNO~koILVo zqrbDEF@kg0s7{~WpIZI=#lzaG!h!n{u0gHvE$zwGCS}uvo!P8RU1J@o=Gxf7X^AQc z2q(hPytQ&+N9^;N!^BS~fl(q5f9Khxx%FRr$<#qA%#~(z zf#!`>viEw6^T=oMRLVd3KWu)eK7?pg!_cfnC8Q>gxrADk^km=8+^Nuh{sojXp!Nms+F`aVu(Pz%KtUx#~% z3wpf3ct4`@T6G$8CT|}$uHmpeu3<_YnErGP|EG1?I2)~aV&z9NQYCZdZ@3vuoYukA zDhEzgWYVj-6{)&Sl-n6E&ii4pLiqM#2eRknrCfWxN`9DV-WGCv5}?yP4tX87s4f>p z&UiP{aJTQHSi}~u+jL>H7R;#7mbZV!Gz{+J6jl&SY?t0I>hrp3yu5Ujd~_ah;RZu* zA#)x4XY>v415Zum5{ak8UmHDo+oE#r)gR^Qp za#NpBk9NUUrryn5#`D6b>MO8p86iglUPoU37guNOikK^RU=w%DuHH=5Y$wgeN7&9G zFjop4gry=!+Y)c@PF*aOX50*?u2+&v?e*x-#}54oLd`k7>ese8_VuboWEqEX! ztTWqS9M~ex_1MA*2gPDzH_Yh+OLyPy&ZKQ;Ip3OX4J`CL_&VFD7B3WRT3=0g<%h0* z`6rK?ccz0rcrwvoADXfuDAT~Z%b9HWc0YLKI#)d|zDjm*pnC+2fv0_};OscTkZ_nd zngLk_4KbjtR^R9Q!E{x~X6(n}E~Cf<1L68-r+2g4xpj|dFDT23?)8H2lYaM3a*u#| zyW1ldzmM##tJY@&*O>-!p@_{#Ft76h)*0fIlj17i7WXqoV73VibUx&2Q# zF1KCr{9tzNO@IX+_*8B{9jsTt%g>E7@cni0SFJ;{z;)M0`(VG!1>N|OIXy&5CF8j7 z5%9FEmIbw+#LA1HrhVxhkPT~q)73Ux?}3%fmd1kB5ITi~!H(a6Zg#`#n2xvFMD84q z4`o4IQg*;QybYdQwvWU9pb6~ofh`_}tvHG9 z;dVrK8sW~yA2Kv?1dM9vlut*>zH)wVq1wX#dUTIRVq>rnrcqc=`QdfNU z;L9vo6dNA0n%4A+d~g%hZJjf#x;4ietRa5S3XEqL1ox`3zM-cWzccg3Z z_9b^gjezuVK(#mC@WbLa$l?1)1!?Sk2Q3p> z6}C^`h_(RwZBL)7GwZk{qQg}lGFQFNDZLU}=#A(IdgLC@bp(7!nzwm@FhKTcg-=|7 z2faq_JH#0_u9Pi}xZbdO&|%%>dz zUZ8G%v9KM2PvI9b3xAy<@H=B-HLMilXd$78@Nb&*RiTwO=lyz)c0(3cdD0h7!)wQs zClD(@UdA5*(mMv}`h0J<#up8mnXVnoATY@`b7z!Ra6QvFm)vuQiOpg^kR4z@fHYn4 zzEv0FN>^Re1$7kL5Y=gt>#?Q1X&0o|I#4_4H97A)FSP8v_r15bBI>znK)`^(4%j1C z*rIvwJHk)NpZxS1Cr<~A)5TKrE9aNzBuTG4Mm2o8KhYXfCD3K0l{;GrKhrp9pTDQ| z_I0XpJ)I&xi@||`!02}8bZ(cYo^?!GcI>w>^#NRd1zcmNZh6e)_wqH#&Gd094>)jD z#KgWqfory6N=)RKPAg(KPyiQbpiFclCdpRmO6(`KY-X6d(amZ!7&KG$AjO8vt_P{R0MRFpF`#m*Q zjwr)w!J=;--_+SzC4%6!nM)CX%|r|t0|$rCt#!}d2uu$F5z2TzdQ52mm}IgO8Y7sM zb9)qXHqIf1Tb4mQ>?H?bvN<#%A7X2{WSj&{`GpR5(QD-ENfFT(u=RIH5T`K~jW5gn z&2lQjRwW1x7+l0Cn~xA)5q=r%6Ke9T>hO zyh3iOI4>%Q6sHDkpA*k_5RhMmU7NWAc{Rwebj$d1p|FVm8cYunnVa1iqv4lA?NEUw zzvQT#w34|ie8qe1mSAkILhwP;99M8p<&|vXyTW#T__6kjtq8}ad3`BE(Jl|d@CW$6 zB$w}Lt`-|qRA+>x*TxI*KYAwEoYn!pC=_-$c}l*ArM?pICjHTuhdxtNm9PtkP?*n^ zNpbcfPsvq=k#__FvZUW~SQwhDxU4;w?*)G~Fn75QHqf4!6YmN3__4;9!#U4msye4- zEUKT8gfQ*(VPxp(GR&{VeF`^J?E1Eq@!UjpF+_qcz_WTb`X-jsp=tVxbYz6)+h2Y@ z8dwAGj)0u#sOwz*mzCq|onCD{c_kVg`yqcVvFV8z*jEVMxgC5M8LpAP;y6(Oqt}1E zY*-|-`+WDobucC{0>Acg0{x$dd%FFD)$Jddo7oo(TE;72;~DId=_}-qQJH5X*Yvv< zzrSb>!lw;FbH**=A?4;qMuEbZxp_tc;RGq&PcbpES@AY_DV*~IP`jtW$Bs$u7P_q> zIp}U?m(T8GNHedIzgvwVfo19f%K?nUJUK3tKX3|f(yuR?7v#eQV?kRWn3W*NIY+A*j3RO48Gj9 zd0jr4_IOc_rrTEsDZa(h)Dr|mQ{zYzPT4pstIGCI{S)>XvacPuI z9|gYFaIhz@2c%}V#GP?nJ>-;fzmvWx)Oee!$$$=A&wL|mb z-D}R#EkD8uu(A-D)gHX4C&<@`2i;1nvAs_zL%=sExu$2x*t2{#m@(Fzw$086umxG{ zruvRnNfV!%`%huE*;}isn9pMsfcT&Wo)jBs+DFHaZhjd7GS}8se4Aw~$TvhMas>`D z`2*OsrVdF26yl$-9(M0)L=P|Ohiz}>paj>v|`l{+GI%I7eS04WVZ6Q zi6@3WO~5B9=oi1y*X8x`de5RLL?K{VqqvCcY?))r^#`x*%MS3sTdY{~G}H2T9R20@ z%BBSU*Wy1XB8n-Z118m;y_{WKNLuH4Bo|s>?RO|<{I+vWC!HhJxcz5A`yfxXUA)^I zTw$)Ln!wnOlGQ?Cja+vLRq$`H>LC2qWBxEqty#x`AFpFo zwdm`peVVnz*@|?P-lTO&eF^@Sbf4NU6e?U+wppdorq=3M7K|9a z$$ZKv!?nq$2|#7(45Tdv`-6SctnwW<+KnY+Vz=$t!;uZ(-Cf92^T_SwO9qV#nqF3r z(cLa8wtz%8a@Hyx32CSxn^bC~Jy|)NP-57*F4l`nQP74t>1&gxZz#jQDxP@H9o*ba z#2J}8ajLGimpDiOVM{D8A@>zh&F&_K^!Z&?47XN3Ctn#H%`?r|s!8rjR+f#fiSMvs zq0s`sOb+WasTqhr^g~>ws@pC52Zz6cGdPU&+bpVshb#dHAR%MTKmuW$1_}os(-(>eYVe(u+R%Am7^-ySnKJ z&ShsPOV%|KaZ}&zB0#G!bR-&A8Ha1EfTem~f{<`* zTsJM}lE!`x_^e%>tlSEJGUp;7<~y@gB6*;RSqjyjomYA&OnkPVo{$cnTKd+!!VaNezx6HLTMq|{!}AB|8RJtlEiyy~0~GwG!2eg|PQUfMf}Qlv zWZF4;E4IOVZ-}pA&UBB&)+>Dy7J2lbA1E+`h0C2$Bv<8NNf-Gh%bEG5jK9?HoEQnW zblAA+Vr^?^m)m)_r0}0^3`FqFj4{qL1$ULjmljlg6+>`;Hc46f1~+QSj?nzNt_p;% zuggq5`03upaie~iM}FgnTA~~sKL-@g!#E&dmpJh%1F54>HcsMglY?Zx80Q`z4U4*u zR@c94p50aaq*TU+m!tSWn$x+?akfe54vtldT>?{_m2S#~IDX6m87wH4*lZ$)8`PF{ z^P3dHl2a;UYE1<<)~%47hNro9DD>^@p86Ld_HQwvp+O{)FAdhY3YMG*Bbu)VTy+m| zNXD4Xkdo^sV9?1LXLwC=0jr_}(wgHat(Na8GH3kyY(8rqV^NK1It4$cZrnFtg4YHS z>|eYa3FZ}{cLqM@>WcYGt+xHL_scTSWIX7=dH730OO{P!yzr3o35DEPm=!?t#gN{G z)5i08jkKgsqoPsHt>!7ufF!Y}r3`SdGm2h~0$%j-CSO*G=P!3t5VU}|fGnz}n7U@l zbwJxSKP{pr$Dfx2dlLtTvwmqmF9m^gGx^@TPxCgg24((_)B&EoUj84HuQP5+(XPR5 ztCur1N{H4zm>)vD0>D?;+d^O4_u=JH6bQ|`0$JLfc z9#biJc<$rdP;Ms0D=i{-F3`mw7^>+tw+2ZIv&grt;7@eooYUXgq|F^x6V3`%5vg=e z3>ZK2QQ@9>Yo0N$qt~nc?s0N(RO-|7Wo3ao~UOqbreQIfJJoaqYl zvz8$6)5s8vD@t_3kiif#WZ;0urvO+190UO4wBOmjKm)Z_yIh)H05-3;@@X*0W(6~aU5(%gpk;M8Kr=+lNfo=oVK;Jduj|RhMn1v$TMrVftX$af$yU56F*sr| zC+VtclI1lq?@C~=DrEZ97_#-{awK3~XdVj)1J*^EjNb2Q5c?c(9I~?~ta>gO+b1B% z$x2f%bY_w&5^8XBjb5Rhi6MN_Af|c#3Z_i702FIISw^D`Z|2sSRM%fAYkm7gKyrvf z0}XV3Ps6#GA;URe7T)#-z@};ApeLye4a~veOT%83Q=QC!=>T^M0!Ur_uZQ-y$|Oq2 zHAD9_J_>L9*h!=Iy+pw&p8CiVZ zWFXU_JAb2mUDnC)m9i&`&?uj0Gem)hi$Z+{GwJrlMh84Ujs1O%TS~anyp#{aFpb?} zGX$e8Zp1K#C3D6-#i+^v*osBNv3w<_NO1rr>=?oo-q)P6ft&nCfL`^6`t46kBHtXS z>tC`p4Mu_YTl#w(9GGG^yW&f$b<}0Ir8!t09wg=141eugiA^Z$duZ3#OxY^GNl(_} zo06jse>&GaJhgDyYfG&rhvAxezJuM|xW&ctAls{)$kp$CGre{5L1wx?g?VJg&;b-St{qFH$4*qEZauV~KJFtZcaQ(=WPtJT z&FsvE0_G1h*QMfM3eTiixazYT!tKpw-P?E6X`(r34Duast2OU+kNbb>WNr6o2Nuiw1D81_^QVB^$0KU@|2RinZdij;G(e8APR*>a^Ja z<)i9MP?d*-3-Qa`OQ(5+5!VAW4c_78!JvgMOTHn^RJKrIuTX?S>U33FCnFauS@oo|FU_Zo`r*RLF7ZK{P|3U5~6D1yQ&`jL) zR5Ut0WP)}$edGWTF9JS-O`i~r1DP~~b+QD6W`B*GmQ+AwS_skEA{)$5j4yR1U7^0J zGIT!~xURV<#Z3(u_l`cR`lUrm1=}71zcV%?QeXU5f3?H0usOIf>0-k)hugiN&i{Xh=hl0{15I|D^(qT0}o0L5e&;ZKbp#ZmNy|X|QIkyNsYeeR2liThDH!t6^W#hcIM|gud zPRnkPz%VY%hk!nYOj5;{iR|lD5dFVM_F%ri=ykgwSI|t8cHNuq_FJJ3Wp6ORm$Q^# z`KP>DH<=zrlF(Je*iR(0lH+d+)s5Lg+(c5;m7z7X6G4Qyj>$}Cz5!Fg%bqIuDqZOz zV#zj8%F0PrSC;6=1T2QxT0W6wiPlM)=9G+Eiha;Mb)TB;LkCTv_3vN8x4SrkEBSWYgt+lC;Mk}rbmZ3DnIjS zAL8|T5u0NbGqs2k>H!YghP&!#d7rUwC5{^?1PRDtjrw}16O7G_#Q&UHlNaBRr_q8m zt2TPDU9{WV7OH-NQyB8pCtcquSl{%)#(O41(F7XC$VCMShFLvGC5e#rt>9h2Qfc@F z;Vm^k4GaR2sm_?qgmqa3Y)Vy28Ft`OCDDY)5#YNGc0WIYV97O#KT%0G0XqmRk2w5* zWWI7wH=ldi>+k+$OYxqoN zW~b*M<@6Sj7r<1O7r7Mkrhytm^yMJfBAQL5YFgPutYk?5N#aG=qcvk{mi?KAtf5UB zBQfNQEI;R9zNrrRcWkFRm|H{eXj3DzrC4C#3&v5YIKzwY()4v`34?=GSf(GkC{bfz z-@$`UId$KXEz{qhiy!d8OA*3!6mwz66qceZQCU{UhML6$E^DMf_@Hd=UD4w6E@B*R zquhIWhZ`J?0#aiEaYfx5LhE(8F6^b`MK?=UR>)QfC21i)CJ)~$9Fjqq&c^FJ*=pGZ z6Wo@RvdlHIiTA1=j`!n7(#$SUvx#mq_WYP(Ni*xwk29xlxVtNnr5YT#?zV#=f(p+50T7nnOjy|mk8I(vq(#L5O(UsW+!-RjZ;I7+f2^k!%#eV@lUdonK?251I48+yg{1)vwDf=wc@T^mgz0NfnKPJ>}iR`k!P+dK3@> z*qc8T?v@*sq_7-r?RCEJyZ6d?$`(@3@#*d+($1g}_k5o-QAslu(5Z+GougC@a5AJP z_6@nQp1*M^7%IE>B+~6YO=G8fd?iQdw{yuPV)X@0=l$Lqom1adQ#886?4Qf?a{|gT z6>t4ZY+g}er6}YZ1LEVnSlv1$5h9m2Vaa9g@pTfJY1`O|E3|V!1{oG5v4738I4|`?w<w$#O8y6TsY)cgvmVyQAf5YoX#{KgL#)EDzaB?^v*jVk+~gq+oc&gb+ad zg-t`>iaHUh*4WS_^Y6d@m2h^rVvei45N}_yfvv4MI3(nJ~^k%Vh~?4e~WP&U2cZOp`+7@^k_6sSy`Q zaaBwnDkuZctqk_Cn7r{0jhji1m)s^T?^W(=P^L~u!h8}4)+?>}#FW_hr{ZLD1ixxQ z+gx4=Emt~@IT7+uaZ;09cp}0Ua9yKu649J-9wR0VuTRX_`2!!V+g6*P#F=zpj5yw` zDE-y9>!r;N%9NylD*FQr?6?;XQ~_o}D;X6XSBYQz@*y(v?SL-^*tp}D0+>Q$y1FQU zHaMYVXrKG78?Uhf5Md)K`Dxfqk~;~&g;i6Y!g)aUQYcQD7GA64OjpXHilQw^ZHv$+ zwJ}0+{`A8@rml1S*8M$kl2@2~&ef(ee|*uYPJ=)DjV}ue#K6kUq#O=xO9k?{N^YdI;``n%XweZK^^q8>+oByArIjr+7 zs#I2d&8T}2nk&=~rZ&YgbAbSRQtEWX8D&|Pbp8D))%Q1e1VJo#z6lFgeO*G~nWk~T zoZ=Vf#(TKNDMVCcJNH6!6=M$0dF$zIl4(eoEv$}X^%BcNsTJ83-xwy=5U}6(QX+k1 z$}Z*W^>g=#Y=#!se4hmc)yF10S}oG@01(_R(yRd?1*#3N#V}{C$i4ObHI`){t31a^ zZQX&>zMmLJ!)JkyO*~$TxSK9e8?HtiQbt72E^Z|583bjJ7ZZVIcDxITOu5`rQv;sb z;fcR6d8t9nm{usZdc&2fl-A)nsu`P3DXTPkA%!2pym&E;vOn6-ES=T$$h~u}b*5P5 zYJ@ZwrMzp5Vc*mD18#cWvxlA9cI=SuM@~KT8(A+@ zW9WlD2b0*VJ|eVCq)aAVw{B4I$*@gHTx6GSFe1Qez=Sqo%7nv ztu}N(tZM#4chUSkp3ciT%y%Xw{V;k9!}gfFmNYs=#Y~fAzLrJLDL;p@DF8}s4X@q7MfXhMN43@j;S({%HEfTyx6f+A|`T9DA*K2 zR67=KBu?hnC1D#Ci(cU5BYn|v_qN$J8==)W%n%RD5rsN1&h-;MWOFDDZz-2^3evWHFDUI(v>m$QK_du=!O^M#u-sGsx zYmCXR;=KAxBN00$u8LIW6iK_Pz)N#7q=w;wG0oB_ zmgc~ea+TbF9b1jh#*0UAlZ|2CyJ%V7;;b0abO0CQu2W>`4Oa`d24t9-l9Kr;=X>=q z_|Li23l1*)>}TzftT9Ng+K!zPWth3nO_D^B`Y8Y-_}1ag2xrzLNri@BH~26$)Tr{+!vR+UG-7Z=wv)Su zsQ9dyjHLKP?-{*lK03qqNj-U3>MM(Y8*2{s+;gJ~_MdUIyYjj_u{~SYRTY;83*Qjg z>CKX9=}(%;>?}gzFLC9J!8e>~tS0xSo-GL_5^jgSuS6f2fU`M@GJ8R?!)X zZyU@z@<#K_^6kBM^eX(5mz$$+zd5VjBz#BC{F}X9ns&#fT@MeRt_Zkxi)e`U^s?e* zvI)*wtkddet4-Mp!xL4UjSKw0ISa%X>zV6g9|^nG>60B2D)Vrw!g50G95RM2+khe(yd( zbe7bwLbD)4;H$^HvKLqt^h8XcoQs7rJb*B^FV6R{zCC;S=ePDjagL9gtaZI4l;DBZ zg}lR!$o_@JI+NX(pG8jEO=`Bts)$t7+fK#D)7o|gj3li3Mi6@qNXc2TjW6aBti%i>k{o zJ7zdPiQOPhece-X=vb^dzieJL^yxX7FNZ9wgc&Qm9z9UFo8_c%k4e$OmOc_MnSLfj zM;c8#n@SLIWWe#!Q~8FQ(o5@s4M%pvHU&mKYvRU`g}rEJrkEj20-Z_}EiOH6t)T7* zVPr}v_N5C9xf9qT_G0W=$p}RAK@7mEda%=6-#28{O!0LsN4iIrT-|fN?s$5{nJ42i z?o@5z_4>2kmymN4hHxy_&Ja5iq<>Vbj2u#jp{NQO)1$3z_dnLf3k5buEKSv6=5_Qx zurey}aJIQO4UU;lskLx^ak6lA#o}Mzp}AHRO;}*m$kU}ONO}?!udp$87Z*{~TDdC$ z`e-fuXr~v_UKemcRVvJ~&g(fVnh>ChFx$mk1r;%CIhehI7V}_lEdOSIgOf)tz-4Ko zc~vZBM<wSQ9l*$~l~AL{!onYVY5VjtZg5H|>Rm%Vf&YFUCxBj{3lsptwFi*7&n2u|>8ljqt*LYID-~^x<%o2Pkx$ z0d>{AZ5E}6TDX74bH{mYG%E!OdwSma#KYsWiqlVzqTA(xH|I3fo+SwgH}hsFmCO0m z#C~E`jQx@e-OqaMSz>7N!DRVqyoZ1{`&=k<`e;XwT~SMLk50eeeS>|O2YrV-0>(S> zJKAY+Eng0{XeEl=fQhq;UvuftFxL zGX~kliU>yvhs)TF_%7Lw2KbJW)t+?5$2i$JlztlCm2fEZ5YJqxAR=X`s0JP1nL7HV z=aP}#h24~@@`XF59P>F^l|5-arq5w^5vgIF6oZ@oDYXx+TP;(>uN#l}@bK3^$clh= zj#fEMVm9~gS3kFOCy%OLl;vto3~mc*ImSSagRp&al%m19#_OHtv6qaDIztsMEbMyl z7DnP^*1wCs6p@S2Zg}Bps&b@ADbm3t#Jni{Xw|cu)6=!_wYj%$fQ~15J^4$}bgx2f z>PM_y9G1r#%O7T;Twa2|>QnhHvHP0m;xT9wdlsSv^el9|=zS)oU|bkSz9nqc89Q9k z1Rcy^XQ%++BLH3kNl8^1SXUHb}uyBC@0- zD*&VgXpzNS&qv>fhO{VKOCC5XeY?px&Xsu}bxsO?@qWWBt)mBP|8g`{0h{|wD_^{i zbD%(p+48m3@CZ_rc%=05?L@2NNQYF_BW)s|94(l*obJ23JdL?3Uev%)pm^+x+zZ1b zH!O3Kc%+NpA z!h#cuy-Rw0?~Y!{QjR7ke=@Pg0FKILkcuMbvK!tIm}T^{ zzREZPi1f4DzorB@K{8jb0xDF;Y<0&5ejtG-NLN}s#u0){RRrIANp8vw;&W-%7v?Lx zv#zhD`pfzzw#5bM2pqabayOtSV*p4}wj1c`MY?+ZB4;tOtU+hmpTw?ZpkmqTm3x<> zfLApJ6jb>8u-T7R;1c{?mf?2k&NQKmSxNZGC|Tnns1~8|aH7jChls;r07EWviRt#f z-o=%yBWQb9byNOp`jgsrSkVo7*d!qJ@z#Oqn%y^W@uqSHFC)@U8v>TG!K1VMbFHje z(VF@AljHg4z@D6rdQ3qN8}&v#?aiH~mpts?0W@tyR-Ie$l+)MBoRKq!G#SF;%g z?X+lrZw58wtc~u9VG_aeuSrA7tH+sh8Mw5mq=}Gk9bQqISb9>l=PI87Y(Wt3;}0pgEEPWR{w!K}oPx!>z(nB$;Yb^WKa?ZuOrhL#32vgS+@anK}6yTUi)kpgmaM}ZbtvUe9 zjxff3D7<6WsH1nIK)ArC1!pO2gHtBJd#_w|_zr@jTTo=I%X@jDg14NesOBso*Vb6; z>ZU0h_~GK=xLwt6!#l3kd(FIIFB$Gkd!3>CiJC)gODs_l+w-mLBCo+HK1}1?85TRF znU382Tm4{+S>3#H;;67@i`(S}r@bh@iM)czsl@3M^4D9Ks+n*NDro7A*0Pa;=DZVQ zJKaeixi1u0X)pUVn;+(VpsLMWBX~*|{`wZSrzRm*_}rcHy4lI-3#4J23o}7vSJY>b z)VcXx6s76QFPGF!+RTZ9SJaRnjfWp*mUs3JdNx1qkxOQzH1+89Cb}Z7ib>mutJut( zShXFa?tk}sQm81(5*980E?5ud%vrrL6rU^+b!@5Wt@&7R8Jg ziWO%L+6^N>Q@sPVH2dA{XX}U;V((CjJtSZ1-sZ};I_E78?(IATsQ^rDppB<8MMK!% z;qdum2i@dvgPNHf)ps-IV^hw!PFwn=2e^j{dW>bZ)uU15`vZ7RHS4;24X~KTnscSc zW<`6oG#nV+Yp|cAZB{Ne^>6w}?P@SP6giMA5v`w=Gu%3RV4!MpD1SnK2UYpN#8k%y z{vG4S^Q_cU`H%Na?Fp1M-RH~5)+ARk+d#c(%N;=rX`_C9>NE7BW7^~9O>-A=8TveB zNaSJm$$(Rb`y4v5-IdtZJ$ah#9gZLtE`E9o6`MTJy%Dt5aXstes`Cfu{R@0zi3KNO z8;Bum;VrX=xxu&q>{ZQZrTW^21az{Sk7$`dQU94Ir-Le z_yuA3QD-Jmx%w>V-|h7{^26CES5A$m#PP#BpSNo6Sm4@kHGc&fRHkh=Ec)eiODPw> zX@2i&-4*rS)p7KbvIckc(*;jlB^`LK;m!0iuUfs;xa(c{$vPKo9LIU?eOm;y5_g(| zW@?qY*X5;=viI^dvSR-^LLK32#iIg=Og-N{U=&IMXcCP z`Ytzq5Quswn3$QO$HuQGtdGE}G+_GTd%~%^?c~0c_sH!77`w5zQPnSphOg1pOLLOd z?l5x)QFf}}Z%fgOHM%)7+(#ZLqh3CIAc+cYcL-*gI>MwJnPn@=a{oOlpLi>-fI=9R zB^%mk&~0ovLp}1TDktJX#mwI4DA~%Gm)faF7AO{(N%zS>;W6&id^b(1xG)MklGA@e z0&T+S>L!~tpB2Zqz|90{1^wp=Sdtw)d9I?!u*E6!UCOUtkj3K^dW#>$Na#v)NeMb9 zihIfNzf_Ff@M#z$gj!fKS97YMG9KJ3=`&;B0bI?>jAd_+sa(;R zm3h3ktA^FSG#S6Lt;F|^&kqS5NE69odl~UW)JSxw>xh(#=T5}Z-j64=9b7~znDddg zvU!NQ~7{AQoIsX8{pHy?%=-=y-5ABv`LN z@qIpWAUolPvS!vPU2?c}mUy;EVDdNcP7bp+>4XqMKO{9_MH&k5GhSH(S6w;P=#IAf zaFMa>S+AgY&E2=I4y`x=pQ<;A65*EUH1jBF=~rx3i@EuAI#nJYCNJ|-bT@l7Y!*5f z^my~tnQ@0h9mG44_pem?=RYFoYMgp1&VH)_mCqj=S(`MpobQ_|BQ9Vgn&L0h7hj$C z_C(oNJ+dKMTH%$(K+4P7tIN@r?=2I&an!3U=X-oKQWGUyGt*vE&?*eK<34l33nVui zQuSU(bxjKZ+1T*gdGd#|yb-ImEb8%02j*3BqJ&ciQkgXx z=$WoY&?SC|l(m|f%3!4=L8Wz=z^4CR#6&%>=R|r#B>bdg>q$Qwkim7E)kkx_Z=PYO2T$Q|a4HRH3 z+8D%qRn5cI^8hq;cHe*1yQcS4zd&=X7CyzVpZg9TjF{%~ugLL(hom;1Id3iTJay-d zaATQS%F}L>xw2IUX>}o)guY^B%%b<;D0E&QT z5EWR|%dnss%ml}-%hUVzrpL-V3twz4zD|4_;$@?#EA_>OK(FeQ+Sm{F3kqB`2ZC&S^!FT4lW*1CZ~4 z#nmEFt~U!jaan6Z@v8TX8|9b8qYp4NUE;6iLX&F-)4J6o4{v>@%P;QrU7j!~z1Ayz z*Kf|7#H(KawMO{GnR3>{?!gL*N2aeB_4n`ja8gWC`1mqo)Jrq%TY_u#LusFMr+ZNQan19x0ke(BfwC{$Uro<>ie_X#|HjMR zW)KmS_RYTcUhme6bO-YOFYG$mj`RD+?_m4tV#-Kb`r+-AS`9aCpUZobzCE9JeAJCo zQ|Z8|c59Jb9<&#<$LaBDKYbmyPOy53t*QCuBrJS0>8h~Go!Yg-M(S||%@r5BEZ=^R zX}3N=PO9m17CUv1rPimpu_e0hK8d|S!e8TC&4au;dG}_Orc*DU z3@@nJc3-h!J|`aea-{3DLI9)do76t&(tWFs*|U+g)`|7No0P`m{$Q@hl&2vV&Y>-L zTwCs9(T6Mc%=^3T6z}Sk@tZfC|4?4Y)05fXH13;W6SR~w%yUYov)kp3eUl4{T-=0k z*@W{C=8deWYh6-$d7)S}aK^FqL+Nu5@5$ROhI!4r2bB`kma-@CzYVzxhV#?|OQZ@2uyqS5@z!B!flkCChPTr zH$`9JW%){V&^^R`YqM)k#Q$^16-Ra#ydUOsgX0mqOU!Kz@lepV`0|| z-eNuGb-;lHw_?^h!Eoov^Mi-F}VE?K?t2 z<5@l4N3iLsV^hln=&TNA0?D$m-yjUJ}qUU6CrI-F4Qb5& z7QMbJ0RXo~A3a3lGBl4OWTP-4K)Y>eafOAsPVhj-v3`R^!MmAhYQ6)MJ-F=K?j4m7 z*H<{|nJc!ODL(v*SnTqQR*yeC!pzjkQ1%9AkL8V8yDlnLob@;t;A;leGqlt*l;%$0 zlp%2dOrSca8`!S_KF$1m$@%y%wnm9ew?!}&M_O!PS5;ww{pwAz*=SmQ*6qwjY{8pS z#1|W6;aV5|iZ8XLJAGed(sYVwJ_?o{Rf8{n7 z^I*P@aXsv^IOheUYKzmv{fl^eONlg-xFbz+dC9l&;yuEGQh50uUn}CZ43Wgz5&F?6 zwj1YNRNlS_L?do))aYVi`ADpwip}W99VJhm2c0dZV!IS&QAHfjh}E&(P+aOa1WK}O zGTusharkjnSpRq6hHY6#?c0l&u9QY*yTuJU>WWT```EkbH zgUl{`_^*+l-l|Nh6o~BFa~||1kRyirUU93=F^b)Ht5BYaEg!3OSq17SmZ)iWSLc!^ z<7>mN8$0g90xVDH7gkNaLNRFhG_?kND;Rv3(e{xsENo*(Va~_I0}yMr;B-mny{bMz z(Z*XTb7t>f1fW;tLXU`jIM65iNStfe!t;L9K3TQ(j@-+pFBRERj0-;;d-C2%>^xlb z_#1nX&vP_Sjl0>!G0k)Em&uX_r&X_D{lYjTHb3{e`K3CZ({ysVJYFMqICuf5=;}3x zZ-%vQb?&b>nc__GbaL?X^E<;HTP$aHjwCvWa*H{(L#L21XUpp!G3&b9jAiMQjYd96 z;&CUMCoYanJTeveU_Pm4tX{`K$Z68jS5W9k-NdeDIrAQt=KGIr!eW(i={wA7MXD8+ z@2?zayn@<=fWqeXzJ`6S@8AQ|nQYvnzwLRmV~u_PGr4wd0{$hFudmhH zaWO)tgltyf4F@0$Os=UOP!VpTs#tqc9wsWvXlrI^cCnxQ9gs@~gItgA^mhMrc}6Fc zsQM9SNdJ`efTw=UJ(ec+d`|`)#dX*4UUh7M!RXd)u8Cv5&3P_@j?OhFaRpf{0IvKy z5Xqeruj$|Nc+}$hN#54aw6^F03 z8hZEZF;b(lUY|!PY zi#cVtJLPPjoC!00#}f198#S`-MYI#E5jkEtWM$XPx5bT#=TDx6zohSR+iMieAuzmJIn`uZ{KWT-=6H{hom>RsddL$kAc=n+8jXu=g6Ed$bu;w2m=)P zDObu0*k4ITtkZ?0AtV_ce!yHuFdbURf6ve2{8jvZK&EdXNIzg{pD&=+-bSA@=!hq< zeT=7_4VQ)--Ay*2Cvqa9>XTv5q#>2k&DhzBvlPfg9aNYKhr_ewbzNojm$2!~h7fU7 z#+0cvK6LP7s+pa-sgp_ZgPnp&r!rBUZZb7NUwsy{ku)&PZ~LLaAeFC1bDFUtwrT?&Ihz3Vi>kv4(-oAQ@XAgWX!z?nUiOQ(kAyE5@Ye0;W9_(ARAyXGL zj_1*Z^oja&C96T*i$=mit&n zJ86=u<4g?3ENXpFU73s}9up>J+MKFFaW`C5)b$bRF>s7MGN>k9p3^tYvKb>Od2F%I zf&w>rQEW?3s#9d-w=jd~>tVCAP?EPO$Tt5xfKz(3ih;sSlaahv{)Fb0pUr!axx(Lx z-N%8W4$zUVfg&)gO$|6(vawfB_5Jf%1g+t+R;QDOUscR?6*ZSf@?sm63M!R(J1)ARHOOkdm`G=pzvXvt??rZt9oit>XQESzl(M&nO$(^UN zH%hiFss0>K?knY&9a;~^kmk;uZxRVWpP1%h`C>cd%L@oJ40s!?{#7w5`$;+eb3t9H z+L1(_V=>rM!Ljm&F`72^NS==QW|@P_I$qDPNnt!;ejdknd!HRv2tji<-ec- zxm>>RYSv`INcmHfaHgK{6BXufErLf9=9RycJj&nqOdsVMdmB+g1^QyYbW1)Y@!mXt z^sHSgoa2$oX^YFKLa_ld-^g%k9!kh-r7b9+TT%(i*su{;2`Q!3N0+GJo>yW_{4}+_yP0zt1J|*02Z;1H7mQG zCRJuCb7yYj$@#muQPkK}i_Zkn2BXH8MN&;kNqPF#5A}rbNGo0yqe zIdJ3Bg@L`w<~z^vc1gGhl-W$PKK69;M@!|-u6JuVA0|yO7T>yopkytfM~7<$frXF= zo-g5^b#Gc+C!g@E#0uV_(F$RGJc}FtaPpdnNx9E@DeX`)`wa;7aMQ_)fIWFzI`}m4vcY;UH&dV#@WY=-?Oh^{-_WOXDju$3-OipC*OY~$|l!rhl*uk|U=q>xYo+8G` z(B<|S{psC1jGX2h_Q(&zbKn>AH}0`TLQRr(grb84YiTx$H79%1zXMm^T~eJEc1VDm zA$QsyWhqY$DM4)F*}hzY=O*ddb??7R&{*#3Iudlsz^ooAZ6$c=y;R<4w%#QN_MOrb z=-PBCt`cOh8v8q=4>hGnuus93A=DFV--22}ILI*36!42r2($z^WF>5P-u z!=s+!6F5Z8(wVh}!V|;q4teINi1%3@c1A9x!_J3?1U^lf8a_k-yC? zy>m&l@sJx@_5?#}WA#u(NRQ5hQXgG5g}85@>$5IF3NY{6{6mkdhs@zSHbj!J2B#sGn1*Y86zd*XjE?gQufH5 z(oqOrS@(1fzrRl|nN>3zpkEpCpVbJC%v~SaRLRYAWTfC?>x4U(P;)txHVbLB9nYk{ z-c8C#cQLyh_%cC1Yd&n85wSQBOc0dfKPImNn7;N|#7rhGw)%$d2%vFUC(AK0H!gvp zGJR9UA`RKbxe}(MM`~U#j#<>ZF>l;66lH1;XJNPoFKQ?d2RtUmO)+h^&fO_w05vC% z%n2i7O&$IOz*6sxNzR};>AEK--cX+*-W7^&gWCIt^xliJ84CA^vUgTBQ-bqDY>);q zN{l8NUsv*U`x?N|f4iWGDFgoHolp58)FUTb7|l^H#{Hdea~Arqyn3q)nXSH(AfhCn zNs_V9i(adM4-oLPX-%*o zgB79pqKeI8Z;#ibq>dB2O55*tH$GtU}m~VfM^B>txEjt0e>U;I&459GkL#Xzv< zWsRaCZ@Xh1FsHj)%|2LB#}V4|uB0rUK*s}7_$x}}nJJqci<8YDw}XN9V+V6r?rec( z>4}c5maUbgm9VZWQQwv#mHqhgtm6#ij9;aV>Mg%WI6Sh}NgHK4GP*cbAvPkSZ4 z;>!wX;6IhT?7dP|Sh4--SI0YIYfkF6>mvrp4JD@%mb;24FJ3Ziu)Uaf6pmb58magW zyfvLUxVZr4J;`3+4&)2`g5UJTKdGt^J2tPj*yT~fUX-Hyeh<6AP9UV?%f@=!{*;4W zpxP>IHbg5)YhiBqwv|}@?f$Px``inRteQ#Ns@yj@GXw7uv#Ypsv_lFo%KJdGi3P2HM&()h?1_^NuV#a2{UOJ$A|m?2`7QGhJ}!`pnO@{0gq%tiN63qV&_xGUwP` zChH;93zRwo@Wo9s<&*gnvE}zd3&9hcD?j&&{^r+Dzjn=64J?q@R61^D-^aD|nyhs> zga{iv`~(WKHNIQ%$#=zjy8;An)k6D^dR_ZLjb?kVeF@!*H64~u5R11gQoM~`rcJ5g z2DkhQeDXhSE^qf>=LNjcb1#=RNt<9vm!)V_J8t;hlG^@frX|)|TcDG)L!1VAMfZ4u z=gPyc7w7=c?m~b9K3!inyh_hMJ*jN+q~q|JLE=2k(`#t!2z=1S;+5o#yXnQQBz5R| z!09!HFM(esT(;CSyN9Rl{`K>zz&N#b+Tl$r^@gRe_lsOp-vYm~ffmQWf~wUi=;;Kp zZ@+q-@=x=%iK^{bd*Bxa?p<5-_1*Xd#us3&v~2={3L7~Ci(IN^mP){^gM}LK38Pe1 zYT%KRbyF45ni{(j7Tfnd0Tb134-2n#n`&6zyRx|jhTRQ59Zg?v3n=zK?k)DrKWcqF zz`}j=<}V8NfeW+9^y?#~T=fy_RE-DaH$VA^Qucp{Ci1RteFshi&V4*R)dVK?Vfoe1 zXZ0+nwor^wJ&R=Yefj>Wil~KkFPGmdptn5vWfAt*u)d|X<9-9lsG`jAH>G|K@2BHW z$C{Yj2nd{dS_sZ1H;o5>iT67Ie#jck_c`7-t47r#Eb)T`b2+bztZbm;0^2zM{2kxF zo7{b5>cij=nhjS5l7~?^`r5r|(a+0jRa4(gH){UcF%giA&|n+#uVZ1u4aEta zf(tg~f^?q(Teq(2?*=LTwQ0p70hZCLai=}OCzT)P??Ckg5$1(?aj!i3(~AcG&8mHy zkiws*K_pvLB1Y81Xl8vAj4*4sPvL}2JEDsQ=YJ8-G{>I1Wt;qEWev=^6>XL(?pmt4 zdv0;_=TXAXghRyp9QfsAe~{fZ$5?}Yc=HPQN|Cb+PV;K_Ngtuzb1s(qw-4S!ZhKk? z)k}Kq?ld0UoWa#=N410xy=W~=+5U7szGS#s?0s@iV8;cJ4{SsUD$NqMa7(>+N6Fv{ zPM5`vu=-9BOckXCW3aY!ds<6e1KiGLKh_cUi}vSDlS;MlIqGeutlUuyqZ646X>bMU`6XUS)-QDug(w#_fEz~xJi z<_62%|HXLfnse+`e-3NKIy|o#h$F|R8U7?BnxG+Z2kDsnVTB4VUsQ)~`GLu2H?M%F z_s4>8#gOBq&o{Um{X8Wz4cE{8Z67;lR`rMK@kK7{V2;TPr?=Ej`J}m-+{)?p*gwx;2~St1W(xy<_#rx(z*2nG5$xqxgKaVWJdEfg3NQp zk7jfMydY0jN^3~jHMZ|(=M3!n2qv-|a#|<`*heBLJ))KQ{zopkuDzP{6`xZhr+_R} zxUu|f5LEZfaK?jalP3wFD=nyl8usQ_;ss_ zQDny}Xw47y2l%rT|kMU^Ajtw!=Hg>rRLUTy^jLN;>&;#JU z_Hy`FgIKo3wR!NznGxe|YTYn!3Bzq|ZSO`mz=C5Bw_v`g_}A#upKRivMf#`tOo4-8 zahkFbB0}rY2HXF0l@cz+=8R5kpTU<+*fzULkb+Y|KJ@^9X53T~(Kx@ZvCls%>R*P(UPq zcFE(W?Xnu)V7|B?wf=ro#s2rfwu?+`H~dk;;>Q?2Y9s$?`1The2Y-zu{5xN0^mere zu%yFZwS7kde}3vugGewx;7@||mNuPsa4G-wF|hRGpK=pF8*FDK{8`E|6RdX3#`bG4 zso#?WPxQ|v`Ax~c%;|q5b(^sJ+oGoyNY~FQ7e@a$fA)R9>I<^`DpE;1{WEReSov(= z&x$3dzI1Q!ygv=jX*+}a#D$kh!7Hai%geO^WqsyBw$-(PBIsYW&L@gzD^8zpbAI?n z(eE})-*n|@{MvUwwx!}5scK?LmUXfcSAd&0tc`2fzr%m5VZvaQx)4d&bi`ZZh44Z! zu}HBSnWBpU7yvqBlolX^7c%cC*okoHX-{+48*tnJerVB?}EX?TZBi+DmU>uN?rHMu+ zh6z$OLEvbz>Fe-L4T@9=uBD}tY8d2A46>m3FkA?jj)aJJMO9*GZX5tYJyNCy>40IH zN|hcG&E*FugTbWg!E8j+RxvcHES<@AN0T#AjU;Ah%h8W zG))8wZ3bmQ4~>G!q+Jd273($eh5*_D0}s ztdmz74UHknERDnqj$(k&p`}c;XmLoPrC~rZvzN9vHfKvRUS*nOfbDBzaKkpGi@6&L z7iFQ~g6VcaFkAX4sgGvKd64ItBPlNr%+1sgjA=BD62vvDz8&60*P>n^0-st+ErF6|S zU+|ZMMyqWK@ZN~^_B3DPO-D#I=uf;xJ@4Nv?PRMK+nXTfMoM4rC~IH};v9S;6>^|Zli=E=<{gD5aFR%x&@%`(K^7Rfh3;9}SB>o7{}3t37J-gzyn^`ZV! z4q&e`Kt-h8qK7v1#mF3Bx8>7^^9l#+&uF654H)jka2llWGN)AjUiYQ9p^q~ z0thrtX+1(YyZV!qG_lU`Gsa9}1>$Ir?6X|PbUXECagox&_*DydO&?Wp283|HoikJv z1Zy8a8rK0v<`}KEg9}Vx)+@_~qu}WFn9EJg((nR6yl)iU@dg@INlL*stC68_NeZ8M z(JNasLIVdqCbrXz)6~Wc$Xc8-Ijh)}EUOw%JySCgr=ADNc;v>#KTsDYnUKd;Q=K=f z=T2Z%;*v~dQ6B?Z-A%@NDGZQlQf}1Z#$cs{pkOng1S*W)hNkrtK8=ymy%)h8#3Q3= z17eLw{Z^@co~_?FPPzqvLdfHS#~2Ez1O0cG^e?{dE^&|BE{FDCg@}J=&Yf&be{T3+ zoqqw(AL+wJ?hhCL6MOxZg4$gl{rgA$sjtqDdhq`fd3(S}-;V!`#OWOzzp?KR-~S=( z*JAvvmi@EP@_)OQe}|0!Zcd;BaN*e1sIZ!e6srrt(>fKLJyE04;}#Tk#}HB_7J=E0(FHzBpU0IQ3q5|`5?QTf55jk<%z!SCB7XF_2>TK66f9OnN(~yN z`GPg8KoJAu(0hv+j4ISv9BlP9wyWGjap-B&$N`@xLkJXyGK@nHeb$evMXo18xzn_N zUOm&y6U_|5t8HAB$Tg~xIuVff|JquX)mkYiS`3u67D#N6G&408fdG#H4~K04apjxC zl&xU+LQJ5z4#+`YD%6jvQDNSYpAHpYl8lHLm5f>)NrrY&kVre&kOi+Q1KA+tJyk(Z z3v}#>9>6Tg!Y!$eFz@s*9GE_=ZxGE*1Xk+U%6wOH8C=~QAsO?&12GXEQdFcJZQxG) zIGMo7Y^wIeC_>D};+&}#=|EH&u8koHe6ZBj#08U0#G|go@N(IhF+hWY^)dY|Oa@u? zdIhpHP9gw{QKTBLQ^~l|u3#qLHU{WSvkG!aCC39NOX=#R9oW5miW43G&)M+i)sX)?e*NZO z`TxHt0UCh*LhGABAHIe-T+94+>)VrZ_b&kJlhqD6re>(AO?-kEdgYB!{9K{D^Flz* z#2Mz5tgk+jDQUi1KKT&%sho)R)%N&t$DfLYW@~|@|5u2&AJy#ggaH9$;j)$VO;B7A zyO9L}Gjn!Dx5TGe8Z&~v-fQ$xkhAIBX_5Q1W55=m_F)4`5VpQFP+U-M1#je)bifY` zOT~mb#F@5P08%1f8`ZxG;sR9_G}EDTAnt_J)HG&BTM}5(EJ&IfIUzOUj)Ps4of^5A zOr|@Fm`XLOJd^@P6R+fe@6mf_jN#Cz#f&GtnXuH61SE(wv$}pG@i_))f0={+Bu$t- z6@WfkS?frw>7xm0(&z`7C<0(nX8w1Lee*KRsIofQQ9+JXA%M&_(fSnVvz?cQ-#2psTk4Esdkqb-w zyv!o*hRE2?Sgjx$ZBvFa-zN>l=FKbjCPa8o7|>kZWPr3tNjG1rg<@~~LOLTXYH_L> z%;F<@xfxV6031>jyaTAtZi--KT5n9Xm;XdiH`j*A!zvI3j{0(fy2nG%8sXlZ5cI(#(G%lBoSJ7&+_r49ov;-v45} z-{J%P_ln8y*!gcb!}WJHsc_qFQ@RaCfp0+3U>kRxz5~hI?^^%b5sX1O-IeYg!%nhx z?J-?bP4)j;vy{QS&KQOU;{@v60unOOZWo&To}`n&;06D&_ix;Yh^GEW{;~vT$7Ypa z)h&+}5DfY{^jETBQA%XfkEYnKGC^X4nxF|`ah$}mf}sE_nd(mrK>R?jQ2`rJW|$^H zRxl0|1js~J@?2Ka-rfW-0-mcr8ho|@aRC5zj}0OS6`)kX#wiuWaS*qJ0W}nNW6e}w zdVCy{{z}d$sDn_DULg^qy}^E4#a}YA<@9SX)#UYxfa1`g8YG>;oz{7)w`^}X5RKw5 zRcTepQW=XQ6U055meUzuFXh4*uW`z-F<@bKm6E3CF+jG0eiO{XHrzGPGJZmz<#V@q z8`Ko^Fj~pw&aE=EP-(=m0*+TWIZ5jcuzCM`a-(P=VL3~MBQ|y^i}TfL zBx8xEWJ{BhV#3s}inm@$zOX=V&N>j+`;8}g%vv|5l=p`#URMqVA$L#^0u2>!nMFtdG|myhpa+^E7`QB(Wq^oLs*5%#Z|RTH z=x%zjP3cJvdDqJrpeOc=XlF)I%jH~K0V!Mu!NS!b9nP*GS#FAL7ZoHi(mUHoh$!tpETNgf6YW_ z;H8u98`|GkXSljb_quFpAH>ga4egOF-_=+5o3(zk!auNn<^64m9s8e(0qtP1sx$wY z@gU{DQy7T9MgM=&E4H!VFYW#}2f9A`gAjl4>fa5te^-$H30?m5{o9xS3m!ZU08N|Q zOSN6=bw$*g}zZz@tpbgh*+b~--3_fgUZrf0Q;L5&VNOK3A(+{KRQIV)+ z2GN(bai(h+JE3$O&m5aE0&eu@Q)g)1pc z+&lMN@aAB&FEh-Rj|w;p>RF$@NQ){?`G%q3g|Tu@E=`J->8JLuYCm7FO^uO=_E-Y2f)S;i zPsTtAq3|Bi&ob4Qs+_7!V0FC=)~|yIE@llPM>UEW{P+j}ny=F=tM8$kYDdkN8cY{L zMI;Y^=(-Uls;5a%ZeN-Z8BKwMjvUHVGxcU%;hQ*De_32?J?R+SLBx%uoSFcgXqIU> zm0$yKX*q)S+S{P1wgVXQ#AZw3f=No`X1G)?KeO?An~9#K=3u3iWp_A}3er29Q!z?M zsy&}cIVzwS$Ys0^3y(QtDTwy%ylkdRlnJ~81!rMvf?cyLYk~8(9ez}^D>?XsoU1gX z&jB4DYe0(t;}aSIab8kJYcGgel&m146mCJ^#Ka)G^&%Z;oOah8Pz+Z|??Zwi+y*E# zl_b@bjGlGOV&Jl&vdlC~K0{F?fE`F>IGh5 zSla7b9O~}zhN`wyEuV46CL|w$OC5{lzoR)5Z3tz)`{5*F!EUVk92J zuDz7L)JIP%z-(_8R{cV7H-2cp=k|k0d9{DDtM3QUd%d|8UyF}wgYCMn!oLNH z_+K-i&-{Ax_z%>Hp9~B>o(TLF34WPo$9|*2Hl+TP8-9HF2U7g{-5=Ae!j*g!qKwNb>15y)i<7}xhs=h)8Wni4rY&=D%SSrD%6*J(bn3|Aq zizTf9v_oXhfmp%!7epv<)yD*bo(pnI75S8jkyTN7Bsbp*j< zYjWareL;NzSjonTDx1_FMdem1OR3Kh*qXi)vC1?DjbaLfHYCKP_qoN9J31mphCgv8 z)`%u*DoOQQAaH);E)%-EmDOPd^b3EHo9BNL6yut0;sP5UG)_hYAQv4M=a& z3{_4*h#)92G$~34=^z4!LQnzeB3(+P#giOC>issMsPE7B^S=K*WuKkd+1c;T?9A?? z?~W$;h3MHg(9_}H)2Xg@m$n$IDvsG=CtW>oSg>-3XRQV{gbr(+jFdZM)}DS9r`q9n z&5!9*5X*Xer1a@#5I4F&?&*g5Ff9spJY^qBnFP?tpitqR(aSK7fyN`v2;@?X)e8D<~ z^mVN3Is0y&SP%Du@GZ3#(wWn(Im{JNS1m48s5kt=p7=h!{$NM%cqqNJ)FtWw-5STg zEF2ZN<8;u58*PAy|6TuDKc{T?kV7pQ%+aWm&Um%Y-TL+<8n; z(p7>RRdvX)=_9h~sBw_$v`HQhs**xLV3ler7(w8aIW5`chOBkLbwLQRFUB5R2nBg) z%G_qZ%?@GeY!h5H;?1Hv8tva1$D#8(>j?xkxw zs6g;uZ71N%8Go~nzQMA}e=!hT=z0X@APG(c zd(dl2Xa*I@PsCqf z_0UY2h0^vggv~WZ9mgX|`=;|A3NW6!H!>Y0deoqb5%G-tSr@J*5Uzf{)zwxQcQr1RO+oTt&|h2Qit~2%Lf5aKDuUonXWnXnNo*CGC3p z=?ZzjC2#vB?eZ}q!89DfP+{Xtg+}q7pLCr%719D1v;kVX3l0D@yg}GgCVmm*r&34F z&joi!@(=#~cc=gV9i-F+ylkZ~P{%Tw_6K`#+`7+yXKDNlRy)vgeHS2pg;D=Y4C8;I z-;RCpd9%LYJk@B};v;K!jMswG)Wv9NC0)C+qo#uF0lvu==up!~cCCwD#Q6acI zBTcosxT7%lfJ-2*S-@R`n>fRvGD*q?$bsj{#5rr;K!ean=Qmn>6r3KLM}fa@iMCBj z^#DN+h#VV&80m_g2yvUa08W{31^R@Sw2Jdh8?&_TW(R)wH-4GDE)ynGon9O#w6jW+ z4BrH4eKsW#yOl~WvS=EcJ57-uD?5u9iavdT{v@K5tCOuhoQS?uT&Ki%^^I;pr1t4Y zxIV`K-}kK?qHhl5!1zOuEK7S^77KeEucG7Lp*#*>X~ZbBLjT0)DH{e261cTGoY(g^ zfBk*lq;yak0`d-P-2T$j(J4bC!f^5aFgHt+)FvQyNVKlus(zL^G4nUXNM5` zGkcdf{gb&D79^VBKBe^!;r`by-U!$FYogTdX?I#Sx+Wn^UZiXsQzk}Nkee|6DwK<| zqHNW%9B%Zu;+dZC+9T;EI8&ae6Q?wz`EVnQ@hih4|I{MCg_~!RrAHLie}CbltXtF} zX!FMbHkRs30$;p1h$Bfhx%Lu!)P1;A-pVAB=3sxRRS^mmHa=x=yFUH+usks0O)cJ) zj$e6Lp{Jx#CULQY%l}D)z4zvfb1I?V!le-1HPelCdJ=cV4*lto91ACDOc?ut3*r`{ zM7~t6q}OH6Fuhk|LP~xx%KzdY3}Sg?VziwyQN~|0FdWp}7-_-3z;k6WYMwQ;(p%nc zF*`J-sm@dW$VPZULFGrDGjR$z+?Cn$LQw}kfM4I*&6%_Yi2hEdkB?F*tw4x#udXK7 zI`j-LTsK95xL>J6^c>@dY4UL-!sIPNYH9eN*Cuf=K9OmS);hK9@#xU^{q`v$<;O~z z9xT4Dc}*#F=U-&_3MkmcU1Kuoy**Rn_)*}}B9cijA(%%K+O z-DEkZJaW-~-^tDnf%ga#kA#qR(k#q2WJLR9m~%p}JDYzGQYPkzL8(-O;ZR@Uqrb)P z=ffW!)PxrcH^<^j4vBmX{`~Zx0(5!pIqvhHt%CDYhR<0sqoT7A_N@wshfJl z-@hhnKMb=zcPZh{UZro8>G{^MlIp9ZcxP>x;*s^uvINZ!0a4X&jxkBH`?M%I=$|w`hQD!A zY0zgut|J>GJSV#J_^_gfzI0%9*-~tWtI45#oCwQ(^x2(w-lD5fM!lBRU0>4f%zl*a zzwM}b{OkZ!ozd20tzqdk(*BDhT8r77B{zY`{wKZQHvly%=Dw7;?>_mP3CCVz-X zMz?c8eKB($>PG2-j8lWpq!wT07dqn5U$GO{v#IM)esUAN_v8PB1 z-y-S!eR?@??!=PF(at_8ufu8-dn=TM=$#lFo6%ElF|I?zP5(v^xzS>Y9DUKiIpDjME8+*e3f^n9uTK2 zR9le=E}wBR_?q)aD?6M|#!PDq#Mmd{F4`FEXOp{L7Bj4Q##HBMMVoNlti+(`i1cey zwrWL&1|_$_wb82qU(D$e?5&1Aq8vT@y3fx@5Qzwsy z^ZjXd#|HA`H```ucTJ2A(ODo;JE{>HEEN>~_I7rzw2SAdhpNkLoW93}GOX{jz)VAg zDkyOydc{|p;HA<;hgfHfxMOkbweImAq?g;F##0$JH#Pg1BUzo3I*tU7&k;n6G855; zvW;+iTcggz>p@&h$@Lo!31_>#d4*q2o$p-Imar~E!Ep8sb}DtyX2eXph7fk9e_66k z^sLbf*EqOSy=QP7653aza8F;iF455q^IP?xeZXtY#o#Dc8$DU8X?nXt)^hmqzT`8b zgIA|4FH4X}0f`##a!%e$v$R5rvjjQ>X4W2g6QkCq96A_N?yaj}7(Nz>LL5bf{)sJm z*AgSuUsceZGxIiG^&pP1=b+W;s<7Czd;^Q2m|Je~!6`{{)4k0lncNPX(^Zwe*GQV= zwBQGsqG8PIOvM6JvQc9gEj^DJGO?1%Qg{vE>Vak2gD~7uKqqM^4B7Rq7=&XqtM2Gc&Mn zi4MoX;J#WEl5L=F`pJS=u0G{H#pl*L`}ccB zB?wP@4(%n5a%5xBGftT+#=3j&o?@z?y!n9j9sJYUdXwbZ7{S3Yhx(}8NT|i zhq~c*d`0Pys@DM&UzyaaXKLy9R01ZUJ$|?&njg#naMYE*a^#m`c_Kt_bkxl0_HE-Y zjT0Ywy$Q3rKJl|PE)+a@XjsklxkY~G^H+KV%G>CW3R6Q5d=S+io(OcPyd zffaG6uf*qkxn)N+$Tb9UKjh(yCkPsTW2-%BK^|4pY3sUjhqVrHRx(-RjeVk5Z#?1% zk?$rD+O^WuwBbuKAu$_hRbl}INypU<<;ljg=qnm%E7Ga#3!Zfh?#E2ZdUbpSEB!Cw z!L7SFNYt!FyNg{(ypIKz2gw<2@oNh!o$CGq9KO#nf%Wo=1IU-7$?OJue!i6opgk9$ zeFXM6ZWZIXnL6sy4*sP=w%%O3?fG*17P|FTV!N=VP@+Ed=yvp0I40ty<{l$JL1SjkhbE8%57B9YgiW?1tXZoon8m zm+HqX1t{$qz)C!vKfF!R-5cQ6?gA^_5TSL8htbBV`>bLcW1o_ZQ3 zVe#f&W;RNnfzxIIdo)s|IT-5o?pr_#T*uPb{;}kqWGlmeA*rnxd4})byF&A4FN2LK z;3?SH%DVz+K8X~E?tZshllr9(kiM+~-}Uj}+6MmkX}D1i+A>dVm+Rp*7h|xM1(a1TrjMcMG>VU<2FQC=FoCu72Meu>Bl zibXqiPCgMcLG3UhGx{Bo;?ESIc)zXzj@iwFm>rEe)^ERE={j5bjJS#X9Vk&$G27gh z7`uL85lB~aqvRQRGYRzBW`7ToNTTXNRnwXUSUX9r268N4VqIC=mgBZg{HO=}@*NOc z62I@2thtGy(n@YnEts|Z>Mudm0bB{tnk85jy5?vE>I99|>?;?m-{RGb0pmE!OJ0_s zZi!3>D&r0WqcczUEBXyPykxA|ZTG$4Q*XNZ3NLYFH=w)u5oi~X571*aZab<3P%B-# w9SOveab-*Wg7ddKm)$&?r8LKmDxulv<X-|?|I*$b<_F*KC}VK z0Dv$+APNu#0HD2L?KXG!CHV%p`})DRZc+rc>!M5;-*8|F0lwaWBoAL704#iTTmS-q zy;k3JEGBLt16#PEx33f48;NDxWRRN+`I|&K1^T@S;1S!{|lauH_3w(=<*3e zY=z!iPIID%4+(DIjdu$G`?1pppclvrKTI4vdcJ=9iF6t(IIB%7ZPI)KXuKcZhY&!3 ze>n)i0d`+43@cP-*XsFt`x42$_ixTFOU^V^B*Z$67fC(t_0%el>ES1|J}m)3LNEcXj{<%8;fC} zhYNu&D!>O;aAp{^S1YhO$70-8SPa}Zh(IKMM5JqQwN01>=k4LV+B*;gu1ZgD1{l_Z zbsYTQ0IUEXfCPAe)f*rHF2F`W8HE3=13L20!4k5(eE7K7gpPBuy(Zb;s`a z1!4d$Ha0ePHZFE{E+{7lCsdG^i;GuK2nG{`!Gxe(E9K*B^~bND5N=LRZXRwv9v(gc z9v&V6`h!PcwF~rH2B6ggP&QBiKSqcozyO6XLLsysZ~|CqjSwx6OJ>MQ0U4$jM$j2B zF|)9;v2$>O3;fGQ2*AMjb0Z%BVS+F+FflN*vam5Ta%}}0p^Qut{9BlHEbuT%|41bk zfux*rT`7bh_J-3|WnxsD9xIZJn;e*O4p3Q>TM@lMKiSe{S3@3Y+uC-kLBe!p%*~F# z=Wh+9Db&MNDUF>&Gx^oGx`t=1U4xFK7S!B+_~MXBtYlj2DWW-E5d1j7)92@2|5QTPa#?846trcX=n$T z$Xn~O%W4~mF!+guKjuLC7Zzww04~NAnovLsn6)IMkg^Ce3XMXLv1Am2Lj4SYqqTlS zNM5TfgfNRj@7V%(H&fpbc)}|h1!?IImOC>(tCkta_~rut#4#8RNYYNX&BG6RWH2U5+VwXG6ywST!jSNd(< z-u|jC2gUm(vyk;I*JNVWY85|Sw=cTZ(UJAqpz#^;d)Sdf`H#2R;ZLpMAKd=z`P0Qt zgU)9s^Ma->pJ0MM&%Q_lHe7HVxFYoU()crjjv?u+AN3(h*HWKRp0D36e(t9D`#vSE z8qFM$E3hG{I-&CA(;jNXFrJLV;nE@xx-i?A(N=z*{`kWdp51faeAwz_AH+d8?}ONa{};$cgI^WFsW4{nOl=grPN5?WZ*!swYoo3dWF)KpP`~ zGh>7W9~4k2`JjSiX&s+B{DHDMXDv_ND?*$brGD#+_ITAdN(fsMhyh@rggg80^TU%o zoIJceNc-U)KCZs>1!e_S&_e+LFQ5ZDMPI-PbdGSq9B>D}Nnj0F`Jy`=*jF&%z&2nL zphzEZl{O0(+I*KG+#(Q9Ckes<))fy1()$PdCWiG40Z-dBRkimk5rY#md-1X~o&OX{jVE=E4^!LaLc)SKQ3QS0b6;ih8sRdx-e zApC>3si3d{{J&0?{)Bt@jxJh%CR8b*_aK_uzode}6<$Uvpal=}6+gNrY%brgaQX4O zwU?}Wf502UkF-_!OXT$*c@&zqDcrM>_n0yK0kvD zCi9Qe(Juu7hyR|S2M&%PJ7KXS=wp5sz5Kc;6mN*>dVZX8GD9Y!G*6a4d#)Y@ci3T~ z>6tg}xHgD|BXd7@NNbMQNhRhECoEE14VPP!>TmacZXe#pTXD^{1MxLAN$>CMjeWTR z^QwC|Ctz(^XL~)fyr{N#!pW! z-#Z*?VY_Ukb*M-q_u(2*-i?~fyAG&cawf74OTS<1dPXlorlNdODO2;z%mI>wC+l78 zZEIn>av}6-7cDRJ?F$pv?wfJHs~y~L6B_?iUM|x_rM2}?(%jBL93pVqyFYS1%TGpP#@jad_sBdGM42Z=!*9pktFisv%Nw$r#+C5Q6B zvfNGPUet9{M%&HU@8dZ61CL+XTQpyAFav2+<8y6iPDauob&eM}vbzsBo_3HLQdA2M z$-W=P;9s`vjxs55kSPf(-ctLlcV~>}g~Y>hPj}rltAOqJAot+F**AGFu=x(Ey{v(} zc6TDonpCT=1`M7Fm2=rFm1uZN@YFrFPzU=!VF7_>`^W{miyq-wcqN3c>lax!z0+mC z8d5m11ZU3}=qHo6jqKV-K3{$FhTK>uwV*9j9-P)OX`RWK*Dh^hw_W1Tx1XrvJE=Wox}FoF zw@D0w+`3NcmPu_?)OvLWsZUB4n(&`LkI~LgCpERAzv@T7eG{dSgxZ3_h&SXXlH^{` zTM}_m?TuOP^GrLiTKZuO$K`hKC{cU~nNo~*I341*(4`QeVGss=<&I9;SFBsr%jd;* zGp7BLVmPPB`JLT{0lD2}ugcXT`vSeE{1%H9&ZzFtdCgi=d?#3tPkr*tw-+g z+Eaki^xP(@D{lwk=rz10ptN5vMYRw?@wr!$8tRisdQ?-GePQgu%bw}QIBh>ow!{c* zd6PB1F+^|;F>%@duB?1tZZvO27}_lprux2&oQh1UKqiQN1PMGtr6Q`tn@ii_R|C*{UjJiRfGbf;FU z;cdr?J09DOrQ0ysh;lSu9dCAAdaUK=pqk}jTe7oaEO@+jIz`}v>SYURLhOrk)49}f zoI9I`TAgFa9l33-*!ZrB4||N~{f3CVZp@M}L{1Kqj|x7{=J8Y-O37a1PGc6;!cb1m zWEft=kCF~3vR~S3tls3Xz2pdUf=H!sUyu7D`sp3M)-3M(4(Tdv37iWK+?WB`269TS z{dlRR2E2qX*FHX{^hLeZrlBya1(xH77ZZ+4Fk2I2Wl|+_k5qSGtQlOYSH5%09+M$S zJz;@=HaOmxqfy%!YrHc8p4-vD@k0w}Mm3ADrwy(&U|U}lniD=e`5=8WX?^A%b9I<_ z6148*eXGRLr&WMqI{aSP5?}ti&@e52>Xwm7tx$V;Ym@2+03YiOSVg3>P^-gFMJ-2V z`IbpxG(ggHSaCUo{t-+hM{gkJ*hmi+v{-r$En+PQ&Lp#$)4Y9C`jWb(yS=2Zm`NaI zVp^OP_@?BrkB)hOfwpuk*yjAf=0#l<#ezrDDhbqPUcdO_s(=;{qukVn< zY2TWP{K~k7&N1h&`>=7InXL=61fAs2Xv6OGJ|NcG``j{gFJ8EKF6qZCW~Wo!{D#&& zCNbDpJAL&HDN|kqA-wI3=j*J&e$9!w63ok81j2I~plCL+J!@fN()>ZN-YLNoXNOoU zkZ!XQ&K1QoC)6S@i4Th}-ttgHY2QBosQg{h%&~-6h+>>zPvuD`rk|FN(g149d67Wf z8#x2blbY;;YajaW>l4olN)Vr$7|Yf8@pkqohq1|?1j-v45PHKTqp+w`#Rxuj0e@xN z&3^5LsAp97@=(WTb6Rs5W`i}O1E>Voi`x%cbpt7C1f-OS%Plo0a*|y`PPmrJp%y{T z)A9Is~2r4V>e&=#ZISKk+a6-jc=1^K6T)G;yV$XK zes8n*Yw^3#24H$hS0*%0Mr>a#~a&bxW*b8SNWyQiv`#pG@eXHvp36A6?0 zp3!-M(8FBo+=Gv%Y?zL+5qp&McA>rORT>Rw35zltK+0Zk=A9kS>p`u&(~yeQ6OJCf z#5j{wG3RleyJ}kp$?uerNmqt;wT8l4%-J zDx4!#yY+mFu-vH{Toea`MqWSP!g=PiZIgNmyV#mBWl7iFCM?^h?d%ma6QGdWy#sS!aurOU*SnXZAS2- zm-KRu?~d%lr#iO;b2qo$G&ej>dfurpJl&V;AYNa6G>XdeP@}J|J)EiQdY4NQuTO&5 zA=%whqRW1o(`kd)-YwoI-CyF}DrtIG z)S}8WQJhMYw=34kqRJrS&g90izIxuETV|KbF0wwHG);yko*(X95bB9CHscs@SBuv@ z*%)c1GIc&MP_N2gNmqt_?1-xWdtSk971~l!X@*3NwIL+jmxO4*52HxY z3rj-g3MiRO2k(gSyD1&EgNJ4Yj(dBcFi(Q&SUEa)ju(nkt-VZS>8_8Te!KVS`s#PH zitukgOJ2z)_K;xNdtPd_UjXTr?f(=M`8vd z<#$OrOK8OE8%0EWv?*VV=(;n?dhjQ=xY%LSz|i>Kv4^}prw-mQN^E_3R+xQ(B5F)k zKEWFMq9OG|+R0#7J;VE1ABg_U>Dr^0RMh|(}MeEOVZ@k!S+;wxIPANv-i-)a< z@9aaCxMK%-3i_;~P1mdIrp%6)MApS_7f-Yg!h-(`@lnto3+e?5FDpqz0cA5 z$&uUIG3I9(t%;RhMKVQ_<*4KW6lOOlnzewjg&u15O5@U~W-<*3SsER2H11$~QgrUs z12w8w__2kq2N>i?Oo>3}KDwCl@>2%g0@3DG?HWgYi>;0tRm#M7aYrJQF>!}26u$)JXjiv*DBzz#_g#-J47*WG_TL{T$Aoqcb!SfVbQF&bWK4w z*l1A=a`5V>QfLq}ytBmeL^=B`x{^Ik*SgqUIHNDu$Yc!-D71;kt5Ts=I3uNwriG++ zx)pL9I+5~LQeJSx3n^Xm!}$dtdb$%o*HIPDu$`{4qMF+ItREd_8vJe1T}G!Lh+3pe zZ1?ozLyvSw>&Ss-@*6+(1;FgP4nm9(nFvbNhL{mVevUer*E-GGzvY&@--Su$mJyr> z9nBo!>hkMwS!3z<**BU`G7f3n(qP!@b=63mXeu(D-rE&_2&vc6-2P;553m&3+Hlc} zp{^~LoBPONM{a>O;T?|&M5H-IR>#<5m$Q(uJ2qyLe7b=&na;0EN!DFG*H9pn$k?VF zHI%G78b&3ju&<=o9Uwz8rew4|Kb<$-UseimIc1?|;kAgyc>k*0B zmv;h9zjFZdn-iIj0L<>f7pL(y8I^UBM+6>w-;ddS(@^kw9%4D**fNLh##x2Hb8k;1 z#Jcn~4;&q;VZC+lA-97q4Cvf8jn3QpY_j$|TfK~;`%!@shCuobo8zl${d=!pXu#*k z78uYbsDC8+Zy3S+P^p&CCgGvsHe4GRFNWXdu+_2M@txQ1$10sWJrCK-&nO8q6hHL6 zyJ@mDEak(K7~RG8naJ4%Y?V6|#*BDZ@zn(P3;X^J{l5ZW_UG>*6p2M%8VgrdY}WJL zM>4E6uzXZd*k$L4S;wJ`U?9jVG?1FwY`=Xr{|afo7(*fRqsIVs{8^&*eL6;4Y{a6F zTb|$|zRNVeU_|z-ndEn3fC7DMa`2ra|L4{9@3{j951l{$U+J&b_kTkxzx)a5@3rN> zUAFJJ3iu1I%KlE>|L^|$Z?~2|5pi*!N0z= zLoiq($eDllIRW??@8|n-5XdR;Gd+O8VzECzehz-Xy>SCGf{*_U|3Ci*PQdmNg8fAW z;P&rn0JqQ20v7-xfEXYFNC7f{9H0QeApoHS&I8oIWq=Ey0cZg_0C#*a0E_?=a1mez zSO8Yw62Jzq0~`P+a0L(rB!H^`H^2k%0(<~JAOKtg1cB>-5FiYQ0Ahe5APz_ZcK|6s z8jt~G0Vr?-kOOW4w}9J#JfHw50gnM)Kp9X0?gFZS8lVo`1MUMFfF|$&&;lL;+Q1_~ z2hano0DZs!Fa%)06Tk&{3K#*#fC*p^*a7x{1KW|c59T-hOZsuko&s=h|9$=^1n+TW zz+cP%xN;wt|4YD1aQhxthTzJ9U(Nrx4ZU5E$kDC`)2K?vz{}_Ds1o&(DAGa(n|KrLJTp92y z`5#xNw3Gbz`TseXj}*Wi0}bE+z>Z>PAm@}7loTL%;GlX8{z0(gAdBFiI)(cW0s;7c z`t0e`1O%sv2?@`fB_$>$B_SpuAtOJ3j*Og=oP^{Y%{j^oRMgbeq!hGtG*oowsi>)N zE5XAD%MhFTeF%&k)M9;5@>PkH-c%MTv(`iHB{$ok#FagRRAF@LvMn zDX@)a2+tA`lYkk@Kn}&j$3I1YkK1Z6w>S7bgn;t&`AdRwXD-}-Lda%Mb^S#|%31cC zMUB)NecK#DPaS-Th-ql)=ovUKb6vU0Ei57`CN3d)>$bdt;vFSr%?DZ!wIAu|8X23I znweWzIyyPKxVpJ}ynOZA&p#kAC^G78bWH5K_i?Fd=@}n0v$AuFOG?YiD=Mq1o0?l% z+uFZ;?dTsE92y=O9Yf5{&3|85Tv}dPMegkW*xNrq9UkG*g$Kd^Jz4*jvj3DWN|3Ho z1O)g5gt&C!opJ^6DG5$r5U!0}78Ie-dNW?Cru}%Hdp^un`LwJ@G ziA&mVDf_jA`Tkug`?rMszv)6iNb&K&&cmk!C*b3o*{ck#F;UFNonJPfHH%8cMHp7M z6g21TA^(%`u4;HBM-&!vvruRo+FW;QE-Zz!b2Xwzs{YVWB{``+oHBTy`MaxhoVX9% z$1EM*^ko|hd0!-Q_B$3*;5?|<&>1=#>sbLm4D0*(-K{4@ zt~w1%@th7=2+Q7aA(7Fpc~A zbRoPvQgz*5o^q<{rR+|HBaP z$9^9Ff7A45{#OMRzyFQ=|1*BwKS=pQ4k7=u{Q0e1{o|KED*GQ$6|-A@KBU8C)8};z zEq$nZ*@INo`kO>zlnS__Su29ABy&&idW}3ZF~LF-^YNS6T>8L5c|&;H zxp(XQdFVlBQ<{O2(mv&H3rh=Hm6e-&sC^RYmQL~gva6WIw6}WoeIZX*YCLxHMGz~_ zM|3ls+?H2Y;eV}Y5c-=+i~n=xzo-7q3RdF_>L<8>YqR|$0T(|gI)1CGf~wLl)&FsA zw>Vs-7X(~;@gE64(~qk!|7!fWHsxE~MuUK>tNtSa#Q!(9KX7fzZCqs^grDWF3)mn3 z8|DA6R|9{q|2>AN{#pM1Ym~n_^?YvKkD?h{lMW!k7G5D|5<+NkTkha`x)=TdaFI)yz%t|KCs=Q+wI{Evq8wy35QY2Ul&>nqYN zdBqY?v|ldq8Rbol(|Jc?tg+E^gHUAF@EXz{$)D5uzW!UovwL9y4TFQLqs&FF$O}p_ zyOwL#Qp|!?U%1x#OJ@e>+|SQRv@}-oGD>TA=PXX`I?O|67)Jf(bq1QJA04jP9#qUb z%uknz_D_b&*M)y5$Z+S2yzST^PT)!%e6a^X$B{-BY2W{;R&1Vrua2TSMp*CF;}F8T zM?n#L()#T6j0sHS<~J`7+t7G6yglXEM#h)+g5~IwV#Au6Q(0x@`Ez~jr)VdJ*3QyA zQYJ7RRqwhcbc049sHyS+Z_8fKE!A>Y7vAR=LMY=J9G^01x2w(9DQ1pII|y=I*-)Nw z@DbN*Kq>60ro5!vEoGVQfqt}NnN@5egSHLZ!3-uQE}6B*l0#+=F4r+?ehQO!CN8Xf z%){@opRZ2hhKGgB(u-C<(|GHvOHT>k16uI=TOsrD`?s2 z_&p8jS^97d%@mOczE8!G4_O7piR)Z~`T{q--U`4 z4Kv7ncImUY+>8FoQ*Hh1?VTZUMMgR5R@{>}@aPevOpaK{Y60&ZSx=7bnl<6 zaeC9Qw6`>v4Br}`&^=UseKsnDX@9Yr0v{D7!Eg4W>}&zQulsBE<+Mzu1noE8Ic@g) z!Jfe?Qhv4x-t<{}3aRc1 z6o^s63!^tMYPW$WJ`Gl=s0g|d^rfBmn!{-w)$0oa1)*Oq%L&<#jWwLO=c?l?nyzYd zKY9`FaTK7rfB(VAtr^Q9=Z}k1i^c*}IbCOndb-@Hi!$0NU(FD1eS6$aG%y08Ie+1x z@>CM@eJq48#Q4}bU;nOZ11*hzTO9hv#oR2lhP!u$m=hr@pCTn)rH2bcg{wAwINjpT zzTM59Fy6=iX1OLUHG3zoPiJQ%Og-O|j;Xjn@TxU47V_QQt*a@CQqSGxT1v0{ck6LlkP2Iy+|s1n=3;O{+QR6Es^%XVY|6vxE>23@ok

      bU+Cgx%Fbw5v-md52!^sU6L|@P=$>tKh3tHA7U}mA*me@@B+vZB9}oFfYrM-2 z_d1axZW*qXW76%Clxo>o>5kttfD!vcxs&yGlbg!(L~7vvM`4N9CePqSg+yXk&vxi- zi&io(6&85sE}F&6W*bGlVy+P=@mV|SJ#t%g>lpJ4Nw1woRG6JuI_XwCe^%z1`(CiL zHojAUz)l=}h_(tr(l#e5?QYEFZFwx@m9t`LrR+2KPRE1g&v5n)m_SfthhI(Fie2UM zQ{l0s=y@x;_4-R|S=r%Y_urPdes$E1SuSGFTFpF_gVqGKW>j>(Ka{oJC|S)>$D<%? zxI&-^xqF8C=pl35Q61-L6JsxaHtXT|SjVUG=Znv9l$?W5S64r?iSWk@a@sG@Rvo%z z!B&}IeOsb&%isY+x)`G_+ga)Utc;74zS`nFjBd{7+Jyyk+{67pueDmbx%50MC*gQ9 zWVADCJwtlr1I1JiA+IR?_|!~5L|rW9_@LDO`)dLRs-mxL5-a0t-8@Uk(W-%b^{+mj z$%-#N712QE?OrSo4O$~AwLCDZ!UVx)CraQ%x+t6r3*)xDX^^fw;UITvKN zb{e(cFXG!6?L&0hcU5R#VwACS3?D8+yQa}^TATR|&)r)c+j$^*wq5_nntowut=fp; zrQV1~=wc!r$AKk?wn0AnUTL2IGrbYnIqSeHHuTRK{bwVzxrKaRMb@}hJ@|f@7cPLB zWgA03Kwb&uATW$vmuvh&-90%K+=)_fH*ePNo4x=y-GH~r3Jp1%i(I@u)xQZ7)Np6I zMu(qp>0+H#^vnIbBbVyJEWG4Xvu=;Q;8_}}4jLy)czktsrOjEZ9~M#0ju)8y(B_(p zHO4G_HTK)7RQwmcT6OFO=81UEmWm4XYEPmC_&aEkhHv9N=It}ePok18lVSu1+MqQ= z&|?wH-P-bDXYC0rDqz%Zl4w=YI#mJUsmnDn}cBNd;)&!MZ6 zR}3@7*0-!h>XVt01j@hV#&GB@*|n=TwCb_o3D=V*@r8HcZ}EL1V1C)~1V;aUe!FZn zTO<0%`fn2s6ejJ&tWPPGj=@M4GQNfH~{tsNPQ&?3U!Nogf}?s)|m$@F{&aY(3?hfV*wl z#c;3$?M21iUO;M;S;c-tcN)qw0bR)FtrJkjo zC1fFNpusfxj75e)ttwpVHBV*Rhh(4Vv6TigG<&Ap0)MviB`(e}1toN@mje8GtUyVW z%Z{njPS*oHmx`{x);9aShW^)If7ai_KzrtoP=5#A%7511|269G=mXI6c%muGbR{(i z@}K?casBi74fuof|DF2t`2EXul|Ov{-#XlyhtWzMr7%U}mf~(x*jZ{$)gb8HZkV}S z_|E%EYCQ`jTKmKan&W1Kkr#$z2VgXvXv zEF{Js5$~8aiG^gsGgP~{DYhuslebykqy}xL3@l(F<;jf9$pR;(dSIawsS|En)Im5# zmw~^GvDOd^0ZR~rCDhzb2)|!ReGBizLaa~!wpg$yZk-=-vtS|2UqJ<$jI%q%snaw5 zeVFx-nz3})@5>~J!NA(>5m4~jFuP%jk&(U9f3(1^HA`a(@e1uV&0F;-+iQDmzc@9a zbe!5Co##dmasDwE#IqjTxFem7h19{vr?Y=G=l*_P`k8;fgZ`vH!uf~z&;0wZl7DBM zoXSUpJ>%~o#1Dmd-3XdLujVnzs-GMN~?=l9YJrxVXCq?hi&7k%y&@$r=%!XuVRKFDROJ}W;W z^iLzAja%e1y;<;4Ce6o0%C1FFniSbPm#Xk7_F+YFc#|yC)atGmqAN)+SFq{5Y%dk{ z@)^0$^gWtQ_t!M{T!&%FSO|w^%RVgj@M6zCsghSo{mT>%Hfn`(Z%3l!dJbs)WMtON zZkQWnUdUqj;d#s0VbxhIgtP>are7M%(AAgLcE>KFA_4!JW{Bg!$IV*8{8Pz8--nCQ z*q`~YA${K%D{U$0Y?f?&eq1-vj1l`OEc} z7vN{y7?YP^`U-dr_yM@_V*x-Q5CjARAwVb)2807|fCwNGhyvaM(Lf9k3%mo~193n+ zkN_kCNkB620Z0K-fixf;$N)Y9nLrkh4dej1Kpv0};I_9AOg{ldKrv7PlmcZyIZy#q z0#!gYPy^HgbwEAP0DJ}-fhM3CXaQP*HlQ8&0(=EJfKH$b_y%+XxNYbK(>|ad7yt%= zAz&C70Y-r_00E2x6Tl=e1xy1oz$`Ea%md$n1z-_a0+xXlU=>&c)`1OR6W9W_0VJ>k z>;gZ4JzyU=08qdoa0DC!xNSbcO@ZGsDjpcy`Tz0w9U=(vpY6YYjrQMkKXev!=Qf3a zfj4MQ=#C&3k`DhuVY}~-_GZ~jZafg3@5V5#FV>O=@$Bh3og_|<*ED3N9A+pd^&>b< zY*CJ&s!0ltMQ|8GDvAFX^+(}9>yQ5`^~ZzoFld=g-F8}Q_3QMCabBZJw>j&;o#%J( zGu)HW(#l)V9eUXD9CW)-91HRFW3u$vDr;#tqAcv8jrMmzuN`#NT<%<*wdin4bEWRx z$chj~eYg?K4qsNl^lHa+Mz+JQ|)4E3Rg$&(3;6N;(kdFyko;X1AelU#KZ zmP(nto*{LV+iOtad)I`8OjBYZuP=cJ116sf<+1jtNAkm!QO&dP^-t53vIMB`b{JyI zI$KxK-TtFRE<>rSk{Of33u|flwq*8y;HthD+8aS zuBo|xJ1E9R!!3cj%ZAPbaUuMAZflupZPB}<0_7KmN@D9(d6_LF>ZB@pqtJ0D6>p!8{j;WT z)GdS!Ex#C%RA0+swD&sQ&K03|57XkqAKoU*zP*{2w~TmDtr)=TCAJ?Q$kcA{?CR%l zGsJ;UKe>z7O`GpVZFfkTz9dmo=dlhhO@E^;9b>PoJt_8L7a0k-RI%-=3k?uHTe<<$ z55H6FE>L)WsYgs>WvhDVebt0#(PSHhiK`_XVKXu(;8)LOKJsQYN@Xt8rAMb^upo&x zfzd4lkBc(TTuj07-GDEoaZMY|bxh(m(ncHiy6j_yv8lh|ptOWJfl#fh_QRmoPRW#W zY1DYSH$TLjDygMDzG!85ZQJzq99^yUhZQVjoSAu0THe;el_Qs}(R4l1|M4rX$>a7g z@9djNayOOl#aCCrVZF8p78x~J2SRE(%@FP0H<-4m%gMS!j~VjQkF>)5*S%Cu(yVNy zH$*a~`p$fzB+Upkil|sXD9x4eVIfZ`E;P=mpIb)62K8VLvS3n|nOmIf z<&M;>zCM-KNCPp>Cv2!(}W2cu8*)7OEu{lHVI!9D1|E%xPQ>f^j$O}ZOtzIcqmMp7B0In9G%M@(umM7Zugxn?+@*ss=s=IR(vikJ!G|nSalz z-SPcxgjR`fy1ili_Wb_mYNS9*on}jt$Y7}q+q5R~a%|z$m~602*OLv=50N8Q5<0b? zIsP$NGR2i_n=Hk2Y9OuSAQ?eVnEH9(T*`{VET9eLaV=xa9DVP(;Bq4_ek9 zTsuZ^WE1LaB<8m+Enxrnt0R>oV(iW1r^xQeyysaQ=|SY`omx)Qh|E^W2NmC}GR#Gh z6R4#2)|*p|VnJ7I_@INg10o@8ZTR>x;@#-)$yBr?18m_EiW1cD`yEmOwGuhZx$}kL z)mTUilw?(xzr^-qUH(>p4f?JhodI+I;`c@4fUQN*L$@e*MuoFWvQjxt7hfA5-xU1* z;(>_hX~%?-#P|~pKbYhrm&kPs_4l1qG7bBqsEB;j$bJNJUGnYf@X^CE_e_Kw-6i%g ziA1?J^)CBJZ*@8d-pq9=e|F-^8P}Thp;b;B#knoRD{}ueR{`;>||2^)RhqeV`sHXH5C;9n4-V=wt z*Mnvi3S%LDJ+Q-V+v9zB+xug4?+vNdhOUv$2Y7pmXi;A*q*tb4Yb*`JCG*Mva0t4MAn}EljE5hY!h0;Cvn3;#7aLfJ&o{U57qvu2a}?xX`8IcRRu8mkbQyTW z5ySf%9L4LJffdTVjb-Hqb|3Kl)Qtq34=wG1^&lPR}kzye?_OXx#(^{_ED6M?AkfP$aVPjg7XL+|rug5z| zJY;_Ov?&dL=~?4v@yo^1DzmS)7sCBEY47PR4GZ^WRdd+*p6dVd;`(PBmYP+Gj-t<} zujBnN`!CZu`0dy{1dMb5=gqA#Fh22+9YaieZ0lB`i}I=`+g|aeP#d~eknKu8F4Cpi z{-zSjO$nO4;wuTuBb~7Fa21LJ?L!90iSkLQ?0(`NY|(1r%e=dRhOouOFltH_A(k72 z93zA9a{sA;`dsukui06`M`(kTJL~MX8(st#eZI%U6oq(x^=tYnrFW)JqDQg`H@}$f z7ulYg&BH3#x?+_TBHxyZlyiPGk0=R_Ja2Cq@Z{ z;L8{L1je-UvGH+}kZH^{kqHvq8%J~?73Mwf=stLON`W(Mk^K!shI`FRb2y_Uu4ny- zuB`Hn%tEzA0DH|P9WCP6lBjH^3D_sIDR;(_r5k^)?KBO z$Ut}SrP3iN-_H)hS@fBD)Xi-6;N_k`V1=%-yosk}J-gn+@>tDg&ZtMcA8t1`Mjb55 z&s0#(M3lxrc5{=1Fl_aeHA!2?vWJ-wm*re77V~R^DPJ4%mOB=`^IB+A^LU}ZpH?tw z8Rrvi;q=6$?rdojL}Lw0?S4k#cdR+u--B6ApM^=a*HzvX9Mwe8NJU z;SnDw1`Ee;ZCOlfVNC0FSSeqA$pM!sL2nM#g(imB7NOZfA~vfS52dTFc~_@N`@=+U zh1cdz?)thhIrxAZmi+oEu#gW9EU7HW4-}cw>6p3wb@5hVy{3!+Kf#*9FA|0C;j^XI z4a*D-2hH$MmTiRS^ba!F@oYoebJ;jiR2*`yAiv%Vh>*9XsCRB1+Dw;18Ey#9@m z*W8fCc=Q`1<-5^Bf&y|#VN}C^xuWrJRfy4MSoAIz zS~Rrc1YaA2vPFUtOJN-IA{R8x#ZbM31AZdc-QyK7KF=I)1YJ8z`GLTQZvLV@4D@0( zn~%eLMc`Y0AcI5yUAz!)NpR0M9sUREo#~CV{^pY*j6x>vYXD!_2k?DNlVL;_rWxyn z$GjdEJW-rZ^A;|Dcw;S^mS+TF?969+822-ugAG|*hU4gbzn zh=q)_Odrt~_7G#oMml2Wx@5n z#s0$=&cM&~;uqCDP;F&iT)cK}@k%jfk7iXWbtc13J)enGn$do?q8Xxh@1|bz2SXlI z3R0-?{;ELs3Q3~q4&y}yo{Jj&J1RsOoKIB(X5S+q>%@Ld`sQdgUcV}q3U?gJlj^sVj0@6$}i$-3LVqo}AB1ZlN&HF>7B zvuFva_TAn1(jXmrqdPle(MI&2zjEN`XL{X3*{8a7pDo2gF1Xn=D^;Mj$cso_D(u<` zbnON@yi;zlp1tK&)83iHvpc=vWmclGFKF8#P`tZa)SE)HXLfPU76EVdA?p)P)YC4F z=~N#wtu8Nl*Acq-)tWVI)+P6RjluJ;_%d>ARfQ-Ut2}sqJaeVUfSXtg7DD{c)-Tp0 zapaZFhsMz#u(o0s6Q|JY;>;? z6sJk^7*CZ$hTX#P8u@`z3WROzLrMAQnB>fik1@#cmENzVWyMZx2%%Zm1m^CB~4(YYt9+o%YIFat4Fof2IZ`XeRKYX^Ew-y}6)A+QVZWzz;} zo*z&QF*_D=Nd}Io2i=0b-+bJ(Yhu9dcA#?<9CugIcdy=?>CKJ7AC68N#k*WbuZzx$ zszY&Ymv7B0w&b%kiN>ltjt$vScUxH`F=q?Sh*OP!TR+-2Zq8bMO(MT10A3OsFw}U55-`9>C^C; zkCJ+4O7Gb`iRqT(C=p)2ZN>Jbs|87SKV;UTS-;F=H)z)_pdqqQ6e z)L~diVPL}#Ay^Xi{sEdQYR)CfVt&J@`QdKHRGtlo*jazJNtN?r9)cGMQ+hJI*iUkj z-aZk^BWEO2PE-z*)k0m8ba1HJWGNAAmZ6>F3PkI;&(ST`_DgflhTdwuVDaY56Up$g zXqRz%1zizS`>MAzh_iGY*W#OHNe6tO`jc{?Z=c*E2@=~}EwWir0BiPkwKpENiTHlxwBpr>cNhvWPaTbVn@jL`08YUmt73 zvzw9?kV;)s%OI|%`gqu?}eM>OEvjWpz`W@{VwY1^szLJFle15 zwq(D9GChZh`c z%F>!-iB2vb3EnEKRk6=r##|hl84=k+Dd~3X3>(>6XSpk|b67_4?_GI7w|KqHUq#5ptAsY6DrdI97#SomacPIEv5&A8KzB!*+Z?bEa zo^RRfl+4vo>Zl%A*pD)VlVN;rKImU|Ige@fxeTXXKDwA0P-@lQfRyifxmX30INx*M z_YzOrY})Bqi`m|DcUs+JTWx(MlbaH0n-Hzt8JVjHvw*oOPpN#Fu~_f2X1#8IJHiF$ zSwF281Q!fmVIdWYp`c5hv#+eifTwx?f(3>xxz$0=)>gvr_(9yI3q7KT@BOsYzcR8p zs7*yL8cLuR@=(W(J`~&C8DxM$R9;DkAfLdIs`&Evan$^&C-7 z(f(en0IV98AK+Bl$5g<>^XRxKL$dftOJzKxiXK0%fc4w$emc^5BAAl5+wAH15@!$%86g-n)_LQ{zml2s6Su(C-=Vz{^R41 z{_WXYV0g)I!%F@`2j~Cg4H|ql2EK1xxc*Owp9QRk9Qf7vIlzDe*|WIVanB7C{QZZ& z^A$J#N(3w`3jAvP@*w_u1iwcp{7;A<_f=B<4e@J(_znLOKkl(PrvUI+76<`w8aM+G z0%rjtfEXYFNC7f{9H0Qs0hGXb-~vDePy;joEkFm*0}KEozyw?bm;vy78we|K319=* z0o?c`PB6U;Z~<3wpj-42S@tfEXYSNC1+66d(=A0I~oS zxBUR10#1N4-~zY; zxMwipmiGWtPrwWC27CZG@ErK_`A5I-V5k3?_H+Bm2e|n~+gX92%b}NJRIYNca*J_$ z^K?*bjO2J2fbJyNi3ilC;gEvj=ny(wf46XLo%sR}jk5t-#u`SkMA}QD3D)sPEriR^r%(;O857$ufjq9SjvlsBV1c*){i8$;I?eQwcMkh<0jhy9Vaj zid<#jxx&wzpCB#!6HjQP_UpV#^1^GIG963RYg%tXCQOcvreXxLmLV z-dXd}tpFpVB5$qIgfOf((j49@h*0#^)J?v}ZAFR0}(lqsmzI&r~zJO;p&i#94M-q)xMuozXkg-ovW?y-=wK{d+u5X{=OA%@+dRoF&a9uv3KTf`J@l1E7o3Wh;5V;b?Eo zM|4}U$-ru!HfW>ZX>Y-^0<>whm#a0rDy>*j&f$JnLb%9{DaW$v$8(jFJhQIP`7s1* zVh9)ilxcOd?S5;WGQxLtKO{d5imJSxjLfAEjy!A7S^9h<=?jva>?RY++N873`9k_s zc0$ofb=iHyHvDtL(U0WqNsq!4Z~+0ge-DM1E;>l|n>NTjk`@{ofZ2cT?g5=3v(Z!)~m5 z^DL|THI%O#(jaA$D)QW}ck8U9?@Y11cCujTRpN+Hp=wecZ>Awnr+iMFBvJVGTh8Kx z)z+CyU8%{|dSgx=jLp%7-bvSFPr2=1H0)8W+wM+zwmY6bwHQKu=Wdb?$IIt)atnvX z{=3)WUEh=qpiPkKA(#tmK3phy+Q5wZ?agR`eWQ{`&7`|c#Fe4n5hi1AWN)GvZ?r=m zZU!D}HKw}>G-K#&$r$5FC`dYI*D}TQ7#wU>5qBzKZ*7RvnG$P0$+fzhwZQ|3klJ(b zKxqT&@O@*Cvaw2@bC0^*qnY{8*15Ek6!|OiQWj|z%SUA&7CO>4g#y@5 zMaHfv!HiNT7Ugt2rjLqrqhs^2kX-5=eQ?h-TildCXuuw`?}Kdp1`Mw(j5@LUUVWfG zE--)De+~-?h((ybbfn3&GLqu0e#Osx)tHd5lilzB$!z0BJJ*u!MypJ2JXy=37We&E zxjgBy6A!Wmy(w;>?x(FxT|y<#lJV#~t`^xZF|+d0g z8mZ^@>C**0;i?*6ox%w+18sy+T%~<%A*1p{QR~QN{>D#VBG|q!xtxqXn?W0ke3rB~ zu*pQuw;_fK;;rFxla@Qvs!lQ85?c!<70wVIR;~qBJYUJDwffECoybS8b(7d6ySYY^Xi%3xGa28!UbwE**E3hfb5_O8Z>r}Jkj_ol@@ zs&XHUjzEpfO&Z;6sINzg=DWMYEqM!;;&v3=X9%tZeuZ8)d9WdEOdK;XUlGd7Ib>3f zG%X>h&e>>i+e+7T65VKdCH8Fx*<-`A6mwbdZ4R%;k_QYXup_)sT@v_%%U2f9O<`OO zrQ)5BaP!x#M8cxH9riWasb7~~Mk5X{MA4f!Hrk2{em(RmN^I`;(mR$lmlcKiA3c>> z3{3@PL1+QIWMi&ECoQPy&g4_2SKRGx`uMDN$xVW9d@id8*K>w93!?0uPn4X_E?oHd zj(y@cjqM}x+RCQWhLA?tZ%8;!>O$(+%r{p_g&8%-Q3?%2^Z;I;)YpnvKO4O zDkzXmR1V458ar5a`}9F+bS&I-Xe7 zrY01URF){#2B+@vcJ|~76w%?|EJ&?Sa;be&TS3Xx%EPp??6c;4F_+{%(x9y{%K&EB z!#TMzm@j>BLBcFXf%E-nk`hOx(q5r9U-$BpT;-1f44E|fR?eGdlGgcb26=V1Cy&yO zt-ZO+PIe6Bm#3oLv5<2nqZ9S{4Ah!Yatd$fg%QwSX!-qK|NhzjyAIj|e}wzj{@Lxn zKkI-0YxTbqeAEC^d1=-pqwa@YMr+OXvLfqJzB>h4G#K6sMqx}7qOHpJ8 zOfRRv#Ua05+oLnd$Kcv^c$xd>0ckEaJr#TML?u$R zU#VfuNf)*=CXjl!s6*Ftq;C)8jhxPav0Z!S;x%S6da;_C|HpoVynXF>_%z{+>NWA}RA0!2c9!BG#I2`!(Y4j zu%k>IQ`k7$9%)uo}-qw|1pv~kphsH8X zCx6NdZbqgHC!QmY6s?)wwvPt+OFbnn+#6iqyG-NX5$m0|iX`-Lof8q9Cy8{WL_C+! zK{FQW8pKNo^NemW_MGC9OK9!-oUma~dm&QXM222z5_#P!nQSSx`QB<&yRAsV^&Xb7 zND21cIUQ!!u8()xyX1&F=zQ;d6><0BewP`V)|a+}J~7ov6Pl^@2tH%1LA!AE#qPOV z9@=8_Ea#i&>Ynn9t`9eA^dpA&UbPwIQmHUI+*m7RPDCaIL7Lkr%CDNIJ|{jr*l)o? zA|%I=n5Xr=g~{+|>W3Hd8(0>v;O`0Se}N+JjKh=XsgYG{DB@-4%m>heS@>EQN=*TA zv(VNbbZY0xg2{D zE$MwZ-N`bqZG2KALNEMwfI}?&<7LrN`gGBGLUzg+#5H#&`x`87=9p8(ea@Ae1g;mx z4IjCM;hjlY==#c;@GO}12?Is4!zV_E4B1^{hN65FzRGaf?V750E5i>FuKu%;JQ7Cb z92050Q8ec1qz|r2omv*G54iwldxUDduF47Xp^;V9I?&;WBSEj;S zQEH_pwa(VE%LckVS$YPCDiq15TOz(L6i%wnmXx{}zAS@yM?haZE3IQd>@4hA8&4R* z5QP2b#eFmK0_v^UbKexuC2TQ2Vqb`?u{N8v_Dd}e_nC-|@$fqGB5@>7wi6Ud(2$f9P_KXSX_D|hB1U~Y?S2HC zj_mNth4iBA_g|DKUD&fGcZ#zRXTJ+vyn?@>x8*-fQ%_YrqU)`8C92t~u-&Mh>m3wv zTY=_H+Xr9rTLF!l-D84fpU|GOFJ_XNtfpA>qCDcP`(E?YyToebti2KcLXOAot6*34 z`H*dGe|1n`u_|WWz(B>Bq1m2eSE>{l@`Nd-^UCL@q%)^)xgOh0Sc+*(8p?4_4z@d$ zOe`vKJTv0$a!`Yyv+!5{!|_+ugR%zK6J?3O__cP_2no`2ey^fcfczv##ng8eI#gUh z6%w-e{I^QR&-%k{(4Y24s6Ws`nE$;0?qB2nyOT4h_ejU4hO@%Ko>&Ogs{Lq2^Py;; z_llWKnBy*WlF4NO zGb1r{@v(CEh9r0jL{a`)FSv!M2JTlrUF;I;JbxT|xoy}gw?ZZUTeiSddna1eu)tkX zNA#A8P;d{Hx#`j9W`3;53S4`0^BL;V=<)3H1Q=!lZiXF|W`;M+I+hLaJ}>Ys`Kr4~DGtup zA{#>Xk{K15+ZmkB3Xki^q>pxiaj$qLg%wV!v})Un(Iy{PV(zaXOcF>=mt~~#+TWsM z;m*kdJ=dS9?(2@UJrxX<++(WK;ie2KR{Z5=%kPaB@cOg-(fG6c`Sbbx|J5HR_@C*& zJ|X@~`QsGqt=OuY?(xi(;`_M#K}KTr>;+VAn*iK49B*{oyRJ0fWnO7&x%w^58ZVT` zs6_i~!?u=%NGQ*Ig|EQY)FZT@>xa6skm;Sy4J)bAPRxE=Mb7kT5mhM#lwiiUY(qW7 zIE$F)gi?{uL7fNvZkSfY{jTjd`$HL8a*Z(4^dIFFz3BNs$1VjGI;}L7Lo9qWfaY@5Ldx5lxxdyzoj)6a&4{Qhi5p7SXK=F*=qPJe!dT{m)0fn*_wFjf-%e))O<|bJW4V@Hj`6U7u+-V6IskxD(lvVk|$hPs4!&BcHadvV#IYB9)GjEwmdqu>zq#ftUjM|FY%i0pplgSRNAFUL< zAKx}9EO*KmxVt?ZVU}r89)&Gkg!m;u+>(Do{J|jp*}sf`5dSB{PXXdK{~O|O1o1C|{!U!@ z1ONS)6Lut5uoIl{k#~viAm939*U>^Kvf@LbH0V}J*fteAj0=eY9kk2nG zPqreft5veLCMF2taURWj?v-+5hF`FiN;6t%uq3{U@K;Lx-;W*K>(BCE^w0X|AF}@W z0+a>5z)Rp2@EY&~{DA-<5C{Tr<48ilG!zH}!httH1P}>C0dIk5AO?s9-U07{I3ONK z01|;DAQ|`oqyVWv8jucT03U%&APdL_a)4YQ56A}!fI{FCPy`eMxa}(i(=wnOr~oQ~ zDxeyu0cwFdpdM%dJ_8Ft6VME_0Ifh9&<=b7z5*RUC(s3a1G<48pcm)^`hfvp5Euf6 zfe~O77y}T%I4}WB0#m>=Fayj2bHF_C9l)hy5ljhBf#*Mg=?bt4tO4u52CxZi0owo) z*a3EdAHW{44;%m};1D0vfcwLLf8_FC)bw2Vb+yx8Sjc?Cc*QK?i!vhK zGYuzI9?9&NLs<}%(2dNA6RR&+$jnDLRha;(n^`l4vb3gh;MrcLyUn7nYO-aZxSK2d zbMDgg*ffSpT0^fPs7xi8Oc9RuG*moJK0Y*D6r<1+=x8WSd6gYtvmYwrsh1a5gQj4h zHj=FGOuRYSQ}hFly21h;%YN{+>ZR6z(O84`gvxH=F*lhv#cVQ_1@raZJZJF77GB=# zw@tmEH}&~AHA4L^1G*J-A-tv_wK!ltRo}~^_EJeyjFF#re?7vLLiy+dhDe9GgkrtV z(=%7z@gyEzIH{h_t}uaE4^-hgW;Ty2X>JP>^S}1KE`djDu}-YIG;VCIH{)tMwWP}I z!@(ooAA}`17gegYwEEbylOrgzS`!SC5*2hTk1(pfz77Q1N|5iI+XT|G!-c=VG za=RErd0ebbFcxA!a~s?+VV;^x5#IVlxOve2hiMLFa!Y}&mnc}~E{f~+VE&f0`#hgn zdy!r}s&q)s$kf|4r$hqu=@gGllzTY)g?=1=q%$t}V08%&&cO9|hUO4`znBbpU%kK(S`%dqB`J z5^>u*WL%6LQ;gz{g31%3srU~o8BY3+^ea$(SO^7a0|Y!W1G5&^u)>ECIUJ*JHhZ~8 zUzp}(>x&=<7exF$3eslPDM1&dHquLT^=W7G4&79D2T^V2A%O-x(;GdM_8X$_Bg~Rv zdM{qNFSk}f7vyLqo_Ui(XHvA6KGr$;#0p@9;mu8jU%?ooy*_Z?gpw_?Fh-j1_?laL zdnadisL90yTFL0C*o;xD>xW_$QR8j>N|3wfIB(4e`B3p!Nv&{p5SneAI4!-8i5rPZZH1qgJl3o7i5$lBH_d2JH%YuDek zjfl6=MN}GVP1^43A{G5H90n+wEzRBqq)71#k^KCYsOUFY&Z^n;W>1sFzT{ma;?UIm zvS+Qhc|l8OPYf;1jb?(|OfF&SVQ34mF|pG>Sitj1K7YjB&|lLED@jPEkUi%mKj@`y zEt4FA7MSzoJJ-mxI=m>65_uDazxai?<8v5ersd&bH<|NHmdU&2jt3SBU&l>WuPWP@ zjUBN~Z{O?ehkl1Tf#+Mc@h` zON-JW6ancaDgx4_D*~YxDUsemsR9DhrS~q7Py;0KZr^j>neUu$)}8as%)MvLSto1# zOoAl)pGJ0h_VdL050*a9<6zt7pUfi2fZfK3ld%rvbW}OQDH?l%#DgVm7@Y^IycIgt zF&*yDFipMwv$WtdFbpYO`j64F>wDP-VzW5rPZ zVv%EIJ(>jNgOBx-%=SXIv0O7B+3%6ol!Ot%JrldU&!~NxQij~?&UiVo;Y}ufp#~)? zk|%FyAc3iiY7RgaJdD%)I)iTBs$OuUQ5bR9{^``P+2{&hOx4@r#nbC|oJxk19=F$X z_s}Row#txLQJb%ikEIm3i53C&cVpR~&y#Bmg2AKemsYZY}oK4C8MmQM5uzrvPb zGZEn|qGh%WlYl#kIMh$0ADVAWyrdY>E1qZ-sYiyQCv##?bQvOMA1n5Q;^U>nGjWD> zNNtQ`(whe1bnK$y_b0KVBYay2S`~HOnVM>^??v;zm<|>bha?}HsCPZvO))VBI|4&+ z*WI`1R%b-QN8`o7CvIBPQ6 z3@61YV00FgBZSE>$p>~)b3gUGoVp&o(Ra7Bkc6+H%IZq#e8-ePm4rdI-7iRKM>vLm zVKj$w<_0ru@~1E+ABVN7{3?q&aA`mA=sg6N?w zv<)m)c75*JC>1f5Q;9Ra?BMRQCSlxK^D!7(zT2vNB_~K9 z^b~^eSM1DABF%n5)VfCkuqXN-k52UU3y(Sn8=5%5YQC>f1_tR8FwKHFfP#{yqfG(? z`jgYc?J=J8G5Rlg=P_N*w*qz}4xF{rusd6iULFN=k7Pu(>g2|M#ZWEh{#e=LZ7oU-ljwkRh zLj^)Z+ZQQ}vIh5?qnWwCyPGN>;x&XNrxNbn@BptuV-_w-uaqMNhV|pkv@CiS>nM%7tc|(K!m2QRB`|+ZNBZR-T#- z3x2XO4CHpysc?K`CifJx*GZ3fmDJ(_R}r$TO70f+y~AD;JfnY^=bDKCU1sFhGL}4)bnxHGrBI` z`kzXEWZ@_BC6(#KIckM_UDhAsOQ1$FV=TqKx|o`a_a5f4#|l1+n@aV?b93vRF0LB{ zEm<_$%yySIce}xa+uqetec}^Z`5>G{o#O%bI%-dDj_}jV-m*%cNoU3 z-Gwl{fDnB?Q=8f5nHh%jsK}Yxr?~EGQ_O4uGABLl=bL}(S>=NQt9+)T8#yhS@4qJ&&*Ak8LLL?Wp&-$EWsiPl@3E%WEE^iLjQV z)0`yCMR**(Sjvt+REE#Y&dd^N_1)v~M{guYa+$*02vNU}NfusrQpzlfqLSx+~5GJ$c43kHo6Y@3={^-d~XN^}5uX z?mp11n8k29wo|L7gaSDnZ0%=sHQ@|=Ln{bDE5sjeWRfJ|5G&_Pj`KIvB2-<(1{$H8 zLmHs`hh)_hT_trK?*jsi4R1l+1Dxk3W(5(4>W^WUao)b@*^cCZY8&>LW6e-0s9S&N zhocy2&!=g`k}Xo27b&85tBSJggqH}vAPG?p^}=4!J~YdF1hX|fPi7)RLL#NtglJ?u zmGh$?12FN@gVoifEzXQ7FT`SJB*p5s=>|XIEa-L8cjx!$Nu2}T7Lvp0+l2-8M~M=i z?+KAMxl??{%LM5jLW|>R&o9WhzrpDPKjIo}<)7oP2{51he?$Dszw?)o{HuKaHxYI$ z6UuEY7o;pczWg|wDmJ5*p%3BpT+DCpj8pn5<>*BxQ(VoGDtma>$MU))Awy`n(vQMpug@L|#*2xWmx5(S9w zHekNKc?c2d$8|*<<%D%c+o+BZnAe+bkMOwfP?&AfH`M7Pv%Gv37#>4{Swy@oV-1(4 zJYp)TWapMU&s25HyEa^g+8K~DIA+R6{!tHY?)2Clt~)bu%EPza8+FPtjS{q=LHA|kEwX%-Or#@v{6!;z_Id$BUTDwXBZAb7}~ zarAA)*tPnYFM8Up0_5iK_t9Xu#(VS}Im+)*TU z1_q*4)OQWL<7TJ??xl5K3hw)Uo>)zGF`a5f9HoBgWj7}N#+w{@sWJnjtII+^$Bztf zQp(z$xM26cJfWl*Pr}6;i@vjDQ+8&wW5SXQh3)rx^1};=+g?9;bNtl;zdc>M751r-EeFLOSo0Wnk;aZx_a43zFmmIj$vnnkm`d6p}k^T+$99BmW2qMP~S z#`ZnW=m!_=^lh`NlR3|0UVJqybY$UE^zMaw=@670*{V+*peOg>Su9GC4pIrWd+eyA zi@bSR(r!BVLO(YFY;KR)P(`tlzlA>XajJ8%Rb(;$t?+IS!@>JX#}Fdx$B@s`Zpp=` z+FpbH!b1BMgL($7$(})rF}x;qlaKpXzp$R`e(#B2kkb~M;GQ7d!m$Om!K#%*SHbYx z*Lkkdz@P!nT?-;peUGWndu4_a9^GDfcqYrL?qWg!HBNMhaC2jaJY;E5*i^7(LMcR1$kC_gM&hNOgc-@L|X{zcq_dC7#tgi>q ziN%fq+@qleE549SL$46^L|hlc-GU)$ELnSGao$_rKK+B~rv?T`{aE zs^<%#MET2?9rV|5Yya_Y%L3|{QcpMoci$gO4E&K3r=t|)#MwoxEy6C2jW(knLBoxB zJKMILTTa~DJddizh8VhTKItO%etqoCWIXJ#K9<)3k{R1YCA21Dm>-9H8O)LB-r$7R z6bz(fPbj6{VJGt_LTy#-gB>{1+~6H<Pah7 z8te^93-MAudhjVT><;9wh??8gXTmt8-=(enzYRii#y9FNw|S)98M=ncj#~;l;cr}0 znQbMsf;1#Y1iT-Akw2=%C_C98ROl2*ZXbgvt{Psn1d%)}+Y$!fb@P;^da@Enk$h8= z_DS%AfN1p-Bxj0MY`bzIlq~w`*y3QoJ$%}pX3gojk?1bhBm~M`%a*Jv%kil5P{2Q0Ak=Qa1J;R{9cEY0OzE@ zMc@)Z23!WN0OY_`;2J;yTn8utDu5cG0cZg_fF57~7y%}L8DIfefg8Y0fDK>=ZUMIe z4&V;J32*`201vBfCiumXaNs_M}Rh<1Ly*JfIeUV7y^$0BfuCi0Zaii00uk( zo&x581z-tS0oH&GU<=p*_5d7k0DeD~cyR6vJOf++SHKN;4!8pzfG6MucmqCwFW?9G z0|5X6cme$XUH|9bw+2-;!=J?UmcxUrgvdLot@f7hS*oRyWBPQJHOhdB%k*2jA z`NtMNmPIpK8QKknFK*aG_&Z*6m6B!k$DV?BtDnW*h`%Fy>_F7G=Y5 zju;1TcOpb$%2Xr)yfc#ydsAx zK4>`cs;>z1q84X!V;u7K9eA&_Bd;v4vT+&W>xmPAM<0iq{CX578GH;m4Td;FK}pueAP5cLM0ZuoNZgy>-_#-^eOrXj@53mXmyjYEDKFjAUxC3cny0)-j;O=%a@h z)>*cYM-{UmPlnO4Q&aYTcmauweQ4es6mkp|RbVa;e==h~@pBtjaAT*rl?0bHB~{{~ zjLdfHHP_#H;k30s%i^VfxNW;t%v%}GnVV*PG3Mr!(zkD&FCb@^zMrM=`d~n>TlZk- zLbaUBB_6cWQ2Xj#!H?a#b?2?+kKi!jJSJ3D;atw)zhoc9qhj0&v(eiv>GvP1K%=e&P1Gn|M9*IBHDkv#$ zF*&n;7nQUh9F+_QDIbn?Et^Ul-j!_ozSW>dL zHb>1!EkHA)JRQa<$6;M&m(Zw2pYp1~WwHQU;2#{wPR$M+RQs;8HJ zvcJFQz7xRQvjDp^*$$r{9yHLa5H$7veqLnOMyrCi`_6Plvt)^iLtw?VUWm7Tp0CSC zd(Y&c$>VCzxGp!L8scv;Q{`2V?Y2`r`%;7l|Bg-VuA}3(2=W9Ar?>LykiyEV=ZG(o zH>vLEtr7hXUvq ziIOxzH$*+|LG+^<4Uq>Sl?E+$d1wP??N}*lzif*O%f`yliLsrvZt@3(l`=4Kgix(8 z5P6BL`2|@3m4^P)kBHZJT(x|-|Dj`j3H35~f$b+~F3ywVBa@X035pNET_XRs6|SV$ z`_6A>WbhdTD*F>;D}r)8v#0IEa*XD>?bx-p(&FL!& zzopF_|45eQKMh5O*@OEQB=={_II|+-zJUmwMyswOBSa6wo7K3}7#xT=@XPU+I~64K zofOqABO|1Y^SW{;Cj1U19A~?DwkG}@Ke&Jk|DM17LZv-`W*0PfeMNeanueB+{?=`d zJDglX!Xl#oK$uD3>!9F}H=$v%aq$U>N$=h#XJ%#RO7pQpbJRfx_IpFMZ} z!oN)aVec0t3dtml2sUF+yp!Wu;d!jftmuuviCE_&R;!s;fA<}rOHZH&!(-pPHetiM z>z#=*>kIg-^?t0ww65oeJ>e1T1<;oWC){dX2pQ0O>?fJokAfZVd3#lc##nN1%r=;i z7yG%ECb3>oMfu@lWp3CZ$Vz1ROzk~K^=S+Ukl~6gabXe)uWh~=V~;2nE=5b%NrvSo za*&l8HyR0AZ_NmPUf!e3#X@QRj%F5|#T*kuOI=!ihNGWq9>U)6oz>I>84Kkk;_cM0 zUMsb7r&jQDucD<&=g3l!qm42>i%Eg*oBWq2?R~am9P?*!H%1yn*%TZS6RUjUhXgyX zv)i(Ta5cB2TfW38As3w^n=YXV;TWn0!G*}%i#pB_FZhGOlFaI}UEXIua@-@m&V7@= zw?0^&=&V2>>=xM(&83!H`fWTCq2O#oGrT)+YGuC@;l0X19M`|83ep-R6_SzlZyrTs z$BF_5kaSJVIJsJE0;SB&K|bD)2qE=I3NMEnHJsMG!)6+cijbtsN3D2tSkYry;-Y$N zJ-TVA9dU8F79$gbV1Bt+pk_bj6JHm(xXxmsOC#8G`$2$1K||ZiN2CuapTy;ze0fs_ zk~SbfSLDXWd)t24<|<9poyC5(4MayAfk9B0X$4GrL}N#tx9BkBau`rvZZ=5A*j|LD ziL)ZfBv22e;$nO|>0j+1Z^?Deu+52JL=>d$5!6Msm%(^4Hf;4HBqIG|UlMoy-DK5q z7EO?w$a>?og&@Jb%})lXihAUe0WY z74#AD;rMxg4&#sf1)+F~Zab-8d+Q&(d%V3^Ny9@;!fc*#DOZ&=y5U~(3v+%_?($zeR!A6_UEL9>g7R7#C82+&5c+I`Gv}+pb zs*R_V4?pwIV7RxEUt3F3(O)!p2QDJj&WhtrADi+~4Ee z&X?;d3`Ijb`>BH$Ta2V&s?6Yvd*o{76c+Qxl3W}>hL zTIP4Cd>NX6@3Z6q47M^{=pr|-ES*7NLm}(H$0Pfb>c{43-8Km$JTp&X?ms9lKN_UG z!*Ica<}-m8i^Zv8;}&2Pr8RM<`iI7Ek6uBA1DQ+M^kh2=CLp~&j|2Gc7Mkf|D7Ppp zJZ{=^+Vd&Q$Y9SoJD=I0txC(f zVY3D6x@7gxO#CqC^}gjQj_pAa?k+KgH}jVGNSwD#q1RxicFlm0%lz%3z6>{n$AFSW zqd9A=RPIWjz{C8ww`Zs&?Y2&BHw3YPYQrTsaT|^wIC?2M&gvRl8(Yz@TP~F8)^wx^ zFS(KNF;l~7ckz{|219~446DRbw209)A|uOOUJ~ia`E>6|%pMK#1+fk>RBG0T#kHZx zJH679#XAJ0s1&P$_w!ogqMb5#uyIA$E8;?%T9kI4)_ume?MmoUs2IM!;v{n+X7^5f z7`li5Sx967vZ4KS!(3PpUXHA+Uz?C#K16wDPEKx&E!>V>7`bE;^n;e^-4{r#Tf#X7 zsx=|hWbQT#qt}Nv(Ey6F52qHOJ|O2^1s}A)l+ji5U{%O%TjFyF-e6)rWvQ`jLLam; zF)$CCr8eeg<(s~KVx6=gZPA9XO4?#^e7QaEKkzv$=Qd9}C5_dkKDj=nk(%(kuT8Uy z^PU_&l458@maRreJ(}Z&QBF+RxhVVQnQc=0I8>7#7JlGXs9Lb%3cgFZeQY`sHT1%( zZv^$zagnn@tZraTiWhEAV5q`8joQ>5ziGF3^=y>L)gVu@U^b6uAHF`}Tt`+>S7zf_ zhy2dn%J~+W^TTxg(3AS4aimB_uk|=+<(0@K$;keS(hi1mD)|TeljPb>-}!~&<~PL_ zYtT$dFL3QOuKJg}iHjETSrJt0TBn}(?3!#hPJT#7km?*NVA{;sG5Rt2Q|t8FUM@c^ z8ix5w*x{~YIRRg`lo0})L z^4}e0y9DXa)^nW~XQ;kPDaZ#F%&I_wCQ_S7cRL{+xYa`b^Z2^TL3h=n+{mA7h6~)! zkYf4|=aXvuEX_-$Bu}mFeQ3r>zw9^*I`4^1QxOlddCX54GOmD;dxKRQ}M8BnumwvxMNPF`mB$enKZ&R z4n>vAA&}rumcyfQe`%8ONqn4QFM~tlJdv8h$6WL{u6~NLR3JqDu z+h!Ixohu|iDAx9RPr2O^Lf@ zMQJ5er+0c!Wnu`h_XlY~a6V+l`e^x^hBe+S@Hgtu@r%y?CF2)?f5-p-tHhriAfkRj zD#tsh_J)V0#w2OLT)st7p9f-qSq4>^ZxC54y|(%E6eB|9t?;Y#1T4 zdzYuI>SCno{K8~dQ+Vk@chT`o-nte}s_c{y%n1b(6xd|2H=qPuqx;J>+-MgF*AA{I zhMM4WaokpgMy=j?UGR_ZZ={`je`Q)={pF7-3KBBGsVk|97P~2V=Yk4CPby$Hoko9( z4X4cV-#b9yq(1)l`-5SR3W6C4F;; zGRhj7YF=$j@wjGoi7XTSfUtNppS=W;Fj}TDK+pU?{1)+S0DaAUj$Y1brmJ5Z~K=LE;fO4Hoon z{o+s?e{?pu;ffC5)E(W^EYBWPF@b5Q>o#av7g$pimj)as6q+8E392 zXi3tsHDi8Q)m%#R>O_p<3eIr6yLu7F+;({OLKf*yLdzj zjDri{JQ5RN4{&Oz*<|yA52*V6`)Q}aWr4XN+rJ)IJI5a{A1uYEJ@3$|z}u4L8}*RX zjj%&VLFf%5%40Kvz2>h7p_^3dtB!&)DI#l zxYZbw!xft{=x}=amx?x#7KCQ-*Lk3$iTVQ7krs|pnV>-b-=dm$&ciod5q}LniQw{c zc<%C^_RfZ;ILa7<`s~c)M`4UNg7>h0P#HcS<9$0O00cFJT9~srreCWSecq>}=zX7z zLXTq`lM->XkE-xrbNOEOl@!dAygs)~7@7RwB(IMY0{@%7O>gX;PU;2u_s_I}r>!B2$nEPQ)xjR&2jL3h z4fRPxb+v$f-=y0q)kvxgr{FRy)S9?w#)=L(!^8 zeq*>9Us+>$+RUcmtBvpPc(aw`rIa2To2O+3EIgA~l^U*=XpW+Q7Z#LM4)9iVdAkTj zimX{p$g8bljqO`ctgS5%*fWHI`Dt_9ucRXL3GlC$jxi^_`fUF%2{#QSR3 z^AKnI1^!#HV%mfgFB&)jLWl5*AzJV80=H{xZU3^ zfPE@cJk5Ey#;!v<_&2{!L@vx&;oS6eW!t0aKz1Ds2BN#$-C8pzVOcO8!Vt6q6&%2a zl@`KNaPlsC?;mFl-7a@IWV@X5teaXvkhLevh0K=rsxiAIuFUK6{$kjP35p6vqo~=) zp|P2@dpAYbG_EEgsl@*a$WaXbH8Y@s$Bzj8kAqCEW1R-M!P3dP$54T-bzPX~!)Izq zkch*%15`=#Tvn6d5D(7#qb;*fPa#9stwc(PW73tSCcaM?$fw3v8`P6L zeC$g5Ph81Y&bd7ijJPb-l*;j#^G;5)F_nb2n^WgnN8>4vA8UvX7U^%1W1rc_a%omQ zbG)a`qb}%eW7K?4NSF4ZaXjOangC7u@uV#N?KVz53(KKhfw_ON>Bg9Y5N9G>Bx17i z$8F9<`2|(BV?&B{YL#P8RIiEUY?X3bVYu(6ou6vm;DP%M;d0|Pb5QTv#FWakMtj^T z_0l~iySId~0GX=N@5NaoAm6b%!m41R&*6q3L%1ThgXP8JEJ2z- zzSd8A!z{;ipNn_(SkIt0+GVoFQL-@WdaAY1+%lQ2X;Q*Y zZ=UAof-m@3DApp?REB%3xG*|nhdaIz=Ape7bn?RI`liv{fHA~XM|TEpY^4{)O21C!$h>oD zi~Q8&BtDI%W9F4q#B+|gUPr01yD2a}0n+J7$BJsLN4{eGW$p@xnj=YbG1x$nT4x3! z(Il5~2Akbv26&v~Z6{LN__}(YrzBjpJmlTdq=+Y*rq>tTO9BhMRwSoyPqrNr=tej` z4W(L!c^7MZQ+xSg<*UB_)0QQc4{v2WYVjEjkG$u;%-fX|-yV$Dyt&7dVV9wry=Sem z%w2me`&M^gL}~Gs@nItt>@*Rbi0r5f_x3F|#s+(5RE3F%ev*F@B^NYD(kHSnwUV>q z{d!1?j;e60yt3~3uu07N^;Z~cq+K>POTY9}qUz7$lI38!TN+VcOJvzC=jMFIxPO06 z>&C(~s|!sxM9dt3VqmdatYHZ&;W=m~d^Ff7>Z1(YLVp;^<>5*QG>j+b(l0ZMaZCFObf4wm)J~`kj zn2e?_`~t;lj)U*(x;wdq^Y^R&ku1_P7m4tSR32f+9oyRhFQ`(B*CcG-6lYhAJm1vN z97CLhf29UJoF>C-id1pq^vV{ZtutrQW5I`}>&(o96@{69j$gF@N&A;yf*6ojKp^lM z2m*qE5a10E3WNdSKm-s8L;=yjTObCA1>%6;u_?bbfXhk1JK#N#4154mfK(t2KmzGN z29OD40ogzfkPGAi`9J~i5hw(TfMTEoKmnhCQlJbd2P%L{pbDr4YJggx4yXryAKM~0 zZvvWu&%hU;1!x7@fOen*=mfq3T|hU`1AGH|fj*!g_znyJgTN3l42%Gyz!>lY7zZYR zNni??24;X+U=ElE7J%Q!b{6DBS_YR_fK^}(SO+$MP2eZ61#AO502;smyTBf>4;%o8 zz!882j)4>46u<#^fB^ggAfUbf>i(&J=O6!k;5QZ=X{e-I(d5Y{HKFokmG$Q_{|`rGJGM< zpr9RbD>vy@x8X$N!GLlE?Gt%X6;~zMDZvP&{qeUmD#W$z?g5ZdhkZk-C(f2H>GxU< zMmkxnCw^*`P^kK-+(oc;`#6 z4v5F;9J_$4k3L=Jen0G|H=kQ%2n-G4SY?LfIoLQygd6y2Z ztg-rki2LrO3Ge5vlqM>v*m|Im+giX8;?Oi;yTvl47ufT8o<%(<>oT>;4W z`j|1A(I}_A3}Gqr0s5x$0?+7N%#+dLB`S8y8}C?YJII;$i5kILNGJ$?=r34LDEA{L|#XlG&(Z+^(bb)nf$^1>QAy? z%nr&E9+MExb$A>}rM)mnAM0VM3c=MN>Y7JiK-HljgEm7EA@3JNR(Nm3|I+V-<8d?**sBf?qbIrl23q*3l^J)fBZ$7I|Ypj<&$DrFcmZ_i{jj_SjS;AKipz^ z^_JKIxgbq$-#m|C+F&Mkq$+w^W%oRE+icXv;0jyn#U2taITCdm+GWF7iDXEq6lu{f zhz*m*;JDCRR?d7?SLz9vIOrnF-xZK-8aewyQzgIim3w*4 zuDiSVy63UNUtI62deb9f%<`O7Olk@97>W+t;83enV>|He#wUi$ zTx1lqOK91W6hEucE2ViGP_Vnb-wxrMzZL!M4Co$CkgDUR6Uy#Q5q&q1NaL!BZmm;_ z<4sNdJ}_!Ev~%l<+3Yv36x_!zhQV*HYH74RJZm%?E0W7$R>fC!-e$?F8AO|1eDVaDAf za|tp_BgK4I3-=&%4l~p6;V=Q8(Ikk|$Hw@2&iB7c6ZwRmE`0aXZ|BPNhwz~Fm9BSv zgT8mxBx2!R(Gg8D9$3XimtPRqX;4pyKArqKIm3*CH@dZL)~fnbwG3-b=@^HIc98>n zYKGErN?C{0fLqV1-PtPH_NQ`agi3gu8FN+ht1XIcN25!Vwnnx$tt+c2vgCK`zZ!V6 zs(6HukSC_U4Pb!L`1!07c*!GOA}k2k3Q+`Muv+}Od2yBnW82`^$wuI;FM;kdLHwhi zqIa~KM}M9bslINgm9;*RQZ?gH-pgR3qL(NXndR+6R_d(PSgD3a;X3$%0IW(gd)+bk^P zxIumf#Jnh|64jAUyjiUCgS)?FDb+;@{UL3h643DjhU!Goar2?J)ot9&6J0&_=ntvA)y`jd7s;bj z5bc?m>I>mdIrSn4lvG=KANRIV@goeWoLQLaE!CQAL(GjfWQ53Ld4rYaD3h$G}F#0jDe zv4XfkoWXThhy}Q;@yAb}LTte0Kl|?v|BLzW{=B{ZKdJvO_)pk>kO=yo=6~IPAoNdY zzY(+#`)m8c|Ah9JK>PT=?tc;aC$xVa^!w*8{^euvU+w?j{`dOTzsma69zR&WVipFo z!yK_Qq|C+!Zk2M&8r~rw0IwR~g}A4B3c}yNjy4|*6s`~|@meIE36jh=_G1a-KI2kF zSs1DrzX#Y(4Eelgv@n#^p4!#kCo$#evWUf$5& z1Y?Ik(#LC<$LYsOa!XBG<{ii~NvxJ}2%l50e73n9bU- zJDl=QdQK*VTVxPBE{_?KhC3VJ3mO>Q(IIArH&XoMgL!pYlZD6LDj+OPO|#c#JaOf_ z10^@EE}pY;QgShEj(|GsfV@f+QcOkTv|GpDpBzi)4Js6i%nRRR$FPkk6tPC^>%(LlE(wTrkyyz zCfM!vvYJGefH_uX*B5H8^bB99sIK?te`Ks4LQ2+q{cKFsvyU#Xyrj-(ov%0LKWswR zR)5c`8$M7Rw*2mAoH@IpPVDp&wQU*OEiX5<5!M>COgg9I?mY3~bCTJ`SL3&vytmEK zk#%;~BUS6sIrYL*^W~q8QyZG!?Hq>~vAwf6PEKRckdPLx1RF!KF0Kl-U#AJfGNMCE zuOy4f^{TvQdxEU1o(qVteI!}h6=SY^FS-?tYGv!>5$wEqPhWYifJu%i(*GK|XQ47W zGP+|Y)TcdRC2ww)#4BtQtVuPG-iYgl=UrDkm-68A8`JE>fn5Q;7=gylRqHH&w~zKT zqDgLzBhzh>LVI6b2PGNHuTRCQq7?W#Mmls;C5DH+d8<88Sohm5k1F5qD}(o9ExxPy zo{48W`9xv686O&VBHcJuC6dIYJ)dw`@dgpdmM#sFJkk`~Z2W?3v@7}H(@eD={nXG`+=_U%=^wb_m{(8tc21AbzIl70t2|#~`%K^D~SD_h3kP z%cirsY~4p;X57nD=|lgiL|4Hy^^Mjvmah9#16NdHG?fF`3B74IL*$!Bh5dCD(QS|H zlP07an;KmY%ciF%a*s1FJXLvTCA&9s_wkFf$r+ge1I&Wxyca^wq+T8yEaZ>v#`ZQe z-19iq!+S!(NaUMgA?@hhd_CP4y|Hel%3%n2q;E&5eGD8_T93-0n#po6Y-JqPq5ZkT z$2&^58Y#6^(*H@tZ=RLH>ID<`3KP$SSmozKUaW>rQB z581FyP308H+;^$5Q@dH=MZU~qRTY>L7R*1<-%efa(PNjfMqS6w%vgsmTa%|-s)Tcg zJ{T+%iW6#&sPQ{a)g^Q6PNGUFH05om9wVG<@+6;59z~RLMBN&5m*#VXwR*U&AJs{} zE}NR^ezUvb!c+ATS;y11t@q@-ob)g?lU87}MO(B2x_7(M*Rf#Zq$urXRXuvwq{rTo zeaNv#(0hSKnUhuWg`~0TId&SWB@jAf+;Nik#`z%hIg-57&9`vP=UYs>qd-Twoy(i8 z0fXLoTB1f!RfSXyl}i|B797gEp2`gd%940{!gTH{=Y6-2_q#mlgW}JGJhPgvO^Ekv zqt@xwj`GwOapbLnA0v)gHP2}{AL?OpL+0)@JUZ;9-|gKum4v~$jTfBE%Nt!N1tbJs zK)v)-y87k}o{{M%wIj#f+M6%<@w=el)e}62hZAEswj+^48b_h;W^c~+MO}oPLDBVd zBur)Bt9C!t^+M^Qznzec8a<%)WM&v_;Mts#fR0ZA`zqgzZ2U?m)b5z@(byKV=?LW* zrN9-%x{W5ws&QBSif#RBXY%c5H-c;}lKV$OwiD}W!U>9%=hRiR1_ESoPvRD$qfk4n z)xOda95*NE?ln6fAsL-y0$HDfigt*@l=w%m*wJ2>hMl9L?T67%2t$d{TjI8vwat~K zvwH_gUCdwbdAuwWt^cn&DI-UvppH@`)-`)TCXa8O2 zpVWWmJ%9TzGk@Cw0{u?q;4o4tEg?Ihvd5}7i1cc8*3GmLPQ?$Sk`PB=mc{J- z>2t)_mga+9u!k$nXYAncI%$ZPm!|HJ2S|AHC4Tna0TL&wU$E}^3*wJBSl8Mb_!yB| z{cioJ`Q%{t$=5!K0~83ZKV>ARfJ-P~l^+f6b6=|XUV(A`IQ3vq9f7dDWm=`9>br8M=caG_s(ljq%reUOY43-oD#=-S+~dP+;^MX)Fq8H4_-XDd(;2ZqiF? zc_MssDzeOYPrW9z{b)LqlyzX_A_lqm(1;F}}& z2LJM4MtI2&OEIvv{z&Ad263wWLkUU(_n^kqO@+E0nwYC7!e>^d#;<4hsdoE(3}EQ1 zV46o6#|ctWqSSst2EP`r)HH*N;X2w6!?e2S=O^7{UgGNzOHWz;e8-HkRBPcP*a%Hp z2dMbFmt0+TU{?+c90+t1(r^rq86EB~VRg}~9qONS~L&6jAmFETeUO?eBZ zlCoo{N(O1s2eB)3PLFQ}>(3%L{WblJ3h>sduY=c`3j&O2j#jbgIPHb#;b!k0l84C2p~&c=ScO3G@bIWXGTM;-$5@UCF=(jrBW8N8q{H1ztox-WC?=ZVL1 zmV<`zGS&m9-!n|h)08D^3O{bjkYivin_@et{mN=bh8F69#}oGFNm7+EBxVX*%H|Tz zCQj9wY}58>v3+|+b&E>t%;?7>Q-<>D)DlSz|Ev}%1x$|yZ2W^f)*?GMLwd<5aCQb} z_L9DnA;Lo0Csb{XkzuU?{D>SuX=CcJ+Hz2D3Mz| zBuymE&{JiTjqwvlb3hH%_EK#w)dDqj0;iH5KSwV}3RoQRQEu{mIjB#GB?a4KSe2|bS^hZ!oy`4E^ zVdpQ!+ppxxvXb;3rkmb-RV&HC{1wU#S-ID zQS?^jJ|)5tm0l8kkO$&Jk@?a=nr}wQiw=#P|Lqn`a4a}$;BSL#aDb@ z)vC#8(f-Wr*z-Ia%W7)qT>y~<}NRZaYboS?tR}!qkrUeDVs_moj zJYh|4p>9*nOo@F_%$cq~ot0AN|FJ6G|JDA_-{=4Qv;X!xAI<*_`(OG056{05fw{ml z05R}82H_ky7XU5*BmgOJ5x4}90hfU*06B0KxCT%F*8xg^3ZMpP09t?!pa&QLMt})m z23P=A;0ACLU<25JTfl9A1Gocl0$cz$zyt6Cd;mXi7q|!fK5ip$E(8bzB7i6$28aU^ zfFvLVNCPqe6p#hv0C_+GxDO}-N`Nw;0;mFNfI9F1&;T?6E#M*W2+#&}09`;2&<6|v zL*Oy+`}h#x+ypQM%m5hh1b7OV0~UZKUq0YAVW2mpQ`(+hC^@A?7%z{c+XZ|WzWA{KYrdyVHEm$MULjjx^% zD|Wc`i?@5z;6#|4LHXg3Js7$q`tbYdgy#t2Jt{Guc#R+Hpn)Lxldm+-%i>FgcLjK_ z$P^N&_7<;RU=yD+$hSw36;+BCXw(GI`w9eh;DQ3P9O^ijR zeEh16<`b;0UD`iWe{u{z99Vx!0Mn6dpfo(JDr9D;sSwxeS8;D@&S1Ftzg@3PIrB_Y zk|-JS{kxy!M=z9qwEBRFVws`rlOmikt-Q?5%_1SF3NZeTjfg|12Yd~2t3q`Pwc zoZ}m~iKWevB`0%M@pBoHv3=xaFE^vum6Hu7qurHJZp)#q#hOH_V8xm}x?9iXb9JK` zSC^#=(?Tse9)^Bz06cGIw+Jl=isCDE#z z7gD!&2(`cNPHNUoSlt@)IMunXk#Jk#WeQ)L5Ma_9?Xdb)D)b{^w=vicZY(*YD))cDl)6 zqTYQ>j+_nNe(qb$=dYk@YUWHU^?>~f~Cem=Ne zyE%LH|6%VwpqlK`MFB@aQ4tYAnluGPsnU@a8%;z65u^wTBGRNuFR=mA1qGx_2Pu)> zL3$G+z4szvbU98)z z^RH_Sd&|+0`6%MROqFX`YQJi(f4f-Y&J}Xb+XYvzgsl1u5Trj;hlYBbTHCQ);WG-- zclBlbeB|Kk^tH5_Q%X;ZD=4`e8&o^WgDp=w(yr8peo#LBc2~L5hpLBLl7}Q^&r`5A zp6{V-{g(Nxhtwm+DH*o8A0{Qpm)#t>#ieeiW47j-N1K$q>%PB=di_Nwt_I$Hk04H7 zB!OfmQkpIL1%XPG+nPI!yP*}@uwwoIqJSEIkj)z}eNK>YAdu}u?3g{bJ47e#r9Qj5XT91tbg1=xTSi;hn$yt5p=}JPMqsnBimLQUzTxYbV_lAS$H49 zDBM?o#P`i5e7b4VnBa3^&q23qcLwmU) zRmURc!XYD48|fpTDSrzOU_~Gf9Qr-a#vgG3f01Y7BxD#QAvs7&a_A5#EbF_22sb`N#OP8`fk05yqbaf9LV%-}?F)KQl44ePL(s;OON1uly_jA+yY% z6U+QtUYP+H!yiB#q#~h0AQ2Gq9-z;ZZ|NyP$WBC`FDAI)$u^YW>H17R` z{h>kcJ$Ube4ej&d*O}6^SdhYjDai3$JC$9ton!hq^Kwnn33KO(;@H02>IfBo8Hmk! zx}a^8oN4faSKBgof83)L+5xoy77rm2)99b}0EP_EISIWp>m1VJj zH|6oU0;N|p?O_xxCwFe2xOMqaxSFe!oTXQ_0kg!{odNtP!N%+L$V&+)-U@NVKGnbX zb_f+ZRCOirxy=FTJE#R(y%fl_U*MG+ZV35P?r%h{B_Rv+(hJ2SnT32hR~;4|lIBWM z{L6&KM^EdU$p~O8LLO%{89Ah!&(Hr(opH!Vc~;=CfYqDh3HFY2K@+3Q6-?TMbGWc{ zM~Ol84;o>&`VVz2SxyC6XS?=QFPnQ9e7h|E=s=zGgWJ7i{;6qdBfSH)x2OYVzXT2n zsbdc6*PPzZwDQGOWs>5s1!K>e(i!fL+%|?58S~DcrLRgiIIqU_U2#t* zAY>Eitzgf*?(}lCGis4yxsIokjoSopEr~G*7!Yh{fu2Vmh&&Xb&m1TRKQDZM{-I$3( zJ!55Qcv9kGx|;dL@iBoh+gG7-ininEafZRD&{@Zwy@f^A0sd?Gxarl>D(#v4WUVZJ z3v9)pcGv0iAr?z#=^P~etm>;x+K#CEGr86&UA}KREv14NA_!scB&~X`ZbaX>{}sET zM_ba7dA=<8uoqr-l}o0hHtWH0TAqXN>8VR9o@y>V?>kn`;^zL?c&sUOQr5*W!AD1nCaXt~%hUeho9AoReF3{DZ0G37gw=`<6X_P$ zn>%$nvX(7*IdVHJ9$&My%E-O7nsJS}PoU|MinQ5Jlm)I)$O*3H>xCsur2Mu|1%Kv31oUfEV&%7P;7}9%R6ix|q$in_~WnQ25Wxc zo{}@`%36#soGIsPCM)!wq%GuWl@d(5eqNqOQIkTY0(MF{r8@GK35aG>n*=5|BnZbh zAF%16YBUOHPa&V7zaMx+2d?m6>CKJv_s@>kjv}P4piS3QL<=(=9W=Z3%$}{xmcE`D zxc>eNhk)?WBLhzoaOBk9NoM8bTqY@geTe&)v=QGr0C<+((y&DmmD#IL&lsbB3r)1 zX4Hu?XCsJRNJcfKCc7^1#{NY`K$Z?Wp0)e8}`5AN4; zCP}&U9OL!JmEo^o=d@b>3X#2c?W3F!Ja{k@#&y94PP6-Rz z`jsq+*B{1wMCc$dn7XNSl;j?F{w|o-rJ5h@b;L%QRfE`{!g7w2VQ+4t!l__YFWuPq zbaX|M6GeuQNbOyDs}{yvEqO(Et?1Fs3iIOVCwpHB*2$*sG9?|0DLUR39OuT{U#VN& zxyPQynsO(9y=yZ*j=N976=YQ7> z=6HWy=-uQao3y4KIWo=wlfn_HRobNUi(wI4DR$?#L$(Sd*5t)lRKM#zRcZaYH#BQ$ zuF1WZ_z`7t{^|Phxbn$uwy9KmZHHPk%^ai0Oq|h#@>7gzIajZym8pYNfy_xOJcG2wAGKyydl6st3$OuiF}{*Jlc31_&Voi&x8~Tz_?N$Nqq%pLW(M!+b1{t|dSO3~_CLS< zt>d>p#?P<*wf_F!sy{9EKM;Q^1oMvme~P~q{~u^y2ihNmdPV!UEB^!Szk>Gl;Zkz{ zb{Qe``%m-mK-_# zTj`-uA^Dy+Tl3wDV-IKdR*2$cn&W>=_yZEr>{N&AvKf z!TRU0qq!N1XUy@<2A>4XkJo;C8lCRm5X0G#f8=vfPu{zw*%$_p3R6n{JM4BFsM4%i{$|Qekyol-H*v8K9 zaT(5kj?3U(U0H-$qB0$J{u=8KI-cjbNLt7&WA5fV`DrIQ1ckjDr1hh&E|RQX^Pkg` zu5-reFA`ojrOJwo)QXA!#K8Ww@sdrIKVC}8dgP!`T?H>TzvoS|zOG3@*y<`Px z58l<>Jn}QqY9t{b9OH4UxraE0CilkXnHb$qIg+^4PIp~pfE9(Rx`~<+$UyZHVt2)R zYecb%c2ZU~XOwvSsMuwBzSoW+$nNRe{>SgC)1xs`p?S8roE<-My)Nn{;zU`nBgsg4 zS(ZD7CrPA(d`&17t(tI`AiV0Im6E0<<{^?)(earstOt{i%aa!x5PLTQZ5qNNNu434N<+a{x=eBFL zPnT~lReUMsTbz*-^O>6oN66hj-a*P1I(A&Mx<)EMr0~<&iUn=huvw*jK!^&YY*=^m zTH;S*Ikm$_SIp1gDWENsDkGw^JaV`u9JQ`V1`;-@cU;-U19diRRR zk)^zc0?T=&QwV8}oW7aDdxY7F9c6sbK=xLe7-D6xE5L8gp05p{4@@$^U<^%l+)HR)7;)UK_R99H}> zRxEGm2{waF@1s-=k7C#E$5_7DV{?|5RU`27kn@2-M#_XJfV+a-9v|^wiQ{28<8!~P z+wSry7tDyHPJ@R%i>?xPyyp}`;H3ik*z+>KM=v(e8T#Ll$9a%Xuh^w#@`|uh9TB0Q zEh7GSePwC6V>7t_s!8oz`h%ji9)-_&i!{@R=JZL+s8-#jb!tLK&UAdZfqRqEr=?3i zDXi9~^yo>j0poSi#47vBn}$sr3pKM3Tn~vUQFuk8IngfY*2qQq|CjSgwXZ2u$NA264s~bF&BO7zQ;bX7F`lcV?^nkst1qcL2v_Srjc2!6|__lqP@Gr2dS~lI?9g! zLLghR!|iU-aHU-EpHqu^8u?#_+WtP^_=}H!>-gc1@jvDtr2gdPf6br&v+SSRqr|1J zY9Kv+=nOxE8ILFQPZ`eNvDPz#h3CMyLPDw79(3vB@=Jm1jv9mW$PEE~=9i_YAkALxO|Fx3UMiIUlbbIrFt#0Tv@w1 zA9N>lkZRIio~J7i^|rG~x3=kNnrV!?I%hheK~(hLo=7FOuY{F=kHy2BMs?R)VF*1mapl?U+tvp9{W*6&0;@OW~0WlUm$n3|MUX%<8Qi;NDxa` z!^Tx=M#*+c_(D=~u}aGNcQr2Yc8Cn=7u{K4AUp0{cqbflCSQrt6wAu^3(+*>%GR() z;Ve)5SaX#%6;;4b@G1C(fcSzqAKc;#l47=FcD0i+g`rB{$?3_jJz0SU<0}cl` zHb}l}BNPlu^GX#DMNOD#u@^m?Ds)Zm$V#d|aLjQbfKq#&tS<26h0GI4g?H8`$|}03 z1(0Dg4{Ogw61AUXjg|;iu|;jjlurCYoF)&K;TXxR_vf9-Oq?%qUG4uU_EuY@qy7OZ zpIU2dYMJfDq*NX&Wtp&MjhZs4d6>kWM@U_F`Cz0@i&p0Fa8S#0JB|B?RlNR^qB|>}#`UeJ0 zMagbQ8)|7aGu%unYvOQXyxx5HVI=hDSrOaS64E^>2{N&!{-^819PDHw!gx78l-Ef;|;lAk) zcLUVPPtO%`Ps_~JFV-Ww6K~g?&EYPsz{Gk?~M24$0=rQG$scSm7B~%l?BE4 z-{9-MaRyv%568LPO_-&9N z(ja;0t`=^&7K>!uP$XO#?~`H}#}_S57safrbS8aJ3wT0BK3jUpmb~4VjW^jA%T1h)Mc za0Q3~|MZMxlX9zJvbvyelXaIK9q{$oNvFdlP>xn?X?C2Kyv}!w|Aa@c2!)8xd||4? z4N_PXOx3k&qa2Z@3)&y(5YNaVcMqfYu&DZ%GN0EBzn!5Yp+6&cSmK^+#@Xny)NS#a zf~wF>Or~oM^okj_Nblx@YL&s!}%MO)TVlL zx+bXD@bD(OTH9%gIZis54#I^6A6rR&3Q|R@`2+v67 zNnc+aet7Ptm8j=^#3X&aiA?K>At!+`MA3kRu{dF2h7xB%56Ns8E4QnDs~weR_zUs* z&p%B<`t$~8Xv|}J{=6rFw|CXtVtA;g*+?I~ObD9W*g}6oj{p1bhd_h&K;o-(D73=5 z`k6BIBcczY4Ub{@|MFEfi}>wZk!yc?#zv0!CX&!~Dg&D16pL2U`L*sm9U+~T%{5Eb z#{+NuRmltBe~*-elx#mP;lM!$Kte@&=&ZouQ`c0<9$QnN6MS`q=6Xd|Y=U4YjoBUSUL}U-XagAV1GIw< z&ON~-~)Vt zAMghOAP~F4C;_FQ43vWkPzk<)Do_n-KrN^P`{$U0 zVR6dU;<2nDKHIY zz%2L)_Rp~c#|5wmmcTMt0a&mK*1$U00GnV7Yy%wF|9Ku#`1^qS1hBXNIq(Z0;PZb~ zVWa;f{`L6pe@=*daISxZ_@y%tX@1}wguomip*pZ%XX$@9{_9`!@Bh!rSpQZ05?*j( zf}5T&m$=qBrGlfj*3+B_9Jo;vL)XpzwJV|MD{4%sXn=EYZ|PI>FT}U>Mo6-ZdB+%C zxTK0@t(xO_|7_)pwy83{)mv)GZklgpccyYzu-s4;Cm#oKE{QViHE5l^gvDLCi1$ds z`fx=q#xWxFh8S1g&O}=A+_d=h(H#+t7^PQ;)1@7v-w$lV62lljjhnW{kc7#jP z_01d2ILxHiq6+N14k@osPae^6^OkX2Z_JiJjoNwPFA=PIq?n^!BW@_FFX)s^!6e(RU~ z&RiAc4wn}am%5@%`lTrwN@GtG6mYp;6jl;&m30!ngvD6n7)yd3ZAIK(C=!NLr*#}Z zsH}PgCP;!kgbHlcM_%BzFe_!{4w=%?|fAv5At@Yo3^*{gp{zvF;H&322-^3bGVeFNt`|ho^ zJ;SYc*q)#n%YZFmFXKqzphbo55+OTo*iVT*vX@P8N~>FiIU&wB+l%eYooYtJqq8Qi z*`<3hd(a+|Vt8CrMq-u2R(9t4fLpMj;(FF_uRh^ETu7WmJt}VLw;hO;flC}e-tAkn zQ)Sm`?F1EnAt=KyuA`>r+*1l1^&!C=oe!T(1Esg{PrgbI&LGH_c^!Q_KxGpBmf(a( z;!wH)6KgdsKhUbo{l5^?VJQ48fsoI+Sh<>@gC+CllVbQXAGAGLV0hJ~CHJTi7CoRK2ktS?k$PcN{lJ9*XrLcEGF zt{cV4Z}M-loW)MhkIsc5t;G%>iu>?pO=bYMK7sPD;D-gM3*}C>*qp5n^3 zPKT84_eF{&6Anb$Fw5P1xME(>9NN(AYY?ri_v*fw+LWW6qEXdT z?D~I%viv8N9skSsFKYE}-ap1q`(xSviSd)b-yVN}poRXI3&2qG7aab}TQWS?{jvD| zP4Mr~J{_Eg8~nBH7eL$lW9t2z(BGkbdN>ac_-os5fVR2d{c8Uv{C8-d0nWn<{@V8Y zp#3XMy(ac2St|80Y()jQV(f}M zM5h|@C0N>wF6Fd+g2^_sE`BM>B*(#tS--Pg33&MrhEIY}*`;nS5BzlF_!Ksz=EWVm z0;K{hRaQN{)0=Vz)eC|~ms7&Ce<8T~vREfL7hw(H2*E~wt}v*)E8BR72tR+R^cq z`KWDr0Y4}aG-!q)n62th$oWpRTB_w@qe@Iotp*d6O^A`xJ9>WUYs=^d@kIjk4>TNH zqCaMzN-lP0?xPd)*qt zw7O3ly;id(!)N{b5R-R9MY-M0%X)vUp-e9yc9y3~^r|b_is%PlE@oK=NIye!;>MFq zE2&+d_d@gtB!`ov4~XThi?TR(R88wB14$P19qGE$x1tzJ$#bUz`)ejuyoskBJ8u_s z@O|HP|2+7#bA=-$^J^NrHDgJDmiHBmRBx}+YCy!C4sMFX+>lKb9R~4D6^1|A6?nc z(mmx6Tj1rflo&*8us#39HO8*Y-PAo~9Ydgz-jwE^jP>N-WZ+Pt7>2kfsL4Ro;#lBc z30v6a9;$rWg7nlF&2bO2oy7Zd)gR5uihll_Lp_9OIliK=S}Ts5(qiUmII1|oee27c z*X4_y&gU~Xq?n|n^BwM3hDsF{&$Cj%JlE&}SJk2bjC?P9pgL;Ds&ua_2US|SqM2+c zvg5UyGdb>7kUi^2sorH-AhTJFNA`CdhVtcst@^gaRz0b5sGb^jt6PNDCG9S`W&Y(B zT^jn)z=lj`pXggfN1m!ss=YxOI4e5anN8Ws+`reqo-$Lg6Kz?G_N<`C6^`o!Qs8ox zmG9ju8W_qA7D;kWhr7;0Ql+5;^kg0Hl8-<@;%TUrkce7KJk ztEMr298@WhpeY}eR?Qqk;x4RsnOj<9l|7!MP^vRKv%=_BX3#OBvi<2)_vZ4OL@h^` z+qoSZzTz1#@XxO63=F0|nDl#b>@tEzRa?DIqgH7<_xZ>ZEq%j3cR2eO9sln3NB_b5 zum0m-^Jn+e?`vp2(9$-1V)XRiPYnJi>py?P_~Sq8Kc;uRmYm`q^f#o*gt=S@#kX7X zPOjgZHfPbOFo%C3uZomJf-Sa=n84vZ-cruK*dv5$;fQ{+A5vAm&7F$7^kvRjtjeFy zLStf}qlwV#P!wdZi0{-_to?*plnMwie4Vtk03C>DVXm69j?Pc_hqYR5?C1Ts+LJJ? z9GMGl6_az7p0I%m0%R`^H5ex>1T}m?5{e!Y=e3Z-!`tbd-0PGR^=RzKG_iBMn2)V{ z!fnp>F-u>9rG6wUZpjUU7s0J_d717`Yy198_sL9L2)4I|m6pJ5Jzhy`l06@BzrJU!-zP_r zz<(w{b#GU*$^9I>5Kpdh9v#>BW(ROvS-F^#Gr1P;)5fQ6{99)t-7+E? zT(T~*ztfs@7`x=Zl;7(o^*GHj)6i{FrO;3N8YlkyQPbV+YaKjg(#cwL&azP&5^i~C zd6z7@c&zIs4$&iyUCiV%NY@Noc{*IylvC00=kDb7s9WKvO8N0vH|~gDsY~Odltc1y zx+A(x6SN9tgTD~PCZw6$nzKZT%ylFrVH;J__4N881lo)%?HTc&b{m=dy@jt@# z&p+GvMda@=|HKIICw$zjcUB82|G$_3FRniGX$S0|=7e z)1tt~-@o-Q@}m61U;pk-*2eI3N}V@mZcDPBvfMeRGHJh+r9z~8`eAwplQOaw0!t)$ zF8a&8;lz$uvx3$7Fk9Ohlu@f;4jGYB%mJg#LRQqdR7Uo6dre243`5M_o8K+FxpT?( zhNjDdH4`;IqD(`EqveFLmy{0YhsUY%Tj-sw*eO&`iO&wQo-T$dSVi(yuu48>Tdw?? zlf@?bvpb!m=WH#JEW5P$%nWJW45ZF_RA#wncK`d_x{WYi=t{NJV5IwbY)|+^>jeuj z?fih{)MJW594=J*4>3e5cKu}$%{kFAJI_r-aA1-xj*I@;}0o|lw z@~tPGynF_c+C9(nU+BHBl}ZiljqYC9b<1P4ixS-m;y8Kp6}yk{f%|S=Ni-T;>q1fC zf9~vm|2z1PA3J5UeC*N;#xb{~;#N9ic`(o7{WsJPOt}jex>(Yfo`7;s#`5~xu4rQZ zix`q3;b0Tnm}r~wT)4QK%!pa%?q5u5=`fEn!1Rj>j!a2A{c?0^HD2NwV* zxCkzR{k0Nqupi5$4M#q}4=w`%AP9tjFc1NvKn#e3{dEorAPJ;^G>`#Ea1~qw*TD^N z6UYKNAP*FPBDe*Vz-^!m?f?~V7pMX?upj@V4(R3CJOp}RfB)|z z@E8~XL+}I`fv3P2JOd`c6qteiJ-Zg*Ij{s)z#7;9Tkrzd0ej#89Dx&X1}?xAxB+*7 z0{f5ae{ugmFT+pljyZ?Z$yBCjLpyD$H5i5uPR}mrIU>j6!jk0d@KKQcs0HQkG`a-4 z-B|C%%1^GN{XR}jMHy5k{4^>OyT#iPFdTSJEgI9oOt-bXO6e`4<0hm~-YxR*)>sfl z^amy3j`v9cUAiAUNU;*f+cVvVN7%3mkCJw2B)huW ziKDJ2inUL46LiK$JsImpl2S$?3TdY2#rvj5xoryl1)R$9H{N~pOC>qIF5Zm0ecGvN zd}5+3zelVxX+s2ZD!D|UuvlM0&|axSQ19M(+@1+?eB7ak6Ysu2l7?4;=xp0|*8@0b zSDlGe!yl^oc>V)FOR62U&J~x5Mno;qm-=ZXz8?EXCZk743I7n}GcChSkjA0LMoC;P zy9vl~4yPBDwA#-Go;c^%w8%sNBOid#Asd77Jq17!dHo% z7FS<(hE#m7J@ok>+AN|5VQY;4!^o|bRZ>PN*sl-~<*W`@Gn#E{?>IuP^7zb7^Bf?3 zX(PzxvGNUxaFu8$u%b;X7&;AO6<0mq7~7`a$%$qpHvhDIpV6V9HZQE~KZ{7!u~$zU zc(FO^;ZD1nQj0z|=PuAW+mSb{Gco#(moLMpJZ9vm!GrEGa;Cui+pS+i?~?C)CVBnY zMoF|~sKfKLPP;vKu>DXQEB0>sWRzKdDh8%kdEf=5MUeq12@sbEPQlc46>?dDt7n&!J+ zM3yto&Su-3gG(xy1wF&nbmFl~le{;sMap6;O5Kd4fAotcF}HYmOTKG!G~8PrE;XE- zxNOFHA5YMTy79K=v6W!7grdwG2TkHMx6m^GU@TGQ!Y>4Bx3~V$r1ZifW-!(_%?pp} zsSrY}>+5?et9koXoO>{%{^*V)6IB;Wcb}^yE-l?vsJtgD55?A+{&QQKxkk5P29+>$ zq3PJ#<-VUz4RKkV`CNgYD7Ei@-AG^O3Q`t6rV=;kDulDnAn2}oRC>KQ{aUg(A!0%) zvfs7To2d>#pzqi*y@9GZXUhkCo*Nf9yQb)uQE(?F<$V@ z%+6ZTg5Kx^W&pCavoPZPCn?BlTP!A3XmK}`3NH^|bsyYIvv}dlG4)oUfxFh1>(kb| z#zP8^C|vdU1!^B#+xT77JIaw)P?2)o$9f1iSS`a;v0CZ9p?_koLvFjIe36zmP53Qa zsMhI|u~*6M8ZtS3^K>wWaOqmut;FoTO2zVs`myT{oRQQYU0Em2d>oq$^1;{h50H#M zOsR)>#ZZq43bC6xU1bh&3)ZFrb8j2mQtH1vS5=n}zCG)7T-q{Wm)`E{QRkL}@filA);5Y;8PRtir)xQJ zXlP_^d$^)$lJ=r6`2Qrx59t?*w@!_2cJB64UHG zzJ)`POZaQu4EKlN8$)tO>Je8ilvoZH){5RWn^hJQ$X_?OcPc96UL%jByT}_X_g2jh zB9*HQcErPFTx^wk&N+H3zFOx4shT2Z|484I?V7ULnafg!$Qvz@Gt>!hlbD#5RFu%~ z$Ildg_lq5%+fw;3ZdoTzxHL{-B&Cxg^TFav7TTJJ_A5=8eFuk$RN2Ymd!;k840SeG zV%zS99$hcRNLc!yW9gmM)3IJ*x1X^;aNVh~kbhrvwu$8V0ksnj2IU7;1}1C5WH@rV z^<}$xEG=9qQyjHhbn=22w^fP?_4$+{?F{o6PL^0AB@Rm}T*+Laa~~oy_m-JWNZatA zm{*nk;<#{g)!bV6r`EY_f7J=8z3svG&d$AFOxvvVazfpS`TYI0>-=Qyjg_a$R94xq zVJ&8Sb`OnYI*EKO>PoyHAog~~$XuZ13!#ead-DxG_2n!%*4OUBv9euu&+<_D+9s$T`59%4o+F(wy1qvL{qm*LY=BFeMmB@L(PBIEJ4I)!ncwQxo84K6tR;$k< z`D-*M(-wbbIN^&M#J?aZD$V$h5Cm{q={S`;?RLKR%i8VS&Y^OhZbf_yyQM~+9(-p- zkVDcnzxl+iu@8~I5Dx@;Lw$8jwjs`zHP=5+9CgyYjfF#uR>09vu50swyjR|mi)zdo zeI~IjjD2Nq9skn#NkPnI5ybTdNr(8oFJKQ;vg}CP9Cj78SyAPhxSzSOEiTCP+bs6HNH`VZnh~tZH2Mk zNXvhMx0s%tKk-p(tb}rLdX=tr;D)KQ!&?!_NZF#|JOlOvb#*175zKEr*J()B46Uoa zaZstlMa(OrNVh8s@nSx9uQo!wFk;R~P%cMG;IfvHg6~llVb0_8NpdF?sv3UC(C(E$ z$t>7$gmcjTP_z5-he?ch4?&CLlHl`D?w{f8?`&)0Tt9Snl%X|ngX5I61P(09%Px~! z>!D%wfYD5(;e}W`CXG&p6v2#~DB2y8uNTQ$U#%bSmEWxju&7t{uOJfL-^N#U{_VO;eT)M`Tm8haiT8Y4pa+n*>=A)_m`+fO-Y`kLy=X zn9un~xPHC-Pj>zKzxeuP0cFBJAYaQ$CS~~L)tAv|@sV3`8WY#1-LWqb7?o)~0SFF0 z*;V;dAng}o>}KU8RKb4jjcPQ00EvEfkQ>%$52yzvry26-%hDt zboFi0GA8lgzbM{Z{}B`;E>4f;7D@}74%y-K@b%GrKCn61F|ZqU`V!h#)r)xSY+3*^ ze-oK9a2`5QG6D_q-s5`opPrr8F4^KNwgN@F7dkV-Q5jgRA(4;qidBo4eq82~z|@#| z^pvF28K%bto*yKykMRqMRkM0J>%Fn0C5%HGSc>fulgKLAvbmNb_ciZME6bE_ z=%Wt$(brajhp&u(deSY!#A=ySLLj{ANG%M4rHz`JO5jOBST zx&twp)MLzO;bx~PE9HlQW7{=IuZl~(yqUt>ym#8I{W7;_gxR@MOhgy5J?N$&iryHu#T^ z_}WK9uO#1d5PQAN>#~-<99p$Fj}nN67n`yR_O|l>_Ogt^CR-__8WXcVM1p_wuB=ENWn3uEGQgZCHcu%k#>G`D?q8qGA)mGvKjw5@0#M6Co=*m;+io<9i*@PG9l!t z>c_P4j%oXzOALx_C)(tPY9JGS8tTXI=S0;P>HAhwBnoHsImS zhYBng8>^_+Ygkw8moV(pECO2Eqer+g6Sqr`dNt2?rQG7u80IjOv$4H3J35M0W!*V$ z#<~ebc8CEY*i5%>NK;Pr3-P`_8w!=Kp?*&4lONkPk0r`>A*(CdW6PepBz#8#K;d+X;y z%}cV$dTf0}Fs@7{kRhD-B=1ozP)g4mQbd22U$dxKm%`bDP{O(x7*^?%k71TOz8lCbz!rV%keADrs zk~&lO^3qrAxy3$Bg-yw{`|OxkXBpq12|eKxBAjU<=H@b2`2D9ByWV=&nA9P>4B`6f zN^LFneTN9Mq*`H@#m4aUiRGgLDZ(8`x|13t-OX1CY%x*2vAEFYg&KGE?u~FhZN-e| zNx8u{IgTEGem6F5Q2*Y~(L&M41jj68B_h?C?%cpy3C(vFpYytIo?z+tF(Ad){ORIq zE)(L)jt-XsI@DD^lha#DE7MG%`bTnti}XP4?0M2)y1^LS(3Q-b=6(;?n>~WTZ+S8c z(Dur*q~*P7AzR_smrnH63&aTYvfl18&L_(xrP9BXU=h@I-e@7#N+W6iqh_@k^5v%cJQE67}ptrB%8SRK|@NgtHw5zLyl6GU8Nu5&>X zXyhlhyxmrB=t3T3YnB8DGnCliQ;$LpJ`T=ij6L%&L}_Q1^%`yD#9;K9y9JeBi$dGB z2CngloxCFNU)5;zxRGre%}!p+U~cpCagx?08=dyPVztOvk-&~X?@CJ7qjXhhe?7L& zvO_0=_$o~-vgX8;** zSn&LSdrHcD&@~4R>T5|YR^;5*+5O*fm+-Vsf2hr9iNN((`VqN{I+quXRxhNV4;e1b zj~QO!5NJ92sm;)+?O3>0VuNyROg>al%G0bRv$zylU$QRxk=dMnUT~&MSWoFl+e(-K z!HZclAY^qTo6G-_ny0ks=sGedcr-sC6uqUAkjL78qgu?J4x5Y?P0z$g6Frj5wtIZ1 z<>>=vb~0HmP7T~q+^OO^xL7q>DX>9@%t5{-7_G`rNc)Fv1$qj*AWzOSUhuc(owA@C z;Egk36n=NL6*>HrE$^K0MX|;Pk=3bKdMOpYC?3{YiAXJS@r~8z&qs~>6KpxGCdK=* zln(to+G_TI*dBW_uW6HENy-vEsGJ%i7D$`G75SQdt;*)i%vl*d7wd;A0>PRAkI?G_ zbHvxvm3=ZX-AH5fF*7}yir&p(`Fs8^_{ngFcYT;IkUx{!;m;yH9=L|eLprq_4?TC= zoUa3EfIgv|hAX_@B{Hl*A=fniF>+jcVN2wb!y=oS`KzJD&j)hL z!j@R#xFVD724++uXLu6d#KZ?KG1LqC*&a&obVFt;S}l?M99-#xH;BR*W^8nQ*aWlM z;JqGUOG?wQgKPAOuc^~+KjwUi@xWw6SO(-&CMs$;l%_(sI^8RrOXv zdJb7`RT_3kx`$?B+jQI8f+HhCSAxyFhsuHlpcdYmV#XkTqr`Xb%SxNjcUty~p^PFQ zzv!$Oq};ldBJ`Idb+KmCl*PUE0V!3Mz||Nfmp!gYyy(K69ex;fm?HZfP?`FX&ufQ9 zXP>XIck?VQYaqz1Ayh=VZ}D};US9c>^YM#w$N1x4$(}#0^T+so64pci5ytO){~Evl zv*eG$f7p7zT8|#%<-^?V$YK#?Q_0N3L7q3UHF&0p{8IW>-}Gd zA9b$wGD`@TJ0I}!xNY68r5E@kBWt_!*Jv)^oVCp+UbW-EA}(Z^v9gxA#19PUiF7CJ zd2~uy!4|xy6T?#~6_GFLANR6+VrP$73q&}6b)>E@f&B@6BYd&Qh#%Zbd`Y(ogsRvC z*jS3{L)COd|Gi=ppa9#!?MUso%W@YTs|KF@px z!_gyJKAWUbjEH&jN)sf@{Do-?!{G6y%&F4YmZy7NRB6UR-b@IAO^yRiNiYgFVLfBQ z_+|iO4b?5VbG3)U?;Vc|n;~I76MI9eB(RQGF8BeX?!28Oj*H>N7jz(>M zJ^lgpi}EgQf8#3j=UJP z7;!I3DvB_Odi#PYCb>MILT4|JI1^2rKxrfPO!l&oQ|fQ#EBCYbGz_D&k>)Bpr`dMV zL{IKXypD+_r_acd5tC`Fpa#ZJW5XW^i4Rw))J~J0lpAw%b2F1up_~umOU5MY)e9G> zSMrh=w0?RYufKfC5z%eNO&)z`?TnJ7Nmf?!5c_MIVRj2STMuTdFSYnf!UvMZmJYe9 zP7HJ2cDQt?b`tZV{^!`W3Jnr=aaqF#nb#%KmQ~L7={6BrZzSeq&J_K4($h5}oRe{( z@6*az(&dl>g}2M>WRB$T57{uvlsbKG5}AGr;kcnX4sS4s=Qquta}D1ea~p4DnC-!? zCKvC8*d{fhcw6&Ub#)pog@i}$*BV@Tudwsz*yl+$5{x!to`A%L&WzRL=N1SKiJeG4=PemHB@K6~O zSoZjFdR;2UYOA;Kp7wl@RFAjkvq|pbjYsN_2|TP>xg^rqYPEf;Mc9j=jd5HrkTeu{* zMrI=1^N4*3GSr0)_WFCrHJgcK;XJNJFg2W&n>x?rsn-LfYH6&Ix!>X2ifSqlrj zr5>*us$q@2cy;8kE1vwEIbq+~l-+EpX`GnS#ILF^>EdG?Sude#ZsQv0@tUkFjEFtE z)ylxd&A`Ks&HW-R+@=1{d$`kGvkbX%sxJh@);>I?sgO!<>3PkF?7A|+G z9&zjOwWF_qOj3C<{RY89a~*j+?ezy_sdK(K)lE0AO+^r*So0eE5Z{WwZ48;9#*@no zgWY>IL2CG&12Fvq*aUmOvyJ<+qqld~Lr^~sTJU;C?-qH8**gaelDNwGxNK1baZ6Mw zLu-hR^f~DoO-8N>%NZ1{V+dbl4b@P457KC`^1D8Jt6Fv6*FbxW@Zp7`!WR9| zgst$^m-KWGSR(x|?j@HQP|`g?eQQOydpj1HEKOM4{<$@0nH-L?rs3o8ce8(QC1>kr zJy+-IjW-GWpbWY9pgnaFem_ppa>L$5>N`t zKsl%YmEaqw0@a`f)Pg!t4;nxtXadck1$+mspbcQa56})eKqu$|-Jl2bf2EZT~ z0{f4XoFa@T;444H!!5o+e3t$l}fn~4)uwWIe{U7%31FXqxUle{6 z1OWwUf>ad*>C!t9lo|m60jW{x1f&Us8U^W1KtPJ3D7{Iqf^-lO>Cy>R>7fP^!nfRe z=A5(V?z_LU@7(9kv-cUE=Qpn~kd>bGuJtd#Hn0Qi0(-zdfCUbKLjVWhfg^wb90L$= zJ(5qUikC|wINe&~Rgb#puHmET3`DS+9GEjz1CIP*2%o$6EC$;cby1h}`jjcqECJzH z3vb07k6J-oA#jN0U+T{Pj1T-Xe(UtVWd4Bk?~gw{!3G|G5db{3|6BS0Pr!5U*ZA9O zAOrsQeEsZy@N?W>zy3RyRRP8yBm3)b3jYD)Pl53Te;Hro4;Y^qyzW~`|9boXh4WYc zjNke*e(TTptv}wlR{6cB*SV&Xe3P2=16Ca}_>St8O!_RI@^D zby0j~{f-rNmS1=IIvv)RY#-RoR@p?BVELzl=Z4!(9*zQWCsRdqk)FeT zRLdi6&>e}^-?|z;#*B6f!qad1G|RNdyz8*YoknK2*7~)sa8xCqs%YjX3x1%W&v}wW z+ZD0+IYwjm8g0wmcbsjLfbn=)2~EAHLJzd+CU({f#WF&VQQbphB(mRhXWKHAe$#fX z<7_l&jg7ejZJvshW>uj)>)YFAv;6Xu*XZt5-R@-#Y7-`1-+qOuqngIKWz>F~?}OK6 zV8bUIC%d;e`-jkrewSP^*|KEb@n8)|!uZ(PG0Vogp^n&8k_!ip}h{ugDO^YXUpY-4A~} zN`0Gn;oRG|l#~}>X97;Is_=c+4oI(vijK!l-$zo}7rWzxkQ#(;ouNnHcP(KtLBhy6?SbKWjj!e(K0dzw<=lna=uk$z zZHp>7sYq-6hzPx>&r^(ll-P?Jv+)(-{V?!QymXFjSugYGB=Q}$y7!V@kpb?LaNwe_ z^zFiERXIagf&U0WcCg|lpWeCedr1Zg9NOnK9M@j>)#<9WB3z_I*pyC6WVIcnM$WNy z6%)Xg2$e4@3Ul3_dZk|#jg;fs8*awXs3hskqAmH;?njf5+_4EjRBon!M4iIR*9EE! ztUZixl|i-lKwAt5S82J&FF#h=zNBwy#Ugyl`NlN^hgE%QJ@$llins_5^VD}62c-Pd zdb1lWcpD6Rt2TvQ1N)G2++Dk|#5Z}@FGjW#+~@Lps@LbOR7gZ*bW)wr8*n$Q z=bqsvG)5dwC0OWLcox-mxF5mav!!`1dg2>rX`8TSpg_Xy+xH~4TW_UZ_+a?D_(te4WF9X0^-4 zm9+Wk;XIM!x3tgqWGFkwPv;8pau6+?*<_yBZS##ddL3MqoidXUCeWnyk*%jwg!E{_}a21Mmy@LM@g!z!NKp2dkC=7-Vh za1XPD(vOvD+~UnB+jhUJgg(UqIznB%Bk~&Baj^-UT4RjS^a7VJ(#5u zpx#7Vd#(kcMnZ{85;>%eN?khJ0u3{A?>Lix)S&0^uut!j5`$< zgOZ0Jf{a8>ye{FJy=#m|IfOoK`}Rt1uA+qbs$0_b3@@vMYx2Of4uw$%^y#IwcwM$&wVLQ za6AQ&0HnZafD9l9D1bA-S%4Ct0?q-{01ZG3&;j(od4K_61TFwf05iY>umWrVJ8%)W z1Y8Cs zcmSRN67T}N0Uy8@@B{n-6z~}MXP>`+=8yc_)c^he>0hlgwm~>NhOCS@fk1o^jrr`$ ze+1%_$EOfVKRLhfvf8n_%5`9<{0+k``T3Uy$nZlS5V!_$UdlpbGrqseB8L&pN(pc1 zek1%)t8-Ty`|zd7g>kPR`@b}8F3y}j0=WVsMJPCyA`@GUB-Q>Je`_--Qe0LR7iDoX zddsJ?u%GAglLW;S%`ZV=kY^{)H$S$2m5HN4j%#8#5Bco9#YQS?Cyd3H68MV*3``U~ z&knx06>5H2jc`$?^ez3YZcnLQ<{C|)AJd4Yj2V;E9hoMayL~p+=`Xj4eRI+{XU*#v z;)mK@>2(CrN@m8hd&5J%ni&rj7~|XaLiqcB89uUWtqb6IZa>%#_B`=@++Y0L+z^kVn2-Jv7=|XH&}%ETrb;cXGDbBO!qX<}TPbSqs*>3x+L;}quQ@9g8yr0s z6cZvDM=rIGb%Yk+rQH#k4KeQ~P5HVx89eRv*2rUtL|)8M-VBv`Ko50BK(GATZg|2*fluSP}&*f+4wfSeYM2mnq0#T`+t`ShK?391w$Km9%D1dUtXRZc?zfZ?JVnPWRGs zHftyc3$^(Y7<7zayWFYhu`DdT` z@=CDoo1gl}(e+gZZ1nL>NwH(xq2e9GG23GPY;RQx=#FH{7J6(bO`*c zfS_2n?2%-P2b*BsW@4kja55q{w<3I9HjE_oa@P`LOZi2KGf!FHUSy++i0H7Y?#ec# z;A_a`8%5YGWY3#gNFBXx7E2$y(Qd3A=IHLX#~?%%5)zbER#RqBRXY&iuw|tfH43qu zXL*cx-4C@Z4j+roS18L?N$UUMU7&FF`MBMaxiaJ>oS1`B5e>2Gou(N}%lVP7G+2rm ztB~-A0;yV??Qfl+(U0UWOWzxM`6fmyrCZXq{bsrdX%{8ZplK}-W;|HW3T>uXljyiJ zaH*spPd`gRLHB;pHz^Jy4s+#5pt)^j9ny_T)@Xp8Svznoele46rG0V|EE2HQUCQ}% z*oh4wESqWU`E;rLc*tqTOav*BmSWfI&u6j8fokAJ46&Y@C+B80?uu82Wn;a&TfN0- zdMR@`$ks9k&YQ$d%d+!pKK{n2%b0juOHOqUJO&v^s+MVT!SWsk?Y;_mxC+R_ir1_| zyf9yQI3J1bzILFr)*MIDe?qG3(3FZ=r_C@kDCmM>H)33q`H0d^*UqeL$-a9;VWv=T z_-FrV-s)_EGQGwd{7t{3|24OXvSQa0Pj_RM5P`y|nt&u08G8nUq-}~HXveAv&ilxQN7BNyr01jx~ z<`~jFsQo^-kNKoE<5G5^q|1Lao`x&x5z4LDw|6PN-C1?;imGPW;-QE)V*hJfYPh1( zY+5F&d;Vun>bHFr`O{R(9*4m%o%fR7OJEmc@?IT7ZmTGg29S}I*Td&}P#sks`!a-V ziA;g=%cqH7ke#^~UjYh+TgE?@Nttb|?8y9i!Fs&dnA8%G`U_QFC7gVNpJ z>YvwFqtMScN#__+@xz=A)q250QZQE~>dt(R-T$`1^zZH8_3Qk*8pK2VE3DuC8UO!p zGyejUtGz5tV)0D(ICCM_+S>dx;zwsZ-b*jh&%ieue65ZlinIsmm|}~ga)rH@yYNNC zLLOvC2n$yLvE{GB@V(dp_}p|PwWmVPIqx#+BSde9_>?bAH3H5uslk;vZ5@_Vl?oxb z*(yhWDv4kAWXtl^6Bw}m^fZtskCZL16)c9J@IvVqme|L*p?U;yvn%X$;sX4tr`A5% z9$qfoU06nCnIAZKsxRE&5bgABQ&tpGKJ%H5z9@Jf4G$@Br=ocnH;02Zk1&wxL?d3t zxKNmI4(HapklAr=-GI!$=$cP~v_si^Euo8-QKAH~4(!p~=`YNB+g$r4{q1Pam7b{d)<8NZ zj^GDxVe)D-GimJp<)9HSxT`Ete;onUe1J(hBGz6+wb!r7SVn94_@oiam;d%o8|gTP zRE@NvsFAbNH!Ft4jTTEQ4ra?~sLy$@)R^LX+C{u6NgEptyWy2FFsgmS0}wo|@n0T- z!=$~hxG~Qm5OJG0Xc?2_Spj*76l!Lek{pJXty))&%l{ zMsV>l_YY)@PIidb*sfdL^xM4F`N;3XHT@@~Uq@8Y#q@SltROefMm(x#@lB3tQ?kGY zTN~&={8FQrDY5s3BFE4P(#y4H;T;O>7-E@JGI6t0>lNa|5q3I)7+GU=y07gsxjKu| zj;oZO!tI(6uQ6rMhm}=2nS(sS<4!It4+E4G4|FFXlcL&mHxJLkDG{tl|<8h7*72N=0yAb)g`yQgUXeANlY>q&toe?-*{dr z;d3>TV&os~(XGY23Q>p>e9T1f6RsB%GZLD6qHAYrO4dzmEvwiRNrQw+2)99;v-%0r z7g`zmdPqA>`Jc=+&j)<_g!XaiSTbxxGY_sgDEEBo&T11#wNFg9wWD2gIS3HxJ7v&K zgNkrsSz0tb^c!jSyS&uyner@p$8O)8Tc-X!C{|!ZXS$7@1;lIzTPilVy%5 zT3hi+k1D6G(up{p%iK~lmvo)mv_!uvl70=~`<8*N%Q8o94d}p3>Si0bWAuW_KIQwR zuL?IU)&z_lm9G=kOT5S7UmvE=>QU z{8ge*@vV`yxBV?gLj;wEEa+0&NH_F9pJlM4vL~q3t=DOEU69x>h=np*wvMf0P+kQA z#a;x#>@_c$yAuU`tTIDo9m1&V1 zJRLN8?{5%3hNL&*k$vFIgKv)g00-7lqagl|Pk*C*tm1QTpoAL-FFsgDZ0{484BMgG z;BsP^py*6r3$O!%!h(LtUs+>1i01}%Pmijcd?tSlv3(5r-~K94%s5o>ZZyPl} zFw6EP4`)2VctKp@9C z^bB=v^%nOx4YpR5+vR5x_{<2TU-}k`4M#QX*&5$$Frn6x(I&~z0seJI4jgX&fZZuC z7dN!_iXFohKU+xBYt+9nTi;)NPW|kJt8X;beK^B0q)Dj}%`i};z&?%i+L`ayjB4*r zm1eLEXFf{VfX<}ujSb+>4X#%(7BRybhHa|*E!-lTf+&}vb&X=BpKl2tkkCpzm*&%7 ztd}*`bZk`A56lkD)$|pv%&x=hVKvdHNb?Ia4B8N+g_Q`g}_Mo{y@NGqZDXvDl=-xaxqT!_JEB8h_#3-NKnlW##B=3b*sW3d*`? zgf~z0491UqXw!Y`^4pB}zrOB%{qOI6{{Q;8HcFuCjA4~KJxRNV(2Rv2F43aT-;ZAc*Xy~{$V&J z_5bqz6K2jnM>S51ZVW2sEUN@X8H(cPo!+Z1W*_aEJK?;2Z+_?#J7RBcw5=`~*rl4* z*z`@eSH|@%)|a8>K?%2rOD7fO?D8a!PQ4x9_CcNXOLQ?Vf+hO-Gs?V3+^{;e-tk2f zy!$K}wL7sCJ*y6rpV+Id!`To7PA+g`Q4V6}J?zh(E!-)1T4Hi5tO5eP4UzvUsMsFToAzkskH$xp7 z1|J;X6vERYT4eNhGnb;}^z)Ek_-v+9>|@Ht*o&B*@q8Gh<>MxrGE=g$e8^!w zq(H2WMI_a8-sqEaRmN9~WTn-+KKMjCO{xq0{fYALji3AV{pZjA9sg(N55M>Q|MxzA z|HAoSxEn|CFS{)(>=)#O-c9%=3n@%P_XRkn4@ZP>O2~{k&4JaO9Lu=Vf&?#fXuNkZ zzO0D7=`iGJ;oB%S?aQcjQxryjcemyZEajZ5obl~Q0=LBo2e#{N8z;)Hs=8dgVWq3G zPWG(Iz@5_YK)l*2ptv%!$ik9h$FhhL?8)x0VD${Kq`<1yaZkW>A-8?4Uhr61>OOfKo*b<B}P)H9O>Fe^> z-CNumSE~6C2Qz`oNJPcSE!m!^JCR0C2y5@_km*aL`NSi+e8|xm!mG8EX$0nfjq(M? zPsik2WnfyD92LzhqZoS6T~O(Vsc_0lMi#A$rmXHxYR?u2`#R2i+jx#3Elx;!@QQjcvwrYtx>Z$}r`n>di}Uw8 zH2STa3hgcTcJj=xVH+_K=%c5G1dh#x#iaXuH*;O2NhG&9wl80Lo|d2Upg>C2gg8O! z<4~icqnj~?Exl0lb<zr ze2A)J$Qe25*+M?}V1?|Yk72yx`+jI?9~6ehy=-iYWWw~4`XU-PmqO|(GMX}*oI$iw5=Kl! z^gSYs(S(QsA_d>Ens?h~*I1Dg#@&Tu^%OCcsSF_k^}VzWc>@zST>EH*UL)0BKzz}s zW5=#(%+%RPqq}jsk(uN!dWHj5nLGG%NmnZ5eVYBbur0-HIbD9)6W`yD+g7EtI`RA4 zy=bx*G&q^39yK5JJm(%6=|yV&;(7~A0ITRNoI(Q1t59n!WUM^%ad5c_c)nZvqC>ZX z7g*jf-j5I8HWS)wZTRZzB^15WOKxP09GlaSu{^A*L%uf(u|*@=@1sp#s@@LxL|hYxwyEyZ zN^5{!-I|uwbAHi&?mS<8>;m4V;EYns*V#0TR9>~|EthLLE*isT`-3#$aSQUOJx~Qa zF4=vDkX8Tu%t)dC0DMbNupxbLB>qhkyD?5a+C?J$hRVQq#40o}y#$ow<-%&CxvJde z4Ey8TL?%@8$Hh?f6+Nwcd)5%T;BCt)E7{PdcD|0CjnT%|+7D5SjaG=gUW&WR`S;!2 zh{LVIj2G_dx;;H(G_b(U;Ti{#E+&^=B-c%oUY*Oz8=K7cKhrl5C$|rxeu8H(sK_08 znsvfi-eJNPpI32FmYPLX)C&?1&r8>dxH+G+`Q^^Z!_kr*g>bE5@j{F1HT`(;qq0mB zyDmS$S4&zZWZC_1NpzSK)gM@nv(2CCb8Xx7_rsu8i)SaROyEOn3=`P6F)*W`?_3E$es17CipASxBkS4@*^;h=gj#LZTkVoLWI8}9XT44n z`{vPAQmjpv2X&oNjfu_==opI951Y4>^@6J&GAU}vQ=zcj=*B>{)7UzT;va`uL5?m6 zkiVevQ2glG-SG)K8kk2PLp+UREf2M!;3rB-svbCT&6O~2h24$Xj@9_t9#y?9ys$NQ z<`?3Zy2FgLB1>v3trDCs?car*? zEVf1r_i^^f zeXT)$q5Cl!+XcmsaM&_?m&MV$@=q@u)Ud%SRXvuX6X2lqW~ES+oH)9NLbbfIU&D6W zuD{83uXpiUNv%(+r4=RZNp*J4i`Jxz54~##|@Bt}{TH zu8=GqG?dR+bTJV>{ob#L`LbJVMN$xC-bPGL5qBF|+}dygetNPciz|t#{C27j{Avq@ zX+>{5i~UWt48sSfug~1~bY#p3=ZHwLSLZ7vvF!v<=W&cU)4;cSF7~kfX z{+rT&!1yy@{P17;Z(f6l|K=I>&wcx|{t*xO6IB45R{Xc>FA;-zKmM2d|DWAI{xkmn z-zNTSdpa7$DxMzf&ygZ!<0bI2w>v&zuNY)Y1@{c~;`cxhf9`ap4L+o|zHtsNV!^lu zAAFxpc^8)*CD5DIh%R*x)^$-J)q4ef$&HuLDncG%@TkMx1RT|O8C0mh;PU3OM6K1t zZLE!9O$^R_NYD|TC~IxIU^{u2wJ>mBTPwKEb5k{-LEaSP=H5myIpMFQz=J`N?^c

      fqC!lHD1s*7gKqj8DSk6SA8Fce+dqr0=BzJX$om!xL5^7R8lyJGG zHiY|jiS5X0gsU)l*@cpt=&w2-IZKzMT+YK+=Xm%e7hFF)AMOCb_Gc3cZ5Y#`8|;{O zPUGB$dVxzegKShQX3^<58aoeN1OwZZ5qByIyUK>krC(1E6S}gyY^|z9)m`|yuSMU9 zv|!T{g>s&;Vdut{!OW;yWwO$eoR`UL+{CNvtE9u7qwlD_%KO%-aHQ#dmw$ltg=Ta7 z_@{Qar*CUE=JtAq%K9y^BdPcYNAK|J7zTAm){Xhfe$zny(`qXHGDCEW@n zo%D(dPS(}nYI^)m;Vh3KooyZXy+iMj4}?yr6)2_2O4{t5=6$Z;y_nH#Qp@*xNr9}R zZojMkyBT%?t}iD#J7=tGw|(2QOhST;HP$K)$kXVivRj!R5oEB;vpjByT%@XD{rf}` zO{LBz&dT^))#gw2`9SSm9!o0k2JtYzVRl`Em722o9hDk`696FBMb zDH1O>Y+!pbg*s4?1Ud{!&AZW+IQF0v>l&BLvGFec5v?^o5o6=_<$htI0grPhC!XA? z*WV;Urw7!#VO+mqmBp_0Z9Y7dKxh==jyo(eD;FvyVD8 zrG&JzvwTk?usV9SB$`X7w%l%WT$+FzwFL8sWwI*Q^X7AJq)EQ`cAKP~E4#^QbO24L zLBq*=B|`-8H}f z(zn@prttpQz+Ab0?O8;+g5x9Po2gT3Y0HWy{a(}EzTwFDaW1Cr6+&x!?+rE?B>mmTm}B`V&UYCo<@GG``F^4@M@)$e1wttcjv?0FLe!{x6U(}$ z$aBk1vlPy&m17-a;k@dP22NjR+-mqt{qEoiTg5Q83eC{mNckOlZXPUTM72(_4ai+` zcjT`c;r88Mk8oDo7A|A_6z%08GJjugM9>39@hIKu$6?6NtIzw*e*j7=hFd9A5u%eD znCLx=W;p-;R;>0JYbonsNu~F4wjO*p>4Ih~SiCATU0hIZ0zDI@+U~+4U1Fb&=B?+; zgy-X2UA;%94;fbbHU~5?#jPe%cuAMp`*Fn|-=G}Y@AIe;OnbG8mF#plTHq)?BVFKlYf%xdPw0!W@!DjVk^hqP)^6`w zWrQ2++VD%}#}C`ONuyOJ6yr~r1^P~3`+k~!tFl0tH*keHu}7jc&=& zn;>dm52<1-CM67*&wd!Sk#^m;R~M0gUW`oX*IvA+OY+sN-1(H`=L4l@*JP>Ntj}ta z+CwX7`(xJXbC=hg_uRzgR-bvltX^6npy0+kLJ(iqVFJ@w)gD*+yOz8NM5>f{VkHz2 zaA7F%rY<9gr7ZqSWQ)g%<{UPiqpXk$B0cRJrn_#Y8TDSgoL`4zLI-IQddbxi60 zjhQ?hN2Sk3;)ZSZGQ4#`U2pD8hqAOn+jj+QU#zpoQpu^LNaK6qKh`w2t2rLTemyA~ z{+TeSz20|}^XfUuVF3Zlrx?{tDRee-rW2ATHc-g&l;SRg;&gn-^F3Y5uC@6Ryi)FA zq@;DF%$$H5P2<@zPXjZambjy1rj#Hio?X5MmuJyLLU~)mVH&n-K!T? z7ie|qh%mZo$o%rfsc);V=lAIgXVOPK+u69lB(OH2x=###&b-MsB|=04^KO9ABDIT> z@s0aMNywhKXp{4r*m#h<+_S+I`Ba6rUv4T$=6H_6YYO4zN^yi>9w@jAuqoJL-J_Ix zFPk|<^!FVj--G+FmdON-E*b{#+`95Dv6=lE@tBsUNRi0(94I=~pM%2B-cC+hjO?AM zx}7t3EQbKE>SC=5W6U+s8rZFgB+Xe)mNWed^rQ5Od(GbT-;4xBFC>8nO8r3f7}5%| zDkZSobJ`)^^jXEl-+S*{xLVw9SGEp&7iAS?bz40uMZ)03V@@V?&C*z%?R>Hzm)wqR zGptrUZn?*H^bp*IRD2D`kT*fckiXmvbOS$#8r1QHXJcJ`;N;6&3T3WA=P`4UnR%}y zA%=@6#joztKj5VE!v@uEjKx%;r4Dsui9`8HPw&J{b@nHyYuQQsy^OmPDY)$4W~=gT zrtrVw>5F|XQ?Yt6*X(1|T!8Gzpq1O5txtM>7eU*xj1MaHpTC=Q#j+HkpSh&bPJPI3 zM^!*W@j94wsxUjc*a&(1v#z~Lb#-2AZxTg9?AoU&zkFmvtRF*Yu!!dE#WU zsY2vjN+wV|XG2*;Yp-zb8H01nnKTTXfsNzi-275x#t82M=<=4>m=IlTb@j)2mz0gQ zCzNmAzU1w0qP82(=rAc^$B5Y(HI~~%gFYECi7Jts*RnlNxPWvOMGrmK zW|0YcUlXT#ptZqIll&24Rf{nlXmiG2>RO#INS)j-GdYM-${T&9ejjHBL*##Fa70^K z4LtJGQ`_bk)G#X^=Z_a~;ff8Us{BhK5Glbl1X>E!r2e4QHJ)~GJ2tCeta2XARc zR;6d19=-?hTx4nQ6Ku(6@fY7cHL^O2W`*t{1KaebmxX3w`SQ91 z4q{r3h&_|VO0_X5wB;QurA5_PXET-4#ilh!aS9Ar!`a!fE0u-0cHWXP{Pm*lRyk&G zOj@hoBObTrojh6kSk>T+ipq&%_}NzrM(*6IWLoMVJDb9Dw3;=2)jR~|lnH5~4@FC@lj zm0;yZ52CYqKRGMz_V~qvj8|67t7MzG9=+?^!)AA<)cN1PwdvFr4;A{Z&B&JaY6v5_ zS8!+R^O8_zz+0_MeRsN)1IkRE8cB;B1u4vh>gu$W!{n3&Yom9PaSxy0I{BG#iBn4d zYMZ>qDHsMAxev#B(*mtU20x5t~b z1wJNZjs?xARy?l>h3(emUaVm_>>1qB;0io~NmC{3t0_@$)hO@KgVHi%C4EQvtQK(Q z*xCDCx;kYCUI9UO+(+Q&uTETFwie>w zuJMeG(f#bjJu%Eyvw!L?VJMT1OL+d$lG-SicV2Dhw9_q)F#kYqVNx6u+}k8*>^PRX~Bu%8pu*&&IliT3>K|y zv5Lo#oB2&ptkx*_6t4a4AA&+Z|CfKu4hz;V{>zA@tKdeYV=K%-^mwyJFKCDe6Jh z#8znE9e&4}hze~?^VA0X=*@1YO}y5qlRFKs{YZqJ)4br93&|nfgpD4vs>tGikAHU&o!Kok%I!~qFF5|9F<0U1CRkOSla1po?M2NVG%;0ACL zPzF>0RX`0;2Q&Z}a0}1`v;b}3HlPFO0(!t5Kp!vw41v3V5nv3M06(wqV{kMF;J`iL zKJWmr04xD3z#6atYymsK9zXyNfFtk_Z~~kG7r+&810DhHfCu0SAOSDH8}I>q0YAVW zKmk9m&#&iy{{JHV@BZ9>__x`AID%jYFuE&f$HI!$+nKFYTb(cFXQCFcw1 z?a(G=w~^UbsK3Bh74>>FRbKLTQmaRb%JW?0fL!9%8Wra!D_3$^$|pW9*V(|VOfms@KPG$i$eeR*6knSNZ6sgsP+)0KNl~u2%^=j;%>Z&gYJnvJ!$Xj1x zag~EDZIHmQdFnag@}^Zoe!lVf5rr;ft-+OOBS&t}JC^axFtp_JFV|PDvkie^(vBfJ zl+gW;U|Rx?br}8i2BJ&x;;|Jtin|qjHsyl~17Zw1ZTt~T%CfD?DihB#)dihT<~|&9 z(!nZwWg8=sXqLx(i!;?eZH^Vhm8s4beMyS(I!E1@ zma0)bM$%8tLu?VdVZJgO6Tzg9#XJdV-7^%mH&)2cs^@)kqX6ORDDm0faH{HDUXV1G zh)e)OY$=#SoR^nuS#c2x$x0FM)JXJd3Xnt?+}~?Up~baD2?vYXaL%(ZL1qQzd}jHc zMltK^v3Trzlw=rRfAgT`QQRZOTaX^6S2Avqcf3(iyFCJ8XoUBrxMnF(*mm_@5VW6 zPPq*Rb?Chv!%`kYW(_j!EF52(j!hwqHO7=ymd54lu4k=Fky}xCb(}JMt$Ug}_akY7 zP^5dzL`-FV2YtoR>u?y-oI4mjral*YfxNTmO9$m?Ty=Y2geYDSLqAw0(v_oPnamk9 z=}F_%QmaNMSrlMg)JzjzpqF+%H6kF54#(nO8$-G%!$`j zyh9*!W##+jhMMRlHnTaA;*s)WOeBTan;}c;5r*FfOjvs*xsAt z)0oE__j_AKqi5@bJgK&)i^aFIfBWly=kE_+XFRSy(I3G0Se7!No`OINje+l|$$`RU zPba}tmFeyO@{`w8e!NC%906{y!0=6W>@9*ks_!DEia_fL#oNdH=KII;`)A>T{$uc8 zdKx~O-b}`OA44(}=bZ3d>nQAyb2_~oHzs~IGm^(|Go&43+T7w0fgXQPen`FWmGmD> zk$=17{Wsr#K39#>ID)ZDEl8WRDv|3|tnaEWP2Wv$cytwE{iXLKid{}M!}n$kdZX1$ zVeG8aXEg&tzh-D$z2ck^!%<=Puk)YHf06u!KkK*u+suEqk0H_NEW4;+HjYF_tJp%L z%}}bzVj=MP+dI_w0lK8R_VO6QL3LC?$ZD`))kNv)Wm4Y#j_kehqZjM2W-{#iv(9>1 zg_BA6K@{m1>5dOzk6geMOFn}fxQP*%ih7OA)-Mf*QX*qojV+C%)2(>b7d2T*ZWS|% z(f^th8YG`FVEd+t4Z36=KiB&W(H!qxrYcQ{Yee1WFFF`z68}SO z9-N+3@ULja-#yCn)tNhc(vfEP5XQ%xz~hRk9FA3M(vsm>m)-ecE^IWGe$g-?T^x2o z`g$##dKa~pmQA4Hw@8=Fo<%IKd^k^N=JR@3P$ZC1qb)+l6&7n{N|eCq+d}+kmwtDo zWBSCjuNJlqJxyV^a;avhLTa`3*+(nez)B{i$5ChoelHfDVomJ!n;%d%aOeGyp!xnI z8!OtnCy{dP>u!XjirNl?8oyb>p30y@fBi-+Zcr;D% z*buGSaN-7uEx*X_`J=aXTl;geo)#B6q>8eeP}CKTL|oY?f6^q(KV0C7{)t|6)LLaGWRb%7`d}WfTu~O;Bb~!y~#x>UL$nRwl|0XI>uwE;rDBmgz&oWpKV|_o!%5-6EU8^nhnNl%4-p(}b znYVst0}0Zk#n`4bLYB7J*fu3Q$d@O-C-eIViBaQ#AbR^vnCTN9=CCL$Zm{?4b-TlA zaAJX1G9J<2HLe|NFXAJ*B!snh3JuY3XsjD@s4&{lOiK#U9S|s@nMK??Pd0CKE;w10 z&F&4PSHRO42jKsBB(&(H_6_4E#x~ zADaFA@?k>~`mB)A*N0+oYLrcn3kq3wrR_t5a{ZnpdD#uu8h1f5;&Y#J)ad8DlRn0f zO(93n?7?EFGvi_6jl@RC;=6-F?y`?XHaiD4ZjTD*#2}+DmI}{YD@yUoGSunf7k}H( z{d$7;O3ijm7=arZ(ay&BRqX78-G`4pki)vlu{W;@Z;iXDF+_nRwL{WaC?v_aV#uGGJG{V9*C-AKOXjvU zdJx&!!}zEh{c_Uzqr_B&KPR4X^UGVXE*oaNSZIfut&5?weMKGJtzG{ip}w~Ygj#cm zh;-hxuhx0?*12=W(24_lqSd<9aB7C zLFZINrhSqGwcNL4H#tD!WeuB9Z9@UE^59?Xojje6w&@2F@?ZayCV(CqV(XjAxl|?N*p3 z)#yxwyA>mkA^F^KFR3#538KU6h3gm7?+$W@&z@ehQh)f)Dvt3WT7q~cFO6RBV+Z|b zls!4L;uQOsmmUtbeq+x~mbo{K?dqVoiKgyGYi-+brcHY3lxEJY0mWB!ER}}xoAxD` zta5h>K9Jpl0Hxl(wZ9)TJId3Rm=ee3GuvDx(Iy%MDZ)oNR|!M(e8Qg|6ufJgXNi}k zC=PAl8Wgu062vR#Pukm2m=@VOvRv#>z9XKb!*UEW5ZGTw|#mWUVgI-+*muz?R zZTvGkuhnvK^N3lNIEfgsFxow(m2ckY%OzZ%nov@p5erh1lUSt1ghzFoCE#k$ZJ`ht zFuu@LmbfLJXVOlReZQ*T!;Bh%#^r7LkPF#(9r4!R`2Ir`d6ma)%uzVwUx#3TmB zB{Bnx??|}H8b#L7L8w{&Y3xzsHP1C!{0vl*G-yGQwuLgepeqG_d7e5shX?yJCW;xP zb)FA98jnh@i50;l8Zs0!48NJc1e?%a#^r#zWf;eyM20W+xb4JR(^mHSh|u0)X^DBq z^nNf%GVcvB$rbNzl~Y$px{{?yZg9MC%G4>73pN;)&z0Y;;#0hIE=1n{Q)AIOqHic4 z?oS5ZQm&E2hQq{}w%!FEgH*usLOzmL-(Qk@&1Iw5OksYF1cQW-M*zR>{*_lWp{$_pQask5e!f)O9Eqt`KH( z<+l%1!0W|RL$_)jaVyTbsJh%v8>_1snCtuSSpNNcnr|6|i1N4NZ$BAxXYbn?5|Tmr zOsn38K{?Fect?oIc|W6~cx!pvhfNkZF*rde>NTinKVMS@xF&en?2s(i?s7>5Ycvtm`un{fkNWZRF6 zXk~@;hf*9$&>OEKNpdngS{)vzZ|q;P(@#C6=fts7n;Fk(=6ec2jw7s3!_xVt!>yc8 zY_B#?83i4Acwg&6*%Fy)iV2r~V{TP+ zt4GQ-`KdxqT8~zxOO_MgHzG-dHnU_H>9@=% z9_Ym8G;TGC+8=zzl50+(ZoFPoyk2bgz9yQg_9ia9U}6)xyXLoiG0n3UI!9U_isAd&$TjTr4v+-o2`NvEe_Th9kK=j5%EwbopS6$n@IBkw_Db{Ng+sfG z^Ik6b?ovmQ!%DvT`HT!XviGSX$4xtGCenfzi_3~5I^yIm&NA-u_#iTz+t*0>>Fubk zY3TKOOkA>y;Puisyv$)qe9Ot6ZZl+-F%4Tz9?H^6m$Vc&>Bo#zRLJo zvVC&LiDLU;SDFQJ_V(zH+~r8JUWMdQk3FGNt;lU=cWdh|mPU!TPc=|v=4cAPuStQi;*?;b1Y z$7b1Bszu$bKpWVw-yl9DqPMxR2-#9&_7t^yjwZ{Mr8He1xiwGDNi2Bp+o_HVp-kel zQMuBw$7~)CWQb~gLf-P&Rob}>rY*{=m&0`xZqqce!gLJ;!G55|Yx87VXTr@RP z?6{7?R{!~&OM!exC-3MlvksNoO}&dUJUTFU>=z%o_Fne|M{2gYma{nc3;l;TUrtbo z$=LnZ89cQ~hyW=hj32*Lkzh65uNAOpy+g|8z;Lc;YW;T0KnqV=lE$TbpU?pb9&nH) zYr>V_k;1EtTro1a8V-BAciImQcgPf!L>gYGXxeHm-#K$RDubALJ=wvQ>v7+V{-Ctn@cEqLV1@9K(qa>g73ll!& zcj>y#=xH+{m4aE!L)bU25yNdp?*xf|_%hZ9@w)@!|LGJ6c*+!NkT?`J2q2*tmc2kNuy&ar+lXj7^x0 zqVR0Hc4RSc)kXcXO7LB{T=q%!JzJny9$JyaYDun|;5sRuqWF*;#@(o6h*d^B9mUCY zL=-X(?nW}se7H`!Hiu(eV;}Ha%^cFBxLLvxb-eXzvtqfd14ei_JJ(0ub2@_>X{%(D1QD1^sTn+d7&kGKY47Nj~{v*8?KDqjBn{(}yjpnsUq!vk5yK zQ6e8CjNe|kTdu=LJ=Ko3^CjL)h0k*p9#y0q-V)kF z=9Y3*eY>0nv(f!%p_tVAnTU$MTKDkYYl1IgO7007>%H}}8Y_RY_=F;%(%;>bV$-kfD8Z$jH}M=92I=GCwyafgdO^ZQ-Z z3<+H49M39kd-`lSe&N8D<907Hxf_e{8uN{lzUzp?{z-446?yfBqyoy4qBvyq`4q**)g_Hwmd z)3VjA>OD&DeOH)@Xe9G+m1p;@gM(SCakHu6dbsq*4QOxgw)j(dMYoRn4Imyty%t|cg#N#H>+%%?4;a>E~l+PKhoagEgvMD6IhWTojmg7*( zdAsIhmS+pr+uJ*_s8yvZ*G}p8YkcW70!0dR=oRtilTSh~x{cmCS zbhr95L_O0v8)ox@1~X!`yQ|hHP=}}Q$|dbr#e;qWTjG^{!yl9d&96$lE$)F7fXjJa z&+p0Z$L-~k8z1dF5SlboC-W|IvC3B_9K-TXz?8q!weW~;bgmS=fmRLMHaRcb1KW;% zAUEE(kGKyLgy$=4nw-d(ny|+S*3KE^UugW+0HWNh{`IDi5O*h2KRmxTs zTk5+inM{pLqs0)~*?!S>0kv_j8;CZq5bG~~oF*C#xAwEgNmO*}>bE;LOe+R!-@I9% zV3f^GW1Dtw8~?rIJo5CmCq7z=kzJCYl*+i55p?Q_wwZ!!fv;mh&`7PT!)D9cq!SH& zkKdARfprpM_z&ngwhng+{9W^j0PmVr_Pn8q-$3hv{BBXXV@`Sy)r{jI+&c{o4 zNn}JBTr&OF5f)O>TXh%>q0{)5bku1wX2~9wSO+hMFC#hgt%f@zJMF66ZJNci^^_+^ zSB;%1WU)8I7?Zkp7^*hC){{3uE(y+U$B!^gpOAEYz96=+Y>cNPE=SEz!+rsbGfya< zY;M}LHT2|3;zO@L+8?;Sv*%&=w4X~rzUf8l69?yH#Q7T7U!eM)i3zPEB%n0{v!u!4 z9sKQ=2w44n{M_x~ng@1Ejr!G@DjzV3L2r2UYCrlX+~>LOcb#DXeSHR|mQn10RmEt$ z80uBPw_n^4$HfOm37Hxh`&s(?`N>mA3x9Ma*9cdCaQ1oabD|sLOk1iGPc`uH`Ygi^ z2H(7RxK;Y?PlD1mlDVp#plPLj$B#^GPRT_q%6;^>TMW(coRsx$D^a4w&StT;8?Y0@ zC1-0qbcJUJ@KmU8zaW|(mbI7)>}9ptUNN{b-`i8>jLW+3#$@6ifWK>2y(UNswfsmg z?AsvOr*AsjIbh{AEBR{N@~WF}^7TVCJB5sI`yk*&YQmO%2_ra16mDyaJlm5^KK~3- z!rp|jAi_M*+fd#Cp5QL<0{4J7@BzNS5BP)ofbg6LPzHh^5DXrI5D*H&z%Sqt2nP{> z@SLYmMuBMX1jK+?5C`Hx0!Rc&AQ_|p!t>rhnFi892FL`@Ko)oovOx~W1$iJJ6o5id z1PJFSfwB~o0W^34UV>Mk98`cxPz9>NYfuAfK^-8RqX)_c&=9fDGsM^SGY5=^{vGm%?n3PP zhy8mQ5eOm@qR$Wbg?@fO8t=^{TS&jQGj~CT7GmN}n~6yXdA<=u?(luY=G`QF4)LDa zLbY9ibBN63@HesRBhAsi5?3(KTMu z0DV(Ct;T1x7o48z>vj3If2%N|R(dEE|V zfY|ZyE8&vf{3hK8Z`-0QxUuVqmDGq?&D4+BHKG2a7K_~?3WW>Z(yEe^d12hFZ%(sJ zqWMt08n%x|EX&4e8T4GHz9&~E;qU$T5AyBXw~=q#wqxg>T|0K}-nnhtE}C7tDXFNb zskc+m?xmsHyN8OJYP}O7MMS)LGs$KWG7=IpsvX;Qe9c?-eE z<_Ct3%^~~FqCX;CmfX-2xS@7z)<8GifR`7SwY61ndD+3Yv7x%6a$I^(O7eP_v{r+0 zEz4TN>j)>D*05~|*;~wWcsnn|EiE@v->q^bzt~e3F4i=JMHMqFtx@RWJh_dd`>aa* zS+Gyq67TPAFFX6-B{7LI#W#ZrNA9^e} zXXb=7^XX`9kc=GEi?c9a%xE4UeT5=7*U{zns)@dZs$0f(w4qYPEXJEDdu`&=G)ohPt|z~hUhKAW5X3I<6F8j9mAWm zTHPpcsoZXI{W~PfJz#Q_+;nu!ZH?Q5%0gI;w%(4i$C>r0J!Uk4`X)1HSGh&7VBQM>Z zbldo0Oxk&8{|PZUh+TCA&Q<=j)(>}NM~(+4*MS6Xi7#o?aDnNSzU>t^0|Gf2`mfm>}K(8l-s=g3ML zb6hAV=i+aQ+^5bLqF!n*;~hGo~i|q5H$q zSV7;oQpmpfN>NtBigkoZ?yyyiPx&NSf?|0)vWP&-cG-aHUb)2qDW=$RmGY-*Jw>O-C;_lWkV`AJvrA^bkp>bm_DQ(A3NhVP_p`faFr1%$`M zl|D85Q^iq#GhF*mO_)F1|NdJ4*!^JtNBAdWd#1{_(Ly@KcK#hzwjUg|LJ$~ zJ^w(+e@}?}_3=lZI|=bGK@NVxgZD3pzZvekF?|_-IsO;Kr-AsyU*d1He@)Ho>>V7P zoL#POTz|gn`m<7A8O7mS?l>DOJJPMVq_z_NaS(emeK`W(4tXfE=*?A~n?!wk_sWsW zGS9DhQ}N=KFd4yBQIt(NopsI@lLI-q1+s;vC5=LLArhMTFkj(nSsdLjvLtNh?^p{b zwpmgLk;sRbp(kkvi%KKWZvr6q^{ykOCHdLt`{MHwmC#Jpve6exz9^0H<%h8^ZA#oa zqP8?{DYxacYKr{vNGM%&+yYI@BkBhx^xi5oi9P|49UO!6rbMS3nIV3D^Qi!B#*9$iX(S9qa%* z0R`9vc7r{D5>Nrcc?6)O1$)6hupiI?dT;{6JQ2M01F_ThYiZ3;22;B z9DoyW0dBwpc)@YN2lxTud5Ta9ffGO&hyYO_2E>5`kOU{eDR3G{fiplF$N*Vz7RUj4 zpa9MR!uge;R0ijP3Qz@VKpkiRO+YyA0+iZ72k3%}Ko95xB)9|&z-3?v2+z3!ZD2dt3HAUAunX)4lz`&kfHaT+vfwO`2Pc67&;X`D2`Gc}Kn17*b$|q#KoMwx3qTv_09|kq=z&Y%8n6Hc z;4&}-M&Js#3XFjXFax)NIj{uwzzSFc8{i3SfgNxF?!XZ^0T+OS|MTlmx&k-g0qz16 zxB>ob`*UOd%3n5r1t;7lrjqDvU59^Le7~)Jwd@LQ)RAV6G^VofDgL~$sk)Am;DOMm zm?bS!O!c#~>6*x#Y6eWev|FcnBsMZtDgldpCAdT}sNLC7mwd6FwOd-FGZc3H8AtE) zx=%~8T}xA6O?g$BXC^rSZGm_%j)HlT0SoWIchv?M2fsKZRFs;~NxC;2u5gc2Pf)>yv^Pu7d$l9W($&T?16l6kf)Ak%F3IPS&62#m zhh$_pZ5{FKsO_3^0m`gyS!EFyIpNfrrEJyNA85OSI`E@;NYPA2NZWleyrNU8N9JJZ$ayI6dh__nxZ8 znt3i}HoXBOh88J*t3X1Edm5=i;Gp=@#vt>%HD$r(5?;F9%d(8zY z&PXY^THcznFG4MbG3ew!!p{v@vajuGDk&XxvNwSWEb&(=R*+i$cR<98e5cmLV> zhhN9<{^k9H-lR1XY+ZlvE>p+rRxvItaj9+?!E3seR9a^XS0i3%uBL0?CA7!NIB~H8 z{(>F7lTMiq)RB=n5h@29{o{sTO=h}cg;|pN(8S|p1LOW8C@OQlA`=Gc*4zs@%TK%? zb{6Xt*1gEYr;DMNN05nEPZYT@Y>B*}<}V+tAX`>!+V0R|;ihiLq39y}sEVxu3;S%E zwUzPY&!GI%CI{YMEpioj|0K{uuFXFqHDtAyYcMl`eV)5wcU>a3sgHxdxSQP7b#RV@ zYf4A=-o6X&BbS8orWRLJhR2cf4SCglrjo||4_#s-^icuB=AMySwCRgtjF`u`$Z3y5 zHH_Y3ya!6F^2uFuXNh&jap6uEDfPtWwoV}AgrulO& z`A)DDetQ^cqz}4#wPi8smjxAlOAC#2XO`jG^zp#%JEmM0qW{fZgg-lf@N50E^n>Gf z8{;<{<2QNv1%*Yg$}1|XzH9vE|62c4GftAt>gu*|;_EXmR*Uzp_?o*q2eHERg2QpR zIOft;yqNQ?PMq7QnC4sN=xzn+n;YitrfEulIytyVmnC!RNFOwo`^TX$#q7bSXp zs`T)RFie@jZ;8}VkJC(>oXXEA7IoAu)%3NSotPF*y^Si$cGXQ8>m`8!e}5_6S?Op` zHv?l!OsY4&o+e?-d))MuK-dq!Eq9^P1KH)0Cvh-f!g20`p0s_GIy5NNExX)WR!oP- z(OsFcbf<&Vhl2w6)y(T*Oz5^m1d(@&&aKB$Nw@LM(b?V86~aujtaq92D_&=wvr1zQ zHtuNgm}!wkW1-R@Ops30@~Sw#-h(NulE#B)w!S3XGCgj&wMe|em$SPIU4Eom?;g4fYL{w4?P7Jf zWR`LmwmV>UP)ShoqdJ)LZ>Bf=>qgHv|N6E5xb}nf2j5>X{>%#F4sKt@|M~xd_<|5W z<;(cLz+Vu57ySQee~B;n7sL;NxysHP^pZ5%?&c=tntsZHZdQcIKFIqrv5pRfiqL*~f zDBoQbBdaJXk1o}9`t@>AT|AZ1vC?J5K4w3_CM~c0X6C3=l-_+cso8{z@Fa{?f;GL9 z?pm}6+yF4p=T1h&nFlco+FlS*p6gU*SyGND*2?q16q%hqJ`|EK6`&R{TYY<|bsf>n zv4+k)Y++)wER=rjx@TFIoeTbvadM->9P2cb6DlmJUYeRKC&rx9+fO}Tq;VTo@_beP$^P0f?D&)GKfc!Ak$;o>2Zs?%|8W0cWBl-M zJAZs7xSzF>f?|!UX`rMnQ_QQNCp7Qf+FV0joh8z063L6r#=Mz5Fgdbz)_&EJr46e; zumt-hyhx3}rHdJGdrR<`?bmw5+HQX!bT{jxIhWLV1(x0=c)uS?fN34ilWuUYStg7} z(Y-GrI?(Eysng{iP~~*pO(|T>MOC`!=su@&cuIggMH&i@T6B)hdB}8} zGdG=>*S#RY9hDBreY6s|)QDwqSzIgP=|%i-BIn~6y) zlLhk{+^|P$22JJ>Z9B$9Dm9L&R!q~jdvtDmhhO`T#Tzl!`Yg+&$Bacs_2%65vWa!G zm^F@E;?5}RrCdj#>b)uOUV7*krKcnqoFzso%a~_J?v)7jW#+PCt_Jj3%8(Yk&)gkc ze>LCH;fyzpc-=9sp-}FKsZ>|xN#2>A1O2UG#!o*Tmo@G8=Vh#wlQ^3hyV`Tce@${i za>g1p-S%o_(8*&@3v*M6a#EMGwYnG1GB1hlFsf5nV$d5YNA1ec$;_ zlDyIuDoBp*?#3%5nyvN+_>lR6;fax^DLPTl^jcG!oV_1Vdqw-Styl==B7 zrvzv7v&~#30gD*N-DlwSH6;t6rKx$a+oq^gq%BVUe~tqDjpwg_?*9q>1?|slXnX#) z{^>tI|K~Bx|DpfV{uTZUets?Je=z>f{3oGrdUN0ZDa?ODh{MxV0Nmg$H9_iL8`UiPikIA^P=_PqHH` zU#s1?Js-1$Jfi%a+T)O}sHfr%i=R9!X0y}7-@TYCmdojI)n;gcp+3xw*)4&ynu*SyJYUN*Fs|QwcduzASX{9smz}|+V7POnMC5ta-2)h(=NL%mwlQS z=$+F1MZ}k|cg6ICOv;QNMza*DH_1_c1-rk!h0INzO?|AxAXaquCP|2)PqJNzoqr zVCwPEL2lNN6%O|+Of=aDk6A~#wr=>P@Q+R1=^+6wgXcTK1~>BR0yS6|4O>6z3y zSK+y*wQLYF2bJRyy)TQ(G&Z{6lb`L&VEceW*3t=Aw6Bb7ZWPExF%2d!Bl zfxN4e`5tGLxuaFmFdAVlk~7SRs%wKh++xkRU(5qnzRMuQ^D*_P^5pChNDUH{L&Fv z&>Gf7$c#z2HV`uCnEucFL((6t|9KIAzWpHq?Fd!yN82CP(EcD?uLzIhKOw#(oJS4( z(fDrPw14=1Lj02uTm3uYdqI4LFF!y3Pl$gCVrzUy{D}wH80fvj`hzs z;cwv<_9)Lg)1cCwKIU!Jnf-vw4cm%>h1b7T0 zK@=by`vl4u5DVf!JV*eEAPFRc6z~+Jf;5m0GC(FEoFfa$=O7#8fLxFV@<9P81Vx}2 zlz>uD2GHOIAe`eBl;xlTRDvo{4PJv9Pz&n78&D4#KqGhy-T}fnnxT9TT0kpk10O&; z=m4Fd3v`1X&S}@Cl59F)$7$z$BOg(_jY7f;lh`21z3mU(KgLmDX$KmyN^U!>G2SKhTFRB_t;2O?q&0`? zXhg$O>92&$HkIxv~WbZj3B z5G6)-zSHV9X>3?o>=wdA&0dX6(&=yyJ6AM!_-x7QFT*ZI9f+>U;koL4tc9^YD`O8$ zTc0Oq8V-)OrpQl4WI>zH5VFiEA`GCdXMiANoU;U0-?aG%dFQUdcL-^TTSWB$+&*8i(Zur(tLrf(DNi+tFowp`R2;mbZ*ALghsCvPh!+O|2X z>VkxbR;t!W^hExw6rQ@eqRzx>WG+X~*fOMN_!Sf7YKqcXVsm;Laq1ql6nop78MH=) zs2jHiUN$)Na#^;Q7BA&OLw(uy9XSm%f8UW= zLTZA~nF;<_VuJsF@{j)1`u|7s-xwe+!&sQ@=MgefgdODMHHJ}ztDoCO2jL@OUoiwp ztNi)8Dk5Wq_2-@U3%%?_XXx@%8&($JM@VV-b!c)WR5c1t2RCde!{e|{azgi{la z*IlY79B%^cM+;~%e)}3Y;M;^T4+MG5{cn%?SMdqQ62>Qfe?G#f!9$)YO3I2rmQV?GY{L%Q&zKJjN6XKtN*cZMd{>yLTpZE#!r6IQVcf@ak`21h) zfBvW2e;fI){&$W4{E7bmQa}JB1Kd9z#b8<;XM3@CCxu>GvUc4>jl{LpE-~heRCGo( z=D@BhD$I-vRokwdMNdE0Y^%gcDV5?+2;NL+@YXh&s|%B0zd8)1h0HCFkwIX3M75`n`0Lg8em*!iAk=iWBF$C0*AMdhD3} z3KX|I1w<}3s0^28ju^Qe(ALO2YFpdtC{#v_e;?+-*~YQP+y7y5ptKlQAC+J|#~cK^ zKnT_Ea7tVxk`5A3xRV<%x$WE!|6mx#f~Dw_JHwC26pO0ds^z zSL%{u{!*n|fXhb|&4(WM`y(&mZt~KUi)4Efx*k8bhEAu_bhc>QeL6Z@(@gYYVc$^= zw?^4PccN8c{2Pyh0TrPhoU^&n7{!pJ>9hqo4CKDb><)D=k%?OkS)A@*ftU0UCYLi& zYEi1ZPhJ$fqp>%+k`YEi2v?qi01>#CO(Cm_=(qN;1zgJ=;fk^yz6r~K5kJ~~*r-1? z`j0=@f83}){@2$Zgi%vM3)J|3?w5bt1|_spH|md#@zcL({B)!K_%EtI*q}f1_sE~L zk-zu9Wd6;nImQncyU=^XgTX(lM_jf-s~BIN4B9v* zcS{a6h)b|~QOgb+edx9>s>)n-^JgHZP$Uo6ssR z46a>}=kGQXo3gPj&1}Nx8&~xoYe_$9tJLZ!UWYNnWi$3C7FzcqskJ*ljOUZ#y%GUfw~L`&L501U2JVgHKXv*4xw6m*CA!SHmYo|472fR5*y=y|EDG zkH>iwU0P|o9d+qb-`J~!t#egomyQlFqJC@8p>KXR21}sqQ()|>MC!M9*pHS6%tV2{Vgt_|#ZqNm`^ksVIt1A3t1we9hlQ*#G03^}C1RZeW1E zP~5m=4&>_l*t(D^uBpI|j-ue|+2$OH`XI+!=sw;Ei98ig_m2!Dc}p~}HfA^OITM6x zJff0Us?<1;=sU}FAs-ty@Os*k+l_vf#kX&Ihi=`Fs8#Q99iLmuXg>Q~+i1b3e%lGo zV+A6-(Z`n}E_R^r9%adQw~m>8@YuZNp|KF1V{@CDQy+5jP(KA$k#mi5cAIRlV#{#! zM4byW%Gf@n>{AdQZhD%0t1^$PhluUFK{x0cEee4#s~GTZdtL5?Mtbj zHzUf*^iK6j9#g*_F7wzV<18n|=XvS>IEUxk@e9O8{jpJh{5APUe^-Cd;;)OlO*2+e z_%j>~5?zH2d0t20RAsHHROA*k((R}~h9?6d#y__CFF5ydS^GV*X-rFZDQ<5mf$3BkDm0LW!vOS;jUiw|X zS+b*xx>2;N=R6v(dwrdx@mm7GFBL@?z8VrwH&2Vf5b##?y(bD@xXGOB>KUsMxLi7v z4qJ@jm1Dc&biP&)>TNOIK6THq8Ay{7ya^_ty%%FROS;A!j`ArnHpcm0xr}#+@|I{T zh(h+6&dyc&F6Ft8t<1l<&X$(iZ`S`*B!nU9oarl{^S9ovx7)*<3|oW?;uNf4F@(<@ zKCfE&WA|TwwEe;Nlg6L)zhnG~75bfD$G`Z0Qhelh#6JP?NxqDK3H+q^m%byu9K@&j z5?}Bq#W(nl_&N~Z>dX4mjrltp^LKu9{*H1$G~++#kJ)H{5;DpBFKmDQU+4cV|4r79 zZOkA3@0mZW4D*K%V->8e4GgRq68d$gqqdn!44SVa#OW9l+!}3W2L?#$Mw|RkBX|Wxx{OQ12Q#2=$Vu0jAGC`(=YB1pv0Cd&Qh1=-HzSi zbhdaddR29*zn!MdK3=Yn(y;9Pa*@`=!nK8GIZWJF6FZ6vmwT9~8LcOhB=jcdSh3uz zs%9Pe-msJHcIQUrIj&6DD_3<6-#9PSJ(^sWYgPZoRO2ltD?Uq zor)qPoho=j=&CMDbnn4+r+Mi0mr0|Du_NV6ju_~t`r3CZz3ZPlq@Y_EE2Ft1-)b_# zB(~7xszwZnbOLi|m@dgh0g>#Bb#|Y)+Z#VOJ&(}fKc}I#pqa-#-yt|99Xd6JS{}Ds zV~fkE{oL}*AjkUTj?}X_Hph|M4EaFA6J`Scxwmoe`nmov{!)J^ ze6BzGxz`pfwBEq_1JcT0*B_Xf@t~Ub@=peO=$cVT?x0l<&T8)D*Q)C%K zpbpt1gDRawp3@rcz3-;|blgKA-!+m;oKC+v-iPKcnb2BiK9kjpZb&EZXAKodw;zChOd$!@U%w}|3&Tb+8-PB$A7l|_?*97nWB0>vxoZx zdMqY`OPR(wR9gr?Cy8N#td`>%sQqRXmIKPdgC9cYJ7MpuF1=U9{%Y#2oVi>3o;Blp zuW&Uk)G&MR*-<}#ji=YKYzb@AG4jT)IwDl53hA|GV`JxHZIGh7Y*#tk(7kkzX;tyDV_4qm?jT{I`GVCX|p4H8yZ^qm%IAcY(6eKptsD1+ zs_!Zb7y$J99)nWJ(+#Q#h_iFiZ#OApdg{M!K47L-la z+R$C)C~dmcCaqW%>7#O8kGQmqU_HF;KjlUtB7^xKfEa8BBw!051zQ0bAP3vPcCZ8N z1QcKw*bVjoNMsN@u0*3(;UdBkIz5UzxjZM_+EsCGw|R+2><%Y z4}K)%|NS-cuOI)&Y39C(e-l2x1#W{oz!TgBUf>?^20p+S_yK=#9|V90AP@ur!r$jZ zC__Lf2m`->M<5(TfX5&bM1g4V1jK+?5C`Hx0!Rc&AQ_~9ryv!ifpm}oGQl&D1)hU! zkOOi-9>@m;pb!*+Vo(A~K^Y*t-WO251g}6jr~s9q3RHvFpa#@}I`9V6g9gwD-hy|a z2{eQEparyoHt+$ogAULMx2y;0X$d-2zdX0UB49z?}xv``irxOOB?xv|4Z_p9<`az zfB)Wsyx`i|gNB)~Y=R}d>*TI%W3+sV%|mY`vaXl1RJ-k4>L{#z_c>G~|aUny9mZGN6 zbN_XO2(Mp?K9=;B$ZfqNx%b;c9%-Dq82HI_*_&19avd9o+`fHj-I`N-8JLebtG-}2 z6dPCxZ+<{ezscRx*5g=6Iq5O#2PDVRLk~uo3#7bV5VTLB5ydGA-q_w3_CA19vO?3p zf~Tu$k8_g|si>aR_LcdIiJr+hOG0(I4C;|;(+234q>+xIIuiz?nu~^Q=}3WFgT&HJ zLyY2)&l+*O$eFZy-LuV2w9aXh54}zbo_P}R*s0P&=`OYK_u}$nfsN z?S9tvfnr<-zl#F9J$vKsOo_MzwX(ddd|y;MXGvu_MOQ}O?U(cp^%v2_kGNvJ_r=|- zn&bDmvA|v}<|NRNTRN5GaYUg%kodmgMFx*Z8;w}r7OM-n{z)abUeA3Cg+ENd-=>=(zHgtIiuc(JQQc6?p5^tBH+(j&N!*37K+EYatCTpuVZ4)2H zHXp0*%rlkft5tcoIZMBr)cVAuQ(6Xh>51kks*3i^9Ysdp4+%7+4Mfac?4rHObp$~z zyzeDL`Tg8{JBAlKWjEW&@w4-rE+0#9vQ-|s7+SnZ!JS!2u;Pjz<*qsgvXwT~H*Y?0 z`Y|ll^~BSP6orPR#b26zd+BnvNXOJ=tl7%816pdiVGVjs8A4~yzP>N# zYYp=riLI|C)NI)s1n5poa!qr+yYS2K&cVVV`9q8;8Rg{|4Eh6aw<1SvJnakSkCYD( zj2Atq?zLk0t;D2FG1r2GLN9)#(Hz99x0dGUIvUz$9p;)-l7$I0l6x-JnC~e5pwolw zBD3X;=iY^S7+s?N(a(5|J*afn<9Wy9(C5w`W9`FUmoq!+EKXS12NYKFPpD~$9Jms! z8g*h~QGDzpAIbSnzA0O?vpMsYG_>c1m-TL*sa9#bzr$8UDLbu$v&6KIu6>YnDF~N9 zwP)X5in{1T5(mNSZ}NBLgnRloL|?lxb;IhR=iWo!TS+siEk7BxG~83zylXl_m36o? zc>nI`+D9&~rq+oy9KodIemGiI1V$&O-$bfi*Rmv-#rc}td7DzZ&ZyF3QCSI{vhm#| z%HCr6HAWYg4%kepx!&y{dt&DJApM1-hVNvM3{k^$xPZZnmHr}!!sq5j!42nMo_cAK zFF#kuwqMbnImzBsB>y1s{2BBwuQR3&@Or%QX*!&I?WX$CgEUpjZBY*gVh>DMRj29H z@dxgs*4y{+?uj9r=wbE-{>kf~uq*woLzEL^`sxoxhB|lygA(#v2PPq;|cGM{!4 z4phz*Bd>opdp4{xf691=S(dQ>%~dp8|C2KN>zhUVBiHOi`7Y{qRrym&(^0!|m|dqh zk2;pr*SNcUM@Yk?!x!V2j-EVhVR&sVHF##pcandw*}&(NRbc1y$m&CnYtxhmDI^v% zVT+WmEHv#ls$zu0am3l$LA%zQb_~ABW1)_fR(cUUK~#@t|5P}3>7QdH{Lvsls5yT zdfx9oYIa>2lSVT~t#$0Fstl88VPH1at|?_)=lyZ66o$#T+N)~s@-3hf-WH|rJbIkf)w!oo1FrsO^tw3X?=`ctP9Ns7%h`$c6inM`8s(d!Xd@9|^lGjp z!tCQObi&)cqI(=F6;isEXKKtGba!vByQRr;qQO?Var)x9C=qjqQ=-c+w;K6XAR4;p z2c!BU81I!SXGcm94=r*%*}{CgQf{Z|exb0M__4tHJ@d5cRFVZk@=pYz|N6^pxe|qd1BEtw}@;ovES+W{(FJJ5H`GRud<$nR89yO{R_Sa+5iS zFk3(9l1;GkfBr#idZ|(Ap~{8sJSR43dpd)Zizlu0kz28`CX+XgFv<^~dhv>gl_fuC zns#{wmz$e(TTClKw}AX=X!&KLz{o-2N-DK;VN?$ubeILpy0xin%)k8M`Ioo@EHdGi zj~GiNE2qqyOJ1G4Ip z{0qVjp662*pVam$wNz8=&5!mXKg{SX^G3=2RMpY)$~v)a0wt;qA=3Mwf($gT#dm@8@bFDH>@KFS{HL*m@%9Bn4~PG2#AvY3BA1l0Jv- zZbs%>83e9|n4X^Rx*u|SzH%Zyx;Mwbu4LB}#?xe^3mG2oVnfHQMK0Xg>Zkqik-A{N zsG&H!RcCpgDo3DrXK~H3q6s2Bb-!q}N^7#j92wiLR9bI|ZppCHSRy|3o0{=SwazzO zENax%zdRiylOrPzoIbDXtkk41dNBO|uy-F|QC?}ofJXsQq$owIpi-5l^gcE~L>vJr zB1Hs5KtKcpq>L4$OIH+7dN0zuN(TYy(tGcHXv6=E(M_`1Z?n7E>(6ICC)b@r!g=3k zMrY2Pe&kYf#9ySIs%P*}sV6b2Vpv5>&5tIN4&2jg&GwXKa-}_gG{QevjqVAY-}1as ztNH|I_UQ@_RR_!7lLkie5|23C8FbxU`6ymh%c$0es+_Zv}$P*{{goTUjoA31G zyoy&i#9OyBG-upLo3&%&o@Q(Vb=E4iTlCc^x67a32PlhPig}F}C+Jk!`B@rYQG%Z) z@|K;O9Rcx4iYAXysg{p5Hnx86_}**mBqK3 zsufqGOt>SGYICyXk{)oqwd+gwr8GbZJ@nS^3^}4! z_2Q;P6PpX=U%oKN&6m63^GM?50xD%2p%JS-J}Vha`B0yJr|ab>*7%ln1k_nJ`%%N< z9~%aV8Ju~?_`}YRn$22cNK@%Z~^2 zh)jCuk4|s~HL4CAu)Tg4#l>-~z{b)&)5B=p{`oZ*3z+Lb5W6sgQ+YRoY-NreT09`)@pagwDm8#;=* zsgXBSi700#z0fDtnt5Z_lwKTq^w^J0F5L80>^qwECY2bsZG;YALPBb&h$d&8YVZ4c zC&Xp~pG*sL))B{(0f8s!`8XI%5p#UEZ(B^)>P83^cycVCvLUY?G9-?<_Kq+#Q%TZH zx$D0g{4~0LH#Ync%Ea9^IitdM=*9IL z4hb?ls&31OPDnYsP_92TTjlMj-S7J7xDRd7nXtlTI1o*Nn)>Boy!}r^KlpffJQJ<6 zeIJc^q~NX47L(p|tuBne>S0w;$nnZ$3OJ6QB0L4$!$z$ei@+x7glP|omAE&0Whp(KKoPboHDCP~#swk7^0ruz9 zJR^#CC%NkB_h|WZyemI9v>Hdwq3@+o%MkizkYtNfax||Xx6sqnA=Axp=gAXw3rM#x zJ)=9ZyzL%G*fFFf+QFW#(nDv*JEOH`a+PRljnMf%vz`B&(Ov}ZH7+wt$; zAw2&v@6+qxW!)2{T2~Lndvf$kl(~XrM7YaW~ zmk%t;E_g6pyBB606=&QKPm|cZHiZ`-K>Wtur?;0fH>ykZ9J6ydy-T}!`bX_2GM1rh z2^|i+k{|a{+8ut6kfGe+qxrGtNKRvNzdD=S7<&!J1uDx4k%44mC!SD~e5SYAfhzud zkILl{#w}I39bG+Ig0+n_JVGxbiHNe1C!_-CQTO_Gm>+@$-U;@la5s`q-rP%pL-;w} z?SahoO>Pe9TBq>N&0V09k?Fh+v+|ue!XHjKpIxO^EiDhal%9m0u3J{q?`Jr|BS-uuP;nTv+O4&F2HhV&MmjHSW=aitEz6_k2wjuSr&$Vh z(o5(gcCWnRp`rM6mr_xK`#}m)m}{B z`tR)Fhwq{P?&OdDyT8o&MJy;6G3(M3X$8&Co;N$q%=?qt++81(dVY|=N+?(`Dk|~# zZdFBcd@>H==?5NZlBl@2#4w@MZA1<-Ks_l&HL@jo=7MP+=gYm9M6(~0tr9TlW|lkE zlOnsQya(jn+s_7Cj3-%|9_fE!z?s7s@kC^{Cuf$%M1%0d7D9)Hv1etFlOU?B=14v% zKby`DYEhPTuOU@AEjLR~kz9Fwn@EI1)0nmF3BL3Qo%p@c3-GNOV-VTZ?~?PBf6JA0plp>C>!#GU6acT*dAf z=d^-~`H_YcnZPv1!fWWaiCwZI)8fMRX5~g5+zT;r70zW`XAM{n7N-Ec*_jitsF&qh_>@nMW{mPv#FiF2NOs-N5* z-~FV%8+nX!i-i_zOq!3T=w_dta%8D4oo1GE;F$Iq-9~6TCYZ=I&!h|mm~qj4%rq4Kn1;GJH$X`ba|iC<5sqy*uxnvTMeH!F1HB<@+Ah5 zf3UfhepMDmLdbrtoW;-}+62KG*px#V$9C{F~vJ$wFX(xY;Pl5GSLZ%wEy z10$l|c#WyTNxXGae&F1U{^K57uZ3k(t8Ttdi;$Q2PoFXQ9};Et-f@PXk;LA+qIZYR z=BZB^`QF4m8rmlJI3)ttuLRKbD!M)ldhmYiv*&ryzWw#Y=is1AXKjA(lHlpEr(78| zmKKzapS!N|Jxxw}k1Tp{y?rB^^flA-JEE0+gYgBbTV%o~UPY-M4}FGBS=925mLk}s zckfqq7hFlQI1n{>P%|+&G*W5|Sz=CVx1a4cp{l4})w{8)1FKJ%Tg{hptuMQ+)b(?R z5T%>l#WQPsy;{BaC_pk5#TmaTl!|GIsgZZlpA+@JK<|i07rmO)7?Sxi@^6 z>~$A}sRoB>XKzW6L>T2cCix2;r?qKA&SrF~># zQ0+`_Ol@d4YYhRN9Bb3&k_2jC#O3v-dPt@@p0P1jIPF2mYiDX@o82cb+%Y(*R>ITx zc`{>#a|lf+#iqR}*~;}KAR|alYCb`o#pB?^w6&+#gsKY$!&IaqCcCfKUz`hlAy^yY zVd|Jxdi+BIeO<4;(KQkLKEF@aWe!*3Iwr6u<}*x;3`p8sGhK(SOc5I^+Z;-NqbZw; z-p?K_Ct9_BD-W&y<`}>BK*wyGY;=v)I`ZmJyic%unk4r0ZJ>w?H|at;_~q`%^Jpm92(?Tgm>;y^vA=55HHy0O`CQ}GPT9Sw zC6t#47}awYA#%1Pj|bUe|7gG?sQ{bGfJK=vgaJr?@~UIQ6U_76L;=l(tCMm z33)iBiaFXO>z)wm_UxUcUDHzPLToyBhMjj0NLWkS9Z6D%?B#ENU_8}>Vy-!4Eug3+ z;yoaK)8dr&v7xjvwf@hA8IJ{?UM65iP)tu>@HO{MJg^oiac()9|9fkkC$ISJGmlUL(r^!3w& zsRCHmy!!nVJI3U>!o^?iso9_JvDq6%sdOQL(ioBSAATg2yJTX#Pe~!4G{Pu>DLVK-?1lY1yz|8E)zr+z zG)o(*G8>#*l`9Xe2o7rqh1U}6+3b)_O|C!R{H|k1m!nBnnQl_Nl#-|3Eu&uDX1&0g z^BJ}(V)w~Uwu_F6luH(xluJo&?#nC6_p2zPZB$aw1%9H5GR~P-g}R9=UOi66F+Es;2md{Oc0gP^fsOAoMya-FQT5RdR&LpikrVI zyN4wMwt^epHFj#3;4_NccT*J}8y?FkA{m%|Yj)Q|&BV$@KGw%G4n)*+JYqJ&gLBG- z*~5YeqiuH;Ou2A=j3G*)kh&YPzP8oXYSt;MtCudps2Zmn7bA!rHYpa@(y>YY7&Wgm zKo#wG(^}H}LT;gI0Qb}_ikcgRxi@ywn^=(*RDZNsJmwYoY?n;$2XmL;`ukR#NtRcd zlB}8NCmG}j9(Y$ZUEhtb>XZJ~{49~Ml#RIl+?&%&qy0fH$xf^lgZ7olW|^FvsPxb8 zZ(9;PIw5tdf!#=7DOSgq>h^KkZ0qAj>!*!xtV@b@^FFQ0U-0`lq!%>Vg|%KvFIT?Y zB4!c|lVZh_sMX+1XZOhHCf~x4wxF=Mnlp9-IWtn9izr=rNGS)@v-RSTlWE=)vPI%! zFM?SNwY)AL&^a@%vW>_HUs#=XptygW@21$Rlf2byX7@>ZGDlV7<261hE)`F-zg0bo zDVUxM&2Z#`quv`#b^Nt=&KCtFX-sN(WhQe@u6y>>inXqF5mKo^Y=Jt%Q-19JYTT$aUiMQ(j%@$`|Q}6^AS^7t^ zJD0r2wdjr(il*C3jf4A0bAUyE% z`3?8V0zIN3qJ^z z|8C7fgfV}_9tZSd19JAwFe z6AKU)2kH;-SN!Vkx4+z7=gX-VxK*%bUt(Q{Q`~OjuK3a_#_cxu&#twCXK4g$X>rf; z=PNnjBHTW4-=5_y$Yb`UJ&ikG_OUKQ@QW{~UW(@z8-18x=Tw_La#if|{c=pdva=bbNC;7$Vh z-Fll_!H$QHO;A*D2kxY#-=4&WJBg4FS4;jn0{8RTNy@NCkL8zJHi9MSJ#q#AE%d4F(Xysg zZ7Fu;Rn?QlSS-o@gB=HP{RPapzvsW52lwA9Kfk?s{@wIj|NW2o3xCf3%isR|{lC-i zuOHKEdG=yU0%|66#t|9N~MgoAR{JoByrlmvTzYHo|=yv7lOD zx{c7y@7-ctQq)m?hCblrQZw3H;u81E6WryX7xdTr)F?pT=C}86=y&q|r9$lZRsHM7 z`}aG3|AxD9;0<|W%)Qrr&IcC=%S6pDSEe@jK&S!^hcW+icFz8v90kt0P( za}_1^68Po#L7Q!X3`Bi$4i z@G1*rG19(ZSj18_S(T(}c;;%Y<5+FKu@!1Y%KqJQ4CnQt&N<|i-GJmZS){9#HzDR8 zPxNln==|rf&OjNCO%t4mSmDMPuzFY+(^<-KTq~D16k1y+5Ut2kuv^aYCXnt}U24Pb zXduojXqh%wUc4kF1}l7%MA^>x=*0RsRTdLYz1hi2Siz5WvhNH;CO(hlLF$`7Zj;O0 zJiNQ!DnIAUx}2uBTdHr9ua3*wORnhn4f*+P1oOgrDD{!zv&+4o&-6z}(@*KCHuPq< zrwBh-Cg)^oEzlV-oT81xD4%W44B1<{(%~86SrDXjwfE$w%Ken-1O{C+eT;8R;zQ97 zk_G$=<)KPL9bQFJ@A` zcMtZ+XH5Kn`V8;uM#Jn2)qa(H?*cbsJRW2W4SLr|y^J;KVGO&ZB~WjE{m>(u;HFr9 z(aIjpl)3`401I!;wh>Os*3rhCiZ{baF@hOqT}k^xBdF-ErmsC2T9erW+udttI>-|X zWmE5LoaZ^LbUO9jpk#$$t1ZQQTJ=oHv$G^FZY@C%#y;9_ozN=kk$Ba{KV&+lIOqL< zXPN%QN`<|GWZ1|39HqWtIx8~b%j?!D=bEfcBhQBp+I5JU-?`^EWBf_N-d-s* zV6^#VTyBAqSJ{~1(9Y-=NdE;h$9JK-q*YwAy+j0#4VT=$ti~xUU1=(B?U>N{%1kCyHll_w zxU=LO;s9>-UylRImoLlJZEeCS<95Opg#1q zM_=-up~YD(*xxWSbE`RyrH3igKitkZsu@ve@xf}S?Y^Q;+BPC#&7`f}iFdQ!ZGGji zW6FCbMO)?-pMv=tsaf^?3Fo*?D_$OTyR(;gPHNUtyOU`eX|?ar+;R@yeS)e%*ySk2 z$7%1?U0KZ|74^9kbMFPm&+glGs?4EBnCF9X;^6Kpyuw&RYc4HA5`#6yQKo50k@78~ z!%I2HO$CK*1c~JB&+V^I5^g!d4%`&l#Jh|p3YJH5oFZJXI%V647cs2~Hk;lyFljQl zP%&(3H{n)67?$k?T*zC^rxO27*xo8nwraUzu|c0n&V{6 zdnRmN)x73oTOBo3+HJ&{mtmM4Z~Bf`A#LW-BZ6*;-MPigBi)k|9K@2cqtaCC0resF zjP7&Zr3db520x~@xvi1##M&rw_Z|j4wn9qVrn7!7EmMTiJj$Cl!;9GY{k+)Z>==_7 zk6m8oy*jZj{ZamiNyl+Q3Awm;kM-JLG0n%RDK*|dZ9Tnj*C8^@%d3n2K^OfTW^$nK5J~e zF6zLv?`DKojPfI<&~?s~XFb2lK1egR<0C(*Sq_bcS z%!3862$sMySOKd5mv;@)b+7?8!4|-RZGeC|vx0v@|Fa3iz6PIH+(YP3i2nfMhkuPP z{3pbJ4)O2r`swwH{0Z^jLi|^--zM(yWBvbszW!gdO+qo+*1QJ$Dc`HDcB9CEI+V4E zE0MV*7UCK&+;!t&G}09bbRhS-DJNQ{KAn@^nhTgmyKslPfW- zoBK)9q&K6{0k*+uVMf{ZmDx>`_fETQ4Q@G@nx$!1+3c<2UY%v>ek+-;BnZb@n+@di zy3^rn5Y)X8;FBvFSRL6$6r(iPF6er`^wi?b^j3a4F3ai9@oCjp&2%l)#{iB&X}&eX zbEMe2(q-$$HX_JCHfHnO95#w!mh=tNOwrv%DV@L~HSf#8BZH^fEm&JJ($9NaA}eRJ zbneo-M$FTZVEL!qT0-)6guQ86t{WX`ruG)5 z$vP!=cGv(azk=-JvT4XiucEWXh&B4Q19j;B$wB%BRmH zAa5=?gs-lN@QM2QP3k^}X0`ImF;&8h6-`a6ucNx626PZtFz%P+%R~BJ5+y29Wyf!s zgwCT&5>N+Bgy?Rinx#GzT=e($86?R!9B5WlZ%q(Oy?kSq(z-8tu7y=Q&^NugYfh(x zoAX_pQmx+V6^YoEZNvi`!<$LGRG5oxWm$?P0=_5br7$Djv&>EciYhV}-IZb@WYpc# z%jHA!N6hVCCB?k!CNHnATI6Bj&>BPsS>3A5=fpHIW2how4^pFoocx+u6raEv(?%B@ zkbP!Do;qcgc695!%Yv`M+!=X$(}y!wdFbUJMvd$jutmBl=jOh~g2Hhdi-WUWzKg>> zljDtUN6|*t;h6G4vbalF<^0B_rN+dFtkaG0Xo_V4Md{nQqT=aqq_pp>q@H?r0k^Shu`m6L`ZLv3CnQz`JkFYeLD(S2>yY19Me>P>KZATR<$j_stHoL$6(6ynJGK-3S$yXYZ&HK)!O{90Zr(}x- z9S$6=mwqq7a}uA}CVr)u&_@rp6ES#^Q4*8zT(aZl9HnLVP>!5u^COvUXHrg=FRWpDW_Ysyh zkN!F*Wv}vxta;KG=(yUL&K_yWiPJ&c-p2=x+Pmo1{`;+n6wBd8>2 z>r)lg)=J#-o+X#I!nl3T{65nMwTAQA`|Ih90@v-GrgpI%DLpRbVmH{47I)D@dFZ7% zmZm4J`oFcj&LMjTId+v1U8{nb3&ugvEP8%!8Ec`ES(xdgL#C<=YM5|_?6KzTWN5G7Ny2ntzpffXiri;*f!uhemE|_3qh17e z;weS7Vv;;V&ga?36gVhiLI_LjMOekGIs!@?YL0u7mZ}f#EeyV}FNWuhS^`DI>9bOJ zn5zC+YFo<>Hf_PqVQ-9kjx-H6n+nL+V4gI1`dJX=60CR(#a8Uf@n*yzOPQFK4qibN z%(Xo6r;v^8l#@6-GfO09w@AsigIxcXPT{Mx_e6wDb{qVdFeQxVT(OQy<1H?S6VaU= zTCo3?J{jp;k+Lbn!4kj5=zWm`&D}37L(Xj;8~t;f zZ=2oU(eCbvk`Jpc`egQ8M)Qe0=NpOm+=E!tVvV*2q+S@Mk?}k#Zak<#ejuo|-E8mM zL^3^zT@1vx8Fe4{EQ|(s*gEi;weT*S@YLvv%VCo5+|-zp9BY!QA4HPXZ^hOHGHS=+ zIVSmJiMW$32AKOlsUsr{c1$Tl5%gZU(sR`||8!19Vc1kwdRg4*hI%3X;fP%&QlcHA zDR>y8jpMdKAJ%yvg}1PL8p?05<~~1MR7=K*KWC@N{vt!bV>f=jW%kV~PQUjU!BO2F=BK+X!;)aWPYWn_!h(XI_d#54YPF-*Azcmy5o0 zCt1JDNU`PZa3um0(eIRQ89VN?jrhRNTDsc0GPR*^lwz2pf5GeYp8NQNtoD~Th$T~| z#g~?;Gn1@x#bH$ZTl?V|^hbOT-#_FC^8Z!+w|}(%2Di5J=aq&(&1^mev!P9)Zt&~% ziASIrcpcXk{JJ6(ch%ir_1GVSU+VoPhYr*<^q{Ws%f5YFPW^w7^S86GaZwF$Ig{dF zU#cnJVG4Kq_4C55J-va;@%4F`LVhz?{fLWu2mUcf*g))Gug3hc$I{>O<6fyX%;^4Q zF5LRpo4>g0MY!8t_%ktt^rv%LfBAY?Ag9qUa^qH&+J1S>KgY%0(fA+a(Sh0I249}* zFXQ9ZjGFu+_iebpE#&+4N>yCkTffS6>o>0im&f#1d46iS{}k>2@cPgGA~p&v94Q{~R**b}@=~7zT(qsZ>j*>0A*Yw>gdJY5K z`qR4wRCl>ZYtDKv<#U_7>)7&oV??m*zrr7x)pml*r!pT!oVc6$bA$Bm(Ado#O&JNi zQyV%<;^<}hZ3I`)CwoO{N=i5_2KOHPZO_j?Za@4ezyF;1yMOfaEBeRBA9h@Vw+XHU zhT*1d+*{`N9`AoK{%{;lKsoVy7yOgo?}kO0s?`WGvLn-Y(S`pTO8%JTZJ1OP4!1GSB8Sf6smc zNn{*c7nt7pvEH0sf{)jKUk=PFJHiXGWgVGbn+k z(mJMzUDX|!CwF0Crkdpmi(6);@-ZB6Jce!Dn_#L`XJXf&?;M-wwdl2zKJTz zb*is;4jX4`jc+5gpi!MdTuDn~I(DkBL0SN%w|Ks;j_mEJji*@HX9od$*B-^yq)tH# zLmz=#uYhZ7Sba@#Etzkhzu-UV^S1-$fb0agxgz+G5`bNR5bOqf01?;=hye*81!Q0! z*bm471)u~}0Cz8HNNE5qpab-P0UQL3fC(G|hXF1>Go&nl6|ezzzyXeeV}KKI0dBwp zaMv7%^aS7o{6GK*0wEv_M1Uy34+caPhUT7Wyi5?BFia2MDBTVMz70ej#89Dx%+1Kd3*|K-Q_JH-Co2r9(> zzf}Ln|Kaj?u6LgU4W@1W$YhyDvGeilSw^Sr#k~~@rzgssrb|!62i!*Yq|jj$ zHcp%L9GE}R5frN3&Fx5b|DwX6=&=O_Ohb1#Ug)oK61Oge8=yN zpJhOO`g`cV-1B$q|9`AM`)u)b56`~Qd`8~3a^KtCsC`kfvo}K&2p+&3uHq`jp@uVsve`KL!JGnL~dDE7+3p; zsIFc7s7>2XNr`2*$GYeQ3+pA__S-xeAW-HnyYVjS^I$fEUTb2pXVktA4zC~Vfb+k> zWAGZdfaky)JO!@64Y&gj;0e6IGw=fV0AJt-{6PQ+1VJDeB!CF;61)N-AQXgwHy{;+ zgGi7BqChl=0kI$s#DheT4wAt;kOFc6t_}MZ(u}V^S3#NuvO(R~|Ca}8J}3Z%pa>L$ z_aFy+03{#|;J(9gj|%v?5>$gsPy;@KTJQFi~~n?2_jg0I!pzmJ6e=!nAFZ!idJQ zHMCl4>SFYkShf*|wWQgO83-ToSK1*jO-1ko_mMu#-XxH52~YM+88^m677^Gp?jFF&QOyE0L$^#v0AD z;@kS9x9ub)Ni^q4)B4E}Hy1i=ovNvu4-)OotqkmYW!=4rlt!pc1j3gGCfSU6rqbdACVXYqJ90BNBrCly1w7Y? z#G2_netZaj-`RpAv%{ZfCJl8mo3RX6ZPDtUF&S-n|Zj42m5s?uHWQ4Pws#T^X)&b;_vriLYuP) zlPMI^U%0DvV!}G~Y<^3f8A1HT;r6aq_$ox5%D3y@xqIx;F|Xk<3oTh1-b`7{ozrX> z-q2CsvI`nC4}hK<+=&9LfBXE{{DuGMcHrUT6W|l< zAt2a8NwSyZUoSVm<@~Aq-0@@ov%ggP7w_+O?ZC|iJBoV~{$|DKKd=8L{fFh(|L^zj z9>kCSN20$*{de8(1B_{2=#j+e7#hwMzrW{wf7XGkjm|m2nvFG32NUSDu7e2@k$*zo zy>`j2(~PouYX14Vl)$m@`!FQPftxvh{cqpDi{Hun_ecHpFH?VAp5#WC6cbuKH9h2f z6i$lg))?t~ZD-@-8-cVU4aFpu7I+V`c_w#hT`4iQxxTMc^N9EHbV3omu7eS7`FgRo z$bpM~6cZ~AS0^6qtdZazt}WhZ#~!lVXiv1sX_BHb5*to(j?a5J!Km{rU#P(T%;@bZ z?A(y`64iRV+`Ta0tPc1T{O$e!qy6@M&j0?hat2nuz^o$NxAxaHF+a}}{h!vR;O0Cd zbj_o1YjSY8f120!%QZ2$dww~wjY=T?*SY@DiXdEW3*0?lRV4j=?%%Eo!mUiWgUc<= zqAUT=zyiiUaci3GeznR7cTY=Pt~RDD+&zEJ^*=oWD_m~v^xVJC{o7}73^L-zToL59 zMY!C!H8nTj85lsso4@+o-q?D?n)iXPFuj`j~ zGN6tvc&583=SPtUm)Z30xzX$(oTAaKQP)%+7@Sj^lXs3mEN}m_iT6Qw%tU$=(|wN$ zD(GFtWDX$7G>jUHVg%i)jM(0o!|s8MlgC~7Q4ja+A3DEDN%k!MwU<+8pk}wE%XrP2 z&ZuSIT13rCQQG< zdw4_o4EO+F;0OFc00;y@;5m2!g27Ah3WNaM^-Q-APZ!J9FPn0Kt3n{xa*1_Ee7wvd+-62fKpHf%0UIF1XZ9K z)PRqm7U1qt59ue+02)CPXa+5y6|{lRpdEC8PS6FqK@Y&)qYu)4FaQR@5Eup{U=)mj zaWDZU!4$w`*0W5+gunbnfD!_m>unsoBCfEYFdu&6B*bDP#|9Jnyug1P` z1`U$*ZDVme?oloU&QDC6XM^8_@-ay-w6B(@x37a=GXY&dS`w={i*+k20{B{ z{O7OH{#`|RhcR(u_qBJnw|7>c2RJi&sWQUuz~=R#-rCfC+Xw~+YfQw7r~IiF7T?`E zdXW}olsXRwQn5m^<^yCMdY97MQlzS)w(@#9t`v>>>}t@FL4UZ?SBqDIzBae&DL{j* z+EpXsPqx$yQ zOBfdxCziQVi>j2fp$aXJeQ#|jrF3`n_EPoPFp6LrA~j`o1;gAT@)VvWBHJ%)BQOie zy{&GX9E0>Rbk@4GQTCRcpP$H1pS~#EQ&$n~K)Cg4Q!&oAvA04B=_QZvhR!+_rD)BMfS$wCwiM!3z@|o{Fk#@XQb+5 zqMB9fus7;?2o$|c3Sci1mCTU5E0e*O!*mq_@1pb0`E4YO>s%?-Jay*Dm|_%>#IkWh zZ$R}?2k(#bYkpB0$A^OorV>MfUWJ`WgpE~XOtO0Tn>J|&Yo$6QWoECRitjiV`|{8bF+-{63^(-YRLa}(^TRT-Y1Z^kt!AmU zhUzs)-)Tz{TNnvaAiv7mPI^?iksZp9|7mTR-ruzV&qIO1`=!+Qc~7u!<%jN{)c*KZ zI{be6qx|@bl^^R(WsDr|B`fpcvLjl^Zq$Sc*_oVqb2mNTk&+r8ilJ?UYHUE*!0v&f z`3gTYyN^i`iy?NPEgpUA=8Bk3d!nE_$EN?*2Rpa0EpM#2j+%R^qw4-)&(1dGvXcI- zf;uE>o^{$QjWHnc>KZj_!Q3nF`~rHP9Bd-CYr{wieL`5mM#{Vv3;#VCCTaaaF=2P} zaQ8h5F^5c6M$@pkDooRdI}=!~;jo~U$TeD)HHorhb1XUPK&RYL@ru{dnvi3dBc-a6 zuZ3pA#qO#{jt2`#P$U@CrQ8-|rnPtXCic!5_FkVt?R+|xx?VOVU>0eNa8RoymnLe`oR{&R&l-JJ3dzTfcH241ZZ#=QiSIQKgzv#u`Pf_1g7kR^2*^(~OyGMhAn9q*&S`Dp<^dy)ek4 zg|*^M6{k?M;w9glG|Hn3N^zXRtd0U2KGO!Z9MVSArYL&M_?&quU63o+rd=O09X2Ra zG$Qn~i|(FY$fOCH*_sWqO(B~%EJHE&z%oO|^EmN#aK}JIi3%yK za7wPiq<87<V)?S8%aj>{iG&;s$y@-0zCvAQ=NZ;T!MGpnj0q7~`WoV7DP};YGpJ zm69S+5$+bB8S~Vk$^K^2+q3bCF;*~x2iIr*?emZQlRp1~e?tF5DD*!NeeM4d`s4Ax z?Eiv>dJV2y3s=4Qy+;bf|JMH^{9lTHAAWc@?VPo;NOT}2k}|I#{d0# z*S8!$>R*4c`q!88|NgJbe-8a^gbF@v1IEo*q?WT4i)HQAw(FhqwPWgb?&(%Ua;Zhz zMtr!djogZoxQS))TA8VldC2b8LFU6WOi$H`QO3lNx-Ox~#?sJ6>b6YhGamNNYIc}! zoZY*PklZKA(XvDvM5o`y@9KQjHR@=q@5Pk{9T+(|v#@!?@N^&_C8x@eCC19U#>xu0 z2Wd39QBT`$%Tzv4r(irxO`XNG@Ih_kSzWP>Jvv=Su5I|01)Nc58{rf%Vh5)%9Tgyh z=dG>G+k>2@+d8`_NVKkzk#s&l+w?~Abhu;(c@oV6s>hR zNZX}Hxs+B@Sy1YUp1IK)yF{tg9a1#AAcQnTw}+L&&FjmZM6aEXrM( z!mNe6QGJ~gCXf6Ec4c$D#I`e_r|e9$2+G5Zk~U8^lW!wdUCnn&T-rvUV-^yE%e~E` zt5!mUH;yTUEmYL3VU0KB1`eO;%Ix+&Kx21#byi<(uDBF6&8@s~3@d_dS(O;Wj?B(v z+EDddlm}`=*O>Dmmy#y2D-)~Up>KyhB536%T0XMU%O%{pgJt4veBfJbq?g5SWLg8?4azlnt7tF*vb!tWo;=9yOG&qDs|RZyP>jZd6~e;1k?0>VUurO_VLo$X6}?tHM3Cb1tVX(G!6cX z&OIdCh%)cc;&VdA=%wnnaS~E&CrU4A#;YyeHPxb~ZHbxb)q4jmE${Za*#YTNr^9ng z7F7w6j0(e#!`M3moMz}Z28!f!FgAlG^sZdf1;`X5F|Ud&wd}V+POa;T($>23nT(8= zkFj!0$LCVrta#bM&Ezu^mR>xSlJpr9ftp9U!BIkQZzc6kpD;?V8tJYV+bR!AsgzoF zbRChTRC}S35nm;2VCvhzd-iVA!^gM2w&#Aix7WYZ|4RF#{P@xT^Z&R1=U3&2`IiA4 z=3YuZbo>MKXhd6WM@4zB=Zfk9?4cHe7AtPHmGPvh;V{&OgmUVo-igm<+QmFh%e+v8 zpg$ltl(dcW0*X7EE`)87cA!ESRUU28qG$6e8d8c_oEpz4&n@>9N3~ZN(HrwxpxJ{c zXIp7r$T}{siX=KLR4=`bEo(f_6FD+%z}eBgvQb|*uO6S8P{ZVMW41bIEwo{dX(c15 zEN?i>c~fP@h&>0Lt}y{;lOB=dy*Z?FZ~c*hld)~dhdZ0XZJX>-Fc%9wQ0Z4!g#GAO zdyaPW48C}=yLr7%q_*Si=2}=?9@Q-&DSr!f>l#|id*X5lDeQVp?^Rd)JI&T-dpGOx zx1y1T;>E7yvI9(HvJAm_r-r)KbF-v-_)4#On58#Hsb&) zU(d;3QEOkBSdNiy!fF0Tjg4weX;gFm2|6##^Tx0jR#EM}E1GSI1y^D)31wLp<5{Zp zE2XLVezo~|VHi5?{L79L8+ae@aU|0=TWd5{-Sll>ZD%eDpi%bbQgwk5o-g~ABhEt` z|9=|4x&0sZAMJoSKsx~*zy}0i7a#t z4WI>dfF3Xa+;xnQGJ!+jFgOC30SjOSY=9kbfTQ3T-~_m9xgq5Nyx=%E0r&tv5CDQe z2;lOHKq?BvfH;rp&0a0|Rga7=oL?2p9tsfV+<=q-MYz+y)ll z4zL7Pz#7~IHoz9xfqTFn;I4Os)Cr)$eIWW@=zqe^9Dew3^gs1N|C0l}UvZD)2;2;? z|NQZ7|K~?=3wU||QvcsH#NYX~|LeqmAwF)F^W%RbJ{IEd{TiR|zYrfcZ~Do<5uXhH z-tT?=^Z)<7e(Fd2<1f?xST8AOJnsHsWrG}iPnd8r&Pn|D2o1U>efkw~DP*+$H-3*<@|&dZ3`3YlI<9_ig;Em#v` z@!TXr_o*xgSWvuSok>=?(YYwG`%Ea?=p*bAv`LSwE_!%vX5+w3=n#-e9w^Y!Z0Ibx z7ae4{@^rN2@Y+mK72A@`jjb;0X{Ms6X#0R}GH^cKrd9B|k#B@D(Fuc-N?6P{d<4NJxrqgNmy40%0 z>gkE)aZ1H2SL8Tf!{QgKUyR?Z{Dh*nv#!k8#`K0|^?r1oPX#_qeQ@y8Hs83Qt*Nj>Gh;d1hH`Z3}Oa{MGsZDKj^gQ&ylY)G$G7 zzp)Ob1k&<#mE{rEq=b%I=*DNF57z1x-ng1Dqp%)egCd(gzI3eRJios=OIG2!9gSt4 z3j0N#adFO2vW<&Qb?Yvr;!ijKUwc;q5B1jmN1K!qSwc|}k|oI!%5AZS5DGO3A^TFu zGDT%6M4}Y3C(9&RvlKB=$i5p(BI_XQF#hL|7je72bw6+a?(KI!Uvp|-p0vv=aP9+G)fMl^lF7rZ#MNb9RZ=q4g4k}xVg9-1g&rP>_K7D`7-;?A9oB)3F$H%KT=Av}er5O+lK z2#h?$BheiNquj$T6`Z{eEY=R~Ii(u;D^&Qiw7~gaW$&Ps1);JNf7>B=3L$Gy7kyAU z_)wy{xVd|+`sqm#kJoaR;p|3@MOZIj+y1P*yYG?RkrdBYgiRj%_&RRqr#|tP4Kj9h z=&dA-qVKm>9N-)^mfHKsa6I3!eZd=yR^TTOR`V3-I%r1B* z9%?|(f|O^0%{si5`Q;r%=&g5QT0@Wurq=~&=i;S7zR;`hTv~X$QU}B`n~Co>pYIWn z40^#ul;nYp@oS<(;3g)FuAmM0ichyIw4g^$N4|ykL}88=(^mI$`5ge{(24}%wdwQS z{tF;d1N2g*4L)b6VF@mRUlvESgVdM5k$Q0({sAbV1;^sN#lXEzeUSfAkmm(Z8ZB_U z6nfIoUeK<)0V&*pFQz{SsLer57slTc1WBEy)Blz~f6Jdq$tkI6**ULr^DwXT3rfq% zD=Mq1Yij=^SkKATwFuJXM2KbN%gGUg!1r-eG4F<`x)Spp$7 zH(`kH&1j2+-zyrIDa6Zon#qR5Zk%;e$jEJ`WrG6KiOO} zlwFPKjN%`%!`yZbUo%lZ@~&lX7RBkh^W-1X8iH!LBJgMeU#Ti_KgGbVAc~WPn#|s; zUK?Kx*iRwuC96Jk7$MlGhRXPdvq^`H_*drbaZ@}m%yhdy@@iYf6rzk{A}f*gbv|qU z2Tn6ozi@oIS1DG(aTw_pC|GBUj%W*U+ae=zJm}HKyh%ByY{JHJ=5o%yA!I$XXlHB~ zegKs*S=+}J;;&KgL9u?SW@dJnwcmU2o%8Sidi<^U!v8Su-=KejH}S6ne5?L#3(!A3 z0__E#y?;ag@Q%MTz_;el0rHOk{#xL}_c!DZy#}}dd~5y!Ab*CHFn4&1>xcE9)A_=@ z;WNYa>wk~V)BiDoeeuefeex{P7yIN5Aj01A<;zwqU%7GxP+Ah%gMUY?AYVzbjpyL1 zjS8B?+s!EVT=5G2ZGR*Ezm?zdUCk!h@~a|q(CefLbY;dYL2}7~C*wGMC9JF~?s~rn z466dt^P0$)L7&+5u%pWvM?pZ779OgMXOkn(JMniFLSvm4xFIqT_f;7H*X&E_C775VzBf=)tTE&+0OQ@(A$+yXVR&#Ji|a zR1+zxS<+$SD8~>k!gC67Sz!tRoa**;p@i|(wsgpX%x2MM#nD}aYqE@>3x|RteEFR% za;6yES~6p*^`IEsj#;1-z#4CjC@u`J6KnDc8V%p;f%;e|n(f9mo@>&MvL%~N4TS5Z z<=j30vA^~Q^TDrRzeDref8IaKf8JHlbz7T)#@C_VgI+u#MyYUmq^MYB5}%LV(7S^0wktS7%h|2>1?`t3j9pW#1XQUqKL(gI55henZ;qe!q8 zklQm6t|SGGG^4T;&BWPL+v+_ehxcSPZz>h-pf#96IH*prK^h52gPt5i;$k(Fw z@#S+lCm}*X6dHJ{+FT<3Wctofp8PT+RNw13))w(ATA{Udr_{FBn%v4OxZKnq=oBg4 zeXXZPHD~7q!L64CC%XJb0|aXA_|Ei=xMM_6Pb(^}M~R+KJjbWWAQ9a03@m#A+muau zwx=EZu;Fe;%}14JZgp9LcpE2mYszwua-!w>yI;M?w|vMrj3{o^z~-(Fan7lfbRSsj z0TfafqV-#OqwA&JpJ- zRO;k~v-7rWZPu=F3KSRm6uXD0>v$r4-qY2JoOsVOddvKV(?@|;>&*TqsO(gfn*|@n znM3u$feS_C4|Wm}65rY#bMDUE9DhSNsr~{6&w1(uvh_%I7OtklQi)gGz^C3` zr%Rjgo?6G{b_!apq>x{-Qn|Ksi~Z_Cghgm~^_eyt{nm$!u@+MZ^27Pf0isr{Ju3+G z>Qs%B*Rcd^(3kAoS`X}+NaMS^nM^bpACYE?&7FQBaMia2^X5`oD|R65!njql^XK>K z&;Hl@x8+~#-+s&Qzij+AH2&mu-_}E^z9)54eESs1I7*-0to9Yrj^EGg8L@v?djT8z zwT1jh{zMitN&|f%ZXn-dG@c>T&5&)h7 zBmyJ>Bm<-XKwfF!^Ep5|Kn6f2Ko-CYfR_N-0674!0CEBH0G5G?p%;AS0~7$f0eA~g z2v7u24Db%11fUe444@pK0-zG03ZNRG2A~$84gi*=0em(BU;&x{ngLn>S^?ezv;lko zXb0#3_z2Jm&;`&9&;tPZ^np(tKtI61=ifeo&mn+efDwREfH8n^06f41z$5?xUdTIC%QWGM?G*1V@$s^US;tZqs#9an`dcHt3rROf9#U%Q%Wr|jxh1nBI_j{ zf;h zvp`Ih8FwF*En1Y%o~${DQlEk6ogrTajgpf>DR;<5^~M+Y5HIMcSW1IMR@bs2gmb9*SWzH6Asg+b`A1k$G$=_GWdOfZVg4n-At+unkg=NzB`+B4$ zJ?KlLD10iZT{qHVRv?gJr_d5K$}A#l-qRd(Lntulj6+*eRK$+5kSRo!n3w1$I=0B` zn3gC0#~!t$-}{t)E2=*_fF{Relo{i+*Im36j|t?h%-nj|5Z_ulymr?fY!BNxAm zJP3hNb!z!)Ub`3MHsixu^RvAGJZoQQy&w%(etG|5#zNp2IGZ=0KAYDBXYD!&S#Uyc z3@~47H@|l(0#5MEe%8a^Ty*ho;k4A7fgGpTktO18e64K1@crW(IdtvWgSZyq{koFZ z?4*Ww-KF~=c#ccwEaB+Ab;;&!B&{n*&)#DR#udpNS58irdB|uPcmz+ve#A~okofkf zsjUsw@>qwOA<2eJoAdafd-ggtT*@O1i3g%_b$FSh{FS>W{XXDN`qLio&DkK)*m`GE zu2Mf&c+=Vpihj%cf<|$*ObM2XHdn@&^tYllmIq|K?pSF94mZ?pmquxB_qQvS=Mm~H zG)Jd+7Es#!aWP656(mh|_|(OHal8dxQf;=!BV%_6ugtSi{>X?(WL&EkD2!LVp|-b7 zEI~X%T{}R4HzY~91T!AGlX#1nhe46N$zbEH3ykd)GzKa-RL;i7 z*W6=Ut7i2d?|%{bd(ChC$KQJXK?FJg+)pn5{0U{)-_O6N1^5L7_X!<7A|@^&DfK@- zzizU$Osd*zdtcIW3!U(-5FUH8C=rTiBV|&mwp#NS@nfcI87`BaN9O2g>RZ{eI(;He z@(|;EZ=fiZyuLyA$F{NcrZ%V zFln6FIh2IP{{!c_Lva!NLmhO4O<(bdkoLc82@!wdr;_~CGyA~i#?C>z+P8t~(LCAr z4!onJ>R5H~1#PiXwnCTEkX0ozXbQos^lBLCH@2mCm{iIxA=4?Cc{`POlD!2&ImVrx3fxi~ZUN5~{}W*8Zh@ zWfS!JMwE=qRrywXcCzdVwexKe&eV0|K?A9F5d2Y>pGuePvz5d`)GQvI7ai~ zSY7ZrW})CBv&-V_x!6~+zFSX7*{}P^YE?^JDe1zTK)RY}pYE+G#EVBES*Y=F>b?R8 zi6Q@_WF8#?bG5t;Uw!;}1GD$tE-}6s(w73>c2@$mG_)B6F|qQaCl#e0)zj*fBjtRV zZysV!Ue6Oy=joMrg^Z1nO(ae#k1fReWeHN7fgNp*8a;8zQZ39c9`pElx?3rYf5p*< z`~)+Tm-VF~BTZt9j=&FnO=8r`Sxk+r@O0OWx2zQNEwO#$SKi4F!)DNeUJ# z|C)+gK22J7qtTaI4;XCTn>o6nltOI>9CMZH?j~O3i)xO4-cKFJq~G&uc(^htes3(L zTgo}3U?o%Kmn-j*dp{hyFr2X}+}6a*CNjJ$o1dgtI=#)pJGGig zj69X14{QFWByYDQ*AcbxP6w2~?xyON^T)1CcoIQpwrsT;hTs<8%VQgbI#KRSNb3+ecfp6Q8Q8??Sd%`3sp!0xRG%MQCo!Oo3DGaQg?M3lXxZDhuSS?} z=f|DT+FocKNh?Dxv`P7ONNq-aU|^a9ao&fM1SYc6)|V92^lcqZWo@iVUyG{~OHR65 z+ez)qVoRdl6U{5Ln|>ns@K$o1YIg_0$?RNX`^^*4Yp?Du{LwZt&)=*0y zF>}@FC zNb7MT&9Y6AVK}XUpw2iGHCPG6v4IxN&>~`1e)a!F_V54S&hPksg8p$3=pQ3K>tEp} z_(z}l(%O&m`X2gUIsf15|4&>0Cq+c;cNM2g^pCvAq)El|6(v)SxK1IsD#;UbrVy?7 z;uwch`g5_@CunrTPv-9k?JWAp0qh-%nUR4a_z#(uIEUb7Ho`>Ukv`yC5d^4sJk;!b zKeES0BZEw6^MiW7_@Myj9>%6OT`tY3DJi9P4Fn}DCZ4&jD#D<2FMjmGt`l6{VQ!s` zdO5j!r3BgJ^jl?&q`A8yZ!r#txQ4Njjq6E9zLuAGZG9$VEt zwh06Lukb(UI7GQk^}g!6vL5qK`;obgq$LwJ!TDhZmE@g5cF*PgxJ3nUcZ?r54hJX?EGkF$e4{s*3D(_@z9ciQ`u3R$p=bpo`2Aexg5SI7 z1(`{&RNmGf7Cn6Y;|sC~V5F94BBeKlxL#C|u>*ZCJ&Eu!Y^z85aa+ON2mC+(97>=U zR{7+csT1Ox-!9H z>4D%}?arV}nd+`;;eK!YqB0m=@SejRz|`$t7M76Mf5-kl-V%j*iv{zQ+Gs&$pffJG zLzmn2+A_CY!QBV36U3tm7X6qOjC1-r-A5AP8l3~LU2XTCJ90x?e%lUl68zn!kw<)} zmFmb-V+Yo!R-~)NtL59+BuH7SRZ_mR(owbB?kL0a;`GovLP6F>OB1Ic#tFt&(GB4_ z9koXX@=blcTv@g~^deGb*1oP;uWHbQzB!I`%49z=djHhul@>I^LCx@n#|KessnYJ0 zt<~96xc6R?pWy9ktrbn4xAIzee9WF&#+AA~O>&>i>sK&PDw^QIX(6jD-7mJZU{uP6 z)(X=L<2gk-lFc*2{CGLcDA}&ECv`_B7fjMHS90faUpv4uy1$j)lhhh5ZzOuckuAb| zyA@Z>hTYpR>l~%MN$BrfW~D{j_j~p*Hgj+IIEA2Ytd%`3-zvXeUq!{2H`@_=G}Y0% z(cnZtXe~oP6QQ0kK>mtB0R*kkDgpNt&)P z&7oak%D$)DSkomp+{KxL(eIRKlZP~kZOp*NN;fjKUESRl&RQphBGoFp4OowNA-Cj; z4sd&Aklp;^{q4h>PRKkd7qK^MuG?K&XnZim>)j(o(*okCmn()pWF8mt_sB~N4QP6l z&Eu0qEGOGQ(*d05^@yGqeTE4~j=#K2FtgoBr_WW~OdNRKuh@_XgJ$x7LnveLLFs!+ z%e(C6wjmI8hn?qWlMreD_m0;mH~5^q1XXdJKAyG5j?s zQ57(5c)Q=neSO~33v!8qv^#iTlgFA>&L@#CTu$Lm&4QI; zcK(<9MfBhF2&R9O{mH-B{s4a{HH*&fD6Z-<=SWv=uCIUJV9Xw=!F+K3jXp3Ld0_9U z2^O4)XQ;~*BH4JDnM}0a$>L0gohvS=>2!2|`-zmS^eUzbw2u8?p_Lg>_hGq_MmJwI zncI;jaFi+@>jDEnL$0A)~K7J+Nd>lBBL~|GWSC9r_t;EINk_M;B=79aZJMn z{U4%mO@u=KVNWi;)tN`+$NK2QLqv=w+b*1+DBIb3lON?4EI};c%f~8cAuw^Ped1!r zr9@MTkozApu>qcO9U*R$Yy-tili>%5A~DF-61ql@P&x*c!XL`e%=P`oCK;5EMXzOL zjQC~=izwjGEq&Q1-xI2F;u(y01}C$`8q7?RC!@AEMk8ZCsU}=0G_#gWqipLPwxun) zCKU9_b<74_^7qVQykJ7o#Xwyu!rg+T*1zO_Gs)Pm_ILuv>aGOy%v${69PBzi^o?W` zsfcX*130)iPz`n(={Q}#VFRPXJs0Dq5CcW>-Wl@Q4jd(RMw+bEtiEN(lTnS; zNKBh_S6-!jAEzC-a!NYE*UY&3{D-3Aw?TNJX1Wip?S7L=lh|JSzUDaYR;(u<@;ZTI zR3YvoMXS;ch3Y7v6=_B7WZ)+Zq$N6--RU>t7@?B$p!Q6-8O~=T+U6|KVpp`>E$UqL zV{5z3`)j0&6sHhtFL8T~6N^!*c3>IXH+U3bj}Z#0Vyp@yPfMkS)MGF0 zq(m)8VP%j3fvls-{Z`E!11Ljlrc<8zW5BhH<*6!aJgU~4vomoVD`qRWxr*khQ?T^u zKHc~?N@UVWceE@960)&02X-5b>k#gQj&iH@AFVkQ6;<@gaBtaGRE8%LJ?kXipHWs&;yk-k=`y{XNtt-{c zeEsF$+4U>s7tz0y{MMf=(4RnGI`hw?=Aw|uO|Q=2&mxPm`R6YOfhQWHX^S}+#ny7# z?~Wz-ZUXquw|G+ljCf(^`EG7YS-nB7dw-DYVsAX#0mpBRzdI92b0$LXTnXpA3c-73 z0`p2Zn{qbSxs)s*6|`KOZ6PhtmL{N0Ef%yR8%VHkUMg*H3I@Fy!PBt$?G3F9p|$2L zxB2Pj$~pJ8VS3>|O+Q=Ox%9L5=VtlCeq=uFy$RYs&Myf}xqlvKXmzUtY$c)pl!Ynx zfK?7h=2RkYh#pcgQhC(LVM`@*q0EqE8l9E!Hi16IH@=`4U(Do+%skANhrzeqP@A$)LpB*Ss~SGK`N0X@lg z@K|bmz&U&k!5=b2!*K`~bJ5$_VFhC`EjK z8Rx7i=H@3jn!d&Ue_{Xp_l#T`m;K3{vn==>&ylCZCR41A(-#J^xX+p zHioaJUaH)X3iygx;$6+=vD7Nc0SLDK36%+$f#%CTuol~vOuLk%4a)=fS&RG5Z0bL& z1=C+pEpA^GK*0>D7VSOdr#-?#33*oDnUREG&w_L4*P?ly1`K!nEnJtXDdY~N*&i?S zQtwp}FlPO)xqt0O8(ja{mgES%)!KkHYDTvFt99xa;IZ>N`7G6rkRRNEE^f!aF4s~m z2YdOhCHXD2JA=I(j-kc5&!%3g%#e!nFQ^vx^0R;fmTqxg$EI5!?wg>+>~Zi-6UYh% z3uOOq>G9Hl`9JOcSc9z$@zSTYJjhpRxD?@W*og%4bm#(TYf3`R= z*22`-*O?{U4|X)#y?8EQm1p7kR>^m~c@?z{jdwjyr_EjkwLyXMKdO?~J?G6IGyl-VMT?pPJ8`hKH zAQ5NHD^`}7zmv{BgoNXYjwJcP{H?fELS}A*eH8jhzMbw=>1G=?v{9}nlq(=TbUak=eH#((=d2LeT;>Tqotg=4Aq#+ zKEXWsO;oK8r{&CKK8`Bgei$z87!q*bs<&5J+QW$7`xA)61DSuX{^{SY|5|E|`>p@Z zBU-30U%c8vnF9Kcn_X>x75(>KP~<-rlzX9$9qJFXfvh%PcL3{o@Ed5Bl4T(6p>LvH z+{RF5Kl}wPjD;}2Y*4y_TGzSvFcU9fsj@)nNNir(bJMyLqiHFBCSt|>{S1`C#J`$) zZtToyfZ;ic#8;>c5oZ_dnxMWN%FeUp|FTRl{ZjeBx=4M64r=-5N(JizrMJbo{2%L$ B@f837 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/alert.jpg b/hrmsWeb/hrms/includes/images/alert.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db9551f75d671de6b1ef8468ad5b821207a4c292 GIT binary patch literal 817 zcmex=Hq-)3-T;9z58XJh4H zXJ_Z+|EI`$@KzRlhK~^C}Lq|5@z(jVX zLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)H zEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}> zY~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fp zj10^WZ^37-w1yD ze~}Rt(GlZKWSNl_*^v_|7b~MGs-q@K?(K}O=#HLfd2}+SVmfAG%rumt3Uz3pZD2!# z#W3CS9!F(%=48ri$*QtCYqDe(6uYuJd$MIx^iJh;&g2M=jHW8psY$UF)__48me8Wc zVz7Y*i(y%ibE2!JO4i3(vhM1smgT~N;&jc_2=$Pnx74L6ArC*G$uxGL9}*~pHDHj2 zC9UvaG1x$ZB|GObIWgU`k?3PB*-Ve{6}hmW*qRnT;xq=pi*}4gEmqW=5-bKE~D-G^3J2n4j*AD zG}0pNn=Bp%UeLS_TnY2g#HuHLoBdyiO~&Eo==AE#&v%>s$FFa$zWzGjd-(G6>Gj3$ g4+r`7_U8KApN|iozdt(raryVtqgUT=5BB2OKZ_r6-T(jq literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/bullet.gif b/hrmsWeb/hrms/includes/images/bullet.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee828ade8c828236310842ccfca2ba6fbb5858fb GIT binary patch literal 834 zcmZ?wbh9u|?Nr$>6*x6VZtO1cZ5HbJ& literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_AssetManagement.jpg b/hrmsWeb/hrms/includes/images/butn_AssetManagement.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd5fce5090478cc5a271df16ae7a9427fc5c398a GIT binary patch literal 2279 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_BillingAndCollection.jpg b/hrmsWeb/hrms/includes/images/butn_BillingAndCollection.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8458e1d5db41f690d61b98a7bf88a701e1140df GIT binary patch literal 2473 zcmbW2c{tSj8o<9}Ft&~*S;|hCREU{SmMewobTqOiN_0YMlE`G7Igu=3q8u@y60(e) zv6WD!jcKe6X|fH2$$3B_mB0O{4!=pqD^a448sT zaF`Yll7+!#VbCj}4ggH#d$lka_@}^x;KCxJ2r+R9NkKrh3=o3B;X=Z25fNcwL3D(` z4}@h!lO_>_D1Q~yYN zke=}*=V@+U{uW5?Mo=dRKv6m(ES+vmQc{Ym!UfkpmbWPgGEi>n_iE=!@=SoJjCQvgs-_!97hw=cRd^ zRXPMDkpvpHw=pliFU8_kxISr^gXPoygbT)#e~SHQ!E6btj|{3S9IE zEuMuCpe4?%-`JpR*g$~Vw7$gVmu{3~Es69I^^5V@)l_s-wp_bnMzr~xfp7KWg%4F^ zo5`j8kfjIwZFH>uo^2;<>Kkq|Uy2v#p{GfII9p&Ilvzh!sYM#E1o*@g`(t@W)n_YW z)|WT@AP{}uYMe6VNN7P)kN=#iOgwxn%0Nctymo?6Cfj$kQ9}BNn$a7yF6ua^Uo9iq37&T z;yDK=LR?{NJ4@kZhx};90#=SoIx)8|XZa4>Ax+Ii$(rY*_GLUF3j%)wdCY4)JJ#A7 z0|)!}#((NeUsQbUz+HU~ffC|+dzfc<{txDjTEdVWU1miB`J_gcaJ&zFXBpxf zIO$~;83NYFnB1i`#dW;ZdbnVu`c0D%V6Zuk)`e4PuCfCI%t@p6J+)mUNoJYpL%Ko$ z_VyqlD!=-M7wM~~;?c?^rhDg?<;AdO6n5Vco!>1QwC=u!O<3#KYK#`VN9uKPFEp>Z zq!#3MyO_AHxbV@QdZG*VVcvI)a1St%znwU9MLXbOpq1e}x56X)?q03z*j@deW8iTF z?b4$*{7&1CWS~Q-tCDQ{^f{_h-6&PhR{1teBkHx64g_wcd}~hWny%@OxV2AVt}4ri z7ZerA`CU0q_sPw!q|rI*I+3p}*pFNqKQW-WSGtZaU$}VQ?a&dc?Bk4&>=6_ zg~wMC!*DbPIxj+G?j+x`lrWV80b?&kFZPdSjXD>zXp6llUb?c5TD^)GrFA6`dn)A*~-H#sx~k5;)-W*r{=v#ON>_>1jH`H zK%n9`>az4Ak!wSs@CV0_j7Q{zhK^iM8ygvG`!MnXN1hSf7tQ?K8WNwMczoF6>QF1K zc+#l0*5eWF+Vr7!k6nIoU;?o18IVZY6YLV{5$D}w;FH2~&ImmgBkI0|QdEv$on;#8 z-o;IMrG*ShOS*G^RT_&4nf{{a>FyhMIk#R>_?y&#Q%e~ErXzG9d8NqMgm^h3@ry1S`r7Xk${v^ZbeaJ0e%Zn>FfiCcLi*N2TOSVc8yv@3;PgL{0KUZ=&CV z-74Lx`?%YW%YrkbF;ICo#@h@OJSef)Yb1o+dzB7~T)`Wgd-v7IQ|zvipfNSvllX<) zq|%B|`w}NL92tpsE*W6Q{2b-peXb1o=8_}3SBsq4de*f0?Hj5Y3gbAJnl-Pkrwjpc zwepR70xgKxAVI*A;78D%xxAJ>uu{kF%di^K?zNiO836&crgMVtL$DA;0&lEuFI6F|7L2n2e@{@#UEL-x*)+|};*(7Y>xN2ccmfw?%wmuL0)6X2tyM0Gl@w@g{PddAhYCG*A#@_*L9l^x_ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_BillingAndCollection_act.jpg b/hrmsWeb/hrms/includes/images/butn_BillingAndCollection_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcb0632637a73d13f2a9b4f69f2119ea9c9eb27c GIT binary patch literal 6104 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 DXu=%T literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_BillingAndCollection_dis.jpg b/hrmsWeb/hrms/includes/images/butn_BillingAndCollection_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c616eb87a7202a402c9e6a421922d6867c698e37 GIT binary patch literal 5168 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 Z(+CQukEVRkt%%^XzhpGCv#x^!zXDq_0igf@ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_GeneralLedger_act.jpg b/hrmsWeb/hrms/includes/images/butn_GeneralLedger_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a71bc1df67c70bba023a84bd3def5cfe8fb098d4 GIT binary patch literal 5638 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 a8N9KnjzWoy#z+zOaTanU4>Dl@KmRL?SurvI literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_HumanResourceManagement.jpg b/hrmsWeb/hrms/includes/images/butn_HumanResourceManagement.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d39391ac70d3ff5445ac7f1b7c9271aa0a5cf2ca GIT binary patch literal 2426 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 Qg2+J9=8qZMX>j*{0GC%@!vFvP literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_HumanResourceManagement_dis.jpg b/hrmsWeb/hrms/includes/images/butn_HumanResourceManagement_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1df0496aa7a7f6896416367561af2f501ef2c202 GIT binary patch literal 6025 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 bf4=0~v*mJto$g^N^Aft8lQ(j7K=Af&J$%;H literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_InventoryAccounting_act.jpg b/hrmsWeb/hrms/includes/images/butn_InventoryAccounting_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1721bbd3b2fe20ca3036d122850cb1385a5ab57 GIT binary patch literal 5904 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_InventoryManagement.jpg b/hrmsWeb/hrms/includes/images/butn_InventoryManagement.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40c13112effd7debcc9e05cb0f3dd67ce2c73a07 GIT binary patch literal 2509 zcmbW$c{J2}9|!Q?m@#9G8Ea!VG?qzOCY0eu6xu9txHAxq9w%?sHD(Jm);m^FHVM*XMIS-_PrO&zINF8w12`tgNj7 z&`vNQ3;^&30SiC?3WY)W1z<3kprC+|h@_~9u&~H(goK!+0#Zp)0Vyx9tfqrjR>h#? z4W zoFAd0dl)KV=MGc7EU6cjS}1@rfAU(&zI#bc-{VTOppdkT>~5s`9<+w0mI3yFp^@=H zizAj+M~_+CI5^^+oLva6o?gFt`}q3#2Zvk@C544wi}@`!F8((8PFni!8JSu4?q@$J zDt=f}T2@~1wB}ju^Sb&M4K1y0?Qf`WY41MveClQN^$#$|Cs>nH)1SZ0%r396zpbvV zZ)|@5;Q|5RzgU0EesaNgTzn7+7y|p@0`ZY{4j2yMSJ8zc4%@-pFH5NEMF~inrxreW zEr`;$Uy|~;(k&#dW-zY4{DbyS*?$L%{=Z~@!~X4J0wQ40&f|gMfEhqvMw4|6&XjDD z6Z7*kVt9bC^r=O|siSQ{t90)AYPD%~T_Qd+9yjpCZ0U&?mwnSQvZXzJi@xbx;QTPG zZv5-zjmmc6qNdD(hrT7B-s$*6rg~c%Lnfc^VkIu%Bz2XYu-fLiX=&VN=gYL8)^RWd zv&PX3rN3t3vnnD?`a;U86Um}&YtG#RCj$KGn8M=I-LzWg1ye^&H3U_*ODc#fRZ^T) zGiY7zr%Sn(c+K@}_*0WBLk$ZnSsnpm*xihyz1ci2alI!rp1>VEr(m$0N)8u^ee&$Z zp_3$tkXWb7Es6Hi=S~wco5ww9+tZvf9uS*=Ue8&f3^vDS=QXZ%w_h(E#xU#F^gD!) zNy|}EGS(lY8KbYn$tzu~vtN=f^7JENo2K&1)<`Wa(<85JR@(IuMOU5?S2E=+M53u+ zTz32E8_q-0-ladSPYa8&%4%f}kEG)0Rc(y-2U5s>P&wkr?yLoPKd$wk&xurpj9FhW$40uHI*upkty!SFa(o^#$sa9Z^ z{rlMRTvWPSuYY&ZseIcf+0H)M$+g48W`x;u9x%R_2aui9d4M3Sp9f5_NCVuilr^jQ z{xxcoA8|zd1BEN?>&yVDF+Mle#Vt%*Bh?)Y_FRg;ei6`aXD1ucP^m7#9FyJ$F~=I> zhy=>&nYUl(7x+#f;_vePMn*Yl99GkdlULjh&x^njZCpb*4%;yAq@P9QY_uIvQcd z*h>i+ob%+Ldj2pZ^LaIrwrfTnEZg=rp2&BpRr@uKesquMVAr?)o6ESY6gOrIbHr9m zm$i(Tt5T`=tiJ`zVnYM3Enuj9=Cf5Z;VOnyXW&!DlZlv$f`TLn7KjjkGKfbK}#c0l@+C&I}oCovQ8R zl~*hL(Q~M&fG@?#)w1=CQ zx)r9N@{LC}A}4IIeH?r>(VjUtBXhBDy8F?D1g_ITaKh34-B+tKvLKhG8!#LX5PFH{ z?sc#_*HEx#%L9sy2h5hL1xP;H>sOpfoifDv!jcUzzKLzxjms>kaX^}Hmk-ws=T7TR zReobl8@U}tXOpQyGxhC*i(+A)gBEqLa&rk=FHAae?zP+`bbP@3FSAdvkQSajH&uB+b&847ipt$7kjWGpj`_+`O7T8S9P9q^3Kdy*teVlUF^mx&2@rf zL&z}Sv^heo4UGjq0;t%}22N&ng(U^IH}5muHrD4e4W&m1#0~Q%_Visg$@lU>Dcb5l zr&f)3E5!QFDj{U-d=VqGd7p!vYaK(gGI3Ki?@jXdyuNj=J z&)`^0BoOzBS_B7Xiu=P4s^A<0P})BJGD^PhY} zIhLL8KXy>71Kb0G)Z_0hZ;-Dt?hfe={Q~aTj4{NKq&?@->CU|o-d6);2t9iq4=AiX zWm7~%RM6b^sAluu4N|+%b3ERRWhs?p{mzw^gyIeS34WWQ<^TWy literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_InventoryManagement_act.jpg b/hrmsWeb/hrms/includes/images/butn_InventoryManagement_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f66d2b264fb5f15ab01928e2c3a9ed1948a32727 GIT binary patch literal 6079 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 ao8$4XR-0x;<*(orp~>E!BXMLg`#%6SY7J%p literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_InventoryManagement_dis.jpg b/hrmsWeb/hrms/includes/images/butn_InventoryManagement_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da418417a18d7dd857263a38f44682ace2dd854b GIT binary patch literal 5224 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 Za&O`nh8A<`J=;EI=zMl^$}Rv0{u5xiri}mq literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_OperationAndMaintainance_dis.jpg b/hrmsWeb/hrms/includes/images/butn_OperationAndMaintainance_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..976890f8dd236b39539f3e5bd1f8f0b3ae1991ec GIT binary patch literal 5824 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 naShk9LH&decnte7$-2U2Bfj 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 B;7kAj literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_PurchaseManagement_dis.jpg b/hrmsWeb/hrms/includes/images/butn_PurchaseManagement_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec58fb3ccea26c3252898f7241eaafc0065df458 GIT binary patch literal 5360 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_SystemAdministration.jpg b/hrmsWeb/hrms/includes/images/butn_SystemAdministration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8d2b94a68590b6e4b0cb2b53896e630aa7482b1 GIT binary patch literal 2503 zcmbW0c{J2*8^?cRh8c`%?E5lfDcKFO8)fY&k+PIzoscY%?P0Q&vVZa z8I4^Sl!9u`+F|tN9H(i$kNop6aej) z0!RS>m{j060Api=va!OTP$)Y)j04Wg1?S|13vu%t~K!FAQzXQnv|%N+W%b4w*UeLXae3~5E5WP zfWQb4lLSZr0EqSHYe693uL7}vA*^gr7&`~&{s7?+zybn;Ss-9mRtRK&I&xnJAP81& zDOC&`kF^UF8NjO+ot6hf8CNy)+4OyrR(B1IVdvl%5EK%Yk(E1qL>{f7sdY?S=lBT| zQ!{f5%d@uU&fD2LIJ&uecw(=3d0!6-z7Y}{79JZHf9rO_oxADxGah6<%*uZBEWe=e zkD}s|((0O80q}KQ3w)T$x0m|Ue@W)Rh6O&WZUuS0L<`-yd>l>Tjx3+)m z{Nw@w;9ppOll_AWvCqWBjXb}^=A~I$;KOy# zYCD~h^~0_PZ7nZ&Gs?%GAgOQHn*Cr*Anx(0Dk9|t469b%vHC{# zcEB3FP&M;vP_q=KJAzLYQ7~CZ>FLHhoi&<=_qEZaJIVxGr7l+(*85|c#r!cFsJp9l z?Qve=YlUIuoDN!{fsr;ttWV;qaJ@ntNo-J`9G15MFONtHpP{P^$<(D_a0U781<6jx z^yz#--4z)lW3{K5@{QlfKEC(L`$7`kEYj-kE?;OF$-T9quM{B?>AD~n+(?N_!w}Y3 zJkH3P8#%Q9uyx<6s39Au5u@qqg6U$Gvs;e%YU0*q={i^G1m8^Au4{QBD-))+6ZLi) zMcc9wCtur$P%r3Xpts!zeX$oxkX8ye&%1*{)DM`F&p~GOYtB30b|g8vjwL1=7zaHV z92%81a3QvR_BR45Fp}e;6s6!UrTEyoFfUNEH2$>%znCKL zvwC|=>pU?elSq6NoT0;4zB$^A_iD-Jboq3`Blb|4W%1!?c17!=mN>tIGL-O{T>Xua z&*8rvfs{+b?Xd=~C7;dR13t*d9B`gy*?Cm6U>NF0SGX$igOv$%)i8nmbm_n2rkxv@ zKnfF>8jPQ`Lg3z=K;t%?_f@P{>O2!z)cS$H6crUK)O$MMJUIqyfPC4y^1a*GLD$#S008?D8m5_<*d7OQ*%{HH(!*u9k zyjY;=^3ChD*!V&v_f00C>fOVCceT-M+<}KQCS~qg*|)JQr8qK9=o&_lJZxd5RCtPg zdej^kpCwel1P%})!U%H}E9hP4CD}NqcJxP^YVLCxq#fJ^_K9#p|oO%fM)mYHELk0kvwKG2Bvp2Y?`B4Pnf1|A!n^oqj8H|7CLqz zRO5RF0=_o3-=tMIKtoQv;ux2T%q0iIPRywyev zwkL);C9>m1v{x(7zCi`3<6d9F<%Vw+89y=2>7qQ+oimV*A85=DGM{eH0benlzNl85 z_@qL>Yc@B_eY#lkX`8~&jgDmkl5g-r`}-EbFfd%x8f5}x9BpAjebsF0Ol43*6tY40 z#kT!ey)(U2;@dqOnanWRZQ5RC=vx|~F3;{NGdyy)&Gu8AVgjhhFZ2*5AYQ>k%cm7> zTIx3)YS8@{g(|aq6#QYJ!Ua#ZAP(f?`}dw@2tK~C`qDbBCRQZ>095a~!WW+IK}vt` zGmI#XTDjcY;$J7ZgBewB;uzOxvvj}ER^ zG?$J_8N-fgv+AaV&WJfr^6qqO*IE^sCQq^vge*=g4uKyCqGn}`ggVyKf%%JOQ>Iqs zGBNp78lwTKu1WWqRGsYQ8S}w;>`K*t%K8oO*F9@$|S}T)KEq+#oN50S^=}N8(-`nqMc3PchIR9!M w4#_hC6$fY*B`n#5H`4XRI%{fJvRM|z+U!3lLV`)QLDpw&0`E6w^)WyF3rN$M6aWAK literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_SystemAdministration_act.jpg b/hrmsWeb/hrms/includes/images/butn_SystemAdministration_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4faec3eaf0bfcfea22ce5c4889fa9674d70a040 GIT binary patch literal 7119 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 AZvX%Q literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_SystemAdministration_dis.jpg b/hrmsWeb/hrms/includes/images/butn_SystemAdministration_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ff7cd9596054d5c2e622c080a7ea5256ff8f91d GIT binary patch literal 5126 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_dtl_next.jpg b/hrmsWeb/hrms/includes/images/butn_dtl_next.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40a022a5ba5fbe871502e4f92f90b1a893785781 GIT binary patch literal 3064 zcmcIl3s{Wl9)G{N*G!jDnF*UgiIsMBqu3pp?m46@vD&HmrWwXe&4t>PK@n?dOQf_? zA*@9Sxojv2Q-^9pYEh9mE?tzA<~#2~so4FgeyOrlbXWl{je6psZ6e1_h5 z6v>F~wUFa2kwx+)oVns?ky0#;=D16vB`BUlf@-CUvmEgu&RwDuD^-Hw5yWnKfLtt9 za=aw`Xa&qOzzg7l=(~N zPbQJcIX--eP$`q5oFG(*W5zrBfG>nX7%zb%MVEvOS#mS8-dh}?2La)5d>7-avrPS9 z(RJz@>J%*JOBF&?{&A-mxaxl@#CBNa|KQW@0gd9V5(`j#s&F^)SpdRpy#oCjTN#A} z&gIBfqH_6AAijfo-zZ9uL>#5h#!KjDkGlb2LA8Qv03v}3D1j72Kt(|u{MPk><8XPm zE4UTU#4G%b=;pv=`to?35UG+M9gPa!9Ry_PjF_|L^5fxB`+9J^Q7J0tE8$kp;VbZ? zhR+1i)nHi6LsxOa#8QE5m4Xv2Qmu%T^2HJWh^O%wsP7Oh0f6QK?YjXRAlRSXofp8^ zT_B4@fnY73i#38Iz@X7+1~i6&0fR|5q%$o{7z`5&wwalQnHihO(85QmWCPHK)*dK5K2-szW3sI60oj}02 z5Fr(i$P_Bgz>p5F_i!fy2*h_zQ-F{VB7sC8QzLoPOd@IAh-qZ^1$?vdvFjWt z=Bc@bb0%0@1YU}Cbds;H;ZbeUf;yTzqZG~~^NJEDdTb9Cc$VcWU0AgtEoj$?r1Cmd zYqyte`o0atJ1+nJ@YVj474?sLLWL_g?mTen%B{BE>E2<{tCBMcPFLQ3{F(^}1c;WT z!$hT!oplh#O&dXi2x7;Zksa2hn&SvA1=e&pT1Pg^*QfDON>UuH(7re4BsP9+%?LYN6e2U4;_MaC$C=Z%D$jK%%zo|GhJlEvgW=rJ-8UP1<`wjW zg)AO3K>Pl|%w4@&Mf&-sd`(wC+c;tsx<}MJgTFdt(m$8(DzC3-kKCHQ(Ym8DdCTU1 zxrN=@lU(04rTm(>q|<*eg2Z3sX8NJ>bWuJ2W+3R>eutms&8c- z+KT}fjpV=s?x84Yfi^e(JHORSU$UN-lwjacx4JsYIlMluw6IRQKfyomk}SBte4b)4 zwU$-y8GXHaXKAHcc>VTXZ{NWkWA_g3Xs@&z;O1L#tNLehkC#UKeyxscO&L4(vu*VI zTM7)RM&e)$U=4bP8aFBwl`G)i6(>rzB8IONM~Wq4WjseL70U2~9s(6I1pp?%9SDF7 zk`)R#AOMKqw-TyC_XWurnEg!z2e<%x@FiYQ-*LqmqCo)Cs!pR$AgH$tUSjTlC3Q&aZ;%n|TX zec%WZKynNMs^`f`B28AP|Tjdxvub0U_cXL7@`iKu{nAB9jEjkR;p}P|Wy{ zB+MOBbEy{kJKF3xGP1*3zP{6j=M6W#9dfb@=S{yHES|oI)g%As;G>rsC91fNMr?XhYZTLoao{?%2uEZnckIuqI}Ziy4LQb^nJy{ zA$xtqZy(d!FwFk}@+UMjJ@f7TM;NeMRH-`h$FFCrDyFs$1o~VIPI5o9cfkAEvFAde z(X1}b#_^gI*G*gOMnt^1nq%Y9cKn<3pU3rg<`s=_t7|zr-=5Zbpt&Ir&v)4y`3UVeE~R!?cYe zO)7e3?Ok{wZ<=7hb)jlX1Xq+1=9%H0Gf!l9e+{8oD9l{m@Pm_OZLjfBc2UfYzMt0| zvrJzph}c;ZZ^@nf9PM^&bT_MZU4(L6`wn$z>k=#iFM!R-aJK+CMt&#>LCbWORIvIFR<(kZ>!Rj2NiyzVQ zv(!JcF>q}#;#pixi+|aL7ByD$lDjKQ{gZ0!RDbkwrd?i*t!jR#R&dHQD|y|vFhR4k zYwV;Z?d@k>nykdf)&5+$A5 zex1u7^UaKi*&SUOePPM{CVgQ~(|?WZPx-ws4g-qz4h--sowTL)=he@4_o}gme*=tf BM$iBN literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_dtl_next_act.jpg b/hrmsWeb/hrms/includes/images/butn_dtl_next_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7d9abdd0b2c0c2be3ad4ad6fa186cef2281a7a3 GIT binary patch literal 3115 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_dtl_prev.jpg b/hrmsWeb/hrms/includes/images/butn_dtl_prev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc717f5f1f6c090aea1905f9160cb9acaf7d1fb5 GIT binary patch literal 3043 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_dtl_prev_act.jpg b/hrmsWeb/hrms/includes/images/butn_dtl_prev_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d22d145fdd82db37bcb86dc044e2bf104b4e217 GIT binary patch literal 3100 zcmcIl2~<;O7XDv$AV4A@NF4}@Qfu7^i%V@pcB+7EN>wl+2}EN8SwLzbMX>1L42MN2 zilQQ}=TK!4MQ2bV#R?YL+&v@2f>312R~ z?_yl_mIWUy`bwh{mBJ)!k(AGqOs*6USN(Sd{~TudKlt=}Kq2|c1zaB1D%?%13xHc? zP+(YNJJaxxH4JegPa>HJ#CFi&vn7QJ1u=%%JE76gJ>~|$8mb*sQ@{aoAOj*04dQ_W z@IWH`VuKiH)7OLJRC%{Mm=()_W%?7*_d=)pdwMd$MKX45ERXx{Kp+!m#nO5WI~gvy zzZb)oC*n!iGPvcd*;4GtVI3j*98{}7UJ_%yK*SX%Nf}{r^6eZETOb4ge+i3$`VP@1 z04QG2UIc6af=<0de(>A?v>%vxaK#)R;C_eAMIV6-K&4P9Mii=%5tVLYY(lp(r&7(W zY%DCSEG%s3RJ}~R3_m^|5mOTrQ!`VVnHkN}%*@OZ8_X;XQ|SLq0`wZ7Q{a-?;gMMY zM@R5<1bqS*0EgZ{SP&%<(F+8O2_8}cfk+}#jEqg-HJ|E401p4oNdpK0!Q%)xBAG-X z;;BsNq~i$=)0PlD*0C*SC8Rl%EOU-sSUua(D&#tc=_1+H;z^#98#>rI6eD$=e!M(= zu2)_d*SoGn=4Ra*-o<-Wk)dpptA>4?@=xrp+<&9}*+^+seaElr2!7)C2Tor6>2CLH zci;7~Ntp$wsvGY0yrBae4x%OKF_B3`S3LxWCDRBHLBcExqH|h~C5GU7NXsD8k<%&J zmFpR56(e;SnnS_>kmtJAwL%aj)?Dv!HyN+%J%m3-;Pe3k`Vdg@`kHjW0wevd^NWAc zyitqIl0VVEaQI)YO|k-Q zH2+B%Zos6nT{qCJXbt60Q#OvFAnA6~&}Lttjap*gdVA^6EmoIHa+z?;-Y=XF%QALk z>(cFiTUoD&)_5#XZ>u?Q)lYh@-R$MP$JGkK2nx=pwvKszSzpmU<~8Ov+8?!6U8PRT z62zN+qE#v%)m69s6so9ah1LuXc)wj!VM9|KwB`&*6;HJhj|&?t2Aej$L=Gl2GBdUN zUim^SM=Qw7J};_#n{M2hQBFaDG^?dvhez-9rBvSad#fTAak7vsS9Dz_EOJ)c}d@**= z!=XZ^0Kgo004@+i(&7OI2nKQRTLx9C|AHh9EdC^d0o=esuoz2dU`Y}+AlTcNu};p$ zNgiI!z zQcZ1WG@JjKBjBa_z!3z<5yvt3lPLlahc>K zZTcpv_;0BSbNj01r(==PyB99BRVOWTLjiiHK=I4k|7KzL#cmX)U#Y0_I&-|)rMPny6C#u^qc2)#DOa_{hZ!z z8%)&kQLu4ovEYhD^{aqLrcdM$3RVP--B+B*E@SoDF{|X8k9zDQXJ%?kI+iJvPTHQa z>^_HDH-5EOYyVfL_Za!*(*tOyI7}%D@J7@P>L{m@bfroK$@8r1PIn_4u2o-G_SiF3 zqbfXGm%wUzla%GuezLu*cx?n(+iiU@?Sb#uKu2V4=kQkfo$))3<1>SHcG{WQRl-hN z`il!~qkru`b5!fwY!UgWw_@djo~uVza4Hg97THH2Zd@@vz6j0GbwZZkM>>?6damyX?&?T)l#`?JZC(=?Ns%Z z;n;4gBbTXMn+0~7yR9ABX}H)#`#yiWt@4WIWqF6PvPVZV$r}EPZ}GjST3EwnD9Ef; gwT-V(N00v47aaOgs^9TP)x16e}?H#bn~hlr1A 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_first_act.jpg b/hrmsWeb/hrms/includes/images/butn_first_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a501671f47e379c3bcc9aad5593d638b5d4bc220 GIT binary patch literal 2876 zcmeHIdsIw$9RJ;U^_r#`y*#&@BF9MyB~~*Mjd7wxp4r@H?o6X;Zf5Qv$q;~INTu*2Wq?*tIC_*|GAOL1r zo^%w)zIW&xRH`9jF%24~R>hHOtqKj+sx&yA!-4u86W6EL=eS@EsU{7Io)PROy9k|H zOQN9~Or?i;Hgo}65C#v&RuDoYCh6!NOpL|F_`HNpQ?Nu#i|cW;XAxiv(=EbcX7%1R zgwPN=bTXzzjjK5tNxF|eh#br4?boOta(y{T7lD31wyEBWmw}a3M^~iv06;60f2pnj)B^Z2-@rv(4Gr=1BB{v zi{QDL4EO9c5CkiTSR5!;(YaJ5SPS^p*48%Gd>b3S$j;VI}tbaZxf>@DIm z()F->{C!01?dcK_^0+tA2ix8?BE&!V< zLL?9+7hwbfriBejfy3olS=-p!!HeG0i2xS6+bIMH2Vt`~EUp#Ln#<;ogiaBg-R_5LpVPpug|aobGAq=Exv zfa~3;I{e+~wS{Gd$4#MLKOg+@m+eLOo-`lIy?X!Y`&r5*>vkMIbFI9-Wwdm*YU%on z?6buWp0$bqiv`hg7)(|?u0I38-LDr1B3L}okvn4bRwo+4mB>49Mta6R(xs+{%y5?L zN4*`yqXAeA_Aj^#K^$;ZOo|F1@w!hC{vCnWX9(19fX`-nihu+(I7i>iUY+VSv}I=U zsJ-FWRUPVA0nMfCmSufh#$)3^m^ONrgDmgpn1`+lE}naxT-EUUW8;nLb_$qYF7sV--0WkPoNqSyMZRil8zAvL_*9-%7Er-% z-Q75Kv)q()#;-(@@nKU^=9aW^EAOesZ9QM|vE0qrnLOX2$Ro?seWQ3+_^O-6svY4I zC6`mUp6T=KpHa7~%_X<3<`p`hx+NWa)Zo%**tX`JlLwmII#c3rp1Lr*T)g9P%cg$U zs#6vX`eXCcxwDUypNN)ebj5pw;@e(sF;$DgD?7%n$Z^f-P~_(fDK5zK4mz}IcV=C6 zp|&w%GzG*yro$wEQ&pz;K>6Z5KPheWN3SKM-b$);sm{%t|H7R7Qto}aGxde(!FAu3 zV;4<^_M*T`Cz3Z%z^|~Oy{7g=+vfYmQ3c{xjUnqUbu5do?~HFYy>!bzm@b=>AfX;w zSj@feEL^9Dzcf@%BqU;_I##VwlS!yrt0d?v5Cs)-2mlTs7$^V%2@MA*hyZc$orJ1q z-XMVk$1g;nAOQG);dDVuZytY2#3U&?-GI?8p&eK;90U7(V~=m_L9@rKufraCX%~A) zvp@JIP~dyBLWA$A2$%1_UsQ6n^q6^?_xbhJQETEil*R9AzY(4EV&|N5OP6ahmWOj+ z->;oiD{U2L)DI0Z9#N1V^S5nJGlo?zbf}5H6cCiwQD0H)-5FEoSFf88__lp|=DW~m zzD;vdDA3jrEfJ-y*s^Yj85gt1P(U{~NJs&s*)v@hH@fy~QV7mah>50<3)z8Z6D#xX z#T%RIUYUvUzuvfB_%cW};9U8_jIo=P72d6TPbO5(&&|)u&Obb&MDpAxt7FABV=n%* z{X~uX)dqf*v@OkzsA=gimafccJ1lCAS>E5jF+Qrv=x>gB@6fbS=DB@c8TIf_ZZzP; literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_first_dis.jpg b/hrmsWeb/hrms/includes/images/butn_first_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e56bf57c2052542c1a84b71767c87113497ec5e GIT binary patch literal 2493 zcmeHIdrVVT82@f>TUuI5FKq|I#9RR(Jmz=^Zj;27@}6@DRLC}`xAeB$t=tRkEeM-a zz=_F{B|LPG?2m!EMNQ1yKoeZ1IETxE3hD&i(1A`Jkp&fo3j`o9|BS8VL1EdYbdF1~F)n&3=PVaF-btHzr;Eita>R2byC*|t?948a z6TSA?7UT_0ft%w+I@`rKJ;+au17IQ~Jn}%DMX0QG;~bKWUnS{c^u~OqlHpkoOV17h zfymuYGHF*gLoI?!aMQVr%OMIpOBb;s#*8!O!qW~1vUj0TDLD~SlJ*Zjx-Usa8UkKM zS@bvsh>=FEUOiYoERn#MEsuhAw4lQPJ}<=^U14 z-HeD1J%jP!ONaMFNHMggWo!*y!tr*Y#zPmEdn;@_!?^%RBep?2jR?s!c2uj|5C(*A zRu`drlZ(#mH_(~wf{g|HdhF}_5jKEUrBbO?TD4kBX#zErDOjrwHia1sCW9f2(n>Tn z`9B^Wi6D(8NEf8n>GVdOPG`h}&ggfc{!IYiL7-Hqq>&^M0WyjpDZ)353PAb}6H5?E z1tAdvjEO{#f?S~tP^kkosL^LD36PP~N<9#Af|SW+iU6fbL26Twk|O2vLXs5b<%}Vs zsy(Ev)E%bzSl)e7t zhHp-KFWktEY1{Tr=jOwwE>3Rm`u2xkZmw`tZ`|_f-rm!fZY|0wan>}w|JlAHgO`7& zKqf3#~ z|GKd)j^Jhcca*+Xp{q(BUAc2l`p3@&4QR#3P`6b2ryQcO;wR~BJIV9a%aNv_s z+vHD8RCn*`+?x8=cin7^=&PQ5H$LXA%ry;h=Z@bQUH!daJrZ_hI4`R0>Px=i;acUb4ioXnAkV*G(S`u6=vN2U*_O*y}38j*cUSxc<`GvATV)c!PU) z@8Wl#-lD(N0yUR~_|=0BVQ9Q>Tk+Mj=9SDJ7n@7Z-3uQ+I(cBk)YfWCYDn$;?%3Y# zQ7!q^F}^cW&&&&7!MZ)@r$Cnp6_t$0**F&`*3umB5b!0kB1T;Z5DaG2_yT$oSfHT* z%F$Xx?2%UJ2?WCHoqV%hhFYwa7rYH0I5q+zQ_Idxc?sNzw>un z`g(pH^u}wBwjYar^@Xk#F|AGJ{YIwl;r0t(GuGbRUzJqHTQ&`sy%DweV3+kyPqSlj pUDoE-?uc}=NpRk)N@N%9yg&?ex8%hRo&UeuuQl#$n?K>1zW`*W{zd=* literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_last.jpg b/hrmsWeb/hrms/includes/images/butn_last.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5a16271703f13de5e6ce7eb43749644eb18a12c GIT binary patch literal 2789 zcmeHIeM}Q)7=N!VZK0)5T0Vvdry!UGL_uV8GYk<51{C>LXY|@0rQx`P>lH@SIlzr& zZW2IPl%S%bbD5j-Gr<^!qTSSm2?*1PC@Q)t0~Gwg$?d%>=vZ9bKkhG|0}ug%1R{X|uzix0#4L)TOj%Se8aiVpcx!%Kg0Rma2{%!MnK4o% zfa1)>0tCP;+mnkDIeNropc;bGVgwp*G-NSG(tt*i1_I}DL{Po?xHnv$$3+s1kumEh zMhNfA5@{pJpfLnyFu^=~t^g+pk4NO7h@x@}X|4w!V{`Go0B7|=EEgkj6OK+S0vuqv zO$7X|hTWqmf}+t_jL2jt5=WD9hQrKtj0M4&nJ}J!tC&wh#w>N4w>-0iKo0_z!F4<) zjJE_mxA2`Fjde<)G18QY(|_-j3#a}<5#EMXUV)E41F2YJHtKP1tH2p5oQ&W-n*!U6 zy&Y4N;!!Fer|Gdk?gVWmP29x9cqO68%H^D_3Z{rKmK zILc&>3P)#!!db0QDAe4dP}@?J|D^!?15irgNPUIKR3K0yLM6g>!2t-_W+Vclv_p7- zfH@IDDiGO;B~p6_8T`B_IuRfcjys(JB0_`$k-$zOmf8vBq0p%mil(^CvWr}Tsix)? zg^1PVb>GkT^>a;X(uU5ai_b?%rd1>lTpQGx!rXQoDDhuVnWB$Av6GqO-kREj-#fVe zWSjZ={g{AFyFNZt)!cq#sQ&P&3pa<;GV?#F-hJeBNAH7hO}e3=^vgX*EuFU>DuF-% z(TaFX60uzv4`IqI7ZF5|H&ta9QdF+y5Huy79|-l+UZaaEqLN*8rrCqj#2f&Lf7ppu z2x6zZK00*{gZDgx@b3r$o%@~XFcTjGv2_SCRoo7>@9U)A2HdTYWNvTswO z$C?1zt9zbzM&BQ3(?ajHC6(iS++C%OwZ=3x2x#~2_@{}84JNEaRX6W+6+q*{H>aT1}(gb&{WkJWl z>aE?6sou3^1@8B^-m-r1;o#j_mJOu|+r0BvF1J=!7|)(PWR2-OHoC#Hq3r9%AD zqK%iPc&6dB3I0i;Iw~g@V~koOVPpzXBbiBY*E=|+;5!4= z#J@pG2CA1tpkNM|0cLUqZN0_vg^AG`bcq?`T0%RJ@caS$y=I2j%mA68s;X+ZQs#L+ zwdumvrmKf6{lphPk6!w5q@_KW>iD*#ttn`G*9uF9qVQlV+5c!a3vQj-XNYaKu3I{{ zlCC+1tHnO{mrKK2G}V4*yz)HiYZhBGPo5oE*JqjJh2on3ffp>07nZ(^7wDJq!tqza K3tL{u3x5G2ioS;c literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_last_act.jpg b/hrmsWeb/hrms/includes/images/butn_last_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c7af603123e7bf658593ed6cd6866c928e06313 GIT binary patch literal 2862 zcmeHIeNq{}9%aO%9(x?7&rzicZ+fQ@G-WU|dWr-j zaxNAyKw0jYixT+;Cq08F8z_z1fG^bR@)$j-!xKoIf#7mPNJII!hekb!OE55c#;hF~ zA-vPjx^U)&v0SE?+ z9r1?Ht(lKb>=wupw3LPb?aN#)dl5E(R3edhNu*w0QiYGVk0Q`dD)kEt_V*9;_YYP` zc^R7AKYl-AzCJ#_GGDn&CJ&IwWC7eD3vj0>{z(D$3s6YVmQE02VIWXoLIuX!(FO?F zuP`M->4EWr0COTllpyjDdrG{#eb6%>>BK-F9Cpe96JbJuNZ{cqmUsxIQOKzfipGzM z^hj8&_77W8JWU)>y6eL^6T$=2nlw>QnAV+6^qg3h-qYEeLr0I^eQ^Dxxmz=|^A1-r zF+r`FSBM`!+VJH!=I`z#Mf~TjS3chM)tRe5z5Pk^*=x?M+?B7E?>Tg&t?TF5crqi^pEHOPW zhkl}WqL>5VIVt*ZD*{m!q@9-;!w^^QL-=b15f31+7eFfHdn!N)4#%PD7tG~b+BWqC zRur~P9(@K&7i)IhiK7+D2)VpZ*?T^Rg)`QU zscrG4Ww%r7qCXj2ziFIv!NSlVHk|Bl+-Nj!OPc-isHeO7Sco08B-y$fmwerHyzr@p z)1|M!quzP(IlnGtU+CVebqz~*7EhOUmXC{f-XFbnU%jV}D6&Nu@o! zEG6q3_SB6T*XLAK5B~3V)wWljuL&9O5(Q=ES_eZavqR2CH5_Cdl@3eF>aox7-`$mZ zERWiE%lRmIvh_toeOltuHB@x^8}*Am&mlV=yy?_b{dmp965qj%44ChX45;(c3s#*W=F7yM*} zt+eIPfwgtIj`#zN)fQ=;Uu!*4RJbSB(pB;cD6SxRdoO zLPKXX-(GXpwRE)XFNmY-kHpbw+|ELF&n?-(cXoaITjr?YnIpBKvvl)6Vvh4e%wcn_ z>r;i7Z9BxmpRos7eLSRpX3YCDt8)jn-?ztpKKO{Ep!oHIW0h~5x}0wB&am6waw-p7 zVqGO2p9hB1gXbBGxvJw&E|qonCREhA^7mi7x&Hxo9Cf{y b^Khdp{g+wFyN3tXw%kZ7Q%y|W&bI#w4@%zD literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_last_dis.jpg b/hrmsWeb/hrms/includes/images/butn_last_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9ce442f03bc8af277f8c170e901687c3fd82b0c GIT binary patch literal 2475 zcmeHIYfw~W7=F)Q&MxeQU3L+~89XbZGo&aBOHNa5xN=!j#03Pw!n3<)mm`OBaQCbZ znwg@}I86;GDo%}=rau%LFTmub&=8uMG*MDvD5bPaNs-LRX}0g21(hyifBNS;^M2>s z_xgO7=iA`L;APOw&a`I&Cc&^N*c5)jN>_f8COZ9Bu$4IGwpMw{oxME&oKd> z=2$?Y6Jh}alok34Q8G;b}hL z9vvYaROR|;mM1b9((6ZgVL|~xFcFU|Tx;Vht9(KaF(%{^eUo*@*<>ZjQhtgUT?E2W zdPpSVs_sVHIEM2P*(BrPIhG>wC|rpm2gAUo4)-(5_JSN@NVJUT_19LmH1%15OA44=j`d10?v-ycFC( zqnX$bjiY7cbOftVL8$Z?5!a&E+if2yFPS7^CNqRcOoYvxqE;rF@5y6NNPE=9c@3{IWoWlO<^eK&lpEkd7ciHkBLg)NP0XEI5io z=+2A(Rf%`QfH`oK~K&@0N!<6ckCU z91{fr7DS4k1eqLHD8s^4h~}f67)YceP90z}Oe&E{Tz<=#_YYQ2nzb?CopEv}pBCL&&_~@l zwC>Y$f$s)0CvV!d{&0QU`R{-Epy^cC)w>Hk%U<8SySe@AYrj67Rp?z_vt>_9$Aus6 z=|LhvXk{WM1unOU5KPIDGK6611cThXrq(DRIN>;ZJ7uEtif?V5EicODPaR0W1ptak zmXn2P^bjH)uZExMRCH?qU#@t!n-HDdxUofj+gFn4U{yx&NM_Y ztG70duYS9sYj9j;Z}XArS6bM-c_zFjb4IJ4YJAx$QF@A)0Qy-;WTE)Vl<0Xyfwyf&vi(TKp zILUk6<*nZKEqixg-F9NlGux&tH8;v@>Q@a7&D&BK`0$qL6wRNmuj?tPtygQhnlypG J(XL&f-Ji|J@UQ>? literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_lov.gif b/hrmsWeb/hrms/includes/images/butn_lov.gif new file mode 100644 index 0000000000000000000000000000000000000000..5996ed11f40da54cdda9bafc4d3f73f308fcdd39 GIT binary patch literal 1124 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 EH}=IE+5i9m literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_next_act.jpg b/hrmsWeb/hrms/includes/images/butn_next_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..247e47d12256716a9f18b585e36068ec76a60d49 GIT binary patch literal 3079 zcmcIl30PBC7QWd7ge3xk8wA;0Kx7ph3L^WW?2C$GLIT8wJjhZ(+sS}dagd1!3RtBg zAXX8of}$v>Ac#v9p)Atc0R#&U%Gv@2Uhhj#!EZX9@0)MV`_8@ZopbIv|K0wFwxRz7 zYF=)hZUBeJft~OH=l~_mF9s1I!WbluVYy~4u-)jni7=oTz!4%mv51TC0TeYX7U1AB z+hb8gWo@@GhC2^oF?kFhZgh-@%a3L_@uPVh7z~I|b!2gi7JP_v;)%E-F?)UlVMNJK zz~ze=ZaikR5ROy85@3Rp;UOxjI3sb10<4BCM(&dNjMX%}m~l)#N62B!PXZL-aJk@R zvl`QKMtF#T;lboZi4Z=A5y%l?n6Zi;z$_{X#`9oHmJPzqTJmyEyti0D4-RaF?YkIj znZ@*jMOJBiwo;IQ$rna(1am9J!BzjaLiibG`9Jt%dq5?-i@9tLHdVNr*en2kgIs}p zjdhfR1AG|BXB>fGHW1rExoIP7;!9%&*bs|Abf+xKz)ZO8~~~d zw5I`WfJ5isArE+N0Qv@~II$5H2eAK!jYT`aen6vAsR~q@f&z`Mq^LyKRHe~WHMP~% zHPzL%=`@+lcJhypTb#0zlCp}jnu>~=hKh=c2G*!($cNDXn*``>K&Qeb)gj=P13Vo^ zpySXV;R4{%TAU+9Ny5nl0>*>@DS=2LQ>Y4xO7NP`cj5q^@Xo0Qa6}vdPsEcbWGab3 zvxH7MfvC5@oaE%sR9_ySWI@(Q&%3ly-#|0q4$IO?klg4@F+3VL*f|s_v|f1T@;)P% zj3Bn_-F%Ua*0bO)&hVA}HBI8~5jW$^f-lRC)i%EzEiAwHea~1()Mp2dpS@bw()-Ig z_t5Cw2eXQ<)wjO-l@9QDh?XeBL?M%`Wf1ht7Z4$W_~q&(i==c748fg%#z9L1R;M8O zsB@rZq|j=}kckQu6{y)V)dFQ7sn6ptY{wbJYo{_gVkE`uHNc8y{eMR)Y#g?-YeR@tF7$+ zGJ0|5+S8C5h83fuTTksh@!-2I@05LSR@Hx!_2!3M`|-TDJ;xI|k1s7eUnIwLwfVc)%7=(q~pfFg-b3}_L*AuF5CJhrMsGT z{aV@mFIbCJrIpAuskyafc>9>ci_<$?%fAijsLU|E(2Rnj(afs+hyRFt(|+mesZE)2 zy*ax12YB9YiQrijbp^0=Zz2A3a&U`IO`D&z(L zRDly<0|e3(2QYvih=K1Ss6yErq-CJ~ClL%_1J;1GSVDPiGR@1+)t%ulW@06w9Z=*P zgPY3=m|e~aWFnDBB9ciYvH}^Z5|vD*D$x`bl@t|eYH|vg?LOuM`8SS2p(xXowbj(L z|7TW!*XRQ)5Fsm^!Qjs&1wbSb@MIjAWd%H*FxNYu74SF$#tLK#0XBFc4o{#H0SVHA zlRsIV328yYB0Z0yDZiDSmJ3;f27=@vLuaeNqh~Hh3h!FG7-!^PvC#@*i)x;AQH}N~ zC~7a-pXusWP!`e@ykhZi_Xx%e9PyXOTlExUkP^RO^HY|=)6-1aH)xv(QC&F@uc z+hhgnVa+EM)jzI(yxDR^>?5OGuN&W%4|58#1oaw3k1Yj^mE#R>TkShKVpYBfjeU85 z>T87p@pM}^3XFAotAx+T1y900H`iZvuxZ+Db#LVpL%XrEv*~8(*G*cw_d6xM4y?<4 zl+(J`w0+sF!kT$XOpWO`TUOmT%y>J`DKE0o=7`6!5R?1QbZaYBEhjHFo15O;eM`wsoYD~S)pYR-Z?gG$ddI>38R1V-mEnPbcxx@b;M` z!>>;ol&5;++&yGw=q=t7laSpbxM^6JFyuIR{Yv(sB^B{Tza$i*;ALxi6{S&P9((%o zu57&I VEvlI+*-|X|6+AV6Y>I2LmnhAAoVZ` zBCV~cfC{p;7NOWqJw2kEwzF#i73gX!Xwhh^3)sy{wIFH{blLY3Q1Gnl&e_?0=YH?y z-uvDA`~LiHTo+t_1JWhBBppCF2v`Fj;JSeyPtK(o+LlY_6Y6>ML3C`=i|7qODruw5 zc7~!Y0E(221qgg5-fR>mR_d~d1T$^Wn~9}VPA)@PatMtj$4tUtfI$s($IbA06sIvW z6k|6|k3dI+$yUn35IVCy#|Gzlu?bi~+;}j7L`&xvTiF`!7>~>CQ%My|^!a)VX(Ng0 zNq_)O_Xx+msyqH#+Du!CM7`O>&=!(NBN-MmTQL#*+GK+9W;o*RNyvnyad*Q*OE~l( z;AJ>Y#zeX;zj|bGR~ntDly22qY$nn=wNgIZ^?xhqHJIi9;B%h=A5XATMv`4BJWX~L zfb+aZfoG2c#Tltf3A&K9S|Mx^K3^9&X}Wd;D1urW|45v>A% z9|w2p7El7jHJw9=@ZJE|O(4-2X#)w2ud;Jpmp}y&@%el&zR1f zC^pL{jH^k}%V!sqh2x6q#zV1lf_zik4C)ALd5@MCT$48B9L}~y`t5Dq7!p^TZj5hl zVxs(eGy2I}hbubH+6P8-svXUnj_f>f?&|G#|9JANZ|`K93M+TD{OMHR-|sF+cqymo zwYq&rJJ0{)M;YL7AX?0giHCC|-4JGl`Ct%1!E8AXwT?k^70 z5kENkPF-KWA|WqR>;lJbc=sQiw>)e#?&dph4J138fAPk7OG#(rpF<3%sv7^fsFHSp z=B>vUv}+!m9hW};@fFvZLG|uUriG@0HSc!TZSRTcF1Y{gYdP`XT?|-M8}Q}nbzh%H zh8EXV1s$YH`-bj)g3IjA{_*%H=QJN`b1eM+nD=S#bt^}Hw5%+6^KRDNlHZvN9Y+Ul z7k;qEXW4k^TJa|?hnp?40y0Uf4gMJr*>qmMo}mnsnPQ3w%3`9~>yrT$@(%!Spn;U9 zVJjd30g^#3{AQrq++VQu0r}5F5FiT71M}I0p5B9tmL$g~5Gi&&TN2s<&%+Jh4culuDKVGxOk8eZ)Kr zGH)*ne=6|+#zi?e0w$Qp;h@hqqmCkabhK#?+=U z4fB71{1~|#cJ0q@X>a|eOTN3A`l^0hbSXM%`Dov#q1)T$R`k_`ijPGs_7;`Z`#2Z- zt-=pJ*-~7mJNNs9y!>agdsU-Z_sa%vlP#E~Euw3`>&*7wk|m~Rt-ULf{I>Dc~Ck`O28yb=}dsRtJ7ucsa2y<>|QLceX6Q-?@ER>5!vD60*uXZhWYFE1Q)MA<0!5Pb;js}YgAx^ zwBw27`Z1w8?A$Le+|z!R|55jQgNJ_eRKr+oR+Dz*nGcO!dr~`JXGB-F?i^EZyIHDx Ug}MHhZTm*XpUDrqe8uJX7lx5rM*si- literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_prev.jpg b/hrmsWeb/hrms/includes/images/butn_prev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad60b3a249c893917f6a652a1bac8b0c80a97b50 GIT binary patch literal 2992 zcmcIl2~<;88on<(Nys9>fVB`6LE90PO|*0(TO#g&fKa!Pyg)SMK^E2#s^HQ(;s9z# zt+j%POObIGaB39`Zc{<5+aMZHS(Ji6sG#tAUxETX?R3tWGygmHzL$Uf?(+S?@8ORD zZ>}Ur0uT}c=D-KwZFG;tv6vpy#bWUych_ma+b?JVxs4fu>M*rIufj9{3Xkvw2z&82`<=!OS`ZKg=eItdX3dl# zjk(gR!AeWCGL24&YKK>fhr9lpLT-jx{tq_u88B#4gGzxCONFONtOAf`TL!S~v4eG3 z$b1o&h-$Tij>HLCY-4DlYL(m)O{B1_o-hL-gu?+2D-aC~Ko2xvC5Q)FfPzG*eR~4% z^PLRW5s^fOKM?a8`1~M$e^Ho5FN=vm6>l#BGI&P>!uhfkxYa=cA}OjtwK6?CYCoBd zxN5{o5OWT;?Lst36rs{6uq2&mNvt6*S|d}b0U&QBeBgMCXc+*E0H{v@b^yVDi#tC7 zj;{iXMuFl}A{PHQ$O3EzgJH#BTUoLBEGCO@%Vo2NkCXT=o!vAj);NJm018%7U85s{qe1yzL@P}{%Ncd$$3{g@Mvp~Rv zkYOvJP-%3A6_W+&J<^B(68Wu>2M`KECQ(RKI*makv)!SQPo|6;HJ$1kEVCJ(u+EJp z$k~6~Z-SF;$i--P5AFIIfBMAS&<^8Exz2NR{)tTIfV?G&z)J;sFX64Q2DI~JRz*p2olEIP~Fz$2nYlhLuxwQouZA}^|}6`wsM`v%ZW4s0NvU1(k%$0 zK&S`|^U|XY?;!j>0+%5O_yfQun``oc7_?b|QS*_*E*m!OGF9a_`rN+0HYt-{``)JB z>ocCW2bb+`y~y#rn^AgMb)I|RU)RO0#=d-3`lEznkLuE7`+6Qn=w7aR+TYySTbiG^ z5&7OO{+!UIk&p1JtGf7A>rVss6InU z$G)J7zCu&Trii5Q=LY5UgOR~yWvwm)b#>*Nzk5wd-}1uY%XF-;McRM1C2pnIX;*8b zct&}~ou9ogv^YJqK02@lzi;U~DI%3di4oT~3=YVD z0Jy*xC;$dq5DG+KF^GlVdN_3EFW7Q{%^!G(fERED(};wY+BEju#eq^$ut7$YgnB@? z^brK$L(C`i7Ut6^6bh9>qf%*BG&ooc8jZnXGnp(Vlg+cxeDL*a&Rc#XbUNLdZEeTn z+5OMVhg2D2J_RyApMXD{_<%wslV}JSWIl;R9&R1Ud=f$?m`|gV;Y89QBr=}@sF3=; z!898gq`tr{XFuK6!aSq<=;#h7?fRD!{XIf+^H0cimplVp@(NCR3707J6}K7~&Y4zB zJNvBdfszBK!fV4Ojp=OcBG``_Hteu;fZu5V-gB15CU5@xp>tR6HNToXGbmD(^4YG# zrC0B_^nNgFZq(}3&vzdwyY`^9&(bN#R4VLV6b6|b_pVv_QiCC4TEe;o^5jdv^~g}>r^CKcq5{B z$D#+XyM)s0S%A)Cj@Q{IWC(=?{q8wdNH_glLUo330uCho eR8y*TZR>^b#>W0fg;o98VW(3jq;+NB_kRJnbPt#S literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_prev_act.jpg b/hrmsWeb/hrms/includes/images/butn_prev_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3df65567ef1ab2e6a9978203957f92eaa0f089c GIT binary patch literal 3035 zcmcIl2~?9;7Jh$rLRcb+36v&L1WK)1K|oxH$c|KG35XjeWFZ<8%z{z|P;sesp#qkw zRRr7}u~ktAJu-lZTdOFjxC06(A|OE_Kr-)7K%r+kopa{Q{m*^>pL_4S_j}9zVt8P9 z4y;20f&&18LBLY@07DxwXkLOstxzQ>5;<-YzXnrh2Y-WYBS(l-3YkVNRmcGpYcv)h z@ELrgQ8)``zs@4ccMqsbj4>vc(dTSU3*jg7)O7ZJ))B#D&D!9er`O+Gt9q)ZxbnwU-uT*D)<9#BXmk{O9&W=5f!lg+7gD+gz<0>eK6l?1nxg+;~!3>Cpr z5yKO>0T{z&gbPvP5u-rBs9+%_;P3<@$&73c+kB)G0T}F%(;6T+1dG98@I(R$kEOUl zCl!kuGioy4C!B9HcI8@E0&PeBud^M-(Id(PZc~)&s(p!$S&<#}o$)I7(FLb6ocyw* zg#P7)Y7fR8UW4e}>Gc(NHH}>X&N&A*oY{G~=7siPab@kx?r3q+#vc!zy>hSVy=P#I zWYwnJ!{@5*H-Df43?%5_=3 zk@R@glukzi3V`V3UVaCHC}arzc^+y}!$$~zj==d71j9o>!5V8)0T;BHfl;BzQRg+k zba|iGhDvtVDT+GtwO8u(%HMQ-H7gF4B(9oPQuJZ!xo@7QI)z++<&nBXeEUAK(f~po z;wIgU@!B;f_vJwSji#o}CEKaGiyB?*VU}0=O;ztcA%F7>*PZJ1t26Z(j02MUlnEBK z-e;#rXK{Y;QrWd1E?%BiUDjvSW))j1d{lZbPc{+Ty1X@^@?0VXx&1svS}tQ3d-gBt z9{<)-%igj0r{@Mx$OwNuv+#qbJe=~p-;F)JoFJ|E>UUP&k$pj#tp<=CyJ=5OuT({# zSJ;MaGyv6>>PkJ3Yz9{?c#~t!qk&1gwwAaXDw`BBo3^3x;?nh`Q9|! z81X~h-<--)g8T;}@i1 zVDlFd9N+;ag0InpCLSbELgx7ga>6xyv?R0xqKQ+G;VgjKO)Nmb;c$2y0goq`5ulor z2n3Qjg-kXllPT7wmLGimvHwlK5h9UjL9t+3TQmP>7JzN@i3M)l2RI>ss2 zbvpV^iOecE6|X9H_jArJJng}V5~?fiG?1J!%*agJ^*R0l2hK#_<$YoIuCWVc0+D9J zP7@pa2^mZcnxC-xyPuAnzxtr1$Hgl+R+_wd*U^7mt9#Y^<+P9m%f9`7_py@e4`1s{ ztbxVjA(P=qSnP_A#N~qzhlmL)*Y0r5|FwfwR$cEfn;s!hcDjw5;=68iR-|J={Hb!H z>W+JZUj`#88*(Jm*2%-)&RMADdA=(=UGas>-NvrruX5~@ufwfhqkr2sB!5z9^3#KH(MECpFEzz z-TOmFanJtUtil00v(!_&pm6cRIk*T+^#x1E99b;y(leIUYf}NUTOh$*48wKY>Tf@| zw#IkM#s;BxkxgaUK+;0}*lO|txsP}2m0({~ z-a9>&x!r$Z#Vq`T1|RN?xQugMp1Qi`OLvpliWfPj#9L1{>XUx%`K4ZeAQf_D(7Tx@ zjDt-J^yRF&)T)1EU zU3jjfD{ya{CLw-CesRi;l$2APg5A`{sqHZD|-L{ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/butn_prev_dis.jpg b/hrmsWeb/hrms/includes/images/butn_prev_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b460e57dbc0f0ab6f34658d178a6da43172dcf4e GIT binary patch literal 2682 zcmcIl4OCP275~4ymzR))kQf4yS{md_>nTdIGR|u3kzG-czB;}h}Q~6M;mUR#nw04$&VC@_ObxNIELB+4SQ@}FBVfn_fmbd>)K*6)FJ*Q{)o%??; z_ul`#zyHVYhQ2|62}DVXL5oe3nS1meu`Odq~r>ND$fGvxiJYCL7aFno-md)6`GkE&KQ@==?fNlCaFv+BVi%r z3zGmIobD2qb5#@Gv7~`C%atmFmLiRWJe{Bz%uGckSgF;*cmo`9=Okp-QnUZSBTFds zAYcO==VHR0mggQ@oRuEVR?0A|j210no?poXcm2N#Ismi$AAHU;;Nl5Zy@p_x3Qv<+ z1z^4CQsCNSU-!(kWI4H+Fq>xsnGS-R&$t2bhUyE|9jJj7P{0T_ z0TVC-0&Ip~8lVSE(Ycd=pO0j|jmf}d`W|tvMJ!H?jg@B_DOFw`p_#i7$n0J5^iEb4 z!YxmXlP3^H!mOg;k;kYk%#~wSggA2ur0a<-@@&0PLvFFiGj!H`wNa%v0DwxE7^riI zUI&012X|@;$N)kwL=#JoI+c-g8&)jvqdG{@Pa)S=!Az_Z?~eb9et_WI}e{ zmUpV^S}t7w$CMbbSP(7d#Kghb;Z6vCs}^ApLBUc9JG8jWlR?my);Sy&pzbm6D348- z=2}*d1mX+;PEdGz7X)GV*2HHN*p?Rd+@AC*k4`H zT~Pegt$vOvd4)}9@0^%=Hz|^=_On#yIF_6Ib$9Cf9D9B1ryKW7l{9p7vZ5;f_({~Y zY2~KDbFIpfx~VjE$Y~u7=+6ho?zc7X-hX)a@elM{OLAxscwuZ`V6}H$`O7~|+)d{6 zUa)n2alS8c#c#96bG-f?|Fpk7Yr{9k`!^z!O=mvJyYuPHH!ZEP12bez%O&ka8boTZ zjeV9_d%XKwTVc?63w_ho1^j%n2(tzLCCGEhe3OdOtMvvwRVddRwIp+iGND2i0^k9n zA@NDr5C|X#DL@CmDX13b7i@q)@;wo95CKBK^GrflZCsF)5}zPXwW^qs&<;2*HY4-- z$Jkx`!!ZnFV>p|QyWvpzTpZ`}1w0;~#}kNLWSf0G$voF@gu~&u3*2QQk?cqF4_?^E z{KFvsY8m+R=?5@2%EA#a%Rd$io$p=9KNf;A{KGjY99R~Fg^Dr2h6IdG#U(08K+n*! z8jjR;|9ir`)WZSh9V3CUtJBMC9l4hF@VMX#dt-!mhK4%Z)yoYkapTDrmsZ9r4mD+6 z$z0|$+Be2`t=9K@ssj!5S(va@5{bPePgAShnf~bR?O=i z^IOLP%>M)O6BNg`y9I5xu5C7@z4W)Wx`?j#O8W~HU#Qqq!}YfV)Gs!Etn@mv?yDm^ zH*Hw!mwhzL6j}H4;-S}1EIIYybZ8~F|KQ9X$8^>8w=~mrzS~Z2^Nm_p;bWsee}9{5 z&=Q@`E)P>wN%gY)j_hOEk!#xSU2a#7Z+$o9cgVpjdnWg!*xIySZ-tnR8(S@9g0g|e zzpmtZ8IS(~6or&IHz-mk zs3zIhKchPbZ%s76V<86adn|gbp?2Nx{q5<;8vJ`Ne^|QG?sjT4uj-QI7yU~6Zzj_e zyOL}U;RhcE;Ok2ry-&xSsjB>Cweenv{iE}5?s}uFsWV>u!k4RpXZXuI_%ApvCXWlg i{?=pA_Mr7>k?rpE#;Ru?`Yy5E7`YU2BIwKzee*v#Qe?6K literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/cal.gif b/hrmsWeb/hrms/includes/images/cal.gif new file mode 100644 index 0000000000000000000000000000000000000000..8526cf5d19a915aa8073cf344873c4505491970d GIT binary patch literal 127 zcmZ?wbhEHb6krfwSj51v)Yr?)cd3`J*V1K6uU)?O9}E~67!-f9FfuT(G3WrDe9t*lDe9t*lrYz+7{(8>#f@cgilUfh4z~|pNQPUoz-A1@fsiaXCQIh!!!X8Zg3DNlAu-;- zF|NHs52aMbEn@>SH$kRc3bd5ope-%qHri7-r>C^16nf*F({o-y{{`PXc|SgR^2_sl zP>`3IRdNJ5g2a%$0{~ThV_RK=e{oq*`OBRqIp%l*4BI3WD`d?;vrITjdAx+njXN=j zb5Y+WL}*|+vqn!mb=!>=KU_f(Qb3eq^%;MTq+$9i5|*igDCo!PG@yEoY5%oJP1U+5?Q}OIUs9! zjJA!)mBR!XcCQC*a|;&h{H(>H(Hf{g$U{>8VBF)2k-o4S55zgJ%{h#wnd(}Bq)CCc zwnu4R*xX((Q4&;)i33T6@Qq-dxJ9n&8P%HgmW9n7U^v)fAQp!Z3vnJoaftD|*dPY5 z0}y5y|MoWK@i=k(KW03@D(MOHoYPCnTNP6VeIy?ChkOKuW29?T{m42u_0(yL#5PQ( z3BTX%^I@>(w+o%4>Da~wNf7H8<^+C+p~G82AA!53b(515qrfvfM*|l#Xa?uZV_eJ| z*~EYi?ZhIa2gldlz_BZi*=75TML+4sogqH~L9$;d8|mxvE?9uVM|xD6{%#2R`s5Pr zgZqI+yHX}WMS^&E8+Nrx4XTtQ-JP%*=#w}9-P0XdT(~0?whIKmDU}1Aox#=Bz{<)K zt5rKT1~d%}1Ke&!;NQ0X&o7PMmw+H^Ncx`d-X@R(faG>vDoQ+f=;d^E?WY58HK!Ly zGCo6d5)H|(y*vCpiyxYQ`=VT#uJ6cgcqOBx<05T6aro8j9~2pnD{q<5Qzc!O5+1&P zSdsnXP)$(ggKkctS`p5OgB>di$Q`fZB zY3F+yQvWO+C>6h;y;uC;!Gr@0*{Iq?f8+%=-L7 zRrU3yo`U<|HmZ@VvZSq?lcf20%CXn;-}t@qmLyA>6e+oIKyWhUXz|_5cP4Trg}-gfJ?ZlPda_Zb<-gC!3Y(M?=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<gTWM0TY@5u?V53ptdXHXalWy7)oG zIH{I3zSIJR&kGIVCkMJtH%#xTLhK zyrQzIxuvzOy`!^h(&Q;qr%j(RbJn88OO`HMzGCI7O`ErD-L`$l&RvHNA31vL_=%IJ zE?vHI_1g6tH*Yuqec!9r-=(U9^_Ou4*DRPRCJL`OvU7(>PL{* zz&<0+V@+iF4DK<6ziu(`Ff#%pk6Dnxp5fKoT=A&hsZ#peI=&y9#Fu94fA;nL`5%=H zUh4jxURqzV@s_io;V~8GU6G8(uF6)+%)9Z;qP+dyG5;^SfA80lPK{*AIO3^Y#{J`~ z<>T8cwyt|MtxkQzq|Bva<=e8(isUM4>Quh4m0$3n_{;Bo+64vAs{f^5GY=B2RIZC& zy*u~G?)x9C{97*>|0sGJ*%`98pnIN3j&tMNlZzJr2spUMyw3eEi~N5E*W<2L73o!m z>F1wu-B`Ka_=Krt+~u&nZETt{#haA+x)yv{m0xamr*dsiple0&tJ=SdA sspIN$jj_3GGfC#}vj^#)m_IG*(!O{2KLeLt`;p}6iq7qK=l{P60PWmQjsO4v literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/delete.jpg b/hrmsWeb/hrms/includes/images/delete.jpg new file mode 100644 index 0000000000000000000000000000000000000000..556858f9f2267b58da9a3814d30f6b299f589717 GIT binary patch literal 3064 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 F_770dJj(z8 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/delete_dis.jpg b/hrmsWeb/hrms/includes/images/delete_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de95f452d1962c82b1d48cdfb0ad4015f0d8a2d9 GIT binary patch literal 2661 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/execute.jpg b/hrmsWeb/hrms/includes/images/execute.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1e86fa1d5a8d13db4734ded72caec0ea9bf30ae GIT binary patch literal 3022 zcmcIl2UJs88on=`BtRk{fpIY^in;*w_7L~IK zvNl9SQFPg1P*Ft1K?DU00wcvnS3x0rUxEsAc6RohJ^R1&-}~~H`+xV|_kU48Qa=X_ zZ%;2zfZ!0Y8a_b%hU^#+Ek&jBXlX2)GtUxy>+0o)e?tut%B5ljDw0Y76b2Rx5crJF zSQJ5*G7RD>!7<0J5Wv;dh% zg0elu+$cHB)4>+N1kvCjQ1#rTu}T?MLldKQX?zw8LvL;@S0a=P+2a=hRG6+6oMu-8 z#%@xvRK{M+6-S~{iI5#EL@~@*#l>KLWF(9i!;z#(LPjk|vkrc-SVIp2mcj9JjIG8p z_p3!y>BDHH5E)k@j}*$rR*HqE{%-}}0ay7y_%wGwAuUpf1VU`9@HVks0GzW{f%c5e zbVGxD+0u1FnQSx=yFsnbloTu$@wM4fXw>c=a|6JFY66uEgdhPbA1D9{XH5+_j+f6j zf?2UFEc*{cgP+Ota&u#cN>FZ8lu+>bBS1#K4?|;Lt`Z)zmpglrP$HCZQFzU+TsejU z+XbRogKqS_FrK|cBoRpCP z=+bDqdb$ifJ%*v4o}M8#=oxBLnE%ZJ>Yo9V0wJ5=k*NU3MDR>R{S+PmPJJD5f+&fI zMj&8J@Q?-wL=u^zL#4si9`8f|4*%K700;rW;|Mq+nM5Jt=^W@};t5kGSP@+Uxdv0? zHd>Pm(~q8Won~$nRLNuI8e4#`i;8guUle zuhlAA`#df7AKQE(^ZJ8d`}2w`>Rt?lMXuX&;O`f2)VIB}U$i7De(R6NFWr3D{+@!9*qzZ8Z?4SWO^61aVUhh}Ij^4KW1eK{eeRb6&G-Q-)ix5npc8Go6G1AkVP9 zdLM$wH5Pb;+M&XhFA#nofyGw{>PA4vYicrq6L|V+I4OJ9?t;QORfRs`3DLvv3nV`k z4;=dQ)Ki`3+MetdojDV;tlOePiWCgZ3w-suvTCS8F-P)|_IQP_CBm>vL+#fzb=>&$ z!#7()6_Pu*;#lGKjg8Ce_r^VY9hF_rzj&|hRDW5`nMs5E+uU8L+F(ruaQJ~CUe%~gcHm33EouQRa>k2ZJ2b>kk z0;7;m@z&)<$4f51VW%B?PwHCNRlPFPVI?(1GRbxMw88TW%?__>ja7rz!?c9FYh|6G zW$IsQhwcrmd(z9XRIS)sbFpfBT7Z6TaZ{)1W#3)N`5)67^8-v#-e8>EZh9d1Wt?n?_Er=xFX%gX{`5_(2WS4VuoKVj3ot$>E<7n=f4( z%SA;zkywN(*&<0KMn@nND&ztH^nnWy04d->0%C&z5Dni^sB+C4q+Vd~2N7&w2j&4w zY(Xvek?7t59*fw43NBU>+9A_vI0YHY0+?OP0we-~KqQceM3N2(Dvd%SQD}53l}4q~ z8QPW~oqpT@+TRG7OxC6AvKS23|I7lgZN9Pq0kS|227fFG00I$@BOzdv1#me0Snqfi zz#({y1xRE(9B^_3hi4K15z>H5AjyCWX~57r{V3T;+l9@XiM(!e*`}W9ZZ^RgIYoT= zRaB^jx=Lc}?>)SEC@FtcPQ6~x4e4c?Q31iic8rk9NW2`^)#RDes>4_GOu{1A3GA3 z=ddB4JhAD=*KO;%u3QqZO!mKSH$ePQn2^L&*NMAsWP!XvXfj?6y0z%u8=kq>?L6VLkZu{BLiImCjj7SS2^LN(>P zxA#gn55}GK&-ZB4=a4sZrD5MVJbqAeFkqqa;kuI9NqOHdZz$<)DWk1!uTz=P`Krl7 WOQxBbItD%SkNEYOg=IvOy5V0m*(zHA literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/execute_act.jpg b/hrmsWeb/hrms/includes/images/execute_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9f717c10e4b9512d302b29aeece2f579a04d34d GIT binary patch literal 3003 zcmcIl2~<;88on>fO9%lI776IcL)q+9T*B(8$PO0E8dMZ8Aps&Gfh3545ET{cf&+@; zf+%3?Qg=m)RSQ_x5d}m+!H!U^gNk8S3cTKzphC}dI_J!p|DFHdn}50YyUX_nZ^Zuz zSPQ)Uya7T&z;gHj{0+@IFixhFDdJ>_7}stFaCY}wNPfcz7Aa(sWTjXp1yEQ-EI{Bl z(i2e>J&yNc%ts;<@FkePI5tixmd0Xk(pZTI1_KJzNt!rQgHLg85~Wy~EF2p_?$!;I zi=|4;Tf&c3z&ssd0zwcC9tuO>Lzb8-C)Uu!Xk8kg4a;Z&KanpLDMZ-VNdN<;YlWoQ zRj-MMOd^wGzI;iHQYIB)AtEJ#nOM;mOpl3y@e-p9+uL&lB?zNkwwL z5?;4EUqL)KVmF9p4yN&!q7-bASSpmID6r7D&iluRIrGRTMUsvlvv&sumKkJNEIE*hon`P~}BUI>BRibn> zspGYZy3Vbyu1{|3_O{tsy5W5OwFf`<9KP^l!}H#-n3WrMeO-3_;fp>epGC1L*}K2F zc;nG8{cJ!YL9`SNCK^h0&_J-5X+VJpk|rBcXRXaOA`nyt*Q&Xef@kt|c^)Cg(F*%c zE0h30vv#PegCI&wgkC&HrKt5Igg-`L^9cg}7%<72HQB%ww7eS1D4e?OwE5MO0sLeZt16 zhdY>9gCDntqXsr6o9AJ~biSzudIG z`Ld&Y(6~rC-m1!VpNn%^l4^S;4sz7o^s{~Cr=ngDN0s6Lzh6IauQ#o^i#ubD%d`oS zBLz=swU6KSY+F`XUKsFT+9gBFCkL^I{pJ?mOJze=m8BQdzc$Z2skfbGez$sH*&Ns6 z+Mj}r%7Y5o4!}6z z282Kc1hCX#AP~gCu@b66GlE4H82(8F1{{GMm_baat#T-HL7i(kQ4}s%%%V;B)VG=YRHE~ zH=31uh-R$i*)#5Vf!b2OuG7lHJ|wUBY_y`v!P90($vH=pP@%HAu9a?`rNiKuuHWh9 zU3xyOo@Z;;)z(dLU6i~bU(5GDpu4m0;<#0t3XYWDY<&4{s*B$eaq3rlj(&Hm>0j?Z zo4p`>McU@Q$0}|=ZXeLr1u~TiYZZk~CMSF>O>Wd6h!{;;n>*{!8MRSm?XxNF#=!!4 zC)d*6W8L_?5Ub+ovsE-jokOc^-VRjV@7RF#iY0V@pY4>aX`szh6OF*D^jMIO(?Y-tU8EE7H=3@@ulcIP9{p=y1dH zJJoMfHw{(|R#sfv>b1JnuYaTEHe-&g&&_D=9EFp;vLNZUVkWD4==G^B)x%fE9e-E+ zsw=)6$<6mRU(~Zim4^d|>2|%&_6c&!-WMwGzcs!*=y(6GM~)3HRCoE8*yY%mf3>yQ zw+#nQorAwjM~~-RE$w+c@sW!Rzi&Hu-Dy!|#??(ZavcNP!29|ZH1?GTH8)USL4DFq z^>ysF90#Qt0dv2-IoWSl?dGz)n2j|-N6tDlzxFEJU-!9J=yv~t#)iK;HATAKIgtKj z%A^QSS6iFE%;Vr-!wR+Fz}MWOe)ZtBxz62p%=`Du325E_4hIEYX0@h2PomG8NPDYr zr%g9`AMjMge3yANN#(NTrf5qbN`I;o%jM+UaW8MHQR3WzXy zogaNVH*IxP{OpKH=c*cqTstDdmd#n3BeSlkoAVDlW=eS2!ADCi!Y=OeDEmQ<>>i%L zozdRYSW>M&F=<#hrMfpGvLM^Q%+E74+N~%vDlpl&* literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/execute_dis.jpg b/hrmsWeb/hrms/includes/images/execute_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8dcfc0b92d018fecba5e33957d6f308f7a7f3e2e GIT binary patch literal 2634 zcmcIk3s6+o89w*1cb_b~>@F;%O)mySO=4tuXwgQNb(hCrB9A3V(vW@JWpA?X!tPxW z4H6NxvFZq@sixW@rdXXkKuIM|rV6MShbY)o)F^_s_`>jzh;)+Mb9X_(Nt(`d`rrA_ zz4!nBbN=s~^M60v#a;ulG()NZASeRffDd5%iCs(VF2?1ty9&ve*>k|Wq}0V&zbKRP zxEx-Fb~ynQ85au>_>8}~C_F%I$R(2hIST^T4#ZSg24cX`m`@DH0W`h z*1^z>*E%%<8x}8d(@usoI7|f|I8VqezzO2RgNvj(S7C{p%i)XhyL`SVnKI2(XmU~> zik!L#5W(qwL4CU#3DLP6E;pHCa@ZJ`lOnSyhQrKdOaU+0Y%tydN5VG=8MoBz-1W$! zfgS|p!Equc&S!c4vBj5ZbUahG+vN1vDEH({h49pWP_UbDmH&g!cLxF@*-Kj~ZmaM% zxm^G>(XYUN#!m+rGt)`ea?0%<59Dsp?+YWc9JIwhyBHe%yXV{hsG){J6$1*afNB9= zz`%DtumT!z2`6p=em;`PHf}bz%1?-IA98uBPDdJ@jH#f2vQ88OGF~UjkaSZCJnqy* zWHRNX+$IKIcaq7&l^eGk#J7e-^%7M~zCt^#u3`_FZTBuSJ596$p2jy^4Acok=>YIa zXg?3}A?#HCq`;a1>^&gWT3u!eSl@y35cV>t01|;fAQVW1LWx`~63bPA5=o#+tx%{G z3bkC~lku1T=gAQX5Q_t(0Wzsnrj$yhN^X!U{Zr)s%>wK(AQwQ$p%^j^pmGG0BkUD; z04UpvEQBa|h)*D3PB7RGa2~-I2t{H@@u^M(pxA^{1`r&}n2#6YJU!^4B3 zdD;w8sZV+)LX~;k924s<@6hohtFi`q1}&br;JpoNr!T6`w(6T}nfQ=S zV=pyysG{Y(_xi9QYTLebhqt%>?Z*8N8c%%nkC7bP^7T9Z^y$gJ|MT0q$*&X?Z+Nfn zFQ+c_J&*$wg=ldfCO*N7^FauY4#FXVqG<}AW=*A%LvTE^V<0BN+~Y2<(q*YEp4h=i zf&;*x9@pFnLDYs=^~QLH>U{*^#}Pz5hQM9|63mxV4iIEd2wwbT6VB0{?&XNZ87u(g>`&CQdg1x`uvki>CZa#%G`lw&xyt?SZ?GZrFIF-tp~KUG7`qm!eOmTsXR;yD3$-^1G*! z2g}%Vw>_U+DZcgW=4)EIGpWYnevJj4no|q4`y+0hYFbgAHqhI7u=&!MxAabkv@h?4 zwn{>m`ktb9r1b5(Rbec6{z%z3##;8GpWWeMIh5N2TRmxUEh{uJw3&9$ObJOlZ7!}r zj8GxN00;zHNNN`_Lwb{739!R&2CB#R1sfYs{6qu^;=yb%hg;B}n~rI&^xxJ}k=080QYv9%`8}^ZfPU zif#K2Plarl)E6eVg(;Z-1LP;@oAA+r9Vy^veWe}qkzP-c`tm!ABctC;7-?_K&}BXM zuNHM8wkH43nU8hdkuh835xZ+g%Jk@IL)TmG#f z)#^><`RuuyVFz9=`cR!w(sm*!HWu8SG53${U0XK^7wj$xrmO8ISFIAR-`~;Le@0dR z$sXgn?J3dqn>Xjp={C({!EAe+S<|-Q*=rjf>@@vCF}C`zeJn_L?WLUg*jHyq%`G1x zTOL*v{ix*8;(}L8Gm6UI-L-o7nC->8-E7D0ysKLuFnhkn zG#fQPZ`yKsbko<(Z_h@8x1J6DAfoP$>}*6UFLL|u&xw#TtFJzsaic;X`10}e)Wyu_ m(?;&C>wh>adnmVSXu0#mm-p+|=TMDEi}FJI!ebw^7yk`;vqNA2 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/execute_undo.jpg b/hrmsWeb/hrms/includes/images/execute_undo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..363bc9003d962024c27c4565653a99ba05b42959 GIT binary patch literal 3352 zcmeHIc~nzZ8owbBKtdn_g0_{&B4b4@P@pZXh%6D5fhd2?SPE_3YZ%pdb#zjMBO-}~0zUEc4Z z57DQ<*w4q;2jH}DID4Eu0O*Kbd|(VBLWD6$JjH3{XW)yqzW(@;c|j~8!b=cw5k7!o zjKu;RfLWRui_$i<@YzJ6@{lM7kFtTwi4k%69Et~@!((AN+E5p(;}*_;8|T3jaYYHt z_apE!gFpe7FQWMH7#tzY)5i*6f>Yzso=5UT;*$kf4|R;jrS{nwoBA>08GM$IMR~sn zmlx-PE)Ttg$NjYA)6(5w^Kaa^$!ZZA6EH4_|#{hN1!HfnJjFnz!)mr z8Lc%M1)4oxY)A{*KtU2&0>SG*>;yHwMTB4;H(HaO42_!AV{QPfpjtyE0v6Z~H5w!U z5u798%m++>K;PUsz{fZ8t_{n_>imhQS3)NHdU{f5d=Z1gVKL{f1Mc-rF*V=7NQN8k z>qVim_$&cK1P^>ILx^2CY&|%24Wik%tRzY(m(N6!gp`n>#a^gUf><^;itlIYiJ# z+63+AfCa#z?|nh=&a8vyH3~=`OeBg0nBQZ$=p(QP5cTx*^!14P`b4t9JOi?s5s_$Q zW?^DtW@2JNCaUH2qqy59amPG=|X%RO8D z&-=ZvT&ba)r2R+E)igfnns;o8}^7^}K=b#|Z4+LO?qK5wGq^2JT>R zM@C5fK$U@GLFHv{-lB^QTSp|SfWB{p3&r8GEhuP@jk6z)7)^SWgGeqOx-qn1qaE8O zq~$CA;-SbI#T^t}846upB$}!CR7x7nx6H_GR77~oD}Vg^C$4@5R?@yqB8X;FC zre!OwT8~ui&z&5nrk6I=_p8oLH&aU=sRZKZok`0AcG>MM4S2A)sL_AdrN2LpJLq0v zaBkoe#Jq^^FN}~V65KLTkQII>$+y4O2=S{PG71)M;@$koVX*8`Vr#Fotz!81vrW?r zSI;b08dg0}Y&gKmZj;$xyIs2U)aK1T-3>oXmJMz?5Z*v6^J<*5tsgm1i-Mcazej;< zHVTMT)03ZO_M|%4tf~s0>3XV+98MeeD_oA=Jt@!H-*$g|a$BsDUhv5X7X`(kb!NNq zh8@#+(-yVI8#~6v>=~)ml{M|cpHnVGFZBE<^5~L|DiJx9TfzIXTiS)g{gr#!}U238pcb&fFfmhXVWQp`DD&ae8;+d;6 zD6o@>2d7XVMgd)%dfMZ_RKxcC#v)ad;$c|MZlt5MVc!cUt3|(8+zKB)tIBRk+2;Ci z#@#ovO=+8>DjgIg(`fYdL#Mj4105nHvBzuEkbVjOl~lRhy;Z!YV)}aclSmGKH9lAs zYwj=S437HORJgfF{c=-^&i8yQo38${;Alg9PsTD6ixM)kjxMci32$ub=Q+-^a}U2?c0}hO?I}qO$}-_yeazBXRKz5jTp< zPTJ+_UN`FtVO}SWW(Io= z)TT(%x`y0PfR}_T&bN&=70tTUZLhFgkug!1KEyRWQCgfp|MJqPSTdkGbZKZ}xQnCk zKC>#;XvOc(GmN`>yC=lKvwel~{4N<}tEFuh{k|iAy<%%xt(^W9&#d#eXFRU*XasfL z(Dq-0%43g>AZ_O#XUt~x3hM%VuB7as)oj{v{8&AE!_Exap-0t6oK+_ZIH@kkjhmAl zk^ONc(pF})eSSe6e*r7md46lFE6FC{*Nh;qs9p-|$EEHUS6cE|jj8|}-RWNnrlP($ zqaTuCGVsHa)S`mlP@p@Ag6PRCT3EqbwjBE(*s|zDY#B;m2a@iJ;tndd96U7JHMQLR zDpH}e>P8ksb;dMF9@e-HINn`@0!hd0lN`y$s|9-X%U-5IMxX6cNQILqkaH$Gg9uK~ z$UP~Gi)UPi7;L(slr5eA(c#2PSv*Be!cWuaU=N0_ef5@w<3lIRabTbj9Z)WSifgZre;@Nz9FfTDl%o8NieFTYol*rMC>Y$CYoB1xzhcD)d zQ@QU)kY1Ur74igPx<8+tD1v#$L;*q&EgtU^^d!}⩰|nzb*m@b0L+8x1l0ndARQ_P zqyjOVR15(gRQdDrAe{!LMeEh>J(83(?jvrG=nr^eCQyi=~O^5lN}Z@d7rF4?}hk zF;J%wK^tWQv?l;tfZ*?aN$~Cj!gG58C_Y>)9tGT7A{XxhyMQT~Og1K)8XKEZO=g%- zY38P;<}_PNOPZynE!9*jZzkQ#uSdkp#KeqZWq27LoVBeL-f6Zo;e??iweY1(N45PgKC zr>|#VWJoq3nR-Gem83s+riX#gI=1D!t$E7~tqvYLzuIX&Evzx#bGdNGU8a$9LHNki zQI5#V`uK&N3w#enaQ&{9i&xmRMRubvrMsH$rS`n?cPXs+OZDMv_kSL%ym%^{%R2~oCom;x zdr|=d3`mtlHX&bcJp9EM;z7(^oYNEKS*&>I+U{>}hGy?8=*?;hs#4T=b=b#_u{!=r z%llN|@I0-~6ms&!q`?e1rjSUq~cW>@9V zcFE^m-5SyStr}@34qP>BTI3mJn-|2+>pJ?d$vOpZDS(|LuwAP%IKRmS2iH8jJh*)Z8 zER5M9_c+qMw?|b_n9eD7oLu##=0xZy4hFJJQeMs3wBOxcEs^7(#c!;-FnbdY(zETK zbf|wmoX~~;a7&OAqCxF4wdZ%Ia?! z%nOoIW%LSF=>1LHr`#U=b~D&+B<6UEafv&xMqvZIz{5Z3!jFg%+I9Zi`z@$ z%1bjhau|(6>T4NUP6d1a=^2vFnYv*-l5)KQNtkOKNutD}i z{-jJHA?E>L4t%s^8xN_M4%UJsNW5aGBJC6W=>W^$h@gWNz#S|l3hG$j&@^bRUjThw zDw}8t?Z8OOiLl=vZ1)G-{V%rbY&(^md}mugRL-iSUmXnh?XS%|BgMvLBa0s79A=*3 z3}nwf{jGgX(E(n*wsmRCROFo#qeHo%@IAZsIwt zcQmeDkgKT*UvfPq0R=-w{*Rti_B|SgrSqgy)+$DuyY+Cm^*w)7aHCGfD%!!gEqR5V z*-UldfJWDpsd|aaSz8>44vbZ5T3rUzt>gPK&)nN}tpDJ;GQ8v87$>LN literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/execute_undo_dis.jpg b/hrmsWeb/hrms/includes/images/execute_undo_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..632226e9ea361545581868e2b9e9929394b9f80d GIT binary patch literal 2786 zcmeHIYfuwc6uz5;5FmtvB!br31yR~j6huUkrQYT9-pAW$#~R@j3+QUhXZvI6F1)ad7Kxa!8KaN*a-GR zi(nN_YEWN79uTs%Hm>8pr@i_`5f%0TIiK#JkY!P4%(~ZJn zR`tk6rX-Xq)L%}-X_O>}hGH5TGu_c2%#4eJ@dO;XOcF9;$={v(%rXml5D*2&(HJ+z z;`H3YbQ&1xv`i%@)p3~W#ZJj^*Iz2^d$7v?;A75!$Mw_V3XEPV5JH7J!}{2$z_`bg zEW<*AP-QBnQjG-CCusCd;D!=-tT8(S8jY)`-2m7_oeWh7Fpv&47HEM6&e3otfdVMu zmjd8`ZasP)@bj6xXrt@U^)ibSFSnG6jhHS+j)Ofh;bkdYfBu?do|f*T*O5cR`I zOeNRAgZGxJ>5E6N3t?*TrHipNbU98clxb>oS%NkxhLqz30PI3K2I?pxXcI(0`(|JZ z5Ngazf_KLsp4(qQ;H6N;U_h~s&ZSyGCgAgUJTo5O%#1IxFt-p%t@wN^sjXNn6^m^} zd`3nl9}d{^icu{n0u zE+$?}$qv$x>KNDAs`U*r(p?)IKowcEG@KW>=1aQiZaPfdYl zj!k1&2ln7tX6Yr5O#?zcQXZR0nG zD(bIx^@{+D1<`UCOr~5DHwJ>8i!}!#NU;~2%*xm%p%GMvG<3T<#I&o{>tvzQSoQ3l zDO?(W=~TCxMhK$7M&T1SM}u`dgYaquj?W=bEr8EvdWwK2_%o^e#GVtiWkFW1w+=^M zxv}J43ww?D@KedWtSUouOKJV?!RX$weLJ>3*^SMt&($ZEcX||DlV5DRy5JNAzPK5G zm;wdT%Jbe66)A3YMH@alx%k%Fi}<7v^D1ATwDQRFcMg4B9KAV9mObsp?HpO!igQUR zgHHX!arIy5e(nCU@6O7+ak*q-^`!)Z^WG`rw`^(;|F$7j7Z~ETgt~P7B2I>7c6aaw zk|+>!Y@NY-`!;P~Sa|#WtDj_6QXsGLw5*qC{e5u9@OBD(WaBREob8eAq|oo<4<|N- z7F7_(iz)>5S;-l5yTvut+T!CmE+;CJ%06sdJ1=Vby0sp|DW~*%rnMO!^$rDXiKuId zTrm{BL7&d?A1=P)UQxQ=?)#Hj8{>MCYKfIic|ij?rLq=@$# zLH8cjpcfj3i6N`Ou7>CZ4kdZJxQ0t}Z~9Zfl>$*+cYm0fr}HNc3|Z?QH#-DVfND0f zlih@HOr?f@RcNd-DOs+;V{ii3tU_@zPDx+uFsP6h0I&jH3?aopdO|@kNPy&|fvRS{ zATa~+Ya&oE2h0G@bU|ZpE1pB4xP?vL{}@sBSg%>-$#kA9PuUaIGRcK&hQ`QYtKqhi&;yqjm88#O3m%%)EZz0f zR>?|B8{DDL!5Y4sH)e#@FK2|!C9O_)No{HSr)c1OPWREI|7L`!rWYCEQa{58r?aw$ zI$HNskR|xt&jTa!_2%N<`p)$S)3@fIETcd}W{xgk$-fza-79c!^t?cUrpm{~7F`P6 RJMW)fc<@wefYg&}{u>I@v6=t? literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/exit.jpg b/hrmsWeb/hrms/includes/images/exit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45664756131b68a53385af8585c737007126a129 GIT binary patch literal 2971 zcmcIl2~<;88on>fOGrW>5Fns~Q5Ho{UDyK%p!FSI9Ab6owO+i5UaIw1fm0FM}4j<|G}p}13DUzEEQqIQsHS5s{o`g z3A6 zf)V%;{TM8ZFl-fHAeD<0t5p1GNpfPGTqudIy6aX3@+T{=*q8rVaKzK`l z?ge0bixhDf5Uq!Ki0(ef1}r+AZbWAp8L>D_29sl9!eW_N@XXCE%*}ZmmR^QmhL7L2 zh%u9C%r-VfUA3oY=wQv# z>nHXc>k2(*u{Bkxk(IqRE?rZ5d)~~U4acwUdB!-BxUaH8%gNg5LGe9UuU7W?6<@@5 zPrtLdbWG)6(%p+nW`_$(OD})j_$3Q;x_bU__tBFV%byC2`i|F}UG%CUJ# z`;#4KX1rc`X3$RHlKW0f9>1ZoYJ8u^!6vur<2$QPpsAlOzC4D@vu>R@ozt_f{IiuWBPwc{KkGn4^8K`vf@K}ir>mxPigv`- zPHSv^-23M9+yUDgjFq`juBS{Y^R5A%gz%c7cB=Sh_Xx5VuGQoP3MurVZg^vIHktL-qk15GC#_pB>qGlP1WSq=9^^|y&cv>p0%U9pUp%O9y9aR{_^@s zPR;Gw>>URxMnm==QL#oAtWlW%1LV<#W$)W}HyT$j=k@foFWDB>8WJ#O+(y@~hI5b7 zTdZ$(;WWbf@Y z7>a$^9d^3*t3&s8NX*(=Hia*;dR`EJJTG;_O&@3OGB>NHF(OOjLi&>o#PQ)p$!S15^8yvyJF} h;#j+S^|ViXyBl11JnSsK5ZCD+nk!Qltn7O5WU;pu(J;ojqsI{_p(vzW0~=f46-PeS*FK z8Y?_~JOP43z-IUWw3qC%nlF}#rF?M|({|o`uyC2rN_?;C8m?3S!rmmU`Me@NdJqr{+fOm} z3d`It7Dc7^la&G`Y>_mAE16m;3a8#>zXRZ^7IO6S6W*|RiYnX^F5CVYD!D66(LgWVknF;L)5Fdh0 zzd7FUv;edZ(A_xVFfQPH1M?8{8At{+3WcIVp{c0Q7*tg%Lr0xPQ`gbg($dk=(r3^V zGTA9Ve%~T$RH_wJa(8<6POf?q} z-Tc{FX3=|CB<=JwSC^U3)LBy&W@{%&taT?_WCZlL4TMYWb@Q(!SuW2E*UBt+LMUEj)7fmzVF(-MH8AYItqLwtd;>Z&o&TjyQU)<84pL`L3v{ zscV!0a5#vTpuj{X5$zQaOc!VpAcAN!Eh1}Ax;BQOY)x&y?aZ(?Nn(b3fKIs7Zoq?0{Rrt@QRuY;0m61PwYHleenC6`&m~s8&4X# z?(9BlvOfOR@jj=-Y?h-Y;1!o0*b?06D$N_U7*1{$hyJ8Kcf{#5`EX+|a`mG1&mo!h zmGf#>Zir1QsyAFXasE;JMwf<7{as7DB zaD308ZPYhTbB%--j<%3%pT2!}aAW17_&ao8YBY;@K&W?ab`cp?$< z7=ePvZ~aVLZbW~Gm=wJyopt7Fzjj$|oB1-GHDQtg+nILmiMkm97Wv`V%E{6?`}XBY zdV!gcA@vO`9Xt%JII11kccG7Ge=HaD?U=YQXRozZWvXSgVSMD}r9S3cKk!0kBpK&U>^fu9$DY$1 zTQqL2|ES?(i>sI3FGKM?M|Q6pOYbG3;4 zw>Yn~yk7C{)VYR;ihH*@hm0tdvf9PKT`a)Ae7}SCy9?h^ln0{kU`Y YJx8;J)j2aBX+LNfbNu$cQ7GE{8}r~h5dZ)H literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/formtab_b.gif b/hrmsWeb/hrms/includes/images/formtab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..dd9cc037ae4f719451ae8d9d6ceaf048321856e8 GIT binary patch literal 89 zcmZ?wbhEHb+0(2=jZ3<=H}()<>TYy;^N}r;o;!m;NRch z-rnBb-QEBH{{R30A^8LW0015UEC2ui015yV000GXAjJ$pK$d~^6s3R$*@U=nz*UV= z2OTCQC)7rx(!DU67@}s;Y$ys^$+@{q6a-U1!^Kb>I+6y1$yg5o!N7cRT1F=Jrjv=F u1DFeDuAx9!WEmSA8W$A{0%cBI8Fd6)kdO`!k&zsfm5>dYkVBkKApkpYMTA!X literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/formtab_lb.gif b/hrmsWeb/hrms/includes/images/formtab_lb.gif new file mode 100644 index 0000000000000000000000000000000000000000..62031769817f25406026b8536ca77aa7cea3d8e3 GIT binary patch literal 84 zcmZ?wbhEHb-(+0(2=jZ3<=H}()<>TYy;^N}r;o;!m;NRch z-rnBb-QEBH{{R30A^8LW0015UEC2ui015yV000GXAjJ$pK$d~^6s3R$*@U=nz*UV= z2OTCQC)7rx(!DU67@}s;Y$ys^$+@{q6a-U1!^Kb>I+6y1$yg5o!N7cRT1F=Jrjv=F u1DFeDuAx9!WEmSA8W$A{0%cBI8Fd6)kdO`!k&zsfm5>dYkVBkKApkpYMTA!X literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/formtab_r.gif b/hrmsWeb/hrms/includes/images/formtab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..644a5405e634e58739290689f0711a034fe0eb64 GIT binary patch literal 89 zcmZ?wbhEHb+0(2=jZ3<=H}()<>TYy;^N}r;o;!m;NRch z-rnBb-QEBH{{R30A^8LW0015UEC2ui015yV000GXAjJ$pK$d~^6s3R$*@U=nz*UV= z2OTCQC)7rx(!DU67@}s;Y$ys^$+@{q6a-U1!^Kb>I+6y1$yg5o!N7cRT1F=Jrjv=F u1DFeDuAx9!WEmSA8W$A{0%cBI8Fd6)kdO`!k&zsfm5>dYkVBkKApkpYMTA!X literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/go.jpg b/hrmsWeb/hrms/includes/images/go.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12cf257540b1b6ee3a48f030d0b2ed1958ce666e GIT binary patch literal 2825 zcmcIl2~<;88on<(BnBQy1fqt=Zav41RjGo21W=JpKnpozu>oGk?y#@8w^=|Ni&?A90&_ z2#gnr{lx%*v;bKE0P&281;yc7ToZ?@Fvl6Qz#K3C0O~Wt5UB=NBx>cj5g-W#~W-_85m>C-j^%Zbu=!}q2&hBjm;~WPlK|mzj$8?-^ zoayg5x=2H#k(Q|?N=>X({b3{(JoVot>J#YY{~*)VfW`1ll*dTPRADvAEC6MJegXX% zizbAHEWz;AQnh+ik*uIzCS-&vO3h4Cn`WF zG&+OHGB9MrhW=QH019DWdXm4v@w8nYjo?{ty3v-vn_?#=$x|r67wMkzb-*EnBV*5+6 z{g$GQC-SOqJ?bwmz0mM@AUt+;W`0T8#m0_TuD%hnq^zxb%P%!`4x)fUfoN$uOiTvd zSqH&#wh0X)NU-A39oBE=lL)Fp>Ute*qFUAIIo_dyXpK{!ErSHWv~xaJ4?z@~#`uJ} zXr*oA5dJd)`}YutJAgyg#YBMzxZiy*dHb}oV`YDHIB0TFB=kt@&P!@sThaOaZ7}{K z^2VeQh4nz{)OC$}+_L(^{~D?k62O6-7T7@m|9AJF?>h20TAP~Efz@8Vh%YU-w=6jw z+x`!Sl1-}NzkJV}-*dn^QSl)6NlRcC0oog@tyyAMuJzQudkO14%bad*?pNUKn>E~j zhS?pkE#f$Pp3@3h*@2&S%^0qk^sczRYUQeeJMmA^O!18`XPrNF=tSuc75fivP00(( zeHylScyUtGi12x5MB&oFboWLNmB_+>{Z6Btlf~yF4)wMWH*USD9Z0$R!cq10+yG_E zG`sl=+<$0VR}}x~^Nd@|2@o)}f^yB}jna((E6!ejvv`BQLNYi+SM`o$Pa(kF6S8Ob z%hxre;ZHjozOTx;I#P69Tru1b?Z&>_+OMd@%gV}!h24XnUij*1PWHga-~a(SdI@m< zaKCC@L|-}4tm{)tVYpPSfgcSOH;h>29$R@B}e%)ImxYB#EME~B9V3mE#mVC}+QijKYm!qkHf+qy`sUm3a&oui>nvFUd6oz}MYM~^!?pL9L#d-1Y=;ML&J z>o*X#1p=u0!8Ja+ew7!T4*KE1B=bTjNo3+Ejcz%cVd5FglqB%19M-e=UT{WL8CW}p z^a`TXb%qmdoLX)B$kcS1{kg=_|EJ8x6MLW6M+2ol`@5C%vZ`JkZE5kD(zs8>_T{b8eezqgy%$jNf@J?%{U)nxgQMdDT$EKeHYXpVuuYV~Sde~l_HDVk5c}wx-*C)&9 zuEP(0>gn9;o>$i$iDx`_w|UZa@S{?t^vOJve;A;Nu{7>wHVgnAI zT)T7a*^!NIW@~(ROs+j}zo{#AW|zfWSGSzic{!^IkTvt&%%Qyr2je%z?XdF8Z+rMl zd8H3)O5gUwZj@AXWohXd;n{$u`fJxOOsjA_lAo=t`eIXsuPThQx$ses&z6bY?YG5l(O?Tpq?w!zuh6#U%G zOt;f1S4CERKKq+Jl}Rn~o~q)_RkV3O&RO75dBwe<=d%ZIYkdTlB2RbM?7%~phyLBU IhDS928~wM@0RR91 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/go_act.jpg b/hrmsWeb/hrms/includes/images/go_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12cf257540b1b6ee3a48f030d0b2ed1958ce666e GIT binary patch literal 2825 zcmcIl2~<;88on<(BnBQy1fqt=Zav41RjGo21W=JpKnpozu>oGk?y#@8w^=|Ni&?A90&_ z2#gnr{lx%*v;bKE0P&281;yc7ToZ?@Fvl6Qz#K3C0O~Wt5UB=NBx>cj5g-W#~W-_85m>C-j^%Zbu=!}q2&hBjm;~WPlK|mzj$8?-^ zoayg5x=2H#k(Q|?N=>X({b3{(JoVot>J#YY{~*)VfW`1ll*dTPRADvAEC6MJegXX% zizbAHEWz;AQnh+ik*uIzCS-&vO3h4Cn`WF zG&+OHGB9MrhW=QH019DWdXm4v@w8nYjo?{ty3v-vn_?#=$x|r67wMkzb-*EnBV*5+6 z{g$GQC-SOqJ?bwmz0mM@AUt+;W`0T8#m0_TuD%hnq^zxb%P%!`4x)fUfoN$uOiTvd zSqH&#wh0X)NU-A39oBE=lL)Fp>Ute*qFUAIIo_dyXpK{!ErSHWv~xaJ4?z@~#`uJ} zXr*oA5dJd)`}YutJAgyg#YBMzxZiy*dHb}oV`YDHIB0TFB=kt@&P!@sThaOaZ7}{K z^2VeQh4nz{)OC$}+_L(^{~D?k62O6-7T7@m|9AJF?>h20TAP~Efz@8Vh%YU-w=6jw z+x`!Sl1-}NzkJV}-*dn^QSl)6NlRcC0oog@tyyAMuJzQudkO14%bad*?pNUKn>E~j zhS?pkE#f$Pp3@3h*@2&S%^0qk^sczRYUQeeJMmA^O!18`XPrNF=tSuc75fivP00(( zeHylScyUtGi12x5MB&oFboWLNmB_+>{Z6Btlf~yF4)wMWH*USD9Z0$R!cq10+yG_E zG`sl=+<$0VR}}x~^Nd@|2@o)}f^yB}jna((E6!ejvv`BQLNYi+SM`o$Pa(kF6S8Ob z%hxre;ZHjozOTx;I#P69Tru1b?Z&>_+OMd@%gV}!h24XnUij*1PWHga-~a(SdI@m< zaKCC@L|-}4tm{)tVYpPSfgcSOH;h>29$R@B}e%)ImxYB#EME~B9V3mE#mVC}+QijKYm!qkHf+qy`sUm3a&oui>nvFUd6oz}MYM~^!?pL9L#d-1Y=;ML&J z>o*X#1p=u0!8Ja+ew7!T4*KE1B=bTjNo3+Ejcz%cVd5FglqB%19M-e=UT{WL8CW}p z^a`TXb%qmdoLX)B$kcS1{kg=_|EJ8x6MLW6M+2ol`@5C%vZ`JkZE5kD(zs8>_T{b8eezqgy%$jNf@J?%{U)nxgQMdDT$EKeHYXpVuuYV~Sde~l_HDVk5c}wx-*C)&9 zuEP(0>gn9;o>$i$iDx`_w|UZa@S{?t^vOJve;A;Nu{7>wHVgnAI zT)T7a*^!NIW@~(ROs+j}zo{#AW|zfWSGSzic{!^IkTvt&%%Qyr2je%z?XdF8Z+rMl zd8H3)O5gUwZj@AXWohXd;n{$u`fJxOOsjA_lAo=t`eIXsuPThQx$ses&z6bY?YG5l(O?Tpq?w!zuh6#U%G zOt;f1S4CERKKq+Jl}Rn~o~q)_RkV3O&RO75dBwe<=d%ZIYkdTlB2RbM?7%~phyLBU IhDS928~wM@0RR91 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/go_dis.jpg b/hrmsWeb/hrms/includes/images/go_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12cf257540b1b6ee3a48f030d0b2ed1958ce666e GIT binary patch literal 2825 zcmcIl2~<;88on<(BnBQy1fqt=Zav41RjGo21W=JpKnpozu>oGk?y#@8w^=|Ni&?A90&_ z2#gnr{lx%*v;bKE0P&281;yc7ToZ?@Fvl6Qz#K3C0O~Wt5UB=NBx>cj5g-W#~W-_85m>C-j^%Zbu=!}q2&hBjm;~WPlK|mzj$8?-^ zoayg5x=2H#k(Q|?N=>X({b3{(JoVot>J#YY{~*)VfW`1ll*dTPRADvAEC6MJegXX% zizbAHEWz;AQnh+ik*uIzCS-&vO3h4Cn`WF zG&+OHGB9MrhW=QH019DWdXm4v@w8nYjo?{ty3v-vn_?#=$x|r67wMkzb-*EnBV*5+6 z{g$GQC-SOqJ?bwmz0mM@AUt+;W`0T8#m0_TuD%hnq^zxb%P%!`4x)fUfoN$uOiTvd zSqH&#wh0X)NU-A39oBE=lL)Fp>Ute*qFUAIIo_dyXpK{!ErSHWv~xaJ4?z@~#`uJ} zXr*oA5dJd)`}YutJAgyg#YBMzxZiy*dHb}oV`YDHIB0TFB=kt@&P!@sThaOaZ7}{K z^2VeQh4nz{)OC$}+_L(^{~D?k62O6-7T7@m|9AJF?>h20TAP~Efz@8Vh%YU-w=6jw z+x`!Sl1-}NzkJV}-*dn^QSl)6NlRcC0oog@tyyAMuJzQudkO14%bad*?pNUKn>E~j zhS?pkE#f$Pp3@3h*@2&S%^0qk^sczRYUQeeJMmA^O!18`XPrNF=tSuc75fivP00(( zeHylScyUtGi12x5MB&oFboWLNmB_+>{Z6Btlf~yF4)wMWH*USD9Z0$R!cq10+yG_E zG`sl=+<$0VR}}x~^Nd@|2@o)}f^yB}jna((E6!ejvv`BQLNYi+SM`o$Pa(kF6S8Ob z%hxre;ZHjozOTx;I#P69Tru1b?Z&>_+OMd@%gV}!h24XnUij*1PWHga-~a(SdI@m< zaKCC@L|-}4tm{)tVYpPSfgcSOH;h>29$R@B}e%)ImxYB#EME~B9V3mE#mVC}+QijKYm!qkHf+qy`sUm3a&oui>nvFUd6oz}MYM~^!?pL9L#d-1Y=;ML&J z>o*X#1p=u0!8Ja+ew7!T4*KE1B=bTjNo3+Ejcz%cVd5FglqB%19M-e=UT{WL8CW}p z^a`TXb%qmdoLX)B$kcS1{kg=_|EJ8x6MLW6M+2ol`@5C%vZ`JkZE5kD(zs8>_T{b8eezqgy%$jNf@J?%{U)nxgQMdDT$EKeHYXpVuuYV~Sde~l_HDVk5c}wx-*C)&9 zuEP(0>gn9;o>$i$iDx`_w|UZa@S{?t^vOJve;A;Nu{7>wHVgnAI zT)T7a*^!NIW@~(ROs+j}zo{#AW|zfWSGSzic{!^IkTvt&%%Qyr2je%z?XdF8Z+rMl zd8H3)O5gUwZj@AXWohXd;n{$u`fJxOOsjA_lAo=t`eIXsuPThQx$ses&z6bY?YG5l(O?Tpq?w!zuh6#U%G zOt;f1S4CERKKq+Jl}Rn~o~q)_RkV3O&RO75dBwe<=d%ZIYkdTlB2RbM?7%~phyLBU IhDS928~wM@0RR91 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/go_dtl.jpg b/hrmsWeb/hrms/includes/images/go_dtl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2eb8fc84afe3bb300fe00299160e052f90634ef GIT binary patch literal 2870 zcmcIl2~<;88on<(BqTf%R+WTZodP18Qp+kJXa$1EQY$7Tgh)&v2~a#DD!5`tMG(QM z9z><+s0Z1^S}6(wp6U?=#03yk5EaW#2SzgYC5YPToOb4%`E%}lFaP@e_rL%DRPCy# zKsV4Yzz-mhJP}U-R0Cv};5eC5rihaza2)LxfhFDnU*ZR}xk80ZlB5*NqyUmG*Z_9~ z{$`$-7D30zFM{JQk@0yF&ML7ePAQg(I9^hbLAgjlMunphS9=c!ph zbH=7RVcb<5S+Y5-XR!7^OMONECUu$<#BlnUiMB`mHtPk|xCup??8 zH2u}W6i&EUDv+fpIBVjPHu0rAu>=78cbE=b?-8v6fXspX?GPWL`lwrQ2)rLFU~S$4 zx|cx47XraHXosjCgG@l9P$*gynwAy~rD{`AeFlxj&^KZ-^_ff~l%}Schvv_3cSMIu z)uHR?(&@S^I-SnKHabgVg8mr?s-FN#fsl>yh&jNa2p&aL9q<5fsyf62q9kJ74$n+O zc!1ytL=u^zrA>tm{izTEIQ)B|E`Hp5EvQ>8IVE0gr!r9>Dr3~xkht~*vuNNs@4DW^Y2#3ouZ`@CM zHsWWKb82UKZe7ds(bE<6tuMyb#wPDNa;EZTTkp85f4C@RcV2N-!-KvF6yR_WEkTWm zOd>j~A(%Pn5g>v@b0%@|_CqWTK`pm=(9x3LE#Hyt6RIDha2m2AVF1Y1&e!ij5JiRp z-!K=YuxA#+e@0;Q0fOogpyAaqQQ!dvrc2+&6cs+(5oLR;GR-8`+T#lqXx!M{HTL?o z#orm5-fUn$t>0wpF|Ttp{d{tp3S6)i1yAq%>U)M>dj9A06gB>nL8B-9NB5;hbeMKl z?{kzp9J@cz)F><7|Hx=g=!z-!xkKCfer$OzJ%4OCZI1Yz$3Hi>-pFE^G3O`d*WG!Y zRcuJWua@WREeSJa57>3J9=ISX>3lM`*X3&7f#!$~lVMVyt9a7>>!@M0zq#$@6gug0 z*E1%oz}7wg%Go!0n{&etO3s}7Vr9yMX@g(-!Y^7)Y*|0J%sm5tIHPI(^UDjzdb)ek zRd-))t$MdMJv>G}Sh@ezv8woT1J{GMRiI$}hnIG^w};y1H%gr^FV(3Ys@T5sr#l&= zxo^)+7d+LAx?0?sR=RE(yQm?3!gkrUE`zEx@p#u+cBsPP(&LuNbH3IkqYi?lwGCMV zY0}Zh6*b-$@7Z;1sm#ur4C?e~OaJ+)3S9kqvPL#p^KFglp=R=!nXDDc74S2}iIHte z;3>s?u|%v)<%p%R*suX%aH;P$19$-e96)>^1RM|y;^4ayE`|CH4qd?f0}T#v0d`;! z=1>!xL<!Tbi3%&NXG5VonffN+yx%6bjvxg|bZlYx=$JuLJCV z>wDPtv#qVF0~NXehu~p*hJTf{qKJn{6CLwG#0`Qt~HapRNlNX#Bnvp@q@dFUQ@Og2C5r~N5|JqCymrMG(_(i?zFAjeE!t@>UY;8 z3w=&-{eEdHpLSdK_{%BJddA)*&6{47MTRTTalUS2d(hE@=;GV`-1sP2roFr6%l?b; zZnUkY)vXr~H{CZc+iO;}melogLHm&f*1^)l@phK|6R!srMXa;c4oO-tveds|yk_M? zI~7QL+E&6n)%DqVQB1QtbxWN4!dCM^71(2Yva;ng`OQefaDyYUiL2FJn(fy6d{E*$;#ea2d;JmJ;{C1XB4<*p`S80CwHLz zRc&idPfLaP_{yQFZb_$8RaWHPOzMTGh8H<<-E}v$%v_T<1QCX!9XGn`4sAVg*7tPh zH{p?g9p@HWd=-1p!3IyyUwv&fB*^Y|DN8)%9GfRkGzwJYIX;Ot1efO8>-Sx-q zcYW?!MU#|w^aSAl#upo}zU$ej?V8lY*&lva8L~dvMn9Apa;NAAw-WBR^M~tH5B~)l CE!^4w literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/go_dtl_act.jpg b/hrmsWeb/hrms/includes/images/go_dtl_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2eb8fc84afe3bb300fe00299160e052f90634ef GIT binary patch literal 2870 zcmcIl2~<;88on<(BqTf%R+WTZodP18Qp+kJXa$1EQY$7Tgh)&v2~a#DD!5`tMG(QM z9z><+s0Z1^S}6(wp6U?=#03yk5EaW#2SzgYC5YPToOb4%`E%}lFaP@e_rL%DRPCy# zKsV4Yzz-mhJP}U-R0Cv};5eC5rihaza2)LxfhFDnU*ZR}xk80ZlB5*NqyUmG*Z_9~ z{$`$-7D30zFM{JQk@0yF&ML7ePAQg(I9^hbLAgjlMunphS9=c!ph zbH=7RVcb<5S+Y5-XR!7^OMONECUu$<#BlnUiMB`mHtPk|xCup??8 zH2u}W6i&EUDv+fpIBVjPHu0rAu>=78cbE=b?-8v6fXspX?GPWL`lwrQ2)rLFU~S$4 zx|cx47XraHXosjCgG@l9P$*gynwAy~rD{`AeFlxj&^KZ-^_ff~l%}Schvv_3cSMIu z)uHR?(&@S^I-SnKHabgVg8mr?s-FN#fsl>yh&jNa2p&aL9q<5fsyf62q9kJ74$n+O zc!1ytL=u^zrA>tm{izTEIQ)B|E`Hp5EvQ>8IVE0gr!r9>Dr3~xkht~*vuNNs@4DW^Y2#3ouZ`@CM zHsWWKb82UKZe7ds(bE<6tuMyb#wPDNa;EZTTkp85f4C@RcV2N-!-KvF6yR_WEkTWm zOd>j~A(%Pn5g>v@b0%@|_CqWTK`pm=(9x3LE#Hyt6RIDha2m2AVF1Y1&e!ij5JiRp z-!K=YuxA#+e@0;Q0fOogpyAaqQQ!dvrc2+&6cs+(5oLR;GR-8`+T#lqXx!M{HTL?o z#orm5-fUn$t>0wpF|Ttp{d{tp3S6)i1yAq%>U)M>dj9A06gB>nL8B-9NB5;hbeMKl z?{kzp9J@cz)F><7|Hx=g=!z-!xkKCfer$OzJ%4OCZI1Yz$3Hi>-pFE^G3O`d*WG!Y zRcuJWua@WREeSJa57>3J9=ISX>3lM`*X3&7f#!$~lVMVyt9a7>>!@M0zq#$@6gug0 z*E1%oz}7wg%Go!0n{&etO3s}7Vr9yMX@g(-!Y^7)Y*|0J%sm5tIHPI(^UDjzdb)ek zRd-))t$MdMJv>G}Sh@ezv8woT1J{GMRiI$}hnIG^w};y1H%gr^FV(3Ys@T5sr#l&= zxo^)+7d+LAx?0?sR=RE(yQm?3!gkrUE`zEx@p#u+cBsPP(&LuNbH3IkqYi?lwGCMV zY0}Zh6*b-$@7Z;1sm#ur4C?e~OaJ+)3S9kqvPL#p^KFglp=R=!nXDDc74S2}iIHte z;3>s?u|%v)<%p%R*suX%aH;P$19$-e96)>^1RM|y;^4ayE`|CH4qd?f0}T#v0d`;! z=1>!xL<!Tbi3%&NXG5VonffN+yx%6bjvxg|bZlYx=$JuLJCV z>wDPtv#qVF0~NXehu~p*hJTf{qKJn{6CLwG#0`Qt~HapRNlNX#Bnvp@q@dFUQ@Og2C5r~N5|JqCymrMG(_(i?zFAjeE!t@>UY;8 z3w=&-{eEdHpLSdK_{%BJddA)*&6{47MTRTTalUS2d(hE@=;GV`-1sP2roFr6%l?b; zZnUkY)vXr~H{CZc+iO;}melogLHm&f*1^)l@phK|6R!srMXa;c4oO-tveds|yk_M? zI~7QL+E&6n)%DqVQB1QtbxWN4!dCM^71(2Yva;ng`OQefaDyYUiL2FJn(fy6d{E*$;#ea2d;JmJ;{C1XB4<*p`S80CwHLz zRc&idPfLaP_{yQFZb_$8RaWHPOzMTGh8H<<-E}v$%v_T<1QCX!9XGn`4sAVg*7tPh zH{p?g9p@HWd=-1p!3IyyUwv&fB*^Y|DN8)%9GfRkGzwJYIX;Ot1efO8>-Sx-q zcYW?!MU#|w^aSAl#upo}zU$ej?V8lY*&lva8L~dvMn9Apa;NAAw-WBR^M~tH5B~)l CE!^4w literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/go_dtl_dis.jpg b/hrmsWeb/hrms/includes/images/go_dtl_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2eb8fc84afe3bb300fe00299160e052f90634ef GIT binary patch literal 2870 zcmcIl2~<;88on<(BqTf%R+WTZodP18Qp+kJXa$1EQY$7Tgh)&v2~a#DD!5`tMG(QM z9z><+s0Z1^S}6(wp6U?=#03yk5EaW#2SzgYC5YPToOb4%`E%}lFaP@e_rL%DRPCy# zKsV4Yzz-mhJP}U-R0Cv};5eC5rihaza2)LxfhFDnU*ZR}xk80ZlB5*NqyUmG*Z_9~ z{$`$-7D30zFM{JQk@0yF&ML7ePAQg(I9^hbLAgjlMunphS9=c!ph zbH=7RVcb<5S+Y5-XR!7^OMONECUu$<#BlnUiMB`mHtPk|xCup??8 zH2u}W6i&EUDv+fpIBVjPHu0rAu>=78cbE=b?-8v6fXspX?GPWL`lwrQ2)rLFU~S$4 zx|cx47XraHXosjCgG@l9P$*gynwAy~rD{`AeFlxj&^KZ-^_ff~l%}Schvv_3cSMIu z)uHR?(&@S^I-SnKHabgVg8mr?s-FN#fsl>yh&jNa2p&aL9q<5fsyf62q9kJ74$n+O zc!1ytL=u^zrA>tm{izTEIQ)B|E`Hp5EvQ>8IVE0gr!r9>Dr3~xkht~*vuNNs@4DW^Y2#3ouZ`@CM zHsWWKb82UKZe7ds(bE<6tuMyb#wPDNa;EZTTkp85f4C@RcV2N-!-KvF6yR_WEkTWm zOd>j~A(%Pn5g>v@b0%@|_CqWTK`pm=(9x3LE#Hyt6RIDha2m2AVF1Y1&e!ij5JiRp z-!K=YuxA#+e@0;Q0fOogpyAaqQQ!dvrc2+&6cs+(5oLR;GR-8`+T#lqXx!M{HTL?o z#orm5-fUn$t>0wpF|Ttp{d{tp3S6)i1yAq%>U)M>dj9A06gB>nL8B-9NB5;hbeMKl z?{kzp9J@cz)F><7|Hx=g=!z-!xkKCfer$OzJ%4OCZI1Yz$3Hi>-pFE^G3O`d*WG!Y zRcuJWua@WREeSJa57>3J9=ISX>3lM`*X3&7f#!$~lVMVyt9a7>>!@M0zq#$@6gug0 z*E1%oz}7wg%Go!0n{&etO3s}7Vr9yMX@g(-!Y^7)Y*|0J%sm5tIHPI(^UDjzdb)ek zRd-))t$MdMJv>G}Sh@ezv8woT1J{GMRiI$}hnIG^w};y1H%gr^FV(3Ys@T5sr#l&= zxo^)+7d+LAx?0?sR=RE(yQm?3!gkrUE`zEx@p#u+cBsPP(&LuNbH3IkqYi?lwGCMV zY0}Zh6*b-$@7Z;1sm#ur4C?e~OaJ+)3S9kqvPL#p^KFglp=R=!nXDDc74S2}iIHte z;3>s?u|%v)<%p%R*suX%aH;P$19$-e96)>^1RM|y;^4ayE`|CH4qd?f0}T#v0d`;! z=1>!xL<!Tbi3%&NXG5VonffN+yx%6bjvxg|bZlYx=$JuLJCV z>wDPtv#qVF0~NXehu~p*hJTf{qKJn{6CLwG#0`Qt~HapRNlNX#Bnvp@q@dFUQ@Og2C5r~N5|JqCymrMG(_(i?zFAjeE!t@>UY;8 z3w=&-{eEdHpLSdK_{%BJddA)*&6{47MTRTTalUS2d(hE@=;GV`-1sP2roFr6%l?b; zZnUkY)vXr~H{CZc+iO;}melogLHm&f*1^)l@phK|6R!srMXa;c4oO-tveds|yk_M? zI~7QL+E&6n)%DqVQB1QtbxWN4!dCM^71(2Yva;ng`OQefaDyYUiL2FJn(fy6d{E*$;#ea2d;JmJ;{C1XB4<*p`S80CwHLz zRc&idPfLaP_{yQFZb_$8RaWHPOzMTGh8H<<-E}v$%v_T<1QCX!9XGn`4sAVg*7tPh zH{p?g9p@HWd=-1p!3IyyUwv&fB*^Y|DN8)%9GfRkGzwJYIX;Ot1efO8>-Sx-q zcYW?!MU#|w^aSAl#upo}zU$ej?V8lY*&lva8L~dvMn9Apa;NAAw-WBR^M~tH5B~)l CE!^4w literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/help.jpg b/hrmsWeb/hrms/includes/images/help.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d5caef8a888c659e3ab3b5353bd5344011caf20 GIT binary patch literal 2879 zcmcIl3se(V8orY^5E6z2iKrn26m{zZ0%)xj0eM-Gw_&Lj0}LTHB#;as)<+f8qEL?% zEFxu#50F}QQ31unx~PR(s|bR;svuTSkwOH-qIC97f>68N)9#+Lf6l!#`5*Uw-+%A_ z579z&0<)D~zFq)5)iA#)!JBfyht*CAz1A0>qqS~4#Ko*Wg@Ons{j-; zupZ6`{Ea_JFPf>qD@^3AR7c8`qE!lcEUr+=MQ$p&5`)fw28U4ZH`RR7&rOLd@Wkjh zJ*a~w0UCu07kMdVaxIKAA{QV9(c_^Rb3D}XDH?JQy^q19x7nNVSIXjLDol%s-dqG2 z!*GL8^sI(0J=99IM&u(?#^7odCJM%I5;M7@4_FWr1O1h7X6S>EaZTaDya|mXv>+fH z&aZu(^_qE;8vRZ$#&-(Q$W+=GO!MoV;$hZ*SE!HRD*p$Y{tQ?Q??gp3MpA{RNwNTx z<%R(aITo6R2CWjQlQ4~D+>ty%gUyN&tW-o9q7_hSU{9I>5Wq1N4jRlM29yBuo5(wS zosidOK`KapGVTvVj~qpPJv>CADqJR)W6`gV9~r+He9Kj`6qsP&6(Vm;g=u6sJYaX3 zmb_pjenh_p+hR4AERrfz(duNaC?qy9E>a~^C;^}rkUns{Mzjh5rU>eHKzs=CtBRo@ zke?4cpPvB7Em|Fkf#{E69742%G{9!DSVkbp#MH#Zlw)ef;h6C`91fqHIDA70`ezm({s~YPggljshyevfs3=0*g$bY#R}oi; zl1^4U%$Y%`0HM(63?|FS*aQ~!n??jssIQG?0HGmN3XMW%GFWsfTLO(Jm1bk^Kz9q2 z@x%$+9U1)ng{AJcb{0X^krF4(j(QK~%&g#n`?@Ht^OVD9QfICBEF{|V@)6v{vLUn! zdv-SM%I(AlgI@O8M|Ymfx!U;S(6O>_njQ|XiAmaZps2j&PWSUg-cot;?$3)WYMXmT zP(YzTv@|^?CWG#*hhXDiPJ;*%#5}s=_WgVkL3L35fW$8HzGg?3N3cbd)=4*$K>}dT za=zREK^(D+_6&8wv91XS{~3Y(Bm|-ju&MezQQ!*h_Kt1&Vov6%^1Y5gd>1 zQ`CQ|HACgcKGz)c^{&!P+n?EIRow)bBOk*`f9k#P&TvcjuGE)bnw|*#BH8lz+Iwf4 zsI79pd4k;BlSvKoZ6$FxpG!uPRHs|coyo{8y&P6rYi~CEUEqj6|59G<^n~nXDZl*9 z`bpdRbe~jPtF|iFdrN&srFT}VHxd z&~w1J;JsOLOE2>yDnDJ&D-_P{I=RuB zxOIE<#_*=6&m{35zddi7@_6n&W_?@#Q0CgrCy z@Qaa;n)B_-n3fgR+P2QFeHHx#$R~h(^_cnxMS;+Et#sWf&fSRc(Tl@T3;LXU5~pmk zXiN^xSYLJXRr3eJwwAhMkH?&wuSL9Lx371szn1{t-zPwo^vMg?6EE6{R(;znMbCipsyeZQyd3-Ai6cyMAtY*xxwzlS3itWTgyXit}A-MpLexkIAtDwvbP!K9CZz>%UfZki69nes^xs8JxgBK`ciWB&-yb4*i z?xochu)gdhk(wPw##1Z>Q>|vsvY$O?u9LINqQ!47@mS&M@?VOt}Bs_$l#9ql)~ zV9zkL3?|77p(K;UQ5xOGfnn|z$do1U#E#ope0SKns*P+VK?4?%ntJ0Yc24(a>PTvO zW`B;@j{k|-1hGk8Z?u^q^`5QEc2_^IZ-3u&Mor1$xAvdiTw3gRW8W<)wRqjD5ASsD z3%T9dXnO9|mGZ@f-ZR`nHAaGWH%TSBPrDS$W^E`^Z9a&i{(gla+lNlwY_AQENMF#U ztJ@oSanClc(}zWm^FmhJ#@IQe*tyQl=v<%EnS5i**7?o@8#nrMef+*?AS$n>w!RoHlcHwo;+(?#uTaZ-+OG`qJK$*rext@+~JV`2kIO zqO%OC((^~zJ+TWP$aEjuBt;BKyc!I47RfB^3~nX=Rp7f literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/help_act.jpg b/hrmsWeb/hrms/includes/images/help_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd1ca626858cdb6d23ca2555f4211eeb971b64a5 GIT binary patch literal 2844 zcmcIl2~<;88on<(5CV@RY!-NIQe|8KMX1L?2q8dG1O$}nh=Bx%hCE1uGzwU7Egl&+ zv~)y9Q9+7$K$hZIDWWhAQyrv$3uqAq5!n|JmCSt!qINo`ojGUzoO|EPzufzM|GoeJ z)OXZB0YiTuKOcZVS&6I!K;2JwUK58aaYY=SfVnJO4BWi@R+0O4gT)G5nxvHAG62O8 zY=koce=|?Qi=uDpvkntT@hG7b3y{RdDJ8O4%u^OC6+>r0fx}YcXJ+)y&r_sSG_1x=c(@doW4=OZj1rfLu@JG6z)bAu3l_!1Kz}KmX__EpMsqUf>sgI6v>+e? z&ToB|YBUSpX*4@c&g`^SE|e)^#PaudN`P7aMIk?htNb5qnloU~1W6K+n4k(zlVAZz zE42e?b8M*}8XSP(Tf}ntj3aS^TAMj7L@J5aMkhk0mOWtxz!VNMI2bU8Vju+xAQA{c zG*Cj_+x)}VS$SVa#1ZkoA{quL>c`_@p)#c~HdZWpdkv788^SRO5UOCJ{k$=OSSFSW zmGGdwgbL!K5j+sh8cgnLaWWPzk%{nR1-3RWDLzUjlt=*}XAwSdyhRiM03CyRImCyk z->V!F0(ttva~c3FPZ1s^2BI%u9HPDtb^<1Y!O&qab#$1ho~|CsHDEFgxTb72m(4as znHrgSX#f0tM)dXc^jZ3bES4dM#bR-YiN(=|puc4S_4fc}K*(lf#0HR1gp4BU4wwLv z`WoT^QBsM@hdI*<86YGIl}2ai=<31Z{?Ld368Wvs5FiwUOrnsebQ*(7X1YKlN~TyF zIZ-`>glwC{bY~jp;K@=iTRU!WZIsIrc}5eDZht6bsB<`4vDElf*^as1hu4buSM!yw zCbvT$iAOH(tZPo{8uf8Fa(Y*J_O%}$kDaNw-tuHTEN08@qh~AYTe~Ng3BqHO_Z%yz zYG~_ufdUcgi@j|%KiY3GL zGy(v9?$WEbA&7hv5kJ&bDSk8y;XfmAcn3j!4=~A^JyGBRI{MzE=FZz+Qn}B$*r@e{ zxkqYWu0?d;ipLR+RuvDuX%*)^Xw~FC#|Hz|higXlBAQ+wptYcX{^Ouo4z?%y!2F`W zY<$t)lYKI;qb|#+F4NsDz3a#+`3d*!E?K7ezuSIu^@if(DW=CyY<7*yYuRW1rw46g z0_NvwlC)z_m*>vu^WoCq86&^_T+xUFL3VQ<3g%Yo{DHc$O9zV-Qt zOTriK3+6}*zj{D#x;Hqs|FbJMOZj-+tA#w?t?G;dw!_Q#Ioo>|dH6~C`gt7_-@4`Z zzv+72KmE;)sn?OVd3kr5+Xt4Xs6qZ{+Tp&)@U-HX)U%fdPTlgll=ZAMmpYK#ed*~$ zYklgXz}}K8{x9#^4Ys{{*rokYPEKsgMBlPK9~0TB#w!VlWbBbleQ#( zuG+d|=dRs*_I{ap=#Ugx8($4|O@p7uT)9vK}QpLj9(atgw>LI7FYzGgev&v?Nep=}X#f)_$c zCWxaHs zJ6<2Ol`%Xs?e}}G8aLgKXt1b1=hl9(s$>5rGHF`I#vb(~w3ii@@`s=JkGzN@tg z?;PZ;FHUyxwfXeGmGw*k(%e3La6{FONZUdlf}ZtINvEYtHppnN3@EOlI)gl$d26m=f%)d64(hxA0wIytV*mgE literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/help_dis.jpg b/hrmsWeb/hrms/includes/images/help_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d5caef8a888c659e3ab3b5353bd5344011caf20 GIT binary patch literal 2879 zcmcIl3se(V8orY^5E6z2iKrn26m{zZ0%)xj0eM-Gw_&Lj0}LTHB#;as)<+f8qEL?% zEFxu#50F}QQ31unx~PR(s|bR;svuTSkwOH-qIC97f>68N)9#+Lf6l!#`5*Uw-+%A_ z579z&0<)D~zFq)5)iA#)!JBfyht*CAz1A0>qqS~4#Ko*Wg@Ons{j-; zupZ6`{Ea_JFPf>qD@^3AR7c8`qE!lcEUr+=MQ$p&5`)fw28U4ZH`RR7&rOLd@Wkjh zJ*a~w0UCu07kMdVaxIKAA{QV9(c_^Rb3D}XDH?JQy^q19x7nNVSIXjLDol%s-dqG2 z!*GL8^sI(0J=99IM&u(?#^7odCJM%I5;M7@4_FWr1O1h7X6S>EaZTaDya|mXv>+fH z&aZu(^_qE;8vRZ$#&-(Q$W+=GO!MoV;$hZ*SE!HRD*p$Y{tQ?Q??gp3MpA{RNwNTx z<%R(aITo6R2CWjQlQ4~D+>ty%gUyN&tW-o9q7_hSU{9I>5Wq1N4jRlM29yBuo5(wS zosidOK`KapGVTvVj~qpPJv>CADqJR)W6`gV9~r+He9Kj`6qsP&6(Vm;g=u6sJYaX3 zmb_pjenh_p+hR4AERrfz(duNaC?qy9E>a~^C;^}rkUns{Mzjh5rU>eHKzs=CtBRo@ zke?4cpPvB7Em|Fkf#{E69742%G{9!DSVkbp#MH#Zlw)ef;h6C`91fqHIDA70`ezm({s~YPggljshyevfs3=0*g$bY#R}oi; zl1^4U%$Y%`0HM(63?|FS*aQ~!n??jssIQG?0HGmN3XMW%GFWsfTLO(Jm1bk^Kz9q2 z@x%$+9U1)ng{AJcb{0X^krF4(j(QK~%&g#n`?@Ht^OVD9QfICBEF{|V@)6v{vLUn! zdv-SM%I(AlgI@O8M|Ymfx!U;S(6O>_njQ|XiAmaZps2j&PWSUg-cot;?$3)WYMXmT zP(YzTv@|^?CWG#*hhXDiPJ;*%#5}s=_WgVkL3L35fW$8HzGg?3N3cbd)=4*$K>}dT za=zREK^(D+_6&8wv91XS{~3Y(Bm|-ju&MezQQ!*h_Kt1&Vov6%^1Y5gd>1 zQ`CQ|HACgcKGz)c^{&!P+n?EIRow)bBOk*`f9k#P&TvcjuGE)bnw|*#BH8lz+Iwf4 zsI79pd4k;BlSvKoZ6$FxpG!uPRHs|coyo{8y&P6rYi~CEUEqj6|59G<^n~nXDZl*9 z`bpdRbe~jPtF|iFdrN&srFT}VHxd z&~w1J;JsOLOE2>yDnDJ&D-_P{I=RuB zxOIE<#_*=6&m{35zddi7@_6n&W_?@#Q0CgrCy z@Qaa;n)B_-n3fgR+P2QFeHHx#$R~h(^_cnxMS;+Et#sWf&fSRc(Tl@T3;LXU5~pmk zXiN^xSYLJXRr3eJwwAhMkH?&wuSL9Lx371szn1{t-zPwo^vMg?6EE6{R(;znMbCipsyeZQyd3-Ai6cyMAtY*xxwzlS3itWTgyXit}A-MpLexkIAtDwvbP!K9CZz>%UfZki69nes^xs8JxgBK`ciWB&-yb4*i z?xochu)gdhk(wPw##1Z>Q>|vsvY$O?u9LINqQ!47@mS&M@?VOt}Bs_$l#9ql)~ zV9zkL3?|77p(K;UQ5xOGfnn|z$do1U#E#ope0SKns*P+VK?4?%ntJ0Yc24(a>PTvO zW`B;@j{k|-1hGk8Z?u^q^`5QEc2_^IZ-3u&Mor1$xAvdiTw3gRW8W<)wRqjD5ASsD z3%T9dXnO9|mGZ@f-ZR`nHAaGWH%TSBPrDS$W^E`^Z9a&i{(gla+lNlwY_AQENMF#U ztJ@oSanClc(}zWm^FmhJ#@IQe*tyQl=v<%EnS5i**7?o@8#nrMef+*?AS$n>w!RoHlcHwo;+(?#uTaZ-+OG`qJK$*rext@+~JV`2kIO zqO%OC((^~zJ+TWP$aEjuBt;BKyc!I47RfB^3~nX=Rp7f literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/insert.jpg b/hrmsWeb/hrms/includes/images/insert.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6541516d0eb7975109dfeacb3a6d4a56df73114e GIT binary patch literal 2793 zcmcIl2~<;88on<(Bm`a-2plB|;L5l_z!jGeWE&S25m(xTyo5-|gCs1WE(j=&*6|>q zqjq#C6-Mclg9@m$Gi6chI35>J)D{(FQ7cq7*|eGa5=3n~r=2-x{+xT?d;fC(@4NT@ zf6RBykAOpHU`QZ9pe#j}0$}c|J#x>s1f`IjK ze&ge7(addVaWQ`IdsKV1ESOC&e z>j2h0cD0L&ST4d-Fui`vkvKuC&4m`J)x=t(6QI({o-hL-fWsLM8VCV8U;r4<10(!? zv-j|IT;A0YF+}XIhy^{0hR9^1D4kKRR%6OHR{$Bi9XzMyaueL-kN{B-ro;4dBRph( zxq-N31P8>j28+KEOBF?HbV@wcAX*)loS@LjHCh13NrVp^ZxAg9fG&diD2NX+zf(0N z1m2Tict+iTEmh(Q3@9^T9Af?!WCIq1!LVVlY;0I4)0TH;tEDSnluc!H=j>NPP5}H)Zrm2O?jz^u!u`9X~ytH8~(}wQ^Z)k#UaGt*BP4 z_e^$OL-OOkz$y8k?L1ph-`LiFqT=H1_JK93lwAjlD=*#YcsVyHTAiA6sHEz0Q|BNG zNF<1sV!=eGQGG2C#9kZ|fL)-@hs-D=26zy%O&gH@eI* zVR3cyTGk;{)gfspAN3r3%`X=OI?ywg=howw&m8y5+Mj(jC%x+_c5~a=whehPPT^(o zT?^M4wT-WZ5obot;L0ZNzGJ0_@>0X_lVK&3Gw;-~pGq!N<#ee!s{5P@SALKg^I)-f zCfe(q_~4U`8$Himx4(Ac)x+B*<{J$o*9TIb_ey4G%(v5hJAFa=K4DP&{;I~!ZESi} zVOQ+btEZk_P4Su2}r0Ru+jVX8-&$g&&t~M)#CP^=z+BL^A}YQY~7xJeErDz zfmlh`if0p76c?92D4J$sm;Yb}A-Th!$8S4Sd|}wLQ<=A9Q+Ha^&;;RN=|7@tUPqhn zS-XnZWeuh`z`qz#ES``kH)<3bt;T2)X>=-_xTH~VSnjJmkOC#ZfdV!c5eNfu@ZAW9 z!SV(hD&YQ#hX~98Gr??PL2GUrD>Q6bkSIJ^PNal-K)3b^1i)&R0VvOZO`GL_9)7AoZ!Uex$sd`AQrexoG26uxlV2#Zmu2^T!pU0A_xqn)97pl zgYC*gd9MGp{8B~N1L4nV8J6;Rxti-ig##cVWLUCfDkK2Cw?aFhpj3|7OG@L0%js@O zJXkV?40r$X8a}KU4~asbX=Cf?Bye__G%-M>{ zs&nTr)YjEsyma}SEC0OJ(0Kb!)7^XbTUsBtwRdzrdHSrUx37QT<>1ip2!t&}0NL82 z#=F!{c)>nkZ3A?I7eY!Uh@%v$*o(%IhSTLqTsQ9>44yyiMm09>l86_4h5n|kqlZt+ zq#lBrh1qW-mia$18z=Ub*L$s_fBPO+zrD3#G7VT5f5VHMcU}76%RRX3 ztKfr=uZ_kO3P)|Q>{peI+Z~f_J{+n@O*YIrSXov1X#VA^0%hlM#fp@XJ11K=Y*Kh` z6^8!UQ2t54rCyCZD#J{(G-J^XTUOy%^&O$Q^}AHJA0 zl-d*e;}2^qZfselZojT?aXZgYEZqHQ0s37}ZcJ6y2fs^uxTdje%R0e@hSu`N=N~8W zch(K(q=aVyZ-(DT>Bh2>!DkP@drdVB?^}?Vn9u*Ba^dVVhLzo&N4LZcnNnM)Y%)lL zkA?@oT%~=^+xV9!Qa>H}k7;gSF6tNZHG`;(me(4;;hcwzvs<0ZFWAA%NI@@o-P+?h zPsN|s&~{prux;lmo0X;2i+E7jbwWDYwp33`+TqRwwv$$8{yEcs{jB1 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/insert_act.jpg b/hrmsWeb/hrms/includes/images/insert_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7da95ed0d472811211c9654353104b2cae94f56 GIT binary patch literal 2875 zcmcIl2~<;88on=kAOs#sWKkikYHd{vn=3+CM5#qE#_C{A$Rk8!0$JDwCnJa`Vx6L5 zbzDY~&1!pG5SNY)6md|i0t&Jzs3?_XWDytC*ZUH{+UcBjdQShGd*92y-S4~i{{O@8 z;H|)FL2zg=K%mS+<^h0r(`Sdrs@tU8V_m@*Cc284c0?lz0Sv}&bZr%CRMeuz>nl_>dP3VEzfp_23cRdOW;odE?72cw^z^*cX*rB0#K%ii}O z_nU`n6e=A*SSgWfVH}f4KnP;QLos6u)p5xhVhy8@$z-%mu;MO|#7R_`7URF41en2a zlaP$8p4kZ1O0|YRU!siBsZ|(164Mcwi52IAsWCCoUkPWLF$fvf9NfKUR5Kk~5U?E1 zBR*b6%}4Jv#+6dT!y+Vc&RN-k7EC6Yq zX#mq6J6MP!!uaY0OrsfgBu>y|v!_KW715?>Jye?56J`Kx;jn|l41@v|&;kr-fDU{H zBp@0-jVr|0LVKCA2>!3g#ke4Lwyp& zhu}Y{9uflY%Y1lNJ%H^mQ%f-*`zwq?@FuVUuow&mlfhy#S*W?0Im)wSu`GGE91f4e zu|-)%8Ge}l{Cq|%%*`#>7FKMw6_?FsbBT$~HHDzRB?0~~fHELtJ2K)7NGL)^5xfO% z012-^{2)pyQT=ewOhN_-i9)5(8B8;CSm5s)5kMl37_9(8LC7QuiAtw2sAQG^8c{OE z$=ZYJzgWU?j$c2W#{J^p@cSPMr*ys96FKi9=LspET}wB z=WSCXx{vjp-0)qk{y~56gdK-7PVKC?^>84+!eHs%(buB>}B=o2EACuZ&{ zEWKR+_&EwlB#4$`#6+i2y^Ii?Jgg}YLA*1EI(_{YTmnH^MD#+Ny5dJrU3GX1_jetcqu89Ia(9+qG{LhcJ9x2$O>Asyk z8yV`!xOTpiUgzUy_$u0v)7W+~;kM&ZpHFe%yH=a6JY8^V|M$5`uSI*ad%ju}SyX7( zz>1d_YSV@G<1PMzgE0D^*Il_MxGvn`+bUr$bQkRDyU|qRm&cy^iOsV=HSewTeb~D9 z`Wz;GV9waiq3fAJuWHvdc(v*6+XnX?J!5h1z@ZP1zQsYGIPBY|SyP?6>UQ0lSarB0 z|Cr!tPjsm;(cqNg+5TeEnYOOaqthI}AJ;s$b+Gha%gZER@lbmDmTlD+&%RmYFl7RM zv-Z`EX9>-Hf@$fCgey*8*;iOpJ&87CFP3LR0 zHjJE`2P{v`!GXM~IPT4Z=Z1w%vDl#Dlg_^S*U#%NeEnwGwV}wA%t%F%*WElt>evqr zufn!osPnqGur?}nXa9-Nl#9jPPYvQ893L9}<;CLAi zR+Xzjs!3y-jj^${vv+f!Fmcico?hNQzB6VD1A~G?=7%nbTq0U3UiRtoXc-nGk5#PJ z>huYTNy#bc8!|R#ZrYrcvwg?T++APp-g7ALaDG8yQSp%zCr_1}E-Q?+wMPj*#78o#}7|>`}zl-4L*PI@)d;bhyb#wiH-KLpYej7!qh0} z1TTb?NDxOUR3{Ibwf|zeB%b3ueLaI40Q*%L(?t;Rlqc0xn~ibxY;)@+s2Q34HezYN zi`gi#cf8(fE(3-vhuK@o!-EtGvz90IE*^oJz%{j6r0VfM{ zuAQ6P(Qnx5$nJR^+*9?k^E91orcdxAPz9WkBT+`{9A};@Ib7Q_?$JtxX~X=rRt*DhgF#MX&@mtqZg F!;h2x-b?@h literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/insert_dis.jpg b/hrmsWeb/hrms/includes/images/insert_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc26a3d5a1720c8cd939a99bdfeef11ca376e0f0 GIT binary patch literal 2517 zcmcIk2~ZPP7=D}kBCsUkDuzu2p*mV6fVTpXQ>&bU*Vu$CAsVunY^3OD6~Sw)77x6} z>4>*fDheJrRuNRRtt~2|G9G{eRjDY7*J%2711Q#xwln=R@9pM4zyH1eTiaFJZQv9g z9u*D{D8WcD0Jc_6PD~m>5|%U~15*tc2!@14eaUPU#NiggXeAAV2|#fIU%?%Lzs@J+ z#d2^9PsSpQgjQq3#u@Z!q`{=eLQHxi4xIrDE;;Sz?)=s-#7G)QtFEU9vt1ZtHke2( z+^Er8U>u)HKnX(QVF|=)A|uO8)u4UsCferfB#qW&XiT^T$9g6K0vK)=2Hn+DS2bZI z%vhwxm`V~R9E-h&r)KNMP2C!QXhFbaxOe#k(whEnHFTxt zos|;I8j~dzH@{mc1D^T^h1mkL{0}zz4tSght3iiTt-{-+x&Vw|`vUeemOCWIjl+o9 zxY^w4NZp{_=D~?K8dB`hR;aXhPniL5gUcN*0f+)7U;#KV0}@OJI$(hR=t^+!DP8wM zX{lH$$47+j0!5?LYAn%2YV>+s*EI@A=afiY$7!*fyj&G}flwt{VDLAmG&zLm{y0BB*$RO8?i4FMUgELLWO%~cnc z7)0U?-4Om6f$v)gw(CH|q-&yJG`Md*kPE=zV${MB}o^~`Rps4u+4VO&SQngMBHqF zA9XB+NYBua2CczpAhR%oDV3ncArUTmG8{n&BrpNAkj@y00cr4^gv&y|!A}^Fe8d9- zL0|wFNF}t_=7^$W!XmI(tA;8G^?++Ts&PRQV$u5x+&Z|diC=1@{+hJy_IrrPq~+zN`k;pE{7}T@x*c|DwY3h`4D$1 zf!E(y14+|O3|l2Abpi~83CY1^!v>)DJZJ|jlgMj@)5q8E^S%LrL4$`39i|==79J596&;_DI58=C(&Q8!o~lnX%&?Hw z*_mHw%~_O_yLidcWy@EuS-UQO{f3R33bt+Ev2)k%J$nxvEGa#7_{h<+Qx%n`&z!9~ zcmCp~%QaVOuU@-e-_UsHZc}s1ANL+TZh!K${vK6xBXT9o2tW&FXBh2hpwueZ~V4YyL!Mp zsq9=+*=Ke8#`inD^8BUNn5dE$7g|_ZT5)js2+Q=Swy@z-AA2@z*<3s!vKG(3H+*c% z?5bwLtLVpbbRM^ge5V{cx;ZJfe_6SOpQsQ&X#ehHW8TVjb#K~V6~+!vtBq^iliM&& zKK8-X>#eHY6^h%DqkbwqzjcmMzZ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/line_t.gif b/hrmsWeb/hrms/includes/images/line_t.gif new file mode 100644 index 0000000000000000000000000000000000000000..a89901e4784ba1578aaa077eccf873e3d82333f3 GIT binary patch literal 37 pcmZ?wbhEHbWMmL!XkcLY|Np;R(-s{DAOMLlFtN1s&kSU+1^~Fx2{-@% literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/logo_Enrgise.jpg b/hrmsWeb/hrms/includes/images/logo_Enrgise.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b88e13d45c824cf53fa47e49d539ee60639ec421 GIT binary patch literal 3124 zcmeHIc~nzZ8ow_I2}=lsMJQ5?7GdTLtL&#>2H6FXRh>#@Lh^uUNH7b5QgNejT0B@l zp@@{BV67DgP(T7AVvw}sLS;va3d&+7fQZFm%iNcMOV7-4=8yTW-#OoX_kHW{F7Njg zeTs)bcdKuJFF>*I+9nk-1_>^a$PV^J8StzztpbHi5 z4DQb=1*$zZ(~b-aqVbYYK7S<;J3*Dtgc#0YGgaBC(5PBH<_5qRsy9?^zyUlE2Q?b_ z050IeIU5K73hbeG^(5f*mAq-gDqxk~A}b*Vt@@4162z3zbT-&2B_)~vNs;t z0B}?UPel}ia0Ap7tq2{WR6~>k0b_!Plt54;lGHUcwUFOB;dhT;b?O3yfZ%ZioEnL! zu7)Q&KqnPXSg&WV<{8S+-?0DiCZa)3Y4w&5%nid@VjLX#NA7x&Hs*#;4?SZFoYs7E z@u-D&UIfeMdYRDKs3US1ow<}Q?G!zF?rV9X{Ii;qtzD02&(z-N9(l1NHYp?j+q$-% z(O+HscE*V_3(j7a^^VO^0S*Vz5|o%oL^UTRg!T4%1c+e&27R?nhjR=t1TA5Arya~= zhWJNvy}}Kd0>@_?i5LKqh12y82%^l0FM2BBN_|FI|Uqevb17y6iCl%1a?83}< zvg3alDylzGlIQiOHIj$+KfAF+1A%*EkfUFwYN;4|(u2PT$#w`&gu9qXZ6T-jUfK-q6bkcJMH9J@U*c$u~R_Fre+LvD>` zTxlwA7z~m!_ZdHU>>{p>`lU}^+U-_;bE0>#*J9=x%RDgfUSZ1kF$??5?+{k8i?FcE zZi4ys0I_H3j~)6uyQ(HA)>Ww@hi|h^u94i4Wg1oANwiH$mtM^(T0CjAJGS4J!j|0T z1P@JiXIsuiK9Km$WtGew?ekzZ6fM>keNd?EVGFYOmC!XiC97c9H(Gg(tp zvd;9A(Y)mXExOT?nWf^V+0$Q_?C?2qeYiKC3|Kl}R2Foe|HsvasQz<@c<*O<4qjRa zj&>~14z@vV%m|}zKBzy?JoX29(#DNEEz7m=q5I42=cpolZlH>k) zW+QVxxY;54#b%w3vC>ERZF8iO@|VPe6@B+|#*?3|pInpp)G^oHHQLdCX!t7wMzTihdP;t~c3%@&)i`N@Ma85*b2v44cCirqI~j zSRVHIMM8!A1%M9l1T09QF_1QCAOyt2xe%&AIfK6rp#P2t8gK?Szz!>@>P;kX4e{}# zg^CzhOK1lqCBMObzcbhG%mtaNMlWwB9*yaBCw`b|mEFkRci&~6Q9-#+$Z2ofTiGQ~ zNUrCk4D2>}T48wz4A>}uM?gN#n3;EOyY;$MdTpmv9R7h*<&TvnXM?1t{SMo8iQ^tQ zB+dE$P;#neJh`;+f_6%3fT*D`qpioj`3LUQUP*U#k=OTv;L1zU&!dWNB46fM+wMij zzOnnN&FpV#xx&GYxKL?zb}DD>?%A{c+oHpyRjzd{@~%6lY$84y`_RmEkId~_(>;C4 zybW(A;^TxOR-b97;8b6+bnv|C_Q~_j{Nqzb^eIx+Co++{bCr7^ZJI>q`<)y5;zmYG z&9r1Ur=J^mI;w|CNqskU9bBcZh@}tW^OZeO3JZE&96f z27OIilakuyZl8AKy1CYqjDEa(&^B%8R|Pm-RyWmI|FOe5jY(0siod#oZaJfNPOUXH zH>2E0qgVF?Sc#cO(@q>){M2u-@qeVR$?@co>ZX>lC!3Lyr_RphpP0G(r+!va9GmNx qsWqCOyPP*%+4Yhhx>R^Iv&@2?+7LL>dSY|4Y*}DYlDXKc=>Hd1YF}jl literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/logo_Purchase.jpg b/hrmsWeb/hrms/includes/images/logo_Purchase.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46c2e9762eb325aecbb6a896e5bef9ca9c5985b3 GIT binary patch literal 7460 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 CnG^2- literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/logo_SysAdmin.jpg b/hrmsWeb/hrms/includes/images/logo_SysAdmin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b15b57dd4a8f4f8dd12b1f537ec10f8f789b16a3 GIT binary patch literal 8585 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 I$=v?`0GUz$8~^|S literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/lov.jpg b/hrmsWeb/hrms/includes/images/lov.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f00d412fa3fbadd868cfb7d28165ace03593ad68 GIT binary patch literal 2498 zcmeHIdr(wW7(aJkEW69Hmt6w2k*gt0Gr9>2=#;v`3J7EJTn0e3ps(~3%O##Vjd4BrewS*zp2Tkc#iQ3 zG{*uc24o8`APcO>N)Zy7_7aiKa1N3oX3*|Jfo9!AGV5k2&?lBIZxcrXai zKzE*C6IBEQgE3z{Cgo4c@Tn@N~O?KH0@N;AY=NzG53#40LL>I#{g>4%XpXjTR3N z)#*aRBaOyzqcIZKN#b98KOUa35Un;uA7aq!4JN%_Z$gvaKi5xy33Z*JY9jwt}4}}VCqA|L%lBfY zt;lz!9@`=$MKszkQ@`z9{B4u>N>5ts%B}D3TXp>G)!uFUPc(P*%_=DUVD3<{VSQ4 zzkaZvzErz!=7HzytmoETZD@+O#HFs9w0Z*n^yH+oH%9F4xzN?GsX13!EzDWk`s~hM z=cfEp@!G3ZB@@3HIJCZo>zw@gnY!rU+V-xTbqSkE+%WIt_0XuM_JP9gB*m!CR#xV}7I1f6s1y9c8NL*6;HJkx8vS$Qq@WjcC? z*dq1EsNu6H4-fw;2q#xmObWDvW@uqPL9+!Mx-fP)V8;Ov3X)-ybHD+codDUO5Pl1A z@X{B27=iI$EC`SU%wRkU=zC{Wy3Fjp?(emozFxbu z_q?rikhgk;!}%@EZXAOh3_}7-F2eZ{8>jwZH@7xTWts1N(Wc8 zuGcxHuG=-TW7yuz7##obO4PMf)iWUu6fLE F`x|}Z19t!b literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/lov_act.jpg b/hrmsWeb/hrms/includes/images/lov_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f00d412fa3fbadd868cfb7d28165ace03593ad68 GIT binary patch literal 2498 zcmeHIdr(wW7(aJkEW69Hmt6w2k*gt0Gr9>2=#;v`3J7EJTn0e3ps(~3%O##Vjd4BrewS*zp2Tkc#iQ3 zG{*uc24o8`APcO>N)Zy7_7aiKa1N3oX3*|Jfo9!AGV5k2&?lBIZxcrXai zKzE*C6IBEQgE3z{Cgo4c@Tn@N~O?KH0@N;AY=NzG53#40LL>I#{g>4%XpXjTR3N z)#*aRBaOyzqcIZKN#b98KOUa35Un;uA7aq!4JN%_Z$gvaKi5xy33Z*JY9jwt}4}}VCqA|L%lBfY zt;lz!9@`=$MKszkQ@`z9{B4u>N>5ts%B}D3TXp>G)!uFUPc(P*%_=DUVD3<{VSQ4 zzkaZvzErz!=7HzytmoETZD@+O#HFs9w0Z*n^yH+oH%9F4xzN?GsX13!EzDWk`s~hM z=cfEp@!G3ZB@@3HIJCZo>zw@gnY!rU+V-xTbqSkE+%WIt_0XuM_JP9gB*m!CR#xV}7I1f6s1y9c8NL*6;HJkx8vS$Qq@WjcC? z*dq1EsNu6H4-fw;2q#xmObWDvW@uqPL9+!Mx-fP)V8;Ov3X)-ybHD+codDUO5Pl1A z@X{B27=iI$EC`SU%wRkU=zC{Wy3Fjp?(emozFxbu z_q?rikhgk;!}%@EZXAOh3_}7-F2eZ{8>jwZH@7xTWts1N(Wc8 zuGcxHuG=-TW7yuz7##obO4PMf)iWUu6fLE F`x|}Z19t!b literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/lov_dis.jpg b/hrmsWeb/hrms/includes/images/lov_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75f876da39239d5831f51cfd637058d7d98d9cdb GIT binary patch literal 2414 zcmeHHdr(wW82|3RVV7l>-4)Uqyr9TGYCHs;X%t}2mLK_bx^a zsi@IR50iYAe>5niHI|Bs6H_3D)i}%)4=rtoz|tnte36B~?VNjAgeJ>>`p<9XoOAE@ z`yRjZo%0>(Tj>X|tjcs{0-+*^`NVtx>ALPnZaFXV{&L<&CNE5YB^j>O>g%C-w4Y}K zBExfl#DZ;s0OX~t*h&)?mARhGVtF^kk~xgGTx2*ena+7x8vAI_cuux^BI1EvIx8|_ zz%ywPE$6#q%oP|;Br{pc>qmYeH~Eu~nAhRj9OyoJ5%%?@n8E4FfC(Fu^J&R_Y>_kjx8s2()Qj>%b0ydyI zXpM} zQYsb0FhIn_Py-7*RH47%Nntc7Q*}X)Aoh?|-jmhpayrREPNckE+7rAm#Kc{)M=CpZ ztst{#jut2pU5O0JkE?>&>*N?F$J6vivWVe4{6;@nP#&moa}>j(-S;6I%q+-g34r=0 z(zint5Yn_BL$@j$o#+iPr+aue4W7-|SNaaNfyrPngcwXAAttLa)M#~tn@r)3D4We; zvqf1=vP>+>&);Vv%xDZVhgr;Ki`{HC+wo+!D=yYY2_T&Ts{w5yLQTYi%1WrMgw%%$ zpprU>G{jO%$btxCQKKhAqt)pRA)!X}3`_?JP^p8U1qcnHR%ujPz0ROjo01V|Rcm4* z61C}TDO+simL#2hXT$M~IddI(?e647LT#5*A6K7$bKq8~KV`;&rmgc-%;vc zbSqAW3Fzmgob5&=4n}%b7N&~y;3S2IGl+jcLAnekwVcxmX>h6Y;1JPzUzk<=oAy;7 zv2E{+9ji~hJa*y3uHyZ#>|NV>;`Pow=YH+!8HTWsS@$NTpk>Rr}Xv_5cZu(&3s zvvPsv5|gBF*DcEf*(EpWGP?aqeRBdu#8wuGF%ytuR|dksGk7BAssxZh21~{ z3As>?zC|?r@)vsQ!1f;&B&5PZNWcM=+&a^$+?846+5m-9B0cEkena^lchcidy5BUV zlU)DSNiVb|t~p%O^3k!OXFHllocjhhgfO$5#=6nC?4>0~n$B-$>0KjL3H_DSSa?hP vny)ew+YU74Y_-5}c$Wk%&+pn@a(Vsid$Da-$N0vy{Svsw3f{Q literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/man.jpg b/hrmsWeb/hrms/includes/images/man.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5b02330f7aed75fa297c0dbdd3d4a301533f35b GIT binary patch literal 2655 zcmcIl2~ZPf6#h3iBqUjq5I}_mLE27R<+i9O1PD-D<+fPsY{(LVF$>8CM2oF=)v>i$ z541BB@7mI;C|D~h2wJb!15_-v6)Xa+C`3U)P5<41N{{I=(>L?~3-A2i``>%9U9tTH zr13FvF#v%y37G_d?G~?RY8FY6<}5M?3w(JD7#kV)8vB-GB4H*C7D`VV0VFAig*O6N zgI`*UvdU_-l)SOj5-5B+i>9VVD#LapXx;zC_QD-4%J{=g;Py> zBZb8naGe?2InWMhLKr+8N3n{`DKOD77#+Kak@-pG@pukyB+LXh)Cq8e=5}H+S>02r zNCRoYVsS$zMH&e#iJ)lAbi`ONIx`dM8{o}jjF16NY4OG}m1T+Se6@+RYY(TC#K{<$N0>|liu9}7t=)M^27QLzIu|nS6{E!f zDBwZi5r8a!0}arF?13*6g;p6tgYQT)X*=5fZ-~hnMdMT|EX7FSIvt@MY#n5vtK>?1 z?r~9=nlKV3oPx~}iJR&A(0OneA0ox;L_U_LH)_dzGnSlXnXNJ6dIJFL5m1LlHi#$) znnXc90$c%NduG~L2<$I7LAFjHj?j`C0%+f*ZEfF!#Xuww2pj|=2L}-w0tN6Y}Nq4SyWtf9qHt$_DDr!x# zHo9gD6{5V5(oA%hFFtnB(qfJA`)KQueQRs$Z`|Fszpmlud#RauOV@3$IDVe@Z0mHY3l8s6QXy?g0_aqYYBSEQ8|CUtC> zFfQy@QO&6(AIv&9uSr-o?~7i-zasngl=|88>&`sNZ=ay@`{k&cB49XW_L?RcS{uZ#QMP6irWP?%h&p zRriK>^}RE?ujJ93i^^M%OCDb1*9UjU70itv^_i{Fz6HG8Qwft9{)}K5*y(Iw=KnqB?3fu?*OUn~%aJ>;m|<6qOCO0Us1H?qqXbSZz$fldCS&q+js2zbl2YUefuja4}5j7=2&gr@e|*iJayq>eZ!^8 zR~oNgZ*IBqbL-8v_KvP@>)m@jz4ssVLD-%MT#ti9zX(J=G%q-__L1e&c_FNPS^?#7 zz5IF35ea-eSLPkCKp>BVo1@xcWMJYQg~oK=(Zwg|x^EYq8k5;SOKjnP%IryEPxBfw z=GLmT>Js_**TTzpwr#8`+jsEox2Uk7{1+>ezL$LcViuD6U4KLM99gqV*|uM1YPvY< zL-Q_2t%o<=S2VAZ91Hh7e5bRbr()&!u9Kywy#t%RwOYfLJ?{MJ zeK;nUlw{#EjXH=EA1er0R? E4K^rUMgRZ+ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/menu_arrow.gif b/hrmsWeb/hrms/includes/images/menu_arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3552253508920ab643aa71d76a10da02c71751cf GIT binary patch literal 56 zcmZ?wbhEHbn->{q5(8fea{6feuUnL=YsB5K%-E zLm&|eCNiN!B|0$)&kKP<%7alt3uCN86j;cD3RURB6wrtU8`)5!8r_%%1~K3u2O89% z2QvT|yAE?fSlh}0y=4R$%%Fl5?BE1l>$D?DkwrE+9*~UOY$lbgWG5$SlA$e4QDTWL zj%eml+n+@htJuXUT8`))noTvU+0AKMqZk?~hZ@$fhcm>g>v77JN42CikX4IV>!>;lOE}A7dp35QcEM*i71&*I#sGtm!@QUqGgil zx>mKiH7$DDg@;*+bi9XV%4t)gogjR&+;C*c|(?0wouwRvs&{ zen+lqnTuW7ojqwW%-a;rW)~`T%gB2(qE_Fm-Lk5?ddlF&@kn>O(78VUJ5_y^boOOA z<9s=M`k&+J-z%qq=lj@i0uQcndw6nl`tsw``Re-h_m9UnAI`YB`}6Dg_VdHXkM3`t H1z!CJHCtAx literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/next.gif b/hrmsWeb/hrms/includes/images/next.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf0215277434ed78f8099712c46eb55cc5f606fa GIT binary patch literal 214 zcmZ?wbhEHb6krfw*v!DN>dvp0Q(yhMc2(_uJnPDj&YkyiR$Y#mcBFXYt;9Jec0T-7 zci?5y(f4VK&vl>w>DIJG@h1xd2L8IRSE53)* zgd}9n8tC{Ouwt94tLDg5c$!s${mKCoNioUZu!NfvWdyoe51FQh$zNwYcyK|TeDBc) zN3&{yg$zuNZ1Y4Ujw=;f7&Wn0NHRvLu~~{XB?oiJ@H4gR>S<>6#xa>jW-)WHvBwFs ObFwYroi8iMU=09xqE7k% literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/next_year.gif b/hrmsWeb/hrms/includes/images/next_year.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac12ea1307e4d35ee401f358372b5c69c06fae88 GIT binary patch literal 256 zcmV+b0ssC-Nk%w1VGsZi0J8u9s@(d7%Joi)x_Z0gn$-A-x!!E5(^!_obFtcCoXEN1 z`hLLag2nG}Y@>00$NYAYi~z;6?@{0Wh#Q zaHc>43>Y-XxU*ryjvzl4H7fAH#{mRT@?=^dri~lkmI{D5N|XCA2WcDnx;WET~Y0E=&Q9Xt0qDHLB5#X`J_{&Ds^c}wkKL9 znXYS9t6S5uXE8GKbn~c2J(>~rUYMTUc9A`_U3O+&j94u)c49?$^n}f^4=Ye|VQS^E z66<&5s+PIfmEGBs7Q?(v(QJ01Qn!q}HzR8G&Dt%ix~r!QZXAzvw+o%?!@sMluaXYF zEC(E}51;<$IQ@IGb?3`e=hQK1V3g*muHe+`u+^?Ek78$?Im^N=k&Ty~ Mlhb+{zaWD(0895#mjD0& literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/prev_year.gif b/hrmsWeb/hrms/includes/images/prev_year.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8145d598f2651f4066f94885eec0c5525f7250a GIT binary patch literal 259 zcmV+e0sQ_)Nk%w1VGsZi0J8u9s@(d7%Joi)x_Z0gn$-A-x!!E5(^!_obFtcCoXEN1 z`hLLag2nG`N79SYcD3HMd2MhufIH2&sfs_FRa%6zOq5uZ~5;S1I zfIvwE4Fxa&Pyiyyh7Nl=7?AM*(xe%gIwQm$17-yrFkpA^f&~K_n00udfq}~j JoDK{K06QEwT@wHR literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/print.jpg b/hrmsWeb/hrms/includes/images/print.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a0506d19caf9a45b731a6a7a1eb6ec48ced2916f GIT binary patch literal 2812 zcmcIl30PBC7QQb#5CV@RtOAcs>a@y^q9}wdV5zbgQ0(9Y@&b{NU=l!_p%p}+R%@lA zwT?1?D0S$fvW$$?VQtZB1te@L1zJ%UR1mbq!SucaP&=Kko%y~w`R;x1o#meYzxSRK zO^@bVV7xXYECe7>{1JZuG~;wmM6z5ZS0>BTFpp)fU`0UK8{~2QC|oI*rmG}!8GvF8 z{s3nL{^p*97sb##WFy9x$`gcAEL@V5tdhu*FrF+)ibH2Wfx|}YXJPW(k0(`0ROzCZ zJ;;v?A`}vt3JZ}6law${k63^ZM2m-_&kB^MWhsapS|6QBYjZZ{tQDpSWw;W@US0&~ z!*HFDw5+Dh0_9S<0t*#N#VWZB$D(l+ftkn{3S7iu=r4scO&f&FX-bcLw4iZ^76in> zdEUoMt6BP7qs{cgT&4{Qp-d^p6)$E=gS-BVLcR-E`9IjSXTYHG(h3diIbxI!`KNSvU~W=V^dN)mO^DNw0nPnZEPhrw z+i%Npr*RIHo(XVp~aXxrrcXe^|jqj!^YFfI!pNs91{i=xkZ7|+(f14gcFSbKws?D z*a1P5n~8!2-YR@(0m6Sq;QSndrVlX5+MFox1GmOzvyUy=_i63B?o}pg8%w|JF$1Gj zV@XlBGM1jGImtjik+*%Gqi%AUxr%44?_FQn>T@$yL~Wn_>}2G=dkNy}tG!#^IOG{R z<9^Re1LPfXJ_(^tRuMWDNiTTI`cJRNo}3kaEmp2fimCD*d0&0= zmX}}9>XOT8J@rm^dhe4f&7ydp`_$JwtGZxYF&4P|e&%Fs*|jaXndLk2K@D(Jq&+M- zda17YQ;R2s>>>nE1Z}iM+^6h*L&|L4F`DS{@KPNq0cls=~l2(3ro8I2{U~1n+ z*0q^$qIa(oM{Li}p9#`{j+BhIJL089on{TT%D%zwT>~0$ervj~Z{|#V|JX75=$-5% zpNwX2ux$GMsCxnL%!Apd!~L7BroQk}w{2PFcz7)PT8Yc->wOx~wRNhy`(JDPo{ngG zb$!LoG6q*D;hzkaC{Iljsw4>#sYI29Nn~OQ)a9lz*G2^MvB-2GkrL_wUDq!V04q8WP{|Z{=csU^QemYq z8FVN{1_rRgjZ92XBNSzuE;3_tEV(FZZf9<3ZEb67%Qmxjw6}3wWMgYXEP}vLI*ra^ zFjzJmlw%P&=RGqC-)dWPk^P_mk4P-6^82pN_wnF4 zH*Shc6yf5eWXV>gDm^1}d)AI!dAsuq3g6jN^ufX6Lx(>+@=;m&iHeh_DnCAb_FQ#M zZQb9_*Ecpbx3qrwRomr`&Kq6o?w;Ph!J*;rzP~ea_ulBl3-Ie0`prhFcs}{Ht2ZJp9IgFvTWY*wNBU=i zm6!6XJe7F)_M@Tuzbbq;x%mv{$U?C3$JYiLFP<|iJaxD|cQ5N6f+v1^O-_A>wD zOWb?vYZ|ZE#IGu;mK}7py70AOa|!RguIY8No1d2arLuW)rRsFc<|Fayy20xe76B*j zwG9;at2BUHKJD8-?ALVV5*k{6JNH0s#Ui0|omg+A@-EMpX6-W;pR)M;#7Z?!vb3(S zyx28|cKqtzG@5_^OnWe2Jz$?VXyH`THGbCx|LZ|f*Hi1v#s>wKWw>lbF#XsUVPiQBkH@c$-iVBhsXqPpE6=RjxaP0C>Y(ZU3ApyXD*ylh literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/print_act.jpg b/hrmsWeb/hrms/includes/images/print_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c73d95994e6e0ae4c8443cb3b2f29e8f75008ea5 GIT binary patch literal 2820 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/query.jpg b/hrmsWeb/hrms/includes/images/query.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f4f9e0a0bfecf7c7d59a53e30be264beb890fb6 GIT binary patch literal 2766 zcmcIl2~ZSQ8h$-DFbwn@as*}?1az|sA_$nR4InTaOIU7{4d5`-1Eb?K%)t@MTO+b(}@B82T zzkkRF{rLE1}YyJ!J;K9u5aMm>>=q01mXE5PnUc zJbayzH+57575NKd!j7VmAt6|jMlZ|C!WGj6fK1hf&@Nh52#+{26br{SxK^fzSG+`~ zqe_g*05Pq>6~*BBSc*!cAo6usVzyybrbebx13*_&K5$GUiUxpR)A`=IS^)L=0JHTeZ<#0F_9Ik~07qzmqLPa)Qu8qiEAP@-z_9)jRQxEgU zk7vZ%%F3E&ZOh}?3VA%9keYZxa|rrt79hU?CR;gxf2>S~A;B6yK2PK~qxm0!H;$l2!m-;JSw zMuTV>CQNJ=bCC&xi#MME5#+iGml z`4$9GWv2*B^3&swXCVA%1an?PAlm_#ZrT$CfuLie(O6XHe*D;BEA5wz(~^VtCSTrv zmjqw_KDVWFbl;_GD}#uhREOPnp1#WZn`W7(aQ(8S-sh~VGJ1USNU)+@>1_YPI5>IZ zaqIk(#KoI`={(dj++NEV>fV-<+p;+-C8^K2wk%P;*U0bMcE3bkxkj^An%&#hRey9# z$({obyZTQwjO2SBwku~@*2tY~!)jXi{hdF!_YUV*IMFx9bT{?y{rV%Xv4Xg!zOJed zKa|{CNB-mf^SXBy-Y7T3>^j@O^X#hA^?vQGBWrh^U7ak>Na}l$)z%y?R5)92tscl9 z^#DF05JE_u}r}&e~I-8~i3dkaecQ>d)Rs^W*yjF#0Lb7Fz@#%^jWOZGWI|?eIcz94R#uSFHhey6gQ9|2 zPIdyJqXT7iO6v;zjpa(f55L!N! zILctUc(eGyaco(xz;)pUj&KR=Kn)hNec}g2nc7y%S#G{v?n6{+rp$g_VjKUb%w`gM zo!49KVnk9Rv6T<%W7|{z)NDBVuu>sayF~;%d{lq=;)->jz8_Go^B?Vy+Jr{z!2ac( z=Krzp^ZBd0rRRAyx1!3oSA}TaA$A{_+tB>GpvB+x+_^BhU4HnFqp$2<(vr9GKPwEZ za~o=KJCU<`Yf9VIdWjV;Jw}x}F#7ytLetU}4~lP8XHRr0=V!7cdn+-pfJQYr_bQ#MBE*goKPtSWVh%I`r zB0XxL-Rs;j?Zs;GCmm@w*^h}$hLU|siCsZx!>f~wwP{VKuluDPc(%AZr?(|__}l!Z zwO$qUBR0jqJ<@qb_;=pEc{Mg;+9=Dp$DJd3TbLea>PR5nHs5{l+7}fh;7mHK4D9%< zpsXq9RcS!R&5hTSZRXYF6?$J@ACqTnNgbQFKXvZ0qp3;zo{)eWy}a^ZAldeB(siM} literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/query_act.jpg b/hrmsWeb/hrms/includes/images/query_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e536df6f29d820b214e73e65065b158b4ca8a1e GIT binary patch literal 2833 zcmcIl2~?9;7Jh$rNC^BS$TE@xe78e{9BI~ir4&oU#ke?8Z3H}Knj=~^_X6|zK?R3QhDjKEg7 zBk(i*O=wXJ%zUE+elkUjNG4b(mBg#0a*4o8E|FnS8BpNjY4yyF-|2bDR8m!<_(Kiy zATtP;%2fhinMk69c6x*Zf)FhpiauMYNJznn7+M{jNGqFX#0?ZBh~$_O6MX0d=tFZI zk+fM2n+g>&1upOx$>LNBIVK3jR0L)sqCaqsi-YO2>W7CnsaFJXYhvDx>N`SZii$v~*Uj7dI++D6R3?qpSraaF*%M*_%-}MIOAiEtM1TPtq<}3z1Y&^- za%Wxu9%t!&9$`s%_!ZLTfT96Hp&(qY5=kVOc%~4L=^Ejht`nues}5Kz@WbR7E>gj# z_7*9LQX?|a)&PZNvK~toL`vmiMY2*57N58yMlO=d03c^T9Rk@5qICe!1&}X+_z=x| zy+cA^wfMuA>H};qu_6Wo;y*z$c*ak*ywh@=jW^;*+&DEKpzr}&(8-Ow(WOFiN14t-BMiEU5ya1A> z3Rw+NQi28$c}8di5DG#jQAkuejX@=|T%iypQ>=|$ zs9wP$j?K>WB{Xhs{#9>VJCl%#7*{uZU$u~Ke<*aIRUNBzpL4o6WA557!o)sz3sfGa zPs7`=*CqQae@JW}^qqJ3OlIkks%I~U&X#>!(=i+omy~t%+_ihPog+*AA|=TOjul?N zU)ME?0ul+LrD!qHX;gPD1Zx*#3PiBehC^MFp35Z=RD@IyxZ1_E;`Lrr3pZfbiP z0f0W&{q9o;qQF$_6YinH+GZjAX9V-!LC`b;7Fin;1*<{RMCEXLx&5V!=a~3qN?Bod zS;63sHzM~+U*)9sm-Y^9j|Ok@r5!Qhr-qNYb<%Ht9ama*@QD@eUitICZs}Uk5qiLX z_+rI{gA!+PfBf4K`muXqh6<0~uI^Q@~iyM-r~ zG**TWt?q8w(q}%>7j>gN`ASsfr*9nFn+GYyw|HqK<&Q6L8Ow#NM%x0ia;ulQxIhv4wtrq z4S^RB0|khIV@CjjKs-FF;8JQ&aL@wIuV@H>2XF$535UAaG*)1ckDnkoQAC7_Pe36F=~jSoH>@J9Ik~4ikexQSy)-|`FxJ4 zjhzk8&XULH5l#?jN~h7;3paVh2=4jnQ6K zwS{Wv4>Yq;hx7Ymv-kK z;yy42UzSCE{^`S2!yYBlf+**v%PSWY3N3|;9IZdAW^FCbvfuC|duWjD_^3EgT~V8H zD!|9H$!G7;J7=c`+ttTU=`Z`Z`f_CMcbKH;TFXNDwq4A&z0E(`T^}gSo>Tw)k?H8j zWXk&HOL+P>vAtt;m+J1jTxlpPpV;;18|B7poBMPBk5{T80VccZQOXb;MO13|E`Umm8dTAgM)$=0BW8#H?=fw$Z;Cs<*(oMxb|xe zs7hU-?yV_3v1Y*X=8onn(vyad7Lre@zdAe_fBMEY2X{+J#9_(&e>K)bH@U~=&r3^e z>T{a39m6giOyV1lUE~+rId^Sp@T8yEXlUJGn+Z;4zRD}>TfV9^cvJXghwoo&K-S#F KK{x$04gUs8Ow)G& literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/query_dis.jpg b/hrmsWeb/hrms/includes/images/query_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c7c91e2250dfb45fcc60515e194035be90e4453 GIT binary patch literal 2518 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/refresh_act.jpg b/hrmsWeb/hrms/includes/images/refresh_act.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f8bce93ab0bd6b3c83be3c72f466ddd8f204bf2 GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/save_dis.jpg b/hrmsWeb/hrms/includes/images/save_dis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..52cdfb7cad712ac237123683a4ec28c56d671698 GIT binary patch literal 2538 zcmcIk2~ZSA6z$m?SQcgvE(HceASNovA!?$+aw;BNf?8^3*bE1f9d?rq zq>jd-wYbIz^K6(67(-Y*JX?v9%FZ(|HP{%di}m?A%E#f^xQ;Lq*xQ=`TbOP&4$G?3 zSxIRr0~U*GGiXXjU`YhcU}h@Df}t51FkTC10h@$$uWa4CrFUf*^dMjwoO@zI*pj2g>_OMS$ zjK`>4!eHnQWNy&va}y+K$#iSB9xhthGj0G};BbXQ1d;#_asdHm0W}~2Q>y3u;b*VC zxyIx%`5!Qr0gA>cl~{_7#x)v3-O~n0cZbNG^#_&Mc zJ;aKMgb7O}b!y6F#F8^}vQ#>p)WUOUV`AXwK@<;w5QFQr5FcWBLpdA-_DU?grw2e1 zuBKE3P%nmgh~+9+2E-zf$VMc#u@R$owsxq(K`eGqxX5G*nal+hv)27%{pZ~ovA46c zm)JW>B#v^4L?UMS#$gW((8*osBiz1fm@BlcLDr5{q$!C-g&&+CE zfN*$xfly>)YX`;swi5vyZjaLuAUuT2;c@svfr!r)2SF#w<#|a1`QZt;%v--?m_WX6 z>;8xVK8nN&RZy@Yzg8(6SdjFn`Ej~2#A#dkQs2nJWOdZ3Vmj2hF2zi=A6Qm-F{h;? z+Hd{#ZZ(W9gBa%dJmQz~Ml&JQkBs zzz<;|cm+y%5P{xX#vit1ot!~Xky!gE$Vb&|$S+VPDbkI>j|U1E07Bo8Q*{tTv9mfV zC6p%2y%7ExfnOg4OA`=t*_tRA1MVBjzf;b=)^YN+f7ZU;jl)ArV=DGPD@qM3T>EJL zSWnUP3Fmg-_;Z?l!_?^u$GeX4>djG-L3e2juw1xzK<`f7{q&ob z2uXorXv3yIu9dt85GkXDR8j8;sC;-q$!|+ z;>N&akO{wOIE?HUe9(aG0}&Vq1w%jpv!S)NKs;`8R1B7ogEJ-JIuKfQiU6o2CE#;; z@UHoA;`3pLibXSq@Su>VTp$r~b||xtjt-UA$b}+}%ArJ!Q_`KHeTa{XINA zm`xCvDijDMB9X*Hj>*=%S zFCc7B1aPg-L+=am4lk%ds|1A%FN9-ah@(8dSD-)|o*=~aGVftaMDhsu5>(g>2uggU zP#J1%oqU3u2R>$~vCKY>SpI)v)=R99*ITmfIMKTZvpzFuC4tSFN~UVImGZFCGjTod5h@z?tdD%F7KuFEW$% z=K_wLSYzrpqex;N#fh2iUpnH-?7~h_aZ+TRuIcuu6X6R=zTIRF`z-d(#4v8t@sa-9 Le>gk8(Q@T4==ddi literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/tab_blue.jpg b/hrmsWeb/hrms/includes/images/tab_blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ba9566492565b8167970fe058990a037eb0db4f GIT binary patch literal 4861 zcmeHJdr(tX8vl|2;blSu7FS0J8g!Yq#)@d`j8a9x5M2;KcHCXl00H90Tu5&4MM%+B zw9b|lv{7`2B2X=~>$6)Qgpb`d!4!HI=T%3@v)LvV6j=Omsu|Zpnk8K#B72jwAn6pWU6?h(&iE^F1^7O=I>B*3#WQ|;{%~WWfwUmRS{)5En!MFSec&;3H zd&TLL84AW#2*3kJhW&VRE)^b(&hPRACPo zj~HY)JK%{w6S0$j!tr?kV}ON5bPleSML16;;LXb*(iD*K7S>^*oA5UHdwYBPc>DYK z_zV1e{RF{$e}8`Pn83i`z`!vAe-{lc?#=TvYm}egDBh?59xot>$KwSt6EDcEBKRp6 zpf5n+jUCA0uqFaqz~Ts4s2vA@i_Wm3F-lLCi!fk@IQSv(@buz(`}q3d<{rsp0h=?- z3;>n~i^KL{dvd+JJvsi7m?_|RgpGdHbKX*U;Kba*>0UwGD-O?}BnnPyNQ<1I+1MPz z4KGb7fP@0^v@XJbaW=KoQ9mTgt-#&d=ch?*{Wk=OJ$9A5%a?euz z>Dku%kCtcVZGQj5zkYSK>+!6()T}i{#{Hk2yVh+L0Go}`dblugy*#5_5W-#^?ST>G zP7L&%UbsDoLC}!YJQyiT>(p#4iCGq$uAT8P+=~IgogDRL3kFdclCdylCaJjdJ%oRb zV9HYn=x^Z9aoH3=H1w<&I~tvTPQ9rQ{q$TfecAFEo!5A)L+T9KZz~^s7lE@7LA$si z-%@fodKZE@RP3?2OC496E>VxU2uR9<>f_VB1%BOCrG`NZg3g3tPER$0Hw{)P{jRN7 zL=8SNbc%lp>i~l5eCK6HNYmDE1Vyz7dZ|!hv`-l<)S)~{`Wnb z=;mwYQpYj`jizk~a{g{Fo$KVcmmoNqa6G>?yjN!4un$4oZ2BJ6WnGBixXyWA|6S;* zaD9v6^Ux^C`c%iQ9?Ht2PKa%F%?8tWgGN?RWI8V+%LllPNh^0Em~~R@Jbln4r3q4I zFOszxJ1Xo)QroB48_dbZYQwN$Y;#Y02;F(j8gA_==-X+P(1ZVP2uj~8Y>snQ)|z4l zE;(7B12_$X|s5E5`9oEPId*)!gc zzB9|wjo=hhQ{~aL6AF+)*|>;IdZ4B zhMF!6;-~1AcyCqRI9f%D?OQs`*7weRn14UKr^B3HVQ9m#+Ka$Z zCL6iapR*rv1Y0H6ZQT+7GM+8&cpiKa&;1Xm`NHBOg>z1qM?YF5Ge=h-*k`br;s%b} zrG2UGnl;}f;&>y`xRLd`CB%eb2?+G8of{H zYxm9errhEa4gC7M{X_M$c4Ym;Hr3Sm^cNN%ZTt&KPmREJp&Y89W5y2*-_S+$Rs`KA zLvpx|Nn|VSr|Y-2Sk8m7?@al`d2ctGFSruATkQ5 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu.jpg b/hrmsWeb/hrms/includes/images/treemenu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131739fcc559c8dbf6fae387cec03599a87b111c GIT binary patch literal 7376 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 TtpAW-3sW(0)W5_3n+E;?zE1?M literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/base.gif b/hrmsWeb/hrms/includes/images/treemenu/base.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ac0b117b078b91521d56fce710e987ff5c5bdf5 GIT binary patch literal 1040 zcmeH`?^BBb9KfHpsoZf+xenJINgQ!5-bCk)!^n@*j^hX|?DTUt&d)e*iWIX(X^rZs zS;bjeo)(q0_Kdd7+U#kgX6sq2Hf7D0w8+S}j*B zU^e%)wwf7?GB&%avhwY^Mp)kjMnf;JAF@)orFUu$Jojj)0Y%%dS^#y!MFKJlKI*kZ zQHw1Qn411IZL`^N+*sj)55|5B>%no|#P>;SpY!_pVoqNB11FTLtXKV+ui5NYKEH(|9ra$Y*+!JF zyQN+*nM|Xjqshr-tb;iirhQs1e|YZ+izQJ_fd)5RQ%$fA-<8zcPIDxM`Pe}<@N&x~ z5+mk^`}}5)$J5(8$QO1yox`;{*Qv)tf>#FFlQxnZJFbNuV(0)4Rkg|-HqYzvWu;eG z`vyd!_7|N4DYdTBQZ1cc{YWS~byJfdhibz>p$(3d4D822rLx4!eyiKx69maeWp=Am z;Sbc;>-IJWPPdIK6ehjitj4WUsfx>OVkKWMsOtv+bS))rHHx;{? fny&E8D>{NTbE&~4u_ql#Er|S;e|Qd+f+YL_u9n3O literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/cd.gif b/hrmsWeb/hrms/includes/images/treemenu/cd.gif new file mode 100644 index 0000000000000000000000000000000000000000..7503819404024526e6181901806c55f0d80c5933 GIT binary patch literal 239 zcmVrJ``g+7o}HwDfriP+%H`z#&d&S!*Z=kE z|K{fCzP{+0nauzH|NsC0A^8LW000jFEC2ui022Ta000D>@X2QgDb|R|oC=38x?@%aA z3XHC|001ZuX$Aq%mYc?Kr_IsGe7zvW*%XUnbb L&G+VrGgt!vQpOa` literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/folder.gif b/hrmsWeb/hrms/includes/images/treemenu/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb129763dcea0dc1916b7e934fdce2fd8770c380 GIT binary patch literal 372 zcmZ?wbhEHb6k-r!xXQrr`}gnn@893v9&~1=$&)8f4jw$XxRCo$zt;Bc+vnx5?P^z= zlf`m!n&I9q)y<94Gt(JwZ!g^1B)cGw zMSgXq@QJAg2YNM*9XqzJMr>9F(~2^IHB}=2ujK##G5PiD*Z=>|`G33g|C9Rv?>o0` z+x8y>W-^ck6o0ZXGBD^d=zw&C{KUXE(P4UlhmKVLi6xgzC4402GB{W!L~2f9POOq~ zU`a4ovhaqB%+vz~Nx8dkFFrrvqSej!Kd!MF9@+A*p|PG#+gVIkwX>^RSE$vAT~}-J zl&QL${d#h`nsevP*X5qctE;hW`3hadnOwRm>o;uF<*#vKOczy ZVbwl)>NG2h3j?FtrOQ`>yuBP5tO0@?i&Ovr literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/folderopen.gif b/hrmsWeb/hrms/includes/images/treemenu/folderopen.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5c31102d525076f68a946b1c942687b3ce0da4c GIT binary patch literal 376 zcmZ?wbhEHb6k-r!xXQrr{{8!<#k{|N|2{L*q6oUN3z&7>3 ztO5@mss0m7f-EEygfto)EEhyd@^~j!tvR(XKI+JllL;CPicM^J(Q8*-F>q|Y`M%=j z62+dM{~PKQW!3d-jdOF2Weio>+e{5RD$0%I4VAejFig^&H-8?Vk|_5Crb$NHt5$3C zNei(}Fr8zpvu*n}0e-m}r{#G~uV;mw0cLrC^)_Z0DGV33b1Po(Sa(>zf!o}J1>$0ZL+5}+6JHr`< zs59<2ADD$k0dv7VSPBs!85|83W2YWrU{mu%Hi8cua%jT}X0VKs8iV_@s~cN|4IQK7 zlgwVZniU_ug+va|$vdW0wiwXo*|ykB@De?HwLlJxC0N(!S8i(2E~|v9(_+$dE1QD4 z(6NQB0}P|~wBw2sEI5NRJ4=uuOa5tsBHg+7q6Hu5dC6C#RV~P$5g9p@LhLx0zT1=#$;61Slp z{b$G3Cq5tj+aRnLm}j%g>meJip=3z4fBc6cC?X}jzdC>`>6~1Hyp7=2MId*?rsV_o z0IrGVmN!ePo4-uR0e|!Ywb#GtFWpGfTw^6849G2ChCzJ@XGmPPTIixuZ>)mYL-;TxSo$E#hk&Ui;z3lE682RvPTxRDt7BWAb0m{VSvJ=cgb~yz@9V5_O(cZFI)`$`ISCTU`DjBw zyS8egLnhurnWUI?_PR)I7%9~+D!e_EXKRJ1r3zig4{K%xOvx2|%18b>$me4+u^7Xq I@p#1QKgm$!SpWb4 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/imgfolder.gif b/hrmsWeb/hrms/includes/images/treemenu/imgfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d880347f518bbd1239f2af3e3059ccb1e674e3 GIT binary patch literal 622 zcmZ?wbhEHb6k-r!c*el+{{8!<#k_3u{{L^wI(YEl_U+q$|Ni~|@MghDua+)ZG%JH? z-TL((7IrU~Kj+DlCo5O3lwA7%*s)`qHgDa!eb@j0OBdvEG*;)$$zqw8!`56^^k}p5 z_Ya-7_UFu)+TYb$+uz;v|9Z=kBA(5S(&rbc{eRsuGoA72{gy`u15VE{KDj_~ajDeg z37uzVnk*{dIyud7L!HE&S<`mx+V>;JX-$>L)2C0b?{GLaORBB0{O{F*<)!?K3%Nf$ zsam#d+5aDt|39h!f4lVm`_9*|U#E2~`~QE=wr$&f|N3)mmgIjBn8`2{fZ|UUMg|5? z1|5)NL2<&se!9W4skx=K)lgW7o1c@{KvtWf%~RNQ+VpAif|G?@nV2{@=DW(VPUdzM za9Zso;A-yDro->*#N*D+IV1gO z@j_>Lk*uD81ih2?D)vTMXLcNRa$tCI39M1!eiVTiL RukLUjIIv`XD-$DwH2~IF)06-J literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/join.gif b/hrmsWeb/hrms/includes/images/treemenu/join.gif new file mode 100644 index 0000000000000000000000000000000000000000..34dd47610a5d7c3580dedc342683559bf77abce2 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFv;}DH=KUEdfpt3ORshA Wx&LIzk};W<vKC_i literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/joinbottom.gif b/hrmsWeb/hrms/includes/images/treemenu/joinbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b81c80a9e25f6f29e2614aaa33bdf4a4d2881b GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Tx&LIzy5lkJS?4l0Mh0sDgH;v` literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/line.gif b/hrmsWeb/hrms/includes/images/treemenu/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a259eea00c330eee85fb18aa64e2e232d5410b1 GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Txqp6J8?ND(@^elGBZD;ng_;%{ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/lock.gif b/hrmsWeb/hrms/includes/images/treemenu/lock.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5095dde8ad34772b3f0ff26003dd4536e37be4a GIT binary patch literal 323 zcmV-J0lfZ4Nk%w1VMG8M0J9GOV`F2;$jD@5WZ>Z7|NsC0|NZ{||Ns5|{{H^P#>W5t z|NZ~|`~Uv^|NQ^|`v3p{A^8LW000jFEC2ui07L*A06+xr@X1N5y*TTgMM}Xi1f;;7 zXgUF*=!yY=Io2^L5-}C|WIs9y?=e&vkI1BQc>(|gf~Qkzx)dpg!cS;3ObCeJ!z-~Z z2n*&CY}l&ba5dB!uU7=2ssu1d$gFl13>+*kFEJQo6bKV!TS1CJVq`cQEF_qjdKC%` zSqEuj23G_+MFb6Q1O^6-L}G!lva__cwzs&scX%WTP`XHX15QyRo4_2xn|z3Xv#uJv zy&%2EUlx@Qu981RLt?Iq9Z^$KQy9=UjXe^B4-MDv6RtFtEr!Mzp%mWi29i72jggRT V+#D$6=)Adttf9k)5GOafzu-gC3m_gnAtsyGG)YXIxA8@>Pl literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/musicfolder.gif b/hrmsWeb/hrms/includes/images/treemenu/musicfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..f620789feb3c4b1222909d255f51aeaa81faefb6 GIT binary patch literal 633 zcmZ?wbhEHb6k-r!c;?CQ|HtI_d&1|;T=V|@`}l;_ON)8`KdAow`}didCU@_DGciej z^5n_Eg9rbA>8q=`<>xo+u1K?DiJW3#)C#D)aIvB91 zfNOew_W$>t|Ni|e&CM||NI81&?f=`QuV26Z|9{T0S(4kfZTk-bGZ}^gQ2fcl$iU#q zpaXI&C{7sIuQhl!HMg)hmVUg|Ta9<%L zB*!hNW#eGnvfRbP!^OqjoL^Um#e}(8(%psk*bWzm73wnj%>wQWm-x821i3D`7>P8w z-n-|h>B!0H=xU{*=yrFzi#XF`MLGYlFIxARNO@hDtWaBUIiPTOMfV7_}lvsu=hh(Z;&NfL@qDJM29Jw4q( Jn2m+O8UP#&8=e3F literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/nolines_plus.gif b/hrmsWeb/hrms/includes/images/treemenu/nolines_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..f258ce211a0a19c2ecbcb11170b9a8b35ae2436c GIT binary patch literal 870 zcmZ?wbhEHb6k-r!_|DAG)YR0_(7-SXMnhmkhJfNv7DfgJW(FOQ??HKjfy0@BokPZB z!-9j&9Ku>LGYlFIxARNO@hAj7*xx83m?l#Y_`t1M|Ba{La?4kwX3c6}c&WZ`PygnpJ?rkDyZry# zum9<}^Zxw(U)#BD%KlHsjvf2=@89j`-!lsq`N~Rn2+cXw3F)`cNXo|{M zwn^yh*lA;L&u+56RaJ{?r=8t#bK_Gj;^%BG95Yu?zS_*U>z2K_g$4ipCbgRvpFHC> zdg-Vu`PTd?H;48ok#7ReIGiR-xW0J7!Dc}Y2`z_&_QUOboFWD+3JrbT68dFMM=k~^ HFjxZso}Jb2 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/plus.gif b/hrmsWeb/hrms/includes/images/treemenu/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2c997233b3f7b0fd56c4637c2c20aaf0d47bae7 GIT binary patch literal 89 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0ohtp^czmUT|IBk qf~en0XVhiRX3S&EJ6Nfhb5kY1Re>f2&SBJ{1ibDv2XRV|Dor_^WyXB*=Ku>91RN!zTl3yBbIVx z(geQ%ggTf9umTL|phE>VfGW0dOs3%S#nN%*vE*Enb)jBp9@2x>3JQh1R%p`NKy3y_ zU3YW4U}Q`#nViy?7fYC*mTrH-X7dccKo2mX(s=~L^<(g+r59TS6iqRkj2so5zx+t0 zo0(kzz6vnCo~H$RBRBH)J1GX_SNvfE*Z~wa*h)-iiw*S>Xcn2f6(IYmN~W^Xa^K5L zAex2;PwPjN7>)J4^$VxEb>L;|NOI2mP7BNcjAM&;D`d1LQE7F1uO6=7d%+o2q9~a& z^=HF5f%;G1kxWBiba`M*MXx~Y7eUYLsomU#>SdCrPUj>1OFJ?by71aqM(w;SNCnf+=v){(2QoAPYLn^Co4umpI zZBr+TQf2|-$OSB}T&RT}4J2kXT)9=qY~~&gO+?Wfm<{S%x+=cSPXj28urVYrD5gv> z1x&7r!xs%3p=C(_v_;&ng?=lfkaLrYG$*dMwTX12GNmWsd~wr2�PO#XTOK|5d)& z!4vms05e%S6&9cUdCfvAM{4}`Ll&Au0|4ZI{x#q|zXU~)a%9_I{Pz zF8K#`U8CUK$V+kftzmD{56XRA*JOAEn0*=T9qYDGam8&jKK%R;2frNVs?fakAt(1x zVoBrOZf<9tZI{^DPQFJAYw$bp-YzSMPP;$X(ujj4M^>&|RhjNU%J*O1o>2EXGlIU? f&E;Ccsie~d>oCoZ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/treemenu/trash.gif b/hrmsWeb/hrms/includes/images/treemenu/trash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfa0f000e1ed3b61c8737fcfbef4b78035a6abe7 GIT binary patch literal 1051 zcmeH`!B0|g0LLGK3dPJgm@T#>b?KJNwY61t2y23!a_iPbmlJ1M5VKlN19e8^5=^!z zbD)u~Nn)UBz(^5iXd;hRCWauSKscU&!V@09@^9$c_wYG>4xjDIC@(v6wu%B#plCOQ zlj1%HL7xpg`;4hq!Iu!Ay`fHi8EnwqRZheRTo3t^+{2HkSV8B3ac*wiwj`U#enmI4T(`vn#vK;=k2di7RfPB!bd zJK#>yEZWxDDf!FE7-xpVy$l$}cV*&0M5)OxjQmJ|k6$*vDy}eU@5RE6J(P)Qp+ZeFi9t}!OUd7^O(;WX^ z+tZm1;6~zHF4t@}>pdVC3@Q`~e*%oJB(?5U`#K^Y8IgTkSWbYYT`>3^JQN6~{i|c1 zT@Hui@px7N7}o0@4u@hP=0$@VCwTuo#%8nWYPtge=>Pt?01YMJAgCKUv1i)*1VoHM zg(NCdC7W!ynX~=LT1$V~nzDI+!inF1=tx}_nc5}mr=DV)ug;EKpMRZBPRn{eeTULj zT$`c1GEET^B}LcnR&AAaiH{Ye*N`rB57O`u#Dp_b1s(h%A~RpaD3zSN{F_j2tj!_g zDpL!j?zKmG<;}MS$4?;^-Us|{&uLL9Bj?<{OfuP3Q`%K@Iu9puGT|qsM`h&mnJkio zah!lJc2>jfh55v~gO_sCXyqAH#KmqWJ;xJR)WRHv@kL7O1(~3lev(ei&BE0!@)+$U l*+Y54N|AtcU>`GZuw~%!;jig5uN)!pv)3}!7s*7ZZLLgyujIM*->*unq?oP{a$!U$o=t zf{Z`fV7@nyFDA+DX)dP;=KBEot~=^o<}EM*^L>GQyPKj<&!iiG`F=ot=K-#t{KZGK zK<4=a`LV~}d9XyB2lE4feBt`UGlC1RgZY6#zOH@7PQA8!V15vg|4}jj=U0t8V16)= zpBbFE%KH6HFh2yyzvB2W!@%SLm>&w{-|o0pdsg-}m>&k@OWQm%yOs0_%nt|hSF1eA zzV7`O%#Q%_h35UMeKVmI%#Q@}JBv8~3xzj=`B6ar$7gf89i+Oz{AeJ*-grTFZ1Pkv dKL*I(8GXqp%VQ3h9}DF7rbR8Q`L-U+2LQaQZp#1w literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/includes/images/vssver.scc b/hrmsWeb/hrms/includes/images/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..8e71d189e9d9cd2f20584aa8d82ce4b1b451d2f4 GIT binary patch literal 2000 zcmXZado&bi7zS`m!m&$PPUI+!RR&8Jwe2C5j>u_hrLsqz#Y`HND4E3)skL2PiX@`i zRfAl!471HBtWc!M0dkH@R>9wrQe1GgUZ+ zTz*WX`c zWxcf>7c`sUzsV~6Z;O1V+Tb*Dk-?+Tkk@bFTVzG!R_~^~G5EH8f6=|Ouz;MRSbfyq z^9-C$9#?DsGs-v`&LBHBW$yLMkB2kKWj`EVlO;-r?~og1F1i}bd^n4&5L~=K(whlq zle=X7yWZvs;T*E9)`a=jQ3;$&W}aIg7-6^r&Lb~R7xARhU2r~GZTyp?|Cl>`mz;ED zHm)?43m1^JW!ZU7-G||S$T7XXCl}85h709(kn!Ona?hBj%f!bpSV*2p%41j;g}}vR z@x0agheA}~67tW*>6QmKX}}_KhLL1AVV*ktFIiWotD^O>HhhmfSmZaQ8oLk{lQqYq zUMauOg(YMSMXd-e8zZ=s>|M9-#HKED_&#}Swn@ok1`B>b?l7;>ITO7SE+Z%N(oB<@ zt>JPq)98b9sC${o-2bQ`uV`Xx)mJ}~x0&6YCzhMxIBfy@wx>b2XjV9_Ax(t=uR1U*I~q8)hQl$7I`$Tew1AA}p2ri|J)p zCbxS+GW>)*KkRDUvv?8wlw2iI(lxlh9j+$_^SyPqcsari2>w8Pq1i>%Jlg%VTLKHN&SiRfrNg0Jr;gPUOW4Fvb-k&9w4`Q>Ma)dT!-J2!&Az)={>&%e<1T04aEMpITIcvTSZ=~ zHJT@chsa!aH=VN=#qcmWxiLN`waE@1AwLN%iMq3a4SytW9C{FtuCyB-C8x4@7EQIz z@EG#pK*vHJJWdufwIXK&x$p#esi1zjU-dC~lANJ>{F|Q`f$%5t< +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      AGE ANALYSIS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/CommonSearchScreen.jsp b/hrmsWeb/hrms/jsp/CommonSearchScreen.jsp new file mode 100644 index 0000000..8ccd29a --- /dev/null +++ b/hrmsWeb/hrms/jsp/CommonSearchScreen.jsp @@ -0,0 +1,473 @@ +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="enrgise" %> +<%@ page import="wenrgise.common.utility.EnrgiseConstants" %> + + + + + <bean:message key="wenrgise.common.search" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + +
      +
      + + + + +
      +
      +
      + +

      + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/ExpirePage.jsp b/hrmsWeb/hrms/jsp/ExpirePage.jsp new file mode 100644 index 0000000..100339a --- /dev/null +++ b/hrmsWeb/hrms/jsp/ExpirePage.jsp @@ -0,0 +1,25 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + +
      Current Session has expired .... Please close the browser window and Login again.
      + +
      + +
      diff --git a/hrmsWeb/hrms/jsp/GenConfirmScreen.jsp b/hrmsWeb/hrms/jsp/GenConfirmScreen.jsp new file mode 100644 index 0000000..8fa4038 --- /dev/null +++ b/hrmsWeb/hrms/jsp/GenConfirmScreen.jsp @@ -0,0 +1,142 @@ +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="enrgise" %> +<%@ page import="wenrgise.common.utility.EnrgiseConstants" %> + + + + + <bean:message key="wenrgise.common.confirm" /> + + + + + + + + + + + + + + + + +
      + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
       
      + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/GenDetailMenu.jsp b/hrmsWeb/hrms/jsp/GenDetailMenu.jsp new file mode 100644 index 0000000..30e83ad --- /dev/null +++ b/hrmsWeb/hrms/jsp/GenDetailMenu.jsp @@ -0,0 +1,20 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      diff --git a/hrmsWeb/hrms/jsp/GenDisplayScreen.jsp b/hrmsWeb/hrms/jsp/GenDisplayScreen.jsp new file mode 100644 index 0000000..9f15d3d --- /dev/null +++ b/hrmsWeb/hrms/jsp/GenDisplayScreen.jsp @@ -0,0 +1,496 @@ +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ page import="wenrgise.common.utility.EnrgiseConstants" %> + + + + + <bean:message key="wenrgise.common.view" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      Matching Rows Found
      +
      + + +
      +
      No Matching Rows Found
      +
      + +
      + + + + + + + <%if(oVisib.get(hIdx.intValue()).equals(EnrgiseConstants.VISIBLE)){%> + + <%}%> + + + + + + + + + <%if(oVisib.get(0).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(1).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(2).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(3).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(4).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(5).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(6).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(7).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(8).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(9).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + + + + <%if(oVisib.get(10).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(11).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(12).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(13).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(14).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(15).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(16).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(17).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(18).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + + <%if(oVisib.get(19).equals(EnrgiseConstants.VISIBLE)){%> + + <%}else{%> + + <%}%> + + +
      Select + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + +
      + + + + + + + + + +
      + +
      + + + + + + diff --git a/hrmsWeb/hrms/jsp/GenIconMenu.jsp b/hrmsWeb/hrms/jsp/GenIconMenu.jsp new file mode 100644 index 0000000..d67e5e2 --- /dev/null +++ b/hrmsWeb/hrms/jsp/GenIconMenu.jsp @@ -0,0 +1,34 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + + + + + + + + + + + + + + + +
      + + of +
      + + + + + +
      \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/GenIncludes.jsp b/hrmsWeb/hrms/jsp/GenIncludes.jsp new file mode 100644 index 0000000..a3f467f --- /dev/null +++ b/hrmsWeb/hrms/jsp/GenIncludes.jsp @@ -0,0 +1,18 @@ +<%@ page import="java.util.Locale" %> + + + + + + + + + + + + +<% + Locale oLoc = request.getLocale(); + String sLang=oLoc.getLanguage(); +%> + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/GenMenu.jsp b/hrmsWeb/hrms/jsp/GenMenu.jsp new file mode 100644 index 0000000..dbf4036 --- /dev/null +++ b/hrmsWeb/hrms/jsp/GenMenu.jsp @@ -0,0 +1,159 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> +<%@ page import="java.util.*" %> +<%@ page import="wenrgise.common.bean.DynamicMenuBean" %> +<%@ page import="wenrgise.common.utility.UserInfo" %> +<%@ page import="org.apache.struts.util.RequestUtils" %> +<%@ page import="wenrgise.ejb.common.utility.ParamUtil" %> + + + + +
      + +
      + + + + + <% + String empLoyeeNumber = new String(); + String empLoyeeName = new String(); + String siteCode = new String(); + String siteName = new String(); + + try + { + String sessionBeanName = ParamUtil.getSessionBeanName(); + UserInfo oUserInfo = (UserInfo)RequestUtils.lookup(pageContext, sessionBeanName, "userInfo", "session"); + + if(null != oUserInfo) + { + empLoyeeNumber = oUserInfo.getUserId(); + empLoyeeName = oUserInfo.getUserName(); + siteCode = oUserInfo.getSiteCode(); + siteName = oUserInfo.getSiteName(); + } + } + catch(Exception oEx) + { + oEx.printStackTrace(); + } + + %> + + + <%="User: "+empLoyeeName+"["+empLoyeeNumber+"]"%> + <%="Location: "+siteName+"["+siteCode+"]"%> + + +
      +
      + diff --git a/hrmsWeb/hrms/jsp/HrmATDDptnAppl.jsp b/hrmsWeb/hrms/jsp/HrmATDDptnAppl.jsp new file mode 100644 index 0000000..9d25d22 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDDptnAppl.jsp @@ -0,0 +1,364 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmATDDptnChrgRpt.jsp b/hrmsWeb/hrms/jsp/HrmATDDptnChrgRpt.jsp new file mode 100644 index 0000000..2897cf7 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDDptnChrgRpt.jsp @@ -0,0 +1,335 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + + + + +
      + +
      + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmATDDptnOrderForSingleEmp.jsp b/hrmsWeb/hrms/jsp/HrmATDDptnOrderForSingleEmp.jsp new file mode 100644 index 0000000..2958415 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDDptnOrderForSingleEmp.jsp @@ -0,0 +1,339 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmATDTransAppl.jsp b/hrmsWeb/hrms/jsp/HrmATDTransAppl.jsp new file mode 100644 index 0000000..345f55f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDTransAppl.jsp @@ -0,0 +1,455 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      +
      + + + +
      + +
      + +
      +
      +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmATDTransChrgRpt.jsp b/hrmsWeb/hrms/jsp/HrmATDTransChrgRpt.jsp new file mode 100644 index 0000000..911d758 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDTransChrgRpt.jsp @@ -0,0 +1,357 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + + + + + +
      + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmATDTransCnclAppl.jsp b/hrmsWeb/hrms/jsp/HrmATDTransCnclAppl.jsp new file mode 100644 index 0000000..92774a7 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDTransCnclAppl.jsp @@ -0,0 +1,352 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmATDTransCnclOrderForSingleEmp.jsp b/hrmsWeb/hrms/jsp/HrmATDTransCnclOrderForSingleEmp.jsp new file mode 100644 index 0000000..f59511b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDTransCnclOrderForSingleEmp.jsp @@ -0,0 +1,382 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + diff --git a/hrmsWeb/hrms/jsp/HrmATDTransOrderForSingleEmp.jsp b/hrmsWeb/hrms/jsp/HrmATDTransOrderForSingleEmp.jsp new file mode 100644 index 0000000..9c147a0 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmATDTransOrderForSingleEmp.jsp @@ -0,0 +1,459 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + +
      +
      +
      + + + + + + + + + +
      + Cancel Transfer
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAcademicQualRep.jsp b/hrmsWeb/hrms/jsp/HrmAcademicQualRep.jsp new file mode 100644 index 0000000..90465ca --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAcademicQualRep.jsp @@ -0,0 +1,220 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      AGE ANALYSIS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      View  Report
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAdhocReport.jsp b/hrmsWeb/hrms/jsp/HrmAdhocReport.jsp new file mode 100644 index 0000000..be58d82 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAdhocReport.jsp @@ -0,0 +1,327 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      +
      +
      + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + + + + +
        + Download Result
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAdvAppln.jsp b/hrmsWeb/hrms/jsp/HrmAdvAppln.jsp new file mode 100644 index 0000000..cb9310c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAdvAppln.jsp @@ -0,0 +1,397 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Advance Application Query
      Advance Details
      + + + +
      + + + + + + + + +
      Bulk Settlement
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAdvMst.jsp b/hrmsWeb/hrms/jsp/HrmAdvMst.jsp new file mode 100644 index 0000000..404ab09 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAdvMst.jsp @@ -0,0 +1,477 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      <%=idx.toString()%><%=idx.toString()%> + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAdvSettle.jsp b/hrmsWeb/hrms/jsp/HrmAdvSettle.jsp new file mode 100644 index 0000000..c452bf2 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAdvSettle.jsp @@ -0,0 +1,393 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Advance Application Query
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      Advance Settlement Details 
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       SELECT
      +
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAdvSettleHeads.jsp b/hrmsWeb/hrms/jsp/HrmAdvSettleHeads.jsp new file mode 100644 index 0000000..3b84f3e --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAdvSettleHeads.jsp @@ -0,0 +1,339 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + +
      of
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + +<%! String sSettleId; %> +<%sSettleId=request.getParameter("settleId");%> + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAppraisalKPA.jsp b/hrmsWeb/hrms/jsp/HrmAppraisalKPA.jsp new file mode 100644 index 0000000..1302b59 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAppraisalKPA.jsp @@ -0,0 +1,429 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + +
      + + + + + + + + + + + + + + + + +
       
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + + + + + + +
      + +
      +
      +
      +
      +
      + + + + + + + + + + + +
      + + Freeze + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAppraisalTemplateKpa.jsp b/hrmsWeb/hrms/jsp/HrmAppraisalTemplateKpa.jsp new file mode 100644 index 0000000..18d16c2 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAppraisalTemplateKpa.jsp @@ -0,0 +1,371 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      Template SectionTemplate KPA 
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      Approve
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAppraisalTemplateSection.jsp b/hrmsWeb/hrms/jsp/HrmAppraisalTemplateSection.jsp new file mode 100644 index 0000000..afd4c71 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAppraisalTemplateSection.jsp @@ -0,0 +1,449 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      Template SectionTemplate KPA 
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + +
      + +
      +
      +
      + + + + + + + + + +
      Approve
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslEmpDtls.jsp b/hrmsWeb/hrms/jsp/HrmAprslEmpDtls.jsp new file mode 100644 index 0000000..2031eec --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslEmpDtls.jsp @@ -0,0 +1,402 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      + +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      + +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslEmployee.jsp b/hrmsWeb/hrms/jsp/HrmAprslEmployee.jsp new file mode 100644 index 0000000..7bc3daf --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslEmployee.jsp @@ -0,0 +1,346 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      + + + + + + + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslGoals.jsp b/hrmsWeb/hrms/jsp/HrmAprslGoals.jsp new file mode 100644 index 0000000..68fe819 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslGoals.jsp @@ -0,0 +1,468 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + +
       Get Detail  of
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslKPA.jsp b/hrmsWeb/hrms/jsp/HrmAprslKPA.jsp new file mode 100644 index 0000000..4bed210 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslKPA.jsp @@ -0,0 +1,528 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + + + + + + + + + + + + + + + +
       Get Detail  of
      +
      +
      +
      + + + + + + + + +
       Calculate     Done     +  Reject 
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslSpcTmpl.jsp b/hrmsWeb/hrms/jsp/HrmAprslSpcTmpl.jsp new file mode 100644 index 0000000..a4cb971 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslSpcTmpl.jsp @@ -0,0 +1,528 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%> <%=idx.toString()%>
      <%=idx.toString()%> <%=idx.toString()%>
      +
      +
      + + + + + + + + + + + + + + + + +
       Get Detail  Delete Row of
      +
      +
      +
      + + + + + + + + +
      Approve  Reject 
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslSpcTmplEmpElig.jsp b/hrmsWeb/hrms/jsp/HrmAprslSpcTmplEmpElig.jsp new file mode 100644 index 0000000..b76e6fd --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslSpcTmplEmpElig.jsp @@ -0,0 +1,473 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%>
      +
      +
      + + + + + + + + + + + + + + + + +
       Get Detail  of
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslSpcTmplGoals.jsp b/hrmsWeb/hrms/jsp/HrmAprslSpcTmplGoals.jsp new file mode 100644 index 0000000..97a6dc3 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslSpcTmplGoals.jsp @@ -0,0 +1,484 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + <%=idx.toString()%> + + + + +
      <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslStartOrder.jsp b/hrmsWeb/hrms/jsp/HrmAprslStartOrder.jsp new file mode 100644 index 0000000..9148db5 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslStartOrder.jsp @@ -0,0 +1,254 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + +
      + + + + +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslStartRule.jsp b/hrmsWeb/hrms/jsp/HrmAprslStartRule.jsp new file mode 100644 index 0000000..50bf077 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslStartRule.jsp @@ -0,0 +1,409 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAprslTrngReq.jsp b/hrmsWeb/hrms/jsp/HrmAprslTrngReq.jsp new file mode 100644 index 0000000..c93cbe1 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAprslTrngReq.jsp @@ -0,0 +1,426 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAttEmpAttIn.jsp b/hrmsWeb/hrms/jsp/HrmAttEmpAttIn.jsp new file mode 100644 index 0000000..d6adc90 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttEmpAttIn.jsp @@ -0,0 +1,293 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      + + + + + +
      +
      + +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAttEmpAttOut.jsp b/hrmsWeb/hrms/jsp/HrmAttEmpAttOut.jsp new file mode 100644 index 0000000..4b73131 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttEmpAttOut.jsp @@ -0,0 +1,272 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      +
      + +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAttEmpAttQuery.jsp b/hrmsWeb/hrms/jsp/HrmAttEmpAttQuery.jsp new file mode 100644 index 0000000..4a02e0c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttEmpAttQuery.jsp @@ -0,0 +1,362 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + +
       
      + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + Select + 01234 + 56789 + 1011121314 + 1516171819 + 20212223 + + Select + 0001020304 + 0506070809 + 1011121314 + 1516171819 + 2021222324 + 2526272829 + 3031323334 + 3536373839 + 4041424344 + 4546474849 + 5051525354 + 5556575859 + + Select + 01234 + 56789 + 1011121314 + 1516171819 + 20212223 + + Select + 0001020304 + 0506070809 + 1011121314 + 1516171819 + 2021222324 + 2526272829 + 3031323334 + 3536373839 + 4041424344 + 4546474849 + 5051525354 + 5556575859 + + + + + + + + + + + + + + + +
      +
      + +
      +
      +
      + + + + + + + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAttEmpDayOff.jsp b/hrmsWeb/hrms/jsp/HrmAttEmpDayOff.jsp new file mode 100644 index 0000000..36cb823 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttEmpDayOff.jsp @@ -0,0 +1,503 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Employee Detail
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Employee Day Off Details 
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + <%=idx.toString()%><%=idx.toString()%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAttEmpShift.jsp b/hrmsWeb/hrms/jsp/HrmAttEmpShift.jsp new file mode 100644 index 0000000..b7f0c8c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttEmpShift.jsp @@ -0,0 +1,399 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAttEmployeeShiftDetail.jsp b/hrmsWeb/hrms/jsp/HrmAttEmployeeShiftDetail.jsp new file mode 100644 index 0000000..cc8d878 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttEmployeeShiftDetail.jsp @@ -0,0 +1,159 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + +
      + + +
      + + + + + + + + + + + + + + + + + + + +
      Employee Shift Detail
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Employee Shift Details 
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + +
      +
      + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAttEmployeeShiftRoster.jsp b/hrmsWeb/hrms/jsp/HrmAttEmployeeShiftRoster.jsp new file mode 100644 index 0000000..bca82dc --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttEmployeeShiftRoster.jsp @@ -0,0 +1,349 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Shift Roster Header
      + + + + +
      + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Shift Roster Detail 
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + <%=idx.toString()%> + + -----------------Please select----------------- + Working + Holiday + + + -----------------Please select----------------- + Full Day + 1st Half + 2nd Half + + + <%=idx.toString()%> +
      <%=idx.toString()%> + <%=idx.toString()%> + -----------------Please select----------------- + D + C + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAttShiftMaster.jsp b/hrmsWeb/hrms/jsp/HrmAttShiftMaster.jsp new file mode 100644 index 0000000..39bb05b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttShiftMaster.jsp @@ -0,0 +1,202 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Shift Information
      + + +   
            
           + + + + +
      + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAttShiftRosterGen.jsp b/hrmsWeb/hrms/jsp/HrmAttShiftRosterGen.jsp new file mode 100644 index 0000000..f7504c9 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttShiftRosterGen.jsp @@ -0,0 +1,305 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + +
      + + + + + + +
      Generate
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmAttWorkGroupDayOff.jsp b/hrmsWeb/hrms/jsp/HrmAttWorkGroupDayOff.jsp new file mode 100644 index 0000000..2bcd0a3 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttWorkGroupDayOff.jsp @@ -0,0 +1,502 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + +
      + + +
      + + + + + + + + + + + + + + + + + + + +
      Work Group Detail
      + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Work Group Day Off 
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmAttWorkGroupShift.jsp b/hrmsWeb/hrms/jsp/HrmAttWorkGroupShift.jsp new file mode 100644 index 0000000..54002ff --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmAttWorkGroupShift.jsp @@ -0,0 +1,433 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmClaimMst.jsp b/hrmsWeb/hrms/jsp/HrmClaimMst.jsp new file mode 100644 index 0000000..6440e07 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmClaimMst.jsp @@ -0,0 +1,461 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + + +
      + +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + <%=idx.toString()%><%=idx.toString()%>
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmDriverScreen.jsp b/hrmsWeb/hrms/jsp/HrmDriverScreen.jsp new file mode 100644 index 0000000..bd605fe --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmDriverScreen.jsp @@ -0,0 +1,88 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + +
      HUMAN RESOURCE MANAGEMENT SYSTEM
      + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + diff --git a/hrmsWeb/hrms/jsp/HrmEmpAwardDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpAwardDtls.jsp new file mode 100644 index 0000000..3279109 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpAwardDtls.jsp @@ -0,0 +1,388 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + <%=idx.toString()%>
      + + + + + <%=idx.toString()%>
      +
      +
      + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpClaim.jsp b/hrmsWeb/hrms/jsp/HrmEmpClaim.jsp new file mode 100644 index 0000000..4762ddd --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpClaim.jsp @@ -0,0 +1,565 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Claim Query
      + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      Reimbursement Details 
      + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + <%=idx.toString()%> + + <%=idx.toString()%><%=idx.toString()%> + + + + + <%=idx.toString()%><%=idx.toString()%> + + + + + + + <%=idx.toString()%> + + <%=idx.toString()%><%=idx.toString()%> + + + + <%=idx.toString()%><%=idx.toString()%> + + + + + + + <%=idx.toString()%> + + <%=idx.toString()%><%=idx.toString()%> + + + + <%=idx.toString()%><%=idx.toString()%> + + + + + + +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpDepDtl.jsp b/hrmsWeb/hrms/jsp/HrmEmpDepDtl.jsp new file mode 100644 index 0000000..7b9a0e1 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpDepDtl.jsp @@ -0,0 +1,398 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      Employee Details
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Dependant Details 
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      + + + + + + + <%=idx.toString()%> + + + + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpDiscAction.jsp b/hrmsWeb/hrms/jsp/HrmEmpDiscAction.jsp new file mode 100644 index 0000000..bc51cc7 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpDiscAction.jsp @@ -0,0 +1,465 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      Employee Details
      + Please Select + All Employees + Employees With Cases + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      Disciplinary Actions 
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + +
       Get Detail    Add Row   + Delete Row of
      + +
      +
      +
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersAddDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersAddDtls.jsp new file mode 100644 index 0000000..df6ccc3 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersAddDtls.jsp @@ -0,0 +1,781 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Office Address + + + + + + + + + + + + + +
      + - + -
      Present Address
      Permanent Address
      Same As Present Address
      Home Town Address
      Same As Permanent Address
      +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       Get Detail  + of
      + + + +
      +
      +
      +
      + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersAssetDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersAssetDtls.jsp new file mode 100644 index 0000000..e67ee21 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersAssetDtls.jsp @@ -0,0 +1,418 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + +
      +
      +
      + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      + +
      +
      +
      +
      + + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersDtls.jsp new file mode 100644 index 0000000..a9c5f0c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersDtls.jsp @@ -0,0 +1,741 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Attribute Details
      + + + +
      + + + + + + + + + +
      + + +
      + + + + + + + + + + +
      + +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      + +
      + +
      +
      +
      + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersEduDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersEduDtls.jsp new file mode 100644 index 0000000..e13c70e --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersEduDtls.jsp @@ -0,0 +1,427 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <%=idx.toString()%>
      +
      +
      + + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersEmpHst.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersEmpHst.jsp new file mode 100644 index 0000000..6427efb --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersEmpHst.jsp @@ -0,0 +1,430 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + +
      +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      + +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersHealth.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersHealth.jsp new file mode 100644 index 0000000..a3b038a --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersHealth.jsp @@ -0,0 +1,386 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + +
      +
      +
      + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersInsDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersInsDtls.jsp new file mode 100644 index 0000000..3e60630 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersInsDtls.jsp @@ -0,0 +1,393 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + +
      +
      +
      + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersJoinInf.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersJoinInf.jsp new file mode 100644 index 0000000..b85c635 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersJoinInf.jsp @@ -0,0 +1,605 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      Joining Information
      Bank Information
      + + + Cash + Cheque + + +
      Other Information
      Job Responsibility
      +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      + +
      + +
      +
      +
      + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersLngDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersLngDtls.jsp new file mode 100644 index 0000000..e42f9e0 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersLngDtls.jsp @@ -0,0 +1,404 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + +
      +
      +
      + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersPFDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersPFDtls.jsp new file mode 100644 index 0000000..1013d00 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersPFDtls.jsp @@ -0,0 +1,430 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      + + + + + + + + + <%=idx.toString()%>
      +
      +
      + + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersPriorExp.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersPriorExp.jsp new file mode 100644 index 0000000..6005e69 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersPriorExp.jsp @@ -0,0 +1,466 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + +
      +
      +
      + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      + +
      +
      +
      +
      + + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersRef.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersRef.jsp new file mode 100644 index 0000000..07c92ee --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersRef.jsp @@ -0,0 +1,391 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + +
      +
      +
      + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmEmpPersTrngDtls.jsp b/hrmsWeb/hrms/jsp/HrmEmpPersTrngDtls.jsp new file mode 100644 index 0000000..e8c11e6 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmEmpPersTrngDtls.jsp @@ -0,0 +1,412 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      + +
      + +
      +
      +
      + + + + + + + + + +
      Draft Save
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + diff --git a/hrmsWeb/hrms/jsp/HrmGenEligRule.jsp b/hrmsWeb/hrms/jsp/HrmGenEligRule.jsp new file mode 100644 index 0000000..c437279 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmGenEligRule.jsp @@ -0,0 +1,417 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Query (Ctrl+Q)Insert (Alt+N)Execute (Ctrl+U) + + + of +
      + + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + + + = + NOT = + > + < + => + <= + IN + NOT IN + +
      + + + + + + + + + + + + + + + +
      + + + + + + +
             Or      +     And     + Show Final Formula
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmGenEligRuleQuery.jsp b/hrmsWeb/hrms/jsp/HrmGenEligRuleQuery.jsp new file mode 100644 index 0000000..199323d --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmGenEligRuleQuery.jsp @@ -0,0 +1,373 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Execute (Ctrl+U) + Refresh (Ctrl+R) + + of +
      + + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + +
      + + + + + + + + + + + + + + +
      Eligibility 
      + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + +
      +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmLnApp.jsp b/hrmsWeb/hrms/jsp/HrmLnApp.jsp new file mode 100644 index 0000000..b237b6c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLnApp.jsp @@ -0,0 +1,639 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + +
      + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + <%=idx.toString()%><%=idx.toString()%>
      + + + + +
      + +
      + + + + + + +
      + + +
      + +
      +
      +
      +
      + + + + + + + + + +
      Bulk Payment
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/hrmsWeb/hrms/jsp/HrmLnAppHblIntRateDtl.jsp b/hrmsWeb/hrms/jsp/HrmLnAppHblIntRateDtl.jsp new file mode 100644 index 0000000..d0050f0 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLnAppHblIntRateDtl.jsp @@ -0,0 +1,623 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + +
      + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + +
      + +
      + + + + + + +
      + + +
      + +
      +
      +
      +
      + + + + + + + + + +
      Bulk Payment
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/hrmsWeb/hrms/jsp/HrmLnAppRepay.jsp b/hrmsWeb/hrms/jsp/HrmLnAppRepay.jsp new file mode 100644 index 0000000..3cd76cb --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLnAppRepay.jsp @@ -0,0 +1,412 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + +
      +
      +
      + + + + + + + + + + + + +
       Get Detail  of +
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmLnChart.jsp b/hrmsWeb/hrms/jsp/HrmLnChart.jsp new file mode 100644 index 0000000..203622b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLnChart.jsp @@ -0,0 +1,391 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      +
      +
      +
      + +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmLnMst.jsp b/hrmsWeb/hrms/jsp/HrmLnMst.jsp new file mode 100644 index 0000000..f3d56eb --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLnMst.jsp @@ -0,0 +1,501 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + +
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmLvAppln.jsp b/hrmsWeb/hrms/jsp/HrmLvAppln.jsp new file mode 100644 index 0000000..e2fbcf0 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvAppln.jsp @@ -0,0 +1,609 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.ejb.common.utility.ParamUtil" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Leave Information
      + +
      + + +
      + + + + + + +
      + +
      + + + + + + + + + + + + + + + + + +
      + + + + + Leave Break-Up + + + + + + + +
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + +
      + Show Breakup +   Add Row   + Delete Row of +
      + + +
      +
      +
      + + + + + + + +
      Apply Leave + Approve  Reject  + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%! String sTransId; %> +<%sTransId=request.getParameter("transId");%> + + + + + + + + + + +<% ReportReader oReportReader=new ReportReader(); %> +<% ParamUtil oParamUtil=new ParamUtil(); %> + + diff --git a/hrmsWeb/hrms/jsp/HrmLvApplnQuery.jsp b/hrmsWeb/hrms/jsp/HrmLvApplnQuery.jsp new file mode 100644 index 0000000..17022ec --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvApplnQuery.jsp @@ -0,0 +1,439 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Execute (Ctrl+U) + Refresh (Ctrl+R) + of +
      + + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + +
      + + + + + + + + + + + + + + +
      Leave Information 
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      VIEW + + + + + +
      +
      +
      + + + + + + + + + + + + +
       Get Detail  of +
      +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmLvCanc.jsp b/hrmsWeb/hrms/jsp/HrmLvCanc.jsp new file mode 100644 index 0000000..c419987 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvCanc.jsp @@ -0,0 +1,437 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
       
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      +
      +
      +
      + + + + + + + + +
      Approve  Reject 
      +
      + + + + + + + + + + + + + + <%! String sTransId; %> + <%sTransId=request.getParameter("transId");%> + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmLvCancQuery.jsp b/hrmsWeb/hrms/jsp/HrmLvCancQuery.jsp new file mode 100644 index 0000000..697ccbb --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvCancQuery.jsp @@ -0,0 +1,437 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Execute (Ctrl+U) + Refresh (Ctrl+R) + of +
      + + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      Cancellation Details 
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      VIEW + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + +
       Get Detail  of +
      +
      +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmLvCredit.jsp b/hrmsWeb/hrms/jsp/HrmLvCredit.jsp new file mode 100644 index 0000000..e9de363 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvCredit.jsp @@ -0,0 +1,213 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + +
      CREDIT LEAVES
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CREDIT LEAVES
      +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      +
      Credit Leaves
      + + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + diff --git a/hrmsWeb/hrms/jsp/HrmLvEncash.jsp b/hrmsWeb/hrms/jsp/HrmLvEncash.jsp new file mode 100644 index 0000000..d575df2 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvEncash.jsp @@ -0,0 +1,454 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Encashment Query
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      Encashment Details 
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      +
      +
      +
      +
      + + + + + + + + + +
      SubmitApprove  Reject 
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmLvLedger.jsp b/hrmsWeb/hrms/jsp/HrmLvLedger.jsp new file mode 100644 index 0000000..aa3903c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvLedger.jsp @@ -0,0 +1,421 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmLvMst.jsp b/hrmsWeb/hrms/jsp/HrmLvMst.jsp new file mode 100644 index 0000000..7150518 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvMst.jsp @@ -0,0 +1,593 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      Leave Status 
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmLvLedgerTxn.txt b/hrmsWeb/hrms/jsp/HrmLvLedgerTxn.txt new file mode 100644 index 0000000..8758953 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmLvLedgerTxn.txt @@ -0,0 +1,76 @@ +
      + + + + + + + + + + + + +
      Leave Transactions 
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + +
       Get Detail  Butn_prev (Alt+<) of Butn_next (Alt+>)
      +
      +
      +
      + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + <%=idx.toString()%><%=idx.toString()%>
      + + + + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmMainPage.jsp b/hrmsWeb/hrms/jsp/HrmMainPage.jsp new file mode 100644 index 0000000..7b9dc6b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmMainPage.jsp @@ -0,0 +1,104 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + +
      HUMAN RESOURCE MANAGEMENT SYSTEM
      + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +<% String sEmpNo=(String)request.getParameter("empNo"); +String sSiteId=(String)request.getParameter("siteId"); +%> + + + + + +
      + +
      + diff --git a/hrmsWeb/hrms/jsp/HrmMediclaimMaster.jsp b/hrmsWeb/hrms/jsp/HrmMediclaimMaster.jsp new file mode 100644 index 0000000..0274bff --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmMediclaimMaster.jsp @@ -0,0 +1,380 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + +
      + + +
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmMisReport.jsp b/hrmsWeb/hrms/jsp/HrmMisReport.jsp new file mode 100644 index 0000000..c22ef4f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmMisReport.jsp @@ -0,0 +1,468 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Branch + Regional OfficeBranch + Regional Office
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + <%=idx.toString()%><%=idx.toString()%>
      + + + + + + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + +
      Generate Current  Report + View Previous  Report +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + diff --git a/hrmsWeb/hrms/jsp/HrmMyWorkflow.jsp b/hrmsWeb/hrms/jsp/HrmMyWorkflow.jsp new file mode 100644 index 0000000..5bc488f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmMyWorkflow.jsp @@ -0,0 +1,450 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Query (Ctrl+Q)Insert (Alt+N) + + + of +
      + + + + + +
      + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + All + Leave + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + Act on Worklist
      +
      +
      + +
      +
      +
      + + + + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmOrgCalMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgCalMst.jsp new file mode 100644 index 0000000..fdf3c04 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgCalMst.jsp @@ -0,0 +1,361 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      Calendar Master Information
      + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row   + of
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgClassDtl.jsp b/hrmsWeb/hrms/jsp/HrmOrgClassDtl.jsp new file mode 100644 index 0000000..f5055f2 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgClassDtl.jsp @@ -0,0 +1,351 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgCntryMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgCntryMst.jsp new file mode 100644 index 0000000..8fe7c9d --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgCntryMst.jsp @@ -0,0 +1,334 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row   of +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgDistMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgDistMst.jsp new file mode 100644 index 0000000..8d793bd --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgDistMst.jsp @@ -0,0 +1,295 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Refresh (Ctrl+R) + of + Go (Ctrl+G)
      + + + + + +
      + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + +
      + + + + + + + + + + +
       
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/hrmsWeb/hrms/jsp/HrmOrgHolCal.jsp b/hrmsWeb/hrms/jsp/HrmOrgHolCal.jsp new file mode 100644 index 0000000..a0cf724 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgHolCal.jsp @@ -0,0 +1,409 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%>
      <%=idx.toString()%><%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgHolTypeMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgHolTypeMst.jsp new file mode 100644 index 0000000..acda04b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgHolTypeMst.jsp @@ -0,0 +1,220 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Holiday Type Master Information
      + + + + +
      Detail Information
      + + +
      + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgIncrementMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgIncrementMst.jsp new file mode 100644 index 0000000..0432ae4 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgIncrementMst.jsp @@ -0,0 +1,338 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgLangMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgLangMst.jsp new file mode 100644 index 0000000..f2cdc48 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgLangMst.jsp @@ -0,0 +1,310 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Refresh (Ctrl+R) + of + Go (Ctrl+G)
      + + + + + +
      + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + +
      + + + + + + + + + + +
       
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      +
      +
      +
      + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgQualMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgQualMst.jsp new file mode 100644 index 0000000..5c8dbb8 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgQualMst.jsp @@ -0,0 +1,326 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Refresh (Ctrl+R) + of + Go (Ctrl+G)
      + + + + + +
      + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row   + of
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgRatingMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgRatingMst.jsp new file mode 100644 index 0000000..79b368f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgRatingMst.jsp @@ -0,0 +1,339 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
       
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgRelationMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgRelationMst.jsp new file mode 100644 index 0000000..cd3cba6 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgRelationMst.jsp @@ -0,0 +1,307 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Refresh (Ctrl+R) + of + Go (Ctrl+G)
      + + + + + +
      + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgReligionMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgReligionMst.jsp new file mode 100644 index 0000000..01e0a0a --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgReligionMst.jsp @@ -0,0 +1,319 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Refresh (Ctrl+R) + of + Go (Ctrl+G)
      + + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + + + + +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + +
       Get Detail    Add Row   + of
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgScaleMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgScaleMst.jsp new file mode 100644 index 0000000..52b8278 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgScaleMst.jsp @@ -0,0 +1,367 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmOrgSkillMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgSkillMst.jsp new file mode 100644 index 0000000..2ce795b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgSkillMst.jsp @@ -0,0 +1,321 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      Skill Header
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      Skill Details 
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmOrgTehMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgTehMst.jsp new file mode 100644 index 0000000..4592c7f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgTehMst.jsp @@ -0,0 +1,295 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Refresh (Ctrl+R) + of + Go (Ctrl+G)
      + + + + + +
      + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + +
      + + + + + + + + + + +
       
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + + + + + + + + + + + +
       Get Detail    Add Row  Delete Row of
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/hrmsWeb/hrms/jsp/HrmOrgWorkGroupMst.jsp b/hrmsWeb/hrms/jsp/HrmOrgWorkGroupMst.jsp new file mode 100644 index 0000000..7aa722b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmOrgWorkGroupMst.jsp @@ -0,0 +1,386 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> +<%@ page errorPage="GenErrorPage.jsp" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Work Group Details
      + + + + + + + + + +
      Address Information
      Document Details Information
      +
      + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmCriteria.jsp b/hrmsWeb/hrms/jsp/HrmPrmCriteria.jsp new file mode 100644 index 0000000..e4f4ac1 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmCriteria.jsp @@ -0,0 +1,384 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmExperienceScore.jsp b/hrmsWeb/hrms/jsp/HrmPrmExperienceScore.jsp new file mode 100644 index 0000000..e6892fc --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmExperienceScore.jsp @@ -0,0 +1,359 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmGenAss.jsp b/hrmsWeb/hrms/jsp/HrmPrmGenAss.jsp new file mode 100644 index 0000000..6d287dd --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmGenAss.jsp @@ -0,0 +1,287 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + +
      + + + + + + +
      Generate
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmPrmKPARating.jsp b/hrmsWeb/hrms/jsp/HrmPrmKPARating.jsp new file mode 100644 index 0000000..4c1ef95 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmKPARating.jsp @@ -0,0 +1,412 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmKPARatingF.jsp b/hrmsWeb/hrms/jsp/HrmPrmKPARatingF.jsp new file mode 100644 index 0000000..ce7594f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmKPARatingF.jsp @@ -0,0 +1,424 @@ + <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmPrmNoticeDetail.jsp b/hrmsWeb/hrms/jsp/HrmPrmNoticeDetail.jsp new file mode 100644 index 0000000..21aec04 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmNoticeDetail.jsp @@ -0,0 +1,451 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Delete (Ctrl+D) + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%>
      <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmOrder.jsp b/hrmsWeb/hrms/jsp/HrmPrmOrder.jsp new file mode 100644 index 0000000..e17de80 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmOrder.jsp @@ -0,0 +1,310 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmQualCriteria.jsp b/hrmsWeb/hrms/jsp/HrmPrmQualCriteria.jsp new file mode 100644 index 0000000..5c73e8c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmQualCriteria.jsp @@ -0,0 +1,304 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%>
      <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmTestScore.jsp b/hrmsWeb/hrms/jsp/HrmPrmTestScore.jsp new file mode 100644 index 0000000..7b81533 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmTestScore.jsp @@ -0,0 +1,356 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + +
      + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmPrmViewAss.jsp b/hrmsWeb/hrms/jsp/HrmPrmViewAss.jsp new file mode 100644 index 0000000..e4073cd --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmPrmViewAss.jsp @@ -0,0 +1,471 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      Marks Obtained And Points Rewarded 
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + <%=idx.toString()%>
      + +
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmRecAdvAttrJobDesc.jsp b/hrmsWeb/hrms/jsp/HrmRecAdvAttrJobDesc.jsp new file mode 100644 index 0000000..6c9dadc --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecAdvAttrJobDesc.jsp @@ -0,0 +1,352 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Advertisement Attributes
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Qualification RequirementLocation Wise VacancyWork ExperienceJob DescriptionGeneral Skill RequirementLanguage Requirement
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecAdvAttrLngReqDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecAdvAttrLngReqDtl.jsp new file mode 100644 index 0000000..2a3501f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecAdvAttrLngReqDtl.jsp @@ -0,0 +1,378 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Advertisement Attributes
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Qualification RequirementLocation Wise VacancyWork ExperienceJob DescriptionGeneral Skill RequirementLanguage Requirement
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%> + + + + + + + +
      <%=idx.toString()%> + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecAdvAttrLocVacencyDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecAdvAttrLocVacencyDtl.jsp new file mode 100644 index 0000000..9cff721 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecAdvAttrLocVacencyDtl.jsp @@ -0,0 +1,388 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Advertisement Attributes
      +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Qualification RequirementLocation Wise VacancyWork ExperienceJob DescriptionGeneral Skill RequirementLanguage Requirement
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%><%=idx.toString()%>
      <%=idx.toString()%><%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecAdvAttrQualReqDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecAdvAttrQualReqDtl.jsp new file mode 100644 index 0000000..ce7856a --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecAdvAttrQualReqDtl.jsp @@ -0,0 +1,399 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Advertisement Attributes
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Qualification RequirementLocation Wise VacancyWork ExperienceJob DescriptionGeneral Skill RequirementLanguage Requirement
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%> + + + + + + + + + + + +
      <%=idx.toString()%> + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecAdvAttrSkillReqDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecAdvAttrSkillReqDtl.jsp new file mode 100644 index 0000000..69100e2 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecAdvAttrSkillReqDtl.jsp @@ -0,0 +1,367 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Advertisement Attributes
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Qualification RequirementLocation Wise VacancyWork ExperienceJob DescriptionGeneral Skill RequirementLanguage Requirement
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%>
      <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecAdvAttrWorkExpDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecAdvAttrWorkExpDtl.jsp new file mode 100644 index 0000000..24aed65 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecAdvAttrWorkExpDtl.jsp @@ -0,0 +1,376 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Advertisement Attributes
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Qualification RequirementLocation Wise VacancyWork ExperienceJob DescriptionGeneral Skill RequirementLanguage Requirement
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      <%=idx.toString()%>
      <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecAdvtMtn.jsp b/hrmsWeb/hrms/jsp/HrmRecAdvtMtn.jsp new file mode 100644 index 0000000..5ceaa0f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecAdvtMtn.jsp @@ -0,0 +1,537 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Advertisement Header
      + + + + + +
      + + +
      + +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Advertisement Detail 
      + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + <%=idx.toString()%><%=idx.toString()%><%=idx.toString()%><%=idx.toString()%> + + + + + <%=idx.toString()%>
      + + + + + + + + <%=idx.toString()%><%=idx.toString()%><%=idx.toString()%><%=idx.toString()%> + + + + + <%=idx.toString()%>
      +
      +
      + + +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnAddDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnAddDtl.jsp new file mode 100644 index 0000000..3d61580 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnAddDtl.jsp @@ -0,0 +1,785 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Personal Details
      + + + +
      + + + + + + + + + + +
      Present Address
      Permanent Address
      Passport Details
      Payment Details
      Police Records
      +
      +
      + + + + +
      + + + + + + + + +
       Get Detail  +
      + +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnEduDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnEduDtl.jsp new file mode 100644 index 0000000..0415513 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnEduDtl.jsp @@ -0,0 +1,478 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnExpDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnExpDtl.jsp new file mode 100644 index 0000000..334b853 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnExpDtl.jsp @@ -0,0 +1,505 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + +
      + + +
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnLangDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnLangDtl.jsp new file mode 100644 index 0000000..e7f3915 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnLangDtl.jsp @@ -0,0 +1,468 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnOtherDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnOtherDtl.jsp new file mode 100644 index 0000000..5c2ab97 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnOtherDtl.jsp @@ -0,0 +1,544 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Result Details
      +
      +
      + + + + +
      + + + + + + + + +
       Get Detail  +
      + +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnRef.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnRef.jsp new file mode 100644 index 0000000..25805bd --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnRef.jsp @@ -0,0 +1,442 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnResultDtl.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnResultDtl.jsp new file mode 100644 index 0000000..30e8f6d --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnResultDtl.jsp @@ -0,0 +1,476 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Result Details
      +
      +
      + + + + +
      + + + + + + + + +
       Get Detail  +
      + +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecApplnMtnTrngDtls.jsp b/hrmsWeb/hrms/jsp/HrmRecApplnMtnTrngDtls.jsp new file mode 100644 index 0000000..978465a --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecApplnMtnTrngDtls.jsp @@ -0,0 +1,440 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + <%=idx.toString()%><%=idx.toString()%>
      + <%=idx.toString()%><%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmRecEmpRecCreation.jsp b/hrmsWeb/hrms/jsp/HrmRecEmpRecCreation.jsp new file mode 100644 index 0000000..9a8a5c0 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecEmpRecCreation.jsp @@ -0,0 +1,732 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Insert (Alt+N) + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Applicant's Detail
      Attribute Details
      + + + + + + + +
      + + + + + + + +
      Passport Details
      Present Address
      Permanent Address
      Office Address
      Joining Details
      + + + + + +
      + +
      + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecScrutAppMaintainance.jsp b/hrmsWeb/hrms/jsp/HrmRecScrutAppMaintainance.jsp new file mode 100644 index 0000000..164ad9b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecScrutAppMaintainance.jsp @@ -0,0 +1,429 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Application Header
      + + + + + + +
      Generate Eligible Applicant
      + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      Scrutinized Applicant Details 
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + + + + + + + + +
      + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmRecTestCentreMst.jsp b/hrmsWeb/hrms/jsp/HrmRecTestCentreMst.jsp new file mode 100644 index 0000000..8cb867c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRecTestCentreMst.jsp @@ -0,0 +1,264 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Test Centre Details
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + diff --git a/hrmsWeb/hrms/jsp/HrmRetirementForecastRep.jsp b/hrmsWeb/hrms/jsp/HrmRetirementForecastRep.jsp new file mode 100644 index 0000000..36be744 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRetirementForecastRep.jsp @@ -0,0 +1,248 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      RETIREMENT FORECAST REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      View Retirement Status
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + +
      Save  Data + View  Report +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmRoasterEntry.jsp b/hrmsWeb/hrms/jsp/HrmRoasterEntry.jsp new file mode 100644 index 0000000..6dda26f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmRoasterEntry.jsp @@ -0,0 +1,367 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + <%=idx.toString()%> + Not Applicable + Merit + Direct + Quota + <%=idx.toString()%>
      + + + + + + + <%=idx.toString()%> + Not Applicable + Merit + Direct + Quota + <%=idx.toString()%>
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmSepAppln.jsp b/hrmsWeb/hrms/jsp/HrmSepAppln.jsp new file mode 100644 index 0000000..8be7862 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmSepAppln.jsp @@ -0,0 +1,351 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmSepCatMst.jsp b/hrmsWeb/hrms/jsp/HrmSepCatMst.jsp new file mode 100644 index 0000000..874df38 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmSepCatMst.jsp @@ -0,0 +1,220 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +   
      + + + + + + + +
      + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmSepClrEmp.jsp b/hrmsWeb/hrms/jsp/HrmSepClrEmp.jsp new file mode 100644 index 0000000..3693e94 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmSepClrEmp.jsp @@ -0,0 +1,378 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmSepClrLst.jsp b/hrmsWeb/hrms/jsp/HrmSepClrLst.jsp new file mode 100644 index 0000000..ddd552b --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmSepClrLst.jsp @@ -0,0 +1,322 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + of +
      + + + + + +
      + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + +
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmSepClrTmplMst.jsp b/hrmsWeb/hrms/jsp/HrmSepClrTmplMst.jsp new file mode 100644 index 0000000..e1bbb6f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmSepClrTmplMst.jsp @@ -0,0 +1,346 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmSepOrder.jsp b/hrmsWeb/hrms/jsp/HrmSepOrder.jsp new file mode 100644 index 0000000..2ea5c75 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmSepOrder.jsp @@ -0,0 +1,305 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmSettlementHeads.jsp b/hrmsWeb/hrms/jsp/HrmSettlementHeads.jsp new file mode 100644 index 0000000..dd89a1f --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmSettlementHeads.jsp @@ -0,0 +1,343 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmTrngBudget.jsp b/hrmsWeb/hrms/jsp/HrmTrngBudget.jsp new file mode 100644 index 0000000..b265190 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngBudget.jsp @@ -0,0 +1,365 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + <%=idx.toString()%><%=idx.toString()%><%=idx.toString()%>
      +
      + + + + + + + + + + + + + + + + +
       Get Detail    Add Row   + of
      + + + +
      +
      +
      + + + + + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmTrngCal.jsp b/hrmsWeb/hrms/jsp/HrmTrngCal.jsp new file mode 100644 index 0000000..f0ab9d9 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngCal.jsp @@ -0,0 +1,479 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + <%=idx.toString()%> + + + + + + + + + + +
      + + + + + + + + + + + <%=idx.toString()%><%=idx.toString()%> + + + + + + + <%=idx.toString()%><%=idx.toString()%><%=idx.toString()%> + + + +
      +
      +
      + + +
      +
      +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmTrngCalClose.jsp b/hrmsWeb/hrms/jsp/HrmTrngCalClose.jsp new file mode 100644 index 0000000..be2216e --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngCalClose.jsp @@ -0,0 +1,295 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      + + + + +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmTrngCrsMst.jsp b/hrmsWeb/hrms/jsp/HrmTrngCrsMst.jsp new file mode 100644 index 0000000..6806069 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngCrsMst.jsp @@ -0,0 +1,339 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmTrngEmpAtt.jsp b/hrmsWeb/hrms/jsp/HrmTrngEmpAtt.jsp new file mode 100644 index 0000000..0a4478c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngEmpAtt.jsp @@ -0,0 +1,392 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + +
       Get Detail    Add Row   of
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmTrngEmpFeedBack.jsp b/hrmsWeb/hrms/jsp/HrmTrngEmpFeedBack.jsp new file mode 100644 index 0000000..0cf42bb --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngEmpFeedBack.jsp @@ -0,0 +1,417 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + of +
      + + + + + +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + + + + +
      + + + + + + + + + + + + +
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + +
       Get Detail  of +
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/hrmsWeb/hrms/jsp/HrmTrngEmpHist.jsp b/hrmsWeb/hrms/jsp/HrmTrngEmpHist.jsp new file mode 100644 index 0000000..ab88346 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngEmpHist.jsp @@ -0,0 +1,536 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + +
      + +
      + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      +
      +
      + + + + + + + + + + + + +
       Get Detail  of +
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmTrngEmpReq.jsp b/hrmsWeb/hrms/jsp/HrmTrngEmpReq.jsp new file mode 100644 index 0000000..8015bcb --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngEmpReq.jsp @@ -0,0 +1,533 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      Requirement Details 
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + + +
      Submit
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmTrngFacFdbkDtl.jsp b/hrmsWeb/hrms/jsp/HrmTrngFacFdbkDtl.jsp new file mode 100644 index 0000000..f42ccdb --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngFacFdbkDtl.jsp @@ -0,0 +1,388 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + +
      of +
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + <%! String sFacId; %> + <%sFacId=request.getParameter("facId");%> + + + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmTrngFacFeedback.jsp b/hrmsWeb/hrms/jsp/HrmTrngFacFeedback.jsp new file mode 100644 index 0000000..a952a24 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngFacFeedback.jsp @@ -0,0 +1,389 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + + + + + + + + + + +
      Faculty Information 
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + +
       Get Detail  of +
      +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmTrngFacMst.jsp b/hrmsWeb/hrms/jsp/HrmTrngFacMst.jsp new file mode 100644 index 0000000..84c9ed7 --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngFacMst.jsp @@ -0,0 +1,292 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      +
        Years
      + + + + + + + + + + + + + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/HrmTrngFacTrngDtl.jsp b/hrmsWeb/hrms/jsp/HrmTrngFacTrngDtl.jsp new file mode 100644 index 0000000..626107c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngFacTrngDtl.jsp @@ -0,0 +1,431 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + of +
      + + + + + +
      + + + + + + + +
      TRAINING DETAILS
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Training Calendar
      + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hrmsWeb/hrms/jsp/HrmTrngInstCourseDtl.jsp b/hrmsWeb/hrms/jsp/HrmTrngInstCourseDtl.jsp new file mode 100644 index 0000000..65d198c --- /dev/null +++ b/hrmsWeb/hrms/jsp/HrmTrngInstCourseDtl.jsp @@ -0,0 +1,445 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Delete (Ctrl+D) + + of +
      + + + + + +
      + + + + + + + +
      + + + + + + + +
      + +
      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
       
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + +
      + + + + + + + <%=idx.toString()%>
      +
      +
      + + +
      +
      +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/LaunchPad.jsp b/hrmsWeb/hrms/jsp/LaunchPad.jsp new file mode 100644 index 0000000..e5718da --- /dev/null +++ b/hrmsWeb/hrms/jsp/LaunchPad.jsp @@ -0,0 +1,115 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ page import="java.util.*" %> +<%! + HashMap mapParentModuleIds; +%> +<% + mapParentModuleIds=(HashMap)session.getAttribute("ParentModuleIds"); + if(mapParentModuleIds == null) + response.sendRedirect("Error"); +%> + + + + Launch Pad + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/MainPage.html b/hrmsWeb/hrms/jsp/MainPage.html new file mode 100644 index 0000000..9539942 --- /dev/null +++ b/hrmsWeb/hrms/jsp/MainPage.html @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/Navigator.html b/hrmsWeb/hrms/jsp/Navigator.html new file mode 100644 index 0000000..669be0c --- /dev/null +++ b/hrmsWeb/hrms/jsp/Navigator.html @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepAllIndiaManpower.jsp b/hrmsWeb/hrms/jsp/RepAllIndiaManpower.jsp new file mode 100644 index 0000000..1a665a0 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepAllIndiaManpower.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      STAFF STRENGTH REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Manpower Details Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/RepAllIndiaManpower1.jsp b/hrmsWeb/hrms/jsp/RepAllIndiaManpower1.jsp new file mode 100644 index 0000000..c20a31d --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepAllIndiaManpower1.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      STAFF STRENGTH REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Manpower Details Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/RepAllIndiaManpower2.jsp b/hrmsWeb/hrms/jsp/RepAllIndiaManpower2.jsp new file mode 100644 index 0000000..1546cb7 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepAllIndiaManpower2.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      STAFF STRENGTH RECOMMENDATION MASTER REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Manpower recommendation master Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/RepAllIndiaManpower3.jsp b/hrmsWeb/hrms/jsp/RepAllIndiaManpower3.jsp new file mode 100644 index 0000000..91cd640 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepAllIndiaManpower3.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      STAFF STRENGTH CATEGORY WISE BRANCHLIST REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Staff Strength Category wise Branch List
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/RepAllIndiaManpower5.jsp b/hrmsWeb/hrms/jsp/RepAllIndiaManpower5.jsp new file mode 100644 index 0000000..d207ace --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepAllIndiaManpower5.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      MANPOWER SUMMARY DASHBOARD
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      ManPower Summary DashBoard
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/RepBranchListCode.jsp b/hrmsWeb/hrms/jsp/RepBranchListCode.jsp new file mode 100644 index 0000000..a7ffad4 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepBranchListCode.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      BRANCH DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Codewise BranchList Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepBranchListName.jsp b/hrmsWeb/hrms/jsp/RepBranchListName.jsp new file mode 100644 index 0000000..9de249e --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepBranchListName.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      BRANCH DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Namewise BranchList Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepBranchListZone.jsp b/hrmsWeb/hrms/jsp/RepBranchListZone.jsp new file mode 100644 index 0000000..27c0627 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepBranchListZone.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      BRANCH DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Zonewise BranchList Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepCessationList.jsp b/hrmsWeb/hrms/jsp/RepCessationList.jsp new file mode 100644 index 0000000..c56c480 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepCessationList.jsp @@ -0,0 +1,218 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      CESSATION LIST FOR A PERIOD
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      Cessation List
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepConfidentialFile.jsp b/hrmsWeb/hrms/jsp/RepConfidentialFile.jsp new file mode 100644 index 0000000..9a68b3c --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepConfidentialFile.jsp @@ -0,0 +1,234 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      CONFIDENTIAL FILE REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Generate Confidential File
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepConfirmationDue.jsp b/hrmsWeb/hrms/jsp/RepConfirmationDue.jsp new file mode 100644 index 0000000..3182838 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepConfirmationDue.jsp @@ -0,0 +1,237 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      LIST OF OFFICERS WHOSE CONFIRMATIONS ARE DUE
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      Confirmation Due Report
      +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepCostToCompanyFile.jsp b/hrmsWeb/hrms/jsp/RepCostToCompanyFile.jsp new file mode 100644 index 0000000..549ca5c --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepCostToCompanyFile.jsp @@ -0,0 +1,233 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      COST TO COMPANY (CTC) FILE
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      CTC File Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepDistnOfManpower.jsp b/hrmsWeb/hrms/jsp/RepDistnOfManpower.jsp new file mode 100644 index 0000000..83c389c --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepDistnOfManpower.jsp @@ -0,0 +1,249 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      DISTRIBUTION OF MANPOWER ON A PARTICULAR DATE
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      Manpower Distribution Report
      +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepEmpAddress.jsp b/hrmsWeb/hrms/jsp/RepEmpAddress.jsp new file mode 100644 index 0000000..34cd415 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepEmpAddress.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      ADDRESS DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Employee Address Details Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/RepGrossSalExec.jsp b/hrmsWeb/hrms/jsp/RepGrossSalExec.jsp new file mode 100644 index 0000000..4d3ee66 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepGrossSalExec.jsp @@ -0,0 +1,216 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      GROSS SALARY OF EXECUTIVES/AM ABSORBED FROM MT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      Gross Salary Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepHistOfEmp.jsp b/hrmsWeb/hrms/jsp/RepHistOfEmp.jsp new file mode 100644 index 0000000..d128398 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepHistOfEmp.jsp @@ -0,0 +1,218 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      HISTORY OF EMPLOYEES REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      View History Of Employees
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepImpactFinYear.jsp b/hrmsWeb/hrms/jsp/RepImpactFinYear.jsp new file mode 100644 index 0000000..155b8fa --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepImpactFinYear.jsp @@ -0,0 +1,201 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      IMPACT DUE TO ANNUAL RISE
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      View Impact for Current Financial Year
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepIncrDue.jsp b/hrmsWeb/hrms/jsp/RepIncrDue.jsp new file mode 100644 index 0000000..43f317c --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepIncrDue.jsp @@ -0,0 +1,236 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      EMPLOYEE INCREMENT DUE REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      Employee wise Increment Due Report
      + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepJoiningStatus.jsp b/hrmsWeb/hrms/jsp/RepJoiningStatus.jsp new file mode 100644 index 0000000..23f7d44 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepJoiningStatus.jsp @@ -0,0 +1,210 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      JOINING STATUS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      View Joining Status
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepLeaveLedger.jsp b/hrmsWeb/hrms/jsp/RepLeaveLedger.jsp new file mode 100644 index 0000000..f90adbf --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepLeaveLedger.jsp @@ -0,0 +1,221 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      ALL INDIA MANPOWER DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Manpower Details Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + diff --git a/hrmsWeb/hrms/jsp/RepMTExecDetails.jsp b/hrmsWeb/hrms/jsp/RepMTExecDetails.jsp new file mode 100644 index 0000000..e520bcb --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepMTExecDetails.jsp @@ -0,0 +1,213 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      DETAILS OF MT/EXECUTIVES
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      View MT/Exec Details
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepManpowerMediclaim.jsp b/hrmsWeb/hrms/jsp/RepManpowerMediclaim.jsp new file mode 100644 index 0000000..5c6fad9 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepManpowerMediclaim.jsp @@ -0,0 +1,233 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      ALL INDIA MANPOWER FOR MEDICLAIM PURPOSE
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      View Employee Dependents for Mediclaim
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepOfficersRatedPoor.jsp b/hrmsWeb/hrms/jsp/RepOfficersRatedPoor.jsp new file mode 100644 index 0000000..37a9890 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepOfficersRatedPoor.jsp @@ -0,0 +1,232 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      OFFICERS RATED POOR
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      List of Officers rated poor
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepPerformanceAppraisal.jsp b/hrmsWeb/hrms/jsp/RepPerformanceAppraisal.jsp new file mode 100644 index 0000000..bfbc43a --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepPerformanceAppraisal.jsp @@ -0,0 +1,213 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      PERFORMANCE APPRAISAL REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      View Performance Appraisal Details
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepPromotionList.jsp b/hrmsWeb/hrms/jsp/RepPromotionList.jsp new file mode 100644 index 0000000..866fec7 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepPromotionList.jsp @@ -0,0 +1,211 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      PROMOTION LIST REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Promotion List Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepQualAllIndiaEmp.jsp b/hrmsWeb/hrms/jsp/RepQualAllIndiaEmp.jsp new file mode 100644 index 0000000..d40816c --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepQualAllIndiaEmp.jsp @@ -0,0 +1,235 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      QUALIFICATION OF ALL INDIA EMPLOYEES REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Qualification Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepRatingVisAVisAwards.jsp b/hrmsWeb/hrms/jsp/RepRatingVisAVisAwards.jsp new file mode 100644 index 0000000..f652a6a --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepRatingVisAVisAwards.jsp @@ -0,0 +1,213 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      RATING VIS-A-VIS AWARD FOR OFFICERS
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Rating Vis-a-Vis Awards
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepRecrCessStatus.jsp b/hrmsWeb/hrms/jsp/RepRecrCessStatus.jsp new file mode 100644 index 0000000..3eb1546 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepRecrCessStatus.jsp @@ -0,0 +1,251 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      RECRUITMENT/CESSATION STATUS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      View Recruitment/Cessation Status
      + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepRecrVisAVisSep.jsp b/hrmsWeb/hrms/jsp/RepRecrVisAVisSep.jsp new file mode 100644 index 0000000..8493f62 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepRecrVisAVisSep.jsp @@ -0,0 +1,234 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      RECRUITMENT VIS-A-VIS SEPARATION
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      View Recruitment/Separation details
      + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepRecruitmentList.jsp b/hrmsWeb/hrms/jsp/RepRecruitmentList.jsp new file mode 100644 index 0000000..5835cfa --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepRecruitmentList.jsp @@ -0,0 +1,250 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      RECRUITMENT LIST
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      View Recruitment List
      + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepRetirementDetails.jsp b/hrmsWeb/hrms/jsp/RepRetirementDetails.jsp new file mode 100644 index 0000000..a7aa27f --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepRetirementDetails.jsp @@ -0,0 +1,253 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      RETIREMENT DETAILS
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      View Retirement Details
      + + +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepRetrDue.jsp b/hrmsWeb/hrms/jsp/RepRetrDue.jsp new file mode 100644 index 0000000..d0ceedc --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepRetrDue.jsp @@ -0,0 +1,220 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      EMPLOYEE RETIREMENT DUE REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      Employee wise Retirement Due Report
      +
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepStaffingListEmp.jsp b/hrmsWeb/hrms/jsp/RepStaffingListEmp.jsp new file mode 100644 index 0000000..c188cb8 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepStaffingListEmp.jsp @@ -0,0 +1,220 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      STAFFING LIST OF EMPLOYEES REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      View Staffing List of Employees
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepStatusOfDiscCases.jsp b/hrmsWeb/hrms/jsp/RepStatusOfDiscCases.jsp new file mode 100644 index 0000000..7184187 --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepStatusOfDiscCases.jsp @@ -0,0 +1,233 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      STATUS OF DISCIPLINARY CASES REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Status Of Disciplinary Cases Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + +
      + Excel DownLoad + Text DownLoad + PDF DownLoad +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/RepStayBranch.jsp b/hrmsWeb/hrms/jsp/RepStayBranch.jsp new file mode 100644 index 0000000..3af589f --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepStayBranch.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      EMPLOYEE STAY DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      Branchwise Employee Stay Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepStayGrade.jsp b/hrmsWeb/hrms/jsp/RepStayGrade.jsp new file mode 100644 index 0000000..58fd8ad --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepStayGrade.jsp @@ -0,0 +1,219 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + +
      EMPLOYEE STAY DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + +
      Gradewise Employee Stay Report
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/RepTrainingDetails.jsp b/hrmsWeb/hrms/jsp/RepTrainingDetails.jsp new file mode 100644 index 0000000..b143c0f --- /dev/null +++ b/hrmsWeb/hrms/jsp/RepTrainingDetails.jsp @@ -0,0 +1,256 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + +<%@ page import="wenrgise.common.utility.ReportReader" %> +<%@ page import="wenrgise.common.utility.ParamUtil" %> +<%@ page import="java.lang.String" %> + + + + + <bean:message key="hrm.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + of +
      + + + + + + +
      + +
      +
      + + + + + +
      TRAINING DETAILS REPORT
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      View Training Details
      + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + + + + +
      +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + <% ReportReader oReportReader=new ReportReader(); %> + <% ParamUtil oParamUtil=new ParamUtil(); %> + + + + diff --git a/hrmsWeb/hrms/jsp/SearchDriver.jsp b/hrmsWeb/hrms/jsp/SearchDriver.jsp new file mode 100644 index 0000000..c3b04a9 --- /dev/null +++ b/hrmsWeb/hrms/jsp/SearchDriver.jsp @@ -0,0 +1,88 @@ +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + + + + + + + + + +
      + +
      + + +
      + +
      + + + + + + + diff --git a/hrmsWeb/hrms/jsp/WFLDocAttrDtl.jsp b/hrmsWeb/hrms/jsp/WFLDocAttrDtl.jsp new file mode 100644 index 0000000..8c9e9a6 --- /dev/null +++ b/hrmsWeb/hrms/jsp/WFLDocAttrDtl.jsp @@ -0,0 +1,348 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + <bean:message key="WFL.title" /> + + + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/WflDtlDocType.jsp b/hrmsWeb/hrms/jsp/WflDtlDocType.jsp new file mode 100644 index 0000000..bbe011b --- /dev/null +++ b/hrmsWeb/hrms/jsp/WflDtlDocType.jsp @@ -0,0 +1,365 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + + <bean:message key="WFL.title" /> + + + + + + + + + + + + + + + + + +
      + +
      +
      + + +
      + + + +
      + + + +
      + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + +
       
      + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + +
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/WflGenConditions.jsp b/hrmsWeb/hrms/jsp/WflGenConditions.jsp new file mode 100644 index 0000000..78cb285 --- /dev/null +++ b/hrmsWeb/hrms/jsp/WflGenConditions.jsp @@ -0,0 +1,353 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + + <bean:message key="WFL.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Query (Ctrl+Q)Insert (Alt+N)Execute (Ctrl+U)Save (Ctrl+S) + Delete (Ctrl+D) + Print (Ctrl+P) of +
      + + + + + + +
      + + + + + + + +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + = + == + NOT = + > + < + => + <= + IN + NOT IN + +
      + + + + + + + + + + + + + + + +
      + + + + + + +
             Or      +     And     + Show Final Formula +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/WflWorkflowConditions.jsp b/hrmsWeb/hrms/jsp/WflWorkflowConditions.jsp new file mode 100644 index 0000000..6aaead3 --- /dev/null +++ b/hrmsWeb/hrms/jsp/WflWorkflowConditions.jsp @@ -0,0 +1,310 @@ +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/enrgise-html.tld" prefix="enrgise" %> + + + + + <bean:message key="WFL.title" /> + + + + + + + + + + + + + + + +
      + +
      +
      + + + + + +
      + + + + + +
      + + + + + + + + + + + + + + + + +
      General Information
      + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + +
       
      + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Alter Conditions
      + Alter Conditions
      +
      +
      + +
      +
      +
      + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hrmsWeb/hrms/jsp/report.jsp b/hrmsWeb/hrms/jsp/report.jsp new file mode 100644 index 0000000..43dc3ae --- /dev/null +++ b/hrmsWeb/hrms/jsp/report.jsp @@ -0,0 +1,87 @@ + +<%@page import="net.sf.jasperreports.engine.export.JRTextExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRTextExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRCsvExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRCsvExporter"%> +<%@page import="net.sf.jasperreports.engine.JRExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRHtmlExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRHtmlExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRPdfExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRPdfExporterParameter"%> +<%@page import="net.sf.jasperreports.engine.export.JRXlsExporter"%> +<%@page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%> +<% +//out.clear(); +//out.clearBuffer(); +long startTime = System.currentTimeMillis(); +if ("C".equalsIgnoreCase(request.getParameter("DOWNLOAD"))) { + JRCsvExporter csvExporter = new JRCsvExporter(); + csvExporter.setParameter(JRCsvExporterParameter.JASPER_PRINT,request.getAttribute("reportBody")); + csvExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); + response.setContentType("application/octet-stream"); + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + csvExporter.exportReport(); + //response.flushBuffer(); + //response.reset(); +} +else if("T".equalsIgnoreCase(request.getParameter("DOWNLOAD"))){ + char PAGE_BREAK = 12; + JRTextExporter textExporter = new JRTextExporter(); + textExporter.setParameter(JRTextExporterParameter.JASPER_PRINT,request.getAttribute("reportBody")); + textExporter.setParameter(JRTextExporterParameter.OUTPUT_WRITER, out); + textExporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT,new Integer(53)); + textExporter.setParameter(JRTextExporterParameter.PAGE_WIDTH,new Integer(130)); + textExporter.setParameter(JRTextExporterParameter.BETWEEN_PAGES_TEXT,String.valueOf(PAGE_BREAK)); + response.setContentType("text/html"); + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + textExporter.exportReport(); + response.flushBuffer(); + response.reset(); +} +else if("P".equalsIgnoreCase(request.getParameter("DOWNLOAD"))){ + JRPdfExporter pdfExporter = new JRPdfExporter(); + pdfExporter.setParameter(JRPdfExporterParameter.JASPER_PRINT,request.getAttribute("reportBody")); + pdfExporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,response.getOutputStream()); + response.setContentType("application/pdf"); + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + pdfExporter.exportReport(); + response.flushBuffer(); + response.reset(); +} +else if ("E".equalsIgnoreCase(request.getParameter("DOWNLOAD"))){ + // coding For Excel: + JRXlsExporter exporterXLS = new JRXlsExporter(); + exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, request.getAttribute("reportBody")); + exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream()); + exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); + exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); + exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); + exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); + // SET THE MIME TYPE. + response.setContentType("application/vnd.ms-excel"); + // set content dispostion to attachment in with file name. + // case the open/save dialog needs to appear. + String fileName = (String)request.getAttribute("fileName"); + response.setHeader("Content-Disposition",fileName); + exporterXLS.exportReport(); + response.flushBuffer(); + response.reset(); +} + +else { + JRHtmlExporter exporter = new JRHtmlExporter(); + exporter.setParameter(JRExporterParameter.JASPER_PRINT, request.getAttribute("reportBody")); + exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); + exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); + exporter.setParameter(JRHtmlExporterParameter.IS_WRAP_BREAK_WORD, Boolean.TRUE); + exporter.exportReport(); + response.flushBuffer(); + response.reset(); +} +long endTime = System.currentTimeMillis(); +//Logger errorLog = Logger.getLogger("ERRORLOG"); +//errorLog.fatal("REPORT RENDERED="+request.getParameter("reportPath")+", TIME TAKEN="+(endTime-startTime)); +%> diff --git a/hrmsWeb/hrms/jsp/untitled1.html b/hrmsWeb/hrms/jsp/untitled1.html new file mode 100644 index 0000000..18237ba --- /dev/null +++ b/hrmsWeb/hrms/jsp/untitled1.html @@ -0,0 +1,14 @@ + + + + untitled1 + + +

      This is sample HTML text.

      +
        +
      • Item 1.
      • + : +
      • Item 2.
      • +
      + + diff --git a/hrmsWeb/hrms/jsp/vssver.scc b/hrmsWeb/hrms/jsp/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..dea69304c7fb7e24641b206f224376a57ac21a67 GIT binary patch literal 208 zcmXpJVr1Y>ZLLgyujIM*->r)C%UO0r`E#7Mo2jHh}r*Ao+z)9QQX)1oJb1{5wi9+XHHs zfccp~{*Hxmlczr02j*u1`O}U+>A02c4d!P9`KNCuy5;JZgZVi?eyEO%TB#8en4b&e Nx5fJw%Q^~z`2f`cMAV7g2Wl^=EBXA_n0&wu* zD3Y%0#IX}6O`W)L?AWc{y!@ygw@or}<+?K+XVi`}9cMc6Odr#BTDLRFbkb>>X`AWe zkEXwG_i%S0L4fW|XKHG&cf0%Tx8HvI?f2T#>;FV8Ws?pTH7it}3*E1lOPXnFCBwAJ zA+0#C7q!qi(U=sCB>oQkg^!wI)R8d?B|Wd5Q7zS??XmmSt7@Na^i67}uIBXz)!Dpu zI!2pqu((>#CKu-B^d*bBC2(FX&i74Pre2%};6@wJ9LcNY@&oiR`IbyNQjfM-wG0B2 z!+5MDa9@-Hvxa3Eg>luyLZVD>exXntF&2telxO4GWJ%3ndZ+h-p0#o_)TPfC4O5#? zF;ca3qc}rb^zvxlP^}R$ZqzU=&1AsxRJ&T15$LAFl0>A=W`%w16KqA!{`84tc01>OweXBKxG{pETdGx*14F|igAOt zAhlf5V$?pXX0FVeSYy_rTVh~dUwN*tYGeE4#`ZDaidir|AXy=o#C&gd+Qu{$6o|G< zPcBQL z#3U3;lv;D*K!}qxS<35HIG;BbwQP*Gh*NO^G9OtgnOeDwL)2KNT-ei4C`Z>xRwS<# za8S?UEb+qe$K?62!%6471&HiN8o`L2|N&fF-W!}*-u9N=c0>nyX;ZtKv?Q$?^Y51VZ_3A3R$Pq;6>Gr)@nqXuR_lB%*u^}5Qo+&#H$2& zi${0uz<#m`j}}LDvus_+VdGiT&CoWx2lhr&EiF5(<`=Z`4DGbrS-qVR7Ayf0=b-w~ zi9t!NU|iK=*cXNv#?iPkOo5V7*4dX}^AGQ$Y?+#s$#E@8EsN~UL`hk~Z#hOA*g44X z`C;ba5N!1t*a_3Ps*A&Stbx)xBQ3g+!OAFzbik|nc!tfG5_VMcPT6!tTjoB9OLM`< z3R#74b(B=rr~)N-x7Akm+|?PQZH^rf>Ukswo6A1UWEvhz*PrwT@53dFnolJeLzO~vdYB_7dSrO=Nz*^lsc?Mp_lgt9oR4e%e z8aI0QGBCvR9I8i&XHg8>_kXdZuDB5jCgy^XLMd-7Yw%Hcs_NCT#0jZe|LO(@|6i3fJ#&J&XQzDpEFMqq>&&xPe`W&}I$e3L>j3G3~0BAEr)?kB$hO zQhEW(Zc`3gjt$@=a3l;-LlD@ zMl6(@Z-(0sm&^7zZNM9x$-)BLDoi^Z0QUb^bYFt+P$7RpH9-mDN$8WKjU4r{RimJK zcRRR}+MEVWnprttjCMLODR?24URpsBmJXMN%?jI>_(EPpP;gEBg2kAY7Y@A*N5BHH zMNwVia%a`ybrhJb6NJdc0>Gc(}_ws8DvBT|H(yX5D}Pl^6g0 zk;hL$-&M4+Afp$<+nJue>S4Cm_5Gmv@jre3zkY&YGZi&iB8E>2O6`&xVxE&}(_|A1 z+FD0S1B1s0;RcIgYs1#XB%&wB#tmMOy{?kn_lehV}U~T1GFx-{C(Vhd4$s5RZNP_Vo)4)okQbFHZiNY#baA z=+;`)hl7pnHQ4A6pN*VNCZ@o}+Cu2%Aiqz$*3;2cBH|xY%Q@tc-a7Nir=NNA+Oa0~ z)D{EaZ1bIWp+ug=qCNEvQZMwZ*hqm6wY~MAIiVNoML^%oV^|NZH}|S=JY&_jjI)yf1SWI z&xx7!V3JNhv_`QK$6w;St7~$58>vgjK7*c(CDVY{Vd)wci{pBvL9B%M$OXsvmIoFz zbGdP-a-P9hF~jK)d>lqfS7zd1f;-C@Q!gPiXSu0Ktg4L6h+rJ}(r{Ii6=052uBu4d zBVmt$J&o8gZNnmvQWTg6xtDd!gWOBsZGZbty!T&96{Em64~OeXrzg8FFu20Tw-1OL z1P>7VvPf_|>1^;?_6+;Amaz~T?HK@U8jD7f;pE8J#dIt(9f_@>86Eg~hu;BesAwHX zMwbl7&(=0*7Hx(H9xkf+kb7Nc2V4o>OMxePuV22ovI`rr3+wgM9W3rn zw2Cb4s9{3R3ndE&eTLo0$>p-86_6)DwgP$E?RK7Fngiz*NBMubl?p-+i?$^r6NzLh zJrPdA2S`Pdlj-sB1Oh`>2jY|p=DsRNY_>;?B;xVNNGh6$BSR;k%Mauc^%sj;hVv=j zF4W+L~w08rQQME_JA|tR5(4Em`aXdJL})FC0V0Rij(feRGE5m zBpIDZ#UhxxuilwCmkiG$2ZU>j$%=;XqT6T_7E6qTV~&UkTM;vm3zM<9&8qD-a55s7 zkRG0jpW#s-ak*R3@=`l_r>an%ijGIpGl@9Hb-Uv@f}4Ru<{h!q~WOve)8Gm#`j$K64pLt_Ttn|Q}n=$T5!(qmy> zdeWsQD2DS^pqqnCwJ?VCUS2cpJ0mZqiabn5lc}k2EIPvk^wi(SX&pzK?@_CX+8Uiq zN6*F+$q0o0Y&0I0BJ7bzJKDjyu6qM>E?H%o+#`*g{z@a~z2?Gsk{1fZg`aA)Au@XdwKq8oIXAPzYO4Y|B5 z0#2mlm45hBm409nsb(aNrc$FvPA+`_>mh8ZyFi~ORBCuDD8^Qzr0UDPr4m%HL{LZd zdJx?8W%}wrymjowitgpGXuY>DE*j55YDPqgSDG0lSTwAlUbNYEaInAsME_8~ z_&a%Y=y0&Q;l#>@lPeoeIXnpt^!H=*ae-@aU|B_iKE>a{PKfkJI3}l+!6fn&okeXiX!{fg2YT4I z{WgL+DEmk{J~ciZk!h-L3;XgzVC2las4zxl-558HBw|zJ@ftW4Q0XA_trMY#hNebC z`YWpnR4g+)RU$87FAF6291@xv;j_8qA)%$w5Ql_z!C2wdtsnqL0la6Xwl>1Hnt--O zLmUDE_C9z>;CWvbv%6XK`nUOteVflC`L1Da<#x-rA2spkq-B(DIL_W1B~MzW#`R5& zv`jZohO5wyu-Si}4O)KKWARS2rXU4?e7f^frIg>H0vYXuLr7T^g~YAxQ0Mr(CCQL;jv@cr`HbS0&s zP-wk-C{soXwMz_~;a6yrU8y9ky%UK1t3ul($ch|}LR%{dE{>WihE$<}_0m)EQy@~? z9aL2o6mvTrUbCjq7N^~{HC|}10Z^#*Hg-GiP^jr(&$L3#Blt)nKsQmaotkNHfLf?^ z13p~1B|vTRZGV9L^6g-NHpsW$0JY1v!vX4$Z=nDMTfW^Epe?kODYzp*+vM9_0opF#h6A)izMTosN95aR048ZCj~ENk zF8OvYK)dBzEI@nYTRebo2L;>&wwk|lk)JK3I4_B<&McJiH80}fY!nPqsQ;kn>pPB0 z>sOhX?abNRvg%XF5PrG~EtLFW9g`49fw!D4S;#e76M@kOnmVf^57OB2ims z`6;c)R8$|U?>-ROMk;m|m(@_H_WYbg>PyVtkAUrTkLN2iyD2~!%68B!fd`zZYou4J zG+-Oeoi#W%%G?<^3U9vo?%TK@PF2d1Se)=W1)lpV{`WQC1qN)7!$oi}p zb6W^W8$F7{%6iIApHw_IYkqoMA{H9TPoIHsuTW2Z`m9pr;rr}GJs!)}a?Wd<8+O8h*)6;dw3IHQLv!yg|2eae#{+E)H>Vgo{2d2DmuN#c?i9aB+%@(_Gxn#hqM) zxftOh!o^uGqFmg~#W)uUF3x`ob1RfYIVVDvZQ$;1*sndXNH@a9+ywg(MD1n-GkfU( z?W4nV3k}e%G(`L9G+OSWgA}12I!C>@bU#EXKwP9FxZ@5%XZBH!`l)~s_$-+gVXG9H z1dLq$F?%<=dJkQrdwLIFqf5OtYa8sU>_s~rHkNxgZe-0 zJ=A^q_h`;XZ&QxBc&Ph+w|W58yj$%-wdht4p;~gQM^H80Y9FeWTOC04s#`sZ>XKVM zj_QMM^#rO9xz$ssKI~Rcqxx~Tdb_*okAnL|QLOeHcHwStGe)=3INsv;svto+P0$jZ zr^m5#&w!sVfur96SFVFEJ~op!f0u0T#4yt*?3o^85joWTDYqI%_0w*31l3=5s}WRx z#jT!osoW{f$9i&XTy&Kgpy47)1pK+@R zRG)RL9=VlNTmcn%P*DICMNnaYiW263j(!ca{5rVVjM@u)=9E+53hwmjkCgFUui^PN ze*D*t-zoee_?^e^Ui@_Y7VvunzbEi}4!>9Md*k=%%NLuk(bvXbp@%*1rssW*-qd%r{B-=&w|rr*R2yHOhvwbxMVL@i?X9sVYWkq3AdM-_?$%Y6_G zco@t07>&`RSjuA%k56McpTQ9 zt|(yW?|ir!`hg`>foHD-=r*YCh_ac+lx=ig*-j~CC*7;;qRYxn@P>nwS8jm=dMhm{ zJ@5j1=`ke)cdU<|RF2Yf$}xB~C*g0LqSut$=?&!$dJ`XAUsuk7p?o4>RB^XhGc{t> S|L-wQlIa|Lsf?WpGXDnyl6|oN literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/AllIndiaManpowerList.jasper b/hrmsWeb/hrms/report/AllIndiaManpowerList.jasper new file mode 100644 index 0000000000000000000000000000000000000000..257064a85330247c2eedd70704439cc02aafe534 GIT binary patch literal 13505 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/All_India_CTC.jasper b/hrmsWeb/hrms/report/All_India_CTC.jasper new file mode 100644 index 0000000000000000000000000000000000000000..de3c274d576f3bb4dd733f303b5e9a5aea8d7069 GIT binary patch literal 39283 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/BranchList_Codewise.jasper b/hrmsWeb/hrms/report/BranchList_Codewise.jasper new file mode 100644 index 0000000000000000000000000000000000000000..9ffa570a70d5b5214744cc3626b92000553b179b GIT binary patch literal 16738 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 WGaYv2|Ay)$fX-lJkXC6L>wf{28WXty literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/BranchList_Zonewise.jasper b/hrmsWeb/hrms/report/BranchList_Zonewise.jasper new file mode 100644 index 0000000000000000000000000000000000000000..644043d8db6c12e3bf3b510dd046bc14e1b6c30b GIT binary patch literal 19003 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Categorywise_BranchList.jasper b/hrmsWeb/hrms/report/Categorywise_BranchList.jasper new file mode 100644 index 0000000000000000000000000000000000000000..1bdef3fb253bc7a0a4f1516d7866dc19a396d8d2 GIT binary patch literal 19039 zcmds8dvIK5bw76{OKWK@+wvZ1WE{nk`N%21j0KlkCK>#36nN6KpP4JGcXXCk}|ZEPDz>4PHATf{hjao z_CBQb?iDTl1C92(_j{c4o$s9UopZj&ee!3tu4>Zml5P!DX9n)bRV%t_>Xou-RR{Fa ztWnYjj*G&yC?xTB?RNvzlBCXjdA?#4_2HbAvuJzrj@;SYpiv&o=%$e?8s~D;Mg2&U zHmhc-+`OJyn3*w_Eb5kxi@DP5V8$|y(kvQoPz}vkF;}hLNpGOQl1crIXq(PeL0~$H z$4UaPPEcsNY+2>`(VU5aB$(df!h9)KUMN`!?u~PqN-mG??b=gD!J3<-O~!1gZ0h4V zK;|r?T$-dUMs=iE&RH=5H&QNJy2%ZznT7fJoVlFR7tvgwq%NbHHLRkp3KG;&)MqS7 zMU*F(5@%1t7=s&Ac_ib#TqjUx(V7$ZcrP?daGQiVe49)(@Uu` ziy*sP(Ua6Moy(t@H8IA5MOP)kyus?sphvKSQm})}w^9L&4@p+YAu-=u?XqKf4it#8 z(-bVAo2qVAE!us$32LSYO@Y0$pwHwMiq=TEWLebH1Wt;P+cIGaG-E9nb&IZU0xOyU ztgWD1IiskkUN-||Ai1|0$)2veXUgV$&Kk+(t+Ki7Xe2mn%!~Pv(J`EjQjr%dqX@lc znuDy=3lOAG;3RcHnJrcf4|_Z3b4E$=$f9eT49sC>YYDSRVQwo4xr%J!;MZpF*>mOfu8<}AiB*bIl{XI4RgHR~*%76R2$MVb=Q
      _ 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Confidential_File_Report.jasper b/hrmsWeb/hrms/report/Confidential_File_Report.jasper new file mode 100644 index 0000000000000000000000000000000000000000..81605640bce9c370de63160c77f7594c4e5fd757 GIT binary patch literal 24848 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 aT+p^M!Jr#Bry~Zds^?w1Vih;ra literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Increment_Due_Report.jasper b/hrmsWeb/hrms/report/Increment_Due_Report.jasper new file mode 100644 index 0000000000000000000000000000000000000000..dfed1aeb2461472f4a29989d8f86b5adcacc0a1f GIT binary patch literal 27416 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Leave_Ledger.jasper b/hrmsWeb/hrms/report/Leave_Ledger.jasper new file mode 100644 index 0000000000000000000000000000000000000000..7933689b47c2fbb379526e2dff103b97078ad416 GIT binary patch literal 45518 zcmeHwd3+p4m48)Bvc}R_KI0^g9Z#IYr)0}_Vke+uWGfy?Mw0E=1}0;vWlcPqnas3o zISBz1k`NMpWPyYbU?C9B00|4&lWC>Rm@WQej8^RTq?80t--&a-LT|FAj z)Y#JRpWn)#sqR-@ua5VvSM{p9>iLtuVKw<2Tb8z+ruvr6^>R zNbc2M+;%&G8i=_4EHsE>^0t$A*s}d)vZfj#DRQqLw1*O-DW@Zob{w{%44;IN(o)3~ zYoBv8WjpM`GQ1)g*rpBIP9m97wXPXLW~lPYa#ao#J!dGB8%a1Fi2)~*JL>mHNH{qn z^rO#4b7snpJnAG<==W6T5OwNN04X|fj5VM$JJc}(;;kP^B-2Vp4qIBLVZJb{)6gQ7 z^R%?UT{IKbqRta2L-j2Uz-f6BBxG?>Ia#=(tj){Ltzc^;WJFRSn zAA?8x*clkGot*6q4DU%g!##)X+z>iMjLl1=2Zl2_nx%Ybh`kw}Iv zUkBl;zNPXy+pABDC~#b1XL<=})F^nopUu@C=TKS9LQuwa<&<%|E0>)K#f91}^z!Pp zhivr1fx_})Y=M`iKa)v0$!tN5Af05s6@%U(Ql;+ERLWsQAb@g6@O9 z5q&-eAau9nHAs_4wWMHg&s-NOh|YTkFvce8%TQ^>Gf!qDA_rLa8()gSu{93kRf@i6cj~vf+pd* zoUl?UmJ&@vIl^)ZG;Ed@rGpw4@xi8rav5o!nO=d+8oUTSt2)F6Gn$QY#z_to zB8^_(WZ3J+_4xVP5e3ZgFVC0IhqQ^a3`K%GPW^q5AMczY3KK`1&V`| zwq2M@?ofz_7$bY_k<4M60HYK_zgt;2o5?51a3w8XFQ#=pe<(3MHniw zxeR6`Cu!%q5?O~emT4_o=qKNT;a>3{^@m-P;a+8cPo?!?=;c1<&8a_tY(cY`n}Xk=}ok@daZSH9_moqt+rG2Y5*XfC$VrDyqx zx<@fe09uUbLX6^6Tk4ywbqPj#H z+%H3xq!&POrmsDsML+z_*FX5&*55r39qVv)j5t@l0z7on>;=n-zu8dmz%V8|sE;EX zqrBFM!D}-`t9prul}uc=2FsPE{yNm%t41?b!_=BXHF{N7FJBKTqNR8(%$F7@v0tdp z>6GUUVgwphYo!=fIfhq(qA3dgu9H1 z-dkt}(i}gw*G{CoC!!NhAB7A>NfW;d>@6&5Wbe0soZRuDU1DfQ6KJu%(Xa;=jjketEq0X`dpMHg44nGTFOBLhef_rLY25P0$Q>Mf!5=UfYup|fR+qYbI5%{ znCW>2Vx(&^kn4+pTnmu9Te>D54Jflx2n!vD3@6s}wQJVu2+R64dQn35rrP;Vs*VWW zUV(N>t{`Z7oDpa`gAr(o!E0y1m;KA5}^OAFlu<$rVINk269^XD~uZG3afl+85KG z8HFfekZkDL8SU=u-WG3diN&L_l7pqdWj9yDWofW(F9TM=qLQk7iYoO4@rvNf6@VqV zf?(-!Mqud-Mqnuh6R;Y}fz?+UERxEjCQwyH%0M-Fqu&pyQX=?%1yD(@AXIvs5mY*Z z5mbu71ge=upqd$rw(O4f#rs=!M7zr=mN8cR@iJJE?WX-v#;2%Ozb9T1{I&wDBv%kC zJH5b8w3b2w~L9FyRBdl}=BdipI307wm!AhH{ zCQGUKi)DbiSg-790YxutxCo9`0F>kk0;R_p0i`n-0i_u9wofzw&MyMg9A&Au^+ww} z`=jlXW~^Hmm4<8W8okP=1=rgNE)m>b0bG(R2$vpb1eeZW1eapa+ddIoXPUq@DZ?P9 zEbEFga824P3;uC}O9UUS04~WDgiDVzf=g#Gf=e-&z;%`hT$42zT5l->*QC9+;Exep zB6zd{xFlB)EI3u`p1|zr>g9%*c zn7}nzgJIS2GH^}WI}ED^aLJ&`94^HbfGZGZ0#|^+1TL4s1g?ce;Hr=9?&;p%6PrAf zu*?@!eJ)yS=$7#k^g)O{$P8E$H@c2k)mcvS^mSaJos zupVdBg>?p_F02^PPKe0cWYkFKEZnw}An*}ret%DYODux@C9$5p(P%{MV~AWLB(pGp z2o{e_pb|tNu!;KgU(FEgBxpL*A%h_UX$QH2(v~^NxRTN?mPtuz7cjVzrK^xGJule7 zbzb3sacWygvhF|uEi~O$t`1gGrR28q8T%N{-gIFPcq=>e2u?oq+WE|AZouwJ;(%cK zARTp}{kwEB4I4Ado}&~;*svXQ)=)BqvrhhwM-s+NLQOs)wEW?=S5Y$BV~Ue)LO88BZ7dIV;-E!Ceju03;-IJF zpPEHg^Eh}Vq=Ckkt!kf}n08MePT)K_&XR+1dAT<3R%x-3n{(`El>n94&nf}3w*KVF z?iGK?y1Q7UA|^%17Gl?F^#GC-cPTP;McE8INjIA+M5#dVqIqKowGS}ps{_Y z+}KJu$JO^#m_12V!W?L9+bK7;63%grJr!oJv6V3E3r_R?;B!?XSf8ts8fss)Dp3}V zt&%!wYzCF25hxt96Nl}1%pSz)Ta5g2jwvzn`_thP7JloBC$2ot9sOrxNHsmD?&ac- zt0CcRpd*vRxI2<{U^VQcGtzxW^YEU4(~LO11os2;)oIAxbZD-?F8F^lg>bA19Cn7< zth=+N7n`a3qrH9cu9lrzADrPYe=y(+o6$Ncd1reYeY?A(ZT+1+-5Q_tJ&?aTg;P}N zv^_xQMg!cl6n9t46>_Vv#$062uz0Epo}*aXTl!n#eLcH++oBqCX?HfgWc2k3yQOG# z`r3LsclO7k{aTKzOW6XK_qH6sNmzIa>2ocgK*lpvWn(>UEit{Gatag+%UA|ygXL)y zSGe;PTW?f0Fy6YWyFI{vmXC~Urb~$ab8KPT4u--6fFcJe6lhXDk{g z*~fMVs#Wrcq--&KA`u=q#uBWq+iQ1s_V({;iFNJ^WW2m|AKRVGIiuuOsUXvNoqh4n zZQVV+(fH1mZJpgM1!|~ik~$C-Xs*{gXtmqYAMMi+kQS6^6AnVA0xC?$++c$4#a~yK z#xsFgcT%RWmFb(yGu$F-$;kJJdb#4Tvy<|Cf0MVuz)|Z#oCbvphFR`2II$330>&_i z%eIRK(Ay#mUp2Kq{PGj?uY9_SSsieCfG#Eb0Guy5!&uJX;QZiNR=q$99|@uOSyTlW zvQ^7){%lu&N8@H9mO6~Dp)yRD31ZQNtnep%zi7w%%6cXeyza@qpo5{YEap0yL5aCe z%ixvoXZQT_q4oE=lN}w{Gkt00XX7`ds>oSAw9UyJveQ_x&E2n^(3NNPXl>@yJ)Xw_ z{sAX)b#oIu1jUnst0K{nES*SP6*-uLs;`RF;V66>=*ABuQrMfZDgs9$hwXgaNg!`M z0+<6{dr*%X$k~HQI6M$>ft>mZbJ8L_E-lW>9dUt-+6pt$BD{>WI4>i_)uj)omZc8& zq_?BTQ61MTk7#71AOVWj6Hx7fIUq|t0hO>UD89%_SAJgIqOnM$8|ezwkMXK2l8vwL z@<<{txjle_W%k92l!?fKGW8g*Oc5CSjRhz~j`^kR~U+n?)3lIdl`O+)08BTg>>uDfn&Wa)L+ z4L6M>2QmKyRJXxup{*13iV1Ij>E%F zj%syjWbK+Y8`o@JBmOpSUK?>_nq)fZ#D!kPGox^mh5;2C7qL^wW=+IS4~hbUJ!#b` zm86u{?R!REwz;ol`BRB6Kj|cJ%giMTT=DaT-~LENHZiBv#eAkr;sUkzq;81Y+c)R0DMw z4s&+lIDKhkxT&+f4y%R;9>sRYTl)KZacCSv$%unq$uQlP+8=BRDQ$sIvt>t&Ip z(WT;1i6J?X&Nz`|IaI~-*%V7Xv4vQ#j$O%j)(g+B4 z7{_2(cbd|fcxEV0a@I9DU?R`}OS4`1>4>B7 zcAD_E0$!$I0uH4T2Z8I-ol7G=5J6D`hqa2)vq-^m_1XX+%T_M06CUCS$!08oaQ>eB z3BU%IpC(G!;NGW+1OIlzb$6{g(e7H{F-ykUXE z!(A;K%A5FV?EnBNDMyA4t6;Z+k1vk%hMq5v8S66qjY&q)cWoemasW+~w z9Mc-Fae*WHf!3iKmRF7Hayh!<(yLKZj>)e^oshBkzFt@f>DhuXn^rErVwI>Z$K+Qc ztT555L3sa2zJl;~c~p73JW76W)6|vRmiej*A8FGE@t#7w3WbZT4W-`rXt`|5C9=cG zfpH!HtMCC2-<5@bMSF4(EC*y~iXclKiRs9QpAS|dxa z)D`0B#qI@t=#Y^}I2|dLL^4B>B@_BDqSlx4SVF>lxH4g0<26WB#NF6~Sdz~hyx{tv zFy(`wF!eZBn0lNmOcm!9OgB_%OZvv5Mv_`biU_l2NqITekQ@zV=xqt1LVZP!2t~e# zBw~^0Ab*RM>lJa1kXErRR#mq{4+2}P*3k<=t6y)g;GTpHR#kT*YZ+AFHAZm-(UUpJ zxRP6blzX>8CMCE06fi&zyQLcMeVTL3iT)mYjGC z6v_2pRuPoz%0PJy_4QNQDq8g{K`DZ#D}YjR1)YNYOUaJMq&DDe4##8B(ab`V)B<%=^Elii+Tu3JfIn;(i^J zw@fVK+<9M*bLV{(=awt3RN;boKQxMhbccPgjpor3%>NdRFZA}Z<(Nf+Q8H)Zc8w&5 zEr>>=t0IGuuCA`gQT#==Z@*+@naia zS>d2n4AqpV6wWS^D+rPvXQUK5gOO4w22`os^gcf#zoAFAMZ2TD_^8|->FF*y+XD|S zoV#hw4(@0lZ*Hw$KV^7S&qUTTs5i$$aRu-Q#F^j`U@*bMWiY^FuJZI2fv2~Y?zU)T zf6Hq~;Nz8}DpIL(Y?wMQ&L=QLu($#+Bv%j&Jp}3nVn9SlQax*4W+{Ed~ir zdWey#5_4)j)n#gCj_Mr*i3qk;0Ey%ZLZZhRL83DlL82H8AhFce(%_<;WPdvbrix@g zb&K-qILTfF`zw&WP zas_3t#~I09XE2hzVla{Yg#G^U3j6(rHB%@1n@RQ}xS;~sORk{o^*AHh>kLM+R}3by zR~yWO{eG+R<5)?*-!OIWp{n0QvKPU-Dv-V83d&xOGm^c|U?h9RU?TgXV-CrlTr*ZA z`>A^iRee9nUIh15AbZIbl)WBjBzv8~NcM`sMD`PnIl_ZqMY3Nvbz{yGBzqBjsRG$c zuAuDoI3wBX3`Vk73?{NK+V5fKRFS94iex{9tKsjF>_zZT706z41!b?t8OdH}Fp|Au zFp>R)<2`vptVs4#xcL2dlD!CiQGx6wS5WqPoRREx1|!)khEtY3y#;y^vajT=+=eM! z?!HX27r|dDkiFyz%3hB%lD*DgBzwhRAp5!M#e;kDG_t>SqJ=JjQIR5Sg2bj~p<6Q- zS<7IiIT(s707f9r1dITK2^cPe0T>f5bcO54iex`^3*DNfBzqB@UxDl;S5WqPoRREx z1|!)k1{2v&H2DfYkQK>(>K3{+TS)dI*i?b+C09`PdYqB$bp|8ZD+UwU7oB`D0Z6Bg zv|?svpJg^q-9opfhh#5;3LHx-uAuB?PBP9&_Bw-+>=lE7?A-~#J)j=h-!{PnAi$_Z z5jIZU%C}~Kzz{*a0!5HqK``_fc0FP8S`EH!Lm2b@vlD!D>706z4 z1!b?t8OdH}Fp|AuFp>R)69DI)jny6@!WF zCz=4HBg;xAfT>&g*1Vr&FM{_}AbZIbl)WBjBzv8~NcM`sK=$)mcJA!$*$vlb_@BSp z@n3&M_D}S!OQ2DaCQRL0xaPBjh6wJj01e3%L_?1=LPKXTLPIeapfTYLAY6r3B>Smb z3)ehJvKPS<706z41!b?t8OdH}Fp|AuFp>R4Gk|daS&{5FK|oWq^nH$GFM{t?AbZIb zl)WBjBzv8~NcM`sMD}elu`T;T>~6}Vh1$MsCJ$JM$2fXW_}KNbNfHlyt*IinpY*rH z+htet8*EdWp?ks%IN0_7vsS@z3NA3IIKt--USRUSr3JZyAjzC$TuG3MWl|EP0)|o` zL2AuATDq}8JJJ^I?(fB9(bm(54Mf<-)ww&0-4fk9BC-DVrbzpC@)*>&9eauh#t9Hv zR|1iME8R&$WE%OYmVqUOS<!#=8wQpCS^75DdS^8lvT^e`BGtH)Ln``z%fc|f9ogzc;-vfLj5Pz`N+s~ z-}s-09z{)?_*%}+i)n7Y;?3(eZrE_~TDUb>zhPaxnNDeMuBB5uq%c?j#Gwb@&gx4SO-`7fiO`NSQd74UP)`2`dUtn7}TQDv=&;Jr<3&%aw zTmo@+?zqPRXGFy^_ncO7ws;(O(6tw5=Zs6y*5f+x;%w3Qr<#K%&Sv}1l{cSa4bnVw zadv^vGO@>|K)Z`MH7eG$pku0HlJUHYaW>1ZhOBw9^!=_QB+ep!dR6TLUtAEz5P5=) zYwqGXYclOG()Z~2Oxj|c)ys^cKV;d zC*+@??c*EhNsH=MtSyvNA?B2Jp6jHRoN&3PhB<3C?F#O>Zj2oBy{rOfg;5{xf$ELo zz$#~Ry?FmLt)5yx-pbjut#tnSGR~@&E#J*qbz5f84zqP^eI2W28^f%IO`FavwmHmd z<=rJ=7Ls>c!)&^|yDZG=-Z^1*k-R$`W=rMWSQrPXM1I$V*>ZVzU6`$qch`s6N_qE&Fk2<>-WX<$tchCm zrZ8JA?`{gSHS+GwVb(0~-V$bO<=t(Z&7>2?-J>H1>|8(jNan0zU^MS!M&KuIuoFOY zwq}|1z(sD*R+G!#(j;|?I_e@jX+F$D@e28u1BJg~Z?8j5-=WfW2!GgNc883tv%6&EyP>XunKi`TgD5)UvD&R$Eqfn2CVXpfc9ANU900EFIdBzDO>bGQ`4Ur6 zVfKFZfqM40>>jk#VA2oF)3xkFm=#o|y!koAK8#kYSZ!hsv5!L0ReWGZ4zZ8>`FK-t zh}{P@ROy3raEN^hv7Z-Vqe}duplQVTD?hC^{e{@S7uJn3_>C@gs_btOp-p)q_Ioaz znUpiW2}ukO!m)cT`y&Q|z-$*{e?kjgP3YOx-5+9q#$e;ma3S`eNTJVdA@&!HJGQjy zF%q7!th2~~flQ)f12+8fX3}|Rn;3t@Ak#mb%N(IWw3d!z3g3~d#RKIVq?Y3(TQxGp z__vN%*YPU&%8+N&d@eLWI3)=2Ge`{DsHr?K z$|jsy$LI00(A(fB2cF)bf_l;-W3J?u#cT=l1^gV!VIibKehotW+=49J(#BOl%OXNq zoCk3^8JWCLTq=_=Kc8PfX)i=T@~wA~?n$BQ^^i7hguugmxs>b*lGF-d=_ZZl9mo(~ zArS`#k5p_;#P%XzjXokB1f!SQ>^w|#)mVS7#1+;N?kuv6#1)p2xWX>+W5H6*UEg~Sz>khsDQ5?5G3;tCr`Twwu;E9@U}h4mw@uzkc8mXEl??h#j5 zJ>m+RM_gg?h%4+JafP)buCR5)6_$>;!p;#_SUKVf8%JDW;fO2j8*znoBd)M*#1)o} zxWcXxS6DUT3Y$h;VbO>y>=|)|H6yODWyBSh46Y&Q8!S+S8?Y7ZUdR`&BG^B#IKeip z;Gbs~Q?P}CODT8-1uYb`Q4pnI8wH&d?4Y2Ff*uN9ML{10yC~R0!CngXQ}7xJ;uIt( z7@)wW;2;G_3Jy^)LP3Utt0~A+FiOD@3XW26Ed{Tm;Pn(7qu>S#ZlvI53T~m`Rtnzw z8MKeH|AX*2tUd<&wi}mXVQX$d%qwAE zMqycA4x6$EeX}1a_9Cy>LZSn(ABSN%j({TvYw-xAdmZF^4D!7RIo!%NvD>lF;tqB( zyPI7C6KV^)mu+PqXP2^1v&-0L*(=x=P{J2k3wxZkvL{&^dy2KQr%~c}SqFO#_2uks z$U`88oTY}$TCws3d*_N(C)m4IG@f90`>mWKG^iK)(}$HqKh^@fzym8%=D=Ug;E|U^ zvSQ_&_dduzXtBrGy@dSAIUn)KEg(PUlb3@0gipQ#~oFvJK<|J{bl1cRsld z63YoKlRB`kpJqFM?n6YPaXyNOP{ruuI1EnKCX$&YG1xnWdrE7uGb-?3wh`k;t zy&fpN0Vo{+!n+zx>0zYH#%kKCSDc{G@jO9qs;WbYCUYJfg)vpvB*-#owjH-}W#M z?LEP#Bl}}3KF8w6`HaW-Oi+1Hc|pwvWrI5EJ=+87mg9WRW4sE_Izhe8OSuJ9!lN2N zWjtyzsDmCg8`OYDRe?IQP?=b;zUc2X(DS-2*D= zQSSitdXKshl;e3H zkbQT#!j-YpmTneJ9=_mmVOQF zJA5|#K050U_+l*2RG zQF1-|D?f%c#cj}@w_(k2H=oAe2kZZ1yq@33XY%8G7Jm?y?N?x~KgrML&%m;N7RK~R zzL@_EX73C90{(lxjQ6i**HW zwf6H4E6=xChxrcc81IAPF8g0K7Q;blHC`D|V^EqJt7l4$R|V8qrBrIHD5b`VQfjOy zrN)X2%3<|<81HM2 zKtZpCVqV8i@;Bgx#xW@4jd+7_6MKoj1&Vhomg;ZAiu!gwo4*t5)jObA@5aLLZr;fM zmT%_o=Ue!Pcn80icS0%q`N#Pl{waQdf12C;?|7Dfmgo5iem(yJ)c6so@fVTXm%;rw z)cEhg@g&svn^5DYpvM0QHGUc~&q9sAi|~g~-qbvH}a3cn7z-snIE^_%pbIF<6p7f%Ad6UhCgGyoj+^c$xmAE z;y<(A1BHDr|Go7A{#WZB{<8I9tIqm}HN*OZb(VFXb&hqvb&>UewcPrgwch%?waI$W zy25%0YWyhF_)AdZC!ogPgc>))Qo(Bu{Qp};H!(PDZ7Jul-lmSr@%3atZOq91Url?u A)Bpeg literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Manpower_Distribution.jasper b/hrmsWeb/hrms/report/Manpower_Distribution.jasper new file mode 100644 index 0000000000000000000000000000000000000000..375a6dc4317ae445f69908f5d0c66a79a4d647b9 GIT binary patch literal 24582 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%0D6ik9? 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 cxHB>0{7Jky--$QpH+@~ literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Manpower_Report_2.jasper b/hrmsWeb/hrms/report/Manpower_Report_2.jasper new file mode 100644 index 0000000000000000000000000000000000000000..fe8f6decec478dbfc60df45a61dce12d49ac6950 GIT binary patch literal 105907 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

      1Sc4*iP| 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 XXTHt-o^Nx1XYG38qw#^CX}aMrdtn&< literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Manpower_recomendation_master.jasper b/hrmsWeb/hrms/report/Manpower_recomendation_master.jasper new file mode 100644 index 0000000000000000000000000000000000000000..b9ecb6426475f26b298484919022959650f4d5a4 GIT binary patch literal 26961 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 O2il8us<_^*$^I_@c41ur literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Off_Rated_Poor.jasper b/hrmsWeb/hrms/report/Off_Rated_Poor.jasper new file mode 100644 index 0000000000000000000000000000000000000000..66a95de5ee3289a2eebfc873448865af6ed7399e GIT binary patch literal 18672 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 z zN#Lx|HR}M>CvOzGa$OH6S)v# zZ^1L*fa$D1#b>w%2mVoH3|b zSB1tmi+s&_fdKBXLDiX6g)X%l+_p}kA-mo&KjlrjjN=}rz0x$%ctvA z8jw#nsI*l+y;_B05$`ym;?RnCdaX)>^6B*|4bgVSAfVEv@@Yb)9r7ux(oXqwQl-n} zQ$&TG5+iO_afVAg#Zmh_N<5`hx<)?Ds^pVTr&W5Dd^!Uuu*F=kY$$<3MgxQrj^b#;! zm)!Ky1<=g_S4;bPX%!Q->ZPXi((TTho2W=H-GLQi4XM|SURXO?pTYLhU0CJKw4s-N z%R$Sf2EBBzGYMP&dFg(q)>eF8db>i-E{K;N+MG#batkTxp?5+$MEVIj&r9!y2s!x~ zFa5ScwGA6D{Vp0ERp+Hg?Z#;@y$32nz)5)NaXd>6=cV6Q>LLd(J)wxutew?n6d|!< zgRO@?08Z7ZH7|V#%Csf}?7VyF!@$o`WnOv;J={vnOMigLS|?nwI4>QJG!b2cYICApjaxR*XfpT-NZZbbYBIT&v8 zK9xR0f6`0uqR*m(fXQe0#+);JJ@k37-g%ommexaGfcS`71k7Xh7FrKI3yRk!nJDB@ z0tR>xNT~E@@@>y!2DM({s)@sb*tEjjRjBR%*7q5T->3^#T{x~+@Zw99V%Shp}@r*>Ra5Qyu}@= zTil_z#T{x}+@Z9^9V%Pgp|Hgr>RQ~Pta0}uIDzTH^;!h1eV7-HqS6B+7isT^@;Msj z%Lrda`QqoxA-){u%Tc}@$yH znlGpLatmMPo&hQfoyFCF4I)^xPTaQu@c~$(A=seH*!qAyyYX)yrZI|XjMH^=jP}wA z)Z9eF6sG+&O(T?`1C&OOGjtGk!cRFGqa`{-MU23Qp|nCr=ngtcchmKBKi;L#8|h7w zFsPLRux;ePMaqthUZniU!Hcx$U^plQBmnWixA8OqTOGm}*dqx+*+z&PFo&;=92nHU zNM#RwiOw^D4-8hF;s}b%PH_~)6{qM&am^_nLh&t5@i2;aI>ncpSxh zoZ@Rxyw54#h~fiI@pULZ=oD{qX8js)f(S>(DF%+jLD>Y|NHcUZy@BQ^Njjxy6;ywK zX6Ze2iatuG>9ceTeHC2ruvxa~`;0}MHN5E^)|=kN(sN+&VW${E@pqi!B#MtX#VHgY zbBfa_{+?5eqWE5?7)SAaPI1PW(q0G{Q5I90$CPrIQXW&%Fr@`dX%SOe!jyEN4+p|R zf7L>tU-Etn>IYe<4-7u(6w@ev#3`Oa@uN=h78F0`6kWo9h0qA+fsp}>s=&wuM$5qH z0^a{|`UG(KL*U$r($iucKL>np`bW7&iCu{ng%9TQ-&Xu$_?^K|!|yzPcjEUTevjez zBz~X7?>YRwf!}xV`#ydz0tWPgvh_Lo)S1qU^i1qy^flM>7hKOz^K*yn^C4ILqpte5 zyXx<7)mKJ7OYzUs=e|T2@rHSnLZb9Vl+q|o+NDX9rbOvEv>it&Xt#}^G;NozLMdwZ z96)KtY8(ADrY7~vL(m_DOo)f>g7n@C0^Ntz{~(C;5ZL{05b9wN{SgrBQS^8mE$^jw z()&TQ51{m65bh)N6nzZD`#60XOn44Y&(kv?;%Dev^m!2SB7GON-={yNA7bUdNMEL( z&|iS4f2nlRH@+i)zf0B zXj{k97r@f*fu%nHOaB=x{a3K`-@wxU089T9Ed4Q9`V+A9r(o&-f~7yB#~|pBgDFoc zUGST>z?12P^D;osfl1FRL-Y-0JAF&JjJ~5>PTvK?zOP(OKU8+pi^?AQiLy^olwqY) z8CA9_2bDo(T-l|(8Z7)mfOXtDT1+a7xEIkL77QoU9Sb82TT?R`pfTg#CrEdXC-v*Z61(x0m zmfi=JJ_wdR1eU%VEPWU(eFQ9hA6WWjXbiYZIHb`uD`&R;zb5SD<}~8VoRxw!{vRQT BNe}=4 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Qual_All_India_Employees.jasper b/hrmsWeb/hrms/report/Qual_All_India_Employees.jasper new file mode 100644 index 0000000000000000000000000000000000000000..aba7f7a85fd54f504ed45213a47b60fd9a6a6fc0 GIT binary patch literal 21812 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Recr_List_During_A_Period.jasper b/hrmsWeb/hrms/report/Recr_List_During_A_Period.jasper new file mode 100644 index 0000000000000000000000000000000000000000..4bfc803cc7572329085728fa4b24b138a01ff770 GIT binary patch literal 18730 zcmds9dvIK5bw79YT1!{5BRO_nP8KJzWm#HTwqqO|AiLU?waPxk?#hm3V6)o2l5V`( zUEjU3q>w<;B!na+X`4qw36DT%pba#kfFWs90<;uLhiPXzboisqFau@!VA^J&9XeC` zJKuNr-n*;Su6PU~k!SC{-|O7-opZkP`o8OD{+&811`QT9(_fkQ-<++KHN()#CBv-v zwc>(a)cjMTGASxa{O$b*54A<9Cs$f3>jf>8HM1t|h~At%mmSqhqbbeMvjzQ@>|8-R z7NrZUZt?7rmRg>l*H=yImz@jQ;=*XkH1y&EI`&!}jqyUZQaMZSCeNxtBh7G|%T|D3 zGKgC}f>%aJohzAUX(^U9Fp&u3TUcHyj+d5;W`y6yrBpea!|UzVlX~7FO3^ zMK=uV%xh*=FIZT2%mWxu-rox4npgMFmyD&XIg!noC1cHzNKjZ`66+(SVLDr-ATOJG z0dmhcds(QL!AK#%QR;&*n=BYLP3r2Chcu8F^8D#MXVwVvXGq`sFpOjSk_r# z(qZ;{TFt&nysnBAXFfer^BGo|KQ}Rxidx+Ym@OznCF2`@X0JwP$-8s ziB`CvEn%S^$6Dfvwe3z)iTI7zsi0+x3|X&4FiOvH zcg(z3uT1CX!%K5oKCk7i%B`?2Fpp=n^diJ?VbQ8qxf<&_&t$afdi2Un5u_`?W?NOl z?$l6YD_bI2 z;W%(Dcj`nZVa#gK+UBZqhsZ)&jcV9OO*T)iVx4 z?BApiuM^+_m+smLezFOV6eo0}VxC+C<5|M!j5Y0SGJwe z*0>Gg(!Ny63t5G5^^~)$Q3XhD?rN;;xv4Ko7ut3}sORxT*j%=9tvm$L8)_Ch=K?lk zFkD0jr3NA@Gjx?NJIf}i6%dk#(ST6bXU(KFW-;%t(Mv2mSCW~{6a{TPwc#N+e3$zJ=8Hlo%7j3c`*z2 z33yTR4la_Uo8MTPP81jJxN)=D1(;s^i`n zG_u9qVq^4`uQW&h$g7Ti$8iI0cw_86dzxea##bHto{(07HzR`7#&b~Kxqc44E{!?% z8zKEujgj~Ks0H%B0pg$37GTw-sZv-V#8e#b-tpfLY|>p}XK_N;3a(&l8}cA?rP3MX zFU~}@b6O!teHt4M!TGel1eap#B76yUE6=2nNYTt7^*S|Z621w%RCYT~>gHnAX@Pga z3%F#k26aL(R@t!NTbS5l75(X~ z0Zfp!fi*qUDjc3%Hwq5UWj3s&Hm|{7$<@CvN|)Gu((v_7y!h* zr$7MU6(q)MdE)Sn;BK2hwkV3Le7yux>)6o-Zi^1%-oxRTVDreB)FVQ0t|D=(G3|~C zf=6jsc-+Ie#6IS zgjWeHIq7m_lggkDmYAhXa0C(2LkepG`*It5bg}77JYmvyAt^|XE&7A{LP*Q$OK@0i z6=f5*W^clPPdPLLPjN zML?=|cYMo$oplx_qbCED6;HB;3LzJe~}M zeyO!v=la*t&K0-3W@*>kfOg%Xa4K><6aVEDpHdfdF!5BEyYqU`e0>e5XD!~TU&Z3B z4}I!s_K(#{pc9!afIS~hZ8OvgT2ae-6DoHyhM5#DXf4MP!Qz^C0duNM%fI1VMdFnxfu zz&mG~fh4oCa5#(Ajh55AG44cbL#;e*JG28ny=9|>fYsDBOcokqq(w3t32di3#&?`u z){M2*x#YKTH}>ffuL?Q_vF9$gN)f&FRdNQ_7PhUOy<^O(f~_k-IMAi#tWwp^oZvl| z#iWfUbq9C%6ylfI#NM3rb`=_tRhyJTvjVHVix8Y{e={kNPAUMLt z$3u|*5;Q;>gGGW9{x*X*3WeAm7cTNfaR$32N+-HC^Q7%gj@#2O)?DRm!OvL@B&wE# zcP&6U`n6fFruN@{V{=RAbZhF&)^=;6wM@D=spX6e?-6H0%Y2X~6Ua>C08S|nzDo&f z!gpug>?ZYrp|9TbhAQuS!TZf7mTV{v|2xIz{Y1&Y>RKwBz-yNC9;vm8sV!mq2%A{g z&fj5eKb_!xlR5?R3kr~eT$xE1Cd1Q-WI8h)NW$evhm)yHEHG_SucLXP8w8nm%Mlk? zBgPZ)cz8T5%!J&DXPFr<6^mMqx7pldwpn9hfg3a9iJ5rXY>-8959qfBgaYY6CY6{; zj>DI1e)uZMdORiciyKn))v57hWI7!UE8 z{;jZ3(Gs>uMIu|VNVUW2oD9n;WP&sC5RbaZp>EZ-NS)|@RTcAeBo@xhCgK<;SDknp zFV0!y4%{Oyai|u~OeB)AKsqxK7*8jXr_AQ&P=JIGItO{&a0e{7`Gyj|6g`L z{Hfi0`r$;um1@TeJy2`9JU8IC%_z2b^T?3mq=s?;9$d8@ki-cDlR9S76C+1ge-4`^ zEVwg4k1My=^01f~TTScLp7~lWL-k4kO;oQ7!1W)YCx7_-;isy)m-Bd=J(S~saZRLQ z3QsXR`cvU3l$$R+?UzQ@7fAW!({Q&>{-JFml1!yVu;#nR*Kit?Pz}%tQ56cyzanClFOnB_i<*lw#QFG-Y=ZA-A7H$7-vnvD-yxX}3FprrqIq zDrPr3X4h^mo+}JaSNjZCANEyWCarHb$TN{l#C(&_?e z4SR_x2uPDQLiU62Vhf-3GlLgl2$hIo1?FgjGA}6j_7;vS4-d8RdhTY&!i&hF!S1nMPL)Y zrh(T9mV%TGXavDJxd0=f!TtM~xhxaaCb@PcL#+C#l3rvtHKm(cCXxs1dCAp`<_h?f zI1VH`h}BusLo2gsDQ9j5unb~k%@+)(Plm&B-`)dbBZ2AU$boD3`U1r~%GZv>6DPO~ z#1l!_cwg|8qXA87gM)`GD0H@rtD5L+JFc4h!JW50K72k@)!2Nbr>Xztij=BA9DUt` zb6aq-a?1s=?TQUny_hq^=~E8M*L%)E+Jc}{Gr6_Vo@t*w-o3YasaG$4I%c9C!#a4cmtRUu(SbsHVM#$LtCpM z2dcADt4=4!3+`zF1&@tFdnIZg&@Bin0+u=iuoNt!cD91H9)Ye_Lu>?8 ziw`aon7>zuw>u{snx9`*tn8RghPib9G?S z-w>sK&SFAatZ&)j`V6AB6=zl%Ga0{#IL-EJW3?EIfjZ~A3Rr4PLH&HsD;MU3;) zR}}JZm}SX~9em@_!$*%EJalC2$f3-&*B&`^W98>73b#U3&t_!6V+O@8mJ2F=2l6CEN46o2- z>l$524h08l>!&7D4ULd%5LYX7#X11BxgCWrUDw0OUF9RV%c4sc&M(+ltQXA zB%ZKGZ~!5L9)-47v(B7Us2XF1#x^^Fs;>hf++l;NvBC;nXg9b`qe26Ay<@N3z1>Dc zq0Z~rb$N?IZG-zxDAYcVqva}$!j;|BPFJhcL7iK0+ZLxJo)^69ur7s;oH3bQ6g+@Rv*mw1Y)bg6twsB{_aVt8*;@x_&RN~v^( ze40_oC!bEL^alBK3X;g*4#)%PY2HeJVC9x8_(BrNqx(8%=`=4gsk@o* z)4aSZ3ia2I-*-Z#cT%PsnBHXdoe(=rD$U92oPuv*00Od7QAv}P^AMQEI?zjtkYvuX zjj~x71(IEKGx(09i3;tp-p~2F(Zt-%NID(c=lZh8s#2*yOFeXkikR{y^mL6z?V>W4 zyoFr@P3k2B(pwc~S8~xyz;Ipu(@W<-HwRobGwh{ROw_8E+R{t6IB#yCCcShkR){sE zRzG@S{AhiW+e^1&l{eCeUivKuEte|v(p}CZY#r#O_d2z<^7GRB6ms@Wyma5@%p#Lp zNJ$sHAJV}ZiS?eB9)t*SNh&=r{kB5YEgmoZE*c$m=cPyN#wjm71{ERTB)s&v1x0E( zFa5q!6Kr_t2}MM6t*ker38@v^a$WRcaH~eOdFi9ju~j)>f8R?V!>b*2=B205!>!1? z^aq%*bv70Y^uobN1My}2S92QnRgheTtcleiM4rDBTj90cMSlc-I}KKN)kU9%as*H; z%iZ+H-SioH7B9rw5g{LBVX(pbRQfFaNjE(}pF;-$lTZJRI;a1-=nG)K^EP>)t&6@0 z5fZhCu}AHVw=Q}f6t7M)QOKhN4DcY3Q0dR)+g`*Bs=dM$6UPkkwG`$qw?jaE4a&^} z{Z3Gj_;iLk@#J9zFYZw9;tu65?ojRG4#h6+Q0w9jr7rGJ>EaHBF78n0;tpjl?oj38 z4n;2RP~+kbB`)qz;o=SjF78m@;tu64?oi$04#h3*P}|}Tr7iAI+2Rg`jk_1|49pj< zS0Tpj!Mt#YmF^ijPkV-x&(k1ZhWIkf7e8MP@Z}(14)f&*UykzSO?3vx6)y{gRY_X;#~^8o!%h{gIXy7+lKa^r|i)1dCCusoTmi`!+s$k0f+~_s;6<- z>k!7kCP@g&HbN+YIecwsf4}}EDtYM3be0LczrW%XhfrL0io+ooXf z$|mSKnx-4*Z8S?s(kVr&p!z*DLyyr3`UIV%&(V$aRdB(>rrDzJa~5^h@TU8%H$A}8 zv%mi#rx-%PpX_yMOFNAZJBaoU;E9tapw7E_wTlyaC- z9#hgVrFl$g0aIGUlysmEC&EI1)k2?N@*xZAM_8!$_dn?r(qQ?AHP=s1A0N(`T~9CRQq{)F7`Bi z&Gr06*Yh*{+$Q^c)K&k8tNwki`deM~<)P0}{0sE?FVlIvVGgB`D18Z~G)fb8X#%B5 zQF;MwM^OseZ9^zc*`>=+irPK@zCv%-n&4cyRrK31(EIp zyB`Fh9s0Tj{Tre)_hu3q2L|dEK$}&udtUl8dEQ z$zmx=E|ywt7E7&?#Zs%M#Zu9>j-@YyrQZWfe*l*LGg$hsVClbsrT+nz{wG-aW3com zVChf6(*FfZe@2f&&>sg=o>V&EH*J9@(+%gPk6r+iUQ`C?8_IV2mU0n&N4c233x<7P zxtxBe?50XB}CK8B%Q(+ zLvL4Nq$zQPYe_n*q!9a@q}!Am5pZDrD(`@2p9M?jz|wiJbO9_q1C|!R(lS_j7A#!` zOV5F&w}7SZ0!!ZmmfjAQ-UXK44VK;umfi=JJ_wdR1eQJwmVOW{eF+)^?h?*&G|bMK T&HtAQJKs5l7&B*OC5`_FXxLX< literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Recruitment_Cessation_Status_For_A_Period.jasper b/hrmsWeb/hrms/report/Recruitment_Cessation_Status_For_A_Period.jasper new file mode 100644 index 0000000000000000000000000000000000000000..a67561230c4d9d5e08ae230819e9c2bff794189b GIT binary patch literal 19805 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∾=>;J3mwT= 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 literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Retirement_due_report.jasper b/hrmsWeb/hrms/report/Retirement_due_report.jasper new file mode 100644 index 0000000000000000000000000000000000000000..b4807425a36713da7943d9827118a7b21978891f GIT binary patch literal 27404 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 C(v7bG literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Status_Of_Disciplinary_Cases.jasper b/hrmsWeb/hrms/report/Status_Of_Disciplinary_Cases.jasper new file mode 100644 index 0000000000000000000000000000000000000000..7ef3b74e9708bd1a42f11eb83890b4fc58483673 GIT binary patch literal 21109 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 F{XdW&l>7hy literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Stay_report_GradeWise.jasper b/hrmsWeb/hrms/report/Stay_report_GradeWise.jasper new file mode 100644 index 0000000000000000000000000000000000000000..64dc8a7e05ff66ad6aa42fdd1c9db35f68abedd2 GIT binary patch literal 26914 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 p(1-#WQ9vUK)``{Ga*mZD;@h literal 0 HcmV?d00001 diff --git a/hrmsWeb/hrms/report/Training_Details.jasper b/hrmsWeb/hrms/report/Training_Details.jasper new file mode 100644 index 0000000000000000000000000000000000000000..fb47d32f126d85377ec43009cb42019bc22dbeb5 GIT binary patch literal 32107 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

      &n%(5v9 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